@seniorsistemas/angular-components 19.9.15 → 19.10.0-develop-ef29acb7

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 (505) hide show
  1. package/README.md +84 -2
  2. package/accordion/README.md +5 -4
  3. package/accordion/lib/accordion/accordion.module.d.ts +7 -0
  4. package/alert/lib/alert/alert.module.d.ts +7 -0
  5. package/badge/README.md +5 -4
  6. package/badge/lib/badge/badge.module.d.ts +10 -0
  7. package/bignumber-input/README.md +5 -4
  8. package/bignumber-input/lib/bignumber-input/bignumber-input.directive.d.ts +16 -39
  9. package/bignumber-input/lib/bignumber-input/bignumber-input.module.d.ts +7 -0
  10. package/breadcrumb/README.md +5 -4
  11. package/breadcrumb/lib/dynamic-breadcrumb/dynamic-breadcrumb.module.d.ts +5 -1
  12. package/button/lib/button/button.module.d.ts +7 -0
  13. package/calendar-mask/README.md +5 -4
  14. package/calendar-mask/lib/calendar-mask/calendar-mask.module.d.ts +7 -0
  15. package/card/README.md +6 -5
  16. package/card/lib/card/card.module.d.ts +7 -0
  17. package/chat/README.md +11 -8
  18. package/chat/lib/chat/chat.module.d.ts +7 -0
  19. package/checkbox-list/README.md +5 -4
  20. package/checkbox-list/lib/checkbox-list/checkbox-list.module.d.ts +7 -0
  21. package/chips/README.md +5 -4
  22. package/chips/lib/chips/chips.module.d.ts +7 -0
  23. package/code-editor/README.md +5 -4
  24. package/code-editor/lib/code-editor/code-editor.module.d.ts +7 -0
  25. package/collapse-link/README.md +5 -4
  26. package/collapse-link/lib/collapse-link/collapse-link.module.d.ts +7 -0
  27. package/common/lib/angular-components.module.d.ts +9 -0
  28. package/common/lib/provide-angular-components.d.ts +19 -0
  29. package/common/lib/svg-factory/svg-factory.module.d.ts +7 -0
  30. package/common/public-api.d.ts +1 -0
  31. package/content-generator/README.md +2 -2
  32. package/content-generator/lib/content-generator/content-generator.module.d.ts +7 -0
  33. package/control-errors/README.md +2 -2
  34. package/control-errors/lib/control-errors/control-errors.module.d.ts +7 -0
  35. package/country-phone-picker/README.md +2 -2
  36. package/country-phone-picker/lib/country-phone-picker/country-phone-picker.module.d.ts +7 -0
  37. package/currency/README.md +1 -1
  38. package/custom-fields/README.md +14 -3
  39. package/custom-fields/lib/custom-fields/custom-fields.module.d.ts +7 -0
  40. package/custom-fields/lib/custom-fields/models/custom-field-value-parser.d.ts +21 -0
  41. package/custom-fields/lib/custom-fields/models/index.d.ts +1 -0
  42. package/dialog/README.md +1 -1
  43. package/drawer/README.md +8 -4
  44. package/drawer/lib/drawer/drawer.module.d.ts +10 -0
  45. package/dynamic-form/README.md +18 -2
  46. package/dynamic-form/dynamic-form/dynamic-form.module.d.ts +7 -0
  47. package/dynamic-form/dynamic-form/form-field/addon-config.d.ts +10 -1
  48. package/dynamic-form/dynamic-form/form-field/configurations/fields/currency-field.d.ts +15 -15
  49. package/dynamic-form/dynamic-form/form-field/configurations/fields/number-field.d.ts +8 -6
  50. package/dynamic-form/dynamic-form/form-field/fields/bignumber/bignumber-field.component.d.ts +5 -2
  51. package/dynamic-form/public-api.d.ts +0 -1
  52. package/editable-overlay/README.md +2 -2
  53. package/editable-overlay/lib/editable-overlay/editable-overlay.module.d.ts +7 -0
  54. package/empty-state/README.md +5 -2
  55. package/empty-state/lib/empty-state/empty-state.module.d.ts +7 -0
  56. package/esm2022/accordion/lib/accordion/accordion.module.mjs +8 -1
  57. package/esm2022/alert/lib/alert/alert.module.mjs +8 -1
  58. package/esm2022/badge/lib/badge/badge.module.mjs +11 -1
  59. package/esm2022/bignumber-input/lib/bignumber-input/bignumber-input.directive.mjs +19 -127
  60. package/esm2022/bignumber-input/lib/bignumber-input/bignumber-input.module.mjs +8 -1
  61. package/esm2022/breadcrumb/lib/dynamic-breadcrumb/dynamic-breadcrumb.module.mjs +6 -2
  62. package/esm2022/button/lib/button/button.module.mjs +8 -1
  63. package/esm2022/calendar-mask/lib/calendar-mask/calendar-mask.module.mjs +8 -1
  64. package/esm2022/card/lib/card/card.module.mjs +8 -1
  65. package/esm2022/chat/lib/chat/chat.module.mjs +8 -1
  66. package/esm2022/checkbox-list/lib/checkbox-list/checkbox-list.module.mjs +8 -1
  67. package/esm2022/chips/lib/chips/chips.module.mjs +8 -1
  68. package/esm2022/code-editor/lib/code-editor/code-editor.component.mjs +10 -1
  69. package/esm2022/code-editor/lib/code-editor/code-editor.module.mjs +9 -15
  70. package/esm2022/collapse-link/lib/collapse-link/collapse-link.module.mjs +8 -1
  71. package/esm2022/common/lib/angular-components.module.mjs +10 -1
  72. package/esm2022/common/lib/provide-angular-components.mjs +22 -0
  73. package/esm2022/common/lib/svg-factory/svg-factory.module.mjs +8 -1
  74. package/esm2022/common/public-api.mjs +2 -1
  75. package/esm2022/content-generator/lib/content-generator/content-generator.module.mjs +8 -1
  76. package/esm2022/control-errors/lib/control-errors/control-errors.module.mjs +8 -1
  77. package/esm2022/country-phone-picker/lib/country-phone-picker/country-phone-picker.module.mjs +8 -1
  78. package/esm2022/country-phone-picker/lib/country-phone-picker/country-phone-picker.service.mjs +4 -3
  79. package/esm2022/custom-fields/lib/custom-fields/custom-fields.component.mjs +17 -13
  80. package/esm2022/custom-fields/lib/custom-fields/custom-fields.module.mjs +8 -1
  81. package/esm2022/custom-fields/lib/custom-fields/custom-fields.service.mjs +4 -3
  82. package/esm2022/custom-fields/lib/custom-fields/models/custom-field-type.mjs +4 -2
  83. package/esm2022/custom-fields/lib/custom-fields/models/custom-field-value-parser.mjs +46 -0
  84. package/esm2022/custom-fields/lib/custom-fields/models/index.mjs +2 -1
  85. package/esm2022/drawer/lib/drawer/drawer.module.mjs +11 -1
  86. package/esm2022/dynamic-form/dynamic-form/dynamic-form.module.mjs +8 -1
  87. package/esm2022/dynamic-form/dynamic-form/form-field/addon-config.mjs +6 -2
  88. package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/currency-field.mjs +1 -1
  89. package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/number-field.mjs +1 -1
  90. package/esm2022/dynamic-form/dynamic-form/form-field/fields/bignumber/bignumber-field.component.mjs +33 -10
  91. package/esm2022/dynamic-form/public-api.mjs +2 -7
  92. package/esm2022/editable-overlay/lib/editable-overlay/editable-overlay.module.mjs +8 -1
  93. package/esm2022/empty-state/lib/empty-state/empty-state.module.mjs +8 -1
  94. package/esm2022/fieldset/lib/fieldset/fieldset.module.mjs +8 -1
  95. package/esm2022/file-picker/lib/file-picker/file-picker.module.mjs +8 -1
  96. package/esm2022/file-picker/lib/file-picker/file-picker.service.mjs +4 -3
  97. package/esm2022/gantt/lib/gantt/gantt.module.mjs +8 -1
  98. package/esm2022/global-search/lib/global-search/global-search.module.mjs +19 -1
  99. package/esm2022/grid-menu/lib/grid-menu/grid-menu.module.mjs +8 -1
  100. package/esm2022/help-popover/lib/help-popover/help-popover.module.mjs +8 -1
  101. package/esm2022/image-cropper/lib/image-cropper/image-cropper.module.mjs +12 -1
  102. package/esm2022/image-cropper/lib/image-cropper/image-cropper.service.mjs +4 -3
  103. package/esm2022/infinite-scroll/lib/infinite-scroll/infinite-scroll.module.mjs +8 -1
  104. package/esm2022/info-sign/lib/info-sign/info-sign.module.mjs +8 -1
  105. package/esm2022/inline-edit/lib/inline-edit/components/fields/inline-edit-number/inline-edit-number.component.mjs +5 -5
  106. package/esm2022/inline-edit/lib/inline-edit/inline-edit.module.mjs +8 -1
  107. package/esm2022/input-group/lib/input-group/input-group.module.mjs +8 -1
  108. package/esm2022/input-mask/lib/input-mask/input-mask.module.mjs +8 -1
  109. package/esm2022/input-text/lib/input-text/input-text.module.mjs +8 -1
  110. package/esm2022/insights/lib/insights/insights.module.mjs +11 -1
  111. package/esm2022/kanban/lib/kanban/kanban-event.service.mjs +4 -3
  112. package/esm2022/kanban/lib/kanban/kanban.module.mjs +11 -1
  113. package/esm2022/label-value/lib/label-value/label-value.module.mjs +8 -1
  114. package/esm2022/loading-state/lib/loading-state/loading-state.module.mjs +8 -1
  115. package/esm2022/locale/lib/locale/locale.module.mjs +14 -1
  116. package/esm2022/locale/lib/locale/locale.service.mjs +10 -32
  117. package/esm2022/locale/lib/locale/options/index.mjs +1 -13
  118. package/esm2022/locale/lib/locale/options/locale-presets.mjs +199 -0
  119. package/esm2022/locale/lib/locale/pipes/localized-bignumber-impure.pipe.mjs +1 -1
  120. package/esm2022/locale/lib/locale/pipes/localized-bignumber.pipe.mjs +10 -2
  121. package/esm2022/locale/lib/locale/provide-locale.mjs +42 -0
  122. package/esm2022/locale/public-api.mjs +3 -1
  123. package/esm2022/localized-number-input/lib/localized-number-input/localized-number-input.directive.mjs +5 -1
  124. package/esm2022/localized-number-input/lib/localized-number-input/localized-number-input.module.mjs +8 -1
  125. package/esm2022/mask/lib/mask/mask-formatter.module.mjs +8 -1
  126. package/esm2022/mouse-events/lib/mouse-events/mouse-events.module.mjs +8 -1
  127. package/esm2022/navigation-button/lib/navigation-button/navigation-button.module.mjs +8 -1
  128. package/esm2022/number-input/lib/number-input/number-input.directive.mjs +2 -2
  129. package/esm2022/number-input/lib/number-input/number-input.module.mjs +9 -2
  130. package/esm2022/numeric/lib/numeric.module.mjs +8 -1
  131. package/esm2022/numeric-mask/lib/numeric-mask/numeric-mask.directive.mjs +178 -15
  132. package/esm2022/numeric-mask/lib/numeric-mask/numeric-mask.module.mjs +8 -1
  133. package/esm2022/object-card/lib/object-card/object-card.module.mjs +12 -1
  134. package/esm2022/panel/lib/panel/panel.module.mjs +11 -1
  135. package/esm2022/password-strength/lib/password-strength/password-strength.module.mjs +8 -1
  136. package/esm2022/picklist/lib/picklist/picklist.module.mjs +8 -1
  137. package/esm2022/pin-code-field/lib/pin-code-field.module.mjs +8 -1
  138. package/esm2022/profile-picture-picker/lib/profile-picture-picker/profile-picture-picker.module.mjs +8 -1
  139. package/esm2022/progressbar/lib/progressbar/progressbar.module.mjs +8 -1
  140. package/esm2022/rating-scale/lib/rating-scale/rating-scale.module.mjs +8 -1
  141. package/esm2022/select/lib/select/select.component.mjs +16 -3
  142. package/esm2022/select-button/lib/select-button/select-button.module.mjs +8 -1
  143. package/esm2022/shared/lib/shared/border-button/border-button.module.mjs +8 -1
  144. package/esm2022/slide-in-bar/lib/slide-in-bar/slide-in-bar.module.mjs +8 -1
  145. package/esm2022/slide-in-bar/lib/slide-in-bar/slide-in-bar.service.mjs +4 -3
  146. package/esm2022/slider/lib/slider/slider.module.mjs +8 -1
  147. package/esm2022/speech-recognition/lib/speech-recognition/speech-recognition.module.mjs +8 -1
  148. package/esm2022/split-button/lib/split-button/split-button.module.mjs +8 -1
  149. package/esm2022/stats-card/lib/stats-card/stats-card.module.mjs +8 -1
  150. package/esm2022/stepper/lib/stepper/stepper.module.mjs +8 -1
  151. package/esm2022/structure/lib/structure/structure.module.mjs +8 -1
  152. package/esm2022/switch/lib/switch/switch.module.mjs +8 -1
  153. package/esm2022/table/lib/table/table.module.mjs +9 -1
  154. package/esm2022/table-header/lib/table-header/table-header-checkox.module.mjs +8 -1
  155. package/esm2022/template/lib/template/template.module.mjs +8 -1
  156. package/esm2022/text-area/lib/text-area.module.mjs +8 -1
  157. package/esm2022/thumbnail/lib/thumbnail/thumbnail.module.mjs +8 -1
  158. package/esm2022/thumbnails/lib/thumbnails/thumbnails.module.mjs +8 -1
  159. package/esm2022/tiered-menu/lib/tiered-menu/tiered-menu.module.mjs +8 -1
  160. package/esm2022/tile/lib/tile/tile.module.mjs +11 -1
  161. package/esm2022/timeline/lib/timeline/timeline.module.mjs +8 -1
  162. package/esm2022/toast/lib/toast/toast.module.mjs +8 -1
  163. package/esm2022/token-list/lib/token-list/token-list.module.mjs +8 -1
  164. package/esm2022/tooltip/lib/tooltip/tooltip.module.mjs +8 -1
  165. package/esm2022/topbar/lib/topbar/topbar.module.mjs +11 -1
  166. package/esm2022/tree/lib/tree/tree.module.mjs +8 -1
  167. package/esm2022/workspace-switch/lib/workspace-switch/workspace-switch.module.mjs +8 -1
  168. package/fesm2022/seniorsistemas-angular-components-accordion.mjs +7 -0
  169. package/fesm2022/seniorsistemas-angular-components-accordion.mjs.map +1 -1
  170. package/fesm2022/seniorsistemas-angular-components-alert.mjs +7 -0
  171. package/fesm2022/seniorsistemas-angular-components-alert.mjs.map +1 -1
  172. package/fesm2022/seniorsistemas-angular-components-badge.mjs +10 -0
  173. package/fesm2022/seniorsistemas-angular-components-badge.mjs.map +1 -1
  174. package/fesm2022/seniorsistemas-angular-components-bignumber-input.mjs +25 -126
  175. package/fesm2022/seniorsistemas-angular-components-bignumber-input.mjs.map +1 -1
  176. package/fesm2022/seniorsistemas-angular-components-breadcrumb.mjs +5 -1
  177. package/fesm2022/seniorsistemas-angular-components-breadcrumb.mjs.map +1 -1
  178. package/fesm2022/seniorsistemas-angular-components-button.mjs +7 -0
  179. package/fesm2022/seniorsistemas-angular-components-button.mjs.map +1 -1
  180. package/fesm2022/seniorsistemas-angular-components-calendar-mask.mjs +7 -0
  181. package/fesm2022/seniorsistemas-angular-components-calendar-mask.mjs.map +1 -1
  182. package/fesm2022/seniorsistemas-angular-components-card.mjs +7 -0
  183. package/fesm2022/seniorsistemas-angular-components-card.mjs.map +1 -1
  184. package/fesm2022/seniorsistemas-angular-components-chat.mjs +7 -0
  185. package/fesm2022/seniorsistemas-angular-components-chat.mjs.map +1 -1
  186. package/fesm2022/seniorsistemas-angular-components-checkbox-list.mjs +7 -0
  187. package/fesm2022/seniorsistemas-angular-components-checkbox-list.mjs.map +1 -1
  188. package/fesm2022/seniorsistemas-angular-components-chips.mjs +7 -0
  189. package/fesm2022/seniorsistemas-angular-components-chips.mjs.map +1 -1
  190. package/fesm2022/seniorsistemas-angular-components-code-editor.mjs +164 -160
  191. package/fesm2022/seniorsistemas-angular-components-code-editor.mjs.map +1 -1
  192. package/fesm2022/seniorsistemas-angular-components-collapse-link.mjs +7 -0
  193. package/fesm2022/seniorsistemas-angular-components-collapse-link.mjs.map +1 -1
  194. package/fesm2022/seniorsistemas-angular-components-common.mjs +38 -2
  195. package/fesm2022/seniorsistemas-angular-components-common.mjs.map +1 -1
  196. package/fesm2022/seniorsistemas-angular-components-content-generator.mjs +7 -0
  197. package/fesm2022/seniorsistemas-angular-components-content-generator.mjs.map +1 -1
  198. package/fesm2022/seniorsistemas-angular-components-control-errors.mjs +7 -0
  199. package/fesm2022/seniorsistemas-angular-components-control-errors.mjs.map +1 -1
  200. package/fesm2022/seniorsistemas-angular-components-country-phone-picker.mjs +10 -2
  201. package/fesm2022/seniorsistemas-angular-components-country-phone-picker.mjs.map +1 -1
  202. package/fesm2022/seniorsistemas-angular-components-custom-fields.mjs +75 -15
  203. package/fesm2022/seniorsistemas-angular-components-custom-fields.mjs.map +1 -1
  204. package/fesm2022/seniorsistemas-angular-components-drawer.mjs +10 -0
  205. package/fesm2022/seniorsistemas-angular-components-drawer.mjs.map +1 -1
  206. package/fesm2022/seniorsistemas-angular-components-dynamic-form.mjs +52 -208
  207. package/fesm2022/seniorsistemas-angular-components-dynamic-form.mjs.map +1 -1
  208. package/fesm2022/seniorsistemas-angular-components-editable-overlay.mjs +7 -0
  209. package/fesm2022/seniorsistemas-angular-components-editable-overlay.mjs.map +1 -1
  210. package/fesm2022/seniorsistemas-angular-components-empty-state.mjs +7 -0
  211. package/fesm2022/seniorsistemas-angular-components-empty-state.mjs.map +1 -1
  212. package/fesm2022/seniorsistemas-angular-components-fieldset.mjs +7 -0
  213. package/fesm2022/seniorsistemas-angular-components-fieldset.mjs.map +1 -1
  214. package/fesm2022/seniorsistemas-angular-components-file-picker.mjs +10 -2
  215. package/fesm2022/seniorsistemas-angular-components-file-picker.mjs.map +1 -1
  216. package/fesm2022/seniorsistemas-angular-components-gantt.mjs +7 -0
  217. package/fesm2022/seniorsistemas-angular-components-gantt.mjs.map +1 -1
  218. package/fesm2022/seniorsistemas-angular-components-global-search.mjs +18 -0
  219. package/fesm2022/seniorsistemas-angular-components-global-search.mjs.map +1 -1
  220. package/fesm2022/seniorsistemas-angular-components-grid-menu.mjs +7 -0
  221. package/fesm2022/seniorsistemas-angular-components-grid-menu.mjs.map +1 -1
  222. package/fesm2022/seniorsistemas-angular-components-help-popover.mjs +7 -0
  223. package/fesm2022/seniorsistemas-angular-components-help-popover.mjs.map +1 -1
  224. package/fesm2022/seniorsistemas-angular-components-image-cropper.mjs +14 -2
  225. package/fesm2022/seniorsistemas-angular-components-image-cropper.mjs.map +1 -1
  226. package/fesm2022/seniorsistemas-angular-components-infinite-scroll.mjs +7 -0
  227. package/fesm2022/seniorsistemas-angular-components-infinite-scroll.mjs.map +1 -1
  228. package/fesm2022/seniorsistemas-angular-components-info-sign.mjs +7 -0
  229. package/fesm2022/seniorsistemas-angular-components-info-sign.mjs.map +1 -1
  230. package/fesm2022/seniorsistemas-angular-components-inline-edit.mjs +11 -4
  231. package/fesm2022/seniorsistemas-angular-components-inline-edit.mjs.map +1 -1
  232. package/fesm2022/seniorsistemas-angular-components-input-group.mjs +7 -0
  233. package/fesm2022/seniorsistemas-angular-components-input-group.mjs.map +1 -1
  234. package/fesm2022/seniorsistemas-angular-components-input-mask.mjs +7 -0
  235. package/fesm2022/seniorsistemas-angular-components-input-mask.mjs.map +1 -1
  236. package/fesm2022/seniorsistemas-angular-components-input-text.mjs +7 -0
  237. package/fesm2022/seniorsistemas-angular-components-input-text.mjs.map +1 -1
  238. package/fesm2022/seniorsistemas-angular-components-insights.mjs +10 -0
  239. package/fesm2022/seniorsistemas-angular-components-insights.mjs.map +1 -1
  240. package/fesm2022/seniorsistemas-angular-components-kanban.mjs +13 -2
  241. package/fesm2022/seniorsistemas-angular-components-kanban.mjs.map +1 -1
  242. package/fesm2022/seniorsistemas-angular-components-label-value.mjs +7 -0
  243. package/fesm2022/seniorsistemas-angular-components-label-value.mjs.map +1 -1
  244. package/fesm2022/seniorsistemas-angular-components-loading-state.mjs +7 -0
  245. package/fesm2022/seniorsistemas-angular-components-loading-state.mjs.map +1 -1
  246. package/fesm2022/seniorsistemas-angular-components-locale.mjs +260 -33
  247. package/fesm2022/seniorsistemas-angular-components-locale.mjs.map +1 -1
  248. package/fesm2022/seniorsistemas-angular-components-localized-number-input.mjs +11 -0
  249. package/fesm2022/seniorsistemas-angular-components-localized-number-input.mjs.map +1 -1
  250. package/fesm2022/seniorsistemas-angular-components-mask.mjs +7 -0
  251. package/fesm2022/seniorsistemas-angular-components-mask.mjs.map +1 -1
  252. package/fesm2022/seniorsistemas-angular-components-mouse-events.mjs +7 -0
  253. package/fesm2022/seniorsistemas-angular-components-mouse-events.mjs.map +1 -1
  254. package/fesm2022/seniorsistemas-angular-components-navigation-button.mjs +7 -0
  255. package/fesm2022/seniorsistemas-angular-components-navigation-button.mjs.map +1 -1
  256. package/fesm2022/seniorsistemas-angular-components-number-input.mjs +9 -2
  257. package/fesm2022/seniorsistemas-angular-components-number-input.mjs.map +1 -1
  258. package/fesm2022/seniorsistemas-angular-components-numeric-mask.mjs +184 -14
  259. package/fesm2022/seniorsistemas-angular-components-numeric-mask.mjs.map +1 -1
  260. package/fesm2022/seniorsistemas-angular-components-numeric.mjs +7 -0
  261. package/fesm2022/seniorsistemas-angular-components-numeric.mjs.map +1 -1
  262. package/fesm2022/seniorsistemas-angular-components-object-card.mjs +11 -0
  263. package/fesm2022/seniorsistemas-angular-components-object-card.mjs.map +1 -1
  264. package/fesm2022/seniorsistemas-angular-components-panel.mjs +10 -0
  265. package/fesm2022/seniorsistemas-angular-components-panel.mjs.map +1 -1
  266. package/fesm2022/seniorsistemas-angular-components-password-strength.mjs +7 -0
  267. package/fesm2022/seniorsistemas-angular-components-password-strength.mjs.map +1 -1
  268. package/fesm2022/seniorsistemas-angular-components-picklist.mjs +7 -0
  269. package/fesm2022/seniorsistemas-angular-components-picklist.mjs.map +1 -1
  270. package/fesm2022/seniorsistemas-angular-components-pin-code-field.mjs +7 -0
  271. package/fesm2022/seniorsistemas-angular-components-pin-code-field.mjs.map +1 -1
  272. package/fesm2022/seniorsistemas-angular-components-profile-picture-picker.mjs +7 -0
  273. package/fesm2022/seniorsistemas-angular-components-profile-picture-picker.mjs.map +1 -1
  274. package/fesm2022/seniorsistemas-angular-components-progressbar.mjs +7 -0
  275. package/fesm2022/seniorsistemas-angular-components-progressbar.mjs.map +1 -1
  276. package/fesm2022/seniorsistemas-angular-components-rating-scale.mjs +7 -0
  277. package/fesm2022/seniorsistemas-angular-components-rating-scale.mjs.map +1 -1
  278. package/fesm2022/seniorsistemas-angular-components-select-button.mjs +7 -0
  279. package/fesm2022/seniorsistemas-angular-components-select-button.mjs.map +1 -1
  280. package/fesm2022/seniorsistemas-angular-components-select.mjs +15 -2
  281. package/fesm2022/seniorsistemas-angular-components-select.mjs.map +1 -1
  282. package/fesm2022/seniorsistemas-angular-components-shared.mjs +7 -0
  283. package/fesm2022/seniorsistemas-angular-components-shared.mjs.map +1 -1
  284. package/fesm2022/seniorsistemas-angular-components-slide-in-bar.mjs +10 -2
  285. package/fesm2022/seniorsistemas-angular-components-slide-in-bar.mjs.map +1 -1
  286. package/fesm2022/seniorsistemas-angular-components-slider.mjs +7 -0
  287. package/fesm2022/seniorsistemas-angular-components-slider.mjs.map +1 -1
  288. package/fesm2022/seniorsistemas-angular-components-speech-recognition.mjs +7 -0
  289. package/fesm2022/seniorsistemas-angular-components-speech-recognition.mjs.map +1 -1
  290. package/fesm2022/seniorsistemas-angular-components-split-button.mjs +7 -0
  291. package/fesm2022/seniorsistemas-angular-components-split-button.mjs.map +1 -1
  292. package/fesm2022/seniorsistemas-angular-components-stats-card.mjs +7 -0
  293. package/fesm2022/seniorsistemas-angular-components-stats-card.mjs.map +1 -1
  294. package/fesm2022/seniorsistemas-angular-components-stepper.mjs +7 -0
  295. package/fesm2022/seniorsistemas-angular-components-stepper.mjs.map +1 -1
  296. package/fesm2022/seniorsistemas-angular-components-structure.mjs +7 -0
  297. package/fesm2022/seniorsistemas-angular-components-structure.mjs.map +1 -1
  298. package/fesm2022/seniorsistemas-angular-components-switch.mjs +7 -0
  299. package/fesm2022/seniorsistemas-angular-components-switch.mjs.map +1 -1
  300. package/fesm2022/seniorsistemas-angular-components-table-header.mjs +7 -0
  301. package/fesm2022/seniorsistemas-angular-components-table-header.mjs.map +1 -1
  302. package/fesm2022/seniorsistemas-angular-components-table.mjs +8 -0
  303. package/fesm2022/seniorsistemas-angular-components-table.mjs.map +1 -1
  304. package/fesm2022/seniorsistemas-angular-components-template.mjs +7 -0
  305. package/fesm2022/seniorsistemas-angular-components-template.mjs.map +1 -1
  306. package/fesm2022/seniorsistemas-angular-components-text-area.mjs +7 -0
  307. package/fesm2022/seniorsistemas-angular-components-text-area.mjs.map +1 -1
  308. package/fesm2022/seniorsistemas-angular-components-thumbnail.mjs +7 -0
  309. package/fesm2022/seniorsistemas-angular-components-thumbnail.mjs.map +1 -1
  310. package/fesm2022/seniorsistemas-angular-components-thumbnails.mjs +7 -0
  311. package/fesm2022/seniorsistemas-angular-components-thumbnails.mjs.map +1 -1
  312. package/fesm2022/seniorsistemas-angular-components-tiered-menu.mjs +7 -0
  313. package/fesm2022/seniorsistemas-angular-components-tiered-menu.mjs.map +1 -1
  314. package/fesm2022/seniorsistemas-angular-components-tile.mjs +10 -0
  315. package/fesm2022/seniorsistemas-angular-components-tile.mjs.map +1 -1
  316. package/fesm2022/seniorsistemas-angular-components-timeline.mjs +7 -0
  317. package/fesm2022/seniorsistemas-angular-components-timeline.mjs.map +1 -1
  318. package/fesm2022/seniorsistemas-angular-components-toast.mjs +7 -0
  319. package/fesm2022/seniorsistemas-angular-components-toast.mjs.map +1 -1
  320. package/fesm2022/seniorsistemas-angular-components-token-list.mjs +7 -0
  321. package/fesm2022/seniorsistemas-angular-components-token-list.mjs.map +1 -1
  322. package/fesm2022/seniorsistemas-angular-components-tooltip.mjs +7 -0
  323. package/fesm2022/seniorsistemas-angular-components-tooltip.mjs.map +1 -1
  324. package/fesm2022/seniorsistemas-angular-components-topbar.mjs +10 -0
  325. package/fesm2022/seniorsistemas-angular-components-topbar.mjs.map +1 -1
  326. package/fesm2022/seniorsistemas-angular-components-tree.mjs +7 -0
  327. package/fesm2022/seniorsistemas-angular-components-tree.mjs.map +1 -1
  328. package/fesm2022/seniorsistemas-angular-components-workspace-switch.mjs +7 -0
  329. package/fesm2022/seniorsistemas-angular-components-workspace-switch.mjs.map +1 -1
  330. package/fieldset/README.md +2 -2
  331. package/fieldset/lib/fieldset/fieldset.module.d.ts +7 -0
  332. package/file-picker/README.md +2 -2
  333. package/file-picker/lib/file-picker/file-picker.module.d.ts +7 -0
  334. package/file-upload/README.md +1 -1
  335. package/gantt/README.md +2 -2
  336. package/gantt/lib/gantt/gantt.module.d.ts +7 -0
  337. package/global-search/README.md +5 -2
  338. package/global-search/lib/global-search/global-search.module.d.ts +18 -0
  339. package/grid-menu/README.md +5 -4
  340. package/grid-menu/lib/grid-menu/grid-menu.module.d.ts +7 -0
  341. package/help-popover/README.md +5 -4
  342. package/help-popover/lib/help-popover/help-popover.module.d.ts +7 -0
  343. package/ia-insight/README.md +1 -1
  344. package/image-cropper/README.md +6 -5
  345. package/image-cropper/lib/image-cropper/image-cropper.module.d.ts +11 -0
  346. package/infinite-scroll/README.md +5 -4
  347. package/infinite-scroll/lib/infinite-scroll/infinite-scroll.module.d.ts +7 -0
  348. package/info-sign/README.md +5 -4
  349. package/info-sign/lib/info-sign/info-sign.module.d.ts +7 -0
  350. package/inline-edit/README.md +5 -4
  351. package/inline-edit/lib/inline-edit/inline-edit.module.d.ts +7 -0
  352. package/input-group/lib/input-group/input-group.module.d.ts +7 -0
  353. package/input-mask/lib/input-mask/input-mask.module.d.ts +7 -0
  354. package/input-text/lib/input-text/input-text.module.d.ts +7 -0
  355. package/insights/README.md +6 -4
  356. package/insights/lib/insights/insights.module.d.ts +10 -0
  357. package/kanban/README.md +6 -4
  358. package/kanban/lib/kanban/kanban.module.d.ts +10 -0
  359. package/label-value/README.md +5 -4
  360. package/label-value/lib/label-value/label-value.module.d.ts +7 -0
  361. package/loading-state/README.md +9 -5
  362. package/loading-state/lib/loading-state/loading-state.module.d.ts +7 -0
  363. package/locale/lib/locale/locale.module.d.ts +13 -0
  364. package/locale/lib/locale/locale.service.d.ts +0 -3
  365. package/locale/lib/locale/options/locale-presets.d.ts +22 -0
  366. package/locale/lib/locale/pipes/localized-bignumber-impure.pipe.d.ts +2 -2
  367. package/locale/lib/locale/pipes/localized-bignumber.pipe.d.ts +20 -1
  368. package/locale/lib/locale/provide-locale.d.ts +18 -0
  369. package/locale/public-api.d.ts +2 -0
  370. package/localized-number-input/README.md +32 -8
  371. package/localized-number-input/lib/localized-number-input/localized-number-input.directive.d.ts +4 -0
  372. package/localized-number-input/lib/localized-number-input/localized-number-input.module.d.ts +7 -0
  373. package/mask/lib/mask/mask-formatter.module.d.ts +7 -0
  374. package/mouse-events/README.md +5 -4
  375. package/mouse-events/lib/mouse-events/mouse-events.module.d.ts +7 -0
  376. package/navigation-button/README.md +5 -4
  377. package/navigation-button/lib/navigation-button/navigation-button.module.d.ts +7 -0
  378. package/number-input/lib/number-input/number-input.directive.d.ts +1 -1
  379. package/number-input/lib/number-input/number-input.module.d.ts +8 -1
  380. package/numeric/README.md +6 -5
  381. package/numeric/lib/numeric.module.d.ts +7 -0
  382. package/numeric-mask/README.md +44 -1
  383. package/numeric-mask/lib/numeric-mask/numeric-mask.directive.d.ts +65 -4
  384. package/numeric-mask/lib/numeric-mask/numeric-mask.module.d.ts +7 -0
  385. package/object-card/README.md +11 -4
  386. package/object-card/lib/object-card/object-card.module.d.ts +11 -0
  387. package/package.json +1 -1
  388. package/panel/README.md +8 -4
  389. package/panel/lib/panel/panel.module.d.ts +10 -0
  390. package/password-strength/README.md +6 -3
  391. package/password-strength/lib/password-strength/password-strength.module.d.ts +7 -0
  392. package/picklist/README.md +8 -5
  393. package/picklist/lib/picklist/picklist.module.d.ts +7 -0
  394. package/pin-code-field/lib/pin-code-field.module.d.ts +7 -0
  395. package/product-header/README.md +2 -2
  396. package/profile-picture-picker/README.md +6 -3
  397. package/profile-picture-picker/lib/profile-picture-picker/profile-picture-picker.module.d.ts +7 -0
  398. package/progressbar/README.md +6 -3
  399. package/progressbar/lib/progressbar/progressbar.module.d.ts +7 -0
  400. package/rating-scale/README.md +6 -3
  401. package/rating-scale/lib/rating-scale/rating-scale.module.d.ts +7 -0
  402. package/schematics/collection.json +40 -0
  403. package/schematics/migrations/migrate-app-to-standalone/index.d.ts +32 -0
  404. package/schematics/migrations/migrate-app-to-standalone/index.js +98 -0
  405. package/schematics/migrations/migrate-app-to-standalone/index.js.map +1 -0
  406. package/schematics/migrations/migrate-deprecated-apis/index.d.ts +49 -0
  407. package/schematics/migrations/migrate-deprecated-apis/index.js +660 -0
  408. package/schematics/migrations/migrate-deprecated-apis/index.js.map +1 -0
  409. package/schematics/migrations/migrate-deprecated-datepicker/index.d.ts +31 -0
  410. package/schematics/migrations/migrate-deprecated-datepicker/index.js +115 -0
  411. package/schematics/migrations/migrate-deprecated-datepicker/index.js.map +1 -0
  412. package/schematics/migrations/migrate-deprecated-dynamic-form/index.d.ts +52 -0
  413. package/schematics/migrations/migrate-deprecated-dynamic-form/index.js +661 -0
  414. package/schematics/migrations/migrate-deprecated-dynamic-form/index.js.map +1 -0
  415. package/schematics/migrations/migrate-deprecated-imports/index.d.ts +23 -0
  416. package/schematics/migrations/migrate-deprecated-imports/index.js +335 -0
  417. package/schematics/migrations/migrate-deprecated-imports/index.js.map +1 -0
  418. package/schematics/migrations/migrate-deprecated-selectors/index.d.ts +15 -0
  419. package/schematics/migrations/migrate-deprecated-selectors/index.js +76 -0
  420. package/schematics/migrations/migrate-deprecated-selectors/index.js.map +1 -0
  421. package/schematics/migrations/migrate-modules-to-standalone/index.d.ts +51 -0
  422. package/schematics/migrations/migrate-modules-to-standalone/index.js +632 -0
  423. package/schematics/migrations/migrate-modules-to-standalone/index.js.map +1 -0
  424. package/schematics/migrations/migrate-modules-to-standalone/modules-map.json +1656 -0
  425. package/schematics/migrations/migrate-v20/index.d.ts +9 -0
  426. package/schematics/migrations/migrate-v20/index.js +90 -0
  427. package/schematics/migrations/migrate-v20/index.js.map +1 -0
  428. package/schematics/migrations/migrate-v20/items.d.ts +7 -0
  429. package/schematics/migrations/migrate-v20/items.js +54 -0
  430. package/schematics/migrations/migrate-v20/items.js.map +1 -0
  431. package/schematics/migrations/migrate-v20/plan.d.ts +32 -0
  432. package/schematics/migrations/migrate-v20/plan.js +29 -0
  433. package/schematics/migrations/migrate-v20/plan.js.map +1 -0
  434. package/schematics/migrations.json +5 -1
  435. package/schematics/schema/app-standalone.schema.json +21 -0
  436. package/schematics/schema/migrate-v20.schema.json +33 -0
  437. package/schematics/schema/scope.schema.json +17 -0
  438. package/schematics/utils/ast-utils.js +16 -0
  439. package/schematics/utils/ast-utils.js.map +1 -1
  440. package/schematics/utils/eol.d.ts +5 -0
  441. package/schematics/utils/eol.js +17 -0
  442. package/schematics/utils/eol.js.map +1 -0
  443. package/schematics/utils/prompt-utils.d.ts +62 -0
  444. package/schematics/utils/prompt-utils.js +166 -0
  445. package/schematics/utils/prompt-utils.js.map +1 -0
  446. package/schematics/utils/report.d.ts +27 -0
  447. package/schematics/utils/report.js +70 -0
  448. package/schematics/utils/report.js.map +1 -0
  449. package/schematics/utils/scope.d.ts +17 -0
  450. package/schematics/utils/scope.js +55 -0
  451. package/schematics/utils/scope.js.map +1 -0
  452. package/schematics/utils/selection.d.ts +21 -0
  453. package/schematics/utils/selection.js +60 -0
  454. package/schematics/utils/selection.js.map +1 -0
  455. package/schematics/utils/symbol-utils.d.ts +31 -0
  456. package/schematics/utils/symbol-utils.js +202 -0
  457. package/schematics/utils/symbol-utils.js.map +1 -0
  458. package/schematics/utils/template-utils.d.ts +62 -0
  459. package/schematics/utils/template-utils.js +165 -0
  460. package/schematics/utils/template-utils.js.map +1 -0
  461. package/schematics/utils/tsconfig-paths.d.ts +5 -0
  462. package/schematics/utils/tsconfig-paths.js +73 -0
  463. package/schematics/utils/tsconfig-paths.js.map +1 -0
  464. package/select/lib/select/select.component.d.ts +8 -0
  465. package/select-button/README.md +6 -3
  466. package/select-button/lib/select-button/select-button.module.d.ts +7 -0
  467. package/shared/lib/shared/border-button/border-button.module.d.ts +7 -0
  468. package/sidebar/README.md +2 -2
  469. package/slide-in-bar/README.md +5 -5
  470. package/slide-in-bar/lib/slide-in-bar/slide-in-bar.module.d.ts +7 -0
  471. package/slider/README.md +6 -3
  472. package/slider/lib/slider/slider.module.d.ts +7 -0
  473. package/speech-recognition/README.md +6 -3
  474. package/speech-recognition/lib/speech-recognition/speech-recognition.module.d.ts +7 -0
  475. package/split-button/README.md +6 -3
  476. package/split-button/lib/split-button/split-button.module.d.ts +7 -0
  477. package/stats-card/README.md +6 -3
  478. package/stats-card/lib/stats-card/stats-card.module.d.ts +7 -0
  479. package/stepper/README.md +6 -3
  480. package/stepper/lib/stepper/stepper.module.d.ts +7 -0
  481. package/structure/lib/structure/structure.module.d.ts +7 -0
  482. package/switch/README.md +6 -3
  483. package/switch/lib/switch/switch.module.d.ts +7 -0
  484. package/table/README.md +12 -4
  485. package/table/lib/table/table.module.d.ts +8 -0
  486. package/table-header/lib/table-header/table-header-checkox.module.d.ts +7 -0
  487. package/template/README.md +0 -11
  488. package/template/lib/template/template.module.d.ts +7 -0
  489. package/text-area/lib/text-area.module.d.ts +7 -0
  490. package/text-area-ia/README.md +1 -1
  491. package/thumbnail/lib/thumbnail/thumbnail.module.d.ts +7 -0
  492. package/thumbnails/lib/thumbnails/thumbnails.module.d.ts +7 -0
  493. package/tiered-menu/lib/tiered-menu/tiered-menu.module.d.ts +7 -0
  494. package/tile/lib/tile/tile.module.d.ts +10 -0
  495. package/timeline/lib/timeline/timeline.module.d.ts +7 -0
  496. package/toast/lib/toast/toast.module.d.ts +7 -0
  497. package/token-list/lib/token-list/token-list.module.d.ts +7 -0
  498. package/tooltip/lib/tooltip/tooltip.module.d.ts +7 -0
  499. package/topbar/lib/topbar/topbar.module.d.ts +10 -0
  500. package/tree/lib/tree/tree.module.d.ts +7 -0
  501. package/workspace-switch/lib/workspace-switch/workspace-switch.module.d.ts +7 -0
  502. package/dynamic-form/dynamic-form/form-field/fields/currency/currency-field.component.d.ts +0 -664
  503. package/dynamic-form/dynamic-form/form-field/fields/number/number-field.component.d.ts +0 -29
  504. package/esm2022/dynamic-form/dynamic-form/form-field/fields/currency/currency-field.component.mjs +0 -96
  505. package/esm2022/dynamic-form/dynamic-form/form-field/fields/number/number-field.component.mjs +0 -124
