@seniorsistemas/angular-components 19.3.0 → 19.3.2

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 (254) hide show
  1. package/breadcrumb/lib/dynamic-breadcrumb/dynamic-breadcrumb.component.d.ts +1 -2
  2. package/calendar-mask/lib/calendar-mask/calendar-mask.directive.d.ts +0 -1
  3. package/chips/lib/chips/chips/chips.component.d.ts +1 -2
  4. package/code-editor/lib/code-editor/code-editor.component.d.ts +0 -2
  5. package/code-editor/lib/code-editor/infra/utils/custom-translations/custom-translations.module.d.ts +1 -3
  6. package/common/lib/svg-factory/svg-factory.directive.d.ts +1 -2
  7. package/content-generator/lib/content-generator/content-generator.component.d.ts +1 -6
  8. package/content-generator/lib/services/IAssist/iassist.service.d.ts +0 -3
  9. package/country-phone-picker/lib/country-phone-picker/country-phone-picker.component.d.ts +0 -3
  10. package/country-phone-picker/lib/country-phone-picker/country-phone-picker.service.d.ts +0 -2
  11. package/currency/lib/currency.service.d.ts +0 -2
  12. package/custom-fields/lib/custom-fields/custom-fields.component.d.ts +3 -7
  13. package/custom-fields/lib/custom-fields/custom-fields.service.d.ts +0 -2
  14. package/dynamic-form/dynamic-form/components/lookup/lookup.component.d.ts +0 -2
  15. package/dynamic-form/dynamic-form/form-field/fields/autocomplete/autocomplete-field.component.d.ts +1 -2
  16. package/dynamic-form/dynamic-form/form-field/fields/bignumber/bignumber-field.component.d.ts +1 -3
  17. package/dynamic-form/dynamic-form/form-field/fields/calendar/calendar-field.component.d.ts +1 -2
  18. package/dynamic-form/dynamic-form/form-field/fields/chips/chips-field.component.d.ts +1 -3
  19. package/dynamic-form/dynamic-form/form-field/fields/country-phone-picker/country-phone-picker-field.component.d.ts +1 -2
  20. package/dynamic-form/dynamic-form/form-field/fields/currency/currency-field.component.d.ts +1 -3
  21. package/dynamic-form/dynamic-form/form-field/fields/file-picker/file-picker-field.component.d.ts +1 -2
  22. package/dynamic-form/dynamic-form/form-field/fields/number/number-field.component.d.ts +1 -3
  23. package/dynamic-form/dynamic-form/form-field/fields/password/password-field.component.d.ts +1 -2
  24. package/dynamic-form/dynamic-form/form-field/fields/text/text-field.component.d.ts +1 -2
  25. package/dynamic-form/dynamic-form/form-field/fields/text-area/text-area-field.component.d.ts +1 -2
  26. package/empty-state/lib/empty-state/go-back/go-back.component.d.ts +0 -2
  27. package/esm2022/badge/lib/badge/badge.component.mjs +3 -3
  28. package/esm2022/breadcrumb/lib/dynamic-breadcrumb/dynamic-breadcrumb.component.mjs +10 -13
  29. package/esm2022/calendar-mask/lib/calendar-mask/calendar-mask.directive.mjs +7 -11
  30. package/esm2022/chips/lib/chips/chips/chips.component.mjs +5 -8
  31. package/esm2022/code-editor/lib/code-editor/code-editor.component.mjs +6 -9
  32. package/esm2022/code-editor/lib/code-editor/infra/utils/custom-translations/custom-translations.module.mjs +8 -13
  33. package/esm2022/common/lib/svg-factory/svg-factory.directive.mjs +6 -10
  34. package/esm2022/content-generator/lib/content-generator/content-generator.component.mjs +24 -30
  35. package/esm2022/content-generator/lib/services/IAssist/iassist.service.mjs +9 -12
  36. package/esm2022/country-phone-picker/lib/country-phone-picker/country-phone-picker.component.mjs +15 -23
  37. package/esm2022/country-phone-picker/lib/country-phone-picker/country-phone-picker.service.mjs +6 -9
  38. package/esm2022/currency/lib/currency.service.mjs +6 -9
  39. package/esm2022/custom-fields/lib/custom-fields/custom-fields.component.mjs +17 -25
  40. package/esm2022/custom-fields/lib/custom-fields/custom-fields.service.mjs +6 -9
  41. package/esm2022/dynamic-form/dynamic-form/components/lookup/lookup.component.mjs +22 -28
  42. package/esm2022/dynamic-form/dynamic-form/form-field/fields/autocomplete/autocomplete-field.component.mjs +6 -10
  43. package/esm2022/dynamic-form/dynamic-form/form-field/fields/bignumber/bignumber-field.component.mjs +12 -17
  44. package/esm2022/dynamic-form/dynamic-form/form-field/fields/calendar/calendar-field.component.mjs +5 -8
  45. package/esm2022/dynamic-form/dynamic-form/form-field/fields/chips/chips-field.component.mjs +12 -17
  46. package/esm2022/dynamic-form/dynamic-form/form-field/fields/country-phone-picker/country-phone-picker-field.component.mjs +5 -8
  47. package/esm2022/dynamic-form/dynamic-form/form-field/fields/currency/currency-field.component.mjs +13 -19
  48. package/esm2022/dynamic-form/dynamic-form/form-field/fields/file-picker/file-picker-field.component.mjs +6 -10
  49. package/esm2022/dynamic-form/dynamic-form/form-field/fields/number/number-field.component.mjs +14 -19
  50. package/esm2022/dynamic-form/dynamic-form/form-field/fields/password/password-field.component.mjs +5 -8
  51. package/esm2022/dynamic-form/dynamic-form/form-field/fields/text/text-field.component.mjs +5 -8
  52. package/esm2022/dynamic-form/dynamic-form/form-field/fields/text-area/text-area-field.component.mjs +5 -8
  53. package/esm2022/empty-state/lib/empty-state/go-back/go-back.component.mjs +8 -11
  54. package/esm2022/file-picker/lib/file-picker/file-picker.component.mjs +17 -21
  55. package/esm2022/gantt/lib/gantt/components/gantt/gantt.mjs +6 -2
  56. package/esm2022/gantt/lib/gantt/gantt.component.mjs +8 -4
  57. package/esm2022/global-search/lib/global-search/global-search.component.mjs +5 -8
  58. package/esm2022/image-cropper/lib/image-cropper/image-cropper.service.mjs +7 -12
  59. package/esm2022/infinite-scroll/lib/infinite-scroll/infinite-scroll.directive.mjs +5 -8
  60. package/esm2022/info-sign/lib/info-sign/info-sign.directive.mjs +6 -10
  61. package/esm2022/inline-edit/lib/inline-edit/components/fields/inline-edit-calendar/inline-edit-calendar.component.mjs +9 -12
  62. package/esm2022/inline-edit/lib/inline-edit/components/fields/inline-edit-number/inline-edit-number.component.mjs +14 -17
  63. package/esm2022/inline-edit/lib/inline-edit/components/inline-edit-item/inline-edit-item.component.mjs +12 -15
  64. package/esm2022/insights/lib/insights/components/insights-card/insights-card.component.mjs +15 -19
  65. package/esm2022/interactive-content/lib/interactive-content/interactive-content.directive.mjs +5 -8
  66. package/esm2022/kanban/lib/kanban/components/kanban-column/kanban-column.component.mjs +10 -13
  67. package/esm2022/kanban/lib/kanban/components/kanban-item/kanban-item.component.mjs +10 -13
  68. package/esm2022/kanban/lib/kanban/kanban.component.mjs +23 -17
  69. package/esm2022/loading-state/lib/loading-state/loading-state.directive.mjs +10 -16
  70. package/esm2022/locale/lib/locale/locale.service.mjs +8 -12
  71. package/esm2022/locale/lib/locale/pipes/localized-bignumber.pipe.mjs +6 -9
  72. package/esm2022/locale/lib/locale/pipes/localized-currency.pipe.mjs +6 -9
  73. package/esm2022/locale/lib/locale/pipes/localized-date.pipe.mjs +6 -9
  74. package/esm2022/locale/lib/locale/pipes/localized-number.pipe.mjs +6 -9
  75. package/esm2022/locale/lib/locale/pipes/localized-time.pipe.mjs +6 -9
  76. package/esm2022/localized-number-input/lib/localized-number-input/localized-number-input.directive.mjs +6 -9
  77. package/esm2022/navigation-button/lib/navigation-button/navigation-button.component.mjs +5 -8
  78. package/esm2022/numeric/lib/numeric.pipe.mjs +8 -12
  79. package/esm2022/numeric/lib/numeric.service.mjs +6 -9
  80. package/esm2022/password-strength/lib/password-strength/password-strength.component.mjs +8 -11
  81. package/esm2022/password-strength/lib/password-strength/password-strength.directive.mjs +10 -16
  82. package/esm2022/picklist/lib/picklist/picklist.component.mjs +5 -8
  83. package/esm2022/profile-picture-picker/lib/profile-picture-picker/profile-picture-picker.component.mjs +15 -19
  84. package/esm2022/progressbar/lib/progressbar/components/progressbar-determinate/progressbar-determinate.component.mjs +8 -11
  85. package/esm2022/progressbar/lib/progressbar/progressbar.module.mjs +5 -4
  86. package/esm2022/select-button/lib/select-button/select-button.component.mjs +3 -3
  87. package/esm2022/shared/lib/accessibility/paginator-accessibility.directive.mjs +8 -13
  88. package/esm2022/shared/lib/accessibility/table-checkbox-accessibility.directive.mjs +5 -8
  89. package/esm2022/slide-in-bar/lib/slide-in-bar/slide-in-bar.component.mjs +9 -12
  90. package/esm2022/speech-recognition/lib/speech-recognition/speech-recognition/speech-recognition.component.mjs +12 -16
  91. package/esm2022/speech-recognition/lib/speech-recognition/speech-recognition.service.mjs +12 -16
  92. package/esm2022/speech-recognition/lib/speech-recognition/text-to-speech.service.mjs +8 -10
  93. package/esm2022/split-button/lib/split-button/split-button.component.mjs +5 -8
  94. package/esm2022/table/lib/table/row-toggler/row-toggler.directive.mjs +7 -7
  95. package/esm2022/table/lib/table/table-column/table-columns.component.mjs +20 -29
  96. package/esm2022/table/lib/table/table-paging/table-paging.component.mjs +9 -16
  97. package/esm2022/table-header/lib/table-header/table-header-checkbox.component.mjs +11 -13
  98. package/esm2022/text-area/lib/text-area/text-area.component.mjs +5 -8
  99. package/esm2022/thumbnail/lib/thumbnail/thumbnail.component.mjs +8 -11
  100. package/esm2022/tiered-menu/lib/tiered-menu/components/tiered-menu/tiered-menu.component.mjs +16 -24
  101. package/esm2022/tiered-menu/lib/tiered-menu/components/tiered-menu-item/tiered-menu-item.component.mjs +8 -11
  102. package/esm2022/tiered-menu/lib/tiered-menu/components/tiered-menu-nested/tiered-menu-nested.component.mjs +12 -16
  103. package/esm2022/tiered-menu/lib/tiered-menu/tiered-menu.directive.mjs +13 -25
  104. package/esm2022/toast/lib/toast/toast.service.mjs +7 -12
  105. package/esm2022/tree/lib/tree/components/tree-node-item/tree-node-item.component.mjs +10 -14
  106. package/esm2022/workspace-switch/lib/workspace-switch/workspace-switch.component.mjs +6 -10
  107. package/fesm2022/seniorsistemas-angular-components-badge.mjs +2 -2
  108. package/fesm2022/seniorsistemas-angular-components-badge.mjs.map +1 -1
  109. package/fesm2022/seniorsistemas-angular-components-breadcrumb.mjs +10 -12
  110. package/fesm2022/seniorsistemas-angular-components-breadcrumb.mjs.map +1 -1
  111. package/fesm2022/seniorsistemas-angular-components-calendar-mask.mjs +6 -10
  112. package/fesm2022/seniorsistemas-angular-components-calendar-mask.mjs.map +1 -1
  113. package/fesm2022/seniorsistemas-angular-components-chips.mjs +4 -7
  114. package/fesm2022/seniorsistemas-angular-components-chips.mjs.map +1 -1
  115. package/fesm2022/seniorsistemas-angular-components-code-editor.mjs +10 -18
  116. package/fesm2022/seniorsistemas-angular-components-code-editor.mjs.map +1 -1
  117. package/fesm2022/seniorsistemas-angular-components-common.mjs +5 -9
  118. package/fesm2022/seniorsistemas-angular-components-common.mjs.map +1 -1
  119. package/fesm2022/seniorsistemas-angular-components-content-generator.mjs +29 -40
  120. package/fesm2022/seniorsistemas-angular-components-content-generator.mjs.map +1 -1
  121. package/fesm2022/seniorsistemas-angular-components-country-phone-picker.mjs +16 -28
  122. package/fesm2022/seniorsistemas-angular-components-country-phone-picker.mjs.map +1 -1
  123. package/fesm2022/seniorsistemas-angular-components-currency.mjs +5 -8
  124. package/fesm2022/seniorsistemas-angular-components-currency.mjs.map +1 -1
  125. package/fesm2022/seniorsistemas-angular-components-custom-fields.mjs +45 -59
  126. package/fesm2022/seniorsistemas-angular-components-custom-fields.mjs.map +1 -1
  127. package/fesm2022/seniorsistemas-angular-components-dynamic-form.mjs +108 -157
  128. package/fesm2022/seniorsistemas-angular-components-dynamic-form.mjs.map +1 -1
  129. package/fesm2022/seniorsistemas-angular-components-empty-state.mjs +4 -8
  130. package/fesm2022/seniorsistemas-angular-components-empty-state.mjs.map +1 -1
  131. package/fesm2022/seniorsistemas-angular-components-file-picker.mjs +17 -22
  132. package/fesm2022/seniorsistemas-angular-components-file-picker.mjs.map +1 -1
  133. package/fesm2022/seniorsistemas-angular-components-gantt.mjs +12 -4
  134. package/fesm2022/seniorsistemas-angular-components-gantt.mjs.map +1 -1
  135. package/fesm2022/seniorsistemas-angular-components-global-search.mjs +4 -7
  136. package/fesm2022/seniorsistemas-angular-components-global-search.mjs.map +1 -1
  137. package/fesm2022/seniorsistemas-angular-components-image-cropper.mjs +6 -11
  138. package/fesm2022/seniorsistemas-angular-components-image-cropper.mjs.map +1 -1
  139. package/fesm2022/seniorsistemas-angular-components-infinite-scroll.mjs +4 -7
  140. package/fesm2022/seniorsistemas-angular-components-infinite-scroll.mjs.map +1 -1
  141. package/fesm2022/seniorsistemas-angular-components-info-sign.mjs +5 -9
  142. package/fesm2022/seniorsistemas-angular-components-info-sign.mjs.map +1 -1
  143. package/fesm2022/seniorsistemas-angular-components-inline-edit.mjs +29 -38
  144. package/fesm2022/seniorsistemas-angular-components-inline-edit.mjs.map +1 -1
  145. package/fesm2022/seniorsistemas-angular-components-insights.mjs +17 -22
  146. package/fesm2022/seniorsistemas-angular-components-insights.mjs.map +1 -1
  147. package/fesm2022/seniorsistemas-angular-components-interactive-content.mjs +4 -7
  148. package/fesm2022/seniorsistemas-angular-components-interactive-content.mjs.map +1 -1
  149. package/fesm2022/seniorsistemas-angular-components-kanban.mjs +30 -30
  150. package/fesm2022/seniorsistemas-angular-components-kanban.mjs.map +1 -1
  151. package/fesm2022/seniorsistemas-angular-components-loading-state.mjs +7 -15
  152. package/fesm2022/seniorsistemas-angular-components-loading-state.mjs.map +1 -1
  153. package/fesm2022/seniorsistemas-angular-components-locale.mjs +22 -41
  154. package/fesm2022/seniorsistemas-angular-components-locale.mjs.map +1 -1
  155. package/fesm2022/seniorsistemas-angular-components-localized-number-input.mjs +5 -8
  156. package/fesm2022/seniorsistemas-angular-components-localized-number-input.mjs.map +1 -1
  157. package/fesm2022/seniorsistemas-angular-components-navigation-button.mjs +4 -7
  158. package/fesm2022/seniorsistemas-angular-components-navigation-button.mjs.map +1 -1
  159. package/fesm2022/seniorsistemas-angular-components-numeric.mjs +9 -16
  160. package/fesm2022/seniorsistemas-angular-components-numeric.mjs.map +1 -1
  161. package/fesm2022/seniorsistemas-angular-components-password-strength.mjs +13 -24
  162. package/fesm2022/seniorsistemas-angular-components-password-strength.mjs.map +1 -1
  163. package/fesm2022/seniorsistemas-angular-components-picklist.mjs +4 -7
  164. package/fesm2022/seniorsistemas-angular-components-picklist.mjs.map +1 -1
  165. package/fesm2022/seniorsistemas-angular-components-profile-picture-picker.mjs +14 -21
  166. package/fesm2022/seniorsistemas-angular-components-profile-picture-picker.mjs.map +1 -1
  167. package/fesm2022/seniorsistemas-angular-components-progressbar.mjs +11 -14
  168. package/fesm2022/seniorsistemas-angular-components-progressbar.mjs.map +1 -1
  169. package/fesm2022/seniorsistemas-angular-components-select-button.mjs +2 -2
  170. package/fesm2022/seniorsistemas-angular-components-select-button.mjs.map +1 -1
  171. package/fesm2022/seniorsistemas-angular-components-shared.mjs +10 -18
  172. package/fesm2022/seniorsistemas-angular-components-shared.mjs.map +1 -1
  173. package/fesm2022/seniorsistemas-angular-components-slide-in-bar.mjs +7 -10
  174. package/fesm2022/seniorsistemas-angular-components-slide-in-bar.mjs.map +1 -1
  175. package/fesm2022/seniorsistemas-angular-components-speech-recognition.mjs +23 -34
  176. package/fesm2022/seniorsistemas-angular-components-speech-recognition.mjs.map +1 -1
  177. package/fesm2022/seniorsistemas-angular-components-split-button.mjs +4 -7
  178. package/fesm2022/seniorsistemas-angular-components-split-button.mjs.map +1 -1
  179. package/fesm2022/seniorsistemas-angular-components-table-header.mjs +10 -12
  180. package/fesm2022/seniorsistemas-angular-components-table-header.mjs.map +1 -1
  181. package/fesm2022/seniorsistemas-angular-components-table.mjs +30 -47
  182. package/fesm2022/seniorsistemas-angular-components-table.mjs.map +1 -1
  183. package/fesm2022/seniorsistemas-angular-components-text-area.mjs +4 -7
  184. package/fesm2022/seniorsistemas-angular-components-text-area.mjs.map +1 -1
  185. package/fesm2022/seniorsistemas-angular-components-thumbnail.mjs +6 -9
  186. package/fesm2022/seniorsistemas-angular-components-thumbnail.mjs.map +1 -1
  187. package/fesm2022/seniorsistemas-angular-components-tiered-menu.mjs +30 -55
  188. package/fesm2022/seniorsistemas-angular-components-tiered-menu.mjs.map +1 -1
  189. package/fesm2022/seniorsistemas-angular-components-toast.mjs +6 -11
  190. package/fesm2022/seniorsistemas-angular-components-toast.mjs.map +1 -1
  191. package/fesm2022/seniorsistemas-angular-components-tree.mjs +9 -14
  192. package/fesm2022/seniorsistemas-angular-components-tree.mjs.map +1 -1
  193. package/fesm2022/seniorsistemas-angular-components-workspace-switch.mjs +5 -9
  194. package/fesm2022/seniorsistemas-angular-components-workspace-switch.mjs.map +1 -1
  195. package/file-picker/lib/file-picker/file-picker.component.d.ts +0 -4
  196. package/file-upload/README.md +9 -37
  197. package/gantt/lib/gantt/gantt.component.d.ts +1 -0
  198. package/global-search/lib/global-search/global-search.component.d.ts +1 -2
  199. package/ia-insight/README.md +17 -0
  200. package/image-cropper/lib/image-cropper/image-cropper.service.d.ts +1 -2
  201. package/infinite-scroll/lib/infinite-scroll/infinite-scroll.directive.d.ts +1 -2
  202. package/info-sign/lib/info-sign/info-sign.directive.d.ts +1 -2
  203. package/inline-edit/lib/inline-edit/components/fields/inline-edit-calendar/inline-edit-calendar.component.d.ts +1 -2
  204. package/inline-edit/lib/inline-edit/components/fields/inline-edit-number/inline-edit-number.component.d.ts +0 -2
  205. package/inline-edit/lib/inline-edit/components/inline-edit-item/inline-edit-item.component.d.ts +0 -2
  206. package/insights/lib/insights/components/insights-card/insights-card.component.d.ts +0 -4
  207. package/interactive-content/lib/interactive-content/interactive-content.directive.d.ts +1 -2
  208. package/kanban/lib/kanban/components/kanban-column/kanban-column.component.d.ts +0 -2
  209. package/kanban/lib/kanban/components/kanban-item/kanban-item.component.d.ts +0 -2
  210. package/kanban/lib/kanban/kanban.component.d.ts +2 -2
  211. package/loading-state/lib/loading-state/loading-state.directive.d.ts +1 -2
  212. package/locale/lib/locale/locale.service.d.ts +0 -3
  213. package/locale/lib/locale/pipes/localized-bignumber.pipe.d.ts +0 -2
  214. package/locale/lib/locale/pipes/localized-currency.pipe.d.ts +0 -2
  215. package/locale/lib/locale/pipes/localized-date.pipe.d.ts +0 -2
  216. package/locale/lib/locale/pipes/localized-number.pipe.d.ts +0 -2
  217. package/locale/lib/locale/pipes/localized-time.pipe.d.ts +0 -2
  218. package/localized-number-input/lib/localized-number-input/localized-number-input.directive.d.ts +0 -2
  219. package/navigation-button/lib/navigation-button/navigation-button.component.d.ts +1 -2
  220. package/numeric/lib/numeric.pipe.d.ts +0 -3
  221. package/numeric/lib/numeric.service.d.ts +0 -2
  222. package/package.json +12 -12
  223. package/password-strength/lib/password-strength/password-strength.component.d.ts +0 -2
  224. package/password-strength/lib/password-strength/password-strength.directive.d.ts +1 -2
  225. package/picklist/lib/picklist/picklist.component.d.ts +1 -2
  226. package/product-header/README.md +17 -0
  227. package/profile-picture-picker/lib/profile-picture-picker/profile-picture-picker.component.d.ts +0 -4
  228. package/progressbar/lib/progressbar/components/progressbar-determinate/progressbar-determinate.component.d.ts +0 -2
  229. package/progressbar/lib/progressbar/progressbar.module.d.ts +2 -1
  230. package/shared/lib/accessibility/paginator-accessibility.directive.d.ts +1 -3
  231. package/shared/lib/accessibility/table-checkbox-accessibility.directive.d.ts +1 -2
  232. package/slide-in-bar/lib/slide-in-bar/slide-in-bar.component.d.ts +0 -2
  233. package/speech-recognition/lib/speech-recognition/speech-recognition/speech-recognition.component.d.ts +0 -4
  234. package/speech-recognition/lib/speech-recognition/speech-recognition.service.d.ts +1 -5
  235. package/speech-recognition/lib/speech-recognition/text-to-speech.service.d.ts +1 -3
  236. package/split-button/lib/split-button/split-button.component.d.ts +1 -2
  237. package/table/lib/table/row-toggler/row-toggler.directive.d.ts +1 -1
  238. package/table/lib/table/table-column/table-columns.component.d.ts +2 -6
  239. package/table/lib/table/table-paging/table-paging.component.d.ts +0 -3
  240. package/table-header/lib/table-header/table-header-checkbox.component.d.ts +1 -1
  241. package/text-area/lib/text-area/text-area.component.d.ts +1 -2
  242. package/text-area-ia/README.md +17 -0
  243. package/thumbnail/lib/thumbnail/thumbnail.component.d.ts +0 -2
  244. package/tiered-menu/lib/tiered-menu/components/tiered-menu/tiered-menu.component.d.ts +1 -3
  245. package/tiered-menu/lib/tiered-menu/components/tiered-menu-item/tiered-menu-item.component.d.ts +0 -2
  246. package/tiered-menu/lib/tiered-menu/components/tiered-menu-nested/tiered-menu-nested.component.d.ts +0 -2
  247. package/tiered-menu/lib/tiered-menu/tiered-menu.directive.d.ts +1 -5
  248. package/toast/lib/toast/toast.service.d.ts +0 -2
  249. package/tree/lib/tree/components/tree-node-item/tree-node-item.component.d.ts +1 -3
  250. package/workspace-switch/lib/workspace-switch/workspace-switch.component.d.ts +1 -2
  251. package/confirm-dialog/README.md +0 -226
  252. package/numeric-mask/README.md +0 -395
  253. package/pin-code-field/README.md +0 -366
  254. package/spotlight/README.md +0 -311
