@seniorsistemas/angular-components 19.3.1 → 19.3.3

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 (260) 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 +2 -4
  15. package/dynamic-form/dynamic-form/components/lookup/types/lookup-models.d.ts +4 -0
  16. package/dynamic-form/dynamic-form/form-field/configurations/fields/lookup-field.d.ts +2 -1
  17. package/dynamic-form/dynamic-form/form-field/fields/autocomplete/autocomplete-field.component.d.ts +1 -2
  18. package/dynamic-form/dynamic-form/form-field/fields/bignumber/bignumber-field.component.d.ts +1 -3
  19. package/dynamic-form/dynamic-form/form-field/fields/calendar/calendar-field.component.d.ts +1 -2
  20. package/dynamic-form/dynamic-form/form-field/fields/chips/chips-field.component.d.ts +1 -3
  21. package/dynamic-form/dynamic-form/form-field/fields/country-phone-picker/country-phone-picker-field.component.d.ts +1 -2
  22. package/dynamic-form/dynamic-form/form-field/fields/currency/currency-field.component.d.ts +1 -3
  23. package/dynamic-form/dynamic-form/form-field/fields/file-picker/file-picker-field.component.d.ts +1 -2
  24. package/dynamic-form/dynamic-form/form-field/fields/number/number-field.component.d.ts +1 -3
  25. package/dynamic-form/dynamic-form/form-field/fields/password/password-field.component.d.ts +1 -2
  26. package/dynamic-form/dynamic-form/form-field/fields/text/text-field.component.d.ts +1 -2
  27. package/dynamic-form/dynamic-form/form-field/fields/text-area/text-area-field.component.d.ts +1 -2
  28. package/dynamic-form/public-api.d.ts +1 -0
  29. package/empty-state/lib/empty-state/go-back/go-back.component.d.ts +0 -2
  30. package/esm2022/badge/lib/badge/badge.component.mjs +3 -3
  31. package/esm2022/breadcrumb/lib/dynamic-breadcrumb/dynamic-breadcrumb.component.mjs +10 -13
  32. package/esm2022/calendar-mask/lib/calendar-mask/calendar-mask.directive.mjs +7 -11
  33. package/esm2022/chips/lib/chips/chips/chips.component.mjs +5 -8
  34. package/esm2022/code-editor/lib/code-editor/code-editor.component.mjs +6 -9
  35. package/esm2022/code-editor/lib/code-editor/infra/utils/custom-translations/custom-translations.module.mjs +8 -13
  36. package/esm2022/common/lib/svg-factory/svg-factory.directive.mjs +6 -10
  37. package/esm2022/content-generator/lib/content-generator/content-generator.component.mjs +24 -30
  38. package/esm2022/content-generator/lib/services/IAssist/iassist.service.mjs +9 -12
  39. package/esm2022/country-phone-picker/lib/country-phone-picker/country-phone-picker.component.mjs +15 -23
  40. package/esm2022/country-phone-picker/lib/country-phone-picker/country-phone-picker.service.mjs +6 -9
  41. package/esm2022/currency/lib/currency.service.mjs +6 -9
  42. package/esm2022/custom-fields/lib/custom-fields/custom-fields.component.mjs +17 -25
  43. package/esm2022/custom-fields/lib/custom-fields/custom-fields.service.mjs +6 -9
  44. package/esm2022/dynamic-form/dynamic-form/components/lookup/lookup.component.mjs +26 -35
  45. package/esm2022/dynamic-form/dynamic-form/components/lookup/types/lookup-models.mjs +2 -0
  46. package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/lookup-field.mjs +1 -1
  47. package/esm2022/dynamic-form/dynamic-form/form-field/fields/autocomplete/autocomplete-field.component.mjs +6 -10
  48. package/esm2022/dynamic-form/dynamic-form/form-field/fields/bignumber/bignumber-field.component.mjs +12 -17
  49. package/esm2022/dynamic-form/dynamic-form/form-field/fields/calendar/calendar-field.component.mjs +5 -8
  50. package/esm2022/dynamic-form/dynamic-form/form-field/fields/chips/chips-field.component.mjs +12 -17
  51. package/esm2022/dynamic-form/dynamic-form/form-field/fields/country-phone-picker/country-phone-picker-field.component.mjs +5 -8
  52. package/esm2022/dynamic-form/dynamic-form/form-field/fields/currency/currency-field.component.mjs +13 -19
  53. package/esm2022/dynamic-form/dynamic-form/form-field/fields/file-picker/file-picker-field.component.mjs +6 -10
  54. package/esm2022/dynamic-form/dynamic-form/form-field/fields/number/number-field.component.mjs +14 -19
  55. package/esm2022/dynamic-form/dynamic-form/form-field/fields/password/password-field.component.mjs +5 -8
  56. package/esm2022/dynamic-form/dynamic-form/form-field/fields/text/text-field.component.mjs +5 -8
  57. package/esm2022/dynamic-form/dynamic-form/form-field/fields/text-area/text-area-field.component.mjs +5 -8
  58. package/esm2022/dynamic-form/public-api.mjs +1 -1
  59. package/esm2022/empty-state/lib/empty-state/go-back/go-back.component.mjs +8 -11
  60. package/esm2022/file-picker/lib/file-picker/file-picker.component.mjs +17 -21
  61. package/esm2022/gantt/lib/gantt/components/gantt/gantt.mjs +6 -2
  62. package/esm2022/gantt/lib/gantt/gantt.component.mjs +8 -4
  63. package/esm2022/global-search/lib/global-search/global-search.component.mjs +5 -8
  64. package/esm2022/image-cropper/lib/image-cropper/image-cropper.service.mjs +7 -12
  65. package/esm2022/infinite-scroll/lib/infinite-scroll/infinite-scroll.directive.mjs +5 -8
  66. package/esm2022/info-sign/lib/info-sign/info-sign.directive.mjs +6 -10
  67. package/esm2022/inline-edit/lib/inline-edit/components/fields/inline-edit-calendar/inline-edit-calendar.component.mjs +9 -12
  68. package/esm2022/inline-edit/lib/inline-edit/components/fields/inline-edit-number/inline-edit-number.component.mjs +14 -17
  69. package/esm2022/inline-edit/lib/inline-edit/components/inline-edit-item/inline-edit-item.component.mjs +12 -15
  70. package/esm2022/insights/lib/insights/components/insights-card/insights-card.component.mjs +15 -19
  71. package/esm2022/interactive-content/lib/interactive-content/interactive-content.directive.mjs +5 -8
  72. package/esm2022/kanban/lib/kanban/components/kanban-column/kanban-column.component.mjs +10 -13
  73. package/esm2022/kanban/lib/kanban/components/kanban-item/kanban-item.component.mjs +10 -13
  74. package/esm2022/kanban/lib/kanban/kanban.component.mjs +23 -17
  75. package/esm2022/loading-state/lib/loading-state/loading-state.directive.mjs +10 -16
  76. package/esm2022/locale/lib/locale/locale.service.mjs +8 -12
  77. package/esm2022/locale/lib/locale/pipes/localized-bignumber.pipe.mjs +6 -9
  78. package/esm2022/locale/lib/locale/pipes/localized-currency.pipe.mjs +6 -9
  79. package/esm2022/locale/lib/locale/pipes/localized-date.pipe.mjs +6 -9
  80. package/esm2022/locale/lib/locale/pipes/localized-number.pipe.mjs +6 -9
  81. package/esm2022/locale/lib/locale/pipes/localized-time.pipe.mjs +6 -9
  82. package/esm2022/localized-number-input/lib/localized-number-input/localized-number-input.directive.mjs +6 -9
  83. package/esm2022/navigation-button/lib/navigation-button/navigation-button.component.mjs +5 -8
  84. package/esm2022/numeric/lib/numeric.pipe.mjs +8 -12
  85. package/esm2022/numeric/lib/numeric.service.mjs +6 -9
  86. package/esm2022/password-strength/lib/password-strength/password-strength.component.mjs +8 -11
  87. package/esm2022/password-strength/lib/password-strength/password-strength.directive.mjs +10 -16
  88. package/esm2022/picklist/lib/picklist/picklist.component.mjs +5 -8
  89. package/esm2022/profile-picture-picker/lib/profile-picture-picker/profile-picture-picker.component.mjs +15 -19
  90. package/esm2022/progressbar/lib/progressbar/components/progressbar-determinate/progressbar-determinate.component.mjs +8 -11
  91. package/esm2022/progressbar/lib/progressbar/progressbar.module.mjs +5 -4
  92. package/esm2022/select-button/lib/select-button/select-button.component.mjs +3 -3
  93. package/esm2022/shared/lib/accessibility/paginator-accessibility.directive.mjs +8 -13
  94. package/esm2022/shared/lib/accessibility/table-checkbox-accessibility.directive.mjs +5 -8
  95. package/esm2022/slide-in-bar/lib/slide-in-bar/slide-in-bar.component.mjs +9 -12
  96. package/esm2022/speech-recognition/lib/speech-recognition/speech-recognition/speech-recognition.component.mjs +12 -16
  97. package/esm2022/speech-recognition/lib/speech-recognition/speech-recognition.service.mjs +12 -16
  98. package/esm2022/speech-recognition/lib/speech-recognition/text-to-speech.service.mjs +8 -10
  99. package/esm2022/split-button/lib/split-button/split-button.component.mjs +5 -8
  100. package/esm2022/table/lib/table/row-toggler/row-toggler.directive.mjs +7 -7
  101. package/esm2022/table/lib/table/table-column/table-columns.component.mjs +19 -28
  102. package/esm2022/table/lib/table/table-paging/table-paging.component.mjs +9 -16
  103. package/esm2022/table-header/lib/table-header/table-header-checkbox.component.mjs +11 -13
  104. package/esm2022/text-area/lib/text-area/text-area.component.mjs +5 -8
  105. package/esm2022/thumbnail/lib/thumbnail/thumbnail.component.mjs +8 -11
  106. package/esm2022/tiered-menu/lib/tiered-menu/components/tiered-menu/tiered-menu.component.mjs +16 -24
  107. package/esm2022/tiered-menu/lib/tiered-menu/components/tiered-menu-item/tiered-menu-item.component.mjs +8 -11
  108. package/esm2022/tiered-menu/lib/tiered-menu/components/tiered-menu-nested/tiered-menu-nested.component.mjs +12 -16
  109. package/esm2022/tiered-menu/lib/tiered-menu/tiered-menu.directive.mjs +13 -25
  110. package/esm2022/toast/lib/toast/toast.service.mjs +7 -12
  111. package/esm2022/tree/lib/tree/components/tree-node-item/tree-node-item.component.mjs +10 -14
  112. package/esm2022/workspace-switch/lib/workspace-switch/workspace-switch.component.mjs +6 -10
  113. package/fesm2022/seniorsistemas-angular-components-badge.mjs +2 -2
  114. package/fesm2022/seniorsistemas-angular-components-badge.mjs.map +1 -1
  115. package/fesm2022/seniorsistemas-angular-components-breadcrumb.mjs +10 -12
  116. package/fesm2022/seniorsistemas-angular-components-breadcrumb.mjs.map +1 -1
  117. package/fesm2022/seniorsistemas-angular-components-calendar-mask.mjs +6 -10
  118. package/fesm2022/seniorsistemas-angular-components-calendar-mask.mjs.map +1 -1
  119. package/fesm2022/seniorsistemas-angular-components-chips.mjs +4 -7
  120. package/fesm2022/seniorsistemas-angular-components-chips.mjs.map +1 -1
  121. package/fesm2022/seniorsistemas-angular-components-code-editor.mjs +10 -18
  122. package/fesm2022/seniorsistemas-angular-components-code-editor.mjs.map +1 -1
  123. package/fesm2022/seniorsistemas-angular-components-common.mjs +5 -9
  124. package/fesm2022/seniorsistemas-angular-components-common.mjs.map +1 -1
  125. package/fesm2022/seniorsistemas-angular-components-content-generator.mjs +29 -40
  126. package/fesm2022/seniorsistemas-angular-components-content-generator.mjs.map +1 -1
  127. package/fesm2022/seniorsistemas-angular-components-country-phone-picker.mjs +16 -28
  128. package/fesm2022/seniorsistemas-angular-components-country-phone-picker.mjs.map +1 -1
  129. package/fesm2022/seniorsistemas-angular-components-currency.mjs +5 -8
  130. package/fesm2022/seniorsistemas-angular-components-currency.mjs.map +1 -1
  131. package/fesm2022/seniorsistemas-angular-components-custom-fields.mjs +45 -59
  132. package/fesm2022/seniorsistemas-angular-components-custom-fields.mjs.map +1 -1
  133. package/fesm2022/seniorsistemas-angular-components-dynamic-form.mjs +111 -163
  134. package/fesm2022/seniorsistemas-angular-components-dynamic-form.mjs.map +1 -1
  135. package/fesm2022/seniorsistemas-angular-components-empty-state.mjs +4 -8
  136. package/fesm2022/seniorsistemas-angular-components-empty-state.mjs.map +1 -1
  137. package/fesm2022/seniorsistemas-angular-components-file-picker.mjs +17 -22
  138. package/fesm2022/seniorsistemas-angular-components-file-picker.mjs.map +1 -1
  139. package/fesm2022/seniorsistemas-angular-components-gantt.mjs +12 -4
  140. package/fesm2022/seniorsistemas-angular-components-gantt.mjs.map +1 -1
  141. package/fesm2022/seniorsistemas-angular-components-global-search.mjs +4 -7
  142. package/fesm2022/seniorsistemas-angular-components-global-search.mjs.map +1 -1
  143. package/fesm2022/seniorsistemas-angular-components-image-cropper.mjs +6 -11
  144. package/fesm2022/seniorsistemas-angular-components-image-cropper.mjs.map +1 -1
  145. package/fesm2022/seniorsistemas-angular-components-infinite-scroll.mjs +4 -7
  146. package/fesm2022/seniorsistemas-angular-components-infinite-scroll.mjs.map +1 -1
  147. package/fesm2022/seniorsistemas-angular-components-info-sign.mjs +5 -9
  148. package/fesm2022/seniorsistemas-angular-components-info-sign.mjs.map +1 -1
  149. package/fesm2022/seniorsistemas-angular-components-inline-edit.mjs +29 -38
  150. package/fesm2022/seniorsistemas-angular-components-inline-edit.mjs.map +1 -1
  151. package/fesm2022/seniorsistemas-angular-components-insights.mjs +17 -22
  152. package/fesm2022/seniorsistemas-angular-components-insights.mjs.map +1 -1
  153. package/fesm2022/seniorsistemas-angular-components-interactive-content.mjs +4 -7
  154. package/fesm2022/seniorsistemas-angular-components-interactive-content.mjs.map +1 -1
  155. package/fesm2022/seniorsistemas-angular-components-kanban.mjs +30 -30
  156. package/fesm2022/seniorsistemas-angular-components-kanban.mjs.map +1 -1
  157. package/fesm2022/seniorsistemas-angular-components-loading-state.mjs +7 -15
  158. package/fesm2022/seniorsistemas-angular-components-loading-state.mjs.map +1 -1
  159. package/fesm2022/seniorsistemas-angular-components-locale.mjs +22 -41
  160. package/fesm2022/seniorsistemas-angular-components-locale.mjs.map +1 -1
  161. package/fesm2022/seniorsistemas-angular-components-localized-number-input.mjs +5 -8
  162. package/fesm2022/seniorsistemas-angular-components-localized-number-input.mjs.map +1 -1
  163. package/fesm2022/seniorsistemas-angular-components-navigation-button.mjs +4 -7
  164. package/fesm2022/seniorsistemas-angular-components-navigation-button.mjs.map +1 -1
  165. package/fesm2022/seniorsistemas-angular-components-numeric.mjs +9 -16
  166. package/fesm2022/seniorsistemas-angular-components-numeric.mjs.map +1 -1
  167. package/fesm2022/seniorsistemas-angular-components-password-strength.mjs +13 -24
  168. package/fesm2022/seniorsistemas-angular-components-password-strength.mjs.map +1 -1
  169. package/fesm2022/seniorsistemas-angular-components-picklist.mjs +4 -7
  170. package/fesm2022/seniorsistemas-angular-components-picklist.mjs.map +1 -1
  171. package/fesm2022/seniorsistemas-angular-components-profile-picture-picker.mjs +14 -21
  172. package/fesm2022/seniorsistemas-angular-components-profile-picture-picker.mjs.map +1 -1
  173. package/fesm2022/seniorsistemas-angular-components-progressbar.mjs +11 -14
  174. package/fesm2022/seniorsistemas-angular-components-progressbar.mjs.map +1 -1
  175. package/fesm2022/seniorsistemas-angular-components-select-button.mjs +2 -2
  176. package/fesm2022/seniorsistemas-angular-components-select-button.mjs.map +1 -1
  177. package/fesm2022/seniorsistemas-angular-components-shared.mjs +10 -18
  178. package/fesm2022/seniorsistemas-angular-components-shared.mjs.map +1 -1
  179. package/fesm2022/seniorsistemas-angular-components-slide-in-bar.mjs +7 -10
  180. package/fesm2022/seniorsistemas-angular-components-slide-in-bar.mjs.map +1 -1
  181. package/fesm2022/seniorsistemas-angular-components-speech-recognition.mjs +23 -34
  182. package/fesm2022/seniorsistemas-angular-components-speech-recognition.mjs.map +1 -1
  183. package/fesm2022/seniorsistemas-angular-components-split-button.mjs +4 -7
  184. package/fesm2022/seniorsistemas-angular-components-split-button.mjs.map +1 -1
  185. package/fesm2022/seniorsistemas-angular-components-table-header.mjs +10 -12
  186. package/fesm2022/seniorsistemas-angular-components-table-header.mjs.map +1 -1
  187. package/fesm2022/seniorsistemas-angular-components-table.mjs +29 -46
  188. package/fesm2022/seniorsistemas-angular-components-table.mjs.map +1 -1
  189. package/fesm2022/seniorsistemas-angular-components-text-area.mjs +4 -7
  190. package/fesm2022/seniorsistemas-angular-components-text-area.mjs.map +1 -1
  191. package/fesm2022/seniorsistemas-angular-components-thumbnail.mjs +6 -9
  192. package/fesm2022/seniorsistemas-angular-components-thumbnail.mjs.map +1 -1
  193. package/fesm2022/seniorsistemas-angular-components-tiered-menu.mjs +30 -55
  194. package/fesm2022/seniorsistemas-angular-components-tiered-menu.mjs.map +1 -1
  195. package/fesm2022/seniorsistemas-angular-components-toast.mjs +6 -11
  196. package/fesm2022/seniorsistemas-angular-components-toast.mjs.map +1 -1
  197. package/fesm2022/seniorsistemas-angular-components-tree.mjs +9 -14
  198. package/fesm2022/seniorsistemas-angular-components-tree.mjs.map +1 -1
  199. package/fesm2022/seniorsistemas-angular-components-workspace-switch.mjs +5 -9
  200. package/fesm2022/seniorsistemas-angular-components-workspace-switch.mjs.map +1 -1
  201. package/file-picker/lib/file-picker/file-picker.component.d.ts +0 -4
  202. package/file-upload/README.md +9 -37
  203. package/gantt/lib/gantt/gantt.component.d.ts +1 -0
  204. package/global-search/lib/global-search/global-search.component.d.ts +1 -2
  205. package/ia-insight/README.md +17 -0
  206. package/image-cropper/lib/image-cropper/image-cropper.service.d.ts +1 -2
  207. package/infinite-scroll/lib/infinite-scroll/infinite-scroll.directive.d.ts +1 -2
  208. package/info-sign/lib/info-sign/info-sign.directive.d.ts +1 -2
  209. package/inline-edit/lib/inline-edit/components/fields/inline-edit-calendar/inline-edit-calendar.component.d.ts +1 -2
  210. package/inline-edit/lib/inline-edit/components/fields/inline-edit-number/inline-edit-number.component.d.ts +0 -2
  211. package/inline-edit/lib/inline-edit/components/inline-edit-item/inline-edit-item.component.d.ts +0 -2
  212. package/insights/lib/insights/components/insights-card/insights-card.component.d.ts +0 -4
  213. package/interactive-content/lib/interactive-content/interactive-content.directive.d.ts +1 -2
  214. package/kanban/lib/kanban/components/kanban-column/kanban-column.component.d.ts +0 -2
  215. package/kanban/lib/kanban/components/kanban-item/kanban-item.component.d.ts +0 -2
  216. package/kanban/lib/kanban/kanban.component.d.ts +2 -2
  217. package/loading-state/lib/loading-state/loading-state.directive.d.ts +1 -2
  218. package/locale/lib/locale/locale.service.d.ts +0 -3
  219. package/locale/lib/locale/pipes/localized-bignumber.pipe.d.ts +0 -2
  220. package/locale/lib/locale/pipes/localized-currency.pipe.d.ts +0 -2
  221. package/locale/lib/locale/pipes/localized-date.pipe.d.ts +0 -2
  222. package/locale/lib/locale/pipes/localized-number.pipe.d.ts +0 -2
  223. package/locale/lib/locale/pipes/localized-time.pipe.d.ts +0 -2
  224. package/localized-number-input/lib/localized-number-input/localized-number-input.directive.d.ts +0 -2
  225. package/navigation-button/lib/navigation-button/navigation-button.component.d.ts +1 -2
  226. package/numeric/lib/numeric.pipe.d.ts +0 -3
  227. package/numeric/lib/numeric.service.d.ts +0 -2
  228. package/package.json +1 -1
  229. package/password-strength/lib/password-strength/password-strength.component.d.ts +0 -2
  230. package/password-strength/lib/password-strength/password-strength.directive.d.ts +1 -2
  231. package/picklist/lib/picklist/picklist.component.d.ts +1 -2
  232. package/product-header/README.md +17 -0
  233. package/profile-picture-picker/lib/profile-picture-picker/profile-picture-picker.component.d.ts +0 -4
  234. package/progressbar/lib/progressbar/components/progressbar-determinate/progressbar-determinate.component.d.ts +0 -2
  235. package/progressbar/lib/progressbar/progressbar.module.d.ts +2 -1
  236. package/shared/lib/accessibility/paginator-accessibility.directive.d.ts +1 -3
  237. package/shared/lib/accessibility/table-checkbox-accessibility.directive.d.ts +1 -2
  238. package/slide-in-bar/lib/slide-in-bar/slide-in-bar.component.d.ts +0 -2
  239. package/speech-recognition/lib/speech-recognition/speech-recognition/speech-recognition.component.d.ts +0 -4
  240. package/speech-recognition/lib/speech-recognition/speech-recognition.service.d.ts +1 -5
  241. package/speech-recognition/lib/speech-recognition/text-to-speech.service.d.ts +1 -3
  242. package/split-button/lib/split-button/split-button.component.d.ts +1 -2
  243. package/table/lib/table/row-toggler/row-toggler.directive.d.ts +1 -1
  244. package/table/lib/table/table-column/table-columns.component.d.ts +2 -6
  245. package/table/lib/table/table-paging/table-paging.component.d.ts +0 -3
  246. package/table-header/lib/table-header/table-header-checkbox.component.d.ts +1 -1
  247. package/text-area/lib/text-area/text-area.component.d.ts +1 -2
  248. package/text-area-ia/README.md +17 -0
  249. package/thumbnail/lib/thumbnail/thumbnail.component.d.ts +0 -2
  250. package/tiered-menu/lib/tiered-menu/components/tiered-menu/tiered-menu.component.d.ts +1 -3
  251. package/tiered-menu/lib/tiered-menu/components/tiered-menu-item/tiered-menu-item.component.d.ts +0 -2
  252. package/tiered-menu/lib/tiered-menu/components/tiered-menu-nested/tiered-menu-nested.component.d.ts +0 -2
  253. package/tiered-menu/lib/tiered-menu/tiered-menu.directive.d.ts +1 -5
  254. package/toast/lib/toast/toast.service.d.ts +0 -2
  255. package/tree/lib/tree/components/tree-node-item/tree-node-item.component.d.ts +1 -3
  256. package/workspace-switch/lib/workspace-switch/workspace-switch.component.d.ts +1 -2
  257. package/confirm-dialog/README.md +0 -226
  258. package/numeric-mask/README.md +0 -395
  259. package/pin-code-field/README.md +0 -366
  260. 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;