@star-ng/ui 0.0.0-stage → 0.1.0

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 (217) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +148 -2
  3. package/fesm2022/star-ng-ui-accordion.mjs +376 -0
  4. package/fesm2022/star-ng-ui-accordion.mjs.map +1 -0
  5. package/fesm2022/star-ng-ui-autocomplete.mjs +782 -0
  6. package/fesm2022/star-ng-ui-autocomplete.mjs.map +1 -0
  7. package/fesm2022/star-ng-ui-avatar.mjs +154 -0
  8. package/fesm2022/star-ng-ui-avatar.mjs.map +1 -0
  9. package/fesm2022/star-ng-ui-badge.mjs +153 -0
  10. package/fesm2022/star-ng-ui-badge.mjs.map +1 -0
  11. package/fesm2022/star-ng-ui-breadcrumb.mjs +199 -0
  12. package/fesm2022/star-ng-ui-breadcrumb.mjs.map +1 -0
  13. package/fesm2022/star-ng-ui-button.mjs +282 -0
  14. package/fesm2022/star-ng-ui-button.mjs.map +1 -0
  15. package/fesm2022/star-ng-ui-card.mjs +112 -0
  16. package/fesm2022/star-ng-ui-card.mjs.map +1 -0
  17. package/fesm2022/star-ng-ui-chart.mjs +1904 -0
  18. package/fesm2022/star-ng-ui-chart.mjs.map +1 -0
  19. package/fesm2022/star-ng-ui-checkbox.mjs +345 -0
  20. package/fesm2022/star-ng-ui-checkbox.mjs.map +1 -0
  21. package/fesm2022/star-ng-ui-core.mjs +392 -0
  22. package/fesm2022/star-ng-ui-core.mjs.map +1 -0
  23. package/fesm2022/star-ng-ui-data-display.mjs +1556 -0
  24. package/fesm2022/star-ng-ui-data-display.mjs.map +1 -0
  25. package/fesm2022/star-ng-ui-date-picker.mjs +2786 -0
  26. package/fesm2022/star-ng-ui-date-picker.mjs.map +1 -0
  27. package/fesm2022/star-ng-ui-dialog.mjs +948 -0
  28. package/fesm2022/star-ng-ui-dialog.mjs.map +1 -0
  29. package/fesm2022/star-ng-ui-drawer.mjs +158 -0
  30. package/fesm2022/star-ng-ui-drawer.mjs.map +1 -0
  31. package/fesm2022/star-ng-ui-editor.mjs +416 -0
  32. package/fesm2022/star-ng-ui-editor.mjs.map +1 -0
  33. package/fesm2022/star-ng-ui-field.mjs +378 -0
  34. package/fesm2022/star-ng-ui-field.mjs.map +1 -0
  35. package/fesm2022/star-ng-ui-file-upload.mjs +762 -0
  36. package/fesm2022/star-ng-ui-file-upload.mjs.map +1 -0
  37. package/fesm2022/star-ng-ui-i18n-de.mjs +179 -0
  38. package/fesm2022/star-ng-ui-i18n-de.mjs.map +1 -0
  39. package/fesm2022/star-ng-ui-i18n-es.mjs +179 -0
  40. package/fesm2022/star-ng-ui-i18n-es.mjs.map +1 -0
  41. package/fesm2022/star-ng-ui-input-group.mjs +188 -0
  42. package/fesm2022/star-ng-ui-input-group.mjs.map +1 -0
  43. package/fesm2022/star-ng-ui-input-mask.mjs +434 -0
  44. package/fesm2022/star-ng-ui-input-mask.mjs.map +1 -0
  45. package/fesm2022/star-ng-ui-input-number.mjs +691 -0
  46. package/fesm2022/star-ng-ui-input-number.mjs.map +1 -0
  47. package/fesm2022/star-ng-ui-input-otp.mjs +343 -0
  48. package/fesm2022/star-ng-ui-input-otp.mjs.map +1 -0
  49. package/fesm2022/star-ng-ui-input-tags.mjs +616 -0
  50. package/fesm2022/star-ng-ui-input-tags.mjs.map +1 -0
  51. package/fesm2022/star-ng-ui-knob.mjs +514 -0
  52. package/fesm2022/star-ng-ui-knob.mjs.map +1 -0
  53. package/fesm2022/star-ng-ui-layout.mjs +608 -0
  54. package/fesm2022/star-ng-ui-layout.mjs.map +1 -0
  55. package/fesm2022/star-ng-ui-listbox.mjs +978 -0
  56. package/fesm2022/star-ng-ui-listbox.mjs.map +1 -0
  57. package/fesm2022/star-ng-ui-media.mjs +833 -0
  58. package/fesm2022/star-ng-ui-media.mjs.map +1 -0
  59. package/fesm2022/star-ng-ui-menu.mjs +1840 -0
  60. package/fesm2022/star-ng-ui-menu.mjs.map +1 -0
  61. package/fesm2022/star-ng-ui-message.mjs +191 -0
  62. package/fesm2022/star-ng-ui-message.mjs.map +1 -0
  63. package/fesm2022/star-ng-ui-paginator.mjs +387 -0
  64. package/fesm2022/star-ng-ui-paginator.mjs.map +1 -0
  65. package/fesm2022/star-ng-ui-panel.mjs +324 -0
  66. package/fesm2022/star-ng-ui-panel.mjs.map +1 -0
  67. package/fesm2022/star-ng-ui-password.mjs +517 -0
  68. package/fesm2022/star-ng-ui-password.mjs.map +1 -0
  69. package/fesm2022/star-ng-ui-popover.mjs +241 -0
  70. package/fesm2022/star-ng-ui-popover.mjs.map +1 -0
  71. package/fesm2022/star-ng-ui-progress-bar.mjs +183 -0
  72. package/fesm2022/star-ng-ui-progress-bar.mjs.map +1 -0
  73. package/fesm2022/star-ng-ui-radio.mjs +411 -0
  74. package/fesm2022/star-ng-ui-radio.mjs.map +1 -0
  75. package/fesm2022/star-ng-ui-rating.mjs +211 -0
  76. package/fesm2022/star-ng-ui-rating.mjs.map +1 -0
  77. package/fesm2022/star-ng-ui-select-button.mjs +613 -0
  78. package/fesm2022/star-ng-ui-select-button.mjs.map +1 -0
  79. package/fesm2022/star-ng-ui-select.mjs +2523 -0
  80. package/fesm2022/star-ng-ui-select.mjs.map +1 -0
  81. package/fesm2022/star-ng-ui-skeleton.mjs +160 -0
  82. package/fesm2022/star-ng-ui-skeleton.mjs.map +1 -0
  83. package/fesm2022/star-ng-ui-slider.mjs +552 -0
  84. package/fesm2022/star-ng-ui-slider.mjs.map +1 -0
  85. package/fesm2022/star-ng-ui-spinner.mjs +148 -0
  86. package/fesm2022/star-ng-ui-spinner.mjs.map +1 -0
  87. package/fesm2022/star-ng-ui-stepper.mjs +360 -0
  88. package/fesm2022/star-ng-ui-stepper.mjs.map +1 -0
  89. package/fesm2022/star-ng-ui-table.mjs +3477 -0
  90. package/fesm2022/star-ng-ui-table.mjs.map +1 -0
  91. package/fesm2022/star-ng-ui-tabs.mjs +464 -0
  92. package/fesm2022/star-ng-ui-tabs.mjs.map +1 -0
  93. package/fesm2022/star-ng-ui-tag.mjs +129 -0
  94. package/fesm2022/star-ng-ui-tag.mjs.map +1 -0
  95. package/fesm2022/star-ng-ui-theme-switch.mjs +105 -0
  96. package/fesm2022/star-ng-ui-theme-switch.mjs.map +1 -0
  97. package/fesm2022/star-ng-ui-theme.mjs +98 -0
  98. package/fesm2022/star-ng-ui-theme.mjs.map +1 -0
  99. package/fesm2022/star-ng-ui-toast.mjs +298 -0
  100. package/fesm2022/star-ng-ui-toast.mjs.map +1 -0
  101. package/fesm2022/star-ng-ui-toggle-switch.mjs +316 -0
  102. package/fesm2022/star-ng-ui-toggle-switch.mjs.map +1 -0
  103. package/fesm2022/star-ng-ui-tooltip.mjs +297 -0
  104. package/fesm2022/star-ng-ui-tooltip.mjs.map +1 -0
  105. package/fesm2022/star-ng-ui-transloco.mjs +40 -0
  106. package/fesm2022/star-ng-ui-transloco.mjs.map +1 -0
  107. package/fesm2022/star-ng-ui-tree.mjs +1446 -0
  108. package/fesm2022/star-ng-ui-tree.mjs.map +1 -0
  109. package/fesm2022/star-ng-ui-utility.mjs +2134 -0
  110. package/fesm2022/star-ng-ui-utility.mjs.map +1 -0
  111. package/fesm2022/star-ng-ui.mjs +51 -0
  112. package/package.json +281 -3
  113. package/styles/_base.scss +70 -0
  114. package/styles/_shared.scss +2 -0
  115. package/styles/_tokens.scss +190 -0
  116. package/styles/controls/_accordion.scss +75 -0
  117. package/styles/controls/_autocomplete.scss +44 -0
  118. package/styles/controls/_avatar.scss +39 -0
  119. package/styles/controls/_breadcrumb.scss +45 -0
  120. package/styles/controls/_button.scss +137 -0
  121. package/styles/controls/_card.scss +38 -0
  122. package/styles/controls/_chart.scss +214 -0
  123. package/styles/controls/_chip.scss +51 -0
  124. package/styles/controls/_choice.scss +153 -0
  125. package/styles/controls/_data-display.scss +118 -0
  126. package/styles/controls/_date-picker.scss +300 -0
  127. package/styles/controls/_dialog.scss +123 -0
  128. package/styles/controls/_drawer.scss +118 -0
  129. package/styles/controls/_editor.scss +74 -0
  130. package/styles/controls/_field.scss +92 -0
  131. package/styles/controls/_file-upload.scss +136 -0
  132. package/styles/controls/_input-group.scss +104 -0
  133. package/styles/controls/_input-mask.scss +46 -0
  134. package/styles/controls/_input-number.scss +125 -0
  135. package/styles/controls/_knob.scss +76 -0
  136. package/styles/controls/_layout.scss +182 -0
  137. package/styles/controls/_listbox.scss +38 -0
  138. package/styles/controls/_media.scss +222 -0
  139. package/styles/controls/_menu.scss +254 -0
  140. package/styles/controls/_message.scss +48 -0
  141. package/styles/controls/_org-chart.scss +128 -0
  142. package/styles/controls/_paginator.scss +59 -0
  143. package/styles/controls/_panel.scss +83 -0
  144. package/styles/controls/_popover.scss +40 -0
  145. package/styles/controls/_progress-bar.scss +74 -0
  146. package/styles/controls/_select-button.scss +61 -0
  147. package/styles/controls/_select.scss +216 -0
  148. package/styles/controls/_skeleton.scss +43 -0
  149. package/styles/controls/_slider.scss +163 -0
  150. package/styles/controls/_spinner.scss +34 -0
  151. package/styles/controls/_stepper.scss +109 -0
  152. package/styles/controls/_table.scss +523 -0
  153. package/styles/controls/_tabs.scss +93 -0
  154. package/styles/controls/_tag.scss +84 -0
  155. package/styles/controls/_toast.scss +141 -0
  156. package/styles/controls/_tooltip.scss +14 -0
  157. package/styles/controls/_tree.scss +113 -0
  158. package/styles/controls/_utility.scss +654 -0
  159. package/styles/star-ng.css +5803 -0
  160. package/styles/star-ng.min.css +1 -0
  161. package/styles/star-ng.scss +50 -0
  162. package/theme/star-theme-first-paint.js +1 -0
  163. package/types/star-ng-ui-accordion.d.ts +82 -0
  164. package/types/star-ng-ui-autocomplete.d.ts +171 -0
  165. package/types/star-ng-ui-avatar.d.ts +43 -0
  166. package/types/star-ng-ui-badge.d.ts +46 -0
  167. package/types/star-ng-ui-breadcrumb.d.ts +39 -0
  168. package/types/star-ng-ui-button.d.ts +79 -0
  169. package/types/star-ng-ui-card.d.ts +29 -0
  170. package/types/star-ng-ui-chart.d.ts +337 -0
  171. package/types/star-ng-ui-checkbox.d.ts +92 -0
  172. package/types/star-ng-ui-core.d.ts +310 -0
  173. package/types/star-ng-ui-data-display.d.ts +339 -0
  174. package/types/star-ng-ui-date-picker.d.ts +701 -0
  175. package/types/star-ng-ui-dialog.d.ts +254 -0
  176. package/types/star-ng-ui-drawer.d.ts +29 -0
  177. package/types/star-ng-ui-editor.d.ts +96 -0
  178. package/types/star-ng-ui-field.d.ts +146 -0
  179. package/types/star-ng-ui-file-upload.d.ts +192 -0
  180. package/types/star-ng-ui-i18n-de.d.ts +7 -0
  181. package/types/star-ng-ui-i18n-es.d.ts +7 -0
  182. package/types/star-ng-ui-input-group.d.ts +58 -0
  183. package/types/star-ng-ui-input-mask.d.ts +126 -0
  184. package/types/star-ng-ui-input-number.d.ts +193 -0
  185. package/types/star-ng-ui-input-otp.d.ts +86 -0
  186. package/types/star-ng-ui-input-tags.d.ts +159 -0
  187. package/types/star-ng-ui-knob.d.ts +121 -0
  188. package/types/star-ng-ui-layout.d.ts +154 -0
  189. package/types/star-ng-ui-listbox.d.ts +197 -0
  190. package/types/star-ng-ui-media.d.ts +161 -0
  191. package/types/star-ng-ui-menu.d.ts +332 -0
  192. package/types/star-ng-ui-message.d.ts +52 -0
  193. package/types/star-ng-ui-paginator.d.ts +85 -0
  194. package/types/star-ng-ui-panel.d.ts +65 -0
  195. package/types/star-ng-ui-password.d.ts +129 -0
  196. package/types/star-ng-ui-popover.d.ts +57 -0
  197. package/types/star-ng-ui-progress-bar.d.ts +49 -0
  198. package/types/star-ng-ui-radio.d.ts +116 -0
  199. package/types/star-ng-ui-rating.d.ts +52 -0
  200. package/types/star-ng-ui-select-button.d.ts +169 -0
  201. package/types/star-ng-ui-select.d.ts +540 -0
  202. package/types/star-ng-ui-skeleton.d.ts +47 -0
  203. package/types/star-ng-ui-slider.d.ts +145 -0
  204. package/types/star-ng-ui-spinner.d.ts +29 -0
  205. package/types/star-ng-ui-stepper.d.ts +89 -0
  206. package/types/star-ng-ui-table.d.ts +829 -0
  207. package/types/star-ng-ui-tabs.d.ts +109 -0
  208. package/types/star-ng-ui-tag.d.ts +35 -0
  209. package/types/star-ng-ui-theme-switch.d.ts +36 -0
  210. package/types/star-ng-ui-theme.d.ts +95 -0
  211. package/types/star-ng-ui-toast.d.ts +84 -0
  212. package/types/star-ng-ui-toggle-switch.d.ts +81 -0
  213. package/types/star-ng-ui-tooltip.d.ts +66 -0
  214. package/types/star-ng-ui-transloco.d.ts +14 -0
  215. package/types/star-ng-ui-tree.d.ts +310 -0
  216. package/types/star-ng-ui-utility.d.ts +533 -0
  217. package/types/star-ng-ui.d.ts +51 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"star-ng-ui-data-display.mjs","names":[],"sources":["../../../projects/star-ng/data-display/data-display.ts","../../../projects/star-ng/data-display/org-chart.ts"],"sourcesContent":["import { _IdGenerator } from '@angular/cdk/a11y';\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChild,\n Directive,\n inject,\n input,\n model,\n signal,\n TemplateRef,\n} from '@angular/core';\nimport {\n optionText,\n readOption,\n STAR_UI_TEXT,\n starInlineKey,\n StarOptionKey,\n} from '@star-ng/ui/core';\nimport { StarPaginator } from '@star-ng/ui/paginator';\nimport { StarTreeNode } from '@star-ng/ui/tree';\n\n// ---------------------------------------------------------------- Tree table\n\nexport interface StarTreeTableColumn {\n readonly field: string;\n readonly header: string;\n readonly width?: string;\n readonly align?: 'start' | 'center' | 'end';\n}\n\ninterface TreeRow {\n readonly node: StarTreeNode<Record<string, unknown>>;\n readonly level: number;\n readonly setSize: number;\n readonly position: number;\n}\n\n/**\n * Tree table (PrimeNG `p-treetable`): hierarchical rows with expand / collapse in a table,\n * `role=\"treegrid\"`, Right / Left on a row expand / collapse, Up / Down move between rows.\n * Node `data` holds the column values; the first column shows the tree toggle.\n *\n * `<star-tree-table [nodes]=\"budget\" [columns]=\"cols\" [(expanded)]=\"open\" ariaLabel=\"Budget\" />`\n */\n@Component({\n selector: 'star-tree-table',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { class: 'star-table star-tree-table' },\n template: `\n <div class=\"star-table__scroll\">\n <table role=\"treegrid\" [attr.aria-label]=\"ariaLabel()\">\n <thead>\n <tr>\n @for (column of columns(); track column.field) {\n <th\n scope=\"col\"\n [style.width]=\"column.width\"\n [class]=\"'star-table__th star-table__cell--' + (column.align ?? 'start')\"\n >\n {{ column.header }}\n </th>\n }\n </tr>\n </thead>\n <tbody>\n @for (row of rows(); track row.node.key) {\n <tr\n class=\"star-table__row\"\n [attr.aria-level]=\"row.level\"\n [attr.aria-setsize]=\"row.setSize\"\n [attr.aria-posinset]=\"row.position\"\n [attr.aria-expanded]=\"row.node.children?.length ? isOpen(row.node.key) : null\"\n [attr.tabindex]=\"focusKey() === row.node.key ? 0 : -1\"\n [attr.data-key]=\"row.node.key\"\n (keydown)=\"onKeydown($event, row)\"\n (focus)=\"focusKey.set(row.node.key)\"\n >\n @for (column of columns(); track column.field; let first = $first) {\n <td [class]=\"'star-table__cell--' + (column.align ?? 'start')\">\n @if (first) {\n <span class=\"star-tree-table__first\" [style.--star-tree-level]=\"row.level - 1\">\n @if (row.node.children?.length) {\n <button\n type=\"button\"\n class=\"star-tree__toggle star-tree-table__toggle\"\n tabindex=\"-1\"\n [attr.aria-label]=\"\n isOpen(row.node.key)\n ? text.collapseItem(row.node.label)\n : text.expandItem(row.node.label)\n \"\n (click)=\"toggle(row.node.key)\"\n >\n <i class=\"ph-bold ph-caret-right\" aria-hidden=\"true\"></i>\n </button>\n } @else {\n <span class=\"star-tree__toggle star-tree__toggle--leaf\"></span>\n }\n {{ row.node.data?.[column.field] ?? row.node.label }}\n </span>\n } @else {\n {{ row.node.data?.[column.field] }}\n }\n </td>\n }\n </tr>\n }\n </tbody>\n </table>\n </div>\n `,\n})\nexport class StarTreeTable {\n protected readonly text = inject(STAR_UI_TEXT);\n readonly nodes = input<readonly StarTreeNode<Record<string, unknown>>[]>([]);\n readonly columns = input.required<readonly StarTreeTableColumn[]>();\n readonly expanded = model<readonly string[]>([]);\n readonly ariaLabel = input<string | null>(null);\n\n protected readonly rows = computed<TreeRow[]>(() => {\n const rows: TreeRow[] = [];\n const open = new Set(this.expanded());\n const walk = (nodes: readonly StarTreeNode<Record<string, unknown>>[], level: number) =>\n nodes.forEach((node, i) => {\n rows.push({ node, level, setSize: nodes.length, position: i + 1 });\n if (node.children?.length && open.has(node.key)) {\n walk(node.children as readonly StarTreeNode<Record<string, unknown>>[], level + 1);\n }\n });\n walk(this.nodes(), 1);\n return rows;\n });\n protected readonly focusKey = signal<string | null>(null);\n\n protected isOpen(key: string): boolean {\n return this.expanded().includes(key);\n }\n\n toggle(key: string, open = !this.isOpen(key)): void {\n this.expanded.update((keys) => (open ? [...keys, key] : keys.filter((k) => k !== key)));\n }\n\n protected onKeydown(event: KeyboardEvent, row: TreeRow): void {\n const rows = this.rows();\n const index = rows.indexOf(row);\n const focus = (target: TreeRow | undefined) => {\n if (!target) return;\n event.preventDefault();\n this.focusKey.set(target.node.key);\n const tr = (event.currentTarget as HTMLElement)\n .closest('tbody')\n ?.querySelector<HTMLElement>(`[data-key=\"${CSS.escape(target.node.key)}\"]`);\n tr?.focus();\n };\n // Arrow right opens a branch and Arrow left closes it; the two swap in right-to-left.\n const key = starInlineKey(event);\n if (key === 'ArrowDown') focus(rows[index + 1]);\n else if (key === 'ArrowUp') focus(rows[index - 1]);\n else if (key === 'ArrowRight' && row.node.children?.length) {\n event.preventDefault();\n this.toggle(row.node.key, true);\n } else if (key === 'ArrowLeft') {\n event.preventDefault();\n if (row.node.children?.length && this.isOpen(row.node.key)) this.toggle(row.node.key, false);\n else focus([...rows.slice(0, index)].reverse().find((r) => r.level < row.level));\n }\n }\n}\n\n// ---------------------------------------------------------------- Data view\n\n/** Item template: `<ng-template starDataViewItem let-item let-layout=\"layout\">`. */\n@Directive({ selector: 'ng-template[starDataViewItem]' })\nexport class StarDataViewItem<T = unknown> {\n readonly starDataViewItemOf = input<readonly T[] | null>(null);\n readonly template =\n inject<TemplateRef<{ $implicit: T; layout: 'list' | 'grid'; index: number }>>(TemplateRef);\n static ngTemplateContextGuard<T>(\n _dir: StarDataViewItem<T>,\n _ctx: unknown,\n ): _ctx is { $implicit: T; layout: 'list' | 'grid'; index: number } {\n return true;\n }\n}\n\n/**\n * Data view (PrimeNG `p-dataview`): items in a list or a responsive grid, layout switch,\n * client pagination and an empty state. It does not sort: sort the items before you pass them in.\n * You design each item with a template.\n *\n * ```html\n * <star-data-view [items]=\"products\" [(layout)]=\"layout\" paginator [rows]=\"6\">\n * <ng-template starDataViewItem let-p let-layout=\"layout\">…</ng-template>\n * </star-data-view>\n * ```\n */\n@Component({\n selector: 'star-data-view',\n imports: [NgTemplateOutlet, StarPaginator],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { class: 'star-data-view' },\n template: `\n <div class=\"star-data-view__header\">\n <ng-content select=\"[starDataViewHeader]\" />\n <div\n class=\"star-segmented star-segmented--sm\"\n role=\"radiogroup\"\n [attr.aria-label]=\"text.layout\"\n >\n @for (option of layouts; track option.id) {\n <button\n type=\"button\"\n role=\"radio\"\n class=\"star-segmented__item\"\n [class.star-segmented__item--on]=\"layout() === option.id\"\n [attr.aria-checked]=\"layout() === option.id\"\n [attr.aria-label]=\"option.label\"\n (click)=\"layout.set(option.id)\"\n >\n <i [class]=\"option.icon\" aria-hidden=\"true\"></i>\n </button>\n }\n </div>\n </div>\n <ul class=\"star-data-view__items\" [class.star-data-view__items--grid]=\"layout() === 'grid'\">\n @for (item of pageItems(); track $index; let i = $index) {\n <li class=\"star-data-view__item\">\n @if (itemTemplate(); as custom) {\n <ng-container\n *ngTemplateOutlet=\"\n custom.template;\n context: { $implicit: item, layout: layout(), index: i }\n \"\n />\n }\n </li>\n } @empty {\n <li class=\"star-table__empty\">\n <i class=\"ph-bold ph-tray\" aria-hidden=\"true\"></i>\n {{ emptyMessage() ?? text.noData }}\n </li>\n }\n </ul>\n @if (paginator() && items().length > rows()) {\n <star-paginator\n [totalRecords]=\"items().length\"\n [(first)]=\"first\"\n [(rows)]=\"rows\"\n [rowsPerPageOptions]=\"[]\"\n />\n }\n `,\n})\nexport class StarDataView<T = unknown> {\n protected readonly text = inject(STAR_UI_TEXT);\n protected readonly layouts = [\n { id: 'list' as const, label: this.text.layoutList, icon: 'ph-bold ph-list' },\n { id: 'grid' as const, label: this.text.layoutGrid, icon: 'ph-bold ph-squares-four' },\n ];\n readonly items = input<readonly T[]>([]);\n readonly layout = model<'list' | 'grid'>('list');\n readonly paginator = input(false, { transform: booleanAttribute });\n readonly rows = model(6);\n readonly first = model(0);\n readonly emptyMessage = input<string | null>(null);\n protected readonly itemTemplate = contentChild(StarDataViewItem);\n\n protected readonly pageItems = computed(() =>\n this.paginator() ? this.items().slice(this.first(), this.first() + this.rows()) : this.items(),\n );\n}\n\n// ---------------------------------------------------------------- Order list and pick list\n\n/**\n * Order list (PrimeNG `p-orderlist`): reorder items with buttons or Alt + Arrow keys; the moved\n * item keeps focus and a live region announces its new position.\n * `<star-order-list [(value)]=\"priorities\" optionLabel=\"name\" ariaLabel=\"Queue order\" />`\n */\n@Component({\n selector: 'star-order-list',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { class: 'star-order-list' },\n template: `\n <div class=\"star-order-list__buttons\" role=\"group\" [attr.aria-label]=\"text.moveSelectedItem\">\n @for (action of actions; track action.id) {\n <button\n type=\"button\"\n class=\"star-select__icon-btn star-order-list__btn\"\n [attr.aria-label]=\"action.label\"\n [disabled]=\"selected() < 0 || !canMove(action.id)\"\n (click)=\"move(action.id)\"\n >\n <i [class]=\"action.icon\" aria-hidden=\"true\"></i>\n </button>\n }\n </div>\n <ul\n class=\"star-listbox star-order-list__list\"\n role=\"listbox\"\n [attr.aria-label]=\"ariaLabel()\"\n [attr.aria-describedby]=\"hintId\"\n >\n @for (item of value(); track $index; let i = $index) {\n <li\n role=\"option\"\n class=\"star-listbox__option\"\n tabindex=\"0\"\n [attr.aria-selected]=\"selected() === i\"\n [class.star-listbox__option--selected]=\"selected() === i\"\n (click)=\"selected.set(i)\"\n (focus)=\"selected.set(i)\"\n (keydown)=\"onKeydown($event, i)\"\n >\n <i class=\"ph-bold ph-dots-six-vertical star-order-list__grip\" aria-hidden=\"true\"></i>\n {{ labelOf(item) }}\n </li>\n }\n </ul>\n <p class=\"star-sr-only\" [id]=\"hintId\">{{ text.orderListHint }}</p>\n <p class=\"star-sr-only\" aria-live=\"polite\">{{ announcement() }}</p>\n `,\n})\nexport class StarOrderList<T = unknown> {\n protected readonly text = inject(STAR_UI_TEXT);\n protected readonly hintId = inject(_IdGenerator).getId('star-order-hint-');\n readonly value = model<readonly T[]>([]);\n readonly optionLabel = input<StarOptionKey<T> | null>(null);\n readonly ariaLabel = input<string | null>(null);\n\n protected readonly selected = signal(-1);\n protected readonly announcement = signal('');\n protected readonly actions = [\n { id: 'top' as const, label: this.text.moveTop, icon: 'ph-bold ph-caret-double-up' },\n { id: 'up' as const, label: this.text.moveUp, icon: 'ph-bold ph-caret-up' },\n { id: 'down' as const, label: this.text.moveDown, icon: 'ph-bold ph-caret-down' },\n { id: 'bottom' as const, label: this.text.moveBottom, icon: 'ph-bold ph-caret-double-down' },\n ];\n\n protected labelOf(item: T): string {\n return optionText(item, this.optionLabel());\n }\n\n protected canMove(direction: 'top' | 'up' | 'down' | 'bottom'): boolean {\n const i = this.selected();\n return direction === 'top' || direction === 'up' ? i > 0 : i < this.value().length - 1;\n }\n\n move(direction: 'top' | 'up' | 'down' | 'bottom'): void {\n const from = this.selected();\n if (from < 0 || !this.canMove(direction)) return;\n const last = this.value().length - 1;\n const to = { top: 0, up: from - 1, down: from + 1, bottom: last }[direction];\n const items = [...this.value()];\n const [item] = items.splice(from, 1);\n items.splice(to, 0, item);\n this.value.set(items);\n this.selected.set(to);\n this.announcement.set(this.text.itemPosition(this.labelOf(item), to + 1, items.length));\n }\n\n protected onKeydown(event: KeyboardEvent, index: number): void {\n const list = (event.currentTarget as HTMLElement).parentElement!;\n const focusAt = (i: number) =>\n queueMicrotask(() => (list.children[i] as HTMLElement | undefined)?.focus());\n if (event.altKey && (event.key === 'ArrowUp' || event.key === 'ArrowDown')) {\n event.preventDefault();\n this.selected.set(index);\n this.move(event.key === 'ArrowUp' ? 'up' : 'down');\n focusAt(this.selected());\n } else if (event.key === 'ArrowUp' || event.key === 'ArrowDown') {\n event.preventDefault();\n focusAt(\n Math.min(Math.max(index + (event.key === 'ArrowUp' ? -1 : 1), 0), this.value().length - 1),\n );\n }\n }\n}\n\n/**\n * Pick list (PrimeNG `p-picklist`): move items between a source and a target list.\n * Double-click or Enter moves one item; buttons move the selection or everything.\n * `<star-pick-list [(source)]=\"available\" [(target)]=\"assigned\" optionLabel=\"name\" sourceHeader=\"Available\" targetHeader=\"Assigned\" />`\n */\n@Component({\n selector: 'star-pick-list',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { class: 'star-pick-list' },\n template: `\n @for (side of sides; track side) {\n @let items = side === 'source' ? source() : target();\n <section class=\"star-pick-list__side\" [attr.aria-labelledby]=\"ids[side]\">\n <h3 class=\"star-pick-list__header\" [id]=\"ids[side]\">\n {{\n side === 'source'\n ? (sourceHeader() ?? text.pickListSource)\n : (targetHeader() ?? text.pickListTarget)\n }}\n <span class=\"star-badge star-badge--secondary star-badge--sm\">{{ items.length }}</span>\n </h3>\n <div class=\"star-pick-list__box\">\n <ul\n class=\"star-listbox star-pick-list__list\"\n role=\"listbox\"\n aria-multiselectable=\"true\"\n [attr.aria-labelledby]=\"ids[side]\"\n >\n @for (item of items; track $index; let i = $index) {\n <li\n role=\"option\"\n class=\"star-listbox__option\"\n tabindex=\"0\"\n [attr.aria-selected]=\"isPicked(side, item)\"\n [class.star-listbox__option--selected]=\"isPicked(side, item)\"\n (click)=\"pick(side, item)\"\n (dblclick)=\"transfer(side, [item])\"\n (keydown.enter)=\"transfer(side, [item])\"\n (keydown.space)=\"$event.preventDefault(); pick(side, item)\"\n >\n {{ labelOf(item) }}\n </li>\n }\n </ul>\n <!-- Outside the listbox: a listbox may contain options and groups only. -->\n @if (!items.length) {\n <div class=\"star-listbox__empty star-pick-list__empty\" role=\"presentation\">\n {{ text.emptyMessage }}\n </div>\n }\n </div>\n </section>\n @if (side === 'source') {\n <div class=\"star-pick-list__buttons\" role=\"group\" [attr.aria-label]=\"text.transfer\">\n <button\n type=\"button\"\n class=\"star-select__icon-btn\"\n [attr.aria-label]=\"text.moveSelectedToTarget\"\n [disabled]=\"!picked('source').length\"\n (click)=\"transfer('source', picked('source'))\"\n >\n <i class=\"ph-bold ph-caret-right star-icon-mirror\" aria-hidden=\"true\"></i>\n </button>\n <button\n type=\"button\"\n class=\"star-select__icon-btn\"\n [attr.aria-label]=\"text.moveAllToTarget\"\n [disabled]=\"!source().length\"\n (click)=\"transfer('source', source())\"\n >\n <i class=\"ph-bold ph-caret-double-right star-icon-mirror\" aria-hidden=\"true\"></i>\n </button>\n <button\n type=\"button\"\n class=\"star-select__icon-btn\"\n [attr.aria-label]=\"text.moveSelectedToSource\"\n [disabled]=\"!picked('target').length\"\n (click)=\"transfer('target', picked('target'))\"\n >\n <i class=\"ph-bold ph-caret-left star-icon-mirror\" aria-hidden=\"true\"></i>\n </button>\n <button\n type=\"button\"\n class=\"star-select__icon-btn\"\n [attr.aria-label]=\"text.moveAllToSource\"\n [disabled]=\"!target().length\"\n (click)=\"transfer('target', target())\"\n >\n <i class=\"ph-bold ph-caret-double-left star-icon-mirror\" aria-hidden=\"true\"></i>\n </button>\n </div>\n }\n }\n `,\n})\nexport class StarPickList<T = unknown> {\n protected readonly text = inject(STAR_UI_TEXT);\n private readonly idGen = inject(_IdGenerator);\n protected readonly ids = {\n source: this.idGen.getId('star-pick-src-'),\n target: this.idGen.getId('star-pick-tgt-'),\n };\n protected readonly sides = ['source', 'target'] as const;\n\n readonly source = model<readonly T[]>([]);\n readonly target = model<readonly T[]>([]);\n readonly optionLabel = input<StarOptionKey<T> | null>(null);\n readonly sourceHeader = input<string | null>(null);\n readonly targetHeader = input<string | null>(null);\n\n private readonly selection = signal<{ source: readonly T[]; target: readonly T[] }>({\n source: [],\n target: [],\n });\n\n protected labelOf(item: T): string {\n return optionText(item, this.optionLabel());\n }\n protected picked(side: 'source' | 'target'): readonly T[] {\n return this.selection()[side];\n }\n protected isPicked(side: 'source' | 'target', item: T): boolean {\n return this.selection()[side].includes(item);\n }\n protected pick(side: 'source' | 'target', item: T): void {\n this.selection.update((sel) => ({\n ...sel,\n [side]: sel[side].includes(item) ? sel[side].filter((i) => i !== item) : [...sel[side], item],\n }));\n }\n\n transfer(from: 'source' | 'target', items: readonly T[]): void {\n if (!items.length) return;\n const moving = new Set(items);\n const [fromModel, toModel] =\n from === 'source' ? [this.source, this.target] : [this.target, this.source];\n fromModel.update((list) => list.filter((item) => !moving.has(item)));\n toModel.update((list) => [...list, ...items]);\n this.selection.update((sel) => ({ ...sel, [from]: [] }));\n }\n\n /** Reads a value with an optional key (exposed for custom templates). */\n read(item: T, key: StarOptionKey<T>): unknown {\n return readOption(item, key);\n }\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n contentChild,\n Directive,\n inject,\n input,\n model,\n output,\n TemplateRef,\n} from '@angular/core';\nimport { STAR_UI_TEXT } from '@star-ng/ui/core';\n\nexport interface StarOrgNode<T = unknown> {\n /** Unique id of the node in the chart. */\n readonly key: string;\n readonly label: string;\n /** Second line, for example a role. */\n readonly subtitle?: string;\n readonly data?: T;\n readonly children?: readonly StarOrgNode<T>[];\n}\n\nexport interface StarOrgNodeContext<T> {\n readonly $implicit: StarOrgNode<T>;\n readonly level: number;\n}\n\n/** Custom node content: `<ng-template starOrgNode let-node>…</ng-template>`. */\n@Directive({ selector: 'ng-template[starOrgNode]' })\nexport class StarOrgNodeTemplate<T = unknown> {\n readonly template = inject<TemplateRef<StarOrgNodeContext<T>>>(TemplateRef);\n\n static ngTemplateContextGuard<T>(\n _dir: StarOrgNodeTemplate<T>,\n _ctx: unknown,\n ): _ctx is StarOrgNodeContext<T> {\n return true;\n }\n}\n\n/**\n * Organization chart (PrimeNG `p-organizationchart`): a hierarchy drawn top-down with\n * connector lines. The markup is a nested list, so assistive technology reads the levels.\n * A node with children has a button that hides or shows its branch.\n *\n * `<star-org-chart ariaLabel=\"Safety team\" [value]=\"team\" [(collapsedKeys)]=\"closed\" selectable />`\n */\n@Component({\n selector: 'star-org-chart',\n imports: [NgTemplateOutlet],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { class: 'star-org' },\n template: `\n <div class=\"star-org__scroll\">\n <ul class=\"star-org__level star-org__level--root\" [attr.aria-label]=\"ariaLabel()\">\n <ng-container *ngTemplateOutlet=\"branch; context: { $implicit: value(), level: 0 }\" />\n </ul>\n </div>\n\n <ng-template #branch let-node let-level=\"level\">\n <li class=\"star-org__branch\">\n <div\n class=\"star-org__node\"\n [class.star-org__node--selected]=\"selectedKey() === node.key\"\n [class.star-org__node--parent]=\"!!node.children?.length && !isCollapsed(node)\"\n >\n @if (selectable()) {\n <button\n type=\"button\"\n class=\"star-org__card star-org__card--button\"\n [attr.aria-pressed]=\"selectedKey() === node.key\"\n (click)=\"select(node)\"\n >\n <ng-container *ngTemplateOutlet=\"content; context: { $implicit: node, level }\" />\n </button>\n } @else {\n <div class=\"star-org__card\">\n <ng-container *ngTemplateOutlet=\"content; context: { $implicit: node, level }\" />\n </div>\n }\n @if (node.children?.length) {\n <button\n type=\"button\"\n class=\"star-org__toggle\"\n [attr.aria-expanded]=\"!isCollapsed(node)\"\n [attr.aria-label]=\"\n (isCollapsed(node) ? text.expandRow : text.collapseRow) + ': ' + node.label\n \"\n (click)=\"toggle(node)\"\n >\n <i\n class=\"ph-bold\"\n [class.ph-caret-down]=\"isCollapsed(node)\"\n [class.ph-caret-up]=\"!isCollapsed(node)\"\n aria-hidden=\"true\"\n ></i>\n </button>\n }\n </div>\n @if (node.children?.length && !isCollapsed(node)) {\n <ul class=\"star-org__level\">\n @for (child of node.children; track child.key) {\n <ng-container\n *ngTemplateOutlet=\"branch; context: { $implicit: child, level: level + 1 }\"\n />\n }\n </ul>\n }\n </li>\n </ng-template>\n\n <ng-template #content let-node let-level=\"level\">\n @if (nodeTemplate(); as custom) {\n <ng-container *ngTemplateOutlet=\"custom.template; context: { $implicit: node, level }\" />\n } @else {\n <span class=\"star-org__label\">{{ node.label }}</span>\n @if (node.subtitle) {\n <span class=\"star-org__subtitle\">{{ node.subtitle }}</span>\n }\n }\n </ng-template>\n `,\n})\nexport class StarOrgChart<T = unknown> {\n protected readonly text = inject(STAR_UI_TEXT);\n\n /** Root node of the chart. */\n readonly value = input.required<StarOrgNode<T>>();\n readonly ariaLabel = input<string | null>(null);\n /** Keys of the nodes whose branch is hidden. Two-way. */\n readonly collapsedKeys = model<readonly string[]>([]);\n /** Nodes are buttons; one node can be selected. */\n readonly selectable = input(false, { transform: (value: boolean | '') => value === '' || value });\n readonly selectedKey = model<string | null>(null);\n readonly nodeSelect = output<StarOrgNode<T>>();\n\n protected readonly nodeTemplate = contentChild(StarOrgNodeTemplate);\n\n protected isCollapsed(node: StarOrgNode<T>): boolean {\n return this.collapsedKeys().includes(node.key);\n }\n\n protected toggle(node: StarOrgNode<T>): void {\n this.collapsedKeys.update((keys) =>\n keys.includes(node.key) ? keys.filter((key) => key !== node.key) : [...keys, node.key],\n );\n }\n\n protected select(node: StarOrgNode<T>): void {\n this.selectedKey.set(node.key);\n this.nodeSelect.emit(node);\n }\n}\n"],"mappings":"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"}