@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-pagination.mjs","sources":["../../../projects/components/pagination/src/pagination.ts","../../../projects/components/pagination/pagination.module.ts","../../../projects/components/pagination/frame-ui-ng-components-pagination.ts"],"sourcesContent":["import { Component, Directive, booleanAttribute, computed, inject, input, model } from '@angular/core';\n\nexport type FrPaginationPage = number | 'ellipsis';\n\n@Directive({\n selector: 'nav[frPagination], [frPagination]',\n exportAs: 'frPagination',\n host: {\n class: 'frame-pagination',\n '[attr.aria-label]': 'ariaLabel()',\n '[attr.data-page]': 'page()',\n '[attr.data-total-pages]': 'totalPages()',\n },\n})\nexport class FrPagination {\n readonly ariaLabel = input('pagination', { alias: 'aria-label' });\n readonly boundaryCount = input(1);\n readonly page = model(1);\n readonly siblingCount = input(1);\n readonly totalPages = input(1);\n\n readonly canPrevious = computed(() => this.page() > 1);\n readonly canNext = computed(() => this.page() < this.normalizedTotalPages());\n readonly pages = computed(() => this.buildPages());\n\n goToPage(page: number): void {\n this.page.set(Math.min(Math.max(page, 1), this.normalizedTotalPages()));\n }\n\n goToPreviousPage(): void {\n this.goToPage(this.page() - 1);\n }\n\n goToNextPage(): void {\n this.goToPage(this.page() + 1);\n }\n\n private normalizedTotalPages(): number {\n return Math.max(1, Math.floor(this.totalPages()));\n }\n\n private buildPages(): FrPaginationPage[] {\n const totalPages = this.normalizedTotalPages();\n const boundaryCount = Math.max(0, Math.floor(this.boundaryCount()));\n const siblingCount = Math.max(0, Math.floor(this.siblingCount()));\n const currentPage = Math.min(Math.max(this.page(), 1), totalPages);\n const pages = new Set<number>();\n\n for (let page = 1; page <= Math.min(boundaryCount, totalPages); page += 1) {\n pages.add(page);\n }\n\n for (let page = Math.max(1, totalPages - boundaryCount + 1); page <= totalPages; page += 1) {\n pages.add(page);\n }\n\n for (let page = currentPage - siblingCount; page <= currentPage + siblingCount; page += 1) {\n if (page >= 1 && page <= totalPages) {\n pages.add(page);\n }\n }\n\n const sortedPages = Array.from(pages).sort((a, b) => a - b);\n const visiblePages: FrPaginationPage[] = [];\n\n for (const page of sortedPages) {\n const previousPage = visiblePages.at(-1);\n\n if (typeof previousPage === 'number' && page - previousPage > 1) {\n visiblePages.push('ellipsis');\n }\n\n visiblePages.push(page);\n }\n\n return visiblePages;\n }\n}\n\n@Directive({\n selector: 'ul[frPaginationContent], ol[frPaginationContent], [frPaginationContent]',\n host: {\n class: 'frame-pagination__content',\n },\n})\nexport class FrPaginationContent {}\n\n@Directive({\n selector: 'li[frPaginationItem], [frPaginationItem]',\n host: {\n class: 'frame-pagination__item',\n },\n})\nexport class FrPaginationItem {}\n\n@Directive({\n selector: 'a[frPaginationLink], button[frPaginationLink]',\n host: {\n class: 'frame-pagination__link',\n '[attr.aria-current]': 'isActive() ? \"page\" : null',\n '[attr.aria-disabled]': 'isDisabled() ? \"true\" : null',\n '[attr.data-active]': 'isActive() ? \"\" : null',\n '[attr.data-disabled]': 'isDisabled() ? \"\" : null',\n '[attr.disabled]': 'isDisabled() ? \"\" : null',\n '[attr.tabindex]': 'isDisabled() ? \"-1\" : null',\n '(click)': 'handleClick($event)',\n },\n})\nexport class FrPaginationLink {\n private readonly pagination = inject(FrPagination, { optional: true });\n\n readonly active = input(false, { transform: booleanAttribute });\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly page = input<number | null>(null);\n\n protected readonly isActive = computed(() => {\n const page = this.page();\n\n return this.active() || (page !== null && this.pagination?.page() === page);\n });\n protected readonly isDisabled = computed(() => this.disabled());\n\n protected handleClick(event: Event): void {\n if (this.isDisabled()) {\n event.preventDefault();\n return;\n }\n\n const page = this.page();\n\n if (page === null || !this.pagination) {\n return;\n }\n\n event.preventDefault();\n this.pagination.goToPage(page);\n }\n}\n\n@Directive({\n selector: '[frPaginationIcon]',\n host: {\n class: 'frame-pagination__projected-icon',\n 'aria-hidden': 'true',\n },\n})\nexport class FrPaginationIcon {}\n\n@Component({\n selector: 'a[frPaginationPrevious], button[frPaginationPrevious]',\n host: {\n class: 'frame-pagination__link frame-pagination__previous',\n '[attr.aria-label]': 'ariaLabel()',\n '[attr.aria-disabled]': 'isDisabled() ? \"true\" : null',\n '[attr.data-disabled]': 'isDisabled() ? \"\" : null',\n '[attr.data-icon-only]': 'iconOnly() ? \"\" : null',\n '[attr.disabled]': 'isDisabled() ? \"\" : null',\n '[attr.tabindex]': 'isDisabled() ? \"-1\" : null',\n '(click)': 'handleClick($event)',\n },\n template: `\n <span class=\"frame-pagination__control-icon\" aria-hidden=\"true\">\n <ng-content select=\"[frPaginationIcon]\">‹</ng-content>\n </span>\n @if (!iconOnly()) {\n <span class=\"frame-pagination__control-text\">{{ text() }}</span>\n }\n `,\n})\nexport class FrPaginationPrevious {\n private readonly pagination = inject(FrPagination, { optional: true });\n\n readonly ariaLabel = input('Go to previous page', { alias: 'aria-label' });\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly iconOnly = input(false, { transform: booleanAttribute });\n readonly text = input('Previous');\n protected readonly isDisabled = computed(() => this.disabled() || this.pagination?.canPrevious() === false);\n\n protected handleClick(event: Event): void {\n if (this.isDisabled()) {\n event.preventDefault();\n return;\n }\n\n if (!this.pagination) {\n return;\n }\n\n event.preventDefault();\n this.pagination.goToPreviousPage();\n }\n}\n\n@Component({\n selector: 'a[frPaginationNext], button[frPaginationNext]',\n host: {\n class: 'frame-pagination__link frame-pagination__next',\n '[attr.aria-label]': 'ariaLabel()',\n '[attr.aria-disabled]': 'isDisabled() ? \"true\" : null',\n '[attr.data-disabled]': 'isDisabled() ? \"\" : null',\n '[attr.data-icon-only]': 'iconOnly() ? \"\" : null',\n '[attr.disabled]': 'isDisabled() ? \"\" : null',\n '[attr.tabindex]': 'isDisabled() ? \"-1\" : null',\n '(click)': 'handleClick($event)',\n },\n template: `\n @if (!iconOnly()) {\n <span class=\"frame-pagination__control-text\">{{ text() }}</span>\n }\n <span class=\"frame-pagination__control-icon\" aria-hidden=\"true\">\n <ng-content select=\"[frPaginationIcon]\">›</ng-content>\n </span>\n `,\n})\nexport class FrPaginationNext {\n private readonly pagination = inject(FrPagination, { optional: true });\n\n readonly ariaLabel = input('Go to next page', { alias: 'aria-label' });\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly iconOnly = input(false, { transform: booleanAttribute });\n readonly text = input('Next');\n protected readonly isDisabled = computed(() => this.disabled() || this.pagination?.canNext() === false);\n\n protected handleClick(event: Event): void {\n if (this.isDisabled()) {\n event.preventDefault();\n return;\n }\n\n if (!this.pagination) {\n return;\n }\n\n event.preventDefault();\n this.pagination.goToNextPage();\n }\n}\n\n@Component({\n selector: '[frPaginationEllipsis], frame-pagination-ellipsis',\n host: {\n class: 'frame-pagination__ellipsis',\n role: 'presentation',\n },\n template: `\n <span aria-hidden=\"true\">...</span>\n <span class=\"frame-pagination__sr-only\">{{ label() }}</span>\n `,\n})\nexport class FrPaginationEllipsis {\n readonly label = input('More pages');\n}\n","import { NgModule } from '@angular/core';\nimport {\n FrPagination,\n FrPaginationContent,\n FrPaginationEllipsis,\n FrPaginationIcon,\n FrPaginationItem,\n FrPaginationLink,\n FrPaginationNext,\n FrPaginationPrevious,\n} from './src/pagination';\n\n@NgModule({\n imports: [\n FrPagination,\n FrPaginationContent,\n FrPaginationEllipsis,\n FrPaginationIcon,\n FrPaginationItem,\n FrPaginationLink,\n FrPaginationNext,\n FrPaginationPrevious,\n ],\n exports: [\n FrPagination,\n FrPaginationContent,\n FrPaginationEllipsis,\n FrPaginationIcon,\n FrPaginationItem,\n FrPaginationLink,\n FrPaginationNext,\n FrPaginationPrevious,\n ],\n})\nexport class FrPaginationModule {}\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-pagination.mjs","sources":["../../../projects/components/pagination/src/pagination.ts","../../../projects/components/pagination/pagination.module.ts","../../../projects/components/pagination/frame-ui-ng-components-pagination.ts"],"sourcesContent":["import { Component, Directive, booleanAttribute, computed, inject, input, model } from '@angular/core';\r\nimport { clampNumber } from '@frame-ui-ng/components/utils';\r\n\r\nexport type FrPaginationPage = number | 'ellipsis';\r\n\r\n/** Pagination navigation container. */\r\n@Directive({\r\n selector: 'nav[frPagination], [frPagination]',\r\n exportAs: 'frPagination',\r\n host: {\r\n class: 'frame-pagination',\r\n '[attr.aria-label]': 'ariaLabel()',\r\n '[attr.data-page]': 'page()',\r\n '[attr.data-total-pages]': 'totalPages()',\r\n },\r\n})\r\nexport class FrPagination {\r\n readonly ariaLabel = input('pagination', { alias: 'aria-label' });\r\n readonly boundaryCount = input(1);\r\n readonly page = model(1);\r\n readonly siblingCount = input(1);\r\n readonly totalPages = input(1);\r\n\r\n readonly canPrevious = computed(() => this.page() > 1);\r\n readonly canNext = computed(() => this.page() < this.normalizedTotalPages());\r\n readonly pages = computed(() => this.buildPages());\r\n\r\n goToPage(page: number): void {\r\n this.page.set(clampNumber(page, 1, this.normalizedTotalPages()));\r\n }\r\n\r\n goToPreviousPage(): void {\r\n this.goToPage(this.page() - 1);\r\n }\r\n\r\n goToNextPage(): void {\r\n this.goToPage(this.page() + 1);\r\n }\r\n\r\n private normalizedTotalPages(): number {\r\n return Math.max(1, Math.floor(this.totalPages()));\r\n }\r\n\r\n private buildPages(): FrPaginationPage[] {\r\n const totalPages = this.normalizedTotalPages();\r\n const boundaryCount = Math.max(0, Math.floor(this.boundaryCount()));\r\n const siblingCount = Math.max(0, Math.floor(this.siblingCount()));\r\n const currentPage = clampNumber(this.page(), 1, totalPages);\r\n const pages = new Set<number>();\r\n\r\n for (let page = 1; page <= Math.min(boundaryCount, totalPages); page += 1) {\r\n pages.add(page);\r\n }\r\n\r\n for (let page = Math.max(1, totalPages - boundaryCount + 1); page <= totalPages; page += 1) {\r\n pages.add(page);\r\n }\r\n\r\n for (let page = currentPage - siblingCount; page <= currentPage + siblingCount; page += 1) {\r\n if (page >= 1 && page <= totalPages) {\r\n pages.add(page);\r\n }\r\n }\r\n\r\n const sortedPages = Array.from(pages).sort((a, b) => a - b);\r\n const visiblePages: FrPaginationPage[] = [];\r\n\r\n for (const page of sortedPages) {\r\n const previousPage = visiblePages.at(-1);\r\n\r\n if (typeof previousPage === 'number' && page - previousPage > 1) {\r\n visiblePages.push('ellipsis');\r\n }\r\n\r\n visiblePages.push(page);\r\n }\r\n\r\n return visiblePages;\r\n }\r\n}\r\n\r\n/** Content slot for pagination. */\r\n@Directive({\r\n selector: 'ul[frPaginationContent], ol[frPaginationContent], [frPaginationContent]',\r\n host: {\r\n class: 'frame-pagination__content',\r\n },\r\n})\r\nexport class FrPaginationContent {}\r\n\r\n/** Item slot for pagination. */\r\n@Directive({\r\n selector: 'li[frPaginationItem], [frPaginationItem]',\r\n host: {\r\n class: 'frame-pagination__item',\r\n },\r\n})\r\nexport class FrPaginationItem {}\r\n\r\n/** Page link with active and disabled states. */\r\n@Directive({\r\n selector: 'a[frPaginationLink], button[frPaginationLink]',\r\n host: {\r\n class: 'frame-pagination__link',\r\n '[attr.aria-current]': 'isActive() ? \"page\" : null',\r\n '[attr.aria-disabled]': 'isDisabled() ? \"true\" : null',\r\n '[attr.data-active]': 'isActive() ? \"\" : null',\r\n '[attr.data-disabled]': 'isDisabled() ? \"\" : null',\r\n '[attr.disabled]': 'isDisabled() ? \"\" : null',\r\n '[attr.tabindex]': 'isDisabled() ? \"-1\" : null',\r\n '(click)': 'handleClick($event)',\r\n },\r\n})\r\nexport class FrPaginationLink {\r\n private readonly pagination = inject(FrPagination, { optional: true });\r\n\r\n readonly active = input(false, { transform: booleanAttribute });\r\n readonly disabled = input(false, { transform: booleanAttribute });\r\n readonly page = input<number | null>(null);\r\n\r\n protected readonly isActive = computed(() => {\r\n const page = this.page();\r\n\r\n return this.active() || (page !== null && this.pagination?.page() === page);\r\n });\r\n protected readonly isDisabled = computed(() => this.disabled());\r\n\r\n protected handleClick(event: Event): void {\r\n if (this.isDisabled()) {\r\n event.preventDefault();\r\n return;\r\n }\r\n\r\n const page = this.page();\r\n\r\n if (page === null || !this.pagination) {\r\n return;\r\n }\r\n\r\n event.preventDefault();\r\n this.pagination.goToPage(page);\r\n }\r\n}\r\n\r\n/** Icon slot for pagination. */\r\n@Directive({\r\n selector: '[frPaginationIcon]',\r\n host: {\r\n class: 'frame-pagination__projected-icon',\r\n 'aria-hidden': 'true',\r\n },\r\n})\r\nexport class FrPaginationIcon {}\r\n\r\n/** Previous-page pagination control. */\r\n@Component({\r\n selector: 'a[frPaginationPrevious], button[frPaginationPrevious]',\r\n host: {\r\n class: 'frame-pagination__link frame-pagination__previous',\r\n '[attr.aria-label]': 'ariaLabel()',\r\n '[attr.aria-disabled]': 'isDisabled() ? \"true\" : null',\r\n '[attr.data-disabled]': 'isDisabled() ? \"\" : null',\r\n '[attr.data-icon-only]': 'iconOnly() ? \"\" : null',\r\n '[attr.disabled]': 'isDisabled() ? \"\" : null',\r\n '[attr.tabindex]': 'isDisabled() ? \"-1\" : null',\r\n '(click)': 'handleClick($event)',\r\n },\r\n template: `\r\n <span class=\"frame-pagination__control-icon\" aria-hidden=\"true\">\r\n <ng-content select=\"[frPaginationIcon]\">‹</ng-content>\r\n </span>\r\n @if (!iconOnly()) {\r\n <span class=\"frame-pagination__control-text\">{{ text() }}</span>\r\n }\r\n `,\r\n})\r\nexport class FrPaginationPrevious {\r\n private readonly pagination = inject(FrPagination, { optional: true });\r\n\r\n readonly ariaLabel = input('Go to previous page', { alias: 'aria-label' });\r\n readonly disabled = input(false, { transform: booleanAttribute });\r\n readonly iconOnly = input(false, { transform: booleanAttribute });\r\n readonly text = input('Previous');\r\n protected readonly isDisabled = computed(() => this.disabled() || this.pagination?.canPrevious() === false);\r\n\r\n protected handleClick(event: Event): void {\r\n if (this.isDisabled()) {\r\n event.preventDefault();\r\n return;\r\n }\r\n\r\n if (!this.pagination) {\r\n return;\r\n }\r\n\r\n event.preventDefault();\r\n this.pagination.goToPreviousPage();\r\n }\r\n}\r\n\r\n/** Next-page pagination control. */\r\n@Component({\r\n selector: 'a[frPaginationNext], button[frPaginationNext]',\r\n host: {\r\n class: 'frame-pagination__link frame-pagination__next',\r\n '[attr.aria-label]': 'ariaLabel()',\r\n '[attr.aria-disabled]': 'isDisabled() ? \"true\" : null',\r\n '[attr.data-disabled]': 'isDisabled() ? \"\" : null',\r\n '[attr.data-icon-only]': 'iconOnly() ? \"\" : null',\r\n '[attr.disabled]': 'isDisabled() ? \"\" : null',\r\n '[attr.tabindex]': 'isDisabled() ? \"-1\" : null',\r\n '(click)': 'handleClick($event)',\r\n },\r\n template: `\r\n @if (!iconOnly()) {\r\n <span class=\"frame-pagination__control-text\">{{ text() }}</span>\r\n }\r\n <span class=\"frame-pagination__control-icon\" aria-hidden=\"true\">\r\n <ng-content select=\"[frPaginationIcon]\">›</ng-content>\r\n </span>\r\n `,\r\n})\r\nexport class FrPaginationNext {\r\n private readonly pagination = inject(FrPagination, { optional: true });\r\n\r\n readonly ariaLabel = input('Go to next page', { alias: 'aria-label' });\r\n readonly disabled = input(false, { transform: booleanAttribute });\r\n readonly iconOnly = input(false, { transform: booleanAttribute });\r\n readonly text = input('Next');\r\n protected readonly isDisabled = computed(() => this.disabled() || this.pagination?.canNext() === false);\r\n\r\n protected handleClick(event: Event): void {\r\n if (this.isDisabled()) {\r\n event.preventDefault();\r\n return;\r\n }\r\n\r\n if (!this.pagination) {\r\n return;\r\n }\r\n\r\n event.preventDefault();\r\n this.pagination.goToNextPage();\r\n }\r\n}\r\n\r\n/** Ellipsis slot for pagination. */\r\n@Component({\r\n selector: '[frPaginationEllipsis], frame-pagination-ellipsis',\r\n host: {\r\n class: 'frame-pagination__ellipsis',\r\n role: 'presentation',\r\n },\r\n template: `\r\n <span aria-hidden=\"true\">...</span>\r\n <span class=\"frame-pagination__sr-only\">{{ label() }}</span>\r\n `,\r\n})\r\nexport class FrPaginationEllipsis {\r\n readonly label = input('More pages');\r\n}\r\n\r\n","import { NgModule } from '@angular/core';\nimport {\n FrPagination,\n FrPaginationContent,\n FrPaginationEllipsis,\n FrPaginationIcon,\n FrPaginationItem,\n FrPaginationLink,\n FrPaginationNext,\n FrPaginationPrevious,\n} from './src/pagination';\n\n@NgModule({\n imports: [\n FrPagination,\n FrPaginationContent,\n FrPaginationEllipsis,\n FrPaginationIcon,\n FrPaginationItem,\n FrPaginationLink,\n FrPaginationNext,\n FrPaginationPrevious,\n ],\n exports: [\n FrPagination,\n FrPaginationContent,\n FrPaginationEllipsis,\n FrPaginationIcon,\n FrPaginationItem,\n FrPaginationLink,\n FrPaginationNext,\n FrPaginationPrevious,\n ],\n})\nexport class FrPaginationModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { InjectionToken, inject, TemplateRef, input, booleanAttribute, Directive, model, signal, computed, afterNextRender, ChangeDetectionStrategy, Component, ElementRef, effect, NgModule } from '@angular/core';
2
+ import { InjectionToken, inject, TemplateRef, input, booleanAttribute, Directive, model, signal, computed, afterNextRender, ChangeDetectionStrategy, Component, ElementRef, NgModule } from '@angular/core';
3
3
  import { CdkConnectedOverlay, CdkOverlayOrigin } from '@angular/cdk/overlay';
