@frame-ui-ng/components 0.3.0-beta.0 → 0.4.1

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 (172) hide show
  1. package/button/src/styles/button.css +5 -1
  2. package/button-group/src/styles/button-group.css +6 -0
  3. package/confirm-popover/src/styles/confirm-popover.css +20 -0
  4. package/drag-drop/src/styles/_vars.css +28 -0
  5. package/drag-drop/src/styles/drag-drop.css +132 -0
  6. package/fesm2022/frame-ui-ng-components-accordion.mjs +26 -21
  7. package/fesm2022/frame-ui-ng-components-accordion.mjs.map +1 -1
  8. package/fesm2022/frame-ui-ng-components-alert.mjs +4 -0
  9. package/fesm2022/frame-ui-ng-components-alert.mjs.map +1 -1
  10. package/fesm2022/frame-ui-ng-components-avatar.mjs +7 -0
  11. package/fesm2022/frame-ui-ng-components-avatar.mjs.map +1 -1
  12. package/fesm2022/frame-ui-ng-components-badge.mjs +4 -0
  13. package/fesm2022/frame-ui-ng-components-badge.mjs.map +1 -1
  14. package/fesm2022/frame-ui-ng-components-breadcrumb.mjs +13 -6
  15. package/fesm2022/frame-ui-ng-components-breadcrumb.mjs.map +1 -1
  16. package/fesm2022/frame-ui-ng-components-button-group.mjs +1 -0
  17. package/fesm2022/frame-ui-ng-components-button-group.mjs.map +1 -1
  18. package/fesm2022/frame-ui-ng-components-button.mjs +5 -0
  19. package/fesm2022/frame-ui-ng-components-button.mjs.map +1 -1
  20. package/fesm2022/frame-ui-ng-components-calendar.mjs +4 -0
  21. package/fesm2022/frame-ui-ng-components-calendar.mjs.map +1 -1
  22. package/fesm2022/frame-ui-ng-components-card.mjs +15 -15
  23. package/fesm2022/frame-ui-ng-components-card.mjs.map +1 -1
  24. package/fesm2022/frame-ui-ng-components-carousel.mjs +33 -16
  25. package/fesm2022/frame-ui-ng-components-carousel.mjs.map +1 -1
  26. package/fesm2022/frame-ui-ng-components-checkbox.mjs +7 -9
  27. package/fesm2022/frame-ui-ng-components-checkbox.mjs.map +1 -1
  28. package/fesm2022/frame-ui-ng-components-collapsible.mjs +24 -23
  29. package/fesm2022/frame-ui-ng-components-collapsible.mjs.map +1 -1
  30. package/fesm2022/frame-ui-ng-components-combobox.mjs +113 -68
  31. package/fesm2022/frame-ui-ng-components-combobox.mjs.map +1 -1
  32. package/fesm2022/frame-ui-ng-components-command.mjs +47 -16
  33. package/fesm2022/frame-ui-ng-components-command.mjs.map +1 -1
  34. package/fesm2022/frame-ui-ng-components-confirm-modal.mjs +165 -0
  35. package/fesm2022/frame-ui-ng-components-confirm-modal.mjs.map +1 -0
  36. package/fesm2022/frame-ui-ng-components-confirm-popover.mjs +423 -0
  37. package/fesm2022/frame-ui-ng-components-confirm-popover.mjs.map +1 -0
  38. package/fesm2022/frame-ui-ng-components-context-menu.mjs +71 -45
  39. package/fesm2022/frame-ui-ng-components-context-menu.mjs.map +1 -1
  40. package/fesm2022/frame-ui-ng-components-date-picker.mjs +3 -0
  41. package/fesm2022/frame-ui-ng-components-date-picker.mjs.map +1 -1
  42. package/fesm2022/frame-ui-ng-components-drag-drop.mjs +293 -0
  43. package/fesm2022/frame-ui-ng-components-drag-drop.mjs.map +1 -0
  44. package/fesm2022/frame-ui-ng-components-dropdown-menu.mjs +74 -37
  45. package/fesm2022/frame-ui-ng-components-dropdown-menu.mjs.map +1 -1
  46. package/fesm2022/frame-ui-ng-components-empty.mjs +6 -0
  47. package/fesm2022/frame-ui-ng-components-empty.mjs.map +1 -1
  48. package/fesm2022/frame-ui-ng-components-field.mjs +21 -12
  49. package/fesm2022/frame-ui-ng-components-field.mjs.map +1 -1
  50. package/fesm2022/frame-ui-ng-components-forms.mjs +1 -0
  51. package/fesm2022/frame-ui-ng-components-forms.mjs.map +1 -1
  52. package/fesm2022/frame-ui-ng-components-hover-card.mjs +49 -43
  53. package/fesm2022/frame-ui-ng-components-hover-card.mjs.map +1 -1
  54. package/fesm2022/frame-ui-ng-components-input-otp.mjs +69 -69
  55. package/fesm2022/frame-ui-ng-components-input-otp.mjs.map +1 -1
  56. package/fesm2022/frame-ui-ng-components-input.mjs +13 -0
  57. package/fesm2022/frame-ui-ng-components-input.mjs.map +1 -1
  58. package/fesm2022/frame-ui-ng-components-item.mjs +10 -0
  59. package/fesm2022/frame-ui-ng-components-item.mjs.map +1 -1
  60. package/fesm2022/frame-ui-ng-components-menubar.mjs +15 -0
  61. package/fesm2022/frame-ui-ng-components-menubar.mjs.map +1 -1
  62. package/fesm2022/frame-ui-ng-components-modal.mjs +221 -129
  63. package/fesm2022/frame-ui-ng-components-modal.mjs.map +1 -1
  64. package/fesm2022/frame-ui-ng-components-navigation-menu.mjs +14 -0
  65. package/fesm2022/frame-ui-ng-components-navigation-menu.mjs.map +1 -1
  66. package/fesm2022/frame-ui-ng-components-pagination.mjs +45 -36
  67. package/fesm2022/frame-ui-ng-components-pagination.mjs.map +1 -1
  68. package/fesm2022/frame-ui-ng-components-popover.mjs +63 -51
  69. package/fesm2022/frame-ui-ng-components-popover.mjs.map +1 -1
  70. package/fesm2022/frame-ui-ng-components-progress.mjs +4 -1
  71. package/fesm2022/frame-ui-ng-components-progress.mjs.map +1 -1
  72. package/fesm2022/frame-ui-ng-components-radio-group.mjs +5 -0
  73. package/fesm2022/frame-ui-ng-components-radio-group.mjs.map +1 -1
  74. package/fesm2022/frame-ui-ng-components-resizable.mjs +22 -26
  75. package/fesm2022/frame-ui-ng-components-resizable.mjs.map +1 -1
  76. package/fesm2022/frame-ui-ng-components-select.mjs +62 -14
  77. package/fesm2022/frame-ui-ng-components-select.mjs.map +1 -1
  78. package/fesm2022/frame-ui-ng-components-separator.mjs +1 -0
  79. package/fesm2022/frame-ui-ng-components-separator.mjs.map +1 -1
  80. package/fesm2022/frame-ui-ng-components-sheet.mjs +118 -104
  81. package/fesm2022/frame-ui-ng-components-sheet.mjs.map +1 -1
  82. package/fesm2022/frame-ui-ng-components-sidebar.mjs +45 -24
  83. package/fesm2022/frame-ui-ng-components-sidebar.mjs.map +1 -1
  84. package/fesm2022/frame-ui-ng-components-skeleton.mjs +1 -0
  85. package/fesm2022/frame-ui-ng-components-skeleton.mjs.map +1 -1
  86. package/fesm2022/frame-ui-ng-components-slider.mjs +82 -75
  87. package/fesm2022/frame-ui-ng-components-slider.mjs.map +1 -1
  88. package/fesm2022/frame-ui-ng-components-spinner.mjs +1 -0
  89. package/fesm2022/frame-ui-ng-components-spinner.mjs.map +1 -1
  90. package/fesm2022/frame-ui-ng-components-switch.mjs +6 -0
  91. package/fesm2022/frame-ui-ng-components-switch.mjs.map +1 -1
  92. package/fesm2022/frame-ui-ng-components-table.mjs +76 -50
  93. package/fesm2022/frame-ui-ng-components-table.mjs.map +1 -1
  94. package/fesm2022/frame-ui-ng-components-tabs.mjs +4 -0
  95. package/fesm2022/frame-ui-ng-components-tabs.mjs.map +1 -1
  96. package/fesm2022/frame-ui-ng-components-textarea.mjs +1 -0
  97. package/fesm2022/frame-ui-ng-components-textarea.mjs.map +1 -1
  98. package/fesm2022/frame-ui-ng-components-toast.mjs +2 -0
  99. package/fesm2022/frame-ui-ng-components-toast.mjs.map +1 -1
  100. package/fesm2022/frame-ui-ng-components-toggle.mjs +23 -16
  101. package/fesm2022/frame-ui-ng-components-toggle.mjs.map +1 -1
  102. package/fesm2022/frame-ui-ng-components-tooltip.mjs +74 -25
  103. package/fesm2022/frame-ui-ng-components-tooltip.mjs.map +1 -1
  104. package/fesm2022/frame-ui-ng-components-utils.mjs +20 -0
  105. package/fesm2022/frame-ui-ng-components-utils.mjs.map +1 -0
  106. package/fesm2022/frame-ui-ng-components-virtual-scroll.mjs +36 -20
  107. package/fesm2022/frame-ui-ng-components-virtual-scroll.mjs.map +1 -1
  108. package/fesm2022/frame-ui-ng-components.mjs +1737 -845
  109. package/fesm2022/frame-ui-ng-components.mjs.map +1 -1
  110. package/item/src/styles/item.css +188 -187
  111. package/modal/src/styles/modal.css +10 -1
  112. package/package.json +18 -2
  113. package/popover/src/styles/popover.css +106 -101
  114. package/sidebar/src/styles/sidebar.css +10 -4
  115. package/src/styles/blueprint.css +98 -0
  116. package/src/styles/components.css +2 -0
  117. package/styles/blueprint.css +98 -0
  118. package/styles/components.css +2 -0
  119. package/styles.css +2 -0
  120. package/tooltip/src/styles/tooltip.css +4 -4
  121. package/types/frame-ui-ng-components-accordion.d.ts +11 -4
  122. package/types/frame-ui-ng-components-alert.d.ts +4 -0
  123. package/types/frame-ui-ng-components-avatar.d.ts +7 -0
  124. package/types/frame-ui-ng-components-badge.d.ts +4 -0
  125. package/types/frame-ui-ng-components-breadcrumb.d.ts +7 -0
  126. package/types/frame-ui-ng-components-button-group.d.ts +1 -0
  127. package/types/frame-ui-ng-components-button.d.ts +5 -0
  128. package/types/frame-ui-ng-components-calendar.d.ts +1 -0
  129. package/types/frame-ui-ng-components-card.d.ts +8 -3
  130. package/types/frame-ui-ng-components-carousel.d.ts +11 -2
  131. package/types/frame-ui-ng-components-checkbox.d.ts +3 -2
  132. package/types/frame-ui-ng-components-collapsible.d.ts +9 -4
  133. package/types/frame-ui-ng-components-combobox.d.ts +33 -4
  134. package/types/frame-ui-ng-components-command.d.ts +26 -4
  135. package/types/frame-ui-ng-components-confirm-modal.d.ts +50 -0
  136. package/types/frame-ui-ng-components-confirm-popover.d.ts +87 -0
  137. package/types/frame-ui-ng-components-context-menu.d.ts +29 -10
  138. package/types/frame-ui-ng-components-date-picker.d.ts +1 -0
  139. package/types/frame-ui-ng-components-drag-drop.d.ts +103 -0
  140. package/types/frame-ui-ng-components-dropdown-menu.d.ts +32 -9
  141. package/types/frame-ui-ng-components-empty.d.ts +6 -0
  142. package/types/frame-ui-ng-components-field.d.ts +9 -0
  143. package/types/frame-ui-ng-components-forms.d.ts +1 -0
  144. package/types/frame-ui-ng-components-hover-card.d.ts +8 -2
  145. package/types/frame-ui-ng-components-input-otp.d.ts +5 -1
  146. package/types/frame-ui-ng-components-input.d.ts +13 -0
  147. package/types/frame-ui-ng-components-item.d.ts +10 -0
  148. package/types/frame-ui-ng-components-menubar.d.ts +15 -0
  149. package/types/frame-ui-ng-components-modal.d.ts +30 -7
  150. package/types/frame-ui-ng-components-navigation-menu.d.ts +14 -0
  151. package/types/frame-ui-ng-components-pagination.d.ts +8 -0
  152. package/types/frame-ui-ng-components-popover.d.ts +14 -2
  153. package/types/frame-ui-ng-components-progress.d.ts +2 -0
  154. package/types/frame-ui-ng-components-radio-group.d.ts +5 -0
  155. package/types/frame-ui-ng-components-resizable.d.ts +3 -0
  156. package/types/frame-ui-ng-components-select.d.ts +23 -2
  157. package/types/frame-ui-ng-components-separator.d.ts +1 -0
  158. package/types/frame-ui-ng-components-sheet.d.ts +13 -0
  159. package/types/frame-ui-ng-components-sidebar.d.ts +23 -2
  160. package/types/frame-ui-ng-components-skeleton.d.ts +1 -0
  161. package/types/frame-ui-ng-components-slider.d.ts +5 -2
  162. package/types/frame-ui-ng-components-spinner.d.ts +1 -0
  163. package/types/frame-ui-ng-components-switch.d.ts +6 -0
  164. package/types/frame-ui-ng-components-table.d.ts +26 -0
  165. package/types/frame-ui-ng-components-tabs.d.ts +4 -0
  166. package/types/frame-ui-ng-components-textarea.d.ts +1 -0
  167. package/types/frame-ui-ng-components-toast.d.ts +2 -0
  168. package/types/frame-ui-ng-components-toggle.d.ts +8 -2
  169. package/types/frame-ui-ng-components-tooltip.d.ts +11 -2
  170. package/types/frame-ui-ng-components-utils.d.ts +5 -0
  171. package/types/frame-ui-ng-components-virtual-scroll.d.ts +11 -2
  172. package/types/frame-ui-ng-components.d.ts +525 -96
