@ngstarter-ui/components 1.0.28 → 1.0.31

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 (230) hide show
  1. package/fesm2022/ngstarter-ui-components-action-required.mjs +2 -2
  2. package/fesm2022/ngstarter-ui-components-action-required.mjs.map +1 -1
  3. package/fesm2022/ngstarter-ui-components-alert.mjs +2 -2
  4. package/fesm2022/ngstarter-ui-components-alert.mjs.map +1 -1
  5. package/fesm2022/ngstarter-ui-components-announcement.mjs +2 -2
  6. package/fesm2022/ngstarter-ui-components-announcement.mjs.map +1 -1
  7. package/fesm2022/ngstarter-ui-components-autocomplete.mjs +2 -2
  8. package/fesm2022/ngstarter-ui-components-autocomplete.mjs.map +1 -1
  9. package/fesm2022/ngstarter-ui-components-avatar.mjs +8 -8
  10. package/fesm2022/ngstarter-ui-components-avatar.mjs.map +1 -1
  11. package/fesm2022/ngstarter-ui-components-badge.mjs +2 -2
  12. package/fesm2022/ngstarter-ui-components-badge.mjs.map +1 -1
  13. package/fesm2022/ngstarter-ui-components-block-loader.mjs +2 -2
  14. package/fesm2022/ngstarter-ui-components-block-loader.mjs.map +1 -1
  15. package/fesm2022/ngstarter-ui-components-breadcrumbs.mjs +2 -2
  16. package/fesm2022/ngstarter-ui-components-breadcrumbs.mjs.map +1 -1
  17. package/fesm2022/ngstarter-ui-components-button-toggle.mjs +4 -4
  18. package/fesm2022/ngstarter-ui-components-button-toggle.mjs.map +1 -1
  19. package/fesm2022/ngstarter-ui-components-button.mjs +2 -2
  20. package/fesm2022/ngstarter-ui-components-button.mjs.map +1 -1
  21. package/fesm2022/ngstarter-ui-components-card.mjs +2 -2
  22. package/fesm2022/ngstarter-ui-components-card.mjs.map +1 -1
  23. package/fesm2022/ngstarter-ui-components-checkbox.mjs +2 -2
  24. package/fesm2022/ngstarter-ui-components-checkbox.mjs.map +1 -1
  25. package/fesm2022/ngstarter-ui-components-chips.mjs +21 -7
  26. package/fesm2022/ngstarter-ui-components-chips.mjs.map +1 -1
  27. package/fesm2022/ngstarter-ui-components-code-highlighter.mjs +2 -2
  28. package/fesm2022/ngstarter-ui-components-code-highlighter.mjs.map +1 -1
  29. package/fesm2022/ngstarter-ui-components-color-picker.mjs +2 -2
  30. package/fesm2022/ngstarter-ui-components-color-picker.mjs.map +1 -1
  31. package/fesm2022/ngstarter-ui-components-color-switcher.mjs +2 -2
  32. package/fesm2022/ngstarter-ui-components-color-switcher.mjs.map +1 -1
  33. package/fesm2022/ngstarter-ui-components-command-bar.mjs +2 -2
  34. package/fesm2022/ngstarter-ui-components-command-bar.mjs.map +1 -1
  35. package/fesm2022/ngstarter-ui-components-comment-editor.mjs +6 -6
  36. package/fesm2022/ngstarter-ui-components-comment-editor.mjs.map +1 -1
  37. package/fesm2022/{ngstarter-ui-components-content-editor-code-block.component-Bk6QTli8.mjs → ngstarter-ui-components-content-editor-code-block.component-CpZ5gJOc.mjs} +4 -4
  38. package/fesm2022/{ngstarter-ui-components-content-editor-code-block.component-Bk6QTli8.mjs.map → ngstarter-ui-components-content-editor-code-block.component-CpZ5gJOc.mjs.map} +1 -1
  39. package/fesm2022/{ngstarter-ui-components-content-editor-embed-block-BbkC_t86.mjs → ngstarter-ui-components-content-editor-embed-block-ghm0_0AF.mjs} +2 -2
  40. package/fesm2022/{ngstarter-ui-components-content-editor-embed-block-BbkC_t86.mjs.map → ngstarter-ui-components-content-editor-embed-block-ghm0_0AF.mjs.map} +1 -1
  41. package/fesm2022/{ngstarter-ui-components-content-editor-heading-block.component-D9_CxTY1.mjs → ngstarter-ui-components-content-editor-heading-block.component-C1FH89Sj.mjs} +4 -4
  42. package/fesm2022/{ngstarter-ui-components-content-editor-heading-block.component-D9_CxTY1.mjs.map → ngstarter-ui-components-content-editor-heading-block.component-C1FH89Sj.mjs.map} +1 -1
  43. package/fesm2022/{ngstarter-ui-components-content-editor-image-block.component-B4zJyUg1.mjs → ngstarter-ui-components-content-editor-image-block.component-ahCIfpvQ.mjs} +4 -4
  44. package/fesm2022/{ngstarter-ui-components-content-editor-image-block.component-B4zJyUg1.mjs.map → ngstarter-ui-components-content-editor-image-block.component-ahCIfpvQ.mjs.map} +1 -1
  45. package/fesm2022/{ngstarter-ui-components-content-editor-list-block.component-Cv6wx5Xe.mjs → ngstarter-ui-components-content-editor-list-block.component-guhW_EyK.mjs} +4 -4
  46. package/fesm2022/{ngstarter-ui-components-content-editor-list-block.component-Cv6wx5Xe.mjs.map → ngstarter-ui-components-content-editor-list-block.component-guhW_EyK.mjs.map} +1 -1
  47. package/fesm2022/{ngstarter-ui-components-content-editor-ngstarter-ui-components-content-editor-1Zi2nAX5.mjs → ngstarter-ui-components-content-editor-ngstarter-ui-components-content-editor-DNLTNGYa.mjs} +15 -15
  48. package/fesm2022/{ngstarter-ui-components-content-editor-ngstarter-ui-components-content-editor-1Zi2nAX5.mjs.map → ngstarter-ui-components-content-editor-ngstarter-ui-components-content-editor-DNLTNGYa.mjs.map} +1 -1
  49. package/fesm2022/{ngstarter-ui-components-content-editor-paragraph-block.component-C9bQvDYU.mjs → ngstarter-ui-components-content-editor-paragraph-block.component-DjgGUc7s.mjs} +4 -4
  50. package/fesm2022/{ngstarter-ui-components-content-editor-paragraph-block.component-C9bQvDYU.mjs.map → ngstarter-ui-components-content-editor-paragraph-block.component-DjgGUc7s.mjs.map} +1 -1
  51. package/fesm2022/{ngstarter-ui-components-content-editor-quote-block.component-BbHds2r2.mjs → ngstarter-ui-components-content-editor-quote-block.component-B3pek1H6.mjs} +4 -4
  52. package/fesm2022/{ngstarter-ui-components-content-editor-quote-block.component-BbHds2r2.mjs.map → ngstarter-ui-components-content-editor-quote-block.component-B3pek1H6.mjs.map} +1 -1
  53. package/fesm2022/{ngstarter-ui-components-content-editor-table-block.component-DlDh7Fnn.mjs → ngstarter-ui-components-content-editor-table-block.component-bgBNjf4d.mjs} +6 -6
  54. package/fesm2022/{ngstarter-ui-components-content-editor-table-block.component-DlDh7Fnn.mjs.map → ngstarter-ui-components-content-editor-table-block.component-bgBNjf4d.mjs.map} +1 -1
  55. package/fesm2022/{ngstarter-ui-components-content-editor-video-block.component-m4DTihP2.mjs → ngstarter-ui-components-content-editor-video-block.component-DPlYe-_8.mjs} +2 -2
  56. package/fesm2022/{ngstarter-ui-components-content-editor-video-block.component-m4DTihP2.mjs.map → ngstarter-ui-components-content-editor-video-block.component-DPlYe-_8.mjs.map} +1 -1
  57. package/fesm2022/ngstarter-ui-components-content-editor.mjs +1 -1
  58. package/fesm2022/ngstarter-ui-components-content-fade.mjs +2 -2
  59. package/fesm2022/ngstarter-ui-components-content-fade.mjs.map +1 -1
  60. package/fesm2022/ngstarter-ui-components-cookie-popup.mjs +2 -2
  61. package/fesm2022/ngstarter-ui-components-cookie-popup.mjs.map +1 -1
  62. package/fesm2022/ngstarter-ui-components-core.mjs +137 -34
  63. package/fesm2022/ngstarter-ui-components-core.mjs.map +1 -1
  64. package/fesm2022/ngstarter-ui-components-country-select.mjs +2 -2
  65. package/fesm2022/ngstarter-ui-components-country-select.mjs.map +1 -1
  66. package/fesm2022/ngstarter-ui-components-data-view.mjs +2 -2
  67. package/fesm2022/ngstarter-ui-components-data-view.mjs.map +1 -1
  68. package/fesm2022/ngstarter-ui-components-datepicker.mjs +10 -10
  69. package/fesm2022/ngstarter-ui-components-datepicker.mjs.map +1 -1
  70. package/fesm2022/ngstarter-ui-components-dialog.mjs +8 -8
  71. package/fesm2022/ngstarter-ui-components-dialog.mjs.map +1 -1
  72. package/fesm2022/ngstarter-ui-components-divider.mjs +4 -4
  73. package/fesm2022/ngstarter-ui-components-divider.mjs.map +1 -1
  74. package/fesm2022/ngstarter-ui-components-drawer.mjs +2 -2
  75. package/fesm2022/ngstarter-ui-components-drawer.mjs.map +1 -1
  76. package/fesm2022/ngstarter-ui-components-emoji-picker.mjs +2 -2
  77. package/fesm2022/ngstarter-ui-components-emoji-picker.mjs.map +1 -1
  78. package/fesm2022/ngstarter-ui-components-empty-state.mjs +4 -4
  79. package/fesm2022/ngstarter-ui-components-empty-state.mjs.map +1 -1
  80. package/fesm2022/ngstarter-ui-components-expand.mjs +2 -2
  81. package/fesm2022/ngstarter-ui-components-expand.mjs.map +1 -1
  82. package/fesm2022/ngstarter-ui-components-expansion.mjs +2 -2
  83. package/fesm2022/ngstarter-ui-components-expansion.mjs.map +1 -1
  84. package/fesm2022/ngstarter-ui-components-filter-builder.mjs +2 -2
  85. package/fesm2022/ngstarter-ui-components-filter-builder.mjs.map +1 -1
  86. package/fesm2022/ngstarter-ui-components-form-field.mjs +4 -4
  87. package/fesm2022/ngstarter-ui-components-form-field.mjs.map +1 -1
  88. package/fesm2022/{ngstarter-ui-components-form-renderer-divider-content-CwGzDCZv.mjs → ngstarter-ui-components-form-renderer-divider-content-D8Sffofu.mjs} +3 -3
  89. package/fesm2022/{ngstarter-ui-components-form-renderer-divider-content-CwGzDCZv.mjs.map → ngstarter-ui-components-form-renderer-divider-content-D8Sffofu.mjs.map} +1 -1
  90. package/fesm2022/{ngstarter-ui-components-form-renderer-radio-group-field-Cv3AGpoq.mjs → ngstarter-ui-components-form-renderer-radio-group-field-DUCSU3iT.mjs} +3 -3
  91. package/fesm2022/{ngstarter-ui-components-form-renderer-radio-group-field-Cv3AGpoq.mjs.map → ngstarter-ui-components-form-renderer-radio-group-field-DUCSU3iT.mjs.map} +1 -1
  92. package/fesm2022/ngstarter-ui-components-form-renderer.mjs +2 -2
  93. package/fesm2022/ngstarter-ui-components-gauge.mjs +2 -2
  94. package/fesm2022/ngstarter-ui-components-gauge.mjs.map +1 -1
  95. package/fesm2022/ngstarter-ui-components-grid.mjs +2 -2
  96. package/fesm2022/ngstarter-ui-components-grid.mjs.map +1 -1
  97. package/fesm2022/ngstarter-ui-components-guided-tour.mjs +4 -4
  98. package/fesm2022/ngstarter-ui-components-guided-tour.mjs.map +1 -1
  99. package/fesm2022/ngstarter-ui-components-image-placeholder.mjs +2 -2
  100. package/fesm2022/ngstarter-ui-components-image-placeholder.mjs.map +1 -1
  101. package/fesm2022/ngstarter-ui-components-image-resizer.mjs +2 -2
  102. package/fesm2022/ngstarter-ui-components-image-resizer.mjs.map +1 -1
  103. package/fesm2022/ngstarter-ui-components-image-viewer.mjs +2 -2
  104. package/fesm2022/ngstarter-ui-components-image-viewer.mjs.map +1 -1
  105. package/fesm2022/ngstarter-ui-components-image-zoom-viewer.mjs +2 -2
  106. package/fesm2022/ngstarter-ui-components-image-zoom-viewer.mjs.map +1 -1
  107. package/fesm2022/ngstarter-ui-components-incidents.mjs +2 -2
  108. package/fesm2022/ngstarter-ui-components-incidents.mjs.map +1 -1
  109. package/fesm2022/ngstarter-ui-components-inline-text-edit.mjs +2 -2
  110. package/fesm2022/ngstarter-ui-components-inline-text-edit.mjs.map +1 -1
  111. package/fesm2022/ngstarter-ui-components-kanban-board.mjs +2 -2
  112. package/fesm2022/ngstarter-ui-components-kanban-board.mjs.map +1 -1
  113. package/fesm2022/ngstarter-ui-components-kbd.mjs +2 -2
  114. package/fesm2022/ngstarter-ui-components-kbd.mjs.map +1 -1
  115. package/fesm2022/ngstarter-ui-components-list.mjs +10 -10
  116. package/fesm2022/ngstarter-ui-components-list.mjs.map +1 -1
  117. package/fesm2022/ngstarter-ui-components-logo.mjs +8 -8
  118. package/fesm2022/ngstarter-ui-components-logo.mjs.map +1 -1
  119. package/fesm2022/ngstarter-ui-components-menu.mjs +8 -8
  120. package/fesm2022/ngstarter-ui-components-menu.mjs.map +1 -1
  121. package/fesm2022/ngstarter-ui-components-micro-chart.mjs +10 -10
  122. package/fesm2022/ngstarter-ui-components-micro-chart.mjs.map +1 -1
  123. package/fesm2022/ngstarter-ui-components-navigation.mjs +8 -8
  124. package/fesm2022/ngstarter-ui-components-navigation.mjs.map +1 -1
  125. package/fesm2022/ngstarter-ui-components-notifications.mjs +8 -8
  126. package/fesm2022/ngstarter-ui-components-notifications.mjs.map +1 -1
  127. package/fesm2022/ngstarter-ui-components-number-input.mjs +2 -2
  128. package/fesm2022/ngstarter-ui-components-number-input.mjs.map +1 -1
  129. package/fesm2022/ngstarter-ui-components-option.mjs +2 -2
  130. package/fesm2022/ngstarter-ui-components-option.mjs.map +1 -1
  131. package/fesm2022/ngstarter-ui-components-paginator.mjs +2 -2
  132. package/fesm2022/ngstarter-ui-components-paginator.mjs.map +1 -1
  133. package/fesm2022/ngstarter-ui-components-password-strength.mjs +2 -2
  134. package/fesm2022/ngstarter-ui-components-password-strength.mjs.map +1 -1
  135. package/fesm2022/ngstarter-ui-components-phone-input.mjs +2 -2
  136. package/fesm2022/ngstarter-ui-components-phone-input.mjs.map +1 -1
  137. package/fesm2022/ngstarter-ui-components-popover.mjs +2 -2
  138. package/fesm2022/ngstarter-ui-components-popover.mjs.map +1 -1
  139. package/fesm2022/ngstarter-ui-components-progress-bar.mjs +2 -2
  140. package/fesm2022/ngstarter-ui-components-progress-bar.mjs.map +1 -1
  141. package/fesm2022/ngstarter-ui-components-radio-card.mjs +4 -4
  142. package/fesm2022/ngstarter-ui-components-radio-card.mjs.map +1 -1
  143. package/fesm2022/ngstarter-ui-components-radio.mjs +2 -2
  144. package/fesm2022/ngstarter-ui-components-radio.mjs.map +1 -1
  145. package/fesm2022/ngstarter-ui-components-rail-nav.mjs +4 -4
  146. package/fesm2022/ngstarter-ui-components-rail-nav.mjs.map +1 -1
  147. package/fesm2022/ngstarter-ui-components-resizable-container.mjs +2 -2
  148. package/fesm2022/ngstarter-ui-components-resizable-container.mjs.map +1 -1
  149. package/fesm2022/ngstarter-ui-components-screen-loader.mjs +2 -2
  150. package/fesm2022/ngstarter-ui-components-screen-loader.mjs.map +1 -1
  151. package/fesm2022/ngstarter-ui-components-scroll-spy.mjs +6 -6
  152. package/fesm2022/ngstarter-ui-components-scroll-spy.mjs.map +1 -1
  153. package/fesm2022/ngstarter-ui-components-scrollbar-area.mjs +2 -2
  154. package/fesm2022/ngstarter-ui-components-scrollbar-area.mjs.map +1 -1
  155. package/fesm2022/ngstarter-ui-components-segmented.mjs +2 -2
  156. package/fesm2022/ngstarter-ui-components-segmented.mjs.map +1 -1
  157. package/fesm2022/ngstarter-ui-components-select.mjs +8 -8
  158. package/fesm2022/ngstarter-ui-components-select.mjs.map +1 -1
  159. package/fesm2022/ngstarter-ui-components-side-panel.mjs +2 -2
  160. package/fesm2022/ngstarter-ui-components-side-panel.mjs.map +1 -1
  161. package/fesm2022/ngstarter-ui-components-sidebar.mjs +14 -14
  162. package/fesm2022/ngstarter-ui-components-sidebar.mjs.map +1 -1
  163. package/fesm2022/ngstarter-ui-components-sidenav.mjs +4 -4
  164. package/fesm2022/ngstarter-ui-components-sidenav.mjs.map +1 -1
  165. package/fesm2022/ngstarter-ui-components-signature-pad.mjs +2 -2
  166. package/fesm2022/ngstarter-ui-components-signature-pad.mjs.map +1 -1
  167. package/fesm2022/ngstarter-ui-components-skeleton.mjs +2 -2
  168. package/fesm2022/ngstarter-ui-components-skeleton.mjs.map +1 -1
  169. package/fesm2022/ngstarter-ui-components-slide-toggle.mjs +2 -2
  170. package/fesm2022/ngstarter-ui-components-slide-toggle.mjs.map +1 -1
  171. package/fesm2022/ngstarter-ui-components-slider.mjs +2 -2
  172. package/fesm2022/ngstarter-ui-components-slider.mjs.map +1 -1
  173. package/fesm2022/ngstarter-ui-components-snack-bar.mjs +2 -2
  174. package/fesm2022/ngstarter-ui-components-snack-bar.mjs.map +1 -1
  175. package/fesm2022/ngstarter-ui-components-spinner.mjs +2 -2
  176. package/fesm2022/ngstarter-ui-components-spinner.mjs.map +1 -1
  177. package/fesm2022/ngstarter-ui-components-splash-screen.mjs +2 -2
  178. package/fesm2022/ngstarter-ui-components-splash-screen.mjs.map +1 -1
  179. package/fesm2022/ngstarter-ui-components-split.mjs +2 -2
  180. package/fesm2022/ngstarter-ui-components-split.mjs.map +1 -1
  181. package/fesm2022/ngstarter-ui-components-stepper.mjs +2 -2
  182. package/fesm2022/ngstarter-ui-components-stepper.mjs.map +1 -1
  183. package/fesm2022/ngstarter-ui-components-suggestions.mjs +4 -4
  184. package/fesm2022/ngstarter-ui-components-suggestions.mjs.map +1 -1
  185. package/fesm2022/ngstarter-ui-components-tab-panel.mjs +2 -2
  186. package/fesm2022/ngstarter-ui-components-tab-panel.mjs.map +1 -1
  187. package/fesm2022/ngstarter-ui-components-table.mjs +6 -6
  188. package/fesm2022/ngstarter-ui-components-table.mjs.map +1 -1
  189. package/fesm2022/ngstarter-ui-components-tabs.mjs +6 -6
  190. package/fesm2022/ngstarter-ui-components-tabs.mjs.map +1 -1
  191. package/fesm2022/ngstarter-ui-components-text-editor.mjs +10 -10
  192. package/fesm2022/ngstarter-ui-components-text-editor.mjs.map +1 -1
  193. package/fesm2022/ngstarter-ui-components-thumbnail-maker.mjs +2 -2
  194. package/fesm2022/ngstarter-ui-components-thumbnail-maker.mjs.map +1 -1
  195. package/fesm2022/ngstarter-ui-components-tiles.mjs +2 -2
  196. package/fesm2022/ngstarter-ui-components-tiles.mjs.map +1 -1
  197. package/fesm2022/ngstarter-ui-components-timeline.mjs +2 -2
  198. package/fesm2022/ngstarter-ui-components-timeline.mjs.map +1 -1
  199. package/fesm2022/ngstarter-ui-components-timepicker.mjs +2 -2
  200. package/fesm2022/ngstarter-ui-components-timepicker.mjs.map +1 -1
  201. package/fesm2022/ngstarter-ui-components-toolbar.mjs +4 -4
  202. package/fesm2022/ngstarter-ui-components-toolbar.mjs.map +1 -1
  203. package/fesm2022/ngstarter-ui-components-tooltip.mjs +2 -2
  204. package/fesm2022/ngstarter-ui-components-tooltip.mjs.map +1 -1
  205. package/fesm2022/ngstarter-ui-components-upload.mjs +10 -10
  206. package/fesm2022/ngstarter-ui-components-upload.mjs.map +1 -1
  207. package/fesm2022/ngstarter-ui-components-video-viewer.mjs +2 -2
  208. package/fesm2022/ngstarter-ui-components-video-viewer.mjs.map +1 -1
  209. package/package.json +15 -3
  210. package/schematics/collection.json +10 -0
  211. package/schematics/migrations.json +11 -0
  212. package/schematics/ng-add/index.d.ts +6 -0
  213. package/schematics/ng-add/index.js +14 -0
  214. package/schematics/ng-add/index.js.map +1 -0
  215. package/schematics/ng-add/schema.json +17 -0
  216. package/schematics/ng-update/index.d.ts +6 -0
  217. package/schematics/ng-update/index.js +14 -0
  218. package/schematics/ng-update/index.js.map +1 -0
  219. package/schematics/ng-update/schema.json +17 -0
  220. package/schematics/utils.d.ts +8 -0
  221. package/schematics/utils.js +400 -0
  222. package/schematics/utils.js.map +1 -0
  223. package/styles/_common.scss +84 -390
  224. package/styles/_global.scss +12 -12
  225. package/styles/_tokens.scss +1043 -0
  226. package/styles/themes/compact.scss +9 -0
  227. package/styles/themes/enterprise.scss +349 -0
  228. package/styles/themes/modern.scss +352 -0
  229. package/types/ngstarter-ui-components-chips.d.ts +9 -4
  230. package/types/ngstarter-ui-components-core.d.ts +41 -5
