@malva-ui/core 0.1.12

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 (1434) hide show
  1. package/AGENTS.md +92 -0
  2. package/README.md +61 -0
  3. package/accordion/index.d.ts +3 -0
  4. package/accordion/lib/accordion/accordion.d.ts +47 -0
  5. package/accordion/lib/accordion-item/accordion-header.d.ts +22 -0
  6. package/accordion/lib/accordion-item/accordion-item.d.ts +49 -0
  7. package/accordion/malva-ui-core-accordion.d.ts +5 -0
  8. package/action-bar/index.d.ts +4 -0
  9. package/action-bar/lib/action-bar/action-bar.d.ts +59 -0
  10. package/action-bar/lib/action-bar/components/action-bar-actions.d.ts +9 -0
  11. package/action-bar/lib/action-bar/components/action-bar-logo.d.ts +5 -0
  12. package/action-bar/lib/action-bar/components/action-bar-spacer.d.ts +5 -0
  13. package/action-bar/malva-ui-core-action-bar.d.ts +5 -0
  14. package/alert/index.d.ts +2 -0
  15. package/alert/lib/alert/alert.d.ts +84 -0
  16. package/alert/lib/alert/alert.directives.d.ts +44 -0
  17. package/alert/malva-ui-core-alert.d.ts +5 -0
  18. package/autocomplete/index.d.ts +1 -0
  19. package/autocomplete/lib/autocomplete/autocomplete.d.ts +296 -0
  20. package/autocomplete/malva-ui-core-autocomplete.d.ts +5 -0
  21. package/avatar/index.d.ts +2 -0
  22. package/avatar/lib/avatar/avatar.d.ts +125 -0
  23. package/avatar/lib/color-from-text.pipe.d.ts +21 -0
  24. package/avatar/malva-ui-core-avatar.d.ts +5 -0
  25. package/avatar-group/index.d.ts +1 -0
  26. package/avatar-group/lib/avatar-group/avatar-group.d.ts +115 -0
  27. package/avatar-group/malva-ui-core-avatar-group.d.ts +5 -0
  28. package/badge/index.d.ts +2 -0
  29. package/badge/lib/badge/badge.d.ts +59 -0
  30. package/badge/lib/badge-icon.d.ts +35 -0
  31. package/badge/malva-ui-core-badge.d.ts +5 -0
  32. package/bottom-nav/index.d.ts +1 -0
  33. package/bottom-nav/lib/bottom-nav/bottom-nav.d.ts +99 -0
  34. package/bottom-nav/malva-ui-core-bottom-nav.d.ts +5 -0
  35. package/breadcrumb/index.d.ts +5 -0
  36. package/breadcrumb/lib/breadcrumb/breadcrumb-item-host.d.ts +32 -0
  37. package/breadcrumb/lib/breadcrumb/breadcrumb-item.d.ts +41 -0
  38. package/breadcrumb/lib/breadcrumb/breadcrumb-separator.d.ts +31 -0
  39. package/breadcrumb/lib/breadcrumb/breadcrumb.d.ts +151 -0
  40. package/breadcrumb/lib/breadcrumb/breadcrumb.types.d.ts +26 -0
  41. package/breadcrumb/malva-ui-core-breadcrumb.d.ts +5 -0
  42. package/button/index.d.ts +7 -0
  43. package/button/lib/button/button.d.ts +61 -0
  44. package/button/lib/button-close/button-close.d.ts +24 -0
  45. package/button/lib/button-group/button-group.d.ts +21 -0
  46. package/button/lib/button-split/button-split.d.ts +21 -0
  47. package/button/lib/button-toggle/button-toggle.d.ts +33 -0
  48. package/button/lib/button-variant.token.d.ts +13 -0
  49. package/button/lib/button.directives.d.ts +14 -0
  50. package/button/lib/button.types.d.ts +8 -0
  51. package/button/malva-ui-core-button.d.ts +5 -0
  52. package/calendar/index.d.ts +3 -0
  53. package/calendar/lib/calendar/calendar.d.ts +182 -0
  54. package/calendar/lib/date-provider/date-adapter.d.ts +92 -0
  55. package/calendar/lib/date-provider/native-date-adapter.d.ts +60 -0
  56. package/calendar/malva-ui-core-calendar.d.ts +5 -0
  57. package/card/index.d.ts +5 -0
  58. package/card/lib/card/card.d.ts +43 -0
  59. package/card/lib/card-actions-def.d.ts +10 -0
  60. package/card/lib/card-footer-def.d.ts +13 -0
  61. package/card/lib/card-header-def.d.ts +10 -0
  62. package/card/lib/card-subheader-def.d.ts +16 -0
  63. package/card/malva-ui-core-card.d.ts +5 -0
  64. package/chat/index.d.ts +9 -0
  65. package/chat/lib/chat/chat.d.ts +133 -0
  66. package/chat/lib/chat-audio/chat-audio.d.ts +51 -0
  67. package/chat/lib/chat-audio/chat-audio.service.d.ts +21 -0
  68. package/chat/lib/chat-date/chat-date.d.ts +16 -0
  69. package/chat/lib/chat-format.d.ts +5 -0
  70. package/chat/lib/chat-media-grid/chat-media-grid.d.ts +32 -0
  71. package/chat/lib/chat-message/chat-message.d.ts +45 -0
  72. package/chat/lib/chat-render-list.d.ts +16 -0
  73. package/chat/lib/chat-tokens.d.ts +25 -0
  74. package/chat/lib/chat-typing/chat-typing.d.ts +16 -0
  75. package/chat/lib/chat.types.d.ts +80 -0
  76. package/chat/lib/defs/chat-author-def.d.ts +30 -0
  77. package/chat/lib/defs/chat-date-def.d.ts +22 -0
  78. package/chat/lib/defs/chat-message-def.d.ts +23 -0
  79. package/chat/malva-ui-core-chat.d.ts +5 -0
  80. package/checkbox/index.d.ts +3 -0
  81. package/checkbox/lib/checkbox/checkbox.d.ts +129 -0
  82. package/checkbox/lib/checkbox-group/checkbox-group.d.ts +24 -0
  83. package/checkbox/lib/checkbox-group-token.d.ts +6 -0
  84. package/checkbox/malva-ui-core-checkbox.d.ts +5 -0
  85. package/chip/index.d.ts +2 -0
  86. package/chip/lib/chip/chip.d.ts +107 -0
  87. package/chip/lib/chip/chip.directives.d.ts +18 -0
  88. package/chip/malva-ui-core-chip.d.ts +5 -0
  89. package/color-picker/index.d.ts +3 -0
  90. package/color-picker/lib/color-picker/color-picker.d.ts +188 -0
  91. package/color-picker/lib/color-picker-popup/color-picker-popup.d.ts +151 -0
  92. package/color-picker/lib/color-utils/color-utils.d.ts +102 -0
  93. package/color-picker/malva-ui-core-color-picker.d.ts +5 -0
  94. package/combobox/index.d.ts +2 -0
  95. package/combobox/lib/combobox/combobox.d.ts +400 -0
  96. package/combobox/lib/combobox-template.directives.d.ts +10 -0
  97. package/combobox/malva-ui-core-combobox.d.ts +5 -0
  98. package/copy-to-clipboard/index.d.ts +1 -0
  99. package/copy-to-clipboard/lib/copy-to-clipboard/copy-to-clipboard.d.ts +130 -0
  100. package/copy-to-clipboard/malva-ui-core-copy-to-clipboard.d.ts +5 -0
  101. package/data-table/index.d.ts +8 -0
  102. package/data-table/lib/data-source.d.ts +5 -0
  103. package/data-table/lib/data-table/data-table-layout.d.ts +31 -0
  104. package/data-table/lib/data-table/data-table.d.ts +699 -0
  105. package/data-table/lib/data-table/services/data-table-column-visibility.service.d.ts +19 -0
  106. package/data-table/lib/data-table/services/data-table-editing.service.d.ts +37 -0
  107. package/data-table/lib/data-table/services/data-table-pinning.service.d.ts +37 -0
  108. package/data-table/lib/data-table-cell.d.ts +44 -0
  109. package/data-table/lib/data-table-edit-cell.d.ts +44 -0
  110. package/data-table/lib/data-table-error.d.ts +37 -0
  111. package/data-table/lib/data-table-footer.d.ts +26 -0
  112. package/data-table/lib/data-table-no-data.d.ts +19 -0
  113. package/data-table/lib/filter-dropdown/filter-dropdown.d.ts +54 -0
  114. package/data-table/lib/types.d.ts +134 -0
  115. package/data-table/malva-ui-core-data-table.d.ts +5 -0
  116. package/date-range-picker/index.d.ts +1 -0
  117. package/date-range-picker/lib/date-range-picker/date-range-picker.d.ts +145 -0
  118. package/date-range-picker/malva-ui-core-date-range-picker.d.ts +5 -0
  119. package/day-picker/index.d.ts +1 -0
  120. package/day-picker/lib/day-picker/day-picker.d.ts +51 -0
  121. package/day-picker/malva-ui-core-day-picker.d.ts +5 -0
  122. package/dialog/index.d.ts +11 -0
  123. package/dialog/lib/confirm-dialog-options.d.ts +41 -0
  124. package/dialog/lib/confirm-dialog.d.ts +52 -0
  125. package/dialog/lib/dialog/dialog.d.ts +22 -0
  126. package/dialog/lib/dialog-body.d.ts +9 -0
  127. package/dialog/lib/dialog-close.d.ts +27 -0
  128. package/dialog/lib/dialog-config.d.ts +112 -0
  129. package/dialog/lib/dialog-container.d.ts +40 -0
  130. package/dialog/lib/dialog-footer.d.ts +13 -0
  131. package/dialog/lib/dialog-header.d.ts +74 -0
  132. package/dialog/lib/dialog-ref.d.ts +95 -0
  133. package/dialog/lib/dialog-template.d.ts +65 -0
  134. package/dialog/lib/dialog-text-content.d.ts +24 -0
  135. package/dialog/lib/dialog.service.d.ts +63 -0
  136. package/dialog/lib/generate-routable-dialog-route.d.ts +49 -0
  137. package/dialog/lib/inject-dialog-ref.d.ts +8 -0
  138. package/dialog/lib/routable-dialog.d.ts +30 -0
  139. package/dialog/malva-ui-core-dialog.d.ts +5 -0
  140. package/divider/index.d.ts +1 -0
  141. package/divider/lib/divider/divider.d.ts +64 -0
  142. package/divider/malva-ui-core-divider.d.ts +5 -0
  143. package/docs/ai/accordion.md +102 -0
  144. package/docs/ai/action-bar.md +198 -0
  145. package/docs/ai/alert.md +190 -0
  146. package/docs/ai/autocomplete.md +111 -0
  147. package/docs/ai/avatar-group.md +184 -0
  148. package/docs/ai/avatar.md +150 -0
  149. package/docs/ai/badge.md +163 -0
  150. package/docs/ai/bottom-nav.md +267 -0
  151. package/docs/ai/breadcrumb.md +174 -0
  152. package/docs/ai/button.md +306 -0
  153. package/docs/ai/calendar.md +237 -0
  154. package/docs/ai/card.md +196 -0
  155. package/docs/ai/chat.md +145 -0
  156. package/docs/ai/checkbox.md +193 -0
  157. package/docs/ai/chip.md +139 -0
  158. package/docs/ai/color-picker.md +270 -0
  159. package/docs/ai/combobox.md +325 -0
  160. package/docs/ai/copy-to-clipboard.md +159 -0
  161. package/docs/ai/core.md +216 -0
  162. package/docs/ai/data-table.md +917 -0
  163. package/docs/ai/date-range-picker.md +101 -0
  164. package/docs/ai/day-picker.md +135 -0
  165. package/docs/ai/dialog.md +852 -0
  166. package/docs/ai/divider.md +159 -0
  167. package/docs/ai/drawer.md +607 -0
  168. package/docs/ai/dropdown.md +343 -0
  169. package/docs/ai/empty-state.md +167 -0
  170. package/docs/ai/expand.md +234 -0
  171. package/docs/ai/file-upload.md +402 -0
  172. package/docs/ai/filter.md +43 -0
  173. package/docs/ai/form-utils.md +319 -0
  174. package/docs/ai/form.md +129 -0
  175. package/docs/ai/input.md +175 -0
  176. package/docs/ai/kbd.md +70 -0
  177. package/docs/ai/layout.md +192 -0
  178. package/docs/ai/link.md +179 -0
  179. package/docs/ai/list.md +249 -0
  180. package/docs/ai/loader.md +122 -0
  181. package/docs/ai/menu.md +335 -0
  182. package/docs/ai/notification.md +281 -0
  183. package/docs/ai/number-input.md +123 -0
  184. package/docs/ai/page.md +422 -0
  185. package/docs/ai/pagination.md +237 -0
  186. package/docs/ai/pin-input.md +173 -0
  187. package/docs/ai/popup.md +347 -0
  188. package/docs/ai/progress.md +84 -0
  189. package/docs/ai/radio.md +201 -0
  190. package/docs/ai/rating.md +76 -0
  191. package/docs/ai/scrollbar.md +170 -0
  192. package/docs/ai/search-field.md +85 -0
  193. package/docs/ai/segmented.md +331 -0
  194. package/docs/ai/select.md +512 -0
  195. package/docs/ai/sidebar.md +992 -0
  196. package/docs/ai/skeleton.md +187 -0
  197. package/docs/ai/slider.md +180 -0
  198. package/docs/ai/split-pane.md +235 -0
  199. package/docs/ai/status-indicator.md +95 -0
  200. package/docs/ai/stepper.md +385 -0
  201. package/docs/ai/switch.md +216 -0
  202. package/docs/ai/tabs.md +564 -0
  203. package/docs/ai/textarea.md +249 -0
  204. package/docs/ai/tile.md +150 -0
  205. package/docs/ai/time-picker.md +214 -0
  206. package/docs/ai/timeline.md +320 -0
  207. package/docs/ai/title.md +105 -0
  208. package/docs/ai/toast.md +484 -0
  209. package/docs/ai/tokenizer.md +236 -0
  210. package/docs/ai/toolbar.md +155 -0
  211. package/docs/ai/tooltip.md +154 -0
  212. package/docs/ai/tree.md +177 -0
  213. package/drawer/index.d.ts +11 -0
  214. package/drawer/lib/drawer/drawer.d.ts +106 -0
  215. package/drawer/lib/drawer-body.d.ts +8 -0
  216. package/drawer/lib/drawer-content.d.ts +6 -0
  217. package/drawer/lib/drawer-footer.d.ts +5 -0
  218. package/drawer/lib/drawer-header.d.ts +5 -0
  219. package/drawer/lib/drawer-ref.d.ts +29 -0
  220. package/drawer/lib/drawer-resize.d.ts +65 -0
  221. package/drawer/lib/drawer-section/drawer-section.d.ts +15 -0
  222. package/drawer/lib/drawer-sections/drawer-sections.d.ts +22 -0
  223. package/drawer/lib/drawer-sections.service.d.ts +42 -0
  224. package/drawer/lib/drawer.service.d.ts +66 -0
  225. package/drawer/lib/generate-routable-drawer-route.d.ts +42 -0
  226. package/drawer/lib/routable-drawer.d.ts +30 -0
  227. package/drawer/malva-ui-core-drawer.d.ts +5 -0
  228. package/dropdown/index.d.ts +9 -0
  229. package/dropdown/lib/active-descendant.d.ts +64 -0
  230. package/dropdown/lib/dropdown-panel/dropdown-panel.d.ts +178 -0
  231. package/dropdown/lib/highlight-match.pipe.d.ts +27 -0
  232. package/dropdown/lib/option-matcher.d.ts +87 -0
  233. package/dropdown/lib/options-adapter.d.ts +142 -0
  234. package/dropdown/lib/options-result.d.ts +6 -0
  235. package/dropdown/lib/reconciliation.d.ts +19 -0
  236. package/dropdown/lib/select-data-source.d.ts +18 -0
  237. package/dropdown/lib/select-option.d.ts +37 -0
  238. package/dropdown/malva-ui-core-dropdown.d.ts +5 -0
  239. package/empty-state/index.d.ts +1 -0
  240. package/empty-state/lib/empty-state/empty-state.d.ts +34 -0
  241. package/empty-state/malva-ui-core-empty-state.d.ts +5 -0
  242. package/esm2022/accordion/index.js +4 -0
  243. package/esm2022/accordion/index.js.map +1 -0
  244. package/esm2022/accordion/lib/accordion/accordion.js +65 -0
  245. package/esm2022/accordion/lib/accordion/accordion.js.map +1 -0
  246. package/esm2022/accordion/lib/accordion-item/accordion-header.js +30 -0
  247. package/esm2022/accordion/lib/accordion-item/accordion-header.js.map +1 -0
  248. package/esm2022/accordion/lib/accordion-item/accordion-item.js +70 -0
  249. package/esm2022/accordion/lib/accordion-item/accordion-item.js.map +1 -0
  250. package/esm2022/accordion/malva-ui-core-accordion.js +5 -0
  251. package/esm2022/accordion/malva-ui-core-accordion.js.map +1 -0
  252. package/esm2022/action-bar/index.js +5 -0
  253. package/esm2022/action-bar/index.js.map +1 -0
  254. package/esm2022/action-bar/lib/action-bar/action-bar.js +64 -0
  255. package/esm2022/action-bar/lib/action-bar/action-bar.js.map +1 -0
  256. package/esm2022/action-bar/lib/action-bar/components/action-bar-actions.js +20 -0
  257. package/esm2022/action-bar/lib/action-bar/components/action-bar-actions.js.map +1 -0
  258. package/esm2022/action-bar/lib/action-bar/components/action-bar-logo.js +13 -0
  259. package/esm2022/action-bar/lib/action-bar/components/action-bar-logo.js.map +1 -0
  260. package/esm2022/action-bar/lib/action-bar/components/action-bar-spacer.js +13 -0
  261. package/esm2022/action-bar/lib/action-bar/components/action-bar-spacer.js.map +1 -0
  262. package/esm2022/action-bar/malva-ui-core-action-bar.js +5 -0
  263. package/esm2022/action-bar/malva-ui-core-action-bar.js.map +1 -0
  264. package/esm2022/alert/index.js +3 -0
  265. package/esm2022/alert/index.js.map +1 -0
  266. package/esm2022/alert/lib/alert/alert.directives.js +53 -0
  267. package/esm2022/alert/lib/alert/alert.directives.js.map +1 -0
  268. package/esm2022/alert/lib/alert/alert.js +118 -0
  269. package/esm2022/alert/lib/alert/alert.js.map +1 -0
  270. package/esm2022/alert/malva-ui-core-alert.js +5 -0
  271. package/esm2022/alert/malva-ui-core-alert.js.map +1 -0
  272. package/esm2022/autocomplete/index.js +2 -0
  273. package/esm2022/autocomplete/index.js.map +1 -0
  274. package/esm2022/autocomplete/lib/autocomplete/autocomplete.js +765 -0
  275. package/esm2022/autocomplete/lib/autocomplete/autocomplete.js.map +1 -0
  276. package/esm2022/autocomplete/malva-ui-core-autocomplete.js +5 -0
  277. package/esm2022/autocomplete/malva-ui-core-autocomplete.js.map +1 -0
  278. package/esm2022/avatar/index.js +3 -0
  279. package/esm2022/avatar/index.js.map +1 -0
  280. package/esm2022/avatar/lib/avatar/avatar.js +192 -0
  281. package/esm2022/avatar/lib/avatar/avatar.js.map +1 -0
  282. package/esm2022/avatar/lib/color-from-text.pipe.js +39 -0
  283. package/esm2022/avatar/lib/color-from-text.pipe.js.map +1 -0
  284. package/esm2022/avatar/malva-ui-core-avatar.js +5 -0
  285. package/esm2022/avatar/malva-ui-core-avatar.js.map +1 -0
  286. package/esm2022/avatar-group/index.js +2 -0
  287. package/esm2022/avatar-group/index.js.map +1 -0
  288. package/esm2022/avatar-group/lib/avatar-group/avatar-group.js +217 -0
  289. package/esm2022/avatar-group/lib/avatar-group/avatar-group.js.map +1 -0
  290. package/esm2022/avatar-group/malva-ui-core-avatar-group.js +5 -0
  291. package/esm2022/avatar-group/malva-ui-core-avatar-group.js.map +1 -0
  292. package/esm2022/badge/index.js +3 -0
  293. package/esm2022/badge/index.js.map +1 -0
  294. package/esm2022/badge/lib/badge/badge.js +71 -0
  295. package/esm2022/badge/lib/badge/badge.js.map +1 -0
  296. package/esm2022/badge/lib/badge-icon.js +47 -0
  297. package/esm2022/badge/lib/badge-icon.js.map +1 -0
  298. package/esm2022/badge/malva-ui-core-badge.js +5 -0
  299. package/esm2022/badge/malva-ui-core-badge.js.map +1 -0
  300. package/esm2022/bottom-nav/index.js +2 -0
  301. package/esm2022/bottom-nav/index.js.map +1 -0
  302. package/esm2022/bottom-nav/lib/bottom-nav/bottom-nav.js +155 -0
  303. package/esm2022/bottom-nav/lib/bottom-nav/bottom-nav.js.map +1 -0
  304. package/esm2022/bottom-nav/malva-ui-core-bottom-nav.js +5 -0
  305. package/esm2022/bottom-nav/malva-ui-core-bottom-nav.js.map +1 -0
  306. package/esm2022/breadcrumb/index.js +6 -0
  307. package/esm2022/breadcrumb/index.js.map +1 -0
  308. package/esm2022/breadcrumb/lib/breadcrumb/breadcrumb-item-host.js +43 -0
  309. package/esm2022/breadcrumb/lib/breadcrumb/breadcrumb-item-host.js.map +1 -0
  310. package/esm2022/breadcrumb/lib/breadcrumb/breadcrumb-item.js +110 -0
  311. package/esm2022/breadcrumb/lib/breadcrumb/breadcrumb-item.js.map +1 -0
  312. package/esm2022/breadcrumb/lib/breadcrumb/breadcrumb-separator.js +38 -0
  313. package/esm2022/breadcrumb/lib/breadcrumb/breadcrumb-separator.js.map +1 -0
  314. package/esm2022/breadcrumb/lib/breadcrumb/breadcrumb.js +284 -0
  315. package/esm2022/breadcrumb/lib/breadcrumb/breadcrumb.js.map +1 -0
  316. package/esm2022/breadcrumb/lib/breadcrumb/breadcrumb.types.js +1 -0
  317. package/esm2022/breadcrumb/lib/breadcrumb/breadcrumb.types.js.map +1 -0
  318. package/esm2022/breadcrumb/malva-ui-core-breadcrumb.js +5 -0
  319. package/esm2022/breadcrumb/malva-ui-core-breadcrumb.js.map +1 -0
  320. package/esm2022/button/index.js +8 -0
  321. package/esm2022/button/index.js.map +1 -0
  322. package/esm2022/button/lib/button/button.js +137 -0
  323. package/esm2022/button/lib/button/button.js.map +1 -0
  324. package/esm2022/button/lib/button-close/button-close.js +52 -0
  325. package/esm2022/button/lib/button-close/button-close.js.map +1 -0
  326. package/esm2022/button/lib/button-group/button-group.js +44 -0
  327. package/esm2022/button/lib/button-group/button-group.js.map +1 -0
  328. package/esm2022/button/lib/button-split/button-split.js +44 -0
  329. package/esm2022/button/lib/button-split/button-split.js.map +1 -0
  330. package/esm2022/button/lib/button-toggle/button-toggle.js +94 -0
  331. package/esm2022/button/lib/button-toggle/button-toggle.js.map +1 -0
  332. package/esm2022/button/lib/button-variant.token.js +4 -0
  333. package/esm2022/button/lib/button-variant.token.js.map +1 -0
  334. package/esm2022/button/lib/button.directives.js +37 -0
  335. package/esm2022/button/lib/button.directives.js.map +1 -0
  336. package/esm2022/button/lib/button.types.js +1 -0
  337. package/esm2022/button/lib/button.types.js.map +1 -0
  338. package/esm2022/button/malva-ui-core-button.js +5 -0
  339. package/esm2022/button/malva-ui-core-button.js.map +1 -0
  340. package/esm2022/calendar/index.js +4 -0
  341. package/esm2022/calendar/index.js.map +1 -0
  342. package/esm2022/calendar/lib/calendar/calendar.js +672 -0
  343. package/esm2022/calendar/lib/calendar/calendar.js.map +1 -0
  344. package/esm2022/calendar/lib/date-provider/date-adapter.js +111 -0
  345. package/esm2022/calendar/lib/date-provider/date-adapter.js.map +1 -0
  346. package/esm2022/calendar/lib/date-provider/native-date-adapter.js +151 -0
  347. package/esm2022/calendar/lib/date-provider/native-date-adapter.js.map +1 -0
  348. package/esm2022/calendar/malva-ui-core-calendar.js +5 -0
  349. package/esm2022/calendar/malva-ui-core-calendar.js.map +1 -0
  350. package/esm2022/card/index.js +6 -0
  351. package/esm2022/card/index.js.map +1 -0
  352. package/esm2022/card/lib/card/card.js +54 -0
  353. package/esm2022/card/lib/card/card.js.map +1 -0
  354. package/esm2022/card/lib/card-actions-def.js +27 -0
  355. package/esm2022/card/lib/card-actions-def.js.map +1 -0
  356. package/esm2022/card/lib/card-footer-def.js +32 -0
  357. package/esm2022/card/lib/card-footer-def.js.map +1 -0
  358. package/esm2022/card/lib/card-header-def.js +27 -0
  359. package/esm2022/card/lib/card-header-def.js.map +1 -0
  360. package/esm2022/card/lib/card-subheader-def.js +33 -0
  361. package/esm2022/card/lib/card-subheader-def.js.map +1 -0
  362. package/esm2022/card/malva-ui-core-card.js +5 -0
  363. package/esm2022/card/malva-ui-core-card.js.map +1 -0
  364. package/esm2022/chat/index.js +10 -0
  365. package/esm2022/chat/index.js.map +1 -0
  366. package/esm2022/chat/lib/chat/chat.js +326 -0
  367. package/esm2022/chat/lib/chat/chat.js.map +1 -0
  368. package/esm2022/chat/lib/chat-audio/chat-audio.js +110 -0
  369. package/esm2022/chat/lib/chat-audio/chat-audio.js.map +1 -0
  370. package/esm2022/chat/lib/chat-audio/chat-audio.service.js +28 -0
  371. package/esm2022/chat/lib/chat-audio/chat-audio.service.js.map +1 -0
  372. package/esm2022/chat/lib/chat-date/chat-date.js +46 -0
  373. package/esm2022/chat/lib/chat-date/chat-date.js.map +1 -0
  374. package/esm2022/chat/lib/chat-format.js +11 -0
  375. package/esm2022/chat/lib/chat-format.js.map +1 -0
  376. package/esm2022/chat/lib/chat-media-grid/chat-media-grid.js +53 -0
  377. package/esm2022/chat/lib/chat-media-grid/chat-media-grid.js.map +1 -0
  378. package/esm2022/chat/lib/chat-message/chat-message.js +86 -0
  379. package/esm2022/chat/lib/chat-message/chat-message.js.map +1 -0
  380. package/esm2022/chat/lib/chat-render-list.js +55 -0
  381. package/esm2022/chat/lib/chat-render-list.js.map +1 -0
  382. package/esm2022/chat/lib/chat-tokens.js +9 -0
  383. package/esm2022/chat/lib/chat-tokens.js.map +1 -0
  384. package/esm2022/chat/lib/chat-typing/chat-typing.js +50 -0
  385. package/esm2022/chat/lib/chat-typing/chat-typing.js.map +1 -0
  386. package/esm2022/chat/lib/chat.types.js +1 -0
  387. package/esm2022/chat/lib/chat.types.js.map +1 -0
  388. package/esm2022/chat/lib/defs/chat-author-def.js +27 -0
  389. package/esm2022/chat/lib/defs/chat-author-def.js.map +1 -0
  390. package/esm2022/chat/lib/defs/chat-date-def.js +24 -0
  391. package/esm2022/chat/lib/defs/chat-date-def.js.map +1 -0
  392. package/esm2022/chat/lib/defs/chat-message-def.js +30 -0
  393. package/esm2022/chat/lib/defs/chat-message-def.js.map +1 -0
  394. package/esm2022/chat/malva-ui-core-chat.js +5 -0
  395. package/esm2022/chat/malva-ui-core-chat.js.map +1 -0
  396. package/esm2022/checkbox/index.js +4 -0
  397. package/esm2022/checkbox/index.js.map +1 -0
  398. package/esm2022/checkbox/lib/checkbox/checkbox.js +201 -0
  399. package/esm2022/checkbox/lib/checkbox/checkbox.js.map +1 -0
  400. package/esm2022/checkbox/lib/checkbox-group/checkbox-group.js +68 -0
  401. package/esm2022/checkbox/lib/checkbox-group/checkbox-group.js.map +1 -0
  402. package/esm2022/checkbox/lib/checkbox-group-token.js +3 -0
  403. package/esm2022/checkbox/lib/checkbox-group-token.js.map +1 -0
  404. package/esm2022/checkbox/malva-ui-core-checkbox.js +5 -0
  405. package/esm2022/checkbox/malva-ui-core-checkbox.js.map +1 -0
  406. package/esm2022/chip/index.js +3 -0
  407. package/esm2022/chip/index.js.map +1 -0
  408. package/esm2022/chip/lib/chip/chip.directives.js +32 -0
  409. package/esm2022/chip/lib/chip/chip.directives.js.map +1 -0
  410. package/esm2022/chip/lib/chip/chip.js +140 -0
  411. package/esm2022/chip/lib/chip/chip.js.map +1 -0
  412. package/esm2022/chip/malva-ui-core-chip.js +5 -0
  413. package/esm2022/chip/malva-ui-core-chip.js.map +1 -0
  414. package/esm2022/color-picker/index.js +4 -0
  415. package/esm2022/color-picker/index.js.map +1 -0
  416. package/esm2022/color-picker/lib/color-picker/color-picker.js +530 -0
  417. package/esm2022/color-picker/lib/color-picker/color-picker.js.map +1 -0
  418. package/esm2022/color-picker/lib/color-picker-popup/color-picker-popup.js +419 -0
  419. package/esm2022/color-picker/lib/color-picker-popup/color-picker-popup.js.map +1 -0
  420. package/esm2022/color-picker/lib/color-utils/color-utils.js +256 -0
  421. package/esm2022/color-picker/lib/color-utils/color-utils.js.map +1 -0
  422. package/esm2022/color-picker/malva-ui-core-color-picker.js +5 -0
  423. package/esm2022/color-picker/malva-ui-core-color-picker.js.map +1 -0
  424. package/esm2022/combobox/index.js +3 -0
  425. package/esm2022/combobox/index.js.map +1 -0
  426. package/esm2022/combobox/lib/combobox/combobox.js +911 -0
  427. package/esm2022/combobox/lib/combobox/combobox.js.map +1 -0
  428. package/esm2022/combobox/lib/combobox-template.directives.js +24 -0
  429. package/esm2022/combobox/lib/combobox-template.directives.js.map +1 -0
  430. package/esm2022/combobox/malva-ui-core-combobox.js +5 -0
  431. package/esm2022/combobox/malva-ui-core-combobox.js.map +1 -0
  432. package/esm2022/copy-to-clipboard/index.js +2 -0
  433. package/esm2022/copy-to-clipboard/index.js.map +1 -0
  434. package/esm2022/copy-to-clipboard/lib/copy-to-clipboard/copy-to-clipboard.js +201 -0
  435. package/esm2022/copy-to-clipboard/lib/copy-to-clipboard/copy-to-clipboard.js.map +1 -0
  436. package/esm2022/copy-to-clipboard/malva-ui-core-copy-to-clipboard.js +5 -0
  437. package/esm2022/copy-to-clipboard/malva-ui-core-copy-to-clipboard.js.map +1 -0
  438. package/esm2022/data-table/index.js +9 -0
  439. package/esm2022/data-table/index.js.map +1 -0
  440. package/esm2022/data-table/lib/data-source.js +6 -0
  441. package/esm2022/data-table/lib/data-source.js.map +1 -0
  442. package/esm2022/data-table/lib/data-table/data-table-layout.js +84 -0
  443. package/esm2022/data-table/lib/data-table/data-table-layout.js.map +1 -0
  444. package/esm2022/data-table/lib/data-table/data-table.js +1846 -0
  445. package/esm2022/data-table/lib/data-table/data-table.js.map +1 -0
  446. package/esm2022/data-table/lib/data-table/services/data-table-column-visibility.service.js +37 -0
  447. package/esm2022/data-table/lib/data-table/services/data-table-column-visibility.service.js.map +1 -0
  448. package/esm2022/data-table/lib/data-table/services/data-table-editing.service.js +63 -0
  449. package/esm2022/data-table/lib/data-table/services/data-table-editing.service.js.map +1 -0
  450. package/esm2022/data-table/lib/data-table/services/data-table-pinning.service.js +68 -0
  451. package/esm2022/data-table/lib/data-table/services/data-table-pinning.service.js.map +1 -0
  452. package/esm2022/data-table/lib/data-table-cell.js +46 -0
  453. package/esm2022/data-table/lib/data-table-cell.js.map +1 -0
  454. package/esm2022/data-table/lib/data-table-edit-cell.js +46 -0
  455. package/esm2022/data-table/lib/data-table-edit-cell.js.map +1 -0
  456. package/esm2022/data-table/lib/data-table-error.js +37 -0
  457. package/esm2022/data-table/lib/data-table-error.js.map +1 -0
  458. package/esm2022/data-table/lib/data-table-footer.js +33 -0
  459. package/esm2022/data-table/lib/data-table-footer.js.map +1 -0
  460. package/esm2022/data-table/lib/data-table-no-data.js +26 -0
  461. package/esm2022/data-table/lib/data-table-no-data.js.map +1 -0
  462. package/esm2022/data-table/lib/filter-dropdown/filter-dropdown.js +224 -0
  463. package/esm2022/data-table/lib/filter-dropdown/filter-dropdown.js.map +1 -0
  464. package/esm2022/data-table/lib/types.js +1 -0
  465. package/esm2022/data-table/lib/types.js.map +1 -0
  466. package/esm2022/data-table/malva-ui-core-data-table.js +5 -0
  467. package/esm2022/data-table/malva-ui-core-data-table.js.map +1 -0
  468. package/esm2022/date-range-picker/index.js +2 -0
  469. package/esm2022/date-range-picker/index.js.map +1 -0
  470. package/esm2022/date-range-picker/lib/date-range-picker/date-range-picker.js +269 -0
  471. package/esm2022/date-range-picker/lib/date-range-picker/date-range-picker.js.map +1 -0
  472. package/esm2022/date-range-picker/malva-ui-core-date-range-picker.js +5 -0
  473. package/esm2022/date-range-picker/malva-ui-core-date-range-picker.js.map +1 -0
  474. package/esm2022/day-picker/index.js +2 -0
  475. package/esm2022/day-picker/index.js.map +1 -0
  476. package/esm2022/day-picker/lib/day-picker/day-picker.js +124 -0
  477. package/esm2022/day-picker/lib/day-picker/day-picker.js.map +1 -0
  478. package/esm2022/day-picker/malva-ui-core-day-picker.js +5 -0
  479. package/esm2022/day-picker/malva-ui-core-day-picker.js.map +1 -0
  480. package/esm2022/dialog/index.js +12 -0
  481. package/esm2022/dialog/index.js.map +1 -0
  482. package/esm2022/dialog/lib/confirm-dialog-options.js +1 -0
  483. package/esm2022/dialog/lib/confirm-dialog-options.js.map +1 -0
  484. package/esm2022/dialog/lib/confirm-dialog.js +155 -0
  485. package/esm2022/dialog/lib/confirm-dialog.js.map +1 -0
  486. package/esm2022/dialog/lib/dialog/dialog.js +40 -0
  487. package/esm2022/dialog/lib/dialog/dialog.js.map +1 -0
  488. package/esm2022/dialog/lib/dialog-body.js +33 -0
  489. package/esm2022/dialog/lib/dialog-body.js.map +1 -0
  490. package/esm2022/dialog/lib/dialog-close.js +45 -0
  491. package/esm2022/dialog/lib/dialog-close.js.map +1 -0
  492. package/esm2022/dialog/lib/dialog-config.js +23 -0
  493. package/esm2022/dialog/lib/dialog-config.js.map +1 -0
  494. package/esm2022/dialog/lib/dialog-container.js +69 -0
  495. package/esm2022/dialog/lib/dialog-container.js.map +1 -0
  496. package/esm2022/dialog/lib/dialog-footer.js +29 -0
  497. package/esm2022/dialog/lib/dialog-footer.js.map +1 -0
  498. package/esm2022/dialog/lib/dialog-header.js +181 -0
  499. package/esm2022/dialog/lib/dialog-header.js.map +1 -0
  500. package/esm2022/dialog/lib/dialog-ref.js +167 -0
  501. package/esm2022/dialog/lib/dialog-ref.js.map +1 -0
  502. package/esm2022/dialog/lib/dialog-template.js +136 -0
  503. package/esm2022/dialog/lib/dialog-template.js.map +1 -0
  504. package/esm2022/dialog/lib/dialog-text-content.js +59 -0
  505. package/esm2022/dialog/lib/dialog-text-content.js.map +1 -0
  506. package/esm2022/dialog/lib/dialog.service.js +205 -0
  507. package/esm2022/dialog/lib/dialog.service.js.map +1 -0
  508. package/esm2022/dialog/lib/generate-routable-dialog-route.js +59 -0
  509. package/esm2022/dialog/lib/generate-routable-dialog-route.js.map +1 -0
  510. package/esm2022/dialog/lib/inject-dialog-ref.js +16 -0
  511. package/esm2022/dialog/lib/inject-dialog-ref.js.map +1 -0
  512. package/esm2022/dialog/lib/routable-dialog.js +91 -0
  513. package/esm2022/dialog/lib/routable-dialog.js.map +1 -0
  514. package/esm2022/dialog/malva-ui-core-dialog.js +5 -0
  515. package/esm2022/dialog/malva-ui-core-dialog.js.map +1 -0
  516. package/esm2022/divider/index.js +2 -0
  517. package/esm2022/divider/index.js.map +1 -0
  518. package/esm2022/divider/lib/divider/divider.js +73 -0
  519. package/esm2022/divider/lib/divider/divider.js.map +1 -0
  520. package/esm2022/divider/malva-ui-core-divider.js +5 -0
  521. package/esm2022/divider/malva-ui-core-divider.js.map +1 -0
  522. package/esm2022/drawer/index.js +12 -0
  523. package/esm2022/drawer/index.js.map +1 -0
  524. package/esm2022/drawer/lib/drawer/drawer.js +180 -0
  525. package/esm2022/drawer/lib/drawer/drawer.js.map +1 -0
  526. package/esm2022/drawer/lib/drawer-body.js +32 -0
  527. package/esm2022/drawer/lib/drawer-body.js.map +1 -0
  528. package/esm2022/drawer/lib/drawer-content.js +14 -0
  529. package/esm2022/drawer/lib/drawer-content.js.map +1 -0
  530. package/esm2022/drawer/lib/drawer-footer.js +14 -0
  531. package/esm2022/drawer/lib/drawer-footer.js.map +1 -0
  532. package/esm2022/drawer/lib/drawer-header.js +14 -0
  533. package/esm2022/drawer/lib/drawer-header.js.map +1 -0
  534. package/esm2022/drawer/lib/drawer-ref.js +31 -0
  535. package/esm2022/drawer/lib/drawer-ref.js.map +1 -0
  536. package/esm2022/drawer/lib/drawer-resize.js +243 -0
  537. package/esm2022/drawer/lib/drawer-resize.js.map +1 -0
  538. package/esm2022/drawer/lib/drawer-section/drawer-section.js +26 -0
  539. package/esm2022/drawer/lib/drawer-section/drawer-section.js.map +1 -0
  540. package/esm2022/drawer/lib/drawer-sections/drawer-sections.js +58 -0
  541. package/esm2022/drawer/lib/drawer-sections/drawer-sections.js.map +1 -0
  542. package/esm2022/drawer/lib/drawer-sections.service.js +83 -0
  543. package/esm2022/drawer/lib/drawer-sections.service.js.map +1 -0
  544. package/esm2022/drawer/lib/drawer.service.js +86 -0
  545. package/esm2022/drawer/lib/drawer.service.js.map +1 -0
  546. package/esm2022/drawer/lib/generate-routable-drawer-route.js +52 -0
  547. package/esm2022/drawer/lib/generate-routable-drawer-route.js.map +1 -0
  548. package/esm2022/drawer/lib/routable-drawer.js +91 -0
  549. package/esm2022/drawer/lib/routable-drawer.js.map +1 -0
  550. package/esm2022/drawer/malva-ui-core-drawer.js +5 -0
  551. package/esm2022/drawer/malva-ui-core-drawer.js.map +1 -0
  552. package/esm2022/dropdown/index.js +10 -0
  553. package/esm2022/dropdown/index.js.map +1 -0
  554. package/esm2022/dropdown/lib/active-descendant.js +92 -0
  555. package/esm2022/dropdown/lib/active-descendant.js.map +1 -0
  556. package/esm2022/dropdown/lib/dropdown-panel/dropdown-panel.js +295 -0
  557. package/esm2022/dropdown/lib/dropdown-panel/dropdown-panel.js.map +1 -0
  558. package/esm2022/dropdown/lib/highlight-match.pipe.js +36 -0
  559. package/esm2022/dropdown/lib/highlight-match.pipe.js.map +1 -0
  560. package/esm2022/dropdown/lib/option-matcher.js +124 -0
  561. package/esm2022/dropdown/lib/option-matcher.js.map +1 -0
  562. package/esm2022/dropdown/lib/options-adapter.js +356 -0
  563. package/esm2022/dropdown/lib/options-adapter.js.map +1 -0
  564. package/esm2022/dropdown/lib/options-result.js +11 -0
  565. package/esm2022/dropdown/lib/options-result.js.map +1 -0
  566. package/esm2022/dropdown/lib/reconciliation.js +32 -0
  567. package/esm2022/dropdown/lib/reconciliation.js.map +1 -0
  568. package/esm2022/dropdown/lib/select-data-source.js +21 -0
  569. package/esm2022/dropdown/lib/select-data-source.js.map +1 -0
  570. package/esm2022/dropdown/lib/select-option.js +25 -0
  571. package/esm2022/dropdown/lib/select-option.js.map +1 -0
  572. package/esm2022/dropdown/malva-ui-core-dropdown.js +5 -0
  573. package/esm2022/dropdown/malva-ui-core-dropdown.js.map +1 -0
  574. package/esm2022/empty-state/index.js +2 -0
  575. package/esm2022/empty-state/index.js.map +1 -0
  576. package/esm2022/empty-state/lib/empty-state/empty-state.js +43 -0
  577. package/esm2022/empty-state/lib/empty-state/empty-state.js.map +1 -0
  578. package/esm2022/empty-state/malva-ui-core-empty-state.js +5 -0
  579. package/esm2022/empty-state/malva-ui-core-empty-state.js.map +1 -0
  580. package/esm2022/expand/index.js +3 -0
  581. package/esm2022/expand/index.js.map +1 -0
  582. package/esm2022/expand/lib/expand/expand-content.js +33 -0
  583. package/esm2022/expand/lib/expand/expand-content.js.map +1 -0
  584. package/esm2022/expand/lib/expand/expand.js +93 -0
  585. package/esm2022/expand/lib/expand/expand.js.map +1 -0
  586. package/esm2022/expand/malva-ui-core-expand.js +5 -0
  587. package/esm2022/expand/malva-ui-core-expand.js.map +1 -0
  588. package/esm2022/file-upload/index.js +5 -0
  589. package/esm2022/file-upload/index.js.map +1 -0
  590. package/esm2022/file-upload/lib/file-upload/file-upload.js +324 -0
  591. package/esm2022/file-upload/lib/file-upload/file-upload.js.map +1 -0
  592. package/esm2022/file-upload/lib/file-upload/file-upload.types.js +1 -0
  593. package/esm2022/file-upload/lib/file-upload/file-upload.types.js.map +1 -0
  594. package/esm2022/file-upload/lib/file-upload-action.js +65 -0
  595. package/esm2022/file-upload/lib/file-upload-action.js.map +1 -0
  596. package/esm2022/file-upload/lib/file-upload-item/file-upload-item.js +55 -0
  597. package/esm2022/file-upload/lib/file-upload-item/file-upload-item.js.map +1 -0
  598. package/esm2022/file-upload/malva-ui-core-file-upload.js +5 -0
  599. package/esm2022/file-upload/malva-ui-core-file-upload.js.map +1 -0
  600. package/esm2022/filter/index.js +4 -0
  601. package/esm2022/filter/index.js.map +1 -0
  602. package/esm2022/filter/lib/filter/filter.js +552 -0
  603. package/esm2022/filter/lib/filter/filter.js.map +1 -0
  604. package/esm2022/filter/lib/filter.types.js +1 -0
  605. package/esm2022/filter/lib/filter.types.js.map +1 -0
  606. package/esm2022/filter/lib/smart-filter-bar/smart-filter-bar.js +518 -0
  607. package/esm2022/filter/lib/smart-filter-bar/smart-filter-bar.js.map +1 -0
  608. package/esm2022/filter/malva-ui-core-filter.js +5 -0
  609. package/esm2022/filter/malva-ui-core-filter.js.map +1 -0
  610. package/esm2022/form/index.js +7 -0
  611. package/esm2022/form/index.js.map +1 -0
  612. package/esm2022/form/lib/fieldset/fieldset.js +101 -0
  613. package/esm2022/form/lib/fieldset/fieldset.js.map +1 -0
  614. package/esm2022/form/lib/fieldset-span.js +49 -0
  615. package/esm2022/form/lib/fieldset-span.js.map +1 -0
  616. package/esm2022/form/lib/form/form.js +60 -0
  617. package/esm2022/form/lib/form/form.js.map +1 -0
  618. package/esm2022/form/lib/form-actions.js +34 -0
  619. package/esm2022/form/lib/form-actions.js.map +1 -0
  620. package/esm2022/form/lib/form-gap.js +15 -0
  621. package/esm2022/form/lib/form-gap.js.map +1 -0
  622. package/esm2022/form/lib/form-header.js +27 -0
  623. package/esm2022/form/lib/form-header.js.map +1 -0
  624. package/esm2022/form/lib/form.types.js +1 -0
  625. package/esm2022/form/lib/form.types.js.map +1 -0
  626. package/esm2022/form/malva-ui-core-form.js +5 -0
  627. package/esm2022/form/malva-ui-core-form.js.map +1 -0
  628. package/esm2022/form-utils/index.js +16 -0
  629. package/esm2022/form-utils/index.js.map +1 -0
  630. package/esm2022/form-utils/lib/aria-value-bridge.js +57 -0
  631. package/esm2022/form-utils/lib/aria-value-bridge.js.map +1 -0
  632. package/esm2022/form-utils/lib/description/description.js +24 -0
  633. package/esm2022/form-utils/lib/description/description.js.map +1 -0
  634. package/esm2022/form-utils/lib/focusable-group-base.js +87 -0
  635. package/esm2022/form-utils/lib/focusable-group-base.js.map +1 -0
  636. package/esm2022/form-utils/lib/form-control-base/signal-form-control-base.js +192 -0
  637. package/esm2022/form-utils/lib/form-control-base/signal-form-control-base.js.map +1 -0
  638. package/esm2022/form-utils/lib/form-control-sides.js +34 -0
  639. package/esm2022/form-utils/lib/form-control-sides.js.map +1 -0
  640. package/esm2022/form-utils/lib/form-control-wrapper/form-control-wrapper-control.js +14 -0
  641. package/esm2022/form-utils/lib/form-control-wrapper/form-control-wrapper-control.js.map +1 -0
  642. package/esm2022/form-utils/lib/form-control-wrapper/form-control-wrapper.js +47 -0
  643. package/esm2022/form-utils/lib/form-control-wrapper/form-control-wrapper.js.map +1 -0
  644. package/esm2022/form-utils/lib/form-field/form-field.js +245 -0
  645. package/esm2022/form-utils/lib/form-field/form-field.js.map +1 -0
  646. package/esm2022/form-utils/lib/hint/hint.js +11 -0
  647. package/esm2022/form-utils/lib/hint/hint.js.map +1 -0
  648. package/esm2022/form-utils/lib/label/label.js +55 -0
  649. package/esm2022/form-utils/lib/label/label.js.map +1 -0
  650. package/esm2022/form-utils/lib/message/message.js +20 -0
  651. package/esm2022/form-utils/lib/message/message.js.map +1 -0
  652. package/esm2022/form-utils/lib/models/error-display-strategy.js +1 -0
  653. package/esm2022/form-utils/lib/models/error-display-strategy.js.map +1 -0
  654. package/esm2022/form-utils/lib/models/form-control-connector.js +3 -0
  655. package/esm2022/form-utils/lib/models/form-control-connector.js.map +1 -0
  656. package/esm2022/form-utils/lib/models/form-state.js +1 -0
  657. package/esm2022/form-utils/lib/models/form-state.js.map +1 -0
  658. package/esm2022/form-utils/lib/selection.service.js +81 -0
  659. package/esm2022/form-utils/lib/selection.service.js.map +1 -0
  660. package/esm2022/form-utils/malva-ui-core-form-utils.js +5 -0
  661. package/esm2022/form-utils/malva-ui-core-form-utils.js.map +1 -0
  662. package/esm2022/form-utils/testing/index.js +2 -0
  663. package/esm2022/form-utils/testing/index.js.map +1 -0
  664. package/esm2022/form-utils/testing/lib/forms-binding-matrix.js +32 -0
  665. package/esm2022/form-utils/testing/lib/forms-binding-matrix.js.map +1 -0
  666. package/esm2022/form-utils/testing/malva-ui-core-form-utils-testing.js +5 -0
  667. package/esm2022/form-utils/testing/malva-ui-core-form-utils-testing.js.map +1 -0
  668. package/esm2022/index.js +70 -0
  669. package/esm2022/index.js.map +1 -0
  670. package/esm2022/input/index.js +4 -0
  671. package/esm2022/input/index.js.map +1 -0
  672. package/esm2022/input/lib/input/input-native.js +49 -0
  673. package/esm2022/input/lib/input/input-native.js.map +1 -0
  674. package/esm2022/input/lib/input/input-value-accessor.js +4 -0
  675. package/esm2022/input/lib/input/input-value-accessor.js.map +1 -0
  676. package/esm2022/input/lib/input/input.js +277 -0
  677. package/esm2022/input/lib/input/input.js.map +1 -0
  678. package/esm2022/input/lib/input/password-strength.js +46 -0
  679. package/esm2022/input/lib/input/password-strength.js.map +1 -0
  680. package/esm2022/input/malva-ui-core-input.js +5 -0
  681. package/esm2022/input/malva-ui-core-input.js.map +1 -0
  682. package/esm2022/kbd/index.js +2 -0
  683. package/esm2022/kbd/index.js.map +1 -0
  684. package/esm2022/kbd/lib/kbd/kbd.js +124 -0
  685. package/esm2022/kbd/lib/kbd/kbd.js.map +1 -0
  686. package/esm2022/kbd/malva-ui-core-kbd.js +5 -0
  687. package/esm2022/kbd/malva-ui-core-kbd.js.map +1 -0
  688. package/esm2022/layout/index.js +5 -0
  689. package/esm2022/layout/index.js.map +1 -0
  690. package/esm2022/layout/lib/layout/directives/MlvLayoutSide.js +14 -0
  691. package/esm2022/layout/lib/layout/directives/MlvLayoutSide.js.map +1 -0
  692. package/esm2022/layout/lib/layout/directives/MlvLayoutTop.js +14 -0
  693. package/esm2022/layout/lib/layout/directives/MlvLayoutTop.js.map +1 -0
  694. package/esm2022/layout/lib/layout/layout.js +43 -0
  695. package/esm2022/layout/lib/layout/layout.js.map +1 -0
  696. package/esm2022/layout/lib/layout/services/theme.service.js +121 -0
  697. package/esm2022/layout/lib/layout/services/theme.service.js.map +1 -0
  698. package/esm2022/layout/malva-ui-core-layout.js +5 -0
  699. package/esm2022/layout/malva-ui-core-layout.js.map +1 -0
  700. package/esm2022/link/index.js +3 -0
  701. package/esm2022/link/index.js.map +1 -0
  702. package/esm2022/link/lib/link/link.directives.js +24 -0
  703. package/esm2022/link/lib/link/link.directives.js.map +1 -0
  704. package/esm2022/link/lib/link/link.js +61 -0
  705. package/esm2022/link/lib/link/link.js.map +1 -0
  706. package/esm2022/link/malva-ui-core-link.js +5 -0
  707. package/esm2022/link/malva-ui-core-link.js.map +1 -0
  708. package/esm2022/list/index.js +14 -0
  709. package/esm2022/list/index.js.map +1 -0
  710. package/esm2022/list/lib/list/list.js +28 -0
  711. package/esm2022/list/lib/list/list.js.map +1 -0
  712. package/esm2022/list/lib/list-item/list-item.js +125 -0
  713. package/esm2022/list/lib/list-item/list-item.js.map +1 -0
  714. package/esm2022/list/lib/list-item-actions.js +23 -0
  715. package/esm2022/list/lib/list-item-actions.js.map +1 -0
  716. package/esm2022/list/lib/list-item-byline.js +13 -0
  717. package/esm2022/list/lib/list-item-byline.js.map +1 -0
  718. package/esm2022/list/lib/list-item-group/list-item-group.js +25 -0
  719. package/esm2022/list/lib/list-item-group/list-item-group.js.map +1 -0
  720. package/esm2022/list/lib/list-item-link/list-item-link.js +20 -0
  721. package/esm2022/list/lib/list-item-link/list-item-link.js.map +1 -0
  722. package/esm2022/list/lib/list-item-media.js +13 -0
  723. package/esm2022/list/lib/list-item-media.js.map +1 -0
  724. package/esm2022/list/lib/list-item-meta.js +13 -0
  725. package/esm2022/list/lib/list-item-meta.js.map +1 -0
  726. package/esm2022/list/lib/list-item-prefix.js +13 -0
  727. package/esm2022/list/lib/list-item-prefix.js.map +1 -0
  728. package/esm2022/list/lib/list-item-suffix.js +13 -0
  729. package/esm2022/list/lib/list-item-suffix.js.map +1 -0
  730. package/esm2022/list/lib/list-item-template.js +14 -0
  731. package/esm2022/list/lib/list-item-template.js.map +1 -0
  732. package/esm2022/list/lib/list-item-title.js +13 -0
  733. package/esm2022/list/lib/list-item-title.js.map +1 -0
  734. package/esm2022/list/lib/list-selectable.js +116 -0
  735. package/esm2022/list/lib/list-selectable.js.map +1 -0
  736. package/esm2022/list/malva-ui-core-list.js +5 -0
  737. package/esm2022/list/malva-ui-core-list.js.map +1 -0
  738. package/esm2022/loader/index.js +2 -0
  739. package/esm2022/loader/index.js.map +1 -0
  740. package/esm2022/loader/lib/loader/loader.js +134 -0
  741. package/esm2022/loader/lib/loader/loader.js.map +1 -0
  742. package/esm2022/loader/malva-ui-core-loader.js +5 -0
  743. package/esm2022/loader/malva-ui-core-loader.js.map +1 -0
  744. package/esm2022/malva-ui-core.js +5 -0
  745. package/esm2022/malva-ui-core.js.map +1 -0
  746. package/esm2022/menu/index.js +10 -0
  747. package/esm2022/menu/index.js.map +1 -0
  748. package/esm2022/menu/lib/menu/menu-group-label.js +35 -0
  749. package/esm2022/menu/lib/menu/menu-group-label.js.map +1 -0
  750. package/esm2022/menu/lib/menu/menu-group.js +44 -0
  751. package/esm2022/menu/lib/menu/menu-group.js.map +1 -0
  752. package/esm2022/menu/lib/menu/menu-item.js +117 -0
  753. package/esm2022/menu/lib/menu/menu-item.js.map +1 -0
  754. package/esm2022/menu/lib/menu/menu-separator.js +41 -0
  755. package/esm2022/menu/lib/menu/menu-separator.js.map +1 -0
  756. package/esm2022/menu/lib/menu/menu-trigger.js +653 -0
  757. package/esm2022/menu/lib/menu/menu-trigger.js.map +1 -0
  758. package/esm2022/menu/lib/menu/menu.js +308 -0
  759. package/esm2022/menu/lib/menu/menu.js.map +1 -0
  760. package/esm2022/menu/lib/menu/menu.types.js +4 -0
  761. package/esm2022/menu/lib/menu/menu.types.js.map +1 -0
  762. package/esm2022/menu/lib/menu/menubar.js +257 -0
  763. package/esm2022/menu/lib/menu/menubar.js.map +1 -0
  764. package/esm2022/menu/lib/menu/menubar.types.js +4 -0
  765. package/esm2022/menu/lib/menu/menubar.types.js.map +1 -0
  766. package/esm2022/menu/lib/menu/submenu-aim.js +30 -0
  767. package/esm2022/menu/lib/menu/submenu-aim.js.map +1 -0
  768. package/esm2022/menu/malva-ui-core-menu.js +5 -0
  769. package/esm2022/menu/malva-ui-core-menu.js.map +1 -0
  770. package/esm2022/notification/index.js +5 -0
  771. package/esm2022/notification/index.js.map +1 -0
  772. package/esm2022/notification/lib/notification-item/notification-item.js +65 -0
  773. package/esm2022/notification/lib/notification-item/notification-item.js.map +1 -0
  774. package/esm2022/notification/lib/notification-ref.js +13 -0
  775. package/esm2022/notification/lib/notification-ref.js.map +1 -0
  776. package/esm2022/notification/lib/notification.service.js +118 -0
  777. package/esm2022/notification/lib/notification.service.js.map +1 -0
  778. package/esm2022/notification/lib/notification.types.js +6 -0
  779. package/esm2022/notification/lib/notification.types.js.map +1 -0
  780. package/esm2022/notification/malva-ui-core-notification.js +5 -0
  781. package/esm2022/notification/malva-ui-core-notification.js.map +1 -0
  782. package/esm2022/number-input/index.js +2 -0
  783. package/esm2022/number-input/index.js.map +1 -0
  784. package/esm2022/number-input/lib/number-input/number-input.js +395 -0
  785. package/esm2022/number-input/lib/number-input/number-input.js.map +1 -0
  786. package/esm2022/number-input/malva-ui-core-number-input.js +5 -0
  787. package/esm2022/number-input/malva-ui-core-number-input.js.map +1 -0
  788. package/esm2022/page/index.js +15 -0
  789. package/esm2022/page/index.js.map +1 -0
  790. package/esm2022/page/lib/page/page-scroll.token.js +9 -0
  791. package/esm2022/page/lib/page/page-scroll.token.js.map +1 -0
  792. package/esm2022/page/lib/page/page-snap-controller.js +170 -0
  793. package/esm2022/page/lib/page/page-snap-controller.js.map +1 -0
  794. package/esm2022/page/lib/page/page-snap.directive.js +65 -0
  795. package/esm2022/page/lib/page/page-snap.directive.js.map +1 -0
  796. package/esm2022/page/lib/page/page.js +173 -0
  797. package/esm2022/page/lib/page/page.js.map +1 -0
  798. package/esm2022/page/lib/page-content/page-aside.js +13 -0
  799. package/esm2022/page/lib/page-content/page-aside.js.map +1 -0
  800. package/esm2022/page/lib/page-content/page-content.js +72 -0
  801. package/esm2022/page/lib/page-content/page-content.js.map +1 -0
  802. package/esm2022/page/lib/page-dock/page-dock.js +128 -0
  803. package/esm2022/page/lib/page-dock/page-dock.js.map +1 -0
  804. package/esm2022/page/lib/page-dock/page-dock.slots.js +39 -0
  805. package/esm2022/page/lib/page-dock/page-dock.slots.js.map +1 -0
  806. package/esm2022/page/lib/page-header/page-header.directives.js +88 -0
  807. package/esm2022/page/lib/page-header/page-header.directives.js.map +1 -0
  808. package/esm2022/page/lib/page-header/page-header.js +124 -0
  809. package/esm2022/page/lib/page-header/page-header.js.map +1 -0
  810. package/esm2022/page/lib/page-shell/page-shell-color.js +193 -0
  811. package/esm2022/page/lib/page-shell/page-shell-color.js.map +1 -0
  812. package/esm2022/page/lib/page-shell/page-shell-css-color.js +207 -0
  813. package/esm2022/page/lib/page-shell/page-shell-css-color.js.map +1 -0
  814. package/esm2022/page/lib/page-shell/page-shell.js +131 -0
  815. package/esm2022/page/lib/page-shell/page-shell.js.map +1 -0
  816. package/esm2022/page/lib/page-shell/page-shell.slots.js +41 -0
  817. package/esm2022/page/lib/page-shell/page-shell.slots.js.map +1 -0
  818. package/esm2022/page/lib/page-summary/page-summary-item.js +26 -0
  819. package/esm2022/page/lib/page-summary/page-summary-item.js.map +1 -0
  820. package/esm2022/page/lib/page-summary/page-summary.js +87 -0
  821. package/esm2022/page/lib/page-summary/page-summary.js.map +1 -0
  822. package/esm2022/page/malva-ui-core-page.js +5 -0
  823. package/esm2022/page/malva-ui-core-page.js.map +1 -0
  824. package/esm2022/pagination/index.js +5 -0
  825. package/esm2022/pagination/index.js.map +1 -0
  826. package/esm2022/pagination/lib/pagination/pagination.directives.js +58 -0
  827. package/esm2022/pagination/lib/pagination/pagination.directives.js.map +1 -0
  828. package/esm2022/pagination/lib/pagination/pagination.js +293 -0
  829. package/esm2022/pagination/lib/pagination/pagination.js.map +1 -0
  830. package/esm2022/pagination/lib/pagination/pagination.model.js +1 -0
  831. package/esm2022/pagination/lib/pagination/pagination.model.js.map +1 -0
  832. package/esm2022/pagination/lib/pagination/pagination.service.js +108 -0
  833. package/esm2022/pagination/lib/pagination/pagination.service.js.map +1 -0
  834. package/esm2022/pagination/malva-ui-core-pagination.js +5 -0
  835. package/esm2022/pagination/malva-ui-core-pagination.js.map +1 -0
  836. package/esm2022/pin-input/index.js +3 -0
  837. package/esm2022/pin-input/index.js.map +1 -0
  838. package/esm2022/pin-input/lib/pin-input/pin-input-separator.js +31 -0
  839. package/esm2022/pin-input/lib/pin-input/pin-input-separator.js.map +1 -0
  840. package/esm2022/pin-input/lib/pin-input/pin-input.js +365 -0
  841. package/esm2022/pin-input/lib/pin-input/pin-input.js.map +1 -0
  842. package/esm2022/pin-input/malva-ui-core-pin-input.js +5 -0
  843. package/esm2022/pin-input/malva-ui-core-pin-input.js.map +1 -0
  844. package/esm2022/popup/index.js +10 -0
  845. package/esm2022/popup/index.js.map +1 -0
  846. package/esm2022/popup/lib/popup/popup.js +500 -0
  847. package/esm2022/popup/lib/popup/popup.js.map +1 -0
  848. package/esm2022/popup/lib/popup-container/popup-container.js +169 -0
  849. package/esm2022/popup/lib/popup-container/popup-container.js.map +1 -0
  850. package/esm2022/popup/lib/popup-container/popup-container.token.js +9 -0
  851. package/esm2022/popup/lib/popup-container/popup-container.token.js.map +1 -0
  852. package/esm2022/popup/lib/popup-content.js +14 -0
  853. package/esm2022/popup/lib/popup-content.js.map +1 -0
  854. package/esm2022/popup/lib/popup-header-content.js +26 -0
  855. package/esm2022/popup/lib/popup-header-content.js.map +1 -0
  856. package/esm2022/popup/lib/popup-pinned-content.js +25 -0
  857. package/esm2022/popup/lib/popup-pinned-content.js.map +1 -0
  858. package/esm2022/popup/lib/popup-positions.js +252 -0
  859. package/esm2022/popup/lib/popup-positions.js.map +1 -0
  860. package/esm2022/popup/lib/popup-trigger/popup-trigger.js +308 -0
  861. package/esm2022/popup/lib/popup-trigger/popup-trigger.js.map +1 -0
  862. package/esm2022/popup/lib/popup.service.js +188 -0
  863. package/esm2022/popup/lib/popup.service.js.map +1 -0
  864. package/esm2022/popup/malva-ui-core-popup.js +5 -0
  865. package/esm2022/popup/malva-ui-core-popup.js.map +1 -0
  866. package/esm2022/progress/index.js +2 -0
  867. package/esm2022/progress/index.js.map +1 -0
  868. package/esm2022/progress/lib/progress/progress.js +102 -0
  869. package/esm2022/progress/lib/progress/progress.js.map +1 -0
  870. package/esm2022/progress/malva-ui-core-progress.js +5 -0
  871. package/esm2022/progress/malva-ui-core-progress.js.map +1 -0
  872. package/esm2022/radio/index.js +3 -0
  873. package/esm2022/radio/index.js.map +1 -0
  874. package/esm2022/radio/lib/radio/radio.js +134 -0
  875. package/esm2022/radio/lib/radio/radio.js.map +1 -0
  876. package/esm2022/radio/lib/radio-group/radio-group.js +176 -0
  877. package/esm2022/radio/lib/radio-group/radio-group.js.map +1 -0
  878. package/esm2022/radio/lib/radio-group-token.js +3 -0
  879. package/esm2022/radio/lib/radio-group-token.js.map +1 -0
  880. package/esm2022/radio/malva-ui-core-radio.js +5 -0
  881. package/esm2022/radio/malva-ui-core-radio.js.map +1 -0
  882. package/esm2022/rating/index.js +2 -0
  883. package/esm2022/rating/index.js.map +1 -0
  884. package/esm2022/rating/lib/rating/rating.js +208 -0
  885. package/esm2022/rating/lib/rating/rating.js.map +1 -0
  886. package/esm2022/rating/malva-ui-core-rating.js +5 -0
  887. package/esm2022/rating/malva-ui-core-rating.js.map +1 -0
  888. package/esm2022/scrollbar/index.js +2 -0
  889. package/esm2022/scrollbar/index.js.map +1 -0
  890. package/esm2022/scrollbar/lib/scrollbar/scrollbar.js +388 -0
  891. package/esm2022/scrollbar/lib/scrollbar/scrollbar.js.map +1 -0
  892. package/esm2022/scrollbar/malva-ui-core-scrollbar.js +5 -0
  893. package/esm2022/scrollbar/malva-ui-core-scrollbar.js.map +1 -0
  894. package/esm2022/search-field/index.js +3 -0
  895. package/esm2022/search-field/index.js.map +1 -0
  896. package/esm2022/search-field/lib/search-field/search-field.js +535 -0
  897. package/esm2022/search-field/lib/search-field/search-field.js.map +1 -0
  898. package/esm2022/search-field/lib/search-field/search-overlay-content.js +35 -0
  899. package/esm2022/search-field/lib/search-field/search-overlay-content.js.map +1 -0
  900. package/esm2022/search-field/malva-ui-core-search-field.js +5 -0
  901. package/esm2022/search-field/malva-ui-core-search-field.js.map +1 -0
  902. package/esm2022/segmented/index.js +5 -0
  903. package/esm2022/segmented/index.js.map +1 -0
  904. package/esm2022/segmented/lib/segmented/segmented.js +248 -0
  905. package/esm2022/segmented/lib/segmented/segmented.js.map +1 -0
  906. package/esm2022/segmented/lib/segmented-item/segmented-item.js +194 -0
  907. package/esm2022/segmented/lib/segmented-item/segmented-item.js.map +1 -0
  908. package/esm2022/segmented/lib/segmented-token.js +4 -0
  909. package/esm2022/segmented/lib/segmented-token.js.map +1 -0
  910. package/esm2022/segmented/lib/segmented.types.js +1 -0
  911. package/esm2022/segmented/lib/segmented.types.js.map +1 -0
  912. package/esm2022/segmented/malva-ui-core-segmented.js +5 -0
  913. package/esm2022/segmented/malva-ui-core-segmented.js.map +1 -0
  914. package/esm2022/select/index.js +4 -0
  915. package/esm2022/select/index.js.map +1 -0
  916. package/esm2022/select/lib/select/select.js +685 -0
  917. package/esm2022/select/lib/select/select.js.map +1 -0
  918. package/esm2022/select/lib/select-option.js +2 -0
  919. package/esm2022/select/lib/select-option.js.map +1 -0
  920. package/esm2022/select/lib/select-template.directives.js +34 -0
  921. package/esm2022/select/lib/select-template.directives.js.map +1 -0
  922. package/esm2022/select/malva-ui-core-select.js +5 -0
  923. package/esm2022/select/malva-ui-core-select.js.map +1 -0
  924. package/esm2022/sidebar/index.js +16 -0
  925. package/esm2022/sidebar/index.js.map +1 -0
  926. package/esm2022/sidebar/lib/sidebar/sidebar.js +251 -0
  927. package/esm2022/sidebar/lib/sidebar/sidebar.js.map +1 -0
  928. package/esm2022/sidebar/lib/sidebar-content.js +37 -0
  929. package/esm2022/sidebar/lib/sidebar-content.js.map +1 -0
  930. package/esm2022/sidebar/lib/sidebar-context.js +3 -0
  931. package/esm2022/sidebar/lib/sidebar-context.js.map +1 -0
  932. package/esm2022/sidebar/lib/sidebar-footer.js +20 -0
  933. package/esm2022/sidebar/lib/sidebar-footer.js.map +1 -0
  934. package/esm2022/sidebar/lib/sidebar-group/sidebar-group.js +341 -0
  935. package/esm2022/sidebar/lib/sidebar-group/sidebar-group.js.map +1 -0
  936. package/esm2022/sidebar/lib/sidebar-header.js +20 -0
  937. package/esm2022/sidebar/lib/sidebar-header.js.map +1 -0
  938. package/esm2022/sidebar/lib/sidebar-item/sidebar-item.js +216 -0
  939. package/esm2022/sidebar/lib/sidebar-item/sidebar-item.js.map +1 -0
  940. package/esm2022/sidebar/lib/sidebar-item-host.js +39 -0
  941. package/esm2022/sidebar/lib/sidebar-item-host.js.map +1 -0
  942. package/esm2022/sidebar/lib/sidebar-item-icon.js +14 -0
  943. package/esm2022/sidebar/lib/sidebar-item-icon.js.map +1 -0
  944. package/esm2022/sidebar/lib/sidebar-mode.js +1 -0
  945. package/esm2022/sidebar/lib/sidebar-mode.js.map +1 -0
  946. package/esm2022/sidebar/lib/sidebar-rail/sidebar-rail.js +202 -0
  947. package/esm2022/sidebar/lib/sidebar-rail/sidebar-rail.js.map +1 -0
  948. package/esm2022/sidebar/lib/sidebar-trigger/sidebar-trigger.js +159 -0
  949. package/esm2022/sidebar/lib/sidebar-trigger/sidebar-trigger.js.map +1 -0
  950. package/esm2022/sidebar/lib/sidebar-workspace/sidebar-workspace.directives.js +35 -0
  951. package/esm2022/sidebar/lib/sidebar-workspace/sidebar-workspace.directives.js.map +1 -0
  952. package/esm2022/sidebar/lib/sidebar-workspace/sidebar-workspace.js +107 -0
  953. package/esm2022/sidebar/lib/sidebar-workspace/sidebar-workspace.js.map +1 -0
  954. package/esm2022/sidebar/lib/sidebar-workspace/sidebar-workspace.types.js +1 -0
  955. package/esm2022/sidebar/lib/sidebar-workspace/sidebar-workspace.types.js.map +1 -0
  956. package/esm2022/sidebar/malva-ui-core-sidebar.js +5 -0
  957. package/esm2022/sidebar/malva-ui-core-sidebar.js.map +1 -0
  958. package/esm2022/skeleton/index.js +2 -0
  959. package/esm2022/skeleton/index.js.map +1 -0
  960. package/esm2022/skeleton/lib/skeleton/skeleton.js +78 -0
  961. package/esm2022/skeleton/lib/skeleton/skeleton.js.map +1 -0
  962. package/esm2022/skeleton/malva-ui-core-skeleton.js +5 -0
  963. package/esm2022/skeleton/malva-ui-core-skeleton.js.map +1 -0
  964. package/esm2022/slider/index.js +3 -0
  965. package/esm2022/slider/index.js.map +1 -0
  966. package/esm2022/slider/lib/slider/slider-tooltip-def.js +31 -0
  967. package/esm2022/slider/lib/slider/slider-tooltip-def.js.map +1 -0
  968. package/esm2022/slider/lib/slider/slider.js +468 -0
  969. package/esm2022/slider/lib/slider/slider.js.map +1 -0
  970. package/esm2022/slider/malva-ui-core-slider.js +5 -0
  971. package/esm2022/slider/malva-ui-core-slider.js.map +1 -0
  972. package/esm2022/split-pane/index.js +4 -0
  973. package/esm2022/split-pane/index.js.map +1 -0
  974. package/esm2022/split-pane/lib/split-pane/split-pane-panel.js +49 -0
  975. package/esm2022/split-pane/lib/split-pane/split-pane-panel.js.map +1 -0
  976. package/esm2022/split-pane/lib/split-pane/split-pane.js +290 -0
  977. package/esm2022/split-pane/lib/split-pane/split-pane.js.map +1 -0
  978. package/esm2022/split-pane/lib/split-pane/split-pane.types.js +1 -0
  979. package/esm2022/split-pane/lib/split-pane/split-pane.types.js.map +1 -0
  980. package/esm2022/split-pane/malva-ui-core-split-pane.js +5 -0
  981. package/esm2022/split-pane/malva-ui-core-split-pane.js.map +1 -0
  982. package/esm2022/status-indicator/index.js +2 -0
  983. package/esm2022/status-indicator/index.js.map +1 -0
  984. package/esm2022/status-indicator/lib/status-indicator/status-indicator.js +71 -0
  985. package/esm2022/status-indicator/lib/status-indicator/status-indicator.js.map +1 -0
  986. package/esm2022/status-indicator/malva-ui-core-status-indicator.js +5 -0
  987. package/esm2022/status-indicator/malva-ui-core-status-indicator.js.map +1 -0
  988. package/esm2022/stepper/index.js +5 -0
  989. package/esm2022/stepper/index.js.map +1 -0
  990. package/esm2022/stepper/lib/stepper/step-header.js +46 -0
  991. package/esm2022/stepper/lib/stepper/step-header.js.map +1 -0
  992. package/esm2022/stepper/lib/stepper/step.js +65 -0
  993. package/esm2022/stepper/lib/stepper/step.js.map +1 -0
  994. package/esm2022/stepper/lib/stepper/stepper-token.js +4 -0
  995. package/esm2022/stepper/lib/stepper/stepper-token.js.map +1 -0
  996. package/esm2022/stepper/lib/stepper/stepper.js +216 -0
  997. package/esm2022/stepper/lib/stepper/stepper.js.map +1 -0
  998. package/esm2022/stepper/lib/stepper/stepper.types.js +1 -0
  999. package/esm2022/stepper/lib/stepper/stepper.types.js.map +1 -0
  1000. package/esm2022/stepper/malva-ui-core-stepper.js +5 -0
  1001. package/esm2022/stepper/malva-ui-core-stepper.js.map +1 -0
  1002. package/esm2022/switch/index.js +3 -0
  1003. package/esm2022/switch/index.js.map +1 -0
  1004. package/esm2022/switch/lib/switch/switch.js +190 -0
  1005. package/esm2022/switch/lib/switch/switch.js.map +1 -0
  1006. package/esm2022/switch/lib/switch-group/switch-group.js +68 -0
  1007. package/esm2022/switch/lib/switch-group/switch-group.js.map +1 -0
  1008. package/esm2022/switch/lib/switch-group-token.js +3 -0
  1009. package/esm2022/switch/lib/switch-group-token.js.map +1 -0
  1010. package/esm2022/switch/malva-ui-core-switch.js +5 -0
  1011. package/esm2022/switch/malva-ui-core-switch.js.map +1 -0
  1012. package/esm2022/tabs/index.js +9 -0
  1013. package/esm2022/tabs/index.js.map +1 -0
  1014. package/esm2022/tabs/lib/tab/tab.js +72 -0
  1015. package/esm2022/tabs/lib/tab/tab.js.map +1 -0
  1016. package/esm2022/tabs/lib/tab-content/tab-content.js +19 -0
  1017. package/esm2022/tabs/lib/tab-content/tab-content.js.map +1 -0
  1018. package/esm2022/tabs/lib/tab-content-def.js +14 -0
  1019. package/esm2022/tabs/lib/tab-content-def.js.map +1 -0
  1020. package/esm2022/tabs/lib/tab-def.js +17 -0
  1021. package/esm2022/tabs/lib/tab-def.js.map +1 -0
  1022. package/esm2022/tabs/lib/tab-group-token.js +3 -0
  1023. package/esm2022/tabs/lib/tab-group-token.js.map +1 -0
  1024. package/esm2022/tabs/lib/tab-item/tab-item.js +44 -0
  1025. package/esm2022/tabs/lib/tab-item/tab-item.js.map +1 -0
  1026. package/esm2022/tabs/lib/tabs/tabs.js +542 -0
  1027. package/esm2022/tabs/lib/tabs/tabs.js.map +1 -0
  1028. package/esm2022/tabs/lib/tabs.service.js +83 -0
  1029. package/esm2022/tabs/lib/tabs.service.js.map +1 -0
  1030. package/esm2022/tabs/malva-ui-core-tabs.js +5 -0
  1031. package/esm2022/tabs/malva-ui-core-tabs.js.map +1 -0
  1032. package/esm2022/textarea/index.js +2 -0
  1033. package/esm2022/textarea/index.js.map +1 -0
  1034. package/esm2022/textarea/lib/textarea/textarea.js +194 -0
  1035. package/esm2022/textarea/lib/textarea/textarea.js.map +1 -0
  1036. package/esm2022/textarea/malva-ui-core-textarea.js +5 -0
  1037. package/esm2022/textarea/malva-ui-core-textarea.js.map +1 -0
  1038. package/esm2022/tile/index.js +3 -0
  1039. package/esm2022/tile/index.js.map +1 -0
  1040. package/esm2022/tile/lib/tile/tile.js +39 -0
  1041. package/esm2022/tile/lib/tile/tile.js.map +1 -0
  1042. package/esm2022/tile/lib/tile-header.js +14 -0
  1043. package/esm2022/tile/lib/tile-header.js.map +1 -0
  1044. package/esm2022/tile/malva-ui-core-tile.js +5 -0
  1045. package/esm2022/tile/malva-ui-core-tile.js.map +1 -0
  1046. package/esm2022/time-picker/index.js +2 -0
  1047. package/esm2022/time-picker/index.js.map +1 -0
  1048. package/esm2022/time-picker/lib/time-picker/time-picker.js +310 -0
  1049. package/esm2022/time-picker/lib/time-picker/time-picker.js.map +1 -0
  1050. package/esm2022/time-picker/lib/time-picker-column/time-picker-column.js +216 -0
  1051. package/esm2022/time-picker/lib/time-picker-column/time-picker-column.js.map +1 -0
  1052. package/esm2022/time-picker/malva-ui-core-time-picker.js +5 -0
  1053. package/esm2022/time-picker/malva-ui-core-time-picker.js.map +1 -0
  1054. package/esm2022/timeline/index.js +6 -0
  1055. package/esm2022/timeline/index.js.map +1 -0
  1056. package/esm2022/timeline/lib/timeline/timeline-item-icon.js +31 -0
  1057. package/esm2022/timeline/lib/timeline/timeline-item-icon.js.map +1 -0
  1058. package/esm2022/timeline/lib/timeline/timeline-item-meta.js +31 -0
  1059. package/esm2022/timeline/lib/timeline/timeline-item-meta.js.map +1 -0
  1060. package/esm2022/timeline/lib/timeline/timeline-item.js +69 -0
  1061. package/esm2022/timeline/lib/timeline/timeline-item.js.map +1 -0
  1062. package/esm2022/timeline/lib/timeline/timeline.js +36 -0
  1063. package/esm2022/timeline/lib/timeline/timeline.js.map +1 -0
  1064. package/esm2022/timeline/lib/timeline/timeline.types.js +1 -0
  1065. package/esm2022/timeline/lib/timeline/timeline.types.js.map +1 -0
  1066. package/esm2022/timeline/malva-ui-core-timeline.js +5 -0
  1067. package/esm2022/timeline/malva-ui-core-timeline.js.map +1 -0
  1068. package/esm2022/title/index.js +2 -0
  1069. package/esm2022/title/index.js.map +1 -0
  1070. package/esm2022/title/lib/title/title.js +171 -0
  1071. package/esm2022/title/lib/title/title.js.map +1 -0
  1072. package/esm2022/title/malva-ui-core-title.js +5 -0
  1073. package/esm2022/title/malva-ui-core-title.js.map +1 -0
  1074. package/esm2022/toast/index.js +13 -0
  1075. package/esm2022/toast/index.js.map +1 -0
  1076. package/esm2022/toast/lib/abstract-toast-container.js +50 -0
  1077. package/esm2022/toast/lib/abstract-toast-container.js.map +1 -0
  1078. package/esm2022/toast/lib/abstract-toast-item.js +75 -0
  1079. package/esm2022/toast/lib/abstract-toast-item.js.map +1 -0
  1080. package/esm2022/toast/lib/abstract-toast.service.js +176 -0
  1081. package/esm2022/toast/lib/abstract-toast.service.js.map +1 -0
  1082. package/esm2022/toast/lib/toast-container/toast-container.js +61 -0
  1083. package/esm2022/toast/lib/toast-container/toast-container.js.map +1 -0
  1084. package/esm2022/toast/lib/toast-item/toast-item.js +62 -0
  1085. package/esm2022/toast/lib/toast-item/toast-item.js.map +1 -0
  1086. package/esm2022/toast/lib/toast-ref.js +54 -0
  1087. package/esm2022/toast/lib/toast-ref.js.map +1 -0
  1088. package/esm2022/toast/lib/toast-timer.js +37 -0
  1089. package/esm2022/toast/lib/toast-timer.js.map +1 -0
  1090. package/esm2022/toast/lib/toast.directives.js +76 -0
  1091. package/esm2022/toast/lib/toast.directives.js.map +1 -0
  1092. package/esm2022/toast/lib/toast.service.js +127 -0
  1093. package/esm2022/toast/lib/toast.service.js.map +1 -0
  1094. package/esm2022/toast/lib/toast.types.js +39 -0
  1095. package/esm2022/toast/lib/toast.types.js.map +1 -0
  1096. package/esm2022/toast/malva-ui-core-toast.js +5 -0
  1097. package/esm2022/toast/malva-ui-core-toast.js.map +1 -0
  1098. package/esm2022/tokenizer/index.js +4 -0
  1099. package/esm2022/tokenizer/index.js.map +1 -0
  1100. package/esm2022/tokenizer/lib/token/token.js +123 -0
  1101. package/esm2022/tokenizer/lib/token/token.js.map +1 -0
  1102. package/esm2022/tokenizer/lib/token-template.js +23 -0
  1103. package/esm2022/tokenizer/lib/token-template.js.map +1 -0
  1104. package/esm2022/tokenizer/lib/tokenizer/tokenizer.js +324 -0
  1105. package/esm2022/tokenizer/lib/tokenizer/tokenizer.js.map +1 -0
  1106. package/esm2022/tokenizer/malva-ui-core-tokenizer.js +5 -0
  1107. package/esm2022/tokenizer/malva-ui-core-tokenizer.js.map +1 -0
  1108. package/esm2022/toolbar/index.js +4 -0
  1109. package/esm2022/toolbar/index.js.map +1 -0
  1110. package/esm2022/toolbar/lib/toolbar/toolbar-spacer.js +13 -0
  1111. package/esm2022/toolbar/lib/toolbar/toolbar-spacer.js.map +1 -0
  1112. package/esm2022/toolbar/lib/toolbar/toolbar-widget.js +106 -0
  1113. package/esm2022/toolbar/lib/toolbar/toolbar-widget.js.map +1 -0
  1114. package/esm2022/toolbar/lib/toolbar/toolbar.js +19 -0
  1115. package/esm2022/toolbar/lib/toolbar/toolbar.js.map +1 -0
  1116. package/esm2022/toolbar/malva-ui-core-toolbar.js +5 -0
  1117. package/esm2022/toolbar/malva-ui-core-toolbar.js.map +1 -0
  1118. package/esm2022/tooltip/index.js +4 -0
  1119. package/esm2022/tooltip/index.js.map +1 -0
  1120. package/esm2022/tooltip/lib/tooltip/tooltip-panel.js +69 -0
  1121. package/esm2022/tooltip/lib/tooltip/tooltip-panel.js.map +1 -0
  1122. package/esm2022/tooltip/lib/tooltip/tooltip.js +352 -0
  1123. package/esm2022/tooltip/lib/tooltip/tooltip.js.map +1 -0
  1124. package/esm2022/tooltip/lib/tooltip/tooltip.types.js +1 -0
  1125. package/esm2022/tooltip/lib/tooltip/tooltip.types.js.map +1 -0
  1126. package/esm2022/tooltip/malva-ui-core-tooltip.js +5 -0
  1127. package/esm2022/tooltip/malva-ui-core-tooltip.js.map +1 -0
  1128. package/esm2022/tree/index.js +5 -0
  1129. package/esm2022/tree/index.js.map +1 -0
  1130. package/esm2022/tree/lib/tree/tree-context.js +7 -0
  1131. package/esm2022/tree/lib/tree/tree-context.js.map +1 -0
  1132. package/esm2022/tree/lib/tree/tree-node-def.js +34 -0
  1133. package/esm2022/tree/lib/tree/tree-node-def.js.map +1 -0
  1134. package/esm2022/tree/lib/tree/tree-node.js +1 -0
  1135. package/esm2022/tree/lib/tree/tree-node.js.map +1 -0
  1136. package/esm2022/tree/lib/tree/tree-subtree.js +107 -0
  1137. package/esm2022/tree/lib/tree/tree-subtree.js.map +1 -0
  1138. package/esm2022/tree/lib/tree/tree.js +362 -0
  1139. package/esm2022/tree/lib/tree/tree.js.map +1 -0
  1140. package/esm2022/tree/malva-ui-core-tree.js +5 -0
  1141. package/esm2022/tree/malva-ui-core-tree.js.map +1 -0
  1142. package/expand/index.d.ts +2 -0
  1143. package/expand/lib/expand/expand-content.d.ts +26 -0
  1144. package/expand/lib/expand/expand.d.ts +74 -0
  1145. package/expand/malva-ui-core-expand.d.ts +5 -0
  1146. package/file-upload/README.md +7 -0
  1147. package/file-upload/index.d.ts +4 -0
  1148. package/file-upload/lib/file-upload/file-upload.d.ts +138 -0
  1149. package/file-upload/lib/file-upload/file-upload.types.d.ts +42 -0
  1150. package/file-upload/lib/file-upload-action.d.ts +53 -0
  1151. package/file-upload/lib/file-upload-item/file-upload-item.d.ts +30 -0
  1152. package/file-upload/malva-ui-core-file-upload.d.ts +5 -0
  1153. package/filter/README.md +22 -0
  1154. package/filter/index.d.ts +3 -0
  1155. package/filter/lib/filter/filter.d.ts +156 -0
  1156. package/filter/lib/filter.types.d.ts +75 -0
  1157. package/filter/lib/smart-filter-bar/smart-filter-bar.d.ts +153 -0
  1158. package/filter/malva-ui-core-filter.d.ts +5 -0
  1159. package/form/index.d.ts +6 -0
  1160. package/form/lib/fieldset/fieldset.d.ts +58 -0
  1161. package/form/lib/fieldset-span.d.ts +28 -0
  1162. package/form/lib/form/form.d.ts +37 -0
  1163. package/form/lib/form-actions.d.ts +20 -0
  1164. package/form/lib/form-gap.d.ts +5 -0
  1165. package/form/lib/form-header.d.ts +18 -0
  1166. package/form/lib/form.types.d.ts +13 -0
  1167. package/form/malva-ui-core-form.d.ts +5 -0
  1168. package/form-utils/index.d.ts +15 -0
  1169. package/form-utils/lib/aria-value-bridge.d.ts +45 -0
  1170. package/form-utils/lib/description/description.d.ts +16 -0
  1171. package/form-utils/lib/focusable-group-base.d.ts +76 -0
  1172. package/form-utils/lib/form-control-base/signal-form-control-base.d.ts +159 -0
  1173. package/form-utils/lib/form-control-sides.d.ts +20 -0
  1174. package/form-utils/lib/form-control-wrapper/form-control-wrapper-control.d.ts +6 -0
  1175. package/form-utils/lib/form-control-wrapper/form-control-wrapper.d.ts +20 -0
  1176. package/form-utils/lib/form-field/form-field.d.ts +68 -0
  1177. package/form-utils/lib/hint/hint.d.ts +5 -0
  1178. package/form-utils/lib/label/label.d.ts +22 -0
  1179. package/form-utils/lib/message/message.d.ts +7 -0
  1180. package/form-utils/lib/models/error-display-strategy.d.ts +1 -0
  1181. package/form-utils/lib/models/form-control-connector.d.ts +41 -0
  1182. package/form-utils/lib/models/form-state.d.ts +1 -0
  1183. package/form-utils/lib/selection.service.d.ts +27 -0
  1184. package/form-utils/malva-ui-core-form-utils.d.ts +5 -0
  1185. package/form-utils/testing/index.d.ts +1 -0
  1186. package/form-utils/testing/lib/forms-binding-matrix.d.ts +47 -0
  1187. package/form-utils/testing/malva-ui-core-form-utils-testing.d.ts +5 -0
  1188. package/index.d.ts +69 -0
  1189. package/input/index.d.ts +3 -0
  1190. package/input/lib/input/input-native.d.ts +36 -0
  1191. package/input/lib/input/input-value-accessor.d.ts +11 -0
  1192. package/input/lib/input/input.d.ts +189 -0
  1193. package/input/lib/input/password-strength.d.ts +34 -0
  1194. package/input/malva-ui-core-input.d.ts +5 -0
  1195. package/kbd/index.d.ts +1 -0
  1196. package/kbd/lib/kbd/kbd.d.ts +52 -0
  1197. package/kbd/malva-ui-core-kbd.d.ts +5 -0
  1198. package/layout/index.d.ts +4 -0
  1199. package/layout/lib/layout/directives/MlvLayoutSide.d.ts +6 -0
  1200. package/layout/lib/layout/directives/MlvLayoutTop.d.ts +6 -0
  1201. package/layout/lib/layout/layout.d.ts +20 -0
  1202. package/layout/lib/layout/services/theme.service.d.ts +33 -0
  1203. package/layout/malva-ui-core-layout.d.ts +5 -0
  1204. package/link/index.d.ts +2 -0
  1205. package/link/lib/link/link.d.ts +15 -0
  1206. package/link/lib/link/link.directives.d.ts +10 -0
  1207. package/link/malva-ui-core-link.d.ts +5 -0
  1208. package/list/index.d.ts +13 -0
  1209. package/list/lib/list/list.d.ts +25 -0
  1210. package/list/lib/list-item/list-item.d.ts +67 -0
  1211. package/list/lib/list-item-actions.d.ts +12 -0
  1212. package/list/lib/list-item-byline.d.ts +5 -0
  1213. package/list/lib/list-item-group/list-item-group.d.ts +11 -0
  1214. package/list/lib/list-item-link/list-item-link.d.ts +8 -0
  1215. package/list/lib/list-item-media.d.ts +5 -0
  1216. package/list/lib/list-item-meta.d.ts +5 -0
  1217. package/list/lib/list-item-prefix.d.ts +5 -0
  1218. package/list/lib/list-item-suffix.d.ts +5 -0
  1219. package/list/lib/list-item-template.d.ts +10 -0
  1220. package/list/lib/list-item-title.d.ts +5 -0
  1221. package/list/lib/list-selectable.d.ts +73 -0
  1222. package/list/malva-ui-core-list.d.ts +5 -0
  1223. package/loader/index.d.ts +1 -0
  1224. package/loader/lib/loader/loader.d.ts +84 -0
  1225. package/loader/malva-ui-core-loader.d.ts +5 -0
  1226. package/malva-ui-core.d.ts +5 -0
  1227. package/menu/index.d.ts +9 -0
  1228. package/menu/lib/menu/menu-group-label.d.ts +22 -0
  1229. package/menu/lib/menu/menu-group.d.ts +27 -0
  1230. package/menu/lib/menu/menu-item.d.ts +76 -0
  1231. package/menu/lib/menu/menu-separator.d.ts +18 -0
  1232. package/menu/lib/menu/menu-trigger.d.ts +255 -0
  1233. package/menu/lib/menu/menu.d.ts +149 -0
  1234. package/menu/lib/menu/menu.types.d.ts +13 -0
  1235. package/menu/lib/menu/menubar.d.ts +131 -0
  1236. package/menu/lib/menu/menubar.types.d.ts +82 -0
  1237. package/menu/lib/menu/submenu-aim.d.ts +10 -0
  1238. package/menu/malva-ui-core-menu.d.ts +5 -0
  1239. package/notification/index.d.ts +4 -0
  1240. package/notification/lib/notification-item/notification-item.d.ts +20 -0
  1241. package/notification/lib/notification-ref.d.ts +12 -0
  1242. package/notification/lib/notification.service.d.ts +43 -0
  1243. package/notification/lib/notification.types.d.ts +52 -0
  1244. package/notification/malva-ui-core-notification.d.ts +5 -0
  1245. package/number-input/index.d.ts +1 -0
  1246. package/number-input/lib/number-input/number-input.d.ts +162 -0
  1247. package/number-input/malva-ui-core-number-input.d.ts +5 -0
  1248. package/package.json +315 -0
  1249. package/page/README.md +8 -0
  1250. package/page/index.d.ts +14 -0
  1251. package/page/lib/page/page-scroll.token.d.ts +19 -0
  1252. package/page/lib/page/page-snap-controller.d.ts +87 -0
  1253. package/page/lib/page/page-snap.directive.d.ts +40 -0
  1254. package/page/lib/page/page.d.ts +74 -0
  1255. package/page/lib/page-content/page-aside.d.ts +7 -0
  1256. package/page/lib/page-content/page-content.d.ts +37 -0
  1257. package/page/lib/page-dock/page-dock.d.ts +50 -0
  1258. package/page/lib/page-dock/page-dock.slots.d.ts +16 -0
  1259. package/page/lib/page-header/page-header.d.ts +77 -0
  1260. package/page/lib/page-header/page-header.directives.d.ts +50 -0
  1261. package/page/lib/page-shell/page-shell-color.d.ts +48 -0
  1262. package/page/lib/page-shell/page-shell-css-color.d.ts +20 -0
  1263. package/page/lib/page-shell/page-shell.d.ts +44 -0
  1264. package/page/lib/page-shell/page-shell.slots.d.ts +16 -0
  1265. package/page/lib/page-summary/page-summary-item.d.ts +11 -0
  1266. package/page/lib/page-summary/page-summary.d.ts +36 -0
  1267. package/page/malva-ui-core-page.d.ts +5 -0
  1268. package/pagination/index.d.ts +4 -0
  1269. package/pagination/lib/pagination/pagination.d.ts +182 -0
  1270. package/pagination/lib/pagination/pagination.directives.d.ts +44 -0
  1271. package/pagination/lib/pagination/pagination.model.d.ts +6 -0
  1272. package/pagination/lib/pagination/pagination.service.d.ts +26 -0
  1273. package/pagination/malva-ui-core-pagination.d.ts +5 -0
  1274. package/pin-input/index.d.ts +2 -0
  1275. package/pin-input/lib/pin-input/pin-input-separator.d.ts +24 -0
  1276. package/pin-input/lib/pin-input/pin-input.d.ts +176 -0
  1277. package/pin-input/malva-ui-core-pin-input.d.ts +5 -0
  1278. package/popup/index.d.ts +9 -0
  1279. package/popup/lib/popup/popup.d.ts +343 -0
  1280. package/popup/lib/popup-container/popup-container.d.ts +61 -0
  1281. package/popup/lib/popup-container/popup-container.token.d.ts +34 -0
  1282. package/popup/lib/popup-content.d.ts +6 -0
  1283. package/popup/lib/popup-header-content.d.ts +18 -0
  1284. package/popup/lib/popup-pinned-content.d.ts +17 -0
  1285. package/popup/lib/popup-positions.d.ts +105 -0
  1286. package/popup/lib/popup-trigger/popup-trigger.d.ts +102 -0
  1287. package/popup/lib/popup.service.d.ts +159 -0
  1288. package/popup/malva-ui-core-popup.d.ts +5 -0
  1289. package/progress/index.d.ts +1 -0
  1290. package/progress/lib/progress/progress.d.ts +69 -0
  1291. package/progress/malva-ui-core-progress.d.ts +5 -0
  1292. package/radio/index.d.ts +2 -0
  1293. package/radio/lib/radio/radio.d.ts +87 -0
  1294. package/radio/lib/radio-group/radio-group.d.ts +35 -0
  1295. package/radio/lib/radio-group-token.d.ts +7 -0
  1296. package/radio/malva-ui-core-radio.d.ts +5 -0
  1297. package/rating/index.d.ts +1 -0
  1298. package/rating/lib/rating/rating.d.ts +100 -0
  1299. package/rating/malva-ui-core-rating.d.ts +5 -0
  1300. package/schematics/collection.json +12 -0
  1301. package/schematics/ng-add/index.cjs +272 -0
  1302. package/schematics/ng-add/schema.json +92 -0
  1303. package/scrollbar/index.d.ts +1 -0
  1304. package/scrollbar/lib/scrollbar/scrollbar.d.ts +166 -0
  1305. package/scrollbar/malva-ui-core-scrollbar.d.ts +5 -0
  1306. package/search-field/README.md +32 -0
  1307. package/search-field/index.d.ts +2 -0
  1308. package/search-field/lib/search-field/search-field.d.ts +347 -0
  1309. package/search-field/lib/search-field/search-overlay-content.d.ts +59 -0
  1310. package/search-field/malva-ui-core-search-field.d.ts +5 -0
  1311. package/segmented/index.d.ts +4 -0
  1312. package/segmented/lib/segmented/segmented.d.ts +80 -0
  1313. package/segmented/lib/segmented-item/segmented-item.d.ts +89 -0
  1314. package/segmented/lib/segmented-token.d.ts +22 -0
  1315. package/segmented/lib/segmented.types.d.ts +9 -0
  1316. package/segmented/malva-ui-core-segmented.d.ts +5 -0
  1317. package/select/index.d.ts +3 -0
  1318. package/select/lib/select/select.d.ts +379 -0
  1319. package/select/lib/select-option.d.ts +1 -0
  1320. package/select/lib/select-template.directives.d.ts +14 -0
  1321. package/select/malva-ui-core-select.d.ts +5 -0
  1322. package/sidebar/index.d.ts +15 -0
  1323. package/sidebar/lib/sidebar/sidebar.d.ts +134 -0
  1324. package/sidebar/lib/sidebar-content.d.ts +11 -0
  1325. package/sidebar/lib/sidebar-context.d.ts +23 -0
  1326. package/sidebar/lib/sidebar-footer.d.ts +9 -0
  1327. package/sidebar/lib/sidebar-group/sidebar-group.d.ts +127 -0
  1328. package/sidebar/lib/sidebar-header.d.ts +9 -0
  1329. package/sidebar/lib/sidebar-item/sidebar-item.d.ts +104 -0
  1330. package/sidebar/lib/sidebar-item-host.d.ts +18 -0
  1331. package/sidebar/lib/sidebar-item-icon.d.ts +6 -0
  1332. package/sidebar/lib/sidebar-mode.d.ts +2 -0
  1333. package/sidebar/lib/sidebar-rail/sidebar-rail.d.ts +54 -0
  1334. package/sidebar/lib/sidebar-trigger/sidebar-trigger.d.ts +67 -0
  1335. package/sidebar/lib/sidebar-workspace/sidebar-workspace.d.ts +54 -0
  1336. package/sidebar/lib/sidebar-workspace/sidebar-workspace.directives.d.ts +19 -0
  1337. package/sidebar/lib/sidebar-workspace/sidebar-workspace.types.d.ts +20 -0
  1338. package/sidebar/malva-ui-core-sidebar.d.ts +5 -0
  1339. package/skeleton/index.d.ts +1 -0
  1340. package/skeleton/lib/skeleton/skeleton.d.ts +60 -0
  1341. package/skeleton/malva-ui-core-skeleton.d.ts +5 -0
  1342. package/slider/index.d.ts +2 -0
  1343. package/slider/lib/slider/slider-tooltip-def.d.ts +39 -0
  1344. package/slider/lib/slider/slider.d.ts +171 -0
  1345. package/slider/malva-ui-core-slider.d.ts +5 -0
  1346. package/split-pane/index.d.ts +3 -0
  1347. package/split-pane/lib/split-pane/split-pane-panel.d.ts +34 -0
  1348. package/split-pane/lib/split-pane/split-pane.d.ts +98 -0
  1349. package/split-pane/lib/split-pane/split-pane.types.d.ts +7 -0
  1350. package/split-pane/malva-ui-core-split-pane.d.ts +5 -0
  1351. package/status-indicator/index.d.ts +1 -0
  1352. package/status-indicator/lib/status-indicator/status-indicator.d.ts +61 -0
  1353. package/status-indicator/malva-ui-core-status-indicator.d.ts +5 -0
  1354. package/stepper/index.d.ts +4 -0
  1355. package/stepper/lib/stepper/step-header.d.ts +34 -0
  1356. package/stepper/lib/stepper/step.d.ts +51 -0
  1357. package/stepper/lib/stepper/stepper-token.d.ts +13 -0
  1358. package/stepper/lib/stepper/stepper.d.ts +98 -0
  1359. package/stepper/lib/stepper/stepper.types.d.ts +4 -0
  1360. package/stepper/malva-ui-core-stepper.d.ts +5 -0
  1361. package/styles/malva-ui.css +1706 -0
  1362. package/styles/tokens.md +698 -0
  1363. package/switch/index.d.ts +2 -0
  1364. package/switch/lib/switch/switch.d.ts +118 -0
  1365. package/switch/lib/switch-group/switch-group.d.ts +24 -0
  1366. package/switch/lib/switch-group-token.d.ts +6 -0
  1367. package/switch/malva-ui-core-switch.d.ts +5 -0
  1368. package/tabs/index.d.ts +8 -0
  1369. package/tabs/lib/tab/tab.d.ts +46 -0
  1370. package/tabs/lib/tab-content/tab-content.d.ts +11 -0
  1371. package/tabs/lib/tab-content-def.d.ts +6 -0
  1372. package/tabs/lib/tab-def.d.ts +11 -0
  1373. package/tabs/lib/tab-group-token.d.ts +10 -0
  1374. package/tabs/lib/tab-item/tab-item.d.ts +28 -0
  1375. package/tabs/lib/tabs/tabs.d.ts +202 -0
  1376. package/tabs/lib/tabs.service.d.ts +24 -0
  1377. package/tabs/malva-ui-core-tabs.d.ts +5 -0
  1378. package/textarea/index.d.ts +1 -0
  1379. package/textarea/lib/textarea/textarea.d.ts +77 -0
  1380. package/textarea/malva-ui-core-textarea.d.ts +5 -0
  1381. package/tile/index.d.ts +2 -0
  1382. package/tile/lib/tile/tile.d.ts +20 -0
  1383. package/tile/lib/tile-header.d.ts +6 -0
  1384. package/tile/malva-ui-core-tile.d.ts +5 -0
  1385. package/time-picker/README.md +7 -0
  1386. package/time-picker/index.d.ts +1 -0
  1387. package/time-picker/lib/time-picker/time-picker.d.ts +135 -0
  1388. package/time-picker/lib/time-picker-column/time-picker-column.d.ts +111 -0
  1389. package/time-picker/malva-ui-core-time-picker.d.ts +5 -0
  1390. package/timeline/index.d.ts +5 -0
  1391. package/timeline/lib/timeline/timeline-item-icon.d.ts +24 -0
  1392. package/timeline/lib/timeline/timeline-item-meta.d.ts +24 -0
  1393. package/timeline/lib/timeline/timeline-item.d.ts +52 -0
  1394. package/timeline/lib/timeline/timeline.d.ts +27 -0
  1395. package/timeline/lib/timeline/timeline.types.d.ts +18 -0
  1396. package/timeline/malva-ui-core-timeline.d.ts +5 -0
  1397. package/title/index.d.ts +1 -0
  1398. package/title/lib/title/title.d.ts +63 -0
  1399. package/title/malva-ui-core-title.d.ts +5 -0
  1400. package/toast/index.d.ts +10 -0
  1401. package/toast/lib/abstract-toast-container.d.ts +29 -0
  1402. package/toast/lib/abstract-toast-item.d.ts +44 -0
  1403. package/toast/lib/abstract-toast.service.d.ts +75 -0
  1404. package/toast/lib/toast-container/toast-container.d.ts +23 -0
  1405. package/toast/lib/toast-item/toast-item.d.ts +25 -0
  1406. package/toast/lib/toast-ref.d.ts +33 -0
  1407. package/toast/lib/toast-timer.d.ts +24 -0
  1408. package/toast/lib/toast.directives.d.ts +13 -0
  1409. package/toast/lib/toast.service.d.ts +41 -0
  1410. package/toast/lib/toast.types.d.ts +139 -0
  1411. package/toast/malva-ui-core-toast.d.ts +5 -0
  1412. package/tokenizer/index.d.ts +3 -0
  1413. package/tokenizer/lib/token/token.d.ts +60 -0
  1414. package/tokenizer/lib/token-template.d.ts +29 -0
  1415. package/tokenizer/lib/tokenizer/tokenizer.d.ts +109 -0
  1416. package/tokenizer/malva-ui-core-tokenizer.d.ts +5 -0
  1417. package/toolbar/index.d.ts +3 -0
  1418. package/toolbar/lib/toolbar/toolbar-spacer.d.ts +5 -0
  1419. package/toolbar/lib/toolbar/toolbar-widget.d.ts +75 -0
  1420. package/toolbar/lib/toolbar/toolbar.d.ts +8 -0
  1421. package/toolbar/malva-ui-core-toolbar.d.ts +5 -0
  1422. package/tooltip/README.md +7 -0
  1423. package/tooltip/index.d.ts +3 -0
  1424. package/tooltip/lib/tooltip/tooltip-panel.d.ts +26 -0
  1425. package/tooltip/lib/tooltip/tooltip.d.ts +148 -0
  1426. package/tooltip/lib/tooltip/tooltip.types.d.ts +17 -0
  1427. package/tooltip/malva-ui-core-tooltip.d.ts +5 -0
  1428. package/tree/index.d.ts +4 -0
  1429. package/tree/lib/tree/tree-context.d.ts +62 -0
  1430. package/tree/lib/tree/tree-node-def.d.ts +33 -0
  1431. package/tree/lib/tree/tree-node.d.ts +45 -0
  1432. package/tree/lib/tree/tree-subtree.d.ts +63 -0
  1433. package/tree/lib/tree/tree.d.ts +156 -0
  1434. package/tree/malva-ui-core-tree.d.ts +5 -0
