@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
@@ -0,0 +1,1627 @@
1
+ import { normalizeForMatch, mlvNextId, MlvSpacer } from '@malva-ui/cdk/utils';
2
+ import { DOCUMENT, NgTemplateOutlet } from '@angular/common';
3
+ import * as i0 from '@angular/core';
4
+ import { input, inject, TemplateRef, Directive, model, output, signal, viewChild, ElementRef, viewChildren, contentChild, computed, effect, ChangeDetectionStrategy, ViewEncapsulation, Component, Injector, numberAttribute, contentChildren, afterNextRender } from '@angular/core';
5
+ import { coerceBooleanProperty } from '@angular/cdk/coercion';
6
+ import { LucideChevronDown, LucidePlus, LucideTrash2, LucideX, LucideChevronUp, LucideRefreshCw, LucideSettings2 } from '@lucide/angular';
7
+ import { deepEqual } from 'fast-equals';
8
+ import { MlvTabbableElementService, MlvClick } from '@malva-ui/cdk/accessibility';
9
+ import { MlvButton, MlvButtonIcon } from '@malva-ui/core/button';
10
+ import { isReconciliationEmit, filteredOutCommitted, MlvDropdownPanel, normalizeForMatch as normalizeForMatch$1 } from '@malva-ui/core/dropdown';
11
+ import { MlvSelectionService } from '@malva-ui/core/form-utils';
12
+ import { MlvInput } from '@malva-ui/core/input';
13
+ import { MlvPopup, MlvPopupContent, MlvPopupTrigger } from '@malva-ui/core/popup';
14
+ import { MlvSelect } from '@malva-ui/core/select';
15
+ import { MLV_FILTER_I18N, MlvI18nResolverService } from '@malva-ui/i18n';
16
+ import { MlvToolbar } from '@malva-ui/core/toolbar';
17
+ import { MlvLink } from '@malva-ui/core/link';
18
+ import { MlvCheckbox } from '@malva-ui/core/checkbox';
19
+ import { MlvSearchField } from '@malva-ui/core/search-field';
20
+ import { MlvExpand } from '@malva-ui/core/expand';
21
+
22
+ /**
23
+ * Converts the flat Smart Filter Bar model to its equivalent expression tree.
24
+ * Empty field states are omitted because they do not constrain a flat query.
25
+ */
26
+ function mlvFilterFieldsToExpression(fields) {
27
+ return {
28
+ kind: 'group',
29
+ combinator: 'and',
30
+ children: fields.flatMap((field) => {
31
+ const children = field.conditions.map((condition) => ({
32
+ kind: 'condition',
33
+ key: field.key,
34
+ condition,
35
+ }));
36
+ if (children.length === 0)
37
+ return [];
38
+ if (children.length === 1)
39
+ return children;
40
+ return [
41
+ {
42
+ kind: 'group',
43
+ combinator: field.strategy,
44
+ children,
45
+ },
46
+ ];
47
+ }),
48
+ };
49
+ }
50
+ /**
51
+ * Converts an expression to flat field state only when no grouping information
52
+ * would be lost. Direct leaves and singleton groups are canonicalized to the
53
+ * semantically-neutral `and` strategy. Returns `null` for cross-field ORs,
54
+ * contradictory field compositions, and false (empty OR) groups.
55
+ */
56
+ function mlvFilterExpressionToFields(expression) {
57
+ const collection = _collectFlatExpression(expression);
58
+ if (collection.kind === 'true')
59
+ return [];
60
+ if (collection.kind !== 'terms')
61
+ return null;
62
+ const fields = [];
63
+ const fieldIndexes = new Map();
64
+ for (const term of collection.terms) {
65
+ const index = fieldIndexes.get(term.key);
66
+ if (index === undefined) {
67
+ fieldIndexes.set(term.key, fields.length);
68
+ fields.push({
69
+ key: term.key,
70
+ strategy: term.strategy,
71
+ conditions: [...term.conditions],
72
+ });
73
+ continue;
74
+ }
75
+ const existing = fields[index];
76
+ if (existing === undefined ||
77
+ existing.strategy !== 'and' ||
78
+ term.strategy !== 'and') {
79
+ return null;
80
+ }
81
+ fields[index] = {
82
+ ...existing,
83
+ conditions: [...existing.conditions, ...term.conditions],
84
+ };
85
+ }
86
+ return fields;
87
+ }
88
+ /**
89
+ * Evaluates an expression using a domain-owned value reader. String predicates
90
+ * are case- and diacritic-insensitive; equality and membership remain strict.
91
+ */
92
+ function mlvMatchesFilterExpression(value, expression, readValue) {
93
+ if (expression.kind === 'condition') {
94
+ return _matchesCondition(readValue(value, expression.key), expression.condition);
95
+ }
96
+ return expression.combinator === 'and'
97
+ ? expression.children.every((child) => mlvMatchesFilterExpression(value, child, readValue))
98
+ : expression.children.some((child) => mlvMatchesFilterExpression(value, child, readValue));
99
+ }
100
+ /**
101
+ * @private Normalizes an expression into a boolean identity or flat terms.
102
+ * A distinct unrepresentable state prevents false identities from being
103
+ * confused with shapes that would lose grouping semantics when flattened.
104
+ */
105
+ function _collectFlatExpression(expression) {
106
+ if (expression.kind === 'condition') {
107
+ return {
108
+ kind: 'terms',
109
+ terms: [
110
+ {
111
+ key: expression.key,
112
+ strategy: 'and',
113
+ conditions: [expression.condition],
114
+ },
115
+ ],
116
+ };
117
+ }
118
+ return expression.combinator === 'and'
119
+ ? _collectAndGroup(expression.children)
120
+ : _collectOrGroup(expression.children);
121
+ }
122
+ /** @private Combines child collections using AND's true/false identities. */
123
+ function _collectAndGroup(children) {
124
+ const terms = [];
125
+ let hasFalseChild = false;
126
+ let hasUnrepresentableChild = false;
127
+ for (const child of children) {
128
+ const collection = _collectFlatExpression(child);
129
+ if (collection.kind === 'false') {
130
+ hasFalseChild = true;
131
+ continue;
132
+ }
133
+ if (collection.kind === 'unrepresentable') {
134
+ hasUnrepresentableChild = true;
135
+ continue;
136
+ }
137
+ if (collection.kind === 'terms')
138
+ terms.push(...collection.terms);
139
+ }
140
+ if (hasFalseChild)
141
+ return { kind: 'false' };
142
+ if (hasUnrepresentableChild)
143
+ return { kind: 'unrepresentable' };
144
+ return terms.length === 0 ? { kind: 'true' } : { kind: 'terms', terms };
145
+ }
146
+ /**
147
+ * @private Combines child collections using OR's true/false identities, then
148
+ * flattens only multiple alternatives for one field.
149
+ */
150
+ function _collectOrGroup(children) {
151
+ const alternatives = [];
152
+ let hasUnrepresentableChild = false;
153
+ for (const child of children) {
154
+ const collection = _collectFlatExpression(child);
155
+ if (collection.kind === 'true')
156
+ return collection;
157
+ if (collection.kind === 'false')
158
+ continue;
159
+ if (collection.kind === 'unrepresentable') {
160
+ hasUnrepresentableChild = true;
161
+ continue;
162
+ }
163
+ alternatives.push([...collection.terms]);
164
+ }
165
+ if (hasUnrepresentableChild)
166
+ return { kind: 'unrepresentable' };
167
+ if (alternatives.length === 0)
168
+ return { kind: 'false' };
169
+ if (alternatives.length === 1) {
170
+ const onlyAlternative = alternatives[0];
171
+ return onlyAlternative === undefined
172
+ ? { kind: 'false' }
173
+ : { kind: 'terms', terms: onlyAlternative };
174
+ }
175
+ const terms = alternatives.flat();
176
+ const first = terms[0];
177
+ if (first === undefined ||
178
+ terms.length !== alternatives.length ||
179
+ terms.some((term) => term.key !== first.key)) {
180
+ return { kind: 'unrepresentable' };
181
+ }
182
+ return {
183
+ kind: 'terms',
184
+ terms: [
185
+ {
186
+ key: first.key,
187
+ strategy: 'or',
188
+ conditions: terms.flatMap((term) => term.conditions),
189
+ },
190
+ ],
191
+ };
192
+ }
193
+ /** @private Evaluates one condition without coupling the filter package to a row shape. */
194
+ function _matchesCondition(value, condition) {
195
+ const operand = condition.value;
196
+ switch (condition.operator) {
197
+ case 'contains':
198
+ return _normalizedText(value).includes(_normalizedText(operand));
199
+ case 'not-contains':
200
+ return !_normalizedText(value).includes(_normalizedText(operand));
201
+ case 'starts-with':
202
+ return _normalizedText(value).startsWith(_normalizedText(operand));
203
+ case 'ends-with':
204
+ return _normalizedText(value).endsWith(_normalizedText(operand));
205
+ case 'equals':
206
+ return value === operand;
207
+ case 'not-equals':
208
+ return value !== operand;
209
+ case 'greater-than':
210
+ return _compareNumbers(value, operand, (left, right) => left > right);
211
+ case 'greater-than-or-equal':
212
+ return _compareNumbers(value, operand, (left, right) => left >= right);
213
+ case 'less-than':
214
+ return _compareNumbers(value, operand, (left, right) => left < right);
215
+ case 'less-than-or-equal':
216
+ return _compareNumbers(value, operand, (left, right) => left <= right);
217
+ case 'between':
218
+ return _isBetween(value, operand);
219
+ case 'in':
220
+ return Array.isArray(operand) && operand.includes(value);
221
+ case 'not-in':
222
+ return Array.isArray(operand) && !operand.includes(value);
223
+ case 'empty':
224
+ return _isEmpty(value);
225
+ case 'not-empty':
226
+ return !_isEmpty(value);
227
+ }
228
+ }
229
+ /** @private Normalizes text according to the existing data-source predicate contract. */
230
+ function _normalizedText(value) {
231
+ return normalizeForMatch(String(value ?? ''));
232
+ }
233
+ /** @private Converts number-editor compatible values to a finite number. */
234
+ function _toFiniteNumber(value) {
235
+ if (typeof value === 'number')
236
+ return Number.isFinite(value) ? value : null;
237
+ if (typeof value !== 'string' || value.trim() === '')
238
+ return null;
239
+ const parsed = Number(value);
240
+ return Number.isFinite(parsed) ? parsed : null;
241
+ }
242
+ /** @private Applies one numeric relation only to two valid finite numeric values. */
243
+ function _compareNumbers(value, operand, compare) {
244
+ const numericValue = _toFiniteNumber(value);
245
+ const numericOperand = _toFiniteNumber(operand);
246
+ return (numericValue !== null &&
247
+ numericOperand !== null &&
248
+ compare(numericValue, numericOperand));
249
+ }
250
+ /** @private Applies an inclusive ordered numeric range with an exact two-value operand. */
251
+ function _isBetween(value, operand) {
252
+ if (!Array.isArray(operand) || operand.length !== 2)
253
+ return false;
254
+ const numericValue = _toFiniteNumber(value);
255
+ const minimum = _toFiniteNumber(operand[0]);
256
+ const maximum = _toFiniteNumber(operand[1]);
257
+ return (numericValue !== null &&
258
+ minimum !== null &&
259
+ maximum !== null &&
260
+ minimum <= maximum &&
261
+ numericValue >= minimum &&
262
+ numericValue <= maximum);
263
+ }
264
+ /** @private Treats nullish values, empty strings, and empty arrays as empty. */
265
+ function _isEmpty(value) {
266
+ return (value === null ||
267
+ value === undefined ||
268
+ value === '' ||
269
+ (Array.isArray(value) && value.length === 0));
270
+ }
271
+
272
+ /**
273
+ * Marks an `ng-template` as the value editor for free-form filter conditions.
274
+ * Standalone `mlv-filter`: project the template as content. Inside
275
+ * `mlv-smart-filter-bar`: set the input to a definition key to target one
276
+ * field; an empty key is the fallback for every free-form field.
277
+ *
278
+ * ```html
279
+ * <mlv-filter label="Renewal" editor="text">
280
+ * <ng-template mlvFilterValueEditor let-value let-set="setValue">
281
+ * <mlv-day-picker [value]="$any(value)" (valueChange)="set($event)" />
282
+ * </ng-template>
283
+ * </mlv-filter>
284
+ * ```
285
+ */
286
+ class MlvFilterValueEditorDef {
287
+ /** Definition key this editor targets; empty targets all free-form fields. */
288
+ mlvFilterValueEditor = input('', /* @ts-ignore */
289
+ ...(ngDevMode ? [{ debugName: "mlvFilterValueEditor" }] : /* istanbul ignore next */ []));
290
+ /** The template rendered in place of the built-in value input. */
291
+ templateRef = inject((TemplateRef));
292
+ /**
293
+ * Type guard for template context inference.
294
+ * @internal
295
+ */
296
+ static ngTemplateContextGuard(_dir, _ctx) {
297
+ return true;
298
+ }
299
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: MlvFilterValueEditorDef, deps: [], target: i0.ɵɵFactoryTarget.Directive });
300
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.0.7", type: MlvFilterValueEditorDef, isStandalone: true, selector: "[mlvFilterValueEditor]", inputs: { mlvFilterValueEditor: { classPropertyName: "mlvFilterValueEditor", publicName: "mlvFilterValueEditor", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 });
301
+ }
302
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: MlvFilterValueEditorDef, decorators: [{
303
+ type: Directive,
304
+ args: [{ selector: '[mlvFilterValueEditor]' }]
305
+ }], propDecorators: { mlvFilterValueEditor: [{ type: i0.Input, args: [{ isSignal: true, alias: "mlvFilterValueEditor", required: false }] }] } });
306
+
307
+ /** Default operators for free-form filters. */
308
+ const DEFAULT_OPERATORS = [
309
+ 'contains',
310
+ 'not-contains',
311
+ 'equals',
312
+ 'not-equals',
313
+ ];
314
+ /**
315
+ * Controls a custom value editor may expose as its first focus target. Used
316
+ * only when the CDK interactivity checker finds nothing, which happens in
317
+ * environments without layout geometry.
318
+ */
319
+ const FOCUSABLE_EDITOR_SELECTOR = [
320
+ 'input:not([disabled]):not([type="hidden"])',
321
+ 'select:not([disabled])',
322
+ 'textarea:not([disabled])',
323
+ 'button:not([disabled])',
324
+ '[tabindex]:not([tabindex="-1"])',
325
+ '[contenteditable="true"]',
326
+ ].join(',');
327
+ /**
328
+ * Height budget (px) for the bounded options panel — the 20rem slab the
329
+ * hand-rolled listbox used, kept instead of the dropdown panel's taller
330
+ * viewport-derived default. `MlvDropdownPanel.maxHeight` is px-only.
331
+ */
332
+ const OPTIONS_MAX_HEIGHT = 320;
333
+ /** Returns whether an operator requires no operand. */
334
+ function isValuelessOperator(operator) {
335
+ return operator === 'empty' || operator === 'not-empty';
336
+ }
337
+ /**
338
+ * Whether two selections hold the same values, compared as **multisets**:
339
+ * order-insensitive, because aria emits in option-registration order while a
340
+ * draft carries pick order, but duplicate-sensitive, so `['a', 'a']` and
341
+ * `['a', 'b']` are correctly different (a plain "same length + every value is a
342
+ * member" test reads those two as equal). Elements compare with `fast-equals`'
343
+ * `deepEqual`, so structured option values match by shape.
344
+ */
345
+ function isSameSelection(values, other) {
346
+ if (values.length !== other.length)
347
+ return false;
348
+ const unmatched = [...other];
349
+ return values.every((value) => {
350
+ const index = unmatched.findIndex((candidate) => deepEqual(candidate, value));
351
+ if (index < 0)
352
+ return false;
353
+ unmatched.splice(index, 1);
354
+ return true;
355
+ });
356
+ }
357
+ /** Returns a defensive shallow copy of filter conditions and array operands. */
358
+ function cloneConditions(conditions) {
359
+ return conditions.map((condition) => ({
360
+ ...condition,
361
+ value: Array.isArray(condition.value)
362
+ ? [...condition.value]
363
+ : condition.value,
364
+ }));
365
+ }
366
+ /** Compact filter trigger and in-place condition editor. */
367
+ class MlvFilter {
368
+ /** @private Document used for conservative focus restoration. */
369
+ _document = inject(DOCUMENT);
370
+ /** @protected Reactive translated strings for filters. */
371
+ _i18n = inject(MLV_FILTER_I18N);
372
+ /** @private ICU resolver for parameterized translated strings. */
373
+ _resolver = inject(MlvI18nResolverService);
374
+ /** @private Tabbable-element lookup for focusing custom editors. */
375
+ _tabbable = inject(MlvTabbableElementService);
376
+ /** Visible filter name. */
377
+ label = input.required(/* @ts-ignore */
378
+ ...(ngDevMode ? [{ debugName: "label" }] : /* istanbul ignore next */ []));
379
+ /** Optional domain key for consumers coordinating multiple filter instances. */
380
+ key = input('', /* @ts-ignore */
381
+ ...(ngDevMode ? [{ debugName: "key" }] : /* istanbul ignore next */ []));
382
+ /** Whether this field renders as a classic control or a natural-language chip. */
383
+ appearance = input('field', /* @ts-ignore */
384
+ ...(ngDevMode ? [{ debugName: "appearance" }] : /* istanbul ignore next */ []));
385
+ /** Whether an empty query field exposes removal instead of becoming sticky. */
386
+ queryRemovable = input(false, { ...(ngDevMode ? { debugName: "queryRemovable" } : /* istanbul ignore next */ {}), transform: coerceBooleanProperty });
387
+ /** Bounded values shown as a listbox. */
388
+ options = input([], /* @ts-ignore */
389
+ ...(ngDevMode ? [{ debugName: "options" }] : /* istanbul ignore next */ []));
390
+ /** Explicit editor override. Options are inferred when choices are provided. */
391
+ editor = input(undefined, /* @ts-ignore */
392
+ ...(ngDevMode ? [{ debugName: "editor" }] : /* istanbul ignore next */ []));
393
+ /** Whether a bounded editor accepts multiple values. */
394
+ multiple = input(false, { ...(ngDevMode ? { debugName: "multiple" } : /* istanbul ignore next */ {}), transform: coerceBooleanProperty });
395
+ /** Whether a free-form editor may add multiple conditions. */
396
+ allowMultipleConditions = input(false, { ...(ngDevMode ? { debugName: "allowMultipleConditions" } : /* istanbul ignore next */ {}), transform: coerceBooleanProperty });
397
+ /** Operators available to a free-form editor. */
398
+ operators = input(DEFAULT_OPERATORS, /* @ts-ignore */
399
+ ...(ngDevMode ? [{ debugName: "operators" }] : /* istanbul ignore next */ []));
400
+ /** Optional user-facing labels for domain-specific operator vocabulary. */
401
+ operatorLabels = input({}, /* @ts-ignore */
402
+ ...(ngDevMode ? [{ debugName: "operatorLabels" }] : /* istanbul ignore next */ []));
403
+ /** Operator assigned to a newly-created free-form condition. */
404
+ defaultOperator = input('contains', /* @ts-ignore */
405
+ ...(ngDevMode ? [{ debugName: "defaultOperator" }] : /* istanbul ignore next */ []));
406
+ /** Optional placeholder for free-form values. */
407
+ placeholder = input(undefined, /* @ts-ignore */
408
+ ...(ngDevMode ? [{ debugName: "placeholder" }] : /* istanbul ignore next */ []));
409
+ /** Whether edits publish immediately or wait for the Apply action. */
410
+ applyMode = input('live', /* @ts-ignore */
411
+ ...(ngDevMode ? [{ debugName: "applyMode" }] : /* istanbul ignore next */ []));
412
+ /** Prevents opening and editing the filter. */
413
+ disabled = input(false, { ...(ngDevMode ? { debugName: "disabled" } : /* istanbul ignore next */ {}), transform: coerceBooleanProperty });
414
+ /** Shows progress and prevents editing while filter metadata is loading. */
415
+ loading = input(false, { ...(ngDevMode ? { debugName: "loading" } : /* istanbul ignore next */ {}), transform: coerceBooleanProperty });
416
+ /** Whether the filter trigger represents an invalid field value. */
417
+ invalid = input(false, { ...(ngDevMode ? { debugName: "invalid" } : /* istanbul ignore next */ {}), transform: coerceBooleanProperty });
418
+ /** Id reference describing the filter trigger's validation state. */
419
+ ariaDescribedBy = input(undefined, /* @ts-ignore */
420
+ ...(ngDevMode ? [{ debugName: "ariaDescribedBy" }] : /* istanbul ignore next */ []));
421
+ /**
422
+ * Custom value-editor template forwarded by a smart filter bar. Wins over a
423
+ * projected `[mlvFilterValueEditor]` content child.
424
+ */
425
+ valueEditor = input(null, /* @ts-ignore */
426
+ ...(ngDevMode ? [{ debugName: "valueEditor" }] : /* istanbul ignore next */ []));
427
+ /** Applied conditions. */
428
+ conditions = model([], /* @ts-ignore */
429
+ ...(ngDevMode ? [{ debugName: "conditions" }] : /* istanbul ignore next */ []));
430
+ /** Combination rule used when more than one condition is present. */
431
+ conditionStrategy = model('or', /* @ts-ignore */
432
+ ...(ngDevMode ? [{ debugName: "conditionStrategy" }] : /* istanbul ignore next */ []));
433
+ /** Whether the condition editor is open. */
434
+ opened = model(false, /* @ts-ignore */
435
+ ...(ngDevMode ? [{ debugName: "opened" }] : /* istanbul ignore next */ []));
436
+ /** Emitted whenever live editing or Apply commits conditions. */
437
+ applied = output();
438
+ /** Emitted when the clear action removes every condition. */
439
+ cleared = output();
440
+ /** @protected Unique id linking the trigger to its popup content. */
441
+ _panelId = mlvNextId('mlv-filter-panel');
442
+ /** @protected Height budget handed to the bounded options panel. */
443
+ _optionsMaxHeight = OPTIONS_MAX_HEIGHT;
444
+ /** @private Working conditions kept separate for explicit-apply mode. */
445
+ _draftConditions = signal([], /* @ts-ignore */
446
+ ...(ngDevMode ? [{ debugName: "_draftConditions" }] : /* istanbul ignore next */ []));
447
+ /** @private Working condition strategy kept separate until Apply. */
448
+ _draftStrategy = signal('or', /* @ts-ignore */
449
+ ...(ngDevMode ? [{ debugName: "_draftStrategy" }] : /* istanbul ignore next */ []));
450
+ /** @private Trigger element used for focus restoration. */
451
+ _trigger = viewChild('trigger', { ...(ngDevMode ? { debugName: "_trigger" } : /* istanbul ignore next */ {}), read: (ElementRef) });
452
+ /** @private Rendered value fields used to focus the free-form editor. */
453
+ _conditionInputs = viewChildren(MlvInput, /* @ts-ignore */
454
+ ...(ngDevMode ? [{ debugName: "_conditionInputs" }] : /* istanbul ignore next */ []));
455
+ /** @private Rendered value cells used to focus custom editors. */
456
+ _valueCells = viewChildren('valueCell', { ...(ngDevMode ? { debugName: "_valueCells" } : /* istanbul ignore next */ {}), read: (ElementRef) });
457
+ /** @private Projected value-editor template for standalone usage. */
458
+ _contentValueEditor = contentChild(MlvFilterValueEditorDef, /* @ts-ignore */
459
+ ...(ngDevMode ? [{ debugName: "_contentValueEditor" }] : /* istanbul ignore next */ []));
460
+ /**
461
+ * @protected Resolved custom value-editor template; `null` renders the
462
+ * built-in input.
463
+ */
464
+ _valueEditorTemplate = computed(() => this.valueEditor() ?? this._contentValueEditor()?.templateRef ?? null, /* @ts-ignore */
465
+ ...(ngDevMode ? [{ debugName: "_valueEditorTemplate" }] : /* istanbul ignore next */ []));
466
+ /** @protected Resolved editor based on the explicit input and available options. */
467
+ _resolvedEditor = computed(() => this.editor() ?? (this.options().length > 0 ? 'options' : 'text'), /* @ts-ignore */
468
+ ...(ngDevMode ? [{ debugName: "_resolvedEditor" }] : /* istanbul ignore next */ []));
469
+ /** @protected Whether the current editor is a bounded options list. */
470
+ _usesOptions = computed(() => this._resolvedEditor() === 'options', /* @ts-ignore */
471
+ ...(ngDevMode ? [{ debugName: "_usesOptions" }] : /* istanbul ignore next */ []));
472
+ /** @protected Whether an open editor must reject every state-changing action. */
473
+ _editorDisabled = computed(() => this.disabled() || this.loading(), /* @ts-ignore */
474
+ ...(ngDevMode ? [{ debugName: "_editorDisabled" }] : /* istanbul ignore next */ []));
475
+ /**
476
+ * @protected Bounded options mapped to the dropdown panel's option shape. A
477
+ * locked editor (disabled or loading) marks every row disabled, so a panel
478
+ * that is already open when loading starts stops offering picks it would
479
+ * silently reject.
480
+ */
481
+ _panelOptions = computed(() => {
482
+ const locked = this._editorDisabled();
483
+ return this.options().map((option) => ({
484
+ label: option.label,
485
+ value: option.value,
486
+ disabled: locked || (option.disabled ?? false),
487
+ }));
488
+ }, /* @ts-ignore */
489
+ ...(ngDevMode ? [{ debugName: "_panelOptions" }] : /* istanbul ignore next */ []));
490
+ /** @protected Values currently selected in the draft, for the dropdown panel. */
491
+ _selectedValues = computed(() => this._draftConditions().flatMap((condition) => Array.isArray(condition.value) ? condition.value : [condition.value]), /* @ts-ignore */
492
+ ...(ngDevMode ? [{ debugName: "_selectedValues" }] : /* istanbul ignore next */ []));
493
+ /** @protected Valid new-condition operator, constrained to the allowed list. */
494
+ _resolvedDefaultOperator = computed(() => {
495
+ const operators = this.operators();
496
+ const requested = this.defaultOperator();
497
+ return operators.includes(requested)
498
+ ? requested
499
+ : (operators[0] ?? 'contains');
500
+ }, /* @ts-ignore */
501
+ ...(ngDevMode ? [{ debugName: "_resolvedDefaultOperator" }] : /* istanbul ignore next */ []));
502
+ /** @protected Snapshot used by the editor template. */
503
+ _draft = this._draftConditions.asReadonly();
504
+ /** @protected Draft strategy used by the editor template. */
505
+ _strategy = this._draftStrategy.asReadonly();
506
+ /** @protected Resolved value placeholder with an i18n fallback. */
507
+ _resolvedPlaceholder = computed(() => this.placeholder() ?? this._i18n().valuePlaceholder, /* @ts-ignore */
508
+ ...(ngDevMode ? [{ debugName: "_resolvedPlaceholder" }] : /* istanbul ignore next */ []));
509
+ /** @protected Operator-to-select-option adapter. */
510
+ _operatorTransform = (operator) => ({ value: operator, label: this._operatorLabel(operator) });
511
+ /** @protected Strategy-to-select-option adapter. */
512
+ _strategyTransform = (strategy) => ({ value: strategy, label: this._i18n()[strategy] });
513
+ /** @protected Strategies available when multiple conditions exist. */
514
+ _strategies = [
515
+ 'and',
516
+ 'or',
517
+ ];
518
+ /** @protected Number of selected scalar values represented by the conditions. */
519
+ valueCount = computed(() => this._displayValues(this.conditions()).length, /* @ts-ignore */
520
+ ...(ngDevMode ? [{ debugName: "valueCount" }] : /* istanbul ignore next */ []));
521
+ /** @protected Whether at least one meaningful condition is applied. */
522
+ hasValue = computed(() => this.conditions().some((condition) => this._isConditionMeaningful(condition)), /* @ts-ignore */
523
+ ...(ngDevMode ? [{ debugName: "hasValue" }] : /* istanbul ignore next */ []));
524
+ /** @protected First applied value rendered in the compact trigger. */
525
+ primaryValue = computed(() => this._displayValues(this.conditions())[0] ?? '', /* @ts-ignore */
526
+ ...(ngDevMode ? [{ debugName: "primaryValue" }] : /* istanbul ignore next */ []));
527
+ /** @protected Number of values hidden behind the `+ n more` summary. */
528
+ additionalValueCount = computed(() => Math.max(0, this.valueCount() - 1), /* @ts-ignore */
529
+ ...(ngDevMode ? [{ debugName: "additionalValueCount" }] : /* istanbul ignore next */ []));
530
+ /** @protected Accessible description of the current applied state. */
531
+ _triggerAriaLabel = computed(() => {
532
+ if (this.appearance() === 'query' && this.hasValue()) {
533
+ return this._querySentence();
534
+ }
535
+ if (!this.hasValue()) {
536
+ return this._resolveMessage('openFilter', { label: this.label() });
537
+ }
538
+ return `${this.label()}: ${this.primaryValue()}${this.additionalValueCount() > 0 ? ` ${this._moreValuesLabel()}` : ''}`;
539
+ }, /* @ts-ignore */
540
+ ...(ngDevMode ? [{ debugName: "_triggerAriaLabel" }] : /* istanbul ignore next */ []));
541
+ /** @protected Translated accessible label for the clear action. */
542
+ _clearAriaLabel = computed(() => this.appearance() === 'query' && this.queryRemovable()
543
+ ? this._resolveMessage('removeFilter', { label: this.label() })
544
+ : this._resolveMessage('clearFilter', { label: this.label() }), /* @ts-ignore */
545
+ ...(ngDevMode ? [{ debugName: "_clearAriaLabel" }] : /* istanbul ignore next */ []));
546
+ /** @protected Whether the compact clear/remove action should be shown. */
547
+ _showsClearAction = computed(() => this.hasValue() ||
548
+ (this.appearance() === 'query' && this.queryRemovable()), /* @ts-ignore */
549
+ ...(ngDevMode ? [{ debugName: "_showsClearAction" }] : /* istanbul ignore next */ []));
550
+ /** @protected Full natural-language summary used by a query chip. */
551
+ _querySentence = computed(() => {
552
+ const conditions = this.conditions().filter((condition) => this._isConditionMeaningful(condition));
553
+ if (conditions.length === 0)
554
+ return this.label();
555
+ return conditions
556
+ .map((condition) => {
557
+ const operator = this._operatorLabel(condition.operator);
558
+ if (isValuelessOperator(condition.operator)) {
559
+ return `${this.label()} ${operator}`;
560
+ }
561
+ const operand = this._displayValues([condition]).join(', ');
562
+ return `${this.label()} ${operator}${operand ? ` ${operand}` : ''}`;
563
+ })
564
+ .join(` ${this._i18n()[this.conditionStrategy()]} `);
565
+ }, /* @ts-ignore */
566
+ ...(ngDevMode ? [{ debugName: "_querySentence" }] : /* istanbul ignore next */ []));
567
+ /** @protected Translated compact summary for values beyond the first. */
568
+ _moreValuesLabel = computed(() => this._resolveMessage('moreValues', {
569
+ count: this.additionalValueCount(),
570
+ }), /* @ts-ignore */
571
+ ...(ngDevMode ? [{ debugName: "_moreValuesLabel" }] : /* istanbul ignore next */ []));
572
+ constructor() {
573
+ effect(() => {
574
+ const conditions = this.conditions();
575
+ const strategy = this.conditionStrategy();
576
+ if (!this.opened()) {
577
+ this._draftConditions.set(cloneConditions(conditions));
578
+ this._draftStrategy.set(strategy);
579
+ }
580
+ });
581
+ }
582
+ /** @protected Prepares and focuses the editor after the overlay attaches. */
583
+ _onOpened() {
584
+ if (!this._usesOptions() && this._draftConditions().length === 0) {
585
+ this._draftConditions.set([this._newCondition()]);
586
+ }
587
+ queueMicrotask(() => {
588
+ if (this._usesOptions()) {
589
+ // The panel's aria listbox already parks its roving tab stop on the
590
+ // selected option (falling back to the first focusable one), so the
591
+ // `tabindex="0"` row is the correct entry point.
592
+ const panel = this._document.getElementById(this._panelId);
593
+ const target = panel?.querySelector('[role="option"][tabindex="0"]') ??
594
+ panel?.querySelector('[role="option"]');
595
+ target?.focus();
596
+ }
597
+ else {
598
+ // A custom editor owns its own controls, so the first focusable element
599
+ // inside the value cell is the only reliable entry point.
600
+ const cell = this._valueCells()[0]?.nativeElement;
601
+ const target = cell ? this._firstFocusableIn(cell) : null;
602
+ if (target)
603
+ target.focus();
604
+ else
605
+ this._conditionInputs()[0]?.focus();
606
+ }
607
+ });
608
+ }
609
+ /** @protected Resynchronises drafts and restores focus after a keyboard/action close. */
610
+ _onClosed() {
611
+ this._draftConditions.set(cloneConditions(this.conditions()));
612
+ this._draftStrategy.set(this.conditionStrategy());
613
+ if (this._document.activeElement === this._document.body) {
614
+ this._trigger()?.nativeElement.focus();
615
+ }
616
+ }
617
+ /** @protected Removes all applied and in-progress values. */
618
+ _clear(event) {
619
+ event?.stopPropagation();
620
+ if (this._editorDisabled())
621
+ return;
622
+ this._draftConditions.set([]);
623
+ this.conditions.set([]);
624
+ this.applied.emit([]);
625
+ this.cleared.emit();
626
+ this.opened.set(false);
627
+ if (event) {
628
+ queueMicrotask(() => this._trigger()?.nativeElement.focus());
629
+ }
630
+ }
631
+ /** @protected Clears the editor draft while preserving explicit-mode rollback. */
632
+ _clearDraft() {
633
+ if (this._editorDisabled())
634
+ return;
635
+ this._draftConditions.set(this._usesOptions() ? [] : [this._newCondition()]);
636
+ if (this.applyMode() === 'explicit')
637
+ return;
638
+ this.conditions.set([]);
639
+ this.applied.emit([]);
640
+ this.cleared.emit();
641
+ this.opened.set(false);
642
+ }
643
+ /** @protected Discards uncommitted edits and closes the editor. */
644
+ _cancel() {
645
+ this._draftConditions.set(cloneConditions(this.conditions()));
646
+ this._draftStrategy.set(this.conditionStrategy());
647
+ this.opened.set(false);
648
+ }
649
+ /** @protected Commits meaningful draft conditions and closes the editor. */
650
+ _apply() {
651
+ if (this._editorDisabled())
652
+ return;
653
+ const hadAppliedConditions = this.conditions().some((condition) => this._isConditionMeaningful(condition));
654
+ const conditions = this._draftConditions().filter((condition) => this._isConditionMeaningful(condition));
655
+ this.conditions.set(cloneConditions(conditions));
656
+ this.conditionStrategy.set(this._draftStrategy());
657
+ this.applied.emit(cloneConditions(conditions));
658
+ if (hadAppliedConditions && conditions.length === 0)
659
+ this.cleared.emit();
660
+ this.opened.set(false);
661
+ }
662
+ /**
663
+ * @protected Applies a dropdown-panel selection to the draft.
664
+ *
665
+ * `@angular/aria`'s listbox owns a `value` model that it reconciles against
666
+ * the options actually *registered* in the DOM, and it re-emits `valueChange`
667
+ * from that reconciliation — not only when a user picks. Two kinds of noise
668
+ * therefore have to be filtered out before anything may rewrite the draft:
669
+ *
670
+ * 1. An emit that restates the selection unchanged.
671
+ * 2. An emit that drops committed values whose option is not rendered — async
672
+ * options that have not arrived, a saved view restored ahead of its
673
+ * choices, a value whose option was removed. Left unguarded this silently
674
+ * wipes committed conditions the moment the popover opens.
675
+ */
676
+ _onOptionValuesChange(values) {
677
+ if (this._editorDisabled())
678
+ return;
679
+ const current = this._selectedValues();
680
+ if (isSameSelection(values, current)) {
681
+ // Defensive, not a real DOM gesture path: in explicit aria mode a
682
+ // single-select re-click toggles to *deselect* (an empty emit), so no
683
+ // interaction actually restates the committed selection unchanged.
684
+ // This guards against a hypothetical aria restate emit after an option
685
+ // re-registers (e.g. options reloading/reordering while a value stays
686
+ // selected) — closing stays `_commitLive`'s privilege, so an
687
+ // explicit-mode draft is resolved by Apply/Cancel alone.
688
+ if (values.length > 0 &&
689
+ !this.multiple() &&
690
+ this.applyMode() === 'live') {
691
+ this.opened.set(false);
692
+ }
693
+ return;
694
+ }
695
+ // `Object.is` (not deep equality) is deliberate here: this predicate has to
696
+ // mirror aria's own `===` matching of a value against its rendered option,
697
+ // otherwise a structurally-equal-but-distinct value would read as "still
698
+ // rendered" and the drop would be treated as a real deselection.
699
+ const visible = this._panelOptions().map((option) => option.value);
700
+ if (isReconciliationEmit(values, current, visible, Object.is))
701
+ return;
702
+ if (this.multiple()) {
703
+ // aria has already dropped every committed value with no rendered option,
704
+ // so a genuine pick arrives without them. Re-add them, or picking one
705
+ // more value would quietly discard the rest of the selection.
706
+ const next = [
707
+ ...values,
708
+ ...filteredOutCommitted(values, current, visible, Object.is),
709
+ ];
710
+ this._draftConditions.set(next.length > 0 ? [{ operator: 'in', value: next }] : []);
711
+ this._commitLive(false);
712
+ return;
713
+ }
714
+ const value = values[0];
715
+ this._draftConditions.set(value === undefined ? [] : [{ operator: 'equals', value }]);
716
+ this._commitLive(true);
717
+ }
718
+ /** @protected Updates one condition's operator. */
719
+ _setOperator(index, operator) {
720
+ if (this._editorDisabled())
721
+ return;
722
+ const next = cloneConditions(this._draftConditions());
723
+ const current = next[index] ?? this._newCondition();
724
+ let value = current.value;
725
+ if (isValuelessOperator(operator))
726
+ value = null;
727
+ else if (operator === 'between' && current.operator !== 'between') {
728
+ value = ['', ''];
729
+ }
730
+ else if (current.operator === 'between' ||
731
+ isValuelessOperator(current.operator)) {
732
+ value = '';
733
+ }
734
+ next[index] = {
735
+ ...current,
736
+ operator,
737
+ value,
738
+ };
739
+ this._draftConditions.set(next);
740
+ this._commitLive(false);
741
+ }
742
+ /** @protected Updates one condition's operand. */
743
+ _setConditionValue(index, value) {
744
+ if (this._editorDisabled())
745
+ return;
746
+ const next = cloneConditions(this._draftConditions());
747
+ const current = next[index] ?? this._newCondition();
748
+ next[index] = { ...current, value: this._normalizeValue(value) };
749
+ this._draftConditions.set(next);
750
+ this._commitLive(false);
751
+ }
752
+ /** @protected Builds the template context for one condition's custom editor. */
753
+ _valueEditorContext(condition, index) {
754
+ return {
755
+ $implicit: condition.value,
756
+ condition,
757
+ index,
758
+ operator: condition.operator,
759
+ disabled: this._editorDisabled(),
760
+ placeholder: this._resolvedPlaceholder(),
761
+ setValue: (value) => this._setConditionValue(index, value),
762
+ commit: () => {
763
+ if (this.applyMode() === 'explicit')
764
+ this._apply();
765
+ },
766
+ };
767
+ }
768
+ /** @protected Returns one side of a between-condition range. */
769
+ _conditionRangeValue(condition, rangeIndex) {
770
+ return Array.isArray(condition.value)
771
+ ? (condition.value[rangeIndex] ?? '')
772
+ : '';
773
+ }
774
+ /** @protected Updates one side of a between-condition range. */
775
+ _setConditionRangeValue(conditionIndex, rangeIndex, value) {
776
+ if (this._editorDisabled())
777
+ return;
778
+ const next = cloneConditions(this._draftConditions());
779
+ const current = next[conditionIndex] ?? this._newCondition();
780
+ const range = Array.isArray(current.value) ? [...current.value] : ['', ''];
781
+ range[rangeIndex] = this._normalizeValue(value);
782
+ next[conditionIndex] = { ...current, value: range };
783
+ this._draftConditions.set(next);
784
+ this._commitLive(false);
785
+ }
786
+ /** @protected Updates the combination rule for working conditions. */
787
+ _setStrategy(strategy) {
788
+ if (this._editorDisabled())
789
+ return;
790
+ this._draftStrategy.set(strategy);
791
+ if (this.applyMode() === 'live') {
792
+ this.conditionStrategy.set(strategy);
793
+ }
794
+ }
795
+ /** @protected Adds another free-form condition and focuses it. */
796
+ _addCondition() {
797
+ if (this._editorDisabled())
798
+ return;
799
+ // A custom editor renders no `mlv-input`, so the new row is located by its
800
+ // value cell first and only then by the built-in input list.
801
+ const previousCellCount = this._valueCells().length;
802
+ const previousInputCount = this._conditionInputs().length;
803
+ this._draftConditions.update((conditions) => [
804
+ ...conditions,
805
+ this._newCondition(),
806
+ ]);
807
+ queueMicrotask(() => {
808
+ const cell = this._valueCells()[previousCellCount]?.nativeElement;
809
+ const target = cell ? this._firstFocusableIn(cell) : null;
810
+ if (target)
811
+ target.focus();
812
+ else
813
+ this._conditionInputs()[previousInputCount]?.focus();
814
+ });
815
+ }
816
+ /** @protected Removes one working condition. */
817
+ _removeCondition(index) {
818
+ if (this._editorDisabled())
819
+ return;
820
+ this._draftConditions.update((conditions) => conditions.filter((_, conditionIndex) => conditionIndex !== index));
821
+ if (this._draftConditions().length === 0) {
822
+ this._draftConditions.set([this._newCondition()]);
823
+ }
824
+ this._commitLive(false);
825
+ }
826
+ /**
827
+ * @private First focusable control rendered inside a value cell. The CDK
828
+ * interactivity checker requires layout geometry, so a plain selector query
829
+ * takes over whenever it reports nothing focusable.
830
+ */
831
+ _firstFocusableIn(cell) {
832
+ return (this._tabbable.getTabbableElement(cell, false, true) ??
833
+ cell.querySelector(FOCUSABLE_EDITOR_SELECTOR));
834
+ }
835
+ /** @private Creates an empty free-form condition. */
836
+ _newCondition() {
837
+ const operator = this._resolvedDefaultOperator();
838
+ return {
839
+ id: mlvNextId('mlv-filter-condition'),
840
+ operator,
841
+ value: isValuelessOperator(operator)
842
+ ? null
843
+ : operator === 'between'
844
+ ? ['', '']
845
+ : '',
846
+ };
847
+ }
848
+ /** @private Publishes draft state immediately when live mode is active. */
849
+ _commitLive(close) {
850
+ if (this.applyMode() !== 'live' || this._editorDisabled())
851
+ return;
852
+ const meaningful = this._draftConditions().filter((condition) => this._isConditionMeaningful(condition));
853
+ this.conditions.set(cloneConditions(meaningful));
854
+ this.applied.emit(cloneConditions(meaningful));
855
+ if (close)
856
+ this.opened.set(false);
857
+ }
858
+ /** @private Normalizes number-editor input while preserving empty/invalid drafts. */
859
+ _normalizeValue(value) {
860
+ const parsedNumber = typeof value === 'string' ? Number(value) : NaN;
861
+ return this._resolvedEditor() === 'number' &&
862
+ typeof value === 'string' &&
863
+ value !== '' &&
864
+ Number.isFinite(parsedNumber)
865
+ ? parsedNumber
866
+ : value;
867
+ }
868
+ /** @private Converts applied operands into compact, human-readable labels. */
869
+ _displayValues(conditions) {
870
+ return conditions.flatMap((condition) => {
871
+ if (isValuelessOperator(condition.operator)) {
872
+ return [this._operatorLabel(condition.operator)];
873
+ }
874
+ if (condition.operator === 'between' &&
875
+ Array.isArray(condition.value) &&
876
+ condition.value.length === 2) {
877
+ return [
878
+ `${String(condition.value[0])} – ${String(condition.value[1])}`,
879
+ ];
880
+ }
881
+ const values = Array.isArray(condition.value)
882
+ ? condition.value
883
+ : [condition.value];
884
+ return values
885
+ .filter((value) => value !== null && value !== undefined && value !== '')
886
+ .map((value) => {
887
+ const option = this.options().find((candidate) => Object.is(candidate.value, value));
888
+ return option?.label ?? String(value);
889
+ });
890
+ });
891
+ }
892
+ /** @private Whether a condition has an operator-complete operand. */
893
+ _isConditionMeaningful(condition) {
894
+ if (isValuelessOperator(condition.operator))
895
+ return true;
896
+ if (condition.operator === 'between' && Array.isArray(condition.value)) {
897
+ return (condition.value.length === 2 &&
898
+ condition.value.every((value) => value !== null && value !== undefined && value !== ''));
899
+ }
900
+ if (Array.isArray(condition.value))
901
+ return condition.value.length > 0;
902
+ return (condition.value !== null &&
903
+ condition.value !== undefined &&
904
+ condition.value !== '');
905
+ }
906
+ /** @private Resolves translated labels for built-in operators. */
907
+ _operatorLabel(operator) {
908
+ const override = this.operatorLabels()[operator];
909
+ if (override)
910
+ return override;
911
+ const i18n = this._i18n();
912
+ switch (operator) {
913
+ case 'contains':
914
+ return i18n.contains;
915
+ case 'not-contains':
916
+ return i18n.notContains;
917
+ case 'starts-with':
918
+ return i18n.startsWith;
919
+ case 'ends-with':
920
+ return i18n.endsWith;
921
+ case 'equals':
922
+ return i18n.equals;
923
+ case 'not-equals':
924
+ return i18n.notEquals;
925
+ case 'greater-than':
926
+ return i18n.greaterThan;
927
+ case 'greater-than-or-equal':
928
+ return i18n.greaterThanOrEqual;
929
+ case 'less-than':
930
+ return i18n.lessThan;
931
+ case 'less-than-or-equal':
932
+ return i18n.lessThanOrEqual;
933
+ case 'between':
934
+ return i18n.between;
935
+ case 'in':
936
+ return i18n.in;
937
+ case 'not-in':
938
+ return i18n.notIn;
939
+ case 'empty':
940
+ return i18n.empty;
941
+ case 'not-empty':
942
+ return i18n.notEmpty;
943
+ }
944
+ }
945
+ /** @private Resolves one ICU message from the filter translation slice. */
946
+ _resolveMessage(key, params) {
947
+ return this._resolver.resolve(this._i18n(), key, params);
948
+ }
949
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: MlvFilter, deps: [], target: i0.ɵɵFactoryTarget.Component });
950
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.7", type: MlvFilter, isStandalone: true, selector: "mlv-filter", inputs: { label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: true, transformFunction: null }, key: { classPropertyName: "key", publicName: "key", isSignal: true, isRequired: false, transformFunction: null }, appearance: { classPropertyName: "appearance", publicName: "appearance", isSignal: true, isRequired: false, transformFunction: null }, queryRemovable: { classPropertyName: "queryRemovable", publicName: "queryRemovable", isSignal: true, isRequired: false, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null }, editor: { classPropertyName: "editor", publicName: "editor", isSignal: true, isRequired: false, transformFunction: null }, multiple: { classPropertyName: "multiple", publicName: "multiple", isSignal: true, isRequired: false, transformFunction: null }, allowMultipleConditions: { classPropertyName: "allowMultipleConditions", publicName: "allowMultipleConditions", isSignal: true, isRequired: false, transformFunction: null }, operators: { classPropertyName: "operators", publicName: "operators", isSignal: true, isRequired: false, transformFunction: null }, operatorLabels: { classPropertyName: "operatorLabels", publicName: "operatorLabels", isSignal: true, isRequired: false, transformFunction: null }, defaultOperator: { classPropertyName: "defaultOperator", publicName: "defaultOperator", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, applyMode: { classPropertyName: "applyMode", publicName: "applyMode", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, loading: { classPropertyName: "loading", publicName: "loading", isSignal: true, isRequired: false, transformFunction: null }, invalid: { classPropertyName: "invalid", publicName: "invalid", isSignal: true, isRequired: false, transformFunction: null }, ariaDescribedBy: { classPropertyName: "ariaDescribedBy", publicName: "ariaDescribedBy", isSignal: true, isRequired: false, transformFunction: null }, valueEditor: { classPropertyName: "valueEditor", publicName: "valueEditor", isSignal: true, isRequired: false, transformFunction: null }, conditions: { classPropertyName: "conditions", publicName: "conditions", isSignal: true, isRequired: false, transformFunction: null }, conditionStrategy: { classPropertyName: "conditionStrategy", publicName: "conditionStrategy", isSignal: true, isRequired: false, transformFunction: null }, opened: { classPropertyName: "opened", publicName: "opened", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { conditions: "conditionsChange", conditionStrategy: "conditionStrategyChange", opened: "openedChange", applied: "applied", cleared: "cleared" }, host: { properties: { "class.mlv-filter--applied": "hasValue()", "class.mlv-filter--invalid": "invalid()", "class.mlv-filter--open": "opened()", "class.mlv-filter--disabled": "disabled()", "class.mlv-filter--loading": "loading()", "class.mlv-filter--query": "appearance() === 'query'", "attr.aria-busy": "loading() || null" }, classAttribute: "mlv-filter" }, providers: [MlvSelectionService], queries: [{ propertyName: "_contentValueEditor", first: true, predicate: MlvFilterValueEditorDef, descendants: true, isSignal: true }], viewQueries: [{ propertyName: "_trigger", first: true, predicate: ["trigger"], descendants: true, read: ElementRef, isSignal: true }, { propertyName: "_conditionInputs", predicate: MlvInput, descendants: true, isSignal: true }, { propertyName: "_valueCells", predicate: ["valueCell"], descendants: true, read: ElementRef, isSignal: true }], ngImport: i0, template: "<div class=\"mlv-filter__control\" role=\"group\" [attr.aria-label]=\"label()\">\n <button\n #trigger\n mlvButton\n type=\"button\"\n variant=\"secondary\"\n class=\"mlv-filter__trigger\"\n [class.mlv-filter__trigger--applied]=\"hasValue()\"\n [mlvPopupTrigger]=\"filterPopup\"\n [ariaHasPopup]=\"'dialog'\"\n [disabled]=\"_editorDisabled()\"\n [loading]=\"loading()\"\n [attr.aria-controls]=\"_panelId\"\n [attr.aria-label]=\"_triggerAriaLabel()\"\n [attr.title]=\"appearance() === 'query' && hasValue() ? _querySentence() : null\"\n [attr.aria-invalid]=\"invalid() || null\"\n [attr.aria-describedby]=\"ariaDescribedBy() || null\"\n >\n <span\n class=\"mlv-filter__summary\"\n [class.mlv-filter__summary--query]=\"appearance() === 'query'\"\n >\n @if (appearance() === 'query') {\n <span class=\"mlv-filter__sentence\">{{ _querySentence() }}</span>\n } @else { @if (hasValue()) {\n <span class=\"mlv-filter__label\">{{ label() }}:</span>\n <strong class=\"mlv-filter__value\">{{ primaryValue() }}</strong>\n @if (additionalValueCount() > 0) {\n <span class=\"mlv-filter__more\">{{ _moreValuesLabel() }}</span>\n } } @else {\n <span class=\"mlv-filter__label\">{{ label() }}</span>\n } }\n </span>\n @if (appearance() === 'field') {\n <svg\n mlvButtonIcon\n lucideChevronDown\n [size]=\"14\"\n aria-hidden=\"true\"\n class=\"mlv-filter__chevron\"\n ></svg>\n }\n </button>\n\n @if (_showsClearAction()) {\n <button\n mlvButton\n type=\"button\"\n variant=\"secondary\"\n shape=\"square\"\n class=\"mlv-filter__clear\"\n [disabled]=\"disabled() || loading()\"\n [attr.aria-label]=\"_clearAriaLabel()\"\n (click)=\"_clear($event)\"\n >\n <svg mlvButtonIcon lucideX [size]=\"14\" aria-hidden=\"true\"></svg>\n </button>\n }\n</div>\n\n<mlv-popup\n #filterPopup\n [(opened)]=\"opened\"\n [position]=\"['bottom-start', 'top-start']\"\n [hasShadow]=\"true\"\n panelRole=\"dialog\"\n [ariaLabel]=\"_triggerAriaLabel()\"\n minWidth=\"14rem\"\n maxWidth=\"28rem\"\n (afterOpened)=\"_onOpened()\"\n (afterClosed)=\"_onClosed()\"\n>\n <ng-template mlvPopupContent>\n <div class=\"mlv-filter__panel\" [id]=\"_panelId\">\n @if (_usesOptions()) {\n <mlv-dropdown-panel\n class=\"mlv-filter__options\"\n [ariaLabel]=\"label()\"\n [maxHeight]=\"_optionsMaxHeight\"\n [options]=\"_panelOptions()\"\n [multiple]=\"multiple()\"\n [selectedValues]=\"_selectedValues()\"\n (valueChange)=\"_onOptionValuesChange($event)\"\n >\n <span class=\"mlv-filter__empty\">{{ _i18n().selectValue }}</span>\n </mlv-dropdown-panel>\n } @else {\n <div class=\"mlv-filter__conditions\">\n @if (_draft().length > 1) {\n <mlv-select\n class=\"mlv-filter__strategy\"\n [options]=\"_strategies\"\n [toOption]=\"_strategyTransform\"\n [value]=\"_strategy()\"\n [ariaLabel]=\"label()\"\n [disabled]=\"_editorDisabled()\"\n mobileMode=\"off\"\n (valueChange)=\"_setStrategy($any($event))\"\n />\n } @for ( condition of _draft(); track condition.id || $index; let index\n = $index ) {\n <div class=\"mlv-filter__condition\">\n <mlv-select\n class=\"mlv-filter__operator\"\n [options]=\"operators()\"\n [toOption]=\"_operatorTransform\"\n [value]=\"condition.operator\"\n [ariaLabel]=\"label() + ' ' + (index + 1)\"\n [disabled]=\"_editorDisabled()\"\n mobileMode=\"off\"\n (valueChange)=\"_setOperator(index, $any($event))\"\n />\n\n @if ( condition.operator !== 'empty' && condition.operator !==\n 'not-empty' ) {\n <div class=\"mlv-filter__value-cell\" #valueCell>\n @if (_valueEditorTemplate(); as editorTemplate) {\n <ng-container\n [ngTemplateOutlet]=\"editorTemplate\"\n [ngTemplateOutletContext]=\"_valueEditorContext(condition, index)\"\n />\n } @else { @if (condition.operator === 'between') {\n <div class=\"mlv-filter__range\">\n <mlv-input\n class=\"mlv-filter__input\"\n [type]=\"_resolvedEditor() === 'number' ? 'number' : 'text'\"\n [value]=\"$any(_conditionRangeValue(condition, 0))\"\n [placeholder]=\"_resolvedPlaceholder()\"\n [ariaLabel]=\"label() + ' ' + (index + 1) + ' 1'\"\n [disabled]=\"_editorDisabled()\"\n (valueChange)=\"_setConditionRangeValue(index, 0, $event)\"\n (keydown.enter)=\"applyMode() === 'explicit' && _apply()\"\n />\n <span class=\"mlv-filter__range-separator\" aria-hidden=\"true\"\n >\u2013</span\n >\n <mlv-input\n class=\"mlv-filter__input\"\n [type]=\"_resolvedEditor() === 'number' ? 'number' : 'text'\"\n [value]=\"$any(_conditionRangeValue(condition, 1))\"\n [placeholder]=\"_resolvedPlaceholder()\"\n [ariaLabel]=\"label() + ' ' + (index + 1) + ' 2'\"\n [disabled]=\"_editorDisabled()\"\n (valueChange)=\"_setConditionRangeValue(index, 1, $event)\"\n (keydown.enter)=\"applyMode() === 'explicit' && _apply()\"\n />\n </div>\n } @else {\n <mlv-input\n class=\"mlv-filter__input\"\n [type]=\"_resolvedEditor() === 'number' ? 'number' : 'text'\"\n [value]=\"$any(condition.value)\"\n [placeholder]=\"_resolvedPlaceholder()\"\n [ariaLabel]=\"label() + ' ' + (index + 1)\"\n [disabled]=\"_editorDisabled()\"\n (valueChange)=\"_setConditionValue(index, $event)\"\n (keydown.enter)=\"applyMode() === 'explicit' && _apply()\"\n />\n } }\n </div>\n } @if (allowMultipleConditions() && _draft().length > 1) {\n <button\n mlvButton\n type=\"button\"\n shape=\"square\"\n variant=\"transparent\"\n class=\"mlv-filter__remove-condition\"\n [disabled]=\"_editorDisabled()\"\n [attr.aria-label]=\"_i18n().removeCondition\"\n (click)=\"_removeCondition(index)\"\n >\n <svg\n mlvButtonIcon\n lucideTrash2\n [size]=\"16\"\n aria-hidden=\"true\"\n ></svg>\n </button>\n }\n </div>\n } @if (allowMultipleConditions()) {\n <button\n mlvButton\n type=\"button\"\n variant=\"transparent\"\n class=\"mlv-filter__add-condition\"\n [disabled]=\"_editorDisabled()\"\n (click)=\"_addCondition()\"\n >\n <svg mlvButtonIcon lucidePlus [size]=\"16\" aria-hidden=\"true\"></svg>\n {{ _i18n().addCondition }}\n </button>\n }\n </div>\n } @if (_draft().length > 0 || applyMode() === 'explicit') {\n <mlv-toolbar class=\"mlv-filter__panel-footer\">\n @if (_draft().length > 0) {\n <a\n mlvLink\n class=\"mlv-filter__panel-clear\"\n [disabled]=\"_editorDisabled()\"\n (mlvClick)=\"_clearDraft()\"\n >{{ _i18n().clear }}</a\n >\n <mlv-spacer />\n } @if ((applyMode() === 'explicit')) {\n <button\n mlvButton\n type=\"button\"\n mlvDensity=\"compact\"\n variant=\"transparent\"\n (click)=\"_cancel()\"\n >\n {{ _i18n().cancel }}\n </button>\n <button\n mlvButton\n type=\"button\"\n mlvDensity=\"compact\"\n [disabled]=\"_editorDisabled()\"\n (click)=\"_apply()\"\n >\n {{ _i18n().apply }}\n </button>\n }\n </mlv-toolbar>\n }\n </div>\n </ng-template>\n</mlv-popup>\n", styles: ["@layer mlv.components{.mlv-filter{box-sizing:border-box;padding:0;margin:0;font-family:var(--mlv-typography-family-text);font-size:var(--mlv-typography-body-m-size)}.mlv-filter *{box-sizing:border-box}.mlv-filter,.mlv-filter__control{display:inline-flex;min-width:0;max-width:100%}.mlv-filter__trigger{min-width:0;max-width:100%;justify-content:space-between}.mlv-filter__trigger--applied{border-start-end-radius:0;border-end-end-radius:0}.mlv-filter__clear{flex:none;margin-inline-start:-.0625rem;border-start-start-radius:0;border-end-start-radius:0}.mlv-filter__summary{display:inline-flex;align-items:baseline;min-width:0;gap:var(--mlv-spacing-1);overflow:hidden}.mlv-button__text>.mlv-filter__summary{flex-shrink:1}.mlv-filter__summary--query,.mlv-filter__sentence{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mlv-filter__label,.mlv-filter__more{flex:none;font-weight:var(--mlv-typography-body-m-weight)}.mlv-filter__value{min-width:0;overflow:hidden;color:var(--mlv-text-primary);font-weight:600;text-overflow:ellipsis;white-space:nowrap}.mlv-filter__chevron{flex:none;transition-property:transform;transition-duration:var(--mlv-duration-fast);transition-timing-function:var(--mlv-ease-out)}.mlv-filter--open .mlv-filter__chevron{transform:rotate(180deg)}.mlv-filter--invalid .mlv-filter__trigger{--mlv-btn-box-shadow: inset 0 0 0 .0625rem var(--mlv-border-error)}.mlv-filter--query .mlv-filter__trigger{--mlv-btn-height: var(--mlv-height-xs);--mlv-btn-padding: var(--mlv-padding-xs);max-width:18rem;border-start-end-radius:var(--mlv-radius-m);border-end-end-radius:var(--mlv-radius-m)}.mlv-filter--query .mlv-filter__trigger--applied{border-start-end-radius:0;border-end-end-radius:0}.mlv-filter--query .mlv-filter__clear{--mlv-btn-height: var(--mlv-height-xs);--mlv-btn-padding: var(--mlv-padding-xs)}.mlv-filter__panel{display:flex;width:min(26rem,100vw - 2rem);max-width:100%;flex-direction:column;color:var(--mlv-text-primary)}.mlv-filter__panel-footer{display:flex;align-items:center;justify-content:space-between;gap:var(--mlv-spacing-2);padding:var(--mlv-spacing-2-5) var(--mlv-spacing-3)}.mlv-filter__panel-footer{justify-content:flex-end;border-top:.0625rem solid var(--mlv-border-subtle)}.mlv-filter__panel-clear{--mlv-btn-height: var(--mlv-height-xs);--mlv-btn-padding: var(--mlv-padding-xs)}.mlv-filter__options{min-width:0}.mlv-filter__empty{display:block;padding:var(--mlv-spacing-3);color:var(--mlv-text-secondary);text-align:center}.mlv-filter__conditions{display:flex;flex-direction:column;gap:var(--mlv-spacing-2-5);padding:var(--mlv-spacing-3)}.mlv-filter__condition{display:grid;grid-template-columns:minmax(8rem,.8fr) minmax(10rem,1.2fr) auto;align-items:start;gap:var(--mlv-spacing-2)}.mlv-filter__operator,.mlv-filter__input,.mlv-filter__strategy,.mlv-filter__range,.mlv-filter__value-cell{min-width:0}.mlv-filter__range{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);align-items:center;gap:var(--mlv-spacing-1-5)}.mlv-filter__range-separator{color:var(--mlv-text-secondary)}.mlv-filter__remove-condition{margin-top:var(--mlv-spacing-0-5)}.mlv-filter__add-condition{align-self:flex-start}@media(max-width:30rem){.mlv-filter__condition{grid-template-columns:1fr auto}.mlv-filter__operator,.mlv-filter__value-cell{grid-column:1}.mlv-filter__remove-condition{grid-column:2;grid-row:1/span 2}}@media(prefers-reduced-motion:reduce){.mlv-filter,.mlv-filter *,.mlv-filter:before,.mlv-filter:after,[class^=mlv-filter__],[class*=\" mlv-filter__\"],[class^=mlv-filter--],[class*=\" mlv-filter--\"]{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:var(--mlv-duration-instant)!important}}}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: MlvButton, selector: "button[mlvButton], a[mlvButton]", inputs: ["variant", "shape", "disabled", "loading", "selected"] }, { kind: "directive", type: MlvButtonIcon, selector: "[mlvButtonIcon]" }, { kind: "component", type: MlvDropdownPanel, selector: "mlv-dropdown-panel", inputs: ["scrollMode", "minHeight", "maxHeight", "options", "multiple", "selectedValues", "itemTemplate", "focusMode", "activeIndex", "listboxId", "ariaLabel", "highlightQuery", "loading", "loadingText", "loadingMore", "hasMore", "infiniteScrollThreshold"], outputs: ["loadMore", "valueChange"] }, { kind: "component", type: MlvInput, selector: "mlv-input", inputs: ["type", "placeholder", "autocomplete", "inputMode", "maxLength", "minLength", "pattern", "name", "autofocus", "min", "max", "step", "bare", "projectControl", "role", "ariaExpanded", "ariaHasPopup", "ariaAutocomplete", "ariaControls", "ariaActiveDescendant", "ariaDescribedBy", "value"], outputs: ["valueChange", "inputFocus", "inputBlur"] }, { kind: "component", type: MlvPopup, selector: "mlv-popup", inputs: ["position", "positions", "width", "height", "minWidth", "minHeight", "maxWidth", "maxHeight", "hasArrow", "hasShadow", "class", "mlvDensity", "flexibleDimensions", "scrollStrategy", "hasBackdrop", "restrictPosition", "panelRole", "modal", "ariaLabel", "dismissExcludeElements", "mobileMode", "mobileBreakpoint", "mobileTitle", "mobileCloseLabel", "opened"], outputs: ["openedChange", "afterOpened", "afterClosed"] }, { kind: "directive", type: MlvPopupContent, selector: "[mlvPopupContent]" }, { kind: "directive", type: MlvPopupTrigger, selector: "[mlvPopupTrigger]", inputs: ["mlvPopupTrigger", "triggerOn", "ariaHasPopup"], exportAs: ["mlvPopupTrigger"] }, { kind: "component", type: MlvSelect, selector: "mlv-select", inputs: ["value", "options", "searchFn", "searchDebounce", "multiple", "native", "placeholder", "toOption", "compareWith", "searchable", "searchPlaceholder", "matcher", "mobileMode", "mlvDensity", "mobileTitle"], outputs: ["valueChange"] }, { kind: "component", type: LucideChevronDown, selector: "svg[lucideChevronDown]" }, { kind: "component", type: LucidePlus, selector: "svg[lucidePlus]" }, { kind: "component", type: LucideTrash2, selector: "svg[lucideTrash2]" }, { kind: "component", type: LucideX, selector: "svg[lucideX]" }, { kind: "component", type: MlvToolbar, selector: "mlv-toolbar", inputs: ["gap", "equalSize"] }, { kind: "component", type: MlvSpacer, selector: "mlv-spacer" }, { kind: "component", type: MlvLink, selector: "a[mlvLink]", inputs: ["variant", "disabled"] }, { kind: "directive", type: MlvClick, selector: "[mlvClick]", inputs: ["disabled", "hostRole"], outputs: ["mlvClick"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
951
+ }
952
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: MlvFilter, decorators: [{
953
+ type: Component,
954
+ args: [{ selector: 'mlv-filter', imports: [
955
+ NgTemplateOutlet,
956
+ MlvButton,
957
+ MlvButtonIcon,
958
+ MlvDropdownPanel,
959
+ MlvInput,
960
+ MlvPopup,
961
+ MlvPopupContent,
962
+ MlvPopupTrigger,
963
+ MlvSelect,
964
+ LucideChevronDown,
965
+ LucidePlus,
966
+ LucideTrash2,
967
+ LucideX,
968
+ MlvToolbar,
969
+ MlvSpacer,
970
+ MlvLink,
971
+ MlvClick,
972
+ ], providers: [MlvSelectionService], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, host: {
973
+ class: 'mlv-filter',
974
+ '[class.mlv-filter--applied]': 'hasValue()',
975
+ '[class.mlv-filter--invalid]': 'invalid()',
976
+ '[class.mlv-filter--open]': 'opened()',
977
+ '[class.mlv-filter--disabled]': 'disabled()',
978
+ '[class.mlv-filter--loading]': 'loading()',
979
+ '[class.mlv-filter--query]': "appearance() === 'query'",
980
+ '[attr.aria-busy]': 'loading() || null',
981
+ }, template: "<div class=\"mlv-filter__control\" role=\"group\" [attr.aria-label]=\"label()\">\n <button\n #trigger\n mlvButton\n type=\"button\"\n variant=\"secondary\"\n class=\"mlv-filter__trigger\"\n [class.mlv-filter__trigger--applied]=\"hasValue()\"\n [mlvPopupTrigger]=\"filterPopup\"\n [ariaHasPopup]=\"'dialog'\"\n [disabled]=\"_editorDisabled()\"\n [loading]=\"loading()\"\n [attr.aria-controls]=\"_panelId\"\n [attr.aria-label]=\"_triggerAriaLabel()\"\n [attr.title]=\"appearance() === 'query' && hasValue() ? _querySentence() : null\"\n [attr.aria-invalid]=\"invalid() || null\"\n [attr.aria-describedby]=\"ariaDescribedBy() || null\"\n >\n <span\n class=\"mlv-filter__summary\"\n [class.mlv-filter__summary--query]=\"appearance() === 'query'\"\n >\n @if (appearance() === 'query') {\n <span class=\"mlv-filter__sentence\">{{ _querySentence() }}</span>\n } @else { @if (hasValue()) {\n <span class=\"mlv-filter__label\">{{ label() }}:</span>\n <strong class=\"mlv-filter__value\">{{ primaryValue() }}</strong>\n @if (additionalValueCount() > 0) {\n <span class=\"mlv-filter__more\">{{ _moreValuesLabel() }}</span>\n } } @else {\n <span class=\"mlv-filter__label\">{{ label() }}</span>\n } }\n </span>\n @if (appearance() === 'field') {\n <svg\n mlvButtonIcon\n lucideChevronDown\n [size]=\"14\"\n aria-hidden=\"true\"\n class=\"mlv-filter__chevron\"\n ></svg>\n }\n </button>\n\n @if (_showsClearAction()) {\n <button\n mlvButton\n type=\"button\"\n variant=\"secondary\"\n shape=\"square\"\n class=\"mlv-filter__clear\"\n [disabled]=\"disabled() || loading()\"\n [attr.aria-label]=\"_clearAriaLabel()\"\n (click)=\"_clear($event)\"\n >\n <svg mlvButtonIcon lucideX [size]=\"14\" aria-hidden=\"true\"></svg>\n </button>\n }\n</div>\n\n<mlv-popup\n #filterPopup\n [(opened)]=\"opened\"\n [position]=\"['bottom-start', 'top-start']\"\n [hasShadow]=\"true\"\n panelRole=\"dialog\"\n [ariaLabel]=\"_triggerAriaLabel()\"\n minWidth=\"14rem\"\n maxWidth=\"28rem\"\n (afterOpened)=\"_onOpened()\"\n (afterClosed)=\"_onClosed()\"\n>\n <ng-template mlvPopupContent>\n <div class=\"mlv-filter__panel\" [id]=\"_panelId\">\n @if (_usesOptions()) {\n <mlv-dropdown-panel\n class=\"mlv-filter__options\"\n [ariaLabel]=\"label()\"\n [maxHeight]=\"_optionsMaxHeight\"\n [options]=\"_panelOptions()\"\n [multiple]=\"multiple()\"\n [selectedValues]=\"_selectedValues()\"\n (valueChange)=\"_onOptionValuesChange($event)\"\n >\n <span class=\"mlv-filter__empty\">{{ _i18n().selectValue }}</span>\n </mlv-dropdown-panel>\n } @else {\n <div class=\"mlv-filter__conditions\">\n @if (_draft().length > 1) {\n <mlv-select\n class=\"mlv-filter__strategy\"\n [options]=\"_strategies\"\n [toOption]=\"_strategyTransform\"\n [value]=\"_strategy()\"\n [ariaLabel]=\"label()\"\n [disabled]=\"_editorDisabled()\"\n mobileMode=\"off\"\n (valueChange)=\"_setStrategy($any($event))\"\n />\n } @for ( condition of _draft(); track condition.id || $index; let index\n = $index ) {\n <div class=\"mlv-filter__condition\">\n <mlv-select\n class=\"mlv-filter__operator\"\n [options]=\"operators()\"\n [toOption]=\"_operatorTransform\"\n [value]=\"condition.operator\"\n [ariaLabel]=\"label() + ' ' + (index + 1)\"\n [disabled]=\"_editorDisabled()\"\n mobileMode=\"off\"\n (valueChange)=\"_setOperator(index, $any($event))\"\n />\n\n @if ( condition.operator !== 'empty' && condition.operator !==\n 'not-empty' ) {\n <div class=\"mlv-filter__value-cell\" #valueCell>\n @if (_valueEditorTemplate(); as editorTemplate) {\n <ng-container\n [ngTemplateOutlet]=\"editorTemplate\"\n [ngTemplateOutletContext]=\"_valueEditorContext(condition, index)\"\n />\n } @else { @if (condition.operator === 'between') {\n <div class=\"mlv-filter__range\">\n <mlv-input\n class=\"mlv-filter__input\"\n [type]=\"_resolvedEditor() === 'number' ? 'number' : 'text'\"\n [value]=\"$any(_conditionRangeValue(condition, 0))\"\n [placeholder]=\"_resolvedPlaceholder()\"\n [ariaLabel]=\"label() + ' ' + (index + 1) + ' 1'\"\n [disabled]=\"_editorDisabled()\"\n (valueChange)=\"_setConditionRangeValue(index, 0, $event)\"\n (keydown.enter)=\"applyMode() === 'explicit' && _apply()\"\n />\n <span class=\"mlv-filter__range-separator\" aria-hidden=\"true\"\n >\u2013</span\n >\n <mlv-input\n class=\"mlv-filter__input\"\n [type]=\"_resolvedEditor() === 'number' ? 'number' : 'text'\"\n [value]=\"$any(_conditionRangeValue(condition, 1))\"\n [placeholder]=\"_resolvedPlaceholder()\"\n [ariaLabel]=\"label() + ' ' + (index + 1) + ' 2'\"\n [disabled]=\"_editorDisabled()\"\n (valueChange)=\"_setConditionRangeValue(index, 1, $event)\"\n (keydown.enter)=\"applyMode() === 'explicit' && _apply()\"\n />\n </div>\n } @else {\n <mlv-input\n class=\"mlv-filter__input\"\n [type]=\"_resolvedEditor() === 'number' ? 'number' : 'text'\"\n [value]=\"$any(condition.value)\"\n [placeholder]=\"_resolvedPlaceholder()\"\n [ariaLabel]=\"label() + ' ' + (index + 1)\"\n [disabled]=\"_editorDisabled()\"\n (valueChange)=\"_setConditionValue(index, $event)\"\n (keydown.enter)=\"applyMode() === 'explicit' && _apply()\"\n />\n } }\n </div>\n } @if (allowMultipleConditions() && _draft().length > 1) {\n <button\n mlvButton\n type=\"button\"\n shape=\"square\"\n variant=\"transparent\"\n class=\"mlv-filter__remove-condition\"\n [disabled]=\"_editorDisabled()\"\n [attr.aria-label]=\"_i18n().removeCondition\"\n (click)=\"_removeCondition(index)\"\n >\n <svg\n mlvButtonIcon\n lucideTrash2\n [size]=\"16\"\n aria-hidden=\"true\"\n ></svg>\n </button>\n }\n </div>\n } @if (allowMultipleConditions()) {\n <button\n mlvButton\n type=\"button\"\n variant=\"transparent\"\n class=\"mlv-filter__add-condition\"\n [disabled]=\"_editorDisabled()\"\n (click)=\"_addCondition()\"\n >\n <svg mlvButtonIcon lucidePlus [size]=\"16\" aria-hidden=\"true\"></svg>\n {{ _i18n().addCondition }}\n </button>\n }\n </div>\n } @if (_draft().length > 0 || applyMode() === 'explicit') {\n <mlv-toolbar class=\"mlv-filter__panel-footer\">\n @if (_draft().length > 0) {\n <a\n mlvLink\n class=\"mlv-filter__panel-clear\"\n [disabled]=\"_editorDisabled()\"\n (mlvClick)=\"_clearDraft()\"\n >{{ _i18n().clear }}</a\n >\n <mlv-spacer />\n } @if ((applyMode() === 'explicit')) {\n <button\n mlvButton\n type=\"button\"\n mlvDensity=\"compact\"\n variant=\"transparent\"\n (click)=\"_cancel()\"\n >\n {{ _i18n().cancel }}\n </button>\n <button\n mlvButton\n type=\"button\"\n mlvDensity=\"compact\"\n [disabled]=\"_editorDisabled()\"\n (click)=\"_apply()\"\n >\n {{ _i18n().apply }}\n </button>\n }\n </mlv-toolbar>\n }\n </div>\n </ng-template>\n</mlv-popup>\n", styles: ["@layer mlv.components{.mlv-filter{box-sizing:border-box;padding:0;margin:0;font-family:var(--mlv-typography-family-text);font-size:var(--mlv-typography-body-m-size)}.mlv-filter *{box-sizing:border-box}.mlv-filter,.mlv-filter__control{display:inline-flex;min-width:0;max-width:100%}.mlv-filter__trigger{min-width:0;max-width:100%;justify-content:space-between}.mlv-filter__trigger--applied{border-start-end-radius:0;border-end-end-radius:0}.mlv-filter__clear{flex:none;margin-inline-start:-.0625rem;border-start-start-radius:0;border-end-start-radius:0}.mlv-filter__summary{display:inline-flex;align-items:baseline;min-width:0;gap:var(--mlv-spacing-1);overflow:hidden}.mlv-button__text>.mlv-filter__summary{flex-shrink:1}.mlv-filter__summary--query,.mlv-filter__sentence{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mlv-filter__label,.mlv-filter__more{flex:none;font-weight:var(--mlv-typography-body-m-weight)}.mlv-filter__value{min-width:0;overflow:hidden;color:var(--mlv-text-primary);font-weight:600;text-overflow:ellipsis;white-space:nowrap}.mlv-filter__chevron{flex:none;transition-property:transform;transition-duration:var(--mlv-duration-fast);transition-timing-function:var(--mlv-ease-out)}.mlv-filter--open .mlv-filter__chevron{transform:rotate(180deg)}.mlv-filter--invalid .mlv-filter__trigger{--mlv-btn-box-shadow: inset 0 0 0 .0625rem var(--mlv-border-error)}.mlv-filter--query .mlv-filter__trigger{--mlv-btn-height: var(--mlv-height-xs);--mlv-btn-padding: var(--mlv-padding-xs);max-width:18rem;border-start-end-radius:var(--mlv-radius-m);border-end-end-radius:var(--mlv-radius-m)}.mlv-filter--query .mlv-filter__trigger--applied{border-start-end-radius:0;border-end-end-radius:0}.mlv-filter--query .mlv-filter__clear{--mlv-btn-height: var(--mlv-height-xs);--mlv-btn-padding: var(--mlv-padding-xs)}.mlv-filter__panel{display:flex;width:min(26rem,100vw - 2rem);max-width:100%;flex-direction:column;color:var(--mlv-text-primary)}.mlv-filter__panel-footer{display:flex;align-items:center;justify-content:space-between;gap:var(--mlv-spacing-2);padding:var(--mlv-spacing-2-5) var(--mlv-spacing-3)}.mlv-filter__panel-footer{justify-content:flex-end;border-top:.0625rem solid var(--mlv-border-subtle)}.mlv-filter__panel-clear{--mlv-btn-height: var(--mlv-height-xs);--mlv-btn-padding: var(--mlv-padding-xs)}.mlv-filter__options{min-width:0}.mlv-filter__empty{display:block;padding:var(--mlv-spacing-3);color:var(--mlv-text-secondary);text-align:center}.mlv-filter__conditions{display:flex;flex-direction:column;gap:var(--mlv-spacing-2-5);padding:var(--mlv-spacing-3)}.mlv-filter__condition{display:grid;grid-template-columns:minmax(8rem,.8fr) minmax(10rem,1.2fr) auto;align-items:start;gap:var(--mlv-spacing-2)}.mlv-filter__operator,.mlv-filter__input,.mlv-filter__strategy,.mlv-filter__range,.mlv-filter__value-cell{min-width:0}.mlv-filter__range{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);align-items:center;gap:var(--mlv-spacing-1-5)}.mlv-filter__range-separator{color:var(--mlv-text-secondary)}.mlv-filter__remove-condition{margin-top:var(--mlv-spacing-0-5)}.mlv-filter__add-condition{align-self:flex-start}@media(max-width:30rem){.mlv-filter__condition{grid-template-columns:1fr auto}.mlv-filter__operator,.mlv-filter__value-cell{grid-column:1}.mlv-filter__remove-condition{grid-column:2;grid-row:1/span 2}}@media(prefers-reduced-motion:reduce){.mlv-filter,.mlv-filter *,.mlv-filter:before,.mlv-filter:after,[class^=mlv-filter__],[class*=\" mlv-filter__\"],[class^=mlv-filter--],[class*=\" mlv-filter--\"]{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:var(--mlv-duration-instant)!important}}}\n"] }]
982
+ }], ctorParameters: () => [], propDecorators: { label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: true }] }], key: [{ type: i0.Input, args: [{ isSignal: true, alias: "key", required: false }] }], appearance: [{ type: i0.Input, args: [{ isSignal: true, alias: "appearance", required: false }] }], queryRemovable: [{ type: i0.Input, args: [{ isSignal: true, alias: "queryRemovable", required: false }] }], options: [{ type: i0.Input, args: [{ isSignal: true, alias: "options", required: false }] }], editor: [{ type: i0.Input, args: [{ isSignal: true, alias: "editor", required: false }] }], multiple: [{ type: i0.Input, args: [{ isSignal: true, alias: "multiple", required: false }] }], allowMultipleConditions: [{ type: i0.Input, args: [{ isSignal: true, alias: "allowMultipleConditions", required: false }] }], operators: [{ type: i0.Input, args: [{ isSignal: true, alias: "operators", required: false }] }], operatorLabels: [{ type: i0.Input, args: [{ isSignal: true, alias: "operatorLabels", required: false }] }], defaultOperator: [{ type: i0.Input, args: [{ isSignal: true, alias: "defaultOperator", required: false }] }], placeholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "placeholder", required: false }] }], applyMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "applyMode", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], loading: [{ type: i0.Input, args: [{ isSignal: true, alias: "loading", required: false }] }], invalid: [{ type: i0.Input, args: [{ isSignal: true, alias: "invalid", required: false }] }], ariaDescribedBy: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaDescribedBy", required: false }] }], valueEditor: [{ type: i0.Input, args: [{ isSignal: true, alias: "valueEditor", required: false }] }], conditions: [{ type: i0.Input, args: [{ isSignal: true, alias: "conditions", required: false }] }, { type: i0.Output, args: ["conditionsChange"] }], conditionStrategy: [{ type: i0.Input, args: [{ isSignal: true, alias: "conditionStrategy", required: false }] }, { type: i0.Output, args: ["conditionStrategyChange"] }], opened: [{ type: i0.Input, args: [{ isSignal: true, alias: "opened", required: false }] }, { type: i0.Output, args: ["openedChange"] }], applied: [{ type: i0.Output, args: ["applied"] }], cleared: [{ type: i0.Output, args: ["cleared"] }], _trigger: [{ type: i0.ViewChild, args: ['trigger', { ...{
983
+ read: (ElementRef),
984
+ }, isSignal: true }] }], _conditionInputs: [{ type: i0.ViewChildren, args: [i0.forwardRef(() => MlvInput), { isSignal: true }] }], _valueCells: [{ type: i0.ViewChildren, args: ['valueCell', { ...{
985
+ read: (ElementRef),
986
+ }, isSignal: true }] }], _contentValueEditor: [{ type: i0.ContentChild, args: [i0.forwardRef(() => MlvFilterValueEditorDef), { isSignal: true }] }] } });
987
+
988
+ /** Returns whether an operator-complete condition represents an applied value. */
989
+ function isConditionMeaningful(condition) {
990
+ if (condition.operator === 'empty' || condition.operator === 'not-empty') {
991
+ return true;
992
+ }
993
+ if (condition.operator === 'between' && Array.isArray(condition.value)) {
994
+ return (condition.value.length === 2 &&
995
+ condition.value.every((value) => value !== null && value !== undefined && value !== ''));
996
+ }
997
+ if (Array.isArray(condition.value))
998
+ return condition.value.length > 0;
999
+ return (condition.value !== null &&
1000
+ condition.value !== undefined &&
1001
+ condition.value !== '');
1002
+ }
1003
+ /** Deeply copies a supported structured filter value. */
1004
+ function cloneFilterValue(value) {
1005
+ if (typeof structuredClone === 'function') {
1006
+ try {
1007
+ return structuredClone(value);
1008
+ }
1009
+ catch {
1010
+ // Fall through for values outside the structured-clone algorithm.
1011
+ }
1012
+ }
1013
+ if (Array.isArray(value)) {
1014
+ return value.map((item) => cloneFilterValue(item));
1015
+ }
1016
+ if (value instanceof Date)
1017
+ return new Date(value.getTime());
1018
+ if (value instanceof Map) {
1019
+ return new Map([...value].map(([key, item]) => [
1020
+ cloneFilterValue(key),
1021
+ cloneFilterValue(item),
1022
+ ]));
1023
+ }
1024
+ if (value instanceof Set) {
1025
+ return new Set([...value].map((item) => cloneFilterValue(item)));
1026
+ }
1027
+ if (value !== null && typeof value === 'object') {
1028
+ return Object.fromEntries(Object.entries(value).map(([key, item]) => [key, cloneFilterValue(item)]));
1029
+ }
1030
+ return value;
1031
+ }
1032
+ /** Copies field states and nested operands for immutable public snapshots. */
1033
+ function cloneFieldStates(states) {
1034
+ return states.map((state) => ({
1035
+ key: state.key,
1036
+ strategy: state.strategy,
1037
+ conditions: state.conditions.map((condition) => ({
1038
+ ...condition,
1039
+ value: cloneFilterValue(condition.value),
1040
+ })),
1041
+ }));
1042
+ }
1043
+ /** Whether two ordered string collections contain the same values. */
1044
+ function stringArraysEqual(first, second) {
1045
+ return (first.length === second.length &&
1046
+ first.every((value, index) => value === second[index]));
1047
+ }
1048
+ /** Metadata-driven query header for search, field filters, and execution. */
1049
+ class MlvSmartFilterBar {
1050
+ /** @protected Reactive translated strings for filters. */
1051
+ _i18n = inject(MLV_FILTER_I18N);
1052
+ /** @private ICU resolver for parameterized translated strings. */
1053
+ _resolver = inject(MlvI18nResolverService);
1054
+ /** @private Injector required by post-overlay render focus restoration. */
1055
+ _injector = inject(Injector);
1056
+ /** Metadata for every available filter field. */
1057
+ definitions = input.required(/* @ts-ignore */
1058
+ ...(ngDevMode ? [{ debugName: "definitions" }] : /* istanbul ignore next */ []));
1059
+ /** Structured filter state. */
1060
+ filters = model([], /* @ts-ignore */
1061
+ ...(ngDevMode ? [{ debugName: "filters" }] : /* istanbul ignore next */ []));
1062
+ /** Whether the bar renders its established toolbar or natural-language query row. */
1063
+ appearance = input('classic', /* @ts-ignore */
1064
+ ...(ngDevMode ? [{ debugName: "appearance" }] : /* istanbul ignore next */ []));
1065
+ /** Keys currently shown in the filter row. */
1066
+ visibleKeys = model([], /* @ts-ignore */
1067
+ ...(ngDevMode ? [{ debugName: "visibleKeys" }] : /* istanbul ignore next */ []));
1068
+ /** Global search query submitted with structured filters. */
1069
+ searchValue = model('', /* @ts-ignore */
1070
+ ...(ngDevMode ? [{ debugName: "searchValue" }] : /* istanbul ignore next */ []));
1071
+ /** Commit behavior for the global search field. */
1072
+ searchTrigger = input('live', /* @ts-ignore */
1073
+ ...(ngDevMode ? [{ debugName: "searchTrigger" }] : /* istanbul ignore next */ []));
1074
+ /** Debounce passed to the global live-search field. */
1075
+ searchDebounce = input(200, { ...(ngDevMode ? { debugName: "searchDebounce" } : /* istanbul ignore next */ {}), transform: (value) => Math.max(0, numberAttribute(value, 200)) });
1076
+ /** Apply behavior used by each field filter editor. */
1077
+ filterApplyMode = input('live', /* @ts-ignore */
1078
+ ...(ngDevMode ? [{ debugName: "filterApplyMode" }] : /* istanbul ignore next */ []));
1079
+ /** Whether live search/filter commits should execute immediately. */
1080
+ autoExecute = input(false, { ...(ngDevMode ? { debugName: "autoExecute" } : /* istanbul ignore next */ {}), transform: coerceBooleanProperty });
1081
+ /** Whether structured fields are expanded beneath the query actions. */
1082
+ filtersVisible = model(true, /* @ts-ignore */
1083
+ ...(ngDevMode ? [{ debugName: "filtersVisible" }] : /* istanbul ignore next */ []));
1084
+ /** Whether the global search field is rendered. */
1085
+ showSearch = input(true, { ...(ngDevMode ? { debugName: "showSearch" } : /* istanbul ignore next */ {}), transform: coerceBooleanProperty });
1086
+ /** Whether query execution is in progress. */
1087
+ loading = input(false, { ...(ngDevMode ? { debugName: "loading" } : /* istanbul ignore next */ {}), transform: coerceBooleanProperty });
1088
+ /** Whether every control in the bar is unavailable. */
1089
+ disabled = input(false, { ...(ngDevMode ? { debugName: "disabled" } : /* istanbul ignore next */ {}), transform: coerceBooleanProperty });
1090
+ /** Emitted with an immutable snapshot when the query executes. */
1091
+ execute = output();
1092
+ /** Emitted when consumers should refresh using the current query snapshot. */
1093
+ refresh = output();
1094
+ /** Emitted after search, filter values, and visibility return to defaults. */
1095
+ resetCompleted = output();
1096
+ /** @protected Search term used only inside the available-filters manager. */
1097
+ _availableSearch = signal('', /* @ts-ignore */
1098
+ ...(ngDevMode ? [{ debugName: "_availableSearch" }] : /* istanbul ignore next */ []));
1099
+ /** @private Optional blank fields deliberately selected through query Add filter. */
1100
+ _queryAddedKeys = signal([], /* @ts-ignore */
1101
+ ...(ngDevMode ? [{ debugName: "_queryAddedKeys" }] : /* istanbul ignore next */ []));
1102
+ /** @private Added key awaiting focus after its popup has detached. */
1103
+ _pendingAddedKey = signal(undefined, /* @ts-ignore */
1104
+ ...(ngDevMode ? [{ debugName: "_pendingAddedKey" }] : /* istanbul ignore next */ []));
1105
+ /** @private Staged field visibility while the manager dialog is open. */
1106
+ _draftVisibleKeys = signal([], /* @ts-ignore */
1107
+ ...(ngDevMode ? [{ debugName: "_draftVisibleKeys" }] : /* istanbul ignore next */ []));
1108
+ /** @protected Id linking the filter visibility trigger to its region. */
1109
+ _filtersId = mlvNextId('mlv-smart-filter-bar-filters');
1110
+ /** @protected Id linking the manager trigger to its dialog content. */
1111
+ _managerId = mlvNextId('mlv-smart-filter-bar-manager');
1112
+ /** @protected Id for the validation summary announced after a blocked query. */
1113
+ _validationSummaryId = mlvNextId('mlv-smart-filter-bar-validation');
1114
+ /** @private Whether metadata defaults have been applied to a usable definition set. */
1115
+ _definitionsInitialized = false;
1116
+ /** @private Previous metadata keys used to distinguish new defaults from hidden fields. */
1117
+ _knownDefinitionKeys = new Set();
1118
+ /** @private Whether a query attempt should expose required-field errors. */
1119
+ _validationAttempted = signal(false, /* @ts-ignore */
1120
+ ...(ngDevMode ? [{ debugName: "_validationAttempted" }] : /* istanbul ignore next */ []));
1121
+ /** @private Coalesces paired condition/strategy model changes into one execution. */
1122
+ _autoExecuteQueued = false;
1123
+ /** @private Manager panel used to focus its search field after opening. */
1124
+ _managerPanel = viewChild('managerPanel', /* @ts-ignore */
1125
+ ...(ngDevMode ? [{ debugName: "_managerPanel" }] : /* istanbul ignore next */ []));
1126
+ /** @private Manager trigger restored after keyboard and action closes. */
1127
+ _managerButton = viewChild('managerButton', { ...(ngDevMode ? { debugName: "_managerButton" } : /* istanbul ignore next */ {}), read: (ElementRef) });
1128
+ /** @private Query Add filter popup panel focused after it opens. */
1129
+ _addPanel = viewChild('addPanel', /* @ts-ignore */
1130
+ ...(ngDevMode ? [{ debugName: "_addPanel" }] : /* istanbul ignore next */ []));
1131
+ /** @private Query Add filter trigger used when the pending field disappears. */
1132
+ _addButton = viewChild('addButton', { ...(ngDevMode ? { debugName: "_addButton" } : /* istanbul ignore next */ {}), read: (ElementRef) });
1133
+ /** @private Rendered filter hosts used to focus the first invalid field. */
1134
+ _filterHosts = viewChildren(MlvFilter, { ...(ngDevMode ? { debugName: "_filterHosts" } : /* istanbul ignore next */ {}), read: ElementRef });
1135
+ /** @private Projected custom value-editor templates, matched to definitions by key. */
1136
+ _valueEditors = contentChildren(MlvFilterValueEditorDef, { ...(ngDevMode ? { debugName: "_valueEditors" } : /* istanbul ignore next */ {}), descendants: true });
1137
+ /** Visible definitions in stable metadata order. */
1138
+ visibleDefinitions = computed(() => {
1139
+ const visible = new Set(this.visibleKeys());
1140
+ return this.definitions().filter((definition) => visible.has(definition.key));
1141
+ }, /* @ts-ignore */
1142
+ ...(ngDevMode ? [{ debugName: "visibleDefinitions" }] : /* istanbul ignore next */ []));
1143
+ /** @protected Query chips represent required, meaningful, or deliberately added blank fields. */
1144
+ _queryDefinitions = computed(() => {
1145
+ const active = new Set(this.filters()
1146
+ .filter((state) => state.conditions.some(isConditionMeaningful))
1147
+ .map((state) => state.key));
1148
+ const added = new Set(this._queryAddedKeys());
1149
+ return this.visibleDefinitions().filter((definition) => definition.required ||
1150
+ active.has(definition.key) ||
1151
+ added.has(definition.key));
1152
+ }, /* @ts-ignore */
1153
+ ...(ngDevMode ? [{ debugName: "_queryDefinitions" }] : /* istanbul ignore next */ []));
1154
+ /** @protected Definitions that may be added without creating duplicate or disabled fields. */
1155
+ _addableDefinitions = computed(() => {
1156
+ const visible = new Set(this._queryDefinitions().map((definition) => definition.key));
1157
+ const query = normalizeForMatch$1(this._availableSearch().trim());
1158
+ return this.definitions().filter((definition) => !definition.disabled &&
1159
+ !visible.has(definition.key) &&
1160
+ (!query || normalizeForMatch$1(definition.label).includes(query)));
1161
+ }, /* @ts-ignore */
1162
+ ...(ngDevMode ? [{ debugName: "_addableDefinitions" }] : /* istanbul ignore next */ []));
1163
+ /** Number of filter fields currently visible. */
1164
+ visibleFilterCount = computed(() => this.visibleDefinitions().length, /* @ts-ignore */
1165
+ ...(ngDevMode ? [{ debugName: "visibleFilterCount" }] : /* istanbul ignore next */ []));
1166
+ /** Number of fields with at least one applied condition. */
1167
+ appliedFilterCount = computed(() => this.filters().filter((state) => state.conditions.some(isConditionMeaningful)).length, /* @ts-ignore */
1168
+ ...(ngDevMode ? [{ debugName: "appliedFilterCount" }] : /* istanbul ignore next */ []));
1169
+ /** @protected Required definitions without an applied, meaningful condition. */
1170
+ _missingRequiredDefinitions = computed(() => {
1171
+ const states = new Map(this.filters().map((state) => [state.key, state]));
1172
+ return this.definitions().filter((definition) => {
1173
+ if (!definition.required)
1174
+ return false;
1175
+ return !states
1176
+ .get(definition.key)
1177
+ ?.conditions.some(isConditionMeaningful);
1178
+ });
1179
+ }, /* @ts-ignore */
1180
+ ...(ngDevMode ? [{ debugName: "_missingRequiredDefinitions" }] : /* istanbul ignore next */ []));
1181
+ /** @protected Whether required-field errors should currently be rendered. */
1182
+ _showRequiredErrors = computed(() => this._validationAttempted() &&
1183
+ this._missingRequiredDefinitions().length > 0, /* @ts-ignore */
1184
+ ...(ngDevMode ? [{ debugName: "_showRequiredErrors" }] : /* istanbul ignore next */ []));
1185
+ /** @protected Whether search or any structured condition is active. */
1186
+ _hasState = computed(() => this.searchValue().length > 0 || this.appliedFilterCount() > 0, /* @ts-ignore */
1187
+ ...(ngDevMode ? [{ debugName: "_hasState" }] : /* istanbul ignore next */ []));
1188
+ /** @protected Definitions matching the available-filter search. */
1189
+ _filteredDefinitions = computed(() => {
1190
+ const query = normalizeForMatch$1(this._availableSearch().trim());
1191
+ if (!query)
1192
+ return this.definitions();
1193
+ return this.definitions().filter((definition) => normalizeForMatch$1(definition.label).includes(query));
1194
+ }, /* @ts-ignore */
1195
+ ...(ngDevMode ? [{ debugName: "_filteredDefinitions" }] : /* istanbul ignore next */ []));
1196
+ /** @protected Parameterized label for the filter-management action. */
1197
+ _filtersLabel = computed(() => this._resolveMessage('filters', { count: this.visibleFilterCount() }), /* @ts-ignore */
1198
+ ...(ngDevMode ? [{ debugName: "_filtersLabel" }] : /* istanbul ignore next */ []));
1199
+ /** @protected Parameterized status for fields with applied values. */
1200
+ _appliedFiltersLabel = computed(() => this._resolveMessage('filters', { count: this.appliedFilterCount() }), /* @ts-ignore */
1201
+ ...(ngDevMode ? [{ debugName: "_appliedFiltersLabel" }] : /* istanbul ignore next */ []));
1202
+ /** @protected Parameterized heading for the available-filter list. */
1203
+ _availableFiltersLabel = computed(() => this._resolveMessage('availableFilters', {
1204
+ count: this.definitions().length,
1205
+ }), /* @ts-ignore */
1206
+ ...(ngDevMode ? [{ debugName: "_availableFiltersLabel" }] : /* istanbul ignore next */ []));
1207
+ /** @protected Localized validation summary for all missing required fields. */
1208
+ _requiredFiltersMessage = computed(() => this._resolveMessage('requiredFilters', {
1209
+ count: this._missingRequiredDefinitions().length,
1210
+ }), /* @ts-ignore */
1211
+ ...(ngDevMode ? [{ debugName: "_requiredFiltersMessage" }] : /* istanbul ignore next */ []));
1212
+ constructor() {
1213
+ effect(() => {
1214
+ const definitions = this.definitions();
1215
+ if (definitions.length === 0 && !this._definitionsInitialized)
1216
+ return;
1217
+ const definitionKeys = definitions.map((definition) => definition.key);
1218
+ const allowedKeys = new Set(definitionKeys);
1219
+ const currentFilters = this.filters();
1220
+ const queryAddedKeys = this._queryAddedKeys();
1221
+ const stateByKey = new Map(currentFilters
1222
+ .filter((state) => allowedKeys.has(state.key))
1223
+ .map((state) => [state.key, state]));
1224
+ const normalizedFilters = definitions.flatMap((definition) => {
1225
+ const state = stateByKey.get(definition.key);
1226
+ return state ? [state] : [];
1227
+ });
1228
+ if (normalizedFilters.length !== currentFilters.length ||
1229
+ normalizedFilters.some((state, index) => state !== currentFilters[index])) {
1230
+ this.filters.set(cloneFieldStates(normalizedFilters));
1231
+ }
1232
+ const activeKeys = new Set(normalizedFilters
1233
+ .filter((state) => state.conditions.some(isConditionMeaningful))
1234
+ .map((state) => state.key));
1235
+ const currentVisible = this.visibleKeys();
1236
+ const requestedVisible = new Set(currentVisible.filter((key) => allowedKeys.has(key)));
1237
+ const initializeDefaults = !this._definitionsInitialized && currentVisible.length === 0;
1238
+ for (const definition of definitions) {
1239
+ const newlyAdded = !this._knownDefinitionKeys.has(definition.key);
1240
+ if (definition.required ||
1241
+ activeKeys.has(definition.key) ||
1242
+ (definition.defaultVisible &&
1243
+ (initializeDefaults ||
1244
+ (this._definitionsInitialized && newlyAdded)))) {
1245
+ requestedVisible.add(definition.key);
1246
+ }
1247
+ }
1248
+ const normalizedVisible = definitionKeys.filter((key) => requestedVisible.has(key));
1249
+ if (!stringArraysEqual(normalizedVisible, currentVisible)) {
1250
+ this.visibleKeys.set(normalizedVisible);
1251
+ }
1252
+ const normalizedQueryAddedKeys = queryAddedKeys.filter((key) => allowedKeys.has(key) && requestedVisible.has(key));
1253
+ if (!stringArraysEqual(normalizedQueryAddedKeys, queryAddedKeys)) {
1254
+ this._queryAddedKeys.set(normalizedQueryAddedKeys);
1255
+ }
1256
+ if (definitions.length > 0)
1257
+ this._definitionsInitialized = true;
1258
+ this._knownDefinitionKeys = allowedKeys;
1259
+ });
1260
+ }
1261
+ /** Executes the current search and structured-filter snapshot. */
1262
+ executeQuery() {
1263
+ if (this.disabled() || this.loading())
1264
+ return;
1265
+ if (!this._validateRequiredFilters())
1266
+ return;
1267
+ this.execute.emit(this._payload());
1268
+ }
1269
+ /** Requests fresh results using the current query snapshot. */
1270
+ refreshQuery() {
1271
+ if (this.disabled() || this.loading())
1272
+ return;
1273
+ if (!this._validateRequiredFilters())
1274
+ return;
1275
+ this.refresh.emit(this._payload());
1276
+ }
1277
+ /** Clears search and conditions while retaining the user's visible fields. */
1278
+ clear() {
1279
+ if (this.disabled() || this.loading())
1280
+ return;
1281
+ this._validationAttempted.set(false);
1282
+ this.searchValue.set('');
1283
+ this.filters.set([]);
1284
+ if (this.autoExecute())
1285
+ this.executeQuery();
1286
+ }
1287
+ /** Restores search, conditions, and visible fields to metadata defaults. */
1288
+ resetToDefaults() {
1289
+ if (this.disabled() || this.loading())
1290
+ return;
1291
+ this._validationAttempted.set(false);
1292
+ this.searchValue.set('');
1293
+ this.filters.set([]);
1294
+ this.visibleKeys.set(this._defaultVisibleKeys());
1295
+ this._availableSearch.set('');
1296
+ this.resetCompleted.emit();
1297
+ if (this.autoExecute())
1298
+ this.executeQuery();
1299
+ }
1300
+ /** @protected Updates search state and executes for submit or auto mode. */
1301
+ _onSearch(query) {
1302
+ this.searchValue.set(query);
1303
+ if (this.searchTrigger() === 'submit' || this.autoExecute()) {
1304
+ this.executeQuery();
1305
+ }
1306
+ }
1307
+ /** @protected Executes a staged live-search value immediately from Enter. */
1308
+ _onSearchEnter(event) {
1309
+ if (!(event instanceof KeyboardEvent) ||
1310
+ event.isComposing ||
1311
+ this.searchTrigger() !== 'live' ||
1312
+ this.autoExecute()) {
1313
+ return;
1314
+ }
1315
+ event.preventDefault();
1316
+ this.executeQuery();
1317
+ }
1318
+ /** @protected Updates the available-filter manager search. */
1319
+ _onAvailableSearch(query) {
1320
+ this._availableSearch.set(query);
1321
+ }
1322
+ /** @protected Focuses the searchable Add filter menu after its popup attaches. */
1323
+ _onAddOpened() {
1324
+ this._availableSearch.set('');
1325
+ queueMicrotask(() => {
1326
+ this._addPanel()
1327
+ ?.nativeElement.querySelector('input')
1328
+ ?.focus();
1329
+ });
1330
+ }
1331
+ /** @protected Clears transient Add filter search after its popup closes. */
1332
+ _onAddClosed() {
1333
+ this._availableSearch.set('');
1334
+ if (!this._pendingAddedKey())
1335
+ return;
1336
+ afterNextRender(() => {
1337
+ const pendingKey = this._pendingAddedKey();
1338
+ this._pendingAddedKey.set(undefined);
1339
+ const index = this._queryDefinitions().findIndex((definition) => definition.key === pendingKey);
1340
+ const host = this._filterHosts()[index]?.nativeElement;
1341
+ const trigger = host?.querySelector('.mlv-filter__trigger');
1342
+ const focusTarget = trigger ?? this._addButton()?.nativeElement;
1343
+ focusTarget?.focus();
1344
+ }, { injector: this._injector });
1345
+ }
1346
+ /** @protected Adds visibility only, then sends focus to the newly rendered field trigger. */
1347
+ _addQueryFilter(definition, trigger) {
1348
+ if (this.disabled() || this.loading() || definition.disabled)
1349
+ return;
1350
+ const requested = new Set(this.visibleKeys());
1351
+ requested.add(definition.key);
1352
+ this.visibleKeys.set(this.definitions()
1353
+ .map((candidate) => candidate.key)
1354
+ .filter((key) => requested.has(key)));
1355
+ this._queryAddedKeys.update((keys) => keys.includes(definition.key) ? keys : [...keys, definition.key]);
1356
+ this._pendingAddedKey.set(definition.key);
1357
+ trigger.close();
1358
+ }
1359
+ /** @protected Removes an optional query field's state and visibility. */
1360
+ _removeQueryFilter(definition) {
1361
+ if (this.disabled() || this.loading())
1362
+ return;
1363
+ this._replaceFieldState({
1364
+ key: definition.key,
1365
+ conditions: [],
1366
+ strategy: this._strategyFor(definition.key),
1367
+ });
1368
+ this._queryAddedKeys.update((keys) => keys.filter((key) => key !== definition.key));
1369
+ if (!definition.required) {
1370
+ this.visibleKeys.set(this.visibleKeys().filter((key) => key !== definition.key));
1371
+ }
1372
+ }
1373
+ /** @protected Clears search and all optional query fields while retaining required visibility. */
1374
+ _clearQuery() {
1375
+ if (this.disabled() || this.loading())
1376
+ return;
1377
+ this._validationAttempted.set(false);
1378
+ this.searchValue.set('');
1379
+ this.filters.set([]);
1380
+ this._queryAddedKeys.set([]);
1381
+ this.visibleKeys.set(this.definitions()
1382
+ .filter((definition) => definition.required)
1383
+ .map((definition) => definition.key));
1384
+ this._queueAutoExecute();
1385
+ }
1386
+ /** @protected Returns applied conditions for a definition key. */
1387
+ _conditionsFor(key) {
1388
+ return this.filters().find((state) => state.key === key)?.conditions ?? [];
1389
+ }
1390
+ /** @protected Resolves the value-editor template for one definition (exact key > key-less fallback > null). */
1391
+ _valueEditorFor(definition) {
1392
+ const editors = this._valueEditors();
1393
+ const exact = editors.find((editor) => editor.mlvFilterValueEditor() === definition.key);
1394
+ if (exact)
1395
+ return exact.templateRef;
1396
+ const fallback = editors.find((editor) => editor.mlvFilterValueEditor() === '');
1397
+ return fallback?.templateRef ?? null;
1398
+ }
1399
+ /** @protected Returns the applied strategy for a definition key. */
1400
+ _strategyFor(key) {
1401
+ return (this.filters().find((state) => state.key === key)?.strategy ??
1402
+ this.definitions().find((definition) => definition.key === key)
1403
+ ?.conditionStrategy ??
1404
+ 'or');
1405
+ }
1406
+ /** @protected Whether a definition permits more than one free-form condition. */
1407
+ _allowsMultipleConditions(definition) {
1408
+ if (definition.allowMultipleConditions !== undefined) {
1409
+ return definition.allowMultipleConditions;
1410
+ }
1411
+ return !(definition.editor === 'options' ||
1412
+ (definition.editor === undefined && (definition.options?.length ?? 0) > 0));
1413
+ }
1414
+ /** @protected Operators for a definition with the neutral default fallback. */
1415
+ _operatorsFor(definition) {
1416
+ return (definition.operators ?? [
1417
+ 'contains',
1418
+ 'not-contains',
1419
+ 'equals',
1420
+ 'not-equals',
1421
+ ]);
1422
+ }
1423
+ /** @protected Updates one field's conditions without disturbing other fields. */
1424
+ _setConditions(definition, conditions) {
1425
+ const state = this.filters().find((candidate) => candidate.key === definition.key);
1426
+ this._replaceFieldState({
1427
+ key: definition.key,
1428
+ conditions,
1429
+ strategy: state?.strategy ?? definition.conditionStrategy ?? 'or',
1430
+ });
1431
+ }
1432
+ /** @protected Updates one field's condition-combination strategy. */
1433
+ _setStrategy(definition, strategy) {
1434
+ this._replaceFieldState({
1435
+ key: definition.key,
1436
+ conditions: this._conditionsFor(definition.key),
1437
+ strategy,
1438
+ });
1439
+ }
1440
+ /** @protected Whether a field key is currently visible. */
1441
+ _isVisible(key) {
1442
+ return this._draftVisibleKeys().includes(key);
1443
+ }
1444
+ /** @protected Whether a field currently has an applied, meaningful condition. */
1445
+ _isActive(key) {
1446
+ return (this.filters()
1447
+ .find((state) => state.key === key)
1448
+ ?.conditions.some(isConditionMeaningful) ?? false);
1449
+ }
1450
+ /** @protected Stages a field for addition or removal from the filter row. */
1451
+ _setVisible(definition, visible) {
1452
+ if (this.disabled() || this.loading())
1453
+ return;
1454
+ if ((definition.required || this._isActive(definition.key)) && !visible) {
1455
+ return;
1456
+ }
1457
+ const keys = new Set(this._draftVisibleKeys());
1458
+ if (visible)
1459
+ keys.add(definition.key);
1460
+ else
1461
+ keys.delete(definition.key);
1462
+ const definitionOrder = this.definitions().map((candidate) => candidate.key);
1463
+ this._draftVisibleKeys.set(definitionOrder.filter((key) => keys.has(key)));
1464
+ }
1465
+ /** @protected Toggles the structured filter row. */
1466
+ _toggleFilters() {
1467
+ this.filtersVisible.update((visible) => !visible);
1468
+ }
1469
+ /** @protected Focuses the manager's search input after the popup attaches. */
1470
+ _onManagerOpened() {
1471
+ this._draftVisibleKeys.set([...this.visibleKeys()]);
1472
+ this._availableSearch.set('');
1473
+ queueMicrotask(() => {
1474
+ this._managerPanel()
1475
+ ?.nativeElement.querySelector('input')
1476
+ ?.focus();
1477
+ });
1478
+ }
1479
+ /** @protected Restores manager-trigger focus after an overlay action closes. */
1480
+ _onManagerClosed() {
1481
+ this._draftVisibleKeys.set([...this.visibleKeys()]);
1482
+ this._availableSearch.set('');
1483
+ queueMicrotask(() => this._managerButton()?.nativeElement.focus());
1484
+ }
1485
+ /** @protected Stages the metadata default field selection in the manager. */
1486
+ _resetManagerSelection() {
1487
+ if (this.disabled() || this.loading())
1488
+ return;
1489
+ this._draftVisibleKeys.set(this._defaultVisibleKeys());
1490
+ }
1491
+ /** @protected Discards manager edits and closes its popup. */
1492
+ _cancelManager(trigger) {
1493
+ this._draftVisibleKeys.set([...this.visibleKeys()]);
1494
+ trigger.close();
1495
+ }
1496
+ /** @protected Commits staged manager edits and closes its popup. */
1497
+ _applyManager(trigger) {
1498
+ if (this.disabled() || this.loading())
1499
+ return;
1500
+ const staged = new Set(this._draftVisibleKeys());
1501
+ this.definitions()
1502
+ .filter((definition) => definition.required || this._isActive(definition.key))
1503
+ .forEach((definition) => staged.add(definition.key));
1504
+ this.visibleKeys.set(this.definitions()
1505
+ .map((definition) => definition.key)
1506
+ .filter((key) => staged.has(key)));
1507
+ trigger.close();
1508
+ }
1509
+ /** @private Replaces or removes one field state and optionally auto-executes. */
1510
+ _replaceFieldState(state) {
1511
+ const remaining = this.filters().filter((candidate) => candidate.key !== state.key);
1512
+ const next = state.conditions.length > 0 ? [...remaining, state] : remaining;
1513
+ const order = this.definitions().map((definition) => definition.key);
1514
+ next.sort((a, b) => order.indexOf(a.key) - order.indexOf(b.key));
1515
+ this.filters.set(cloneFieldStates(next));
1516
+ this._queueAutoExecute();
1517
+ }
1518
+ /** @private Schedules one auto execution for the current microtask. */
1519
+ _queueAutoExecute() {
1520
+ if (this.appearance() === 'query' &&
1521
+ this.filterApplyMode() === 'explicit') {
1522
+ return;
1523
+ }
1524
+ if (!this.autoExecute() || this._autoExecuteQueued)
1525
+ return;
1526
+ this._autoExecuteQueued = true;
1527
+ queueMicrotask(() => {
1528
+ this._autoExecuteQueued = false;
1529
+ this.executeQuery();
1530
+ });
1531
+ }
1532
+ /** @private Default-visible keys, always including required definitions. */
1533
+ _defaultVisibleKeys() {
1534
+ return this.definitions()
1535
+ .filter((definition) => definition.required ||
1536
+ definition.defaultVisible ||
1537
+ this._isActive(definition.key))
1538
+ .map((definition) => definition.key);
1539
+ }
1540
+ /** @protected Whether a required field should currently expose an error. */
1541
+ _isRequiredMissing(definition) {
1542
+ return (this._showRequiredErrors() &&
1543
+ this._missingRequiredDefinitions().some((candidate) => candidate.key === definition.key));
1544
+ }
1545
+ /** @protected Stable id for one field-level validation message. */
1546
+ _requiredErrorId(definition) {
1547
+ const index = this.definitions().findIndex((candidate) => candidate.key === definition.key);
1548
+ return `${this._validationSummaryId}-field-${Math.max(0, index)}`;
1549
+ }
1550
+ /** @protected Localized field-level validation message. */
1551
+ _requiredFilterMessage(definition) {
1552
+ return this._resolveMessage('requiredFilter', { label: definition.label });
1553
+ }
1554
+ /** @private Blocks execution and focuses the first incomplete required field. */
1555
+ _validateRequiredFilters() {
1556
+ const missing = this._missingRequiredDefinitions();
1557
+ if (missing.length === 0) {
1558
+ this._validationAttempted.set(false);
1559
+ return true;
1560
+ }
1561
+ this._validationAttempted.set(true);
1562
+ this.filtersVisible.set(true);
1563
+ queueMicrotask(() => {
1564
+ const firstMissingKey = this._missingRequiredDefinitions()[0]?.key;
1565
+ const index = this.visibleDefinitions().findIndex((definition) => definition.key === firstMissingKey);
1566
+ const host = this._filterHosts()[index]?.nativeElement;
1567
+ host?.querySelector('.mlv-filter__trigger')?.focus();
1568
+ });
1569
+ return false;
1570
+ }
1571
+ /** @private Builds a defensive execution snapshot. */
1572
+ _payload() {
1573
+ return {
1574
+ search: this.searchValue(),
1575
+ filters: cloneFieldStates(this.filters()),
1576
+ visibleKeys: [...this.visibleKeys()],
1577
+ expression: mlvFilterFieldsToExpression(cloneFieldStates(this.filters())),
1578
+ };
1579
+ }
1580
+ /** @private Resolves one ICU message from the filter translation slice. */
1581
+ _resolveMessage(key, params) {
1582
+ return this._resolver.resolve(this._i18n(), key, params);
1583
+ }
1584
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: MlvSmartFilterBar, deps: [], target: i0.ɵɵFactoryTarget.Component });
1585
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.7", type: MlvSmartFilterBar, isStandalone: true, selector: "mlv-smart-filter-bar", inputs: { definitions: { classPropertyName: "definitions", publicName: "definitions", isSignal: true, isRequired: true, transformFunction: null }, filters: { classPropertyName: "filters", publicName: "filters", isSignal: true, isRequired: false, transformFunction: null }, appearance: { classPropertyName: "appearance", publicName: "appearance", isSignal: true, isRequired: false, transformFunction: null }, visibleKeys: { classPropertyName: "visibleKeys", publicName: "visibleKeys", isSignal: true, isRequired: false, transformFunction: null }, searchValue: { classPropertyName: "searchValue", publicName: "searchValue", isSignal: true, isRequired: false, transformFunction: null }, searchTrigger: { classPropertyName: "searchTrigger", publicName: "searchTrigger", isSignal: true, isRequired: false, transformFunction: null }, searchDebounce: { classPropertyName: "searchDebounce", publicName: "searchDebounce", isSignal: true, isRequired: false, transformFunction: null }, filterApplyMode: { classPropertyName: "filterApplyMode", publicName: "filterApplyMode", isSignal: true, isRequired: false, transformFunction: null }, autoExecute: { classPropertyName: "autoExecute", publicName: "autoExecute", isSignal: true, isRequired: false, transformFunction: null }, filtersVisible: { classPropertyName: "filtersVisible", publicName: "filtersVisible", isSignal: true, isRequired: false, transformFunction: null }, showSearch: { classPropertyName: "showSearch", publicName: "showSearch", isSignal: true, isRequired: false, transformFunction: null }, loading: { classPropertyName: "loading", publicName: "loading", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { filters: "filtersChange", visibleKeys: "visibleKeysChange", searchValue: "searchValueChange", filtersVisible: "filtersVisibleChange", execute: "execute", refresh: "refresh", resetCompleted: "resetCompleted" }, host: { properties: { "class.mlv-smart-filter-bar--collapsed": "!filtersVisible()", "class.mlv-smart-filter-bar--loading": "loading()", "class.mlv-smart-filter-bar--disabled": "disabled()", "class.mlv-smart-filter-bar--query": "appearance() === 'query'", "attr.aria-busy": "loading() || null" }, classAttribute: "mlv-smart-filter-bar" }, queries: [{ propertyName: "_valueEditors", predicate: MlvFilterValueEditorDef, descendants: true, isSignal: true }], viewQueries: [{ propertyName: "_managerPanel", first: true, predicate: ["managerPanel"], descendants: true, isSignal: true }, { propertyName: "_managerButton", first: true, predicate: ["managerButton"], descendants: true, read: ElementRef, isSignal: true }, { propertyName: "_addPanel", first: true, predicate: ["addPanel"], descendants: true, isSignal: true }, { propertyName: "_addButton", first: true, predicate: ["addButton"], descendants: true, read: ElementRef, isSignal: true }, { propertyName: "_filterHosts", predicate: MlvFilter, descendants: true, read: ElementRef, isSignal: true }], ngImport: i0, template: "@if (appearance() === 'classic') {\n<div class=\"mlv-smart-filter-bar__query-row\">\n @if (showSearch()) {\n <mlv-search-field\n class=\"mlv-smart-filter-bar__search\"\n [value]=\"searchValue()\"\n [trigger]=\"searchTrigger()\"\n [debounce]=\"searchDebounce()\"\n [commitOnClear]=\"autoExecute() || searchTrigger() === 'live'\"\n [disabled]=\"disabled() || loading()\"\n [loading]=\"loading()\"\n (valueChange)=\"searchValue.set($event)\"\n (search)=\"_onSearch($event)\"\n (keydown.enter)=\"_onSearchEnter($event)\"\n />\n }\n\n <div class=\"mlv-smart-filter-bar__primary-actions\">\n <button\n mlvButton\n type=\"button\"\n [disabled]=\"disabled() || loading()\"\n [loading]=\"loading()\"\n (click)=\"executeQuery()\"\n >\n {{ _i18n().go }}\n </button>\n\n <button\n mlvButton\n type=\"button\"\n variant=\"secondary\"\n shape=\"square\"\n [disabled]=\"disabled() || loading()\"\n [attr.aria-label]=\"_i18n().refresh\"\n (click)=\"refreshQuery()\"\n >\n <svg mlvButtonIcon lucideRefreshCw [size]=\"16\" aria-hidden=\"true\"></svg>\n </button>\n </div>\n</div>\n\n<div class=\"mlv-smart-filter-bar__filter-toolbar\">\n <div class=\"mlv-smart-filter-bar__filter-actions\">\n <button\n mlvButton\n type=\"button\"\n variant=\"transparent\"\n [disabled]=\"disabled() || loading()\"\n [attr.aria-expanded]=\"filtersVisible()\"\n [attr.aria-controls]=\"_filtersId\"\n (click)=\"_toggleFilters()\"\n >\n @if (filtersVisible()) {\n <svg mlvButtonIcon lucideChevronUp [size]=\"16\" aria-hidden=\"true\"></svg>\n {{ _i18n().hideFilters }} } @else {\n <svg mlvButtonIcon lucideChevronDown [size]=\"16\" aria-hidden=\"true\"></svg>\n {{ _i18n().showFilters }} }\n </button>\n\n <button\n #managerButton\n #managerTrigger=\"mlvPopupTrigger\"\n mlvButton\n type=\"button\"\n variant=\"transparent\"\n [mlvPopupTrigger]=\"managerPopup\"\n [ariaHasPopup]=\"'dialog'\"\n [disabled]=\"disabled() || loading()\"\n [attr.aria-label]=\"_i18n().manageFilters\"\n [attr.aria-controls]=\"_managerId\"\n >\n <svg mlvButtonIcon lucideSettings2 [size]=\"16\" aria-hidden=\"true\"></svg>\n {{ _filtersLabel() }}\n </button>\n\n @if (_hasState()) {\n <button\n mlvButton\n type=\"button\"\n variant=\"transparent\"\n [disabled]=\"disabled() || loading()\"\n (click)=\"clear()\"\n >\n {{ _i18n().clear }}\n </button>\n }\n </div>\n\n <span class=\"mlv-smart-filter-bar__status\" aria-live=\"polite\">\n {{ _appliedFiltersLabel() }}\n </span>\n</div>\n\n@if (_showRequiredErrors()) {\n<div\n class=\"mlv-smart-filter-bar__validation-summary\"\n [id]=\"_validationSummaryId\"\n role=\"alert\"\n>\n {{ _requiredFiltersMessage() }}\n</div>\n}\n\n<mlv-expand #panel [id]=\"_filtersId\" [opened]=\"filtersVisible()\">\n <div class=\"mlv-smart-filter-bar__filters\">\n @for (definition of visibleDefinitions(); track definition.key) {\n <div\n class=\"mlv-smart-filter-bar__field\"\n [class.mlv-smart-filter-bar__field--invalid]=\"\n _isRequiredMissing(definition)\n \"\n >\n <mlv-filter\n [key]=\"definition.key\"\n [label]=\"definition.label\"\n [editor]=\"definition.editor\"\n [options]=\"definition.options ?? []\"\n [operators]=\"_operatorsFor(definition)\"\n [operatorLabels]=\"definition.operatorLabels ?? {}\"\n [defaultOperator]=\"definition.defaultOperator ?? 'contains'\"\n [multiple]=\"definition.multiple ?? false\"\n [allowMultipleConditions]=\"_allowsMultipleConditions(definition)\"\n [placeholder]=\"definition.placeholder\"\n [applyMode]=\"filterApplyMode()\"\n [disabled]=\"\n disabled() || loading() || (definition.disabled ?? false)\n \"\n [loading]=\"loading()\"\n [invalid]=\"_isRequiredMissing(definition)\"\n [ariaDescribedBy]=\"\n _isRequiredMissing(definition)\n ? _requiredErrorId(definition)\n : undefined\n \"\n [valueEditor]=\"_valueEditorFor(definition)\"\n [conditions]=\"_conditionsFor(definition.key)\"\n [conditionStrategy]=\"_strategyFor(definition.key)\"\n (conditionsChange)=\"_setConditions(definition, $event)\"\n (conditionStrategyChange)=\"_setStrategy(definition, $event)\"\n />\n @if (_isRequiredMissing(definition)) {\n <span\n class=\"mlv-smart-filter-bar__field-error\"\n [id]=\"_requiredErrorId(definition)\"\n >\n {{ _requiredFilterMessage(definition) }}\n </span>\n }\n </div>\n }\n </div>\n</mlv-expand>\n\n<mlv-popup\n #managerPopup\n panelRole=\"dialog\"\n [modal]=\"true\"\n [ariaLabel]=\"_i18n().manageFilters\"\n [position]=\"['bottom-end', 'top-end']\"\n [hasShadow]=\"true\"\n minWidth=\"18rem\"\n maxWidth=\"28rem\"\n (afterOpened)=\"_onManagerOpened()\"\n (afterClosed)=\"_onManagerClosed()\"\n>\n <ng-template mlvPopupContent>\n <div #managerPanel class=\"mlv-smart-filter-bar__manager\" [id]=\"_managerId\">\n <div class=\"mlv-smart-filter-bar__manager-header\">\n <span class=\"mlv-smart-filter-bar__manager-title\">\n {{ _availableFiltersLabel() }}\n </span>\n <button\n mlvButton\n type=\"button\"\n variant=\"transparent\"\n [disabled]=\"disabled() || loading()\"\n (click)=\"_resetManagerSelection()\"\n >\n {{ _i18n().reset }}\n </button>\n </div>\n\n <mlv-search-field\n class=\"mlv-smart-filter-bar__manager-search\"\n trigger=\"live\"\n [debounce]=\"0\"\n [value]=\"_availableSearch()\"\n [placeholder]=\"_i18n().searchAvailableFilters\"\n [ariaLabel]=\"_i18n().searchAvailableFilters\"\n [disabled]=\"disabled() || loading()\"\n (valueChange)=\"_availableSearch.set($event)\"\n (search)=\"_onAvailableSearch($event)\"\n />\n\n <div\n class=\"mlv-smart-filter-bar__manager-list\"\n role=\"group\"\n [attr.aria-label]=\"_availableFiltersLabel()\"\n >\n @for (definition of _filteredDefinitions(); track definition.key) {\n <mlv-checkbox\n class=\"mlv-smart-filter-bar__manager-option\"\n [checked]=\"_isVisible(definition.key)\"\n [disabled]=\"\n disabled() ||\n loading() ||\n (definition.required ?? false) ||\n _isActive(definition.key)\n \"\n (checkedChange)=\"_setVisible(definition, $event)\"\n >\n <span class=\"mlv-smart-filter-bar__manager-option-label\">\n {{ definition.label }}\n </span>\n @if (definition.required) {\n <span class=\"mlv-smart-filter-bar__manager-option-status\">\n {{ _i18n().required }}\n </span>\n } @if (_isActive(definition.key)) {\n <span class=\"mlv-smart-filter-bar__manager-option-status\">\n {{ _i18n().active }}\n </span>\n }\n </mlv-checkbox>\n }\n </div>\n\n <div class=\"mlv-smart-filter-bar__manager-footer\">\n <button\n mlvButton\n type=\"button\"\n variant=\"transparent\"\n [disabled]=\"disabled() || loading()\"\n (click)=\"_cancelManager(managerTrigger)\"\n >\n {{ _i18n().cancel }}\n </button>\n <button\n mlvButton\n type=\"button\"\n [disabled]=\"disabled() || loading()\"\n (click)=\"_applyManager(managerTrigger)\"\n >\n {{ _i18n().apply }}\n </button>\n </div>\n </div>\n </ng-template>\n</mlv-popup>\n} @else {\n<div class=\"mlv-smart-filter-bar__query-filters\">\n @if (showSearch()) {\n <mlv-search-field\n class=\"mlv-smart-filter-bar__query-search\"\n [value]=\"searchValue()\"\n [trigger]=\"searchTrigger()\"\n [debounce]=\"searchDebounce()\"\n [commitOnClear]=\"autoExecute() || searchTrigger() === 'live'\"\n [disabled]=\"disabled() || loading()\"\n [loading]=\"loading()\"\n (valueChange)=\"searchValue.set($event)\"\n (search)=\"_onSearch($event)\"\n (keydown.enter)=\"_onSearchEnter($event)\"\n />\n } @for (definition of _queryDefinitions(); track definition.key) {\n <div class=\"mlv-smart-filter-bar__query-field\">\n <mlv-filter\n [key]=\"definition.key\"\n appearance=\"query\"\n [queryRemovable]=\"!definition.required\"\n [label]=\"definition.label\"\n [editor]=\"definition.editor\"\n [options]=\"definition.options ?? []\"\n [operators]=\"_operatorsFor(definition)\"\n [operatorLabels]=\"definition.operatorLabels ?? {}\"\n [defaultOperator]=\"definition.defaultOperator ?? 'contains'\"\n [multiple]=\"definition.multiple ?? false\"\n [allowMultipleConditions]=\"_allowsMultipleConditions(definition)\"\n [placeholder]=\"definition.placeholder\"\n [applyMode]=\"filterApplyMode()\"\n [disabled]=\"disabled() || loading() || (definition.disabled ?? false)\"\n [loading]=\"loading()\"\n [invalid]=\"_isRequiredMissing(definition)\"\n [ariaDescribedBy]=\"\n _isRequiredMissing(definition)\n ? _requiredErrorId(definition)\n : undefined\n \"\n [valueEditor]=\"_valueEditorFor(definition)\"\n [conditions]=\"_conditionsFor(definition.key)\"\n [conditionStrategy]=\"_strategyFor(definition.key)\"\n (conditionsChange)=\"_setConditions(definition, $event)\"\n (conditionStrategyChange)=\"_setStrategy(definition, $event)\"\n (cleared)=\"_removeQueryFilter(definition)\"\n />\n @if (_isRequiredMissing(definition)) {\n <span\n class=\"mlv-smart-filter-bar__field-error\"\n [id]=\"_requiredErrorId(definition)\"\n >\n {{ _requiredFilterMessage(definition) }}\n </span>\n }\n </div>\n }\n\n <button\n #addButton\n #addTrigger=\"mlvPopupTrigger\"\n mlvButton\n type=\"button\"\n variant=\"transparent\"\n class=\"mlv-smart-filter-bar__add\"\n [mlvPopupTrigger]=\"addPopup\"\n [ariaHasPopup]=\"'dialog'\"\n [disabled]=\"disabled() || loading()\"\n >\n <svg mlvButtonIcon lucidePlus [size]=\"14\" aria-hidden=\"true\"></svg>\n {{ _i18n().addFilter }}\n </button>\n\n @if (_hasState()) {\n <button\n mlvButton\n type=\"button\"\n variant=\"transparent\"\n class=\"mlv-smart-filter-bar__clear-all\"\n [disabled]=\"disabled() || loading()\"\n (click)=\"_clearQuery()\"\n >\n {{ _i18n().clearAll }}\n </button>\n } @if (filterApplyMode() === 'explicit') {\n <button\n mlvButton\n type=\"button\"\n class=\"mlv-smart-filter-bar__apply-query\"\n [disabled]=\"disabled() || loading()\"\n (click)=\"executeQuery()\"\n >\n {{ _i18n().apply }}\n </button>\n }\n</div>\n\n@if (_showRequiredErrors()) {\n<div\n class=\"mlv-smart-filter-bar__validation-summary\"\n [id]=\"_validationSummaryId\"\n role=\"alert\"\n>\n {{ _requiredFiltersMessage() }}\n</div>\n}\n\n<mlv-popup\n #addPopup\n panelRole=\"dialog\"\n [ariaLabel]=\"_i18n().addFilter\"\n [position]=\"['bottom-start', 'top-start']\"\n [hasShadow]=\"true\"\n minWidth=\"14rem\"\n maxWidth=\"28rem\"\n (afterOpened)=\"_onAddOpened()\"\n (afterClosed)=\"_onAddClosed()\"\n>\n <ng-template mlvPopupContent>\n <div #addPanel class=\"mlv-smart-filter-bar__add-menu\">\n <mlv-search-field\n class=\"mlv-smart-filter-bar__add-search\"\n trigger=\"live\"\n [debounce]=\"0\"\n [value]=\"_availableSearch()\"\n [placeholder]=\"_i18n().searchAvailableFilters\"\n [ariaLabel]=\"_i18n().searchAvailableFilters\"\n [disabled]=\"disabled() || loading()\"\n (valueChange)=\"_availableSearch.set($event)\"\n (search)=\"_onAvailableSearch($event)\"\n />\n <ul class=\"mlv-smart-filter-bar__add-list\">\n @for (definition of _addableDefinitions(); track definition.key) {\n <li class=\"mlv-smart-filter-bar__add-item\">\n <button\n mlvButton\n type=\"button\"\n variant=\"transparent\"\n class=\"mlv-smart-filter-bar__add-option\"\n [disabled]=\"disabled() || loading()\"\n (click)=\"_addQueryFilter(definition, addTrigger)\"\n >\n {{ definition.label }}\n </button>\n </li>\n } @empty {\n <li class=\"mlv-smart-filter-bar__add-empty\">\n {{ _i18n().noFiltersAvailable }}\n </li>\n }\n </ul>\n </div>\n </ng-template>\n</mlv-popup>\n}\n", styles: ["@layer mlv.components{.mlv-smart-filter-bar{box-sizing:border-box;padding:0;margin:0;font-family:var(--mlv-typography-family-text);font-size:var(--mlv-typography-body-m-size)}.mlv-smart-filter-bar *{box-sizing:border-box}.mlv-smart-filter-bar{--mlv-smart-filter-bar-gap: var(--mlv-spacing-3);display:flex;width:100%;min-width:0;flex-direction:column;gap:var(--mlv-smart-filter-bar-gap);padding:var(--mlv-spacing-4);border:.0625rem solid var(--mlv-border-subtle);border-radius:var(--mlv-radius-panel);background-color:var(--mlv-background-raised)}.mlv-smart-filter-bar__query-row,.mlv-smart-filter-bar__filter-toolbar{display:flex;min-width:0;align-items:center;justify-content:space-between;gap:var(--mlv-smart-filter-bar-gap)}.mlv-smart-filter-bar__search{width:min(32rem,100%);min-width:12rem}.mlv-smart-filter-bar__primary-actions,.mlv-smart-filter-bar__filter-actions{display:inline-flex;flex:none;align-items:center;gap:var(--mlv-spacing-1)}.mlv-smart-filter-bar__filter-toolbar{justify-content:flex-end;padding-top:var(--mlv-spacing-1);border-top:.0625rem solid var(--mlv-border-subtle)}.mlv-smart-filter-bar__filters{display:flex;flex-wrap:wrap;align-items:flex-start;gap:var(--mlv-spacing-2);padding-block:var(--mlv-spacing-1)}.mlv-smart-filter-bar__filters[hidden]{display:none}.mlv-smart-filter-bar__query-filters{display:flex;min-width:0;flex-wrap:wrap;align-items:center;gap:var(--mlv-smart-filter-bar-gap)}.mlv-smart-filter-bar__query-search{width:min(24rem,100%);min-width:12rem}.mlv-smart-filter-bar__query-field{display:flex;min-width:0;max-width:100%;flex-direction:column;gap:var(--mlv-spacing-1)}.mlv-smart-filter-bar__add{--mlv-btn-height: var(--mlv-height-xs);--mlv-btn-padding: var(--mlv-padding-xs);flex:none;border:var(--mlv-stroke-width) dashed var(--mlv-border-normal)}.mlv-smart-filter-bar__clear-all,.mlv-smart-filter-bar__apply-query{flex:none}.mlv-smart-filter-bar__add-menu{display:flex;width:min(20rem,100vw - 2rem);max-width:100%;flex-direction:column;padding:var(--mlv-spacing-2);gap:var(--mlv-spacing-1-5)}.mlv-smart-filter-bar__add-list{display:flex;max-height:18rem;flex-direction:column;gap:var(--mlv-spacing-0-5);overflow-y:auto;padding:0;margin:0;list-style:none}.mlv-smart-filter-bar__add-option{width:100%;justify-content:flex-start}.mlv-smart-filter-bar__add-empty{padding:var(--mlv-spacing-2);color:var(--mlv-text-secondary)}.mlv-smart-filter-bar__field{display:flex;max-width:100%;flex-direction:column;align-items:flex-start;gap:var(--mlv-spacing-1)}.mlv-smart-filter-bar__validation-summary{padding:var(--mlv-spacing-2) var(--mlv-spacing-2-5);border:.0625rem solid var(--mlv-border-error);border-radius:var(--mlv-radius-m);background-color:var(--mlv-background-danger-1-pale);color:var(--mlv-text-error);font-size:var(--mlv-typography-error-size);font-weight:var(--mlv-typography-error-weight);line-height:var(--mlv-typography-error-line-height)}.mlv-smart-filter-bar__field-error{color:var(--mlv-text-error);font-size:var(--mlv-typography-error-size);font-weight:var(--mlv-typography-error-weight);line-height:var(--mlv-typography-error-line-height)}.mlv-smart-filter-bar__status{position:absolute;width:.0625rem;height:.0625rem;padding:0;margin:-.0625rem;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.mlv-smart-filter-bar__manager{display:flex;width:min(26rem,100vw - 2rem);max-width:100%;flex-direction:column}.mlv-smart-filter-bar__manager-header,.mlv-smart-filter-bar__manager-footer{display:flex;align-items:center;justify-content:space-between;gap:var(--mlv-spacing-2);padding:var(--mlv-spacing-2-5) var(--mlv-spacing-3)}.mlv-smart-filter-bar__manager-header{border-bottom:.0625rem solid var(--mlv-border-subtle)}.mlv-smart-filter-bar__manager-footer{justify-content:flex-end;border-top:.0625rem solid var(--mlv-border-subtle)}.mlv-smart-filter-bar__manager-title{color:var(--mlv-text-primary);font-weight:600}.mlv-smart-filter-bar__manager-search{margin:var(--mlv-spacing-3) var(--mlv-spacing-3) var(--mlv-spacing-1-5)}.mlv-smart-filter-bar__manager-list{display:flex;max-height:18rem;flex-direction:column;gap:var(--mlv-spacing-1);overflow-y:auto;padding:var(--mlv-spacing-1-5) var(--mlv-spacing-3) var(--mlv-spacing-3)}.mlv-smart-filter-bar__manager-option{width:100%}.mlv-smart-filter-bar__manager-option-label{margin-inline-end:var(--mlv-spacing-1-5)}.mlv-smart-filter-bar__manager-option-status{display:inline-flex;padding:.0625rem var(--mlv-spacing-1-5);border-radius:var(--mlv-radius-full);background-color:var(--mlv-background-neutral-2);color:var(--mlv-text-secondary);font-size:var(--mlv-typography-body-s-size);font-weight:var(--mlv-typography-body-s-weight);line-height:var(--mlv-typography-body-s-line-height);white-space:nowrap}.mlv-smart-filter-bar__manager-option-status+.mlv-smart-filter-bar__manager-option-status{margin-inline-start:var(--mlv-spacing-1)}.mlv-smart-filter-bar--loading{cursor:progress}.mlv-smart-filter-bar--disabled{opacity:var(--mlv-disabled-opacity)}@media(max-width:42rem){.mlv-smart-filter-bar__query-row{align-items:stretch;flex-direction:column}.mlv-smart-filter-bar__search{width:100%;min-width:0}.mlv-smart-filter-bar__primary-actions{justify-content:flex-end}.mlv-smart-filter-bar__filter-toolbar{align-items:flex-start}.mlv-smart-filter-bar__filter-actions{flex-wrap:wrap;justify-content:flex-end}.mlv-smart-filter-bar__query-search{width:100%;min-width:100%}}@media(prefers-reduced-motion:reduce){.mlv-smart-filter-bar,.mlv-smart-filter-bar *,.mlv-smart-filter-bar:before,.mlv-smart-filter-bar:after,[class^=mlv-smart-filter-bar__],[class*=\" mlv-smart-filter-bar__\"],[class^=mlv-smart-filter-bar--],[class*=\" mlv-smart-filter-bar--\"]{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", "selected"] }, { kind: "directive", type: MlvButtonIcon, selector: "[mlvButtonIcon]" }, { kind: "component", type: MlvCheckbox, selector: "mlv-checkbox", inputs: ["ariaLabelledBy", "checked", "indeterminate", "tabbable"], outputs: ["checkedChange"] }, { kind: "component", type: MlvFilter, selector: "mlv-filter", inputs: ["label", "key", "appearance", "queryRemovable", "options", "editor", "multiple", "allowMultipleConditions", "operators", "operatorLabels", "defaultOperator", "placeholder", "applyMode", "disabled", "loading", "invalid", "ariaDescribedBy", "valueEditor", "conditions", "conditionStrategy", "opened"], outputs: ["conditionsChange", "conditionStrategyChange", "openedChange", "applied", "cleared"] }, { kind: "component", type: MlvPopup, selector: "mlv-popup", inputs: ["position", "positions", "width", "height", "minWidth", "minHeight", "maxWidth", "maxHeight", "hasArrow", "hasShadow", "class", "mlvDensity", "flexibleDimensions", "scrollStrategy", "hasBackdrop", "restrictPosition", "panelRole", "modal", "ariaLabel", "dismissExcludeElements", "mobileMode", "mobileBreakpoint", "mobileTitle", "mobileCloseLabel", "opened"], outputs: ["openedChange", "afterOpened", "afterClosed"] }, { kind: "directive", type: MlvPopupContent, selector: "[mlvPopupContent]" }, { kind: "directive", type: MlvPopupTrigger, selector: "[mlvPopupTrigger]", inputs: ["mlvPopupTrigger", "triggerOn", "ariaHasPopup"], exportAs: ["mlvPopupTrigger"] }, { kind: "component", type: MlvSearchField, selector: "mlv-search-field", inputs: ["value", "trigger", "debounce", "placeholder", "ariaLabel", "disabled", "loading", "showSubmit", "clearable", "commitOnClear", "presentation", "overlay", "role", "ariaControls", "ariaActiveDescendant", "ariaAutocomplete", "ariaExpanded"], outputs: ["valueChange", "search", "navigate", "commit"] }, { kind: "component", type: LucideChevronDown, selector: "svg[lucideChevronDown]" }, { kind: "component", type: LucideChevronUp, selector: "svg[lucideChevronUp]" }, { kind: "component", type: LucidePlus, selector: "svg[lucidePlus]" }, { kind: "component", type: LucideRefreshCw, selector: "svg[lucideRefreshCw]" }, { kind: "component", type: LucideSettings2, selector: "svg[lucideSettings2]" }, { kind: "component", type: MlvExpand, selector: "mlv-expand", inputs: ["opened", "disabled", "ariaLabel", "ariaLabelledBy"], outputs: ["openedChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
1586
+ }
1587
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: MlvSmartFilterBar, decorators: [{
1588
+ type: Component,
1589
+ args: [{ selector: 'mlv-smart-filter-bar', imports: [
1590
+ MlvButton,
1591
+ MlvButtonIcon,
1592
+ MlvCheckbox,
1593
+ MlvFilter,
1594
+ MlvPopup,
1595
+ MlvPopupContent,
1596
+ MlvPopupTrigger,
1597
+ MlvSearchField,
1598
+ LucideChevronDown,
1599
+ LucideChevronUp,
1600
+ LucidePlus,
1601
+ LucideRefreshCw,
1602
+ LucideSettings2,
1603
+ MlvExpand,
1604
+ ], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, host: {
1605
+ class: 'mlv-smart-filter-bar',
1606
+ '[class.mlv-smart-filter-bar--collapsed]': '!filtersVisible()',
1607
+ '[class.mlv-smart-filter-bar--loading]': 'loading()',
1608
+ '[class.mlv-smart-filter-bar--disabled]': 'disabled()',
1609
+ '[class.mlv-smart-filter-bar--query]': "appearance() === 'query'",
1610
+ '[attr.aria-busy]': 'loading() || null',
1611
+ }, template: "@if (appearance() === 'classic') {\n<div class=\"mlv-smart-filter-bar__query-row\">\n @if (showSearch()) {\n <mlv-search-field\n class=\"mlv-smart-filter-bar__search\"\n [value]=\"searchValue()\"\n [trigger]=\"searchTrigger()\"\n [debounce]=\"searchDebounce()\"\n [commitOnClear]=\"autoExecute() || searchTrigger() === 'live'\"\n [disabled]=\"disabled() || loading()\"\n [loading]=\"loading()\"\n (valueChange)=\"searchValue.set($event)\"\n (search)=\"_onSearch($event)\"\n (keydown.enter)=\"_onSearchEnter($event)\"\n />\n }\n\n <div class=\"mlv-smart-filter-bar__primary-actions\">\n <button\n mlvButton\n type=\"button\"\n [disabled]=\"disabled() || loading()\"\n [loading]=\"loading()\"\n (click)=\"executeQuery()\"\n >\n {{ _i18n().go }}\n </button>\n\n <button\n mlvButton\n type=\"button\"\n variant=\"secondary\"\n shape=\"square\"\n [disabled]=\"disabled() || loading()\"\n [attr.aria-label]=\"_i18n().refresh\"\n (click)=\"refreshQuery()\"\n >\n <svg mlvButtonIcon lucideRefreshCw [size]=\"16\" aria-hidden=\"true\"></svg>\n </button>\n </div>\n</div>\n\n<div class=\"mlv-smart-filter-bar__filter-toolbar\">\n <div class=\"mlv-smart-filter-bar__filter-actions\">\n <button\n mlvButton\n type=\"button\"\n variant=\"transparent\"\n [disabled]=\"disabled() || loading()\"\n [attr.aria-expanded]=\"filtersVisible()\"\n [attr.aria-controls]=\"_filtersId\"\n (click)=\"_toggleFilters()\"\n >\n @if (filtersVisible()) {\n <svg mlvButtonIcon lucideChevronUp [size]=\"16\" aria-hidden=\"true\"></svg>\n {{ _i18n().hideFilters }} } @else {\n <svg mlvButtonIcon lucideChevronDown [size]=\"16\" aria-hidden=\"true\"></svg>\n {{ _i18n().showFilters }} }\n </button>\n\n <button\n #managerButton\n #managerTrigger=\"mlvPopupTrigger\"\n mlvButton\n type=\"button\"\n variant=\"transparent\"\n [mlvPopupTrigger]=\"managerPopup\"\n [ariaHasPopup]=\"'dialog'\"\n [disabled]=\"disabled() || loading()\"\n [attr.aria-label]=\"_i18n().manageFilters\"\n [attr.aria-controls]=\"_managerId\"\n >\n <svg mlvButtonIcon lucideSettings2 [size]=\"16\" aria-hidden=\"true\"></svg>\n {{ _filtersLabel() }}\n </button>\n\n @if (_hasState()) {\n <button\n mlvButton\n type=\"button\"\n variant=\"transparent\"\n [disabled]=\"disabled() || loading()\"\n (click)=\"clear()\"\n >\n {{ _i18n().clear }}\n </button>\n }\n </div>\n\n <span class=\"mlv-smart-filter-bar__status\" aria-live=\"polite\">\n {{ _appliedFiltersLabel() }}\n </span>\n</div>\n\n@if (_showRequiredErrors()) {\n<div\n class=\"mlv-smart-filter-bar__validation-summary\"\n [id]=\"_validationSummaryId\"\n role=\"alert\"\n>\n {{ _requiredFiltersMessage() }}\n</div>\n}\n\n<mlv-expand #panel [id]=\"_filtersId\" [opened]=\"filtersVisible()\">\n <div class=\"mlv-smart-filter-bar__filters\">\n @for (definition of visibleDefinitions(); track definition.key) {\n <div\n class=\"mlv-smart-filter-bar__field\"\n [class.mlv-smart-filter-bar__field--invalid]=\"\n _isRequiredMissing(definition)\n \"\n >\n <mlv-filter\n [key]=\"definition.key\"\n [label]=\"definition.label\"\n [editor]=\"definition.editor\"\n [options]=\"definition.options ?? []\"\n [operators]=\"_operatorsFor(definition)\"\n [operatorLabels]=\"definition.operatorLabels ?? {}\"\n [defaultOperator]=\"definition.defaultOperator ?? 'contains'\"\n [multiple]=\"definition.multiple ?? false\"\n [allowMultipleConditions]=\"_allowsMultipleConditions(definition)\"\n [placeholder]=\"definition.placeholder\"\n [applyMode]=\"filterApplyMode()\"\n [disabled]=\"\n disabled() || loading() || (definition.disabled ?? false)\n \"\n [loading]=\"loading()\"\n [invalid]=\"_isRequiredMissing(definition)\"\n [ariaDescribedBy]=\"\n _isRequiredMissing(definition)\n ? _requiredErrorId(definition)\n : undefined\n \"\n [valueEditor]=\"_valueEditorFor(definition)\"\n [conditions]=\"_conditionsFor(definition.key)\"\n [conditionStrategy]=\"_strategyFor(definition.key)\"\n (conditionsChange)=\"_setConditions(definition, $event)\"\n (conditionStrategyChange)=\"_setStrategy(definition, $event)\"\n />\n @if (_isRequiredMissing(definition)) {\n <span\n class=\"mlv-smart-filter-bar__field-error\"\n [id]=\"_requiredErrorId(definition)\"\n >\n {{ _requiredFilterMessage(definition) }}\n </span>\n }\n </div>\n }\n </div>\n</mlv-expand>\n\n<mlv-popup\n #managerPopup\n panelRole=\"dialog\"\n [modal]=\"true\"\n [ariaLabel]=\"_i18n().manageFilters\"\n [position]=\"['bottom-end', 'top-end']\"\n [hasShadow]=\"true\"\n minWidth=\"18rem\"\n maxWidth=\"28rem\"\n (afterOpened)=\"_onManagerOpened()\"\n (afterClosed)=\"_onManagerClosed()\"\n>\n <ng-template mlvPopupContent>\n <div #managerPanel class=\"mlv-smart-filter-bar__manager\" [id]=\"_managerId\">\n <div class=\"mlv-smart-filter-bar__manager-header\">\n <span class=\"mlv-smart-filter-bar__manager-title\">\n {{ _availableFiltersLabel() }}\n </span>\n <button\n mlvButton\n type=\"button\"\n variant=\"transparent\"\n [disabled]=\"disabled() || loading()\"\n (click)=\"_resetManagerSelection()\"\n >\n {{ _i18n().reset }}\n </button>\n </div>\n\n <mlv-search-field\n class=\"mlv-smart-filter-bar__manager-search\"\n trigger=\"live\"\n [debounce]=\"0\"\n [value]=\"_availableSearch()\"\n [placeholder]=\"_i18n().searchAvailableFilters\"\n [ariaLabel]=\"_i18n().searchAvailableFilters\"\n [disabled]=\"disabled() || loading()\"\n (valueChange)=\"_availableSearch.set($event)\"\n (search)=\"_onAvailableSearch($event)\"\n />\n\n <div\n class=\"mlv-smart-filter-bar__manager-list\"\n role=\"group\"\n [attr.aria-label]=\"_availableFiltersLabel()\"\n >\n @for (definition of _filteredDefinitions(); track definition.key) {\n <mlv-checkbox\n class=\"mlv-smart-filter-bar__manager-option\"\n [checked]=\"_isVisible(definition.key)\"\n [disabled]=\"\n disabled() ||\n loading() ||\n (definition.required ?? false) ||\n _isActive(definition.key)\n \"\n (checkedChange)=\"_setVisible(definition, $event)\"\n >\n <span class=\"mlv-smart-filter-bar__manager-option-label\">\n {{ definition.label }}\n </span>\n @if (definition.required) {\n <span class=\"mlv-smart-filter-bar__manager-option-status\">\n {{ _i18n().required }}\n </span>\n } @if (_isActive(definition.key)) {\n <span class=\"mlv-smart-filter-bar__manager-option-status\">\n {{ _i18n().active }}\n </span>\n }\n </mlv-checkbox>\n }\n </div>\n\n <div class=\"mlv-smart-filter-bar__manager-footer\">\n <button\n mlvButton\n type=\"button\"\n variant=\"transparent\"\n [disabled]=\"disabled() || loading()\"\n (click)=\"_cancelManager(managerTrigger)\"\n >\n {{ _i18n().cancel }}\n </button>\n <button\n mlvButton\n type=\"button\"\n [disabled]=\"disabled() || loading()\"\n (click)=\"_applyManager(managerTrigger)\"\n >\n {{ _i18n().apply }}\n </button>\n </div>\n </div>\n </ng-template>\n</mlv-popup>\n} @else {\n<div class=\"mlv-smart-filter-bar__query-filters\">\n @if (showSearch()) {\n <mlv-search-field\n class=\"mlv-smart-filter-bar__query-search\"\n [value]=\"searchValue()\"\n [trigger]=\"searchTrigger()\"\n [debounce]=\"searchDebounce()\"\n [commitOnClear]=\"autoExecute() || searchTrigger() === 'live'\"\n [disabled]=\"disabled() || loading()\"\n [loading]=\"loading()\"\n (valueChange)=\"searchValue.set($event)\"\n (search)=\"_onSearch($event)\"\n (keydown.enter)=\"_onSearchEnter($event)\"\n />\n } @for (definition of _queryDefinitions(); track definition.key) {\n <div class=\"mlv-smart-filter-bar__query-field\">\n <mlv-filter\n [key]=\"definition.key\"\n appearance=\"query\"\n [queryRemovable]=\"!definition.required\"\n [label]=\"definition.label\"\n [editor]=\"definition.editor\"\n [options]=\"definition.options ?? []\"\n [operators]=\"_operatorsFor(definition)\"\n [operatorLabels]=\"definition.operatorLabels ?? {}\"\n [defaultOperator]=\"definition.defaultOperator ?? 'contains'\"\n [multiple]=\"definition.multiple ?? false\"\n [allowMultipleConditions]=\"_allowsMultipleConditions(definition)\"\n [placeholder]=\"definition.placeholder\"\n [applyMode]=\"filterApplyMode()\"\n [disabled]=\"disabled() || loading() || (definition.disabled ?? false)\"\n [loading]=\"loading()\"\n [invalid]=\"_isRequiredMissing(definition)\"\n [ariaDescribedBy]=\"\n _isRequiredMissing(definition)\n ? _requiredErrorId(definition)\n : undefined\n \"\n [valueEditor]=\"_valueEditorFor(definition)\"\n [conditions]=\"_conditionsFor(definition.key)\"\n [conditionStrategy]=\"_strategyFor(definition.key)\"\n (conditionsChange)=\"_setConditions(definition, $event)\"\n (conditionStrategyChange)=\"_setStrategy(definition, $event)\"\n (cleared)=\"_removeQueryFilter(definition)\"\n />\n @if (_isRequiredMissing(definition)) {\n <span\n class=\"mlv-smart-filter-bar__field-error\"\n [id]=\"_requiredErrorId(definition)\"\n >\n {{ _requiredFilterMessage(definition) }}\n </span>\n }\n </div>\n }\n\n <button\n #addButton\n #addTrigger=\"mlvPopupTrigger\"\n mlvButton\n type=\"button\"\n variant=\"transparent\"\n class=\"mlv-smart-filter-bar__add\"\n [mlvPopupTrigger]=\"addPopup\"\n [ariaHasPopup]=\"'dialog'\"\n [disabled]=\"disabled() || loading()\"\n >\n <svg mlvButtonIcon lucidePlus [size]=\"14\" aria-hidden=\"true\"></svg>\n {{ _i18n().addFilter }}\n </button>\n\n @if (_hasState()) {\n <button\n mlvButton\n type=\"button\"\n variant=\"transparent\"\n class=\"mlv-smart-filter-bar__clear-all\"\n [disabled]=\"disabled() || loading()\"\n (click)=\"_clearQuery()\"\n >\n {{ _i18n().clearAll }}\n </button>\n } @if (filterApplyMode() === 'explicit') {\n <button\n mlvButton\n type=\"button\"\n class=\"mlv-smart-filter-bar__apply-query\"\n [disabled]=\"disabled() || loading()\"\n (click)=\"executeQuery()\"\n >\n {{ _i18n().apply }}\n </button>\n }\n</div>\n\n@if (_showRequiredErrors()) {\n<div\n class=\"mlv-smart-filter-bar__validation-summary\"\n [id]=\"_validationSummaryId\"\n role=\"alert\"\n>\n {{ _requiredFiltersMessage() }}\n</div>\n}\n\n<mlv-popup\n #addPopup\n panelRole=\"dialog\"\n [ariaLabel]=\"_i18n().addFilter\"\n [position]=\"['bottom-start', 'top-start']\"\n [hasShadow]=\"true\"\n minWidth=\"14rem\"\n maxWidth=\"28rem\"\n (afterOpened)=\"_onAddOpened()\"\n (afterClosed)=\"_onAddClosed()\"\n>\n <ng-template mlvPopupContent>\n <div #addPanel class=\"mlv-smart-filter-bar__add-menu\">\n <mlv-search-field\n class=\"mlv-smart-filter-bar__add-search\"\n trigger=\"live\"\n [debounce]=\"0\"\n [value]=\"_availableSearch()\"\n [placeholder]=\"_i18n().searchAvailableFilters\"\n [ariaLabel]=\"_i18n().searchAvailableFilters\"\n [disabled]=\"disabled() || loading()\"\n (valueChange)=\"_availableSearch.set($event)\"\n (search)=\"_onAvailableSearch($event)\"\n />\n <ul class=\"mlv-smart-filter-bar__add-list\">\n @for (definition of _addableDefinitions(); track definition.key) {\n <li class=\"mlv-smart-filter-bar__add-item\">\n <button\n mlvButton\n type=\"button\"\n variant=\"transparent\"\n class=\"mlv-smart-filter-bar__add-option\"\n [disabled]=\"disabled() || loading()\"\n (click)=\"_addQueryFilter(definition, addTrigger)\"\n >\n {{ definition.label }}\n </button>\n </li>\n } @empty {\n <li class=\"mlv-smart-filter-bar__add-empty\">\n {{ _i18n().noFiltersAvailable }}\n </li>\n }\n </ul>\n </div>\n </ng-template>\n</mlv-popup>\n}\n", styles: ["@layer mlv.components{.mlv-smart-filter-bar{box-sizing:border-box;padding:0;margin:0;font-family:var(--mlv-typography-family-text);font-size:var(--mlv-typography-body-m-size)}.mlv-smart-filter-bar *{box-sizing:border-box}.mlv-smart-filter-bar{--mlv-smart-filter-bar-gap: var(--mlv-spacing-3);display:flex;width:100%;min-width:0;flex-direction:column;gap:var(--mlv-smart-filter-bar-gap);padding:var(--mlv-spacing-4);border:.0625rem solid var(--mlv-border-subtle);border-radius:var(--mlv-radius-panel);background-color:var(--mlv-background-raised)}.mlv-smart-filter-bar__query-row,.mlv-smart-filter-bar__filter-toolbar{display:flex;min-width:0;align-items:center;justify-content:space-between;gap:var(--mlv-smart-filter-bar-gap)}.mlv-smart-filter-bar__search{width:min(32rem,100%);min-width:12rem}.mlv-smart-filter-bar__primary-actions,.mlv-smart-filter-bar__filter-actions{display:inline-flex;flex:none;align-items:center;gap:var(--mlv-spacing-1)}.mlv-smart-filter-bar__filter-toolbar{justify-content:flex-end;padding-top:var(--mlv-spacing-1);border-top:.0625rem solid var(--mlv-border-subtle)}.mlv-smart-filter-bar__filters{display:flex;flex-wrap:wrap;align-items:flex-start;gap:var(--mlv-spacing-2);padding-block:var(--mlv-spacing-1)}.mlv-smart-filter-bar__filters[hidden]{display:none}.mlv-smart-filter-bar__query-filters{display:flex;min-width:0;flex-wrap:wrap;align-items:center;gap:var(--mlv-smart-filter-bar-gap)}.mlv-smart-filter-bar__query-search{width:min(24rem,100%);min-width:12rem}.mlv-smart-filter-bar__query-field{display:flex;min-width:0;max-width:100%;flex-direction:column;gap:var(--mlv-spacing-1)}.mlv-smart-filter-bar__add{--mlv-btn-height: var(--mlv-height-xs);--mlv-btn-padding: var(--mlv-padding-xs);flex:none;border:var(--mlv-stroke-width) dashed var(--mlv-border-normal)}.mlv-smart-filter-bar__clear-all,.mlv-smart-filter-bar__apply-query{flex:none}.mlv-smart-filter-bar__add-menu{display:flex;width:min(20rem,100vw - 2rem);max-width:100%;flex-direction:column;padding:var(--mlv-spacing-2);gap:var(--mlv-spacing-1-5)}.mlv-smart-filter-bar__add-list{display:flex;max-height:18rem;flex-direction:column;gap:var(--mlv-spacing-0-5);overflow-y:auto;padding:0;margin:0;list-style:none}.mlv-smart-filter-bar__add-option{width:100%;justify-content:flex-start}.mlv-smart-filter-bar__add-empty{padding:var(--mlv-spacing-2);color:var(--mlv-text-secondary)}.mlv-smart-filter-bar__field{display:flex;max-width:100%;flex-direction:column;align-items:flex-start;gap:var(--mlv-spacing-1)}.mlv-smart-filter-bar__validation-summary{padding:var(--mlv-spacing-2) var(--mlv-spacing-2-5);border:.0625rem solid var(--mlv-border-error);border-radius:var(--mlv-radius-m);background-color:var(--mlv-background-danger-1-pale);color:var(--mlv-text-error);font-size:var(--mlv-typography-error-size);font-weight:var(--mlv-typography-error-weight);line-height:var(--mlv-typography-error-line-height)}.mlv-smart-filter-bar__field-error{color:var(--mlv-text-error);font-size:var(--mlv-typography-error-size);font-weight:var(--mlv-typography-error-weight);line-height:var(--mlv-typography-error-line-height)}.mlv-smart-filter-bar__status{position:absolute;width:.0625rem;height:.0625rem;padding:0;margin:-.0625rem;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.mlv-smart-filter-bar__manager{display:flex;width:min(26rem,100vw - 2rem);max-width:100%;flex-direction:column}.mlv-smart-filter-bar__manager-header,.mlv-smart-filter-bar__manager-footer{display:flex;align-items:center;justify-content:space-between;gap:var(--mlv-spacing-2);padding:var(--mlv-spacing-2-5) var(--mlv-spacing-3)}.mlv-smart-filter-bar__manager-header{border-bottom:.0625rem solid var(--mlv-border-subtle)}.mlv-smart-filter-bar__manager-footer{justify-content:flex-end;border-top:.0625rem solid var(--mlv-border-subtle)}.mlv-smart-filter-bar__manager-title{color:var(--mlv-text-primary);font-weight:600}.mlv-smart-filter-bar__manager-search{margin:var(--mlv-spacing-3) var(--mlv-spacing-3) var(--mlv-spacing-1-5)}.mlv-smart-filter-bar__manager-list{display:flex;max-height:18rem;flex-direction:column;gap:var(--mlv-spacing-1);overflow-y:auto;padding:var(--mlv-spacing-1-5) var(--mlv-spacing-3) var(--mlv-spacing-3)}.mlv-smart-filter-bar__manager-option{width:100%}.mlv-smart-filter-bar__manager-option-label{margin-inline-end:var(--mlv-spacing-1-5)}.mlv-smart-filter-bar__manager-option-status{display:inline-flex;padding:.0625rem var(--mlv-spacing-1-5);border-radius:var(--mlv-radius-full);background-color:var(--mlv-background-neutral-2);color:var(--mlv-text-secondary);font-size:var(--mlv-typography-body-s-size);font-weight:var(--mlv-typography-body-s-weight);line-height:var(--mlv-typography-body-s-line-height);white-space:nowrap}.mlv-smart-filter-bar__manager-option-status+.mlv-smart-filter-bar__manager-option-status{margin-inline-start:var(--mlv-spacing-1)}.mlv-smart-filter-bar--loading{cursor:progress}.mlv-smart-filter-bar--disabled{opacity:var(--mlv-disabled-opacity)}@media(max-width:42rem){.mlv-smart-filter-bar__query-row{align-items:stretch;flex-direction:column}.mlv-smart-filter-bar__search{width:100%;min-width:0}.mlv-smart-filter-bar__primary-actions{justify-content:flex-end}.mlv-smart-filter-bar__filter-toolbar{align-items:flex-start}.mlv-smart-filter-bar__filter-actions{flex-wrap:wrap;justify-content:flex-end}.mlv-smart-filter-bar__query-search{width:100%;min-width:100%}}@media(prefers-reduced-motion:reduce){.mlv-smart-filter-bar,.mlv-smart-filter-bar *,.mlv-smart-filter-bar:before,.mlv-smart-filter-bar:after,[class^=mlv-smart-filter-bar__],[class*=\" mlv-smart-filter-bar__\"],[class^=mlv-smart-filter-bar--],[class*=\" mlv-smart-filter-bar--\"]{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:var(--mlv-duration-instant)!important}}}\n"] }]
1612
+ }], ctorParameters: () => [], propDecorators: { definitions: [{ type: i0.Input, args: [{ isSignal: true, alias: "definitions", required: true }] }], filters: [{ type: i0.Input, args: [{ isSignal: true, alias: "filters", required: false }] }, { type: i0.Output, args: ["filtersChange"] }], appearance: [{ type: i0.Input, args: [{ isSignal: true, alias: "appearance", required: false }] }], visibleKeys: [{ type: i0.Input, args: [{ isSignal: true, alias: "visibleKeys", required: false }] }, { type: i0.Output, args: ["visibleKeysChange"] }], searchValue: [{ type: i0.Input, args: [{ isSignal: true, alias: "searchValue", required: false }] }, { type: i0.Output, args: ["searchValueChange"] }], searchTrigger: [{ type: i0.Input, args: [{ isSignal: true, alias: "searchTrigger", required: false }] }], searchDebounce: [{ type: i0.Input, args: [{ isSignal: true, alias: "searchDebounce", required: false }] }], filterApplyMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "filterApplyMode", required: false }] }], autoExecute: [{ type: i0.Input, args: [{ isSignal: true, alias: "autoExecute", required: false }] }], filtersVisible: [{ type: i0.Input, args: [{ isSignal: true, alias: "filtersVisible", required: false }] }, { type: i0.Output, args: ["filtersVisibleChange"] }], showSearch: [{ type: i0.Input, args: [{ isSignal: true, alias: "showSearch", required: false }] }], loading: [{ type: i0.Input, args: [{ isSignal: true, alias: "loading", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], execute: [{ type: i0.Output, args: ["execute"] }], refresh: [{ type: i0.Output, args: ["refresh"] }], resetCompleted: [{ type: i0.Output, args: ["resetCompleted"] }], _managerPanel: [{ type: i0.ViewChild, args: ['managerPanel', { isSignal: true }] }], _managerButton: [{ type: i0.ViewChild, args: ['managerButton', { ...{
1613
+ read: (ElementRef),
1614
+ }, isSignal: true }] }], _addPanel: [{ type: i0.ViewChild, args: ['addPanel', { isSignal: true }] }], _addButton: [{ type: i0.ViewChild, args: ['addButton', { ...{
1615
+ read: (ElementRef),
1616
+ }, isSignal: true }] }], _filterHosts: [{ type: i0.ViewChildren, args: [i0.forwardRef(() => MlvFilter), { ...{
1617
+ read: ElementRef,
1618
+ }, isSignal: true }] }], _valueEditors: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => MlvFilterValueEditorDef), { ...{
1619
+ descendants: true,
1620
+ }, isSignal: true }] }] } });
1621
+
1622
+ /**
1623
+ * Generated bundle index. Do not edit.
1624
+ */
1625
+
1626
+ export { MlvFilter, MlvFilterValueEditorDef, MlvSmartFilterBar, mlvFilterExpressionToFields, mlvFilterFieldsToExpression, mlvMatchesFilterExpression };
1627
+ //# sourceMappingURL=malva-ui-core-filter.mjs.map