@@ -57,13 +57,13 @@ class ResizableContainer {
57
57
  });
58
58
  }
59
59
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: ResizableContainer, deps: [], target: i0.ɵɵFactoryTarget.Component });
60
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "21.2.4", type: ResizableContainer, isStandalone: true, selector: "ngs-resizable-container", inputs: { minWidth: { classPropertyName: "minWidth", publicName: "minWidth", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { resized: "resized" }, host: { classAttribute: "ngs-resizable-container" }, viewQueries: [{ propertyName: "handlerRef", first: true, predicate: ["handler"], descendants: true, isSignal: true }], exportAs: ["ngsResizableContainer"], ngImport: i0, template: "<div class=\"content\">\n <ng-content/>\n</div>\n<button #handler class=\"handler\">\n <span class=\"handler-indicator\"></span>\n</button>\n", styles: [":host{position:relative;display:flex;align-items:stretch;overflow:hidden}:host .content{flex-grow:1;width:100%;height:100%;margin-inline-end:calc(var(--spacing, .25rem) * 4)}:host .handler{position:absolute;-webkit-user-select:none;user-select:none;top:0;bottom:0;inset-inline-end:0;cursor:ew-resize;align-items:center;display:flex;justify-content:center;width:calc(var(--spacing, .25rem) * 5)}:host .handler .handler-indicator{display:flex;height:calc(var(--spacing, .25rem) * 8);width:calc(var(--spacing, .25rem) * 1.5);border-radius:calc(infinity * 1px);background:var(--color-surface-container-highest)}:host .handler:hover .handler-indicator,:host .handler:active .handler-indicator{background:var(--color-secondary)}\n/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
60
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "21.2.4", type: ResizableContainer, isStandalone: true, selector: "ngs-resizable-container", inputs: { minWidth: { classPropertyName: "minWidth", publicName: "minWidth", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { resized: "resized" }, host: { classAttribute: "ngs-resizable-container" }, viewQueries: [{ propertyName: "handlerRef", first: true, predicate: ["handler"], descendants: true, isSignal: true }], exportAs: ["ngsResizableContainer"], ngImport: i0, template: "<div class=\"content\">\n <ng-content/>\n</div>\n<button #handler class=\"handler\">\n <span class=\"handler-indicator\"></span>\n</button>\n", styles: [":host{position:relative;display:flex;align-items:stretch;overflow:hidden}:host .content{flex-grow:1;width:100%;height:100%;margin-inline-end:calc(var(--spacing, .25rem) * 4)}:host .handler{position:absolute;-webkit-user-select:none;user-select:none;top:0;bottom:0;inset-inline-end:0;cursor:ew-resize;align-items:center;display:flex;justify-content:center;width:calc(var(--spacing, .25rem) * 5)}:host .handler .handler-indicator{display:flex;height:calc(var(--spacing, .25rem) * 8);width:calc(var(--spacing, .25rem) * 1.5);border-radius:calc(infinity * 1px);background:var(--ngs-color-surface-container-highest)}:host .handler:hover .handler-indicator,:host .handler:active .handler-indicator{background:var(--ngs-color-secondary)}\n/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
61
61
  }
62
62
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: ResizableContainer, decorators: [{
63
63
  type: Component,
64
64
  args: [{ selector: 'ngs-resizable-container', exportAs: 'ngsResizableContainer', changeDetection: ChangeDetectionStrategy.OnPush, host: {
65
65
  'class': 'ngs-resizable-container'
66
- }, template: "<div class=\"content\">\n <ng-content/>\n</div>\n<button #handler class=\"handler\">\n <span class=\"handler-indicator\"></span>\n</button>\n", styles: [":host{position:relative;display:flex;align-items:stretch;overflow:hidden}:host .content{flex-grow:1;width:100%;height:100%;margin-inline-end:calc(var(--spacing, .25rem) * 4)}:host .handler{position:absolute;-webkit-user-select:none;user-select:none;top:0;bottom:0;inset-inline-end:0;cursor:ew-resize;align-items:center;display:flex;justify-content:center;width:calc(var(--spacing, .25rem) * 5)}:host .handler .handler-indicator{display:flex;height:calc(var(--spacing, .25rem) * 8);width:calc(var(--spacing, .25rem) * 1.5);border-radius:calc(infinity * 1px);background:var(--color-surface-container-highest)}:host .handler:hover .handler-indicator,:host .handler:active .handler-indicator{background:var(--color-secondary)}\n/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */\n"] }]
66
+ }, template: "<div class=\"content\">\n <ng-content/>\n</div>\n<button #handler class=\"handler\">\n <span class=\"handler-indicator\"></span>\n</button>\n", styles: [":host{position:relative;display:flex;align-items:stretch;overflow:hidden}:host .content{flex-grow:1;width:100%;height:100%;margin-inline-end:calc(var(--spacing, .25rem) * 4)}:host .handler{position:absolute;-webkit-user-select:none;user-select:none;top:0;bottom:0;inset-inline-end:0;cursor:ew-resize;align-items:center;display:flex;justify-content:center;width:calc(var(--spacing, .25rem) * 5)}:host .handler .handler-indicator{display:flex;height:calc(var(--spacing, .25rem) * 8);width:calc(var(--spacing, .25rem) * 1.5);border-radius:calc(infinity * 1px);background:var(--ngs-color-surface-container-highest)}:host .handler:hover .handler-indicator,:host .handler:active .handler-indicator{background:var(--ngs-color-secondary)}\n/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */\n"] }]
67
67
  }], propDecorators: { handlerRef: [{ type: i0.ViewChild, args: ['handler', { isSignal: true }] }], minWidth: [{ type: i0.Input, args: [{ isSignal: true, alias: "minWidth", required: false }] }], resized: [{ type: i0.Output, args: ["resized"] }] } });
68
68
 
69
69
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"ngstarter-ui-components-resizable-container.mjs","sources":["../../../projects/components/resizable-container/src/resizable-container/resizable-container.ts","../../../projects/components/resizable-container/src/resizable-container/resizable-container.html","../../../projects/components/resizable-container/ngstarter-ui-components-resizable-container.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n DestroyRef,\n ElementRef,\n inject, input,\n NgZone,\n numberAttribute,\n OnInit,\n Renderer2,\n viewChild,\n DOCUMENT,\n output\n} from '@angular/core';\nimport { fromEvent, throttleTime } from 'rxjs';\n\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n@Component({\n selector: 'ngs-resizable-container',\n exportAs: 'ngsResizableContainer',\n templateUrl: './resizable-container.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n styleUrl: './resizable-container.scss',\n host: {\n 'class': 'ngs-resizable-container'\n }\n})\nexport class ResizableContainer implements OnInit {\n private _renderer = inject(Renderer2);\n private _elementRef = inject(ElementRef);\n private _cdr = inject(ChangeDetectorRef);\n private _ngZone = inject(NgZone);\n private _destroyRef = inject(DestroyRef);\n private _document = inject(DOCUMENT);\n private _resizing = false;\n private _maxWidth: number;\n private _clientX: number;\n private _initialWidth: number;\n\n readonly handlerRef = viewChild.required<ElementRef>('handler');\n\n minWidth = input(0, {\n transform: numberAttribute\n });\n\n readonly resized = output<{ width: number }>();\n\n ngOnInit() {\n this._ngZone.runOutsideAngular(() => {\n fromEvent<MouseEvent>(this.handlerRef().nativeElement, 'mousedown')\n .pipe(takeUntilDestroyed(this._destroyRef))\n .subscribe((event: MouseEvent) => {\n this._resizing = true;\n this._maxWidth = this._elementRef.nativeElement.parentElement.getBoundingClientRect().width;\n this._clientX = event.clientX;\n this._initialWidth = this._elementRef.nativeElement.getBoundingClientRect().width;\n\n // Prevent text selection during resize\n this._document.body.style.userSelect = 'none';\n this._document.body.style.cursor = 'ew-resize';\n\n this._cdr.detectChanges();\n })\n ;\n fromEvent<MouseEvent>(this._document, 'mousemove')\n .pipe(\n throttleTime(5),\n takeUntilDestroyed(this._destroyRef)\n )\n .subscribe((event: MouseEvent) => {\n if (this._resizing) {\n let width = this._initialWidth - (this._clientX - event.clientX);\n\n if (width <= this.minWidth()) {\n width = this.minWidth();\n } else if (width >= this._maxWidth) {\n width = this._maxWidth;\n }\n\n this._renderer.setStyle(this._elementRef.nativeElement, 'width', width + 'px');\n this.resized.emit({ width });\n }\n })\n ;\n fromEvent(this._document, 'mouseup')\n .pipe(takeUntilDestroyed(this._destroyRef))\n .subscribe(event => {\n this._resizing = false;\n this._document.body.style.userSelect = '';\n this._document.body.style.cursor = '';\n this._cdr.detectChanges();\n })\n ;\n });\n }\n}\n","<div class=\"content\">\n <ng-content/>\n</div>\n<button #handler class=\"handler\">\n <span class=\"handler-indicator\"></span>\n</button>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ngstarter-ui-components-resizable-container.mjs","sources":["../../../projects/components/resizable-container/src/resizable-container/resizable-container.ts","../../../projects/components/resizable-container/src/resizable-container/resizable-container.html","../../../projects/components/resizable-container/ngstarter-ui-components-resizable-container.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n DestroyRef,\n ElementRef,\n inject, input,\n NgZone,\n numberAttribute,\n OnInit,\n Renderer2,\n viewChild,\n DOCUMENT,\n output\n} from '@angular/core';\nimport { fromEvent, throttleTime } from 'rxjs';\n\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n@Component({\n selector: 'ngs-resizable-container',\n exportAs: 'ngsResizableContainer',\n templateUrl: './resizable-container.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n styleUrl: './resizable-container.scss',\n host: {\n 'class': 'ngs-resizable-container'\n }\n})\nexport class ResizableContainer implements OnInit {\n private _renderer = inject(Renderer2);\n private _elementRef = inject(ElementRef);\n private _cdr = inject(ChangeDetectorRef);\n private _ngZone = inject(NgZone);\n private _destroyRef = inject(DestroyRef);\n private _document = inject(DOCUMENT);\n private _resizing = false;\n private _maxWidth: number;\n private _clientX: number;\n private _initialWidth: number;\n\n readonly handlerRef = viewChild.required<ElementRef>('handler');\n\n minWidth = input(0, {\n transform: numberAttribute\n });\n\n readonly resized = output<{ width: number }>();\n\n ngOnInit() {\n this._ngZone.runOutsideAngular(() => {\n fromEvent<MouseEvent>(this.handlerRef().nativeElement, 'mousedown')\n .pipe(takeUntilDestroyed(this._destroyRef))\n .subscribe((event: MouseEvent) => {\n this._resizing = true;\n this._maxWidth = this._elementRef.nativeElement.parentElement.getBoundingClientRect().width;\n this._clientX = event.clientX;\n this._initialWidth = this._elementRef.nativeElement.getBoundingClientRect().width;\n\n // Prevent text selection during resize\n this._document.body.style.userSelect = 'none';\n this._document.body.style.cursor = 'ew-resize';\n\n this._cdr.detectChanges();\n })\n ;\n fromEvent<MouseEvent>(this._document, 'mousemove')\n .pipe(\n throttleTime(5),\n takeUntilDestroyed(this._destroyRef)\n )\n .subscribe((event: MouseEvent) => {\n if (this._resizing) {\n let width = this._initialWidth - (this._clientX - event.clientX);\n\n if (width <= this.minWidth()) {\n width = this.minWidth();\n } else if (width >= this._maxWidth) {\n width = this._maxWidth;\n }\n\n this._renderer.setStyle(this._elementRef.nativeElement, 'width', width + 'px');\n this.resized.emit({ width });\n }\n })\n ;\n fromEvent(this._document, 'mouseup')\n .pipe(takeUntilDestroyed(this._destroyRef))\n .subscribe(event => {\n this._resizing = false;\n this._document.body.style.userSelect = '';\n this._document.body.style.cursor = '';\n this._cdr.detectChanges();\n })\n ;\n });\n }\n}\n","<div class=\"content\">\n <ng-content/>\n</div>\n<button #handler class=\"handler\">\n <span class=\"handler-indicator\"></span>\n</button>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -14,7 +14,7 @@ class ScreenLoader {
14
14
  return value instanceof TemplateRef;
15
15
  }
16
16
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: ScreenLoader, deps: [], target: i0.ɵɵFactoryTarget.Component });
17
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.4", type: ScreenLoader, isStandalone: true, selector: "ngs-screen-loader", inputs: { opened: { classPropertyName: "opened", publicName: "opened", isSignal: true, isRequired: false, transformFunction: null }, message: { classPropertyName: "message", publicName: "message", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class.is-opened": "opened()" }, classAttribute: "ngs-screen-loader not-prose" }, exportAs: ["ngsScreenLoader"], ngImport: i0, template: "<div class=\"message\">\n @if (message(); as msg) {\n @if (isTemplateRef(msg)) {\n <ng-container *ngTemplateOutlet=\"msg\" />\n } @else {\n {{ msg }}\n }\n } @else {\n <ng-content/>\n }\n</div>\n<div class=\"progress-bar\">\n <ngs-progress-bar mode=\"indeterminate\"/>\n</div>\n", styles: [":host{--ngs-screen-loader-bg: var(--color-background);opacity:0;position:fixed;inset:0;z-index:-9999;display:flex;align-items:center;justify-content:center;flex-direction:column;background:var(--ngs-screen-loader-bg)}:host.is-opened{z-index:9999;opacity:1}:host .message{max-width:600px;line-height:var(--leading-snug);text-align:center}:host .progress-bar{width:calc(var(--spacing, .25rem) * 64);margin-top:calc(var(--spacing, .25rem) * 5)}\n/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "component", type: ProgressBar, selector: "ngs-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["ngsProgressBar"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] });
17
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.4", type: ScreenLoader, isStandalone: true, selector: "ngs-screen-loader", inputs: { opened: { classPropertyName: "opened", publicName: "opened", isSignal: true, isRequired: false, transformFunction: null }, message: { classPropertyName: "message", publicName: "message", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class.is-opened": "opened()" }, classAttribute: "ngs-screen-loader not-prose" }, exportAs: ["ngsScreenLoader"], ngImport: i0, template: "<div class=\"message\">\n @if (message(); as msg) {\n @if (isTemplateRef(msg)) {\n <ng-container *ngTemplateOutlet=\"msg\" />\n } @else {\n {{ msg }}\n }\n } @else {\n <ng-content/>\n }\n</div>\n<div class=\"progress-bar\">\n <ngs-progress-bar mode=\"indeterminate\"/>\n</div>\n", styles: [":host{--ngs-screen-loader-bg: var(--ngs-color-background);opacity:0;position:fixed;inset:0;z-index:-9999;display:flex;align-items:center;justify-content:center;flex-direction:column;background:var(--ngs-screen-loader-bg)}:host.is-opened{z-index:9999;opacity:1}:host .message{max-width:600px;line-height:var(--leading-snug);text-align:center}:host .progress-bar{width:calc(var(--spacing, .25rem) * 64);margin-top:calc(var(--spacing, .25rem) * 5)}\n/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "component", type: ProgressBar, selector: "ngs-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["ngsProgressBar"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] });
18
18
  }
