@seniorsistemas/angular-components 19.0.5 → 19.0.6

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 (439) hide show
  1. package/accordion/lib/accordion/accordion.component.d.ts +25 -0
  2. package/accordion/lib/accordion/components/accordion-panel/accordion-panel.component.d.ts +60 -0
  3. package/alert/lib/alert/alert.component.d.ts +40 -0
  4. package/autocomplete/lib/autocomplete/autocomplete.component.d.ts +51 -0
  5. package/badge/lib/badge/badge.component.d.ts +20 -0
  6. package/bignumber-input/lib/bignumber-input/bignumber-input.directive.d.ts +46 -1
  7. package/breadcrumb/lib/breadcrumb/breadcrumb.component.d.ts +12 -0
  8. package/button/lib/button/button.component.d.ts +101 -0
  9. package/calendar-mask/lib/calendar-mask/calendar-mask.directive.d.ts +24 -0
  10. package/card/lib/card/card.component.d.ts +18 -0
  11. package/chat/lib/chat/chat.component.d.ts +20 -2
  12. package/chat/lib/chat/components/chat-message/chat-message.component.d.ts +18 -2
  13. package/checkbox/lib/checkbox/checkbox.component.d.ts +23 -3
  14. package/checkbox-list/lib/checkbox-list/checkbox-list.component.d.ts +20 -0
  15. package/chips/lib/chips/chip-item/chip-item.component.d.ts +15 -0
  16. package/chips/lib/chips/chips/chips.component.d.ts +41 -0
  17. package/code-editor/lib/code-editor/code-editor.component.d.ts +40 -0
  18. package/collapse-link/lib/collapse-link/collapse-link.component.d.ts +18 -0
  19. package/common/lib/svg-factory/components/iassist-icon/iassist-icon.component.d.ts +5 -0
  20. package/confirm-dialog/lib/popup-confirm-dialog/popup-confirm-dialog.component.d.ts +19 -0
  21. package/content-generator/lib/content-generator/content-generator.component.d.ts +30 -0
  22. package/control-errors/lib/control-errors/control-errors.component.d.ts +36 -0
  23. package/country-phone-picker/lib/country-phone-picker/country-phone-picker.component.d.ts +36 -0
  24. package/currency/lib/currency.service.d.ts +15 -2
  25. package/custom-fields/lib/custom-fields/custom-fields.component.d.ts +31 -0
  26. package/dialog/lib/src/dialog/dialog.component.d.ts +51 -0
  27. package/dialog/lib/src/dialog/services/dialog.service.d.ts +2 -2
  28. package/dialog/lib/src/dialog/services/internal-dialog.service.d.ts +1 -1
  29. package/dynamic-form/dynamic-form/components/lookup/lookup.component.d.ts +6 -5
  30. package/dynamic-form/dynamic-form/components/lookup/models/lookup-api.model.d.ts +5 -0
  31. package/dynamic-form/dynamic-form/configurations/structure/fieldset.d.ts +14 -0
  32. package/dynamic-form/dynamic-form/configurations/structure/row.d.ts +67 -0
  33. package/dynamic-form/dynamic-form/configurations/structure/section.d.ts +8 -0
  34. package/dynamic-form/dynamic-form/configurations/structure/structure.d.ts +19 -0
  35. package/dynamic-form/dynamic-form/dynamic-form.component.d.ts +21 -1
  36. package/dynamic-form/dynamic-form/form-field/configurations/fields/autocomplete-field.d.ts +45 -0
  37. package/dynamic-form/dynamic-form/form-field/configurations/fields/bignumber-field.d.ts +59 -0
  38. package/dynamic-form/dynamic-form/form-field/configurations/fields/blob-field.d.ts +55 -0
  39. package/dynamic-form/dynamic-form/form-field/configurations/fields/boolean-field.d.ts +35 -0
  40. package/dynamic-form/dynamic-form/form-field/configurations/fields/boolean-switch-field.d.ts +17 -0
  41. package/dynamic-form/dynamic-form/form-field/configurations/fields/button-field.d.ts +23 -0
  42. package/dynamic-form/dynamic-form/form-field/configurations/fields/calendar-field.d.ts +66 -0
  43. package/dynamic-form/dynamic-form/form-field/configurations/fields/checkbox-field.d.ts +15 -0
  44. package/dynamic-form/dynamic-form/form-field/configurations/fields/chips-field.d.ts +30 -0
  45. package/dynamic-form/dynamic-form/form-field/configurations/fields/content-generator-field.d.ts +47 -2
  46. package/dynamic-form/dynamic-form/form-field/configurations/fields/country-phone-picker-field.d.ts +26 -0
  47. package/dynamic-form/dynamic-form/form-field/configurations/fields/currency-field.d.ts +18 -1
  48. package/dynamic-form/dynamic-form/form-field/configurations/fields/field.d.ts +44 -0
  49. package/dynamic-form/dynamic-form/form-field/configurations/fields/lookup-field.d.ts +112 -4
  50. package/dynamic-form/dynamic-form/form-field/configurations/fields/number-field.d.ts +42 -3
  51. package/dynamic-form/dynamic-form/form-field/configurations/fields/password-field.d.ts +48 -0
  52. package/dynamic-form/dynamic-form/form-field/configurations/fields/profile-picture.d.ts +62 -0
  53. package/dynamic-form/dynamic-form/form-field/configurations/fields/radio-button-field.d.ts +34 -0
  54. package/dynamic-form/dynamic-form/form-field/configurations/fields/select-field.d.ts +63 -0
  55. package/dynamic-form/dynamic-form/form-field/configurations/fields/slider-field.d.ts +47 -1
  56. package/dynamic-form/dynamic-form/form-field/configurations/fields/star-rating-field.d.ts +23 -0
  57. package/dynamic-form/dynamic-form/form-field/configurations/fields/text-area-field.d.ts +37 -1
  58. package/dynamic-form/dynamic-form/form-field/configurations/fields/text-field.d.ts +65 -2
  59. package/dynamic-form/public-api.d.ts +1 -0
  60. package/editable-overlay/lib/editable-overlay/editable-overlay.directive.d.ts +16 -0
  61. package/empty-state/lib/empty-state/empty-state.component.d.ts +59 -0
  62. package/esm2022/accordion/lib/accordion/accordion.component.mjs +26 -1
  63. package/esm2022/accordion/lib/accordion/components/accordion-panel/accordion-panel.component.mjs +61 -1
  64. package/esm2022/alert/lib/alert/alert.component.mjs +41 -1
  65. package/esm2022/autocomplete/lib/autocomplete/autocomplete.component.mjs +52 -1
  66. package/esm2022/badge/lib/badge/badge.component.mjs +21 -1
  67. package/esm2022/bignumber-input/lib/bignumber-input/bignumber-input.directive.mjs +47 -2
  68. package/esm2022/breadcrumb/lib/breadcrumb/breadcrumb.component.mjs +13 -1
  69. package/esm2022/button/lib/button/button.component.mjs +102 -1
  70. package/esm2022/calendar-mask/lib/calendar-mask/calendar-mask.directive.mjs +72 -47
  71. package/esm2022/card/lib/card/card.component.mjs +21 -6
  72. package/esm2022/chat/lib/chat/chat.component.mjs +23 -5
  73. package/esm2022/chat/lib/chat/components/chat-message/chat-message.component.mjs +20 -4
  74. package/esm2022/checkbox/lib/checkbox/checkbox.component.mjs +24 -4
  75. package/esm2022/checkbox-list/lib/checkbox-list/checkbox-list.component.mjs +22 -2
  76. package/esm2022/chips/lib/chips/chip-item/chip-item.component.mjs +17 -2
  77. package/esm2022/chips/lib/chips/chips/chips.component.mjs +42 -1
  78. package/esm2022/code-editor/lib/code-editor/code-editor.component.mjs +41 -1
  79. package/esm2022/collapse-link/lib/collapse-link/collapse-link.component.mjs +19 -1
  80. package/esm2022/common/lib/svg-factory/components/iassist-icon/iassist-icon.component.mjs +6 -1
  81. package/esm2022/confirm-dialog/lib/popup-confirm-dialog/popup-confirm-dialog.component.mjs +20 -1
  82. package/esm2022/content-generator/lib/content-generator/content-generator.component.mjs +31 -1
  83. package/esm2022/control-errors/lib/control-errors/control-errors.component.mjs +37 -1
  84. package/esm2022/country-phone-picker/lib/country-phone-picker/country-phone-picker.component.mjs +37 -1
  85. package/esm2022/currency/lib/currency.service.mjs +21 -8
  86. package/esm2022/custom-fields/lib/custom-fields/custom-fields.component.mjs +32 -1
  87. package/esm2022/dialog/lib/src/dialog/dialog.component.mjs +66 -11
  88. package/esm2022/dialog/lib/src/dialog/services/dialog.service.mjs +13 -10
  89. package/esm2022/dialog/lib/src/dialog/services/internal-dialog.service.mjs +3 -3
  90. package/esm2022/dynamic-form/dynamic-form/components/lookup/lookup.component.mjs +1 -1
  91. package/esm2022/dynamic-form/dynamic-form/components/lookup/models/lookup-api.model.mjs +2 -0
  92. package/esm2022/dynamic-form/dynamic-form/configurations/structure/fieldset.mjs +1 -1
  93. package/esm2022/dynamic-form/dynamic-form/configurations/structure/row.mjs +1 -1
  94. package/esm2022/dynamic-form/dynamic-form/configurations/structure/section.mjs +1 -1
  95. package/esm2022/dynamic-form/dynamic-form/configurations/structure/structure.mjs +1 -1
  96. package/esm2022/dynamic-form/dynamic-form/dynamic-form.component.mjs +22 -2
  97. package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/autocomplete-field.mjs +1 -1
  98. package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/bignumber-field.mjs +1 -1
  99. package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/blob-field.mjs +1 -1
  100. package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/boolean-field.mjs +1 -1
  101. package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/boolean-switch-field.mjs +1 -1
  102. package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/button-field.mjs +1 -1
  103. package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/calendar-field.mjs +1 -1
  104. package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/checkbox-field.mjs +1 -1
  105. package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/chips-field.mjs +1 -1
  106. package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/content-generator-field.mjs +1 -1
  107. package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/country-phone-picker-field.mjs +1 -1
  108. package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/currency-field.mjs +1 -1
  109. package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/field.mjs +1 -2
  110. package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/lookup-field.mjs +1 -1
  111. package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/number-field.mjs +1 -1
  112. package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/password-field.mjs +1 -1
  113. package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/profile-picture.mjs +1 -1
  114. package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/radio-button-field.mjs +6 -1
  115. package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/select-field.mjs +1 -1
  116. package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/slider-field.mjs +1 -1
  117. package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/star-rating-field.mjs +1 -1
  118. package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/text-area-field.mjs +1 -1
  119. package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/text-field.mjs +1 -1
  120. package/esm2022/dynamic-form/dynamic-form/form-field/fields/text-area/text-area-field.component.mjs +3 -3
  121. package/esm2022/dynamic-form/public-api.mjs +2 -2
  122. package/esm2022/editable-overlay/lib/editable-overlay/editable-overlay.directive.mjs +17 -1
  123. package/esm2022/empty-state/lib/empty-state/empty-state.component.mjs +60 -1
  124. package/esm2022/fieldset/lib/fieldset/fieldset.component.mjs +25 -5
  125. package/esm2022/file-picker/lib/file-picker/file-picker.component.mjs +48 -1
  126. package/esm2022/gantt/lib/gantt/gantt.component.mjs +32 -1
  127. package/esm2022/global-search/lib/global-search/global-search.component.mjs +30 -1
  128. package/esm2022/grid-menu/lib/grid-menu/grid-menu.component.mjs +40 -1
  129. package/esm2022/help-popover/lib/help-popover/help-popover.directive.mjs +83 -27
  130. package/esm2022/image-cropper/lib/image-cropper/image-cropper.component.mjs +40 -3
  131. package/esm2022/infinite-scroll/lib/infinite-scroll/infinite-scroll.directive.mjs +18 -2
  132. package/esm2022/info-sign/lib/info-sign/info-sign.directive.mjs +33 -4
  133. package/esm2022/inline-edit/lib/inline-edit/inline-edit.component.mjs +16 -1
  134. package/esm2022/insights/lib/insights/insights.component.mjs +23 -1
  135. package/esm2022/interactive-content/lib/interactive-content/interactive-content.directive.mjs +21 -1
  136. package/esm2022/kanban/lib/kanban/kanban.component.mjs +34 -16
  137. package/esm2022/label-value/lib/label-value/label-value.component.mjs +14 -1
  138. package/esm2022/loading-state/lib/loading-state/loading-state.component.mjs +37 -1
  139. package/esm2022/loading-state/lib/loading-state/loading-state.directive.mjs +24 -1
  140. package/esm2022/locale/lib/locale/locale.service.mjs +8 -1
  141. package/esm2022/localized-number-input/lib/localized-number-input/localized-number-input.directive.mjs +17 -1
  142. package/esm2022/mask/lib/mask/mask-formatter.pipe.mjs +13 -1
  143. package/esm2022/mouse-events/lib/mouse-events/double-click.directive.mjs +16 -3
  144. package/esm2022/mouse-events/lib/mouse-events/long-press.directive.mjs +24 -10
  145. package/esm2022/navigation-button/lib/navigation-button/navigation-button.component.mjs +20 -1
  146. package/esm2022/number-input/lib/number-input/number-input.directive.mjs +32 -12
  147. package/esm2022/numeric/lib/numeric.pipe.mjs +16 -1
  148. package/esm2022/numeric/lib/numeric.service.mjs +21 -1
  149. package/esm2022/numeric-mask/lib/numeric-mask/numeric-mask.directive.mjs +9 -6
  150. package/esm2022/object-card/lib/object-card/object-card.component.mjs +24 -1
  151. package/esm2022/optional-fields/editor/editor-field.mjs +1 -1
  152. package/esm2022/paginator/lib/paginator/paginator.component.mjs +20 -1
  153. package/esm2022/panel/lib/panel/panel.component.mjs +44 -23
  154. package/esm2022/password-strength/lib/password-strength/password-strength.component.mjs +25 -1
  155. package/esm2022/password-strength/lib/password-strength/password-strength.directive.mjs +54 -1
  156. package/esm2022/picklist/lib/picklist/picklist.component.mjs +33 -2
  157. package/esm2022/pin-code-field/lib/pin-code-field/pin-code-field.component.mjs +29 -34
  158. package/esm2022/profile-picture-picker/lib/profile-picture-picker/profile-picture-picker.component.mjs +86 -2
  159. package/esm2022/progressbar/lib/progressbar/progressbar.component.mjs +53 -3
  160. package/esm2022/radio-button/lib/radio-button/radio-button.component.mjs +28 -1
  161. package/esm2022/radio-button/lib/radio-button-group/radio-button-group.component.mjs +27 -1
  162. package/esm2022/rating-scale/lib/rating-scale/rating-scale.component.mjs +39 -7
  163. package/esm2022/select/lib/select/select.component.mjs +35 -1
  164. package/esm2022/select-button/lib/select-button/select-button.component.mjs +35 -1
  165. package/esm2022/shared/lib/shared/border-button/border-button.component.mjs +11 -3
  166. package/esm2022/sidebar/lib/sidebar/sidebar.component.mjs +54 -1
  167. package/esm2022/slide-in-bar/lib/slide-in-bar/slide-in-bar.component.mjs +76 -36
  168. package/esm2022/slider/lib/slider/slider.component.mjs +90 -9
  169. package/esm2022/speech-recognition/lib/speech-recognition/speech-recognition/speech-recognition.component.mjs +25 -4
  170. package/esm2022/split-button/lib/split-button/split-button.component.mjs +24 -2
  171. package/esm2022/star-rating/star-rating/star-rating.component.mjs +17 -1
  172. package/esm2022/stats-card/lib/stats-card/stats-card.component.mjs +32 -10
  173. package/esm2022/stepper/lib/stepper/stepper.component.mjs +20 -1
  174. package/esm2022/structure/lib/structure/footer.component.mjs +11 -1
  175. package/esm2022/switch/lib/switch/switch.component.mjs +22 -2
  176. package/esm2022/table/lib/table/table-column/table-columns.component.mjs +16 -1
  177. package/esm2022/table-header/lib/table-header/table-header-checkbox.component.mjs +29 -3
  178. package/esm2022/tabs/lib/tab-item/tab-item.component.mjs +33 -2
  179. package/esm2022/tabs/lib/tabs/tabs.component.mjs +35 -3
  180. package/esm2022/template/lib/template/template.directive.mjs +14 -2
  181. package/esm2022/text-area/lib/text-area/text-area.component.mjs +28 -1
  182. package/esm2022/thumbnail/lib/thumbnail/thumbnail.component.mjs +25 -1
  183. package/esm2022/thumbnails/lib/thumbnails/thumbnails.component.mjs +28 -3
  184. package/esm2022/tiered-menu/lib/tiered-menu/tiered-menu.directive.mjs +30 -1
  185. package/esm2022/tile/lib/tile/tile.component.mjs +26 -1
  186. package/esm2022/timeline/lib/timeline/timeline.component.mjs +26 -3
  187. package/esm2022/toast/lib/toast/toast.component.mjs +24 -4
  188. package/esm2022/token-list/lib/token-list/token-list.component.mjs +22 -1
  189. package/esm2022/tooltip/lib/tooltip/tooltip.directive.mjs +66 -1
  190. package/esm2022/topbar/lib/topbar/topbar.component.mjs +18 -1
  191. package/esm2022/tree/lib/tree/tree.component.mjs +28 -1
  192. package/esm2022/workspace-switch/lib/workspace-switch/workspace-switch.component.mjs +47 -1
  193. package/fesm2022/seniorsistemas-angular-components-accordion.mjs +85 -0
  194. package/fesm2022/seniorsistemas-angular-components-accordion.mjs.map +1 -1
  195. package/fesm2022/seniorsistemas-angular-components-alert.mjs +40 -0
  196. package/fesm2022/seniorsistemas-angular-components-alert.mjs.map +1 -1
  197. package/fesm2022/seniorsistemas-angular-components-autocomplete.mjs +51 -0
  198. package/fesm2022/seniorsistemas-angular-components-autocomplete.mjs.map +1 -1
  199. package/fesm2022/seniorsistemas-angular-components-badge.mjs +20 -0
  200. package/fesm2022/seniorsistemas-angular-components-badge.mjs.map +1 -1
  201. package/fesm2022/seniorsistemas-angular-components-bignumber-input.mjs +46 -1
  202. package/fesm2022/seniorsistemas-angular-components-bignumber-input.mjs.map +1 -1
  203. package/fesm2022/seniorsistemas-angular-components-breadcrumb.mjs +12 -0
  204. package/fesm2022/seniorsistemas-angular-components-breadcrumb.mjs.map +1 -1
  205. package/fesm2022/seniorsistemas-angular-components-button.mjs +101 -0
  206. package/fesm2022/seniorsistemas-angular-components-button.mjs.map +1 -1
  207. package/fesm2022/seniorsistemas-angular-components-calendar-mask.mjs +71 -46
  208. package/fesm2022/seniorsistemas-angular-components-calendar-mask.mjs.map +1 -1
  209. package/fesm2022/seniorsistemas-angular-components-card.mjs +19 -4
  210. package/fesm2022/seniorsistemas-angular-components-card.mjs.map +1 -1
  211. package/fesm2022/seniorsistemas-angular-components-chat.mjs +39 -5
  212. package/fesm2022/seniorsistemas-angular-components-chat.mjs.map +1 -1
  213. package/fesm2022/seniorsistemas-angular-components-checkbox-list.mjs +21 -1
  214. package/fesm2022/seniorsistemas-angular-components-checkbox-list.mjs.map +1 -1
  215. package/fesm2022/seniorsistemas-angular-components-checkbox.mjs +23 -3
  216. package/fesm2022/seniorsistemas-angular-components-checkbox.mjs.map +1 -1
  217. package/fesm2022/seniorsistemas-angular-components-chips.mjs +57 -1
  218. package/fesm2022/seniorsistemas-angular-components-chips.mjs.map +1 -1
  219. package/fesm2022/seniorsistemas-angular-components-code-editor.mjs +40 -0
  220. package/fesm2022/seniorsistemas-angular-components-code-editor.mjs.map +1 -1
  221. package/fesm2022/seniorsistemas-angular-components-collapse-link.mjs +18 -0
  222. package/fesm2022/seniorsistemas-angular-components-collapse-link.mjs.map +1 -1
  223. package/fesm2022/seniorsistemas-angular-components-common.mjs +5 -0
  224. package/fesm2022/seniorsistemas-angular-components-common.mjs.map +1 -1
  225. package/fesm2022/seniorsistemas-angular-components-confirm-dialog.mjs +19 -0
  226. package/fesm2022/seniorsistemas-angular-components-confirm-dialog.mjs.map +1 -1
  227. package/fesm2022/seniorsistemas-angular-components-content-generator.mjs +30 -0
  228. package/fesm2022/seniorsistemas-angular-components-content-generator.mjs.map +1 -1
  229. package/fesm2022/seniorsistemas-angular-components-control-errors.mjs +36 -0
  230. package/fesm2022/seniorsistemas-angular-components-control-errors.mjs.map +1 -1
  231. package/fesm2022/seniorsistemas-angular-components-country-phone-picker.mjs +36 -0
  232. package/fesm2022/seniorsistemas-angular-components-country-phone-picker.mjs.map +1 -1
  233. package/fesm2022/seniorsistemas-angular-components-currency.mjs +19 -6
  234. package/fesm2022/seniorsistemas-angular-components-currency.mjs.map +1 -1
  235. package/fesm2022/seniorsistemas-angular-components-custom-fields.mjs +31 -0
  236. package/fesm2022/seniorsistemas-angular-components-custom-fields.mjs.map +1 -1
  237. package/fesm2022/seniorsistemas-angular-components-dialog.mjs +74 -16
  238. package/fesm2022/seniorsistemas-angular-components-dialog.mjs.map +1 -1
  239. package/fesm2022/seniorsistemas-angular-components-dynamic-form.mjs +29 -4
  240. package/fesm2022/seniorsistemas-angular-components-dynamic-form.mjs.map +1 -1
  241. package/fesm2022/seniorsistemas-angular-components-editable-overlay.mjs +16 -0
  242. package/fesm2022/seniorsistemas-angular-components-editable-overlay.mjs.map +1 -1
  243. package/fesm2022/seniorsistemas-angular-components-empty-state.mjs +59 -0
  244. package/fesm2022/seniorsistemas-angular-components-empty-state.mjs.map +1 -1
  245. package/fesm2022/seniorsistemas-angular-components-fieldset.mjs +21 -1
  246. package/fesm2022/seniorsistemas-angular-components-fieldset.mjs.map +1 -1
  247. package/fesm2022/seniorsistemas-angular-components-file-picker.mjs +47 -0
  248. package/fesm2022/seniorsistemas-angular-components-file-picker.mjs.map +1 -1
  249. package/fesm2022/seniorsistemas-angular-components-gantt.mjs +31 -0
  250. package/fesm2022/seniorsistemas-angular-components-gantt.mjs.map +1 -1
  251. package/fesm2022/seniorsistemas-angular-components-global-search.mjs +29 -0
  252. package/fesm2022/seniorsistemas-angular-components-global-search.mjs.map +1 -1
  253. package/fesm2022/seniorsistemas-angular-components-grid-menu.mjs +39 -0
  254. package/fesm2022/seniorsistemas-angular-components-grid-menu.mjs.map +1 -1
  255. package/fesm2022/seniorsistemas-angular-components-help-popover.mjs +80 -24
  256. package/fesm2022/seniorsistemas-angular-components-help-popover.mjs.map +1 -1
  257. package/fesm2022/seniorsistemas-angular-components-image-cropper.mjs +38 -1
  258. package/fesm2022/seniorsistemas-angular-components-image-cropper.mjs.map +1 -1
  259. package/fesm2022/seniorsistemas-angular-components-infinite-scroll.mjs +17 -1
  260. package/fesm2022/seniorsistemas-angular-components-infinite-scroll.mjs.map +1 -1
  261. package/fesm2022/seniorsistemas-angular-components-info-sign.mjs +30 -1
  262. package/fesm2022/seniorsistemas-angular-components-info-sign.mjs.map +1 -1
  263. package/fesm2022/seniorsistemas-angular-components-inline-edit.mjs +15 -0
  264. package/fesm2022/seniorsistemas-angular-components-inline-edit.mjs.map +1 -1
  265. package/fesm2022/seniorsistemas-angular-components-insights.mjs +22 -0
  266. package/fesm2022/seniorsistemas-angular-components-insights.mjs.map +1 -1
  267. package/fesm2022/seniorsistemas-angular-components-interactive-content.mjs +20 -0
  268. package/fesm2022/seniorsistemas-angular-components-interactive-content.mjs.map +1 -1
  269. package/fesm2022/seniorsistemas-angular-components-kanban.mjs +28 -10
  270. package/fesm2022/seniorsistemas-angular-components-kanban.mjs.map +1 -1
  271. package/fesm2022/seniorsistemas-angular-components-label-value.mjs +13 -0
  272. package/fesm2022/seniorsistemas-angular-components-label-value.mjs.map +1 -1
  273. package/fesm2022/seniorsistemas-angular-components-loading-state.mjs +59 -0
  274. package/fesm2022/seniorsistemas-angular-components-loading-state.mjs.map +1 -1
  275. package/fesm2022/seniorsistemas-angular-components-locale.mjs +7 -0
  276. package/fesm2022/seniorsistemas-angular-components-locale.mjs.map +1 -1
  277. package/fesm2022/seniorsistemas-angular-components-localized-number-input.mjs +16 -0
  278. package/fesm2022/seniorsistemas-angular-components-localized-number-input.mjs.map +1 -1
  279. package/fesm2022/seniorsistemas-angular-components-mask.mjs +12 -0
  280. package/fesm2022/seniorsistemas-angular-components-mask.mjs.map +1 -1
  281. package/fesm2022/seniorsistemas-angular-components-mouse-events.mjs +35 -8
  282. package/fesm2022/seniorsistemas-angular-components-mouse-events.mjs.map +1 -1
  283. package/fesm2022/seniorsistemas-angular-components-navigation-button.mjs +19 -0
  284. package/fesm2022/seniorsistemas-angular-components-navigation-button.mjs.map +1 -1
  285. package/fesm2022/seniorsistemas-angular-components-number-input.mjs +31 -11
  286. package/fesm2022/seniorsistemas-angular-components-number-input.mjs.map +1 -1
  287. package/fesm2022/seniorsistemas-angular-components-numeric-mask.mjs +8 -5
  288. package/fesm2022/seniorsistemas-angular-components-numeric-mask.mjs.map +1 -1
  289. package/fesm2022/seniorsistemas-angular-components-numeric.mjs +35 -0
  290. package/fesm2022/seniorsistemas-angular-components-numeric.mjs.map +1 -1
  291. package/fesm2022/seniorsistemas-angular-components-object-card.mjs +23 -0
  292. package/fesm2022/seniorsistemas-angular-components-object-card.mjs.map +1 -1
  293. package/fesm2022/seniorsistemas-angular-components-optional-fields-editor.mjs.map +1 -1
  294. package/fesm2022/seniorsistemas-angular-components-paginator.mjs +19 -0
  295. package/fesm2022/seniorsistemas-angular-components-paginator.mjs.map +1 -1
  296. package/fesm2022/seniorsistemas-angular-components-panel.mjs +39 -18
  297. package/fesm2022/seniorsistemas-angular-components-panel.mjs.map +1 -1
  298. package/fesm2022/seniorsistemas-angular-components-password-strength.mjs +77 -0
  299. package/fesm2022/seniorsistemas-angular-components-password-strength.mjs.map +1 -1
  300. package/fesm2022/seniorsistemas-angular-components-picklist.mjs +32 -1
  301. package/fesm2022/seniorsistemas-angular-components-picklist.mjs.map +1 -1
  302. package/fesm2022/seniorsistemas-angular-components-pin-code-field.mjs +28 -33
  303. package/fesm2022/seniorsistemas-angular-components-pin-code-field.mjs.map +1 -1
  304. package/fesm2022/seniorsistemas-angular-components-profile-picture-picker.mjs +85 -1
  305. package/fesm2022/seniorsistemas-angular-components-profile-picture-picker.mjs.map +1 -1
  306. package/fesm2022/seniorsistemas-angular-components-progressbar.mjs +52 -2
  307. package/fesm2022/seniorsistemas-angular-components-progressbar.mjs.map +1 -1
  308. package/fesm2022/seniorsistemas-angular-components-radio-button.mjs +53 -0
  309. package/fesm2022/seniorsistemas-angular-components-radio-button.mjs.map +1 -1
  310. package/fesm2022/seniorsistemas-angular-components-rating-scale.mjs +36 -4
  311. package/fesm2022/seniorsistemas-angular-components-rating-scale.mjs.map +1 -1
  312. package/fesm2022/seniorsistemas-angular-components-select-button.mjs +34 -0
  313. package/fesm2022/seniorsistemas-angular-components-select-button.mjs.map +1 -1
  314. package/fesm2022/seniorsistemas-angular-components-select.mjs +34 -0
  315. package/fesm2022/seniorsistemas-angular-components-select.mjs.map +1 -1
  316. package/fesm2022/seniorsistemas-angular-components-shared.mjs +9 -1
  317. package/fesm2022/seniorsistemas-angular-components-shared.mjs.map +1 -1
  318. package/fesm2022/seniorsistemas-angular-components-sidebar.mjs +53 -0
  319. package/fesm2022/seniorsistemas-angular-components-sidebar.mjs.map +1 -1
  320. package/fesm2022/seniorsistemas-angular-components-slide-in-bar.mjs +71 -31
  321. package/fesm2022/seniorsistemas-angular-components-slide-in-bar.mjs.map +1 -1
  322. package/fesm2022/seniorsistemas-angular-components-slider.mjs +89 -8
  323. package/fesm2022/seniorsistemas-angular-components-slider.mjs.map +1 -1
  324. package/fesm2022/seniorsistemas-angular-components-speech-recognition.mjs +24 -3
  325. package/fesm2022/seniorsistemas-angular-components-speech-recognition.mjs.map +1 -1
  326. package/fesm2022/seniorsistemas-angular-components-split-button.mjs +22 -0
  327. package/fesm2022/seniorsistemas-angular-components-split-button.mjs.map +1 -1
  328. package/fesm2022/seniorsistemas-angular-components-star-rating.mjs +16 -0
  329. package/fesm2022/seniorsistemas-angular-components-star-rating.mjs.map +1 -1
  330. package/fesm2022/seniorsistemas-angular-components-stats-card.mjs +30 -8
  331. package/fesm2022/seniorsistemas-angular-components-stats-card.mjs.map +1 -1
  332. package/fesm2022/seniorsistemas-angular-components-stepper.mjs +19 -0
  333. package/fesm2022/seniorsistemas-angular-components-stepper.mjs.map +1 -1
  334. package/fesm2022/seniorsistemas-angular-components-structure.mjs +10 -0
  335. package/fesm2022/seniorsistemas-angular-components-structure.mjs.map +1 -1
  336. package/fesm2022/seniorsistemas-angular-components-switch.mjs +20 -0
  337. package/fesm2022/seniorsistemas-angular-components-switch.mjs.map +1 -1
  338. package/fesm2022/seniorsistemas-angular-components-table-header.mjs +28 -2
  339. package/fesm2022/seniorsistemas-angular-components-table-header.mjs.map +1 -1
  340. package/fesm2022/seniorsistemas-angular-components-table.mjs +15 -0
  341. package/fesm2022/seniorsistemas-angular-components-table.mjs.map +1 -1
  342. package/fesm2022/seniorsistemas-angular-components-tabs.mjs +65 -2
  343. package/fesm2022/seniorsistemas-angular-components-tabs.mjs.map +1 -1
  344. package/fesm2022/seniorsistemas-angular-components-template.mjs +13 -1
  345. package/fesm2022/seniorsistemas-angular-components-template.mjs.map +1 -1
  346. package/fesm2022/seniorsistemas-angular-components-text-area.mjs +27 -0
  347. package/fesm2022/seniorsistemas-angular-components-text-area.mjs.map +1 -1
  348. package/fesm2022/seniorsistemas-angular-components-thumbnail.mjs +24 -0
  349. package/fesm2022/seniorsistemas-angular-components-thumbnail.mjs.map +1 -1
  350. package/fesm2022/seniorsistemas-angular-components-thumbnails.mjs +26 -1
  351. package/fesm2022/seniorsistemas-angular-components-thumbnails.mjs.map +1 -1
  352. package/fesm2022/seniorsistemas-angular-components-tiered-menu.mjs +29 -0
  353. package/fesm2022/seniorsistemas-angular-components-tiered-menu.mjs.map +1 -1
  354. package/fesm2022/seniorsistemas-angular-components-tile.mjs +25 -0
  355. package/fesm2022/seniorsistemas-angular-components-tile.mjs.map +1 -1
  356. package/fesm2022/seniorsistemas-angular-components-timeline.mjs +25 -2
  357. package/fesm2022/seniorsistemas-angular-components-timeline.mjs.map +1 -1
  358. package/fesm2022/seniorsistemas-angular-components-toast.mjs +22 -2
  359. package/fesm2022/seniorsistemas-angular-components-toast.mjs.map +1 -1
  360. package/fesm2022/seniorsistemas-angular-components-token-list.mjs +21 -0
  361. package/fesm2022/seniorsistemas-angular-components-token-list.mjs.map +1 -1
  362. package/fesm2022/seniorsistemas-angular-components-tooltip.mjs +65 -0
  363. package/fesm2022/seniorsistemas-angular-components-tooltip.mjs.map +1 -1
  364. package/fesm2022/seniorsistemas-angular-components-topbar.mjs +17 -0
  365. package/fesm2022/seniorsistemas-angular-components-topbar.mjs.map +1 -1
  366. package/fesm2022/seniorsistemas-angular-components-tree.mjs +27 -0
  367. package/fesm2022/seniorsistemas-angular-components-tree.mjs.map +1 -1
  368. package/fesm2022/seniorsistemas-angular-components-workspace-switch.mjs +46 -0
  369. package/fesm2022/seniorsistemas-angular-components-workspace-switch.mjs.map +1 -1
  370. package/fieldset/lib/fieldset/fieldset.component.d.ts +23 -3
  371. package/file-picker/lib/file-picker/file-picker.component.d.ts +47 -0
  372. package/gantt/lib/gantt/gantt.component.d.ts +31 -0
  373. package/global-search/lib/global-search/global-search.component.d.ts +29 -0
  374. package/grid-menu/lib/grid-menu/grid-menu.component.d.ts +39 -0
  375. package/help-popover/lib/help-popover/help-popover.directive.d.ts +67 -17
  376. package/image-cropper/lib/image-cropper/image-cropper.component.d.ts +38 -0
  377. package/infinite-scroll/lib/infinite-scroll/infinite-scroll.directive.d.ts +15 -0
  378. package/info-sign/lib/info-sign/info-sign.directive.d.ts +30 -1
  379. package/inline-edit/lib/inline-edit/inline-edit.component.d.ts +15 -0
  380. package/insights/lib/insights/insights.component.d.ts +22 -0
  381. package/interactive-content/lib/interactive-content/interactive-content.directive.d.ts +20 -0
  382. package/kanban/lib/kanban/kanban.component.d.ts +25 -5
  383. package/label-value/lib/label-value/label-value.component.d.ts +13 -0
  384. package/loading-state/lib/loading-state/loading-state.component.d.ts +36 -0
  385. package/loading-state/lib/loading-state/loading-state.directive.d.ts +23 -0
  386. package/locale/lib/locale/locale.service.d.ts +7 -0
  387. package/localized-number-input/lib/localized-number-input/localized-number-input.directive.d.ts +16 -0
  388. package/mask/lib/mask/mask-formatter.pipe.d.ts +12 -0
  389. package/mouse-events/lib/mouse-events/double-click.directive.d.ts +13 -0
  390. package/mouse-events/lib/mouse-events/long-press.directive.d.ts +16 -2
  391. package/navigation-button/lib/navigation-button/navigation-button.component.d.ts +19 -0
  392. package/number-input/lib/number-input/number-input.directive.d.ts +19 -1
  393. package/numeric/lib/numeric.pipe.d.ts +15 -0
  394. package/numeric/lib/numeric.service.d.ts +20 -0
  395. package/numeric-mask/lib/numeric-mask/numeric-mask.directive.d.ts +5 -4
  396. package/object-card/lib/object-card/object-card.component.d.ts +23 -0
  397. package/optional-fields/editor/editor-field.d.ts +19 -0
  398. package/package.json +12 -12
  399. package/paginator/lib/paginator/paginator.component.d.ts +19 -0
  400. package/panel/lib/panel/panel.component.d.ts +24 -3
  401. package/password-strength/lib/password-strength/password-strength.component.d.ts +24 -0
  402. package/password-strength/lib/password-strength/password-strength.directive.d.ts +53 -0
  403. package/picklist/lib/picklist/picklist.component.d.ts +29 -0
  404. package/pin-code-field/lib/pin-code-field/pin-code-field.component.d.ts +28 -33
  405. package/profile-picture-picker/lib/profile-picture-picker/profile-picture-picker.component.d.ts +85 -1
  406. package/progressbar/lib/progressbar/progressbar.component.d.ts +50 -0
  407. package/radio-button/lib/radio-button/radio-button.component.d.ts +27 -0
  408. package/radio-button/lib/radio-button-group/radio-button-group.component.d.ts +26 -0
  409. package/rating-scale/lib/rating-scale/rating-scale.component.d.ts +30 -2
  410. package/select/lib/select/select.component.d.ts +34 -0
  411. package/select-button/lib/select-button/select-button.component.d.ts +34 -0
  412. package/shared/lib/shared/border-button/border-button.component.d.ts +10 -2
  413. package/sidebar/lib/sidebar/sidebar.component.d.ts +53 -0
  414. package/slide-in-bar/lib/slide-in-bar/slide-in-bar.component.d.ts +53 -2
  415. package/slider/lib/slider/slider.component.d.ts +72 -0
  416. package/speech-recognition/lib/speech-recognition/speech-recognition/speech-recognition.component.d.ts +18 -0
  417. package/split-button/lib/split-button/split-button.component.d.ts +22 -0
  418. package/star-rating/star-rating/star-rating.component.d.ts +16 -0
  419. package/stats-card/lib/stats-card/stats-card.component.d.ts +28 -0
  420. package/stepper/lib/stepper/stepper.component.d.ts +19 -0
  421. package/structure/lib/structure/footer.component.d.ts +10 -0
  422. package/switch/lib/switch/switch.component.d.ts +20 -0
  423. package/table/lib/table/table-column/table-columns.component.d.ts +15 -0
  424. package/table-header/lib/table-header/table-header-checkbox.component.d.ts +18 -0
  425. package/tabs/lib/tab-item/tab-item.component.d.ts +31 -0
  426. package/tabs/lib/tabs/tabs.component.d.ts +28 -0
  427. package/template/lib/template/template.directive.d.ts +12 -0
  428. package/text-area/lib/text-area/text-area.component.d.ts +27 -0
  429. package/thumbnail/lib/thumbnail/thumbnail.component.d.ts +24 -0
  430. package/thumbnails/lib/thumbnails/thumbnails.component.d.ts +27 -2
  431. package/tiered-menu/lib/tiered-menu/tiered-menu.directive.d.ts +29 -0
  432. package/tile/lib/tile/tile.component.d.ts +25 -0
  433. package/timeline/lib/timeline/timeline.component.d.ts +24 -0
  434. package/toast/lib/toast/toast.component.d.ts +22 -2
  435. package/token-list/lib/token-list/token-list.component.d.ts +21 -0
  436. package/tooltip/lib/tooltip/tooltip.directive.d.ts +65 -0
  437. package/topbar/lib/topbar/topbar.component.d.ts +17 -0
  438. package/tree/lib/tree/tree.component.d.ts +27 -0
  439. package/workspace-switch/lib/workspace-switch/workspace-switch.component.d.ts +46 -0
