@edsis/ui 0.0.2 → 21.3.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (105) hide show
  1. package/empty/README.md +1 -1
  2. package/fesm2022/edsis-ui-accordion.mjs +15 -15
  3. package/fesm2022/edsis-ui-alert-dialog.mjs +27 -27
  4. package/fesm2022/edsis-ui-alert.mjs +12 -12
  5. package/fesm2022/edsis-ui-aspect-ratio.mjs +3 -3
  6. package/fesm2022/edsis-ui-avatar.mjs +18 -18
  7. package/fesm2022/edsis-ui-badge.mjs +3 -3
  8. package/fesm2022/edsis-ui-breadcrumb.mjs +21 -21
  9. package/fesm2022/edsis-ui-button-group.mjs +9 -9
  10. package/fesm2022/edsis-ui-button.mjs +3 -3
  11. package/fesm2022/edsis-ui-calendar.mjs +3 -3
  12. package/fesm2022/edsis-ui-card.mjs +21 -21
  13. package/fesm2022/edsis-ui-carousel.mjs +18 -18
  14. package/fesm2022/edsis-ui-chart.mjs +80 -78
  15. package/fesm2022/edsis-ui-chart.mjs.map +1 -1
  16. package/fesm2022/edsis-ui-checkbox.mjs +3 -3
  17. package/fesm2022/edsis-ui-collapsible.mjs +12 -12
  18. package/fesm2022/edsis-ui-combobox.mjs +3 -3
  19. package/fesm2022/edsis-ui-command.mjs +41 -35
  20. package/fesm2022/edsis-ui-command.mjs.map +1 -1
  21. package/fesm2022/edsis-ui-composer.mjs +21 -21
  22. package/fesm2022/edsis-ui-context-menu.mjs +13 -7
  23. package/fesm2022/edsis-ui-context-menu.mjs.map +1 -1
  24. package/fesm2022/edsis-ui-date-picker.mjs +3 -3
  25. package/fesm2022/edsis-ui-dialog.mjs +27 -23
  26. package/fesm2022/edsis-ui-dialog.mjs.map +1 -1
  27. package/fesm2022/edsis-ui-dropdown-menu.mjs +58 -46
  28. package/fesm2022/edsis-ui-dropdown-menu.mjs.map +1 -1
  29. package/fesm2022/edsis-ui-editor.mjs +22 -20
  30. package/fesm2022/edsis-ui-editor.mjs.map +1 -1
  31. package/fesm2022/edsis-ui-empty.mjs +18 -18
  32. package/fesm2022/edsis-ui-form.mjs +38 -38
  33. package/fesm2022/edsis-ui-form.mjs.map +1 -1
  34. package/fesm2022/edsis-ui-hover-card.mjs +34 -13
  35. package/fesm2022/edsis-ui-hover-card.mjs.map +1 -1
  36. package/fesm2022/edsis-ui-input-group.mjs +18 -18
  37. package/fesm2022/edsis-ui-input-otp.mjs +15 -15
  38. package/fesm2022/edsis-ui-input.mjs +3 -3
  39. package/fesm2022/edsis-ui-item.mjs +30 -30
  40. package/fesm2022/edsis-ui-kanban.mjs +27 -27
  41. package/fesm2022/edsis-ui-kbd.mjs +6 -6
  42. package/fesm2022/edsis-ui-label.mjs +3 -3
  43. package/fesm2022/edsis-ui-layout-services.mjs +6 -0
  44. package/fesm2022/edsis-ui-layout-services.mjs.map +1 -0
  45. package/fesm2022/edsis-ui-layout-types.mjs +6 -0
  46. package/fesm2022/edsis-ui-layout-types.mjs.map +1 -0
  47. package/fesm2022/edsis-ui-layout.mjs +572 -0
  48. package/fesm2022/edsis-ui-layout.mjs.map +1 -0
  49. package/fesm2022/edsis-ui-menubar.mjs +22 -16
  50. package/fesm2022/edsis-ui-menubar.mjs.map +1 -1
  51. package/fesm2022/edsis-ui-native-select.mjs +9 -9
  52. package/fesm2022/edsis-ui-nav-service.mjs +343 -0
  53. package/fesm2022/edsis-ui-nav-service.mjs.map +1 -0
  54. package/fesm2022/edsis-ui-nav.mjs +2340 -0
  55. package/fesm2022/edsis-ui-nav.mjs.map +1 -0
  56. package/fesm2022/edsis-ui-navigation-menu.mjs +30 -24
  57. package/fesm2022/edsis-ui-navigation-menu.mjs.map +1 -1
  58. package/fesm2022/edsis-ui-page.mjs +397 -0
  59. package/fesm2022/edsis-ui-page.mjs.map +1 -0
  60. package/fesm2022/edsis-ui-pagination.mjs +3 -3
  61. package/fesm2022/edsis-ui-pillbox.mjs +16 -16
  62. package/fesm2022/edsis-ui-pillbox.mjs.map +1 -1
  63. package/fesm2022/edsis-ui-popover.mjs +16 -10
  64. package/fesm2022/edsis-ui-popover.mjs.map +1 -1
  65. package/fesm2022/edsis-ui-progress.mjs +3 -3
  66. package/fesm2022/edsis-ui-radio.mjs +6 -6
  67. package/fesm2022/edsis-ui-resizable.mjs +12 -12
  68. package/fesm2022/edsis-ui-scroll-area.mjs +3 -3
  69. package/fesm2022/edsis-ui-select.mjs +6 -6
  70. package/fesm2022/edsis-ui-separator.mjs +3 -3
  71. package/fesm2022/edsis-ui-sheet.mjs +27 -23
  72. package/fesm2022/edsis-ui-sheet.mjs.map +1 -1
  73. package/fesm2022/edsis-ui-skeleton.mjs +3 -3
  74. package/fesm2022/edsis-ui-slider.mjs +6 -6
  75. package/fesm2022/edsis-ui-spinner.mjs +3 -3
  76. package/fesm2022/edsis-ui-switch.mjs +3 -3
  77. package/fesm2022/edsis-ui-table.mjs +24 -24
  78. package/fesm2022/edsis-ui-tabs.mjs +18 -18
  79. package/fesm2022/edsis-ui-textarea.mjs +3 -3
  80. package/fesm2022/edsis-ui-theme.mjs +209 -0
  81. package/fesm2022/edsis-ui-theme.mjs.map +1 -0
  82. package/fesm2022/edsis-ui-timeline.mjs +18 -18
  83. package/fesm2022/edsis-ui-toast.mjs +3 -3
  84. package/fesm2022/edsis-ui-toggle-group.mjs +9 -9
  85. package/fesm2022/edsis-ui-toggle.mjs +3 -3
  86. package/fesm2022/edsis-ui-tooltip.mjs +12 -12
  87. package/layout/README.md +454 -0
  88. package/nav/README.md +96 -0
  89. package/package.json +31 -2
  90. package/page/README.md +46 -0
  91. package/types/edsis-ui-command.d.ts +4 -1
  92. package/types/edsis-ui-context-menu.d.ts +2 -1
  93. package/types/edsis-ui-dropdown-menu.d.ts +4 -1
  94. package/types/edsis-ui-editor.d.ts +1 -0
  95. package/types/edsis-ui-hover-card.d.ts +3 -1
  96. package/types/edsis-ui-layout-services.d.ts +1 -0
  97. package/types/edsis-ui-layout-types.d.ts +1 -0
  98. package/types/edsis-ui-layout.d.ts +153 -0
  99. package/types/edsis-ui-menubar.d.ts +2 -0
  100. package/types/edsis-ui-nav-service.d.ts +138 -0
  101. package/types/edsis-ui-nav.d.ts +205 -0
  102. package/types/edsis-ui-navigation-menu.d.ts +2 -0
  103. package/types/edsis-ui-page.d.ts +137 -0
  104. package/types/edsis-ui-popover.d.ts +2 -1
  105. package/types/edsis-ui-theme.d.ts +71 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"edsis-ui-page.mjs","sources":["../../../library/ui/page/page.types.ts","../../../library/ui/page/page-state.service.ts","../../../library/ui/page/page-side.component.ts","../../../library/ui/page/page.component.ts","../../../library/ui/page/page-side-toggle.component.ts","../../../library/ui/page/page-slots.component.ts","../../../library/ui/page/edsis-ui-page.ts"],"sourcesContent":["export const UI_PAGE_VARIANTS = ['stacked', 'side'] as const;\nexport const UI_PAGE_SIDE_POSITIONS = ['left', 'right'] as const;\nexport const UI_PAGE_SIDE_MODES = ['sticky', 'drawer', 'overlay'] as const;\n\nexport type UiPageVariant = (typeof UI_PAGE_VARIANTS)[number];\nexport type UiPageSidePosition = (typeof UI_PAGE_SIDE_POSITIONS)[number];\nexport type UiPageSideMode = (typeof UI_PAGE_SIDE_MODES)[number];\n\nexport const UI_PAGE_DEFAULT_VARIANT: UiPageVariant = 'stacked';\nexport const UI_PAGE_DEFAULT_SIDE_POSITION: UiPageSidePosition = 'left';\nexport const UI_PAGE_DEFAULT_SIDE_MODE: UiPageSideMode = 'sticky';\nexport const UI_PAGE_DEFAULT_SIDE_WIDTH = '16rem';\n\nexport function isUiPageVariant(value: string | null): value is UiPageVariant {\n return value !== null && (UI_PAGE_VARIANTS as readonly string[]).includes(value);\n}\n\nexport function isUiPageSidePosition(value: string | null): value is UiPageSidePosition {\n return value !== null && (UI_PAGE_SIDE_POSITIONS as readonly string[]).includes(value);\n}\n\nexport function isUiPageSideMode(value: string | null): value is UiPageSideMode {\n return value !== null && (UI_PAGE_SIDE_MODES as readonly string[]).includes(value);\n}\n","import { Injectable, computed, signal } from '@angular/core';\nimport {\n UI_PAGE_DEFAULT_SIDE_MODE,\n UI_PAGE_DEFAULT_SIDE_POSITION,\n UI_PAGE_DEFAULT_SIDE_WIDTH,\n UI_PAGE_DEFAULT_VARIANT,\n type UiPageSideMode,\n type UiPageSidePosition,\n type UiPageVariant,\n} from './page.types';\n\n@Injectable()\nexport class UiPageStateService {\n private readonly variantState = signal<UiPageVariant>(UI_PAGE_DEFAULT_VARIANT);\n private readonly positionState = signal<UiPageSidePosition>(UI_PAGE_DEFAULT_SIDE_POSITION);\n private readonly sideModeState = signal<UiPageSideMode>(UI_PAGE_DEFAULT_SIDE_MODE);\n private readonly internalSideOpenState = signal(false);\n private readonly controlledSideOpenState = signal<boolean | null>(null);\n private readonly sideWidthState = signal(UI_PAGE_DEFAULT_SIDE_WIDTH);\n private readonly sideIdState = signal<string | null>(null);\n private readonly sideOpenRequestState = signal<boolean | null>(null);\n private readonly sideOpenRequestVersionState = signal(0);\n\n readonly variant = this.variantState.asReadonly();\n readonly position = this.positionState.asReadonly();\n readonly sideMode = this.sideModeState.asReadonly();\n readonly sideWidth = this.sideWidthState.asReadonly();\n readonly sideId = this.sideIdState.asReadonly();\n readonly sideOpenRequest = this.sideOpenRequestState.asReadonly();\n readonly sideOpenRequestVersion = this.sideOpenRequestVersionState.asReadonly();\n readonly sideOpen = computed(() => this.controlledSideOpenState() ?? this.internalSideOpenState());\n readonly isSideInteractive = computed(() => this.sideMode() === 'drawer' || this.sideMode() === 'overlay');\n readonly isSideVisible = computed(() => this.sideMode() === 'sticky' || this.sideOpen());\n\n registerRoot(config: {\n variant: UiPageVariant;\n position: UiPageSidePosition;\n sideMode: UiPageSideMode;\n sideWidth: string;\n }): void {\n this.variantState.set(config.variant);\n this.positionState.set(config.position);\n this.sideModeState.set(config.sideMode);\n this.sideWidthState.set(config.sideWidth);\n }\n\n registerSide(config: { mode: UiPageSideMode; position: UiPageSidePosition; width: string; id: string }): void {\n this.sideModeState.set(config.mode);\n this.positionState.set(config.position);\n this.sideWidthState.set(config.width);\n this.sideIdState.set(config.id);\n }\n\n setControlledSideOpen(open: boolean | null): void {\n this.controlledSideOpenState.set(open);\n\n if (open !== null) {\n this.internalSideOpenState.set(open);\n }\n }\n\n setSideOpen(open: boolean): void {\n this.internalSideOpenState.set(open);\n }\n\n openSide(): boolean {\n return this.requestSideOpenChange(true);\n }\n\n closeSide(): boolean {\n return this.requestSideOpenChange(false);\n }\n\n toggleSide(): boolean {\n return this.requestSideOpenChange(!this.sideOpen());\n }\n\n private requestSideOpenChange(open: boolean): boolean {\n if (this.controlledSideOpenState() === null) {\n this.internalSideOpenState.set(open);\n }\n\n this.sideOpenRequestState.set(open);\n this.sideOpenRequestVersionState.update((version) => version + 1);\n\n return open;\n }\n}\n","import { DOCUMENT } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, effect, inject, input, untracked } from '@angular/core';\nimport { cn } from '@edsis/ui/utils';\nimport { UiPageStateService } from './page-state.service';\nimport { UI_PAGE_DEFAULT_SIDE_WIDTH, type UiPageSideMode, type UiPageSidePosition } from './page.types';\n\nlet nextPageSideId = 0;\n\n@Component({\n selector: 'ui-page-side',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'classes()',\n '[attr.id]': 'resolvedId',\n '[attr.data-page-slot]': '\"side\"',\n '[attr.data-page-side-mode]': 'resolvedMode()',\n '[attr.data-page-side-open]': 'page.sideOpen()',\n '[attr.data-page-position]': 'resolvedPosition()',\n '[attr.aria-hidden]': 'ariaHidden()',\n '[style.--ui-page-side-width]': 'resolvedWidth()',\n },\n template: `<ng-content />`,\n})\nexport class UiPageSideComponent {\n private readonly document = inject(DOCUMENT, { optional: true });\n protected readonly page = inject(UiPageStateService);\n protected readonly resolvedId = `ui-page-side-${++nextPageSideId}`;\n\n readonly mode = input<UiPageSideMode>('sticky');\n readonly position = input<UiPageSidePosition | null>(null);\n readonly width = input<string | null>(null);\n readonly closeOnEsc = input(true);\n readonly class = input<string>('');\n\n protected readonly resolvedMode = computed(() => this.mode() ?? this.page.sideMode());\n protected readonly resolvedPosition = computed(() => this.position() ?? this.page.position());\n protected readonly resolvedWidth = computed(\n () => this.width() ?? this.page.sideWidth() ?? UI_PAGE_DEFAULT_SIDE_WIDTH,\n );\n protected readonly isSticky = computed(() => this.resolvedMode() === 'sticky');\n protected readonly isDrawer = computed(() => this.resolvedMode() === 'drawer');\n protected readonly isOverlay = computed(() => this.resolvedMode() === 'overlay');\n protected readonly ariaHidden = computed(() => (!this.isSticky() && !this.page.sideOpen() ? 'true' : null));\n\n protected readonly classes = computed(() => {\n const position = this.resolvedPosition();\n const sideOpen = this.page.sideOpen();\n\n return cn(\n 'block h-full min-h-0 overflow-auto border-border bg-background',\n this.isSticky() && 'shrink-0 w-[var(--ui-page-side-width)]',\n this.isSticky() && position === 'left' && 'order-1 border-r',\n this.isSticky() && position === 'right' && 'order-2 border-l',\n this.isDrawer() &&\n 'absolute inset-y-0 z-20 w-[var(--ui-page-side-width)] border shadow-sm transition-transform duration-200 ease-out',\n this.isDrawer() && position === 'left' && (sideOpen ? 'left-0 translate-x-0' : 'left-0 -translate-x-full'),\n this.isDrawer() && position === 'right' && (sideOpen ? 'right-0 translate-x-0' : 'right-0 translate-x-full'),\n this.isOverlay() &&\n 'absolute inset-y-0 z-30 w-[var(--ui-page-side-width)] border shadow-md transition-transform duration-200 ease-out',\n this.isOverlay() && position === 'left' && (sideOpen ? 'left-0 translate-x-0' : 'left-0 -translate-x-full'),\n this.isOverlay() && position === 'right' && (sideOpen ? 'right-0 translate-x-0' : 'right-0 translate-x-full'),\n this.class(),\n );\n });\n\n constructor() {\n effect(() => {\n this.page.registerSide({\n mode: this.resolvedMode(),\n position: this.resolvedPosition(),\n width: this.resolvedWidth(),\n id: this.resolvedId,\n });\n });\n\n effect((onCleanup) => {\n if (!this.closeOnEsc() || this.isSticky()) {\n return;\n }\n\n const defaultView = this.document?.defaultView;\n if (!defaultView) {\n return;\n }\n\n const handler = (event: KeyboardEvent) => {\n if (event.key !== 'Escape') {\n return;\n }\n\n if (!untracked(() => this.page.sideOpen())) {\n return;\n }\n\n untracked(() => {\n this.page.closeSide();\n });\n };\n\n defaultView.addEventListener('keydown', handler);\n onCleanup(() => defaultView.removeEventListener('keydown', handler));\n });\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChild,\n effect,\n inject,\n input,\n output,\n} from '@angular/core';\nimport { cn } from '@edsis/ui/utils';\nimport { UiPageSideComponent } from './page-side.component';\nimport { UiPageStateService } from './page-state.service';\nimport {\n UI_PAGE_DEFAULT_SIDE_MODE,\n UI_PAGE_DEFAULT_SIDE_POSITION,\n UI_PAGE_DEFAULT_SIDE_WIDTH,\n UI_PAGE_DEFAULT_VARIANT,\n type UiPageSideMode,\n type UiPageSidePosition,\n type UiPageVariant,\n} from './page.types';\n\n@Component({\n selector: 'ui-page',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [UiPageStateService],\n host: {\n '[class]': 'hostClasses()',\n '[attr.data-page-variant]': 'variant()',\n '[attr.data-page-position]': 'resolvedPosition()',\n '[attr.data-page-side-mode]': 'resolvedSideMode()',\n '[attr.data-page-side-open]': 'page.sideOpen()',\n '[style.--ui-page-side-width]': 'sideWidth()',\n },\n template: `\n @if (showsOverlayBackdrop()) {\n <button\n type=\"button\"\n aria-label=\"Close page side\"\n data-page-overlay-backdrop\n class=\"absolute inset-0 z-20 bg-black/50\"\n (click)=\"handleBackdropClick()\"></button>\n }\n\n <div [class]=\"shellClasses()\">\n <ng-content select=\"ui-page-header\" />\n <ng-content select=\"ui-page-side-toggle\" />\n\n <div [class]=\"bodyClasses()\">\n @if (variant() === 'side') {\n <ng-content select=\"ui-page-side\" />\n }\n\n <ng-content select=\"ui-page-content\" />\n </div>\n\n <ng-content select=\"ui-page-footer\" />\n </div>\n `,\n})\nexport class UiPageComponent {\n protected readonly page = inject(UiPageStateService);\n protected readonly projectedSide = contentChild(UiPageSideComponent);\n\n readonly variant = input<UiPageVariant>(UI_PAGE_DEFAULT_VARIANT);\n readonly position = input<UiPageSidePosition>(UI_PAGE_DEFAULT_SIDE_POSITION);\n readonly sideMode = input<UiPageSideMode>(UI_PAGE_DEFAULT_SIDE_MODE);\n readonly sideOpen = input<boolean | null>(null);\n readonly sideWidth = input<string>(UI_PAGE_DEFAULT_SIDE_WIDTH);\n readonly class = input<string>('');\n readonly sideOpenChange = output<boolean>();\n\n protected readonly resolvedPosition = computed(() => this.projectedSide()?.position() ?? this.position());\n protected readonly resolvedSideMode = computed(() => this.projectedSide()?.mode() ?? this.sideMode());\n protected readonly isLeftSide = computed(() => this.resolvedPosition() === 'left');\n protected readonly isRightSide = computed(() => this.resolvedPosition() === 'right');\n protected readonly showsOverlayBackdrop = computed(\n () => this.variant() === 'side' && this.resolvedSideMode() === 'overlay' && this.page.sideOpen(),\n );\n\n protected readonly hostClasses = computed(() =>\n cn('relative block h-full min-h-0 w-full min-w-0 overflow-hidden text-foreground', this.class()),\n );\n protected readonly shellClasses = computed(() =>\n cn(\n 'relative z-10 h-full min-h-0 w-full min-w-0',\n this.variant() === 'stacked' && 'grid grid-rows-[auto_minmax(0,1fr)_auto]',\n this.variant() === 'side' && 'grid grid-rows-[auto_minmax(0,1fr)_auto]',\n ),\n );\n protected readonly bodyClasses = computed(() => {\n if (this.variant() !== 'side') {\n return 'relative min-h-0 min-w-0';\n }\n\n const sideMode = this.resolvedSideMode();\n const position = this.resolvedPosition();\n\n if (sideMode === 'sticky') {\n return cn(\n 'grid min-h-0 min-w-0',\n position === 'left'\n ? 'grid-cols-[var(--ui-page-side-width)_minmax(0,1fr)]'\n : 'grid-cols-[minmax(0,1fr)_var(--ui-page-side-width)]',\n );\n }\n\n return 'relative min-h-0 min-w-0';\n });\n\n constructor() {\n effect(() => {\n this.page.registerRoot({\n variant: this.variant(),\n position: this.position(),\n sideMode: this.sideMode(),\n sideWidth: this.sideWidth(),\n });\n });\n\n effect(() => {\n this.page.setControlledSideOpen(this.sideOpen());\n });\n\n effect(() => {\n const requestVersion = this.page.sideOpenRequestVersion();\n if (requestVersion === 0) {\n return;\n }\n\n this.sideOpenChange.emit(this.page.sideOpenRequest() ?? false);\n });\n }\n\n protected handleBackdropClick(): void {\n this.page.closeSide();\n }\n}\n","import { ChangeDetectionStrategy, Component, computed, inject, input, output } from '@angular/core';\nimport { cn } from '@edsis/ui/utils';\nimport { UiPageStateService } from './page-state.service';\n\n@Component({\n selector: 'ui-page-side-toggle',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'hostClasses()',\n },\n template: `\n <button\n type=\"button\"\n [class]=\"buttonClasses()\"\n [attr.aria-label]=\"ariaLabel()\"\n [attr.aria-controls]=\"page.sideId()\"\n [attr.aria-expanded]=\"page.sideOpen()\"\n (click)=\"handleClick()\">\n <ng-content>\n <span aria-hidden=\"true\" class=\"text-lg leading-none\">☰</span>\n </ng-content>\n </button>\n `,\n})\nexport class UiPageSideToggleComponent {\n protected readonly page = inject(UiPageStateService);\n\n readonly ariaLabel = input<string>('Toggle page side');\n readonly class = input<string>('');\n readonly toggled = output<boolean>();\n\n protected readonly hostClasses = computed(() => cn('inline-flex shrink-0', this.class()));\n protected readonly buttonClasses = computed(() =>\n cn(\n 'inline-flex h-9 min-w-9 items-center justify-center rounded-md border border-border bg-background px-3 text-sm text-foreground transition-colors hover:bg-accent hover:text-accent-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2',\n ),\n );\n\n protected handleClick(): void {\n this.toggled.emit(this.page.toggleSide());\n }\n}\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\nimport { cn } from '@edsis/ui/utils';\n\n@Component({\n selector: 'ui-page-header',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'classes()',\n 'data-page-slot': 'header',\n },\n template: `<ng-content />`,\n})\nexport class UiPageHeaderComponent {\n readonly class = input<string>('');\n\n protected readonly classes = computed(() => cn('block shrink-0 border-b border-border bg-background', this.class()));\n}\n\n@Component({\n selector: 'ui-page-content',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'classes()',\n 'data-page-slot': 'content',\n },\n template: `<ng-content />`,\n})\nexport class UiPageContentComponent {\n readonly class = input<string>('');\n\n protected readonly classes = computed(() => cn('block h-full min-h-0 min-w-0 overflow-auto', this.class()));\n}\n\n@Component({\n selector: 'ui-page-footer',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'classes()',\n 'data-page-slot': 'footer',\n },\n template: `<ng-content />`,\n})\nexport class UiPageFooterComponent {\n readonly class = input<string>('');\n\n protected readonly classes = computed(() => cn('block shrink-0 border-t border-border bg-background', this.class()));\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -59,8 +59,8 @@ class PaginationComponent {
59
59
  this.page.set(next);
60
60
  this.pageChange.emit(next);
61
61
  }