4
4
  import { NgTemplateOutlet } from '@angular/common';
5
5
 
@@ -53,6 +53,7 @@ function oppositeSide(side) {
53
53
 
54
54
  const FR_POPOVER_CONTROLLER = new InjectionToken('FrPopoverController');
55
55
 
56
+ /** Content slot for popover. */
56
57
  class FrPopoverContent {
57
58
  templateRef = inject((TemplateRef));
58
59
  align = input('center', ...(ngDevMode ? [{ debugName: "align" }] : /* istanbul ignore next */ []));
@@ -78,6 +79,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
78
79
  exportAs: 'frPopoverContent',
79
80
  }]
80
81
  }], propDecorators: { align: [{ type: i0.Input, args: [{ isSignal: true, alias: "align", required: false }] }], alignOffset: [{ type: i0.Input, args: [{ isSignal: true, alias: "alignOffset", required: false }] }], debugVisible: [{ type: i0.Input, args: [{ isSignal: true, alias: "debugVisible", required: false }] }], side: [{ type: i0.Input, args: [{ isSignal: true, alias: "side", required: false }] }], sideOffset: [{ type: i0.Input, args: [{ isSignal: true, alias: "sideOffset", required: false }] }] } });
82
+ /** Panel slot for popover. */
81
83
  class FrPopoverPanel {
82
84
  content = inject(FrPopoverContent);
83
85
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrPopoverPanel, deps: [], target: i0.ɵɵFactoryTarget.Directive });
@@ -95,6 +97,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
95
97
  },
96
98
  }]
97
99
  }] });
100
+ /** Header slot for popover. */
98
101
  class FrPopoverHeader {
99
102
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrPopoverHeader, deps: [], target: i0.ɵɵFactoryTarget.Directive });
100
103
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrPopoverHeader, isStandalone: true, selector: "[frPopoverHeader]", host: { classAttribute: "frame-popover__header" }, ngImport: i0 });
@@ -108,6 +111,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
108
111
  },
109
112
  }]
110
113
  }] });
114
+ /** Title slot for popover. */
111
115
  class FrPopoverTitle {
112
116
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrPopoverTitle, deps: [], target: i0.ɵɵFactoryTarget.Directive });
113
117
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrPopoverTitle, isStandalone: true, selector: "[frPopoverTitle]", host: { classAttribute: "frame-popover__title" }, ngImport: i0 });
@@ -121,6 +125,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
121
125
  },
122
126
  }]
123
127
  }] });
128
+ /** Description slot for popover. */
124
129
  class FrPopoverDescription {
125
130
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrPopoverDescription, deps: [], target: i0.ɵɵFactoryTarget.Directive });
126
131
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrPopoverDescription, isStandalone: true, selector: "[frPopoverDescription]", host: { classAttribute: "frame-popover__description" }, ngImport: i0 });
@@ -134,6 +139,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
134
139
  },
135
140
  }]
136
141
  }] });
142
+ /** Body slot for popover. */
137
143
  class FrPopoverBody {
138
144
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrPopoverBody, deps: [], target: i0.ɵɵFactoryTarget.Directive });
139
145
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrPopoverBody, isStandalone: true, selector: "[frPopoverBody]", host: { classAttribute: "frame-popover__body" }, ngImport: i0 });
@@ -147,6 +153,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
147
153
  },
148
154
  }]
149
155
  }] });
