@updevs/components 1.0.0-alpha.8 → 1.0.0-alpha.81

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 (687) hide show
  1. package/README.md +1 -11
  2. package/assets/styles/_bootstrap-components.scss +18 -1
  3. package/assets/styles/_core.scss +9 -0
  4. package/assets/styles/_debug.scss +49 -0
  5. package/assets/styles/_props.scss +91 -0
  6. package/assets/styles/_seven-columns.scss +73 -0
  7. package/assets/styles/_updevs.scss +16 -0
  8. package/assets/styles/_utilities-marketing.scss +209 -0
  9. package/assets/styles/_utilities.scss +127 -92
  10. package/assets/styles/_variables-dark.scss +8 -6
  11. package/assets/styles/_variables.scss +325 -256
  12. package/assets/styles/helpers/_index.scss +143 -0
  13. package/assets/styles/layout/_core.scss +3 -2
  14. package/assets/styles/layout/_dark.scss +40 -35
  15. package/assets/styles/layout/_footer.scss +1 -1
  16. package/assets/styles/layout/_navbar.scss +31 -19
  17. package/assets/styles/layout/_page.scss +6 -5
  18. package/assets/styles/layout/_root.scss +26 -34
  19. package/assets/styles/marketing/_browser.scss +67 -0
  20. package/assets/styles/marketing/_core.scss +8 -0
  21. package/assets/styles/marketing/_filters.scss +0 -0
  22. package/assets/styles/marketing/_hero.scss +70 -0
  23. package/assets/styles/marketing/_pricing.scss +111 -0
  24. package/assets/styles/marketing/_sections.scss +124 -0
  25. package/assets/styles/marketing/_shape.scss +31 -0
  26. package/assets/styles/mixins/_functions.scss +53 -0
  27. package/assets/styles/mixins/_mixins.scss +9 -9
  28. package/assets/styles/ui/_accordion.scss +165 -11
  29. package/assets/styles/ui/_alerts.scss +80 -38
  30. package/assets/styles/ui/_avatars.scss +36 -9
  31. package/assets/styles/ui/_badges.scss +47 -13
  32. package/assets/styles/ui/_button-group.scss +1 -1
  33. package/assets/styles/ui/_buttons.scss +33 -37
  34. package/assets/styles/ui/_calendars.scss +2 -2
  35. package/assets/styles/ui/_cards.scss +9 -0
  36. package/assets/styles/ui/_carousel.scss +1 -1
  37. package/assets/styles/ui/_charts.scss +1 -1
  38. package/assets/styles/ui/_chat.scss +38 -0
  39. package/assets/styles/ui/_close.scss +54 -1
  40. package/assets/styles/ui/_datagrid.scss +1 -1
  41. package/assets/styles/ui/_dropdowns.scss +3 -0
  42. package/assets/styles/ui/_empty.scss +0 -5
  43. package/assets/styles/ui/_flags.scss +2 -2
  44. package/assets/styles/ui/_forms.scss +33 -7
  45. package/assets/styles/ui/_grid.scss +1 -1
  46. package/assets/styles/ui/_icons.scss +1 -1
  47. package/assets/styles/ui/_images.scss +4 -0
  48. package/assets/styles/ui/_lists.scss +12 -16
  49. package/assets/styles/ui/_loaders.scss +1 -1
  50. package/assets/styles/ui/_markdown.scss +15 -4
  51. package/assets/styles/ui/_modals.scss +2 -2
  52. package/assets/styles/ui/_nav.scss +17 -3
  53. package/assets/styles/ui/_offcanvas.scss +2 -2
  54. package/assets/styles/ui/_pagination.scss +2 -0
  55. package/assets/styles/ui/_payments.scss +1 -1
  56. package/assets/styles/ui/_placeholder.scss +1 -1
  57. package/assets/styles/ui/_progress.scss +1 -1
  58. package/assets/styles/ui/_ribbons.scss +1 -0
  59. package/assets/styles/ui/_segmented.scss +101 -0
  60. package/assets/styles/ui/_signature.scss +15 -0
  61. package/assets/styles/ui/_social.scss +52 -0
  62. package/assets/styles/ui/_status.scss +1 -1
  63. package/assets/styles/ui/_steps.scss +5 -1
  64. package/assets/styles/ui/_switch-icon.scss +1 -1
  65. package/assets/styles/ui/_tables.scss +27 -1
  66. package/assets/styles/ui/_tags.scss +1 -1
  67. package/assets/styles/ui/_timeline.scss +1 -1
  68. package/assets/styles/ui/_toasts.scss +0 -1
  69. package/assets/styles/ui/_tracking.scss +1 -1
  70. package/assets/styles/ui/_type.scss +169 -8
  71. package/assets/styles/ui/forms/_form-check.scss +1 -1
  72. package/assets/styles/ui/forms/_form-colorinput.scss +1 -1
  73. package/assets/styles/ui/forms/_form-custom.scss +1 -1
  74. package/assets/styles/ui/forms/_form-imagecheck.scss +6 -5
  75. package/assets/styles/ui/forms/_form-selectgroup.scss +2 -2
  76. package/assets/styles/ui/typo/_hr.scss +4 -2
  77. package/assets/styles/utils/_colors.scss +72 -11
  78. package/assets/styles/utils/_opacity.scss +1 -1
  79. package/assets/styles/utils/_scroll.scss +0 -2
  80. package/assets/styles/utils/_sizing.scss +1 -1
  81. package/assets/styles/utils/_text.scss +1 -2
  82. package/assets/styles/vendor/_apexcharts.scss +52 -0
  83. package/assets/styles/vendor/_coloris.scss +72 -0
  84. package/assets/styles/vendor/_dropzone.scss +27 -0
  85. package/assets/styles/vendor/_fslightbox.scss +13 -0
  86. package/assets/styles/vendor/_jsvectormap.scss +47 -0
  87. package/assets/styles/vendor/_litepicker.scss +69 -0
  88. package/assets/styles/vendor/_nouislider.scss +49 -0
  89. package/assets/styles/vendor/_plyr.scss +3 -0
  90. package/assets/styles/vendor/_stars-rating.scss +22 -0
  91. package/assets/styles/vendor/_tom-select.scss +81 -0
  92. package/assets/styles/vendor/_turbo.scss +3 -0
  93. package/assets/styles/vendor/_typed.scss +4 -0
  94. package/assets/styles/vendor/_wysiwyg.scss +46 -0
  95. package/badge/badge-config.model.d.ts +14 -0
  96. package/badge/badge.component.d.ts +23 -0
  97. package/badge/badge.config.d.ts +12 -0
  98. package/badge/index.d.ts +1 -0
  99. package/badge/public-api.d.ts +3 -0
  100. package/badge/upd-badge.module.d.ts +8 -0
  101. package/button/button.component.d.ts +51 -33
  102. package/button/upd-button.module.d.ts +3 -1
  103. package/calendar/calendar.component.d.ts +63 -0
  104. package/calendar/index.d.ts +1 -0
  105. package/calendar/models/calendar-date.model.d.ts +10 -0
  106. package/calendar/models/calendar-month.model.d.ts +7 -0
  107. package/calendar/models/calendar-selected.model.d.ts +5 -0
  108. package/calendar/models/calendar-user-event.model.d.ts +4 -0
  109. package/calendar/models/calendar-year.model.d.ts +6 -0
  110. package/calendar/models/date-range.model.d.ts +22 -0
  111. package/calendar/models/enums/calendar-view.enum.d.ts +5 -0
  112. package/calendar/models/public-api.d.ts +7 -0
  113. package/calendar/public-api.d.ts +5 -0
  114. package/calendar/services/calendar-range-strategy.service.d.ts +35 -0
  115. package/calendar/services/calendar-signals.service.d.ts +24 -0
  116. package/calendar/services/public-api.d.ts +1 -0
  117. package/calendar/types/calendar-view.type.d.ts +1 -0
  118. package/calendar/types/public-api.d.ts +1 -0
  119. package/calendar/upd-calendar.module.d.ts +13 -0
  120. package/card/card.component.d.ts +2 -2
  121. package/card/public-api.d.ts +1 -0
  122. package/card/types/public-api.d.ts +5 -0
  123. package/drag-and-drop/drag-and-drop.component.d.ts +26 -0
  124. package/drag-and-drop/index.d.ts +1 -0
  125. package/drag-and-drop/models/drag-and-drop-column.config.d.ts +8 -0
  126. package/drag-and-drop/models/drag-and-drop-column.model.d.ts +10 -0
  127. package/drag-and-drop/models/drag-and-drop-item.d.ts +7 -0
  128. package/drag-and-drop/models/drag-and-drop-item.model.d.ts +13 -0
  129. package/drag-and-drop/models/drag-and-drop.config.d.ts +6 -0
  130. package/drag-and-drop/models/public-api.d.ts +4 -0
  131. package/drag-and-drop/public-api.d.ts +3 -0
  132. package/drag-and-drop/upd-drag-and-drop.module.d.ts +9 -0
  133. package/dropdown/dropdown.component.d.ts +23 -6
  134. package/dropdown/models/dropdown-action-clicked.model.d.ts +6 -0
  135. package/dropdown/models/dropdown-item.d.ts +7 -2
  136. package/dropdown/models/dropdown-item.type.d.ts +1 -1
  137. package/dropdown/models/public-api.d.ts +2 -0
  138. package/dropdown/models/toolbar.type.d.ts +1 -0
  139. package/esm2022/badge/badge-config.model.mjs +14 -0
  140. package/esm2022/badge/badge.component.mjs +48 -0
  141. package/esm2022/badge/badge.config.mjs +2 -0
  142. package/esm2022/badge/index.mjs +2 -0
  143. package/esm2022/badge/public-api.mjs +4 -0
  144. package/esm2022/badge/upd-badge.module.mjs +24 -0
  145. package/esm2022/badge/updevs-components-badge.mjs +5 -0
  146. package/esm2022/button/button.component.mjs +126 -132
  147. package/esm2022/button/index.mjs +1 -1
  148. package/esm2022/button/public-api.mjs +1 -1
  149. package/esm2022/button/upd-button.module.mjs +14 -6
  150. package/esm2022/button/updevs-components-button.mjs +1 -1
  151. package/esm2022/calendar/assets/i18n/en.json +16 -0
  152. package/esm2022/calendar/assets/i18n/pt.json +16 -0
  153. package/esm2022/calendar/calendar.component.mjs +318 -0
  154. package/esm2022/calendar/index.mjs +2 -0
  155. package/esm2022/calendar/models/calendar-date.model.mjs +2 -0
  156. package/esm2022/calendar/models/calendar-month.model.mjs +2 -0
  157. package/esm2022/calendar/models/calendar-selected.model.mjs +2 -0
  158. package/esm2022/calendar/models/calendar-user-event.model.mjs +2 -0
  159. package/esm2022/calendar/models/calendar-year.model.mjs +2 -0
  160. package/esm2022/calendar/models/date-range.model.mjs +18 -0
  161. package/esm2022/calendar/models/enums/calendar-view.enum.mjs +7 -0
  162. package/esm2022/calendar/models/public-api.mjs +8 -0
  163. package/esm2022/calendar/public-api.mjs +6 -0
  164. package/esm2022/calendar/services/calendar-range-strategy.service.mjs +99 -0
  165. package/esm2022/calendar/services/calendar-signals.service.mjs +47 -0
  166. package/esm2022/calendar/services/public-api.mjs +2 -0
  167. package/esm2022/calendar/types/calendar-view.type.mjs +2 -0
  168. package/esm2022/calendar/types/public-api.mjs +2 -0
  169. package/esm2022/calendar/upd-calendar.module.mjs +52 -0
  170. package/esm2022/calendar/updevs-components-calendar.mjs +5 -0
  171. package/esm2022/card/card.component.mjs +4 -4
  172. package/esm2022/card/directives/card-actions.directive.mjs +4 -4
  173. package/esm2022/card/directives/card-footer.directive.mjs +4 -4
  174. package/esm2022/card/directives/card-header.directive.mjs +4 -4
  175. package/esm2022/card/directives/card-image.directive.mjs +4 -4
  176. package/esm2022/card/directives/public-api.mjs +1 -1
  177. package/esm2022/card/index.mjs +1 -1
  178. package/esm2022/card/public-api.mjs +2 -1
  179. package/esm2022/card/types/card-state.type.mjs +1 -1
  180. package/esm2022/card/types/card-style.type.mjs +1 -1
  181. package/esm2022/card/types/hover-effect.type.mjs +1 -1
  182. package/esm2022/card/types/public-api.mjs +6 -0
  183. package/esm2022/card/types/ribbon-style.type.mjs +1 -1
  184. package/esm2022/card/types/status-position.type.mjs +1 -1
  185. package/esm2022/card/upd-card.module.mjs +5 -5
  186. package/esm2022/card/updevs-components-card.mjs +1 -1
  187. package/esm2022/drag-and-drop/drag-and-drop.component.mjs +134 -0
  188. package/esm2022/drag-and-drop/index.mjs +2 -0
  189. package/esm2022/drag-and-drop/models/drag-and-drop-column.config.mjs +2 -0
  190. package/esm2022/drag-and-drop/models/drag-and-drop-column.model.mjs +9 -0
  191. package/esm2022/drag-and-drop/models/drag-and-drop-item.mjs +2 -0
  192. package/esm2022/drag-and-drop/models/drag-and-drop-item.model.mjs +14 -0
  193. package/esm2022/drag-and-drop/models/drag-and-drop.config.mjs +2 -0
  194. package/esm2022/drag-and-drop/models/public-api.mjs +5 -0
  195. package/esm2022/drag-and-drop/public-api.mjs +4 -0
  196. package/esm2022/drag-and-drop/upd-drag-and-drop.module.mjs +28 -0
  197. package/esm2022/drag-and-drop/updevs-components-drag-and-drop.mjs +5 -0
  198. package/esm2022/dropdown/dropdown.component.mjs +79 -21
  199. package/esm2022/dropdown/index.mjs +1 -1
  200. package/esm2022/dropdown/models/dropdown-action-clicked.model.mjs +2 -0
  201. package/esm2022/dropdown/models/dropdown-item.mjs +1 -1
  202. package/esm2022/dropdown/models/dropdown-item.type.mjs +1 -1
  203. package/esm2022/dropdown/models/public-api.mjs +3 -1
  204. package/esm2022/dropdown/models/toolbar.type.mjs +2 -0
  205. package/esm2022/dropdown/public-api.mjs +1 -1
  206. package/esm2022/dropdown/upd-dropdown.module.mjs +5 -5
  207. package/esm2022/dropdown/updevs-components-dropdown.mjs +1 -1
  208. package/esm2022/form/assets/i18n/en.json +17 -0
  209. package/esm2022/form/assets/i18n/pt.json +17 -0
  210. package/esm2022/form/components/dynamic-field/dynamic-field.component.mjs +166 -0
  211. package/esm2022/form/form.component.mjs +180 -0
  212. package/esm2022/form/index.mjs +1 -1
  213. package/esm2022/form/models/attachment-rule.model.mjs +2 -0
  214. package/esm2022/form/models/button-field.model.mjs +2 -0
  215. package/esm2022/form/models/button-group-field.model.mjs +2 -0
  216. package/esm2022/form/models/checkbox-field.model.mjs +2 -0
  217. package/esm2022/form/models/checkbox-group-field.model.mjs +2 -0
  218. package/esm2022/form/models/dynamic-field.model.mjs +2 -0
  219. package/esm2022/form/models/enums/attachment-type.enum.mjs +15 -0
  220. package/esm2022/form/models/enums/dynamic-field.type.mjs +17 -0
  221. package/esm2022/form/models/enums/public-api.mjs +3 -0
  222. package/esm2022/form/models/file-upload-field.model.mjs +2 -0
  223. package/esm2022/form/models/form-config.mjs +2 -0
  224. package/esm2022/form/models/form-row.model.mjs +2 -0
  225. package/esm2022/form/models/form-update-on.type.mjs +2 -0
  226. package/esm2022/form/models/input-field.model.mjs +2 -0
  227. package/esm2022/form/models/masked-input-field.model.mjs +2 -0
  228. package/esm2022/form/models/public-api.mjs +19 -0
  229. package/esm2022/form/models/radio-field.model.mjs +2 -0
  230. package/esm2022/form/models/radio-group-field.model.mjs +2 -0
  231. package/esm2022/form/models/select-field.model.mjs +2 -0
  232. package/esm2022/form/models/single-select-field.model.mjs +2 -0
  233. package/esm2022/form/models/textarea-field.model.mjs +2 -0
  234. package/esm2022/form/models/validator-config.mjs +2 -0
  235. package/esm2022/form/public-api.mjs +4 -2
  236. package/esm2022/form/tools/errors-helper.mjs +54 -0
  237. package/esm2022/form/upd-form.module.mjs +84 -0
  238. package/esm2022/form/updevs-components-form.mjs +1 -1
  239. package/esm2022/form-controls/abstractions/base-control.mjs +46 -0
  240. package/esm2022/form-controls/abstractions/index.mjs +2 -0
  241. package/esm2022/form-controls/abstractions/public-api.mjs +2 -0
  242. package/esm2022/form-controls/abstractions/updevs-components-form-controls-abstractions.mjs +5 -0
  243. package/esm2022/form-controls/checkbox/checkbox.component.mjs +37 -51
  244. package/esm2022/form-controls/checkbox/index.mjs +1 -1
  245. package/esm2022/form-controls/checkbox/public-api.mjs +1 -1
  246. package/esm2022/form-controls/checkbox/upd-checkbox.module.mjs +12 -8
  247. package/esm2022/form-controls/checkbox/updevs-components-form-controls-checkbox.mjs +1 -1
  248. package/esm2022/form-controls/date-picker/date-picker.component.mjs +132 -0
  249. package/esm2022/form-controls/date-picker/index.mjs +2 -0
  250. package/esm2022/form-controls/date-picker/public-api.mjs +3 -0
  251. package/esm2022/form-controls/date-picker/upd-date-picker.module.mjs +40 -0
  252. package/esm2022/form-controls/date-picker/updevs-components-form-controls-date-picker.mjs +5 -0
  253. package/esm2022/form-controls/file-upload/assets/i18n/en.json +15 -0
  254. package/esm2022/form-controls/file-upload/assets/i18n/pt.json +15 -0
  255. package/esm2022/form-controls/file-upload/file-upload-changed.event.mjs +2 -0
  256. package/esm2022/form-controls/file-upload/file-upload.component.mjs +169 -0
  257. package/esm2022/form-controls/file-upload/index.mjs +2 -0
  258. package/esm2022/form-controls/file-upload/public-api.mjs +4 -0
  259. package/esm2022/form-controls/file-upload/upd-file-upload.module.mjs +48 -0
  260. package/esm2022/form-controls/file-upload/updevs-components-form-controls-file-upload.mjs +5 -0
  261. package/esm2022/form-controls/input/directives/input-append.directive.mjs +4 -4
  262. package/esm2022/form-controls/input/directives/input-prepend.directive.mjs +4 -4
  263. package/esm2022/form-controls/input/directives/public-api.mjs +1 -1
  264. package/esm2022/form-controls/input/index.mjs +1 -1
  265. package/esm2022/form-controls/input/input.component.mjs +75 -35
  266. package/esm2022/form-controls/input/public-api.mjs +1 -1
  267. package/esm2022/form-controls/input/types/input.type.mjs +1 -1
  268. package/esm2022/form-controls/input/types/loader-position.type.mjs +1 -1
  269. package/esm2022/form-controls/input/types/public-api.mjs +1 -1
  270. package/esm2022/form-controls/input/upd-input.module.mjs +5 -5
  271. package/esm2022/form-controls/input/updevs-components-form-controls-input.mjs +1 -1
  272. package/esm2022/form-controls/radio/index.mjs +1 -1
  273. package/esm2022/form-controls/radio/public-api.mjs +1 -1
  274. package/esm2022/form-controls/radio/radio.component.mjs +12 -25
  275. package/esm2022/form-controls/radio/upd-radio.module.mjs +14 -6
  276. package/esm2022/form-controls/radio/updevs-components-form-controls-radio.mjs +1 -1
  277. package/esm2022/form-controls/select/components/multiple/select-multiple.component.mjs +38 -14
  278. package/esm2022/form-controls/select/components/single/select.component.mjs +45 -21
  279. package/esm2022/form-controls/select/index.mjs +1 -1
  280. package/esm2022/form-controls/select/models/abstractions/base-select.component.mjs +129 -106
  281. package/esm2022/form-controls/select/models/defaults.mjs +8 -0
  282. package/esm2022/form-controls/select/models/public-api.mjs +2 -1
  283. package/esm2022/form-controls/select/models/select-item.mjs +1 -1
  284. package/esm2022/form-controls/select/public-api.mjs +1 -1
  285. package/esm2022/form-controls/select/upd-select.module.mjs +10 -6
  286. package/esm2022/form-controls/select/updevs-components-form-controls-select.mjs +1 -1
  287. package/esm2022/form-controls/textarea/index.mjs +1 -1
  288. package/esm2022/form-controls/textarea/public-api.mjs +1 -1
  289. package/esm2022/form-controls/textarea/textarea.component.mjs +18 -36
  290. package/esm2022/form-controls/textarea/upd-textarea.module.mjs +5 -5
  291. package/esm2022/form-controls/textarea/updevs-components-form-controls-textarea.mjs +1 -1
  292. package/esm2022/form-controls/time-picker/index.mjs +1 -1
  293. package/esm2022/form-controls/time-picker/public-api.mjs +1 -1
  294. package/esm2022/form-controls/time-picker/time-picker.component.mjs +4 -4
  295. package/esm2022/form-controls/time-picker/time-selector/time-selector.component.mjs +5 -5
  296. package/esm2022/form-controls/time-picker/upd-time-picker.module.mjs +8 -7
  297. package/esm2022/form-controls/time-picker/updevs-components-form-controls-time-picker.mjs +1 -1
  298. package/esm2022/index.mjs +2 -0
  299. package/esm2022/layout/abstractions/base-page.component.mjs +6 -7
  300. package/esm2022/layout/abstractions/base.layout.mjs +31 -0
  301. package/esm2022/layout/abstractions/public-api.mjs +1 -1
  302. package/esm2022/layout/assets/i18n/en.json +24 -2
  303. package/esm2022/layout/assets/i18n/pt.json +24 -2
  304. package/esm2022/layout/index.mjs +1 -1
  305. package/esm2022/layout/layouts/blank-layout/blank-layout.component.mjs +18 -7
  306. package/esm2022/layout/layouts/blank-layout/blank-layout.module.mjs +32 -6
  307. package/esm2022/layout/layouts/public-api.mjs +1 -1
  308. package/esm2022/layout/layouts/vertical-sidebar-layout/vertical-sidebar-layout.component.mjs +8 -22
  309. package/esm2022/layout/layouts/vertical-sidebar-layout/vertical-sidebar-layout.module.mjs +24 -27
  310. package/esm2022/layout/models/login-page-config.model.mjs +20 -0
  311. package/esm2022/layout/models/login-page.config.mjs +2 -0
  312. package/esm2022/layout/models/public-api.mjs +2 -1
  313. package/esm2022/layout/models/security-layout-config.model.mjs +10 -0
  314. package/esm2022/layout/models/security-layout.config.mjs +2 -0
  315. package/esm2022/layout/models/upd-layout-config.model.mjs +11 -17
  316. package/esm2022/layout/models/upd-layout.config.mjs +1 -1
  317. package/esm2022/layout/pages/auth-flow/auth-flow-routing.module.mjs +5 -5
  318. package/esm2022/layout/pages/auth-flow/auth-flow.module.mjs +36 -9
  319. package/esm2022/layout/pages/auth-flow/logged-out/logged-out.component.mjs +4 -4
  320. package/esm2022/layout/pages/auth-flow/login/login.component.mjs +95 -12
  321. package/esm2022/layout/pages/auth-flow/oauth-callback/oauth-callback.component.mjs +4 -4
  322. package/esm2022/layout/pages/auth-flow/public-api.mjs +1 -1
  323. package/esm2022/layout/pages/public-api.mjs +1 -1
  324. package/esm2022/layout/partials/footer/footer.component.mjs +9 -24
  325. package/esm2022/layout/partials/footer/footer.module.mjs +28 -0
  326. package/esm2022/layout/partials/footer/public-api.mjs +2 -2
  327. package/esm2022/layout/partials/header/header-style.type.mjs +1 -1
  328. package/esm2022/layout/partials/header/header.component.mjs +115 -52
  329. package/esm2022/layout/partials/header/header.module.mjs +40 -0
  330. package/esm2022/layout/partials/header/public-api.mjs +2 -1
  331. package/esm2022/layout/partials/page-header/page-header.component.mjs +10 -9
  332. package/esm2022/layout/partials/page-header/public-api.mjs +1 -1
  333. package/esm2022/layout/partials/public-api.mjs +1 -1
  334. package/esm2022/layout/partials/sidebar/public-api.mjs +1 -1
  335. package/esm2022/layout/partials/sidebar/sidebar.component.mjs +177 -86
  336. package/esm2022/layout/public-api.mjs +1 -1
  337. package/esm2022/layout/services/public-api.mjs +1 -1
  338. package/esm2022/layout/services/upd-layout-config.service.mjs +4 -4
  339. package/esm2022/layout/tools/layout.constants.mjs +1 -1
  340. package/esm2022/layout/upd-layout.module.mjs +12 -8
  341. package/esm2022/layout/updevs-components-layout.mjs +1 -1
  342. package/esm2022/lib/index.mjs +1 -1
  343. package/esm2022/lib/models/public-api.mjs +2 -0
  344. package/esm2022/lib/models/row-column-size.mjs +2 -0
  345. package/esm2022/lib/public-api.mjs +3 -1
  346. package/esm2022/lib/tools/column-size.helper.mjs +12 -0
  347. package/esm2022/lib/tools/public-api.mjs +2 -0
  348. package/esm2022/lib/types/component-size.type.mjs +1 -1
  349. package/esm2022/lib/types/horizontal-vertical.type.mjs +2 -0
  350. package/esm2022/lib/types/public-api.mjs +2 -1
  351. package/esm2022/lib/types/validation-status.type.mjs +1 -1
  352. package/esm2022/lib/upd-components.module.mjs +5 -5
  353. package/esm2022/link/index.mjs +1 -1
  354. package/esm2022/link/link.component.mjs +4 -4
  355. package/esm2022/link/public-api.mjs +1 -1
  356. package/esm2022/link/target.type.mjs +1 -1
  357. package/esm2022/link/upd-link.module.mjs +5 -5
  358. package/esm2022/link/updevs-components-link.mjs +1 -1
  359. package/esm2022/list/assets/i18n/en.json +7 -3
  360. package/esm2022/list/assets/i18n/pt.json +7 -3
  361. package/esm2022/list/index.mjs +1 -1
  362. package/esm2022/list/list.component.mjs +9 -29
  363. package/esm2022/list/models/badge-position.type.mjs +1 -1
  364. package/esm2022/list/models/list-item.mjs +1 -1
  365. package/esm2022/list/models/list-item.model.mjs +7 -2
  366. package/esm2022/list/models/public-api.mjs +1 -1
  367. package/esm2022/list/public-api.mjs +1 -1
  368. package/esm2022/list/upd-list.module.mjs +8 -7
  369. package/esm2022/list/updevs-components-list.mjs +1 -1
  370. package/esm2022/modal/assets/i18n/en.json +17 -0
  371. package/esm2022/modal/assets/i18n/pt.json +17 -0
  372. package/esm2022/modal/components/modal-container/modal-container.component.mjs +216 -0
  373. package/esm2022/modal/index.mjs +2 -0
  374. package/esm2022/modal/models/base.modal.mjs +14 -0
  375. package/esm2022/modal/models/modal-config.model.mjs +20 -0
  376. package/esm2022/modal/models/modal-ref.mjs +2 -0
  377. package/esm2022/modal/models/modal.config.mjs +2 -0
  378. package/esm2022/modal/models/public-api.mjs +4 -0
  379. package/esm2022/modal/public-api.mjs +4 -0
  380. package/esm2022/modal/services/modal-alert.service.mjs +99 -0
  381. package/esm2022/modal/services/modal.service.mjs +30 -0
  382. package/esm2022/modal/services/public-api.mjs +3 -0
  383. package/esm2022/modal/types/modal-footer-style.type.mjs +2 -0
  384. package/esm2022/modal/types/modal-size.type.mjs +2 -0
  385. package/esm2022/modal/upd-modal.module.mjs +90 -0
  386. package/esm2022/modal/updevs-components-modal.mjs +5 -0
  387. package/esm2022/paginator/assets/i18n/en.json +15 -0
  388. package/esm2022/paginator/assets/i18n/pt.json +15 -0
  389. package/esm2022/paginator/index.mjs +2 -0
  390. package/esm2022/paginator/paginator.component.mjs +66 -0
  391. package/esm2022/paginator/public-api.mjs +3 -0
  392. package/esm2022/paginator/upd-paginator.module.mjs +47 -0
  393. package/esm2022/paginator/updevs-components-paginator.mjs +5 -0
  394. package/esm2022/popover/index.mjs +1 -1
  395. package/esm2022/popover/popover.component.mjs +6 -6
  396. package/esm2022/popover/popover.directive.mjs +23 -32
  397. package/esm2022/popover/public-api.mjs +1 -1
  398. package/esm2022/popover/upd-popover.module.mjs +5 -5
  399. package/esm2022/popover/updevs-components-popover.mjs +1 -1
  400. package/esm2022/pricing/index.mjs +2 -0
  401. package/esm2022/pricing/models/price-item-feature.model.mjs +2 -0
  402. package/esm2022/pricing/models/price-item-features-group.model.mjs +2 -0
  403. package/esm2022/pricing/models/price-item-tag.model.mjs +2 -0
  404. package/esm2022/pricing/models/price-item.model.mjs +2 -0
  405. package/esm2022/pricing/models/public-api.mjs +5 -0
  406. package/esm2022/pricing/pricing-cards/pricing-cards.component.mjs +27 -0
  407. package/esm2022/pricing/pricing-table/pricing-table.component.mjs +57 -0
  408. package/esm2022/pricing/public-api.mjs +5 -0
  409. package/esm2022/pricing/upd-pricing.module.mjs +49 -0
  410. package/esm2022/pricing/updevs-components-pricing.mjs +5 -0
  411. package/esm2022/public-api.mjs +1 -1
  412. package/esm2022/table/abstractions/base-column.model.mjs +52 -0
  413. package/esm2022/table/abstractions/base.column.mjs +84 -0
  414. package/esm2022/table/abstractions/filters-operands.service.mjs +3 -0
  415. package/esm2022/table/abstractions/public-api.mjs +3 -0
  416. package/esm2022/table/assets/i18n/en.json +74 -0
  417. package/esm2022/table/assets/i18n/pt.json +74 -0
  418. package/esm2022/table/components/columns/boolean-column/boolean-column.component.mjs +26 -0
  419. package/esm2022/table/components/columns/date-time-column/date-time-column.component.mjs +13 -0
  420. package/esm2022/table/components/columns/number-column/number-column.component.mjs +13 -0
  421. package/esm2022/table/components/columns/text-column/text-column.component.mjs +31 -0
  422. package/esm2022/table/components/columns-manager/columns-manager.component.mjs +36 -0
  423. package/esm2022/table/components/filter-row/filter-row.component.mjs +114 -0
  424. package/esm2022/table/components/save-search/save-search.component.mjs +72 -0
  425. package/esm2022/table/components/search-section/search-section.component.mjs +93 -0
  426. package/esm2022/table/directives/public-api.mjs +2 -0
  427. package/esm2022/table/directives/table-column.directive.mjs +52 -0
  428. package/esm2022/table/index.mjs +2 -0
  429. package/esm2022/table/models/columns/boolean-column.model.mjs +22 -0
  430. package/esm2022/table/models/columns/date-time-column.model.mjs +16 -0
  431. package/esm2022/table/models/columns/guid-column.model.mjs +13 -0
  432. package/esm2022/table/models/columns/image-column.model.mjs +11 -0
  433. package/esm2022/table/models/columns/number-column.model.mjs +17 -0
  434. package/esm2022/table/models/columns/public-api.mjs +7 -0
  435. package/esm2022/table/models/columns/text-column.model.mjs +11 -0
  436. package/esm2022/table/models/enums/column-type.enum.mjs +15 -0
  437. package/esm2022/table/models/enums/public-api.mjs +2 -0
  438. package/esm2022/table/models/filter-item.model.mjs +2 -0
  439. package/esm2022/table/models/filter-operand.config.mjs +2 -0
  440. package/esm2022/table/models/operands-lists/boolean-filter-operands-list.model.mjs +25 -0
  441. package/esm2022/table/models/operands-lists/date-filter-operands-list.model.mjs +25 -0
  442. package/esm2022/table/models/operands-lists/date-or-number-operands-list.config.mjs +31 -0
  443. package/esm2022/table/models/operands-lists/filter-operands-list.config.mjs +31 -0
  444. package/esm2022/table/models/operands-lists/guid-filter-operands-list.model.mjs +16 -0
  445. package/esm2022/table/models/operands-lists/number-filter-operands-list.model.mjs +25 -0
  446. package/esm2022/table/models/operands-lists/string-filter-operands-list.model.mjs +45 -0
  447. package/esm2022/table/models/public-api.mjs +5 -0
  448. package/esm2022/table/models/saved-view.model.mjs +2 -0
  449. package/esm2022/table/models/table-config.model.mjs +29 -0
  450. package/esm2022/table/models/table.config.mjs +2 -0
  451. package/esm2022/table/models/upd-table-config.model.mjs +9 -0
  452. package/esm2022/table/models/upd-table.config.mjs +2 -0
  453. package/esm2022/table/public-api.mjs +6 -0
  454. package/esm2022/table/services/default-filters-operands.service.mjs +60 -0
  455. package/esm2022/table/services/storages/saved-views.storage.mjs +56 -0
  456. package/esm2022/table/services/stores/filters-operands.store.mjs +19 -0
  457. package/esm2022/table/services/upd-table-config.service.mjs +18 -0
  458. package/esm2022/table/table.component.mjs +439 -0
  459. package/esm2022/table/tools/filters.tools.mjs +48 -0
  460. package/esm2022/table/tools/table.constants.mjs +15 -0
  461. package/esm2022/table/upd-table.module.mjs +150 -0
  462. package/esm2022/table/updevs-components-table.mjs +5 -0
  463. package/esm2022/updevs-components.mjs +2 -2
  464. package/fesm2022/updevs-components-badge.mjs +89 -0
  465. package/fesm2022/updevs-components-badge.mjs.map +1 -0
  466. package/fesm2022/updevs-components-button.mjs +138 -136
  467. package/fesm2022/updevs-components-button.mjs.map +1 -1
  468. package/fesm2022/updevs-components-calendar.mjs +582 -0
  469. package/fesm2022/updevs-components-calendar.mjs.map +1 -0
  470. package/fesm2022/updevs-components-card.mjs +20 -20
  471. package/fesm2022/updevs-components-card.mjs.map +1 -1
  472. package/fesm2022/updevs-components-drag-and-drop.mjs +185 -0
  473. package/fesm2022/updevs-components-drag-and-drop.mjs.map +1 -0
  474. package/fesm2022/updevs-components-dropdown.mjs +83 -25
  475. package/fesm2022/updevs-components-dropdown.mjs.map +1 -1
  476. package/fesm2022/updevs-components-form-controls-abstractions.mjs +53 -0
  477. package/fesm2022/updevs-components-form-controls-abstractions.mjs.map +1 -0
  478. package/fesm2022/updevs-components-form-controls-checkbox.mjs +47 -57
  479. package/fesm2022/updevs-components-form-controls-checkbox.mjs.map +1 -1
  480. package/fesm2022/updevs-components-form-controls-date-picker.mjs +175 -0
  481. package/fesm2022/updevs-components-form-controls-date-picker.mjs.map +1 -0
  482. package/fesm2022/updevs-components-form-controls-file-upload.mjs +264 -0
  483. package/fesm2022/updevs-components-form-controls-file-upload.mjs.map +1 -0
  484. package/fesm2022/updevs-components-form-controls-input.mjs +84 -44
  485. package/fesm2022/updevs-components-form-controls-input.mjs.map +1 -1
  486. package/fesm2022/updevs-components-form-controls-radio.mjs +25 -30
  487. package/fesm2022/updevs-components-form-controls-radio.mjs.map +1 -1
  488. package/fesm2022/updevs-components-form-controls-select.mjs +219 -139
  489. package/fesm2022/updevs-components-form-controls-select.mjs.map +1 -1
  490. package/fesm2022/updevs-components-form-controls-textarea.mjs +21 -39
  491. package/fesm2022/updevs-components-form-controls-textarea.mjs.map +1 -1
  492. package/fesm2022/updevs-components-form-controls-time-picker.mjs +14 -13
  493. package/fesm2022/updevs-components-form-controls-time-picker.mjs.map +1 -1
  494. package/fesm2022/updevs-components-form.mjs +533 -10
  495. package/fesm2022/updevs-components-form.mjs.map +1 -1
  496. package/fesm2022/updevs-components-layout.mjs +757 -375
  497. package/fesm2022/updevs-components-layout.mjs.map +1 -1
  498. package/fesm2022/updevs-components-link.mjs +8 -8
  499. package/fesm2022/updevs-components-link.mjs.map +1 -1
  500. package/fesm2022/updevs-components-list.mjs +39 -53
  501. package/fesm2022/updevs-components-list.mjs.map +1 -1
  502. package/fesm2022/updevs-components-modal.mjs +504 -0
  503. package/fesm2022/updevs-components-modal.mjs.map +1 -0
  504. package/fesm2022/updevs-components-paginator.mjs +160 -0
  505. package/fesm2022/updevs-components-paginator.mjs.map +1 -0
  506. package/fesm2022/updevs-components-popover.mjs +30 -39
  507. package/fesm2022/updevs-components-popover.mjs.map +1 -1
  508. package/fesm2022/updevs-components-pricing.mjs +130 -0
  509. package/fesm2022/updevs-components-pricing.mjs.map +1 -0
  510. package/fesm2022/updevs-components-table.mjs +1754 -0
  511. package/fesm2022/updevs-components-table.mjs.map +1 -0
  512. package/fesm2022/updevs-components.mjs +17 -5
  513. package/fesm2022/updevs-components.mjs.map +1 -1
  514. package/form/components/dynamic-field/dynamic-field.component.d.ts +63 -0
  515. package/form/form.component.d.ts +64 -0
  516. package/form/models/attachment-rule.model.d.ts +35 -0
  517. package/form/models/button-field.model.d.ts +5 -0
  518. package/form/models/button-group-field.model.d.ts +5 -0
  519. package/form/models/checkbox-field.model.d.ts +4 -0
  520. package/form/models/checkbox-group-field.model.d.ts +6 -0
  521. package/form/models/dynamic-field.model.d.ts +49 -0
  522. package/form/models/enums/attachment-type.enum.d.ts +13 -0
  523. package/form/models/enums/dynamic-field.type.d.ts +15 -0
  524. package/form/models/enums/public-api.d.ts +2 -0
  525. package/form/models/file-upload-field.model.d.ts +16 -0
  526. package/form/models/form-config.d.ts +2 -0
  527. package/form/models/form-row.model.d.ts +10 -0
  528. package/form/models/form-update-on.type.d.ts +1 -0
  529. package/form/models/input-field.model.d.ts +9 -0
  530. package/form/models/masked-input-field.model.d.ts +6 -0
  531. package/form/models/public-api.d.ts +18 -0
  532. package/form/models/radio-field.model.d.ts +4 -0
  533. package/form/models/radio-group-field.model.d.ts +6 -0
  534. package/form/models/select-field.model.d.ts +29 -0
  535. package/form/models/single-select-field.model.d.ts +4 -0
  536. package/form/models/textarea-field.model.d.ts +10 -0
  537. package/form/models/validator-config.d.ts +5 -0
  538. package/form/public-api.d.ts +3 -1
  539. package/form/tools/errors-helper.d.ts +11 -0
  540. package/form/upd-form.module.d.ts +22 -0
  541. package/form-controls/abstractions/base-control.d.ts +29 -0
  542. package/form-controls/abstractions/index.d.ts +2 -0
  543. package/form-controls/abstractions/public-api.d.ts +2 -0
  544. package/form-controls/checkbox/checkbox.component.d.ts +14 -20
  545. package/form-controls/checkbox/upd-checkbox.module.d.ts +2 -1
  546. package/form-controls/date-picker/date-picker.component.d.ts +66 -0
  547. package/form-controls/date-picker/index.d.ts +1 -0
  548. package/form-controls/date-picker/public-api.d.ts +2 -0
  549. package/form-controls/date-picker/upd-date-picker.module.d.ts +12 -0
  550. package/form-controls/file-upload/file-upload-changed.event.d.ts +4 -0
  551. package/form-controls/file-upload/file-upload.component.d.ts +46 -0
  552. package/form-controls/file-upload/index.d.ts +1 -0
  553. package/form-controls/file-upload/public-api.d.ts +3 -0
  554. package/form-controls/file-upload/upd-file-upload.module.d.ts +14 -0
  555. package/form-controls/input/input.component.d.ts +27 -14
  556. package/form-controls/radio/radio.component.d.ts +5 -12
  557. package/form-controls/radio/upd-radio.module.d.ts +3 -1
  558. package/form-controls/select/components/multiple/select-multiple.component.d.ts +13 -2
  559. package/form-controls/select/components/single/select.component.d.ts +12 -4
  560. package/form-controls/select/models/abstractions/base-select.component.d.ts +36 -32
  561. package/form-controls/select/models/defaults.d.ts +8 -0
  562. package/form-controls/select/models/public-api.d.ts +1 -0
  563. package/form-controls/select/upd-select.module.d.ts +3 -2
  564. package/form-controls/textarea/textarea.component.d.ts +11 -15
  565. package/form-controls/time-picker/upd-time-picker.module.d.ts +2 -2
  566. package/index.d.ts +1 -4
  567. package/layout/abstractions/base.layout.d.ts +15 -0
  568. package/layout/layouts/blank-layout/blank-layout.component.d.ts +5 -1
  569. package/layout/layouts/blank-layout/blank-layout.module.d.ts +8 -1
  570. package/layout/layouts/vertical-sidebar-layout/vertical-sidebar-layout.component.d.ts +2 -8
  571. package/layout/layouts/vertical-sidebar-layout/vertical-sidebar-layout.module.d.ts +14 -13
  572. package/layout/models/login-page-config.model.d.ts +46 -0
  573. package/layout/models/login-page.config.d.ts +44 -0
  574. package/layout/models/public-api.d.ts +1 -0
  575. package/layout/models/security-layout-config.model.d.ts +12 -0
  576. package/layout/models/security-layout.config.d.ts +10 -0
  577. package/layout/models/upd-layout-config.model.d.ts +9 -0
  578. package/layout/models/upd-layout.config.d.ts +9 -0
  579. package/layout/pages/auth-flow/auth-flow.module.d.ts +9 -2
  580. package/layout/pages/auth-flow/login/login.component.d.ts +20 -6
  581. package/layout/partials/footer/footer.component.d.ts +4 -13
  582. package/layout/partials/footer/footer.module.d.ts +9 -0
  583. package/layout/partials/footer/public-api.d.ts +1 -1
  584. package/layout/partials/header/header.component.d.ts +41 -21
  585. package/layout/partials/header/header.module.d.ts +12 -0
  586. package/layout/partials/header/public-api.d.ts +1 -0
  587. package/layout/partials/page-header/page-header.component.d.ts +2 -2
  588. package/layout/partials/sidebar/sidebar.component.d.ts +28 -1
  589. package/layout/upd-layout.module.d.ts +2 -1
  590. package/lib/index.d.ts +1 -0
  591. package/lib/models/public-api.d.ts +2 -0
  592. package/lib/models/row-column-size.d.ts +23 -0
  593. package/lib/public-api.d.ts +3 -0
  594. package/lib/tools/column-size.helper.d.ts +6 -0
  595. package/lib/tools/public-api.d.ts +2 -0
  596. package/lib/types/component-size.type.d.ts +1 -0
  597. package/lib/types/horizontal-vertical.type.d.ts +2 -0
  598. package/lib/types/public-api.d.ts +2 -0
  599. package/lib/types/validation-status.type.d.ts +1 -0
  600. package/lib/upd-components.module.d.ts +1 -0
  601. package/list/list.component.d.ts +1 -16
  602. package/list/models/list-item.d.ts +4 -2
  603. package/list/models/list-item.model.d.ts +4 -2
  604. package/list/upd-list.module.d.ts +2 -2
  605. package/modal/components/modal-container/modal-container.component.d.ts +74 -0
  606. package/modal/index.d.ts +1 -0
  607. package/modal/models/base.modal.d.ts +8 -0
  608. package/modal/models/modal-config.model.d.ts +32 -0
  609. package/modal/models/modal-ref.d.ts +6 -0
  610. package/modal/models/modal.config.d.ts +30 -0
  611. package/modal/models/public-api.d.ts +3 -0
  612. package/modal/public-api.d.ts +3 -0
  613. package/modal/services/modal-alert.service.d.ts +22 -0
  614. package/modal/services/modal.service.d.ts +12 -0
  615. package/modal/services/public-api.d.ts +2 -0
  616. package/modal/types/modal-footer-style.type.d.ts +1 -0
  617. package/modal/types/modal-size.type.d.ts +1 -0
  618. package/modal/upd-modal.module.d.ts +18 -0
  619. package/package.json +67 -6
  620. package/paginator/index.d.ts +1 -0
  621. package/paginator/paginator.component.d.ts +42 -0
  622. package/paginator/public-api.d.ts +2 -0
  623. package/paginator/upd-paginator.module.d.ts +14 -0
  624. package/popover/popover.component.d.ts +2 -2
  625. package/pricing/index.d.ts +1 -0
  626. package/pricing/models/price-item-feature.model.d.ts +7 -0
  627. package/pricing/models/price-item-features-group.model.d.ts +5 -0
  628. package/pricing/models/price-item-tag.model.d.ts +6 -0
  629. package/pricing/models/price-item.model.d.ts +22 -0
  630. package/pricing/models/public-api.d.ts +4 -0
  631. package/pricing/pricing-cards/pricing-cards.component.d.ts +12 -0
  632. package/pricing/pricing-table/pricing-table.component.d.ts +30 -0
  633. package/pricing/public-api.d.ts +4 -0
  634. package/pricing/upd-pricing.module.d.ts +14 -0
  635. package/public-api.d.ts +1 -0
  636. package/table/abstractions/base-column.model.d.ts +31 -0
  637. package/table/abstractions/base.column.d.ts +26 -0
  638. package/table/abstractions/filters-operands.service.d.ts +8 -0
  639. package/table/abstractions/public-api.d.ts +2 -0
  640. package/table/components/columns/boolean-column/boolean-column.component.d.ts +9 -0
  641. package/table/components/columns/date-time-column/date-time-column.component.d.ts +7 -0
  642. package/table/components/columns/number-column/number-column.component.d.ts +7 -0
  643. package/table/components/columns/text-column/text-column.component.d.ts +9 -0
  644. package/table/components/columns-manager/columns-manager.component.d.ts +15 -0
  645. package/table/components/filter-row/filter-row.component.d.ts +40 -0
  646. package/table/components/save-search/save-search.component.d.ts +17 -0
  647. package/table/components/search-section/search-section.component.d.ts +36 -0
  648. package/table/directives/public-api.d.ts +1 -0
  649. package/table/directives/table-column.directive.d.ts +14 -0
  650. package/table/index.d.ts +1 -0
  651. package/table/models/columns/boolean-column.model.d.ts +15 -0
  652. package/table/models/columns/date-time-column.model.d.ts +8 -0
  653. package/table/models/columns/guid-column.model.d.ts +4 -0
  654. package/table/models/columns/image-column.model.d.ts +6 -0
  655. package/table/models/columns/number-column.model.d.ts +8 -0
  656. package/table/models/columns/public-api.d.ts +6 -0
  657. package/table/models/columns/text-column.model.d.ts +6 -0
  658. package/table/models/enums/column-type.enum.d.ts +13 -0
  659. package/table/models/enums/public-api.d.ts +1 -0
  660. package/table/models/filter-item.model.d.ts +6 -0
  661. package/table/models/filter-operand.config.d.ts +9 -0
  662. package/table/models/operands-lists/boolean-filter-operands-list.model.d.ts +6 -0
  663. package/table/models/operands-lists/date-filter-operands-list.model.d.ts +6 -0
  664. package/table/models/operands-lists/date-or-number-operands-list.config.d.ts +5 -0
  665. package/table/models/operands-lists/filter-operands-list.config.d.ts +5 -0
  666. package/table/models/operands-lists/guid-filter-operands-list.model.d.ts +6 -0
  667. package/table/models/operands-lists/number-filter-operands-list.model.d.ts +6 -0
  668. package/table/models/operands-lists/string-filter-operands-list.model.d.ts +6 -0
  669. package/table/models/public-api.d.ts +4 -0
  670. package/table/models/saved-view.model.d.ts +11 -0
  671. package/table/models/table-config.model.d.ts +33 -0
  672. package/table/models/table.config.d.ts +31 -0
  673. package/table/models/upd-table-config.model.d.ts +6 -0
  674. package/table/models/upd-table.config.d.ts +6 -0
  675. package/table/public-api.d.ts +5 -0
  676. package/table/services/default-filters-operands.service.d.ts +17 -0
  677. package/table/services/storages/saved-views.storage.d.ts +19 -0
  678. package/table/services/stores/filters-operands.store.d.ts +11 -0
  679. package/table/services/upd-table-config.service.d.ts +12 -0
  680. package/table/table.component.d.ts +81 -0
  681. package/table/tools/filters.tools.d.ts +9 -0
  682. package/table/tools/table.constants.d.ts +15 -0
  683. package/table/upd-table.module.d.ts +40 -0
  684. package/esm2022/form/form.module.mjs +0 -18
  685. package/esm2022/layout/partials/footer/footer-copyright.directive.mjs +0 -13
  686. package/form/form.module.d.ts +0 -7
  687. package/layout/partials/footer/footer-copyright.directive.d.ts +0 -5
