@malva-ui/core 0.1.13 → 0.1.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS.md +4 -1
- package/README.md +15 -0
- package/docs/ai/avatar.md +2 -0
- package/docs/ai/breadcrumb.md +67 -7
- package/docs/ai/button.md +74 -19
- package/docs/ai/card.md +8 -6
- package/docs/ai/chat.md +59 -45
- package/docs/ai/checkbox.md +12 -0
- package/docs/ai/combobox.md +18 -2
- package/docs/ai/copy-to-clipboard.md +1 -1
- package/docs/ai/core.md +15 -0
- package/docs/ai/data-table.md +89 -54
- package/docs/ai/dialog.md +76 -67
- package/docs/ai/drawer.md +15 -12
- package/docs/ai/dropdown.md +24 -19
- package/docs/ai/empty-state.md +3 -3
- package/docs/ai/filter.md +24 -5
- package/docs/ai/form-utils.md +160 -5
- package/docs/ai/icon-toggle.md +160 -0
- package/docs/ai/input.md +30 -0
- package/docs/ai/layout.md +23 -0
- package/docs/ai/list.md +10 -6
- package/docs/ai/menu.md +75 -1
- package/docs/ai/page.md +220 -60
- package/docs/ai/radio.md +9 -0
- package/docs/ai/scrollbar.md +30 -8
- package/docs/ai/segmented.md +35 -35
- package/docs/ai/select.md +30 -5
- package/docs/ai/sidebar.md +45 -27
- package/docs/ai/switch.md +114 -19
- package/docs/ai/table.md +69 -0
- package/docs/ai/tabs.md +2 -1
- package/docs/ai/tile.md +311 -85
- package/docs/ai/timeline.md +63 -39
- package/docs/ai/tokenizer.md +21 -5
- package/docs/ai/tooltip.md +5 -5
- package/docs/ai/view-variant.md +75 -0
- package/fesm2022/malva-ui-core-accordion.mjs +167 -0
- package/fesm2022/malva-ui-core-accordion.mjs.map +1 -0
- package/fesm2022/malva-ui-core-action-bar.mjs +111 -0
- package/fesm2022/malva-ui-core-action-bar.mjs.map +1 -0
- package/fesm2022/malva-ui-core-alert.mjs +173 -0
- package/fesm2022/malva-ui-core-alert.mjs.map +1 -0
- package/fesm2022/malva-ui-core-autocomplete.mjs +775 -0
- package/fesm2022/malva-ui-core-autocomplete.mjs.map +1 -0
- package/fesm2022/malva-ui-core-avatar-group.mjs +224 -0
- package/fesm2022/malva-ui-core-avatar-group.mjs.map +1 -0
- package/fesm2022/malva-ui-core-avatar.mjs +247 -0
- package/fesm2022/malva-ui-core-avatar.mjs.map +1 -0
- package/fesm2022/malva-ui-core-badge.mjs +122 -0
- package/fesm2022/malva-ui-core-badge.mjs.map +1 -0
- package/fesm2022/malva-ui-core-bottom-nav.mjs +161 -0
- package/fesm2022/malva-ui-core-bottom-nav.mjs.map +1 -0
- package/fesm2022/malva-ui-core-breadcrumb.mjs +494 -0
- package/fesm2022/malva-ui-core-breadcrumb.mjs.map +1 -0
- package/fesm2022/malva-ui-core-button.mjs +406 -0
- package/fesm2022/malva-ui-core-button.mjs.map +1 -0
- package/fesm2022/malva-ui-core-calendar.mjs +938 -0
- package/fesm2022/malva-ui-core-calendar.mjs.map +1 -0
- package/fesm2022/malva-ui-core-card.mjs +164 -0
- package/fesm2022/malva-ui-core-card.mjs.map +1 -0
- package/fesm2022/malva-ui-core-chat.mjs +825 -0
- package/fesm2022/malva-ui-core-chat.mjs.map +1 -0
- package/fesm2022/malva-ui-core-checkbox.mjs +272 -0
- package/fesm2022/malva-ui-core-checkbox.mjs.map +1 -0
- package/fesm2022/malva-ui-core-chip.mjs +176 -0
- package/fesm2022/malva-ui-core-chip.mjs.map +1 -0
- package/fesm2022/malva-ui-core-color-picker.mjs +1204 -0
- package/fesm2022/malva-ui-core-color-picker.mjs.map +1 -0
- package/fesm2022/malva-ui-core-combobox.mjs +945 -0
- package/fesm2022/malva-ui-core-combobox.mjs.map +1 -0
- package/fesm2022/malva-ui-core-copy-to-clipboard.mjs +255 -0
- package/fesm2022/malva-ui-core-copy-to-clipboard.mjs.map +1 -0
- package/fesm2022/malva-ui-core-data-table.mjs +2696 -0
- package/fesm2022/malva-ui-core-data-table.mjs.map +1 -0
- package/fesm2022/malva-ui-core-date-range-picker.mjs +276 -0
- package/fesm2022/malva-ui-core-date-range-picker.mjs.map +1 -0
- package/fesm2022/malva-ui-core-day-picker.mjs +131 -0
- package/fesm2022/malva-ui-core-day-picker.mjs.map +1 -0
- package/fesm2022/malva-ui-core-dialog-routable-dialog-CvjXMtlD.mjs +94 -0
- package/fesm2022/malva-ui-core-dialog-routable-dialog-CvjXMtlD.mjs.map +1 -0
- package/fesm2022/malva-ui-core-dialog.mjs +1223 -0
- package/fesm2022/malva-ui-core-dialog.mjs.map +1 -0
- package/fesm2022/malva-ui-core-divider.mjs +80 -0
- package/fesm2022/malva-ui-core-divider.mjs.map +1 -0
- package/fesm2022/malva-ui-core-drawer-routable-drawer-qUk6Etnx.mjs +94 -0
- package/fesm2022/malva-ui-core-drawer-routable-drawer-qUk6Etnx.mjs.map +1 -0
- package/fesm2022/malva-ui-core-drawer.mjs +814 -0
- package/fesm2022/malva-ui-core-drawer.mjs.map +1 -0
- package/fesm2022/malva-ui-core-dropdown.mjs +994 -0
- package/fesm2022/malva-ui-core-dropdown.mjs.map +1 -0
- package/fesm2022/malva-ui-core-empty-state.mjs +50 -0
- package/fesm2022/malva-ui-core-empty-state.mjs.map +1 -0
- package/fesm2022/malva-ui-core-expand.mjs +130 -0
- package/fesm2022/malva-ui-core-expand.mjs.map +1 -0
- package/fesm2022/malva-ui-core-file-upload.mjs +451 -0
- package/fesm2022/malva-ui-core-file-upload.mjs.map +1 -0
- package/fesm2022/malva-ui-core-filter.mjs +1627 -0
- package/fesm2022/malva-ui-core-filter.mjs.map +1 -0
- package/fesm2022/malva-ui-core-form-utils-testing.mjs +39 -0
- package/fesm2022/malva-ui-core-form-utils-testing.mjs.map +1 -0
- package/fesm2022/malva-ui-core-form-utils.mjs +977 -0
- package/fesm2022/malva-ui-core-form-utils.mjs.map +1 -0
- package/fesm2022/malva-ui-core-form.mjs +283 -0
- package/fesm2022/malva-ui-core-form.mjs.map +1 -0
- package/fesm2022/malva-ui-core-icon-toggle.mjs +120 -0
- package/fesm2022/malva-ui-core-icon-toggle.mjs.map +1 -0
- package/fesm2022/malva-ui-core-input.mjs +375 -0
- package/fesm2022/malva-ui-core-input.mjs.map +1 -0
- package/fesm2022/malva-ui-core-kbd.mjs +131 -0
- package/fesm2022/malva-ui-core-kbd.mjs.map +1 -0
- package/fesm2022/malva-ui-core-layout.mjs +212 -0
- package/fesm2022/malva-ui-core-layout.mjs.map +1 -0
- package/fesm2022/malva-ui-core-link.mjs +89 -0
- package/fesm2022/malva-ui-core-link.mjs.map +1 -0
- package/fesm2022/malva-ui-core-list.mjs +413 -0
- package/fesm2022/malva-ui-core-list.mjs.map +1 -0
- package/fesm2022/malva-ui-core-loader.mjs +141 -0
- package/fesm2022/malva-ui-core-loader.mjs.map +1 -0
- package/fesm2022/malva-ui-core-menu.mjs +2540 -0
- package/fesm2022/malva-ui-core-menu.mjs.map +1 -0
- package/fesm2022/malva-ui-core-notification.mjs +201 -0
- package/fesm2022/malva-ui-core-notification.mjs.map +1 -0
- package/fesm2022/malva-ui-core-number-input.mjs +404 -0
- package/fesm2022/malva-ui-core-number-input.mjs.map +1 -0
- package/fesm2022/malva-ui-core-page.mjs +1898 -0
- package/fesm2022/malva-ui-core-page.mjs.map +1 -0
- package/fesm2022/malva-ui-core-pagination.mjs +458 -0
- package/fesm2022/malva-ui-core-pagination.mjs.map +1 -0
- package/fesm2022/malva-ui-core-pin-input.mjs +405 -0
- package/fesm2022/malva-ui-core-pin-input.mjs.map +1 -0
- package/fesm2022/malva-ui-core-popup.mjs +1488 -0
- package/fesm2022/malva-ui-core-popup.mjs.map +1 -0
- package/fesm2022/malva-ui-core-progress.mjs +109 -0
- package/fesm2022/malva-ui-core-progress.mjs.map +1 -0
- package/fesm2022/malva-ui-core-radio.mjs +317 -0
- package/fesm2022/malva-ui-core-radio.mjs.map +1 -0
- package/fesm2022/malva-ui-core-rating.mjs +236 -0
- package/fesm2022/malva-ui-core-rating.mjs.map +1 -0
- package/fesm2022/malva-ui-core-scrollbar.mjs +430 -0
- package/fesm2022/malva-ui-core-scrollbar.mjs.map +1 -0
- package/fesm2022/malva-ui-core-search-field.mjs +578 -0
- package/fesm2022/malva-ui-core-search-field.mjs.map +1 -0
- package/fesm2022/malva-ui-core-segmented.mjs +458 -0
- package/fesm2022/malva-ui-core-segmented.mjs.map +1 -0
- package/fesm2022/malva-ui-core-select.mjs +855 -0
- package/fesm2022/malva-ui-core-select.mjs.map +1 -0
- package/fesm2022/malva-ui-core-sidebar.mjs +1504 -0
- package/fesm2022/malva-ui-core-sidebar.mjs.map +1 -0
- package/fesm2022/malva-ui-core-skeleton.mjs +85 -0
- package/fesm2022/malva-ui-core-skeleton.mjs.map +1 -0
- package/fesm2022/malva-ui-core-slider.mjs +514 -0
- package/fesm2022/malva-ui-core-slider.mjs.map +1 -0
- package/fesm2022/malva-ui-core-split-pane.mjs +359 -0
- package/fesm2022/malva-ui-core-split-pane.mjs.map +1 -0
- package/fesm2022/malva-ui-core-status-indicator.mjs +78 -0
- package/fesm2022/malva-ui-core-status-indicator.mjs.map +1 -0
- package/fesm2022/malva-ui-core-stepper.mjs +332 -0
- package/fesm2022/malva-ui-core-stepper.mjs.map +1 -0
- package/fesm2022/malva-ui-core-switch.mjs +272 -0
- package/fesm2022/malva-ui-core-switch.mjs.map +1 -0
- package/fesm2022/malva-ui-core-table.mjs +79 -0
- package/fesm2022/malva-ui-core-table.mjs.map +1 -0
- package/fesm2022/malva-ui-core-tabs.mjs +794 -0
- package/fesm2022/malva-ui-core-tabs.mjs.map +1 -0
- package/fesm2022/malva-ui-core-textarea.mjs +201 -0
- package/fesm2022/malva-ui-core-textarea.mjs.map +1 -0
- package/fesm2022/malva-ui-core-tile.mjs +1404 -0
- package/fesm2022/malva-ui-core-tile.mjs.map +1 -0
- package/fesm2022/malva-ui-core-time-picker.mjs +533 -0
- package/fesm2022/malva-ui-core-time-picker.mjs.map +1 -0
- package/fesm2022/malva-ui-core-timeline.mjs +216 -0
- package/fesm2022/malva-ui-core-timeline.mjs.map +1 -0
- package/fesm2022/malva-ui-core-title.mjs +178 -0
- package/fesm2022/malva-ui-core-title.mjs.map +1 -0
- package/fesm2022/malva-ui-core-toast.mjs +749 -0
- package/fesm2022/malva-ui-core-toast.mjs.map +1 -0
- package/fesm2022/malva-ui-core-tokenizer.mjs +502 -0
- package/fesm2022/malva-ui-core-tokenizer.mjs.map +1 -0
- package/fesm2022/malva-ui-core-toolbar.mjs +141 -0
- package/fesm2022/malva-ui-core-toolbar.mjs.map +1 -0
- package/fesm2022/malva-ui-core-tooltip.mjs +432 -0
- package/fesm2022/malva-ui-core-tooltip.mjs.map +1 -0
- package/fesm2022/malva-ui-core-tree.mjs +505 -0
- package/fesm2022/malva-ui-core-tree.mjs.map +1 -0
- package/fesm2022/malva-ui-core-view-variant.mjs +292 -0
- package/fesm2022/malva-ui-core-view-variant.mjs.map +1 -0
- package/fesm2022/malva-ui-core.mjs +77 -0
- package/fesm2022/malva-ui-core.mjs.map +1 -0
- package/package.json +179 -156
- package/styles/malva-ui.css +253 -220
- package/styles/tokens.md +174 -173
- package/table/README.md +46 -0
- package/types/malva-ui-core-accordion.d.ts +121 -0
- package/types/malva-ui-core-action-bar.d.ts +82 -0
- package/types/malva-ui-core-alert.d.ts +131 -0
- package/types/malva-ui-core-autocomplete.d.ts +301 -0
- package/types/malva-ui-core-avatar-group.d.ts +119 -0
- package/types/malva-ui-core-avatar.d.ts +156 -0
- package/types/malva-ui-core-badge.d.ts +97 -0
- package/types/malva-ui-core-bottom-nav.d.ts +104 -0
- package/types/malva-ui-core-breadcrumb.d.ts +308 -0
- package/types/malva-ui-core-button.d.ts +194 -0
- package/types/malva-ui-core-calendar.d.ts +339 -0
- package/types/malva-ui-core-card.d.ts +88 -0
- package/types/malva-ui-core-chat.d.ts +375 -0
- package/types/malva-ui-core-checkbox.d.ts +158 -0
- package/types/malva-ui-core-chip.d.ts +128 -0
- package/types/malva-ui-core-color-picker.d.ts +442 -0
- package/types/malva-ui-core-combobox.d.ts +419 -0
- package/types/malva-ui-core-copy-to-clipboard.d.ts +148 -0
- package/types/malva-ui-core-data-table.d.ts +1074 -0
- package/types/malva-ui-core-date-range-picker.d.ts +149 -0
- package/types/malva-ui-core-day-picker.d.ts +55 -0
- package/types/malva-ui-core-dialog.d.ts +597 -0
- package/types/malva-ui-core-divider.d.ts +68 -0
- package/types/malva-ui-core-drawer.d.ts +333 -0
- package/types/malva-ui-core-dropdown.d.ts +592 -0
- package/types/malva-ui-core-empty-state.d.ts +37 -0
- package/types/malva-ui-core-expand.d.ts +102 -0
- package/types/malva-ui-core-file-upload.d.ts +267 -0
- package/types/malva-ui-core-filter.d.ts +552 -0
- package/types/malva-ui-core-form-utils-testing.d.ts +50 -0
- package/types/malva-ui-core-form-utils.d.ts +579 -0
- package/types/malva-ui-core-form.d.ts +176 -0
- package/types/malva-ui-core-icon-toggle.d.ts +80 -0
- package/types/malva-ui-core-input.d.ts +262 -0
- package/types/malva-ui-core-kbd.d.ts +56 -0
- package/types/malva-ui-core-layout.d.ts +70 -0
- package/types/malva-ui-core-link.d.ts +28 -0
- package/types/malva-ui-core-list.d.ts +252 -0
- package/types/malva-ui-core-loader.d.ts +89 -0
- package/types/malva-ui-core-menu.d.ts +954 -0
- package/types/malva-ui-core-notification.d.ts +122 -0
- package/types/malva-ui-core-number-input.d.ts +167 -0
- package/types/malva-ui-core-page.d.ts +799 -0
- package/types/malva-ui-core-pagination.d.ts +261 -0
- package/types/malva-ui-core-pin-input.d.ts +203 -0
- package/types/malva-ui-core-popup.d.ts +834 -0
- package/types/malva-ui-core-progress.d.ts +73 -0
- package/types/malva-ui-core-radio.d.ts +130 -0
- package/types/malva-ui-core-rating.d.ts +115 -0
- package/types/malva-ui-core-scrollbar.d.ts +203 -0
- package/types/malva-ui-core-search-field.d.ts +408 -0
- package/types/malva-ui-core-segmented.d.ts +206 -0
- package/types/malva-ui-core-select.d.ts +456 -0
- package/types/malva-ui-core-sidebar.d.ts +698 -0
- package/types/malva-ui-core-skeleton.d.ts +64 -0
- package/types/malva-ui-core-slider.d.ts +219 -0
- package/types/malva-ui-core-split-pane.d.ts +149 -0
- package/types/malva-ui-core-status-indicator.d.ts +65 -0
- package/types/malva-ui-core-stepper.d.ts +168 -0
- package/types/malva-ui-core-switch.d.ts +146 -0
- package/types/malva-ui-core-table.d.ts +37 -0
- package/types/malva-ui-core-tabs.d.ts +339 -0
- package/types/malva-ui-core-textarea.d.ts +79 -0
- package/types/malva-ui-core-tile.d.ts +373 -0
- package/types/malva-ui-core-time-picker.d.ts +141 -0
- package/types/malva-ui-core-timeline.d.ts +188 -0
- package/types/malva-ui-core-title.d.ts +66 -0
- package/types/malva-ui-core-toast.d.ts +432 -0
- package/types/malva-ui-core-tokenizer.d.ts +217 -0
- package/types/malva-ui-core-toolbar.d.ts +91 -0
- package/types/malva-ui-core-tooltip.d.ts +200 -0
- package/types/malva-ui-core-tree.d.ts +289 -0
- package/types/malva-ui-core-view-variant.d.ts +207 -0
- package/types/malva-ui-core.d.ts +72 -0
- package/view-variant/README.md +3 -0
- package/accordion/index.d.ts +0 -3
- package/accordion/lib/accordion/accordion.d.ts +0 -47
- package/accordion/lib/accordion-item/accordion-header.d.ts +0 -22
- package/accordion/lib/accordion-item/accordion-item.d.ts +0 -49
- package/accordion/malva-ui-core-accordion.d.ts +0 -5
- package/action-bar/index.d.ts +0 -4
- package/action-bar/lib/action-bar/action-bar.d.ts +0 -59
- package/action-bar/lib/action-bar/components/action-bar-actions.d.ts +0 -9
- package/action-bar/lib/action-bar/components/action-bar-logo.d.ts +0 -5
- package/action-bar/lib/action-bar/components/action-bar-spacer.d.ts +0 -5
- package/action-bar/malva-ui-core-action-bar.d.ts +0 -5
- package/alert/index.d.ts +0 -2
- package/alert/lib/alert/alert.d.ts +0 -84
- package/alert/lib/alert/alert.directives.d.ts +0 -44
- package/alert/malva-ui-core-alert.d.ts +0 -5
- package/autocomplete/index.d.ts +0 -1
- package/autocomplete/lib/autocomplete/autocomplete.d.ts +0 -296
- package/autocomplete/malva-ui-core-autocomplete.d.ts +0 -5
- package/avatar/index.d.ts +0 -2
- package/avatar/lib/avatar/avatar.d.ts +0 -125
- package/avatar/lib/color-from-text.pipe.d.ts +0 -21
- package/avatar/malva-ui-core-avatar.d.ts +0 -5
- package/avatar-group/index.d.ts +0 -1
- package/avatar-group/lib/avatar-group/avatar-group.d.ts +0 -115
- package/avatar-group/malva-ui-core-avatar-group.d.ts +0 -5
- package/badge/index.d.ts +0 -2
- package/badge/lib/badge/badge.d.ts +0 -59
- package/badge/lib/badge-icon.d.ts +0 -35
- package/badge/malva-ui-core-badge.d.ts +0 -5
- package/bottom-nav/index.d.ts +0 -1
- package/bottom-nav/lib/bottom-nav/bottom-nav.d.ts +0 -99
- package/bottom-nav/malva-ui-core-bottom-nav.d.ts +0 -5
- package/breadcrumb/index.d.ts +0 -5
- package/breadcrumb/lib/breadcrumb/breadcrumb-item-host.d.ts +0 -32
- package/breadcrumb/lib/breadcrumb/breadcrumb-item.d.ts +0 -41
- package/breadcrumb/lib/breadcrumb/breadcrumb-separator.d.ts +0 -31
- package/breadcrumb/lib/breadcrumb/breadcrumb.d.ts +0 -151
- package/breadcrumb/lib/breadcrumb/breadcrumb.types.d.ts +0 -26
- package/breadcrumb/malva-ui-core-breadcrumb.d.ts +0 -5
- package/button/index.d.ts +0 -7
- package/button/lib/button/button.d.ts +0 -61
- package/button/lib/button-close/button-close.d.ts +0 -24
- package/button/lib/button-group/button-group.d.ts +0 -21
- package/button/lib/button-split/button-split.d.ts +0 -21
- package/button/lib/button-toggle/button-toggle.d.ts +0 -33
- package/button/lib/button-variant.token.d.ts +0 -13
- package/button/lib/button.directives.d.ts +0 -14
- package/button/lib/button.types.d.ts +0 -8
- package/button/malva-ui-core-button.d.ts +0 -5
- package/calendar/index.d.ts +0 -3
- package/calendar/lib/calendar/calendar.d.ts +0 -182
- package/calendar/lib/date-provider/date-adapter.d.ts +0 -92
- package/calendar/lib/date-provider/native-date-adapter.d.ts +0 -60
- package/calendar/malva-ui-core-calendar.d.ts +0 -5
- package/card/index.d.ts +0 -5
- package/card/lib/card/card.d.ts +0 -43
- package/card/lib/card-actions-def.d.ts +0 -10
- package/card/lib/card-footer-def.d.ts +0 -13
- package/card/lib/card-header-def.d.ts +0 -10
- package/card/lib/card-subheader-def.d.ts +0 -16
- package/card/malva-ui-core-card.d.ts +0 -5
- package/chat/index.d.ts +0 -9
- package/chat/lib/chat/chat.d.ts +0 -133
- package/chat/lib/chat-audio/chat-audio.d.ts +0 -51
- package/chat/lib/chat-audio/chat-audio.service.d.ts +0 -21
- package/chat/lib/chat-date/chat-date.d.ts +0 -16
- package/chat/lib/chat-format.d.ts +0 -5
- package/chat/lib/chat-media-grid/chat-media-grid.d.ts +0 -32
- package/chat/lib/chat-message/chat-message.d.ts +0 -45
- package/chat/lib/chat-render-list.d.ts +0 -16
- package/chat/lib/chat-tokens.d.ts +0 -25
- package/chat/lib/chat-typing/chat-typing.d.ts +0 -16
- package/chat/lib/chat.types.d.ts +0 -80
- package/chat/lib/defs/chat-author-def.d.ts +0 -30
- package/chat/lib/defs/chat-date-def.d.ts +0 -22
- package/chat/lib/defs/chat-message-def.d.ts +0 -23
- package/chat/malva-ui-core-chat.d.ts +0 -5
- package/checkbox/index.d.ts +0 -3
- package/checkbox/lib/checkbox/checkbox.d.ts +0 -129
- package/checkbox/lib/checkbox-group/checkbox-group.d.ts +0 -24
- package/checkbox/lib/checkbox-group-token.d.ts +0 -6
- package/checkbox/malva-ui-core-checkbox.d.ts +0 -5
- package/chip/index.d.ts +0 -2
- package/chip/lib/chip/chip.d.ts +0 -107
- package/chip/lib/chip/chip.directives.d.ts +0 -18
- package/chip/malva-ui-core-chip.d.ts +0 -5
- package/color-picker/index.d.ts +0 -3
- package/color-picker/lib/color-picker/color-picker.d.ts +0 -188
- package/color-picker/lib/color-picker-popup/color-picker-popup.d.ts +0 -151
- package/color-picker/lib/color-utils/color-utils.d.ts +0 -102
- package/color-picker/malva-ui-core-color-picker.d.ts +0 -5
- package/combobox/index.d.ts +0 -2
- package/combobox/lib/combobox/combobox.d.ts +0 -400
- package/combobox/lib/combobox-template.directives.d.ts +0 -10
- package/combobox/malva-ui-core-combobox.d.ts +0 -5
- package/copy-to-clipboard/index.d.ts +0 -1
- package/copy-to-clipboard/lib/copy-to-clipboard/copy-to-clipboard.d.ts +0 -130
- package/copy-to-clipboard/malva-ui-core-copy-to-clipboard.d.ts +0 -5
- package/data-table/index.d.ts +0 -8
- package/data-table/lib/data-source.d.ts +0 -5
- package/data-table/lib/data-table/data-table-layout.d.ts +0 -31
- package/data-table/lib/data-table/data-table.d.ts +0 -699
- package/data-table/lib/data-table/services/data-table-column-visibility.service.d.ts +0 -19
- package/data-table/lib/data-table/services/data-table-editing.service.d.ts +0 -37
- package/data-table/lib/data-table/services/data-table-pinning.service.d.ts +0 -37
- package/data-table/lib/data-table-cell.d.ts +0 -44
- package/data-table/lib/data-table-edit-cell.d.ts +0 -44
- package/data-table/lib/data-table-error.d.ts +0 -37
- package/data-table/lib/data-table-footer.d.ts +0 -26
- package/data-table/lib/data-table-no-data.d.ts +0 -19
- package/data-table/lib/filter-dropdown/filter-dropdown.d.ts +0 -54
- package/data-table/lib/types.d.ts +0 -134
- package/data-table/malva-ui-core-data-table.d.ts +0 -5
- package/date-range-picker/index.d.ts +0 -1
- package/date-range-picker/lib/date-range-picker/date-range-picker.d.ts +0 -145
- package/date-range-picker/malva-ui-core-date-range-picker.d.ts +0 -5
- package/day-picker/index.d.ts +0 -1
- package/day-picker/lib/day-picker/day-picker.d.ts +0 -51
- package/day-picker/malva-ui-core-day-picker.d.ts +0 -5
- package/dialog/index.d.ts +0 -11
- package/dialog/lib/confirm-dialog-options.d.ts +0 -41
- package/dialog/lib/confirm-dialog.d.ts +0 -52
- package/dialog/lib/dialog/dialog.d.ts +0 -22
- package/dialog/lib/dialog-body.d.ts +0 -9
- package/dialog/lib/dialog-close.d.ts +0 -27
- package/dialog/lib/dialog-config.d.ts +0 -112
- package/dialog/lib/dialog-container.d.ts +0 -40
- package/dialog/lib/dialog-footer.d.ts +0 -13
- package/dialog/lib/dialog-header.d.ts +0 -74
- package/dialog/lib/dialog-ref.d.ts +0 -95
- package/dialog/lib/dialog-template.d.ts +0 -65
- package/dialog/lib/dialog-text-content.d.ts +0 -24
- package/dialog/lib/dialog.service.d.ts +0 -63
- package/dialog/lib/generate-routable-dialog-route.d.ts +0 -49
- package/dialog/lib/inject-dialog-ref.d.ts +0 -8
- package/dialog/lib/routable-dialog.d.ts +0 -30
- package/dialog/malva-ui-core-dialog.d.ts +0 -5
- package/divider/index.d.ts +0 -1
- package/divider/lib/divider/divider.d.ts +0 -64
- package/divider/malva-ui-core-divider.d.ts +0 -5
- package/drawer/index.d.ts +0 -11
- package/drawer/lib/drawer/drawer.d.ts +0 -106
- package/drawer/lib/drawer-body.d.ts +0 -8
- package/drawer/lib/drawer-content.d.ts +0 -6
- package/drawer/lib/drawer-footer.d.ts +0 -5
- package/drawer/lib/drawer-header.d.ts +0 -5
- package/drawer/lib/drawer-ref.d.ts +0 -29
- package/drawer/lib/drawer-resize.d.ts +0 -65
- package/drawer/lib/drawer-section/drawer-section.d.ts +0 -15
- package/drawer/lib/drawer-sections/drawer-sections.d.ts +0 -22
- package/drawer/lib/drawer-sections.service.d.ts +0 -42
- package/drawer/lib/drawer.service.d.ts +0 -66
- package/drawer/lib/generate-routable-drawer-route.d.ts +0 -42
- package/drawer/lib/routable-drawer.d.ts +0 -30
- package/drawer/malva-ui-core-drawer.d.ts +0 -5
- package/dropdown/index.d.ts +0 -9
- package/dropdown/lib/active-descendant.d.ts +0 -64
- package/dropdown/lib/dropdown-panel/dropdown-panel.d.ts +0 -178
- package/dropdown/lib/highlight-match.pipe.d.ts +0 -27
- package/dropdown/lib/option-matcher.d.ts +0 -87
- package/dropdown/lib/options-adapter.d.ts +0 -142
- package/dropdown/lib/options-result.d.ts +0 -6
- package/dropdown/lib/reconciliation.d.ts +0 -19
- package/dropdown/lib/select-data-source.d.ts +0 -18
- package/dropdown/lib/select-option.d.ts +0 -37
- package/dropdown/malva-ui-core-dropdown.d.ts +0 -5
- package/empty-state/index.d.ts +0 -1
- package/empty-state/lib/empty-state/empty-state.d.ts +0 -34
- package/empty-state/malva-ui-core-empty-state.d.ts +0 -5
- package/esm2022/accordion/index.js +0 -4
- package/esm2022/accordion/index.js.map +0 -1
- package/esm2022/accordion/lib/accordion/accordion.js +0 -65
- package/esm2022/accordion/lib/accordion/accordion.js.map +0 -1
- package/esm2022/accordion/lib/accordion-item/accordion-header.js +0 -30
- package/esm2022/accordion/lib/accordion-item/accordion-header.js.map +0 -1
- package/esm2022/accordion/lib/accordion-item/accordion-item.js +0 -70
- package/esm2022/accordion/lib/accordion-item/accordion-item.js.map +0 -1
- package/esm2022/accordion/malva-ui-core-accordion.js +0 -5
- package/esm2022/accordion/malva-ui-core-accordion.js.map +0 -1
- package/esm2022/action-bar/index.js +0 -5
- package/esm2022/action-bar/index.js.map +0 -1
- package/esm2022/action-bar/lib/action-bar/action-bar.js +0 -64
- package/esm2022/action-bar/lib/action-bar/action-bar.js.map +0 -1
- package/esm2022/action-bar/lib/action-bar/components/action-bar-actions.js +0 -20
- package/esm2022/action-bar/lib/action-bar/components/action-bar-actions.js.map +0 -1
- package/esm2022/action-bar/lib/action-bar/components/action-bar-logo.js +0 -13
- package/esm2022/action-bar/lib/action-bar/components/action-bar-logo.js.map +0 -1
- package/esm2022/action-bar/lib/action-bar/components/action-bar-spacer.js +0 -13
- package/esm2022/action-bar/lib/action-bar/components/action-bar-spacer.js.map +0 -1
- package/esm2022/action-bar/malva-ui-core-action-bar.js +0 -5
- package/esm2022/action-bar/malva-ui-core-action-bar.js.map +0 -1
- package/esm2022/alert/index.js +0 -3
- package/esm2022/alert/index.js.map +0 -1
- package/esm2022/alert/lib/alert/alert.directives.js +0 -53
- package/esm2022/alert/lib/alert/alert.directives.js.map +0 -1
- package/esm2022/alert/lib/alert/alert.js +0 -118
- package/esm2022/alert/lib/alert/alert.js.map +0 -1
- package/esm2022/alert/malva-ui-core-alert.js +0 -5
- package/esm2022/alert/malva-ui-core-alert.js.map +0 -1
- package/esm2022/autocomplete/index.js +0 -2
- package/esm2022/autocomplete/index.js.map +0 -1
- package/esm2022/autocomplete/lib/autocomplete/autocomplete.js +0 -765
- package/esm2022/autocomplete/lib/autocomplete/autocomplete.js.map +0 -1
- package/esm2022/autocomplete/malva-ui-core-autocomplete.js +0 -5
- package/esm2022/autocomplete/malva-ui-core-autocomplete.js.map +0 -1
- package/esm2022/avatar/index.js +0 -3
- package/esm2022/avatar/index.js.map +0 -1
- package/esm2022/avatar/lib/avatar/avatar.js +0 -192
- package/esm2022/avatar/lib/avatar/avatar.js.map +0 -1
- package/esm2022/avatar/lib/color-from-text.pipe.js +0 -39
- package/esm2022/avatar/lib/color-from-text.pipe.js.map +0 -1
- package/esm2022/avatar/malva-ui-core-avatar.js +0 -5
- package/esm2022/avatar/malva-ui-core-avatar.js.map +0 -1
- package/esm2022/avatar-group/index.js +0 -2
- package/esm2022/avatar-group/index.js.map +0 -1
- package/esm2022/avatar-group/lib/avatar-group/avatar-group.js +0 -217
- package/esm2022/avatar-group/lib/avatar-group/avatar-group.js.map +0 -1
- package/esm2022/avatar-group/malva-ui-core-avatar-group.js +0 -5
- package/esm2022/avatar-group/malva-ui-core-avatar-group.js.map +0 -1
- package/esm2022/badge/index.js +0 -3
- package/esm2022/badge/index.js.map +0 -1
- package/esm2022/badge/lib/badge/badge.js +0 -71
- package/esm2022/badge/lib/badge/badge.js.map +0 -1
- package/esm2022/badge/lib/badge-icon.js +0 -47
- package/esm2022/badge/lib/badge-icon.js.map +0 -1
- package/esm2022/badge/malva-ui-core-badge.js +0 -5
- package/esm2022/badge/malva-ui-core-badge.js.map +0 -1
- package/esm2022/bottom-nav/index.js +0 -2
- package/esm2022/bottom-nav/index.js.map +0 -1
- package/esm2022/bottom-nav/lib/bottom-nav/bottom-nav.js +0 -155
- package/esm2022/bottom-nav/lib/bottom-nav/bottom-nav.js.map +0 -1
- package/esm2022/bottom-nav/malva-ui-core-bottom-nav.js +0 -5
- package/esm2022/bottom-nav/malva-ui-core-bottom-nav.js.map +0 -1
- package/esm2022/breadcrumb/index.js +0 -6
- package/esm2022/breadcrumb/index.js.map +0 -1
- package/esm2022/breadcrumb/lib/breadcrumb/breadcrumb-item-host.js +0 -43
- package/esm2022/breadcrumb/lib/breadcrumb/breadcrumb-item-host.js.map +0 -1
- package/esm2022/breadcrumb/lib/breadcrumb/breadcrumb-item.js +0 -110
- package/esm2022/breadcrumb/lib/breadcrumb/breadcrumb-item.js.map +0 -1
- package/esm2022/breadcrumb/lib/breadcrumb/breadcrumb-separator.js +0 -38
- package/esm2022/breadcrumb/lib/breadcrumb/breadcrumb-separator.js.map +0 -1
- package/esm2022/breadcrumb/lib/breadcrumb/breadcrumb.js +0 -284
- package/esm2022/breadcrumb/lib/breadcrumb/breadcrumb.js.map +0 -1
- package/esm2022/breadcrumb/lib/breadcrumb/breadcrumb.types.js +0 -1
- package/esm2022/breadcrumb/lib/breadcrumb/breadcrumb.types.js.map +0 -1
- package/esm2022/breadcrumb/malva-ui-core-breadcrumb.js +0 -5
- package/esm2022/breadcrumb/malva-ui-core-breadcrumb.js.map +0 -1
- package/esm2022/button/index.js +0 -8
- package/esm2022/button/index.js.map +0 -1
- package/esm2022/button/lib/button/button.js +0 -137
- package/esm2022/button/lib/button/button.js.map +0 -1
- package/esm2022/button/lib/button-close/button-close.js +0 -52
- package/esm2022/button/lib/button-close/button-close.js.map +0 -1
- package/esm2022/button/lib/button-group/button-group.js +0 -44
- package/esm2022/button/lib/button-group/button-group.js.map +0 -1
- package/esm2022/button/lib/button-split/button-split.js +0 -44
- package/esm2022/button/lib/button-split/button-split.js.map +0 -1
- package/esm2022/button/lib/button-toggle/button-toggle.js +0 -94
- package/esm2022/button/lib/button-toggle/button-toggle.js.map +0 -1
- package/esm2022/button/lib/button-variant.token.js +0 -4
- package/esm2022/button/lib/button-variant.token.js.map +0 -1
- package/esm2022/button/lib/button.directives.js +0 -37
- package/esm2022/button/lib/button.directives.js.map +0 -1
- package/esm2022/button/lib/button.types.js +0 -1
- package/esm2022/button/lib/button.types.js.map +0 -1
- package/esm2022/button/malva-ui-core-button.js +0 -5
- package/esm2022/button/malva-ui-core-button.js.map +0 -1
- package/esm2022/calendar/index.js +0 -4
- package/esm2022/calendar/index.js.map +0 -1
- package/esm2022/calendar/lib/calendar/calendar.js +0 -672
- package/esm2022/calendar/lib/calendar/calendar.js.map +0 -1
- package/esm2022/calendar/lib/date-provider/date-adapter.js +0 -111
- package/esm2022/calendar/lib/date-provider/date-adapter.js.map +0 -1
- package/esm2022/calendar/lib/date-provider/native-date-adapter.js +0 -151
- package/esm2022/calendar/lib/date-provider/native-date-adapter.js.map +0 -1
- package/esm2022/calendar/malva-ui-core-calendar.js +0 -5
- package/esm2022/calendar/malva-ui-core-calendar.js.map +0 -1
- package/esm2022/card/index.js +0 -6
- package/esm2022/card/index.js.map +0 -1
- package/esm2022/card/lib/card/card.js +0 -54
- package/esm2022/card/lib/card/card.js.map +0 -1
- package/esm2022/card/lib/card-actions-def.js +0 -27
- package/esm2022/card/lib/card-actions-def.js.map +0 -1
- package/esm2022/card/lib/card-footer-def.js +0 -32
- package/esm2022/card/lib/card-footer-def.js.map +0 -1
- package/esm2022/card/lib/card-header-def.js +0 -27
- package/esm2022/card/lib/card-header-def.js.map +0 -1
- package/esm2022/card/lib/card-subheader-def.js +0 -33
- package/esm2022/card/lib/card-subheader-def.js.map +0 -1
- package/esm2022/card/malva-ui-core-card.js +0 -5
- package/esm2022/card/malva-ui-core-card.js.map +0 -1
- package/esm2022/chat/index.js +0 -10
- package/esm2022/chat/index.js.map +0 -1
- package/esm2022/chat/lib/chat/chat.js +0 -326
- package/esm2022/chat/lib/chat/chat.js.map +0 -1
- package/esm2022/chat/lib/chat-audio/chat-audio.js +0 -110
- package/esm2022/chat/lib/chat-audio/chat-audio.js.map +0 -1
- package/esm2022/chat/lib/chat-audio/chat-audio.service.js +0 -28
- package/esm2022/chat/lib/chat-audio/chat-audio.service.js.map +0 -1
- package/esm2022/chat/lib/chat-date/chat-date.js +0 -46
- package/esm2022/chat/lib/chat-date/chat-date.js.map +0 -1
- package/esm2022/chat/lib/chat-format.js +0 -11
- package/esm2022/chat/lib/chat-format.js.map +0 -1
- package/esm2022/chat/lib/chat-media-grid/chat-media-grid.js +0 -53
- package/esm2022/chat/lib/chat-media-grid/chat-media-grid.js.map +0 -1
- package/esm2022/chat/lib/chat-message/chat-message.js +0 -86
- package/esm2022/chat/lib/chat-message/chat-message.js.map +0 -1
- package/esm2022/chat/lib/chat-render-list.js +0 -55
- package/esm2022/chat/lib/chat-render-list.js.map +0 -1
- package/esm2022/chat/lib/chat-tokens.js +0 -9
- package/esm2022/chat/lib/chat-tokens.js.map +0 -1
- package/esm2022/chat/lib/chat-typing/chat-typing.js +0 -50
- package/esm2022/chat/lib/chat-typing/chat-typing.js.map +0 -1
- package/esm2022/chat/lib/chat.types.js +0 -1
- package/esm2022/chat/lib/chat.types.js.map +0 -1
- package/esm2022/chat/lib/defs/chat-author-def.js +0 -27
- package/esm2022/chat/lib/defs/chat-author-def.js.map +0 -1
- package/esm2022/chat/lib/defs/chat-date-def.js +0 -24
- package/esm2022/chat/lib/defs/chat-date-def.js.map +0 -1
- package/esm2022/chat/lib/defs/chat-message-def.js +0 -30
- package/esm2022/chat/lib/defs/chat-message-def.js.map +0 -1
- package/esm2022/chat/malva-ui-core-chat.js +0 -5
- package/esm2022/chat/malva-ui-core-chat.js.map +0 -1
- package/esm2022/checkbox/index.js +0 -4
- package/esm2022/checkbox/index.js.map +0 -1
- package/esm2022/checkbox/lib/checkbox/checkbox.js +0 -201
- package/esm2022/checkbox/lib/checkbox/checkbox.js.map +0 -1
- package/esm2022/checkbox/lib/checkbox-group/checkbox-group.js +0 -68
- package/esm2022/checkbox/lib/checkbox-group/checkbox-group.js.map +0 -1
- package/esm2022/checkbox/lib/checkbox-group-token.js +0 -3
- package/esm2022/checkbox/lib/checkbox-group-token.js.map +0 -1
- package/esm2022/checkbox/malva-ui-core-checkbox.js +0 -5
- package/esm2022/checkbox/malva-ui-core-checkbox.js.map +0 -1
- package/esm2022/chip/index.js +0 -3
- package/esm2022/chip/index.js.map +0 -1
- package/esm2022/chip/lib/chip/chip.directives.js +0 -32
- package/esm2022/chip/lib/chip/chip.directives.js.map +0 -1
- package/esm2022/chip/lib/chip/chip.js +0 -140
- package/esm2022/chip/lib/chip/chip.js.map +0 -1
- package/esm2022/chip/malva-ui-core-chip.js +0 -5
- package/esm2022/chip/malva-ui-core-chip.js.map +0 -1
- package/esm2022/color-picker/index.js +0 -4
- package/esm2022/color-picker/index.js.map +0 -1
- package/esm2022/color-picker/lib/color-picker/color-picker.js +0 -530
- package/esm2022/color-picker/lib/color-picker/color-picker.js.map +0 -1
- package/esm2022/color-picker/lib/color-picker-popup/color-picker-popup.js +0 -419
- package/esm2022/color-picker/lib/color-picker-popup/color-picker-popup.js.map +0 -1
- package/esm2022/color-picker/lib/color-utils/color-utils.js +0 -256
- package/esm2022/color-picker/lib/color-utils/color-utils.js.map +0 -1
- package/esm2022/color-picker/malva-ui-core-color-picker.js +0 -5
- package/esm2022/color-picker/malva-ui-core-color-picker.js.map +0 -1
- package/esm2022/combobox/index.js +0 -3
- package/esm2022/combobox/index.js.map +0 -1
- package/esm2022/combobox/lib/combobox/combobox.js +0 -911
- package/esm2022/combobox/lib/combobox/combobox.js.map +0 -1
- package/esm2022/combobox/lib/combobox-template.directives.js +0 -24
- package/esm2022/combobox/lib/combobox-template.directives.js.map +0 -1
- package/esm2022/combobox/malva-ui-core-combobox.js +0 -5
- package/esm2022/combobox/malva-ui-core-combobox.js.map +0 -1
- package/esm2022/copy-to-clipboard/index.js +0 -2
- package/esm2022/copy-to-clipboard/index.js.map +0 -1
- package/esm2022/copy-to-clipboard/lib/copy-to-clipboard/copy-to-clipboard.js +0 -201
- package/esm2022/copy-to-clipboard/lib/copy-to-clipboard/copy-to-clipboard.js.map +0 -1
- package/esm2022/copy-to-clipboard/malva-ui-core-copy-to-clipboard.js +0 -5
- package/esm2022/copy-to-clipboard/malva-ui-core-copy-to-clipboard.js.map +0 -1
- package/esm2022/data-table/index.js +0 -9
- package/esm2022/data-table/index.js.map +0 -1
- package/esm2022/data-table/lib/data-source.js +0 -6
- package/esm2022/data-table/lib/data-source.js.map +0 -1
- package/esm2022/data-table/lib/data-table/data-table-layout.js +0 -84
- package/esm2022/data-table/lib/data-table/data-table-layout.js.map +0 -1
- package/esm2022/data-table/lib/data-table/data-table.js +0 -1846
- package/esm2022/data-table/lib/data-table/data-table.js.map +0 -1
- package/esm2022/data-table/lib/data-table/services/data-table-column-visibility.service.js +0 -37
- package/esm2022/data-table/lib/data-table/services/data-table-column-visibility.service.js.map +0 -1
- package/esm2022/data-table/lib/data-table/services/data-table-editing.service.js +0 -63
- package/esm2022/data-table/lib/data-table/services/data-table-editing.service.js.map +0 -1
- package/esm2022/data-table/lib/data-table/services/data-table-pinning.service.js +0 -68
- package/esm2022/data-table/lib/data-table/services/data-table-pinning.service.js.map +0 -1
- package/esm2022/data-table/lib/data-table-cell.js +0 -46
- package/esm2022/data-table/lib/data-table-cell.js.map +0 -1
- package/esm2022/data-table/lib/data-table-edit-cell.js +0 -46
- package/esm2022/data-table/lib/data-table-edit-cell.js.map +0 -1
- package/esm2022/data-table/lib/data-table-error.js +0 -37
- package/esm2022/data-table/lib/data-table-error.js.map +0 -1
- package/esm2022/data-table/lib/data-table-footer.js +0 -33
- package/esm2022/data-table/lib/data-table-footer.js.map +0 -1
- package/esm2022/data-table/lib/data-table-no-data.js +0 -26
- package/esm2022/data-table/lib/data-table-no-data.js.map +0 -1
- package/esm2022/data-table/lib/filter-dropdown/filter-dropdown.js +0 -224
- package/esm2022/data-table/lib/filter-dropdown/filter-dropdown.js.map +0 -1
- package/esm2022/data-table/lib/types.js +0 -1
- package/esm2022/data-table/lib/types.js.map +0 -1
- package/esm2022/data-table/malva-ui-core-data-table.js +0 -5
- package/esm2022/data-table/malva-ui-core-data-table.js.map +0 -1
- package/esm2022/date-range-picker/index.js +0 -2
- package/esm2022/date-range-picker/index.js.map +0 -1
- package/esm2022/date-range-picker/lib/date-range-picker/date-range-picker.js +0 -269
- package/esm2022/date-range-picker/lib/date-range-picker/date-range-picker.js.map +0 -1
- package/esm2022/date-range-picker/malva-ui-core-date-range-picker.js +0 -5
- package/esm2022/date-range-picker/malva-ui-core-date-range-picker.js.map +0 -1
- package/esm2022/day-picker/index.js +0 -2
- package/esm2022/day-picker/index.js.map +0 -1
- package/esm2022/day-picker/lib/day-picker/day-picker.js +0 -124
- package/esm2022/day-picker/lib/day-picker/day-picker.js.map +0 -1
- package/esm2022/day-picker/malva-ui-core-day-picker.js +0 -5
- package/esm2022/day-picker/malva-ui-core-day-picker.js.map +0 -1
- package/esm2022/dialog/index.js +0 -12
- package/esm2022/dialog/index.js.map +0 -1
- package/esm2022/dialog/lib/confirm-dialog-options.js +0 -1
- package/esm2022/dialog/lib/confirm-dialog-options.js.map +0 -1
- package/esm2022/dialog/lib/confirm-dialog.js +0 -155
- package/esm2022/dialog/lib/confirm-dialog.js.map +0 -1
- package/esm2022/dialog/lib/dialog/dialog.js +0 -40
- package/esm2022/dialog/lib/dialog/dialog.js.map +0 -1
- package/esm2022/dialog/lib/dialog-body.js +0 -33
- package/esm2022/dialog/lib/dialog-body.js.map +0 -1
- package/esm2022/dialog/lib/dialog-close.js +0 -45
- package/esm2022/dialog/lib/dialog-close.js.map +0 -1
- package/esm2022/dialog/lib/dialog-config.js +0 -23
- package/esm2022/dialog/lib/dialog-config.js.map +0 -1
- package/esm2022/dialog/lib/dialog-container.js +0 -69
- package/esm2022/dialog/lib/dialog-container.js.map +0 -1
- package/esm2022/dialog/lib/dialog-footer.js +0 -29
- package/esm2022/dialog/lib/dialog-footer.js.map +0 -1
- package/esm2022/dialog/lib/dialog-header.js +0 -181
- package/esm2022/dialog/lib/dialog-header.js.map +0 -1
- package/esm2022/dialog/lib/dialog-ref.js +0 -167
- package/esm2022/dialog/lib/dialog-ref.js.map +0 -1
- package/esm2022/dialog/lib/dialog-template.js +0 -136
- package/esm2022/dialog/lib/dialog-template.js.map +0 -1
- package/esm2022/dialog/lib/dialog-text-content.js +0 -59
- package/esm2022/dialog/lib/dialog-text-content.js.map +0 -1
- package/esm2022/dialog/lib/dialog.service.js +0 -205
- package/esm2022/dialog/lib/dialog.service.js.map +0 -1
- package/esm2022/dialog/lib/generate-routable-dialog-route.js +0 -59
- package/esm2022/dialog/lib/generate-routable-dialog-route.js.map +0 -1
- package/esm2022/dialog/lib/inject-dialog-ref.js +0 -16
- package/esm2022/dialog/lib/inject-dialog-ref.js.map +0 -1
- package/esm2022/dialog/lib/routable-dialog.js +0 -91
- package/esm2022/dialog/lib/routable-dialog.js.map +0 -1
- package/esm2022/dialog/malva-ui-core-dialog.js +0 -5
- package/esm2022/dialog/malva-ui-core-dialog.js.map +0 -1
- package/esm2022/divider/index.js +0 -2
- package/esm2022/divider/index.js.map +0 -1
- package/esm2022/divider/lib/divider/divider.js +0 -73
- package/esm2022/divider/lib/divider/divider.js.map +0 -1
- package/esm2022/divider/malva-ui-core-divider.js +0 -5
- package/esm2022/divider/malva-ui-core-divider.js.map +0 -1
- package/esm2022/drawer/index.js +0 -12
- package/esm2022/drawer/index.js.map +0 -1
- package/esm2022/drawer/lib/drawer/drawer.js +0 -180
- package/esm2022/drawer/lib/drawer/drawer.js.map +0 -1
- package/esm2022/drawer/lib/drawer-body.js +0 -32
- package/esm2022/drawer/lib/drawer-body.js.map +0 -1
- package/esm2022/drawer/lib/drawer-content.js +0 -14
- package/esm2022/drawer/lib/drawer-content.js.map +0 -1
- package/esm2022/drawer/lib/drawer-footer.js +0 -14
- package/esm2022/drawer/lib/drawer-footer.js.map +0 -1
- package/esm2022/drawer/lib/drawer-header.js +0 -14
- package/esm2022/drawer/lib/drawer-header.js.map +0 -1
- package/esm2022/drawer/lib/drawer-ref.js +0 -31
- package/esm2022/drawer/lib/drawer-ref.js.map +0 -1
- package/esm2022/drawer/lib/drawer-resize.js +0 -243
- package/esm2022/drawer/lib/drawer-resize.js.map +0 -1
- package/esm2022/drawer/lib/drawer-section/drawer-section.js +0 -26
- package/esm2022/drawer/lib/drawer-section/drawer-section.js.map +0 -1
- package/esm2022/drawer/lib/drawer-sections/drawer-sections.js +0 -58
- package/esm2022/drawer/lib/drawer-sections/drawer-sections.js.map +0 -1
- package/esm2022/drawer/lib/drawer-sections.service.js +0 -83
- package/esm2022/drawer/lib/drawer-sections.service.js.map +0 -1
- package/esm2022/drawer/lib/drawer.service.js +0 -86
- package/esm2022/drawer/lib/drawer.service.js.map +0 -1
- package/esm2022/drawer/lib/generate-routable-drawer-route.js +0 -52
- package/esm2022/drawer/lib/generate-routable-drawer-route.js.map +0 -1
- package/esm2022/drawer/lib/routable-drawer.js +0 -91
- package/esm2022/drawer/lib/routable-drawer.js.map +0 -1
- package/esm2022/drawer/malva-ui-core-drawer.js +0 -5
- package/esm2022/drawer/malva-ui-core-drawer.js.map +0 -1
- package/esm2022/dropdown/index.js +0 -10
- package/esm2022/dropdown/index.js.map +0 -1
- package/esm2022/dropdown/lib/active-descendant.js +0 -92
- package/esm2022/dropdown/lib/active-descendant.js.map +0 -1
- package/esm2022/dropdown/lib/dropdown-panel/dropdown-panel.js +0 -295
- package/esm2022/dropdown/lib/dropdown-panel/dropdown-panel.js.map +0 -1
- package/esm2022/dropdown/lib/highlight-match.pipe.js +0 -36
- package/esm2022/dropdown/lib/highlight-match.pipe.js.map +0 -1
- package/esm2022/dropdown/lib/option-matcher.js +0 -124
- package/esm2022/dropdown/lib/option-matcher.js.map +0 -1
- package/esm2022/dropdown/lib/options-adapter.js +0 -356
- package/esm2022/dropdown/lib/options-adapter.js.map +0 -1
- package/esm2022/dropdown/lib/options-result.js +0 -11
- package/esm2022/dropdown/lib/options-result.js.map +0 -1
- package/esm2022/dropdown/lib/reconciliation.js +0 -32
- package/esm2022/dropdown/lib/reconciliation.js.map +0 -1
- package/esm2022/dropdown/lib/select-data-source.js +0 -21
- package/esm2022/dropdown/lib/select-data-source.js.map +0 -1
- package/esm2022/dropdown/lib/select-option.js +0 -25
- package/esm2022/dropdown/lib/select-option.js.map +0 -1
- package/esm2022/dropdown/malva-ui-core-dropdown.js +0 -5
- package/esm2022/dropdown/malva-ui-core-dropdown.js.map +0 -1
- package/esm2022/empty-state/index.js +0 -2
- package/esm2022/empty-state/index.js.map +0 -1
- package/esm2022/empty-state/lib/empty-state/empty-state.js +0 -43
- package/esm2022/empty-state/lib/empty-state/empty-state.js.map +0 -1
- package/esm2022/empty-state/malva-ui-core-empty-state.js +0 -5
- package/esm2022/empty-state/malva-ui-core-empty-state.js.map +0 -1
- package/esm2022/expand/index.js +0 -3
- package/esm2022/expand/index.js.map +0 -1
- package/esm2022/expand/lib/expand/expand-content.js +0 -33
- package/esm2022/expand/lib/expand/expand-content.js.map +0 -1
- package/esm2022/expand/lib/expand/expand.js +0 -93
- package/esm2022/expand/lib/expand/expand.js.map +0 -1
- package/esm2022/expand/malva-ui-core-expand.js +0 -5
- package/esm2022/expand/malva-ui-core-expand.js.map +0 -1
- package/esm2022/file-upload/index.js +0 -5
- package/esm2022/file-upload/index.js.map +0 -1
- package/esm2022/file-upload/lib/file-upload/file-upload.js +0 -324
- package/esm2022/file-upload/lib/file-upload/file-upload.js.map +0 -1
- package/esm2022/file-upload/lib/file-upload/file-upload.types.js +0 -1
- package/esm2022/file-upload/lib/file-upload/file-upload.types.js.map +0 -1
- package/esm2022/file-upload/lib/file-upload-action.js +0 -65
- package/esm2022/file-upload/lib/file-upload-action.js.map +0 -1
- package/esm2022/file-upload/lib/file-upload-item/file-upload-item.js +0 -55
- package/esm2022/file-upload/lib/file-upload-item/file-upload-item.js.map +0 -1
- package/esm2022/file-upload/malva-ui-core-file-upload.js +0 -5
- package/esm2022/file-upload/malva-ui-core-file-upload.js.map +0 -1
- package/esm2022/filter/index.js +0 -4
- package/esm2022/filter/index.js.map +0 -1
- package/esm2022/filter/lib/filter/filter.js +0 -552
- package/esm2022/filter/lib/filter/filter.js.map +0 -1
- package/esm2022/filter/lib/filter.types.js +0 -1
- package/esm2022/filter/lib/filter.types.js.map +0 -1
- package/esm2022/filter/lib/smart-filter-bar/smart-filter-bar.js +0 -518
- package/esm2022/filter/lib/smart-filter-bar/smart-filter-bar.js.map +0 -1
- package/esm2022/filter/malva-ui-core-filter.js +0 -5
- package/esm2022/filter/malva-ui-core-filter.js.map +0 -1
- package/esm2022/form/index.js +0 -7
- package/esm2022/form/index.js.map +0 -1
- package/esm2022/form/lib/fieldset/fieldset.js +0 -101
- package/esm2022/form/lib/fieldset/fieldset.js.map +0 -1
- package/esm2022/form/lib/fieldset-span.js +0 -49
- package/esm2022/form/lib/fieldset-span.js.map +0 -1
- package/esm2022/form/lib/form/form.js +0 -60
- package/esm2022/form/lib/form/form.js.map +0 -1
- package/esm2022/form/lib/form-actions.js +0 -34
- package/esm2022/form/lib/form-actions.js.map +0 -1
- package/esm2022/form/lib/form-gap.js +0 -15
- package/esm2022/form/lib/form-gap.js.map +0 -1
- package/esm2022/form/lib/form-header.js +0 -27
- package/esm2022/form/lib/form-header.js.map +0 -1
- package/esm2022/form/lib/form.types.js +0 -1
- package/esm2022/form/lib/form.types.js.map +0 -1
- package/esm2022/form/malva-ui-core-form.js +0 -5
- package/esm2022/form/malva-ui-core-form.js.map +0 -1
- package/esm2022/form-utils/index.js +0 -16
- package/esm2022/form-utils/index.js.map +0 -1
- package/esm2022/form-utils/lib/aria-value-bridge.js +0 -57
- package/esm2022/form-utils/lib/aria-value-bridge.js.map +0 -1
- package/esm2022/form-utils/lib/description/description.js +0 -24
- package/esm2022/form-utils/lib/description/description.js.map +0 -1
- package/esm2022/form-utils/lib/focusable-group-base.js +0 -87
- package/esm2022/form-utils/lib/focusable-group-base.js.map +0 -1
- package/esm2022/form-utils/lib/form-control-base/signal-form-control-base.js +0 -192
- package/esm2022/form-utils/lib/form-control-base/signal-form-control-base.js.map +0 -1
- package/esm2022/form-utils/lib/form-control-sides.js +0 -34
- package/esm2022/form-utils/lib/form-control-sides.js.map +0 -1
- package/esm2022/form-utils/lib/form-control-wrapper/form-control-wrapper-control.js +0 -14
- package/esm2022/form-utils/lib/form-control-wrapper/form-control-wrapper-control.js.map +0 -1
- package/esm2022/form-utils/lib/form-control-wrapper/form-control-wrapper.js +0 -47
- package/esm2022/form-utils/lib/form-control-wrapper/form-control-wrapper.js.map +0 -1
- package/esm2022/form-utils/lib/form-field/form-field.js +0 -245
- package/esm2022/form-utils/lib/form-field/form-field.js.map +0 -1
- package/esm2022/form-utils/lib/hint/hint.js +0 -11
- package/esm2022/form-utils/lib/hint/hint.js.map +0 -1
- package/esm2022/form-utils/lib/label/label.js +0 -55
- package/esm2022/form-utils/lib/label/label.js.map +0 -1
- package/esm2022/form-utils/lib/message/message.js +0 -20
- package/esm2022/form-utils/lib/message/message.js.map +0 -1
- package/esm2022/form-utils/lib/models/error-display-strategy.js +0 -1
- package/esm2022/form-utils/lib/models/error-display-strategy.js.map +0 -1
- package/esm2022/form-utils/lib/models/form-control-connector.js +0 -3
- package/esm2022/form-utils/lib/models/form-control-connector.js.map +0 -1
- package/esm2022/form-utils/lib/models/form-state.js +0 -1
- package/esm2022/form-utils/lib/models/form-state.js.map +0 -1
- package/esm2022/form-utils/lib/selection.service.js +0 -81
- package/esm2022/form-utils/lib/selection.service.js.map +0 -1
- package/esm2022/form-utils/malva-ui-core-form-utils.js +0 -5
- package/esm2022/form-utils/malva-ui-core-form-utils.js.map +0 -1
- package/esm2022/form-utils/testing/index.js +0 -2
- package/esm2022/form-utils/testing/index.js.map +0 -1
- package/esm2022/form-utils/testing/lib/forms-binding-matrix.js +0 -32
- package/esm2022/form-utils/testing/lib/forms-binding-matrix.js.map +0 -1
- package/esm2022/form-utils/testing/malva-ui-core-form-utils-testing.js +0 -5
- package/esm2022/form-utils/testing/malva-ui-core-form-utils-testing.js.map +0 -1
- package/esm2022/index.js +0 -70
- package/esm2022/index.js.map +0 -1
- package/esm2022/input/index.js +0 -4
- package/esm2022/input/index.js.map +0 -1
- package/esm2022/input/lib/input/input-native.js +0 -49
- package/esm2022/input/lib/input/input-native.js.map +0 -1
- package/esm2022/input/lib/input/input-value-accessor.js +0 -4
- package/esm2022/input/lib/input/input-value-accessor.js.map +0 -1
- package/esm2022/input/lib/input/input.js +0 -277
- package/esm2022/input/lib/input/input.js.map +0 -1
- package/esm2022/input/lib/input/password-strength.js +0 -46
- package/esm2022/input/lib/input/password-strength.js.map +0 -1
- package/esm2022/input/malva-ui-core-input.js +0 -5
- package/esm2022/input/malva-ui-core-input.js.map +0 -1
- package/esm2022/kbd/index.js +0 -2
- package/esm2022/kbd/index.js.map +0 -1
- package/esm2022/kbd/lib/kbd/kbd.js +0 -124
- package/esm2022/kbd/lib/kbd/kbd.js.map +0 -1
- package/esm2022/kbd/malva-ui-core-kbd.js +0 -5
- package/esm2022/kbd/malva-ui-core-kbd.js.map +0 -1
- package/esm2022/layout/index.js +0 -5
- package/esm2022/layout/index.js.map +0 -1
- package/esm2022/layout/lib/layout/directives/MlvLayoutSide.js +0 -14
- package/esm2022/layout/lib/layout/directives/MlvLayoutSide.js.map +0 -1
- package/esm2022/layout/lib/layout/directives/MlvLayoutTop.js +0 -14
- package/esm2022/layout/lib/layout/directives/MlvLayoutTop.js.map +0 -1
- package/esm2022/layout/lib/layout/layout.js +0 -43
- package/esm2022/layout/lib/layout/layout.js.map +0 -1
- package/esm2022/layout/lib/layout/services/theme.service.js +0 -121
- package/esm2022/layout/lib/layout/services/theme.service.js.map +0 -1
- package/esm2022/layout/malva-ui-core-layout.js +0 -5
- package/esm2022/layout/malva-ui-core-layout.js.map +0 -1
- package/esm2022/link/index.js +0 -3
- package/esm2022/link/index.js.map +0 -1
- package/esm2022/link/lib/link/link.directives.js +0 -24
- package/esm2022/link/lib/link/link.directives.js.map +0 -1
- package/esm2022/link/lib/link/link.js +0 -61
- package/esm2022/link/lib/link/link.js.map +0 -1
- package/esm2022/link/malva-ui-core-link.js +0 -5
- package/esm2022/link/malva-ui-core-link.js.map +0 -1
- package/esm2022/list/index.js +0 -14
- package/esm2022/list/index.js.map +0 -1
- package/esm2022/list/lib/list/list.js +0 -28
- package/esm2022/list/lib/list/list.js.map +0 -1
- package/esm2022/list/lib/list-item/list-item.js +0 -125
- package/esm2022/list/lib/list-item/list-item.js.map +0 -1
- package/esm2022/list/lib/list-item-actions.js +0 -23
- package/esm2022/list/lib/list-item-actions.js.map +0 -1
- package/esm2022/list/lib/list-item-byline.js +0 -13
- package/esm2022/list/lib/list-item-byline.js.map +0 -1
- package/esm2022/list/lib/list-item-group/list-item-group.js +0 -25
- package/esm2022/list/lib/list-item-group/list-item-group.js.map +0 -1
- package/esm2022/list/lib/list-item-link/list-item-link.js +0 -20
- package/esm2022/list/lib/list-item-link/list-item-link.js.map +0 -1
- package/esm2022/list/lib/list-item-media.js +0 -13
- package/esm2022/list/lib/list-item-media.js.map +0 -1
- package/esm2022/list/lib/list-item-meta.js +0 -13
- package/esm2022/list/lib/list-item-meta.js.map +0 -1
- package/esm2022/list/lib/list-item-prefix.js +0 -13
- package/esm2022/list/lib/list-item-prefix.js.map +0 -1
- package/esm2022/list/lib/list-item-suffix.js +0 -13
- package/esm2022/list/lib/list-item-suffix.js.map +0 -1
- package/esm2022/list/lib/list-item-template.js +0 -14
- package/esm2022/list/lib/list-item-template.js.map +0 -1
- package/esm2022/list/lib/list-item-title.js +0 -13
- package/esm2022/list/lib/list-item-title.js.map +0 -1
- package/esm2022/list/lib/list-selectable.js +0 -116
- package/esm2022/list/lib/list-selectable.js.map +0 -1
- package/esm2022/list/malva-ui-core-list.js +0 -5
- package/esm2022/list/malva-ui-core-list.js.map +0 -1
- package/esm2022/loader/index.js +0 -2
- package/esm2022/loader/index.js.map +0 -1
- package/esm2022/loader/lib/loader/loader.js +0 -134
- package/esm2022/loader/lib/loader/loader.js.map +0 -1
- package/esm2022/loader/malva-ui-core-loader.js +0 -5
- package/esm2022/loader/malva-ui-core-loader.js.map +0 -1
- package/esm2022/malva-ui-core.js +0 -5
- package/esm2022/malva-ui-core.js.map +0 -1
- package/esm2022/menu/index.js +0 -10
- package/esm2022/menu/index.js.map +0 -1
- package/esm2022/menu/lib/menu/menu-group-label.js +0 -35
- package/esm2022/menu/lib/menu/menu-group-label.js.map +0 -1
- package/esm2022/menu/lib/menu/menu-group.js +0 -44
- package/esm2022/menu/lib/menu/menu-group.js.map +0 -1
- package/esm2022/menu/lib/menu/menu-item.js +0 -117
- package/esm2022/menu/lib/menu/menu-item.js.map +0 -1
- package/esm2022/menu/lib/menu/menu-separator.js +0 -41
- package/esm2022/menu/lib/menu/menu-separator.js.map +0 -1
- package/esm2022/menu/lib/menu/menu-trigger.js +0 -653
- package/esm2022/menu/lib/menu/menu-trigger.js.map +0 -1
- package/esm2022/menu/lib/menu/menu.js +0 -308
- package/esm2022/menu/lib/menu/menu.js.map +0 -1
- package/esm2022/menu/lib/menu/menu.types.js +0 -4
- package/esm2022/menu/lib/menu/menu.types.js.map +0 -1
- package/esm2022/menu/lib/menu/menubar.js +0 -257
- package/esm2022/menu/lib/menu/menubar.js.map +0 -1
- package/esm2022/menu/lib/menu/menubar.types.js +0 -4
- package/esm2022/menu/lib/menu/menubar.types.js.map +0 -1
- package/esm2022/menu/lib/menu/submenu-aim.js +0 -30
- package/esm2022/menu/lib/menu/submenu-aim.js.map +0 -1
- package/esm2022/menu/malva-ui-core-menu.js +0 -5
- package/esm2022/menu/malva-ui-core-menu.js.map +0 -1
- package/esm2022/notification/index.js +0 -5
- package/esm2022/notification/index.js.map +0 -1
- package/esm2022/notification/lib/notification-item/notification-item.js +0 -65
- package/esm2022/notification/lib/notification-item/notification-item.js.map +0 -1
- package/esm2022/notification/lib/notification-ref.js +0 -13
- package/esm2022/notification/lib/notification-ref.js.map +0 -1
- package/esm2022/notification/lib/notification.service.js +0 -118
- package/esm2022/notification/lib/notification.service.js.map +0 -1
- package/esm2022/notification/lib/notification.types.js +0 -6
- package/esm2022/notification/lib/notification.types.js.map +0 -1
- package/esm2022/notification/malva-ui-core-notification.js +0 -5
- package/esm2022/notification/malva-ui-core-notification.js.map +0 -1
- package/esm2022/number-input/index.js +0 -2
- package/esm2022/number-input/index.js.map +0 -1
- package/esm2022/number-input/lib/number-input/number-input.js +0 -395
- package/esm2022/number-input/lib/number-input/number-input.js.map +0 -1
- package/esm2022/number-input/malva-ui-core-number-input.js +0 -5
- package/esm2022/number-input/malva-ui-core-number-input.js.map +0 -1
- package/esm2022/page/index.js +0 -15
- package/esm2022/page/index.js.map +0 -1
- package/esm2022/page/lib/page/page-scroll.token.js +0 -9
- package/esm2022/page/lib/page/page-scroll.token.js.map +0 -1
- package/esm2022/page/lib/page/page-snap-controller.js +0 -170
- package/esm2022/page/lib/page/page-snap-controller.js.map +0 -1
- package/esm2022/page/lib/page/page-snap.directive.js +0 -65
- package/esm2022/page/lib/page/page-snap.directive.js.map +0 -1
- package/esm2022/page/lib/page/page.js +0 -173
- package/esm2022/page/lib/page/page.js.map +0 -1
- package/esm2022/page/lib/page-content/page-aside.js +0 -13
- package/esm2022/page/lib/page-content/page-aside.js.map +0 -1
- package/esm2022/page/lib/page-content/page-content.js +0 -72
- package/esm2022/page/lib/page-content/page-content.js.map +0 -1
- package/esm2022/page/lib/page-dock/page-dock.js +0 -128
- package/esm2022/page/lib/page-dock/page-dock.js.map +0 -1
- package/esm2022/page/lib/page-dock/page-dock.slots.js +0 -39
- package/esm2022/page/lib/page-dock/page-dock.slots.js.map +0 -1
- package/esm2022/page/lib/page-header/page-header.directives.js +0 -88
- package/esm2022/page/lib/page-header/page-header.directives.js.map +0 -1
- package/esm2022/page/lib/page-header/page-header.js +0 -124
- package/esm2022/page/lib/page-header/page-header.js.map +0 -1
- package/esm2022/page/lib/page-shell/page-shell-color.js +0 -193
- package/esm2022/page/lib/page-shell/page-shell-color.js.map +0 -1
- package/esm2022/page/lib/page-shell/page-shell-css-color.js +0 -207
- package/esm2022/page/lib/page-shell/page-shell-css-color.js.map +0 -1
- package/esm2022/page/lib/page-shell/page-shell.js +0 -131
- package/esm2022/page/lib/page-shell/page-shell.js.map +0 -1
- package/esm2022/page/lib/page-shell/page-shell.slots.js +0 -41
- package/esm2022/page/lib/page-shell/page-shell.slots.js.map +0 -1
- package/esm2022/page/lib/page-summary/page-summary-item.js +0 -26
- package/esm2022/page/lib/page-summary/page-summary-item.js.map +0 -1
- package/esm2022/page/lib/page-summary/page-summary.js +0 -87
- package/esm2022/page/lib/page-summary/page-summary.js.map +0 -1
- package/esm2022/page/malva-ui-core-page.js +0 -5
- package/esm2022/page/malva-ui-core-page.js.map +0 -1
- package/esm2022/pagination/index.js +0 -5
- package/esm2022/pagination/index.js.map +0 -1
- package/esm2022/pagination/lib/pagination/pagination.directives.js +0 -58
- package/esm2022/pagination/lib/pagination/pagination.directives.js.map +0 -1
- package/esm2022/pagination/lib/pagination/pagination.js +0 -293
- package/esm2022/pagination/lib/pagination/pagination.js.map +0 -1
- package/esm2022/pagination/lib/pagination/pagination.model.js +0 -1
- package/esm2022/pagination/lib/pagination/pagination.model.js.map +0 -1
- package/esm2022/pagination/lib/pagination/pagination.service.js +0 -108
- package/esm2022/pagination/lib/pagination/pagination.service.js.map +0 -1
- package/esm2022/pagination/malva-ui-core-pagination.js +0 -5
- package/esm2022/pagination/malva-ui-core-pagination.js.map +0 -1
- package/esm2022/pin-input/index.js +0 -3
- package/esm2022/pin-input/index.js.map +0 -1
- package/esm2022/pin-input/lib/pin-input/pin-input-separator.js +0 -31
- package/esm2022/pin-input/lib/pin-input/pin-input-separator.js.map +0 -1
- package/esm2022/pin-input/lib/pin-input/pin-input.js +0 -365
- package/esm2022/pin-input/lib/pin-input/pin-input.js.map +0 -1
- package/esm2022/pin-input/malva-ui-core-pin-input.js +0 -5
- package/esm2022/pin-input/malva-ui-core-pin-input.js.map +0 -1
- package/esm2022/popup/index.js +0 -10
- package/esm2022/popup/index.js.map +0 -1
- package/esm2022/popup/lib/popup/popup.js +0 -500
- package/esm2022/popup/lib/popup/popup.js.map +0 -1
- package/esm2022/popup/lib/popup-container/popup-container.js +0 -169
- package/esm2022/popup/lib/popup-container/popup-container.js.map +0 -1
- package/esm2022/popup/lib/popup-container/popup-container.token.js +0 -9
- package/esm2022/popup/lib/popup-container/popup-container.token.js.map +0 -1
- package/esm2022/popup/lib/popup-content.js +0 -14
- package/esm2022/popup/lib/popup-content.js.map +0 -1
- package/esm2022/popup/lib/popup-header-content.js +0 -26
- package/esm2022/popup/lib/popup-header-content.js.map +0 -1
- package/esm2022/popup/lib/popup-pinned-content.js +0 -25
- package/esm2022/popup/lib/popup-pinned-content.js.map +0 -1
- package/esm2022/popup/lib/popup-positions.js +0 -252
- package/esm2022/popup/lib/popup-positions.js.map +0 -1
- package/esm2022/popup/lib/popup-trigger/popup-trigger.js +0 -308
- package/esm2022/popup/lib/popup-trigger/popup-trigger.js.map +0 -1
- package/esm2022/popup/lib/popup.service.js +0 -188
- package/esm2022/popup/lib/popup.service.js.map +0 -1
- package/esm2022/popup/malva-ui-core-popup.js +0 -5
- package/esm2022/popup/malva-ui-core-popup.js.map +0 -1
- package/esm2022/progress/index.js +0 -2
- package/esm2022/progress/index.js.map +0 -1
- package/esm2022/progress/lib/progress/progress.js +0 -102
- package/esm2022/progress/lib/progress/progress.js.map +0 -1
- package/esm2022/progress/malva-ui-core-progress.js +0 -5
- package/esm2022/progress/malva-ui-core-progress.js.map +0 -1
- package/esm2022/radio/index.js +0 -3
- package/esm2022/radio/index.js.map +0 -1
- package/esm2022/radio/lib/radio/radio.js +0 -134
- package/esm2022/radio/lib/radio/radio.js.map +0 -1
- package/esm2022/radio/lib/radio-group/radio-group.js +0 -176
- package/esm2022/radio/lib/radio-group/radio-group.js.map +0 -1
- package/esm2022/radio/lib/radio-group-token.js +0 -3
- package/esm2022/radio/lib/radio-group-token.js.map +0 -1
- package/esm2022/radio/malva-ui-core-radio.js +0 -5
- package/esm2022/radio/malva-ui-core-radio.js.map +0 -1
- package/esm2022/rating/index.js +0 -2
- package/esm2022/rating/index.js.map +0 -1
- package/esm2022/rating/lib/rating/rating.js +0 -208
- package/esm2022/rating/lib/rating/rating.js.map +0 -1
- package/esm2022/rating/malva-ui-core-rating.js +0 -5
- package/esm2022/rating/malva-ui-core-rating.js.map +0 -1
- package/esm2022/scrollbar/index.js +0 -2
- package/esm2022/scrollbar/index.js.map +0 -1
- package/esm2022/scrollbar/lib/scrollbar/scrollbar.js +0 -388
- package/esm2022/scrollbar/lib/scrollbar/scrollbar.js.map +0 -1
- package/esm2022/scrollbar/malva-ui-core-scrollbar.js +0 -5
- package/esm2022/scrollbar/malva-ui-core-scrollbar.js.map +0 -1
- package/esm2022/search-field/index.js +0 -3
- package/esm2022/search-field/index.js.map +0 -1
- package/esm2022/search-field/lib/search-field/search-field.js +0 -535
- package/esm2022/search-field/lib/search-field/search-field.js.map +0 -1
- package/esm2022/search-field/lib/search-field/search-overlay-content.js +0 -35
- package/esm2022/search-field/lib/search-field/search-overlay-content.js.map +0 -1
- package/esm2022/search-field/malva-ui-core-search-field.js +0 -5
- package/esm2022/search-field/malva-ui-core-search-field.js.map +0 -1
- package/esm2022/segmented/index.js +0 -5
- package/esm2022/segmented/index.js.map +0 -1
- package/esm2022/segmented/lib/segmented/segmented.js +0 -248
- package/esm2022/segmented/lib/segmented/segmented.js.map +0 -1
- package/esm2022/segmented/lib/segmented-item/segmented-item.js +0 -194
- package/esm2022/segmented/lib/segmented-item/segmented-item.js.map +0 -1
- package/esm2022/segmented/lib/segmented-token.js +0 -4
- package/esm2022/segmented/lib/segmented-token.js.map +0 -1
- package/esm2022/segmented/lib/segmented.types.js +0 -1
- package/esm2022/segmented/lib/segmented.types.js.map +0 -1
- package/esm2022/segmented/malva-ui-core-segmented.js +0 -5
- package/esm2022/segmented/malva-ui-core-segmented.js.map +0 -1
- package/esm2022/select/index.js +0 -4
- package/esm2022/select/index.js.map +0 -1
- package/esm2022/select/lib/select/select.js +0 -685
- package/esm2022/select/lib/select/select.js.map +0 -1
- package/esm2022/select/lib/select-option.js +0 -2
- package/esm2022/select/lib/select-option.js.map +0 -1
- package/esm2022/select/lib/select-template.directives.js +0 -34
- package/esm2022/select/lib/select-template.directives.js.map +0 -1
- package/esm2022/select/malva-ui-core-select.js +0 -5
- package/esm2022/select/malva-ui-core-select.js.map +0 -1
- package/esm2022/sidebar/index.js +0 -16
- package/esm2022/sidebar/index.js.map +0 -1
- package/esm2022/sidebar/lib/sidebar/sidebar.js +0 -251
- package/esm2022/sidebar/lib/sidebar/sidebar.js.map +0 -1
- package/esm2022/sidebar/lib/sidebar-content.js +0 -37
- package/esm2022/sidebar/lib/sidebar-content.js.map +0 -1
- package/esm2022/sidebar/lib/sidebar-context.js +0 -3
- package/esm2022/sidebar/lib/sidebar-context.js.map +0 -1
- package/esm2022/sidebar/lib/sidebar-footer.js +0 -20
- package/esm2022/sidebar/lib/sidebar-footer.js.map +0 -1
- package/esm2022/sidebar/lib/sidebar-group/sidebar-group.js +0 -341
- package/esm2022/sidebar/lib/sidebar-group/sidebar-group.js.map +0 -1
- package/esm2022/sidebar/lib/sidebar-header.js +0 -20
- package/esm2022/sidebar/lib/sidebar-header.js.map +0 -1
- package/esm2022/sidebar/lib/sidebar-item/sidebar-item.js +0 -216
- package/esm2022/sidebar/lib/sidebar-item/sidebar-item.js.map +0 -1
- package/esm2022/sidebar/lib/sidebar-item-host.js +0 -39
- package/esm2022/sidebar/lib/sidebar-item-host.js.map +0 -1
- package/esm2022/sidebar/lib/sidebar-item-icon.js +0 -14
- package/esm2022/sidebar/lib/sidebar-item-icon.js.map +0 -1
- package/esm2022/sidebar/lib/sidebar-mode.js +0 -1
- package/esm2022/sidebar/lib/sidebar-mode.js.map +0 -1
- package/esm2022/sidebar/lib/sidebar-rail/sidebar-rail.js +0 -202
- package/esm2022/sidebar/lib/sidebar-rail/sidebar-rail.js.map +0 -1
- package/esm2022/sidebar/lib/sidebar-trigger/sidebar-trigger.js +0 -159
- package/esm2022/sidebar/lib/sidebar-trigger/sidebar-trigger.js.map +0 -1
- package/esm2022/sidebar/lib/sidebar-workspace/sidebar-workspace.directives.js +0 -35
- package/esm2022/sidebar/lib/sidebar-workspace/sidebar-workspace.directives.js.map +0 -1
- package/esm2022/sidebar/lib/sidebar-workspace/sidebar-workspace.js +0 -107
- package/esm2022/sidebar/lib/sidebar-workspace/sidebar-workspace.js.map +0 -1
- package/esm2022/sidebar/lib/sidebar-workspace/sidebar-workspace.types.js +0 -1
- package/esm2022/sidebar/lib/sidebar-workspace/sidebar-workspace.types.js.map +0 -1
- package/esm2022/sidebar/malva-ui-core-sidebar.js +0 -5
- package/esm2022/sidebar/malva-ui-core-sidebar.js.map +0 -1
- package/esm2022/skeleton/index.js +0 -2
- package/esm2022/skeleton/index.js.map +0 -1
- package/esm2022/skeleton/lib/skeleton/skeleton.js +0 -78
- package/esm2022/skeleton/lib/skeleton/skeleton.js.map +0 -1
- package/esm2022/skeleton/malva-ui-core-skeleton.js +0 -5
- package/esm2022/skeleton/malva-ui-core-skeleton.js.map +0 -1
- package/esm2022/slider/index.js +0 -3
- package/esm2022/slider/index.js.map +0 -1
- package/esm2022/slider/lib/slider/slider-tooltip-def.js +0 -31
- package/esm2022/slider/lib/slider/slider-tooltip-def.js.map +0 -1
- package/esm2022/slider/lib/slider/slider.js +0 -468
- package/esm2022/slider/lib/slider/slider.js.map +0 -1
- package/esm2022/slider/malva-ui-core-slider.js +0 -5
- package/esm2022/slider/malva-ui-core-slider.js.map +0 -1
- package/esm2022/split-pane/index.js +0 -4
- package/esm2022/split-pane/index.js.map +0 -1
- package/esm2022/split-pane/lib/split-pane/split-pane-panel.js +0 -49
- package/esm2022/split-pane/lib/split-pane/split-pane-panel.js.map +0 -1
- package/esm2022/split-pane/lib/split-pane/split-pane.js +0 -290
- package/esm2022/split-pane/lib/split-pane/split-pane.js.map +0 -1
- package/esm2022/split-pane/lib/split-pane/split-pane.types.js +0 -1
- package/esm2022/split-pane/lib/split-pane/split-pane.types.js.map +0 -1
- package/esm2022/split-pane/malva-ui-core-split-pane.js +0 -5
- package/esm2022/split-pane/malva-ui-core-split-pane.js.map +0 -1
- package/esm2022/status-indicator/index.js +0 -2
- package/esm2022/status-indicator/index.js.map +0 -1
- package/esm2022/status-indicator/lib/status-indicator/status-indicator.js +0 -71
- package/esm2022/status-indicator/lib/status-indicator/status-indicator.js.map +0 -1
- package/esm2022/status-indicator/malva-ui-core-status-indicator.js +0 -5
- package/esm2022/status-indicator/malva-ui-core-status-indicator.js.map +0 -1
- package/esm2022/stepper/index.js +0 -5
- package/esm2022/stepper/index.js.map +0 -1
- package/esm2022/stepper/lib/stepper/step-header.js +0 -46
- package/esm2022/stepper/lib/stepper/step-header.js.map +0 -1
- package/esm2022/stepper/lib/stepper/step.js +0 -65
- package/esm2022/stepper/lib/stepper/step.js.map +0 -1
- package/esm2022/stepper/lib/stepper/stepper-token.js +0 -4
- package/esm2022/stepper/lib/stepper/stepper-token.js.map +0 -1
- package/esm2022/stepper/lib/stepper/stepper.js +0 -216
- package/esm2022/stepper/lib/stepper/stepper.js.map +0 -1
- package/esm2022/stepper/lib/stepper/stepper.types.js +0 -1
- package/esm2022/stepper/lib/stepper/stepper.types.js.map +0 -1
- package/esm2022/stepper/malva-ui-core-stepper.js +0 -5
- package/esm2022/stepper/malva-ui-core-stepper.js.map +0 -1
- package/esm2022/switch/index.js +0 -3
- package/esm2022/switch/index.js.map +0 -1
- package/esm2022/switch/lib/switch/switch.js +0 -190
- package/esm2022/switch/lib/switch/switch.js.map +0 -1
- package/esm2022/switch/lib/switch-group/switch-group.js +0 -68
- package/esm2022/switch/lib/switch-group/switch-group.js.map +0 -1
- package/esm2022/switch/lib/switch-group-token.js +0 -3
- package/esm2022/switch/lib/switch-group-token.js.map +0 -1
- package/esm2022/switch/malva-ui-core-switch.js +0 -5
- package/esm2022/switch/malva-ui-core-switch.js.map +0 -1
- package/esm2022/tabs/index.js +0 -9
- package/esm2022/tabs/index.js.map +0 -1
- package/esm2022/tabs/lib/tab/tab.js +0 -72
- package/esm2022/tabs/lib/tab/tab.js.map +0 -1
- package/esm2022/tabs/lib/tab-content/tab-content.js +0 -19
- package/esm2022/tabs/lib/tab-content/tab-content.js.map +0 -1
- package/esm2022/tabs/lib/tab-content-def.js +0 -14
- package/esm2022/tabs/lib/tab-content-def.js.map +0 -1
- package/esm2022/tabs/lib/tab-def.js +0 -17
- package/esm2022/tabs/lib/tab-def.js.map +0 -1
- package/esm2022/tabs/lib/tab-group-token.js +0 -3
- package/esm2022/tabs/lib/tab-group-token.js.map +0 -1
- package/esm2022/tabs/lib/tab-item/tab-item.js +0 -44
- package/esm2022/tabs/lib/tab-item/tab-item.js.map +0 -1
- package/esm2022/tabs/lib/tabs/tabs.js +0 -542
- package/esm2022/tabs/lib/tabs/tabs.js.map +0 -1
- package/esm2022/tabs/lib/tabs.service.js +0 -83
- package/esm2022/tabs/lib/tabs.service.js.map +0 -1
- package/esm2022/tabs/malva-ui-core-tabs.js +0 -5
- package/esm2022/tabs/malva-ui-core-tabs.js.map +0 -1
- package/esm2022/textarea/index.js +0 -2
- package/esm2022/textarea/index.js.map +0 -1
- package/esm2022/textarea/lib/textarea/textarea.js +0 -194
- package/esm2022/textarea/lib/textarea/textarea.js.map +0 -1
- package/esm2022/textarea/malva-ui-core-textarea.js +0 -5
- package/esm2022/textarea/malva-ui-core-textarea.js.map +0 -1
- package/esm2022/tile/index.js +0 -3
- package/esm2022/tile/index.js.map +0 -1
- package/esm2022/tile/lib/tile/tile.js +0 -39
- package/esm2022/tile/lib/tile/tile.js.map +0 -1
- package/esm2022/tile/lib/tile-header.js +0 -14
- package/esm2022/tile/lib/tile-header.js.map +0 -1
- package/esm2022/tile/malva-ui-core-tile.js +0 -5
- package/esm2022/tile/malva-ui-core-tile.js.map +0 -1
- package/esm2022/time-picker/index.js +0 -2
- package/esm2022/time-picker/index.js.map +0 -1
- package/esm2022/time-picker/lib/time-picker/time-picker.js +0 -310
- package/esm2022/time-picker/lib/time-picker/time-picker.js.map +0 -1
- package/esm2022/time-picker/lib/time-picker-column/time-picker-column.js +0 -216
- package/esm2022/time-picker/lib/time-picker-column/time-picker-column.js.map +0 -1
- package/esm2022/time-picker/malva-ui-core-time-picker.js +0 -5
- package/esm2022/time-picker/malva-ui-core-time-picker.js.map +0 -1
- package/esm2022/timeline/index.js +0 -6
- package/esm2022/timeline/index.js.map +0 -1
- package/esm2022/timeline/lib/timeline/timeline-item-icon.js +0 -31
- package/esm2022/timeline/lib/timeline/timeline-item-icon.js.map +0 -1
- package/esm2022/timeline/lib/timeline/timeline-item-meta.js +0 -31
- package/esm2022/timeline/lib/timeline/timeline-item-meta.js.map +0 -1
- package/esm2022/timeline/lib/timeline/timeline-item.js +0 -69
- package/esm2022/timeline/lib/timeline/timeline-item.js.map +0 -1
- package/esm2022/timeline/lib/timeline/timeline.js +0 -36
- package/esm2022/timeline/lib/timeline/timeline.js.map +0 -1
- package/esm2022/timeline/lib/timeline/timeline.types.js +0 -1
- package/esm2022/timeline/lib/timeline/timeline.types.js.map +0 -1
- package/esm2022/timeline/malva-ui-core-timeline.js +0 -5
- package/esm2022/timeline/malva-ui-core-timeline.js.map +0 -1
- package/esm2022/title/index.js +0 -2
- package/esm2022/title/index.js.map +0 -1
- package/esm2022/title/lib/title/title.js +0 -171
- package/esm2022/title/lib/title/title.js.map +0 -1
- package/esm2022/title/malva-ui-core-title.js +0 -5
- package/esm2022/title/malva-ui-core-title.js.map +0 -1
- package/esm2022/toast/index.js +0 -13
- package/esm2022/toast/index.js.map +0 -1
- package/esm2022/toast/lib/abstract-toast-container.js +0 -50
- package/esm2022/toast/lib/abstract-toast-container.js.map +0 -1
- package/esm2022/toast/lib/abstract-toast-item.js +0 -75
- package/esm2022/toast/lib/abstract-toast-item.js.map +0 -1
- package/esm2022/toast/lib/abstract-toast.service.js +0 -176
- package/esm2022/toast/lib/abstract-toast.service.js.map +0 -1
- package/esm2022/toast/lib/toast-container/toast-container.js +0 -61
- package/esm2022/toast/lib/toast-container/toast-container.js.map +0 -1
- package/esm2022/toast/lib/toast-item/toast-item.js +0 -62
- package/esm2022/toast/lib/toast-item/toast-item.js.map +0 -1
- package/esm2022/toast/lib/toast-ref.js +0 -54
- package/esm2022/toast/lib/toast-ref.js.map +0 -1
- package/esm2022/toast/lib/toast-timer.js +0 -37
- package/esm2022/toast/lib/toast-timer.js.map +0 -1
- package/esm2022/toast/lib/toast.directives.js +0 -76
- package/esm2022/toast/lib/toast.directives.js.map +0 -1
- package/esm2022/toast/lib/toast.service.js +0 -127
- package/esm2022/toast/lib/toast.service.js.map +0 -1
- package/esm2022/toast/lib/toast.types.js +0 -39
- package/esm2022/toast/lib/toast.types.js.map +0 -1
- package/esm2022/toast/malva-ui-core-toast.js +0 -5
- package/esm2022/toast/malva-ui-core-toast.js.map +0 -1
- package/esm2022/tokenizer/index.js +0 -4
- package/esm2022/tokenizer/index.js.map +0 -1
- package/esm2022/tokenizer/lib/token/token.js +0 -123
- package/esm2022/tokenizer/lib/token/token.js.map +0 -1
- package/esm2022/tokenizer/lib/token-template.js +0 -23
- package/esm2022/tokenizer/lib/token-template.js.map +0 -1
- package/esm2022/tokenizer/lib/tokenizer/tokenizer.js +0 -324
- package/esm2022/tokenizer/lib/tokenizer/tokenizer.js.map +0 -1
- package/esm2022/tokenizer/malva-ui-core-tokenizer.js +0 -5
- package/esm2022/tokenizer/malva-ui-core-tokenizer.js.map +0 -1
- package/esm2022/toolbar/index.js +0 -4
- package/esm2022/toolbar/index.js.map +0 -1
- package/esm2022/toolbar/lib/toolbar/toolbar-spacer.js +0 -13
- package/esm2022/toolbar/lib/toolbar/toolbar-spacer.js.map +0 -1
- package/esm2022/toolbar/lib/toolbar/toolbar-widget.js +0 -106
- package/esm2022/toolbar/lib/toolbar/toolbar-widget.js.map +0 -1
- package/esm2022/toolbar/lib/toolbar/toolbar.js +0 -19
- package/esm2022/toolbar/lib/toolbar/toolbar.js.map +0 -1
- package/esm2022/toolbar/malva-ui-core-toolbar.js +0 -5
- package/esm2022/toolbar/malva-ui-core-toolbar.js.map +0 -1
- package/esm2022/tooltip/index.js +0 -4
- package/esm2022/tooltip/index.js.map +0 -1
- package/esm2022/tooltip/lib/tooltip/tooltip-panel.js +0 -69
- package/esm2022/tooltip/lib/tooltip/tooltip-panel.js.map +0 -1
- package/esm2022/tooltip/lib/tooltip/tooltip.js +0 -352
- package/esm2022/tooltip/lib/tooltip/tooltip.js.map +0 -1
- package/esm2022/tooltip/lib/tooltip/tooltip.types.js +0 -1
- package/esm2022/tooltip/lib/tooltip/tooltip.types.js.map +0 -1
- package/esm2022/tooltip/malva-ui-core-tooltip.js +0 -5
- package/esm2022/tooltip/malva-ui-core-tooltip.js.map +0 -1
- package/esm2022/tree/index.js +0 -5
- package/esm2022/tree/index.js.map +0 -1
- package/esm2022/tree/lib/tree/tree-context.js +0 -7
- package/esm2022/tree/lib/tree/tree-context.js.map +0 -1
- package/esm2022/tree/lib/tree/tree-node-def.js +0 -34
- package/esm2022/tree/lib/tree/tree-node-def.js.map +0 -1
- package/esm2022/tree/lib/tree/tree-node.js +0 -1
- package/esm2022/tree/lib/tree/tree-node.js.map +0 -1
- package/esm2022/tree/lib/tree/tree-subtree.js +0 -107
- package/esm2022/tree/lib/tree/tree-subtree.js.map +0 -1
- package/esm2022/tree/lib/tree/tree.js +0 -362
- package/esm2022/tree/lib/tree/tree.js.map +0 -1
- package/esm2022/tree/malva-ui-core-tree.js +0 -5
- package/esm2022/tree/malva-ui-core-tree.js.map +0 -1
- package/expand/index.d.ts +0 -2
- package/expand/lib/expand/expand-content.d.ts +0 -26
- package/expand/lib/expand/expand.d.ts +0 -74
- package/expand/malva-ui-core-expand.d.ts +0 -5
- package/file-upload/index.d.ts +0 -4
- package/file-upload/lib/file-upload/file-upload.d.ts +0 -138
- package/file-upload/lib/file-upload/file-upload.types.d.ts +0 -42
- package/file-upload/lib/file-upload-action.d.ts +0 -53
- package/file-upload/lib/file-upload-item/file-upload-item.d.ts +0 -30
- package/file-upload/malva-ui-core-file-upload.d.ts +0 -5
- package/filter/index.d.ts +0 -3
- package/filter/lib/filter/filter.d.ts +0 -156
- package/filter/lib/filter.types.d.ts +0 -75
- package/filter/lib/smart-filter-bar/smart-filter-bar.d.ts +0 -153
- package/filter/malva-ui-core-filter.d.ts +0 -5
- package/form/index.d.ts +0 -6
- package/form/lib/fieldset/fieldset.d.ts +0 -58
- package/form/lib/fieldset-span.d.ts +0 -28
- package/form/lib/form/form.d.ts +0 -37
- package/form/lib/form-actions.d.ts +0 -20
- package/form/lib/form-gap.d.ts +0 -5
- package/form/lib/form-header.d.ts +0 -18
- package/form/lib/form.types.d.ts +0 -13
- package/form/malva-ui-core-form.d.ts +0 -5
- package/form-utils/index.d.ts +0 -15
- package/form-utils/lib/aria-value-bridge.d.ts +0 -45
- package/form-utils/lib/description/description.d.ts +0 -16
- package/form-utils/lib/focusable-group-base.d.ts +0 -76
- package/form-utils/lib/form-control-base/signal-form-control-base.d.ts +0 -159
- package/form-utils/lib/form-control-sides.d.ts +0 -20
- package/form-utils/lib/form-control-wrapper/form-control-wrapper-control.d.ts +0 -6
- package/form-utils/lib/form-control-wrapper/form-control-wrapper.d.ts +0 -20
- package/form-utils/lib/form-field/form-field.d.ts +0 -68
- package/form-utils/lib/hint/hint.d.ts +0 -5
- package/form-utils/lib/label/label.d.ts +0 -22
- package/form-utils/lib/message/message.d.ts +0 -7
- package/form-utils/lib/models/error-display-strategy.d.ts +0 -1
- package/form-utils/lib/models/form-control-connector.d.ts +0 -41
- package/form-utils/lib/models/form-state.d.ts +0 -1
- package/form-utils/lib/selection.service.d.ts +0 -27
- package/form-utils/malva-ui-core-form-utils.d.ts +0 -5
- package/form-utils/testing/index.d.ts +0 -1
- package/form-utils/testing/lib/forms-binding-matrix.d.ts +0 -47
- package/form-utils/testing/malva-ui-core-form-utils-testing.d.ts +0 -5
- package/index.d.ts +0 -69
- package/input/index.d.ts +0 -3
- package/input/lib/input/input-native.d.ts +0 -36
- package/input/lib/input/input-value-accessor.d.ts +0 -11
- package/input/lib/input/input.d.ts +0 -189
- package/input/lib/input/password-strength.d.ts +0 -34
- package/input/malva-ui-core-input.d.ts +0 -5
- package/kbd/index.d.ts +0 -1
- package/kbd/lib/kbd/kbd.d.ts +0 -52
- package/kbd/malva-ui-core-kbd.d.ts +0 -5
- package/layout/index.d.ts +0 -4
- package/layout/lib/layout/directives/MlvLayoutSide.d.ts +0 -6
- package/layout/lib/layout/directives/MlvLayoutTop.d.ts +0 -6
- package/layout/lib/layout/layout.d.ts +0 -20
- package/layout/lib/layout/services/theme.service.d.ts +0 -33
- package/layout/malva-ui-core-layout.d.ts +0 -5
- package/link/index.d.ts +0 -2
- package/link/lib/link/link.d.ts +0 -15
- package/link/lib/link/link.directives.d.ts +0 -10
- package/link/malva-ui-core-link.d.ts +0 -5
- package/list/index.d.ts +0 -13
- package/list/lib/list/list.d.ts +0 -25
- package/list/lib/list-item/list-item.d.ts +0 -67
- package/list/lib/list-item-actions.d.ts +0 -12
- package/list/lib/list-item-byline.d.ts +0 -5
- package/list/lib/list-item-group/list-item-group.d.ts +0 -11
- package/list/lib/list-item-link/list-item-link.d.ts +0 -8
- package/list/lib/list-item-media.d.ts +0 -5
- package/list/lib/list-item-meta.d.ts +0 -5
- package/list/lib/list-item-prefix.d.ts +0 -5
- package/list/lib/list-item-suffix.d.ts +0 -5
- package/list/lib/list-item-template.d.ts +0 -10
- package/list/lib/list-item-title.d.ts +0 -5
- package/list/lib/list-selectable.d.ts +0 -73
- package/list/malva-ui-core-list.d.ts +0 -5
- package/loader/index.d.ts +0 -1
- package/loader/lib/loader/loader.d.ts +0 -84
- package/loader/malva-ui-core-loader.d.ts +0 -5
- package/malva-ui-core.d.ts +0 -5
- package/menu/index.d.ts +0 -9
- package/menu/lib/menu/menu-group-label.d.ts +0 -22
- package/menu/lib/menu/menu-group.d.ts +0 -27
- package/menu/lib/menu/menu-item.d.ts +0 -76
- package/menu/lib/menu/menu-separator.d.ts +0 -18
- package/menu/lib/menu/menu-trigger.d.ts +0 -255
- package/menu/lib/menu/menu.d.ts +0 -149
- package/menu/lib/menu/menu.types.d.ts +0 -13
- package/menu/lib/menu/menubar.d.ts +0 -131
- package/menu/lib/menu/menubar.types.d.ts +0 -82
- package/menu/lib/menu/submenu-aim.d.ts +0 -10
- package/menu/malva-ui-core-menu.d.ts +0 -5
- package/notification/index.d.ts +0 -4
- package/notification/lib/notification-item/notification-item.d.ts +0 -20
- package/notification/lib/notification-ref.d.ts +0 -12
- package/notification/lib/notification.service.d.ts +0 -43
- package/notification/lib/notification.types.d.ts +0 -52
- package/notification/malva-ui-core-notification.d.ts +0 -5
- package/number-input/index.d.ts +0 -1
- package/number-input/lib/number-input/number-input.d.ts +0 -162
- package/number-input/malva-ui-core-number-input.d.ts +0 -5
- package/page/index.d.ts +0 -14
- package/page/lib/page/page-scroll.token.d.ts +0 -19
- package/page/lib/page/page-snap-controller.d.ts +0 -87
- package/page/lib/page/page-snap.directive.d.ts +0 -40
- package/page/lib/page/page.d.ts +0 -74
- package/page/lib/page-content/page-aside.d.ts +0 -7
- package/page/lib/page-content/page-content.d.ts +0 -37
- package/page/lib/page-dock/page-dock.d.ts +0 -50
- package/page/lib/page-dock/page-dock.slots.d.ts +0 -16
- package/page/lib/page-header/page-header.d.ts +0 -77
- package/page/lib/page-header/page-header.directives.d.ts +0 -50
- package/page/lib/page-shell/page-shell-color.d.ts +0 -48
- package/page/lib/page-shell/page-shell-css-color.d.ts +0 -20
- package/page/lib/page-shell/page-shell.d.ts +0 -44
- package/page/lib/page-shell/page-shell.slots.d.ts +0 -16
- package/page/lib/page-summary/page-summary-item.d.ts +0 -11
- package/page/lib/page-summary/page-summary.d.ts +0 -36
- package/page/malva-ui-core-page.d.ts +0 -5
- package/pagination/index.d.ts +0 -4
- package/pagination/lib/pagination/pagination.d.ts +0 -182
- package/pagination/lib/pagination/pagination.directives.d.ts +0 -44
- package/pagination/lib/pagination/pagination.model.d.ts +0 -6
- package/pagination/lib/pagination/pagination.service.d.ts +0 -26
- package/pagination/malva-ui-core-pagination.d.ts +0 -5
- package/pin-input/index.d.ts +0 -2
- package/pin-input/lib/pin-input/pin-input-separator.d.ts +0 -24
- package/pin-input/lib/pin-input/pin-input.d.ts +0 -176
- package/pin-input/malva-ui-core-pin-input.d.ts +0 -5
- package/popup/index.d.ts +0 -9
- package/popup/lib/popup/popup.d.ts +0 -343
- package/popup/lib/popup-container/popup-container.d.ts +0 -61
- package/popup/lib/popup-container/popup-container.token.d.ts +0 -34
- package/popup/lib/popup-content.d.ts +0 -6
- package/popup/lib/popup-header-content.d.ts +0 -18
- package/popup/lib/popup-pinned-content.d.ts +0 -17
- package/popup/lib/popup-positions.d.ts +0 -105
- package/popup/lib/popup-trigger/popup-trigger.d.ts +0 -102
- package/popup/lib/popup.service.d.ts +0 -159
- package/popup/malva-ui-core-popup.d.ts +0 -5
- package/progress/index.d.ts +0 -1
- package/progress/lib/progress/progress.d.ts +0 -69
- package/progress/malva-ui-core-progress.d.ts +0 -5
- package/radio/index.d.ts +0 -2
- package/radio/lib/radio/radio.d.ts +0 -87
- package/radio/lib/radio-group/radio-group.d.ts +0 -35
- package/radio/lib/radio-group-token.d.ts +0 -7
- package/radio/malva-ui-core-radio.d.ts +0 -5
- package/rating/index.d.ts +0 -1
- package/rating/lib/rating/rating.d.ts +0 -100
- package/rating/malva-ui-core-rating.d.ts +0 -5
- package/scrollbar/index.d.ts +0 -1
- package/scrollbar/lib/scrollbar/scrollbar.d.ts +0 -166
- package/scrollbar/malva-ui-core-scrollbar.d.ts +0 -5
- package/search-field/index.d.ts +0 -2
- package/search-field/lib/search-field/search-field.d.ts +0 -347
- package/search-field/lib/search-field/search-overlay-content.d.ts +0 -59
- package/search-field/malva-ui-core-search-field.d.ts +0 -5
- package/segmented/index.d.ts +0 -4
- package/segmented/lib/segmented/segmented.d.ts +0 -80
- package/segmented/lib/segmented-item/segmented-item.d.ts +0 -89
- package/segmented/lib/segmented-token.d.ts +0 -22
- package/segmented/lib/segmented.types.d.ts +0 -9
- package/segmented/malva-ui-core-segmented.d.ts +0 -5
- package/select/index.d.ts +0 -3
- package/select/lib/select/select.d.ts +0 -379
- package/select/lib/select-option.d.ts +0 -1
- package/select/lib/select-template.directives.d.ts +0 -14
- package/select/malva-ui-core-select.d.ts +0 -5
- package/sidebar/index.d.ts +0 -15
- package/sidebar/lib/sidebar/sidebar.d.ts +0 -134
- package/sidebar/lib/sidebar-content.d.ts +0 -11
- package/sidebar/lib/sidebar-context.d.ts +0 -23
- package/sidebar/lib/sidebar-footer.d.ts +0 -9
- package/sidebar/lib/sidebar-group/sidebar-group.d.ts +0 -127
- package/sidebar/lib/sidebar-header.d.ts +0 -9
- package/sidebar/lib/sidebar-item/sidebar-item.d.ts +0 -104
- package/sidebar/lib/sidebar-item-host.d.ts +0 -18
- package/sidebar/lib/sidebar-item-icon.d.ts +0 -6
- package/sidebar/lib/sidebar-mode.d.ts +0 -2
- package/sidebar/lib/sidebar-rail/sidebar-rail.d.ts +0 -54
- package/sidebar/lib/sidebar-trigger/sidebar-trigger.d.ts +0 -67
- package/sidebar/lib/sidebar-workspace/sidebar-workspace.d.ts +0 -54
- package/sidebar/lib/sidebar-workspace/sidebar-workspace.directives.d.ts +0 -19
- package/sidebar/lib/sidebar-workspace/sidebar-workspace.types.d.ts +0 -20
- package/sidebar/malva-ui-core-sidebar.d.ts +0 -5
- package/skeleton/index.d.ts +0 -1
- package/skeleton/lib/skeleton/skeleton.d.ts +0 -60
- package/skeleton/malva-ui-core-skeleton.d.ts +0 -5
- package/slider/index.d.ts +0 -2
- package/slider/lib/slider/slider-tooltip-def.d.ts +0 -39
- package/slider/lib/slider/slider.d.ts +0 -171
- package/slider/malva-ui-core-slider.d.ts +0 -5
- package/split-pane/index.d.ts +0 -3
- package/split-pane/lib/split-pane/split-pane-panel.d.ts +0 -34
- package/split-pane/lib/split-pane/split-pane.d.ts +0 -98
- package/split-pane/lib/split-pane/split-pane.types.d.ts +0 -7
- package/split-pane/malva-ui-core-split-pane.d.ts +0 -5
- package/status-indicator/index.d.ts +0 -1
- package/status-indicator/lib/status-indicator/status-indicator.d.ts +0 -61
- package/status-indicator/malva-ui-core-status-indicator.d.ts +0 -5
- package/stepper/index.d.ts +0 -4
- package/stepper/lib/stepper/step-header.d.ts +0 -34
- package/stepper/lib/stepper/step.d.ts +0 -51
- package/stepper/lib/stepper/stepper-token.d.ts +0 -13
- package/stepper/lib/stepper/stepper.d.ts +0 -98
- package/stepper/lib/stepper/stepper.types.d.ts +0 -4
- package/stepper/malva-ui-core-stepper.d.ts +0 -5
- package/switch/index.d.ts +0 -2
- package/switch/lib/switch/switch.d.ts +0 -118
- package/switch/lib/switch-group/switch-group.d.ts +0 -24
- package/switch/lib/switch-group-token.d.ts +0 -6
- package/switch/malva-ui-core-switch.d.ts +0 -5
- package/tabs/index.d.ts +0 -8
- package/tabs/lib/tab/tab.d.ts +0 -46
- package/tabs/lib/tab-content/tab-content.d.ts +0 -11
- package/tabs/lib/tab-content-def.d.ts +0 -6
- package/tabs/lib/tab-def.d.ts +0 -11
- package/tabs/lib/tab-group-token.d.ts +0 -10
- package/tabs/lib/tab-item/tab-item.d.ts +0 -28
- package/tabs/lib/tabs/tabs.d.ts +0 -202
- package/tabs/lib/tabs.service.d.ts +0 -24
- package/tabs/malva-ui-core-tabs.d.ts +0 -5
- package/textarea/index.d.ts +0 -1
- package/textarea/lib/textarea/textarea.d.ts +0 -77
- package/textarea/malva-ui-core-textarea.d.ts +0 -5
- package/tile/index.d.ts +0 -2
- package/tile/lib/tile/tile.d.ts +0 -20
- package/tile/lib/tile-header.d.ts +0 -6
- package/tile/malva-ui-core-tile.d.ts +0 -5
- package/time-picker/index.d.ts +0 -1
- package/time-picker/lib/time-picker/time-picker.d.ts +0 -135
- package/time-picker/lib/time-picker-column/time-picker-column.d.ts +0 -111
- package/time-picker/malva-ui-core-time-picker.d.ts +0 -5
- package/timeline/index.d.ts +0 -5
- package/timeline/lib/timeline/timeline-item-icon.d.ts +0 -24
- package/timeline/lib/timeline/timeline-item-meta.d.ts +0 -24
- package/timeline/lib/timeline/timeline-item.d.ts +0 -52
- package/timeline/lib/timeline/timeline.d.ts +0 -27
- package/timeline/lib/timeline/timeline.types.d.ts +0 -18
- package/timeline/malva-ui-core-timeline.d.ts +0 -5
- package/title/index.d.ts +0 -1
- package/title/lib/title/title.d.ts +0 -63
- package/title/malva-ui-core-title.d.ts +0 -5
- package/toast/index.d.ts +0 -10
- package/toast/lib/abstract-toast-container.d.ts +0 -29
- package/toast/lib/abstract-toast-item.d.ts +0 -44
- package/toast/lib/abstract-toast.service.d.ts +0 -75
- package/toast/lib/toast-container/toast-container.d.ts +0 -23
- package/toast/lib/toast-item/toast-item.d.ts +0 -25
- package/toast/lib/toast-ref.d.ts +0 -33
- package/toast/lib/toast-timer.d.ts +0 -24
- package/toast/lib/toast.directives.d.ts +0 -13
- package/toast/lib/toast.service.d.ts +0 -41
- package/toast/lib/toast.types.d.ts +0 -139
- package/toast/malva-ui-core-toast.d.ts +0 -5
- package/tokenizer/index.d.ts +0 -3
- package/tokenizer/lib/token/token.d.ts +0 -60
- package/tokenizer/lib/token-template.d.ts +0 -29
- package/tokenizer/lib/tokenizer/tokenizer.d.ts +0 -109
- package/tokenizer/malva-ui-core-tokenizer.d.ts +0 -5
- package/toolbar/index.d.ts +0 -3
- package/toolbar/lib/toolbar/toolbar-spacer.d.ts +0 -5
- package/toolbar/lib/toolbar/toolbar-widget.d.ts +0 -75
- package/toolbar/lib/toolbar/toolbar.d.ts +0 -8
- package/toolbar/malva-ui-core-toolbar.d.ts +0 -5
- package/tooltip/index.d.ts +0 -3
- package/tooltip/lib/tooltip/tooltip-panel.d.ts +0 -26
- package/tooltip/lib/tooltip/tooltip.d.ts +0 -148
- package/tooltip/lib/tooltip/tooltip.types.d.ts +0 -17
- package/tooltip/malva-ui-core-tooltip.d.ts +0 -5
- package/tree/index.d.ts +0 -4
- package/tree/lib/tree/tree-context.d.ts +0 -62
- package/tree/lib/tree/tree-node-def.d.ts +0 -33
- package/tree/lib/tree/tree-node.d.ts +0 -45
- package/tree/lib/tree/tree-subtree.d.ts +0 -63
- package/tree/lib/tree/tree.d.ts +0 -156
- package/tree/malva-ui-core-tree.d.ts +0 -5
|
@@ -0,0 +1,977 @@
|
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { InjectionToken, input, inject, computed, ChangeDetectionStrategy, ViewEncapsulation, Component, viewChild, signal, DestroyRef, afterNextRender, contentChild, effect, isDevMode, Directive, output, Injectable } from '@angular/core';
|
|
3
|
+
import { coerceBooleanProperty } from '@angular/cdk/coercion';
|
|
4
|
+
import { MLV_FORM_UTILS_I18N } from '@malva-ui/i18n';
|
|
5
|
+
import { LucideCircleQuestionMark } from '@lucide/angular';
|
|
6
|
+
import { MlvTooltip } from '@malva-ui/core/tooltip';
|
|
7
|
+
import { NgControl, FormGroupDirective, NgForm, StatusChangeEvent, TouchedChangeEvent, PristineChangeEvent } from '@angular/forms';
|
|
8
|
+
import { FormField } from '@angular/forms/signals';
|
|
9
|
+
import { MlvStructural, mlvNextId, MlvRtlService } from '@malva-ui/cdk/utils';
|
|
10
|
+
import { NgTemplateOutlet } from '@angular/common';
|
|
11
|
+
import { MlvButtonClose } from '@malva-ui/core/button';
|
|
12
|
+
import { Subject } from 'rxjs';
|
|
13
|
+
import { FocusKeyManager } from '@angular/cdk/a11y';
|
|
14
|
+
import { UP_ARROW, DOWN_ARROW } from '@angular/cdk/keycodes';
|
|
15
|
+
|
|
16
|
+
const MLV_FORM_CONTROL = new InjectionToken('MLV_FORM_CONTROL');
|
|
17
|
+
|
|
18
|
+
class MlvLabel {
|
|
19
|
+
/** Id of the control this label names, rendered as the native `for` attribute. */
|
|
20
|
+
for = input('', /* @ts-ignore */
|
|
21
|
+
...(ngDevMode ? [{ debugName: "for" }] : /* istanbul ignore next */ []));
|
|
22
|
+
/**
|
|
23
|
+
* Whether the labelled control is required. Renders a visual `*` marker plus
|
|
24
|
+
* a visually-hidden, translated "required" word so the requirement is
|
|
25
|
+
* announced even where `aria-required` is not surfaced. Controls extending
|
|
26
|
+
* `MlvSignalFormUiControlBase` forward their own `required` input here.
|
|
27
|
+
*/
|
|
28
|
+
required = input(false, { ...(ngDevMode ? { debugName: "required" } : /* istanbul ignore next */ {}), transform: coerceBooleanProperty });
|
|
29
|
+
/**
|
|
30
|
+
* @private The form-utils i18n strings. Optional so a bare `mlv-label` still
|
|
31
|
+
* renders in applications that never called `provideMlvI18n()`.
|
|
32
|
+
*/
|
|
33
|
+
_i18n = inject(MLV_FORM_UTILS_I18N, { optional: true });
|
|
34
|
+
/** @protected Translated word announced after the label of a required control. */
|
|
35
|
+
_requiredText = computed(() => this._i18n?.().required ?? 'required', /* @ts-ignore */
|
|
36
|
+
...(ngDevMode ? [{ debugName: "_requiredText" }] : /* istanbul ignore next */ []));
|
|
37
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: MlvLabel, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
38
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.7", type: MlvLabel, isStandalone: true, selector: "mlv-label", inputs: { for: { classPropertyName: "for", publicName: "for", isSignal: true, isRequired: false, transformFunction: null }, required: { classPropertyName: "required", publicName: "required", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "mlv-label" }, ngImport: i0, template: `
|
|
39
|
+
<label [attr.for]="for()">
|
|
40
|
+
<ng-content />
|
|
41
|
+
@if (required()) {
|
|
42
|
+
<span class="mlv-label__required" aria-hidden="true">*</span>
|
|
43
|
+
<span class="cdk-visually-hidden">{{ _requiredText() }}</span>
|
|
44
|
+
}
|
|
45
|
+
<span class="mlv-label__hint">
|
|
46
|
+
<ng-content select="mlv-hint" />
|
|
47
|
+
</span>
|
|
48
|
+
</label>
|
|
49
|
+
`, isInline: true, styles: ["@layer mlv.components{.mlv-label{display:block;margin-bottom:.25rem;font-size:var(--mlv-font-size-m)}[class*=--tight] .mlv-label:not([class*=--compact],[class*=--comfortable],[class*=--spacious],[class*=--airy]),.mlv-label[class*=--tight]{font-size:var(--mlv-font-size-s)}[class*=--compact] .mlv-label:not([class*=--tight],[class*=--comfortable],[class*=--spacious],[class*=--airy]),.mlv-label[class*=--compact]{font-size:var(--mlv-font-size-m)}[class*=--spacious] .mlv-label:not([class*=--tight],[class*=--compact],[class*=--comfortable],[class*=--airy]),.mlv-label[class*=--spacious]{font-size:var(--mlv-font-size-l)}[class*=--airy] .mlv-label:not([class*=--tight],[class*=--compact],[class*=--comfortable],[class*=--spacious]),.mlv-label[class*=--airy]{font-size:var(--mlv-font-size-xl)}.mlv-label label{display:inline-flex;align-items:baseline;gap:.25rem;color:var(--mlv-text-primary)}.mlv-label__hint{display:inline-flex;align-self:center}.mlv-label__required{color:var(--mlv-text-negative);margin-inline-start:-.125rem}}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
50
|
+
}
|
|
51
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: MlvLabel, decorators: [{
|
|
52
|
+
type: Component,
|
|
53
|
+
args: [{ selector: 'mlv-label', template: `
|
|
54
|
+
<label [attr.for]="for()">
|
|
55
|
+
<ng-content />
|
|
56
|
+
@if (required()) {
|
|
57
|
+
<span class="mlv-label__required" aria-hidden="true">*</span>
|
|
58
|
+
<span class="cdk-visually-hidden">{{ _requiredText() }}</span>
|
|
59
|
+
}
|
|
60
|
+
<span class="mlv-label__hint">
|
|
61
|
+
<ng-content select="mlv-hint" />
|
|
62
|
+
</span>
|
|
63
|
+
</label>
|
|
64
|
+
`, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, host: {
|
|
65
|
+
class: 'mlv-label',
|
|
66
|
+
}, styles: ["@layer mlv.components{.mlv-label{display:block;margin-bottom:.25rem;font-size:var(--mlv-font-size-m)}[class*=--tight] .mlv-label:not([class*=--compact],[class*=--comfortable],[class*=--spacious],[class*=--airy]),.mlv-label[class*=--tight]{font-size:var(--mlv-font-size-s)}[class*=--compact] .mlv-label:not([class*=--tight],[class*=--comfortable],[class*=--spacious],[class*=--airy]),.mlv-label[class*=--compact]{font-size:var(--mlv-font-size-m)}[class*=--spacious] .mlv-label:not([class*=--tight],[class*=--compact],[class*=--comfortable],[class*=--airy]),.mlv-label[class*=--spacious]{font-size:var(--mlv-font-size-l)}[class*=--airy] .mlv-label:not([class*=--tight],[class*=--compact],[class*=--comfortable],[class*=--spacious]),.mlv-label[class*=--airy]{font-size:var(--mlv-font-size-xl)}.mlv-label label{display:inline-flex;align-items:baseline;gap:.25rem;color:var(--mlv-text-primary)}.mlv-label__hint{display:inline-flex;align-self:center}.mlv-label__required{color:var(--mlv-text-negative);margin-inline-start:-.125rem}}\n"] }]
|
|
67
|
+
}], propDecorators: { for: [{ type: i0.Input, args: [{ isSignal: true, alias: "for", required: false }] }], required: [{ type: i0.Input, args: [{ isSignal: true, alias: "required", required: false }] }] } });
|
|
68
|
+
|
|
69
|
+
/**
|
|
70
|
+
* Secondary hint for the control named by the enclosing `mlv-label`.
|
|
71
|
+
*
|
|
72
|
+
* The hint is authored as projected content — `<mlv-hint>Sent to your phone</mlv-hint>` —
|
|
73
|
+
* but it renders as a small `circle-question-mark` icon button that reveals the
|
|
74
|
+
* text in an `mlvTooltip` on hover and on keyboard focus. Rendering an icon
|
|
75
|
+
* rather than inline text keeps the label row on one line no matter how long
|
|
76
|
+
* the hint is, which inline text could not do inside the label's flex row.
|
|
77
|
+
*
|
|
78
|
+
* The projected content itself stays in the DOM (hidden) purely as the source
|
|
79
|
+
* the tooltip string is read from; it is `aria-hidden` so the hint no longer
|
|
80
|
+
* leaks into the accessible name of the labelled control. The same string is
|
|
81
|
+
* put on the trigger's `aria-label`, so assistive tech still reaches it.
|
|
82
|
+
*
|
|
83
|
+
* Use `mlv-description` instead for sentence-length help text that should stay
|
|
84
|
+
* permanently visible below the control.
|
|
85
|
+
*
|
|
86
|
+
* @example Inside a label
|
|
87
|
+
* ```html
|
|
88
|
+
* <mlv-label for="email">
|
|
89
|
+
* Email
|
|
90
|
+
* <mlv-hint>We only use this for receipts</mlv-hint>
|
|
91
|
+
* </mlv-label>
|
|
92
|
+
* ```
|
|
93
|
+
*
|
|
94
|
+
* @example Interpolated, as every `hint`-input control renders it
|
|
95
|
+
* ```html
|
|
96
|
+
* <mlv-hint>{{ hint() }}</mlv-hint>
|
|
97
|
+
* ```
|
|
98
|
+
*/
|
|
99
|
+
class MlvHint {
|
|
100
|
+
/**
|
|
101
|
+
* @protected Wrapper around the projected content. Kept in the DOM (only
|
|
102
|
+
* `display: none`, never `@if`-ed away) because it is the sole source the
|
|
103
|
+
* hint string can be read from, and `textContent` still resolves on a
|
|
104
|
+
* non-displayed element.
|
|
105
|
+
*/
|
|
106
|
+
_source = viewChild.required('source', /* @ts-ignore */
|
|
107
|
+
...(ngDevMode ? [{ debugName: "_source" }] : /* istanbul ignore next */ []));
|
|
108
|
+
/**
|
|
109
|
+
* @protected Trimmed text of the projected content — used both as the tooltip
|
|
110
|
+
* body and as the trigger's accessible name. Empty until the first render has
|
|
111
|
+
* produced the projected DOM, and kept in sync afterwards by `_observer`.
|
|
112
|
+
* While it is empty no trigger is rendered at all, so an empty `mlv-hint`
|
|
113
|
+
* never leaves a nameless icon button behind.
|
|
114
|
+
*/
|
|
115
|
+
_text = signal('', /* @ts-ignore */
|
|
116
|
+
...(ngDevMode ? [{ debugName: "_text" }] : /* istanbul ignore next */ []));
|
|
117
|
+
/**
|
|
118
|
+
* @private Watches the projected content for changes. Interpolated hints
|
|
119
|
+
* (`<mlv-hint>{{ hint() }}</mlv-hint>`) mutate a text node owned by the
|
|
120
|
+
* *parent* view, which no signal in this component can depend on — and
|
|
121
|
+
* `textContent` is not a reactive read, so an effect would evaluate once and
|
|
122
|
+
* never re-run. A MutationObserver is the only thing that sees the change.
|
|
123
|
+
*/
|
|
124
|
+
_observer = null;
|
|
125
|
+
/** @private Disconnects `_observer` when the component is destroyed. */
|
|
126
|
+
_destroyRef = inject(DestroyRef);
|
|
127
|
+
constructor() {
|
|
128
|
+
// Deferred to `afterNextRender` so it never runs on the server, where there
|
|
129
|
+
// is no DOM to read and no MutationObserver to construct.
|
|
130
|
+
afterNextRender(() => {
|
|
131
|
+
const sourceEl = this._source().nativeElement;
|
|
132
|
+
this._readText(sourceEl);
|
|
133
|
+
if (typeof MutationObserver === 'undefined') {
|
|
134
|
+
return;
|
|
135
|
+
}
|
|
136
|
+
this._observer = new MutationObserver(() => this._readText(sourceEl));
|
|
137
|
+
this._observer.observe(sourceEl, {
|
|
138
|
+
childList: true,
|
|
139
|
+
characterData: true,
|
|
140
|
+
subtree: true,
|
|
141
|
+
});
|
|
142
|
+
});
|
|
143
|
+
this._destroyRef.onDestroy(() => this._observer?.disconnect());
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* @protected Swallows the trigger's click so it does not read as an
|
|
147
|
+
* activation of the enclosing `<label>`. `preventDefault()` stops the label's
|
|
148
|
+
* native "focus the labelled control" behaviour, and `stopPropagation()`
|
|
149
|
+
* stops click handlers bound on `mlv-label` itself — `mlv-select` binds one
|
|
150
|
+
* there to open its dropdown — from firing when the user only wanted the
|
|
151
|
+
* hint. Both are required; neither alone covers the other case.
|
|
152
|
+
*/
|
|
153
|
+
_onClick(event) {
|
|
154
|
+
event.preventDefault();
|
|
155
|
+
event.stopPropagation();
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* @private Reads the trimmed projected text into `_text`. Setting a signal to
|
|
159
|
+
* an identical string is a no-op, so re-reads triggered by unrelated DOM
|
|
160
|
+
* mutations cannot loop.
|
|
161
|
+
*/
|
|
162
|
+
_readText(sourceEl) {
|
|
163
|
+
this._text.set(sourceEl.textContent?.trim() ?? '');
|
|
164
|
+
}
|
|
165
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: MlvHint, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
166
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.7", type: MlvHint, isStandalone: true, selector: "mlv-hint", host: { classAttribute: "mlv-hint" }, viewQueries: [{ propertyName: "_source", first: true, predicate: ["source"], descendants: true, isSignal: true }], ngImport: i0, template: `
|
|
167
|
+
@if (_text(); as text) {
|
|
168
|
+
<button
|
|
169
|
+
type="button"
|
|
170
|
+
class="mlv-hint__trigger"
|
|
171
|
+
[attr.aria-label]="text"
|
|
172
|
+
[mlvTooltip]="text"
|
|
173
|
+
(click)="_onClick($event)"
|
|
174
|
+
>
|
|
175
|
+
<svg lucideCircleQuestionMark aria-hidden="true" [size]="14"></svg>
|
|
176
|
+
</button>
|
|
177
|
+
}
|
|
178
|
+
<span #source class="mlv-hint__source" aria-hidden="true"
|
|
179
|
+
><ng-content
|
|
180
|
+
/></span>
|
|
181
|
+
`, isInline: true, styles: ["@layer mlv.components{.mlv-hint{display:inline-flex;align-items:center}.mlv-hint__source{display:none}.mlv-hint__trigger{display:inline-flex;align-items:center;justify-content:center;padding:0;border:none;border-radius:var(--mlv-radius-full);background:none;color:var(--mlv-text-tertiary);line-height:0;cursor:help;transition:color var(--mlv-duration-fast) var(--mlv-ease-default)}.mlv-hint__trigger:hover,.mlv-hint__trigger:focus-visible{color:var(--mlv-text-secondary)}.mlv-hint__trigger:focus-visible{outline:var(--mlv-stroke-width-medium) solid var(--mlv-border-focus);outline-offset:var(--mlv-focus-ring-offset)}@media(prefers-reduced-motion:reduce){.mlv-hint__trigger{transition:none}}}\n"], dependencies: [{ kind: "component", type: LucideCircleQuestionMark, selector: "svg[lucideCircleQuestionMark], svg[lucideHelpCircle], svg[lucideCircleHelp]" }, { kind: "directive", type: MlvTooltip, selector: "[mlvTooltip]", inputs: ["mlvTooltip", "tooltipPlacement", "tooltipTone", "tooltipDelay", "tooltipDisabled", "tooltipArrow"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
182
|
+
}
|
|
183
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: MlvHint, decorators: [{
|
|
184
|
+
type: Component,
|
|
185
|
+
args: [{ selector: 'mlv-hint', template: `
|
|
186
|
+
@if (_text(); as text) {
|
|
187
|
+
<button
|
|
188
|
+
type="button"
|
|
189
|
+
class="mlv-hint__trigger"
|
|
190
|
+
[attr.aria-label]="text"
|
|
191
|
+
[mlvTooltip]="text"
|
|
192
|
+
(click)="_onClick($event)"
|
|
193
|
+
>
|
|
194
|
+
<svg lucideCircleQuestionMark aria-hidden="true" [size]="14"></svg>
|
|
195
|
+
</button>
|
|
196
|
+
}
|
|
197
|
+
<span #source class="mlv-hint__source" aria-hidden="true"
|
|
198
|
+
><ng-content
|
|
199
|
+
/></span>
|
|
200
|
+
`, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, host: {
|
|
201
|
+
class: 'mlv-hint',
|
|
202
|
+
}, imports: [LucideCircleQuestionMark, MlvTooltip], styles: ["@layer mlv.components{.mlv-hint{display:inline-flex;align-items:center}.mlv-hint__source{display:none}.mlv-hint__trigger{display:inline-flex;align-items:center;justify-content:center;padding:0;border:none;border-radius:var(--mlv-radius-full);background:none;color:var(--mlv-text-tertiary);line-height:0;cursor:help;transition:color var(--mlv-duration-fast) var(--mlv-ease-default)}.mlv-hint__trigger:hover,.mlv-hint__trigger:focus-visible{color:var(--mlv-text-secondary)}.mlv-hint__trigger:focus-visible{outline:var(--mlv-stroke-width-medium) solid var(--mlv-border-focus);outline-offset:var(--mlv-focus-ring-offset)}@media(prefers-reduced-motion:reduce){.mlv-hint__trigger{transition:none}}}\n"] }]
|
|
203
|
+
}], ctorParameters: () => [], propDecorators: { _source: [{ type: i0.ViewChild, args: ['source', { isSignal: true }] }] } });
|
|
204
|
+
|
|
205
|
+
/**
|
|
206
|
+
* Persistent help text rendered below a form control, in front of the
|
|
207
|
+
* validation message. Projected into `mlv-form-control-wrapper` through its
|
|
208
|
+
* `mlv-description` slot and referenced by the control's `aria-describedby`,
|
|
209
|
+
* so it stays readable while a validation message is shown.
|
|
210
|
+
*
|
|
211
|
+
* @example
|
|
212
|
+
* <mlv-description [id]="descriptionId">
|
|
213
|
+
* We only use this address for receipts.
|
|
214
|
+
* </mlv-description>
|
|
215
|
+
*/
|
|
216
|
+
class MlvDescription {
|
|
217
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: MlvDescription, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
218
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.0.7", type: MlvDescription, isStandalone: true, selector: "mlv-description", host: { classAttribute: "mlv-description" }, ngImport: i0, template: `<ng-content />`, isInline: true, styles: ["@layer mlv.components{.mlv-description{display:block;font-weight:400;font-size:var(--mlv-typography-body-s-size);color:var(--mlv-text-secondary)}}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
219
|
+
}
|
|
220
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: MlvDescription, decorators: [{
|
|
221
|
+
type: Component,
|
|
222
|
+
args: [{ selector: 'mlv-description', template: `<ng-content />`, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, host: {
|
|
223
|
+
class: 'mlv-description',
|
|
224
|
+
}, styles: ["@layer mlv.components{.mlv-description{display:block;font-weight:400;font-size:var(--mlv-typography-body-s-size);color:var(--mlv-text-secondary)}}\n"] }]
|
|
225
|
+
}] });
|
|
226
|
+
|
|
227
|
+
class MlvMessage {
|
|
228
|
+
state = input('default', /* @ts-ignore */
|
|
229
|
+
...(ngDevMode ? [{ debugName: "state" }] : /* istanbul ignore next */ []));
|
|
230
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: MlvMessage, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
231
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.0.7", type: MlvMessage, isStandalone: true, selector: "mlv-message", inputs: { state: { classPropertyName: "state", publicName: "state", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "animate.enter": "enter-animation", "animate.leave": "leave-animation" }, properties: { "class": "\"mlv-message--\" + state()", "attr.role": "state() === 'error' ? 'alert' : null", "attr.aria-live": "state() !== 'default' ? 'polite' : null" }, classAttribute: "mlv-message" }, ngImport: i0, template: ` <ng-content /> `, isInline: true, styles: ["@layer mlv.components{.mlv-message{display:block;font-weight:400;font-size:var(--mlv-typography-body-s-size)}.mlv-message--default{color:var(--mlv-text-secondary)}.mlv-message--success{color:var(--mlv-text-positive)}.mlv-message--info{color:var(--mlv-text-info)}.mlv-message--warning{color:var(--mlv-text-warning)}.mlv-message--error{color:var(--mlv-text-negative)}@media(prefers-reduced-motion:reduce){.mlv-message,.mlv-message *,.mlv-message:before,.mlv-message:after,[class^=mlv-message__],[class*=\" mlv-message__\"],[class^=mlv-message--],[class*=\" mlv-message--\"]{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:var(--mlv-duration-instant)!important}}.enter-animation{animation:mlv-slide-down var(--mlv-duration-normal) var(--mlv-ease-default)}.leave-animation{animation:mlv-slide-down var(--mlv-duration-normal) var(--mlv-ease-default) reverse}}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
232
|
+
}
|
|
233
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: MlvMessage, decorators: [{
|
|
234
|
+
type: Component,
|
|
235
|
+
args: [{ selector: 'mlv-message', host: {
|
|
236
|
+
'animate.enter': 'enter-animation',
|
|
237
|
+
'animate.leave': 'leave-animation',
|
|
238
|
+
class: 'mlv-message',
|
|
239
|
+
'[class]': '"mlv-message--" + state()',
|
|
240
|
+
'[attr.role]': "state() === 'error' ? 'alert' : null",
|
|
241
|
+
'[attr.aria-live]': "state() !== 'default' ? 'polite' : null",
|
|
242
|
+
}, template: ` <ng-content /> `, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, styles: ["@layer mlv.components{.mlv-message{display:block;font-weight:400;font-size:var(--mlv-typography-body-s-size)}.mlv-message--default{color:var(--mlv-text-secondary)}.mlv-message--success{color:var(--mlv-text-positive)}.mlv-message--info{color:var(--mlv-text-info)}.mlv-message--warning{color:var(--mlv-text-warning)}.mlv-message--error{color:var(--mlv-text-negative)}@media(prefers-reduced-motion:reduce){.mlv-message,.mlv-message *,.mlv-message:before,.mlv-message:after,[class^=mlv-message__],[class*=\" mlv-message__\"],[class^=mlv-message--],[class*=\" mlv-message--\"]{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:var(--mlv-duration-instant)!important}}.enter-animation{animation:mlv-slide-down var(--mlv-duration-normal) var(--mlv-ease-default)}.leave-animation{animation:mlv-slide-down var(--mlv-duration-normal) var(--mlv-ease-default) reverse}}\n"] }]
|
|
243
|
+
}], propDecorators: { state: [{ type: i0.Input, args: [{ isSignal: true, alias: "state", required: false }] }] } });
|
|
244
|
+
|
|
245
|
+
const DEFAULT_ERROR_MESSAGES = {
|
|
246
|
+
required: () => 'This field is required',
|
|
247
|
+
email: () => 'Please enter a valid email address',
|
|
248
|
+
min: (err) => `Value must be at least ${err.min}`,
|
|
249
|
+
max: (err) => `Value must be at most ${err.max}`,
|
|
250
|
+
minlength: (err) => {
|
|
251
|
+
const e = err;
|
|
252
|
+
return `Must be at least ${e.requiredLength} characters`;
|
|
253
|
+
},
|
|
254
|
+
maxlength: (err) => {
|
|
255
|
+
const e = err;
|
|
256
|
+
return `Must be at most ${e.requiredLength} characters`;
|
|
257
|
+
},
|
|
258
|
+
pattern: () => 'Invalid format',
|
|
259
|
+
};
|
|
260
|
+
/**
|
|
261
|
+
* Validator keys already reported through {@link MlvFormField}'s dev-mode
|
|
262
|
+
* warning. Module-scoped so a key is named once per application run rather than
|
|
263
|
+
* on every change-detection pass.
|
|
264
|
+
*/
|
|
265
|
+
const WARNED_UNMAPPED_KEYS = new Set();
|
|
266
|
+
class MlvFormField {
|
|
267
|
+
/** Visual state of the field. Overridden to `'error'` when an auto error message is shown. */
|
|
268
|
+
state = input('default', /* @ts-ignore */
|
|
269
|
+
...(ngDevMode ? [{ debugName: "state" }] : /* istanbul ignore next */ []));
|
|
270
|
+
/** Custom validator-key → message map (string or factory) overriding the built-in defaults. */
|
|
271
|
+
errorMessages = input({}, /* @ts-ignore */
|
|
272
|
+
...(ngDevMode ? [{ debugName: "errorMessages" }] : /* istanbul ignore next */ []));
|
|
273
|
+
/** Controls when validation errors become visible. */
|
|
274
|
+
displayStrategy = input('touched', /* @ts-ignore */
|
|
275
|
+
...(ngDevMode ? [{ debugName: "displayStrategy" }] : /* istanbul ignore next */ []));
|
|
276
|
+
/**
|
|
277
|
+
* @private The form-utils i18n strings. Optional so `mlv-form-field` keeps
|
|
278
|
+
* rendering in applications that never called `provideMlvI18n()`.
|
|
279
|
+
*/
|
|
280
|
+
_i18n = inject(MLV_FORM_UTILS_I18N, { optional: true });
|
|
281
|
+
/** @private The projected `NgControl` whose validation state this field reflects. */
|
|
282
|
+
_ngControl = contentChild(NgControl, /* @ts-ignore */
|
|
283
|
+
...(ngDevMode ? [{ debugName: "_ngControl" }] : /* istanbul ignore next */ []));
|
|
284
|
+
/**
|
|
285
|
+
* @private The projected signal-forms `[formField]` directive, when the
|
|
286
|
+
* child control is bound through `@angular/forms/signals` instead of an
|
|
287
|
+
* `NgControl`. Takes precedence over the NgControl path when present.
|
|
288
|
+
*/
|
|
289
|
+
_signalField = contentChild(FormField, /* @ts-ignore */
|
|
290
|
+
...(ngDevMode ? [{ debugName: "_signalField" }] : /* istanbul ignore next */ []));
|
|
291
|
+
/**
|
|
292
|
+
* @private The bound signal-forms `FieldState`, or `null` while no
|
|
293
|
+
* `[formField]` child is projected. `field()` is the `FieldTree`; calling it
|
|
294
|
+
* yields the reactive `FieldState`.
|
|
295
|
+
*/
|
|
296
|
+
_signalFieldState = computed(() => {
|
|
297
|
+
const formField = this._signalField();
|
|
298
|
+
return formField ? formField.field()() : null;
|
|
299
|
+
}, /* @ts-ignore */
|
|
300
|
+
...(ngDevMode ? [{ debugName: "_signalFieldState" }] : /* istanbul ignore next */ []));
|
|
301
|
+
/** @private The ancestor form directive, used to observe submission state. */
|
|
302
|
+
_formDirective = inject(FormGroupDirective, { optional: true }) ??
|
|
303
|
+
inject(NgForm, { optional: true });
|
|
304
|
+
/** @private Current validation errors of the projected control. */
|
|
305
|
+
_controlErrors = signal(null, /* @ts-ignore */
|
|
306
|
+
...(ngDevMode ? [{ debugName: "_controlErrors" }] : /* istanbul ignore next */ []));
|
|
307
|
+
/** @private Whether the projected control has been touched. */
|
|
308
|
+
_controlTouched = signal(false, /* @ts-ignore */
|
|
309
|
+
...(ngDevMode ? [{ debugName: "_controlTouched" }] : /* istanbul ignore next */ []));
|
|
310
|
+
/** @private Whether the projected control is dirty. */
|
|
311
|
+
_controlDirty = signal(false, /* @ts-ignore */
|
|
312
|
+
...(ngDevMode ? [{ debugName: "_controlDirty" }] : /* istanbul ignore next */ []));
|
|
313
|
+
/** @private Whether the ancestor form has been submitted. */
|
|
314
|
+
_formSubmitted = signal(false, /* @ts-ignore */
|
|
315
|
+
...(ngDevMode ? [{ debugName: "_formSubmitted" }] : /* istanbul ignore next */ []));
|
|
316
|
+
constructor() {
|
|
317
|
+
effect((onCleanup) => {
|
|
318
|
+
// Signal-forms path: state is read reactively from the FieldState — no
|
|
319
|
+
// event subscriptions. (The signals interop also exposes a shim
|
|
320
|
+
// NgControl whose `.control` lacks the `events` stream, so the legacy
|
|
321
|
+
// path below must not run for a [formField]-bound child.)
|
|
322
|
+
if (this._signalField())
|
|
323
|
+
return;
|
|
324
|
+
const control = this._ngControl()?.control;
|
|
325
|
+
if (!control)
|
|
326
|
+
return;
|
|
327
|
+
this._controlErrors.set(control.errors);
|
|
328
|
+
this._controlTouched.set(control.touched);
|
|
329
|
+
this._controlDirty.set(control.dirty);
|
|
330
|
+
this._formSubmitted.set(this._formDirective?.submitted ?? false);
|
|
331
|
+
const subscription = control.events.subscribe((event) => {
|
|
332
|
+
if (event instanceof StatusChangeEvent) {
|
|
333
|
+
this._controlErrors.set(control.errors);
|
|
334
|
+
}
|
|
335
|
+
else if (event instanceof TouchedChangeEvent) {
|
|
336
|
+
this._controlTouched.set(event.touched);
|
|
337
|
+
}
|
|
338
|
+
else if (event instanceof PristineChangeEvent) {
|
|
339
|
+
this._controlDirty.set(!event.pristine);
|
|
340
|
+
}
|
|
341
|
+
});
|
|
342
|
+
const formDirective = this._formDirective;
|
|
343
|
+
if (formDirective) {
|
|
344
|
+
const formControl = formDirective.form;
|
|
345
|
+
const formSub = formControl.events.subscribe(() => {
|
|
346
|
+
this._formSubmitted.set(formDirective.submitted);
|
|
347
|
+
});
|
|
348
|
+
subscription.add(formSub);
|
|
349
|
+
}
|
|
350
|
+
onCleanup(() => subscription.unsubscribe());
|
|
351
|
+
});
|
|
352
|
+
// Dev-only diagnostic: a validator key with no mapped message renders the
|
|
353
|
+
// generic fallback, which is correct for users but usually a gap for the
|
|
354
|
+
// author. Warned once per key per application run.
|
|
355
|
+
effect(() => {
|
|
356
|
+
const key = this._unmappedErrorKey();
|
|
357
|
+
if (!key || !isDevMode() || WARNED_UNMAPPED_KEYS.has(key))
|
|
358
|
+
return;
|
|
359
|
+
WARNED_UNMAPPED_KEYS.add(key);
|
|
360
|
+
console.warn(`[mlv-form-field] No message is mapped for the validator key "${key}"; ` +
|
|
361
|
+
`showing the generic message instead. Supply one through [errorMessages].`);
|
|
362
|
+
});
|
|
363
|
+
}
|
|
364
|
+
/** @private Whether validation errors should currently be displayed, per {@link displayStrategy}. */
|
|
365
|
+
_shouldDisplay = computed(() => {
|
|
366
|
+
const signalState = this._signalFieldState();
|
|
367
|
+
switch (this.displayStrategy()) {
|
|
368
|
+
case 'touched':
|
|
369
|
+
return signalState ? signalState.touched() : this._controlTouched();
|
|
370
|
+
case 'dirty':
|
|
371
|
+
return signalState ? signalState.dirty() : this._controlDirty();
|
|
372
|
+
case 'submit':
|
|
373
|
+
// Signal forms: submission is field-tree-level state; the closest
|
|
374
|
+
// per-field proxy is touched (submit() marks all fields touched).
|
|
375
|
+
return signalState ? signalState.touched() : this._formSubmitted();
|
|
376
|
+
case 'immediate':
|
|
377
|
+
return true;
|
|
378
|
+
}
|
|
379
|
+
}, /* @ts-ignore */
|
|
380
|
+
...(ngDevMode ? [{ debugName: "_shouldDisplay" }] : /* istanbul ignore next */ []));
|
|
381
|
+
/**
|
|
382
|
+
* @private Unified error view: `[key, errorPayload]` pairs from whichever
|
|
383
|
+
* forms API the projected control is bound through. Signal-forms
|
|
384
|
+
* `ValidationError`s are keyed by their lower-cased `kind` (matching the
|
|
385
|
+
* legacy reactive keys: `minLength` → `minlength`); the payload is the
|
|
386
|
+
* error object itself (it carries `message` when a rule supplied one).
|
|
387
|
+
*/
|
|
388
|
+
_errorEntries = computed(() => {
|
|
389
|
+
const signalState = this._signalFieldState();
|
|
390
|
+
if (signalState) {
|
|
391
|
+
return signalState
|
|
392
|
+
.errors()
|
|
393
|
+
.map((error) => [error.kind.toLowerCase(), error]);
|
|
394
|
+
}
|
|
395
|
+
const errors = this._controlErrors();
|
|
396
|
+
return errors ? Object.entries(errors) : [];
|
|
397
|
+
}, /* @ts-ignore */
|
|
398
|
+
...(ngDevMode ? [{ debugName: "_errorEntries" }] : /* istanbul ignore next */ []));
|
|
399
|
+
/** The resolved auto error message for the projected control, or `''` when none should show. */
|
|
400
|
+
autoErrorMessage = computed(() => {
|
|
401
|
+
const entries = this._errorEntries();
|
|
402
|
+
if (entries.length === 0 || !this._shouldDisplay())
|
|
403
|
+
return '';
|
|
404
|
+
const customMessages = this.errorMessages();
|
|
405
|
+
const [key, payload] = entries[0];
|
|
406
|
+
const custom = customMessages[key];
|
|
407
|
+
if (custom) {
|
|
408
|
+
return typeof custom === 'function' ? custom(payload) : custom;
|
|
409
|
+
}
|
|
410
|
+
// Signal-forms rules can carry their own message — prefer it.
|
|
411
|
+
const ruleMessage = payload?.message;
|
|
412
|
+
if (ruleMessage)
|
|
413
|
+
return ruleMessage;
|
|
414
|
+
const defaultFn = DEFAULT_ERROR_MESSAGES[key];
|
|
415
|
+
if (defaultFn) {
|
|
416
|
+
return defaultFn(payload);
|
|
417
|
+
}
|
|
418
|
+
// Unknown validator key: never surface the raw key to end users.
|
|
419
|
+
return this._genericErrorMessage();
|
|
420
|
+
}, /* @ts-ignore */
|
|
421
|
+
...(ngDevMode ? [{ debugName: "autoErrorMessage" }] : /* istanbul ignore next */ []));
|
|
422
|
+
/**
|
|
423
|
+
* @private Neutral, translated message shown when a validator key has no
|
|
424
|
+
* consumer-supplied, rule-supplied or built-in message.
|
|
425
|
+
*/
|
|
426
|
+
_genericErrorMessage = computed(() => this._i18n?.().invalidValue ?? 'This value is invalid', /* @ts-ignore */
|
|
427
|
+
...(ngDevMode ? [{ debugName: "_genericErrorMessage" }] : /* istanbul ignore next */ []));
|
|
428
|
+
/**
|
|
429
|
+
* @private The currently displayed validator key that has no mapped message
|
|
430
|
+
* and therefore falls back to {@link _genericErrorMessage} — `null` when a
|
|
431
|
+
* specific message applies. Drives the dev-mode warning only.
|
|
432
|
+
*/
|
|
433
|
+
_unmappedErrorKey = computed(() => {
|
|
434
|
+
const entries = this._errorEntries();
|
|
435
|
+
if (entries.length === 0 || !this._shouldDisplay())
|
|
436
|
+
return null;
|
|
437
|
+
const [key, payload] = entries[0];
|
|
438
|
+
if (this.errorMessages()[key])
|
|
439
|
+
return null;
|
|
440
|
+
if (payload?.message)
|
|
441
|
+
return null;
|
|
442
|
+
if (DEFAULT_ERROR_MESSAGES[key])
|
|
443
|
+
return null;
|
|
444
|
+
return key;
|
|
445
|
+
}, /* @ts-ignore */
|
|
446
|
+
...(ngDevMode ? [{ debugName: "_unmappedErrorKey" }] : /* istanbul ignore next */ []));
|
|
447
|
+
/** The effective visual state: `'error'` when an auto error message is shown, otherwise {@link state}. */
|
|
448
|
+
resolvedState = computed(() => {
|
|
449
|
+
if (this.autoErrorMessage())
|
|
450
|
+
return 'error';
|
|
451
|
+
return this.state();
|
|
452
|
+
}, /* @ts-ignore */
|
|
453
|
+
...(ngDevMode ? [{ debugName: "resolvedState" }] : /* istanbul ignore next */ []));
|
|
454
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: MlvFormField, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
455
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.7", type: MlvFormField, isStandalone: true, selector: "mlv-form-field", inputs: { state: { classPropertyName: "state", publicName: "state", isSignal: true, isRequired: false, transformFunction: null }, errorMessages: { classPropertyName: "errorMessages", publicName: "errorMessages", isSignal: true, isRequired: false, transformFunction: null }, displayStrategy: { classPropertyName: "displayStrategy", publicName: "displayStrategy", isSignal: true, isRequired: false, transformFunction: null } }, queries: [{ propertyName: "_ngControl", first: true, predicate: NgControl, descendants: true, isSignal: true }, { propertyName: "_signalField", first: true, predicate: FormField, descendants: true, isSignal: true }], ngImport: i0, template: `
|
|
456
|
+
<div class="mlv-form-field" [class]="'mlv-form-field--' + resolvedState()">
|
|
457
|
+
<ng-content select="mlv-label" />
|
|
458
|
+
<div class="mlv-form-field__control">
|
|
459
|
+
<ng-content />
|
|
460
|
+
</div>
|
|
461
|
+
<ng-content select="mlv-message" />
|
|
462
|
+
@if (autoErrorMessage()) {
|
|
463
|
+
<mlv-message state="error">{{ autoErrorMessage() }}</mlv-message>
|
|
464
|
+
}
|
|
465
|
+
</div>
|
|
466
|
+
`, isInline: true, styles: ["@layer mlv.components{:host{display:block}.mlv-form-field{display:flex;flex-direction:column}.mlv-form-field__control{display:flex;align-items:center;width:100%}.mlv-form-field__control>*{width:100%}.mlv-form-field--error>.mlv-form-field__control>*>.mlv-form-control-wrapper{--container-border-color: var(--mlv-border-error)}}\n"], dependencies: [{ kind: "component", type: MlvMessage, selector: "mlv-message", inputs: ["state"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
467
|
+
}
|
|
468
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: MlvFormField, decorators: [{
|
|
469
|
+
type: Component,
|
|
470
|
+
args: [{ selector: 'mlv-form-field', imports: [MlvMessage], template: `
|
|
471
|
+
<div class="mlv-form-field" [class]="'mlv-form-field--' + resolvedState()">
|
|
472
|
+
<ng-content select="mlv-label" />
|
|
473
|
+
<div class="mlv-form-field__control">
|
|
474
|
+
<ng-content />
|
|
475
|
+
</div>
|
|
476
|
+
<ng-content select="mlv-message" />
|
|
477
|
+
@if (autoErrorMessage()) {
|
|
478
|
+
<mlv-message state="error">{{ autoErrorMessage() }}</mlv-message>
|
|
479
|
+
}
|
|
480
|
+
</div>
|
|
481
|
+
`, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, styles: ["@layer mlv.components{:host{display:block}.mlv-form-field{display:flex;flex-direction:column}.mlv-form-field__control{display:flex;align-items:center;width:100%}.mlv-form-field__control>*{width:100%}.mlv-form-field--error>.mlv-form-field__control>*>.mlv-form-control-wrapper{--container-border-color: var(--mlv-border-error)}}\n"] }]
|
|
482
|
+
}], ctorParameters: () => [], propDecorators: { state: [{ type: i0.Input, args: [{ isSignal: true, alias: "state", required: false }] }], errorMessages: [{ type: i0.Input, args: [{ isSignal: true, alias: "errorMessages", required: false }] }], displayStrategy: [{ type: i0.Input, args: [{ isSignal: true, alias: "displayStrategy", required: false }] }], _ngControl: [{ type: i0.ContentChild, args: [i0.forwardRef(() => NgControl), { isSignal: true }] }], _signalField: [{ type: i0.ContentChild, args: [i0.forwardRef(() => FormField), { isSignal: true }] }] } });
|
|
483
|
+
|
|
484
|
+
class MlvFormControlPrepend extends MlvStructural {
|
|
485
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: MlvFormControlPrepend, deps: null, target: i0.ɵɵFactoryTarget.Directive });
|
|
486
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.7", type: MlvFormControlPrepend, isStandalone: true, selector: "[mlvFormControlPrepend]", usesInheritance: true, ngImport: i0 });
|
|
487
|
+
}
|
|
488
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: MlvFormControlPrepend, decorators: [{
|
|
489
|
+
type: Directive,
|
|
490
|
+
args: [{ selector: '[mlvFormControlPrepend]' }]
|
|
491
|
+
}] });
|
|
492
|
+
class MlvFormControlAppend extends MlvStructural {
|
|
493
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: MlvFormControlAppend, deps: null, target: i0.ɵɵFactoryTarget.Directive });
|
|
494
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.7", type: MlvFormControlAppend, isStandalone: true, selector: "[mlvFormControlAppend]", usesInheritance: true, ngImport: i0 });
|
|
495
|
+
}
|
|
496
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: MlvFormControlAppend, decorators: [{
|
|
497
|
+
type: Directive,
|
|
498
|
+
args: [{ selector: '[mlvFormControlAppend]' }]
|
|
499
|
+
}] });
|
|
500
|
+
/**
|
|
501
|
+
* Full-width content rendered inside the bordered control, after its main row.
|
|
502
|
+
*
|
|
503
|
+
* Use for secondary, non-interactive control presentation such as strength
|
|
504
|
+
* meters. Prefix and suffix actions remain in their dedicated slots.
|
|
505
|
+
*/
|
|
506
|
+
class MlvFormControlInset extends MlvStructural {
|
|
507
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: MlvFormControlInset, deps: null, target: i0.ɵɵFactoryTarget.Directive });
|
|
508
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.7", type: MlvFormControlInset, isStandalone: true, selector: "[mlvFormControlInset]", usesInheritance: true, ngImport: i0 });
|
|
509
|
+
}
|
|
510
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: MlvFormControlInset, decorators: [{
|
|
511
|
+
type: Directive,
|
|
512
|
+
args: [{ selector: '[mlvFormControlInset]' }]
|
|
513
|
+
}] });
|
|
514
|
+
|
|
515
|
+
/**
|
|
516
|
+
* Shared, forms-transport-agnostic surface for **signal-forms** Malva controls.
|
|
517
|
+
* Owns everything EXCEPT the value/checked model: the
|
|
518
|
+
* Malva field surface (`state`, `label`, `hint`, `message`, `clearable`,
|
|
519
|
+
* `id`, prepend/append slots), the wrapper connector contract
|
|
520
|
+
* ({@link MlvFormControl}), and the signal-forms field↔control bindings —
|
|
521
|
+
* `errors` / `disabled` / `readonly` / `touched` / `dirty` input signals the
|
|
522
|
+
* `[formField]` directive binds automatically, plus the `touch` output the
|
|
523
|
+
* control emits when the user leaves the field.
|
|
524
|
+
*
|
|
525
|
+
* Per the signal-forms contract a component must NOT implement both
|
|
526
|
+
* `ControlValueAccessor` and `FormValueControl`; controls therefore adopt
|
|
527
|
+
* either {@link MlvSignalFormControlBase} or {@link MlvSignalCheckboxControlBase}
|
|
528
|
+
* atomically. Reactive (`[formControl]`)
|
|
529
|
+
* and template-driven (`ngModel`) bindings keep working — Angular binds the
|
|
530
|
+
* signal contract from those directives without extra compatibility code.
|
|
531
|
+
*/
|
|
532
|
+
class MlvSignalFormUiControlBase {
|
|
533
|
+
/** @protected Backing signal for {@link focused}. */
|
|
534
|
+
_focused = signal(false, /* @ts-ignore */
|
|
535
|
+
...(ngDevMode ? [{ debugName: "_focused" }] : /* istanbul ignore next */ []));
|
|
536
|
+
/** Whether the control currently has focus (drives the wrapper's focus ring). */
|
|
537
|
+
focused = this._focused;
|
|
538
|
+
/** Sets the control's focus state (wired to the focus target's focus/blur). */
|
|
539
|
+
setFocused(value) {
|
|
540
|
+
this._focused.set(value);
|
|
541
|
+
}
|
|
542
|
+
/** Explicit consumer-authored visual validation state. */
|
|
543
|
+
state = input('default', /* @ts-ignore */
|
|
544
|
+
...(ngDevMode ? [{ debugName: "state" }] : /* istanbul ignore next */ []));
|
|
545
|
+
/**
|
|
546
|
+
* Whether the control is read-only. Also a signal-forms field binding: when
|
|
547
|
+
* bound via `[formField]`, a `readonly` schema rule drives this input.
|
|
548
|
+
*/
|
|
549
|
+
readonly = input(false, { ...(ngDevMode ? { debugName: "readonly" } : /* istanbul ignore next */ {}), transform: (value) => coerceBooleanProperty(value) });
|
|
550
|
+
/**
|
|
551
|
+
* Whether the control is disabled. Also a signal-forms field binding: when
|
|
552
|
+
* bound via `[formField]`, the field's disabled state drives this input.
|
|
553
|
+
*/
|
|
554
|
+
disabled = input(false, { ...(ngDevMode ? { debugName: "disabled" } : /* istanbul ignore next */ {}), transform: (value) => coerceBooleanProperty(value) });
|
|
555
|
+
/**
|
|
556
|
+
* Whether the control must be filled in. Renders the required marker in
|
|
557
|
+
* `mlv-label` and sets `aria-required` on the control's focus target. Also a
|
|
558
|
+
* signal-forms field binding: when bound via `[formField]`, a `required()`
|
|
559
|
+
* schema rule drives this input.
|
|
560
|
+
*/
|
|
561
|
+
required = input(false, { ...(ngDevMode ? { debugName: "required" } : /* istanbul ignore next */ {}), transform: (value) => coerceBooleanProperty(value) });
|
|
562
|
+
/** Whether the control shows its loading affordance. */
|
|
563
|
+
loading = input(false, { ...(ngDevMode ? { debugName: "loading" } : /* istanbul ignore next */ {}), transform: coerceBooleanProperty });
|
|
564
|
+
/** Whether the control renders a clear (X) affordance while it has a value. */
|
|
565
|
+
clearable = input(false, { ...(ngDevMode ? { debugName: "clearable" } : /* istanbul ignore next */ {}), transform: coerceBooleanProperty });
|
|
566
|
+
/**
|
|
567
|
+
* Fully rounded (stadium) control container. Shared by every control that
|
|
568
|
+
* renders through `mlv-form-control-wrapper`, mirroring `shape="pill"` on
|
|
569
|
+
* buttons and the pill action bar.
|
|
570
|
+
*/
|
|
571
|
+
pill = input(false, { ...(ngDevMode ? { debugName: "pill" } : /* istanbul ignore next */ {}), transform: coerceBooleanProperty });
|
|
572
|
+
/**
|
|
573
|
+
* Signal-forms field binding: current validation errors of the bound field
|
|
574
|
+
* (`[formField]` binds them automatically). Empty when unbound.
|
|
575
|
+
*/
|
|
576
|
+
errors = input([], /* @ts-ignore */
|
|
577
|
+
...(ngDevMode ? [{ debugName: "errors" }] : /* istanbul ignore next */ []));
|
|
578
|
+
/** Signal-forms field binding: whether the bound field is touched. */
|
|
579
|
+
touched = input(false, { ...(ngDevMode ? { debugName: "touched" } : /* istanbul ignore next */ {}), transform: (value) => coerceBooleanProperty(value) });
|
|
580
|
+
/** Signal-forms field binding: whether the bound field is dirty. */
|
|
581
|
+
dirty = input(false, { ...(ngDevMode ? { debugName: "dirty" } : /* istanbul ignore next */ {}), transform: (value) => coerceBooleanProperty(value) });
|
|
582
|
+
/**
|
|
583
|
+
* Effective visual state exposed through the Malva form-control connector.
|
|
584
|
+
* An explicit non-default state wins; otherwise a signal-form validation
|
|
585
|
+
* error becomes visible after the field is touched, matching the default
|
|
586
|
+
* `MlvFormField` error-display strategy.
|
|
587
|
+
*/
|
|
588
|
+
resolvedState = computed(() => {
|
|
589
|
+
const explicitState = this.state();
|
|
590
|
+
if (explicitState !== 'default')
|
|
591
|
+
return explicitState;
|
|
592
|
+
return this.errors().length > 0 && this.touched() ? 'error' : 'default';
|
|
593
|
+
}, /* @ts-ignore */
|
|
594
|
+
...(ngDevMode ? [{ debugName: "resolvedState" }] : /* istanbul ignore next */ []));
|
|
595
|
+
/**
|
|
596
|
+
* Emits when the user finishes interacting with the field (blur) — the
|
|
597
|
+
* signal-forms replacement for the CVA `onTouched` callback; `[formField]`
|
|
598
|
+
* subscribes and marks the bound field touched.
|
|
599
|
+
*/
|
|
600
|
+
touch = output();
|
|
601
|
+
/** HTML id applied to the control's focus target. */
|
|
602
|
+
id = input(mlvNextId('mlv-control'), /* @ts-ignore */
|
|
603
|
+
...(ngDevMode ? [{ debugName: "id" }] : /* istanbul ignore next */ []));
|
|
604
|
+
/** Label text rendered above the control. */
|
|
605
|
+
label = input('', /* @ts-ignore */
|
|
606
|
+
...(ngDevMode ? [{ debugName: "label" }] : /* istanbul ignore next */ []));
|
|
607
|
+
/** Hint text rendered inside the label. */
|
|
608
|
+
hint = input('', /* @ts-ignore */
|
|
609
|
+
...(ngDevMode ? [{ debugName: "hint" }] : /* istanbul ignore next */ []));
|
|
610
|
+
/**
|
|
611
|
+
* Persistent help text rendered **below** the control, in front of the
|
|
612
|
+
* validation message. Unlike {@link hint} (a short inline aside inside the
|
|
613
|
+
* label) this is meant for sentence-length descriptions, and it stays
|
|
614
|
+
* visible while {@link message} is shown. Referenced by `aria-describedby`.
|
|
615
|
+
*/
|
|
616
|
+
description = input('', /* @ts-ignore */
|
|
617
|
+
...(ngDevMode ? [{ debugName: "description" }] : /* istanbul ignore next */ []));
|
|
618
|
+
/** Validation/status message rendered below the control. */
|
|
619
|
+
message = input('', /* @ts-ignore */
|
|
620
|
+
...(ngDevMode ? [{ debugName: "message" }] : /* istanbul ignore next */ []));
|
|
621
|
+
/**
|
|
622
|
+
* Accessible name applied to the control's focus target (`aria-label`).
|
|
623
|
+
* Use it when the control renders no visible `<mlv-label>`.
|
|
624
|
+
*/
|
|
625
|
+
ariaLabel = input(null, /* @ts-ignore */
|
|
626
|
+
...(ngDevMode ? [{ debugName: "ariaLabel" }] : /* istanbul ignore next */ []));
|
|
627
|
+
/** @protected Id of the rendered `<mlv-description>` element. */
|
|
628
|
+
_descriptionId = computed(() => `${this.id()}-description`, /* @ts-ignore */
|
|
629
|
+
...(ngDevMode ? [{ debugName: "_descriptionId" }] : /* istanbul ignore next */ []));
|
|
630
|
+
/** @protected Id of the rendered `<mlv-message>` element. */
|
|
631
|
+
_messageId = computed(() => `${this.id()}-message`, /* @ts-ignore */
|
|
632
|
+
...(ngDevMode ? [{ debugName: "_messageId" }] : /* istanbul ignore next */ []));
|
|
633
|
+
/**
|
|
634
|
+
* @protected Space-separated `aria-describedby` value covering the rendered
|
|
635
|
+
* description and message elements — `null` when neither is rendered, so no
|
|
636
|
+
* dangling IDREF is emitted.
|
|
637
|
+
*/
|
|
638
|
+
_describedBy = computed(() => {
|
|
639
|
+
const ids = [];
|
|
640
|
+
if (this.description())
|
|
641
|
+
ids.push(this._descriptionId());
|
|
642
|
+
if (this.message())
|
|
643
|
+
ids.push(this._messageId());
|
|
644
|
+
return ids.length > 0 ? ids.join(' ') : null;
|
|
645
|
+
}, /* @ts-ignore */
|
|
646
|
+
...(ngDevMode ? [{ debugName: "_describedBy" }] : /* istanbul ignore next */ []));
|
|
647
|
+
/** Projected prefix slot. */
|
|
648
|
+
prepend = contentChild(MlvFormControlPrepend, /* @ts-ignore */
|
|
649
|
+
...(ngDevMode ? [{ debugName: "prepend" }] : /* istanbul ignore next */ []));
|
|
650
|
+
/** Projected suffix slot. */
|
|
651
|
+
append = contentChild(MlvFormControlAppend, /* @ts-ignore */
|
|
652
|
+
...(ngDevMode ? [{ debugName: "append" }] : /* istanbul ignore next */ []));
|
|
653
|
+
/** Projected full-width content rendered inside the control border. */
|
|
654
|
+
inset = contentChild(MlvFormControlInset, /* @ts-ignore */
|
|
655
|
+
...(ngDevMode ? [{ debugName: "inset" }] : /* istanbul ignore next */ []));
|
|
656
|
+
/**
|
|
657
|
+
* Effective disabled state. In the signal base there is no CVA
|
|
658
|
+
* `setDisabledState` side channel — the `disabled` input is the single
|
|
659
|
+
* source (consumer-bound or field-bound), kept as a computed so existing
|
|
660
|
+
* control templates retain one consistent disabled-state signal.
|
|
661
|
+
*/
|
|
662
|
+
computedDisabled = computed(() => this.disabled(), /* @ts-ignore */
|
|
663
|
+
...(ngDevMode ? [{ debugName: "computedDisabled" }] : /* istanbul ignore next */ []));
|
|
664
|
+
/** @protected Notifies the field that the user left the control. */
|
|
665
|
+
_markTouched() {
|
|
666
|
+
this.touch.emit();
|
|
667
|
+
}
|
|
668
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: MlvSignalFormUiControlBase, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
669
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.2.0", version: "22.0.7", type: MlvSignalFormUiControlBase, isStandalone: true, inputs: { state: { classPropertyName: "state", publicName: "state", isSignal: true, isRequired: false, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, required: { classPropertyName: "required", publicName: "required", isSignal: true, isRequired: false, transformFunction: null }, loading: { classPropertyName: "loading", publicName: "loading", isSignal: true, isRequired: false, transformFunction: null }, clearable: { classPropertyName: "clearable", publicName: "clearable", isSignal: true, isRequired: false, transformFunction: null }, pill: { classPropertyName: "pill", publicName: "pill", isSignal: true, isRequired: false, transformFunction: null }, errors: { classPropertyName: "errors", publicName: "errors", isSignal: true, isRequired: false, transformFunction: null }, touched: { classPropertyName: "touched", publicName: "touched", isSignal: true, isRequired: false, transformFunction: null }, dirty: { classPropertyName: "dirty", publicName: "dirty", isSignal: true, isRequired: false, transformFunction: null }, id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, hint: { classPropertyName: "hint", publicName: "hint", isSignal: true, isRequired: false, transformFunction: null }, description: { classPropertyName: "description", publicName: "description", isSignal: true, isRequired: false, transformFunction: null }, message: { classPropertyName: "message", publicName: "message", isSignal: true, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "ariaLabel", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { touch: "touch" }, queries: [{ propertyName: "prepend", first: true, predicate: MlvFormControlPrepend, descendants: true, isSignal: true }, { propertyName: "append", first: true, predicate: MlvFormControlAppend, descendants: true, isSignal: true }, { propertyName: "inset", first: true, predicate: MlvFormControlInset, descendants: true, isSignal: true }], ngImport: i0 });
|
|
670
|
+
}
|
|
671
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: MlvSignalFormUiControlBase, decorators: [{
|
|
672
|
+
type: Directive
|
|
673
|
+
}], propDecorators: { state: [{ type: i0.Input, args: [{ isSignal: true, alias: "state", required: false }] }], readonly: [{ type: i0.Input, args: [{ isSignal: true, alias: "readonly", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], required: [{ type: i0.Input, args: [{ isSignal: true, alias: "required", required: false }] }], loading: [{ type: i0.Input, args: [{ isSignal: true, alias: "loading", required: false }] }], clearable: [{ type: i0.Input, args: [{ isSignal: true, alias: "clearable", required: false }] }], pill: [{ type: i0.Input, args: [{ isSignal: true, alias: "pill", required: false }] }], errors: [{ type: i0.Input, args: [{ isSignal: true, alias: "errors", required: false }] }], touched: [{ type: i0.Input, args: [{ isSignal: true, alias: "touched", required: false }] }], dirty: [{ type: i0.Input, args: [{ isSignal: true, alias: "dirty", required: false }] }], touch: [{ type: i0.Output, args: ["touch"] }], id: [{ type: i0.Input, args: [{ isSignal: true, alias: "id", required: false }] }], label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }], hint: [{ type: i0.Input, args: [{ isSignal: true, alias: "hint", required: false }] }], description: [{ type: i0.Input, args: [{ isSignal: true, alias: "description", required: false }] }], message: [{ type: i0.Input, args: [{ isSignal: true, alias: "message", required: false }] }], ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaLabel", required: false }] }], prepend: [{ type: i0.ContentChild, args: [i0.forwardRef(() => MlvFormControlPrepend), { isSignal: true }] }], append: [{ type: i0.ContentChild, args: [i0.forwardRef(() => MlvFormControlAppend), { isSignal: true }] }], inset: [{ type: i0.ContentChild, args: [i0.forwardRef(() => MlvFormControlInset), { isSignal: true }] }] } });
|
|
674
|
+
/**
|
|
675
|
+
* Signal-forms base for **value** controls: adds the required
|
|
676
|
+
* `value: ModelSignal<T>` of the `FormValueControl` contract. Each control
|
|
677
|
+
* supplies the model itself (`readonly value = model<T>(initial)`), mirroring
|
|
678
|
+
* how `hasValue` is supplied.
|
|
679
|
+
*/
|
|
680
|
+
class MlvSignalFormControlBase extends MlvSignalFormUiControlBase {
|
|
681
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: MlvSignalFormControlBase, deps: null, target: i0.ɵɵFactoryTarget.Directive });
|
|
682
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.7", type: MlvSignalFormControlBase, isStandalone: true, usesInheritance: true, ngImport: i0 });
|
|
683
|
+
}
|
|
684
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: MlvSignalFormControlBase, decorators: [{
|
|
685
|
+
type: Directive
|
|
686
|
+
}] });
|
|
687
|
+
/**
|
|
688
|
+
* Signal-forms base for **checkbox-shaped** controls (checkbox, switch): adds
|
|
689
|
+
* the required `checked: ModelSignal<boolean>` of the `FormCheckboxControl`
|
|
690
|
+
* contract. The contract forbids a `value` member on this variant.
|
|
691
|
+
*/
|
|
692
|
+
class MlvSignalCheckboxControlBase extends MlvSignalFormUiControlBase {
|
|
693
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: MlvSignalCheckboxControlBase, deps: null, target: i0.ɵɵFactoryTarget.Directive });
|
|
694
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.7", type: MlvSignalCheckboxControlBase, isStandalone: true, usesInheritance: true, ngImport: i0 });
|
|
695
|
+
}
|
|
696
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: MlvSignalCheckboxControlBase, decorators: [{
|
|
697
|
+
type: Directive
|
|
698
|
+
}] });
|
|
699
|
+
|
|
700
|
+
class MlvFormControlWrapperControl extends MlvStructural {
|
|
701
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: MlvFormControlWrapperControl, deps: null, target: i0.ɵɵFactoryTarget.Directive });
|
|
702
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.7", type: MlvFormControlWrapperControl, isStandalone: true, selector: "[mlvFormControlWrapperControl]", usesInheritance: true, ngImport: i0 });
|
|
703
|
+
}
|
|
704
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: MlvFormControlWrapperControl, decorators: [{
|
|
705
|
+
type: Directive,
|
|
706
|
+
args: [{
|
|
707
|
+
selector: '[mlvFormControlWrapperControl]',
|
|
708
|
+
}]
|
|
709
|
+
}] });
|
|
710
|
+
|
|
711
|
+
class MlvFormControlWrapper {
|
|
712
|
+
/** @protected Optional injected form control connector for state/focus/disabled bindings. */
|
|
713
|
+
formControl = inject(MLV_FORM_CONTROL, {
|
|
714
|
+
optional: true,
|
|
715
|
+
});
|
|
716
|
+
/** @protected Computed BEM state modifier class derived from the control's validation state. */
|
|
717
|
+
_stateClass = computed(() => `mlv-form-control-wrapper--state-${this.formControl?.resolvedState?.() ??
|
|
718
|
+
this.formControl?.state() ??
|
|
719
|
+
'default'}`, /* @ts-ignore */
|
|
720
|
+
...(ngDevMode ? [{ debugName: "_stateClass" }] : /* istanbul ignore next */ []));
|
|
721
|
+
/** @protected Required projected control-slot directive rendered inside the wrapper. */
|
|
722
|
+
renderer = contentChild.required(MlvFormControlWrapperControl, /* @ts-ignore */
|
|
723
|
+
...(ngDevMode ? [{ debugName: "renderer" }] : /* istanbul ignore next */ []));
|
|
724
|
+
/** @protected The component's i18n strings signal. */
|
|
725
|
+
_i18n = inject(MLV_FORM_UTILS_I18N);
|
|
726
|
+
/**
|
|
727
|
+
* Clear event emitter. Emits when user clicks on clear button
|
|
728
|
+
*/
|
|
729
|
+
clear = output();
|
|
730
|
+
/** @protected Handles the clear-button click by emitting the `clear` output. */
|
|
731
|
+
_onClearClick() {
|
|
732
|
+
this.clear.emit();
|
|
733
|
+
}
|
|
734
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: MlvFormControlWrapper, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
735
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.7", type: MlvFormControlWrapper, isStandalone: true, selector: "mlv-form-control-wrapper", outputs: { clear: "clear" }, host: { properties: { "class": "_stateClass()", "class.mlv-form-control-wrapper--focused": "formControl?.focused()", "class.mlv-form-control-wrapper--disabled": "formControl?.disabled()", "class.mlv-form-control-wrapper--readonly": "formControl?.readonly()", "class.mlv-form-control-wrapper--loading": "formControl?.loading()", "class.mlv-form-control-wrapper--pill": "formControl?.pill?.() ?? false" }, classAttribute: "mlv-form-control-wrapper" }, queries: [{ propertyName: "renderer", first: true, predicate: MlvFormControlWrapperControl, descendants: true, isSignal: true }], ngImport: i0, template: "<div class=\"mlv-form-control-wrapper__label-container\">\n <ng-content select=\"mlv-label\"></ng-content>\n</div>\n<div\n class=\"mlv-form-control-wrapper__control-container\"\n [class.mlv-form-control-wrapper__control-container--with-inset]=\"\n formControl?.inset()\n \"\n>\n <div class=\"mlv-form-control-wrapper__control-row\">\n @if (formControl?.prepend(); as prependTpl) {\n <div class=\"mlv-form-control-wrapper__side-content\">\n <ng-template [ngTemplateOutlet]=\"prependTpl.templateRef\"></ng-template>\n </div>\n }\n\n <ng-template [ngTemplateOutlet]=\"renderer().templateRef\"></ng-template>\n\n @if ( formControl?.clearable() && formControl?.hasValue() &&\n !formControl?.ownsClearButton?.() ) {\n <div class=\"mlv-form-control-wrapper__clear\">\n <mlv-button-close\n (click)=\"_onClearClick()\"\n mlvDensity=\"tight\"\n [ariaLabel]=\"_i18n().clear\"\n />\n </div>\n } @if (formControl?.append(); as appendTpl) {\n <div class=\"mlv-form-control-wrapper__side-content\">\n <ng-template [ngTemplateOutlet]=\"appendTpl.templateRef\"></ng-template>\n </div>\n }\n </div>\n\n @if (formControl?.inset(); as insetTpl) {\n <div class=\"mlv-form-control-wrapper__inset\">\n <ng-template [ngTemplateOutlet]=\"insetTpl.templateRef\"></ng-template>\n </div>\n }\n</div>\n\n<!-- Below-control slots. `mlv-description` is persistent help text, `mlv-message`\n the stateful validation line, and `[mlvFormControlWrapperAside]` any\n control-owned auxiliary readout (e.g. the textarea character counter). -->\n<div class=\"mlv-form-control-wrapper__message-container\">\n <ng-content select=\"mlv-description\"></ng-content>\n <ng-content select=\"mlv-message\"></ng-content>\n <ng-content select=\"[mlvFormControlWrapperAside]\"></ng-content>\n</div>\n", styles: ["@layer mlv.components{.mlv-form-control-wrapper{box-sizing:border-box;padding:0;margin:0;font-family:var(--mlv-typography-family-text);font-size:var(--mlv-font-size-m)}.mlv-form-control-wrapper *{box-sizing:border-box}.mlv-form-control-wrapper{display:flex;flex-direction:column;gap:.25rem;--form-ctrl-height: var(--mlv-height-m);--form-ctrl-h-padding: var(--mlv-spacing-3);--form-ctrl-font-size: var(--mlv-font-size-m);--form-ctrl-radius: var(--mlv-radius-input);--form-ctrl-icon-size: calc( var(--form-ctrl-height) * var(--mlv-icon-in-container-ratio) );--container-border-color: var(--mlv-border-normal);--container-background-color: var(--mlv-elevation-bg-3);--container-side-content-color: var(--mlv-text-primary);--container-shadow: none;--container-action-color: var(--mlv-text-secondary)}[class*=--tight] .mlv-form-control-wrapper:not([class*=--compact],[class*=--comfortable],[class*=--spacious],[class*=--airy]),.mlv-form-control-wrapper[class*=--tight]{--form-ctrl-height: var(--mlv-height-xs);--form-ctrl-h-padding: var(--mlv-spacing-2);--form-ctrl-font-size: var(--mlv-font-size-s)}[class*=--compact] .mlv-form-control-wrapper:not([class*=--tight],[class*=--comfortable],[class*=--spacious],[class*=--airy]),.mlv-form-control-wrapper[class*=--compact]{--form-ctrl-height: var(--mlv-height-s);--form-ctrl-h-padding: var(--mlv-spacing-2-5);--form-ctrl-font-size: var(--mlv-font-size-m)}[class*=--spacious] .mlv-form-control-wrapper:not([class*=--tight],[class*=--compact],[class*=--comfortable],[class*=--airy]),.mlv-form-control-wrapper[class*=--spacious]{--form-ctrl-height: var(--mlv-height-l);--form-ctrl-h-padding: var(--mlv-spacing-4);--form-ctrl-font-size: var(--mlv-font-size-l)}[class*=--airy] .mlv-form-control-wrapper:not([class*=--tight],[class*=--compact],[class*=--comfortable],[class*=--spacious]),.mlv-form-control-wrapper[class*=--airy]{--form-ctrl-height: var(--mlv-height-xl);--form-ctrl-h-padding: var(--mlv-spacing-5);--form-ctrl-font-size: var(--mlv-font-size-xl)}.mlv-form-control-wrapper--pill .mlv-form-control-wrapper__control-container{border-radius:var(--mlv-radius-full);padding-inline:calc(var(--form-ctrl-h-padding) * 1.35)}.mlv-form-control-wrapper__label-container:empty{display:none}.mlv-form-control-wrapper__control-container{display:flex;flex-direction:column;align-items:stretch;justify-content:space-between;width:100%;border-radius:var(--form-ctrl-radius);background-color:var(--container-background-color);border:.0625rem solid var(--container-border-color);--mlv-control-padding: var(--mlv-spacing-1) var(--form-ctrl-h-padding);padding:var(--mlv-control-padding);color:var(--container-border-color);box-shadow:var(--container-shadow);transition-property:background-color,border-color,box-shadow;transition-duration:var(--mlv-duration-fast);transition-timing-function:var(--mlv-ease-default);height:var(--form-ctrl-height);font-size:var(--form-ctrl-font-size)}.mlv-form-control-wrapper__control-container--with-inset{position:relative}.mlv-form-control-wrapper__control-container:hover{--container-action-color: var(--mlv-text-primary)}.mlv-form-control-wrapper__control-row{display:flex;align-items:center;justify-content:space-between;gap:.25rem;width:100%;min-height:0;flex:1}.mlv-form-control-wrapper__inset{position:absolute;bottom:0;left:0;right:0;padding:var(--mlv-control-padding)}.mlv-form-control-wrapper__message-container{display:flex;flex-direction:column;gap:.125rem;min-width:0}.mlv-form-control-wrapper__message-container:empty{display:none}.mlv-form-control-wrapper__side-content{color:var(--container-side-content-color);line-height:1}.mlv-form-control-wrapper__clear .mlv-button-close .mlv-button--close.mlv-button--icon-only{--mlv-icon-font-size: min( var(--form-ctrl-icon-size), calc(var(--mlv-btn-height) * .75) )}.mlv-form-control-wrapper--state-error{--container-border-color: var(--mlv-border-error)}.mlv-form-control-wrapper--state-default:hover{--container-border-color: var(--mlv-border-strong)}.mlv-form-control-wrapper--focused{--container-shadow: 0 0 0 var(--mlv-stroke-width) currentColor;--container-action-color: var(--mlv-text-primary)}.mlv-form-control-wrapper--focused.mlv-form-control-wrapper--state-default{--container-border-color: var(--mlv-border-focus)}.mlv-form-control-wrapper--disabled{--container-background-color: var(--mlv-background-sunken);cursor:not-allowed;pointer-events:none}@media(prefers-reduced-motion:reduce){.mlv-form-control-wrapper,.mlv-form-control-wrapper *,.mlv-form-control-wrapper:before,.mlv-form-control-wrapper:after,[class^=mlv-form-control-wrapper__],[class*=\" mlv-form-control-wrapper__\"],[class^=mlv-form-control-wrapper--],[class*=\" mlv-form-control-wrapper--\"]{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:var(--mlv-duration-instant)!important}}}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: MlvButtonClose, selector: "mlv-button-close", inputs: ["variant", "shape", "ariaLabel"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
736
|
+
}
|
|
737
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: MlvFormControlWrapper, decorators: [{
|
|
738
|
+
type: Component,
|
|
739
|
+
args: [{ selector: 'mlv-form-control-wrapper', imports: [NgTemplateOutlet, MlvButtonClose], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, host: {
|
|
740
|
+
class: 'mlv-form-control-wrapper',
|
|
741
|
+
'[class]': '_stateClass()',
|
|
742
|
+
'[class.mlv-form-control-wrapper--focused]': 'formControl?.focused()',
|
|
743
|
+
'[class.mlv-form-control-wrapper--disabled]': 'formControl?.disabled()',
|
|
744
|
+
'[class.mlv-form-control-wrapper--readonly]': 'formControl?.readonly()',
|
|
745
|
+
'[class.mlv-form-control-wrapper--loading]': 'formControl?.loading()',
|
|
746
|
+
'[class.mlv-form-control-wrapper--pill]': 'formControl?.pill?.() ?? false',
|
|
747
|
+
}, template: "<div class=\"mlv-form-control-wrapper__label-container\">\n <ng-content select=\"mlv-label\"></ng-content>\n</div>\n<div\n class=\"mlv-form-control-wrapper__control-container\"\n [class.mlv-form-control-wrapper__control-container--with-inset]=\"\n formControl?.inset()\n \"\n>\n <div class=\"mlv-form-control-wrapper__control-row\">\n @if (formControl?.prepend(); as prependTpl) {\n <div class=\"mlv-form-control-wrapper__side-content\">\n <ng-template [ngTemplateOutlet]=\"prependTpl.templateRef\"></ng-template>\n </div>\n }\n\n <ng-template [ngTemplateOutlet]=\"renderer().templateRef\"></ng-template>\n\n @if ( formControl?.clearable() && formControl?.hasValue() &&\n !formControl?.ownsClearButton?.() ) {\n <div class=\"mlv-form-control-wrapper__clear\">\n <mlv-button-close\n (click)=\"_onClearClick()\"\n mlvDensity=\"tight\"\n [ariaLabel]=\"_i18n().clear\"\n />\n </div>\n } @if (formControl?.append(); as appendTpl) {\n <div class=\"mlv-form-control-wrapper__side-content\">\n <ng-template [ngTemplateOutlet]=\"appendTpl.templateRef\"></ng-template>\n </div>\n }\n </div>\n\n @if (formControl?.inset(); as insetTpl) {\n <div class=\"mlv-form-control-wrapper__inset\">\n <ng-template [ngTemplateOutlet]=\"insetTpl.templateRef\"></ng-template>\n </div>\n }\n</div>\n\n<!-- Below-control slots. `mlv-description` is persistent help text, `mlv-message`\n the stateful validation line, and `[mlvFormControlWrapperAside]` any\n control-owned auxiliary readout (e.g. the textarea character counter). -->\n<div class=\"mlv-form-control-wrapper__message-container\">\n <ng-content select=\"mlv-description\"></ng-content>\n <ng-content select=\"mlv-message\"></ng-content>\n <ng-content select=\"[mlvFormControlWrapperAside]\"></ng-content>\n</div>\n", styles: ["@layer mlv.components{.mlv-form-control-wrapper{box-sizing:border-box;padding:0;margin:0;font-family:var(--mlv-typography-family-text);font-size:var(--mlv-font-size-m)}.mlv-form-control-wrapper *{box-sizing:border-box}.mlv-form-control-wrapper{display:flex;flex-direction:column;gap:.25rem;--form-ctrl-height: var(--mlv-height-m);--form-ctrl-h-padding: var(--mlv-spacing-3);--form-ctrl-font-size: var(--mlv-font-size-m);--form-ctrl-radius: var(--mlv-radius-input);--form-ctrl-icon-size: calc( var(--form-ctrl-height) * var(--mlv-icon-in-container-ratio) );--container-border-color: var(--mlv-border-normal);--container-background-color: var(--mlv-elevation-bg-3);--container-side-content-color: var(--mlv-text-primary);--container-shadow: none;--container-action-color: var(--mlv-text-secondary)}[class*=--tight] .mlv-form-control-wrapper:not([class*=--compact],[class*=--comfortable],[class*=--spacious],[class*=--airy]),.mlv-form-control-wrapper[class*=--tight]{--form-ctrl-height: var(--mlv-height-xs);--form-ctrl-h-padding: var(--mlv-spacing-2);--form-ctrl-font-size: var(--mlv-font-size-s)}[class*=--compact] .mlv-form-control-wrapper:not([class*=--tight],[class*=--comfortable],[class*=--spacious],[class*=--airy]),.mlv-form-control-wrapper[class*=--compact]{--form-ctrl-height: var(--mlv-height-s);--form-ctrl-h-padding: var(--mlv-spacing-2-5);--form-ctrl-font-size: var(--mlv-font-size-m)}[class*=--spacious] .mlv-form-control-wrapper:not([class*=--tight],[class*=--compact],[class*=--comfortable],[class*=--airy]),.mlv-form-control-wrapper[class*=--spacious]{--form-ctrl-height: var(--mlv-height-l);--form-ctrl-h-padding: var(--mlv-spacing-4);--form-ctrl-font-size: var(--mlv-font-size-l)}[class*=--airy] .mlv-form-control-wrapper:not([class*=--tight],[class*=--compact],[class*=--comfortable],[class*=--spacious]),.mlv-form-control-wrapper[class*=--airy]{--form-ctrl-height: var(--mlv-height-xl);--form-ctrl-h-padding: var(--mlv-spacing-5);--form-ctrl-font-size: var(--mlv-font-size-xl)}.mlv-form-control-wrapper--pill .mlv-form-control-wrapper__control-container{border-radius:var(--mlv-radius-full);padding-inline:calc(var(--form-ctrl-h-padding) * 1.35)}.mlv-form-control-wrapper__label-container:empty{display:none}.mlv-form-control-wrapper__control-container{display:flex;flex-direction:column;align-items:stretch;justify-content:space-between;width:100%;border-radius:var(--form-ctrl-radius);background-color:var(--container-background-color);border:.0625rem solid var(--container-border-color);--mlv-control-padding: var(--mlv-spacing-1) var(--form-ctrl-h-padding);padding:var(--mlv-control-padding);color:var(--container-border-color);box-shadow:var(--container-shadow);transition-property:background-color,border-color,box-shadow;transition-duration:var(--mlv-duration-fast);transition-timing-function:var(--mlv-ease-default);height:var(--form-ctrl-height);font-size:var(--form-ctrl-font-size)}.mlv-form-control-wrapper__control-container--with-inset{position:relative}.mlv-form-control-wrapper__control-container:hover{--container-action-color: var(--mlv-text-primary)}.mlv-form-control-wrapper__control-row{display:flex;align-items:center;justify-content:space-between;gap:.25rem;width:100%;min-height:0;flex:1}.mlv-form-control-wrapper__inset{position:absolute;bottom:0;left:0;right:0;padding:var(--mlv-control-padding)}.mlv-form-control-wrapper__message-container{display:flex;flex-direction:column;gap:.125rem;min-width:0}.mlv-form-control-wrapper__message-container:empty{display:none}.mlv-form-control-wrapper__side-content{color:var(--container-side-content-color);line-height:1}.mlv-form-control-wrapper__clear .mlv-button-close .mlv-button--close.mlv-button--icon-only{--mlv-icon-font-size: min( var(--form-ctrl-icon-size), calc(var(--mlv-btn-height) * .75) )}.mlv-form-control-wrapper--state-error{--container-border-color: var(--mlv-border-error)}.mlv-form-control-wrapper--state-default:hover{--container-border-color: var(--mlv-border-strong)}.mlv-form-control-wrapper--focused{--container-shadow: 0 0 0 var(--mlv-stroke-width) currentColor;--container-action-color: var(--mlv-text-primary)}.mlv-form-control-wrapper--focused.mlv-form-control-wrapper--state-default{--container-border-color: var(--mlv-border-focus)}.mlv-form-control-wrapper--disabled{--container-background-color: var(--mlv-background-sunken);cursor:not-allowed;pointer-events:none}@media(prefers-reduced-motion:reduce){.mlv-form-control-wrapper,.mlv-form-control-wrapper *,.mlv-form-control-wrapper:before,.mlv-form-control-wrapper:after,[class^=mlv-form-control-wrapper__],[class*=\" mlv-form-control-wrapper__\"],[class^=mlv-form-control-wrapper--],[class*=\" mlv-form-control-wrapper--\"]{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:var(--mlv-duration-instant)!important}}}\n"] }]
|
|
748
|
+
}], propDecorators: { renderer: [{ type: i0.ContentChild, args: [i0.forwardRef(() => MlvFormControlWrapperControl), { isSignal: true }] }], clear: [{ type: i0.Output, args: ["clear"] }] } });
|
|
749
|
+
|
|
750
|
+
class MlvSelectionService {
|
|
751
|
+
multiple = signal(false, /* @ts-ignore */
|
|
752
|
+
...(ngDevMode ? [{ debugName: "multiple" }] : /* istanbul ignore next */ []));
|
|
753
|
+
selectedValues = signal([], /* @ts-ignore */
|
|
754
|
+
...(ngDevMode ? [{ debugName: "selectedValues" }] : /* istanbul ignore next */ []));
|
|
755
|
+
focusFirst$ = new Subject();
|
|
756
|
+
/**
|
|
757
|
+
* Equality predicate used for all membership checks (`isSelected`,
|
|
758
|
+
* `deselect`, and the `select`/`toggle` de-dup path). Defaults to reference
|
|
759
|
+
* equality (`a === b`). Set a custom comparator (e.g. compare by id) so object
|
|
760
|
+
* values written via `writeValue` after deserialization match the option
|
|
761
|
+
* instances and check-marks / display value stay in agreement.
|
|
762
|
+
*/
|
|
763
|
+
compareWith = signal((a, b) => a === b, /* @ts-ignore */
|
|
764
|
+
...(ngDevMode ? [{ debugName: "compareWith" }] : /* istanbul ignore next */ []));
|
|
765
|
+
displayValue = computed(() => {
|
|
766
|
+
const values = this.selectedValues();
|
|
767
|
+
if (values.length === 0)
|
|
768
|
+
return '';
|
|
769
|
+
if (values.length === 1)
|
|
770
|
+
return String(values[0]);
|
|
771
|
+
return `${values.length} items selected`;
|
|
772
|
+
}, /* @ts-ignore */
|
|
773
|
+
...(ngDevMode ? [{ debugName: "displayValue" }] : /* istanbul ignore next */ []));
|
|
774
|
+
/** @private Index of `value` within the current selection, or `-1`. */
|
|
775
|
+
_indexOf(value) {
|
|
776
|
+
const compare = this.compareWith();
|
|
777
|
+
return this.selectedValues().findIndex((v) => compare(v, value));
|
|
778
|
+
}
|
|
779
|
+
select(value) {
|
|
780
|
+
if (this.multiple()) {
|
|
781
|
+
const current = this.selectedValues();
|
|
782
|
+
const index = this._indexOf(value);
|
|
783
|
+
if (index >= 0) {
|
|
784
|
+
this.selectedValues.set([
|
|
785
|
+
...current.slice(0, index),
|
|
786
|
+
...current.slice(index + 1),
|
|
787
|
+
]);
|
|
788
|
+
}
|
|
789
|
+
else {
|
|
790
|
+
this.selectedValues.set([...current, value]);
|
|
791
|
+
}
|
|
792
|
+
}
|
|
793
|
+
else {
|
|
794
|
+
this.selectedValues.set([value]);
|
|
795
|
+
}
|
|
796
|
+
}
|
|
797
|
+
deselect(value) {
|
|
798
|
+
const compare = this.compareWith();
|
|
799
|
+
this.selectedValues.set(this.selectedValues().filter((v) => !compare(v, value)));
|
|
800
|
+
}
|
|
801
|
+
isSelected(value) {
|
|
802
|
+
return this._indexOf(value) >= 0;
|
|
803
|
+
}
|
|
804
|
+
clear() {
|
|
805
|
+
this.selectedValues.set([]);
|
|
806
|
+
}
|
|
807
|
+
setValues(values) {
|
|
808
|
+
this.selectedValues.set(values);
|
|
809
|
+
}
|
|
810
|
+
toggle(value) {
|
|
811
|
+
if (this.isSelected(value)) {
|
|
812
|
+
this.deselect(value);
|
|
813
|
+
}
|
|
814
|
+
else {
|
|
815
|
+
this.select(value);
|
|
816
|
+
}
|
|
817
|
+
}
|
|
818
|
+
requestFocusFirst() {
|
|
819
|
+
this.focusFirst$.next();
|
|
820
|
+
}
|
|
821
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: MlvSelectionService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
822
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: MlvSelectionService });
|
|
823
|
+
}
|
|
824
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: MlvSelectionService, decorators: [{
|
|
825
|
+
type: Injectable
|
|
826
|
+
}] });
|
|
827
|
+
|
|
828
|
+
/**
|
|
829
|
+
* Forms ↔ `@angular/aria` value bridge.
|
|
830
|
+
*
|
|
831
|
+
* The headless `@angular/aria` selection patterns (`ngListbox`, `ngMenu`,
|
|
832
|
+
* `ngTree`, …) always model their selection as an **array** of values
|
|
833
|
+
* (`value: ModelSignal<V[]>`), even in single-select mode where the array holds
|
|
834
|
+
* at most one entry. Malva UI form controls expose the idiomatic public shape:
|
|
835
|
+
* a bare `T` for single-select and a `T[]` for multi-select, with `null` used
|
|
836
|
+
* to represent "no selection".
|
|
837
|
+
*
|
|
838
|
+
* These helpers translate between the two representations so a component can
|
|
839
|
+
* keep its public single/multi forms contract while driving an aria pattern
|
|
840
|
+
* underneath. They are pure and allocation-light, and are designed to
|
|
841
|
+
* round-trip: `fromAriaValues(toAriaValues(v, multi), multi)` yields the
|
|
842
|
+
* canonical form of `v`.
|
|
843
|
+
*
|
|
844
|
+
* @remarks
|
|
845
|
+
* `toAriaValues` treats an incoming array as an already-expanded multi-select
|
|
846
|
+
* value. If your single-select `T` is itself an array type, wrap it before
|
|
847
|
+
* bridging — this is the same ambiguity the aria patterns themselves carry.
|
|
848
|
+
*/
|
|
849
|
+
/**
|
|
850
|
+
* Normalises a control value (`T`, `T[]`, or `null`/`undefined`) into the flat
|
|
851
|
+
* `V[]` array that `@angular/aria` selection patterns expect.
|
|
852
|
+
*
|
|
853
|
+
* - `null` / `undefined` → `[]` (cleared selection)
|
|
854
|
+
* - an array → a shallow copy of that array (multi-select)
|
|
855
|
+
* - any other value → a single-element array (single-select)
|
|
856
|
+
*
|
|
857
|
+
* @param value The control-side value to convert.
|
|
858
|
+
* @returns A fresh array suitable for assigning to an aria `value` model.
|
|
859
|
+
*/
|
|
860
|
+
function toAriaValues(value) {
|
|
861
|
+
if (value === null || value === undefined) {
|
|
862
|
+
return [];
|
|
863
|
+
}
|
|
864
|
+
return Array.isArray(value) ? [...value] : [value];
|
|
865
|
+
}
|
|
866
|
+
/**
|
|
867
|
+
* Collapses the flat `V[]` array produced by an `@angular/aria` selection
|
|
868
|
+
* pattern back into the control-side value shape.
|
|
869
|
+
*
|
|
870
|
+
* - `multiple === true` → a shallow copy of the array (empty array stays `[]`)
|
|
871
|
+
* - `multiple === false` → the first entry, or `null` when the array is empty
|
|
872
|
+
*
|
|
873
|
+
* @param values The aria-side selection array.
|
|
874
|
+
* @param multiple Whether the control is in multi-select mode.
|
|
875
|
+
* @returns The control-side value: `V[]` for multi-select, `V | null` for single.
|
|
876
|
+
*/
|
|
877
|
+
function fromAriaValues(values, multiple) {
|
|
878
|
+
const list = values ?? [];
|
|
879
|
+
if (multiple) {
|
|
880
|
+
return [...list];
|
|
881
|
+
}
|
|
882
|
+
return list.length > 0 ? list[0] : null;
|
|
883
|
+
}
|
|
884
|
+
|
|
885
|
+
/**
|
|
886
|
+
* Shared, selection-agnostic scaffold for composite groups that navigate their
|
|
887
|
+
* children with a vertical, wrapping {@link FocusKeyManager} and a roving
|
|
888
|
+
* tabindex that follows focus (only the active child is tabbable).
|
|
889
|
+
*
|
|
890
|
+
* Extracted from the duplicated lifecycle in `MlvCheckboxGroup` and
|
|
891
|
+
* `MlvSwitchGroup`. It owns **only** the focus / roving-tabindex concern:
|
|
892
|
+
* key-manager creation over the current children, the `change`→tabindex sync,
|
|
893
|
+
* keydown delegation, child-focus tracking, and teardown. Subclasses supply the
|
|
894
|
+
* live children signal ({@link _items}) and the skip predicate
|
|
895
|
+
* ({@link _isDisabled}); everything else (selection, CVA, templates) stays in
|
|
896
|
+
* the concrete component.
|
|
897
|
+
*
|
|
898
|
+
* NB: this is a *focus-roving* base — the tab stop follows the focused child.
|
|
899
|
+
* Groups whose tab stop must follow a *selected* child instead (e.g.
|
|
900
|
+
* `mlv-radio-group`, whose checked radio is the tab stop and whose arrow keys
|
|
901
|
+
* also move selection) do not fit this contract and keep their own manager.
|
|
902
|
+
*
|
|
903
|
+
* @typeParam T The concrete focusable child component type.
|
|
904
|
+
*/
|
|
905
|
+
class MlvFocusableGroupBase {
|
|
906
|
+
/** @private Normalizes the vertical arrow keys delegated to the key manager. */
|
|
907
|
+
_rtlService = inject(MlvRtlService);
|
|
908
|
+
/** @private FocusKeyManager driving roving-tabindex arrow navigation between children. */
|
|
909
|
+
_keyManager;
|
|
910
|
+
/** @private Subscription to the key manager's active-item changes. */
|
|
911
|
+
_changeSub;
|
|
912
|
+
constructor() {
|
|
913
|
+
inject(DestroyRef).onDestroy(() => {
|
|
914
|
+
this._changeSub?.unsubscribe();
|
|
915
|
+
this._keyManager?.destroy();
|
|
916
|
+
});
|
|
917
|
+
effect(() => {
|
|
918
|
+
const items = [...this._items()];
|
|
919
|
+
if (items.length === 0)
|
|
920
|
+
return;
|
|
921
|
+
// Destroy the previous instance before allocating a new one — without
|
|
922
|
+
// this, every children emission accumulates a live FocusKeyManager
|
|
923
|
+
// (subscriptions, change-detection refs) against detached items.
|
|
924
|
+
this._changeSub?.unsubscribe();
|
|
925
|
+
this._keyManager?.destroy();
|
|
926
|
+
this._keyManager = new FocusKeyManager(items)
|
|
927
|
+
.skipPredicate((item) => this._isDisabled(item))
|
|
928
|
+
.withVerticalOrientation()
|
|
929
|
+
.withWrap();
|
|
930
|
+
// Keep the roving tabindex in sync as focus moves between children so only
|
|
931
|
+
// the active item is tabbable. `tabIndex` is a signal, so the host binding
|
|
932
|
+
// updates under OnPush without an extra change-detection trigger.
|
|
933
|
+
this._changeSub = this._keyManager.change.subscribe((index) => this._syncTabIndices(index));
|
|
934
|
+
// Initial roving state: the first child is the single tab stop.
|
|
935
|
+
this._syncTabIndices(0);
|
|
936
|
+
});
|
|
937
|
+
}
|
|
938
|
+
/**
|
|
939
|
+
* Notifies the manager which child took focus so arrow navigation resumes from
|
|
940
|
+
* it. Wire to each child's focus notification (group accessor token).
|
|
941
|
+
*/
|
|
942
|
+
onChildFocus(item) {
|
|
943
|
+
const index = this._items().indexOf(item);
|
|
944
|
+
if (index >= 0) {
|
|
945
|
+
this._keyManager?.setActiveItem(index);
|
|
946
|
+
}
|
|
947
|
+
}
|
|
948
|
+
/**
|
|
949
|
+
* Delegates ArrowUp/ArrowDown to the key manager (moving focus + the tab stop)
|
|
950
|
+
* and suppresses the default page scroll. Wire to the group's `(keydown)`.
|
|
951
|
+
*/
|
|
952
|
+
onKeydown(event) {
|
|
953
|
+
const key = this._rtlService.normalizeArrowKey(event);
|
|
954
|
+
if (key === UP_ARROW || key === DOWN_ARROW) {
|
|
955
|
+
this._keyManager?.onKeydown(event);
|
|
956
|
+
event.preventDefault();
|
|
957
|
+
}
|
|
958
|
+
}
|
|
959
|
+
/** @private Sets tabindex 0 on the active child and -1 on the rest. */
|
|
960
|
+
_syncTabIndices(activeIndex) {
|
|
961
|
+
this._items().forEach((item, i) => {
|
|
962
|
+
item.tabIndex.set(i === activeIndex ? 0 : -1);
|
|
963
|
+
});
|
|
964
|
+
}
|
|
965
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: MlvFocusableGroupBase, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
966
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.7", type: MlvFocusableGroupBase, isStandalone: true, ngImport: i0 });
|
|
967
|
+
}
|
|
968
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: MlvFocusableGroupBase, decorators: [{
|
|
969
|
+
type: Directive
|
|
970
|
+
}], ctorParameters: () => [] });
|
|
971
|
+
|
|
972
|
+
/**
|
|
973
|
+
* Generated bundle index. Do not edit.
|
|
974
|
+
*/
|
|
975
|
+
|
|
976
|
+
export { MLV_FORM_CONTROL, MlvDescription, MlvFocusableGroupBase, MlvFormControlAppend, MlvFormControlInset, MlvFormControlPrepend, MlvFormControlWrapper, MlvFormControlWrapperControl, MlvFormField, MlvHint, MlvLabel, MlvMessage, MlvSelectionService, MlvSignalCheckboxControlBase, MlvSignalFormControlBase, MlvSignalFormUiControlBase, fromAriaValues, toAriaValues };
|
|
977
|
+
//# sourceMappingURL=malva-ui-core-form-utils.mjs.map
|