@@ -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';\nimport { ChangeDetectorRef, Component, ElementRef, EventEmitter, Input, Output, ViewChild, input } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { TranslateService } from '@ngx-translate/core';\nimport { InternalTreeNodeItem, TreeNodeEdit } from '../../Models/tree.models';\n\n@Component({\n selector: 's-tree-node-item',\n templateUrl: './tree-node-item.component.html',\n styleUrls: ['./tree-node-item.component.scss'],\n animations: [\n trigger('fadeExpand', [\n transition(':enter', [\n style({ height: '0px', opacity: 0, overflow: 'hidden' }),\n animate('200ms ease-out', style({ height: '*', opacity: 1 })),\n ]),\n transition(':leave', [animate('150ms ease-in', style({ height: '0px', opacity: 0 }))]),\n ]),\n trigger('childrenAnimation', [\n transition(':enter', [\n query(\n ':enter',\n [\n style({ opacity: 0, transform: 'translateY(-10px)' }),\n stagger(60, [animate('200ms ease-out', style({ opacity: 1, transform: 'translateY(0)' }))]),\n ],\n { optional: true },\n ),\n ]),\n ]),\n ],\n})\nexport class TreeNodeItemComponent {\n readonly ariaLevel = input(0);\n readonly showCheckbox = input(false);\n @Input() treeNodeItem!: InternalTreeNodeItem;\n @Output() treeNodeItemClicked = new EventEmitter<{ item: InternalTreeNodeItem; event: Event }>();\n @Output() treeNodeEdit = new EventEmitter<TreeNodeEdit>();\n @Output() nodeExpanded = new EventEmitter<InternalTreeNodeItem>();\n @Output() nodeCollapsed = new EventEmitter<InternalTreeNodeItem>();\n\n @ViewChild('input', { read: ElementRef }) input!: ElementRef<HTMLInputElement>;\n\n constructor(\n private readonly cdr: ChangeDetectorRef,\n private readonly translateService: TranslateService,\n ) {}\n\n get hasChildren(): boolean {\n return !!(this.treeNodeItem?.children && this.treeNodeItem.children.length > 0);\n }\n\n get editable() {\n return this.treeNodeItem?.editable || false;\n }\n\n get ariaLabel() {\n return `${this.translateService.instant('platform.angular_components.select')} ${this.treeNodeItem.label}`;\n }\n\n expandNode() {\n if (this.hasChildren && !this.treeNodeItem.isExpanded) {\n this.toggleExpanded(this.treeNodeItem);\n }\n }\n\n collapseNode() {\n if (this.hasChildren && this.treeNodeItem.isExpanded) {\n this.toggleExpanded(this.treeNodeItem);\n }\n }\n\n onCheckboxEnter(node: InternalTreeNodeItem) {\n const newState = node.checked === true ? false : true;\n node.checked = newState;\n this.treeNodeItemClicked.emit({ item: node, event: new KeyboardEvent('keydown', { key: 'Enter' }) });\n }\n\n handleTreeNodeItemClick(event: Event, treeNodeItem?: InternalTreeNodeItem) {\n const item = treeNodeItem || this.treeNodeItem;\n this.treeNodeItemClicked.emit({ item, event });\n }\n\n handleTreeNodeItemClicked({ event, item }: { event: Event; item: InternalTreeNodeItem }) {\n if (item.isEditing) {\n return;\n }\n this.handleTreeNodeItemClick(event, item);\n }\n\n toggleExpanded(treeNodeItem: InternalTreeNodeItem) {\n treeNodeItem.isExpanded = !treeNodeItem.isExpanded;\n if (treeNodeItem.isExpanded) {\n this.nodeExpanded.emit(treeNodeItem);\n } else {\n this.nodeCollapsed.emit(treeNodeItem);\n }\n }\n\n toggleEditing($event: Event) {\n $event.stopPropagation();\n this.treeNodeItem.isEditing = !this.treeNodeItem.isEditing;\n this.cdr.detectChanges();\n if (this.treeNodeItem.isEditing) {\n this.treeNodeItem.editNewValue = this.treeNodeItem.label;\n const input = this.input?.nativeElement;\n input?.focus();\n }\n }\n\n cancelEdit($event: Event) {\n $event.stopPropagation();\n this.treeNodeItem.isEditing = false;\n this.treeNodeItem.editNewValue = '';\n this.treeNodeItem.editPreviousValue = '';\n this.cdr.detectChanges();\n }\n\n saveEdit($event: Event) {\n $event.stopPropagation();\n this.treeNodeItem.isEditing = false;\n if (!this.treeNodeItem.editNewValue) {\n return;\n }\n\n this.treeNodeItem.editPreviousValue = this.treeNodeItem.label;\n this.treeNodeItem.label = this.treeNodeItem.editNewValue;\n\n const revertAction = () => {\n this.treeNodeItem.label = this.treeNodeItem.editPreviousValue as string;\n this.treeNodeItem.isEditing = false;\n this.cdr.detectChanges();\n };\n this.treeNodeEdit.emit({\n revertAction,\n item: this.treeNodeItem,\n newValue: this.treeNodeItem.editNewValue,\n previousValue: this.treeNodeItem.editPreviousValue,\n });\n }\n\n treeNodeEditChildEvent(payload: TreeNodeEdit) {\n this.treeNodeEdit.emit(payload);\n }\n}\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 >\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 pInputText\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';\n\nimport { InternalTreeNodeItem, TreeNodeEdit, TreeNodeItem } from './Models/tree.models';\n\n/**\n * @description Componente de árvore hierárquica com suporte a seleção única ou múltipla,\n * checkboxes, noós expansíveis e edição inline de rótulos. Gerencia o estado interno\n * dos nós e emite eventos na seleção, expansão, colapso e edição.\n *\n * @example\n * ```html\n * <s-tree\n * [treeData]=\"nos\"\n * selectionMode=\"multiple\"\n * [showCheckbox]=\"true\"\n * (selectedChange)=\"onSelecaoMudou($event)\" />\n * ```\n *\n * @category Data\n */\n@Component({\n selector: 's-tree',\n templateUrl: './tree.component.html',\n styleUrls: ['./tree.component.scss'],\n})\nexport class TreeComponent implements OnChanges {\n /** @description Lista de nós raíz da árvore. @default [] */\n @Input()\n public treeData: TreeNodeItem[] = [];\n\n private _selected: TreeNodeItem[] = [];\n /** @description Nó(s) selecionado(s). Suporta array ou item único dependendo de `selectionMode`. @default [] */\n @Input()\n public get selected(): TreeNodeItem[] {\n return this._selected;\n }\n public set selected(value: TreeNodeItem[] | TreeNodeItem | undefined) {\n if (!value) {\n value = [];\n }\n if (!Array.isArray(value)) {\n value = [value];\n }\n this._selected = value;\n }\n\n /** @description Exibe indicador de carregamento nos nós. @default false */\n @Input()\n public loading = false;\n\n /** @description Modo de seleção: `'single'` ou `'multiple'`. @default 'single' */\n @Input()\n public selectionMode: 'single' | 'multiple' = 'single';\n\n /** @description Exibe checkboxes nos nós para seleção visual. @default false */\n @Input()\n public showCheckbox = false;\n\n /** @description Expão todos os nós inicialmente. @default false */\n @Input()\n public allExpanded = false;\n\n /** @description Emitido quando a seleção muda, com o(s) nó(s) selecionado(s). */\n @Output()\n public selectedChange: EventEmitter<TreeNodeItem[] | TreeNodeItem> = new EventEmitter();\n\n /** @description Emitido quando o usuário clica em um nó da árvore. */\n @Output()\n public treeNodeItemClicked: EventEmitter<TreeNodeItem> = new EventEmitter();\n\n /** @description Emitido após uma edição inline de rótulo de nó. */\n @Output()\n public treeNodeEdit: EventEmitter<TreeNodeEdit> = new EventEmitter();\n\n /** @description Emitido quando um nó é expandido pelo usuário. */\n @Output()\n public nodeExpanded: EventEmitter<TreeNodeItem> = new EventEmitter();\n\n /** @description Emitido quando um nó é colapsado pelo usuário. */\n @Output()\n public nodeCollapsed: EventEmitter<TreeNodeItem> = new EventEmitter();\n\n public ngOnChanges(changes: SimpleChanges): void {\n this.onChanges(changes);\n }\n\n public onTreeNodeItemClicked({ item }: { item: InternalTreeNodeItem }) {\n this.treeNodeItemClicked.emit(parseInternalTreeNodeItem(item));\n this.toggleChecked(item);\n }\n\n public onTreeNodeEdit(payload: TreeNodeEdit) {\n const { revertAction, item, newValue, previousValue } = payload;\n this.treeNodeEdit.emit({\n revertAction,\n item: parseInternalTreeNodeItem(item),\n newValue,\n previousValue,\n });\n }\n\n public onNodeExpanded(item: InternalTreeNodeItem) {\n this.nodeExpanded.emit(parseInternalTreeNodeItem(item));\n }\n\n public onNodeCollapsed(item: InternalTreeNodeItem) {\n this.nodeCollapsed.emit(parseInternalTreeNodeItem(item));\n }\n\n private toggleChecked(treeNodeItem: TreeNodeItem) {\n const elementCheckState = !treeNodeItem.checked;\n if (!this.multiple) {\n flattenTree(this.treeData).forEach((x) => (x.checked = false));\n this.selected = [treeNodeItem];\n }\n treeNodeItem.checked = elementCheckState;\n if (this.multiple) {\n this.checkTreeDataChildren(treeNodeItem);\n }\n this.setSelected();\n }\n\n private checkTreeDataChildren(selectedTreeNode: TreeNodeItem) {\n const parentChecked = selectedTreeNode.checked;\n if (selectedTreeNode.children) {\n selectedTreeNode.children.forEach((item) => {\n const childrens = flattenTree(item.children || []);\n item.checked = parentChecked;\n childrens.forEach((child) => (child.checked = parentChecked));\n });\n }\n\n const getNodeChildrenSummary = (node: TreeNodeItem) => {\n const children = node.children ?? [];\n const allChildrenChecked = children.every((y) => y.checked === true);\n const someChildrenChecked = children.some((y) => y.checked === true || y.checked === null);\n const allChildrenUnchecked = children.every((y) => y.checked === false || y.checked === undefined);\n return { allChildrenChecked, someChildrenChecked, allChildrenUnchecked };\n };\n const updateCheckedStateRecursively = (node: TreeNodeItem): void => {\n if (!node.children?.length) return;\n\n node.children.forEach(updateCheckedStateRecursively);\n\n const { allChildrenChecked, someChildrenChecked, allChildrenUnchecked } = getNodeChildrenSummary(node);\n if (allChildrenChecked) {\n node.checked = true;\n } else if (someChildrenChecked) {\n node.checked = null;\n } else if (allChildrenUnchecked) {\n node.checked = false;\n }\n };\n this.treeData.forEach(updateCheckedStateRecursively);\n }\n\n private setSelected() {\n const selected = this.selectedElements;\n this.selected = [...selected];\n this.selectedChange.emit(selected);\n }\n\n private onChanges(changes: SimpleChanges) {\n const allExpandedChanges = changes['allExpanded'];\n const _checkIsFirstChangeWithValue = (value: Extract<keyof TreeComponent, 'selected' | 'treeData'>) => {\n if (!changes[value]) {\n return;\n }\n return (\n (!changes[value].previousValue || changes[value].previousValue.length === 0) &&\n changes[value].currentValue?.length > 0\n );\n };\n\n if (_checkIsFirstChangeWithValue('selected')) {\n this.syncSelectedChanges();\n }\n\n if (_checkIsFirstChangeWithValue('treeData')) {\n const isAllExpanded = this.allExpanded;\n if (isAllExpanded) {\n this.expandAll();\n }\n }\n\n if (allExpandedChanges) {\n if (this.allExpanded) {\n this.expandAll();\n } else {\n this.collapseAll();\n }\n }\n }\n\n private syncSelectedChanges() {\n const treeFlatten = flattenTree(this.treeData);\n this.selected.forEach((selectedItem) => {\n const item = treeFlatten.find((item) => item.id === selectedItem.id);\n if (item) {\n item.checked = true;\n }\n if (item && item.children && this.multiple) {\n item.children.forEach((child) => {\n child.checked = true;\n const existChildInSelectedList = this.selected.some((item) => item.id === child.id);\n if (!existChildInSelectedList) {\n this.selected.push(child);\n }\n });\n }\n });\n const selectedElements = this.selectedElements;\n const selectedElementsNotInSelectedList = selectedElements.filter(\n (x) => !this.selected.some((y) => y.id === x.id),\n );\n selectedElementsNotInSelectedList.forEach((item) => {\n this.checkTreeDataChildren(item);\n });\n this.setSelected();\n }\n\n private collapseAll() {\n const flatten = flattenTree(this.treeData);\n flatten.forEach((item) => {\n item.isExpanded = false;\n });\n }\n\n private expandAll() {\n const flatten = flattenTree(this.treeData);\n flatten.forEach((item) => {\n item.isExpanded = true;\n });\n }\n\n private get selectedElements() {\n return flattenTree(this.treeData)\n .filter((x) => x.checked)\n .filter((x) => x.leaf !== true && !x.children?.length);\n }\n\n private get multiple() {\n return this.selectionMode === 'multiple';\n }\n}\n\nconst flattenTree = <T = any>(tree: TreeNodeItem<T>[]): TreeNodeItem<T>[] => {\n const result: TreeNodeItem<T>[] = [];\n\n function traverse(nodes: TreeNodeItem<T>[]) {\n for (const node of nodes) {\n result.push(node);\n if (node.children && node.children.length) {\n traverse(node.children);\n }\n }\n }\n\n traverse(tree);\n return result;\n};\n\nconst parseInternalTreeNodeItem = <T = any>(internalTreeNodeItem: InternalTreeNodeItem<T>): TreeNodeItem<T> => {\n const { id, label, icon, checked, isExpanded, payload, editable, children } = internalTreeNodeItem;\n const object = {\n id,\n label,\n icon,\n checked,\n isExpanded,\n payload,\n editable,\n _children: children?.map(parseInternalTreeNodeItem),\n get children() {\n return this._children;\n },\n set children(value) {\n this._children = value;\n internalTreeNodeItem.children = value;\n },\n };\n Object.defineProperty(object, '_children', {\n enumerable: false,\n });\n return object as TreeNodeItem<T>;\n};\n\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';\n\nimport { TreeComponent } from './tree.component';\nimport { TreeNodeItemComponent } from './components/tree-node-item/tree-node-item.component';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { LoadingStateModule } from '@seniorsistemas/angular-components/loading-state';\nimport { FormsModule } from '@angular/forms';\nimport { InputTextModule } from 'primeng/inputtext';\n\n@NgModule({\n declarations: [TreeComponent, TreeNodeItemComponent],\n imports: [FormsModule, InputTextModule, LoadingStateModule, TranslateModule],\n exports: [TreeComponent],\n})\nexport class TreeModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2.TreeNodeItemComponent"],"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';\nimport { ChangeDetectorRef, Component, ElementRef, EventEmitter, Input, Output, ViewChild, input, inject } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { TranslateService } from '@ngx-translate/core';\nimport { InternalTreeNodeItem, TreeNodeEdit } from '../../Models/tree.models';\n\n@Component({\n selector: 's-tree-node-item',\n templateUrl: './tree-node-item.component.html',\n styleUrls: ['./tree-node-item.component.scss'],\n animations: [\n trigger('fadeExpand', [\n transition(':enter', [\n style({ height: '0px', opacity: 0, overflow: 'hidden' }),\n animate('200ms ease-out', style({ height: '*', opacity: 1 })),\n ]),\n transition(':leave', [animate('150ms ease-in', style({ height: '0px', opacity: 0 }))]),\n ]),\n trigger('childrenAnimation', [\n transition(':enter', [\n query(\n ':enter',\n [\n style({ opacity: 0, transform: 'translateY(-10px)' }),\n stagger(60, [animate('200ms ease-out', style({ opacity: 1, transform: 'translateY(0)' }))]),\n ],\n { optional: true },\n ),\n ]),\n ]),\n ],\n})\nexport class TreeNodeItemComponent {\n private readonly cdr = inject(ChangeDetectorRef);\n private readonly translateService = inject(TranslateService);\n\n readonly ariaLevel = input(0);\n readonly showCheckbox = input(false);\n @Input() treeNodeItem!: InternalTreeNodeItem;\n @Output() treeNodeItemClicked = new EventEmitter<{ item: InternalTreeNodeItem; event: Event }>();\n @Output() treeNodeEdit = new EventEmitter<TreeNodeEdit>();\n @Output() nodeExpanded = new EventEmitter<InternalTreeNodeItem>();\n @Output() nodeCollapsed = new EventEmitter<InternalTreeNodeItem>();\n\n @ViewChild('input', { read: ElementRef }) input!: ElementRef<HTMLInputElement>;\n\n get hasChildren(): boolean {\n return !!(this.treeNodeItem?.children && this.treeNodeItem.children.length > 0);\n }\n\n get editable() {\n return this.treeNodeItem?.editable || false;\n }\n\n get ariaLabel() {\n return `${this.translateService.instant('platform.angular_components.select')} ${this.treeNodeItem.label}`;\n }\n\n expandNode() {\n if (this.hasChildren && !this.treeNodeItem.isExpanded) {\n this.toggleExpanded(this.treeNodeItem);\n }\n }\n\n collapseNode() {\n if (this.hasChildren && this.treeNodeItem.isExpanded) {\n this.toggleExpanded(this.treeNodeItem);\n }\n }\n\n onCheckboxEnter(node: InternalTreeNodeItem) {\n const newState = node.checked === true ? false : true;\n node.checked = newState;\n this.treeNodeItemClicked.emit({ item: node, event: new KeyboardEvent('keydown', { key: 'Enter' }) });\n }\n\n handleTreeNodeItemClick(event: Event, treeNodeItem?: InternalTreeNodeItem) {\n const item = treeNodeItem || this.treeNodeItem;\n this.treeNodeItemClicked.emit({ item, event });\n }\n\n handleTreeNodeItemClicked({ event, item }: { event: Event; item: InternalTreeNodeItem }) {\n if (item.isEditing) {\n return;\n }\n this.handleTreeNodeItemClick(event, item);\n }\n\n toggleExpanded(treeNodeItem: InternalTreeNodeItem) {\n treeNodeItem.isExpanded = !treeNodeItem.isExpanded;\n if (treeNodeItem.isExpanded) {\n this.nodeExpanded.emit(treeNodeItem);\n } else {\n this.nodeCollapsed.emit(treeNodeItem);\n }\n }\n\n toggleEditing($event: Event) {\n $event.stopPropagation();\n this.treeNodeItem.isEditing = !this.treeNodeItem.isEditing;\n this.cdr.detectChanges();\n if (this.treeNodeItem.isEditing) {\n this.treeNodeItem.editNewValue = this.treeNodeItem.label;\n const input = this.input?.nativeElement;\n input?.focus();\n }\n }\n\n cancelEdit($event: Event) {\n $event.stopPropagation();\n this.treeNodeItem.isEditing = false;\n this.treeNodeItem.editNewValue = '';\n this.treeNodeItem.editPreviousValue = '';\n this.cdr.detectChanges();\n }\n\n saveEdit($event: Event) {\n $event.stopPropagation();\n this.treeNodeItem.isEditing = false;\n if (!this.treeNodeItem.editNewValue) {\n return;\n }\n\n this.treeNodeItem.editPreviousValue = this.treeNodeItem.label;\n this.treeNodeItem.label = this.treeNodeItem.editNewValue;\n\n const revertAction = () => {\n this.treeNodeItem.label = this.treeNodeItem.editPreviousValue as string;\n this.treeNodeItem.isEditing = false;\n this.cdr.detectChanges();\n };\n this.treeNodeEdit.emit({\n revertAction,\n item: this.treeNodeItem,\n newValue: this.treeNodeItem.editNewValue,\n previousValue: this.treeNodeItem.editPreviousValue,\n });\n }\n\n treeNodeEditChildEvent(payload: TreeNodeEdit) {\n this.treeNodeEdit.emit(payload);\n }\n}\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 >\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 pInputText\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';\n\nimport { InternalTreeNodeItem, TreeNodeEdit, TreeNodeItem } from './Models/tree.models';\n\n/**\n * @description Componente de árvore hierárquica com suporte a seleção única ou múltipla,\n * checkboxes, noós expansíveis e edição inline de rótulos. Gerencia o estado interno\n * dos nós e emite eventos na seleção, expansão, colapso e edição.\n *\n * @example\n * ```html\n * <s-tree\n * [treeData]=\"nos\"\n * selectionMode=\"multiple\"\n * [showCheckbox]=\"true\"\n * (selectedChange)=\"onSelecaoMudou($event)\" />\n * ```\n *\n * @category Data\n */\n@Component({\n selector: 's-tree',\n templateUrl: './tree.component.html',\n styleUrls: ['./tree.component.scss'],\n})\nexport class TreeComponent implements OnChanges {\n /** @description Lista de nós raíz da árvore. @default [] */\n @Input()\n public treeData: TreeNodeItem[] = [];\n\n private _selected: TreeNodeItem[] = [];\n /** @description Nó(s) selecionado(s). Suporta array ou item único dependendo de `selectionMode`. @default [] */\n @Input()\n public get selected(): TreeNodeItem[] {\n return this._selected;\n }\n public set selected(value: TreeNodeItem[] | TreeNodeItem | undefined) {\n if (!value) {\n value = [];\n }\n if (!Array.isArray(value)) {\n value = [value];\n }\n this._selected = value;\n }\n\n /** @description Exibe indicador de carregamento nos nós. @default false */\n @Input()\n public loading = false;\n\n /** @description Modo de seleção: `'single'` ou `'multiple'`. @default 'single' */\n @Input()\n public selectionMode: 'single' | 'multiple' = 'single';\n\n /** @description Exibe checkboxes nos nós para seleção visual. @default false */\n @Input()\n public showCheckbox = false;\n\n /** @description Expão todos os nós inicialmente. @default false */\n @Input()\n public allExpanded = false;\n\n /** @description Emitido quando a seleção muda, com o(s) nó(s) selecionado(s). */\n @Output()\n public selectedChange: EventEmitter<TreeNodeItem[] | TreeNodeItem> = new EventEmitter();\n\n /** @description Emitido quando o usuário clica em um nó da árvore. */\n @Output()\n public treeNodeItemClicked: EventEmitter<TreeNodeItem> = new EventEmitter();\n\n /** @description Emitido após uma edição inline de rótulo de nó. */\n @Output()\n public treeNodeEdit: EventEmitter<TreeNodeEdit> = new EventEmitter();\n\n /** @description Emitido quando um nó é expandido pelo usuário. */\n @Output()\n public nodeExpanded: EventEmitter<TreeNodeItem> = new EventEmitter();\n\n /** @description Emitido quando um nó é colapsado pelo usuário. */\n @Output()\n public nodeCollapsed: EventEmitter<TreeNodeItem> = new EventEmitter();\n\n public ngOnChanges(changes: SimpleChanges): void {\n this.onChanges(changes);\n }\n\n public onTreeNodeItemClicked({ item }: { item: InternalTreeNodeItem }) {\n this.treeNodeItemClicked.emit(parseInternalTreeNodeItem(item));\n this.toggleChecked(item);\n }\n\n public onTreeNodeEdit(payload: TreeNodeEdit) {\n const { revertAction, item, newValue, previousValue } = payload;\n this.treeNodeEdit.emit({\n revertAction,\n item: parseInternalTreeNodeItem(item),\n newValue,\n previousValue,\n });\n }\n\n public onNodeExpanded(item: InternalTreeNodeItem) {\n this.nodeExpanded.emit(parseInternalTreeNodeItem(item));\n }\n\n public onNodeCollapsed(item: InternalTreeNodeItem) {\n this.nodeCollapsed.emit(parseInternalTreeNodeItem(item));\n }\n\n private toggleChecked(treeNodeItem: TreeNodeItem) {\n const elementCheckState = !treeNodeItem.checked;\n if (!this.multiple) {\n flattenTree(this.treeData).forEach((x) => (x.checked = false));\n this.selected = [treeNodeItem];\n }\n treeNodeItem.checked = elementCheckState;\n if (this.multiple) {\n this.checkTreeDataChildren(treeNodeItem);\n }\n this.setSelected();\n }\n\n private checkTreeDataChildren(selectedTreeNode: TreeNodeItem) {\n const parentChecked = selectedTreeNode.checked;\n if (selectedTreeNode.children) {\n selectedTreeNode.children.forEach((item) => {\n const childrens = flattenTree(item.children || []);\n item.checked = parentChecked;\n childrens.forEach((child) => (child.checked = parentChecked));\n });\n }\n\n const getNodeChildrenSummary = (node: TreeNodeItem) => {\n const children = node.children ?? [];\n const allChildrenChecked = children.every((y) => y.checked === true);\n const someChildrenChecked = children.some((y) => y.checked === true || y.checked === null);\n const allChildrenUnchecked = children.every((y) => y.checked === false || y.checked === undefined);\n return { allChildrenChecked, someChildrenChecked, allChildrenUnchecked };\n };\n const updateCheckedStateRecursively = (node: TreeNodeItem): void => {\n if (!node.children?.length) return;\n\n node.children.forEach(updateCheckedStateRecursively);\n\n const { allChildrenChecked, someChildrenChecked, allChildrenUnchecked } = getNodeChildrenSummary(node);\n if (allChildrenChecked) {\n node.checked = true;\n } else if (someChildrenChecked) {\n node.checked = null;\n } else if (allChildrenUnchecked) {\n node.checked = false;\n }\n };\n this.treeData.forEach(updateCheckedStateRecursively);\n }\n\n private setSelected() {\n const selected = this.selectedElements;\n this.selected = [...selected];\n this.selectedChange.emit(selected);\n }\n\n private onChanges(changes: SimpleChanges) {\n const allExpandedChanges = changes['allExpanded'];\n const _checkIsFirstChangeWithValue = (value: Extract<keyof TreeComponent, 'selected' | 'treeData'>) => {\n if (!changes[value]) {\n return;\n }\n return (\n (!changes[value].previousValue || changes[value].previousValue.length === 0) &&\n changes[value].currentValue?.length > 0\n );\n };\n\n if (_checkIsFirstChangeWithValue('selected')) {\n this.syncSelectedChanges();\n }\n\n if (_checkIsFirstChangeWithValue('treeData')) {\n const isAllExpanded = this.allExpanded;\n if (isAllExpanded) {\n this.expandAll();\n }\n }\n\n if (allExpandedChanges) {\n if (this.allExpanded) {\n this.expandAll();\n } else {\n this.collapseAll();\n }\n }\n }\n\n private syncSelectedChanges() {\n const treeFlatten = flattenTree(this.treeData);\n this.selected.forEach((selectedItem) => {\n const item = treeFlatten.find((item) => item.id === selectedItem.id);\n if (item) {\n item.checked = true;\n }\n if (item && item.children && this.multiple) {\n item.children.forEach((child) => {\n child.checked = true;\n const existChildInSelectedList = this.selected.some((item) => item.id === child.id);\n if (!existChildInSelectedList) {\n this.selected.push(child);\n }\n });\n }\n });\n const selectedElements = this.selectedElements;\n const selectedElementsNotInSelectedList = selectedElements.filter(\n (x) => !this.selected.some((y) => y.id === x.id),\n );\n selectedElementsNotInSelectedList.forEach((item) => {\n this.checkTreeDataChildren(item);\n });\n this.setSelected();\n }\n\n private collapseAll() {\n const flatten = flattenTree(this.treeData);\n flatten.forEach((item) => {\n item.isExpanded = false;\n });\n }\n\n private expandAll() {\n const flatten = flattenTree(this.treeData);\n flatten.forEach((item) => {\n item.isExpanded = true;\n });\n }\n\n private get selectedElements() {\n return flattenTree(this.treeData)\n .filter((x) => x.checked)\n .filter((x) => x.leaf !== true && !x.children?.length);\n }\n\n private get multiple() {\n return this.selectionMode === 'multiple';\n }\n}\n\nconst flattenTree = <T = any>(tree: TreeNodeItem<T>[]): TreeNodeItem<T>[] => {\n const result: TreeNodeItem<T>[] = [];\n\n function traverse(nodes: TreeNodeItem<T>[]) {\n for (const node of nodes) {\n result.push(node);\n if (node.children && node.children.length) {\n traverse(node.children);\n }\n }\n }\n\n traverse(tree);\n return result;\n};\n\nconst parseInternalTreeNodeItem = <T = any>(internalTreeNodeItem: InternalTreeNodeItem<T>): TreeNodeItem<T> => {\n const { id, label, icon, checked, isExpanded, payload, editable, children } = internalTreeNodeItem;\n const object = {\n id,\n label,\n icon,\n checked,\n isExpanded,\n payload,\n editable,\n _children: children?.map(parseInternalTreeNodeItem),\n get children() {\n return this._children;\n },\n set children(value) {\n this._children = value;\n internalTreeNodeItem.children = value;\n },\n };\n Object.defineProperty(object, '_children', {\n enumerable: false,\n });\n return object as TreeNodeItem<T>;\n};\n\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';\n\nimport { TreeComponent } from './tree.component';\nimport { TreeNodeItemComponent } from './components/tree-node-item/tree-node-item.component';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { LoadingStateModule } from '@seniorsistemas/angular-components/loading-state';\nimport { FormsModule } from '@angular/forms';\nimport { InputTextModule } from 'primeng/inputtext';\n\n@NgModule({\n declarations: [TreeComponent, TreeNodeItemComponent],\n imports: [FormsModule, InputTextModule, LoadingStateModule, TranslateModule],\n exports: [TreeComponent],\n})\nexport class TreeModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2.TreeNodeItemComponent"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { EventEmitter, Component, Input, Output, ViewChildren, HostBinding, HostListener, NgModule } from '@angular/core';
2
+ import { inject, ElementRef, ChangeDetectorRef, EventEmitter, Component, Input, Output, ViewChildren, HostBinding, HostListener, NgModule } from '@angular/core';
3
3
  import * as i1 from '@angular/common';
