@malva-ui/core 0.1.12 → 0.1.14

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 (1619) hide show
  1. package/AGENTS.md +4 -1
  2. package/LICENSE +21 -0
  3. package/README.md +69 -3
  4. package/docs/ai/avatar.md +2 -0
  5. package/docs/ai/breadcrumb.md +67 -7
  6. package/docs/ai/button.md +74 -19
  7. package/docs/ai/card.md +8 -6
  8. package/docs/ai/chat.md +59 -45
  9. package/docs/ai/checkbox.md +12 -0
  10. package/docs/ai/combobox.md +18 -2
  11. package/docs/ai/copy-to-clipboard.md +1 -1
  12. package/docs/ai/core.md +15 -0
  13. package/docs/ai/data-table.md +89 -54
  14. package/docs/ai/dialog.md +76 -67
  15. package/docs/ai/drawer.md +15 -12
  16. package/docs/ai/dropdown.md +24 -19
  17. package/docs/ai/empty-state.md +3 -3
  18. package/docs/ai/filter.md +24 -5
  19. package/docs/ai/form-utils.md +160 -5
  20. package/docs/ai/icon-toggle.md +160 -0
  21. package/docs/ai/input.md +30 -0
  22. package/docs/ai/layout.md +23 -0
  23. package/docs/ai/list.md +10 -6
  24. package/docs/ai/menu.md +75 -1
  25. package/docs/ai/page.md +220 -60
  26. package/docs/ai/radio.md +9 -0
  27. package/docs/ai/scrollbar.md +30 -8
  28. package/docs/ai/segmented.md +35 -35
  29. package/docs/ai/select.md +30 -5
  30. package/docs/ai/sidebar.md +45 -27
  31. package/docs/ai/switch.md +114 -19
  32. package/docs/ai/table.md +69 -0
  33. package/docs/ai/tabs.md +2 -1
  34. package/docs/ai/tile.md +311 -85
  35. package/docs/ai/timeline.md +63 -39
  36. package/docs/ai/tokenizer.md +21 -5
  37. package/docs/ai/tooltip.md +5 -5
  38. package/docs/ai/view-variant.md +75 -0
  39. package/fesm2022/malva-ui-core-accordion.mjs +167 -0
  40. package/fesm2022/malva-ui-core-accordion.mjs.map +1 -0
  41. package/fesm2022/malva-ui-core-action-bar.mjs +111 -0
  42. package/fesm2022/malva-ui-core-action-bar.mjs.map +1 -0
  43. package/fesm2022/malva-ui-core-alert.mjs +173 -0
  44. package/fesm2022/malva-ui-core-alert.mjs.map +1 -0
  45. package/fesm2022/malva-ui-core-autocomplete.mjs +775 -0
  46. package/fesm2022/malva-ui-core-autocomplete.mjs.map +1 -0
  47. package/fesm2022/malva-ui-core-avatar-group.mjs +224 -0
  48. package/fesm2022/malva-ui-core-avatar-group.mjs.map +1 -0
  49. package/fesm2022/malva-ui-core-avatar.mjs +247 -0
  50. package/fesm2022/malva-ui-core-avatar.mjs.map +1 -0
  51. package/fesm2022/malva-ui-core-badge.mjs +122 -0
  52. package/fesm2022/malva-ui-core-badge.mjs.map +1 -0
  53. package/fesm2022/malva-ui-core-bottom-nav.mjs +161 -0
  54. package/fesm2022/malva-ui-core-bottom-nav.mjs.map +1 -0
  55. package/fesm2022/malva-ui-core-breadcrumb.mjs +494 -0
  56. package/fesm2022/malva-ui-core-breadcrumb.mjs.map +1 -0
  57. package/fesm2022/malva-ui-core-button.mjs +406 -0
  58. package/fesm2022/malva-ui-core-button.mjs.map +1 -0
  59. package/fesm2022/malva-ui-core-calendar.mjs +938 -0
  60. package/fesm2022/malva-ui-core-calendar.mjs.map +1 -0
  61. package/fesm2022/malva-ui-core-card.mjs +164 -0
  62. package/fesm2022/malva-ui-core-card.mjs.map +1 -0
  63. package/fesm2022/malva-ui-core-chat.mjs +825 -0
  64. package/fesm2022/malva-ui-core-chat.mjs.map +1 -0
  65. package/fesm2022/malva-ui-core-checkbox.mjs +272 -0
  66. package/fesm2022/malva-ui-core-checkbox.mjs.map +1 -0
  67. package/fesm2022/malva-ui-core-chip.mjs +176 -0
  68. package/fesm2022/malva-ui-core-chip.mjs.map +1 -0
  69. package/fesm2022/malva-ui-core-color-picker.mjs +1204 -0
  70. package/fesm2022/malva-ui-core-color-picker.mjs.map +1 -0
  71. package/fesm2022/malva-ui-core-combobox.mjs +945 -0
  72. package/fesm2022/malva-ui-core-combobox.mjs.map +1 -0
  73. package/fesm2022/malva-ui-core-copy-to-clipboard.mjs +255 -0
  74. package/fesm2022/malva-ui-core-copy-to-clipboard.mjs.map +1 -0
  75. package/fesm2022/malva-ui-core-data-table.mjs +2696 -0
  76. package/fesm2022/malva-ui-core-data-table.mjs.map +1 -0
  77. package/fesm2022/malva-ui-core-date-range-picker.mjs +276 -0
  78. package/fesm2022/malva-ui-core-date-range-picker.mjs.map +1 -0
  79. package/fesm2022/malva-ui-core-day-picker.mjs +131 -0
  80. package/fesm2022/malva-ui-core-day-picker.mjs.map +1 -0
  81. package/fesm2022/malva-ui-core-dialog-routable-dialog-CvjXMtlD.mjs +94 -0
  82. package/fesm2022/malva-ui-core-dialog-routable-dialog-CvjXMtlD.mjs.map +1 -0
  83. package/fesm2022/malva-ui-core-dialog.mjs +1223 -0
  84. package/fesm2022/malva-ui-core-dialog.mjs.map +1 -0
  85. package/fesm2022/malva-ui-core-divider.mjs +80 -0
  86. package/fesm2022/malva-ui-core-divider.mjs.map +1 -0
  87. package/fesm2022/malva-ui-core-drawer-routable-drawer-qUk6Etnx.mjs +94 -0
  88. package/fesm2022/malva-ui-core-drawer-routable-drawer-qUk6Etnx.mjs.map +1 -0
  89. package/fesm2022/malva-ui-core-drawer.mjs +814 -0
  90. package/fesm2022/malva-ui-core-drawer.mjs.map +1 -0
  91. package/fesm2022/malva-ui-core-dropdown.mjs +994 -0
  92. package/fesm2022/malva-ui-core-dropdown.mjs.map +1 -0
  93. package/fesm2022/malva-ui-core-empty-state.mjs +50 -0
  94. package/fesm2022/malva-ui-core-empty-state.mjs.map +1 -0
  95. package/fesm2022/malva-ui-core-expand.mjs +130 -0
  96. package/fesm2022/malva-ui-core-expand.mjs.map +1 -0
  97. package/fesm2022/malva-ui-core-file-upload.mjs +451 -0
  98. package/fesm2022/malva-ui-core-file-upload.mjs.map +1 -0
  99. package/fesm2022/malva-ui-core-filter.mjs +1627 -0
  100. package/fesm2022/malva-ui-core-filter.mjs.map +1 -0
  101. package/fesm2022/malva-ui-core-form-utils-testing.mjs +39 -0
  102. package/fesm2022/malva-ui-core-form-utils-testing.mjs.map +1 -0
  103. package/fesm2022/malva-ui-core-form-utils.mjs +977 -0
  104. package/fesm2022/malva-ui-core-form-utils.mjs.map +1 -0
  105. package/fesm2022/malva-ui-core-form.mjs +283 -0
  106. package/fesm2022/malva-ui-core-form.mjs.map +1 -0
  107. package/fesm2022/malva-ui-core-icon-toggle.mjs +120 -0
  108. package/fesm2022/malva-ui-core-icon-toggle.mjs.map +1 -0
  109. package/fesm2022/malva-ui-core-input.mjs +375 -0
  110. package/fesm2022/malva-ui-core-input.mjs.map +1 -0
  111. package/fesm2022/malva-ui-core-kbd.mjs +131 -0
  112. package/fesm2022/malva-ui-core-kbd.mjs.map +1 -0
  113. package/fesm2022/malva-ui-core-layout.mjs +212 -0
  114. package/fesm2022/malva-ui-core-layout.mjs.map +1 -0
  115. package/fesm2022/malva-ui-core-link.mjs +89 -0
  116. package/fesm2022/malva-ui-core-link.mjs.map +1 -0
  117. package/fesm2022/malva-ui-core-list.mjs +413 -0
  118. package/fesm2022/malva-ui-core-list.mjs.map +1 -0
  119. package/fesm2022/malva-ui-core-loader.mjs +141 -0
  120. package/fesm2022/malva-ui-core-loader.mjs.map +1 -0
  121. package/fesm2022/malva-ui-core-menu.mjs +2540 -0
  122. package/fesm2022/malva-ui-core-menu.mjs.map +1 -0
  123. package/fesm2022/malva-ui-core-notification.mjs +201 -0
  124. package/fesm2022/malva-ui-core-notification.mjs.map +1 -0
  125. package/fesm2022/malva-ui-core-number-input.mjs +404 -0
  126. package/fesm2022/malva-ui-core-number-input.mjs.map +1 -0
  127. package/fesm2022/malva-ui-core-page.mjs +1898 -0
  128. package/fesm2022/malva-ui-core-page.mjs.map +1 -0
  129. package/fesm2022/malva-ui-core-pagination.mjs +458 -0
  130. package/fesm2022/malva-ui-core-pagination.mjs.map +1 -0
  131. package/fesm2022/malva-ui-core-pin-input.mjs +405 -0
  132. package/fesm2022/malva-ui-core-pin-input.mjs.map +1 -0
  133. package/fesm2022/malva-ui-core-popup.mjs +1488 -0
  134. package/fesm2022/malva-ui-core-popup.mjs.map +1 -0
  135. package/fesm2022/malva-ui-core-progress.mjs +109 -0
  136. package/fesm2022/malva-ui-core-progress.mjs.map +1 -0
  137. package/fesm2022/malva-ui-core-radio.mjs +317 -0
  138. package/fesm2022/malva-ui-core-radio.mjs.map +1 -0
  139. package/fesm2022/malva-ui-core-rating.mjs +236 -0
  140. package/fesm2022/malva-ui-core-rating.mjs.map +1 -0
  141. package/fesm2022/malva-ui-core-scrollbar.mjs +430 -0
  142. package/fesm2022/malva-ui-core-scrollbar.mjs.map +1 -0
  143. package/fesm2022/malva-ui-core-search-field.mjs +578 -0
  144. package/fesm2022/malva-ui-core-search-field.mjs.map +1 -0
  145. package/fesm2022/malva-ui-core-segmented.mjs +458 -0
  146. package/fesm2022/malva-ui-core-segmented.mjs.map +1 -0
  147. package/fesm2022/malva-ui-core-select.mjs +855 -0
  148. package/fesm2022/malva-ui-core-select.mjs.map +1 -0
  149. package/fesm2022/malva-ui-core-sidebar.mjs +1504 -0
  150. package/fesm2022/malva-ui-core-sidebar.mjs.map +1 -0
  151. package/fesm2022/malva-ui-core-skeleton.mjs +85 -0
  152. package/fesm2022/malva-ui-core-skeleton.mjs.map +1 -0
  153. package/fesm2022/malva-ui-core-slider.mjs +514 -0
  154. package/fesm2022/malva-ui-core-slider.mjs.map +1 -0
  155. package/fesm2022/malva-ui-core-split-pane.mjs +359 -0
  156. package/fesm2022/malva-ui-core-split-pane.mjs.map +1 -0
  157. package/fesm2022/malva-ui-core-status-indicator.mjs +78 -0
  158. package/fesm2022/malva-ui-core-status-indicator.mjs.map +1 -0
  159. package/fesm2022/malva-ui-core-stepper.mjs +332 -0
  160. package/fesm2022/malva-ui-core-stepper.mjs.map +1 -0
  161. package/fesm2022/malva-ui-core-switch.mjs +272 -0
  162. package/fesm2022/malva-ui-core-switch.mjs.map +1 -0
  163. package/fesm2022/malva-ui-core-table.mjs +79 -0
  164. package/fesm2022/malva-ui-core-table.mjs.map +1 -0
  165. package/fesm2022/malva-ui-core-tabs.mjs +794 -0
  166. package/fesm2022/malva-ui-core-tabs.mjs.map +1 -0
  167. package/fesm2022/malva-ui-core-textarea.mjs +201 -0
  168. package/fesm2022/malva-ui-core-textarea.mjs.map +1 -0
  169. package/fesm2022/malva-ui-core-tile.mjs +1404 -0
  170. package/fesm2022/malva-ui-core-tile.mjs.map +1 -0
  171. package/fesm2022/malva-ui-core-time-picker.mjs +533 -0
  172. package/fesm2022/malva-ui-core-time-picker.mjs.map +1 -0
  173. package/fesm2022/malva-ui-core-timeline.mjs +216 -0
  174. package/fesm2022/malva-ui-core-timeline.mjs.map +1 -0
  175. package/fesm2022/malva-ui-core-title.mjs +178 -0
  176. package/fesm2022/malva-ui-core-title.mjs.map +1 -0
  177. package/fesm2022/malva-ui-core-toast.mjs +749 -0
  178. package/fesm2022/malva-ui-core-toast.mjs.map +1 -0
  179. package/fesm2022/malva-ui-core-tokenizer.mjs +502 -0
  180. package/fesm2022/malva-ui-core-tokenizer.mjs.map +1 -0
  181. package/fesm2022/malva-ui-core-toolbar.mjs +141 -0
  182. package/fesm2022/malva-ui-core-toolbar.mjs.map +1 -0
  183. package/fesm2022/malva-ui-core-tooltip.mjs +432 -0
  184. package/fesm2022/malva-ui-core-tooltip.mjs.map +1 -0
  185. package/fesm2022/malva-ui-core-tree.mjs +505 -0
  186. package/fesm2022/malva-ui-core-tree.mjs.map +1 -0
  187. package/fesm2022/malva-ui-core-view-variant.mjs +292 -0
  188. package/fesm2022/malva-ui-core-view-variant.mjs.map +1 -0
  189. package/fesm2022/malva-ui-core.mjs +77 -0
  190. package/fesm2022/malva-ui-core.mjs.map +1 -0
  191. package/package.json +195 -156
  192. package/styles/malva-ui.css +253 -220
  193. package/styles/tokens.md +174 -173
  194. package/table/README.md +46 -0
  195. package/types/malva-ui-core-accordion.d.ts +121 -0
  196. package/types/malva-ui-core-action-bar.d.ts +82 -0
  197. package/types/malva-ui-core-alert.d.ts +131 -0
  198. package/types/malva-ui-core-autocomplete.d.ts +301 -0
  199. package/types/malva-ui-core-avatar-group.d.ts +119 -0
  200. package/types/malva-ui-core-avatar.d.ts +156 -0
  201. package/types/malva-ui-core-badge.d.ts +97 -0
  202. package/types/malva-ui-core-bottom-nav.d.ts +104 -0
  203. package/types/malva-ui-core-breadcrumb.d.ts +308 -0
  204. package/types/malva-ui-core-button.d.ts +194 -0
  205. package/types/malva-ui-core-calendar.d.ts +339 -0
  206. package/types/malva-ui-core-card.d.ts +88 -0
  207. package/types/malva-ui-core-chat.d.ts +375 -0
  208. package/types/malva-ui-core-checkbox.d.ts +158 -0
  209. package/types/malva-ui-core-chip.d.ts +128 -0
  210. package/types/malva-ui-core-color-picker.d.ts +442 -0
  211. package/types/malva-ui-core-combobox.d.ts +419 -0
  212. package/types/malva-ui-core-copy-to-clipboard.d.ts +148 -0
  213. package/types/malva-ui-core-data-table.d.ts +1074 -0
  214. package/types/malva-ui-core-date-range-picker.d.ts +149 -0
  215. package/types/malva-ui-core-day-picker.d.ts +55 -0
  216. package/types/malva-ui-core-dialog.d.ts +597 -0
  217. package/types/malva-ui-core-divider.d.ts +68 -0
  218. package/types/malva-ui-core-drawer.d.ts +333 -0
  219. package/types/malva-ui-core-dropdown.d.ts +592 -0
  220. package/types/malva-ui-core-empty-state.d.ts +37 -0
  221. package/types/malva-ui-core-expand.d.ts +102 -0
  222. package/types/malva-ui-core-file-upload.d.ts +267 -0
  223. package/types/malva-ui-core-filter.d.ts +552 -0
  224. package/types/malva-ui-core-form-utils-testing.d.ts +50 -0
  225. package/types/malva-ui-core-form-utils.d.ts +579 -0
  226. package/types/malva-ui-core-form.d.ts +176 -0
  227. package/types/malva-ui-core-icon-toggle.d.ts +80 -0
  228. package/types/malva-ui-core-input.d.ts +262 -0
  229. package/types/malva-ui-core-kbd.d.ts +56 -0
  230. package/types/malva-ui-core-layout.d.ts +70 -0
  231. package/types/malva-ui-core-link.d.ts +28 -0
  232. package/types/malva-ui-core-list.d.ts +252 -0
  233. package/types/malva-ui-core-loader.d.ts +89 -0
  234. package/types/malva-ui-core-menu.d.ts +954 -0
  235. package/types/malva-ui-core-notification.d.ts +122 -0
  236. package/types/malva-ui-core-number-input.d.ts +167 -0
  237. package/types/malva-ui-core-page.d.ts +799 -0
  238. package/types/malva-ui-core-pagination.d.ts +261 -0
  239. package/types/malva-ui-core-pin-input.d.ts +203 -0
  240. package/types/malva-ui-core-popup.d.ts +834 -0
  241. package/types/malva-ui-core-progress.d.ts +73 -0
  242. package/types/malva-ui-core-radio.d.ts +130 -0
  243. package/types/malva-ui-core-rating.d.ts +115 -0
  244. package/types/malva-ui-core-scrollbar.d.ts +203 -0
  245. package/types/malva-ui-core-search-field.d.ts +408 -0
  246. package/types/malva-ui-core-segmented.d.ts +206 -0
  247. package/types/malva-ui-core-select.d.ts +456 -0
  248. package/types/malva-ui-core-sidebar.d.ts +698 -0
  249. package/types/malva-ui-core-skeleton.d.ts +64 -0
  250. package/types/malva-ui-core-slider.d.ts +219 -0
  251. package/types/malva-ui-core-split-pane.d.ts +149 -0
  252. package/types/malva-ui-core-status-indicator.d.ts +65 -0
  253. package/types/malva-ui-core-stepper.d.ts +168 -0
  254. package/types/malva-ui-core-switch.d.ts +146 -0
  255. package/types/malva-ui-core-table.d.ts +37 -0
  256. package/types/malva-ui-core-tabs.d.ts +339 -0
  257. package/types/malva-ui-core-textarea.d.ts +79 -0
  258. package/types/malva-ui-core-tile.d.ts +373 -0
  259. package/types/malva-ui-core-time-picker.d.ts +141 -0
  260. package/types/malva-ui-core-timeline.d.ts +188 -0
  261. package/types/malva-ui-core-title.d.ts +66 -0
  262. package/types/malva-ui-core-toast.d.ts +432 -0
  263. package/types/malva-ui-core-tokenizer.d.ts +217 -0
  264. package/types/malva-ui-core-toolbar.d.ts +91 -0
  265. package/types/malva-ui-core-tooltip.d.ts +200 -0
  266. package/types/malva-ui-core-tree.d.ts +289 -0
  267. package/types/malva-ui-core-view-variant.d.ts +207 -0
  268. package/types/malva-ui-core.d.ts +72 -0
  269. package/view-variant/README.md +3 -0
  270. package/accordion/index.d.ts +0 -3
  271. package/accordion/lib/accordion/accordion.d.ts +0 -47
  272. package/accordion/lib/accordion-item/accordion-header.d.ts +0 -22
  273. package/accordion/lib/accordion-item/accordion-item.d.ts +0 -49
  274. package/accordion/malva-ui-core-accordion.d.ts +0 -5
  275. package/action-bar/index.d.ts +0 -4
  276. package/action-bar/lib/action-bar/action-bar.d.ts +0 -59
  277. package/action-bar/lib/action-bar/components/action-bar-actions.d.ts +0 -9
  278. package/action-bar/lib/action-bar/components/action-bar-logo.d.ts +0 -5
  279. package/action-bar/lib/action-bar/components/action-bar-spacer.d.ts +0 -5
  280. package/action-bar/malva-ui-core-action-bar.d.ts +0 -5
  281. package/alert/index.d.ts +0 -2
  282. package/alert/lib/alert/alert.d.ts +0 -84
  283. package/alert/lib/alert/alert.directives.d.ts +0 -44
  284. package/alert/malva-ui-core-alert.d.ts +0 -5
  285. package/autocomplete/index.d.ts +0 -1
  286. package/autocomplete/lib/autocomplete/autocomplete.d.ts +0 -296
  287. package/autocomplete/malva-ui-core-autocomplete.d.ts +0 -5
  288. package/avatar/index.d.ts +0 -2
  289. package/avatar/lib/avatar/avatar.d.ts +0 -125
  290. package/avatar/lib/color-from-text.pipe.d.ts +0 -21
  291. package/avatar/malva-ui-core-avatar.d.ts +0 -5
  292. package/avatar-group/index.d.ts +0 -1
  293. package/avatar-group/lib/avatar-group/avatar-group.d.ts +0 -115
  294. package/avatar-group/malva-ui-core-avatar-group.d.ts +0 -5
  295. package/badge/index.d.ts +0 -2
  296. package/badge/lib/badge/badge.d.ts +0 -59
  297. package/badge/lib/badge-icon.d.ts +0 -35
  298. package/badge/malva-ui-core-badge.d.ts +0 -5
  299. package/bottom-nav/index.d.ts +0 -1
  300. package/bottom-nav/lib/bottom-nav/bottom-nav.d.ts +0 -99
  301. package/bottom-nav/malva-ui-core-bottom-nav.d.ts +0 -5
  302. package/breadcrumb/index.d.ts +0 -5
  303. package/breadcrumb/lib/breadcrumb/breadcrumb-item-host.d.ts +0 -32
  304. package/breadcrumb/lib/breadcrumb/breadcrumb-item.d.ts +0 -41
  305. package/breadcrumb/lib/breadcrumb/breadcrumb-separator.d.ts +0 -31
  306. package/breadcrumb/lib/breadcrumb/breadcrumb.d.ts +0 -151
  307. package/breadcrumb/lib/breadcrumb/breadcrumb.types.d.ts +0 -26
  308. package/breadcrumb/malva-ui-core-breadcrumb.d.ts +0 -5
  309. package/button/index.d.ts +0 -7
  310. package/button/lib/button/button.d.ts +0 -61
  311. package/button/lib/button-close/button-close.d.ts +0 -24
  312. package/button/lib/button-group/button-group.d.ts +0 -21
  313. package/button/lib/button-split/button-split.d.ts +0 -21
  314. package/button/lib/button-toggle/button-toggle.d.ts +0 -33
  315. package/button/lib/button-variant.token.d.ts +0 -13
  316. package/button/lib/button.directives.d.ts +0 -14
  317. package/button/lib/button.types.d.ts +0 -8
  318. package/button/malva-ui-core-button.d.ts +0 -5
  319. package/calendar/index.d.ts +0 -3
  320. package/calendar/lib/calendar/calendar.d.ts +0 -182
  321. package/calendar/lib/date-provider/date-adapter.d.ts +0 -92
  322. package/calendar/lib/date-provider/native-date-adapter.d.ts +0 -60
  323. package/calendar/malva-ui-core-calendar.d.ts +0 -5
  324. package/card/index.d.ts +0 -5
  325. package/card/lib/card/card.d.ts +0 -43
  326. package/card/lib/card-actions-def.d.ts +0 -10
  327. package/card/lib/card-footer-def.d.ts +0 -13
  328. package/card/lib/card-header-def.d.ts +0 -10
  329. package/card/lib/card-subheader-def.d.ts +0 -16
  330. package/card/malva-ui-core-card.d.ts +0 -5
  331. package/chat/index.d.ts +0 -9
  332. package/chat/lib/chat/chat.d.ts +0 -133
  333. package/chat/lib/chat-audio/chat-audio.d.ts +0 -51
  334. package/chat/lib/chat-audio/chat-audio.service.d.ts +0 -21
  335. package/chat/lib/chat-date/chat-date.d.ts +0 -16
  336. package/chat/lib/chat-format.d.ts +0 -5
  337. package/chat/lib/chat-media-grid/chat-media-grid.d.ts +0 -32
  338. package/chat/lib/chat-message/chat-message.d.ts +0 -45
  339. package/chat/lib/chat-render-list.d.ts +0 -16
  340. package/chat/lib/chat-tokens.d.ts +0 -25
  341. package/chat/lib/chat-typing/chat-typing.d.ts +0 -16
  342. package/chat/lib/chat.types.d.ts +0 -80
  343. package/chat/lib/defs/chat-author-def.d.ts +0 -30
  344. package/chat/lib/defs/chat-date-def.d.ts +0 -22
  345. package/chat/lib/defs/chat-message-def.d.ts +0 -23
  346. package/chat/malva-ui-core-chat.d.ts +0 -5
  347. package/checkbox/index.d.ts +0 -3
  348. package/checkbox/lib/checkbox/checkbox.d.ts +0 -129
  349. package/checkbox/lib/checkbox-group/checkbox-group.d.ts +0 -24
  350. package/checkbox/lib/checkbox-group-token.d.ts +0 -6
  351. package/checkbox/malva-ui-core-checkbox.d.ts +0 -5
  352. package/chip/index.d.ts +0 -2
  353. package/chip/lib/chip/chip.d.ts +0 -107
  354. package/chip/lib/chip/chip.directives.d.ts +0 -18
  355. package/chip/malva-ui-core-chip.d.ts +0 -5
  356. package/color-picker/index.d.ts +0 -3
  357. package/color-picker/lib/color-picker/color-picker.d.ts +0 -188
  358. package/color-picker/lib/color-picker-popup/color-picker-popup.d.ts +0 -151
  359. package/color-picker/lib/color-utils/color-utils.d.ts +0 -102
  360. package/color-picker/malva-ui-core-color-picker.d.ts +0 -5
  361. package/combobox/index.d.ts +0 -2
  362. package/combobox/lib/combobox/combobox.d.ts +0 -400
  363. package/combobox/lib/combobox-template.directives.d.ts +0 -10
  364. package/combobox/malva-ui-core-combobox.d.ts +0 -5
  365. package/copy-to-clipboard/index.d.ts +0 -1
  366. package/copy-to-clipboard/lib/copy-to-clipboard/copy-to-clipboard.d.ts +0 -130
  367. package/copy-to-clipboard/malva-ui-core-copy-to-clipboard.d.ts +0 -5
  368. package/data-table/index.d.ts +0 -8
  369. package/data-table/lib/data-source.d.ts +0 -5
  370. package/data-table/lib/data-table/data-table-layout.d.ts +0 -31
  371. package/data-table/lib/data-table/data-table.d.ts +0 -699
  372. package/data-table/lib/data-table/services/data-table-column-visibility.service.d.ts +0 -19
  373. package/data-table/lib/data-table/services/data-table-editing.service.d.ts +0 -37
  374. package/data-table/lib/data-table/services/data-table-pinning.service.d.ts +0 -37
  375. package/data-table/lib/data-table-cell.d.ts +0 -44
  376. package/data-table/lib/data-table-edit-cell.d.ts +0 -44
  377. package/data-table/lib/data-table-error.d.ts +0 -37
  378. package/data-table/lib/data-table-footer.d.ts +0 -26
  379. package/data-table/lib/data-table-no-data.d.ts +0 -19
  380. package/data-table/lib/filter-dropdown/filter-dropdown.d.ts +0 -54
  381. package/data-table/lib/types.d.ts +0 -134
  382. package/data-table/malva-ui-core-data-table.d.ts +0 -5
  383. package/date-range-picker/index.d.ts +0 -1
  384. package/date-range-picker/lib/date-range-picker/date-range-picker.d.ts +0 -145
  385. package/date-range-picker/malva-ui-core-date-range-picker.d.ts +0 -5
  386. package/day-picker/index.d.ts +0 -1
  387. package/day-picker/lib/day-picker/day-picker.d.ts +0 -51
  388. package/day-picker/malva-ui-core-day-picker.d.ts +0 -5
  389. package/dialog/index.d.ts +0 -11
  390. package/dialog/lib/confirm-dialog-options.d.ts +0 -41
  391. package/dialog/lib/confirm-dialog.d.ts +0 -52
  392. package/dialog/lib/dialog/dialog.d.ts +0 -22
  393. package/dialog/lib/dialog-body.d.ts +0 -9
  394. package/dialog/lib/dialog-close.d.ts +0 -27
  395. package/dialog/lib/dialog-config.d.ts +0 -112
  396. package/dialog/lib/dialog-container.d.ts +0 -40
  397. package/dialog/lib/dialog-footer.d.ts +0 -13
  398. package/dialog/lib/dialog-header.d.ts +0 -74
  399. package/dialog/lib/dialog-ref.d.ts +0 -95
  400. package/dialog/lib/dialog-template.d.ts +0 -65
  401. package/dialog/lib/dialog-text-content.d.ts +0 -24
  402. package/dialog/lib/dialog.service.d.ts +0 -63
  403. package/dialog/lib/generate-routable-dialog-route.d.ts +0 -49
  404. package/dialog/lib/inject-dialog-ref.d.ts +0 -8
  405. package/dialog/lib/routable-dialog.d.ts +0 -30
  406. package/dialog/malva-ui-core-dialog.d.ts +0 -5
  407. package/divider/index.d.ts +0 -1
  408. package/divider/lib/divider/divider.d.ts +0 -64
  409. package/divider/malva-ui-core-divider.d.ts +0 -5
  410. package/drawer/index.d.ts +0 -11
  411. package/drawer/lib/drawer/drawer.d.ts +0 -106
  412. package/drawer/lib/drawer-body.d.ts +0 -8
  413. package/drawer/lib/drawer-content.d.ts +0 -6
  414. package/drawer/lib/drawer-footer.d.ts +0 -5
  415. package/drawer/lib/drawer-header.d.ts +0 -5
  416. package/drawer/lib/drawer-ref.d.ts +0 -29
  417. package/drawer/lib/drawer-resize.d.ts +0 -65
  418. package/drawer/lib/drawer-section/drawer-section.d.ts +0 -15
  419. package/drawer/lib/drawer-sections/drawer-sections.d.ts +0 -22
  420. package/drawer/lib/drawer-sections.service.d.ts +0 -42
  421. package/drawer/lib/drawer.service.d.ts +0 -66
  422. package/drawer/lib/generate-routable-drawer-route.d.ts +0 -42
  423. package/drawer/lib/routable-drawer.d.ts +0 -30
  424. package/drawer/malva-ui-core-drawer.d.ts +0 -5
  425. package/dropdown/index.d.ts +0 -9
  426. package/dropdown/lib/active-descendant.d.ts +0 -64
  427. package/dropdown/lib/dropdown-panel/dropdown-panel.d.ts +0 -178
  428. package/dropdown/lib/highlight-match.pipe.d.ts +0 -27
  429. package/dropdown/lib/option-matcher.d.ts +0 -87
  430. package/dropdown/lib/options-adapter.d.ts +0 -142
  431. package/dropdown/lib/options-result.d.ts +0 -6
  432. package/dropdown/lib/reconciliation.d.ts +0 -19
  433. package/dropdown/lib/select-data-source.d.ts +0 -18
  434. package/dropdown/lib/select-option.d.ts +0 -37
  435. package/dropdown/malva-ui-core-dropdown.d.ts +0 -5
  436. package/empty-state/index.d.ts +0 -1
  437. package/empty-state/lib/empty-state/empty-state.d.ts +0 -34
  438. package/empty-state/malva-ui-core-empty-state.d.ts +0 -5
  439. package/esm2022/accordion/index.js +0 -4
  440. package/esm2022/accordion/index.js.map +0 -1
  441. package/esm2022/accordion/lib/accordion/accordion.js +0 -65
  442. package/esm2022/accordion/lib/accordion/accordion.js.map +0 -1
  443. package/esm2022/accordion/lib/accordion-item/accordion-header.js +0 -30
  444. package/esm2022/accordion/lib/accordion-item/accordion-header.js.map +0 -1
  445. package/esm2022/accordion/lib/accordion-item/accordion-item.js +0 -70
  446. package/esm2022/accordion/lib/accordion-item/accordion-item.js.map +0 -1
  447. package/esm2022/accordion/malva-ui-core-accordion.js +0 -5
  448. package/esm2022/accordion/malva-ui-core-accordion.js.map +0 -1
  449. package/esm2022/action-bar/index.js +0 -5
  450. package/esm2022/action-bar/index.js.map +0 -1
  451. package/esm2022/action-bar/lib/action-bar/action-bar.js +0 -64
  452. package/esm2022/action-bar/lib/action-bar/action-bar.js.map +0 -1
  453. package/esm2022/action-bar/lib/action-bar/components/action-bar-actions.js +0 -20
  454. package/esm2022/action-bar/lib/action-bar/components/action-bar-actions.js.map +0 -1
  455. package/esm2022/action-bar/lib/action-bar/components/action-bar-logo.js +0 -13
  456. package/esm2022/action-bar/lib/action-bar/components/action-bar-logo.js.map +0 -1
  457. package/esm2022/action-bar/lib/action-bar/components/action-bar-spacer.js +0 -13
  458. package/esm2022/action-bar/lib/action-bar/components/action-bar-spacer.js.map +0 -1
  459. package/esm2022/action-bar/malva-ui-core-action-bar.js +0 -5
  460. package/esm2022/action-bar/malva-ui-core-action-bar.js.map +0 -1
  461. package/esm2022/alert/index.js +0 -3
  462. package/esm2022/alert/index.js.map +0 -1
  463. package/esm2022/alert/lib/alert/alert.directives.js +0 -53
  464. package/esm2022/alert/lib/alert/alert.directives.js.map +0 -1
  465. package/esm2022/alert/lib/alert/alert.js +0 -118
  466. package/esm2022/alert/lib/alert/alert.js.map +0 -1
  467. package/esm2022/alert/malva-ui-core-alert.js +0 -5
  468. package/esm2022/alert/malva-ui-core-alert.js.map +0 -1
  469. package/esm2022/autocomplete/index.js +0 -2
  470. package/esm2022/autocomplete/index.js.map +0 -1
  471. package/esm2022/autocomplete/lib/autocomplete/autocomplete.js +0 -765
  472. package/esm2022/autocomplete/lib/autocomplete/autocomplete.js.map +0 -1
  473. package/esm2022/autocomplete/malva-ui-core-autocomplete.js +0 -5
  474. package/esm2022/autocomplete/malva-ui-core-autocomplete.js.map +0 -1
  475. package/esm2022/avatar/index.js +0 -3
  476. package/esm2022/avatar/index.js.map +0 -1
  477. package/esm2022/avatar/lib/avatar/avatar.js +0 -192
  478. package/esm2022/avatar/lib/avatar/avatar.js.map +0 -1
  479. package/esm2022/avatar/lib/color-from-text.pipe.js +0 -39
  480. package/esm2022/avatar/lib/color-from-text.pipe.js.map +0 -1
  481. package/esm2022/avatar/malva-ui-core-avatar.js +0 -5
  482. package/esm2022/avatar/malva-ui-core-avatar.js.map +0 -1
  483. package/esm2022/avatar-group/index.js +0 -2
  484. package/esm2022/avatar-group/index.js.map +0 -1
  485. package/esm2022/avatar-group/lib/avatar-group/avatar-group.js +0 -217
  486. package/esm2022/avatar-group/lib/avatar-group/avatar-group.js.map +0 -1
  487. package/esm2022/avatar-group/malva-ui-core-avatar-group.js +0 -5
  488. package/esm2022/avatar-group/malva-ui-core-avatar-group.js.map +0 -1
  489. package/esm2022/badge/index.js +0 -3
  490. package/esm2022/badge/index.js.map +0 -1
  491. package/esm2022/badge/lib/badge/badge.js +0 -71
  492. package/esm2022/badge/lib/badge/badge.js.map +0 -1
  493. package/esm2022/badge/lib/badge-icon.js +0 -47
  494. package/esm2022/badge/lib/badge-icon.js.map +0 -1
  495. package/esm2022/badge/malva-ui-core-badge.js +0 -5
  496. package/esm2022/badge/malva-ui-core-badge.js.map +0 -1
  497. package/esm2022/bottom-nav/index.js +0 -2
  498. package/esm2022/bottom-nav/index.js.map +0 -1
  499. package/esm2022/bottom-nav/lib/bottom-nav/bottom-nav.js +0 -155
  500. package/esm2022/bottom-nav/lib/bottom-nav/bottom-nav.js.map +0 -1
  501. package/esm2022/bottom-nav/malva-ui-core-bottom-nav.js +0 -5
  502. package/esm2022/bottom-nav/malva-ui-core-bottom-nav.js.map +0 -1
  503. package/esm2022/breadcrumb/index.js +0 -6
  504. package/esm2022/breadcrumb/index.js.map +0 -1
  505. package/esm2022/breadcrumb/lib/breadcrumb/breadcrumb-item-host.js +0 -43
  506. package/esm2022/breadcrumb/lib/breadcrumb/breadcrumb-item-host.js.map +0 -1
  507. package/esm2022/breadcrumb/lib/breadcrumb/breadcrumb-item.js +0 -110
  508. package/esm2022/breadcrumb/lib/breadcrumb/breadcrumb-item.js.map +0 -1
  509. package/esm2022/breadcrumb/lib/breadcrumb/breadcrumb-separator.js +0 -38
  510. package/esm2022/breadcrumb/lib/breadcrumb/breadcrumb-separator.js.map +0 -1
  511. package/esm2022/breadcrumb/lib/breadcrumb/breadcrumb.js +0 -284
  512. package/esm2022/breadcrumb/lib/breadcrumb/breadcrumb.js.map +0 -1
  513. package/esm2022/breadcrumb/lib/breadcrumb/breadcrumb.types.js +0 -1
  514. package/esm2022/breadcrumb/lib/breadcrumb/breadcrumb.types.js.map +0 -1
  515. package/esm2022/breadcrumb/malva-ui-core-breadcrumb.js +0 -5
  516. package/esm2022/breadcrumb/malva-ui-core-breadcrumb.js.map +0 -1
  517. package/esm2022/button/index.js +0 -8
  518. package/esm2022/button/index.js.map +0 -1
  519. package/esm2022/button/lib/button/button.js +0 -137
  520. package/esm2022/button/lib/button/button.js.map +0 -1
  521. package/esm2022/button/lib/button-close/button-close.js +0 -52
  522. package/esm2022/button/lib/button-close/button-close.js.map +0 -1
  523. package/esm2022/button/lib/button-group/button-group.js +0 -44
  524. package/esm2022/button/lib/button-group/button-group.js.map +0 -1
  525. package/esm2022/button/lib/button-split/button-split.js +0 -44
  526. package/esm2022/button/lib/button-split/button-split.js.map +0 -1
  527. package/esm2022/button/lib/button-toggle/button-toggle.js +0 -94
  528. package/esm2022/button/lib/button-toggle/button-toggle.js.map +0 -1
  529. package/esm2022/button/lib/button-variant.token.js +0 -4
  530. package/esm2022/button/lib/button-variant.token.js.map +0 -1
  531. package/esm2022/button/lib/button.directives.js +0 -37
  532. package/esm2022/button/lib/button.directives.js.map +0 -1
  533. package/esm2022/button/lib/button.types.js +0 -1
  534. package/esm2022/button/lib/button.types.js.map +0 -1
  535. package/esm2022/button/malva-ui-core-button.js +0 -5
  536. package/esm2022/button/malva-ui-core-button.js.map +0 -1
  537. package/esm2022/calendar/index.js +0 -4
  538. package/esm2022/calendar/index.js.map +0 -1
  539. package/esm2022/calendar/lib/calendar/calendar.js +0 -672
  540. package/esm2022/calendar/lib/calendar/calendar.js.map +0 -1
  541. package/esm2022/calendar/lib/date-provider/date-adapter.js +0 -111
  542. package/esm2022/calendar/lib/date-provider/date-adapter.js.map +0 -1
  543. package/esm2022/calendar/lib/date-provider/native-date-adapter.js +0 -151
  544. package/esm2022/calendar/lib/date-provider/native-date-adapter.js.map +0 -1
  545. package/esm2022/calendar/malva-ui-core-calendar.js +0 -5
  546. package/esm2022/calendar/malva-ui-core-calendar.js.map +0 -1
  547. package/esm2022/card/index.js +0 -6
  548. package/esm2022/card/index.js.map +0 -1
  549. package/esm2022/card/lib/card/card.js +0 -54
  550. package/esm2022/card/lib/card/card.js.map +0 -1
  551. package/esm2022/card/lib/card-actions-def.js +0 -27
  552. package/esm2022/card/lib/card-actions-def.js.map +0 -1
  553. package/esm2022/card/lib/card-footer-def.js +0 -32
  554. package/esm2022/card/lib/card-footer-def.js.map +0 -1
  555. package/esm2022/card/lib/card-header-def.js +0 -27
  556. package/esm2022/card/lib/card-header-def.js.map +0 -1
  557. package/esm2022/card/lib/card-subheader-def.js +0 -33
  558. package/esm2022/card/lib/card-subheader-def.js.map +0 -1
  559. package/esm2022/card/malva-ui-core-card.js +0 -5
  560. package/esm2022/card/malva-ui-core-card.js.map +0 -1
  561. package/esm2022/chat/index.js +0 -10
  562. package/esm2022/chat/index.js.map +0 -1
  563. package/esm2022/chat/lib/chat/chat.js +0 -326
  564. package/esm2022/chat/lib/chat/chat.js.map +0 -1
  565. package/esm2022/chat/lib/chat-audio/chat-audio.js +0 -110
  566. package/esm2022/chat/lib/chat-audio/chat-audio.js.map +0 -1
  567. package/esm2022/chat/lib/chat-audio/chat-audio.service.js +0 -28
  568. package/esm2022/chat/lib/chat-audio/chat-audio.service.js.map +0 -1
  569. package/esm2022/chat/lib/chat-date/chat-date.js +0 -46
  570. package/esm2022/chat/lib/chat-date/chat-date.js.map +0 -1
  571. package/esm2022/chat/lib/chat-format.js +0 -11
  572. package/esm2022/chat/lib/chat-format.js.map +0 -1
  573. package/esm2022/chat/lib/chat-media-grid/chat-media-grid.js +0 -53
  574. package/esm2022/chat/lib/chat-media-grid/chat-media-grid.js.map +0 -1
  575. package/esm2022/chat/lib/chat-message/chat-message.js +0 -86
  576. package/esm2022/chat/lib/chat-message/chat-message.js.map +0 -1
  577. package/esm2022/chat/lib/chat-render-list.js +0 -55
  578. package/esm2022/chat/lib/chat-render-list.js.map +0 -1
  579. package/esm2022/chat/lib/chat-tokens.js +0 -9
  580. package/esm2022/chat/lib/chat-tokens.js.map +0 -1
  581. package/esm2022/chat/lib/chat-typing/chat-typing.js +0 -50
  582. package/esm2022/chat/lib/chat-typing/chat-typing.js.map +0 -1
  583. package/esm2022/chat/lib/chat.types.js +0 -1
  584. package/esm2022/chat/lib/chat.types.js.map +0 -1
  585. package/esm2022/chat/lib/defs/chat-author-def.js +0 -27
  586. package/esm2022/chat/lib/defs/chat-author-def.js.map +0 -1
  587. package/esm2022/chat/lib/defs/chat-date-def.js +0 -24
  588. package/esm2022/chat/lib/defs/chat-date-def.js.map +0 -1
  589. package/esm2022/chat/lib/defs/chat-message-def.js +0 -30
  590. package/esm2022/chat/lib/defs/chat-message-def.js.map +0 -1
  591. package/esm2022/chat/malva-ui-core-chat.js +0 -5
  592. package/esm2022/chat/malva-ui-core-chat.js.map +0 -1
  593. package/esm2022/checkbox/index.js +0 -4
  594. package/esm2022/checkbox/index.js.map +0 -1
  595. package/esm2022/checkbox/lib/checkbox/checkbox.js +0 -201
  596. package/esm2022/checkbox/lib/checkbox/checkbox.js.map +0 -1
  597. package/esm2022/checkbox/lib/checkbox-group/checkbox-group.js +0 -68
  598. package/esm2022/checkbox/lib/checkbox-group/checkbox-group.js.map +0 -1
  599. package/esm2022/checkbox/lib/checkbox-group-token.js +0 -3
  600. package/esm2022/checkbox/lib/checkbox-group-token.js.map +0 -1
  601. package/esm2022/checkbox/malva-ui-core-checkbox.js +0 -5
  602. package/esm2022/checkbox/malva-ui-core-checkbox.js.map +0 -1
  603. package/esm2022/chip/index.js +0 -3
  604. package/esm2022/chip/index.js.map +0 -1
  605. package/esm2022/chip/lib/chip/chip.directives.js +0 -32
  606. package/esm2022/chip/lib/chip/chip.directives.js.map +0 -1
  607. package/esm2022/chip/lib/chip/chip.js +0 -140
  608. package/esm2022/chip/lib/chip/chip.js.map +0 -1
  609. package/esm2022/chip/malva-ui-core-chip.js +0 -5
  610. package/esm2022/chip/malva-ui-core-chip.js.map +0 -1
  611. package/esm2022/color-picker/index.js +0 -4
  612. package/esm2022/color-picker/index.js.map +0 -1
  613. package/esm2022/color-picker/lib/color-picker/color-picker.js +0 -530
  614. package/esm2022/color-picker/lib/color-picker/color-picker.js.map +0 -1
  615. package/esm2022/color-picker/lib/color-picker-popup/color-picker-popup.js +0 -419
  616. package/esm2022/color-picker/lib/color-picker-popup/color-picker-popup.js.map +0 -1
  617. package/esm2022/color-picker/lib/color-utils/color-utils.js +0 -256
  618. package/esm2022/color-picker/lib/color-utils/color-utils.js.map +0 -1
  619. package/esm2022/color-picker/malva-ui-core-color-picker.js +0 -5
  620. package/esm2022/color-picker/malva-ui-core-color-picker.js.map +0 -1
  621. package/esm2022/combobox/index.js +0 -3
  622. package/esm2022/combobox/index.js.map +0 -1
  623. package/esm2022/combobox/lib/combobox/combobox.js +0 -911
  624. package/esm2022/combobox/lib/combobox/combobox.js.map +0 -1
  625. package/esm2022/combobox/lib/combobox-template.directives.js +0 -24
  626. package/esm2022/combobox/lib/combobox-template.directives.js.map +0 -1
  627. package/esm2022/combobox/malva-ui-core-combobox.js +0 -5
  628. package/esm2022/combobox/malva-ui-core-combobox.js.map +0 -1
  629. package/esm2022/copy-to-clipboard/index.js +0 -2
  630. package/esm2022/copy-to-clipboard/index.js.map +0 -1
  631. package/esm2022/copy-to-clipboard/lib/copy-to-clipboard/copy-to-clipboard.js +0 -201
  632. package/esm2022/copy-to-clipboard/lib/copy-to-clipboard/copy-to-clipboard.js.map +0 -1
  633. package/esm2022/copy-to-clipboard/malva-ui-core-copy-to-clipboard.js +0 -5
  634. package/esm2022/copy-to-clipboard/malva-ui-core-copy-to-clipboard.js.map +0 -1
  635. package/esm2022/data-table/index.js +0 -9
  636. package/esm2022/data-table/index.js.map +0 -1
  637. package/esm2022/data-table/lib/data-source.js +0 -6
  638. package/esm2022/data-table/lib/data-source.js.map +0 -1
  639. package/esm2022/data-table/lib/data-table/data-table-layout.js +0 -84
  640. package/esm2022/data-table/lib/data-table/data-table-layout.js.map +0 -1
  641. package/esm2022/data-table/lib/data-table/data-table.js +0 -1846
  642. package/esm2022/data-table/lib/data-table/data-table.js.map +0 -1
  643. package/esm2022/data-table/lib/data-table/services/data-table-column-visibility.service.js +0 -37
  644. package/esm2022/data-table/lib/data-table/services/data-table-column-visibility.service.js.map +0 -1
  645. package/esm2022/data-table/lib/data-table/services/data-table-editing.service.js +0 -63
  646. package/esm2022/data-table/lib/data-table/services/data-table-editing.service.js.map +0 -1
  647. package/esm2022/data-table/lib/data-table/services/data-table-pinning.service.js +0 -68
  648. package/esm2022/data-table/lib/data-table/services/data-table-pinning.service.js.map +0 -1
  649. package/esm2022/data-table/lib/data-table-cell.js +0 -46
  650. package/esm2022/data-table/lib/data-table-cell.js.map +0 -1
  651. package/esm2022/data-table/lib/data-table-edit-cell.js +0 -46
  652. package/esm2022/data-table/lib/data-table-edit-cell.js.map +0 -1
  653. package/esm2022/data-table/lib/data-table-error.js +0 -37
  654. package/esm2022/data-table/lib/data-table-error.js.map +0 -1
  655. package/esm2022/data-table/lib/data-table-footer.js +0 -33
  656. package/esm2022/data-table/lib/data-table-footer.js.map +0 -1
  657. package/esm2022/data-table/lib/data-table-no-data.js +0 -26
  658. package/esm2022/data-table/lib/data-table-no-data.js.map +0 -1
  659. package/esm2022/data-table/lib/filter-dropdown/filter-dropdown.js +0 -224
  660. package/esm2022/data-table/lib/filter-dropdown/filter-dropdown.js.map +0 -1
  661. package/esm2022/data-table/lib/types.js +0 -1
  662. package/esm2022/data-table/lib/types.js.map +0 -1
  663. package/esm2022/data-table/malva-ui-core-data-table.js +0 -5
  664. package/esm2022/data-table/malva-ui-core-data-table.js.map +0 -1
  665. package/esm2022/date-range-picker/index.js +0 -2
  666. package/esm2022/date-range-picker/index.js.map +0 -1
  667. package/esm2022/date-range-picker/lib/date-range-picker/date-range-picker.js +0 -269
  668. package/esm2022/date-range-picker/lib/date-range-picker/date-range-picker.js.map +0 -1
  669. package/esm2022/date-range-picker/malva-ui-core-date-range-picker.js +0 -5
  670. package/esm2022/date-range-picker/malva-ui-core-date-range-picker.js.map +0 -1
  671. package/esm2022/day-picker/index.js +0 -2
  672. package/esm2022/day-picker/index.js.map +0 -1
  673. package/esm2022/day-picker/lib/day-picker/day-picker.js +0 -124
  674. package/esm2022/day-picker/lib/day-picker/day-picker.js.map +0 -1
  675. package/esm2022/day-picker/malva-ui-core-day-picker.js +0 -5
  676. package/esm2022/day-picker/malva-ui-core-day-picker.js.map +0 -1
  677. package/esm2022/dialog/index.js +0 -12
  678. package/esm2022/dialog/index.js.map +0 -1
  679. package/esm2022/dialog/lib/confirm-dialog-options.js +0 -1
  680. package/esm2022/dialog/lib/confirm-dialog-options.js.map +0 -1
  681. package/esm2022/dialog/lib/confirm-dialog.js +0 -155
  682. package/esm2022/dialog/lib/confirm-dialog.js.map +0 -1
  683. package/esm2022/dialog/lib/dialog/dialog.js +0 -40
  684. package/esm2022/dialog/lib/dialog/dialog.js.map +0 -1
  685. package/esm2022/dialog/lib/dialog-body.js +0 -33
  686. package/esm2022/dialog/lib/dialog-body.js.map +0 -1
  687. package/esm2022/dialog/lib/dialog-close.js +0 -45
  688. package/esm2022/dialog/lib/dialog-close.js.map +0 -1
  689. package/esm2022/dialog/lib/dialog-config.js +0 -23
  690. package/esm2022/dialog/lib/dialog-config.js.map +0 -1
  691. package/esm2022/dialog/lib/dialog-container.js +0 -69
  692. package/esm2022/dialog/lib/dialog-container.js.map +0 -1
  693. package/esm2022/dialog/lib/dialog-footer.js +0 -29
  694. package/esm2022/dialog/lib/dialog-footer.js.map +0 -1
  695. package/esm2022/dialog/lib/dialog-header.js +0 -181
  696. package/esm2022/dialog/lib/dialog-header.js.map +0 -1
  697. package/esm2022/dialog/lib/dialog-ref.js +0 -167
  698. package/esm2022/dialog/lib/dialog-ref.js.map +0 -1
  699. package/esm2022/dialog/lib/dialog-template.js +0 -136
  700. package/esm2022/dialog/lib/dialog-template.js.map +0 -1
  701. package/esm2022/dialog/lib/dialog-text-content.js +0 -59
  702. package/esm2022/dialog/lib/dialog-text-content.js.map +0 -1
  703. package/esm2022/dialog/lib/dialog.service.js +0 -205
  704. package/esm2022/dialog/lib/dialog.service.js.map +0 -1
  705. package/esm2022/dialog/lib/generate-routable-dialog-route.js +0 -59
  706. package/esm2022/dialog/lib/generate-routable-dialog-route.js.map +0 -1
  707. package/esm2022/dialog/lib/inject-dialog-ref.js +0 -16
  708. package/esm2022/dialog/lib/inject-dialog-ref.js.map +0 -1
  709. package/esm2022/dialog/lib/routable-dialog.js +0 -91
  710. package/esm2022/dialog/lib/routable-dialog.js.map +0 -1
  711. package/esm2022/dialog/malva-ui-core-dialog.js +0 -5
  712. package/esm2022/dialog/malva-ui-core-dialog.js.map +0 -1
  713. package/esm2022/divider/index.js +0 -2
  714. package/esm2022/divider/index.js.map +0 -1
  715. package/esm2022/divider/lib/divider/divider.js +0 -73
  716. package/esm2022/divider/lib/divider/divider.js.map +0 -1
  717. package/esm2022/divider/malva-ui-core-divider.js +0 -5
  718. package/esm2022/divider/malva-ui-core-divider.js.map +0 -1
  719. package/esm2022/drawer/index.js +0 -12
  720. package/esm2022/drawer/index.js.map +0 -1
  721. package/esm2022/drawer/lib/drawer/drawer.js +0 -180
  722. package/esm2022/drawer/lib/drawer/drawer.js.map +0 -1
  723. package/esm2022/drawer/lib/drawer-body.js +0 -32
  724. package/esm2022/drawer/lib/drawer-body.js.map +0 -1
  725. package/esm2022/drawer/lib/drawer-content.js +0 -14
  726. package/esm2022/drawer/lib/drawer-content.js.map +0 -1
  727. package/esm2022/drawer/lib/drawer-footer.js +0 -14
  728. package/esm2022/drawer/lib/drawer-footer.js.map +0 -1
  729. package/esm2022/drawer/lib/drawer-header.js +0 -14
  730. package/esm2022/drawer/lib/drawer-header.js.map +0 -1
  731. package/esm2022/drawer/lib/drawer-ref.js +0 -31
  732. package/esm2022/drawer/lib/drawer-ref.js.map +0 -1
  733. package/esm2022/drawer/lib/drawer-resize.js +0 -243
  734. package/esm2022/drawer/lib/drawer-resize.js.map +0 -1
  735. package/esm2022/drawer/lib/drawer-section/drawer-section.js +0 -26
  736. package/esm2022/drawer/lib/drawer-section/drawer-section.js.map +0 -1
  737. package/esm2022/drawer/lib/drawer-sections/drawer-sections.js +0 -58
  738. package/esm2022/drawer/lib/drawer-sections/drawer-sections.js.map +0 -1
  739. package/esm2022/drawer/lib/drawer-sections.service.js +0 -83
  740. package/esm2022/drawer/lib/drawer-sections.service.js.map +0 -1
  741. package/esm2022/drawer/lib/drawer.service.js +0 -86
  742. package/esm2022/drawer/lib/drawer.service.js.map +0 -1
  743. package/esm2022/drawer/lib/generate-routable-drawer-route.js +0 -52
  744. package/esm2022/drawer/lib/generate-routable-drawer-route.js.map +0 -1
  745. package/esm2022/drawer/lib/routable-drawer.js +0 -91
  746. package/esm2022/drawer/lib/routable-drawer.js.map +0 -1
  747. package/esm2022/drawer/malva-ui-core-drawer.js +0 -5
  748. package/esm2022/drawer/malva-ui-core-drawer.js.map +0 -1
  749. package/esm2022/dropdown/index.js +0 -10
  750. package/esm2022/dropdown/index.js.map +0 -1
  751. package/esm2022/dropdown/lib/active-descendant.js +0 -92
  752. package/esm2022/dropdown/lib/active-descendant.js.map +0 -1
  753. package/esm2022/dropdown/lib/dropdown-panel/dropdown-panel.js +0 -295
  754. package/esm2022/dropdown/lib/dropdown-panel/dropdown-panel.js.map +0 -1
  755. package/esm2022/dropdown/lib/highlight-match.pipe.js +0 -36
  756. package/esm2022/dropdown/lib/highlight-match.pipe.js.map +0 -1
  757. package/esm2022/dropdown/lib/option-matcher.js +0 -124
  758. package/esm2022/dropdown/lib/option-matcher.js.map +0 -1
  759. package/esm2022/dropdown/lib/options-adapter.js +0 -356
  760. package/esm2022/dropdown/lib/options-adapter.js.map +0 -1
  761. package/esm2022/dropdown/lib/options-result.js +0 -11
  762. package/esm2022/dropdown/lib/options-result.js.map +0 -1
  763. package/esm2022/dropdown/lib/reconciliation.js +0 -32
  764. package/esm2022/dropdown/lib/reconciliation.js.map +0 -1
  765. package/esm2022/dropdown/lib/select-data-source.js +0 -21
  766. package/esm2022/dropdown/lib/select-data-source.js.map +0 -1
  767. package/esm2022/dropdown/lib/select-option.js +0 -25
  768. package/esm2022/dropdown/lib/select-option.js.map +0 -1
  769. package/esm2022/dropdown/malva-ui-core-dropdown.js +0 -5
  770. package/esm2022/dropdown/malva-ui-core-dropdown.js.map +0 -1
  771. package/esm2022/empty-state/index.js +0 -2
  772. package/esm2022/empty-state/index.js.map +0 -1
  773. package/esm2022/empty-state/lib/empty-state/empty-state.js +0 -43
  774. package/esm2022/empty-state/lib/empty-state/empty-state.js.map +0 -1
  775. package/esm2022/empty-state/malva-ui-core-empty-state.js +0 -5
  776. package/esm2022/empty-state/malva-ui-core-empty-state.js.map +0 -1
  777. package/esm2022/expand/index.js +0 -3
  778. package/esm2022/expand/index.js.map +0 -1
  779. package/esm2022/expand/lib/expand/expand-content.js +0 -33
  780. package/esm2022/expand/lib/expand/expand-content.js.map +0 -1
  781. package/esm2022/expand/lib/expand/expand.js +0 -93
  782. package/esm2022/expand/lib/expand/expand.js.map +0 -1
  783. package/esm2022/expand/malva-ui-core-expand.js +0 -5
  784. package/esm2022/expand/malva-ui-core-expand.js.map +0 -1
  785. package/esm2022/file-upload/index.js +0 -5
  786. package/esm2022/file-upload/index.js.map +0 -1
  787. package/esm2022/file-upload/lib/file-upload/file-upload.js +0 -324
  788. package/esm2022/file-upload/lib/file-upload/file-upload.js.map +0 -1
  789. package/esm2022/file-upload/lib/file-upload/file-upload.types.js +0 -1
  790. package/esm2022/file-upload/lib/file-upload/file-upload.types.js.map +0 -1
  791. package/esm2022/file-upload/lib/file-upload-action.js +0 -65
  792. package/esm2022/file-upload/lib/file-upload-action.js.map +0 -1
  793. package/esm2022/file-upload/lib/file-upload-item/file-upload-item.js +0 -55
  794. package/esm2022/file-upload/lib/file-upload-item/file-upload-item.js.map +0 -1
  795. package/esm2022/file-upload/malva-ui-core-file-upload.js +0 -5
  796. package/esm2022/file-upload/malva-ui-core-file-upload.js.map +0 -1
  797. package/esm2022/filter/index.js +0 -4
  798. package/esm2022/filter/index.js.map +0 -1
  799. package/esm2022/filter/lib/filter/filter.js +0 -552
  800. package/esm2022/filter/lib/filter/filter.js.map +0 -1
  801. package/esm2022/filter/lib/filter.types.js +0 -1
  802. package/esm2022/filter/lib/filter.types.js.map +0 -1
  803. package/esm2022/filter/lib/smart-filter-bar/smart-filter-bar.js +0 -518
  804. package/esm2022/filter/lib/smart-filter-bar/smart-filter-bar.js.map +0 -1
  805. package/esm2022/filter/malva-ui-core-filter.js +0 -5
  806. package/esm2022/filter/malva-ui-core-filter.js.map +0 -1
  807. package/esm2022/form/index.js +0 -7
  808. package/esm2022/form/index.js.map +0 -1
  809. package/esm2022/form/lib/fieldset/fieldset.js +0 -101
  810. package/esm2022/form/lib/fieldset/fieldset.js.map +0 -1
  811. package/esm2022/form/lib/fieldset-span.js +0 -49
  812. package/esm2022/form/lib/fieldset-span.js.map +0 -1
  813. package/esm2022/form/lib/form/form.js +0 -60
  814. package/esm2022/form/lib/form/form.js.map +0 -1
  815. package/esm2022/form/lib/form-actions.js +0 -34
  816. package/esm2022/form/lib/form-actions.js.map +0 -1
  817. package/esm2022/form/lib/form-gap.js +0 -15
  818. package/esm2022/form/lib/form-gap.js.map +0 -1
  819. package/esm2022/form/lib/form-header.js +0 -27
  820. package/esm2022/form/lib/form-header.js.map +0 -1
  821. package/esm2022/form/lib/form.types.js +0 -1
  822. package/esm2022/form/lib/form.types.js.map +0 -1
  823. package/esm2022/form/malva-ui-core-form.js +0 -5
  824. package/esm2022/form/malva-ui-core-form.js.map +0 -1
  825. package/esm2022/form-utils/index.js +0 -16
  826. package/esm2022/form-utils/index.js.map +0 -1
  827. package/esm2022/form-utils/lib/aria-value-bridge.js +0 -57
  828. package/esm2022/form-utils/lib/aria-value-bridge.js.map +0 -1
  829. package/esm2022/form-utils/lib/description/description.js +0 -24
  830. package/esm2022/form-utils/lib/description/description.js.map +0 -1
  831. package/esm2022/form-utils/lib/focusable-group-base.js +0 -87
  832. package/esm2022/form-utils/lib/focusable-group-base.js.map +0 -1
  833. package/esm2022/form-utils/lib/form-control-base/signal-form-control-base.js +0 -192
  834. package/esm2022/form-utils/lib/form-control-base/signal-form-control-base.js.map +0 -1
  835. package/esm2022/form-utils/lib/form-control-sides.js +0 -34
  836. package/esm2022/form-utils/lib/form-control-sides.js.map +0 -1
  837. package/esm2022/form-utils/lib/form-control-wrapper/form-control-wrapper-control.js +0 -14
  838. package/esm2022/form-utils/lib/form-control-wrapper/form-control-wrapper-control.js.map +0 -1
  839. package/esm2022/form-utils/lib/form-control-wrapper/form-control-wrapper.js +0 -47
  840. package/esm2022/form-utils/lib/form-control-wrapper/form-control-wrapper.js.map +0 -1
  841. package/esm2022/form-utils/lib/form-field/form-field.js +0 -245
  842. package/esm2022/form-utils/lib/form-field/form-field.js.map +0 -1
  843. package/esm2022/form-utils/lib/hint/hint.js +0 -11
  844. package/esm2022/form-utils/lib/hint/hint.js.map +0 -1
  845. package/esm2022/form-utils/lib/label/label.js +0 -55
  846. package/esm2022/form-utils/lib/label/label.js.map +0 -1
  847. package/esm2022/form-utils/lib/message/message.js +0 -20
  848. package/esm2022/form-utils/lib/message/message.js.map +0 -1
  849. package/esm2022/form-utils/lib/models/error-display-strategy.js +0 -1
  850. package/esm2022/form-utils/lib/models/error-display-strategy.js.map +0 -1
  851. package/esm2022/form-utils/lib/models/form-control-connector.js +0 -3
  852. package/esm2022/form-utils/lib/models/form-control-connector.js.map +0 -1
  853. package/esm2022/form-utils/lib/models/form-state.js +0 -1
  854. package/esm2022/form-utils/lib/models/form-state.js.map +0 -1
  855. package/esm2022/form-utils/lib/selection.service.js +0 -81
  856. package/esm2022/form-utils/lib/selection.service.js.map +0 -1
  857. package/esm2022/form-utils/malva-ui-core-form-utils.js +0 -5
  858. package/esm2022/form-utils/malva-ui-core-form-utils.js.map +0 -1
  859. package/esm2022/form-utils/testing/index.js +0 -2
  860. package/esm2022/form-utils/testing/index.js.map +0 -1
  861. package/esm2022/form-utils/testing/lib/forms-binding-matrix.js +0 -32
  862. package/esm2022/form-utils/testing/lib/forms-binding-matrix.js.map +0 -1
  863. package/esm2022/form-utils/testing/malva-ui-core-form-utils-testing.js +0 -5
  864. package/esm2022/form-utils/testing/malva-ui-core-form-utils-testing.js.map +0 -1
  865. package/esm2022/index.js +0 -70
  866. package/esm2022/index.js.map +0 -1
  867. package/esm2022/input/index.js +0 -4
  868. package/esm2022/input/index.js.map +0 -1
  869. package/esm2022/input/lib/input/input-native.js +0 -49
  870. package/esm2022/input/lib/input/input-native.js.map +0 -1
  871. package/esm2022/input/lib/input/input-value-accessor.js +0 -4
  872. package/esm2022/input/lib/input/input-value-accessor.js.map +0 -1
  873. package/esm2022/input/lib/input/input.js +0 -277
  874. package/esm2022/input/lib/input/input.js.map +0 -1
  875. package/esm2022/input/lib/input/password-strength.js +0 -46
  876. package/esm2022/input/lib/input/password-strength.js.map +0 -1
  877. package/esm2022/input/malva-ui-core-input.js +0 -5
  878. package/esm2022/input/malva-ui-core-input.js.map +0 -1
  879. package/esm2022/kbd/index.js +0 -2
  880. package/esm2022/kbd/index.js.map +0 -1
  881. package/esm2022/kbd/lib/kbd/kbd.js +0 -124
  882. package/esm2022/kbd/lib/kbd/kbd.js.map +0 -1
  883. package/esm2022/kbd/malva-ui-core-kbd.js +0 -5
  884. package/esm2022/kbd/malva-ui-core-kbd.js.map +0 -1
  885. package/esm2022/layout/index.js +0 -5
  886. package/esm2022/layout/index.js.map +0 -1
  887. package/esm2022/layout/lib/layout/directives/MlvLayoutSide.js +0 -14
  888. package/esm2022/layout/lib/layout/directives/MlvLayoutSide.js.map +0 -1
  889. package/esm2022/layout/lib/layout/directives/MlvLayoutTop.js +0 -14
  890. package/esm2022/layout/lib/layout/directives/MlvLayoutTop.js.map +0 -1
  891. package/esm2022/layout/lib/layout/layout.js +0 -43
  892. package/esm2022/layout/lib/layout/layout.js.map +0 -1
  893. package/esm2022/layout/lib/layout/services/theme.service.js +0 -121
  894. package/esm2022/layout/lib/layout/services/theme.service.js.map +0 -1
  895. package/esm2022/layout/malva-ui-core-layout.js +0 -5
  896. package/esm2022/layout/malva-ui-core-layout.js.map +0 -1
  897. package/esm2022/link/index.js +0 -3
  898. package/esm2022/link/index.js.map +0 -1
  899. package/esm2022/link/lib/link/link.directives.js +0 -24
  900. package/esm2022/link/lib/link/link.directives.js.map +0 -1
  901. package/esm2022/link/lib/link/link.js +0 -61
  902. package/esm2022/link/lib/link/link.js.map +0 -1
  903. package/esm2022/link/malva-ui-core-link.js +0 -5
  904. package/esm2022/link/malva-ui-core-link.js.map +0 -1
  905. package/esm2022/list/index.js +0 -14
  906. package/esm2022/list/index.js.map +0 -1
  907. package/esm2022/list/lib/list/list.js +0 -28
  908. package/esm2022/list/lib/list/list.js.map +0 -1
  909. package/esm2022/list/lib/list-item/list-item.js +0 -125
  910. package/esm2022/list/lib/list-item/list-item.js.map +0 -1
  911. package/esm2022/list/lib/list-item-actions.js +0 -23
  912. package/esm2022/list/lib/list-item-actions.js.map +0 -1
  913. package/esm2022/list/lib/list-item-byline.js +0 -13
  914. package/esm2022/list/lib/list-item-byline.js.map +0 -1
  915. package/esm2022/list/lib/list-item-group/list-item-group.js +0 -25
  916. package/esm2022/list/lib/list-item-group/list-item-group.js.map +0 -1
  917. package/esm2022/list/lib/list-item-link/list-item-link.js +0 -20
  918. package/esm2022/list/lib/list-item-link/list-item-link.js.map +0 -1
  919. package/esm2022/list/lib/list-item-media.js +0 -13
  920. package/esm2022/list/lib/list-item-media.js.map +0 -1
  921. package/esm2022/list/lib/list-item-meta.js +0 -13
  922. package/esm2022/list/lib/list-item-meta.js.map +0 -1
  923. package/esm2022/list/lib/list-item-prefix.js +0 -13
  924. package/esm2022/list/lib/list-item-prefix.js.map +0 -1
  925. package/esm2022/list/lib/list-item-suffix.js +0 -13
  926. package/esm2022/list/lib/list-item-suffix.js.map +0 -1
  927. package/esm2022/list/lib/list-item-template.js +0 -14
  928. package/esm2022/list/lib/list-item-template.js.map +0 -1
  929. package/esm2022/list/lib/list-item-title.js +0 -13
  930. package/esm2022/list/lib/list-item-title.js.map +0 -1
  931. package/esm2022/list/lib/list-selectable.js +0 -116
  932. package/esm2022/list/lib/list-selectable.js.map +0 -1
  933. package/esm2022/list/malva-ui-core-list.js +0 -5
  934. package/esm2022/list/malva-ui-core-list.js.map +0 -1
  935. package/esm2022/loader/index.js +0 -2
  936. package/esm2022/loader/index.js.map +0 -1
  937. package/esm2022/loader/lib/loader/loader.js +0 -134
  938. package/esm2022/loader/lib/loader/loader.js.map +0 -1
  939. package/esm2022/loader/malva-ui-core-loader.js +0 -5
  940. package/esm2022/loader/malva-ui-core-loader.js.map +0 -1
  941. package/esm2022/malva-ui-core.js +0 -5
  942. package/esm2022/malva-ui-core.js.map +0 -1
  943. package/esm2022/menu/index.js +0 -10
  944. package/esm2022/menu/index.js.map +0 -1
  945. package/esm2022/menu/lib/menu/menu-group-label.js +0 -35
  946. package/esm2022/menu/lib/menu/menu-group-label.js.map +0 -1
  947. package/esm2022/menu/lib/menu/menu-group.js +0 -44
  948. package/esm2022/menu/lib/menu/menu-group.js.map +0 -1
  949. package/esm2022/menu/lib/menu/menu-item.js +0 -117
  950. package/esm2022/menu/lib/menu/menu-item.js.map +0 -1
  951. package/esm2022/menu/lib/menu/menu-separator.js +0 -41
  952. package/esm2022/menu/lib/menu/menu-separator.js.map +0 -1
  953. package/esm2022/menu/lib/menu/menu-trigger.js +0 -653
  954. package/esm2022/menu/lib/menu/menu-trigger.js.map +0 -1
  955. package/esm2022/menu/lib/menu/menu.js +0 -308
  956. package/esm2022/menu/lib/menu/menu.js.map +0 -1
  957. package/esm2022/menu/lib/menu/menu.types.js +0 -4
  958. package/esm2022/menu/lib/menu/menu.types.js.map +0 -1
  959. package/esm2022/menu/lib/menu/menubar.js +0 -257
  960. package/esm2022/menu/lib/menu/menubar.js.map +0 -1
  961. package/esm2022/menu/lib/menu/menubar.types.js +0 -4
  962. package/esm2022/menu/lib/menu/menubar.types.js.map +0 -1
  963. package/esm2022/menu/lib/menu/submenu-aim.js +0 -30
  964. package/esm2022/menu/lib/menu/submenu-aim.js.map +0 -1
  965. package/esm2022/menu/malva-ui-core-menu.js +0 -5
  966. package/esm2022/menu/malva-ui-core-menu.js.map +0 -1
  967. package/esm2022/notification/index.js +0 -5
  968. package/esm2022/notification/index.js.map +0 -1
  969. package/esm2022/notification/lib/notification-item/notification-item.js +0 -65
  970. package/esm2022/notification/lib/notification-item/notification-item.js.map +0 -1
  971. package/esm2022/notification/lib/notification-ref.js +0 -13
  972. package/esm2022/notification/lib/notification-ref.js.map +0 -1
  973. package/esm2022/notification/lib/notification.service.js +0 -118
  974. package/esm2022/notification/lib/notification.service.js.map +0 -1
  975. package/esm2022/notification/lib/notification.types.js +0 -6
  976. package/esm2022/notification/lib/notification.types.js.map +0 -1
  977. package/esm2022/notification/malva-ui-core-notification.js +0 -5
  978. package/esm2022/notification/malva-ui-core-notification.js.map +0 -1
  979. package/esm2022/number-input/index.js +0 -2
  980. package/esm2022/number-input/index.js.map +0 -1
  981. package/esm2022/number-input/lib/number-input/number-input.js +0 -395
  982. package/esm2022/number-input/lib/number-input/number-input.js.map +0 -1
  983. package/esm2022/number-input/malva-ui-core-number-input.js +0 -5
  984. package/esm2022/number-input/malva-ui-core-number-input.js.map +0 -1
  985. package/esm2022/page/index.js +0 -15
  986. package/esm2022/page/index.js.map +0 -1
  987. package/esm2022/page/lib/page/page-scroll.token.js +0 -9
  988. package/esm2022/page/lib/page/page-scroll.token.js.map +0 -1
  989. package/esm2022/page/lib/page/page-snap-controller.js +0 -170
  990. package/esm2022/page/lib/page/page-snap-controller.js.map +0 -1
  991. package/esm2022/page/lib/page/page-snap.directive.js +0 -65
  992. package/esm2022/page/lib/page/page-snap.directive.js.map +0 -1
  993. package/esm2022/page/lib/page/page.js +0 -173
  994. package/esm2022/page/lib/page/page.js.map +0 -1
  995. package/esm2022/page/lib/page-content/page-aside.js +0 -13
  996. package/esm2022/page/lib/page-content/page-aside.js.map +0 -1
  997. package/esm2022/page/lib/page-content/page-content.js +0 -72
  998. package/esm2022/page/lib/page-content/page-content.js.map +0 -1
  999. package/esm2022/page/lib/page-dock/page-dock.js +0 -128
  1000. package/esm2022/page/lib/page-dock/page-dock.js.map +0 -1
  1001. package/esm2022/page/lib/page-dock/page-dock.slots.js +0 -39
  1002. package/esm2022/page/lib/page-dock/page-dock.slots.js.map +0 -1
  1003. package/esm2022/page/lib/page-header/page-header.directives.js +0 -88
  1004. package/esm2022/page/lib/page-header/page-header.directives.js.map +0 -1
  1005. package/esm2022/page/lib/page-header/page-header.js +0 -124
  1006. package/esm2022/page/lib/page-header/page-header.js.map +0 -1
  1007. package/esm2022/page/lib/page-shell/page-shell-color.js +0 -193
  1008. package/esm2022/page/lib/page-shell/page-shell-color.js.map +0 -1
  1009. package/esm2022/page/lib/page-shell/page-shell-css-color.js +0 -207
  1010. package/esm2022/page/lib/page-shell/page-shell-css-color.js.map +0 -1
  1011. package/esm2022/page/lib/page-shell/page-shell.js +0 -131
  1012. package/esm2022/page/lib/page-shell/page-shell.js.map +0 -1
  1013. package/esm2022/page/lib/page-shell/page-shell.slots.js +0 -41
  1014. package/esm2022/page/lib/page-shell/page-shell.slots.js.map +0 -1
  1015. package/esm2022/page/lib/page-summary/page-summary-item.js +0 -26
  1016. package/esm2022/page/lib/page-summary/page-summary-item.js.map +0 -1
  1017. package/esm2022/page/lib/page-summary/page-summary.js +0 -87
  1018. package/esm2022/page/lib/page-summary/page-summary.js.map +0 -1
  1019. package/esm2022/page/malva-ui-core-page.js +0 -5
  1020. package/esm2022/page/malva-ui-core-page.js.map +0 -1
  1021. package/esm2022/pagination/index.js +0 -5
  1022. package/esm2022/pagination/index.js.map +0 -1
  1023. package/esm2022/pagination/lib/pagination/pagination.directives.js +0 -58
  1024. package/esm2022/pagination/lib/pagination/pagination.directives.js.map +0 -1
  1025. package/esm2022/pagination/lib/pagination/pagination.js +0 -293
  1026. package/esm2022/pagination/lib/pagination/pagination.js.map +0 -1
  1027. package/esm2022/pagination/lib/pagination/pagination.model.js +0 -1
  1028. package/esm2022/pagination/lib/pagination/pagination.model.js.map +0 -1
  1029. package/esm2022/pagination/lib/pagination/pagination.service.js +0 -108
  1030. package/esm2022/pagination/lib/pagination/pagination.service.js.map +0 -1
  1031. package/esm2022/pagination/malva-ui-core-pagination.js +0 -5
  1032. package/esm2022/pagination/malva-ui-core-pagination.js.map +0 -1
  1033. package/esm2022/pin-input/index.js +0 -3
  1034. package/esm2022/pin-input/index.js.map +0 -1
  1035. package/esm2022/pin-input/lib/pin-input/pin-input-separator.js +0 -31
  1036. package/esm2022/pin-input/lib/pin-input/pin-input-separator.js.map +0 -1
  1037. package/esm2022/pin-input/lib/pin-input/pin-input.js +0 -365
  1038. package/esm2022/pin-input/lib/pin-input/pin-input.js.map +0 -1
  1039. package/esm2022/pin-input/malva-ui-core-pin-input.js +0 -5
  1040. package/esm2022/pin-input/malva-ui-core-pin-input.js.map +0 -1
  1041. package/esm2022/popup/index.js +0 -10
  1042. package/esm2022/popup/index.js.map +0 -1
  1043. package/esm2022/popup/lib/popup/popup.js +0 -500
  1044. package/esm2022/popup/lib/popup/popup.js.map +0 -1
  1045. package/esm2022/popup/lib/popup-container/popup-container.js +0 -169
  1046. package/esm2022/popup/lib/popup-container/popup-container.js.map +0 -1
  1047. package/esm2022/popup/lib/popup-container/popup-container.token.js +0 -9
  1048. package/esm2022/popup/lib/popup-container/popup-container.token.js.map +0 -1
  1049. package/esm2022/popup/lib/popup-content.js +0 -14
  1050. package/esm2022/popup/lib/popup-content.js.map +0 -1
  1051. package/esm2022/popup/lib/popup-header-content.js +0 -26
  1052. package/esm2022/popup/lib/popup-header-content.js.map +0 -1
  1053. package/esm2022/popup/lib/popup-pinned-content.js +0 -25
  1054. package/esm2022/popup/lib/popup-pinned-content.js.map +0 -1
  1055. package/esm2022/popup/lib/popup-positions.js +0 -252
  1056. package/esm2022/popup/lib/popup-positions.js.map +0 -1
  1057. package/esm2022/popup/lib/popup-trigger/popup-trigger.js +0 -308
  1058. package/esm2022/popup/lib/popup-trigger/popup-trigger.js.map +0 -1
  1059. package/esm2022/popup/lib/popup.service.js +0 -188
  1060. package/esm2022/popup/lib/popup.service.js.map +0 -1
  1061. package/esm2022/popup/malva-ui-core-popup.js +0 -5
  1062. package/esm2022/popup/malva-ui-core-popup.js.map +0 -1
  1063. package/esm2022/progress/index.js +0 -2
  1064. package/esm2022/progress/index.js.map +0 -1
  1065. package/esm2022/progress/lib/progress/progress.js +0 -102
  1066. package/esm2022/progress/lib/progress/progress.js.map +0 -1
  1067. package/esm2022/progress/malva-ui-core-progress.js +0 -5
  1068. package/esm2022/progress/malva-ui-core-progress.js.map +0 -1
  1069. package/esm2022/radio/index.js +0 -3
  1070. package/esm2022/radio/index.js.map +0 -1
  1071. package/esm2022/radio/lib/radio/radio.js +0 -134
  1072. package/esm2022/radio/lib/radio/radio.js.map +0 -1
  1073. package/esm2022/radio/lib/radio-group/radio-group.js +0 -176
  1074. package/esm2022/radio/lib/radio-group/radio-group.js.map +0 -1
  1075. package/esm2022/radio/lib/radio-group-token.js +0 -3
  1076. package/esm2022/radio/lib/radio-group-token.js.map +0 -1
  1077. package/esm2022/radio/malva-ui-core-radio.js +0 -5
  1078. package/esm2022/radio/malva-ui-core-radio.js.map +0 -1
  1079. package/esm2022/rating/index.js +0 -2
  1080. package/esm2022/rating/index.js.map +0 -1
  1081. package/esm2022/rating/lib/rating/rating.js +0 -208
  1082. package/esm2022/rating/lib/rating/rating.js.map +0 -1
  1083. package/esm2022/rating/malva-ui-core-rating.js +0 -5
  1084. package/esm2022/rating/malva-ui-core-rating.js.map +0 -1
  1085. package/esm2022/scrollbar/index.js +0 -2
  1086. package/esm2022/scrollbar/index.js.map +0 -1
  1087. package/esm2022/scrollbar/lib/scrollbar/scrollbar.js +0 -388
  1088. package/esm2022/scrollbar/lib/scrollbar/scrollbar.js.map +0 -1
  1089. package/esm2022/scrollbar/malva-ui-core-scrollbar.js +0 -5
  1090. package/esm2022/scrollbar/malva-ui-core-scrollbar.js.map +0 -1
  1091. package/esm2022/search-field/index.js +0 -3
  1092. package/esm2022/search-field/index.js.map +0 -1
  1093. package/esm2022/search-field/lib/search-field/search-field.js +0 -535
  1094. package/esm2022/search-field/lib/search-field/search-field.js.map +0 -1
  1095. package/esm2022/search-field/lib/search-field/search-overlay-content.js +0 -35
  1096. package/esm2022/search-field/lib/search-field/search-overlay-content.js.map +0 -1
  1097. package/esm2022/search-field/malva-ui-core-search-field.js +0 -5
  1098. package/esm2022/search-field/malva-ui-core-search-field.js.map +0 -1
  1099. package/esm2022/segmented/index.js +0 -5
  1100. package/esm2022/segmented/index.js.map +0 -1
  1101. package/esm2022/segmented/lib/segmented/segmented.js +0 -248
  1102. package/esm2022/segmented/lib/segmented/segmented.js.map +0 -1
  1103. package/esm2022/segmented/lib/segmented-item/segmented-item.js +0 -194
  1104. package/esm2022/segmented/lib/segmented-item/segmented-item.js.map +0 -1
  1105. package/esm2022/segmented/lib/segmented-token.js +0 -4
  1106. package/esm2022/segmented/lib/segmented-token.js.map +0 -1
  1107. package/esm2022/segmented/lib/segmented.types.js +0 -1
  1108. package/esm2022/segmented/lib/segmented.types.js.map +0 -1
  1109. package/esm2022/segmented/malva-ui-core-segmented.js +0 -5
  1110. package/esm2022/segmented/malva-ui-core-segmented.js.map +0 -1
  1111. package/esm2022/select/index.js +0 -4
  1112. package/esm2022/select/index.js.map +0 -1
  1113. package/esm2022/select/lib/select/select.js +0 -685
  1114. package/esm2022/select/lib/select/select.js.map +0 -1
  1115. package/esm2022/select/lib/select-option.js +0 -2
  1116. package/esm2022/select/lib/select-option.js.map +0 -1
  1117. package/esm2022/select/lib/select-template.directives.js +0 -34
  1118. package/esm2022/select/lib/select-template.directives.js.map +0 -1
  1119. package/esm2022/select/malva-ui-core-select.js +0 -5
  1120. package/esm2022/select/malva-ui-core-select.js.map +0 -1
  1121. package/esm2022/sidebar/index.js +0 -16
  1122. package/esm2022/sidebar/index.js.map +0 -1
  1123. package/esm2022/sidebar/lib/sidebar/sidebar.js +0 -251
  1124. package/esm2022/sidebar/lib/sidebar/sidebar.js.map +0 -1
  1125. package/esm2022/sidebar/lib/sidebar-content.js +0 -37
  1126. package/esm2022/sidebar/lib/sidebar-content.js.map +0 -1
  1127. package/esm2022/sidebar/lib/sidebar-context.js +0 -3
  1128. package/esm2022/sidebar/lib/sidebar-context.js.map +0 -1
  1129. package/esm2022/sidebar/lib/sidebar-footer.js +0 -20
  1130. package/esm2022/sidebar/lib/sidebar-footer.js.map +0 -1
  1131. package/esm2022/sidebar/lib/sidebar-group/sidebar-group.js +0 -341
  1132. package/esm2022/sidebar/lib/sidebar-group/sidebar-group.js.map +0 -1
  1133. package/esm2022/sidebar/lib/sidebar-header.js +0 -20
  1134. package/esm2022/sidebar/lib/sidebar-header.js.map +0 -1
  1135. package/esm2022/sidebar/lib/sidebar-item/sidebar-item.js +0 -216
  1136. package/esm2022/sidebar/lib/sidebar-item/sidebar-item.js.map +0 -1
  1137. package/esm2022/sidebar/lib/sidebar-item-host.js +0 -39
  1138. package/esm2022/sidebar/lib/sidebar-item-host.js.map +0 -1
  1139. package/esm2022/sidebar/lib/sidebar-item-icon.js +0 -14
  1140. package/esm2022/sidebar/lib/sidebar-item-icon.js.map +0 -1
  1141. package/esm2022/sidebar/lib/sidebar-mode.js +0 -1
  1142. package/esm2022/sidebar/lib/sidebar-mode.js.map +0 -1
  1143. package/esm2022/sidebar/lib/sidebar-rail/sidebar-rail.js +0 -202
  1144. package/esm2022/sidebar/lib/sidebar-rail/sidebar-rail.js.map +0 -1
  1145. package/esm2022/sidebar/lib/sidebar-trigger/sidebar-trigger.js +0 -159
  1146. package/esm2022/sidebar/lib/sidebar-trigger/sidebar-trigger.js.map +0 -1
  1147. package/esm2022/sidebar/lib/sidebar-workspace/sidebar-workspace.directives.js +0 -35
  1148. package/esm2022/sidebar/lib/sidebar-workspace/sidebar-workspace.directives.js.map +0 -1
  1149. package/esm2022/sidebar/lib/sidebar-workspace/sidebar-workspace.js +0 -107
  1150. package/esm2022/sidebar/lib/sidebar-workspace/sidebar-workspace.js.map +0 -1
  1151. package/esm2022/sidebar/lib/sidebar-workspace/sidebar-workspace.types.js +0 -1
  1152. package/esm2022/sidebar/lib/sidebar-workspace/sidebar-workspace.types.js.map +0 -1
  1153. package/esm2022/sidebar/malva-ui-core-sidebar.js +0 -5
  1154. package/esm2022/sidebar/malva-ui-core-sidebar.js.map +0 -1
  1155. package/esm2022/skeleton/index.js +0 -2
  1156. package/esm2022/skeleton/index.js.map +0 -1
  1157. package/esm2022/skeleton/lib/skeleton/skeleton.js +0 -78
  1158. package/esm2022/skeleton/lib/skeleton/skeleton.js.map +0 -1
  1159. package/esm2022/skeleton/malva-ui-core-skeleton.js +0 -5
  1160. package/esm2022/skeleton/malva-ui-core-skeleton.js.map +0 -1
  1161. package/esm2022/slider/index.js +0 -3
  1162. package/esm2022/slider/index.js.map +0 -1
  1163. package/esm2022/slider/lib/slider/slider-tooltip-def.js +0 -31
  1164. package/esm2022/slider/lib/slider/slider-tooltip-def.js.map +0 -1
  1165. package/esm2022/slider/lib/slider/slider.js +0 -468
  1166. package/esm2022/slider/lib/slider/slider.js.map +0 -1
  1167. package/esm2022/slider/malva-ui-core-slider.js +0 -5
  1168. package/esm2022/slider/malva-ui-core-slider.js.map +0 -1
  1169. package/esm2022/split-pane/index.js +0 -4
  1170. package/esm2022/split-pane/index.js.map +0 -1
  1171. package/esm2022/split-pane/lib/split-pane/split-pane-panel.js +0 -49
  1172. package/esm2022/split-pane/lib/split-pane/split-pane-panel.js.map +0 -1
  1173. package/esm2022/split-pane/lib/split-pane/split-pane.js +0 -290
  1174. package/esm2022/split-pane/lib/split-pane/split-pane.js.map +0 -1
  1175. package/esm2022/split-pane/lib/split-pane/split-pane.types.js +0 -1
  1176. package/esm2022/split-pane/lib/split-pane/split-pane.types.js.map +0 -1
  1177. package/esm2022/split-pane/malva-ui-core-split-pane.js +0 -5
  1178. package/esm2022/split-pane/malva-ui-core-split-pane.js.map +0 -1
  1179. package/esm2022/status-indicator/index.js +0 -2
  1180. package/esm2022/status-indicator/index.js.map +0 -1
  1181. package/esm2022/status-indicator/lib/status-indicator/status-indicator.js +0 -71
  1182. package/esm2022/status-indicator/lib/status-indicator/status-indicator.js.map +0 -1
  1183. package/esm2022/status-indicator/malva-ui-core-status-indicator.js +0 -5
  1184. package/esm2022/status-indicator/malva-ui-core-status-indicator.js.map +0 -1
  1185. package/esm2022/stepper/index.js +0 -5
  1186. package/esm2022/stepper/index.js.map +0 -1
  1187. package/esm2022/stepper/lib/stepper/step-header.js +0 -46
  1188. package/esm2022/stepper/lib/stepper/step-header.js.map +0 -1
  1189. package/esm2022/stepper/lib/stepper/step.js +0 -65
  1190. package/esm2022/stepper/lib/stepper/step.js.map +0 -1
  1191. package/esm2022/stepper/lib/stepper/stepper-token.js +0 -4
  1192. package/esm2022/stepper/lib/stepper/stepper-token.js.map +0 -1
  1193. package/esm2022/stepper/lib/stepper/stepper.js +0 -216
  1194. package/esm2022/stepper/lib/stepper/stepper.js.map +0 -1
  1195. package/esm2022/stepper/lib/stepper/stepper.types.js +0 -1
  1196. package/esm2022/stepper/lib/stepper/stepper.types.js.map +0 -1
  1197. package/esm2022/stepper/malva-ui-core-stepper.js +0 -5
  1198. package/esm2022/stepper/malva-ui-core-stepper.js.map +0 -1
  1199. package/esm2022/switch/index.js +0 -3
  1200. package/esm2022/switch/index.js.map +0 -1
  1201. package/esm2022/switch/lib/switch/switch.js +0 -190
  1202. package/esm2022/switch/lib/switch/switch.js.map +0 -1
  1203. package/esm2022/switch/lib/switch-group/switch-group.js +0 -68
  1204. package/esm2022/switch/lib/switch-group/switch-group.js.map +0 -1
  1205. package/esm2022/switch/lib/switch-group-token.js +0 -3
  1206. package/esm2022/switch/lib/switch-group-token.js.map +0 -1
  1207. package/esm2022/switch/malva-ui-core-switch.js +0 -5
  1208. package/esm2022/switch/malva-ui-core-switch.js.map +0 -1
  1209. package/esm2022/tabs/index.js +0 -9
  1210. package/esm2022/tabs/index.js.map +0 -1
  1211. package/esm2022/tabs/lib/tab/tab.js +0 -72
  1212. package/esm2022/tabs/lib/tab/tab.js.map +0 -1
  1213. package/esm2022/tabs/lib/tab-content/tab-content.js +0 -19
  1214. package/esm2022/tabs/lib/tab-content/tab-content.js.map +0 -1
  1215. package/esm2022/tabs/lib/tab-content-def.js +0 -14
  1216. package/esm2022/tabs/lib/tab-content-def.js.map +0 -1
  1217. package/esm2022/tabs/lib/tab-def.js +0 -17
  1218. package/esm2022/tabs/lib/tab-def.js.map +0 -1
  1219. package/esm2022/tabs/lib/tab-group-token.js +0 -3
  1220. package/esm2022/tabs/lib/tab-group-token.js.map +0 -1
  1221. package/esm2022/tabs/lib/tab-item/tab-item.js +0 -44
  1222. package/esm2022/tabs/lib/tab-item/tab-item.js.map +0 -1
  1223. package/esm2022/tabs/lib/tabs/tabs.js +0 -542
  1224. package/esm2022/tabs/lib/tabs/tabs.js.map +0 -1
  1225. package/esm2022/tabs/lib/tabs.service.js +0 -83
  1226. package/esm2022/tabs/lib/tabs.service.js.map +0 -1
  1227. package/esm2022/tabs/malva-ui-core-tabs.js +0 -5
  1228. package/esm2022/tabs/malva-ui-core-tabs.js.map +0 -1
  1229. package/esm2022/textarea/index.js +0 -2
  1230. package/esm2022/textarea/index.js.map +0 -1
  1231. package/esm2022/textarea/lib/textarea/textarea.js +0 -194
  1232. package/esm2022/textarea/lib/textarea/textarea.js.map +0 -1
  1233. package/esm2022/textarea/malva-ui-core-textarea.js +0 -5
  1234. package/esm2022/textarea/malva-ui-core-textarea.js.map +0 -1
  1235. package/esm2022/tile/index.js +0 -3
  1236. package/esm2022/tile/index.js.map +0 -1
  1237. package/esm2022/tile/lib/tile/tile.js +0 -39
  1238. package/esm2022/tile/lib/tile/tile.js.map +0 -1
  1239. package/esm2022/tile/lib/tile-header.js +0 -14
  1240. package/esm2022/tile/lib/tile-header.js.map +0 -1
  1241. package/esm2022/tile/malva-ui-core-tile.js +0 -5
  1242. package/esm2022/tile/malva-ui-core-tile.js.map +0 -1
  1243. package/esm2022/time-picker/index.js +0 -2
  1244. package/esm2022/time-picker/index.js.map +0 -1
  1245. package/esm2022/time-picker/lib/time-picker/time-picker.js +0 -310
  1246. package/esm2022/time-picker/lib/time-picker/time-picker.js.map +0 -1
  1247. package/esm2022/time-picker/lib/time-picker-column/time-picker-column.js +0 -216
  1248. package/esm2022/time-picker/lib/time-picker-column/time-picker-column.js.map +0 -1
  1249. package/esm2022/time-picker/malva-ui-core-time-picker.js +0 -5
  1250. package/esm2022/time-picker/malva-ui-core-time-picker.js.map +0 -1
  1251. package/esm2022/timeline/index.js +0 -6
  1252. package/esm2022/timeline/index.js.map +0 -1
  1253. package/esm2022/timeline/lib/timeline/timeline-item-icon.js +0 -31
  1254. package/esm2022/timeline/lib/timeline/timeline-item-icon.js.map +0 -1
  1255. package/esm2022/timeline/lib/timeline/timeline-item-meta.js +0 -31
  1256. package/esm2022/timeline/lib/timeline/timeline-item-meta.js.map +0 -1
  1257. package/esm2022/timeline/lib/timeline/timeline-item.js +0 -69
  1258. package/esm2022/timeline/lib/timeline/timeline-item.js.map +0 -1
  1259. package/esm2022/timeline/lib/timeline/timeline.js +0 -36
  1260. package/esm2022/timeline/lib/timeline/timeline.js.map +0 -1
  1261. package/esm2022/timeline/lib/timeline/timeline.types.js +0 -1
  1262. package/esm2022/timeline/lib/timeline/timeline.types.js.map +0 -1
  1263. package/esm2022/timeline/malva-ui-core-timeline.js +0 -5
  1264. package/esm2022/timeline/malva-ui-core-timeline.js.map +0 -1
  1265. package/esm2022/title/index.js +0 -2
  1266. package/esm2022/title/index.js.map +0 -1
  1267. package/esm2022/title/lib/title/title.js +0 -171
  1268. package/esm2022/title/lib/title/title.js.map +0 -1
  1269. package/esm2022/title/malva-ui-core-title.js +0 -5
  1270. package/esm2022/title/malva-ui-core-title.js.map +0 -1
  1271. package/esm2022/toast/index.js +0 -13
  1272. package/esm2022/toast/index.js.map +0 -1
  1273. package/esm2022/toast/lib/abstract-toast-container.js +0 -50
  1274. package/esm2022/toast/lib/abstract-toast-container.js.map +0 -1
  1275. package/esm2022/toast/lib/abstract-toast-item.js +0 -75
  1276. package/esm2022/toast/lib/abstract-toast-item.js.map +0 -1
  1277. package/esm2022/toast/lib/abstract-toast.service.js +0 -176
  1278. package/esm2022/toast/lib/abstract-toast.service.js.map +0 -1
  1279. package/esm2022/toast/lib/toast-container/toast-container.js +0 -61
  1280. package/esm2022/toast/lib/toast-container/toast-container.js.map +0 -1
  1281. package/esm2022/toast/lib/toast-item/toast-item.js +0 -62
  1282. package/esm2022/toast/lib/toast-item/toast-item.js.map +0 -1
  1283. package/esm2022/toast/lib/toast-ref.js +0 -54
  1284. package/esm2022/toast/lib/toast-ref.js.map +0 -1
  1285. package/esm2022/toast/lib/toast-timer.js +0 -37
  1286. package/esm2022/toast/lib/toast-timer.js.map +0 -1
  1287. package/esm2022/toast/lib/toast.directives.js +0 -76
  1288. package/esm2022/toast/lib/toast.directives.js.map +0 -1
  1289. package/esm2022/toast/lib/toast.service.js +0 -127
  1290. package/esm2022/toast/lib/toast.service.js.map +0 -1
  1291. package/esm2022/toast/lib/toast.types.js +0 -39
  1292. package/esm2022/toast/lib/toast.types.js.map +0 -1
  1293. package/esm2022/toast/malva-ui-core-toast.js +0 -5
  1294. package/esm2022/toast/malva-ui-core-toast.js.map +0 -1
  1295. package/esm2022/tokenizer/index.js +0 -4
  1296. package/esm2022/tokenizer/index.js.map +0 -1
  1297. package/esm2022/tokenizer/lib/token/token.js +0 -123
  1298. package/esm2022/tokenizer/lib/token/token.js.map +0 -1
  1299. package/esm2022/tokenizer/lib/token-template.js +0 -23
  1300. package/esm2022/tokenizer/lib/token-template.js.map +0 -1
  1301. package/esm2022/tokenizer/lib/tokenizer/tokenizer.js +0 -324
  1302. package/esm2022/tokenizer/lib/tokenizer/tokenizer.js.map +0 -1
  1303. package/esm2022/tokenizer/malva-ui-core-tokenizer.js +0 -5
  1304. package/esm2022/tokenizer/malva-ui-core-tokenizer.js.map +0 -1
  1305. package/esm2022/toolbar/index.js +0 -4
  1306. package/esm2022/toolbar/index.js.map +0 -1
  1307. package/esm2022/toolbar/lib/toolbar/toolbar-spacer.js +0 -13
  1308. package/esm2022/toolbar/lib/toolbar/toolbar-spacer.js.map +0 -1
  1309. package/esm2022/toolbar/lib/toolbar/toolbar-widget.js +0 -106
  1310. package/esm2022/toolbar/lib/toolbar/toolbar-widget.js.map +0 -1
  1311. package/esm2022/toolbar/lib/toolbar/toolbar.js +0 -19
  1312. package/esm2022/toolbar/lib/toolbar/toolbar.js.map +0 -1
  1313. package/esm2022/toolbar/malva-ui-core-toolbar.js +0 -5
  1314. package/esm2022/toolbar/malva-ui-core-toolbar.js.map +0 -1
  1315. package/esm2022/tooltip/index.js +0 -4
  1316. package/esm2022/tooltip/index.js.map +0 -1
  1317. package/esm2022/tooltip/lib/tooltip/tooltip-panel.js +0 -69
  1318. package/esm2022/tooltip/lib/tooltip/tooltip-panel.js.map +0 -1
  1319. package/esm2022/tooltip/lib/tooltip/tooltip.js +0 -352
  1320. package/esm2022/tooltip/lib/tooltip/tooltip.js.map +0 -1
  1321. package/esm2022/tooltip/lib/tooltip/tooltip.types.js +0 -1
  1322. package/esm2022/tooltip/lib/tooltip/tooltip.types.js.map +0 -1
  1323. package/esm2022/tooltip/malva-ui-core-tooltip.js +0 -5
  1324. package/esm2022/tooltip/malva-ui-core-tooltip.js.map +0 -1
  1325. package/esm2022/tree/index.js +0 -5
  1326. package/esm2022/tree/index.js.map +0 -1
  1327. package/esm2022/tree/lib/tree/tree-context.js +0 -7
  1328. package/esm2022/tree/lib/tree/tree-context.js.map +0 -1
  1329. package/esm2022/tree/lib/tree/tree-node-def.js +0 -34
  1330. package/esm2022/tree/lib/tree/tree-node-def.js.map +0 -1
  1331. package/esm2022/tree/lib/tree/tree-node.js +0 -1
  1332. package/esm2022/tree/lib/tree/tree-node.js.map +0 -1
  1333. package/esm2022/tree/lib/tree/tree-subtree.js +0 -107
  1334. package/esm2022/tree/lib/tree/tree-subtree.js.map +0 -1
  1335. package/esm2022/tree/lib/tree/tree.js +0 -362
  1336. package/esm2022/tree/lib/tree/tree.js.map +0 -1
  1337. package/esm2022/tree/malva-ui-core-tree.js +0 -5
  1338. package/esm2022/tree/malva-ui-core-tree.js.map +0 -1
  1339. package/expand/index.d.ts +0 -2
  1340. package/expand/lib/expand/expand-content.d.ts +0 -26
  1341. package/expand/lib/expand/expand.d.ts +0 -74
  1342. package/expand/malva-ui-core-expand.d.ts +0 -5
  1343. package/file-upload/index.d.ts +0 -4
  1344. package/file-upload/lib/file-upload/file-upload.d.ts +0 -138
  1345. package/file-upload/lib/file-upload/file-upload.types.d.ts +0 -42
  1346. package/file-upload/lib/file-upload-action.d.ts +0 -53
  1347. package/file-upload/lib/file-upload-item/file-upload-item.d.ts +0 -30
  1348. package/file-upload/malva-ui-core-file-upload.d.ts +0 -5
  1349. package/filter/index.d.ts +0 -3
  1350. package/filter/lib/filter/filter.d.ts +0 -156
  1351. package/filter/lib/filter.types.d.ts +0 -75
  1352. package/filter/lib/smart-filter-bar/smart-filter-bar.d.ts +0 -153
  1353. package/filter/malva-ui-core-filter.d.ts +0 -5
  1354. package/form/index.d.ts +0 -6
  1355. package/form/lib/fieldset/fieldset.d.ts +0 -58
  1356. package/form/lib/fieldset-span.d.ts +0 -28
  1357. package/form/lib/form/form.d.ts +0 -37
  1358. package/form/lib/form-actions.d.ts +0 -20
  1359. package/form/lib/form-gap.d.ts +0 -5
  1360. package/form/lib/form-header.d.ts +0 -18
  1361. package/form/lib/form.types.d.ts +0 -13
  1362. package/form/malva-ui-core-form.d.ts +0 -5
  1363. package/form-utils/index.d.ts +0 -15
  1364. package/form-utils/lib/aria-value-bridge.d.ts +0 -45
  1365. package/form-utils/lib/description/description.d.ts +0 -16
  1366. package/form-utils/lib/focusable-group-base.d.ts +0 -76
  1367. package/form-utils/lib/form-control-base/signal-form-control-base.d.ts +0 -159
  1368. package/form-utils/lib/form-control-sides.d.ts +0 -20
  1369. package/form-utils/lib/form-control-wrapper/form-control-wrapper-control.d.ts +0 -6
  1370. package/form-utils/lib/form-control-wrapper/form-control-wrapper.d.ts +0 -20
  1371. package/form-utils/lib/form-field/form-field.d.ts +0 -68
  1372. package/form-utils/lib/hint/hint.d.ts +0 -5
  1373. package/form-utils/lib/label/label.d.ts +0 -22
  1374. package/form-utils/lib/message/message.d.ts +0 -7
  1375. package/form-utils/lib/models/error-display-strategy.d.ts +0 -1
  1376. package/form-utils/lib/models/form-control-connector.d.ts +0 -41
  1377. package/form-utils/lib/models/form-state.d.ts +0 -1
  1378. package/form-utils/lib/selection.service.d.ts +0 -27
  1379. package/form-utils/malva-ui-core-form-utils.d.ts +0 -5
  1380. package/form-utils/testing/index.d.ts +0 -1
  1381. package/form-utils/testing/lib/forms-binding-matrix.d.ts +0 -47
  1382. package/form-utils/testing/malva-ui-core-form-utils-testing.d.ts +0 -5
  1383. package/index.d.ts +0 -69
  1384. package/input/index.d.ts +0 -3
  1385. package/input/lib/input/input-native.d.ts +0 -36
  1386. package/input/lib/input/input-value-accessor.d.ts +0 -11
  1387. package/input/lib/input/input.d.ts +0 -189
  1388. package/input/lib/input/password-strength.d.ts +0 -34
  1389. package/input/malva-ui-core-input.d.ts +0 -5
  1390. package/kbd/index.d.ts +0 -1
  1391. package/kbd/lib/kbd/kbd.d.ts +0 -52
  1392. package/kbd/malva-ui-core-kbd.d.ts +0 -5
  1393. package/layout/index.d.ts +0 -4
  1394. package/layout/lib/layout/directives/MlvLayoutSide.d.ts +0 -6
  1395. package/layout/lib/layout/directives/MlvLayoutTop.d.ts +0 -6
  1396. package/layout/lib/layout/layout.d.ts +0 -20
  1397. package/layout/lib/layout/services/theme.service.d.ts +0 -33
  1398. package/layout/malva-ui-core-layout.d.ts +0 -5
  1399. package/link/index.d.ts +0 -2
  1400. package/link/lib/link/link.d.ts +0 -15
  1401. package/link/lib/link/link.directives.d.ts +0 -10
  1402. package/link/malva-ui-core-link.d.ts +0 -5
  1403. package/list/index.d.ts +0 -13
  1404. package/list/lib/list/list.d.ts +0 -25
  1405. package/list/lib/list-item/list-item.d.ts +0 -67
  1406. package/list/lib/list-item-actions.d.ts +0 -12
  1407. package/list/lib/list-item-byline.d.ts +0 -5
  1408. package/list/lib/list-item-group/list-item-group.d.ts +0 -11
  1409. package/list/lib/list-item-link/list-item-link.d.ts +0 -8
  1410. package/list/lib/list-item-media.d.ts +0 -5
  1411. package/list/lib/list-item-meta.d.ts +0 -5
  1412. package/list/lib/list-item-prefix.d.ts +0 -5
  1413. package/list/lib/list-item-suffix.d.ts +0 -5
  1414. package/list/lib/list-item-template.d.ts +0 -10
  1415. package/list/lib/list-item-title.d.ts +0 -5
  1416. package/list/lib/list-selectable.d.ts +0 -73
  1417. package/list/malva-ui-core-list.d.ts +0 -5
  1418. package/loader/index.d.ts +0 -1
  1419. package/loader/lib/loader/loader.d.ts +0 -84
  1420. package/loader/malva-ui-core-loader.d.ts +0 -5
  1421. package/malva-ui-core.d.ts +0 -5
  1422. package/menu/index.d.ts +0 -9
  1423. package/menu/lib/menu/menu-group-label.d.ts +0 -22
  1424. package/menu/lib/menu/menu-group.d.ts +0 -27
  1425. package/menu/lib/menu/menu-item.d.ts +0 -76
  1426. package/menu/lib/menu/menu-separator.d.ts +0 -18
  1427. package/menu/lib/menu/menu-trigger.d.ts +0 -255
  1428. package/menu/lib/menu/menu.d.ts +0 -149
  1429. package/menu/lib/menu/menu.types.d.ts +0 -13
  1430. package/menu/lib/menu/menubar.d.ts +0 -131
  1431. package/menu/lib/menu/menubar.types.d.ts +0 -82
  1432. package/menu/lib/menu/submenu-aim.d.ts +0 -10
  1433. package/menu/malva-ui-core-menu.d.ts +0 -5
  1434. package/notification/index.d.ts +0 -4
  1435. package/notification/lib/notification-item/notification-item.d.ts +0 -20
  1436. package/notification/lib/notification-ref.d.ts +0 -12
  1437. package/notification/lib/notification.service.d.ts +0 -43
  1438. package/notification/lib/notification.types.d.ts +0 -52
  1439. package/notification/malva-ui-core-notification.d.ts +0 -5
  1440. package/number-input/index.d.ts +0 -1
  1441. package/number-input/lib/number-input/number-input.d.ts +0 -162
  1442. package/number-input/malva-ui-core-number-input.d.ts +0 -5
  1443. package/page/index.d.ts +0 -14
  1444. package/page/lib/page/page-scroll.token.d.ts +0 -19
  1445. package/page/lib/page/page-snap-controller.d.ts +0 -87
  1446. package/page/lib/page/page-snap.directive.d.ts +0 -40
  1447. package/page/lib/page/page.d.ts +0 -74
  1448. package/page/lib/page-content/page-aside.d.ts +0 -7
  1449. package/page/lib/page-content/page-content.d.ts +0 -37
  1450. package/page/lib/page-dock/page-dock.d.ts +0 -50
  1451. package/page/lib/page-dock/page-dock.slots.d.ts +0 -16
  1452. package/page/lib/page-header/page-header.d.ts +0 -77
  1453. package/page/lib/page-header/page-header.directives.d.ts +0 -50
  1454. package/page/lib/page-shell/page-shell-color.d.ts +0 -48
  1455. package/page/lib/page-shell/page-shell-css-color.d.ts +0 -20
  1456. package/page/lib/page-shell/page-shell.d.ts +0 -44
  1457. package/page/lib/page-shell/page-shell.slots.d.ts +0 -16
  1458. package/page/lib/page-summary/page-summary-item.d.ts +0 -11
  1459. package/page/lib/page-summary/page-summary.d.ts +0 -36
  1460. package/page/malva-ui-core-page.d.ts +0 -5
  1461. package/pagination/index.d.ts +0 -4
  1462. package/pagination/lib/pagination/pagination.d.ts +0 -182
  1463. package/pagination/lib/pagination/pagination.directives.d.ts +0 -44
  1464. package/pagination/lib/pagination/pagination.model.d.ts +0 -6
  1465. package/pagination/lib/pagination/pagination.service.d.ts +0 -26
  1466. package/pagination/malva-ui-core-pagination.d.ts +0 -5
  1467. package/pin-input/index.d.ts +0 -2
  1468. package/pin-input/lib/pin-input/pin-input-separator.d.ts +0 -24
  1469. package/pin-input/lib/pin-input/pin-input.d.ts +0 -176
  1470. package/pin-input/malva-ui-core-pin-input.d.ts +0 -5
  1471. package/popup/index.d.ts +0 -9
  1472. package/popup/lib/popup/popup.d.ts +0 -343
  1473. package/popup/lib/popup-container/popup-container.d.ts +0 -61
  1474. package/popup/lib/popup-container/popup-container.token.d.ts +0 -34
  1475. package/popup/lib/popup-content.d.ts +0 -6
  1476. package/popup/lib/popup-header-content.d.ts +0 -18
  1477. package/popup/lib/popup-pinned-content.d.ts +0 -17
  1478. package/popup/lib/popup-positions.d.ts +0 -105
  1479. package/popup/lib/popup-trigger/popup-trigger.d.ts +0 -102
  1480. package/popup/lib/popup.service.d.ts +0 -159
  1481. package/popup/malva-ui-core-popup.d.ts +0 -5
  1482. package/progress/index.d.ts +0 -1
  1483. package/progress/lib/progress/progress.d.ts +0 -69
  1484. package/progress/malva-ui-core-progress.d.ts +0 -5
  1485. package/radio/index.d.ts +0 -2
  1486. package/radio/lib/radio/radio.d.ts +0 -87
  1487. package/radio/lib/radio-group/radio-group.d.ts +0 -35
  1488. package/radio/lib/radio-group-token.d.ts +0 -7
  1489. package/radio/malva-ui-core-radio.d.ts +0 -5
  1490. package/rating/index.d.ts +0 -1
  1491. package/rating/lib/rating/rating.d.ts +0 -100
  1492. package/rating/malva-ui-core-rating.d.ts +0 -5
  1493. package/scrollbar/index.d.ts +0 -1
  1494. package/scrollbar/lib/scrollbar/scrollbar.d.ts +0 -166
  1495. package/scrollbar/malva-ui-core-scrollbar.d.ts +0 -5
  1496. package/search-field/index.d.ts +0 -2
  1497. package/search-field/lib/search-field/search-field.d.ts +0 -347
  1498. package/search-field/lib/search-field/search-overlay-content.d.ts +0 -59
  1499. package/search-field/malva-ui-core-search-field.d.ts +0 -5
  1500. package/segmented/index.d.ts +0 -4
  1501. package/segmented/lib/segmented/segmented.d.ts +0 -80
  1502. package/segmented/lib/segmented-item/segmented-item.d.ts +0 -89
  1503. package/segmented/lib/segmented-token.d.ts +0 -22
  1504. package/segmented/lib/segmented.types.d.ts +0 -9
  1505. package/segmented/malva-ui-core-segmented.d.ts +0 -5
  1506. package/select/index.d.ts +0 -3
  1507. package/select/lib/select/select.d.ts +0 -379
  1508. package/select/lib/select-option.d.ts +0 -1
  1509. package/select/lib/select-template.directives.d.ts +0 -14
  1510. package/select/malva-ui-core-select.d.ts +0 -5
  1511. package/sidebar/index.d.ts +0 -15
  1512. package/sidebar/lib/sidebar/sidebar.d.ts +0 -134
  1513. package/sidebar/lib/sidebar-content.d.ts +0 -11
  1514. package/sidebar/lib/sidebar-context.d.ts +0 -23
  1515. package/sidebar/lib/sidebar-footer.d.ts +0 -9
  1516. package/sidebar/lib/sidebar-group/sidebar-group.d.ts +0 -127
  1517. package/sidebar/lib/sidebar-header.d.ts +0 -9
  1518. package/sidebar/lib/sidebar-item/sidebar-item.d.ts +0 -104
  1519. package/sidebar/lib/sidebar-item-host.d.ts +0 -18
  1520. package/sidebar/lib/sidebar-item-icon.d.ts +0 -6
  1521. package/sidebar/lib/sidebar-mode.d.ts +0 -2
  1522. package/sidebar/lib/sidebar-rail/sidebar-rail.d.ts +0 -54
  1523. package/sidebar/lib/sidebar-trigger/sidebar-trigger.d.ts +0 -67
  1524. package/sidebar/lib/sidebar-workspace/sidebar-workspace.d.ts +0 -54
  1525. package/sidebar/lib/sidebar-workspace/sidebar-workspace.directives.d.ts +0 -19
  1526. package/sidebar/lib/sidebar-workspace/sidebar-workspace.types.d.ts +0 -20
  1527. package/sidebar/malva-ui-core-sidebar.d.ts +0 -5
  1528. package/skeleton/index.d.ts +0 -1
  1529. package/skeleton/lib/skeleton/skeleton.d.ts +0 -60
  1530. package/skeleton/malva-ui-core-skeleton.d.ts +0 -5
  1531. package/slider/index.d.ts +0 -2
  1532. package/slider/lib/slider/slider-tooltip-def.d.ts +0 -39
  1533. package/slider/lib/slider/slider.d.ts +0 -171
  1534. package/slider/malva-ui-core-slider.d.ts +0 -5
  1535. package/split-pane/index.d.ts +0 -3
  1536. package/split-pane/lib/split-pane/split-pane-panel.d.ts +0 -34
  1537. package/split-pane/lib/split-pane/split-pane.d.ts +0 -98
  1538. package/split-pane/lib/split-pane/split-pane.types.d.ts +0 -7
  1539. package/split-pane/malva-ui-core-split-pane.d.ts +0 -5
  1540. package/status-indicator/index.d.ts +0 -1
  1541. package/status-indicator/lib/status-indicator/status-indicator.d.ts +0 -61
  1542. package/status-indicator/malva-ui-core-status-indicator.d.ts +0 -5
  1543. package/stepper/index.d.ts +0 -4
  1544. package/stepper/lib/stepper/step-header.d.ts +0 -34
  1545. package/stepper/lib/stepper/step.d.ts +0 -51
  1546. package/stepper/lib/stepper/stepper-token.d.ts +0 -13
  1547. package/stepper/lib/stepper/stepper.d.ts +0 -98
  1548. package/stepper/lib/stepper/stepper.types.d.ts +0 -4
  1549. package/stepper/malva-ui-core-stepper.d.ts +0 -5
  1550. package/switch/index.d.ts +0 -2
  1551. package/switch/lib/switch/switch.d.ts +0 -118
  1552. package/switch/lib/switch-group/switch-group.d.ts +0 -24
  1553. package/switch/lib/switch-group-token.d.ts +0 -6
  1554. package/switch/malva-ui-core-switch.d.ts +0 -5
  1555. package/tabs/index.d.ts +0 -8
  1556. package/tabs/lib/tab/tab.d.ts +0 -46
  1557. package/tabs/lib/tab-content/tab-content.d.ts +0 -11
  1558. package/tabs/lib/tab-content-def.d.ts +0 -6
  1559. package/tabs/lib/tab-def.d.ts +0 -11
  1560. package/tabs/lib/tab-group-token.d.ts +0 -10
  1561. package/tabs/lib/tab-item/tab-item.d.ts +0 -28
  1562. package/tabs/lib/tabs/tabs.d.ts +0 -202
  1563. package/tabs/lib/tabs.service.d.ts +0 -24
  1564. package/tabs/malva-ui-core-tabs.d.ts +0 -5
  1565. package/textarea/index.d.ts +0 -1
  1566. package/textarea/lib/textarea/textarea.d.ts +0 -77
  1567. package/textarea/malva-ui-core-textarea.d.ts +0 -5
  1568. package/tile/index.d.ts +0 -2
  1569. package/tile/lib/tile/tile.d.ts +0 -20
  1570. package/tile/lib/tile-header.d.ts +0 -6
  1571. package/tile/malva-ui-core-tile.d.ts +0 -5
  1572. package/time-picker/index.d.ts +0 -1
  1573. package/time-picker/lib/time-picker/time-picker.d.ts +0 -135
  1574. package/time-picker/lib/time-picker-column/time-picker-column.d.ts +0 -111
  1575. package/time-picker/malva-ui-core-time-picker.d.ts +0 -5
  1576. package/timeline/index.d.ts +0 -5
  1577. package/timeline/lib/timeline/timeline-item-icon.d.ts +0 -24
  1578. package/timeline/lib/timeline/timeline-item-meta.d.ts +0 -24
  1579. package/timeline/lib/timeline/timeline-item.d.ts +0 -52
  1580. package/timeline/lib/timeline/timeline.d.ts +0 -27
  1581. package/timeline/lib/timeline/timeline.types.d.ts +0 -18
  1582. package/timeline/malva-ui-core-timeline.d.ts +0 -5
  1583. package/title/index.d.ts +0 -1
  1584. package/title/lib/title/title.d.ts +0 -63
  1585. package/title/malva-ui-core-title.d.ts +0 -5
  1586. package/toast/index.d.ts +0 -10
  1587. package/toast/lib/abstract-toast-container.d.ts +0 -29
  1588. package/toast/lib/abstract-toast-item.d.ts +0 -44
  1589. package/toast/lib/abstract-toast.service.d.ts +0 -75
  1590. package/toast/lib/toast-container/toast-container.d.ts +0 -23
  1591. package/toast/lib/toast-item/toast-item.d.ts +0 -25
  1592. package/toast/lib/toast-ref.d.ts +0 -33
  1593. package/toast/lib/toast-timer.d.ts +0 -24
  1594. package/toast/lib/toast.directives.d.ts +0 -13
  1595. package/toast/lib/toast.service.d.ts +0 -41
  1596. package/toast/lib/toast.types.d.ts +0 -139
  1597. package/toast/malva-ui-core-toast.d.ts +0 -5
  1598. package/tokenizer/index.d.ts +0 -3
  1599. package/tokenizer/lib/token/token.d.ts +0 -60
  1600. package/tokenizer/lib/token-template.d.ts +0 -29
  1601. package/tokenizer/lib/tokenizer/tokenizer.d.ts +0 -109
  1602. package/tokenizer/malva-ui-core-tokenizer.d.ts +0 -5
  1603. package/toolbar/index.d.ts +0 -3
  1604. package/toolbar/lib/toolbar/toolbar-spacer.d.ts +0 -5
  1605. package/toolbar/lib/toolbar/toolbar-widget.d.ts +0 -75
  1606. package/toolbar/lib/toolbar/toolbar.d.ts +0 -8
  1607. package/toolbar/malva-ui-core-toolbar.d.ts +0 -5
  1608. package/tooltip/index.d.ts +0 -3
  1609. package/tooltip/lib/tooltip/tooltip-panel.d.ts +0 -26
  1610. package/tooltip/lib/tooltip/tooltip.d.ts +0 -148
  1611. package/tooltip/lib/tooltip/tooltip.types.d.ts +0 -17
  1612. package/tooltip/malva-ui-core-tooltip.d.ts +0 -5
  1613. package/tree/index.d.ts +0 -4
  1614. package/tree/lib/tree/tree-context.d.ts +0 -62
  1615. package/tree/lib/tree/tree-node-def.d.ts +0 -33
  1616. package/tree/lib/tree/tree-node.d.ts +0 -45
  1617. package/tree/lib/tree/tree-subtree.d.ts +0 -63
  1618. package/tree/lib/tree/tree.d.ts +0 -156
  1619. package/tree/malva-ui-core-tree.d.ts +0 -5