156
+ /** Footer slot for popover. */
150
157
  class FrPopoverFooter {
151
158
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrPopoverFooter, deps: [], target: i0.ɵɵFactoryTarget.Directive });
152
159
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrPopoverFooter, isStandalone: true, selector: "[frPopoverFooter]", host: { classAttribute: "frame-popover__footer" }, ngImport: i0 });
@@ -160,6 +167,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
160
167
  },
161
168
  }]
162
169
  }] });
170
+ /** Close control for popover. */
163
171
  class FrPopoverClose {
164
172
  root = inject(FR_POPOVER_CONTROLLER);
165
173
  handleClick(event) {
@@ -186,6 +194,7 @@ const DEFAULT_POSITIONS = buildPopoverPositions({
186
194
  side: 'bottom',
187
195
  sideOffset: 8,
188
196
  });
197
+ /** Root controller for popover. */
189
198
  class FrPopoverRoot {
190
199
  defaultOpen = input(false, { ...(ngDevMode ? { debugName: "defaultOpen" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
191
200
  debugVisible = input(false, { ...(ngDevMode ? { debugName: "debugVisible" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
@@ -276,28 +285,28 @@ class FrPopoverRoot {
276
285
  provide: FR_POPOVER_CONTROLLER,
277
286
  useExisting: FrPopoverRoot,
278
287
  },
279
- ], exportAs: ["frPopover"], ngImport: i0, template: `
280
- <span cdkOverlayOrigin #origin="cdkOverlayOrigin" class="frame-popover__anchor">
281
- <ng-content />
282
- </span>
283
-
284
- <ng-template
285
- cdkConnectedOverlay
286
- [cdkConnectedOverlayOrigin]="origin"
287
- [cdkConnectedOverlayOpen]="isOpen()"
288
- [cdkConnectedOverlayPositions]="positions()"
289
- [cdkConnectedOverlayPanelClass]="overlayPanelClasses()"
290
- [cdkConnectedOverlayPush]="true"
291
- [cdkConnectedOverlayViewportMargin]="12"
292
- [cdkConnectedOverlayHasBackdrop]="true"
293
- [cdkConnectedOverlayBackdropClass]="'frame-popover__backdrop'"
294
- (backdropClick)="close()"
295
- (detach)="close()"
296
- (overlayKeydown)="handleOverlayKeydown($event)"
297
- (positionChange)="handlePositionChange($event)"
298
- >
299
- <ng-container [ngTemplateOutlet]="content()?.templateRef ?? null" />
300
- </ng-template>
288
+ ], exportAs: ["frPopover"], ngImport: i0, template: `
289
+ <span cdkOverlayOrigin #origin="cdkOverlayOrigin" class="frame-popover__anchor">
290
+ <ng-content />
291
+ </span>
292
+
293
+ <ng-template
294
+ cdkConnectedOverlay
295
+ [cdkConnectedOverlayOrigin]="origin"
296
+ [cdkConnectedOverlayOpen]="isOpen()"
297
+ [cdkConnectedOverlayPositions]="positions()"
298
+ [cdkConnectedOverlayPanelClass]="overlayPanelClasses()"
299
+ [cdkConnectedOverlayPush]="true"
300
+ [cdkConnectedOverlayViewportMargin]="12"
301
+ [cdkConnectedOverlayHasBackdrop]="true"
302
+ [cdkConnectedOverlayBackdropClass]="'frame-popover__backdrop'"
303
+ (backdropClick)="close()"
304
+ (detach)="close()"
305
+ (overlayKeydown)="handleOverlayKeydown($event)"
306
+ (positionChange)="handlePositionChange($event)"
307
+ >
308
+ <ng-container [ngTemplateOutlet]="content()?.templateRef ?? null" />
309
+ </ng-template>
301
310
  `, isInline: true, dependencies: [{ kind: "directive", type: CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush", "cdkConnectedOverlayDisposeOnNavigation", "cdkConnectedOverlayUsePopover", "cdkConnectedOverlayMatchWidth", "cdkConnectedOverlay"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }, { kind: "directive", type: CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
302
311
  }
303
312
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrPopoverRoot, decorators: [{
@@ -317,44 +326,47 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
317
326
  class: 'frame-popover',
318
327
  '[attr.data-state]': 'isOpen() ? "open" : "closed"',
319
328
  },
320
- template: `
321
- <span cdkOverlayOrigin #origin="cdkOverlayOrigin" class="frame-popover__anchor">
322
- <ng-content />
323
- </span>
324
-
325
- <ng-template
326
- cdkConnectedOverlay
327
- [cdkConnectedOverlayOrigin]="origin"
328
- [cdkConnectedOverlayOpen]="isOpen()"
329
- [cdkConnectedOverlayPositions]="positions()"
330
- [cdkConnectedOverlayPanelClass]="overlayPanelClasses()"
331
- [cdkConnectedOverlayPush]="true"
332
- [cdkConnectedOverlayViewportMargin]="12"
333
- [cdkConnectedOverlayHasBackdrop]="true"
334
- [cdkConnectedOverlayBackdropClass]="'frame-popover__backdrop'"
335
- (backdropClick)="close()"
336
- (detach)="close()"
337
- (overlayKeydown)="handleOverlayKeydown($event)"
338
- (positionChange)="handlePositionChange($event)"
339
- >
340
- <ng-container [ngTemplateOutlet]="content()?.templateRef ?? null" />
341
- </ng-template>
329
+ template: `
330
+ <span cdkOverlayOrigin #origin="cdkOverlayOrigin" class="frame-popover__anchor">
331
+ <ng-content />
332
+ </span>
333
+
334
+ <ng-template
335
+ cdkConnectedOverlay
336
+ [cdkConnectedOverlayOrigin]="origin"
337
+ [cdkConnectedOverlayOpen]="isOpen()"
338
+ [cdkConnectedOverlayPositions]="positions()"
339
+ [cdkConnectedOverlayPanelClass]="overlayPanelClasses()"
340
+ [cdkConnectedOverlayPush]="true"
341
+ [cdkConnectedOverlayViewportMargin]="12"
342
+ [cdkConnectedOverlayHasBackdrop]="true"
343
+ [cdkConnectedOverlayBackdropClass]="'frame-popover__backdrop'"
344
+ (backdropClick)="close()"
345
+ (detach)="close()"
346
+ (overlayKeydown)="handleOverlayKeydown($event)"
347
+ (positionChange)="handlePositionChange($event)"
348
+ >
349
+ <ng-container [ngTemplateOutlet]="content()?.templateRef ?? null" />
350
+ </ng-template>
342
351
  `,
343
352
  }]
344
353
  }], ctorParameters: () => [], propDecorators: { defaultOpen: [{ type: i0.Input, args: [{ isSignal: true, alias: "defaultOpen", required: false }] }], debugVisible: [{ type: i0.Input, args: [{ isSignal: true, alias: "debugVisible", required: false }] }], open: [{ type: i0.Input, args: [{ isSignal: true, alias: "open", required: false }] }, { type: i0.Output, args: ["openChange"] }] } });
345
354
 
355
+ /** Trigger control for popover. */
346
356
  class FrPopoverTrigger {
347
357
  content = input(null, { ...(ngDevMode ? { debugName: "content" } : /* istanbul ignore next */ {}), alias: 'frPopoverTrigger' });
348
358
  root = inject(FR_POPOVER_CONTROLLER);
349
359
  elementRef = inject(ElementRef);
360
+ lastContent = null;
350
361
  constructor() {
351
362
  this.root.registerTrigger(this.elementRef.nativeElement);
352
- effect(() => {
353
- const content = this.content();
354
- if (content) {
355
- this.root.setContent(content);
356
- }
357
- });
363
+ }
364
+ ngDoCheck() {
365
+ const content = this.content();
366
+ if (content && content !== this.lastContent) {
367
+ this.root.setContent(content);
368
+ }
369
+ this.lastContent = content;
358
370
  }
359
371
  handleClick(event) {
360
372
  event.preventDefault();
@@ -1 +1 @@
1
- {"version":3,"file":"frame-ui-ng-components-popover.mjs","sources":["../../../projects/components/popover/src/popover.position.ts","../../../projects/components/popover/src/popover.tokens.ts","../../../projects/components/popover/src/popover.content.ts","../../../projects/components/popover/src/popover.root.ts","../../../projects/components/popover/src/popover.trigger.ts","../../../projects/components/popover/src/popover.types.ts","../../../projects/components/popover/popover.module.ts","../../../projects/components/popover/frame-ui-ng-components-popover.ts"],"sourcesContent":["import { ConnectedPosition } from '@angular/cdk/overlay';\n\nimport { FrPopoverAlignment, FrPopoverSide } from './popover.types';\n\nexport function buildPopoverPositions(options: {\n align: FrPopoverAlignment;\n alignOffset: number;\n side: FrPopoverSide;\n sideOffset: number;\n}): ConnectedPosition[] {\n const primary = buildPosition(options.side, options);\n const opposite = oppositeSide(options.side);\n const fallback = buildPosition(opposite, {\n align: options.align,\n alignOffset: options.alignOffset,\n sideOffset: options.sideOffset,\n });\n\n return [primary, fallback];\n}\n\nfunction buildPosition(\n side: FrPopoverSide,\n options: {\n align: FrPopoverAlignment;\n alignOffset: number;\n sideOffset: number;\n },\n): ConnectedPosition {\n if (side === 'top' || side === 'bottom') {\n const isBottom = side === 'bottom';\n\n return {\n originX: options.align,\n originY: isBottom ? 'bottom' : 'top',\n overlayX: options.align,\n overlayY: isBottom ? 'top' : 'bottom',\n offsetX: options.alignOffset,\n offsetY: isBottom ? options.sideOffset : -options.sideOffset,\n };\n }\n\n const isRight = side === 'right';\n\n return {\n originX: isRight ? 'end' : 'start',\n originY: verticalAlign(options.align),\n overlayX: isRight ? 'start' : 'end',\n overlayY: verticalAlign(options.align),\n offsetX: isRight ? options.sideOffset : -options.sideOffset,\n offsetY: options.alignOffset,\n };\n}\n\nfunction verticalAlign(align: FrPopoverAlignment): 'bottom' | 'center' | 'top' {\n if (align === 'center') {\n return 'center';\n }\n\n return align === 'end' ? 'bottom' : 'top';\n}\n\nfunction oppositeSide(side: FrPopoverSide): FrPopoverSide {\n if (side === 'top') {\n return 'bottom';\n }\n\n if (side === 'bottom') {\n return 'top';\n }\n\n return side === 'left' ? 'right' : 'left';\n}\n","import { InjectionToken } from '@angular/core';\n\nimport { FrPopoverRoot } from './popover.root';\n\nexport const FR_POPOVER_CONTROLLER = new InjectionToken<FrPopoverRoot>(\n 'FrPopoverController',\n);\n","import { ConnectedPosition } from '@angular/cdk/overlay';\nimport { Directive, TemplateRef, booleanAttribute, inject, input } from '@angular/core';\n\nimport { buildPopoverPositions } from './popover.position';\nimport { FR_POPOVER_CONTROLLER } from './popover.tokens';\nimport { FrPopoverAlignment, FrPopoverSide } from './popover.types';\n\n@Directive({\n selector: 'ng-template[frPopoverContent]',\n exportAs: 'frPopoverContent',\n})\nexport class FrPopoverContent {\n readonly templateRef = inject(TemplateRef<unknown>);\n\n readonly align = input<FrPopoverAlignment>('center');\n readonly alignOffset = input(0);\n readonly debugVisible = input(false, { transform: booleanAttribute });\n readonly side = input<FrPopoverSide>('bottom');\n readonly sideOffset = input(8);\n\n getPositions(): ConnectedPosition[] {\n return buildPopoverPositions({\n align: this.align(),\n alignOffset: this.alignOffset(),\n side: this.side(),\n sideOffset: this.sideOffset(),\n });\n }\n}\n\n@Directive({\n selector: '[frPopoverPanel]',\n host: {\n class: 'frame-popover__content',\n '[attr.data-side]': 'content.side()',\n role: 'dialog',\n tabindex: '-1',\n },\n})\nexport class FrPopoverPanel {\n protected readonly content = inject(FrPopoverContent);\n}\n\n@Directive({\n selector: '[frPopoverHeader]',\n host: {\n class: 'frame-popover__header',\n },\n})\nexport class FrPopoverHeader {}\n\n@Directive({\n selector: '[frPopoverTitle]',\n host: {\n class: 'frame-popover__title',\n },\n})\nexport class FrPopoverTitle {}\n\n@Directive({\n selector: '[frPopoverDescription]',\n host: {\n class: 'frame-popover__description',\n },\n})\nexport class FrPopoverDescription {}\n\n@Directive({\n selector: '[frPopoverBody]',\n host: {\n class: 'frame-popover__body',\n },\n})\nexport class FrPopoverBody {}\n\n@Directive({\n selector: '[frPopoverFooter]',\n host: {\n class: 'frame-popover__footer',\n },\n})\nexport class FrPopoverFooter {}\n\n@Directive({\n selector: '[frPopoverClose]',\n host: {\n class: 'frame-popover__close',\n '(click)': 'handleClick($event)',\n },\n})\nexport class FrPopoverClose {\n private readonly root = inject(FR_POPOVER_CONTROLLER);\n\n protected handleClick(event: Event): void {\n event.preventDefault();\n this.root.close();\n }\n}\n","import {\n CdkConnectedOverlay,\n CdkOverlayOrigin,\n ConnectedOverlayPositionChange,\n ConnectedPosition,\n} from '@angular/cdk/overlay';\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n afterNextRender,\n booleanAttribute,\n computed,\n input,\n model,\n signal,\n} from '@angular/core';\n\nimport { FrPopoverContent } from './popover.content';\nimport { buildPopoverPositions } from './popover.position';\nimport { FR_POPOVER_CONTROLLER } from './popover.tokens';\n\nconst DEFAULT_POSITIONS: ConnectedPosition[] = buildPopoverPositions({\n align: 'center',\n alignOffset: 0,\n side: 'bottom',\n sideOffset: 8,\n});\n\n@Component({\n selector: 'frame-popover',\n exportAs: 'frPopover',\n imports: [CdkConnectedOverlay, CdkOverlayOrigin, NgTemplateOutlet],\n providers: [\n {\n provide: FR_POPOVER_CONTROLLER,\n useExisting: FrPopoverRoot,\n },\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'frame-popover',\n '[attr.data-state]': 'isOpen() ? \"open\" : \"closed\"',\n },\n template: `\n <span cdkOverlayOrigin #origin=\"cdkOverlayOrigin\" class=\"frame-popover__anchor\">\n <ng-content />\n </span>\n\n <ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"origin\"\n [cdkConnectedOverlayOpen]=\"isOpen()\"\n [cdkConnectedOverlayPositions]=\"positions()\"\n [cdkConnectedOverlayPanelClass]=\"overlayPanelClasses()\"\n [cdkConnectedOverlayPush]=\"true\"\n [cdkConnectedOverlayViewportMargin]=\"12\"\n [cdkConnectedOverlayHasBackdrop]=\"true\"\n [cdkConnectedOverlayBackdropClass]=\"'frame-popover__backdrop'\"\n (backdropClick)=\"close()\"\n (detach)=\"close()\"\n (overlayKeydown)=\"handleOverlayKeydown($event)\"\n (positionChange)=\"handlePositionChange($event)\"\n >\n <ng-container [ngTemplateOutlet]=\"content()?.templateRef ?? null\" />\n </ng-template>\n `,\n})\nexport class FrPopoverRoot {\n readonly defaultOpen = input(false, { transform: booleanAttribute });\n readonly debugVisible = input(false, { transform: booleanAttribute });\n readonly open = model(false);\n\n readonly content = signal<FrPopoverContent | null>(null);\n readonly overlaySide = signal('bottom');\n\n private triggerElement: HTMLElement | null = null;\n\n readonly isOpen = computed(() => this.open() || this.debugVisible());\n readonly positions = computed(() => this.content()?.getPositions() ?? DEFAULT_POSITIONS);\n\n constructor() {\n afterNextRender(() => {\n if (this.defaultOpen() || this.debugVisible()) {\n this.open.set(true);\n }\n });\n }\n\n registerTrigger(trigger: HTMLElement): void {\n this.triggerElement = trigger;\n }\n\n setContent(content: unknown | null): void {\n this.content.set(content instanceof FrPopoverContent ? content : null);\n }\n\n toggle(): void {\n if (this.isOpen()) {\n this.close();\n return;\n }\n\n this.openPopover();\n }\n\n openPopover(): void {\n if (!this.content()) {\n return;\n }\n\n this.open.set(true);\n queueMicrotask(() => this.syncCustomPropertiesToOverlay());\n }\n\n close(): void {\n if (this.debugVisible()) {\n return;\n }\n\n this.open.set(false);\n }\n\n handleOverlayKeydown(event: KeyboardEvent): void {\n if (event.key === 'Escape') {\n event.preventDefault();\n this.close();\n }\n }\n\n handlePositionChange(event: ConnectedOverlayPositionChange): void {\n const pair = event.connectionPair;\n\n if (pair.overlayY === 'top') {\n this.overlaySide.set('bottom');\n return;\n }\n\n if (pair.overlayY === 'bottom') {\n this.overlaySide.set('top');\n return;\n }\n\n this.overlaySide.set(pair.overlayX === 'start' ? 'right' : 'left');\n }\n\n overlayPanelClasses(): string[] {\n return ['frame-popover-overlay', `frame-popover-overlay--${this.overlaySide()}`];\n }\n\n private syncCustomPropertiesToOverlay(): void {\n if (typeof getComputedStyle === 'undefined') {\n return;\n }\n\n const triggerElement = this.triggerElement;\n const overlayPane = document.querySelector<HTMLElement>('.cdk-overlay-pane.frame-popover-overlay');\n const panel = overlayPane?.querySelector<HTMLElement>('.frame-popover__content');\n\n if (!triggerElement || !overlayPane || !panel) {\n return;\n }\n\n const sourceStyles = getComputedStyle(triggerElement);\n\n for (let index = 0; index < sourceStyles.length; index += 1) {\n const propertyName = sourceStyles.item(index);\n\n if (!propertyName.startsWith('--frame-popover-')) {\n continue;\n }\n\n const propertyValue = sourceStyles.getPropertyValue(propertyName);\n overlayPane.style.setProperty(propertyName, propertyValue);\n panel.style.setProperty(propertyName, propertyValue);\n }\n }\n}\n","import { Directive, ElementRef, effect, inject, input } from '@angular/core';\n\nimport { FrPopoverContent } from './popover.content';\nimport { FR_POPOVER_CONTROLLER } from './popover.tokens';\n\n@Directive({\n selector: '[frPopoverTrigger]',\n host: {\n class: 'frame-popover__trigger',\n '[attr.aria-expanded]': 'root.isOpen()',\n '[attr.data-state]': 'root.isOpen() ? \"open\" : \"closed\"',\n '(click)': 'handleClick($event)',\n '(keydown)': 'handleKeydown($event)',\n },\n})\nexport class FrPopoverTrigger {\n readonly content = input<FrPopoverContent | null>(null, {\n alias: 'frPopoverTrigger',\n });\n\n protected readonly root = inject(FR_POPOVER_CONTROLLER);\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n constructor() {\n this.root.registerTrigger(this.elementRef.nativeElement);\n\n effect(() => {\n const content = this.content();\n\n if (content) {\n this.root.setContent(content);\n }\n });\n }\n\n protected handleClick(event: Event): void {\n event.preventDefault();\n this.root.setContent(this.content());\n this.root.toggle();\n }\n\n protected handleKeydown(event: KeyboardEvent): void {\n if (event.key === 'Escape') {\n event.preventDefault();\n this.root.close();\n return;\n }\n\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n this.root.setContent(this.content());\n this.root.toggle();\n }\n }\n}\n","export const FR_POPOVER_ALIGNMENTS = ['start', 'center', 'end'] as const;\nexport const FR_POPOVER_SIDES = ['top', 'right', 'bottom', 'left'] as const;\n\nexport type FrPopoverAlignment = (typeof FR_POPOVER_ALIGNMENTS)[number];\nexport type FrPopoverSide = (typeof FR_POPOVER_SIDES)[number];\n","import { NgModule } from '@angular/core';\nimport {\n FrPopover,\n FrPopoverBody,\n FrPopoverClose,\n FrPopoverContent,\n FrPopoverDescription,\n FrPopoverFooter,\n FrPopoverHeader,\n FrPopoverPanel,\n FrPopoverTitle,\n FrPopoverTrigger,\n} from './src/popover';\n\n@NgModule({\n imports: [\n FrPopover,\n FrPopoverBody,\n FrPopoverClose,\n FrPopoverContent,\n FrPopoverDescription,\n FrPopoverFooter,\n FrPopoverHeader,\n FrPopoverPanel,\n FrPopoverTitle,\n FrPopoverTrigger,\n ],\n exports: [\n FrPopover,\n FrPopoverBody,\n FrPopoverClose,\n FrPopoverContent,\n FrPopoverDescription,\n FrPopoverFooter,\n FrPopoverHeader,\n FrPopoverPanel,\n FrPopoverTitle,\n FrPopoverTrigger,\n ],\n})\nexport class FrPopoverModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["FrPopover"],"mappings":"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"}
1
+ {"version":3,"file":"frame-ui-ng-components-popover.mjs","sources":["../../../projects/components/popover/src/popover.position.ts","../../../projects/components/popover/src/popover.tokens.ts","../../../projects/components/popover/src/popover.content.ts","../../../projects/components/popover/src/popover.root.ts","../../../projects/components/popover/src/popover.trigger.ts","../../../projects/components/popover/src/popover.types.ts","../../../projects/components/popover/popover.module.ts","../../../projects/components/popover/frame-ui-ng-components-popover.ts"],"sourcesContent":["import { ConnectedPosition } from '@angular/cdk/overlay';\n\nimport { FrPopoverAlignment, FrPopoverSide } from './popover.types';\n\nexport function buildPopoverPositions(options: {\n align: FrPopoverAlignment;\n alignOffset: number;\n side: FrPopoverSide;\n sideOffset: number;\n}): ConnectedPosition[] {\n const primary = buildPosition(options.side, options);\n const opposite = oppositeSide(options.side);\n const fallback = buildPosition(opposite, {\n align: options.align,\n alignOffset: options.alignOffset,\n sideOffset: options.sideOffset,\n });\n\n return [primary, fallback];\n}\n\nfunction buildPosition(\n side: FrPopoverSide,\n options: {\n align: FrPopoverAlignment;\n alignOffset: number;\n sideOffset: number;\n },\n): ConnectedPosition {\n if (side === 'top' || side === 'bottom') {\n const isBottom = side === 'bottom';\n\n return {\n originX: options.align,\n originY: isBottom ? 'bottom' : 'top',\n overlayX: options.align,\n overlayY: isBottom ? 'top' : 'bottom',\n offsetX: options.alignOffset,\n offsetY: isBottom ? options.sideOffset : -options.sideOffset,\n };\n }\n\n const isRight = side === 'right';\n\n return {\n originX: isRight ? 'end' : 'start',\n originY: verticalAlign(options.align),\n overlayX: isRight ? 'start' : 'end',\n overlayY: verticalAlign(options.align),\n offsetX: isRight ? options.sideOffset : -options.sideOffset,\n offsetY: options.alignOffset,\n };\n}\n\nfunction verticalAlign(align: FrPopoverAlignment): 'bottom' | 'center' | 'top' {\n if (align === 'center') {\n return 'center';\n }\n\n return align === 'end' ? 'bottom' : 'top';\n}\n\nfunction oppositeSide(side: FrPopoverSide): FrPopoverSide {\n if (side === 'top') {\n return 'bottom';\n }\n\n if (side === 'bottom') {\n return 'top';\n }\n\n return side === 'left' ? 'right' : 'left';\n}\n","import { InjectionToken } from '@angular/core';\n\nimport { FrPopoverRoot } from './popover.root';\n\nexport const FR_POPOVER_CONTROLLER = new InjectionToken<FrPopoverRoot>(\n 'FrPopoverController',\n);\n","import { ConnectedPosition } from '@angular/cdk/overlay';\r\nimport { Directive, TemplateRef, booleanAttribute, inject, input } from '@angular/core';\r\n\r\nimport { buildPopoverPositions } from './popover.position';\r\nimport { FR_POPOVER_CONTROLLER } from './popover.tokens';\r\nimport { FrPopoverAlignment, FrPopoverSide } from './popover.types';\r\n\r\n/** Content slot for popover. */\r\n@Directive({\r\n selector: 'ng-template[frPopoverContent]',\r\n exportAs: 'frPopoverContent',\r\n})\r\nexport class FrPopoverContent {\r\n readonly templateRef = inject(TemplateRef<unknown>);\r\n\r\n readonly align = input<FrPopoverAlignment>('center');\r\n readonly alignOffset = input(0);\r\n readonly debugVisible = input(false, { transform: booleanAttribute });\r\n readonly side = input<FrPopoverSide>('bottom');\r\n readonly sideOffset = input(8);\r\n\r\n getPositions(): ConnectedPosition[] {\r\n return buildPopoverPositions({\r\n align: this.align(),\r\n alignOffset: this.alignOffset(),\r\n side: this.side(),\r\n sideOffset: this.sideOffset(),\r\n });\r\n }\r\n}\r\n\r\n/** Panel slot for popover. */\r\n@Directive({\r\n selector: '[frPopoverPanel]',\r\n host: {\r\n class: 'frame-popover__content',\r\n '[attr.data-side]': 'content.side()',\r\n role: 'dialog',\r\n tabindex: '-1',\r\n },\r\n})\r\nexport class FrPopoverPanel {\r\n protected readonly content = inject(FrPopoverContent);\r\n}\r\n\r\n/** Header slot for popover. */\r\n@Directive({\r\n selector: '[frPopoverHeader]',\r\n host: {\r\n class: 'frame-popover__header',\r\n },\r\n})\r\nexport class FrPopoverHeader {}\r\n\r\n/** Title slot for popover. */\r\n@Directive({\r\n selector: '[frPopoverTitle]',\r\n host: {\r\n class: 'frame-popover__title',\r\n },\r\n})\r\nexport class FrPopoverTitle {}\r\n\r\n/** Description slot for popover. */\r\n@Directive({\r\n selector: '[frPopoverDescription]',\r\n host: {\r\n class: 'frame-popover__description',\r\n },\r\n})\r\nexport class FrPopoverDescription {}\r\n\r\n/** Body slot for popover. */\r\n@Directive({\r\n selector: '[frPopoverBody]',\r\n host: {\r\n class: 'frame-popover__body',\r\n },\r\n})\r\nexport class FrPopoverBody {}\r\n\r\n/** Footer slot for popover. */\r\n@Directive({\r\n selector: '[frPopoverFooter]',\r\n host: {\r\n class: 'frame-popover__footer',\r\n },\r\n})\r\nexport class FrPopoverFooter {}\r\n\r\n/** Close control for popover. */\r\n@Directive({\r\n selector: '[frPopoverClose]',\r\n host: {\r\n class: 'frame-popover__close',\r\n '(click)': 'handleClick($event)',\r\n },\r\n})\r\nexport class FrPopoverClose {\r\n private readonly root = inject(FR_POPOVER_CONTROLLER);\r\n\r\n protected handleClick(event: Event): void {\r\n event.preventDefault();\r\n this.root.close();\r\n }\r\n}\r\n","import {\r\n CdkConnectedOverlay,\r\n CdkOverlayOrigin,\r\n ConnectedOverlayPositionChange,\r\n ConnectedPosition,\r\n} from '@angular/cdk/overlay';\r\nimport { NgTemplateOutlet } from '@angular/common';\r\nimport {\r\n ChangeDetectionStrategy,\r\n Component,\r\n afterNextRender,\r\n booleanAttribute,\r\n computed,\r\n input,\r\n model,\r\n signal,\r\n} from '@angular/core';\r\n\r\nimport { FrPopoverContent } from './popover.content';\r\nimport { buildPopoverPositions } from './popover.position';\r\nimport { FR_POPOVER_CONTROLLER } from './popover.tokens';\r\n\r\nconst DEFAULT_POSITIONS: ConnectedPosition[] = buildPopoverPositions({\r\n align: 'center',\r\n alignOffset: 0,\r\n side: 'bottom',\r\n sideOffset: 8,\r\n});\r\n\r\n/** Root controller for popover. */\r\n@Component({\r\n selector: 'frame-popover',\r\n exportAs: 'frPopover',\r\n imports: [CdkConnectedOverlay, CdkOverlayOrigin, NgTemplateOutlet],\r\n providers: [\r\n {\r\n provide: FR_POPOVER_CONTROLLER,\r\n useExisting: FrPopoverRoot,\r\n },\r\n ],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: {\r\n class: 'frame-popover',\r\n '[attr.data-state]': 'isOpen() ? \"open\" : \"closed\"',\r\n },\r\n template: `\r\n <span cdkOverlayOrigin #origin=\"cdkOverlayOrigin\" class=\"frame-popover__anchor\">\r\n <ng-content />\r\n </span>\r\n\r\n <ng-template\r\n cdkConnectedOverlay\r\n [cdkConnectedOverlayOrigin]=\"origin\"\r\n [cdkConnectedOverlayOpen]=\"isOpen()\"\r\n [cdkConnectedOverlayPositions]=\"positions()\"\r\n [cdkConnectedOverlayPanelClass]=\"overlayPanelClasses()\"\r\n [cdkConnectedOverlayPush]=\"true\"\r\n [cdkConnectedOverlayViewportMargin]=\"12\"\r\n [cdkConnectedOverlayHasBackdrop]=\"true\"\r\n [cdkConnectedOverlayBackdropClass]=\"'frame-popover__backdrop'\"\r\n (backdropClick)=\"close()\"\r\n (detach)=\"close()\"\r\n (overlayKeydown)=\"handleOverlayKeydown($event)\"\r\n (positionChange)=\"handlePositionChange($event)\"\r\n >\r\n <ng-container [ngTemplateOutlet]=\"content()?.templateRef ?? null\" />\r\n </ng-template>\r\n `,\r\n})\r\nexport class FrPopoverRoot {\r\n readonly defaultOpen = input(false, { transform: booleanAttribute });\r\n readonly debugVisible = input(false, { transform: booleanAttribute });\r\n readonly open = model(false);\r\n\r\n readonly content = signal<FrPopoverContent | null>(null);\r\n readonly overlaySide = signal('bottom');\r\n\r\n private triggerElement: HTMLElement | null = null;\r\n\r\n readonly isOpen = computed(() => this.open() || this.debugVisible());\r\n readonly positions = computed(() => this.content()?.getPositions() ?? DEFAULT_POSITIONS);\r\n\r\n constructor() {\r\n afterNextRender(() => {\r\n if (this.defaultOpen() || this.debugVisible()) {\r\n this.open.set(true);\r\n }\r\n });\r\n }\r\n\r\n registerTrigger(trigger: HTMLElement): void {\r\n this.triggerElement = trigger;\r\n }\r\n\r\n setContent(content: unknown | null): void {\r\n this.content.set(content instanceof FrPopoverContent ? content : null);\r\n }\r\n\r\n toggle(): void {\r\n if (this.isOpen()) {\r\n this.close();\r\n return;\r\n }\r\n\r\n this.openPopover();\r\n }\r\n\r\n openPopover(): void {\r\n if (!this.content()) {\r\n return;\r\n }\r\n\r\n this.open.set(true);\r\n queueMicrotask(() => this.syncCustomPropertiesToOverlay());\r\n }\r\n\r\n close(): void {\r\n if (this.debugVisible()) {\r\n return;\r\n }\r\n\r\n this.open.set(false);\r\n }\r\n\r\n handleOverlayKeydown(event: KeyboardEvent): void {\r\n if (event.key === 'Escape') {\r\n event.preventDefault();\r\n this.close();\r\n }\r\n }\r\n\r\n handlePositionChange(event: ConnectedOverlayPositionChange): void {\r\n const pair = event.connectionPair;\r\n\r\n if (pair.overlayY === 'top') {\r\n this.overlaySide.set('bottom');\r\n return;\r\n }\r\n\r\n if (pair.overlayY === 'bottom') {\r\n this.overlaySide.set('top');\r\n return;\r\n }\r\n\r\n this.overlaySide.set(pair.overlayX === 'start' ? 'right' : 'left');\r\n }\r\n\r\n overlayPanelClasses(): string[] {\r\n return ['frame-popover-overlay', `frame-popover-overlay--${this.overlaySide()}`];\r\n }\r\n\r\n private syncCustomPropertiesToOverlay(): void {\r\n if (typeof getComputedStyle === 'undefined') {\r\n return;\r\n }\r\n\r\n const triggerElement = this.triggerElement;\r\n const overlayPane = document.querySelector<HTMLElement>('.cdk-overlay-pane.frame-popover-overlay');\r\n const panel = overlayPane?.querySelector<HTMLElement>('.frame-popover__content');\r\n\r\n if (!triggerElement || !overlayPane || !panel) {\r\n return;\r\n }\r\n\r\n const sourceStyles = getComputedStyle(triggerElement);\r\n\r\n for (let index = 0; index < sourceStyles.length; index += 1) {\r\n const propertyName = sourceStyles.item(index);\r\n\r\n if (!propertyName.startsWith('--frame-popover-')) {\r\n continue;\r\n }\r\n\r\n const propertyValue = sourceStyles.getPropertyValue(propertyName);\r\n overlayPane.style.setProperty(propertyName, propertyValue);\r\n panel.style.setProperty(propertyName, propertyValue);\r\n }\r\n }\r\n}\r\n","import { Directive, DoCheck, ElementRef, inject, input } from '@angular/core';\r\n\r\nimport { FrPopoverContent } from './popover.content';\r\nimport { FR_POPOVER_CONTROLLER } from './popover.tokens';\r\n\r\n/** Trigger control for popover. */\r\n@Directive({\r\n selector: '[frPopoverTrigger]',\r\n host: {\r\n class: 'frame-popover__trigger',\r\n '[attr.aria-expanded]': 'root.isOpen()',\r\n '[attr.data-state]': 'root.isOpen() ? \"open\" : \"closed\"',\r\n '(click)': 'handleClick($event)',\r\n '(keydown)': 'handleKeydown($event)',\r\n },\r\n})\r\nexport class FrPopoverTrigger implements DoCheck {\r\n readonly content = input<FrPopoverContent | null>(null, {\r\n alias: 'frPopoverTrigger',\r\n });\r\n\r\n protected readonly root = inject(FR_POPOVER_CONTROLLER);\r\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\r\n private lastContent: FrPopoverContent | null = null;\r\n\r\n constructor() {\r\n this.root.registerTrigger(this.elementRef.nativeElement);\r\n }\r\n\r\n ngDoCheck(): void {\r\n const content = this.content();\r\n\r\n if (content && content !== this.lastContent) {\r\n this.root.setContent(content);\r\n }\r\n\r\n this.lastContent = content;\r\n }\r\n\r\n protected handleClick(event: Event): void {\r\n event.preventDefault();\r\n this.root.setContent(this.content());\r\n this.root.toggle();\r\n }\r\n\r\n protected handleKeydown(event: KeyboardEvent): void {\r\n if (event.key === 'Escape') {\r\n event.preventDefault();\r\n this.root.close();\r\n return;\r\n }\r\n\r\n if (event.key === 'Enter' || event.key === ' ') {\r\n event.preventDefault();\r\n this.root.setContent(this.content());\r\n this.root.toggle();\r\n }\r\n }\r\n}\r\n","export const FR_POPOVER_ALIGNMENTS = ['start', 'center', 'end'] as const;\nexport const FR_POPOVER_SIDES = ['top', 'right', 'bottom', 'left'] as const;\n\nexport type FrPopoverAlignment = (typeof FR_POPOVER_ALIGNMENTS)[number];\nexport type FrPopoverSide = (typeof FR_POPOVER_SIDES)[number];\n","import { NgModule } from '@angular/core';\nimport {\n FrPopover,\n FrPopoverBody,\n FrPopoverClose,\n FrPopoverContent,\n FrPopoverDescription,\n FrPopoverFooter,\n FrPopoverHeader,\n FrPopoverPanel,\n FrPopoverTitle,\n FrPopoverTrigger,\n} from './src/popover';\n\n@NgModule({\n imports: [\n FrPopover,\n FrPopoverBody,\n FrPopoverClose,\n FrPopoverContent,\n FrPopoverDescription,\n FrPopoverFooter,\n FrPopoverHeader,\n FrPopoverPanel,\n FrPopoverTitle,\n FrPopoverTrigger,\n ],\n exports: [\n FrPopover,\n FrPopoverBody,\n FrPopoverClose,\n FrPopoverContent,\n FrPopoverDescription,\n FrPopoverFooter,\n FrPopoverHeader,\n FrPopoverPanel,\n FrPopoverTitle,\n FrPopoverTrigger,\n ],\n})\nexport class FrPopoverModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["FrPopover"],"mappings":";;;;;AAIM,SAAU,qBAAqB,CAAC,OAKrC,EAAA;IACC,MAAM,OAAO,GAAG,aAAa,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC;IACpD,MAAM,QAAQ,GAAG,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC;AAC3C,IAAA,MAAM,QAAQ,GAAG,aAAa,CAAC,QAAQ,EAAE;QACvC,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,WAAW,EAAE,OAAO,CAAC,WAAW;QAChC,UAAU,EAAE,OAAO,CAAC,UAAU;AAC/B,KAAA,CAAC;AAEF,IAAA,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC;AAC5B;AAEA,SAAS,aAAa,CACpB,IAAmB,EACnB,OAIC,EAAA;IAED,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,QAAQ,EAAE;AACvC,QAAA,MAAM,QAAQ,GAAG,IAAI,KAAK,QAAQ;QAElC,OAAO;YACL,OAAO,EAAE,OAAO,CAAC,KAAK;YACtB,OAAO,EAAE,QAAQ,GAAG,QAAQ,GAAG,KAAK;YACpC,QAAQ,EAAE,OAAO,CAAC,KAAK;YACvB,QAAQ,EAAE,QAAQ,GAAG,KAAK,GAAG,QAAQ;YACrC,OAAO,EAAE,OAAO,CAAC,WAAW;AAC5B,YAAA,OAAO,EAAE,QAAQ,GAAG,OAAO,CAAC,UAAU,GAAG,CAAC,OAAO,CAAC,UAAU;SAC7D;IACH;AAEA,IAAA,MAAM,OAAO,GAAG,IAAI,KAAK,OAAO;IAEhC,OAAO;QACL,OAAO,EAAE,OAAO,GAAG,KAAK,GAAG,OAAO;AAClC,QAAA,OAAO,EAAE,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC;QACrC,QAAQ,EAAE,OAAO,GAAG,OAAO,GAAG,KAAK;AACnC,QAAA,QAAQ,EAAE,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC;AACtC,QAAA,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,UAAU,GAAG,CAAC,OAAO,CAAC,UAAU;QAC3D,OAAO,EAAE,OAAO,CAAC,WAAW;KAC7B;AACH;AAEA,SAAS,aAAa,CAAC,KAAyB,EAAA;AAC9C,IAAA,IAAI,KAAK,KAAK,QAAQ,EAAE;AACtB,QAAA,OAAO,QAAQ;IACjB;IAEA,OAAO,KAAK,KAAK,KAAK,GAAG,QAAQ,GAAG,KAAK;AAC3C;AAEA,SAAS,YAAY,CAAC,IAAmB,EAAA;AACvC,IAAA,IAAI,IAAI,KAAK,KAAK,EAAE;AAClB,QAAA,OAAO,QAAQ;IACjB;AAEA,IAAA,IAAI,IAAI,KAAK,QAAQ,EAAE;AACrB,QAAA,OAAO,KAAK;IACd;IAEA,OAAO,IAAI,KAAK,MAAM,GAAG,OAAO,GAAG,MAAM;AAC3C;;ACpEO,MAAM,qBAAqB,GAAG,IAAI,cAAc,CACrD,qBAAqB,CACtB;;ACCD;MAKa,gBAAgB,CAAA;AAClB,IAAA,WAAW,GAAG,MAAM,EAAC,WAAoB,EAAC;AAE1C,IAAA,KAAK,GAAG,KAAK,CAAqB,QAAQ,4EAAC;AAC3C,IAAA,WAAW,GAAG,KAAK,CAAC,CAAC,kFAAC;IACtB,YAAY,GAAG,KAAK,CAAC,KAAK,oFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AAC5D,IAAA,IAAI,GAAG,KAAK,CAAgB,QAAQ,2EAAC;AACrC,IAAA,UAAU,GAAG,KAAK,CAAC,CAAC,iFAAC;IAE9B,YAAY,GAAA;AACV,QAAA,OAAO,qBAAqB,CAAC;AAC3B,YAAA,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE;AACnB,YAAA,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE;AAC/B,YAAA,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE;AACjB,YAAA,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE;AAC9B,SAAA,CAAC;IACJ;wGAhBW,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAhB,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,+BAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,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,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,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,QAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAJ5B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,+BAA+B;AACzC,oBAAA,QAAQ,EAAE,kBAAkB;AAC7B,iBAAA;;AAoBD;MAUa,cAAc,CAAA;AACN,IAAA,OAAO,GAAG,MAAM,CAAC,gBAAgB,CAAC;wGAD1C,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAd,cAAc,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,EAAA,cAAA,EAAA,wBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAAd,cAAc,EAAA,UAAA,EAAA,CAAA;kBAT1B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,kBAAkB;AAC5B,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,wBAAwB;AAC/B,wBAAA,kBAAkB,EAAE,gBAAgB;AACpC,wBAAA,IAAI,EAAE,QAAQ;AACd,wBAAA,QAAQ,EAAE,IAAI;AACf,qBAAA;AACF,iBAAA;;AAKD;MAOa,eAAe,CAAA;wGAAf,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAf,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,uBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAN3B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,mBAAmB;AAC7B,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,uBAAuB;AAC/B,qBAAA;AACF,iBAAA;;AAGD;MAOa,cAAc,CAAA;wGAAd,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAd,cAAc,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,sBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAAd,cAAc,EAAA,UAAA,EAAA,CAAA;kBAN1B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,kBAAkB;AAC5B,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,sBAAsB;AAC9B,qBAAA;AACF,iBAAA;;AAGD;MAOa,oBAAoB,CAAA;wGAApB,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAApB,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,4BAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAApB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBANhC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,wBAAwB;AAClC,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,4BAA4B;AACpC,qBAAA;AACF,iBAAA;;AAGD;MAOa,aAAa,CAAA;wGAAb,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAb,aAAa,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,qBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAAb,aAAa,EAAA,UAAA,EAAA,CAAA;kBANzB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,iBAAiB;AAC3B,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,qBAAqB;AAC7B,qBAAA;AACF,iBAAA;;AAGD;MAOa,eAAe,CAAA;wGAAf,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAf,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,uBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAN3B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,mBAAmB;AAC7B,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,uBAAuB;AAC/B,qBAAA;AACF,iBAAA;;AAGD;MAQa,cAAc,CAAA;AACR,IAAA,IAAI,GAAG,MAAM,CAAC,qBAAqB,CAAC;AAE3C,IAAA,WAAW,CAAC,KAAY,EAAA;QAChC,KAAK,CAAC,cAAc,EAAE;AACtB,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;IACnB;wGANW,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAd,cAAc,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,qBAAA,EAAA,EAAA,cAAA,EAAA,sBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAAd,cAAc,EAAA,UAAA,EAAA,CAAA;kBAP1B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,kBAAkB;AAC5B,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,sBAAsB;AAC7B,wBAAA,SAAS,EAAE,qBAAqB;AACjC,qBAAA;AACF,iBAAA;;;AC3ED,MAAM,iBAAiB,GAAwB,qBAAqB,CAAC;AACnE,IAAA,KAAK,EAAE,QAAQ;AACf,IAAA,WAAW,EAAE,CAAC;AACd,IAAA,IAAI,EAAE,QAAQ;AACd,IAAA,UAAU,EAAE,CAAC;AACd,CAAA,CAAC;AAEF;MAwCa,aAAa,CAAA;IACf,WAAW,GAAG,KAAK,CAAC,KAAK,mFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;IAC3D,YAAY,GAAG,KAAK,CAAC,KAAK,oFAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AAC5D,IAAA,IAAI,GAAG,KAAK,CAAC,KAAK,2EAAC;AAEnB,IAAA,OAAO,GAAG,MAAM,CAA0B,IAAI,8EAAC;AAC/C,IAAA,WAAW,GAAG,MAAM,CAAC,QAAQ,kFAAC;IAE/B,cAAc,GAAuB,IAAI;AAExC,IAAA,MAAM,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC,YAAY,EAAE,6EAAC;AAC3D,IAAA,SAAS,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,EAAE,YAAY,EAAE,IAAI,iBAAiB,gFAAC;AAExF,IAAA,WAAA,GAAA;QACE,eAAe,CAAC,MAAK;YACnB,IAAI,IAAI,CAAC,WAAW,EAAE,IAAI,IAAI,CAAC,YAAY,EAAE,EAAE;AAC7C,gBAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;YACrB;AACF,QAAA,CAAC,CAAC;IACJ;AAEA,IAAA,eAAe,CAAC,OAAoB,EAAA;AAClC,QAAA,IAAI,CAAC,cAAc,GAAG,OAAO;IAC/B;AAEA,IAAA,UAAU,CAAC,OAAuB,EAAA;AAChC,QAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,YAAY,gBAAgB,GAAG,OAAO,GAAG,IAAI,CAAC;IACxE;IAEA,MAAM,GAAA;AACJ,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE;YACjB,IAAI,CAAC,KAAK,EAAE;YACZ;QACF;QAEA,IAAI,CAAC,WAAW,EAAE;IACpB;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE;YACnB;QACF;AAEA,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;QACnB,cAAc,CAAC,MAAM,IAAI,CAAC,6BAA6B,EAAE,CAAC;IAC5D;IAEA,KAAK,GAAA;AACH,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE,EAAE;YACvB;QACF;AAEA,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;IACtB;AAEA,IAAA,oBAAoB,CAAC,KAAoB,EAAA;AACvC,QAAA,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,EAAE;YAC1B,KAAK,CAAC,cAAc,EAAE;YACtB,IAAI,CAAC,KAAK,EAAE;QACd;IACF;AAEA,IAAA,oBAAoB,CAAC,KAAqC,EAAA;AACxD,QAAA,MAAM,IAAI,GAAG,KAAK,CAAC,cAAc;AAEjC,QAAA,IAAI,IAAI,CAAC,QAAQ,KAAK,KAAK,EAAE;AAC3B,YAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC;YAC9B;QACF;AAEA,QAAA,IAAI,IAAI,CAAC,QAAQ,KAAK,QAAQ,EAAE;AAC9B,YAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC;YAC3B;QACF;AAEA,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,KAAK,OAAO,GAAG,OAAO,GAAG,MAAM,CAAC;IACpE;IAEA,mBAAmB,GAAA;QACjB,OAAO,CAAC,uBAAuB,EAAE,CAAA,uBAAA,EAA0B,IAAI,CAAC,WAAW,EAAE,CAAA,CAAE,CAAC;IAClF;IAEQ,6BAA6B,GAAA;AACnC,QAAA,IAAI,OAAO,gBAAgB,KAAK,WAAW,EAAE;YAC3C;QACF;AAEA,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc;QAC1C,MAAM,WAAW,GAAG,QAAQ,CAAC,aAAa,CAAc,yCAAyC,CAAC;QAClG,MAAM,KAAK,GAAG,WAAW,EAAE,aAAa,CAAc,yBAAyB,CAAC;QAEhF,IAAI,CAAC,cAAc,IAAI,CAAC,WAAW,IAAI,CAAC,KAAK,EAAE;YAC7C;QACF;AAEA,QAAA,MAAM,YAAY,GAAG,gBAAgB,CAAC,cAAc,CAAC;AAErD,QAAA,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,YAAY,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE;YAC3D,MAAM,YAAY,GAAG,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC;YAE7C,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,kBAAkB,CAAC,EAAE;gBAChD;YACF;YAEA,MAAM,aAAa,GAAG,YAAY,CAAC,gBAAgB,CAAC,YAAY,CAAC;YACjE,WAAW,CAAC,KAAK,CAAC,WAAW,CAAC,YAAY,EAAE,aAAa,CAAC;YAC1D,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,YAAY,EAAE,aAAa,CAAC;QACtD;IACF;wGA5GW,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAb,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,aAAa,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,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,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,IAAA,EAAA,YAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,kCAAA,EAAA,EAAA,cAAA,EAAA,eAAA,EAAA,EAAA,SAAA,EAnCb;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,qBAAqB;AAC9B,gBAAA,WAAW,EAAE,aAAa;AAC3B,aAAA;SACF,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAMS,CAAA;;;;;;;;;;;;;;;;;;;;;;AAsBT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAlCS,mBAAmB,EAAA,QAAA,EAAA,qEAAA,EAAA,MAAA,EAAA,CAAA,2BAAA,EAAA,8BAAA,EAAA,qCAAA,EAAA,4BAAA,EAAA,4BAAA,EAAA,0BAAA,EAAA,2BAAA,EAAA,6BAAA,EAAA,8BAAA,EAAA,kCAAA,EAAA,+BAAA,EAAA,mCAAA,EAAA,mCAAA,EAAA,yBAAA,EAAA,iCAAA,EAAA,sCAAA,EAAA,gCAAA,EAAA,iCAAA,EAAA,uCAAA,EAAA,kCAAA,EAAA,yBAAA,EAAA,wCAAA,EAAA,+BAAA,EAAA,+BAAA,EAAA,qBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,qBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,gBAAgB,EAAA,QAAA,EAAA,4DAAA,EAAA,QAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAoCtD,aAAa,EAAA,UAAA,EAAA,CAAA;kBAvCzB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,eAAe;AACzB,oBAAA,QAAQ,EAAE,WAAW;AACrB,oBAAA,OAAO,EAAE,CAAC,mBAAmB,EAAE,gBAAgB,EAAE,gBAAgB,CAAC;AAClE,oBAAA,SAAS,EAAE;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,qBAAqB;AAC9B,4BAAA,WAAW,EAAA,aAAe;AAC3B,yBAAA;AACF,qBAAA;oBACD,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,eAAe;AACtB,wBAAA,mBAAmB,EAAE,8BAA8B;AACpD,qBAAA;AACD,oBAAA,QAAQ,EAAE,CAAA;;;;;;;;;;;;;;;;;;;;;;AAsBT,EAAA,CAAA;AACF,iBAAA;;;AC/DD;MAWa,gBAAgB,CAAA;IAClB,OAAO,GAAG,KAAK,CAA0B,IAAI,+EACpD,KAAK,EAAE,kBAAkB,EAAA,CACzB;AAEiB,IAAA,IAAI,GAAG,MAAM,CAAC,qBAAqB,CAAC;AACtC,IAAA,UAAU,GAAG,MAAM,CAA0B,UAAU,CAAC;IACjE,WAAW,GAA4B,IAAI;AAEnD,IAAA,WAAA,GAAA;QACE,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC;IAC1D;IAEA,SAAS,GAAA;AACP,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE;QAE9B,IAAI,OAAO,IAAI,OAAO,KAAK,IAAI,CAAC,WAAW,EAAE;AAC3C,YAAA,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;QAC/B;AAEA,QAAA,IAAI,CAAC,WAAW,GAAG,OAAO;IAC5B;AAEU,IAAA,WAAW,CAAC,KAAY,EAAA;QAChC,KAAK,CAAC,cAAc,EAAE;QACtB,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;AACpC,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;IACpB;AAEU,IAAA,aAAa,CAAC,KAAoB,EAAA;AAC1C,QAAA,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,EAAE;YAC1B,KAAK,CAAC,cAAc,EAAE;AACtB,YAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;YACjB;QACF;AAEA,QAAA,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,EAAE;YAC9C,KAAK,CAAC,cAAc,EAAE;YACtB,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;AACpC,YAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;QACpB;IACF;wGAzCW,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAhB,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,qBAAA,EAAA,SAAA,EAAA,uBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,oBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,uCAAA,EAAA,EAAA,cAAA,EAAA,wBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAV5B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,oBAAoB;AAC9B,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,wBAAwB;AAC/B,wBAAA,sBAAsB,EAAE,eAAe;AACvC,wBAAA,mBAAmB,EAAE,mCAAmC;AACxD,wBAAA,SAAS,EAAE,qBAAqB;AAChC,wBAAA,WAAW,EAAE,uBAAuB;AACrC,qBAAA;AACF,iBAAA;;;ACfM,MAAM,qBAAqB,GAAG,CAAC,OAAO,EAAE,QAAQ,EAAE,KAAK;AACvD,MAAM,gBAAgB,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM;;MCuCpD,eAAe,CAAA;wGAAf,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;AAAf,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,YAxBxBA,aAAS;YACT,aAAa;YACb,cAAc;YACd,gBAAgB;YAChB,oBAAoB;YACpB,eAAe;YACf,eAAe;YACf,cAAc;YACd,cAAc;AACd,YAAA,gBAAgB,aAGhBA,aAAS;YACT,aAAa;YACb,cAAc;YACd,gBAAgB;YAChB,oBAAoB;YACpB,eAAe;YACf,eAAe;YACf,cAAc;YACd,cAAc;YACd,gBAAgB,CAAA,EAAA,CAAA;yGAGP,eAAe,EAAA,CAAA;;4FAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBA1B3B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE;wBACPA,aAAS;wBACT,aAAa;wBACb,cAAc;wBACd,gBAAgB;wBAChB,oBAAoB;wBACpB,eAAe;wBACf,eAAe;wBACf,cAAc;wBACd,cAAc;wBACd,gBAAgB;AACjB,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACPA,aAAS;wBACT,aAAa;wBACb,cAAc;wBACd,gBAAgB;wBAChB,oBAAoB;wBACpB,eAAe;wBACf,eAAe;wBACf,cAAc;wBACd,cAAc;wBACd,gBAAgB;AACjB,qBAAA;AACF,iBAAA;;;ACvCD;;AAEG;;;;"}
@@ -1,5 +1,6 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { input, computed, Directive, NgModule } from '@angular/core';
3
+ import { clampNumber } from '@frame-ui-ng/components/utils';
3
4
 
4
5
  function coerceProgressValue(value) {
5
6
  if (value === null || value === undefined || value === '') {
@@ -12,6 +13,7 @@ function coerceProgressMax(value) {
12
13
  const parsed = Number(value);
13
14
  return Number.isFinite(parsed) && parsed > 0 ? parsed : 100;
14
15
  }
16
+ /** Progress bar host with value and max state. */
15
17
  class FrProgress {
16
18
  value = input(0, { ...(ngDevMode ? { debugName: "value" } : /* istanbul ignore next */ {}), transform: coerceProgressValue });
17
19
  max = input(100, { ...(ngDevMode ? { debugName: "max" } : /* istanbul ignore next */ {}), transform: coerceProgressMax });
@@ -21,7 +23,7 @@ class FrProgress {
21
23
  if (value === null) {
22
24
  return 0;
23
25
  }
24
- return Math.min(Math.max(value, 0), this.max());
26
+ return clampNumber(value, 0, this.max());
25
27
  }, ...(ngDevMode ? [{ debugName: "normalizedValue" }] : /* istanbul ignore next */ []));
26
28
  percentage = computed(() => (this.normalizedValue() / this.max()) * 100, ...(ngDevMode ? [{ debugName: "percentage" }] : /* istanbul ignore next */ []));
27
29
  state = computed(() => {
@@ -53,6 +55,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
53
55
  },
54
56
  }]
55
57
  }], propDecorators: { value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }], max: [{ type: i0.Input, args: [{ isSignal: true, alias: "max", required: false }] }] } });
58
+ /** Indicator slot for progress. */
56
59
  class FrProgressIndicator {
57
60
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrProgressIndicator, deps: [], target: i0.ɵɵFactoryTarget.Directive });
58
61
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrProgressIndicator, isStandalone: true, selector: "[frProgressIndicator], frame-progress-indicator", host: { classAttribute: "frame-progress__indicator" }, ngImport: i0 });
@@ -1 +1 @@
1
- {"version":3,"file":"frame-ui-ng-components-progress.mjs","sources":["../../../projects/components/progress/src/progress.ts","../../../projects/components/progress/progress.module.ts","../../../projects/components/progress/frame-ui-ng-components-progress.ts"],"sourcesContent":["import { Directive, computed, input } from '@angular/core';\n\nfunction coerceProgressValue(value: unknown): number | null {\n if (value === null || value === undefined || value === '') {\n return null;\n }\n\n const parsed = Number(value);\n return Number.isFinite(parsed) ? parsed : null;\n}\n\nfunction coerceProgressMax(value: unknown): number {\n const parsed = Number(value);\n return Number.isFinite(parsed) && parsed > 0 ? parsed : 100;\n}\n\n@Directive({\n selector: '[frProgress], frame-progress',\n exportAs: 'frProgress',\n host: {\n class: 'frame-progress',\n role: 'progressbar',\n '[attr.aria-valuemin]': 'isIndeterminate() ? null : 0',\n '[attr.aria-valuemax]': 'isIndeterminate() ? null : max()',\n '[attr.aria-valuenow]': 'isIndeterminate() ? null : normalizedValue()',\n '[attr.data-state]': 'state()',\n '[attr.data-value]': 'isIndeterminate() ? null : normalizedValue()',\n '[attr.data-max]': 'isIndeterminate() ? null : max()',\n '[style.--frame-progress-value]': 'isIndeterminate() ? null : normalizedValue()',\n '[style.--frame-progress-max]': 'isIndeterminate() ? null : max()',\n '[style.--frame-progress-percent]': 'isIndeterminate() ? null : percentage() + \"%\"',\n },\n})\nexport class FrProgress {\n readonly value = input<number | null, unknown>(0, { transform: coerceProgressValue });\n readonly max = input<number, unknown>(100, { transform: coerceProgressMax });\n\n readonly isIndeterminate = computed(() => this.value() === null);\n\n readonly normalizedValue = computed(() => {\n const value = this.value();\n\n if (value === null) {\n return 0;\n }\n\n return Math.min(Math.max(value, 0), this.max());\n });\n\n readonly percentage = computed(() => (this.normalizedValue() / this.max()) * 100);\n\n readonly state = computed(() => {\n if (this.isIndeterminate()) {\n return 'indeterminate';\n }\n\n return this.normalizedValue() >= this.max() ? 'complete' : 'loading';\n });\n}\n\n@Directive({\n selector: '[frProgressIndicator], frame-progress-indicator',\n host: {\n class: 'frame-progress__indicator',\n },\n})\nexport class FrProgressIndicator {}\n","import { NgModule } from '@angular/core';\nimport {\n FrProgress,\n FrProgressIndicator,\n} from './src/progress';\n\n@NgModule({\n imports: [\n FrProgress,\n FrProgressIndicator,\n ],\n exports: [\n FrProgress,\n FrProgressIndicator,\n ],\n})\nexport class FrProgressModule {}\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-progress.mjs","sources":["../../../projects/components/progress/src/progress.ts","../../../projects/components/progress/progress.module.ts","../../../projects/components/progress/frame-ui-ng-components-progress.ts"],"sourcesContent":["import { Directive, computed, input } from '@angular/core';\r\nimport { clampNumber } from '@frame-ui-ng/components/utils';\r\n\r\nfunction coerceProgressValue(value: unknown): number | null {\r\n if (value === null || value === undefined || value === '') {\r\n return null;\r\n }\r\n\r\n const parsed = Number(value);\r\n return Number.isFinite(parsed) ? parsed : null;\r\n}\r\n\r\nfunction coerceProgressMax(value: unknown): number {\r\n const parsed = Number(value);\r\n return Number.isFinite(parsed) && parsed > 0 ? parsed : 100;\r\n}\r\n\r\n/** Progress bar host with value and max state. */\r\n@Directive({\r\n selector: '[frProgress], frame-progress',\r\n exportAs: 'frProgress',\r\n host: {\r\n class: 'frame-progress',\r\n role: 'progressbar',\r\n '[attr.aria-valuemin]': 'isIndeterminate() ? null : 0',\r\n '[attr.aria-valuemax]': 'isIndeterminate() ? null : max()',\r\n '[attr.aria-valuenow]': 'isIndeterminate() ? null : normalizedValue()',\r\n '[attr.data-state]': 'state()',\r\n '[attr.data-value]': 'isIndeterminate() ? null : normalizedValue()',\r\n '[attr.data-max]': 'isIndeterminate() ? null : max()',\r\n '[style.--frame-progress-value]': 'isIndeterminate() ? null : normalizedValue()',\r\n '[style.--frame-progress-max]': 'isIndeterminate() ? null : max()',\r\n '[style.--frame-progress-percent]': 'isIndeterminate() ? null : percentage() + \"%\"',\r\n },\r\n})\r\nexport class FrProgress {\r\n readonly value = input<number | null, unknown>(0, { transform: coerceProgressValue });\r\n readonly max = input<number, unknown>(100, { transform: coerceProgressMax });\r\n\r\n readonly isIndeterminate = computed(() => this.value() === null);\r\n\r\n readonly normalizedValue = computed(() => {\r\n const value = this.value();\r\n\r\n if (value === null) {\r\n return 0;\r\n }\r\n\r\n return clampNumber(value, 0, this.max());\r\n });\r\n\r\n readonly percentage = computed(() => (this.normalizedValue() / this.max()) * 100);\r\n\r\n readonly state = computed(() => {\r\n if (this.isIndeterminate()) {\r\n return 'indeterminate';\r\n }\r\n\r\n return this.normalizedValue() >= this.max() ? 'complete' : 'loading';\r\n });\r\n}\r\n\r\n/** Indicator slot for progress. */\r\n@Directive({\r\n selector: '[frProgressIndicator], frame-progress-indicator',\r\n host: {\r\n class: 'frame-progress__indicator',\r\n },\r\n})\r\nexport class FrProgressIndicator {}\r\n\r\n","import { NgModule } from '@angular/core';\nimport {\n FrProgress,\n FrProgressIndicator,\n} from './src/progress';\n\n@NgModule({\n imports: [\n FrProgress,\n FrProgressIndicator,\n ],\n exports: [\n FrProgress,\n FrProgressIndicator,\n ],\n})\nexport class FrProgressModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -3,6 +3,7 @@ import { input, booleanAttribute, Directive, NgModule } from '@angular/core';
3
3
 
4
4
  const FR_RADIO_GROUP_ORIENTATIONS = ['vertical', 'horizontal'];
5
5
  const FR_RADIO_GROUP_VARIANTS = ['default', 'cards'];
6
+ /** Radio group host with orientation and variant controls. */
6
7
  class FrRadioGroup {
7
8
  orientation = input('vertical', ...(ngDevMode ? [{ debugName: "orientation" }] : /* istanbul ignore next */ []));
8
9
  variant = input('default', ...(ngDevMode ? [{ debugName: "variant" }] : /* istanbul ignore next */ []));
@@ -24,6 +25,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
24
25
  },
25
26
  }]
26
27
  }], propDecorators: { orientation: [{ type: i0.Input, args: [{ isSignal: true, alias: "orientation", required: false }] }], variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }] } });