4
4
  import { CommonModule } from '@angular/common';
5
5
 
@@ -21,8 +21,8 @@ import { CommonModule } from '@angular/common';
21
21
  * @category Navegação
22
22
  */
23
23
  class WorkspaceSwitchComponent {
24
- eRef;
25
- changeDetectorRef;
24
+ eRef = inject(ElementRef);
25
+ changeDetectorRef = inject(ChangeDetectorRef);
26
26
  /**
27
27
  * @description Lista de workspaces disponíveis para seleção. Campo obrigatório.
28
28
  * Cada item deve implementar a interface `Workspace`.
@@ -73,10 +73,6 @@ class WorkspaceSwitchComponent {
73
73
  selectedItemIndex = 0;
74
74
  currentItemIndex = 0;
75
75
  _open = false;
76
- constructor(eRef, changeDetectorRef) {
77
- this.eRef = eRef;
78
- this.changeDetectorRef = changeDetectorRef;
79
- }
80
76
  tabindex = 0;
81
77
  onClickout(event) {
82
78
  if (!this.eRef.nativeElement.contains(event.target)) {
@@ -150,13 +146,13 @@ class WorkspaceSwitchComponent {
150
146
  currentItem.nativeElement.scrollIntoView({ behavior: 'smooth', block: 'nearest' });
151
147
  }
152
148
  }
153
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: WorkspaceSwitchComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
149
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: WorkspaceSwitchComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
154
150
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: WorkspaceSwitchComponent, selector: "s-workspace-switch", inputs: { workspaces: "workspaces", footerButtonLabel: "footerButtonLabel", showFooterButton: "showFooterButton", disabled: "disabled" }, outputs: { footerButtonClicked: "footerButtonClicked", selected: "selected" }, host: { listeners: { "document:click": "onClickout($event)", "keydown": "onKeydown($event)" }, properties: { "attr.tabindex": "this.tabindex" } }, viewQueries: [{ propertyName: "listItems", predicate: ["listItem"], descendants: true }], ngImport: i0, template: "<div\n class=\"workspace-switch\"\n [ngClass]=\"{ 'workspace-switch--disabled': disabled }\"\n (blur)=\"buttonOnBlur()\"\n>\n <div\n class=\"button\"\n (click)=\"open = !open\"\n >\n <div class=\"item\">\n <span class=\"title\">{{ workspaces[selectedItemIndex].title }}</span>\n <span class=\"subtitle\">{{ workspaces[selectedItemIndex].subtitle }}</span>\n </div>\n <div class=\"icons\">\n <span class=\"fas fa-chevron-up\"></span>\n <span class=\"fas fa-chevron-down\"></span>\n </div>\n </div>\n <div\n *ngIf=\"!disabled && open\"\n class=\"drop-panel\"\n >\n <ul\n id=\"workspace-list\"\n class=\"workspace-list\"\n [ngStyle]=\"{ 'max-height': height + 'px' }\"\n >\n\n @for(workspace of workspaces; track workspace.id; let i = $index) {\n <li\n #listItem\n class=\"workspace\"\n [ngClass]=\"{\n 'workspace--focused': i === currentItemIndex && !workspace.disabled,\n 'workspace--disabled': workspace.disabled,\n }\"\n (click)=\"onSelectItem(workspace)\"\n >\n <div class=\"item\">\n <span class=\"title\">{{ workspace.title }}</span>\n <span class=\"subtitle\">{{ workspace.subtitle }}</span>\n </div>\n\n @if (i === selectedItemIndex) {\n <span class=\"active-icon fas fa-check\"></span>\n }\n </li>\n }\n\n </ul>\n <div\n *ngIf=\"showFooterButton\"\n class=\"footer\"\n >\n <div\n class=\"footer__button\"\n (click)=\"onFooterButtonClick()\"\n >\n <span class=\"footer__button__icon fas fa-plus\"></span>\n <span class=\"footer__button__title\">{{ footerButtonLabel }}</span>\n </div>\n </div>\n </div>\n</div>\n", styles: [".workspace-switch{border-radius:4px;border:1px solid transparent;width:324px}.workspace-switch .button{align-items:center;background-color:#fff;border:none;border-radius:3px;cursor:pointer;display:flex;justify-content:space-between;-webkit-user-select:none;user-select:none;width:100%}.workspace-switch .button .icons{display:flex;flex-direction:column;justify-content:space-between;margin:0 12px}.workspace-switch .drop-panel{background-color:#fff;border-radius:4px;box-shadow:0 1px 5px #00000040;cursor:pointer;margin:20px 0;padding-top:4px;position:absolute;width:324px}.workspace-switch .drop-panel .workspace-list{list-style:none;overflow:auto;padding:0}.workspace-switch .drop-panel .workspace-list .workspace{align-items:center;display:flex;justify-content:space-between;-webkit-user-select:none;user-select:none}.workspace-switch .drop-panel .workspace-list .workspace .active-icon{color:#7892a1;font-size:12px;margin:0 12px}.workspace-switch .drop-panel .workspace-list .workspace--focused{background-color:#f1f7f8}.workspace-switch .drop-panel .workspace-list .workspace--disabled .item .title,.workspace-switch .drop-panel .workspace-list .workspace--disabled .item .subtitle{color:#c1c1cc}.workspace-switch .drop-panel .workspace-list .workspace:hover:not(.workspace--disabled){background-color:#f1f7f8}.workspace-switch .drop-panel .footer{border-top:1px solid #ccc;padding:12px}.workspace-switch .drop-panel .footer .footer__button{align-items:center;border:1px solid #d8d8d8;border-radius:4px;padding:8px 12px;-webkit-user-select:none;user-select:none;display:flex;justify-content:center}.workspace-switch .drop-panel .footer .footer__button .footer__button__icon{color:#333;margin-right:8px}.workspace-switch .drop-panel .footer .footer__button:active{border:1px solid #428bca}.workspace-switch .item{align-items:flex-start;display:flex;flex-direction:column;justify-content:space-between;padding:12px}.workspace-switch .item .title{color:#333;font-family:Open Sans,sans-serif;font-size:14px;font-weight:700;line-height:150%;text-transform:uppercase}.workspace-switch .item .subtitle{color:#999;font-family:Open Sans,sans-serif;font-size:12px;font-weight:400;line-height:150%}.workspace-switch:focus{border:1px solid #428bca}.workspace-switch--disabled .button{cursor:default}.workspace-switch--disabled .button .icons,.workspace-switch--disabled .item .title,.workspace-switch--disabled .item .subtitle{color:#ccc}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] });
155
151
  }
156
152
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: WorkspaceSwitchComponent, decorators: [{
157
153
  type: Component,
158
154
  args: [{ selector: 's-workspace-switch', template: "<div\n class=\"workspace-switch\"\n [ngClass]=\"{ 'workspace-switch--disabled': disabled }\"\n (blur)=\"buttonOnBlur()\"\n>\n <div\n class=\"button\"\n (click)=\"open = !open\"\n >\n <div class=\"item\">\n <span class=\"title\">{{ workspaces[selectedItemIndex].title }}</span>\n <span class=\"subtitle\">{{ workspaces[selectedItemIndex].subtitle }}</span>\n </div>\n <div class=\"icons\">\n <span class=\"fas fa-chevron-up\"></span>\n <span class=\"fas fa-chevron-down\"></span>\n </div>\n </div>\n <div\n *ngIf=\"!disabled && open\"\n class=\"drop-panel\"\n >\n <ul\n id=\"workspace-list\"\n class=\"workspace-list\"\n [ngStyle]=\"{ 'max-height': height + 'px' }\"\n >\n\n @for(workspace of workspaces; track workspace.id; let i = $index) {\n <li\n #listItem\n class=\"workspace\"\n [ngClass]=\"{\n 'workspace--focused': i === currentItemIndex && !workspace.disabled,\n 'workspace--disabled': workspace.disabled,\n }\"\n (click)=\"onSelectItem(workspace)\"\n >\n <div class=\"item\">\n <span class=\"title\">{{ workspace.title }}</span>\n <span class=\"subtitle\">{{ workspace.subtitle }}</span>\n </div>\n\n @if (i === selectedItemIndex) {\n <span class=\"active-icon fas fa-check\"></span>\n }\n </li>\n }\n\n </ul>\n <div\n *ngIf=\"showFooterButton\"\n class=\"footer\"\n >\n <div\n class=\"footer__button\"\n (click)=\"onFooterButtonClick()\"\n >\n <span class=\"footer__button__icon fas fa-plus\"></span>\n <span class=\"footer__button__title\">{{ footerButtonLabel }}</span>\n </div>\n </div>\n </div>\n</div>\n", styles: [".workspace-switch{border-radius:4px;border:1px solid transparent;width:324px}.workspace-switch .button{align-items:center;background-color:#fff;border:none;border-radius:3px;cursor:pointer;display:flex;justify-content:space-between;-webkit-user-select:none;user-select:none;width:100%}.workspace-switch .button .icons{display:flex;flex-direction:column;justify-content:space-between;margin:0 12px}.workspace-switch .drop-panel{background-color:#fff;border-radius:4px;box-shadow:0 1px 5px #00000040;cursor:pointer;margin:20px 0;padding-top:4px;position:absolute;width:324px}.workspace-switch .drop-panel .workspace-list{list-style:none;overflow:auto;padding:0}.workspace-switch .drop-panel .workspace-list .workspace{align-items:center;display:flex;justify-content:space-between;-webkit-user-select:none;user-select:none}.workspace-switch .drop-panel .workspace-list .workspace .active-icon{color:#7892a1;font-size:12px;margin:0 12px}.workspace-switch .drop-panel .workspace-list .workspace--focused{background-color:#f1f7f8}.workspace-switch .drop-panel .workspace-list .workspace--disabled .item .title,.workspace-switch .drop-panel .workspace-list .workspace--disabled .item .subtitle{color:#c1c1cc}.workspace-switch .drop-panel .workspace-list .workspace:hover:not(.workspace--disabled){background-color:#f1f7f8}.workspace-switch .drop-panel .footer{border-top:1px solid #ccc;padding:12px}.workspace-switch .drop-panel .footer .footer__button{align-items:center;border:1px solid #d8d8d8;border-radius:4px;padding:8px 12px;-webkit-user-select:none;user-select:none;display:flex;justify-content:center}.workspace-switch .drop-panel .footer .footer__button .footer__button__icon{color:#333;margin-right:8px}.workspace-switch .drop-panel .footer .footer__button:active{border:1px solid #428bca}.workspace-switch .item{align-items:flex-start;display:flex;flex-direction:column;justify-content:space-between;padding:12px}.workspace-switch .item .title{color:#333;font-family:Open Sans,sans-serif;font-size:14px;font-weight:700;line-height:150%;text-transform:uppercase}.workspace-switch .item .subtitle{color:#999;font-family:Open Sans,sans-serif;font-size:12px;font-weight:400;line-height:150%}.workspace-switch:focus{border:1px solid #428bca}.workspace-switch--disabled .button{cursor:default}.workspace-switch--disabled .button .icons,.workspace-switch--disabled .item .title,.workspace-switch--disabled .item .subtitle{color:#ccc}\n"] }]
159
- }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }], propDecorators: { workspaces: [{
155
+ }], propDecorators: { workspaces: [{
160
156
  type: Input,
161
157
  args: [{ required: true }]
162
158
  }], footerButtonLabel: [{
@@ -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 {\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n HostBinding,\n HostListener,\n Input,\n OnInit,\n Output,\n QueryList,\n ViewChildren,\n} from '@angular/core';\n\nimport { Workspace } from './models/workspace';\n\n/**\n * @description Componente de seleção de workspace exibe um dropdown com a lista de espaços de trabalho\n * disponíveis, permitindo ao usuário alternar entre eles. Suporta navegação por teclado\n * (setas, Enter, Escape), estado desabilitado e um botão de ação customizável no rodapé.\n *\n * @example\n * ```html\n * <s-workspace-switch\n * [workspaces]=\"workspaces\"\n * footerButtonLabel=\"Criar workspace\"\n * (selected)=\"onWorkspaceSelect($event)\"\n * (footerButtonClicked)=\"onCreate()\"\n * />\n * ```\n *\n * @category Navegação\n */\n@Component({\n selector: 's-workspace-switch',\n templateUrl: './workspace-switch.component.html',\n styleUrls: ['./workspace-switch.component.scss'],\n})\nexport class WorkspaceSwitchComponent implements OnInit {\n /**\n * @description Lista de workspaces disponíveis para seleção. Campo obrigatório.\n * Cada item deve implementar a interface `Workspace`.\n * Lança um erro em runtime se a lista estiver vazia.\n */\n @Input({ required: true })\n public workspaces: Workspace[] = [];\n\n /**\n * @description Rótulo exibido no botão de ação localizado no rodapé do dropdown.\n *\n * @default 'Adicionar'\n */\n @Input()\n public footerButtonLabel = 'Adicionar';\n\n /**\n * @description Controla a visibilidade do botão de ação no rodapé do dropdown.\n * Quando `false`, o botão não é renderizado.\n *\n * @default true\n */\n @Input()\n public showFooterButton = true;\n\n /**\n * @description Quando `true`, o componente fica desabilitado: não abre o dropdown,\n * não emite eventos e fica inacessível via teclado (`tabindex = -1`).\n *\n * @default false\n */\n @Input()\n public disabled = false;\n\n /**\n * @description Emitido quando o usuário clica no botão de ação do rodapé do dropdown.\n */\n @Output()\n public footerButtonClicked = new EventEmitter();\n\n /**\n * @description Emitido quando o usuário seleciona um workspace da lista.\n * Retorna o objeto `Workspace` selecionado.\n */\n @Output()\n public selected: EventEmitter<Workspace> = new EventEmitter();\n\n @ViewChildren('listItem')\n public listItems: QueryList<ElementRef> | null = null;\n\n public get open() {\n return this._open;\n }\n\n public set open(open: boolean) {\n this._open = open;\n this.changeDetectorRef.detectChanges();\n\n if (open) {\n this._calculateListMaxHeight();\n }\n }\n\n public height = 0;\n public selectedItemIndex = 0;\n public currentItemIndex = 0;\n\n private _open = false;\n\n constructor(\n private readonly eRef: ElementRef,\n private readonly changeDetectorRef: ChangeDetectorRef,\n ) {}\n\n @HostBinding('attr.tabindex')\n public tabindex = 0;\n\n @HostListener('document:click', ['$event'])\n public onClickout(event: MouseEvent): void {\n if (!this.eRef.nativeElement.contains(event.target)) {\n this.open = false;\n }\n }\n\n @HostListener('keydown', ['$event'])\n public onKeydown(event: KeyboardEvent): void {\n if (event.key === 'Enter' || event.key === ' ') {\n if (this.open) {\n const workspace = this.workspaces[this.selectedItemIndex];\n\n if (workspace.disabled) {\n return;\n }\n\n this.selectedItemIndex = this.currentItemIndex;\n this.selected.emit(this.workspaces[this.selectedItemIndex]);\n }\n this.open = !this.open;\n } else if (event.key === 'Escape') {\n this.open = false;\n } else if (event.key === 'ArrowDown') {\n if (this.currentItemIndex < this.workspaces.length - 1) {\n this.currentItemIndex++;\n this._scrollToCurrentItem();\n }\n } else if (event.key === 'ArrowUp') {\n if (this.currentItemIndex > 0) {\n this.currentItemIndex--;\n this._scrollToCurrentItem();\n }\n }\n }\n\n public ngOnInit(): void {\n if (this.disabled) {\n this.tabindex = -1;\n }\n }\n\n public validations(): void {\n if (!this.workspaces.length) {\n throw new Error('Workspaces list is empty.');\n }\n }\n\n public buttonOnBlur(): void {\n this.open = false;\n this.currentItemIndex = this.selectedItemIndex;\n }\n\n public onSelectItem(workspace: Workspace): void {\n if (workspace.disabled) {\n return;\n }\n\n this.open = false;\n this.selectedItemIndex = this.workspaces.indexOf(workspace);\n this.currentItemIndex = this.selectedItemIndex;\n this.selected.emit(workspace);\n }\n\n public onFooterButtonClick(): void {\n this.open = false;\n this.footerButtonClicked.emit();\n }\n\n private _calculateListMaxHeight(): void {\n const workspaceListRef = this.eRef.nativeElement.querySelector('#workspace-list');\n const { top } = workspaceListRef.getBoundingClientRect();\n\n this.height = window.innerHeight - top - 20 - (this.showFooterButton ? 64 : 0);\n this.changeDetectorRef.detectChanges();\n }\n\n private _scrollToCurrentItem(): void {\n const currentItem = this.listItems?.toArray()[this.currentItemIndex];\n if (currentItem) {\n currentItem.nativeElement.scrollIntoView({ behavior: 'smooth', block: 'nearest' });\n }\n }\n}\n\n","<div\n class=\"workspace-switch\"\n [ngClass]=\"{ 'workspace-switch--disabled': disabled }\"\n (blur)=\"buttonOnBlur()\"\n>\n <div\n class=\"button\"\n (click)=\"open = !open\"\n >\n <div class=\"item\">\n <span class=\"title\">{{ workspaces[selectedItemIndex].title }}</span>\n <span class=\"subtitle\">{{ workspaces[selectedItemIndex].subtitle }}</span>\n </div>\n <div class=\"icons\">\n <span class=\"fas fa-chevron-up\"></span>\n <span class=\"fas fa-chevron-down\"></span>\n </div>\n </div>\n <div\n *ngIf=\"!disabled && open\"\n class=\"drop-panel\"\n >\n <ul\n id=\"workspace-list\"\n class=\"workspace-list\"\n [ngStyle]=\"{ 'max-height': height + 'px' }\"\n >\n\n @for(workspace of workspaces; track workspace.id; let i = $index) {\n <li\n #listItem\n class=\"workspace\"\n [ngClass]=\"{\n 'workspace--focused': i === currentItemIndex && !workspace.disabled,\n 'workspace--disabled': workspace.disabled,\n }\"\n (click)=\"onSelectItem(workspace)\"\n >\n <div class=\"item\">\n <span class=\"title\">{{ workspace.title }}</span>\n <span class=\"subtitle\">{{ workspace.subtitle }}</span>\n </div>\n\n @if (i === selectedItemIndex) {\n <span class=\"active-icon fas fa-check\"></span>\n }\n </li>\n }\n\n </ul>\n <div\n *ngIf=\"showFooterButton\"\n class=\"footer\"\n >\n <div\n class=\"footer__button\"\n (click)=\"onFooterButtonClick()\"\n >\n <span class=\"footer__button__icon fas fa-plus\"></span>\n <span class=\"footer__button__title\">{{ footerButtonLabel }}</span>\n </div>\n </div>\n </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { WorkspaceSwitchComponent } from './workspace-switch.component';\n\n@NgModule({\n imports: [CommonModule],\n declarations: [WorkspaceSwitchComponent],\n exports: [WorkspaceSwitchComponent],\n})\nexport class WorkspaceSwitchModule {}\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-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 { ChangeDetectorRef, Component, ElementRef, EventEmitter, HostBinding, HostListener, Input, OnInit, Output, QueryList, ViewChildren, inject } from '@angular/core';\n\nimport { Workspace } from './models/workspace';\n\n/**\n * @description Componente de seleção de workspace exibe um dropdown com a lista de espaços de trabalho\n * disponíveis, permitindo ao usuário alternar entre eles. Suporta navegação por teclado\n * (setas, Enter, Escape), estado desabilitado e um botão de ação customizável no rodapé.\n *\n * @example\n * ```html\n * <s-workspace-switch\n * [workspaces]=\"workspaces\"\n * footerButtonLabel=\"Criar workspace\"\n * (selected)=\"onWorkspaceSelect($event)\"\n * (footerButtonClicked)=\"onCreate()\"\n * />\n * ```\n *\n * @category Navegação\n */\n@Component({\n selector: 's-workspace-switch',\n templateUrl: './workspace-switch.component.html',\n styleUrls: ['./workspace-switch.component.scss'],\n})\nexport class WorkspaceSwitchComponent implements OnInit {\n private readonly eRef = inject(ElementRef);\n private readonly changeDetectorRef = inject(ChangeDetectorRef);\n\n /**\n * @description Lista de workspaces disponíveis para seleção. Campo obrigatório.\n * Cada item deve implementar a interface `Workspace`.\n * Lança um erro em runtime se a lista estiver vazia.\n */\n @Input({ required: true })\n public workspaces: Workspace[] = [];\n\n /**\n * @description Rótulo exibido no botão de ação localizado no rodapé do dropdown.\n *\n * @default 'Adicionar'\n */\n @Input()\n public footerButtonLabel = 'Adicionar';\n\n /**\n * @description Controla a visibilidade do botão de ação no rodapé do dropdown.\n * Quando `false`, o botão não é renderizado.\n *\n * @default true\n */\n @Input()\n public showFooterButton = true;\n\n /**\n * @description Quando `true`, o componente fica desabilitado: não abre o dropdown,\n * não emite eventos e fica inacessível via teclado (`tabindex = -1`).\n *\n * @default false\n */\n @Input()\n public disabled = false;\n\n /**\n * @description Emitido quando o usuário clica no botão de ação do rodapé do dropdown.\n */\n @Output()\n public footerButtonClicked = new EventEmitter();\n\n /**\n * @description Emitido quando o usuário seleciona um workspace da lista.\n * Retorna o objeto `Workspace` selecionado.\n */\n @Output()\n public selected: EventEmitter<Workspace> = new EventEmitter();\n\n @ViewChildren('listItem')\n public listItems: QueryList<ElementRef> | null = null;\n\n public get open() {\n return this._open;\n }\n\n public set open(open: boolean) {\n this._open = open;\n this.changeDetectorRef.detectChanges();\n\n if (open) {\n this._calculateListMaxHeight();\n }\n }\n\n public height = 0;\n public selectedItemIndex = 0;\n public currentItemIndex = 0;\n\n private _open = false;\n\n @HostBinding('attr.tabindex')\n public tabindex = 0;\n\n @HostListener('document:click', ['$event'])\n public onClickout(event: MouseEvent): void {\n if (!this.eRef.nativeElement.contains(event.target)) {\n this.open = false;\n }\n }\n\n @HostListener('keydown', ['$event'])\n public onKeydown(event: KeyboardEvent): void {\n if (event.key === 'Enter' || event.key === ' ') {\n if (this.open) {\n const workspace = this.workspaces[this.selectedItemIndex];\n\n if (workspace.disabled) {\n return;\n }\n\n this.selectedItemIndex = this.currentItemIndex;\n this.selected.emit(this.workspaces[this.selectedItemIndex]);\n }\n this.open = !this.open;\n } else if (event.key === 'Escape') {\n this.open = false;\n } else if (event.key === 'ArrowDown') {\n if (this.currentItemIndex < this.workspaces.length - 1) {\n this.currentItemIndex++;\n this._scrollToCurrentItem();\n }\n } else if (event.key === 'ArrowUp') {\n if (this.currentItemIndex > 0) {\n this.currentItemIndex--;\n this._scrollToCurrentItem();\n }\n }\n }\n\n public ngOnInit(): void {\n if (this.disabled) {\n this.tabindex = -1;\n }\n }\n\n public validations(): void {\n if (!this.workspaces.length) {\n throw new Error('Workspaces list is empty.');\n }\n }\n\n public buttonOnBlur(): void {\n this.open = false;\n this.currentItemIndex = this.selectedItemIndex;\n }\n\n public onSelectItem(workspace: Workspace): void {\n if (workspace.disabled) {\n return;\n }\n\n this.open = false;\n this.selectedItemIndex = this.workspaces.indexOf(workspace);\n this.currentItemIndex = this.selectedItemIndex;\n this.selected.emit(workspace);\n }\n\n public onFooterButtonClick(): void {\n this.open = false;\n this.footerButtonClicked.emit();\n }\n\n private _calculateListMaxHeight(): void {\n const workspaceListRef = this.eRef.nativeElement.querySelector('#workspace-list');\n const { top } = workspaceListRef.getBoundingClientRect();\n\n this.height = window.innerHeight - top - 20 - (this.showFooterButton ? 64 : 0);\n this.changeDetectorRef.detectChanges();\n }\n\n private _scrollToCurrentItem(): void {\n const currentItem = this.listItems?.toArray()[this.currentItemIndex];\n if (currentItem) {\n currentItem.nativeElement.scrollIntoView({ behavior: 'smooth', block: 'nearest' });\n }\n }\n}\n\n","<div\n class=\"workspace-switch\"\n [ngClass]=\"{ 'workspace-switch--disabled': disabled }\"\n (blur)=\"buttonOnBlur()\"\n>\n <div\n class=\"button\"\n (click)=\"open = !open\"\n >\n <div class=\"item\">\n <span class=\"title\">{{ workspaces[selectedItemIndex].title }}</span>\n <span class=\"subtitle\">{{ workspaces[selectedItemIndex].subtitle }}</span>\n </div>\n <div class=\"icons\">\n <span class=\"fas fa-chevron-up\"></span>\n <span class=\"fas fa-chevron-down\"></span>\n </div>\n </div>\n <div\n *ngIf=\"!disabled && open\"\n class=\"drop-panel\"\n >\n <ul\n id=\"workspace-list\"\n class=\"workspace-list\"\n [ngStyle]=\"{ 'max-height': height + 'px' }\"\n >\n\n @for(workspace of workspaces; track workspace.id; let i = $index) {\n <li\n #listItem\n class=\"workspace\"\n [ngClass]=\"{\n 'workspace--focused': i === currentItemIndex && !workspace.disabled,\n 'workspace--disabled': workspace.disabled,\n }\"\n (click)=\"onSelectItem(workspace)\"\n >\n <div class=\"item\">\n <span class=\"title\">{{ workspace.title }}</span>\n <span class=\"subtitle\">{{ workspace.subtitle }}</span>\n </div>\n\n @if (i === selectedItemIndex) {\n <span class=\"active-icon fas fa-check\"></span>\n }\n </li>\n }\n\n </ul>\n <div\n *ngIf=\"showFooterButton\"\n class=\"footer\"\n >\n <div\n class=\"footer__button\"\n (click)=\"onFooterButtonClick()\"\n >\n <span class=\"footer__button__icon fas fa-plus\"></span>\n <span class=\"footer__button__title\">{{ footerButtonLabel }}</span>\n </div>\n </div>\n </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { WorkspaceSwitchComponent } from './workspace-switch.component';\n\n@NgModule({\n imports: [CommonModule],\n declarations: [WorkspaceSwitchComponent],\n exports: [WorkspaceSwitchComponent],\n})\nexport class WorkspaceSwitchModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -1,8 +1,5 @@
1
1
  import { AfterContentInit, ElementRef, EventEmitter, OnDestroy, OnInit } from '@angular/core';
2
2
  import { FormControl } from '@angular/forms';
3
- import { DomSanitizer } from '@angular/platform-browser';
4
- import { TranslateService } from '@ngx-translate/core';
5
- import { FilePickerService } from './file-picker.service';
6
3
  import { FileDto } from './models/file-dto';
7
4
  import { FilePickerPermissions } from './models/file-picker-permissions';
8
5
  import { UploadError } from './models/uploadError';
@@ -103,7 +100,6 @@ export declare class FilePickerComponent implements OnInit, OnDestroy, AfterCont
103
100
  isSmallDevice: boolean;
104
101
  inputValue: string;
105
102
  modifiedDate?: string;
106
- constructor(sanitizer: DomSanitizer, filePickerService: FilePickerService, translate: TranslateService);
107
103
  ngOnInit(): void;
108
104
  ngOnDestroy(): void;
109
105
  ngAfterContentInit(): void;
@@ -1,45 +1,17 @@
1
- # File Upload (Deprecated)
1
+ # File Upload (Descontinuado)
2
2
 
3
- ⚠️ **DEPRECATED**: Este módulo foi renomeado para `file-picker` e será removido na versão 20.0.0.
3
+ > ⚠️ **Este pacote está descontinuado e será removido na versão 20.0.0.**
4
4
 
5
- ## Migração
6
-
7
- ### Importação
8
-
9
- **Antes:**
10
- ```typescript
11
- import { FileUploadModule } from '@seniorsistemas/angular-components/file-upload';
12
- ```
13
-
14
- **Depois:**
15
- ```typescript
16
- import { FilePickerModule } from '@seniorsistemas/angular-components/file-picker';
17
- ```
5
+ Este pacote é um alias de compatibilidade para o componente `FilePicker`.
18
6
 
19
- ### Classes e Tipos
20
-
21
- | Antigo (Deprecated) | Novo |
22
- |-----------------------------|----------------------------|
23
- | `FileUploadComponent` | `FilePickerComponent` |
24
- | `FileUploadModule` | `FilePickerModule` |
25
- | `FileUploadPermissions` | `FilePickerPermissions` |
26
- | `FileUploadDto` | `FileDto` |
27
-
28
- ### Seletor
29
-
30
- O seletor antigo `s-file-upload` ainda funciona mas emite um warning em desenvolvimento. Use `s-file-picker` no lugar.
7
+ ## Migração
31
8
 
32
- **Antes:**
33
- ```html
34
- <s-file-upload [files]="files"></s-file-upload>
35
- ```
9
+ Use `FilePickerModule` e `FilePickerComponent` de `@seniorsistemas/angular-components/file-picker` em novos projetos.
36
10
 
37
- **Depois:**
38
- ```html
39
- <s-file-picker [files]="files"></s-file-picker>
40
- ```
11
+ O seletor `s-file-upload` também está descontinuado — use `s-file-picker`.
41
12
 
42
- ### Documentação Completa
13
+ ## Documentação
43
14
 
44
15
  Consulte a documentação completa do componente em:
45
- `@seniorsistemas/angular-components/file-picker`
16
+ - **Storybook**: `Components/Base Components/File Picker`
17
+ - **Pacote**: `@seniorsistemas/angular-components/file-picker`
@@ -52,6 +52,7 @@ export declare class GanttComponent implements AfterViewInit, OnChanges, OnInit
52
52
  viewChanged: EventEmitter<ViewMode>;
53
53
  outer: ElementRef | null;
54
54
  side: ElementRef | null;
55
+ ganttSvg: ElementRef | null;
55
56
  private _gantt?;
56
57
  ngOnInit(): void;
57
58
  ngAfterViewInit(): void;
@@ -1,4 +1,4 @@
1
- import { ChangeDetectorRef, ElementRef, EventEmitter, QueryList } from '@angular/core';
1
+ import { ElementRef, EventEmitter, QueryList } from '@angular/core';
2
2
  import { GlobalSearchDropdownItemComponent } from './components/dropdown/global-search-dropdown-item.component';
3
3
  import * as i0 from "@angular/core";
4
4
  /**
@@ -53,7 +53,6 @@ export declare class GlobalSearchComponent {
53
53
  wasSearched: boolean;
54
54
  isModalLoading: boolean;
55
55
  expanded: boolean;
56
- constructor(_cdr: ChangeDetectorRef);
57
56
  onChange(): void;
58
57
  focusIn(): void;
59
58
  focusOut(): void;
@@ -0,0 +1,17 @@
1
+ # IA Insight (Descontinuado)
2
+
3
+ > ⚠️ **Este pacote está descontinuado e será removido na versão 20.0.0.**
4
+
5
+ Este pacote é um alias de compatibilidade para o componente `Insights`.
6
+
7
+ ## Migração
8
+
9
+ Use `InsightsModule` e `InsightsComponent` de `@seniorsistemas/angular-components/insights` em novos projetos.
10
+
11
+ O seletor `s-ia-insight` também está descontinuado — use `s-insights`.
12
+
13
+ ## Documentação
14
+
15
+ Consulte a documentação completa do componente em:
16
+ - **Storybook**: `Components/Structure/Insights`
17
+ - **Pacote**: `@seniorsistemas/angular-components/insights`
@@ -1,4 +1,4 @@
1
- import { ApplicationRef, ComponentFactoryResolver, ComponentRef, Injector } from '@angular/core';
1
+ import { ComponentRef } from '@angular/core';
2
2
  import { Subject } from 'rxjs';
3
3
  import { ImageCropperComponent } from './image-cropper.component';
4
4
  import * as i0 from "@angular/core";
@@ -7,7 +7,6 @@ export declare class ImageCropperService {
7
7
  private readonly _appRef;
8
8
  private readonly _injector;
9
9
  activeCropper?: ActiveCropper;
10
- constructor(_componentFactoryResolver: ComponentFactoryResolver, _appRef: ApplicationRef, _injector: Injector);
11
10
  show(config?: ImageCropperConfig): void;
12
11
  private _configureInstance;
13
12
  private _destroy;
@@ -1,4 +1,4 @@
1
- import { ElementRef, EventEmitter } from '@angular/core';
1
+ import { EventEmitter } from '@angular/core';
2
2
  import * as i0 from "@angular/core";
3
3
  /**
4
4
  * @description Diretiva de scroll infinito que detecta quando o usuário chega
@@ -18,7 +18,6 @@ export declare class InfiniteScrollDirective {
18
18
  private readonly el;
19
19
  /** @description Emitido quando o usuário atinge o final do elemento com scroll. */
20
20
  scrolled: EventEmitter<number>;
21
- constructor(el: ElementRef);
22
21
  scroll(): void;
23
22
  static ɵfac: i0.ɵɵFactoryDeclaration<InfiniteScrollDirective, never>;
24
23
  static ɵdir: i0.ɵɵDirectiveDeclaration<InfiniteScrollDirective, "[sInfiniteScroll]", never, {}, { "scrolled": "scrolled"; }, never, never, false, never>;
@@ -1,4 +1,4 @@
1
- import { OnChanges, OnDestroy, OnInit, TemplateRef, ViewContainerRef } from '@angular/core';
1
+ import { OnChanges, OnDestroy, OnInit } from '@angular/core';
2
2
  import * as i0 from "@angular/core";
3
3
  /**
4
4
  * @description Diretiva estrutural que exibe um ícone de informação ao lado do elemento hospedeiro.
@@ -37,7 +37,6 @@ export declare class InfoSignDirective implements OnChanges, OnInit, OnDestroy {
37
37
  */
38
38
  useFocusedInputRef: boolean;
39
39
  private componentRef;
40
- constructor(templateRef: TemplateRef<any>, viewContainer: ViewContainerRef);
41
40
  ngOnChanges(): void;
42
41
  ngOnInit(): void;
43
42
  ngOnDestroy(): void;
@@ -2,7 +2,7 @@ import { OnInit } from "@angular/core";
2
2
  import { FormGroup } from "@angular/forms";
3
3
  import { Calendar } from "primeng/calendar";
4
4
  import { InlineEditCalendarField } from "../../../fields/inline-edit-calendar-field";
5
- import { CalendarLocaleOptions, LocaleService } from "@seniorsistemas/angular-components/locale";
5
+ import { CalendarLocaleOptions } from "@seniorsistemas/angular-components/locale";
6
6
  import * as i0 from "@angular/core";
7
7
  export declare class InlineEditCalendarComponent implements OnInit {
8
8
  private readonly localeService;
@@ -11,7 +11,6 @@ export declare class InlineEditCalendarComponent implements OnInit {
11
11
  calendar: Calendar | null;
12
12
  tempValue: string;
13
13
  calendarLocaleOptions: CalendarLocaleOptions | null;
14
- constructor(localeService: LocaleService);
15
14
  ngOnInit(): void;
16
15
  saveValue(): void;
17
16
  getValueAsText(): string;
@@ -1,14 +1,12 @@
1
1
  import { OnInit } from "@angular/core";
2
2
  import { FormGroup } from "@angular/forms";
3
3
  import { InlineEditNumberField } from "../../../fields/inline-edit-number-field";
4
- import { LocaleService } from "@seniorsistemas/angular-components/locale";
5
4
  import * as i0 from "@angular/core";
6
5
  export declare class InlineEditNumberComponent implements OnInit {
7
6
  private readonly localeService;
8
7
  field: InlineEditNumberField;
9
8
  formGroup: FormGroup;
10
9
  tempValue: string;
11
- constructor(localeService: LocaleService);
12
10
  ngOnInit(): void;
13
11
  saveValue(): void;
14
12
  get mask(): string;
@@ -1,7 +1,6 @@
1
1
  import { ComponentRef, OnInit, ViewContainerRef } from "@angular/core";
2
2
  import { FormGroup } from "@angular/forms";
3
3
  import { InlineEditField } from "../../fields/inline-edit-field";
4
- import { LocaleService } from "@seniorsistemas/angular-components/locale";
5
4
  import * as i0 from "@angular/core";
6
5
  export declare class InlineEditItemComponent implements OnInit {
7
6
  private readonly localeService;
@@ -13,7 +12,6 @@ export declare class InlineEditItemComponent implements OnInit {
13
12
  isEditing: boolean;
14
13
  private _locale;
15
14
  private dynamicComponentRef;
16
- constructor(localeService: LocaleService);
17
15
  ngOnInit(): void;
18
16
  get showEmptyValueButton(): boolean;
19
17
  get showEditButton(): any;
@@ -1,6 +1,3 @@
1
- import { Clipboard } from '@angular/cdk/clipboard';
2
- import { TranslateService } from '@ngx-translate/core';
3
- import { ToastService } from '@seniorsistemas/angular-components/toast';
4
1
  import { InsightsItem } from '../../models/insights-item';
5
2
  import * as i0 from "@angular/core";
6
3
  export declare class InsightsCardComponent {
@@ -13,7 +10,6 @@ export declare class InsightsCardComponent {
13
10
  content?: string;
14
11
  likeSelected: boolean;
15
12
  dislikeSelected: boolean;
16
- constructor(clipboard: Clipboard, toastService: ToastService, translateService: TranslateService);
17
13
  toggle(): void;
18
14
  onLikeSelected(): void;
19
15
  onDislikeSelected(): void;
@@ -1,4 +1,4 @@
1
- import { ElementRef, OnInit, OnDestroy } from '@angular/core';
1
+ import { OnInit, OnDestroy } from '@angular/core';
2
2
  import * as i0 from "@angular/core";
3
3
  /**
4
4
  * @description Diretiva de acessibilidade que torna qualquer elemento HTML interativo,
@@ -27,7 +27,6 @@ export declare class InteractiveContentDirective implements OnInit, OnDestroy {
27
27
  /** @description Quando `true`, chama `event.stopPropagation()` ao ativar. @default false */
28
28
  stopPropagation: import("@angular/core").InputSignal<boolean>;
29
29
  private readonly EVENT_LISTENER;
30
- constructor(elementRef: ElementRef<HTMLElement>);
31
30
  ngOnInit(): void;
32
31
  private setTabIndex;
33
32
  private checkAccessbilityEvents;
@@ -1,6 +1,5 @@
1
1
  import { OnDestroy, OnInit, TemplateRef } from "@angular/core";
2
2
  import { KanbanColumn } from "../../types";
3
- import { KanbanEventService } from "../../kanban-event.service";
4
3
  import { FormControl } from "@angular/forms";
5
4
  import { TieredMenuItemData } from "@seniorsistemas/angular-components/tiered-menu";
6
5
  import * as i0 from "@angular/core";
@@ -12,7 +11,6 @@ export declare class KanbanColumnComponent implements OnInit, OnDestroy {
12
11
  selectionControl: FormControl<boolean | null>;
13
12
  tieredMenuOptions: TieredMenuItemData[];
14
13
  private _unsubscribe$;
15
- constructor(kanbanEventService: KanbanEventService);
16
14
  ngOnInit(): void;
17
15
  ngOnDestroy(): void;
18
16
  private _createTieredOptions;
@@ -1,6 +1,5 @@
1
1
  import { OnInit, TemplateRef } from "@angular/core";
2
2
  import { KanbanItem } from "../../types";
3
- import { KanbanEventService } from "../../kanban-event.service";
4
3
  import { TieredMenuItemData } from "@seniorsistemas/angular-components/tiered-menu";
5
4
  import * as i0 from "@angular/core";
6
5
  export declare class KanbanItemComponent implements OnInit {
@@ -12,7 +11,6 @@ export declare class KanbanItemComponent implements OnInit {
12
11
  bodyTemplate: TemplateRef<any> | null;
13
12
  footerTemplate: TemplateRef<any> | null;
14
13
  kanbanItemOptions: TieredMenuItemData[];
15
- constructor(_kanbanEventService: KanbanEventService);
16
14
  ngOnInit(): void;
17
15
  onSelectedChange(value: any): void;
18
16
  private _convertToTieredMenuItemData;