@@ -1 +1 @@
1
- {"version":3,"file":"frame-ui-ng-components-select.mjs","sources":["../../../projects/components/select/src/select.content.ts","../../../projects/components/select/src/select.root.ts","../../../projects/components/select/src/select.value.ts","../../../projects/components/select/src/select.items.ts","../../../projects/components/select/select.module.ts","../../../projects/components/select/frame-ui-ng-components-select.ts"],"sourcesContent":["import { DestroyRef, Directive, EmbeddedViewRef, ViewContainerRef, inject, input, signal } from '@angular/core';\n\nimport {\n FR_DROPDOWN_MENU_CONTENT,\n FrDropdownMenuContent,\n FrDropdownMenuPanel,\n} from '@frame-ui-ng/components/dropdown-menu';\nimport { buildConnectedPositions } from '@frame-ui-ng/components/dropdown-menu';\nimport { FR_DROPDOWN_MENU_PARENT, FrDropdownMenuTree } from '@frame-ui-ng/components/dropdown-menu';\nimport { FrSelect } from './select.root';\n\r\nexport const FR_SELECT_POSITIONS = ['item-aligned', 'popper'] as const;\r\nexport type FrSelectPosition = (typeof FR_SELECT_POSITIONS)[number];\r\n\r\n@Directive({\r\n selector: 'ng-template[frSelectContent]',\r\n exportAs: 'frSelectContent',\r\n providers: [\r\n {\n provide: FR_DROPDOWN_MENU_CONTENT,\n useExisting: FrSelectContent,\n },\n FrDropdownMenuTree,\n {\n provide: FR_DROPDOWN_MENU_PARENT,\n useValue: {\n closeDelay: () => 0,\n triggerMode: () => 'click',\n },\n },\n ],\n})\nexport class FrSelectContent extends FrDropdownMenuContent {\n private readonly destroyRef = inject(DestroyRef);\n private readonly viewContainerRef = inject(ViewContainerRef);\n private readonly debugVisibleOverride = signal<boolean | null>(null);\n private readonly triggerWidth = signal<number | null>(null);\n private registrationView: EmbeddedViewRef<unknown> | null = null;\n\r\n readonly position = input<FrSelectPosition>('item-aligned');\r\n\r\n select: FrSelect | null = null;\n\n constructor() {\n super();\n\n this.destroyRef.onDestroy(() => {\n this.registrationView?.destroy();\n });\n }\n\r\n setDebugVisibleOverride(value: boolean | null): void {\r\n this.debugVisibleOverride.set(value);\r\n }\r\n\r\n override isDebugVisible(): boolean {\r\n return this.debugVisibleOverride() ?? this.debugVisible();\r\n }\r\n\r\n setTriggerWidth(value: number | null): void {\n this.triggerWidth.set(value);\n }\n\n ensureItemsRegistered(): void {\n if (this.registrationView) {\n return;\n }\n\n this.registrationView = this.viewContainerRef.createEmbeddedView(this.templateRef);\n this.registrationView.detectChanges();\n\n const index = this.viewContainerRef.indexOf(this.registrationView);\n\n if (index >= 0) {\n this.viewContainerRef.detach(index);\n }\n }\n\r\n panelMinWidth(): number | null {\r\n if (this.position() !== 'item-aligned') {\r\n return null;\r\n }\r\n\r\n return this.triggerWidth();\r\n }\r\n\r\n override getPositions(isSubmenu: boolean) {\r\n if (this.position() === 'item-aligned') {\r\n return buildConnectedPositions({\r\n align: this.align(),\r\n alignOffset: 0,\r\n isSubmenu,\r\n side: this.side(),\r\n sideOffset: 4,\r\n });\r\n }\r\n\r\n return super.getPositions(isSubmenu);\r\n }\r\n}\r\n\r\n@Directive({\r\n selector: '[frSelectPanel], frame-select-panel',\r\n hostDirectives: [FrDropdownMenuPanel],\r\n host: {\r\n class: 'frame-select__content',\r\n '[attr.data-position]': 'content.position()',\r\n '[style.min-width.px]': 'content.panelMinWidth()',\r\n },\r\n})\r\nexport class FrSelectPanel {\r\n protected readonly content = inject(FrSelectContent);\r\n}\r\n\r\n","import {\n DestroyRef,\n Directive,\n ElementRef,\n booleanAttribute,\n computed,\n effect,\n inject,\n input,\n model,\n signal,\n} from '@angular/core';\n\nimport { FrDropdownMenu } from '@frame-ui-ng/components/dropdown-menu';\nimport { FrDropdownMenuTrigger } from '@frame-ui-ng/components/dropdown-menu';\nimport { FrControlValueAccessor, provideDsValueAccessor } from '@frame-ui-ng/components/forms';\nimport { FrSelectContent } from './select.content';\n\nexport const FR_SELECT_INDICATOR_POSITIONS = ['start', 'end'] as const;\nexport type FrSelectIndicatorPosition = (typeof FR_SELECT_INDICATOR_POSITIONS)[number];\n\n@Directive({\n selector: 'button[frSelect]',\n hostDirectives: [\n {\n directive: FrDropdownMenu,\n inputs: ['closeDelay', 'triggerMode'],\n },\n {\n directive: FrDropdownMenuTrigger,\n inputs: ['frDropdownMenuTrigger: frSelect'],\n },\n ],\n providers: [provideDsValueAccessor(FrSelect)],\n host: {\n class: 'frame-select__trigger',\n '[attr.aria-disabled]': 'disabled() ? \"true\" : null',\n '[attr.aria-invalid]': 'invalid() ? \"true\" : null',\n '[attr.data-disabled]': 'disabled() ? \"\" : null',\n '[attr.data-invalid]': 'invalid() ? \"\" : null',\n '[attr.disabled]': 'disabled() ? \"\" : null',\n 'aria-autocomplete': 'none',\n 'aria-haspopup': 'listbox',\n type: 'button',\n role: 'combobox',\n },\n})\nexport class FrSelect extends FrControlValueAccessor<string | null> {\n private readonly destroyRef = inject(DestroyRef);\n private readonly dropdownTrigger = inject(FrDropdownMenuTrigger);\n private readonly elementRef = inject<ElementRef<HTMLButtonElement>>(ElementRef);\n private readonly selectedLabel = signal<string | null>(null);\n private readonly labels = new Map<string | null, string>();\n private resizeObserver: ResizeObserver | null = null;\n\n readonly value = model<string | null>(null);\n readonly debugVisible = input(false, { transform: booleanAttribute });\n readonly disabledInput = input(false, { alias: 'disabled', transform: booleanAttribute });\n readonly indicatorPosition = input<FrSelectIndicatorPosition>('start');\n readonly invalidInput = input(false, { alias: 'invalid', transform: booleanAttribute });\n readonly disabled = computed(() => this.disabledInput() || this.formDisabled());\n readonly invalid = computed(() => this.invalidInput() || this.formInvalid());\n\n readonly displayValue = computed(() => {\n const value = this.value();\n\n if (value === null) {\n return null;\n }\n\n return this.selectedLabel() ?? this.labels.get(value) ?? value;\n });\n\n constructor() {\n super();\n\n effect(() => {\n const content = this.dropdownTrigger.menuContent() as FrSelectContent | null;\n\n if (content) {\n content.select = this;\n content.setDebugVisibleOverride(this.debugVisible() ? true : null);\n content.setTriggerWidth(this.elementRef.nativeElement.offsetWidth);\n content.ensureItemsRegistered();\n }\n });\n\n queueMicrotask(() => {\n this.attachResizeObserver();\n });\n\n this.destroyRef.onDestroy(() => {\n this.resizeObserver?.disconnect();\n });\n }\n\n registerItem(value: string | null, label: string): void {\n this.labels.set(value, label);\n\n if (this.value() === value) {\n this.selectedLabel.set(label);\n }\n }\n\n selectValue(value: string | null, label: string): void {\n this.labels.set(value, label);\n this.selectedLabel.set(label);\n this.value.set(value);\n this.notifyValueChange(value);\n this.markAsTouched();\n }\n\n protected setViewValue(value: string | null): void {\n this.value.set(value);\n\n if (value === null) {\n this.selectedLabel.set(null);\n return;\n }\n\n this.selectedLabel.set(this.labels.get(value) ?? null);\n }\n\n private attachResizeObserver(): void {\n if (typeof ResizeObserver === 'undefined') {\n return;\n }\n\n const element = this.elementRef.nativeElement;\n\n this.resizeObserver = new ResizeObserver(() => {\n const content = this.dropdownTrigger.menuContent() as FrSelectContent | null;\n content?.setTriggerWidth(element.offsetWidth);\n });\n this.resizeObserver.observe(element);\n }\n}\n\r\n","import { Directive, booleanAttribute, computed, inject, input } from '@angular/core';\r\n\r\nimport { FrSelect } from './select.root';\r\n\r\nexport const FR_SELECT_ICON_POSITIONS = ['leading', 'trailing'] as const;\r\nexport type FrSelectIconPosition = (typeof FR_SELECT_ICON_POSITIONS)[number];\r\n\r\n@Directive({\r\n selector: '[frSelectValue], frame-select-value',\r\n host: {\r\n class: 'frame-select__value',\r\n '[attr.data-placeholder]': 'isPlaceholder() ? \"\" : null',\r\n '[textContent]': 'displayText()',\r\n },\r\n})\r\nexport class FrSelectValue {\r\n private readonly select = inject(FrSelect);\r\n\r\n readonly placeholder = input('Select an option');\r\n\r\n protected readonly isPlaceholder = computed(() => this.select.displayValue() === null);\r\n protected readonly displayText = computed(() => this.select.displayValue() ?? this.placeholder());\r\n}\r\n\r\n@Directive({\r\n selector: '[frSelectItemIndicator], frame-select-item-indicator',\r\n host: {\r\n class: 'frame-select__item-indicator',\r\n 'aria-hidden': 'true',\r\n },\r\n})\r\nexport class FrSelectItemIndicator {}\r\n\r\n@Directive({\r\n selector: '[frSelectIcon], frame-select-icon',\r\n host: {\r\n class: 'frame-select__icon',\r\n 'aria-hidden': 'true',\r\n '[attr.data-position]': 'position()',\r\n },\r\n})\r\nexport class FrSelectIcon {\r\n readonly position = input<FrSelectIconPosition>('trailing');\r\n}\r\n\r\n@Directive({\r\n selector: '[frSelectError], frame-select-error',\r\n host: {\r\n class: 'frame-select__error',\r\n 'aria-live': 'polite',\r\n },\r\n})\r\nexport class FrSelectError {}\r\n","import { Directive, ElementRef, contentChild, inject, input } from '@angular/core';\r\n\r\nimport {\r\n FrDropdownMenuItem,\r\n FrDropdownMenuLabel,\r\n FrDropdownMenuSeparator,\r\n} from '@frame-ui-ng/components/dropdown-menu';\r\nimport { FrSelectContent } from './select.content';\r\nimport { FrSelectItemIndicator } from './select.value';\r\n\r\n@Directive({\r\n selector: '[frSelectGroup], frame-select-group',\r\n host: {\r\n class: 'frame-select__group',\r\n },\r\n})\r\nexport class FrSelectGroup {}\r\n\r\n@Directive({\r\n selector: '[frSelectLabel], frame-select-label',\r\n hostDirectives: [FrDropdownMenuLabel],\r\n host: {\r\n class: 'frame-select__label',\r\n },\r\n})\r\nexport class FrSelectLabel {}\r\n\r\n@Directive({\r\n selector: '[frSelectSeparator], frame-select-separator',\r\n hostDirectives: [FrDropdownMenuSeparator],\r\n host: {\r\n class: 'frame-select__separator',\r\n },\r\n})\r\nexport class FrSelectSeparator {}\r\n\r\n@Directive({\r\n selector: 'button[frSelectItem]',\r\n hostDirectives: [FrDropdownMenuItem],\r\n host: {\r\n class: 'frame-select__item',\r\n '[attr.data-has-custom-indicator]': 'customIndicator() ? \"\" : null',\r\n '[attr.data-indicator-position]': 'indicatorPosition()',\r\n '[attr.data-state]': 'isSelected() ? \"checked\" : \"unchecked\"',\r\n '(click)': 'handleClick()',\r\n },\r\n})\r\nexport class FrSelectItem {\r\n private readonly elementRef = inject(ElementRef<HTMLElement>);\r\n private readonly content = inject(FrSelectContent);\r\n protected readonly customIndicator = contentChild(FrSelectItemIndicator);\r\n\r\n readonly itemLabel = input<string | null>(null, { alias: 'label' });\r\n readonly value = input.required<string | null>();\r\n\r\n protected indicatorPosition() {\r\n return this.content.select?.indicatorPosition() ?? 'start';\r\n }\r\n\r\n protected isSelected(): boolean {\r\n return this.content.select?.value() === this.value();\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this.content.select?.registerItem(this.value(), this.resolveLabel());\r\n }\r\n\r\n protected handleClick(): void {\r\n this.content.select?.selectValue(this.value(), this.resolveLabel());\r\n }\r\n\r\n private resolveLabel(): string {\r\n if (this.itemLabel() !== null) {\r\n return this.itemLabel()!;\r\n }\r\n\r\n const parts = Array.from(this.elementRef.nativeElement.children as HTMLCollectionOf<HTMLElement>)\r\n .filter((child) => !child.classList.contains('frame-select__item-indicator'))\r\n .map((child) => child.textContent?.trim() ?? '')\r\n .filter(Boolean);\r\n\r\n if (parts.length > 0) {\r\n return parts.join(' ');\r\n }\r\n\r\n return this.elementRef.nativeElement.textContent?.trim() ?? this.value();\r\n }\r\n}\r\n\r\n","import { NgModule } from '@angular/core';\nimport {\n FrSelect,\n FrSelectContent,\n FrSelectError,\n FrSelectGroup,\n FrSelectIcon,\n FrSelectItem,\n FrSelectItemIndicator,\n FrSelectLabel,\n FrSelectPanel,\n FrSelectSeparator,\n FrSelectValue,\n} from './src/select';\n\n@NgModule({\n imports: [\n FrSelect,\n FrSelectContent,\n FrSelectError,\n FrSelectGroup,\n FrSelectIcon,\n FrSelectItem,\n FrSelectItemIndicator,\n FrSelectLabel,\n FrSelectPanel,\n FrSelectSeparator,\n FrSelectValue,\n ],\n exports: [\n FrSelect,\n FrSelectContent,\n FrSelectError,\n FrSelectGroup,\n FrSelectIcon,\n FrSelectItem,\n FrSelectItemIndicator,\n FrSelectLabel,\n FrSelectPanel,\n FrSelectSeparator,\n FrSelectValue,\n ],\n})\nexport class FrSelectModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"frame-ui-ng-components-select.mjs","sources":["../../../projects/components/select/src/select.content.ts","../../../projects/components/select/src/select.root.ts","../../../projects/components/select/src/select.value.ts","../../../projects/components/select/src/select.items.ts","../../../projects/components/select/select.module.ts","../../../projects/components/select/frame-ui-ng-components-select.ts"],"sourcesContent":["import { DestroyRef, Directive, EmbeddedViewRef, ViewContainerRef, inject, input, signal } from '@angular/core';\r\n\r\nimport {\r\n FR_DROPDOWN_MENU_CONTENT,\r\n FrDropdownMenuContent,\r\n FrDropdownMenuPanel,\r\n} from '@frame-ui-ng/components/dropdown-menu';\r\nimport { buildConnectedPositions } from '@frame-ui-ng/components/dropdown-menu';\r\nimport { FR_DROPDOWN_MENU_PARENT, FrDropdownMenuTree } from '@frame-ui-ng/components/dropdown-menu';\r\nimport { FrSelect } from './select.root';\r\n\r\nexport const FR_SELECT_POSITIONS = ['item-aligned', 'popper'] as const;\r\nexport type FrSelectPosition = (typeof FR_SELECT_POSITIONS)[number];\r\n\r\n/** Content slot for select. */\r\n@Directive({\r\n selector: 'ng-template[frSelectContent]',\r\n exportAs: 'frSelectContent',\r\n providers: [\r\n {\r\n provide: FR_DROPDOWN_MENU_CONTENT,\r\n useExisting: FrSelectContent,\r\n },\r\n FrDropdownMenuTree,\r\n {\r\n provide: FR_DROPDOWN_MENU_PARENT,\r\n useValue: {\r\n closeDelay: () => 0,\r\n triggerMode: () => 'click',\r\n },\r\n },\r\n ],\r\n})\r\nexport class FrSelectContent extends FrDropdownMenuContent {\r\n private readonly destroyRef = inject(DestroyRef);\r\n private readonly viewContainerRef = inject(ViewContainerRef);\r\n private readonly debugVisibleOverride = signal<boolean | null>(null);\r\n private readonly triggerWidth = signal<number | null>(null);\r\n private registrationView: EmbeddedViewRef<unknown> | null = null;\r\n\r\n readonly position = input<FrSelectPosition>('item-aligned');\r\n\r\n select: FrSelect | null = null;\r\n\r\n constructor() {\r\n super();\r\n\r\n this.destroyRef.onDestroy(() => {\r\n this.registrationView?.destroy();\r\n });\r\n }\r\n\r\n setDebugVisibleOverride(value: boolean | null): void {\r\n this.debugVisibleOverride.set(value);\r\n }\r\n\r\n override isDebugVisible(): boolean {\r\n return this.debugVisibleOverride() ?? this.debugVisible();\r\n }\r\n\r\n setTriggerWidth(value: number | null): void {\r\n this.triggerWidth.set(value);\r\n }\r\n\r\n ensureItemsRegistered(): void {\r\n if (this.registrationView) {\r\n return;\r\n }\r\n\r\n // Render once offscreen so projected items can register before the menu opens.\r\n this.registrationView = this.viewContainerRef.createEmbeddedView(this.templateRef);\r\n this.registrationView.detectChanges();\r\n\r\n const index = this.viewContainerRef.indexOf(this.registrationView);\r\n\r\n if (index >= 0) {\r\n // Keep registrations alive without inserting the template into the DOM twice.\r\n this.viewContainerRef.detach(index);\r\n }\r\n }\r\n\r\n panelMinWidth(): number | null {\r\n if (this.position() !== 'item-aligned') {\r\n return null;\r\n }\r\n\r\n return this.triggerWidth();\r\n }\r\n\r\n override getPositions(isSubmenu: boolean) {\r\n if (this.position() === 'item-aligned') {\r\n return buildConnectedPositions({\r\n align: this.align(),\r\n alignOffset: 0,\r\n isSubmenu,\r\n side: this.side(),\r\n sideOffset: 4,\r\n });\r\n }\r\n\r\n return super.getPositions(isSubmenu);\r\n }\r\n}\r\n\r\n/** Panel slot for select. */\r\n@Directive({\r\n selector: '[frSelectPanel], frame-select-panel',\r\n hostDirectives: [FrDropdownMenuPanel],\r\n host: {\r\n class: 'frame-select__content',\r\n '[attr.data-position]': 'content.position()',\r\n '[style.min-width.px]': 'content.panelMinWidth()',\r\n },\r\n})\r\nexport class FrSelectPanel {\r\n protected readonly content = inject(FrSelectContent);\r\n}\r\n\r\n","import {\r\n AfterViewChecked,\r\n DoCheck,\r\n DestroyRef,\r\n Directive,\r\n ElementRef,\r\n afterNextRender,\r\n booleanAttribute,\r\n computed,\r\n inject,\r\n input,\r\n model,\r\n signal,\r\n} from '@angular/core';\r\n\r\nimport { FrDropdownMenu } from '@frame-ui-ng/components/dropdown-menu';\r\nimport { FrDropdownMenuTrigger } from '@frame-ui-ng/components/dropdown-menu';\r\nimport { FrControlValueAccessor, provideDsValueAccessor } from '@frame-ui-ng/components/forms';\r\nimport { FrSelectContent } from './select.content';\r\n\r\nexport const FR_SELECT_INDICATOR_POSITIONS = ['start', 'end'] as const;\r\nexport type FrSelectIndicatorPosition = (typeof FR_SELECT_INDICATOR_POSITIONS)[number];\r\n\r\n/** Select control backed by dropdown menu primitives. */\r\n@Directive({\r\n selector: 'button[frSelect]',\r\n hostDirectives: [\r\n {\r\n directive: FrDropdownMenu,\r\n inputs: ['closeDelay', 'triggerMode'],\r\n },\r\n {\r\n directive: FrDropdownMenuTrigger,\r\n },\r\n ],\r\n providers: [provideDsValueAccessor(FrSelect)],\r\n host: {\r\n class: 'frame-select__trigger',\r\n '[attr.aria-disabled]': 'disabled() ? \"true\" : null',\r\n '[attr.aria-invalid]': 'invalid() ? \"true\" : null',\r\n '[attr.data-disabled]': 'disabled() ? \"\" : null',\r\n '[attr.data-invalid]': 'invalid() ? \"\" : null',\r\n '[attr.disabled]': 'disabled() ? \"\" : null',\r\n 'aria-autocomplete': 'none',\r\n 'aria-haspopup': 'listbox',\r\n type: 'button',\r\n role: 'combobox',\r\n },\r\n})\r\nexport class FrSelect extends FrControlValueAccessor<string | null> implements AfterViewChecked, DoCheck {\r\n private readonly destroyRef = inject(DestroyRef);\r\n private readonly dropdownTrigger = inject(FrDropdownMenuTrigger);\r\n private readonly elementRef = inject<ElementRef<HTMLButtonElement>>(ElementRef);\r\n private readonly selectedLabel = signal<string | null>(null);\r\n private readonly labels = new Map<string | null, string>();\r\n private lastContent: FrSelectContent | null = null;\r\n private lastContentDebugVisible = false;\r\n private lastDebugVisible = false;\r\n private lastTriggerWidth = 0;\r\n private resizeObserver: ResizeObserver | null = null;\r\n\r\n readonly value = model<string | null>(null);\r\n readonly menuContent = input<FrSelectContent | null>(null, { alias: 'frSelect' });\r\n readonly debugVisible = input(false, { transform: booleanAttribute });\r\n readonly disabledInput = input(false, { alias: 'disabled', transform: booleanAttribute });\r\n readonly indicatorPosition = input<FrSelectIndicatorPosition>('start');\r\n readonly invalidInput = input(false, { alias: 'invalid', transform: booleanAttribute });\r\n readonly disabled = computed(() => this.disabledInput() || this.formDisabled());\r\n readonly invalid = computed(() => this.invalidInput() || this.formInvalid());\r\n\r\n readonly displayValue = computed(() => {\r\n const value = this.value();\r\n\r\n if (value === null) {\r\n return null;\r\n }\r\n\r\n return this.selectedLabel() ?? this.labels.get(value) ?? value;\r\n });\r\n\r\n constructor() {\r\n super();\r\n\r\n afterNextRender(() => this.syncContent());\r\n\r\n queueMicrotask(() => {\r\n this.syncContent();\r\n this.attachResizeObserver();\r\n });\r\n\r\n this.destroyRef.onDestroy(() => {\r\n this.resizeObserver?.disconnect();\r\n });\r\n }\r\n\r\n ngDoCheck(): void {\r\n this.syncContent();\r\n }\r\n\r\n ngAfterViewChecked(): void {\r\n this.syncContent();\r\n }\r\n\r\n registerItem(value: string | null, label: string): void {\r\n this.labels.set(value, label);\r\n\r\n if (this.value() === value) {\r\n this.selectedLabel.set(label);\r\n }\r\n }\r\n\r\n selectValue(value: string | null, label: string): void {\r\n this.labels.set(value, label);\r\n this.selectedLabel.set(label);\r\n this.value.set(value);\r\n this.notifyValueChange(value);\r\n this.markAsTouched();\r\n }\r\n\r\n protected setViewValue(value: string | null): void {\r\n this.value.set(value);\r\n\r\n if (value === null) {\r\n this.selectedLabel.set(null);\r\n return;\r\n }\r\n\r\n this.selectedLabel.set(this.labels.get(value) ?? null);\r\n }\r\n\r\n private attachResizeObserver(): void {\r\n if (typeof ResizeObserver === 'undefined') {\r\n return;\r\n }\r\n\r\n const element = this.elementRef.nativeElement;\r\n\r\n this.resizeObserver = new ResizeObserver(() => {\r\n const content = this.resolveContent();\r\n content?.setTriggerWidth(element.offsetWidth);\r\n });\r\n this.resizeObserver.observe(element);\r\n }\r\n\r\n private syncContent(): void {\r\n const content = this.resolveContent();\r\n\r\n if (!content) {\r\n this.lastContent = null;\r\n this.dropdownTrigger.setMenuContentOverride(null);\r\n return;\r\n }\r\n\r\n const debugVisible = this.debugVisible();\r\n const contentDebugVisible = debugVisible || content.debugVisible();\r\n const triggerWidth = this.elementRef.nativeElement.offsetWidth;\r\n\r\n if (\r\n content === this.lastContent &&\r\n debugVisible === this.lastDebugVisible &&\r\n contentDebugVisible === this.lastContentDebugVisible &&\r\n triggerWidth === this.lastTriggerWidth\r\n ) {\r\n return;\r\n }\r\n\r\n content.select = this;\r\n content.setDebugVisibleOverride(debugVisible ? true : null);\r\n content.setTriggerWidth(triggerWidth);\r\n content.ensureItemsRegistered();\r\n this.dropdownTrigger.setMenuContentOverride(content);\r\n\r\n if (content.isDebugVisible()) {\r\n queueMicrotask(() => this.dropdownTrigger.open());\r\n }\r\n\r\n this.lastContent = content;\r\n this.lastContentDebugVisible = contentDebugVisible;\r\n this.lastDebugVisible = debugVisible;\r\n this.lastTriggerWidth = triggerWidth;\r\n }\r\n\r\n private resolveContent(): FrSelectContent | null {\r\n return this.menuContent() ?? (this.dropdownTrigger.menuContent() as FrSelectContent | null);\r\n }\r\n}\r\n\r\n\r\n","import { Directive, booleanAttribute, computed, inject, input } from '@angular/core';\r\n\r\nimport { FrSelect } from './select.root';\r\n\r\nexport const FR_SELECT_ICON_POSITIONS = ['leading', 'trailing'] as const;\r\nexport type FrSelectIconPosition = (typeof FR_SELECT_ICON_POSITIONS)[number];\r\n\r\n/** Value slot for select. */\r\n@Directive({\r\n selector: '[frSelectValue], frame-select-value',\r\n host: {\r\n class: 'frame-select__value',\r\n '[attr.data-placeholder]': 'isPlaceholder() ? \"\" : null',\r\n '[textContent]': 'displayText()',\r\n },\r\n})\r\nexport class FrSelectValue {\r\n private readonly select = inject(FrSelect);\r\n\r\n readonly placeholder = input('Select an option');\r\n\r\n protected readonly isPlaceholder = computed(() => this.select.displayValue() === null);\r\n protected readonly displayText = computed(() => this.select.displayValue() ?? this.placeholder());\r\n}\r\n\r\n/** Indicator slot for select item. */\r\n@Directive({\r\n selector: '[frSelectItemIndicator], frame-select-item-indicator',\r\n host: {\r\n class: 'frame-select__item-indicator',\r\n 'aria-hidden': 'true',\r\n },\r\n})\r\nexport class FrSelectItemIndicator {}\r\n\r\n/** Icon slot for select. */\r\n@Directive({\r\n selector: '[frSelectIcon], frame-select-icon',\r\n host: {\r\n class: 'frame-select__icon',\r\n 'aria-hidden': 'true',\r\n '[attr.data-position]': 'position()',\r\n },\r\n})\r\nexport class FrSelectIcon {\r\n readonly position = input<FrSelectIconPosition>('trailing');\r\n}\r\n\r\n/** Error slot for select. */\r\n@Directive({\r\n selector: '[frSelectError], frame-select-error',\r\n host: {\r\n class: 'frame-select__error',\r\n 'aria-live': 'polite',\r\n },\r\n})\r\nexport class FrSelectError {}\r\n","import { Directive, ElementRef, contentChild, inject, input } from '@angular/core';\r\n\r\nimport {\r\n FrDropdownMenuItem,\r\n FrDropdownMenuLabel,\r\n FrDropdownMenuSeparator,\r\n} from '@frame-ui-ng/components/dropdown-menu';\r\nimport { FrSelectContent } from './select.content';\r\nimport { FrSelectItemIndicator } from './select.value';\r\n\r\n/** Group slot for select. */\r\n@Directive({\r\n selector: '[frSelectGroup], frame-select-group',\r\n host: {\r\n class: 'frame-select__group',\r\n },\r\n})\r\nexport class FrSelectGroup {}\r\n\r\n/** Label slot for select. */\r\n@Directive({\r\n selector: '[frSelectLabel], frame-select-label',\r\n hostDirectives: [FrDropdownMenuLabel],\r\n host: {\r\n class: 'frame-select__label',\r\n },\r\n})\r\nexport class FrSelectLabel {}\r\n\r\n/** Separator slot for select. */\r\n@Directive({\r\n selector: '[frSelectSeparator], frame-select-separator',\r\n hostDirectives: [FrDropdownMenuSeparator],\r\n host: {\r\n class: 'frame-select__separator',\r\n },\r\n})\r\nexport class FrSelectSeparator {}\r\n\r\n/** Item slot for select. */\r\n@Directive({\r\n selector: 'button[frSelectItem]',\r\n hostDirectives: [FrDropdownMenuItem],\r\n host: {\r\n class: 'frame-select__item',\r\n '[attr.data-has-custom-indicator]': 'customIndicator() ? \"\" : null',\r\n '[attr.data-indicator-position]': 'indicatorPosition()',\r\n '[attr.data-state]': 'isSelected() ? \"checked\" : \"unchecked\"',\r\n '(click)': 'handleClick()',\r\n },\r\n})\r\nexport class FrSelectItem {\r\n private readonly elementRef = inject(ElementRef<HTMLElement>);\r\n private readonly content = inject(FrSelectContent);\r\n protected readonly customIndicator = contentChild(FrSelectItemIndicator);\r\n\r\n readonly itemLabel = input<string | null>(null, { alias: 'label' });\r\n readonly value = input.required<string | null>();\r\n\r\n protected indicatorPosition() {\r\n return this.content.select?.indicatorPosition() ?? 'start';\r\n }\r\n\r\n protected isSelected(): boolean {\r\n return this.content.select?.value() === this.value();\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this.content.select?.registerItem(this.value(), this.resolveLabel());\r\n }\r\n\r\n protected handleClick(): void {\r\n this.content.select?.selectValue(this.value(), this.resolveLabel());\r\n }\r\n\r\n private resolveLabel(): string {\r\n if (this.itemLabel() !== null) {\r\n return this.itemLabel()!;\r\n }\r\n\r\n const parts = Array.from(this.elementRef.nativeElement.children as HTMLCollectionOf<HTMLElement>)\r\n .filter((child) => !child.classList.contains('frame-select__item-indicator'))\r\n .map((child) => child.textContent?.trim() ?? '')\r\n .filter(Boolean);\r\n\r\n if (parts.length > 0) {\r\n return parts.join(' ');\r\n }\r\n\r\n return this.elementRef.nativeElement.textContent?.trim() ?? this.value();\r\n }\r\n}\r\n\r\n","import { NgModule } from '@angular/core';\nimport {\n FrSelect,\n FrSelectContent,\n FrSelectError,\n FrSelectGroup,\n FrSelectIcon,\n FrSelectItem,\n FrSelectItemIndicator,\n FrSelectLabel,\n FrSelectPanel,\n FrSelectSeparator,\n FrSelectValue,\n} from './src/select';\n\n@NgModule({\n imports: [\n FrSelect,\n FrSelectContent,\n FrSelectError,\n FrSelectGroup,\n FrSelectIcon,\n FrSelectItem,\n FrSelectItemIndicator,\n FrSelectLabel,\n FrSelectPanel,\n FrSelectSeparator,\n FrSelectValue,\n ],\n exports: [\n FrSelect,\n FrSelectContent,\n FrSelectError,\n FrSelectGroup,\n FrSelectIcon,\n FrSelectItem,\n FrSelectItemIndicator,\n FrSelectLabel,\n FrSelectPanel,\n FrSelectSeparator,\n FrSelectValue,\n ],\n})\nexport class FrSelectModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -5,6 +5,7 @@ const FR_SEPARATOR_ORIENTATIONS = ['horizontal', 'vertical'];
5
5
  function coerceSeparatorOrientation(value) {
6
6
  return value === 'vertical' ? 'vertical' : 'horizontal';
7
7
  }
8
+ /** Visual or semantic separator with orientation support. */
8
9
  class FrSeparator {
9
10
  orientation = input('horizontal', { ...(ngDevMode ? { debugName: "orientation" } : /* istanbul ignore next */ {}), transform: coerceSeparatorOrientation });
10
11
  decorative = input(true, { ...(ngDevMode ? { debugName: "decorative" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
@@ -1 +1 @@
1
- {"version":3,"file":"frame-ui-ng-components-separator.mjs","sources":["../../../projects/components/separator/src/separator.ts","../../../projects/components/separator/separator.module.ts","../../../projects/components/separator/frame-ui-ng-components-separator.ts"],"sourcesContent":["import { booleanAttribute, Directive, input } from '@angular/core';\n\nexport const FR_SEPARATOR_ORIENTATIONS = ['horizontal', 'vertical'] as const;\n\nexport type FrSeparatorOrientation = (typeof FR_SEPARATOR_ORIENTATIONS)[number];\n\nfunction coerceSeparatorOrientation(value: unknown): FrSeparatorOrientation {\n return value === 'vertical' ? 'vertical' : 'horizontal';\n}\n\n@Directive({\n selector: '[frSeparator], frame-separator',\n exportAs: 'frSeparator',\n host: {\n class: 'frame-separator',\n '[attr.data-orientation]': 'orientation()',\n '[attr.data-decorative]': 'decorative()',\n '[attr.role]': 'decorative() ? \"presentation\" : \"separator\"',\n '[attr.aria-orientation]': 'decorative() ? null : orientation()',\n },\n})\nexport class FrSeparator {\n readonly orientation = input<FrSeparatorOrientation, unknown>('horizontal', {\n transform: coerceSeparatorOrientation,\n });\n\n readonly decorative = input(true, { transform: booleanAttribute });\n}\n","import { NgModule } from '@angular/core';\nimport {\n FrSeparator,\n} from './src/separator';\n\n@NgModule({\n imports: [\n FrSeparator,\n ],\n exports: [\n FrSeparator,\n ],\n})\nexport class FrSeparatorModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;MAEa,yBAAyB,GAAG,CAAC,YAAY,EAAE,UAAU;AAIlE,SAAS,0BAA0B,CAAC,KAAc,EAAA;IAChD,OAAO,KAAK,KAAK,UAAU,GAAG,UAAU,GAAG,YAAY;AACzD;MAaa,WAAW,CAAA;IACb,WAAW,GAAG,KAAK,CAAkC,YAAY,mFACxE,SAAS,EAAE,0BAA0B,EAAA,CACrC;IAEO,UAAU,GAAG,KAAK,CAAC,IAAI,kFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;wGALvD,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAX,WAAW,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gCAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,uBAAA,EAAA,eAAA,EAAA,sBAAA,EAAA,cAAA,EAAA,WAAA,EAAA,iDAAA,EAAA,uBAAA,EAAA,qCAAA,EAAA,EAAA,cAAA,EAAA,iBAAA,EAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAAX,WAAW,EAAA,UAAA,EAAA,CAAA;kBAXvB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,gCAAgC;AAC1C,oBAAA,QAAQ,EAAE,aAAa;AACvB,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,iBAAiB;AACxB,wBAAA,yBAAyB,EAAE,eAAe;AAC1C,wBAAA,wBAAwB,EAAE,cAAc;AACxC,wBAAA,aAAa,EAAE,6CAA6C;AAC5D,wBAAA,yBAAyB,EAAE,qCAAqC;AACjE,qBAAA;AACF,iBAAA;;;MCPY,iBAAiB,CAAA;wGAAjB,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;yGAAjB,iBAAiB,EAAA,OAAA,EAAA,CAN1B,WAAW,CAAA,EAAA,OAAA,EAAA,CAGX,WAAW,CAAA,EAAA,CAAA;yGAGF,iBAAiB,EAAA,CAAA;;4FAAjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAR7B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE;wBACP,WAAW;AACZ,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,WAAW;AACZ,qBAAA;AACF,iBAAA;;;ACZD;;AAEG;;;;"}
1
+ {"version":3,"file":"frame-ui-ng-components-separator.mjs","sources":["../../../projects/components/separator/src/separator.ts","../../../projects/components/separator/separator.module.ts","../../../projects/components/separator/frame-ui-ng-components-separator.ts"],"sourcesContent":["import { booleanAttribute, Directive, input } from '@angular/core';\r\n\r\nexport const FR_SEPARATOR_ORIENTATIONS = ['horizontal', 'vertical'] as const;\r\n\r\nexport type FrSeparatorOrientation = (typeof FR_SEPARATOR_ORIENTATIONS)[number];\r\n\r\nfunction coerceSeparatorOrientation(value: unknown): FrSeparatorOrientation {\r\n return value === 'vertical' ? 'vertical' : 'horizontal';\r\n}\r\n\r\n/** Visual or semantic separator with orientation support. */\r\n@Directive({\r\n selector: '[frSeparator], frame-separator',\r\n exportAs: 'frSeparator',\r\n host: {\r\n class: 'frame-separator',\r\n '[attr.data-orientation]': 'orientation()',\r\n '[attr.data-decorative]': 'decorative()',\r\n '[attr.role]': 'decorative() ? \"presentation\" : \"separator\"',\r\n '[attr.aria-orientation]': 'decorative() ? null : orientation()',\r\n },\r\n})\r\nexport class FrSeparator {\r\n readonly orientation = input<FrSeparatorOrientation, unknown>('horizontal', {\r\n transform: coerceSeparatorOrientation,\r\n });\r\n\r\n readonly decorative = input(true, { transform: booleanAttribute });\r\n}\r\n\r\n","import { NgModule } from '@angular/core';\nimport {\n FrSeparator,\n} from './src/separator';\n\n@NgModule({\n imports: [\n FrSeparator,\n ],\n exports: [\n FrSeparator,\n ],\n})\nexport class FrSeparatorModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;MAEa,yBAAyB,GAAG,CAAC,YAAY,EAAE,UAAU;AAIlE,SAAS,0BAA0B,CAAC,KAAc,EAAA;IAChD,OAAO,KAAK,KAAK,UAAU,GAAG,UAAU,GAAG,YAAY;AACzD;AAEA;MAYa,WAAW,CAAA;IACb,WAAW,GAAG,KAAK,CAAkC,YAAY,mFACxE,SAAS,EAAE,0BAA0B,EAAA,CACrC;IAEO,UAAU,GAAG,KAAK,CAAC,IAAI,kFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;wGALvD,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAX,WAAW,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gCAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,uBAAA,EAAA,eAAA,EAAA,sBAAA,EAAA,cAAA,EAAA,WAAA,EAAA,iDAAA,EAAA,uBAAA,EAAA,qCAAA,EAAA,EAAA,cAAA,EAAA,iBAAA,EAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAAX,WAAW,EAAA,UAAA,EAAA,CAAA;kBAXvB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,gCAAgC;AAC1C,oBAAA,QAAQ,EAAE,aAAa;AACvB,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,iBAAiB;AACxB,wBAAA,yBAAyB,EAAE,eAAe;AAC1C,wBAAA,wBAAwB,EAAE,cAAc;AACxC,wBAAA,aAAa,EAAE,6CAA6C;AAC5D,wBAAA,yBAAyB,EAAE,qCAAqC;AACjE,qBAAA;AACF,iBAAA;;;MCRY,iBAAiB,CAAA;wGAAjB,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;yGAAjB,iBAAiB,EAAA,OAAA,EAAA,CAN1B,WAAW,CAAA,EAAA,OAAA,EAAA,CAGX,WAAW,CAAA,EAAA,CAAA;yGAGF,iBAAiB,EAAA,CAAA;;4FAAjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAR7B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE;wBACP,WAAW;AACZ,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,WAAW;AACZ,qBAAA;AACF,iBAAA;;;ACZD;;AAEG;;;;"}
@@ -5,6 +5,7 @@ import { NgComponentOutlet } from '@angular/common';
5
5
  import { FrButton, FrButtonLabel } from '@frame-ui-ng/components/button';
6
6
  import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
7
7
 
8
+ /** Content slot for sheet. */
8
9
  class FrSheetContent {
9
10
  templateRef = inject((TemplateRef));
10
11
  ariaLabel = input(null, { ...(ngDevMode ? { debugName: "ariaLabel" } : /* istanbul ignore next */ {}), alias: 'aria-label' });
@@ -61,6 +62,7 @@ const FR_SHEET_SIDES = ['top', 'right', 'bottom', 'left'];
61
62
  function coerceSheetSide(value) {
62
63
  return value === 'top' || value === 'bottom' || value === 'left' ? value : 'right';
63
64
  }
65
+ /** Close control for sheet. */
64
66
  class FrSheetClose {
65
67
  dialogRef = inject(DialogRef, { optional: true });
66
68
  result = input(undefined, { ...(ngDevMode ? { debugName: "result" } : /* istanbul ignore next */ {}), alias: 'frSheetClose' });
@@ -80,19 +82,24 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
80
82
  },
81
83
  }]
82
84
  }], propDecorators: { result: [{ type: i0.Input, args: [{ isSignal: true, alias: "frSheetClose", required: false }] }] } });
85
+ /** Panel slot for sheet. */
83
86
  class FrSheetPanel {
87
+ dialogRef = inject(DialogRef, { optional: true });
84
88
  scrollable = input(false, { ...(ngDevMode ? { debugName: "scrollable" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
85
89
  showCloseButton = input(true, { ...(ngDevMode ? { debugName: "showCloseButton" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
86
90
  side = input('right', { ...(ngDevMode ? { debugName: "side" } : /* istanbul ignore next */ {}), transform: coerceSheetSide });
87
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrSheetPanel, deps: [], target: i0.ɵɵFactoryTarget.Component });
88
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.16", type: FrSheetPanel, isStandalone: true, selector: "[frSheetPanel], frame-sheet-panel", inputs: { scrollable: { classPropertyName: "scrollable", publicName: "scrollable", isSignal: true, isRequired: false, transformFunction: null }, showCloseButton: { classPropertyName: "showCloseButton", publicName: "showCloseButton", isSignal: true, isRequired: false, transformFunction: null }, side: { classPropertyName: "side", publicName: "side", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "attr.data-scrollable": "scrollable() ? \"\" : null", "attr.data-side": "side()" }, classAttribute: "frame-sheet__panel" }, ngImport: i0, template: `
89
- <ng-content />
90
- @if (showCloseButton()) {
91
- <button class="frame-sheet__close" frSheetClose type="button" aria-label="Close sheet">
92
- <span aria-hidden="true">×</span>
93
- </button>
91
+ close() {
92
+ this.dialogRef?.close();
94
93
  }
95
- `, isInline: true, dependencies: [{ kind: "directive", type: FrSheetClose, selector: "[frSheetClose]", inputs: ["frSheetClose"] }] });
94
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrSheetPanel, deps: [], target: i0.ɵɵFactoryTarget.Component });
95
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.16", type: FrSheetPanel, isStandalone: true, selector: "[frSheetPanel], frame-sheet-panel", inputs: { scrollable: { classPropertyName: "scrollable", publicName: "scrollable", isSignal: true, isRequired: false, transformFunction: null }, showCloseButton: { classPropertyName: "showCloseButton", publicName: "showCloseButton", isSignal: true, isRequired: false, transformFunction: null }, side: { classPropertyName: "side", publicName: "side", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "attr.data-scrollable": "scrollable() ? \"\" : null", "attr.data-side": "side()" }, classAttribute: "frame-sheet__panel" }, ngImport: i0, template: `
96
+ <ng-content />
97
+ @if (showCloseButton()) {
98
+ <button class="frame-sheet__close" type="button" aria-label="Close sheet" (click)="close()">
99
+ <span aria-hidden="true">×</span>
100
+ </button>
101
+ }
102
+ `, isInline: true });
96
103
  }
97
104
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrSheetPanel, decorators: [{
98
105
  type: Component,
@@ -103,17 +110,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
103
110
  '[attr.data-scrollable]': 'scrollable() ? "" : null',
104
111
  '[attr.data-side]': 'side()',
105
112
  },
106
- template: `
107
- <ng-content />
108
- @if (showCloseButton()) {
109
- <button class="frame-sheet__close" frSheetClose type="button" aria-label="Close sheet">
110
- <span aria-hidden="true">×</span>
111
- </button>
112
- }
113
+ template: `
114
+ <ng-content />
115
+ @if (showCloseButton()) {
116
+ <button class="frame-sheet__close" type="button" aria-label="Close sheet" (click)="close()">
117
+ <span aria-hidden="true">×</span>
118
+ </button>
119
+ }
113
120
  `,
114
- imports: [FrSheetClose],
115
121
  }]
116
122
  }], propDecorators: { scrollable: [{ type: i0.Input, args: [{ isSignal: true, alias: "scrollable", required: false }] }], showCloseButton: [{ type: i0.Input, args: [{ isSignal: true, alias: "showCloseButton", required: false }] }], side: [{ type: i0.Input, args: [{ isSignal: true, alias: "side", required: false }] }] } });
123
+ /** Header slot for sheet. */
117
124
  class FrSheetHeader {
118
125
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrSheetHeader, deps: [], target: i0.ɵɵFactoryTarget.Directive });
119
126
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrSheetHeader, isStandalone: true, selector: "[frSheetHeader], frame-sheet-header", host: { classAttribute: "frame-sheet__header" }, ngImport: i0 });
@@ -127,6 +134,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
127
134
  },
128
135
  }]
129
136
  }] });
137
+ /** Body slot for sheet. */
130
138
  class FrSheetBody {
131
139
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrSheetBody, deps: [], target: i0.ɵɵFactoryTarget.Directive });
132
140
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrSheetBody, isStandalone: true, selector: "[frSheetBody], frame-sheet-body", host: { classAttribute: "frame-sheet__body" }, ngImport: i0 });
@@ -140,6 +148,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
140
148
  },
141
149
  }]
142
150
  }] });
151
+ /** Footer slot for sheet. */
143
152
  class FrSheetFooter {
144
153
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrSheetFooter, deps: [], target: i0.ɵɵFactoryTarget.Directive });
145
154
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrSheetFooter, isStandalone: true, selector: "[frSheetFooter], frame-sheet-footer", host: { classAttribute: "frame-sheet__footer" }, ngImport: i0 });
@@ -153,6 +162,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
153
162
  },
154
163
  }]
155
164
  }] });
165
+ /** Title slot for sheet. */
156
166
  class FrSheetTitle {
157
167
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrSheetTitle, deps: [], target: i0.ɵɵFactoryTarget.Directive });
158
168
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrSheetTitle, isStandalone: true, selector: "[frSheetTitle], frame-sheet-title", host: { classAttribute: "frame-sheet__title" }, ngImport: i0 });
@@ -166,6 +176,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
166
176
  },
167
177
  }]
168
178
  }] });
179
+ /** Description slot for sheet. */
169
180
  class FrSheetDescription {
170
181
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrSheetDescription, deps: [], target: i0.ɵɵFactoryTarget.Directive });
171
182
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrSheetDescription, isStandalone: true, selector: "[frSheetDescription], frame-sheet-description", host: { classAttribute: "frame-sheet__description" }, ngImport: i0 });
@@ -182,6 +193,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
182
193
 
183
194
  const FR_SHEET_DATA = DIALOG_DATA;
184
195
 
196
+ /** Default shell for sheet content, title, and footer actions. */
185
197
  class FrSheetShell {
186
198
  dialogRef = inject((DialogRef));
187
199
  injector = inject(Injector);
@@ -201,50 +213,50 @@ class FrSheetShell {
201
213
  }
202
214
  }
203
215
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrSheetShell, deps: [], target: i0.ɵɵFactoryTarget.Component });
204
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.16", type: FrSheetShell, isStandalone: true, selector: "frame-sheet-shell", ngImport: i0, template: `
205
- <div
206
- frSheetPanel
207
- [side]="options.side ?? 'right'"
208
- [showCloseButton]="options.showCloseButton ?? true"
209
- [scrollable]="options.scrollable ?? false"
210
- >
211
- @if (options.title || options.description) {
212
- <div frSheetHeader>
213
- @if (options.title) {
214
- <h2 frSheetTitle>{{ options.title }}</h2>
215
- }
216
-
217
- @if (options.description) {
218
- <p frSheetDescription>{{ options.description }}</p>
219
- }
220
- </div>
221
- }
222
-
223
- <div frSheetBody>
224
- <ng-container
225
- [ngComponentOutlet]="options.bodyComponent"
226
- [ngComponentOutletInputs]="options.bodyInputs ?? {}"
227
- [ngComponentOutletInjector]="bodyInjector"
228
- />
229
- </div>
230
-
231
- @if (options.footerActions?.length) {
232
- <div frSheetFooter>
233
- @for (action of options.footerActions; track action.label) {
234
- <button
235
- frButton
236
- type="button"
237
- [appearance]="action.appearance ?? 'primary'"
238
- [disabled]="action.disabled ?? false"
239
- [attr.aria-label]="action.ariaLabel ?? null"
240
- (click)="handleAction(action)"
241
- >
242
- <span frButtonLabel>{{ action.label }}</span>
243
- </button>
244
- }
245
- </div>
246
- }
247
- </div>
216
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.16", type: FrSheetShell, isStandalone: true, selector: "frame-sheet-shell", ngImport: i0, template: `
217
+ <div
218
+ frSheetPanel
219
+ [side]="options.side ?? 'right'"
220
+ [showCloseButton]="options.showCloseButton ?? true"
221
+ [scrollable]="options.scrollable ?? false"
222
+ >
223
+ @if (options.title || options.description) {
224
+ <div frSheetHeader>
225
+ @if (options.title) {
226
+ <h2 frSheetTitle>{{ options.title }}</h2>
227
+ }
228
+
229
+ @if (options.description) {
230
+ <p frSheetDescription>{{ options.description }}</p>
231
+ }
232
+ </div>
233
+ }
234
+
235
+ <div frSheetBody>
236
+ <ng-container
237
+ [ngComponentOutlet]="options.bodyComponent"
238
+ [ngComponentOutletInputs]="options.bodyInputs ?? {}"
239
+ [ngComponentOutletInjector]="bodyInjector"
240
+ />
241
+ </div>
242
+
243
+ @if (options.footerActions?.length) {
244
+ <div frSheetFooter>
245
+ @for (action of options.footerActions; track action.label) {
246
+ <button
247
+ frButton
248
+ type="button"
249
+ [appearance]="action.appearance ?? 'primary'"
250
+ [disabled]="action.disabled ?? false"
251
+ [attr.aria-label]="action.ariaLabel ?? null"
252
+ (click)="handleAction(action)"
253
+ >
254
+ <span frButtonLabel>{{ action.label }}</span>
255
+ </button>
256
+ }
257
+ </div>
258
+ }
259
+ </div>
248
260
  `, isInline: true, dependencies: [{ kind: "directive", type: FrButton, selector: "a[frButton], button[frButton]", inputs: ["appearance", "disabled", "loading", "loadingDisplay", "radius", "size"] }, { kind: "directive", type: FrButtonLabel, selector: "[frButtonLabel]" }, { kind: "directive", type: FrSheetBody, selector: "[frSheetBody], frame-sheet-body" }, { kind: "directive", type: FrSheetDescription, selector: "[frSheetDescription], frame-sheet-description" }, { kind: "directive", type: FrSheetFooter, selector: "[frSheetFooter], frame-sheet-footer" }, { kind: "directive", type: FrSheetHeader, selector: "[frSheetHeader], frame-sheet-header" }, { kind: "component", type: FrSheetPanel, selector: "[frSheetPanel], frame-sheet-panel", inputs: ["scrollable", "showCloseButton", "side"] }, { kind: "directive", type: FrSheetTitle, selector: "[frSheetTitle], frame-sheet-title" }, { kind: "directive", type: NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletEnvironmentInjector", "ngComponentOutletContent", "ngComponentOutletNgModule"], exportAs: ["ngComponentOutlet"] }] });
249
261
  }
250
262
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrSheetShell, decorators: [{
@@ -262,56 +274,57 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
262
274
  FrSheetTitle,
263
275
  NgComponentOutlet,
264
276
  ],
265
- template: `
266
- <div
267
- frSheetPanel
268
- [side]="options.side ?? 'right'"
269
- [showCloseButton]="options.showCloseButton ?? true"
270
- [scrollable]="options.scrollable ?? false"
271
- >
272
- @if (options.title || options.description) {
273
- <div frSheetHeader>
274
- @if (options.title) {
275
- <h2 frSheetTitle>{{ options.title }}</h2>
276
- }
277
-
278
- @if (options.description) {
279
- <p frSheetDescription>{{ options.description }}</p>
280
- }
281
- </div>
282
- }
283
-
284
- <div frSheetBody>
285
- <ng-container
286
- [ngComponentOutlet]="options.bodyComponent"
287
- [ngComponentOutletInputs]="options.bodyInputs ?? {}"
288
- [ngComponentOutletInjector]="bodyInjector"
289
- />
290
- </div>
291
-
292
- @if (options.footerActions?.length) {
293
- <div frSheetFooter>
294
- @for (action of options.footerActions; track action.label) {
295
- <button
296
- frButton
297
- type="button"
298
- [appearance]="action.appearance ?? 'primary'"
299
- [disabled]="action.disabled ?? false"
300
- [attr.aria-label]="action.ariaLabel ?? null"
301
- (click)="handleAction(action)"
302
- >
303
- <span frButtonLabel>{{ action.label }}</span>
304
- </button>
305
- }
306
- </div>
307
- }
308
- </div>
277
+ template: `
278
+ <div
279
+ frSheetPanel
280
+ [side]="options.side ?? 'right'"
281
+ [showCloseButton]="options.showCloseButton ?? true"
282
+ [scrollable]="options.scrollable ?? false"
283
+ >
284
+ @if (options.title || options.description) {
285
+ <div frSheetHeader>
286
+ @if (options.title) {
287
+ <h2 frSheetTitle>{{ options.title }}</h2>
288
+ }
289
+
290
+ @if (options.description) {
291
+ <p frSheetDescription>{{ options.description }}</p>
292
+ }
293
+ </div>
294
+ }
295
+
296
+ <div frSheetBody>
297
+ <ng-container
298
+ [ngComponentOutlet]="options.bodyComponent"
299
+ [ngComponentOutletInputs]="options.bodyInputs ?? {}"
300
+ [ngComponentOutletInjector]="bodyInjector"
301
+ />
302
+ </div>
303
+
304
+ @if (options.footerActions?.length) {
305
+ <div frSheetFooter>
306
+ @for (action of options.footerActions; track action.label) {
307
+ <button
308
+ frButton
309
+ type="button"
310
+ [appearance]="action.appearance ?? 'primary'"
311
+ [disabled]="action.disabled ?? false"
312
+ [attr.aria-label]="action.ariaLabel ?? null"
313
+ (click)="handleAction(action)"
314
+ >
315
+ <span frButtonLabel>{{ action.label }}</span>
316
+ </button>
317
+ }
318
+ </div>
319
+ }
320
+ </div>
309
321
  `,
310
322
  }]
311
323
  }] });
312
324
 
313
325
  const DEFAULT_PANEL_CLASS = 'frame-sheet__overlay-pane';
314
326
  const DEFAULT_BACKDROP_CLASS = 'frame-sheet__backdrop';
327
+ /** Service for opening sheet dialogs. */
315
328
  class FrSheetService {
316
329
  dialog = inject(Dialog);
317
330
  open(content, config = {}) {
@@ -384,6 +397,7 @@ function mergeClassList(classList, defaultClass) {
384
397
  return Array.from(new Set([defaultClass, ...classes].filter(Boolean)));
385
398
  }
386
399
 
400
+ /** Trigger control for sheet. */
387
401
  class FrSheetTrigger {
388
402
  static CUSTOM_PROPERTY_PREFIX = '--frame-sheet-';
389
403
  destroyRef = inject(DestroyRef);