19
19
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: ScreenLoader, decorators: [{
20
20
  type: Component,
@@ -24,7 +24,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImpor
24
24
  ], host: {
25
25
  'class': 'ngs-screen-loader not-prose',
26
26
  '[class.is-opened]': 'opened()'
27
- }, template: "<div class=\"message\">\n @if (message(); as msg) {\n @if (isTemplateRef(msg)) {\n <ng-container *ngTemplateOutlet=\"msg\" />\n } @else {\n {{ msg }}\n }\n } @else {\n <ng-content/>\n }\n</div>\n<div class=\"progress-bar\">\n <ngs-progress-bar mode=\"indeterminate\"/>\n</div>\n", styles: [":host{--ngs-screen-loader-bg: var(--color-background);opacity:0;position:fixed;inset:0;z-index:-9999;display:flex;align-items:center;justify-content:center;flex-direction:column;background:var(--ngs-screen-loader-bg)}:host.is-opened{z-index:9999;opacity:1}:host .message{max-width:600px;line-height:var(--leading-snug);text-align:center}:host .progress-bar{width:calc(var(--spacing, .25rem) * 64);margin-top:calc(var(--spacing, .25rem) * 5)}\n/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */\n"] }]
27
+ }, template: "<div class=\"message\">\n @if (message(); as msg) {\n @if (isTemplateRef(msg)) {\n <ng-container *ngTemplateOutlet=\"msg\" />\n } @else {\n {{ msg }}\n }\n } @else {\n <ng-content/>\n }\n</div>\n<div class=\"progress-bar\">\n <ngs-progress-bar mode=\"indeterminate\"/>\n</div>\n", styles: [":host{--ngs-screen-loader-bg: var(--ngs-color-background);opacity:0;position:fixed;inset:0;z-index:-9999;display:flex;align-items:center;justify-content:center;flex-direction:column;background:var(--ngs-screen-loader-bg)}:host.is-opened{z-index:9999;opacity:1}:host .message{max-width:600px;line-height:var(--leading-snug);text-align:center}:host .progress-bar{width:calc(var(--spacing, .25rem) * 64);margin-top:calc(var(--spacing, .25rem) * 5)}\n/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */\n"] }]
28
28
  }], propDecorators: { opened: [{ type: i0.Input, args: [{ isSignal: true, alias: "opened", required: false }] }], message: [{ type: i0.Input, args: [{ isSignal: true, alias: "message", required: false }] }] } });
29
29
 
30
30
  class ScreenLoaderRef {
@@ -1 +1 @@
1
- {"version":3,"file":"ngstarter-ui-components-screen-loader.mjs","sources":["../../../projects/components/screen-loader/src/screen-loader/screen-loader.ts","../../../projects/components/screen-loader/src/screen-loader/screen-loader.html","../../../projects/components/screen-loader/src/screen-loader/screen-loader-ref.ts","../../../projects/components/screen-loader/src/screen-loader/screen-loader.service.ts","../../../projects/components/screen-loader/ngstarter-ui-components-screen-loader.ts"],"sourcesContent":["import { booleanAttribute, Component, input, TemplateRef } from '@angular/core';\nimport { ProgressBar } from '@ngstarter-ui/components/progress-bar';\nimport { NgTemplateOutlet } from '@angular/common';\n\n@Component({\n selector: 'ngs-screen-loader',\n exportAs: 'ngsScreenLoader',\n imports: [\n ProgressBar,\n NgTemplateOutlet\n ],\n templateUrl: './screen-loader.html',\n styleUrl: './screen-loader.scss',\n host: {\n 'class': 'ngs-screen-loader not-prose',\n '[class.is-opened]': 'opened()'\n }\n})\nexport class ScreenLoader {\n opened = input(false, {\n transform: booleanAttribute\n });\n\n message = input<string | TemplateRef<any> | null>(null);\n\n protected isTemplateRef(value: any): value is TemplateRef<any> {\n return value instanceof TemplateRef;\n }\n}\n","<div class=\"message\">\n @if (message(); as msg) {\n @if (isTemplateRef(msg)) {\n <ng-container *ngTemplateOutlet=\"msg\" />\n } @else {\n {{ msg }}\n }\n } @else {\n <ng-content/>\n }\n</div>\n<div class=\"progress-bar\">\n <ngs-progress-bar mode=\"indeterminate\"/>\n</div>\n","import { OverlayRef } from '@angular/cdk/overlay';\nimport { Observable, Subject } from 'rxjs';\n\nexport class ScreenLoaderRef {\n private readonly _afterOpened = new Subject<void>();\n private readonly _afterClosed = new Subject<void>();\n\n constructor(private overlayRef: OverlayRef) {\n this.overlayRef.detachments().subscribe(() => {\n this._afterClosed.next();\n this._afterClosed.complete();\n });\n }\n\n close(): void {\n this.overlayRef.dispose();\n }\n\n afterOpened(): Observable<void> {\n return this._afterOpened.asObservable();\n }\n\n afterClosed(): Observable<void> {\n return this._afterClosed.asObservable();\n }\n\n _notifyOpened() {\n this._afterOpened.next();\n this._afterOpened.complete();\n }\n}\n","import { ComponentRef, Injectable, Injector, TemplateRef } from '@angular/core';\nimport { Overlay, OverlayConfig } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { ScreenLoader } from './screen-loader';\nimport { ScreenLoaderRef } from './screen-loader-ref';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ScreenLoaderService {\n constructor(\n private overlay: Overlay,\n private injector: Injector\n ) {}\n\n open(message: string | TemplateRef<any>): ScreenLoaderRef {\n const overlayConfig = new OverlayConfig({\n hasBackdrop: true,\n scrollStrategy: this.overlay.scrollStrategies.block(),\n positionStrategy: this.overlay.position().global(),\n width: '100%',\n height: '100%'\n });\n\n const overlayRef = this.overlay.create(overlayConfig);\n const screenLoaderRef = new ScreenLoaderRef(overlayRef);\n\n const componentPortal = new ComponentPortal(ScreenLoader, null, this.injector);\n const componentRef: ComponentRef<ScreenLoader> = overlayRef.attach(componentPortal);\n\n componentRef.setInput('opened', true);\n componentRef.setInput('message', message);\n\n screenLoaderRef._notifyOpened();\n\n return screenLoaderRef;\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ngstarter-ui-components-screen-loader.mjs","sources":["../../../projects/components/screen-loader/src/screen-loader/screen-loader.ts","../../../projects/components/screen-loader/src/screen-loader/screen-loader.html","../../../projects/components/screen-loader/src/screen-loader/screen-loader-ref.ts","../../../projects/components/screen-loader/src/screen-loader/screen-loader.service.ts","../../../projects/components/screen-loader/ngstarter-ui-components-screen-loader.ts"],"sourcesContent":["import { booleanAttribute, Component, input, TemplateRef } from '@angular/core';\nimport { ProgressBar } from '@ngstarter-ui/components/progress-bar';\nimport { NgTemplateOutlet } from '@angular/common';\n\n@Component({\n selector: 'ngs-screen-loader',\n exportAs: 'ngsScreenLoader',\n imports: [\n ProgressBar,\n NgTemplateOutlet\n ],\n templateUrl: './screen-loader.html',\n styleUrl: './screen-loader.scss',\n host: {\n 'class': 'ngs-screen-loader not-prose',\n '[class.is-opened]': 'opened()'\n }\n})\nexport class ScreenLoader {\n opened = input(false, {\n transform: booleanAttribute\n });\n\n message = input<string | TemplateRef<any> | null>(null);\n\n protected isTemplateRef(value: any): value is TemplateRef<any> {\n return value instanceof TemplateRef;\n }\n}\n","<div class=\"message\">\n @if (message(); as msg) {\n @if (isTemplateRef(msg)) {\n <ng-container *ngTemplateOutlet=\"msg\" />\n } @else {\n {{ msg }}\n }\n } @else {\n <ng-content/>\n }\n</div>\n<div class=\"progress-bar\">\n <ngs-progress-bar mode=\"indeterminate\"/>\n</div>\n","import { OverlayRef } from '@angular/cdk/overlay';\nimport { Observable, Subject } from 'rxjs';\n\nexport class ScreenLoaderRef {\n private readonly _afterOpened = new Subject<void>();\n private readonly _afterClosed = new Subject<void>();\n\n constructor(private overlayRef: OverlayRef) {\n this.overlayRef.detachments().subscribe(() => {\n this._afterClosed.next();\n this._afterClosed.complete();\n });\n }\n\n close(): void {\n this.overlayRef.dispose();\n }\n\n afterOpened(): Observable<void> {\n return this._afterOpened.asObservable();\n }\n\n afterClosed(): Observable<void> {\n return this._afterClosed.asObservable();\n }\n\n _notifyOpened() {\n this._afterOpened.next();\n this._afterOpened.complete();\n }\n}\n","import { ComponentRef, Injectable, Injector, TemplateRef } from '@angular/core';\nimport { Overlay, OverlayConfig } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { ScreenLoader } from './screen-loader';\nimport { ScreenLoaderRef } from './screen-loader-ref';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ScreenLoaderService {\n constructor(\n private overlay: Overlay,\n private injector: Injector\n ) {}\n\n open(message: string | TemplateRef<any>): ScreenLoaderRef {\n const overlayConfig = new OverlayConfig({\n hasBackdrop: true,\n scrollStrategy: this.overlay.scrollStrategies.block(),\n positionStrategy: this.overlay.position().global(),\n width: '100%',\n height: '100%'\n });\n\n const overlayRef = this.overlay.create(overlayConfig);\n const screenLoaderRef = new ScreenLoaderRef(overlayRef);\n\n const componentPortal = new ComponentPortal(ScreenLoader, null, this.injector);\n const componentRef: ComponentRef<ScreenLoader> = overlayRef.attach(componentPortal);\n\n componentRef.setInput('opened', true);\n componentRef.setInput('message', message);\n\n screenLoaderRef._notifyOpened();\n\n return screenLoaderRef;\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -28,7 +28,7 @@ class ScrollSpyOn {
28
28
  this._parent.scrollTo(this.targetId());
29
29
  }
30
30
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: ScrollSpyOn, deps: [], target: i0.ɵɵFactoryTarget.Component });
31
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.4", type: ScrollSpyOn, isStandalone: true, selector: "ngs-scroll-spy-on,[ngs-scroll-spy-on]", inputs: { targetId: { classPropertyName: "targetId", publicName: "targetId", isSignal: true, isRequired: true, transformFunction: null } }, host: { listeners: { "click": "_handleClick($event)" }, properties: { "class.is-active": "isActive" }, classAttribute: "ngs-scroll-spy-on" }, exportAs: ["ngsScrollSpyOn"], ngImport: i0, template: "<ng-content/>\n", styles: [":host{display:block;width:max-content;padding:calc(var(--spacing, .25rem) * 2) calc(var(--spacing, .25rem) * 5);font-size:.875rem;border-left:1px solid var(--color-subtle)}:host:hover{color:var(--color-primary)}:host.is-active{color:var(--color-primary);border-left-color:var(--sys-outline)}\n/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */\n"] });
31
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.4", type: ScrollSpyOn, isStandalone: true, selector: "ngs-scroll-spy-on,[ngs-scroll-spy-on]", inputs: { targetId: { classPropertyName: "targetId", publicName: "targetId", isSignal: true, isRequired: true, transformFunction: null } }, host: { listeners: { "click": "_handleClick($event)" }, properties: { "class.is-active": "isActive" }, classAttribute: "ngs-scroll-spy-on" }, exportAs: ["ngsScrollSpyOn"], ngImport: i0, template: "<ng-content/>\n", styles: [":host{display:block;width:max-content;padding:calc(var(--spacing, .25rem) * 2) calc(var(--spacing, .25rem) * 5);font-size:var(--ngs-font-size-sm);border-left:1px solid var(--ngs-color-subtle)}:host:hover{color:var(--ngs-color-primary)}:host.is-active{color:var(--ngs-color-primary);border-left-color:var(--sys-outline)}\n/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */\n"] });
32
32
  }
33
33
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: ScrollSpyOn, decorators: [{
34
34
  type: Component,
@@ -36,7 +36,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImpor
36
36
  'class': 'ngs-scroll-spy-on',
37
37
  '[class.is-active]': 'isActive',
38
38
  '(click)': '_handleClick($event)'
39
- }, template: "<ng-content/>\n", styles: [":host{display:block;width:max-content;padding:calc(var(--spacing, .25rem) * 2) calc(var(--spacing, .25rem) * 5);font-size:.875rem;border-left:1px solid var(--color-subtle)}:host:hover{color:var(--color-primary)}:host.is-active{color:var(--color-primary);border-left-color:var(--sys-outline)}\n/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */\n"] }]
39
+ }, template: "<ng-content/>\n", styles: [":host{display:block;width:max-content;padding:calc(var(--spacing, .25rem) * 2) calc(var(--spacing, .25rem) * 5);font-size:var(--ngs-font-size-sm);border-left:1px solid var(--ngs-color-subtle)}:host:hover{color:var(--ngs-color-primary)}:host.is-active{color:var(--ngs-color-primary);border-left-color:var(--sys-outline)}\n/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */\n"] }]
40
40
  }], propDecorators: { targetId: [{ type: i0.Input, args: [{ isSignal: true, alias: "targetId", required: true }] }] } });
41
41
 
42
42
  class ScrollSpyNav {
@@ -145,13 +145,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImpor
145
145
 
146
146
  class ScrollSpyTitle {
147
147
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: ScrollSpyTitle, deps: [], target: i0.ɵɵFactoryTarget.Component });
148
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.4", type: ScrollSpyTitle, isStandalone: true, selector: "ngs-scroll-spy-title,[ngs-scroll-spy-title]", host: { classAttribute: "ngs-scroll-spy-title" }, exportAs: ["ngsScrollSpyTitle"], ngImport: i0, template: "<div class=\"truncate\"><ng-content/></div>\n", styles: [":host{display:block;font-weight:500;font-size:1.25rem}\n/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */\n"] });
148
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.4", type: ScrollSpyTitle, isStandalone: true, selector: "ngs-scroll-spy-title,[ngs-scroll-spy-title]", host: { classAttribute: "ngs-scroll-spy-title" }, exportAs: ["ngsScrollSpyTitle"], ngImport: i0, template: "<div class=\"truncate\"><ng-content/></div>\n", styles: [":host{display:block;font-weight:500;font-size:var(--ngs-font-size-xl)}\n/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */\n"] });
149
149
  }
150
150
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: ScrollSpyTitle, decorators: [{
151
151
  type: Component,
152
152
  args: [{ selector: 'ngs-scroll-spy-title,[ngs-scroll-spy-title]', exportAs: 'ngsScrollSpyTitle', host: {
153
153
  'class': 'ngs-scroll-spy-title'
154
- }, template: "<div class=\"truncate\"><ng-content/></div>\n", styles: [":host{display:block;font-weight:500;font-size:1.25rem}\n/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */\n"] }]
154
+ }, template: "<div class=\"truncate\"><ng-content/></div>\n", styles: [":host{display:block;font-weight:500;font-size:var(--ngs-font-size-xl)}\n/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */\n"] }]
155
155
  }] });
156
156
 
157
157
  class ScrollSpyContainerDirective {
@@ -200,7 +200,7 @@ class ScrollSpyBackToTop {
200
200
  }
201
201
  }