28
+ /** Item slot for radio group. */
27
29
  class FrRadioGroupItem {
28
30
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrRadioGroupItem, deps: [], target: i0.ɵɵFactoryTarget.Directive });
29
31
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrRadioGroupItem, isStandalone: true, selector: "input[type=radio][frRadioGroupItem]", host: { classAttribute: "frame-radio-group__item" }, ngImport: i0 });
@@ -37,6 +39,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
37
39
  },
38
40
  }]
39
41
  }] });
42
+ /** Field slot for radio group. */
40
43
  class FrRadioGroupField {
41
44
  disabled = input(false, { ...(ngDevMode ? { debugName: "disabled" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
42
45
  invalid = input(false, { ...(ngDevMode ? { debugName: "invalid" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
@@ -56,6 +59,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
56
59
  },
57
60
  }]
58
61
  }], propDecorators: { disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], invalid: [{ type: i0.Input, args: [{ isSignal: true, alias: "invalid", required: false }] }] } });
62
+ /** Card layout option for radio group choices. */
59
63
  class FrRadioGroupCard {
60
64
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrRadioGroupCard, deps: [], target: i0.ɵɵFactoryTarget.Directive });
61
65
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrRadioGroupCard, isStandalone: true, selector: "label[frRadioGroupCard]", host: { classAttribute: "frame-radio-group__card" }, ngImport: i0 });
@@ -69,6 +73,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
69
73
  },