@@ -1 +1 @@
1
- {"version":3,"file":"updevs-components-form-controls-checkbox.mjs","sources":["../../../../projects/updevs/components/form-controls/checkbox/src/checkbox.component.ts","../../../../projects/updevs/components/form-controls/checkbox/src/checkbox.component.html","../../../../projects/updevs/components/form-controls/checkbox/src/upd-checkbox.module.ts","../../../../projects/updevs/components/form-controls/checkbox/src/updevs-components-form-controls-checkbox.ts"],"sourcesContent":["import { Component, SimpleChanges, Input, OnInit, OnChanges, ViewEncapsulation, HostBinding, Output, EventEmitter } from '@angular/core';\nimport { ValidationStatusType } from '@updevs/components';\n\n@Component({\n selector: 'upd-checkbox',\n templateUrl: './checkbox.component.html',\n styleUrls: ['./checkbox.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class CheckboxComponent implements OnInit, OnChanges {\n @HostBinding('class') @Input() wrapperClasses = '';\n\n @Input() label?: string;\n @Input() value?: any;\n @Input() customClasses?: string;\n @Input() name?: string;\n @Input() description?: string;\n @Input() isDisabled = false;\n @Input() isReadOnly = false;\n @Input() isChecked = false;\n @Input() isInline = false;\n @Input() isSwitch = false;\n @Input() validationStatus?: ValidationStatusType;\n @Input() invalidStatusText?: string;\n\n @Output() readonly changed = new EventEmitter<boolean>();\n\n classes: string[] = [];\n\n ngOnInit(): void {\n this.updateClasses();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n this.updateClasses();\n }\n\n private updateClasses(): void {\n const lClasses: string[] = ['form-check-input'];\n\n if (!!this.validationStatus) {\n const statusCls = `is-${this.validationStatus}`;\n lClasses.push(statusCls);\n }\n\n this.classes = [...lClasses, ...(this.customClasses || '').split(' ')];\n }\n}\n","<label class=\"form-check\" [class.form-check-inline]=\"isInline\" [class.form-switch]=\"isSwitch\">\n <input type=\"checkbox\" (change)=\"changed.emit(isChecked)\" [disabled]=\"isDisabled\" [ngClass]=\"classes\" [value]=\"value\"\n [attr.name]=\"name\" [attr.readonly]=\"isReadOnly ? '' : undefined\" [(ngModel)]=\"isChecked\">\n @if (!!label) {\n <span class=\"form-check-label\">{{ label }}</span>\n }\n @if (!!description) {\n <span class=\"form-check-description\">{{ description }}</span>\n }\n @if (validationStatus === 'invalid' && !!invalidStatusText) {\n <div class=\"invalid-feedback\">{{ invalidStatusText }}</div>\n }\n</label>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\n\nimport { CheckboxComponent } from './checkbox.component';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule\n ],\n declarations: [\n CheckboxComponent\n ],\n exports: [\n CheckboxComponent\n ]\n})\nexport class UpdCheckboxModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"updevs-components-form-controls-checkbox.mjs","sources":["../../../../libs/components/form-controls/checkbox/src/checkbox.component.ts","../../../../libs/components/form-controls/checkbox/src/checkbox.component.html","../../../../libs/components/form-controls/checkbox/src/upd-checkbox.module.ts","../../../../libs/components/form-controls/checkbox/src/updevs-components-form-controls-checkbox.ts"],"sourcesContent":["import {\n Component,\n Input,\n ViewEncapsulation,\n HostBinding,\n Output,\n EventEmitter,\n ViewChild,\n ElementRef,\n effect,\n input,\n model,\n computed\n} from '@angular/core';\nimport { BaseControl } from '@updevs/components/form-controls/abstractions';\n\n@Component({\n selector: 'upd-checkbox',\n templateUrl: './checkbox.component.html',\n styleUrls: ['./checkbox.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class CheckboxComponent extends BaseControl {\n @HostBinding('class') @Input() wrapperClasses = '';\n @ViewChild('checkboxInput', { read: ElementRef }) checkboxInput?: ElementRef;\n\n @Output() readonly changed = new EventEmitter<boolean>();\n\n value = input<any>();\n customClasses = input<string>();\n isChecked = model<boolean>(false);\n isInline = input<boolean>(false);\n isSwitch = input<boolean>(false);\n isIndeterminate = model<boolean>(false);\n classes = computed(() => {\n const lClasses: string[] = ['form-check-input'];\n\n if (!!this.validationStatus()) {\n const statusCls = `is-${this.validationStatus()}`;\n lClasses.push(statusCls);\n }\n\n return [...lClasses, ...(this.customClasses() || '').split(' ')];\n });\n\n constructor() {\n super();\n\n effect(() => {\n this.isIndeterminate();\n\n if (!!this.checkboxInput) {\n this.checkboxInput.nativeElement.indeterminate = !!this.isIndeterminate();\n }\n });\n }\n\n onSelectChange(event: Event): void {\n this.isIndeterminate.set(false);\n this.changed.emit((event.target as HTMLInputElement).checked);\n }\n}\n","<label class=\"form-check\" [class.form-check-inline]=\"isInline()\" [class.form-switch]=\"isSwitch()\" [ngClass]=\"customClasses()\">\n @if (!!hintText || !!hintTemplate()) {\n <div class=\"row g-2\">\n <div class=\"col-auto\">\n <ng-template [ngTemplateOutlet]=\"contentTpl\"></ng-template>\n </div>\n <div class=\"col-auto align-self-center\">\n <span class=\"form-help\" [updPopover]=\"hintText\" [updPopoverTemplate]=\"hintTemplate()\"\n [updPopoverActAsTooltip]=\"hintAsTooltip()\">\n ?\n </span>\n </div>\n </div>\n } @else {\n <ng-template [ngTemplateOutlet]=\"contentTpl\"></ng-template>\n }\n</label>\n\n<ng-template #contentTpl>\n <input #checkboxInput type=\"checkbox\" [disabled]=\"isDisabled()\" [ngClass]=\"classes()\" [value]=\"value()\" [attr.name]=\"name()\"\n [attr.readonly]=\"isDisabled() ? '' : undefined\" [(ngModel)]=\"isChecked\" (change)=\"onSelectChange($event)\">\n\n @if (!!labelText) {\n <span class=\"form-check-label\">{{ labelText }}</span>\n }\n\n @if (!!descriptionText) {\n <span class=\"form-check-description\">{{ descriptionText }}</span>\n }\n\n @if (validationStatus() === 'invalid' && !!validationStatusTexts) {\n <div class=\"invalid-feedback\">{{ validationStatusTexts }}</div>\n }\n</ng-template>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { UpdPopoverModule } from '@updevs/components/popover';\n\nimport { CheckboxComponent } from './checkbox.component';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n UpdPopoverModule\n ],\n declarations: [\n CheckboxComponent\n ],\n exports: [\n CheckboxComponent\n ]\n})\nexport class UpdCheckboxModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;;AAsBM,MAAO,iBAAkB,SAAQ,WAAW,CAAA;AAuB9C,IAAA,WAAA,GAAA;AACI,QAAA,KAAK,EAAE;QAvBoB,IAAc,CAAA,cAAA,GAAG,EAAE;AAG/B,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,YAAY,EAAW;QAExD,IAAK,CAAA,KAAA,GAAG,KAAK,EAAO;QACpB,IAAa,CAAA,aAAA,GAAG,KAAK,EAAU;AAC/B,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAU,KAAK,CAAC;AACjC,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAU,KAAK,CAAC;AAChC,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAU,KAAK,CAAC;AAChC,QAAA,IAAA,CAAA,eAAe,GAAG,KAAK,CAAU,KAAK,CAAC;AACvC,QAAA,IAAA,CAAA,OAAO,GAAG,QAAQ,CAAC,MAAK;AACpB,YAAA,MAAM,QAAQ,GAAa,CAAC,kBAAkB,CAAC;AAE/C,YAAA,IAAI,CAAC,CAAC,IAAI,CAAC,gBAAgB,EAAE,EAAE;gBAC3B,MAAM,SAAS,GAAG,CAAM,GAAA,EAAA,IAAI,CAAC,gBAAgB,EAAE,EAAE;AACjD,gBAAA,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC;;AAG5B,YAAA,OAAO,CAAC,GAAG,QAAQ,EAAE,GAAG,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,EAAE,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;AACpE,SAAC,CAAC;QAKE,MAAM,CAAC,MAAK;YACR,IAAI,CAAC,eAAe,EAAE;AAEtB,YAAA,IAAI,CAAC,CAAC,IAAI,CAAC,aAAa,EAAE;AACtB,gBAAA,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,aAAa,GAAG,CAAC,CAAC,IAAI,CAAC,eAAe,EAAE;;AAEjF,SAAC,CAAC;;AAGN,IAAA,cAAc,CAAC,KAAY,EAAA;AACvB,QAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC;QAC/B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAE,KAAK,CAAC,MAA2B,CAAC,OAAO,CAAC;;8GArCxD,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAjB,iBAAiB,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,uBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,qBAAA,EAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,eAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,eAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAEU,UAAU,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECxBlD,26CAkCA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,4BAAA,EAAA,QAAA,EAAA,uGAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,iBAAA,EAAA,yBAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,yBAAA,EAAA,wBAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FDZa,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAN7B,SAAS;+BACI,cAAc,EAAA,aAAA,EAGT,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAAA,26CAAA,EAAA;wDAGN,cAAc,EAAA,CAAA;sBAA5C,WAAW;uBAAC,OAAO;;sBAAG;gBAC2B,aAAa,EAAA,CAAA;sBAA9D,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,eAAe,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE;gBAE7B,OAAO,EAAA,CAAA;sBAAzB;;;MENQ,iBAAiB,CAAA;8GAAjB,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;+GAAjB,iBAAiB,EAAA,YAAA,EAAA,CANtB,iBAAiB,CAAA,EAAA,OAAA,EAAA,CALjB,YAAY;YACZ,WAAW;AACX,YAAA,gBAAgB,aAMhB,iBAAiB,CAAA,EAAA,CAAA,CAAA;AAGZ,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,YAXtB,YAAY;YACZ,WAAW;YACX,gBAAgB,CAAA,EAAA,CAAA,CAAA;;2FASX,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAb7B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,OAAO,EAAE;wBACL,YAAY;wBACZ,WAAW;wBACX;AACH,qBAAA;AACD,oBAAA,YAAY,EAAE;wBACV;AACH,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACL;AACH;AACJ,iBAAA;;;ACnBD;;AAEG;;;;"}
@@ -0,0 +1,175 @@
1
+ import * as i0 from '@angular/core';
2
+ import { EventEmitter, inject, NgZone, Renderer2, RendererStyleFlags2, ElementRef, Output, Input, ViewChild, Component, NgModule } from '@angular/core';
3
+ import { BaseComponent, DomEventsService, PositioningService } from '@updevs/sdk/layout';
4
+ import { DateService } from '@updevs/sdk/core';
5
+ import * as i2 from '@updevs/components/calendar';
6
+ import { UpdCalendarModule } from '@updevs/components/calendar';
7
+ import * as i1 from '@updevs/components/button';
8
+ import { UpdButtonModule } from '@updevs/components/button';
9
+ import * as i3 from '@updevs/icons';
10
+ import { UpdIconsModule } from '@updevs/icons';
11
+ import * as i4 from '@updevs/components/form-controls/input';
12
+ import { UpdInputModule } from '@updevs/components/form-controls/input';
13
+ import { CommonModule } from '@angular/common';
14
+
15
+ let datepickerId = 0;
16
+ class DatePickerComponent extends BaseComponent {
17
+ constructor() {
18
+ super(...arguments);
19
+ this.shouldCloseOnOutsideClick = true;
20
+ this.shouldCloseOnSelectionFinished = true;
21
+ /**
22
+ * Whether the user is currently selecting a range of dates.
23
+ */
24
+ this.isRange = false;
25
+ /**
26
+ * Emits the year chosen in multiyear view.
27
+ * This doesn't imply a change on the selected date.
28
+ */
29
+ this.selected = new EventEmitter();
30
+ /**
31
+ * Whether the dropdown is open.
32
+ */
33
+ this.isDropdownOpen = false;
34
+ this.selectedData = {};
35
+ this.id = `upd-datepicker-${datepickerId++}`;
36
+ this.dateService = inject(DateService);
37
+ this.domEventsService = inject(DomEventsService);
38
+ this.positioningService = inject(PositioningService);
39
+ this.ngZone = inject(NgZone);
40
+ this.renderer = inject(Renderer2);
41
+ }
42
+ /**
43
+ * The date to open the calendar to initially
44
+ */
45
+ get startAt() {
46
+ // If an explicit startAt is set we start there, otherwise we start at whatever the currently selected value is.
47
+ return this._startAt || this.selectedData.startDate;
48
+ }
49
+ set startAt(value) {
50
+ this._startAt = this.dateService.getValidOrUndefined(this.dateService.deserialize(value));
51
+ }
52
+ get hasSelectedData() {
53
+ return !!this.selectedData.startDate || !!this.selectedData.endDate || !!this.selectedData.selectedDate;
54
+ }
55
+ get selectedDate() {
56
+ return !!this.selectedData.selectedDate ? this.dateService.format(this.selectedData.selectedDate) : '';
57
+ }
58
+ get startDate() {
59
+ return !!this.selectedData.startDate ? this.dateService.format(this.selectedData.startDate) : '';
60
+ }
61
+ get endDate() {
62
+ return !!this.selectedData.endDate ? this.dateService.format(this.selectedData.endDate) : '';
63
+ }
64
+ clearSelection() {
65
+ this.calendarComponent.clearSelection();
66
+ }
67
+ openDropdown() {
68
+ this.isDropdownOpen = true;
69
+ if (this.shouldCloseOnOutsideClick) {
70
+ const outsideClickSub = this.domEventsService.startOutsideClickListener(() => this.ngZone.run(() => this.isDropdownOpen = false), this.calendarWrapper?.nativeElement, true, this.componentBox?.nativeElement);
71
+ this.addSubscriptions(outsideClickSub);
72
+ }
73
+ this.ngZone.runOutsideAngular(() => this.positioningService
74
+ .computePosition(this.componentBox, this.calendarWrapper, { placement: 'bottom' })
75
+ .subscribe(resp => this.updatePosition(resp)));
76
+ }
77
+ handleUserSelection(selected) {
78
+ if (this.isRange) {
79
+ const currentDate = selected;
80
+ this.selectedData = !!currentDate
81
+ ? { startDate: currentDate.startDate, endDate: currentDate.endDate }
82
+ : { startDate: undefined, endDate: undefined };
83
+ if (!!this.selectedData.startDate && !!this.selectedData.endDate) {
84
+ this.isDropdownOpen = false;
85
+ this.selected.emit(this.selectedData);
86
+ }
87
+ }
88
+ else {
89
+ const selectedDate = selected?.selectedDate;
90
+ this.selectedData = { selectedDate };
91
+ if (this.shouldCloseOnSelectionFinished) {
92
+ this.isDropdownOpen = false;
93
+ this.selected.emit(this.selectedData);
94
+ }
95
+ }
96
+ }
97
+ updateSelectedDate(value) {
98
+ this.selectedData = { selectedDate: this.dateService.getValidOrUndefined(new Date(value)) };
99
+ }
100
+ updatePosition(result) {
101
+ const ddElement = this.calendarWrapper.nativeElement;
102
+ this.renderer.setStyle(ddElement, 'top', `${result.y}px`, RendererStyleFlags2.Important);
103
+ this.renderer.setStyle(ddElement, 'left', 0, RendererStyleFlags2.Important);
104
+ }
105
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: DatePickerComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
106
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.0", type: DatePickerComponent, selector: "upd-date-picker", inputs: { shouldCloseOnOutsideClick: "shouldCloseOnOutsideClick", shouldCloseOnSelectionFinished: "shouldCloseOnSelectionFinished", minDate: "minDate", maxDate: "maxDate", startAt: "startAt", dateFilter: "dateFilter", isRange: "isRange" }, outputs: { selected: "selected" }, viewQueries: [{ propertyName: "componentBox", first: true, predicate: ["componentBox"], descendants: true, read: ElementRef }, { propertyName: "calendarWrapper", first: true, predicate: ["calendarWrapper"], descendants: true, read: ElementRef }, { propertyName: "calendarComponent", first: true, predicate: ["calendar"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"dropdown\">\n <div #componentBox class=\"input-group input-group-flat\">\n <div class=\"form-control\" [class.remove-bottom-radius]=\"isDropdownOpen\" [class.is-range]=\"isRange\">\n @if (isRange) {\n <div class=\"d-flex flex-row align-items-center date-range-container styled\">\n <input type=\"text\" class=\"form-control-plaintext date-range-input\" [value]=\"startDate\" readonly>\n <span class=\"date-range-separator\">-</span>\n <input type=\"text\" class=\"form-control-plaintext date-range-input\" [value]=\"endDate\" readonly>\n </div>\n } @else {\n <upd-input [value]=\"selectedDate\" (valueChange)=\"updateSelectedDate($event)\" customClasses=\"date-input\"\n [isPlainText]=\"true\">\n </upd-input>\n }\n </div>\n <div class=\"input-group-text\" [class.remove-bottom-radius]=\"isDropdownOpen\">\n @if (hasSelectedData) {\n <upd-button [shouldIgnoreBtnClass]=\"true\" (clicked)=\"clearSelection()\" customClasses=\"link-secondary\">\n <upd-icon [model]=\"{tablerIcon:'x'}\"></upd-icon>\n </upd-button>\n }\n <upd-button [shouldIgnoreBtnClass]=\"true\" (clicked)=\"openDropdown()\" customClasses=\"link-secondary ms-2\">\n <upd-icon [model]=\"{tablerIcon:'calendar'}\"></upd-icon>\n </upd-button>\n </div>\n </div>\n <div #calendarWrapper class=\"dropdown-content remove-top-radius\" [style.display]=\"isDropdownOpen ? 'block' : 'none'\">\n <upd-calendar #calendar [id]=\"id\" [minDate]=\"minDate\" [maxDate]=\"maxDate\" [selectedStartDate]=\"startAt\"\n [disabledDatesFilter]=\"dateFilter\" [isRange]=\"isRange\" [shouldRemoveExternalBorder]=\"true\"\n (selected)=\"handleUserSelection($event)\">\n </upd-calendar>\n </div>\n</div>\n", styles: [".dropdown-content{position:absolute!important;background-color:var(--upd-card-bg);z-index:1;border:var(--upd-card-border-width) solid var(--upd-card-border-color)!important;border-radius:var(--upd-card-border-radius)!important;box-shadow:0 1px 1px #0000002e;width:350px!important}.remove-bottom-radius{border-bottom-left-radius:0!important;border-bottom-right-radius:0!important}.remove-top-radius{border-top-left-radius:0!important;border-top-right-radius:0!important}::ng-deep .date-input{padding:0!important;width:80px!important}.is-range{padding:0!important}.date-range-container{padding:.375rem .75rem;min-height:calc(1em + .75rem + 2px)}.date-range-input{flex:1;border:none;background:transparent;padding:0;margin:0;box-shadow:none;outline:none;font-size:.875rem;color:var(--bs-body-color)}.date-range-input:focus{outline:none;box-shadow:none}.date-range-input::placeholder{color:var(--bs-secondary);opacity:.7}.date-range-input:placeholder-shown{color:var(--bs-secondary)}.date-range-separator{padding:0;color:var(--bs-secondary);font-weight:500;flex-shrink:0}.date-range-container.styled .date-range-input{background-color:var(--upd-bg-surface-tertiary);border:1px solid var(--upd-active-bg);border-radius:var(--bs-border-radius-sm, .25rem);padding:.25rem .5rem}.date-range-container.styled .date-range-input:first-child{margin-right:.25rem}.date-range-container.styled .date-range-input:last-child{margin-left:.25rem}.date-range-container.styled .date-range-separator{padding:0 .25rem}\n"], dependencies: [{ kind: "component", type: i1.ButtonComponent, selector: "upd-button", inputs: ["model", "text", "brandColorStyle", "customClasses", "isOutline", "isGhost", "isSquare", "isPill", "isIcon", "isLoading", "isList", "isFloating", "isAction", "isNavigationLink", "isLink", "shouldIgnoreBtnClass", "iconModel", "iconPosition", "isDisabled", "isActive", "badgeConfig", "colorStyle", "size", "title"], outputs: ["clicked"] }, { kind: "component", type: i2.CalendarComponent, selector: "upd-calendar", inputs: ["selectedDate", "selectedStartDate", "selectedEndDate", "minDate", "maxDate", "disabledDatesFilter", "isRange", "shouldRemoveExternalBorder"], outputs: ["selected", "monthChanged"] }, { kind: "component", type: i3.IconComponent, selector: "upd-icon", inputs: ["model", "wrapperClasses", "color", "colorClass", "removeDefaultClasses", "customClasses", "tablerIcon", "tablerIconWeight", "tablerIconType", "tablerIconSize", "heroIcon", "heroIconSize", "heroIconType"] }, { kind: "component", type: i4.InputComponent, selector: "upd-input", inputs: ["type", "mask", "maskConfig", "value", "size", "customClasses", "wrapperClasses", "maxLength", "isPlainText", "isReadOnly", "isLoading", "isRound", "isFlush", "isInputGroupFlat", "isPrependButton", "isAppendButton", "isFloating", "loaderPosition", "prependIconModel", "appendIconModel", "isValidationStatusLight", "layout"], outputs: ["valueChange", "blurred", "keyDown", "keyDownEsc", "keyUpEnter"] }] }); }
107
+ }
108
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: DatePickerComponent, decorators: [{
109
+ type: Component,
110
+ args: [{ selector: 'upd-date-picker', template: "<div class=\"dropdown\">\n <div #componentBox class=\"input-group input-group-flat\">\n <div class=\"form-control\" [class.remove-bottom-radius]=\"isDropdownOpen\" [class.is-range]=\"isRange\">\n @if (isRange) {\n <div class=\"d-flex flex-row align-items-center date-range-container styled\">\n <input type=\"text\" class=\"form-control-plaintext date-range-input\" [value]=\"startDate\" readonly>\n <span class=\"date-range-separator\">-</span>\n <input type=\"text\" class=\"form-control-plaintext date-range-input\" [value]=\"endDate\" readonly>\n </div>\n } @else {\n <upd-input [value]=\"selectedDate\" (valueChange)=\"updateSelectedDate($event)\" customClasses=\"date-input\"\n [isPlainText]=\"true\">\n </upd-input>\n }\n </div>\n <div class=\"input-group-text\" [class.remove-bottom-radius]=\"isDropdownOpen\">\n @if (hasSelectedData) {\n <upd-button [shouldIgnoreBtnClass]=\"true\" (clicked)=\"clearSelection()\" customClasses=\"link-secondary\">\n <upd-icon [model]=\"{tablerIcon:'x'}\"></upd-icon>\n </upd-button>\n }\n <upd-button [shouldIgnoreBtnClass]=\"true\" (clicked)=\"openDropdown()\" customClasses=\"link-secondary ms-2\">\n <upd-icon [model]=\"{tablerIcon:'calendar'}\"></upd-icon>\n </upd-button>\n </div>\n </div>\n <div #calendarWrapper class=\"dropdown-content remove-top-radius\" [style.display]=\"isDropdownOpen ? 'block' : 'none'\">\n <upd-calendar #calendar [id]=\"id\" [minDate]=\"minDate\" [maxDate]=\"maxDate\" [selectedStartDate]=\"startAt\"\n [disabledDatesFilter]=\"dateFilter\" [isRange]=\"isRange\" [shouldRemoveExternalBorder]=\"true\"\n (selected)=\"handleUserSelection($event)\">\n </upd-calendar>\n </div>\n</div>\n", styles: [".dropdown-content{position:absolute!important;background-color:var(--upd-card-bg);z-index:1;border:var(--upd-card-border-width) solid var(--upd-card-border-color)!important;border-radius:var(--upd-card-border-radius)!important;box-shadow:0 1px 1px #0000002e;width:350px!important}.remove-bottom-radius{border-bottom-left-radius:0!important;border-bottom-right-radius:0!important}.remove-top-radius{border-top-left-radius:0!important;border-top-right-radius:0!important}::ng-deep .date-input{padding:0!important;width:80px!important}.is-range{padding:0!important}.date-range-container{padding:.375rem .75rem;min-height:calc(1em + .75rem + 2px)}.date-range-input{flex:1;border:none;background:transparent;padding:0;margin:0;box-shadow:none;outline:none;font-size:.875rem;color:var(--bs-body-color)}.date-range-input:focus{outline:none;box-shadow:none}.date-range-input::placeholder{color:var(--bs-secondary);opacity:.7}.date-range-input:placeholder-shown{color:var(--bs-secondary)}.date-range-separator{padding:0;color:var(--bs-secondary);font-weight:500;flex-shrink:0}.date-range-container.styled .date-range-input{background-color:var(--upd-bg-surface-tertiary);border:1px solid var(--upd-active-bg);border-radius:var(--bs-border-radius-sm, .25rem);padding:.25rem .5rem}.date-range-container.styled .date-range-input:first-child{margin-right:.25rem}.date-range-container.styled .date-range-input:last-child{margin-left:.25rem}.date-range-container.styled .date-range-separator{padding:0 .25rem}\n"] }]
111
+ }], propDecorators: { componentBox: [{
112
+ type: ViewChild,
113
+ args: ['componentBox', { read: ElementRef }]
114
+ }], calendarWrapper: [{
115
+ type: ViewChild,
116
+ args: ['calendarWrapper', { read: ElementRef }]
117
+ }], calendarComponent: [{
118
+ type: ViewChild,
119
+ args: ['calendar']
120
+ }], shouldCloseOnOutsideClick: [{
121
+ type: Input
122
+ }], shouldCloseOnSelectionFinished: [{
123
+ type: Input
124
+ }], minDate: [{
125
+ type: Input
126
+ }], maxDate: [{
127
+ type: Input
128
+ }], startAt: [{
129
+ type: Input
130
+ }], dateFilter: [{
131
+ type: Input
132
+ }], isRange: [{
133
+ type: Input
134
+ }], selected: [{
135
+ type: Output
136
+ }] } });
137
+
138
+ class UpdDatePickerModule {
139
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: UpdDatePickerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
140
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.1.0", ngImport: i0, type: UpdDatePickerModule, declarations: [DatePickerComponent], imports: [CommonModule,
141
+ UpdButtonModule,
142
+ UpdCalendarModule,
143
+ UpdIconsModule,
144
+ UpdInputModule], exports: [DatePickerComponent] }); }
145
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: UpdDatePickerModule, imports: [CommonModule,
146
+ UpdButtonModule,
147
+ UpdCalendarModule,
148
+ UpdIconsModule,
149
+ UpdInputModule] }); }
150
+ }
151
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: UpdDatePickerModule, decorators: [{
152
+ type: NgModule,
153
+ args: [{
154
+ imports: [
155
+ CommonModule,
156
+ UpdButtonModule,
157
+ UpdCalendarModule,
158
+ UpdIconsModule,
159
+ UpdInputModule
160
+ ],
161
+ exports: [
162
+ DatePickerComponent
163
+ ],
164
+ declarations: [
165
+ DatePickerComponent
166
+ ]
167
+ }]
168
+ }] });
169
+
170
+ /**
171
+ * Generated bundle index. Do not edit.
172
+ */
173
+
174
+ export { DatePickerComponent, UpdDatePickerModule };
175
+ //# sourceMappingURL=updevs-components-form-controls-date-picker.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"updevs-components-form-controls-date-picker.mjs","sources":["../../../../libs/components/form-controls/date-picker/src/date-picker.component.ts","../../../../libs/components/form-controls/date-picker/src/date-picker.component.html","../../../../libs/components/form-controls/date-picker/src/upd-date-picker.module.ts","../../../../libs/components/form-controls/date-picker/src/updevs-components-form-controls-date-picker.ts"],"sourcesContent":["import {\n Component,\n ElementRef,\n EventEmitter,\n Input,\n NgZone,\n Output,\n Renderer2,\n RendererStyleFlags2,\n ViewChild,\n inject\n} from '@angular/core';\nimport { BaseComponent, PositioningService, ComputePositionResult, DomEventsService } from '@updevs/sdk/layout';\nimport { DateService } from '@updevs/sdk/core';\nimport { OptionalType } from '@updevs/sdk/types';\nimport { CalendarSelectedModel, CalendarComponent } from '@updevs/components/calendar';\n\nlet datepickerId = 0;\n\n@Component({\n selector: 'upd-date-picker',\n templateUrl: './date-picker.component.html',\n styleUrl: './date-picker.component.scss'\n})\nexport class DatePickerComponent extends BaseComponent {\n @ViewChild('componentBox', { read: ElementRef }) componentBox?: ElementRef;\n @ViewChild('calendarWrapper', { read: ElementRef }) calendarWrapper?: ElementRef;\n @ViewChild('calendar') calendarComponent!: CalendarComponent;\n\n @Input() shouldCloseOnOutsideClick = true;\n @Input() shouldCloseOnSelectionFinished = true;\n /**\n * The minimum selectable date.\n */\n @Input() minDate?: Date;\n /**\n * The maximum selectable date.\n */\n @Input() maxDate?: Date;\n /**\n * The date to open the calendar to initially\n */\n @Input()\n get startAt(): OptionalType<Date> {\n // If an explicit startAt is set we start there, otherwise we start at whatever the currently selected value is.\n return this._startAt || this.selectedData.startDate;\n }\n set startAt(value: OptionalType<Date>) {\n this._startAt = this.dateService.getValidOrUndefined(this.dateService.deserialize(value));\n }\n @Input() dateFilter?: (date: Date) => boolean;\n /**\n * Whether the user is currently selecting a range of dates.\n */\n @Input() isRange = false;\n\n /**\n * Emits the year chosen in multiyear view.\n * This doesn't imply a change on the selected date.\n */\n @Output() readonly selected = new EventEmitter<OptionalType<CalendarSelectedModel>>();\n\n /**\n * Whether the dropdown is open.\n */\n isDropdownOpen = false;\n /**\n * Start of the comparison range.\n */\n comparisonStart?: Date;\n /**\n * End of the comparison range.\n */\n comparisonEnd?: Date;\n selectedData: CalendarSelectedModel = {};\n get hasSelectedData(): boolean {\n return !!this.selectedData.startDate || !!this.selectedData.endDate || !!this.selectedData.selectedDate;\n }\n get selectedDate(): string {\n return !!this.selectedData.selectedDate ? this.dateService.format(this.selectedData.selectedDate) : '';\n }\n get startDate(): string {\n return !!this.selectedData.startDate ? this.dateService.format(this.selectedData.startDate) : '';\n }\n get endDate(): string {\n return !!this.selectedData.endDate ? this.dateService.format(this.selectedData.endDate) : '';\n }\n readonly id = `upd-datepicker-${datepickerId++}`;\n\n private _startAt?: Date;\n private readonly dateService = inject(DateService);\n private readonly domEventsService = inject(DomEventsService);\n private readonly positioningService = inject(PositioningService);\n private readonly ngZone = inject(NgZone);\n private readonly renderer = inject(Renderer2);\n\n clearSelection(): void {\n this.calendarComponent.clearSelection();\n }\n\n openDropdown(): void {\n this.isDropdownOpen = true;\n\n if (this.shouldCloseOnOutsideClick) {\n const outsideClickSub = this.domEventsService.startOutsideClickListener(\n () => this.ngZone.run(() => this.isDropdownOpen = false),\n this.calendarWrapper?.nativeElement,\n true,\n this.componentBox?.nativeElement\n );\n this.addSubscriptions(outsideClickSub);\n }\n\n this.ngZone.runOutsideAngular(() =>\n this.positioningService\n .computePosition(this.componentBox!, this.calendarWrapper!, { placement: 'bottom' })\n .subscribe(resp => this.updatePosition(resp))\n );\n }\n\n handleUserSelection(selected: OptionalType<CalendarSelectedModel>): void {\n if (this.isRange) {\n const currentDate = selected as CalendarSelectedModel;\n this.selectedData = !!currentDate\n ? { startDate: currentDate.startDate, endDate: currentDate.endDate }\n : { startDate: undefined, endDate: undefined };\n\n if (!!this.selectedData.startDate && !!this.selectedData.endDate) {\n this.isDropdownOpen = false;\n this.selected.emit(this.selectedData);\n }\n } else {\n const selectedDate = selected?.selectedDate;\n this.selectedData = { selectedDate };\n\n if (this.shouldCloseOnSelectionFinished) {\n this.isDropdownOpen = false;\n this.selected.emit(this.selectedData);\n }\n }\n }\n\n updateSelectedDate(value: any): void {\n this.selectedData = { selectedDate: this.dateService.getValidOrUndefined(new Date(value)) };\n }\n\n private updatePosition(result: ComputePositionResult): void {\n const ddElement = this.calendarWrapper!.nativeElement;\n\n this.renderer.setStyle(ddElement, 'top', `${result.y}px`, RendererStyleFlags2.Important);\n this.renderer.setStyle(ddElement, 'left', 0, RendererStyleFlags2.Important);\n }\n}\n","<div class=\"dropdown\">\n <div #componentBox class=\"input-group input-group-flat\">\n <div class=\"form-control\" [class.remove-bottom-radius]=\"isDropdownOpen\" [class.is-range]=\"isRange\">\n @if (isRange) {\n <div class=\"d-flex flex-row align-items-center date-range-container styled\">\n <input type=\"text\" class=\"form-control-plaintext date-range-input\" [value]=\"startDate\" readonly>\n <span class=\"date-range-separator\">-</span>\n <input type=\"text\" class=\"form-control-plaintext date-range-input\" [value]=\"endDate\" readonly>\n </div>\n } @else {\n <upd-input [value]=\"selectedDate\" (valueChange)=\"updateSelectedDate($event)\" customClasses=\"date-input\"\n [isPlainText]=\"true\">\n </upd-input>\n }\n </div>\n <div class=\"input-group-text\" [class.remove-bottom-radius]=\"isDropdownOpen\">\n @if (hasSelectedData) {\n <upd-button [shouldIgnoreBtnClass]=\"true\" (clicked)=\"clearSelection()\" customClasses=\"link-secondary\">\n <upd-icon [model]=\"{tablerIcon:'x'}\"></upd-icon>\n </upd-button>\n }\n <upd-button [shouldIgnoreBtnClass]=\"true\" (clicked)=\"openDropdown()\" customClasses=\"link-secondary ms-2\">\n <upd-icon [model]=\"{tablerIcon:'calendar'}\"></upd-icon>\n </upd-button>\n </div>\n </div>\n <div #calendarWrapper class=\"dropdown-content remove-top-radius\" [style.display]=\"isDropdownOpen ? 'block' : 'none'\">\n <upd-calendar #calendar [id]=\"id\" [minDate]=\"minDate\" [maxDate]=\"maxDate\" [selectedStartDate]=\"startAt\"\n [disabledDatesFilter]=\"dateFilter\" [isRange]=\"isRange\" [shouldRemoveExternalBorder]=\"true\"\n (selected)=\"handleUserSelection($event)\">\n </upd-calendar>\n </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { UpdButtonModule } from '@updevs/components/button';\nimport { UpdCalendarModule } from '@updevs/components/calendar';\nimport { UpdInputModule } from '@updevs/components/form-controls/input';\nimport { UpdIconsModule } from '@updevs/icons';\n\nimport { DatePickerComponent } from './date-picker.component';\n\n@NgModule({\n imports: [\n CommonModule,\n UpdButtonModule,\n UpdCalendarModule,\n UpdIconsModule,\n UpdInputModule\n ],\n exports: [\n DatePickerComponent\n ],\n declarations: [\n DatePickerComponent\n ]\n})\nexport class UpdDatePickerModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,264 @@
1
+ import * as i0 from '@angular/core';
2
+ import { EventEmitter, input, signal, computed, inject, Output, HostBinding, Component, NgModule } from '@angular/core';
3
+ import { ColumnSizeHelper } from '@updevs/components';
4
+ import { PlatformService, Tools } from '@updevs/sdk/core';
5
+ import { BaseControl } from '@updevs/components/form-controls/abstractions';
6
+ import * as i1 from '@angular/common';
7
+ import { CommonModule } from '@angular/common';
8
+ import * as i1$1 from '@jsverse/transloco';
9
+ import { TranslocoModule } from '@jsverse/transloco';
10
+ import * as i3 from '@updevs/components/button';
11
+ import { UpdButtonModule } from '@updevs/components/button';
12
+ import * as i4 from '@updevs/icons';
13
+ import { UpdIconsModule } from '@updevs/icons';
14
+ import * as i5 from '@updevs/components/popover';
15
+ import { UpdPopoverModule } from '@updevs/components/popover';
16
+
17
+ class FileUploadComponent extends BaseControl {
18
+ constructor() {
19
+ super(...arguments);
20
+ this.hostWrapperClasses = '';
21
+ this.fileChanged = new EventEmitter();
22
+ this.fileName = input();
23
+ this.title = input();
24
+ this.allowFilesDrop = input(false);
25
+ this.isMultiple = input(false); // TODO: implement
26
+ this.allowedExtensions = input('*');
27
+ this.minFileSize = input();
28
+ this.maxFileSize = input();
29
+ this.layout = input('vertical');
30
+ this.isOver = signal(false);
31
+ this.showValidationStatus = computed(() => !!this.validationStatus() && (this.validationStatus() === 'invalid' || this.showValidStatus()));
32
+ this.validationStatusClass = computed(() => {
33
+ if (this.showValidationStatus()) {
34
+ return `is-${this.validationStatus()}`;
35
+ }
36
+ return '';
37
+ });
38
+ this.validationStatusBorderClass = computed(() => {
39
+ if (this.showValidationStatus()) {
40
+ return this.validationStatus() === 'invalid' ? 'border-danger' : 'border-success';
41
+ }
42
+ return '';
43
+ });
44
+ this.errorsList = computed(() => [...this.validationStatusTexts.concat(this.fileUploadErrors())]);
45
+ this.currentFiles = signal(undefined);
46
+ this.labelSizeClasses = computed(() => {
47
+ if (this.layout() !== 'horizontal') {
48
+ return 'form-label';
49
+ }
50
+ return ColumnSizeHelper.getClasses('col-form-label', ColumnSizeHelper.getSizeClasses(this.labelColSize(), 3));
51
+ });
52
+ this.firstFileName = computed(() => (this.currentFiles()?.length || 0) > 0 ? this.currentFiles()[0].name : this.fileName());
53
+ this.defaultMobileDesc = {
54
+ text: 'UpDevs.FormControls.FileUpload.DropzoneMobileDescription',
55
+ isTranslated: false
56
+ };
57
+ this.defaultDesktopDesc = {
58
+ text: 'UpDevs.FormControls.FileUpload.DropzoneDesktopDescription',
59
+ isTranslated: false
60
+ };
61
+ this.fileUploadErrors = signal([]);
62
+ this.platformService = inject(PlatformService);
63
+ }
64
+ get titleText() {
65
+ return this._textService.getText(this.title(), { isMultiple: this.isMultiple() });
66
+ }
67
+ get dropDescriptionText() {
68
+ return !!this.descriptionText
69
+ ? this.descriptionText
70
+ : this._textService.getText(this.platformService.isMobile ? this.defaultMobileDesc : this.defaultDesktopDesc, { isMultiple: this.isMultiple() });
71
+ }
72
+ get supportsAdvancedUpload() {
73
+ const div = document.createElement('div');
74
+ return (('draggable' in div) || ('ondragstart' in div && 'ondrop' in div)) && 'FormData' in window && 'FileReader' in window;
75
+ }
76
+ onFileChange(event) {
77
+ event.stopPropagation();
78
+ const files = Array.from(event.target.files);
79
+ if (!!files) {
80
+ this.currentFiles.set([...files]);
81
+ const errors = files.map(f => this.getFileErrors(f)).reduce((acc, e) => acc.concat(e), []);
82
+ if (errors.length > 0) {
83
+ this.fileUploadErrors.set([...errors]);
84
+ return;
85
+ }
86
+ if (this.isMultiple()) {
87
+ // TODO: implement
88
+ }
89
+ else {
90
+ const file = files[0];
91
+ const reader = new FileReader();
92
+ reader.onload = (fileReader) => this.fileChanged.emit({ file: file, dataUrl: fileReader.target.result });
93
+ reader.readAsDataURL(file);
94
+ }
95
+ }
96
+ }
97
+ removeFile() {
98
+ this.currentFiles.set([]);
99
+ this.fileChanged.emit(undefined);
100
+ }
101
+ onDrag(event) {
102
+ event.preventDefault();
103
+ event.stopPropagation();
104
+ }
105
+ onDragStart(event) {
106
+ event.preventDefault();
107
+ event.stopPropagation();
108
+ }
109
+ onDragEnd(event) {
110
+ event.preventDefault();
111
+ event.stopPropagation();
112
+ this.isOver.set(false);
113
+ }
114
+ onDragOver(event) {
115
+ event.preventDefault();
116
+ event.stopPropagation();
117
+ this.isOver.set(true);
118
+ }
119
+ onDragEnter(event) {
120
+ event.preventDefault();
121
+ event.stopPropagation();
122
+ this.isOver.set(true);
123
+ }
124
+ onDragLeave(event) {
125
+ event.preventDefault();
126
+ event.stopPropagation();
127
+ this.isOver.set(false);
128
+ }
129
+ onDrop(event) {
130
+ event.preventDefault();
131
+ event.stopPropagation();
132
+ this.isOver.set(false);
133
+ const droppedFiles = event.dataTransfer.files;
134
+ }
135
+ getFileErrors(file) {
136
+ const extension = `.${file.name.split('.').pop() || ''}`;
137
+ const fileSizeInKB = Math.round(file.size / 1024);
138
+ const errors = [];
139
+ if (this.allowedExtensions() !== '*' && !this.allowedExtensions().includes(extension)) {
140
+ errors.push(this._textService.getText({ text: 'UpDevs.FormControls.FileUpload.ExtensionNotAllowed', isTranslated: false }, {
141
+ fileName: file.name,
142
+ extension,
143
+ hasMultipleExt: this.allowedExtensions().includes(','),
144
+ allowedExtensions: this.allowedExtensions()
145
+ }));
146
+ }
147
+ if (!!this.minFileSize() && fileSizeInKB < this.minFileSize()) {
148
+ errors.push(this._textService.getText({ text: 'UpDevs.FormControls.FileUpload.MinSizeNotMet', isTranslated: false }, {
149
+ fileName: file.name,
150
+ fileSize: Tools.Text.formatKilobytes(fileSizeInKB),
151
+ minAllowedSize: Tools.Text.formatKilobytes(this.minFileSize())
152
+ }));
153
+ }
154
+ if (!!this.maxFileSize() && fileSizeInKB > this.maxFileSize()) {
155
+ errors.push(this._textService.getText({ text: 'UpDevs.FormControls.FileUpload.MaxSizeExceeded', isTranslated: false }, {
156
+ fileName: file.name,
157
+ fileSize: Tools.Text.formatKilobytes(fileSizeInKB),
158
+ maxAllowedSize: Tools.Text.formatKilobytes(this.maxFileSize())
159
+ }));
160
+ }
161
+ return errors;
162
+ }
163
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: FileUploadComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
164
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.0", type: FileUploadComponent, selector: "upd-file-upload", inputs: { fileName: { classPropertyName: "fileName", publicName: "fileName", isSignal: true, isRequired: false, transformFunction: null }, title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, allowFilesDrop: { classPropertyName: "allowFilesDrop", publicName: "allowFilesDrop", isSignal: true, isRequired: false, transformFunction: null }, isMultiple: { classPropertyName: "isMultiple", publicName: "isMultiple", isSignal: true, isRequired: false, transformFunction: null }, allowedExtensions: { classPropertyName: "allowedExtensions", publicName: "allowedExtensions", isSignal: true, isRequired: false, transformFunction: null }, minFileSize: { classPropertyName: "minFileSize", publicName: "minFileSize", isSignal: true, isRequired: false, transformFunction: null }, maxFileSize: { classPropertyName: "maxFileSize", publicName: "maxFileSize", isSignal: true, isRequired: false, transformFunction: null }, layout: { classPropertyName: "layout", publicName: "layout", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { fileChanged: "fileChanged" }, host: { properties: { "class": "this.hostWrapperClasses" } }, usesInheritance: true, ngImport: i0, template: "<input class=\"d-none\" [attr.id]=\"name()\" [attr.name]=\"name()\" type=\"file\" [attr.multiple]=\"isMultiple() ? true : undefined\"\n [accept]=\"allowedExtensions()\" (change)=\"onFileChange($event)\" />\n\n<div class=\"row\">\n <ng-container *transloco=\"let t; prefix: 'UpDevs.FormControls.FileUpload'\">\n @if (!!labelText) {\n <div [ngClass]=\"labelSizeClasses()\">\n <label [class.required]=\"isRequired()\">{{ labelText }}</label>\n\n @if (!!hintText || !!this.hintTemplate()) {\n <ng-template [ngTemplateOutlet]=\"hintTpl\"></ng-template>\n }\n </div>\n }\n\n @if (supportsAdvancedUpload && allowFilesDrop()) {\n <div class=\"d-flex flex-column border rounded-2 p-2 w-100 h-100\" [ngClass]=\"validationStatusBorderClass()\"\n [class.bg-muted-lt]=\"!isOver()\" [class.bg-primary-lt]=\"isOver()\" (drag)=\"onDrag($event)\" (dragstart)=\"onDragStart($event)\"\n (dragend)=\"onDragEnd($event)\" (dragover)=\"onDragOver($event)\" (dragenter)=\"onDragEnter($event)\"\n (dragleave)=\"onDragLeave($event)\" (drop)=\"onDrop($event)\">\n @if (!!titleText) {\n <span class=\"fw-bold align-self-center cursor-pointer\" [innerHTML]=\"titleText\"></span>\n }\n\n <label [for]=\"name()\" class=\"text-secondary align-self-center cursor-pointer\" [innerHTML]=\"dropDescriptionText\"></label>\n\n @if (!labelText && (!!hintText || !!this.hintTemplate())) {\n <ng-template [ngTemplateOutlet]=\"hintTpl\"></ng-template>\n }\n </div>\n } @else {\n @if (!labelText && (!!hintText || !!this.hintTemplate())) {\n <div class=\"row g-2\">\n <div class=\"col\">\n <ng-template [ngTemplateOutlet]=\"inputTpl\"></ng-template>\n </div>\n <div class=\"col-auto align-self-center\">\n <ng-template [ngTemplateOutlet]=\"hintTpl\"></ng-template>\n </div>\n </div>\n } @else {\n <ng-template [ngTemplateOutlet]=\"inputTpl\"></ng-template>\n }\n }\n @if (validationStatus() === 'invalid' && errorsList().length > 0) {\n @for (desc of errorsList(); track desc) {\n <div class=\"invalid-feedback\">{{ desc }}</div>\n }\n }\n\n <ng-template #inputTpl>\n <div class=\"input-group col\">\n <label class=\"input-group-text cursor-pointer\" [ngClass]=\"validationStatusBorderClass()\" [for]=\"name()\">\n {{ t('SelectFile', { isMultiple: isMultiple() }) }}\n </label>\n <input type=\"text\" class=\"form-control text-truncate\" [class.border-end-0]=\"!!firstFileName()\"\n [value]=\"firstFileName() || ''\"\n [ngClass]=\"validationStatusClass()\" placeholder=\"{{ t('NoFileSelected', { isMultiple: isMultiple() }) }}\"\n [attr.disabled]=\"isDisabled() || undefined\" readonly>\n\n @if (!!firstFileName()) {\n <div class=\"input-group-text bg-transparent\" [ngClass]=\"validationStatusBorderClass()\">\n <upd-button [shouldIgnoreBtnClass]=\"true\" (clicked)=\"removeFile()\" customClasses=\"link-secondary cursor-pointer\">\n <upd-icon tablerIcon=\"trash\" [tablerIconSize]=\"18\"></upd-icon>\n </upd-button>\n </div>\n }\n </div>\n </ng-template>\n </ng-container>\n</div>\n\n<ng-template #hintTpl>\n <span class=\"form-help ms-2\" [updPopover]=\"hintText\" [updPopoverTemplate]=\"hintTemplate()\" [updPopoverActAsTooltip]=\"hintAsTooltip()\">\n ?\n </span>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1$1.TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }, { kind: "component", type: i3.ButtonComponent, selector: "upd-button", inputs: ["model", "text", "brandColorStyle", "customClasses", "isOutline", "isGhost", "isSquare", "isPill", "isIcon", "isLoading", "isList", "isFloating", "isAction", "isNavigationLink", "isLink", "shouldIgnoreBtnClass", "iconModel", "iconPosition", "isDisabled", "isActive", "badgeConfig", "colorStyle", "size", "title"], outputs: ["clicked"] }, { kind: "component", type: i4.IconComponent, selector: "upd-icon", inputs: ["model", "wrapperClasses", "color", "colorClass", "removeDefaultClasses", "customClasses", "tablerIcon", "tablerIconWeight", "tablerIconType", "tablerIconSize", "heroIcon", "heroIconSize", "heroIconType"] }, { kind: "directive", type: i5.PopoverDirective, selector: "[updPopover]", inputs: ["updPopover", "updPopoverTitle", "updPopoverTitleTemplate", "updPopoverTemplate", "updPopoverPlacement", "updPopoverCustomClasses", "updPopoverActAsTooltip"] }] }); }
165
+ }
166
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: FileUploadComponent, decorators: [{
167
+ type: Component,
168
+ args: [{ selector: 'upd-file-upload', template: "<input class=\"d-none\" [attr.id]=\"name()\" [attr.name]=\"name()\" type=\"file\" [attr.multiple]=\"isMultiple() ? true : undefined\"\n [accept]=\"allowedExtensions()\" (change)=\"onFileChange($event)\" />\n\n<div class=\"row\">\n <ng-container *transloco=\"let t; prefix: 'UpDevs.FormControls.FileUpload'\">\n @if (!!labelText) {\n <div [ngClass]=\"labelSizeClasses()\">\n <label [class.required]=\"isRequired()\">{{ labelText }}</label>\n\n @if (!!hintText || !!this.hintTemplate()) {\n <ng-template [ngTemplateOutlet]=\"hintTpl\"></ng-template>\n }\n </div>\n }\n\n @if (supportsAdvancedUpload && allowFilesDrop()) {\n <div class=\"d-flex flex-column border rounded-2 p-2 w-100 h-100\" [ngClass]=\"validationStatusBorderClass()\"\n [class.bg-muted-lt]=\"!isOver()\" [class.bg-primary-lt]=\"isOver()\" (drag)=\"onDrag($event)\" (dragstart)=\"onDragStart($event)\"\n (dragend)=\"onDragEnd($event)\" (dragover)=\"onDragOver($event)\" (dragenter)=\"onDragEnter($event)\"\n (dragleave)=\"onDragLeave($event)\" (drop)=\"onDrop($event)\">\n @if (!!titleText) {\n <span class=\"fw-bold align-self-center cursor-pointer\" [innerHTML]=\"titleText\"></span>\n }\n\n <label [for]=\"name()\" class=\"text-secondary align-self-center cursor-pointer\" [innerHTML]=\"dropDescriptionText\"></label>\n\n @if (!labelText && (!!hintText || !!this.hintTemplate())) {\n <ng-template [ngTemplateOutlet]=\"hintTpl\"></ng-template>\n }\n </div>\n } @else {\n @if (!labelText && (!!hintText || !!this.hintTemplate())) {\n <div class=\"row g-2\">\n <div class=\"col\">\n <ng-template [ngTemplateOutlet]=\"inputTpl\"></ng-template>\n </div>\n <div class=\"col-auto align-self-center\">\n <ng-template [ngTemplateOutlet]=\"hintTpl\"></ng-template>\n </div>\n </div>\n } @else {\n <ng-template [ngTemplateOutlet]=\"inputTpl\"></ng-template>\n }\n }\n @if (validationStatus() === 'invalid' && errorsList().length > 0) {\n @for (desc of errorsList(); track desc) {\n <div class=\"invalid-feedback\">{{ desc }}</div>\n }\n }\n\n <ng-template #inputTpl>\n <div class=\"input-group col\">\n <label class=\"input-group-text cursor-pointer\" [ngClass]=\"validationStatusBorderClass()\" [for]=\"name()\">\n {{ t('SelectFile', { isMultiple: isMultiple() }) }}\n </label>\n <input type=\"text\" class=\"form-control text-truncate\" [class.border-end-0]=\"!!firstFileName()\"\n [value]=\"firstFileName() || ''\"\n [ngClass]=\"validationStatusClass()\" placeholder=\"{{ t('NoFileSelected', { isMultiple: isMultiple() }) }}\"\n [attr.disabled]=\"isDisabled() || undefined\" readonly>\n\n @if (!!firstFileName()) {\n <div class=\"input-group-text bg-transparent\" [ngClass]=\"validationStatusBorderClass()\">\n <upd-button [shouldIgnoreBtnClass]=\"true\" (clicked)=\"removeFile()\" customClasses=\"link-secondary cursor-pointer\">\n <upd-icon tablerIcon=\"trash\" [tablerIconSize]=\"18\"></upd-icon>\n </upd-button>\n </div>\n }\n </div>\n </ng-template>\n </ng-container>\n</div>\n\n<ng-template #hintTpl>\n <span class=\"form-help ms-2\" [updPopover]=\"hintText\" [updPopoverTemplate]=\"hintTemplate()\" [updPopoverActAsTooltip]=\"hintAsTooltip()\">\n ?\n </span>\n</ng-template>\n" }]
169
+ }], propDecorators: { hostWrapperClasses: [{
170
+ type: HostBinding,
171
+ args: ['class']
172
+ }], fileChanged: [{
173
+ type: Output
174
+ }] } });
175
+
176
+ var UpDevs$1 = {
177
+ FormControls: {
178
+ FileUpload: {
179
+ DropzoneDesktopDescription: "Drop {isMultiple, select, true {files} other {a file}} here or <u>click</u> to select {isMultiple, select, true {them} other {it}}",
180
+ DropzoneMobileDescription: "Touch to select {isMultiple, select, true {files} other {a file}} to upload",
181
+ SelectFile: "Select {isMultiple, select, true {files} other {a file}}",
182
+ NoFileSelected: "No {isMultiple, select, true {files} other {file}} selected",
183
+ ExtensionNotAllowed: "The file ({{fileName}}) with the extension '{{extension}}' is not allowed. Allowed {hasMultipleExt, select, true {extensions are} other {extension is}}: {{allowedExtensions}}.",
184
+ MinSizeNotMet: "The file ({{fileName}}) of size {{fileSize}} is smaller than the allowed of {{minAllowedSize}}.",
185
+ MaxSizeExceeded: "The file ({{fileName}}) of size {{fileSize}} is bigger than the allowed of {{maxAllowedSize}}."
186
+ }
187
+ }
188
+ };
189
+ var en = {
190
+ UpDevs: UpDevs$1
191
+ };
192
+
193
+ var en$1 = /*#__PURE__*/Object.freeze({
194
+ __proto__: null,
195
+ UpDevs: UpDevs$1,
196
+ default: en
197
+ });
198
+
199
+ var UpDevs = {
200
+ FormControls: {
201
+ FileUpload: {
202
+ DropzoneDesktopDescription: "Arraste {isMultiple, select, true {arquivos} other {um arquivo}} para cá ou <u>clique</u> para selecioná-lo{isMultiple, select, true {s} other {}}",
203
+ DropzoneMobileDescription: "Toque para selecionar {isMultiple, select, true {arquivos} other {um arquivo}} to upload",
204
+ SelectFile: "Selecione {isMultiple, select, true {arquivos} other {um arquivo}}",
205
+ NoFileSelected: "Nenhum arquivo selecionado",
206
+ ExtensionNotAllowed: "O arquivo ({{fileName}}) tem a extensão '{{extension}}' que não é permitida. {hasMultipleExt, select, true {As extensões de arquivo permitidas são} other {A extensão de arquivo permitida é}}: {{allowedExtensions}}.",
207
+ MinSizeNotMet: "O arquivo ({{fileName}}) de tamanho {{fileSize}} é menor do que o permitido de {{minAllowedSize}}.",
208
+ MaxSizeExceeded: "O arquivo ({{fileName}}) de tamanho {{fileSize}} é maior do que o permitido de {{maxAllowedSize}}."
209
+ }
210
+ }
211
+ };
212
+ var pt = {
213
+ UpDevs: UpDevs
214
+ };
215
+
216
+ var pt$1 = /*#__PURE__*/Object.freeze({
217
+ __proto__: null,
218
+ UpDevs: UpDevs,
219
+ default: pt
220
+ });
221
+
222
+ class UpdFileUploadModule {
223
+ constructor(translocoService) {
224
+ translocoService.setFallbackLangForMissingTranslation({ fallbackLang: 'en' });
225
+ translocoService.setTranslation(en$1, 'en');
226
+ translocoService.setTranslation(pt$1, 'pt');
227
+ }
228
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: UpdFileUploadModule, deps: [{ token: i1$1.TranslocoService }], target: i0.ɵɵFactoryTarget.NgModule }); }
229
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.1.0", ngImport: i0, type: UpdFileUploadModule, declarations: [FileUploadComponent], imports: [CommonModule,
230
+ TranslocoModule,
231
+ UpdButtonModule,
232
+ UpdIconsModule,
233
+ UpdPopoverModule], exports: [FileUploadComponent] }); }
234
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: UpdFileUploadModule, imports: [CommonModule,
235
+ TranslocoModule,
236
+ UpdButtonModule,
237
+ UpdIconsModule,
238
+ UpdPopoverModule] }); }
239
+ }
240
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: UpdFileUploadModule, decorators: [{
241
+ type: NgModule,
242
+ args: [{
243
+ imports: [
244
+ CommonModule,
245
+ TranslocoModule,
246
+ UpdButtonModule,
247
+ UpdIconsModule,
248
+ UpdPopoverModule
249
+ ],
250
+ declarations: [
251
+ FileUploadComponent
252
+ ],
253
+ exports: [
254
+ FileUploadComponent
255
+ ]
256
+ }]
257
+ }], ctorParameters: () => [{ type: i1$1.TranslocoService }] });
258
+
259
+ /**
260
+ * Generated bundle index. Do not edit.
261
+ */
262
+
263
+ export { FileUploadComponent, UpdFileUploadModule };
264
+ //# sourceMappingURL=updevs-components-form-controls-file-upload.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"updevs-components-form-controls-file-upload.mjs","sources":["../../../../libs/components/form-controls/file-upload/src/file-upload.component.ts","../../../../libs/components/form-controls/file-upload/src/file-upload.component.html","../../../../libs/components/form-controls/file-upload/src/upd-file-upload.module.ts","../../../../libs/components/form-controls/file-upload/src/updevs-components-form-controls-file-upload.ts"],"sourcesContent":["import { Component, computed, EventEmitter, HostBinding, inject, input, Output, signal } from '@angular/core';\nimport { ColumnSizeHelper, HorizontalVerticalType } from '@updevs/components';\nimport { TextModel } from '@updevs/sdk';\nimport { PlatformService, Tools } from '@updevs/sdk/core';\nimport { BaseControl } from '@updevs/components/form-controls/abstractions';\nimport { OptionalType } from '@updevs/sdk/types';\n\nimport { FileUploadChangedEvent } from './file-upload-changed.event';\n\n@Component({\n selector: 'upd-file-upload',\n templateUrl: './file-upload.component.html',\n styleUrl: './file-upload.component.scss'\n})\nexport class FileUploadComponent extends BaseControl {\n @HostBinding('class') hostWrapperClasses = '';\n\n @Output() readonly fileChanged = new EventEmitter<OptionalType<FileUploadChangedEvent>>();\n\n readonly fileName = input<string>();\n readonly title = input<TextModel>();\n readonly allowFilesDrop = input(false);\n readonly isMultiple = input(false); // TODO: implement\n readonly allowedExtensions = input('*');\n readonly minFileSize = input<number>();\n readonly maxFileSize = input<number>();\n readonly layout = input<HorizontalVerticalType>('vertical');\n readonly isOver = signal(false);\n readonly showValidationStatus = computed(() =>\n !!this.validationStatus() && (this.validationStatus() === 'invalid' || this.showValidStatus())\n );\n readonly validationStatusClass = computed(() => {\n if (this.showValidationStatus()) {\n return `is-${this.validationStatus()}`;\n }\n\n return '';\n });\n readonly validationStatusBorderClass = computed(() => {\n if (this.showValidationStatus()) {\n return this.validationStatus() === 'invalid' ? 'border-danger' : 'border-success';\n }\n\n return '';\n });\n readonly errorsList = computed(() => [...this.validationStatusTexts.concat(this.fileUploadErrors())]);\n readonly currentFiles = signal<OptionalType<File[]>>(undefined);\n readonly labelSizeClasses = computed(() => {\n if (this.layout() !== 'horizontal') {\n return 'form-label';\n }\n\n return ColumnSizeHelper.getClasses(\n 'col-form-label',\n ColumnSizeHelper.getSizeClasses(this.labelColSize(), 3)\n );\n });\n readonly firstFileName = computed(() => (this.currentFiles()?.length || 0) > 0 ? this.currentFiles()![0].name : this.fileName());\n\n get titleText(): string {\n return this._textService.getText(this.title(), { isMultiple: this.isMultiple() });\n }\n get dropDescriptionText(): string {\n return !!this.descriptionText\n ? this.descriptionText\n : this._textService.getText(\n this.platformService.isMobile ? this.defaultMobileDesc : this.defaultDesktopDesc, { isMultiple: this.isMultiple() }\n );\n }\n get supportsAdvancedUpload(): boolean {\n const div = document.createElement('div');\n return (('draggable' in div) || ('ondragstart' in div && 'ondrop' in div)) && 'FormData' in window && 'FileReader' in window;\n }\n\n private readonly defaultMobileDesc: TextModel = {\n text: 'UpDevs.FormControls.FileUpload.DropzoneMobileDescription',\n isTranslated: false\n };\n private readonly defaultDesktopDesc: TextModel = {\n text: 'UpDevs.FormControls.FileUpload.DropzoneDesktopDescription',\n isTranslated: false\n };\n private readonly fileUploadErrors = signal<string[]>([]);\n private readonly platformService = inject(PlatformService);\n\n onFileChange(event: Event): void {\n event.stopPropagation();\n\n const files = Array.from((event.target as any).files as FileList);\n\n if (!!files) {\n this.currentFiles.set([...files]);\n const errors = files.map(f => this.getFileErrors(f)).reduce((acc, e) => acc.concat(e), []);\n\n if (errors.length > 0) {\n this.fileUploadErrors.set([...errors]);\n return;\n }\n\n if (this.isMultiple()) {\n // TODO: implement\n } else {\n const file = files[0];\n const reader = new FileReader();\n reader.onload = (fileReader: any) => this.fileChanged.emit({ file: file, dataUrl: fileReader.target.result });\n\n reader.readAsDataURL(file);\n }\n }\n }\n\n removeFile(): void {\n this.currentFiles.set([]);\n this.fileChanged.emit(undefined);\n }\n\n onDrag(event: DragEvent): void {\n event.preventDefault();\n event.stopPropagation();\n }\n\n onDragStart(event: DragEvent): void {\n event.preventDefault();\n event.stopPropagation();\n }\n\n onDragEnd(event: DragEvent): void {\n event.preventDefault();\n event.stopPropagation();\n this.isOver.set(false);\n }\n\n onDragOver(event: DragEvent): void {\n event.preventDefault();\n event.stopPropagation();\n this.isOver.set(true);\n }\n\n onDragEnter(event: DragEvent): void {\n event.preventDefault();\n event.stopPropagation();\n this.isOver.set(true);\n }\n\n onDragLeave(event: DragEvent): void {\n event.preventDefault();\n event.stopPropagation();\n this.isOver.set(false);\n }\n\n onDrop(event: DragEvent): void {\n event.preventDefault();\n event.stopPropagation();\n this.isOver.set(false);\n\n const droppedFiles = event.dataTransfer!.files;\n }\n\n private getFileErrors(file: File): string[] {\n const extension = `.${file.name.split('.').pop() || ''}`;\n const fileSizeInKB = Math.round(file.size / 1024);\n const errors: string[] = [];\n\n if (this.allowedExtensions() !== '*' && !this.allowedExtensions().includes(extension)) {\n errors.push(\n this._textService.getText(\n { text: 'UpDevs.FormControls.FileUpload.ExtensionNotAllowed', isTranslated: false },\n {\n fileName: file.name,\n extension,\n hasMultipleExt: this.allowedExtensions().includes(','),\n allowedExtensions: this.allowedExtensions()\n }\n )\n );\n }\n\n if (!!this.minFileSize() && fileSizeInKB < this.minFileSize()!) {\n errors.push(\n this._textService.getText(\n { text: 'UpDevs.FormControls.FileUpload.MinSizeNotMet', isTranslated: false },\n {\n fileName: file.name,\n fileSize: Tools.Text.formatKilobytes(fileSizeInKB),\n minAllowedSize: Tools.Text.formatKilobytes(this.minFileSize()!)\n }\n )\n );\n }\n\n if (!!this.maxFileSize() && fileSizeInKB > this.maxFileSize()!) {\n errors.push(\n this._textService.getText(\n { text: 'UpDevs.FormControls.FileUpload.MaxSizeExceeded', isTranslated: false },\n {\n fileName: file.name,\n fileSize: Tools.Text.formatKilobytes(fileSizeInKB),\n maxAllowedSize: Tools.Text.formatKilobytes(this.maxFileSize()!)\n }\n )\n );\n }\n\n return errors;\n }\n}\n","<input class=\"d-none\" [attr.id]=\"name()\" [attr.name]=\"name()\" type=\"file\" [attr.multiple]=\"isMultiple() ? true : undefined\"\n [accept]=\"allowedExtensions()\" (change)=\"onFileChange($event)\" />\n\n<div class=\"row\">\n <ng-container *transloco=\"let t; prefix: 'UpDevs.FormControls.FileUpload'\">\n @if (!!labelText) {\n <div [ngClass]=\"labelSizeClasses()\">\n <label [class.required]=\"isRequired()\">{{ labelText }}</label>\n\n @if (!!hintText || !!this.hintTemplate()) {\n <ng-template [ngTemplateOutlet]=\"hintTpl\"></ng-template>\n }\n </div>\n }\n\n @if (supportsAdvancedUpload && allowFilesDrop()) {\n <div class=\"d-flex flex-column border rounded-2 p-2 w-100 h-100\" [ngClass]=\"validationStatusBorderClass()\"\n [class.bg-muted-lt]=\"!isOver()\" [class.bg-primary-lt]=\"isOver()\" (drag)=\"onDrag($event)\" (dragstart)=\"onDragStart($event)\"\n (dragend)=\"onDragEnd($event)\" (dragover)=\"onDragOver($event)\" (dragenter)=\"onDragEnter($event)\"\n (dragleave)=\"onDragLeave($event)\" (drop)=\"onDrop($event)\">\n @if (!!titleText) {\n <span class=\"fw-bold align-self-center cursor-pointer\" [innerHTML]=\"titleText\"></span>\n }\n\n <label [for]=\"name()\" class=\"text-secondary align-self-center cursor-pointer\" [innerHTML]=\"dropDescriptionText\"></label>\n\n @if (!labelText && (!!hintText || !!this.hintTemplate())) {\n <ng-template [ngTemplateOutlet]=\"hintTpl\"></ng-template>\n }\n </div>\n } @else {\n @if (!labelText && (!!hintText || !!this.hintTemplate())) {\n <div class=\"row g-2\">\n <div class=\"col\">\n <ng-template [ngTemplateOutlet]=\"inputTpl\"></ng-template>\n </div>\n <div class=\"col-auto align-self-center\">\n <ng-template [ngTemplateOutlet]=\"hintTpl\"></ng-template>\n </div>\n </div>\n } @else {\n <ng-template [ngTemplateOutlet]=\"inputTpl\"></ng-template>\n }\n }\n @if (validationStatus() === 'invalid' && errorsList().length > 0) {\n @for (desc of errorsList(); track desc) {\n <div class=\"invalid-feedback\">{{ desc }}</div>\n }\n }\n\n <ng-template #inputTpl>\n <div class=\"input-group col\">\n <label class=\"input-group-text cursor-pointer\" [ngClass]=\"validationStatusBorderClass()\" [for]=\"name()\">\n {{ t('SelectFile', { isMultiple: isMultiple() }) }}\n </label>\n <input type=\"text\" class=\"form-control text-truncate\" [class.border-end-0]=\"!!firstFileName()\"\n [value]=\"firstFileName() || ''\"\n [ngClass]=\"validationStatusClass()\" placeholder=\"{{ t('NoFileSelected', { isMultiple: isMultiple() }) }}\"\n [attr.disabled]=\"isDisabled() || undefined\" readonly>\n\n @if (!!firstFileName()) {\n <div class=\"input-group-text bg-transparent\" [ngClass]=\"validationStatusBorderClass()\">\n <upd-button [shouldIgnoreBtnClass]=\"true\" (clicked)=\"removeFile()\" customClasses=\"link-secondary cursor-pointer\">\n <upd-icon tablerIcon=\"trash\" [tablerIconSize]=\"18\"></upd-icon>\n </upd-button>\n </div>\n }\n </div>\n </ng-template>\n </ng-container>\n</div>\n\n<ng-template #hintTpl>\n <span class=\"form-help ms-2\" [updPopover]=\"hintText\" [updPopoverTemplate]=\"hintTemplate()\" [updPopoverActAsTooltip]=\"hintAsTooltip()\">\n ?\n </span>\n</ng-template>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TranslocoModule, TranslocoService } from '@jsverse/transloco';\nimport { UpdIconsModule } from '@updevs/icons';\nimport { UpdButtonModule } from '@updevs/components/button';\nimport { UpdPopoverModule } from '@updevs/components/popover';\n\nimport * as en from './assets/i18n/en.json';\nimport * as pt from './assets/i18n/pt.json';\nimport { FileUploadComponent } from './file-upload.component';\n\n@NgModule({\n imports: [\n CommonModule,\n TranslocoModule,\n UpdButtonModule,\n UpdIconsModule,\n UpdPopoverModule\n ],\n declarations: [\n FileUploadComponent\n ],\n exports: [\n FileUploadComponent\n ]\n})\nexport class UpdFileUploadModule {\n constructor(translocoService: TranslocoService) {\n translocoService.setFallbackLangForMissingTranslation({ fallbackLang: 'en' });\n translocoService.setTranslation(en, 'en');\n translocoService.setTranslation(pt, 'pt');\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i2","en","pt","i1"],"mappings":"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"}