@@ -1 +1 @@
1
- {"version":3,"file":"seniorsistemas-angular-components-tree.mjs","sources":["../../projects/angular-components/tree/src/lib/tree/components/tree-node-item/tree-node-item.component.ts","../../projects/angular-components/tree/src/lib/tree/components/tree-node-item/tree-node-item.component.html","../../projects/angular-components/tree/src/lib/tree/tree.component.ts","../../projects/angular-components/tree/src/lib/tree/tree.component.html","../../projects/angular-components/tree/src/lib/tree/tree.module.ts","../../projects/angular-components/tree/src/seniorsistemas-angular-components-tree.ts"],"sourcesContent":["import { animate, query, stagger, style, transition, trigger } from '@angular/animations';\r\nimport {\r\n ChangeDetectorRef,\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n Input,\r\n Output,\r\n ViewChild,\r\n input,\r\n inject,\r\n} from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { InternalTreeNodeItem, TreeNodeEdit } from '../../Models/tree.models';\r\nimport { InputTextDirective } from '@seniorsistemas/angular-components/input-text';\r\n\r\n@Component({\r\n selector: 's-tree-node-item',\r\n templateUrl: './tree-node-item.component.html',\r\n styleUrls: ['./tree-node-item.component.scss'],\r\n animations: [\r\n trigger('fadeExpand', [\r\n transition(':enter', [\r\n style({ height: '0px', opacity: 0, overflow: 'hidden' }),\r\n animate('200ms ease-out', style({ height: '*', opacity: 1 })),\r\n ]),\r\n transition(':leave', [animate('150ms ease-in', style({ height: '0px', opacity: 0 }))]),\r\n ]),\r\n trigger('childrenAnimation', [\r\n transition(':enter', [\r\n query(\r\n ':enter',\r\n [\r\n style({ opacity: 0, transform: 'translateY(-10px)' }),\r\n stagger(60, [animate('200ms ease-out', style({ opacity: 1, transform: 'translateY(0)' }))]),\r\n ],\r\n { optional: true },\r\n ),\r\n ]),\r\n ]),\r\n ],\r\n standalone: true,\r\n imports: [FormsModule, InputTextDirective],\r\n})\r\nexport class TreeNodeItemComponent {\r\n private readonly cdr = inject(ChangeDetectorRef);\r\n private readonly translateService = inject(TranslateService);\r\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\r\n\r\n readonly ariaLevel = input(0);\r\n readonly showCheckbox = input(false);\r\n @Input() treeNodeItem!: InternalTreeNodeItem;\r\n @Output() treeNodeItemClicked = new EventEmitter<{ item: InternalTreeNodeItem; event: Event }>();\r\n @Output() treeNodeEdit = new EventEmitter<TreeNodeEdit>();\r\n @Output() nodeExpanded = new EventEmitter<InternalTreeNodeItem>();\r\n @Output() nodeCollapsed = new EventEmitter<InternalTreeNodeItem>();\r\n\r\n @ViewChild('input', { read: ElementRef }) input!: ElementRef<HTMLInputElement>;\r\n\r\n get hasChildren(): boolean {\r\n return !!(this.treeNodeItem?.children && this.treeNodeItem.children.length > 0);\r\n }\r\n\r\n get editable() {\r\n return this.treeNodeItem?.editable || false;\r\n }\r\n\r\n get ariaLabel() {\r\n return `${this.translateService.instant('platform.angular_components.select')} ${this.treeNodeItem.label}`;\r\n }\r\n\r\n expandNode() {\r\n if (this.hasChildren && !this.treeNodeItem.isExpanded) {\r\n this.toggleExpanded(this.treeNodeItem);\r\n }\r\n }\r\n\r\n collapseNode() {\r\n if (this.hasChildren && this.treeNodeItem.isExpanded) {\r\n this.toggleExpanded(this.treeNodeItem);\r\n }\r\n }\r\n\r\n focusNextNode(event: Event) {\r\n this.moveFocus(event, 1);\r\n }\r\n\r\n focusPreviousNode(event: Event) {\r\n this.moveFocus(event, -1);\r\n }\r\n\r\n private moveFocus(event: Event, offset: number) {\r\n const root = this.elementRef.nativeElement.closest<HTMLElement>('.tree') || document;\r\n const items = Array.from(root.querySelectorAll<HTMLElement>('.tree-node-item'));\r\n const currentIndex = items.indexOf(document.activeElement as HTMLElement);\r\n if (currentIndex === -1) {\r\n return;\r\n }\r\n\r\n event.preventDefault();\r\n items[currentIndex + offset]?.focus();\r\n }\r\n\r\n onCheckboxEnter(node: InternalTreeNodeItem) {\r\n const newState = node.checked === true ? false : true;\r\n node.checked = newState;\r\n this.treeNodeItemClicked.emit({ item: node, event: new KeyboardEvent('keydown', { key: 'Enter' }) });\r\n }\r\n\r\n handleTreeNodeItemClick(event: Event, treeNodeItem?: InternalTreeNodeItem) {\r\n const item = treeNodeItem || this.treeNodeItem;\r\n this.treeNodeItemClicked.emit({ item, event });\r\n }\r\n\r\n handleTreeNodeItemClicked({ event, item }: { event: Event; item: InternalTreeNodeItem }) {\r\n if (item.isEditing) {\r\n return;\r\n }\r\n this.handleTreeNodeItemClick(event, item);\r\n }\r\n\r\n toggleExpanded(treeNodeItem: InternalTreeNodeItem) {\r\n treeNodeItem.isExpanded = !treeNodeItem.isExpanded;\r\n if (treeNodeItem.isExpanded) {\r\n this.nodeExpanded.emit(treeNodeItem);\r\n } else {\r\n this.nodeCollapsed.emit(treeNodeItem);\r\n }\r\n }\r\n\r\n toggleEditing($event: Event) {\r\n $event.stopPropagation();\r\n this.treeNodeItem.isEditing = !this.treeNodeItem.isEditing;\r\n this.cdr.detectChanges();\r\n if (this.treeNodeItem.isEditing) {\r\n this.treeNodeItem.editNewValue = this.treeNodeItem.label;\r\n const input = this.input?.nativeElement;\r\n input?.focus();\r\n }\r\n }\r\n\r\n cancelEdit($event: Event) {\r\n $event.stopPropagation();\r\n this.treeNodeItem.isEditing = false;\r\n this.treeNodeItem.editNewValue = '';\r\n this.treeNodeItem.editPreviousValue = '';\r\n this.cdr.detectChanges();\r\n }\r\n\r\n saveEdit($event: Event) {\r\n $event.stopPropagation();\r\n this.treeNodeItem.isEditing = false;\r\n if (!this.treeNodeItem.editNewValue) {\r\n return;\r\n }\r\n\r\n this.treeNodeItem.editPreviousValue = this.treeNodeItem.label;\r\n this.treeNodeItem.label = this.treeNodeItem.editNewValue;\r\n\r\n const revertAction = () => {\r\n this.treeNodeItem.label = this.treeNodeItem.editPreviousValue as string;\r\n this.treeNodeItem.isEditing = false;\r\n this.cdr.detectChanges();\r\n };\r\n this.treeNodeEdit.emit({\r\n revertAction,\r\n item: this.treeNodeItem,\r\n newValue: this.treeNodeItem.editNewValue,\r\n previousValue: this.treeNodeItem.editPreviousValue,\r\n });\r\n }\r\n\r\n treeNodeEditChildEvent(payload: TreeNodeEdit) {\r\n this.treeNodeEdit.emit(payload);\r\n }\r\n}\r\n","@if (treeNodeItem) {\n <div\n class=\"tree-node-item\"\n role=\"treeitem\"\n [class.tree-node-item-selected]=\"treeNodeItem.checked\"\n [class.selectable]=\"hasChildren\"\n [attr.aria-expanded]=\"hasChildren ? treeNodeItem.isExpanded : null\"\n [attr.aria-selected]=\"treeNodeItem.checked === true\"\n [attr.aria-label]=\"treeNodeItem.label\"\n [attr.aria-level]=\"ariaLevel()\"\n tabindex=\"0\"\n (keydown.enter)=\"handleTreeNodeItemClick($event)\"\n (keydown.arrowRight)=\"expandNode()\"\n (keydown.arrowLeft)=\"collapseNode()\"\n (keydown.arrowDown)=\"focusNextNode($event)\"\n (keydown.arrowUp)=\"focusPreviousNode($event)\"\n >\n @if (hasChildren || treeNodeItem.leaf === true) {\n <div\n class=\"arrow\"\n (click)=\"toggleExpanded(treeNodeItem)\"\n >\n @if (!treeNodeItem.isExpanded) {\n <i [class]=\"treeNodeItem.collapsedIcon || 'fas fa-chevron-right'\"></i>\n }\n @if (treeNodeItem.isExpanded) {\n <i [class]=\"treeNodeItem.expandedIcon || 'fas fa-chevron-down'\"></i>\n }\n </div>\n }\n\n <div\n class=\"tree-node-item-text\"\n (click)=\"handleTreeNodeItemClick($event)\"\n >\n @if (treeNodeItem.icon || treeNodeItem.isEditing) {\n <span class=\"tree-node-item-text-icon\">\n @if (treeNodeItem.icon && !treeNodeItem.isEditing) {\n <i [class]=\"treeNodeItem.icon\"></i>\n }\n @if (treeNodeItem.isEditing) {\n <i\n class=\"fas fa-edit edit\"\n (click)=\"saveEdit($event)\"\n ></i>\n }\n </span>\n }\n\n @if (showCheckbox() && !treeNodeItem.isEditing) {\n <span class=\"tree-node-item-text-checkbox\">\n <input\n type=\"checkbox\"\n [checked]=\"treeNodeItem.checked === true\"\n [indeterminate]=\"treeNodeItem.checked === null\"\n [attr.aria-checked]=\"treeNodeItem.checked === null ? 'mixed' : treeNodeItem.checked\"\n [attr.aria-label]=\"ariaLabel\"\n role=\"checkbox\"\n tabindex=\"0\"\n (keydown.enter)=\"onCheckboxEnter(treeNodeItem)\"\n />\n </span>\n }\n\n <span class=\"tree-node-item-text-label\">\n @if (treeNodeItem.isEditing) {\n <input\n #input\n type=\"text\"\n sInputText\n class=\"tree-node-item-text-input\"\n [(ngModel)]=\"treeNodeItem.editNewValue\"\n (keydown.enter)=\"saveEdit($event)\"\n (keydown.escape)=\"cancelEdit($event)\"\n (click)=\"$event.stopPropagation()\"\n aria-label=\"Editar nome do item\"\n aria-live=\"polite\"\n />\n } @else if (!treeNodeItem.isEditing) {\n {{ treeNodeItem.label }}\n }\n </span>\n\n @if (editable) {\n <span class=\"tree-node-item-text-editable\">\n <i\n class=\"fas fa-pencil-alt\"\n (click)=\"toggleEditing($event)\"\n aria-label=\"Editar item\"\n tabindex=\"0\"\n ></i>\n </span>\n }\n </div>\n </div>\n}\n\n@if (hasChildren && treeNodeItem.isExpanded) {\n <div\n @fadeExpand\n class=\"child\"\n role=\"group\"\n @childrenAnimation\n >\n @for (child of treeNodeItem.children; track $index) {\n <s-tree-node-item\n [showCheckbox]=\"showCheckbox()\"\n [treeNodeItem]=\"child\"\n [ariaLevel]=\"ariaLevel() + 1\"\n (treeNodeItemClicked)=\"handleTreeNodeItemClicked($event)\"\n (treeNodeEdit)=\"treeNodeEditChildEvent($event)\"\n (nodeExpanded)=\"nodeExpanded.emit($event)\"\n (nodeCollapsed)=\"nodeCollapsed.emit($event)\"\n class=\"child-item\"\n />\n }\n </div>\n}\n\n","import { Component, EventEmitter, Input, OnChanges, Output, SimpleChanges } from '@angular/core';\r\n\r\nimport { InternalTreeNodeItem, TreeNodeEdit, TreeNodeItem } from './Models/tree.models';\r\nimport { LoadingStateDirective } from '@seniorsistemas/angular-components/loading-state';\r\nimport { TreeNodeItemComponent } from './components/tree-node-item/tree-node-item.component';\r\n\r\n/**\r\n * @description Componente de árvore hierárquica com suporte a seleção única ou múltipla,\r\n * checkboxes, noós expansíveis e edição inline de rótulos. Gerencia o estado interno\r\n * dos nós e emite eventos na seleção, expansão, colapso e edição.\r\n *\r\n * @example\r\n * ```html\r\n * <s-tree\r\n * [treeData]=\"nos\"\r\n * selectionMode=\"multiple\"\r\n * [showCheckbox]=\"true\"\r\n * (selectedChange)=\"onSelecaoMudou($event)\" />\r\n * ```\r\n *\r\n * @category Data\r\n */\r\n@Component({\r\n selector: 's-tree',\r\n templateUrl: './tree.component.html',\r\n styleUrls: ['./tree.component.scss'],\r\n standalone: true,\r\n imports: [LoadingStateDirective, TreeNodeItemComponent],\r\n})\r\nexport class TreeComponent implements OnChanges {\r\n /** @description Lista de nós raíz da árvore. @default [] */\r\n @Input()\r\n public treeData: TreeNodeItem[] = [];\r\n\r\n private _selected: TreeNodeItem[] = [];\r\n /** @description Nó(s) selecionado(s). Suporta array ou item único dependendo de `selectionMode`. @default [] */\r\n @Input()\r\n public get selected(): TreeNodeItem[] {\r\n return this._selected;\r\n }\r\n public set selected(value: TreeNodeItem[] | TreeNodeItem | undefined) {\r\n if (!value) {\r\n value = [];\r\n }\r\n if (!Array.isArray(value)) {\r\n value = [value];\r\n }\r\n this._selected = value;\r\n }\r\n\r\n /** @description Exibe indicador de carregamento nos nós. @default false */\r\n @Input()\r\n public loading = false;\r\n\r\n /** @description Modo de seleção: `'single'` ou `'multiple'`. @default 'single' */\r\n @Input()\r\n public selectionMode: 'single' | 'multiple' = 'single';\r\n\r\n /** @description Exibe checkboxes nos nós para seleção visual. @default false */\r\n @Input()\r\n public showCheckbox = false;\r\n\r\n /** @description Expão todos os nós inicialmente. @default false */\r\n @Input()\r\n public allExpanded = false;\r\n\r\n /** @description Emitido quando a seleção muda, com o(s) nó(s) selecionado(s). */\r\n @Output()\r\n public selectedChange: EventEmitter<TreeNodeItem[] | TreeNodeItem> = new EventEmitter();\r\n\r\n /** @description Emitido quando o usuário clica em um nó da árvore. */\r\n @Output()\r\n public treeNodeItemClicked: EventEmitter<TreeNodeItem> = new EventEmitter();\r\n\r\n /** @description Emitido após uma edição inline de rótulo de nó. */\r\n @Output()\r\n public treeNodeEdit: EventEmitter<TreeNodeEdit> = new EventEmitter();\r\n\r\n /** @description Emitido quando um nó é expandido pelo usuário. */\r\n @Output()\r\n public nodeExpanded: EventEmitter<TreeNodeItem> = new EventEmitter();\r\n\r\n /** @description Emitido quando um nó é colapsado pelo usuário. */\r\n @Output()\r\n public nodeCollapsed: EventEmitter<TreeNodeItem> = new EventEmitter();\r\n\r\n public ngOnChanges(changes: SimpleChanges): void {\r\n this.onChanges(changes);\r\n }\r\n\r\n public onTreeNodeItemClicked({ item }: { item: InternalTreeNodeItem }) {\r\n this.treeNodeItemClicked.emit(parseInternalTreeNodeItem(item));\r\n this.toggleChecked(item);\r\n }\r\n\r\n public onTreeNodeEdit(payload: TreeNodeEdit) {\r\n const { revertAction, item, newValue, previousValue } = payload;\r\n this.treeNodeEdit.emit({\r\n revertAction,\r\n item: parseInternalTreeNodeItem(item),\r\n newValue,\r\n previousValue,\r\n });\r\n }\r\n\r\n public onNodeExpanded(item: InternalTreeNodeItem) {\r\n this.nodeExpanded.emit(parseInternalTreeNodeItem(item));\r\n }\r\n\r\n public onNodeCollapsed(item: InternalTreeNodeItem) {\r\n this.nodeCollapsed.emit(parseInternalTreeNodeItem(item));\r\n }\r\n\r\n private toggleChecked(treeNodeItem: TreeNodeItem) {\r\n const elementCheckState = !treeNodeItem.checked;\r\n if (!this.multiple) {\r\n flattenTree(this.treeData).forEach((x) => (x.checked = false));\r\n this.selected = [treeNodeItem];\r\n }\r\n treeNodeItem.checked = elementCheckState;\r\n if (this.multiple) {\r\n this.checkTreeDataChildren(treeNodeItem);\r\n }\r\n this.setSelected();\r\n }\r\n\r\n private checkTreeDataChildren(selectedTreeNode: TreeNodeItem) {\r\n const parentChecked = selectedTreeNode.checked;\r\n if (selectedTreeNode.children) {\r\n selectedTreeNode.children.forEach((item) => {\r\n const childrens = flattenTree(item.children || []);\r\n item.checked = parentChecked;\r\n childrens.forEach((child) => (child.checked = parentChecked));\r\n });\r\n }\r\n\r\n const getNodeChildrenSummary = (node: TreeNodeItem) => {\r\n const children = node.children ?? [];\r\n const allChildrenChecked = children.every((y) => y.checked === true);\r\n const someChildrenChecked = children.some((y) => y.checked === true || y.checked === null);\r\n const allChildrenUnchecked = children.every((y) => y.checked === false || y.checked === undefined);\r\n return { allChildrenChecked, someChildrenChecked, allChildrenUnchecked };\r\n };\r\n const updateCheckedStateRecursively = (node: TreeNodeItem): void => {\r\n if (!node.children?.length) return;\r\n\r\n node.children.forEach(updateCheckedStateRecursively);\r\n\r\n const { allChildrenChecked, someChildrenChecked, allChildrenUnchecked } = getNodeChildrenSummary(node);\r\n if (allChildrenChecked) {\r\n node.checked = true;\r\n } else if (someChildrenChecked) {\r\n node.checked = null;\r\n } else if (allChildrenUnchecked) {\r\n node.checked = false;\r\n }\r\n };\r\n this.treeData.forEach(updateCheckedStateRecursively);\r\n }\r\n\r\n private setSelected() {\r\n const selected = this.selectedElements;\r\n this.selected = [...selected];\r\n this.selectedChange.emit(selected);\r\n }\r\n\r\n private onChanges(changes: SimpleChanges) {\r\n const allExpandedChanges = changes['allExpanded'];\r\n const _checkIsFirstChangeWithValue = (value: Extract<keyof TreeComponent, 'selected' | 'treeData'>) => {\r\n if (!changes[value]) {\r\n return;\r\n }\r\n return (\r\n (!changes[value].previousValue || changes[value].previousValue.length === 0) &&\r\n changes[value].currentValue?.length > 0\r\n );\r\n };\r\n\r\n if (_checkIsFirstChangeWithValue('selected')) {\r\n this.syncSelectedChanges();\r\n }\r\n\r\n if (_checkIsFirstChangeWithValue('treeData')) {\r\n const isAllExpanded = this.allExpanded;\r\n if (isAllExpanded) {\r\n this.expandAll();\r\n }\r\n }\r\n\r\n if (allExpandedChanges) {\r\n if (this.allExpanded) {\r\n this.expandAll();\r\n } else {\r\n this.collapseAll();\r\n }\r\n }\r\n }\r\n\r\n private syncSelectedChanges() {\r\n const treeFlatten = flattenTree(this.treeData);\r\n this.selected.forEach((selectedItem) => {\r\n const item = treeFlatten.find((item) => item.id === selectedItem.id);\r\n if (item) {\r\n item.checked = true;\r\n }\r\n if (item && item.children && this.multiple) {\r\n item.children.forEach((child) => {\r\n child.checked = true;\r\n const existChildInSelectedList = this.selected.some((item) => item.id === child.id);\r\n if (!existChildInSelectedList) {\r\n this.selected.push(child);\r\n }\r\n });\r\n }\r\n });\r\n const selectedElements = this.selectedElements;\r\n const selectedElementsNotInSelectedList = selectedElements.filter(\r\n (x) => !this.selected.some((y) => y.id === x.id),\r\n );\r\n selectedElementsNotInSelectedList.forEach((item) => {\r\n this.checkTreeDataChildren(item);\r\n });\r\n this.setSelected();\r\n }\r\n\r\n private collapseAll() {\r\n const flatten = flattenTree(this.treeData);\r\n flatten.forEach((item) => {\r\n item.isExpanded = false;\r\n });\r\n }\r\n\r\n private expandAll() {\r\n const flatten = flattenTree(this.treeData);\r\n flatten.forEach((item) => {\r\n item.isExpanded = true;\r\n });\r\n }\r\n\r\n private get selectedElements() {\r\n return flattenTree(this.treeData)\r\n .filter((x) => x.checked)\r\n .filter((x) => x.leaf !== true && !x.children?.length);\r\n }\r\n\r\n private get multiple() {\r\n return this.selectionMode === 'multiple';\r\n }\r\n}\r\n\r\nconst flattenTree = <T = any>(tree: TreeNodeItem<T>[]): TreeNodeItem<T>[] => {\r\n const result: TreeNodeItem<T>[] = [];\r\n\r\n function traverse(nodes: TreeNodeItem<T>[]) {\r\n for (const node of nodes) {\r\n result.push(node);\r\n if (node.children && node.children.length) {\r\n traverse(node.children);\r\n }\r\n }\r\n }\r\n\r\n traverse(tree);\r\n return result;\r\n};\r\n\r\nconst parseInternalTreeNodeItem = <T = any>(internalTreeNodeItem: InternalTreeNodeItem<T>): TreeNodeItem<T> => {\r\n const { id, label, icon, checked, isExpanded, payload, editable, children } = internalTreeNodeItem;\r\n const object = {\r\n id,\r\n label,\r\n icon,\r\n checked,\r\n isExpanded,\r\n payload,\r\n editable,\r\n _children: children?.map(parseInternalTreeNodeItem),\r\n get children() {\r\n return this._children;\r\n },\r\n set children(value) {\r\n this._children = value;\r\n internalTreeNodeItem.children = value;\r\n },\r\n };\r\n Object.defineProperty(object, '_children', {\r\n enumerable: false,\r\n });\r\n return object as TreeNodeItem<T>;\r\n};\r\n","<div class=\"tree\" *sLoadingState=\"loading\">\n @for(item of treeData; track $index) {\n <s-tree-node-item\n [showCheckbox]=\"showCheckbox\"\n [treeNodeItem]=\"item\"\n (nodeExpanded)=\"onNodeExpanded($event)\"\n (nodeCollapsed)=\"onNodeCollapsed($event)\"\n (treeNodeEdit)=\"onTreeNodeEdit($event)\"\n (treeNodeItemClicked)=\"onTreeNodeItemClicked($event)\">\n </s-tree-node-item>\n\n }\n</div>\n","import { NgModule } from '@angular/core';\r\n\r\nimport { TreeComponent } from './tree.component';\r\n\r\n@NgModule({\r\n imports: [TreeComponent],\r\n exports: [TreeComponent],\r\n})\r\nexport class TreeModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"seniorsistemas-angular-components-tree.mjs","sources":["../../projects/angular-components/tree/src/lib/tree/components/tree-node-item/tree-node-item.component.ts","../../projects/angular-components/tree/src/lib/tree/components/tree-node-item/tree-node-item.component.html","../../projects/angular-components/tree/src/lib/tree/tree.component.ts","../../projects/angular-components/tree/src/lib/tree/tree.component.html","../../projects/angular-components/tree/src/lib/tree/tree.module.ts","../../projects/angular-components/tree/src/seniorsistemas-angular-components-tree.ts"],"sourcesContent":["import { animate, query, stagger, style, transition, trigger } from '@angular/animations';\r\nimport {\r\n ChangeDetectorRef,\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n Input,\r\n Output,\r\n ViewChild,\r\n input,\r\n inject,\r\n} from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { InternalTreeNodeItem, TreeNodeEdit } from '../../Models/tree.models';\r\nimport { InputTextDirective } from '@seniorsistemas/angular-components/input-text';\r\n\r\n@Component({\r\n selector: 's-tree-node-item',\r\n templateUrl: './tree-node-item.component.html',\r\n styleUrls: ['./tree-node-item.component.scss'],\r\n animations: [\r\n trigger('fadeExpand', [\r\n transition(':enter', [\r\n style({ height: '0px', opacity: 0, overflow: 'hidden' }),\r\n animate('200ms ease-out', style({ height: '*', opacity: 1 })),\r\n ]),\r\n transition(':leave', [animate('150ms ease-in', style({ height: '0px', opacity: 0 }))]),\r\n ]),\r\n trigger('childrenAnimation', [\r\n transition(':enter', [\r\n query(\r\n ':enter',\r\n [\r\n style({ opacity: 0, transform: 'translateY(-10px)' }),\r\n stagger(60, [animate('200ms ease-out', style({ opacity: 1, transform: 'translateY(0)' }))]),\r\n ],\r\n { optional: true },\r\n ),\r\n ]),\r\n ]),\r\n ],\r\n standalone: true,\r\n imports: [FormsModule, InputTextDirective],\r\n})\r\nexport class TreeNodeItemComponent {\r\n private readonly cdr = inject(ChangeDetectorRef);\r\n private readonly translateService = inject(TranslateService);\r\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\r\n\r\n readonly ariaLevel = input(0);\r\n readonly showCheckbox = input(false);\r\n @Input() treeNodeItem!: InternalTreeNodeItem;\r\n @Output() treeNodeItemClicked = new EventEmitter<{ item: InternalTreeNodeItem; event: Event }>();\r\n @Output() treeNodeEdit = new EventEmitter<TreeNodeEdit>();\r\n @Output() nodeExpanded = new EventEmitter<InternalTreeNodeItem>();\r\n @Output() nodeCollapsed = new EventEmitter<InternalTreeNodeItem>();\r\n\r\n @ViewChild('input', { read: ElementRef }) input!: ElementRef<HTMLInputElement>;\r\n\r\n get hasChildren(): boolean {\r\n return !!(this.treeNodeItem?.children && this.treeNodeItem.children.length > 0);\r\n }\r\n\r\n get editable() {\r\n return this.treeNodeItem?.editable || false;\r\n }\r\n\r\n get ariaLabel() {\r\n return `${this.translateService.instant('platform.angular_components.select')} ${this.treeNodeItem.label}`;\r\n }\r\n\r\n expandNode() {\r\n if (this.hasChildren && !this.treeNodeItem.isExpanded) {\r\n this.toggleExpanded(this.treeNodeItem);\r\n }\r\n }\r\n\r\n collapseNode() {\r\n if (this.hasChildren && this.treeNodeItem.isExpanded) {\r\n this.toggleExpanded(this.treeNodeItem);\r\n }\r\n }\r\n\r\n focusNextNode(event: Event) {\r\n this.moveFocus(event, 1);\r\n }\r\n\r\n focusPreviousNode(event: Event) {\r\n this.moveFocus(event, -1);\r\n }\r\n\r\n private moveFocus(event: Event, offset: number) {\r\n const root = this.elementRef.nativeElement.closest<HTMLElement>('.tree') || document;\r\n const items = Array.from(root.querySelectorAll<HTMLElement>('.tree-node-item'));\r\n const currentIndex = items.indexOf(document.activeElement as HTMLElement);\r\n if (currentIndex === -1) {\r\n return;\r\n }\r\n\r\n event.preventDefault();\r\n items[currentIndex + offset]?.focus();\r\n }\r\n\r\n onCheckboxEnter(node: InternalTreeNodeItem) {\r\n const newState = node.checked === true ? false : true;\r\n node.checked = newState;\r\n this.treeNodeItemClicked.emit({ item: node, event: new KeyboardEvent('keydown', { key: 'Enter' }) });\r\n }\r\n\r\n handleTreeNodeItemClick(event: Event, treeNodeItem?: InternalTreeNodeItem) {\r\n const item = treeNodeItem || this.treeNodeItem;\r\n this.treeNodeItemClicked.emit({ item, event });\r\n }\r\n\r\n handleTreeNodeItemClicked({ event, item }: { event: Event; item: InternalTreeNodeItem }) {\r\n if (item.isEditing) {\r\n return;\r\n }\r\n this.handleTreeNodeItemClick(event, item);\r\n }\r\n\r\n toggleExpanded(treeNodeItem: InternalTreeNodeItem) {\r\n treeNodeItem.isExpanded = !treeNodeItem.isExpanded;\r\n if (treeNodeItem.isExpanded) {\r\n this.nodeExpanded.emit(treeNodeItem);\r\n } else {\r\n this.nodeCollapsed.emit(treeNodeItem);\r\n }\r\n }\r\n\r\n toggleEditing($event: Event) {\r\n $event.stopPropagation();\r\n this.treeNodeItem.isEditing = !this.treeNodeItem.isEditing;\r\n this.cdr.detectChanges();\r\n if (this.treeNodeItem.isEditing) {\r\n this.treeNodeItem.editNewValue = this.treeNodeItem.label;\r\n const input = this.input?.nativeElement;\r\n input?.focus();\r\n }\r\n }\r\n\r\n cancelEdit($event: Event) {\r\n $event.stopPropagation();\r\n this.treeNodeItem.isEditing = false;\r\n this.treeNodeItem.editNewValue = '';\r\n this.treeNodeItem.editPreviousValue = '';\r\n this.cdr.detectChanges();\r\n }\r\n\r\n saveEdit($event: Event) {\r\n $event.stopPropagation();\r\n this.treeNodeItem.isEditing = false;\r\n if (!this.treeNodeItem.editNewValue) {\r\n return;\r\n }\r\n\r\n this.treeNodeItem.editPreviousValue = this.treeNodeItem.label;\r\n this.treeNodeItem.label = this.treeNodeItem.editNewValue;\r\n\r\n const revertAction = () => {\r\n this.treeNodeItem.label = this.treeNodeItem.editPreviousValue as string;\r\n this.treeNodeItem.isEditing = false;\r\n this.cdr.detectChanges();\r\n };\r\n this.treeNodeEdit.emit({\r\n revertAction,\r\n item: this.treeNodeItem,\r\n newValue: this.treeNodeItem.editNewValue,\r\n previousValue: this.treeNodeItem.editPreviousValue,\r\n });\r\n }\r\n\r\n treeNodeEditChildEvent(payload: TreeNodeEdit) {\r\n this.treeNodeEdit.emit(payload);\r\n }\r\n}\r\n","@if (treeNodeItem) {\n <div\n class=\"tree-node-item\"\n role=\"treeitem\"\n [class.tree-node-item-selected]=\"treeNodeItem.checked\"\n [class.selectable]=\"hasChildren\"\n [attr.aria-expanded]=\"hasChildren ? treeNodeItem.isExpanded : null\"\n [attr.aria-selected]=\"treeNodeItem.checked === true\"\n [attr.aria-label]=\"treeNodeItem.label\"\n [attr.aria-level]=\"ariaLevel()\"\n tabindex=\"0\"\n (keydown.enter)=\"handleTreeNodeItemClick($event)\"\n (keydown.arrowRight)=\"expandNode()\"\n (keydown.arrowLeft)=\"collapseNode()\"\n (keydown.arrowDown)=\"focusNextNode($event)\"\n (keydown.arrowUp)=\"focusPreviousNode($event)\"\n >\n @if (hasChildren || treeNodeItem.leaf === true) {\n <div\n class=\"arrow\"\n (click)=\"toggleExpanded(treeNodeItem)\"\n >\n @if (!treeNodeItem.isExpanded) {\n <i [class]=\"treeNodeItem.collapsedIcon || 'fas fa-chevron-right'\"></i>\n }\n @if (treeNodeItem.isExpanded) {\n <i [class]=\"treeNodeItem.expandedIcon || 'fas fa-chevron-down'\"></i>\n }\n </div>\n }\n\n <div\n class=\"tree-node-item-text\"\n (click)=\"handleTreeNodeItemClick($event)\"\n >\n @if (treeNodeItem.icon || treeNodeItem.isEditing) {\n <span class=\"tree-node-item-text-icon\">\n @if (treeNodeItem.icon && !treeNodeItem.isEditing) {\n <i [class]=\"treeNodeItem.icon\"></i>\n }\n @if (treeNodeItem.isEditing) {\n <i\n class=\"fas fa-edit edit\"\n (click)=\"saveEdit($event)\"\n ></i>\n }\n </span>\n }\n\n @if (showCheckbox() && !treeNodeItem.isEditing) {\n <span class=\"tree-node-item-text-checkbox\">\n <input\n type=\"checkbox\"\n [checked]=\"treeNodeItem.checked === true\"\n [indeterminate]=\"treeNodeItem.checked === null\"\n [attr.aria-checked]=\"treeNodeItem.checked === null ? 'mixed' : treeNodeItem.checked\"\n [attr.aria-label]=\"ariaLabel\"\n role=\"checkbox\"\n tabindex=\"0\"\n (keydown.enter)=\"onCheckboxEnter(treeNodeItem)\"\n />\n </span>\n }\n\n <span class=\"tree-node-item-text-label\">\n @if (treeNodeItem.isEditing) {\n <input\n #input\n type=\"text\"\n sInputText\n class=\"tree-node-item-text-input\"\n [(ngModel)]=\"treeNodeItem.editNewValue\"\n (keydown.enter)=\"saveEdit($event)\"\n (keydown.escape)=\"cancelEdit($event)\"\n (click)=\"$event.stopPropagation()\"\n aria-label=\"Editar nome do item\"\n aria-live=\"polite\"\n />\n } @else if (!treeNodeItem.isEditing) {\n {{ treeNodeItem.label }}\n }\n </span>\n\n @if (editable) {\n <span class=\"tree-node-item-text-editable\">\n <i\n class=\"fas fa-pencil-alt\"\n (click)=\"toggleEditing($event)\"\n aria-label=\"Editar item\"\n tabindex=\"0\"\n ></i>\n </span>\n }\n </div>\n </div>\n}\n\n@if (hasChildren && treeNodeItem.isExpanded) {\n <div\n @fadeExpand\n class=\"child\"\n role=\"group\"\n @childrenAnimation\n >\n @for (child of treeNodeItem.children; track $index) {\n <s-tree-node-item\n [showCheckbox]=\"showCheckbox()\"\n [treeNodeItem]=\"child\"\n [ariaLevel]=\"ariaLevel() + 1\"\n (treeNodeItemClicked)=\"handleTreeNodeItemClicked($event)\"\n (treeNodeEdit)=\"treeNodeEditChildEvent($event)\"\n (nodeExpanded)=\"nodeExpanded.emit($event)\"\n (nodeCollapsed)=\"nodeCollapsed.emit($event)\"\n class=\"child-item\"\n />\n }\n </div>\n}\n\n","import { Component, EventEmitter, Input, OnChanges, Output, SimpleChanges } from '@angular/core';\r\n\r\nimport { InternalTreeNodeItem, TreeNodeEdit, TreeNodeItem } from './Models/tree.models';\r\nimport { LoadingStateDirective } from '@seniorsistemas/angular-components/loading-state';\r\nimport { TreeNodeItemComponent } from './components/tree-node-item/tree-node-item.component';\r\n\r\n/**\r\n * @description Componente de árvore hierárquica com suporte a seleção única ou múltipla,\r\n * checkboxes, noós expansíveis e edição inline de rótulos. Gerencia o estado interno\r\n * dos nós e emite eventos na seleção, expansão, colapso e edição.\r\n *\r\n * @example\r\n * ```html\r\n * <s-tree\r\n * [treeData]=\"nos\"\r\n * selectionMode=\"multiple\"\r\n * [showCheckbox]=\"true\"\r\n * (selectedChange)=\"onSelecaoMudou($event)\" />\r\n * ```\r\n *\r\n * @category Data\r\n */\r\n@Component({\r\n selector: 's-tree',\r\n templateUrl: './tree.component.html',\r\n styleUrls: ['./tree.component.scss'],\r\n standalone: true,\r\n imports: [LoadingStateDirective, TreeNodeItemComponent],\r\n})\r\nexport class TreeComponent implements OnChanges {\r\n /** @description Lista de nós raíz da árvore. @default [] */\r\n @Input()\r\n public treeData: TreeNodeItem[] = [];\r\n\r\n private _selected: TreeNodeItem[] = [];\r\n /** @description Nó(s) selecionado(s). Suporta array ou item único dependendo de `selectionMode`. @default [] */\r\n @Input()\r\n public get selected(): TreeNodeItem[] {\r\n return this._selected;\r\n }\r\n public set selected(value: TreeNodeItem[] | TreeNodeItem | undefined) {\r\n if (!value) {\r\n value = [];\r\n }\r\n if (!Array.isArray(value)) {\r\n value = [value];\r\n }\r\n this._selected = value;\r\n }\r\n\r\n /** @description Exibe indicador de carregamento nos nós. @default false */\r\n @Input()\r\n public loading = false;\r\n\r\n /** @description Modo de seleção: `'single'` ou `'multiple'`. @default 'single' */\r\n @Input()\r\n public selectionMode: 'single' | 'multiple' = 'single';\r\n\r\n /** @description Exibe checkboxes nos nós para seleção visual. @default false */\r\n @Input()\r\n public showCheckbox = false;\r\n\r\n /** @description Expão todos os nós inicialmente. @default false */\r\n @Input()\r\n public allExpanded = false;\r\n\r\n /** @description Emitido quando a seleção muda, com o(s) nó(s) selecionado(s). */\r\n @Output()\r\n public selectedChange: EventEmitter<TreeNodeItem[] | TreeNodeItem> = new EventEmitter();\r\n\r\n /** @description Emitido quando o usuário clica em um nó da árvore. */\r\n @Output()\r\n public treeNodeItemClicked: EventEmitter<TreeNodeItem> = new EventEmitter();\r\n\r\n /** @description Emitido após uma edição inline de rótulo de nó. */\r\n @Output()\r\n public treeNodeEdit: EventEmitter<TreeNodeEdit> = new EventEmitter();\r\n\r\n /** @description Emitido quando um nó é expandido pelo usuário. */\r\n @Output()\r\n public nodeExpanded: EventEmitter<TreeNodeItem> = new EventEmitter();\r\n\r\n /** @description Emitido quando um nó é colapsado pelo usuário. */\r\n @Output()\r\n public nodeCollapsed: EventEmitter<TreeNodeItem> = new EventEmitter();\r\n\r\n public ngOnChanges(changes: SimpleChanges): void {\r\n this.onChanges(changes);\r\n }\r\n\r\n public onTreeNodeItemClicked({ item }: { item: InternalTreeNodeItem }) {\r\n this.treeNodeItemClicked.emit(parseInternalTreeNodeItem(item));\r\n this.toggleChecked(item);\r\n }\r\n\r\n public onTreeNodeEdit(payload: TreeNodeEdit) {\r\n const { revertAction, item, newValue, previousValue } = payload;\r\n this.treeNodeEdit.emit({\r\n revertAction,\r\n item: parseInternalTreeNodeItem(item),\r\n newValue,\r\n previousValue,\r\n });\r\n }\r\n\r\n public onNodeExpanded(item: InternalTreeNodeItem) {\r\n this.nodeExpanded.emit(parseInternalTreeNodeItem(item));\r\n }\r\n\r\n public onNodeCollapsed(item: InternalTreeNodeItem) {\r\n this.nodeCollapsed.emit(parseInternalTreeNodeItem(item));\r\n }\r\n\r\n private toggleChecked(treeNodeItem: TreeNodeItem) {\r\n const elementCheckState = !treeNodeItem.checked;\r\n if (!this.multiple) {\r\n flattenTree(this.treeData).forEach((x) => (x.checked = false));\r\n this.selected = [treeNodeItem];\r\n }\r\n treeNodeItem.checked = elementCheckState;\r\n if (this.multiple) {\r\n this.checkTreeDataChildren(treeNodeItem);\r\n }\r\n this.setSelected();\r\n }\r\n\r\n private checkTreeDataChildren(selectedTreeNode: TreeNodeItem) {\r\n const parentChecked = selectedTreeNode.checked;\r\n if (selectedTreeNode.children) {\r\n selectedTreeNode.children.forEach((item) => {\r\n const childrens = flattenTree(item.children || []);\r\n item.checked = parentChecked;\r\n childrens.forEach((child) => (child.checked = parentChecked));\r\n });\r\n }\r\n\r\n const getNodeChildrenSummary = (node: TreeNodeItem) => {\r\n const children = node.children ?? [];\r\n const allChildrenChecked = children.every((y) => y.checked === true);\r\n const someChildrenChecked = children.some((y) => y.checked === true || y.checked === null);\r\n const allChildrenUnchecked = children.every((y) => y.checked === false || y.checked === undefined);\r\n return { allChildrenChecked, someChildrenChecked, allChildrenUnchecked };\r\n };\r\n const updateCheckedStateRecursively = (node: TreeNodeItem): void => {\r\n if (!node.children?.length) return;\r\n\r\n node.children.forEach(updateCheckedStateRecursively);\r\n\r\n const { allChildrenChecked, someChildrenChecked, allChildrenUnchecked } = getNodeChildrenSummary(node);\r\n if (allChildrenChecked) {\r\n node.checked = true;\r\n } else if (someChildrenChecked) {\r\n node.checked = null;\r\n } else if (allChildrenUnchecked) {\r\n node.checked = false;\r\n }\r\n };\r\n this.treeData.forEach(updateCheckedStateRecursively);\r\n }\r\n\r\n private setSelected() {\r\n const selected = this.selectedElements;\r\n this.selected = [...selected];\r\n this.selectedChange.emit(selected);\r\n }\r\n\r\n private onChanges(changes: SimpleChanges) {\r\n const allExpandedChanges = changes['allExpanded'];\r\n const _checkIsFirstChangeWithValue = (value: Extract<keyof TreeComponent, 'selected' | 'treeData'>) => {\r\n if (!changes[value]) {\r\n return;\r\n }\r\n return (\r\n (!changes[value].previousValue || changes[value].previousValue.length === 0) &&\r\n changes[value].currentValue?.length > 0\r\n );\r\n };\r\n\r\n if (_checkIsFirstChangeWithValue('selected')) {\r\n this.syncSelectedChanges();\r\n }\r\n\r\n if (_checkIsFirstChangeWithValue('treeData')) {\r\n const isAllExpanded = this.allExpanded;\r\n if (isAllExpanded) {\r\n this.expandAll();\r\n }\r\n }\r\n\r\n if (allExpandedChanges) {\r\n if (this.allExpanded) {\r\n this.expandAll();\r\n } else {\r\n this.collapseAll();\r\n }\r\n }\r\n }\r\n\r\n private syncSelectedChanges() {\r\n const treeFlatten = flattenTree(this.treeData);\r\n this.selected.forEach((selectedItem) => {\r\n const item = treeFlatten.find((item) => item.id === selectedItem.id);\r\n if (item) {\r\n item.checked = true;\r\n }\r\n if (item && item.children && this.multiple) {\r\n item.children.forEach((child) => {\r\n child.checked = true;\r\n const existChildInSelectedList = this.selected.some((item) => item.id === child.id);\r\n if (!existChildInSelectedList) {\r\n this.selected.push(child);\r\n }\r\n });\r\n }\r\n });\r\n const selectedElements = this.selectedElements;\r\n const selectedElementsNotInSelectedList = selectedElements.filter(\r\n (x) => !this.selected.some((y) => y.id === x.id),\r\n );\r\n selectedElementsNotInSelectedList.forEach((item) => {\r\n this.checkTreeDataChildren(item);\r\n });\r\n this.setSelected();\r\n }\r\n\r\n private collapseAll() {\r\n const flatten = flattenTree(this.treeData);\r\n flatten.forEach((item) => {\r\n item.isExpanded = false;\r\n });\r\n }\r\n\r\n private expandAll() {\r\n const flatten = flattenTree(this.treeData);\r\n flatten.forEach((item) => {\r\n item.isExpanded = true;\r\n });\r\n }\r\n\r\n private get selectedElements() {\r\n return flattenTree(this.treeData)\r\n .filter((x) => x.checked)\r\n .filter((x) => x.leaf !== true && !x.children?.length);\r\n }\r\n\r\n private get multiple() {\r\n return this.selectionMode === 'multiple';\r\n }\r\n}\r\n\r\nconst flattenTree = <T = any>(tree: TreeNodeItem<T>[]): TreeNodeItem<T>[] => {\r\n const result: TreeNodeItem<T>[] = [];\r\n\r\n function traverse(nodes: TreeNodeItem<T>[]) {\r\n for (const node of nodes) {\r\n result.push(node);\r\n if (node.children && node.children.length) {\r\n traverse(node.children);\r\n }\r\n }\r\n }\r\n\r\n traverse(tree);\r\n return result;\r\n};\r\n\r\nconst parseInternalTreeNodeItem = <T = any>(internalTreeNodeItem: InternalTreeNodeItem<T>): TreeNodeItem<T> => {\r\n const { id, label, icon, checked, isExpanded, payload, editable, children } = internalTreeNodeItem;\r\n const object = {\r\n id,\r\n label,\r\n icon,\r\n checked,\r\n isExpanded,\r\n payload,\r\n editable,\r\n _children: children?.map(parseInternalTreeNodeItem),\r\n get children() {\r\n return this._children;\r\n },\r\n set children(value) {\r\n this._children = value;\r\n internalTreeNodeItem.children = value;\r\n },\r\n };\r\n Object.defineProperty(object, '_children', {\r\n enumerable: false,\r\n });\r\n return object as TreeNodeItem<T>;\r\n};\r\n","<div class=\"tree\" *sLoadingState=\"loading\">\n @for(item of treeData; track $index) {\n <s-tree-node-item\n [showCheckbox]=\"showCheckbox\"\n [treeNodeItem]=\"item\"\n (nodeExpanded)=\"onNodeExpanded($event)\"\n (nodeCollapsed)=\"onNodeCollapsed($event)\"\n (treeNodeEdit)=\"onTreeNodeEdit($event)\"\n (treeNodeItemClicked)=\"onTreeNodeItemClicked($event)\">\n </s-tree-node-item>\n\n }\n</div>\n","import { NgModule } from '@angular/core';\r\n\r\nimport { TreeComponent } from './tree.component';\r\n\r\n/**\r\n * @deprecated Será removido na v20. Importe diretamente o standalone `TreeComponent` (de\r\n * `@seniorsistemas/angular-components/tree`) no lugar deste módulo.\r\n *\r\n * Migração automática (também executada pelo `ng update` na v20):\r\n * `ng generate @seniorsistemas/angular-components:migrate-modules-to-standalone`\r\n */\r\n@NgModule({\r\n imports: [TreeComponent],\r\n exports: [TreeComponent],\r\n})\r\nexport class TreeModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -178,6 +178,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
178
178
  args: ['keydown', ['$event']]
179
179
  }] } });
