@updevs/components 1.0.0-alpha.5 → 1.0.0-alpha.50

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 (922) 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/_hero.scss +70 -0
  22. package/assets/styles/marketing/_pricing.scss +111 -0
  23. package/assets/styles/marketing/_sections.scss +124 -0
  24. package/assets/styles/marketing/_shape.scss +31 -0
  25. package/assets/styles/mixins/_functions.scss +53 -0
  26. package/assets/styles/mixins/_mixins.scss +9 -9
  27. package/assets/styles/ui/_accordion.scss +165 -11
  28. package/assets/styles/ui/_alerts.scss +80 -38
  29. package/assets/styles/ui/_avatars.scss +36 -9
  30. package/assets/styles/ui/_badges.scss +47 -13
  31. package/assets/styles/ui/_button-group.scss +1 -1
  32. package/assets/styles/ui/_buttons.scss +33 -37
  33. package/assets/styles/ui/_calendars.scss +2 -2
  34. package/assets/styles/ui/_cards.scss +9 -0
  35. package/assets/styles/ui/_carousel.scss +1 -1
  36. package/assets/styles/ui/_charts.scss +1 -1
  37. package/assets/styles/ui/_chat.scss +38 -0
  38. package/assets/styles/ui/_close.scss +54 -1
  39. package/assets/styles/ui/_datagrid.scss +1 -1
  40. package/assets/styles/ui/_dropdowns.scss +3 -0
  41. package/assets/styles/ui/_empty.scss +0 -5
  42. package/assets/styles/ui/_flags.scss +2 -2
  43. package/assets/styles/ui/_forms.scss +33 -7
  44. package/assets/styles/ui/_grid.scss +1 -1
  45. package/assets/styles/ui/_icons.scss +1 -1
  46. package/assets/styles/ui/_images.scss +4 -0
  47. package/assets/styles/ui/_lists.scss +12 -16
  48. package/assets/styles/ui/_loaders.scss +1 -1
  49. package/assets/styles/ui/_markdown.scss +15 -4
  50. package/assets/styles/ui/_modals.scss +2 -2
  51. package/assets/styles/ui/_nav.scss +17 -3
  52. package/assets/styles/ui/_offcanvas.scss +2 -2
  53. package/assets/styles/ui/_pagination.scss +2 -0
  54. package/assets/styles/ui/_payments.scss +1 -1
  55. package/assets/styles/ui/_placeholder.scss +1 -1
  56. package/assets/styles/ui/_progress.scss +1 -1
  57. package/assets/styles/ui/_ribbons.scss +1 -0
  58. package/assets/styles/ui/_segmented.scss +101 -0
  59. package/assets/styles/ui/_signature.scss +15 -0
  60. package/assets/styles/ui/_social.scss +52 -0
  61. package/assets/styles/ui/_status.scss +1 -1
  62. package/assets/styles/ui/_steps.scss +5 -1
  63. package/assets/styles/ui/_switch-icon.scss +1 -1
  64. package/assets/styles/ui/_tables.scss +27 -1
  65. package/assets/styles/ui/_tags.scss +1 -1
  66. package/assets/styles/ui/_timeline.scss +1 -1
  67. package/assets/styles/ui/_toasts.scss +0 -1
  68. package/assets/styles/ui/_tracking.scss +1 -1
  69. package/assets/styles/ui/_type.scss +169 -8
  70. package/assets/styles/ui/forms/_form-check.scss +1 -1
  71. package/assets/styles/ui/forms/_form-colorinput.scss +1 -1
  72. package/assets/styles/ui/forms/_form-custom.scss +1 -1
  73. package/assets/styles/ui/forms/_form-imagecheck.scss +6 -5
  74. package/assets/styles/ui/forms/_form-selectgroup.scss +2 -2
  75. package/assets/styles/ui/typo/_hr.scss +4 -2
  76. package/assets/styles/utils/_colors.scss +72 -11
  77. package/assets/styles/utils/_opacity.scss +1 -1
  78. package/assets/styles/utils/_scroll.scss +0 -2
  79. package/assets/styles/utils/_sizing.scss +1 -1
  80. package/assets/styles/utils/_text.scss +1 -2
  81. package/assets/styles/vendor/_apexcharts.scss +52 -0
  82. package/assets/styles/vendor/_coloris.scss +72 -0
  83. package/assets/styles/vendor/_dropzone.scss +27 -0
  84. package/assets/styles/vendor/_fslightbox.scss +13 -0
  85. package/assets/styles/vendor/_jsvectormap.scss +47 -0
  86. package/assets/styles/vendor/_litepicker.scss +69 -0
  87. package/assets/styles/vendor/_nouislider.scss +49 -0
  88. package/assets/styles/vendor/_plyr.scss +3 -0
  89. package/assets/styles/vendor/_stars-rating.scss +22 -0
  90. package/assets/styles/vendor/_tom-select.scss +81 -0
  91. package/assets/styles/vendor/_turbo.scss +3 -0
  92. package/assets/styles/vendor/_typed.scss +4 -0
  93. package/assets/styles/vendor/_wysiwyg.scss +46 -0
  94. package/badge/badge-config.model.d.ts +14 -0
  95. package/badge/badge.component.d.ts +23 -0
  96. package/badge/badge.config.d.ts +12 -0
  97. package/badge/public-api.d.ts +3 -0
  98. package/badge/upd-badge.module.d.ts +8 -0
  99. package/button/button.component.d.ts +61 -0
  100. package/button/upd-button.module.d.ts +10 -0
  101. package/calendar/calendar.component.d.ts +63 -0
  102. package/calendar/models/calendar-date.model.d.ts +10 -0
  103. package/calendar/models/calendar-month.model.d.ts +7 -0
  104. package/calendar/models/calendar-selected.model.d.ts +5 -0
  105. package/calendar/models/calendar-user-event.model.d.ts +4 -0
  106. package/calendar/models/calendar-year.model.d.ts +6 -0
  107. package/calendar/models/date-range.model.d.ts +22 -0
  108. package/calendar/models/enums/calendar-view.enum.d.ts +5 -0
  109. package/calendar/models/public-api.d.ts +7 -0
  110. package/calendar/public-api.d.ts +5 -0
  111. package/calendar/services/calendar-range-strategy.service.d.ts +35 -0
  112. package/calendar/services/calendar-signals.service.d.ts +24 -0
  113. package/calendar/services/public-api.d.ts +1 -0
  114. package/calendar/types/calendar-view.type.d.ts +1 -0
  115. package/calendar/types/public-api.d.ts +1 -0
  116. package/calendar/upd-calendar.module.d.ts +13 -0
  117. package/card/card.component.d.ts +54 -0
  118. package/card/directives/card-actions.directive.d.ts +7 -0
  119. package/card/directives/card-footer.directive.d.ts +7 -0
  120. package/card/directives/card-header.directive.d.ts +7 -0
  121. package/card/directives/card-image.directive.d.ts +7 -0
  122. package/card/{src/public-api.ts → public-api.d.ts} +1 -0
  123. package/card/upd-card.module.d.ts +14 -0
  124. package/drag-and-drop/drag-and-drop.component.d.ts +26 -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 +79 -0
  134. package/dropdown/models/dropdown-action-clicked.model.d.ts +6 -0
  135. package/dropdown/{src/models/dropdown-item.ts → models/dropdown-item.d.ts} +7 -4
  136. package/dropdown/{src/models/dropdown-item.type.ts → models/dropdown-item.type.d.ts} +1 -1
  137. package/dropdown/models/public-api.d.ts +4 -0
  138. package/dropdown/models/toolbar.type.d.ts +1 -0
  139. package/dropdown/upd-dropdown.module.d.ts +12 -0
  140. package/esm2022/badge/badge-config.model.mjs +14 -0
  141. package/esm2022/badge/badge.component.mjs +48 -0
  142. package/esm2022/badge/badge.config.mjs +2 -0
  143. package/esm2022/badge/index.mjs +2 -0
  144. package/esm2022/badge/public-api.mjs +4 -0
  145. package/esm2022/badge/upd-badge.module.mjs +24 -0
  146. package/esm2022/badge/updevs-components-badge.mjs +5 -0
  147. package/esm2022/button/button.component.mjs +157 -0
  148. package/esm2022/button/index.mjs +2 -0
  149. package/esm2022/button/public-api.mjs +3 -0
  150. package/esm2022/button/upd-button.module.mjs +32 -0
  151. package/esm2022/button/updevs-components-button.mjs +5 -0
  152. package/esm2022/calendar/assets/i18n/en.json +16 -0
  153. package/esm2022/calendar/assets/i18n/pt.json +16 -0
  154. package/esm2022/calendar/calendar.component.mjs +318 -0
  155. package/esm2022/calendar/index.mjs +2 -0
  156. package/esm2022/calendar/models/calendar-date.model.mjs +2 -0
  157. package/esm2022/calendar/models/calendar-month.model.mjs +2 -0
  158. package/esm2022/calendar/models/calendar-selected.model.mjs +2 -0
  159. package/esm2022/calendar/models/calendar-user-event.model.mjs +2 -0
  160. package/esm2022/calendar/models/calendar-year.model.mjs +2 -0
  161. package/esm2022/calendar/models/date-range.model.mjs +18 -0
  162. package/esm2022/calendar/models/enums/calendar-view.enum.mjs +7 -0
  163. package/esm2022/calendar/models/public-api.mjs +8 -0
  164. package/esm2022/calendar/public-api.mjs +6 -0
  165. package/esm2022/calendar/services/calendar-range-strategy.service.mjs +99 -0
  166. package/esm2022/calendar/services/calendar-signals.service.mjs +47 -0
  167. package/esm2022/calendar/services/public-api.mjs +2 -0
  168. package/esm2022/calendar/types/calendar-view.type.mjs +2 -0
  169. package/esm2022/calendar/types/public-api.mjs +2 -0
  170. package/esm2022/calendar/upd-calendar.module.mjs +52 -0
  171. package/esm2022/calendar/updevs-components-calendar.mjs +5 -0
  172. package/esm2022/card/card.component.mjs +136 -0
  173. package/esm2022/card/directives/card-actions.directive.mjs +16 -0
  174. package/esm2022/card/directives/card-footer.directive.mjs +16 -0
  175. package/esm2022/card/directives/card-header.directive.mjs +16 -0
  176. package/esm2022/card/directives/card-image.directive.mjs +16 -0
  177. package/esm2022/card/directives/public-api.mjs +5 -0
  178. package/esm2022/card/index.mjs +2 -0
  179. package/esm2022/card/public-api.mjs +5 -0
  180. package/esm2022/card/types/card-state.type.mjs +2 -0
  181. package/esm2022/card/types/card-style.type.mjs +2 -0
  182. package/esm2022/card/types/hover-effect.type.mjs +2 -0
  183. package/esm2022/card/types/public-api.mjs +6 -0
  184. package/esm2022/card/types/ribbon-style.type.mjs +2 -0
  185. package/esm2022/card/types/status-position.type.mjs +2 -0
  186. package/esm2022/card/upd-card.module.mjs +50 -0
  187. package/esm2022/card/updevs-components-card.mjs +5 -0
  188. package/esm2022/drag-and-drop/drag-and-drop.component.mjs +134 -0
  189. package/esm2022/drag-and-drop/index.mjs +2 -0
  190. package/esm2022/drag-and-drop/models/drag-and-drop-column.config.mjs +2 -0
  191. package/esm2022/drag-and-drop/models/drag-and-drop-column.model.mjs +9 -0
  192. package/esm2022/drag-and-drop/models/drag-and-drop-item.mjs +2 -0
  193. package/esm2022/drag-and-drop/models/drag-and-drop-item.model.mjs +14 -0
  194. package/esm2022/drag-and-drop/models/drag-and-drop.config.mjs +2 -0
  195. package/esm2022/drag-and-drop/models/public-api.mjs +5 -0
  196. package/esm2022/drag-and-drop/public-api.mjs +4 -0
  197. package/esm2022/drag-and-drop/upd-drag-and-drop.module.mjs +28 -0
  198. package/esm2022/drag-and-drop/updevs-components-drag-and-drop.mjs +5 -0
  199. package/esm2022/dropdown/dropdown.component.mjs +198 -0
  200. package/esm2022/dropdown/index.mjs +2 -0
  201. package/esm2022/dropdown/models/dropdown-action-clicked.model.mjs +2 -0
  202. package/esm2022/dropdown/models/dropdown-item.mjs +2 -0
  203. package/esm2022/dropdown/models/dropdown-item.type.mjs +2 -0
  204. package/esm2022/dropdown/models/public-api.mjs +5 -0
  205. package/esm2022/dropdown/models/toolbar.type.mjs +2 -0
  206. package/esm2022/dropdown/public-api.mjs +4 -0
  207. package/esm2022/dropdown/upd-dropdown.module.mjs +40 -0
  208. package/esm2022/dropdown/updevs-components-dropdown.mjs +5 -0
  209. package/esm2022/form/assets/i18n/en.json +17 -0
  210. package/esm2022/form/assets/i18n/pt.json +17 -0
  211. package/esm2022/form/components/dynamic-field/dynamic-field.component.mjs +130 -0
  212. package/esm2022/form/form.component.mjs +122 -0
  213. package/esm2022/form/index.mjs +2 -0
  214. package/esm2022/form/models/checkbox-field.model.mjs +2 -0
  215. package/esm2022/form/models/checkbox-group-field.model.mjs +2 -0
  216. package/esm2022/form/models/dynamic-field.model.mjs +2 -0
  217. package/esm2022/form/models/enums/dynamic-field.type.mjs +15 -0
  218. package/esm2022/form/models/enums/public-api.mjs +2 -0
  219. package/esm2022/form/models/file-upload-field.model.mjs +2 -0
  220. package/esm2022/form/models/form-config.mjs +2 -0
  221. package/esm2022/form/models/form-row.model.mjs +2 -0
  222. package/esm2022/form/models/input-field.model.mjs +2 -0
  223. package/esm2022/form/models/masked-input-field.model.mjs +2 -0
  224. package/esm2022/form/models/public-api.mjs +16 -0
  225. package/esm2022/form/models/radio-field.model.mjs +2 -0
  226. package/esm2022/form/models/radio-group-field.model.mjs +2 -0
  227. package/esm2022/form/models/select-field.model.mjs +2 -0
  228. package/esm2022/form/models/single-select-field.model.mjs +2 -0
  229. package/esm2022/form/models/textarea-field.model.mjs +2 -0
  230. package/esm2022/form/models/validator-config.mjs +2 -0
  231. package/esm2022/form/public-api.mjs +4 -0
  232. package/esm2022/form/tools/errors-helper.mjs +54 -0
  233. package/esm2022/form/upd-form.module.mjs +84 -0
  234. package/esm2022/form/updevs-components-form.mjs +5 -0
  235. package/esm2022/form-controls/abstractions/base-control.mjs +46 -0
  236. package/esm2022/form-controls/abstractions/index.mjs +2 -0
  237. package/esm2022/form-controls/abstractions/public-api.mjs +2 -0
  238. package/esm2022/form-controls/abstractions/updevs-components-form-controls-abstractions.mjs +5 -0
  239. package/esm2022/form-controls/checkbox/checkbox.component.mjs +54 -0
  240. package/esm2022/form-controls/checkbox/index.mjs +2 -0
  241. package/esm2022/form-controls/checkbox/public-api.mjs +3 -0
  242. package/esm2022/form-controls/checkbox/upd-checkbox.module.mjs +32 -0
  243. package/esm2022/form-controls/checkbox/updevs-components-form-controls-checkbox.mjs +5 -0
  244. package/esm2022/form-controls/date-picker/date-picker.component.mjs +132 -0
  245. package/esm2022/form-controls/date-picker/index.mjs +2 -0
  246. package/esm2022/form-controls/date-picker/public-api.mjs +3 -0
  247. package/esm2022/form-controls/date-picker/upd-date-picker.module.mjs +40 -0
  248. package/esm2022/form-controls/date-picker/updevs-components-form-controls-date-picker.mjs +5 -0
  249. package/esm2022/form-controls/file-upload/assets/i18n/en.json +15 -0
  250. package/esm2022/form-controls/file-upload/assets/i18n/pt.json +15 -0
  251. package/esm2022/form-controls/file-upload/file-upload-changed.event.mjs +2 -0
  252. package/esm2022/form-controls/file-upload/file-upload.component.mjs +169 -0
  253. package/esm2022/form-controls/file-upload/index.mjs +2 -0
  254. package/esm2022/form-controls/file-upload/public-api.mjs +4 -0
  255. package/esm2022/form-controls/file-upload/upd-file-upload.module.mjs +48 -0
  256. package/esm2022/form-controls/file-upload/updevs-components-form-controls-file-upload.mjs +5 -0
  257. package/esm2022/form-controls/input/directives/input-append.directive.mjs +16 -0
  258. package/esm2022/form-controls/input/directives/input-prepend.directive.mjs +16 -0
  259. package/esm2022/form-controls/input/directives/public-api.mjs +3 -0
  260. package/esm2022/form-controls/input/index.mjs +2 -0
  261. package/esm2022/form-controls/input/input.component.mjs +185 -0
  262. package/esm2022/form-controls/input/public-api.mjs +5 -0
  263. package/esm2022/form-controls/input/types/input.type.mjs +2 -0
  264. package/esm2022/form-controls/input/types/loader-position.type.mjs +2 -0
  265. package/esm2022/form-controls/input/types/public-api.mjs +3 -0
  266. package/esm2022/form-controls/input/upd-input.module.mjs +46 -0
  267. package/esm2022/form-controls/input/updevs-components-form-controls-input.mjs +5 -0
  268. package/esm2022/form-controls/radio/index.mjs +2 -0
  269. package/esm2022/form-controls/radio/public-api.mjs +3 -0
  270. package/esm2022/form-controls/radio/radio.component.mjs +51 -0
  271. package/esm2022/form-controls/radio/upd-radio.module.mjs +32 -0
  272. package/esm2022/form-controls/radio/updevs-components-form-controls-radio.mjs +5 -0
  273. package/esm2022/form-controls/select/components/multiple/select-multiple.component.mjs +76 -0
  274. package/esm2022/form-controls/select/components/single/select.component.mjs +72 -0
  275. package/esm2022/form-controls/select/index.mjs +2 -0
  276. package/esm2022/form-controls/select/models/abstractions/base-select.component.mjs +215 -0
  277. package/esm2022/form-controls/select/models/defaults.mjs +8 -0
  278. package/esm2022/form-controls/select/models/public-api.mjs +3 -0
  279. package/esm2022/form-controls/select/models/select-item.mjs +2 -0
  280. package/esm2022/form-controls/select/public-api.mjs +5 -0
  281. package/esm2022/form-controls/select/upd-select.module.mjs +57 -0
  282. package/esm2022/form-controls/select/updevs-components-form-controls-select.mjs +5 -0
  283. package/esm2022/form-controls/textarea/index.mjs +2 -0
  284. package/esm2022/form-controls/textarea/public-api.mjs +3 -0
  285. package/esm2022/form-controls/textarea/textarea.component.mjs +44 -0
  286. package/esm2022/form-controls/textarea/upd-textarea.module.mjs +24 -0
  287. package/esm2022/form-controls/textarea/updevs-components-form-controls-textarea.mjs +5 -0
  288. package/esm2022/form-controls/time-picker/index.mjs +2 -0
  289. package/esm2022/form-controls/time-picker/public-api.mjs +4 -0
  290. package/esm2022/form-controls/time-picker/time-picker.component.mjs +130 -0
  291. package/esm2022/form-controls/time-picker/time-selector/time-selector.component.mjs +124 -0
  292. package/esm2022/form-controls/time-picker/upd-time-picker.module.mjs +61 -0
  293. package/esm2022/form-controls/time-picker/updevs-components-form-controls-time-picker.mjs +5 -0
  294. package/esm2022/index.mjs +2 -0
  295. package/esm2022/layout/abstractions/base-page.component.mjs +23 -0
  296. package/esm2022/layout/abstractions/base.layout.mjs +31 -0
  297. package/esm2022/layout/abstractions/public-api.mjs +2 -0
  298. package/esm2022/layout/assets/i18n/en.json +27 -0
  299. package/esm2022/layout/assets/i18n/pt.json +27 -0
  300. package/esm2022/layout/index.mjs +2 -0
  301. package/esm2022/layout/layouts/blank-layout/blank-layout.component.mjs +22 -0
  302. package/esm2022/layout/layouts/blank-layout/blank-layout.module.mjs +50 -0
  303. package/esm2022/layout/layouts/public-api.mjs +5 -0
  304. package/esm2022/layout/layouts/vertical-sidebar-layout/vertical-sidebar-layout.component.mjs +17 -0
  305. package/esm2022/layout/layouts/vertical-sidebar-layout/vertical-sidebar-layout.module.mjs +78 -0
  306. package/esm2022/layout/models/login-page-config.model.mjs +20 -0
  307. package/esm2022/layout/models/login-page.config.mjs +2 -0
  308. package/esm2022/layout/models/public-api.mjs +3 -0
  309. package/esm2022/layout/models/security-layout-config.model.mjs +10 -0
  310. package/esm2022/layout/models/security-layout.config.mjs +2 -0
  311. package/esm2022/layout/models/upd-layout-config.model.mjs +24 -0
  312. package/esm2022/layout/models/upd-layout.config.mjs +2 -0
  313. package/esm2022/layout/pages/auth-flow/auth-flow-routing.module.mjs +28 -0
  314. package/esm2022/layout/pages/auth-flow/auth-flow.module.mjs +73 -0
  315. package/esm2022/layout/pages/auth-flow/logged-out/logged-out.component.mjs +11 -0
  316. package/esm2022/layout/pages/auth-flow/login/login.component.mjs +110 -0
  317. package/esm2022/layout/pages/auth-flow/oauth-callback/oauth-callback.component.mjs +11 -0
  318. package/esm2022/layout/pages/auth-flow/public-api.mjs +6 -0
  319. package/esm2022/layout/pages/public-api.mjs +2 -0
  320. package/esm2022/layout/partials/footer/footer.component.mjs +52 -0
  321. package/esm2022/layout/partials/footer/footer.module.mjs +28 -0
  322. package/esm2022/layout/partials/footer/public-api.mjs +3 -0
  323. package/esm2022/layout/partials/header/header-style.type.mjs +2 -0
  324. package/esm2022/layout/partials/header/header.component.mjs +140 -0
  325. package/esm2022/layout/partials/header/header.module.mjs +40 -0
  326. package/esm2022/layout/partials/header/public-api.mjs +4 -0
  327. package/esm2022/layout/partials/page-header/page-header.component.mjs +15 -0
  328. package/esm2022/layout/partials/page-header/public-api.mjs +2 -0
  329. package/esm2022/layout/partials/public-api.mjs +5 -0
  330. package/esm2022/layout/partials/sidebar/public-api.mjs +2 -0
  331. package/esm2022/layout/partials/sidebar/sidebar.component.mjs +234 -0
  332. package/esm2022/layout/public-api.mjs +8 -0
  333. package/esm2022/layout/services/public-api.mjs +2 -0
  334. package/esm2022/layout/services/upd-layout-config.service.mjs +21 -0
  335. package/esm2022/layout/tools/layout.constants.mjs +15 -0
  336. package/esm2022/layout/upd-layout.module.mjs +47 -0
  337. package/esm2022/layout/updevs-components-layout.mjs +5 -0
  338. package/esm2022/lib/index.mjs +2 -0
  339. package/esm2022/lib/models/public-api.mjs +2 -0
  340. package/esm2022/lib/models/row-column-size.mjs +2 -0
  341. package/esm2022/lib/public-api.mjs +5 -0
  342. package/esm2022/lib/tools/column-size.helper.mjs +12 -0
  343. package/esm2022/lib/tools/public-api.mjs +2 -0
  344. package/esm2022/lib/types/component-size.type.mjs +2 -0
  345. package/esm2022/lib/types/horizontal-vertical.type.mjs +2 -0
  346. package/esm2022/lib/types/public-api.mjs +4 -0
  347. package/esm2022/lib/types/validation-status.type.mjs +2 -0
  348. package/esm2022/lib/upd-components.module.mjs +14 -0
  349. package/esm2022/link/index.mjs +2 -0
  350. package/esm2022/link/link.component.mjs +51 -0
  351. package/esm2022/link/public-api.mjs +4 -0
  352. package/esm2022/link/target.type.mjs +2 -0
  353. package/esm2022/link/upd-link.module.mjs +24 -0
  354. package/esm2022/link/updevs-components-link.mjs +5 -0
  355. package/esm2022/list/assets/i18n/en.json +9 -0
  356. package/esm2022/list/assets/i18n/pt.json +9 -0
  357. package/esm2022/list/index.mjs +2 -0
  358. package/esm2022/list/list.component.mjs +113 -0
  359. package/esm2022/list/models/badge-position.type.mjs +2 -0
  360. package/esm2022/list/models/list-item.mjs +2 -0
  361. package/esm2022/list/models/list-item.model.mjs +15 -0
  362. package/esm2022/list/models/public-api.mjs +3 -0
  363. package/esm2022/list/public-api.mjs +4 -0
  364. package/esm2022/list/upd-list.module.mjs +44 -0
  365. package/esm2022/list/updevs-components-list.mjs +5 -0
  366. package/esm2022/modal/assets/i18n/en.json +17 -0
  367. package/esm2022/modal/assets/i18n/pt.json +17 -0
  368. package/esm2022/modal/components/modal-container/modal-container.component.mjs +216 -0
  369. package/esm2022/modal/index.mjs +2 -0
  370. package/esm2022/modal/models/base.modal.mjs +14 -0
  371. package/esm2022/modal/models/modal-config.model.mjs +20 -0
  372. package/esm2022/modal/models/modal-ref.mjs +2 -0
  373. package/esm2022/modal/models/modal.config.mjs +2 -0
  374. package/esm2022/modal/models/public-api.mjs +4 -0
  375. package/esm2022/modal/public-api.mjs +4 -0
  376. package/esm2022/modal/services/modal-alert.service.mjs +99 -0
  377. package/esm2022/modal/services/modal.service.mjs +30 -0
  378. package/esm2022/modal/services/public-api.mjs +3 -0
  379. package/esm2022/modal/types/modal-footer-style.type.mjs +2 -0
  380. package/esm2022/modal/types/modal-size.type.mjs +2 -0
  381. package/esm2022/modal/upd-modal.module.mjs +90 -0
  382. package/esm2022/modal/updevs-components-modal.mjs +5 -0
  383. package/esm2022/paginator/assets/i18n/en.json +15 -0
  384. package/esm2022/paginator/assets/i18n/pt.json +15 -0
  385. package/esm2022/paginator/index.mjs +2 -0
  386. package/esm2022/paginator/paginator.component.mjs +66 -0
  387. package/esm2022/paginator/public-api.mjs +3 -0
  388. package/esm2022/paginator/upd-paginator.module.mjs +47 -0
  389. package/esm2022/paginator/updevs-components-paginator.mjs +5 -0
  390. package/esm2022/popover/index.mjs +2 -0
  391. package/esm2022/popover/popover.component.mjs +65 -0
  392. package/esm2022/popover/popover.directive.mjs +118 -0
  393. package/esm2022/popover/public-api.mjs +4 -0
  394. package/esm2022/popover/upd-popover.module.mjs +29 -0
  395. package/esm2022/popover/updevs-components-popover.mjs +5 -0
  396. package/esm2022/pricing-cards/index.mjs +2 -0
  397. package/esm2022/pricing-cards/models/price-item-feature.model.mjs +2 -0
  398. package/esm2022/pricing-cards/models/price-item-features-group.model.mjs +2 -0
  399. package/esm2022/pricing-cards/models/price-item-tag.model.mjs +2 -0
  400. package/esm2022/pricing-cards/models/price-item.model.mjs +2 -0
  401. package/esm2022/pricing-cards/models/public-api.mjs +5 -0
  402. package/esm2022/pricing-cards/pricing-cards.component.mjs +25 -0
  403. package/esm2022/pricing-cards/public-api.mjs +4 -0
  404. package/esm2022/pricing-cards/upd-pricing-cards.module.mjs +40 -0
  405. package/esm2022/pricing-cards/updevs-components-pricing-cards.mjs +5 -0
  406. package/esm2022/public-api.mjs +2 -0
  407. package/esm2022/table/abstractions/base-column.model.mjs +52 -0
  408. package/esm2022/table/abstractions/base.column.mjs +84 -0
  409. package/esm2022/table/abstractions/filters-operands.service.mjs +3 -0
  410. package/esm2022/table/abstractions/public-api.mjs +3 -0
  411. package/esm2022/table/assets/i18n/en.json +74 -0
  412. package/esm2022/table/assets/i18n/pt.json +74 -0
  413. package/esm2022/table/components/columns/boolean-column/boolean-column.component.mjs +26 -0
  414. package/esm2022/table/components/columns/date-time-column/date-time-column.component.mjs +13 -0
  415. package/esm2022/table/components/columns/number-column/number-column.component.mjs +13 -0
  416. package/esm2022/table/components/columns/text-column/text-column.component.mjs +31 -0
  417. package/esm2022/table/components/columns-manager/columns-manager.component.mjs +36 -0
  418. package/esm2022/table/components/filter-row/filter-row.component.mjs +114 -0
  419. package/esm2022/table/components/save-search/save-search.component.mjs +72 -0
  420. package/esm2022/table/components/search-section/search-section.component.mjs +93 -0
  421. package/esm2022/table/directives/public-api.mjs +2 -0
  422. package/esm2022/table/directives/table-column.directive.mjs +52 -0
  423. package/esm2022/table/index.mjs +2 -0
  424. package/esm2022/table/models/columns/boolean-column.model.mjs +22 -0
  425. package/esm2022/table/models/columns/date-time-column.model.mjs +16 -0
  426. package/esm2022/table/models/columns/guid-column.model.mjs +13 -0
  427. package/esm2022/table/models/columns/image-column.model.mjs +11 -0
  428. package/esm2022/table/models/columns/number-column.model.mjs +17 -0
  429. package/esm2022/table/models/columns/public-api.mjs +7 -0
  430. package/esm2022/table/models/columns/text-column.model.mjs +11 -0
  431. package/esm2022/table/models/enums/column-type.enum.mjs +15 -0
  432. package/esm2022/table/models/enums/public-api.mjs +2 -0
  433. package/esm2022/table/models/filter-item.model.mjs +2 -0
  434. package/esm2022/table/models/filter-operand.config.mjs +2 -0
  435. package/esm2022/table/models/operands-lists/boolean-filter-operands-list.model.mjs +25 -0
  436. package/esm2022/table/models/operands-lists/date-filter-operands-list.model.mjs +25 -0
  437. package/esm2022/table/models/operands-lists/date-or-number-operands-list.config.mjs +31 -0
  438. package/esm2022/table/models/operands-lists/filter-operands-list.config.mjs +31 -0
  439. package/esm2022/table/models/operands-lists/guid-filter-operands-list.model.mjs +16 -0
  440. package/esm2022/table/models/operands-lists/number-filter-operands-list.model.mjs +25 -0
  441. package/esm2022/table/models/operands-lists/string-filter-operands-list.model.mjs +45 -0
  442. package/esm2022/table/models/public-api.mjs +5 -0
  443. package/esm2022/table/models/saved-view.model.mjs +2 -0
  444. package/esm2022/table/models/table-config.model.mjs +29 -0
  445. package/esm2022/table/models/table.config.mjs +2 -0
  446. package/esm2022/table/models/upd-table-config.model.mjs +9 -0
  447. package/esm2022/table/models/upd-table.config.mjs +2 -0
  448. package/esm2022/table/public-api.mjs +6 -0
  449. package/esm2022/table/services/default-filters-operands.service.mjs +60 -0
  450. package/esm2022/table/services/storages/saved-views.storage.mjs +56 -0
  451. package/esm2022/table/services/stores/filters-operands.store.mjs +19 -0
  452. package/esm2022/table/services/upd-table-config.service.mjs +18 -0
  453. package/esm2022/table/table.component.mjs +439 -0
  454. package/esm2022/table/tools/filters.tools.mjs +48 -0
  455. package/esm2022/table/tools/table.constants.mjs +15 -0
  456. package/esm2022/table/upd-table.module.mjs +150 -0
  457. package/esm2022/table/updevs-components-table.mjs +5 -0
  458. package/esm2022/updevs-components.mjs +5 -0
  459. package/fesm2022/updevs-components-badge.mjs +89 -0
  460. package/fesm2022/updevs-components-badge.mjs.map +1 -0
  461. package/fesm2022/updevs-components-button.mjs +193 -0
  462. package/fesm2022/updevs-components-button.mjs.map +1 -0
  463. package/fesm2022/updevs-components-calendar.mjs +582 -0
  464. package/fesm2022/updevs-components-calendar.mjs.map +1 -0
  465. package/fesm2022/updevs-components-card.mjs +238 -0
  466. package/fesm2022/updevs-components-card.mjs.map +1 -0
  467. package/fesm2022/updevs-components-drag-and-drop.mjs +185 -0
  468. package/fesm2022/updevs-components-drag-and-drop.mjs.map +1 -0
  469. package/fesm2022/updevs-components-dropdown.mjs +242 -0
  470. package/fesm2022/updevs-components-dropdown.mjs.map +1 -0
  471. package/fesm2022/updevs-components-form-controls-abstractions.mjs +53 -0
  472. package/fesm2022/updevs-components-form-controls-abstractions.mjs.map +1 -0
  473. package/fesm2022/updevs-components-form-controls-checkbox.mjs +90 -0
  474. package/fesm2022/updevs-components-form-controls-checkbox.mjs.map +1 -0
  475. package/fesm2022/updevs-components-form-controls-date-picker.mjs +175 -0
  476. package/fesm2022/updevs-components-form-controls-date-picker.mjs.map +1 -0
  477. package/fesm2022/updevs-components-form-controls-file-upload.mjs +264 -0
  478. package/fesm2022/updevs-components-form-controls-file-upload.mjs.map +1 -0
  479. package/fesm2022/updevs-components-form-controls-input.mjs +259 -0
  480. package/fesm2022/updevs-components-form-controls-input.mjs.map +1 -0
  481. package/fesm2022/updevs-components-form-controls-radio.mjs +87 -0
  482. package/fesm2022/updevs-components-form-controls-radio.mjs.map +1 -0
  483. package/fesm2022/updevs-components-form-controls-select.mjs +417 -0
  484. package/fesm2022/updevs-components-form-controls-select.mjs.map +1 -0
  485. package/fesm2022/updevs-components-form-controls-textarea.mjs +72 -0
  486. package/fesm2022/updevs-components-form-controls-textarea.mjs.map +1 -0
  487. package/fesm2022/updevs-components-form-controls-time-picker.mjs +345 -0
  488. package/fesm2022/updevs-components-form-controls-time-picker.mjs.map +1 -0
  489. package/fesm2022/updevs-components-form.mjs +440 -0
  490. package/fesm2022/updevs-components-form.mjs.map +1 -0
  491. package/fesm2022/updevs-components-layout.mjs +1052 -0
  492. package/fesm2022/updevs-components-layout.mjs.map +1 -0
  493. package/fesm2022/updevs-components-link.mjs +79 -0
  494. package/fesm2022/updevs-components-link.mjs.map +1 -0
  495. package/fesm2022/updevs-components-list.mjs +206 -0
  496. package/fesm2022/updevs-components-list.mjs.map +1 -0
  497. package/fesm2022/updevs-components-modal.mjs +504 -0
  498. package/fesm2022/updevs-components-modal.mjs.map +1 -0
  499. package/fesm2022/updevs-components-paginator.mjs +160 -0
  500. package/fesm2022/updevs-components-paginator.mjs.map +1 -0
  501. package/fesm2022/updevs-components-popover.mjs +212 -0
  502. package/fesm2022/updevs-components-popover.mjs.map +1 -0
  503. package/fesm2022/updevs-components-pricing-cards.mjs +69 -0
  504. package/fesm2022/updevs-components-pricing-cards.mjs.map +1 -0
  505. package/fesm2022/updevs-components-table.mjs +1754 -0
  506. package/fesm2022/updevs-components-table.mjs.map +1 -0
  507. package/fesm2022/updevs-components.mjs +33 -0
  508. package/fesm2022/updevs-components.mjs.map +1 -0
  509. package/form/components/dynamic-field/dynamic-field.component.d.ts +57 -0
  510. package/form/form.component.d.ts +60 -0
  511. package/form/models/checkbox-field.model.d.ts +4 -0
  512. package/form/models/checkbox-group-field.model.d.ts +6 -0
  513. package/form/models/dynamic-field.model.d.ts +28 -0
  514. package/form/models/enums/dynamic-field.type.d.ts +13 -0
  515. package/form/models/enums/public-api.d.ts +1 -0
  516. package/form/models/file-upload-field.model.d.ts +16 -0
  517. package/form/models/form-config.d.ts +2 -0
  518. package/form/models/form-row.model.d.ts +10 -0
  519. package/form/models/input-field.model.d.ts +9 -0
  520. package/form/models/masked-input-field.model.d.ts +6 -0
  521. package/form/models/public-api.d.ts +15 -0
  522. package/form/models/radio-field.model.d.ts +4 -0
  523. package/form/models/radio-group-field.model.d.ts +6 -0
  524. package/form/models/select-field.model.d.ts +28 -0
  525. package/form/models/single-select-field.model.d.ts +4 -0
  526. package/form/models/textarea-field.model.d.ts +10 -0
  527. package/form/models/validator-config.d.ts +5 -0
  528. package/form/public-api.d.ts +3 -0
  529. package/form/tools/errors-helper.d.ts +11 -0
  530. package/form/upd-form.module.d.ts +22 -0
  531. package/form-controls/abstractions/base-control.d.ts +29 -0
  532. package/form-controls/abstractions/index.d.ts +2 -0
  533. package/form-controls/abstractions/public-api.d.ts +2 -0
  534. package/form-controls/checkbox/checkbox.component.d.ts +19 -0
  535. package/form-controls/checkbox/{src/public-api.ts → public-api.d.ts} +0 -1
  536. package/form-controls/checkbox/upd-checkbox.module.d.ts +10 -0
  537. package/form-controls/date-picker/date-picker.component.d.ts +66 -0
  538. package/form-controls/date-picker/public-api.d.ts +2 -0
  539. package/form-controls/date-picker/upd-date-picker.module.d.ts +12 -0
  540. package/form-controls/file-upload/file-upload-changed.event.d.ts +4 -0
  541. package/form-controls/file-upload/file-upload.component.d.ts +46 -0
  542. package/form-controls/file-upload/public-api.d.ts +3 -0
  543. package/form-controls/file-upload/upd-file-upload.module.d.ts +14 -0
  544. package/form-controls/input/directives/input-append.directive.d.ts +7 -0
  545. package/form-controls/input/directives/input-prepend.directive.d.ts +7 -0
  546. package/form-controls/input/input.component.d.ts +64 -0
  547. package/form-controls/input/upd-input.module.d.ts +13 -0
  548. package/form-controls/radio/radio.component.d.ts +17 -0
  549. package/form-controls/radio/upd-radio.module.d.ts +10 -0
  550. package/form-controls/select/components/multiple/select-multiple.component.d.ts +25 -0
  551. package/form-controls/select/components/single/select.component.d.ts +26 -0
  552. package/form-controls/select/models/abstractions/base-select.component.d.ts +77 -0
  553. package/form-controls/select/models/defaults.d.ts +8 -0
  554. package/form-controls/select/{src/models/public-api.ts → models/public-api.d.ts} +1 -0
  555. package/form-controls/select/{src/models/select-item.ts → models/select-item.d.ts} +0 -1
  556. package/form-controls/select/upd-select.module.d.ts +16 -0
  557. package/form-controls/textarea/textarea.component.d.ts +19 -0
  558. package/form-controls/textarea/upd-textarea.module.d.ts +8 -0
  559. package/form-controls/time-picker/time-picker.component.d.ts +78 -0
  560. package/form-controls/time-picker/time-selector/time-selector.component.d.ts +69 -0
  561. package/form-controls/time-picker/upd-time-picker.module.d.ts +17 -0
  562. package/index.d.ts +2 -0
  563. package/layout/abstractions/base-page.component.d.ts +12 -0
  564. package/layout/abstractions/base.layout.d.ts +15 -0
  565. package/layout/index.d.ts +1 -0
  566. package/layout/layouts/blank-layout/blank-layout.component.d.ts +9 -0
  567. package/layout/layouts/blank-layout/blank-layout.module.d.ts +15 -0
  568. package/layout/layouts/vertical-sidebar-layout/vertical-sidebar-layout.component.d.ts +6 -0
  569. package/layout/layouts/vertical-sidebar-layout/vertical-sidebar-layout.module.d.ts +21 -0
  570. package/layout/models/login-page-config.model.d.ts +46 -0
  571. package/layout/models/login-page.config.d.ts +44 -0
  572. package/layout/{src/models/public-api.ts → models/public-api.d.ts} +1 -0
  573. package/layout/models/security-layout-config.model.d.ts +12 -0
  574. package/layout/models/security-layout.config.d.ts +10 -0
  575. package/layout/models/upd-layout-config.model.d.ts +48 -0
  576. package/layout/{src/models/upd-layout.config.ts → models/upd-layout.config.d.ts} +9 -0
  577. package/layout/pages/auth-flow/auth-flow-routing.module.d.ts +12 -0
  578. package/layout/pages/auth-flow/auth-flow.module.d.ts +20 -0
  579. package/layout/pages/auth-flow/logged-out/logged-out.component.d.ts +5 -0
  580. package/layout/pages/auth-flow/login/login.component.d.ts +26 -0
  581. package/layout/pages/auth-flow/oauth-callback/oauth-callback.component.d.ts +5 -0
  582. package/layout/partials/footer/footer.component.d.ts +34 -0
  583. package/layout/partials/footer/footer.module.d.ts +9 -0
  584. package/layout/partials/footer/public-api.d.ts +2 -0
  585. package/layout/partials/header/header.component.d.ts +51 -0
  586. package/layout/partials/header/header.module.d.ts +12 -0
  587. package/layout/{src/partials/header/public-api.ts → partials/header/public-api.d.ts} +1 -0
  588. package/layout/partials/page-header/page-header.component.d.ts +7 -0
  589. package/layout/partials/sidebar/sidebar.component.d.ts +46 -0
  590. package/layout/services/upd-layout-config.service.d.ts +15 -0
  591. package/layout/{src/tools/layout.constants.ts → tools/layout.constants.d.ts} +3 -6
  592. package/layout/upd-layout.module.d.ts +19 -0
  593. package/lib/index.d.ts +2 -0
  594. package/lib/models/public-api.d.ts +2 -0
  595. package/lib/models/row-column-size.d.ts +23 -0
  596. package/lib/public-api.d.ts +5 -0
  597. package/lib/tools/column-size.helper.d.ts +6 -0
  598. package/lib/tools/public-api.d.ts +2 -0
  599. package/{src/lib/types/component-size.type.ts → lib/types/component-size.type.d.ts} +1 -0
  600. package/lib/types/horizontal-vertical.type.d.ts +2 -0
  601. package/lib/types/public-api.d.ts +4 -0
  602. package/lib/types/validation-status.type.d.ts +2 -0
  603. package/lib/upd-components.module.d.ts +7 -0
  604. package/link/index.d.ts +1 -0
  605. package/link/link.component.d.ts +22 -0
  606. package/link/upd-link.module.d.ts +8 -0
  607. package/list/index.d.ts +1 -0
  608. package/list/list.component.d.ts +46 -0
  609. package/list/{src/models/list-item.ts → models/list-item.d.ts} +3 -4
  610. package/list/models/list-item.model.d.ts +25 -0
  611. package/list/upd-list.module.d.ts +13 -0
  612. package/modal/components/modal-container/modal-container.component.d.ts +74 -0
  613. package/modal/index.d.ts +1 -0
  614. package/modal/models/base.modal.d.ts +8 -0
  615. package/modal/models/modal-config.model.d.ts +32 -0
  616. package/modal/models/modal-ref.d.ts +6 -0
  617. package/modal/models/modal.config.d.ts +30 -0
  618. package/modal/models/public-api.d.ts +3 -0
  619. package/modal/public-api.d.ts +3 -0
  620. package/modal/services/modal-alert.service.d.ts +22 -0
  621. package/modal/services/modal.service.d.ts +12 -0
  622. package/modal/services/public-api.d.ts +2 -0
  623. package/modal/types/modal-footer-style.type.d.ts +1 -0
  624. package/modal/types/modal-size.type.d.ts +1 -0
  625. package/modal/upd-modal.module.d.ts +18 -0
  626. package/package.json +175 -21
  627. package/paginator/index.d.ts +1 -0
  628. package/paginator/paginator.component.d.ts +42 -0
  629. package/paginator/public-api.d.ts +2 -0
  630. package/paginator/upd-paginator.module.d.ts +14 -0
  631. package/popover/index.d.ts +1 -0
  632. package/popover/popover.component.d.ts +22 -0
  633. package/popover/popover.directive.d.ts +33 -0
  634. package/popover/upd-popover.module.d.ts +9 -0
  635. package/pricing-cards/index.d.ts +1 -0
  636. package/pricing-cards/models/price-item-feature.model.d.ts +5 -0
  637. package/pricing-cards/models/price-item-features-group.model.d.ts +5 -0
  638. package/pricing-cards/models/price-item-tag.model.d.ts +6 -0
  639. package/pricing-cards/models/price-item.model.d.ts +20 -0
  640. package/pricing-cards/models/public-api.d.ts +4 -0
  641. package/pricing-cards/pricing-cards.component.d.ts +11 -0
  642. package/pricing-cards/public-api.d.ts +3 -0
  643. package/pricing-cards/upd-pricing-cards.module.d.ts +12 -0
  644. package/public-api.d.ts +2 -0
  645. package/table/abstractions/base-column.model.d.ts +31 -0
  646. package/table/abstractions/base.column.d.ts +26 -0
  647. package/table/abstractions/filters-operands.service.d.ts +8 -0
  648. package/table/abstractions/public-api.d.ts +2 -0
  649. package/table/components/columns/boolean-column/boolean-column.component.d.ts +9 -0
  650. package/table/components/columns/date-time-column/date-time-column.component.d.ts +7 -0
  651. package/table/components/columns/number-column/number-column.component.d.ts +7 -0
  652. package/table/components/columns/text-column/text-column.component.d.ts +9 -0
  653. package/table/components/columns-manager/columns-manager.component.d.ts +15 -0
  654. package/table/components/filter-row/filter-row.component.d.ts +40 -0
  655. package/table/components/save-search/save-search.component.d.ts +17 -0
  656. package/table/components/search-section/search-section.component.d.ts +36 -0
  657. package/table/directives/public-api.d.ts +1 -0
  658. package/table/directives/table-column.directive.d.ts +14 -0
  659. package/table/index.d.ts +1 -0
  660. package/table/models/columns/boolean-column.model.d.ts +15 -0
  661. package/table/models/columns/date-time-column.model.d.ts +8 -0
  662. package/table/models/columns/guid-column.model.d.ts +4 -0
  663. package/table/models/columns/image-column.model.d.ts +6 -0
  664. package/table/models/columns/number-column.model.d.ts +8 -0
  665. package/table/models/columns/public-api.d.ts +6 -0
  666. package/table/models/columns/text-column.model.d.ts +6 -0
  667. package/table/models/enums/column-type.enum.d.ts +13 -0
  668. package/table/models/enums/public-api.d.ts +1 -0
  669. package/table/models/filter-item.model.d.ts +6 -0
  670. package/table/models/filter-operand.config.d.ts +9 -0
  671. package/table/models/operands-lists/boolean-filter-operands-list.model.d.ts +6 -0
  672. package/table/models/operands-lists/date-filter-operands-list.model.d.ts +6 -0
  673. package/table/models/operands-lists/date-or-number-operands-list.config.d.ts +5 -0
  674. package/table/models/operands-lists/filter-operands-list.config.d.ts +5 -0
  675. package/table/models/operands-lists/guid-filter-operands-list.model.d.ts +6 -0
  676. package/table/models/operands-lists/number-filter-operands-list.model.d.ts +6 -0
  677. package/table/models/operands-lists/string-filter-operands-list.model.d.ts +6 -0
  678. package/table/models/public-api.d.ts +4 -0
  679. package/table/models/saved-view.model.d.ts +11 -0
  680. package/table/models/table-config.model.d.ts +33 -0
  681. package/table/models/table.config.d.ts +31 -0
  682. package/table/models/upd-table-config.model.d.ts +6 -0
  683. package/table/models/upd-table.config.d.ts +6 -0
  684. package/table/public-api.d.ts +5 -0
  685. package/table/services/default-filters-operands.service.d.ts +17 -0
  686. package/table/services/storages/saved-views.storage.d.ts +19 -0
  687. package/table/services/stores/filters-operands.store.d.ts +11 -0
  688. package/table/services/upd-table-config.service.d.ts +12 -0
  689. package/table/table.component.d.ts +81 -0
  690. package/table/tools/filters.tools.d.ts +9 -0
  691. package/table/tools/table.constants.d.ts +15 -0
  692. package/table/upd-table.module.d.ts +40 -0
  693. package/CHANGELOG.md +0 -8
  694. package/button/index.ts +0 -1
  695. package/button/ng-package.json +0 -7
  696. package/button/src/button.component.html +0 -8
  697. package/button/src/button.component.scss +0 -5
  698. package/button/src/button.component.spec.ts +0 -23
  699. package/button/src/button.component.ts +0 -154
  700. package/button/src/upd-button.module.ts +0 -17
  701. package/card/index.ts +0 -1
  702. package/card/ng-package.json +0 -7
  703. package/card/src/card.component.html +0 -105
  704. package/card/src/card.component.scss +0 -47
  705. package/card/src/card.component.spec.ts +0 -23
  706. package/card/src/card.component.ts +0 -112
  707. package/card/src/directives/card-actions.directive.spec.ts +0 -8
  708. package/card/src/directives/card-actions.directive.ts +0 -11
  709. package/card/src/directives/card-footer.directive.spec.ts +0 -8
  710. package/card/src/directives/card-footer.directive.ts +0 -11
  711. package/card/src/directives/card-header.directive.spec.ts +0 -8
  712. package/card/src/directives/card-header.directive.ts +0 -11
  713. package/card/src/directives/card-image.directive.spec.ts +0 -8
  714. package/card/src/directives/card-image.directive.ts +0 -11
  715. package/card/src/upd-card.module.ts +0 -32
  716. package/dropdown/index.ts +0 -1
  717. package/dropdown/ng-package.json +0 -7
  718. package/dropdown/src/dropdown.component.html +0 -32
  719. package/dropdown/src/dropdown.component.scss +0 -19
  720. package/dropdown/src/dropdown.component.spec.ts +0 -23
  721. package/dropdown/src/dropdown.component.ts +0 -182
  722. package/dropdown/src/models/public-api.ts +0 -2
  723. package/dropdown/src/upd-dropdown.module.ts +0 -25
  724. package/form/index.ts +0 -1
  725. package/form/ng-package.json +0 -7
  726. package/form/src/form.module.ts +0 -10
  727. package/form/src/public-api.ts +0 -1
  728. package/form-controls/checkbox/index.ts +0 -1
  729. package/form-controls/checkbox/ng-package.json +0 -7
  730. package/form-controls/checkbox/src/checkbox.component.html +0 -7
  731. package/form-controls/checkbox/src/checkbox.component.spec.ts +0 -23
  732. package/form-controls/checkbox/src/checkbox.component.ts +0 -48
  733. package/form-controls/checkbox/src/upd-checkbox.module.ts +0 -19
  734. package/form-controls/input/index.ts +0 -1
  735. package/form-controls/input/ng-package.json +0 -7
  736. package/form-controls/input/src/directives/input-append.directive.spec.ts +0 -8
  737. package/form-controls/input/src/directives/input-append.directive.ts +0 -11
  738. package/form-controls/input/src/directives/input-prepend.directive.spec.ts +0 -8
  739. package/form-controls/input/src/directives/input-prepend.directive.ts +0 -11
  740. package/form-controls/input/src/input.component.html +0 -82
  741. package/form-controls/input/src/input.component.scss +0 -13
  742. package/form-controls/input/src/input.component.spec.ts +0 -23
  743. package/form-controls/input/src/input.component.ts +0 -124
  744. package/form-controls/input/src/upd-input.module.ts +0 -29
  745. package/form-controls/radio/index.ts +0 -1
  746. package/form-controls/radio/ng-package.json +0 -7
  747. package/form-controls/radio/src/radio.component.html +0 -7
  748. package/form-controls/radio/src/radio.component.scss +0 -0
  749. package/form-controls/radio/src/radio.component.spec.ts +0 -23
  750. package/form-controls/radio/src/radio.component.ts +0 -47
  751. package/form-controls/radio/src/upd-radio.module.ts +0 -17
  752. package/form-controls/select/index.ts +0 -1
  753. package/form-controls/select/ng-package.json +0 -7
  754. package/form-controls/select/src/components/multiple/select-multiple.component.html +0 -41
  755. package/form-controls/select/src/components/multiple/select-multiple.component.scss +0 -6
  756. package/form-controls/select/src/components/multiple/select-multiple.component.spec.ts +0 -21
  757. package/form-controls/select/src/components/multiple/select-multiple.component.ts +0 -69
  758. package/form-controls/select/src/components/shared.scss +0 -40
  759. package/form-controls/select/src/components/single/select.component.html +0 -53
  760. package/form-controls/select/src/components/single/select.component.scss +0 -3
  761. package/form-controls/select/src/components/single/select.component.spec.ts +0 -23
  762. package/form-controls/select/src/components/single/select.component.ts +0 -58
  763. package/form-controls/select/src/models/abstractions/base-select.component.ts +0 -259
  764. package/form-controls/select/src/upd-select.module.ts +0 -32
  765. package/form-controls/textarea/index.ts +0 -1
  766. package/form-controls/textarea/ng-package.json +0 -7
  767. package/form-controls/textarea/src/textarea.component.html +0 -8
  768. package/form-controls/textarea/src/textarea.component.scss +0 -0
  769. package/form-controls/textarea/src/textarea.component.spec.ts +0 -23
  770. package/form-controls/textarea/src/textarea.component.ts +0 -47
  771. package/form-controls/textarea/src/upd-textarea.module.ts +0 -17
  772. package/form-controls/time-picker/index.ts +0 -1
  773. package/form-controls/time-picker/ng-package.json +0 -7
  774. package/form-controls/time-picker/src/time-picker.component.html +0 -17
  775. package/form-controls/time-picker/src/time-picker.component.scss +0 -10
  776. package/form-controls/time-picker/src/time-picker.component.spec.ts +0 -21
  777. package/form-controls/time-picker/src/time-picker.component.ts +0 -110
  778. package/form-controls/time-picker/src/time-selector/time-selector.component.html +0 -44
  779. package/form-controls/time-picker/src/time-selector/time-selector.component.scss +0 -47
  780. package/form-controls/time-picker/src/time-selector/time-selector.component.spec.ts +0 -21
  781. package/form-controls/time-picker/src/time-selector/time-selector.component.ts +0 -107
  782. package/form-controls/time-picker/src/upd-time-picker.module.ts +0 -39
  783. package/index.ts +0 -1
  784. package/layout/index.ts +0 -1
  785. package/layout/ng-package.json +0 -7
  786. package/layout/src/abstractions/base-page.component.ts +0 -21
  787. package/layout/src/assets/i18n/en.json +0 -5
  788. package/layout/src/assets/i18n/pt.json +0 -5
  789. package/layout/src/layouts/blank-layout/blank-layout.component.html +0 -1
  790. package/layout/src/layouts/blank-layout/blank-layout.component.scss +0 -0
  791. package/layout/src/layouts/blank-layout/blank-layout.component.spec.ts +0 -23
  792. package/layout/src/layouts/blank-layout/blank-layout.component.ts +0 -10
  793. package/layout/src/layouts/blank-layout/blank-layout.module.ts +0 -17
  794. package/layout/src/layouts/vertical-sidebar-layout/vertical-sidebar-layout.component.html +0 -14
  795. package/layout/src/layouts/vertical-sidebar-layout/vertical-sidebar-layout.component.scss +0 -0
  796. package/layout/src/layouts/vertical-sidebar-layout/vertical-sidebar-layout.component.spec.ts +0 -23
  797. package/layout/src/layouts/vertical-sidebar-layout/vertical-sidebar-layout.component.ts +0 -31
  798. package/layout/src/layouts/vertical-sidebar-layout/vertical-sidebar-layout.module.ts +0 -52
  799. package/layout/src/models/upd-layout-config.model.ts +0 -71
  800. package/layout/src/pages/auth-flow/auth-flow-routing.module.ts +0 -21
  801. package/layout/src/pages/auth-flow/auth-flow.module.ts +0 -29
  802. package/layout/src/pages/auth-flow/logged-out/logged-out.component.html +0 -1
  803. package/layout/src/pages/auth-flow/logged-out/logged-out.component.scss +0 -0
  804. package/layout/src/pages/auth-flow/logged-out/logged-out.component.spec.ts +0 -23
  805. package/layout/src/pages/auth-flow/logged-out/logged-out.component.ts +0 -10
  806. package/layout/src/pages/auth-flow/login/login.component.html +0 -96
  807. package/layout/src/pages/auth-flow/login/login.component.scss +0 -0
  808. package/layout/src/pages/auth-flow/login/login.component.spec.ts +0 -23
  809. package/layout/src/pages/auth-flow/login/login.component.ts +0 -26
  810. package/layout/src/pages/auth-flow/oauth-callback/oauth-callback.component.html +0 -1
  811. package/layout/src/pages/auth-flow/oauth-callback/oauth-callback.component.scss +0 -0
  812. package/layout/src/pages/auth-flow/oauth-callback/oauth-callback.component.spec.ts +0 -23
  813. package/layout/src/pages/auth-flow/oauth-callback/oauth-callback.component.ts +0 -10
  814. package/layout/src/partials/footer/footer-copyright.directive.spec.ts +0 -8
  815. package/layout/src/partials/footer/footer-copyright.directive.ts +0 -9
  816. package/layout/src/partials/footer/footer.component.html +0 -30
  817. package/layout/src/partials/footer/footer.component.scss +0 -0
  818. package/layout/src/partials/footer/footer.component.spec.ts +0 -23
  819. package/layout/src/partials/footer/footer.component.ts +0 -73
  820. package/layout/src/partials/footer/public-api.ts +0 -2
  821. package/layout/src/partials/header/header.component.html +0 -163
  822. package/layout/src/partials/header/header.component.scss +0 -0
  823. package/layout/src/partials/header/header.component.spec.ts +0 -23
  824. package/layout/src/partials/header/header.component.ts +0 -86
  825. package/layout/src/partials/page-header/page-header.component.html +0 -19
  826. package/layout/src/partials/page-header/page-header.component.scss +0 -0
  827. package/layout/src/partials/page-header/page-header.component.spec.ts +0 -23
  828. package/layout/src/partials/page-header/page-header.component.ts +0 -11
  829. package/layout/src/partials/sidebar/sidebar.component.html +0 -62
  830. package/layout/src/partials/sidebar/sidebar.component.scss +0 -0
  831. package/layout/src/partials/sidebar/sidebar.component.spec.ts +0 -23
  832. package/layout/src/partials/sidebar/sidebar.component.ts +0 -161
  833. package/layout/src/services/upd-layout-config.service.spec.ts +0 -16
  834. package/layout/src/services/upd-layout-config.service.ts +0 -20
  835. package/layout/src/upd-layout.module.ts +0 -34
  836. package/link/index.ts +0 -1
  837. package/link/ng-package.json +0 -7
  838. package/link/src/link.component.html +0 -3
  839. package/link/src/link.component.scss +0 -3
  840. package/link/src/link.component.spec.ts +0 -23
  841. package/link/src/link.component.ts +0 -48
  842. package/link/src/upd-link.module.ts +0 -17
  843. package/list/index.ts +0 -1
  844. package/list/ng-package.json +0 -7
  845. package/list/src/assets/i18n/en.json +0 -5
  846. package/list/src/assets/i18n/pt.json +0 -5
  847. package/list/src/list.component.html +0 -58
  848. package/list/src/list.component.scss +0 -21
  849. package/list/src/list.component.spec.ts +0 -23
  850. package/list/src/list.component.ts +0 -147
  851. package/list/src/models/list-item.model.ts +0 -35
  852. package/list/src/upd-list.module.ts +0 -30
  853. package/ng-package.json +0 -10
  854. package/popover/index.ts +0 -1
  855. package/popover/ng-package.json +0 -7
  856. package/popover/src/popover.component.html +0 -20
  857. package/popover/src/popover.component.scss +0 -8
  858. package/popover/src/popover.component.spec.ts +0 -23
  859. package/popover/src/popover.component.ts +0 -53
  860. package/popover/src/popover.directive.spec.ts +0 -8
  861. package/popover/src/popover.directive.ts +0 -128
  862. package/popover/src/upd-popover.module.ts +0 -20
  863. package/src/lib/public-api.ts +0 -2
  864. package/src/lib/types/public-api.ts +0 -2
  865. package/src/lib/types/validation-status.type.ts +0 -1
  866. package/src/lib/upd-components.module.ts +0 -6
  867. package/src/public-api.ts +0 -1
  868. package/tsconfig.lib.json +0 -14
  869. package/tsconfig.lib.prod.json +0 -10
  870. package/tsconfig.spec.json +0 -14
  871. /package/{form-controls/checkbox/src/checkbox.component.scss → assets/styles/marketing/_filters.scss} +0 -0
  872. /package/{button/src/index.ts → badge/index.d.ts} +0 -0
  873. /package/{card/src/index.ts → button/index.d.ts} +0 -0
  874. /package/button/{src/public-api.ts → public-api.d.ts} +0 -0
  875. /package/{dropdown/src/index.ts → calendar/index.d.ts} +0 -0
  876. /package/card/{src/directives/public-api.ts → directives/public-api.d.ts} +0 -0
  877. /package/{form-controls/checkbox/src/index.ts → card/index.d.ts} +0 -0
  878. /package/card/{src/types/card-state.type.ts → types/card-state.type.d.ts} +0 -0
  879. /package/card/{src/types/card-style.type.ts → types/card-style.type.d.ts} +0 -0
  880. /package/card/{src/types/hover-effect.type.ts → types/hover-effect.type.d.ts} +0 -0
  881. /package/card/{src/types/public-api.ts → types/public-api.d.ts} +0 -0
  882. /package/card/{src/types/ribbon-style.type.ts → types/ribbon-style.type.d.ts} +0 -0
  883. /package/card/{src/types/status-position.type.ts → types/status-position.type.d.ts} +0 -0
  884. /package/{form-controls/input/src/index.ts → drag-and-drop/index.d.ts} +0 -0
  885. /package/{form-controls/radio/src/index.ts → dropdown/index.d.ts} +0 -0
  886. /package/dropdown/{src/public-api.ts → public-api.d.ts} +0 -0
  887. /package/{form-controls/time-picker/src → esm2022/form-controls/time-picker}/assets/i18n/en.json +0 -0
  888. /package/{form-controls/time-picker/src → esm2022/form-controls/time-picker}/assets/i18n/pt.json +0 -0
  889. /package/{src/lib/index.ts → form/index.d.ts} +0 -0
  890. /package/form-controls/{select/src/index.ts → checkbox/index.d.ts} +0 -0
  891. /package/form-controls/{textarea/src/index.ts → date-picker/index.d.ts} +0 -0
  892. /package/form-controls/{time-picker/src/index.ts → file-upload/index.d.ts} +0 -0
  893. /package/form-controls/input/{src/directives/public-api.ts → directives/public-api.d.ts} +0 -0
  894. /package/{form/src/index.ts → form-controls/input/index.d.ts} +0 -0
  895. /package/form-controls/input/{src/public-api.ts → public-api.d.ts} +0 -0
  896. /package/form-controls/input/{src/types/input.type.ts → types/input.type.d.ts} +0 -0
  897. /package/form-controls/input/{src/types/loader-position.type.ts → types/loader-position.type.d.ts} +0 -0
  898. /package/form-controls/input/{src/types/public-api.ts → types/public-api.d.ts} +0 -0
  899. /package/{layout/src/index.ts → form-controls/radio/index.d.ts} +0 -0
  900. /package/form-controls/radio/{src/public-api.ts → public-api.d.ts} +0 -0
  901. /package/{link/src/index.ts → form-controls/select/index.d.ts} +0 -0
  902. /package/form-controls/select/{src/public-api.ts → public-api.d.ts} +0 -0
  903. /package/{list/src/index.ts → form-controls/textarea/index.d.ts} +0 -0
  904. /package/form-controls/textarea/{src/public-api.ts → public-api.d.ts} +0 -0
  905. /package/{popover/src/index.ts → form-controls/time-picker/index.d.ts} +0 -0
  906. /package/form-controls/time-picker/{src/public-api.ts → public-api.d.ts} +0 -0
  907. /package/layout/{src/abstractions/public-api.ts → abstractions/public-api.d.ts} +0 -0
  908. /package/layout/{src/layouts/public-api.ts → layouts/public-api.d.ts} +0 -0
  909. /package/layout/{src/pages/auth-flow/public-api.ts → pages/auth-flow/public-api.d.ts} +0 -0
  910. /package/layout/{src/pages/public-api.ts → pages/public-api.d.ts} +0 -0
  911. /package/layout/{src/partials/header/header-style.type.ts → partials/header/header-style.type.d.ts} +0 -0
  912. /package/layout/{src/partials/page-header/public-api.ts → partials/page-header/public-api.d.ts} +0 -0
  913. /package/layout/{src/partials/public-api.ts → partials/public-api.d.ts} +0 -0
  914. /package/layout/{src/partials/sidebar/public-api.ts → partials/sidebar/public-api.d.ts} +0 -0
  915. /package/layout/{src/public-api.ts → public-api.d.ts} +0 -0
  916. /package/layout/{src/services/public-api.ts → services/public-api.d.ts} +0 -0
  917. /package/link/{src/public-api.ts → public-api.d.ts} +0 -0
  918. /package/link/{src/target.type.ts → target.type.d.ts} +0 -0
  919. /package/list/{src/models/badge-position.type.ts → models/badge-position.type.d.ts} +0 -0
  920. /package/list/{src/models/public-api.ts → models/public-api.d.ts} +0 -0
  921. /package/list/{src/public-api.ts → public-api.d.ts} +0 -0
  922. /package/popover/{src/public-api.ts → public-api.d.ts} +0 -0