202
202
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: ScrollSpyBackToTop, deps: [], target: i0.ɵɵFactoryTarget.Component });
203
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.4", type: ScrollSpyBackToTop, isStandalone: true, selector: "ngs-scroll-spy-back-to-top,[ngs-scroll-spy-back-to-top]", host: { listeners: { "click": "scrollToTop()" } }, exportAs: ["ngsScrollSpyBackToTop"], ngImport: i0, template: "<ngs-icon name=\"fluent:arrow-up-24-regular\"/>\n<ng-content/>\n", styles: [":host{display:inline-flex;align-items:center;gap:calc(var(--spacing, .25rem) * 1);font-size:.875rem;font-weight:600;cursor:pointer;--icon-size: calc(var(--spacing, .25rem) * 4.5)}:host:hover{color:var(--color-primary)}\n/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "component", type: Icon, selector: "ngs-icon", inputs: ["name"], exportAs: ["ngsIcon"] }] });
203
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.4", type: ScrollSpyBackToTop, isStandalone: true, selector: "ngs-scroll-spy-back-to-top,[ngs-scroll-spy-back-to-top]", host: { listeners: { "click": "scrollToTop()" } }, exportAs: ["ngsScrollSpyBackToTop"], ngImport: i0, template: "<ngs-icon name=\"fluent:arrow-up-24-regular\"/>\n<ng-content/>\n", styles: [":host{display:inline-flex;align-items:center;gap:calc(var(--spacing, .25rem) * 1);font-size:var(--ngs-font-size-sm);font-weight:600;cursor:pointer;--icon-size: calc(var(--spacing, .25rem) * 4.5)}:host:hover{color:var(--ngs-color-primary)}\n/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "component", type: Icon, selector: "ngs-icon", inputs: ["name"], exportAs: ["ngsIcon"] }] });
204
204
  }
205
205
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: ScrollSpyBackToTop, decorators: [{
206
206
  type: Component,
@@ -208,7 +208,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImpor
208
208
  Icon
209
209
  ], host: {
210
210
  '(click)': 'scrollToTop()'
211
- }, template: "<ngs-icon name=\"fluent:arrow-up-24-regular\"/>\n<ng-content/>\n", styles: [":host{display:inline-flex;align-items:center;gap:calc(var(--spacing, .25rem) * 1);font-size:.875rem;font-weight:600;cursor:pointer;--icon-size: calc(var(--spacing, .25rem) * 4.5)}:host:hover{color:var(--color-primary)}\n/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */\n"] }]
211
+ }, template: "<ngs-icon name=\"fluent:arrow-up-24-regular\"/>\n<ng-content/>\n", styles: [":host{display:inline-flex;align-items:center;gap:calc(var(--spacing, .25rem) * 1);font-size:var(--ngs-font-size-sm);font-weight:600;cursor:pointer;--icon-size: calc(var(--spacing, .25rem) * 4.5)}:host:hover{color:var(--ngs-color-primary)}\n/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */\n"] }]
212
212
  }] });
213
213
 
214
214
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"ngstarter-ui-components-scroll-spy.mjs","sources":["../../../projects/components/scroll-spy/src/types.ts","../../../projects/components/scroll-spy/src/scroll-spy-on/scroll-spy-on.ts","../../../projects/components/scroll-spy/src/scroll-spy-on/scroll-spy-on.html","../../../projects/components/scroll-spy/src/scroll-spy-nav/scroll-spy-nav.ts","../../../projects/components/scroll-spy/src/scroll-spy-nav/scroll-spy-nav.html","../../../projects/components/scroll-spy/src/scroll-spy-title/scroll-spy-title.ts","../../../projects/components/scroll-spy/src/scroll-spy-title/scroll-spy-title.html","../../../projects/components/scroll-spy/src/scroll-spy-container.directive.ts","../../../projects/components/scroll-spy/src/scroll-spy-back-to-top/scroll-spy-back-to-top.ts","../../../projects/components/scroll-spy/src/scroll-spy-back-to-top/scroll-spy-back-to-top.html","../../../projects/components/scroll-spy/ngstarter-ui-components-scroll-spy.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\n\nexport const SCROLL_SPY_NAV = new InjectionToken('SPY_NAV');\n","import { Component, ElementRef, inject, input, OnInit, Renderer2, DOCUMENT } from '@angular/core';\n\nimport { ScrollSpyNav } from '../scroll-spy-nav/scroll-spy-nav';\nimport { SCROLL_SPY_NAV } from '../types';\n\n@Component({\n selector: 'ngs-scroll-spy-on,[ngs-scroll-spy-on]',\n exportAs: 'ngsScrollSpyOn',\n templateUrl: './scroll-spy-on.html',\n styleUrl: './scroll-spy-on.scss',\n host: {\n 'class': 'ngs-scroll-spy-on',\n '[class.is-active]': 'isActive',\n '(click)': '_handleClick($event)'\n }\n})\nexport class ScrollSpyOn implements OnInit {\n private _parent = inject<ScrollSpyNav>(SCROLL_SPY_NAV);\n private _elementRef = inject(ElementRef);\n private _renderer = inject(Renderer2);\n private _document = inject(DOCUMENT);\n\n targetId = input.required<string>();\n\n ngOnInit() {\n const fullUrl = this._document.location.origin + this._document.location.pathname;\n this._renderer.setAttribute(this._elementRef.nativeElement, 'href', fullUrl + '#' + this.targetId());\n }\n\n protected get isActive() {\n return this.targetId() === this._parent.activeId;\n }\n\n protected _handleClick(event: MouseEvent) {\n event.preventDefault();\n event.stopPropagation();\n this._parent.scrollTo(this.targetId());\n }\n}\n","<ng-content/>\n","import {\n AfterContentInit,\n ChangeDetectorRef,\n Component,\n DestroyRef,\n inject,\n NgZone,\n PLATFORM_ID,\n contentChildren,\n DOCUMENT\n} from '@angular/core';\nimport { isPlatformServer } from '@angular/common';\nimport { debounceTime, fromEvent } from 'rxjs';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { SCROLL_SPY_NAV } from '../types';\nimport { ScrollSpyOn } from '../scroll-spy-on/scroll-spy-on';\nimport { LAYOUT_CONTENT } from '@ngstarter-ui/components/layout';\nimport { PANEL_CONTENT } from '@ngstarter-ui/components/panel';\n\n@Component({\n selector: 'ngs-scroll-spy-nav,[ngs-scroll-spy-nav]',\n exportAs: 'ngsScrollSpyNav',\n templateUrl: './scroll-spy-nav.html',\n styleUrl: './scroll-spy-nav.scss',\n providers: [\n {\n provide: SCROLL_SPY_NAV,\n useExisting: ScrollSpyNav\n }\n ],\n host: {\n 'class': 'ngs-scroll-spy-nav'\n }\n})\nexport class ScrollSpyNav implements AfterContentInit {\n private document = inject(DOCUMENT);\n private cdr = inject(ChangeDetectorRef);\n private platformId = inject(PLATFORM_ID);\n private zone = inject(NgZone);\n private destroyRef = inject(DestroyRef);\n private panelBody = inject(PANEL_CONTENT, { optional: true });\n private layoutBody = inject(LAYOUT_CONTENT, { optional: true });\n\n readonly _items = contentChildren(ScrollSpyOn);\n\n private threshold = 10;\n protected _activeId: string;\n private scrollContainer: HTMLElement;\n\n ngAfterContentInit() {\n if (isPlatformServer(this.platformId)) {\n return;\n }\n\n if (this.panelBody) {\n this.scrollContainer = this.panelBody.scrollContainer();\n } else if (this.layoutBody) {\n this.scrollContainer = this.layoutBody.scrollContainer();\n } else {\n this.scrollContainer = this.document.body;\n }\n\n if (this.scrollContainer) {\n this.zone.runOutsideAngular(() => {\n fromEvent(this.scrollContainer, 'scroll')\n .pipe(\n debounceTime(35),\n takeUntilDestroyed(this.destroyRef)\n )\n .subscribe(() => {\n this._findActiveItem();\n })\n ;\n });\n setTimeout(() => {\n this._findActiveItem();\n }, 10);\n }\n }\n\n get activeId(): string {\n return this._activeId;\n }\n\n scrollTo(targetId: string) {\n if (!this.scrollContainer) {\n return;\n }\n\n this._activeId = targetId;\n const targetElement = this.document.querySelector('#' + targetId) as HTMLElement;\n const offsetTopFix = parseInt(getComputedStyle(targetElement).marginTop) +\n parseInt(getComputedStyle(targetElement).height) + this.threshold\n ;\n this.cdr.detectChanges();\n this.scrollContainer.scroll({\n top: targetElement.offsetTop - offsetTopFix,\n left: 0,\n behavior: 'smooth'\n });\n }\n\n private _findActiveItem() {\n for (let item of this._items()) {\n const targetElement = this.document.querySelector('#' + item.targetId()) as HTMLElement;\n\n if (targetElement) {\n if (this._elementIsVisibleInViewport(this.scrollContainer, targetElement)) {\n if (this._activeId === item.targetId()) {\n return;\n }\n\n this.zone.run(() => {\n this._activeId = item.targetId();\n this.cdr.detectChanges();\n });\n break;\n }\n }\n }\n }\n\n private _elementIsVisibleInViewport(container: HTMLElement, targetEl: HTMLElement, partiallyVisible = false) {\n const { top, left, bottom, right } = targetEl.getBoundingClientRect();\n const containerRect = container.getBoundingClientRect();\n const innerWidth = containerRect.width;\n const innerHeight = containerRect.height;\n return partiallyVisible\n ? ((top > 0 && top < innerHeight) ||\n (bottom > 0 && bottom < innerHeight)) &&\n ((left > 0 && left < innerWidth) || (right > 0 && right < innerWidth))\n : top >= 0 && left >= 0 && bottom <= innerHeight && right <= innerWidth;\n }\n}\n","<ng-content select=\"ngs-scroll-spy-title,[ngs-scroll-spy-title]\"/>\n<div>\n <ng-content/>\n</div>\n<ng-content select=\"ngs-scroll-spy-back-to-top,[ngs-scroll-spy-back-to-top]\"/>\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'ngs-scroll-spy-title,[ngs-scroll-spy-title]',\n exportAs: 'ngsScrollSpyTitle',\n templateUrl: './scroll-spy-title.html',\n styleUrl: './scroll-spy-title.scss',\n host: {\n 'class': 'ngs-scroll-spy-title'\n }\n})\nexport class ScrollSpyTitle {\n\n}\n","<div class=\"truncate\"><ng-content/></div>\n","import { Directive, ElementRef, inject } from '@angular/core';\n\n@Directive({\n selector: '[ngsScrollSpyContainer]',\n exportAs: 'ngsScrollSpyContainer',\n host: {\n 'class': 'ngs-scroll-spy-container'\n }\n})\nexport class ScrollSpyContainerDirective {\n private elementRef = inject(ElementRef);\n\n getScrollContainer(): HTMLElement {\n return this.elementRef.nativeElement;\n }\n}\n","import { Component, DOCUMENT, inject, PLATFORM_ID } from '@angular/core';\nimport { PANEL_CONTENT } from '@ngstarter-ui/components/panel';\nimport { LAYOUT_CONTENT } from '@ngstarter-ui/components/layout';\nimport { isPlatformServer } from '@angular/common';\nimport { Icon } from '@ngstarter-ui/components/icon';\n\n@Component({\n selector: 'ngs-scroll-spy-back-to-top,[ngs-scroll-spy-back-to-top]',\n exportAs: 'ngsScrollSpyBackToTop',\n imports: [\n Icon\n ],\n templateUrl: './scroll-spy-back-to-top.html',\n styleUrl: './scroll-spy-back-to-top.scss',\n host: {\n '(click)': 'scrollToTop()'\n }\n})\nexport class ScrollSpyBackToTop {\n private platformId = inject(PLATFORM_ID);\n private document = inject(DOCUMENT);\n private panelBody = inject(PANEL_CONTENT, { optional: true });\n private layoutBody = inject(LAYOUT_CONTENT, { optional: true });\n\n private scrollContainer: HTMLElement;\n\n scrollToTop() {\n if (isPlatformServer(this.platformId)) {\n return;\n }\n\n if (this.panelBody) {\n this.scrollContainer = this.panelBody.scrollContainer();\n } else if (this.layoutBody) {\n this.scrollContainer = this.layoutBody.scrollContainer();\n } else {\n this.scrollContainer = this.document.body;\n }\n\n if (this.scrollContainer) {\n this.scrollContainer.scrollTo({\n top: 0,\n behavior: 'smooth'\n });\n }\n }\n}\n","<ngs-icon name=\"fluent:arrow-up-24-regular\"/>\n<ng-content/>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ngstarter-ui-components-scroll-spy.mjs","sources":["../../../projects/components/scroll-spy/src/types.ts","../../../projects/components/scroll-spy/src/scroll-spy-on/scroll-spy-on.ts","../../../projects/components/scroll-spy/src/scroll-spy-on/scroll-spy-on.html","../../../projects/components/scroll-spy/src/scroll-spy-nav/scroll-spy-nav.ts","../../../projects/components/scroll-spy/src/scroll-spy-nav/scroll-spy-nav.html","../../../projects/components/scroll-spy/src/scroll-spy-title/scroll-spy-title.ts","../../../projects/components/scroll-spy/src/scroll-spy-title/scroll-spy-title.html","../../../projects/components/scroll-spy/src/scroll-spy-container.directive.ts","../../../projects/components/scroll-spy/src/scroll-spy-back-to-top/scroll-spy-back-to-top.ts","../../../projects/components/scroll-spy/src/scroll-spy-back-to-top/scroll-spy-back-to-top.html","../../../projects/components/scroll-spy/ngstarter-ui-components-scroll-spy.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\n\nexport const SCROLL_SPY_NAV = new InjectionToken('SPY_NAV');\n","import { Component, ElementRef, inject, input, OnInit, Renderer2, DOCUMENT } from '@angular/core';\n\nimport { ScrollSpyNav } from '../scroll-spy-nav/scroll-spy-nav';\nimport { SCROLL_SPY_NAV } from '../types';\n\n@Component({\n selector: 'ngs-scroll-spy-on,[ngs-scroll-spy-on]',\n exportAs: 'ngsScrollSpyOn',\n templateUrl: './scroll-spy-on.html',\n styleUrl: './scroll-spy-on.scss',\n host: {\n 'class': 'ngs-scroll-spy-on',\n '[class.is-active]': 'isActive',\n '(click)': '_handleClick($event)'\n }\n})\nexport class ScrollSpyOn implements OnInit {\n private _parent = inject<ScrollSpyNav>(SCROLL_SPY_NAV);\n private _elementRef = inject(ElementRef);\n private _renderer = inject(Renderer2);\n private _document = inject(DOCUMENT);\n\n targetId = input.required<string>();\n\n ngOnInit() {\n const fullUrl = this._document.location.origin + this._document.location.pathname;\n this._renderer.setAttribute(this._elementRef.nativeElement, 'href', fullUrl + '#' + this.targetId());\n }\n\n protected get isActive() {\n return this.targetId() === this._parent.activeId;\n }\n\n protected _handleClick(event: MouseEvent) {\n event.preventDefault();\n event.stopPropagation();\n this._parent.scrollTo(this.targetId());\n }\n}\n","<ng-content/>\n","import {\n AfterContentInit,\n ChangeDetectorRef,\n Component,\n DestroyRef,\n inject,\n NgZone,\n PLATFORM_ID,\n contentChildren,\n DOCUMENT\n} from '@angular/core';\nimport { isPlatformServer } from '@angular/common';\nimport { debounceTime, fromEvent } from 'rxjs';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { SCROLL_SPY_NAV } from '../types';\nimport { ScrollSpyOn } from '../scroll-spy-on/scroll-spy-on';\nimport { LAYOUT_CONTENT } from '@ngstarter-ui/components/layout';\nimport { PANEL_CONTENT } from '@ngstarter-ui/components/panel';\n\n@Component({\n selector: 'ngs-scroll-spy-nav,[ngs-scroll-spy-nav]',\n exportAs: 'ngsScrollSpyNav',\n templateUrl: './scroll-spy-nav.html',\n styleUrl: './scroll-spy-nav.scss',\n providers: [\n {\n provide: SCROLL_SPY_NAV,\n useExisting: ScrollSpyNav\n }\n ],\n host: {\n 'class': 'ngs-scroll-spy-nav'\n }\n})\nexport class ScrollSpyNav implements AfterContentInit {\n private document = inject(DOCUMENT);\n private cdr = inject(ChangeDetectorRef);\n private platformId = inject(PLATFORM_ID);\n private zone = inject(NgZone);\n private destroyRef = inject(DestroyRef);\n private panelBody = inject(PANEL_CONTENT, { optional: true });\n private layoutBody = inject(LAYOUT_CONTENT, { optional: true });\n\n readonly _items = contentChildren(ScrollSpyOn);\n\n private threshold = 10;\n protected _activeId: string;\n private scrollContainer: HTMLElement;\n\n ngAfterContentInit() {\n if (isPlatformServer(this.platformId)) {\n return;\n }\n\n if (this.panelBody) {\n this.scrollContainer = this.panelBody.scrollContainer();\n } else if (this.layoutBody) {\n this.scrollContainer = this.layoutBody.scrollContainer();\n } else {\n this.scrollContainer = this.document.body;\n }\n\n if (this.scrollContainer) {\n this.zone.runOutsideAngular(() => {\n fromEvent(this.scrollContainer, 'scroll')\n .pipe(\n debounceTime(35),\n takeUntilDestroyed(this.destroyRef)\n )\n .subscribe(() => {\n this._findActiveItem();\n })\n ;\n });\n setTimeout(() => {\n this._findActiveItem();\n }, 10);\n }\n }\n\n get activeId(): string {\n return this._activeId;\n }\n\n scrollTo(targetId: string) {\n if (!this.scrollContainer) {\n return;\n }\n\n this._activeId = targetId;\n const targetElement = this.document.querySelector('#' + targetId) as HTMLElement;\n const offsetTopFix = parseInt(getComputedStyle(targetElement).marginTop) +\n parseInt(getComputedStyle(targetElement).height) + this.threshold\n ;\n this.cdr.detectChanges();\n this.scrollContainer.scroll({\n top: targetElement.offsetTop - offsetTopFix,\n left: 0,\n behavior: 'smooth'\n });\n }\n\n private _findActiveItem() {\n for (let item of this._items()) {\n const targetElement = this.document.querySelector('#' + item.targetId()) as HTMLElement;\n\n if (targetElement) {\n if (this._elementIsVisibleInViewport(this.scrollContainer, targetElement)) {\n if (this._activeId === item.targetId()) {\n return;\n }\n\n this.zone.run(() => {\n this._activeId = item.targetId();\n this.cdr.detectChanges();\n });\n break;\n }\n }\n }\n }\n\n private _elementIsVisibleInViewport(container: HTMLElement, targetEl: HTMLElement, partiallyVisible = false) {\n const { top, left, bottom, right } = targetEl.getBoundingClientRect();\n const containerRect = container.getBoundingClientRect();\n const innerWidth = containerRect.width;\n const innerHeight = containerRect.height;\n return partiallyVisible\n ? ((top > 0 && top < innerHeight) ||\n (bottom > 0 && bottom < innerHeight)) &&\n ((left > 0 && left < innerWidth) || (right > 0 && right < innerWidth))\n : top >= 0 && left >= 0 && bottom <= innerHeight && right <= innerWidth;\n }\n}\n","<ng-content select=\"ngs-scroll-spy-title,[ngs-scroll-spy-title]\"/>\n<div>\n <ng-content/>\n</div>\n<ng-content select=\"ngs-scroll-spy-back-to-top,[ngs-scroll-spy-back-to-top]\"/>\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'ngs-scroll-spy-title,[ngs-scroll-spy-title]',\n exportAs: 'ngsScrollSpyTitle',\n templateUrl: './scroll-spy-title.html',\n styleUrl: './scroll-spy-title.scss',\n host: {\n 'class': 'ngs-scroll-spy-title'\n }\n})\nexport class ScrollSpyTitle {\n\n}\n","<div class=\"truncate\"><ng-content/></div>\n","import { Directive, ElementRef, inject } from '@angular/core';\n\n@Directive({\n selector: '[ngsScrollSpyContainer]',\n exportAs: 'ngsScrollSpyContainer',\n host: {\n 'class': 'ngs-scroll-spy-container'\n }\n})\nexport class ScrollSpyContainerDirective {\n private elementRef = inject(ElementRef);\n\n getScrollContainer(): HTMLElement {\n return this.elementRef.nativeElement;\n }\n}\n","import { Component, DOCUMENT, inject, PLATFORM_ID } from '@angular/core';\nimport { PANEL_CONTENT } from '@ngstarter-ui/components/panel';\nimport { LAYOUT_CONTENT } from '@ngstarter-ui/components/layout';\nimport { isPlatformServer } from '@angular/common';\nimport { Icon } from '@ngstarter-ui/components/icon';\n\n@Component({\n selector: 'ngs-scroll-spy-back-to-top,[ngs-scroll-spy-back-to-top]',\n exportAs: 'ngsScrollSpyBackToTop',\n imports: [\n Icon\n ],\n templateUrl: './scroll-spy-back-to-top.html',\n styleUrl: './scroll-spy-back-to-top.scss',\n host: {\n '(click)': 'scrollToTop()'\n }\n})\nexport class ScrollSpyBackToTop {\n private platformId = inject(PLATFORM_ID);\n private document = inject(DOCUMENT);\n private panelBody = inject(PANEL_CONTENT, { optional: true });\n private layoutBody = inject(LAYOUT_CONTENT, { optional: true });\n\n private scrollContainer: HTMLElement;\n\n scrollToTop() {\n if (isPlatformServer(this.platformId)) {\n return;\n }\n\n if (this.panelBody) {\n this.scrollContainer = this.panelBody.scrollContainer();\n } else if (this.layoutBody) {\n this.scrollContainer = this.layoutBody.scrollContainer();\n } else {\n this.scrollContainer = this.document.body;\n }\n\n if (this.scrollContainer) {\n this.scrollContainer.scrollTo({\n top: 0,\n behavior: 'smooth'\n });\n }\n }\n}\n","<ngs-icon name=\"fluent:arrow-up-24-regular\"/>\n<ng-content/>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -437,7 +437,7 @@ class ScrollbarArea {
437
437
  });