@@ -4,7 +4,23 @@ import { DomHandler } from 'primeng/dom';
4
4
  import { CommonModule } from '@angular/common';
5
5
 
6
6
  // TODO: O que é esta diretiva?
7
+ /**
8
+ * @description Diretiva aplicada a um `p-table` do PrimeNG para corrigir o comportamento
9
+ * de clique fora da célula editável, evitando que cliques em overlays (como dropdowns e modais)
10
+ * fechem indevidamente o modo de edição da célula.
11
+ *
12
+ * @example
13
+ * ```html
14
+ * <p-table sEditableOverlay [table]="dt" #dt>...</p-table>
15
+ * ```
16
+ *
17
+ * @category Overlay
18
+ */
7
19
  class EditableOverlayDirective {
20
+ /**
21
+ * @description Referência direta à instância do `p-table` ao qual a diretiva está aplicada.
22
+ * Utilizada para sobrescrever o comportamento padrão de `bindDocumentEditListener`.
23
+ */
8
24
  table;
9
25
  ngAfterViewInit() {
10
26
  this.table.bindDocumentEditListener = this._bindDocument.bind(this);
@@ -1 +1 @@
1
- {"version":3,"file":"seniorsistemas-angular-components-editable-overlay.mjs","sources":["../../projects/angular-components/editable-overlay/src/lib/editable-overlay/editable-overlay.directive.ts","../../projects/angular-components/editable-overlay/src/lib/editable-overlay/editable-overlay.module.ts","../../projects/angular-components/editable-overlay/src/seniorsistemas-angular-components-editable-overlay.ts"],"sourcesContent":["import { AfterViewInit, Directive, Input } from '@angular/core';\n\nimport { DomHandler } from 'primeng/dom';\n\n// TODO: O que é esta diretiva?\n\n@Directive({\n selector: 'p-table[sEditableOverlay]',\n})\nexport class EditableOverlayDirective implements AfterViewInit {\n @Input()\n public table: any;\n\n public ngAfterViewInit(): void {\n this.table.bindDocumentEditListener = this._bindDocument.bind(this);\n }\n\n public isFromOverlayTrigger(event: any) {\n return event.path.some((path: any) => path.className && path.className.includes('ng-trigger-overlayAnimation'));\n }\n\n public isFromModal(event: any) {\n return event.path.some((path: any) => path.className && path.className.includes('s-lookup'));\n }\n\n private _bindDocument() {\n if (!this.table.documentEditListener) {\n this.table.documentEditListener = (event: any) => {\n if (\n !this.isFromOverlayTrigger(event) &&\n !this.isFromModal(event) &&\n this.table.editingCell &&\n !this.table.editingCellClick &&\n this.table.isEditingCellValid()\n ) {\n DomHandler.removeClass(this.table.editingCell, 'ui-editing-cell');\n this.table.editingCell = null;\n this.table.unbindDocumentEditListener();\n }\n\n this.table.editingCellClick = false;\n };\n\n document.addEventListener('click', this.table.documentEditListener);\n }\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { EditableOverlayDirective } from './editable-overlay.directive';\n\n@NgModule({\n imports: [CommonModule],\n declarations: [EditableOverlayDirective],\n exports: [EditableOverlayDirective],\n})\nexport class EditableOverlayModule {}\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-editable-overlay.mjs","sources":["../../projects/angular-components/editable-overlay/src/lib/editable-overlay/editable-overlay.directive.ts","../../projects/angular-components/editable-overlay/src/lib/editable-overlay/editable-overlay.module.ts","../../projects/angular-components/editable-overlay/src/seniorsistemas-angular-components-editable-overlay.ts"],"sourcesContent":["import { AfterViewInit, Directive, Input } from '@angular/core';\n\nimport { DomHandler } from 'primeng/dom';\n\n// TODO: O que é esta diretiva?\n\n/**\n * @description Diretiva aplicada a um `p-table` do PrimeNG para corrigir o comportamento\n * de clique fora da célula editável, evitando que cliques em overlays (como dropdowns e modais)\n * fechem indevidamente o modo de edição da célula.\n *\n * @example\n * ```html\n * <p-table sEditableOverlay [table]=\"dt\" #dt>...</p-table>\n * ```\n *\n * @category Overlay\n */\n@Directive({\n selector: 'p-table[sEditableOverlay]',\n})\nexport class EditableOverlayDirective implements AfterViewInit {\n /**\n * @description Referência direta à instância do `p-table` ao qual a diretiva está aplicada.\n * Utilizada para sobrescrever o comportamento padrão de `bindDocumentEditListener`.\n */\n @Input()\n public table: any;\n\n public ngAfterViewInit(): void {\n this.table.bindDocumentEditListener = this._bindDocument.bind(this);\n }\n\n public isFromOverlayTrigger(event: any) {\n return event.path.some((path: any) => path.className && path.className.includes('ng-trigger-overlayAnimation'));\n }\n\n public isFromModal(event: any) {\n return event.path.some((path: any) => path.className && path.className.includes('s-lookup'));\n }\n\n private _bindDocument() {\n if (!this.table.documentEditListener) {\n this.table.documentEditListener = (event: any) => {\n if (\n !this.isFromOverlayTrigger(event) &&\n !this.isFromModal(event) &&\n this.table.editingCell &&\n !this.table.editingCellClick &&\n this.table.isEditingCellValid()\n ) {\n DomHandler.removeClass(this.table.editingCell, 'ui-editing-cell');\n this.table.editingCell = null;\n this.table.unbindDocumentEditListener();\n }\n\n this.table.editingCellClick = false;\n };\n\n document.addEventListener('click', this.table.documentEditListener);\n }\n }\n}\n\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { EditableOverlayDirective } from './editable-overlay.directive';\n\n@NgModule({\n imports: [CommonModule],\n declarations: [EditableOverlayDirective],\n exports: [EditableOverlayDirective],\n})\nexport class EditableOverlayModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -6,22 +6,81 @@ import { CookieService } from 'ngx-cookie-service';
6
6
  import * as i1 from '@seniorsistemas/angular-components/button';
7
7
  import { ButtonModule } from '@seniorsistemas/angular-components/button';
8
8
 
9
+ /**
10
+ * @description Componente de estado vazio exibido quando não há conteúdo para mostrar.
11
+ * Apresenta um ícone, título, descrição e até duas ações configuráveis
12
+ * (primária com suporte a tiered menu e secundária simples).
13
+ *
14
+ * @example
15
+ * ```html
16
+ * <s-empty-state
17
+ * title="Nenhum resultado encontrado"
18
+ * description="Tente ajustar os filtros da busca."
19
+ * primaryActionLabel="Criar novo"
20
+ * (primaryAction)="onCreate()"
21
+ * />
22
+ * ```
23
+ *
24
+ * @category Feedback
25
+ */
9
26
  class EmptyStateComponent {
10
27
  static nextIdSeed = 0;
11
28
  static _nextId = EmptyStateComponent.nextIdSeed;
12
29
  static getNextId() {
13
30
  return this._nextId++;
14
31
  }
32
+ /**
33
+ * @description Identificador único do componente. Gerado automaticamente se não informado.
34
+ */
15
35
  id = `s-empty-state-${EmptyStateComponent.getNextId()}`;
36
+ /**
37
+ * @description Título principal exibido no estado vazio. Campo obrigatório.
38
+ */
16
39
  title;
40
+ /**
41
+ * @description Classe CSS do ícone exibido no estado vazio.
42
+ * Aceita classes de bibliotecas de ícones como Font Awesome.
43
+ *
44
+ * @default 'fa fa-inbox'
45
+ */
17
46
  iconClass = 'fa fa-inbox';
47
+ /**
48
+ * @description Texto descritivo exibido abaixo do título, explicando o motivo do estado vazio
49
+ * ou orientando o usuário sobre as próximas ações.
50
+ */
18
51
  description;
52
+ /**
53
+ * @description Controla a visibilidade do botão de ação primária.
54
+ *
55
+ * @default true
56
+ */
19
57
  showPrimaryAction = true;
58
+ /**
59
+ * @description Controla a visibilidade do botão de ação secundária.
60
+ *
61
+ * @default true
62
+ */
20
63
  showSecondaryAction = true;
64
+ /**
65
+ * @description Texto do botão de ação primária.
66
+ * Quando `primaryModel` possui itens, o botão exibe um tiered menu ao clicar.
67
+ */
21
68
  primaryActionLabel;
69
+ /** @description Texto do botão de ação secundária. */
22
70
  secondaryActionLabel;
71
+ /**
72
+ * @description Lista de itens para o tiered menu da ação primária.
73
+ * Quando informado com itens, o botão primário exibe um menu de opções
74
+ * ao invés de emitir o evento `primaryAction` diretamente.
75
+ */
23
76
  primaryModel = [];
77
+ /**
78
+ * @description Emitido quando o usuário clica no botão de ação primária e `primaryModel` está vazio.
79
+ */
24
80
  primaryAction = new EventEmitter();
81
+ /**
82
+ * @description Emitido quando o usuário clica no botão de ação secundária.
83
+ */
25
84
  secondaryAction = new EventEmitter();
26
85
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: EmptyStateComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
27
86
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: EmptyStateComponent, selector: "s-empty-state", inputs: { id: "id", title: "title", iconClass: "iconClass", description: "description", showPrimaryAction: "showPrimaryAction", showSecondaryAction: "showSecondaryAction", primaryActionLabel: "primaryActionLabel", secondaryActionLabel: "secondaryActionLabel", primaryModel: "primaryModel" }, outputs: { primaryAction: "primaryAction", secondaryAction: "secondaryAction" }, ngImport: i0, template: "<div\n [id]=\"id\"\n class=\"empty-state\"\n>\n <div\n [id]=\"id + '-icon'\"\n class=\"icon\"\n >\n <i\n [attr.class]=\"iconClass ? iconClass : 'fa fa-cogs'\"\n aria-hidden=\"true\"\n ></i>\n </div>\n <div\n [id]=\"id + '-title'\"\n class=\"title\"\n >\n {{ title }}\n </div>\n\n @if (description) {\n <div\n [id]=\"id + '-description'\"\n class=\"description\"\n >\n <p>{{ description }}</p>\n </div>\n }\n @if (showPrimaryAction && primaryActionLabel) {\n <div\n [id]=\"id + '-actions'\"\n class=\"actions\"\n >\n <s-button\n [id]=\"id + '-primary-action'\"\n type=\"button\"\n [label]=\"primaryActionLabel\"\n [menuOptions]=\"primaryModel\"\n (clicked)=\"primaryAction.next()\"\n ></s-button>\n @if (showSecondaryAction && secondaryActionLabel) {\n <s-button\n [id]=\"id + '-secondary-action'\"\n id=\"secondaryAction\"\n type=\"button\"\n [label]=\"secondaryActionLabel\"\n priority=\"link\"\n (clicked)=\"secondaryAction.next()\"\n ></s-button>\n }\n </div>\n }\n</div>\n", styles: [".empty-state{width:100%;text-align:center}.empty-state .icon{color:#d8d8d8;font-size:6em}.empty-state .title{font-weight:700;margin-bottom:10px}.empty-state .description{margin-bottom:15px;color:#999;padding:0 20px;text-align:center}.empty-state .description p{margin:auto;max-width:400px;max-height:80px;overflow:hidden}.empty-state .actions{text-align:center;width:100%}\n"], dependencies: [{ kind: "component", type: i1.ButtonComponent, selector: "s-button", inputs: ["id", "label", "tooltip", "tooltipPosition", "iconClass", "rightIconClass", "caret", "styleClass", "baseZIndex", "disabled", "auxiliary", "type", "priority", "menuOptions", "menuAriaLabel", "size", "slide", "animation", "badge", "iconColor"], outputs: ["clicked"] }] });
@@ -1 +1 @@
1
- {"version":3,"file":"seniorsistemas-angular-components-empty-state.mjs","sources":["../../projects/angular-components/empty-state/src/lib/empty-state/empty-state.component.ts","../../projects/angular-components/empty-state/src/lib/empty-state/empty-state.component.html","../../projects/angular-components/empty-state/src/lib/empty-state/go-back/go-back.component.ts","../../projects/angular-components/empty-state/src/lib/empty-state/go-back/go-back.component.html","../../projects/angular-components/empty-state/src/lib/empty-state/empty-state.module.ts","../../projects/angular-components/empty-state/src/seniorsistemas-angular-components-empty-state.ts"],"sourcesContent":["import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { TieredMenuItemData } from '@seniorsistemas/angular-components/tiered-menu';\n\n@Component({\n selector: 's-empty-state',\n templateUrl: './empty-state.component.html',\n styleUrls: ['./empty-state.component.scss'],\n})\nexport class EmptyStateComponent {\n public static readonly nextIdSeed = 0;\n private static _nextId = EmptyStateComponent.nextIdSeed;\n\n public static getNextId(): number {\n return this._nextId++;\n }\n \n @Input()\n public id = `s-empty-state-${EmptyStateComponent.getNextId()}`;\n\n @Input({ required: true })\n public title!: string;\n \n @Input()\n public iconClass = 'fa fa-inbox'; \n \n @Input()\n public description?: string;\n \n @Input()\n public showPrimaryAction = true;\n \n @Input()\n public showSecondaryAction = true;\n \n @Input()\n public primaryActionLabel?: string;\n \n @Input()\n public secondaryActionLabel?: string;\n \n @Input()\n public primaryModel: TieredMenuItemData[] = [];\n\n @Output()\n public primaryAction = new EventEmitter<void>();\n \n @Output()\n public secondaryAction = new EventEmitter<void>();\n}\n","<div\n [id]=\"id\"\n class=\"empty-state\"\n>\n <div\n [id]=\"id + '-icon'\"\n class=\"icon\"\n >\n <i\n [attr.class]=\"iconClass ? iconClass : 'fa fa-cogs'\"\n aria-hidden=\"true\"\n ></i>\n </div>\n <div\n [id]=\"id + '-title'\"\n class=\"title\"\n >\n {{ title }}\n </div>\n\n @if (description) {\n <div\n [id]=\"id + '-description'\"\n class=\"description\"\n >\n <p>{{ description }}</p>\n </div>\n }\n @if (showPrimaryAction && primaryActionLabel) {\n <div\n [id]=\"id + '-actions'\"\n class=\"actions\"\n >\n <s-button\n [id]=\"id + '-primary-action'\"\n type=\"button\"\n [label]=\"primaryActionLabel\"\n [menuOptions]=\"primaryModel\"\n (clicked)=\"primaryAction.next()\"\n ></s-button>\n @if (showSecondaryAction && secondaryActionLabel) {\n <s-button\n [id]=\"id + '-secondary-action'\"\n id=\"secondaryAction\"\n type=\"button\"\n [label]=\"secondaryActionLabel\"\n priority=\"link\"\n (clicked)=\"secondaryAction.next()\"\n ></s-button>\n }\n </div>\n }\n</div>\n","import { Component, Input } from '@angular/core';\n\nimport { CookieService } from 'ngx-cookie-service';\n\n@Component({\n selector: 's-empty-state-go-back',\n templateUrl: './go-back.component.html',\n styleUrls: [],\n})\nexport class EmptyStateGoBackComponent {\n @Input()\n public iconClass = 'fa fa-exclamation-triangle';\n\n @Input({ required: true })\n public title!: string;\n\n @Input()\n public description?: string;\n\n @Input()\n public primaryActionLabel?: string;\n\n constructor(private readonly _cookieService: CookieService) {}\n\n public goBack() {\n const portalUrl = this._cookieService.get('com.senior.portal.url');\n window.open(portalUrl, '_top');\n }\n}\n","<s-empty-state \n [iconClass]=\"iconClass\" \n [title]=\"title\" \n [description]=\"description\" \n (primaryAction)=\"goBack()\"\n [primaryActionLabel]=\"primaryActionLabel\">\n</s-empty-state>","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { CookieService } from 'ngx-cookie-service';\n\nimport { EmptyStateComponent } from './empty-state.component';\nimport { EmptyStateGoBackComponent } from './go-back/go-back.component';\nimport { ButtonModule } from '@seniorsistemas/angular-components/button';\n\n@NgModule({\n imports: [CommonModule, ButtonModule],\n providers: [CookieService],\n declarations: [EmptyStateComponent, EmptyStateGoBackComponent],\n exports: [EmptyStateComponent, EmptyStateGoBackComponent],\n})\nexport class EmptyStateModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2.EmptyStateComponent"],"mappings":"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"}
1
+ {"version":3,"file":"seniorsistemas-angular-components-empty-state.mjs","sources":["../../projects/angular-components/empty-state/src/lib/empty-state/empty-state.component.ts","../../projects/angular-components/empty-state/src/lib/empty-state/empty-state.component.html","../../projects/angular-components/empty-state/src/lib/empty-state/go-back/go-back.component.ts","../../projects/angular-components/empty-state/src/lib/empty-state/go-back/go-back.component.html","../../projects/angular-components/empty-state/src/lib/empty-state/empty-state.module.ts","../../projects/angular-components/empty-state/src/seniorsistemas-angular-components-empty-state.ts"],"sourcesContent":["import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { TieredMenuItemData } from '@seniorsistemas/angular-components/tiered-menu';\n\n/**\n * @description Componente de estado vazio exibido quando não há conteúdo para mostrar.\n * Apresenta um ícone, título, descrição e até duas ações configuráveis\n * (primária com suporte a tiered menu e secundária simples).\n *\n * @example\n * ```html\n * <s-empty-state\n * title=\"Nenhum resultado encontrado\"\n * description=\"Tente ajustar os filtros da busca.\"\n * primaryActionLabel=\"Criar novo\"\n * (primaryAction)=\"onCreate()\"\n * />\n * ```\n *\n * @category Feedback\n */\n@Component({\n selector: 's-empty-state',\n templateUrl: './empty-state.component.html',\n styleUrls: ['./empty-state.component.scss'],\n})\nexport class EmptyStateComponent {\n public static readonly nextIdSeed = 0;\n private static _nextId = EmptyStateComponent.nextIdSeed;\n\n public static getNextId(): number {\n return this._nextId++;\n }\n\n /**\n * @description Identificador único do componente. Gerado automaticamente se não informado.\n */\n @Input()\n public id = `s-empty-state-${EmptyStateComponent.getNextId()}`;\n\n /**\n * @description Título principal exibido no estado vazio. Campo obrigatório.\n */\n @Input({ required: true })\n public title!: string;\n\n /**\n * @description Classe CSS do ícone exibido no estado vazio.\n * Aceita classes de bibliotecas de ícones como Font Awesome.\n *\n * @default 'fa fa-inbox'\n */\n @Input()\n public iconClass = 'fa fa-inbox';\n\n /**\n * @description Texto descritivo exibido abaixo do título, explicando o motivo do estado vazio\n * ou orientando o usuário sobre as próximas ações.\n */\n @Input()\n public description?: string;\n\n /**\n * @description Controla a visibilidade do botão de ação primária.\n *\n * @default true\n */\n @Input()\n public showPrimaryAction = true;\n\n /**\n * @description Controla a visibilidade do botão de ação secundária.\n *\n * @default true\n */\n @Input()\n public showSecondaryAction = true;\n\n /**\n * @description Texto do botão de ação primária.\n * Quando `primaryModel` possui itens, o botão exibe um tiered menu ao clicar.\n */\n @Input()\n public primaryActionLabel?: string;\n\n /** @description Texto do botão de ação secundária. */\n @Input()\n public secondaryActionLabel?: string;\n\n /**\n * @description Lista de itens para o tiered menu da ação primária.\n * Quando informado com itens, o botão primário exibe um menu de opções\n * ao invés de emitir o evento `primaryAction` diretamente.\n */\n @Input()\n public primaryModel: TieredMenuItemData[] = [];\n\n /**\n * @description Emitido quando o usuário clica no botão de ação primária e `primaryModel` está vazio.\n */\n @Output()\n public primaryAction = new EventEmitter<void>();\n\n /**\n * @description Emitido quando o usuário clica no botão de ação secundária.\n */\n @Output()\n public secondaryAction = new EventEmitter<void>();\n}\n\n","<div\n [id]=\"id\"\n class=\"empty-state\"\n>\n <div\n [id]=\"id + '-icon'\"\n class=\"icon\"\n >\n <i\n [attr.class]=\"iconClass ? iconClass : 'fa fa-cogs'\"\n aria-hidden=\"true\"\n ></i>\n </div>\n <div\n [id]=\"id + '-title'\"\n class=\"title\"\n >\n {{ title }}\n </div>\n\n @if (description) {\n <div\n [id]=\"id + '-description'\"\n class=\"description\"\n >\n <p>{{ description }}</p>\n </div>\n }\n @if (showPrimaryAction && primaryActionLabel) {\n <div\n [id]=\"id + '-actions'\"\n class=\"actions\"\n >\n <s-button\n [id]=\"id + '-primary-action'\"\n type=\"button\"\n [label]=\"primaryActionLabel\"\n [menuOptions]=\"primaryModel\"\n (clicked)=\"primaryAction.next()\"\n ></s-button>\n @if (showSecondaryAction && secondaryActionLabel) {\n <s-button\n [id]=\"id + '-secondary-action'\"\n id=\"secondaryAction\"\n type=\"button\"\n [label]=\"secondaryActionLabel\"\n priority=\"link\"\n (clicked)=\"secondaryAction.next()\"\n ></s-button>\n }\n </div>\n }\n</div>\n","import { Component, Input } from '@angular/core';\n\nimport { CookieService } from 'ngx-cookie-service';\n\n@Component({\n selector: 's-empty-state-go-back',\n templateUrl: './go-back.component.html',\n styleUrls: [],\n})\nexport class EmptyStateGoBackComponent {\n @Input()\n public iconClass = 'fa fa-exclamation-triangle';\n\n @Input({ required: true })\n public title!: string;\n\n @Input()\n public description?: string;\n\n @Input()\n public primaryActionLabel?: string;\n\n constructor(private readonly _cookieService: CookieService) {}\n\n public goBack() {\n const portalUrl = this._cookieService.get('com.senior.portal.url');\n window.open(portalUrl, '_top');\n }\n}\n","<s-empty-state \n [iconClass]=\"iconClass\" \n [title]=\"title\" \n [description]=\"description\" \n (primaryAction)=\"goBack()\"\n [primaryActionLabel]=\"primaryActionLabel\">\n</s-empty-state>","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { CookieService } from 'ngx-cookie-service';\n\nimport { EmptyStateComponent } from './empty-state.component';\nimport { EmptyStateGoBackComponent } from './go-back/go-back.component';\nimport { ButtonModule } from '@seniorsistemas/angular-components/button';\n\n@NgModule({\n imports: [CommonModule, ButtonModule],\n providers: [CookieService],\n declarations: [EmptyStateComponent, EmptyStateGoBackComponent],\n exports: [EmptyStateComponent, EmptyStateGoBackComponent],\n})\nexport class EmptyStateModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2.EmptyStateComponent"],"mappings":";;;;;;;;AAGA;;;;;;;;;;;;;;;;AAgBG;MAMU,mBAAmB,CAAA;AACrB,IAAA,OAAgB,UAAU,GAAG,CAAC,CAAC;AAC9B,IAAA,OAAO,OAAO,GAAG,mBAAmB,CAAC,UAAU,CAAC;AAEjD,IAAA,OAAO,SAAS,GAAA;AACnB,QAAA,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;KACzB;AAED;;AAEG;AAEI,IAAA,EAAE,GAAG,CAAiB,cAAA,EAAA,mBAAmB,CAAC,SAAS,EAAE,EAAE,CAAC;AAE/D;;AAEG;AAEI,IAAA,KAAK,CAAU;AAEtB;;;;;AAKG;IAEI,SAAS,GAAG,aAAa,CAAC;AAEjC;;;AAGG;AAEI,IAAA,WAAW,CAAU;AAE5B;;;;AAIG;IAEI,iBAAiB,GAAG,IAAI,CAAC;AAEhC;;;;AAIG;IAEI,mBAAmB,GAAG,IAAI,CAAC;AAElC;;;AAGG;AAEI,IAAA,kBAAkB,CAAU;;AAI5B,IAAA,oBAAoB,CAAU;AAErC;;;;AAIG;IAEI,YAAY,GAAyB,EAAE,CAAC;AAE/C;;AAEG;AAEI,IAAA,aAAa,GAAG,IAAI,YAAY,EAAQ,CAAC;AAEhD;;AAEG;AAEI,IAAA,eAAe,GAAG,IAAI,YAAY,EAAQ,CAAC;wGAjFzC,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAnB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,mBAAmB,0aCzBhC,q6CAqDA,EAAA,MAAA,EAAA,CAAA,wXAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,OAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,UAAA,EAAA,WAAA,EAAA,MAAA,EAAA,UAAA,EAAA,aAAA,EAAA,eAAA,EAAA,MAAA,EAAA,OAAA,EAAA,WAAA,EAAA,OAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FD5Ba,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAL/B,SAAS;+BACI,eAAe,EAAA,QAAA,EAAA,q6CAAA,EAAA,MAAA,EAAA,CAAA,wXAAA,CAAA,EAAA,CAAA;8BAgBlB,EAAE,EAAA,CAAA;sBADR,KAAK;gBAOC,KAAK,EAAA,CAAA;sBADX,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAA;gBAUlB,SAAS,EAAA,CAAA;sBADf,KAAK;gBAQC,WAAW,EAAA,CAAA;sBADjB,KAAK;gBASC,iBAAiB,EAAA,CAAA;sBADvB,KAAK;gBASC,mBAAmB,EAAA,CAAA;sBADzB,KAAK;gBAQC,kBAAkB,EAAA,CAAA;sBADxB,KAAK;gBAKC,oBAAoB,EAAA,CAAA;sBAD1B,KAAK;gBASC,YAAY,EAAA,CAAA;sBADlB,KAAK;gBAOC,aAAa,EAAA,CAAA;sBADnB,MAAM;gBAOA,eAAe,EAAA,CAAA;sBADrB,MAAM;;;MEhGE,yBAAyB,CAAA;AAaL,IAAA,cAAA,CAAA;IAXtB,SAAS,GAAG,4BAA4B,CAAC;AAGzC,IAAA,KAAK,CAAU;AAGf,IAAA,WAAW,CAAU;AAGrB,IAAA,kBAAkB,CAAU;AAEnC,IAAA,WAAA,CAA6B,cAA6B,EAAA;QAA7B,IAAc,CAAA,cAAA,GAAd,cAAc,CAAe;KAAI;IAEvD,MAAM,GAAA;QACT,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;AACnE,QAAA,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;KAClC;wGAlBQ,yBAAyB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,aAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAzB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,yBAAyB,uLCTtC,mNAMgB,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,mBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,OAAA,EAAA,WAAA,EAAA,aAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,cAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,EAAA,iBAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FDGH,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBALrC,SAAS;+BACI,uBAAuB,EAAA,QAAA,EAAA,mNAAA,EAAA,CAAA;oFAM1B,SAAS,EAAA,CAAA;sBADf,KAAK;gBAIC,KAAK,EAAA,CAAA;sBADX,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAA;gBAIlB,WAAW,EAAA,CAAA;sBADjB,KAAK;gBAIC,kBAAkB,EAAA,CAAA;sBADxB,KAAK;;;MEJG,gBAAgB,CAAA;wGAAhB,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;yGAAhB,gBAAgB,EAAA,YAAA,EAAA,CAHV,mBAAmB,EAAE,yBAAyB,CAAA,EAAA,OAAA,EAAA,CAFnD,YAAY,EAAE,YAAY,CAAA,EAAA,OAAA,EAAA,CAG1B,mBAAmB,EAAE,yBAAyB,CAAA,EAAA,CAAA,CAAA;AAE/C,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,aAJd,CAAC,aAAa,CAAC,EADhB,OAAA,EAAA,CAAA,YAAY,EAAE,YAAY,CAAA,EAAA,CAAA,CAAA;;4FAK3B,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAN5B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,OAAO,EAAE,CAAC,YAAY,EAAE,YAAY,CAAC;oBACrC,SAAS,EAAE,CAAC,aAAa,CAAC;AAC1B,oBAAA,YAAY,EAAE,CAAC,mBAAmB,EAAE,yBAAyB,CAAC;AAC9D,oBAAA,OAAO,EAAE,CAAC,mBAAmB,EAAE,yBAAyB,CAAC;AAC5D,iBAAA,CAAA;;;ACdD;;AAEG;;;;"}
@@ -7,14 +7,34 @@ import { CommonModule } from '@angular/common';
7
7
  import * as i2 from '@seniorsistemas/angular-components/interactive-content';
8
8
  import { InteractiveContentDirective } from '@seniorsistemas/angular-components/interactive-content';
9
9
 
10
+ /**
11
+ * @description Componente de fieldset com legenda, ícone configurável e suporte a
12
+ * toggle (recolher/expandir) com animação. Suporta template personalizado para o
13
+ * cabeçalho via diretiva `TemplateDirective` com tipo `'header'`.
14
+ *
15
+ * @example
16
+ * ```html
17
+ * <s-fieldset legend="Dados pessoais" [toggleable]="true">
18
+ * <p>Conteúdo do fieldset</p>
19
+ * </s-fieldset>
20
+ * ```
21
+ *
22
+ * @category Inputs
23
+ */
10
24
  class FieldsetComponent {
25
+ /** @description Texto exibido como título do fieldset. @default '' */
11
26
  legend = '';
27
+ /** @description Habilita o botão de toggle que permite recolher e expandir o conteúdo. @default false */
12
28
  toggleable = false;
29
+ /** @description Classe de ícone exibida ao lado da legenda (ex.: `'fas fa-cog'`). @default '' */
13
30
  icon = '';
31
+ /** @description Quando `true`, remove o conteúdo do DOM ao recolher o fieldset. @default true */
14
32
  destroyOnHide = true;
15
33
  templateDirectives;
16
34
  headerTemplate;
35
+ /** @description Emitido imediatamente antes da animação de toggle iniciar, com o estado atual. */
17
36
  beforeToggle = new EventEmitter();
37
+ /** @description Emitido após a animação de toggle concluir, com o novo estado. */
18
38
  afterToggle = new EventEmitter();
19
39
  active = true;
20
40
  ngAfterViewInit() {
@@ -47,7 +67,7 @@ class FieldsetComponent {
47
67
  }
48
68
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FieldsetComponent, decorators: [{
49
69
  type: Component,
50
- args: [{ selector: "s-fieldset", animations: [
70
+ args: [{ selector: 's-fieldset', animations: [
51
71
  trigger('toggleAnimation', [
52
72
  transition(':enter', [
53
73
  style({ opacity: 0, height: 0 }),
@@ -1 +1 @@
1
- {"version":3,"file":"seniorsistemas-angular-components-fieldset.mjs","sources":["../../projects/angular-components/fieldset/src/lib/fieldset/fieldset.component.ts","../../projects/angular-components/fieldset/src/lib/fieldset/fieldset.component.html","../../projects/angular-components/fieldset/src/lib/fieldset/fieldset.module.ts","../../projects/angular-components/fieldset/src/seniorsistemas-angular-components-fieldset.ts"],"sourcesContent":["import { animate, state, style, transition, trigger } from \"@angular/animations\";\nimport { AfterViewInit, Component, ContentChildren, EventEmitter, Input, Output, QueryList, TemplateRef } from \"@angular/core\";\n\n\nimport { TemplateDirective } from \"@seniorsistemas/angular-components/template\";\nimport { FieldSetToggle } from \"./fieldset.models\";\n\n@Component({\n selector: \"s-fieldset\",\n templateUrl: \"./fieldset.component.html\",\n styleUrls: [\"./fieldset.component.scss\"],\n animations: [\n trigger('toggleAnimation', [\n transition(':enter', [\n style({ opacity: 0, height: 0 }),\n animate('300ms ease-out', style({ opacity: 1, height: '*' })),\n ]),\n transition(':leave', [\n style({ opacity: 1, height: '*' }),\n animate('300ms ease-in', style({ opacity: 0, height: 0 })),\n ]),\n state('open', style({ opacity: 1, height: '*' })),\n state('closed', style({ opacity: 0, height: 0 })),\n transition('open <=> closed', animate('300ms ease')),\n ]),\n ],\n})\nexport class FieldsetComponent implements AfterViewInit {\n @Input() legend = '';\n @Input() toggleable = false;\n @Input() icon = '';\n @Input() destroyOnHide = true;\n @ContentChildren(TemplateDirective) readonly templateDirectives: QueryList<TemplateDirective> | undefined;\n headerTemplate: TemplateRef<any> | undefined;\n @Output() beforeToggle = new EventEmitter<FieldSetToggle>();\n @Output() afterToggle = new EventEmitter<FieldSetToggle>();\n active = true;\n\n ngAfterViewInit(): void {\n this.headerTemplate = this.templateDirectives?.find((template) => template.type === 'header')?.template;\n }\n\n toggleActive(originalEvent: PointerEvent | KeyboardEvent) {\n if (!this.toggleable) {\n return;\n }\n this.beforeToggle.next({ collapsed: this.active, originalEvent })\n this.active = !this.active;\n this.afterToggle.next({ collapsed: this.active, originalEvent })\n }\n}\n","<fieldset\n class=\"fieldset\"\n [class.fieldset-togglable]=\"toggleable\"\n>\n <legend\n class=\"fieldset-title\"\n (sInteractiveContent)=\"toggleActive($event)\"\n >\n <ng-container *ngIf=\"toggleable\">\n @if (active) {\n <i class=\"fas fa-plus\"></i>\n } @else {\n <i class=\"fas fa-minus\"></i>\n }\n </ng-container>\n @if (headerTemplate) {\n <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n } @else {\n <i\n *ngIf=\"icon\"\n [class]=\"icon\"\n ></i>\n {{ legend }}\n }\n </legend>\n @if (destroyOnHide ? (toggleable ? active : true) : true) {\n <div [@toggleAnimation]=\"destroyOnHide ? null : active ? 'open' : 'closed'\">\n <ng-content></ng-content>\n </div>\n }\n</fieldset>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { InteractiveContentDirective } from '@seniorsistemas/angular-components/interactive-content';\n\nimport { FieldsetComponent } from './fieldset.component';\n\n@NgModule({\n imports: [CommonModule, InteractiveContentDirective],\n declarations: [FieldsetComponent],\n exports: [FieldsetComponent],\n})\nexport class FieldsetModule {}\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-fieldset.mjs","sources":["../../projects/angular-components/fieldset/src/lib/fieldset/fieldset.component.ts","../../projects/angular-components/fieldset/src/lib/fieldset/fieldset.component.html","../../projects/angular-components/fieldset/src/lib/fieldset/fieldset.module.ts","../../projects/angular-components/fieldset/src/seniorsistemas-angular-components-fieldset.ts"],"sourcesContent":["import { animate, state, style, transition, trigger } from '@angular/animations';\nimport {\n AfterViewInit,\n Component,\n ContentChildren,\n EventEmitter,\n Input,\n Output,\n QueryList,\n TemplateRef,\n} from '@angular/core';\n\nimport { TemplateDirective } from '@seniorsistemas/angular-components/template';\nimport { FieldSetToggle } from './fieldset.models';\n\n/**\n * @description Componente de fieldset com legenda, ícone configurável e suporte a\n * toggle (recolher/expandir) com animação. Suporta template personalizado para o\n * cabeçalho via diretiva `TemplateDirective` com tipo `'header'`.\n *\n * @example\n * ```html\n * <s-fieldset legend=\"Dados pessoais\" [toggleable]=\"true\">\n * <p>Conteúdo do fieldset</p>\n * </s-fieldset>\n * ```\n *\n * @category Inputs\n */\n@Component({\n selector: 's-fieldset',\n templateUrl: './fieldset.component.html',\n styleUrls: ['./fieldset.component.scss'],\n animations: [\n trigger('toggleAnimation', [\n transition(':enter', [\n style({ opacity: 0, height: 0 }),\n animate('300ms ease-out', style({ opacity: 1, height: '*' })),\n ]),\n transition(':leave', [\n style({ opacity: 1, height: '*' }),\n animate('300ms ease-in', style({ opacity: 0, height: 0 })),\n ]),\n state('open', style({ opacity: 1, height: '*' })),\n state('closed', style({ opacity: 0, height: 0 })),\n transition('open <=> closed', animate('300ms ease')),\n ]),\n ],\n})\nexport class FieldsetComponent implements AfterViewInit {\n /** @description Texto exibido como título do fieldset. @default '' */\n @Input() legend = '';\n /** @description Habilita o botão de toggle que permite recolher e expandir o conteúdo. @default false */\n @Input() toggleable = false;\n /** @description Classe de ícone exibida ao lado da legenda (ex.: `'fas fa-cog'`). @default '' */\n @Input() icon = '';\n /** @description Quando `true`, remove o conteúdo do DOM ao recolher o fieldset. @default true */\n @Input() destroyOnHide = true;\n @ContentChildren(TemplateDirective) readonly templateDirectives: QueryList<TemplateDirective> | undefined;\n headerTemplate: TemplateRef<any> | undefined;\n /** @description Emitido imediatamente antes da animação de toggle iniciar, com o estado atual. */\n @Output() beforeToggle = new EventEmitter<FieldSetToggle>();\n /** @description Emitido após a animação de toggle concluir, com o novo estado. */\n @Output() afterToggle = new EventEmitter<FieldSetToggle>();\n active = true;\n\n ngAfterViewInit(): void {\n this.headerTemplate = this.templateDirectives?.find((template) => template.type === 'header')?.template;\n }\n\n toggleActive(originalEvent: PointerEvent | KeyboardEvent) {\n if (!this.toggleable) {\n return;\n }\n this.beforeToggle.next({ collapsed: this.active, originalEvent });\n this.active = !this.active;\n this.afterToggle.next({ collapsed: this.active, originalEvent });\n }\n}\n\n","<fieldset\n class=\"fieldset\"\n [class.fieldset-togglable]=\"toggleable\"\n>\n <legend\n class=\"fieldset-title\"\n (sInteractiveContent)=\"toggleActive($event)\"\n >\n <ng-container *ngIf=\"toggleable\">\n @if (active) {\n <i class=\"fas fa-plus\"></i>\n } @else {\n <i class=\"fas fa-minus\"></i>\n }\n </ng-container>\n @if (headerTemplate) {\n <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n } @else {\n <i\n *ngIf=\"icon\"\n [class]=\"icon\"\n ></i>\n {{ legend }}\n }\n </legend>\n @if (destroyOnHide ? (toggleable ? active : true) : true) {\n <div [@toggleAnimation]=\"destroyOnHide ? null : active ? 'open' : 'closed'\">\n <ng-content></ng-content>\n </div>\n }\n</fieldset>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { InteractiveContentDirective } from '@seniorsistemas/angular-components/interactive-content';\n\nimport { FieldsetComponent } from './fieldset.component';\n\n@NgModule({\n imports: [CommonModule, InteractiveContentDirective],\n declarations: [FieldsetComponent],\n exports: [FieldsetComponent],\n})\nexport class FieldsetModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -36,6 +36,24 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
36
36
  type: Injectable
37
37
  }] });
38
38
 
39
+ /**
40
+ * @description Componente de upload de arquivos com suporte a seleção múltipla,
41
+ * validação de tipo/tamanho, controle de permissões (adicionar, ler, remover),
42
+ * download e cancelamento de uploads em andamento.
43
+ *
44
+ * @example
45
+ * ```html
46
+ * <s-file-picker
47
+ * [multiple]="true"
48
+ * accept="application/pdf"
49
+ * [maxFileSize]="5242880"
50
+ * [files]="arquivos"
51
+ * (uploadHandler)="onUpload($event)"
52
+ * (removeFile)="onRemove($event)" />
53
+ * ```
54
+ *
55
+ * @category Inputs
56
+ */
39
57
  class FilePickerComponent {
40
58
  sanitizer;
41
59
  filePickerService;
@@ -46,26 +64,50 @@ class FilePickerComponent {
46
64
  REMOVE_PERMISSION = 'remove';
47
65
  inputUpload = null;
48
66
  anchor = null;
67
+ /** @description Identificador do componente no DOM. Gerado automaticamente se não informado. */
49
68
  id = `s-file-picker-${FilePickerComponent.nextId++}`;
69
+ /** @description Rótulo do botão de seleção de arquivo. */
50
70
  chooseLabel;
71
+ /** @description Rótulo do botão de remoção de arquivo. */
51
72
  removeLabel;
73
+ /** @description Rótulo do botão de cancelamento de upload. */
52
74
  cancelLabel;
75
+ /** @description Texto do tooltip exibido após upload bem-sucedido. */
53
76
  successTooltip;
77
+ /** @description Permite selecionar múltiplos arquivos ao mesmo tempo. */
54
78
  multiple;
79
+ /** @description Tipos MIME aceitos pelo seletor de arquivo (ex.: `'application/pdf,image/*'`). */
55
80
  accept;
81
+ /** @description Lista de extensões de arquivo aceitas para validação (ex.: `['.pdf', '.docx']`). @default [] */
56
82
  supportedExtensions = [];
83
+ /** @description Label ARIA para o nome do arquivo, para leitores de tela. */
57
84
  ariaLabelFileName;
85
+ /** @description Tamanho máximo por arquivo em bytes. */
58
86
  maxFileSize;
87
+ /** @description Tamanho máximo combinado de todos os arquivos em bytes. */
59
88
  maxCombinedFileSize;
89
+ /** @description Número máximo de arquivos que podem ser selecionados. */
60
90
  fileLimit;
91
+ /** @description Label ARIA para a barra de progresso do upload. */
61
92
  ariaLabelProgress;
93
+ /** @description Label ARIA para o ícone de sucesso. */
62
94
  ariaLabelSuccess;
95
+ /** @description Label ARIA para mensagens de erro de validação. */
63
96
  ariaLabelError;
97
+ /** @description Label ARIA para o botão de remoção de arquivo. */
64
98
  ariaLabelRemove;
99
+ /** @description FormControl externo vinculado ao componente para controle de estado. */
65
100
  formControl;
101
+ /** @description Desabilita todas as interações do componente. @default false */
66
102
  disabled = false;
103
+ /** @description Exibe a data de upload de cada arquivo. @default false */
67
104
  showFileUploadDate = false;
105
+ /** @description Lista de permissões habilitadas no componente: `'add'`, `'read'`, `'remove'`. @default ALL_PERMISSIONS */
68
106
  permissions = ALL_PERMISSIONS;
107
+ /**
108
+ * @description Lista de arquivos já enviados a serem exibidos no componente.
109
+ * Ao atribuir, os arquivos são processados e suas URLs são geradas para preview.
110
+ */
69
111
  set files(files) {
70
112
  if (!files || files?.length === 0) {
71
113
  this._files = [];
@@ -79,10 +121,15 @@ class FilePickerComponent {
79
121
  return file;
80
122
  });
81
123
  }
124
+ /** @description Emitido quando o usuário seleciona arquivos válidos para upload. */
82
125
  uploadHandler = new EventEmitter();
126
+ /** @description Emitido quando o usuário remove um arquivo da lista. */
83
127
  removeFile = new EventEmitter();
128
+ /** @description Emitido quando o usuário cancela um upload em andamento. Emite o índice do arquivo cancelado. */
84
129
  cancelUpload = new EventEmitter();
130
+ /** @description Emitido quando o usuário clica para baixar um arquivo. */
85
131
  downloadFile = new EventEmitter();
132
+ /** @description Emitido quando um arquivo não passa na validação de tipo, tamanho ou limite. */
86
133
  validateErrors = new EventEmitter();
87
134
  _files = [];
88
135
  ngUsubscribe = new Subject();
@@ -1 +1 @@
1
- {"version":3,"file":"seniorsistemas-angular-components-file-picker.mjs","sources":["../../projects/angular-components/file-picker/src/lib/file-picker/models/file-picker-permissions.ts","../../projects/angular-components/file-picker/src/lib/file-picker/file-picker.service.ts","../../projects/angular-components/file-picker/src/lib/file-picker/file-picker.component.ts","../../projects/angular-components/file-picker/src/lib/file-picker/file-picker.component.html","../../projects/angular-components/file-picker/src/lib/file-picker/file-picker.module.ts","../../projects/angular-components/file-picker/src/seniorsistemas-angular-components-file-picker.ts"],"sourcesContent":["export type FilePickerPermissions = 'add' | 'read' | 'remove';\n\nexport const ALL_PERMISSIONS: FilePickerPermissions[] = ['add', 'read', 'remove'];\n","import { Injectable } from '@angular/core';\n\nimport { CustomHttpClient } from '@seniorsistemas/angular-components/common';\n\nimport { ListBlobMetadataRequest, ListBlobMetadataResponse } from './models/list-blob-metadata';\n\n@Injectable()\nexport class FilePickerService {\n private BASE_URL_FIELD_CUSTOMIZATION = 'platform/field_customization';\n private TOKEN = new AbortController();\n\n public async getMetadataCustomField<T>(request: ListBlobMetadataRequest): Promise<ListBlobMetadataResponse> {\n return CustomHttpClient.post(`${this.BASE_URL_FIELD_CUSTOMIZATION}/queries/getFileMetadata`, request, {\n signal: this.TOKEN.signal,\n });\n }\n}\n","import {\n AfterContentInit,\n Component,\n ElementRef,\n EventEmitter,\n HostListener,\n Input,\n OnDestroy,\n OnInit,\n Output,\n ViewChild,\n} from '@angular/core';\nimport { FormControl } from '@angular/forms';\nimport { DomSanitizer } from '@angular/platform-browser';\n\nimport { TranslateService } from '@ngx-translate/core';\nimport { DEPRECATED_CONFIG } from '@seniorsistemas/angular-components/common/deprecated-selector';\nimport { DeprecatedSelectorDirective } from '@seniorsistemas/angular-components/common/deprecated-selector';\nimport { Breakpoints, isNullOrUndefined } from '@seniorsistemas/angular-components/utils';\nimport moment from 'moment';\nimport { Subject } from 'rxjs';\n\nimport { FilePickerService } from './file-picker.service';\nimport { FileDto } from './models/file-dto';\nimport { ALL_PERMISSIONS, FilePickerPermissions } from './models/file-picker-permissions';\nimport { ListBlobMetadataResponse } from './models/list-blob-metadata';\nimport { UploadError } from './models/uploadError';\n\n@Component({\n selector: 's-file-picker, s-file-upload',\n templateUrl: './file-picker.component.html',\n styleUrls: ['./file-picker.component.scss'],\n hostDirectives: [DeprecatedSelectorDirective],\n providers: [\n {\n provide: DEPRECATED_CONFIG,\n useValue: {\n oldSelector: 's-file-upload',\n newSelector: 's-file-picker',\n removalVersion: '20.0.0',\n },\n },\n ],\n})\nexport class FilePickerComponent implements OnInit, OnDestroy, AfterContentInit {\n public static nextId = 0;\n\n public ADD_PERMISSION: FilePickerPermissions = 'add';\n public READ_PERMISSION: FilePickerPermissions = 'read';\n public REMOVE_PERMISSION: FilePickerPermissions = 'remove';\n\n @ViewChild('inputUpload', { static: false })\n private readonly inputUpload: ElementRef | null = null;\n\n @ViewChild('anchor', { static: false })\n private readonly anchor: ElementRef | null = null;\n\n @Input()\n public id = `s-file-picker-${FilePickerComponent.nextId++}`;\n\n @Input()\n public chooseLabel?: string;\n\n @Input()\n public removeLabel?: string;\n\n @Input()\n public cancelLabel?: string;\n\n @Input()\n public successTooltip?: string;\n\n @Input()\n public multiple?: boolean;\n\n @Input()\n public accept?: string;\n\n @Input()\n public supportedExtensions: string[] = [];\n\n @Input()\n public ariaLabelFileName?: string;\n\n @Input()\n public maxFileSize?: number;\n\n @Input()\n public maxCombinedFileSize?: number;\n\n @Input()\n public fileLimit?: number;\n\n @Input()\n public ariaLabelProgress?: string;\n\n @Input()\n public ariaLabelSuccess?: string;\n\n @Input()\n public ariaLabelError?: string;\n\n @Input()\n public ariaLabelRemove?: string;\n\n @Input()\n public formControl?: FormControl;\n\n @Input()\n public disabled = false;\n\n @Input()\n public showFileUploadDate: boolean = false;\n\n @Input()\n public permissions: FilePickerPermissions[] = ALL_PERMISSIONS;\n\n @Input()\n public set files(files: FileDto[]) {\n if (!files || files?.length === 0) {\n this._files = [];\n return;\n }\n if (this.showFileUploadDate && files[0]?.objectId) {\n this.getUploadDate(files);\n }\n this._files = files.map((file) => {\n file.objectURL = this.sanitizer.bypassSecurityTrustUrl(window.URL.createObjectURL(file));\n return file;\n });\n }\n\n @Output()\n public uploadHandler: EventEmitter<{ files: FileDto[] }> = new EventEmitter();\n\n @Output()\n public removeFile: EventEmitter<{ file: File }> = new EventEmitter();\n\n @Output()\n public cancelUpload: EventEmitter<number> = new EventEmitter();\n\n @Output()\n public downloadFile: EventEmitter<{ index: number; anchor: ElementRef }> = new EventEmitter();\n\n @Output()\n public validateErrors: EventEmitter<UploadError> = new EventEmitter();\n\n private _files: FileDto[] = [];\n private readonly ngUsubscribe: Subject<void> = new Subject();\n public isSmallDevice = false;\n public inputValue = '';\n public modifiedDate?: string;\n\n constructor(\n private readonly sanitizer: DomSanitizer,\n private readonly filePickerService: FilePickerService,\n private readonly translate: TranslateService,\n ) {}\n\n public ngOnInit(): void {\n this.supportedExtensions = this.supportedExtensions.map((extension) =>\n extension.replace('.', '').toLowerCase(),\n );\n }\n\n public ngOnDestroy() {\n this.ngUsubscribe.next();\n this.ngUsubscribe.complete();\n }\n\n public ngAfterContentInit() {\n this.update();\n }\n\n @HostListener('window:resize')\n public onResize() {\n this.update();\n }\n\n public _onInputFileSelect($event: Event): void {\n const eventTargetFiles = ($event.target as HTMLInputElement)?.files as FileList;\n const dataTransferFiles = ($event as DragEvent).dataTransfer?.files as FileList;\n const files: FileDto[] = Array.from(dataTransferFiles ? dataTransferFiles : eventTargetFiles);\n this.onFileSelect(files);\n }\n\n public onFileSelect(files: FileDto[]): void {\n const newFiles: FileDto[] = [];\n\n if (!this.multiple) {\n this.files = [];\n }\n\n if (this.isFileLimitExceeded(files)) {\n this.validateErrors.emit({\n files,\n validation: 'maxFileLimit',\n });\n this.clearFileInput();\n return;\n }\n\n if (this.isFileCombinedSizeExceeded(files)) {\n this.validateErrors.emit({\n files: files,\n validation: 'maxCombinedFileSize',\n });\n this.clearFileInput();\n return;\n }\n\n for (const file of files) {\n if (this.isUnsupportedFileExtension(file)) {\n this.validateErrors.emit({\n files: [file],\n validation: 'unsupportedExtension',\n });\n continue;\n }\n\n if (this.isFileSizeExceeded(file)) {\n this.validateErrors.emit({\n files: [file],\n validation: 'maxFileSize',\n });\n continue;\n }\n\n newFiles.push(file);\n }\n\n if (newFiles.length) {\n this.files = this.files.concat(newFiles);\n this.uploadHandler.emit({\n files: newFiles,\n });\n }\n\n this.clearFileInput();\n }\n\n public onRemoveFile(file: FileDto): void {\n const fileIndex = this.files.indexOf(file);\n const removedFiles = this.files.splice(fileIndex, 1);\n\n if (removedFiles.length) {\n this.removeFile.emit({ file });\n }\n }\n\n public onCancelUpload(index: number) {\n const removedFiles = this.files.splice(index, 1);\n\n if (removedFiles.length) {\n this.cancelUpload.emit(index);\n }\n\n this.clearFileInput();\n }\n\n public onDowloadFile(index: number) {\n if (isNullOrUndefined(this.anchor)) return;\n\n this.downloadFile.emit({\n index,\n anchor: this.anchor,\n });\n }\n\n public get files(): FileDto[] {\n return this._files;\n }\n\n public formatFileSize(size: number): string {\n if (size === 0) {\n return '0 Bytes';\n }\n const k = 1024;\n const sizes = ['bytes', 'KB', 'MB', 'GB', 'TB'];\n const i = Math.floor(Math.log(size) / Math.log(k));\n return parseFloat((size / Math.pow(k, i)).toFixed(2)) + ' ' + sizes[i];\n }\n\n private update() {\n const windowWidth = window.innerWidth;\n this.isSmallDevice = windowWidth <= Breakpoints.SM_MAX;\n }\n\n private isFileLimitExceeded(files: FileDto[]) {\n if (!this.fileLimit) {\n return false;\n }\n return this.files.length + files.length > this.fileLimit;\n }\n\n private isFileCombinedSizeExceeded(files: File[]): boolean {\n if (!this.maxCombinedFileSize) {\n return false;\n }\n\n const filesList = [...files, ...this.files];\n\n const combinedSize = filesList.reduce((combinedSize, file) => combinedSize + file.size, 0);\n\n return combinedSize > this.maxCombinedFileSize;\n }\n\n private isFileSizeExceeded(file: File): boolean {\n if (!this.maxFileSize) {\n return false;\n }\n return file.size > this.maxFileSize;\n }\n\n private isUnsupportedFileExtension(file: File) {\n if (this.supportedExtensions?.length) {\n const extension = file.name.split('.').pop()?.toLowerCase() ?? '';\n\n return !this.supportedExtensions.includes(extension);\n }\n return false;\n }\n\n private clearFileInput() {\n if (isNullOrUndefined(this.inputUpload?.nativeElement)) return;\n\n this.inputUpload.nativeElement.value = null;\n }\n\n private getUploadDate(blobFile: FileDto[]): void {\n if (!blobFile) {\n return;\n }\n\n this.filePickerService\n .getMetadataCustomField({ objectId: blobFile[0].objectId ?? '' })\n .then((metadata) => this.setModifiedDate(metadata));\n }\n\n private setModifiedDate(metadata: ListBlobMetadataResponse): void {\n const hour = moment(metadata.modified).format('HH');\n const minutes = moment(metadata.modified).format('mm');\n const day = moment(metadata.modified).format('DD');\n const month = moment(metadata.modified).format('MM');\n const fullYear = moment(metadata.modified).format('YYYY');\n\n this.modifiedDate = this.translate.instant('platform.angular_components.date_modified_custom_blob', {\n hour,\n minutes,\n day,\n month,\n fullYear,\n });\n }\n}\n\n","<div\n [id]=\"id\"\n class=\"file-picker\"\n>\n <div class=\"file-picker-choose\">\n <input\n #inputUpload\n [id]=\"id + 'input-upload'\"\n type=\"file\"\n name=\"file\"\n [accept]=\"accept\"\n [multiple]=\"multiple\"\n (change)=\"_onInputFileSelect($event)\"\n />\n @if (permissions.includes(ADD_PERMISSION)) {\n <s-button\n [id]=\"id + 'upload-button'\"\n [label]=\"chooseLabel || 'platform.angular_components.attach_files' | translate\"\n (clicked)=\"inputUpload.click()\"\n priority=\"primary\"\n [disabled]=\"disabled || !!formControl?.disabled || fileLimit === files.length\"\n [auxiliary]=\"false\"\n >\n </s-button>\n }\n </div>\n\n @if (files.length) {\n <section\n [id]=\"id + 'fileupload-list'\"\n class=\"file-picker-list\"\n role=\"grid\"\n >\n @for (file of files; track file; let i = $index) {\n <div\n class=\"file-picker-list-file\"\n role=\"row\"\n >\n <div\n [id]=\"id + '-file-' + i + '-name'\"\n class=\"flex flex-grow items-center justify-between overflow-hidden text-ellipsis text-nowrap\"\n role=\"gridcell\"\n >\n <ng-container\n *ngTemplateOutlet=\"\n (permissions.includes(READ_PERMISSION) && file.savedFile) || file.progress === 100\n ? descriptionUrl\n : description;\n context: {\n $implicit: file,\n index: i,\n }\n \"\n >\n </ng-container>\n\n <span>{{ formatFileSize(file.size) }}</span>\n\n @if (modifiedDate) {\n <span class=\"file-picker-list-file-name-date\">{{ modifiedDate }}</span>\n }\n </div>\n <div\n class=\"file-picker-list-file-status\"\n role=\"gridcell\"\n >\n @if (file.isUploading && !isSmallDevice) {\n <div class=\"w-64\">\n <s-progressbar\n [value]=\"file.progress ?? 0\"\n [showValue]=\"false\"\n activeColor=\"blue\"\n ></s-progressbar>\n </div>\n }\n\n @if (file.isUploading && isSmallDevice) {\n <span\n [id]=\"id + '-file-' + i + '-spin'\"\n class=\"fas fa-circle-notch fa-spin\"\n [attr.aria-label]=\"\n ariaLabelProgress || 'platform.angular_components.loading_file' | translate\n \"\n >\n </span>\n }\n\n @if (!file.isUploading && !file.error && file.progress === 100) {\n <span\n [id]=\"id + '-file-' + i + '-check'\"\n class=\"fas fa-check\"\n role=\"alert\"\n [attr.aria-label]=\"\n ariaLabelSuccess ||\n successTooltip ||\n 'platform.angular_components.file_attached_successfully' | translate\n \"\n [pTooltip]=\"\n successTooltip || 'platform.angular_components.file_attached_successfully'\n | translate\n \"\n tooltipPosition=\"top\"\n showDelay=\"500\"\n [appendTo]=\"'body'\"\n >\n </span>\n }\n\n @if (file.error?.message) {\n <span\n [id]=\"id + '-file-' + i + '-error'\"\n class=\"fas fa-times\"\n role=\"alert\"\n [pTooltip]=\"file.error?.message\"\n tooltipPosition=\"top\"\n showDelay=\"500\"\n [appendTo]=\"'body'\"\n >\n </span>\n }\n </div>\n <div\n class=\"file-picker-list-file-actions\"\n role=\"gridcell\"\n >\n @if (file.isUploading) {\n <a\n [id]=\"id + '-file-' + i + '-cancel'\"\n class=\"file-picker-list-file-actions-action\"\n (click)=\"onCancelUpload(i)\"\n >\n {{ cancelLabel || 'platform.angular_components.cancel' | translate }}\n </a>\n }\n\n @if (\n permissions.includes(REMOVE_PERMISSION) &&\n !file.isUploading &&\n !(disabled || !!formControl?.disabled)\n ) {\n <a\n role=\"button\"\n tabindex=\"0\"\n [id]=\"id + '-file-' + i + '-remove'\"\n class=\"file-picker-list-file-actions-action\"\n (click)=\"onRemoveFile(file)\"\n [attr.aria-label]=\"\n ariaLabelRemove || removeLabel || 'platform.angular_components.remove' | translate\n \"\n >\n {{ removeLabel || 'platform.angular_components.remove' | translate }}\n </a>\n }\n </div>\n </div>\n }\n </section>\n }\n</div>\n\n<ng-template\n #descriptionUrl\n let-file\n let-i=\"index\"\n>\n <div class=\"flex justify-between\">\n <div>\n <a\n [id]=\"id + '-file-' + i + '-name-link'\"\n tabindex=\"0\"\n (click)=\"onDowloadFile(i)\"\n [attr.aria-label]=\"ariaLabelFileName || file.name\"\n class=\"break-words\"\n >{{ file.name }}\n </a>\n <a\n style=\"display: none\"\n [href]=\"file.objectURL\"\n target=\"_blank\"\n download\n #anchor\n >\n </a>\n </div>\n </div>\n</ng-template>\n\n<ng-template\n #description\n let-file\n>\n <div class=\"flex justify-between\">\n <span\n tabindex=\"0\"\n [attr.aria-label]=\"ariaLabelFileName || file.name\"\n >\n {{ file.name }}\n </span>\n </div>\n</ng-template>\n\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { TranslateModule } from '@ngx-translate/core';\nimport { ButtonModule } from '@seniorsistemas/angular-components/button';\nimport { LocaleModule } from '@seniorsistemas/angular-components/locale';\nimport { ProgressBarModule } from '@seniorsistemas/angular-components/progressbar';\nimport { TooltipModule } from 'primeng/tooltip';\n\nimport { FilePickerComponent } from './file-picker.component';\nimport { FilePickerService } from './file-picker.service';\n\n@NgModule({\n declarations: [FilePickerComponent],\n imports: [CommonModule, ButtonModule, TooltipModule, ProgressBarModule, TranslateModule, LocaleModule],\n providers: [FilePickerService],\n exports: [FilePickerComponent],\n})\nexport class FilePickerModule {}\n\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2.FilePickerService"],"mappings":"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"}
1
+ {"version":3,"file":"seniorsistemas-angular-components-file-picker.mjs","sources":["../../projects/angular-components/file-picker/src/lib/file-picker/models/file-picker-permissions.ts","../../projects/angular-components/file-picker/src/lib/file-picker/file-picker.service.ts","../../projects/angular-components/file-picker/src/lib/file-picker/file-picker.component.ts","../../projects/angular-components/file-picker/src/lib/file-picker/file-picker.component.html","../../projects/angular-components/file-picker/src/lib/file-picker/file-picker.module.ts","../../projects/angular-components/file-picker/src/seniorsistemas-angular-components-file-picker.ts"],"sourcesContent":["export type FilePickerPermissions = 'add' | 'read' | 'remove';\n\nexport const ALL_PERMISSIONS: FilePickerPermissions[] = ['add', 'read', 'remove'];\n","import { Injectable } from '@angular/core';\n\nimport { CustomHttpClient } from '@seniorsistemas/angular-components/common';\n\nimport { ListBlobMetadataRequest, ListBlobMetadataResponse } from './models/list-blob-metadata';\n\n@Injectable()\nexport class FilePickerService {\n private BASE_URL_FIELD_CUSTOMIZATION = 'platform/field_customization';\n private TOKEN = new AbortController();\n\n public async getMetadataCustomField<T>(request: ListBlobMetadataRequest): Promise<ListBlobMetadataResponse> {\n return CustomHttpClient.post(`${this.BASE_URL_FIELD_CUSTOMIZATION}/queries/getFileMetadata`, request, {\n signal: this.TOKEN.signal,\n });\n }\n}\n","import {\n AfterContentInit,\n Component,\n ElementRef,\n EventEmitter,\n HostListener,\n Input,\n OnDestroy,\n OnInit,\n Output,\n ViewChild,\n} from '@angular/core';\nimport { FormControl } from '@angular/forms';\nimport { DomSanitizer } from '@angular/platform-browser';\n\nimport { TranslateService } from '@ngx-translate/core';\nimport { DEPRECATED_CONFIG } from '@seniorsistemas/angular-components/common/deprecated-selector';\nimport { DeprecatedSelectorDirective } from '@seniorsistemas/angular-components/common/deprecated-selector';\nimport { Breakpoints, isNullOrUndefined } from '@seniorsistemas/angular-components/utils';\nimport moment from 'moment';\nimport { Subject } from 'rxjs';\n\nimport { FilePickerService } from './file-picker.service';\nimport { FileDto } from './models/file-dto';\nimport { ALL_PERMISSIONS, FilePickerPermissions } from './models/file-picker-permissions';\nimport { ListBlobMetadataResponse } from './models/list-blob-metadata';\nimport { UploadError } from './models/uploadError';\n\n/**\n * @description Componente de upload de arquivos com suporte a seleção múltipla,\n * validação de tipo/tamanho, controle de permissões (adicionar, ler, remover),\n * download e cancelamento de uploads em andamento.\n *\n * @example\n * ```html\n * <s-file-picker\n * [multiple]=\"true\"\n * accept=\"application/pdf\"\n * [maxFileSize]=\"5242880\"\n * [files]=\"arquivos\"\n * (uploadHandler)=\"onUpload($event)\"\n * (removeFile)=\"onRemove($event)\" />\n * ```\n *\n * @category Inputs\n */\n@Component({\n selector: 's-file-picker, s-file-upload',\n templateUrl: './file-picker.component.html',\n styleUrls: ['./file-picker.component.scss'],\n hostDirectives: [DeprecatedSelectorDirective],\n providers: [\n {\n provide: DEPRECATED_CONFIG,\n useValue: {\n oldSelector: 's-file-upload',\n newSelector: 's-file-picker',\n removalVersion: '20.0.0',\n },\n },\n ],\n})\nexport class FilePickerComponent implements OnInit, OnDestroy, AfterContentInit {\n public static nextId = 0;\n\n public ADD_PERMISSION: FilePickerPermissions = 'add';\n public READ_PERMISSION: FilePickerPermissions = 'read';\n public REMOVE_PERMISSION: FilePickerPermissions = 'remove';\n\n @ViewChild('inputUpload', { static: false })\n private readonly inputUpload: ElementRef | null = null;\n\n @ViewChild('anchor', { static: false })\n private readonly anchor: ElementRef | null = null;\n\n /** @description Identificador do componente no DOM. Gerado automaticamente se não informado. */\n @Input()\n public id = `s-file-picker-${FilePickerComponent.nextId++}`;\n\n /** @description Rótulo do botão de seleção de arquivo. */\n @Input()\n public chooseLabel?: string;\n\n /** @description Rótulo do botão de remoção de arquivo. */\n @Input()\n public removeLabel?: string;\n\n /** @description Rótulo do botão de cancelamento de upload. */\n @Input()\n public cancelLabel?: string;\n\n /** @description Texto do tooltip exibido após upload bem-sucedido. */\n @Input()\n public successTooltip?: string;\n\n /** @description Permite selecionar múltiplos arquivos ao mesmo tempo. */\n @Input()\n public multiple?: boolean;\n\n /** @description Tipos MIME aceitos pelo seletor de arquivo (ex.: `'application/pdf,image/*'`). */\n @Input()\n public accept?: string;\n\n /** @description Lista de extensões de arquivo aceitas para validação (ex.: `['.pdf', '.docx']`). @default [] */\n @Input()\n public supportedExtensions: string[] = [];\n\n /** @description Label ARIA para o nome do arquivo, para leitores de tela. */\n @Input()\n public ariaLabelFileName?: string;\n\n /** @description Tamanho máximo por arquivo em bytes. */\n @Input()\n public maxFileSize?: number;\n\n /** @description Tamanho máximo combinado de todos os arquivos em bytes. */\n @Input()\n public maxCombinedFileSize?: number;\n\n /** @description Número máximo de arquivos que podem ser selecionados. */\n @Input()\n public fileLimit?: number;\n\n /** @description Label ARIA para a barra de progresso do upload. */\n @Input()\n public ariaLabelProgress?: string;\n\n /** @description Label ARIA para o ícone de sucesso. */\n @Input()\n public ariaLabelSuccess?: string;\n\n /** @description Label ARIA para mensagens de erro de validação. */\n @Input()\n public ariaLabelError?: string;\n\n /** @description Label ARIA para o botão de remoção de arquivo. */\n @Input()\n public ariaLabelRemove?: string;\n\n /** @description FormControl externo vinculado ao componente para controle de estado. */\n @Input()\n public formControl?: FormControl;\n\n /** @description Desabilita todas as interações do componente. @default false */\n @Input()\n public disabled = false;\n\n /** @description Exibe a data de upload de cada arquivo. @default false */\n @Input()\n public showFileUploadDate: boolean = false;\n\n /** @description Lista de permissões habilitadas no componente: `'add'`, `'read'`, `'remove'`. @default ALL_PERMISSIONS */\n @Input()\n public permissions: FilePickerPermissions[] = ALL_PERMISSIONS;\n\n /**\n * @description Lista de arquivos já enviados a serem exibidos no componente.\n * Ao atribuir, os arquivos são processados e suas URLs são geradas para preview.\n */\n @Input()\n public set files(files: FileDto[]) {\n if (!files || files?.length === 0) {\n this._files = [];\n return;\n }\n if (this.showFileUploadDate && files[0]?.objectId) {\n this.getUploadDate(files);\n }\n this._files = files.map((file) => {\n file.objectURL = this.sanitizer.bypassSecurityTrustUrl(window.URL.createObjectURL(file));\n return file;\n });\n }\n\n /** @description Emitido quando o usuário seleciona arquivos válidos para upload. */\n @Output()\n public uploadHandler: EventEmitter<{ files: FileDto[] }> = new EventEmitter();\n\n /** @description Emitido quando o usuário remove um arquivo da lista. */\n @Output()\n public removeFile: EventEmitter<{ file: File }> = new EventEmitter();\n\n /** @description Emitido quando o usuário cancela um upload em andamento. Emite o índice do arquivo cancelado. */\n @Output()\n public cancelUpload: EventEmitter<number> = new EventEmitter();\n\n /** @description Emitido quando o usuário clica para baixar um arquivo. */\n @Output()\n public downloadFile: EventEmitter<{ index: number; anchor: ElementRef }> = new EventEmitter();\n\n /** @description Emitido quando um arquivo não passa na validação de tipo, tamanho ou limite. */\n @Output()\n public validateErrors: EventEmitter<UploadError> = new EventEmitter();\n\n private _files: FileDto[] = [];\n private readonly ngUsubscribe: Subject<void> = new Subject();\n public isSmallDevice = false;\n public inputValue = '';\n public modifiedDate?: string;\n\n constructor(\n private readonly sanitizer: DomSanitizer,\n private readonly filePickerService: FilePickerService,\n private readonly translate: TranslateService,\n ) {}\n\n public ngOnInit(): void {\n this.supportedExtensions = this.supportedExtensions.map((extension) =>\n extension.replace('.', '').toLowerCase(),\n );\n }\n\n public ngOnDestroy() {\n this.ngUsubscribe.next();\n this.ngUsubscribe.complete();\n }\n\n public ngAfterContentInit() {\n this.update();\n }\n\n @HostListener('window:resize')\n public onResize() {\n this.update();\n }\n\n public _onInputFileSelect($event: Event): void {\n const eventTargetFiles = ($event.target as HTMLInputElement)?.files as FileList;\n const dataTransferFiles = ($event as DragEvent).dataTransfer?.files as FileList;\n const files: FileDto[] = Array.from(dataTransferFiles ? dataTransferFiles : eventTargetFiles);\n this.onFileSelect(files);\n }\n\n public onFileSelect(files: FileDto[]): void {\n const newFiles: FileDto[] = [];\n\n if (!this.multiple) {\n this.files = [];\n }\n\n if (this.isFileLimitExceeded(files)) {\n this.validateErrors.emit({\n files,\n validation: 'maxFileLimit',\n });\n this.clearFileInput();\n return;\n }\n\n if (this.isFileCombinedSizeExceeded(files)) {\n this.validateErrors.emit({\n files: files,\n validation: 'maxCombinedFileSize',\n });\n this.clearFileInput();\n return;\n }\n\n for (const file of files) {\n if (this.isUnsupportedFileExtension(file)) {\n this.validateErrors.emit({\n files: [file],\n validation: 'unsupportedExtension',\n });\n continue;\n }\n\n if (this.isFileSizeExceeded(file)) {\n this.validateErrors.emit({\n files: [file],\n validation: 'maxFileSize',\n });\n continue;\n }\n\n newFiles.push(file);\n }\n\n if (newFiles.length) {\n this.files = this.files.concat(newFiles);\n this.uploadHandler.emit({\n files: newFiles,\n });\n }\n\n this.clearFileInput();\n }\n\n public onRemoveFile(file: FileDto): void {\n const fileIndex = this.files.indexOf(file);\n const removedFiles = this.files.splice(fileIndex, 1);\n\n if (removedFiles.length) {\n this.removeFile.emit({ file });\n }\n }\n\n public onCancelUpload(index: number) {\n const removedFiles = this.files.splice(index, 1);\n\n if (removedFiles.length) {\n this.cancelUpload.emit(index);\n }\n\n this.clearFileInput();\n }\n\n public onDowloadFile(index: number) {\n if (isNullOrUndefined(this.anchor)) return;\n\n this.downloadFile.emit({\n index,\n anchor: this.anchor,\n });\n }\n\n public get files(): FileDto[] {\n return this._files;\n }\n\n public formatFileSize(size: number): string {\n if (size === 0) {\n return '0 Bytes';\n }\n const k = 1024;\n const sizes = ['bytes', 'KB', 'MB', 'GB', 'TB'];\n const i = Math.floor(Math.log(size) / Math.log(k));\n return parseFloat((size / Math.pow(k, i)).toFixed(2)) + ' ' + sizes[i];\n }\n\n private update() {\n const windowWidth = window.innerWidth;\n this.isSmallDevice = windowWidth <= Breakpoints.SM_MAX;\n }\n\n private isFileLimitExceeded(files: FileDto[]) {\n if (!this.fileLimit) {\n return false;\n }\n return this.files.length + files.length > this.fileLimit;\n }\n\n private isFileCombinedSizeExceeded(files: File[]): boolean {\n if (!this.maxCombinedFileSize) {\n return false;\n }\n\n const filesList = [...files, ...this.files];\n\n const combinedSize = filesList.reduce((combinedSize, file) => combinedSize + file.size, 0);\n\n return combinedSize > this.maxCombinedFileSize;\n }\n\n private isFileSizeExceeded(file: File): boolean {\n if (!this.maxFileSize) {\n return false;\n }\n return file.size > this.maxFileSize;\n }\n\n private isUnsupportedFileExtension(file: File) {\n if (this.supportedExtensions?.length) {\n const extension = file.name.split('.').pop()?.toLowerCase() ?? '';\n\n return !this.supportedExtensions.includes(extension);\n }\n return false;\n }\n\n private clearFileInput() {\n if (isNullOrUndefined(this.inputUpload?.nativeElement)) return;\n\n this.inputUpload.nativeElement.value = null;\n }\n\n private getUploadDate(blobFile: FileDto[]): void {\n if (!blobFile) {\n return;\n }\n\n this.filePickerService\n .getMetadataCustomField({ objectId: blobFile[0].objectId ?? '' })\n .then((metadata) => this.setModifiedDate(metadata));\n }\n\n private setModifiedDate(metadata: ListBlobMetadataResponse): void {\n const hour = moment(metadata.modified).format('HH');\n const minutes = moment(metadata.modified).format('mm');\n const day = moment(metadata.modified).format('DD');\n const month = moment(metadata.modified).format('MM');\n const fullYear = moment(metadata.modified).format('YYYY');\n\n this.modifiedDate = this.translate.instant('platform.angular_components.date_modified_custom_blob', {\n hour,\n minutes,\n day,\n month,\n fullYear,\n });\n }\n}\n\n","<div\n [id]=\"id\"\n class=\"file-picker\"\n>\n <div class=\"file-picker-choose\">\n <input\n #inputUpload\n [id]=\"id + 'input-upload'\"\n type=\"file\"\n name=\"file\"\n [accept]=\"accept\"\n [multiple]=\"multiple\"\n (change)=\"_onInputFileSelect($event)\"\n />\n @if (permissions.includes(ADD_PERMISSION)) {\n <s-button\n [id]=\"id + 'upload-button'\"\n [label]=\"chooseLabel || 'platform.angular_components.attach_files' | translate\"\n (clicked)=\"inputUpload.click()\"\n priority=\"primary\"\n [disabled]=\"disabled || !!formControl?.disabled || fileLimit === files.length\"\n [auxiliary]=\"false\"\n >\n </s-button>\n }\n </div>\n\n @if (files.length) {\n <section\n [id]=\"id + 'fileupload-list'\"\n class=\"file-picker-list\"\n role=\"grid\"\n >\n @for (file of files; track file; let i = $index) {\n <div\n class=\"file-picker-list-file\"\n role=\"row\"\n >\n <div\n [id]=\"id + '-file-' + i + '-name'\"\n class=\"flex flex-grow items-center justify-between overflow-hidden text-ellipsis text-nowrap\"\n role=\"gridcell\"\n >\n <ng-container\n *ngTemplateOutlet=\"\n (permissions.includes(READ_PERMISSION) && file.savedFile) || file.progress === 100\n ? descriptionUrl\n : description;\n context: {\n $implicit: file,\n index: i,\n }\n \"\n >\n </ng-container>\n\n <span>{{ formatFileSize(file.size) }}</span>\n\n @if (modifiedDate) {\n <span class=\"file-picker-list-file-name-date\">{{ modifiedDate }}</span>\n }\n </div>\n <div\n class=\"file-picker-list-file-status\"\n role=\"gridcell\"\n >\n @if (file.isUploading && !isSmallDevice) {\n <div class=\"w-64\">\n <s-progressbar\n [value]=\"file.progress ?? 0\"\n [showValue]=\"false\"\n activeColor=\"blue\"\n ></s-progressbar>\n </div>\n }\n\n @if (file.isUploading && isSmallDevice) {\n <span\n [id]=\"id + '-file-' + i + '-spin'\"\n class=\"fas fa-circle-notch fa-spin\"\n [attr.aria-label]=\"\n ariaLabelProgress || 'platform.angular_components.loading_file' | translate\n \"\n >\n </span>\n }\n\n @if (!file.isUploading && !file.error && file.progress === 100) {\n <span\n [id]=\"id + '-file-' + i + '-check'\"\n class=\"fas fa-check\"\n role=\"alert\"\n [attr.aria-label]=\"\n ariaLabelSuccess ||\n successTooltip ||\n 'platform.angular_components.file_attached_successfully' | translate\n \"\n [pTooltip]=\"\n successTooltip || 'platform.angular_components.file_attached_successfully'\n | translate\n \"\n tooltipPosition=\"top\"\n showDelay=\"500\"\n [appendTo]=\"'body'\"\n >\n </span>\n }\n\n @if (file.error?.message) {\n <span\n [id]=\"id + '-file-' + i + '-error'\"\n class=\"fas fa-times\"\n role=\"alert\"\n [pTooltip]=\"file.error?.message\"\n tooltipPosition=\"top\"\n showDelay=\"500\"\n [appendTo]=\"'body'\"\n >\n </span>\n }\n </div>\n <div\n class=\"file-picker-list-file-actions\"\n role=\"gridcell\"\n >\n @if (file.isUploading) {\n <a\n [id]=\"id + '-file-' + i + '-cancel'\"\n class=\"file-picker-list-file-actions-action\"\n (click)=\"onCancelUpload(i)\"\n >\n {{ cancelLabel || 'platform.angular_components.cancel' | translate }}\n </a>\n }\n\n @if (\n permissions.includes(REMOVE_PERMISSION) &&\n !file.isUploading &&\n !(disabled || !!formControl?.disabled)\n ) {\n <a\n role=\"button\"\n tabindex=\"0\"\n [id]=\"id + '-file-' + i + '-remove'\"\n class=\"file-picker-list-file-actions-action\"\n (click)=\"onRemoveFile(file)\"\n [attr.aria-label]=\"\n ariaLabelRemove || removeLabel || 'platform.angular_components.remove' | translate\n \"\n >\n {{ removeLabel || 'platform.angular_components.remove' | translate }}\n </a>\n }\n </div>\n </div>\n }\n </section>\n }\n</div>\n\n<ng-template\n #descriptionUrl\n let-file\n let-i=\"index\"\n>\n <div class=\"flex justify-between\">\n <div>\n <a\n [id]=\"id + '-file-' + i + '-name-link'\"\n tabindex=\"0\"\n (click)=\"onDowloadFile(i)\"\n [attr.aria-label]=\"ariaLabelFileName || file.name\"\n class=\"break-words\"\n >{{ file.name }}\n </a>\n <a\n style=\"display: none\"\n [href]=\"file.objectURL\"\n target=\"_blank\"\n download\n #anchor\n >\n </a>\n </div>\n </div>\n</ng-template>\n\n<ng-template\n #description\n let-file\n>\n <div class=\"flex justify-between\">\n <span\n tabindex=\"0\"\n [attr.aria-label]=\"ariaLabelFileName || file.name\"\n >\n {{ file.name }}\n </span>\n </div>\n</ng-template>\n\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { TranslateModule } from '@ngx-translate/core';\nimport { ButtonModule } from '@seniorsistemas/angular-components/button';\nimport { LocaleModule } from '@seniorsistemas/angular-components/locale';\nimport { ProgressBarModule } from '@seniorsistemas/angular-components/progressbar';\nimport { TooltipModule } from 'primeng/tooltip';\n\nimport { FilePickerComponent } from './file-picker.component';\nimport { FilePickerService } from './file-picker.service';\n\n@NgModule({\n declarations: [FilePickerComponent],\n imports: [CommonModule, ButtonModule, TooltipModule, ProgressBarModule, TranslateModule, LocaleModule],\n providers: [FilePickerService],\n exports: [FilePickerComponent],\n})\nexport class FilePickerModule {}\n\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2.FilePickerService"],"mappings":"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"}
@@ -1582,22 +1582,53 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
1582
1582
  type: Input
1583
1583
  }] } });
1584
1584
 
1585
+ /**
1586
+ * @description Componente de diagrama de Gantt para visualização e manipulação de tarefas
1587
+ * em linha do tempo. Suporta diferentes modos de visualização (dia, semana, mês),
1588
+ * movimentação de tarefas via drag e popup de detalhes ao clicar.
1589
+ *
1590
+ * @example
1591
+ * ```html
1592
+ * <s-gantt
1593
+ * [tasks]="gruposDeTarefas"
1594
+ * [viewMode]="viewMode"
1595
+ * (taskClicked)="onTaskClicada($event)" />
1596
+ * ```
1597
+ *
1598
+ * @category Data
1599
+ */
1585
1600
  class GanttComponent {
1601
+ /** @description Título da coluna lateral de identificação das tarefas. */
1586
1602
  columnTitle;
1603
+ /** @description Permite renderizar múltiplas tarefas na mesma linha. @default false */
1587
1604
  multipleTaskPerLine = false;
1605
+ /** @description Exibe a tabela lateral com os nomes das tarefas. @default true */
1588
1606
  showSideTable = true;
1607
+ /** @description Modo de visualização do gantt (dia, semana, mês, etc.). @default ViewMode.Day */
1589
1608
  viewMode = ViewMode.Day;
1609
+ /** @description Lista de grupos de tarefas a serem renderizados. Campo obrigatório. */
1590
1610
  tasks;
1611
+ /** @description Margem em dias antes do início da primeira tarefa. */
1591
1612
  marginBeforeStart;
1613
+ /** @description Margem em dias após o fim da última tarefa. */
1592
1614
  marginAfterEnd;
1615
+ /** @description Habilita o arrastar de tarefas para alterar datas. @default true */
1593
1616
  allowMovement = true;
1617
+ /** @description Exibe popup com detalhes ao clicar em uma tarefa. @default true */
1594
1618
  hasPopup = true;
1619
+ /** @description Largura do container em pixels. Se omitido, usa a largura natural. */
1595
1620
  containerWidth;
1621
+ /** @description Faz o gantt ocupar 100% da largura disponível. @default false */
1596
1622
  fullWidth = false;
1623
+ /** @description Exibe apenas horas na linha do tempo (ignora dias). @default false */
1597
1624
  showOnlyHours = false;
1625
+ /** @description Exibe apenas dias na linha do tempo (ignora horas). @default false */
1598
1626
  showOnlyDays = false;
1627
+ /** @description Emitido quando o usuário clica em uma tarefa. */
1599
1628
  taskClicked = new EventEmitter();
1629
+ /** @description Emitido quando o usuário arrasta e modifica as datas de uma tarefa. */
1600
1630
  taskDateChanged = new EventEmitter();
1631
+ /** @description Emitido quando o modo de visualização é alterado. */
1601
1632
  viewChanged = new EventEmitter();
1602
1633
  outer = null;
1603
1634
  side = null;