@@ -0,0 +1,124 @@
1
+ import { normalizeForMatch } from '@malva-ui/cdk/utils';
2
+ export { normalizeForMatch };
3
+ /**
4
+ * The default option matcher: a case- and diacritic-insensitive substring match
5
+ * on {@link MlvSelectOption.label}. An empty (or whitespace-only) query matches
6
+ * every option.
7
+ *
8
+ * @param option - The option to test.
9
+ * @param query - The current search query (already trimmed by callers).
10
+ * @returns Whether the option label contains the query.
11
+ */
12
+ export function defaultOptionMatcher(option, query) {
13
+ const q = normalizeForMatch(query.trim());
14
+ if (!q)
15
+ return true;
16
+ return normalizeForMatch(option.label).includes(q);
17
+ }
18
+ /**
19
+ * Filters a list of resolved options against a query using `matcher`
20
+ * ({@link defaultOptionMatcher} by default), then ranks **prefix matches
21
+ * first** ({@link rankPrefixMatchesFirst}) so the top suggestion is the one an
22
+ * inline completion can extend (`"Pe"` ranks `"Pear"` above `"Grape"`). A blank
23
+ * query returns a shallow copy of every option — the "show everything" state a
24
+ * combobox / autocomplete shows on focus. This is the single shared
25
+ * implementation of the substring filter that previously lived inline in
26
+ * `mlv-combobox`.
27
+ *
28
+ * @param options - The resolved options to filter.
29
+ * @param query - The raw search query (trimmed internally).
30
+ * @param matcher - Optional custom predicate; defaults to substring matching.
31
+ * @returns The matcher-satisfying options, prefix matches ranked first (all
32
+ * options, unranked, for a blank query).
33
+ */
34
+ export function filterOptions(options, query, matcher = defaultOptionMatcher) {
35
+ const q = query.trim();
36
+ if (!q)
37
+ return [...options];
38
+ return rankPrefixMatchesFirst(options.filter((option) => matcher(option, q)), q);
39
+ }
40
+ /**
41
+ * Stable-partitions filtered options so labels that **start with** the query
42
+ * (case- and diacritic-insensitive) come before the remaining matches, keeping
43
+ * the original relative order inside each partition.
44
+ *
45
+ * Grouped options ({@link MlvSelectOption.group}) are ranked **within each
46
+ * consecutive same-group run** only — runs themselves never move or merge, so
47
+ * the panel's consecutive-run group rendering (sticky headers, flat-index
48
+ * alignment) is preserved. An ungrouped list is a single run and gets the full
49
+ * prefix-first ordering.
50
+ *
51
+ * @param options - The already-filtered options.
52
+ * @param query - The trimmed, non-empty query.
53
+ * @returns The options with prefix matches ranked first per group run.
54
+ */
55
+ export function rankPrefixMatchesFirst(options, query) {
56
+ const q = normalizeForMatch(query);
57
+ const ranked = [];
58
+ let runStart = 0;
59
+ for (let i = 1; i <= options.length; i++) {
60
+ const runEnded = i === options.length ||
61
+ (options[i].group ?? '') !== (options[runStart].group ?? '');
62
+ if (!runEnded)
63
+ continue;
64
+ const run = options.slice(runStart, i);
65
+ const prefixed = [];
66
+ const rest = [];
67
+ for (const option of run) {
68
+ (normalizeForMatch(option.label).startsWith(q) ? prefixed : rest).push(option);
69
+ }
70
+ ranked.push(...prefixed, ...rest);
71
+ runStart = i;
72
+ }
73
+ return ranked;
74
+ }
75
+ /**
76
+ * Splits `label` into matched / unmatched {@link MlvMatchSegment}s for the first
77
+ * occurrence of `query`, so consumers can emphasise the matched substring in a
78
+ * suggestion (e.g. wrapping matched slices in `<mark>`).
79
+ *
80
+ * Matching is case- and diacritic-insensitive ({@link normalizeForMatch}); the
81
+ * returned segment `text` preserves the **original** label casing/diacritics.
82
+ * Because NFD folding can change string length (e.g. `"é"` → `"e"` + combining
83
+ * mark), the search runs over a per-code-point folded projection with an index
84
+ * map back to the original code points, keeping the highlighted slice aligned
85
+ * with the source label. Only the first match is highlighted.
86
+ *
87
+ * @param label - The option label to segment.
88
+ * @param query - The query to highlight within the label.
89
+ * @returns Ordered segments covering the whole label; a single unmatched
90
+ * segment when the query is empty or not found.
91
+ */
92
+ export function matchSegments(label, query) {
93
+ const q = normalizeForMatch(query.trim());
94
+ if (!q)
95
+ return [{ text: label, matched: false }];
96
+ // Work in code points so surrogate pairs (e.g. emoji) are not split.
97
+ const chars = [...label];
98
+ let folded = '';
99
+ // For each folded code-unit position, the index of the originating code point.
100
+ const originIndex = [];
101
+ chars.forEach((char, index) => {
102
+ const foldedChar = normalizeForMatch(char);
103
+ for (const unit of foldedChar) {
104
+ folded += unit;
105
+ originIndex.push(index);
106
+ }
107
+ });
108
+ const start = folded.indexOf(q);
109
+ if (start === -1)
110
+ return [{ text: label, matched: false }];
111
+ const originStart = originIndex[start];
112
+ const originEnd = originIndex[start + q.length - 1];
113
+ const before = chars.slice(0, originStart).join('');
114
+ const match = chars.slice(originStart, originEnd + 1).join('');
115
+ const after = chars.slice(originEnd + 1).join('');
116
+ const segments = [];
117
+ if (before)
118
+ segments.push({ text: before, matched: false });
119
+ segments.push({ text: match, matched: true });
120
+ if (after)
121
+ segments.push({ text: after, matched: false });
122
+ return segments;
123
+ }
124
+ //# sourceMappingURL=option-matcher.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"option-matcher.js","sourceRoot":"","sources":["../../../../../../libs/core/dropdown/src/lib/option-matcher.ts"],"names":[],"mappings":"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","sourcesContent":["import { normalizeForMatch } from '@malva-ui/cdk/utils';\nimport type { MlvSelectOption } from './select-option';\n\nexport { normalizeForMatch };\n\n/**\n * A contiguous slice of a label produced by {@link matchSegments}, tagged with\n * whether it is part of the query match. Rendered by consumers (e.g. the\n * dropdown panel's suggestion highlighting) as `<mark>` for matched slices and\n * plain text otherwise.\n */\nexport interface MlvMatchSegment {\n /** The original (non-folded) label text for this slice. */\n readonly text: string;\n /** Whether this slice is part of the matched query substring. */\n readonly matched: boolean;\n}\n\n/**\n * Predicate deciding whether an option satisfies the current query. The default\n * ({@link defaultOptionMatcher}) is a case- and diacritic-insensitive substring\n * match on the option label. Provide a custom matcher to a combobox / the\n * `[mlvAutocomplete]` directive to change how suggestions are filtered (e.g.\n * fuzzy, token-prefix, or matching against a secondary field).\n *\n * A matcher receives the already-trimmed, non-empty query — an empty query is\n * short-circuited by {@link filterOptions} to return every option.\n */\nexport type MlvOptionMatcher<T> = (\n option: MlvSelectOption<T>,\n query: string,\n) => boolean;\n\n/**\n * The default option matcher: a case- and diacritic-insensitive substring match\n * on {@link MlvSelectOption.label}. An empty (or whitespace-only) query matches\n * every option.\n *\n * @param option - The option to test.\n * @param query - The current search query (already trimmed by callers).\n * @returns Whether the option label contains the query.\n */\nexport function defaultOptionMatcher<T>(\n option: MlvSelectOption<T>,\n query: string,\n): boolean {\n const q = normalizeForMatch(query.trim());\n if (!q) return true;\n return normalizeForMatch(option.label).includes(q);\n}\n\n/**\n * Filters a list of resolved options against a query using `matcher`\n * ({@link defaultOptionMatcher} by default), then ranks **prefix matches\n * first** ({@link rankPrefixMatchesFirst}) so the top suggestion is the one an\n * inline completion can extend (`\"Pe\"` ranks `\"Pear\"` above `\"Grape\"`). A blank\n * query returns a shallow copy of every option — the \"show everything\" state a\n * combobox / autocomplete shows on focus. This is the single shared\n * implementation of the substring filter that previously lived inline in\n * `mlv-combobox`.\n *\n * @param options - The resolved options to filter.\n * @param query - The raw search query (trimmed internally).\n * @param matcher - Optional custom predicate; defaults to substring matching.\n * @returns The matcher-satisfying options, prefix matches ranked first (all\n * options, unranked, for a blank query).\n */\nexport function filterOptions<T>(\n options: readonly MlvSelectOption<T>[],\n query: string,\n matcher: MlvOptionMatcher<T> = defaultOptionMatcher,\n): MlvSelectOption<T>[] {\n const q = query.trim();\n if (!q) return [...options];\n return rankPrefixMatchesFirst(\n options.filter((option) => matcher(option, q)),\n q,\n );\n}\n\n/**\n * Stable-partitions filtered options so labels that **start with** the query\n * (case- and diacritic-insensitive) come before the remaining matches, keeping\n * the original relative order inside each partition.\n *\n * Grouped options ({@link MlvSelectOption.group}) are ranked **within each\n * consecutive same-group run** only — runs themselves never move or merge, so\n * the panel's consecutive-run group rendering (sticky headers, flat-index\n * alignment) is preserved. An ungrouped list is a single run and gets the full\n * prefix-first ordering.\n *\n * @param options - The already-filtered options.\n * @param query - The trimmed, non-empty query.\n * @returns The options with prefix matches ranked first per group run.\n */\nexport function rankPrefixMatchesFirst<T>(\n options: readonly MlvSelectOption<T>[],\n query: string,\n): MlvSelectOption<T>[] {\n const q = normalizeForMatch(query);\n const ranked: MlvSelectOption<T>[] = [];\n let runStart = 0;\n for (let i = 1; i <= options.length; i++) {\n const runEnded =\n i === options.length ||\n (options[i].group ?? '') !== (options[runStart].group ?? '');\n if (!runEnded) continue;\n const run = options.slice(runStart, i);\n const prefixed: MlvSelectOption<T>[] = [];\n const rest: MlvSelectOption<T>[] = [];\n for (const option of run) {\n (normalizeForMatch(option.label).startsWith(q) ? prefixed : rest).push(\n option,\n );\n }\n ranked.push(...prefixed, ...rest);\n runStart = i;\n }\n return ranked;\n}\n\n/**\n * Splits `label` into matched / unmatched {@link MlvMatchSegment}s for the first\n * occurrence of `query`, so consumers can emphasise the matched substring in a\n * suggestion (e.g. wrapping matched slices in `<mark>`).\n *\n * Matching is case- and diacritic-insensitive ({@link normalizeForMatch}); the\n * returned segment `text` preserves the **original** label casing/diacritics.\n * Because NFD folding can change string length (e.g. `\"é\"` → `\"e\"` + combining\n * mark), the search runs over a per-code-point folded projection with an index\n * map back to the original code points, keeping the highlighted slice aligned\n * with the source label. Only the first match is highlighted.\n *\n * @param label - The option label to segment.\n * @param query - The query to highlight within the label.\n * @returns Ordered segments covering the whole label; a single unmatched\n * segment when the query is empty or not found.\n */\nexport function matchSegments(label: string, query: string): MlvMatchSegment[] {\n const q = normalizeForMatch(query.trim());\n if (!q) return [{ text: label, matched: false }];\n\n // Work in code points so surrogate pairs (e.g. emoji) are not split.\n const chars = [...label];\n let folded = '';\n // For each folded code-unit position, the index of the originating code point.\n const originIndex: number[] = [];\n chars.forEach((char, index) => {\n const foldedChar = normalizeForMatch(char);\n for (const unit of foldedChar) {\n folded += unit;\n originIndex.push(index);\n }\n });\n\n const start = folded.indexOf(q);\n if (start === -1) return [{ text: label, matched: false }];\n\n const originStart = originIndex[start];\n const originEnd = originIndex[start + q.length - 1];\n\n const before = chars.slice(0, originStart).join('');\n const match = chars.slice(originStart, originEnd + 1).join('');\n const after = chars.slice(originEnd + 1).join('');\n\n const segments: MlvMatchSegment[] = [];\n if (before) segments.push({ text: before, matched: false });\n segments.push({ text: match, matched: true });\n if (after) segments.push({ text: after, matched: false });\n return segments;\n}\n"]}
@@ -0,0 +1,356 @@
1
+ import { computed, DestroyRef, effect, inject, signal, untracked, } from '@angular/core';
2
+ import { isObservable } from 'rxjs';
3
+ import { take } from 'rxjs/operators';
4
+ import { MlvDataSource } from '@malva-ui/cdk/data-source';
5
+ import { toOptionsResult } from './options-result';
6
+ /**
7
+ * Normalises `T[] | Observable<T[]> | MlvDataSource<T>` (+ optional
8
+ * `searchFn`) into one reactive shape shared by `mlv-select`, `mlv-combobox`
9
+ * and `[mlvAutocomplete]`. Construct it inside an injection context (a
10
+ * component field initialiser or constructor) — it uses `effect()` and
11
+ * `DestroyRef`.
12
+ *
13
+ * Paging (`MlvDataSource` only): `connect()` emits the current page's slice and
14
+ * the adapter accumulates, tracking the **applied page** — the page whose slice
15
+ * is currently in `items` — alongside the items accumulated before it:
16
+ *
17
+ * - `page <= 1` → the slice replaces `items` and accumulation restarts.
18
+ * - `page === appliedPage` → the source re-emitted the page already shown (a
19
+ * backing array changed, a refetch landed): its **tail is replaced**, never
20
+ * appended, so rows are not duplicated.
21
+ * - `page > appliedPage` → the slice is appended.
22
+ * - A run where the slice reference has not changed (a `page` bump whose data
23
+ * has not arrived yet) applies nothing.
24
+ *
25
+ * `loadMore()` is therefore a no-op while a page is pending — a scroll sentinel
26
+ * firing repeatedly cannot skip a page.
27
+ *
28
+ * Swapping the `searchFn` **only re-arms the lazy gate** (the next
29
+ * `ensureLoaded()` calls the new function): the in-flight call is left running
30
+ * and `items` / `ready` / `loading` are untouched, so results stay on screen
31
+ * until the new function answers and a control bound to an inline arrow — a
32
+ * fresh reference on every change detection run — is not reset on every pass.
33
+ */
34
+ export class MlvOptionsAdapter {
35
+ _config;
36
+ /** @private Lifetime for the in-flight `searchFn` subscription / debounce timer. */
37
+ _destroyRef = inject(DestroyRef);
38
+ /** @private Which branch the current inputs select. `searchFn` wins over the source. */
39
+ _kind = computed(() => {
40
+ if (this._config.searchFn())
41
+ return 'fn';
42
+ const source = this._config.source();
43
+ if (source instanceof MlvDataSource)
44
+ return 'ds';
45
+ if (isObservable(source))
46
+ return 'observable';
47
+ return 'array';
48
+ }, /* @ts-ignore */
49
+ ...(ngDevMode ? [{ debugName: "_kind" }] : /* istanbul ignore next */ []));
50
+ // ─── observable branch ────────────────────────────────────────────────────
51
+ /** @private Latest emission of the observable source. */
52
+ _obsItems = signal([], /* @ts-ignore */
53
+ ...(ngDevMode ? [{ debugName: "_obsItems" }] : /* istanbul ignore next */ []));
54
+ /** @private Whether the observable source has emitted at least once. */
55
+ _obsReady = signal(false, /* @ts-ignore */
56
+ ...(ngDevMode ? [{ debugName: "_obsReady" }] : /* istanbul ignore next */ []));
57
+ // ─── data-source branch ───────────────────────────────────────────────────
58
+ /** @private The connected source and its (memoised) `connect()` signal. */
59
+ _connected = signal(null, /* @ts-ignore */
60
+ ...(ngDevMode ? [{ debugName: "_connected" }] : /* istanbul ignore next */ []));
61
+ /** @private Accumulated pages. */
62
+ _dsItems = signal([], /* @ts-ignore */
63
+ ...(ngDevMode ? [{ debugName: "_dsItems" }] : /* istanbul ignore next */ []));
64
+ /** @private Whether the source has been observed not-loading at least once since connect. */
65
+ _dsReady = signal(false, /* @ts-ignore */
66
+ ...(ngDevMode ? [{ debugName: "_dsReady" }] : /* istanbul ignore next */ []));
67
+ /** @private Last slice reference applied — a `page` bump whose slice has not arrived yet must not append. */
68
+ _dsLastSlice = null;
69
+ /** @private The page whose slice is currently applied (`0` = none yet). Distinguishes an append from a re-emit of the page already shown. */
70
+ _dsAppliedPage = 0;
71
+ /** @private Items accumulated *before* the applied page — the prefix a re-emit of that page is re-appended to. */
72
+ _dsBase = [];
73
+ // ─── searchFn branch ──────────────────────────────────────────────────────
74
+ /** @private Last `searchFn` result. */
75
+ _fnItems = signal([], /* @ts-ignore */
76
+ ...(ngDevMode ? [{ debugName: "_fnItems" }] : /* istanbul ignore next */ []));
77
+ /** @private Whether a `searchFn` call is in flight. */
78
+ _fnLoading = signal(false, /* @ts-ignore */
79
+ ...(ngDevMode ? [{ debugName: "_fnLoading" }] : /* istanbul ignore next */ []));
80
+ /** @private Whether `searchFn` has produced (or failed) at least once. */
81
+ _fnReady = signal(false, /* @ts-ignore */
82
+ ...(ngDevMode ? [{ debugName: "_fnReady" }] : /* istanbul ignore next */ []));
83
+ /** @private Whether `searchFn` has been invoked at least once (lazy-load gate). */
84
+ _fnStarted = false;
85
+ /**
86
+ * @private The `searchFn` reference the swap effect last observed, normalised
87
+ * to `null` when unset. Stays `undefined` until that effect's first run, which
88
+ * is how `undefined → fn` at construction is told apart from a genuine swap.
89
+ */
90
+ _fnSeen;
91
+ /** @private In-flight `searchFn` subscription (superseded by a newer query). */
92
+ _fnSub = null;
93
+ /** @private Monotonic token discarding stale `searchFn` results. */
94
+ _fnToken = 0;
95
+ /** @private Pending debounce timer for remote searches. */
96
+ _debounceTimer = null;
97
+ /** @private Last query handed to `search()`; replayed by `ensureLoaded()`. */
98
+ _lastQuery = '';
99
+ /** `'local'` for arrays / observables (consumer filters); `'remote'` for a data source or `searchFn`. */
100
+ mode = computed(() => {
101
+ const kind = this._kind();
102
+ return kind === 'array' || kind === 'observable' ? 'local' : 'remote';
103
+ }, /* @ts-ignore */
104
+ ...(ngDevMode ? [{ debugName: "mode" }] : /* istanbul ignore next */ []));
105
+ /** The current raw items (accumulated pages for a data source). */
106
+ items = computed(() => {
107
+ switch (this._kind()) {
108
+ case 'fn':
109
+ return this._fnItems();
110
+ case 'ds':
111
+ return this._dsItems();
112
+ case 'observable':
113
+ return this._obsItems();
114
+ default:
115
+ return this._config.source() ?? [];
116
+ }
117
+ }, /* @ts-ignore */
118
+ ...(ngDevMode ? [{ debugName: "items" }] : /* istanbul ignore next */ []));
119
+ /** Source-owned "first page / search in flight" flag (drives the top spinner row). */
120
+ loading = computed(() => {
121
+ switch (this._kind()) {
122
+ case 'fn':
123
+ return this._fnLoading();
124
+ case 'ds': {
125
+ const connected = this._connected();
126
+ return (!!connected && connected.ds.loading() && connected.ds.page() === 1);
127
+ }
128
+ case 'observable':
129
+ return !this._obsReady();
130
+ default:
131
+ return false;
132
+ }
133
+ }, /* @ts-ignore */
134
+ ...(ngDevMode ? [{ debugName: "loading" }] : /* istanbul ignore next */ []));
135
+ /** A page beyond the first is in flight (drives the bottom spinner row). Data source only. */
136
+ loadingMore = computed(() => {
137
+ if (this._kind() !== 'ds')
138
+ return false;
139
+ const connected = this._connected();
140
+ return !!connected && connected.ds.loading() && connected.ds.page() > 1;
141
+ }, /* @ts-ignore */
142
+ ...(ngDevMode ? [{ debugName: "loadingMore" }] : /* istanbul ignore next */ []));
143
+ /** The first payload has arrived — arrays immediately, observables on first emit, data sources once observed not-loading, `searchFn` after its first result. */
144
+ ready = computed(() => {
145
+ switch (this._kind()) {
146
+ case 'fn':
147
+ return this._fnReady();
148
+ case 'ds':
149
+ return this._dsReady();
150
+ case 'observable':
151
+ return this._obsReady();
152
+ default:
153
+ return true;
154
+ }
155
+ }, /* @ts-ignore */
156
+ ...(ngDevMode ? [{ debugName: "ready" }] : /* istanbul ignore next */ []));
157
+ /** More pages exist (`items.length < totalItems`). Data source only. */
158
+ hasMore = computed(() => {
159
+ if (this._kind() !== 'ds')
160
+ return false;
161
+ const connected = this._connected();
162
+ return !!connected && this._dsItems().length < connected.ds.totalItems();
163
+ }, /* @ts-ignore */
164
+ ...(ngDevMode ? [{ debugName: "hasMore" }] : /* istanbul ignore next */ []));
165
+ constructor(_config) {
166
+ this._config = _config;
167
+ // Observable source: (re)subscribe whenever the reference changes.
168
+ effect((onCleanup) => {
169
+ const source = this._config.source();
170
+ if (!isObservable(source))
171
+ return;
172
+ untracked(() => {
173
+ this._obsReady.set(false);
174
+ this._obsItems.set([]);
175
+ });
176
+ const sub = source.subscribe((items) => {
177
+ this._obsItems.set(items);
178
+ this._obsReady.set(true);
179
+ });
180
+ onCleanup(() => sub.unsubscribe());
181
+ });
182
+ // Data source: connect once per source — but only while the data source is
183
+ // the branch in use. A `searchFn` supersedes it, and connecting anyway would
184
+ // fire a fetch whose slice is never read.
185
+ effect(() => {
186
+ const kind = this._kind();
187
+ const source = this._config.source();
188
+ untracked(() => {
189
+ if (kind === 'ds' && source instanceof MlvDataSource) {
190
+ this._resetDataSource();
191
+ this._connected.set({ ds: source, items: source.connect() });
192
+ }
193
+ else if (this._connected()) {
194
+ this._resetDataSource();
195
+ this._connected.set(null);
196
+ }
197
+ });
198
+ });
199
+ // Data source: accumulate slices against the applied page.
200
+ effect(() => {
201
+ const connected = this._connected();
202
+ if (!connected)
203
+ return;
204
+ const slice = connected.items();
205
+ const page = connected.ds.page();
206
+ const loading = connected.ds.loading();
207
+ untracked(() => {
208
+ // A page bump whose slice has not arrived yet applies nothing.
209
+ if (slice === this._dsLastSlice) {
210
+ if (!loading)
211
+ this._dsReady.set(true);
212
+ return;
213
+ }
214
+ if (page <= 1) {
215
+ this._dsBase = [];
216
+ this._dsItems.set([...slice]);
217
+ }
218
+ else if (page === this._dsAppliedPage) {
219
+ // Same page re-emitted — replace its tail rather than duplicating it.
220
+ this._dsItems.set([...this._dsBase, ...slice]);
221
+ }
222
+ else {
223
+ this._dsBase = this._dsItems();
224
+ this._dsItems.set([...this._dsBase, ...slice]);
225
+ }
226
+ this._dsAppliedPage = page;
227
+ this._dsLastSlice = slice;
228
+ if (!loading)
229
+ this._dsReady.set(true);
230
+ });
231
+ });
232
+ // searchFn: a swapped function re-arms the lazy gate so the next
233
+ // `ensureLoaded()` calls it — and nothing else. Tearing down the in-flight
234
+ // call or clearing `items` would make the control sensitive to the
235
+ // *reference* identity of the bound function, and an inline arrow
236
+ // (`[search]="(q) => api.find(q)"`) is a fresh reference on every change
237
+ // detection run. Stale items therefore stay until the new function answers,
238
+ // matching the "results kept while loading" contract; once the new function
239
+ // starts, a late result from the old one is discarded by the monotonic
240
+ // token. The effect's first run is `undefined → fn` at construction, which
241
+ // is not a swap.
242
+ effect(() => {
243
+ const fn = this._config.searchFn() ?? null;
244
+ untracked(() => {
245
+ const previous = this._fnSeen;
246
+ this._fnSeen = fn;
247
+ if (previous === undefined || previous === fn)
248
+ return;
249
+ this._fnStarted = false;
250
+ if (this._kind() === 'fn' && this._config.eager())
251
+ this.ensureLoaded();
252
+ });
253
+ });
254
+ // searchFn: eager first load.
255
+ effect(() => {
256
+ if (this._kind() === 'fn' && this._config.eager()) {
257
+ untracked(() => this.ensureLoaded());
258
+ }
259
+ });
260
+ this._destroyRef.onDestroy(() => {
261
+ this._fnSub?.unsubscribe();
262
+ if (this._debounceTimer)
263
+ clearTimeout(this._debounceTimer);
264
+ });
265
+ }
266
+ /**
267
+ * Remote-mode search entry point (debounced). Data source → `setSearch({ query, keys: [] })`
268
+ * (or `null` for a blank query); `searchFn` → invoked with the query. No-op in local mode.
269
+ */
270
+ search(query) {
271
+ this._lastQuery = query;
272
+ const kind = this._kind();
273
+ if (kind === 'ds')
274
+ this._debounced(() => this._searchDataSource(query));
275
+ else if (kind === 'fn')
276
+ this._debounced(() => this._runSearchFn(query));
277
+ }
278
+ /** Runs the initial `searchFn` load if it has not run yet (data sources connect eagerly; local modes need nothing). */
279
+ ensureLoaded() {
280
+ if (this._kind() === 'fn' && !this._fnStarted)
281
+ this._runSearchFn(this._lastQuery);
282
+ }
283
+ /**
284
+ * Requests the next data-source page. No-op unless `hasMore()`, nothing is in
285
+ * flight, and the source's current page is the one already applied — a page
286
+ * requested but not yet accumulated (or a search that reset the source to page
287
+ * one) blocks the next bump, so a scroll sentinel cannot skip a page.
288
+ */
289
+ loadMore() {
290
+ const connected = this._connected();
291
+ if (!connected ||
292
+ !this.hasMore() ||
293
+ connected.ds.loading() ||
294
+ connected.ds.page() !== this._dsAppliedPage)
295
+ return;
296
+ connected.ds.setPage(connected.ds.page() + 1);
297
+ }
298
+ /** @private Clears every accumulation bookkeeping field — on connect, and when a source is disconnected. */
299
+ _resetDataSource() {
300
+ this._dsLastSlice = null;
301
+ this._dsAppliedPage = 0;
302
+ this._dsBase = [];
303
+ this._dsItems.set([]);
304
+ this._dsReady.set(false);
305
+ }
306
+ /** @private Schedules `run` after `debounce` ms (immediately when 0), cancelling a pending one. */
307
+ _debounced(run) {
308
+ if (this._debounceTimer)
309
+ clearTimeout(this._debounceTimer);
310
+ const ms = Math.max(0, this._config.debounce());
311
+ if (ms === 0) {
312
+ run();
313
+ return;
314
+ }
315
+ this._debounceTimer = setTimeout(() => {
316
+ this._debounceTimer = null;
317
+ run();
318
+ }, ms);
319
+ }
320
+ /** @private Forwards a query to the connected data source using the option-control contract (`keys: []`). */
321
+ _searchDataSource(query) {
322
+ const connected = this._connected();
323
+ if (!connected)
324
+ return;
325
+ connected.ds.setSearch(query.trim() ? { query, keys: [] } : null);
326
+ }
327
+ /** @private Invokes `searchFn`, superseding any in-flight call; keeps stale items until the result. */
328
+ _runSearchFn(query) {
329
+ const fn = this._config.searchFn();
330
+ if (!fn)
331
+ return;
332
+ this._fnStarted = true;
333
+ const token = ++this._fnToken;
334
+ this._fnSub?.unsubscribe();
335
+ this._fnLoading.set(true);
336
+ this._fnSub = toOptionsResult(fn(query))
337
+ .pipe(take(1))
338
+ .subscribe({
339
+ next: (items) => {
340
+ if (token !== this._fnToken)
341
+ return;
342
+ this._fnItems.set(items);
343
+ this._fnLoading.set(false);
344
+ this._fnReady.set(true);
345
+ },
346
+ error: () => {
347
+ if (token !== this._fnToken)
348
+ return;
349
+ this._fnItems.set([]);
350
+ this._fnLoading.set(false);
351
+ this._fnReady.set(true);
352
+ },
353
+ });
354
+ }
355
+ }
356
+ //# sourceMappingURL=options-adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"options-adapter.js","sourceRoot":"","sources":["../../../../../../libs/core/dropdown/src/lib/options-adapter.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n computed,\n DestroyRef,\n effect,\n inject,\n signal,\n untracked,\n} from '@angular/core';\nimport type { Signal } from '@angular/core';\nimport { isObservable } from 'rxjs';\nimport type { Observable, Subscription } from 'rxjs';\nimport { take } from 'rxjs/operators';\nimport { MlvDataSource } from '@malva-ui/cdk/data-source';\nimport { toOptionsResult } from './options-result';\n\n/**\n * A function producing option items for a query. May return a synchronous\n * array, a `Promise`, or an `Observable`. Async results drive the loading\n * affordance; a newer query supersedes an in-flight one.\n */\nexport type MlvOptionsSearchFn<T> = (\n query: string,\n) => T[] | Promise<T[]> | Observable<T[]>;\n\n/** Everything an option control accepts as its `options` input. */\nexport type MlvOptionsInput<T> =\n | readonly T[]\n | Observable<readonly T[]>\n | MlvDataSource<T>\n | null\n | undefined;\n\n/**\n * `'local'` — the consumer filters `items` itself (arrays / observables).\n * `'remote'` — the source owns filtering; the consumer calls `search()` and\n * renders `items` as-is (`MlvDataSource` / `searchFn`).\n */\nexport type MlvOptionsMode = 'local' | 'remote';\n\n/**\n * Everything `MlvOptionsAdapter` reads from its owner. Every field is a\n * `Signal`, so an option control passes its own `input()`s straight through and\n * the adapter reacts to each of them — a swapped `source` reconnects, a swapped\n * `searchFn` re-arms the lazy gate, and `debounce` / `eager` are read at the\n * moment they matter rather than captured at construction.\n */\nexport interface MlvOptionsAdapterConfig<T> {\n /** The control's `options` input. */\n source: Signal<MlvOptionsInput<T>>;\n /** Optional remote search function; when set it supersedes `source`. */\n searchFn: Signal<MlvOptionsSearchFn<T> | null | undefined>;\n /** Debounce (ms) applied to remote searches only. */\n debounce: Signal<number>;\n /** When `true`, a `searchFn` runs `searchFn('')` on construction instead of lazily. */\n eager: Signal<boolean>;\n}\n\n/** @private Which of the four supported source shapes the current inputs select. */\ntype SourceKind = 'array' | 'observable' | 'ds' | 'fn';\n\n/** @private A connected `MlvDataSource` paired with the signal returned by its `connect()`. */\ninterface ConnectedSource<T> {\n readonly ds: MlvDataSource<T>;\n readonly items: Signal<T[]>;\n}\n\n/**\n * Normalises `T[] | Observable<T[]> | MlvDataSource<T>` (+ optional\n * `searchFn`) into one reactive shape shared by `mlv-select`, `mlv-combobox`\n * and `[mlvAutocomplete]`. Construct it inside an injection context (a\n * component field initialiser or constructor) — it uses `effect()` and\n * `DestroyRef`.\n *\n * Paging (`MlvDataSource` only): `connect()` emits the current page's slice and\n * the adapter accumulates, tracking the **applied page** — the page whose slice\n * is currently in `items` — alongside the items accumulated before it:\n *\n * - `page <= 1` → the slice replaces `items` and accumulation restarts.\n * - `page === appliedPage` → the source re-emitted the page already shown (a\n * backing array changed, a refetch landed): its **tail is replaced**, never\n * appended, so rows are not duplicated.\n * - `page > appliedPage` → the slice is appended.\n * - A run where the slice reference has not changed (a `page` bump whose data\n * has not arrived yet) applies nothing.\n *\n * `loadMore()` is therefore a no-op while a page is pending — a scroll sentinel\n * firing repeatedly cannot skip a page.\n *\n * Swapping the `searchFn` **only re-arms the lazy gate** (the next\n * `ensureLoaded()` calls the new function): the in-flight call is left running\n * and `items` / `ready` / `loading` are untouched, so results stay on screen\n * until the new function answers and a control bound to an inline arrow — a\n * fresh reference on every change detection run — is not reset on every pass.\n */\nexport class MlvOptionsAdapter<T> {\n /** @private Lifetime for the in-flight `searchFn` subscription / debounce timer. */\n private readonly _destroyRef = inject(DestroyRef);\n\n /** @private Which branch the current inputs select. `searchFn` wins over the source. */\n private readonly _kind = computed<SourceKind>(() => {\n if (this._config.searchFn()) return 'fn';\n const source = this._config.source();\n if (source instanceof MlvDataSource) return 'ds';\n if (isObservable(source)) return 'observable';\n return 'array';\n });\n\n // ─── observable branch ────────────────────────────────────────────────────\n /** @private Latest emission of the observable source. */\n private readonly _obsItems = signal<readonly T[]>([]);\n /** @private Whether the observable source has emitted at least once. */\n private readonly _obsReady = signal(false);\n\n // ─── data-source branch ───────────────────────────────────────────────────\n /** @private The connected source and its (memoised) `connect()` signal. */\n private readonly _connected = signal<ConnectedSource<T> | null>(null);\n /** @private Accumulated pages. */\n private readonly _dsItems = signal<readonly T[]>([]);\n /** @private Whether the source has been observed not-loading at least once since connect. */\n private readonly _dsReady = signal(false);\n /** @private Last slice reference applied — a `page` bump whose slice has not arrived yet must not append. */\n private _dsLastSlice: readonly T[] | null = null;\n /** @private The page whose slice is currently applied (`0` = none yet). Distinguishes an append from a re-emit of the page already shown. */\n private _dsAppliedPage = 0;\n /** @private Items accumulated *before* the applied page — the prefix a re-emit of that page is re-appended to. */\n private _dsBase: readonly T[] = [];\n\n // ─── searchFn branch ──────────────────────────────────────────────────────\n /** @private Last `searchFn` result. */\n private readonly _fnItems = signal<readonly T[]>([]);\n /** @private Whether a `searchFn` call is in flight. */\n private readonly _fnLoading = signal(false);\n /** @private Whether `searchFn` has produced (or failed) at least once. */\n private readonly _fnReady = signal(false);\n /** @private Whether `searchFn` has been invoked at least once (lazy-load gate). */\n private _fnStarted = false;\n /**\n * @private The `searchFn` reference the swap effect last observed, normalised\n * to `null` when unset. Stays `undefined` until that effect's first run, which\n * is how `undefined → fn` at construction is told apart from a genuine swap.\n */\n private _fnSeen: MlvOptionsSearchFn<T> | null | undefined;\n /** @private In-flight `searchFn` subscription (superseded by a newer query). */\n private _fnSub: Subscription | null = null;\n /** @private Monotonic token discarding stale `searchFn` results. */\n private _fnToken = 0;\n /** @private Pending debounce timer for remote searches. */\n private _debounceTimer: ReturnType<typeof setTimeout> | null = null;\n /** @private Last query handed to `search()`; replayed by `ensureLoaded()`. */\n private _lastQuery = '';\n\n /** `'local'` for arrays / observables (consumer filters); `'remote'` for a data source or `searchFn`. */\n readonly mode = computed<MlvOptionsMode>(() => {\n const kind = this._kind();\n return kind === 'array' || kind === 'observable' ? 'local' : 'remote';\n });\n\n /** The current raw items (accumulated pages for a data source). */\n readonly items = computed<readonly T[]>(() => {\n switch (this._kind()) {\n case 'fn':\n return this._fnItems();\n case 'ds':\n return this._dsItems();\n case 'observable':\n return this._obsItems();\n default:\n return (this._config.source() as readonly T[] | null | undefined) ?? [];\n }\n });\n\n /** Source-owned \"first page / search in flight\" flag (drives the top spinner row). */\n readonly loading = computed<boolean>(() => {\n switch (this._kind()) {\n case 'fn':\n return this._fnLoading();\n case 'ds': {\n const connected = this._connected();\n return (\n !!connected && connected.ds.loading() && connected.ds.page() === 1\n );\n }\n case 'observable':\n return !this._obsReady();\n default:\n return false;\n }\n });\n\n /** A page beyond the first is in flight (drives the bottom spinner row). Data source only. */\n readonly loadingMore = computed<boolean>(() => {\n if (this._kind() !== 'ds') return false;\n const connected = this._connected();\n return !!connected && connected.ds.loading() && connected.ds.page() > 1;\n });\n\n /** The first payload has arrived — arrays immediately, observables on first emit, data sources once observed not-loading, `searchFn` after its first result. */\n readonly ready = computed<boolean>(() => {\n switch (this._kind()) {\n case 'fn':\n return this._fnReady();\n case 'ds':\n return this._dsReady();\n case 'observable':\n return this._obsReady();\n default:\n return true;\n }\n });\n\n /** More pages exist (`items.length < totalItems`). Data source only. */\n readonly hasMore = computed<boolean>(() => {\n if (this._kind() !== 'ds') return false;\n const connected = this._connected();\n return !!connected && this._dsItems().length < connected.ds.totalItems();\n });\n\n constructor(private readonly _config: MlvOptionsAdapterConfig<T>) {\n // Observable source: (re)subscribe whenever the reference changes.\n effect((onCleanup) => {\n const source = this._config.source();\n if (!isObservable(source)) return;\n untracked(() => {\n this._obsReady.set(false);\n this._obsItems.set([]);\n });\n const sub = source.subscribe((items) => {\n this._obsItems.set(items);\n this._obsReady.set(true);\n });\n onCleanup(() => sub.unsubscribe());\n });\n\n // Data source: connect once per source — but only while the data source is\n // the branch in use. A `searchFn` supersedes it, and connecting anyway would\n // fire a fetch whose slice is never read.\n effect(() => {\n const kind = this._kind();\n const source = this._config.source();\n untracked(() => {\n if (kind === 'ds' && source instanceof MlvDataSource) {\n this._resetDataSource();\n this._connected.set({ ds: source, items: source.connect() });\n } else if (this._connected()) {\n this._resetDataSource();\n this._connected.set(null);\n }\n });\n });\n\n // Data source: accumulate slices against the applied page.\n effect(() => {\n const connected = this._connected();\n if (!connected) return;\n const slice = connected.items();\n const page = connected.ds.page();\n const loading = connected.ds.loading();\n untracked(() => {\n // A page bump whose slice has not arrived yet applies nothing.\n if (slice === this._dsLastSlice) {\n if (!loading) this._dsReady.set(true);\n return;\n }\n if (page <= 1) {\n this._dsBase = [];\n this._dsItems.set([...slice]);\n } else if (page === this._dsAppliedPage) {\n // Same page re-emitted — replace its tail rather than duplicating it.\n this._dsItems.set([...this._dsBase, ...slice]);\n } else {\n this._dsBase = this._dsItems();\n this._dsItems.set([...this._dsBase, ...slice]);\n }\n this._dsAppliedPage = page;\n this._dsLastSlice = slice;\n if (!loading) this._dsReady.set(true);\n });\n });\n\n // searchFn: a swapped function re-arms the lazy gate so the next\n // `ensureLoaded()` calls it — and nothing else. Tearing down the in-flight\n // call or clearing `items` would make the control sensitive to the\n // *reference* identity of the bound function, and an inline arrow\n // (`[search]=\"(q) => api.find(q)\"`) is a fresh reference on every change\n // detection run. Stale items therefore stay until the new function answers,\n // matching the \"results kept while loading\" contract; once the new function\n // starts, a late result from the old one is discarded by the monotonic\n // token. The effect's first run is `undefined → fn` at construction, which\n // is not a swap.\n effect(() => {\n const fn = this._config.searchFn() ?? null;\n untracked(() => {\n const previous = this._fnSeen;\n this._fnSeen = fn;\n if (previous === undefined || previous === fn) return;\n this._fnStarted = false;\n if (this._kind() === 'fn' && this._config.eager()) this.ensureLoaded();\n });\n });\n\n // searchFn: eager first load.\n effect(() => {\n if (this._kind() === 'fn' && this._config.eager()) {\n untracked(() => this.ensureLoaded());\n }\n });\n\n this._destroyRef.onDestroy(() => {\n this._fnSub?.unsubscribe();\n if (this._debounceTimer) clearTimeout(this._debounceTimer);\n });\n }\n\n /**\n * Remote-mode search entry point (debounced). Data source → `setSearch({ query, keys: [] })`\n * (or `null` for a blank query); `searchFn` → invoked with the query. No-op in local mode.\n */\n search(query: string): void {\n this._lastQuery = query;\n const kind = this._kind();\n if (kind === 'ds') this._debounced(() => this._searchDataSource(query));\n else if (kind === 'fn') this._debounced(() => this._runSearchFn(query));\n }\n\n /** Runs the initial `searchFn` load if it has not run yet (data sources connect eagerly; local modes need nothing). */\n ensureLoaded(): void {\n if (this._kind() === 'fn' && !this._fnStarted)\n this._runSearchFn(this._lastQuery);\n }\n\n /**\n * Requests the next data-source page. No-op unless `hasMore()`, nothing is in\n * flight, and the source's current page is the one already applied — a page\n * requested but not yet accumulated (or a search that reset the source to page\n * one) blocks the next bump, so a scroll sentinel cannot skip a page.\n */\n loadMore(): void {\n const connected = this._connected();\n if (\n !connected ||\n !this.hasMore() ||\n connected.ds.loading() ||\n connected.ds.page() !== this._dsAppliedPage\n )\n return;\n connected.ds.setPage(connected.ds.page() + 1);\n }\n\n /** @private Clears every accumulation bookkeeping field — on connect, and when a source is disconnected. */\n private _resetDataSource(): void {\n this._dsLastSlice = null;\n this._dsAppliedPage = 0;\n this._dsBase = [];\n this._dsItems.set([]);\n this._dsReady.set(false);\n }\n\n /** @private Schedules `run` after `debounce` ms (immediately when 0), cancelling a pending one. */\n private _debounced(run: () => void): void {\n if (this._debounceTimer) clearTimeout(this._debounceTimer);\n const ms = Math.max(0, this._config.debounce());\n if (ms === 0) {\n run();\n return;\n }\n this._debounceTimer = setTimeout(() => {\n this._debounceTimer = null;\n run();\n }, ms);\n }\n\n /** @private Forwards a query to the connected data source using the option-control contract (`keys: []`). */\n private _searchDataSource(query: string): void {\n const connected = this._connected();\n if (!connected) return;\n connected.ds.setSearch(query.trim() ? { query, keys: [] } : null);\n }\n\n /** @private Invokes `searchFn`, superseding any in-flight call; keeps stale items until the result. */\n private _runSearchFn(query: string): void {\n const fn = this._config.searchFn();\n if (!fn) return;\n this._fnStarted = true;\n const token = ++this._fnToken;\n this._fnSub?.unsubscribe();\n this._fnLoading.set(true);\n this._fnSub = toOptionsResult(fn(query))\n .pipe(take(1))\n .subscribe({\n next: (items) => {\n if (token !== this._fnToken) return;\n this._fnItems.set(items);\n this._fnLoading.set(false);\n this._fnReady.set(true);\n },\n error: () => {\n if (token !== this._fnToken) return;\n this._fnItems.set([]);\n this._fnLoading.set(false);\n this._fnReady.set(true);\n },\n });\n }\n}\n"]}
@@ -0,0 +1,11 @@
1
+ import { from, of } from 'rxjs';
2
+ /**
3
+ * Normalises every supported search result into a one-shot observable. Shared
4
+ * by `MlvOptionsAdapter` and `[mlvAutocomplete]`.
5
+ */
6
+ export function toOptionsResult(result) {
7
+ return Array.isArray(result)
8
+ ? of(result)
9
+ : from(result);
10
+ }
11
+ //# sourceMappingURL=options-result.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"options-result.js","sourceRoot":"","sources":["../../../../../../libs/core/dropdown/src/lib/options-result.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,EAAE,EAAmB,MAAM,MAAM,CAAC;AAEjD;;;GAGG;AACH,MAAM,UAAU,eAAe,CAC7B,MAA4C;IAE5C,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;QAC1B,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC;QACZ,CAAC,CAAC,IAAI,CAAC,MAAwC,CAAC,CAAC;AACrD,CAAC","sourcesContent":["import { from, of, type Observable } from 'rxjs';\n\n/**\n * Normalises every supported search result into a one-shot observable. Shared\n * by `MlvOptionsAdapter` and `[mlvAutocomplete]`.\n */\nexport function toOptionsResult<T>(\n result: T[] | Promise<T[]> | Observable<T[]>,\n): Observable<T[]> {\n return Array.isArray(result)\n ? of(result)\n : from(result as Promise<T[]> | Observable<T[]>);\n}\n"]}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * `@angular/aria`'s `ngListbox` reconciles its `value` model against the
3
+ * currently **rendered** options and re-emits `valueChange` whenever the
4
+ * rendered set changes — not only on user interaction. These helpers let an
5
+ * owning control tell that noise apart from a genuine selection.
6
+ */
7
+ /**
8
+ * Whether an incoming listbox `valueChange` is pure aria reconciliation: it
9
+ * (a) adds no value that is not already committed and (b) only removes values
10
+ * whose option is currently not rendered (`visible`). An emit that exactly
11
+ * restates the committed selection is reconciliation too.
12
+ */
13
+ export function isReconciliationEmit(incoming, committed, visible, compare) {
14
+ const inArr = (arr, v) => arr.some((x) => compare(x, v));
15
+ // (a) No additions relative to the committed selection.
16
+ if (incoming.some((v) => !inArr(committed, v)))
17
+ return false;
18
+ // (b) Every removed value is currently filtered out of view.
19
+ return committed
20
+ .filter((v) => !inArr(incoming, v))
21
+ .every((v) => !inArr(visible, v));
22
+ }
23
+ /**
24
+ * Committed values that aria dropped only because their option is not
25
+ * rendered (not in `visible`) and that are not in `incoming`. Re-add them to
26
+ * a genuine multi-select pick so earlier selections survive filtering.
27
+ */
28
+ export function filteredOutCommitted(incoming, committed, visible, compare) {
29
+ return committed.filter((v) => !incoming.some((iv) => compare(iv, v)) &&
30
+ !visible.some((vv) => compare(vv, v)));
31
+ }
32
+ //# sourceMappingURL=reconciliation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reconciliation.js","sourceRoot":"","sources":["../../../../../../libs/core/dropdown/src/lib/reconciliation.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB,CAClC,QAAsB,EACtB,SAAuB,EACvB,OAAqB,EACrB,OAAgC;IAEhC,MAAM,KAAK,GAAG,CAAC,GAAiB,EAAE,CAAI,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAE1E,wDAAwD;IACxD,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IAE7D,6DAA6D;IAC7D,OAAO,SAAS;SACb,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;SAClC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;AACtC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAClC,QAAsB,EACtB,SAAuB,EACvB,OAAqB,EACrB,OAAgC;IAEhC,OAAO,SAAS,CAAC,MAAM,CACrB,CAAC,CAAC,EAAE,EAAE,CACJ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QACtC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CACxC,CAAC;AACJ,CAAC","sourcesContent":["/**\n * `@angular/aria`'s `ngListbox` reconciles its `value` model against the\n * currently **rendered** options and re-emits `valueChange` whenever the\n * rendered set changes — not only on user interaction. These helpers let an\n * owning control tell that noise apart from a genuine selection.\n */\n\n/**\n * Whether an incoming listbox `valueChange` is pure aria reconciliation: it\n * (a) adds no value that is not already committed and (b) only removes values\n * whose option is currently not rendered (`visible`). An emit that exactly\n * restates the committed selection is reconciliation too.\n */\nexport function isReconciliationEmit<T>(\n incoming: readonly T[],\n committed: readonly T[],\n visible: readonly T[],\n compare: (a: T, b: T) => boolean,\n): boolean {\n const inArr = (arr: readonly T[], v: T) => arr.some((x) => compare(x, v));\n\n // (a) No additions relative to the committed selection.\n if (incoming.some((v) => !inArr(committed, v))) return false;\n\n // (b) Every removed value is currently filtered out of view.\n return committed\n .filter((v) => !inArr(incoming, v))\n .every((v) => !inArr(visible, v));\n}\n\n/**\n * Committed values that aria dropped only because their option is not\n * rendered (not in `visible`) and that are not in `incoming`. Re-add them to\n * a genuine multi-select pick so earlier selections survive filtering.\n */\nexport function filteredOutCommitted<T>(\n incoming: readonly T[],\n committed: readonly T[],\n visible: readonly T[],\n compare: (a: T, b: T) => boolean,\n): T[] {\n return committed.filter(\n (v) =>\n !incoming.some((iv) => compare(iv, v)) &&\n !visible.some((vv) => compare(vv, v)),\n );\n}\n"]}
@@ -0,0 +1,21 @@
1
+ import { MlvArrayDataSource } from '@malva-ui/cdk/data-source';
2
+ /**
3
+ * In-memory data source for option controls (`mlv-select`, `mlv-combobox`,
4
+ * `[mlvAutocomplete]`). Identical to `MlvArrayDataSource` except that it is
5
+ * **unpaged** (`perPage = Infinity`) so the whole list renders; the shared
6
+ * natural-field search (`setSearch({ query, keys: [] })`) and sorting are
7
+ * inherited. Reach for it when you want a data-source-shaped API over an
8
+ * in-memory array (e.g. to swap for a remote subclass later); a plain `T[]`
9
+ * remains the simplest input.
10
+ */
11
+ export class MlvSelectDataSource extends MlvArrayDataSource {
12
+ /**
13
+ * @param data A plain array (wrapped in a signal automatically) or a
14
+ * `Signal<T[]>` to track reactively.
15
+ */
16
+ constructor(data) {
17
+ super(data);
18
+ this._perPage.set(Infinity);
19
+ }
20
+ }
21
+ //# sourceMappingURL=select-data-source.js.map