438
438
  }
439
439
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: ScrollbarArea, deps: [], target: i0.ɵɵFactoryTarget.Component });
440
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "21.2.4", type: ScrollbarArea, isStandalone: true, selector: "ngs-scrollbar-area", inputs: { scrollbarWidth: { classPropertyName: "scrollbarWidth", publicName: "scrollbarWidth", isSignal: true, isRequired: false, transformFunction: null }, autoHide: { classPropertyName: "autoHide", publicName: "autoHide", isSignal: true, isRequired: false, transformFunction: null }, absolute: { classPropertyName: "absolute", publicName: "absolute", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { scrolled: "scrolled" }, host: { properties: { "class.scrollbar-visible": "isVisible()", "class.scrollbar-interactive": "isInteractive()", "class.is-absolute": "absolute()" }, classAttribute: "ngs-scrollbar-area" }, viewQueries: [{ propertyName: "scrollableContentRef", first: true, predicate: ["scrollableContent"], descendants: true, isSignal: true }, { propertyName: "scrollTrackRef", first: true, predicate: ["scrollTrack"], descendants: true, isSignal: true }, { propertyName: "scrollThumbRef", first: true, predicate: ["scrollThumb"], descendants: true, isSignal: true }, { propertyName: "scrollTrackXRef", first: true, predicate: ["scrollTrackX"], descendants: true, isSignal: true }, { propertyName: "scrollThumbXRef", first: true, predicate: ["scrollThumbX"], descendants: true, isSignal: true }], exportAs: ["ngsScrollbarArea"], ngImport: i0, template: "<div #scrollableContent class=\"scrollable-content\">\n <ng-content/>\n</div>\n<div #scrollTrack class=\"scroll-track\">\n <div #scrollThumb class=\"scroll-thumb\"></div>\n</div>\n<div #scrollTrackX class=\"scroll-track-x\">\n <div #scrollThumbX class=\"scroll-thumb-x\"></div>\n</div>\n", styles: [":host{--ngs-scrollbar-area-thumb-bg: var(--color-neutral-200);--ngs-scrollbar-area-thumb-hover-bg: var(--color-neutral-300);--ngs-scrollbar-area-thumb-active-bg: var(--color-neutral-300);--ngs-scrollbar-area-width: 10px;--ngs-scrollbar-area-scroll-track-bg: transparent;display:block;overflow:hidden;position:absolute;inset:0}:host .scrollable-content{height:100%;overflow-y:scroll;overflow-x:scroll;width:100%;padding-right:0;box-sizing:border-box}:host .scrollable-content::-webkit-scrollbar{width:0;height:0;background:transparent}:host .scrollable-content{scrollbar-width:none;-ms-overflow-style:none}:host .scroll-track{position:absolute;top:0;right:0;bottom:0;width:var(--ngs-scrollbar-area-width);background:var(--ngs-scrollbar-area-scroll-track-bg);border-radius:.25rem;opacity:0;transition:opacity .2s ease-in-out;z-index:100;pointer-events:none}:host .scroll-thumb{position:absolute;top:0;left:0;width:var(--ngs-scrollbar-area-width);background:var(--ngs-scrollbar-area-thumb-bg);border-radius:.25rem;transition:background-color .2s ease-in-out;pointer-events:auto}:host .scroll-track-x{position:absolute;left:0;right:0;bottom:0;height:var(--ngs-scrollbar-area-width);background:var(--ngs-scrollbar-area-scroll-track-bg);border-radius:.25rem;opacity:0;transition:opacity .2s ease-in-out;z-index:100;pointer-events:none}:host .scroll-thumb-x{position:absolute;bottom:0;left:0;height:var(--ngs-scrollbar-area-width);background:var(--ngs-scrollbar-area-thumb-bg);border-radius:.25rem;transition:background-color .2s ease-in-out;pointer-events:auto}:host .scroll-thumb:hover,:host .scroll-thumb-x:hover{background:var(--ngs-scrollbar-area-thumb-hover-bg)}:host .scroll-thumb:active,:host .scroll-thumb-x:active{background:var(--ngs-scrollbar-area-thumb-active-bg)}:host.scrollbar-visible .scroll-track,:host.scrollbar-visible .scroll-track-x{opacity:1}\n/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
440
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "21.2.4", type: ScrollbarArea, isStandalone: true, selector: "ngs-scrollbar-area", inputs: { scrollbarWidth: { classPropertyName: "scrollbarWidth", publicName: "scrollbarWidth", isSignal: true, isRequired: false, transformFunction: null }, autoHide: { classPropertyName: "autoHide", publicName: "autoHide", isSignal: true, isRequired: false, transformFunction: null }, absolute: { classPropertyName: "absolute", publicName: "absolute", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { scrolled: "scrolled" }, host: { properties: { "class.scrollbar-visible": "isVisible()", "class.scrollbar-interactive": "isInteractive()", "class.is-absolute": "absolute()" }, classAttribute: "ngs-scrollbar-area" }, viewQueries: [{ propertyName: "scrollableContentRef", first: true, predicate: ["scrollableContent"], descendants: true, isSignal: true }, { propertyName: "scrollTrackRef", first: true, predicate: ["scrollTrack"], descendants: true, isSignal: true }, { propertyName: "scrollThumbRef", first: true, predicate: ["scrollThumb"], descendants: true, isSignal: true }, { propertyName: "scrollTrackXRef", first: true, predicate: ["scrollTrackX"], descendants: true, isSignal: true }, { propertyName: "scrollThumbXRef", first: true, predicate: ["scrollThumbX"], descendants: true, isSignal: true }], exportAs: ["ngsScrollbarArea"], ngImport: i0, template: "<div #scrollableContent class=\"scrollable-content\">\n <ng-content/>\n</div>\n<div #scrollTrack class=\"scroll-track\">\n <div #scrollThumb class=\"scroll-thumb\"></div>\n</div>\n<div #scrollTrackX class=\"scroll-track-x\">\n <div #scrollThumbX class=\"scroll-thumb-x\"></div>\n</div>\n", styles: [":host{--ngs-scrollbar-area-thumb-bg: var(--ngs-color-neutral-200);--ngs-scrollbar-area-thumb-hover-bg: var(--ngs-color-neutral-300);--ngs-scrollbar-area-thumb-active-bg: var(--ngs-color-neutral-300);--ngs-scrollbar-area-width: 10px;--ngs-scrollbar-area-scroll-track-bg: transparent;display:block;overflow:hidden;position:absolute;inset:0}:host .scrollable-content{height:100%;overflow-y:scroll;overflow-x:scroll;width:100%;padding-right:0;box-sizing:border-box}:host .scrollable-content::-webkit-scrollbar{width:0;height:0;background:transparent}:host .scrollable-content{scrollbar-width:none;-ms-overflow-style:none}:host .scroll-track{position:absolute;top:0;right:0;bottom:0;width:var(--ngs-scrollbar-area-width);background:var(--ngs-scrollbar-area-scroll-track-bg);border-radius:var(--ngs-radius-sm);opacity:0;transition:opacity .2s ease-in-out;z-index:100;pointer-events:none}:host .scroll-thumb{position:absolute;top:0;left:0;width:var(--ngs-scrollbar-area-width);background:var(--ngs-scrollbar-area-thumb-bg);border-radius:var(--ngs-radius-sm);transition:background-color .2s ease-in-out;pointer-events:auto}:host .scroll-track-x{position:absolute;left:0;right:0;bottom:0;height:var(--ngs-scrollbar-area-width);background:var(--ngs-scrollbar-area-scroll-track-bg);border-radius:var(--ngs-radius-sm);opacity:0;transition:opacity .2s ease-in-out;z-index:100;pointer-events:none}:host .scroll-thumb-x{position:absolute;bottom:0;left:0;height:var(--ngs-scrollbar-area-width);background:var(--ngs-scrollbar-area-thumb-bg);border-radius:var(--ngs-radius-sm);transition:background-color .2s ease-in-out;pointer-events:auto}:host .scroll-thumb:hover,:host .scroll-thumb-x:hover{background:var(--ngs-scrollbar-area-thumb-hover-bg)}:host .scroll-thumb:active,:host .scroll-thumb-x:active{background:var(--ngs-scrollbar-area-thumb-active-bg)}:host.scrollbar-visible .scroll-track,:host.scrollbar-visible .scroll-track-x{opacity:1}\n/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
441
441
  }
442
442
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: ScrollbarArea, decorators: [{
443
443
  type: Component,
@@ -446,7 +446,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImpor
446
446
  '[class.scrollbar-visible]': 'isVisible()',
447
447
  '[class.scrollbar-interactive]': 'isInteractive()',
448
448
  '[class.is-absolute]': 'absolute()',
449
- }, template: "<div #scrollableContent class=\"scrollable-content\">\n <ng-content/>\n</div>\n<div #scrollTrack class=\"scroll-track\">\n <div #scrollThumb class=\"scroll-thumb\"></div>\n</div>\n<div #scrollTrackX class=\"scroll-track-x\">\n <div #scrollThumbX class=\"scroll-thumb-x\"></div>\n</div>\n", styles: [":host{--ngs-scrollbar-area-thumb-bg: var(--color-neutral-200);--ngs-scrollbar-area-thumb-hover-bg: var(--color-neutral-300);--ngs-scrollbar-area-thumb-active-bg: var(--color-neutral-300);--ngs-scrollbar-area-width: 10px;--ngs-scrollbar-area-scroll-track-bg: transparent;display:block;overflow:hidden;position:absolute;inset:0}:host .scrollable-content{height:100%;overflow-y:scroll;overflow-x:scroll;width:100%;padding-right:0;box-sizing:border-box}:host .scrollable-content::-webkit-scrollbar{width:0;height:0;background:transparent}:host .scrollable-content{scrollbar-width:none;-ms-overflow-style:none}:host .scroll-track{position:absolute;top:0;right:0;bottom:0;width:var(--ngs-scrollbar-area-width);background:var(--ngs-scrollbar-area-scroll-track-bg);border-radius:.25rem;opacity:0;transition:opacity .2s ease-in-out;z-index:100;pointer-events:none}:host .scroll-thumb{position:absolute;top:0;left:0;width:var(--ngs-scrollbar-area-width);background:var(--ngs-scrollbar-area-thumb-bg);border-radius:.25rem;transition:background-color .2s ease-in-out;pointer-events:auto}:host .scroll-track-x{position:absolute;left:0;right:0;bottom:0;height:var(--ngs-scrollbar-area-width);background:var(--ngs-scrollbar-area-scroll-track-bg);border-radius:.25rem;opacity:0;transition:opacity .2s ease-in-out;z-index:100;pointer-events:none}:host .scroll-thumb-x{position:absolute;bottom:0;left:0;height:var(--ngs-scrollbar-area-width);background:var(--ngs-scrollbar-area-thumb-bg);border-radius:.25rem;transition:background-color .2s ease-in-out;pointer-events:auto}:host .scroll-thumb:hover,:host .scroll-thumb-x:hover{background:var(--ngs-scrollbar-area-thumb-hover-bg)}:host .scroll-thumb:active,:host .scroll-thumb-x:active{background:var(--ngs-scrollbar-area-thumb-active-bg)}:host.scrollbar-visible .scroll-track,:host.scrollbar-visible .scroll-track-x{opacity:1}\n/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */\n"] }]
449
+ }, template: "<div #scrollableContent class=\"scrollable-content\">\n <ng-content/>\n</div>\n<div #scrollTrack class=\"scroll-track\">\n <div #scrollThumb class=\"scroll-thumb\"></div>\n</div>\n<div #scrollTrackX class=\"scroll-track-x\">\n <div #scrollThumbX class=\"scroll-thumb-x\"></div>\n</div>\n", styles: [":host{--ngs-scrollbar-area-thumb-bg: var(--ngs-color-neutral-200);--ngs-scrollbar-area-thumb-hover-bg: var(--ngs-color-neutral-300);--ngs-scrollbar-area-thumb-active-bg: var(--ngs-color-neutral-300);--ngs-scrollbar-area-width: 10px;--ngs-scrollbar-area-scroll-track-bg: transparent;display:block;overflow:hidden;position:absolute;inset:0}:host .scrollable-content{height:100%;overflow-y:scroll;overflow-x:scroll;width:100%;padding-right:0;box-sizing:border-box}:host .scrollable-content::-webkit-scrollbar{width:0;height:0;background:transparent}:host .scrollable-content{scrollbar-width:none;-ms-overflow-style:none}:host .scroll-track{position:absolute;top:0;right:0;bottom:0;width:var(--ngs-scrollbar-area-width);background:var(--ngs-scrollbar-area-scroll-track-bg);border-radius:var(--ngs-radius-sm);opacity:0;transition:opacity .2s ease-in-out;z-index:100;pointer-events:none}:host .scroll-thumb{position:absolute;top:0;left:0;width:var(--ngs-scrollbar-area-width);background:var(--ngs-scrollbar-area-thumb-bg);border-radius:var(--ngs-radius-sm);transition:background-color .2s ease-in-out;pointer-events:auto}:host .scroll-track-x{position:absolute;left:0;right:0;bottom:0;height:var(--ngs-scrollbar-area-width);background:var(--ngs-scrollbar-area-scroll-track-bg);border-radius:var(--ngs-radius-sm);opacity:0;transition:opacity .2s ease-in-out;z-index:100;pointer-events:none}:host .scroll-thumb-x{position:absolute;bottom:0;left:0;height:var(--ngs-scrollbar-area-width);background:var(--ngs-scrollbar-area-thumb-bg);border-radius:var(--ngs-radius-sm);transition:background-color .2s ease-in-out;pointer-events:auto}:host .scroll-thumb:hover,:host .scroll-thumb-x:hover{background:var(--ngs-scrollbar-area-thumb-hover-bg)}:host .scroll-thumb:active,:host .scroll-thumb-x:active{background:var(--ngs-scrollbar-area-thumb-active-bg)}:host.scrollbar-visible .scroll-track,:host.scrollbar-visible .scroll-track-x{opacity:1}\n/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */\n"] }]
450
450
  }], ctorParameters: () => [], propDecorators: { scrollableContentRef: [{ type: i0.ViewChild, args: ['scrollableContent', { isSignal: true }] }], scrollTrackRef: [{ type: i0.ViewChild, args: ['scrollTrack', { isSignal: true }] }], scrollThumbRef: [{ type: i0.ViewChild, args: ['scrollThumb', { isSignal: true }] }], scrollTrackXRef: [{ type: i0.ViewChild, args: ['scrollTrackX', { isSignal: true }] }], scrollThumbXRef: [{ type: i0.ViewChild, args: ['scrollThumbX', { isSignal: true }] }], scrollbarWidth: [{ type: i0.Input, args: [{ isSignal: true, alias: "scrollbarWidth", required: false }] }], autoHide: [{ type: i0.Input, args: [{ isSignal: true, alias: "autoHide", required: false }] }], absolute: [{ type: i0.Input, args: [{ isSignal: true, alias: "absolute", required: false }] }], scrolled: [{
451
451
  type: Output
452
452
  }] } });
