@seniorsistemas/angular-components 19.0.4 → 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 (472) 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-models.d.ts +11 -0
  8. package/breadcrumb/lib/breadcrumb/breadcrumb.component.d.ts +19 -23
  9. package/breadcrumb/lib/dynamic-breadcrumb/dynamic-breadcrumb.component.d.ts +25 -0
  10. package/breadcrumb/lib/dynamic-breadcrumb/dynamic-breadcrumb.module.d.ts +10 -0
  11. package/breadcrumb/public-api.d.ts +4 -2
  12. package/button/lib/button/button.component.d.ts +103 -1
  13. package/calendar-mask/lib/calendar-mask/calendar-mask.directive.d.ts +24 -0
  14. package/card/lib/card/card.component.d.ts +18 -0
  15. package/chat/lib/chat/chat.component.d.ts +20 -2
  16. package/chat/lib/chat/components/chat-message/chat-message.component.d.ts +18 -2
  17. package/checkbox/lib/checkbox/checkbox.component.d.ts +23 -3
  18. package/checkbox-list/lib/checkbox-list/checkbox-list.component.d.ts +20 -0
  19. package/chips/lib/chips/chip-item/chip-item.component.d.ts +15 -0
  20. package/chips/lib/chips/chips/chips.component.d.ts +41 -0
  21. package/code-editor/lib/code-editor/code-editor.component.d.ts +40 -0
  22. package/collapse-link/lib/collapse-link/collapse-link.component.d.ts +18 -0
  23. package/common/lib/svg-factory/components/iassist-icon/iassist-icon.component.d.ts +5 -0
  24. package/confirm-dialog/lib/popup-confirm-dialog/popup-confirm-dialog.component.d.ts +19 -0
  25. package/content-generator/lib/content-generator/content-generator.component.d.ts +30 -0
  26. package/control-errors/lib/control-errors/control-errors.component.d.ts +36 -0
  27. package/country-phone-picker/lib/country-phone-picker/country-phone-picker.component.d.ts +36 -0
  28. package/currency/lib/currency.service.d.ts +15 -2
  29. package/custom-fields/lib/custom-fields/custom-fields.component.d.ts +31 -0
  30. package/dialog/lib/src/dialog/dialog.component.d.ts +51 -0
  31. package/dialog/lib/src/dialog/services/dialog.service.d.ts +2 -2
  32. package/dialog/lib/src/dialog/services/internal-dialog.service.d.ts +1 -1
  33. package/dynamic-form/dynamic-form/components/lookup/lookup.component.d.ts +6 -5
  34. package/dynamic-form/dynamic-form/components/lookup/models/lookup-api.model.d.ts +5 -0
  35. package/dynamic-form/dynamic-form/configurations/structure/fieldset.d.ts +14 -0
  36. package/dynamic-form/dynamic-form/configurations/structure/row.d.ts +67 -0
  37. package/dynamic-form/dynamic-form/configurations/structure/section.d.ts +8 -0
  38. package/dynamic-form/dynamic-form/configurations/structure/structure.d.ts +19 -0
  39. package/dynamic-form/dynamic-form/dynamic-form.component.d.ts +21 -1
  40. package/dynamic-form/dynamic-form/form-field/configurations/fields/autocomplete-field.d.ts +45 -0
  41. package/dynamic-form/dynamic-form/form-field/configurations/fields/bignumber-field.d.ts +59 -0
  42. package/dynamic-form/dynamic-form/form-field/configurations/fields/blob-field.d.ts +55 -0
  43. package/dynamic-form/dynamic-form/form-field/configurations/fields/boolean-field.d.ts +35 -0
  44. package/dynamic-form/dynamic-form/form-field/configurations/fields/boolean-switch-field.d.ts +17 -0
  45. package/dynamic-form/dynamic-form/form-field/configurations/fields/button-field.d.ts +23 -0
  46. package/dynamic-form/dynamic-form/form-field/configurations/fields/calendar-field.d.ts +66 -0
  47. package/dynamic-form/dynamic-form/form-field/configurations/fields/checkbox-field.d.ts +15 -0
  48. package/dynamic-form/dynamic-form/form-field/configurations/fields/chips-field.d.ts +30 -0
  49. package/dynamic-form/dynamic-form/form-field/configurations/fields/content-generator-field.d.ts +47 -2
  50. package/dynamic-form/dynamic-form/form-field/configurations/fields/country-phone-picker-field.d.ts +26 -0
  51. package/dynamic-form/dynamic-form/form-field/configurations/fields/currency-field.d.ts +18 -1
  52. package/dynamic-form/dynamic-form/form-field/configurations/fields/field.d.ts +44 -0
  53. package/dynamic-form/dynamic-form/form-field/configurations/fields/lookup-field.d.ts +112 -4
  54. package/dynamic-form/dynamic-form/form-field/configurations/fields/number-field.d.ts +42 -3
  55. package/dynamic-form/dynamic-form/form-field/configurations/fields/password-field.d.ts +48 -0
  56. package/dynamic-form/dynamic-form/form-field/configurations/fields/profile-picture.d.ts +62 -0
  57. package/dynamic-form/dynamic-form/form-field/configurations/fields/radio-button-field.d.ts +34 -0
  58. package/dynamic-form/dynamic-form/form-field/configurations/fields/select-field.d.ts +63 -0
  59. package/dynamic-form/dynamic-form/form-field/configurations/fields/slider-field.d.ts +47 -1
  60. package/dynamic-form/dynamic-form/form-field/configurations/fields/star-rating-field.d.ts +23 -0
  61. package/dynamic-form/dynamic-form/form-field/configurations/fields/text-area-field.d.ts +37 -1
  62. package/dynamic-form/dynamic-form/form-field/configurations/fields/text-field.d.ts +65 -2
  63. package/dynamic-form/public-api.d.ts +1 -0
  64. package/editable-overlay/lib/editable-overlay/editable-overlay.directive.d.ts +16 -0
  65. package/empty-state/lib/empty-state/empty-state.component.d.ts +59 -0
  66. package/esm2022/accordion/lib/accordion/accordion.component.mjs +26 -1
  67. package/esm2022/accordion/lib/accordion/components/accordion-panel/accordion-panel.component.mjs +61 -1
  68. package/esm2022/alert/lib/alert/alert.component.mjs +41 -1
  69. package/esm2022/autocomplete/lib/autocomplete/autocomplete.component.mjs +52 -1
  70. package/esm2022/badge/lib/badge/badge.component.mjs +21 -1
  71. package/esm2022/bignumber-input/lib/bignumber-input/bignumber-input.directive.mjs +47 -2
  72. package/esm2022/breadcrumb/lib/breadcrumb/breadcrumb-models.mjs +2 -0
  73. package/esm2022/breadcrumb/lib/breadcrumb/breadcrumb.component.mjs +39 -98
  74. package/esm2022/breadcrumb/lib/dynamic-breadcrumb/dynamic-breadcrumb.component.mjs +120 -0
  75. package/esm2022/breadcrumb/lib/dynamic-breadcrumb/dynamic-breadcrumb.module.mjs +19 -0
  76. package/esm2022/breadcrumb/public-api.mjs +4 -3
  77. package/esm2022/button/lib/button/button.component.mjs +107 -3
  78. package/esm2022/calendar-mask/lib/calendar-mask/calendar-mask.directive.mjs +72 -47
  79. package/esm2022/card/lib/card/card.component.mjs +21 -6
  80. package/esm2022/chat/lib/chat/chat.component.mjs +23 -5
  81. package/esm2022/chat/lib/chat/components/chat-message/chat-message.component.mjs +20 -4
  82. package/esm2022/checkbox/lib/checkbox/checkbox.component.mjs +24 -4
  83. package/esm2022/checkbox-list/lib/checkbox-list/checkbox-list.component.mjs +22 -2
  84. package/esm2022/chips/lib/chips/chip-item/chip-item.component.mjs +17 -2
  85. package/esm2022/chips/lib/chips/chips/chips.component.mjs +42 -1
  86. package/esm2022/code-editor/lib/code-editor/code-editor.component.mjs +41 -1
  87. package/esm2022/collapse-link/lib/collapse-link/collapse-link.component.mjs +19 -1
  88. package/esm2022/common/lib/svg-factory/components/iassist-icon/iassist-icon.component.mjs +6 -1
  89. package/esm2022/confirm-dialog/lib/popup-confirm-dialog/popup-confirm-dialog.component.mjs +21 -2
  90. package/esm2022/content-generator/lib/content-generator/content-generator.component.mjs +32 -2
  91. package/esm2022/control-errors/lib/control-errors/control-errors.component.mjs +37 -1
  92. package/esm2022/country-phone-picker/lib/country-phone-picker/country-phone-picker.component.mjs +37 -1
  93. package/esm2022/currency/lib/currency.service.mjs +21 -8
  94. package/esm2022/custom-fields/lib/custom-fields/custom-fields.component.mjs +32 -1
  95. package/esm2022/dialog/lib/src/dialog/dialog.component.mjs +66 -11
  96. package/esm2022/dialog/lib/src/dialog/services/dialog.service.mjs +13 -10
  97. package/esm2022/dialog/lib/src/dialog/services/internal-dialog.service.mjs +3 -3
  98. package/esm2022/dynamic-form/dynamic-form/components/grid/row/row.component.mjs +2 -2
  99. package/esm2022/dynamic-form/dynamic-form/components/lookup/lookup.component.mjs +2 -2
  100. package/esm2022/dynamic-form/dynamic-form/components/lookup/models/lookup-api.model.mjs +2 -0
  101. package/esm2022/dynamic-form/dynamic-form/configurations/structure/fieldset.mjs +1 -1
  102. package/esm2022/dynamic-form/dynamic-form/configurations/structure/row.mjs +1 -1
  103. package/esm2022/dynamic-form/dynamic-form/configurations/structure/section.mjs +1 -1
  104. package/esm2022/dynamic-form/dynamic-form/configurations/structure/structure.mjs +1 -1
  105. package/esm2022/dynamic-form/dynamic-form/dynamic-form.component.mjs +22 -2
  106. package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/autocomplete-field.mjs +1 -1
  107. package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/bignumber-field.mjs +1 -1
  108. package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/blob-field.mjs +1 -1
  109. package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/boolean-field.mjs +1 -1
  110. package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/boolean-switch-field.mjs +1 -1
  111. package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/button-field.mjs +1 -1
  112. package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/calendar-field.mjs +1 -1
  113. package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/checkbox-field.mjs +1 -1
  114. package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/chips-field.mjs +1 -1
  115. package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/content-generator-field.mjs +1 -1
  116. package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/country-phone-picker-field.mjs +1 -1
  117. package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/currency-field.mjs +1 -1
  118. package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/field.mjs +1 -2
  119. package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/lookup-field.mjs +1 -1
  120. package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/number-field.mjs +1 -1
  121. package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/password-field.mjs +1 -1
  122. package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/profile-picture.mjs +1 -1
  123. package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/radio-button-field.mjs +6 -1
  124. package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/select-field.mjs +1 -1
  125. package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/slider-field.mjs +1 -1
  126. package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/star-rating-field.mjs +1 -1
  127. package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/text-area-field.mjs +1 -1
  128. package/esm2022/dynamic-form/dynamic-form/form-field/configurations/fields/text-field.mjs +1 -1
  129. package/esm2022/dynamic-form/dynamic-form/form-field/fields/bignumber/bignumber-field.component.mjs +2 -2
  130. package/esm2022/dynamic-form/dynamic-form/form-field/fields/boolean/boolean-radio-field/boolean-field.component.mjs +1 -1
  131. package/esm2022/dynamic-form/dynamic-form/form-field/fields/button-field/button-field.component.mjs +1 -1
  132. package/esm2022/dynamic-form/dynamic-form/form-field/fields/number/number-field.component.mjs +2 -2
  133. package/esm2022/dynamic-form/dynamic-form/form-field/fields/password/password-field.component.mjs +2 -2
  134. package/esm2022/dynamic-form/dynamic-form/form-field/fields/radio-button/radio-button-field.component.mjs +2 -2
  135. package/esm2022/dynamic-form/dynamic-form/form-field/fields/text/text-field.component.mjs +2 -2
  136. package/esm2022/dynamic-form/dynamic-form/form-field/fields/text-area/text-area-field.component.mjs +3 -3
  137. package/esm2022/dynamic-form/public-api.mjs +2 -2
  138. package/esm2022/editable-overlay/lib/editable-overlay/editable-overlay.directive.mjs +17 -1
  139. package/esm2022/empty-state/lib/empty-state/empty-state.component.mjs +61 -2
  140. package/esm2022/fieldset/lib/fieldset/fieldset.component.mjs +25 -5
  141. package/esm2022/file-picker/lib/file-picker/file-picker.component.mjs +49 -2
  142. package/esm2022/gantt/lib/gantt/gantt.component.mjs +32 -1
  143. package/esm2022/global-search/lib/global-search/components/dropdown/global-search-dropdown-item.component.mjs +1 -1
  144. package/esm2022/global-search/lib/global-search/global-search.component.mjs +31 -2
  145. package/esm2022/grid-menu/lib/grid-menu/grid-menu.component.mjs +40 -1
  146. package/esm2022/help-popover/lib/help-popover/help-popover/help-popover.component.mjs +1 -1
  147. package/esm2022/help-popover/lib/help-popover/help-popover.directive.mjs +83 -27
  148. package/esm2022/image-cropper/lib/image-cropper/image-cropper.component.mjs +41 -4
  149. package/esm2022/infinite-scroll/lib/infinite-scroll/infinite-scroll.directive.mjs +18 -2
  150. package/esm2022/info-sign/lib/info-sign/info-sign.directive.mjs +33 -4
  151. package/esm2022/inline-edit/lib/inline-edit/components/fields/inline-edit-number/inline-edit-number.component.mjs +1 -1
  152. package/esm2022/inline-edit/lib/inline-edit/components/inline-edit-item/inline-edit-item.component.mjs +1 -1
  153. package/esm2022/inline-edit/lib/inline-edit/inline-edit.component.mjs +16 -1
  154. package/esm2022/insights/lib/insights/insights.component.mjs +23 -1
  155. package/esm2022/interactive-content/lib/interactive-content/interactive-content.directive.mjs +21 -1
  156. package/esm2022/kanban/lib/kanban/components/kanban-column/kanban-column.component.mjs +1 -1
  157. package/esm2022/kanban/lib/kanban/components/kanban-item/kanban-item.component.mjs +1 -1
  158. package/esm2022/kanban/lib/kanban/kanban.component.mjs +34 -16
  159. package/esm2022/label-value/lib/label-value/label-value.component.mjs +14 -1
  160. package/esm2022/lib/locale/fallback.mjs +4 -2
  161. package/esm2022/loading-state/lib/loading-state/loading-state.component.mjs +37 -1
  162. package/esm2022/loading-state/lib/loading-state/loading-state.directive.mjs +24 -1
  163. package/esm2022/locale/lib/locale/locale.service.mjs +8 -1
  164. package/esm2022/localized-number-input/lib/localized-number-input/localized-number-input.directive.mjs +17 -1
  165. package/esm2022/mask/lib/mask/mask-formatter.pipe.mjs +13 -1
  166. package/esm2022/mouse-events/lib/mouse-events/double-click.directive.mjs +16 -3
  167. package/esm2022/mouse-events/lib/mouse-events/long-press.directive.mjs +24 -10
  168. package/esm2022/navigation-button/lib/navigation-button/navigation-button.component.mjs +21 -2
  169. package/esm2022/number-input/lib/number-input/number-input.directive.mjs +32 -12
  170. package/esm2022/numeric/lib/numeric.pipe.mjs +16 -1
  171. package/esm2022/numeric/lib/numeric.service.mjs +21 -1
  172. package/esm2022/numeric-mask/lib/numeric-mask/numeric-mask.directive.mjs +9 -6
  173. package/esm2022/object-card/lib/object-card/elements/field/object-card-field.component.mjs +1 -1
  174. package/esm2022/object-card/lib/object-card/elements/main/object-card-main.component.mjs +1 -1
  175. package/esm2022/object-card/lib/object-card/object-card.component.mjs +24 -1
  176. package/esm2022/optional-fields/editor/editor-field.mjs +1 -1
  177. package/esm2022/paginator/lib/paginator/paginator.component.mjs +20 -1
  178. package/esm2022/panel/lib/panel/panel.component.mjs +44 -23
  179. package/esm2022/password-strength/lib/password-strength/password-strength.component.mjs +25 -1
  180. package/esm2022/password-strength/lib/password-strength/password-strength.directive.mjs +54 -1
  181. package/esm2022/picklist/lib/picklist/picklist.component.mjs +34 -3
  182. package/esm2022/pin-code-field/lib/pin-code-field/pin-code-field.component.mjs +29 -34
  183. package/esm2022/profile-picture-picker/lib/profile-picture-picker/profile-picture-picker.component.mjs +87 -3
  184. package/esm2022/progressbar/lib/progressbar/progressbar.component.mjs +53 -3
  185. package/esm2022/radio-button/lib/radio-button/radio-button.component.mjs +28 -1
  186. package/esm2022/radio-button/lib/radio-button-group/radio-button-group.component.mjs +27 -1
  187. package/esm2022/rating-scale/lib/rating-scale/rating-scale.component.mjs +39 -7
  188. package/esm2022/select/lib/select/select.component.mjs +35 -1
  189. package/esm2022/select-button/lib/select-button/select-button.component.mjs +35 -1
  190. package/esm2022/shared/lib/shared/border-button/border-button.component.mjs +11 -3
  191. package/esm2022/sidebar/lib/sidebar/sidebar.component.mjs +54 -1
  192. package/esm2022/slide-in-bar/lib/slide-in-bar/slide-in-bar.component.mjs +76 -36
  193. package/esm2022/slider/lib/slider/slider.component.mjs +90 -9
  194. package/esm2022/speech-recognition/lib/speech-recognition/speech-recognition/speech-recognition.component.mjs +25 -4
  195. package/esm2022/split-button/lib/split-button/split-button.component.mjs +24 -2
  196. package/esm2022/star-rating/star-rating/star-rating.component.mjs +17 -1
  197. package/esm2022/stats-card/lib/stats-card/stats-card.component.mjs +32 -10
  198. package/esm2022/stepper/lib/stepper/stepper.component.mjs +20 -1
  199. package/esm2022/structure/lib/structure/footer.component.mjs +11 -1
  200. package/esm2022/switch/lib/switch/switch.component.mjs +22 -2
  201. package/esm2022/table/lib/table/table-column/table-columns.component.mjs +16 -1
  202. package/esm2022/table/lib/table/table-paging/table-paging.component.mjs +1 -1
  203. package/esm2022/table-header/lib/table-header/table-header-checkbox.component.mjs +29 -3
  204. package/esm2022/tabs/lib/tab-item/tab-item.component.mjs +33 -2
  205. package/esm2022/tabs/lib/tabs/tabs.component.mjs +35 -3
  206. package/esm2022/template/lib/template/template.directive.mjs +14 -2
  207. package/esm2022/text-area/lib/text-area/text-area.component.mjs +28 -1
  208. package/esm2022/thumbnail/lib/thumbnail/thumbnail.component.mjs +25 -1
  209. package/esm2022/thumbnails/lib/thumbnails/thumbnails.component.mjs +28 -3
  210. package/esm2022/tiered-menu/lib/tiered-menu/components/tiered-menu/tiered-menu.component.mjs +65 -46
  211. package/esm2022/tiered-menu/lib/tiered-menu/components/tiered-menu-item/tiered-menu-item.component.mjs +3 -3
  212. package/esm2022/tiered-menu/lib/tiered-menu/tiered-menu.directive.mjs +35 -2
  213. package/esm2022/tile/lib/tile/tile.component.mjs +26 -1
  214. package/esm2022/timeline/lib/timeline/timeline.component.mjs +26 -3
  215. package/esm2022/toast/lib/toast/toast.component.mjs +24 -4
  216. package/esm2022/token-list/lib/token-list/token-list.component.mjs +22 -1
  217. package/esm2022/tooltip/lib/tooltip/tooltip.directive.mjs +66 -1
  218. package/esm2022/topbar/lib/topbar/topbar.component.mjs +18 -1
  219. package/esm2022/tree/lib/tree/tree.component.mjs +28 -1
  220. package/esm2022/workspace-switch/lib/workspace-switch/workspace-switch.component.mjs +47 -1
  221. package/fesm2022/seniorsistemas-angular-components-accordion.mjs +85 -0
  222. package/fesm2022/seniorsistemas-angular-components-accordion.mjs.map +1 -1
  223. package/fesm2022/seniorsistemas-angular-components-alert.mjs +40 -0
  224. package/fesm2022/seniorsistemas-angular-components-alert.mjs.map +1 -1
  225. package/fesm2022/seniorsistemas-angular-components-autocomplete.mjs +51 -0
  226. package/fesm2022/seniorsistemas-angular-components-autocomplete.mjs.map +1 -1
  227. package/fesm2022/seniorsistemas-angular-components-badge.mjs +20 -0
  228. package/fesm2022/seniorsistemas-angular-components-badge.mjs.map +1 -1
  229. package/fesm2022/seniorsistemas-angular-components-bignumber-input.mjs +46 -1
  230. package/fesm2022/seniorsistemas-angular-components-bignumber-input.mjs.map +1 -1
  231. package/fesm2022/seniorsistemas-angular-components-breadcrumb.mjs +93 -37
  232. package/fesm2022/seniorsistemas-angular-components-breadcrumb.mjs.map +1 -1
  233. package/fesm2022/seniorsistemas-angular-components-button.mjs +106 -2
  234. package/fesm2022/seniorsistemas-angular-components-button.mjs.map +1 -1
  235. package/fesm2022/seniorsistemas-angular-components-calendar-mask.mjs +71 -46
  236. package/fesm2022/seniorsistemas-angular-components-calendar-mask.mjs.map +1 -1
  237. package/fesm2022/seniorsistemas-angular-components-card.mjs +19 -4
  238. package/fesm2022/seniorsistemas-angular-components-card.mjs.map +1 -1
  239. package/fesm2022/seniorsistemas-angular-components-chat.mjs +39 -5
  240. package/fesm2022/seniorsistemas-angular-components-chat.mjs.map +1 -1
  241. package/fesm2022/seniorsistemas-angular-components-checkbox-list.mjs +21 -1
  242. package/fesm2022/seniorsistemas-angular-components-checkbox-list.mjs.map +1 -1
  243. package/fesm2022/seniorsistemas-angular-components-checkbox.mjs +23 -3
  244. package/fesm2022/seniorsistemas-angular-components-checkbox.mjs.map +1 -1
  245. package/fesm2022/seniorsistemas-angular-components-chips.mjs +57 -1
  246. package/fesm2022/seniorsistemas-angular-components-chips.mjs.map +1 -1
  247. package/fesm2022/seniorsistemas-angular-components-code-editor.mjs +40 -0
  248. package/fesm2022/seniorsistemas-angular-components-code-editor.mjs.map +1 -1
  249. package/fesm2022/seniorsistemas-angular-components-collapse-link.mjs +18 -0
  250. package/fesm2022/seniorsistemas-angular-components-collapse-link.mjs.map +1 -1
  251. package/fesm2022/seniorsistemas-angular-components-common.mjs +5 -0
  252. package/fesm2022/seniorsistemas-angular-components-common.mjs.map +1 -1
  253. package/fesm2022/seniorsistemas-angular-components-confirm-dialog.mjs +20 -1
  254. package/fesm2022/seniorsistemas-angular-components-confirm-dialog.mjs.map +1 -1
  255. package/fesm2022/seniorsistemas-angular-components-content-generator.mjs +31 -1
  256. package/fesm2022/seniorsistemas-angular-components-content-generator.mjs.map +1 -1
  257. package/fesm2022/seniorsistemas-angular-components-control-errors.mjs +36 -0
  258. package/fesm2022/seniorsistemas-angular-components-control-errors.mjs.map +1 -1
  259. package/fesm2022/seniorsistemas-angular-components-country-phone-picker.mjs +36 -0
  260. package/fesm2022/seniorsistemas-angular-components-country-phone-picker.mjs.map +1 -1
  261. package/fesm2022/seniorsistemas-angular-components-currency.mjs +19 -6
  262. package/fesm2022/seniorsistemas-angular-components-currency.mjs.map +1 -1
  263. package/fesm2022/seniorsistemas-angular-components-custom-fields.mjs +31 -0
  264. package/fesm2022/seniorsistemas-angular-components-custom-fields.mjs.map +1 -1
  265. package/fesm2022/seniorsistemas-angular-components-dialog.mjs +74 -16
  266. package/fesm2022/seniorsistemas-angular-components-dialog.mjs.map +1 -1
  267. package/fesm2022/seniorsistemas-angular-components-dynamic-form.mjs +38 -13
  268. package/fesm2022/seniorsistemas-angular-components-dynamic-form.mjs.map +1 -1
  269. package/fesm2022/seniorsistemas-angular-components-editable-overlay.mjs +16 -0
  270. package/fesm2022/seniorsistemas-angular-components-editable-overlay.mjs.map +1 -1
  271. package/fesm2022/seniorsistemas-angular-components-empty-state.mjs +60 -1
  272. package/fesm2022/seniorsistemas-angular-components-empty-state.mjs.map +1 -1
  273. package/fesm2022/seniorsistemas-angular-components-fieldset.mjs +21 -1
  274. package/fesm2022/seniorsistemas-angular-components-fieldset.mjs.map +1 -1
  275. package/fesm2022/seniorsistemas-angular-components-file-picker.mjs +48 -1
  276. package/fesm2022/seniorsistemas-angular-components-file-picker.mjs.map +1 -1
  277. package/fesm2022/seniorsistemas-angular-components-gantt.mjs +31 -0
  278. package/fesm2022/seniorsistemas-angular-components-gantt.mjs.map +1 -1
  279. package/fesm2022/seniorsistemas-angular-components-global-search.mjs +31 -2
  280. package/fesm2022/seniorsistemas-angular-components-global-search.mjs.map +1 -1
  281. package/fesm2022/seniorsistemas-angular-components-grid-menu.mjs +39 -0
  282. package/fesm2022/seniorsistemas-angular-components-grid-menu.mjs.map +1 -1
  283. package/fesm2022/seniorsistemas-angular-components-help-popover.mjs +81 -25
  284. package/fesm2022/seniorsistemas-angular-components-help-popover.mjs.map +1 -1
  285. package/fesm2022/seniorsistemas-angular-components-image-cropper.mjs +39 -2
  286. package/fesm2022/seniorsistemas-angular-components-image-cropper.mjs.map +1 -1
  287. package/fesm2022/seniorsistemas-angular-components-infinite-scroll.mjs +17 -1
  288. package/fesm2022/seniorsistemas-angular-components-infinite-scroll.mjs.map +1 -1
  289. package/fesm2022/seniorsistemas-angular-components-info-sign.mjs +30 -1
  290. package/fesm2022/seniorsistemas-angular-components-info-sign.mjs.map +1 -1
  291. package/fesm2022/seniorsistemas-angular-components-inline-edit.mjs +17 -2
  292. package/fesm2022/seniorsistemas-angular-components-inline-edit.mjs.map +1 -1
  293. package/fesm2022/seniorsistemas-angular-components-insights.mjs +22 -0
  294. package/fesm2022/seniorsistemas-angular-components-insights.mjs.map +1 -1
  295. package/fesm2022/seniorsistemas-angular-components-interactive-content.mjs +20 -0
  296. package/fesm2022/seniorsistemas-angular-components-interactive-content.mjs.map +1 -1
  297. package/fesm2022/seniorsistemas-angular-components-kanban.mjs +30 -12
  298. package/fesm2022/seniorsistemas-angular-components-kanban.mjs.map +1 -1
  299. package/fesm2022/seniorsistemas-angular-components-label-value.mjs +13 -0
  300. package/fesm2022/seniorsistemas-angular-components-label-value.mjs.map +1 -1
  301. package/fesm2022/seniorsistemas-angular-components-loading-state.mjs +59 -0
  302. package/fesm2022/seniorsistemas-angular-components-loading-state.mjs.map +1 -1
  303. package/fesm2022/seniorsistemas-angular-components-locale.mjs +7 -0
  304. package/fesm2022/seniorsistemas-angular-components-locale.mjs.map +1 -1
  305. package/fesm2022/seniorsistemas-angular-components-localized-number-input.mjs +16 -0
  306. package/fesm2022/seniorsistemas-angular-components-localized-number-input.mjs.map +1 -1
  307. package/fesm2022/seniorsistemas-angular-components-mask.mjs +12 -0
  308. package/fesm2022/seniorsistemas-angular-components-mask.mjs.map +1 -1
  309. package/fesm2022/seniorsistemas-angular-components-mouse-events.mjs +35 -8
  310. package/fesm2022/seniorsistemas-angular-components-mouse-events.mjs.map +1 -1
  311. package/fesm2022/seniorsistemas-angular-components-navigation-button.mjs +20 -1
  312. package/fesm2022/seniorsistemas-angular-components-navigation-button.mjs.map +1 -1
  313. package/fesm2022/seniorsistemas-angular-components-number-input.mjs +31 -11
  314. package/fesm2022/seniorsistemas-angular-components-number-input.mjs.map +1 -1
  315. package/fesm2022/seniorsistemas-angular-components-numeric-mask.mjs +8 -5
  316. package/fesm2022/seniorsistemas-angular-components-numeric-mask.mjs.map +1 -1
  317. package/fesm2022/seniorsistemas-angular-components-numeric.mjs +35 -0
  318. package/fesm2022/seniorsistemas-angular-components-numeric.mjs.map +1 -1
  319. package/fesm2022/seniorsistemas-angular-components-object-card.mjs +25 -2
  320. package/fesm2022/seniorsistemas-angular-components-object-card.mjs.map +1 -1
  321. package/fesm2022/seniorsistemas-angular-components-optional-fields-editor.mjs.map +1 -1
  322. package/fesm2022/seniorsistemas-angular-components-paginator.mjs +19 -0
  323. package/fesm2022/seniorsistemas-angular-components-paginator.mjs.map +1 -1
  324. package/fesm2022/seniorsistemas-angular-components-panel.mjs +39 -18
  325. package/fesm2022/seniorsistemas-angular-components-panel.mjs.map +1 -1
  326. package/fesm2022/seniorsistemas-angular-components-password-strength.mjs +77 -0
  327. package/fesm2022/seniorsistemas-angular-components-password-strength.mjs.map +1 -1
  328. package/fesm2022/seniorsistemas-angular-components-picklist.mjs +33 -2
  329. package/fesm2022/seniorsistemas-angular-components-picklist.mjs.map +1 -1
  330. package/fesm2022/seniorsistemas-angular-components-pin-code-field.mjs +28 -33
  331. package/fesm2022/seniorsistemas-angular-components-pin-code-field.mjs.map +1 -1
  332. package/fesm2022/seniorsistemas-angular-components-profile-picture-picker.mjs +86 -2
  333. package/fesm2022/seniorsistemas-angular-components-profile-picture-picker.mjs.map +1 -1
  334. package/fesm2022/seniorsistemas-angular-components-progressbar.mjs +52 -2
  335. package/fesm2022/seniorsistemas-angular-components-progressbar.mjs.map +1 -1
  336. package/fesm2022/seniorsistemas-angular-components-radio-button.mjs +53 -0
  337. package/fesm2022/seniorsistemas-angular-components-radio-button.mjs.map +1 -1
  338. package/fesm2022/seniorsistemas-angular-components-rating-scale.mjs +36 -4
  339. package/fesm2022/seniorsistemas-angular-components-rating-scale.mjs.map +1 -1
  340. package/fesm2022/seniorsistemas-angular-components-select-button.mjs +34 -0
  341. package/fesm2022/seniorsistemas-angular-components-select-button.mjs.map +1 -1
  342. package/fesm2022/seniorsistemas-angular-components-select.mjs +34 -0
  343. package/fesm2022/seniorsistemas-angular-components-select.mjs.map +1 -1
  344. package/fesm2022/seniorsistemas-angular-components-shared.mjs +9 -1
  345. package/fesm2022/seniorsistemas-angular-components-shared.mjs.map +1 -1
  346. package/fesm2022/seniorsistemas-angular-components-sidebar.mjs +53 -0
  347. package/fesm2022/seniorsistemas-angular-components-sidebar.mjs.map +1 -1
  348. package/fesm2022/seniorsistemas-angular-components-slide-in-bar.mjs +71 -31
  349. package/fesm2022/seniorsistemas-angular-components-slide-in-bar.mjs.map +1 -1
  350. package/fesm2022/seniorsistemas-angular-components-slider.mjs +89 -8
  351. package/fesm2022/seniorsistemas-angular-components-slider.mjs.map +1 -1
  352. package/fesm2022/seniorsistemas-angular-components-speech-recognition.mjs +24 -3
  353. package/fesm2022/seniorsistemas-angular-components-speech-recognition.mjs.map +1 -1
  354. package/fesm2022/seniorsistemas-angular-components-split-button.mjs +22 -0
  355. package/fesm2022/seniorsistemas-angular-components-split-button.mjs.map +1 -1
  356. package/fesm2022/seniorsistemas-angular-components-star-rating.mjs +16 -0
  357. package/fesm2022/seniorsistemas-angular-components-star-rating.mjs.map +1 -1
  358. package/fesm2022/seniorsistemas-angular-components-stats-card.mjs +30 -8
  359. package/fesm2022/seniorsistemas-angular-components-stats-card.mjs.map +1 -1
  360. package/fesm2022/seniorsistemas-angular-components-stepper.mjs +19 -0
  361. package/fesm2022/seniorsistemas-angular-components-stepper.mjs.map +1 -1
  362. package/fesm2022/seniorsistemas-angular-components-structure.mjs +10 -0
  363. package/fesm2022/seniorsistemas-angular-components-structure.mjs.map +1 -1
  364. package/fesm2022/seniorsistemas-angular-components-switch.mjs +20 -0
  365. package/fesm2022/seniorsistemas-angular-components-switch.mjs.map +1 -1
  366. package/fesm2022/seniorsistemas-angular-components-table-header.mjs +28 -2
  367. package/fesm2022/seniorsistemas-angular-components-table-header.mjs.map +1 -1
  368. package/fesm2022/seniorsistemas-angular-components-table.mjs +16 -1
  369. package/fesm2022/seniorsistemas-angular-components-table.mjs.map +1 -1
  370. package/fesm2022/seniorsistemas-angular-components-tabs.mjs +65 -2
  371. package/fesm2022/seniorsistemas-angular-components-tabs.mjs.map +1 -1
  372. package/fesm2022/seniorsistemas-angular-components-template.mjs +13 -1
  373. package/fesm2022/seniorsistemas-angular-components-template.mjs.map +1 -1
  374. package/fesm2022/seniorsistemas-angular-components-text-area.mjs +27 -0
  375. package/fesm2022/seniorsistemas-angular-components-text-area.mjs.map +1 -1
  376. package/fesm2022/seniorsistemas-angular-components-thumbnail.mjs +24 -0
  377. package/fesm2022/seniorsistemas-angular-components-thumbnail.mjs.map +1 -1
  378. package/fesm2022/seniorsistemas-angular-components-thumbnails.mjs +26 -1
  379. package/fesm2022/seniorsistemas-angular-components-thumbnails.mjs.map +1 -1
  380. package/fesm2022/seniorsistemas-angular-components-tiered-menu.mjs +99 -47
  381. package/fesm2022/seniorsistemas-angular-components-tiered-menu.mjs.map +1 -1
  382. package/fesm2022/seniorsistemas-angular-components-tile.mjs +25 -0
  383. package/fesm2022/seniorsistemas-angular-components-tile.mjs.map +1 -1
  384. package/fesm2022/seniorsistemas-angular-components-timeline.mjs +25 -2
  385. package/fesm2022/seniorsistemas-angular-components-timeline.mjs.map +1 -1
  386. package/fesm2022/seniorsistemas-angular-components-toast.mjs +22 -2
  387. package/fesm2022/seniorsistemas-angular-components-toast.mjs.map +1 -1
  388. package/fesm2022/seniorsistemas-angular-components-token-list.mjs +21 -0
  389. package/fesm2022/seniorsistemas-angular-components-token-list.mjs.map +1 -1
  390. package/fesm2022/seniorsistemas-angular-components-tooltip.mjs +65 -0
  391. package/fesm2022/seniorsistemas-angular-components-tooltip.mjs.map +1 -1
  392. package/fesm2022/seniorsistemas-angular-components-topbar.mjs +17 -0
  393. package/fesm2022/seniorsistemas-angular-components-topbar.mjs.map +1 -1
  394. package/fesm2022/seniorsistemas-angular-components-tree.mjs +27 -0
  395. package/fesm2022/seniorsistemas-angular-components-tree.mjs.map +1 -1
  396. package/fesm2022/seniorsistemas-angular-components-workspace-switch.mjs +46 -0
  397. package/fesm2022/seniorsistemas-angular-components-workspace-switch.mjs.map +1 -1
  398. package/fesm2022/seniorsistemas-angular-components.mjs +3 -1
  399. package/fesm2022/seniorsistemas-angular-components.mjs.map +1 -1
  400. package/fieldset/lib/fieldset/fieldset.component.d.ts +23 -3
  401. package/file-picker/lib/file-picker/file-picker.component.d.ts +47 -0
  402. package/gantt/lib/gantt/gantt.component.d.ts +31 -0
  403. package/global-search/lib/global-search/global-search.component.d.ts +29 -0
  404. package/grid-menu/lib/grid-menu/grid-menu.component.d.ts +39 -0
  405. package/help-popover/lib/help-popover/help-popover.directive.d.ts +67 -17
  406. package/image-cropper/lib/image-cropper/image-cropper.component.d.ts +38 -0
  407. package/infinite-scroll/lib/infinite-scroll/infinite-scroll.directive.d.ts +15 -0
  408. package/info-sign/lib/info-sign/info-sign.directive.d.ts +30 -1
  409. package/inline-edit/lib/inline-edit/inline-edit.component.d.ts +15 -0
  410. package/insights/lib/insights/insights.component.d.ts +22 -0
  411. package/interactive-content/lib/interactive-content/interactive-content.directive.d.ts +20 -0
  412. package/kanban/lib/kanban/kanban.component.d.ts +25 -5
  413. package/label-value/lib/label-value/label-value.component.d.ts +13 -0
  414. package/loading-state/lib/loading-state/loading-state.component.d.ts +36 -0
  415. package/loading-state/lib/loading-state/loading-state.directive.d.ts +23 -0
  416. package/locale/lib/locale/locale.service.d.ts +7 -0
  417. package/localized-number-input/lib/localized-number-input/localized-number-input.directive.d.ts +16 -0
  418. package/mask/lib/mask/mask-formatter.pipe.d.ts +12 -0
  419. package/mouse-events/lib/mouse-events/double-click.directive.d.ts +13 -0
  420. package/mouse-events/lib/mouse-events/long-press.directive.d.ts +16 -2
  421. package/navigation-button/lib/navigation-button/navigation-button.component.d.ts +19 -0
  422. package/number-input/lib/number-input/number-input.directive.d.ts +19 -1
  423. package/numeric/lib/numeric.pipe.d.ts +15 -0
  424. package/numeric/lib/numeric.service.d.ts +20 -0
  425. package/numeric-mask/lib/numeric-mask/numeric-mask.directive.d.ts +5 -4
  426. package/object-card/lib/object-card/object-card.component.d.ts +23 -0
  427. package/optional-fields/editor/editor-field.d.ts +19 -0
  428. package/package.json +7 -7
  429. package/paginator/lib/paginator/paginator.component.d.ts +19 -0
  430. package/panel/lib/panel/panel.component.d.ts +24 -3
  431. package/password-strength/lib/password-strength/password-strength.component.d.ts +24 -0
  432. package/password-strength/lib/password-strength/password-strength.directive.d.ts +53 -0
  433. package/picklist/lib/picklist/picklist.component.d.ts +29 -0
  434. package/pin-code-field/lib/pin-code-field/pin-code-field.component.d.ts +28 -33
  435. package/profile-picture-picker/lib/profile-picture-picker/profile-picture-picker.component.d.ts +85 -1
  436. package/progressbar/lib/progressbar/progressbar.component.d.ts +50 -0
  437. package/radio-button/lib/radio-button/radio-button.component.d.ts +27 -0
  438. package/radio-button/lib/radio-button-group/radio-button-group.component.d.ts +26 -0
  439. package/rating-scale/lib/rating-scale/rating-scale.component.d.ts +30 -2
  440. package/select/lib/select/select.component.d.ts +34 -0
  441. package/select-button/lib/select-button/select-button.component.d.ts +34 -0
  442. package/shared/lib/shared/border-button/border-button.component.d.ts +10 -2
  443. package/sidebar/lib/sidebar/sidebar.component.d.ts +53 -0
  444. package/slide-in-bar/lib/slide-in-bar/slide-in-bar.component.d.ts +53 -2
  445. package/slider/lib/slider/slider.component.d.ts +72 -0
  446. package/speech-recognition/lib/speech-recognition/speech-recognition/speech-recognition.component.d.ts +18 -0
  447. package/split-button/lib/split-button/split-button.component.d.ts +22 -0
  448. package/star-rating/star-rating/star-rating.component.d.ts +16 -0
  449. package/stats-card/lib/stats-card/stats-card.component.d.ts +28 -0
  450. package/stepper/lib/stepper/stepper.component.d.ts +19 -0
  451. package/structure/lib/structure/footer.component.d.ts +10 -0
  452. package/switch/lib/switch/switch.component.d.ts +20 -0
  453. package/table/lib/table/table-column/table-columns.component.d.ts +15 -0
  454. package/table-header/lib/table-header/table-header-checkbox.component.d.ts +18 -0
  455. package/tabs/lib/tab-item/tab-item.component.d.ts +31 -0
  456. package/tabs/lib/tabs/tabs.component.d.ts +28 -0
  457. package/template/lib/template/template.directive.d.ts +12 -0
  458. package/text-area/lib/text-area/text-area.component.d.ts +27 -0
  459. package/thumbnail/lib/thumbnail/thumbnail.component.d.ts +24 -0
  460. package/thumbnails/lib/thumbnails/thumbnails.component.d.ts +27 -2
  461. package/tiered-menu/lib/tiered-menu/components/tiered-menu/tiered-menu.component.d.ts +3 -1
  462. package/tiered-menu/lib/tiered-menu/tiered-menu.directive.d.ts +31 -1
  463. package/tile/lib/tile/tile.component.d.ts +25 -0
  464. package/timeline/lib/timeline/timeline.component.d.ts +24 -0
  465. package/toast/lib/toast/toast.component.d.ts +22 -2
  466. package/token-list/lib/token-list/token-list.component.d.ts +21 -0
  467. package/tooltip/lib/tooltip/tooltip.directive.d.ts +65 -0
  468. package/topbar/lib/topbar/topbar.component.d.ts +17 -0
  469. package/tree/lib/tree/tree.component.d.ts +27 -0
  470. package/workspace-switch/lib/workspace-switch/workspace-switch.component.d.ts +46 -0
  471. package/breadcrumb/lib/breadcrumb/breadcrumb.module.d.ts +0 -10
  472. package/esm2022/breadcrumb/lib/breadcrumb/breadcrumb.module.mjs +0 -20