180
180
 
181
+ /**
182
+ * @deprecated Será removido na v20. Importe diretamente o standalone `WorkspaceSwitchComponent` (de
183
+ * `@seniorsistemas/angular-components/workspace-switch`) no lugar deste módulo.
184
+ *
185
+ * Migração automática (também executada pelo `ng update` na v20):
186
+ * `ng generate @seniorsistemas/angular-components:migrate-modules-to-standalone`
187
+ */
181
188
  class WorkspaceSwitchModule {
182
189
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: WorkspaceSwitchModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
183
190
  static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.14", ngImport: i0, type: WorkspaceSwitchModule, imports: [WorkspaceSwitchComponent], exports: [WorkspaceSwitchComponent] });
@@ -1 +1 @@
1
- {"version":3,"file":"seniorsistemas-angular-components-workspace-switch.mjs","sources":["../../projects/angular-components/workspace-switch/src/lib/workspace-switch/workspace-switch.component.ts","../../projects/angular-components/workspace-switch/src/lib/workspace-switch/workspace-switch.component.html","../../projects/angular-components/workspace-switch/src/lib/workspace-switch/workspace-switch.module.ts","../../projects/angular-components/workspace-switch/src/seniorsistemas-angular-components-workspace-switch.ts"],"sourcesContent":["import { NgClass, NgStyle } from '@angular/common';\r\nimport {\r\n ChangeDetectorRef,\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n HostBinding,\r\n HostListener,\r\n Input,\r\n OnInit,\r\n Output,\r\n QueryList,\r\n ViewChildren,\r\n inject,\r\n} from '@angular/core';\r\n\r\nimport { Workspace } from './models/workspace';\r\n\r\n/**\r\n * @description Componente de seleção de workspace exibe um dropdown com a lista de espaços de trabalho\r\n * disponíveis, permitindo ao usuário alternar entre eles. Suporta navegação por teclado\r\n * (setas, Enter, Escape), estado desabilitado e um botão de ação customizável no rodapé.\r\n *\r\n * @example\r\n * ```html\r\n * <s-workspace-switch\r\n * [workspaces]=\"workspaces\"\r\n * footerButtonLabel=\"Criar workspace\"\r\n * (selected)=\"onWorkspaceSelect($event)\"\r\n * (footerButtonClicked)=\"onCreate()\"\r\n * />\r\n * ```\r\n *\r\n * @category Navegação\r\n */\r\n@Component({\r\n selector: 's-workspace-switch',\r\n templateUrl: './workspace-switch.component.html',\r\n styleUrls: ['./workspace-switch.component.scss'],\r\n standalone: true,\r\n imports: [NgClass, NgStyle],\r\n})\r\nexport class WorkspaceSwitchComponent implements OnInit {\r\n private readonly eRef = inject(ElementRef);\r\n private readonly changeDetectorRef = inject(ChangeDetectorRef);\r\n\r\n /**\r\n * @description Lista de workspaces disponíveis para seleção. Campo obrigatório.\r\n * Cada item deve implementar a interface `Workspace`.\r\n * Lança um erro em runtime se a lista estiver vazia.\r\n */\r\n @Input({ required: true })\r\n public workspaces: Workspace[] = [];\r\n\r\n /**\r\n * @description Rótulo exibido no botão de ação localizado no rodapé do dropdown.\r\n *\r\n * @default 'Adicionar'\r\n */\r\n @Input()\r\n public footerButtonLabel = 'Adicionar';\r\n\r\n /**\r\n * @description Controla a visibilidade do botão de ação no rodapé do dropdown.\r\n * Quando `false`, o botão não é renderizado.\r\n *\r\n * @default true\r\n */\r\n @Input()\r\n public showFooterButton = true;\r\n\r\n /**\r\n * @description Quando `true`, o componente fica desabilitado: não abre o dropdown,\r\n * não emite eventos e fica inacessível via teclado (`tabindex = -1`).\r\n *\r\n * @default false\r\n */\r\n @Input()\r\n public disabled = false;\r\n\r\n /**\r\n * @description Emitido quando o usuário clica no botão de ação do rodapé do dropdown.\r\n */\r\n @Output()\r\n public footerButtonClicked = new EventEmitter();\r\n\r\n /**\r\n * @description Emitido quando o usuário seleciona um workspace da lista.\r\n * Retorna o objeto `Workspace` selecionado.\r\n */\r\n @Output()\r\n public selected: EventEmitter<Workspace> = new EventEmitter();\r\n\r\n @ViewChildren('listItem')\r\n public listItems: QueryList<ElementRef> | null = null;\r\n\r\n public get open() {\r\n return this._open;\r\n }\r\n\r\n public set open(open: boolean) {\r\n this._open = open;\r\n this.changeDetectorRef.detectChanges();\r\n\r\n if (open) {\r\n this._calculateListMaxHeight();\r\n }\r\n }\r\n\r\n public height = 0;\r\n public selectedItemIndex = 0;\r\n public currentItemIndex = 0;\r\n\r\n private _open = false;\r\n\r\n @HostBinding('attr.tabindex')\r\n public tabindex = 0;\r\n\r\n @HostListener('document:click', ['$event'])\r\n public onClickout(event: MouseEvent): void {\r\n if (!this.eRef.nativeElement.contains(event.target)) {\r\n this.open = false;\r\n }\r\n }\r\n\r\n @HostListener('keydown', ['$event'])\r\n public onKeydown(event: KeyboardEvent): void {\r\n if (event.key === 'Enter' || event.key === ' ') {\r\n if (this.open) {\r\n const workspace = this.workspaces[this.selectedItemIndex];\r\n\r\n if (workspace.disabled) {\r\n return;\r\n }\r\n\r\n this.selectedItemIndex = this.currentItemIndex;\r\n this.selected.emit(this.workspaces[this.selectedItemIndex]);\r\n }\r\n this.open = !this.open;\r\n } else if (event.key === 'Escape') {\r\n this.open = false;\r\n } else if (event.key === 'ArrowDown') {\r\n if (this.currentItemIndex < this.workspaces.length - 1) {\r\n this.currentItemIndex++;\r\n this._scrollToCurrentItem();\r\n }\r\n } else if (event.key === 'ArrowUp') {\r\n if (this.currentItemIndex > 0) {\r\n this.currentItemIndex--;\r\n this._scrollToCurrentItem();\r\n }\r\n }\r\n }\r\n\r\n public ngOnInit(): void {\r\n if (this.disabled) {\r\n this.tabindex = -1;\r\n }\r\n }\r\n\r\n public validations(): void {\r\n if (!this.workspaces.length) {\r\n throw new Error('Workspaces list is empty.');\r\n }\r\n }\r\n\r\n public buttonOnBlur(): void {\r\n this.open = false;\r\n this.currentItemIndex = this.selectedItemIndex;\r\n }\r\n\r\n public onSelectItem(workspace: Workspace): void {\r\n if (workspace.disabled) {\r\n return;\r\n }\r\n\r\n this.open = false;\r\n this.selectedItemIndex = this.workspaces.indexOf(workspace);\r\n this.currentItemIndex = this.selectedItemIndex;\r\n this.selected.emit(workspace);\r\n }\r\n\r\n public onFooterButtonClick(): void {\r\n this.open = false;\r\n this.footerButtonClicked.emit();\r\n }\r\n\r\n private _calculateListMaxHeight(): void {\r\n const workspaceListRef = this.eRef.nativeElement.querySelector('#workspace-list');\r\n const { top } = workspaceListRef.getBoundingClientRect();\r\n\r\n this.height = window.innerHeight - top - 20 - (this.showFooterButton ? 64 : 0);\r\n this.changeDetectorRef.detectChanges();\r\n }\r\n\r\n private _scrollToCurrentItem(): void {\r\n const currentItem = this.listItems?.toArray()[this.currentItemIndex];\r\n if (currentItem) {\r\n currentItem.nativeElement.scrollIntoView({ behavior: 'smooth', block: 'nearest' });\r\n }\r\n }\r\n}\r\n","<div\r\n class=\"workspace-switch\"\r\n [ngClass]=\"{ 'workspace-switch--disabled': disabled }\"\r\n (blur)=\"buttonOnBlur()\"\r\n>\r\n <div\r\n class=\"button\"\r\n (click)=\"open = !open\"\r\n >\r\n <div class=\"item\">\r\n <span class=\"title\">{{ workspaces[selectedItemIndex].title }}</span>\r\n <span class=\"subtitle\">{{ workspaces[selectedItemIndex].subtitle }}</span>\r\n </div>\r\n <div class=\"icons\">\r\n <span class=\"fas fa-chevron-up\"></span>\r\n <span class=\"fas fa-chevron-down\"></span>\r\n </div>\r\n </div>\r\n @if (!disabled && open) {\r\n <div class=\"drop-panel\">\r\n <ul\r\n id=\"workspace-list\"\r\n class=\"workspace-list\"\r\n [ngStyle]=\"{ 'max-height': height + 'px' }\"\r\n >\r\n @for (workspace of workspaces; track workspace.id; let i = $index) {\r\n <li\r\n #listItem\r\n class=\"workspace\"\r\n [ngClass]=\"{\r\n 'workspace--focused': i === currentItemIndex && !workspace.disabled,\r\n 'workspace--disabled': workspace.disabled,\r\n }\"\r\n (click)=\"onSelectItem(workspace)\"\r\n >\r\n <div class=\"item\">\r\n <span class=\"title\">{{ workspace.title }}</span>\r\n <span class=\"subtitle\">{{ workspace.subtitle }}</span>\r\n </div>\r\n @if (i === selectedItemIndex) {\r\n <span class=\"active-icon fas fa-check\"></span>\r\n }\r\n </li>\r\n }\r\n </ul>\r\n @if (showFooterButton) {\r\n <div class=\"footer\">\r\n <div\r\n class=\"footer__button\"\r\n (click)=\"onFooterButtonClick()\"\r\n >\r\n <span class=\"footer__button__icon fas fa-plus\"></span>\r\n <span class=\"footer__button__title\">{{ footerButtonLabel }}</span>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n }\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\n\r\nimport { WorkspaceSwitchComponent } from './workspace-switch.component';\r\n\r\n@NgModule({\r\n imports: [WorkspaceSwitchComponent],\r\n exports: [WorkspaceSwitchComponent],\r\n})\r\nexport class WorkspaceSwitchModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;AAkBA;;;;;;;;;;;;;;;;AAgBG;MAQU,wBAAwB,CAAA;AAChB,IAAA,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;AAC1B,IAAA,iBAAiB,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;AAE/D;;;;AAIG;IAEI,UAAU,GAAgB,EAAE,CAAC;AAEpC;;;;AAIG;IAEI,iBAAiB,GAAG,WAAW,CAAC;AAEvC;;;;;AAKG;IAEI,gBAAgB,GAAG,IAAI,CAAC;AAE/B;;;;;AAKG;IAEI,QAAQ,GAAG,KAAK,CAAC;AAExB;;AAEG;AAEI,IAAA,mBAAmB,GAAG,IAAI,YAAY,EAAE,CAAC;AAEhD;;;AAGG;AAEI,IAAA,QAAQ,GAA4B,IAAI,YAAY,EAAE,CAAC;IAGvD,SAAS,GAAiC,IAAI,CAAC;AAEtD,IAAA,IAAW,IAAI,GAAA;QACX,OAAO,IAAI,CAAC,KAAK,CAAC;KACrB;IAED,IAAW,IAAI,CAAC,IAAa,EAAA;AACzB,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;AAClB,QAAA,IAAI,CAAC,iBAAiB,CAAC,aAAa,EAAE,CAAC;QAEvC,IAAI,IAAI,EAAE;YACN,IAAI,CAAC,uBAAuB,EAAE,CAAC;SAClC;KACJ;IAEM,MAAM,GAAG,CAAC,CAAC;IACX,iBAAiB,GAAG,CAAC,CAAC;IACtB,gBAAgB,GAAG,CAAC,CAAC;IAEpB,KAAK,GAAG,KAAK,CAAC;IAGf,QAAQ,GAAG,CAAC,CAAC;AAGb,IAAA,UAAU,CAAC,KAAiB,EAAA;AAC/B,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;AACjD,YAAA,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;SACrB;KACJ;AAGM,IAAA,SAAS,CAAC,KAAoB,EAAA;AACjC,QAAA,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,EAAE;AAC5C,YAAA,IAAI,IAAI,CAAC,IAAI,EAAE;gBACX,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;AAE1D,gBAAA,IAAI,SAAS,CAAC,QAAQ,EAAE;oBACpB,OAAO;iBACV;AAED,gBAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,gBAAgB,CAAC;AAC/C,gBAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC;aAC/D;AACD,YAAA,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;SAC1B;AAAM,aAAA,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,EAAE;AAC/B,YAAA,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;SACrB;AAAM,aAAA,IAAI,KAAK,CAAC,GAAG,KAAK,WAAW,EAAE;AAClC,YAAA,IAAI,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;gBACpD,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBACxB,IAAI,CAAC,oBAAoB,EAAE,CAAC;aAC/B;SACJ;AAAM,aAAA,IAAI,KAAK,CAAC,GAAG,KAAK,SAAS,EAAE;AAChC,YAAA,IAAI,IAAI,CAAC,gBAAgB,GAAG,CAAC,EAAE;gBAC3B,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBACxB,IAAI,CAAC,oBAAoB,EAAE,CAAC;aAC/B;SACJ;KACJ;IAEM,QAAQ,GAAA;AACX,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACf,YAAA,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;SACtB;KACJ;IAEM,WAAW,GAAA;AACd,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE;AACzB,YAAA,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;SAChD;KACJ;IAEM,YAAY,GAAA;AACf,QAAA,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;AAClB,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,iBAAiB,CAAC;KAClD;AAEM,IAAA,YAAY,CAAC,SAAoB,EAAA;AACpC,QAAA,IAAI,SAAS,CAAC,QAAQ,EAAE;YACpB,OAAO;SACV;AAED,QAAA,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;QAClB,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;AAC5D,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,iBAAiB,CAAC;AAC/C,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;KACjC;IAEM,mBAAmB,GAAA;AACtB,QAAA,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;AAClB,QAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE,CAAC;KACnC;IAEO,uBAAuB,GAAA;AAC3B,QAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAC;QAClF,MAAM,EAAE,GAAG,EAAE,GAAG,gBAAgB,CAAC,qBAAqB,EAAE,CAAC;QAEzD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,WAAW,GAAG,GAAG,GAAG,EAAE,IAAI,IAAI,CAAC,gBAAgB,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;AAC/E,QAAA,IAAI,CAAC,iBAAiB,CAAC,aAAa,EAAE,CAAC;KAC1C;IAEO,oBAAoB,GAAA;AACxB,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QACrE,IAAI,WAAW,EAAE;AACb,YAAA,WAAW,CAAC,aAAa,CAAC,cAAc,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;SACtF;KACJ;wGA9JQ,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAxB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,wBAAwB,EC1CrC,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,gBAAA,EAAA,oBAAA,EAAA,SAAA,EAAA,mBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,eAAA,EAAA,eAAA,EAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,WAAA,EAAA,SAAA,EAAA,CAAA,UAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,25EA2DA,EDnBc,MAAA,EAAA,CAAA,o9EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,OAAO,oFAAE,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAEjB,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAPpC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,oBAAoB,cAGlB,IAAI,EAAA,OAAA,EACP,CAAC,OAAO,EAAE,OAAO,CAAC,EAAA,QAAA,EAAA,25EAAA,EAAA,MAAA,EAAA,CAAA,o9EAAA,CAAA,EAAA,CAAA;8BAYpB,UAAU,EAAA,CAAA;sBADhB,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAA;gBASlB,iBAAiB,EAAA,CAAA;sBADvB,KAAK;gBAUC,gBAAgB,EAAA,CAAA;sBADtB,KAAK;gBAUC,QAAQ,EAAA,CAAA;sBADd,KAAK;gBAOC,mBAAmB,EAAA,CAAA;sBADzB,MAAM;gBAQA,QAAQ,EAAA,CAAA;sBADd,MAAM;gBAIA,SAAS,EAAA,CAAA;sBADf,YAAY;uBAAC,UAAU,CAAA;gBAuBjB,QAAQ,EAAA,CAAA;sBADd,WAAW;uBAAC,eAAe,CAAA;gBAIrB,UAAU,EAAA,CAAA;sBADhB,YAAY;uBAAC,gBAAgB,EAAE,CAAC,QAAQ,CAAC,CAAA;gBAQnC,SAAS,EAAA,CAAA;sBADf,YAAY;uBAAC,SAAS,EAAE,CAAC,QAAQ,CAAC,CAAA;;;MErH1B,qBAAqB,CAAA;wGAArB,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;yGAArB,qBAAqB,EAAA,OAAA,EAAA,CAHpB,wBAAwB,CAAA,EAAA,OAAA,EAAA,CACxB,wBAAwB,CAAA,EAAA,CAAA,CAAA;yGAEzB,qBAAqB,EAAA,CAAA,CAAA;;4FAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAJjC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACN,OAAO,EAAE,CAAC,wBAAwB,CAAC;oBACnC,OAAO,EAAE,CAAC,wBAAwB,CAAC;AACtC,iBAAA,CAAA;;;ACPD;;AAEG;;;;"}
1
+ {"version":3,"file":"seniorsistemas-angular-components-workspace-switch.mjs","sources":["../../projects/angular-components/workspace-switch/src/lib/workspace-switch/workspace-switch.component.ts","../../projects/angular-components/workspace-switch/src/lib/workspace-switch/workspace-switch.component.html","../../projects/angular-components/workspace-switch/src/lib/workspace-switch/workspace-switch.module.ts","../../projects/angular-components/workspace-switch/src/seniorsistemas-angular-components-workspace-switch.ts"],"sourcesContent":["import { NgClass, NgStyle } from '@angular/common';\r\nimport {\r\n ChangeDetectorRef,\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n HostBinding,\r\n HostListener,\r\n Input,\r\n OnInit,\r\n Output,\r\n QueryList,\r\n ViewChildren,\r\n inject,\r\n} from '@angular/core';\r\n\r\nimport { Workspace } from './models/workspace';\r\n\r\n/**\r\n * @description Componente de seleção de workspace exibe um dropdown com a lista de espaços de trabalho\r\n * disponíveis, permitindo ao usuário alternar entre eles. Suporta navegação por teclado\r\n * (setas, Enter, Escape), estado desabilitado e um botão de ação customizável no rodapé.\r\n *\r\n * @example\r\n * ```html\r\n * <s-workspace-switch\r\n * [workspaces]=\"workspaces\"\r\n * footerButtonLabel=\"Criar workspace\"\r\n * (selected)=\"onWorkspaceSelect($event)\"\r\n * (footerButtonClicked)=\"onCreate()\"\r\n * />\r\n * ```\r\n *\r\n * @category Navegação\r\n */\r\n@Component({\r\n selector: 's-workspace-switch',\r\n templateUrl: './workspace-switch.component.html',\r\n styleUrls: ['./workspace-switch.component.scss'],\r\n standalone: true,\r\n imports: [NgClass, NgStyle],\r\n})\r\nexport class WorkspaceSwitchComponent implements OnInit {\r\n private readonly eRef = inject(ElementRef);\r\n private readonly changeDetectorRef = inject(ChangeDetectorRef);\r\n\r\n /**\r\n * @description Lista de workspaces disponíveis para seleção. Campo obrigatório.\r\n * Cada item deve implementar a interface `Workspace`.\r\n * Lança um erro em runtime se a lista estiver vazia.\r\n */\r\n @Input({ required: true })\r\n public workspaces: Workspace[] = [];\r\n\r\n /**\r\n * @description Rótulo exibido no botão de ação localizado no rodapé do dropdown.\r\n *\r\n * @default 'Adicionar'\r\n */\r\n @Input()\r\n public footerButtonLabel = 'Adicionar';\r\n\r\n /**\r\n * @description Controla a visibilidade do botão de ação no rodapé do dropdown.\r\n * Quando `false`, o botão não é renderizado.\r\n *\r\n * @default true\r\n */\r\n @Input()\r\n public showFooterButton = true;\r\n\r\n /**\r\n * @description Quando `true`, o componente fica desabilitado: não abre o dropdown,\r\n * não emite eventos e fica inacessível via teclado (`tabindex = -1`).\r\n *\r\n * @default false\r\n */\r\n @Input()\r\n public disabled = false;\r\n\r\n /**\r\n * @description Emitido quando o usuário clica no botão de ação do rodapé do dropdown.\r\n */\r\n @Output()\r\n public footerButtonClicked = new EventEmitter();\r\n\r\n /**\r\n * @description Emitido quando o usuário seleciona um workspace da lista.\r\n * Retorna o objeto `Workspace` selecionado.\r\n */\r\n @Output()\r\n public selected: EventEmitter<Workspace> = new EventEmitter();\r\n\r\n @ViewChildren('listItem')\r\n public listItems: QueryList<ElementRef> | null = null;\r\n\r\n public get open() {\r\n return this._open;\r\n }\r\n\r\n public set open(open: boolean) {\r\n this._open = open;\r\n this.changeDetectorRef.detectChanges();\r\n\r\n if (open) {\r\n this._calculateListMaxHeight();\r\n }\r\n }\r\n\r\n public height = 0;\r\n public selectedItemIndex = 0;\r\n public currentItemIndex = 0;\r\n\r\n private _open = false;\r\n\r\n @HostBinding('attr.tabindex')\r\n public tabindex = 0;\r\n\r\n @HostListener('document:click', ['$event'])\r\n public onClickout(event: MouseEvent): void {\r\n if (!this.eRef.nativeElement.contains(event.target)) {\r\n this.open = false;\r\n }\r\n }\r\n\r\n @HostListener('keydown', ['$event'])\r\n public onKeydown(event: KeyboardEvent): void {\r\n if (event.key === 'Enter' || event.key === ' ') {\r\n if (this.open) {\r\n const workspace = this.workspaces[this.selectedItemIndex];\r\n\r\n if (workspace.disabled) {\r\n return;\r\n }\r\n\r\n this.selectedItemIndex = this.currentItemIndex;\r\n this.selected.emit(this.workspaces[this.selectedItemIndex]);\r\n }\r\n this.open = !this.open;\r\n } else if (event.key === 'Escape') {\r\n this.open = false;\r\n } else if (event.key === 'ArrowDown') {\r\n if (this.currentItemIndex < this.workspaces.length - 1) {\r\n this.currentItemIndex++;\r\n this._scrollToCurrentItem();\r\n }\r\n } else if (event.key === 'ArrowUp') {\r\n if (this.currentItemIndex > 0) {\r\n this.currentItemIndex--;\r\n this._scrollToCurrentItem();\r\n }\r\n }\r\n }\r\n\r\n public ngOnInit(): void {\r\n if (this.disabled) {\r\n this.tabindex = -1;\r\n }\r\n }\r\n\r\n public validations(): void {\r\n if (!this.workspaces.length) {\r\n throw new Error('Workspaces list is empty.');\r\n }\r\n }\r\n\r\n public buttonOnBlur(): void {\r\n this.open = false;\r\n this.currentItemIndex = this.selectedItemIndex;\r\n }\r\n\r\n public onSelectItem(workspace: Workspace): void {\r\n if (workspace.disabled) {\r\n return;\r\n }\r\n\r\n this.open = false;\r\n this.selectedItemIndex = this.workspaces.indexOf(workspace);\r\n this.currentItemIndex = this.selectedItemIndex;\r\n this.selected.emit(workspace);\r\n }\r\n\r\n public onFooterButtonClick(): void {\r\n this.open = false;\r\n this.footerButtonClicked.emit();\r\n }\r\n\r\n private _calculateListMaxHeight(): void {\r\n const workspaceListRef = this.eRef.nativeElement.querySelector('#workspace-list');\r\n const { top } = workspaceListRef.getBoundingClientRect();\r\n\r\n this.height = window.innerHeight - top - 20 - (this.showFooterButton ? 64 : 0);\r\n this.changeDetectorRef.detectChanges();\r\n }\r\n\r\n private _scrollToCurrentItem(): void {\r\n const currentItem = this.listItems?.toArray()[this.currentItemIndex];\r\n if (currentItem) {\r\n currentItem.nativeElement.scrollIntoView({ behavior: 'smooth', block: 'nearest' });\r\n }\r\n }\r\n}\r\n","<div\r\n class=\"workspace-switch\"\r\n [ngClass]=\"{ 'workspace-switch--disabled': disabled }\"\r\n (blur)=\"buttonOnBlur()\"\r\n>\r\n <div\r\n class=\"button\"\r\n (click)=\"open = !open\"\r\n >\r\n <div class=\"item\">\r\n <span class=\"title\">{{ workspaces[selectedItemIndex].title }}</span>\r\n <span class=\"subtitle\">{{ workspaces[selectedItemIndex].subtitle }}</span>\r\n </div>\r\n <div class=\"icons\">\r\n <span class=\"fas fa-chevron-up\"></span>\r\n <span class=\"fas fa-chevron-down\"></span>\r\n </div>\r\n </div>\r\n @if (!disabled && open) {\r\n <div class=\"drop-panel\">\r\n <ul\r\n id=\"workspace-list\"\r\n class=\"workspace-list\"\r\n [ngStyle]=\"{ 'max-height': height + 'px' }\"\r\n >\r\n @for (workspace of workspaces; track workspace.id; let i = $index) {\r\n <li\r\n #listItem\r\n class=\"workspace\"\r\n [ngClass]=\"{\r\n 'workspace--focused': i === currentItemIndex && !workspace.disabled,\r\n 'workspace--disabled': workspace.disabled,\r\n }\"\r\n (click)=\"onSelectItem(workspace)\"\r\n >\r\n <div class=\"item\">\r\n <span class=\"title\">{{ workspace.title }}</span>\r\n <span class=\"subtitle\">{{ workspace.subtitle }}</span>\r\n </div>\r\n @if (i === selectedItemIndex) {\r\n <span class=\"active-icon fas fa-check\"></span>\r\n }\r\n </li>\r\n }\r\n </ul>\r\n @if (showFooterButton) {\r\n <div class=\"footer\">\r\n <div\r\n class=\"footer__button\"\r\n (click)=\"onFooterButtonClick()\"\r\n >\r\n <span class=\"footer__button__icon fas fa-plus\"></span>\r\n <span class=\"footer__button__title\">{{ footerButtonLabel }}</span>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n }\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\n\r\nimport { WorkspaceSwitchComponent } from './workspace-switch.component';\r\n\r\n/**\r\n * @deprecated Será removido na v20. Importe diretamente o standalone `WorkspaceSwitchComponent` (de\r\n * `@seniorsistemas/angular-components/workspace-switch`) no lugar deste módulo.\r\n *\r\n * Migração automática (também executada pelo `ng update` na v20):\r\n * `ng generate @seniorsistemas/angular-components:migrate-modules-to-standalone`\r\n */\r\n@NgModule({\r\n imports: [WorkspaceSwitchComponent],\r\n exports: [WorkspaceSwitchComponent],\r\n})\r\nexport class WorkspaceSwitchModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -18,10 +18,10 @@ Componente de agrupamento de campos de formulário com legenda, ícone e suporte
18
18
  ## Instalação
19
19
 
20
20
  ```typescript
21
- import { FieldsetModule } from '@seniorsistemas/angular-components/fieldset';
21
+ import { FieldsetComponent } from '@seniorsistemas/angular-components/fieldset';
22
22
  import { TemplateDirective } from '@seniorsistemas/angular-components/template';
23
23
 
24
- @Component({ standalone: true, imports: [FieldsetModule, TemplateDirective] })
24
+ @Component({ standalone: true, imports: [FieldsetComponent, TemplateDirective] })
25
25
  export class MeuComponent {}
26
26
  ```
27
27
 
@@ -1,5 +1,12 @@
1
1
  import * as i0 from "@angular/core";
2
2
  import * as i1 from "./fieldset.component";
3
+ /**
4
+ * @deprecated Será removido na v20. Importe diretamente o standalone `FieldsetComponent` (de
5
+ * `@seniorsistemas/angular-components/fieldset`) no lugar deste módulo.
6
+ *
7
+ * Migração automática (também executada pelo `ng update` na v20):
8
+ * `ng generate @seniorsistemas/angular-components:migrate-modules-to-standalone`
9
+ */
3
10
  export declare class FieldsetModule {
4
11
  static ɵfac: i0.ɵɵFactoryDeclaration<FieldsetModule, never>;
5
12
  static ɵmod: i0.ɵɵNgModuleDeclaration<FieldsetModule, never, [typeof i1.FieldsetComponent], [typeof i1.FieldsetComponent]>;
@@ -18,9 +18,9 @@ Componente de upload de arquivos com suporte a seleção múltipla, validação
18
18
  ## Instalação
19
19
 
20
20
  ```typescript
21
- import { FilePickerModule } from '@seniorsistemas/angular-components/file-picker';
21
+ import { FilePickerComponent } from '@seniorsistemas/angular-components/file-picker';
22
22
 
23
- @Component({ standalone: true, imports: [FilePickerModule] })
23
+ @Component({ standalone: true, imports: [FilePickerComponent] })
24
24
  export class MeuComponent {}
25
25
  ```
26
26
 
@@ -1,5 +1,12 @@
1
1
  import * as i0 from "@angular/core";
2
2
  import * as i1 from "./file-picker.component";
3
+ /**
4
+ * @deprecated Será removido na v20. Importe diretamente o standalone `FilePickerComponent` (de
5
+ * `@seniorsistemas/angular-components/file-picker`) no lugar deste módulo.
6
+ *
7
+ * Migração automática (também executada pelo `ng update` na v20):
8
+ * `ng generate @seniorsistemas/angular-components:migrate-modules-to-standalone`
9
+ */
3
10
  export declare class FilePickerModule {
4
11
  static ɵfac: i0.ɵɵFactoryDeclaration<FilePickerModule, never>;
5
12
  static ɵmod: i0.ɵɵNgModuleDeclaration<FilePickerModule, never, [typeof i1.FilePickerComponent], [typeof i1.FilePickerComponent]>;
@@ -15,7 +15,7 @@ Substitua as importações de `file-upload` por `file-picker`:
15
15
  import { FileUploadModule } from '@seniorsistemas/angular-components/file-upload';
16
16
 
17
17
  // Depois (correto)
18
- import { FilePickerModule } from '@seniorsistemas/angular-components/file-picker';
18
+ import { FilePickerComponent } from '@seniorsistemas/angular-components/file-picker';
19
19
  ```
20
20
 
21
21
  ```html
package/gantt/README.md CHANGED
@@ -18,9 +18,9 @@ Componente de diagrama de Gantt para visualização e gerenciamento de tarefas e
18
18
  ## Instalação
19
19
 
20
20
  ```typescript
21
- import { GanttModule } from '@seniorsistemas/angular-components/gantt';
21
+ import { GanttComponent } from '@seniorsistemas/angular-components/gantt';
22
22
 
23
- @Component({ standalone: true, imports: [GanttModule] })
23
+ @Component({ standalone: true, imports: [GanttComponent] })
24
24
  export class MeuComponent {}
25
25
  ```
26
26
 
@@ -1,5 +1,12 @@
1
1
  import * as i0 from "@angular/core";
2
2
  import * as i1 from "./gantt.component";
3
+ /**
4
+ * @deprecated Será removido na v20. Importe diretamente o standalone `GanttComponent` (de
5
+ * `@seniorsistemas/angular-components/gantt`) no lugar deste módulo.
6
+ *
7
+ * Migração automática (também executada pelo `ng update` na v20):
8
+ * `ng generate @seniorsistemas/angular-components:migrate-modules-to-standalone`
9
+ */
3
10
  export declare class GanttModule {
4
11
  static ɵfac: i0.ɵɵFactoryDeclaration<GanttModule, never>;
5
12
  static ɵmod: i0.ɵɵNgModuleDeclaration<GanttModule, never, [typeof i1.GanttComponent], [typeof i1.GanttComponent]>;
@@ -18,9 +18,12 @@ Componente de busca global com campo de input, dropdown de resultados animado, e
18
18
  ## Instalação
19
19
 
20
20
  ```typescript
21
- import { GlobalSearchModule } from '@seniorsistemas/angular-components/global-search';
21
+ import {
22
+ GlobalSearchComponent,
23
+ GlobalSearchDropdownItemComponent,
24
+ } from '@seniorsistemas/angular-components/global-search';
22
25
 
23
- @Component({ standalone: true, imports: [GlobalSearchModule] })
26
+ @Component({ standalone: true, imports: [GlobalSearchComponent, GlobalSearchDropdownItemComponent] })
24
27
  export class MeuComponent {}
25
28
  ```
26
29
 
@@ -6,6 +6,24 @@ import * as i4 from "@seniorsistemas/angular-components/loading-state";
6
6
  import * as i5 from "@seniorsistemas/angular-components/empty-state";
7
7
  import * as i6 from "./global-search.component";
8
8
  import * as i7 from "./components/dropdown/global-search-dropdown-item.component";
9
+ /**
10
+ * @deprecated Será removido na v20. Importe diretamente os standalones `GlobalSearchComponent` e
11
+ * `GlobalSearchDropdownItemComponent` (de `@seniorsistemas/angular-components/global-search`) no lugar deste
12
+ * módulo.
13
+ *
14
+ * Este módulo também reexportava `TooltipDirective` (`@seniorsistemas/angular-components/tooltip`, usado em
15
+ * templates por `[sTooltip]`), `ThumbnailComponent` (`@seniorsistemas/angular-components/thumbnail`, usado em
16
+ * templates por `<s-thumbnail>`), `ButtonComponent` (`@seniorsistemas/angular-components/button`, usado em
17
+ * templates por `<s-button>`), `LoadingStateComponent` (`@seniorsistemas/angular-components/loading-state`,
18
+ * usado em templates por `<s-loading-state>`), `LoadingStateDirective`
19
+ * (`@seniorsistemas/angular-components/loading-state`, usado em templates por `[sLoadingState]`),
20
+ * `EmptyStateComponent` (`@seniorsistemas/angular-components/empty-state`, usado em templates por
21
+ * `<s-empty-state>`) e `EmptyStateGoBackComponent` (`@seniorsistemas/angular-components/empty-state`, usado
22
+ * em templates por `<s-empty-state-go-back>`). Se o seu template usa algum deles, importe-o diretamente.
23
+ *
24
+ * Migração automática (também executada pelo `ng update` na v20):
25
+ * `ng generate @seniorsistemas/angular-components:migrate-modules-to-standalone`
26
+ */
9
27
  export declare class GlobalSearchModule {
10
28
  static ɵfac: i0.ɵɵFactoryDeclaration<GlobalSearchModule, never>;
11
29
  static ɵmod: i0.ɵɵNgModuleDeclaration<GlobalSearchModule, never, [typeof i1.TooltipModule, typeof i2.ThumbnailModule, typeof i3.ButtonModule, typeof i4.LoadingStateModule, typeof i5.EmptyStateModule, typeof i6.GlobalSearchComponent, typeof i7.GlobalSearchDropdownItemComponent], [typeof i6.GlobalSearchComponent, typeof i7.GlobalSearchDropdownItemComponent, typeof i1.TooltipModule, typeof i2.ThumbnailModule, typeof i3.ButtonModule, typeof i4.LoadingStateModule, typeof i5.EmptyStateModule]>;
@@ -18,12 +18,13 @@ Componente de menu em grade que exibe uma coleção de itens como cards clicáve
18
18
  ## Instalação
19
19
 
20
20
  ```typescript
21
- import { GridMenuModule } from '@seniorsistemas/angular-components/grid-menu';
21
+ import { GridMenuItemComponent, GridMenuComponent } from '@seniorsistemas/angular-components/grid-menu';
22
22
 
23
- @NgModule({
24
- imports: [GridMenuModule],
23
+ @Component({
24
+ standalone: true,
25
+ imports: [GridMenuItemComponent, GridMenuComponent],
25
26
  })
26
- export class MeuModule {}
27
+ export class MeuComponent {}
27
28
  ```
28
29
 
29
30
  ## Uso básico
@@ -1,6 +1,13 @@
1
1
  import * as i0 from "@angular/core";
2
2
  import * as i1 from "./components/grid-menu-item/grid-menu-item.component";
3
3
  import * as i2 from "./grid-menu.component";
4
+ /**
5
+ * @deprecated Será removido na v20. Importe diretamente os standalones `GridMenuItemComponent` e
6
+ * `GridMenuComponent` (de `@seniorsistemas/angular-components/grid-menu`) no lugar deste módulo.
7
+ *
8
+ * Migração automática (também executada pelo `ng update` na v20):
9
+ * `ng generate @seniorsistemas/angular-components:migrate-modules-to-standalone`
10
+ */
4
11
  export declare class GridMenuModule {
5
12
  static ɵfac: i0.ɵɵFactoryDeclaration<GridMenuModule, never>;
6
13
  static ɵmod: i0.ɵɵNgModuleDeclaration<GridMenuModule, never, [typeof i1.GridMenuItemComponent, typeof i2.GridMenuComponent], [typeof i1.GridMenuItemComponent, typeof i2.GridMenuComponent]>;
@@ -18,12 +18,13 @@ Diretiva que exibe um popover de ajuda ao clicar no elemento hospedeiro. Suporta
18
18
  ## Instalação
19
19
 
20
20
  ```typescript
21
- import { HelpPopoverModule } from '@seniorsistemas/angular-components/help-popover';
21
+ import { HelpPopoverDirective } from '@seniorsistemas/angular-components/help-popover';
22
22
 
23
- @NgModule({
24
- imports: [HelpPopoverModule],
23
+ @Component({
24
+ standalone: true,
25
+ imports: [HelpPopoverDirective],
25
26
  })
26
- export class MeuModule {}
27
+ export class MeuComponent {}
27
28
  ```
28
29
 
29
30
  ## Uso básico
@@ -1,5 +1,12 @@
1
1
  import * as i0 from "@angular/core";
2
2
  import * as i1 from "./help-popover.directive";
3
+ /**
4
+ * @deprecated Será removido na v20. Importe diretamente o standalone `HelpPopoverDirective` (de
5
+ * `@seniorsistemas/angular-components/help-popover`) no lugar deste módulo.
6
+ *
7
+ * Migração automática (também executada pelo `ng update` na v20):
8
+ * `ng generate @seniorsistemas/angular-components:migrate-modules-to-standalone`
9
+ */
3
10
  export declare class HelpPopoverModule {
4
11
  static ɵfac: i0.ɵɵFactoryDeclaration<HelpPopoverModule, never>;
5
12
  static ɵmod: i0.ɵɵNgModuleDeclaration<HelpPopoverModule, never, [typeof i1.HelpPopoverDirective], [typeof i1.HelpPopoverDirective]>;
@@ -15,7 +15,7 @@ Substitua as importações do pacote antigo pelo novo:
15
15
  import { IAInsightModule } from '@seniorsistemas/angular-components/ia-insight';
16
16
 
17
17
  // Depois (recomendado)
18
- import { InsightsModule } from '@seniorsistemas/angular-components/insights';
18
+ import { InsightsComponent } from '@seniorsistemas/angular-components/insights';
19
19
  ```
20
20
 
21
21
  Substitua o seletor no template:
@@ -18,13 +18,14 @@ Componente de recorte de imagem baseado na biblioteca `cropperjs`. Exibe um dial
18
18
  ## Instalação
19
19
 
20
20
  ```typescript
21
- import { ImageCropperModule, ImageCropperService } from '@seniorsistemas/angular-components/image-cropper';
21
+ import { ImageCropperComponent } from '@seniorsistemas/angular-components/image-cropper';
22
+ import { HeaderComponent, FooterComponent } from '@seniorsistemas/angular-components/structure';
22
23
 
23
- @NgModule({
24
- imports: [ImageCropperModule],
25
- providers: [ImageCropperService],
24
+ @Component({
25
+ standalone: true,
26
+ imports: [ImageCropperComponent, HeaderComponent, FooterComponent],
26
27
  })
27
- export class MeuModule {}
28
+ export class MeuComponent {}
28
29
  ```
29
30
 
30
31
  ## Uso básico
@@ -1,6 +1,17 @@
1
1
  import * as i0 from "@angular/core";
2
2
  import * as i1 from "@seniorsistemas/angular-components/structure";
3
3
  import * as i2 from "./image-cropper.component";
4
+ /**
5
+ * @deprecated Será removido na v20. Importe diretamente o standalone `ImageCropperComponent` (de
6
+ * `@seniorsistemas/angular-components/image-cropper`) no lugar deste módulo.
7
+ *
8
+ * Este módulo também reexportava `HeaderComponent` (`@seniorsistemas/angular-components/structure`, usado em
9
+ * templates por `<s-header>`) e `FooterComponent` (`@seniorsistemas/angular-components/structure`, usado em
10
+ * templates por `<s-footer>`). Se o seu template usa algum deles, importe-o diretamente.
11
+ *
12
+ * Migração automática (também executada pelo `ng update` na v20):
13
+ * `ng generate @seniorsistemas/angular-components:migrate-modules-to-standalone`
14
+ */
4
15
  export declare class ImageCropperModule {
5
16
  static ɵfac: i0.ɵɵFactoryDeclaration<ImageCropperModule, never>;
6
17
  static ɵmod: i0.ɵɵNgModuleDeclaration<ImageCropperModule, never, [typeof i1.StructureModule, typeof i2.ImageCropperComponent], [typeof i2.ImageCropperComponent, typeof i1.StructureModule]>;
@@ -18,12 +18,13 @@ Diretiva de scroll infinito que detecta quando o usuário chega ao final de um e
18
18
  ## Instalação
19
19
 
20
20
  ```typescript
21
- import { InfiniteScrollModule } from '@seniorsistemas/angular-components/infinite-scroll';
21
+ import { InfiniteScrollDirective } from '@seniorsistemas/angular-components/infinite-scroll';
22
22
 
23
- @NgModule({
24
- imports: [InfiniteScrollModule],
23
+ @Component({
24
+ standalone: true,
25
+ imports: [InfiniteScrollDirective],
25
26
  })
26
- export class MeuModule {}
27
+ export class MeuComponent {}
27
28
  ```
28
29
 
29
30
  ## Uso básico
@@ -1,5 +1,12 @@
1
1
  import * as i0 from "@angular/core";
2
2
  import * as i1 from "./infinite-scroll.directive";
3
+ /**
4
+ * @deprecated Será removido na v20. Importe diretamente o standalone `InfiniteScrollDirective` (de
5
+ * `@seniorsistemas/angular-components/infinite-scroll`) no lugar deste módulo.
6
+ *
7
+ * Migração automática (também executada pelo `ng update` na v20):
8
+ * `ng generate @seniorsistemas/angular-components:migrate-modules-to-standalone`
9
+ */
3
10
  export declare class InfiniteScrollModule {
4
11
  static ɵfac: i0.ɵɵFactoryDeclaration<InfiniteScrollModule, never>;
5
12
  static ɵmod: i0.ɵɵNgModuleDeclaration<InfiniteScrollModule, never, [typeof i1.InfiniteScrollDirective], [typeof i1.InfiniteScrollDirective]>;
@@ -18,12 +18,13 @@ Diretiva estrutural que exibe um ícone de informação (ⓘ) ao lado do element
18
18
  ## Instalação
19
19
 
20
20
  ```typescript
21
- import { InfoSignModule } from '@seniorsistemas/angular-components/info-sign';
21
+ import { InfoSignDirective } from '@seniorsistemas/angular-components/info-sign';
22
22
 
23
- @NgModule({
24
- imports: [InfoSignModule],
23
+ @Component({
24
+ standalone: true,
25
+ imports: [InfoSignDirective],
25
26
  })
26
- export class MeuModule {}
27
+ export class MeuComponent {}
27
28
  ```
28
29
 
29
30
  ## Uso básico
@@ -1,5 +1,12 @@
1
1
  import * as i0 from "@angular/core";
2
2
  import * as i1 from "./info-sign.directive";
3
+ /**
4
+ * @deprecated Será removido na v20. Importe diretamente o standalone `InfoSignDirective` (de
5
+ * `@seniorsistemas/angular-components/info-sign`) no lugar deste módulo.
6
+ *
7
+ * Migração automática (também executada pelo `ng update` na v20):
8
+ * `ng generate @seniorsistemas/angular-components:migrate-modules-to-standalone`
9
+ */
3
10
  export declare class InfoSignModule {
4
11
  static ɵfac: i0.ɵɵFactoryDeclaration<InfoSignModule, never>;
5
12
  static ɵmod: i0.ɵɵNgModuleDeclaration<InfoSignModule, never, [typeof i1.InfoSignDirective], [typeof i1.InfoSignDirective]>;