@@ -1,324 +0,0 @@
1
- import { ChangeDetectionStrategy, Component, computed, inject, input, model, output, signal, viewChild, ElementRef, ViewEncapsulation, } from '@angular/core';
2
- import { coerceBooleanProperty } from '@angular/cdk/coercion';
3
- import { MlvSignalFormControlBase } from '@malva-ui/core/form-utils';
4
- import { mlvNextId } from '@malva-ui/cdk/utils';
5
- import { MlvButton } from '@malva-ui/core/button';
6
- import { MlvLoader } from '@malva-ui/core/loader';
7
- import { LucideRefreshCw, LucideTrash2, LucideUpload } from '@lucide/angular';
8
- import { MLV_FILE_UPLOAD_I18N, MlvI18nResolverService } from '@malva-ui/i18n';
9
- import { MlvFileUploadItem } from '../file-upload-item/file-upload-item';
10
- import * as i0 from "@angular/core";
11
- /**
12
- * File upload component providing a drag-and-drop zone, file validation, and
13
- * signal, reactive, and template-driven forms integration. Produces an array
14
- * of `MlvUploadedFile` values.
15
- */
16
- export class MlvFileUpload extends MlvSignalFormControlBase {
17
- /** The uploaded-file list used by all Angular forms APIs. */
18
- value = model([], /* @ts-ignore */
19
- ...(ngDevMode ? [{ debugName: "value" }] : /* istanbul ignore next */ []));
20
- /** @protected Injected i18n translations for the file upload. */
21
- _i18n = inject(MLV_FILE_UPLOAD_I18N);
22
- /** @private ICU MessageFormat resolver for the parameterised rejection messages. */
23
- _resolver = inject(MlvI18nResolverService);
24
- /** Comma-separated list of accepted MIME types or file extensions (e.g. `"image/*,.pdf"`). */
25
- accept = input('', /* @ts-ignore */
26
- ...(ngDevMode ? [{ debugName: "accept" }] : /* istanbul ignore next */ []));
27
- /**
28
- * Maximum allowed file size in bytes. `0` means unlimited.
29
- */
30
- maxSize = input(0, /* @ts-ignore */
31
- ...(ngDevMode ? [{ debugName: "maxSize" }] : /* istanbul ignore next */ []));
32
- /** Whether to allow selecting multiple files. */
33
- multiple = input(true, { ...(ngDevMode ? { debugName: "multiple" } : /* istanbul ignore next */ {}), transform: coerceBooleanProperty });
34
- /** Primary heading text shown in the drop zone. */
35
- title = input('Drag & drop files here', /* @ts-ignore */
36
- ...(ngDevMode ? [{ debugName: "title" }] : /* istanbul ignore next */ []));
37
- /** Secondary description text shown below the title. */
38
- subtitle = input('', /* @ts-ignore */
39
- ...(ngDevMode ? [{ debugName: "subtitle" }] : /* istanbul ignore next */ []));
40
- /** Label text for the browse button. */
41
- actionLabel = input('Browse files', /* @ts-ignore */
42
- ...(ngDevMode ? [{ debugName: "actionLabel" }] : /* istanbul ignore next */ []));
43
- /** When true, renders a compact single-row drop zone instead of the full zone. */
44
- compact = input(false, { ...(ngDevMode ? { debugName: "compact" } : /* istanbul ignore next */ {}), transform: coerceBooleanProperty });
45
- /**
46
- * How the zone presents the current selection.
47
- *
48
- * `'list'` (the default) keeps today's behaviour: the prompt and browse
49
- * button always show, and selected files are listed below the zone.
50
- *
51
- * `'cover'` fills the zone with the selected image and swaps the browse
52
- * button for a floating replace/remove toolbar. It only takes effect when
53
- * **all** of these hold, and silently falls back to `'list'` otherwise:
54
- *
55
- * 1. `multiple` is `false`,
56
- * 2. exactly one file is selected, and
57
- * 3. that file carries a `previewUrl`.
58
- *
59
- * `previewUrl` is generated automatically for any dropped/picked file whose
60
- * MIME type starts with `image/`. For an edit-mode seed, write it yourself —
61
- * it accepts a remote `https://…` or a `data:` URL just as happily as the
62
- * generated `blob:` one.
63
- */
64
- previewMode = input('list', /* @ts-ignore */
65
- ...(ngDevMode ? [{ debugName: "previewMode" }] : /* istanbul ignore next */ []));
66
- /** Emits the current file list whenever files are added or removed. */
67
- filesChange = output();
68
- /** @private List of selected/uploaded files managed by the component. */
69
- _files = computed(() => this.value() ?? [], /* @ts-ignore */
70
- ...(ngDevMode ? [{ debugName: "_files" }] : /* istanbul ignore next */ []));
71
- /** @private Validation errors from the last file selection or drop. */
72
- _errors = signal([], /* @ts-ignore */
73
- ...(ngDevMode ? [{ debugName: "_errors" }] : /* istanbul ignore next */ []));
74
- /** @private Whether the user is currently dragging files over the drop zone. */
75
- _isDragOver = signal(false, /* @ts-ignore */
76
- ...(ngDevMode ? [{ debugName: "_isDragOver" }] : /* istanbul ignore next */ []));
77
- /** @private Reference to the hidden file input element. */
78
- _fileInput = viewChild('fileInput', /* @ts-ignore */
79
- ...(ngDevMode ? [{ debugName: "_fileInput" }] : /* istanbul ignore next */ []));
80
- /** @private Reference to the host element for dragleave boundary detection. */
81
- _elementRef = inject((ElementRef));
82
- /** @protected Computed list of files exposed to the template. */
83
- _fileList = computed(() => this._files(), /* @ts-ignore */
84
- ...(ngDevMode ? [{ debugName: "_fileList" }] : /* istanbul ignore next */ []));
85
- // Cover preview ----------------------------------------------------------------
86
- /**
87
- * @protected The single file rendered as a full-zone cover, or `null` when
88
- * the cover preconditions are not met (see `previewMode`) and the zone falls
89
- * back to the normal prompt.
90
- */
91
- _coverFile = computed(() => {
92
- if (this.previewMode() !== 'cover' || this.multiple())
93
- return null;
94
- const files = this._files();
95
- if (files.length !== 1)
96
- return null;
97
- return files[0].previewUrl ? files[0] : null;
98
- }, /* @ts-ignore */
99
- ...(ngDevMode ? [{ debugName: "_coverFile" }] : /* istanbul ignore next */ []));
100
- /** @protected Whether the zone currently renders the cover preview. */
101
- _isCover = computed(() => this._coverFile() !== null, /* @ts-ignore */
102
- ...(ngDevMode ? [{ debugName: "_isCover" }] : /* istanbul ignore next */ []));
103
- /**
104
- * @protected Whether the covered file is still uploading, which overlays a
105
- * determinate progress bar on the image instead of falling back to list mode.
106
- */
107
- _coverUploading = computed(() => {
108
- const file = this._coverFile();
109
- return (file !== null && file.state === 'uploading' && (file.progress ?? 0) < 100);
110
- }, /* @ts-ignore */
111
- ...(ngDevMode ? [{ debugName: "_coverUploading" }] : /* istanbul ignore next */ []));
112
- /**
113
- * @protected Accessible name for the cover toolbar's remove button, with the
114
- * covered file's name interpolated into the shared `removeFile` template.
115
- */
116
- _coverRemoveLabel = computed(() => {
117
- const file = this._coverFile();
118
- return file ? this._translate('removeFile', { name: file.name }) : '';
119
- }, /* @ts-ignore */
120
- ...(ngDevMode ? [{ debugName: "_coverRemoveLabel" }] : /* istanbul ignore next */ []));
121
- // Forms value ------------------------------------------------------------------
122
- /** Whether the control holds a clearable value — At least one file present. */
123
- hasValue = computed(() => this._files().length > 0, /* @ts-ignore */
124
- ...(ngDevMode ? [{ debugName: "hasValue" }] : /* istanbul ignore next */ []));
125
- // Public API -------------------------------------------------------------------
126
- /**
127
- * Programmatically opens the native file picker dialog.
128
- */
129
- openFilePicker() {
130
- if (this.computedDisabled())
131
- return;
132
- this._fileInput()?.nativeElement.click();
133
- }
134
- /**
135
- * Handles changes from the hidden file input element.
136
- * @param event - The native change event from the input.
137
- */
138
- onFileInputChange(event) {
139
- const input = event.target;
140
- if (input.files) {
141
- this._validateAndAdd(input.files);
142
- }
143
- // Reset so the same file can be re-selected
144
- input.value = '';
145
- }
146
- /**
147
- * Removes a file by its id, revoking the preview URL if present.
148
- * @param id - The id of the `MlvUploadedFile` to remove.
149
- */
150
- removeFile(id) {
151
- const target = this._files().find((f) => f.id === id);
152
- if (target?.previewUrl) {
153
- URL.revokeObjectURL(target.previewUrl);
154
- }
155
- this.value.update((files) => (files ?? []).filter((file) => file.id !== id));
156
- this._emitChange();
157
- }
158
- // Internal helpers -------------------------------------------------------------
159
- /**
160
- * @private Handles the dragover event to enable the drag-over state.
161
- */
162
- _onDragOver(event) {
163
- event.preventDefault();
164
- if (!this.computedDisabled()) {
165
- this._isDragOver.set(true);
166
- }
167
- }
168
- /**
169
- * @private Handles the dragleave event to clear drag-over state when leaving the host.
170
- */
171
- _onDragLeave(event) {
172
- if (!this._elementRef.nativeElement.contains(event.relatedTarget)) {
173
- this._isDragOver.set(false);
174
- }
175
- }
176
- /**
177
- * @private Handles the drop event, reads dropped files and validates them.
178
- */
179
- _onDrop(event) {
180
- event.preventDefault();
181
- this._isDragOver.set(false);
182
- if (this.computedDisabled())
183
- return;
184
- const dt = event.dataTransfer;
185
- if (dt?.files) {
186
- this._validateAndAdd(dt.files);
187
- }
188
- }
189
- /**
190
- * @private Validates a FileList against accept/maxSize constraints and appends valid files.
191
- */
192
- _validateAndAdd(fileList) {
193
- const newErrors = [];
194
- const newFiles = [];
195
- const acceptedTypes = this._parseAccept();
196
- Array.from(fileList).forEach((file) => {
197
- // Count check
198
- if (!this.multiple() && this._files().length + newFiles.length >= 1) {
199
- newErrors.push({
200
- code: 'count',
201
- message: this._i18n().errorSingleFile,
202
- });
203
- return;
204
- }
205
- // Type check
206
- if (acceptedTypes.length > 0 &&
207
- !this._isTypeAccepted(file, acceptedTypes)) {
208
- newErrors.push({
209
- code: 'type',
210
- message: this._translate('errorFileType', { name: file.name }),
211
- });
212
- return;
213
- }
214
- // Size check
215
- const maxBytes = this.maxSize();
216
- if (maxBytes > 0 && file.size > maxBytes) {
217
- const maxMb = (maxBytes / (1024 * 1024)).toFixed(1);
218
- newErrors.push({
219
- code: 'size',
220
- message: this._translate('errorFileSize', {
221
- name: file.name,
222
- size: maxMb,
223
- }),
224
- });
225
- return;
226
- }
227
- const isImage = file.type.startsWith('image/');
228
- const uploadedFile = {
229
- id: mlvNextId('mlv-file'),
230
- file,
231
- name: file.name,
232
- size: file.size,
233
- previewUrl: isImage ? URL.createObjectURL(file) : undefined,
234
- state: 'pending',
235
- progress: 0,
236
- };
237
- newFiles.push(uploadedFile);
238
- });
239
- this._errors.set(newErrors);
240
- if (newFiles.length > 0) {
241
- if (this.multiple()) {
242
- this.value.update((previous) => [...(previous ?? []), ...newFiles]);
243
- }
244
- else {
245
- // Replace previous file when multiple is false
246
- const previous = this._files();
247
- previous.forEach((f) => {
248
- if (f.previewUrl)
249
- URL.revokeObjectURL(f.previewUrl);
250
- });
251
- this.value.set(newFiles);
252
- }
253
- this._emitChange();
254
- }
255
- }
256
- /**
257
- * @private Resolves one of the component's ICU rejection templates with the
258
- * offending file's details. Keeps every user-facing validation string in the
259
- * language pack instead of hard-coded English.
260
- */
261
- _translate(key, params) {
262
- return this._resolver.resolve(this._i18n(), key, params);
263
- }
264
- /**
265
- * @private Parses the accept input into a list of accepted MIME prefixes and extensions.
266
- */
267
- _parseAccept() {
268
- const raw = this.accept().trim();
269
- if (!raw)
270
- return [];
271
- return raw.split(',').map((s) => s.trim().toLowerCase());
272
- }
273
- /**
274
- * @private Checks whether a file matches the accepted type list.
275
- */
276
- _isTypeAccepted(file, accepted) {
277
- return accepted.some((pattern) => {
278
- if (pattern.startsWith('.')) {
279
- return file.name.toLowerCase().endsWith(pattern);
280
- }
281
- if (pattern.endsWith('/*')) {
282
- return file.type.startsWith(pattern.slice(0, -1));
283
- }
284
- return file.type === pattern;
285
- });
286
- }
287
- /**
288
- * @private Emits the current file list through the public change output.
289
- */
290
- _emitChange() {
291
- this.filesChange.emit(this._files());
292
- }
293
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: MlvFileUpload, deps: null, target: i0.ɵɵFactoryTarget.Component });
294
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.7", type: MlvFileUpload, isStandalone: true, selector: "mlv-file-upload", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, accept: { classPropertyName: "accept", publicName: "accept", isSignal: true, isRequired: false, transformFunction: null }, maxSize: { classPropertyName: "maxSize", publicName: "maxSize", isSignal: true, isRequired: false, transformFunction: null }, multiple: { classPropertyName: "multiple", publicName: "multiple", isSignal: true, isRequired: false, transformFunction: null }, title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, subtitle: { classPropertyName: "subtitle", publicName: "subtitle", isSignal: true, isRequired: false, transformFunction: null }, actionLabel: { classPropertyName: "actionLabel", publicName: "actionLabel", isSignal: true, isRequired: false, transformFunction: null }, compact: { classPropertyName: "compact", publicName: "compact", isSignal: true, isRequired: false, transformFunction: null }, previewMode: { classPropertyName: "previewMode", publicName: "previewMode", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { value: "valueChange", filesChange: "filesChange" }, host: { listeners: { "dragover": "_onDragOver($event)", "dragleave": "_onDragLeave($event)", "drop": "_onDrop($event)", "focusout": "_markTouched()" }, properties: { "attr.title": "null", "class.mlv-file-upload--cover": "_isCover()", "class.mlv-file-upload--drag-over": "_isDragOver()", "class.mlv-file-upload--disabled": "computedDisabled()", "class.mlv-file-upload--error": "_errors().length > 0", "class.mlv-file-upload--multiple": "multiple()", "class.mlv-file-upload--has-files": "_files().length > 0", "class.mlv-file-upload--compact": "compact()" }, classAttribute: "mlv-file-upload" }, viewQueries: [{ propertyName: "_fileInput", first: true, predicate: ["fileInput"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<input\n #fileInput\n class=\"mlv-file-upload__input\"\n type=\"file\"\n [accept]=\"accept()\"\n [multiple]=\"multiple()\"\n [disabled]=\"computedDisabled()\"\n aria-hidden=\"true\"\n tabindex=\"-1\"\n (change)=\"onFileInputChange($event)\"\n/>\n\n<!-- Drop zone: visually interactive drag target.\n The inner <button type=\"button\"> is the sole keyboard/AT entry point. -->\n<div class=\"mlv-file-upload__zone\">\n @if (_coverFile(); as cover) {\n <!-- Cover preview: the image fills the zone, which stays the drop target.\n Plain <img>, not NgOptimizedImage \u2014 the source is a runtime blob:/data:/\n remote URL of unknown intrinsic size. -->\n <img\n class=\"mlv-file-upload__cover-image\"\n [src]=\"cover.previewUrl\"\n [alt]=\"cover.name\"\n />\n\n @if (_coverUploading()) {\n <mlv-loader\n class=\"mlv-file-upload__cover-progress\"\n variant=\"bar\"\n [value]=\"cover.progress ?? 0\"\n />\n } } @else {\n <span class=\"mlv-file-upload__zone-icon\" aria-hidden=\"true\">\n <svg lucideUpload [size]=\"compact() ? 18 : 28\" />\n </span>\n\n <!-- Title is always in the DOM to serve as aria-describedby anchor;\n hidden visually in compact mode via CSS. -->\n <span\n [id]=\"id() + '-title'\"\n class=\"mlv-file-upload__zone-title\"\n [class.mlv-file-upload__zone-title--hidden]=\"compact()\"\n >{{ title() }}</span\n >\n\n @if (subtitle() && !compact()) {\n <span [id]=\"id() + '-subtitle'\" class=\"mlv-file-upload__zone-subtitle\"\n >{{ subtitle() }}</span\n >\n } }\n\n <!-- One actions container, two presentations. It is the inline action row in\n list mode and the floating toolbar over the cover image. The two\n <ng-content> slots MUST stay outside the @if branches: Angular assigns a\n projected node to the first slot whose selector matches, so duplicating\n a selector across branches leaves the later copy permanently empty.\n DOM order equals visual order, and `position` is read as a static\n attribute here, never as a binding. -->\n <span\n [class.mlv-file-upload__zone-action]=\"!_isCover()\"\n [class.mlv-file-upload__toolbar]=\"_isCover()\"\n >\n <ng-content select=\"[mlvFileUploadAction]:not([position=end])\" />\n\n @if (_isCover()) {\n <button\n mlvButton\n type=\"button\"\n shape=\"square\"\n variant=\"transparent\"\n [disabled]=\"computedDisabled()\"\n [attr.aria-label]=\"_i18n().replaceFile\"\n (click)=\"$event.stopPropagation(); openFilePicker()\"\n >\n <svg lucideRefreshCw [size]=\"16\" />\n </button>\n } @else {\n <button\n mlvButton\n type=\"button\"\n variant=\"secondary\"\n [disabled]=\"computedDisabled()\"\n [attr.aria-describedby]=\"subtitle() && !compact() ? id() + '-title ' + id() + '-subtitle' : id() + '-title'\"\n (click)=\"$event.stopPropagation(); openFilePicker()\"\n >\n {{ actionLabel() }}\n </button>\n }\n\n <ng-content select=\"[mlvFileUploadAction][position=end]\" />\n\n @if (_coverFile(); as cover) {\n <button\n mlvButton\n type=\"button\"\n shape=\"square\"\n variant=\"transparent\"\n [disabled]=\"computedDisabled()\"\n [attr.aria-label]=\"_coverRemoveLabel()\"\n (click)=\"$event.stopPropagation(); removeFile(cover.id)\"\n >\n <svg lucideTrash2 [size]=\"16\" />\n </button>\n }\n </span>\n</div>\n\n@if (_errors().length > 0) {\n<ul class=\"mlv-file-upload__errors\" role=\"alert\" aria-live=\"assertive\">\n @for (err of _errors(); track err.code + err.message) {\n <li class=\"mlv-file-upload__error-item\">{{ err.message }}</li>\n }\n</ul>\n}\n<!-- In cover state the single file's row would only repeat the image and its\n remove control, both of which the cover toolbar already provides. -->\n@if (_fileList().length > 0 && !_isCover()) {\n<ul\n class=\"mlv-file-upload__list\"\n [attr.aria-label]=\"_i18n().selectedFiles\"\n aria-live=\"polite\"\n>\n @for (file of _fileList(); track file.id) {\n <li>\n <mlv-file-upload-item\n class=\"mlv-file-upload-item--entering\"\n [file]=\"file\"\n (remove)=\"removeFile(file.id)\"\n />\n </li>\n }\n</ul>\n}\n", styles: [".mlv-file-upload{display:flex;flex-direction:column;gap:.75rem;font-family:var(--mlv-typography-family-text)}.mlv-file-upload__input{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.mlv-file-upload__zone{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.5rem;padding:2rem 1.5rem;border:var(--mlv-stroke-width-medium) dashed var(--mlv-border-normal);border-radius:var(--mlv-radius-l);background-color:var(--mlv-background-neutral-1);cursor:pointer;text-align:center;transition:border-color var(--mlv-duration-normal) var(--mlv-ease-out),background-color var(--mlv-duration-normal) var(--mlv-ease-out);outline:none}.mlv-file-upload__zone:hover{border-color:var(--mlv-border-focus);background-color:var(--mlv-background-neutral-2)}.mlv-file-upload__zone:focus-visible{outline:var(--mlv-stroke-width) solid var(--mlv-border-focus);outline-offset:.125rem}.mlv-file-upload__zone-icon{display:inline-flex;align-items:center;justify-content:center;color:var(--mlv-text-secondary);margin-bottom:.25rem}.mlv-file-upload__zone-title{font-size:var(--mlv-font-size-m);font-weight:600;color:var(--mlv-text-primary)}.mlv-file-upload__zone-title--hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.mlv-file-upload__zone-subtitle{font-size:var(--mlv-typography-ui-s-size);color:var(--mlv-text-secondary)}.mlv-file-upload__zone-action{display:inline-flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:var(--mlv-spacing-2);margin-top:.25rem}.mlv-file-upload__action{flex:none}.mlv-file-upload__cover-image{position:absolute;inset:0;inline-size:100%;block-size:100%;object-fit:cover;border-radius:inherit;pointer-events:none}.mlv-file-upload__cover-progress{position:absolute;inset-inline:var(--mlv-spacing-3);inset-block-start:var(--mlv-spacing-3);pointer-events:none}.mlv-file-upload__toolbar{position:absolute;inset-block-end:var(--mlv-spacing-3);inset-inline-start:50%;transform:translate(-50%);display:inline-flex;align-items:center;flex-wrap:wrap;justify-content:center;gap:var(--mlv-spacing-1);padding:var(--mlv-spacing-1);border-radius:var(--mlv-radius-l);background-color:var(--mlv-background-raised);box-shadow:var(--mlv-shadow-floating);opacity:0;pointer-events:none;transition:opacity var(--mlv-duration-fast) var(--mlv-ease-default)}.mlv-file-upload__errors{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:.25rem}.mlv-file-upload__error-item{font-size:var(--mlv-typography-ui-s-size);color:var(--mlv-text-negative);padding:.375rem .75rem;border-radius:var(--mlv-radius-s);background-color:var(--mlv-background-danger-1-pale)}.mlv-file-upload__list{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:.5rem}.mlv-file-upload--drag-over .mlv-file-upload__zone{border-color:var(--mlv-border-focus);background-color:var(--mlv-background-neutral-2)}.mlv-file-upload--disabled{pointer-events:none;opacity:var(--mlv-disabled-opacity)}.mlv-file-upload--disabled .mlv-file-upload__zone{cursor:not-allowed}.mlv-file-upload--error .mlv-file-upload__zone{border-color:var(--mlv-text-negative)}.mlv-file-upload--cover{--mlv-file-upload-cover-min-height: 12rem}.mlv-file-upload--cover .mlv-file-upload__zone{position:relative;flex:1 1 auto;min-block-size:var(--mlv-file-upload-cover-min-height);padding:0;overflow:hidden}.mlv-file-upload--cover .mlv-file-upload__zone:hover .mlv-file-upload__toolbar,.mlv-file-upload--cover .mlv-file-upload__zone:focus-within .mlv-file-upload__toolbar{opacity:1;pointer-events:auto}@media(hover:none){.mlv-file-upload--cover .mlv-file-upload__toolbar{opacity:1;pointer-events:auto}}.mlv-file-upload--compact .mlv-file-upload__zone{flex-direction:row;padding:.75rem 1rem;gap:.75rem;text-align:left}.mlv-file-upload--compact .mlv-file-upload__zone-icon{margin-bottom:0}.mlv-file-upload--compact .mlv-file-upload__zone-action{margin-top:0}@media(prefers-reduced-motion:reduce){.mlv-file-upload,.mlv-file-upload *,.mlv-file-upload:before,.mlv-file-upload:after,[class^=mlv-file-upload__],[class*=\" mlv-file-upload__\"],[class^=mlv-file-upload--],[class*=\" mlv-file-upload--\"]{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:var(--mlv-duration-instant)!important}}\n"], dependencies: [{ kind: "component", type: MlvButton, selector: "button[mlvButton], a[mlvButton]", inputs: ["variant", "shape", "disabled", "loading"] }, { kind: "component", type: MlvFileUploadItem, selector: "mlv-file-upload-item", inputs: ["file"], outputs: ["remove"] }, { kind: "component", type: MlvLoader, selector: "mlv-loader", inputs: ["variant", "tone", "value", "max", "indeterminate", "size", "strokeWidth", "ariaLabel", "showHint", "color", "trackColor", "glow"] }, { kind: "component", type: LucideUpload, selector: "svg[lucideUpload]" }, { kind: "component", type: LucideRefreshCw, selector: "svg[lucideRefreshCw]" }, { kind: "component", type: LucideTrash2, selector: "svg[lucideTrash2]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
295
- }
296
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: MlvFileUpload, decorators: [{
297
- type: Component,
298
- args: [{ selector: 'mlv-file-upload', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, imports: [
299
- MlvButton,
300
- MlvFileUploadItem,
301
- MlvLoader,
302
- LucideUpload,
303
- LucideRefreshCw,
304
- LucideTrash2,
305
- ], host: {
306
- class: 'mlv-file-upload',
307
- // `title` is the zone's heading, not a tooltip. Written as a static
308
- // attribute (`title="Image"`) it also lands in the DOM, which gives the
309
- // whole zone a native browser tooltip repeating the heading — so strip it.
310
- '[attr.title]': 'null',
311
- '[class.mlv-file-upload--cover]': '_isCover()',
312
- '[class.mlv-file-upload--drag-over]': '_isDragOver()',
313
- '[class.mlv-file-upload--disabled]': 'computedDisabled()',
314
- '[class.mlv-file-upload--error]': '_errors().length > 0',
315
- '[class.mlv-file-upload--multiple]': 'multiple()',
316
- '[class.mlv-file-upload--has-files]': '_files().length > 0',
317
- '[class.mlv-file-upload--compact]': 'compact()',
318
- '(dragover)': '_onDragOver($event)',
319
- '(dragleave)': '_onDragLeave($event)',
320
- '(drop)': '_onDrop($event)',
321
- '(focusout)': '_markTouched()',
322
- }, template: "<input\n #fileInput\n class=\"mlv-file-upload__input\"\n type=\"file\"\n [accept]=\"accept()\"\n [multiple]=\"multiple()\"\n [disabled]=\"computedDisabled()\"\n aria-hidden=\"true\"\n tabindex=\"-1\"\n (change)=\"onFileInputChange($event)\"\n/>\n\n<!-- Drop zone: visually interactive drag target.\n The inner <button type=\"button\"> is the sole keyboard/AT entry point. -->\n<div class=\"mlv-file-upload__zone\">\n @if (_coverFile(); as cover) {\n <!-- Cover preview: the image fills the zone, which stays the drop target.\n Plain <img>, not NgOptimizedImage \u2014 the source is a runtime blob:/data:/\n remote URL of unknown intrinsic size. -->\n <img\n class=\"mlv-file-upload__cover-image\"\n [src]=\"cover.previewUrl\"\n [alt]=\"cover.name\"\n />\n\n @if (_coverUploading()) {\n <mlv-loader\n class=\"mlv-file-upload__cover-progress\"\n variant=\"bar\"\n [value]=\"cover.progress ?? 0\"\n />\n } } @else {\n <span class=\"mlv-file-upload__zone-icon\" aria-hidden=\"true\">\n <svg lucideUpload [size]=\"compact() ? 18 : 28\" />\n </span>\n\n <!-- Title is always in the DOM to serve as aria-describedby anchor;\n hidden visually in compact mode via CSS. -->\n <span\n [id]=\"id() + '-title'\"\n class=\"mlv-file-upload__zone-title\"\n [class.mlv-file-upload__zone-title--hidden]=\"compact()\"\n >{{ title() }}</span\n >\n\n @if (subtitle() && !compact()) {\n <span [id]=\"id() + '-subtitle'\" class=\"mlv-file-upload__zone-subtitle\"\n >{{ subtitle() }}</span\n >\n } }\n\n <!-- One actions container, two presentations. It is the inline action row in\n list mode and the floating toolbar over the cover image. The two\n <ng-content> slots MUST stay outside the @if branches: Angular assigns a\n projected node to the first slot whose selector matches, so duplicating\n a selector across branches leaves the later copy permanently empty.\n DOM order equals visual order, and `position` is read as a static\n attribute here, never as a binding. -->\n <span\n [class.mlv-file-upload__zone-action]=\"!_isCover()\"\n [class.mlv-file-upload__toolbar]=\"_isCover()\"\n >\n <ng-content select=\"[mlvFileUploadAction]:not([position=end])\" />\n\n @if (_isCover()) {\n <button\n mlvButton\n type=\"button\"\n shape=\"square\"\n variant=\"transparent\"\n [disabled]=\"computedDisabled()\"\n [attr.aria-label]=\"_i18n().replaceFile\"\n (click)=\"$event.stopPropagation(); openFilePicker()\"\n >\n <svg lucideRefreshCw [size]=\"16\" />\n </button>\n } @else {\n <button\n mlvButton\n type=\"button\"\n variant=\"secondary\"\n [disabled]=\"computedDisabled()\"\n [attr.aria-describedby]=\"subtitle() && !compact() ? id() + '-title ' + id() + '-subtitle' : id() + '-title'\"\n (click)=\"$event.stopPropagation(); openFilePicker()\"\n >\n {{ actionLabel() }}\n </button>\n }\n\n <ng-content select=\"[mlvFileUploadAction][position=end]\" />\n\n @if (_coverFile(); as cover) {\n <button\n mlvButton\n type=\"button\"\n shape=\"square\"\n variant=\"transparent\"\n [disabled]=\"computedDisabled()\"\n [attr.aria-label]=\"_coverRemoveLabel()\"\n (click)=\"$event.stopPropagation(); removeFile(cover.id)\"\n >\n <svg lucideTrash2 [size]=\"16\" />\n </button>\n }\n </span>\n</div>\n\n@if (_errors().length > 0) {\n<ul class=\"mlv-file-upload__errors\" role=\"alert\" aria-live=\"assertive\">\n @for (err of _errors(); track err.code + err.message) {\n <li class=\"mlv-file-upload__error-item\">{{ err.message }}</li>\n }\n</ul>\n}\n<!-- In cover state the single file's row would only repeat the image and its\n remove control, both of which the cover toolbar already provides. -->\n@if (_fileList().length > 0 && !_isCover()) {\n<ul\n class=\"mlv-file-upload__list\"\n [attr.aria-label]=\"_i18n().selectedFiles\"\n aria-live=\"polite\"\n>\n @for (file of _fileList(); track file.id) {\n <li>\n <mlv-file-upload-item\n class=\"mlv-file-upload-item--entering\"\n [file]=\"file\"\n (remove)=\"removeFile(file.id)\"\n />\n </li>\n }\n</ul>\n}\n", styles: [".mlv-file-upload{display:flex;flex-direction:column;gap:.75rem;font-family:var(--mlv-typography-family-text)}.mlv-file-upload__input{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.mlv-file-upload__zone{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.5rem;padding:2rem 1.5rem;border:var(--mlv-stroke-width-medium) dashed var(--mlv-border-normal);border-radius:var(--mlv-radius-l);background-color:var(--mlv-background-neutral-1);cursor:pointer;text-align:center;transition:border-color var(--mlv-duration-normal) var(--mlv-ease-out),background-color var(--mlv-duration-normal) var(--mlv-ease-out);outline:none}.mlv-file-upload__zone:hover{border-color:var(--mlv-border-focus);background-color:var(--mlv-background-neutral-2)}.mlv-file-upload__zone:focus-visible{outline:var(--mlv-stroke-width) solid var(--mlv-border-focus);outline-offset:.125rem}.mlv-file-upload__zone-icon{display:inline-flex;align-items:center;justify-content:center;color:var(--mlv-text-secondary);margin-bottom:.25rem}.mlv-file-upload__zone-title{font-size:var(--mlv-font-size-m);font-weight:600;color:var(--mlv-text-primary)}.mlv-file-upload__zone-title--hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.mlv-file-upload__zone-subtitle{font-size:var(--mlv-typography-ui-s-size);color:var(--mlv-text-secondary)}.mlv-file-upload__zone-action{display:inline-flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:var(--mlv-spacing-2);margin-top:.25rem}.mlv-file-upload__action{flex:none}.mlv-file-upload__cover-image{position:absolute;inset:0;inline-size:100%;block-size:100%;object-fit:cover;border-radius:inherit;pointer-events:none}.mlv-file-upload__cover-progress{position:absolute;inset-inline:var(--mlv-spacing-3);inset-block-start:var(--mlv-spacing-3);pointer-events:none}.mlv-file-upload__toolbar{position:absolute;inset-block-end:var(--mlv-spacing-3);inset-inline-start:50%;transform:translate(-50%);display:inline-flex;align-items:center;flex-wrap:wrap;justify-content:center;gap:var(--mlv-spacing-1);padding:var(--mlv-spacing-1);border-radius:var(--mlv-radius-l);background-color:var(--mlv-background-raised);box-shadow:var(--mlv-shadow-floating);opacity:0;pointer-events:none;transition:opacity var(--mlv-duration-fast) var(--mlv-ease-default)}.mlv-file-upload__errors{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:.25rem}.mlv-file-upload__error-item{font-size:var(--mlv-typography-ui-s-size);color:var(--mlv-text-negative);padding:.375rem .75rem;border-radius:var(--mlv-radius-s);background-color:var(--mlv-background-danger-1-pale)}.mlv-file-upload__list{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:.5rem}.mlv-file-upload--drag-over .mlv-file-upload__zone{border-color:var(--mlv-border-focus);background-color:var(--mlv-background-neutral-2)}.mlv-file-upload--disabled{pointer-events:none;opacity:var(--mlv-disabled-opacity)}.mlv-file-upload--disabled .mlv-file-upload__zone{cursor:not-allowed}.mlv-file-upload--error .mlv-file-upload__zone{border-color:var(--mlv-text-negative)}.mlv-file-upload--cover{--mlv-file-upload-cover-min-height: 12rem}.mlv-file-upload--cover .mlv-file-upload__zone{position:relative;flex:1 1 auto;min-block-size:var(--mlv-file-upload-cover-min-height);padding:0;overflow:hidden}.mlv-file-upload--cover .mlv-file-upload__zone:hover .mlv-file-upload__toolbar,.mlv-file-upload--cover .mlv-file-upload__zone:focus-within .mlv-file-upload__toolbar{opacity:1;pointer-events:auto}@media(hover:none){.mlv-file-upload--cover .mlv-file-upload__toolbar{opacity:1;pointer-events:auto}}.mlv-file-upload--compact .mlv-file-upload__zone{flex-direction:row;padding:.75rem 1rem;gap:.75rem;text-align:left}.mlv-file-upload--compact .mlv-file-upload__zone-icon{margin-bottom:0}.mlv-file-upload--compact .mlv-file-upload__zone-action{margin-top:0}@media(prefers-reduced-motion:reduce){.mlv-file-upload,.mlv-file-upload *,.mlv-file-upload:before,.mlv-file-upload:after,[class^=mlv-file-upload__],[class*=\" mlv-file-upload__\"],[class^=mlv-file-upload--],[class*=\" mlv-file-upload--\"]{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:var(--mlv-duration-instant)!important}}\n"] }]
323
- }], propDecorators: { value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }, { type: i0.Output, args: ["valueChange"] }], accept: [{ type: i0.Input, args: [{ isSignal: true, alias: "accept", required: false }] }], maxSize: [{ type: i0.Input, args: [{ isSignal: true, alias: "maxSize", required: false }] }], multiple: [{ type: i0.Input, args: [{ isSignal: true, alias: "multiple", required: false }] }], title: [{ type: i0.Input, args: [{ isSignal: true, alias: "title", required: false }] }], subtitle: [{ type: i0.Input, args: [{ isSignal: true, alias: "subtitle", required: false }] }], actionLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "actionLabel", required: false }] }], compact: [{ type: i0.Input, args: [{ isSignal: true, alias: "compact", required: false }] }], previewMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "previewMode", required: false }] }], filesChange: [{ type: i0.Output, args: ["filesChange"] }], _fileInput: [{ type: i0.ViewChild, args: ['fileInput', { isSignal: true }] }] } });
324
- //# sourceMappingURL=file-upload.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"file-upload.js","sourceRoot":"","sources":["../../../../../../../libs/core/file-upload/src/lib/file-upload/file-upload.ts","../../../../../../../libs/core/file-upload/src/lib/file-upload/file-upload.html"],"names":[],"mappings":"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","sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n computed,\n inject,\n input,\n model,\n output,\n signal,\n viewChild,\n ElementRef,\n ViewEncapsulation,\n} from '@angular/core';\nimport type { BooleanInput } from '@angular/cdk/coercion';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { MlvSignalFormControlBase } from '@malva-ui/core/form-utils';\nimport { mlvNextId } from '@malva-ui/cdk/utils';\nimport { MlvButton } from '@malva-ui/core/button';\nimport { MlvLoader } from '@malva-ui/core/loader';\nimport { LucideRefreshCw, LucideTrash2, LucideUpload } from '@lucide/angular';\nimport type { MlvFileUploadI18n } from '@malva-ui/i18n';\nimport { MLV_FILE_UPLOAD_I18N, MlvI18nResolverService } from '@malva-ui/i18n';\nimport { MlvFileUploadItem } from '../file-upload-item/file-upload-item';\nimport type {\n MlvFileUploadPreviewMode,\n MlvFileValidationError,\n MlvUploadedFile,\n} from './file-upload.types';\n\n/**\n * File upload component providing a drag-and-drop zone, file validation, and\n * signal, reactive, and template-driven forms integration. Produces an array\n * of `MlvUploadedFile` values.\n */\n@Component({\n selector: 'mlv-file-upload',\n templateUrl: './file-upload.html',\n styleUrl: './file-upload.scss',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n MlvButton,\n MlvFileUploadItem,\n MlvLoader,\n LucideUpload,\n LucideRefreshCw,\n LucideTrash2,\n ],\n host: {\n class: 'mlv-file-upload',\n // `title` is the zone's heading, not a tooltip. Written as a static\n // attribute (`title=\"Image\"`) it also lands in the DOM, which gives the\n // whole zone a native browser tooltip repeating the heading — so strip it.\n '[attr.title]': 'null',\n '[class.mlv-file-upload--cover]': '_isCover()',\n '[class.mlv-file-upload--drag-over]': '_isDragOver()',\n '[class.mlv-file-upload--disabled]': 'computedDisabled()',\n '[class.mlv-file-upload--error]': '_errors().length > 0',\n '[class.mlv-file-upload--multiple]': 'multiple()',\n '[class.mlv-file-upload--has-files]': '_files().length > 0',\n '[class.mlv-file-upload--compact]': 'compact()',\n '(dragover)': '_onDragOver($event)',\n '(dragleave)': '_onDragLeave($event)',\n '(drop)': '_onDrop($event)',\n '(focusout)': '_markTouched()',\n },\n})\nexport class MlvFileUpload extends MlvSignalFormControlBase<MlvUploadedFile[]> {\n /** The uploaded-file list used by all Angular forms APIs. */\n readonly value = model<MlvUploadedFile[]>([]);\n /** @protected Injected i18n translations for the file upload. */\n protected readonly _i18n = inject(MLV_FILE_UPLOAD_I18N);\n\n /** @private ICU MessageFormat resolver for the parameterised rejection messages. */\n private readonly _resolver = inject(MlvI18nResolverService);\n\n /** Comma-separated list of accepted MIME types or file extensions (e.g. `\"image/*,.pdf\"`). */\n readonly accept = input<string>('');\n\n /**\n * Maximum allowed file size in bytes. `0` means unlimited.\n */\n readonly maxSize = input<number>(0);\n\n /** Whether to allow selecting multiple files. */\n readonly multiple = input<boolean, BooleanInput>(true, {\n transform: coerceBooleanProperty,\n });\n\n /** Primary heading text shown in the drop zone. */\n readonly title = input<string>('Drag & drop files here');\n\n /** Secondary description text shown below the title. */\n readonly subtitle = input<string>('');\n\n /** Label text for the browse button. */\n readonly actionLabel = input<string>('Browse files');\n\n /** When true, renders a compact single-row drop zone instead of the full zone. */\n readonly compact = input<boolean, BooleanInput>(false, {\n transform: coerceBooleanProperty,\n });\n\n /**\n * How the zone presents the current selection.\n *\n * `'list'` (the default) keeps today's behaviour: the prompt and browse\n * button always show, and selected files are listed below the zone.\n *\n * `'cover'` fills the zone with the selected image and swaps the browse\n * button for a floating replace/remove toolbar. It only takes effect when\n * **all** of these hold, and silently falls back to `'list'` otherwise:\n *\n * 1. `multiple` is `false`,\n * 2. exactly one file is selected, and\n * 3. that file carries a `previewUrl`.\n *\n * `previewUrl` is generated automatically for any dropped/picked file whose\n * MIME type starts with `image/`. For an edit-mode seed, write it yourself —\n * it accepts a remote `https://…` or a `data:` URL just as happily as the\n * generated `blob:` one.\n */\n readonly previewMode = input<MlvFileUploadPreviewMode>('list');\n\n /** Emits the current file list whenever files are added or removed. */\n readonly filesChange = output<MlvUploadedFile[]>();\n\n /** @private List of selected/uploaded files managed by the component. */\n protected readonly _files = computed(() => this.value() ?? []);\n\n /** @private Validation errors from the last file selection or drop. */\n protected readonly _errors = signal<MlvFileValidationError[]>([]);\n\n /** @private Whether the user is currently dragging files over the drop zone. */\n protected readonly _isDragOver = signal(false);\n\n /** @private Reference to the hidden file input element. */\n private readonly _fileInput =\n viewChild<ElementRef<HTMLInputElement>>('fileInput');\n\n /** @private Reference to the host element for dragleave boundary detection. */\n private readonly _elementRef = inject(ElementRef<HTMLElement>);\n\n /** @protected Computed list of files exposed to the template. */\n protected readonly _fileList = computed(() => this._files());\n\n // Cover preview ----------------------------------------------------------------\n\n /**\n * @protected The single file rendered as a full-zone cover, or `null` when\n * the cover preconditions are not met (see `previewMode`) and the zone falls\n * back to the normal prompt.\n */\n protected readonly _coverFile = computed<MlvUploadedFile | null>(() => {\n if (this.previewMode() !== 'cover' || this.multiple()) return null;\n const files = this._files();\n if (files.length !== 1) return null;\n return files[0].previewUrl ? files[0] : null;\n });\n\n /** @protected Whether the zone currently renders the cover preview. */\n protected readonly _isCover = computed(() => this._coverFile() !== null);\n\n /**\n * @protected Whether the covered file is still uploading, which overlays a\n * determinate progress bar on the image instead of falling back to list mode.\n */\n protected readonly _coverUploading = computed(() => {\n const file = this._coverFile();\n return (\n file !== null && file.state === 'uploading' && (file.progress ?? 0) < 100\n );\n });\n\n /**\n * @protected Accessible name for the cover toolbar's remove button, with the\n * covered file's name interpolated into the shared `removeFile` template.\n */\n protected readonly _coverRemoveLabel = computed(() => {\n const file = this._coverFile();\n return file ? this._translate('removeFile', { name: file.name }) : '';\n });\n\n // Forms value ------------------------------------------------------------------\n\n /** Whether the control holds a clearable value — At least one file present. */\n readonly hasValue = computed(() => this._files().length > 0);\n\n // Public API -------------------------------------------------------------------\n\n /**\n * Programmatically opens the native file picker dialog.\n */\n openFilePicker(): void {\n if (this.computedDisabled()) return;\n this._fileInput()?.nativeElement.click();\n }\n\n /**\n * Handles changes from the hidden file input element.\n * @param event - The native change event from the input.\n */\n onFileInputChange(event: Event): void {\n const input = event.target as HTMLInputElement;\n if (input.files) {\n this._validateAndAdd(input.files);\n }\n // Reset so the same file can be re-selected\n input.value = '';\n }\n\n /**\n * Removes a file by its id, revoking the preview URL if present.\n * @param id - The id of the `MlvUploadedFile` to remove.\n */\n removeFile(id: string): void {\n const target = this._files().find((f) => f.id === id);\n if (target?.previewUrl) {\n URL.revokeObjectURL(target.previewUrl);\n }\n this.value.update((files) =>\n (files ?? []).filter((file) => file.id !== id),\n );\n this._emitChange();\n }\n\n // Internal helpers -------------------------------------------------------------\n\n /**\n * @private Handles the dragover event to enable the drag-over state.\n */\n protected _onDragOver(event: DragEvent): void {\n event.preventDefault();\n if (!this.computedDisabled()) {\n this._isDragOver.set(true);\n }\n }\n\n /**\n * @private Handles the dragleave event to clear drag-over state when leaving the host.\n */\n protected _onDragLeave(event: DragEvent): void {\n if (!this._elementRef.nativeElement.contains(event.relatedTarget as Node)) {\n this._isDragOver.set(false);\n }\n }\n\n /**\n * @private Handles the drop event, reads dropped files and validates them.\n */\n protected _onDrop(event: DragEvent): void {\n event.preventDefault();\n this._isDragOver.set(false);\n if (this.computedDisabled()) return;\n const dt = event.dataTransfer;\n if (dt?.files) {\n this._validateAndAdd(dt.files);\n }\n }\n\n /**\n * @private Validates a FileList against accept/maxSize constraints and appends valid files.\n */\n private _validateAndAdd(fileList: FileList): void {\n const newErrors: MlvFileValidationError[] = [];\n const newFiles: MlvUploadedFile[] = [];\n const acceptedTypes = this._parseAccept();\n\n Array.from(fileList).forEach((file) => {\n // Count check\n if (!this.multiple() && this._files().length + newFiles.length >= 1) {\n newErrors.push({\n code: 'count',\n message: this._i18n().errorSingleFile,\n });\n return;\n }\n\n // Type check\n if (\n acceptedTypes.length > 0 &&\n !this._isTypeAccepted(file, acceptedTypes)\n ) {\n newErrors.push({\n code: 'type',\n message: this._translate('errorFileType', { name: file.name }),\n });\n return;\n }\n\n // Size check\n const maxBytes = this.maxSize();\n if (maxBytes > 0 && file.size > maxBytes) {\n const maxMb = (maxBytes / (1024 * 1024)).toFixed(1);\n newErrors.push({\n code: 'size',\n message: this._translate('errorFileSize', {\n name: file.name,\n size: maxMb,\n }),\n });\n return;\n }\n\n const isImage = file.type.startsWith('image/');\n const uploadedFile: MlvUploadedFile = {\n id: mlvNextId('mlv-file'),\n file,\n name: file.name,\n size: file.size,\n previewUrl: isImage ? URL.createObjectURL(file) : undefined,\n state: 'pending',\n progress: 0,\n };\n newFiles.push(uploadedFile);\n });\n\n this._errors.set(newErrors);\n\n if (newFiles.length > 0) {\n if (this.multiple()) {\n this.value.update((previous) => [...(previous ?? []), ...newFiles]);\n } else {\n // Replace previous file when multiple is false\n const previous = this._files();\n previous.forEach((f) => {\n if (f.previewUrl) URL.revokeObjectURL(f.previewUrl);\n });\n this.value.set(newFiles);\n }\n this._emitChange();\n }\n }\n\n /**\n * @private Resolves one of the component's ICU rejection templates with the\n * offending file's details. Keeps every user-facing validation string in the\n * language pack instead of hard-coded English.\n */\n private _translate(\n key: keyof MlvFileUploadI18n,\n params: Record<string, string>,\n ): string {\n return this._resolver.resolve(\n this._i18n() as unknown as Record<string, string>,\n key,\n params,\n );\n }\n\n /**\n * @private Parses the accept input into a list of accepted MIME prefixes and extensions.\n */\n private _parseAccept(): string[] {\n const raw = this.accept().trim();\n if (!raw) return [];\n return raw.split(',').map((s) => s.trim().toLowerCase());\n }\n\n /**\n * @private Checks whether a file matches the accepted type list.\n */\n private _isTypeAccepted(file: File, accepted: string[]): boolean {\n return accepted.some((pattern) => {\n if (pattern.startsWith('.')) {\n return file.name.toLowerCase().endsWith(pattern);\n }\n if (pattern.endsWith('/*')) {\n return file.type.startsWith(pattern.slice(0, -1));\n }\n return file.type === pattern;\n });\n }\n\n /**\n * @private Emits the current file list through the public change output.\n */\n private _emitChange(): void {\n this.filesChange.emit(this._files());\n }\n}\n","<input\n #fileInput\n class=\"mlv-file-upload__input\"\n type=\"file\"\n [accept]=\"accept()\"\n [multiple]=\"multiple()\"\n [disabled]=\"computedDisabled()\"\n aria-hidden=\"true\"\n tabindex=\"-1\"\n (change)=\"onFileInputChange($event)\"\n/>\n\n<!-- Drop zone: visually interactive drag target.\n The inner <button type=\"button\"> is the sole keyboard/AT entry point. -->\n<div class=\"mlv-file-upload__zone\">\n @if (_coverFile(); as cover) {\n <!-- Cover preview: the image fills the zone, which stays the drop target.\n Plain <img>, not NgOptimizedImage — the source is a runtime blob:/data:/\n remote URL of unknown intrinsic size. -->\n <img\n class=\"mlv-file-upload__cover-image\"\n [src]=\"cover.previewUrl\"\n [alt]=\"cover.name\"\n />\n\n @if (_coverUploading()) {\n <mlv-loader\n class=\"mlv-file-upload__cover-progress\"\n variant=\"bar\"\n [value]=\"cover.progress ?? 0\"\n />\n } } @else {\n <span class=\"mlv-file-upload__zone-icon\" aria-hidden=\"true\">\n <svg lucideUpload [size]=\"compact() ? 18 : 28\" />\n </span>\n\n <!-- Title is always in the DOM to serve as aria-describedby anchor;\n hidden visually in compact mode via CSS. -->\n <span\n [id]=\"id() + '-title'\"\n class=\"mlv-file-upload__zone-title\"\n [class.mlv-file-upload__zone-title--hidden]=\"compact()\"\n >{{ title() }}</span\n >\n\n @if (subtitle() && !compact()) {\n <span [id]=\"id() + '-subtitle'\" class=\"mlv-file-upload__zone-subtitle\"\n >{{ subtitle() }}</span\n >\n } }\n\n <!-- One actions container, two presentations. It is the inline action row in\n list mode and the floating toolbar over the cover image. The two\n <ng-content> slots MUST stay outside the @if branches: Angular assigns a\n projected node to the first slot whose selector matches, so duplicating\n a selector across branches leaves the later copy permanently empty.\n DOM order equals visual order, and `position` is read as a static\n attribute here, never as a binding. -->\n <span\n [class.mlv-file-upload__zone-action]=\"!_isCover()\"\n [class.mlv-file-upload__toolbar]=\"_isCover()\"\n >\n <ng-content select=\"[mlvFileUploadAction]:not([position=end])\" />\n\n @if (_isCover()) {\n <button\n mlvButton\n type=\"button\"\n shape=\"square\"\n variant=\"transparent\"\n [disabled]=\"computedDisabled()\"\n [attr.aria-label]=\"_i18n().replaceFile\"\n (click)=\"$event.stopPropagation(); openFilePicker()\"\n >\n <svg lucideRefreshCw [size]=\"16\" />\n </button>\n } @else {\n <button\n mlvButton\n type=\"button\"\n variant=\"secondary\"\n [disabled]=\"computedDisabled()\"\n [attr.aria-describedby]=\"subtitle() && !compact() ? id() + '-title ' + id() + '-subtitle' : id() + '-title'\"\n (click)=\"$event.stopPropagation(); openFilePicker()\"\n >\n {{ actionLabel() }}\n </button>\n }\n\n <ng-content select=\"[mlvFileUploadAction][position=end]\" />\n\n @if (_coverFile(); as cover) {\n <button\n mlvButton\n type=\"button\"\n shape=\"square\"\n variant=\"transparent\"\n [disabled]=\"computedDisabled()\"\n [attr.aria-label]=\"_coverRemoveLabel()\"\n (click)=\"$event.stopPropagation(); removeFile(cover.id)\"\n >\n <svg lucideTrash2 [size]=\"16\" />\n </button>\n }\n </span>\n</div>\n\n@if (_errors().length > 0) {\n<ul class=\"mlv-file-upload__errors\" role=\"alert\" aria-live=\"assertive\">\n @for (err of _errors(); track err.code + err.message) {\n <li class=\"mlv-file-upload__error-item\">{{ err.message }}</li>\n }\n</ul>\n}\n<!-- In cover state the single file's row would only repeat the image and its\n remove control, both of which the cover toolbar already provides. -->\n@if (_fileList().length > 0 && !_isCover()) {\n<ul\n class=\"mlv-file-upload__list\"\n [attr.aria-label]=\"_i18n().selectedFiles\"\n aria-live=\"polite\"\n>\n @for (file of _fileList(); track file.id) {\n <li>\n <mlv-file-upload-item\n class=\"mlv-file-upload-item--entering\"\n [file]=\"file\"\n (remove)=\"removeFile(file.id)\"\n />\n </li>\n }\n</ul>\n}\n"]}
@@ -1 +0,0 @@
1
- //# sourceMappingURL=file-upload.types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"file-upload.types.js","sourceRoot":"","sources":["../../../../../../../libs/core/file-upload/src/lib/file-upload/file-upload.types.ts"],"names":[],"mappings":"","sourcesContent":["/**\n * Represents a file that has been selected or uploaded.\n */\nexport interface MlvUploadedFile {\n /** Unique identifier for the file entry. */\n id: string;\n /** The native File object. */\n file: File;\n /** Display name derived from the file. */\n name: string;\n /** File size in bytes. */\n size: number;\n /** Object URL for image preview — revoked when the file is removed. */\n previewUrl?: string;\n /** Current upload state. */\n state: 'pending' | 'uploading' | 'success' | 'error';\n /** Upload progress from 0–100 (used when state is `'uploading'`). */\n progress?: number;\n /** Validation error set when the file fails accept/size/count checks. */\n error?: MlvFileValidationError;\n}\n\n/**\n * Describes a file validation failure.\n */\nexport interface MlvFileValidationError {\n /** Machine-readable reason code. */\n code: 'size' | 'type' | 'count';\n /** Human-readable error message. */\n message: string;\n}\n\n/** Overall state of the drop-zone. */\nexport type MlvFileUploadState = 'idle' | 'dragging' | 'disabled';\n\n/**\n * How the drop zone presents the current selection.\n *\n * - `'list'` — the default. The zone always shows the prompt and browse\n * button, and selected files are listed below it.\n * - `'cover'` — a single selected image fills the zone, with a floating\n * replace/remove toolbar. Falls back to `'list'` whenever the cover\n * preconditions are not met (see `MlvFileUpload.previewMode`).\n */\nexport type MlvFileUploadPreviewMode = 'list' | 'cover';\n"]}
@@ -1,65 +0,0 @@
1
- import { Directive, input } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- /**
4
- * Marks a projected control as an extra action in the drop zone's action row,
5
- * next to the built-in browse button. Typical use is an icon-only button that
6
- * offers an alternative to picking a file — "generate with AI", "pick from
7
- * library", "use camera".
8
- *
9
- * `position` is matched by the component's `<ng-content>` selectors, so it must
10
- * be written as a **static attribute** (`position="end"`), exactly like the
11
- * other Malva UI slot markers. A binding (`[position]="…"`) changes the
12
- * directive's signal but cannot move the node between projection slots.
13
- * DOM order equals visual order — nothing is reordered with CSS `order` — so
14
- * the tab sequence always matches what the user sees.
15
- *
16
- * Clicks (including Enter/Space activation of a projected `<button>`) stop at
17
- * the slot, so an extra action never also triggers the surrounding zone and
18
- * opens the native file picker.
19
- *
20
- * Disabling a projected control is the consumer's job: `mlv-file-upload` only
21
- * dims the zone and blocks pointer events while the control itself is
22
- * disabled, it does not write `disabled` onto projected content.
23
- *
24
- * @example
25
- * ```html
26
- * <mlv-file-upload title="Image" actionLabel="Choose image">
27
- * <button mlvButton mlvFileUploadAction type="button" shape="square"
28
- * aria-label="Generate image with AI">
29
- * <svg lucideSparkles [size]="16" />
30
- * </button>
31
- * </mlv-file-upload>
32
- *
33
- * <mlv-file-upload actionLabel="Choose image">
34
- * <button mlvButton mlvFileUploadAction position="end" type="button"
35
- * variant="transparent">
36
- * Import from URL
37
- * </button>
38
- * </mlv-file-upload>
39
- * ```
40
- */
41
- export class MlvFileUploadAction {
42
- /**
43
- * Where the action sits relative to the browse button. `'start'` (the
44
- * default) renders it before the button, `'end'` after it.
45
- *
46
- * Set it as a static attribute — `position="end"` — because the value is
47
- * read by the host component's content-projection selector, not at runtime.
48
- */
49
- position = input('start', /* @ts-ignore */
50
- ...(ngDevMode ? [{ debugName: "position" }] : /* istanbul ignore next */ []));
51
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: MlvFileUploadAction, deps: [], target: i0.ɵɵFactoryTarget.Directive });
52
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.0.7", type: MlvFileUploadAction, isStandalone: true, selector: "[mlvFileUploadAction]", inputs: { position: { classPropertyName: "position", publicName: "position", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "click": "$event.stopPropagation()" }, properties: { "class.mlv-file-upload__action--end": "position() === 'end'" }, classAttribute: "mlv-file-upload__action" }, ngImport: i0 });
53
- }
54
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: MlvFileUploadAction, decorators: [{
55
- type: Directive,
56
- args: [{
57
- selector: '[mlvFileUploadAction]',
58
- host: {
59
- class: 'mlv-file-upload__action',
60
- '[class.mlv-file-upload__action--end]': "position() === 'end'",
61
- '(click)': '$event.stopPropagation()',
62
- },
63
- }]
64
- }], propDecorators: { position: [{ type: i0.Input, args: [{ isSignal: true, alias: "position", required: false }] }] } });
65
- //# sourceMappingURL=file-upload-action.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"file-upload-action.js","sourceRoot":"","sources":["../../../../../../libs/core/file-upload/src/lib/file-upload-action.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;;AAKjD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AASH,MAAM,OAAO,mBAAmB;IAC9B;;;;;;OAMG;IACM,QAAQ,GAAG,KAAK,CAA8B,OAAO;iFAAC,CAAC;uGARrD,mBAAmB;2FAAnB,mBAAmB;;2FAAnB,mBAAmB;kBAR/B,SAAS;mBAAC;oBACT,QAAQ,EAAE,uBAAuB;oBACjC,IAAI,EAAE;wBACJ,KAAK,EAAE,yBAAyB;wBAChC,sCAAsC,EAAE,sBAAsB;wBAC9D,SAAS,EAAE,0BAA0B;qBACtC;iBACF","sourcesContent":["import { Directive, input } from '@angular/core';\n\n/** Which side of the browse button a `[mlvFileUploadAction]` control renders on. */\nexport type MlvFileUploadActionPosition = 'start' | 'end';\n\n/**\n * Marks a projected control as an extra action in the drop zone's action row,\n * next to the built-in browse button. Typical use is an icon-only button that\n * offers an alternative to picking a file — \"generate with AI\", \"pick from\n * library\", \"use camera\".\n *\n * `position` is matched by the component's `<ng-content>` selectors, so it must\n * be written as a **static attribute** (`position=\"end\"`), exactly like the\n * other Malva UI slot markers. A binding (`[position]=\"…\"`) changes the\n * directive's signal but cannot move the node between projection slots.\n * DOM order equals visual order — nothing is reordered with CSS `order` — so\n * the tab sequence always matches what the user sees.\n *\n * Clicks (including Enter/Space activation of a projected `<button>`) stop at\n * the slot, so an extra action never also triggers the surrounding zone and\n * opens the native file picker.\n *\n * Disabling a projected control is the consumer's job: `mlv-file-upload` only\n * dims the zone and blocks pointer events while the control itself is\n * disabled, it does not write `disabled` onto projected content.\n *\n * @example\n * ```html\n * <mlv-file-upload title=\"Image\" actionLabel=\"Choose image\">\n * <button mlvButton mlvFileUploadAction type=\"button\" shape=\"square\"\n * aria-label=\"Generate image with AI\">\n * <svg lucideSparkles [size]=\"16\" />\n * </button>\n * </mlv-file-upload>\n *\n * <mlv-file-upload actionLabel=\"Choose image\">\n * <button mlvButton mlvFileUploadAction position=\"end\" type=\"button\"\n * variant=\"transparent\">\n * Import from URL\n * </button>\n * </mlv-file-upload>\n * ```\n */\n@Directive({\n selector: '[mlvFileUploadAction]',\n host: {\n class: 'mlv-file-upload__action',\n '[class.mlv-file-upload__action--end]': \"position() === 'end'\",\n '(click)': '$event.stopPropagation()',\n },\n})\nexport class MlvFileUploadAction {\n /**\n * Where the action sits relative to the browse button. `'start'` (the\n * default) renders it before the button, `'end'` after it.\n *\n * Set it as a static attribute — `position=\"end\"` — because the value is\n * read by the host component's content-projection selector, not at runtime.\n */\n readonly position = input<MlvFileUploadActionPosition>('start');\n}\n"]}
@@ -1,55 +0,0 @@
1
- import { ChangeDetectionStrategy, Component, computed, inject, input, output, ViewEncapsulation, } from '@angular/core';
2
- import { MlvLoader } from '@malva-ui/core/loader';
3
- import { LucideFile, LucideX, LucideCircleCheck, LucideCircleX, } from '@lucide/angular';
4
- import { MLV_FILE_UPLOAD_I18N, MlvI18nResolverService } from '@malva-ui/i18n';
5
- import * as i0 from "@angular/core";
6
- /**
7
- * Renders a single uploaded file row with thumbnail, metadata, progress bar,
8
- * status icon, and a remove button.
9
- */
10
- export class MlvFileUploadItem {
11
- /** @protected Injected i18n translations for the file upload. */
12
- _i18n = inject(MLV_FILE_UPLOAD_I18N);
13
- /** @private ICU MessageFormat resolver for parameterised i18n strings. */
14
- _resolver = inject(MlvI18nResolverService);
15
- /** The uploaded file descriptor to render. */
16
- file = input.required(/* @ts-ignore */
17
- ...(ngDevMode ? [{ debugName: "file" }] : /* istanbul ignore next */ []));
18
- /**
19
- * @protected Accessible label for the remove button, naming the specific file
20
- * (e.g. `"Remove report.xlsx"`) so screen-reader users know which file the
21
- * button removes. Resolves the `removeFile` ICU template with the file name.
22
- */
23
- _removeLabel = computed(() => this._resolver.resolve(this._i18n(), 'removeFile', { name: this.file().name }), /* @ts-ignore */
24
- ...(ngDevMode ? [{ debugName: "_removeLabel" }] : /* istanbul ignore next */ []));
25
- /** Emits when the user clicks the remove button. */
26
- remove = output();
27
- /** @protected Human-readable file size string (e.g. "1.2 MB"). */
28
- _formattedSize = computed(() => {
29
- const bytes = this.file().size;
30
- if (bytes < 1024)
31
- return `${bytes} B`;
32
- if (bytes < 1024 * 1024)
33
- return `${(bytes / 1024).toFixed(1)} KB`;
34
- return `${(bytes / (1024 * 1024)).toFixed(1)} MB`;
35
- }, /* @ts-ignore */
36
- ...(ngDevMode ? [{ debugName: "_formattedSize" }] : /* istanbul ignore next */ []));
37
- /** @protected Whether to show the progress bar. */
38
- _showProgress = computed(() => this.file().state === 'uploading', /* @ts-ignore */
39
- ...(ngDevMode ? [{ debugName: "_showProgress" }] : /* istanbul ignore next */ []));
40
- /** @protected Current progress value for the loader bar. */
41
- _progress = computed(() => this.file().progress ?? 0, /* @ts-ignore */
42
- ...(ngDevMode ? [{ debugName: "_progress" }] : /* istanbul ignore next */ []));
43
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: MlvFileUploadItem, deps: [], target: i0.ɵɵFactoryTarget.Component });
44
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.7", type: MlvFileUploadItem, isStandalone: true, selector: "mlv-file-upload-item", inputs: { file: { classPropertyName: "file", publicName: "file", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { remove: "remove" }, host: { properties: { "class.mlv-file-upload-item--uploading": "file().state === \"uploading\"", "class.mlv-file-upload-item--success": "file().state === \"success\"", "class.mlv-file-upload-item--error": "file().state === \"error\"" }, classAttribute: "mlv-file-upload-item" }, ngImport: i0, template: "<div class=\"mlv-file-upload-item__thumbnail\">\n @if (file().previewUrl) {\n <img\n [src]=\"file().previewUrl\"\n [alt]=\"file().name\"\n class=\"mlv-file-upload-item__thumbnail-img\"\n />\n } @else {\n <svg lucideFile [size]=\"20\" aria-hidden=\"true\" />\n }\n</div>\n\n<div class=\"mlv-file-upload-item__info\">\n <span class=\"mlv-file-upload-item__name\" [title]=\"file().name\"\n >{{ file().name }}</span\n >\n\n @if (file().error) {\n <span class=\"mlv-file-upload-item__meta mlv-file-upload-item__meta--error\">\n {{ file().error!.message }}\n </span>\n } @else {\n <span class=\"mlv-file-upload-item__meta\">{{ _formattedSize() }}</span>\n } @if (_showProgress()) {\n <mlv-loader\n class=\"mlv-file-upload-item__progress\"\n variant=\"bar\"\n [value]=\"_progress()\"\n [size]=\"3\"\n [ariaLabel]=\"'Uploading ' + file().name + ', ' + _progress() + '%'\"\n />\n }\n</div>\n\n<div class=\"mlv-file-upload-item__actions\">\n @if (file().state === 'success') {\n <svg\n lucideCircleCheck\n class=\"mlv-file-upload-item__status-icon mlv-file-upload-item__status-icon--success\"\n [size]=\"18\"\n [attr.aria-label]=\"_i18n().uploadComplete\"\n role=\"img\"\n />\n } @if (file().state === 'error') {\n <svg\n lucideCircleX\n class=\"mlv-file-upload-item__status-icon mlv-file-upload-item__status-icon--error\"\n [size]=\"18\"\n [attr.aria-label]=\"_i18n().uploadFailed\"\n role=\"img\"\n />\n }\n\n <button\n type=\"button\"\n class=\"mlv-file-upload-item__remove\"\n [attr.aria-label]=\"_removeLabel()\"\n (click)=\"remove.emit()\"\n >\n <svg lucideX [size]=\"16\" aria-hidden=\"true\" />\n </button>\n</div>\n", styles: [".mlv-file-upload-item{display:flex;align-items:center;gap:.75rem;padding:.625rem .75rem;border-radius:var(--mlv-radius-m);border:var(--mlv-stroke-width) solid var(--mlv-border-normal);background-color:var(--mlv-background-neutral-1);transition:background-color var(--mlv-duration-normal) var(--mlv-ease-out)}.mlv-file-upload-item__thumbnail{flex-shrink:0;width:2.5rem;height:2.5rem;border-radius:var(--mlv-radius-s);overflow:hidden;display:flex;align-items:center;justify-content:center;background-color:var(--mlv-background-neutral-2);color:var(--mlv-text-secondary)}.mlv-file-upload-item__thumbnail-img{width:100%;height:100%;object-fit:cover}.mlv-file-upload-item__info{flex:1;min-width:0;display:flex;flex-direction:column;gap:.125rem}.mlv-file-upload-item__name{font-family:var(--mlv-typography-family-text);font-size:var(--mlv-font-size-s);color:var(--mlv-text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.mlv-file-upload-item__meta{font-family:var(--mlv-typography-family-text);font-size:var(--mlv-typography-caption-size);color:var(--mlv-text-secondary)}.mlv-file-upload-item__meta--error{color:var(--mlv-text-negative)}.mlv-file-upload-item__progress{margin-top:.25rem;width:100%}.mlv-file-upload-item__actions{display:flex;align-items:center;gap:.25rem;flex-shrink:0}.mlv-file-upload-item__status-icon--success{color:var(--mlv-text-positive)}.mlv-file-upload-item__status-icon--error{color:var(--mlv-text-negative)}.mlv-file-upload-item__remove{display:inline-flex;align-items:center;justify-content:center;width:1.75rem;height:1.75rem;border:none;background:transparent;border-radius:var(--mlv-radius-s);cursor:pointer;color:var(--mlv-text-secondary);transition:color var(--mlv-duration-normal) var(--mlv-ease-out),background-color var(--mlv-duration-normal) var(--mlv-ease-out)}.mlv-file-upload-item__remove:hover{color:var(--mlv-text-primary);background-color:var(--mlv-background-neutral-2)}.mlv-file-upload-item__remove:focus-visible{outline:var(--mlv-stroke-width) solid var(--mlv-border-focus);outline-offset:.125rem}.mlv-file-upload-item--uploading{border-color:var(--mlv-border-focus)}.mlv-file-upload-item--success{border-color:var(--mlv-text-positive)}.mlv-file-upload-item--error{border-color:var(--mlv-text-negative);background-color:var(--mlv-background-danger-1-pale)}.mlv-file-upload-item--entering{animation:var(--mlv-duration-normal) var(--mlv-ease-out) file-item-enter}.mlv-file-upload-item--leaving{animation:var(--mlv-duration-normal) var(--mlv-ease-in) file-item-leave}@media(prefers-reduced-motion:reduce){.mlv-file-upload-item,.mlv-file-upload-item *,.mlv-file-upload-item:before,.mlv-file-upload-item:after,[class^=mlv-file-upload-item__],[class*=\" mlv-file-upload-item__\"],[class^=mlv-file-upload-item--],[class*=\" mlv-file-upload-item--\"]{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:var(--mlv-duration-instant)!important}}@keyframes file-item-enter{0%{opacity:0;transform:translateY(-.25rem)}to{opacity:1;transform:translateY(0)}}@keyframes file-item-leave{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-.25rem)}}\n"], dependencies: [{ kind: "component", type: MlvLoader, selector: "mlv-loader", inputs: ["variant", "tone", "value", "max", "indeterminate", "size", "strokeWidth", "ariaLabel", "showHint", "color", "trackColor", "glow"] }, { kind: "component", type: LucideFile, selector: "svg[lucideFile]" }, { kind: "component", type: LucideX, selector: "svg[lucideX]" }, { kind: "component", type: LucideCircleCheck, selector: "svg[lucideCircleCheck], svg[lucideCheckCircle2]" }, { kind: "component", type: LucideCircleX, selector: "svg[lucideCircleX], svg[lucideXCircle]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
45
- }
46
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: MlvFileUploadItem, decorators: [{
47
- type: Component,
48
- args: [{ selector: 'mlv-file-upload-item', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, imports: [MlvLoader, LucideFile, LucideX, LucideCircleCheck, LucideCircleX], host: {
49
- class: 'mlv-file-upload-item',
50
- '[class.mlv-file-upload-item--uploading]': 'file().state === "uploading"',
51
- '[class.mlv-file-upload-item--success]': 'file().state === "success"',
52
- '[class.mlv-file-upload-item--error]': 'file().state === "error"',
53
- }, template: "<div class=\"mlv-file-upload-item__thumbnail\">\n @if (file().previewUrl) {\n <img\n [src]=\"file().previewUrl\"\n [alt]=\"file().name\"\n class=\"mlv-file-upload-item__thumbnail-img\"\n />\n } @else {\n <svg lucideFile [size]=\"20\" aria-hidden=\"true\" />\n }\n</div>\n\n<div class=\"mlv-file-upload-item__info\">\n <span class=\"mlv-file-upload-item__name\" [title]=\"file().name\"\n >{{ file().name }}</span\n >\n\n @if (file().error) {\n <span class=\"mlv-file-upload-item__meta mlv-file-upload-item__meta--error\">\n {{ file().error!.message }}\n </span>\n } @else {\n <span class=\"mlv-file-upload-item__meta\">{{ _formattedSize() }}</span>\n } @if (_showProgress()) {\n <mlv-loader\n class=\"mlv-file-upload-item__progress\"\n variant=\"bar\"\n [value]=\"_progress()\"\n [size]=\"3\"\n [ariaLabel]=\"'Uploading ' + file().name + ', ' + _progress() + '%'\"\n />\n }\n</div>\n\n<div class=\"mlv-file-upload-item__actions\">\n @if (file().state === 'success') {\n <svg\n lucideCircleCheck\n class=\"mlv-file-upload-item__status-icon mlv-file-upload-item__status-icon--success\"\n [size]=\"18\"\n [attr.aria-label]=\"_i18n().uploadComplete\"\n role=\"img\"\n />\n } @if (file().state === 'error') {\n <svg\n lucideCircleX\n class=\"mlv-file-upload-item__status-icon mlv-file-upload-item__status-icon--error\"\n [size]=\"18\"\n [attr.aria-label]=\"_i18n().uploadFailed\"\n role=\"img\"\n />\n }\n\n <button\n type=\"button\"\n class=\"mlv-file-upload-item__remove\"\n [attr.aria-label]=\"_removeLabel()\"\n (click)=\"remove.emit()\"\n >\n <svg lucideX [size]=\"16\" aria-hidden=\"true\" />\n </button>\n</div>\n", styles: [".mlv-file-upload-item{display:flex;align-items:center;gap:.75rem;padding:.625rem .75rem;border-radius:var(--mlv-radius-m);border:var(--mlv-stroke-width) solid var(--mlv-border-normal);background-color:var(--mlv-background-neutral-1);transition:background-color var(--mlv-duration-normal) var(--mlv-ease-out)}.mlv-file-upload-item__thumbnail{flex-shrink:0;width:2.5rem;height:2.5rem;border-radius:var(--mlv-radius-s);overflow:hidden;display:flex;align-items:center;justify-content:center;background-color:var(--mlv-background-neutral-2);color:var(--mlv-text-secondary)}.mlv-file-upload-item__thumbnail-img{width:100%;height:100%;object-fit:cover}.mlv-file-upload-item__info{flex:1;min-width:0;display:flex;flex-direction:column;gap:.125rem}.mlv-file-upload-item__name{font-family:var(--mlv-typography-family-text);font-size:var(--mlv-font-size-s);color:var(--mlv-text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.mlv-file-upload-item__meta{font-family:var(--mlv-typography-family-text);font-size:var(--mlv-typography-caption-size);color:var(--mlv-text-secondary)}.mlv-file-upload-item__meta--error{color:var(--mlv-text-negative)}.mlv-file-upload-item__progress{margin-top:.25rem;width:100%}.mlv-file-upload-item__actions{display:flex;align-items:center;gap:.25rem;flex-shrink:0}.mlv-file-upload-item__status-icon--success{color:var(--mlv-text-positive)}.mlv-file-upload-item__status-icon--error{color:var(--mlv-text-negative)}.mlv-file-upload-item__remove{display:inline-flex;align-items:center;justify-content:center;width:1.75rem;height:1.75rem;border:none;background:transparent;border-radius:var(--mlv-radius-s);cursor:pointer;color:var(--mlv-text-secondary);transition:color var(--mlv-duration-normal) var(--mlv-ease-out),background-color var(--mlv-duration-normal) var(--mlv-ease-out)}.mlv-file-upload-item__remove:hover{color:var(--mlv-text-primary);background-color:var(--mlv-background-neutral-2)}.mlv-file-upload-item__remove:focus-visible{outline:var(--mlv-stroke-width) solid var(--mlv-border-focus);outline-offset:.125rem}.mlv-file-upload-item--uploading{border-color:var(--mlv-border-focus)}.mlv-file-upload-item--success{border-color:var(--mlv-text-positive)}.mlv-file-upload-item--error{border-color:var(--mlv-text-negative);background-color:var(--mlv-background-danger-1-pale)}.mlv-file-upload-item--entering{animation:var(--mlv-duration-normal) var(--mlv-ease-out) file-item-enter}.mlv-file-upload-item--leaving{animation:var(--mlv-duration-normal) var(--mlv-ease-in) file-item-leave}@media(prefers-reduced-motion:reduce){.mlv-file-upload-item,.mlv-file-upload-item *,.mlv-file-upload-item:before,.mlv-file-upload-item:after,[class^=mlv-file-upload-item__],[class*=\" mlv-file-upload-item__\"],[class^=mlv-file-upload-item--],[class*=\" mlv-file-upload-item--\"]{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:var(--mlv-duration-instant)!important}}@keyframes file-item-enter{0%{opacity:0;transform:translateY(-.25rem)}to{opacity:1;transform:translateY(0)}}@keyframes file-item-leave{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-.25rem)}}\n"] }]
54
- }], propDecorators: { file: [{ type: i0.Input, args: [{ isSignal: true, alias: "file", required: true }] }], remove: [{ type: i0.Output, args: ["remove"] }] } });
55
- //# sourceMappingURL=file-upload-item.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"file-upload-item.js","sourceRoot":"","sources":["../../../../../../../libs/core/file-upload/src/lib/file-upload-item/file-upload-item.ts","../../../../../../../libs/core/file-upload/src/lib/file-upload-item/file-upload-item.html"],"names":[],"mappings":"AAAA,OAAO,EACL,uBAAuB,EACvB,SAAS,EACT,QAAQ,EACR,MAAM,EACN,KAAK,EACL,MAAM,EACN,iBAAiB,GAClB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EACL,UAAU,EACV,OAAO,EACP,iBAAiB,EACjB,aAAa,GACd,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;;AAG9E;;;GAGG;AAeH,MAAM,OAAO,iBAAiB;IAC5B,iEAAiE;IAC9C,KAAK,GAAG,MAAM,CAAC,oBAAoB,CAAC,CAAC;IAExD,0EAA0E;IACzD,SAAS,GAAG,MAAM,CAAC,sBAAsB,CAAC,CAAC;IAE5D,8CAA8C;IACrC,IAAI,GAAG,KAAK,CAAC,QAAQ;6EAAmB,CAAC;IAElD;;;;OAIG;IACgB,YAAY,GAAG,QAAQ,CAAC,GAAG,EAAE,CAC9C,IAAI,CAAC,SAAS,CAAC,OAAO,CACpB,IAAI,CAAC,KAAK,EAAuC,EACjD,YAAY,EACZ,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAC3B;qFACF,CAAC;IAEF,oDAAoD;IAC3C,MAAM,GAAG,MAAM,EAAQ,CAAC;IAEjC,kEAAkE;IAC/C,cAAc,GAAG,QAAQ,CAAC,GAAG,EAAE;QAChD,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC;QAC/B,IAAI,KAAK,GAAG,IAAI;YAAE,OAAO,GAAG,KAAK,IAAI,CAAC;QACtC,IAAI,KAAK,GAAG,IAAI,GAAG,IAAI;YAAE,OAAO,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;QAClE,OAAO,GAAG,CAAC,KAAK,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;IACpD,CAAC;uFAAC,CAAC;IAEH,mDAAmD;IAChC,aAAa,GAAG,QAAQ,CACzC,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,KAAK,WAAW;sFACxC,CAAC;IAEF,4DAA4D;IACzC,SAAS,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,QAAQ,IAAI,CAAC;kFAAC,CAAC;uGAxC9D,iBAAiB;2FAAjB,iBAAiB,sgBCrC9B,srDA8DA,0qGDjCY,SAAS,oMAAE,UAAU,4DAAE,OAAO,yDAAE,iBAAiB,4FAAE,aAAa;;2FAQ/D,iBAAiB;kBAd7B,SAAS;+BACE,sBAAsB,iBAGjB,iBAAiB,CAAC,IAAI,mBACpB,uBAAuB,CAAC,MAAM,WACtC,CAAC,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,iBAAiB,EAAE,aAAa,CAAC,QACrE;wBACJ,KAAK,EAAE,sBAAsB;wBAC7B,yCAAyC,EAAE,8BAA8B;wBACzE,uCAAuC,EAAE,4BAA4B;wBACrE,qCAAqC,EAAE,0BAA0B;qBAClE","sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n computed,\n inject,\n input,\n output,\n ViewEncapsulation,\n} from '@angular/core';\nimport { MlvLoader } from '@malva-ui/core/loader';\nimport {\n LucideFile,\n LucideX,\n LucideCircleCheck,\n LucideCircleX,\n} from '@lucide/angular';\nimport { MLV_FILE_UPLOAD_I18N, MlvI18nResolverService } from '@malva-ui/i18n';\nimport type { MlvUploadedFile } from '../file-upload/file-upload.types';\n\n/**\n * Renders a single uploaded file row with thumbnail, metadata, progress bar,\n * status icon, and a remove button.\n */\n@Component({\n selector: 'mlv-file-upload-item',\n templateUrl: './file-upload-item.html',\n styleUrl: './file-upload-item.scss',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [MlvLoader, LucideFile, LucideX, LucideCircleCheck, LucideCircleX],\n host: {\n class: 'mlv-file-upload-item',\n '[class.mlv-file-upload-item--uploading]': 'file().state === \"uploading\"',\n '[class.mlv-file-upload-item--success]': 'file().state === \"success\"',\n '[class.mlv-file-upload-item--error]': 'file().state === \"error\"',\n },\n})\nexport class MlvFileUploadItem {\n /** @protected Injected i18n translations for the file upload. */\n protected readonly _i18n = inject(MLV_FILE_UPLOAD_I18N);\n\n /** @private ICU MessageFormat resolver for parameterised i18n strings. */\n private readonly _resolver = inject(MlvI18nResolverService);\n\n /** The uploaded file descriptor to render. */\n readonly file = input.required<MlvUploadedFile>();\n\n /**\n * @protected Accessible label for the remove button, naming the specific file\n * (e.g. `\"Remove report.xlsx\"`) so screen-reader users know which file the\n * button removes. Resolves the `removeFile` ICU template with the file name.\n */\n protected readonly _removeLabel = computed(() =>\n this._resolver.resolve(\n this._i18n() as unknown as Record<string, string>,\n 'removeFile',\n { name: this.file().name },\n ),\n );\n\n /** Emits when the user clicks the remove button. */\n readonly remove = output<void>();\n\n /** @protected Human-readable file size string (e.g. \"1.2 MB\"). */\n protected readonly _formattedSize = computed(() => {\n const bytes = this.file().size;\n if (bytes < 1024) return `${bytes} B`;\n if (bytes < 1024 * 1024) return `${(bytes / 1024).toFixed(1)} KB`;\n return `${(bytes / (1024 * 1024)).toFixed(1)} MB`;\n });\n\n /** @protected Whether to show the progress bar. */\n protected readonly _showProgress = computed(\n () => this.file().state === 'uploading',\n );\n\n /** @protected Current progress value for the loader bar. */\n protected readonly _progress = computed(() => this.file().progress ?? 0);\n}\n","<div class=\"mlv-file-upload-item__thumbnail\">\n @if (file().previewUrl) {\n <img\n [src]=\"file().previewUrl\"\n [alt]=\"file().name\"\n class=\"mlv-file-upload-item__thumbnail-img\"\n />\n } @else {\n <svg lucideFile [size]=\"20\" aria-hidden=\"true\" />\n }\n</div>\n\n<div class=\"mlv-file-upload-item__info\">\n <span class=\"mlv-file-upload-item__name\" [title]=\"file().name\"\n >{{ file().name }}</span\n >\n\n @if (file().error) {\n <span class=\"mlv-file-upload-item__meta mlv-file-upload-item__meta--error\">\n {{ file().error!.message }}\n </span>\n } @else {\n <span class=\"mlv-file-upload-item__meta\">{{ _formattedSize() }}</span>\n } @if (_showProgress()) {\n <mlv-loader\n class=\"mlv-file-upload-item__progress\"\n variant=\"bar\"\n [value]=\"_progress()\"\n [size]=\"3\"\n [ariaLabel]=\"'Uploading ' + file().name + ', ' + _progress() + '%'\"\n />\n }\n</div>\n\n<div class=\"mlv-file-upload-item__actions\">\n @if (file().state === 'success') {\n <svg\n lucideCircleCheck\n class=\"mlv-file-upload-item__status-icon mlv-file-upload-item__status-icon--success\"\n [size]=\"18\"\n [attr.aria-label]=\"_i18n().uploadComplete\"\n role=\"img\"\n />\n } @if (file().state === 'error') {\n <svg\n lucideCircleX\n class=\"mlv-file-upload-item__status-icon mlv-file-upload-item__status-icon--error\"\n [size]=\"18\"\n [attr.aria-label]=\"_i18n().uploadFailed\"\n role=\"img\"\n />\n }\n\n <button\n type=\"button\"\n class=\"mlv-file-upload-item__remove\"\n [attr.aria-label]=\"_removeLabel()\"\n (click)=\"remove.emit()\"\n >\n <svg lucideX [size]=\"16\" aria-hidden=\"true\" />\n </button>\n</div>\n"]}