@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,512 @@
1
+ # Library: select
2
+
3
+ ## Overview
4
+
5
+ `@malva-ui/core/select` provides a fully-featured, accessible dropdown select component for Angular forms. It wraps the popup and dropdown infrastructure to deliver single/multiple selection, custom option rendering, automatic positioning, and signal/reactive/template-driven forms integration.
6
+
7
+ The library is generic (`MlvSelect<T>`) so it can work with any data type and accepts a transform function to convert raw values into displayable options.
8
+
9
+ ---
10
+
11
+ ## Public API
12
+
13
+ Exported from `@malva-ui/core/select`:
14
+
15
+ | Export | Kind | Description |
16
+ | ----------------------------- | ---------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------- |
17
+ | `MlvSelect` | Component class | The primary select component |
18
+ | `MlvSelectState` | Type alias | `'default' \| 'success' \| 'info' \| 'warning' \| 'error'` (alias of `MlvFormState`) |
19
+ | `MlvSelectListTemplate` | Directive class | Marks an `<ng-template>` as the full list template (selector-only marker) |
20
+ | `MlvSelectItemTemplate` | Directive class | Marks an `<ng-template>` as the per-item template inside the dropdown |
21
+ | `MlvSelectSelectedTemplate` | Directive class | Marks an `<ng-template>` as the selected-value display template in the trigger |
22
+ | `MlvSelectOption<T>` | Interface (re-export from `@malva-ui/core/dropdown`) | `{ label: string; value: T; group?: string }` (`group` clusters options under sticky headers) |
23
+ | `MlvSelectOptionTransform<T>` | Type (re-export from `@malva-ui/core/dropdown`) | `(item: T) => MlvSelectOption<T>` |
24
+ | `defaultOptionTransform` | Function (re-export from `@malva-ui/core/dropdown`) | Default transform: `String(item)` → label |
25
+ | `resolveOptions` | Function (re-export from `@malva-ui/core/dropdown`) | Maps a raw array through a transform function |
26
+ | `MlvSelectDataSource<T>` | Class (re-export from `@malva-ui/core/dropdown`) | Unpaged (`perPage = Infinity`) `MlvArrayDataSource<T>` subclass — default in-memory data source for option controls |
27
+
28
+ ---
29
+
30
+ ## Components
31
+
32
+ ### `MlvSelect<T>`
33
+
34
+ **Selector:** `mlv-select`
35
+
36
+ **Purpose:** A combobox-style form control. Renders a trigger button and a popup dropdown panel. Extends `MlvSignalFormControlBase<T | T[] | null>`, so `[formField]`, `[formControl]`, and `ngModel` share one public `value` model and the common Malva form-control inputs.
37
+
38
+ #### Inherited inputs from `MlvSignalFormControlBase<T>`
39
+
40
+ | Input | Type | Default | Description |
41
+ | ---------- | --------------------------------- | ------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
42
+ | `id` | `string` | auto-generated `mlv-control-N` | HTML `id` applied to the trigger element |
43
+ | `label` | `string` | `''` | Label text rendered above the control |
44
+ | `hint` | `string` | `''` | Hint text displayed inside the label |
45
+ | `message` | `string` | `''` | Validation/status message below the control |
46
+ | `state` | `MlvFormState` (`MlvSelectState`) | `'default'` | Visual state: `default`, `success`, `info`, `warning`, `error` |
47
+ | `disabled` | `BooleanInput` | `false` | Disables the control (coerced via `coerceBooleanProperty`) |
48
+ | `readonly` | `boolean` | `false` | Marks the control as readonly |
49
+ | `loading` | `BooleanInput` | `false` | **Rendered:** ORs into the dropdown's spinner row (`_panelLoading`) and suppresses `_ready`, so a consumer-driven load also holds the trigger's loading variant while a committed value's label is pending. Bind it to a flag that is genuinely about **option loading** — because it feeds `_ready`, an unrelated flag (a save in flight, a page-level spinner) puts the trigger into the loading variant whenever the committed value is not among the current options. |
50
+
51
+ #### Own inputs
52
+
53
+ | Input | Type | Default | Description |
54
+ | ------------------- | ---------------------------------------------------------------------------------------------------------- | ------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
55
+ | `options` | `MlvOptionsInput<T>` (`readonly T[] \| Observable<readonly T[]> \| MlvDataSource<T> \| null \| undefined`) | `[]` | The items to display in the dropdown. Arrays / observables are **local**; an `MlvDataSource` is **remote** (source-side search + lazy paging). Immutable collections are accepted. See _Async sources_. |
56
+ | `searchFn` | `MlvOptionsSearchFn<T> \| null` | `null` | Remote search `(query) => T[] \| Promise<T[]> \| Observable<T[]>`. **Supersedes `options`** as the item source; the list is not filtered locally. Lazy: first invoked on the first open (or immediately when a committed value still needs its label). |
57
+ | `searchDebounce` | `number` | `200` | Debounce (ms) applied to remote searches (`MlvDataSource` / `searchFn`) only. Local filtering stays instant. |
58
+ | `searchable` | `BooleanInput` | `false` | Renders a search field as the first row of the open dropdown — pinned above the option list, so it never scrolls away — moves the combobox semantics onto it while open, and switches navigation to the activedescendant model. See _Searchable dropdown_. |
59
+ | `searchPlaceholder` | `string \| undefined` | `undefined` | Placeholder of the in-dropdown search field. Falls back to `MLV_SELECT_I18N.searchPlaceholder` (`'Search...'`). |
60
+ | `matcher` | `MlvOptionMatcher<T> \| undefined` | shared substring matcher | Custom local-filter predicate (fuzzy / secondary-field). Threaded into the shared `filterOptions`; results are always ranked prefix-matches-first. **Ignored for remote sources**, which own their filtering. Mirrors `mlv-combobox`'s / `[mlvAutocompleteMatcher]`. |
61
+ | `ariaLabel` | `string \| undefined` | `undefined` | Accessible name for the combobox trigger when no visible `label` is rendered |
62
+ | `multiple` | `boolean` | `false` | Enables multi-selection mode |
63
+ | `placeholder` | `string` | `'Select...'` | Placeholder text shown when no value is selected |
64
+ | `toOption` | `MlvSelectOptionTransform<T>` | `defaultOptionTransform` | Function mapping a raw item to `{ label, value }` |
65
+ | `compareWith` | `(a: T, b: T) => boolean` | reference equality | Equality used to match option values against the selection and against externally written values. Threaded into `MlvSelectionService.compareWith` and used by the reconciliation guard. See _Value ↔ options normalisation_. |
66
+ | `mobileMode` | `MlvPopupMobileMode` (`'auto' \| 'fullscreen' \| 'off'`) | `'auto'` | Passthrough to the dropdown `mlv-popup`. `'auto'` = full-screen sheet below the `md` breakpoint (< 768px), anchored above; `'off'` = always anchored; `'fullscreen'` = always sheet. |
67
+ | `mobileTitle` | `string \| undefined` | `undefined` | Explicit full-screen sheet heading. When omitted, falls back to `label` (or, when unset, the resolved placeholder) via `_resolvedMobileTitle`. |
68
+ | `mlvDensity` | `MlvDensity \| undefined` | `undefined` | Density for the dropdown option list. Forwarded to the dropdown `mlv-popup`, which stamps `mlv--{density}` on the detached overlay panel (outside the page's density cascade); rows respond via the `mlv-list-item` density ladder. Omitted → global `MlvDensityService`. |
69
+
70
+ #### Outputs
71
+
72
+ `MlvSelect` communicates value changes through its `value` model and touch state through the inherited `touch` output.
73
+
74
+ #### Key computed / signals
75
+
76
+ | Member | Kind | Description |
77
+ | ---------------------------------------- | ---------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
78
+ | `resolvedOptions` | `computed` | `_adapter.items()` mapped through `toOption()` |
79
+ | `filteredOptions` | `computed` | The options actually rendered in the panel: `resolvedOptions` filtered by `searchQuery` while **searchable + local**, `resolvedOptions` as-is otherwise |
80
+ | `searchQuery` | `signal<string>` | Text of the in-dropdown search field; always `''` while closed (the close resets it) |
81
+ | `isOpen` | `signal<boolean>` | Tracks whether the dropdown popup is visible |
82
+ | `triggerWidth` | `signal<number>` | Pixel width of the trigger element (used to size the popup) |
83
+ | `_adapter` (protected) | `MlvOptionsAdapter<T>` | The shared source adapter behind `options` / `searchFn`; template-facing for the paging bindings (`hasMore` / `loadingMore` / `loadMore()`) |
84
+ | `_allValuesMatched` (protected) | `computed` | Whether every committed value has a matching option (by `compareWith`) |
85
+ | `_ready` (protected) | `computed` | `_adapter.ready() && !loading()` — the first payload arrived and no consumer-driven load is running |
86
+ | `_awaitingValueLabel` (protected) | `computed` | The loading variant: `hasValue() && !_ready() && !_allValuesMatched()` |
87
+ | `_panelLoading` (protected) | `computed` | `_adapter.loading() \|\| loading()` — the dropdown's top spinner row |
88
+ | `_eagerDone` (private) | `signal<boolean>` | Latches `true` on the first `ready()` of a **remote** source; gates the adapter's `eager` flag off so an inline-arrow `searchFn` cannot loop (see _Async sources_) |
89
+ | `_activeDescendant` (private) | `MlvActiveDescendant` | Shared active-option bookkeeping over `filteredOptions` (searchable mode only). A constructor `effect` resets it whenever the filtered list shrinks past the current index |
90
+ | `_onPanelMousedown` (protected) | method | Prevents the panel's `mousedown` default **only** while searchable (a method, never an inline `searchable() && …` expression — see _Searchable dropdown_) |
91
+ | `_activeIndex` (protected) | `computed` | The panel's `[activeIndex]`; pinned to `-1` while not searchable |
92
+ | `_activeOptionId` (protected) | `computed` | `optionId(listboxId(), index)` of the active row — the search input's `aria-activedescendant`; `null` when none |
93
+ | `_searchInputId` (protected) | `computed` | `"<id>-search"` — the focus target after the popup opens |
94
+ | `_outerIsCombobox` (protected) | `computed` | `!(searchable() && isOpen())` — whether the **trigger** owns the combobox semantics |
95
+ | `_highlightQuery` (protected) | `computed` | Matched-substring emphasis; empty unless searchable over a **local** source |
96
+ | `_resolvedSearchPlaceholder` (protected) | `computed` | `searchPlaceholder()` ?? the i18n `searchPlaceholder` |
97
+ | `_resultsAnnouncement` (protected) | `computed` | Polite live-region copy: i18n `resultsAvailable` (ICU `{count}`) or `noResults`; empty unless searchable **and** open |
98
+
99
+ #### Content children
100
+
101
+ | Query | Directive | Description |
102
+ | ------------------ | --------------------------- | ---------------------------------------------------------------------- |
103
+ | `itemTemplate` | `MlvSelectItemTemplate` | Optional custom template for each option row in the dropdown |
104
+ | `selectedTemplate` | `MlvSelectSelectedTemplate` | Optional custom template for the selected value display in the trigger |
105
+
106
+ #### Host bindings
107
+
108
+ ```
109
+ class="mlv-select"
110
+ [class]="'mlv-select--' + state()" // e.g. mlv-select--error
111
+ [class.mlv-select--disabled]="disabled()"
112
+ [class.mlv-select--open]="isOpen()"
113
+ [class.mlv-select--loading]="_awaitingValueLabel()"
114
+ ```
115
+
116
+ #### Template structure (`select.html`)
117
+
118
+ 1. `<mlv-form-control-wrapper>` — wraps the whole control, receives `focused`, `disabled`, `state`.
119
+ 2. `<mlv-label>` — rendered when `label()` or `hint()` is set; clicking focuses the trigger.
120
+ 3. `<ng-template mlvFormControlWrapperControl>` — projects the control itself:
121
+ - `<mlv-popup-container>` — CDK overlay anchor.
122
+ - `.mlv-select__trigger` — `div[role="combobox"]` with:
123
+ - `[hostRole]="_outerIsCombobox() ? 'combobox' : 'button'"` — the role steps down to `button` while the **searchable** dropdown is open (the search input is the combobox then). `aria-expanded`, `aria-haspopup="listbox"`, `aria-controls`, `aria-disabled`, `aria-labelledby`/`aria-label` and `aria-describedby` are unconditional (all valid on either role); only `aria-required` is gated on `_outerIsCombobox()` — the search `mlv-input` takes it over via `[required]="required()"` while it owns the role.
124
+ - `mlvResizeObserver` — tracks trigger width.
125
+ - `mlvClick` — handles click-to-toggle.
126
+ - Keyboard: `ArrowUp`/`ArrowDown` open and focus the first item, `Home`/`End` open without focusing (all four through the shared `_openFromKey($event, focusFirst)`, which always prevents the default and no-ops while inert); `Escape` closes. The focus-first request is skipped while `searchable()` — focus goes to the search field instead.
127
+ - `aria-busy` while `_awaitingValueLabel()`.
128
+ - Shows the i18n `loading` text while `_awaitingValueLabel()`, otherwise `selectedTemplate` / plain text when a value is selected, otherwise the placeholder.
129
+ - A chevron arrow SVG (rotates 180° when open) — replaced by an `mlv-loader` spinner while `_awaitingValueLabel()`.
130
+ - `<mlv-popup>` — the popup overlay bound to `isOpen`, with `(afterOpened)="_onPopupOpened()"` (focus handoff to the search field) and `(afterClosed)="_onPopupClosed()"` (focus restore + search reset).
131
+ - `<ng-template mlvPopupPinnedContent>` — stamped only when `searchable()` — carries `.mlv-select__search` (a `lucideSearch` icon + a `bare` `mlv-input`). The popup renders it as `.mlv-popup__pinned`, **above** its scroll region, so the search row is the dropdown's first row and stays put however far the options scroll.
132
+ - `<ng-template mlvPopupContent>` stamps `.mlv-select__panel` — a `(mousedown)="_onPanelMousedown($event)"` wrapper — around `<mlv-dropdown-panel scrollMode="parent">`, so the option list delegates to the popup's themed scrollbar instead of creating a nested scroll region. The panel receives `[options]="filteredOptions()"`, `[focusMode]="searchable() ? 'activedescendant' : 'roving'"`, `[activeIndex]="_activeIndex()"`, `[highlightQuery]="_highlightQuery()"`, `[loading]="_panelLoading()"`, `[loadingText]="_i18n().loading"`, `[hasMore]="_adapter.hasMore()"`, `[loadingMore]="_adapter.loadingMore()"` and `(loadMore)="_adapter.loadMore()"`; when `searchable()` it also projects the `.mlv-select__empty` no-results row.
133
+ - `.mlv-select__sr-status` — a visually-hidden `role="status" aria-live="polite"` region rendering `_resultsAnnouncement()` (after the popup container, still inside the control template).
134
+ 4. `<mlv-message>` — rendered when `message()` is set.
135
+
136
+ #### Styling (`select.scss`)
137
+
138
+ BEM block `mlv-select`. Uses `@malva-ui/styles` `mixins.base()` for box-sizing/font reset. Key elements:
139
+
140
+ - `.mlv-select__trigger` — flex row, full width, 9px vertical padding.
141
+ - `.mlv-select__arrow` — 20×20px, transitions color and rotation; becomes `var(--mlv-text-primary)` on hover/focus/open; rotates 180° when open.
142
+ - `.mlv-select__value` — `var(--mlv-text-primary)`.
143
+ - `.mlv-select__placeholder` — `var(--mlv-text-secondary)`.
144
+ - `.mlv-select__popup` — padding forced to 0 to let the dropdown panel define its own spacing.
145
+ - `.mlv-select--loading` — the loading variant: `cursor: progress` on the trigger, and the arrow box becomes a centring flex box so the `mlv-loader` sits exactly where the chevron did (no trigger-row shift).
146
+ - `.mlv-select__search` — the searchable mode's first row: **layout only** (flex row, gap, padding) plus a raised background + bottom hairline so it stays legible over the options scrolling beneath it. It carries no positioning of its own — the popup's `.mlv-popup__pinned` slot takes it out of the scroll region entirely (and its `z-index: 3` already outranks `.mlv-dropdown-panel__group-header`'s sticky `z-index: 1`).
147
+ - `.mlv-select__search-icon` — the non-shrinking `lucideSearch` glyph (`--mlv-text-tertiary`).
148
+ - `.mlv-select__search-input` — **layout only** (`flex: 1; min-width: 0`); the `bare` `mlv-input` owns its own padding / font / background.
149
+ - `.mlv-select__panel` — the `mousedown`-swallowing wrapper that keeps DOM focus in the search field while pointing at options (no styles of its own).
150
+ - `.mlv-select__empty` — the projected "no results" row inside the panel.
151
+ - `.mlv-select__sr-status` — visually-hidden polite live region; **byte-identical** to `.mlv-combobox__sr-status` (both must stay in sync).
152
+
153
+ #### Providers
154
+
155
+ - `MlvSelectionService` (from `@malva-ui/core/form-utils`) — scoped to the component instance to manage the selected value(s).
156
+ - `MLV_FORM_CONTROL` — connects the control to Malva field/wrapper infrastructure.
157
+
158
+ ---
159
+
160
+ ## Directives
161
+
162
+ ### `MlvSelectListTemplate`
163
+
164
+ **Selector:** `[mlvSelectListTemplate]`
165
+
166
+ **Purpose:** Marker directive — inject `TemplateRef` to supply a full replacement template for the option list. (Currently a marker; the component queries for it but the actual rendering delegates to `MlvDropdownPanel`.)
167
+
168
+ ### `MlvSelectItemTemplate`
169
+
170
+ **Selector:** `[mlvSelectItemTemplate]`
171
+
172
+ **Purpose:** Marks an `<ng-template>` as the custom item template. When present, the template is forwarded to `<mlv-dropdown-panel [itemTemplate]>`, allowing custom rendering of each option row.
173
+
174
+ Template context: the implicit variable is the `MlvSelectOption<T>` object for the row.
175
+
176
+ ### `MlvSelectSelectedTemplate`
177
+
178
+ **Selector:** `[mlvSelectSelectedTemplate]`
179
+
180
+ **Purpose:** Marks an `<ng-template>` as the custom selected-value display inside the trigger button. When present, it replaces the default `{{ displayValue }}` text.
181
+
182
+ Template context: `$implicit` is `T[]` (the array of currently selected raw values).
183
+
184
+ ---
185
+
186
+ ## Services
187
+
188
+ ### `MlvSelectionService` (from `@malva-ui/core/form-utils`)
189
+
190
+ Scoped per `MlvSelect` instance (provided in the component's `providers` array). Manages selected values array and multi/single mode. The component interacts with it via:
191
+
192
+ - `selectionService.multiple.set(...)` — synced from the `multiple` input via `effect()`.
193
+ - `selectionService.compareWith.set(...)` — synced from the `compareWith` input via `effect()`, so the service's membership checks use the control's equality.
194
+ - `selectionService.selectedValues()` — signal returning currently selected raw values.
195
+ - `selectionService.setValues([...])` — replaces selection.
196
+ - `selectionService.clear()` — clears selection.
197
+ - `selectionService.requestFocusFirst()` — requests focus on the first dropdown item (keyboard navigation).
198
+
199
+ ---
200
+
201
+ ## Usage Examples
202
+
203
+ ### Basic single-select with primitive values
204
+
205
+ ```typescript
206
+ import { MlvSelect } from '@malva-ui/core/select';
207
+
208
+ @Component({
209
+ imports: [MlvSelect, ReactiveFormsModule],
210
+ template: ` <mlv-select label="Country" placeholder="Choose a country" [options]="countries" [formControl]="countryControl" /> `,
211
+ })
212
+ export class MyComponent {
213
+ countries = ['United States', 'Canada', 'Mexico'];
214
+ countryControl = new FormControl('');
215
+ }
216
+ ```
217
+
218
+ ### Object options with a custom transform
219
+
220
+ ```typescript
221
+ import { MlvSelect, MlvSelectOptionTransform } from '@malva-ui/core/select';
222
+
223
+ interface User {
224
+ id: number;
225
+ name: string;
226
+ }
227
+
228
+ const userTransform: MlvSelectOptionTransform<User> = (u) => ({ label: u.name, value: u });
229
+
230
+ @Component({
231
+ imports: [MlvSelect, ReactiveFormsModule],
232
+ template: ` <mlv-select label="User" [options]="users" [toOption]="userTransform" [formControl]="userControl" /> `,
233
+ })
234
+ export class MyComponent {
235
+ users: User[] = [
236
+ { id: 1, name: 'Alice' },
237
+ { id: 2, name: 'Bob' },
238
+ ];
239
+ userTransform = userTransform;
240
+ userControl = new FormControl<User | null>(null);
241
+ }
242
+ ```
243
+
244
+ ### Object values that survive serialize/deserialize (`compareWith`)
245
+
246
+ ```html
247
+ <!-- A value loaded from the server is a different object instance than the
248
+ option — compareWith collapses it onto the option, so the label and the
249
+ check-mark agree even when the options arrive after the value. -->
250
+ <mlv-select [options]="users" [toOption]="userTransform" [compareWith]="sameUser" [formControl]="userControl" />
251
+ <!-- sameUser = (a: User, b: User) => a.id === b.id; -->
252
+ ```
253
+
254
+ ### Multi-select with custom item template
255
+
256
+ ```typescript
257
+ @Component({
258
+ imports: [MlvSelect, MlvSelectItemTemplate, NgTemplateOutlet],
259
+ template: `
260
+ <mlv-select [options]="tags" [multiple]="true" [formControl]="tagsControl">
261
+ <ng-template mlvSelectItemTemplate let-option>
262
+ <span class="tag-item">{{ option.label }}</span>
263
+ </ng-template>
264
+ </mlv-select>
265
+ `,
266
+ })
267
+ ```
268
+
269
+ ### Custom selected-value display
270
+
271
+ ```typescript
272
+ @Component({
273
+ imports: [MlvSelect, MlvSelectSelectedTemplate],
274
+ template: `
275
+ <mlv-select [options]="items" [formControl]="ctrl">
276
+ <ng-template mlvSelectSelectedTemplate let-values>
277
+ {{ values.length }} items selected
278
+ </ng-template>
279
+ </mlv-select>
280
+ `,
281
+ })
282
+ ```
283
+
284
+ ### Grouped options (sticky headers)
285
+
286
+ Return a `group` label from `toOption` to cluster options under sticky,
287
+ non-selectable section headers (rendered by the shared `mlv-dropdown-panel`;
288
+ see the dropdown lib docs for the full mechanism). Group headers are skipped by
289
+ keyboard navigation / type-ahead and never enter the value. Plain string arrays
290
+ and ungrouped `MlvSelectOption` arrays are unaffected.
291
+
292
+ ```typescript
293
+ @Component({
294
+ imports: [MlvSelect],
295
+ template: `<mlv-select label="City" [options]="cities" [toOption]="cityToOption" />`,
296
+ })
297
+ export class MyComponent {
298
+ cities = [
299
+ { name: 'Paris', country: 'France' },
300
+ { name: 'Berlin', country: 'Germany' },
301
+ ];
302
+ cityToOption = (c: { name: string; country: string }): MlvSelectOption<typeof c> => ({
303
+ label: c.name,
304
+ value: c,
305
+ group: c.country, // ← options sharing a country cluster under one header
306
+ });
307
+ }
308
+ ```
309
+
310
+ ### Async sources
311
+
312
+ ```html
313
+ <!-- Observable source: the trigger holds the loading variant until the first emission -->
314
+ <mlv-select [options]="users$" [toOption]="userToOption" [compareWith]="sameUser" [formControl]="ctrl" />
315
+
316
+ <!-- Data source: source-side search + lazy paging through the panel's sentinel -->
317
+ <mlv-select [options]="userDataSource" [toOption]="userToOption" [searchDebounce]="300" />
318
+
319
+ <!-- Remote search fn (supersedes [options]); lazy — first invoked on the first open, or
320
+ immediately when a committed value still needs its label -->
321
+ <mlv-select [searchFn]="searchUsers" [toOption]="userToOption" [loading]="resolvingInitialUser()" />
322
+ <!-- searchUsers = (query: string) => this.api.findUsers(query)
323
+ Bind [loading] only to flags about *option* loading. It feeds `_ready`, so an
324
+ unrelated flag (a save in flight, say) puts the trigger into the loading variant
325
+ whenever the committed value is not among the current options. -->
326
+ ```
327
+
328
+ ---
329
+
330
+ ## Dependencies
331
+
332
+ Internal `@malva-ui/*` libraries:
333
+
334
+ - `@malva-ui/core/popup` — `MlvPopup`, `MlvPopupContent`, `MlvPopupContainer`, `MlvPopupPinnedContent` (the searchable dropdown's pinned search row)
335
+ - `@malva-ui/core/dropdown` — `MlvDropdownPanel`, `MlvSelectOption`, `MlvSelectOptionTransform`, `defaultOptionTransform`, `resolveOptions`, `isReconciliationEmit` / `filteredOutCommitted` (the shared aria reconciliation guard), `MlvOptionsAdapter` + `MlvOptionsInput` / `MlvOptionsSearchFn` (the shared source adapter behind `options` / `searchFn`), `filterOptions` + `MlvOptionMatcher` (searchable local filtering), `MlvActiveDescendant` + `optionId` (the shared activedescendant bookkeeping and option-id format)
336
+ - `@malva-ui/core/form-utils` — `MlvSignalFormControlBase`, wrapper primitives, `MlvSelectionService`, `toAriaValues`, `fromAriaValues`
337
+ - `@malva-ui/core/input` — `MlvInput` (the `bare` in-dropdown search field; carries `role="combobox"` and, via `[required]`, `aria-required` while the searchable dropdown is open)
338
+ - `@malva-ui/core/loader` — `MlvLoader` (the loading variant's circular spinner in place of the chevron)
339
+ - `@malva-ui/i18n` — `MLV_SELECT_I18N` (`placeholder`, `searchPlaceholder`, `noResults`, `loading`, `resultsAvailable`), `MLV_FORM_UTILS_I18N` (`clear`), `MlvI18nResolverService` (the ICU `resultsAvailable`)
340
+ - `@malva-ui/cdk/accessibility` — `MlvClick`
341
+ - `@malva-ui/cdk/utils` — `MlvResizeObserver`
342
+ - `@malva-ui/styles` — SCSS mixins (`mixins.base()`)
343
+
344
+ Angular / third-party:
345
+
346
+ - `@angular/common` — `NgTemplateOutlet`
347
+ - `@angular/cdk/overlay` — `ConnectedPosition`
348
+ - `@lucide/angular` — `LucideChevronDown`, `LucideSearch` icons
349
+
350
+ ---
351
+
352
+ ## Accessibility notes (updated)
353
+
354
+ - The trigger keeps `role="combobox"` via `MlvClick`'s `[hostRole]="_outerIsCombobox() ? 'combobox' : 'button'"` (the directive no longer forces `button` on its own). While the **searchable** dropdown is open the combobox role moves onto the in-dropdown search input and the trigger steps down to `role="button"` — never to no role at all — so exactly one `role="combobox"` is ever exposed while every ARIA attribute stays valid for the role that carries it. `aria-expanded` / `aria-haspopup` / `aria-controls` are unconditional (valid on both roles); only `aria-required` is gated off for the button phase, and it moves onto the search input (`[required]="required()"`) so a required searchable select never stops exposing it. See _Searchable dropdown_.
355
+ - `MlvClick` receives `[disabled]="computedDisabled()"` so a disabled trigger is removed from the tab order (`tabindex="-1"`); `aria-disabled` renders only when disabled. `openDropdown()` also refuses to focus a disabled trigger — `tabindex="-1"` still accepts programmatic focus, so the label's click target would otherwise land the caret on a disabled field.
356
+ - The visible `<mlv-label>` is linked via `aria-labelledby` (a `<label for>` cannot name the `<div>` trigger) — `labelId` computed added.
357
+ - Closed-trigger keyboard: ArrowUp / ArrowDown / Home / End open the dropdown (shared `_openFromKey`; no-op while inert). The focus-first request runs in roving mode only — a searchable dropdown hands focus to its search field instead.
358
+ - A polite `aria-live` status region (`.mlv-select__sr-status`) announces the filtered result count / "No results" while the searchable dropdown is open — both resolved from `MLV_SELECT_I18N` (`resultsAvailable` is an ICU plural). It is empty while closed or non-searchable, so no stale count is read out.
359
+ - The loading variant sets `aria-busy` on the trigger and gives the `mlv-loader` an `ariaLabel` from `MLV_SELECT_I18N.loading`. The trigger is **not** disabled — it keeps `tabindex="0"` and stays reachable and readable to AT while its value resolves; only the open paths are suppressed.
360
+
361
+ ---
362
+
363
+ ## Async sources (2026-08)
364
+
365
+ `options` and `searchFn` are normalised by the shared **`MlvOptionsAdapter<T>`** (`@malva-ui/core/dropdown`, `_adapter`) — the same engine behind `mlv-combobox` and `[mlvAutocomplete]`. It exposes `mode()`, `items()`, `loading()`, `loadingMore()`, `ready()`, `hasMore()`, `search()`, `ensureLoaded()`, `loadMore()`; see `libs-dropdown.md` → _Options adapter_ for the per-source contract.
366
+
367
+ - **Local mode** (`readonly T[]`, `Observable<readonly T[]>`) — the consumer owns filtering. A plain array is `ready()` from the first tick, so a synchronous `options` binding behaves exactly as before.
368
+ - **Remote mode** (`MlvDataSource<T>`, or any `searchFn`) — the source owns filtering and `filteredOptions` renders `items` as-is. With `searchable`, the in-dropdown search field forwards its query through `_adapter.search()`; without it, remote mode is about async delivery and paging rather than querying.
369
+ - **Debounce.** `searchDebounce` (default `200`ms) applies to remote searches only.
370
+ - **Lazy first load.** A `searchFn` is not called until it is needed: a constructor effect calls `_adapter.ensureLoaded()` on the first `isOpen()`. The exception is the adapter's `eager` gate — `hasValue() && !_allValuesMatched() && !_eagerDone()` — which fires the initial load immediately when a committed value still has no resolvable label, so the loading variant resolves without the user opening the list. `_eagerDone` latches `true` the first time a **remote** source reports `ready()` and never flips back: an inline-arrow `searchFn` (`[searchFn]="(q) => api.find(q)"`) is a fresh reference on every change detection run, which re-arms the adapter's lazy gate on every pass, and without the latch a still-unmatched committed value would make each pass fire another request whose result triggers the next pass. The mode check in the latch matters — an array source is `ready()` from the first tick, so latching on readiness alone would disarm the gate before a late-bound `searchFn` ever became the active branch.
371
+ - **The list stays open while loading.** `_panelLoading` (`_adapter.loading() || loading()`) drives the panel's top spinner row and its `--loading` modifier; the panel keeps previous options mounted, readable and interactive (it recedes the default rows' colour rather than dimming them), so a landing response never blanks the dropdown or closes it.
372
+ - **Paging.** `[hasMore]`, `[loadingMore]` and `(loadMore)` are bound straight off the adapter, so an `MlvDataSource` with a finite `perPage` grows the list through the panel's infinite-scroll sentinel. The unpaged `MlvSelectDataSource` simply reports `hasMore: false`.
373
+ - **The reconciliation guard is what makes this safe.** Every async landing changes the _rendered_ option set under a possibly-open panel, which is exactly when aria re-emits `valueChange`; `selectOption` routes those through the shared guard (see _Reconciliation-emit guard_ below), so a committed value survives a source swapping its items out from under the panel.
374
+ - **Late labels resolve themselves.** The `_applyPendingValues` effect tracks `resolvedOptions()`, so a value written before its options arrive re-normalises onto the real option instance as soon as the source answers — the trigger's `displayValue` and the panel's check-mark then agree.
375
+
376
+ ## Loading variant (`--loading`)
377
+
378
+ `_awaitingValueLabel()` = `hasValue() && !_ready() && !_allValuesMatched()` — a value is committed but no option resolves its label yet (the classic "deserialized id, options still in flight" case). While it holds:
379
+
380
+ - the host carries `mlv-select--loading` (`cursor: progress` on the trigger),
381
+ - the trigger sets `aria-busy` but keeps `tabindex="0"` — **tabbable but inert**,
382
+ - the trigger renders `MLV_SELECT_I18N.loading` instead of the raw value, so a still-unresolved object never leaks a `String(item)` label into the field,
383
+ - the chevron is replaced by the `mlv-loader` spinner (the toggle affordance would be a dead control),
384
+ - `_isInert()` (`computedDisabled() || _awaitingValueLabel()`) returns `true`, so every **open** path is suppressed — `toggleDropdown()`, `openDropdown()` and `_openFromKey()`.
385
+
386
+ Three things deliberately keep working while the variant holds:
387
+
388
+ - **The inline clear X stays rendered** (`_showClear()` is _not_ gated on `_awaitingValueLabel()`). With every open path inert it is the only escape hatch left when a source never answers, and `onClear()` works there — dropping the value clears `hasValue()`, which ends the variant. Combobox parity.
389
+ - **Closing is never blocked.** `toggleDropdown()` short-circuits on `isOpen()` before the inert check, so a panel opened before the variant engaged (a late `[loading]`, a value written under an open list) is still dismissable from its own trigger.
390
+ - **`openDropdown()` still focuses the trigger** before the inert early-return. It is the `<mlv-label>` click target, and clicking a field's label must always land focus on that field — from there the X is one Tab away. A **disabled** field is the exception (`computedDisabled()` returns before the focus call): its trigger carries `tabindex="-1"`, which would still accept programmatic focus.
391
+
392
+ The variant clears as soon as the source is `ready()` **or** every committed value matches an option. Arrays are `ready()` immediately, so a synchronous `options` binding never shows it.
393
+
394
+ > **Multi-select:** `_allValuesMatched` uses `.every()`, so **one** unresolved value puts the whole trigger into the variant — by design. The trigger renders a single summary string (`displayValue`), which would otherwise under-report the selection (`"2 items selected"` while only one is known) or leak a raw label for the unresolved entry.
395
+
396
+ ---
397
+
398
+ ## `@angular/aria` integration (Task 2.5)
399
+
400
+ The dropdown popup is the **migrated `@angular/aria` listbox** — `mlv-select` renders `mlv-dropdown-panel`, which host-applies `@angular/aria`'s `ngListbox`/`ngOption` (via `MlvListSelectable`/`MlvListItemSelectable`). No aria selectors are bound in `mlv-select` itself; the panel is consumed as-is.
401
+
402
+ **Trigger strategy — manual `<div role="combobox">` trigger kept (not `ngCombobox`).** In aria 22.0.5 there is no `ngComboboxInput`; `[ngCombobox]` is the trigger directive and can sit on a non-editable `<div>`. A full `ngCombobox` restructure was rejected because aria's `ComboboxPopup`/`ComboboxWidget` render the popup via aria's own `DeferredContent`, which conflicts with the CDK-overlay positioning (`mlv-popup`) the design pins, and aria's combobox expects the listbox in `activedescendant` focus mode while the shared panel/list use roving focus (consumed as-is). The existing manual trigger already satisfies the full a11y contract, so the migration is panel-only.
403
+
404
+ **Forms value ↔ aria bridge.** `mlv-select` exposes `T` single / `T[]` multi / `null`, while the aria listbox always models selection as a flat array. The bridge helpers translate between them:
405
+
406
+ - External `value` model changes → `toAriaValues(value)` feed `MlvSelectionService`.
407
+ - `selectOption(values)` → `fromAriaValues(values, multiple())` collapses the aria array back to the public forms value.
408
+
409
+ **Value ↔ options normalisation (`compareWith`).** A written value is not fed to the selection service verbatim. The forms-value effect stashes `toAriaValues(this.value())` in `_pendingValues`, then `_applyPendingValues()` replaces each pending value with the **option's own instance** whenever `compareWith` matches one (`opts.find((o) => compare(o.value, v))?.value ?? v`). Two consequences:
410
+
411
+ - A deserialised object (`{ id: 2, name: 'stale' }`) collapses onto the real option, so the check-mark and the trigger's `displayValue` agree instead of rendering a stale/`String(item)` label.
412
+ - The effect reads `resolvedOptions()`, so it **re-runs when the options arrive after the value** — a preset value resolves its label as soon as its option loads. Later tasks (async sources, searchable mode) rely on that re-run.
413
+
414
+ `compareWith` is also pushed into `MlvSelectionService.compareWith` by its own effect, so the service's membership checks (`isSelected`, `deselect`) use the same equality.
415
+
416
+ **Reconciliation-emit guard.** `@angular/aria`'s `Listbox` reconciles its `value` model against the currently **rendered** options and re-emits `valueChange` whenever that set changes — not only on user interaction. `selectOption` therefore routes every emit through the shared `isReconciliationEmit()` / `filteredOutCommitted()` helpers from `@malva-ui/core/dropdown` (the same pair `mlv-combobox` uses), passing `_visibleValues()` (`filteredOptions().map((o) => o.value)`) as the visible set and `compareWith()` as the comparator:
417
+
418
+ - An emit that adds nothing and only drops values whose option is **not rendered** is reconciliation → **ignored entirely** (no value write, no close, no touch). An async initial load landing while the panel is open makes aria reconcile against the previous (empty) set and re-emit `[]`; unguarded, that wiped the committed value.
419
+ - A genuine deselect of a **rendered** option is unaffected — single-select still commits `null`.
420
+ - A genuine multi-select pick re-adds the committed values aria dropped only because their option is not rendered, so earlier picks survive an option-set change.
421
+
422
+ The guard applies unconditionally (not only while filtering), because the "options changed under an open panel" case is exactly when the noise appears. `_visibleValues()` reads `filteredOptions()`, so in searchable mode the visible set narrows with the query — which is exactly when aria drops the committed value from its model.
423
+
424
+ `selectOption` only decides _what_ to write; the write itself lives in the private `_commitSelection(next)`, shared with the search field's Enter (see _Searchable dropdown_). It is the single place that closes + refocuses for single-select, writes the forms value, syncs the selection service and marks touched.
425
+
426
+ ---
427
+
428
+ ## Searchable dropdown (2026-08)
429
+
430
+ `searchable` stamps a **search field as the first row of the open dropdown** — the select's answer to a long option list, without turning it into a `mlv-combobox` (the trigger stays a summary button; the search lives inside the popup and disappears with it).
431
+
432
+ **Anatomy.** The search row is projected into the popup's **pinned slot**: `<ng-template mlvPopupPinnedContent>` (stamped only when `searchable()`) holds `.mlv-select__search` (a `lucideSearch` icon + a `bare` `mlv-input`, `id="<id>-search"`), which the popup renders as `.mlv-popup__pinned` directly above `.mlv-popup__scrollbar`. `mlvPopupContent` then holds `.mlv-select__panel` wrapping the `mlv-dropdown-panel`, and the `.mlv-select__empty` no-results row is projected into the panel's empty slot. A visually-hidden `.mlv-select__sr-status` live region sits next to the popup container.
433
+
434
+ > **Why pinned, not sticky.** The row started life as `position: sticky; top: 0` inside the popup's scroll viewport and could still scroll out of view on long lists — sticky-in-a-scroll-container also depends on nothing between the row and the viewport establishing overflow/containment. The popup slot moves it out of the scroll region altogether: it keeps its own height, the scroll region shrinks around it, and the row is unscrollable by construction. Full-screen sheets get the same treatment — the row lands under `.mlv-popup__header`, still inside the sheet's focus trap. See `libs-popup.md` → _Pinned-content slot_.
435
+
436
+ **Exactly one `role="combobox"`.** `_outerIsCombobox = !(searchable() && isOpen())`. While the searchable dropdown is open the trigger **steps down to `role="button"`** and the search input becomes the combobox (`role="combobox"`, `aria-expanded="true"`, `aria-haspopup="listbox"`, `aria-autocomplete="list"`, `aria-controls="<id>-listbox"`, `aria-activedescendant`, an `aria-label` from the field's `label` or resolved placeholder, and `[required]="required()"` → `aria-required` on the bare input). Closing hands `combobox` straight back. A non-searchable select never loses it.
437
+
438
+ The trigger keeps `aria-expanded`, `aria-haspopup="listbox"` and `aria-controls` **unconditionally** — all three are valid on `button` and semantically correct there (a button that opened a popup). Dropping the role to `null` instead would leave a bare `<div>` carrying ARIA state that no role permits. Only `aria-required` is gated (`_outerIsCombobox() && required()`), because it is not allowed on `button` — and it is not lost, only **moved**: the search input carries it while it is the live combobox, so a required searchable select still exposes `aria-required` on the element that owns the role. Net effect: the non-searchable path's trigger ARIA is byte-identical to before this feature.
439
+
440
+ **Activedescendant keyboard model.** The panel is pinned to `focusMode="activedescendant"` while searchable (`'roving'` otherwise), so DOM focus stays in the search input and the highlighted row is tracked by index in the shared `MlvActiveDescendant` (`filteredOptions().length` read lazily). `_activeOptionId` computes `optionId(listboxId(), index)` — the same helper the panel stamps on each row, so the input's `aria-activedescendant` and the `.mlv-dropdown-panel__item--active` highlight can never drift.
441
+
442
+ A constructor `effect` watches `filteredOptions().length` and resets the active index (untracked) whenever it has fallen out of range. A remote response landing over stale results — or any narrowing of the list — would otherwise leave `aria-activedescendant` pointing at a row that no longer exists, and the next arrow press stepping from a phantom position.
443
+
444
+ | Key | Behaviour |
445
+ | ------------------- | ---------------------------------------------------------------------------------------------------------------------- |
446
+ | type | `searchQuery` updates, active index resets; local sources filter instantly, remote ones are asked (debounced) |
447
+ | ArrowDown / ArrowUp | move the active option with wrap-around (first move from "none" lands on first / last) |
448
+ | Home / End | activate the first / last option |
449
+ | Enter | commit the active option; **single** closes + refocuses the trigger, **multi** toggles it and stays open (index reset) |
450
+ | Escape | close (the close resets the query) |
451
+ | Tab / Shift+Tab | close and return focus to the trigger; the default is prevented |
452
+
453
+ Tab prevents its default deliberately: the search field lives in a **detached overlay**, so a native Tab would move focus to whatever follows the overlay in the DOM rather than to the field after the select. Closing and restoring the trigger puts the user back where the tab sequence expects them.
454
+
455
+ **Focus handoff.** `(afterOpened)` → `_onPopupOpened()` focuses the search field via `document.getElementById(_searchInputId())` (the input is stamped inside a detached embedded view, so view queries cannot reach it — the same pattern `mlv-combobox` / `mlv-day-picker` use). `(afterClosed)` → `_onPopupClosed()` restores focus to the trigger and, when searchable, resets the active index and the query. `_openFromKey`'s `requestFocusFirst()` is skipped while searchable — pulling DOM focus onto an option would break the model.
456
+
457
+ **Local vs remote.** `filteredOptions` filters `resolvedOptions` through the shared `filterOptions(resolved, searchQuery(), matcher())` **only** when searchable over a local source (array / observable); a remote source (`MlvDataSource` / `searchFn`) renders its items as-is and receives the query through `_adapter.search(value)`. Filtering remote results locally as well would hide server matches the local matcher dislikes and empty the list while a newer query is in flight. For the same reason `_highlightQuery` (the `<mark>` emphasis) is local-mode only. Closing re-asks a remote source for `''` once, so a blank field never sits above a list still filtered by the previous query.
458
+
459
+ **The `mousedown` guard.** `.mlv-select__panel` swallows `mousedown` (`(mousedown)="_onPanelMousedown($event)"`) so clicking an option or the scrollbar cannot blur the search input — the activedescendant model and the open state both depend on focus staying there. It is a genuine no-op when not searchable. The pinned search row is deliberately **outside** that wrapper (it is a sibling slot, not panel content): swallowing its own `mousedown` would stop a click from placing the caret in the input.
460
+
461
+ > It must stay a **method**. The obvious inline form, `(mousedown)="searchable() && $event.preventDefault()"`, evaluates to `false` on the non-searchable path, and Angular treats a `false` listener return as `preventDefault()` (`wrapListener` → `listenerFn(e) !== false`). That silently swallowed the mousedown default for **every** select dropdown — roving focus could not transfer to the clicked option and text selection was blocked. Pinned by the non-searchable spec, which asserts `defaultPrevented === false`.
462
+
463
+ **The popup scroll viewport becomes a tab stop.** `mlv-scrollbar` makes its viewport tabbable (`tabindex="0"`) only when its content is not — and in searchable mode the scroll region holds just the activedescendant listbox (`tabindex="-1"`), because the search input is pinned **outside** it. So the popup's viewport does take `tabindex="0"` here (a non-searchable select's roving listbox keeps the viewport at `-1`). It is not reachable by keyboard in practice: Tab from the search input is intercepted (`preventDefault` → close + refocus the trigger), so focus never advances into the overlay. The stop exists for the scroll region's own sake — a mouse-less user who reaches the overlay another way can still scroll it.
464
+
465
+ **Divergence from `mlv-combobox`: Enter in multi-select keeps the query.** A multi-select select commits the active option on Enter and **leaves `searchQuery` as it is** (only the active index resets), while `mlv-combobox` clears its query after a multi commit. Intentional: the select's search field is a _filter box_ over the list — several matches of one query are usually toggled in a row — whereas the combobox's input _is_ the value field, so it has to empty itself to type the next value.
466
+
467
+ **Announcements.** `_resultsAnnouncement` renders into `.mlv-select__sr-status` (`role="status" aria-live="polite"`): the ICU `resultsAvailable` count, or `noResults` when the query matches nothing. Empty while closed or non-searchable.
468
+
469
+ **i18n keys used:** `searchPlaceholder` (search field placeholder), `noResults` (the `__empty` row + announcement), `resultsAvailable` (ICU `{count, plural, …}`, resolved via `MlvI18nResolverService`), plus the existing `placeholder` / `loading`.
470
+
471
+ ```html
472
+ <!-- Local: type-to-filter over the bound array -->
473
+ <mlv-select label="Country" searchable [options]="countries" [(value)]="country" />
474
+
475
+ <!-- Custom local matcher (secondary field) -->
476
+ <mlv-select searchable [options]="users" [toOption]="userToOption" [matcher]="matchNameOrEmail" />
477
+
478
+ <!-- Remote: the search field drives the source, not a local filter -->
479
+ <mlv-select searchable [searchFn]="searchUsers" [toOption]="userToOption" [searchDebounce]="300" />
480
+ ```
481
+
482
+ > **A non-searchable select is untouched.** No search row, no `__empty` projection, roving focus (`activeIndex` pinned to `-1`, `highlightQuery` empty), the trigger keeps its combobox role at all times, and `filteredOptions` is `resolvedOptions`.
483
+
484
+ ---
485
+
486
+ ## Testing
487
+
488
+ - `describe('MlvSelect — compareWith + reconciliation guard')` (5 tests): a structurally-equal written value normalises onto the option instance (`selectedValues()[0]` is the option object, `displayValue` is its label); the normalisation re-runs when options arrive **after** the value; an aria emit that only drops a value whose option is not rendered is ignored (value + selection intact); a genuine deselect of a rendered option still commits `null` in single-select; a genuine multi-select pick re-adds the committed value aria dropped only because it was not rendered.
489
+ - `describe('MlvSelect — async options + loading variant')` (10 tests): a preset value awaiting its label from an `Observable` source renders the loading variant (host class, `aria-busy`, `tabindex="0"`, the `mlv-loader` inside `.mlv-select__arrow`, the i18n loading text and no raw `[object …]` label) and `toggleDropdown()` cannot open it — then the emission resolves the real label, drops the class and `aria-busy`, and the trigger opens again; no value (or a value that already matches an option) never enters the variant; the panel's `__loading` spinner row shows inside the **open** dropdown while the source loads and gives way to the options without closing; the consumer's `[loading]` input drives both the variant and the panel spinner row inside an already-open dropdown; the clear X stays rendered while awaiting, `openDropdown()` still focuses the trigger there without opening, and `onClear()` ends the variant with a `null` value; a dropdown opened before the variant engaged still closes from its own trigger; a source swapping its items out from under an open panel leaves the committed value and the open state intact (the shared reconciliation guard); a paged `MlvDataSource` (local `PagedTagSource` stub, `perPage` 2 over 4 items, resolving only on an explicit `flush()`) shows the top spinner for page one, then 2 options + the sentinel, then the `__loading-more` row (options unchanged) while page two is in flight, then all 4 options; a `searchFn` with a preset value is called once with `''` **eagerly** (no open needed), holds the variant until its result contains the matching option, and is not re-run by a later `openDropdown()` (`ensureLoaded` idempotent); and trigger `keydown` `ArrowDown` / `Home` open the dropdown while an `ArrowDown` during the loading variant does not.
490
+ - `describe('MlvSelect — searchable')` (16 tests): the search row is inside `.mlv-popup__pinned`, precedes `.mlv-popup__scrollbar` in DOM order, is **not** inside `.mlv-scrollbar__viewport` (the listbox is), is focused after the popup opens (`document.activeElement.id === 'fruit-search'`) and shows the i18n placeholder; exactly one `role="combobox"` exists across the host **and** the overlay (trigger while closed, carrying `aria-required` from the host's `required` → search input while open, the trigger stepping down to `role="button"` while keeping `aria-expanded`/`aria-haspopup`/`aria-controls` and dropping only `aria-required`, which the search input now carries → `combobox` again on close); typing filters locally, emphasises the match (`.mlv-dropdown-panel__match`) and falls back to the `.mlv-select__empty` i18n row; a custom `matcher` (startsWith) narrows differently from the default substring match; an explicit `searchPlaceholder` beats the i18n default; ArrowDown drives `aria-activedescendant` + the `--active` highlight and Enter commits (single closes and refocuses the trigger); `Home`/`End` jump to the ends of the filtered list; multi-select Enter toggles the active option on then off and keeps the dropdown open; an option **click** still selects while the `.mlv-select__panel` wrapper swallows the `mousedown` (`defaultPrevented === true`), so the dropdown stays open with focus still in the search field; Escape closes and resets the query, and Tab closes and returns focus to the trigger; a remote `searchFn` is called with `''` on open then with each query, keeps stale options mounted under the `--loading` modifier without closing, and swaps them when the response lands; a response that **shrinks** the list past a navigated index (3 rows with the last active → 2 rows) clears `aria-activedescendant` and the next ArrowDown restarts at index 0 — discriminating, because a surviving stale index would wrap modulo the new count onto index 1 instead; grouped options keep their sticky headers with the pinned search row rendered outside the scroll region that holds the whole grouped listbox, and typing filters within the groups (one header survives); the polite `.mlv-select__sr-status` region announces `3 results available`, re-announces `1 result available` as the query narrows and `No results found` when it matches nothing; and a non-searchable select renders no search row and no `__empty` row, keeps `role="combobox"` + `aria-required` on its trigger, renders the listbox in roving mode (`tabindex="-1"`, no `aria-activedescendant`) and — critically — leaves the panel `mousedown` default **unprevented**. Because the popup's `afterClosed` only fires once the leave animation completes (jsdom never fires `animationend`), the close-path assertions drive it through a `finishClose()` helper, as the existing full-screen spec does.
491
+ - `describe('MlvSelect') > trigger accessibility` also pins that `openDropdown()` does **not** focus a disabled trigger (its `tabindex="-1"` would still accept programmatic focus) and does not open.
492
+
493
+ ## Mobile fullscreen
494
+
495
+ The dropdown `mlv-popup` is wired to `[mobileMode]="mobileMode()"` (default `'auto'`) and `[mobileTitle]="_resolvedMobileTitle()"` (`mobileTitle` input → `label` → resolved placeholder). Below the `md` breakpoint (< 768px) the option list opens as a full-screen sheet with a header bar (title + close button), scroll-locked page, and slide-up animation; above it the dropdown stays trigger-anchored (byte-identical to before). The select trigger is a plain `role="combobox"` button and the popup is the whole interaction surface, so the popup's `cdkTrapFocus` (engaged when `isFullscreen()`) composes cleanly — selection / Escape / backdrop / X all close through the `opened` model, and `(afterClosed)="_onPopupClosed()"` restores focus to the trigger (and resets the search, when `searchable`). Consumers can override via the `mobileMode` / `mobileTitle` inputs (e.g. `mobileMode="off"` to keep the dropdown always anchored). See `libs-popup.md` → _Mobile fullscreen inputs_.
496
+
497
+ > **Contrast with `mlv-combobox`:** the combobox also supports full-screen mode (`mobileMode="auto"`), but composes it differently — its search `mlv-input` lives in the trigger row outside the overlay panel, so it projects an **in-sheet search input** into the popup's `[mlvPopupHeaderContent]` slot to keep type-to-filter working behind the sheet's solid backdrop + focus trap. `mlv-select`'s trigger is a plain button and its dropdown popup is the whole interaction surface, so it needs no header slot — even with `searchable`, whose search field is already inside the popup (in the `[mlvPopupPinnedContent]` slot, which renders under the sheet's header and inside its focus trap). See `libs-combobox.md` → _Mobile fullscreen (in-sheet search input)_.
498
+
499
+ ## Inline clear (2026-07)
500
+
501
+ - `hasValue` = selection non-empty; `ownsClearButton = true`; `_showClear` gates the affordance (clearable + value + interactive). It is deliberately **not** gated on `_awaitingValueLabel()` — while the loading variant holds, every open path is inert, so the X is the only escape hatch for a source that never answers (combobox parity). See _Loading variant_.
502
+ - `onClear()` clears the selection, writes the collapsed forms value (`null` single / `[]` multi), and marks touched.
503
+ - The X is a DOM **sibling** of the `role="combobox"` trigger (a button nested inside it would trip nested-interactive), CSS-overlaid just before the chevron (`.mlv-select__clear`); the trigger reserves space via `--with-clear` padding.
504
+
505
+ ---
506
+
507
+ ## Field surface (2026-08)
508
+
509
+ - `ariaLabel` moved to `MlvSignalFormUiControlBase`; `MlvSelect` no longer declares it. Behaviour is unchanged: it is applied to the `role="combobox"` trigger only when no visible `label` is set (a visible label wins through `aria-labelledby`).
510
+ - Inherited `required` renders the `mlv-label` marker and sets `aria-required` on the trigger — and, while a **searchable** dropdown is open, on the in-dropdown search input instead (the element that owns `role="combobox"` then).
511
+ - Inherited `description` renders `<mlv-description>` below the control; the trigger's `aria-describedby` is the base's `_describedBy()`.
512
+ - `<mlv-message>` now carries `_messageId()`, so the describedby reference resolves.