@malva-ui/core 0.1.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS.md +92 -0
- package/README.md +61 -0
- package/accordion/index.d.ts +3 -0
- package/accordion/lib/accordion/accordion.d.ts +47 -0
- package/accordion/lib/accordion-item/accordion-header.d.ts +22 -0
- package/accordion/lib/accordion-item/accordion-item.d.ts +49 -0
- package/accordion/malva-ui-core-accordion.d.ts +5 -0
- package/action-bar/index.d.ts +4 -0
- package/action-bar/lib/action-bar/action-bar.d.ts +59 -0
- package/action-bar/lib/action-bar/components/action-bar-actions.d.ts +9 -0
- package/action-bar/lib/action-bar/components/action-bar-logo.d.ts +5 -0
- package/action-bar/lib/action-bar/components/action-bar-spacer.d.ts +5 -0
- package/action-bar/malva-ui-core-action-bar.d.ts +5 -0
- package/alert/index.d.ts +2 -0
- package/alert/lib/alert/alert.d.ts +84 -0
- package/alert/lib/alert/alert.directives.d.ts +44 -0
- package/alert/malva-ui-core-alert.d.ts +5 -0
- package/autocomplete/index.d.ts +1 -0
- package/autocomplete/lib/autocomplete/autocomplete.d.ts +296 -0
- package/autocomplete/malva-ui-core-autocomplete.d.ts +5 -0
- package/avatar/index.d.ts +2 -0
- package/avatar/lib/avatar/avatar.d.ts +125 -0
- package/avatar/lib/color-from-text.pipe.d.ts +21 -0
- package/avatar/malva-ui-core-avatar.d.ts +5 -0
- package/avatar-group/index.d.ts +1 -0
- package/avatar-group/lib/avatar-group/avatar-group.d.ts +115 -0
- package/avatar-group/malva-ui-core-avatar-group.d.ts +5 -0
- package/badge/index.d.ts +2 -0
- package/badge/lib/badge/badge.d.ts +59 -0
- package/badge/lib/badge-icon.d.ts +35 -0
- package/badge/malva-ui-core-badge.d.ts +5 -0
- package/bottom-nav/index.d.ts +1 -0
- package/bottom-nav/lib/bottom-nav/bottom-nav.d.ts +99 -0
- package/bottom-nav/malva-ui-core-bottom-nav.d.ts +5 -0
- package/breadcrumb/index.d.ts +5 -0
- package/breadcrumb/lib/breadcrumb/breadcrumb-item-host.d.ts +32 -0
- package/breadcrumb/lib/breadcrumb/breadcrumb-item.d.ts +41 -0
- package/breadcrumb/lib/breadcrumb/breadcrumb-separator.d.ts +31 -0
- package/breadcrumb/lib/breadcrumb/breadcrumb.d.ts +151 -0
- package/breadcrumb/lib/breadcrumb/breadcrumb.types.d.ts +26 -0
- package/breadcrumb/malva-ui-core-breadcrumb.d.ts +5 -0
- package/button/index.d.ts +7 -0
- package/button/lib/button/button.d.ts +61 -0
- package/button/lib/button-close/button-close.d.ts +24 -0
- package/button/lib/button-group/button-group.d.ts +21 -0
- package/button/lib/button-split/button-split.d.ts +21 -0
- package/button/lib/button-toggle/button-toggle.d.ts +33 -0
- package/button/lib/button-variant.token.d.ts +13 -0
- package/button/lib/button.directives.d.ts +14 -0
- package/button/lib/button.types.d.ts +8 -0
- package/button/malva-ui-core-button.d.ts +5 -0
- package/calendar/index.d.ts +3 -0
- package/calendar/lib/calendar/calendar.d.ts +182 -0
- package/calendar/lib/date-provider/date-adapter.d.ts +92 -0
- package/calendar/lib/date-provider/native-date-adapter.d.ts +60 -0
- package/calendar/malva-ui-core-calendar.d.ts +5 -0
- package/card/index.d.ts +5 -0
- package/card/lib/card/card.d.ts +43 -0
- package/card/lib/card-actions-def.d.ts +10 -0
- package/card/lib/card-footer-def.d.ts +13 -0
- package/card/lib/card-header-def.d.ts +10 -0
- package/card/lib/card-subheader-def.d.ts +16 -0
- package/card/malva-ui-core-card.d.ts +5 -0
- package/chat/index.d.ts +9 -0
- package/chat/lib/chat/chat.d.ts +133 -0
- package/chat/lib/chat-audio/chat-audio.d.ts +51 -0
- package/chat/lib/chat-audio/chat-audio.service.d.ts +21 -0
- package/chat/lib/chat-date/chat-date.d.ts +16 -0
- package/chat/lib/chat-format.d.ts +5 -0
- package/chat/lib/chat-media-grid/chat-media-grid.d.ts +32 -0
- package/chat/lib/chat-message/chat-message.d.ts +45 -0
- package/chat/lib/chat-render-list.d.ts +16 -0
- package/chat/lib/chat-tokens.d.ts +25 -0
- package/chat/lib/chat-typing/chat-typing.d.ts +16 -0
- package/chat/lib/chat.types.d.ts +80 -0
- package/chat/lib/defs/chat-author-def.d.ts +30 -0
- package/chat/lib/defs/chat-date-def.d.ts +22 -0
- package/chat/lib/defs/chat-message-def.d.ts +23 -0
- package/chat/malva-ui-core-chat.d.ts +5 -0
- package/checkbox/index.d.ts +3 -0
- package/checkbox/lib/checkbox/checkbox.d.ts +129 -0
- package/checkbox/lib/checkbox-group/checkbox-group.d.ts +24 -0
- package/checkbox/lib/checkbox-group-token.d.ts +6 -0
- package/checkbox/malva-ui-core-checkbox.d.ts +5 -0
- package/chip/index.d.ts +2 -0
- package/chip/lib/chip/chip.d.ts +107 -0
- package/chip/lib/chip/chip.directives.d.ts +18 -0
- package/chip/malva-ui-core-chip.d.ts +5 -0
- package/color-picker/index.d.ts +3 -0
- package/color-picker/lib/color-picker/color-picker.d.ts +188 -0
- package/color-picker/lib/color-picker-popup/color-picker-popup.d.ts +151 -0
- package/color-picker/lib/color-utils/color-utils.d.ts +102 -0
- package/color-picker/malva-ui-core-color-picker.d.ts +5 -0
- package/combobox/index.d.ts +2 -0
- package/combobox/lib/combobox/combobox.d.ts +400 -0
- package/combobox/lib/combobox-template.directives.d.ts +10 -0
- package/combobox/malva-ui-core-combobox.d.ts +5 -0
- package/copy-to-clipboard/index.d.ts +1 -0
- package/copy-to-clipboard/lib/copy-to-clipboard/copy-to-clipboard.d.ts +130 -0
- package/copy-to-clipboard/malva-ui-core-copy-to-clipboard.d.ts +5 -0
- package/data-table/index.d.ts +8 -0
- package/data-table/lib/data-source.d.ts +5 -0
- package/data-table/lib/data-table/data-table-layout.d.ts +31 -0
- package/data-table/lib/data-table/data-table.d.ts +699 -0
- package/data-table/lib/data-table/services/data-table-column-visibility.service.d.ts +19 -0
- package/data-table/lib/data-table/services/data-table-editing.service.d.ts +37 -0
- package/data-table/lib/data-table/services/data-table-pinning.service.d.ts +37 -0
- package/data-table/lib/data-table-cell.d.ts +44 -0
- package/data-table/lib/data-table-edit-cell.d.ts +44 -0
- package/data-table/lib/data-table-error.d.ts +37 -0
- package/data-table/lib/data-table-footer.d.ts +26 -0
- package/data-table/lib/data-table-no-data.d.ts +19 -0
- package/data-table/lib/filter-dropdown/filter-dropdown.d.ts +54 -0
- package/data-table/lib/types.d.ts +134 -0
- package/data-table/malva-ui-core-data-table.d.ts +5 -0
- package/date-range-picker/index.d.ts +1 -0
- package/date-range-picker/lib/date-range-picker/date-range-picker.d.ts +145 -0
- package/date-range-picker/malva-ui-core-date-range-picker.d.ts +5 -0
- package/day-picker/index.d.ts +1 -0
- package/day-picker/lib/day-picker/day-picker.d.ts +51 -0
- package/day-picker/malva-ui-core-day-picker.d.ts +5 -0
- package/dialog/index.d.ts +11 -0
- package/dialog/lib/confirm-dialog-options.d.ts +41 -0
- package/dialog/lib/confirm-dialog.d.ts +52 -0
- package/dialog/lib/dialog/dialog.d.ts +22 -0
- package/dialog/lib/dialog-body.d.ts +9 -0
- package/dialog/lib/dialog-close.d.ts +27 -0
- package/dialog/lib/dialog-config.d.ts +112 -0
- package/dialog/lib/dialog-container.d.ts +40 -0
- package/dialog/lib/dialog-footer.d.ts +13 -0
- package/dialog/lib/dialog-header.d.ts +74 -0
- package/dialog/lib/dialog-ref.d.ts +95 -0
- package/dialog/lib/dialog-template.d.ts +65 -0
- package/dialog/lib/dialog-text-content.d.ts +24 -0
- package/dialog/lib/dialog.service.d.ts +63 -0
- package/dialog/lib/generate-routable-dialog-route.d.ts +49 -0
- package/dialog/lib/inject-dialog-ref.d.ts +8 -0
- package/dialog/lib/routable-dialog.d.ts +30 -0
- package/dialog/malva-ui-core-dialog.d.ts +5 -0
- package/divider/index.d.ts +1 -0
- package/divider/lib/divider/divider.d.ts +64 -0
- package/divider/malva-ui-core-divider.d.ts +5 -0
- package/docs/ai/accordion.md +102 -0
- package/docs/ai/action-bar.md +198 -0
- package/docs/ai/alert.md +190 -0
- package/docs/ai/autocomplete.md +111 -0
- package/docs/ai/avatar-group.md +184 -0
- package/docs/ai/avatar.md +150 -0
- package/docs/ai/badge.md +163 -0
- package/docs/ai/bottom-nav.md +267 -0
- package/docs/ai/breadcrumb.md +174 -0
- package/docs/ai/button.md +306 -0
- package/docs/ai/calendar.md +237 -0
- package/docs/ai/card.md +196 -0
- package/docs/ai/chat.md +145 -0
- package/docs/ai/checkbox.md +193 -0
- package/docs/ai/chip.md +139 -0
- package/docs/ai/color-picker.md +270 -0
- package/docs/ai/combobox.md +325 -0
- package/docs/ai/copy-to-clipboard.md +159 -0
- package/docs/ai/core.md +216 -0
- package/docs/ai/data-table.md +917 -0
- package/docs/ai/date-range-picker.md +101 -0
- package/docs/ai/day-picker.md +135 -0
- package/docs/ai/dialog.md +852 -0
- package/docs/ai/divider.md +159 -0
- package/docs/ai/drawer.md +607 -0
- package/docs/ai/dropdown.md +343 -0
- package/docs/ai/empty-state.md +167 -0
- package/docs/ai/expand.md +234 -0
- package/docs/ai/file-upload.md +402 -0
- package/docs/ai/filter.md +43 -0
- package/docs/ai/form-utils.md +319 -0
- package/docs/ai/form.md +129 -0
- package/docs/ai/input.md +175 -0
- package/docs/ai/kbd.md +70 -0
- package/docs/ai/layout.md +192 -0
- package/docs/ai/link.md +179 -0
- package/docs/ai/list.md +249 -0
- package/docs/ai/loader.md +122 -0
- package/docs/ai/menu.md +335 -0
- package/docs/ai/notification.md +281 -0
- package/docs/ai/number-input.md +123 -0
- package/docs/ai/page.md +422 -0
- package/docs/ai/pagination.md +237 -0
- package/docs/ai/pin-input.md +173 -0
- package/docs/ai/popup.md +347 -0
- package/docs/ai/progress.md +84 -0
- package/docs/ai/radio.md +201 -0
- package/docs/ai/rating.md +76 -0
- package/docs/ai/scrollbar.md +170 -0
- package/docs/ai/search-field.md +85 -0
- package/docs/ai/segmented.md +331 -0
- package/docs/ai/select.md +512 -0
- package/docs/ai/sidebar.md +992 -0
- package/docs/ai/skeleton.md +187 -0
- package/docs/ai/slider.md +180 -0
- package/docs/ai/split-pane.md +235 -0
- package/docs/ai/status-indicator.md +95 -0
- package/docs/ai/stepper.md +385 -0
- package/docs/ai/switch.md +216 -0
- package/docs/ai/tabs.md +564 -0
- package/docs/ai/textarea.md +249 -0
- package/docs/ai/tile.md +150 -0
- package/docs/ai/time-picker.md +214 -0
- package/docs/ai/timeline.md +320 -0
- package/docs/ai/title.md +105 -0
- package/docs/ai/toast.md +484 -0
- package/docs/ai/tokenizer.md +236 -0
- package/docs/ai/toolbar.md +155 -0
- package/docs/ai/tooltip.md +154 -0
- package/docs/ai/tree.md +177 -0
- package/drawer/index.d.ts +11 -0
- package/drawer/lib/drawer/drawer.d.ts +106 -0
- package/drawer/lib/drawer-body.d.ts +8 -0
- package/drawer/lib/drawer-content.d.ts +6 -0
- package/drawer/lib/drawer-footer.d.ts +5 -0
- package/drawer/lib/drawer-header.d.ts +5 -0
- package/drawer/lib/drawer-ref.d.ts +29 -0
- package/drawer/lib/drawer-resize.d.ts +65 -0
- package/drawer/lib/drawer-section/drawer-section.d.ts +15 -0
- package/drawer/lib/drawer-sections/drawer-sections.d.ts +22 -0
- package/drawer/lib/drawer-sections.service.d.ts +42 -0
- package/drawer/lib/drawer.service.d.ts +66 -0
- package/drawer/lib/generate-routable-drawer-route.d.ts +42 -0
- package/drawer/lib/routable-drawer.d.ts +30 -0
- package/drawer/malva-ui-core-drawer.d.ts +5 -0
- package/dropdown/index.d.ts +9 -0
- package/dropdown/lib/active-descendant.d.ts +64 -0
- package/dropdown/lib/dropdown-panel/dropdown-panel.d.ts +178 -0
- package/dropdown/lib/highlight-match.pipe.d.ts +27 -0
- package/dropdown/lib/option-matcher.d.ts +87 -0
- package/dropdown/lib/options-adapter.d.ts +142 -0
- package/dropdown/lib/options-result.d.ts +6 -0
- package/dropdown/lib/reconciliation.d.ts +19 -0
- package/dropdown/lib/select-data-source.d.ts +18 -0
- package/dropdown/lib/select-option.d.ts +37 -0
- package/dropdown/malva-ui-core-dropdown.d.ts +5 -0
- package/empty-state/index.d.ts +1 -0
- package/empty-state/lib/empty-state/empty-state.d.ts +34 -0
- package/empty-state/malva-ui-core-empty-state.d.ts +5 -0
- package/esm2022/accordion/index.js +4 -0
- package/esm2022/accordion/index.js.map +1 -0
- package/esm2022/accordion/lib/accordion/accordion.js +65 -0
- package/esm2022/accordion/lib/accordion/accordion.js.map +1 -0
- package/esm2022/accordion/lib/accordion-item/accordion-header.js +30 -0
- package/esm2022/accordion/lib/accordion-item/accordion-header.js.map +1 -0
- package/esm2022/accordion/lib/accordion-item/accordion-item.js +70 -0
- package/esm2022/accordion/lib/accordion-item/accordion-item.js.map +1 -0
- package/esm2022/accordion/malva-ui-core-accordion.js +5 -0
- package/esm2022/accordion/malva-ui-core-accordion.js.map +1 -0
- package/esm2022/action-bar/index.js +5 -0
- package/esm2022/action-bar/index.js.map +1 -0
- package/esm2022/action-bar/lib/action-bar/action-bar.js +64 -0
- package/esm2022/action-bar/lib/action-bar/action-bar.js.map +1 -0
- package/esm2022/action-bar/lib/action-bar/components/action-bar-actions.js +20 -0
- package/esm2022/action-bar/lib/action-bar/components/action-bar-actions.js.map +1 -0
- package/esm2022/action-bar/lib/action-bar/components/action-bar-logo.js +13 -0
- package/esm2022/action-bar/lib/action-bar/components/action-bar-logo.js.map +1 -0
- package/esm2022/action-bar/lib/action-bar/components/action-bar-spacer.js +13 -0
- package/esm2022/action-bar/lib/action-bar/components/action-bar-spacer.js.map +1 -0
- package/esm2022/action-bar/malva-ui-core-action-bar.js +5 -0
- package/esm2022/action-bar/malva-ui-core-action-bar.js.map +1 -0
- package/esm2022/alert/index.js +3 -0
- package/esm2022/alert/index.js.map +1 -0
- package/esm2022/alert/lib/alert/alert.directives.js +53 -0
- package/esm2022/alert/lib/alert/alert.directives.js.map +1 -0
- package/esm2022/alert/lib/alert/alert.js +118 -0
- package/esm2022/alert/lib/alert/alert.js.map +1 -0
- package/esm2022/alert/malva-ui-core-alert.js +5 -0
- package/esm2022/alert/malva-ui-core-alert.js.map +1 -0
- package/esm2022/autocomplete/index.js +2 -0
- package/esm2022/autocomplete/index.js.map +1 -0
- package/esm2022/autocomplete/lib/autocomplete/autocomplete.js +765 -0
- package/esm2022/autocomplete/lib/autocomplete/autocomplete.js.map +1 -0
- package/esm2022/autocomplete/malva-ui-core-autocomplete.js +5 -0
- package/esm2022/autocomplete/malva-ui-core-autocomplete.js.map +1 -0
- package/esm2022/avatar/index.js +3 -0
- package/esm2022/avatar/index.js.map +1 -0
- package/esm2022/avatar/lib/avatar/avatar.js +192 -0
- package/esm2022/avatar/lib/avatar/avatar.js.map +1 -0
- package/esm2022/avatar/lib/color-from-text.pipe.js +39 -0
- package/esm2022/avatar/lib/color-from-text.pipe.js.map +1 -0
- package/esm2022/avatar/malva-ui-core-avatar.js +5 -0
- package/esm2022/avatar/malva-ui-core-avatar.js.map +1 -0
- package/esm2022/avatar-group/index.js +2 -0
- package/esm2022/avatar-group/index.js.map +1 -0
- package/esm2022/avatar-group/lib/avatar-group/avatar-group.js +217 -0
- package/esm2022/avatar-group/lib/avatar-group/avatar-group.js.map +1 -0
- package/esm2022/avatar-group/malva-ui-core-avatar-group.js +5 -0
- package/esm2022/avatar-group/malva-ui-core-avatar-group.js.map +1 -0
- package/esm2022/badge/index.js +3 -0
- package/esm2022/badge/index.js.map +1 -0
- package/esm2022/badge/lib/badge/badge.js +71 -0
- package/esm2022/badge/lib/badge/badge.js.map +1 -0
- package/esm2022/badge/lib/badge-icon.js +47 -0
- package/esm2022/badge/lib/badge-icon.js.map +1 -0
- package/esm2022/badge/malva-ui-core-badge.js +5 -0
- package/esm2022/badge/malva-ui-core-badge.js.map +1 -0
- package/esm2022/bottom-nav/index.js +2 -0
- package/esm2022/bottom-nav/index.js.map +1 -0
- package/esm2022/bottom-nav/lib/bottom-nav/bottom-nav.js +155 -0
- package/esm2022/bottom-nav/lib/bottom-nav/bottom-nav.js.map +1 -0
- package/esm2022/bottom-nav/malva-ui-core-bottom-nav.js +5 -0
- package/esm2022/bottom-nav/malva-ui-core-bottom-nav.js.map +1 -0
- package/esm2022/breadcrumb/index.js +6 -0
- package/esm2022/breadcrumb/index.js.map +1 -0
- package/esm2022/breadcrumb/lib/breadcrumb/breadcrumb-item-host.js +43 -0
- package/esm2022/breadcrumb/lib/breadcrumb/breadcrumb-item-host.js.map +1 -0
- package/esm2022/breadcrumb/lib/breadcrumb/breadcrumb-item.js +110 -0
- package/esm2022/breadcrumb/lib/breadcrumb/breadcrumb-item.js.map +1 -0
- package/esm2022/breadcrumb/lib/breadcrumb/breadcrumb-separator.js +38 -0
- package/esm2022/breadcrumb/lib/breadcrumb/breadcrumb-separator.js.map +1 -0
- package/esm2022/breadcrumb/lib/breadcrumb/breadcrumb.js +284 -0
- package/esm2022/breadcrumb/lib/breadcrumb/breadcrumb.js.map +1 -0
- package/esm2022/breadcrumb/lib/breadcrumb/breadcrumb.types.js +1 -0
- package/esm2022/breadcrumb/lib/breadcrumb/breadcrumb.types.js.map +1 -0
- package/esm2022/breadcrumb/malva-ui-core-breadcrumb.js +5 -0
- package/esm2022/breadcrumb/malva-ui-core-breadcrumb.js.map +1 -0
- package/esm2022/button/index.js +8 -0
- package/esm2022/button/index.js.map +1 -0
- package/esm2022/button/lib/button/button.js +137 -0
- package/esm2022/button/lib/button/button.js.map +1 -0
- package/esm2022/button/lib/button-close/button-close.js +52 -0
- package/esm2022/button/lib/button-close/button-close.js.map +1 -0
- package/esm2022/button/lib/button-group/button-group.js +44 -0
- package/esm2022/button/lib/button-group/button-group.js.map +1 -0
- package/esm2022/button/lib/button-split/button-split.js +44 -0
- package/esm2022/button/lib/button-split/button-split.js.map +1 -0
- package/esm2022/button/lib/button-toggle/button-toggle.js +94 -0
- package/esm2022/button/lib/button-toggle/button-toggle.js.map +1 -0
- package/esm2022/button/lib/button-variant.token.js +4 -0
- package/esm2022/button/lib/button-variant.token.js.map +1 -0
- package/esm2022/button/lib/button.directives.js +37 -0
- package/esm2022/button/lib/button.directives.js.map +1 -0
- package/esm2022/button/lib/button.types.js +1 -0
- package/esm2022/button/lib/button.types.js.map +1 -0
- package/esm2022/button/malva-ui-core-button.js +5 -0
- package/esm2022/button/malva-ui-core-button.js.map +1 -0
- package/esm2022/calendar/index.js +4 -0
- package/esm2022/calendar/index.js.map +1 -0
- package/esm2022/calendar/lib/calendar/calendar.js +672 -0
- package/esm2022/calendar/lib/calendar/calendar.js.map +1 -0
- package/esm2022/calendar/lib/date-provider/date-adapter.js +111 -0
- package/esm2022/calendar/lib/date-provider/date-adapter.js.map +1 -0
- package/esm2022/calendar/lib/date-provider/native-date-adapter.js +151 -0
- package/esm2022/calendar/lib/date-provider/native-date-adapter.js.map +1 -0
- package/esm2022/calendar/malva-ui-core-calendar.js +5 -0
- package/esm2022/calendar/malva-ui-core-calendar.js.map +1 -0
- package/esm2022/card/index.js +6 -0
- package/esm2022/card/index.js.map +1 -0
- package/esm2022/card/lib/card/card.js +54 -0
- package/esm2022/card/lib/card/card.js.map +1 -0
- package/esm2022/card/lib/card-actions-def.js +27 -0
- package/esm2022/card/lib/card-actions-def.js.map +1 -0
- package/esm2022/card/lib/card-footer-def.js +32 -0
- package/esm2022/card/lib/card-footer-def.js.map +1 -0
- package/esm2022/card/lib/card-header-def.js +27 -0
- package/esm2022/card/lib/card-header-def.js.map +1 -0
- package/esm2022/card/lib/card-subheader-def.js +33 -0
- package/esm2022/card/lib/card-subheader-def.js.map +1 -0
- package/esm2022/card/malva-ui-core-card.js +5 -0
- package/esm2022/card/malva-ui-core-card.js.map +1 -0
- package/esm2022/chat/index.js +10 -0
- package/esm2022/chat/index.js.map +1 -0
- package/esm2022/chat/lib/chat/chat.js +326 -0
- package/esm2022/chat/lib/chat/chat.js.map +1 -0
- package/esm2022/chat/lib/chat-audio/chat-audio.js +110 -0
- package/esm2022/chat/lib/chat-audio/chat-audio.js.map +1 -0
- package/esm2022/chat/lib/chat-audio/chat-audio.service.js +28 -0
- package/esm2022/chat/lib/chat-audio/chat-audio.service.js.map +1 -0
- package/esm2022/chat/lib/chat-date/chat-date.js +46 -0
- package/esm2022/chat/lib/chat-date/chat-date.js.map +1 -0
- package/esm2022/chat/lib/chat-format.js +11 -0
- package/esm2022/chat/lib/chat-format.js.map +1 -0
- package/esm2022/chat/lib/chat-media-grid/chat-media-grid.js +53 -0
- package/esm2022/chat/lib/chat-media-grid/chat-media-grid.js.map +1 -0
- package/esm2022/chat/lib/chat-message/chat-message.js +86 -0
- package/esm2022/chat/lib/chat-message/chat-message.js.map +1 -0
- package/esm2022/chat/lib/chat-render-list.js +55 -0
- package/esm2022/chat/lib/chat-render-list.js.map +1 -0
- package/esm2022/chat/lib/chat-tokens.js +9 -0
- package/esm2022/chat/lib/chat-tokens.js.map +1 -0
- package/esm2022/chat/lib/chat-typing/chat-typing.js +50 -0
- package/esm2022/chat/lib/chat-typing/chat-typing.js.map +1 -0
- package/esm2022/chat/lib/chat.types.js +1 -0
- package/esm2022/chat/lib/chat.types.js.map +1 -0
- package/esm2022/chat/lib/defs/chat-author-def.js +27 -0
- package/esm2022/chat/lib/defs/chat-author-def.js.map +1 -0
- package/esm2022/chat/lib/defs/chat-date-def.js +24 -0
- package/esm2022/chat/lib/defs/chat-date-def.js.map +1 -0
- package/esm2022/chat/lib/defs/chat-message-def.js +30 -0
- package/esm2022/chat/lib/defs/chat-message-def.js.map +1 -0
- package/esm2022/chat/malva-ui-core-chat.js +5 -0
- package/esm2022/chat/malva-ui-core-chat.js.map +1 -0
- package/esm2022/checkbox/index.js +4 -0
- package/esm2022/checkbox/index.js.map +1 -0
- package/esm2022/checkbox/lib/checkbox/checkbox.js +201 -0
- package/esm2022/checkbox/lib/checkbox/checkbox.js.map +1 -0
- package/esm2022/checkbox/lib/checkbox-group/checkbox-group.js +68 -0
- package/esm2022/checkbox/lib/checkbox-group/checkbox-group.js.map +1 -0
- package/esm2022/checkbox/lib/checkbox-group-token.js +3 -0
- package/esm2022/checkbox/lib/checkbox-group-token.js.map +1 -0
- package/esm2022/checkbox/malva-ui-core-checkbox.js +5 -0
- package/esm2022/checkbox/malva-ui-core-checkbox.js.map +1 -0
- package/esm2022/chip/index.js +3 -0
- package/esm2022/chip/index.js.map +1 -0
- package/esm2022/chip/lib/chip/chip.directives.js +32 -0
- package/esm2022/chip/lib/chip/chip.directives.js.map +1 -0
- package/esm2022/chip/lib/chip/chip.js +140 -0
- package/esm2022/chip/lib/chip/chip.js.map +1 -0
- package/esm2022/chip/malva-ui-core-chip.js +5 -0
- package/esm2022/chip/malva-ui-core-chip.js.map +1 -0
- package/esm2022/color-picker/index.js +4 -0
- package/esm2022/color-picker/index.js.map +1 -0
- package/esm2022/color-picker/lib/color-picker/color-picker.js +530 -0
- package/esm2022/color-picker/lib/color-picker/color-picker.js.map +1 -0
- package/esm2022/color-picker/lib/color-picker-popup/color-picker-popup.js +419 -0
- package/esm2022/color-picker/lib/color-picker-popup/color-picker-popup.js.map +1 -0
- package/esm2022/color-picker/lib/color-utils/color-utils.js +256 -0
- package/esm2022/color-picker/lib/color-utils/color-utils.js.map +1 -0
- package/esm2022/color-picker/malva-ui-core-color-picker.js +5 -0
- package/esm2022/color-picker/malva-ui-core-color-picker.js.map +1 -0
- package/esm2022/combobox/index.js +3 -0
- package/esm2022/combobox/index.js.map +1 -0
- package/esm2022/combobox/lib/combobox/combobox.js +911 -0
- package/esm2022/combobox/lib/combobox/combobox.js.map +1 -0
- package/esm2022/combobox/lib/combobox-template.directives.js +24 -0
- package/esm2022/combobox/lib/combobox-template.directives.js.map +1 -0
- package/esm2022/combobox/malva-ui-core-combobox.js +5 -0
- package/esm2022/combobox/malva-ui-core-combobox.js.map +1 -0
- package/esm2022/copy-to-clipboard/index.js +2 -0
- package/esm2022/copy-to-clipboard/index.js.map +1 -0
- package/esm2022/copy-to-clipboard/lib/copy-to-clipboard/copy-to-clipboard.js +201 -0
- package/esm2022/copy-to-clipboard/lib/copy-to-clipboard/copy-to-clipboard.js.map +1 -0
- package/esm2022/copy-to-clipboard/malva-ui-core-copy-to-clipboard.js +5 -0
- package/esm2022/copy-to-clipboard/malva-ui-core-copy-to-clipboard.js.map +1 -0
- package/esm2022/data-table/index.js +9 -0
- package/esm2022/data-table/index.js.map +1 -0
- package/esm2022/data-table/lib/data-source.js +6 -0
- package/esm2022/data-table/lib/data-source.js.map +1 -0
- package/esm2022/data-table/lib/data-table/data-table-layout.js +84 -0
- package/esm2022/data-table/lib/data-table/data-table-layout.js.map +1 -0
- package/esm2022/data-table/lib/data-table/data-table.js +1846 -0
- package/esm2022/data-table/lib/data-table/data-table.js.map +1 -0
- package/esm2022/data-table/lib/data-table/services/data-table-column-visibility.service.js +37 -0
- package/esm2022/data-table/lib/data-table/services/data-table-column-visibility.service.js.map +1 -0
- package/esm2022/data-table/lib/data-table/services/data-table-editing.service.js +63 -0
- package/esm2022/data-table/lib/data-table/services/data-table-editing.service.js.map +1 -0
- package/esm2022/data-table/lib/data-table/services/data-table-pinning.service.js +68 -0
- package/esm2022/data-table/lib/data-table/services/data-table-pinning.service.js.map +1 -0
- package/esm2022/data-table/lib/data-table-cell.js +46 -0
- package/esm2022/data-table/lib/data-table-cell.js.map +1 -0
- package/esm2022/data-table/lib/data-table-edit-cell.js +46 -0
- package/esm2022/data-table/lib/data-table-edit-cell.js.map +1 -0
- package/esm2022/data-table/lib/data-table-error.js +37 -0
- package/esm2022/data-table/lib/data-table-error.js.map +1 -0
- package/esm2022/data-table/lib/data-table-footer.js +33 -0
- package/esm2022/data-table/lib/data-table-footer.js.map +1 -0
- package/esm2022/data-table/lib/data-table-no-data.js +26 -0
- package/esm2022/data-table/lib/data-table-no-data.js.map +1 -0
- package/esm2022/data-table/lib/filter-dropdown/filter-dropdown.js +224 -0
- package/esm2022/data-table/lib/filter-dropdown/filter-dropdown.js.map +1 -0
- package/esm2022/data-table/lib/types.js +1 -0
- package/esm2022/data-table/lib/types.js.map +1 -0
- package/esm2022/data-table/malva-ui-core-data-table.js +5 -0
- package/esm2022/data-table/malva-ui-core-data-table.js.map +1 -0
- package/esm2022/date-range-picker/index.js +2 -0
- package/esm2022/date-range-picker/index.js.map +1 -0
- package/esm2022/date-range-picker/lib/date-range-picker/date-range-picker.js +269 -0
- package/esm2022/date-range-picker/lib/date-range-picker/date-range-picker.js.map +1 -0
- package/esm2022/date-range-picker/malva-ui-core-date-range-picker.js +5 -0
- package/esm2022/date-range-picker/malva-ui-core-date-range-picker.js.map +1 -0
- package/esm2022/day-picker/index.js +2 -0
- package/esm2022/day-picker/index.js.map +1 -0
- package/esm2022/day-picker/lib/day-picker/day-picker.js +124 -0
- package/esm2022/day-picker/lib/day-picker/day-picker.js.map +1 -0
- package/esm2022/day-picker/malva-ui-core-day-picker.js +5 -0
- package/esm2022/day-picker/malva-ui-core-day-picker.js.map +1 -0
- package/esm2022/dialog/index.js +12 -0
- package/esm2022/dialog/index.js.map +1 -0
- package/esm2022/dialog/lib/confirm-dialog-options.js +1 -0
- package/esm2022/dialog/lib/confirm-dialog-options.js.map +1 -0
- package/esm2022/dialog/lib/confirm-dialog.js +155 -0
- package/esm2022/dialog/lib/confirm-dialog.js.map +1 -0
- package/esm2022/dialog/lib/dialog/dialog.js +40 -0
- package/esm2022/dialog/lib/dialog/dialog.js.map +1 -0
- package/esm2022/dialog/lib/dialog-body.js +33 -0
- package/esm2022/dialog/lib/dialog-body.js.map +1 -0
- package/esm2022/dialog/lib/dialog-close.js +45 -0
- package/esm2022/dialog/lib/dialog-close.js.map +1 -0
- package/esm2022/dialog/lib/dialog-config.js +23 -0
- package/esm2022/dialog/lib/dialog-config.js.map +1 -0
- package/esm2022/dialog/lib/dialog-container.js +69 -0
- package/esm2022/dialog/lib/dialog-container.js.map +1 -0
- package/esm2022/dialog/lib/dialog-footer.js +29 -0
- package/esm2022/dialog/lib/dialog-footer.js.map +1 -0
- package/esm2022/dialog/lib/dialog-header.js +181 -0
- package/esm2022/dialog/lib/dialog-header.js.map +1 -0
- package/esm2022/dialog/lib/dialog-ref.js +167 -0
- package/esm2022/dialog/lib/dialog-ref.js.map +1 -0
- package/esm2022/dialog/lib/dialog-template.js +136 -0
- package/esm2022/dialog/lib/dialog-template.js.map +1 -0
- package/esm2022/dialog/lib/dialog-text-content.js +59 -0
- package/esm2022/dialog/lib/dialog-text-content.js.map +1 -0
- package/esm2022/dialog/lib/dialog.service.js +205 -0
- package/esm2022/dialog/lib/dialog.service.js.map +1 -0
- package/esm2022/dialog/lib/generate-routable-dialog-route.js +59 -0
- package/esm2022/dialog/lib/generate-routable-dialog-route.js.map +1 -0
- package/esm2022/dialog/lib/inject-dialog-ref.js +16 -0
- package/esm2022/dialog/lib/inject-dialog-ref.js.map +1 -0
- package/esm2022/dialog/lib/routable-dialog.js +91 -0
- package/esm2022/dialog/lib/routable-dialog.js.map +1 -0
- package/esm2022/dialog/malva-ui-core-dialog.js +5 -0
- package/esm2022/dialog/malva-ui-core-dialog.js.map +1 -0
- package/esm2022/divider/index.js +2 -0
- package/esm2022/divider/index.js.map +1 -0
- package/esm2022/divider/lib/divider/divider.js +73 -0
- package/esm2022/divider/lib/divider/divider.js.map +1 -0
- package/esm2022/divider/malva-ui-core-divider.js +5 -0
- package/esm2022/divider/malva-ui-core-divider.js.map +1 -0
- package/esm2022/drawer/index.js +12 -0
- package/esm2022/drawer/index.js.map +1 -0
- package/esm2022/drawer/lib/drawer/drawer.js +180 -0
- package/esm2022/drawer/lib/drawer/drawer.js.map +1 -0
- package/esm2022/drawer/lib/drawer-body.js +32 -0
- package/esm2022/drawer/lib/drawer-body.js.map +1 -0
- package/esm2022/drawer/lib/drawer-content.js +14 -0
- package/esm2022/drawer/lib/drawer-content.js.map +1 -0
- package/esm2022/drawer/lib/drawer-footer.js +14 -0
- package/esm2022/drawer/lib/drawer-footer.js.map +1 -0
- package/esm2022/drawer/lib/drawer-header.js +14 -0
- package/esm2022/drawer/lib/drawer-header.js.map +1 -0
- package/esm2022/drawer/lib/drawer-ref.js +31 -0
- package/esm2022/drawer/lib/drawer-ref.js.map +1 -0
- package/esm2022/drawer/lib/drawer-resize.js +243 -0
- package/esm2022/drawer/lib/drawer-resize.js.map +1 -0
- package/esm2022/drawer/lib/drawer-section/drawer-section.js +26 -0
- package/esm2022/drawer/lib/drawer-section/drawer-section.js.map +1 -0
- package/esm2022/drawer/lib/drawer-sections/drawer-sections.js +58 -0
- package/esm2022/drawer/lib/drawer-sections/drawer-sections.js.map +1 -0
- package/esm2022/drawer/lib/drawer-sections.service.js +83 -0
- package/esm2022/drawer/lib/drawer-sections.service.js.map +1 -0
- package/esm2022/drawer/lib/drawer.service.js +86 -0
- package/esm2022/drawer/lib/drawer.service.js.map +1 -0
- package/esm2022/drawer/lib/generate-routable-drawer-route.js +52 -0
- package/esm2022/drawer/lib/generate-routable-drawer-route.js.map +1 -0
- package/esm2022/drawer/lib/routable-drawer.js +91 -0
- package/esm2022/drawer/lib/routable-drawer.js.map +1 -0
- package/esm2022/drawer/malva-ui-core-drawer.js +5 -0
- package/esm2022/drawer/malva-ui-core-drawer.js.map +1 -0
- package/esm2022/dropdown/index.js +10 -0
- package/esm2022/dropdown/index.js.map +1 -0
- package/esm2022/dropdown/lib/active-descendant.js +92 -0
- package/esm2022/dropdown/lib/active-descendant.js.map +1 -0
- package/esm2022/dropdown/lib/dropdown-panel/dropdown-panel.js +295 -0
- package/esm2022/dropdown/lib/dropdown-panel/dropdown-panel.js.map +1 -0
- package/esm2022/dropdown/lib/highlight-match.pipe.js +36 -0
- package/esm2022/dropdown/lib/highlight-match.pipe.js.map +1 -0
- package/esm2022/dropdown/lib/option-matcher.js +124 -0
- package/esm2022/dropdown/lib/option-matcher.js.map +1 -0
- package/esm2022/dropdown/lib/options-adapter.js +356 -0
- package/esm2022/dropdown/lib/options-adapter.js.map +1 -0
- package/esm2022/dropdown/lib/options-result.js +11 -0
- package/esm2022/dropdown/lib/options-result.js.map +1 -0
- package/esm2022/dropdown/lib/reconciliation.js +32 -0
- package/esm2022/dropdown/lib/reconciliation.js.map +1 -0
- package/esm2022/dropdown/lib/select-data-source.js +21 -0
- package/esm2022/dropdown/lib/select-data-source.js.map +1 -0
- package/esm2022/dropdown/lib/select-option.js +25 -0
- package/esm2022/dropdown/lib/select-option.js.map +1 -0
- package/esm2022/dropdown/malva-ui-core-dropdown.js +5 -0
- package/esm2022/dropdown/malva-ui-core-dropdown.js.map +1 -0
- package/esm2022/empty-state/index.js +2 -0
- package/esm2022/empty-state/index.js.map +1 -0
- package/esm2022/empty-state/lib/empty-state/empty-state.js +43 -0
- package/esm2022/empty-state/lib/empty-state/empty-state.js.map +1 -0
- package/esm2022/empty-state/malva-ui-core-empty-state.js +5 -0
- package/esm2022/empty-state/malva-ui-core-empty-state.js.map +1 -0
- package/esm2022/expand/index.js +3 -0
- package/esm2022/expand/index.js.map +1 -0
- package/esm2022/expand/lib/expand/expand-content.js +33 -0
- package/esm2022/expand/lib/expand/expand-content.js.map +1 -0
- package/esm2022/expand/lib/expand/expand.js +93 -0
- package/esm2022/expand/lib/expand/expand.js.map +1 -0
- package/esm2022/expand/malva-ui-core-expand.js +5 -0
- package/esm2022/expand/malva-ui-core-expand.js.map +1 -0
- package/esm2022/file-upload/index.js +5 -0
- package/esm2022/file-upload/index.js.map +1 -0
- package/esm2022/file-upload/lib/file-upload/file-upload.js +324 -0
- package/esm2022/file-upload/lib/file-upload/file-upload.js.map +1 -0
- package/esm2022/file-upload/lib/file-upload/file-upload.types.js +1 -0
- package/esm2022/file-upload/lib/file-upload/file-upload.types.js.map +1 -0
- package/esm2022/file-upload/lib/file-upload-action.js +65 -0
- package/esm2022/file-upload/lib/file-upload-action.js.map +1 -0
- package/esm2022/file-upload/lib/file-upload-item/file-upload-item.js +55 -0
- package/esm2022/file-upload/lib/file-upload-item/file-upload-item.js.map +1 -0
- package/esm2022/file-upload/malva-ui-core-file-upload.js +5 -0
- package/esm2022/file-upload/malva-ui-core-file-upload.js.map +1 -0
- package/esm2022/filter/index.js +4 -0
- package/esm2022/filter/index.js.map +1 -0
- package/esm2022/filter/lib/filter/filter.js +552 -0
- package/esm2022/filter/lib/filter/filter.js.map +1 -0
- package/esm2022/filter/lib/filter.types.js +1 -0
- package/esm2022/filter/lib/filter.types.js.map +1 -0
- package/esm2022/filter/lib/smart-filter-bar/smart-filter-bar.js +518 -0
- package/esm2022/filter/lib/smart-filter-bar/smart-filter-bar.js.map +1 -0
- package/esm2022/filter/malva-ui-core-filter.js +5 -0
- package/esm2022/filter/malva-ui-core-filter.js.map +1 -0
- package/esm2022/form/index.js +7 -0
- package/esm2022/form/index.js.map +1 -0
- package/esm2022/form/lib/fieldset/fieldset.js +101 -0
- package/esm2022/form/lib/fieldset/fieldset.js.map +1 -0
- package/esm2022/form/lib/fieldset-span.js +49 -0
- package/esm2022/form/lib/fieldset-span.js.map +1 -0
- package/esm2022/form/lib/form/form.js +60 -0
- package/esm2022/form/lib/form/form.js.map +1 -0
- package/esm2022/form/lib/form-actions.js +34 -0
- package/esm2022/form/lib/form-actions.js.map +1 -0
- package/esm2022/form/lib/form-gap.js +15 -0
- package/esm2022/form/lib/form-gap.js.map +1 -0
- package/esm2022/form/lib/form-header.js +27 -0
- package/esm2022/form/lib/form-header.js.map +1 -0
- package/esm2022/form/lib/form.types.js +1 -0
- package/esm2022/form/lib/form.types.js.map +1 -0
- package/esm2022/form/malva-ui-core-form.js +5 -0
- package/esm2022/form/malva-ui-core-form.js.map +1 -0
- package/esm2022/form-utils/index.js +16 -0
- package/esm2022/form-utils/index.js.map +1 -0
- package/esm2022/form-utils/lib/aria-value-bridge.js +57 -0
- package/esm2022/form-utils/lib/aria-value-bridge.js.map +1 -0
- package/esm2022/form-utils/lib/description/description.js +24 -0
- package/esm2022/form-utils/lib/description/description.js.map +1 -0
- package/esm2022/form-utils/lib/focusable-group-base.js +87 -0
- package/esm2022/form-utils/lib/focusable-group-base.js.map +1 -0
- package/esm2022/form-utils/lib/form-control-base/signal-form-control-base.js +192 -0
- package/esm2022/form-utils/lib/form-control-base/signal-form-control-base.js.map +1 -0
- package/esm2022/form-utils/lib/form-control-sides.js +34 -0
- package/esm2022/form-utils/lib/form-control-sides.js.map +1 -0
- package/esm2022/form-utils/lib/form-control-wrapper/form-control-wrapper-control.js +14 -0
- package/esm2022/form-utils/lib/form-control-wrapper/form-control-wrapper-control.js.map +1 -0
- package/esm2022/form-utils/lib/form-control-wrapper/form-control-wrapper.js +47 -0
- package/esm2022/form-utils/lib/form-control-wrapper/form-control-wrapper.js.map +1 -0
- package/esm2022/form-utils/lib/form-field/form-field.js +245 -0
- package/esm2022/form-utils/lib/form-field/form-field.js.map +1 -0
- package/esm2022/form-utils/lib/hint/hint.js +11 -0
- package/esm2022/form-utils/lib/hint/hint.js.map +1 -0
- package/esm2022/form-utils/lib/label/label.js +55 -0
- package/esm2022/form-utils/lib/label/label.js.map +1 -0
- package/esm2022/form-utils/lib/message/message.js +20 -0
- package/esm2022/form-utils/lib/message/message.js.map +1 -0
- package/esm2022/form-utils/lib/models/error-display-strategy.js +1 -0
- package/esm2022/form-utils/lib/models/error-display-strategy.js.map +1 -0
- package/esm2022/form-utils/lib/models/form-control-connector.js +3 -0
- package/esm2022/form-utils/lib/models/form-control-connector.js.map +1 -0
- package/esm2022/form-utils/lib/models/form-state.js +1 -0
- package/esm2022/form-utils/lib/models/form-state.js.map +1 -0
- package/esm2022/form-utils/lib/selection.service.js +81 -0
- package/esm2022/form-utils/lib/selection.service.js.map +1 -0
- package/esm2022/form-utils/malva-ui-core-form-utils.js +5 -0
- package/esm2022/form-utils/malva-ui-core-form-utils.js.map +1 -0
- package/esm2022/form-utils/testing/index.js +2 -0
- package/esm2022/form-utils/testing/index.js.map +1 -0
- package/esm2022/form-utils/testing/lib/forms-binding-matrix.js +32 -0
- package/esm2022/form-utils/testing/lib/forms-binding-matrix.js.map +1 -0
- package/esm2022/form-utils/testing/malva-ui-core-form-utils-testing.js +5 -0
- package/esm2022/form-utils/testing/malva-ui-core-form-utils-testing.js.map +1 -0
- package/esm2022/index.js +70 -0
- package/esm2022/index.js.map +1 -0
- package/esm2022/input/index.js +4 -0
- package/esm2022/input/index.js.map +1 -0
- package/esm2022/input/lib/input/input-native.js +49 -0
- package/esm2022/input/lib/input/input-native.js.map +1 -0
- package/esm2022/input/lib/input/input-value-accessor.js +4 -0
- package/esm2022/input/lib/input/input-value-accessor.js.map +1 -0
- package/esm2022/input/lib/input/input.js +277 -0
- package/esm2022/input/lib/input/input.js.map +1 -0
- package/esm2022/input/lib/input/password-strength.js +46 -0
- package/esm2022/input/lib/input/password-strength.js.map +1 -0
- package/esm2022/input/malva-ui-core-input.js +5 -0
- package/esm2022/input/malva-ui-core-input.js.map +1 -0
- package/esm2022/kbd/index.js +2 -0
- package/esm2022/kbd/index.js.map +1 -0
- package/esm2022/kbd/lib/kbd/kbd.js +124 -0
- package/esm2022/kbd/lib/kbd/kbd.js.map +1 -0
- package/esm2022/kbd/malva-ui-core-kbd.js +5 -0
- package/esm2022/kbd/malva-ui-core-kbd.js.map +1 -0
- package/esm2022/layout/index.js +5 -0
- package/esm2022/layout/index.js.map +1 -0
- package/esm2022/layout/lib/layout/directives/MlvLayoutSide.js +14 -0
- package/esm2022/layout/lib/layout/directives/MlvLayoutSide.js.map +1 -0
- package/esm2022/layout/lib/layout/directives/MlvLayoutTop.js +14 -0
- package/esm2022/layout/lib/layout/directives/MlvLayoutTop.js.map +1 -0
- package/esm2022/layout/lib/layout/layout.js +43 -0
- package/esm2022/layout/lib/layout/layout.js.map +1 -0
- package/esm2022/layout/lib/layout/services/theme.service.js +121 -0
- package/esm2022/layout/lib/layout/services/theme.service.js.map +1 -0
- package/esm2022/layout/malva-ui-core-layout.js +5 -0
- package/esm2022/layout/malva-ui-core-layout.js.map +1 -0
- package/esm2022/link/index.js +3 -0
- package/esm2022/link/index.js.map +1 -0
- package/esm2022/link/lib/link/link.directives.js +24 -0
- package/esm2022/link/lib/link/link.directives.js.map +1 -0
- package/esm2022/link/lib/link/link.js +61 -0
- package/esm2022/link/lib/link/link.js.map +1 -0
- package/esm2022/link/malva-ui-core-link.js +5 -0
- package/esm2022/link/malva-ui-core-link.js.map +1 -0
- package/esm2022/list/index.js +14 -0
- package/esm2022/list/index.js.map +1 -0
- package/esm2022/list/lib/list/list.js +28 -0
- package/esm2022/list/lib/list/list.js.map +1 -0
- package/esm2022/list/lib/list-item/list-item.js +125 -0
- package/esm2022/list/lib/list-item/list-item.js.map +1 -0
- package/esm2022/list/lib/list-item-actions.js +23 -0
- package/esm2022/list/lib/list-item-actions.js.map +1 -0
- package/esm2022/list/lib/list-item-byline.js +13 -0
- package/esm2022/list/lib/list-item-byline.js.map +1 -0
- package/esm2022/list/lib/list-item-group/list-item-group.js +25 -0
- package/esm2022/list/lib/list-item-group/list-item-group.js.map +1 -0
- package/esm2022/list/lib/list-item-link/list-item-link.js +20 -0
- package/esm2022/list/lib/list-item-link/list-item-link.js.map +1 -0
- package/esm2022/list/lib/list-item-media.js +13 -0
- package/esm2022/list/lib/list-item-media.js.map +1 -0
- package/esm2022/list/lib/list-item-meta.js +13 -0
- package/esm2022/list/lib/list-item-meta.js.map +1 -0
- package/esm2022/list/lib/list-item-prefix.js +13 -0
- package/esm2022/list/lib/list-item-prefix.js.map +1 -0
- package/esm2022/list/lib/list-item-suffix.js +13 -0
- package/esm2022/list/lib/list-item-suffix.js.map +1 -0
- package/esm2022/list/lib/list-item-template.js +14 -0
- package/esm2022/list/lib/list-item-template.js.map +1 -0
- package/esm2022/list/lib/list-item-title.js +13 -0
- package/esm2022/list/lib/list-item-title.js.map +1 -0
- package/esm2022/list/lib/list-selectable.js +116 -0
- package/esm2022/list/lib/list-selectable.js.map +1 -0
- package/esm2022/list/malva-ui-core-list.js +5 -0
- package/esm2022/list/malva-ui-core-list.js.map +1 -0
- package/esm2022/loader/index.js +2 -0
- package/esm2022/loader/index.js.map +1 -0
- package/esm2022/loader/lib/loader/loader.js +134 -0
- package/esm2022/loader/lib/loader/loader.js.map +1 -0
- package/esm2022/loader/malva-ui-core-loader.js +5 -0
- package/esm2022/loader/malva-ui-core-loader.js.map +1 -0
- package/esm2022/malva-ui-core.js +5 -0
- package/esm2022/malva-ui-core.js.map +1 -0
- package/esm2022/menu/index.js +10 -0
- package/esm2022/menu/index.js.map +1 -0
- package/esm2022/menu/lib/menu/menu-group-label.js +35 -0
- package/esm2022/menu/lib/menu/menu-group-label.js.map +1 -0
- package/esm2022/menu/lib/menu/menu-group.js +44 -0
- package/esm2022/menu/lib/menu/menu-group.js.map +1 -0
- package/esm2022/menu/lib/menu/menu-item.js +117 -0
- package/esm2022/menu/lib/menu/menu-item.js.map +1 -0
- package/esm2022/menu/lib/menu/menu-separator.js +41 -0
- package/esm2022/menu/lib/menu/menu-separator.js.map +1 -0
- package/esm2022/menu/lib/menu/menu-trigger.js +653 -0
- package/esm2022/menu/lib/menu/menu-trigger.js.map +1 -0
- package/esm2022/menu/lib/menu/menu.js +308 -0
- package/esm2022/menu/lib/menu/menu.js.map +1 -0
- package/esm2022/menu/lib/menu/menu.types.js +4 -0
- package/esm2022/menu/lib/menu/menu.types.js.map +1 -0
- package/esm2022/menu/lib/menu/menubar.js +257 -0
- package/esm2022/menu/lib/menu/menubar.js.map +1 -0
- package/esm2022/menu/lib/menu/menubar.types.js +4 -0
- package/esm2022/menu/lib/menu/menubar.types.js.map +1 -0
- package/esm2022/menu/lib/menu/submenu-aim.js +30 -0
- package/esm2022/menu/lib/menu/submenu-aim.js.map +1 -0
- package/esm2022/menu/malva-ui-core-menu.js +5 -0
- package/esm2022/menu/malva-ui-core-menu.js.map +1 -0
- package/esm2022/notification/index.js +5 -0
- package/esm2022/notification/index.js.map +1 -0
- package/esm2022/notification/lib/notification-item/notification-item.js +65 -0
- package/esm2022/notification/lib/notification-item/notification-item.js.map +1 -0
- package/esm2022/notification/lib/notification-ref.js +13 -0
- package/esm2022/notification/lib/notification-ref.js.map +1 -0
- package/esm2022/notification/lib/notification.service.js +118 -0
- package/esm2022/notification/lib/notification.service.js.map +1 -0
- package/esm2022/notification/lib/notification.types.js +6 -0
- package/esm2022/notification/lib/notification.types.js.map +1 -0
- package/esm2022/notification/malva-ui-core-notification.js +5 -0
- package/esm2022/notification/malva-ui-core-notification.js.map +1 -0
- package/esm2022/number-input/index.js +2 -0
- package/esm2022/number-input/index.js.map +1 -0
- package/esm2022/number-input/lib/number-input/number-input.js +395 -0
- package/esm2022/number-input/lib/number-input/number-input.js.map +1 -0
- package/esm2022/number-input/malva-ui-core-number-input.js +5 -0
- package/esm2022/number-input/malva-ui-core-number-input.js.map +1 -0
- package/esm2022/page/index.js +15 -0
- package/esm2022/page/index.js.map +1 -0
- package/esm2022/page/lib/page/page-scroll.token.js +9 -0
- package/esm2022/page/lib/page/page-scroll.token.js.map +1 -0
- package/esm2022/page/lib/page/page-snap-controller.js +170 -0
- package/esm2022/page/lib/page/page-snap-controller.js.map +1 -0
- package/esm2022/page/lib/page/page-snap.directive.js +65 -0
- package/esm2022/page/lib/page/page-snap.directive.js.map +1 -0
- package/esm2022/page/lib/page/page.js +173 -0
- package/esm2022/page/lib/page/page.js.map +1 -0
- package/esm2022/page/lib/page-content/page-aside.js +13 -0
- package/esm2022/page/lib/page-content/page-aside.js.map +1 -0
- package/esm2022/page/lib/page-content/page-content.js +72 -0
- package/esm2022/page/lib/page-content/page-content.js.map +1 -0
- package/esm2022/page/lib/page-dock/page-dock.js +128 -0
- package/esm2022/page/lib/page-dock/page-dock.js.map +1 -0
- package/esm2022/page/lib/page-dock/page-dock.slots.js +39 -0
- package/esm2022/page/lib/page-dock/page-dock.slots.js.map +1 -0
- package/esm2022/page/lib/page-header/page-header.directives.js +88 -0
- package/esm2022/page/lib/page-header/page-header.directives.js.map +1 -0
- package/esm2022/page/lib/page-header/page-header.js +124 -0
- package/esm2022/page/lib/page-header/page-header.js.map +1 -0
- package/esm2022/page/lib/page-shell/page-shell-color.js +193 -0
- package/esm2022/page/lib/page-shell/page-shell-color.js.map +1 -0
- package/esm2022/page/lib/page-shell/page-shell-css-color.js +207 -0
- package/esm2022/page/lib/page-shell/page-shell-css-color.js.map +1 -0
- package/esm2022/page/lib/page-shell/page-shell.js +131 -0
- package/esm2022/page/lib/page-shell/page-shell.js.map +1 -0
- package/esm2022/page/lib/page-shell/page-shell.slots.js +41 -0
- package/esm2022/page/lib/page-shell/page-shell.slots.js.map +1 -0
- package/esm2022/page/lib/page-summary/page-summary-item.js +26 -0
- package/esm2022/page/lib/page-summary/page-summary-item.js.map +1 -0
- package/esm2022/page/lib/page-summary/page-summary.js +87 -0
- package/esm2022/page/lib/page-summary/page-summary.js.map +1 -0
- package/esm2022/page/malva-ui-core-page.js +5 -0
- package/esm2022/page/malva-ui-core-page.js.map +1 -0
- package/esm2022/pagination/index.js +5 -0
- package/esm2022/pagination/index.js.map +1 -0
- package/esm2022/pagination/lib/pagination/pagination.directives.js +58 -0
- package/esm2022/pagination/lib/pagination/pagination.directives.js.map +1 -0
- package/esm2022/pagination/lib/pagination/pagination.js +293 -0
- package/esm2022/pagination/lib/pagination/pagination.js.map +1 -0
- package/esm2022/pagination/lib/pagination/pagination.model.js +1 -0
- package/esm2022/pagination/lib/pagination/pagination.model.js.map +1 -0
- package/esm2022/pagination/lib/pagination/pagination.service.js +108 -0
- package/esm2022/pagination/lib/pagination/pagination.service.js.map +1 -0
- package/esm2022/pagination/malva-ui-core-pagination.js +5 -0
- package/esm2022/pagination/malva-ui-core-pagination.js.map +1 -0
- package/esm2022/pin-input/index.js +3 -0
- package/esm2022/pin-input/index.js.map +1 -0
- package/esm2022/pin-input/lib/pin-input/pin-input-separator.js +31 -0
- package/esm2022/pin-input/lib/pin-input/pin-input-separator.js.map +1 -0
- package/esm2022/pin-input/lib/pin-input/pin-input.js +365 -0
- package/esm2022/pin-input/lib/pin-input/pin-input.js.map +1 -0
- package/esm2022/pin-input/malva-ui-core-pin-input.js +5 -0
- package/esm2022/pin-input/malva-ui-core-pin-input.js.map +1 -0
- package/esm2022/popup/index.js +10 -0
- package/esm2022/popup/index.js.map +1 -0
- package/esm2022/popup/lib/popup/popup.js +500 -0
- package/esm2022/popup/lib/popup/popup.js.map +1 -0
- package/esm2022/popup/lib/popup-container/popup-container.js +169 -0
- package/esm2022/popup/lib/popup-container/popup-container.js.map +1 -0
- package/esm2022/popup/lib/popup-container/popup-container.token.js +9 -0
- package/esm2022/popup/lib/popup-container/popup-container.token.js.map +1 -0
- package/esm2022/popup/lib/popup-content.js +14 -0
- package/esm2022/popup/lib/popup-content.js.map +1 -0
- package/esm2022/popup/lib/popup-header-content.js +26 -0
- package/esm2022/popup/lib/popup-header-content.js.map +1 -0
- package/esm2022/popup/lib/popup-pinned-content.js +25 -0
- package/esm2022/popup/lib/popup-pinned-content.js.map +1 -0
- package/esm2022/popup/lib/popup-positions.js +252 -0
- package/esm2022/popup/lib/popup-positions.js.map +1 -0
- package/esm2022/popup/lib/popup-trigger/popup-trigger.js +308 -0
- package/esm2022/popup/lib/popup-trigger/popup-trigger.js.map +1 -0
- package/esm2022/popup/lib/popup.service.js +188 -0
- package/esm2022/popup/lib/popup.service.js.map +1 -0
- package/esm2022/popup/malva-ui-core-popup.js +5 -0
- package/esm2022/popup/malva-ui-core-popup.js.map +1 -0
- package/esm2022/progress/index.js +2 -0
- package/esm2022/progress/index.js.map +1 -0
- package/esm2022/progress/lib/progress/progress.js +102 -0
- package/esm2022/progress/lib/progress/progress.js.map +1 -0
- package/esm2022/progress/malva-ui-core-progress.js +5 -0
- package/esm2022/progress/malva-ui-core-progress.js.map +1 -0
- package/esm2022/radio/index.js +3 -0
- package/esm2022/radio/index.js.map +1 -0
- package/esm2022/radio/lib/radio/radio.js +134 -0
- package/esm2022/radio/lib/radio/radio.js.map +1 -0
- package/esm2022/radio/lib/radio-group/radio-group.js +176 -0
- package/esm2022/radio/lib/radio-group/radio-group.js.map +1 -0
- package/esm2022/radio/lib/radio-group-token.js +3 -0
- package/esm2022/radio/lib/radio-group-token.js.map +1 -0
- package/esm2022/radio/malva-ui-core-radio.js +5 -0
- package/esm2022/radio/malva-ui-core-radio.js.map +1 -0
- package/esm2022/rating/index.js +2 -0
- package/esm2022/rating/index.js.map +1 -0
- package/esm2022/rating/lib/rating/rating.js +208 -0
- package/esm2022/rating/lib/rating/rating.js.map +1 -0
- package/esm2022/rating/malva-ui-core-rating.js +5 -0
- package/esm2022/rating/malva-ui-core-rating.js.map +1 -0
- package/esm2022/scrollbar/index.js +2 -0
- package/esm2022/scrollbar/index.js.map +1 -0
- package/esm2022/scrollbar/lib/scrollbar/scrollbar.js +388 -0
- package/esm2022/scrollbar/lib/scrollbar/scrollbar.js.map +1 -0
- package/esm2022/scrollbar/malva-ui-core-scrollbar.js +5 -0
- package/esm2022/scrollbar/malva-ui-core-scrollbar.js.map +1 -0
- package/esm2022/search-field/index.js +3 -0
- package/esm2022/search-field/index.js.map +1 -0
- package/esm2022/search-field/lib/search-field/search-field.js +535 -0
- package/esm2022/search-field/lib/search-field/search-field.js.map +1 -0
- package/esm2022/search-field/lib/search-field/search-overlay-content.js +35 -0
- package/esm2022/search-field/lib/search-field/search-overlay-content.js.map +1 -0
- package/esm2022/search-field/malva-ui-core-search-field.js +5 -0
- package/esm2022/search-field/malva-ui-core-search-field.js.map +1 -0
- package/esm2022/segmented/index.js +5 -0
- package/esm2022/segmented/index.js.map +1 -0
- package/esm2022/segmented/lib/segmented/segmented.js +248 -0
- package/esm2022/segmented/lib/segmented/segmented.js.map +1 -0
- package/esm2022/segmented/lib/segmented-item/segmented-item.js +194 -0
- package/esm2022/segmented/lib/segmented-item/segmented-item.js.map +1 -0
- package/esm2022/segmented/lib/segmented-token.js +4 -0
- package/esm2022/segmented/lib/segmented-token.js.map +1 -0
- package/esm2022/segmented/lib/segmented.types.js +1 -0
- package/esm2022/segmented/lib/segmented.types.js.map +1 -0
- package/esm2022/segmented/malva-ui-core-segmented.js +5 -0
- package/esm2022/segmented/malva-ui-core-segmented.js.map +1 -0
- package/esm2022/select/index.js +4 -0
- package/esm2022/select/index.js.map +1 -0
- package/esm2022/select/lib/select/select.js +685 -0
- package/esm2022/select/lib/select/select.js.map +1 -0
- package/esm2022/select/lib/select-option.js +2 -0
- package/esm2022/select/lib/select-option.js.map +1 -0
- package/esm2022/select/lib/select-template.directives.js +34 -0
- package/esm2022/select/lib/select-template.directives.js.map +1 -0
- package/esm2022/select/malva-ui-core-select.js +5 -0
- package/esm2022/select/malva-ui-core-select.js.map +1 -0
- package/esm2022/sidebar/index.js +16 -0
- package/esm2022/sidebar/index.js.map +1 -0
- package/esm2022/sidebar/lib/sidebar/sidebar.js +251 -0
- package/esm2022/sidebar/lib/sidebar/sidebar.js.map +1 -0
- package/esm2022/sidebar/lib/sidebar-content.js +37 -0
- package/esm2022/sidebar/lib/sidebar-content.js.map +1 -0
- package/esm2022/sidebar/lib/sidebar-context.js +3 -0
- package/esm2022/sidebar/lib/sidebar-context.js.map +1 -0
- package/esm2022/sidebar/lib/sidebar-footer.js +20 -0
- package/esm2022/sidebar/lib/sidebar-footer.js.map +1 -0
- package/esm2022/sidebar/lib/sidebar-group/sidebar-group.js +341 -0
- package/esm2022/sidebar/lib/sidebar-group/sidebar-group.js.map +1 -0
- package/esm2022/sidebar/lib/sidebar-header.js +20 -0
- package/esm2022/sidebar/lib/sidebar-header.js.map +1 -0
- package/esm2022/sidebar/lib/sidebar-item/sidebar-item.js +216 -0
- package/esm2022/sidebar/lib/sidebar-item/sidebar-item.js.map +1 -0
- package/esm2022/sidebar/lib/sidebar-item-host.js +39 -0
- package/esm2022/sidebar/lib/sidebar-item-host.js.map +1 -0
- package/esm2022/sidebar/lib/sidebar-item-icon.js +14 -0
- package/esm2022/sidebar/lib/sidebar-item-icon.js.map +1 -0
- package/esm2022/sidebar/lib/sidebar-mode.js +1 -0
- package/esm2022/sidebar/lib/sidebar-mode.js.map +1 -0
- package/esm2022/sidebar/lib/sidebar-rail/sidebar-rail.js +202 -0
- package/esm2022/sidebar/lib/sidebar-rail/sidebar-rail.js.map +1 -0
- package/esm2022/sidebar/lib/sidebar-trigger/sidebar-trigger.js +159 -0
- package/esm2022/sidebar/lib/sidebar-trigger/sidebar-trigger.js.map +1 -0
- package/esm2022/sidebar/lib/sidebar-workspace/sidebar-workspace.directives.js +35 -0
- package/esm2022/sidebar/lib/sidebar-workspace/sidebar-workspace.directives.js.map +1 -0
- package/esm2022/sidebar/lib/sidebar-workspace/sidebar-workspace.js +107 -0
- package/esm2022/sidebar/lib/sidebar-workspace/sidebar-workspace.js.map +1 -0
- package/esm2022/sidebar/lib/sidebar-workspace/sidebar-workspace.types.js +1 -0
- package/esm2022/sidebar/lib/sidebar-workspace/sidebar-workspace.types.js.map +1 -0
- package/esm2022/sidebar/malva-ui-core-sidebar.js +5 -0
- package/esm2022/sidebar/malva-ui-core-sidebar.js.map +1 -0
- package/esm2022/skeleton/index.js +2 -0
- package/esm2022/skeleton/index.js.map +1 -0
- package/esm2022/skeleton/lib/skeleton/skeleton.js +78 -0
- package/esm2022/skeleton/lib/skeleton/skeleton.js.map +1 -0
- package/esm2022/skeleton/malva-ui-core-skeleton.js +5 -0
- package/esm2022/skeleton/malva-ui-core-skeleton.js.map +1 -0
- package/esm2022/slider/index.js +3 -0
- package/esm2022/slider/index.js.map +1 -0
- package/esm2022/slider/lib/slider/slider-tooltip-def.js +31 -0
- package/esm2022/slider/lib/slider/slider-tooltip-def.js.map +1 -0
- package/esm2022/slider/lib/slider/slider.js +468 -0
- package/esm2022/slider/lib/slider/slider.js.map +1 -0
- package/esm2022/slider/malva-ui-core-slider.js +5 -0
- package/esm2022/slider/malva-ui-core-slider.js.map +1 -0
- package/esm2022/split-pane/index.js +4 -0
- package/esm2022/split-pane/index.js.map +1 -0
- package/esm2022/split-pane/lib/split-pane/split-pane-panel.js +49 -0
- package/esm2022/split-pane/lib/split-pane/split-pane-panel.js.map +1 -0
- package/esm2022/split-pane/lib/split-pane/split-pane.js +290 -0
- package/esm2022/split-pane/lib/split-pane/split-pane.js.map +1 -0
- package/esm2022/split-pane/lib/split-pane/split-pane.types.js +1 -0
- package/esm2022/split-pane/lib/split-pane/split-pane.types.js.map +1 -0
- package/esm2022/split-pane/malva-ui-core-split-pane.js +5 -0
- package/esm2022/split-pane/malva-ui-core-split-pane.js.map +1 -0
- package/esm2022/status-indicator/index.js +2 -0
- package/esm2022/status-indicator/index.js.map +1 -0
- package/esm2022/status-indicator/lib/status-indicator/status-indicator.js +71 -0
- package/esm2022/status-indicator/lib/status-indicator/status-indicator.js.map +1 -0
- package/esm2022/status-indicator/malva-ui-core-status-indicator.js +5 -0
- package/esm2022/status-indicator/malva-ui-core-status-indicator.js.map +1 -0
- package/esm2022/stepper/index.js +5 -0
- package/esm2022/stepper/index.js.map +1 -0
- package/esm2022/stepper/lib/stepper/step-header.js +46 -0
- package/esm2022/stepper/lib/stepper/step-header.js.map +1 -0
- package/esm2022/stepper/lib/stepper/step.js +65 -0
- package/esm2022/stepper/lib/stepper/step.js.map +1 -0
- package/esm2022/stepper/lib/stepper/stepper-token.js +4 -0
- package/esm2022/stepper/lib/stepper/stepper-token.js.map +1 -0
- package/esm2022/stepper/lib/stepper/stepper.js +216 -0
- package/esm2022/stepper/lib/stepper/stepper.js.map +1 -0
- package/esm2022/stepper/lib/stepper/stepper.types.js +1 -0
- package/esm2022/stepper/lib/stepper/stepper.types.js.map +1 -0
- package/esm2022/stepper/malva-ui-core-stepper.js +5 -0
- package/esm2022/stepper/malva-ui-core-stepper.js.map +1 -0
- package/esm2022/switch/index.js +3 -0
- package/esm2022/switch/index.js.map +1 -0
- package/esm2022/switch/lib/switch/switch.js +190 -0
- package/esm2022/switch/lib/switch/switch.js.map +1 -0
- package/esm2022/switch/lib/switch-group/switch-group.js +68 -0
- package/esm2022/switch/lib/switch-group/switch-group.js.map +1 -0
- package/esm2022/switch/lib/switch-group-token.js +3 -0
- package/esm2022/switch/lib/switch-group-token.js.map +1 -0
- package/esm2022/switch/malva-ui-core-switch.js +5 -0
- package/esm2022/switch/malva-ui-core-switch.js.map +1 -0
- package/esm2022/tabs/index.js +9 -0
- package/esm2022/tabs/index.js.map +1 -0
- package/esm2022/tabs/lib/tab/tab.js +72 -0
- package/esm2022/tabs/lib/tab/tab.js.map +1 -0
- package/esm2022/tabs/lib/tab-content/tab-content.js +19 -0
- package/esm2022/tabs/lib/tab-content/tab-content.js.map +1 -0
- package/esm2022/tabs/lib/tab-content-def.js +14 -0
- package/esm2022/tabs/lib/tab-content-def.js.map +1 -0
- package/esm2022/tabs/lib/tab-def.js +17 -0
- package/esm2022/tabs/lib/tab-def.js.map +1 -0
- package/esm2022/tabs/lib/tab-group-token.js +3 -0
- package/esm2022/tabs/lib/tab-group-token.js.map +1 -0
- package/esm2022/tabs/lib/tab-item/tab-item.js +44 -0
- package/esm2022/tabs/lib/tab-item/tab-item.js.map +1 -0
- package/esm2022/tabs/lib/tabs/tabs.js +542 -0
- package/esm2022/tabs/lib/tabs/tabs.js.map +1 -0
- package/esm2022/tabs/lib/tabs.service.js +83 -0
- package/esm2022/tabs/lib/tabs.service.js.map +1 -0
- package/esm2022/tabs/malva-ui-core-tabs.js +5 -0
- package/esm2022/tabs/malva-ui-core-tabs.js.map +1 -0
- package/esm2022/textarea/index.js +2 -0
- package/esm2022/textarea/index.js.map +1 -0
- package/esm2022/textarea/lib/textarea/textarea.js +194 -0
- package/esm2022/textarea/lib/textarea/textarea.js.map +1 -0
- package/esm2022/textarea/malva-ui-core-textarea.js +5 -0
- package/esm2022/textarea/malva-ui-core-textarea.js.map +1 -0
- package/esm2022/tile/index.js +3 -0
- package/esm2022/tile/index.js.map +1 -0
- package/esm2022/tile/lib/tile/tile.js +39 -0
- package/esm2022/tile/lib/tile/tile.js.map +1 -0
- package/esm2022/tile/lib/tile-header.js +14 -0
- package/esm2022/tile/lib/tile-header.js.map +1 -0
- package/esm2022/tile/malva-ui-core-tile.js +5 -0
- package/esm2022/tile/malva-ui-core-tile.js.map +1 -0
- package/esm2022/time-picker/index.js +2 -0
- package/esm2022/time-picker/index.js.map +1 -0
- package/esm2022/time-picker/lib/time-picker/time-picker.js +310 -0
- package/esm2022/time-picker/lib/time-picker/time-picker.js.map +1 -0
- package/esm2022/time-picker/lib/time-picker-column/time-picker-column.js +216 -0
- package/esm2022/time-picker/lib/time-picker-column/time-picker-column.js.map +1 -0
- package/esm2022/time-picker/malva-ui-core-time-picker.js +5 -0
- package/esm2022/time-picker/malva-ui-core-time-picker.js.map +1 -0
- package/esm2022/timeline/index.js +6 -0
- package/esm2022/timeline/index.js.map +1 -0
- package/esm2022/timeline/lib/timeline/timeline-item-icon.js +31 -0
- package/esm2022/timeline/lib/timeline/timeline-item-icon.js.map +1 -0
- package/esm2022/timeline/lib/timeline/timeline-item-meta.js +31 -0
- package/esm2022/timeline/lib/timeline/timeline-item-meta.js.map +1 -0
- package/esm2022/timeline/lib/timeline/timeline-item.js +69 -0
- package/esm2022/timeline/lib/timeline/timeline-item.js.map +1 -0
- package/esm2022/timeline/lib/timeline/timeline.js +36 -0
- package/esm2022/timeline/lib/timeline/timeline.js.map +1 -0
- package/esm2022/timeline/lib/timeline/timeline.types.js +1 -0
- package/esm2022/timeline/lib/timeline/timeline.types.js.map +1 -0
- package/esm2022/timeline/malva-ui-core-timeline.js +5 -0
- package/esm2022/timeline/malva-ui-core-timeline.js.map +1 -0
- package/esm2022/title/index.js +2 -0
- package/esm2022/title/index.js.map +1 -0
- package/esm2022/title/lib/title/title.js +171 -0
- package/esm2022/title/lib/title/title.js.map +1 -0
- package/esm2022/title/malva-ui-core-title.js +5 -0
- package/esm2022/title/malva-ui-core-title.js.map +1 -0
- package/esm2022/toast/index.js +13 -0
- package/esm2022/toast/index.js.map +1 -0
- package/esm2022/toast/lib/abstract-toast-container.js +50 -0
- package/esm2022/toast/lib/abstract-toast-container.js.map +1 -0
- package/esm2022/toast/lib/abstract-toast-item.js +75 -0
- package/esm2022/toast/lib/abstract-toast-item.js.map +1 -0
- package/esm2022/toast/lib/abstract-toast.service.js +176 -0
- package/esm2022/toast/lib/abstract-toast.service.js.map +1 -0
- package/esm2022/toast/lib/toast-container/toast-container.js +61 -0
- package/esm2022/toast/lib/toast-container/toast-container.js.map +1 -0
- package/esm2022/toast/lib/toast-item/toast-item.js +62 -0
- package/esm2022/toast/lib/toast-item/toast-item.js.map +1 -0
- package/esm2022/toast/lib/toast-ref.js +54 -0
- package/esm2022/toast/lib/toast-ref.js.map +1 -0
- package/esm2022/toast/lib/toast-timer.js +37 -0
- package/esm2022/toast/lib/toast-timer.js.map +1 -0
- package/esm2022/toast/lib/toast.directives.js +76 -0
- package/esm2022/toast/lib/toast.directives.js.map +1 -0
- package/esm2022/toast/lib/toast.service.js +127 -0
- package/esm2022/toast/lib/toast.service.js.map +1 -0
- package/esm2022/toast/lib/toast.types.js +39 -0
- package/esm2022/toast/lib/toast.types.js.map +1 -0
- package/esm2022/toast/malva-ui-core-toast.js +5 -0
- package/esm2022/toast/malva-ui-core-toast.js.map +1 -0
- package/esm2022/tokenizer/index.js +4 -0
- package/esm2022/tokenizer/index.js.map +1 -0
- package/esm2022/tokenizer/lib/token/token.js +123 -0
- package/esm2022/tokenizer/lib/token/token.js.map +1 -0
- package/esm2022/tokenizer/lib/token-template.js +23 -0
- package/esm2022/tokenizer/lib/token-template.js.map +1 -0
- package/esm2022/tokenizer/lib/tokenizer/tokenizer.js +324 -0
- package/esm2022/tokenizer/lib/tokenizer/tokenizer.js.map +1 -0
- package/esm2022/tokenizer/malva-ui-core-tokenizer.js +5 -0
- package/esm2022/tokenizer/malva-ui-core-tokenizer.js.map +1 -0
- package/esm2022/toolbar/index.js +4 -0
- package/esm2022/toolbar/index.js.map +1 -0
- package/esm2022/toolbar/lib/toolbar/toolbar-spacer.js +13 -0
- package/esm2022/toolbar/lib/toolbar/toolbar-spacer.js.map +1 -0
- package/esm2022/toolbar/lib/toolbar/toolbar-widget.js +106 -0
- package/esm2022/toolbar/lib/toolbar/toolbar-widget.js.map +1 -0
- package/esm2022/toolbar/lib/toolbar/toolbar.js +19 -0
- package/esm2022/toolbar/lib/toolbar/toolbar.js.map +1 -0
- package/esm2022/toolbar/malva-ui-core-toolbar.js +5 -0
- package/esm2022/toolbar/malva-ui-core-toolbar.js.map +1 -0
- package/esm2022/tooltip/index.js +4 -0
- package/esm2022/tooltip/index.js.map +1 -0
- package/esm2022/tooltip/lib/tooltip/tooltip-panel.js +69 -0
- package/esm2022/tooltip/lib/tooltip/tooltip-panel.js.map +1 -0
- package/esm2022/tooltip/lib/tooltip/tooltip.js +352 -0
- package/esm2022/tooltip/lib/tooltip/tooltip.js.map +1 -0
- package/esm2022/tooltip/lib/tooltip/tooltip.types.js +1 -0
- package/esm2022/tooltip/lib/tooltip/tooltip.types.js.map +1 -0
- package/esm2022/tooltip/malva-ui-core-tooltip.js +5 -0
- package/esm2022/tooltip/malva-ui-core-tooltip.js.map +1 -0
- package/esm2022/tree/index.js +5 -0
- package/esm2022/tree/index.js.map +1 -0
- package/esm2022/tree/lib/tree/tree-context.js +7 -0
- package/esm2022/tree/lib/tree/tree-context.js.map +1 -0
- package/esm2022/tree/lib/tree/tree-node-def.js +34 -0
- package/esm2022/tree/lib/tree/tree-node-def.js.map +1 -0
- package/esm2022/tree/lib/tree/tree-node.js +1 -0
- package/esm2022/tree/lib/tree/tree-node.js.map +1 -0
- package/esm2022/tree/lib/tree/tree-subtree.js +107 -0
- package/esm2022/tree/lib/tree/tree-subtree.js.map +1 -0
- package/esm2022/tree/lib/tree/tree.js +362 -0
- package/esm2022/tree/lib/tree/tree.js.map +1 -0
- package/esm2022/tree/malva-ui-core-tree.js +5 -0
- package/esm2022/tree/malva-ui-core-tree.js.map +1 -0
- package/expand/index.d.ts +2 -0
- package/expand/lib/expand/expand-content.d.ts +26 -0
- package/expand/lib/expand/expand.d.ts +74 -0
- package/expand/malva-ui-core-expand.d.ts +5 -0
- package/file-upload/README.md +7 -0
- package/file-upload/index.d.ts +4 -0
- package/file-upload/lib/file-upload/file-upload.d.ts +138 -0
- package/file-upload/lib/file-upload/file-upload.types.d.ts +42 -0
- package/file-upload/lib/file-upload-action.d.ts +53 -0
- package/file-upload/lib/file-upload-item/file-upload-item.d.ts +30 -0
- package/file-upload/malva-ui-core-file-upload.d.ts +5 -0
- package/filter/README.md +22 -0
- package/filter/index.d.ts +3 -0
- package/filter/lib/filter/filter.d.ts +156 -0
- package/filter/lib/filter.types.d.ts +75 -0
- package/filter/lib/smart-filter-bar/smart-filter-bar.d.ts +153 -0
- package/filter/malva-ui-core-filter.d.ts +5 -0
- package/form/index.d.ts +6 -0
- package/form/lib/fieldset/fieldset.d.ts +58 -0
- package/form/lib/fieldset-span.d.ts +28 -0
- package/form/lib/form/form.d.ts +37 -0
- package/form/lib/form-actions.d.ts +20 -0
- package/form/lib/form-gap.d.ts +5 -0
- package/form/lib/form-header.d.ts +18 -0
- package/form/lib/form.types.d.ts +13 -0
- package/form/malva-ui-core-form.d.ts +5 -0
- package/form-utils/index.d.ts +15 -0
- package/form-utils/lib/aria-value-bridge.d.ts +45 -0
- package/form-utils/lib/description/description.d.ts +16 -0
- package/form-utils/lib/focusable-group-base.d.ts +76 -0
- package/form-utils/lib/form-control-base/signal-form-control-base.d.ts +159 -0
- package/form-utils/lib/form-control-sides.d.ts +20 -0
- package/form-utils/lib/form-control-wrapper/form-control-wrapper-control.d.ts +6 -0
- package/form-utils/lib/form-control-wrapper/form-control-wrapper.d.ts +20 -0
- package/form-utils/lib/form-field/form-field.d.ts +68 -0
- package/form-utils/lib/hint/hint.d.ts +5 -0
- package/form-utils/lib/label/label.d.ts +22 -0
- package/form-utils/lib/message/message.d.ts +7 -0
- package/form-utils/lib/models/error-display-strategy.d.ts +1 -0
- package/form-utils/lib/models/form-control-connector.d.ts +41 -0
- package/form-utils/lib/models/form-state.d.ts +1 -0
- package/form-utils/lib/selection.service.d.ts +27 -0
- package/form-utils/malva-ui-core-form-utils.d.ts +5 -0
- package/form-utils/testing/index.d.ts +1 -0
- package/form-utils/testing/lib/forms-binding-matrix.d.ts +47 -0
- package/form-utils/testing/malva-ui-core-form-utils-testing.d.ts +5 -0
- package/index.d.ts +69 -0
- package/input/index.d.ts +3 -0
- package/input/lib/input/input-native.d.ts +36 -0
- package/input/lib/input/input-value-accessor.d.ts +11 -0
- package/input/lib/input/input.d.ts +189 -0
- package/input/lib/input/password-strength.d.ts +34 -0
- package/input/malva-ui-core-input.d.ts +5 -0
- package/kbd/index.d.ts +1 -0
- package/kbd/lib/kbd/kbd.d.ts +52 -0
- package/kbd/malva-ui-core-kbd.d.ts +5 -0
- package/layout/index.d.ts +4 -0
- package/layout/lib/layout/directives/MlvLayoutSide.d.ts +6 -0
- package/layout/lib/layout/directives/MlvLayoutTop.d.ts +6 -0
- package/layout/lib/layout/layout.d.ts +20 -0
- package/layout/lib/layout/services/theme.service.d.ts +33 -0
- package/layout/malva-ui-core-layout.d.ts +5 -0
- package/link/index.d.ts +2 -0
- package/link/lib/link/link.d.ts +15 -0
- package/link/lib/link/link.directives.d.ts +10 -0
- package/link/malva-ui-core-link.d.ts +5 -0
- package/list/index.d.ts +13 -0
- package/list/lib/list/list.d.ts +25 -0
- package/list/lib/list-item/list-item.d.ts +67 -0
- package/list/lib/list-item-actions.d.ts +12 -0
- package/list/lib/list-item-byline.d.ts +5 -0
- package/list/lib/list-item-group/list-item-group.d.ts +11 -0
- package/list/lib/list-item-link/list-item-link.d.ts +8 -0
- package/list/lib/list-item-media.d.ts +5 -0
- package/list/lib/list-item-meta.d.ts +5 -0
- package/list/lib/list-item-prefix.d.ts +5 -0
- package/list/lib/list-item-suffix.d.ts +5 -0
- package/list/lib/list-item-template.d.ts +10 -0
- package/list/lib/list-item-title.d.ts +5 -0
- package/list/lib/list-selectable.d.ts +73 -0
- package/list/malva-ui-core-list.d.ts +5 -0
- package/loader/index.d.ts +1 -0
- package/loader/lib/loader/loader.d.ts +84 -0
- package/loader/malva-ui-core-loader.d.ts +5 -0
- package/malva-ui-core.d.ts +5 -0
- package/menu/index.d.ts +9 -0
- package/menu/lib/menu/menu-group-label.d.ts +22 -0
- package/menu/lib/menu/menu-group.d.ts +27 -0
- package/menu/lib/menu/menu-item.d.ts +76 -0
- package/menu/lib/menu/menu-separator.d.ts +18 -0
- package/menu/lib/menu/menu-trigger.d.ts +255 -0
- package/menu/lib/menu/menu.d.ts +149 -0
- package/menu/lib/menu/menu.types.d.ts +13 -0
- package/menu/lib/menu/menubar.d.ts +131 -0
- package/menu/lib/menu/menubar.types.d.ts +82 -0
- package/menu/lib/menu/submenu-aim.d.ts +10 -0
- package/menu/malva-ui-core-menu.d.ts +5 -0
- package/notification/index.d.ts +4 -0
- package/notification/lib/notification-item/notification-item.d.ts +20 -0
- package/notification/lib/notification-ref.d.ts +12 -0
- package/notification/lib/notification.service.d.ts +43 -0
- package/notification/lib/notification.types.d.ts +52 -0
- package/notification/malva-ui-core-notification.d.ts +5 -0
- package/number-input/index.d.ts +1 -0
- package/number-input/lib/number-input/number-input.d.ts +162 -0
- package/number-input/malva-ui-core-number-input.d.ts +5 -0
- package/package.json +315 -0
- package/page/README.md +8 -0
- package/page/index.d.ts +14 -0
- package/page/lib/page/page-scroll.token.d.ts +19 -0
- package/page/lib/page/page-snap-controller.d.ts +87 -0
- package/page/lib/page/page-snap.directive.d.ts +40 -0
- package/page/lib/page/page.d.ts +74 -0
- package/page/lib/page-content/page-aside.d.ts +7 -0
- package/page/lib/page-content/page-content.d.ts +37 -0
- package/page/lib/page-dock/page-dock.d.ts +50 -0
- package/page/lib/page-dock/page-dock.slots.d.ts +16 -0
- package/page/lib/page-header/page-header.d.ts +77 -0
- package/page/lib/page-header/page-header.directives.d.ts +50 -0
- package/page/lib/page-shell/page-shell-color.d.ts +48 -0
- package/page/lib/page-shell/page-shell-css-color.d.ts +20 -0
- package/page/lib/page-shell/page-shell.d.ts +44 -0
- package/page/lib/page-shell/page-shell.slots.d.ts +16 -0
- package/page/lib/page-summary/page-summary-item.d.ts +11 -0
- package/page/lib/page-summary/page-summary.d.ts +36 -0
- package/page/malva-ui-core-page.d.ts +5 -0
- package/pagination/index.d.ts +4 -0
- package/pagination/lib/pagination/pagination.d.ts +182 -0
- package/pagination/lib/pagination/pagination.directives.d.ts +44 -0
- package/pagination/lib/pagination/pagination.model.d.ts +6 -0
- package/pagination/lib/pagination/pagination.service.d.ts +26 -0
- package/pagination/malva-ui-core-pagination.d.ts +5 -0
- package/pin-input/index.d.ts +2 -0
- package/pin-input/lib/pin-input/pin-input-separator.d.ts +24 -0
- package/pin-input/lib/pin-input/pin-input.d.ts +176 -0
- package/pin-input/malva-ui-core-pin-input.d.ts +5 -0
- package/popup/index.d.ts +9 -0
- package/popup/lib/popup/popup.d.ts +343 -0
- package/popup/lib/popup-container/popup-container.d.ts +61 -0
- package/popup/lib/popup-container/popup-container.token.d.ts +34 -0
- package/popup/lib/popup-content.d.ts +6 -0
- package/popup/lib/popup-header-content.d.ts +18 -0
- package/popup/lib/popup-pinned-content.d.ts +17 -0
- package/popup/lib/popup-positions.d.ts +105 -0
- package/popup/lib/popup-trigger/popup-trigger.d.ts +102 -0
- package/popup/lib/popup.service.d.ts +159 -0
- package/popup/malva-ui-core-popup.d.ts +5 -0
- package/progress/index.d.ts +1 -0
- package/progress/lib/progress/progress.d.ts +69 -0
- package/progress/malva-ui-core-progress.d.ts +5 -0
- package/radio/index.d.ts +2 -0
- package/radio/lib/radio/radio.d.ts +87 -0
- package/radio/lib/radio-group/radio-group.d.ts +35 -0
- package/radio/lib/radio-group-token.d.ts +7 -0
- package/radio/malva-ui-core-radio.d.ts +5 -0
- package/rating/index.d.ts +1 -0
- package/rating/lib/rating/rating.d.ts +100 -0
- package/rating/malva-ui-core-rating.d.ts +5 -0
- package/schematics/collection.json +12 -0
- package/schematics/ng-add/index.cjs +272 -0
- package/schematics/ng-add/schema.json +92 -0
- package/scrollbar/index.d.ts +1 -0
- package/scrollbar/lib/scrollbar/scrollbar.d.ts +166 -0
- package/scrollbar/malva-ui-core-scrollbar.d.ts +5 -0
- package/search-field/README.md +32 -0
- package/search-field/index.d.ts +2 -0
- package/search-field/lib/search-field/search-field.d.ts +347 -0
- package/search-field/lib/search-field/search-overlay-content.d.ts +59 -0
- package/search-field/malva-ui-core-search-field.d.ts +5 -0
- package/segmented/index.d.ts +4 -0
- package/segmented/lib/segmented/segmented.d.ts +80 -0
- package/segmented/lib/segmented-item/segmented-item.d.ts +89 -0
- package/segmented/lib/segmented-token.d.ts +22 -0
- package/segmented/lib/segmented.types.d.ts +9 -0
- package/segmented/malva-ui-core-segmented.d.ts +5 -0
- package/select/index.d.ts +3 -0
- package/select/lib/select/select.d.ts +379 -0
- package/select/lib/select-option.d.ts +1 -0
- package/select/lib/select-template.directives.d.ts +14 -0
- package/select/malva-ui-core-select.d.ts +5 -0
- package/sidebar/index.d.ts +15 -0
- package/sidebar/lib/sidebar/sidebar.d.ts +134 -0
- package/sidebar/lib/sidebar-content.d.ts +11 -0
- package/sidebar/lib/sidebar-context.d.ts +23 -0
- package/sidebar/lib/sidebar-footer.d.ts +9 -0
- package/sidebar/lib/sidebar-group/sidebar-group.d.ts +127 -0
- package/sidebar/lib/sidebar-header.d.ts +9 -0
- package/sidebar/lib/sidebar-item/sidebar-item.d.ts +104 -0
- package/sidebar/lib/sidebar-item-host.d.ts +18 -0
- package/sidebar/lib/sidebar-item-icon.d.ts +6 -0
- package/sidebar/lib/sidebar-mode.d.ts +2 -0
- package/sidebar/lib/sidebar-rail/sidebar-rail.d.ts +54 -0
- package/sidebar/lib/sidebar-trigger/sidebar-trigger.d.ts +67 -0
- package/sidebar/lib/sidebar-workspace/sidebar-workspace.d.ts +54 -0
- package/sidebar/lib/sidebar-workspace/sidebar-workspace.directives.d.ts +19 -0
- package/sidebar/lib/sidebar-workspace/sidebar-workspace.types.d.ts +20 -0
- package/sidebar/malva-ui-core-sidebar.d.ts +5 -0
- package/skeleton/index.d.ts +1 -0
- package/skeleton/lib/skeleton/skeleton.d.ts +60 -0
- package/skeleton/malva-ui-core-skeleton.d.ts +5 -0
- package/slider/index.d.ts +2 -0
- package/slider/lib/slider/slider-tooltip-def.d.ts +39 -0
- package/slider/lib/slider/slider.d.ts +171 -0
- package/slider/malva-ui-core-slider.d.ts +5 -0
- package/split-pane/index.d.ts +3 -0
- package/split-pane/lib/split-pane/split-pane-panel.d.ts +34 -0
- package/split-pane/lib/split-pane/split-pane.d.ts +98 -0
- package/split-pane/lib/split-pane/split-pane.types.d.ts +7 -0
- package/split-pane/malva-ui-core-split-pane.d.ts +5 -0
- package/status-indicator/index.d.ts +1 -0
- package/status-indicator/lib/status-indicator/status-indicator.d.ts +61 -0
- package/status-indicator/malva-ui-core-status-indicator.d.ts +5 -0
- package/stepper/index.d.ts +4 -0
- package/stepper/lib/stepper/step-header.d.ts +34 -0
- package/stepper/lib/stepper/step.d.ts +51 -0
- package/stepper/lib/stepper/stepper-token.d.ts +13 -0
- package/stepper/lib/stepper/stepper.d.ts +98 -0
- package/stepper/lib/stepper/stepper.types.d.ts +4 -0
- package/stepper/malva-ui-core-stepper.d.ts +5 -0
- package/styles/malva-ui.css +1706 -0
- package/styles/tokens.md +698 -0
- package/switch/index.d.ts +2 -0
- package/switch/lib/switch/switch.d.ts +118 -0
- package/switch/lib/switch-group/switch-group.d.ts +24 -0
- package/switch/lib/switch-group-token.d.ts +6 -0
- package/switch/malva-ui-core-switch.d.ts +5 -0
- package/tabs/index.d.ts +8 -0
- package/tabs/lib/tab/tab.d.ts +46 -0
- package/tabs/lib/tab-content/tab-content.d.ts +11 -0
- package/tabs/lib/tab-content-def.d.ts +6 -0
- package/tabs/lib/tab-def.d.ts +11 -0
- package/tabs/lib/tab-group-token.d.ts +10 -0
- package/tabs/lib/tab-item/tab-item.d.ts +28 -0
- package/tabs/lib/tabs/tabs.d.ts +202 -0
- package/tabs/lib/tabs.service.d.ts +24 -0
- package/tabs/malva-ui-core-tabs.d.ts +5 -0
- package/textarea/index.d.ts +1 -0
- package/textarea/lib/textarea/textarea.d.ts +77 -0
- package/textarea/malva-ui-core-textarea.d.ts +5 -0
- package/tile/index.d.ts +2 -0
- package/tile/lib/tile/tile.d.ts +20 -0
- package/tile/lib/tile-header.d.ts +6 -0
- package/tile/malva-ui-core-tile.d.ts +5 -0
- package/time-picker/README.md +7 -0
- package/time-picker/index.d.ts +1 -0
- package/time-picker/lib/time-picker/time-picker.d.ts +135 -0
- package/time-picker/lib/time-picker-column/time-picker-column.d.ts +111 -0
- package/time-picker/malva-ui-core-time-picker.d.ts +5 -0
- package/timeline/index.d.ts +5 -0
- package/timeline/lib/timeline/timeline-item-icon.d.ts +24 -0
- package/timeline/lib/timeline/timeline-item-meta.d.ts +24 -0
- package/timeline/lib/timeline/timeline-item.d.ts +52 -0
- package/timeline/lib/timeline/timeline.d.ts +27 -0
- package/timeline/lib/timeline/timeline.types.d.ts +18 -0
- package/timeline/malva-ui-core-timeline.d.ts +5 -0
- package/title/index.d.ts +1 -0
- package/title/lib/title/title.d.ts +63 -0
- package/title/malva-ui-core-title.d.ts +5 -0
- package/toast/index.d.ts +10 -0
- package/toast/lib/abstract-toast-container.d.ts +29 -0
- package/toast/lib/abstract-toast-item.d.ts +44 -0
- package/toast/lib/abstract-toast.service.d.ts +75 -0
- package/toast/lib/toast-container/toast-container.d.ts +23 -0
- package/toast/lib/toast-item/toast-item.d.ts +25 -0
- package/toast/lib/toast-ref.d.ts +33 -0
- package/toast/lib/toast-timer.d.ts +24 -0
- package/toast/lib/toast.directives.d.ts +13 -0
- package/toast/lib/toast.service.d.ts +41 -0
- package/toast/lib/toast.types.d.ts +139 -0
- package/toast/malva-ui-core-toast.d.ts +5 -0
- package/tokenizer/index.d.ts +3 -0
- package/tokenizer/lib/token/token.d.ts +60 -0
- package/tokenizer/lib/token-template.d.ts +29 -0
- package/tokenizer/lib/tokenizer/tokenizer.d.ts +109 -0
- package/tokenizer/malva-ui-core-tokenizer.d.ts +5 -0
- package/toolbar/index.d.ts +3 -0
- package/toolbar/lib/toolbar/toolbar-spacer.d.ts +5 -0
- package/toolbar/lib/toolbar/toolbar-widget.d.ts +75 -0
- package/toolbar/lib/toolbar/toolbar.d.ts +8 -0
- package/toolbar/malva-ui-core-toolbar.d.ts +5 -0
- package/tooltip/README.md +7 -0
- package/tooltip/index.d.ts +3 -0
- package/tooltip/lib/tooltip/tooltip-panel.d.ts +26 -0
- package/tooltip/lib/tooltip/tooltip.d.ts +148 -0
- package/tooltip/lib/tooltip/tooltip.types.d.ts +17 -0
- package/tooltip/malva-ui-core-tooltip.d.ts +5 -0
- package/tree/index.d.ts +4 -0
- package/tree/lib/tree/tree-context.d.ts +62 -0
- package/tree/lib/tree/tree-node-def.d.ts +33 -0
- package/tree/lib/tree/tree-node.d.ts +45 -0
- package/tree/lib/tree/tree-subtree.d.ts +63 -0
- package/tree/lib/tree/tree.d.ts +156 -0
- package/tree/malva-ui-core-tree.d.ts +5 -0
|
@@ -0,0 +1,852 @@
|
|
|
1
|
+
# Library: dialog
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
`@malva-ui/core/dialog` has one engine and one vocabulary. Every dialog is the
|
|
6
|
+
same markup — a `<mlv-dialog>` surface with `mlv-dialog-header` /
|
|
7
|
+
`mlv-dialog-body` / `mlv-dialog-footer` parts and `[mlvDialogClose]` buttons —
|
|
8
|
+
whether it was opened from a template, a component, a string, `confirm()`, or a
|
|
9
|
+
route. **The thing that opens the dialog owns the options; the content owns the
|
|
10
|
+
chrome**, so no path ever draws a header for another and the double-header class
|
|
11
|
+
of bug cannot exist. The engine is Angular CDK `Dialog` (`@angular/cdk/dialog`):
|
|
12
|
+
overlay, container, focus trap/restore, `aria-*`, `closeAll()`,
|
|
13
|
+
`closeOnNavigation`, template context and DI; Malva adds the enter/leave
|
|
14
|
+
animation, granular Escape/backdrop opt-outs, `initialFocus: 'auto'`, size
|
|
15
|
+
presets, the surface and parts, `confirm()`, and routable dialogs.
|
|
16
|
+
|
|
17
|
+
Three ways to open one:
|
|
18
|
+
|
|
19
|
+
1. **Declarative** — `<ng-template [(mlvDialog)]="open" [mlvDialogOptions]="…">` (`MlvDialogTemplate`) wraps the surface. Lazy: the template is instantiated only while open.
|
|
20
|
+
2. **Imperative** — `MlvDialogService.open(content, config)` with a plain string, a `TemplateRef`, or a component type, returning a typed `MlvDialogRef<R, D>`.
|
|
21
|
+
3. **Route-driven** — `mlvGenerateRoutableDialogRoute()` creates a route that opens its component in a dialog; closing navigates back to the parent route.
|
|
22
|
+
|
|
23
|
+
Plus `MlvDialogService.confirm(options)` — a two-action confirmation that emits
|
|
24
|
+
one `boolean` and completes.
|
|
25
|
+
|
|
26
|
+
Migration from the previous API: [docs/migrations/2026-08-dialog-composition.md](../../docs/migrations/2026-08-dialog-composition.md).
|
|
27
|
+
|
|
28
|
+
---
|
|
29
|
+
|
|
30
|
+
## Public API
|
|
31
|
+
|
|
32
|
+
Exported from `@malva-ui/core/dialog`:
|
|
33
|
+
|
|
34
|
+
| Export | Kind | Description |
|
|
35
|
+
| ---------------------------------- | ------------------------------------------- | ------------------------------------------------------------------------------------------------------------------- |
|
|
36
|
+
| `MlvDialog` | Component | The dialog surface — `mlv-dialog`. Root of every dialog's content. |
|
|
37
|
+
| `MlvDialogHeader` | Component | Header row (title + close button) — `mlv-dialog-header, [mlvDialogHeader]`. |
|
|
38
|
+
| `MlvDialogBody` | Component | Scrollable body backed by `mlv-scrollbar` — `mlv-dialog-body, [mlvDialogBody]`. |
|
|
39
|
+
| `MlvDialogFooter` | Component | Action row — `mlv-dialog-footer, [mlvDialogFooter]`. |
|
|
40
|
+
| `MlvDialogFooterAlign` | Type alias | `'start' \| 'end' \| 'center' \| 'between'`. |
|
|
41
|
+
| `MlvDialogClose` | Directive | Closes the enclosing dialog on click, with an optional result — `[mlvDialogClose]`. |
|
|
42
|
+
| `MlvDialogTemplate` | Directive | Declarative two-way sugar over the service — `ng-template[mlvDialog]`, `exportAs: 'mlvDialog'`. |
|
|
43
|
+
| `MlvDialogService` | Service (`providedIn: 'root'`) | `open()` / `confirm()` / `closeAll()` / `openDialogs`. |
|
|
44
|
+
| `MlvDialogRef<R, D>` | Class | Handle for one open dialog: close, results, config, animation state. |
|
|
45
|
+
| `MlvDialogAnimationState` | Type alias | `'enter' \| 'idle' \| 'leave'`. |
|
|
46
|
+
| `MlvDialogConfig<D>` | Interface | Per-open configuration, shared by `open()` and `mlvDialogOptions`. |
|
|
47
|
+
| `MlvDialogContent<R, D>` | Type alias | `string \| TemplateRef<MlvDialogTemplateContext<R, D>> \| Type<unknown>`. |
|
|
48
|
+
| `MlvDialogTemplateContext<R, D>` | Interface | `$implicit`, `ref`, `data`, `config` exposed to `TemplateRef` content. |
|
|
49
|
+
| `MlvDialogSize` | Type alias | `MlvDialogSizePreset \| (string & {}) \| MlvDialogSizeConfig`. |
|
|
50
|
+
| `MlvDialogSizePreset` | Type alias | `'s' \| 'm' \| 'l' \| 'fullscreen'`. |
|
|
51
|
+
| `MlvDialogSizeConfig` | Interface | Explicit `width`/`height`/`min*`/`max*` dimensions. |
|
|
52
|
+
| `MlvDialogSizePresets` | Type alias | `Record<string, MlvDialogSizeConfig>`. |
|
|
53
|
+
| `MlvDialogAppearance` | Type alias | `'default' \| 'confirm'`. |
|
|
54
|
+
| `MlvDialogRole` | Type alias | `'dialog' \| 'alertdialog'`. |
|
|
55
|
+
| `DIALOG_DATA` | `InjectionToken<unknown>` | Angular CDK's `DIALOG_DATA`, re-exported under the same name. Same token identity, so either import injects `data`. |
|
|
56
|
+
| `DIALOG_CONFIG` | `InjectionToken<Readonly<MlvDialogConfig>>` | The consumer's config for the current dialog, injectable by content and parts. |
|
|
57
|
+
| `DIALOG_SIZE_PRESETS` | `InjectionToken<MlvDialogSizePresets>` | Registered size presets; override to change or add presets app-wide. |
|
|
58
|
+
| `MlvConfirmDialogOptions` | Interface | Options for `MlvDialogService.confirm()`. |
|
|
59
|
+
| `mlvGenerateRoutableDialogRoute()` | Function | Builds a `Route` that opens a component inside a dialog when activated. |
|
|
60
|
+
|
|
61
|
+
Deliberately **not** exported (implementation details): `MlvDialogContainer`,
|
|
62
|
+
`MlvDialogTextContent` + `MLV_DIALOG_TEXT`, `MlvConfirmDialog` +
|
|
63
|
+
`MLV_CONFIRM_DIALOG_CONFIRM_CLASS` / `MLV_CONFIRM_DIALOG_CANCEL_CLASS`,
|
|
64
|
+
`injectDialogRef()`, `MlvRoutableDialog`.
|
|
65
|
+
|
|
66
|
+
---
|
|
67
|
+
|
|
68
|
+
## Components
|
|
69
|
+
|
|
70
|
+
### `MlvDialog`
|
|
71
|
+
|
|
72
|
+
· **Styles:** `dialog.scss`
|
|
73
|
+
|
|
74
|
+
- **Selector:** `mlv-dialog` · **Template:** `<ng-content />`
|
|
75
|
+
- `ViewEncapsulation.None`, `ChangeDetectionStrategy.OnPush`
|
|
76
|
+
- Host classes: `mlv-dialog`, plus `mlv-dialog--confirm` (when `DIALOG_CONFIG.appearance === 'confirm'`), `mlv-dialog--enter` / `mlv-dialog--leave` mirrored from `MlvDialogRef.animationState()`.
|
|
77
|
+
|
|
78
|
+
No inputs and no outputs — everything it needs comes from `MlvDialogRef` and
|
|
79
|
+
`DIALOG_CONFIG`. Consumer `class="…"` lands on this element (it is the visible
|
|
80
|
+
surface); `MlvDialogConfig.panelClass` styles the overlay pane around it.
|
|
81
|
+
|
|
82
|
+
The surface owns the animation handshake. Its `(animationend)` handler is
|
|
83
|
+
target-guarded (`event.target === host`, so a descendant's animation is
|
|
84
|
+
ignored) and calls `MlvDialogRef._onSurfaceAnimationEnd()`: the enter animation
|
|
85
|
+
settles the state to `'idle'`, the leave animation disposes the CDK dialog. The
|
|
86
|
+
CDK container carries no animation class and no listener.
|
|
87
|
+
|
|
88
|
+
Rendered outside a dialog it throws a descriptive error (via the internal
|
|
89
|
+
`injectDialogRef()` helper) naming the selector and the two ways to open one
|
|
90
|
+
(`MlvDialogService.open()`, `<ng-template [(mlvDialog)]>`).
|
|
91
|
+
|
|
92
|
+
### `MlvDialogHeader`
|
|
93
|
+
|
|
94
|
+
- **Selector:** `mlv-dialog-header, [mlvDialogHeader]` (element, or attribute on the consumer's own container)
|
|
95
|
+
- Host class: `mlv-dialog__header`; host binding `[attr.title]="null"` strips the static `title` attribute so `<mlv-dialog-header title="…">` feeds the input without leaving a browser tooltip on the row.
|
|
96
|
+
|
|
97
|
+
It is a **container**, never applied to a heading — project the heading inside
|
|
98
|
+
it instead: `<mlv-dialog-header><h3>Edit user</h3></mlv-dialog-header>`.
|
|
99
|
+
|
|
100
|
+
#### Inputs
|
|
101
|
+
|
|
102
|
+
| Name | Type | Default | Description |
|
|
103
|
+
| ---------- | ---------------------- | ----------- | ------------------------------------------------------------------------------------------------------------------------------------ |
|
|
104
|
+
| `title` | `string \| undefined` | `undefined` | Plain-text title rendered as `<h2 class="mlv-dialog__title">`. |
|
|
105
|
+
| `closable` | `boolean \| undefined` | `undefined` | Whether the X is rendered. `BooleanInput`-coerced; `undefined` (unset) defers to the config. Always off for `appearance: 'confirm'`. |
|
|
106
|
+
|
|
107
|
+
#### Title and close-button resolution
|
|
108
|
+
|
|
109
|
+
- **Title:** `title` input → projected content → `MlvDialogConfig.title`. With a `title` input the element is an `<h2>`; otherwise it is a `<div class="mlv-dialog__title">` wrapping the projection, whose `<ng-content>` fallback is a plain `<h2>` (no class) carrying `config.title`. A projected heading of any level is styled as _the_ title, so pick the level for the document outline.
|
|
110
|
+
- **Close button:** `closable` input → `MlvDialogConfig.closable` → `true`; forced `false` when `MlvDialogConfig.appearance` is `'confirm'`.
|
|
111
|
+
- **Markup of the X:** `<mlv-button-close class="mlv-dialog__close" mlvDensity="compact" shape="circle" variant="secondary" [ariaLabel]="i18n.closeDialog" (click)="ref.close()" />`. The native `click` is bound on the wrapper because it already hosts a real `<button>` — `[mlvClick]` would add a second tab stop.
|
|
112
|
+
|
|
113
|
+
#### Labelling
|
|
114
|
+
|
|
115
|
+
The title element carries `id="<MlvDialogRef.id>-title-<n>"` — the counter is
|
|
116
|
+
per header instance (`mlvNextId`), so two headers in one dialog never share an
|
|
117
|
+
id — and registers itself as
|
|
118
|
+
the dialog's label through `MlvDialogRef._labelBy()`, so the visible title
|
|
119
|
+
becomes the accessible name. **The label follows the rendered title.** The
|
|
120
|
+
header re-takes the decision after every render (`afterEveryRender`), diffing
|
|
121
|
+
against what it registered last: the id goes in as soon as the title element
|
|
122
|
+
has text — so a title that only arrives asynchronously (`[title]="user()?.name"`,
|
|
123
|
+
a projected heading fed by a resolver) still names the dialog — and is taken out
|
|
124
|
+
again with `_unlabelBy()` when the title loses its text. A header that renders
|
|
125
|
+
no text at all — no `title` input, no projected content, no `config.title`, e.g.
|
|
126
|
+
a header that only hosts the X — registers nothing, because labelling the dialog
|
|
127
|
+
with an empty element produces an empty accessible name (an axe
|
|
128
|
+
`aria-dialog-name` violation). On destroy a live registration is reversed.
|
|
129
|
+
When several headers register (e.g. two `mlv-dialog-header`s in one dialog),
|
|
130
|
+
the CDK container uses the first id in its queue as `aria-labelledby`; names
|
|
131
|
+
do not concatenate.
|
|
132
|
+
|
|
133
|
+
### `MlvDialogBody`
|
|
134
|
+
|
|
135
|
+
- **Selector:** `mlv-dialog-body, [mlvDialogBody]` · Host class: `mlv-dialog__body`
|
|
136
|
+
- Template: `<mlv-scrollbar class="mlv-dialog__body-scrollbar"><ng-content /></mlv-scrollbar>`
|
|
137
|
+
|
|
138
|
+
No inputs or outputs. The padding sits on the scrollbar's **viewport**, inside
|
|
139
|
+
the clip box, so focus rings on body controls are never clipped; the scrollbar's
|
|
140
|
+
content element is an explicit `display: flex; flex-direction: column` so body
|
|
141
|
+
children stack and may `flex: 1` (never inherit `flex-direction` through the
|
|
142
|
+
scrollbar — the viewport's initial value is `row`).
|
|
143
|
+
|
|
144
|
+
### `MlvDialogFooter`
|
|
145
|
+
|
|
146
|
+
- **Selector:** `mlv-dialog-footer, [mlvDialogFooter]` · Host classes: `mlv-dialog__footer` + `mlv-dialog__footer--align-<align>`
|
|
147
|
+
- A wrapping flex row of actions. Replaces the old bare footer class, its trailing-actions helper, and the toolbar + spacer boilerplate.
|
|
148
|
+
|
|
149
|
+
#### Inputs
|
|
150
|
+
|
|
151
|
+
| Name | Type | Default | Description |
|
|
152
|
+
| ------- | ---------------------- | ------- | ------------------------------------------------------------------- |
|
|
153
|
+
| `align` | `MlvDialogFooterAlign` | `'end'` | Where the actions sit: `'start'`, `'end'`, `'center'`, `'between'`. |
|
|
154
|
+
|
|
155
|
+
### `MlvDialogContainer` (internal — not exported)
|
|
156
|
+
|
|
157
|
+
· **Styles:** `dialog-container.scss`
|
|
158
|
+
|
|
159
|
+
`extends CdkDialogContainer`; selector `mlv-dialog-container`, template
|
|
160
|
+
`<ng-template cdkPortalOutlet />`. The service passes it as
|
|
161
|
+
`DialogConfig.container`, so it is the CDK's container for every Malva dialog
|
|
162
|
+
and never instantiated by consumers.
|
|
163
|
+
|
|
164
|
+
- Host: `class="mlv-dialog-container"`, `tabindex="-1"`, `[attr.id]`, `[attr.role]`, `[attr.aria-modal]`, `[attr.aria-labelledby]` (suppressed when `ariaLabel` is set), `[attr.aria-label]`, `[attr.aria-describedby]` — restated from the CDK base so the contract sits next to the styles that depend on it.
|
|
165
|
+
- `changeDetection: ChangeDetectionStrategy.Eager` — a **documented exception** to the repo's OnPush rule, matching `CdkDialogContainer` / `MatDialogContainer`. This view is the change-detection parent of arbitrary consumer content (the portal outlet's `ViewContainerRef` lives in it), so an OnPush, non-dirty container would skip refreshing zone-driven content.
|
|
166
|
+
- `_captureInitialFocus()` override: the CDK first focuses the container (`autoFocus: 'dialog'`, which emits `_focusTrapped` so the CDK aria-hides the rest of the page), then — from `afterNextRender`, guarded against a destroyed view — `MlvOverlayInitialFocusResolver` moves focus to the resolved `initialFocus` target.
|
|
167
|
+
|
|
168
|
+
Its stylesheet is selected as `mlv-dialog-container.mlv-dialog-container`
|
|
169
|
+
(element **and** class): Ivy merges the inherited `cdk-dialog-container`
|
|
170
|
+
attribute onto the host, and the CDK's own `.cdk-dialog-container { display: block }`
|
|
171
|
+
has equal specificity to a bare class selector.
|
|
172
|
+
|
|
173
|
+
### `MlvDialogTextContent` / `MlvConfirmDialog` / `MlvRoutableDialog` (internal — not exported)
|
|
174
|
+
|
|
175
|
+
- `dialog-text-content.ts` — renders string content: `<mlv-dialog>` + `<mlv-dialog-header />` (only when the config has a `title`, or a close button would show) + `<mlv-dialog-body><p class="mlv-dialog__text">`. The string arrives through the internal `MLV_DIALOG_TEXT` token and is interpolated, never `innerHTML`.
|
|
176
|
+
- `confirm-dialog.ts` — the `confirm()` content: `<mlv-dialog>` + titled `<mlv-dialog-header>` + message body + `<mlv-dialog-footer>` with cancel/confirm buttons. Reads its options from `MlvDialogRef.data`, so it never imports the service.
|
|
177
|
+
- `routable-dialog.ts` — the invisible shell `mlvGenerateRoutableDialogRoute()` lazy-loads; it opens the routed component with the shell's injector and navigates back to the parent route when the dialog closes.
|
|
178
|
+
|
|
179
|
+
---
|
|
180
|
+
|
|
181
|
+
## Directives
|
|
182
|
+
|
|
183
|
+
### `MlvDialogClose`
|
|
184
|
+
|
|
185
|
+
· **Selector:** `[mlvDialogClose]`
|
|
186
|
+
|
|
187
|
+
Closes the enclosing dialog when the host is clicked, optionally with a result.
|
|
188
|
+
Injects `MlvDialogRef` (required — throws outside a dialog).
|
|
189
|
+
|
|
190
|
+
Put it on a `<button>` (or an `<a href>`): the directive listens to `click` only
|
|
191
|
+
and adds no keyboard handling of its own.
|
|
192
|
+
|
|
193
|
+
#### Inputs
|
|
194
|
+
|
|
195
|
+
| Name | Type | Default | Description |
|
|
196
|
+
| ---------------- | ---------------- | ----------- | ------------------------------------------------------------------------------------------------------------- |
|
|
197
|
+
| `mlvDialogClose` | `R \| undefined` | `undefined` | Result passed to `MlvDialogRef.close()`. A bare attribute (`''`) means `undefined`. |
|
|
198
|
+
| `type` | `string` | `'button'` | Bound to `[attr.type]` **only when the host is a `<button>`** (`null` otherwise), so it never submits a form. |
|
|
199
|
+
|
|
200
|
+
```html
|
|
201
|
+
<button mlvButton mlvDialogClose>Cancel</button>
|
|
202
|
+
<!-- closes with undefined -->
|
|
203
|
+
<button mlvButton mlvDialogClose="saved">Save</button>
|
|
204
|
+
<!-- closes with 'saved' -->
|
|
205
|
+
<button mlvButton [mlvDialogClose]="form.value">Save</button>
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
### `MlvDialogTemplate`
|
|
209
|
+
|
|
210
|
+
**Selector:** `ng-template[mlvDialog]` · **`exportAs`:** `mlvDialog`
|
|
211
|
+
|
|
212
|
+
Declarative sugar over `MlvDialogService.open(templateRef, options)`. The
|
|
213
|
+
template is instantiated only while open and receives the same context as
|
|
214
|
+
`open(templateRef)` (`let-dialog`, `let-data="data"`, `let-config="config"`).
|
|
215
|
+
|
|
216
|
+
#### Model
|
|
217
|
+
|
|
218
|
+
| Name | Type | Default | Description |
|
|
219
|
+
| ----------- | --------- | ------- | --------------------------------------------------------------------- |
|
|
220
|
+
| `mlvDialog` | `boolean` | `false` | Whether the dialog is open. Two-way bindable: `[(mlvDialog)]="open"`. |
|
|
221
|
+
|
|
222
|
+
#### Inputs
|
|
223
|
+
|
|
224
|
+
| Name | Type | Default | Description |
|
|
225
|
+
| ------------------ | --------------------------------- | ----------- | ---------------------------------------------------------------------------------------- |
|
|
226
|
+
| `mlvDialogOptions` | `MlvDialogConfig<D> \| undefined` | `undefined` | Options handed to `open()`. Read at open time; later changes apply to the **next** open. |
|
|
227
|
+
|
|
228
|
+
#### Outputs
|
|
229
|
+
|
|
230
|
+
| Name | Type | Description |
|
|
231
|
+
| ----------------- | ---------------- | ------------------------------------------------------------------ |
|
|
232
|
+
| `mlvDialogChange` | `boolean` | The model's change output — emitted whenever the open state flips. |
|
|
233
|
+
| `mlvDialogOpened` | `void` | Emitted right after the dialog has been opened. |
|
|
234
|
+
| `mlvDialogClosed` | `R \| undefined` | Emitted with the close result once the dialog is disposed. |
|
|
235
|
+
|
|
236
|
+
#### Methods
|
|
237
|
+
|
|
238
|
+
| Method | Signature | Description |
|
|
239
|
+
| ------------------------ | -------------------------------------------------------------------------------------- | --------------------------------------------------------------- |
|
|
240
|
+
| `open` | `open(): void` | Sets the model to `true`. |
|
|
241
|
+
| `close` | `close(): void` | Sets the model to `false`. |
|
|
242
|
+
| `ngTemplateContextGuard` | `static ngTemplateContextGuard<R, D>(dir, ctx): ctx is MlvDialogTemplateContext<R, D>` | Types `let-dialog` / `let-data` / `let-config` in the template. |
|
|
243
|
+
|
|
244
|
+
#### Properties
|
|
245
|
+
|
|
246
|
+
| Property | Type | Description |
|
|
247
|
+
| -------- | ---------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
248
|
+
| `ref` | `MlvDialogRef<R, D> \| null` | The ref of the open dialog (held until the leave animation completes), or `null`. Dropped immediately when the host is destroyed, so it never hands out a disposed handle. |
|
|
249
|
+
|
|
250
|
+
#### Open / close behaviour
|
|
251
|
+
|
|
252
|
+
Closing from inside — `[mlvDialogClose]`, Escape, the backdrop, `dialog.close()`
|
|
253
|
+
— flips the model back to `false` and emits `mlvDialogClosed`. Two caveats:
|
|
254
|
+
|
|
255
|
+
- **Re-open while leaving is deferred, not dropped.** Setting the model back to `true` during the leave animation is remembered; once the old instance is disposed — after its `mlvDialogClosed` has fired — a fresh dialog opens and the model stays `true`. The one case that does not work is re-opening from **inside** an `(mlvDialogClosed)` handler: that handler runs before the model settles, so the write is overwritten. Re-open from a later tick instead.
|
|
256
|
+
- **Nothing is emitted after the host is destroyed.** Destroying the host closes an open dialog, but the outputs and the model are not touched afterwards — the `afterClosed()` subscription is torn down with the host (`takeUntilDestroyed`).
|
|
257
|
+
- **`afterClosed()` is subscribed before `mlvDialogOpened` emits**, so an `(mlvDialogOpened)` handler that synchronously closes the dialog still clears `ref` and flips the model back to `false`.
|
|
258
|
+
|
|
259
|
+
---
|
|
260
|
+
|
|
261
|
+
## Services
|
|
262
|
+
|
|
263
|
+
### `MlvDialogService`
|
|
264
|
+
|
|
265
|
+
· **Provided in:** `root`
|
|
266
|
+
|
|
267
|
+
Thin orchestration over CDK `Dialog`: the CDK owns overlay, container, focus
|
|
268
|
+
trap/restore, ARIA and history handling; the service maps `MlvDialogConfig`,
|
|
269
|
+
constructs the `MlvDialogRef`, plays the leave animation, and applies the
|
|
270
|
+
granular Escape/backdrop opt-outs. It **never renders chrome**.
|
|
271
|
+
|
|
272
|
+
#### Methods
|
|
273
|
+
|
|
274
|
+
| Method | Signature | Description |
|
|
275
|
+
| ---------- | ------------------------------------------------------------------------------------------------------------------ | --------------------------------------------------------------------- |
|
|
276
|
+
| `open` | `open<R = unknown, D = unknown>(content: MlvDialogContent<R, D>, config?: MlvDialogConfig<D>): MlvDialogRef<R, D>` | Opens a string, `TemplateRef`, or component type in a modal dialog. |
|
|
277
|
+
| `confirm` | `confirm(options: MlvConfirmDialogOptions): Observable<boolean>` | Opens a two-action confirmation; emits once, completes, and replays. |
|
|
278
|
+
| `closeAll` | `closeAll(): void` | Closes every open dialog, newest first, playing each leave animation. |
|
|
279
|
+
|
|
280
|
+
#### Properties
|
|
281
|
+
|
|
282
|
+
| Property | Type | Description |
|
|
283
|
+
| ------------- | ------------------------- | -------------------------------------------------------------- |
|
|
284
|
+
| `openDialogs` | `readonly MlvDialogRef[]` | Snapshot (a copy) of the currently open dialogs, oldest first. |
|
|
285
|
+
|
|
286
|
+
#### CDK mapping
|
|
287
|
+
|
|
288
|
+
`open()` translates `MlvDialogConfig` into the CDK `DialogConfig`:
|
|
289
|
+
|
|
290
|
+
| `MlvDialogConfig` | CDK `DialogConfig` |
|
|
291
|
+
| ---------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
292
|
+
| `size` (preset name or `MlvDialogSizeConfig`) | `width`/`height`/`minWidth`/`minHeight`/`maxWidth`/`maxHeight` resolved through `DIALOG_SIZE_PRESETS` (an unknown name falls back to `'m'`), each run through `coerceCssPixelValue`. |
|
|
293
|
+
| `panelClass` | `['mlv-dialog-pane', …('mlv-dialog-pane--fullscreen' when the size is the `fullscreen` preset name), ...panelClass]` |
|
|
294
|
+
| `backdropClass` | `['mlv-dialog-backdrop', ...backdropClass]` |
|
|
295
|
+
| `hasBackdrop` (default `true`) | `hasBackdrop` |
|
|
296
|
+
| `closeOnBackdrop` / `closeOnEscape` (default `true`) | `disableClose: true` **always**; the service subscribes to `cdkRef.backdropClick` / `cdkRef.keydownEvents` (Escape without modifiers) itself, so each can be opted out separately and the leave animation still plays. |
|
|
297
|
+
| `initialFocus` (default `'auto'`) | `autoFocus: 'dialog'` — the CDK focuses the container, then `MlvDialogContainer` applies the Malva strategy. |
|
|
298
|
+
| `restoreFocus` (default `true`) | `restoreFocus` |
|
|
299
|
+
| `role` (default `'dialog'`) | `role` |
|
|
300
|
+
| `ariaLabel` / `ariaLabelledBy` / `ariaDescribedBy` | passthrough (`null` when unset). For string content with no `title`, `ariaLabel` defaults to the text itself. |
|
|
301
|
+
| `closeOnNavigation` (default `true`) | `closeOnNavigation` |
|
|
302
|
+
| `data`, `injector`, `id` | passthrough (`viewContainerRef` is not exposed) |
|
|
303
|
+
| `title`, `closable`, `appearance` | not CDK — handed to the content through `DIALOG_CONFIG` and read by `mlv-dialog` / `mlv-dialog-header`. |
|
|
304
|
+
| — | `container: MlvDialogContainer` (+ `DIALOG_CONFIG` provider); `templateContext: { $implicit: ref, ref, data, config }`; `providers: (cdkRef) => [MlvDialogRef, DIALOG_CONFIG, (string content: MLV_DIALOG_TEXT)]` |
|
|
305
|
+
|
|
306
|
+
The config object is frozen by copy at open time, so later mutation of the
|
|
307
|
+
caller's object never changes a live dialog. Content can inject `MlvDialogRef`,
|
|
308
|
+
`DIALOG_CONFIG`, `DIALOG_DATA`, and the CDK's own `DialogRef`.
|
|
309
|
+
|
|
310
|
+
#### String content
|
|
311
|
+
|
|
312
|
+
Rendered by the internal `MlvDialogTextContent`, which composes the same public
|
|
313
|
+
parts. Its header is rendered only when it would carry something: a
|
|
314
|
+
`config.title`, or a close button (`closable !== false` and the appearance is
|
|
315
|
+
not `'confirm'`). Titleless string content names the dialog with the text.
|
|
316
|
+
|
|
317
|
+
#### Confirmation behaviour
|
|
318
|
+
|
|
319
|
+
`confirm()` opens the internal `MlvConfirmDialog` with `appearance: 'confirm'`
|
|
320
|
+
(borderless chrome, X forced off) and `size: 's'` unless overridden. It passes
|
|
321
|
+
no `title` — the component binds `options.title` on its own header. Every
|
|
322
|
+
dismissal that is not the confirm button — Escape, the backdrop, `ref.close()`
|
|
323
|
+
— resolves as `false`.
|
|
324
|
+
|
|
325
|
+
- **Description.** The service generates `ariaDescribedBy: mlvNextId('mlv-confirm-message')` and the component reads it back from `DIALOG_CONFIG` to `[id]` its message paragraph, so the container is described by the text the user has to act on. `MlvConfirmDialogOptions` never carries the id, and the component falls back to its own `mlvNextId('mlv-confirm-message')` if it is ever constructed without one.
|
|
326
|
+
- **Destructive.** `destructive: true` or `tone: 'danger'` opens the dialog with `role: 'alertdialog'`, turns the confirm button `error`-coloured, and puts initial focus on **Cancel**, so a reflexive Enter dismisses rather than destroys.
|
|
327
|
+
- **Tone → variant.** An exhaustive `Record<MlvTone, MlvButtonVariant>`: `danger` → `error`, `warning` → `warning`, `info` → `info`, `success` → `primary` (no dedicated variant). No tone at all is `'primary'`.
|
|
328
|
+
- **Labels** default to `MLV_DIALOG_I18N` (`confirm`, `cancel`) and are `computed()` over the i18n signal, so they follow a language change.
|
|
329
|
+
- **The answer is replayed.** The returned observable is `shareReplay({ bufferSize: 1, refCount: false })` over `afterClosed()`, connected while the dialog is still open (the CDK's `closed` subject is hot and emits once), so a subscriber that arrives after the dialog closed still receives the answer.
|
|
330
|
+
|
|
331
|
+
---
|
|
332
|
+
|
|
333
|
+
## Classes
|
|
334
|
+
|
|
335
|
+
### `MlvDialogRef<R, D>`
|
|
336
|
+
|
|
337
|
+
Composition wrapper around the CDK `DialogRef` (the CDK constructs its own ref,
|
|
338
|
+
so it cannot be subclassed). It no longer extends `MlvOverlayRef`. Consumers
|
|
339
|
+
never construct it — it arrives from `open()`, from DI, or in the template
|
|
340
|
+
context.
|
|
341
|
+
|
|
342
|
+
#### Properties
|
|
343
|
+
|
|
344
|
+
| Property | Type | Description |
|
|
345
|
+
| ---------------- | --------------------------------- | ------------------------------------------------------------------------ |
|
|
346
|
+
| `data` | `D` | Payload from `MlvDialogConfig.data`. |
|
|
347
|
+
| `config` | `Readonly<MlvDialogConfig<D>>` | The configuration this dialog was opened with. |
|
|
348
|
+
| `id` | `string` | Id of the container element (CDK-generated unless `config.id` was set). |
|
|
349
|
+
| `animationState` | `Signal<MlvDialogAnimationState>` | `'enter'` → `'idle'` → `'leave'`; drives the surface's modifier classes. |
|
|
350
|
+
|
|
351
|
+
#### Methods
|
|
352
|
+
|
|
353
|
+
| Method | Signature | Description |
|
|
354
|
+
| ------------------ | ----------------------------------------------------------------------- | ------------------------------------------------------------------------------------------ |
|
|
355
|
+
| `close` | `close(result?: R): void` | Idempotent. Emits `beforeClose()`, plays the leave animation, then disposes with `result`. |
|
|
356
|
+
| `afterClosed` | `afterClosed(): Observable<R \| undefined>` | Emits the result once the dialog is disposed (i.e. after the animation), then completes. |
|
|
357
|
+
| `beforeClose` | `beforeClose(): Observable<void>` | Emits and completes synchronously at the start of `close()`, before the leave animation. |
|
|
358
|
+
| `keydownEvents` | `keydownEvents(): Observable<KeyboardEvent>` | Keydowns the CDK routes to **this** dialog — only while it is the topmost keydown target. |
|
|
359
|
+
| `backdropClick` | `backdropClick(): Observable<MouseEvent>` | Clicks on this dialog's backdrop. |
|
|
360
|
+
| `updateSize` | `updateSize(width?: string \| number, height?: string \| number): this` | CDK passthrough — resizes the overlay pane. |
|
|
361
|
+
| `addPanelClass` | `addPanelClass(classes: string \| string[]): this` | CDK passthrough — adds class(es) to the overlay pane. |
|
|
362
|
+
| `removePanelClass` | `removePanelClass(classes: string \| string[]): this` | CDK passthrough — removes class(es) from the overlay pane. |
|
|
363
|
+
|
|
364
|
+
#### Leave handshake
|
|
365
|
+
|
|
366
|
+
`close()` marks the backdrop `mlv-dialog-backdrop--leaving`, flips
|
|
367
|
+
`animationState` to `'leave'` (so `<mlv-dialog>` gets `--leave`), and arms a
|
|
368
|
+
**250 ms** fallback timer. Whichever comes first — the surface's `animationend`
|
|
369
|
+
or the timer — disposes the CDK dialog and emits on `afterClosed()`. The
|
|
370
|
+
fallback is what covers reduced motion, hidden tabs, jsdom, and content whose
|
|
371
|
+
root is not `<mlv-dialog>`.
|
|
372
|
+
|
|
373
|
+
The CDK can also close on its own (history navigation with
|
|
374
|
+
`closeOnNavigation`, overlay detachment, the CDK's own `closeAll()`). The ref
|
|
375
|
+
subscribes to `cdkRef.closed` and marks itself disposed, so a later `close()`
|
|
376
|
+
and a late `animationend` from the torn-down surface are both no-ops.
|
|
377
|
+
|
|
378
|
+
#### Internal members
|
|
379
|
+
|
|
380
|
+
`_onSurfaceAnimationEnd()` (called by the surface), `_labelBy(id)` /
|
|
381
|
+
`_unlabelBy(id)` (called by `mlv-dialog-header`, forwarding to the CDK
|
|
382
|
+
container's `_addAriaLabelledBy` / `_removeAriaLabelledBy`). Not part of the
|
|
383
|
+
public contract.
|
|
384
|
+
|
|
385
|
+
---
|
|
386
|
+
|
|
387
|
+
## Interfaces & Types
|
|
388
|
+
|
|
389
|
+
### `MlvDialogConfig<D>`
|
|
390
|
+
|
|
391
|
+
The single configuration object, used by `MlvDialogService.open()`,
|
|
392
|
+
`mlvDialogOptions`, and `mlvGenerateRoutableDialogRoute()`.
|
|
393
|
+
|
|
394
|
+
| Field | Type | Default | Description |
|
|
395
|
+
| ------------------- | ------------------------ | ------------- | -------------------------------------------------------------------------------------------- |
|
|
396
|
+
| `size` | `MlvDialogSize` | `'m'` | Preset name or explicit dimensions. |
|
|
397
|
+
| `appearance` | `MlvDialogAppearance` | `'default'` | `'confirm'` drops the header/footer borders and hides the close button. |
|
|
398
|
+
| `title` | `string` | `undefined` | Plain-text title: string content, the `mlv-dialog-header` fallback, and the accessible name. |
|
|
399
|
+
| `closable` | `boolean` | `true` | Default for `mlv-dialog-header`'s close button. |
|
|
400
|
+
| `panelClass` | `string \| string[]` | `undefined` | Extra class(es) on the overlay pane (`.mlv-dialog-pane`). |
|
|
401
|
+
| `backdropClass` | `string \| string[]` | `undefined` | Extra class(es) on the backdrop (`.mlv-dialog-backdrop`). |
|
|
402
|
+
| `hasBackdrop` | `boolean` | `true` | Whether a backdrop is rendered. |
|
|
403
|
+
| `closeOnBackdrop` | `boolean` | `true` | Whether a backdrop click closes the dialog. |
|
|
404
|
+
| `closeOnEscape` | `boolean` | `true` | Whether Escape closes the dialog. |
|
|
405
|
+
| `closeOnNavigation` | `boolean` | `true` | Whether browser history navigation closes the dialog. |
|
|
406
|
+
| `initialFocus` | `MlvOverlayInitialFocus` | `'auto'` | Where focus lands once open — see [libs-overlay.md](libs-overlay.md). |
|
|
407
|
+
| `restoreFocus` | `boolean` | `true` | Whether focus returns to the previously focused element on close. |
|
|
408
|
+
| `role` | `MlvDialogRole` | `'dialog'` | ARIA role of the container. |
|
|
409
|
+
| `ariaLabel` | `string` | `undefined` | Accessible name when no visible title labels the dialog. |
|
|
410
|
+
| `ariaLabelledBy` | `string` | `undefined` | Id of a labelling element. Wins over `ariaLabel` and the header title. |
|
|
411
|
+
| `ariaDescribedBy` | `string` | `undefined` | Id of a describing element. |
|
|
412
|
+
| `data` | `D` | `undefined` | Payload for `MlvDialogRef.data`, `DIALOG_DATA`, and the template context's `data`. |
|
|
413
|
+
| `injector` | `Injector` | root injector | Parent injector for the content. |
|
|
414
|
+
| `id` | `string` | CDK-generated | Id of the dialog container. |
|
|
415
|
+
|
|
416
|
+
### `MlvDialogTemplateContext<R, D>`
|
|
417
|
+
|
|
418
|
+
```ts
|
|
419
|
+
interface MlvDialogTemplateContext<R = unknown, D = unknown> {
|
|
420
|
+
$implicit: MlvDialogRef<R, D>; // let-dialog
|
|
421
|
+
ref: MlvDialogRef<R, D>; // let-dialog="ref" — the same handle
|
|
422
|
+
data: D; // let-data="data"
|
|
423
|
+
config: Readonly<MlvDialogConfig<D>>; // let-config="config"
|
|
424
|
+
}
|
|
425
|
+
```
|
|
426
|
+
|
|
427
|
+
### `MlvDialogContent<R, D>`
|
|
428
|
+
|
|
429
|
+
```ts
|
|
430
|
+
type MlvDialogContent<R = unknown, D = unknown> = string | TemplateRef<MlvDialogTemplateContext<R, D>> | Type<unknown>;
|
|
431
|
+
```
|
|
432
|
+
|
|
433
|
+
Strings are rendered as escaped text, never as trusted HTML.
|
|
434
|
+
|
|
435
|
+
### Size types
|
|
436
|
+
|
|
437
|
+
```ts
|
|
438
|
+
type MlvDialogSizePreset = 's' | 'm' | 'l' | 'fullscreen';
|
|
439
|
+
type MlvDialogSize = MlvDialogSizePreset | (string & {}) | MlvDialogSizeConfig;
|
|
440
|
+
type MlvDialogSizePresets = Record<string, MlvDialogSizeConfig>;
|
|
441
|
+
|
|
442
|
+
interface MlvDialogSizeConfig {
|
|
443
|
+
width?: string | number;
|
|
444
|
+
height?: string | number;
|
|
445
|
+
minWidth?: string | number;
|
|
446
|
+
minHeight?: string | number;
|
|
447
|
+
maxWidth?: string | number;
|
|
448
|
+
maxHeight?: string | number;
|
|
449
|
+
}
|
|
450
|
+
```
|
|
451
|
+
|
|
452
|
+
Built-in presets (`DIALOG_SIZE_PRESETS`):
|
|
453
|
+
|
|
454
|
+
| Preset | `width` | `height` | `maxWidth` | `maxHeight` | Notes |
|
|
455
|
+
| ------------ | ------- | -------- | ---------- | ----------- | ---------------------------------------------------- |
|
|
456
|
+
| `s` | `400px` | — | `90vw` | `90vh` | |
|
|
457
|
+
| `m` | `560px` | — | `90vw` | `90vh` | Default; also the fallback for an unregistered name. |
|
|
458
|
+
| `l` | `800px` | — | `90vw` | `90vh` | |
|
|
459
|
+
| `fullscreen` | `100vw` | `100vh` | `100vw` | `100vh` | Also adds `mlv-dialog-pane--fullscreen` to the pane. |
|
|
460
|
+
|
|
461
|
+
### Remaining unions
|
|
462
|
+
|
|
463
|
+
```ts
|
|
464
|
+
type MlvDialogAppearance = 'default' | 'confirm';
|
|
465
|
+
type MlvDialogRole = 'dialog' | 'alertdialog';
|
|
466
|
+
type MlvDialogFooterAlign = 'start' | 'end' | 'center' | 'between';
|
|
467
|
+
type MlvDialogAnimationState = 'enter' | 'idle' | 'leave';
|
|
468
|
+
```
|
|
469
|
+
|
|
470
|
+
### `MlvConfirmDialogOptions`
|
|
471
|
+
|
|
472
|
+
.
|
|
473
|
+
`title` and `message` are required; `confirmLabel`, `cancelLabel`,
|
|
474
|
+
`tone` (`MlvTone`), `destructive`, `size` (`MlvDialogSize`, same hint union as
|
|
475
|
+
`MlvDialogConfig.size`), `closeOnBackdrop`, `closeOnEscape` and `injector` are
|
|
476
|
+
optional. Kept in its own file so the barrel can export the
|
|
477
|
+
shape without the internal component that consumes it.
|
|
478
|
+
|
|
479
|
+
---
|
|
480
|
+
|
|
481
|
+
## Injection Tokens
|
|
482
|
+
|
|
483
|
+
### `DIALOG_DATA`
|
|
484
|
+
|
|
485
|
+
`InjectionToken<unknown>` — **Angular CDK's `DIALOG_DATA`, re-exported under the
|
|
486
|
+
same name** (`export const DIALOG_DATA: InjectionToken<unknown> = CDK_DIALOG_DATA`).
|
|
487
|
+
The identity is CDK's, so content injecting either import receives the same
|
|
488
|
+
`config.data`.
|
|
489
|
+
|
|
490
|
+
```ts
|
|
491
|
+
readonly data = inject(DIALOG_DATA) as MyDataType;
|
|
492
|
+
```
|
|
493
|
+
|
|
494
|
+
### `DIALOG_CONFIG`
|
|
495
|
+
|
|
496
|
+
`InjectionToken<Readonly<MlvDialogConfig>>` — the consumer's config for the
|
|
497
|
+
current dialog. Provided both on the container (so `MlvDialogContainer` can read
|
|
498
|
+
`initialFocus`) and on the content injector. `mlv-dialog` reads `appearance`
|
|
499
|
+
from it and `mlv-dialog-header` reads `title` / `closable` / `appearance`.
|
|
500
|
+
Template content gets the same object as `let-config="config"`.
|
|
501
|
+
|
|
502
|
+
### `DIALOG_SIZE_PRESETS`
|
|
503
|
+
|
|
504
|
+
`InjectionToken<MlvDialogSizePresets>`, `providedIn: 'root'` with the four
|
|
505
|
+
built-ins as its factory. Override it to change or add presets app-wide:
|
|
506
|
+
|
|
507
|
+
```ts
|
|
508
|
+
{
|
|
509
|
+
provide: DIALOG_SIZE_PRESETS,
|
|
510
|
+
useValue: {
|
|
511
|
+
s: { width: '360px', maxHeight: '80vh', maxWidth: '90vw' },
|
|
512
|
+
m: { width: '560px', maxHeight: '90vh', maxWidth: '90vw' },
|
|
513
|
+
l: { width: '860px', maxHeight: '90vh', maxWidth: '90vw' },
|
|
514
|
+
fullscreen: { width: '100vw', height: '100vh', maxWidth: '100vw', maxHeight: '100vh' },
|
|
515
|
+
wide: { width: '1100px', maxHeight: '90vh', maxWidth: '95vw' },
|
|
516
|
+
} satisfies MlvDialogSizePresets,
|
|
517
|
+
}
|
|
518
|
+
```
|
|
519
|
+
|
|
520
|
+
`mlv-dialog-pane--fullscreen` is stamped when the preset **name** is
|
|
521
|
+
`fullscreen` — an override that redefines or removes that preset still gets the
|
|
522
|
+
borderless, radius-less surface for that name; explicit `MlvDialogSizeConfig`
|
|
523
|
+
objects never get it.
|
|
524
|
+
|
|
525
|
+
---
|
|
526
|
+
|
|
527
|
+
## Styles
|
|
528
|
+
|
|
529
|
+
`ViewEncapsulation.None` throughout, so every class selector is global.
|
|
530
|
+
|
|
531
|
+
### DOM tree
|
|
532
|
+
|
|
533
|
+
```
|
|
534
|
+
.cdk-overlay-pane.mlv-dialog-pane[.mlv-dialog-pane--fullscreen] ← sized by the CDK from `size`
|
|
535
|
+
mlv-dialog-container.mlv-dialog-container[role][aria-*] ← focus trap + ARIA (dialog-container.scss)
|
|
536
|
+
(component host element, for component content) ← flex pass-through
|
|
537
|
+
mlv-dialog.mlv-dialog ← the visible surface (dialog.scss)
|
|
538
|
+
.mlv-dialog__header → .mlv-dialog__title / mlv-button-close.mlv-dialog__close
|
|
539
|
+
.mlv-dialog__body → .mlv-dialog__body-scrollbar (mlv-scrollbar)
|
|
540
|
+
.mlv-dialog__footer
|
|
541
|
+
.cdk-overlay-backdrop.mlv-dialog-backdrop[.mlv-dialog-backdrop--leaving]
|
|
542
|
+
```
|
|
543
|
+
|
|
544
|
+
### BEM
|
|
545
|
+
|
|
546
|
+
| Class | Role | Description |
|
|
547
|
+
| ------------------------------- | -------- | ------------------------------------------------------------------------------------------------------------------ |
|
|
548
|
+
| `.mlv-dialog` | Block | The surface: flex column, elevation background, border, modal shadow, clipped overflow, `md+` radius + height cap. |
|
|
549
|
+
| `.mlv-dialog--confirm` | Modifier | Removes the header/footer borders. |
|
|
550
|
+
| `.mlv-dialog--enter` | Modifier | Runs the `dialog-enter` keyframes. |
|
|
551
|
+
| `.mlv-dialog--leave` | Modifier | Runs the `dialog-leave` keyframes. |
|
|
552
|
+
| `.mlv-dialog__header` | Element | Title/close row: flex, `space-between`, `spacing-3` gap and padding, bottom border. |
|
|
553
|
+
| `.mlv-dialog__title` | Element | Title box; owns `margin: 0` explicitly, and normalises a projected `h1`–`h6` to `font: inherit; margin: 0`. |
|
|
554
|
+
| `.mlv-dialog__close` | Element | The X wrapper, `flex: none`. |
|
|
555
|
+
| `.mlv-dialog__body` | Element | Flexible clipped body host. |
|
|
556
|
+
| `.mlv-dialog__body-scrollbar` | Element | The `mlv-scrollbar` that owns body scrolling; its viewport carries the padding, its content is a flex column. |
|
|
557
|
+
| `.mlv-dialog__text` | Element | String-content paragraph: preserved newlines, safe long-word wrapping. |
|
|
558
|
+
| `.mlv-dialog__footer` | Element | Wrapping flex action row, `spacing-2` gap, `spacing-3` padding, top border, end-aligned. |
|
|
559
|
+
| `.mlv-dialog__footer--align-*` | Modifier | `start` / `center` / `between` (`end` is the base rule). |
|
|
560
|
+
| `.mlv-dialog-pane` | Block | Overlay pane (`dialog-container.scss`): `display: flex; max-inline-size: 100vw`. |
|
|
561
|
+
| `.mlv-dialog-pane--fullscreen` | Modifier | Drops the surface's `md+` radius, border and `calc(100dvh - 2rem)` cap so `size: 'fullscreen'` is edge-to-edge. |
|
|
562
|
+
| `.mlv-dialog-container` | Block | CDK container host: flex column, fills the pane, `outline: 0`; a non-`.mlv-dialog` child gets a flex pass-through. |
|
|
563
|
+
| `.mlv-dialog-backdrop` | Block | Backdrop. |
|
|
564
|
+
| `.mlv-dialog-backdrop--leaving` | Modifier | Fades opacity and blur back to zero. |
|
|
565
|
+
|
|
566
|
+
- **Keyframes** `dialog-enter` / `dialog-leave` and the `--enter` / `--leave` rules live in *(internal)*, gated behind `prefers-reduced-motion` there. Durations/easings are overridable through `--mlv-dialog-enter-*` / `--mlv-dialog-leave-*`.
|
|
567
|
+
- **Backdrop split:** the base look (`background`, `opacity`, `backdrop-filter`, transitions) is in *(internal)* under `@layer mlv.components`, because the backdrop is DOM the CDK creates and no component stylesheet owns it. The `@starting-style` entry and the `--leaving` state live in `dialog-container.scss`, which every dialog loads.
|
|
568
|
+
|
|
569
|
+
---
|
|
570
|
+
|
|
571
|
+
## Usage examples
|
|
572
|
+
|
|
573
|
+
### Declarative
|
|
574
|
+
|
|
575
|
+
```html
|
|
576
|
+
<button mlvButton (click)="open.set(true)">Open dialog</button>
|
|
577
|
+
|
|
578
|
+
<ng-template [(mlvDialog)]="open" (mlvDialogClosed)="onClosed($event)">
|
|
579
|
+
<mlv-dialog>
|
|
580
|
+
<mlv-dialog-header title="Dialog title" />
|
|
581
|
+
<mlv-dialog-body>
|
|
582
|
+
<p>Body content.</p>
|
|
583
|
+
</mlv-dialog-body>
|
|
584
|
+
<mlv-dialog-footer>
|
|
585
|
+
<button mlvButton variant="secondary" mlvDialogClose>Cancel</button>
|
|
586
|
+
<button mlvButton mlvDialogClose="confirmed">Confirm</button>
|
|
587
|
+
</mlv-dialog-footer>
|
|
588
|
+
</mlv-dialog>
|
|
589
|
+
</ng-template>
|
|
590
|
+
```
|
|
591
|
+
|
|
592
|
+
```ts
|
|
593
|
+
readonly open = signal(false);
|
|
594
|
+
|
|
595
|
+
/** `undefined` means dismissed (Escape, backdrop, or the X). */
|
|
596
|
+
onClosed(result: unknown): void {
|
|
597
|
+
this.lastResult.set(typeof result === 'string' ? result : 'dismissed');
|
|
598
|
+
}
|
|
599
|
+
```
|
|
600
|
+
|
|
601
|
+
### Confirm appearance (borderless, projected heading)
|
|
602
|
+
|
|
603
|
+
```html
|
|
604
|
+
<ng-template [(mlvDialog)]="open" [mlvDialogOptions]="{ size: 's', appearance: 'confirm' }">
|
|
605
|
+
<mlv-dialog>
|
|
606
|
+
<mlv-dialog-header><h4>Delete item?</h4></mlv-dialog-header>
|
|
607
|
+
<mlv-dialog-body><p>This action cannot be undone.</p></mlv-dialog-body>
|
|
608
|
+
<mlv-dialog-footer align="between">
|
|
609
|
+
<button mlvButton variant="secondary" mlvDialogClose>Cancel</button>
|
|
610
|
+
<button mlvButton variant="error" mlvDialogClose="deleted">Delete</button>
|
|
611
|
+
</mlv-dialog-footer>
|
|
612
|
+
</mlv-dialog>
|
|
613
|
+
</ng-template>
|
|
614
|
+
```
|
|
615
|
+
|
|
616
|
+
### Programmatic — string, template, component
|
|
617
|
+
|
|
618
|
+
```ts
|
|
619
|
+
private readonly dialogs = inject(MlvDialogService);
|
|
620
|
+
|
|
621
|
+
openString(): void {
|
|
622
|
+
this.dialogs.open('Your workspace settings have been saved.', {
|
|
623
|
+
size: 's',
|
|
624
|
+
title: 'Settings saved',
|
|
625
|
+
});
|
|
626
|
+
}
|
|
627
|
+
|
|
628
|
+
openTemplate(tpl: TemplateRef<MlvDialogTemplateContext<string, ProjectData>>): void {
|
|
629
|
+
this.dialogs
|
|
630
|
+
.open<string, ProjectData>(tpl, { title: 'Website redesign', data: { owner: 'Mina Park' } })
|
|
631
|
+
.afterClosed()
|
|
632
|
+
.subscribe((result) => {
|
|
633
|
+
/* string | undefined */
|
|
634
|
+
});
|
|
635
|
+
}
|
|
636
|
+
|
|
637
|
+
openComponent(): void {
|
|
638
|
+
this.dialogs.open<string, ProjectData>(ProjectDialogContent, {
|
|
639
|
+
title: 'Mobile app launch',
|
|
640
|
+
data: { owner: 'Alex Chen' },
|
|
641
|
+
});
|
|
642
|
+
}
|
|
643
|
+
```
|
|
644
|
+
|
|
645
|
+
```html
|
|
646
|
+
<!-- The template IS the content: it renders the surface itself. -->
|
|
647
|
+
<ng-template #tpl let-dialog let-data="data">
|
|
648
|
+
<mlv-dialog>
|
|
649
|
+
<mlv-dialog-header />
|
|
650
|
+
<!-- no title input, no projection → falls back to config.title -->
|
|
651
|
+
<mlv-dialog-body>
|
|
652
|
+
<p>Owner: {{ data.owner }}</p>
|
|
653
|
+
</mlv-dialog-body>
|
|
654
|
+
<mlv-dialog-footer>
|
|
655
|
+
<button mlvButton variant="secondary" (click)="dialog.close()">Dismiss</button>
|
|
656
|
+
<button mlvButton (click)="dialog.close('reviewed')">Mark reviewed</button>
|
|
657
|
+
</mlv-dialog-footer>
|
|
658
|
+
</mlv-dialog>
|
|
659
|
+
</ng-template>
|
|
660
|
+
```
|
|
661
|
+
|
|
662
|
+
Component content follows the same rule — its template root is `<mlv-dialog>`,
|
|
663
|
+
and it injects what it needs:
|
|
664
|
+
|
|
665
|
+
```ts
|
|
666
|
+
@Component({
|
|
667
|
+
imports: [MlvButton, MlvDialog, MlvDialogHeader, MlvDialogBody, MlvDialogFooter, MlvDialogClose],
|
|
668
|
+
template: `
|
|
669
|
+
<mlv-dialog>
|
|
670
|
+
<mlv-dialog-header />
|
|
671
|
+
<mlv-dialog-body>
|
|
672
|
+
<mlv-input [formControl]="name" />
|
|
673
|
+
</mlv-dialog-body>
|
|
674
|
+
<mlv-dialog-footer>
|
|
675
|
+
<button mlvButton variant="secondary" mlvDialogClose>Cancel</button>
|
|
676
|
+
<button mlvButton [mlvDialogClose]="name.value">Save</button>
|
|
677
|
+
</mlv-dialog-footer>
|
|
678
|
+
</mlv-dialog>
|
|
679
|
+
`,
|
|
680
|
+
})
|
|
681
|
+
export class EditNameDialog {
|
|
682
|
+
readonly data = inject(DIALOG_DATA) as EditData;
|
|
683
|
+
readonly config = inject(DIALOG_CONFIG);
|
|
684
|
+
private readonly ref = inject<MlvDialogRef<string, EditData>>(MlvDialogRef);
|
|
685
|
+
readonly name = new FormControl(this.data.initialName);
|
|
686
|
+
}
|
|
687
|
+
```
|
|
688
|
+
|
|
689
|
+
### `confirm()`
|
|
690
|
+
|
|
691
|
+
```ts
|
|
692
|
+
this.dialogs
|
|
693
|
+
.confirm({
|
|
694
|
+
title: 'Delete project?',
|
|
695
|
+
message: 'The project and all of its tasks are removed.',
|
|
696
|
+
confirmLabel: 'Delete project',
|
|
697
|
+
destructive: true,
|
|
698
|
+
})
|
|
699
|
+
.subscribe((confirmed) => {
|
|
700
|
+
if (confirmed) this.deleteProject();
|
|
701
|
+
});
|
|
702
|
+
```
|
|
703
|
+
|
|
704
|
+
### Route-driven
|
|
705
|
+
|
|
706
|
+
```ts
|
|
707
|
+
export default [
|
|
708
|
+
{
|
|
709
|
+
path: 'users',
|
|
710
|
+
component: UsersListPage,
|
|
711
|
+
children: [
|
|
712
|
+
mlvGenerateRoutableDialogRoute(() => import('./user-edit'), { path: ':id/edit', size: 'l' }),
|
|
713
|
+
{
|
|
714
|
+
...mlvGenerateRoutableDialogRoute(() => import('./confirm'), { path: 'confirm', size: 's' }),
|
|
715
|
+
canActivate: [authGuard],
|
|
716
|
+
resolve: { item: itemResolver },
|
|
717
|
+
},
|
|
718
|
+
],
|
|
719
|
+
},
|
|
720
|
+
] satisfies Routes;
|
|
721
|
+
```
|
|
722
|
+
|
|
723
|
+
The routed component renders the surface like any other component content and
|
|
724
|
+
can inject `ActivatedRoute` (the shell forwards its injector) plus
|
|
725
|
+
`MlvDialogRef`:
|
|
726
|
+
|
|
727
|
+
```ts
|
|
728
|
+
@Component({
|
|
729
|
+
imports: [MlvButton, MlvDialog, MlvDialogHeader, MlvDialogBody, MlvDialogFooter, MlvDialogClose],
|
|
730
|
+
template: `
|
|
731
|
+
<mlv-dialog>
|
|
732
|
+
<mlv-dialog-header title="Edit user" />
|
|
733
|
+
<mlv-dialog-body>…</mlv-dialog-body>
|
|
734
|
+
<mlv-dialog-footer><button mlvButton mlvDialogClose="saved">Save</button></mlv-dialog-footer>
|
|
735
|
+
</mlv-dialog>
|
|
736
|
+
`,
|
|
737
|
+
})
|
|
738
|
+
export default class UserEditDialog {
|
|
739
|
+
readonly route = inject(ActivatedRoute);
|
|
740
|
+
}
|
|
741
|
+
```
|
|
742
|
+
|
|
743
|
+
---
|
|
744
|
+
|
|
745
|
+
## Accessibility
|
|
746
|
+
|
|
747
|
+
- **Accessible name**, in order: `config.ariaLabelledBy` → `config.ariaLabel` (suppresses `aria-labelledby` entirely) → the `mlv-dialog-header` title id → the text of string content. A header without a rendered title registers nothing, so the dialog is never named by an empty element. A surface with no header title, no `config.title`, and no `ariaLabel`/`ariaLabelledBy` leaves the dialog **unnamed** (an axe `aria-dialog-name` violation) — always give a dialog one of them. The header registers/removes its title id as the dialog label whenever the rendered title gains/loses text (async titles are picked up); the id is unique per header instance.
|
|
748
|
+
- **Role:** `config.role`, `'dialog'` by default; `'alertdialog'` for interruptions that need an immediate answer — `confirm()` picks it automatically for a destructive/`'danger'` confirmation. Applied to `mlv-dialog-container`, not to the surface.
|
|
749
|
+
- **`aria-modal="false"`** on the container is CDK parity and deliberate: with `aria-modal="true"` assistive tech treats every node outside the container as inert, which would swallow select/menu popups the CDK renders as siblings of the dialog. The CDK `aria-hidden`s the rest of the page instead, which achieves modality without that side effect.
|
|
750
|
+
- **Focus in:** the CDK focuses the container first (so the page is hidden from AT), then `initialFocus` is applied. `'auto'` prefers a projected `[mlvAutofocus]`, then the first tabbable element that is **not** the close button or the body's scroll viewport, then the container.
|
|
751
|
+
- **Focus out:** `restoreFocus` (default `true`) returns focus to the element that was focused before the dialog opened.
|
|
752
|
+
- **Escape / backdrop:** both close by default and are independently opt-out-able (`closeOnEscape`, `closeOnBackdrop`); Escape with a modifier key is ignored. Either way the leave animation plays before disposal.
|
|
753
|
+
- **Keyboard:** focus is trapped by the CDK container; `[mlvDialogClose]` on a `<button>` inherits native Enter/Space activation.
|
|
754
|
+
- **Motion:** the enter/leave keyframes are gated behind `prefers-reduced-motion`, and the ref's 250 ms fallback timer guarantees disposal when no `animationend` ever arrives.
|
|
755
|
+
|
|
756
|
+
### Stacked dialogs and popups
|
|
757
|
+
|
|
758
|
+
Escape closes **one layer at a time**, and nothing here has to be coded for it.
|
|
759
|
+
The CDK's `OverlayKeyboardDispatcher` listens once on `body` and walks the
|
|
760
|
+
attached overlays from the top down, delivering the keydown to the **first**
|
|
761
|
+
overlay that has keydown observers and then stopping. Every CDK `DialogRef`
|
|
762
|
+
subscribes to its own overlay's keydowns, so a dialog opened on top of another
|
|
763
|
+
one is that first overlay: Escape reaches only the topmost dialog, and the one
|
|
764
|
+
below it stays open. The same rule covers popups — a `mlv-select`,
|
|
765
|
+
`mlv-combobox` or `mlv-menu` panel opened from inside a dialog is an overlay
|
|
766
|
+
above it, so Escape dismisses the popup and leaves the dialog open. The
|
|
767
|
+
"keydown observers" half of the rule matters just as much: an overlay without
|
|
768
|
+
keydown observers (e.g. the tooltip, which handles Escape on its trigger's host
|
|
769
|
+
instead) is transparent to Escape — the dialog below still receives it.
|
|
770
|
+
|
|
771
|
+
Because the topmost layer wins, `openDialogs` unwinds from its end: Escape,
|
|
772
|
+
then Escape again, closes newest-first — the same order `closeAll()` uses.
|
|
773
|
+
|
|
774
|
+
To gate a close (unsaved changes, a confirmation step), opt the automatic
|
|
775
|
+
behaviour out and drive it yourself from the ref's own streams — they emit only
|
|
776
|
+
when this dialog is the layer that received the event:
|
|
777
|
+
|
|
778
|
+
```ts
|
|
779
|
+
private readonly destroyRef = inject(DestroyRef);
|
|
780
|
+
private confirming = false;
|
|
781
|
+
|
|
782
|
+
// …in the method that opens the dialog — `takeUntilDestroyed()` is outside an
|
|
783
|
+
// injection context here, so it needs the DestroyRef passed explicitly.
|
|
784
|
+
const ref = this.dialogs.open(EditForm, { closeOnEscape: false, closeOnBackdrop: false });
|
|
785
|
+
|
|
786
|
+
// Two subscriptions rather than one merged stream: only the keydown one can
|
|
787
|
+
// `preventDefault()`.
|
|
788
|
+
ref
|
|
789
|
+
.keydownEvents()
|
|
790
|
+
.pipe(
|
|
791
|
+
filter((event) => event.key === 'Escape' && !hasModifierKey(event)),
|
|
792
|
+
takeUntil(ref.beforeClose()),
|
|
793
|
+
takeUntilDestroyed(this.destroyRef),
|
|
794
|
+
)
|
|
795
|
+
.subscribe((event) => {
|
|
796
|
+
event.preventDefault();
|
|
797
|
+
this.attemptClose(ref);
|
|
798
|
+
});
|
|
799
|
+
|
|
800
|
+
ref
|
|
801
|
+
.backdropClick()
|
|
802
|
+
.pipe(takeUntil(ref.beforeClose()), takeUntilDestroyed(this.destroyRef))
|
|
803
|
+
.subscribe(() => this.attemptClose(ref));
|
|
804
|
+
|
|
805
|
+
private attemptClose(ref: MlvDialogRef): void {
|
|
806
|
+
if (this.confirming) return;
|
|
807
|
+
if (this.form.pristine) return ref.close();
|
|
808
|
+
|
|
809
|
+
this.confirming = true;
|
|
810
|
+
this.dialogs
|
|
811
|
+
.confirm({ title: 'Discard changes?', message: 'Your edits are lost.' })
|
|
812
|
+
.pipe(takeUntilDestroyed(this.destroyRef))
|
|
813
|
+
.subscribe((yes) => {
|
|
814
|
+
this.confirming = false;
|
|
815
|
+
if (yes) ref.close();
|
|
816
|
+
});
|
|
817
|
+
}
|
|
818
|
+
```
|
|
819
|
+
|
|
820
|
+
`beforeClose()` emits synchronously when `close()` starts, so the guard disarms
|
|
821
|
+
before the leave animation — without it the subscriptions outlive the close by
|
|
822
|
+
one `animationend` (or the 250 ms fallback) and an Escape in that window opens
|
|
823
|
+
an orphan confirmation. The `confirming` flag covers the other re-entry: a
|
|
824
|
+
second exit attempt while the confirmation is already up.
|
|
825
|
+
|
|
826
|
+
---
|
|
827
|
+
|
|
828
|
+
## Testing
|
|
829
|
+
|
|
830
|
+
| Spec | Tests | Covers |
|
|
831
|
+
| --------------------------------------------- | ----- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
832
|
+
|
|
833
|
+
The routable dialog has no lib spec — it is covered by docs example 6 on
|
|
834
|
+
`/dialog` and by the docs build.
|
|
835
|
+
|
|
836
|
+
---
|
|
837
|
+
|
|
838
|
+
## Dependencies
|
|
839
|
+
|
|
840
|
+
| Package | Usage |
|
|
841
|
+
| -------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
842
|
+
| `@angular/cdk/dialog` | `Dialog` (engine), `DialogRef`, `DialogConfig`, `CdkDialogContainer` (base of `MlvDialogContainer`), `DIALOG_DATA`. |
|
|
843
|
+
| `@angular/cdk/portal` | `CdkPortalOutlet` in the container template, `ComponentType` in the service signature. |
|
|
844
|
+
| `@angular/cdk/coercion` | `coerceBooleanProperty` (`closable`), `coerceArray` (panel/backdrop classes), `coerceCssPixelValue` (sizes). |
|
|
845
|
+
| `@angular/cdk/keycodes` | `hasModifierKey` — Escape with a modifier does not close. |
|
|
846
|
+
| `@angular/router` | `Router`, `ActivatedRoute` in the routable-dialog shell. |
|
|
847
|
+
| `@malva-ui/cdk/overlay` | `MlvOverlayInitialFocusResolver`, `MlvOverlayInitialFocus` — the shared `initialFocus` strategy. Nothing else; the dialog no longer extends the overlay bases. |
|
|
848
|
+
| `@malva-ui/cdk/utils` | `MlvTone` in `MlvConfirmDialogOptions` and the confirm tone→variant record; `mlvNextId` for the header title id and the confirm message id. |
|
|
849
|
+
| `@malva-ui/core/button` | `MlvButtonClose` (the header X) and `MlvButton` (confirm actions). |
|
|
850
|
+
| `@malva-ui/core/scrollbar` | `MlvScrollbar` — the body's scroll viewport. |
|
|
851
|
+
| `@malva-ui/i18n` | `MLV_DIALOG_I18N` — `closeDialog`, `confirm`, `cancel`. |
|
|
852
|
+
| `rxjs` | `Subject`/`Observable` behind `beforeClose()`, `map`/`filter`/`shareReplay` in the service. |
|