70
74
  }]
71
75
  }] });
76
+ /** Meta slot for radio group card. */
72
77
  class FrRadioGroupCardMeta {
73
78
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: FrRadioGroupCardMeta, deps: [], target: i0.ɵɵFactoryTarget.Directive });
74
79
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: FrRadioGroupCardMeta, isStandalone: true, selector: "[frRadioGroupCardMeta]", host: { classAttribute: "frame-radio-group__card-meta" }, ngImport: i0 });
@@ -1 +1 @@
1
- {"version":3,"file":"frame-ui-ng-components-radio-group.mjs","sources":["../../../projects/components/radio-group/src/radio-group.ts","../../../projects/components/radio-group/radio-group.module.ts","../../../projects/components/radio-group/frame-ui-ng-components-radio-group.ts"],"sourcesContent":["import { Directive, booleanAttribute, input } from '@angular/core';\n\nexport const FR_RADIO_GROUP_ORIENTATIONS = ['vertical', 'horizontal'] as const;\nexport const FR_RADIO_GROUP_VARIANTS = ['default', 'cards'] as const;\n\nexport type FrRadioGroupOrientation = (typeof FR_RADIO_GROUP_ORIENTATIONS)[number];\nexport type FrRadioGroupVariant = (typeof FR_RADIO_GROUP_VARIANTS)[number];\n\n@Directive({\n selector: '[frRadioGroup], frame-radio-group',\n exportAs: 'frRadioGroup',\n host: {\n class: 'frame-radio-group',\n role: 'radiogroup',\n '[attr.data-orientation]': 'orientation()',\n '[attr.data-variant]': 'variant()',\n '[attr.data-disabled]': 'disabled() ? \"\" : null',\n },\n})\nexport class FrRadioGroup {\n readonly orientation = input<FrRadioGroupOrientation>('vertical');\n readonly variant = input<FrRadioGroupVariant>('default');\n readonly disabled = input(false, { transform: booleanAttribute });\n}\n\n@Directive({\n selector: 'input[type=radio][frRadioGroupItem]',\n host: {\n class: 'frame-radio-group__item',\n },\n})\nexport class FrRadioGroupItem {}\n\n@Directive({\n selector: 'label[frRadioGroupField]',\n host: {\n class: 'frame-field frame-radio-group__field',\n 'data-orientation': 'horizontal',\n '[attr.data-disabled]': 'disabled() ? \"\" : null',\n '[attr.data-invalid]': 'invalid() ? \"\" : null',\n role: 'group',\n },\n})\nexport class FrRadioGroupField {\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly invalid = input(false, { transform: booleanAttribute });\n}\n\n@Directive({\n selector: 'label[frRadioGroupCard]',\n host: {\n class: 'frame-radio-group__card',\n },\n})\nexport class FrRadioGroupCard {}\n\n@Directive({\n selector: '[frRadioGroupCardMeta]',\n host: {\n class: 'frame-radio-group__card-meta',\n },\n})\nexport class FrRadioGroupCardMeta {}\n","import { NgModule } from '@angular/core';\nimport {\n FrRadioGroup,\n FrRadioGroupCard,\n FrRadioGroupCardMeta,\n FrRadioGroupField,\n FrRadioGroupItem,\n} from './src/radio-group';\n\n@NgModule({\n imports: [\n FrRadioGroup,\n FrRadioGroupCard,\n FrRadioGroupCardMeta,\n FrRadioGroupField,\n FrRadioGroupItem,\n ],\n exports: [\n FrRadioGroup,\n FrRadioGroupCard,\n FrRadioGroupCardMeta,\n FrRadioGroupField,\n FrRadioGroupItem,\n ],\n})\nexport class FrRadioGroupModule {}\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-radio-group.mjs","sources":["../../../projects/components/radio-group/src/radio-group.ts","../../../projects/components/radio-group/radio-group.module.ts","../../../projects/components/radio-group/frame-ui-ng-components-radio-group.ts"],"sourcesContent":["import { Directive, booleanAttribute, input } from '@angular/core';\r\n\r\nexport const FR_RADIO_GROUP_ORIENTATIONS = ['vertical', 'horizontal'] as const;\r\nexport const FR_RADIO_GROUP_VARIANTS = ['default', 'cards'] as const;\r\n\r\nexport type FrRadioGroupOrientation = (typeof FR_RADIO_GROUP_ORIENTATIONS)[number];\r\nexport type FrRadioGroupVariant = (typeof FR_RADIO_GROUP_VARIANTS)[number];\r\n\r\n/** Radio group host with orientation and variant controls. */\r\n@Directive({\r\n selector: '[frRadioGroup], frame-radio-group',\r\n exportAs: 'frRadioGroup',\r\n host: {\r\n class: 'frame-radio-group',\r\n role: 'radiogroup',\r\n '[attr.data-orientation]': 'orientation()',\r\n '[attr.data-variant]': 'variant()',\r\n '[attr.data-disabled]': 'disabled() ? \"\" : null',\r\n },\r\n})\r\nexport class FrRadioGroup {\r\n readonly orientation = input<FrRadioGroupOrientation>('vertical');\r\n readonly variant = input<FrRadioGroupVariant>('default');\r\n readonly disabled = input(false, { transform: booleanAttribute });\r\n}\r\n\r\n/** Item slot for radio group. */\r\n@Directive({\r\n selector: 'input[type=radio][frRadioGroupItem]',\r\n host: {\r\n class: 'frame-radio-group__item',\r\n },\r\n})\r\nexport class FrRadioGroupItem {}\r\n\r\n/** Field slot for radio group. */\r\n@Directive({\r\n selector: 'label[frRadioGroupField]',\r\n host: {\r\n class: 'frame-field frame-radio-group__field',\r\n 'data-orientation': 'horizontal',\r\n '[attr.data-disabled]': 'disabled() ? \"\" : null',\r\n '[attr.data-invalid]': 'invalid() ? \"\" : null',\r\n role: 'group',\r\n },\r\n})\r\nexport class FrRadioGroupField {\r\n readonly disabled = input(false, { transform: booleanAttribute });\r\n readonly invalid = input(false, { transform: booleanAttribute });\r\n}\r\n\r\n/** Card layout option for radio group choices. */\r\n@Directive({\r\n selector: 'label[frRadioGroupCard]',\r\n host: {\r\n class: 'frame-radio-group__card',\r\n },\r\n})\r\nexport class FrRadioGroupCard {}\r\n\r\n/** Meta slot for radio group card. */\r\n@Directive({\r\n selector: '[frRadioGroupCardMeta]',\r\n host: {\r\n class: 'frame-radio-group__card-meta',\r\n },\r\n})\r\nexport class FrRadioGroupCardMeta {}\r\n\r\n","import { NgModule } from '@angular/core';\nimport {\n FrRadioGroup,\n FrRadioGroupCard,\n FrRadioGroupCardMeta,\n FrRadioGroupField,\n FrRadioGroupItem,\n} from './src/radio-group';\n\n@NgModule({\n imports: [\n FrRadioGroup,\n FrRadioGroupCard,\n FrRadioGroupCardMeta,\n FrRadioGroupField,\n FrRadioGroupItem,\n ],\n exports: [\n FrRadioGroup,\n FrRadioGroupCard,\n FrRadioGroupCardMeta,\n FrRadioGroupField,\n FrRadioGroupItem,\n ],\n})\nexport class FrRadioGroupModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}