@@ -0,0 +1,417 @@
1
+ import * as i0 from '@angular/core';
2
+ import { EventEmitter, viewChild, ElementRef, input, computed, inject, Renderer2, NgZone, effect, RendererStyleFlags2, Output, HostBinding, Directive, Input, ViewEncapsulation, Component, NgModule } from '@angular/core';
3
+ import { DomEventsService, PositioningService, UpdCoreLayoutModule } from '@updevs/sdk/layout';
4
+ import { Tools } from '@updevs/sdk/core';
5
+ import { ColumnSizeHelper } from '@updevs/components';
6
+ import { BaseControl } from '@updevs/components/form-controls/abstractions';
7
+ import { Subject, tap, debounceTime } from 'rxjs';
8
+ import * as i1 from '@angular/common';
9
+ import { CommonModule } from '@angular/common';
10
+ import * as i2 from '@updevs/components/list';
11
+ import { UpdListModule } from '@updevs/components/list';
12
+ import * as i3 from '@updevs/components/form-controls/input';
13
+ import { UpdInputModule } from '@updevs/components/form-controls/input';
14
+ import * as i4 from '@updevs/icons';
15
+ import { UpdIconsModule } from '@updevs/icons';
16
+ import * as i5 from '@updevs/components/button';
17
+ import { UpdButtonModule } from '@updevs/components/button';
18
+ import * as i6 from '@updevs/components/popover';
19
+ import { UpdPopoverModule } from '@updevs/components/popover';
20
+ import { TranslocoModule } from '@jsverse/transloco';
21
+
22
+ class Defaults {
23
+ static { this.dropdownMaxHeight = 300; }
24
+ static { this.typeaheadDebounce = 200; }
25
+ static { this.shouldAutoSearch = true; }
26
+ static { this.shouldCloseOnOutsideClick = true; }
27
+ static { this.layout = 'vertical'; }
28
+ }
29
+
30
+ var Utils = Tools.Utils;
31
+ class BaseSelectComponent extends BaseControl {
32
+ get wrapperClasses() {
33
+ return this.hostWrapperClasses();
34
+ }
35
+ get isDropdownOpen() {
36
+ return this._isDropdownOpen;
37
+ }
38
+ set isDropdownOpen(value) {
39
+ this._isDropdownOpen = value;
40
+ this.dropdownOpenStatusChange.emit(value);
41
+ if (value) {
42
+ this.dropdownClasses += ' select-dropdown-content-open';
43
+ }
44
+ else {
45
+ this.dropdownClasses = this.dropdownClasses.replace(' select-dropdown-content-open', '');
46
+ }
47
+ }
48
+ get labelSizeClasses() {
49
+ if (this.layout() !== 'horizontal') {
50
+ return 'form-label';
51
+ }
52
+ return ColumnSizeHelper.getClasses('col-form-label', ColumnSizeHelper.getSizeClasses(this.labelColSize(), 3));
53
+ }
54
+ constructor() {
55
+ super();
56
+ this.dropdownOpenStatusChange = new EventEmitter();
57
+ this.componentBox = viewChild('componentBox', { read: ElementRef });
58
+ this.searchBox = viewChild('searchBox', { read: ElementRef });
59
+ this.searchBoxChild = viewChild('searchBoxChild', { read: ElementRef });
60
+ this.list = viewChild('list', { read: ElementRef });
61
+ /**
62
+ * Select items.
63
+ * If provided, the select will be considered static.
64
+ */
65
+ this.items = input();
66
+ /**
67
+ * Store used to load/filter the items.
68
+ */
69
+ this.store = input();
70
+ /**
71
+ * Observable used to load/filter the items.
72
+ */
73
+ this.observable = input();
74
+ /**
75
+ * Name of the property in the object that represents the ID/key of the option.
76
+ * **Note:** used only for remote data.
77
+ */
78
+ this.itemKey = input();
79
+ /**
80
+ * Name of the property in the object that represents the value/description of the option.
81
+ * **Note:** used only for remote data.
82
+ */
83
+ this.itemValue = input();
84
+ /**
85
+ * Maximum height of the dropdown.
86
+ */
87
+ this.dropdownMaxHeight = input(Defaults.dropdownMaxHeight);
88
+ this.typeaheadDebounce = input(Defaults.typeaheadDebounce);
89
+ this.shouldAutoSearch = input(Defaults.shouldAutoSearch);
90
+ this.shouldCloseOnOutsideClick = input(Defaults.shouldCloseOnOutsideClick);
91
+ this.layout = input(Defaults.layout);
92
+ this.layoutClasses = computed(() => this.layout() === 'horizontal' ? ['col', 'align-self-center'] : []);
93
+ this.isLoading = false;
94
+ this.localItems = [];
95
+ this.listItems = [];
96
+ this.dropdownClasses = 'select-dropdown-content remove-top-radius';
97
+ this._localBackupItems = [];
98
+ this.hasExternalList = false;
99
+ this._isDropdownOpen = false;
100
+ this.hostWrapperClasses = computed(() => this.layout() === 'horizontal' ? 'row' : '');
101
+ this.searchInputSubject = new Subject();
102
+ this.renderer = inject(Renderer2);
103
+ this.ngZone = inject(NgZone);
104
+ this.domEventsService = inject(DomEventsService);
105
+ this.positioningService = inject(PositioningService);
106
+ effect(() => {
107
+ if (!!this.items()) {
108
+ this._setupLocalItems(this.items());
109
+ }
110
+ });
111
+ }
112
+ ngOnInit() {
113
+ this.hasExternalList = !this.observable() && !this.store();
114
+ if (this.shouldAutoSearch()) {
115
+ if (this.hasExternalList) {
116
+ this._setupLocalItems(this.items());
117
+ }
118
+ else {
119
+ this.searchRemote();
120
+ }
121
+ }
122
+ if (this.hasExternalList) {
123
+ return;
124
+ }
125
+ const typeaheadSubscription = this.searchInputSubject
126
+ .pipe(tap(value => this._currentTerm = value), debounceTime(this.typeaheadDebounce()))
127
+ .subscribe(() => this.searchRemote());
128
+ this.addSubscriptions(typeaheadSubscription);
129
+ }
130
+ openDropdown() {
131
+ this.isDropdownOpen = true;
132
+ if (this.shouldCloseOnOutsideClick()) {
133
+ const outsideClickSub = this.domEventsService.startOutsideClickListener(() => this.ngZone.run(() => this.isDropdownOpen = false), this.list()?.nativeElement, true, this.componentBox()?.nativeElement, this.searchBox()?.nativeElement);
134
+ this.addSubscriptions(outsideClickSub);
135
+ }
136
+ this.ngZone.runOutsideAngular(() => this.positioningService
137
+ .computePosition(this.componentBox(), this.list(), { placement: 'bottom' })
138
+ .subscribe(resp => this.updatePosition(resp)));
139
+ }
140
+ search(term) {
141
+ if (this.hasExternalList) {
142
+ this.searchLocal();
143
+ }
144
+ else {
145
+ this.searchInputSubject.next(term || '');
146
+ }
147
+ }
148
+ _setupLocalItems(items) {
149
+ this.localItems = Utils.deepCopy(items);
150
+ this._localBackupItems = Utils.deepCopy(items);
151
+ const tempItems = [];
152
+ for (const item of this._localBackupItems) {
153
+ const listItem = this.getListItem(item);
154
+ item.listItem = Object.assign(listItem, {});
155
+ tempItems.push(listItem);
156
+ }
157
+ this.listItems = [...tempItems];
158
+ this.isLoading = false;
159
+ }
160
+ searchLocal() {
161
+ if (!this._currentTerm) {
162
+ this.listItems = Utils.deepCopy(this._localBackupItems.map(li => li.listItem));
163
+ this.localItems = Utils.deepCopy(this._localBackupItems);
164
+ return;
165
+ }
166
+ this.ngZone.run(() => {
167
+ this.listItems = Utils.deepCopy(this._localBackupItems).filter(si => {
168
+ let hasChildrenInSearch = false;
169
+ if ((si.children?.length || 0) > 0) {
170
+ hasChildrenInSearch = si.children.filter(ci => ci.text.toLowerCase().includes(this._currentTerm.toLowerCase())).length > 0;
171
+ }
172
+ return si.text.toLowerCase().includes(this._currentTerm.toLowerCase()) || hasChildrenInSearch;
173
+ }).map(si => {
174
+ const bkpItem = this._localBackupItems.find(lbi => lbi.value === si.value);
175
+ if ((bkpItem?.children?.length || 0) > 0) {
176
+ si.children = [...bkpItem.children].filter(ci => ci.text.toLowerCase().includes(this._currentTerm.toLowerCase()));
177
+ }
178
+ return this.getListItem(si);
179
+ });
180
+ });
181
+ }
182
+ searchRemote() {
183
+ this.isLoading = true;
184
+ const request = { description: this._currentTerm };
185
+ const observable = !!this.observable() ? this.observable()(request) : this.store().search(request);
186
+ observable.subscribe(r => {
187
+ const items = [];
188
+ r.records.forEach(item => {
189
+ items.push({
190
+ value: item[this.itemKey()],
191
+ text: item[this.itemValue()],
192
+ objectData: item
193
+ });
194
+ });
195
+ this._setupLocalItems(items);
196
+ });
197
+ }
198
+ getListItem(item) {
199
+ let listItem;
200
+ if (!!item.listItem) {
201
+ listItem = item.listItem;
202
+ listItem.id = item.value;
203
+ listItem.text = item.text;
204
+ }
205
+ else {
206
+ listItem = {
207
+ id: item.value,
208
+ text: item.text
209
+ };
210
+ }
211
+ if ((item.children?.length || 0) > 0) {
212
+ listItem.children = [...item.children].map(c => this.getListItem(c));
213
+ }
214
+ return listItem;
215
+ }
216
+ updatePosition(result) {
217
+ const componentBox = this.componentBox().nativeElement.getBoundingClientRect();
218
+ const searchBoxChildElement = this.searchBoxChild()?.nativeElement;
219
+ const ddElement = this.list().nativeElement;
220
+ this.renderer.setStyle(searchBoxChildElement, 'width', `${Math.abs(componentBox.width)}px`, RendererStyleFlags2.Important);
221
+ this.renderer.setStyle(ddElement, 'top', `${result.y + searchBoxChildElement.scrollHeight}px`, RendererStyleFlags2.Important);
222
+ this.renderer.setStyle(ddElement, 'left', 0, RendererStyleFlags2.Important);
223
+ this.renderer.setStyle(ddElement, 'width', `${Math.abs(componentBox.width)}px`, RendererStyleFlags2.Important);
224
+ }
225
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: BaseSelectComponent, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
226
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.2.0", version: "18.1.0", type: BaseSelectComponent, inputs: { items: { classPropertyName: "items", publicName: "items", isSignal: true, isRequired: false, transformFunction: null }, store: { classPropertyName: "store", publicName: "store", isSignal: true, isRequired: false, transformFunction: null }, observable: { classPropertyName: "observable", publicName: "observable", isSignal: true, isRequired: false, transformFunction: null }, itemKey: { classPropertyName: "itemKey", publicName: "itemKey", isSignal: true, isRequired: false, transformFunction: null }, itemValue: { classPropertyName: "itemValue", publicName: "itemValue", isSignal: true, isRequired: false, transformFunction: null }, dropdownMaxHeight: { classPropertyName: "dropdownMaxHeight", publicName: "dropdownMaxHeight", isSignal: true, isRequired: false, transformFunction: null }, typeaheadDebounce: { classPropertyName: "typeaheadDebounce", publicName: "typeaheadDebounce", isSignal: true, isRequired: false, transformFunction: null }, shouldAutoSearch: { classPropertyName: "shouldAutoSearch", publicName: "shouldAutoSearch", isSignal: true, isRequired: false, transformFunction: null }, shouldCloseOnOutsideClick: { classPropertyName: "shouldCloseOnOutsideClick", publicName: "shouldCloseOnOutsideClick", isSignal: true, isRequired: false, transformFunction: null }, layout: { classPropertyName: "layout", publicName: "layout", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { dropdownOpenStatusChange: "dropdownOpenStatusChange" }, host: { properties: { "class": "this.wrapperClasses" } }, viewQueries: [{ propertyName: "componentBox", first: true, predicate: ["componentBox"], descendants: true, read: ElementRef, isSignal: true }, { propertyName: "searchBox", first: true, predicate: ["searchBox"], descendants: true, read: ElementRef, isSignal: true }, { propertyName: "searchBoxChild", first: true, predicate: ["searchBoxChild"], descendants: true, read: ElementRef, isSignal: true }, { propertyName: "list", first: true, predicate: ["list"], descendants: true, read: ElementRef, isSignal: true }], usesInheritance: true, ngImport: i0 }); }
227
+ }
228
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: BaseSelectComponent, decorators: [{
229
+ type: Directive
230
+ }], ctorParameters: () => [], propDecorators: { wrapperClasses: [{
231
+ type: HostBinding,
232
+ args: ['class']
233
+ }], dropdownOpenStatusChange: [{
234
+ type: Output
235
+ }] } });
236
+
237
+ class SelectComponent extends BaseSelectComponent {
238
+ set selected(item) {
239
+ this.currentSelection = item;
240
+ }
241
+ constructor() {
242
+ super();
243
+ /**
244
+ * If true, it'll use the default style of the OS, no search capabilities.
245
+ */
246
+ this.useSystemStyle = false;
247
+ this.shouldShowClearButton = true;
248
+ this.isCompact = false;
249
+ /**
250
+ * Triggered when an item is selected.
251
+ */
252
+ this.selectedItem = new EventEmitter();
253
+ }
254
+ onSelectItem(item) {
255
+ this._currentTerm = item.text;
256
+ this.isDropdownOpen = false;
257
+ for (const localBackupItem of this._localBackupItems) {
258
+ if ((localBackupItem.children?.length || 0) > 0) {
259
+ this.currentSelection = localBackupItem.children?.find(c => c.value === item.id);
260
+ if (!!this.currentSelection) {
261
+ break;
262
+ }
263
+ }
264
+ else if (localBackupItem.value === item.id) {
265
+ this.currentSelection = localBackupItem;
266
+ break;
267
+ }
268
+ }
269
+ this.selectedItem.emit(this.currentSelection);
270
+ }
271
+ onSystemSelect(event) {
272
+ // eslint-disable-next-line eqeqeq
273
+ this.currentSelection = this.localItems.find(c => c.value == event.target.value);
274
+ this.selectedItem.emit(this.currentSelection);
275
+ }
276
+ clearSelection() {
277
+ this.currentSelection = undefined;
278
+ this._currentTerm = undefined;
279
+ this.search();
280
+ this.selectedItem.emit(undefined);
281
+ }
282
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: SelectComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
283
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.0", type: SelectComponent, selector: "upd-select", inputs: { useSystemStyle: "useSystemStyle", shouldShowClearButton: "shouldShowClearButton", isCompact: "isCompact", selected: "selected" }, outputs: { selectedItem: "selectedItem" }, usesInheritance: true, ngImport: i0, template: "@if (!!labelText) {\n @if (!!hintText || !!hintTemplate()) {\n <div class=\"row g-2\">\n <div class=\"col-auto\">\n <label [ngClass]=\"labelSizeClasses\">{{ labelText }}</label>\n </div>\n <div class=\"col-auto\">\n <span class=\"form-help\" [updPopover]=\"hintText\" [updPopoverTemplate]=\"hintTemplate()\"\n [updPopoverActAsTooltip]=\"hintAsTooltip()\">\n ?\n </span>\n </div>\n </div>\n } @else {\n <label [ngClass]=\"labelSizeClasses\">{{ labelText }}</label>\n }\n}\n\n@if (!useSystemStyle) {\n <div class=\"dropdown\" [attr.id]=\"name()\" [ngClass]=\"layoutClasses()\">\n @if (!labelText && (!!hintText || !!hintTemplate())) {\n <div class=\"row g-2\">\n <div class=\"col\">\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\n <div #searchBox>\n <div #searchBoxChild [style.visibility]=\"isDropdownOpen ? 'visible' : 'hidden'\" class=\"select-search-box\">\n <upd-input [placeholder]=\"placeholder()\" [isInputGroupFlat]=\"true\" (valueChange)=\"search($event)\">\n <ng-template updInputPrepend>\n <upd-icon tablerIcon=\"search\"></upd-icon>\n </ng-template>\n </upd-input>\n </div>\n </div>\n <upd-list #list [items]=\"listItems\" [maxHeight]=\"dropdownMaxHeight() + 'px'\" (selectedItem)=\"onSelectItem($event)\"\n [wrapperClasses]=\"dropdownClasses\" [isVisible]=\"isDropdownOpen\" [shouldOverflow]=\"true\" [shouldDisplayItemsCounter]=\"true\">\n </upd-list>\n </div>\n} @else {\n @if (!labelText && (!!hintText || !!hintTemplate())) {\n <div class=\"row g-2\">\n <div class=\"col\">\n <ng-template [ngTemplateOutlet]=\"contentDefaultStyleTpl\"></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]=\"contentDefaultStyleTpl\"></ng-template>\n }\n}\n\n<ng-template #contentTpl>\n <div #componentBox class=\"input-group input-group-flat\">\n <div class=\"form-control\" [class.remove-bottom-radius]=\"isDropdownOpen\" [class.disabled]=\"isDisabled()\"\n [class.pe-none]=\"isDisabled()\" [attr.disabled]=\"isDisabled() ? 'disabled' : undefined\" (click)=\"openDropdown()\">\n @if (!!currentSelection) {\n <span>{{ currentSelection.text }}</span>\n }\n </div>\n <div class=\"input-group-text\" [class.remove-bottom-radius]=\"isDropdownOpen\">\n @if (!!currentSelection && shouldShowClearButton) {\n <upd-button [shouldIgnoreBtnClass]=\"true\" [isDisabled]=\"isDisabled()\" (clicked)=\"clearSelection()\"\n customClasses=\"link-secondary\">\n <upd-icon [model]=\"{tablerIcon:'x'}\"></upd-icon>\n </upd-button>\n }\n @if (!isLoading) {\n <upd-button [shouldIgnoreBtnClass]=\"true\" [isDisabled]=\"isDisabled()\" (clicked)=\"openDropdown()\"\n customClasses=\"link-secondary ms-2\">\n <upd-icon [model]=\"{tablerIcon:'chevron-down'}\"></upd-icon>\n </upd-button>\n } @else {\n <div class=\"select-loader-wrapper\">\n <div class=\"spinner-border spinner-border-sm text-muted select-loader\" role=\"status\"></div>\n </div>\n }\n </div>\n </div>\n</ng-template>\n\n<ng-template #contentDefaultStyleTpl>\n <select class=\"form-select\" [class.compact]=\"isCompact\" [attr.placeholder]=\"placeholder()\" [attr.name]=\"name()\"\n [attr.disabled]=\"isDisabled() ? 'disabled' : undefined\" (change)=\"onSystemSelect($event)\">\n @for (item of localItems; track item) {\n @if ((item.children?.length || 0) > 0) {\n <optgroup [label]=\"item.text\">\n @for (child of item.children; track child) {\n <option [attr.selected]=\"!!currentSelection && child.value === currentSelection.value ? true : undefined\"\n [value]=\"child.value\">\n {{ child.text }}\n </option>\n }\n </optgroup>\n } @else {\n <option [attr.selected]=\"!!currentSelection && item.value === currentSelection.value ? true : undefined\"\n [value]=\"item.value\">\n {{ item.text }}\n </option>\n }\n }\n </select>\n</ng-template>\n", styles: [".select-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}.select-dropdown-content-open{display:block!important}.select-loader-wrapper{height:24px}.select-loader-wrapper .select-loader{height:24px;width:24px}.select-search-box{position:absolute;z-index:1;padding:.5rem;margin-top:-1px;background:var(--upd-body-bg);border:var(--upd-border-width) var(--upd-border-style) var(--upd-border-color)}.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}.compact{padding:.25rem 2rem .25rem .75rem!important}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2.ListComponent, selector: "upd-list", inputs: ["items", "shouldOverflow", "isFlush", "isVisible", "isHoverable", "shouldDisplayItemsCounter", "wrapperClasses", "maxHeight"], outputs: ["checkboxChanged", "selectedItem"] }, { kind: "component", type: i3.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"] }, { kind: "directive", type: i3.InputPrependDirective, selector: "ng-template[updInputPrepend]" }, { kind: "component", type: i4.IconComponent, selector: "upd-icon", inputs: ["model", "wrapperClasses", "color", "colorClass", "removeDefaultClasses", "customClasses", "tablerIcon", "tablerIconWeight", "tablerIconType", "tablerIconSize", "heroIcon", "heroIconSize", "heroIconType"] }, { kind: "component", type: i5.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: "directive", type: i6.PopoverDirective, selector: "[updPopover]", inputs: ["updPopover", "updPopoverTitle", "updPopoverTitleTemplate", "updPopoverTemplate", "updPopoverPlacement", "updPopoverCustomClasses", "updPopoverActAsTooltip"] }], encapsulation: i0.ViewEncapsulation.None }); }
284
+ }
285
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: SelectComponent, decorators: [{
286
+ type: Component,
287
+ args: [{ selector: 'upd-select', encapsulation: ViewEncapsulation.None, template: "@if (!!labelText) {\n @if (!!hintText || !!hintTemplate()) {\n <div class=\"row g-2\">\n <div class=\"col-auto\">\n <label [ngClass]=\"labelSizeClasses\">{{ labelText }}</label>\n </div>\n <div class=\"col-auto\">\n <span class=\"form-help\" [updPopover]=\"hintText\" [updPopoverTemplate]=\"hintTemplate()\"\n [updPopoverActAsTooltip]=\"hintAsTooltip()\">\n ?\n </span>\n </div>\n </div>\n } @else {\n <label [ngClass]=\"labelSizeClasses\">{{ labelText }}</label>\n }\n}\n\n@if (!useSystemStyle) {\n <div class=\"dropdown\" [attr.id]=\"name()\" [ngClass]=\"layoutClasses()\">\n @if (!labelText && (!!hintText || !!hintTemplate())) {\n <div class=\"row g-2\">\n <div class=\"col\">\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\n <div #searchBox>\n <div #searchBoxChild [style.visibility]=\"isDropdownOpen ? 'visible' : 'hidden'\" class=\"select-search-box\">\n <upd-input [placeholder]=\"placeholder()\" [isInputGroupFlat]=\"true\" (valueChange)=\"search($event)\">\n <ng-template updInputPrepend>\n <upd-icon tablerIcon=\"search\"></upd-icon>\n </ng-template>\n </upd-input>\n </div>\n </div>\n <upd-list #list [items]=\"listItems\" [maxHeight]=\"dropdownMaxHeight() + 'px'\" (selectedItem)=\"onSelectItem($event)\"\n [wrapperClasses]=\"dropdownClasses\" [isVisible]=\"isDropdownOpen\" [shouldOverflow]=\"true\" [shouldDisplayItemsCounter]=\"true\">\n </upd-list>\n </div>\n} @else {\n @if (!labelText && (!!hintText || !!hintTemplate())) {\n <div class=\"row g-2\">\n <div class=\"col\">\n <ng-template [ngTemplateOutlet]=\"contentDefaultStyleTpl\"></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]=\"contentDefaultStyleTpl\"></ng-template>\n }\n}\n\n<ng-template #contentTpl>\n <div #componentBox class=\"input-group input-group-flat\">\n <div class=\"form-control\" [class.remove-bottom-radius]=\"isDropdownOpen\" [class.disabled]=\"isDisabled()\"\n [class.pe-none]=\"isDisabled()\" [attr.disabled]=\"isDisabled() ? 'disabled' : undefined\" (click)=\"openDropdown()\">\n @if (!!currentSelection) {\n <span>{{ currentSelection.text }}</span>\n }\n </div>\n <div class=\"input-group-text\" [class.remove-bottom-radius]=\"isDropdownOpen\">\n @if (!!currentSelection && shouldShowClearButton) {\n <upd-button [shouldIgnoreBtnClass]=\"true\" [isDisabled]=\"isDisabled()\" (clicked)=\"clearSelection()\"\n customClasses=\"link-secondary\">\n <upd-icon [model]=\"{tablerIcon:'x'}\"></upd-icon>\n </upd-button>\n }\n @if (!isLoading) {\n <upd-button [shouldIgnoreBtnClass]=\"true\" [isDisabled]=\"isDisabled()\" (clicked)=\"openDropdown()\"\n customClasses=\"link-secondary ms-2\">\n <upd-icon [model]=\"{tablerIcon:'chevron-down'}\"></upd-icon>\n </upd-button>\n } @else {\n <div class=\"select-loader-wrapper\">\n <div class=\"spinner-border spinner-border-sm text-muted select-loader\" role=\"status\"></div>\n </div>\n }\n </div>\n </div>\n</ng-template>\n\n<ng-template #contentDefaultStyleTpl>\n <select class=\"form-select\" [class.compact]=\"isCompact\" [attr.placeholder]=\"placeholder()\" [attr.name]=\"name()\"\n [attr.disabled]=\"isDisabled() ? 'disabled' : undefined\" (change)=\"onSystemSelect($event)\">\n @for (item of localItems; track item) {\n @if ((item.children?.length || 0) > 0) {\n <optgroup [label]=\"item.text\">\n @for (child of item.children; track child) {\n <option [attr.selected]=\"!!currentSelection && child.value === currentSelection.value ? true : undefined\"\n [value]=\"child.value\">\n {{ child.text }}\n </option>\n }\n </optgroup>\n } @else {\n <option [attr.selected]=\"!!currentSelection && item.value === currentSelection.value ? true : undefined\"\n [value]=\"item.value\">\n {{ item.text }}\n </option>\n }\n }\n </select>\n</ng-template>\n", styles: [".select-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}.select-dropdown-content-open{display:block!important}.select-loader-wrapper{height:24px}.select-loader-wrapper .select-loader{height:24px;width:24px}.select-search-box{position:absolute;z-index:1;padding:.5rem;margin-top:-1px;background:var(--upd-body-bg);border:var(--upd-border-width) var(--upd-border-style) var(--upd-border-color)}.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}.compact{padding:.25rem 2rem .25rem .75rem!important}\n"] }]
288
+ }], ctorParameters: () => [], propDecorators: { useSystemStyle: [{
289
+ type: Input
290
+ }], shouldShowClearButton: [{
291
+ type: Input
292
+ }], isCompact: [{
293
+ type: Input
294
+ }], selected: [{
295
+ type: Input
296
+ }], selectedItem: [{
297
+ type: Output
298
+ }] } });
299
+
300
+ class SelectMultipleComponent extends BaseSelectComponent {
301
+ constructor() {
302
+ super();
303
+ /**
304
+ * Returns the selected items.
305
+ * Triggered when items are selected.
306
+ */
307
+ this.selectedItems = new EventEmitter();
308
+ /**
309
+ * Returns the selected Ids.
310
+ * Triggered when items are selected.
311
+ */
312
+ this.selectedIds = new EventEmitter();
313
+ this.currentSelection = [];
314
+ }
315
+ clearSelection() {
316
+ this.currentSelection = [];
317
+ this._currentTerm = undefined;
318
+ this.updateActiveItemsOnList();
319
+ }
320
+ onSelectItem(item) {
321
+ const selectedItem = this.currentSelection.find(cs => cs.value === item.id);
322
+ if (!!selectedItem) {
323
+ this.onRemoveItem(selectedItem);
324
+ return;
325
+ }
326
+ for (const localBackupItem of this._localBackupItems) {
327
+ if ((localBackupItem.children?.length || 0) > 0) {
328
+ const child = localBackupItem.children?.find(c => c.value === item.id);
329
+ if (!!child) {
330
+ this.currentSelection.push(child);
331
+ break;
332
+ }
333
+ }
334
+ else if (localBackupItem.value === item.id) {
335
+ this.currentSelection.push(localBackupItem);
336
+ break;
337
+ }
338
+ }
339
+ this.updateActiveItemsOnList();
340
+ this.selectedItems.emit(this.currentSelection);
341
+ this.selectedIds.emit(this.currentSelection.map(cs => cs.value));
342
+ }
343
+ onRemoveItem(item) {
344
+ const idx = this.currentSelection.findIndex(cs => cs.value === item.value);
345
+ this.currentSelection.splice(idx, 1);
346
+ this.updateActiveItemsOnList();
347
+ }
348
+ updateActiveItemsOnList() {
349
+ for (const backupItem of this._localBackupItems) {
350
+ const selectedItem = this.currentSelection.find(cs => cs.value === backupItem.value);
351
+ backupItem.listItem.isActive = !!selectedItem;
352
+ }
353
+ this._setupLocalItems(this._localBackupItems);
354
+ }
355
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: SelectMultipleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
356
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.0", type: SelectMultipleComponent, selector: "upd-select-multiple", outputs: { selectedItems: "selectedItems", selectedIds: "selectedIds" }, usesInheritance: true, ngImport: i0, template: "@if (!!labelText) {\n @if (!!hintText || !!hintTemplate()) {\n <div class=\"row g-2\">\n <div class=\"col-auto\">\n <label [ngClass]=\"labelSizeClasses\">{{ labelText }}</label>\n </div>\n <div class=\"col-auto\">\n <span class=\"form-help\" [updPopover]=\"hintText\" [updPopoverTemplate]=\"hintTemplate()\"\n [updPopoverActAsTooltip]=\"hintAsTooltip()\">\n ?\n </span>\n </div>\n </div>\n } @else {\n <label [ngClass]=\"labelSizeClasses\">{{ labelText }}</label>\n }\n}\n\n<div class=\"dropdown\" [attr.id]=\"name()\">\n <div #componentBox class=\"input-group input-group-flat\">\n <div class=\"form-control\" [class.remove-bottom-radius]=\"isDropdownOpen\" [class.disabled]=\"isDisabled()\"\n [class.pe-none]=\"isDisabled()\" [attr.disabled]=\"isDisabled() ? 'disabled' : undefined\" (click)=\"openDropdown()\">\n @for (sel of currentSelection; track sel) {\n <span class=\"badge bg-primary select-multiple-value\">{{ sel.text }}\n <upd-button [isIcon]=\"true\" [shouldIgnoreBtnClass]=\"true\" (clicked)=\"onRemoveItem(sel)\">\n <upd-icon tablerIcon=\"x\"></upd-icon>\n </upd-button></span>&nbsp;\n }\n </div>\n <div class=\"input-group-text\" [class.remove-bottom-radius]=\"isDropdownOpen\">\n @if (currentSelection.length > 0) {\n <upd-button [shouldIgnoreBtnClass]=\"true\" [isDisabled]=\"isDisabled()\" (clicked)=\"clearSelection()\"\n customClasses=\"link-secondary\">\n <upd-icon tablerIcon=\"x\"></upd-icon>\n </upd-button>\n }\n @if (!isLoading) {\n <upd-button [shouldIgnoreBtnClass]=\"true\" [isDisabled]=\"isDisabled()\" (clicked)=\"openDropdown()\"\n customClasses=\"link-secondary ms-2\">\n <upd-icon tablerIcon=\"chevron-down\"></upd-icon>\n </upd-button>\n } @else {\n <div class=\"select-loader-wrapper\">\n <div class=\"spinner-border spinner-border-sm text-muted select-loader\" role=\"status\"></div>\n </div>\n }\n </div>\n </div>\n <div #searchBox>\n <div #searchBoxChild [style.visibility]=\"isDropdownOpen ? 'visible' : 'hidden'\" class=\"select-search-box\">\n <upd-input [placeholder]=\"placeholder()\" [isInputGroupFlat]=\"true\" (valueChange)=\"search($event)\">\n <ng-template updInputPrepend>\n <upd-icon tablerIcon=\"search\"></upd-icon>\n </ng-template>\n </upd-input>\n </div>\n </div>\n <upd-list #list [items]=\"listItems\" [maxHeight]=\"dropdownMaxHeight() + 'px'\" (selectedItem)=\"onSelectItem($event)\"\n [wrapperClasses]=\"dropdownClasses\" [isVisible]=\"isDropdownOpen\" [shouldOverflow]=\"true\" [shouldDisplayItemsCounter]=\"true\">\n </upd-list>\n</div>\n", styles: [".select-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}.select-dropdown-content-open{display:block!important}.select-loader-wrapper{height:24px}.select-loader-wrapper .select-loader{height:24px;width:24px}.select-search-box{position:absolute;z-index:1;padding:.5rem;margin-top:-1px;background:var(--upd-body-bg);border:var(--upd-border-width) var(--upd-border-style) var(--upd-border-color)}.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}.compact{padding:.25rem 2rem .25rem .75rem!important}.select-multiple-value{display:inline-flex;align-items:center}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: i2.ListComponent, selector: "upd-list", inputs: ["items", "shouldOverflow", "isFlush", "isVisible", "isHoverable", "shouldDisplayItemsCounter", "wrapperClasses", "maxHeight"], outputs: ["checkboxChanged", "selectedItem"] }, { kind: "component", type: i3.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"] }, { kind: "directive", type: i3.InputPrependDirective, selector: "ng-template[updInputPrepend]" }, { kind: "component", type: i4.IconComponent, selector: "upd-icon", inputs: ["model", "wrapperClasses", "color", "colorClass", "removeDefaultClasses", "customClasses", "tablerIcon", "tablerIconWeight", "tablerIconType", "tablerIconSize", "heroIcon", "heroIconSize", "heroIconType"] }, { kind: "component", type: i5.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: "directive", type: i6.PopoverDirective, selector: "[updPopover]", inputs: ["updPopover", "updPopoverTitle", "updPopoverTitleTemplate", "updPopoverTemplate", "updPopoverPlacement", "updPopoverCustomClasses", "updPopoverActAsTooltip"] }], encapsulation: i0.ViewEncapsulation.None }); }
357
+ }
358
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: SelectMultipleComponent, decorators: [{
359
+ type: Component,
360
+ args: [{ selector: 'upd-select-multiple', encapsulation: ViewEncapsulation.None, template: "@if (!!labelText) {\n @if (!!hintText || !!hintTemplate()) {\n <div class=\"row g-2\">\n <div class=\"col-auto\">\n <label [ngClass]=\"labelSizeClasses\">{{ labelText }}</label>\n </div>\n <div class=\"col-auto\">\n <span class=\"form-help\" [updPopover]=\"hintText\" [updPopoverTemplate]=\"hintTemplate()\"\n [updPopoverActAsTooltip]=\"hintAsTooltip()\">\n ?\n </span>\n </div>\n </div>\n } @else {\n <label [ngClass]=\"labelSizeClasses\">{{ labelText }}</label>\n }\n}\n\n<div class=\"dropdown\" [attr.id]=\"name()\">\n <div #componentBox class=\"input-group input-group-flat\">\n <div class=\"form-control\" [class.remove-bottom-radius]=\"isDropdownOpen\" [class.disabled]=\"isDisabled()\"\n [class.pe-none]=\"isDisabled()\" [attr.disabled]=\"isDisabled() ? 'disabled' : undefined\" (click)=\"openDropdown()\">\n @for (sel of currentSelection; track sel) {\n <span class=\"badge bg-primary select-multiple-value\">{{ sel.text }}\n <upd-button [isIcon]=\"true\" [shouldIgnoreBtnClass]=\"true\" (clicked)=\"onRemoveItem(sel)\">\n <upd-icon tablerIcon=\"x\"></upd-icon>\n </upd-button></span>&nbsp;\n }\n </div>\n <div class=\"input-group-text\" [class.remove-bottom-radius]=\"isDropdownOpen\">\n @if (currentSelection.length > 0) {\n <upd-button [shouldIgnoreBtnClass]=\"true\" [isDisabled]=\"isDisabled()\" (clicked)=\"clearSelection()\"\n customClasses=\"link-secondary\">\n <upd-icon tablerIcon=\"x\"></upd-icon>\n </upd-button>\n }\n @if (!isLoading) {\n <upd-button [shouldIgnoreBtnClass]=\"true\" [isDisabled]=\"isDisabled()\" (clicked)=\"openDropdown()\"\n customClasses=\"link-secondary ms-2\">\n <upd-icon tablerIcon=\"chevron-down\"></upd-icon>\n </upd-button>\n } @else {\n <div class=\"select-loader-wrapper\">\n <div class=\"spinner-border spinner-border-sm text-muted select-loader\" role=\"status\"></div>\n </div>\n }\n </div>\n </div>\n <div #searchBox>\n <div #searchBoxChild [style.visibility]=\"isDropdownOpen ? 'visible' : 'hidden'\" class=\"select-search-box\">\n <upd-input [placeholder]=\"placeholder()\" [isInputGroupFlat]=\"true\" (valueChange)=\"search($event)\">\n <ng-template updInputPrepend>\n <upd-icon tablerIcon=\"search\"></upd-icon>\n </ng-template>\n </upd-input>\n </div>\n </div>\n <upd-list #list [items]=\"listItems\" [maxHeight]=\"dropdownMaxHeight() + 'px'\" (selectedItem)=\"onSelectItem($event)\"\n [wrapperClasses]=\"dropdownClasses\" [isVisible]=\"isDropdownOpen\" [shouldOverflow]=\"true\" [shouldDisplayItemsCounter]=\"true\">\n </upd-list>\n</div>\n", styles: [".select-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}.select-dropdown-content-open{display:block!important}.select-loader-wrapper{height:24px}.select-loader-wrapper .select-loader{height:24px;width:24px}.select-search-box{position:absolute;z-index:1;padding:.5rem;margin-top:-1px;background:var(--upd-body-bg);border:var(--upd-border-width) var(--upd-border-style) var(--upd-border-color)}.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}.compact{padding:.25rem 2rem .25rem .75rem!important}.select-multiple-value{display:inline-flex;align-items:center}\n"] }]
361
+ }], ctorParameters: () => [], propDecorators: { selectedItems: [{
362
+ type: Output
363
+ }], selectedIds: [{
364
+ type: Output
365
+ }] } });
366
+
367
+ class UpdSelectModule {
368
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: UpdSelectModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
369
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.1.0", ngImport: i0, type: UpdSelectModule, declarations: [SelectComponent,
370
+ SelectMultipleComponent], imports: [CommonModule,
371
+ UpdCoreLayoutModule,
372
+ UpdListModule,
373
+ UpdInputModule,
374
+ UpdIconsModule,
375
+ UpdButtonModule,
376
+ UpdPopoverModule,
377
+ TranslocoModule], exports: [SelectComponent,
378
+ SelectMultipleComponent] }); }
379
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: UpdSelectModule, imports: [CommonModule,
380
+ UpdCoreLayoutModule,
381
+ UpdListModule,
382
+ UpdInputModule,
383
+ UpdIconsModule,
384
+ UpdButtonModule,
385
+ UpdPopoverModule,
386
+ TranslocoModule] }); }
387
+ }
388
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: UpdSelectModule, decorators: [{
389
+ type: NgModule,
390
+ args: [{
391
+ imports: [
392
+ CommonModule,
393
+ UpdCoreLayoutModule,
394
+ UpdListModule,
395
+ UpdInputModule,
396
+ UpdIconsModule,
397
+ UpdButtonModule,
398
+ UpdPopoverModule,
399
+ TranslocoModule
400
+ ],
401
+ declarations: [
402
+ SelectComponent,
403
+ SelectMultipleComponent
404
+ ],
405
+ exports: [
406
+ SelectComponent,
407
+ SelectMultipleComponent
408
+ ]
409
+ }]
410
+ }] });
411
+
412
+ /**
413
+ * Generated bundle index. Do not edit.
414
+ */
415
+
416
+ export { Defaults, SelectComponent, SelectMultipleComponent, UpdSelectModule };
417
+ //# sourceMappingURL=updevs-components-form-controls-select.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"updevs-components-form-controls-select.mjs","sources":["../../../../libs/components/form-controls/select/src/models/defaults.ts","../../../../libs/components/form-controls/select/src/models/abstractions/base-select.component.ts","../../../../libs/components/form-controls/select/src/components/single/select.component.ts","../../../../libs/components/form-controls/select/src/components/single/select.component.html","../../../../libs/components/form-controls/select/src/components/multiple/select-multiple.component.ts","../../../../libs/components/form-controls/select/src/components/multiple/select-multiple.component.html","../../../../libs/components/form-controls/select/src/upd-select.module.ts","../../../../libs/components/form-controls/select/src/updevs-components-form-controls-select.ts"],"sourcesContent":["import { HorizontalVerticalType } from '@updevs/components';\n\nexport class Defaults {\n static dropdownMaxHeight = 300;\n static typeaheadDebounce = 200;\n static shouldAutoSearch = true;\n static shouldCloseOnOutsideClick = true;\n static layout: HorizontalVerticalType = 'vertical';\n}\n","import {\n Directive,\n HostBinding,\n ElementRef,\n OnInit,\n Output,\n EventEmitter,\n inject,\n NgZone,\n Renderer2,\n RendererStyleFlags2,\n input,\n viewChild,\n computed, effect\n} from '@angular/core';\nimport { DomEventsService, PositioningService, ComputePositionResult } from '@updevs/sdk/layout';\nimport { Tools } from '@updevs/sdk/core';\nimport { BaseSearchStore, ObservableSearchType } from '@updevs/sdk/stores';\nimport { HorizontalVerticalType, ColumnSizeHelper } from '@updevs/components';\nimport { ListItem } from '@updevs/components/list';\nimport { BaseControl } from '@updevs/components/form-controls/abstractions';\nimport { tap, debounceTime, Subject } from 'rxjs';\n\nimport { SelectItem } from '../select-item';\nimport { Defaults } from '../defaults';\n\nimport Utils = Tools.Utils;\n\n@Directive()\nexport abstract class BaseSelectComponent extends BaseControl implements OnInit {\n @HostBinding('class') get wrapperClasses() {\n return this.hostWrapperClasses();\n }\n @Output() readonly dropdownOpenStatusChange = new EventEmitter<boolean>();\n\n componentBox = viewChild('componentBox', { read: ElementRef });\n searchBox = viewChild('searchBox', { read: ElementRef });\n searchBoxChild = viewChild('searchBoxChild', { read: ElementRef });\n list = viewChild('list', { read: ElementRef });\n\n /**\n * Select items.\n * If provided, the select will be considered static.\n */\n items = input<SelectItem[]>();\n /**\n * Store used to load/filter the items.\n */\n store = input<BaseSearchStore>();\n /**\n * Observable used to load/filter the items.\n */\n observable = input<ObservableSearchType>();\n /**\n * Name of the property in the object that represents the ID/key of the option.\n * **Note:** used only for remote data.\n */\n itemKey = input<string>();\n /**\n * Name of the property in the object that represents the value/description of the option.\n * **Note:** used only for remote data.\n */\n itemValue = input<string>();\n /**\n * Maximum height of the dropdown.\n */\n dropdownMaxHeight = input(Defaults.dropdownMaxHeight);\n typeaheadDebounce = input(Defaults.typeaheadDebounce);\n shouldAutoSearch = input(Defaults.shouldAutoSearch);\n shouldCloseOnOutsideClick = input(Defaults.shouldCloseOnOutsideClick);\n layout = input<HorizontalVerticalType>(Defaults.layout);\n layoutClasses = computed(() => this.layout() === 'horizontal' ? ['col', 'align-self-center'] : []);\n isLoading = false;\n localItems: SelectItem[] = [];\n listItems: ListItem[] = [];\n dropdownClasses = 'select-dropdown-content remove-top-radius';\n get isDropdownOpen(): boolean {\n return this._isDropdownOpen;\n }\n set isDropdownOpen(value: boolean) {\n this._isDropdownOpen = value;\n\n this.dropdownOpenStatusChange.emit(value);\n\n if (value) {\n this.dropdownClasses += ' select-dropdown-content-open';\n } else {\n this.dropdownClasses = this.dropdownClasses.replace(' select-dropdown-content-open', '');\n }\n }\n get labelSizeClasses(): string {\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\n protected _currentTerm?: string;\n protected _localBackupItems: SelectItem[] = [];\n\n private hasExternalList = false;\n private _isDropdownOpen = false;\n private hostWrapperClasses = computed(() => this.layout() === 'horizontal' ? 'row' : '');\n private readonly searchInputSubject = new Subject<string>();\n private readonly renderer = inject(Renderer2);\n private readonly ngZone = inject(NgZone);\n private readonly domEventsService = inject(DomEventsService);\n private readonly positioningService = inject(PositioningService);\n\n protected constructor() {\n super();\n\n effect(() => {\n if (!!this.items()) {\n this._setupLocalItems(this.items()!);\n }\n });\n }\n\n ngOnInit(): void {\n this.hasExternalList = !this.observable() && !this.store();\n\n if (this.shouldAutoSearch()) {\n if (this.hasExternalList) {\n this._setupLocalItems(this.items()!);\n } else {\n this.searchRemote();\n }\n }\n\n if (this.hasExternalList) {\n return;\n }\n\n const typeaheadSubscription = this.searchInputSubject\n .pipe(\n tap(value => this._currentTerm = value),\n debounceTime(this.typeaheadDebounce())\n )\n .subscribe(() => this.searchRemote());\n\n this.addSubscriptions(typeaheadSubscription);\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.list()?.nativeElement,\n true,\n this.componentBox()?.nativeElement,\n this.searchBox()?.nativeElement\n );\n this.addSubscriptions(outsideClickSub);\n }\n\n this.ngZone.runOutsideAngular(() =>\n this.positioningService\n .computePosition(this.componentBox()!, this.list()!, { placement: 'bottom' })\n .subscribe(resp => this.updatePosition(resp))\n );\n }\n\n search(term?: string): void {\n if (this.hasExternalList) {\n this.searchLocal();\n } else {\n this.searchInputSubject.next(term || '');\n }\n }\n\n protected _setupLocalItems(items: SelectItem[]): void {\n this.localItems = Utils.deepCopy(items);\n this._localBackupItems = Utils.deepCopy(items);\n const tempItems: ListItem[] = [];\n\n for (const item of this._localBackupItems) {\n const listItem = this.getListItem(item);\n item.listItem = Object.assign(listItem, {});\n\n tempItems.push(listItem);\n }\n\n this.listItems = [...tempItems];\n this.isLoading = false;\n }\n\n private searchLocal(): void {\n if (!this._currentTerm) {\n this.listItems = Utils.deepCopy(this._localBackupItems.map(li => li.listItem!));\n this.localItems = Utils.deepCopy(this._localBackupItems);\n\n return;\n }\n\n this.ngZone.run(() => {\n this.listItems = Utils.deepCopy<SelectItem[]>(this._localBackupItems).filter(si => {\n let hasChildrenInSearch = false;\n\n if ((si.children?.length || 0) > 0) {\n hasChildrenInSearch = si.children!.filter(\n ci => ci.text!.toLowerCase().includes(this._currentTerm!.toLowerCase())\n ).length > 0;\n }\n\n return si.text!.toLowerCase().includes(this._currentTerm!.toLowerCase()) || hasChildrenInSearch;\n }).map(si => {\n const bkpItem = this._localBackupItems.find(lbi => lbi.value === si.value);\n\n if ((bkpItem?.children?.length || 0) > 0) {\n si.children = [...bkpItem!.children!].filter(\n ci => ci.text!.toLowerCase().includes(this._currentTerm!.toLowerCase())\n );\n }\n\n return this.getListItem(si);\n });\n });\n }\n\n private searchRemote(): void {\n this.isLoading = true;\n const request = { description: this._currentTerm };\n const observable = !!this.observable() ? this.observable()!(request) : this.store()!.search(request);\n\n observable.subscribe(r => {\n const items: SelectItem[] = [];\n\n r.records.forEach(item => {\n items.push({\n value: item[this.itemKey()!],\n text: item[this.itemValue()!],\n objectData: item\n });\n });\n this._setupLocalItems(items);\n });\n }\n\n private getListItem(item: SelectItem): ListItem {\n let listItem: ListItem;\n\n if (!!item.listItem) {\n listItem = item.listItem;\n listItem.id = item.value;\n listItem.text = item.text;\n } else {\n listItem = {\n id: item.value,\n text: item.text\n };\n }\n\n if ((item.children?.length || 0) > 0) {\n listItem.children = [...item.children!].map(c => this.getListItem(c));\n }\n\n return listItem;\n }\n\n private updatePosition(result: ComputePositionResult): void {\n const componentBox = this.componentBox()!.nativeElement.getBoundingClientRect();\n const searchBoxChildElement = this.searchBoxChild()?.nativeElement;\n const ddElement = this.list()!.nativeElement;\n\n this.renderer.setStyle(searchBoxChildElement, 'width', `${Math.abs(componentBox.width)}px`, RendererStyleFlags2.Important);\n this.renderer.setStyle(ddElement, 'top', `${result.y + searchBoxChildElement.scrollHeight}px`, RendererStyleFlags2.Important);\n this.renderer.setStyle(ddElement, 'left', 0, RendererStyleFlags2.Important);\n this.renderer.setStyle(ddElement, 'width', `${Math.abs(componentBox.width)}px`, RendererStyleFlags2.Important);\n }\n\n abstract clearSelection(): void;\n abstract onSelectItem(item: ListItem): void;\n}\n","import {\n Component,\n Input,\n ViewEncapsulation,\n Output,\n EventEmitter\n} from '@angular/core';\nimport { OptionalType } from '@updevs/sdk/types';\nimport { ListItem } from '@updevs/components/list';\n\nimport { BaseSelectComponent } from '../../models/abstractions/base-select.component';\nimport { SelectItem } from '../../models/select-item';\n\n@Component({\n selector: 'upd-select',\n templateUrl: './select.component.html',\n styleUrls: ['./select.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class SelectComponent extends BaseSelectComponent {\n /**\n * If true, it'll use the default style of the OS, no search capabilities.\n */\n @Input() useSystemStyle = false;\n @Input() shouldShowClearButton = true;\n @Input() isCompact = false;\n @Input() set selected(item: OptionalType<SelectItem>) {\n this.currentSelection = item;\n }\n\n /**\n * Triggered when an item is selected.\n */\n @Output() readonly selectedItem = new EventEmitter<OptionalType<SelectItem>>();\n\n currentSelection?: SelectItem;\n\n constructor() {\n super();\n }\n\n onSelectItem(item: ListItem): void {\n this._currentTerm = item.text;\n this.isDropdownOpen = false;\n\n for (const localBackupItem of this._localBackupItems) {\n if ((localBackupItem.children?.length || 0) > 0) {\n this.currentSelection = localBackupItem.children?.find(c => c.value === item.id);\n\n if (!!this.currentSelection) {\n break;\n }\n } else if (localBackupItem.value === item.id) {\n this.currentSelection = localBackupItem;\n break;\n }\n }\n\n this.selectedItem.emit(this.currentSelection);\n }\n\n onSystemSelect(event: any): void {\n // eslint-disable-next-line eqeqeq\n this.currentSelection = this.localItems.find(c => c.value == event.target.value);\n this.selectedItem.emit(this.currentSelection);\n }\n\n clearSelection(): void {\n this.currentSelection = undefined;\n this._currentTerm = undefined;\n\n this.search();\n this.selectedItem.emit(undefined);\n }\n}\n","@if (!!labelText) {\n @if (!!hintText || !!hintTemplate()) {\n <div class=\"row g-2\">\n <div class=\"col-auto\">\n <label [ngClass]=\"labelSizeClasses\">{{ labelText }}</label>\n </div>\n <div class=\"col-auto\">\n <span class=\"form-help\" [updPopover]=\"hintText\" [updPopoverTemplate]=\"hintTemplate()\"\n [updPopoverActAsTooltip]=\"hintAsTooltip()\">\n ?\n </span>\n </div>\n </div>\n } @else {\n <label [ngClass]=\"labelSizeClasses\">{{ labelText }}</label>\n }\n}\n\n@if (!useSystemStyle) {\n <div class=\"dropdown\" [attr.id]=\"name()\" [ngClass]=\"layoutClasses()\">\n @if (!labelText && (!!hintText || !!hintTemplate())) {\n <div class=\"row g-2\">\n <div class=\"col\">\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\n <div #searchBox>\n <div #searchBoxChild [style.visibility]=\"isDropdownOpen ? 'visible' : 'hidden'\" class=\"select-search-box\">\n <upd-input [placeholder]=\"placeholder()\" [isInputGroupFlat]=\"true\" (valueChange)=\"search($event)\">\n <ng-template updInputPrepend>\n <upd-icon tablerIcon=\"search\"></upd-icon>\n </ng-template>\n </upd-input>\n </div>\n </div>\n <upd-list #list [items]=\"listItems\" [maxHeight]=\"dropdownMaxHeight() + 'px'\" (selectedItem)=\"onSelectItem($event)\"\n [wrapperClasses]=\"dropdownClasses\" [isVisible]=\"isDropdownOpen\" [shouldOverflow]=\"true\" [shouldDisplayItemsCounter]=\"true\">\n </upd-list>\n </div>\n} @else {\n @if (!labelText && (!!hintText || !!hintTemplate())) {\n <div class=\"row g-2\">\n <div class=\"col\">\n <ng-template [ngTemplateOutlet]=\"contentDefaultStyleTpl\"></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]=\"contentDefaultStyleTpl\"></ng-template>\n }\n}\n\n<ng-template #contentTpl>\n <div #componentBox class=\"input-group input-group-flat\">\n <div class=\"form-control\" [class.remove-bottom-radius]=\"isDropdownOpen\" [class.disabled]=\"isDisabled()\"\n [class.pe-none]=\"isDisabled()\" [attr.disabled]=\"isDisabled() ? 'disabled' : undefined\" (click)=\"openDropdown()\">\n @if (!!currentSelection) {\n <span>{{ currentSelection.text }}</span>\n }\n </div>\n <div class=\"input-group-text\" [class.remove-bottom-radius]=\"isDropdownOpen\">\n @if (!!currentSelection && shouldShowClearButton) {\n <upd-button [shouldIgnoreBtnClass]=\"true\" [isDisabled]=\"isDisabled()\" (clicked)=\"clearSelection()\"\n customClasses=\"link-secondary\">\n <upd-icon [model]=\"{tablerIcon:'x'}\"></upd-icon>\n </upd-button>\n }\n @if (!isLoading) {\n <upd-button [shouldIgnoreBtnClass]=\"true\" [isDisabled]=\"isDisabled()\" (clicked)=\"openDropdown()\"\n customClasses=\"link-secondary ms-2\">\n <upd-icon [model]=\"{tablerIcon:'chevron-down'}\"></upd-icon>\n </upd-button>\n } @else {\n <div class=\"select-loader-wrapper\">\n <div class=\"spinner-border spinner-border-sm text-muted select-loader\" role=\"status\"></div>\n </div>\n }\n </div>\n </div>\n</ng-template>\n\n<ng-template #contentDefaultStyleTpl>\n <select class=\"form-select\" [class.compact]=\"isCompact\" [attr.placeholder]=\"placeholder()\" [attr.name]=\"name()\"\n [attr.disabled]=\"isDisabled() ? 'disabled' : undefined\" (change)=\"onSystemSelect($event)\">\n @for (item of localItems; track item) {\n @if ((item.children?.length || 0) > 0) {\n <optgroup [label]=\"item.text\">\n @for (child of item.children; track child) {\n <option [attr.selected]=\"!!currentSelection && child.value === currentSelection.value ? true : undefined\"\n [value]=\"child.value\">\n {{ child.text }}\n </option>\n }\n </optgroup>\n } @else {\n <option [attr.selected]=\"!!currentSelection && item.value === currentSelection.value ? true : undefined\"\n [value]=\"item.value\">\n {{ item.text }}\n </option>\n }\n }\n </select>\n</ng-template>\n","import { Component, ViewEncapsulation, EventEmitter, Output } from '@angular/core';\nimport { ListItem } from '@updevs/components/list';\n\nimport { BaseSelectComponent } from '../../models/abstractions/base-select.component';\nimport { SelectItem } from '../../models/select-item';\n\n@Component({\n selector: 'upd-select-multiple',\n templateUrl: './select-multiple.component.html',\n styleUrls: ['./select-multiple.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class SelectMultipleComponent extends BaseSelectComponent {\n /**\n * Returns the selected items.\n * Triggered when items are selected.\n */\n @Output() readonly selectedItems = new EventEmitter<SelectItem[]>();\n /**\n * Returns the selected Ids.\n * Triggered when items are selected.\n */\n @Output() readonly selectedIds = new EventEmitter<any[]>();\n\n currentSelection: SelectItem[] = [];\n\n constructor() {\n super();\n }\n\n clearSelection(): void {\n this.currentSelection = [];\n this._currentTerm = undefined;\n\n this.updateActiveItemsOnList();\n }\n\n onSelectItem(item: ListItem): void {\n const selectedItem = this.currentSelection.find(cs => cs.value === item.id);\n\n if (!!selectedItem) {\n this.onRemoveItem(selectedItem);\n return;\n }\n\n for (const localBackupItem of this._localBackupItems) {\n if ((localBackupItem.children?.length || 0) > 0) {\n const child = localBackupItem.children?.find(c => c.value === item.id);\n\n if (!!child) {\n this.currentSelection.push(child);\n break;\n }\n } else if (localBackupItem.value === item.id) {\n this.currentSelection.push(localBackupItem);\n break;\n }\n }\n\n this.updateActiveItemsOnList();\n this.selectedItems.emit(this.currentSelection);\n this.selectedIds.emit(this.currentSelection.map(cs => cs.value));\n }\n\n onRemoveItem(item: SelectItem): void {\n const idx = this.currentSelection.findIndex(cs => cs.value === item.value);\n\n this.currentSelection.splice(idx, 1);\n this.updateActiveItemsOnList();\n }\n\n private updateActiveItemsOnList(): void {\n for (const backupItem of this._localBackupItems) {\n const selectedItem = this.currentSelection.find(cs => cs.value === backupItem.value);\n backupItem.listItem!.isActive = !!selectedItem;\n }\n\n this._setupLocalItems(this._localBackupItems);\n }\n}\n","@if (!!labelText) {\n @if (!!hintText || !!hintTemplate()) {\n <div class=\"row g-2\">\n <div class=\"col-auto\">\n <label [ngClass]=\"labelSizeClasses\">{{ labelText }}</label>\n </div>\n <div class=\"col-auto\">\n <span class=\"form-help\" [updPopover]=\"hintText\" [updPopoverTemplate]=\"hintTemplate()\"\n [updPopoverActAsTooltip]=\"hintAsTooltip()\">\n ?\n </span>\n </div>\n </div>\n } @else {\n <label [ngClass]=\"labelSizeClasses\">{{ labelText }}</label>\n }\n}\n\n<div class=\"dropdown\" [attr.id]=\"name()\">\n <div #componentBox class=\"input-group input-group-flat\">\n <div class=\"form-control\" [class.remove-bottom-radius]=\"isDropdownOpen\" [class.disabled]=\"isDisabled()\"\n [class.pe-none]=\"isDisabled()\" [attr.disabled]=\"isDisabled() ? 'disabled' : undefined\" (click)=\"openDropdown()\">\n @for (sel of currentSelection; track sel) {\n <span class=\"badge bg-primary select-multiple-value\">{{ sel.text }}\n <upd-button [isIcon]=\"true\" [shouldIgnoreBtnClass]=\"true\" (clicked)=\"onRemoveItem(sel)\">\n <upd-icon tablerIcon=\"x\"></upd-icon>\n </upd-button></span>&nbsp;\n }\n </div>\n <div class=\"input-group-text\" [class.remove-bottom-radius]=\"isDropdownOpen\">\n @if (currentSelection.length > 0) {\n <upd-button [shouldIgnoreBtnClass]=\"true\" [isDisabled]=\"isDisabled()\" (clicked)=\"clearSelection()\"\n customClasses=\"link-secondary\">\n <upd-icon tablerIcon=\"x\"></upd-icon>\n </upd-button>\n }\n @if (!isLoading) {\n <upd-button [shouldIgnoreBtnClass]=\"true\" [isDisabled]=\"isDisabled()\" (clicked)=\"openDropdown()\"\n customClasses=\"link-secondary ms-2\">\n <upd-icon tablerIcon=\"chevron-down\"></upd-icon>\n </upd-button>\n } @else {\n <div class=\"select-loader-wrapper\">\n <div class=\"spinner-border spinner-border-sm text-muted select-loader\" role=\"status\"></div>\n </div>\n }\n </div>\n </div>\n <div #searchBox>\n <div #searchBoxChild [style.visibility]=\"isDropdownOpen ? 'visible' : 'hidden'\" class=\"select-search-box\">\n <upd-input [placeholder]=\"placeholder()\" [isInputGroupFlat]=\"true\" (valueChange)=\"search($event)\">\n <ng-template updInputPrepend>\n <upd-icon tablerIcon=\"search\"></upd-icon>\n </ng-template>\n </upd-input>\n </div>\n </div>\n <upd-list #list [items]=\"listItems\" [maxHeight]=\"dropdownMaxHeight() + 'px'\" (selectedItem)=\"onSelectItem($event)\"\n [wrapperClasses]=\"dropdownClasses\" [isVisible]=\"isDropdownOpen\" [shouldOverflow]=\"true\" [shouldDisplayItemsCounter]=\"true\">\n </upd-list>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TranslocoModule } from '@jsverse/transloco';\nimport { UpdIconsModule } from '@updevs/icons';\nimport { UpdCoreLayoutModule } from '@updevs/sdk/layout';\nimport { UpdListModule } from '@updevs/components/list';\nimport { UpdButtonModule } from '@updevs/components/button';\nimport { UpdInputModule } from '@updevs/components/form-controls/input';\nimport { UpdPopoverModule } from '@updevs/components/popover';\n\nimport { SelectComponent } from './components/single/select.component';\nimport { SelectMultipleComponent } from './components/multiple/select-multiple.component';\n\n@NgModule({\n imports: [\n CommonModule,\n UpdCoreLayoutModule,\n UpdListModule,\n UpdInputModule,\n UpdIconsModule,\n UpdButtonModule,\n UpdPopoverModule,\n TranslocoModule\n ],\n declarations: [\n SelectComponent,\n SelectMultipleComponent\n ],\n exports: [\n SelectComponent,\n SelectMultipleComponent\n ]\n})\nexport class UpdSelectModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}