{"version":3,"file":"koalarx-ui-shared-components-dropdown.mjs","sources":["../../projects/koala-ui/shared/components/dropdown/dropdown.ts","../../projects/koala-ui/shared/components/dropdown/dropdown.html","../../projects/koala-ui/shared/components/dropdown/koalarx-ui-shared-components-dropdown.ts"],"sourcesContent":["import {\n  ChangeDetectionStrategy,\n  Component,\n  effect,\n  ElementRef,\n  viewChild,\n} from '@angular/core';\nimport { KlString, randomString } from '@koalarx/utils/KlString';\n\n@Component({\n  selector: 'kl-dropdown',\n  templateUrl: './dropdown.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Dropdown {\n  private readonly dropdownTriggerElement =\n    viewChild<ElementRef<HTMLButtonElement>>('dropdownTrigger');\n  private readonly dropdownContentElement =\n    viewChild<ElementRef<HTMLDivElement>>('dropdownContent');\n\n  id = randomString(10, { numbers: true, uppercase: false, lowercase: false });\n\n  private readonly anchorName = new KlString('--anchor-').concat(this.id);\n\n  constructor() {\n    effect(() => {\n      const triggerElement = this.dropdownTriggerElement()?.nativeElement;\n      const contentElement = this.dropdownContentElement()?.nativeElement;\n\n      if (triggerElement && contentElement) {\n        triggerElement.style = `anchor-name: ${this.anchorName};`;\n        contentElement.style = `position-anchor: ${this.anchorName};`;\n      }\n    });\n  }\n\n  ajustPosition() {\n    const triggerElement = this.dropdownTriggerElement()?.nativeElement;\n    const contentElement = this.dropdownContentElement()?.nativeElement;\n\n    if (triggerElement && contentElement) {\n      setTimeout(() => {\n        const position = contentElement.getBoundingClientRect();\n        const screenWidth = document.body.clientWidth;\n        const screenHeight = document.body.clientHeight;\n\n        if (position.right > screenWidth) {\n          contentElement.classList.add('dropdown-left');\n          contentElement.classList.add('dropdown-start');\n        }\n\n        if (position.bottom > screenHeight) {\n          contentElement.classList.add('dropdown-top');\n        }\n      });\n    }\n  }\n}\n","<button #dropdownTrigger\n  type=\"button\"\n  class=\"p-0!\"\n  tabindex=\"0\"\n  role=\"button\"\n  [attr.popovertarget]=\"id\"\n  (click)=\"ajustPosition()\">\n  <ng-content select=\"[trigger]\" />\n</button>\n\n<div #dropdownContent\n  tabindex=\"0\"\n  popover\n  [id]=\"id\"\n  class=\"dropdown bg-base-200 rounded-box mt-3 min-w-52 w-auto max-w-[30vw] max-h-[40vh] shadow-sm border-2 border-neutral-200 dark:border-neutral-800 rounded-md overflow-y-auto\">\n  <ng-content select=\"[options]\" />\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;MAca,QAAQ,CAAA;AACF,IAAA,sBAAsB,GACrC,SAAS,CAAgC,iBAAiB,kEAAC;AAC5C,IAAA,sBAAsB,GACrC,SAAS,CAA6B,iBAAiB,kEAAC;AAE1D,IAAA,EAAE,GAAG,YAAY,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;AAE3D,IAAA,UAAU,GAAG,IAAI,QAAQ,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;AAEvE,IAAA,WAAA,GAAA;QACE,MAAM,CAAC,MAAK;YACV,MAAM,cAAc,GAAG,IAAI,CAAC,sBAAsB,EAAE,EAAE,aAAa;YACnE,MAAM,cAAc,GAAG,IAAI,CAAC,sBAAsB,EAAE,EAAE,aAAa;AAEnE,YAAA,IAAI,cAAc,IAAI,cAAc,EAAE;gBACpC,cAAc,CAAC,KAAK,GAAG,CAAA,aAAA,EAAgB,IAAI,CAAC,UAAU,GAAG;gBACzD,cAAc,CAAC,KAAK,GAAG,CAAA,iBAAA,EAAoB,IAAI,CAAC,UAAU,GAAG;;AAEjE,SAAC,CAAC;;IAGJ,aAAa,GAAA;QACX,MAAM,cAAc,GAAG,IAAI,CAAC,sBAAsB,EAAE,EAAE,aAAa;QACnE,MAAM,cAAc,GAAG,IAAI,CAAC,sBAAsB,EAAE,EAAE,aAAa;AAEnE,QAAA,IAAI,cAAc,IAAI,cAAc,EAAE;YACpC,UAAU,CAAC,MAAK;AACd,gBAAA,MAAM,QAAQ,GAAG,cAAc,CAAC,qBAAqB,EAAE;AACvD,gBAAA,MAAM,WAAW,GAAG,QAAQ,CAAC,IAAI,CAAC,WAAW;AAC7C,gBAAA,MAAM,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,YAAY;AAE/C,gBAAA,IAAI,QAAQ,CAAC,KAAK,GAAG,WAAW,EAAE;AAChC,oBAAA,cAAc,CAAC,SAAS,CAAC,GAAG,CAAC,eAAe,CAAC;AAC7C,oBAAA,cAAc,CAAC,SAAS,CAAC,GAAG,CAAC,gBAAgB,CAAC;;AAGhD,gBAAA,IAAI,QAAQ,CAAC,MAAM,GAAG,YAAY,EAAE;AAClC,oBAAA,cAAc,CAAC,SAAS,CAAC,GAAG,CAAC,cAAc,CAAC;;AAEhD,aAAC,CAAC;;;uGAxCK,QAAQ,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAR,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,QAAQ,8UCdrB,kgBAiBA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FDHa,QAAQ,EAAA,UAAA,EAAA,CAAA;kBALpB,SAAS;+BACE,aAAa,EAAA,eAAA,EAEN,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,kgBAAA,EAAA;AAIJ,SAAA,CAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,cAAA,EAAA,EAAA,sBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,CAAA,iBAAiB,gFAEpB,iBAAiB,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;AElB3D;;AAEG;;;;"}