@@ -1 +1 @@
1
- {"version":3,"file":"ngstarter-ui-components-scrollbar-area.mjs","sources":["../../../projects/components/scrollbar-area/src/scrollbar-area/scrollbar-area.ts","../../../projects/components/scrollbar-area/src/scrollbar-area/scrollbar-area.html","../../../projects/components/scrollbar-area/ngstarter-ui-components-scrollbar-area.ts"],"sourcesContent":["import {\n Component,\n ElementRef,\n NgZone,\n Renderer2,\n inject,\n PLATFORM_ID,\n signal,\n computed,\n effect,\n input,\n DestroyRef,\n untracked,\n viewChild,\n ChangeDetectionStrategy,\n Output,\n EventEmitter\n} from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\nimport {\n fromEvent,\n map,\n takeUntil,\n switchMap,\n tap,\n merge,\n debounceTime,\n distinctUntilChanged,\n Observable,\n finalize,\n filter,\n Subscription\n} from 'rxjs';\nimport { NavigationEnd, Router } from '@angular/router';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n@Component({\n selector: 'ngs-scrollbar-area',\n exportAs: 'ngsScrollbarArea',\n templateUrl: './scrollbar-area.html',\n styleUrl: './scrollbar-area.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n 'class': 'ngs-scrollbar-area',\n '[class.scrollbar-visible]': 'isVisible()',\n '[class.scrollbar-interactive]': 'isInteractive()',\n '[class.is-absolute]': 'absolute()',\n }\n})\nexport class ScrollbarArea {\n private readonly platformId = inject(PLATFORM_ID);\n private readonly elRef = inject(ElementRef<HTMLElement>);\n private readonly zone = inject(NgZone);\n private readonly renderer = inject(Renderer2);\n private readonly destroyRef = inject(DestroyRef);\n private readonly router = inject(Router);\n\n readonly scrollableContentRef = viewChild.required<ElementRef<HTMLElement>>('scrollableContent');\n readonly scrollTrackRef = viewChild.required<ElementRef<HTMLElement>>('scrollTrack');\n readonly scrollThumbRef = viewChild.required<ElementRef<HTMLElement>>('scrollThumb');\n readonly scrollTrackXRef = viewChild.required<ElementRef<HTMLElement>>('scrollTrackX');\n readonly scrollThumbXRef = viewChild.required<ElementRef<HTMLElement>>('scrollThumbX');\n\n readonly scrollbarWidth = input<string>('8px');\n readonly autoHide = input<boolean>(true);\n readonly absolute = input<boolean>(true);\n @Output() readonly scrolled = new EventEmitter<Event>();\n\n readonly isDragging = signal(false);\n readonly isHovering = signal(false);\n private readonly scrollTop = signal(0);\n private readonly scrollLeft = signal(0);\n private readonly contentScrollHeight = signal(0);\n private readonly contentScrollWidth = signal(0);\n private readonly contentClientHeight = signal(0);\n private readonly contentClientWidth = signal(0);\n private readonly trackClientHeight = signal(0);\n private readonly trackClientWidth = signal(0);\n private readonly showDueToActivity = signal(false);\n\n // Vertical axis\n readonly hasScrollY = computed(() => this.contentScrollHeight() > this.contentClientHeight() + 1);\n readonly scrollRatioY = computed(() => this.hasScrollY() ? this.contentClientHeight() / this.contentScrollHeight() : 1);\n\n readonly minThumbHeight = 20;\n readonly thumbHeight = computed(() => {\n if (!this.hasScrollY()) return 0;\n const trackHeight = this.trackClientHeight();\n const ratio = this.scrollRatioY();\n const calculated = trackHeight * ratio;\n return Math.max(calculated, this.minThumbHeight);\n });\n readonly maxScrollTop = computed(() => Math.max(0, this.contentScrollHeight() - this.contentClientHeight()));\n readonly maxThumbTop = computed(() => Math.max(0, this.trackClientHeight() - this.thumbHeight()));\n readonly thumbTop = computed(() => {\n if (!this.hasScrollY()) return 0;\n const maxScroll = this.maxScrollTop();\n const currentScroll = this.scrollTop();\n const maxThumb = this.maxThumbTop();\n return maxScroll > 0 ? (currentScroll / maxScroll) * maxThumb : 0;\n });\n\n // Horizontal axis\n readonly hasScrollX = computed(() => this.contentScrollWidth() > this.contentClientWidth() + 1);\n readonly scrollRatioX = computed(() => this.hasScrollX() ? this.contentClientWidth() / this.contentScrollWidth() : 1);\n\n readonly minThumbWidth = 20;\n readonly thumbWidth = computed(() => {\n if (!this.hasScrollX()) return 0;\n const trackWidth = this.trackClientWidth();\n const ratio = this.scrollRatioX();\n const calculated = trackWidth * ratio;\n return Math.max(calculated, this.minThumbWidth);\n });\n readonly maxScrollLeft = computed(() => Math.max(0, this.contentScrollWidth() - this.contentClientWidth()));\n readonly maxThumbLeft = computed(() => Math.max(0, this.trackClientWidth() - this.thumbWidth()));\n readonly thumbLeft = computed(() => {\n if (!this.hasScrollX()) return 0;\n const maxScroll = this.maxScrollLeft();\n const currentScroll = this.scrollLeft();\n const maxThumb = this.maxThumbLeft();\n return maxScroll > 0 ? (currentScroll / maxScroll) * maxThumb : 0;\n });\n\n readonly hasAnyScroll = computed(() => this.hasScrollX() || this.hasScrollY());\n readonly isVisible = computed(() => {\n if (!this.hasAnyScroll()) return false;\n if (!this.autoHide()) return true;\n return this.isHovering() || this.isDragging() || this.showDueToActivity();\n });\n readonly isInteractive = computed(() => this.isHovering() || this.isDragging());\n\n private isInitialized = signal(false);\n private eventsSubscription: Subscription | null = null;\n private observersSubscription: Subscription | null = null;\n private hideTimeout: any = null;\n\n constructor() {\n effect(() => {\n this.scrollableContentRef();\n this.scrollTrackRef();\n this.scrollThumbRef();\n this.scrollTrackXRef();\n this.scrollThumbXRef();\n\n if (isPlatformBrowser(this.platformId) && !this.isInitialized()) {\n this.initializeComponentLogic();\n this.isInitialized.set(true);\n }\n });\n this.setupStyleEffects();\n this.destroyRef.onDestroy(() => this.cleanup());\n }\n\n private initializeComponentLogic(): void {\n this.updateDimensions();\n this.setupObservers();\n this.setupEventStreams();\n this.setupRouteChanges();\n }\n\n private raf(cb: () => void): void {\n // Use requestAnimationFrame in the browser, fallback to setTimeout on SSR\n if (typeof requestAnimationFrame !== 'undefined') {\n requestAnimationFrame(() => cb());\n } else {\n setTimeout(() => cb(), 0);\n }\n }\n\n private setupStyleEffects(): void {\n // Vertical thickness (width) and horizontal thickness (height)\n effect(() => {\n const thickness = this.scrollbarWidth();\n const trackY = this.scrollTrackRef().nativeElement;\n const thumbY = this.scrollThumbRef().nativeElement;\n const trackX = this.scrollTrackXRef().nativeElement;\n const thumbX = this.scrollThumbXRef().nativeElement;\n untracked(() => {\n // Vertical scrollbar: width is thickness\n this.renderer.setStyle(trackY, 'width', thickness);\n this.renderer.setStyle(thumbY, 'width', thickness);\n // Horizontal scrollbar: height is thickness\n this.renderer.setStyle(trackX, 'height', thickness);\n this.renderer.setStyle(thumbX, 'height', thickness);\n });\n });\n\n // Vertical thumb height\n effect(() => {\n const height = this.thumbHeight();\n const thumbElement = this.scrollThumbRef().nativeElement;\n untracked(() => {\n this.renderer.setStyle(thumbElement, 'height', `${height}px`);\n });\n });\n\n // Vertical thumb position\n effect(() => {\n const top = this.thumbTop();\n const thumbElement = this.scrollThumbRef().nativeElement;\n untracked(() => {\n this.renderer.setStyle(thumbElement, 'transform', `translateY(${top}px)`);\n });\n });\n\n // Horizontal thumb width\n effect(() => {\n const width = this.thumbWidth();\n const thumbElementX = this.scrollThumbXRef().nativeElement;\n untracked(() => {\n this.renderer.setStyle(thumbElementX, 'width', `${width}px`);\n });\n });\n\n // Horizontal thumb position\n effect(() => {\n const left = this.thumbLeft();\n const thumbElementX = this.scrollThumbXRef().nativeElement;\n untracked(() => {\n this.renderer.setStyle(thumbElementX, 'transform', `translateX(${left}px)`);\n });\n });\n\n // Toggle track visibility per axis based on content\n effect(() => {\n const hasY = this.hasScrollY();\n const trackY = this.scrollTrackRef().nativeElement;\n untracked(() => {\n this.renderer.setStyle(trackY, 'display', hasY ? 'block' : 'none');\n });\n });\n effect(() => {\n const hasX = this.hasScrollX();\n const trackX = this.scrollTrackXRef().nativeElement;\n untracked(() => {\n this.renderer.setStyle(trackX, 'display', hasX ? 'block' : 'none');\n });\n });\n\n // When scrollability toggles, recompute dimensions after tracks are laid out\n effect(() => {\n // depend on both so we run when either axis scrollability changes\n const _hasY = this.hasScrollY();\n const _hasX = this.hasScrollX();\n untracked(() => {\n // Wait for style changes (display:block/none) to apply, then measure\n this.raf(() => {\n this.zone.run(() => this.updateDimensions());\n });\n });\n });\n }\n\n private setupObservers(): void {\n const scrollableElement = this.scrollableContentRef().nativeElement;\n const hostElement = this.elRef.nativeElement;\n\n // Helper to observe all element nodes within a subtree with ResizeObserver\n const observeSubtree = (ro: ResizeObserver, root: Element) => {\n ro.observe(root);\n // Observe all current descendants as well to catch size changes that don't bubble to the container\n const walker = document.createTreeWalker(root, NodeFilter.SHOW_ELEMENT);\n let node = walker.currentNode as Element | null;\n while (node) {\n ro.observe(node);\n node = walker.nextNode() as Element | null;\n }\n };\n\n const resize$ = new Observable<ResizeObserverEntry[]>(observer => {\n const resizeObserver = new ResizeObserver(entries => this.zone.run(() => observer.next(entries)));\n // Observe host (tracks may affect layout) and the entire subtree of scrollable content\n observeSubtree(resizeObserver, scrollableElement);\n resizeObserver.observe(hostElement);\n return () => resizeObserver.disconnect();\n }).pipe(debounceTime(50));\n\n const mutation$ = new Observable<MutationRecord[]>(observer => {\n const mutationObserver = new MutationObserver(mutations => this.zone.run(() => observer.next(mutations)));\n // Watch for any DOM changes that can affect layout including attribute/class/style changes\n mutationObserver.observe(scrollableElement, { childList: true, subtree: true, characterData: true, attributes: true });\n return () => mutationObserver.disconnect();\n }).pipe(\n tap(mutations => {\n // If nodes were added to the subtree, start observing them for size changes as well\n // We run outside Angular to avoid triggering change detection per node\n this.zone.runOutsideAngular(() => {\n // Create a temporary RO reference by reusing the one from resize$ is not trivial here,\n // but we can trigger a dimension update directly which is enough for many cases.\n // The resize observer above already observes the whole subtree at setup time.\n // For dynamically added nodes, re-run a subtree observation by creating a one-shot RO.\n const newlyAdded: Element[] = [];\n for (const m of mutations) {\n if (m.type === 'childList') {\n m.addedNodes.forEach(n => { if (n.nodeType === Node.ELEMENT_NODE) newlyAdded.push(n as Element); });\n }\n }\n if (newlyAdded.length) {\n try {\n const ro = new ResizeObserver(() => { /* no-op: purpose is to register */ });\n newlyAdded.forEach(el => observeSubtree(ro, el));\n // Disconnect immediately; observing once is enough for triggering initial measure via update below\n ro.disconnect();\n } catch {}\n }\n });\n }),\n debounceTime(50)\n );\n\n this.observersSubscription = merge(resize$, mutation$)\n .subscribe(() => {\n // Use rAF to ensure layout is settled before measuring\n this.raf(() => this.zone.run(() => this.updateDimensions()));\n });\n }\n\n private setupEventStreams(): void {\n const scrollableElement = this.scrollableContentRef().nativeElement;\n const hostElement = this.elRef.nativeElement;\n const thumbElementY = this.scrollThumbRef().nativeElement;\n const thumbElementX = this.scrollThumbXRef().nativeElement;\n\n const scroll$ = fromEvent(scrollableElement, 'scroll', { passive: true }).pipe(\n tap((event) => {\n this.zone.run(() => {\n this.scrollTop.set(scrollableElement.scrollTop);\n this.scrollLeft.set(scrollableElement.scrollLeft);\n this.scrolled.emit(event);\n });\n // Imperative sync to ensure thumbs move with content during scroll\n this.zone.runOutsideAngular(() => {\n this.raf(() => {\n const top = untracked(this.thumbTop);\n const left = untracked(this.thumbLeft);\n this.renderer.setStyle(thumbElementY, 'transform', `translateY(${top}px)`);\n this.renderer.setStyle(thumbElementX, 'transform', `translateX(${left}px)`);\n });\n });\n }),\n filter(() => this.autoHide()),\n tap(() => this.zone.run(() => this.showDueToActivity.set(true))),\n debounceTime(1500),\n tap(() => {\n untracked(() => {\n if (!this.isHovering() && !this.isDragging()) {\n this.zone.run(() => this.showDueToActivity.set(false));\n }\n })\n })\n );\n\n const hostEnter$ = fromEvent<MouseEvent>(hostElement, 'mouseenter').pipe(\n tap(() => this.zone.run(() => {\n this.isHovering.set(true);\n if (untracked(this.autoHide)) this.showDueToActivity.set(true);\n }))\n );\n const hostLeave$ = fromEvent<MouseEvent>(hostElement, 'mouseleave').pipe(\n tap(() => this.zone.run(() => {\n this.isHovering.set(false);\n if(untracked(this.autoHide) && !untracked(this.isDragging)){\n this.scheduleHide();\n }\n }))\n );\n\n const thumbMouseDownY$ = fromEvent<MouseEvent>(thumbElementY, 'mousedown');\n const thumbMouseDownX$ = fromEvent<MouseEvent>(thumbElementX, 'mousedown');\n const mouseMove$ = fromEvent<MouseEvent>(document, 'mousemove');\n const mouseUp$ = fromEvent<MouseEvent>(document, 'mouseup');\n\n const thumbDragY$ = thumbMouseDownY$.pipe(\n tap(event => {\n event.preventDefault();\n event.stopPropagation();\n }),\n switchMap(startEvent => {\n const startY = startEvent.clientY;\n const startScrollTop = scrollableElement.scrollTop;\n const initialTrackHeight = untracked(() => this.trackClientHeight());\n const initialContentHeight = untracked(() => this.contentScrollHeight());\n\n this.zone.run(() => this.isDragging.set(true));\n\n return mouseMove$.pipe(\n map(moveEvent => {\n moveEvent.preventDefault();\n const deltaY = moveEvent.clientY - startY;\n const scrollDelta = initialTrackHeight > 0\n ? (deltaY / initialTrackHeight) * initialContentHeight\n : 0;\n return startScrollTop + scrollDelta;\n }),\n distinctUntilChanged(),\n tap(newScrollTop => {\n this.renderer.setProperty(scrollableElement, 'scrollTop', newScrollTop);\n }),\n takeUntil(mouseUp$),\n finalize(() => {\n this.zone.run(() => {\n this.isDragging.set(false);\n untracked(() => {\n if (this.autoHide() && !this.isHovering()) {\n this.scheduleHide();\n }\n })\n });\n })\n );\n })\n );\n\n const thumbDragX$ = thumbMouseDownX$.pipe(\n tap(event => {\n event.preventDefault();\n event.stopPropagation();\n }),\n switchMap(startEvent => {\n const startX = startEvent.clientX;\n const startScrollLeft = scrollableElement.scrollLeft;\n const initialTrackWidth = untracked(() => this.trackClientWidth());\n const initialContentWidth = untracked(() => this.contentScrollWidth());\n\n this.zone.run(() => this.isDragging.set(true));\n\n return mouseMove$.pipe(\n map(moveEvent => {\n moveEvent.preventDefault();\n const deltaX = moveEvent.clientX - startX;\n const scrollDelta = initialTrackWidth > 0\n ? (deltaX / initialTrackWidth) * initialContentWidth\n : 0;\n return startScrollLeft + scrollDelta;\n }),\n distinctUntilChanged(),\n tap(newScrollLeft => {\n this.renderer.setProperty(scrollableElement, 'scrollLeft', newScrollLeft);\n }),\n takeUntil(mouseUp$),\n finalize(() => {\n this.zone.run(() => {\n this.isDragging.set(false);\n untracked(() => {\n if (this.autoHide() && !this.isHovering()) {\n this.scheduleHide();\n }\n })\n });\n })\n );\n })\n );\n\n this.zone.runOutsideAngular(() => {\n this.eventsSubscription = merge(\n scroll$,\n hostEnter$,\n hostLeave$,\n thumbDragY$,\n thumbDragX$\n ).subscribe();\n });\n }\n\n private scheduleHide(): void {\n this.clearHideTimeout();\n this.zone.runOutsideAngular(() => {\n this.hideTimeout = setTimeout(() => {\n untracked(() => {\n if(!this.isHovering() && !this.isDragging()) {\n this.zone.run(() => this.showDueToActivity.set(false));\n }\n });\n this.hideTimeout = null;\n }, 100);\n });\n }\n\n private clearHideTimeout(): void {\n if (this.hideTimeout) {\n clearTimeout(this.hideTimeout);\n this.hideTimeout = null;\n }\n }\n\n private updateDimensions(): void {\n const scrollableElement = this.scrollableContentRef().nativeElement;\n const trackElementY = this.scrollTrackRef().nativeElement;\n const trackElementX = this.scrollTrackXRef().nativeElement;\n\n if (scrollableElement && trackElementY && trackElementX) {\n // Vertical metrics\n const newScrollHeight = scrollableElement.scrollHeight;\n const newClientHeight = scrollableElement.clientHeight;\n const newTrackHeight = trackElementY.clientHeight;\n const newScrollTop = scrollableElement.scrollTop;\n\n this.contentScrollHeight.set(newScrollHeight);\n this.contentClientHeight.set(newClientHeight);\n this.trackClientHeight.set(newTrackHeight);\n\n if (this.scrollTop() !== newScrollTop) {\n this.scrollTop.set(newScrollTop);\n }\n\n // Horizontal metrics\n const newScrollWidth = scrollableElement.scrollWidth;\n const newClientWidth = scrollableElement.clientWidth;\n const newTrackWidth = trackElementX.clientWidth;\n const newScrollLeft = scrollableElement.scrollLeft;\n\n this.contentScrollWidth.set(newScrollWidth);\n this.contentClientWidth.set(newClientWidth);\n this.trackClientWidth.set(newTrackWidth);\n\n if (this.scrollLeft() !== newScrollLeft) {\n this.scrollLeft.set(newScrollLeft);\n }\n } else {\n this.contentScrollHeight.set(0);\n this.contentClientHeight.set(0);\n this.trackClientHeight.set(0);\n this.scrollTop.set(0);\n\n this.contentScrollWidth.set(0);\n this.contentClientWidth.set(0);\n this.trackClientWidth.set(0);\n this.scrollLeft.set(0);\n }\n }\n\n private cleanup(): void {\n this.clearHideTimeout();\n if (this.eventsSubscription) {\n this.eventsSubscription.unsubscribe();\n this.eventsSubscription = null;\n }\n if (this.observersSubscription) {\n this.observersSubscription.unsubscribe();\n this.observersSubscription = null;\n }\n }\n\n private setupRouteChanges() {\n this.router.events\n .pipe(\n filter(event=> event instanceof NavigationEnd),\n takeUntilDestroyed(this.destroyRef)\n )\n .subscribe(() => {\n this.raf(() => {\n this.updateDimensions();\n });\n })\n ;\n }\n}\n","<div #scrollableContent class=\"scrollable-content\">\n <ng-content/>\n</div>\n<div #scrollTrack class=\"scroll-track\">\n <div #scrollThumb class=\"scroll-thumb\"></div>\n</div>\n<div #scrollTrackX class=\"scroll-track-x\">\n <div #scrollThumbX class=\"scroll-thumb-x\"></div>\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ngstarter-ui-components-scrollbar-area.mjs","sources":["../../../projects/components/scrollbar-area/src/scrollbar-area/scrollbar-area.ts","../../../projects/components/scrollbar-area/src/scrollbar-area/scrollbar-area.html","../../../projects/components/scrollbar-area/ngstarter-ui-components-scrollbar-area.ts"],"sourcesContent":["import {\n Component,\n ElementRef,\n NgZone,\n Renderer2,\n inject,\n PLATFORM_ID,\n signal,\n computed,\n effect,\n input,\n DestroyRef,\n untracked,\n viewChild,\n ChangeDetectionStrategy,\n Output,\n EventEmitter\n} from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\nimport {\n fromEvent,\n map,\n takeUntil,\n switchMap,\n tap,\n merge,\n debounceTime,\n distinctUntilChanged,\n Observable,\n finalize,\n filter,\n Subscription\n} from 'rxjs';\nimport { NavigationEnd, Router } from '@angular/router';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n@Component({\n selector: 'ngs-scrollbar-area',\n exportAs: 'ngsScrollbarArea',\n templateUrl: './scrollbar-area.html',\n styleUrl: './scrollbar-area.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n 'class': 'ngs-scrollbar-area',\n '[class.scrollbar-visible]': 'isVisible()',\n '[class.scrollbar-interactive]': 'isInteractive()',\n '[class.is-absolute]': 'absolute()',\n }\n})\nexport class ScrollbarArea {\n private readonly platformId = inject(PLATFORM_ID);\n private readonly elRef = inject(ElementRef<HTMLElement>);\n private readonly zone = inject(NgZone);\n private readonly renderer = inject(Renderer2);\n private readonly destroyRef = inject(DestroyRef);\n private readonly router = inject(Router);\n\n readonly scrollableContentRef = viewChild.required<ElementRef<HTMLElement>>('scrollableContent');\n readonly scrollTrackRef = viewChild.required<ElementRef<HTMLElement>>('scrollTrack');\n readonly scrollThumbRef = viewChild.required<ElementRef<HTMLElement>>('scrollThumb');\n readonly scrollTrackXRef = viewChild.required<ElementRef<HTMLElement>>('scrollTrackX');\n readonly scrollThumbXRef = viewChild.required<ElementRef<HTMLElement>>('scrollThumbX');\n\n readonly scrollbarWidth = input<string>('8px');\n readonly autoHide = input<boolean>(true);\n readonly absolute = input<boolean>(true);\n @Output() readonly scrolled = new EventEmitter<Event>();\n\n readonly isDragging = signal(false);\n readonly isHovering = signal(false);\n private readonly scrollTop = signal(0);\n private readonly scrollLeft = signal(0);\n private readonly contentScrollHeight = signal(0);\n private readonly contentScrollWidth = signal(0);\n private readonly contentClientHeight = signal(0);\n private readonly contentClientWidth = signal(0);\n private readonly trackClientHeight = signal(0);\n private readonly trackClientWidth = signal(0);\n private readonly showDueToActivity = signal(false);\n\n // Vertical axis\n readonly hasScrollY = computed(() => this.contentScrollHeight() > this.contentClientHeight() + 1);\n readonly scrollRatioY = computed(() => this.hasScrollY() ? this.contentClientHeight() / this.contentScrollHeight() : 1);\n\n readonly minThumbHeight = 20;\n readonly thumbHeight = computed(() => {\n if (!this.hasScrollY()) return 0;\n const trackHeight = this.trackClientHeight();\n const ratio = this.scrollRatioY();\n const calculated = trackHeight * ratio;\n return Math.max(calculated, this.minThumbHeight);\n });\n readonly maxScrollTop = computed(() => Math.max(0, this.contentScrollHeight() - this.contentClientHeight()));\n readonly maxThumbTop = computed(() => Math.max(0, this.trackClientHeight() - this.thumbHeight()));\n readonly thumbTop = computed(() => {\n if (!this.hasScrollY()) return 0;\n const maxScroll = this.maxScrollTop();\n const currentScroll = this.scrollTop();\n const maxThumb = this.maxThumbTop();\n return maxScroll > 0 ? (currentScroll / maxScroll) * maxThumb : 0;\n });\n\n // Horizontal axis\n readonly hasScrollX = computed(() => this.contentScrollWidth() > this.contentClientWidth() + 1);\n readonly scrollRatioX = computed(() => this.hasScrollX() ? this.contentClientWidth() / this.contentScrollWidth() : 1);\n\n readonly minThumbWidth = 20;\n readonly thumbWidth = computed(() => {\n if (!this.hasScrollX()) return 0;\n const trackWidth = this.trackClientWidth();\n const ratio = this.scrollRatioX();\n const calculated = trackWidth * ratio;\n return Math.max(calculated, this.minThumbWidth);\n });\n readonly maxScrollLeft = computed(() => Math.max(0, this.contentScrollWidth() - this.contentClientWidth()));\n readonly maxThumbLeft = computed(() => Math.max(0, this.trackClientWidth() - this.thumbWidth()));\n readonly thumbLeft = computed(() => {\n if (!this.hasScrollX()) return 0;\n const maxScroll = this.maxScrollLeft();\n const currentScroll = this.scrollLeft();\n const maxThumb = this.maxThumbLeft();\n return maxScroll > 0 ? (currentScroll / maxScroll) * maxThumb : 0;\n });\n\n readonly hasAnyScroll = computed(() => this.hasScrollX() || this.hasScrollY());\n readonly isVisible = computed(() => {\n if (!this.hasAnyScroll()) return false;\n if (!this.autoHide()) return true;\n return this.isHovering() || this.isDragging() || this.showDueToActivity();\n });\n readonly isInteractive = computed(() => this.isHovering() || this.isDragging());\n\n private isInitialized = signal(false);\n private eventsSubscription: Subscription | null = null;\n private observersSubscription: Subscription | null = null;\n private hideTimeout: any = null;\n\n constructor() {\n effect(() => {\n this.scrollableContentRef();\n this.scrollTrackRef();\n this.scrollThumbRef();\n this.scrollTrackXRef();\n this.scrollThumbXRef();\n\n if (isPlatformBrowser(this.platformId) && !this.isInitialized()) {\n this.initializeComponentLogic();\n this.isInitialized.set(true);\n }\n });\n this.setupStyleEffects();\n this.destroyRef.onDestroy(() => this.cleanup());\n }\n\n private initializeComponentLogic(): void {\n this.updateDimensions();\n this.setupObservers();\n this.setupEventStreams();\n this.setupRouteChanges();\n }\n\n private raf(cb: () => void): void {\n // Use requestAnimationFrame in the browser, fallback to setTimeout on SSR\n if (typeof requestAnimationFrame !== 'undefined') {\n requestAnimationFrame(() => cb());\n } else {\n setTimeout(() => cb(), 0);\n }\n }\n\n private setupStyleEffects(): void {\n // Vertical thickness (width) and horizontal thickness (height)\n effect(() => {\n const thickness = this.scrollbarWidth();\n const trackY = this.scrollTrackRef().nativeElement;\n const thumbY = this.scrollThumbRef().nativeElement;\n const trackX = this.scrollTrackXRef().nativeElement;\n const thumbX = this.scrollThumbXRef().nativeElement;\n untracked(() => {\n // Vertical scrollbar: width is thickness\n this.renderer.setStyle(trackY, 'width', thickness);\n this.renderer.setStyle(thumbY, 'width', thickness);\n // Horizontal scrollbar: height is thickness\n this.renderer.setStyle(trackX, 'height', thickness);\n this.renderer.setStyle(thumbX, 'height', thickness);\n });\n });\n\n // Vertical thumb height\n effect(() => {\n const height = this.thumbHeight();\n const thumbElement = this.scrollThumbRef().nativeElement;\n untracked(() => {\n this.renderer.setStyle(thumbElement, 'height', `${height}px`);\n });\n });\n\n // Vertical thumb position\n effect(() => {\n const top = this.thumbTop();\n const thumbElement = this.scrollThumbRef().nativeElement;\n untracked(() => {\n this.renderer.setStyle(thumbElement, 'transform', `translateY(${top}px)`);\n });\n });\n\n // Horizontal thumb width\n effect(() => {\n const width = this.thumbWidth();\n const thumbElementX = this.scrollThumbXRef().nativeElement;\n untracked(() => {\n this.renderer.setStyle(thumbElementX, 'width', `${width}px`);\n });\n });\n\n // Horizontal thumb position\n effect(() => {\n const left = this.thumbLeft();\n const thumbElementX = this.scrollThumbXRef().nativeElement;\n untracked(() => {\n this.renderer.setStyle(thumbElementX, 'transform', `translateX(${left}px)`);\n });\n });\n\n // Toggle track visibility per axis based on content\n effect(() => {\n const hasY = this.hasScrollY();\n const trackY = this.scrollTrackRef().nativeElement;\n untracked(() => {\n this.renderer.setStyle(trackY, 'display', hasY ? 'block' : 'none');\n });\n });\n effect(() => {\n const hasX = this.hasScrollX();\n const trackX = this.scrollTrackXRef().nativeElement;\n untracked(() => {\n this.renderer.setStyle(trackX, 'display', hasX ? 'block' : 'none');\n });\n });\n\n // When scrollability toggles, recompute dimensions after tracks are laid out\n effect(() => {\n // depend on both so we run when either axis scrollability changes\n const _hasY = this.hasScrollY();\n const _hasX = this.hasScrollX();\n untracked(() => {\n // Wait for style changes (display:block/none) to apply, then measure\n this.raf(() => {\n this.zone.run(() => this.updateDimensions());\n });\n });\n });\n }\n\n private setupObservers(): void {\n const scrollableElement = this.scrollableContentRef().nativeElement;\n const hostElement = this.elRef.nativeElement;\n\n // Helper to observe all element nodes within a subtree with ResizeObserver\n const observeSubtree = (ro: ResizeObserver, root: Element) => {\n ro.observe(root);\n // Observe all current descendants as well to catch size changes that don't bubble to the container\n const walker = document.createTreeWalker(root, NodeFilter.SHOW_ELEMENT);\n let node = walker.currentNode as Element | null;\n while (node) {\n ro.observe(node);\n node = walker.nextNode() as Element | null;\n }\n };\n\n const resize$ = new Observable<ResizeObserverEntry[]>(observer => {\n const resizeObserver = new ResizeObserver(entries => this.zone.run(() => observer.next(entries)));\n // Observe host (tracks may affect layout) and the entire subtree of scrollable content\n observeSubtree(resizeObserver, scrollableElement);\n resizeObserver.observe(hostElement);\n return () => resizeObserver.disconnect();\n }).pipe(debounceTime(50));\n\n const mutation$ = new Observable<MutationRecord[]>(observer => {\n const mutationObserver = new MutationObserver(mutations => this.zone.run(() => observer.next(mutations)));\n // Watch for any DOM changes that can affect layout including attribute/class/style changes\n mutationObserver.observe(scrollableElement, { childList: true, subtree: true, characterData: true, attributes: true });\n return () => mutationObserver.disconnect();\n }).pipe(\n tap(mutations => {\n // If nodes were added to the subtree, start observing them for size changes as well\n // We run outside Angular to avoid triggering change detection per node\n this.zone.runOutsideAngular(() => {\n // Create a temporary RO reference by reusing the one from resize$ is not trivial here,\n // but we can trigger a dimension update directly which is enough for many cases.\n // The resize observer above already observes the whole subtree at setup time.\n // For dynamically added nodes, re-run a subtree observation by creating a one-shot RO.\n const newlyAdded: Element[] = [];\n for (const m of mutations) {\n if (m.type === 'childList') {\n m.addedNodes.forEach(n => { if (n.nodeType === Node.ELEMENT_NODE) newlyAdded.push(n as Element); });\n }\n }\n if (newlyAdded.length) {\n try {\n const ro = new ResizeObserver(() => { /* no-op: purpose is to register */ });\n newlyAdded.forEach(el => observeSubtree(ro, el));\n // Disconnect immediately; observing once is enough for triggering initial measure via update below\n ro.disconnect();\n } catch {}\n }\n });\n }),\n debounceTime(50)\n );\n\n this.observersSubscription = merge(resize$, mutation$)\n .subscribe(() => {\n // Use rAF to ensure layout is settled before measuring\n this.raf(() => this.zone.run(() => this.updateDimensions()));\n });\n }\n\n private setupEventStreams(): void {\n const scrollableElement = this.scrollableContentRef().nativeElement;\n const hostElement = this.elRef.nativeElement;\n const thumbElementY = this.scrollThumbRef().nativeElement;\n const thumbElementX = this.scrollThumbXRef().nativeElement;\n\n const scroll$ = fromEvent(scrollableElement, 'scroll', { passive: true }).pipe(\n tap((event) => {\n this.zone.run(() => {\n this.scrollTop.set(scrollableElement.scrollTop);\n this.scrollLeft.set(scrollableElement.scrollLeft);\n this.scrolled.emit(event);\n });\n // Imperative sync to ensure thumbs move with content during scroll\n this.zone.runOutsideAngular(() => {\n this.raf(() => {\n const top = untracked(this.thumbTop);\n const left = untracked(this.thumbLeft);\n this.renderer.setStyle(thumbElementY, 'transform', `translateY(${top}px)`);\n this.renderer.setStyle(thumbElementX, 'transform', `translateX(${left}px)`);\n });\n });\n }),\n filter(() => this.autoHide()),\n tap(() => this.zone.run(() => this.showDueToActivity.set(true))),\n debounceTime(1500),\n tap(() => {\n untracked(() => {\n if (!this.isHovering() && !this.isDragging()) {\n this.zone.run(() => this.showDueToActivity.set(false));\n }\n })\n })\n );\n\n const hostEnter$ = fromEvent<MouseEvent>(hostElement, 'mouseenter').pipe(\n tap(() => this.zone.run(() => {\n this.isHovering.set(true);\n if (untracked(this.autoHide)) this.showDueToActivity.set(true);\n }))\n );\n const hostLeave$ = fromEvent<MouseEvent>(hostElement, 'mouseleave').pipe(\n tap(() => this.zone.run(() => {\n this.isHovering.set(false);\n if(untracked(this.autoHide) && !untracked(this.isDragging)){\n this.scheduleHide();\n }\n }))\n );\n\n const thumbMouseDownY$ = fromEvent<MouseEvent>(thumbElementY, 'mousedown');\n const thumbMouseDownX$ = fromEvent<MouseEvent>(thumbElementX, 'mousedown');\n const mouseMove$ = fromEvent<MouseEvent>(document, 'mousemove');\n const mouseUp$ = fromEvent<MouseEvent>(document, 'mouseup');\n\n const thumbDragY$ = thumbMouseDownY$.pipe(\n tap(event => {\n event.preventDefault();\n event.stopPropagation();\n }),\n switchMap(startEvent => {\n const startY = startEvent.clientY;\n const startScrollTop = scrollableElement.scrollTop;\n const initialTrackHeight = untracked(() => this.trackClientHeight());\n const initialContentHeight = untracked(() => this.contentScrollHeight());\n\n this.zone.run(() => this.isDragging.set(true));\n\n return mouseMove$.pipe(\n map(moveEvent => {\n moveEvent.preventDefault();\n const deltaY = moveEvent.clientY - startY;\n const scrollDelta = initialTrackHeight > 0\n ? (deltaY / initialTrackHeight) * initialContentHeight\n : 0;\n return startScrollTop + scrollDelta;\n }),\n distinctUntilChanged(),\n tap(newScrollTop => {\n this.renderer.setProperty(scrollableElement, 'scrollTop', newScrollTop);\n }),\n takeUntil(mouseUp$),\n finalize(() => {\n this.zone.run(() => {\n this.isDragging.set(false);\n untracked(() => {\n if (this.autoHide() && !this.isHovering()) {\n this.scheduleHide();\n }\n })\n });\n })\n );\n })\n );\n\n const thumbDragX$ = thumbMouseDownX$.pipe(\n tap(event => {\n event.preventDefault();\n event.stopPropagation();\n }),\n switchMap(startEvent => {\n const startX = startEvent.clientX;\n const startScrollLeft = scrollableElement.scrollLeft;\n const initialTrackWidth = untracked(() => this.trackClientWidth());\n const initialContentWidth = untracked(() => this.contentScrollWidth());\n\n this.zone.run(() => this.isDragging.set(true));\n\n return mouseMove$.pipe(\n map(moveEvent => {\n moveEvent.preventDefault();\n const deltaX = moveEvent.clientX - startX;\n const scrollDelta = initialTrackWidth > 0\n ? (deltaX / initialTrackWidth) * initialContentWidth\n : 0;\n return startScrollLeft + scrollDelta;\n }),\n distinctUntilChanged(),\n tap(newScrollLeft => {\n this.renderer.setProperty(scrollableElement, 'scrollLeft', newScrollLeft);\n }),\n takeUntil(mouseUp$),\n finalize(() => {\n this.zone.run(() => {\n this.isDragging.set(false);\n untracked(() => {\n if (this.autoHide() && !this.isHovering()) {\n this.scheduleHide();\n }\n })\n });\n })\n );\n })\n );\n\n this.zone.runOutsideAngular(() => {\n this.eventsSubscription = merge(\n scroll$,\n hostEnter$,\n hostLeave$,\n thumbDragY$,\n thumbDragX$\n ).subscribe();\n });\n }\n\n private scheduleHide(): void {\n this.clearHideTimeout();\n this.zone.runOutsideAngular(() => {\n this.hideTimeout = setTimeout(() => {\n untracked(() => {\n if(!this.isHovering() && !this.isDragging()) {\n this.zone.run(() => this.showDueToActivity.set(false));\n }\n });\n this.hideTimeout = null;\n }, 100);\n });\n }\n\n private clearHideTimeout(): void {\n if (this.hideTimeout) {\n clearTimeout(this.hideTimeout);\n this.hideTimeout = null;\n }\n }\n\n private updateDimensions(): void {\n const scrollableElement = this.scrollableContentRef().nativeElement;\n const trackElementY = this.scrollTrackRef().nativeElement;\n const trackElementX = this.scrollTrackXRef().nativeElement;\n\n if (scrollableElement && trackElementY && trackElementX) {\n // Vertical metrics\n const newScrollHeight = scrollableElement.scrollHeight;\n const newClientHeight = scrollableElement.clientHeight;\n const newTrackHeight = trackElementY.clientHeight;\n const newScrollTop = scrollableElement.scrollTop;\n\n this.contentScrollHeight.set(newScrollHeight);\n this.contentClientHeight.set(newClientHeight);\n this.trackClientHeight.set(newTrackHeight);\n\n if (this.scrollTop() !== newScrollTop) {\n this.scrollTop.set(newScrollTop);\n }\n\n // Horizontal metrics\n const newScrollWidth = scrollableElement.scrollWidth;\n const newClientWidth = scrollableElement.clientWidth;\n const newTrackWidth = trackElementX.clientWidth;\n const newScrollLeft = scrollableElement.scrollLeft;\n\n this.contentScrollWidth.set(newScrollWidth);\n this.contentClientWidth.set(newClientWidth);\n this.trackClientWidth.set(newTrackWidth);\n\n if (this.scrollLeft() !== newScrollLeft) {\n this.scrollLeft.set(newScrollLeft);\n }\n } else {\n this.contentScrollHeight.set(0);\n this.contentClientHeight.set(0);\n this.trackClientHeight.set(0);\n this.scrollTop.set(0);\n\n this.contentScrollWidth.set(0);\n this.contentClientWidth.set(0);\n this.trackClientWidth.set(0);\n this.scrollLeft.set(0);\n }\n }\n\n private cleanup(): void {\n this.clearHideTimeout();\n if (this.eventsSubscription) {\n this.eventsSubscription.unsubscribe();\n this.eventsSubscription = null;\n }\n if (this.observersSubscription) {\n this.observersSubscription.unsubscribe();\n this.observersSubscription = null;\n }\n }\n\n private setupRouteChanges() {\n this.router.events\n .pipe(\n filter(event=> event instanceof NavigationEnd),\n takeUntilDestroyed(this.destroyRef)\n )\n .subscribe(() => {\n this.raf(() => {\n this.updateDimensions();\n });\n })\n ;\n }\n}\n","<div #scrollableContent class=\"scrollable-content\">\n <ng-content/>\n</div>\n<div #scrollTrack class=\"scroll-track\">\n <div #scrollThumb class=\"scroll-thumb\"></div>\n</div>\n<div #scrollTrackX class=\"scroll-track-x\">\n <div #scrollThumbX class=\"scroll-thumb-x\"></div>\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -174,7 +174,7 @@ class Segmented {
174
174
  provide: SEGMENTED,
175
175
  useExisting: forwardRef(() => Segmented)
176
176
  }
177
- ], queries: [{ propertyName: "_buttons", predicate: i0.forwardRef(() => SegmentedButton), descendants: true, isSignal: true }, { propertyName: "_buttonElements", predicate: i0.forwardRef(() => SegmentedButton), descendants: true, read: ElementRef, isSignal: true }], exportAs: ["ngsSegmented"], usesOnChanges: true, ngImport: i0, template: "<div class=\"ngs-segmented-thumb\"\n [style.width.px]=\"_thumbWidth\"\n [style.opacity]=\"_thumbOpacity\"\n [style.transform]=\"'translateX(' + _thumbLeft + 'px)'\"></div>\n<ng-content select=\"ngs-segmented-button,[ngs-segmented-button]\"/>\n", styles: [":host{--ngs-segmented-button-height: calc(var(--spacing, .25rem) * 8);--ngs-segmented-bg: var(--color-surface-container);--ngs-segmented-button-hover-bg: var(--color-surface-container-highest);--ngs-segmented-button-color: var(--color-on-surface-variant);--ngs-segmented-button-hover-color: var(--color-on-surface);--ngs-segmented-button-selected-color: var(--color-primary);--ngs-segmented-button-selected-bg: var(--color-surface);--ngs-segmented-button-selected-shadow: 0 1px 3px 0 rgb(0 0 0 / .1), 0 1px 2px -1px rgb(0 0 0 / .1);--ngs-segmented-padding: calc(var(--spacing, .25rem) * 1);--ngs-segmented-radius: var(--btn-radius);--ngs-segmented-button-radius: calc(var(--btn-radius) - calc(var(--spacing, .25rem) * .5));--ngs-segmented-button-padding: 0 calc(var(--spacing, .25rem) * 3);--ngs-segmented-button-min-width: calc(var(--spacing, .25rem) * 12);--ngs-segmented-button-font-size: .875rem;--ngs-segmented-gap: calc(var(--spacing, .25rem) * 1);--ngs-segmented-button-gap: calc(var(--spacing, .25rem) * 1);--ngs-segmented-button-icon-offset-margin: -6px;--icon-size: calc(var(--spacing, .25rem) * 6)}:host[ngs-segmented-size=sm]{--ngs-segmented-button-height: calc(var(--spacing, .25rem) * 6);--ngs-segmented-button-font-size: .75rem;--ngs-segmented-button-padding: 0 calc(var(--spacing, .25rem) * 2);--ngs-segmented-button-gap: calc(var(--spacing, .25rem) * .5);--icon-size: calc(var(--spacing, .25rem) * 5)}:host{display:flex;align-items:center;-webkit-user-select:none;user-select:none;width:max-content;background:var(--ngs-segmented-bg);padding:var(--ngs-segmented-padding);border-radius:var(--ngs-segmented-radius);gap:var(--ngs-segmented-gap);position:relative}:host .ngs-segmented-thumb{position:absolute;top:var(--ngs-segmented-padding);bottom:var(--ngs-segmented-padding);left:0;background:var(--ngs-segmented-button-selected-bg);border-radius:var(--ngs-segmented-button-radius);box-shadow:var(--ngs-segmented-button-selected-shadow);transition:transform .2s cubic-bezier(.4,0,.2,1),width .2s cubic-bezier(.4,0,.2,1),opacity .2s;pointer-events:none;z-index:0}\n/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */\n"] });
177
+ ], queries: [{ propertyName: "_buttons", predicate: i0.forwardRef(() => SegmentedButton), descendants: true, isSignal: true }, { propertyName: "_buttonElements", predicate: i0.forwardRef(() => SegmentedButton), descendants: true, read: ElementRef, isSignal: true }], exportAs: ["ngsSegmented"], usesOnChanges: true, ngImport: i0, template: "<div class=\"ngs-segmented-thumb\"\n [style.width.px]=\"_thumbWidth\"\n [style.opacity]=\"_thumbOpacity\"\n [style.transform]=\"'translateX(' + _thumbLeft + 'px)'\"></div>\n<ng-content select=\"ngs-segmented-button,[ngs-segmented-button]\"/>\n", styles: [":host{--ngs-segmented-button-height: calc(var(--spacing, .25rem) * 8);--ngs-segmented-bg: var(--ngs-color-surface-container);--ngs-segmented-button-hover-bg: var(--ngs-color-surface-container-highest);--ngs-segmented-button-color: var(--ngs-color-on-surface-variant);--ngs-segmented-button-hover-color: var(--ngs-color-on-surface);--ngs-segmented-button-selected-color: var(--ngs-color-primary);--ngs-segmented-button-selected-bg: var(--ngs-color-surface);--ngs-segmented-button-selected-shadow: var(--ngs-shadow-sm);--ngs-segmented-padding: calc(var(--spacing, .25rem) * 1);--ngs-segmented-radius: var(--ngs-button-radius);--ngs-segmented-button-radius: calc(var(--ngs-button-radius) - calc(var(--spacing, .25rem) * .5));--ngs-segmented-button-padding: 0 calc(var(--spacing, .25rem) * 3);--ngs-segmented-button-min-width: calc(var(--spacing, .25rem) * 12);--ngs-segmented-button-font-size: var(--ngs-font-size-sm);--ngs-segmented-gap: calc(var(--spacing, .25rem) * 1);--ngs-segmented-button-gap: calc(var(--spacing, .25rem) * 1);--ngs-segmented-button-icon-offset-margin: -6px;--icon-size: calc(var(--spacing, .25rem) * 6)}:host[ngs-segmented-size=sm]{--ngs-segmented-button-height: calc(var(--spacing, .25rem) * 6);--ngs-segmented-button-font-size: var(--ngs-font-size-xs);--ngs-segmented-button-padding: 0 calc(var(--spacing, .25rem) * 2);--ngs-segmented-button-gap: calc(var(--spacing, .25rem) * .5);--icon-size: calc(var(--spacing, .25rem) * 5)}:host{display:flex;align-items:center;-webkit-user-select:none;user-select:none;width:max-content;background:var(--ngs-segmented-bg);padding:var(--ngs-segmented-padding);border-radius:var(--ngs-segmented-radius);gap:var(--ngs-segmented-gap);position:relative}:host .ngs-segmented-thumb{position:absolute;top:var(--ngs-segmented-padding);bottom:var(--ngs-segmented-padding);left:0;background:var(--ngs-segmented-button-selected-bg);border-radius:var(--ngs-segmented-button-radius);box-shadow:var(--ngs-segmented-button-selected-shadow);transition:transform .2s cubic-bezier(.4,0,.2,1),width .2s cubic-bezier(.4,0,.2,1),opacity .2s;pointer-events:none;z-index:0}\n/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */\n"] });
178
178
  }