62
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: PaginationComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
63
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.14", type: PaginationComponent, isStandalone: true, selector: "ui-pagination, nav[ui-pagination]", inputs: { page: { classPropertyName: "page", publicName: "page", isSignal: true, isRequired: false, transformFunction: null }, total: { classPropertyName: "total", publicName: "total", isSignal: true, isRequired: false, transformFunction: null }, siblingCount: { classPropertyName: "siblingCount", publicName: "siblingCount", isSignal: true, isRequired: false, transformFunction: null }, showPageNumbers: { classPropertyName: "showPageNumbers", publicName: "showPageNumbers", isSignal: true, isRequired: false, transformFunction: null }, previousText: { classPropertyName: "previousText", publicName: "previousText", isSignal: true, isRequired: false, transformFunction: null }, nextText: { classPropertyName: "nextText", publicName: "nextText", isSignal: true, isRequired: false, transformFunction: null }, previousAriaLabel: { classPropertyName: "previousAriaLabel", publicName: "previousAriaLabel", isSignal: true, isRequired: false, transformFunction: null }, nextAriaLabel: { classPropertyName: "nextAriaLabel", publicName: "nextAriaLabel", isSignal: true, isRequired: false, transformFunction: null }, formatPageLabel: { classPropertyName: "formatPageLabel", publicName: "formatPageLabel", isSignal: true, isRequired: false, transformFunction: null }, class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { page: "pageChange", pageChange: "pageChange" }, host: { attributes: { "role": "navigation", "aria-label": "pagination" }, properties: { "class": "classes()" } }, ngImport: i0, template: `
62
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.15", ngImport: i0, type: PaginationComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
63
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.15", type: PaginationComponent, isStandalone: true, selector: "ui-pagination, nav[ui-pagination]", inputs: { page: { classPropertyName: "page", publicName: "page", isSignal: true, isRequired: false, transformFunction: null }, total: { classPropertyName: "total", publicName: "total", isSignal: true, isRequired: false, transformFunction: null }, siblingCount: { classPropertyName: "siblingCount", publicName: "siblingCount", isSignal: true, isRequired: false, transformFunction: null }, showPageNumbers: { classPropertyName: "showPageNumbers", publicName: "showPageNumbers", isSignal: true, isRequired: false, transformFunction: null }, previousText: { classPropertyName: "previousText", publicName: "previousText", isSignal: true, isRequired: false, transformFunction: null }, nextText: { classPropertyName: "nextText", publicName: "nextText", isSignal: true, isRequired: false, transformFunction: null }, previousAriaLabel: { classPropertyName: "previousAriaLabel", publicName: "previousAriaLabel", isSignal: true, isRequired: false, transformFunction: null }, nextAriaLabel: { classPropertyName: "nextAriaLabel", publicName: "nextAriaLabel", isSignal: true, isRequired: false, transformFunction: null }, formatPageLabel: { classPropertyName: "formatPageLabel", publicName: "formatPageLabel", isSignal: true, isRequired: false, transformFunction: null }, class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { page: "pageChange", pageChange: "pageChange" }, host: { attributes: { "role": "navigation", "aria-label": "pagination" }, properties: { "class": "classes()" } }, ngImport: i0, template: `
64
64
  <ul class="flex flex-row items-center gap-1">
