{"version":3,"sources":["../src/MenuBaseElement.ts"],"sourcesContent":["import { LitElement, css } from \"lit\";\nimport { Ref, createRef } from \"lit/directives/ref.js\";\n\nexport interface MenuAdditionalItem {\n  label: string;\n  href: string;\n}\n\nexport interface MenuBaseElementProps {\n  expanded: boolean;\n  additinalItems: MenuAdditionalItem[];\n}\n\nexport class MenuBaseElement extends LitElement {\n  static styles = css`\n    nav {\n      position: relative;\n      display: flex;\n    }\n    .navigation-drawer-controll-button {\n      display: flex;\n      align-items: center;\n      justify-content: center;\n\n      height: 42px;\n      padding: 0;\n      cursor: pointer;\n      background-color: transparent;\n      border: none;\n      transition: background-color 0.2s;\n      appearance: none;\n    }\n    .navigation-drawer-controll-button.navigation-drawer-controll-button--icon {\n      width: 42px;\n    }\n    .navigation-drawer-controll-button:hover {\n      background-color: rgba(0, 0, 0, 0.05);\n    }\n    .navigation-drawer-controll-button:active {\n      background-color: rgba(0, 0, 0, 0.075);\n    }\n\n    .navigation-drawer {\n      position: absolute;\n      top: 100%;\n      right: 0px;\n      z-index: 1100;\n      box-sizing: border-box;\n      min-width: 200px;\n      padding: 0px;\n      margin: 0px;\n      overflow: hidden;\n      color: rgba(0, 0, 0, 0.87);\n      white-space: nowrap;\n      list-style: none;\n      background-color: #fff;\n      border-radius: 5px;\n      box-shadow:\n        0px 1px 3px 0px rgb(0 0 0 / 20%),\n        0px 1px 1px 0px rgb(0 0 0 / 14%),\n        0px 2px 1px -1px rgb(0 0 0 / 12%);\n    }\n    .navigation-drawer-controll-button[aria-expanded=\"false\"]\n      ~ .navigation-drawer {\n      display: none;\n    }\n\n    .navigation-drawer li {\n      border-bottom: 1px solid #eeeeee;\n    }\n    .navigation-drawer li:last-of-type {\n      border-bottom: none;\n    }\n    .navigation-drawer li > a,\n    .navigation-drawer li > button {\n      box-sizing: border-box;\n      display: block;\n      width: 100%;\n      padding: 0;\n      padding: 0.6em 1em;\n      font: inherit;\n      color: inherit;\n      text-align: left;\n      text-decoration: none;\n      cursor: pointer;\n      cursor: pointer;\n      background-color: transparent;\n      border: none;\n      transition: 0.2s;\n      appearance: none;\n    }\n    .navigation-drawer li > a:hover,\n    .navigation-drawer li > button:hover {\n      background-color: #ededed;\n    }\n    .navigation-drawer li > a:active,\n    .navigation-drawer li > button:active {\n      background-color: #dadada;\n    }\n\n    .navigation-drawer li ul {\n      padding: 0;\n      list-style: none;\n    }\n    .navigation-drawer li:has(> ul) li > a {\n      padding-left: 2em;\n    }\n\n    .navigation-drawer li:has(> ul) > span {\n      display: block;\n      padding: 0.6em 1em;\n      border-bottom: 1px solid #eeeeee;\n    }\n  `;\n\n  handleClickOutside = (event: MouseEvent | TouchEvent) => {\n    if (\n      !this.listRef.value ||\n      this.listRef.value.contains(event.composedPath()[0] as Node)\n    ) {\n      return;\n    }\n    this.expanded = false;\n  };\n\n  declare additinalItems: MenuBaseElementProps[\"additinalItems\"];\n  declare expanded: boolean;\n  static properties = {\n    additinalItems: {\n      type: Object,\n      attribute: \"additional-items\",\n    },\n    expanded: {\n      type: Boolean,\n      attribute: \"expanded\",\n    },\n  };\n\n  constructor() {\n    super();\n    this.additinalItems = [];\n    this.expanded = false;\n  }\n\n  handleToggleDrawer = (event: Event) => {\n    event.preventDefault();\n    event.stopPropagation();\n\n    this.expanded = !this.expanded;\n    if (this.expanded) {\n      window.addEventListener(\"click\", this.handleClickOutside, false);\n    }\n  };\n\n  protected updated() {\n    if (this.expanded === false) {\n      window.removeEventListener(\"click\", this.handleClickOutside, false);\n    }\n  }\n\n  disconnectedCallback(): void {\n    super.disconnectedCallback();\n    window.removeEventListener(\"click\", this.handleClickOutside, false);\n  }\n\n  listRef: Ref = createRef();\n}\n"],"mappings":";AAAA,SAAS,YAAY,WAAW;AAChC,SAAc,iBAAiB;AAYxB,IAAM,kBAAN,cAA8B,WAAW;AAAA,EA6H9C,cAAc;AACZ,UAAM;AAxBR,8BAAqB,CAAC,UAAmC;AACvD,UACE,CAAC,KAAK,QAAQ,SACd,KAAK,QAAQ,MAAM,SAAS,MAAM,aAAa,EAAE,CAAC,CAAS,GAC3D;AACA;AAAA,MACF;AACA,WAAK,WAAW;AAAA,IAClB;AAqBA,8BAAqB,CAAC,UAAiB;AACrC,YAAM,eAAe;AACrB,YAAM,gBAAgB;AAEtB,WAAK,WAAW,CAAC,KAAK;AACtB,UAAI,KAAK,UAAU;AACjB,eAAO,iBAAiB,SAAS,KAAK,oBAAoB,KAAK;AAAA,MACjE;AAAA,IACF;AAaA,mBAAe,UAAU;AAzBvB,SAAK,iBAAiB,CAAC;AACvB,SAAK,WAAW;AAAA,EAClB;AAAA,EAYU,UAAU;AAClB,QAAI,KAAK,aAAa,OAAO;AAC3B,aAAO,oBAAoB,SAAS,KAAK,oBAAoB,KAAK;AAAA,IACpE;AAAA,EACF;AAAA,EAEA,uBAA6B;AAC3B,UAAM,qBAAqB;AAC3B,WAAO,oBAAoB,SAAS,KAAK,oBAAoB,KAAK;AAAA,EACpE;AAGF;AAzJa,gBACJ,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AADL,gBAkHJ,aAAa;AAAA,EAClB,gBAAgB;AAAA,IACd,MAAM;AAAA,IACN,WAAW;AAAA,EACb;AAAA,EACA,UAAU;AAAA,IACR,MAAM;AAAA,IACN,WAAW;AAAA,EACb;AACF;","names":[]}