@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,171 @@
|
|
|
1
|
+
import { coerceBooleanProperty } from '@angular/cdk/coercion';
|
|
2
|
+
import { afterNextRender, ChangeDetectionStrategy, Component, computed, effect, ElementRef, forwardRef, inject, input, model, signal, viewChild, ViewEncapsulation, } from '@angular/core';
|
|
3
|
+
import { MlvSignalFormControlBase, MLV_FORM_CONTROL, } from '@malva-ui/core/form-utils';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
function coerceTitleLevel(value) {
|
|
6
|
+
if (value === null || value === undefined || value === '') {
|
|
7
|
+
return undefined;
|
|
8
|
+
}
|
|
9
|
+
const parsed = Number(value);
|
|
10
|
+
if (!Number.isInteger(parsed) || parsed < 1 || parsed > 6) {
|
|
11
|
+
return undefined;
|
|
12
|
+
}
|
|
13
|
+
return parsed;
|
|
14
|
+
}
|
|
15
|
+
function inferTitleLevel(tagName) {
|
|
16
|
+
const match = /^h([1-6])$/.exec(tagName.toLowerCase());
|
|
17
|
+
return match ? Number(match[1]) : 2;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Inline title component that decorates the host element with Malva UI heading
|
|
21
|
+
* typography. It can render projected content, bind to a model, or act as an
|
|
22
|
+
* editable control through signal, reactive, and template-driven forms.
|
|
23
|
+
*/
|
|
24
|
+
export class MlvTitle extends MlvSignalFormControlBase {
|
|
25
|
+
/** Explicit visual title level. Falls back to the host heading tag. */
|
|
26
|
+
level = input(undefined, { ...(ngDevMode ? { debugName: "level" } : /* istanbul ignore next */ {}), transform: coerceTitleLevel });
|
|
27
|
+
/** Enables the auto-sizing editable textarea overlay. */
|
|
28
|
+
editable = input(false, { ...(ngDevMode ? { debugName: "editable" } : /* istanbul ignore next */ {}), transform: coerceBooleanProperty });
|
|
29
|
+
/** Placeholder displayed when the editable field is empty. */
|
|
30
|
+
placeholder = input('', /* @ts-ignore */
|
|
31
|
+
...(ngDevMode ? [{ debugName: "placeholder" }] : /* istanbul ignore next */ []));
|
|
32
|
+
/** Signal-model API for directly binding the title text. */
|
|
33
|
+
value = model(null, /* @ts-ignore */
|
|
34
|
+
...(ngDevMode ? [{ debugName: "value" }] : /* istanbul ignore next */ []));
|
|
35
|
+
/** @private Host element ref, used to read the host tag name for level inference. */
|
|
36
|
+
_hostElement = inject(ElementRef);
|
|
37
|
+
/** @private Reference to the projected-content span, used to hydrate text from projected content. */
|
|
38
|
+
_projectionElement = viewChild('projectionContent', /* @ts-ignore */
|
|
39
|
+
...(ngDevMode ? [{ debugName: "_projectionElement" }] : /* istanbul ignore next */ []));
|
|
40
|
+
/** @private Trimmed text extracted from projected content. */
|
|
41
|
+
_projectedText = signal('', /* @ts-ignore */
|
|
42
|
+
...(ngDevMode ? [{ debugName: "_projectedText" }] : /* istanbul ignore next */ []));
|
|
43
|
+
/** @private Whether the component is currently driven by its internal editable value. */
|
|
44
|
+
_usesInternalValue = signal(false, /* @ts-ignore */
|
|
45
|
+
...(ngDevMode ? [{ debugName: "_usesInternalValue" }] : /* istanbul ignore next */ []));
|
|
46
|
+
/** @private Tracks whether internal state was last synced from an external `value`. */
|
|
47
|
+
_syncedFromExternalValue = false;
|
|
48
|
+
/** @protected Whether the host element is a native `h1`–`h6` heading. */
|
|
49
|
+
_isNativeHeading = computed(() => /^h[1-6]$/.test(this._hostTagName), /* @ts-ignore */
|
|
50
|
+
...(ngDevMode ? [{ debugName: "_isNativeHeading" }] : /* istanbul ignore next */ []));
|
|
51
|
+
/** @protected Resolved visual heading level — explicit `level` input or inferred from the host tag. */
|
|
52
|
+
_resolvedLevel = computed(() => this.level() ?? inferTitleLevel(this._hostTagName), /* @ts-ignore */
|
|
53
|
+
...(ngDevMode ? [{ debugName: "_resolvedLevel" }] : /* istanbul ignore next */ []));
|
|
54
|
+
/** @protected The effective title text: bound `value`, internal editable value, or projected content. */
|
|
55
|
+
currentText = computed(() => {
|
|
56
|
+
const explicitValue = this.value();
|
|
57
|
+
if (explicitValue !== null && explicitValue !== undefined) {
|
|
58
|
+
return explicitValue;
|
|
59
|
+
}
|
|
60
|
+
if (this._usesInternalValue()) {
|
|
61
|
+
return this.internalValue();
|
|
62
|
+
}
|
|
63
|
+
return this._projectedText();
|
|
64
|
+
}, /* @ts-ignore */
|
|
65
|
+
...(ngDevMode ? [{ debugName: "currentText" }] : /* istanbul ignore next */ []));
|
|
66
|
+
/** @protected Whether the projected `<ng-content>` should be shown (no value, not editable). */
|
|
67
|
+
showProjectedContent = computed(() => !this.editable() &&
|
|
68
|
+
!this._usesInternalValue() &&
|
|
69
|
+
(this.value() === null || this.value() === undefined), /* @ts-ignore */
|
|
70
|
+
...(ngDevMode ? [{ debugName: "showProjectedContent" }] : /* istanbul ignore next */ []));
|
|
71
|
+
/** @protected Whether the bound value text should be shown (not editable, not projected). */
|
|
72
|
+
showValueText = computed(() => !this.editable() && !this.showProjectedContent(), /* @ts-ignore */
|
|
73
|
+
...(ngDevMode ? [{ debugName: "showValueText" }] : /* istanbul ignore next */ []));
|
|
74
|
+
/** @protected Sizing text for the editable `<pre>` mirror (trailing newline keeps a blank line tall). */
|
|
75
|
+
editorMeasureText = computed(() => {
|
|
76
|
+
const text = this.currentText() || this.placeholder();
|
|
77
|
+
return text ? `${text}\n` : ' ';
|
|
78
|
+
}, /* @ts-ignore */
|
|
79
|
+
...(ngDevMode ? [{ debugName: "editorMeasureText" }] : /* istanbul ignore next */ []));
|
|
80
|
+
/** @protected Whether the editable field is empty and a placeholder should be shown. */
|
|
81
|
+
editorShowsPlaceholder = computed(() => !this.currentText() && !!this.placeholder(), /* @ts-ignore */
|
|
82
|
+
...(ngDevMode ? [{ debugName: "editorShowsPlaceholder" }] : /* istanbul ignore next */ []));
|
|
83
|
+
/** @protected Current value bound to the editable `<textarea>`. */
|
|
84
|
+
textareaValue = computed(() => this.currentText(), /* @ts-ignore */
|
|
85
|
+
...(ngDevMode ? [{ debugName: "textareaValue" }] : /* istanbul ignore next */ []));
|
|
86
|
+
/** Internal text state used by editable mode and forms APIs. */
|
|
87
|
+
internalValue = signal('', /* @ts-ignore */
|
|
88
|
+
...(ngDevMode ? [{ debugName: "internalValue" }] : /* istanbul ignore next */ []));
|
|
89
|
+
/** @private The lowercased tag name of the host element (e.g. `h2`, `div`). */
|
|
90
|
+
get _hostTagName() {
|
|
91
|
+
return this._hostElement.nativeElement.tagName.toLowerCase();
|
|
92
|
+
}
|
|
93
|
+
constructor() {
|
|
94
|
+
super();
|
|
95
|
+
effect(() => {
|
|
96
|
+
const externalValue = this.value();
|
|
97
|
+
if (externalValue === null || externalValue === undefined) {
|
|
98
|
+
if (this._syncedFromExternalValue) {
|
|
99
|
+
this.internalValue.set('');
|
|
100
|
+
this._usesInternalValue.set(false);
|
|
101
|
+
}
|
|
102
|
+
this._syncedFromExternalValue = false;
|
|
103
|
+
return;
|
|
104
|
+
}
|
|
105
|
+
this._syncedFromExternalValue = true;
|
|
106
|
+
this.internalValue.set(externalValue);
|
|
107
|
+
this._usesInternalValue.set(true);
|
|
108
|
+
});
|
|
109
|
+
afterNextRender(() => {
|
|
110
|
+
this._hydrateProjectedText();
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
/** Handles interactive edits from the textarea overlay. */
|
|
114
|
+
onInput(event) {
|
|
115
|
+
const value = event.target.value;
|
|
116
|
+
this.internalValue.set(value);
|
|
117
|
+
this._usesInternalValue.set(true);
|
|
118
|
+
// The `value` model is the signal-forms transport: setting it propagates
|
|
119
|
+
// the edit to the bound field ([formField]/[formControl]/ngModel).
|
|
120
|
+
this.value.set(value);
|
|
121
|
+
}
|
|
122
|
+
/** Tracks focus state for form-field styling. */
|
|
123
|
+
onFocus() {
|
|
124
|
+
this.setFocused(true);
|
|
125
|
+
}
|
|
126
|
+
/** Tracks blur state for form-field styling and touched state. */
|
|
127
|
+
onBlur() {
|
|
128
|
+
this.setFocused(false);
|
|
129
|
+
this._markTouched();
|
|
130
|
+
}
|
|
131
|
+
/** Whether the control holds a clearable value — Non-empty text present. */
|
|
132
|
+
hasValue = computed(() => this.internalValue().length > 0, /* @ts-ignore */
|
|
133
|
+
...(ngDevMode ? [{ debugName: "hasValue" }] : /* istanbul ignore next */ []));
|
|
134
|
+
/** @private Reads projected text after render and seeds the editable value from it when appropriate. */
|
|
135
|
+
_hydrateProjectedText() {
|
|
136
|
+
const projectedText = this._projectionElement()?.nativeElement.textContent?.trim() ?? '';
|
|
137
|
+
this._projectedText.set(projectedText);
|
|
138
|
+
if (this.editable() &&
|
|
139
|
+
!this._usesInternalValue() &&
|
|
140
|
+
(this.value() === null || this.value() === undefined) &&
|
|
141
|
+
projectedText) {
|
|
142
|
+
this.internalValue.set(projectedText);
|
|
143
|
+
this._usesInternalValue.set(true);
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: MlvTitle, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
147
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.7", type: MlvTitle, isStandalone: true, selector: "[mlvTitle]", inputs: { level: { classPropertyName: "level", publicName: "level", isSignal: true, isRequired: false, transformFunction: null }, editable: { classPropertyName: "editable", publicName: "editable", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { value: "valueChange" }, host: { properties: { "attr.data-level": "_resolvedLevel()", "attr.role": "_isNativeHeading() ? null : \"heading\"", "attr.aria-level": "_isNativeHeading() ? null : _resolvedLevel()", "class.mlv-title--editable": "editable()", "class.mlv-title--disabled": "computedDisabled()", "class.mlv-title--focused": "focused()" }, classAttribute: "mlv-title" }, providers: [
|
|
148
|
+
{
|
|
149
|
+
provide: MLV_FORM_CONTROL,
|
|
150
|
+
useExisting: forwardRef(() => MlvTitle),
|
|
151
|
+
},
|
|
152
|
+
], viewQueries: [{ propertyName: "_projectionElement", first: true, predicate: ["projectionContent"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<span\n #projectionContent\n class=\"mlv-title__projection\"\n [class.mlv-title__projection--hidden]=\"!showProjectedContent()\"\n [attr.aria-hidden]=\"showProjectedContent() ? null : 'true'\"\n>\n <ng-content />\n</span>\n\n@if (showValueText()) {\n<span class=\"mlv-title__value\">{{ currentText() }}</span>\n} @if (editable()) {\n<span class=\"mlv-title__editor\">\n <pre\n class=\"mlv-title__pre\"\n [class.mlv-title__pre--placeholder]=\"editorShowsPlaceholder()\"\n aria-hidden=\"true\"\n >\n{{ editorMeasureText() }}</pre\n >\n <textarea\n class=\"mlv-title__textarea\"\n rows=\"1\"\n [value]=\"textareaValue()\"\n [placeholder]=\"placeholder()\"\n [readonly]=\"readonly()\"\n [disabled]=\"computedDisabled()\"\n [attr.aria-label]=\"ariaLabel()\"\n [attr.aria-required]=\"required() || null\"\n (input)=\"onInput($event)\"\n (focus)=\"onFocus()\"\n (blur)=\"onBlur()\"\n ></textarea>\n</span>\n}\n", styles: [".mlv-title{margin:0;color:var(--mlv-text-primary)}.mlv-title[data-level=\"1\"]{font-size:var(--mlv-typography-heading-h1-size);font-weight:var(--mlv-typography-heading-h1-weight);line-height:var(--mlv-typography-heading-h1-line-height);letter-spacing:var(--mlv-typography-heading-h1-letter-spacing)}.mlv-title[data-level=\"2\"]{font-size:var(--mlv-typography-heading-h2-size);font-weight:var(--mlv-typography-heading-h2-weight);line-height:var(--mlv-typography-heading-h2-line-height);letter-spacing:var(--mlv-typography-heading-h2-letter-spacing)}.mlv-title[data-level=\"3\"]{font-size:var(--mlv-typography-heading-h3-size);font-weight:var(--mlv-typography-heading-h3-weight);line-height:var(--mlv-typography-heading-h3-line-height);letter-spacing:var(--mlv-letter-spacing-normal)}.mlv-title[data-level=\"4\"]{font-size:var(--mlv-typography-heading-h4-size);font-weight:var(--mlv-typography-heading-h4-weight);line-height:var(--mlv-typography-heading-h4-line-height);letter-spacing:var(--mlv-letter-spacing-normal)}.mlv-title[data-level=\"5\"]{font-size:var(--mlv-typography-heading-h5-size);font-weight:var(--mlv-typography-heading-h5-weight);line-height:var(--mlv-typography-heading-h5-line-height);letter-spacing:var(--mlv-letter-spacing-normal)}.mlv-title[data-level=\"6\"]{font-size:var(--mlv-typography-heading-h6-size);font-weight:var(--mlv-typography-heading-h6-weight);line-height:var(--mlv-typography-heading-h6-line-height);letter-spacing:var(--mlv-letter-spacing-normal)}.mlv-title--editable{display:block}.mlv-title__projection--hidden{display:none}.mlv-title__value,.mlv-title__projection,.mlv-title__editor,.mlv-title__pre,.mlv-title__textarea{font:inherit;letter-spacing:inherit;line-height:inherit}.mlv-title__value,.mlv-title__projection{white-space:pre-wrap;overflow-wrap:anywhere}.mlv-title__editor{display:grid;align-items:start}.mlv-title__pre,.mlv-title__textarea{grid-area:1/1;margin:0;min-width:0;white-space:pre-wrap;overflow-wrap:anywhere}.mlv-title__pre{pointer-events:none;color:var(--mlv-text-primary)}.mlv-title__pre--placeholder{color:var(--mlv-text-secondary)}.mlv-title__textarea{width:100%;min-height:1lh;padding:0;border:0;background:transparent;color:transparent;caret-color:var(--mlv-text-primary);border-radius:0;resize:none;overflow:hidden;outline:none;box-shadow:none;field-sizing:content;appearance:none;transition:outline-color var(--mlv-duration-slow) var(--mlv-ease-out),outline-offset var(--mlv-duration-slow) var(--mlv-ease-out)}.mlv-title__textarea::placeholder{color:var(--mlv-text-tertiary)}.mlv-title__textarea:disabled{cursor:not-allowed}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
153
|
+
}
|
|
154
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: MlvTitle, decorators: [{
|
|
155
|
+
type: Component,
|
|
156
|
+
args: [{ selector: '[mlvTitle]', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [
|
|
157
|
+
{
|
|
158
|
+
provide: MLV_FORM_CONTROL,
|
|
159
|
+
useExisting: forwardRef(() => MlvTitle),
|
|
160
|
+
},
|
|
161
|
+
], host: {
|
|
162
|
+
class: 'mlv-title',
|
|
163
|
+
'[attr.data-level]': '_resolvedLevel()',
|
|
164
|
+
'[attr.role]': '_isNativeHeading() ? null : "heading"',
|
|
165
|
+
'[attr.aria-level]': '_isNativeHeading() ? null : _resolvedLevel()',
|
|
166
|
+
'[class.mlv-title--editable]': 'editable()',
|
|
167
|
+
'[class.mlv-title--disabled]': 'computedDisabled()',
|
|
168
|
+
'[class.mlv-title--focused]': 'focused()',
|
|
169
|
+
}, template: "<span\n #projectionContent\n class=\"mlv-title__projection\"\n [class.mlv-title__projection--hidden]=\"!showProjectedContent()\"\n [attr.aria-hidden]=\"showProjectedContent() ? null : 'true'\"\n>\n <ng-content />\n</span>\n\n@if (showValueText()) {\n<span class=\"mlv-title__value\">{{ currentText() }}</span>\n} @if (editable()) {\n<span class=\"mlv-title__editor\">\n <pre\n class=\"mlv-title__pre\"\n [class.mlv-title__pre--placeholder]=\"editorShowsPlaceholder()\"\n aria-hidden=\"true\"\n >\n{{ editorMeasureText() }}</pre\n >\n <textarea\n class=\"mlv-title__textarea\"\n rows=\"1\"\n [value]=\"textareaValue()\"\n [placeholder]=\"placeholder()\"\n [readonly]=\"readonly()\"\n [disabled]=\"computedDisabled()\"\n [attr.aria-label]=\"ariaLabel()\"\n [attr.aria-required]=\"required() || null\"\n (input)=\"onInput($event)\"\n (focus)=\"onFocus()\"\n (blur)=\"onBlur()\"\n ></textarea>\n</span>\n}\n", styles: [".mlv-title{margin:0;color:var(--mlv-text-primary)}.mlv-title[data-level=\"1\"]{font-size:var(--mlv-typography-heading-h1-size);font-weight:var(--mlv-typography-heading-h1-weight);line-height:var(--mlv-typography-heading-h1-line-height);letter-spacing:var(--mlv-typography-heading-h1-letter-spacing)}.mlv-title[data-level=\"2\"]{font-size:var(--mlv-typography-heading-h2-size);font-weight:var(--mlv-typography-heading-h2-weight);line-height:var(--mlv-typography-heading-h2-line-height);letter-spacing:var(--mlv-typography-heading-h2-letter-spacing)}.mlv-title[data-level=\"3\"]{font-size:var(--mlv-typography-heading-h3-size);font-weight:var(--mlv-typography-heading-h3-weight);line-height:var(--mlv-typography-heading-h3-line-height);letter-spacing:var(--mlv-letter-spacing-normal)}.mlv-title[data-level=\"4\"]{font-size:var(--mlv-typography-heading-h4-size);font-weight:var(--mlv-typography-heading-h4-weight);line-height:var(--mlv-typography-heading-h4-line-height);letter-spacing:var(--mlv-letter-spacing-normal)}.mlv-title[data-level=\"5\"]{font-size:var(--mlv-typography-heading-h5-size);font-weight:var(--mlv-typography-heading-h5-weight);line-height:var(--mlv-typography-heading-h5-line-height);letter-spacing:var(--mlv-letter-spacing-normal)}.mlv-title[data-level=\"6\"]{font-size:var(--mlv-typography-heading-h6-size);font-weight:var(--mlv-typography-heading-h6-weight);line-height:var(--mlv-typography-heading-h6-line-height);letter-spacing:var(--mlv-letter-spacing-normal)}.mlv-title--editable{display:block}.mlv-title__projection--hidden{display:none}.mlv-title__value,.mlv-title__projection,.mlv-title__editor,.mlv-title__pre,.mlv-title__textarea{font:inherit;letter-spacing:inherit;line-height:inherit}.mlv-title__value,.mlv-title__projection{white-space:pre-wrap;overflow-wrap:anywhere}.mlv-title__editor{display:grid;align-items:start}.mlv-title__pre,.mlv-title__textarea{grid-area:1/1;margin:0;min-width:0;white-space:pre-wrap;overflow-wrap:anywhere}.mlv-title__pre{pointer-events:none;color:var(--mlv-text-primary)}.mlv-title__pre--placeholder{color:var(--mlv-text-secondary)}.mlv-title__textarea{width:100%;min-height:1lh;padding:0;border:0;background:transparent;color:transparent;caret-color:var(--mlv-text-primary);border-radius:0;resize:none;overflow:hidden;outline:none;box-shadow:none;field-sizing:content;appearance:none;transition:outline-color var(--mlv-duration-slow) var(--mlv-ease-out),outline-offset var(--mlv-duration-slow) var(--mlv-ease-out)}.mlv-title__textarea::placeholder{color:var(--mlv-text-tertiary)}.mlv-title__textarea:disabled{cursor:not-allowed}\n"] }]
|
|
170
|
+
}], ctorParameters: () => [], propDecorators: { level: [{ type: i0.Input, args: [{ isSignal: true, alias: "level", required: false }] }], editable: [{ type: i0.Input, args: [{ isSignal: true, alias: "editable", required: false }] }], placeholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "placeholder", required: false }] }], value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }, { type: i0.Output, args: ["valueChange"] }], _projectionElement: [{ type: i0.ViewChild, args: ['projectionContent', { isSignal: true }] }] } });
|
|
171
|
+
//# sourceMappingURL=title.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"title.js","sourceRoot":"","sources":["../../../../../../../libs/core/title/src/lib/title/title.ts","../../../../../../../libs/core/title/src/lib/title/title.html"],"names":[],"mappings":"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","sourcesContent":["import type { BooleanInput } from '@angular/cdk/coercion';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport {\n afterNextRender,\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n ElementRef,\n forwardRef,\n inject,\n input,\n model,\n signal,\n viewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport type { MlvFormControl } from '@malva-ui/core/form-utils';\nimport {\n MlvSignalFormControlBase,\n MLV_FORM_CONTROL,\n} from '@malva-ui/core/form-utils';\n\nexport type MlvTitleLevel = 1 | 2 | 3 | 4 | 5 | 6;\n\nfunction coerceTitleLevel(\n value: MlvTitleLevel | string | number | null | undefined,\n): MlvTitleLevel | undefined {\n if (value === null || value === undefined || value === '') {\n return undefined;\n }\n\n const parsed = Number(value);\n if (!Number.isInteger(parsed) || parsed < 1 || parsed > 6) {\n return undefined;\n }\n\n return parsed as MlvTitleLevel;\n}\n\nfunction inferTitleLevel(tagName: string): MlvTitleLevel {\n const match = /^h([1-6])$/.exec(tagName.toLowerCase());\n return match ? (Number(match[1]) as MlvTitleLevel) : 2;\n}\n\n/**\n * Inline title component that decorates the host element with Malva UI heading\n * typography. It can render projected content, bind to a model, or act as an\n * editable control through signal, reactive, and template-driven forms.\n */\n@Component({\n // Attribute-selector component — camelCase [mlvX] is the documented pattern\n // (see .claude/rules/angular-component.md); the rule only models kebab-case.\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: '[mlvTitle]',\n templateUrl: './title.html',\n styleUrl: './title.scss',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: MLV_FORM_CONTROL,\n useExisting: forwardRef(() => MlvTitle),\n },\n ],\n host: {\n class: 'mlv-title',\n '[attr.data-level]': '_resolvedLevel()',\n '[attr.role]': '_isNativeHeading() ? null : \"heading\"',\n '[attr.aria-level]': '_isNativeHeading() ? null : _resolvedLevel()',\n '[class.mlv-title--editable]': 'editable()',\n '[class.mlv-title--disabled]': 'computedDisabled()',\n '[class.mlv-title--focused]': 'focused()',\n },\n})\nexport class MlvTitle\n extends MlvSignalFormControlBase<string | null>\n implements MlvFormControl\n{\n /** Explicit visual title level. Falls back to the host heading tag. */\n readonly level = input<\n MlvTitleLevel | undefined,\n MlvTitleLevel | string | number | null | undefined\n >(undefined, {\n transform: coerceTitleLevel,\n });\n\n /** Enables the auto-sizing editable textarea overlay. */\n readonly editable = input<boolean, BooleanInput>(false, {\n transform: coerceBooleanProperty,\n });\n\n /** Placeholder displayed when the editable field is empty. */\n readonly placeholder = input('');\n\n /** Signal-model API for directly binding the title text. */\n readonly value = model<string | null>(null);\n\n /** @private Host element ref, used to read the host tag name for level inference. */\n private readonly _hostElement = inject<ElementRef<HTMLElement>>(ElementRef);\n /** @private Reference to the projected-content span, used to hydrate text from projected content. */\n private readonly _projectionElement =\n viewChild<ElementRef<HTMLElement>>('projectionContent');\n /** @private Trimmed text extracted from projected content. */\n private readonly _projectedText = signal('');\n /** @private Whether the component is currently driven by its internal editable value. */\n private readonly _usesInternalValue = signal(false);\n /** @private Tracks whether internal state was last synced from an external `value`. */\n private _syncedFromExternalValue = false;\n\n /** @protected Whether the host element is a native `h1`–`h6` heading. */\n protected readonly _isNativeHeading = computed(() =>\n /^h[1-6]$/.test(this._hostTagName),\n );\n /** @protected Resolved visual heading level — explicit `level` input or inferred from the host tag. */\n protected readonly _resolvedLevel = computed<MlvTitleLevel>(\n () => this.level() ?? inferTitleLevel(this._hostTagName),\n );\n /** @protected The effective title text: bound `value`, internal editable value, or projected content. */\n protected readonly currentText = computed(() => {\n const explicitValue = this.value();\n if (explicitValue !== null && explicitValue !== undefined) {\n return explicitValue;\n }\n\n if (this._usesInternalValue()) {\n return this.internalValue();\n }\n\n return this._projectedText();\n });\n /** @protected Whether the projected `<ng-content>` should be shown (no value, not editable). */\n protected readonly showProjectedContent = computed(\n () =>\n !this.editable() &&\n !this._usesInternalValue() &&\n (this.value() === null || this.value() === undefined),\n );\n /** @protected Whether the bound value text should be shown (not editable, not projected). */\n protected readonly showValueText = computed(\n () => !this.editable() && !this.showProjectedContent(),\n );\n /** @protected Sizing text for the editable `<pre>` mirror (trailing newline keeps a blank line tall). */\n protected readonly editorMeasureText = computed(() => {\n const text = this.currentText() || this.placeholder();\n return text ? `${text}\\n` : ' ';\n });\n /** @protected Whether the editable field is empty and a placeholder should be shown. */\n protected readonly editorShowsPlaceholder = computed(\n () => !this.currentText() && !!this.placeholder(),\n );\n /** @protected Current value bound to the editable `<textarea>`. */\n protected readonly textareaValue = computed(() => this.currentText());\n\n /** Internal text state used by editable mode and forms APIs. */\n readonly internalValue = signal('');\n\n /** @private The lowercased tag name of the host element (e.g. `h2`, `div`). */\n private get _hostTagName(): string {\n return this._hostElement.nativeElement.tagName.toLowerCase();\n }\n\n constructor() {\n super();\n\n effect(() => {\n const externalValue = this.value();\n\n if (externalValue === null || externalValue === undefined) {\n if (this._syncedFromExternalValue) {\n this.internalValue.set('');\n this._usesInternalValue.set(false);\n }\n\n this._syncedFromExternalValue = false;\n return;\n }\n\n this._syncedFromExternalValue = true;\n this.internalValue.set(externalValue);\n this._usesInternalValue.set(true);\n });\n\n afterNextRender(() => {\n this._hydrateProjectedText();\n });\n }\n\n /** Handles interactive edits from the textarea overlay. */\n onInput(event: Event): void {\n const value = (event.target as HTMLTextAreaElement).value;\n this.internalValue.set(value);\n this._usesInternalValue.set(true);\n // The `value` model is the signal-forms transport: setting it propagates\n // the edit to the bound field ([formField]/[formControl]/ngModel).\n this.value.set(value);\n }\n\n /** Tracks focus state for form-field styling. */\n onFocus(): void {\n this.setFocused(true);\n }\n\n /** Tracks blur state for form-field styling and touched state. */\n onBlur(): void {\n this.setFocused(false);\n this._markTouched();\n }\n\n /** Whether the control holds a clearable value — Non-empty text present. */\n readonly hasValue = computed(() => this.internalValue().length > 0);\n\n /** @private Reads projected text after render and seeds the editable value from it when appropriate. */\n private _hydrateProjectedText(): void {\n const projectedText =\n this._projectionElement()?.nativeElement.textContent?.trim() ?? '';\n\n this._projectedText.set(projectedText);\n\n if (\n this.editable() &&\n !this._usesInternalValue() &&\n (this.value() === null || this.value() === undefined) &&\n projectedText\n ) {\n this.internalValue.set(projectedText);\n this._usesInternalValue.set(true);\n }\n }\n}\n","<span\n #projectionContent\n class=\"mlv-title__projection\"\n [class.mlv-title__projection--hidden]=\"!showProjectedContent()\"\n [attr.aria-hidden]=\"showProjectedContent() ? null : 'true'\"\n>\n <ng-content />\n</span>\n\n@if (showValueText()) {\n<span class=\"mlv-title__value\">{{ currentText() }}</span>\n} @if (editable()) {\n<span class=\"mlv-title__editor\">\n <pre\n class=\"mlv-title__pre\"\n [class.mlv-title__pre--placeholder]=\"editorShowsPlaceholder()\"\n aria-hidden=\"true\"\n >\n{{ editorMeasureText() }}</pre\n >\n <textarea\n class=\"mlv-title__textarea\"\n rows=\"1\"\n [value]=\"textareaValue()\"\n [placeholder]=\"placeholder()\"\n [readonly]=\"readonly()\"\n [disabled]=\"computedDisabled()\"\n [attr.aria-label]=\"ariaLabel()\"\n [attr.aria-required]=\"required() || null\"\n (input)=\"onInput($event)\"\n (focus)=\"onFocus()\"\n (blur)=\"onBlur()\"\n ></textarea>\n</span>\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"malva-ui-core-title.js","sourceRoot":"","sources":["../../../../../libs/core/title/src/malva-ui-core-title.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,SAAS,CAAC","sourcesContent":["/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"]}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
// Public API — shared base (re-exported for @malva-ui/notification to extend)
|
|
2
|
+
export * from './lib/toast.types';
|
|
3
|
+
export * from './lib/toast-ref';
|
|
4
|
+
export * from './lib/toast-timer';
|
|
5
|
+
export * from './lib/abstract-toast-container';
|
|
6
|
+
export * from './lib/abstract-toast.service';
|
|
7
|
+
export * from './lib/abstract-toast-item';
|
|
8
|
+
// Toast-specific exports
|
|
9
|
+
export * from './lib/toast-item/toast-item';
|
|
10
|
+
export * from './lib/toast-container/toast-container';
|
|
11
|
+
export * from './lib/toast.service';
|
|
12
|
+
export * from './lib/toast.directives';
|
|
13
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../libs/core/toast/src/index.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,2BAA2B,CAAC;AAE1C,yBAAyB;AACzB,cAAc,6BAA6B,CAAC;AAC5C,cAAc,uCAAuC,CAAC;AACtD,cAAc,qBAAqB,CAAC;AACpC,cAAc,wBAAwB,CAAC","sourcesContent":["// Public API — shared base (re-exported for @malva-ui/notification to extend)\nexport * from './lib/toast.types';\nexport * from './lib/toast-ref';\nexport * from './lib/toast-timer';\nexport * from './lib/abstract-toast-container';\nexport * from './lib/abstract-toast.service';\nexport * from './lib/abstract-toast-item';\n\n// Toast-specific exports\nexport * from './lib/toast-item/toast-item';\nexport * from './lib/toast-container/toast-container';\nexport * from './lib/toast.service';\nexport * from './lib/toast.directives';\n"]}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { Directive, signal } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
/**
|
|
4
|
+
* Abstract base for toast/notification container components.
|
|
5
|
+
* Manages the ordered list of active items for a single overlay position.
|
|
6
|
+
* Extend this class and add the @Component decorator to create a concrete container.
|
|
7
|
+
*/
|
|
8
|
+
export class MlvAbstractToastContainerComponent {
|
|
9
|
+
/** The overlay position this container is responsible for. Set by the service. */
|
|
10
|
+
position = signal('top-right', /* @ts-ignore */
|
|
11
|
+
...(ngDevMode ? [{ debugName: "position" }] : /* istanbul ignore next */ []));
|
|
12
|
+
toasts = signal([], /* @ts-ignore */
|
|
13
|
+
...(ngDevMode ? [{ debugName: "toasts" }] : /* istanbul ignore next */ []));
|
|
14
|
+
/** @private Service-owned callback used by every item close source. */
|
|
15
|
+
_closeHandler = (id) => {
|
|
16
|
+
this.remove(id);
|
|
17
|
+
};
|
|
18
|
+
add(item) {
|
|
19
|
+
const isTop = this.position().startsWith('top');
|
|
20
|
+
this.toasts.update((ts) => (isTop ? [item, ...ts] : [...ts, item]));
|
|
21
|
+
}
|
|
22
|
+
remove(id) {
|
|
23
|
+
const exists = this.toasts().some((toast) => toast.id === id);
|
|
24
|
+
if (!exists) {
|
|
25
|
+
return false;
|
|
26
|
+
}
|
|
27
|
+
this.toasts.update((ts) => ts.filter((t) => t.id !== id));
|
|
28
|
+
return true;
|
|
29
|
+
}
|
|
30
|
+
isEmpty() {
|
|
31
|
+
return this.toasts().length === 0;
|
|
32
|
+
}
|
|
33
|
+
setComponent(component) {
|
|
34
|
+
this.component = component;
|
|
35
|
+
}
|
|
36
|
+
/** Registers the service-owned close callback for timer, action, and dismiss-button requests. */
|
|
37
|
+
setCloseHandler(handler) {
|
|
38
|
+
this._closeHandler = handler;
|
|
39
|
+
}
|
|
40
|
+
/** @protected Routes an item close request through the owning service. */
|
|
41
|
+
requestClose(id) {
|
|
42
|
+
this._closeHandler(id);
|
|
43
|
+
}
|
|
44
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: MlvAbstractToastContainerComponent, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
45
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.7", type: MlvAbstractToastContainerComponent, isStandalone: true, ngImport: i0 });
|
|
46
|
+
}
|
|
47
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: MlvAbstractToastContainerComponent, decorators: [{
|
|
48
|
+
type: Directive
|
|
49
|
+
}] });
|
|
50
|
+
//# sourceMappingURL=abstract-toast-container.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"abstract-toast-container.js","sourceRoot":"","sources":["../../../../../../libs/core/toast/src/lib/abstract-toast-container.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;;AASlD;;;;GAIG;AAEH,MAAM,OAAgB,kCAAkC;IAGtD,kFAAkF;IACzE,QAAQ,GAAG,MAAM,CAAmB,WAAW;iFAAC,CAAC;IACjD,MAAM,GAAG,MAAM,CAAM,EAAE;+EAAC,CAAC;IAIlC,uEAAuE;IAC/D,aAAa,GAAG,CAAC,EAAU,EAAQ,EAAE;QAC3C,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC,CAAC;IAEF,GAAG,CAAC,IAAO;QACT,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QAChD,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;IACtE,CAAC;IAED,MAAM,CAAC,EAAU;QACf,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;QAC9D,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,KAAK,CAAC;QACf,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;QAC1D,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO;QACL,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC,MAAM,KAAK,CAAC,CAAC;IACpC,CAAC;IAED,YAAY,CAAC,SAA2C;QACtD,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;IAED,iGAAiG;IACjG,eAAe,CAAC,OAA6B;QAC3C,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC;IAC/B,CAAC;IAED,0EAA0E;IAChE,YAAY,CAAC,EAAU;QAC/B,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;IACzB,CAAC;uGA5CmB,kCAAkC;2FAAlC,kCAAkC;;2FAAlC,kCAAkC;kBADvD,SAAS","sourcesContent":["import type { Signal, Type } from '@angular/core';\nimport { Directive, signal } from '@angular/core';\nimport type { MlvInternalBaseToast, MlvToastPosition } from './toast.types';\n\nexport interface MlvIAbstractToastComponent<\n T extends MlvInternalBaseToast = MlvInternalBaseToast,\n> {\n toast: Signal<T>;\n}\n\n/**\n * Abstract base for toast/notification container components.\n * Manages the ordered list of active items for a single overlay position.\n * Extend this class and add the @Component decorator to create a concrete container.\n */\n@Directive()\nexport abstract class MlvAbstractToastContainerComponent<\n T extends MlvInternalBaseToast,\n> {\n /** The overlay position this container is responsible for. Set by the service. */\n readonly position = signal<MlvToastPosition>('top-right');\n readonly toasts = signal<T[]>([]);\n\n abstract component: Type<MlvIAbstractToastComponent>;\n\n /** @private Service-owned callback used by every item close source. */\n private _closeHandler = (id: string): void => {\n this.remove(id);\n };\n\n add(item: T): void {\n const isTop = this.position().startsWith('top');\n this.toasts.update((ts) => (isTop ? [item, ...ts] : [...ts, item]));\n }\n\n remove(id: string): boolean {\n const exists = this.toasts().some((toast) => toast.id === id);\n if (!exists) {\n return false;\n }\n this.toasts.update((ts) => ts.filter((t) => t.id !== id));\n return true;\n }\n\n isEmpty(): boolean {\n return this.toasts().length === 0;\n }\n\n setComponent(component: Type<MlvIAbstractToastComponent>): void {\n this.component = component;\n }\n\n /** Registers the service-owned close callback for timer, action, and dismiss-button requests. */\n setCloseHandler(handler: (id: string) => void): void {\n this._closeHandler = handler;\n }\n\n /** @protected Routes an item close request through the owning service. */\n protected requestClose(id: string): void {\n this._closeHandler(id);\n }\n}\n"]}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { Directive, ElementRef, inject, input } from '@angular/core';
|
|
2
|
+
import { MLV_TOAST_CLOSE } from './toast.types';
|
|
3
|
+
import { MlvToastTimer } from './toast-timer';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
export class MlvAbstractToastItem {
|
|
6
|
+
toast = input.required(/* @ts-ignore */
|
|
7
|
+
...(ngDevMode ? [{ debugName: "toast" }] : /* istanbul ignore next */ []));
|
|
8
|
+
/** @protected Auto-dismiss countdown timer for this toast item. */
|
|
9
|
+
timer = new MlvToastTimer();
|
|
10
|
+
/** @protected Dismiss callback that closes this item by id. */
|
|
11
|
+
_dismiss = inject(MLV_TOAST_CLOSE);
|
|
12
|
+
/**
|
|
13
|
+
* @protected Host element ref, used to detect whether focus stays within the
|
|
14
|
+
* item when handling `focusout` (so intra-item focus moves do not resume the
|
|
15
|
+
* timer prematurely).
|
|
16
|
+
*/
|
|
17
|
+
_elementRef = inject((ElementRef));
|
|
18
|
+
ngOnInit() {
|
|
19
|
+
if (this.toast().displayTime > 0) {
|
|
20
|
+
this.timer.start(this.toast().displayTime, () => this.onClose());
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
ngOnDestroy() {
|
|
24
|
+
this.timer.clear();
|
|
25
|
+
}
|
|
26
|
+
/** @protected Closes this toast item via the injected dismiss callback. */
|
|
27
|
+
onClose() {
|
|
28
|
+
this._dismiss(this.toast().id);
|
|
29
|
+
}
|
|
30
|
+
/** @protected Pauses the auto-dismiss timer on pointer enter when `pauseOnHover` is set. */
|
|
31
|
+
onMouseEnter() {
|
|
32
|
+
if (this.toast().pauseOnHover) {
|
|
33
|
+
this.timer.pause();
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
/** @protected Resumes the auto-dismiss timer on pointer leave. */
|
|
37
|
+
onMouseLeave() {
|
|
38
|
+
this._resumeTimer();
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* @protected Pauses the auto-dismiss timer when keyboard focus enters the
|
|
42
|
+
* item, so keyboard users are not raced by the countdown (WCAG 2.2.1).
|
|
43
|
+
*/
|
|
44
|
+
onFocusIn() {
|
|
45
|
+
if (this.toast().pauseOnHover) {
|
|
46
|
+
this.timer.pause();
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* @protected Resumes the auto-dismiss timer when focus leaves the item
|
|
51
|
+
* entirely. Focus moves between elements inside the same item are ignored.
|
|
52
|
+
*/
|
|
53
|
+
onFocusOut(event) {
|
|
54
|
+
const next = event.relatedTarget;
|
|
55
|
+
if (next && this._elementRef.nativeElement.contains(next)) {
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
this._resumeTimer();
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* @private Restarts the countdown from the full `displayTime` when pausing is
|
|
62
|
+
* enabled and the item is auto-dismissable.
|
|
63
|
+
*/
|
|
64
|
+
_resumeTimer() {
|
|
65
|
+
if (this.toast().pauseOnHover && this.toast().displayTime > 0) {
|
|
66
|
+
this.timer.start(this.toast().displayTime, () => this.onClose());
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: MlvAbstractToastItem, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
70
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.0.7", type: MlvAbstractToastItem, isStandalone: true, inputs: { toast: { classPropertyName: "toast", publicName: "toast", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0 });
|
|
71
|
+
}
|
|
72
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: MlvAbstractToastItem, decorators: [{
|
|
73
|
+
type: Directive
|
|
74
|
+
}], propDecorators: { toast: [{ type: i0.Input, args: [{ isSignal: true, alias: "toast", required: true }] }] } });
|
|
75
|
+
//# sourceMappingURL=abstract-toast-item.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"abstract-toast-item.js","sourceRoot":"","sources":["../../../../../../libs/core/toast/src/lib/abstract-toast-item.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAErE,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAEhD,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;;AAG9C,MAAM,OAAgB,oBAAoB;IAKxC,KAAK,GAAG,KAAK,CAAC,QAAQ;8EAAK,CAAC;IAE5B,mEAAmE;IAChD,KAAK,GAAG,IAAI,aAAa,EAAE,CAAC;IAE/C,+DAA+D;IAC5C,QAAQ,GAAG,MAAM,CAAC,eAAe,CAAC,CAAC;IAEtD;;;;OAIG;IACgB,WAAW,GAAG,MAAM,CAAC,CAAA,UAAuB,CAAA,CAAC,CAAC;IAEjE,QAAQ;QACN,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC,WAAW,GAAG,CAAC,EAAE,CAAC;YACjC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,WAAW,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;QACnE,CAAC;IACH,CAAC;IAED,WAAW;QACT,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;IACrB,CAAC;IAED,2EAA2E;IACjE,OAAO;QACf,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;IACjC,CAAC;IAED,4FAA4F;IAClF,YAAY;QACpB,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC,YAAY,EAAE,CAAC;YAC9B,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACrB,CAAC;IACH,CAAC;IAED,kEAAkE;IACxD,YAAY;QACpB,IAAI,CAAC,YAAY,EAAE,CAAC;IACtB,CAAC;IAED;;;OAGG;IACO,SAAS;QACjB,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC,YAAY,EAAE,CAAC;YAC9B,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACrB,CAAC;IACH,CAAC;IAED;;;OAGG;IACO,UAAU,CAAC,KAAiB;QACpC,MAAM,IAAI,GAAG,KAAK,CAAC,aAA4B,CAAC;QAChD,IAAI,IAAI,IAAI,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YAC1D,OAAO;QACT,CAAC;QACD,IAAI,CAAC,YAAY,EAAE,CAAC;IACtB,CAAC;IAED;;;OAGG;IACK,YAAY;QAClB,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC,YAAY,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC,WAAW,GAAG,CAAC,EAAE,CAAC;YAC9D,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,WAAW,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;QACnE,CAAC;IACH,CAAC;uGA7EmB,oBAAoB;2FAApB,oBAAoB;;2FAApB,oBAAoB;kBADzC,SAAS","sourcesContent":["import type { OnDestroy, OnInit } from '@angular/core';\nimport { Directive, ElementRef, inject, input } from '@angular/core';\nimport type { MlvInternalBaseToast } from './toast.types';\nimport { MLV_TOAST_CLOSE } from './toast.types';\nimport type { MlvIAbstractToastComponent } from './abstract-toast-container';\nimport { MlvToastTimer } from './toast-timer';\n\n@Directive()\nexport abstract class MlvAbstractToastItem<\n T extends MlvInternalBaseToast = MlvInternalBaseToast,\n >\n implements MlvIAbstractToastComponent<T>, OnInit, OnDestroy\n{\n toast = input.required<T>();\n\n /** @protected Auto-dismiss countdown timer for this toast item. */\n protected readonly timer = new MlvToastTimer();\n\n /** @protected Dismiss callback that closes this item by id. */\n protected readonly _dismiss = inject(MLV_TOAST_CLOSE);\n\n /**\n * @protected Host element ref, used to detect whether focus stays within the\n * item when handling `focusout` (so intra-item focus moves do not resume the\n * timer prematurely).\n */\n protected readonly _elementRef = inject(ElementRef<HTMLElement>);\n\n ngOnInit(): void {\n if (this.toast().displayTime > 0) {\n this.timer.start(this.toast().displayTime, () => this.onClose());\n }\n }\n\n ngOnDestroy(): void {\n this.timer.clear();\n }\n\n /** @protected Closes this toast item via the injected dismiss callback. */\n protected onClose(): void {\n this._dismiss(this.toast().id);\n }\n\n /** @protected Pauses the auto-dismiss timer on pointer enter when `pauseOnHover` is set. */\n protected onMouseEnter(): void {\n if (this.toast().pauseOnHover) {\n this.timer.pause();\n }\n }\n\n /** @protected Resumes the auto-dismiss timer on pointer leave. */\n protected onMouseLeave(): void {\n this._resumeTimer();\n }\n\n /**\n * @protected Pauses the auto-dismiss timer when keyboard focus enters the\n * item, so keyboard users are not raced by the countdown (WCAG 2.2.1).\n */\n protected onFocusIn(): void {\n if (this.toast().pauseOnHover) {\n this.timer.pause();\n }\n }\n\n /**\n * @protected Resumes the auto-dismiss timer when focus leaves the item\n * entirely. Focus moves between elements inside the same item are ignored.\n */\n protected onFocusOut(event: FocusEvent): void {\n const next = event.relatedTarget as Node | null;\n if (next && this._elementRef.nativeElement.contains(next)) {\n return;\n }\n this._resumeTimer();\n }\n\n /**\n * @private Restarts the countdown from the full `displayTime` when pausing is\n * enabled and the item is auto-dismissable.\n */\n private _resumeTimer(): void {\n if (this.toast().pauseOnHover && this.toast().displayTime > 0) {\n this.timer.start(this.toast().displayTime, () => this.onClose());\n }\n }\n}\n"]}
|
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
import { DestroyRef, EnvironmentInjector, inject } from '@angular/core';
|
|
2
|
+
import { Overlay } from '@angular/cdk/overlay';
|
|
3
|
+
import { ComponentPortal } from '@angular/cdk/portal';
|
|
4
|
+
import { LiveAnnouncer } from '@angular/cdk/a11y';
|
|
5
|
+
import { MlvToastRef } from './toast-ref';
|
|
6
|
+
const TOAST_LEAVE_DURATION_MS = 200;
|
|
7
|
+
/** Position used when a config omits one. Single source of truth for subclasses. */
|
|
8
|
+
export const MLV_TOAST_DEFAULT_POSITION = 'top-right';
|
|
9
|
+
/**
|
|
10
|
+
* Abstract base service for toast/notification services.
|
|
11
|
+
* Manages CDK overlay refs (one per position) and container lifecycle.
|
|
12
|
+
* Extend this class and implement `containerType` and `buildItem()`.
|
|
13
|
+
*/
|
|
14
|
+
export class MlvAbstractToastService {
|
|
15
|
+
/** @protected CDK overlay service used to create per-position toast panels. */
|
|
16
|
+
_overlay = inject(Overlay);
|
|
17
|
+
/** @protected Environment injector used when attaching container portals. */
|
|
18
|
+
_environmentInjector = inject(EnvironmentInjector);
|
|
19
|
+
/**
|
|
20
|
+
* @protected Owns the single persistent ARIA live region used to announce
|
|
21
|
+
* items. Announcing from here rather than from a `role` on each rendered item
|
|
22
|
+
* means the region exists in the DOM before any message is inserted (screen
|
|
23
|
+
* readers miss content added together with its live region), one stacked item
|
|
24
|
+
* does not add one live region, and an assertive tone cannot silently
|
|
25
|
+
* override the caller's politeness choice.
|
|
26
|
+
*/
|
|
27
|
+
_liveAnnouncer = inject(LiveAnnouncer);
|
|
28
|
+
/** @private Cleans up overlays, refs, and deferred disposal timers with the service. */
|
|
29
|
+
_destroyRef = inject(DestroyRef);
|
|
30
|
+
/** @private Active overlay refs keyed by position. */
|
|
31
|
+
_overlayRefs = new Map();
|
|
32
|
+
/** @private Active container instances keyed by position. */
|
|
33
|
+
_containers = new Map();
|
|
34
|
+
/** @private Active item references keyed by generated ID. */
|
|
35
|
+
_refs = new Map();
|
|
36
|
+
/** @private Deferred final-item overlay disposal timers keyed by position. */
|
|
37
|
+
_disposeTimers = new Map();
|
|
38
|
+
/** @private Monotonic counter used to generate unique toast ids. */
|
|
39
|
+
_idCounter = 0;
|
|
40
|
+
constructor() {
|
|
41
|
+
this._destroyRef.onDestroy(() => {
|
|
42
|
+
for (const timer of this._disposeTimers.values()) {
|
|
43
|
+
clearTimeout(timer);
|
|
44
|
+
}
|
|
45
|
+
for (const overlayRef of this._overlayRefs.values()) {
|
|
46
|
+
overlayRef.dispose();
|
|
47
|
+
}
|
|
48
|
+
for (const ref of this._refs.values()) {
|
|
49
|
+
ref._markClosed();
|
|
50
|
+
}
|
|
51
|
+
// Drop any text still sitting in the shared live region, so a destroyed
|
|
52
|
+
// service cannot leave a stale announcement behind for the next one.
|
|
53
|
+
this._liveAnnouncer.clear();
|
|
54
|
+
this._disposeTimers.clear();
|
|
55
|
+
this._overlayRefs.clear();
|
|
56
|
+
this._containers.clear();
|
|
57
|
+
this._refs.clear();
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
show(config) {
|
|
61
|
+
const position = config.position ?? MLV_TOAST_DEFAULT_POSITION;
|
|
62
|
+
const container = this._ensureContainer(position);
|
|
63
|
+
const id = `toast-${++this._idCounter}`;
|
|
64
|
+
const ref = this._createRef(id, position, config);
|
|
65
|
+
this._refs.set(id, ref);
|
|
66
|
+
container.add(this.buildItem(id, config, ref));
|
|
67
|
+
const announcement = this.resolveAnnouncement(config);
|
|
68
|
+
if (announcement) {
|
|
69
|
+
this._liveAnnouncer.announce(announcement.message, config.politeness ?? announcement.politeness);
|
|
70
|
+
}
|
|
71
|
+
return ref;
|
|
72
|
+
}
|
|
73
|
+
close(id, position) {
|
|
74
|
+
if (position) {
|
|
75
|
+
const container = this._containers.get(position);
|
|
76
|
+
if (container?.remove(id)) {
|
|
77
|
+
this._completeRef(id);
|
|
78
|
+
if (container.isEmpty()) {
|
|
79
|
+
this._scheduleDisposePosition(position);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
else {
|
|
84
|
+
for (const [pos, container] of this._containers) {
|
|
85
|
+
if (container.remove(id)) {
|
|
86
|
+
this._completeRef(id);
|
|
87
|
+
if (container.isEmpty()) {
|
|
88
|
+
this._scheduleDisposePosition(pos);
|
|
89
|
+
}
|
|
90
|
+
break;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
/** @protected Creates the concrete reference returned for a new item. */
|
|
96
|
+
_createRef(id, position, config) {
|
|
97
|
+
return new MlvToastRef(id, config.data, () => this.close(id, position));
|
|
98
|
+
}
|
|
99
|
+
/** @private Returns the container for a position, creating the overlay on first use. */
|
|
100
|
+
_ensureContainer(position) {
|
|
101
|
+
const existing = this._containers.get(position);
|
|
102
|
+
if (existing) {
|
|
103
|
+
this._cancelDisposePosition(position);
|
|
104
|
+
return existing;
|
|
105
|
+
}
|
|
106
|
+
const overlayRef = this._overlay.create({
|
|
107
|
+
positionStrategy: this._getPositionStrategy(position),
|
|
108
|
+
panelClass: ['mlv-toast-panel', `mlv-toast-panel--${position}`],
|
|
109
|
+
scrollStrategy: this._overlay.scrollStrategies.noop(),
|
|
110
|
+
maxHeight: 'calc(100vh - 32px)',
|
|
111
|
+
});
|
|
112
|
+
const portal = new ComponentPortal(this.containerType, null, this._environmentInjector);
|
|
113
|
+
const componentRef = overlayRef.attach(portal);
|
|
114
|
+
componentRef.instance.position.set(position);
|
|
115
|
+
this._overlayRefs.set(position, overlayRef);
|
|
116
|
+
this._containers.set(position, componentRef.instance);
|
|
117
|
+
componentRef.instance.setComponent(this.toastItemType);
|
|
118
|
+
componentRef.instance.setCloseHandler((id) => this.close(id, position));
|
|
119
|
+
return componentRef.instance;
|
|
120
|
+
}
|
|
121
|
+
/** @private Disposes the overlay for a position once its container is empty. */
|
|
122
|
+
_disposePosition(position) {
|
|
123
|
+
this._cancelDisposePosition(position);
|
|
124
|
+
const overlayRef = this._overlayRefs.get(position);
|
|
125
|
+
if (overlayRef) {
|
|
126
|
+
overlayRef.dispose();
|
|
127
|
+
this._overlayRefs.delete(position);
|
|
128
|
+
this._containers.delete(position);
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
/** @private Defers final-item disposal so Angular's leave animation can finish. */
|
|
132
|
+
_scheduleDisposePosition(position) {
|
|
133
|
+
this._cancelDisposePosition(position);
|
|
134
|
+
this._disposeTimers.set(position, setTimeout(() => {
|
|
135
|
+
this._disposeTimers.delete(position);
|
|
136
|
+
if (this._containers.get(position)?.isEmpty()) {
|
|
137
|
+
this._disposePosition(position);
|
|
138
|
+
}
|
|
139
|
+
}, TOAST_LEAVE_DURATION_MS));
|
|
140
|
+
}
|
|
141
|
+
/** @private Cancels pending disposal when a new item reuses the same position. */
|
|
142
|
+
_cancelDisposePosition(position) {
|
|
143
|
+
const timer = this._disposeTimers.get(position);
|
|
144
|
+
if (timer !== undefined) {
|
|
145
|
+
clearTimeout(timer);
|
|
146
|
+
this._disposeTimers.delete(position);
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
/** @private Completes and releases the reference for a removed item. */
|
|
150
|
+
_completeRef(id) {
|
|
151
|
+
this._refs.get(id)?._markClosed();
|
|
152
|
+
this._refs.delete(id);
|
|
153
|
+
}
|
|
154
|
+
/** @private Builds the global position strategy for a toast position. */
|
|
155
|
+
_getPositionStrategy(position) {
|
|
156
|
+
const strategy = this._overlay.position().global();
|
|
157
|
+
const margin = '16px';
|
|
158
|
+
if (position.startsWith('top')) {
|
|
159
|
+
strategy.top(margin);
|
|
160
|
+
}
|
|
161
|
+
else {
|
|
162
|
+
strategy.bottom(margin);
|
|
163
|
+
}
|
|
164
|
+
if (position.endsWith('left')) {
|
|
165
|
+
strategy.left(margin);
|
|
166
|
+
}
|
|
167
|
+
else if (position.endsWith('right')) {
|
|
168
|
+
strategy.right(margin);
|
|
169
|
+
}
|
|
170
|
+
else {
|
|
171
|
+
strategy.centerHorizontally();
|
|
172
|
+
}
|
|
173
|
+
return strategy;
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
//# sourceMappingURL=abstract-toast.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"abstract-toast.service.js","sourceRoot":"","sources":["../../../../../../libs/core/toast/src/lib/abstract-toast.service.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Type } from '@angular/core';\nimport { DestroyRef, EnvironmentInjector, inject } from '@angular/core';\nimport type { OverlayRef } from '@angular/cdk/overlay';\nimport { Overlay } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { LiveAnnouncer } from '@angular/cdk/a11y';\nimport type { GlobalPositionStrategy } from '@angular/cdk/overlay';\nimport type {\n MlvAbstractToastContainerComponent,\n MlvIAbstractToastComponent,\n} from './abstract-toast-container';\nimport type {\n MlvBaseToastConfig,\n MlvInternalBaseToast,\n MlvToastPoliteness,\n MlvToastPosition,\n} from './toast.types';\nimport { MlvToastRef } from './toast-ref';\n\nconst TOAST_LEAVE_DURATION_MS = 200;\n\n/** Position used when a config omits one. Single source of truth for subclasses. */\nexport const MLV_TOAST_DEFAULT_POSITION: MlvToastPosition = 'top-right';\n\n/**\n * Abstract base service for toast/notification services.\n * Manages CDK overlay refs (one per position) and container lifecycle.\n * Extend this class and implement `containerType` and `buildItem()`.\n */\nexport abstract class MlvAbstractToastService<\n TConfig extends MlvBaseToastConfig,\n TItem extends MlvInternalBaseToast,\n TItemComponent extends MlvIAbstractToastComponent,\n TRef extends MlvToastRef = MlvToastRef,\n> {\n /** @protected CDK overlay service used to create per-position toast panels. */\n protected readonly _overlay = inject(Overlay);\n /** @protected Environment injector used when attaching container portals. */\n protected readonly _environmentInjector = inject(EnvironmentInjector);\n /**\n * @protected Owns the single persistent ARIA live region used to announce\n * items. Announcing from here rather than from a `role` on each rendered item\n * means the region exists in the DOM before any message is inserted (screen\n * readers miss content added together with its live region), one stacked item\n * does not add one live region, and an assertive tone cannot silently\n * override the caller's politeness choice.\n */\n protected readonly _liveAnnouncer = inject(LiveAnnouncer);\n /** @private Cleans up overlays, refs, and deferred disposal timers with the service. */\n private readonly _destroyRef = inject(DestroyRef);\n\n /** @private Active overlay refs keyed by position. */\n private readonly _overlayRefs = new Map<MlvToastPosition, OverlayRef>();\n /** @private Active container instances keyed by position. */\n private readonly _containers = new Map<\n MlvToastPosition,\n MlvAbstractToastContainerComponent<TItem>\n >();\n /** @private Active item references keyed by generated ID. */\n private readonly _refs = new Map<string, TRef>();\n /** @private Deferred final-item overlay disposal timers keyed by position. */\n private readonly _disposeTimers = new Map<\n MlvToastPosition,\n ReturnType<typeof setTimeout>\n >();\n /** @private Monotonic counter used to generate unique toast ids. */\n private _idCounter = 0;\n\n /** The concrete container component class to instantiate per position. */\n protected abstract readonly containerType: Type<\n MlvAbstractToastContainerComponent<TItem>\n >;\n\n /** The concrete toast item component class to instantiate per each toast. */\n protected abstract readonly toastItemType: Type<TItemComponent>;\n\n /** Build a fully-populated item from user config and the generated id. */\n protected abstract buildItem(id: string, config: TConfig, ref: TRef): TItem;\n\n /**\n * The text announced to assistive technology for this item, and the politeness\n * to announce it with. Return `null` to announce nothing — appropriate when\n * the item's content is a template or component the service cannot read.\n *\n * @param config - The caller's config for this item.\n */\n protected abstract resolveAnnouncement(\n config: TConfig,\n ): { message: string; politeness: MlvToastPoliteness } | null;\n\n constructor() {\n this._destroyRef.onDestroy(() => {\n for (const timer of this._disposeTimers.values()) {\n clearTimeout(timer);\n }\n for (const overlayRef of this._overlayRefs.values()) {\n overlayRef.dispose();\n }\n for (const ref of this._refs.values()) {\n ref._markClosed();\n }\n // Drop any text still sitting in the shared live region, so a destroyed\n // service cannot leave a stale announcement behind for the next one.\n this._liveAnnouncer.clear();\n this._disposeTimers.clear();\n this._overlayRefs.clear();\n this._containers.clear();\n this._refs.clear();\n });\n }\n\n show(config: TConfig): TRef {\n const position = config.position ?? MLV_TOAST_DEFAULT_POSITION;\n const container = this._ensureContainer(position);\n const id = `toast-${++this._idCounter}`;\n const ref = this._createRef(id, position, config);\n this._refs.set(id, ref);\n container.add(this.buildItem(id, config, ref));\n\n const announcement = this.resolveAnnouncement(config);\n if (announcement) {\n this._liveAnnouncer.announce(\n announcement.message,\n config.politeness ?? announcement.politeness,\n );\n }\n\n return ref;\n }\n\n close(id: string, position?: MlvToastPosition): void {\n if (position) {\n const container = this._containers.get(position);\n if (container?.remove(id)) {\n this._completeRef(id);\n if (container.isEmpty()) {\n this._scheduleDisposePosition(position);\n }\n }\n } else {\n for (const [pos, container] of this._containers) {\n if (container.remove(id)) {\n this._completeRef(id);\n if (container.isEmpty()) {\n this._scheduleDisposePosition(pos);\n }\n break;\n }\n }\n }\n }\n\n /** @protected Creates the concrete reference returned for a new item. */\n protected _createRef(\n id: string,\n position: MlvToastPosition,\n config: TConfig,\n ): TRef {\n return new MlvToastRef(id, config.data, () =>\n this.close(id, position),\n ) as TRef;\n }\n\n /** @private Returns the container for a position, creating the overlay on first use. */\n private _ensureContainer(\n position: MlvToastPosition,\n ): MlvAbstractToastContainerComponent<TItem> {\n const existing = this._containers.get(position);\n if (existing) {\n this._cancelDisposePosition(position);\n return existing;\n }\n\n const overlayRef = this._overlay.create({\n positionStrategy: this._getPositionStrategy(position),\n panelClass: ['mlv-toast-panel', `mlv-toast-panel--${position}`],\n scrollStrategy: this._overlay.scrollStrategies.noop(),\n maxHeight: 'calc(100vh - 32px)',\n });\n\n const portal = new ComponentPortal(\n this.containerType,\n null,\n this._environmentInjector,\n );\n const componentRef = overlayRef.attach(portal);\n componentRef.instance.position.set(position);\n\n this._overlayRefs.set(position, overlayRef);\n this._containers.set(position, componentRef.instance);\n componentRef.instance.setComponent(this.toastItemType);\n componentRef.instance.setCloseHandler((id) => this.close(id, position));\n\n return componentRef.instance;\n }\n\n /** @private Disposes the overlay for a position once its container is empty. */\n private _disposePosition(position: MlvToastPosition): void {\n this._cancelDisposePosition(position);\n const overlayRef = this._overlayRefs.get(position);\n if (overlayRef) {\n overlayRef.dispose();\n this._overlayRefs.delete(position);\n this._containers.delete(position);\n }\n }\n\n /** @private Defers final-item disposal so Angular's leave animation can finish. */\n private _scheduleDisposePosition(position: MlvToastPosition): void {\n this._cancelDisposePosition(position);\n this._disposeTimers.set(\n position,\n setTimeout(() => {\n this._disposeTimers.delete(position);\n if (this._containers.get(position)?.isEmpty()) {\n this._disposePosition(position);\n }\n }, TOAST_LEAVE_DURATION_MS),\n );\n }\n\n /** @private Cancels pending disposal when a new item reuses the same position. */\n private _cancelDisposePosition(position: MlvToastPosition): void {\n const timer = this._disposeTimers.get(position);\n if (timer !== undefined) {\n clearTimeout(timer);\n this._disposeTimers.delete(position);\n }\n }\n\n /** @private Completes and releases the reference for a removed item. */\n private _completeRef(id: string): void {\n this._refs.get(id)?._markClosed();\n this._refs.delete(id);\n }\n\n /** @private Builds the global position strategy for a toast position. */\n private _getPositionStrategy(\n position: MlvToastPosition,\n ): GlobalPositionStrategy {\n const strategy = this._overlay.position().global();\n const margin = '16px';\n\n if (position.startsWith('top')) {\n strategy.top(margin);\n } else {\n strategy.bottom(margin);\n }\n\n if (position.endsWith('left')) {\n strategy.left(margin);\n } else if (position.endsWith('right')) {\n strategy.right(margin);\n } else {\n strategy.centerHorizontally();\n }\n\n return strategy;\n }\n}\n"]}
|