@malva-ui/core 0.1.13 → 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 (1618) hide show
  1. package/AGENTS.md +4 -1
  2. package/README.md +15 -0
  3. package/docs/ai/avatar.md +2 -0
  4. package/docs/ai/breadcrumb.md +67 -7
  5. package/docs/ai/button.md +74 -19
  6. package/docs/ai/card.md +8 -6
  7. package/docs/ai/chat.md +59 -45
  8. package/docs/ai/checkbox.md +12 -0
  9. package/docs/ai/combobox.md +18 -2
  10. package/docs/ai/copy-to-clipboard.md +1 -1
  11. package/docs/ai/core.md +15 -0
  12. package/docs/ai/data-table.md +89 -54
  13. package/docs/ai/dialog.md +76 -67
  14. package/docs/ai/drawer.md +15 -12
  15. package/docs/ai/dropdown.md +24 -19
  16. package/docs/ai/empty-state.md +3 -3
  17. package/docs/ai/filter.md +24 -5
  18. package/docs/ai/form-utils.md +160 -5
  19. package/docs/ai/icon-toggle.md +160 -0
  20. package/docs/ai/input.md +30 -0
  21. package/docs/ai/layout.md +23 -0
  22. package/docs/ai/list.md +10 -6
  23. package/docs/ai/menu.md +75 -1
  24. package/docs/ai/page.md +220 -60
  25. package/docs/ai/radio.md +9 -0
  26. package/docs/ai/scrollbar.md +30 -8
  27. package/docs/ai/segmented.md +35 -35
  28. package/docs/ai/select.md +30 -5
  29. package/docs/ai/sidebar.md +45 -27
  30. package/docs/ai/switch.md +114 -19
  31. package/docs/ai/table.md +69 -0
  32. package/docs/ai/tabs.md +2 -1
  33. package/docs/ai/tile.md +311 -85
  34. package/docs/ai/timeline.md +63 -39
  35. package/docs/ai/tokenizer.md +21 -5
  36. package/docs/ai/tooltip.md +5 -5
  37. package/docs/ai/view-variant.md +75 -0
  38. package/fesm2022/malva-ui-core-accordion.mjs +167 -0
  39. package/fesm2022/malva-ui-core-accordion.mjs.map +1 -0
  40. package/fesm2022/malva-ui-core-action-bar.mjs +111 -0
  41. package/fesm2022/malva-ui-core-action-bar.mjs.map +1 -0
  42. package/fesm2022/malva-ui-core-alert.mjs +173 -0
  43. package/fesm2022/malva-ui-core-alert.mjs.map +1 -0
  44. package/fesm2022/malva-ui-core-autocomplete.mjs +775 -0
  45. package/fesm2022/malva-ui-core-autocomplete.mjs.map +1 -0
  46. package/fesm2022/malva-ui-core-avatar-group.mjs +224 -0
  47. package/fesm2022/malva-ui-core-avatar-group.mjs.map +1 -0
  48. package/fesm2022/malva-ui-core-avatar.mjs +247 -0
  49. package/fesm2022/malva-ui-core-avatar.mjs.map +1 -0
  50. package/fesm2022/malva-ui-core-badge.mjs +122 -0
  51. package/fesm2022/malva-ui-core-badge.mjs.map +1 -0
  52. package/fesm2022/malva-ui-core-bottom-nav.mjs +161 -0
  53. package/fesm2022/malva-ui-core-bottom-nav.mjs.map +1 -0
  54. package/fesm2022/malva-ui-core-breadcrumb.mjs +494 -0
  55. package/fesm2022/malva-ui-core-breadcrumb.mjs.map +1 -0
  56. package/fesm2022/malva-ui-core-button.mjs +406 -0
  57. package/fesm2022/malva-ui-core-button.mjs.map +1 -0
  58. package/fesm2022/malva-ui-core-calendar.mjs +938 -0
  59. package/fesm2022/malva-ui-core-calendar.mjs.map +1 -0
  60. package/fesm2022/malva-ui-core-card.mjs +164 -0
  61. package/fesm2022/malva-ui-core-card.mjs.map +1 -0
  62. package/fesm2022/malva-ui-core-chat.mjs +825 -0
  63. package/fesm2022/malva-ui-core-chat.mjs.map +1 -0
  64. package/fesm2022/malva-ui-core-checkbox.mjs +272 -0
  65. package/fesm2022/malva-ui-core-checkbox.mjs.map +1 -0
  66. package/fesm2022/malva-ui-core-chip.mjs +176 -0
  67. package/fesm2022/malva-ui-core-chip.mjs.map +1 -0
  68. package/fesm2022/malva-ui-core-color-picker.mjs +1204 -0
  69. package/fesm2022/malva-ui-core-color-picker.mjs.map +1 -0
  70. package/fesm2022/malva-ui-core-combobox.mjs +945 -0
  71. package/fesm2022/malva-ui-core-combobox.mjs.map +1 -0
  72. package/fesm2022/malva-ui-core-copy-to-clipboard.mjs +255 -0
  73. package/fesm2022/malva-ui-core-copy-to-clipboard.mjs.map +1 -0
  74. package/fesm2022/malva-ui-core-data-table.mjs +2696 -0
  75. package/fesm2022/malva-ui-core-data-table.mjs.map +1 -0
  76. package/fesm2022/malva-ui-core-date-range-picker.mjs +276 -0
  77. package/fesm2022/malva-ui-core-date-range-picker.mjs.map +1 -0
  78. package/fesm2022/malva-ui-core-day-picker.mjs +131 -0
  79. package/fesm2022/malva-ui-core-day-picker.mjs.map +1 -0
  80. package/fesm2022/malva-ui-core-dialog-routable-dialog-CvjXMtlD.mjs +94 -0
  81. package/fesm2022/malva-ui-core-dialog-routable-dialog-CvjXMtlD.mjs.map +1 -0
  82. package/fesm2022/malva-ui-core-dialog.mjs +1223 -0
  83. package/fesm2022/malva-ui-core-dialog.mjs.map +1 -0
  84. package/fesm2022/malva-ui-core-divider.mjs +80 -0
  85. package/fesm2022/malva-ui-core-divider.mjs.map +1 -0
  86. package/fesm2022/malva-ui-core-drawer-routable-drawer-qUk6Etnx.mjs +94 -0
  87. package/fesm2022/malva-ui-core-drawer-routable-drawer-qUk6Etnx.mjs.map +1 -0
  88. package/fesm2022/malva-ui-core-drawer.mjs +814 -0
  89. package/fesm2022/malva-ui-core-drawer.mjs.map +1 -0
  90. package/fesm2022/malva-ui-core-dropdown.mjs +994 -0
  91. package/fesm2022/malva-ui-core-dropdown.mjs.map +1 -0
  92. package/fesm2022/malva-ui-core-empty-state.mjs +50 -0
  93. package/fesm2022/malva-ui-core-empty-state.mjs.map +1 -0
  94. package/fesm2022/malva-ui-core-expand.mjs +130 -0
  95. package/fesm2022/malva-ui-core-expand.mjs.map +1 -0
  96. package/fesm2022/malva-ui-core-file-upload.mjs +451 -0
  97. package/fesm2022/malva-ui-core-file-upload.mjs.map +1 -0
  98. package/fesm2022/malva-ui-core-filter.mjs +1627 -0
  99. package/fesm2022/malva-ui-core-filter.mjs.map +1 -0
  100. package/fesm2022/malva-ui-core-form-utils-testing.mjs +39 -0
  101. package/fesm2022/malva-ui-core-form-utils-testing.mjs.map +1 -0
  102. package/fesm2022/malva-ui-core-form-utils.mjs +977 -0
  103. package/fesm2022/malva-ui-core-form-utils.mjs.map +1 -0
  104. package/fesm2022/malva-ui-core-form.mjs +283 -0
  105. package/fesm2022/malva-ui-core-form.mjs.map +1 -0
  106. package/fesm2022/malva-ui-core-icon-toggle.mjs +120 -0
  107. package/fesm2022/malva-ui-core-icon-toggle.mjs.map +1 -0
  108. package/fesm2022/malva-ui-core-input.mjs +375 -0
  109. package/fesm2022/malva-ui-core-input.mjs.map +1 -0
  110. package/fesm2022/malva-ui-core-kbd.mjs +131 -0
  111. package/fesm2022/malva-ui-core-kbd.mjs.map +1 -0
  112. package/fesm2022/malva-ui-core-layout.mjs +212 -0
  113. package/fesm2022/malva-ui-core-layout.mjs.map +1 -0
  114. package/fesm2022/malva-ui-core-link.mjs +89 -0
  115. package/fesm2022/malva-ui-core-link.mjs.map +1 -0
  116. package/fesm2022/malva-ui-core-list.mjs +413 -0
  117. package/fesm2022/malva-ui-core-list.mjs.map +1 -0
  118. package/fesm2022/malva-ui-core-loader.mjs +141 -0
  119. package/fesm2022/malva-ui-core-loader.mjs.map +1 -0
  120. package/fesm2022/malva-ui-core-menu.mjs +2540 -0
  121. package/fesm2022/malva-ui-core-menu.mjs.map +1 -0
  122. package/fesm2022/malva-ui-core-notification.mjs +201 -0
  123. package/fesm2022/malva-ui-core-notification.mjs.map +1 -0
  124. package/fesm2022/malva-ui-core-number-input.mjs +404 -0
  125. package/fesm2022/malva-ui-core-number-input.mjs.map +1 -0
  126. package/fesm2022/malva-ui-core-page.mjs +1898 -0
  127. package/fesm2022/malva-ui-core-page.mjs.map +1 -0
  128. package/fesm2022/malva-ui-core-pagination.mjs +458 -0
  129. package/fesm2022/malva-ui-core-pagination.mjs.map +1 -0
  130. package/fesm2022/malva-ui-core-pin-input.mjs +405 -0
  131. package/fesm2022/malva-ui-core-pin-input.mjs.map +1 -0
  132. package/fesm2022/malva-ui-core-popup.mjs +1488 -0
  133. package/fesm2022/malva-ui-core-popup.mjs.map +1 -0
  134. package/fesm2022/malva-ui-core-progress.mjs +109 -0
  135. package/fesm2022/malva-ui-core-progress.mjs.map +1 -0
  136. package/fesm2022/malva-ui-core-radio.mjs +317 -0
  137. package/fesm2022/malva-ui-core-radio.mjs.map +1 -0
  138. package/fesm2022/malva-ui-core-rating.mjs +236 -0
  139. package/fesm2022/malva-ui-core-rating.mjs.map +1 -0
  140. package/fesm2022/malva-ui-core-scrollbar.mjs +430 -0
  141. package/fesm2022/malva-ui-core-scrollbar.mjs.map +1 -0
  142. package/fesm2022/malva-ui-core-search-field.mjs +578 -0
  143. package/fesm2022/malva-ui-core-search-field.mjs.map +1 -0
  144. package/fesm2022/malva-ui-core-segmented.mjs +458 -0
  145. package/fesm2022/malva-ui-core-segmented.mjs.map +1 -0
  146. package/fesm2022/malva-ui-core-select.mjs +855 -0
  147. package/fesm2022/malva-ui-core-select.mjs.map +1 -0
  148. package/fesm2022/malva-ui-core-sidebar.mjs +1504 -0
  149. package/fesm2022/malva-ui-core-sidebar.mjs.map +1 -0
  150. package/fesm2022/malva-ui-core-skeleton.mjs +85 -0
  151. package/fesm2022/malva-ui-core-skeleton.mjs.map +1 -0
  152. package/fesm2022/malva-ui-core-slider.mjs +514 -0
  153. package/fesm2022/malva-ui-core-slider.mjs.map +1 -0
  154. package/fesm2022/malva-ui-core-split-pane.mjs +359 -0
  155. package/fesm2022/malva-ui-core-split-pane.mjs.map +1 -0
  156. package/fesm2022/malva-ui-core-status-indicator.mjs +78 -0
  157. package/fesm2022/malva-ui-core-status-indicator.mjs.map +1 -0
  158. package/fesm2022/malva-ui-core-stepper.mjs +332 -0
  159. package/fesm2022/malva-ui-core-stepper.mjs.map +1 -0
  160. package/fesm2022/malva-ui-core-switch.mjs +272 -0
  161. package/fesm2022/malva-ui-core-switch.mjs.map +1 -0
  162. package/fesm2022/malva-ui-core-table.mjs +79 -0
  163. package/fesm2022/malva-ui-core-table.mjs.map +1 -0
  164. package/fesm2022/malva-ui-core-tabs.mjs +794 -0
  165. package/fesm2022/malva-ui-core-tabs.mjs.map +1 -0
  166. package/fesm2022/malva-ui-core-textarea.mjs +201 -0
  167. package/fesm2022/malva-ui-core-textarea.mjs.map +1 -0
  168. package/fesm2022/malva-ui-core-tile.mjs +1404 -0
  169. package/fesm2022/malva-ui-core-tile.mjs.map +1 -0
  170. package/fesm2022/malva-ui-core-time-picker.mjs +533 -0
  171. package/fesm2022/malva-ui-core-time-picker.mjs.map +1 -0
  172. package/fesm2022/malva-ui-core-timeline.mjs +216 -0
  173. package/fesm2022/malva-ui-core-timeline.mjs.map +1 -0
  174. package/fesm2022/malva-ui-core-title.mjs +178 -0
  175. package/fesm2022/malva-ui-core-title.mjs.map +1 -0
  176. package/fesm2022/malva-ui-core-toast.mjs +749 -0
  177. package/fesm2022/malva-ui-core-toast.mjs.map +1 -0
  178. package/fesm2022/malva-ui-core-tokenizer.mjs +502 -0
  179. package/fesm2022/malva-ui-core-tokenizer.mjs.map +1 -0
  180. package/fesm2022/malva-ui-core-toolbar.mjs +141 -0
  181. package/fesm2022/malva-ui-core-toolbar.mjs.map +1 -0
  182. package/fesm2022/malva-ui-core-tooltip.mjs +432 -0
  183. package/fesm2022/malva-ui-core-tooltip.mjs.map +1 -0
  184. package/fesm2022/malva-ui-core-tree.mjs +505 -0
  185. package/fesm2022/malva-ui-core-tree.mjs.map +1 -0
  186. package/fesm2022/malva-ui-core-view-variant.mjs +292 -0
  187. package/fesm2022/malva-ui-core-view-variant.mjs.map +1 -0
  188. package/fesm2022/malva-ui-core.mjs +77 -0
  189. package/fesm2022/malva-ui-core.mjs.map +1 -0
  190. package/package.json +179 -156
  191. package/styles/malva-ui.css +253 -220
  192. package/styles/tokens.md +174 -173
  193. package/table/README.md +46 -0
  194. package/types/malva-ui-core-accordion.d.ts +121 -0
  195. package/types/malva-ui-core-action-bar.d.ts +82 -0
  196. package/types/malva-ui-core-alert.d.ts +131 -0
  197. package/types/malva-ui-core-autocomplete.d.ts +301 -0
  198. package/types/malva-ui-core-avatar-group.d.ts +119 -0
  199. package/types/malva-ui-core-avatar.d.ts +156 -0
  200. package/types/malva-ui-core-badge.d.ts +97 -0
  201. package/types/malva-ui-core-bottom-nav.d.ts +104 -0
  202. package/types/malva-ui-core-breadcrumb.d.ts +308 -0
  203. package/types/malva-ui-core-button.d.ts +194 -0
  204. package/types/malva-ui-core-calendar.d.ts +339 -0
  205. package/types/malva-ui-core-card.d.ts +88 -0
  206. package/types/malva-ui-core-chat.d.ts +375 -0
  207. package/types/malva-ui-core-checkbox.d.ts +158 -0
  208. package/types/malva-ui-core-chip.d.ts +128 -0
  209. package/types/malva-ui-core-color-picker.d.ts +442 -0
  210. package/types/malva-ui-core-combobox.d.ts +419 -0
  211. package/types/malva-ui-core-copy-to-clipboard.d.ts +148 -0
  212. package/types/malva-ui-core-data-table.d.ts +1074 -0
  213. package/types/malva-ui-core-date-range-picker.d.ts +149 -0
  214. package/types/malva-ui-core-day-picker.d.ts +55 -0
  215. package/types/malva-ui-core-dialog.d.ts +597 -0
  216. package/types/malva-ui-core-divider.d.ts +68 -0
  217. package/types/malva-ui-core-drawer.d.ts +333 -0
  218. package/types/malva-ui-core-dropdown.d.ts +592 -0
  219. package/types/malva-ui-core-empty-state.d.ts +37 -0
  220. package/types/malva-ui-core-expand.d.ts +102 -0
  221. package/types/malva-ui-core-file-upload.d.ts +267 -0
  222. package/types/malva-ui-core-filter.d.ts +552 -0
  223. package/types/malva-ui-core-form-utils-testing.d.ts +50 -0
  224. package/types/malva-ui-core-form-utils.d.ts +579 -0
  225. package/types/malva-ui-core-form.d.ts +176 -0
  226. package/types/malva-ui-core-icon-toggle.d.ts +80 -0
  227. package/types/malva-ui-core-input.d.ts +262 -0
  228. package/types/malva-ui-core-kbd.d.ts +56 -0
  229. package/types/malva-ui-core-layout.d.ts +70 -0
  230. package/types/malva-ui-core-link.d.ts +28 -0
  231. package/types/malva-ui-core-list.d.ts +252 -0
  232. package/types/malva-ui-core-loader.d.ts +89 -0
  233. package/types/malva-ui-core-menu.d.ts +954 -0
  234. package/types/malva-ui-core-notification.d.ts +122 -0
  235. package/types/malva-ui-core-number-input.d.ts +167 -0
  236. package/types/malva-ui-core-page.d.ts +799 -0
  237. package/types/malva-ui-core-pagination.d.ts +261 -0
  238. package/types/malva-ui-core-pin-input.d.ts +203 -0
  239. package/types/malva-ui-core-popup.d.ts +834 -0
  240. package/types/malva-ui-core-progress.d.ts +73 -0
  241. package/types/malva-ui-core-radio.d.ts +130 -0
  242. package/types/malva-ui-core-rating.d.ts +115 -0
  243. package/types/malva-ui-core-scrollbar.d.ts +203 -0
  244. package/types/malva-ui-core-search-field.d.ts +408 -0
  245. package/types/malva-ui-core-segmented.d.ts +206 -0
  246. package/types/malva-ui-core-select.d.ts +456 -0
  247. package/types/malva-ui-core-sidebar.d.ts +698 -0
  248. package/types/malva-ui-core-skeleton.d.ts +64 -0
  249. package/types/malva-ui-core-slider.d.ts +219 -0
  250. package/types/malva-ui-core-split-pane.d.ts +149 -0
  251. package/types/malva-ui-core-status-indicator.d.ts +65 -0
  252. package/types/malva-ui-core-stepper.d.ts +168 -0
  253. package/types/malva-ui-core-switch.d.ts +146 -0
  254. package/types/malva-ui-core-table.d.ts +37 -0
  255. package/types/malva-ui-core-tabs.d.ts +339 -0
  256. package/types/malva-ui-core-textarea.d.ts +79 -0
  257. package/types/malva-ui-core-tile.d.ts +373 -0
  258. package/types/malva-ui-core-time-picker.d.ts +141 -0
  259. package/types/malva-ui-core-timeline.d.ts +188 -0
  260. package/types/malva-ui-core-title.d.ts +66 -0
  261. package/types/malva-ui-core-toast.d.ts +432 -0
  262. package/types/malva-ui-core-tokenizer.d.ts +217 -0
  263. package/types/malva-ui-core-toolbar.d.ts +91 -0
  264. package/types/malva-ui-core-tooltip.d.ts +200 -0
  265. package/types/malva-ui-core-tree.d.ts +289 -0
  266. package/types/malva-ui-core-view-variant.d.ts +207 -0
  267. package/types/malva-ui-core.d.ts +72 -0
  268. package/view-variant/README.md +3 -0
  269. package/accordion/index.d.ts +0 -3
  270. package/accordion/lib/accordion/accordion.d.ts +0 -47
  271. package/accordion/lib/accordion-item/accordion-header.d.ts +0 -22
  272. package/accordion/lib/accordion-item/accordion-item.d.ts +0 -49
  273. package/accordion/malva-ui-core-accordion.d.ts +0 -5
  274. package/action-bar/index.d.ts +0 -4
  275. package/action-bar/lib/action-bar/action-bar.d.ts +0 -59
  276. package/action-bar/lib/action-bar/components/action-bar-actions.d.ts +0 -9
  277. package/action-bar/lib/action-bar/components/action-bar-logo.d.ts +0 -5
  278. package/action-bar/lib/action-bar/components/action-bar-spacer.d.ts +0 -5
  279. package/action-bar/malva-ui-core-action-bar.d.ts +0 -5
  280. package/alert/index.d.ts +0 -2
  281. package/alert/lib/alert/alert.d.ts +0 -84
  282. package/alert/lib/alert/alert.directives.d.ts +0 -44
  283. package/alert/malva-ui-core-alert.d.ts +0 -5
  284. package/autocomplete/index.d.ts +0 -1
  285. package/autocomplete/lib/autocomplete/autocomplete.d.ts +0 -296
  286. package/autocomplete/malva-ui-core-autocomplete.d.ts +0 -5
  287. package/avatar/index.d.ts +0 -2
  288. package/avatar/lib/avatar/avatar.d.ts +0 -125
  289. package/avatar/lib/color-from-text.pipe.d.ts +0 -21
  290. package/avatar/malva-ui-core-avatar.d.ts +0 -5
  291. package/avatar-group/index.d.ts +0 -1
  292. package/avatar-group/lib/avatar-group/avatar-group.d.ts +0 -115
  293. package/avatar-group/malva-ui-core-avatar-group.d.ts +0 -5
  294. package/badge/index.d.ts +0 -2
  295. package/badge/lib/badge/badge.d.ts +0 -59
  296. package/badge/lib/badge-icon.d.ts +0 -35
  297. package/badge/malva-ui-core-badge.d.ts +0 -5
  298. package/bottom-nav/index.d.ts +0 -1
  299. package/bottom-nav/lib/bottom-nav/bottom-nav.d.ts +0 -99
  300. package/bottom-nav/malva-ui-core-bottom-nav.d.ts +0 -5
  301. package/breadcrumb/index.d.ts +0 -5
  302. package/breadcrumb/lib/breadcrumb/breadcrumb-item-host.d.ts +0 -32
  303. package/breadcrumb/lib/breadcrumb/breadcrumb-item.d.ts +0 -41
  304. package/breadcrumb/lib/breadcrumb/breadcrumb-separator.d.ts +0 -31
  305. package/breadcrumb/lib/breadcrumb/breadcrumb.d.ts +0 -151
  306. package/breadcrumb/lib/breadcrumb/breadcrumb.types.d.ts +0 -26
  307. package/breadcrumb/malva-ui-core-breadcrumb.d.ts +0 -5
  308. package/button/index.d.ts +0 -7
  309. package/button/lib/button/button.d.ts +0 -61
  310. package/button/lib/button-close/button-close.d.ts +0 -24
  311. package/button/lib/button-group/button-group.d.ts +0 -21
  312. package/button/lib/button-split/button-split.d.ts +0 -21
  313. package/button/lib/button-toggle/button-toggle.d.ts +0 -33
  314. package/button/lib/button-variant.token.d.ts +0 -13
  315. package/button/lib/button.directives.d.ts +0 -14
  316. package/button/lib/button.types.d.ts +0 -8
  317. package/button/malva-ui-core-button.d.ts +0 -5
  318. package/calendar/index.d.ts +0 -3
  319. package/calendar/lib/calendar/calendar.d.ts +0 -182
  320. package/calendar/lib/date-provider/date-adapter.d.ts +0 -92
  321. package/calendar/lib/date-provider/native-date-adapter.d.ts +0 -60
  322. package/calendar/malva-ui-core-calendar.d.ts +0 -5
  323. package/card/index.d.ts +0 -5
  324. package/card/lib/card/card.d.ts +0 -43
  325. package/card/lib/card-actions-def.d.ts +0 -10
  326. package/card/lib/card-footer-def.d.ts +0 -13
  327. package/card/lib/card-header-def.d.ts +0 -10
  328. package/card/lib/card-subheader-def.d.ts +0 -16
  329. package/card/malva-ui-core-card.d.ts +0 -5
  330. package/chat/index.d.ts +0 -9
  331. package/chat/lib/chat/chat.d.ts +0 -133
  332. package/chat/lib/chat-audio/chat-audio.d.ts +0 -51
  333. package/chat/lib/chat-audio/chat-audio.service.d.ts +0 -21
  334. package/chat/lib/chat-date/chat-date.d.ts +0 -16
  335. package/chat/lib/chat-format.d.ts +0 -5
  336. package/chat/lib/chat-media-grid/chat-media-grid.d.ts +0 -32
  337. package/chat/lib/chat-message/chat-message.d.ts +0 -45
  338. package/chat/lib/chat-render-list.d.ts +0 -16
  339. package/chat/lib/chat-tokens.d.ts +0 -25
  340. package/chat/lib/chat-typing/chat-typing.d.ts +0 -16
  341. package/chat/lib/chat.types.d.ts +0 -80
  342. package/chat/lib/defs/chat-author-def.d.ts +0 -30
  343. package/chat/lib/defs/chat-date-def.d.ts +0 -22
  344. package/chat/lib/defs/chat-message-def.d.ts +0 -23
  345. package/chat/malva-ui-core-chat.d.ts +0 -5
  346. package/checkbox/index.d.ts +0 -3
  347. package/checkbox/lib/checkbox/checkbox.d.ts +0 -129
  348. package/checkbox/lib/checkbox-group/checkbox-group.d.ts +0 -24
  349. package/checkbox/lib/checkbox-group-token.d.ts +0 -6
  350. package/checkbox/malva-ui-core-checkbox.d.ts +0 -5
  351. package/chip/index.d.ts +0 -2
  352. package/chip/lib/chip/chip.d.ts +0 -107
  353. package/chip/lib/chip/chip.directives.d.ts +0 -18
  354. package/chip/malva-ui-core-chip.d.ts +0 -5
  355. package/color-picker/index.d.ts +0 -3
  356. package/color-picker/lib/color-picker/color-picker.d.ts +0 -188
  357. package/color-picker/lib/color-picker-popup/color-picker-popup.d.ts +0 -151
  358. package/color-picker/lib/color-utils/color-utils.d.ts +0 -102
  359. package/color-picker/malva-ui-core-color-picker.d.ts +0 -5
  360. package/combobox/index.d.ts +0 -2
  361. package/combobox/lib/combobox/combobox.d.ts +0 -400
  362. package/combobox/lib/combobox-template.directives.d.ts +0 -10
  363. package/combobox/malva-ui-core-combobox.d.ts +0 -5
  364. package/copy-to-clipboard/index.d.ts +0 -1
  365. package/copy-to-clipboard/lib/copy-to-clipboard/copy-to-clipboard.d.ts +0 -130
  366. package/copy-to-clipboard/malva-ui-core-copy-to-clipboard.d.ts +0 -5
  367. package/data-table/index.d.ts +0 -8
  368. package/data-table/lib/data-source.d.ts +0 -5
  369. package/data-table/lib/data-table/data-table-layout.d.ts +0 -31
  370. package/data-table/lib/data-table/data-table.d.ts +0 -699
  371. package/data-table/lib/data-table/services/data-table-column-visibility.service.d.ts +0 -19
  372. package/data-table/lib/data-table/services/data-table-editing.service.d.ts +0 -37
  373. package/data-table/lib/data-table/services/data-table-pinning.service.d.ts +0 -37
  374. package/data-table/lib/data-table-cell.d.ts +0 -44
  375. package/data-table/lib/data-table-edit-cell.d.ts +0 -44
  376. package/data-table/lib/data-table-error.d.ts +0 -37
  377. package/data-table/lib/data-table-footer.d.ts +0 -26
  378. package/data-table/lib/data-table-no-data.d.ts +0 -19
  379. package/data-table/lib/filter-dropdown/filter-dropdown.d.ts +0 -54
  380. package/data-table/lib/types.d.ts +0 -134
  381. package/data-table/malva-ui-core-data-table.d.ts +0 -5
  382. package/date-range-picker/index.d.ts +0 -1
  383. package/date-range-picker/lib/date-range-picker/date-range-picker.d.ts +0 -145
  384. package/date-range-picker/malva-ui-core-date-range-picker.d.ts +0 -5
  385. package/day-picker/index.d.ts +0 -1
  386. package/day-picker/lib/day-picker/day-picker.d.ts +0 -51
  387. package/day-picker/malva-ui-core-day-picker.d.ts +0 -5
  388. package/dialog/index.d.ts +0 -11
  389. package/dialog/lib/confirm-dialog-options.d.ts +0 -41
  390. package/dialog/lib/confirm-dialog.d.ts +0 -52
  391. package/dialog/lib/dialog/dialog.d.ts +0 -22
  392. package/dialog/lib/dialog-body.d.ts +0 -9
  393. package/dialog/lib/dialog-close.d.ts +0 -27
  394. package/dialog/lib/dialog-config.d.ts +0 -112
  395. package/dialog/lib/dialog-container.d.ts +0 -40
  396. package/dialog/lib/dialog-footer.d.ts +0 -13
  397. package/dialog/lib/dialog-header.d.ts +0 -74
  398. package/dialog/lib/dialog-ref.d.ts +0 -95
  399. package/dialog/lib/dialog-template.d.ts +0 -65
  400. package/dialog/lib/dialog-text-content.d.ts +0 -24
  401. package/dialog/lib/dialog.service.d.ts +0 -63
  402. package/dialog/lib/generate-routable-dialog-route.d.ts +0 -49
  403. package/dialog/lib/inject-dialog-ref.d.ts +0 -8
  404. package/dialog/lib/routable-dialog.d.ts +0 -30
  405. package/dialog/malva-ui-core-dialog.d.ts +0 -5
  406. package/divider/index.d.ts +0 -1
  407. package/divider/lib/divider/divider.d.ts +0 -64
  408. package/divider/malva-ui-core-divider.d.ts +0 -5
  409. package/drawer/index.d.ts +0 -11
  410. package/drawer/lib/drawer/drawer.d.ts +0 -106
  411. package/drawer/lib/drawer-body.d.ts +0 -8
  412. package/drawer/lib/drawer-content.d.ts +0 -6
  413. package/drawer/lib/drawer-footer.d.ts +0 -5
  414. package/drawer/lib/drawer-header.d.ts +0 -5
  415. package/drawer/lib/drawer-ref.d.ts +0 -29
  416. package/drawer/lib/drawer-resize.d.ts +0 -65
  417. package/drawer/lib/drawer-section/drawer-section.d.ts +0 -15
  418. package/drawer/lib/drawer-sections/drawer-sections.d.ts +0 -22
  419. package/drawer/lib/drawer-sections.service.d.ts +0 -42
  420. package/drawer/lib/drawer.service.d.ts +0 -66
  421. package/drawer/lib/generate-routable-drawer-route.d.ts +0 -42
  422. package/drawer/lib/routable-drawer.d.ts +0 -30
  423. package/drawer/malva-ui-core-drawer.d.ts +0 -5
  424. package/dropdown/index.d.ts +0 -9
  425. package/dropdown/lib/active-descendant.d.ts +0 -64
  426. package/dropdown/lib/dropdown-panel/dropdown-panel.d.ts +0 -178
  427. package/dropdown/lib/highlight-match.pipe.d.ts +0 -27
  428. package/dropdown/lib/option-matcher.d.ts +0 -87
  429. package/dropdown/lib/options-adapter.d.ts +0 -142
  430. package/dropdown/lib/options-result.d.ts +0 -6
  431. package/dropdown/lib/reconciliation.d.ts +0 -19
  432. package/dropdown/lib/select-data-source.d.ts +0 -18
  433. package/dropdown/lib/select-option.d.ts +0 -37
  434. package/dropdown/malva-ui-core-dropdown.d.ts +0 -5
  435. package/empty-state/index.d.ts +0 -1
  436. package/empty-state/lib/empty-state/empty-state.d.ts +0 -34
  437. package/empty-state/malva-ui-core-empty-state.d.ts +0 -5
  438. package/esm2022/accordion/index.js +0 -4
  439. package/esm2022/accordion/index.js.map +0 -1
  440. package/esm2022/accordion/lib/accordion/accordion.js +0 -65
  441. package/esm2022/accordion/lib/accordion/accordion.js.map +0 -1
  442. package/esm2022/accordion/lib/accordion-item/accordion-header.js +0 -30
  443. package/esm2022/accordion/lib/accordion-item/accordion-header.js.map +0 -1
  444. package/esm2022/accordion/lib/accordion-item/accordion-item.js +0 -70
  445. package/esm2022/accordion/lib/accordion-item/accordion-item.js.map +0 -1
  446. package/esm2022/accordion/malva-ui-core-accordion.js +0 -5
  447. package/esm2022/accordion/malva-ui-core-accordion.js.map +0 -1
  448. package/esm2022/action-bar/index.js +0 -5
  449. package/esm2022/action-bar/index.js.map +0 -1
  450. package/esm2022/action-bar/lib/action-bar/action-bar.js +0 -64
  451. package/esm2022/action-bar/lib/action-bar/action-bar.js.map +0 -1
  452. package/esm2022/action-bar/lib/action-bar/components/action-bar-actions.js +0 -20
  453. package/esm2022/action-bar/lib/action-bar/components/action-bar-actions.js.map +0 -1
  454. package/esm2022/action-bar/lib/action-bar/components/action-bar-logo.js +0 -13
  455. package/esm2022/action-bar/lib/action-bar/components/action-bar-logo.js.map +0 -1
  456. package/esm2022/action-bar/lib/action-bar/components/action-bar-spacer.js +0 -13
  457. package/esm2022/action-bar/lib/action-bar/components/action-bar-spacer.js.map +0 -1
  458. package/esm2022/action-bar/malva-ui-core-action-bar.js +0 -5
  459. package/esm2022/action-bar/malva-ui-core-action-bar.js.map +0 -1
  460. package/esm2022/alert/index.js +0 -3
  461. package/esm2022/alert/index.js.map +0 -1
  462. package/esm2022/alert/lib/alert/alert.directives.js +0 -53
  463. package/esm2022/alert/lib/alert/alert.directives.js.map +0 -1
  464. package/esm2022/alert/lib/alert/alert.js +0 -118
  465. package/esm2022/alert/lib/alert/alert.js.map +0 -1
  466. package/esm2022/alert/malva-ui-core-alert.js +0 -5
  467. package/esm2022/alert/malva-ui-core-alert.js.map +0 -1
  468. package/esm2022/autocomplete/index.js +0 -2
  469. package/esm2022/autocomplete/index.js.map +0 -1
  470. package/esm2022/autocomplete/lib/autocomplete/autocomplete.js +0 -765
  471. package/esm2022/autocomplete/lib/autocomplete/autocomplete.js.map +0 -1
  472. package/esm2022/autocomplete/malva-ui-core-autocomplete.js +0 -5
  473. package/esm2022/autocomplete/malva-ui-core-autocomplete.js.map +0 -1
  474. package/esm2022/avatar/index.js +0 -3
  475. package/esm2022/avatar/index.js.map +0 -1
  476. package/esm2022/avatar/lib/avatar/avatar.js +0 -192
  477. package/esm2022/avatar/lib/avatar/avatar.js.map +0 -1
  478. package/esm2022/avatar/lib/color-from-text.pipe.js +0 -39
  479. package/esm2022/avatar/lib/color-from-text.pipe.js.map +0 -1
  480. package/esm2022/avatar/malva-ui-core-avatar.js +0 -5
  481. package/esm2022/avatar/malva-ui-core-avatar.js.map +0 -1
  482. package/esm2022/avatar-group/index.js +0 -2
  483. package/esm2022/avatar-group/index.js.map +0 -1
  484. package/esm2022/avatar-group/lib/avatar-group/avatar-group.js +0 -217
  485. package/esm2022/avatar-group/lib/avatar-group/avatar-group.js.map +0 -1
  486. package/esm2022/avatar-group/malva-ui-core-avatar-group.js +0 -5
  487. package/esm2022/avatar-group/malva-ui-core-avatar-group.js.map +0 -1
  488. package/esm2022/badge/index.js +0 -3
  489. package/esm2022/badge/index.js.map +0 -1
  490. package/esm2022/badge/lib/badge/badge.js +0 -71
  491. package/esm2022/badge/lib/badge/badge.js.map +0 -1
  492. package/esm2022/badge/lib/badge-icon.js +0 -47
  493. package/esm2022/badge/lib/badge-icon.js.map +0 -1
  494. package/esm2022/badge/malva-ui-core-badge.js +0 -5
  495. package/esm2022/badge/malva-ui-core-badge.js.map +0 -1
  496. package/esm2022/bottom-nav/index.js +0 -2
  497. package/esm2022/bottom-nav/index.js.map +0 -1
  498. package/esm2022/bottom-nav/lib/bottom-nav/bottom-nav.js +0 -155
  499. package/esm2022/bottom-nav/lib/bottom-nav/bottom-nav.js.map +0 -1
  500. package/esm2022/bottom-nav/malva-ui-core-bottom-nav.js +0 -5
  501. package/esm2022/bottom-nav/malva-ui-core-bottom-nav.js.map +0 -1
  502. package/esm2022/breadcrumb/index.js +0 -6
  503. package/esm2022/breadcrumb/index.js.map +0 -1
  504. package/esm2022/breadcrumb/lib/breadcrumb/breadcrumb-item-host.js +0 -43
  505. package/esm2022/breadcrumb/lib/breadcrumb/breadcrumb-item-host.js.map +0 -1
  506. package/esm2022/breadcrumb/lib/breadcrumb/breadcrumb-item.js +0 -110
  507. package/esm2022/breadcrumb/lib/breadcrumb/breadcrumb-item.js.map +0 -1
  508. package/esm2022/breadcrumb/lib/breadcrumb/breadcrumb-separator.js +0 -38
  509. package/esm2022/breadcrumb/lib/breadcrumb/breadcrumb-separator.js.map +0 -1
  510. package/esm2022/breadcrumb/lib/breadcrumb/breadcrumb.js +0 -284
  511. package/esm2022/breadcrumb/lib/breadcrumb/breadcrumb.js.map +0 -1
  512. package/esm2022/breadcrumb/lib/breadcrumb/breadcrumb.types.js +0 -1
  513. package/esm2022/breadcrumb/lib/breadcrumb/breadcrumb.types.js.map +0 -1
  514. package/esm2022/breadcrumb/malva-ui-core-breadcrumb.js +0 -5
  515. package/esm2022/breadcrumb/malva-ui-core-breadcrumb.js.map +0 -1
  516. package/esm2022/button/index.js +0 -8
  517. package/esm2022/button/index.js.map +0 -1
  518. package/esm2022/button/lib/button/button.js +0 -137
  519. package/esm2022/button/lib/button/button.js.map +0 -1
  520. package/esm2022/button/lib/button-close/button-close.js +0 -52
  521. package/esm2022/button/lib/button-close/button-close.js.map +0 -1
  522. package/esm2022/button/lib/button-group/button-group.js +0 -44
  523. package/esm2022/button/lib/button-group/button-group.js.map +0 -1
  524. package/esm2022/button/lib/button-split/button-split.js +0 -44
  525. package/esm2022/button/lib/button-split/button-split.js.map +0 -1
  526. package/esm2022/button/lib/button-toggle/button-toggle.js +0 -94
  527. package/esm2022/button/lib/button-toggle/button-toggle.js.map +0 -1
  528. package/esm2022/button/lib/button-variant.token.js +0 -4
  529. package/esm2022/button/lib/button-variant.token.js.map +0 -1
  530. package/esm2022/button/lib/button.directives.js +0 -37
  531. package/esm2022/button/lib/button.directives.js.map +0 -1
  532. package/esm2022/button/lib/button.types.js +0 -1
  533. package/esm2022/button/lib/button.types.js.map +0 -1
  534. package/esm2022/button/malva-ui-core-button.js +0 -5
  535. package/esm2022/button/malva-ui-core-button.js.map +0 -1
  536. package/esm2022/calendar/index.js +0 -4
  537. package/esm2022/calendar/index.js.map +0 -1
  538. package/esm2022/calendar/lib/calendar/calendar.js +0 -672
  539. package/esm2022/calendar/lib/calendar/calendar.js.map +0 -1
  540. package/esm2022/calendar/lib/date-provider/date-adapter.js +0 -111
  541. package/esm2022/calendar/lib/date-provider/date-adapter.js.map +0 -1
  542. package/esm2022/calendar/lib/date-provider/native-date-adapter.js +0 -151
  543. package/esm2022/calendar/lib/date-provider/native-date-adapter.js.map +0 -1
  544. package/esm2022/calendar/malva-ui-core-calendar.js +0 -5
  545. package/esm2022/calendar/malva-ui-core-calendar.js.map +0 -1
  546. package/esm2022/card/index.js +0 -6
  547. package/esm2022/card/index.js.map +0 -1
  548. package/esm2022/card/lib/card/card.js +0 -54
  549. package/esm2022/card/lib/card/card.js.map +0 -1
  550. package/esm2022/card/lib/card-actions-def.js +0 -27
  551. package/esm2022/card/lib/card-actions-def.js.map +0 -1
  552. package/esm2022/card/lib/card-footer-def.js +0 -32
  553. package/esm2022/card/lib/card-footer-def.js.map +0 -1
  554. package/esm2022/card/lib/card-header-def.js +0 -27
  555. package/esm2022/card/lib/card-header-def.js.map +0 -1
  556. package/esm2022/card/lib/card-subheader-def.js +0 -33
  557. package/esm2022/card/lib/card-subheader-def.js.map +0 -1
  558. package/esm2022/card/malva-ui-core-card.js +0 -5
  559. package/esm2022/card/malva-ui-core-card.js.map +0 -1
  560. package/esm2022/chat/index.js +0 -10
  561. package/esm2022/chat/index.js.map +0 -1
  562. package/esm2022/chat/lib/chat/chat.js +0 -326
  563. package/esm2022/chat/lib/chat/chat.js.map +0 -1
  564. package/esm2022/chat/lib/chat-audio/chat-audio.js +0 -110
  565. package/esm2022/chat/lib/chat-audio/chat-audio.js.map +0 -1
  566. package/esm2022/chat/lib/chat-audio/chat-audio.service.js +0 -28
  567. package/esm2022/chat/lib/chat-audio/chat-audio.service.js.map +0 -1
  568. package/esm2022/chat/lib/chat-date/chat-date.js +0 -46
  569. package/esm2022/chat/lib/chat-date/chat-date.js.map +0 -1
  570. package/esm2022/chat/lib/chat-format.js +0 -11
  571. package/esm2022/chat/lib/chat-format.js.map +0 -1
  572. package/esm2022/chat/lib/chat-media-grid/chat-media-grid.js +0 -53
  573. package/esm2022/chat/lib/chat-media-grid/chat-media-grid.js.map +0 -1
  574. package/esm2022/chat/lib/chat-message/chat-message.js +0 -86
  575. package/esm2022/chat/lib/chat-message/chat-message.js.map +0 -1
  576. package/esm2022/chat/lib/chat-render-list.js +0 -55
  577. package/esm2022/chat/lib/chat-render-list.js.map +0 -1
  578. package/esm2022/chat/lib/chat-tokens.js +0 -9
  579. package/esm2022/chat/lib/chat-tokens.js.map +0 -1
  580. package/esm2022/chat/lib/chat-typing/chat-typing.js +0 -50
  581. package/esm2022/chat/lib/chat-typing/chat-typing.js.map +0 -1
  582. package/esm2022/chat/lib/chat.types.js +0 -1
  583. package/esm2022/chat/lib/chat.types.js.map +0 -1
  584. package/esm2022/chat/lib/defs/chat-author-def.js +0 -27
  585. package/esm2022/chat/lib/defs/chat-author-def.js.map +0 -1
  586. package/esm2022/chat/lib/defs/chat-date-def.js +0 -24
  587. package/esm2022/chat/lib/defs/chat-date-def.js.map +0 -1
  588. package/esm2022/chat/lib/defs/chat-message-def.js +0 -30
  589. package/esm2022/chat/lib/defs/chat-message-def.js.map +0 -1
  590. package/esm2022/chat/malva-ui-core-chat.js +0 -5
  591. package/esm2022/chat/malva-ui-core-chat.js.map +0 -1
  592. package/esm2022/checkbox/index.js +0 -4
  593. package/esm2022/checkbox/index.js.map +0 -1
  594. package/esm2022/checkbox/lib/checkbox/checkbox.js +0 -201
  595. package/esm2022/checkbox/lib/checkbox/checkbox.js.map +0 -1
  596. package/esm2022/checkbox/lib/checkbox-group/checkbox-group.js +0 -68
  597. package/esm2022/checkbox/lib/checkbox-group/checkbox-group.js.map +0 -1
  598. package/esm2022/checkbox/lib/checkbox-group-token.js +0 -3
  599. package/esm2022/checkbox/lib/checkbox-group-token.js.map +0 -1
  600. package/esm2022/checkbox/malva-ui-core-checkbox.js +0 -5
  601. package/esm2022/checkbox/malva-ui-core-checkbox.js.map +0 -1
  602. package/esm2022/chip/index.js +0 -3
  603. package/esm2022/chip/index.js.map +0 -1
  604. package/esm2022/chip/lib/chip/chip.directives.js +0 -32
  605. package/esm2022/chip/lib/chip/chip.directives.js.map +0 -1
  606. package/esm2022/chip/lib/chip/chip.js +0 -140
  607. package/esm2022/chip/lib/chip/chip.js.map +0 -1
  608. package/esm2022/chip/malva-ui-core-chip.js +0 -5
  609. package/esm2022/chip/malva-ui-core-chip.js.map +0 -1
  610. package/esm2022/color-picker/index.js +0 -4
  611. package/esm2022/color-picker/index.js.map +0 -1
  612. package/esm2022/color-picker/lib/color-picker/color-picker.js +0 -530
  613. package/esm2022/color-picker/lib/color-picker/color-picker.js.map +0 -1
  614. package/esm2022/color-picker/lib/color-picker-popup/color-picker-popup.js +0 -419
  615. package/esm2022/color-picker/lib/color-picker-popup/color-picker-popup.js.map +0 -1
  616. package/esm2022/color-picker/lib/color-utils/color-utils.js +0 -256
  617. package/esm2022/color-picker/lib/color-utils/color-utils.js.map +0 -1
  618. package/esm2022/color-picker/malva-ui-core-color-picker.js +0 -5
  619. package/esm2022/color-picker/malva-ui-core-color-picker.js.map +0 -1
  620. package/esm2022/combobox/index.js +0 -3
  621. package/esm2022/combobox/index.js.map +0 -1
  622. package/esm2022/combobox/lib/combobox/combobox.js +0 -911
  623. package/esm2022/combobox/lib/combobox/combobox.js.map +0 -1
  624. package/esm2022/combobox/lib/combobox-template.directives.js +0 -24
  625. package/esm2022/combobox/lib/combobox-template.directives.js.map +0 -1
  626. package/esm2022/combobox/malva-ui-core-combobox.js +0 -5
  627. package/esm2022/combobox/malva-ui-core-combobox.js.map +0 -1
  628. package/esm2022/copy-to-clipboard/index.js +0 -2
  629. package/esm2022/copy-to-clipboard/index.js.map +0 -1
  630. package/esm2022/copy-to-clipboard/lib/copy-to-clipboard/copy-to-clipboard.js +0 -201
  631. package/esm2022/copy-to-clipboard/lib/copy-to-clipboard/copy-to-clipboard.js.map +0 -1
  632. package/esm2022/copy-to-clipboard/malva-ui-core-copy-to-clipboard.js +0 -5
  633. package/esm2022/copy-to-clipboard/malva-ui-core-copy-to-clipboard.js.map +0 -1
  634. package/esm2022/data-table/index.js +0 -9
  635. package/esm2022/data-table/index.js.map +0 -1
  636. package/esm2022/data-table/lib/data-source.js +0 -6
  637. package/esm2022/data-table/lib/data-source.js.map +0 -1
  638. package/esm2022/data-table/lib/data-table/data-table-layout.js +0 -84
  639. package/esm2022/data-table/lib/data-table/data-table-layout.js.map +0 -1
  640. package/esm2022/data-table/lib/data-table/data-table.js +0 -1846
  641. package/esm2022/data-table/lib/data-table/data-table.js.map +0 -1
  642. package/esm2022/data-table/lib/data-table/services/data-table-column-visibility.service.js +0 -37
  643. package/esm2022/data-table/lib/data-table/services/data-table-column-visibility.service.js.map +0 -1
  644. package/esm2022/data-table/lib/data-table/services/data-table-editing.service.js +0 -63
  645. package/esm2022/data-table/lib/data-table/services/data-table-editing.service.js.map +0 -1
  646. package/esm2022/data-table/lib/data-table/services/data-table-pinning.service.js +0 -68
  647. package/esm2022/data-table/lib/data-table/services/data-table-pinning.service.js.map +0 -1
  648. package/esm2022/data-table/lib/data-table-cell.js +0 -46
  649. package/esm2022/data-table/lib/data-table-cell.js.map +0 -1
  650. package/esm2022/data-table/lib/data-table-edit-cell.js +0 -46
  651. package/esm2022/data-table/lib/data-table-edit-cell.js.map +0 -1
  652. package/esm2022/data-table/lib/data-table-error.js +0 -37
  653. package/esm2022/data-table/lib/data-table-error.js.map +0 -1
  654. package/esm2022/data-table/lib/data-table-footer.js +0 -33
  655. package/esm2022/data-table/lib/data-table-footer.js.map +0 -1
  656. package/esm2022/data-table/lib/data-table-no-data.js +0 -26
  657. package/esm2022/data-table/lib/data-table-no-data.js.map +0 -1
  658. package/esm2022/data-table/lib/filter-dropdown/filter-dropdown.js +0 -224
  659. package/esm2022/data-table/lib/filter-dropdown/filter-dropdown.js.map +0 -1
  660. package/esm2022/data-table/lib/types.js +0 -1
  661. package/esm2022/data-table/lib/types.js.map +0 -1
  662. package/esm2022/data-table/malva-ui-core-data-table.js +0 -5
  663. package/esm2022/data-table/malva-ui-core-data-table.js.map +0 -1
  664. package/esm2022/date-range-picker/index.js +0 -2
  665. package/esm2022/date-range-picker/index.js.map +0 -1
  666. package/esm2022/date-range-picker/lib/date-range-picker/date-range-picker.js +0 -269
  667. package/esm2022/date-range-picker/lib/date-range-picker/date-range-picker.js.map +0 -1
  668. package/esm2022/date-range-picker/malva-ui-core-date-range-picker.js +0 -5
  669. package/esm2022/date-range-picker/malva-ui-core-date-range-picker.js.map +0 -1
  670. package/esm2022/day-picker/index.js +0 -2
  671. package/esm2022/day-picker/index.js.map +0 -1
  672. package/esm2022/day-picker/lib/day-picker/day-picker.js +0 -124
  673. package/esm2022/day-picker/lib/day-picker/day-picker.js.map +0 -1
  674. package/esm2022/day-picker/malva-ui-core-day-picker.js +0 -5
  675. package/esm2022/day-picker/malva-ui-core-day-picker.js.map +0 -1
  676. package/esm2022/dialog/index.js +0 -12
  677. package/esm2022/dialog/index.js.map +0 -1
  678. package/esm2022/dialog/lib/confirm-dialog-options.js +0 -1
  679. package/esm2022/dialog/lib/confirm-dialog-options.js.map +0 -1
  680. package/esm2022/dialog/lib/confirm-dialog.js +0 -155
  681. package/esm2022/dialog/lib/confirm-dialog.js.map +0 -1
  682. package/esm2022/dialog/lib/dialog/dialog.js +0 -40
  683. package/esm2022/dialog/lib/dialog/dialog.js.map +0 -1
  684. package/esm2022/dialog/lib/dialog-body.js +0 -33
  685. package/esm2022/dialog/lib/dialog-body.js.map +0 -1
  686. package/esm2022/dialog/lib/dialog-close.js +0 -45
  687. package/esm2022/dialog/lib/dialog-close.js.map +0 -1
  688. package/esm2022/dialog/lib/dialog-config.js +0 -23
  689. package/esm2022/dialog/lib/dialog-config.js.map +0 -1
  690. package/esm2022/dialog/lib/dialog-container.js +0 -69
  691. package/esm2022/dialog/lib/dialog-container.js.map +0 -1
  692. package/esm2022/dialog/lib/dialog-footer.js +0 -29
  693. package/esm2022/dialog/lib/dialog-footer.js.map +0 -1
  694. package/esm2022/dialog/lib/dialog-header.js +0 -181
  695. package/esm2022/dialog/lib/dialog-header.js.map +0 -1
  696. package/esm2022/dialog/lib/dialog-ref.js +0 -167
  697. package/esm2022/dialog/lib/dialog-ref.js.map +0 -1
  698. package/esm2022/dialog/lib/dialog-template.js +0 -136
  699. package/esm2022/dialog/lib/dialog-template.js.map +0 -1
  700. package/esm2022/dialog/lib/dialog-text-content.js +0 -59
  701. package/esm2022/dialog/lib/dialog-text-content.js.map +0 -1
  702. package/esm2022/dialog/lib/dialog.service.js +0 -205
  703. package/esm2022/dialog/lib/dialog.service.js.map +0 -1
  704. package/esm2022/dialog/lib/generate-routable-dialog-route.js +0 -59
  705. package/esm2022/dialog/lib/generate-routable-dialog-route.js.map +0 -1
  706. package/esm2022/dialog/lib/inject-dialog-ref.js +0 -16
  707. package/esm2022/dialog/lib/inject-dialog-ref.js.map +0 -1
  708. package/esm2022/dialog/lib/routable-dialog.js +0 -91
  709. package/esm2022/dialog/lib/routable-dialog.js.map +0 -1
  710. package/esm2022/dialog/malva-ui-core-dialog.js +0 -5
  711. package/esm2022/dialog/malva-ui-core-dialog.js.map +0 -1
  712. package/esm2022/divider/index.js +0 -2
  713. package/esm2022/divider/index.js.map +0 -1
  714. package/esm2022/divider/lib/divider/divider.js +0 -73
  715. package/esm2022/divider/lib/divider/divider.js.map +0 -1
  716. package/esm2022/divider/malva-ui-core-divider.js +0 -5
  717. package/esm2022/divider/malva-ui-core-divider.js.map +0 -1
  718. package/esm2022/drawer/index.js +0 -12
  719. package/esm2022/drawer/index.js.map +0 -1
  720. package/esm2022/drawer/lib/drawer/drawer.js +0 -180
  721. package/esm2022/drawer/lib/drawer/drawer.js.map +0 -1
  722. package/esm2022/drawer/lib/drawer-body.js +0 -32
  723. package/esm2022/drawer/lib/drawer-body.js.map +0 -1
  724. package/esm2022/drawer/lib/drawer-content.js +0 -14
  725. package/esm2022/drawer/lib/drawer-content.js.map +0 -1
  726. package/esm2022/drawer/lib/drawer-footer.js +0 -14
  727. package/esm2022/drawer/lib/drawer-footer.js.map +0 -1
  728. package/esm2022/drawer/lib/drawer-header.js +0 -14
  729. package/esm2022/drawer/lib/drawer-header.js.map +0 -1
  730. package/esm2022/drawer/lib/drawer-ref.js +0 -31
  731. package/esm2022/drawer/lib/drawer-ref.js.map +0 -1
  732. package/esm2022/drawer/lib/drawer-resize.js +0 -243
  733. package/esm2022/drawer/lib/drawer-resize.js.map +0 -1
  734. package/esm2022/drawer/lib/drawer-section/drawer-section.js +0 -26
  735. package/esm2022/drawer/lib/drawer-section/drawer-section.js.map +0 -1
  736. package/esm2022/drawer/lib/drawer-sections/drawer-sections.js +0 -58
  737. package/esm2022/drawer/lib/drawer-sections/drawer-sections.js.map +0 -1
  738. package/esm2022/drawer/lib/drawer-sections.service.js +0 -83
  739. package/esm2022/drawer/lib/drawer-sections.service.js.map +0 -1
  740. package/esm2022/drawer/lib/drawer.service.js +0 -86
  741. package/esm2022/drawer/lib/drawer.service.js.map +0 -1
  742. package/esm2022/drawer/lib/generate-routable-drawer-route.js +0 -52
  743. package/esm2022/drawer/lib/generate-routable-drawer-route.js.map +0 -1
  744. package/esm2022/drawer/lib/routable-drawer.js +0 -91
  745. package/esm2022/drawer/lib/routable-drawer.js.map +0 -1
  746. package/esm2022/drawer/malva-ui-core-drawer.js +0 -5
  747. package/esm2022/drawer/malva-ui-core-drawer.js.map +0 -1
  748. package/esm2022/dropdown/index.js +0 -10
  749. package/esm2022/dropdown/index.js.map +0 -1
  750. package/esm2022/dropdown/lib/active-descendant.js +0 -92
  751. package/esm2022/dropdown/lib/active-descendant.js.map +0 -1
  752. package/esm2022/dropdown/lib/dropdown-panel/dropdown-panel.js +0 -295
  753. package/esm2022/dropdown/lib/dropdown-panel/dropdown-panel.js.map +0 -1
  754. package/esm2022/dropdown/lib/highlight-match.pipe.js +0 -36
  755. package/esm2022/dropdown/lib/highlight-match.pipe.js.map +0 -1
  756. package/esm2022/dropdown/lib/option-matcher.js +0 -124
  757. package/esm2022/dropdown/lib/option-matcher.js.map +0 -1
  758. package/esm2022/dropdown/lib/options-adapter.js +0 -356
  759. package/esm2022/dropdown/lib/options-adapter.js.map +0 -1
  760. package/esm2022/dropdown/lib/options-result.js +0 -11
  761. package/esm2022/dropdown/lib/options-result.js.map +0 -1
  762. package/esm2022/dropdown/lib/reconciliation.js +0 -32
  763. package/esm2022/dropdown/lib/reconciliation.js.map +0 -1
  764. package/esm2022/dropdown/lib/select-data-source.js +0 -21
  765. package/esm2022/dropdown/lib/select-data-source.js.map +0 -1
  766. package/esm2022/dropdown/lib/select-option.js +0 -25
  767. package/esm2022/dropdown/lib/select-option.js.map +0 -1
  768. package/esm2022/dropdown/malva-ui-core-dropdown.js +0 -5
  769. package/esm2022/dropdown/malva-ui-core-dropdown.js.map +0 -1
  770. package/esm2022/empty-state/index.js +0 -2
  771. package/esm2022/empty-state/index.js.map +0 -1
  772. package/esm2022/empty-state/lib/empty-state/empty-state.js +0 -43
  773. package/esm2022/empty-state/lib/empty-state/empty-state.js.map +0 -1
  774. package/esm2022/empty-state/malva-ui-core-empty-state.js +0 -5
  775. package/esm2022/empty-state/malva-ui-core-empty-state.js.map +0 -1
  776. package/esm2022/expand/index.js +0 -3
  777. package/esm2022/expand/index.js.map +0 -1
  778. package/esm2022/expand/lib/expand/expand-content.js +0 -33
  779. package/esm2022/expand/lib/expand/expand-content.js.map +0 -1
  780. package/esm2022/expand/lib/expand/expand.js +0 -93
  781. package/esm2022/expand/lib/expand/expand.js.map +0 -1
  782. package/esm2022/expand/malva-ui-core-expand.js +0 -5
  783. package/esm2022/expand/malva-ui-core-expand.js.map +0 -1
  784. package/esm2022/file-upload/index.js +0 -5
  785. package/esm2022/file-upload/index.js.map +0 -1
  786. package/esm2022/file-upload/lib/file-upload/file-upload.js +0 -324
  787. package/esm2022/file-upload/lib/file-upload/file-upload.js.map +0 -1
  788. package/esm2022/file-upload/lib/file-upload/file-upload.types.js +0 -1
  789. package/esm2022/file-upload/lib/file-upload/file-upload.types.js.map +0 -1
  790. package/esm2022/file-upload/lib/file-upload-action.js +0 -65
  791. package/esm2022/file-upload/lib/file-upload-action.js.map +0 -1
  792. package/esm2022/file-upload/lib/file-upload-item/file-upload-item.js +0 -55
  793. package/esm2022/file-upload/lib/file-upload-item/file-upload-item.js.map +0 -1
  794. package/esm2022/file-upload/malva-ui-core-file-upload.js +0 -5
  795. package/esm2022/file-upload/malva-ui-core-file-upload.js.map +0 -1
  796. package/esm2022/filter/index.js +0 -4
  797. package/esm2022/filter/index.js.map +0 -1
  798. package/esm2022/filter/lib/filter/filter.js +0 -552
  799. package/esm2022/filter/lib/filter/filter.js.map +0 -1
  800. package/esm2022/filter/lib/filter.types.js +0 -1
  801. package/esm2022/filter/lib/filter.types.js.map +0 -1
  802. package/esm2022/filter/lib/smart-filter-bar/smart-filter-bar.js +0 -518
  803. package/esm2022/filter/lib/smart-filter-bar/smart-filter-bar.js.map +0 -1
  804. package/esm2022/filter/malva-ui-core-filter.js +0 -5
  805. package/esm2022/filter/malva-ui-core-filter.js.map +0 -1
  806. package/esm2022/form/index.js +0 -7
  807. package/esm2022/form/index.js.map +0 -1
  808. package/esm2022/form/lib/fieldset/fieldset.js +0 -101
  809. package/esm2022/form/lib/fieldset/fieldset.js.map +0 -1
  810. package/esm2022/form/lib/fieldset-span.js +0 -49
  811. package/esm2022/form/lib/fieldset-span.js.map +0 -1
  812. package/esm2022/form/lib/form/form.js +0 -60
  813. package/esm2022/form/lib/form/form.js.map +0 -1
  814. package/esm2022/form/lib/form-actions.js +0 -34
  815. package/esm2022/form/lib/form-actions.js.map +0 -1
  816. package/esm2022/form/lib/form-gap.js +0 -15
  817. package/esm2022/form/lib/form-gap.js.map +0 -1
  818. package/esm2022/form/lib/form-header.js +0 -27
  819. package/esm2022/form/lib/form-header.js.map +0 -1
  820. package/esm2022/form/lib/form.types.js +0 -1
  821. package/esm2022/form/lib/form.types.js.map +0 -1
  822. package/esm2022/form/malva-ui-core-form.js +0 -5
  823. package/esm2022/form/malva-ui-core-form.js.map +0 -1
  824. package/esm2022/form-utils/index.js +0 -16
  825. package/esm2022/form-utils/index.js.map +0 -1
  826. package/esm2022/form-utils/lib/aria-value-bridge.js +0 -57
  827. package/esm2022/form-utils/lib/aria-value-bridge.js.map +0 -1
  828. package/esm2022/form-utils/lib/description/description.js +0 -24
  829. package/esm2022/form-utils/lib/description/description.js.map +0 -1
  830. package/esm2022/form-utils/lib/focusable-group-base.js +0 -87
  831. package/esm2022/form-utils/lib/focusable-group-base.js.map +0 -1
  832. package/esm2022/form-utils/lib/form-control-base/signal-form-control-base.js +0 -192
  833. package/esm2022/form-utils/lib/form-control-base/signal-form-control-base.js.map +0 -1
  834. package/esm2022/form-utils/lib/form-control-sides.js +0 -34
  835. package/esm2022/form-utils/lib/form-control-sides.js.map +0 -1
  836. package/esm2022/form-utils/lib/form-control-wrapper/form-control-wrapper-control.js +0 -14
  837. package/esm2022/form-utils/lib/form-control-wrapper/form-control-wrapper-control.js.map +0 -1
  838. package/esm2022/form-utils/lib/form-control-wrapper/form-control-wrapper.js +0 -47
  839. package/esm2022/form-utils/lib/form-control-wrapper/form-control-wrapper.js.map +0 -1
  840. package/esm2022/form-utils/lib/form-field/form-field.js +0 -245
  841. package/esm2022/form-utils/lib/form-field/form-field.js.map +0 -1
  842. package/esm2022/form-utils/lib/hint/hint.js +0 -11
  843. package/esm2022/form-utils/lib/hint/hint.js.map +0 -1
  844. package/esm2022/form-utils/lib/label/label.js +0 -55
  845. package/esm2022/form-utils/lib/label/label.js.map +0 -1
  846. package/esm2022/form-utils/lib/message/message.js +0 -20
  847. package/esm2022/form-utils/lib/message/message.js.map +0 -1
  848. package/esm2022/form-utils/lib/models/error-display-strategy.js +0 -1
  849. package/esm2022/form-utils/lib/models/error-display-strategy.js.map +0 -1
  850. package/esm2022/form-utils/lib/models/form-control-connector.js +0 -3
  851. package/esm2022/form-utils/lib/models/form-control-connector.js.map +0 -1
  852. package/esm2022/form-utils/lib/models/form-state.js +0 -1
  853. package/esm2022/form-utils/lib/models/form-state.js.map +0 -1
  854. package/esm2022/form-utils/lib/selection.service.js +0 -81
  855. package/esm2022/form-utils/lib/selection.service.js.map +0 -1
  856. package/esm2022/form-utils/malva-ui-core-form-utils.js +0 -5
  857. package/esm2022/form-utils/malva-ui-core-form-utils.js.map +0 -1
  858. package/esm2022/form-utils/testing/index.js +0 -2
  859. package/esm2022/form-utils/testing/index.js.map +0 -1
  860. package/esm2022/form-utils/testing/lib/forms-binding-matrix.js +0 -32
  861. package/esm2022/form-utils/testing/lib/forms-binding-matrix.js.map +0 -1
  862. package/esm2022/form-utils/testing/malva-ui-core-form-utils-testing.js +0 -5
  863. package/esm2022/form-utils/testing/malva-ui-core-form-utils-testing.js.map +0 -1
  864. package/esm2022/index.js +0 -70
  865. package/esm2022/index.js.map +0 -1
  866. package/esm2022/input/index.js +0 -4
  867. package/esm2022/input/index.js.map +0 -1
  868. package/esm2022/input/lib/input/input-native.js +0 -49
  869. package/esm2022/input/lib/input/input-native.js.map +0 -1
  870. package/esm2022/input/lib/input/input-value-accessor.js +0 -4
  871. package/esm2022/input/lib/input/input-value-accessor.js.map +0 -1
  872. package/esm2022/input/lib/input/input.js +0 -277
  873. package/esm2022/input/lib/input/input.js.map +0 -1
  874. package/esm2022/input/lib/input/password-strength.js +0 -46
  875. package/esm2022/input/lib/input/password-strength.js.map +0 -1
  876. package/esm2022/input/malva-ui-core-input.js +0 -5
  877. package/esm2022/input/malva-ui-core-input.js.map +0 -1
  878. package/esm2022/kbd/index.js +0 -2
  879. package/esm2022/kbd/index.js.map +0 -1
  880. package/esm2022/kbd/lib/kbd/kbd.js +0 -124
  881. package/esm2022/kbd/lib/kbd/kbd.js.map +0 -1
  882. package/esm2022/kbd/malva-ui-core-kbd.js +0 -5
  883. package/esm2022/kbd/malva-ui-core-kbd.js.map +0 -1
  884. package/esm2022/layout/index.js +0 -5
  885. package/esm2022/layout/index.js.map +0 -1
  886. package/esm2022/layout/lib/layout/directives/MlvLayoutSide.js +0 -14
  887. package/esm2022/layout/lib/layout/directives/MlvLayoutSide.js.map +0 -1
  888. package/esm2022/layout/lib/layout/directives/MlvLayoutTop.js +0 -14
  889. package/esm2022/layout/lib/layout/directives/MlvLayoutTop.js.map +0 -1
  890. package/esm2022/layout/lib/layout/layout.js +0 -43
  891. package/esm2022/layout/lib/layout/layout.js.map +0 -1
  892. package/esm2022/layout/lib/layout/services/theme.service.js +0 -121
  893. package/esm2022/layout/lib/layout/services/theme.service.js.map +0 -1
  894. package/esm2022/layout/malva-ui-core-layout.js +0 -5
  895. package/esm2022/layout/malva-ui-core-layout.js.map +0 -1
  896. package/esm2022/link/index.js +0 -3
  897. package/esm2022/link/index.js.map +0 -1
  898. package/esm2022/link/lib/link/link.directives.js +0 -24
  899. package/esm2022/link/lib/link/link.directives.js.map +0 -1
  900. package/esm2022/link/lib/link/link.js +0 -61
  901. package/esm2022/link/lib/link/link.js.map +0 -1
  902. package/esm2022/link/malva-ui-core-link.js +0 -5
  903. package/esm2022/link/malva-ui-core-link.js.map +0 -1
  904. package/esm2022/list/index.js +0 -14
  905. package/esm2022/list/index.js.map +0 -1
  906. package/esm2022/list/lib/list/list.js +0 -28
  907. package/esm2022/list/lib/list/list.js.map +0 -1
  908. package/esm2022/list/lib/list-item/list-item.js +0 -125
  909. package/esm2022/list/lib/list-item/list-item.js.map +0 -1
  910. package/esm2022/list/lib/list-item-actions.js +0 -23
  911. package/esm2022/list/lib/list-item-actions.js.map +0 -1
  912. package/esm2022/list/lib/list-item-byline.js +0 -13
  913. package/esm2022/list/lib/list-item-byline.js.map +0 -1
  914. package/esm2022/list/lib/list-item-group/list-item-group.js +0 -25
  915. package/esm2022/list/lib/list-item-group/list-item-group.js.map +0 -1
  916. package/esm2022/list/lib/list-item-link/list-item-link.js +0 -20
  917. package/esm2022/list/lib/list-item-link/list-item-link.js.map +0 -1
  918. package/esm2022/list/lib/list-item-media.js +0 -13
  919. package/esm2022/list/lib/list-item-media.js.map +0 -1
  920. package/esm2022/list/lib/list-item-meta.js +0 -13
  921. package/esm2022/list/lib/list-item-meta.js.map +0 -1
  922. package/esm2022/list/lib/list-item-prefix.js +0 -13
  923. package/esm2022/list/lib/list-item-prefix.js.map +0 -1
  924. package/esm2022/list/lib/list-item-suffix.js +0 -13
  925. package/esm2022/list/lib/list-item-suffix.js.map +0 -1
  926. package/esm2022/list/lib/list-item-template.js +0 -14
  927. package/esm2022/list/lib/list-item-template.js.map +0 -1
  928. package/esm2022/list/lib/list-item-title.js +0 -13
  929. package/esm2022/list/lib/list-item-title.js.map +0 -1
  930. package/esm2022/list/lib/list-selectable.js +0 -116
  931. package/esm2022/list/lib/list-selectable.js.map +0 -1
  932. package/esm2022/list/malva-ui-core-list.js +0 -5
  933. package/esm2022/list/malva-ui-core-list.js.map +0 -1
  934. package/esm2022/loader/index.js +0 -2
  935. package/esm2022/loader/index.js.map +0 -1
  936. package/esm2022/loader/lib/loader/loader.js +0 -134
  937. package/esm2022/loader/lib/loader/loader.js.map +0 -1
  938. package/esm2022/loader/malva-ui-core-loader.js +0 -5
  939. package/esm2022/loader/malva-ui-core-loader.js.map +0 -1
  940. package/esm2022/malva-ui-core.js +0 -5
  941. package/esm2022/malva-ui-core.js.map +0 -1
  942. package/esm2022/menu/index.js +0 -10
  943. package/esm2022/menu/index.js.map +0 -1
  944. package/esm2022/menu/lib/menu/menu-group-label.js +0 -35
  945. package/esm2022/menu/lib/menu/menu-group-label.js.map +0 -1
  946. package/esm2022/menu/lib/menu/menu-group.js +0 -44
  947. package/esm2022/menu/lib/menu/menu-group.js.map +0 -1
  948. package/esm2022/menu/lib/menu/menu-item.js +0 -117
  949. package/esm2022/menu/lib/menu/menu-item.js.map +0 -1
  950. package/esm2022/menu/lib/menu/menu-separator.js +0 -41
  951. package/esm2022/menu/lib/menu/menu-separator.js.map +0 -1
  952. package/esm2022/menu/lib/menu/menu-trigger.js +0 -653
  953. package/esm2022/menu/lib/menu/menu-trigger.js.map +0 -1
  954. package/esm2022/menu/lib/menu/menu.js +0 -308
  955. package/esm2022/menu/lib/menu/menu.js.map +0 -1
  956. package/esm2022/menu/lib/menu/menu.types.js +0 -4
  957. package/esm2022/menu/lib/menu/menu.types.js.map +0 -1
  958. package/esm2022/menu/lib/menu/menubar.js +0 -257
  959. package/esm2022/menu/lib/menu/menubar.js.map +0 -1
  960. package/esm2022/menu/lib/menu/menubar.types.js +0 -4
  961. package/esm2022/menu/lib/menu/menubar.types.js.map +0 -1
  962. package/esm2022/menu/lib/menu/submenu-aim.js +0 -30
  963. package/esm2022/menu/lib/menu/submenu-aim.js.map +0 -1
  964. package/esm2022/menu/malva-ui-core-menu.js +0 -5
  965. package/esm2022/menu/malva-ui-core-menu.js.map +0 -1
  966. package/esm2022/notification/index.js +0 -5
  967. package/esm2022/notification/index.js.map +0 -1
  968. package/esm2022/notification/lib/notification-item/notification-item.js +0 -65
  969. package/esm2022/notification/lib/notification-item/notification-item.js.map +0 -1
  970. package/esm2022/notification/lib/notification-ref.js +0 -13
  971. package/esm2022/notification/lib/notification-ref.js.map +0 -1
  972. package/esm2022/notification/lib/notification.service.js +0 -118
  973. package/esm2022/notification/lib/notification.service.js.map +0 -1
  974. package/esm2022/notification/lib/notification.types.js +0 -6
  975. package/esm2022/notification/lib/notification.types.js.map +0 -1
  976. package/esm2022/notification/malva-ui-core-notification.js +0 -5
  977. package/esm2022/notification/malva-ui-core-notification.js.map +0 -1
  978. package/esm2022/number-input/index.js +0 -2
  979. package/esm2022/number-input/index.js.map +0 -1
  980. package/esm2022/number-input/lib/number-input/number-input.js +0 -395
  981. package/esm2022/number-input/lib/number-input/number-input.js.map +0 -1
  982. package/esm2022/number-input/malva-ui-core-number-input.js +0 -5
  983. package/esm2022/number-input/malva-ui-core-number-input.js.map +0 -1
  984. package/esm2022/page/index.js +0 -15
  985. package/esm2022/page/index.js.map +0 -1
  986. package/esm2022/page/lib/page/page-scroll.token.js +0 -9
  987. package/esm2022/page/lib/page/page-scroll.token.js.map +0 -1
  988. package/esm2022/page/lib/page/page-snap-controller.js +0 -170
  989. package/esm2022/page/lib/page/page-snap-controller.js.map +0 -1
  990. package/esm2022/page/lib/page/page-snap.directive.js +0 -65
  991. package/esm2022/page/lib/page/page-snap.directive.js.map +0 -1
  992. package/esm2022/page/lib/page/page.js +0 -173
  993. package/esm2022/page/lib/page/page.js.map +0 -1
  994. package/esm2022/page/lib/page-content/page-aside.js +0 -13
  995. package/esm2022/page/lib/page-content/page-aside.js.map +0 -1
  996. package/esm2022/page/lib/page-content/page-content.js +0 -72
  997. package/esm2022/page/lib/page-content/page-content.js.map +0 -1
  998. package/esm2022/page/lib/page-dock/page-dock.js +0 -128
  999. package/esm2022/page/lib/page-dock/page-dock.js.map +0 -1
  1000. package/esm2022/page/lib/page-dock/page-dock.slots.js +0 -39
  1001. package/esm2022/page/lib/page-dock/page-dock.slots.js.map +0 -1
  1002. package/esm2022/page/lib/page-header/page-header.directives.js +0 -88
  1003. package/esm2022/page/lib/page-header/page-header.directives.js.map +0 -1
  1004. package/esm2022/page/lib/page-header/page-header.js +0 -124
  1005. package/esm2022/page/lib/page-header/page-header.js.map +0 -1
  1006. package/esm2022/page/lib/page-shell/page-shell-color.js +0 -193
  1007. package/esm2022/page/lib/page-shell/page-shell-color.js.map +0 -1
  1008. package/esm2022/page/lib/page-shell/page-shell-css-color.js +0 -207
  1009. package/esm2022/page/lib/page-shell/page-shell-css-color.js.map +0 -1
  1010. package/esm2022/page/lib/page-shell/page-shell.js +0 -131
  1011. package/esm2022/page/lib/page-shell/page-shell.js.map +0 -1
  1012. package/esm2022/page/lib/page-shell/page-shell.slots.js +0 -41
  1013. package/esm2022/page/lib/page-shell/page-shell.slots.js.map +0 -1
  1014. package/esm2022/page/lib/page-summary/page-summary-item.js +0 -26
  1015. package/esm2022/page/lib/page-summary/page-summary-item.js.map +0 -1
  1016. package/esm2022/page/lib/page-summary/page-summary.js +0 -87
  1017. package/esm2022/page/lib/page-summary/page-summary.js.map +0 -1
  1018. package/esm2022/page/malva-ui-core-page.js +0 -5
  1019. package/esm2022/page/malva-ui-core-page.js.map +0 -1
  1020. package/esm2022/pagination/index.js +0 -5
  1021. package/esm2022/pagination/index.js.map +0 -1
  1022. package/esm2022/pagination/lib/pagination/pagination.directives.js +0 -58
  1023. package/esm2022/pagination/lib/pagination/pagination.directives.js.map +0 -1
  1024. package/esm2022/pagination/lib/pagination/pagination.js +0 -293
  1025. package/esm2022/pagination/lib/pagination/pagination.js.map +0 -1
  1026. package/esm2022/pagination/lib/pagination/pagination.model.js +0 -1
  1027. package/esm2022/pagination/lib/pagination/pagination.model.js.map +0 -1
  1028. package/esm2022/pagination/lib/pagination/pagination.service.js +0 -108
  1029. package/esm2022/pagination/lib/pagination/pagination.service.js.map +0 -1
  1030. package/esm2022/pagination/malva-ui-core-pagination.js +0 -5
  1031. package/esm2022/pagination/malva-ui-core-pagination.js.map +0 -1
  1032. package/esm2022/pin-input/index.js +0 -3
  1033. package/esm2022/pin-input/index.js.map +0 -1
  1034. package/esm2022/pin-input/lib/pin-input/pin-input-separator.js +0 -31
  1035. package/esm2022/pin-input/lib/pin-input/pin-input-separator.js.map +0 -1
  1036. package/esm2022/pin-input/lib/pin-input/pin-input.js +0 -365
  1037. package/esm2022/pin-input/lib/pin-input/pin-input.js.map +0 -1
  1038. package/esm2022/pin-input/malva-ui-core-pin-input.js +0 -5
  1039. package/esm2022/pin-input/malva-ui-core-pin-input.js.map +0 -1
  1040. package/esm2022/popup/index.js +0 -10
  1041. package/esm2022/popup/index.js.map +0 -1
  1042. package/esm2022/popup/lib/popup/popup.js +0 -500
  1043. package/esm2022/popup/lib/popup/popup.js.map +0 -1
  1044. package/esm2022/popup/lib/popup-container/popup-container.js +0 -169
  1045. package/esm2022/popup/lib/popup-container/popup-container.js.map +0 -1
  1046. package/esm2022/popup/lib/popup-container/popup-container.token.js +0 -9
  1047. package/esm2022/popup/lib/popup-container/popup-container.token.js.map +0 -1
  1048. package/esm2022/popup/lib/popup-content.js +0 -14
  1049. package/esm2022/popup/lib/popup-content.js.map +0 -1
  1050. package/esm2022/popup/lib/popup-header-content.js +0 -26
  1051. package/esm2022/popup/lib/popup-header-content.js.map +0 -1
  1052. package/esm2022/popup/lib/popup-pinned-content.js +0 -25
  1053. package/esm2022/popup/lib/popup-pinned-content.js.map +0 -1
  1054. package/esm2022/popup/lib/popup-positions.js +0 -252
  1055. package/esm2022/popup/lib/popup-positions.js.map +0 -1
  1056. package/esm2022/popup/lib/popup-trigger/popup-trigger.js +0 -308
  1057. package/esm2022/popup/lib/popup-trigger/popup-trigger.js.map +0 -1
  1058. package/esm2022/popup/lib/popup.service.js +0 -188
  1059. package/esm2022/popup/lib/popup.service.js.map +0 -1
  1060. package/esm2022/popup/malva-ui-core-popup.js +0 -5
  1061. package/esm2022/popup/malva-ui-core-popup.js.map +0 -1
  1062. package/esm2022/progress/index.js +0 -2
  1063. package/esm2022/progress/index.js.map +0 -1
  1064. package/esm2022/progress/lib/progress/progress.js +0 -102
  1065. package/esm2022/progress/lib/progress/progress.js.map +0 -1
  1066. package/esm2022/progress/malva-ui-core-progress.js +0 -5
  1067. package/esm2022/progress/malva-ui-core-progress.js.map +0 -1
  1068. package/esm2022/radio/index.js +0 -3
  1069. package/esm2022/radio/index.js.map +0 -1
  1070. package/esm2022/radio/lib/radio/radio.js +0 -134
  1071. package/esm2022/radio/lib/radio/radio.js.map +0 -1
  1072. package/esm2022/radio/lib/radio-group/radio-group.js +0 -176
  1073. package/esm2022/radio/lib/radio-group/radio-group.js.map +0 -1
  1074. package/esm2022/radio/lib/radio-group-token.js +0 -3
  1075. package/esm2022/radio/lib/radio-group-token.js.map +0 -1
  1076. package/esm2022/radio/malva-ui-core-radio.js +0 -5
  1077. package/esm2022/radio/malva-ui-core-radio.js.map +0 -1
  1078. package/esm2022/rating/index.js +0 -2
  1079. package/esm2022/rating/index.js.map +0 -1
  1080. package/esm2022/rating/lib/rating/rating.js +0 -208
  1081. package/esm2022/rating/lib/rating/rating.js.map +0 -1
  1082. package/esm2022/rating/malva-ui-core-rating.js +0 -5
  1083. package/esm2022/rating/malva-ui-core-rating.js.map +0 -1
  1084. package/esm2022/scrollbar/index.js +0 -2
  1085. package/esm2022/scrollbar/index.js.map +0 -1
  1086. package/esm2022/scrollbar/lib/scrollbar/scrollbar.js +0 -388
  1087. package/esm2022/scrollbar/lib/scrollbar/scrollbar.js.map +0 -1
  1088. package/esm2022/scrollbar/malva-ui-core-scrollbar.js +0 -5
  1089. package/esm2022/scrollbar/malva-ui-core-scrollbar.js.map +0 -1
  1090. package/esm2022/search-field/index.js +0 -3
  1091. package/esm2022/search-field/index.js.map +0 -1
  1092. package/esm2022/search-field/lib/search-field/search-field.js +0 -535
  1093. package/esm2022/search-field/lib/search-field/search-field.js.map +0 -1
  1094. package/esm2022/search-field/lib/search-field/search-overlay-content.js +0 -35
  1095. package/esm2022/search-field/lib/search-field/search-overlay-content.js.map +0 -1
  1096. package/esm2022/search-field/malva-ui-core-search-field.js +0 -5
  1097. package/esm2022/search-field/malva-ui-core-search-field.js.map +0 -1
  1098. package/esm2022/segmented/index.js +0 -5
  1099. package/esm2022/segmented/index.js.map +0 -1
  1100. package/esm2022/segmented/lib/segmented/segmented.js +0 -248
  1101. package/esm2022/segmented/lib/segmented/segmented.js.map +0 -1
  1102. package/esm2022/segmented/lib/segmented-item/segmented-item.js +0 -194
  1103. package/esm2022/segmented/lib/segmented-item/segmented-item.js.map +0 -1
  1104. package/esm2022/segmented/lib/segmented-token.js +0 -4
  1105. package/esm2022/segmented/lib/segmented-token.js.map +0 -1
  1106. package/esm2022/segmented/lib/segmented.types.js +0 -1
  1107. package/esm2022/segmented/lib/segmented.types.js.map +0 -1
  1108. package/esm2022/segmented/malva-ui-core-segmented.js +0 -5
  1109. package/esm2022/segmented/malva-ui-core-segmented.js.map +0 -1
  1110. package/esm2022/select/index.js +0 -4
  1111. package/esm2022/select/index.js.map +0 -1
  1112. package/esm2022/select/lib/select/select.js +0 -685
  1113. package/esm2022/select/lib/select/select.js.map +0 -1
  1114. package/esm2022/select/lib/select-option.js +0 -2
  1115. package/esm2022/select/lib/select-option.js.map +0 -1
  1116. package/esm2022/select/lib/select-template.directives.js +0 -34
  1117. package/esm2022/select/lib/select-template.directives.js.map +0 -1
  1118. package/esm2022/select/malva-ui-core-select.js +0 -5
  1119. package/esm2022/select/malva-ui-core-select.js.map +0 -1
  1120. package/esm2022/sidebar/index.js +0 -16
  1121. package/esm2022/sidebar/index.js.map +0 -1
  1122. package/esm2022/sidebar/lib/sidebar/sidebar.js +0 -251
  1123. package/esm2022/sidebar/lib/sidebar/sidebar.js.map +0 -1
  1124. package/esm2022/sidebar/lib/sidebar-content.js +0 -37
  1125. package/esm2022/sidebar/lib/sidebar-content.js.map +0 -1
  1126. package/esm2022/sidebar/lib/sidebar-context.js +0 -3
  1127. package/esm2022/sidebar/lib/sidebar-context.js.map +0 -1
  1128. package/esm2022/sidebar/lib/sidebar-footer.js +0 -20
  1129. package/esm2022/sidebar/lib/sidebar-footer.js.map +0 -1
  1130. package/esm2022/sidebar/lib/sidebar-group/sidebar-group.js +0 -341
  1131. package/esm2022/sidebar/lib/sidebar-group/sidebar-group.js.map +0 -1
  1132. package/esm2022/sidebar/lib/sidebar-header.js +0 -20
  1133. package/esm2022/sidebar/lib/sidebar-header.js.map +0 -1
  1134. package/esm2022/sidebar/lib/sidebar-item/sidebar-item.js +0 -216
  1135. package/esm2022/sidebar/lib/sidebar-item/sidebar-item.js.map +0 -1
  1136. package/esm2022/sidebar/lib/sidebar-item-host.js +0 -39
  1137. package/esm2022/sidebar/lib/sidebar-item-host.js.map +0 -1
  1138. package/esm2022/sidebar/lib/sidebar-item-icon.js +0 -14
  1139. package/esm2022/sidebar/lib/sidebar-item-icon.js.map +0 -1
  1140. package/esm2022/sidebar/lib/sidebar-mode.js +0 -1
  1141. package/esm2022/sidebar/lib/sidebar-mode.js.map +0 -1
  1142. package/esm2022/sidebar/lib/sidebar-rail/sidebar-rail.js +0 -202
  1143. package/esm2022/sidebar/lib/sidebar-rail/sidebar-rail.js.map +0 -1
  1144. package/esm2022/sidebar/lib/sidebar-trigger/sidebar-trigger.js +0 -159
  1145. package/esm2022/sidebar/lib/sidebar-trigger/sidebar-trigger.js.map +0 -1
  1146. package/esm2022/sidebar/lib/sidebar-workspace/sidebar-workspace.directives.js +0 -35
  1147. package/esm2022/sidebar/lib/sidebar-workspace/sidebar-workspace.directives.js.map +0 -1
  1148. package/esm2022/sidebar/lib/sidebar-workspace/sidebar-workspace.js +0 -107
  1149. package/esm2022/sidebar/lib/sidebar-workspace/sidebar-workspace.js.map +0 -1
  1150. package/esm2022/sidebar/lib/sidebar-workspace/sidebar-workspace.types.js +0 -1
  1151. package/esm2022/sidebar/lib/sidebar-workspace/sidebar-workspace.types.js.map +0 -1
  1152. package/esm2022/sidebar/malva-ui-core-sidebar.js +0 -5
  1153. package/esm2022/sidebar/malva-ui-core-sidebar.js.map +0 -1
  1154. package/esm2022/skeleton/index.js +0 -2
  1155. package/esm2022/skeleton/index.js.map +0 -1
  1156. package/esm2022/skeleton/lib/skeleton/skeleton.js +0 -78
  1157. package/esm2022/skeleton/lib/skeleton/skeleton.js.map +0 -1
  1158. package/esm2022/skeleton/malva-ui-core-skeleton.js +0 -5
  1159. package/esm2022/skeleton/malva-ui-core-skeleton.js.map +0 -1
  1160. package/esm2022/slider/index.js +0 -3
  1161. package/esm2022/slider/index.js.map +0 -1
  1162. package/esm2022/slider/lib/slider/slider-tooltip-def.js +0 -31
  1163. package/esm2022/slider/lib/slider/slider-tooltip-def.js.map +0 -1
  1164. package/esm2022/slider/lib/slider/slider.js +0 -468
  1165. package/esm2022/slider/lib/slider/slider.js.map +0 -1
  1166. package/esm2022/slider/malva-ui-core-slider.js +0 -5
  1167. package/esm2022/slider/malva-ui-core-slider.js.map +0 -1
  1168. package/esm2022/split-pane/index.js +0 -4
  1169. package/esm2022/split-pane/index.js.map +0 -1
  1170. package/esm2022/split-pane/lib/split-pane/split-pane-panel.js +0 -49
  1171. package/esm2022/split-pane/lib/split-pane/split-pane-panel.js.map +0 -1
  1172. package/esm2022/split-pane/lib/split-pane/split-pane.js +0 -290
  1173. package/esm2022/split-pane/lib/split-pane/split-pane.js.map +0 -1
  1174. package/esm2022/split-pane/lib/split-pane/split-pane.types.js +0 -1
  1175. package/esm2022/split-pane/lib/split-pane/split-pane.types.js.map +0 -1
  1176. package/esm2022/split-pane/malva-ui-core-split-pane.js +0 -5
  1177. package/esm2022/split-pane/malva-ui-core-split-pane.js.map +0 -1
  1178. package/esm2022/status-indicator/index.js +0 -2
  1179. package/esm2022/status-indicator/index.js.map +0 -1
  1180. package/esm2022/status-indicator/lib/status-indicator/status-indicator.js +0 -71
  1181. package/esm2022/status-indicator/lib/status-indicator/status-indicator.js.map +0 -1
  1182. package/esm2022/status-indicator/malva-ui-core-status-indicator.js +0 -5
  1183. package/esm2022/status-indicator/malva-ui-core-status-indicator.js.map +0 -1
  1184. package/esm2022/stepper/index.js +0 -5
  1185. package/esm2022/stepper/index.js.map +0 -1
  1186. package/esm2022/stepper/lib/stepper/step-header.js +0 -46
  1187. package/esm2022/stepper/lib/stepper/step-header.js.map +0 -1
  1188. package/esm2022/stepper/lib/stepper/step.js +0 -65
  1189. package/esm2022/stepper/lib/stepper/step.js.map +0 -1
  1190. package/esm2022/stepper/lib/stepper/stepper-token.js +0 -4
  1191. package/esm2022/stepper/lib/stepper/stepper-token.js.map +0 -1
  1192. package/esm2022/stepper/lib/stepper/stepper.js +0 -216
  1193. package/esm2022/stepper/lib/stepper/stepper.js.map +0 -1
  1194. package/esm2022/stepper/lib/stepper/stepper.types.js +0 -1
  1195. package/esm2022/stepper/lib/stepper/stepper.types.js.map +0 -1
  1196. package/esm2022/stepper/malva-ui-core-stepper.js +0 -5
  1197. package/esm2022/stepper/malva-ui-core-stepper.js.map +0 -1
  1198. package/esm2022/switch/index.js +0 -3
  1199. package/esm2022/switch/index.js.map +0 -1
  1200. package/esm2022/switch/lib/switch/switch.js +0 -190
  1201. package/esm2022/switch/lib/switch/switch.js.map +0 -1
  1202. package/esm2022/switch/lib/switch-group/switch-group.js +0 -68
  1203. package/esm2022/switch/lib/switch-group/switch-group.js.map +0 -1
  1204. package/esm2022/switch/lib/switch-group-token.js +0 -3
  1205. package/esm2022/switch/lib/switch-group-token.js.map +0 -1
  1206. package/esm2022/switch/malva-ui-core-switch.js +0 -5
  1207. package/esm2022/switch/malva-ui-core-switch.js.map +0 -1
  1208. package/esm2022/tabs/index.js +0 -9
  1209. package/esm2022/tabs/index.js.map +0 -1
  1210. package/esm2022/tabs/lib/tab/tab.js +0 -72
  1211. package/esm2022/tabs/lib/tab/tab.js.map +0 -1
  1212. package/esm2022/tabs/lib/tab-content/tab-content.js +0 -19
  1213. package/esm2022/tabs/lib/tab-content/tab-content.js.map +0 -1
  1214. package/esm2022/tabs/lib/tab-content-def.js +0 -14
  1215. package/esm2022/tabs/lib/tab-content-def.js.map +0 -1
  1216. package/esm2022/tabs/lib/tab-def.js +0 -17
  1217. package/esm2022/tabs/lib/tab-def.js.map +0 -1
  1218. package/esm2022/tabs/lib/tab-group-token.js +0 -3
  1219. package/esm2022/tabs/lib/tab-group-token.js.map +0 -1
  1220. package/esm2022/tabs/lib/tab-item/tab-item.js +0 -44
  1221. package/esm2022/tabs/lib/tab-item/tab-item.js.map +0 -1
  1222. package/esm2022/tabs/lib/tabs/tabs.js +0 -542
  1223. package/esm2022/tabs/lib/tabs/tabs.js.map +0 -1
  1224. package/esm2022/tabs/lib/tabs.service.js +0 -83
  1225. package/esm2022/tabs/lib/tabs.service.js.map +0 -1
  1226. package/esm2022/tabs/malva-ui-core-tabs.js +0 -5
  1227. package/esm2022/tabs/malva-ui-core-tabs.js.map +0 -1
  1228. package/esm2022/textarea/index.js +0 -2
  1229. package/esm2022/textarea/index.js.map +0 -1
  1230. package/esm2022/textarea/lib/textarea/textarea.js +0 -194
  1231. package/esm2022/textarea/lib/textarea/textarea.js.map +0 -1
  1232. package/esm2022/textarea/malva-ui-core-textarea.js +0 -5
  1233. package/esm2022/textarea/malva-ui-core-textarea.js.map +0 -1
  1234. package/esm2022/tile/index.js +0 -3
  1235. package/esm2022/tile/index.js.map +0 -1
  1236. package/esm2022/tile/lib/tile/tile.js +0 -39
  1237. package/esm2022/tile/lib/tile/tile.js.map +0 -1
  1238. package/esm2022/tile/lib/tile-header.js +0 -14
  1239. package/esm2022/tile/lib/tile-header.js.map +0 -1
  1240. package/esm2022/tile/malva-ui-core-tile.js +0 -5
  1241. package/esm2022/tile/malva-ui-core-tile.js.map +0 -1
  1242. package/esm2022/time-picker/index.js +0 -2
  1243. package/esm2022/time-picker/index.js.map +0 -1
  1244. package/esm2022/time-picker/lib/time-picker/time-picker.js +0 -310
  1245. package/esm2022/time-picker/lib/time-picker/time-picker.js.map +0 -1
  1246. package/esm2022/time-picker/lib/time-picker-column/time-picker-column.js +0 -216
  1247. package/esm2022/time-picker/lib/time-picker-column/time-picker-column.js.map +0 -1
  1248. package/esm2022/time-picker/malva-ui-core-time-picker.js +0 -5
  1249. package/esm2022/time-picker/malva-ui-core-time-picker.js.map +0 -1
  1250. package/esm2022/timeline/index.js +0 -6
  1251. package/esm2022/timeline/index.js.map +0 -1
  1252. package/esm2022/timeline/lib/timeline/timeline-item-icon.js +0 -31
  1253. package/esm2022/timeline/lib/timeline/timeline-item-icon.js.map +0 -1
  1254. package/esm2022/timeline/lib/timeline/timeline-item-meta.js +0 -31
  1255. package/esm2022/timeline/lib/timeline/timeline-item-meta.js.map +0 -1
  1256. package/esm2022/timeline/lib/timeline/timeline-item.js +0 -69
  1257. package/esm2022/timeline/lib/timeline/timeline-item.js.map +0 -1
  1258. package/esm2022/timeline/lib/timeline/timeline.js +0 -36
  1259. package/esm2022/timeline/lib/timeline/timeline.js.map +0 -1
  1260. package/esm2022/timeline/lib/timeline/timeline.types.js +0 -1
  1261. package/esm2022/timeline/lib/timeline/timeline.types.js.map +0 -1
  1262. package/esm2022/timeline/malva-ui-core-timeline.js +0 -5
  1263. package/esm2022/timeline/malva-ui-core-timeline.js.map +0 -1
  1264. package/esm2022/title/index.js +0 -2
  1265. package/esm2022/title/index.js.map +0 -1
  1266. package/esm2022/title/lib/title/title.js +0 -171
  1267. package/esm2022/title/lib/title/title.js.map +0 -1
  1268. package/esm2022/title/malva-ui-core-title.js +0 -5
  1269. package/esm2022/title/malva-ui-core-title.js.map +0 -1
  1270. package/esm2022/toast/index.js +0 -13
  1271. package/esm2022/toast/index.js.map +0 -1
  1272. package/esm2022/toast/lib/abstract-toast-container.js +0 -50
  1273. package/esm2022/toast/lib/abstract-toast-container.js.map +0 -1
  1274. package/esm2022/toast/lib/abstract-toast-item.js +0 -75
  1275. package/esm2022/toast/lib/abstract-toast-item.js.map +0 -1
  1276. package/esm2022/toast/lib/abstract-toast.service.js +0 -176
  1277. package/esm2022/toast/lib/abstract-toast.service.js.map +0 -1
  1278. package/esm2022/toast/lib/toast-container/toast-container.js +0 -61
  1279. package/esm2022/toast/lib/toast-container/toast-container.js.map +0 -1
  1280. package/esm2022/toast/lib/toast-item/toast-item.js +0 -62
  1281. package/esm2022/toast/lib/toast-item/toast-item.js.map +0 -1
  1282. package/esm2022/toast/lib/toast-ref.js +0 -54
  1283. package/esm2022/toast/lib/toast-ref.js.map +0 -1
  1284. package/esm2022/toast/lib/toast-timer.js +0 -37
  1285. package/esm2022/toast/lib/toast-timer.js.map +0 -1
  1286. package/esm2022/toast/lib/toast.directives.js +0 -76
  1287. package/esm2022/toast/lib/toast.directives.js.map +0 -1
  1288. package/esm2022/toast/lib/toast.service.js +0 -127
  1289. package/esm2022/toast/lib/toast.service.js.map +0 -1
  1290. package/esm2022/toast/lib/toast.types.js +0 -39
  1291. package/esm2022/toast/lib/toast.types.js.map +0 -1
  1292. package/esm2022/toast/malva-ui-core-toast.js +0 -5
  1293. package/esm2022/toast/malva-ui-core-toast.js.map +0 -1
  1294. package/esm2022/tokenizer/index.js +0 -4
  1295. package/esm2022/tokenizer/index.js.map +0 -1
  1296. package/esm2022/tokenizer/lib/token/token.js +0 -123
  1297. package/esm2022/tokenizer/lib/token/token.js.map +0 -1
  1298. package/esm2022/tokenizer/lib/token-template.js +0 -23
  1299. package/esm2022/tokenizer/lib/token-template.js.map +0 -1
  1300. package/esm2022/tokenizer/lib/tokenizer/tokenizer.js +0 -324
  1301. package/esm2022/tokenizer/lib/tokenizer/tokenizer.js.map +0 -1
  1302. package/esm2022/tokenizer/malva-ui-core-tokenizer.js +0 -5
  1303. package/esm2022/tokenizer/malva-ui-core-tokenizer.js.map +0 -1
  1304. package/esm2022/toolbar/index.js +0 -4
  1305. package/esm2022/toolbar/index.js.map +0 -1
  1306. package/esm2022/toolbar/lib/toolbar/toolbar-spacer.js +0 -13
  1307. package/esm2022/toolbar/lib/toolbar/toolbar-spacer.js.map +0 -1
  1308. package/esm2022/toolbar/lib/toolbar/toolbar-widget.js +0 -106
  1309. package/esm2022/toolbar/lib/toolbar/toolbar-widget.js.map +0 -1
  1310. package/esm2022/toolbar/lib/toolbar/toolbar.js +0 -19
  1311. package/esm2022/toolbar/lib/toolbar/toolbar.js.map +0 -1
  1312. package/esm2022/toolbar/malva-ui-core-toolbar.js +0 -5
  1313. package/esm2022/toolbar/malva-ui-core-toolbar.js.map +0 -1
  1314. package/esm2022/tooltip/index.js +0 -4
  1315. package/esm2022/tooltip/index.js.map +0 -1
  1316. package/esm2022/tooltip/lib/tooltip/tooltip-panel.js +0 -69
  1317. package/esm2022/tooltip/lib/tooltip/tooltip-panel.js.map +0 -1
  1318. package/esm2022/tooltip/lib/tooltip/tooltip.js +0 -352
  1319. package/esm2022/tooltip/lib/tooltip/tooltip.js.map +0 -1
  1320. package/esm2022/tooltip/lib/tooltip/tooltip.types.js +0 -1
  1321. package/esm2022/tooltip/lib/tooltip/tooltip.types.js.map +0 -1
  1322. package/esm2022/tooltip/malva-ui-core-tooltip.js +0 -5
  1323. package/esm2022/tooltip/malva-ui-core-tooltip.js.map +0 -1
  1324. package/esm2022/tree/index.js +0 -5
  1325. package/esm2022/tree/index.js.map +0 -1
  1326. package/esm2022/tree/lib/tree/tree-context.js +0 -7
  1327. package/esm2022/tree/lib/tree/tree-context.js.map +0 -1
  1328. package/esm2022/tree/lib/tree/tree-node-def.js +0 -34
  1329. package/esm2022/tree/lib/tree/tree-node-def.js.map +0 -1
  1330. package/esm2022/tree/lib/tree/tree-node.js +0 -1
  1331. package/esm2022/tree/lib/tree/tree-node.js.map +0 -1
  1332. package/esm2022/tree/lib/tree/tree-subtree.js +0 -107
  1333. package/esm2022/tree/lib/tree/tree-subtree.js.map +0 -1
  1334. package/esm2022/tree/lib/tree/tree.js +0 -362
  1335. package/esm2022/tree/lib/tree/tree.js.map +0 -1
  1336. package/esm2022/tree/malva-ui-core-tree.js +0 -5
  1337. package/esm2022/tree/malva-ui-core-tree.js.map +0 -1
  1338. package/expand/index.d.ts +0 -2
  1339. package/expand/lib/expand/expand-content.d.ts +0 -26
  1340. package/expand/lib/expand/expand.d.ts +0 -74
  1341. package/expand/malva-ui-core-expand.d.ts +0 -5
  1342. package/file-upload/index.d.ts +0 -4
  1343. package/file-upload/lib/file-upload/file-upload.d.ts +0 -138
  1344. package/file-upload/lib/file-upload/file-upload.types.d.ts +0 -42
  1345. package/file-upload/lib/file-upload-action.d.ts +0 -53
  1346. package/file-upload/lib/file-upload-item/file-upload-item.d.ts +0 -30
  1347. package/file-upload/malva-ui-core-file-upload.d.ts +0 -5
  1348. package/filter/index.d.ts +0 -3
  1349. package/filter/lib/filter/filter.d.ts +0 -156
  1350. package/filter/lib/filter.types.d.ts +0 -75
  1351. package/filter/lib/smart-filter-bar/smart-filter-bar.d.ts +0 -153
  1352. package/filter/malva-ui-core-filter.d.ts +0 -5
  1353. package/form/index.d.ts +0 -6
  1354. package/form/lib/fieldset/fieldset.d.ts +0 -58
  1355. package/form/lib/fieldset-span.d.ts +0 -28
  1356. package/form/lib/form/form.d.ts +0 -37
  1357. package/form/lib/form-actions.d.ts +0 -20
  1358. package/form/lib/form-gap.d.ts +0 -5
  1359. package/form/lib/form-header.d.ts +0 -18
  1360. package/form/lib/form.types.d.ts +0 -13
  1361. package/form/malva-ui-core-form.d.ts +0 -5
  1362. package/form-utils/index.d.ts +0 -15
  1363. package/form-utils/lib/aria-value-bridge.d.ts +0 -45
  1364. package/form-utils/lib/description/description.d.ts +0 -16
  1365. package/form-utils/lib/focusable-group-base.d.ts +0 -76
  1366. package/form-utils/lib/form-control-base/signal-form-control-base.d.ts +0 -159
  1367. package/form-utils/lib/form-control-sides.d.ts +0 -20
  1368. package/form-utils/lib/form-control-wrapper/form-control-wrapper-control.d.ts +0 -6
  1369. package/form-utils/lib/form-control-wrapper/form-control-wrapper.d.ts +0 -20
  1370. package/form-utils/lib/form-field/form-field.d.ts +0 -68
  1371. package/form-utils/lib/hint/hint.d.ts +0 -5
  1372. package/form-utils/lib/label/label.d.ts +0 -22
  1373. package/form-utils/lib/message/message.d.ts +0 -7
  1374. package/form-utils/lib/models/error-display-strategy.d.ts +0 -1
  1375. package/form-utils/lib/models/form-control-connector.d.ts +0 -41
  1376. package/form-utils/lib/models/form-state.d.ts +0 -1
  1377. package/form-utils/lib/selection.service.d.ts +0 -27
  1378. package/form-utils/malva-ui-core-form-utils.d.ts +0 -5
  1379. package/form-utils/testing/index.d.ts +0 -1
  1380. package/form-utils/testing/lib/forms-binding-matrix.d.ts +0 -47
  1381. package/form-utils/testing/malva-ui-core-form-utils-testing.d.ts +0 -5
  1382. package/index.d.ts +0 -69
  1383. package/input/index.d.ts +0 -3
  1384. package/input/lib/input/input-native.d.ts +0 -36
  1385. package/input/lib/input/input-value-accessor.d.ts +0 -11
  1386. package/input/lib/input/input.d.ts +0 -189
  1387. package/input/lib/input/password-strength.d.ts +0 -34
  1388. package/input/malva-ui-core-input.d.ts +0 -5
  1389. package/kbd/index.d.ts +0 -1
  1390. package/kbd/lib/kbd/kbd.d.ts +0 -52
  1391. package/kbd/malva-ui-core-kbd.d.ts +0 -5
  1392. package/layout/index.d.ts +0 -4
  1393. package/layout/lib/layout/directives/MlvLayoutSide.d.ts +0 -6
  1394. package/layout/lib/layout/directives/MlvLayoutTop.d.ts +0 -6
  1395. package/layout/lib/layout/layout.d.ts +0 -20
  1396. package/layout/lib/layout/services/theme.service.d.ts +0 -33
  1397. package/layout/malva-ui-core-layout.d.ts +0 -5
  1398. package/link/index.d.ts +0 -2
  1399. package/link/lib/link/link.d.ts +0 -15
  1400. package/link/lib/link/link.directives.d.ts +0 -10
  1401. package/link/malva-ui-core-link.d.ts +0 -5
  1402. package/list/index.d.ts +0 -13
  1403. package/list/lib/list/list.d.ts +0 -25
  1404. package/list/lib/list-item/list-item.d.ts +0 -67
  1405. package/list/lib/list-item-actions.d.ts +0 -12
  1406. package/list/lib/list-item-byline.d.ts +0 -5
  1407. package/list/lib/list-item-group/list-item-group.d.ts +0 -11
  1408. package/list/lib/list-item-link/list-item-link.d.ts +0 -8
  1409. package/list/lib/list-item-media.d.ts +0 -5
  1410. package/list/lib/list-item-meta.d.ts +0 -5
  1411. package/list/lib/list-item-prefix.d.ts +0 -5
  1412. package/list/lib/list-item-suffix.d.ts +0 -5
  1413. package/list/lib/list-item-template.d.ts +0 -10
  1414. package/list/lib/list-item-title.d.ts +0 -5
  1415. package/list/lib/list-selectable.d.ts +0 -73
  1416. package/list/malva-ui-core-list.d.ts +0 -5
  1417. package/loader/index.d.ts +0 -1
  1418. package/loader/lib/loader/loader.d.ts +0 -84
  1419. package/loader/malva-ui-core-loader.d.ts +0 -5
  1420. package/malva-ui-core.d.ts +0 -5
  1421. package/menu/index.d.ts +0 -9
  1422. package/menu/lib/menu/menu-group-label.d.ts +0 -22
  1423. package/menu/lib/menu/menu-group.d.ts +0 -27
  1424. package/menu/lib/menu/menu-item.d.ts +0 -76
  1425. package/menu/lib/menu/menu-separator.d.ts +0 -18
  1426. package/menu/lib/menu/menu-trigger.d.ts +0 -255
  1427. package/menu/lib/menu/menu.d.ts +0 -149
  1428. package/menu/lib/menu/menu.types.d.ts +0 -13
  1429. package/menu/lib/menu/menubar.d.ts +0 -131
  1430. package/menu/lib/menu/menubar.types.d.ts +0 -82
  1431. package/menu/lib/menu/submenu-aim.d.ts +0 -10
  1432. package/menu/malva-ui-core-menu.d.ts +0 -5
  1433. package/notification/index.d.ts +0 -4
  1434. package/notification/lib/notification-item/notification-item.d.ts +0 -20
  1435. package/notification/lib/notification-ref.d.ts +0 -12
  1436. package/notification/lib/notification.service.d.ts +0 -43
  1437. package/notification/lib/notification.types.d.ts +0 -52
  1438. package/notification/malva-ui-core-notification.d.ts +0 -5
  1439. package/number-input/index.d.ts +0 -1
  1440. package/number-input/lib/number-input/number-input.d.ts +0 -162
  1441. package/number-input/malva-ui-core-number-input.d.ts +0 -5
  1442. package/page/index.d.ts +0 -14
  1443. package/page/lib/page/page-scroll.token.d.ts +0 -19
  1444. package/page/lib/page/page-snap-controller.d.ts +0 -87
  1445. package/page/lib/page/page-snap.directive.d.ts +0 -40
  1446. package/page/lib/page/page.d.ts +0 -74
  1447. package/page/lib/page-content/page-aside.d.ts +0 -7
  1448. package/page/lib/page-content/page-content.d.ts +0 -37
  1449. package/page/lib/page-dock/page-dock.d.ts +0 -50
  1450. package/page/lib/page-dock/page-dock.slots.d.ts +0 -16
  1451. package/page/lib/page-header/page-header.d.ts +0 -77
  1452. package/page/lib/page-header/page-header.directives.d.ts +0 -50
  1453. package/page/lib/page-shell/page-shell-color.d.ts +0 -48
  1454. package/page/lib/page-shell/page-shell-css-color.d.ts +0 -20
  1455. package/page/lib/page-shell/page-shell.d.ts +0 -44
  1456. package/page/lib/page-shell/page-shell.slots.d.ts +0 -16
  1457. package/page/lib/page-summary/page-summary-item.d.ts +0 -11
  1458. package/page/lib/page-summary/page-summary.d.ts +0 -36
  1459. package/page/malva-ui-core-page.d.ts +0 -5
  1460. package/pagination/index.d.ts +0 -4
  1461. package/pagination/lib/pagination/pagination.d.ts +0 -182
  1462. package/pagination/lib/pagination/pagination.directives.d.ts +0 -44
  1463. package/pagination/lib/pagination/pagination.model.d.ts +0 -6
  1464. package/pagination/lib/pagination/pagination.service.d.ts +0 -26
  1465. package/pagination/malva-ui-core-pagination.d.ts +0 -5
  1466. package/pin-input/index.d.ts +0 -2
  1467. package/pin-input/lib/pin-input/pin-input-separator.d.ts +0 -24
  1468. package/pin-input/lib/pin-input/pin-input.d.ts +0 -176
  1469. package/pin-input/malva-ui-core-pin-input.d.ts +0 -5
  1470. package/popup/index.d.ts +0 -9
  1471. package/popup/lib/popup/popup.d.ts +0 -343
  1472. package/popup/lib/popup-container/popup-container.d.ts +0 -61
  1473. package/popup/lib/popup-container/popup-container.token.d.ts +0 -34
  1474. package/popup/lib/popup-content.d.ts +0 -6
  1475. package/popup/lib/popup-header-content.d.ts +0 -18
  1476. package/popup/lib/popup-pinned-content.d.ts +0 -17
  1477. package/popup/lib/popup-positions.d.ts +0 -105
  1478. package/popup/lib/popup-trigger/popup-trigger.d.ts +0 -102
  1479. package/popup/lib/popup.service.d.ts +0 -159
  1480. package/popup/malva-ui-core-popup.d.ts +0 -5
  1481. package/progress/index.d.ts +0 -1
  1482. package/progress/lib/progress/progress.d.ts +0 -69
  1483. package/progress/malva-ui-core-progress.d.ts +0 -5
  1484. package/radio/index.d.ts +0 -2
  1485. package/radio/lib/radio/radio.d.ts +0 -87
  1486. package/radio/lib/radio-group/radio-group.d.ts +0 -35
  1487. package/radio/lib/radio-group-token.d.ts +0 -7
  1488. package/radio/malva-ui-core-radio.d.ts +0 -5
  1489. package/rating/index.d.ts +0 -1
  1490. package/rating/lib/rating/rating.d.ts +0 -100
  1491. package/rating/malva-ui-core-rating.d.ts +0 -5
  1492. package/scrollbar/index.d.ts +0 -1
  1493. package/scrollbar/lib/scrollbar/scrollbar.d.ts +0 -166
  1494. package/scrollbar/malva-ui-core-scrollbar.d.ts +0 -5
  1495. package/search-field/index.d.ts +0 -2
  1496. package/search-field/lib/search-field/search-field.d.ts +0 -347
  1497. package/search-field/lib/search-field/search-overlay-content.d.ts +0 -59
  1498. package/search-field/malva-ui-core-search-field.d.ts +0 -5
  1499. package/segmented/index.d.ts +0 -4
  1500. package/segmented/lib/segmented/segmented.d.ts +0 -80
  1501. package/segmented/lib/segmented-item/segmented-item.d.ts +0 -89
  1502. package/segmented/lib/segmented-token.d.ts +0 -22
  1503. package/segmented/lib/segmented.types.d.ts +0 -9
  1504. package/segmented/malva-ui-core-segmented.d.ts +0 -5
  1505. package/select/index.d.ts +0 -3
  1506. package/select/lib/select/select.d.ts +0 -379
  1507. package/select/lib/select-option.d.ts +0 -1
  1508. package/select/lib/select-template.directives.d.ts +0 -14
  1509. package/select/malva-ui-core-select.d.ts +0 -5
  1510. package/sidebar/index.d.ts +0 -15
  1511. package/sidebar/lib/sidebar/sidebar.d.ts +0 -134
  1512. package/sidebar/lib/sidebar-content.d.ts +0 -11
  1513. package/sidebar/lib/sidebar-context.d.ts +0 -23
  1514. package/sidebar/lib/sidebar-footer.d.ts +0 -9
  1515. package/sidebar/lib/sidebar-group/sidebar-group.d.ts +0 -127
  1516. package/sidebar/lib/sidebar-header.d.ts +0 -9
  1517. package/sidebar/lib/sidebar-item/sidebar-item.d.ts +0 -104
  1518. package/sidebar/lib/sidebar-item-host.d.ts +0 -18
  1519. package/sidebar/lib/sidebar-item-icon.d.ts +0 -6
  1520. package/sidebar/lib/sidebar-mode.d.ts +0 -2
  1521. package/sidebar/lib/sidebar-rail/sidebar-rail.d.ts +0 -54
  1522. package/sidebar/lib/sidebar-trigger/sidebar-trigger.d.ts +0 -67
  1523. package/sidebar/lib/sidebar-workspace/sidebar-workspace.d.ts +0 -54
  1524. package/sidebar/lib/sidebar-workspace/sidebar-workspace.directives.d.ts +0 -19
  1525. package/sidebar/lib/sidebar-workspace/sidebar-workspace.types.d.ts +0 -20
  1526. package/sidebar/malva-ui-core-sidebar.d.ts +0 -5
  1527. package/skeleton/index.d.ts +0 -1
  1528. package/skeleton/lib/skeleton/skeleton.d.ts +0 -60
  1529. package/skeleton/malva-ui-core-skeleton.d.ts +0 -5
  1530. package/slider/index.d.ts +0 -2
  1531. package/slider/lib/slider/slider-tooltip-def.d.ts +0 -39
  1532. package/slider/lib/slider/slider.d.ts +0 -171
  1533. package/slider/malva-ui-core-slider.d.ts +0 -5
  1534. package/split-pane/index.d.ts +0 -3
  1535. package/split-pane/lib/split-pane/split-pane-panel.d.ts +0 -34
  1536. package/split-pane/lib/split-pane/split-pane.d.ts +0 -98
  1537. package/split-pane/lib/split-pane/split-pane.types.d.ts +0 -7
  1538. package/split-pane/malva-ui-core-split-pane.d.ts +0 -5
  1539. package/status-indicator/index.d.ts +0 -1
  1540. package/status-indicator/lib/status-indicator/status-indicator.d.ts +0 -61
  1541. package/status-indicator/malva-ui-core-status-indicator.d.ts +0 -5
  1542. package/stepper/index.d.ts +0 -4
  1543. package/stepper/lib/stepper/step-header.d.ts +0 -34
  1544. package/stepper/lib/stepper/step.d.ts +0 -51
  1545. package/stepper/lib/stepper/stepper-token.d.ts +0 -13
  1546. package/stepper/lib/stepper/stepper.d.ts +0 -98
  1547. package/stepper/lib/stepper/stepper.types.d.ts +0 -4
  1548. package/stepper/malva-ui-core-stepper.d.ts +0 -5
  1549. package/switch/index.d.ts +0 -2
  1550. package/switch/lib/switch/switch.d.ts +0 -118
  1551. package/switch/lib/switch-group/switch-group.d.ts +0 -24
  1552. package/switch/lib/switch-group-token.d.ts +0 -6
  1553. package/switch/malva-ui-core-switch.d.ts +0 -5
  1554. package/tabs/index.d.ts +0 -8
  1555. package/tabs/lib/tab/tab.d.ts +0 -46
  1556. package/tabs/lib/tab-content/tab-content.d.ts +0 -11
  1557. package/tabs/lib/tab-content-def.d.ts +0 -6
  1558. package/tabs/lib/tab-def.d.ts +0 -11
  1559. package/tabs/lib/tab-group-token.d.ts +0 -10
  1560. package/tabs/lib/tab-item/tab-item.d.ts +0 -28
  1561. package/tabs/lib/tabs/tabs.d.ts +0 -202
  1562. package/tabs/lib/tabs.service.d.ts +0 -24
  1563. package/tabs/malva-ui-core-tabs.d.ts +0 -5
  1564. package/textarea/index.d.ts +0 -1
  1565. package/textarea/lib/textarea/textarea.d.ts +0 -77
  1566. package/textarea/malva-ui-core-textarea.d.ts +0 -5
  1567. package/tile/index.d.ts +0 -2
  1568. package/tile/lib/tile/tile.d.ts +0 -20
  1569. package/tile/lib/tile-header.d.ts +0 -6
  1570. package/tile/malva-ui-core-tile.d.ts +0 -5
  1571. package/time-picker/index.d.ts +0 -1
  1572. package/time-picker/lib/time-picker/time-picker.d.ts +0 -135
  1573. package/time-picker/lib/time-picker-column/time-picker-column.d.ts +0 -111
  1574. package/time-picker/malva-ui-core-time-picker.d.ts +0 -5
  1575. package/timeline/index.d.ts +0 -5
  1576. package/timeline/lib/timeline/timeline-item-icon.d.ts +0 -24
  1577. package/timeline/lib/timeline/timeline-item-meta.d.ts +0 -24
  1578. package/timeline/lib/timeline/timeline-item.d.ts +0 -52
  1579. package/timeline/lib/timeline/timeline.d.ts +0 -27
  1580. package/timeline/lib/timeline/timeline.types.d.ts +0 -18
  1581. package/timeline/malva-ui-core-timeline.d.ts +0 -5
  1582. package/title/index.d.ts +0 -1
  1583. package/title/lib/title/title.d.ts +0 -63
  1584. package/title/malva-ui-core-title.d.ts +0 -5
  1585. package/toast/index.d.ts +0 -10
  1586. package/toast/lib/abstract-toast-container.d.ts +0 -29
  1587. package/toast/lib/abstract-toast-item.d.ts +0 -44
  1588. package/toast/lib/abstract-toast.service.d.ts +0 -75
  1589. package/toast/lib/toast-container/toast-container.d.ts +0 -23
  1590. package/toast/lib/toast-item/toast-item.d.ts +0 -25
  1591. package/toast/lib/toast-ref.d.ts +0 -33
  1592. package/toast/lib/toast-timer.d.ts +0 -24
  1593. package/toast/lib/toast.directives.d.ts +0 -13
  1594. package/toast/lib/toast.service.d.ts +0 -41
  1595. package/toast/lib/toast.types.d.ts +0 -139
  1596. package/toast/malva-ui-core-toast.d.ts +0 -5
  1597. package/tokenizer/index.d.ts +0 -3
  1598. package/tokenizer/lib/token/token.d.ts +0 -60
  1599. package/tokenizer/lib/token-template.d.ts +0 -29
  1600. package/tokenizer/lib/tokenizer/tokenizer.d.ts +0 -109
  1601. package/tokenizer/malva-ui-core-tokenizer.d.ts +0 -5
  1602. package/toolbar/index.d.ts +0 -3
  1603. package/toolbar/lib/toolbar/toolbar-spacer.d.ts +0 -5
  1604. package/toolbar/lib/toolbar/toolbar-widget.d.ts +0 -75
  1605. package/toolbar/lib/toolbar/toolbar.d.ts +0 -8
  1606. package/toolbar/malva-ui-core-toolbar.d.ts +0 -5
  1607. package/tooltip/index.d.ts +0 -3
  1608. package/tooltip/lib/tooltip/tooltip-panel.d.ts +0 -26
  1609. package/tooltip/lib/tooltip/tooltip.d.ts +0 -148
  1610. package/tooltip/lib/tooltip/tooltip.types.d.ts +0 -17
  1611. package/tooltip/malva-ui-core-tooltip.d.ts +0 -5
  1612. package/tree/index.d.ts +0 -4
  1613. package/tree/lib/tree/tree-context.d.ts +0 -62
  1614. package/tree/lib/tree/tree-node-def.d.ts +0 -33
  1615. package/tree/lib/tree/tree-node.d.ts +0 -45
  1616. package/tree/lib/tree/tree-subtree.d.ts +0 -63
  1617. package/tree/lib/tree/tree.d.ts +0 -156
  1618. 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