@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 @@
|
|
|
1
|
+
{"version":3,"file":"malva-ui-core-combobox.mjs","sources":["../../../../libs/core/combobox/src/lib/combobox-template.directives.ts","../../../../libs/core/combobox/src/lib/combobox/combobox.ts","../../../../libs/core/combobox/src/lib/combobox/combobox.html","../../../../libs/core/combobox/src/malva-ui-core-combobox.ts"],"sourcesContent":["import { Directive } from '@angular/core';\nimport { MlvStructural } from '@malva-ui/cdk/utils';\n\n@Directive({\n selector: '[mlvComboboxItemDef]',\n})\nexport class MlvComboboxItemDef extends MlvStructural {}\n\n@Directive({\n selector: '[mlvComboboxSelectedItemDef]',\n})\nexport class MlvComboboxSelectedItemDef extends MlvStructural {}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChild,\n effect,\n forwardRef,\n inject,\n input,\n model,\n output,\n signal,\n untracked,\n ViewEncapsulation,\n viewChild,\n} from '@angular/core';\nimport type { ElementRef } from '@angular/core';\nimport type { ConnectedPosition } from '@angular/cdk/overlay';\nimport type { BooleanInput } from '@angular/cdk/coercion';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n MlvPopup,\n MlvPopupContent,\n MlvPopupContainer,\n MlvPopupHeaderContent,\n} from '@malva-ui/core/popup';\nimport type { MlvPopupMobileMode } from '@malva-ui/core/popup';\nimport type { MlvFormControl } from '@malva-ui/core/form-utils';\nimport {\n MlvDescription,\n MlvFormControlWrapper,\n MlvFormControlWrapperControl,\n fromAriaValues,\n MlvHint,\n MlvLabel,\n MLV_FORM_CONTROL,\n MlvMessage,\n MlvSelectionService,\n toAriaValues,\n MlvSignalFormControlBase,\n} from '@malva-ui/core/form-utils';\nimport type {\n MlvOptionMatcher,\n MlvOptionsInput,\n MlvOptionsSearchFn,\n MlvSelectOption,\n MlvSelectOptionTransform,\n} from '@malva-ui/core/dropdown';\nimport {\n MlvActiveDescendant,\n defaultOptionTransform,\n filteredOutCommitted,\n isReconciliationEmit,\n MlvDropdownPanel,\n MlvOptionsAdapter,\n filterOptions,\n optionId,\n} from '@malva-ui/core/dropdown';\nimport { MlvChip } from '@malva-ui/core/chip';\nimport {\n MlvComboboxItemDef,\n MlvComboboxSelectedItemDef,\n} from '../combobox-template.directives';\nimport { LucideChevronDown } from '@lucide/angular';\nimport { MlvResizeObserver } from '@malva-ui/cdk/utils';\nimport type { MlvDensity } from '@malva-ui/cdk/density';\nimport { MlvInput } from '@malva-ui/core/input';\nimport {\n MLV_COMBOBOX_I18N,\n MLV_FORM_UTILS_I18N,\n MlvI18nResolverService,\n} from '@malva-ui/i18n';\nimport { MlvLoader } from '@malva-ui/core/loader';\nimport { MlvButtonClose } from '@malva-ui/core/button';\n\n@Component({\n selector: 'mlv-combobox',\n imports: [\n NgTemplateOutlet,\n MlvPopup,\n MlvPopupContent,\n MlvPopupContainer,\n MlvPopupHeaderContent,\n MlvDescription,\n MlvFormControlWrapper,\n MlvFormControlWrapperControl,\n MlvHint,\n MlvLabel,\n MlvMessage,\n LucideChevronDown,\n MlvResizeObserver,\n MlvDropdownPanel,\n MlvInput,\n MlvChip,\n MlvButtonClose,\n MlvLoader,\n ],\n templateUrl: './combobox.html',\n styleUrl: './combobox.scss',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n MlvSelectionService,\n {\n provide: MLV_FORM_CONTROL,\n useExisting: forwardRef(() => MlvCombobox),\n },\n ],\n host: {\n class: 'mlv-combobox',\n '[class]': '\"mlv-combobox--\" + resolvedState()',\n '[class.mlv-combobox--disabled]': 'computedDisabled()',\n '[class.mlv-combobox--open]': 'isOpen()',\n '[class.mlv-combobox--multiple]': 'multiple()',\n '[class.mlv-combobox--loading]': '_awaitingValueLabel()',\n },\n})\nexport class MlvCombobox<T>\n extends MlvSignalFormControlBase<T | T[] | null>\n implements MlvFormControl\n{\n /** The scalar, array, or null selection used by all Angular forms APIs. */\n readonly value = model<T | T[] | null>(null);\n /**\n * Selectable options: a plain array, an observable of arrays, or an\n * `MlvDataSource` (source-side search + lazy paging). Arrays and observables\n * are filtered locally by the typed query; a data source owns its filtering\n * and receives the query through `setSearch`.\n */\n readonly options = input<MlvOptionsInput<T>>([]);\n /**\n * Remote search: `(query) => T[] | Promise<T[]> | Observable<T[]>`. When set it\n * supersedes {@link options} as the item source; the list is not filtered\n * locally. Bind `[loading]` yourself if you want a spinner beyond the\n * source-owned one.\n */\n readonly searchFn = input<MlvOptionsSearchFn<T> | null>(null);\n /** Debounce (ms) for remote searches (`MlvDataSource` / {@link searchFn}). Local filtering stays instant. */\n readonly searchDebounce = input<number>(200);\n /** Whether multiple options can be selected at once. */\n readonly multiple = input<boolean, BooleanInput>(false, {\n transform: coerceBooleanProperty,\n });\n /** Custom placeholder override. Falls back to the i18n-provided placeholder. */\n readonly placeholder = input<string | undefined>(undefined);\n /** Whether the user can create a new value via Enter when no option matches. */\n readonly allowCreate = input<boolean, BooleanInput>(false, {\n transform: coerceBooleanProperty,\n });\n readonly toOption = input<MlvSelectOptionTransform<T>>(\n defaultOptionTransform as MlvSelectOptionTransform<T>,\n );\n\n /**\n * Equality predicate used to match option values against the current\n * selection (and against values written through any forms binding).\n * Defaults to reference equality. Provide a custom comparator — e.g.\n * `(a, b) => a.id === b.id` — so object values survive a serialize /\n * deserialize round-trip and still match their option instances (check-marks\n * and the displayed label stay in agreement).\n */\n readonly compareWith = input<(a: T, b: T) => boolean>((a, b) => a === b);\n\n /**\n * Custom predicate deciding whether an option satisfies the current query\n * (e.g. fuzzy or secondary-field matching). Defaults to the shared case- and\n * diacritic-insensitive substring match. Filtered results are always ranked\n * prefix-matches-first by the shared `filterOptions`, regardless of matcher.\n * Mirrors `[mlvAutocomplete]`'s `mlvAutocompleteMatcher`.\n */\n readonly matcher = input<MlvOptionMatcher<T> | undefined>(undefined);\n\n /** Emitted only when the user actually creates a brand-new value via Enter. */\n readonly valueCreated = output<T>();\n\n /**\n * Controls whether the dropdown renders as a full-screen mobile sheet.\n *\n * Passed straight through to the underlying `mlv-popup`. Defaults to\n * `'auto'` — full-screen below the `md` breakpoint (viewport < 768px),\n * trigger-anchored above it — matching `mlv-select` and the date/time\n * pickers. Set to `'off'` to always anchor, or `'fullscreen'` to always\n * render the sheet (e.g. demos).\n *\n * In full-screen mode the search field would normally be occluded by the\n * solid backdrop and blocked by the sheet's focus trap (it lives in the\n * trigger row, outside the overlay panel). The combobox therefore projects an\n * **in-sheet search input** into the popup's `[mlvPopupHeaderContent]` slot,\n * wired to the same `searchQuery` and keyboard handlers, so type-to-filter\n * keeps working.\n */\n readonly mobileMode = input<MlvPopupMobileMode>('auto');\n\n /**\n * Density applied to the dropdown's option list.\n *\n * The dropdown panel is portaled to the CDK overlay container, outside the\n * component's DOM tree, so ancestor density classes cannot cascade into it.\n * This input is forwarded to the underlying `mlv-popup`, which stamps the\n * resolved `mlv--{density}` class on the detached panel. When omitted, the\n * nearest ancestor `MLV_DENSITY_CONTEXT` (e.g. a `form[mlvForm]`) applies,\n * then the global `MlvDensityService`.\n */\n readonly mlvDensity = input<MlvDensity | undefined>(undefined);\n\n /**\n * Optional visible heading rendered in the full-screen sheet's header bar.\n * When omitted, falls back to the field's `label` (or, when unset, the\n * resolved placeholder). Only shown while the dropdown is full-screen.\n */\n readonly mobileTitle = input<string | undefined>(undefined);\n\n /**\n * @protected Resolved full-screen sheet title: explicit `mobileTitle` input\n * takes precedence over the field's label, then the resolved placeholder.\n */\n protected readonly _resolvedMobileTitle = computed(\n () => this.mobileTitle() ?? (this.label() || this._resolvedPlaceholder()),\n );\n\n /** @protected The component's i18n strings signal. */\n protected readonly _i18n = inject(MLV_COMBOBOX_I18N);\n\n protected readonly _formI18n = inject(MLV_FORM_UTILS_I18N);\n\n /** @protected Resolved placeholder: explicit input takes precedence over i18n default. */\n protected readonly _resolvedPlaceholder = computed(\n () => this.placeholder() ?? this._i18n().searchPlaceholder,\n );\n\n /**\n * @protected Accessible name forwarded to the dropdown panel's inner\n * `role=\"listbox\"` (`mlv-dropdown-panel`'s `ariaLabel`). Mirrors the outer\n * trigger input's own resolution — the visible {@link label} when set\n * (linked there via the wrapper's `<mlv-label for>`), else the explicit\n * {@link ariaLabel} input (rendered as the trigger's own `aria-label`) — so\n * the listbox shares the same accessible name as the field it belongs to.\n * `null` when neither is set, same as an unlabelled trigger.\n */\n protected readonly _panelAriaLabel = computed(\n () => this.label() || this.ariaLabel(),\n );\n\n // Override focused to also be true when the popup is open so the field keeps\n // its focus ring while the dropdown is showing.\n override readonly focused = computed(() => this._focused() || this.isOpen());\n\n /**\n * @private Latches `true` the first time a **remote** source reports\n * `ready()`, and never flips back. It gates {@link _adapter}'s `eager` flag\n * off for good.\n *\n * Without the latch, a `searchFn` bound to an inline arrow — a fresh\n * reference on every change detection run — re-arms the adapter's lazy gate\n * on every pass; while `eager` is still `true` (a committed value the first\n * response did not contain) each pass would fire another request, whose\n * result triggers the next pass. The latch bounds that to exactly one eager\n * load per mount.\n */\n private readonly _eagerDone = signal(false);\n\n /**\n * @protected Shared source adapter — arrays / observables are local (this\n * component filters), a data source or a `searchFn` is remote (the source\n * filters and the items render as-is). Template-facing: the paging bindings\n * (`hasMore` / `loadingMore` / `loadMore`) read straight off it.\n *\n * The `eager` closure reads {@link hasValue} / {@link _allValuesMatched}\n * lazily, so declaring those below is fine — the adapter's effects run after\n * construction. A committed value with no resolvable label is what makes a\n * `searchFn` load without waiting for the first open. The explicit type\n * annotation breaks the inference cycle that closure creates\n * (`_adapter` → `eager` → `_allValuesMatched` → `resolvedOptions` → `_adapter`).\n */\n protected readonly _adapter: MlvOptionsAdapter<T> = new MlvOptionsAdapter<T>({\n source: this.options,\n searchFn: this.searchFn,\n debounce: this.searchDebounce,\n eager: computed(\n () => this.hasValue() && !this._allValuesMatched() && !this._eagerDone(),\n ),\n });\n\n /** @private ICU resolver for parameterised i18n strings. */\n private readonly _resolver = inject(MlvI18nResolverService);\n\n /** @private Last query sent to a remote source (so a close can reset it once). */\n private _remoteQuery = '';\n\n readonly resolvedOptions = computed(() =>\n this._adapter.items().map((item) => this.toOption()(item)),\n );\n\n readonly isOpen = signal(false);\n /** Current text in the input. For single-select this doubles as the committed label when not actively searching. */\n readonly searchQuery = signal('');\n readonly triggerWidth = signal(0);\n\n /** @private Whether `searchQuery` represents live user search text (vs. a displayed committed label). */\n private readonly _searching = signal(false);\n /**\n * @private Shared activedescendant bookkeeping: tracks the active (highlighted)\n * option index over the filtered options with wrap-around navigation. The same\n * engine backs `[mlvAutocomplete]`.\n */\n private readonly _activeDescendant = new MlvActiveDescendant(\n () => this.filteredOptions().length,\n );\n\n /** @protected Exposed to the template for the panel's `[activeIndex]`. */\n protected readonly activeIndex = this._activeDescendant.index;\n\n /** The HTML `id` assigned to the inner listbox element for `aria-controls` linking. */\n readonly listboxId = computed(() => `${this.id()}-listbox`);\n\n readonly dropdownPositions: ConnectedPosition[] = [\n {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top',\n offsetY: 8,\n },\n {\n originX: 'start',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'bottom',\n offsetY: -8,\n },\n ];\n\n readonly filteredOptions = computed(() => {\n const resolved = this.resolvedOptions();\n // Remote sources (data source / `searchFn`) own their filtering — filtering\n // again here would hide server results that do not match the local matcher,\n // and would empty the list while a newer query is still in flight.\n if (this._adapter.mode() === 'remote') return resolved;\n const query = this._searching() ? this.searchQuery() : '';\n // Shared substring filter (case- and diacritic-insensitive; blank query\n // returns every option; prefix matches ranked first) — extracted to\n // `@malva-ui/core/dropdown` so the same matching powers `[mlvAutocomplete]`.\n return filterOptions(resolved, query, this.matcher());\n });\n\n /**\n * @protected The live query to highlight inside each suggestion (matched\n * substring emphasis). Empty unless the user is actively searching, so a\n * committed single-select label is never highlighted.\n */\n protected readonly _highlightQuery = computed(() =>\n this._searching() ? this.searchQuery().trim() : '',\n );\n\n /** @protected The options currently selected, resolved to `MlvSelectOption` for chip / template rendering. */\n protected readonly selectedOptions = computed<MlvSelectOption<T>[]>(() => {\n const transform = this.toOption();\n return this.selectionService\n .selectedValues()\n .map((value) => transform(value));\n });\n\n /** @protected The single-select committed label, or `''` when nothing is selected. */\n protected readonly _committedLabel = computed(() => {\n const opts = this.selectedOptions();\n return opts.length ? opts[0].label : '';\n });\n\n /** @protected Whether every committed value has a matching option (by `compareWith`). */\n protected readonly _allValuesMatched = computed(() => {\n const compare = this.compareWith();\n const opts = this.resolvedOptions();\n return this.selectionService\n .selectedValues()\n .every((v) => opts.some((o) => compare(o.value, v)));\n });\n\n /** @protected First payload arrived and no consumer-driven `loading`. */\n protected readonly _ready = computed(\n () => this._adapter.ready() && !this.loading(),\n );\n\n /**\n * @protected Loading variant: a value is committed but no option resolves its\n * label yet. The field is inert (readonly, no open) and shows a spinner in\n * place of the chevron until the first load resolves.\n */\n protected readonly _awaitingValueLabel = computed(\n () => this.hasValue() && !this._ready() && !this._allValuesMatched(),\n );\n\n /** @protected Panel spinner row: source-owned loading OR the consumer's `[loading]`. */\n protected readonly _panelLoading = computed(\n () => this._adapter.loading() || this.loading(),\n );\n\n /** @protected Chips to render: while awaiting, only options that resolved. */\n protected readonly _chipOptions = computed(() => {\n const selected = this.selectedOptions();\n if (!this._awaitingValueLabel()) return selected;\n const compare = this.compareWith();\n const opts = this.resolvedOptions();\n return selected.filter((s) => opts.some((o) => compare(o.value, s.value)));\n });\n\n /** @protected `Press Enter to add \"{query}\"` resolved through i18n. */\n protected readonly _pressEnterToAdd = computed(() =>\n this._resolver.resolve(\n this._i18n() as unknown as Record<string, string>,\n 'pressEnterToAdd',\n { query: this.searchQuery().trim() },\n ),\n );\n\n /**\n * @protected Whether the custom single-select display template should render\n * over the input: single-select, a `selectedTemplate` is provided, a value is\n * committed, and the field is not currently focused/searching (so the raw\n * input text is shown for editing while focused).\n */\n protected readonly _showSingleTemplate = computed(\n () =>\n !this.multiple() &&\n !!this.selectedTemplate()?.templateRef &&\n !!this._committedLabel() &&\n !this.focused(),\n );\n\n /** @protected `aria-activedescendant` target: the DOM id of the active option row, or `null`. */\n protected readonly _activeOptionId = computed(() => {\n const index = this._activeDescendant.index();\n if (index < 0 || index >= this.filteredOptions().length) return null;\n return optionId(this.listboxId(), index);\n });\n\n /**\n * @protected Polite screen-reader announcement of the current result count.\n * Empty while the popup is closed so no stale count is read out. Mirrors the\n * visible empty-state copy rendered inside the dropdown panel.\n */\n protected readonly _resultsAnnouncement = computed(() => {\n if (!this.isOpen()) return '';\n const count = this.filteredOptions().length;\n if (count === 0) {\n return this.allowCreate() && this.searchQuery().trim()\n ? this._pressEnterToAdd()\n : this._i18n().noResults;\n }\n return this._resolver.resolve(\n this._i18n() as unknown as Record<string, string>,\n 'resultsAvailable',\n { count },\n );\n });\n\n readonly selectionService =\n inject<MlvSelectionService<T>>(MlvSelectionService);\n\n itemTemplate = contentChild(MlvComboboxItemDef);\n selectedTemplate = contentChild(MlvComboboxSelectedItemDef);\n\n /** @private The inner `mlv-input` — the tab stop and focus target for the whole control. */\n private readonly _input = viewChild(MlvInput);\n\n /** @private The trigger row element (chips + input + chevron), used as the popup's click-outside exclusion. */\n private readonly _triggerRef = viewChild<ElementRef<HTMLElement>>('trigger');\n\n /** @private The dropdown popup — read to know whether it is rendering as a full-screen sheet. */\n private readonly _popupRef = viewChild(MlvPopup);\n\n /**\n * @protected Whether the dropdown is currently a full-screen mobile sheet\n * (mirrors `mlv-popup`'s own `isFullscreen()`). Drives the in-sheet search\n * input's ARIA/focus handoff and suppresses the outer trigger input's\n * combobox semantics so exactly one `role=\"combobox\"` is exposed at a time.\n */\n protected readonly _isFullscreen = computed<boolean>(\n () => this._popupRef()?.isFullscreen() ?? false,\n );\n\n /**\n * @protected Whether the outer trigger input owns the combobox semantics.\n * `false` only while the full-screen sheet is actually open — then the\n * in-sheet input is the live combobox and the outer input relinquishes the\n * role/ARIA so exactly one `role=\"combobox\"` is exposed. While anchored (or\n * full-screen but closed, when the outer input is the visible trigger) the\n * outer input keeps the combobox semantics.\n */\n protected readonly _outerIsCombobox = computed(\n () => !(this._isFullscreen() && this.isOpen()),\n );\n\n /**\n * @protected DOM `id` of the in-sheet search input. Distinct from the outer\n * input's `id()` so both can coexist while full-screen and the in-sheet field\n * can be focus-targeted by id after the sheet opens.\n */\n protected readonly _sheetInputId = computed(() => `${this.id()}-sheet-input`);\n\n /**\n * @protected Elements the backdrop-less dropdown popup treats as \"inside\" for\n * click-outside dismissal. The trigger row lives outside the floating panel,\n * so without this a click on the input (e.g. to reposition the caret) would\n * dismiss the open list. Passed to `mlv-popup`'s `dismissExcludeElements`.\n */\n protected readonly _popupExcludeElements = computed<HTMLElement[]>(() => {\n const el = this._triggerRef()?.nativeElement;\n return el ? [el] : [];\n });\n\n /** @private Raw values last written through a forms binding, pre-normalisation. */\n private _pendingValues: T[] = [];\n\n constructor() {\n super();\n effect(() => {\n this.selectionService.multiple.set(this.multiple());\n });\n effect(() => {\n this.selectionService.compareWith.set(this.compareWith());\n });\n // External value path. `toAriaValues` normalises scalar / array / `null`\n // forms shapes into the flat `T[]` the aria listbox panel expects; each\n // value is then matched against the current options via `compareWith` so\n // deserialized object values collapse onto their option instances (aria\n // listbox, check-marks and displayed label all agree). The **selection** is\n // normalised immediately, but the visible search text is left alone while a\n // live search is in flight — every exit from a search (commit / close /\n // clear) re-syncs it. See `_applyPendingValues`.\n effect(() => {\n this._pendingValues = toAriaValues(this.value());\n this._applyPendingValues();\n });\n // A `searchFn` is lazy: the first open is what triggers its initial load.\n effect(() => {\n if (this.isOpen()) untracked(() => this._adapter.ensureLoaded());\n });\n // Latch the eager gate off once a *remote* source has answered — see\n // `_eagerDone`. The mode check matters: an array source is `ready()` from\n // the first tick, so latching on readiness alone would disarm the gate\n // before a `searchFn` bound through a signal/late input ever became the\n // active branch.\n effect(() => {\n if (this._adapter.mode() === 'remote' && this._adapter.ready()) {\n untracked(() => this._eagerDone.set(true));\n }\n });\n }\n\n // ─── Input / focus events ────────────────────────────────────────────────\n\n /**\n * @protected Whether the last selected chip is \"armed\" — a visual-only\n * selection driven by Backspace in the empty search input while DOM focus\n * stays in the input (ported from mlv-tokenizer). The first Backspace arms;\n * the next Backspace (or Delete) removes the armed chip and arms the new\n * last one. Multi-select only.\n */\n protected readonly _armed = signal(false);\n\n /** @protected Polite screen-reader announcement for the armed chip. */\n protected readonly _armedMessage = signal('');\n\n /**\n * @protected Whether the given selected option is the currently armed chip.\n * Armed always targets the LAST selected chip.\n */\n protected _isChipArmed(option: MlvSelectOption<T>): boolean {\n const selected = this.selectedOptions();\n return this._armed() && option === selected[selected.length - 1];\n }\n\n /**\n * Handles Backspace in the search input (outer or in-sheet). When the input\n * holds text this is a native edit and is left alone. With an empty input in\n * multi-select: the first press arms the last chip (no deletion); each\n * subsequent press removes the armed chip and arms the new last one.\n */\n onInputBackspace(event: Event): void {\n if (!this.multiple() || this._isInert()) return;\n const el = event.target as HTMLInputElement | null;\n if ((el?.value ?? '') !== '') return; // caret editing text\n const selected = this.selectedOptions();\n if (selected.length === 0) return;\n\n event.preventDefault();\n if (!this._armed()) {\n this._armed.set(true);\n this._armedMessage.set(selected[selected.length - 1]?.label ?? '');\n return;\n }\n this._deleteArmedAndRearm();\n }\n\n /**\n * Handles Delete in the search input — parity with the second Backspace:\n * removes the armed chip and arms the new last one; no-op when nothing is\n * armed.\n */\n onInputDelete(event: Event): void {\n if (!this._armed()) return;\n event.preventDefault();\n this._deleteArmedAndRearm();\n }\n\n /**\n * @private Removes the armed (last) chip through the regular deselection\n * path and re-arms the new last chip, or disarms when none remain.\n */\n private _deleteArmedAndRearm(): void {\n const selected = this.selectedOptions();\n const last = selected[selected.length - 1];\n if (!last) {\n this._disarmChips();\n return;\n }\n this._internalChipRemoval = true;\n try {\n this.removeSelected(last.value);\n } finally {\n this._internalChipRemoval = false;\n }\n const remaining = this.selectedOptions();\n if (remaining.length === 0) {\n this._disarmChips();\n } else {\n this._armed.set(true);\n this._armedMessage.set(remaining[remaining.length - 1]?.label ?? '');\n }\n }\n\n /**\n * @private Marks a removeSelected call as originating from the arm-driven\n * deletion flow, so it preserves (re-arms) instead of disarming.\n */\n private _internalChipRemoval = false;\n\n /** @private Clears the armed chip selection and its live announcement. */\n private _disarmChips(): void {\n if (this._armed()) this._armed.set(false);\n if (this._armedMessage()) this._armedMessage.set('');\n }\n\n onSearchInput(event: Event): void {\n if (this._isInert()) return;\n // Typing is a caret edit — disarm any chip selection.\n this._disarmChips();\n const value = (event.target as HTMLInputElement).value;\n this.searchQuery.set(value);\n this._searching.set(true);\n this._activeDescendant.reset();\n if (!this.isOpen()) this.isOpen.set(true);\n // Remote sources filter server-side — forward the query (debounced) instead\n // of narrowing the rendered list locally.\n if (this._adapter.mode() === 'remote') {\n this._remoteQuery = value;\n this._adapter.search(value);\n }\n }\n\n /**\n * Opens the dropdown when the input gains focus (unless disabled/readonly).\n * Full-screen sheet mode is the exception: focus alone must NOT open — Tab\n * focus would trap the user straight into the sheet, and the programmatic\n * focus-restore in `_onPopupClosed` would instantly reopen it in a loop.\n * There the sheet opens via pointer ({@link onTriggerClick}), the chevron,\n * or explicit keyboard navigation (ArrowUp/Down).\n */\n onInputFocus(): void {\n this.setFocused(true);\n if (this._isInert() || this._isFullscreen()) return;\n this.isOpen.set(true);\n // Single-select: select the committed label so the next keystroke replaces it.\n if (!this.multiple() && this._committedLabel()) {\n this._input()?.select();\n }\n }\n\n /**\n * Opens the dropdown on a pointer click on the trigger input. This is the\n * open gesture for the full-screen sheet (where focus alone never opens it);\n * while anchored it is a no-op in practice because the preceding focus event\n * already opened the panel.\n */\n onTriggerClick(): void {\n if (this._isInert()) return;\n this._disarmChips();\n this.isOpen.set(true);\n }\n\n /** Closes the dropdown, reverts stale text, and marks touched when focus genuinely leaves the field. */\n onInputBlur(): void {\n // Focus leaving the field disarms the chip selection (tokenizer parity).\n this._disarmChips();\n this.setFocused(false);\n this._markTouched();\n // Full-screen sheet: the outer trigger input blurs the moment focus is\n // handed to the in-sheet input on open, and the sheet's focus trap keeps\n // focus moving between the in-sheet input, chips, and options. Blur must\n // NOT close/revert here — the sheet is dismissed only via the X button,\n // Escape, or a committed selection (all routed through `_onPopupClosed`).\n if (this._isFullscreen()) return;\n this._revertAndClose();\n }\n\n /**\n * @protected Called after the dropdown popup finishes opening. In full-screen\n * mode, hands focus to the in-sheet search input (the outer trigger input is\n * occluded by the backdrop and outside the sheet's focus trap). No-op while\n * trigger-anchored, so the desktop path is unchanged.\n */\n protected _onPopupOpened(): void {\n if (!this._isFullscreen()) return;\n // The in-sheet input is stamped inside the overlay (a detached embedded\n // view), so it is not reachable via this component's view queries — locate\n // it by its deterministic id, mirroring the day-picker's focus-into-panel.\n document.getElementById(this._sheetInputId())?.focus();\n }\n\n /**\n * @protected Called after the dropdown popup finishes closing. In full-screen\n * mode, reverts any stale search text to the committed selection and restores\n * focus to the outer trigger input (matching the desktop close behaviour that\n * `onInputBlur`/`onEscape` provide when anchored). No-op while anchored.\n */\n protected _onPopupClosed(): void {\n if (!this._isFullscreen()) return;\n this._activeDescendant.reset();\n this._syncDisplayText();\n this.setInitialFocus();\n }\n\n override setFocused(isFocused = true): void {\n this._focused.set(isFocused);\n }\n\n // ─── Keyboard ────────────────────────────────────────────────────────────\n\n onArrowDown(event: Event): void {\n event.preventDefault();\n if (this._isInert()) return;\n this._openForNavigation();\n this._activeDescendant.move(1);\n }\n\n onArrowUp(event: Event): void {\n event.preventDefault();\n if (this._isInert()) return;\n this._openForNavigation();\n this._activeDescendant.move(-1);\n }\n\n onHome(event: Event): void {\n if (!this.isOpen() || this._isInert()) return;\n event.preventDefault();\n this._activeDescendant.first();\n }\n\n onEnd(event: Event): void {\n if (!this.isOpen() || this._isInert()) return;\n event.preventDefault();\n this._activeDescendant.last();\n }\n\n onEnterKey(event?: Event): void {\n event?.preventDefault();\n if (this._isInert()) return;\n\n const filtered = this.filteredOptions();\n const active = this._activeDescendant.index();\n\n // 1. A navigated (highlighted) option wins — APG \"Enter selects active\".\n if (active >= 0 && active < filtered.length) {\n this._commitValue(filtered[active].value);\n return;\n }\n\n const query = this.searchQuery().trim();\n if (!query) return;\n\n // 2. Exact text match selects (never deselects).\n const exactMatch = filtered.find(\n (o) => o.label.toLowerCase() === query.toLowerCase(),\n );\n if (exactMatch) {\n this._commitValue(exactMatch.value);\n return;\n }\n\n // 3. allowCreate: ADD a brand-new value (never toggle-off, never duplicate).\n if (this.allowCreate()) {\n const value = query as unknown as T;\n if (!this.selectionService.isSelected(value)) {\n this._addOrReplace(value);\n this.valueCreated.emit(value);\n this._emitValue();\n }\n this._afterCommit();\n }\n }\n\n /** First press (open) closes + reverts; second press (already closed) clears. */\n onEscape(event: Event): void {\n event.preventDefault();\n if (this.isOpen()) {\n this._revertAndClose();\n } else {\n this.onClear();\n }\n }\n\n /** Chevron toggle. Uses `mousedown` + `preventDefault` so the input keeps focus. */\n onChevronMousedown(event: MouseEvent): void {\n event.preventDefault();\n if (this._isInert()) return;\n if (this.isOpen()) {\n this.isOpen.set(false);\n } else {\n this._input()?.focus();\n this.isOpen.set(true);\n }\n }\n\n // ─── Selection ───────────────────────────────────────────────────────────\n\n /**\n * Panel (pointer) selection path: aria emits the full selected-values array.\n *\n * The aria `ngListbox` re-emits its `value` model whenever the *rendered*\n * option set changes — not only on user interaction. Typing filters the\n * selected option out of view, so aria reconciles `value` down to the\n * currently-rendered options and re-emits (see the `afterRenderEffect` in\n * `@angular/aria`'s `Listbox`). That reconciliation is NOT a user action and\n * must never mutate the committed selection or run commit side-effects\n * (close / emit) — otherwise a single-select loses its value on any\n * re-search and multi/allowCreate drop previously-picked items while typing\n * to add another. We detect and ignore those emissions here.\n */\n selectValues(values: readonly T[]): void {\n const incoming = [...values];\n const committed = this.selectionService.selectedValues();\n\n // Reconciliation noise: the emit adds nothing to the committed selection\n // and only drops values whose option is currently filtered out of view. A\n // genuine pointer selection either ADDS a value or REMOVES a still-visible\n // one — so this is safe to ignore entirely (no mutation, no side-effects).\n if (this._isReconciliationEmit(incoming, committed)) return;\n\n // Genuine pointer selection. In multi-select, aria has already reconciled\n // any filtered-out committed value out of its model, so re-add those\n // (otherwise \"type to add another\" silently drops earlier picks). Single-\n // select replaces, so no preservation is needed.\n const next = this.multiple()\n ? [...incoming, ...this._filteredOutCommitted(incoming, committed)]\n : incoming;\n\n this.selectionService.setValues(next);\n this._emitValue();\n this._afterCommit();\n }\n\n /**\n * @private Whether an incoming panel `valueChange` is pure aria reconciliation\n * noise rather than a user selection. True when the emit (a) adds no value not\n * already committed and (b) only removes values whose option is currently\n * filtered out of the rendered list. An emit that adds a value, removes a\n * still-visible value (a genuine deselection), or exactly re-states the\n * committed selection (nets to no change) is handled accordingly — the last\n * case is treated as reconciliation so a spurious re-emit never re-runs the\n * commit side-effects (e.g. closing a single-select popup mid-search).\n */\n private _isReconciliationEmit(\n incoming: readonly T[],\n committed: readonly T[],\n ): boolean {\n return isReconciliationEmit(\n incoming,\n committed,\n this.filteredOptions().map((o) => o.value),\n this.compareWith(),\n );\n }\n\n /**\n * @private Committed values that aria dropped from its model only because\n * their option is filtered out of the rendered list (and are not in the\n * incoming array). Re-added to a genuine multi-select selection so earlier\n * picks survive typing to add another value.\n */\n private _filteredOutCommitted(\n incoming: readonly T[],\n committed: readonly T[],\n ): T[] {\n return filteredOutCommitted(\n incoming,\n committed,\n this.filteredOptions().map((o) => o.value),\n this.compareWith(),\n );\n }\n\n /** Removes a single selected value (multi-select chip close / keyboard remove). */\n removeSelected(value: T): void {\n // A click-removal (or any external deselection) disarms; the arm-driven\n // deletion flow re-arms itself afterwards.\n if (!this._internalChipRemoval) this._disarmChips();\n this.selectionService.deselect(value);\n this._emitValue();\n this._focusActiveInput();\n }\n\n /**\n * @private Focuses whichever search input is currently interactive: the\n * in-sheet input while full-screen, otherwise the outer trigger input.\n */\n private _focusActiveInput(): void {\n if (this._isFullscreen()) {\n document.getElementById(this._sheetInputId())?.focus();\n return;\n }\n this._input()?.focus();\n }\n\n /** Clears the whole selection and search text, emits, and refocuses the input. */\n onClear(): void {\n this.selectionService.clear();\n this.searchQuery.set('');\n this._searching.set(false);\n this._activeDescendant.reset();\n this._resetRemoteSearch();\n this._emitValue();\n this._input()?.focus();\n }\n\n /** Moves focus back to the input (e.g. after single-select commit / close). */\n setInitialFocus(): void {\n this._input()?.focus();\n }\n\n updateTriggerWidth(evt: ResizeObserverEntry[]): void {\n this.triggerWidth.set(evt[0].target.getBoundingClientRect().width);\n }\n\n // ─── Forms value ─────────────────────────────────────────────────────────\n\n /**\n * The combobox renders its own clear button inline in the trigger row,\n * before the chevron — the wrapper must not render its trailing copy.\n */\n readonly ownsClearButton = computed(() => true);\n\n /** Whether the control holds a clearable value — At least one committed option selected (search text alone is not a value). */\n readonly hasValue = computed(\n () => this.selectionService.selectedValues().length > 0,\n );\n\n /** @private Normalises the pending form values against the current options and syncs display text. */\n private _applyPendingValues(): void {\n const compare = this.compareWith();\n const opts = this.resolvedOptions();\n const normalized = this._pendingValues.map(\n (v) => opts.find((o) => compare(o.value, v))?.value ?? v,\n );\n this.selectionService.setValues(normalized);\n // This effect re-runs on every `resolvedOptions()` change — which now\n // includes every remote response and every observable emission. Resyncing\n // the display text there would wipe the query the user is still typing, so\n // it is skipped while a live search is in flight; every exit from a search\n // (commit / revert / clear) calls `_syncDisplayText()` itself. Read\n // untracked so the effect's dependency set stays value + options.\n if (!untracked(() => this._searching())) this._syncDisplayText();\n }\n\n // ─── Internal helpers ─────────────────────────────────────────────────────\n\n /** @private Whether all open / interaction paths must be suppressed. */\n private _isInert(): boolean {\n return (\n this.computedDisabled() || this.readonly() || this._awaitingValueLabel()\n );\n }\n\n /** @private Opens the popup for keyboard navigation, resetting the active index on first open. */\n private _openForNavigation(): void {\n if (!this.isOpen()) {\n this.isOpen.set(true);\n this._activeDescendant.reset();\n }\n }\n\n /** @private ADD-only selection: single-select replaces, multi-select appends without duplicating. */\n private _addOrReplace(value: T): void {\n if (this.multiple()) {\n if (!this.selectionService.isSelected(value)) {\n this.selectionService.setValues([\n ...this.selectionService.selectedValues(),\n value,\n ]);\n }\n } else {\n this.selectionService.setValues([value]);\n }\n }\n\n /** @private Commits an option value (Enter / active / exact-match path) and settles the UI. */\n private _commitValue(value: T): void {\n this._addOrReplace(value);\n this._emitValue();\n this._afterCommit();\n }\n\n /** @private Settles UI after a committed selection: single closes + refocuses, multi stays open for more. */\n private _afterCommit(): void {\n this._activeDescendant.reset();\n if (this.multiple()) {\n this.searchQuery.set('');\n this._searching.set(false);\n this._resetRemoteSearch();\n this._input()?.focus();\n } else {\n this._syncDisplayText();\n this._resetRemoteSearch();\n // Refocus first (the focus handler re-opens), then force the popup shut so\n // the field ends up focused-but-closed after a single-select commit.\n this.setInitialFocus();\n this.isOpen.set(false);\n }\n }\n\n /** @private Reverts stale search text to the committed state and closes the popup. */\n private _revertAndClose(): void {\n this.isOpen.set(false);\n this._activeDescendant.reset();\n this._syncDisplayText();\n this._resetRemoteSearch();\n }\n\n /**\n * @private Re-searches `''` once whenever the visible query is dropped\n * (close / revert, a commit in either selection mode, or a clear), so a blank\n * input never sits above a list still filtered by the previous query. No-op\n * in local mode and when the last remote query was already blank.\n */\n private _resetRemoteSearch(): void {\n if (this._adapter.mode() === 'remote' && this._remoteQuery !== '') {\n this._remoteQuery = '';\n this._adapter.search('');\n }\n }\n\n /** @private Sets the input text to reflect the committed selection (single) or clears it (multi). */\n private _syncDisplayText(): void {\n this._searching.set(false);\n this.searchQuery.set(this.multiple() ? '' : this._committedLabel());\n }\n\n /**\n * @private Commits the current selection to the forms model. {@link fromAriaValues}\n * collapses the aria-side selection array back to the public value shape: `T[]`\n * for multi-select, or the first value / `null` when empty for single-select.\n */\n private _emitValue(): void {\n this.value.set(\n fromAriaValues(this.selectionService.selectedValues(), this.multiple()),\n );\n this._markTouched();\n }\n}\n","<mlv-form-control-wrapper (clear)=\"onClear()\">\n @if (label() || hint()) {\n <mlv-label [for]=\"id()\" [required]=\"required()\">\n {{ label() }} @if (hint()) {\n <mlv-hint>{{ hint() }}</mlv-hint>\n }\n </mlv-label>\n }\n\n <ng-template mlvFormControlWrapperControl>\n <mlv-popup-container class=\"mlv-combobox__popup-container\">\n <div\n class=\"mlv-combobox__trigger\"\n mlvResizeObserver\n #trigger\n [attr.aria-busy]=\"_awaitingValueLabel() || null\"\n (resized)=\"updateTriggerWidth($event)\"\n >\n @if (multiple()) { @for (opt of _chipOptions(); track opt.value) {\n <mlv-chip\n class=\"mlv-combobox__chip\"\n [class.mlv-combobox__chip--armed]=\"_isChipArmed(opt)\"\n muted\n [closable]=\"!computedDisabled() && !readonly()\"\n (mousedown)=\"$event.preventDefault()\"\n (chipClose)=\"removeSelected(opt.value)\"\n >\n @if (selectedTemplate()?.templateRef; as tpl) {\n <ng-container *ngTemplateOutlet=\"tpl; context: { $implicit: opt }\" />\n } @else { {{ opt.label }} }\n </mlv-chip>\n } }\n\n <div\n class=\"mlv-combobox__field\"\n [class.mlv-combobox__field--template-display]=\"_showSingleTemplate()\"\n >\n <mlv-input\n bare\n class=\"mlv-combobox__input\"\n [id]=\"id()\"\n [role]=\"_outerIsCombobox() ? 'combobox' : null\"\n [ariaExpanded]=\"_outerIsCombobox() ? isOpen() : null\"\n [ariaHasPopup]=\"_outerIsCombobox() ? 'listbox' : null\"\n [ariaAutocomplete]=\"_outerIsCombobox() ? 'list' : null\"\n [ariaControls]=\"_outerIsCombobox() && isOpen() ? listboxId() : null\"\n [ariaActiveDescendant]=\"\n _outerIsCombobox() ? _activeOptionId() : null\n \"\n [ariaLabel]=\"label() ? null : ariaLabel()\"\n [required]=\"required()\"\n [ariaDescribedBy]=\"_describedBy()\"\n [placeholder]=\"\n _awaitingValueLabel() ? _i18n().loading : _resolvedPlaceholder()\n \"\n [disabled]=\"computedDisabled()\"\n [readonly]=\"readonly() || _awaitingValueLabel()\"\n [value]=\"_awaitingValueLabel() ? '' : searchQuery()\"\n [autocomplete]=\"'off'\"\n (input)=\"onSearchInput($event)\"\n (inputFocus)=\"onInputFocus()\"\n (inputBlur)=\"onInputBlur()\"\n (click)=\"onTriggerClick()\"\n (keydown.enter)=\"onEnterKey($event)\"\n (keydown.backspace)=\"onInputBackspace($event)\"\n (keydown.delete)=\"onInputDelete($event)\"\n (keydown.arrowDown)=\"onArrowDown($event)\"\n (keydown.arrowUp)=\"onArrowUp($event)\"\n (keydown.home)=\"onHome($event)\"\n (keydown.end)=\"onEnd($event)\"\n (keydown.escape)=\"onEscape($event)\"\n />\n\n @if (_showSingleTemplate()) {\n <div class=\"mlv-combobox__single-display\" aria-hidden=\"true\">\n <ng-container\n *ngTemplateOutlet=\"\n selectedTemplate()!.templateRef;\n context: { $implicit: selectedOptions()[0] }\n \"\n />\n </div>\n }\n </div>\n\n @if (clearable() && hasValue() && !computedDisabled() && !readonly()) {\n <!-- Inline clear, BEFORE the chevron (ownsClearButton suppresses the\n wrapper's trailing copy). mousedown is prevented so the input keeps\n focus while clearing. -->\n <mlv-button-close\n class=\"mlv-combobox__clear\"\n (mousedown)=\"$event.preventDefault()\"\n (click)=\"onClear()\"\n mlvDensity=\"tight\"\n [ariaLabel]=\"_formI18n().clear\"\n />\n }\n <!-- The chevron is replaced by a spinner while the committed value's\n label is still resolving — the field is inert then, so a toggle\n button would be a dead control. -->\n @if (_awaitingValueLabel()) {\n <mlv-loader\n class=\"mlv-combobox__loader\"\n variant=\"circle\"\n indeterminate\n [size]=\"18\"\n [strokeWidth]=\"2\"\n [ariaLabel]=\"_i18n().loading\"\n />\n } @else {\n <button\n type=\"button\"\n class=\"mlv-combobox__arrow\"\n tabindex=\"-1\"\n [attr.aria-label]=\"_i18n().toggleOptions\"\n [disabled]=\"computedDisabled()\"\n (mousedown)=\"onChevronMousedown($event)\"\n >\n <svg size=\"20\" lucideChevronDown></svg>\n </button>\n }\n </div>\n\n <mlv-popup\n [(opened)]=\"isOpen\"\n [width]=\"triggerWidth()\"\n [hasShadow]=\"true\"\n [hasBackdrop]=\"false\"\n [flexibleDimensions]=\"true\"\n [positions]=\"dropdownPositions\"\n [dismissExcludeElements]=\"_popupExcludeElements()\"\n [mobileMode]=\"mobileMode()\"\n [mobileTitle]=\"_resolvedMobileTitle()\"\n [mlvDensity]=\"mlvDensity()\"\n class=\"mlv-combobox__popup\"\n (afterOpened)=\"_onPopupOpened()\"\n (afterClosed)=\"_onPopupClosed()\"\n >\n <!-- Full-screen sheet only: an in-sheet search field (and, for\n multi-select, the selected chips) rendered in the popup header so\n type-to-filter survives the sheet's solid backdrop + focus trap.\n Not stamped while trigger-anchored, so desktop is unaffected. -->\n <ng-template mlvPopupHeaderContent>\n <div class=\"mlv-combobox__sheet-header\">\n @if (multiple() && _chipOptions().length) {\n <div class=\"mlv-combobox__sheet-chips\">\n @for (opt of _chipOptions(); track opt.value) {\n <mlv-chip\n class=\"mlv-combobox__chip\"\n [class.mlv-combobox__chip--armed]=\"_isChipArmed(opt)\"\n muted\n [closable]=\"!computedDisabled() && !readonly()\"\n (mousedown)=\"$event.preventDefault()\"\n (chipClose)=\"removeSelected(opt.value)\"\n >\n @if (selectedTemplate()?.templateRef; as tpl) {\n <ng-container\n *ngTemplateOutlet=\"tpl; context: { $implicit: opt }\"\n />\n } @else { {{ opt.label }} }\n </mlv-chip>\n }\n </div>\n }\n\n <mlv-input\n class=\"mlv-combobox__sheet-input\"\n [id]=\"_sheetInputId()\"\n [role]=\"_isFullscreen() ? 'combobox' : null\"\n [ariaLabel]=\"_resolvedMobileTitle()\"\n [ariaExpanded]=\"_isFullscreen() ? isOpen() : null\"\n [ariaHasPopup]=\"_isFullscreen() ? 'listbox' : null\"\n [ariaAutocomplete]=\"_isFullscreen() ? 'list' : null\"\n [ariaControls]=\"\n _isFullscreen() && isOpen() ? listboxId() : null\n \"\n [ariaActiveDescendant]=\"\n _isFullscreen() ? _activeOptionId() : null\n \"\n [placeholder]=\"\n _awaitingValueLabel() ? _i18n().loading : _resolvedPlaceholder()\n \"\n [disabled]=\"computedDisabled()\"\n [readonly]=\"readonly() || _awaitingValueLabel()\"\n [value]=\"_awaitingValueLabel() ? '' : searchQuery()\"\n [autocomplete]=\"'off'\"\n (input)=\"onSearchInput($event)\"\n (inputFocus)=\"onInputFocus()\"\n (inputBlur)=\"onInputBlur()\"\n (keydown.enter)=\"onEnterKey($event)\"\n (keydown.backspace)=\"onInputBackspace($event)\"\n (keydown.delete)=\"onInputDelete($event)\"\n (keydown.arrowDown)=\"onArrowDown($event)\"\n (keydown.arrowUp)=\"onArrowUp($event)\"\n (keydown.home)=\"onHome($event)\"\n (keydown.end)=\"onEnd($event)\"\n (keydown.escape)=\"onEscape($event)\"\n />\n </div>\n </ng-template>\n\n <ng-template mlvPopupContent>\n <!-- Keep DOM focus in the input while pointing at the panel: prevent the\n mousedown from blurring the field so the activedescendant model and\n open state survive option / scrollbar clicks. -->\n <div\n class=\"mlv-combobox__panel\"\n (mousedown)=\"$event.preventDefault()\"\n >\n <mlv-dropdown-panel\n scrollMode=\"parent\"\n [options]=\"filteredOptions()\"\n [multiple]=\"multiple()\"\n [selectedValues]=\"selectionService.selectedValues()\"\n [itemTemplate]=\"itemTemplate()?.templateRef ?? null\"\n [highlightQuery]=\"_highlightQuery()\"\n [listboxId]=\"listboxId()\"\n [ariaLabel]=\"_panelAriaLabel()\"\n focusMode=\"activedescendant\"\n [activeIndex]=\"activeIndex()\"\n [loading]=\"_panelLoading()\"\n [loadingText]=\"_i18n().loading\"\n [hasMore]=\"_adapter.hasMore()\"\n [loadingMore]=\"_adapter.loadingMore()\"\n (loadMore)=\"_adapter.loadMore()\"\n (valueChange)=\"selectValues($event)\"\n >\n <div class=\"mlv-combobox__empty\">\n @if (allowCreate() && searchQuery().trim()) { {{\n _pressEnterToAdd() }} } @else { {{ _i18n().noResults }} }\n </div>\n </mlv-dropdown-panel>\n </div>\n </ng-template>\n </mlv-popup>\n </mlv-popup-container>\n\n <!-- Polite announcement of the current result count for screen-reader users. -->\n <div class=\"mlv-combobox__sr-status\" aria-live=\"polite\" role=\"status\">\n {{ _resultsAnnouncement() }}\n </div>\n <!-- Polite announcement of the currently armed chip (Backspace flow). -->\n <div class=\"mlv-combobox__sr-status\" aria-live=\"polite\" role=\"status\">\n {{ _armedMessage() }}\n </div>\n </ng-template>\n\n @if (description()) {\n <mlv-description [id]=\"_descriptionId()\">{{ description() }}</mlv-description>\n } @if (message()) {\n <mlv-message [id]=\"_messageId()\" [state]=\"resolvedState()\">\n {{ message() }}\n </mlv-message>\n }\n</mlv-form-control-wrapper>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,255 @@
|
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { input, output, inject, computed, signal, ElementRef, NgZone, PLATFORM_ID, DestroyRef, afterNextRender, ChangeDetectionStrategy, ViewEncapsulation, Component } from '@angular/core';
|
|
3
|
+
import { isPlatformBrowser } from '@angular/common';
|
|
4
|
+
import { coerceBooleanProperty } from '@angular/cdk/coercion';
|
|
5
|
+
import { Clipboard } from '@angular/cdk/clipboard';
|
|
6
|
+
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
7
|
+
import { LucideCopy, LucideCheck } from '@lucide/angular';
|
|
8
|
+
import { MlvResizeObserverService } from '@malva-ui/cdk/utils';
|
|
9
|
+
import { MlvTooltip } from '@malva-ui/core/tooltip';
|
|
10
|
+
import { MLV_COPY_TO_CLIPBOARD_I18N } from '@malva-ui/i18n';
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Inline copy-to-clipboard component.
|
|
14
|
+
*
|
|
15
|
+
* The component wraps arbitrary projected content (typically a short inline
|
|
16
|
+
* string). It reads as regular prose until the user hovers, at which point a
|
|
17
|
+
* subtle background tint appears and a small copy icon fades in at the trailing
|
|
18
|
+
* edge. Activating the element — click, Enter, or Space — writes the value to
|
|
19
|
+
* the clipboard, morphs the icon from Copy to Check via a soft blur crossfade,
|
|
20
|
+
* and emits the `copied` output.
|
|
21
|
+
*
|
|
22
|
+
* The copied text is derived from:
|
|
23
|
+
* 1. An explicit `value` input if provided, otherwise
|
|
24
|
+
* 2. The projected content's `textContent`.
|
|
25
|
+
*
|
|
26
|
+
* @example Basic inline usage
|
|
27
|
+
* ```html
|
|
28
|
+
* <p>
|
|
29
|
+
* Your API key is <mlv-copy-to-clipboard>sk_live_abc123xyz</mlv-copy-to-clipboard>.
|
|
30
|
+
* </p>
|
|
31
|
+
* ```
|
|
32
|
+
*
|
|
33
|
+
* @example Override with [value]
|
|
34
|
+
* ```html
|
|
35
|
+
* Order #<mlv-copy-to-clipboard [value]="'ORDER-0042-7F9X2'">0042</mlv-copy-to-clipboard>
|
|
36
|
+
* ```
|
|
37
|
+
*
|
|
38
|
+
* @example Custom copied duration
|
|
39
|
+
* ```html
|
|
40
|
+
* <mlv-copy-to-clipboard [copiedDuration]="4000">token-value</mlv-copy-to-clipboard>
|
|
41
|
+
* ```
|
|
42
|
+
*
|
|
43
|
+
* @example Toast integration
|
|
44
|
+
* ```html
|
|
45
|
+
* <mlv-copy-to-clipboard (copied)="onCopied($event)">value</mlv-copy-to-clipboard>
|
|
46
|
+
* ```
|
|
47
|
+
*/
|
|
48
|
+
class MlvCopyToClipboard {
|
|
49
|
+
/**
|
|
50
|
+
* Optional explicit value that will be written to the clipboard when the
|
|
51
|
+
* component is activated. When omitted, the component uses the `textContent`
|
|
52
|
+
* of the projected default slot content.
|
|
53
|
+
*/
|
|
54
|
+
value = input(undefined, /* @ts-ignore */
|
|
55
|
+
...(ngDevMode ? [{ debugName: "value" }] : /* istanbul ignore next */ []));
|
|
56
|
+
/**
|
|
57
|
+
* Duration in milliseconds for which the "copied" success state remains
|
|
58
|
+
* active after a successful clipboard write. After this window elapses, the
|
|
59
|
+
* component reverts to its idle state.
|
|
60
|
+
*
|
|
61
|
+
* @default 2000
|
|
62
|
+
*/
|
|
63
|
+
copiedDuration = input(2000, /* @ts-ignore */
|
|
64
|
+
...(ngDevMode ? [{ debugName: "copiedDuration" }] : /* istanbul ignore next */ []));
|
|
65
|
+
/**
|
|
66
|
+
* Custom aria-label override. Falls back to the i18n-provided label.
|
|
67
|
+
* When a resolved value is available (either `value()` or projected text
|
|
68
|
+
* content), it is appended to this base for richer screen-reader context.
|
|
69
|
+
*/
|
|
70
|
+
ariaLabel = input(undefined, /* @ts-ignore */
|
|
71
|
+
...(ngDevMode ? [{ debugName: "ariaLabel" }] : /* istanbul ignore next */ []));
|
|
72
|
+
/**
|
|
73
|
+
* Text announced via the visually-hidden `aria-live="polite"` region
|
|
74
|
+
* immediately after a successful clipboard write.
|
|
75
|
+
*
|
|
76
|
+
* @default 'Copied to clipboard'
|
|
77
|
+
*/
|
|
78
|
+
copiedAriaLabel = input('Copied to clipboard', /* @ts-ignore */
|
|
79
|
+
...(ngDevMode ? [{ debugName: "copiedAriaLabel" }] : /* istanbul ignore next */ []));
|
|
80
|
+
/**
|
|
81
|
+
* When true, disables the copy action, removes the host from the tab order,
|
|
82
|
+
* and reflects `aria-disabled="true"`. Accepts attribute-style usage:
|
|
83
|
+
* `<mlv-copy-to-clipboard disabled>`.
|
|
84
|
+
*/
|
|
85
|
+
disabled = input(false, { ...(ngDevMode ? { debugName: "disabled" } : /* istanbul ignore next */ {}), transform: coerceBooleanProperty });
|
|
86
|
+
/**
|
|
87
|
+
* Emits the exact string that was successfully written to the clipboard.
|
|
88
|
+
* Fires after the `navigator.clipboard.writeText` promise resolves.
|
|
89
|
+
*/
|
|
90
|
+
copied = output();
|
|
91
|
+
/**
|
|
92
|
+
* Reactive signal exposing whether the component is currently in the copied
|
|
93
|
+
* success state. Useful for template-driven UI that needs to react to the
|
|
94
|
+
* transient state (e.g. conditional labels).
|
|
95
|
+
*/
|
|
96
|
+
isCopied;
|
|
97
|
+
/** @protected The component's i18n strings signal. */
|
|
98
|
+
_i18n = inject(MLV_COPY_TO_CLIPBOARD_I18N);
|
|
99
|
+
/**
|
|
100
|
+
* @protected Computed accessible label. Combines the base `ariaLabel` (or
|
|
101
|
+
* i18n fallback) with the current resolved value when one is available, so
|
|
102
|
+
* screen readers get a descriptive name like `"Copy to clipboard: sk_live_abc123"`.
|
|
103
|
+
*/
|
|
104
|
+
_computedAriaLabel = computed(() => {
|
|
105
|
+
const base = this.ariaLabel() ?? this._i18n().copyToClipboard;
|
|
106
|
+
const explicit = this.value();
|
|
107
|
+
if (explicit && explicit.length > 0) {
|
|
108
|
+
return `${base}: ${explicit}`;
|
|
109
|
+
}
|
|
110
|
+
return base;
|
|
111
|
+
}, /* @ts-ignore */
|
|
112
|
+
...(ngDevMode ? [{ debugName: "_computedAriaLabel" }] : /* istanbul ignore next */ []));
|
|
113
|
+
/** @private Backing signal for `isCopied`. */
|
|
114
|
+
_isCopied = signal(false, /* @ts-ignore */
|
|
115
|
+
...(ngDevMode ? [{ debugName: "_isCopied" }] : /* istanbul ignore next */ []));
|
|
116
|
+
/** @private Leading mask layer width, synchronized with the copy container. */
|
|
117
|
+
_maskLeadingWidth = signal('51%', /* @ts-ignore */
|
|
118
|
+
...(ngDevMode ? [{ debugName: "_maskLeadingWidth" }] : /* istanbul ignore next */ []));
|
|
119
|
+
/** @private Trailing mask layer width, synchronized with the copy container. */
|
|
120
|
+
_maskTrailingWidth = signal('50%', /* @ts-ignore */
|
|
121
|
+
...(ngDevMode ? [{ debugName: "_maskTrailingWidth" }] : /* istanbul ignore next */ []));
|
|
122
|
+
/**
|
|
123
|
+
* @private Host element reference, used to read `textContent` when no
|
|
124
|
+
* explicit `value` input is provided.
|
|
125
|
+
*/
|
|
126
|
+
_elementRef = inject((ElementRef));
|
|
127
|
+
/** @private Shared observer used to keep mask dimensions aligned to the host width. */
|
|
128
|
+
_resizeObserver = inject(MlvResizeObserverService);
|
|
129
|
+
/** @private Re-enters Angular only when an observed width changes. */
|
|
130
|
+
_ngZone = inject(NgZone);
|
|
131
|
+
/** @private Avoids browser-only width tracking during SSR. */
|
|
132
|
+
_isBrowser = isPlatformBrowser(inject(PLATFORM_ID));
|
|
133
|
+
/** @private DestroyRef for cleaning up any pending auto-reset timers. */
|
|
134
|
+
_destroyRef = inject(DestroyRef);
|
|
135
|
+
/** @private CDK Clipboard service — SSR-safe, no insecure-context branch. */
|
|
136
|
+
_clipboard = inject(Clipboard);
|
|
137
|
+
/**
|
|
138
|
+
* @private Handle for the auto-reset `setTimeout`. Stored so rapid repeated
|
|
139
|
+
* copies can reset the timer cleanly.
|
|
140
|
+
*/
|
|
141
|
+
_revertTimer = null;
|
|
142
|
+
constructor() {
|
|
143
|
+
this.isCopied = this._isCopied.asReadonly();
|
|
144
|
+
if (this._isBrowser) {
|
|
145
|
+
afterNextRender(() => this._trackMaskWidth());
|
|
146
|
+
}
|
|
147
|
+
this._destroyRef.onDestroy(() => {
|
|
148
|
+
if (this._revertTimer !== null) {
|
|
149
|
+
clearTimeout(this._revertTimer);
|
|
150
|
+
this._revertTimer = null;
|
|
151
|
+
}
|
|
152
|
+
});
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* Writes the resolved text to the system clipboard. Triggered on click,
|
|
156
|
+
* Enter, or Space via the host bindings. Activates the copied state and
|
|
157
|
+
* schedules its reset. Rejects silently on clipboard write failure — the
|
|
158
|
+
* `copied` output only fires on a successful write.
|
|
159
|
+
*/
|
|
160
|
+
copy() {
|
|
161
|
+
if (this.disabled()) {
|
|
162
|
+
return;
|
|
163
|
+
}
|
|
164
|
+
const text = this._resolveValue();
|
|
165
|
+
if (!text) {
|
|
166
|
+
return;
|
|
167
|
+
}
|
|
168
|
+
if (this._clipboard.copy(text)) {
|
|
169
|
+
this._activateCopiedState(text);
|
|
170
|
+
}
|
|
171
|
+
// Clipboard.copy() returns false on failure (e.g. SSR). Leave idle state
|
|
172
|
+
// unchanged — the `copied` output only fires on a successful write.
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* @private Resolves the text to copy. Prefers the explicit `value` input;
|
|
176
|
+
* falls back to the trimmed `textContent` of the host element.
|
|
177
|
+
*/
|
|
178
|
+
_resolveValue() {
|
|
179
|
+
const explicit = this.value();
|
|
180
|
+
if (explicit !== undefined && explicit !== null) {
|
|
181
|
+
return explicit;
|
|
182
|
+
}
|
|
183
|
+
const host = this._elementRef.nativeElement;
|
|
184
|
+
return host.textContent?.trim() ?? '';
|
|
185
|
+
}
|
|
186
|
+
/**
|
|
187
|
+
* @private Activates the copied state, emits the `copied` output, and
|
|
188
|
+
* schedules the reset timer. Clears any pending reset before scheduling a
|
|
189
|
+
* new one so rapid repeated copies restart the window cleanly.
|
|
190
|
+
*/
|
|
191
|
+
_activateCopiedState(text) {
|
|
192
|
+
if (this._revertTimer !== null) {
|
|
193
|
+
clearTimeout(this._revertTimer);
|
|
194
|
+
}
|
|
195
|
+
this._isCopied.set(true);
|
|
196
|
+
this.copied.emit(text);
|
|
197
|
+
this._revertTimer = setTimeout(() => {
|
|
198
|
+
this._isCopied.set(false);
|
|
199
|
+
this._revertTimer = null;
|
|
200
|
+
}, this.copiedDuration());
|
|
201
|
+
}
|
|
202
|
+
/** @private Observes the rendered host so CSS masks retain their exact width. */
|
|
203
|
+
_trackMaskWidth() {
|
|
204
|
+
const host = this._elementRef.nativeElement;
|
|
205
|
+
this._setMaskWidths(host.getBoundingClientRect().width);
|
|
206
|
+
this._ngZone.runOutsideAngular(() => {
|
|
207
|
+
this._resizeObserver
|
|
208
|
+
.observe(host)
|
|
209
|
+
.pipe(takeUntilDestroyed(this._destroyRef))
|
|
210
|
+
.subscribe((entries) => {
|
|
211
|
+
this._setMaskWidths(entries[0]?.contentRect.width ?? host.getBoundingClientRect().width);
|
|
212
|
+
});
|
|
213
|
+
});
|
|
214
|
+
}
|
|
215
|
+
/** @private Updates the two horizontal mask sizes only when the width changed. */
|
|
216
|
+
_setMaskWidths(width) {
|
|
217
|
+
const normalizedWidth = Math.max(width, 0);
|
|
218
|
+
const leading = `${normalizedWidth * 0.51}px`;
|
|
219
|
+
const trailing = `${normalizedWidth * 0.5}px`;
|
|
220
|
+
if (leading === this._maskLeadingWidth() &&
|
|
221
|
+
trailing === this._maskTrailingWidth()) {
|
|
222
|
+
return;
|
|
223
|
+
}
|
|
224
|
+
this._ngZone.run(() => {
|
|
225
|
+
this._maskLeadingWidth.set(leading);
|
|
226
|
+
this._maskTrailingWidth.set(trailing);
|
|
227
|
+
});
|
|
228
|
+
}
|
|
229
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: MlvCopyToClipboard, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
230
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.7", type: MlvCopyToClipboard, isStandalone: true, selector: "mlv-copy-to-clipboard", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, copiedDuration: { classPropertyName: "copiedDuration", publicName: "copiedDuration", isSignal: true, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "ariaLabel", isSignal: true, isRequired: false, transformFunction: null }, copiedAriaLabel: { classPropertyName: "copiedAriaLabel", publicName: "copiedAriaLabel", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { copied: "copied" }, host: { attributes: { "role": "button" }, listeners: { "click": "copy()", "keydown.enter": "copy(); $event.preventDefault()", "keydown.space": "copy(); $event.preventDefault()" }, properties: { "class.mlv-copy-to-clipboard--copied": "isCopied()", "class.mlv-copy-to-clipboard--disabled": "disabled()", "attr.tabindex": "disabled() ? -1 : 0", "attr.aria-label": "_computedAriaLabel()", "attr.aria-disabled": "disabled() || null", "style.--mlv-copy-to-clipboard-mask-leading-width": "_maskLeadingWidth()", "style.--mlv-copy-to-clipboard-mask-trailing-width": "_maskTrailingWidth()" }, classAttribute: "mlv-copy-to-clipboard" }, ngImport: i0, template: "<span class=\"mlv-copy-to-clipboard__content\">\n <ng-content />\n</span>\n<span\n class=\"mlv-copy-to-clipboard__indicator\"\n [mlvTooltip]=\"isCopied() ? 'Copied' : 'Copy'\"\n tooltipPlacement=\"top\"\n aria-hidden=\"true\"\n>\n <span class=\"mlv-copy-to-clipboard__icon mlv-copy-to-clipboard__icon--idle\">\n <svg lucideCopy [size]=\"16\" />\n </span>\n <span\n class=\"mlv-copy-to-clipboard__icon mlv-copy-to-clipboard__icon--success\"\n >\n <svg lucideCheck [size]=\"16\" />\n </span>\n</span>\n<span class=\"mlv-copy-to-clipboard__live\" aria-live=\"polite\">\n @if (isCopied()) { {{ copiedAriaLabel() }} }\n</span>\n", styles: ["@layer mlv.components{.mlv-copy-to-clipboard{box-sizing:border-box;position:relative;display:inline-flex;align-items:baseline;border-radius:var(--mlv-radius-s);background-color:transparent;cursor:pointer;vertical-align:baseline;font:inherit;color:inherit}.mlv-copy-to-clipboard *{box-sizing:border-box}.mlv-copy-to-clipboard__content{display:inline-block;color:var(--mlv-copy-to-clipboard-content-color, inherit);--mlv-fade-size: 1.5em;--mlv-fade-offset: .1875rem;--mlv-copy-to-clipboard-fade-extension: -.5rem;-webkit-mask-image:linear-gradient(to right,transparent var(--mlv-fade-offset),#000 calc(var(--mlv-fade-size) + var(--mlv-fade-offset))),linear-gradient(to left,transparent var(--mlv-fade-offset),#000 calc(var(--mlv-fade-size) + var(--mlv-fade-offset))),linear-gradient(#000,#000);mask-image:linear-gradient(to right,transparent var(--mlv-fade-offset),#000 calc(var(--mlv-fade-size) + var(--mlv-fade-offset))),linear-gradient(to left,transparent var(--mlv-fade-offset),#000 calc(var(--mlv-fade-size) + var(--mlv-fade-offset))),linear-gradient(#000,#000);-webkit-mask-position:calc(-1 * var(--mlv-fade-size) - var(--mlv-fade-offset) + .0625rem) bottom,calc(100% + var(--mlv-fade-size) + var(--mlv-fade-offset) - .0625rem) bottom,top;mask-position:calc(-1 * var(--mlv-fade-size) - var(--mlv-fade-offset) + .0625rem) bottom,calc(100% + var(--mlv-fade-size) + var(--mlv-fade-offset) - .0625rem) bottom,top;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:calc(var(--mlv-copy-to-clipboard-mask-leading-width, 51%) + var(--mlv-fade-size) + var(--mlv-fade-offset)) 100%,calc(var(--mlv-copy-to-clipboard-mask-trailing-width, 50%) + var(--mlv-fade-size) + var(--mlv-fade-offset)) 100%,100% 0;mask-size:calc(var(--mlv-copy-to-clipboard-mask-leading-width, 51%) + var(--mlv-fade-size) + var(--mlv-fade-offset)) 100%,calc(var(--mlv-copy-to-clipboard-mask-trailing-width, 50%) + var(--mlv-fade-size) + var(--mlv-fade-offset)) 100%,100% 0;transition:mask-position var(--mlv-duration-slow) var(--mlv-ease-out),mask-size var(--mlv-duration-slow) var(--mlv-ease-out)}.mlv-copy-to-clipboard__indicator{position:absolute;top:0;bottom:0;inset-inline-end:-.5rem;display:inline-flex;align-items:center;justify-content:flex-end;width:2.25rem;padding-inline-end:.25rem;color:var(--mlv-copy-to-clipboard-indicator-color, var(--mlv-copy-to-clipboard-content-color, inherit));pointer-events:none;opacity:0;border-radius:var(--mlv-radius-s);background:transparent;transition:opacity var(--mlv-duration-normal) var(--mlv-ease-out-strong)}.mlv-copy-to-clipboard__icon{position:absolute;z-index:1;inset-inline-end:.25rem;top:50%;display:inline-flex;align-items:center;justify-content:center;color:inherit;transition:opacity var(--mlv-duration-normal) var(--mlv-ease-out-strong),transform var(--mlv-duration-normal) var(--mlv-ease-out-strong),filter var(--mlv-duration-normal) var(--mlv-ease-out-strong)}.mlv-copy-to-clipboard__icon svg{display:block;transition:transform var(--mlv-duration-fast) var(--mlv-ease-out-strong)}.mlv-copy-to-clipboard__icon--idle{opacity:1;transform:translateY(-50%);filter:none}.mlv-copy-to-clipboard__icon--success{opacity:0;transform:translateY(-90%);filter:blur(3px);color:var(--mlv-text-positive)}.mlv-copy-to-clipboard__live{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;border:0;padding:0;margin:-1px}@media(hover:hover)and (pointer:fine){.mlv-copy-to-clipboard:hover .mlv-copy-to-clipboard__indicator{opacity:1}.mlv-copy-to-clipboard:hover .mlv-copy-to-clipboard__content{-webkit-mask-position:calc(-1 * var(--mlv-fade-size) - var(--mlv-fade-offset) + .0625rem) bottom,calc(100% + var(--mlv-copy-to-clipboard-fade-extension)) bottom,top;mask-position:calc(-1 * var(--mlv-fade-size) - var(--mlv-fade-offset) + .0625rem) bottom,calc(100% + var(--mlv-copy-to-clipboard-fade-extension)) bottom,top}}.mlv-copy-to-clipboard:focus-visible{outline:var(--mlv-stroke-width-medium) solid var(--mlv-border-focus);outline-offset:var(--mlv-focus-ring-offset)}.mlv-copy-to-clipboard:focus-visible .mlv-copy-to-clipboard__indicator{opacity:1}.mlv-copy-to-clipboard:focus-visible .mlv-copy-to-clipboard__content{-webkit-mask-position:calc(-1 * var(--mlv-fade-size) - var(--mlv-fade-offset) + .0625rem) bottom,calc(100% + var(--mlv-copy-to-clipboard-fade-extension)) bottom,top;mask-position:calc(-1 * var(--mlv-fade-size) - var(--mlv-fade-offset) + .0625rem) bottom,calc(100% + var(--mlv-copy-to-clipboard-fade-extension)) bottom,top}.mlv-copy-to-clipboard:active .mlv-copy-to-clipboard__icon--idle svg{transform:scale(.9)}.mlv-copy-to-clipboard--copied .mlv-copy-to-clipboard__indicator{opacity:1}.mlv-copy-to-clipboard--copied .mlv-copy-to-clipboard__content{-webkit-mask-position:calc(-1 * var(--mlv-fade-size) - var(--mlv-fade-offset) + .0625rem) bottom,calc(100% + var(--mlv-copy-to-clipboard-fade-extension)) bottom,top;mask-position:calc(-1 * var(--mlv-fade-size) - var(--mlv-fade-offset) + .0625rem) bottom,calc(100% + var(--mlv-copy-to-clipboard-fade-extension)) bottom,top}.mlv-copy-to-clipboard--copied .mlv-copy-to-clipboard__icon--idle{opacity:0;transform:translateY(-10%);filter:blur(3px)}.mlv-copy-to-clipboard--copied .mlv-copy-to-clipboard__icon--success{opacity:1;transform:translateY(-50%);filter:none}.mlv-copy-to-clipboard--disabled{opacity:var(--mlv-disabled-opacity);cursor:not-allowed;pointer-events:none}@media(prefers-reduced-motion:reduce){.mlv-copy-to-clipboard .mlv-copy-to-clipboard__indicator{transition:opacity var(--mlv-duration-fast) var(--mlv-ease-out-strong)}.mlv-copy-to-clipboard .mlv-copy-to-clipboard__icon{transition:opacity var(--mlv-duration-normal) var(--mlv-ease-out-strong)}.mlv-copy-to-clipboard .mlv-copy-to-clipboard__icon--idle,.mlv-copy-to-clipboard .mlv-copy-to-clipboard__icon--success{transform:translateY(-50%);filter:none}.mlv-copy-to-clipboard .mlv-copy-to-clipboard__icon svg{transition:none}.mlv-copy-to-clipboard:active .mlv-copy-to-clipboard__icon--idle svg{transform:none}.mlv-copy-to-clipboard--copied .mlv-copy-to-clipboard__icon--idle{transform:translateY(-50%);filter:none}}}\n"], dependencies: [{ kind: "component", type: LucideCopy, selector: "svg[lucideCopy]" }, { kind: "component", type: LucideCheck, selector: "svg[lucideCheck]" }, { kind: "directive", type: MlvTooltip, selector: "[mlvTooltip]", inputs: ["mlvTooltip", "tooltipPlacement", "tooltipTone", "tooltipDelay", "tooltipDisabled", "tooltipArrow"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
231
|
+
}
|
|
232
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: MlvCopyToClipboard, decorators: [{
|
|
233
|
+
type: Component,
|
|
234
|
+
args: [{ selector: 'mlv-copy-to-clipboard', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, host: {
|
|
235
|
+
class: 'mlv-copy-to-clipboard',
|
|
236
|
+
'[class.mlv-copy-to-clipboard--copied]': 'isCopied()',
|
|
237
|
+
'[class.mlv-copy-to-clipboard--disabled]': 'disabled()',
|
|
238
|
+
role: 'button',
|
|
239
|
+
'[attr.tabindex]': 'disabled() ? -1 : 0',
|
|
240
|
+
'[attr.aria-label]': '_computedAriaLabel()',
|
|
241
|
+
'[attr.aria-disabled]': 'disabled() || null',
|
|
242
|
+
'[style.--mlv-copy-to-clipboard-mask-leading-width]': '_maskLeadingWidth()',
|
|
243
|
+
'[style.--mlv-copy-to-clipboard-mask-trailing-width]': '_maskTrailingWidth()',
|
|
244
|
+
'(click)': 'copy()',
|
|
245
|
+
'(keydown.enter)': 'copy(); $event.preventDefault()',
|
|
246
|
+
'(keydown.space)': 'copy(); $event.preventDefault()',
|
|
247
|
+
}, imports: [LucideCopy, LucideCheck, MlvTooltip], template: "<span class=\"mlv-copy-to-clipboard__content\">\n <ng-content />\n</span>\n<span\n class=\"mlv-copy-to-clipboard__indicator\"\n [mlvTooltip]=\"isCopied() ? 'Copied' : 'Copy'\"\n tooltipPlacement=\"top\"\n aria-hidden=\"true\"\n>\n <span class=\"mlv-copy-to-clipboard__icon mlv-copy-to-clipboard__icon--idle\">\n <svg lucideCopy [size]=\"16\" />\n </span>\n <span\n class=\"mlv-copy-to-clipboard__icon mlv-copy-to-clipboard__icon--success\"\n >\n <svg lucideCheck [size]=\"16\" />\n </span>\n</span>\n<span class=\"mlv-copy-to-clipboard__live\" aria-live=\"polite\">\n @if (isCopied()) { {{ copiedAriaLabel() }} }\n</span>\n", styles: ["@layer mlv.components{.mlv-copy-to-clipboard{box-sizing:border-box;position:relative;display:inline-flex;align-items:baseline;border-radius:var(--mlv-radius-s);background-color:transparent;cursor:pointer;vertical-align:baseline;font:inherit;color:inherit}.mlv-copy-to-clipboard *{box-sizing:border-box}.mlv-copy-to-clipboard__content{display:inline-block;color:var(--mlv-copy-to-clipboard-content-color, inherit);--mlv-fade-size: 1.5em;--mlv-fade-offset: .1875rem;--mlv-copy-to-clipboard-fade-extension: -.5rem;-webkit-mask-image:linear-gradient(to right,transparent var(--mlv-fade-offset),#000 calc(var(--mlv-fade-size) + var(--mlv-fade-offset))),linear-gradient(to left,transparent var(--mlv-fade-offset),#000 calc(var(--mlv-fade-size) + var(--mlv-fade-offset))),linear-gradient(#000,#000);mask-image:linear-gradient(to right,transparent var(--mlv-fade-offset),#000 calc(var(--mlv-fade-size) + var(--mlv-fade-offset))),linear-gradient(to left,transparent var(--mlv-fade-offset),#000 calc(var(--mlv-fade-size) + var(--mlv-fade-offset))),linear-gradient(#000,#000);-webkit-mask-position:calc(-1 * var(--mlv-fade-size) - var(--mlv-fade-offset) + .0625rem) bottom,calc(100% + var(--mlv-fade-size) + var(--mlv-fade-offset) - .0625rem) bottom,top;mask-position:calc(-1 * var(--mlv-fade-size) - var(--mlv-fade-offset) + .0625rem) bottom,calc(100% + var(--mlv-fade-size) + var(--mlv-fade-offset) - .0625rem) bottom,top;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:calc(var(--mlv-copy-to-clipboard-mask-leading-width, 51%) + var(--mlv-fade-size) + var(--mlv-fade-offset)) 100%,calc(var(--mlv-copy-to-clipboard-mask-trailing-width, 50%) + var(--mlv-fade-size) + var(--mlv-fade-offset)) 100%,100% 0;mask-size:calc(var(--mlv-copy-to-clipboard-mask-leading-width, 51%) + var(--mlv-fade-size) + var(--mlv-fade-offset)) 100%,calc(var(--mlv-copy-to-clipboard-mask-trailing-width, 50%) + var(--mlv-fade-size) + var(--mlv-fade-offset)) 100%,100% 0;transition:mask-position var(--mlv-duration-slow) var(--mlv-ease-out),mask-size var(--mlv-duration-slow) var(--mlv-ease-out)}.mlv-copy-to-clipboard__indicator{position:absolute;top:0;bottom:0;inset-inline-end:-.5rem;display:inline-flex;align-items:center;justify-content:flex-end;width:2.25rem;padding-inline-end:.25rem;color:var(--mlv-copy-to-clipboard-indicator-color, var(--mlv-copy-to-clipboard-content-color, inherit));pointer-events:none;opacity:0;border-radius:var(--mlv-radius-s);background:transparent;transition:opacity var(--mlv-duration-normal) var(--mlv-ease-out-strong)}.mlv-copy-to-clipboard__icon{position:absolute;z-index:1;inset-inline-end:.25rem;top:50%;display:inline-flex;align-items:center;justify-content:center;color:inherit;transition:opacity var(--mlv-duration-normal) var(--mlv-ease-out-strong),transform var(--mlv-duration-normal) var(--mlv-ease-out-strong),filter var(--mlv-duration-normal) var(--mlv-ease-out-strong)}.mlv-copy-to-clipboard__icon svg{display:block;transition:transform var(--mlv-duration-fast) var(--mlv-ease-out-strong)}.mlv-copy-to-clipboard__icon--idle{opacity:1;transform:translateY(-50%);filter:none}.mlv-copy-to-clipboard__icon--success{opacity:0;transform:translateY(-90%);filter:blur(3px);color:var(--mlv-text-positive)}.mlv-copy-to-clipboard__live{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;border:0;padding:0;margin:-1px}@media(hover:hover)and (pointer:fine){.mlv-copy-to-clipboard:hover .mlv-copy-to-clipboard__indicator{opacity:1}.mlv-copy-to-clipboard:hover .mlv-copy-to-clipboard__content{-webkit-mask-position:calc(-1 * var(--mlv-fade-size) - var(--mlv-fade-offset) + .0625rem) bottom,calc(100% + var(--mlv-copy-to-clipboard-fade-extension)) bottom,top;mask-position:calc(-1 * var(--mlv-fade-size) - var(--mlv-fade-offset) + .0625rem) bottom,calc(100% + var(--mlv-copy-to-clipboard-fade-extension)) bottom,top}}.mlv-copy-to-clipboard:focus-visible{outline:var(--mlv-stroke-width-medium) solid var(--mlv-border-focus);outline-offset:var(--mlv-focus-ring-offset)}.mlv-copy-to-clipboard:focus-visible .mlv-copy-to-clipboard__indicator{opacity:1}.mlv-copy-to-clipboard:focus-visible .mlv-copy-to-clipboard__content{-webkit-mask-position:calc(-1 * var(--mlv-fade-size) - var(--mlv-fade-offset) + .0625rem) bottom,calc(100% + var(--mlv-copy-to-clipboard-fade-extension)) bottom,top;mask-position:calc(-1 * var(--mlv-fade-size) - var(--mlv-fade-offset) + .0625rem) bottom,calc(100% + var(--mlv-copy-to-clipboard-fade-extension)) bottom,top}.mlv-copy-to-clipboard:active .mlv-copy-to-clipboard__icon--idle svg{transform:scale(.9)}.mlv-copy-to-clipboard--copied .mlv-copy-to-clipboard__indicator{opacity:1}.mlv-copy-to-clipboard--copied .mlv-copy-to-clipboard__content{-webkit-mask-position:calc(-1 * var(--mlv-fade-size) - var(--mlv-fade-offset) + .0625rem) bottom,calc(100% + var(--mlv-copy-to-clipboard-fade-extension)) bottom,top;mask-position:calc(-1 * var(--mlv-fade-size) - var(--mlv-fade-offset) + .0625rem) bottom,calc(100% + var(--mlv-copy-to-clipboard-fade-extension)) bottom,top}.mlv-copy-to-clipboard--copied .mlv-copy-to-clipboard__icon--idle{opacity:0;transform:translateY(-10%);filter:blur(3px)}.mlv-copy-to-clipboard--copied .mlv-copy-to-clipboard__icon--success{opacity:1;transform:translateY(-50%);filter:none}.mlv-copy-to-clipboard--disabled{opacity:var(--mlv-disabled-opacity);cursor:not-allowed;pointer-events:none}@media(prefers-reduced-motion:reduce){.mlv-copy-to-clipboard .mlv-copy-to-clipboard__indicator{transition:opacity var(--mlv-duration-fast) var(--mlv-ease-out-strong)}.mlv-copy-to-clipboard .mlv-copy-to-clipboard__icon{transition:opacity var(--mlv-duration-normal) var(--mlv-ease-out-strong)}.mlv-copy-to-clipboard .mlv-copy-to-clipboard__icon--idle,.mlv-copy-to-clipboard .mlv-copy-to-clipboard__icon--success{transform:translateY(-50%);filter:none}.mlv-copy-to-clipboard .mlv-copy-to-clipboard__icon svg{transition:none}.mlv-copy-to-clipboard:active .mlv-copy-to-clipboard__icon--idle svg{transform:none}.mlv-copy-to-clipboard--copied .mlv-copy-to-clipboard__icon--idle{transform:translateY(-50%);filter:none}}}\n"] }]
|
|
248
|
+
}], ctorParameters: () => [], propDecorators: { value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }], copiedDuration: [{ type: i0.Input, args: [{ isSignal: true, alias: "copiedDuration", required: false }] }], ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaLabel", required: false }] }], copiedAriaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "copiedAriaLabel", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], copied: [{ type: i0.Output, args: ["copied"] }] } });
|
|
249
|
+
|
|
250
|
+
/**
|
|
251
|
+
* Generated bundle index. Do not edit.
|
|
252
|
+
*/
|
|
253
|
+
|
|
254
|
+
export { MlvCopyToClipboard };
|
|
255
|
+
//# sourceMappingURL=malva-ui-core-copy-to-clipboard.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"malva-ui-core-copy-to-clipboard.mjs","sources":["../../../../libs/core/copy-to-clipboard/src/lib/copy-to-clipboard/copy-to-clipboard.ts","../../../../libs/core/copy-to-clipboard/src/lib/copy-to-clipboard/copy-to-clipboard.html","../../../../libs/core/copy-to-clipboard/src/malva-ui-core-copy-to-clipboard.ts"],"sourcesContent":["import {\n afterNextRender,\n ChangeDetectionStrategy,\n Component,\n computed,\n DestroyRef,\n ElementRef,\n inject,\n input,\n NgZone,\n output,\n PLATFORM_ID,\n signal,\n ViewEncapsulation,\n type Signal,\n} from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\nimport {\n type BooleanInput,\n coerceBooleanProperty,\n} from '@angular/cdk/coercion';\nimport { Clipboard } from '@angular/cdk/clipboard';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { LucideCheck, LucideCopy } from '@lucide/angular';\nimport { MlvResizeObserverService } from '@malva-ui/cdk/utils';\nimport { MlvTooltip } from '@malva-ui/core/tooltip';\nimport { MLV_COPY_TO_CLIPBOARD_I18N } from '@malva-ui/i18n';\n\n/**\n * Inline copy-to-clipboard component.\n *\n * The component wraps arbitrary projected content (typically a short inline\n * string). It reads as regular prose until the user hovers, at which point a\n * subtle background tint appears and a small copy icon fades in at the trailing\n * edge. Activating the element — click, Enter, or Space — writes the value to\n * the clipboard, morphs the icon from Copy to Check via a soft blur crossfade,\n * and emits the `copied` output.\n *\n * The copied text is derived from:\n * 1. An explicit `value` input if provided, otherwise\n * 2. The projected content's `textContent`.\n *\n * @example Basic inline usage\n * ```html\n * <p>\n * Your API key is <mlv-copy-to-clipboard>sk_live_abc123xyz</mlv-copy-to-clipboard>.\n * </p>\n * ```\n *\n * @example Override with [value]\n * ```html\n * Order #<mlv-copy-to-clipboard [value]=\"'ORDER-0042-7F9X2'\">0042</mlv-copy-to-clipboard>\n * ```\n *\n * @example Custom copied duration\n * ```html\n * <mlv-copy-to-clipboard [copiedDuration]=\"4000\">token-value</mlv-copy-to-clipboard>\n * ```\n *\n * @example Toast integration\n * ```html\n * <mlv-copy-to-clipboard (copied)=\"onCopied($event)\">value</mlv-copy-to-clipboard>\n * ```\n */\n@Component({\n selector: 'mlv-copy-to-clipboard',\n templateUrl: './copy-to-clipboard.html',\n styleUrl: './copy-to-clipboard.scss',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'mlv-copy-to-clipboard',\n '[class.mlv-copy-to-clipboard--copied]': 'isCopied()',\n '[class.mlv-copy-to-clipboard--disabled]': 'disabled()',\n role: 'button',\n '[attr.tabindex]': 'disabled() ? -1 : 0',\n '[attr.aria-label]': '_computedAriaLabel()',\n '[attr.aria-disabled]': 'disabled() || null',\n '[style.--mlv-copy-to-clipboard-mask-leading-width]': '_maskLeadingWidth()',\n '[style.--mlv-copy-to-clipboard-mask-trailing-width]':\n '_maskTrailingWidth()',\n '(click)': 'copy()',\n '(keydown.enter)': 'copy(); $event.preventDefault()',\n '(keydown.space)': 'copy(); $event.preventDefault()',\n },\n imports: [LucideCopy, LucideCheck, MlvTooltip],\n})\nexport class MlvCopyToClipboard {\n /**\n * Optional explicit value that will be written to the clipboard when the\n * component is activated. When omitted, the component uses the `textContent`\n * of the projected default slot content.\n */\n readonly value = input<string | undefined>(undefined);\n\n /**\n * Duration in milliseconds for which the \"copied\" success state remains\n * active after a successful clipboard write. After this window elapses, the\n * component reverts to its idle state.\n *\n * @default 2000\n */\n readonly copiedDuration = input<number>(2000);\n\n /**\n * Custom aria-label override. Falls back to the i18n-provided label.\n * When a resolved value is available (either `value()` or projected text\n * content), it is appended to this base for richer screen-reader context.\n */\n readonly ariaLabel = input<string | undefined>(undefined);\n\n /**\n * Text announced via the visually-hidden `aria-live=\"polite\"` region\n * immediately after a successful clipboard write.\n *\n * @default 'Copied to clipboard'\n */\n readonly copiedAriaLabel = input<string>('Copied to clipboard');\n\n /**\n * When true, disables the copy action, removes the host from the tab order,\n * and reflects `aria-disabled=\"true\"`. Accepts attribute-style usage:\n * `<mlv-copy-to-clipboard disabled>`.\n */\n readonly disabled = input<boolean, BooleanInput>(false, {\n transform: coerceBooleanProperty,\n });\n\n /**\n * Emits the exact string that was successfully written to the clipboard.\n * Fires after the `navigator.clipboard.writeText` promise resolves.\n */\n readonly copied = output<string>();\n\n /**\n * Reactive signal exposing whether the component is currently in the copied\n * success state. Useful for template-driven UI that needs to react to the\n * transient state (e.g. conditional labels).\n */\n readonly isCopied: Signal<boolean>;\n\n /** @protected The component's i18n strings signal. */\n protected readonly _i18n = inject(MLV_COPY_TO_CLIPBOARD_I18N);\n\n /**\n * @protected Computed accessible label. Combines the base `ariaLabel` (or\n * i18n fallback) with the current resolved value when one is available, so\n * screen readers get a descriptive name like `\"Copy to clipboard: sk_live_abc123\"`.\n */\n protected readonly _computedAriaLabel = computed<string>(() => {\n const base = this.ariaLabel() ?? this._i18n().copyToClipboard;\n const explicit = this.value();\n if (explicit && explicit.length > 0) {\n return `${base}: ${explicit}`;\n }\n return base;\n });\n\n /** @private Backing signal for `isCopied`. */\n private readonly _isCopied = signal(false);\n\n /** @private Leading mask layer width, synchronized with the copy container. */\n protected readonly _maskLeadingWidth = signal('51%');\n\n /** @private Trailing mask layer width, synchronized with the copy container. */\n protected readonly _maskTrailingWidth = signal('50%');\n\n /**\n * @private Host element reference, used to read `textContent` when no\n * explicit `value` input is provided.\n */\n private readonly _elementRef = inject(ElementRef<HTMLElement>);\n\n /** @private Shared observer used to keep mask dimensions aligned to the host width. */\n private readonly _resizeObserver = inject(MlvResizeObserverService);\n\n /** @private Re-enters Angular only when an observed width changes. */\n private readonly _ngZone = inject(NgZone);\n\n /** @private Avoids browser-only width tracking during SSR. */\n private readonly _isBrowser = isPlatformBrowser(inject(PLATFORM_ID));\n\n /** @private DestroyRef for cleaning up any pending auto-reset timers. */\n private readonly _destroyRef = inject(DestroyRef);\n\n /** @private CDK Clipboard service — SSR-safe, no insecure-context branch. */\n private readonly _clipboard = inject(Clipboard);\n\n /**\n * @private Handle for the auto-reset `setTimeout`. Stored so rapid repeated\n * copies can reset the timer cleanly.\n */\n private _revertTimer: ReturnType<typeof setTimeout> | null = null;\n\n constructor() {\n this.isCopied = this._isCopied.asReadonly();\n\n if (this._isBrowser) {\n afterNextRender(() => this._trackMaskWidth());\n }\n\n this._destroyRef.onDestroy(() => {\n if (this._revertTimer !== null) {\n clearTimeout(this._revertTimer);\n this._revertTimer = null;\n }\n });\n }\n\n /**\n * Writes the resolved text to the system clipboard. Triggered on click,\n * Enter, or Space via the host bindings. Activates the copied state and\n * schedules its reset. Rejects silently on clipboard write failure — the\n * `copied` output only fires on a successful write.\n */\n copy(): void {\n if (this.disabled()) {\n return;\n }\n\n const text = this._resolveValue();\n if (!text) {\n return;\n }\n\n if (this._clipboard.copy(text)) {\n this._activateCopiedState(text);\n }\n // Clipboard.copy() returns false on failure (e.g. SSR). Leave idle state\n // unchanged — the `copied` output only fires on a successful write.\n }\n\n /**\n * @private Resolves the text to copy. Prefers the explicit `value` input;\n * falls back to the trimmed `textContent` of the host element.\n */\n private _resolveValue(): string {\n const explicit = this.value();\n if (explicit !== undefined && explicit !== null) {\n return explicit;\n }\n const host = this._elementRef.nativeElement;\n return host.textContent?.trim() ?? '';\n }\n\n /**\n * @private Activates the copied state, emits the `copied` output, and\n * schedules the reset timer. Clears any pending reset before scheduling a\n * new one so rapid repeated copies restart the window cleanly.\n */\n private _activateCopiedState(text: string): void {\n if (this._revertTimer !== null) {\n clearTimeout(this._revertTimer);\n }\n\n this._isCopied.set(true);\n this.copied.emit(text);\n\n this._revertTimer = setTimeout(() => {\n this._isCopied.set(false);\n this._revertTimer = null;\n }, this.copiedDuration());\n }\n\n /** @private Observes the rendered host so CSS masks retain their exact width. */\n private _trackMaskWidth(): void {\n const host = this._elementRef.nativeElement;\n this._setMaskWidths(host.getBoundingClientRect().width);\n\n this._ngZone.runOutsideAngular(() => {\n this._resizeObserver\n .observe(host)\n .pipe(takeUntilDestroyed(this._destroyRef))\n .subscribe((entries) => {\n this._setMaskWidths(\n entries[0]?.contentRect.width ?? host.getBoundingClientRect().width,\n );\n });\n });\n }\n\n /** @private Updates the two horizontal mask sizes only when the width changed. */\n private _setMaskWidths(width: number): void {\n const normalizedWidth = Math.max(width, 0);\n const leading = `${normalizedWidth * 0.51}px`;\n const trailing = `${normalizedWidth * 0.5}px`;\n\n if (\n leading === this._maskLeadingWidth() &&\n trailing === this._maskTrailingWidth()\n ) {\n return;\n }\n\n this._ngZone.run(() => {\n this._maskLeadingWidth.set(leading);\n this._maskTrailingWidth.set(trailing);\n });\n }\n}\n","<span class=\"mlv-copy-to-clipboard__content\">\n <ng-content />\n</span>\n<span\n class=\"mlv-copy-to-clipboard__indicator\"\n [mlvTooltip]=\"isCopied() ? 'Copied' : 'Copy'\"\n tooltipPlacement=\"top\"\n aria-hidden=\"true\"\n>\n <span class=\"mlv-copy-to-clipboard__icon mlv-copy-to-clipboard__icon--idle\">\n <svg lucideCopy [size]=\"16\" />\n </span>\n <span\n class=\"mlv-copy-to-clipboard__icon mlv-copy-to-clipboard__icon--success\"\n >\n <svg lucideCheck [size]=\"16\" />\n </span>\n</span>\n<span class=\"mlv-copy-to-clipboard__live\" aria-live=\"polite\">\n @if (isCopied()) { {{ copiedAriaLabel() }} }\n</span>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|