@@ -1 +1 @@
1
- {"version":3,"file":"seniorsistemas-angular-components-help-popover.mjs","sources":["../../projects/angular-components/help-popover/src/lib/help-popover/help-popover/help-popover.component.ts","../../projects/angular-components/help-popover/src/lib/help-popover/help-popover/help-popover.component.html","../../projects/angular-components/help-popover/src/lib/help-popover/help-popover.directive.ts","../../projects/angular-components/help-popover/src/lib/help-popover/help-popover.module.ts","../../projects/angular-components/help-popover/src/seniorsistemas-angular-components-help-popover.ts"],"sourcesContent":["import { Component, ElementRef, EventEmitter, OnDestroy, TemplateRef, ViewChild } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { HelpPopoverArrowPosition, HelpPopoverPosition } from '../models/help-popover.models';\n\n@Component({\n selector: 's-help-popover',\n templateUrl: './help-popover.component.html',\n styleUrls: ['./help-popover.component.scss']\n})\nexport class HelpPopoverComponent implements OnDestroy {\n private readonly VALID_POSITIONS: HelpPopoverPosition[] = ['top', 'bottom', 'left', 'right'];\n private readonly VALID_ARROW_POSITIONS: HelpPopoverArrowPosition[] = ['beginning', 'end', 'middle'];\n private _position: HelpPopoverPosition = 'bottom';\n popoverContent: string | TemplateRef<any> | null = null;\n closeButton = true;\n icon = '';\n header = '';\n footer = '';\n button = '';\n visible = false;\n @ViewChild('arrowElement', { read: ElementRef, static: true }) arrowElement: ElementRef<HTMLElement> | null = null;\n public get position(): HelpPopoverPosition {\n return this._position;\n }\n public set position(value: HelpPopoverPosition) {\n if (!this.VALID_POSITIONS.includes(value)) {\n throw new Error(`Invalid position: ${value}. Valid positions: ${this.VALID_POSITIONS}`);\n }\n this._position = value;\n }\n\n private _arrowPosition: HelpPopoverArrowPosition = 'beginning';\n public get arrowPosition(): HelpPopoverArrowPosition {\n return this._arrowPosition;\n }\n public set arrowPosition(value: HelpPopoverArrowPosition) {\n if (!this.VALID_ARROW_POSITIONS.includes(value)) {\n throw new Error(`Invalid arrow position: ${value}. Valid arrow positions: ${this.VALID_ARROW_POSITIONS}`);\n }\n this._arrowPosition = value;\n }\n\n buttonClicked!: EventEmitter<void>;\n\n closed = new Subject<void>();\n get contentIsString() {\n return typeof this.popoverContent === 'string';\n }\n\n get popoverContentTemplateRef() {\n return this.popoverContent as TemplateRef<any>;\n }\n\n get hasHeaderContainer() {\n const _hasHeader = this.hasHeaderText;\n const hasIcon = this.hasIcon;\n const hasCloseButton = this.closeButton;\n return _hasHeader || hasIcon || hasCloseButton;\n }\n\n get hasFooter() {\n const _hasFooterText = this.hasFooterText;\n const hasButtonText = this.button && this.button.length > 0;\n return _hasFooterText || hasButtonText;\n }\n\n get hasHeaderText() {\n return this.header && this.header.length > 0;\n }\n\n get hasFooterText() {\n return this.footer && this.footer.length > 0;\n }\n\n get hasIcon() {\n return this.icon && this.icon.length > 0;\n }\n\n close() {\n this.closed.next();\n }\n\n clickButton() {\n this.buttonClicked!.emit();\n }\n\n\n ngOnDestroy(): void {\n this.closed.complete();\n }\n}\n","<div\n class=\"popover-container\"\n [style.visibility]=\"visible ? 'visible' : 'hidden'\"\n [class.popover-container-top]=\"position === 'top'\"\n [class.popover-container-right]=\"position === 'right'\"\n [class.popover-container-bottom]=\"position === 'bottom'\"\n [class.popover-container-left]=\"position === 'left'\"\n>\n <div\n class=\"arrow-container\"\n [class.arrow-container-beginning]=\"arrowPosition === 'beginning'\"\n [class.arrow-container-middle]=\"arrowPosition === 'middle'\"\n [class.arrow-container-end]=\"arrowPosition === 'end'\"\n >\n <div\n class=\"arrow\"\n #arrowElement\n ></div>\n </div>\n <div class=\"popover\">\n @if (hasHeaderContainer) {\n <div\n class=\"popover-header-container\"\n [class.space-between]=\"hasIcon || hasHeaderText\"\n [class.flex-end]=\"!(hasIcon || hasHeaderText) && closeButton\"\n >\n @if (hasIcon || hasHeaderText) {\n <div class=\"popover-header-container-text\">\n @if (hasIcon) {\n <div class=\"popover-icon\">\n <i [class]=\"icon\"></i>\n </div>\n }\n @if (hasHeaderText) {\n <div class=\"popover-header-text\">\n {{ header }}\n </div>\n }\n </div>\n }\n @if (closeButton) {\n <div class=\"popover-close-button\">\n <i\n class=\"fas fa-times\"\n (click)=\"close()\"\n ></i>\n </div>\n }\n </div>\n }\n\n <div class=\"popover-content\">\n @if (contentIsString) {\n {{ popoverContent }}\n } @else {\n <ng-container *ngTemplateOutlet=\"popoverContentTemplateRef\"></ng-container>\n }\n </div>\n\n @if (hasFooter) {\n <div class=\"separator\"></div>\n <div\n class=\"popover-footer-container\"\n [class.space-between]=\"hasFooterText\"\n [class.flex-end]=\"!hasFooterText\"\n >\n @if (hasFooterText) {\n <p class=\"popover-footer-text\">\n {{ footer }}\n </p>\n }\n @if (button && button.length > 0) {\n <div class=\"popover-footer-button\">\n <s-button\n [label]=\"button\"\n priority=\"primary\"\n size=\"small\"\n (clicked)=\"clickButton()\"\n [disabled]=\"false\"\n [auxiliary]=\"false\"\n >\n </s-button>\n </div>\n }\n </div>\n }\n </div>\n</div>\n\n","import { ComponentRef, Directive, ElementRef, EventEmitter, HostListener, inject, Input, OnDestroy, OnInit, Output, TemplateRef, ViewContainerRef } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { debounceTime, takeUntil } from 'rxjs/operators';\nimport { HelpPopoverComponent } from './help-popover/help-popover.component';\nimport { HelpPopoverArrowPosition, HelpPopoverPosition } from './models/help-popover.models';\nimport { ElementLeftoverPosition, ElementPosition, getElementLeftoverContentAvailable, getElementPositionInfo, isMousePositionOutsideOfElement } from '@seniorsistemas/angular-components/utils';\n\n\n@Directive({\n selector: '[sHelpPopover]',\n exportAs: 'sHelpPopover'\n})\nexport class HelpPopoverDirective implements OnDestroy, OnInit {\n private readonly MUTATION_OBSERVER_CONFIG: MutationObserverInit = { attributes: true, childList: true, subtree: true };\n private readonly OBSERVER_CALLBACK = () => {\n if (!this.componentRef) {\n return;\n }\n this.applyPositionIntoElement();\n }\n private readonly RESIZE_OBSERVER = () => {\n this.onResize$.next();\n }\n @Input() sHelpPopover: string | TemplateRef<any> | null = null;\n @Input() closeButton = true;\n @Input() popoverIcon = '';\n @Input() popoverHeader = '';\n @Input() popoverFooter = '';\n @Input() popoverButtonText = '';\n @Input() popoverArrowPosition: HelpPopoverArrowPosition = 'beginning';\n private _popoverPosition: HelpPopoverPosition = 'bottom';\n public get popoverPosition(): HelpPopoverPosition {\n return this._popoverPosition;\n }\n @Input()\n public set popoverPosition(value: HelpPopoverPosition) {\n this._popoverPosition = value;\n this.internalPosition = value;\n }\n @Output() buttonClicked = new EventEmitter<void>();\n\n private onDestroy$ = new Subject<void>();\n private componentRef: ComponentRef<HelpPopoverComponent> | null = null\n private mutationObserverPopoverElement: MutationObserver | null = null;\n private mutationObserverPopoverContent: MutationObserver | null = null;\n private internalPosition: HelpPopoverPosition = 'bottom';\n private onResize$ = new Subject<void>();\n private manualTrigger = false;\n private listener = (event: PointerEvent | MouseEvent) => {\n if (!this.componentRef) {\n return;\n }\n const totalElementArea = this.getPopoverElement.getBoundingClientRect();\n if (isMousePositionOutsideOfElement(event, totalElementArea)) {\n this.destroy();\n }\n }\n private readonly viewContainerRef = inject(ViewContainerRef);\n private readonly element: ElementRef<HTMLElement> = inject(ElementRef);\n\n ngOnInit(): void {\n const popoverElementObserver = new MutationObserver(this.OBSERVER_CALLBACK);\n this.mutationObserverPopoverElement = popoverElementObserver;\n popoverElementObserver.observe(this.element.nativeElement, this.MUTATION_OBSERVER_CONFIG);\n window.addEventListener('resize', this.RESIZE_OBSERVER);\n window.addEventListener('scrollend', this.OBSERVER_CALLBACK);\n this.onResize$.pipe(takeUntil(this.onDestroy$), debounceTime(100)).subscribe(this.OBSERVER_CALLBACK)\n }\n\n show() {\n this.manualTrigger = true;\n this._createComponent();\n }\n\n @HostListener('click')\n doClick() {\n if (this.manualTrigger) {\n return;\n }\n this._createComponent();\n }\n\n ngOnDestroy(): void {\n this.onDestroy$.next();\n this.onDestroy$.complete();\n this.destroy();\n if (this.mutationObserverPopoverElement) {\n this.mutationObserverPopoverElement.disconnect();\n }\n window.removeEventListener('resize', this.RESIZE_OBSERVER);\n window.removeEventListener('scrollend', this.OBSERVER_CALLBACK);\n }\n\n private _createComponent() {\n if (!this.sHelpPopover) {\n return;\n }\n if (this.componentRef) {\n this.destroy();\n }\n const componentRef = this.viewContainerRef.createComponent(HelpPopoverComponent);\n this.componentRef = componentRef;\n if (this.mutationObserverPopoverContent) {\n this.mutationObserverPopoverContent.disconnect();\n }\n this.mutationObserverPopoverContent = new MutationObserver(this.OBSERVER_CALLBACK);\n const element = this.getPopoverElement as HTMLElement;\n this.mutationObserverPopoverContent.observe(element.querySelector('.popover-content') as HTMLElement, this.MUTATION_OBSERVER_CONFIG);\n document.body.appendChild(componentRef.location.nativeElement);\n setTimeout(() => {\n document.addEventListener('click', this.listener);\n })\n const component = componentRef.instance;\n component.popoverContent = this.sHelpPopover;\n component.closeButton = this.closeButton;\n component.icon = this.popoverIcon;\n component.header = this.popoverHeader;\n component.footer = this.popoverFooter;\n component.button = this.popoverButtonText;\n component.position = this.internalPosition;\n component.arrowPosition = this.popoverArrowPosition;\n component.buttonClicked = this.buttonClicked;\n component.closed.pipe(takeUntil(this.onDestroy$)).subscribe(() => {\n this.destroy();\n })\n this.applyPositionIntoElement();\n }\n\n private destroy() {\n document.removeEventListener('click', this.listener);\n if (this.componentRef) {\n this.componentRef.destroy();\n this.componentRef = null;\n }\n\n this.internalPosition = this.popoverPosition;\n\n if (this.mutationObserverPopoverContent) {\n this.mutationObserverPopoverContent.disconnect();\n }\n }\n\n private applyPositionIntoElement() {\n const popoverElementPosition = getElementPositionInfo(this.element.nativeElement);\n const position = this.validPosition;\n this.internalPosition = position;\n this.popoverComponentInstance.position = this.internalPosition;\n setTimeout(() => {\n switch (this.internalPosition) {\n case 'bottom': {\n this.applyPopoverPositionBottom(popoverElementPosition);\n break;\n }\n case 'top': {\n this.applyPopoverPositionTop(popoverElementPosition);\n break;\n }\n case 'left': {\n this.applyPopoverPositionLeft(popoverElementPosition);\n break;\n }\n case 'right': {\n this.applyPopoverPositionRight(popoverElementPosition);\n break;\n }\n }\n this.popoverComponentInstance.visible = true;\n })\n\n }\n\n private applyPopoverPositionBottom(popoverElementPosition: ElementPosition) {\n const popoverElement = this.getPopoverElement;\n const leftPopover = this.getHorizontalLeft(popoverElementPosition)\n popoverElement.style.position = 'absolute';\n popoverElement.style.left = `${leftPopover}px`;\n popoverElement.style.top = `calc(${popoverElementPosition.top}px + ${popoverElementPosition.elementHeight}px)`\n }\n\n private applyPopoverPositionTop(popoverElementPosition: ElementPosition) {\n const popoverElement = this.getPopoverElement;\n const leftPopover = this.getHorizontalLeft(popoverElementPosition)\n const popoverHeight = popoverElement.getBoundingClientRect().height;\n popoverElement.style.position = 'absolute';\n popoverElement.style.left = `${leftPopover}px`;\n popoverElement.style.top = `calc(${popoverElementPosition.top}px - ${popoverHeight}px)`;\n }\n\n private applyPopoverPositionLeft(popoverElementPosition: ElementPosition) {\n const popoverElement = this.getPopoverElement;\n const popoverWidth = popoverElement.getBoundingClientRect().width;\n popoverElement.style.position = 'absolute';\n popoverElement.style.left = `calc(${popoverElementPosition.right}px - ${popoverWidth + popoverElementPosition.elementWidth}px)`;\n popoverElement.style.top = this.getVerticalTop(popoverElementPosition);\n }\n\n private applyPopoverPositionRight(popoverElementPosition: ElementPosition) {\n const popoverElement = this.getPopoverElement;\n popoverElement.style.position = 'absolute';\n popoverElement.style.left = `calc(${popoverElementPosition.right}px)`;\n popoverElement.style.top = this.getVerticalTop(popoverElementPosition);\n }\n\n private getHorizontalLeft(popoverElementPosition: ElementPosition) {\n const popoverElement = this.getPopoverElement;\n const popoverWidth = popoverElement.getBoundingClientRect().width;\n let _horizontalLeft = popoverElementPosition.left;\n if (this.popoverArrowPosition === 'end') {\n _horizontalLeft = popoverElementPosition.right - popoverWidth;\n } else if (this.popoverArrowPosition === 'middle') {\n _horizontalLeft = (popoverElementPosition.left + popoverElementPosition.elementWidth / 2) - (popoverWidth / 2);\n }\n return _horizontalLeft;\n }\n\n private getVerticalTop(popoverElementPosition: ElementPosition) {\n const arrowElement = this.popoverComponentInstance.arrowElement?.nativeElement as HTMLElement;\n const arrowElementPosition = getElementPositionInfo(arrowElement);\n const popoverContentPosition = getElementPositionInfo(this.getPopoverElement);\n const popoverElement = this.getPopoverElement;\n const popoverHeight = popoverElement.getBoundingClientRect().height;\n let top = `calc(${popoverElementPosition.top}px - ${popoverHeight / 2}px + ${popoverElementPosition.elementHeight / 2}px)`;\n\n const arrowMiddle = arrowElementPosition.elementHeight / 2;\n if (this.popoverArrowPosition === 'beginning') {\n const distanceArrowFromStart = arrowElementPosition.top - popoverContentPosition.top;\n top = `calc(${popoverElementPosition.top}px + ${popoverElementPosition.elementHeight / 2}px - ${distanceArrowFromStart + arrowMiddle}px)`;\n } else if (this.popoverArrowPosition === 'end') {\n const distanceArrowFromEnd = (popoverContentPosition.top + popoverContentPosition.elementHeight) - (arrowElementPosition.top + arrowElementPosition.elementHeight);\n top = `calc(${popoverElementPosition.top}px - ${popoverContentPosition.elementHeight}px + ${popoverElementPosition.elementHeight / 2}px + ${distanceArrowFromEnd + arrowMiddle}px)`;\n }\n return top;\n }\n\n private getLeftoverContentAvailableForPopover(): ElementLeftoverPosition {\n return getElementLeftoverContentAvailable(this.element.nativeElement);\n }\n\n private get getPopoverElement(): HTMLElement {\n return this.componentRef?.location.nativeElement as HTMLElement;\n }\n\n private get popoverComponentInstance() {\n return this.componentRef?.instance as HelpPopoverComponent;\n }\n\n /**\n * Given the current position of the popover and the available space around\n * the trigger element, this function will return the position that the popover\n * will be set at.\n *\n * If the popover will fit at the given position, it will return the same\n * position.\n *\n * If the popover will not fit at the given position, it will return the position\n * that has the most available space (top or bottom).\n *\n * If there is no position with available space, it will return the given\n * position.\n *\n * @returns The position that the popover will be set at.\n */\n private get validPosition(): HelpPopoverPosition {\n const { freeDistanceToBottom, freeDistanceToTop, freeDistanceToLeft, freeDistanceToRight } = this.getLeftoverContentAvailableForPopover();\n\n const popoverElementPosition = getElementPositionInfo(this.getPopoverElement);\n const popoverElementWidth = popoverElementPosition.elementWidth;\n const popoverElementHeight = popoverElementPosition.elementHeight;\n\n const remainingSpaceBottom = freeDistanceToBottom - popoverElementHeight;\n const remainingSpaceTop = freeDistanceToTop - popoverElementHeight;\n const remainingSpaceLeft = freeDistanceToLeft - popoverElementWidth;\n const remainingSpaceRight = freeDistanceToRight - popoverElementWidth;\n\n const canSetAtBottom = remainingSpaceBottom > 0;\n const canSetAtTop = remainingSpaceTop > 0;\n const canSetAtLeft = remainingSpaceLeft > 0;\n const canSetAtRight = remainingSpaceRight > 0;\n\n let validPosition: HelpPopoverPosition | undefined = undefined;\n if (canSetAtBottom && this.popoverPosition === 'bottom') {\n validPosition = 'bottom';\n } else if (canSetAtTop && this.popoverPosition === 'top') {\n validPosition = 'top';\n } else if (canSetAtLeft && this.popoverPosition === 'left') {\n validPosition = 'left';\n } else if (canSetAtRight && this.popoverPosition === 'right') {\n validPosition = 'right';\n }\n\n const needUseOtherPosition = !validPosition;\n if (needUseOtherPosition) {\n const freePositions: { position: HelpPopoverPosition, freeDistance: number }[] = [\n {\n position: 'bottom' as HelpPopoverPosition,\n freeDistance: remainingSpaceBottom,\n },\n {\n position: 'top' as HelpPopoverPosition,\n freeDistance: remainingSpaceTop,\n }\n ].filter((x) => x.freeDistance > 0);\n\n if (freePositions.length === 0) {\n return this.popoverPosition;\n }\n const itemWithMaxFreeDistance = freePositions.sort((a, b) => b.freeDistance - a.freeDistance)[0];\n return itemWithMaxFreeDistance.position;\n } else {\n return this.popoverPosition;\n }\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { HelpPopoverDirective } from './help-popover.directive';\nimport { HelpPopoverComponent } from './help-popover/help-popover.component';\nimport { ButtonModule } from '@seniorsistemas/angular-components/button';\n@NgModule({\n declarations: [HelpPopoverComponent, HelpPopoverDirective],\n imports: [\n CommonModule,\n ButtonModule,\n ],\n exports: [HelpPopoverDirective]\n})\nexport class HelpPopoverModule { }\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-help-popover.mjs","sources":["../../projects/angular-components/help-popover/src/lib/help-popover/help-popover/help-popover.component.ts","../../projects/angular-components/help-popover/src/lib/help-popover/help-popover/help-popover.component.html","../../projects/angular-components/help-popover/src/lib/help-popover/help-popover.directive.ts","../../projects/angular-components/help-popover/src/lib/help-popover/help-popover.module.ts","../../projects/angular-components/help-popover/src/seniorsistemas-angular-components-help-popover.ts"],"sourcesContent":["import { Component, ElementRef, EventEmitter, OnDestroy, TemplateRef, ViewChild } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { HelpPopoverArrowPosition, HelpPopoverPosition } from '../models/help-popover.models';\n\n@Component({\n selector: 's-help-popover',\n templateUrl: './help-popover.component.html',\n styleUrls: ['./help-popover.component.scss']\n})\nexport class HelpPopoverComponent implements OnDestroy {\n private readonly VALID_POSITIONS: HelpPopoverPosition[] = ['top', 'bottom', 'left', 'right'];\n private readonly VALID_ARROW_POSITIONS: HelpPopoverArrowPosition[] = ['beginning', 'end', 'middle'];\n private _position: HelpPopoverPosition = 'bottom';\n popoverContent: string | TemplateRef<any> | null = null;\n closeButton = true;\n icon = '';\n header = '';\n footer = '';\n button = '';\n visible = false;\n @ViewChild('arrowElement', { read: ElementRef, static: true }) arrowElement: ElementRef<HTMLElement> | null = null;\n public get position(): HelpPopoverPosition {\n return this._position;\n }\n public set position(value: HelpPopoverPosition) {\n if (!this.VALID_POSITIONS.includes(value)) {\n throw new Error(`Invalid position: ${value}. Valid positions: ${this.VALID_POSITIONS}`);\n }\n this._position = value;\n }\n\n private _arrowPosition: HelpPopoverArrowPosition = 'beginning';\n public get arrowPosition(): HelpPopoverArrowPosition {\n return this._arrowPosition;\n }\n public set arrowPosition(value: HelpPopoverArrowPosition) {\n if (!this.VALID_ARROW_POSITIONS.includes(value)) {\n throw new Error(`Invalid arrow position: ${value}. Valid arrow positions: ${this.VALID_ARROW_POSITIONS}`);\n }\n this._arrowPosition = value;\n }\n\n buttonClicked!: EventEmitter<void>;\n\n closed = new Subject<void>();\n get contentIsString() {\n return typeof this.popoverContent === 'string';\n }\n\n get popoverContentTemplateRef() {\n return this.popoverContent as TemplateRef<any>;\n }\n\n get hasHeaderContainer() {\n const _hasHeader = this.hasHeaderText;\n const hasIcon = this.hasIcon;\n const hasCloseButton = this.closeButton;\n return _hasHeader || hasIcon || hasCloseButton;\n }\n\n get hasFooter() {\n const _hasFooterText = this.hasFooterText;\n const hasButtonText = this.button && this.button.length > 0;\n return _hasFooterText || hasButtonText;\n }\n\n get hasHeaderText() {\n return this.header && this.header.length > 0;\n }\n\n get hasFooterText() {\n return this.footer && this.footer.length > 0;\n }\n\n get hasIcon() {\n return this.icon && this.icon.length > 0;\n }\n\n close() {\n this.closed.next();\n }\n\n clickButton() {\n this.buttonClicked!.emit();\n }\n\n\n ngOnDestroy(): void {\n this.closed.complete();\n }\n}\n","<div\n class=\"popover-container\"\n [style.visibility]=\"visible ? 'visible' : 'hidden'\"\n [class.popover-container-top]=\"position === 'top'\"\n [class.popover-container-right]=\"position === 'right'\"\n [class.popover-container-bottom]=\"position === 'bottom'\"\n [class.popover-container-left]=\"position === 'left'\"\n>\n <div\n class=\"arrow-container\"\n [class.arrow-container-beginning]=\"arrowPosition === 'beginning'\"\n [class.arrow-container-middle]=\"arrowPosition === 'middle'\"\n [class.arrow-container-end]=\"arrowPosition === 'end'\"\n >\n <div\n class=\"arrow\"\n #arrowElement\n ></div>\n </div>\n <div class=\"popover\">\n @if (hasHeaderContainer) {\n <div\n class=\"popover-header-container\"\n [class.space-between]=\"hasIcon || hasHeaderText\"\n [class.flex-end]=\"!(hasIcon || hasHeaderText) && closeButton\"\n >\n @if (hasIcon || hasHeaderText) {\n <div class=\"popover-header-container-text\">\n @if (hasIcon) {\n <div class=\"popover-icon\">\n <i [class]=\"icon\"></i>\n </div>\n }\n @if (hasHeaderText) {\n <div class=\"popover-header-text\">\n {{ header }}\n </div>\n }\n </div>\n }\n @if (closeButton) {\n <div class=\"popover-close-button\">\n <i\n class=\"fas fa-times\"\n (click)=\"close()\"\n ></i>\n </div>\n }\n </div>\n }\n\n <div class=\"popover-content\">\n @if (contentIsString) {\n {{ popoverContent }}\n } @else {\n <ng-container *ngTemplateOutlet=\"popoverContentTemplateRef\"></ng-container>\n }\n </div>\n\n @if (hasFooter) {\n <div class=\"separator\"></div>\n <div\n class=\"popover-footer-container\"\n [class.space-between]=\"hasFooterText\"\n [class.flex-end]=\"!hasFooterText\"\n >\n @if (hasFooterText) {\n <p class=\"popover-footer-text\">\n {{ footer }}\n </p>\n }\n @if (button && button.length > 0) {\n <div class=\"popover-footer-button\">\n <s-button\n [label]=\"button\"\n priority=\"primary\"\n size=\"small\"\n (clicked)=\"clickButton()\"\n [disabled]=\"false\"\n [auxiliary]=\"false\"\n >\n </s-button>\n </div>\n }\n </div>\n }\n </div>\n</div>\n\n","import {\n ComponentRef,\n Directive,\n ElementRef,\n EventEmitter,\n HostListener,\n inject,\n Input,\n OnDestroy,\n OnInit,\n Output,\n TemplateRef,\n ViewContainerRef,\n} from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { debounceTime, takeUntil } from 'rxjs/operators';\nimport { HelpPopoverComponent } from './help-popover/help-popover.component';\nimport { HelpPopoverArrowPosition, HelpPopoverPosition } from './models/help-popover.models';\nimport {\n ElementLeftoverPosition,\n ElementPosition,\n getElementLeftoverContentAvailable,\n getElementPositionInfo,\n isMousePositionOutsideOfElement,\n} from '@seniorsistemas/angular-components/utils';\n\n/**\n * @description Diretiva que exibe um popover de ajuda ao clicar no elemento hospedeiro.\n * O popover suporta conteúdo como texto simples ou `TemplateRef`, além de botão de fechar,\n * ícone, cabeçalho, rodapé e posição configurável. Pode ser acionado programaticamente.\n *\n * @example\n * ```html\n * <button [sHelpPopover]=\"'Informe aqui o seu CPF'\" popoverPosition=\"right\">?</button>\n * ```\n *\n * @category Overlay\n */\n@Directive({\n selector: '[sHelpPopover]',\n exportAs: 'sHelpPopover',\n})\nexport class HelpPopoverDirective implements OnDestroy, OnInit {\n private readonly MUTATION_OBSERVER_CONFIG: MutationObserverInit = {\n attributes: true,\n childList: true,\n subtree: true,\n };\n private readonly OBSERVER_CALLBACK = () => {\n if (!this.componentRef) {\n return;\n }\n this.applyPositionIntoElement();\n };\n private readonly RESIZE_OBSERVER = () => {\n this.onResize$.next();\n };\n\n /**\n * @description Conteúdo do popover. Aceita uma `string` com texto simples ou um `TemplateRef`\n * para renderizar conteúdo Angular customizado dentro do popover.\n */\n @Input() sHelpPopover: string | TemplateRef<any> | null = null;\n\n /**\n * @description Quando `true`, exibe o botão de fechar (X) no cabeçalho do popover.\n *\n * @default true\n */\n @Input() closeButton = true;\n\n /**\n * @description Classe de ícone exibida no cabeçalho do popover (ex: classe de Font Awesome).\n */\n @Input() popoverIcon = '';\n\n /**\n * @description Texto exibido no cabeçalho do popover.\n */\n @Input() popoverHeader = '';\n\n /**\n * @description Texto exibido no rodapé do popover.\n */\n @Input() popoverFooter = '';\n\n /**\n * @description Texto do botão de ação exibido no rodapé do popover.\n * Ao clicar, emite o evento `buttonClicked`.\n */\n @Input() popoverButtonText = '';\n\n /**\n * @description Alinhamento da seta indicadora em relação ao lado do popover.\n * Valores aceitos: `'beginning'` (padrão), `'middle'`, `'end'`.\n *\n * @default 'beginning'\n */\n @Input() popoverArrowPosition: HelpPopoverArrowPosition = 'beginning';\n\n /**\n * @description Posição do popover em relação ao elemento hospedeiro.\n * Valores aceitos: `'top'`, `'bottom'` (padrão), `'left'`, `'right'`.\n * O componente tenta reposicionar automaticamente caso não haja espaço.\n *\n * @default 'bottom'\n */\n @Input()\n public set popoverPosition(value: HelpPopoverPosition) {\n this._popoverPosition = value;\n this.internalPosition = value;\n }\n\n public get popoverPosition(): HelpPopoverPosition {\n return this._popoverPosition;\n }\n\n /**\n * @description Emitido quando o usuário clica no botão de ação do rodapé do popover.\n */\n @Output() buttonClicked = new EventEmitter<void>();\n\n private _popoverPosition: HelpPopoverPosition = 'bottom';\n\n private onDestroy$ = new Subject<void>();\n private componentRef: ComponentRef<HelpPopoverComponent> | null = null;\n private mutationObserverPopoverElement: MutationObserver | null = null;\n private mutationObserverPopoverContent: MutationObserver | null = null;\n private internalPosition: HelpPopoverPosition = 'bottom';\n private onResize$ = new Subject<void>();\n private manualTrigger = false;\n private listener = (event: PointerEvent | MouseEvent) => {\n if (!this.componentRef) {\n return;\n }\n const totalElementArea = this.getPopoverElement.getBoundingClientRect();\n if (isMousePositionOutsideOfElement(event, totalElementArea)) {\n this.destroy();\n }\n };\n private readonly viewContainerRef = inject(ViewContainerRef);\n private readonly element: ElementRef<HTMLElement> = inject(ElementRef);\n\n ngOnInit(): void {\n const popoverElementObserver = new MutationObserver(this.OBSERVER_CALLBACK);\n this.mutationObserverPopoverElement = popoverElementObserver;\n popoverElementObserver.observe(this.element.nativeElement, this.MUTATION_OBSERVER_CONFIG);\n window.addEventListener('resize', this.RESIZE_OBSERVER);\n window.addEventListener('scrollend', this.OBSERVER_CALLBACK);\n this.onResize$.pipe(takeUntil(this.onDestroy$), debounceTime(100)).subscribe(this.OBSERVER_CALLBACK);\n }\n\n show() {\n this.manualTrigger = true;\n this._createComponent();\n }\n\n @HostListener('click')\n doClick() {\n if (this.manualTrigger) {\n return;\n }\n this._createComponent();\n }\n\n ngOnDestroy(): void {\n this.onDestroy$.next();\n this.onDestroy$.complete();\n this.destroy();\n if (this.mutationObserverPopoverElement) {\n this.mutationObserverPopoverElement.disconnect();\n }\n window.removeEventListener('resize', this.RESIZE_OBSERVER);\n window.removeEventListener('scrollend', this.OBSERVER_CALLBACK);\n }\n\n private _createComponent() {\n if (!this.sHelpPopover) {\n return;\n }\n if (this.componentRef) {\n this.destroy();\n }\n const componentRef = this.viewContainerRef.createComponent(HelpPopoverComponent);\n this.componentRef = componentRef;\n if (this.mutationObserverPopoverContent) {\n this.mutationObserverPopoverContent.disconnect();\n }\n this.mutationObserverPopoverContent = new MutationObserver(this.OBSERVER_CALLBACK);\n const element = this.getPopoverElement as HTMLElement;\n this.mutationObserverPopoverContent.observe(\n element.querySelector('.popover-content') as HTMLElement,\n this.MUTATION_OBSERVER_CONFIG,\n );\n document.body.appendChild(componentRef.location.nativeElement);\n setTimeout(() => {\n document.addEventListener('click', this.listener);\n });\n const component = componentRef.instance;\n component.popoverContent = this.sHelpPopover;\n component.closeButton = this.closeButton;\n component.icon = this.popoverIcon;\n component.header = this.popoverHeader;\n component.footer = this.popoverFooter;\n component.button = this.popoverButtonText;\n component.position = this.internalPosition;\n component.arrowPosition = this.popoverArrowPosition;\n component.buttonClicked = this.buttonClicked;\n component.closed.pipe(takeUntil(this.onDestroy$)).subscribe(() => {\n this.destroy();\n });\n this.applyPositionIntoElement();\n }\n\n private destroy() {\n document.removeEventListener('click', this.listener);\n if (this.componentRef) {\n this.componentRef.destroy();\n this.componentRef = null;\n }\n\n this.internalPosition = this.popoverPosition;\n\n if (this.mutationObserverPopoverContent) {\n this.mutationObserverPopoverContent.disconnect();\n }\n }\n\n private applyPositionIntoElement() {\n const popoverElementPosition = getElementPositionInfo(this.element.nativeElement);\n const position = this.validPosition;\n this.internalPosition = position;\n this.popoverComponentInstance.position = this.internalPosition;\n setTimeout(() => {\n switch (this.internalPosition) {\n case 'bottom': {\n this.applyPopoverPositionBottom(popoverElementPosition);\n break;\n }\n case 'top': {\n this.applyPopoverPositionTop(popoverElementPosition);\n break;\n }\n case 'left': {\n this.applyPopoverPositionLeft(popoverElementPosition);\n break;\n }\n case 'right': {\n this.applyPopoverPositionRight(popoverElementPosition);\n break;\n }\n }\n this.popoverComponentInstance.visible = true;\n });\n }\n\n private applyPopoverPositionBottom(popoverElementPosition: ElementPosition) {\n const popoverElement = this.getPopoverElement;\n const leftPopover = this.getHorizontalLeft(popoverElementPosition);\n popoverElement.style.position = 'absolute';\n popoverElement.style.left = `${leftPopover}px`;\n popoverElement.style.top = `calc(${popoverElementPosition.top}px + ${popoverElementPosition.elementHeight}px)`;\n }\n\n private applyPopoverPositionTop(popoverElementPosition: ElementPosition) {\n const popoverElement = this.getPopoverElement;\n const leftPopover = this.getHorizontalLeft(popoverElementPosition);\n const popoverHeight = popoverElement.getBoundingClientRect().height;\n popoverElement.style.position = 'absolute';\n popoverElement.style.left = `${leftPopover}px`;\n popoverElement.style.top = `calc(${popoverElementPosition.top}px - ${popoverHeight}px)`;\n }\n\n private applyPopoverPositionLeft(popoverElementPosition: ElementPosition) {\n const popoverElement = this.getPopoverElement;\n const popoverWidth = popoverElement.getBoundingClientRect().width;\n popoverElement.style.position = 'absolute';\n popoverElement.style.left = `calc(${popoverElementPosition.right}px - ${popoverWidth + popoverElementPosition.elementWidth}px)`;\n popoverElement.style.top = this.getVerticalTop(popoverElementPosition);\n }\n\n private applyPopoverPositionRight(popoverElementPosition: ElementPosition) {\n const popoverElement = this.getPopoverElement;\n popoverElement.style.position = 'absolute';\n popoverElement.style.left = `calc(${popoverElementPosition.right}px)`;\n popoverElement.style.top = this.getVerticalTop(popoverElementPosition);\n }\n\n private getHorizontalLeft(popoverElementPosition: ElementPosition) {\n const popoverElement = this.getPopoverElement;\n const popoverWidth = popoverElement.getBoundingClientRect().width;\n let _horizontalLeft = popoverElementPosition.left;\n if (this.popoverArrowPosition === 'end') {\n _horizontalLeft = popoverElementPosition.right - popoverWidth;\n } else if (this.popoverArrowPosition === 'middle') {\n _horizontalLeft = popoverElementPosition.left + popoverElementPosition.elementWidth / 2 - popoverWidth / 2;\n }\n return _horizontalLeft;\n }\n\n private getVerticalTop(popoverElementPosition: ElementPosition) {\n const arrowElement = this.popoverComponentInstance.arrowElement?.nativeElement as HTMLElement;\n const arrowElementPosition = getElementPositionInfo(arrowElement);\n const popoverContentPosition = getElementPositionInfo(this.getPopoverElement);\n const popoverElement = this.getPopoverElement;\n const popoverHeight = popoverElement.getBoundingClientRect().height;\n let top = `calc(${popoverElementPosition.top}px - ${popoverHeight / 2}px + ${popoverElementPosition.elementHeight / 2}px)`;\n\n const arrowMiddle = arrowElementPosition.elementHeight / 2;\n if (this.popoverArrowPosition === 'beginning') {\n const distanceArrowFromStart = arrowElementPosition.top - popoverContentPosition.top;\n top = `calc(${popoverElementPosition.top}px + ${popoverElementPosition.elementHeight / 2}px - ${distanceArrowFromStart + arrowMiddle}px)`;\n } else if (this.popoverArrowPosition === 'end') {\n const distanceArrowFromEnd =\n popoverContentPosition.top +\n popoverContentPosition.elementHeight -\n (arrowElementPosition.top + arrowElementPosition.elementHeight);\n top = `calc(${popoverElementPosition.top}px - ${popoverContentPosition.elementHeight}px + ${popoverElementPosition.elementHeight / 2}px + ${distanceArrowFromEnd + arrowMiddle}px)`;\n }\n return top;\n }\n\n private getLeftoverContentAvailableForPopover(): ElementLeftoverPosition {\n return getElementLeftoverContentAvailable(this.element.nativeElement);\n }\n\n private get getPopoverElement(): HTMLElement {\n return this.componentRef?.location.nativeElement as HTMLElement;\n }\n\n private get popoverComponentInstance() {\n return this.componentRef?.instance as HelpPopoverComponent;\n }\n\n /**\n * Given the current position of the popover and the available space around\n * the trigger element, this function will return the position that the popover\n * will be set at.\n *\n * If the popover will fit at the given position, it will return the same\n * position.\n *\n * If the popover will not fit at the given position, it will return the position\n * that has the most available space (top or bottom).\n *\n * If there is no position with available space, it will return the given\n * position.\n *\n * @returns The position that the popover will be set at.\n */\n private get validPosition(): HelpPopoverPosition {\n const { freeDistanceToBottom, freeDistanceToTop, freeDistanceToLeft, freeDistanceToRight } =\n this.getLeftoverContentAvailableForPopover();\n\n const popoverElementPosition = getElementPositionInfo(this.getPopoverElement);\n const popoverElementWidth = popoverElementPosition.elementWidth;\n const popoverElementHeight = popoverElementPosition.elementHeight;\n\n const remainingSpaceBottom = freeDistanceToBottom - popoverElementHeight;\n const remainingSpaceTop = freeDistanceToTop - popoverElementHeight;\n const remainingSpaceLeft = freeDistanceToLeft - popoverElementWidth;\n const remainingSpaceRight = freeDistanceToRight - popoverElementWidth;\n\n const canSetAtBottom = remainingSpaceBottom > 0;\n const canSetAtTop = remainingSpaceTop > 0;\n const canSetAtLeft = remainingSpaceLeft > 0;\n const canSetAtRight = remainingSpaceRight > 0;\n\n let validPosition: HelpPopoverPosition | undefined = undefined;\n if (canSetAtBottom && this.popoverPosition === 'bottom') {\n validPosition = 'bottom';\n } else if (canSetAtTop && this.popoverPosition === 'top') {\n validPosition = 'top';\n } else if (canSetAtLeft && this.popoverPosition === 'left') {\n validPosition = 'left';\n } else if (canSetAtRight && this.popoverPosition === 'right') {\n validPosition = 'right';\n }\n\n const needUseOtherPosition = !validPosition;\n if (needUseOtherPosition) {\n const freePositions: { position: HelpPopoverPosition; freeDistance: number }[] = [\n {\n position: 'bottom' as HelpPopoverPosition,\n freeDistance: remainingSpaceBottom,\n },\n {\n position: 'top' as HelpPopoverPosition,\n freeDistance: remainingSpaceTop,\n },\n ].filter((x) => x.freeDistance > 0);\n\n if (freePositions.length === 0) {\n return this.popoverPosition;\n }\n const itemWithMaxFreeDistance = freePositions.sort((a, b) => b.freeDistance - a.freeDistance)[0];\n return itemWithMaxFreeDistance.position;\n } else {\n return this.popoverPosition;\n }\n }\n}\n\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { HelpPopoverDirective } from './help-popover.directive';\nimport { HelpPopoverComponent } from './help-popover/help-popover.component';\nimport { ButtonModule } from '@seniorsistemas/angular-components/button';\n@NgModule({\n declarations: [HelpPopoverComponent, HelpPopoverDirective],\n imports: [\n CommonModule,\n ButtonModule,\n ],\n exports: [HelpPopoverDirective]\n})\nexport class HelpPopoverModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -15,30 +15,68 @@ import { TemplateModule } from '@seniorsistemas/angular-components/template';
15
15
  import { Subject } from 'rxjs';
16
16
  import { takeUntil, delay } from 'rxjs/operators';
17
17
 
18
+ /**
19
+ * @description Componente de recorte de imagem que integra a biblioteca `cropperjs`.
20
+ * Exibe um dialog com uma área interativa para selecionar, recortar e remover imagens,
21
+ * suportando razão de aspecto configurável, formato circular e templates de cabeçalho/rodapé.
22
+ *
23
+ * @example
24
+ * ```html
25
+ * <s-image-cropper
26
+ * [(visible)]="dialogAberto"
27
+ * [imageSource]="urlDaImagem"
28
+ * [aspectRatio]="1"
29
+ * (croppedImage)="onCroppedImage($event)" />
30
+ * ```
31
+ *
32
+ * @category Inputs
33
+ */
18
34
  class ImageCropperComponent {
19
35
  activeDialog = inject(ActiveDialog, { optional: true });
20
36
  static nextId = 0;
37
+ /** @description Identificador único do componente no DOM. Gerado automaticamente se não informado. */
21
38
  id = `s-image-cropper-${ImageCropperComponent.nextId++}`;
39
+ /** @description Controla a visibilidade do dialog de corte. @default false */
22
40
  visible = false;
41
+ /** @description Título exibido no cabeçalho do dialog. @default 'Recortar imagem' */
23
42
  header = 'Recortar imagem';
43
+ /** @description Rótulo do botão de confirmar o corte. @default 'Recortar' */
24
44
  cropLabel = 'Recortar';
45
+ /** @description Rótulo do botão de trocar a imagem. @default 'Trocar' */
25
46
  selectAnotherLabel = 'Trocar';
47
+ /** @description Rótulo do botão de remover a imagem. @default 'Remover' */
26
48
  removeLabel = 'Remover';
49
+ /** @description Rótulo do botão de cancelar. @default 'Cancelar' */
27
50
  cancelLabel = 'Cancelar';
51
+ /** @description Título do empty state quando nenhuma imagem foi selecionada. */
28
52
  emptyStateTitle = 'Selecione uma foto, em seguida você poderá ajustá-la';
53
+ /** @description Rótulo do botão de ação do empty state. @default 'Escolher imagem' */
29
54
  emptyStateActionLabel = 'Escolher imagem';
55
+ /** @description Classe do ícone exibido no empty state. @default 'fa fa-picture-o' */
30
56
  emptyStateIconClass = 'fa fa-picture-o';
57
+ /** @description Razão de aspecto para o recorte (ex.: `1` para quadrado, `16/9`). @default NaN (livre) */
31
58
  aspectRatio = NaN;
59
+ /** @description Quando `true`, exibe a área de recorte no formato circular. @default false */
32
60
  rounded = false;
61
+ /** @description Exibe o botão para trocar a imagem selecionada. @default true */
33
62
  allowSelectAnother = true;
63
+ /** @description Exibe o botão para remover a imagem. @default true */
34
64
  allowRemove = true;
65
+ /** @description Exibe o botão para cancelar o recorte. @default true */
35
66
  allowCancel = true;
67
+ /** @description URL ou base64 da imagem a ser carregada no cropper. */
36
68
  imageSource;
69
+ /** @description Emitido quando o valor de `visible` muda, habilitando two-way binding com `[(visible)]`. */
37
70
  visibleChange = new EventEmitter();
71
+ /** @description Emitido quando o usuário troca a imagem selecionada. */
38
72
  changeImage = new EventEmitter();
73
+ /** @description Emitido com a imagem recortada em formato base64 string. */
39
74
  croppedImage = new EventEmitter();
75
+ /** @description Emitido com o `HTMLCanvasElement` resultante do recorte. */
40
76
  croppedCanvas = new EventEmitter();
77
+ /** @description Emitido quando o usuário confirma a remoção da imagem. */
41
78
  removedImage = new EventEmitter();
79
+ /** @description Emitido quando o usuário cancela o recorte. */
42
80
  cancel = new EventEmitter();
43
81
  image = null;
44
82
  headerSection = null;
@@ -57,7 +95,6 @@ class ImageCropperComponent {
57
95
  if (isNullOrUndefined(this.image)) {
58
96
  return;
59
97
  }
60
- ;
61
98
  if (this.cropper) {
62
99
  this.cropper.destroy();
63
100
  }
@@ -124,7 +161,7 @@ class ImageCropperComponent {
124
161
  this.visibleChange.emit(visible);
125
162
  }
126
163
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ImageCropperComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
127
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: ImageCropperComponent, selector: "s-image-cropper", inputs: { id: "id", visible: "visible", header: "header", cropLabel: "cropLabel", selectAnotherLabel: "selectAnotherLabel", removeLabel: "removeLabel", cancelLabel: "cancelLabel", emptyStateTitle: "emptyStateTitle", emptyStateActionLabel: "emptyStateActionLabel", emptyStateIconClass: "emptyStateIconClass", aspectRatio: "aspectRatio", rounded: "rounded", allowSelectAnother: "allowSelectAnother", allowRemove: "allowRemove", allowCancel: "allowCancel", imageSource: "imageSource" }, outputs: { visibleChange: "visibleChange", changeImage: "changeImage", croppedImage: "croppedImage", croppedCanvas: "croppedCanvas", removedImage: "removedImage", cancel: "cancel" }, queries: [{ propertyName: "headerSection", first: true, predicate: HeaderComponent, descendants: true, static: true }, { propertyName: "footerSection", first: true, predicate: FooterComponent, descendants: true, static: true }], viewQueries: [{ propertyName: "image", first: true, predicate: ["image"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<div [id]=\"id\">\n @let roundedClass = rounded ? 's-image-cropper--rounded' : '';\n <s-dialog\n size=\"lg\"\n [contentClassName]=\"'s-image-cropper ' + roundedClass\"\n [header]=\"headerSection ? '' : header\"\n [(visible)]=\"visible\"\n (visibleChange)=\"onModalVisibleChange($event!)\"\n [draggable]=\"false\"\n >\n @if (headerSection) {\n <ng-template sTemplate=\"header\">\n <ng-content select=\"s-header\"></ng-content>\n </ng-template>\n }\n @if (!imageSource) {\n <s-empty-state\n [id]=\"id + '-empty-state'\"\n [title]=\"emptyStateTitle\"\n [iconClass]=\"emptyStateIconClass\"\n [primaryActionLabel]=\"emptyStateActionLabel\"\n (primaryAction)=\"onChangeImage()\"\n >\n </s-empty-state>\n }\n <div\n [attr.data-hidden]=\"!imageSource\"\n class=\"image-container\"\n >\n <img\n [id]=\"id + '-cropper'\"\n #image\n [src]=\"imageSource || ''\"\n alt=\"cropped image\"\n />\n </div>\n <ng-template sTemplate=\"footer\">\n @if (!footerSection) {\n <div class=\"button-container\">\n @if (allowCancel) {\n <s-button\n [id]=\"id + '-cancel-button'\"\n type=\"button\"\n priority=\"link\"\n [label]=\"cancelLabel\"\n (clicked)=\"onCancel()\"\n >\n </s-button>\n }\n\n <div>\n @if (imageSource && allowRemove) {\n <s-button\n [id]=\"id + '-remove-button'\"\n type=\"button\"\n priority=\"secondary\"\n [label]=\"removeLabel\"\n (clicked)=\"onRemoveImage()\"\n >\n </s-button>\n }\n @if (imageSource && allowSelectAnother) {\n <s-button\n [id]=\"id + '-select-another-button'\"\n type=\"button\"\n priority=\"secondary\"\n [label]=\"selectAnotherLabel\"\n (clicked)=\"onChangeImage()\"\n >\n </s-button>\n }\n <s-button\n [id]=\"id + '-crop-button'\"\n type=\"button\"\n [label]=\"cropLabel\"\n (clicked)=\"onCropImage()\"\n >\n </s-button>\n </div>\n </div>\n }\n @if (footerSection) {\n <ng-content select=\"s-footer\"> </ng-content>\n }\n </ng-template>\n </s-dialog>\n</div>\n", styles: [".cropper-container{-webkit-touch-callout:none;direction:ltr;font-size:0;line-height:0;position:relative;-ms-touch-action:none;touch-action:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.cropper-container img{backface-visibility:hidden;display:block;height:100%;image-orientation:0deg;max-height:none!important;max-width:none!important;min-height:0!important;min-width:0!important;width:100%}.cropper-canvas,.cropper-crop-box,.cropper-drag-box,.cropper-modal,.cropper-wrap-box{inset:0;position:absolute}.cropper-canvas,.cropper-wrap-box{overflow:hidden}.cropper-drag-box{background-color:#fff;opacity:0}.cropper-modal{background-color:#000;opacity:.5}.cropper-view-box{display:block;height:100%;outline:1px solid #39f;outline-color:#3399ffbf;overflow:hidden;width:100%}.cropper-dashed{border:0 dashed #eee;display:block;opacity:.5;position:absolute}.cropper-dashed.dashed-h{border-bottom-width:1px;border-top-width:1px;height:33.33333%;left:0;top:33.33333%;width:100%}.cropper-dashed.dashed-v{border-left-width:1px;border-right-width:1px;height:100%;left:33.33333%;top:0;width:33.33333%}.cropper-center{display:block;height:0;left:50%;opacity:.75;position:absolute;top:50%;width:0}.cropper-center:after,.cropper-center:before{background-color:#eee;content:\" \";display:block;position:absolute}.cropper-center:before{height:1px;left:-3px;top:0;width:7px}.cropper-center:after{height:7px;left:0;top:-3px;width:1px}.cropper-face,.cropper-line,.cropper-point{display:block;height:100%;opacity:.1;position:absolute;width:100%}.cropper-face{background-color:#fff;left:0;top:0}.cropper-line{background-color:#39f}.cropper-line.line-e{cursor:ew-resize;right:-3px;top:0;width:5px}.cropper-line.line-n{cursor:ns-resize;height:5px;left:0;top:-3px}.cropper-line.line-w{cursor:ew-resize;left:-3px;top:0;width:5px}.cropper-line.line-s{bottom:-3px;cursor:ns-resize;height:5px;left:0}.cropper-point{background-color:#39f;height:5px;opacity:.75;width:5px}.cropper-point.point-e{cursor:ew-resize;margin-top:-3px;right:-3px;top:50%}.cropper-point.point-n{cursor:ns-resize;left:50%;margin-left:-3px;top:-3px}.cropper-point.point-w{cursor:ew-resize;left:-3px;margin-top:-3px;top:50%}.cropper-point.point-s{bottom:-3px;cursor:s-resize;left:50%;margin-left:-3px}.cropper-point.point-ne{cursor:nesw-resize;right:-3px;top:-3px}.cropper-point.point-nw{cursor:nwse-resize;left:-3px;top:-3px}.cropper-point.point-sw{bottom:-3px;cursor:nesw-resize;left:-3px}.cropper-point.point-se{bottom:-3px;cursor:nwse-resize;height:20px;opacity:1;right:-3px;width:20px}@media (min-width:768px){.cropper-point.point-se{height:15px;width:15px}}@media (min-width:992px){.cropper-point.point-se{height:10px;width:10px}}@media (min-width:1200px){.cropper-point.point-se{height:5px;opacity:.75;width:5px}}.cropper-point.point-se:before{background-color:#39f;bottom:-50%;content:\" \";display:block;height:200%;opacity:0;position:absolute;right:-50%;width:200%}.cropper-invisible{opacity:0}.cropper-bg{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQAQMAAAAlPW0iAAAAA3NCSVQICAjb4U/gAAAABlBMVEXMzMz////TjRV2AAAACXBIWXMAAArrAAAK6wGCiw1aAAAAHHRFWHRTb2Z0d2FyZQBBZG9iZSBGaXJld29ya3MgQ1M26LyyjAAAABFJREFUCJlj+M/AgBVhF/0PAH6/D/HkDxOGAAAAAElFTkSuQmCC)}.cropper-hide{display:block;height:0;position:absolute;width:0}.cropper-hidden{display:none!important}.cropper-move{cursor:move}.cropper-crop{cursor:crosshair}.cropper-disabled .cropper-drag-box,.cropper-disabled .cropper-face,.cropper-disabled .cropper-line,.cropper-disabled .cropper-point{cursor:not-allowed}.s-image-cropper{border-radius:0!important;display:flex;justify-content:space-between;flex-direction:column}.s-image-cropper .image-container{display:flex;align-items:center;justify-content:center;height:100%}.s-image-cropper img{max-width:100%;max-height:100%}.s-image-cropper .button-container{display:flex;justify-content:space-between;width:100%}.s-image-cropper .cropper-view-box{outline:2px dashed #fff}.s-image-cropper .cropper-line{opacity:0}.s-image-cropper .cropper-point{background-color:#fff;opacity:1;height:15px;width:15px;border-radius:50%}.s-image-cropper .cropper-point.point-e{right:-8.5px;top:calc(50% - 4.5px)}.s-image-cropper .cropper-point.point-n{top:-8.5px;left:calc(50% - 4.5px)}.s-image-cropper .cropper-point.point-w{left:-8.5px;top:calc(50% - 4.5px)}.s-image-cropper .cropper-point.point-s{bottom:-8.5px;left:calc(50% - 4.5px)}.s-image-cropper .cropper-point.point-ne{right:-8.5px;top:-8.5px}.s-image-cropper .cropper-point.point-nw{left:-8.5px;top:-8.5px}.s-image-cropper .cropper-point.point-sw{left:-8.5px;bottom:-8.5px}.s-image-cropper .cropper-point.point-se{right:-8.5px;bottom:-8.5px}.s-image-cropper--rounded .cropper-view-box,.s-image-cropper--rounded .cropper-face{border-radius:50%}.s-image-cropper--rounded .cropper-view-box{outline:1px dashed rgba(255,255,255,.3)}.s-image-cropper--rounded .cropper-view-box:after{border:2px dashed #fff;border-radius:50%;content:\"\";height:100%;left:0;position:absolute;top:0;width:100%}\n/*! Bundled license information:\n\ncropperjs/dist/cropper.min.css:\n (*!\n * Cropper.js v1.6.2\n * https://fengyuanchen.github.io/cropperjs\n *\n * Copyright 2015-present Chen Fengyuan\n * Released under the MIT license\n *\n * Date: 2024-04-21T07:43:02.731Z\n *)\n*/\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", "size", "slide", "animation", "badge", "iconColor"], outputs: ["clicked"] }, { kind: "component", type: i2.EmptyStateComponent, selector: "s-empty-state", inputs: ["id", "title", "iconClass", "description", "showPrimaryAction", "showSecondaryAction", "primaryActionLabel", "secondaryActionLabel", "primaryModel"], outputs: ["primaryAction", "secondaryAction"] }, { kind: "component", type: i3.DialogComponent, selector: "s-dialog", inputs: ["header", "visible", "size", "contentClassName", "escapeOnEsc", "destroyClickOutside"], outputs: ["visibleChange"] }, { kind: "directive", type: i4.TemplateDirective, selector: "[sTemplate]", inputs: ["sTemplate"] }], encapsulation: i0.ViewEncapsulation.None });
164
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: ImageCropperComponent, selector: "s-image-cropper", inputs: { id: "id", visible: "visible", header: "header", cropLabel: "cropLabel", selectAnotherLabel: "selectAnotherLabel", removeLabel: "removeLabel", cancelLabel: "cancelLabel", emptyStateTitle: "emptyStateTitle", emptyStateActionLabel: "emptyStateActionLabel", emptyStateIconClass: "emptyStateIconClass", aspectRatio: "aspectRatio", rounded: "rounded", allowSelectAnother: "allowSelectAnother", allowRemove: "allowRemove", allowCancel: "allowCancel", imageSource: "imageSource" }, outputs: { visibleChange: "visibleChange", changeImage: "changeImage", croppedImage: "croppedImage", croppedCanvas: "croppedCanvas", removedImage: "removedImage", cancel: "cancel" }, queries: [{ propertyName: "headerSection", first: true, predicate: HeaderComponent, descendants: true, static: true }, { propertyName: "footerSection", first: true, predicate: FooterComponent, descendants: true, static: true }], viewQueries: [{ propertyName: "image", first: true, predicate: ["image"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<div [id]=\"id\">\n @let roundedClass = rounded ? 's-image-cropper--rounded' : '';\n <s-dialog\n size=\"lg\"\n [contentClassName]=\"'s-image-cropper ' + roundedClass\"\n [header]=\"headerSection ? '' : header\"\n [(visible)]=\"visible\"\n (visibleChange)=\"onModalVisibleChange($event!)\"\n [draggable]=\"false\"\n >\n @if (headerSection) {\n <ng-template sTemplate=\"header\">\n <ng-content select=\"s-header\"></ng-content>\n </ng-template>\n }\n @if (!imageSource) {\n <s-empty-state\n [id]=\"id + '-empty-state'\"\n [title]=\"emptyStateTitle\"\n [iconClass]=\"emptyStateIconClass\"\n [primaryActionLabel]=\"emptyStateActionLabel\"\n (primaryAction)=\"onChangeImage()\"\n >\n </s-empty-state>\n }\n <div\n [attr.data-hidden]=\"!imageSource\"\n class=\"image-container\"\n >\n <img\n [id]=\"id + '-cropper'\"\n #image\n [src]=\"imageSource || ''\"\n alt=\"cropped image\"\n />\n </div>\n <ng-template sTemplate=\"footer\">\n @if (!footerSection) {\n <div class=\"button-container\">\n @if (allowCancel) {\n <s-button\n [id]=\"id + '-cancel-button'\"\n type=\"button\"\n priority=\"link\"\n [label]=\"cancelLabel\"\n (clicked)=\"onCancel()\"\n >\n </s-button>\n }\n\n <div>\n @if (imageSource && allowRemove) {\n <s-button\n [id]=\"id + '-remove-button'\"\n type=\"button\"\n priority=\"secondary\"\n [label]=\"removeLabel\"\n (clicked)=\"onRemoveImage()\"\n >\n </s-button>\n }\n @if (imageSource && allowSelectAnother) {\n <s-button\n [id]=\"id + '-select-another-button'\"\n type=\"button\"\n priority=\"secondary\"\n [label]=\"selectAnotherLabel\"\n (clicked)=\"onChangeImage()\"\n >\n </s-button>\n }\n <s-button\n [id]=\"id + '-crop-button'\"\n type=\"button\"\n [label]=\"cropLabel\"\n (clicked)=\"onCropImage()\"\n >\n </s-button>\n </div>\n </div>\n }\n @if (footerSection) {\n <ng-content select=\"s-footer\"> </ng-content>\n }\n </ng-template>\n </s-dialog>\n</div>\n", styles: [".cropper-container{-webkit-touch-callout:none;direction:ltr;font-size:0;line-height:0;position:relative;-ms-touch-action:none;touch-action:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.cropper-container img{backface-visibility:hidden;display:block;height:100%;image-orientation:0deg;max-height:none!important;max-width:none!important;min-height:0!important;min-width:0!important;width:100%}.cropper-canvas,.cropper-crop-box,.cropper-drag-box,.cropper-modal,.cropper-wrap-box{inset:0;position:absolute}.cropper-canvas,.cropper-wrap-box{overflow:hidden}.cropper-drag-box{background-color:#fff;opacity:0}.cropper-modal{background-color:#000;opacity:.5}.cropper-view-box{display:block;height:100%;outline:1px solid #39f;outline-color:#3399ffbf;overflow:hidden;width:100%}.cropper-dashed{border:0 dashed #eee;display:block;opacity:.5;position:absolute}.cropper-dashed.dashed-h{border-bottom-width:1px;border-top-width:1px;height:33.33333%;left:0;top:33.33333%;width:100%}.cropper-dashed.dashed-v{border-left-width:1px;border-right-width:1px;height:100%;left:33.33333%;top:0;width:33.33333%}.cropper-center{display:block;height:0;left:50%;opacity:.75;position:absolute;top:50%;width:0}.cropper-center:after,.cropper-center:before{background-color:#eee;content:\" \";display:block;position:absolute}.cropper-center:before{height:1px;left:-3px;top:0;width:7px}.cropper-center:after{height:7px;left:0;top:-3px;width:1px}.cropper-face,.cropper-line,.cropper-point{display:block;height:100%;opacity:.1;position:absolute;width:100%}.cropper-face{background-color:#fff;left:0;top:0}.cropper-line{background-color:#39f}.cropper-line.line-e{cursor:ew-resize;right:-3px;top:0;width:5px}.cropper-line.line-n{cursor:ns-resize;height:5px;left:0;top:-3px}.cropper-line.line-w{cursor:ew-resize;left:-3px;top:0;width:5px}.cropper-line.line-s{bottom:-3px;cursor:ns-resize;height:5px;left:0}.cropper-point{background-color:#39f;height:5px;opacity:.75;width:5px}.cropper-point.point-e{cursor:ew-resize;margin-top:-3px;right:-3px;top:50%}.cropper-point.point-n{cursor:ns-resize;left:50%;margin-left:-3px;top:-3px}.cropper-point.point-w{cursor:ew-resize;left:-3px;margin-top:-3px;top:50%}.cropper-point.point-s{bottom:-3px;cursor:s-resize;left:50%;margin-left:-3px}.cropper-point.point-ne{cursor:nesw-resize;right:-3px;top:-3px}.cropper-point.point-nw{cursor:nwse-resize;left:-3px;top:-3px}.cropper-point.point-sw{bottom:-3px;cursor:nesw-resize;left:-3px}.cropper-point.point-se{bottom:-3px;cursor:nwse-resize;height:20px;opacity:1;right:-3px;width:20px}@media (min-width:768px){.cropper-point.point-se{height:15px;width:15px}}@media (min-width:992px){.cropper-point.point-se{height:10px;width:10px}}@media (min-width:1200px){.cropper-point.point-se{height:5px;opacity:.75;width:5px}}.cropper-point.point-se:before{background-color:#39f;bottom:-50%;content:\" \";display:block;height:200%;opacity:0;position:absolute;right:-50%;width:200%}.cropper-invisible{opacity:0}.cropper-bg{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQAQMAAAAlPW0iAAAAA3NCSVQICAjb4U/gAAAABlBMVEXMzMz////TjRV2AAAACXBIWXMAAArrAAAK6wGCiw1aAAAAHHRFWHRTb2Z0d2FyZQBBZG9iZSBGaXJld29ya3MgQ1M26LyyjAAAABFJREFUCJlj+M/AgBVhF/0PAH6/D/HkDxOGAAAAAElFTkSuQmCC)}.cropper-hide{display:block;height:0;position:absolute;width:0}.cropper-hidden{display:none!important}.cropper-move{cursor:move}.cropper-crop{cursor:crosshair}.cropper-disabled .cropper-drag-box,.cropper-disabled .cropper-face,.cropper-disabled .cropper-line,.cropper-disabled .cropper-point{cursor:not-allowed}.s-image-cropper{border-radius:0!important;display:flex;justify-content:space-between;flex-direction:column}.s-image-cropper .image-container{display:flex;align-items:center;justify-content:center;height:100%}.s-image-cropper img{max-width:100%;max-height:100%}.s-image-cropper .button-container{display:flex;justify-content:space-between;width:100%}.s-image-cropper .cropper-view-box{outline:2px dashed #fff}.s-image-cropper .cropper-line{opacity:0}.s-image-cropper .cropper-point{background-color:#fff;opacity:1;height:15px;width:15px;border-radius:50%}.s-image-cropper .cropper-point.point-e{right:-8.5px;top:calc(50% - 4.5px)}.s-image-cropper .cropper-point.point-n{top:-8.5px;left:calc(50% - 4.5px)}.s-image-cropper .cropper-point.point-w{left:-8.5px;top:calc(50% - 4.5px)}.s-image-cropper .cropper-point.point-s{bottom:-8.5px;left:calc(50% - 4.5px)}.s-image-cropper .cropper-point.point-ne{right:-8.5px;top:-8.5px}.s-image-cropper .cropper-point.point-nw{left:-8.5px;top:-8.5px}.s-image-cropper .cropper-point.point-sw{left:-8.5px;bottom:-8.5px}.s-image-cropper .cropper-point.point-se{right:-8.5px;bottom:-8.5px}.s-image-cropper--rounded .cropper-view-box,.s-image-cropper--rounded .cropper-face{border-radius:50%}.s-image-cropper--rounded .cropper-view-box{outline:1px dashed rgba(255,255,255,.3)}.s-image-cropper--rounded .cropper-view-box:after{border:2px dashed #fff;border-radius:50%;content:\"\";height:100%;left:0;position:absolute;top:0;width:100%}\n/*! Bundled license information:\n\ncropperjs/dist/cropper.min.css:\n (*!\n * Cropper.js v1.6.2\n * https://fengyuanchen.github.io/cropperjs\n *\n * Copyright 2015-present Chen Fengyuan\n * Released under the MIT license\n *\n * Date: 2024-04-21T07:43:02.731Z\n *)\n*/\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"] }, { kind: "component", type: i2.EmptyStateComponent, selector: "s-empty-state", inputs: ["id", "title", "iconClass", "description", "showPrimaryAction", "showSecondaryAction", "primaryActionLabel", "secondaryActionLabel", "primaryModel"], outputs: ["primaryAction", "secondaryAction"] }, { kind: "component", type: i3.DialogComponent, selector: "s-dialog", inputs: ["header", "visible", "size", "contentClassName", "escapeOnEsc", "destroyClickOutside"], outputs: ["visibleChange"] }, { kind: "directive", type: i4.TemplateDirective, selector: "[sTemplate]", inputs: ["sTemplate"] }], encapsulation: i0.ViewEncapsulation.None });
128
165
  }
129
166
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ImageCropperComponent, decorators: [{
130
167
  type: Component,
@@ -1 +1 @@
1
- {"version":3,"file":"seniorsistemas-angular-components-image-cropper.mjs","sources":["../../projects/angular-components/image-cropper/src/lib/image-cropper/image-cropper.component.ts","../../projects/angular-components/image-cropper/src/lib/image-cropper/image-cropper.component.html","../../projects/angular-components/image-cropper/src/lib/image-cropper/image-cropper.module.ts","../../projects/angular-components/image-cropper/src/lib/image-cropper/image-cropper.service.ts","../../projects/angular-components/image-cropper/src/seniorsistemas-angular-components-image-cropper.ts"],"sourcesContent":["import {\n Component,\n ContentChild,\n ElementRef,\n EventEmitter,\n inject,\n Input,\n OnChanges,\n OnInit,\n Output,\n SimpleChanges,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport Cropper from 'cropperjs';\nimport { FooterComponent, HeaderComponent } from '@seniorsistemas/angular-components/structure';\nimport { isNullOrUndefined } from '@seniorsistemas/angular-components/utils';\nimport { ActiveDialog } from '@seniorsistemas/angular-components/dialog';\n\n@Component({\n selector: 's-image-cropper',\n templateUrl: './image-cropper.component.html',\n styleUrls: ['./image-cropper.component.scss'],\n encapsulation: ViewEncapsulation.None,\n})\nexport class ImageCropperComponent implements OnInit, OnChanges {\n activeDialog = inject(ActiveDialog, { optional: true });\n public static nextId = 0;\n\n @Input()\n public id = `s-image-cropper-${ImageCropperComponent.nextId++}`;\n\n @Input()\n public visible = false;\n\n @Input()\n public header = 'Recortar imagem';\n\n @Input()\n public cropLabel = 'Recortar';\n\n @Input()\n public selectAnotherLabel = 'Trocar';\n\n @Input()\n public removeLabel = 'Remover';\n\n @Input()\n public cancelLabel = 'Cancelar';\n\n @Input()\n public emptyStateTitle = 'Selecione uma foto, em seguida você poderá ajustá-la';\n\n @Input()\n public emptyStateActionLabel = 'Escolher imagem';\n\n @Input()\n public emptyStateIconClass = 'fa fa-picture-o';\n\n @Input()\n public aspectRatio = NaN;\n\n @Input()\n public rounded = false;\n\n @Input()\n public allowSelectAnother = true;\n\n @Input()\n public allowRemove = true;\n\n @Input()\n public allowCancel = true;\n\n @Input()\n public imageSource?: string;\n\n @Output()\n public visibleChange = new EventEmitter<boolean>();\n\n @Output()\n public changeImage = new EventEmitter();\n\n @Output()\n public croppedImage = new EventEmitter<string>();\n\n @Output()\n public croppedCanvas = new EventEmitter<HTMLCanvasElement>();\n\n @Output()\n public removedImage = new EventEmitter();\n\n @Output()\n // eslint-disable-next-line @angular-eslint/no-output-native\n public cancel = new EventEmitter();\n\n @ViewChild('image', { static: true })\n public image: ElementRef<HTMLImageElement> | null = null;\n\n @ContentChild(HeaderComponent, { static: true })\n public headerSection: HeaderComponent | null = null;\n\n @ContentChild(FooterComponent, { static: true })\n public footerSection: FooterComponent | null = null;\n\n public cropper: Cropper | null = null;\n\n public ngOnInit() {\n if (this.imageSource) this.initCropper();\n }\n\n public ngOnChanges(changes: SimpleChanges) {\n if (changes['imageSource'] && changes['imageSource'].currentValue) {\n this.initCropper();\n }\n }\n\n private initCropper() {\n if (isNullOrUndefined(this.image)) {\n return\n };\n if (this.cropper) {\n this.cropper.destroy();\n }\n this.image.nativeElement.src = this.imageSource as string;\n this.cropper = new Cropper(this.image.nativeElement, {\n aspectRatio: this.rounded ? 1 : this.aspectRatio,\n guides: false,\n dragMode: 'move' as Cropper.DragMode,\n minCropBoxHeight: 2,\n minCropBoxWidth: 2,\n toggleDragModeOnDblclick: false,\n });\n }\n\n public getRoundedCanvas(sourceCanvas: HTMLCanvasElement): HTMLCanvasElement | null {\n const canvas = document.createElement('canvas');\n const context = canvas.getContext('2d');\n\n if (isNullOrUndefined(context)) return null;\n\n const width = sourceCanvas.width;\n const height = sourceCanvas.height;\n\n canvas.width = width;\n canvas.height = height;\n\n context.imageSmoothingEnabled = true;\n context.drawImage(sourceCanvas, 0, 0, width, height);\n context.globalCompositeOperation = 'destination-in';\n context.beginPath();\n context.arc(width / 2, height / 2, Math.min(width, height) / 2, 0, 2 * Math.PI, true);\n context.fill();\n\n return canvas;\n }\n\n public onCropImage() {\n if (!this.imageSource) {\n this.croppedImage.emit();\n this.croppedCanvas.emit();\n } else {\n const cropperCanvas = this.cropper?.getCroppedCanvas();\n if (cropperCanvas) {\n const canvas = this.rounded ? this.getRoundedCanvas(cropperCanvas) : cropperCanvas;\n if (canvas) {\n this.croppedCanvas.emit(canvas);\n this.croppedImage.emit(canvas.toDataURL());\n }\n }\n }\n this.visible = false;\n this.visibleChange.emit(false);\n }\n\n public onChangeImage() {\n this.changeImage.emit();\n }\n\n public onRemoveImage() {\n this.imageSource = undefined;\n this.removedImage.emit();\n }\n\n public onCancel() {\n this.visible = false;\n this.visibleChange.emit(false);\n this.cancel.emit();\n }\n\n public onModalVisibleChange(visible: boolean) {\n if (!visible) this.onCancel();\n this.visibleChange.emit(visible);\n }\n}\n","<div [id]=\"id\">\n @let roundedClass = rounded ? 's-image-cropper--rounded' : '';\n <s-dialog\n size=\"lg\"\n [contentClassName]=\"'s-image-cropper ' + roundedClass\"\n [header]=\"headerSection ? '' : header\"\n [(visible)]=\"visible\"\n (visibleChange)=\"onModalVisibleChange($event!)\"\n [draggable]=\"false\"\n >\n @if (headerSection) {\n <ng-template sTemplate=\"header\">\n <ng-content select=\"s-header\"></ng-content>\n </ng-template>\n }\n @if (!imageSource) {\n <s-empty-state\n [id]=\"id + '-empty-state'\"\n [title]=\"emptyStateTitle\"\n [iconClass]=\"emptyStateIconClass\"\n [primaryActionLabel]=\"emptyStateActionLabel\"\n (primaryAction)=\"onChangeImage()\"\n >\n </s-empty-state>\n }\n <div\n [attr.data-hidden]=\"!imageSource\"\n class=\"image-container\"\n >\n <img\n [id]=\"id + '-cropper'\"\n #image\n [src]=\"imageSource || ''\"\n alt=\"cropped image\"\n />\n </div>\n <ng-template sTemplate=\"footer\">\n @if (!footerSection) {\n <div class=\"button-container\">\n @if (allowCancel) {\n <s-button\n [id]=\"id + '-cancel-button'\"\n type=\"button\"\n priority=\"link\"\n [label]=\"cancelLabel\"\n (clicked)=\"onCancel()\"\n >\n </s-button>\n }\n\n <div>\n @if (imageSource && allowRemove) {\n <s-button\n [id]=\"id + '-remove-button'\"\n type=\"button\"\n priority=\"secondary\"\n [label]=\"removeLabel\"\n (clicked)=\"onRemoveImage()\"\n >\n </s-button>\n }\n @if (imageSource && allowSelectAnother) {\n <s-button\n [id]=\"id + '-select-another-button'\"\n type=\"button\"\n priority=\"secondary\"\n [label]=\"selectAnotherLabel\"\n (clicked)=\"onChangeImage()\"\n >\n </s-button>\n }\n <s-button\n [id]=\"id + '-crop-button'\"\n type=\"button\"\n [label]=\"cropLabel\"\n (clicked)=\"onCropImage()\"\n >\n </s-button>\n </div>\n </div>\n }\n @if (footerSection) {\n <ng-content select=\"s-footer\"> </ng-content>\n }\n </ng-template>\n </s-dialog>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\n\nimport { ImageCropperComponent } from './image-cropper.component';\nimport { ButtonModule } from '@seniorsistemas/angular-components/button';\nimport { StructureModule } from '@seniorsistemas/angular-components/structure';\nimport { EmptyStateModule } from '@seniorsistemas/angular-components/empty-state';\nimport { DialogComponent } from '@seniorsistemas/angular-components/dialog';\nimport { TemplateDirective, TemplateModule } from '@seniorsistemas/angular-components/template';\n\n@NgModule({\n imports: [CommonModule, ButtonModule, EmptyStateModule, StructureModule, DialogComponent, TemplateModule],\n declarations: [ImageCropperComponent],\n exports: [ImageCropperComponent, StructureModule],\n})\nexport class ImageCropperModule { }\n","import {\n ApplicationRef,\n ComponentFactoryResolver,\n ComponentRef,\n EmbeddedViewRef,\n Injectable,\n Injector,\n} from '@angular/core';\n\nimport { Subject } from 'rxjs';\nimport { delay, takeUntil } from 'rxjs/operators';\n\nimport { ImageCropperComponent } from './image-cropper.component';\nimport { isNullOrUndefined } from '@seniorsistemas/angular-components/utils';\nimport { toObservable } from '@angular/core/rxjs-interop';\n\n@Injectable()\nexport class ImageCropperService {\n public activeCropper?: ActiveCropper;\n\n constructor(\n private readonly _componentFactoryResolver: ComponentFactoryResolver,\n private readonly _appRef: ApplicationRef,\n private readonly _injector: Injector,\n ) { }\n\n public show(config?: ImageCropperConfig): void {\n if (this.activeCropper) this._destroy(this.activeCropper);\n\n const activeCropper: ActiveCropper = {\n componentRef: this._componentFactoryResolver\n .resolveComponentFactory(ImageCropperComponent)\n .create(this._injector),\n ngUnsubscribe: new Subject<void>(),\n };\n\n this.activeCropper = activeCropper;\n\n if (isNullOrUndefined(activeCropper.componentRef)) return;\n\n this._appRef.attachView(activeCropper.componentRef.hostView);\n const domElem = (activeCropper.componentRef.hostView as EmbeddedViewRef<any>).rootNodes[0] as HTMLElement;\n document.body.appendChild(domElem);\n\n this._configureInstance(activeCropper, config);\n activeCropper.componentRef.instance.visible = true;\n\n activeCropper.componentRef.instance.visibleChange\n .pipe(takeUntil(this.activeCropper.ngUnsubscribe!), delay(1000))\n .subscribe((visible) => {\n if (!visible) this._destroy(activeCropper);\n });\n }\n\n private _configureInstance(activeCropper: ActiveCropper, config?: ImageCropperConfig): void {\n const instance: any = activeCropper.componentRef?.instance;\n\n if (config) {\n Object.keys(config).forEach((key) => {\n const value = (config as any)[key];\n if (typeof value !== 'function') instance[key] = value;\n else if (typeof value === 'function') {\n instance[key]\n .pipe(takeUntil(activeCropper.ngUnsubscribe!))\n .subscribe((...param: any[]) => (config as any)[key](...param));\n }\n });\n }\n\n instance.visibleChange\n .pipe(takeUntil(activeCropper.ngUnsubscribe!))\n .subscribe((visible: any) => (instance.visible = visible));\n }\n\n private _destroy(activeCropper: ActiveCropper): void {\n activeCropper.ngUnsubscribe!.next();\n activeCropper.ngUnsubscribe!.complete();\n\n if (isNullOrUndefined(activeCropper.componentRef)) return;\n\n this._appRef.detachView(activeCropper.componentRef.hostView);\n activeCropper.componentRef.destroy();\n }\n}\n\nexport interface ActiveCropper {\n componentRef?: ComponentRef<ImageCropperComponent>;\n ngUnsubscribe?: Subject<void>;\n}\n\nexport interface ImageCropperConfig {\n id?: any;\n header?: string;\n cropLabel?: string;\n selectAnotherLabel?: string;\n removeLabel?: string;\n cancelLabel?: string;\n emptyStateTitle?: string;\n emptyStateActionLabel?: string;\n emptyStateIconClass?: string;\n aspectRatio?: number;\n rounded?: boolean;\n allowSelectAnother?: boolean;\n allowRemove?: boolean;\n allowCancel?: boolean;\n imageSource?: string;\n\n cancel?: () => any;\n changeImage?: () => any;\n removedImage?: () => any;\n croppedImage?: (imageSource: string) => any;\n croppedCanvas?: (imageSource: HTMLCanvasElement) => any;\n}\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-image-cropper.mjs","sources":["../../projects/angular-components/image-cropper/src/lib/image-cropper/image-cropper.component.ts","../../projects/angular-components/image-cropper/src/lib/image-cropper/image-cropper.component.html","../../projects/angular-components/image-cropper/src/lib/image-cropper/image-cropper.module.ts","../../projects/angular-components/image-cropper/src/lib/image-cropper/image-cropper.service.ts","../../projects/angular-components/image-cropper/src/seniorsistemas-angular-components-image-cropper.ts"],"sourcesContent":["import {\n Component,\n ContentChild,\n ElementRef,\n EventEmitter,\n inject,\n Input,\n OnChanges,\n OnInit,\n Output,\n SimpleChanges,\n ViewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport Cropper from 'cropperjs';\nimport { FooterComponent, HeaderComponent } from '@seniorsistemas/angular-components/structure';\nimport { isNullOrUndefined } from '@seniorsistemas/angular-components/utils';\nimport { ActiveDialog } from '@seniorsistemas/angular-components/dialog';\n\n/**\n * @description Componente de recorte de imagem que integra a biblioteca `cropperjs`.\n * Exibe um dialog com uma área interativa para selecionar, recortar e remover imagens,\n * suportando razão de aspecto configurável, formato circular e templates de cabeçalho/rodapé.\n *\n * @example\n * ```html\n * <s-image-cropper\n * [(visible)]=\"dialogAberto\"\n * [imageSource]=\"urlDaImagem\"\n * [aspectRatio]=\"1\"\n * (croppedImage)=\"onCroppedImage($event)\" />\n * ```\n *\n * @category Inputs\n */\n@Component({\n selector: 's-image-cropper',\n templateUrl: './image-cropper.component.html',\n styleUrls: ['./image-cropper.component.scss'],\n encapsulation: ViewEncapsulation.None,\n})\nexport class ImageCropperComponent implements OnInit, OnChanges {\n activeDialog = inject(ActiveDialog, { optional: true });\n public static nextId = 0;\n\n /** @description Identificador único do componente no DOM. Gerado automaticamente se não informado. */\n @Input()\n public id = `s-image-cropper-${ImageCropperComponent.nextId++}`;\n\n /** @description Controla a visibilidade do dialog de corte. @default false */\n @Input()\n public visible = false;\n\n /** @description Título exibido no cabeçalho do dialog. @default 'Recortar imagem' */\n @Input()\n public header = 'Recortar imagem';\n\n /** @description Rótulo do botão de confirmar o corte. @default 'Recortar' */\n @Input()\n public cropLabel = 'Recortar';\n\n /** @description Rótulo do botão de trocar a imagem. @default 'Trocar' */\n @Input()\n public selectAnotherLabel = 'Trocar';\n\n /** @description Rótulo do botão de remover a imagem. @default 'Remover' */\n @Input()\n public removeLabel = 'Remover';\n\n /** @description Rótulo do botão de cancelar. @default 'Cancelar' */\n @Input()\n public cancelLabel = 'Cancelar';\n\n /** @description Título do empty state quando nenhuma imagem foi selecionada. */\n @Input()\n public emptyStateTitle = 'Selecione uma foto, em seguida você poderá ajustá-la';\n\n /** @description Rótulo do botão de ação do empty state. @default 'Escolher imagem' */\n @Input()\n public emptyStateActionLabel = 'Escolher imagem';\n\n /** @description Classe do ícone exibido no empty state. @default 'fa fa-picture-o' */\n @Input()\n public emptyStateIconClass = 'fa fa-picture-o';\n\n /** @description Razão de aspecto para o recorte (ex.: `1` para quadrado, `16/9`). @default NaN (livre) */\n @Input()\n public aspectRatio = NaN;\n\n /** @description Quando `true`, exibe a área de recorte no formato circular. @default false */\n @Input()\n public rounded = false;\n\n /** @description Exibe o botão para trocar a imagem selecionada. @default true */\n @Input()\n public allowSelectAnother = true;\n\n /** @description Exibe o botão para remover a imagem. @default true */\n @Input()\n public allowRemove = true;\n\n /** @description Exibe o botão para cancelar o recorte. @default true */\n @Input()\n public allowCancel = true;\n\n /** @description URL ou base64 da imagem a ser carregada no cropper. */\n @Input()\n public imageSource?: string;\n\n /** @description Emitido quando o valor de `visible` muda, habilitando two-way binding com `[(visible)]`. */\n @Output()\n public visibleChange = new EventEmitter<boolean>();\n\n /** @description Emitido quando o usuário troca a imagem selecionada. */\n @Output()\n public changeImage = new EventEmitter();\n\n /** @description Emitido com a imagem recortada em formato base64 string. */\n @Output()\n public croppedImage = new EventEmitter<string>();\n\n /** @description Emitido com o `HTMLCanvasElement` resultante do recorte. */\n @Output()\n public croppedCanvas = new EventEmitter<HTMLCanvasElement>();\n\n /** @description Emitido quando o usuário confirma a remoção da imagem. */\n @Output()\n public removedImage = new EventEmitter();\n\n /** @description Emitido quando o usuário cancela o recorte. */\n @Output()\n // eslint-disable-next-line @angular-eslint/no-output-native\n public cancel = new EventEmitter();\n\n @ViewChild('image', { static: true })\n public image: ElementRef<HTMLImageElement> | null = null;\n\n @ContentChild(HeaderComponent, { static: true })\n public headerSection: HeaderComponent | null = null;\n\n @ContentChild(FooterComponent, { static: true })\n public footerSection: FooterComponent | null = null;\n\n public cropper: Cropper | null = null;\n\n public ngOnInit() {\n if (this.imageSource) this.initCropper();\n }\n\n public ngOnChanges(changes: SimpleChanges) {\n if (changes['imageSource'] && changes['imageSource'].currentValue) {\n this.initCropper();\n }\n }\n\n private initCropper() {\n if (isNullOrUndefined(this.image)) {\n return;\n }\n if (this.cropper) {\n this.cropper.destroy();\n }\n this.image.nativeElement.src = this.imageSource as string;\n this.cropper = new Cropper(this.image.nativeElement, {\n aspectRatio: this.rounded ? 1 : this.aspectRatio,\n guides: false,\n dragMode: 'move' as Cropper.DragMode,\n minCropBoxHeight: 2,\n minCropBoxWidth: 2,\n toggleDragModeOnDblclick: false,\n });\n }\n\n public getRoundedCanvas(sourceCanvas: HTMLCanvasElement): HTMLCanvasElement | null {\n const canvas = document.createElement('canvas');\n const context = canvas.getContext('2d');\n\n if (isNullOrUndefined(context)) return null;\n\n const width = sourceCanvas.width;\n const height = sourceCanvas.height;\n\n canvas.width = width;\n canvas.height = height;\n\n context.imageSmoothingEnabled = true;\n context.drawImage(sourceCanvas, 0, 0, width, height);\n context.globalCompositeOperation = 'destination-in';\n context.beginPath();\n context.arc(width / 2, height / 2, Math.min(width, height) / 2, 0, 2 * Math.PI, true);\n context.fill();\n\n return canvas;\n }\n\n public onCropImage() {\n if (!this.imageSource) {\n this.croppedImage.emit();\n this.croppedCanvas.emit();\n } else {\n const cropperCanvas = this.cropper?.getCroppedCanvas();\n if (cropperCanvas) {\n const canvas = this.rounded ? this.getRoundedCanvas(cropperCanvas) : cropperCanvas;\n if (canvas) {\n this.croppedCanvas.emit(canvas);\n this.croppedImage.emit(canvas.toDataURL());\n }\n }\n }\n this.visible = false;\n this.visibleChange.emit(false);\n }\n\n public onChangeImage() {\n this.changeImage.emit();\n }\n\n public onRemoveImage() {\n this.imageSource = undefined;\n this.removedImage.emit();\n }\n\n public onCancel() {\n this.visible = false;\n this.visibleChange.emit(false);\n this.cancel.emit();\n }\n\n public onModalVisibleChange(visible: boolean) {\n if (!visible) this.onCancel();\n this.visibleChange.emit(visible);\n }\n}\n\n","<div [id]=\"id\">\n @let roundedClass = rounded ? 's-image-cropper--rounded' : '';\n <s-dialog\n size=\"lg\"\n [contentClassName]=\"'s-image-cropper ' + roundedClass\"\n [header]=\"headerSection ? '' : header\"\n [(visible)]=\"visible\"\n (visibleChange)=\"onModalVisibleChange($event!)\"\n [draggable]=\"false\"\n >\n @if (headerSection) {\n <ng-template sTemplate=\"header\">\n <ng-content select=\"s-header\"></ng-content>\n </ng-template>\n }\n @if (!imageSource) {\n <s-empty-state\n [id]=\"id + '-empty-state'\"\n [title]=\"emptyStateTitle\"\n [iconClass]=\"emptyStateIconClass\"\n [primaryActionLabel]=\"emptyStateActionLabel\"\n (primaryAction)=\"onChangeImage()\"\n >\n </s-empty-state>\n }\n <div\n [attr.data-hidden]=\"!imageSource\"\n class=\"image-container\"\n >\n <img\n [id]=\"id + '-cropper'\"\n #image\n [src]=\"imageSource || ''\"\n alt=\"cropped image\"\n />\n </div>\n <ng-template sTemplate=\"footer\">\n @if (!footerSection) {\n <div class=\"button-container\">\n @if (allowCancel) {\n <s-button\n [id]=\"id + '-cancel-button'\"\n type=\"button\"\n priority=\"link\"\n [label]=\"cancelLabel\"\n (clicked)=\"onCancel()\"\n >\n </s-button>\n }\n\n <div>\n @if (imageSource && allowRemove) {\n <s-button\n [id]=\"id + '-remove-button'\"\n type=\"button\"\n priority=\"secondary\"\n [label]=\"removeLabel\"\n (clicked)=\"onRemoveImage()\"\n >\n </s-button>\n }\n @if (imageSource && allowSelectAnother) {\n <s-button\n [id]=\"id + '-select-another-button'\"\n type=\"button\"\n priority=\"secondary\"\n [label]=\"selectAnotherLabel\"\n (clicked)=\"onChangeImage()\"\n >\n </s-button>\n }\n <s-button\n [id]=\"id + '-crop-button'\"\n type=\"button\"\n [label]=\"cropLabel\"\n (clicked)=\"onCropImage()\"\n >\n </s-button>\n </div>\n </div>\n }\n @if (footerSection) {\n <ng-content select=\"s-footer\"> </ng-content>\n }\n </ng-template>\n </s-dialog>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\n\nimport { ImageCropperComponent } from './image-cropper.component';\nimport { ButtonModule } from '@seniorsistemas/angular-components/button';\nimport { StructureModule } from '@seniorsistemas/angular-components/structure';\nimport { EmptyStateModule } from '@seniorsistemas/angular-components/empty-state';\nimport { DialogComponent } from '@seniorsistemas/angular-components/dialog';\nimport { TemplateDirective, TemplateModule } from '@seniorsistemas/angular-components/template';\n\n@NgModule({\n imports: [CommonModule, ButtonModule, EmptyStateModule, StructureModule, DialogComponent, TemplateModule],\n declarations: [ImageCropperComponent],\n exports: [ImageCropperComponent, StructureModule],\n})\nexport class ImageCropperModule { }\n","import {\n ApplicationRef,\n ComponentFactoryResolver,\n ComponentRef,\n EmbeddedViewRef,\n Injectable,\n Injector,\n} from '@angular/core';\n\nimport { Subject } from 'rxjs';\nimport { delay, takeUntil } from 'rxjs/operators';\n\nimport { ImageCropperComponent } from './image-cropper.component';\nimport { isNullOrUndefined } from '@seniorsistemas/angular-components/utils';\nimport { toObservable } from '@angular/core/rxjs-interop';\n\n@Injectable()\nexport class ImageCropperService {\n public activeCropper?: ActiveCropper;\n\n constructor(\n private readonly _componentFactoryResolver: ComponentFactoryResolver,\n private readonly _appRef: ApplicationRef,\n private readonly _injector: Injector,\n ) { }\n\n public show(config?: ImageCropperConfig): void {\n if (this.activeCropper) this._destroy(this.activeCropper);\n\n const activeCropper: ActiveCropper = {\n componentRef: this._componentFactoryResolver\n .resolveComponentFactory(ImageCropperComponent)\n .create(this._injector),\n ngUnsubscribe: new Subject<void>(),\n };\n\n this.activeCropper = activeCropper;\n\n if (isNullOrUndefined(activeCropper.componentRef)) return;\n\n this._appRef.attachView(activeCropper.componentRef.hostView);\n const domElem = (activeCropper.componentRef.hostView as EmbeddedViewRef<any>).rootNodes[0] as HTMLElement;\n document.body.appendChild(domElem);\n\n this._configureInstance(activeCropper, config);\n activeCropper.componentRef.instance.visible = true;\n\n activeCropper.componentRef.instance.visibleChange\n .pipe(takeUntil(this.activeCropper.ngUnsubscribe!), delay(1000))\n .subscribe((visible) => {\n if (!visible) this._destroy(activeCropper);\n });\n }\n\n private _configureInstance(activeCropper: ActiveCropper, config?: ImageCropperConfig): void {\n const instance: any = activeCropper.componentRef?.instance;\n\n if (config) {\n Object.keys(config).forEach((key) => {\n const value = (config as any)[key];\n if (typeof value !== 'function') instance[key] = value;\n else if (typeof value === 'function') {\n instance[key]\n .pipe(takeUntil(activeCropper.ngUnsubscribe!))\n .subscribe((...param: any[]) => (config as any)[key](...param));\n }\n });\n }\n\n instance.visibleChange\n .pipe(takeUntil(activeCropper.ngUnsubscribe!))\n .subscribe((visible: any) => (instance.visible = visible));\n }\n\n private _destroy(activeCropper: ActiveCropper): void {\n activeCropper.ngUnsubscribe!.next();\n activeCropper.ngUnsubscribe!.complete();\n\n if (isNullOrUndefined(activeCropper.componentRef)) return;\n\n this._appRef.detachView(activeCropper.componentRef.hostView);\n activeCropper.componentRef.destroy();\n }\n}\n\nexport interface ActiveCropper {\n componentRef?: ComponentRef<ImageCropperComponent>;\n ngUnsubscribe?: Subject<void>;\n}\n\nexport interface ImageCropperConfig {\n id?: any;\n header?: string;\n cropLabel?: string;\n selectAnotherLabel?: string;\n removeLabel?: string;\n cancelLabel?: string;\n emptyStateTitle?: string;\n emptyStateActionLabel?: string;\n emptyStateIconClass?: string;\n aspectRatio?: number;\n rounded?: boolean;\n allowSelectAnother?: boolean;\n allowRemove?: boolean;\n allowCancel?: boolean;\n imageSource?: string;\n\n cancel?: () => any;\n changeImage?: () => any;\n removedImage?: () => any;\n croppedImage?: (imageSource: string) => any;\n croppedCanvas?: (imageSource: HTMLCanvasElement) => any;\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAmBA;;;;;;;;;;;;;;;AAeG;MAOU,qBAAqB,CAAA;IAC9B,YAAY,GAAG,MAAM,CAAC,YAAY,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;AACjD,IAAA,OAAO,MAAM,GAAG,CAAC,CAAC;;AAIlB,IAAA,EAAE,GAAG,CAAmB,gBAAA,EAAA,qBAAqB,CAAC,MAAM,EAAE,EAAE,CAAC;;IAIzD,OAAO,GAAG,KAAK,CAAC;;IAIhB,MAAM,GAAG,iBAAiB,CAAC;;IAI3B,SAAS,GAAG,UAAU,CAAC;;IAIvB,kBAAkB,GAAG,QAAQ,CAAC;;IAI9B,WAAW,GAAG,SAAS,CAAC;;IAIxB,WAAW,GAAG,UAAU,CAAC;;IAIzB,eAAe,GAAG,sDAAsD,CAAC;;IAIzE,qBAAqB,GAAG,iBAAiB,CAAC;;IAI1C,mBAAmB,GAAG,iBAAiB,CAAC;;IAIxC,WAAW,GAAG,GAAG,CAAC;;IAIlB,OAAO,GAAG,KAAK,CAAC;;IAIhB,kBAAkB,GAAG,IAAI,CAAC;;IAI1B,WAAW,GAAG,IAAI,CAAC;;IAInB,WAAW,GAAG,IAAI,CAAC;;AAInB,IAAA,WAAW,CAAU;;AAIrB,IAAA,aAAa,GAAG,IAAI,YAAY,EAAW,CAAC;;AAI5C,IAAA,WAAW,GAAG,IAAI,YAAY,EAAE,CAAC;;AAIjC,IAAA,YAAY,GAAG,IAAI,YAAY,EAAU,CAAC;;AAI1C,IAAA,aAAa,GAAG,IAAI,YAAY,EAAqB,CAAC;;AAItD,IAAA,YAAY,GAAG,IAAI,YAAY,EAAE,CAAC;;AAKlC,IAAA,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;IAG5B,KAAK,GAAwC,IAAI,CAAC;IAGlD,aAAa,GAA2B,IAAI,CAAC;IAG7C,aAAa,GAA2B,IAAI,CAAC;IAE7C,OAAO,GAAmB,IAAI,CAAC;IAE/B,QAAQ,GAAA;QACX,IAAI,IAAI,CAAC,WAAW;YAAE,IAAI,CAAC,WAAW,EAAE,CAAC;KAC5C;AAEM,IAAA,WAAW,CAAC,OAAsB,EAAA;AACrC,QAAA,IAAI,OAAO,CAAC,aAAa,CAAC,IAAI,OAAO,CAAC,aAAa,CAAC,CAAC,YAAY,EAAE;YAC/D,IAAI,CAAC,WAAW,EAAE,CAAC;SACtB;KACJ;IAEO,WAAW,GAAA;AACf,QAAA,IAAI,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;YAC/B,OAAO;SACV;AACD,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;AACd,YAAA,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;SAC1B;QACD,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,GAAG,GAAG,IAAI,CAAC,WAAqB,CAAC;QAC1D,IAAI,CAAC,OAAO,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE;AACjD,YAAA,WAAW,EAAE,IAAI,CAAC,OAAO,GAAG,CAAC,GAAG,IAAI,CAAC,WAAW;AAChD,YAAA,MAAM,EAAE,KAAK;AACb,YAAA,QAAQ,EAAE,MAA0B;AACpC,YAAA,gBAAgB,EAAE,CAAC;AACnB,YAAA,eAAe,EAAE,CAAC;AAClB,YAAA,wBAAwB,EAAE,KAAK;AAClC,SAAA,CAAC,CAAC;KACN;AAEM,IAAA,gBAAgB,CAAC,YAA+B,EAAA;QACnD,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QAChD,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QAExC,IAAI,iBAAiB,CAAC,OAAO,CAAC;AAAE,YAAA,OAAO,IAAI,CAAC;AAE5C,QAAA,MAAM,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC;AACjC,QAAA,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC;AAEnC,QAAA,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;AACrB,QAAA,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC;AAEvB,QAAA,OAAO,CAAC,qBAAqB,GAAG,IAAI,CAAC;AACrC,QAAA,OAAO,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;AACrD,QAAA,OAAO,CAAC,wBAAwB,GAAG,gBAAgB,CAAC;QACpD,OAAO,CAAC,SAAS,EAAE,CAAC;AACpB,QAAA,OAAO,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,EAAE,MAAM,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;QACtF,OAAO,CAAC,IAAI,EAAE,CAAC;AAEf,QAAA,OAAO,MAAM,CAAC;KACjB;IAEM,WAAW,GAAA;AACd,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;AACnB,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;AACzB,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;SAC7B;aAAM;YACH,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,EAAE,gBAAgB,EAAE,CAAC;YACvD,IAAI,aAAa,EAAE;AACf,gBAAA,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,GAAG,aAAa,CAAC;gBACnF,IAAI,MAAM,EAAE;AACR,oBAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;oBAChC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC;iBAC9C;aACJ;SACJ;AACD,QAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;AACrB,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAClC;IAEM,aAAa,GAAA;AAChB,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;KAC3B;IAEM,aAAa,GAAA;AAChB,QAAA,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC;AAC7B,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;KAC5B;IAEM,QAAQ,GAAA;AACX,QAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;AACrB,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC/B,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;KACtB;AAEM,IAAA,oBAAoB,CAAC,OAAgB,EAAA;AACxC,QAAA,IAAI,CAAC,OAAO;YAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;AAC9B,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KACpC;wGA9LQ,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAArB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,qBAAqB,EAgGhB,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,EAAA,EAAA,IAAA,EAAA,OAAA,EAAA,SAAA,EAAA,MAAA,EAAA,QAAA,EAAA,SAAA,EAAA,WAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,WAAA,EAAA,aAAA,EAAA,WAAA,EAAA,aAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,qBAAA,EAAA,uBAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,WAAA,EAAA,aAAA,EAAA,OAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,WAAA,EAAA,aAAA,EAAA,WAAA,EAAA,aAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,OAAA,EAAA,EAAA,aAAA,EAAA,eAAA,EAAA,WAAA,EAAA,aAAA,EAAA,YAAA,EAAA,cAAA,EAAA,aAAA,EAAA,eAAA,EAAA,YAAA,EAAA,cAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,eAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,eAAe,EAGf,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,eAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,eAAe,iMC5IjC,6xGAuFA,EAAA,MAAA,EAAA,CAAA,otKAAA,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,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,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,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,kBAAA,EAAA,aAAA,EAAA,qBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FD9Ca,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBANjC,SAAS;+BACI,iBAAiB,EAAA,aAAA,EAGZ,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAAA,6xGAAA,EAAA,MAAA,EAAA,CAAA,otKAAA,CAAA,EAAA,CAAA;8BAQ9B,EAAE,EAAA,CAAA;sBADR,KAAK;gBAKC,OAAO,EAAA,CAAA;sBADb,KAAK;gBAKC,MAAM,EAAA,CAAA;sBADZ,KAAK;gBAKC,SAAS,EAAA,CAAA;sBADf,KAAK;gBAKC,kBAAkB,EAAA,CAAA;sBADxB,KAAK;gBAKC,WAAW,EAAA,CAAA;sBADjB,KAAK;gBAKC,WAAW,EAAA,CAAA;sBADjB,KAAK;gBAKC,eAAe,EAAA,CAAA;sBADrB,KAAK;gBAKC,qBAAqB,EAAA,CAAA;sBAD3B,KAAK;gBAKC,mBAAmB,EAAA,CAAA;sBADzB,KAAK;gBAKC,WAAW,EAAA,CAAA;sBADjB,KAAK;gBAKC,OAAO,EAAA,CAAA;sBADb,KAAK;gBAKC,kBAAkB,EAAA,CAAA;sBADxB,KAAK;gBAKC,WAAW,EAAA,CAAA;sBADjB,KAAK;gBAKC,WAAW,EAAA,CAAA;sBADjB,KAAK;gBAKC,WAAW,EAAA,CAAA;sBADjB,KAAK;gBAKC,aAAa,EAAA,CAAA;sBADnB,MAAM;gBAKA,WAAW,EAAA,CAAA;sBADjB,MAAM;gBAKA,YAAY,EAAA,CAAA;sBADlB,MAAM;gBAKA,aAAa,EAAA,CAAA;sBADnB,MAAM;gBAKA,YAAY,EAAA,CAAA;sBADlB,MAAM;gBAMA,MAAM,EAAA,CAAA;sBAFZ,MAAM;gBAKA,KAAK,EAAA,CAAA;sBADX,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,OAAO,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;gBAI7B,aAAa,EAAA,CAAA;sBADnB,YAAY;AAAC,gBAAA,IAAA,EAAA,CAAA,eAAe,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;gBAIxC,aAAa,EAAA,CAAA;sBADnB,YAAY;AAAC,gBAAA,IAAA,EAAA,CAAA,eAAe,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;;;ME5HtC,kBAAkB,CAAA;wGAAlB,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAlB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,iBAHZ,qBAAqB,CAAA,EAAA,OAAA,EAAA,CAD1B,YAAY,EAAE,YAAY,EAAE,gBAAgB,EAAE,eAAe,EAAE,eAAe,EAAE,cAAc,CAE9F,EAAA,OAAA,EAAA,CAAA,qBAAqB,EAAE,eAAe,CAAA,EAAA,CAAA,CAAA;AAEvC,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,EAJjB,OAAA,EAAA,CAAA,YAAY,EAAE,YAAY,EAAE,gBAAgB,EAAE,eAAe,EAAE,eAAe,EAAE,cAAc,EAEvE,eAAe,CAAA,EAAA,CAAA,CAAA;;4FAEvC,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAL9B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,OAAO,EAAE,CAAC,YAAY,EAAE,YAAY,EAAE,gBAAgB,EAAE,eAAe,EAAE,eAAe,EAAE,cAAc,CAAC;oBACzG,YAAY,EAAE,CAAC,qBAAqB,CAAC;AACrC,oBAAA,OAAO,EAAE,CAAC,qBAAqB,EAAE,eAAe,CAAC;AACpD,iBAAA,CAAA;;;MCEY,mBAAmB,CAAA;AAIP,IAAA,yBAAA,CAAA;AACA,IAAA,OAAA,CAAA;AACA,IAAA,SAAA,CAAA;AALd,IAAA,aAAa,CAAiB;AAErC,IAAA,WAAA,CACqB,yBAAmD,EACnD,OAAuB,EACvB,SAAmB,EAAA;QAFnB,IAAyB,CAAA,yBAAA,GAAzB,yBAAyB,CAA0B;QACnD,IAAO,CAAA,OAAA,GAAP,OAAO,CAAgB;QACvB,IAAS,CAAA,SAAA,GAAT,SAAS,CAAU;KACnC;AAEE,IAAA,IAAI,CAAC,MAA2B,EAAA;QACnC,IAAI,IAAI,CAAC,aAAa;AAAE,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;AAE1D,QAAA,MAAM,aAAa,GAAkB;YACjC,YAAY,EAAE,IAAI,CAAC,yBAAyB;iBACvC,uBAAuB,CAAC,qBAAqB,CAAC;AAC9C,iBAAA,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC;YAC3B,aAAa,EAAE,IAAI,OAAO,EAAQ;SACrC,CAAC;AAEF,QAAA,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;AAEnC,QAAA,IAAI,iBAAiB,CAAC,aAAa,CAAC,YAAY,CAAC;YAAE,OAAO;QAE1D,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;AAC7D,QAAA,MAAM,OAAO,GAAI,aAAa,CAAC,YAAY,CAAC,QAAiC,CAAC,SAAS,CAAC,CAAC,CAAgB,CAAC;AAC1G,QAAA,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;AAEnC,QAAA,IAAI,CAAC,kBAAkB,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;QAC/C,aAAa,CAAC,YAAY,CAAC,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC;AAEnD,QAAA,aAAa,CAAC,YAAY,CAAC,QAAQ,CAAC,aAAa;AAC5C,aAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,aAAc,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;AAC/D,aAAA,SAAS,CAAC,CAAC,OAAO,KAAI;AACnB,YAAA,IAAI,CAAC,OAAO;AAAE,gBAAA,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;AAC/C,SAAC,CAAC,CAAC;KACV;IAEO,kBAAkB,CAAC,aAA4B,EAAE,MAA2B,EAAA;AAChF,QAAA,MAAM,QAAQ,GAAQ,aAAa,CAAC,YAAY,EAAE,QAAQ,CAAC;QAE3D,IAAI,MAAM,EAAE;YACR,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,KAAI;AAChC,gBAAA,MAAM,KAAK,GAAI,MAAc,CAAC,GAAG,CAAC,CAAC;gBACnC,IAAI,OAAO,KAAK,KAAK,UAAU;AAAE,oBAAA,QAAQ,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AAClD,qBAAA,IAAI,OAAO,KAAK,KAAK,UAAU,EAAE;oBAClC,QAAQ,CAAC,GAAG,CAAC;AACR,yBAAA,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,aAAc,CAAC,CAAC;AAC7C,yBAAA,SAAS,CAAC,CAAC,GAAG,KAAY,KAAM,MAAc,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;iBACvE;AACL,aAAC,CAAC,CAAC;SACN;AAED,QAAA,QAAQ,CAAC,aAAa;AACjB,aAAA,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,aAAc,CAAC,CAAC;AAC7C,aAAA,SAAS,CAAC,CAAC,OAAY,MAAM,QAAQ,CAAC,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC;KAClE;AAEO,IAAA,QAAQ,CAAC,aAA4B,EAAA;AACzC,QAAA,aAAa,CAAC,aAAc,CAAC,IAAI,EAAE,CAAC;AACpC,QAAA,aAAa,CAAC,aAAc,CAAC,QAAQ,EAAE,CAAC;AAExC,QAAA,IAAI,iBAAiB,CAAC,aAAa,CAAC,YAAY,CAAC;YAAE,OAAO;QAE1D,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;AAC7D,QAAA,aAAa,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;KACxC;wGAjEQ,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,wBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;4GAAnB,mBAAmB,EAAA,CAAA,CAAA;;4FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAD/B,UAAU;;;AChBX;;AAEG;;;;"}
@@ -2,14 +2,30 @@ import * as i0 from '@angular/core';
2
2
  import { EventEmitter, Directive, Output, HostListener, NgModule } from '@angular/core';
3
3
  import { CommonModule } from '@angular/common';
4
4
 
5
+ /**
6
+ * @description Diretiva de scroll infinito que detecta quando o usuário chega
7
+ * ao final do elemento e emite o evento `scrolled`. Deve ser aplicada a um
8
+ * elemento com overflow e scroll habilitado.
9
+ *
10
+ * @example
11
+ * ```html
12
+ * <div sInfiniteScroll (scrolled)="carregarMais()" style="overflow-y: auto; height: 400px">
13
+ * <!-- itens -->
14
+ * </div>
15
+ * ```
16
+ *
17
+ * @category Data
18
+ */
5
19
  class InfiniteScrollDirective {
6
20
  el;
21
+ /** @description Emitido quando o usuário atinge o final do elemento com scroll. */
7
22
  scrolled = new EventEmitter();
8
23
  constructor(el) {
9
24
  this.el = el;
10
25
  }
11
26
  scroll() {
12
- if (this.el.nativeElement.scrollTop > this.el.nativeElement.scrollHeight - this.el.nativeElement.offsetHeight - 2) {
27
+ if (this.el.nativeElement.scrollTop >
28
+ this.el.nativeElement.scrollHeight - this.el.nativeElement.offsetHeight - 2) {
13
29
  this.scrolled.emit();
14
30
  }
15
31
  }
@@ -1 +1 @@
1
- {"version":3,"file":"seniorsistemas-angular-components-infinite-scroll.mjs","sources":["../../projects/angular-components/infinite-scroll/src/lib/infinite-scroll/infinite-scroll.directive.ts","../../projects/angular-components/infinite-scroll/src/lib/infinite-scroll/infinite-scroll.module.ts","../../projects/angular-components/infinite-scroll/src/seniorsistemas-angular-components-infinite-scroll.ts"],"sourcesContent":["import { ElementRef, EventEmitter, Directive, HostListener, Output } from '@angular/core';\n\n@Directive({\n selector: '[sInfiniteScroll]',\n})\nexport class InfiniteScrollDirective {\n @Output()\n public scrolled = new EventEmitter<number>();\n\n constructor(private readonly el: ElementRef) {}\n\n @HostListener('scroll')\n public scroll() {\n if (this.el.nativeElement.scrollTop > this.el.nativeElement.scrollHeight - this.el.nativeElement.offsetHeight - 2) {\n this.scrolled.emit();\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { InfiniteScrollDirective } from './infinite-scroll.directive';\n\n@NgModule({\n declarations: [InfiniteScrollDirective],\n imports: [CommonModule],\n exports: [InfiniteScrollDirective],\n})\nexport class InfiniteScrollModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;MAKa,uBAAuB,CAAA;AAIH,IAAA,EAAA,CAAA;AAFtB,IAAA,QAAQ,GAAG,IAAI,YAAY,EAAU,CAAC;AAE7C,IAAA,WAAA,CAA6B,EAAc,EAAA;QAAd,IAAE,CAAA,EAAA,GAAF,EAAE,CAAY;KAAI;IAGxC,MAAM,GAAA;QACT,IAAI,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,SAAS,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,YAAY,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,YAAY,GAAG,CAAC,EAAE;AAC/G,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;SACxB;KACJ;wGAXQ,uBAAuB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;4FAAvB,uBAAuB,EAAA,QAAA,EAAA,mBAAA,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAAvB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAHnC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,mBAAmB;AAChC,iBAAA,CAAA;+EAGU,QAAQ,EAAA,CAAA;sBADd,MAAM;gBAMA,MAAM,EAAA,CAAA;sBADZ,YAAY;uBAAC,QAAQ,CAAA;;;MCDb,oBAAoB,CAAA;wGAApB,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAApB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,EAJd,YAAA,EAAA,CAAA,uBAAuB,CAC5B,EAAA,OAAA,EAAA,CAAA,YAAY,aACZ,uBAAuB,CAAA,EAAA,CAAA,CAAA;AAExB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,YAHnB,YAAY,CAAA,EAAA,CAAA,CAAA;;4FAGb,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBALhC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACN,YAAY,EAAE,CAAC,uBAAuB,CAAC;oBACvC,OAAO,EAAE,CAAC,YAAY,CAAC;oBACvB,OAAO,EAAE,CAAC,uBAAuB,CAAC;AACrC,iBAAA,CAAA;;;ACTD;;AAEG;;;;"}
1
+ {"version":3,"file":"seniorsistemas-angular-components-infinite-scroll.mjs","sources":["../../projects/angular-components/infinite-scroll/src/lib/infinite-scroll/infinite-scroll.directive.ts","../../projects/angular-components/infinite-scroll/src/lib/infinite-scroll/infinite-scroll.module.ts","../../projects/angular-components/infinite-scroll/src/seniorsistemas-angular-components-infinite-scroll.ts"],"sourcesContent":["import { ElementRef, EventEmitter, Directive, HostListener, Output } from '@angular/core';\n\n/**\n * @description Diretiva de scroll infinito que detecta quando o usuário chega\n * ao final do elemento e emite o evento `scrolled`. Deve ser aplicada a um\n * elemento com overflow e scroll habilitado.\n *\n * @example\n * ```html\n * <div sInfiniteScroll (scrolled)=\"carregarMais()\" style=\"overflow-y: auto; height: 400px\">\n * <!-- itens -->\n * </div>\n * ```\n *\n * @category Data\n */\n@Directive({\n selector: '[sInfiniteScroll]',\n})\nexport class InfiniteScrollDirective {\n /** @description Emitido quando o usuário atinge o final do elemento com scroll. */\n @Output()\n public scrolled = new EventEmitter<number>();\n\n constructor(private readonly el: ElementRef) {}\n\n @HostListener('scroll')\n public scroll() {\n if (\n this.el.nativeElement.scrollTop >\n this.el.nativeElement.scrollHeight - this.el.nativeElement.offsetHeight - 2\n ) {\n this.scrolled.emit();\n }\n }\n}\n\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { InfiniteScrollDirective } from './infinite-scroll.directive';\n\n@NgModule({\n declarations: [InfiniteScrollDirective],\n imports: [CommonModule],\n exports: [InfiniteScrollDirective],\n})\nexport class InfiniteScrollModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;AAEA;;;;;;;;;;;;;AAaG;MAIU,uBAAuB,CAAA;AAKH,IAAA,EAAA,CAAA;;AAFtB,IAAA,QAAQ,GAAG,IAAI,YAAY,EAAU,CAAC;AAE7C,IAAA,WAAA,CAA6B,EAAc,EAAA;QAAd,IAAE,CAAA,EAAA,GAAF,EAAE,CAAY;KAAI;IAGxC,MAAM,GAAA;AACT,QAAA,IACI,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,SAAS;AAC/B,YAAA,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,YAAY,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,YAAY,GAAG,CAAC,EAC7E;AACE,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;SACxB;KACJ;wGAfQ,uBAAuB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;4FAAvB,uBAAuB,EAAA,QAAA,EAAA,mBAAA,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAAvB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAHnC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,mBAAmB;AAChC,iBAAA,CAAA;+EAIU,QAAQ,EAAA,CAAA;sBADd,MAAM;gBAMA,MAAM,EAAA,CAAA;sBADZ,YAAY;uBAAC,QAAQ,CAAA;;;MChBb,oBAAoB,CAAA;wGAApB,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAApB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,EAJd,YAAA,EAAA,CAAA,uBAAuB,CAC5B,EAAA,OAAA,EAAA,CAAA,YAAY,aACZ,uBAAuB,CAAA,EAAA,CAAA,CAAA;AAExB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,YAHnB,YAAY,CAAA,EAAA,CAAA,CAAA;;4FAGb,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBALhC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACN,YAAY,EAAE,CAAC,uBAAuB,CAAC;oBACvC,OAAO,EAAE,CAAC,YAAY,CAAC;oBACvB,OAAO,EAAE,CAAC,uBAAuB,CAAC;AACrC,iBAAA,CAAA;;;ACTD;;AAEG;;;;"}
@@ -18,12 +18,41 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
18
18
  args: [{ selector: "s-info-sign-component", template: "<span class=\"info-sign\">\n <span *ngTemplateOutlet=\"templateRef\"></span>\n <i\n class=\"info-sign__icon fa fa-info-circle\"\n aria-hidden=\"true\"\n [sTooltip]=\"tooltip\"\n [escape]=\"false\"\n [displayTime]=\"displayTime\"\n mobileBehavior=\"tap\"\n [showDelay]=\"0\"\n [tooltipEvent]=\"focusedInputRef ? 'focus' : 'hover'\"\n [focusedInputRef]=\"focusedInputRef\">\n </i>\n</span>\n", styles: [".info-sign{align-items:baseline;display:inline-flex;justify-content:flex-start}.info-sign .info-sign__icon{padding:0 12px}\n"] }]
19
19
  }] });
20
20
 
21
+ /**
22
+ * @description Diretiva estrutural que exibe um ícone de informação ao lado do elemento hospedeiro.
23
+ * Ao interagir com o ícone, um tooltip com a mensagem configurada é exibido temporariamente.
24
+ * Suporta sincronização de posição com um campo de input referenciado.
25
+ *
26
+ * @example
27
+ * ```html
28
+ * <input *sInfoSign="'Informe seu CPF'; displayTime: 4000" type="text" />
29
+ * ```
30
+ *
31
+ * @category Overlay
32
+ */
21
33
  class InfoSignDirective {
22
34
  templateRef;
23
35
  viewContainer;
36
+ /**
37
+ * @description Mensagem exibida no tooltip do ícone de informação. Campo obrigatório.
38
+ */
24
39
  sInfoSign;
40
+ /**
41
+ * @description Tempo em milissegundos que o tooltip permanece visível após ser exibido.
42
+ *
43
+ * @default 5000
44
+ */
25
45
  displayTime = 5000;
46
+ /**
47
+ * @description Referência a um elemento de input HTML para posicionamento relativo do info sign.
48
+ * Utilizado quando `useFocusedInputRef` é `true`.
49
+ */
26
50
  focusedInputRef = null;
51
+ /**
52
+ * @description Quando `true`, utiliza `focusedInputRef` para calcular o posicionamento do ícone.
53
+ *
54
+ * @default true
55
+ */
27
56
  useFocusedInputRef = true;
28
57
  componentRef = null;
29
58
  constructor(templateRef, viewContainer) {
@@ -67,7 +96,7 @@ class InfoSignDirective {
67
96
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: InfoSignDirective, decorators: [{
68
97
  type: Directive,
69
98
  args: [{
70
- selector: "[sInfoSign]"
99
+ selector: '[sInfoSign]',
71
100
  }]
72
101
  }], ctorParameters: () => [{ type: i0.TemplateRef }, { type: i0.ViewContainerRef }], propDecorators: { sInfoSign: [{
73
102
  type: Input,
@@ -1 +1 @@
1
- {"version":3,"file":"seniorsistemas-angular-components-info-sign.mjs","sources":["../../projects/angular-components/info-sign/src/lib/info-sign/components/info-sign/info-sign.component.ts","../../projects/angular-components/info-sign/src/lib/info-sign/components/info-sign/info-sign.component.html","../../projects/angular-components/info-sign/src/lib/info-sign/info-sign.directive.ts","../../projects/angular-components/info-sign/src/lib/info-sign/info-sign.module.ts","../../projects/angular-components/info-sign/src/seniorsistemas-angular-components-info-sign.ts"],"sourcesContent":["import { Component, TemplateRef } from \"@angular/core\";\n\n@Component({\n selector: \"s-info-sign-component\",\n templateUrl: \"./info-sign.component.html\",\n styleUrls: [\"./info-sign.component.scss\"],\n})\nexport class InfoSignComponent {\n public templateRef: TemplateRef<any> | null = null;\n public tooltip?: string;\n public displayTime?: number;\n public focusedInputRef: HTMLInputElement | null = null;\n}\n","<span class=\"info-sign\">\n <span *ngTemplateOutlet=\"templateRef\"></span>\n <i\n class=\"info-sign__icon fa fa-info-circle\"\n aria-hidden=\"true\"\n [sTooltip]=\"tooltip\"\n [escape]=\"false\"\n [displayTime]=\"displayTime\"\n mobileBehavior=\"tap\"\n [showDelay]=\"0\"\n [tooltipEvent]=\"focusedInputRef ? 'focus' : 'hover'\"\n [focusedInputRef]=\"focusedInputRef\">\n </i>\n</span>\n","import {\n ComponentRef,\n Directive,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n TemplateRef,\n ViewContainerRef\n} from \"@angular/core\";\n\nimport { InfoSignComponent } from \"./components/info-sign/info-sign.component\";\n\n@Directive({\n selector: \"[sInfoSign]\"\n})\nexport class InfoSignDirective implements OnChanges, OnInit, OnDestroy {\n @Input({ required: true })\n public sInfoSign!: string;\n\n @Input('sInfoSignDisplayTime')\n public displayTime: number = 5000;\n\n @Input('sInfoSignFocusedInputRef')\n public focusedInputRef: HTMLInputElement | HTMLElement | undefined | null = null;\n\n @Input('sInfoSignUseFocusedInputRef') public useFocusedInputRef = true;\n\n private componentRef: ComponentRef<InfoSignComponent> | null = null;\n\n constructor(\n private readonly templateRef: TemplateRef<any>,\n private readonly viewContainer: ViewContainerRef,\n ) { }\n\n public ngOnChanges(): void {\n this.createInfoSign();\n }\n\n public ngOnInit(): void {\n this.createInfoSign();\n }\n\n public ngOnDestroy(): void {\n if (this.componentRef) {\n this.componentRef.destroy();\n }\n }\n\n private createInfoSign(): void {\n if (!this.componentRef && this.sInfoSign) {\n this.viewContainer.clear();\n this.componentRef = this.viewContainer.createComponent(InfoSignComponent);\n const _infoSignComponent = this.componentRef.instance as InfoSignComponent;\n _infoSignComponent.templateRef = this.templateRef;\n _infoSignComponent.tooltip = this.sInfoSign;\n _infoSignComponent.displayTime = this.displayTime;\n if (this.useFocusedInputRef && this.focusedInputRef) {\n _infoSignComponent.focusedInputRef = this.focusedInputRef as HTMLInputElement;\n }\n } else if (this.componentRef && this.sInfoSign) {\n this.componentRef.instance.tooltip = this.sInfoSign;\n } else {\n this.viewContainer.clear();\n this.viewContainer.createEmbeddedView(this.templateRef);\n }\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { InfoSignComponent } from './components/info-sign/info-sign.component';\nimport { InfoSignDirective } from './info-sign.directive';\nimport { TooltipModule } from '@seniorsistemas/angular-components/tooltip';\n\n@NgModule({\n imports: [TooltipModule, CommonModule],\n declarations: [InfoSignDirective, InfoSignComponent],\n exports: [InfoSignDirective],\n})\nexport class InfoSignModule {}\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-info-sign.mjs","sources":["../../projects/angular-components/info-sign/src/lib/info-sign/components/info-sign/info-sign.component.ts","../../projects/angular-components/info-sign/src/lib/info-sign/components/info-sign/info-sign.component.html","../../projects/angular-components/info-sign/src/lib/info-sign/info-sign.directive.ts","../../projects/angular-components/info-sign/src/lib/info-sign/info-sign.module.ts","../../projects/angular-components/info-sign/src/seniorsistemas-angular-components-info-sign.ts"],"sourcesContent":["import { Component, TemplateRef } from \"@angular/core\";\n\n@Component({\n selector: \"s-info-sign-component\",\n templateUrl: \"./info-sign.component.html\",\n styleUrls: [\"./info-sign.component.scss\"],\n})\nexport class InfoSignComponent {\n public templateRef: TemplateRef<any> | null = null;\n public tooltip?: string;\n public displayTime?: number;\n public focusedInputRef: HTMLInputElement | null = null;\n}\n","<span class=\"info-sign\">\n <span *ngTemplateOutlet=\"templateRef\"></span>\n <i\n class=\"info-sign__icon fa fa-info-circle\"\n aria-hidden=\"true\"\n [sTooltip]=\"tooltip\"\n [escape]=\"false\"\n [displayTime]=\"displayTime\"\n mobileBehavior=\"tap\"\n [showDelay]=\"0\"\n [tooltipEvent]=\"focusedInputRef ? 'focus' : 'hover'\"\n [focusedInputRef]=\"focusedInputRef\">\n </i>\n</span>\n","import {\n ComponentRef,\n Directive,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n TemplateRef,\n ViewContainerRef,\n} from '@angular/core';\n\nimport { InfoSignComponent } from './components/info-sign/info-sign.component';\n\n/**\n * @description Diretiva estrutural que exibe um ícone de informação ao lado do elemento hospedeiro.\n * Ao interagir com o ícone, um tooltip com a mensagem configurada é exibido temporariamente.\n * Suporta sincronização de posição com um campo de input referenciado.\n *\n * @example\n * ```html\n * <input *sInfoSign=\"'Informe seu CPF'; displayTime: 4000\" type=\"text\" />\n * ```\n *\n * @category Overlay\n */\n@Directive({\n selector: '[sInfoSign]',\n})\nexport class InfoSignDirective implements OnChanges, OnInit, OnDestroy {\n /**\n * @description Mensagem exibida no tooltip do ícone de informação. Campo obrigatório.\n */\n @Input({ required: true })\n public sInfoSign!: string;\n\n /**\n * @description Tempo em milissegundos que o tooltip permanece visível após ser exibido.\n *\n * @default 5000\n */\n @Input('sInfoSignDisplayTime')\n public displayTime: number = 5000;\n\n /**\n * @description Referência a um elemento de input HTML para posicionamento relativo do info sign.\n * Utilizado quando `useFocusedInputRef` é `true`.\n */\n @Input('sInfoSignFocusedInputRef')\n public focusedInputRef: HTMLInputElement | HTMLElement | undefined | null = null;\n\n /**\n * @description Quando `true`, utiliza `focusedInputRef` para calcular o posicionamento do ícone.\n *\n * @default true\n */\n @Input('sInfoSignUseFocusedInputRef') public useFocusedInputRef = true;\n\n private componentRef: ComponentRef<InfoSignComponent> | null = null;\n\n constructor(\n private readonly templateRef: TemplateRef<any>,\n private readonly viewContainer: ViewContainerRef,\n ) {}\n\n public ngOnChanges(): void {\n this.createInfoSign();\n }\n\n public ngOnInit(): void {\n this.createInfoSign();\n }\n\n public ngOnDestroy(): void {\n if (this.componentRef) {\n this.componentRef.destroy();\n }\n }\n\n private createInfoSign(): void {\n if (!this.componentRef && this.sInfoSign) {\n this.viewContainer.clear();\n this.componentRef = this.viewContainer.createComponent(InfoSignComponent);\n const _infoSignComponent = this.componentRef.instance as InfoSignComponent;\n _infoSignComponent.templateRef = this.templateRef;\n _infoSignComponent.tooltip = this.sInfoSign;\n _infoSignComponent.displayTime = this.displayTime;\n if (this.useFocusedInputRef && this.focusedInputRef) {\n _infoSignComponent.focusedInputRef = this.focusedInputRef as HTMLInputElement;\n }\n } else if (this.componentRef && this.sInfoSign) {\n this.componentRef.instance.tooltip = this.sInfoSign;\n } else {\n this.viewContainer.clear();\n this.viewContainer.createEmbeddedView(this.templateRef);\n }\n }\n}\n\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { InfoSignComponent } from './components/info-sign/info-sign.component';\nimport { InfoSignDirective } from './info-sign.directive';\nimport { TooltipModule } from '@seniorsistemas/angular-components/tooltip';\n\n@NgModule({\n imports: [TooltipModule, CommonModule],\n declarations: [InfoSignDirective, InfoSignComponent],\n exports: [InfoSignDirective],\n})\nexport class InfoSignModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}