179
179
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: Segmented, decorators: [{
180
180
  type: Component,
@@ -192,7 +192,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImpor
192
192
  'class': 'ngs-segmented',
193
193
  '[class.is-disabled]': 'disabled() || _disabled || null',
194
194
  '(window:resize)': '_onResize()',
195
- }, template: "<div class=\"ngs-segmented-thumb\"\n [style.width.px]=\"_thumbWidth\"\n [style.opacity]=\"_thumbOpacity\"\n [style.transform]=\"'translateX(' + _thumbLeft + 'px)'\"></div>\n<ng-content select=\"ngs-segmented-button,[ngs-segmented-button]\"/>\n", styles: [":host{--ngs-segmented-button-height: calc(var(--spacing, .25rem) * 8);--ngs-segmented-bg: var(--color-surface-container);--ngs-segmented-button-hover-bg: var(--color-surface-container-highest);--ngs-segmented-button-color: var(--color-on-surface-variant);--ngs-segmented-button-hover-color: var(--color-on-surface);--ngs-segmented-button-selected-color: var(--color-primary);--ngs-segmented-button-selected-bg: var(--color-surface);--ngs-segmented-button-selected-shadow: 0 1px 3px 0 rgb(0 0 0 / .1), 0 1px 2px -1px rgb(0 0 0 / .1);--ngs-segmented-padding: calc(var(--spacing, .25rem) * 1);--ngs-segmented-radius: var(--btn-radius);--ngs-segmented-button-radius: calc(var(--btn-radius) - calc(var(--spacing, .25rem) * .5));--ngs-segmented-button-padding: 0 calc(var(--spacing, .25rem) * 3);--ngs-segmented-button-min-width: calc(var(--spacing, .25rem) * 12);--ngs-segmented-button-font-size: .875rem;--ngs-segmented-gap: calc(var(--spacing, .25rem) * 1);--ngs-segmented-button-gap: calc(var(--spacing, .25rem) * 1);--ngs-segmented-button-icon-offset-margin: -6px;--icon-size: calc(var(--spacing, .25rem) * 6)}:host[ngs-segmented-size=sm]{--ngs-segmented-button-height: calc(var(--spacing, .25rem) * 6);--ngs-segmented-button-font-size: .75rem;--ngs-segmented-button-padding: 0 calc(var(--spacing, .25rem) * 2);--ngs-segmented-button-gap: calc(var(--spacing, .25rem) * .5);--icon-size: calc(var(--spacing, .25rem) * 5)}:host{display:flex;align-items:center;-webkit-user-select:none;user-select:none;width:max-content;background:var(--ngs-segmented-bg);padding:var(--ngs-segmented-padding);border-radius:var(--ngs-segmented-radius);gap:var(--ngs-segmented-gap);position:relative}:host .ngs-segmented-thumb{position:absolute;top:var(--ngs-segmented-padding);bottom:var(--ngs-segmented-padding);left:0;background:var(--ngs-segmented-button-selected-bg);border-radius:var(--ngs-segmented-button-radius);box-shadow:var(--ngs-segmented-button-selected-shadow);transition:transform .2s cubic-bezier(.4,0,.2,1),width .2s cubic-bezier(.4,0,.2,1),opacity .2s;pointer-events:none;z-index:0}\n/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */\n"] }]
195
+ }, template: "<div class=\"ngs-segmented-thumb\"\n [style.width.px]=\"_thumbWidth\"\n [style.opacity]=\"_thumbOpacity\"\n [style.transform]=\"'translateX(' + _thumbLeft + 'px)'\"></div>\n<ng-content select=\"ngs-segmented-button,[ngs-segmented-button]\"/>\n", styles: [":host{--ngs-segmented-button-height: calc(var(--spacing, .25rem) * 8);--ngs-segmented-bg: var(--ngs-color-surface-container);--ngs-segmented-button-hover-bg: var(--ngs-color-surface-container-highest);--ngs-segmented-button-color: var(--ngs-color-on-surface-variant);--ngs-segmented-button-hover-color: var(--ngs-color-on-surface);--ngs-segmented-button-selected-color: var(--ngs-color-primary);--ngs-segmented-button-selected-bg: var(--ngs-color-surface);--ngs-segmented-button-selected-shadow: var(--ngs-shadow-sm);--ngs-segmented-padding: calc(var(--spacing, .25rem) * 1);--ngs-segmented-radius: var(--ngs-button-radius);--ngs-segmented-button-radius: calc(var(--ngs-button-radius) - calc(var(--spacing, .25rem) * .5));--ngs-segmented-button-padding: 0 calc(var(--spacing, .25rem) * 3);--ngs-segmented-button-min-width: calc(var(--spacing, .25rem) * 12);--ngs-segmented-button-font-size: var(--ngs-font-size-sm);--ngs-segmented-gap: calc(var(--spacing, .25rem) * 1);--ngs-segmented-button-gap: calc(var(--spacing, .25rem) * 1);--ngs-segmented-button-icon-offset-margin: -6px;--icon-size: calc(var(--spacing, .25rem) * 6)}:host[ngs-segmented-size=sm]{--ngs-segmented-button-height: calc(var(--spacing, .25rem) * 6);--ngs-segmented-button-font-size: var(--ngs-font-size-xs);--ngs-segmented-button-padding: 0 calc(var(--spacing, .25rem) * 2);--ngs-segmented-button-gap: calc(var(--spacing, .25rem) * .5);--icon-size: calc(var(--spacing, .25rem) * 5)}:host{display:flex;align-items:center;-webkit-user-select:none;user-select:none;width:max-content;background:var(--ngs-segmented-bg);padding:var(--ngs-segmented-padding);border-radius:var(--ngs-segmented-radius);gap:var(--ngs-segmented-gap);position:relative}:host .ngs-segmented-thumb{position:absolute;top:var(--ngs-segmented-padding);bottom:var(--ngs-segmented-padding);left:0;background:var(--ngs-segmented-button-selected-bg);border-radius:var(--ngs-segmented-button-radius);box-shadow:var(--ngs-segmented-button-selected-shadow);transition:transform .2s cubic-bezier(.4,0,.2,1),width .2s cubic-bezier(.4,0,.2,1),opacity .2s;pointer-events:none;z-index:0}\n/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */\n"] }]
196
196
  }], ctorParameters: () => [], propDecorators: { _buttons: [{ type: i0.ContentChildren, args: [forwardRef(() => SegmentedButton), { ...{ descendants: true }, isSignal: true }] }], _buttonElements: [{ type: i0.ContentChildren, args: [forwardRef(() => SegmentedButton), { ...{ read: ElementRef, descendants: true }, isSignal: true }] }], value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], valueChange: [{ type: i0.Output, args: ["valueChange"] }] } });
197
197
 
198
198
  class SegmentedIconDirective {