65
65
  <li>
66
66
  <button
@@ -128,7 +128,7 @@ class PaginationComponent {
128
128
  </ul>
129
129
  `, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
130
130
  }
131
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: PaginationComponent, decorators: [{
131
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.15", ngImport: i0, type: PaginationComponent, decorators: [{
132
132
  type: Component,
133
133
  args: [{
134
134
  selector: 'ui-pagination, nav[ui-pagination]',
@@ -17,10 +17,10 @@ const pillboxPillSizeClasses = {
17
17
  };
18
18
  class PillboxSelectedDirective {
19
19
  template = inject(TemplateRef);
20
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: PillboxSelectedDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
21
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.14", type: PillboxSelectedDirective, isStandalone: true, selector: "ng-template[uiPillboxSelected]", exportAs: ["uiPillboxSelected"], ngImport: i0 });
20
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.15", ngImport: i0, type: PillboxSelectedDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
21
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.15", type: PillboxSelectedDirective, isStandalone: true, selector: "ng-template[uiPillboxSelected]", exportAs: ["uiPillboxSelected"], ngImport: i0 });
22
22
  }
23
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: PillboxSelectedDirective, decorators: [{
23
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.15", ngImport: i0, type: PillboxSelectedDirective, decorators: [{
24
24
  type: Directive,
25
25
  args: [{
26
26
  selector: 'ng-template[uiPillboxSelected]',
@@ -57,8 +57,8 @@ class PillboxOptionComponent {
57
57
  event.preventDefault();
58
58
  this.context.chooseOption(this, event);
59
59
  }
60
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: PillboxOptionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
61
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.14", type: PillboxOptionComponent, isStandalone: true, selector: "ui-pillbox-option, button[ui-pillbox-option]", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: true, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, selectedLabel: { classPropertyName: "selectedLabel", publicName: "selectedLabel", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, filterable: { classPropertyName: "filterable", publicName: "filterable", isSignal: true, isRequired: false, transformFunction: null }, class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { selectedChange: "selectedChange" }, host: { attributes: { "type": "button" }, listeners: { "click": "handleClick($event)", "keydown.enter": "handleKeydown($any($event))", "keydown.space": "handleKeydown($any($event))" }, properties: { "class": "classes()", "attr.data-slot": "\"pillbox-option\"", "attr.data-selected": "selected() ? \"\" : null", "attr.data-disabled": "disabled() ? \"\" : null", "attr.role": "\"option\"", "attr.aria-selected": "selected()", "attr.aria-disabled": "disabled() ? \"true\" : null", "attr.tabindex": "disabled() ? -1 : 0", "hidden": "!visible()" } }, queries: [{ propertyName: "selectedTemplate", first: true, predicate: PillboxSelectedDirective, descendants: true, isSignal: true }], ngImport: i0, template: `
60
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.15", ngImport: i0, type: PillboxOptionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
61
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.15", type: PillboxOptionComponent, isStandalone: true, selector: "ui-pillbox-option, button[ui-pillbox-option]", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: true, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, selectedLabel: { classPropertyName: "selectedLabel", publicName: "selectedLabel", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, filterable: { classPropertyName: "filterable", publicName: "filterable", isSignal: true, isRequired: false, transformFunction: null }, class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { selectedChange: "selectedChange" }, host: { attributes: { "type": "button" }, listeners: { "click": "handleClick($event)", "keydown.enter": "handleKeydown($any($event))", "keydown.space": "handleKeydown($any($event))" }, properties: { "class": "classes()", "attr.data-slot": "\"pillbox-option\"", "attr.data-selected": "selected() ? \"\" : null", "attr.data-disabled": "disabled() ? \"\" : null", "attr.role": "\"option\"", "attr.aria-selected": "selected()", "attr.aria-disabled": "disabled() ? \"true\" : null", "attr.tabindex": "disabled() ? -1 : 0", "hidden": "!visible()" } }, queries: [{ propertyName: "selectedTemplate", first: true, predicate: PillboxSelectedDirective, descendants: true, isSignal: true }], ngImport: i0, template: `
62
62
  <span class="min-w-0 flex-1 truncate text-left"><ng-content /></span>
63
63
  @if (selected()) {
64
64
  <svg
@@ -75,7 +75,7 @@ class PillboxOptionComponent {
75
75
  }
76
76
  `, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
77
77
  }
78
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: PillboxOptionComponent, decorators: [{
78
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.15", ngImport: i0, type: PillboxOptionComponent, decorators: [{
79
79
  type: Component,
80
80
  args: [{
81
81
  selector: 'ui-pillbox-option, button[ui-pillbox-option]',
@@ -128,10 +128,10 @@ class PillboxOptionCreateComponent {
128
128
  event.preventDefault();
129
129
  this.context.chooseCreate(this, event);
130
130
  }
131
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: PillboxOptionCreateComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
132
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.14", type: PillboxOptionCreateComponent, isStandalone: true, selector: "ui-pillbox-option-create, button[ui-pillbox-option-create]", inputs: { minLength: { classPropertyName: "minLength", publicName: "minLength", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { selected: "selected" }, host: { attributes: { "type": "button" }, listeners: { "click": "handleClick($event)", "keydown.enter": "handleKeydown($any($event))", "keydown.space": "handleKeydown($any($event))" }, properties: { "class": "classes()", "attr.data-slot": "\"pillbox-option-create\"", "attr.role": "\"option\"", "attr.tabindex": "disabled() ? -1 : 0", "attr.aria-disabled": "disabled() ? \"true\" : null", "hidden": "!visible()" } }, ngImport: i0, template: `<ng-content />`, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
131
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.15", ngImport: i0, type: PillboxOptionCreateComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
132
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.15", type: PillboxOptionCreateComponent, isStandalone: true, selector: "ui-pillbox-option-create, button[ui-pillbox-option-create]", inputs: { minLength: { classPropertyName: "minLength", publicName: "minLength", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { selected: "selected" }, host: { attributes: { "type": "button" }, listeners: { "click": "handleClick($event)", "keydown.enter": "handleKeydown($any($event))", "keydown.space": "handleKeydown($any($event))" }, properties: { "class": "classes()", "attr.data-slot": "\"pillbox-option-create\"", "attr.role": "\"option\"", "attr.tabindex": "disabled() ? -1 : 0", "attr.aria-disabled": "disabled() ? \"true\" : null", "hidden": "!visible()" } }, ngImport: i0, template: `<ng-content />`, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
133
133
  }
134
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: PillboxOptionCreateComponent, decorators: [{
134
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.15", ngImport: i0, type: PillboxOptionCreateComponent, decorators: [{
135
135
  type: Component,
136
136
  args: [{
137
137
  selector: 'ui-pillbox-option-create, button[ui-pillbox-option-create]',
@@ -156,8 +156,8 @@ class PillboxOptionEmptyComponent {
156
156
  whenLoading = input('', ...(ngDevMode ? [{ debugName: "whenLoading" }] : /* istanbul ignore next */ []));
157
157
  class = input('', ...(ngDevMode ? [{ debugName: "class" }] : /* istanbul ignore next */ []));
158
158
  classes = computed(() => cn('px-2 py-6 text-center text-sm text-muted-foreground', this.class()), ...(ngDevMode ? [{ debugName: "classes" }] : /* istanbul ignore next */ []));
159
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: PillboxOptionEmptyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
160
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.14", type: PillboxOptionEmptyComponent, isStandalone: true, selector: "ui-pillbox-option-empty", inputs: { whenLoading: { classPropertyName: "whenLoading", publicName: "whenLoading", isSignal: true, isRequired: false, transformFunction: null }, class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "role": "presentation" }, properties: { "class": "classes()", "attr.data-slot": "\"pillbox-option-empty\"", "hidden": "!context.emptyVisible()" } }, ngImport: i0, template: `
159
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.15", ngImport: i0, type: PillboxOptionEmptyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
160
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.15", type: PillboxOptionEmptyComponent, isStandalone: true, selector: "ui-pillbox-option-empty", inputs: { whenLoading: { classPropertyName: "whenLoading", publicName: "whenLoading", isSignal: true, isRequired: false, transformFunction: null }, class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "role": "presentation" }, properties: { "class": "classes()", "attr.data-slot": "\"pillbox-option-empty\"", "hidden": "!context.emptyVisible()" } }, ngImport: i0, template: `
161
161
  @if (context.emptyMessage()) {
162
162
  {{ context.emptyMessage() }}
163
163
  } @else {
@@ -165,7 +165,7 @@ class PillboxOptionEmptyComponent {
165
165
  }
166
166
  `, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
167
167
  }
168
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: PillboxOptionEmptyComponent, decorators: [{
168
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.15", ngImport: i0, type: PillboxOptionEmptyComponent, decorators: [{
169
169
  type: Component,
170
170
  args: [{
171
171
  selector: 'ui-pillbox-option-empty',
@@ -408,7 +408,7 @@ class PillboxComponent extends PillboxContext {
408
408
  return Object.is(left, right);
409
409
  }
410
410
  trackValue(value, index) {
411
- return typeof value === 'object' && value !== null ? index : value;
411
+ return index;
412
412
  }
413
413
  focusSearchInput() {
414
414
  const searchInput = this.variant() === 'combobox' ? this.inlineSearch()?.nativeElement : this.panelSearch()?.nativeElement;
@@ -428,8 +428,8 @@ class PillboxComponent extends PillboxContext {
428
428
  this.removeDocumentListener?.();
429
429
  this.removeDocumentListener = null;
430
430
  }
431
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: PillboxComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
432
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.14", type: PillboxComponent, isStandalone: true, selector: "ui-pillbox", inputs: { id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, searchPlaceholder: { classPropertyName: "searchPlaceholder", publicName: "searchPlaceholder", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, multiple: { classPropertyName: "multiple", publicName: "multiple", isSignal: true, isRequired: false, transformFunction: null }, searchable: { classPropertyName: "searchable", publicName: "searchable", isSignal: true, isRequired: false, transformFunction: null }, filter: { classPropertyName: "filter", publicName: "filter", isSignal: true, isRequired: false, transformFunction: null }, clearable: { classPropertyName: "clearable", publicName: "clearable", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, invalid: { classPropertyName: "invalid", publicName: "invalid", isSignal: true, isRequired: false, transformFunction: null }, loading: { classPropertyName: "loading", publicName: "loading", isSignal: true, isRequired: false, transformFunction: null }, emptyText: { classPropertyName: "emptyText", publicName: "emptyText", isSignal: true, isRequired: false, transformFunction: null }, loadingText: { classPropertyName: "loadingText", publicName: "loadingText", isSignal: true, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "aria-label", isSignal: true, isRequired: false, transformFunction: null }, ariaDescribedby: { classPropertyName: "ariaDescribedby", publicName: "aria-describedby", isSignal: true, isRequired: false, transformFunction: null }, ariaLabelledby: { classPropertyName: "ariaLabelledby", publicName: "aria-labelledby", isSignal: true, isRequired: false, transformFunction: null }, class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { valueChange: "valueChange", searchChange: "searchChange", create: "create", openedChange: "openedChange" }, host: { properties: { "class": "classes()", "attr.data-slot": "\"pillbox\"", "attr.data-open": "openState() ? \"\" : null", "attr.data-size": "size()", "attr.data-variant": "variant()" } }, providers: [
431
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.15", ngImport: i0, type: PillboxComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
432
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.15", type: PillboxComponent, isStandalone: true, selector: "ui-pillbox", inputs: { id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, searchPlaceholder: { classPropertyName: "searchPlaceholder", publicName: "searchPlaceholder", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, multiple: { classPropertyName: "multiple", publicName: "multiple", isSignal: true, isRequired: false, transformFunction: null }, searchable: { classPropertyName: "searchable", publicName: "searchable", isSignal: true, isRequired: false, transformFunction: null }, filter: { classPropertyName: "filter", publicName: "filter", isSignal: true, isRequired: false, transformFunction: null }, clearable: { classPropertyName: "clearable", publicName: "clearable", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, invalid: { classPropertyName: "invalid", publicName: "invalid", isSignal: true, isRequired: false, transformFunction: null }, loading: { classPropertyName: "loading", publicName: "loading", isSignal: true, isRequired: false, transformFunction: null }, emptyText: { classPropertyName: "emptyText", publicName: "emptyText", isSignal: true, isRequired: false, transformFunction: null }, loadingText: { classPropertyName: "loadingText", publicName: "loadingText", isSignal: true, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "aria-label", isSignal: true, isRequired: false, transformFunction: null }, ariaDescribedby: { classPropertyName: "ariaDescribedby", publicName: "aria-describedby", isSignal: true, isRequired: false, transformFunction: null }, ariaLabelledby: { classPropertyName: "ariaLabelledby", publicName: "aria-labelledby", isSignal: true, isRequired: false, transformFunction: null }, class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { valueChange: "valueChange", searchChange: "searchChange", create: "create", openedChange: "openedChange" }, host: { properties: { "class": "classes()", "attr.data-slot": "\"pillbox\"", "attr.data-open": "openState() ? \"\" : null", "attr.data-size": "size()", "attr.data-variant": "variant()" } }, providers: [
433
433
  { provide: PillboxContext, useExisting: forwardRef(() => PillboxComponent) },
434
434
  { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => PillboxComponent), multi: true },
435
435
  ], queries: [{ propertyName: "options", predicate: PillboxOptionComponent, descendants: true, isSignal: true }, { propertyName: "createOptions", predicate: PillboxOptionCreateComponent, descendants: true, isSignal: true }, { propertyName: "emptyOptions", predicate: PillboxOptionEmptyComponent, descendants: true, isSignal: true }], viewQueries: [{ propertyName: "trigger", first: true, predicate: ["trigger"], descendants: true, isSignal: true }, { propertyName: "inlineSearch", first: true, predicate: ["inlineSearch"], descendants: true, isSignal: true }, { propertyName: "panelSearch", first: true, predicate: ["panelSearch"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: `
@@ -591,7 +591,7 @@ class PillboxComponent extends PillboxContext {
591
591
  </div>
592
592
  `, isInline: true, dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
593
593
  }
594
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: PillboxComponent, decorators: [{
594
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.15", ngImport: i0, type: PillboxComponent, decorators: [{
595
595
  type: Component,
596
596
  args: [{
597
597
  selector: 'ui-pillbox',
@@ -1 +1 @@
1
- {"version":3,"file":"edsis-ui-pillbox.mjs","sources":["../../../library/ui/pillbox/pillbox.component.ts","../../../library/ui/pillbox/edsis-ui-pillbox.ts"],"sourcesContent":["import { DOCUMENT, NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n Directive,\n DestroyRef,\n ElementRef,\n Signal,\n TemplateRef,\n WritableSignal,\n booleanAttribute,\n contentChild,\n computed,\n contentChildren,\n forwardRef,\n inject,\n input,\n numberAttribute,\n output,\n signal,\n viewChild,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { cn } from '@edsis/ui/utils';\n\nexport type PillboxSize = 'default' | 'sm';\nexport type PillboxVariant = 'default' | 'combobox';\n\ninterface PillboxSelectedItem {\n readonly value: unknown;\n readonly label: string;\n readonly template: TemplateRef<unknown> | null;\n readonly track: unknown;\n}\n\nabstract class PillboxContext {\n abstract readonly query: WritableSignal<string>;\n abstract readonly openState: Signal<boolean>;\n abstract optionVisible(option: PillboxOptionComponent): boolean;\n abstract optionSelected(option: PillboxOptionComponent): boolean;\n abstract chooseOption(option: PillboxOptionComponent, event: Event): void;\n abstract createVisible(option: PillboxOptionCreateComponent): boolean;\n abstract chooseCreate(option: PillboxOptionCreateComponent, event: Event): void;\n abstract emptyVisible(): boolean;\n abstract emptyMessage(): string;\n}\n\nlet nextPillboxId = 0;\n\nconst pillboxTriggerSizeClasses: Record<PillboxSize, string> = {\n default: 'min-h-10 px-3 py-2 text-sm',\n sm: 'min-h-8 px-2.5 py-1.5 text-xs',\n};\n\nconst pillboxPillSizeClasses: Record<PillboxSize, string> = {\n default: 'min-h-6 px-2 text-xs',\n sm: 'min-h-5 px-1.5 text-[0.6875rem]',\n};\n\n@Directive({\n selector: 'ng-template[uiPillboxSelected]',\n exportAs: 'uiPillboxSelected',\n})\nexport class PillboxSelectedDirective {\n readonly template = inject<TemplateRef<unknown>>(TemplateRef);\n}\n\n@Component({\n selector: 'ui-pillbox-option, button[ui-pillbox-option]',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n type: 'button',\n '[class]': 'classes()',\n '[attr.data-slot]': '\"pillbox-option\"',\n '[attr.data-selected]': 'selected() ? \"\" : null',\n '[attr.data-disabled]': 'disabled() ? \"\" : null',\n '[attr.role]': '\"option\"',\n '[attr.aria-selected]': 'selected()',\n '[attr.aria-disabled]': 'disabled() ? \"true\" : null',\n '[attr.tabindex]': 'disabled() ? -1 : 0',\n '[hidden]': '!visible()',\n '(click)': 'handleClick($event)',\n '(keydown.enter)': 'handleKeydown($any($event))',\n '(keydown.space)': 'handleKeydown($any($event))',\n },\n template: `\n <span class=\"min-w-0 flex-1 truncate text-left\"><ng-content /></span>\n @if (selected()) {\n <svg\n aria-hidden=\"true\"\n class=\"ml-auto size-4 shrink-0\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"1.75\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\">\n <path d=\"M20 6 9 17l-5-5\" />\n </svg>\n }\n `,\n})\nexport class PillboxOptionComponent {\n private readonly context = inject(PillboxContext);\n private readonly element = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly selectedTemplate = contentChild(PillboxSelectedDirective);\n\n readonly value = input.required<unknown>();\n readonly label = input<string>('');\n readonly selectedLabel = input<string>('');\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly filterable = input(true, { transform: booleanAttribute });\n readonly class = input<string>('');\n\n readonly selectedChange = output<unknown>();\n\n protected readonly selected = computed(() => this.context.optionSelected(this));\n protected readonly visible = computed(() => this.context.optionVisible(this));\n protected readonly classes = computed(() =>\n cn(\n 'relative flex w-full cursor-default select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none transition-colors',\n 'hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground',\n 'data-[selected]:bg-accent data-[selected]:text-accent-foreground',\n 'data-[disabled]:pointer-events-none data-[disabled]:opacity-50',\n this.class(),\n ),\n );\n\n textLabel(): string {\n return (this.label() || this.element.nativeElement.textContent || String(this.value())).trim();\n }\n\n pillLabel(): string {\n return (this.selectedLabel() || this.textLabel()).trim();\n }\n\n pillTemplate(): TemplateRef<unknown> | null {\n return this.selectedTemplate()?.template ?? null;\n }\n\n protected handleClick(event: Event): void {\n this.context.chooseOption(this, event);\n }\n\n protected handleKeydown(event: KeyboardEvent): void {\n event.preventDefault();\n this.context.chooseOption(this, event);\n }\n}\n\n@Component({\n selector: 'ui-pillbox-option-create, button[ui-pillbox-option-create]',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n type: 'button',\n '[class]': 'classes()',\n '[attr.data-slot]': '\"pillbox-option-create\"',\n '[attr.role]': '\"option\"',\n '[attr.tabindex]': 'disabled() ? -1 : 0',\n '[attr.aria-disabled]': 'disabled() ? \"true\" : null',\n '[hidden]': '!visible()',\n '(click)': 'handleClick($event)',\n '(keydown.enter)': 'handleKeydown($any($event))',\n '(keydown.space)': 'handleKeydown($any($event))',\n },\n template: `<ng-content />`,\n})\nexport class PillboxOptionCreateComponent {\n private readonly context = inject(PillboxContext);\n\n readonly minLength = input(1, { transform: numberAttribute });\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly class = input<string>('');\n\n readonly selected = output<string>();\n\n protected readonly visible = computed(() => this.context.createVisible(this));\n protected readonly classes = computed(() =>\n cn(\n 'relative flex w-full cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm font-medium text-primary outline-none transition-colors',\n 'hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground',\n 'aria-disabled:pointer-events-none aria-disabled:opacity-50',\n this.class(),\n ),\n );\n\n protected handleClick(event: Event): void {\n this.context.chooseCreate(this, event);\n }\n\n protected handleKeydown(event: KeyboardEvent): void {\n event.preventDefault();\n this.context.chooseCreate(this, event);\n }\n}\n\n@Component({\n selector: 'ui-pillbox-option-empty',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'classes()',\n '[attr.data-slot]': '\"pillbox-option-empty\"',\n role: 'presentation',\n '[hidden]': '!context.emptyVisible()',\n },\n template: `\n @if (context.emptyMessage()) {\n {{ context.emptyMessage() }}\n } @else {\n <ng-content />\n }\n `,\n})\nexport class PillboxOptionEmptyComponent {\n protected readonly context = inject(PillboxContext);\n\n readonly whenLoading = input<string>('');\n readonly class = input<string>('');\n\n protected readonly classes = computed(() => cn('px-2 py-6 text-center text-sm text-muted-foreground', this.class()));\n}\n\n@Component({\n selector: 'ui-pillbox',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgTemplateOutlet],\n providers: [\n { provide: PillboxContext, useExisting: forwardRef(() => PillboxComponent) },\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => PillboxComponent), multi: true },\n ],\n host: {\n '[class]': 'classes()',\n '[attr.data-slot]': '\"pillbox\"',\n '[attr.data-open]': 'openState() ? \"\" : null',\n '[attr.data-size]': 'size()',\n '[attr.data-variant]': 'variant()',\n },\n template: `\n <div\n #trigger\n [attr.id]=\"resolvedId()\"\n role=\"combobox\"\n aria-haspopup=\"listbox\"\n [attr.aria-expanded]=\"openState()\"\n [attr.aria-controls]=\"openState() ? panelId : null\"\n [attr.aria-label]=\"ariaLabel()\"\n [attr.aria-labelledby]=\"ariaLabelledby()\"\n [attr.aria-describedby]=\"ariaDescribedby()\"\n [attr.aria-invalid]=\"invalid() ? 'true' : null\"\n [attr.aria-disabled]=\"disabledState() ? 'true' : null\"\n [attr.tabindex]=\"disabledState() ? -1 : 0\"\n [class]=\"triggerClasses()\"\n (click)=\"handleTriggerClick()\"\n (keydown.enter)=\"handleTriggerKeydown($any($event))\"\n (keydown.space)=\"handleTriggerKeydown($any($event))\"\n (keydown.arrowDown)=\"handleTriggerKeydown($any($event))\"\n (keydown.escape)=\"close()\">\n <div class=\"flex min-w-0 flex-1 flex-wrap items-center gap-1.5\">\n @if (selectedItems().length > 0) {\n @for (item of selectedItems(); track item.track) {\n <span [class]=\"pillClasses()\">\n @if (item.template; as template) {\n <span class=\"inline-flex min-w-0 max-w-40 items-center gap-1 truncate\">\n <ng-container *ngTemplateOutlet=\"template\" />\n </span>\n } @else {\n <span class=\"max-w-40 truncate\">{{ item.label }}</span>\n }\n <button\n type=\"button\"\n class=\"-mr-1 inline-flex size-4 items-center justify-center rounded-full text-muted-foreground hover:bg-muted hover:text-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring\"\n [attr.aria-label]=\"'Remove ' + item.label\"\n [disabled]=\"disabledState() || null\"\n (click)=\"removeSelected(item.value, $event)\">\n <svg\n aria-hidden=\"true\"\n class=\"size-3\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\">\n <path d=\"M18 6 6 18\" />\n <path d=\"m6 6 12 12\" />\n </svg>\n </button>\n </span>\n }\n }\n\n @if (variant() === 'combobox') {\n <input\n #inlineSearch\n class=\"min-w-28 flex-1 bg-transparent text-sm outline-none placeholder:text-muted-foreground disabled:cursor-not-allowed\"\n [placeholder]=\"selectedItems().length === 0 ? placeholder() : ''\"\n [value]=\"query()\"\n [disabled]=\"disabledState() || null\"\n (click)=\"$event.stopPropagation(); open()\"\n (focus)=\"open()\"\n (input)=\"handleSearchInput($event)\"\n (keydown.backspace)=\"handleInlineBackspace($any($event))\"\n (keydown.escape)=\"close()\" />\n } @else if (selectedItems().length === 0) {\n <span class=\"truncate text-muted-foreground\">{{ placeholder() }}</span>\n }\n </div>\n\n @if (clearable() && selectedItems().length > 0 && !disabledState()) {\n <button\n type=\"button\"\n class=\"inline-flex size-5 shrink-0 items-center justify-center rounded-full text-muted-foreground hover:bg-muted hover:text-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring\"\n aria-label=\"Clear selected options\"\n (click)=\"clear($event)\">\n <svg\n aria-hidden=\"true\"\n class=\"size-3.5\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\">\n <path d=\"M18 6 6 18\" />\n <path d=\"m6 6 12 12\" />\n </svg>\n </button>\n }\n\n <svg\n aria-hidden=\"true\"\n class=\"size-4 shrink-0 text-muted-foreground transition-transform\"\n [class.rotate-180]=\"openState()\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"1.75\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\">\n <path d=\"m6 9 6 6 6-6\" />\n </svg>\n </div>\n\n <div [attr.id]=\"panelId\" [class]=\"panelClasses()\" [hidden]=\"!openState()\" role=\"listbox\">\n @if (searchable() && variant() !== 'combobox') {\n <div class=\"border-b border-border p-2\">\n <div class=\"flex items-center gap-2 rounded-md border border-input bg-background px-2\">\n <svg\n aria-hidden=\"true\"\n class=\"size-4 shrink-0 text-muted-foreground\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"1.75\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\">\n <circle cx=\"11\" cy=\"11\" r=\"8\" />\n <path d=\"m21 21-4.35-4.35\" />\n </svg>\n <input\n #panelSearch\n class=\"h-9 min-w-0 flex-1 bg-transparent text-sm outline-none placeholder:text-muted-foreground\"\n [placeholder]=\"searchPlaceholder()\"\n [value]=\"query()\"\n (input)=\"handleSearchInput($event)\"\n (keydown.escape)=\"close()\" />\n @if (query().length > 0) {\n <button\n type=\"button\"\n class=\"inline-flex size-6 shrink-0 items-center justify-center rounded-md text-muted-foreground hover:bg-muted hover:text-foreground\"\n aria-label=\"Clear search\"\n (click)=\"clearSearch($event)\">\n <svg\n aria-hidden=\"true\"\n class=\"size-3.5\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\">\n <path d=\"M18 6 6 18\" />\n <path d=\"m6 6 12 12\" />\n </svg>\n </button>\n }\n </div>\n </div>\n }\n\n <div class=\"max-h-72 overflow-y-auto p-1\">\n <ng-content />\n </div>\n </div>\n `,\n})\nexport class PillboxComponent extends PillboxContext implements ControlValueAccessor {\n private readonly element = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly document = inject(DOCUMENT);\n private readonly destroyRef = inject(DestroyRef);\n\n readonly id = input<string | null>(null);\n readonly placeholder = input<string>('Choose options...');\n readonly searchPlaceholder = input<string>('Search...');\n readonly size = input<PillboxSize>('default');\n readonly variant = input<PillboxVariant>('default');\n readonly multiple = input(false, { transform: booleanAttribute });\n readonly searchable = input(false, { transform: booleanAttribute });\n readonly filter = input(true, { transform: booleanAttribute });\n readonly clearable = input(true, { transform: booleanAttribute });\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly invalid = input(false, { transform: booleanAttribute });\n readonly loading = input(false, { transform: booleanAttribute });\n readonly emptyText = input<string>('No options found.');\n readonly loadingText = input<string>('Loading...');\n readonly ariaLabel = input<string | null>(null, { alias: 'aria-label' });\n readonly ariaDescribedby = input<string | null>(null, { alias: 'aria-describedby' });\n readonly ariaLabelledby = input<string | null>(null, { alias: 'aria-labelledby' });\n readonly class = input<string>('');\n\n readonly valueChange = output<unknown>();\n readonly searchChange = output<string>();\n readonly create = output<string>();\n readonly openedChange = output<boolean>();\n\n override readonly query = signal('');\n override readonly openState = signal(false);\n\n private readonly selectedValues = signal<readonly unknown[]>([]);\n private readonly disabledFromControl = signal(false);\n private readonly generatedId = `ui-pillbox-${++nextPillboxId}`;\n private readonly trigger = viewChild.required<ElementRef<HTMLElement>>('trigger');\n private readonly inlineSearch = viewChild<ElementRef<HTMLInputElement>>('inlineSearch');\n private readonly panelSearch = viewChild<ElementRef<HTMLInputElement>>('panelSearch');\n private readonly options = contentChildren(PillboxOptionComponent, { descendants: true });\n private readonly createOptions = contentChildren(PillboxOptionCreateComponent, { descendants: true });\n private readonly emptyOptions = contentChildren(PillboxOptionEmptyComponent, { descendants: true });\n\n private removeDocumentListener: (() => void) | null = null;\n private onChange: (value: unknown) => void = () => {};\n private onTouched: () => void = () => {};\n\n protected readonly panelId = `${this.generatedId}-panel`;\n protected readonly resolvedId = computed(() => this.id() ?? this.generatedId);\n protected readonly disabledState = computed(() => this.disabled() || this.disabledFromControl());\n protected readonly classes = computed(() =>\n cn('relative block w-full min-w-0 text-sm text-foreground', this.class()),\n );\n protected readonly triggerClasses = computed(() =>\n cn(\n 'flex w-full min-w-0 cursor-default items-center gap-2 rounded-md border border-input bg-background shadow-sm transition-colors',\n 'focus-within:outline-none focus-within:ring-2 focus-within:ring-ring focus-within:ring-offset-2 focus-within:ring-offset-background',\n 'hover:bg-accent/20',\n pillboxTriggerSizeClasses[this.size()],\n this.invalid() ? 'border-destructive ring-1 ring-destructive' : '',\n this.disabledState() ? 'pointer-events-none cursor-not-allowed opacity-50' : '',\n ),\n );\n protected readonly pillClasses = computed(() =>\n cn(\n 'inline-flex max-w-full shrink-0 items-center gap-1 rounded-md border border-border bg-muted font-medium text-muted-foreground',\n pillboxPillSizeClasses[this.size()],\n ),\n );\n protected readonly panelClasses = computed(() =>\n cn(\n 'absolute left-0 right-0 z-50 mt-1 overflow-hidden rounded-md border border-border bg-popover text-popover-foreground shadow-md',\n 'min-w-full',\n ),\n );\n protected readonly selectedItems = computed<readonly PillboxSelectedItem[]>(() =>\n this.selectedValues().map((value, index) => {\n const option = this.findOption(value);\n\n return {\n value,\n label: option?.pillLabel() || String(value),\n template: option?.pillTemplate() ?? null,\n track: this.trackValue(value, index),\n };\n }),\n );\n\n constructor() {\n super();\n this.destroyRef.onDestroy(() => this.removeOutsideListener());\n }\n\n override optionVisible(option: PillboxOptionComponent): boolean {\n if (!this.filter() || !option.filterable()) {\n return true;\n }\n\n const query = this.query().trim().toLowerCase();\n if (!query) {\n return true;\n }\n\n return option.textLabel().toLowerCase().includes(query);\n }\n\n override optionSelected(option: PillboxOptionComponent): boolean {\n return this.hasValue(option.value());\n }\n\n override chooseOption(option: PillboxOptionComponent, event: Event): void {\n event.preventDefault();\n event.stopPropagation();\n\n if (this.disabledState() || option.disabled()) {\n return;\n }\n\n if (this.multiple()) {\n const value = option.value();\n this.selectedValues.update((values) =>\n values.some((entry) => this.sameValue(entry, value))\n ? values.filter((entry) => !this.sameValue(entry, value))\n : [...values, value],\n );\n } else {\n this.selectedValues.set([option.value()]);\n this.close();\n }\n\n option.selectedChange.emit(option.value());\n this.query.set('');\n this.emitValue();\n }\n\n override createVisible(option: PillboxOptionCreateComponent): boolean {\n const query = this.query().trim();\n\n if (option.disabled() || query.length < option.minLength()) {\n return false;\n }\n\n return !this.options().some((entry) => entry.textLabel().trim().toLowerCase() === query.toLowerCase());\n }\n\n override chooseCreate(option: PillboxOptionCreateComponent, event: Event): void {\n event.preventDefault();\n event.stopPropagation();\n\n const query = this.query().trim();\n if (this.disabledState() || option.disabled() || !this.createVisible(option)) {\n return;\n }\n\n option.selected.emit(query);\n this.create.emit(query);\n }\n\n override emptyVisible(): boolean {\n return this.options().length > 0 && !this.hasVisibleOptions() && !this.hasVisibleCreateOption();\n }\n\n override emptyMessage(): string {\n const customEmptyOption = this.emptyOptions()[0];\n if (this.loading()) {\n return customEmptyOption?.whenLoading() || this.loadingText();\n }\n\n return customEmptyOption ? '' : this.emptyText();\n }\n\n protected handleTriggerClick(): void {\n this.open();\n }\n\n protected handleTriggerKeydown(event: KeyboardEvent): void {\n if (this.disabledState()) {\n return;\n }\n\n event.preventDefault();\n this.open();\n }\n\n protected handleSearchInput(event: Event): void {\n const inputElement = event.target as HTMLInputElement;\n this.query.set(inputElement.value);\n this.searchChange.emit(inputElement.value);\n this.open();\n }\n\n protected handleInlineBackspace(event: KeyboardEvent): void {\n if ((event.target as HTMLInputElement).value.length > 0 || this.selectedValues().length === 0) {\n return;\n }\n\n event.preventDefault();\n this.selectedValues.update((values) => values.slice(0, -1));\n this.emitValue();\n }\n\n protected clearSearch(event: Event): void {\n event.preventDefault();\n event.stopPropagation();\n this.query.set('');\n this.searchChange.emit('');\n this.focusSearchInput();\n }\n\n protected clear(event: Event): void {\n event.preventDefault();\n event.stopPropagation();\n this.selectedValues.set([]);\n this.emitValue();\n }\n\n protected removeSelected(value: unknown, event: Event): void {\n event.preventDefault();\n event.stopPropagation();\n this.selectedValues.update((values) => values.filter((entry) => !this.sameValue(entry, value)));\n this.emitValue();\n }\n\n open(): void {\n if (this.disabledState() || this.openState()) {\n return;\n }\n\n this.openState.set(true);\n this.openedChange.emit(true);\n queueMicrotask(() => {\n this.focusSearchInput();\n this.bindOutsideListener();\n });\n }\n\n close(): void {\n if (!this.openState()) {\n return;\n }\n\n this.openState.set(false);\n this.openedChange.emit(false);\n this.removeOutsideListener();\n this.onTouched();\n }\n\n focus(): void {\n this.trigger().nativeElement.focus();\n }\n\n writeValue(value: unknown): void {\n if (this.multiple()) {\n this.selectedValues.set(Array.isArray(value) ? value : []);\n return;\n }\n\n this.selectedValues.set(value === null || value === undefined ? [] : [value]);\n }\n\n registerOnChange(fn: (value: unknown) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(disabled: boolean): void {\n this.disabledFromControl.set(disabled);\n }\n\n private emitValue(): void {\n const nextValue = this.multiple() ? [...this.selectedValues()] : (this.selectedValues()[0] ?? null);\n this.onChange(nextValue);\n this.valueChange.emit(nextValue);\n }\n\n private hasValue(value: unknown): boolean {\n return this.selectedValues().some((entry) => this.sameValue(entry, value));\n }\n\n private findOption(value: unknown): PillboxOptionComponent | undefined {\n return this.options().find((option) => this.sameValue(option.value(), value));\n }\n\n private hasVisibleOptions(): boolean {\n return this.options().some((option) => this.optionVisible(option));\n }\n\n private hasVisibleCreateOption(): boolean {\n return this.createOptions().some((option) => this.createVisible(option));\n }\n\n private sameValue(left: unknown, right: unknown): boolean {\n return Object.is(left, right);\n }\n\n private trackValue(value: unknown, index: number): unknown {\n return typeof value === 'object' && value !== null ? index : value;\n }\n\n private focusSearchInput(): void {\n const searchInput =\n this.variant() === 'combobox' ? this.inlineSearch()?.nativeElement : this.panelSearch()?.nativeElement;\n searchInput?.focus();\n }\n\n private bindOutsideListener(): void {\n this.removeOutsideListener();\n\n const listener = (event: PointerEvent) => {\n if (!this.element.nativeElement.contains(event.target as Node)) {\n this.close();\n }\n };\n\n this.document.addEventListener('pointerdown', listener, true);\n this.removeDocumentListener = () => this.document.removeEventListener('pointerdown', listener, true);\n }\n\n private removeOutsideListener(): void {\n this.removeDocumentListener?.();\n this.removeDocumentListener = null;\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"edsis-ui-pillbox.mjs","sources":["../../../library/ui/pillbox/pillbox.component.ts","../../../library/ui/pillbox/edsis-ui-pillbox.ts"],"sourcesContent":["import { DOCUMENT, NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n Directive,\n DestroyRef,\n ElementRef,\n Signal,\n TemplateRef,\n WritableSignal,\n booleanAttribute,\n contentChild,\n computed,\n contentChildren,\n forwardRef,\n inject,\n input,\n numberAttribute,\n output,\n signal,\n viewChild,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { cn } from '@edsis/ui/utils';\n\nexport type PillboxSize = 'default' | 'sm';\nexport type PillboxVariant = 'default' | 'combobox';\n\ninterface PillboxSelectedItem {\n readonly value: unknown;\n readonly label: string;\n readonly template: TemplateRef<unknown> | null;\n readonly track: unknown;\n}\n\nabstract class PillboxContext {\n abstract readonly query: WritableSignal<string>;\n abstract readonly openState: Signal<boolean>;\n abstract optionVisible(option: PillboxOptionComponent): boolean;\n abstract optionSelected(option: PillboxOptionComponent): boolean;\n abstract chooseOption(option: PillboxOptionComponent, event: Event): void;\n abstract createVisible(option: PillboxOptionCreateComponent): boolean;\n abstract chooseCreate(option: PillboxOptionCreateComponent, event: Event): void;\n abstract emptyVisible(): boolean;\n abstract emptyMessage(): string;\n}\n\nlet nextPillboxId = 0;\n\nconst pillboxTriggerSizeClasses: Record<PillboxSize, string> = {\n default: 'min-h-10 px-3 py-2 text-sm',\n sm: 'min-h-8 px-2.5 py-1.5 text-xs',\n};\n\nconst pillboxPillSizeClasses: Record<PillboxSize, string> = {\n default: 'min-h-6 px-2 text-xs',\n sm: 'min-h-5 px-1.5 text-[0.6875rem]',\n};\n\n@Directive({\n selector: 'ng-template[uiPillboxSelected]',\n exportAs: 'uiPillboxSelected',\n})\nexport class PillboxSelectedDirective {\n readonly template = inject<TemplateRef<unknown>>(TemplateRef);\n}\n\n@Component({\n selector: 'ui-pillbox-option, button[ui-pillbox-option]',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n type: 'button',\n '[class]': 'classes()',\n '[attr.data-slot]': '\"pillbox-option\"',\n '[attr.data-selected]': 'selected() ? \"\" : null',\n '[attr.data-disabled]': 'disabled() ? \"\" : null',\n '[attr.role]': '\"option\"',\n '[attr.aria-selected]': 'selected()',\n '[attr.aria-disabled]': 'disabled() ? \"true\" : null',\n '[attr.tabindex]': 'disabled() ? -1 : 0',\n '[hidden]': '!visible()',\n '(click)': 'handleClick($event)',\n '(keydown.enter)': 'handleKeydown($any($event))',\n '(keydown.space)': 'handleKeydown($any($event))',\n },\n template: `\n <span class=\"min-w-0 flex-1 truncate text-left\"><ng-content /></span>\n @if (selected()) {\n <svg\n aria-hidden=\"true\"\n class=\"ml-auto size-4 shrink-0\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"1.75\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\">\n <path d=\"M20 6 9 17l-5-5\" />\n </svg>\n }\n `,\n})\nexport class PillboxOptionComponent {\n private readonly context = inject(PillboxContext);\n private readonly element = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly selectedTemplate = contentChild(PillboxSelectedDirective);\n\n readonly value = input.required<unknown>();\n readonly label = input<string>('');\n readonly selectedLabel = input<string>('');\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly filterable = input(true, { transform: booleanAttribute });\n readonly class = input<string>('');\n\n readonly selectedChange = output<unknown>();\n\n protected readonly selected = computed(() => this.context.optionSelected(this));\n protected readonly visible = computed(() => this.context.optionVisible(this));\n protected readonly classes = computed(() =>\n cn(\n 'relative flex w-full cursor-default select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none transition-colors',\n 'hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground',\n 'data-[selected]:bg-accent data-[selected]:text-accent-foreground',\n 'data-[disabled]:pointer-events-none data-[disabled]:opacity-50',\n this.class(),\n ),\n );\n\n textLabel(): string {\n return (this.label() || this.element.nativeElement.textContent || String(this.value())).trim();\n }\n\n pillLabel(): string {\n return (this.selectedLabel() || this.textLabel()).trim();\n }\n\n pillTemplate(): TemplateRef<unknown> | null {\n return this.selectedTemplate()?.template ?? null;\n }\n\n protected handleClick(event: Event): void {\n this.context.chooseOption(this, event);\n }\n\n protected handleKeydown(event: KeyboardEvent): void {\n event.preventDefault();\n this.context.chooseOption(this, event);\n }\n}\n\n@Component({\n selector: 'ui-pillbox-option-create, button[ui-pillbox-option-create]',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n type: 'button',\n '[class]': 'classes()',\n '[attr.data-slot]': '\"pillbox-option-create\"',\n '[attr.role]': '\"option\"',\n '[attr.tabindex]': 'disabled() ? -1 : 0',\n '[attr.aria-disabled]': 'disabled() ? \"true\" : null',\n '[hidden]': '!visible()',\n '(click)': 'handleClick($event)',\n '(keydown.enter)': 'handleKeydown($any($event))',\n '(keydown.space)': 'handleKeydown($any($event))',\n },\n template: `<ng-content />`,\n})\nexport class PillboxOptionCreateComponent {\n private readonly context = inject(PillboxContext);\n\n readonly minLength = input(1, { transform: numberAttribute });\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly class = input<string>('');\n\n readonly selected = output<string>();\n\n protected readonly visible = computed(() => this.context.createVisible(this));\n protected readonly classes = computed(() =>\n cn(\n 'relative flex w-full cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm font-medium text-primary outline-none transition-colors',\n 'hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground',\n 'aria-disabled:pointer-events-none aria-disabled:opacity-50',\n this.class(),\n ),\n );\n\n protected handleClick(event: Event): void {\n this.context.chooseCreate(this, event);\n }\n\n protected handleKeydown(event: KeyboardEvent): void {\n event.preventDefault();\n this.context.chooseCreate(this, event);\n }\n}\n\n@Component({\n selector: 'ui-pillbox-option-empty',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'classes()',\n '[attr.data-slot]': '\"pillbox-option-empty\"',\n role: 'presentation',\n '[hidden]': '!context.emptyVisible()',\n },\n template: `\n @if (context.emptyMessage()) {\n {{ context.emptyMessage() }}\n } @else {\n <ng-content />\n }\n `,\n})\nexport class PillboxOptionEmptyComponent {\n protected readonly context = inject(PillboxContext);\n\n readonly whenLoading = input<string>('');\n readonly class = input<string>('');\n\n protected readonly classes = computed(() => cn('px-2 py-6 text-center text-sm text-muted-foreground', this.class()));\n}\n\n@Component({\n selector: 'ui-pillbox',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgTemplateOutlet],\n providers: [\n { provide: PillboxContext, useExisting: forwardRef(() => PillboxComponent) },\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => PillboxComponent), multi: true },\n ],\n host: {\n '[class]': 'classes()',\n '[attr.data-slot]': '\"pillbox\"',\n '[attr.data-open]': 'openState() ? \"\" : null',\n '[attr.data-size]': 'size()',\n '[attr.data-variant]': 'variant()',\n },\n template: `\n <div\n #trigger\n [attr.id]=\"resolvedId()\"\n role=\"combobox\"\n aria-haspopup=\"listbox\"\n [attr.aria-expanded]=\"openState()\"\n [attr.aria-controls]=\"openState() ? panelId : null\"\n [attr.aria-label]=\"ariaLabel()\"\n [attr.aria-labelledby]=\"ariaLabelledby()\"\n [attr.aria-describedby]=\"ariaDescribedby()\"\n [attr.aria-invalid]=\"invalid() ? 'true' : null\"\n [attr.aria-disabled]=\"disabledState() ? 'true' : null\"\n [attr.tabindex]=\"disabledState() ? -1 : 0\"\n [class]=\"triggerClasses()\"\n (click)=\"handleTriggerClick()\"\n (keydown.enter)=\"handleTriggerKeydown($any($event))\"\n (keydown.space)=\"handleTriggerKeydown($any($event))\"\n (keydown.arrowDown)=\"handleTriggerKeydown($any($event))\"\n (keydown.escape)=\"close()\">\n <div class=\"flex min-w-0 flex-1 flex-wrap items-center gap-1.5\">\n @if (selectedItems().length > 0) {\n @for (item of selectedItems(); track item.track) {\n <span [class]=\"pillClasses()\">\n @if (item.template; as template) {\n <span class=\"inline-flex min-w-0 max-w-40 items-center gap-1 truncate\">\n <ng-container *ngTemplateOutlet=\"template\" />\n </span>\n } @else {\n <span class=\"max-w-40 truncate\">{{ item.label }}</span>\n }\n <button\n type=\"button\"\n class=\"-mr-1 inline-flex size-4 items-center justify-center rounded-full text-muted-foreground hover:bg-muted hover:text-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring\"\n [attr.aria-label]=\"'Remove ' + item.label\"\n [disabled]=\"disabledState() || null\"\n (click)=\"removeSelected(item.value, $event)\">\n <svg\n aria-hidden=\"true\"\n class=\"size-3\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\">\n <path d=\"M18 6 6 18\" />\n <path d=\"m6 6 12 12\" />\n </svg>\n </button>\n </span>\n }\n }\n\n @if (variant() === 'combobox') {\n <input\n #inlineSearch\n class=\"min-w-28 flex-1 bg-transparent text-sm outline-none placeholder:text-muted-foreground disabled:cursor-not-allowed\"\n [placeholder]=\"selectedItems().length === 0 ? placeholder() : ''\"\n [value]=\"query()\"\n [disabled]=\"disabledState() || null\"\n (click)=\"$event.stopPropagation(); open()\"\n (focus)=\"open()\"\n (input)=\"handleSearchInput($event)\"\n (keydown.backspace)=\"handleInlineBackspace($any($event))\"\n (keydown.escape)=\"close()\" />\n } @else if (selectedItems().length === 0) {\n <span class=\"truncate text-muted-foreground\">{{ placeholder() }}</span>\n }\n </div>\n\n @if (clearable() && selectedItems().length > 0 && !disabledState()) {\n <button\n type=\"button\"\n class=\"inline-flex size-5 shrink-0 items-center justify-center rounded-full text-muted-foreground hover:bg-muted hover:text-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring\"\n aria-label=\"Clear selected options\"\n (click)=\"clear($event)\">\n <svg\n aria-hidden=\"true\"\n class=\"size-3.5\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\">\n <path d=\"M18 6 6 18\" />\n <path d=\"m6 6 12 12\" />\n </svg>\n </button>\n }\n\n <svg\n aria-hidden=\"true\"\n class=\"size-4 shrink-0 text-muted-foreground transition-transform\"\n [class.rotate-180]=\"openState()\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"1.75\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\">\n <path d=\"m6 9 6 6 6-6\" />\n </svg>\n </div>\n\n <div [attr.id]=\"panelId\" [class]=\"panelClasses()\" [hidden]=\"!openState()\" role=\"listbox\">\n @if (searchable() && variant() !== 'combobox') {\n <div class=\"border-b border-border p-2\">\n <div class=\"flex items-center gap-2 rounded-md border border-input bg-background px-2\">\n <svg\n aria-hidden=\"true\"\n class=\"size-4 shrink-0 text-muted-foreground\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"1.75\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\">\n <circle cx=\"11\" cy=\"11\" r=\"8\" />\n <path d=\"m21 21-4.35-4.35\" />\n </svg>\n <input\n #panelSearch\n class=\"h-9 min-w-0 flex-1 bg-transparent text-sm outline-none placeholder:text-muted-foreground\"\n [placeholder]=\"searchPlaceholder()\"\n [value]=\"query()\"\n (input)=\"handleSearchInput($event)\"\n (keydown.escape)=\"close()\" />\n @if (query().length > 0) {\n <button\n type=\"button\"\n class=\"inline-flex size-6 shrink-0 items-center justify-center rounded-md text-muted-foreground hover:bg-muted hover:text-foreground\"\n aria-label=\"Clear search\"\n (click)=\"clearSearch($event)\">\n <svg\n aria-hidden=\"true\"\n class=\"size-3.5\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\">\n <path d=\"M18 6 6 18\" />\n <path d=\"m6 6 12 12\" />\n </svg>\n </button>\n }\n </div>\n </div>\n }\n\n <div class=\"max-h-72 overflow-y-auto p-1\">\n <ng-content />\n </div>\n </div>\n `,\n})\nexport class PillboxComponent extends PillboxContext implements ControlValueAccessor {\n private readonly element = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly document = inject(DOCUMENT);\n private readonly destroyRef = inject(DestroyRef);\n\n readonly id = input<string | null>(null);\n readonly placeholder = input<string>('Choose options...');\n readonly searchPlaceholder = input<string>('Search...');\n readonly size = input<PillboxSize>('default');\n readonly variant = input<PillboxVariant>('default');\n readonly multiple = input(false, { transform: booleanAttribute });\n readonly searchable = input(false, { transform: booleanAttribute });\n readonly filter = input(true, { transform: booleanAttribute });\n readonly clearable = input(true, { transform: booleanAttribute });\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly invalid = input(false, { transform: booleanAttribute });\n readonly loading = input(false, { transform: booleanAttribute });\n readonly emptyText = input<string>('No options found.');\n readonly loadingText = input<string>('Loading...');\n readonly ariaLabel = input<string | null>(null, { alias: 'aria-label' });\n readonly ariaDescribedby = input<string | null>(null, { alias: 'aria-describedby' });\n readonly ariaLabelledby = input<string | null>(null, { alias: 'aria-labelledby' });\n readonly class = input<string>('');\n\n readonly valueChange = output<unknown>();\n readonly searchChange = output<string>();\n readonly create = output<string>();\n readonly openedChange = output<boolean>();\n\n override readonly query = signal('');\n override readonly openState = signal(false);\n\n private readonly selectedValues = signal<readonly unknown[]>([]);\n private readonly disabledFromControl = signal(false);\n private readonly generatedId = `ui-pillbox-${++nextPillboxId}`;\n private readonly trigger = viewChild.required<ElementRef<HTMLElement>>('trigger');\n private readonly inlineSearch = viewChild<ElementRef<HTMLInputElement>>('inlineSearch');\n private readonly panelSearch = viewChild<ElementRef<HTMLInputElement>>('panelSearch');\n private readonly options = contentChildren(PillboxOptionComponent, { descendants: true });\n private readonly createOptions = contentChildren(PillboxOptionCreateComponent, { descendants: true });\n private readonly emptyOptions = contentChildren(PillboxOptionEmptyComponent, { descendants: true });\n\n private removeDocumentListener: (() => void) | null = null;\n private onChange: (value: unknown) => void = () => {};\n private onTouched: () => void = () => {};\n\n protected readonly panelId = `${this.generatedId}-panel`;\n protected readonly resolvedId = computed(() => this.id() ?? this.generatedId);\n protected readonly disabledState = computed(() => this.disabled() || this.disabledFromControl());\n protected readonly classes = computed(() =>\n cn('relative block w-full min-w-0 text-sm text-foreground', this.class()),\n );\n protected readonly triggerClasses = computed(() =>\n cn(\n 'flex w-full min-w-0 cursor-default items-center gap-2 rounded-md border border-input bg-background shadow-sm transition-colors',\n 'focus-within:outline-none focus-within:ring-2 focus-within:ring-ring focus-within:ring-offset-2 focus-within:ring-offset-background',\n 'hover:bg-accent/20',\n pillboxTriggerSizeClasses[this.size()],\n this.invalid() ? 'border-destructive ring-1 ring-destructive' : '',\n this.disabledState() ? 'pointer-events-none cursor-not-allowed opacity-50' : '',\n ),\n );\n protected readonly pillClasses = computed(() =>\n cn(\n 'inline-flex max-w-full shrink-0 items-center gap-1 rounded-md border border-border bg-muted font-medium text-muted-foreground',\n pillboxPillSizeClasses[this.size()],\n ),\n );\n protected readonly panelClasses = computed(() =>\n cn(\n 'absolute left-0 right-0 z-50 mt-1 overflow-hidden rounded-md border border-border bg-popover text-popover-foreground shadow-md',\n 'min-w-full',\n ),\n );\n protected readonly selectedItems = computed<readonly PillboxSelectedItem[]>(() =>\n this.selectedValues().map((value, index) => {\n const option = this.findOption(value);\n\n return {\n value,\n label: option?.pillLabel() || String(value),\n template: option?.pillTemplate() ?? null,\n track: this.trackValue(value, index),\n };\n }),\n );\n\n constructor() {\n super();\n this.destroyRef.onDestroy(() => this.removeOutsideListener());\n }\n\n override optionVisible(option: PillboxOptionComponent): boolean {\n if (!this.filter() || !option.filterable()) {\n return true;\n }\n\n const query = this.query().trim().toLowerCase();\n if (!query) {\n return true;\n }\n\n return option.textLabel().toLowerCase().includes(query);\n }\n\n override optionSelected(option: PillboxOptionComponent): boolean {\n return this.hasValue(option.value());\n }\n\n override chooseOption(option: PillboxOptionComponent, event: Event): void {\n event.preventDefault();\n event.stopPropagation();\n\n if (this.disabledState() || option.disabled()) {\n return;\n }\n\n if (this.multiple()) {\n const value = option.value();\n this.selectedValues.update((values) =>\n values.some((entry) => this.sameValue(entry, value))\n ? values.filter((entry) => !this.sameValue(entry, value))\n : [...values, value],\n );\n } else {\n this.selectedValues.set([option.value()]);\n this.close();\n }\n\n option.selectedChange.emit(option.value());\n this.query.set('');\n this.emitValue();\n }\n\n override createVisible(option: PillboxOptionCreateComponent): boolean {\n const query = this.query().trim();\n\n if (option.disabled() || query.length < option.minLength()) {\n return false;\n }\n\n return !this.options().some((entry) => entry.textLabel().trim().toLowerCase() === query.toLowerCase());\n }\n\n override chooseCreate(option: PillboxOptionCreateComponent, event: Event): void {\n event.preventDefault();\n event.stopPropagation();\n\n const query = this.query().trim();\n if (this.disabledState() || option.disabled() || !this.createVisible(option)) {\n return;\n }\n\n option.selected.emit(query);\n this.create.emit(query);\n }\n\n override emptyVisible(): boolean {\n return this.options().length > 0 && !this.hasVisibleOptions() && !this.hasVisibleCreateOption();\n }\n\n override emptyMessage(): string {\n const customEmptyOption = this.emptyOptions()[0];\n if (this.loading()) {\n return customEmptyOption?.whenLoading() || this.loadingText();\n }\n\n return customEmptyOption ? '' : this.emptyText();\n }\n\n protected handleTriggerClick(): void {\n this.open();\n }\n\n protected handleTriggerKeydown(event: KeyboardEvent): void {\n if (this.disabledState()) {\n return;\n }\n\n event.preventDefault();\n this.open();\n }\n\n protected handleSearchInput(event: Event): void {\n const inputElement = event.target as HTMLInputElement;\n this.query.set(inputElement.value);\n this.searchChange.emit(inputElement.value);\n this.open();\n }\n\n protected handleInlineBackspace(event: KeyboardEvent): void {\n if ((event.target as HTMLInputElement).value.length > 0 || this.selectedValues().length === 0) {\n return;\n }\n\n event.preventDefault();\n this.selectedValues.update((values) => values.slice(0, -1));\n this.emitValue();\n }\n\n protected clearSearch(event: Event): void {\n event.preventDefault();\n event.stopPropagation();\n this.query.set('');\n this.searchChange.emit('');\n this.focusSearchInput();\n }\n\n protected clear(event: Event): void {\n event.preventDefault();\n event.stopPropagation();\n this.selectedValues.set([]);\n this.emitValue();\n }\n\n protected removeSelected(value: unknown, event: Event): void {\n event.preventDefault();\n event.stopPropagation();\n this.selectedValues.update((values) => values.filter((entry) => !this.sameValue(entry, value)));\n this.emitValue();\n }\n\n open(): void {\n if (this.disabledState() || this.openState()) {\n return;\n }\n\n this.openState.set(true);\n this.openedChange.emit(true);\n queueMicrotask(() => {\n this.focusSearchInput();\n this.bindOutsideListener();\n });\n }\n\n close(): void {\n if (!this.openState()) {\n return;\n }\n\n this.openState.set(false);\n this.openedChange.emit(false);\n this.removeOutsideListener();\n this.onTouched();\n }\n\n focus(): void {\n this.trigger().nativeElement.focus();\n }\n\n writeValue(value: unknown): void {\n if (this.multiple()) {\n this.selectedValues.set(Array.isArray(value) ? value : []);\n return;\n }\n\n this.selectedValues.set(value === null || value === undefined ? [] : [value]);\n }\n\n registerOnChange(fn: (value: unknown) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(disabled: boolean): void {\n this.disabledFromControl.set(disabled);\n }\n\n private emitValue(): void {\n const nextValue = this.multiple() ? [...this.selectedValues()] : (this.selectedValues()[0] ?? null);\n this.onChange(nextValue);\n this.valueChange.emit(nextValue);\n }\n\n private hasValue(value: unknown): boolean {\n return this.selectedValues().some((entry) => this.sameValue(entry, value));\n }\n\n private findOption(value: unknown): PillboxOptionComponent | undefined {\n return this.options().find((option) => this.sameValue(option.value(), value));\n }\n\n private hasVisibleOptions(): boolean {\n return this.options().some((option) => this.optionVisible(option));\n }\n\n private hasVisibleCreateOption(): boolean {\n return this.createOptions().some((option) => this.createVisible(option));\n }\n\n private sameValue(left: unknown, right: unknown): boolean {\n return Object.is(left, right);\n }\n\n private trackValue(value: unknown, index: number): unknown {\n return index;\n }\n\n private focusSearchInput(): void {\n const searchInput =\n this.variant() === 'combobox' ? this.inlineSearch()?.nativeElement : this.panelSearch()?.nativeElement;\n searchInput?.focus();\n }\n\n private bindOutsideListener(): void {\n this.removeOutsideListener();\n\n const listener = (event: PointerEvent) => {\n if (!this.element.nativeElement.contains(event.target as Node)) {\n this.close();\n }\n };\n\n this.document.addEventListener('pointerdown', listener, true);\n this.removeDocumentListener = () => this.document.removeEventListener('pointerdown', listener, true);\n }\n\n private removeOutsideListener(): void {\n this.removeDocumentListener?.();\n this.removeDocumentListener = null;\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -8,10 +8,10 @@ import { filter } from 'rxjs/operators';
8
8
 
9
9
  class PopoverContentDirective {
10
10
  template = inject(TemplateRef);
11
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: PopoverContentDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
12
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.14", type: PopoverContentDirective, isStandalone: true, selector: "ng-template[uiPopoverContent]", exportAs: ["uiPopoverContent"], ngImport: i0 });
11
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.15", ngImport: i0, type: PopoverContentDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
12
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.15", type: PopoverContentDirective, isStandalone: true, selector: "ng-template[uiPopoverContent]", exportAs: ["uiPopoverContent"], ngImport: i0 });
13
13
  }
14
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: PopoverContentDirective, decorators: [{
14
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.15", ngImport: i0, type: PopoverContentDirective, decorators: [{
15
15
  type: Directive,
16
16
  args: [{
17
17
  selector: 'ng-template[uiPopoverContent]',
@@ -73,6 +73,9 @@ class PopoverTriggerDirective {
73
73
  openedChange = output();
74
74
  overlayRef = null;
75
75
  isOpen = signal(false, ...(ngDevMode ? [{ debugName: "isOpen" }] : /* istanbul ignore next */ []));
76
+ constructor() {
77
+ this.destroyRef.onDestroy(() => this.close(false));
78
+ }
76
79
  toggle() {
77
80
  if (this.disabled())
78
81
  return;
@@ -115,13 +118,16 @@ class PopoverTriggerDirective {
115
118
  this.isOpen.set(true);
116
119
  this.openedChange.emit(true);
117
120
  }
118
- close() {
121
+ close(emitOpenedChange = true) {
119
122
  if (!this.isOpen())
120
123
  return;
121
- this.overlayRef?.dispose();
124
+ const overlayRef = this.overlayRef;
122
125
  this.overlayRef = null;
123
126
  this.isOpen.set(false);
124
- this.openedChange.emit(false);
127
+ overlayRef?.dispose();
128
+ if (emitOpenedChange) {
129
+ this.openedChange.emit(false);
130
+ }
125
131
  }
126
132
  oppositeSide(side) {
127
133
  return side === 'top' ? 'bottom' : side === 'bottom' ? 'top' : side === 'left' ? 'right' : 'left';
@@ -136,10 +142,10 @@ class PopoverTriggerDirective {
136
142
  tagName === 'SUMMARY' ||
137
143
  (tagName === 'A' && host.hasAttribute('href')));
138
144
  }
139
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: PopoverTriggerDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
140
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.14", type: PopoverTriggerDirective, isStandalone: true, selector: "[uiPopoverTrigger]", inputs: { uiPopoverTrigger: { classPropertyName: "uiPopoverTrigger", publicName: "uiPopoverTrigger", isSignal: true, isRequired: true, transformFunction: null }, side: { classPropertyName: "side", publicName: "side", isSignal: true, isRequired: false, transformFunction: null }, align: { classPropertyName: "align", publicName: "align", isSignal: true, isRequired: false, transformFunction: null }, sideOffset: { classPropertyName: "sideOffset", publicName: "sideOffset", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { openedChange: "openedChange" }, host: { listeners: { "click": "toggle()", "keydown.enter": "onKeyboardToggle($event)", "keydown.space": "onKeyboardToggle($event)", "keydown.escape": "close()" }, properties: { "attr.aria-expanded": "isOpen()", "attr.aria-haspopup": "\"dialog\"" } }, exportAs: ["uiPopoverTrigger"], ngImport: i0 });
145
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.15", ngImport: i0, type: PopoverTriggerDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
146
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.15", type: PopoverTriggerDirective, isStandalone: true, selector: "[uiPopoverTrigger]", inputs: { uiPopoverTrigger: { classPropertyName: "uiPopoverTrigger", publicName: "uiPopoverTrigger", isSignal: true, isRequired: true, transformFunction: null }, side: { classPropertyName: "side", publicName: "side", isSignal: true, isRequired: false, transformFunction: null }, align: { classPropertyName: "align", publicName: "align", isSignal: true, isRequired: false, transformFunction: null }, sideOffset: { classPropertyName: "sideOffset", publicName: "sideOffset", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { openedChange: "openedChange" }, host: { listeners: { "click": "toggle()", "keydown.enter": "onKeyboardToggle($event)", "keydown.space": "onKeyboardToggle($event)", "keydown.escape": "close()" }, properties: { "attr.aria-expanded": "isOpen()", "attr.aria-haspopup": "\"dialog\"" } }, exportAs: ["uiPopoverTrigger"], ngImport: i0 });
141
147
  }
142
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: PopoverTriggerDirective, decorators: [{
148
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.15", ngImport: i0, type: PopoverTriggerDirective, decorators: [{
143
149
  type: Directive,
144
150
  args: [{
145
151
  selector: '[uiPopoverTrigger]',
@@ -153,7 +159,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
153
159
  '(keydown.escape)': 'close()',
154
160
  },
155
161
  }]
156
- }], propDecorators: { uiPopoverTrigger: [{ type: i0.Input, args: [{ isSignal: true, alias: "uiPopoverTrigger", required: true }] }], side: [{ type: i0.Input, args: [{ isSignal: true, alias: "side", required: false }] }], align: [{ type: i0.Input, args: [{ isSignal: true, alias: "align", required: false }] }], sideOffset: [{ type: i0.Input, args: [{ isSignal: true, alias: "sideOffset", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], openedChange: [{ type: i0.Output, args: ["openedChange"] }] } });
162
+ }], ctorParameters: () => [], propDecorators: { uiPopoverTrigger: [{ type: i0.Input, args: [{ isSignal: true, alias: "uiPopoverTrigger", required: true }] }], side: [{ type: i0.Input, args: [{ isSignal: true, alias: "side", required: false }] }], align: [{ type: i0.Input, args: [{ isSignal: true, alias: "align", required: false }] }], sideOffset: [{ type: i0.Input, args: [{ isSignal: true, alias: "sideOffset", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], openedChange: [{ type: i0.Output, args: ["openedChange"] }] } });
157
163
 
158
164
  /**
159
165
  * Generated bundle index. Do not edit.