@dialpad/dialtone-vue 3.210.0 → 3.211.0-next.2
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/dist/common/constants/index.cjs +1 -1
- package/dist/common/constants/index.cjs.map +1 -1
- package/dist/common/constants/index.js +10 -10
- package/dist/common/constants/index.js.map +1 -1
- package/dist/common/mixins/keyboard-list-navigation.cjs +1 -1
- package/dist/common/mixins/keyboard-list-navigation.cjs.map +1 -1
- package/dist/common/mixins/keyboard-list-navigation.js +7 -7
- package/dist/common/mixins/keyboard-list-navigation.js.map +1 -1
- package/dist/component-documentation.json +1 -1
- package/dist/dialtone-vue.cjs +1 -1
- package/dist/dialtone-vue.js +425 -387
- package/dist/dialtone-vue.js.map +1 -1
- package/dist/lib/attachment-carousel/attachment-carousel.cjs +1 -1
- package/dist/lib/attachment-carousel/attachment-carousel.cjs.map +1 -1
- package/dist/lib/attachment-carousel/attachment-carousel.js +64 -117
- package/dist/lib/attachment-carousel/attachment-carousel.js.map +1 -1
- package/dist/lib/avatar/avatar-constants.cjs +1 -1
- package/dist/lib/avatar/avatar-constants.cjs.map +1 -1
- package/dist/lib/avatar/avatar-constants.js +169 -43
- package/dist/lib/avatar/avatar-constants.js.map +1 -1
- package/dist/lib/avatar/avatar.cjs +1 -1
- package/dist/lib/avatar/avatar.cjs.map +1 -1
- package/dist/lib/avatar/avatar.js +185 -100
- package/dist/lib/avatar/avatar.js.map +1 -1
- package/dist/lib/avatar/index.cjs +1 -1
- package/dist/lib/avatar/index.js +16 -10
- package/dist/lib/badge/badge.cjs +1 -1
- package/dist/lib/badge/badge.cjs.map +1 -1
- package/dist/lib/badge/badge.js +47 -35
- package/dist/lib/badge/badge.js.map +1 -1
- package/dist/lib/banner/banner.cjs +1 -1
- package/dist/lib/banner/banner.cjs.map +1 -1
- package/dist/lib/banner/banner.js +19 -18
- package/dist/lib/banner/banner.js.map +1 -1
- package/dist/lib/breadcrumbs/breadcrumb-item.cjs +1 -1
- package/dist/lib/breadcrumbs/breadcrumb-item.cjs.map +1 -1
- package/dist/lib/breadcrumbs/breadcrumb-item.js +3 -1
- package/dist/lib/breadcrumbs/breadcrumb-item.js.map +1 -1
- package/dist/lib/breadcrumbs/breadcrumbs.cjs +1 -1
- package/dist/lib/breadcrumbs/breadcrumbs.cjs.map +1 -1
- package/dist/lib/breadcrumbs/breadcrumbs.js +21 -18
- package/dist/lib/breadcrumbs/breadcrumbs.js.map +1 -1
- package/dist/lib/button/button-constants.cjs +1 -1
- package/dist/lib/button/button-constants.cjs.map +1 -1
- package/dist/lib/button/button-constants.js +23 -19
- package/dist/lib/button/button-constants.js.map +1 -1
- package/dist/lib/button/button.cjs +1 -1
- package/dist/lib/button/button.cjs.map +1 -1
- package/dist/lib/button/button.js +171 -66
- package/dist/lib/button/button.js.map +1 -1
- package/dist/lib/callbar-button/callbar-button.cjs +1 -1
- package/dist/lib/callbar-button/callbar-button.cjs.map +1 -1
- package/dist/lib/callbar-button/callbar-button.js +13 -14
- package/dist/lib/callbar-button/callbar-button.js.map +1 -1
- package/dist/lib/callbar-button-with-dropdown/callbar-button-with-dropdown.cjs +1 -1
- package/dist/lib/callbar-button-with-dropdown/callbar-button-with-dropdown.cjs.map +1 -1
- package/dist/lib/callbar-button-with-dropdown/callbar-button-with-dropdown.js +42 -30
- package/dist/lib/callbar-button-with-dropdown/callbar-button-with-dropdown.js.map +1 -1
- package/dist/lib/callbar-button-with-popover/callbar-button-with-popover.cjs +1 -1
- package/dist/lib/callbar-button-with-popover/callbar-button-with-popover.cjs.map +1 -1
- package/dist/lib/callbar-button-with-popover/callbar-button-with-popover.js +38 -26
- package/dist/lib/callbar-button-with-popover/callbar-button-with-popover.js.map +1 -1
- package/dist/lib/callbox/callbox.cjs +1 -1
- package/dist/lib/callbox/callbox.cjs.map +1 -1
- package/dist/lib/callbox/callbox.js +47 -47
- package/dist/lib/callbox/callbox.js.map +1 -1
- package/dist/lib/checkbox/checkbox.cjs +1 -1
- package/dist/lib/checkbox/checkbox.cjs.map +1 -1
- package/dist/lib/checkbox/checkbox.js +97 -43
- package/dist/lib/checkbox/checkbox.js.map +1 -1
- package/dist/lib/chip/chip.cjs +1 -1
- package/dist/lib/chip/chip.cjs.map +1 -1
- package/dist/lib/chip/chip.js +1 -1
- package/dist/lib/chip/chip.js.map +1 -1
- package/dist/lib/codeblock/codeblock-constants.cjs +2 -0
- package/dist/lib/codeblock/codeblock-constants.cjs.map +1 -0
- package/dist/lib/codeblock/codeblock-constants.js +6 -0
- package/dist/lib/codeblock/codeblock-constants.js.map +1 -0
- package/dist/lib/codeblock/codeblock.cjs +1 -2
- package/dist/lib/codeblock/codeblock.cjs.map +1 -1
- package/dist/lib/codeblock/codeblock.js +34 -13
- package/dist/lib/codeblock/codeblock.js.map +1 -1
- package/dist/lib/combobox-multi-select/combobox-multi-select.cjs +1 -1
- package/dist/lib/combobox-multi-select/combobox-multi-select.cjs.map +1 -1
- package/dist/lib/combobox-multi-select/combobox-multi-select.js +31 -31
- package/dist/lib/combobox-multi-select/combobox-multi-select.js.map +1 -1
- package/dist/lib/contact-centers-row/contact-centers-row.cjs +1 -1
- package/dist/lib/contact-centers-row/contact-centers-row.cjs.map +1 -1
- package/dist/lib/contact-centers-row/contact-centers-row.js +33 -33
- package/dist/lib/contact-centers-row/contact-centers-row.js.map +1 -1
- package/dist/lib/contact-info/contact-info.cjs +1 -1
- package/dist/lib/contact-info/contact-info.cjs.map +1 -1
- package/dist/lib/contact-info/contact-info.js +56 -56
- package/dist/lib/contact-info/contact-info.js.map +1 -1
- package/dist/lib/contact-row/contact-row.cjs +1 -1
- package/dist/lib/contact-row/contact-row.cjs.map +1 -1
- package/dist/lib/contact-row/contact-row.js +1 -1
- package/dist/lib/contact-row/contact-row.js.map +1 -1
- package/dist/lib/datepicker/datepicker.cjs +1 -1
- package/dist/lib/datepicker/datepicker.cjs.map +1 -1
- package/dist/lib/datepicker/datepicker.js +13 -17
- package/dist/lib/datepicker/datepicker.js.map +1 -1
- package/dist/lib/dropdown/dropdown-list.cjs +1 -1
- package/dist/lib/dropdown/dropdown-list.cjs.map +1 -1
- package/dist/lib/dropdown/dropdown-list.js +29 -18
- package/dist/lib/dropdown/dropdown-list.js.map +1 -1
- package/dist/lib/editor/editor.cjs.map +1 -1
- package/dist/lib/editor/editor.js.map +1 -1
- package/dist/lib/emoji-picker/emoji-picker.cjs +1 -1
- package/dist/lib/emoji-picker/emoji-picker.cjs.map +1 -1
- package/dist/lib/emoji-picker/emoji-picker.js +2 -2
- package/dist/lib/emoji-picker/emoji-picker.js.map +1 -1
- package/dist/lib/empty-state/empty-state-constants.cjs +1 -1
- package/dist/lib/empty-state/empty-state-constants.cjs.map +1 -1
- package/dist/lib/empty-state/empty-state-constants.js +28 -16
- package/dist/lib/empty-state/empty-state-constants.js.map +1 -1
- package/dist/lib/empty-state/empty-state.cjs +1 -1
- package/dist/lib/empty-state/empty-state.cjs.map +1 -1
- package/dist/lib/empty-state/empty-state.js +54 -32
- package/dist/lib/empty-state/empty-state.js.map +1 -1
- package/dist/lib/feed-item-pill/feed-item-pill.cjs +1 -1
- package/dist/lib/feed-item-pill/feed-item-pill.cjs.map +1 -1
- package/dist/lib/feed-item-pill/feed-item-pill.js +56 -53
- package/dist/lib/feed-item-pill/feed-item-pill.js.map +1 -1
- package/dist/lib/feed-item-row/feed-item-row.cjs +1 -1
- package/dist/lib/feed-item-row/feed-item-row.cjs.map +1 -1
- package/dist/lib/feed-item-row/feed-item-row.js +11 -11
- package/dist/lib/feed-item-row/feed-item-row.js.map +1 -1
- package/dist/lib/filter-pill/filter-pill.cjs +2 -0
- package/dist/lib/filter-pill/filter-pill.cjs.map +1 -0
- package/dist/lib/filter-pill/filter-pill.js +346 -0
- package/dist/lib/filter-pill/filter-pill.js.map +1 -0
- package/dist/lib/filter-pill/index.cjs +2 -0
- package/dist/lib/filter-pill/index.cjs.map +1 -0
- package/dist/lib/filter-pill/index.js +5 -0
- package/dist/lib/filter-pill/index.js.map +1 -0
- package/dist/lib/general-row/general-row.cjs +1 -1
- package/dist/lib/general-row/general-row.cjs.map +1 -1
- package/dist/lib/general-row/general-row.js +153 -99
- package/dist/lib/general-row/general-row.js.map +1 -1
- package/dist/lib/group-row/group-row.cjs +1 -1
- package/dist/lib/group-row/group-row.cjs.map +1 -1
- package/dist/lib/group-row/group-row.js +1 -1
- package/dist/lib/group-row/group-row.js.map +1 -1
- package/dist/lib/grouped-chip/grouped-chip.cjs +1 -1
- package/dist/lib/grouped-chip/grouped-chip.cjs.map +1 -1
- package/dist/lib/grouped-chip/grouped-chip.js +31 -31
- package/dist/lib/grouped-chip/grouped-chip.js.map +1 -1
- package/dist/lib/input/input-constants.cjs +1 -1
- package/dist/lib/input/input-constants.cjs.map +1 -1
- package/dist/lib/input/input-constants.js +17 -22
- package/dist/lib/input/input-constants.js.map +1 -1
- package/dist/lib/input/input.cjs +1 -1
- package/dist/lib/input/input.cjs.map +1 -1
- package/dist/lib/input/input.js +144 -72
- package/dist/lib/input/input.js.map +1 -1
- package/dist/lib/input-group/input-group.cjs +1 -1
- package/dist/lib/input-group/input-group.cjs.map +1 -1
- package/dist/lib/input-group/input-group.js +35 -28
- package/dist/lib/input-group/input-group.js.map +1 -1
- package/dist/lib/item-layout/item-layout.cjs +3 -3
- package/dist/lib/item-layout/item-layout.cjs.map +1 -1
- package/dist/lib/item-layout/item-layout.js +74 -39
- package/dist/lib/item-layout/item-layout.js.map +1 -1
- package/dist/lib/keyboard-shortcut/keyboard-shortcut.cjs +1 -1
- package/dist/lib/keyboard-shortcut/keyboard-shortcut.cjs.map +1 -1
- package/dist/lib/keyboard-shortcut/keyboard-shortcut.js +56 -43
- package/dist/lib/keyboard-shortcut/keyboard-shortcut.js.map +1 -1
- package/dist/lib/kitchen-sink/kitchen-sink-view.cjs +2 -0
- package/dist/lib/kitchen-sink/kitchen-sink-view.cjs.map +1 -0
- package/dist/lib/kitchen-sink/kitchen-sink-view.js +263 -0
- package/dist/lib/kitchen-sink/kitchen-sink-view.js.map +1 -0
- package/dist/lib/link/link.cjs +1 -1
- package/dist/lib/link/link.cjs.map +1 -1
- package/dist/lib/link/link.js +22 -12
- package/dist/lib/link/link.js.map +1 -1
- package/dist/lib/list-item/list-item.cjs +1 -1
- package/dist/lib/list-item/list-item.cjs.map +1 -1
- package/dist/lib/list-item/list-item.js +25 -15
- package/dist/lib/list-item/list-item.js.map +1 -1
- package/dist/lib/loader/loader.cjs +13 -1
- package/dist/lib/loader/loader.cjs.map +1 -1
- package/dist/lib/loader/loader.js +31 -20
- package/dist/lib/loader/loader.js.map +1 -1
- package/dist/lib/message-input/message-input.cjs +1 -1
- package/dist/lib/message-input/message-input.cjs.map +1 -1
- package/dist/lib/message-input/message-input.js +39 -39
- package/dist/lib/message-input/message-input.js.map +1 -1
- package/dist/lib/modal/modal.cjs +1 -1
- package/dist/lib/modal/modal.cjs.map +1 -1
- package/dist/lib/modal/modal.js +74 -61
- package/dist/lib/modal/modal.js.map +1 -1
- package/dist/lib/mode-island/index.cjs +2 -0
- package/dist/lib/mode-island/index.cjs.map +1 -0
- package/dist/lib/mode-island/index.js +7 -0
- package/dist/lib/mode-island/index.js.map +1 -0
- package/dist/lib/mode-island/mode-island-constants.cjs +2 -0
- package/dist/lib/mode-island/mode-island-constants.cjs.map +1 -0
- package/dist/lib/mode-island/mode-island-constants.js +12 -0
- package/dist/lib/mode-island/mode-island-constants.js.map +1 -0
- package/dist/lib/mode-island/mode-island.cjs +2 -0
- package/dist/lib/mode-island/mode-island.cjs.map +1 -0
- package/dist/lib/mode-island/mode-island.js +130 -0
- package/dist/lib/mode-island/mode-island.js.map +1 -0
- package/dist/lib/mode-island/utils.cjs +2 -0
- package/dist/lib/mode-island/utils.cjs.map +1 -0
- package/dist/lib/mode-island/utils.js +32 -0
- package/dist/lib/mode-island/utils.js.map +1 -0
- package/dist/lib/mode-island/validators.cjs +2 -0
- package/dist/lib/mode-island/validators.cjs.map +1 -0
- package/dist/lib/mode-island/validators.js +12 -0
- package/dist/lib/mode-island/validators.js.map +1 -0
- package/dist/lib/notice/notice-action.cjs +1 -1
- package/dist/lib/notice/notice-action.cjs.map +1 -1
- package/dist/lib/notice/notice-action.js +7 -7
- package/dist/lib/notice/notice-action.js.map +1 -1
- package/dist/lib/notice/notice-content.cjs +1 -1
- package/dist/lib/notice/notice-content.cjs.map +1 -1
- package/dist/lib/notice/notice-content.js +38 -21
- package/dist/lib/notice/notice-content.js.map +1 -1
- package/dist/lib/notice/notice.cjs +1 -1
- package/dist/lib/notice/notice.cjs.map +1 -1
- package/dist/lib/notice/notice.js +20 -19
- package/dist/lib/notice/notice.js.map +1 -1
- package/dist/lib/pagination/pagination.cjs +1 -1
- package/dist/lib/pagination/pagination.cjs.map +1 -1
- package/dist/lib/pagination/pagination.js +15 -14
- package/dist/lib/pagination/pagination.js.map +1 -1
- package/dist/lib/popover/popover.cjs +1 -1
- package/dist/lib/popover/popover.cjs.map +1 -1
- package/dist/lib/popover/popover.js +1 -1
- package/dist/lib/popover/popover.js.map +1 -1
- package/dist/lib/progress-circle/index.cjs +2 -0
- package/dist/lib/progress-circle/index.cjs.map +1 -0
- package/dist/lib/progress-circle/index.js +10 -0
- package/dist/lib/progress-circle/index.js.map +1 -0
- package/dist/lib/progress-circle/progress-circle-constants.cjs +2 -0
- package/dist/lib/progress-circle/progress-circle-constants.cjs.map +1 -0
- package/dist/lib/progress-circle/progress-circle-constants.js +25 -0
- package/dist/lib/progress-circle/progress-circle-constants.js.map +1 -0
- package/dist/lib/progress-circle/progress-circle.cjs +2 -0
- package/dist/lib/progress-circle/progress-circle.cjs.map +1 -0
- package/dist/lib/progress-circle/progress-circle.js +136 -0
- package/dist/lib/progress-circle/progress-circle.js.map +1 -0
- package/dist/lib/radio/radio.cjs +1 -1
- package/dist/lib/radio/radio.cjs.map +1 -1
- package/dist/lib/radio/radio.js +103 -41
- package/dist/lib/radio/radio.js.map +1 -1
- package/dist/lib/rich-text-editor/rich-text-editor.cjs +4 -4
- package/dist/lib/rich-text-editor/rich-text-editor.cjs.map +1 -1
- package/dist/lib/rich-text-editor/rich-text-editor.js +607 -560
- package/dist/lib/rich-text-editor/rich-text-editor.js.map +1 -1
- package/dist/lib/root-layout/root-layout-constants.cjs +1 -1
- package/dist/lib/root-layout/root-layout-constants.cjs.map +1 -1
- package/dist/lib/root-layout/root-layout-constants.js +4 -2
- package/dist/lib/root-layout/root-layout-constants.js.map +1 -1
- package/dist/lib/root-layout/root-layout.cjs +1 -1
- package/dist/lib/root-layout/root-layout.cjs.map +1 -1
- package/dist/lib/root-layout/root-layout.js +15 -13
- package/dist/lib/root-layout/root-layout.js.map +1 -1
- package/dist/lib/select-menu/select-menu.cjs +1 -1
- package/dist/lib/select-menu/select-menu.cjs.map +1 -1
- package/dist/lib/select-menu/select-menu.js +113 -61
- package/dist/lib/select-menu/select-menu.js.map +1 -1
- package/dist/lib/settings-menu-button/settings-menu-button.cjs +1 -1
- package/dist/lib/settings-menu-button/settings-menu-button.cjs.map +1 -1
- package/dist/lib/settings-menu-button/settings-menu-button.js +14 -15
- package/dist/lib/settings-menu-button/settings-menu-button.js.map +1 -1
- package/dist/lib/split-button/split-button-end.cjs +2 -0
- package/dist/lib/split-button/split-button-end.cjs.map +1 -0
- package/dist/lib/split-button/{split-button-omega.js → split-button-end.js} +13 -13
- package/dist/lib/split-button/split-button-end.js.map +1 -0
- package/dist/lib/split-button/split-button-start.cjs +2 -0
- package/dist/lib/split-button/split-button-start.cjs.map +1 -0
- package/dist/lib/split-button/split-button-start.js +231 -0
- package/dist/lib/split-button/split-button-start.js.map +1 -0
- package/dist/lib/split-button/split-button.cjs +1 -1
- package/dist/lib/split-button/split-button.cjs.map +1 -1
- package/dist/lib/split-button/split-button.js +334 -98
- package/dist/lib/split-button/split-button.js.map +1 -1
- package/dist/lib/tab/index.cjs +1 -1
- package/dist/lib/tab/index.js +13 -11
- package/dist/lib/tab/tab-group.cjs +1 -1
- package/dist/lib/tab/tab-group.cjs.map +1 -1
- package/dist/lib/tab/tab-group.js +107 -46
- package/dist/lib/tab/tab-group.js.map +1 -1
- package/dist/lib/tab/tab.cjs +1 -1
- package/dist/lib/tab/tab.cjs.map +1 -1
- package/dist/lib/tab/tab.js +128 -37
- package/dist/lib/tab/tab.js.map +1 -1
- package/dist/lib/tab/tabs-constants.cjs +1 -1
- package/dist/lib/tab/tabs-constants.cjs.map +1 -1
- package/dist/lib/tab/tabs-constants.js +13 -11
- package/dist/lib/tab/tabs-constants.js.map +1 -1
- package/dist/lib/text/index.cjs +2 -0
- package/dist/lib/text/index.cjs.map +1 -0
- package/dist/lib/text/index.js +20 -0
- package/dist/lib/text/index.js.map +1 -0
- package/dist/lib/text/text-constants.cjs +2 -0
- package/dist/lib/text/text-constants.cjs.map +1 -0
- package/dist/lib/text/text-constants.js +69 -0
- package/dist/lib/text/text-constants.js.map +1 -0
- package/dist/lib/text/text-tone-tokens.cjs +2 -0
- package/dist/lib/text/text-tone-tokens.cjs.map +1 -0
- package/dist/lib/text/text-tone-tokens.js +33 -0
- package/dist/lib/text/text-tone-tokens.js.map +1 -0
- package/dist/lib/text/text.cjs +2 -0
- package/dist/lib/text/text.cjs.map +1 -0
- package/dist/lib/text/text.js +203 -0
- package/dist/lib/text/text.js.map +1 -0
- package/dist/lib/toast/toast.cjs +1 -1
- package/dist/lib/toast/toast.cjs.map +1 -1
- package/dist/lib/toast/toast.js +10 -9
- package/dist/lib/toast/toast.js.map +1 -1
- package/dist/lib/toggle/toggle.cjs +1 -1
- package/dist/lib/toggle/toggle.cjs.map +1 -1
- package/dist/lib/toggle/toggle.js +37 -33
- package/dist/lib/toggle/toggle.js.map +1 -1
- package/dist/lib/top-banner-info/top-banner-info.cjs +1 -1
- package/dist/lib/top-banner-info/top-banner-info.cjs.map +1 -1
- package/dist/lib/top-banner-info/top-banner-info.js +16 -16
- package/dist/lib/top-banner-info/top-banner-info.js.map +1 -1
- package/dist/localization/en-US.cjs +2 -0
- package/dist/localization/en-US.cjs.map +1 -1
- package/dist/localization/en-US.js +2 -0
- package/dist/localization/en-US.js.map +1 -1
- package/dist/localization/es-LA.cjs +1 -1
- package/dist/localization/es-LA.cjs.map +1 -1
- package/dist/localization/es-LA.js +1 -1
- package/dist/localization/es-LA.js.map +1 -1
- package/dist/localization/it-IT.cjs +3 -3
- package/dist/localization/it-IT.cjs.map +1 -1
- package/dist/localization/it-IT.js +3 -3
- package/dist/localization/it-IT.js.map +1 -1
- package/dist/localization/nl-NL.cjs +2 -2
- package/dist/localization/nl-NL.cjs.map +1 -1
- package/dist/localization/nl-NL.js +2 -2
- package/dist/localization/nl-NL.js.map +1 -1
- package/dist/localization/ru-RU.cjs +1 -1
- package/dist/localization/ru-RU.cjs.map +1 -1
- package/dist/localization/ru-RU.js +1 -1
- package/dist/localization/ru-RU.js.map +1 -1
- package/dist/localization/zh-CN.cjs +1 -1
- package/dist/localization/zh-CN.cjs.map +1 -1
- package/dist/localization/zh-CN.js +1 -1
- package/dist/localization/zh-CN.js.map +1 -1
- package/dist/node_modules/@tiptap/vue-3.cjs.map +1 -1
- package/dist/node_modules/@tiptap/vue-3.js.map +1 -1
- package/dist/style.css +1 -1
- package/dist/types/common/mixins/keyboard_list_navigation.d.ts.map +1 -1
- package/dist/types/common/sr_only_close_button.vue.d.ts +38 -2
- package/dist/types/components/avatar/avatar.vue.d.ts +71 -25
- package/dist/types/components/avatar/avatar.vue.d.ts.map +1 -1
- package/dist/types/components/avatar/avatar_constants.d.ts +86 -29
- package/dist/types/components/avatar/avatar_constants.d.ts.map +1 -1
- package/dist/types/components/avatar/index.d.ts +1 -1
- package/dist/types/components/badge/badge.vue.d.ts.map +1 -1
- package/dist/types/components/banner/banner.vue.d.ts +216 -5
- package/dist/types/components/banner/banner.vue.d.ts.map +1 -1
- package/dist/types/components/breadcrumbs/breadcrumb_item.vue.d.ts +9 -0
- package/dist/types/components/breadcrumbs/breadcrumb_item.vue.d.ts.map +1 -1
- package/dist/types/components/breadcrumbs/breadcrumbs.vue.d.ts +9 -0
- package/dist/types/components/button/button.vue.d.ts +38 -2
- package/dist/types/components/button/button.vue.d.ts.map +1 -1
- package/dist/types/components/button/button_constants.d.ts +4 -0
- package/dist/types/components/button/button_constants.d.ts.map +1 -1
- package/dist/types/components/checkbox/checkbox.vue.d.ts +178 -4
- package/dist/types/components/checkbox/checkbox.vue.d.ts.map +1 -1
- package/dist/types/components/checkbox_group/checkbox_group.vue.d.ts +138 -0
- package/dist/types/components/chip/chip.vue.d.ts +38 -2
- package/dist/types/components/chip/chip.vue.d.ts.map +1 -1
- package/dist/types/components/codeblock/codeblock.vue.d.ts +22 -1
- package/dist/types/components/codeblock/codeblock.vue.d.ts.map +1 -1
- package/dist/types/components/codeblock/codeblock_constants.d.ts +3 -0
- package/dist/types/components/codeblock/codeblock_constants.d.ts.map +1 -0
- package/dist/types/components/collapsible/collapsible.vue.d.ts +38 -2
- package/dist/types/components/collapsible/collapsible.vue.d.ts.map +1 -1
- package/dist/types/components/combobox/combobox.vue.d.ts +81 -15
- package/dist/types/components/combobox/combobox.vue.d.ts.map +1 -1
- package/dist/types/components/combobox/combobox_empty-list.vue.d.ts +40 -7
- package/dist/types/components/combobox/combobox_empty-list.vue.d.ts.map +1 -1
- package/dist/types/components/combobox/combobox_loading-list.vue.d.ts +40 -7
- package/dist/types/components/combobox/combobox_loading-list.vue.d.ts.map +1 -1
- package/dist/types/components/datepicker/modules/month-year-picker.vue.d.ts.map +1 -1
- package/dist/types/components/dropdown/dropdown.vue.d.ts +76 -4
- package/dist/types/components/dropdown/dropdown.vue.d.ts.map +1 -1
- package/dist/types/components/emoji_picker/emoji_picker.vue.d.ts +190 -0
- package/dist/types/components/emoji_picker/modules/emoji_search.vue.d.ts +190 -0
- package/dist/types/components/emoji_picker/modules/emoji_search.vue.d.ts.map +1 -1
- package/dist/types/components/empty_state/empty_state.vue.d.ts.map +1 -1
- package/dist/types/components/empty_state/empty_state_constants.d.ts +23 -5
- package/dist/types/components/filter_pill/filter_pill.vue.d.ts +2382 -0
- package/dist/types/components/filter_pill/filter_pill.vue.d.ts.map +1 -0
- package/dist/types/components/filter_pill/index.d.ts +2 -0
- package/dist/types/components/filter_pill/index.d.ts.map +1 -0
- package/dist/types/components/hovercard/hovercard.vue.d.ts +152 -8
- package/dist/types/components/hovercard/hovercard.vue.d.ts.map +1 -1
- package/dist/types/components/image_viewer/image_viewer.vue.d.ts +76 -4
- package/dist/types/components/image_viewer/image_viewer.vue.d.ts.map +1 -1
- package/dist/types/components/input/input.vue.d.ts +182 -0
- package/dist/types/components/input/input.vue.d.ts.map +1 -1
- package/dist/types/components/input/input_constants.d.ts +4 -11
- package/dist/types/components/input_group/input_group.vue.d.ts +138 -0
- package/dist/types/components/input_group/input_group.vue.d.ts.map +1 -1
- package/dist/types/components/item_layout/item_layout.vue.d.ts +37 -6
- package/dist/types/components/item_layout/item_layout.vue.d.ts.map +1 -1
- package/dist/types/components/keyboard_shortcut/keyboard_shortcut.vue.d.ts +138 -0
- package/dist/types/components/keyboard_shortcut/keyboard_shortcut.vue.d.ts.map +1 -1
- package/dist/types/components/link/link.vue.d.ts +9 -0
- package/dist/types/components/list_item/list_item.vue.d.ts +40 -7
- package/dist/types/components/list_item/list_item.vue.d.ts.map +1 -1
- package/dist/types/components/loader/loader.vue.d.ts +1 -32
- package/dist/types/components/loader/loader.vue.d.ts.map +1 -1
- package/dist/types/components/modal/modal.vue.d.ts +214 -4
- package/dist/types/components/modal/modal.vue.d.ts.map +1 -1
- package/dist/types/components/mode_island/index.d.ts +3 -0
- package/dist/types/components/mode_island/index.d.ts.map +1 -0
- package/dist/types/components/mode_island/mode_island.vue.d.ts +3 -0
- package/dist/types/components/mode_island/mode_island.vue.d.ts.map +1 -0
- package/dist/types/components/mode_island/mode_island_constants.d.ts +10 -0
- package/dist/types/components/mode_island/mode_island_constants.d.ts.map +1 -0
- package/dist/types/components/mode_island/utils.d.ts +12 -0
- package/dist/types/components/mode_island/utils.d.ts.map +1 -0
- package/dist/types/components/mode_island/validators.d.ts +6 -0
- package/dist/types/components/mode_island/validators.d.ts.map +1 -0
- package/dist/types/components/notice/notice.vue.d.ts +216 -5
- package/dist/types/components/notice/notice.vue.d.ts.map +1 -1
- package/dist/types/components/notice/notice_action.vue.d.ts +76 -4
- package/dist/types/components/notice/notice_action.vue.d.ts.map +1 -1
- package/dist/types/components/notice/notice_content.vue.d.ts +140 -1
- package/dist/types/components/notice/notice_content.vue.d.ts.map +1 -1
- package/dist/types/components/pagination/pagination.vue.d.ts +38 -2
- package/dist/types/components/pagination/pagination.vue.d.ts.map +1 -1
- package/dist/types/components/popover/popover.vue.d.ts +76 -4
- package/dist/types/components/popover/popover.vue.d.ts.map +1 -1
- package/dist/types/components/popover/popover_header_footer.vue.d.ts +38 -2
- package/dist/types/components/popover/popover_header_footer.vue.d.ts.map +1 -1
- package/dist/types/components/progress_circle/index.d.ts +3 -0
- package/dist/types/components/progress_circle/index.d.ts.map +1 -0
- package/dist/types/components/progress_circle/progress_circle.vue.d.ts +70 -0
- package/dist/types/components/progress_circle/progress_circle.vue.d.ts.map +1 -0
- package/dist/types/components/progress_circle/progress_circle_constants.d.ts +23 -0
- package/dist/types/components/progress_circle/progress_circle_constants.d.ts.map +1 -0
- package/dist/types/components/radio/radio.vue.d.ts +173 -0
- package/dist/types/components/radio/radio.vue.d.ts.map +1 -1
- package/dist/types/components/radio_group/radio_group.vue.d.ts +138 -0
- package/dist/types/components/rich_text_editor/extensions/channels/ChannelComponent.vue.d.ts +9 -0
- package/dist/types/components/rich_text_editor/extensions/channels/ChannelComponent.vue.d.ts.map +1 -1
- package/dist/types/components/rich_text_editor/extensions/mentions/MentionComponent.vue.d.ts +9 -0
- package/dist/types/components/rich_text_editor/extensions/mentions/MentionSuggestion.vue.d.ts +209 -25
- package/dist/types/components/rich_text_editor/extensions/mentions/MentionSuggestion.vue.d.ts.map +1 -1
- package/dist/types/components/rich_text_editor/extensions/slash_command/SlashCommandSuggestion.vue.d.ts +140 -1
- package/dist/types/components/rich_text_editor/extensions/slash_command/SlashCommandSuggestion.vue.d.ts.map +1 -1
- package/dist/types/components/rich_text_editor/extensions/suggestion/SuggestionList.vue.d.ts +40 -7
- package/dist/types/components/rich_text_editor/extensions/suggestion/SuggestionList.vue.d.ts.map +1 -1
- package/dist/types/components/rich_text_editor/extensions/variable/VariableComponent.vue.d.ts +296 -6
- package/dist/types/components/rich_text_editor/extensions/variable/VariableComponent.vue.d.ts.map +1 -1
- package/dist/types/components/root_layout/root_layout_constants.d.ts +2 -0
- package/dist/types/components/root_layout/root_layout_constants.d.ts.map +1 -1
- package/dist/types/components/select_menu/select_menu.vue.d.ts +172 -13
- package/dist/types/components/select_menu/select_menu.vue.d.ts.map +1 -1
- package/dist/types/components/split_button/{split_button-omega.vue.d.ts → split_button-end.vue.d.ts} +39 -3
- package/dist/types/components/split_button/{split_button-omega.vue.d.ts.map → split_button-end.vue.d.ts.map} +1 -1
- package/dist/types/components/split_button/{split_button-alpha.vue.d.ts → split_button-start.vue.d.ts} +103 -4
- package/dist/types/components/split_button/split_button-start.vue.d.ts.map +1 -0
- package/dist/types/components/split_button/split_button.vue.d.ts +443 -34
- package/dist/types/components/split_button/split_button.vue.d.ts.map +1 -1
- package/dist/types/components/tab/index.d.ts +1 -1
- package/dist/types/components/tab/tab.vue.d.ts +73 -7
- package/dist/types/components/tab/tab.vue.d.ts.map +1 -1
- package/dist/types/components/tab/tab_group.vue.d.ts +42 -0
- package/dist/types/components/tab/tab_group.vue.d.ts.map +1 -1
- package/dist/types/components/tab/tabs_constants.d.ts +5 -3
- package/dist/types/components/tab/tabs_constants.d.ts.map +1 -1
- package/dist/types/components/text/index.d.ts +3 -0
- package/dist/types/components/text/index.d.ts.map +1 -0
- package/dist/types/components/text/scripts/update-text-tone-tokens.d.cts +3 -0
- package/dist/types/components/text/scripts/update-text-tone-tokens.d.cts.map +1 -0
- package/dist/types/components/text/scripts/update_text_tone_tokens.d.cts +3 -0
- package/dist/types/components/text/scripts/update_text_tone_tokens.d.cts.map +1 -0
- package/dist/types/components/text/scripts/update_text_tone_tokens.d.ts +1 -0
- package/dist/types/components/text/scripts/update_text_tone_tokens.d.ts.map +1 -0
- package/dist/types/components/text/text.vue.d.ts +141 -0
- package/dist/types/components/text/text.vue.d.ts.map +1 -0
- package/dist/types/components/text/text_constants.d.ts +73 -0
- package/dist/types/components/text/text_constants.d.ts.map +1 -0
- package/dist/types/components/text/text_tone_tokens.d.ts +3 -0
- package/dist/types/components/text/text_tone_tokens.d.ts.map +1 -0
- package/dist/types/components/toast/layouts/toast_layout_alternate.vue.d.ts +216 -5
- package/dist/types/components/toast/layouts/toast_layout_alternate.vue.d.ts.map +1 -1
- package/dist/types/components/toast/layouts/toast_layout_default.vue.d.ts +216 -5
- package/dist/types/components/toast/layouts/toast_layout_default.vue.d.ts.map +1 -1
- package/dist/types/components/toast/toast.vue.d.ts +864 -20
- package/dist/types/components/toast/toast.vue.d.ts.map +1 -1
- package/dist/types/components/toggle/toggle.vue.d.ts +9 -1
- package/dist/types/components/toggle/toggle.vue.d.ts.map +1 -1
- package/dist/types/index.d.ts +4 -0
- package/dist/types/recipes/buttons/callbar_button/callbar_button.vue.d.ts +38 -2
- package/dist/types/recipes/buttons/callbar_button/callbar_button.vue.d.ts.map +1 -1
- package/dist/types/recipes/buttons/callbar_button_with_dropdown/callbar_button_with_dropdown.vue.d.ts +152 -8
- package/dist/types/recipes/buttons/callbar_button_with_dropdown/callbar_button_with_dropdown.vue.d.ts.map +1 -1
- package/dist/types/recipes/buttons/callbar_button_with_popover/callbar_button_with_popover.vue.d.ts +152 -8
- package/dist/types/recipes/buttons/callbar_button_with_popover/callbar_button_with_popover.vue.d.ts.map +1 -1
- package/dist/types/recipes/cards/ivr_node/ivr_node.vue.d.ts +114 -6
- package/dist/types/recipes/cards/ivr_node/ivr_node.vue.d.ts.map +1 -1
- package/dist/types/recipes/chips/grouped_chip/grouped_chip.vue.d.ts +38 -2
- package/dist/types/recipes/chips/grouped_chip/grouped_chip.vue.d.ts.map +1 -1
- package/dist/types/recipes/comboboxes/combobox_with_popover/combobox_with_popover.vue.d.ts +239 -35
- package/dist/types/recipes/comboboxes/combobox_with_popover/combobox_with_popover.vue.d.ts.map +1 -1
- package/dist/types/recipes/conversation_view/attachment_carousel/attachment_carousel.vue.d.ts +196 -12
- package/dist/types/recipes/conversation_view/attachment_carousel/attachment_carousel.vue.d.ts.map +1 -1
- package/dist/types/recipes/conversation_view/attachment_carousel/media_components/image_carousel.vue.d.ts +158 -10
- package/dist/types/recipes/conversation_view/attachment_carousel/media_components/image_carousel.vue.d.ts.map +1 -1
- package/dist/types/recipes/conversation_view/editor/EditorToolbarButton.vue.d.ts +38 -2
- package/dist/types/recipes/conversation_view/editor/EditorToolbarDropdownButton.vue.d.ts +114 -6
- package/dist/types/recipes/conversation_view/editor/EditorToolbarDropdownButton.vue.d.ts.map +1 -1
- package/dist/types/recipes/conversation_view/editor/EditorToolbarPopoverButton.vue.d.ts +114 -6
- package/dist/types/recipes/conversation_view/editor/EditorToolbarPopoverButton.vue.d.ts.map +1 -1
- package/dist/types/recipes/conversation_view/emoji_row/emoji_row.vue.d.ts +38 -2
- package/dist/types/recipes/conversation_view/emoji_row/emoji_row.vue.d.ts.map +1 -1
- package/dist/types/recipes/conversation_view/feed_item_pill/feed_item_pill.vue.d.ts +75 -8
- package/dist/types/recipes/conversation_view/feed_item_pill/feed_item_pill.vue.d.ts.map +1 -1
- package/dist/types/recipes/conversation_view/feed_item_row/feed_item_row.vue.d.ts +111 -32
- package/dist/types/recipes/conversation_view/feed_item_row/feed_item_row.vue.d.ts.map +1 -1
- package/dist/types/recipes/conversation_view/message_input/extensions/meeting_pill/MeetingPill.vue.d.ts +75 -8
- package/dist/types/recipes/conversation_view/message_input/extensions/meeting_pill/MeetingPill.vue.d.ts.map +1 -1
- package/dist/types/recipes/conversation_view/message_input/message_input_button.vue.d.ts +176 -2
- package/dist/types/recipes/conversation_view/message_input/message_input_button.vue.d.ts.map +1 -1
- package/dist/types/recipes/conversation_view/message_input/message_input_link.vue.d.ts +472 -8
- package/dist/types/recipes/conversation_view/message_input/message_input_link.vue.d.ts.map +1 -1
- package/dist/types/recipes/conversation_view/message_input/message_input_topbar.vue.d.ts +176 -2
- package/dist/types/recipes/conversation_view/message_input/message_input_topbar.vue.d.ts.map +1 -1
- package/dist/types/recipes/header/settings_menu_button/settings_menu_button.vue.d.ts +38 -2
- package/dist/types/recipes/header/settings_menu_button/settings_menu_button.vue.d.ts.map +1 -1
- package/dist/types/recipes/item_layout/contact_info/contact_info.vue.d.ts +108 -31
- package/dist/types/recipes/item_layout/contact_info/contact_info.vue.d.ts.map +1 -1
- package/dist/types/recipes/leftbar/callbox/callbox.vue.d.ts +71 -25
- package/dist/types/recipes/leftbar/callbox/callbox.vue.d.ts.map +1 -1
- package/dist/types/recipes/leftbar/contact_centers_row/contact_centers_row.vue.d.ts +38 -2
- package/dist/types/recipes/leftbar/contact_centers_row/contact_centers_row.vue.d.ts.map +1 -1
- package/dist/types/recipes/leftbar/contact_row/contact_row.vue.d.ts +467 -28
- package/dist/types/recipes/leftbar/contact_row/contact_row.vue.d.ts.map +1 -1
- package/dist/types/recipes/leftbar/general_row/general_row.vue.d.ts +396 -3
- package/dist/types/recipes/leftbar/general_row/general_row.vue.d.ts.map +1 -1
- package/dist/types/recipes/leftbar/group_row/group_row.vue.d.ts +396 -3
- package/dist/types/recipes/leftbar/group_row/group_row.vue.d.ts.map +1 -1
- package/dist/types/recipes/notices/top_banner_info/top_banner_info.vue.d.ts.map +1 -1
- package/package.json +6 -5
- package/dist/lib/split-button/split-button-alpha.cjs +0 -2
- package/dist/lib/split-button/split-button-alpha.cjs.map +0 -1
- package/dist/lib/split-button/split-button-alpha.js +0 -138
- package/dist/lib/split-button/split-button-alpha.js.map +0 -1
- package/dist/lib/split-button/split-button-omega.cjs +0 -2
- package/dist/lib/split-button/split-button-omega.cjs.map +0 -1
- package/dist/lib/split-button/split-button-omega.js.map +0 -1
- package/dist/types/components/split_button/split_button-alpha.vue.d.ts.map +0 -1
- package/dist/types/recipes/conversation_view/attachment_carousel/media_components/progress_bar.vue.d.ts +0 -30
- package/dist/types/recipes/conversation_view/attachment_carousel/media_components/progress_bar.vue.d.ts.map +0 -1
package/dist/lib/modal/modal.js
CHANGED
|
@@ -1,25 +1,27 @@
|
|
|
1
|
-
import { DtIconClose as
|
|
2
|
-
import
|
|
1
|
+
import { DtIconClose as O } from "@dialpad/dialtone-icons/vue3";
|
|
2
|
+
import B from "../../common/mixins/modal.js";
|
|
3
3
|
import { MODAL_BANNER_KINDS as y, MODAL_SIZE_MODIFIERS as b, MODAL_KIND_MODIFIERS as E } from "./modal-constants.js";
|
|
4
|
-
import { disableRootScrolling as
|
|
5
|
-
import { EVENT_KEYNAMES as
|
|
6
|
-
import
|
|
7
|
-
import { DialtoneLocalization as
|
|
8
|
-
import { resolveComponent as
|
|
4
|
+
import { disableRootScrolling as F, returnFirstEl as g, enableRootScrolling as M, hasSlotContent as A, getUniqueString as N } from "../../common/utils/index.js";
|
|
5
|
+
import { EVENT_KEYNAMES as r } from "../../common/constants/index.js";
|
|
6
|
+
import R from "../../shared/sr_only_close_button.js";
|
|
7
|
+
import { DialtoneLocalization as L } from "../../localization/index.js";
|
|
8
|
+
import { resolveComponent as n, openBlock as a, createBlock as c, Teleport as v, createVNode as f, mergeProps as z, toHandlers as K, withCtx as m, createElementBlock as d, normalizeClass as u, renderSlot as h, createTextVNode as S, toDisplayString as _, createCommentVNode as C, Transition as q, withDirectives as x, createElementVNode as j, vShow as H } from "vue";
|
|
9
9
|
import { _ as V } from "../../_plugin-vue_export-helper-CHgC5LLL.js";
|
|
10
|
-
import P from "../
|
|
11
|
-
import U from "../
|
|
12
|
-
import
|
|
13
|
-
|
|
10
|
+
import P from "../text/text.js";
|
|
11
|
+
import U from "../button/button.js";
|
|
12
|
+
import W from "../lazy-show/lazy-show.js";
|
|
13
|
+
import { NOTICE_KINDS as Z } from "../notice/notice-constants.js";
|
|
14
|
+
const Y = {
|
|
14
15
|
compatConfig: { MODE: 3 },
|
|
15
16
|
name: "DtModal",
|
|
16
17
|
components: {
|
|
17
|
-
DtLazyShow:
|
|
18
|
-
DtButton:
|
|
19
|
-
|
|
20
|
-
|
|
18
|
+
DtLazyShow: W,
|
|
19
|
+
DtButton: U,
|
|
20
|
+
DtText: P,
|
|
21
|
+
DtIconClose: O,
|
|
22
|
+
SrOnlyCloseButton: R
|
|
21
23
|
},
|
|
22
|
-
mixins: [
|
|
24
|
+
mixins: [B],
|
|
23
25
|
props: {
|
|
24
26
|
/**
|
|
25
27
|
* Body text to display as the modal's main content.
|
|
@@ -43,7 +45,7 @@ const Z = {
|
|
|
43
45
|
labelledById: {
|
|
44
46
|
type: String,
|
|
45
47
|
default: function() {
|
|
46
|
-
return
|
|
48
|
+
return N();
|
|
47
49
|
}
|
|
48
50
|
},
|
|
49
51
|
/**
|
|
@@ -122,7 +124,7 @@ const Z = {
|
|
|
122
124
|
type: String,
|
|
123
125
|
default: "warning",
|
|
124
126
|
validate(e) {
|
|
125
|
-
return
|
|
127
|
+
return Z.includes(e);
|
|
126
128
|
}
|
|
127
129
|
},
|
|
128
130
|
/**
|
|
@@ -207,9 +209,9 @@ const Z = {
|
|
|
207
209
|
MODAL_KIND_MODIFIERS: E,
|
|
208
210
|
MODAL_SIZE_MODIFIERS: b,
|
|
209
211
|
MODAL_BANNER_KINDS: y,
|
|
210
|
-
EVENT_KEYNAMES:
|
|
211
|
-
hasSlotContent:
|
|
212
|
-
i18n: new
|
|
212
|
+
EVENT_KEYNAMES: r,
|
|
213
|
+
hasSlotContent: A,
|
|
214
|
+
i18n: new L()
|
|
213
215
|
};
|
|
214
216
|
},
|
|
215
217
|
computed: {
|
|
@@ -220,11 +222,11 @@ const Z = {
|
|
|
220
222
|
},
|
|
221
223
|
keydown: (e) => {
|
|
222
224
|
switch (e.code) {
|
|
223
|
-
case
|
|
224
|
-
case
|
|
225
|
+
case r.esc:
|
|
226
|
+
case r.escape:
|
|
225
227
|
this.close();
|
|
226
228
|
break;
|
|
227
|
-
case
|
|
229
|
+
case r.tab:
|
|
228
230
|
this.trapFocus(e);
|
|
229
231
|
break;
|
|
230
232
|
}
|
|
@@ -260,10 +262,10 @@ const Z = {
|
|
|
260
262
|
if (e) {
|
|
261
263
|
this.previousActiveElement = document.activeElement;
|
|
262
264
|
const l = ((o = this.$refs.modalRoot) == null ? void 0 : o.$el) || this.$el;
|
|
263
|
-
|
|
265
|
+
F(g(l).getRootNode().host);
|
|
264
266
|
} else {
|
|
265
267
|
const l = ((t = this.$refs.modalRoot) == null ? void 0 : t.$el) || this.$el;
|
|
266
|
-
|
|
268
|
+
M(g(l).getRootNode().host), (i = this.previousActiveElement) == null || i.focus(), this.previousActiveElement = null;
|
|
267
269
|
}
|
|
268
270
|
}
|
|
269
271
|
}
|
|
@@ -290,17 +292,17 @@ const Z = {
|
|
|
290
292
|
i.length && !i.includes(o) && (i.includes(document.activeElement) || this.focusFirstElement(t));
|
|
291
293
|
}
|
|
292
294
|
}
|
|
293
|
-
},
|
|
295
|
+
}, $ = ["aria-describedby", "aria-labelledby"], G = ["id"], J = {
|
|
294
296
|
key: 4,
|
|
295
297
|
class: "d-modal__footer"
|
|
296
298
|
};
|
|
297
|
-
function
|
|
298
|
-
const
|
|
299
|
-
return a(),
|
|
299
|
+
function Q(e, o, t, i, l, s) {
|
|
300
|
+
const k = n("dt-text"), w = n("sr-only-close-button"), p = n("dt-icon-close"), T = n("dt-button"), D = n("dt-lazy-show");
|
|
301
|
+
return a(), c(v, {
|
|
300
302
|
disabled: !t.appendTo,
|
|
301
303
|
to: t.appendTo
|
|
302
304
|
}, [
|
|
303
|
-
|
|
305
|
+
f(D, z({
|
|
304
306
|
ref: "modalRoot",
|
|
305
307
|
transition: "d-zoom",
|
|
306
308
|
show: t.show,
|
|
@@ -312,28 +314,28 @@ function J(e, o, t, i, l, s) {
|
|
|
312
314
|
],
|
|
313
315
|
"data-qa": "dt-modal",
|
|
314
316
|
"aria-hidden": s.open
|
|
315
|
-
},
|
|
316
|
-
default:
|
|
317
|
-
t.show && (l.hasSlotContent(e.$slots.banner) || t.bannerTitle) ? (a(),
|
|
317
|
+
}, K(s.modalListeners)), {
|
|
318
|
+
default: m(() => [
|
|
319
|
+
t.show && (l.hasSlotContent(e.$slots.banner) || t.bannerTitle) ? (a(), d("div", {
|
|
318
320
|
key: 0,
|
|
319
321
|
"data-qa": "dt-modal-banner",
|
|
320
|
-
class:
|
|
322
|
+
class: u([
|
|
321
323
|
"d-modal__banner",
|
|
322
324
|
t.bannerClass,
|
|
323
325
|
s.bannerKindClass
|
|
324
326
|
])
|
|
325
327
|
}, [
|
|
326
|
-
|
|
327
|
-
|
|
328
|
+
h(e.$slots, "banner", {}, () => [
|
|
329
|
+
S(_(t.bannerTitle), 1)
|
|
328
330
|
])
|
|
329
|
-
], 2)) :
|
|
330
|
-
|
|
331
|
+
], 2)) : C("", !0),
|
|
332
|
+
f(q, {
|
|
331
333
|
appear: "",
|
|
332
334
|
name: "d-modal__dialog"
|
|
333
335
|
}, {
|
|
334
|
-
default:
|
|
335
|
-
|
|
336
|
-
class:
|
|
336
|
+
default: m(() => [
|
|
337
|
+
x(j("div", {
|
|
338
|
+
class: u([
|
|
337
339
|
"d-modal__dialog",
|
|
338
340
|
{ "d-modal__dialog--scrollable": t.fixedHeaderFooter },
|
|
339
341
|
t.dialogClass
|
|
@@ -343,43 +345,54 @@ function J(e, o, t, i, l, s) {
|
|
|
343
345
|
"aria-describedby": t.describedById,
|
|
344
346
|
"aria-labelledby": t.labelledById
|
|
345
347
|
}, [
|
|
346
|
-
l.hasSlotContent(e.$slots.header) ? (a(),
|
|
348
|
+
l.hasSlotContent(e.$slots.header) ? (a(), d("div", {
|
|
347
349
|
key: 0,
|
|
348
350
|
id: t.labelledById,
|
|
349
351
|
class: "d-modal__header",
|
|
350
352
|
"data-qa": "dt-modal-title"
|
|
351
353
|
}, [
|
|
352
|
-
|
|
353
|
-
], 8,
|
|
354
|
+
h(e.$slots, "header")
|
|
355
|
+
], 8, G)) : (a(), c(k, {
|
|
354
356
|
key: 1,
|
|
355
357
|
id: t.labelledById,
|
|
358
|
+
kind: "headline",
|
|
359
|
+
size: "2xl",
|
|
360
|
+
strength: "medium",
|
|
361
|
+
density: "100",
|
|
362
|
+
"text-box-trim": "start",
|
|
363
|
+
as: "h2",
|
|
356
364
|
class: "d-modal__header",
|
|
357
365
|
"data-qa": "dt-modal-title"
|
|
358
|
-
},
|
|
359
|
-
|
|
366
|
+
}, {
|
|
367
|
+
default: m(() => [
|
|
368
|
+
S(_(t.title), 1)
|
|
369
|
+
]),
|
|
370
|
+
_: 1
|
|
371
|
+
}, 8, ["id"])),
|
|
372
|
+
l.hasSlotContent(e.$slots.default) ? (a(), d("div", {
|
|
360
373
|
key: 2,
|
|
361
|
-
class:
|
|
374
|
+
class: u([
|
|
362
375
|
"d-modal__content",
|
|
363
376
|
t.contentClass
|
|
364
377
|
]),
|
|
365
378
|
"data-qa": "dt-modal-copy"
|
|
366
379
|
}, [
|
|
367
|
-
|
|
368
|
-
], 2)) : (a(),
|
|
380
|
+
h(e.$slots, "default")
|
|
381
|
+
], 2)) : (a(), d("p", {
|
|
369
382
|
key: 3,
|
|
370
|
-
class:
|
|
383
|
+
class: u([
|
|
371
384
|
"d-modal__content",
|
|
372
385
|
t.contentClass
|
|
373
386
|
]),
|
|
374
387
|
"data-qa": "dt-modal-copy"
|
|
375
388
|
}, _(t.copy), 3)),
|
|
376
|
-
s.hasFooterSlot ? (a(),
|
|
377
|
-
|
|
378
|
-
])) :
|
|
379
|
-
t.hideClose ? (a(),
|
|
389
|
+
s.hasFooterSlot ? (a(), d("footer", J, [
|
|
390
|
+
h(e.$slots, "footer")
|
|
391
|
+
])) : C("", !0),
|
|
392
|
+
t.hideClose ? (a(), c(w, {
|
|
380
393
|
key: 5,
|
|
381
394
|
onClose: s.close
|
|
382
|
-
}, null, 8, ["onClose"])) : (a(),
|
|
395
|
+
}, null, 8, ["onClose"])) : (a(), c(T, {
|
|
383
396
|
key: 6,
|
|
384
397
|
class: "d-modal__close",
|
|
385
398
|
"data-qa": "dt-modal-close-button",
|
|
@@ -390,12 +403,12 @@ function J(e, o, t, i, l, s) {
|
|
|
390
403
|
title: s.closeButtonTitle,
|
|
391
404
|
onClick: s.close
|
|
392
405
|
}, {
|
|
393
|
-
icon:
|
|
394
|
-
|
|
406
|
+
icon: m(({ iconSize: I }) => [
|
|
407
|
+
f(p, { size: I }, null, 8, ["size"])
|
|
395
408
|
]),
|
|
396
409
|
_: 1
|
|
397
410
|
}, 8, ["aria-label", "title", "onClick"]))
|
|
398
|
-
], 10,
|
|
411
|
+
], 10, $), [
|
|
399
412
|
[H, t.show]
|
|
400
413
|
])
|
|
401
414
|
]),
|
|
@@ -406,8 +419,8 @@ function J(e, o, t, i, l, s) {
|
|
|
406
419
|
}, 16, ["show", "class", "aria-hidden"])
|
|
407
420
|
], 8, ["disabled", "to"]);
|
|
408
421
|
}
|
|
409
|
-
const
|
|
422
|
+
const ue = /* @__PURE__ */ V(Y, [["render", Q]]);
|
|
410
423
|
export {
|
|
411
|
-
|
|
424
|
+
ue as default
|
|
412
425
|
};
|
|
413
426
|
//# sourceMappingURL=modal.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"modal.js","sources":["../../../components/modal/modal.vue"],"sourcesContent":["<template>\n <teleport\n :disabled=\"!appendTo\"\n :to=\"appendTo\"\n >\n <dt-lazy-show\n ref=\"modalRoot\"\n transition=\"d-zoom\"\n :show=\"show\"\n :class=\"[\n 'd-modal',\n MODAL_KIND_MODIFIERS[kind],\n MODAL_SIZE_MODIFIERS[size],\n modalClass,\n ]\"\n data-qa=\"dt-modal\"\n :aria-hidden=\"open\"\n v-on=\"modalListeners\"\n >\n <div\n v-if=\"show && (hasSlotContent($slots.banner) || bannerTitle)\"\n data-qa=\"dt-modal-banner\"\n :class=\"[\n 'd-modal__banner',\n bannerClass,\n bannerKindClass,\n ]\"\n >\n <!-- @slot Slot for the banner, defaults to bannerTitle prop -->\n <slot name=\"banner\">\n {{ bannerTitle }}\n </slot>\n </div>\n <transition\n appear\n name=\"d-modal__dialog\"\n >\n <div\n v-show=\"show\"\n :class=\"[\n 'd-modal__dialog',\n { 'd-modal__dialog--scrollable': fixedHeaderFooter },\n dialogClass,\n ]\"\n role=\"dialog\"\n aria-modal=\"true\"\n :aria-describedby=\"describedById\"\n :aria-labelledby=\"labelledById\"\n >\n <div\n v-if=\"hasSlotContent($slots.header)\"\n :id=\"labelledById\"\n class=\"d-modal__header\"\n data-qa=\"dt-modal-title\"\n >\n <!-- @slot Slot for dialog header section, taking the place of any \"title\" text prop -->\n <slot name=\"header\" />\n </div>\n <h2\n v-else\n :id=\"labelledById\"\n class=\"d-modal__header\"\n data-qa=\"dt-modal-title\"\n >\n {{ title }}\n </h2>\n <div\n v-if=\"hasSlotContent($slots.default)\"\n :class=\"[\n 'd-modal__content',\n contentClass,\n ]\"\n data-qa=\"dt-modal-copy\"\n >\n <!-- @slot Default slot for dialog body section, taking the place of any \"copy\" text prop -->\n <slot />\n </div>\n <p\n v-else\n :class=\"[\n 'd-modal__content',\n contentClass,\n ]\"\n data-qa=\"dt-modal-copy\"\n >\n {{ copy }}\n </p>\n <footer\n v-if=\"hasFooterSlot\"\n class=\"d-modal__footer\"\n >\n <!-- @slot Slot for dialog footer content, often containing cancel and confirm buttons. -->\n <slot name=\"footer\" />\n </footer>\n <sr-only-close-button\n v-if=\"hideClose\"\n @close=\"close\"\n />\n <dt-button\n v-else\n class=\"d-modal__close\"\n data-qa=\"dt-modal-close-button\"\n size=\"md\"\n kind=\"muted\"\n importance=\"clear\"\n :aria-label=\"closeButtonTitle\"\n :title=\"closeButtonTitle\"\n @click=\"close\"\n >\n <template #icon=\"{ iconSize }\">\n <dt-icon-close\n :size=\"iconSize\"\n />\n </template>\n </dt-button>\n </div>\n </transition>\n </dt-lazy-show>\n </teleport>\n</template>\n\n<script>\n/* eslint-disable max-lines */\nimport { DtButton } from '@/components/button';\nimport { DtIconClose } from '@dialpad/dialtone-icons/vue3';\nimport Modal from '@/common/mixins/modal';\nimport {\n MODAL_BANNER_KINDS,\n MODAL_KIND_MODIFIERS,\n MODAL_SIZE_MODIFIERS,\n} from './modal_constants';\nimport { returnFirstEl, getUniqueString, hasSlotContent, disableRootScrolling, enableRootScrolling } from '@/common/utils';\nimport { DtLazyShow } from '@/components/lazy_show';\nimport { EVENT_KEYNAMES } from '@/common/constants';\nimport SrOnlyCloseButton from '@/common/sr_only_close_button.vue';\nimport { NOTICE_KINDS } from '@/components/notice';\nimport { DialtoneLocalization } from '@/localization';\n\n/**\n * Modals focus the user’s attention exclusively on one task or piece of information\n * via a window that sits on top of the page content.\n * @see https://dialtone.dialpad.com/components/modal.html\n */\nexport default {\n compatConfig: { MODE: 3 },\n name: 'DtModal',\n\n components: {\n DtLazyShow,\n DtButton,\n DtIconClose,\n SrOnlyCloseButton,\n },\n\n mixins: [Modal],\n\n props: {\n /**\n * Body text to display as the modal's main content.\n */\n copy: {\n type: String,\n default: '',\n },\n\n /**\n * Id to use for the dialog's aria-describedby.\n * Recommended only if the dialog content itself isn't enough to give full context,\n * as screen readers should recite the dialog contents by default before any aria-description.\n */\n describedById: {\n type: String,\n default: '',\n },\n\n /**\n * Id to use for the dialog's aria-labelledby.\n */\n labelledById: {\n type: String,\n default: function () { return getUniqueString(); },\n },\n\n /**\n * Whether the modal should be shown.\n * Parent component can sync on this value to control the modal's visibility.\n * @values true, false\n */\n show: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Title text to display in the modal header.\n */\n title: {\n type: String,\n default: '',\n },\n\n /**\n * Title text to display in the modal banner.\n */\n bannerTitle: {\n type: String,\n default: '',\n },\n\n /**\n * The theme of the modal. kind - default or danger,\n * @values default, danger\n */\n kind: {\n type: String,\n default: 'default',\n validator: (k) => Object.keys(MODAL_KIND_MODIFIERS).includes(k),\n },\n\n /**\n * The size of the modal. size - default or full,\n * @values default, full\n */\n size: {\n type: String,\n default: 'default',\n validator: (s) => Object.keys(MODAL_SIZE_MODIFIERS).includes(s),\n },\n\n /**\n * Additional class name for the root modal element.\n * Can accept String, Object, and Array, i.e. has the\n * same API as Vue's built-in handling of the class attribute.\n */\n modalClass: {\n type: [String, Object, Array],\n default: '',\n },\n\n /**\n * Additional class name for the dialog element within the modal.\n * Can accept String, Object, and Array, i.e. has the\n * same API as Vue's built-in handling of the class attribute.\n */\n dialogClass: {\n type: [String, Object, Array],\n default: '',\n },\n\n /**\n * Additional class name for the content element within the modal.\n * Can accept String, Object, and Array, i.e. has the\n * same API as Vue's built-in handling of the class attribute.\n */\n contentClass: {\n type: [String, Object, Array],\n default: '',\n },\n\n /**\n * Sets the color of the banner.\n * @values base, error, info, success, warning\n */\n bannerKind: {\n type: String,\n default: 'warning',\n validate (kind) {\n return NOTICE_KINDS.includes(kind);\n },\n },\n\n /**\n * Additional class name for the banner element within the modal.\n * Can accept String, Object, and Array, i.e. has the\n * same API as Vue's built-in handling of the class attribute.\n */\n bannerClass: {\n type: [String, Object, Array],\n default: '',\n },\n\n /**\n * Hides the close button on the modal\n * @values true, false\n */\n hideClose: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Whether the modal will close when you click outside of the dialog on the overlay.\n * @values true, false\n */\n closeOnClick: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Scrollable modal that allows scroll the modal content keeping the header and footer fixed\n * @values true, false\n */\n fixedHeaderFooter: {\n type: Boolean,\n default: true,\n },\n\n /**\n * The element that is focused when the modal is opened. This can be an\n * HTMLElement within the modal, a string starting with '#' which will\n * find the element by ID. 'first' which will automatically focus\n * the first element, or 'dialog' which will focus the dialog window itself.\n * If the dialog is modal this prop cannot be 'none'.\n */\n initialFocusElement: {\n type: [String, HTMLElement],\n default: 'first',\n validator: initialFocusElement => {\n return initialFocusElement === 'first' ||\n (initialFocusElement instanceof HTMLElement) ||\n initialFocusElement.startsWith('#');\n },\n },\n\n /**\n * A CSS selector string for the element to portal the modal to. If not provided, the modal will be rendered in its default location.\n */\n appendTo: {\n type: String,\n default: undefined,\n },\n },\n\n emits: [\n /**\n * Native button click event\n *\n * @event click\n * @type {PointerEvent | KeyboardEvent}\n */\n 'click',\n\n /**\n * Native keydown event\n *\n * @event keydown\n * @type {KeyboardEvent}\n */\n 'keydown',\n\n /**\n * The modal will emit a \"false\" boolean value for this event when the user performs a modal-closing action.\n * Parent components can sync on this value to create a 2-way binding to control modal visibility.\n *\n * @event update:show\n * @type {Boolean}\n */\n 'update:show',\n ],\n\n data () {\n return {\n MODAL_KIND_MODIFIERS,\n MODAL_SIZE_MODIFIERS,\n MODAL_BANNER_KINDS,\n EVENT_KEYNAMES,\n hasSlotContent,\n i18n: new DialtoneLocalization(),\n };\n },\n\n computed: {\n modalListeners () {\n return {\n click: event => {\n // Handle backdrop clicks for closing modal\n if (this.closeOnClick && event.target === event.currentTarget) {\n this.close();\n } else if (this.show && event.target !== event.currentTarget) {\n // Ensure focus stays within modal when clicking inside it\n this.handleModalClick(event);\n }\n\n this.$emit('click', event);\n },\n\n keydown: event => {\n switch (event.code) {\n case EVENT_KEYNAMES.esc:\n case EVENT_KEYNAMES.escape:\n this.close();\n break;\n case EVENT_KEYNAMES.tab:\n this.trapFocus(event);\n break;\n }\n this.$emit('keydown', event);\n },\n\n 'after-enter': async () => {\n this.$emit('update:show', true);\n await this.setFocusAfterTransition();\n },\n\n focusin: event => {\n // Ensure focus stays within modal\n const modalEl = this.$refs.modalRoot?.$el || this.$el;\n if (this.show && modalEl && !modalEl.contains(event.target)) {\n event.preventDefault();\n this.focusFirstElement(modalEl);\n }\n },\n };\n },\n\n open () {\n return `${!this.show}`;\n },\n\n hasFooterSlot () {\n return !!this.$slots.footer;\n },\n\n bannerKindClass () {\n return MODAL_BANNER_KINDS[this.bannerKind];\n },\n\n closeButtonTitle () {\n return this.i18n.$t('DIALTONE_CLOSE_BUTTON');\n },\n },\n\n watch: {\n show: {\n handler (isShowing) {\n if (isShowing) {\n // Set a reference to the previously-active element, to which we'll return focus on modal close.\n this.previousActiveElement = document.activeElement;\n const modalEl = this.$refs.modalRoot?.$el || this.$el;\n disableRootScrolling(returnFirstEl(modalEl).getRootNode().host);\n } else {\n const modalEl = this.$refs.modalRoot?.$el || this.$el;\n enableRootScrolling(returnFirstEl(modalEl).getRootNode().host);\n // Modal is being hidden, so return focus to the previously active element before clearing the reference.\n this.previousActiveElement?.focus();\n this.previousActiveElement = null;\n }\n },\n },\n },\n\n methods: {\n close () {\n this.$emit('update:show', false);\n },\n\n async setFocusAfterTransition () {\n const modalEl = this.$refs.modalRoot?.$el || this.$el;\n if (this.initialFocusElement === 'first') {\n await this.focusFirstElement(modalEl);\n } else if (this.initialFocusElement.startsWith('#')) {\n await this.focusElementById(this.initialFocusElement);\n } else if (this.initialFocusElement instanceof HTMLElement) {\n this.initialFocusElement.focus();\n }\n },\n\n trapFocus (e) {\n if (this.show) {\n const modalEl = this.$refs.modalRoot?.$el || this.$el;\n this.focusTrappedTabPress(e, modalEl);\n }\n },\n\n handleModalClick (event) {\n // Ensure focus stays within modal when clicking inside it\n const clickedElement = event.target;\n const modalEl = this.$refs.modalRoot?.$el || this.$el;\n const focusableElements = this._getFocusableElements(modalEl);\n\n // If the clicked element is not focusable, ensure focus stays in modal\n if (focusableElements.length && !focusableElements.includes(clickedElement)) {\n // Check if current active element is still within the modal\n if (!focusableElements.includes(document.activeElement)) {\n this.focusFirstElement(modalEl);\n }\n }\n },\n },\n};\n</script>\n"],"names":["_sfc_main","DtLazyShow","DtButton","DtIconClose","SrOnlyCloseButton","Modal","getUniqueString","k","MODAL_KIND_MODIFIERS","s","MODAL_SIZE_MODIFIERS","kind","NOTICE_KINDS","initialFocusElement","MODAL_BANNER_KINDS","EVENT_KEYNAMES","hasSlotContent","DialtoneLocalization","event","modalEl","_a","isShowing","disableRootScrolling","returnFirstEl","_b","enableRootScrolling","_c","clickedElement","focusableElements","_createBlock","_Teleport","$props","_createVNode","_component_dt_lazy_show","_mergeProps","$data","$options","_toHandlers","_ctx","_createElementBlock","_normalizeClass","_renderSlot","_Transition","_createElementVNode","_hoisted_3","_openBlock","_hoisted_4","_component_sr_only_close_button","_component_dt_button","_withCtx","iconSize","_component_dt_icon_close"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"modal.js","sources":["../../../components/modal/modal.vue"],"sourcesContent":["<template>\n <teleport\n :disabled=\"!appendTo\"\n :to=\"appendTo\"\n >\n <dt-lazy-show\n ref=\"modalRoot\"\n transition=\"d-zoom\"\n :show=\"show\"\n :class=\"[\n 'd-modal',\n MODAL_KIND_MODIFIERS[kind],\n MODAL_SIZE_MODIFIERS[size],\n modalClass,\n ]\"\n data-qa=\"dt-modal\"\n :aria-hidden=\"open\"\n v-on=\"modalListeners\"\n >\n <div\n v-if=\"show && (hasSlotContent($slots.banner) || bannerTitle)\"\n data-qa=\"dt-modal-banner\"\n :class=\"[\n 'd-modal__banner',\n bannerClass,\n bannerKindClass,\n ]\"\n >\n <!-- @slot Slot for the banner, defaults to bannerTitle prop -->\n <slot name=\"banner\">\n {{ bannerTitle }}\n </slot>\n </div>\n <transition\n appear\n name=\"d-modal__dialog\"\n >\n <div\n v-show=\"show\"\n :class=\"[\n 'd-modal__dialog',\n { 'd-modal__dialog--scrollable': fixedHeaderFooter },\n dialogClass,\n ]\"\n role=\"dialog\"\n aria-modal=\"true\"\n :aria-describedby=\"describedById\"\n :aria-labelledby=\"labelledById\"\n >\n <div\n v-if=\"hasSlotContent($slots.header)\"\n :id=\"labelledById\"\n class=\"d-modal__header\"\n data-qa=\"dt-modal-title\"\n >\n <!-- @slot Slot for dialog header section, taking the place of any \"title\" text prop -->\n <slot name=\"header\" />\n </div>\n <dt-text\n v-else\n :id=\"labelledById\"\n kind=\"headline\"\n size=\"2xl\"\n strength=\"medium\"\n density=\"100\"\n text-box-trim=\"start\"\n as=\"h2\"\n class=\"d-modal__header\"\n data-qa=\"dt-modal-title\"\n >\n {{ title }}\n </dt-text>\n <div\n v-if=\"hasSlotContent($slots.default)\"\n :class=\"[\n 'd-modal__content',\n contentClass,\n ]\"\n data-qa=\"dt-modal-copy\"\n >\n <!-- @slot Default slot for dialog body section, taking the place of any \"copy\" text prop -->\n <slot />\n </div>\n <p\n v-else\n :class=\"[\n 'd-modal__content',\n contentClass,\n ]\"\n data-qa=\"dt-modal-copy\"\n >\n {{ copy }}\n </p>\n <footer\n v-if=\"hasFooterSlot\"\n class=\"d-modal__footer\"\n >\n <!-- @slot Slot for dialog footer content, often containing cancel and confirm buttons. -->\n <slot name=\"footer\" />\n </footer>\n <sr-only-close-button\n v-if=\"hideClose\"\n @close=\"close\"\n />\n <dt-button\n v-else\n class=\"d-modal__close\"\n data-qa=\"dt-modal-close-button\"\n size=\"md\"\n kind=\"muted\"\n importance=\"clear\"\n :aria-label=\"closeButtonTitle\"\n :title=\"closeButtonTitle\"\n @click=\"close\"\n >\n <template #icon=\"{ iconSize }\">\n <dt-icon-close\n :size=\"iconSize\"\n />\n </template>\n </dt-button>\n </div>\n </transition>\n </dt-lazy-show>\n </teleport>\n</template>\n\n<script>\n/* eslint-disable max-lines */\nimport { DtButton } from '@/components/button';\nimport { DtText } from '@/components/text';\nimport { DtIconClose } from '@dialpad/dialtone-icons/vue3';\nimport Modal from '@/common/mixins/modal';\nimport {\n MODAL_BANNER_KINDS,\n MODAL_KIND_MODIFIERS,\n MODAL_SIZE_MODIFIERS,\n} from './modal_constants';\nimport { returnFirstEl, getUniqueString, hasSlotContent, disableRootScrolling, enableRootScrolling } from '@/common/utils';\nimport { DtLazyShow } from '@/components/lazy_show';\nimport { EVENT_KEYNAMES } from '@/common/constants';\nimport SrOnlyCloseButton from '@/common/sr_only_close_button.vue';\nimport { NOTICE_KINDS } from '@/components/notice';\nimport { DialtoneLocalization } from '@/localization';\n\n/**\n * Modals focus the user’s attention exclusively on one task or piece of information\n * via a window that sits on top of the page content.\n * @see https://dialtone.dialpad.com/components/modal.html\n */\nexport default {\n compatConfig: { MODE: 3 },\n name: 'DtModal',\n\n components: {\n DtLazyShow,\n DtButton,\n DtText,\n DtIconClose,\n SrOnlyCloseButton,\n },\n\n mixins: [Modal],\n\n props: {\n /**\n * Body text to display as the modal's main content.\n */\n copy: {\n type: String,\n default: '',\n },\n\n /**\n * Id to use for the dialog's aria-describedby.\n * Recommended only if the dialog content itself isn't enough to give full context,\n * as screen readers should recite the dialog contents by default before any aria-description.\n */\n describedById: {\n type: String,\n default: '',\n },\n\n /**\n * Id to use for the dialog's aria-labelledby.\n */\n labelledById: {\n type: String,\n default: function () { return getUniqueString(); },\n },\n\n /**\n * Whether the modal should be shown.\n * Parent component can sync on this value to control the modal's visibility.\n * @values true, false\n */\n show: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Title text to display in the modal header.\n */\n title: {\n type: String,\n default: '',\n },\n\n /**\n * Title text to display in the modal banner.\n */\n bannerTitle: {\n type: String,\n default: '',\n },\n\n /**\n * The theme of the modal. kind - default or danger,\n * @values default, danger\n */\n kind: {\n type: String,\n default: 'default',\n validator: (k) => Object.keys(MODAL_KIND_MODIFIERS).includes(k),\n },\n\n /**\n * The size of the modal. size - default or full,\n * @values default, full\n */\n size: {\n type: String,\n default: 'default',\n validator: (s) => Object.keys(MODAL_SIZE_MODIFIERS).includes(s),\n },\n\n /**\n * Additional class name for the root modal element.\n * Can accept String, Object, and Array, i.e. has the\n * same API as Vue's built-in handling of the class attribute.\n */\n modalClass: {\n type: [String, Object, Array],\n default: '',\n },\n\n /**\n * Additional class name for the dialog element within the modal.\n * Can accept String, Object, and Array, i.e. has the\n * same API as Vue's built-in handling of the class attribute.\n */\n dialogClass: {\n type: [String, Object, Array],\n default: '',\n },\n\n /**\n * Additional class name for the content element within the modal.\n * Can accept String, Object, and Array, i.e. has the\n * same API as Vue's built-in handling of the class attribute.\n */\n contentClass: {\n type: [String, Object, Array],\n default: '',\n },\n\n /**\n * Sets the color of the banner.\n * @values base, error, info, success, warning\n */\n bannerKind: {\n type: String,\n default: 'warning',\n validate (kind) {\n return NOTICE_KINDS.includes(kind);\n },\n },\n\n /**\n * Additional class name for the banner element within the modal.\n * Can accept String, Object, and Array, i.e. has the\n * same API as Vue's built-in handling of the class attribute.\n */\n bannerClass: {\n type: [String, Object, Array],\n default: '',\n },\n\n /**\n * Hides the close button on the modal\n * @values true, false\n */\n hideClose: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Whether the modal will close when you click outside of the dialog on the overlay.\n * @values true, false\n */\n closeOnClick: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Scrollable modal that allows scroll the modal content keeping the header and footer fixed\n * @values true, false\n */\n fixedHeaderFooter: {\n type: Boolean,\n default: true,\n },\n\n /**\n * The element that is focused when the modal is opened. This can be an\n * HTMLElement within the modal, a string starting with '#' which will\n * find the element by ID. 'first' which will automatically focus\n * the first element, or 'dialog' which will focus the dialog window itself.\n * If the dialog is modal this prop cannot be 'none'.\n */\n initialFocusElement: {\n type: [String, HTMLElement],\n default: 'first',\n validator: initialFocusElement => {\n return initialFocusElement === 'first' ||\n (initialFocusElement instanceof HTMLElement) ||\n initialFocusElement.startsWith('#');\n },\n },\n\n /**\n * A CSS selector string for the element to portal the modal to. If not provided, the modal will be rendered in its default location.\n */\n appendTo: {\n type: String,\n default: undefined,\n },\n },\n\n emits: [\n /**\n * Native button click event\n *\n * @event click\n * @type {PointerEvent | KeyboardEvent}\n */\n 'click',\n\n /**\n * Native keydown event\n *\n * @event keydown\n * @type {KeyboardEvent}\n */\n 'keydown',\n\n /**\n * The modal will emit a \"false\" boolean value for this event when the user performs a modal-closing action.\n * Parent components can sync on this value to create a 2-way binding to control modal visibility.\n *\n * @event update:show\n * @type {Boolean}\n */\n 'update:show',\n ],\n\n data () {\n return {\n MODAL_KIND_MODIFIERS,\n MODAL_SIZE_MODIFIERS,\n MODAL_BANNER_KINDS,\n EVENT_KEYNAMES,\n hasSlotContent,\n i18n: new DialtoneLocalization(),\n };\n },\n\n computed: {\n modalListeners () {\n return {\n click: event => {\n // Handle backdrop clicks for closing modal\n if (this.closeOnClick && event.target === event.currentTarget) {\n this.close();\n } else if (this.show && event.target !== event.currentTarget) {\n // Ensure focus stays within modal when clicking inside it\n this.handleModalClick(event);\n }\n\n this.$emit('click', event);\n },\n\n keydown: event => {\n switch (event.code) {\n case EVENT_KEYNAMES.esc:\n case EVENT_KEYNAMES.escape:\n this.close();\n break;\n case EVENT_KEYNAMES.tab:\n this.trapFocus(event);\n break;\n }\n this.$emit('keydown', event);\n },\n\n 'after-enter': async () => {\n this.$emit('update:show', true);\n await this.setFocusAfterTransition();\n },\n\n focusin: event => {\n // Ensure focus stays within modal\n const modalEl = this.$refs.modalRoot?.$el || this.$el;\n if (this.show && modalEl && !modalEl.contains(event.target)) {\n event.preventDefault();\n this.focusFirstElement(modalEl);\n }\n },\n };\n },\n\n open () {\n return `${!this.show}`;\n },\n\n hasFooterSlot () {\n return !!this.$slots.footer;\n },\n\n bannerKindClass () {\n return MODAL_BANNER_KINDS[this.bannerKind];\n },\n\n closeButtonTitle () {\n return this.i18n.$t('DIALTONE_CLOSE_BUTTON');\n },\n },\n\n watch: {\n show: {\n handler (isShowing) {\n if (isShowing) {\n // Set a reference to the previously-active element, to which we'll return focus on modal close.\n this.previousActiveElement = document.activeElement;\n const modalEl = this.$refs.modalRoot?.$el || this.$el;\n disableRootScrolling(returnFirstEl(modalEl).getRootNode().host);\n } else {\n const modalEl = this.$refs.modalRoot?.$el || this.$el;\n enableRootScrolling(returnFirstEl(modalEl).getRootNode().host);\n // Modal is being hidden, so return focus to the previously active element before clearing the reference.\n this.previousActiveElement?.focus();\n this.previousActiveElement = null;\n }\n },\n },\n },\n\n methods: {\n close () {\n this.$emit('update:show', false);\n },\n\n async setFocusAfterTransition () {\n const modalEl = this.$refs.modalRoot?.$el || this.$el;\n if (this.initialFocusElement === 'first') {\n await this.focusFirstElement(modalEl);\n } else if (this.initialFocusElement.startsWith('#')) {\n await this.focusElementById(this.initialFocusElement);\n } else if (this.initialFocusElement instanceof HTMLElement) {\n this.initialFocusElement.focus();\n }\n },\n\n trapFocus (e) {\n if (this.show) {\n const modalEl = this.$refs.modalRoot?.$el || this.$el;\n this.focusTrappedTabPress(e, modalEl);\n }\n },\n\n handleModalClick (event) {\n // Ensure focus stays within modal when clicking inside it\n const clickedElement = event.target;\n const modalEl = this.$refs.modalRoot?.$el || this.$el;\n const focusableElements = this._getFocusableElements(modalEl);\n\n // If the clicked element is not focusable, ensure focus stays in modal\n if (focusableElements.length && !focusableElements.includes(clickedElement)) {\n // Check if current active element is still within the modal\n if (!focusableElements.includes(document.activeElement)) {\n this.focusFirstElement(modalEl);\n }\n }\n },\n },\n};\n</script>\n"],"names":["_sfc_main","DtLazyShow","DtButton","DtText","DtIconClose","SrOnlyCloseButton","Modal","getUniqueString","k","MODAL_KIND_MODIFIERS","s","MODAL_SIZE_MODIFIERS","kind","NOTICE_KINDS","initialFocusElement","MODAL_BANNER_KINDS","EVENT_KEYNAMES","hasSlotContent","DialtoneLocalization","event","modalEl","_a","isShowing","disableRootScrolling","returnFirstEl","_b","enableRootScrolling","_c","clickedElement","focusableElements","_createBlock","_Teleport","$props","_createVNode","_component_dt_lazy_show","_mergeProps","$data","$options","_toHandlers","_ctx","_createElementBlock","_normalizeClass","_renderSlot","_Transition","_createElementVNode","_component_dt_text","_openBlock","_hoisted_3","_component_sr_only_close_button","_component_dt_button","_withCtx","iconSize","_component_dt_icon_close"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./mode-island.cjs"),d=require("./mode-island-constants.cjs");exports.DtModeIsland=e.default;exports.DT_MODE_ISLAND_TYPES=d.DT_MODE_ISLAND_TYPES;
|
|
2
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e={INVERTED:"inverted",LIGHT:"light",DARK:"dark"},t={DT_MODE_ISLAND_TYPES:e};exports.DT_MODE_ISLAND_TYPES=e;exports.default=t;
|
|
2
|
+
//# sourceMappingURL=mode-island-constants.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mode-island-constants.cjs","sources":["../../../components/mode_island/mode_island_constants.js"],"sourcesContent":["export const DT_MODE_ISLAND_TYPES = {\n INVERTED: 'inverted',\n LIGHT: 'light',\n DARK: 'dark',\n};\n\nexport default {\n DT_MODE_ISLAND_TYPES,\n};"],"names":["DT_MODE_ISLAND_TYPES","mode_island_constants"],"mappings":"4GAAY,MAACA,EAAuB,CAClC,SAAU,WACV,MAAO,QACP,KAAM,MACR,EAEAC,EAAe,CACb,qBAAAD,CACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mode-island-constants.js","sources":["../../../components/mode_island/mode_island_constants.js"],"sourcesContent":["export const DT_MODE_ISLAND_TYPES = {\n INVERTED: 'inverted',\n LIGHT: 'light',\n DARK: 'dark',\n};\n\nexport default {\n DT_MODE_ISLAND_TYPES,\n};"],"names":["DT_MODE_ISLAND_TYPES","mode_island_constants"],"mappings":"AAAY,MAACA,IAAuB;AAAA,EAClC,UAAU;AAAA,EACV,OAAO;AAAA,EACP,MAAM;AACR,GAEAC,IAAe;AAAA,EACb,sBAAAD;AACF;"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const d=require("./mode-island-constants.cjs"),l=require("./validators.cjs"),r=require("./utils.cjs"),o=require("vue"),u=require("../../_plugin-vue_export-helper-BRilXfQE.cjs"),c={name:"DtModeIsland",compatConfig:{MODE:3},provide(){return{dtModeIslandMode:()=>this.computedMode}},inject:{parentModeIslandMode:{from:"dtModeIslandMode",default:null}},inheritAttrs:!1,props:{as:{type:String,default:"div"},mode:{type:String,default:d.DT_MODE_ISLAND_TYPES.INVERTED,validator:l.modeValidator}},data(){return{currentContrast:r.getRootContrast(),contrastObserver:null,modeObserver:null,elementRef:null,calculatedMode:null}},computed:{isInverted(){return this.mode===d.DT_MODE_ISLAND_TYPES.INVERTED},invertedAttribute(){return this.isInverted?"":null},computedMode(){return this.mode===d.DT_MODE_ISLAND_TYPES.LIGHT||this.mode===d.DT_MODE_ISLAND_TYPES.DARK?this.mode:this.mode===d.DT_MODE_ISLAND_TYPES.INVERTED&&this.calculatedMode?this.calculatedMode:this.calculateInvertedMode()}},beforeCreate(){if(this.$attrs&&this.$attrs["data-dt-brand"])throw new Error("[DtModeIsland] The data-dt-brand attribute is not allowed on mode islands. Brand should only be set at the root level.")},mounted(){this.elementRef=this.$el,this.setupContrastObserver(),this.isInverted&&(this.calculatedMode=this.calculateInvertedMode(),this.setupModeObserver()),this.currentContrast=r.getRootContrast()},beforeUnmount(){this.contrastObserver&&(this.contrastObserver.disconnect(),this.contrastObserver=null),this.modeObserver&&(this.modeObserver.disconnect(),this.modeObserver=null)},methods:{calculateInvertedMode(){if(this.parentModeIslandMode){const e=typeof this.parentModeIslandMode=="function"?this.parentModeIslandMode():this.parentModeIslandMode;return r.getOppositeMode(e)}if(this.elementRef){const e=r.findParentMode(this.elementRef);return r.getOppositeMode(e)}return r.getOppositeMode(r.getRootMode())},setupContrastObserver(){this.contrastObserver=new MutationObserver(e=>{for(const t of e)t.type==="attributes"&&t.attributeName==="data-dt-contrast"&&(this.currentContrast=r.getRootContrast())}),this.contrastObserver.observe(document.documentElement,{attributes:!0,attributeFilter:["data-dt-contrast"]})},setupModeObserver(){var s;const e={attributes:!0,attributeFilter:["data-dt-mode"],subtree:!1};this.modeObserver=new MutationObserver(a=>{for(const n of a)n.type==="attributes"&&n.attributeName==="data-dt-mode"&&(this.calculatedMode=this.calculateInvertedMode())}),this.modeObserver.observe(document.documentElement,e);let t=(s=this.elementRef)==null?void 0:s.parentElement;for(;t;)t.hasAttribute("data-dt-mode")&&this.modeObserver.observe(t,e),t=t.parentElement}}};function m(e,t,s,a,n,i){return o.openBlock(),o.createBlock(o.resolveDynamicComponent(s.as),o.mergeProps({class:"d-mode-island"},e.$attrs,{"data-dt-mode":i.computedMode,"data-mode-island-inverted":i.invertedAttribute,"data-dt-contrast":n.currentContrast}),{default:o.withCtx(()=>[o.renderSlot(e.$slots,"default")]),_:3},16,["data-dt-mode","data-mode-island-inverted","data-dt-contrast"])}const h=u._(c,[["render",m]]);exports.default=h;
|
|
2
|
+
//# sourceMappingURL=mode-island.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mode-island.cjs","sources":["../../../components/mode_island/mode_island.vue"],"sourcesContent":["<template>\n <component\n :is=\"as\"\n class=\"d-mode-island\"\n v-bind=\"$attrs\"\n :data-dt-mode=\"computedMode\"\n :data-mode-island-inverted=\"invertedAttribute\"\n :data-dt-contrast=\"currentContrast\"\n >\n <!-- @slot Slot for main content -->\n <slot />\n </component>\n</template>\n\n<script>\nimport { DT_MODE_ISLAND_TYPES } from './mode_island_constants';\nimport { modeValidator } from './validators';\nimport {\n getOppositeMode,\n getRootMode,\n getRootContrast,\n findParentMode,\n} from './utils';\n\nexport default {\n name: 'DtModeIsland',\n compatConfig: { MODE: 3 },\n\n provide () {\n return {\n dtModeIslandMode: () => this.computedMode,\n };\n },\n\n inject: {\n parentModeIslandMode: {\n from: 'dtModeIslandMode',\n default: null,\n },\n },\n\n inheritAttrs: false,\n\n props: {\n /**\n * Set this prop to render the mode island as a specific HTML element.\n * @type {String}\n * @values div, section, nav, article, aside, header, footer, main\n */\n as: {\n type: String,\n default: 'div',\n },\n\n /**\n * The mode to apply to the island.\n * - 'inverted': Opposite of parent or root mode\n * - 'light': Always light mode\n * - 'dark': Always dark mode\n * @type {String}\n * @values inverted, light, dark\n */\n mode: {\n type: String,\n default: DT_MODE_ISLAND_TYPES.INVERTED,\n validator: modeValidator,\n },\n },\n\n data () {\n return {\n currentContrast: getRootContrast(),\n contrastObserver: null,\n modeObserver: null,\n elementRef: null,\n calculatedMode: null, // Store calculated mode as reactive data\n };\n },\n\n computed: {\n isInverted () {\n return this.mode === DT_MODE_ISLAND_TYPES.INVERTED;\n },\n\n invertedAttribute () {\n return this.isInverted ? '' : null;\n },\n\n computedMode () {\n // If mode is explicitly light or dark, use it directly\n if (this.mode === DT_MODE_ISLAND_TYPES.LIGHT || this.mode === DT_MODE_ISLAND_TYPES.DARK) {\n return this.mode;\n }\n\n // If mode is inverted, use the calculated mode if available\n if (this.mode === DT_MODE_ISLAND_TYPES.INVERTED && this.calculatedMode) {\n return this.calculatedMode;\n }\n\n // Otherwise calculate it now\n return this.calculateInvertedMode();\n },\n },\n\n beforeCreate () {\n // Throw error if data-dt-brand is manually set\n if (this.$attrs && this.$attrs['data-dt-brand']) {\n throw new Error('[DtModeIsland] The data-dt-brand attribute is not allowed on mode islands. Brand should only be set at the root level.');\n }\n },\n\n mounted () {\n // Store element reference\n this.elementRef = this.$el;\n\n // Setup MutationObserver to watch for contrast changes on root\n this.setupContrastObserver();\n\n // Setup MutationObserver to watch for mode changes (only if inverted)\n if (this.isInverted) {\n // Initialize the calculated mode\n this.calculatedMode = this.calculateInvertedMode();\n this.setupModeObserver();\n }\n\n // Initial contrast value\n this.currentContrast = getRootContrast();\n },\n\n beforeUnmount () {\n // Cleanup observers\n if (this.contrastObserver) {\n this.contrastObserver.disconnect();\n this.contrastObserver = null;\n }\n if (this.modeObserver) {\n this.modeObserver.disconnect();\n this.modeObserver = null;\n }\n },\n\n methods: {\n calculateInvertedMode () {\n // First check if there's a parent mode island\n if (this.parentModeIslandMode) {\n const parentMode = typeof this.parentModeIslandMode === 'function'\n ? this.parentModeIslandMode()\n : this.parentModeIslandMode;\n return getOppositeMode(parentMode);\n }\n\n // Otherwise, find the nearest parent with data-dt-mode\n if (this.elementRef) {\n const parentMode = findParentMode(this.elementRef);\n return getOppositeMode(parentMode);\n }\n\n // Default fallback\n return getOppositeMode(getRootMode());\n },\n\n setupContrastObserver () {\n this.contrastObserver = new MutationObserver((mutationsList) => {\n for (const mutation of mutationsList) {\n if (mutation.type === 'attributes' && mutation.attributeName === 'data-dt-contrast') {\n this.currentContrast = getRootContrast();\n }\n }\n });\n\n this.contrastObserver.observe(document.documentElement, {\n attributes: true,\n attributeFilter: ['data-dt-contrast'],\n });\n },\n\n setupModeObserver () {\n const config = {\n attributes: true,\n attributeFilter: ['data-dt-mode'],\n subtree: false,\n };\n\n this.modeObserver = new MutationObserver((mutationsList) => {\n for (const mutation of mutationsList) {\n if (mutation.type === 'attributes' && mutation.attributeName === 'data-dt-mode') {\n // Recalculate and update the reactive data property\n this.calculatedMode = this.calculateInvertedMode();\n }\n }\n });\n\n // Observe root element\n this.modeObserver.observe(document.documentElement, config);\n\n // Also observe all parent elements with data-dt-mode\n let parent = this.elementRef?.parentElement;\n while (parent) {\n if (parent.hasAttribute('data-dt-mode')) {\n this.modeObserver.observe(parent, config);\n }\n parent = parent.parentElement;\n }\n },\n },\n};\n</script>\n"],"names":["_sfc_main","DT_MODE_ISLAND_TYPES","modeValidator","getRootContrast","parentMode","getOppositeMode","findParentMode","getRootMode","mutationsList","mutation","config","parent","_a","_createBlock","_resolveDynamicComponent","$props","_mergeProps","_ctx","$options","$data","_renderSlot"],"mappings":"6RAwBKA,EAAU,CACb,KAAM,eACN,aAAc,CAAE,KAAM,GAEtB,SAAW,CACT,MAAO,CACL,iBAAkB,IAAM,KAAK,aAEjC,EAEA,OAAQ,CACN,qBAAsB,CACpB,KAAM,mBACN,QAAS,OAIb,aAAc,GAEd,MAAO,CAML,GAAI,CACF,KAAM,OACN,QAAS,OAWX,KAAM,CACJ,KAAM,OACN,QAASC,EAAAA,qBAAqB,SAC9B,UAAWC,EAAAA,gBAIf,MAAQ,CACN,MAAO,CACL,gBAAiBC,EAAAA,gBAAe,EAChC,iBAAkB,KAClB,aAAc,KACd,WAAY,KACZ,eAAgB,KAEpB,EAEA,SAAU,CACR,YAAc,CACZ,OAAO,KAAK,OAASF,EAAAA,qBAAqB,QAC5C,EAEA,mBAAqB,CACnB,OAAO,KAAK,WAAa,GAAK,IAChC,EAEA,cAAgB,CAEd,OAAI,KAAK,OAASA,uBAAqB,OAAS,KAAK,OAASA,EAAAA,qBAAqB,KAC1E,KAAK,KAIV,KAAK,OAASA,EAAAA,qBAAqB,UAAY,KAAK,eAC/C,KAAK,eAIP,KAAK,sBAAqB,CACnC,GAGF,cAAgB,CAEd,GAAI,KAAK,QAAU,KAAK,OAAO,eAAe,EAC5C,MAAM,IAAI,MAAM,wHAAwH,CAE5I,EAEA,SAAW,CAET,KAAK,WAAa,KAAK,IAGvB,KAAK,sBAAqB,EAGtB,KAAK,aAEP,KAAK,eAAiB,KAAK,sBAAqB,EAChD,KAAK,kBAAiB,GAIxB,KAAK,gBAAkBE,kBAAe,CACxC,EAEA,eAAiB,CAEX,KAAK,mBACP,KAAK,iBAAiB,WAAU,EAChC,KAAK,iBAAmB,MAEtB,KAAK,eACP,KAAK,aAAa,WAAU,EAC5B,KAAK,aAAe,KAExB,EAEA,QAAS,CACP,uBAAyB,CAEvB,GAAI,KAAK,qBAAsB,CAC7B,MAAMC,EAAa,OAAO,KAAK,sBAAyB,WACpD,KAAK,qBAAoB,EACzB,KAAK,qBACT,OAAOC,EAAAA,gBAAgBD,CAAU,CACnC,CAGA,GAAI,KAAK,WAAY,CACnB,MAAMA,EAAaE,EAAAA,eAAe,KAAK,UAAU,EACjD,OAAOD,EAAAA,gBAAgBD,CAAU,CACnC,CAGA,OAAOC,EAAAA,gBAAgBE,EAAAA,aAAa,CACtC,EAEA,uBAAyB,CACvB,KAAK,iBAAmB,IAAI,iBAAkBC,GAAkB,CAC9D,UAAWC,KAAYD,EACjBC,EAAS,OAAS,cAAgBA,EAAS,gBAAkB,qBAC/D,KAAK,gBAAkBN,kBAAe,EAG5C,CAAC,EAED,KAAK,iBAAiB,QAAQ,SAAS,gBAAiB,CACtD,WAAY,GACZ,gBAAiB,CAAC,kBAAkB,CACtC,CAAC,CACH,EAEA,mBAAqB,OACnB,MAAMO,EAAS,CACb,WAAY,GACZ,gBAAiB,CAAC,cAAc,EAChC,QAAS,IAGX,KAAK,aAAe,IAAI,iBAAkBF,GAAkB,CAC1D,UAAWC,KAAYD,EACjBC,EAAS,OAAS,cAAgBA,EAAS,gBAAkB,iBAE/D,KAAK,eAAiB,KAAK,sBAAqB,EAGtD,CAAC,EAGD,KAAK,aAAa,QAAQ,SAAS,gBAAiBC,CAAM,EAG1D,IAAIC,GAASC,EAAA,KAAK,aAAL,YAAAA,EAAiB,cAC9B,KAAOD,GACDA,EAAO,aAAa,cAAc,GACpC,KAAK,aAAa,QAAQA,EAAQD,CAAM,EAE1CC,EAASA,EAAO,aAEpB,EAEJ,+CA5MEE,EAAAA,YAUYC,EAAAA,wBATLC,IAAE,EADTC,EAAAA,WAUY,CARV,MAAM,iBACEC,EAAA,OAAM,CACb,eAAcC,EAAA,aACd,4BAA2BA,EAAA,kBAC3B,mBAAkBC,EAAA,qCAGnB,IAAQ,CAARC,aAAQH,EAAA,OAAA,SAAA"}
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
import { DT_MODE_ISLAND_TYPES as r } from "./mode-island-constants.js";
|
|
2
|
+
import { modeValidator as l } from "./validators.js";
|
|
3
|
+
import { getRootContrast as s, getOppositeMode as a, findParentMode as u, getRootMode as c } from "./utils.js";
|
|
4
|
+
import { openBlock as m, createBlock as h, resolveDynamicComponent as f, mergeProps as b, withCtx as p, renderSlot as M } from "vue";
|
|
5
|
+
import { _ as v } from "../../_plugin-vue_export-helper-CHgC5LLL.js";
|
|
6
|
+
const O = {
|
|
7
|
+
name: "DtModeIsland",
|
|
8
|
+
compatConfig: { MODE: 3 },
|
|
9
|
+
provide() {
|
|
10
|
+
return {
|
|
11
|
+
dtModeIslandMode: () => this.computedMode
|
|
12
|
+
};
|
|
13
|
+
},
|
|
14
|
+
inject: {
|
|
15
|
+
parentModeIslandMode: {
|
|
16
|
+
from: "dtModeIslandMode",
|
|
17
|
+
default: null
|
|
18
|
+
}
|
|
19
|
+
},
|
|
20
|
+
inheritAttrs: !1,
|
|
21
|
+
props: {
|
|
22
|
+
/**
|
|
23
|
+
* Set this prop to render the mode island as a specific HTML element.
|
|
24
|
+
* @type {String}
|
|
25
|
+
* @values div, section, nav, article, aside, header, footer, main
|
|
26
|
+
*/
|
|
27
|
+
as: {
|
|
28
|
+
type: String,
|
|
29
|
+
default: "div"
|
|
30
|
+
},
|
|
31
|
+
/**
|
|
32
|
+
* The mode to apply to the island.
|
|
33
|
+
* - 'inverted': Opposite of parent or root mode
|
|
34
|
+
* - 'light': Always light mode
|
|
35
|
+
* - 'dark': Always dark mode
|
|
36
|
+
* @type {String}
|
|
37
|
+
* @values inverted, light, dark
|
|
38
|
+
*/
|
|
39
|
+
mode: {
|
|
40
|
+
type: String,
|
|
41
|
+
default: r.INVERTED,
|
|
42
|
+
validator: l
|
|
43
|
+
}
|
|
44
|
+
},
|
|
45
|
+
data() {
|
|
46
|
+
return {
|
|
47
|
+
currentContrast: s(),
|
|
48
|
+
contrastObserver: null,
|
|
49
|
+
modeObserver: null,
|
|
50
|
+
elementRef: null,
|
|
51
|
+
calculatedMode: null
|
|
52
|
+
// Store calculated mode as reactive data
|
|
53
|
+
};
|
|
54
|
+
},
|
|
55
|
+
computed: {
|
|
56
|
+
isInverted() {
|
|
57
|
+
return this.mode === r.INVERTED;
|
|
58
|
+
},
|
|
59
|
+
invertedAttribute() {
|
|
60
|
+
return this.isInverted ? "" : null;
|
|
61
|
+
},
|
|
62
|
+
computedMode() {
|
|
63
|
+
return this.mode === r.LIGHT || this.mode === r.DARK ? this.mode : this.mode === r.INVERTED && this.calculatedMode ? this.calculatedMode : this.calculateInvertedMode();
|
|
64
|
+
}
|
|
65
|
+
},
|
|
66
|
+
beforeCreate() {
|
|
67
|
+
if (this.$attrs && this.$attrs["data-dt-brand"])
|
|
68
|
+
throw new Error("[DtModeIsland] The data-dt-brand attribute is not allowed on mode islands. Brand should only be set at the root level.");
|
|
69
|
+
},
|
|
70
|
+
mounted() {
|
|
71
|
+
this.elementRef = this.$el, this.setupContrastObserver(), this.isInverted && (this.calculatedMode = this.calculateInvertedMode(), this.setupModeObserver()), this.currentContrast = s();
|
|
72
|
+
},
|
|
73
|
+
beforeUnmount() {
|
|
74
|
+
this.contrastObserver && (this.contrastObserver.disconnect(), this.contrastObserver = null), this.modeObserver && (this.modeObserver.disconnect(), this.modeObserver = null);
|
|
75
|
+
},
|
|
76
|
+
methods: {
|
|
77
|
+
calculateInvertedMode() {
|
|
78
|
+
if (this.parentModeIslandMode) {
|
|
79
|
+
const t = typeof this.parentModeIslandMode == "function" ? this.parentModeIslandMode() : this.parentModeIslandMode;
|
|
80
|
+
return a(t);
|
|
81
|
+
}
|
|
82
|
+
if (this.elementRef) {
|
|
83
|
+
const t = u(this.elementRef);
|
|
84
|
+
return a(t);
|
|
85
|
+
}
|
|
86
|
+
return a(c());
|
|
87
|
+
},
|
|
88
|
+
setupContrastObserver() {
|
|
89
|
+
this.contrastObserver = new MutationObserver((t) => {
|
|
90
|
+
for (const e of t)
|
|
91
|
+
e.type === "attributes" && e.attributeName === "data-dt-contrast" && (this.currentContrast = s());
|
|
92
|
+
}), this.contrastObserver.observe(document.documentElement, {
|
|
93
|
+
attributes: !0,
|
|
94
|
+
attributeFilter: ["data-dt-contrast"]
|
|
95
|
+
});
|
|
96
|
+
},
|
|
97
|
+
setupModeObserver() {
|
|
98
|
+
var o;
|
|
99
|
+
const t = {
|
|
100
|
+
attributes: !0,
|
|
101
|
+
attributeFilter: ["data-dt-mode"],
|
|
102
|
+
subtree: !1
|
|
103
|
+
};
|
|
104
|
+
this.modeObserver = new MutationObserver((n) => {
|
|
105
|
+
for (const d of n)
|
|
106
|
+
d.type === "attributes" && d.attributeName === "data-dt-mode" && (this.calculatedMode = this.calculateInvertedMode());
|
|
107
|
+
}), this.modeObserver.observe(document.documentElement, t);
|
|
108
|
+
let e = (o = this.elementRef) == null ? void 0 : o.parentElement;
|
|
109
|
+
for (; e; )
|
|
110
|
+
e.hasAttribute("data-dt-mode") && this.modeObserver.observe(e, t), e = e.parentElement;
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
};
|
|
114
|
+
function I(t, e, o, n, d, i) {
|
|
115
|
+
return m(), h(f(o.as), b({ class: "d-mode-island" }, t.$attrs, {
|
|
116
|
+
"data-dt-mode": i.computedMode,
|
|
117
|
+
"data-mode-island-inverted": i.invertedAttribute,
|
|
118
|
+
"data-dt-contrast": d.currentContrast
|
|
119
|
+
}), {
|
|
120
|
+
default: p(() => [
|
|
121
|
+
M(t.$slots, "default")
|
|
122
|
+
]),
|
|
123
|
+
_: 3
|
|
124
|
+
}, 16, ["data-dt-mode", "data-mode-island-inverted", "data-dt-contrast"]);
|
|
125
|
+
}
|
|
126
|
+
const g = /* @__PURE__ */ v(O, [["render", I]]);
|
|
127
|
+
export {
|
|
128
|
+
g as default
|
|
129
|
+
};
|
|
130
|
+
//# sourceMappingURL=mode-island.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mode-island.js","sources":["../../../components/mode_island/mode_island.vue"],"sourcesContent":["<template>\n <component\n :is=\"as\"\n class=\"d-mode-island\"\n v-bind=\"$attrs\"\n :data-dt-mode=\"computedMode\"\n :data-mode-island-inverted=\"invertedAttribute\"\n :data-dt-contrast=\"currentContrast\"\n >\n <!-- @slot Slot for main content -->\n <slot />\n </component>\n</template>\n\n<script>\nimport { DT_MODE_ISLAND_TYPES } from './mode_island_constants';\nimport { modeValidator } from './validators';\nimport {\n getOppositeMode,\n getRootMode,\n getRootContrast,\n findParentMode,\n} from './utils';\n\nexport default {\n name: 'DtModeIsland',\n compatConfig: { MODE: 3 },\n\n provide () {\n return {\n dtModeIslandMode: () => this.computedMode,\n };\n },\n\n inject: {\n parentModeIslandMode: {\n from: 'dtModeIslandMode',\n default: null,\n },\n },\n\n inheritAttrs: false,\n\n props: {\n /**\n * Set this prop to render the mode island as a specific HTML element.\n * @type {String}\n * @values div, section, nav, article, aside, header, footer, main\n */\n as: {\n type: String,\n default: 'div',\n },\n\n /**\n * The mode to apply to the island.\n * - 'inverted': Opposite of parent or root mode\n * - 'light': Always light mode\n * - 'dark': Always dark mode\n * @type {String}\n * @values inverted, light, dark\n */\n mode: {\n type: String,\n default: DT_MODE_ISLAND_TYPES.INVERTED,\n validator: modeValidator,\n },\n },\n\n data () {\n return {\n currentContrast: getRootContrast(),\n contrastObserver: null,\n modeObserver: null,\n elementRef: null,\n calculatedMode: null, // Store calculated mode as reactive data\n };\n },\n\n computed: {\n isInverted () {\n return this.mode === DT_MODE_ISLAND_TYPES.INVERTED;\n },\n\n invertedAttribute () {\n return this.isInverted ? '' : null;\n },\n\n computedMode () {\n // If mode is explicitly light or dark, use it directly\n if (this.mode === DT_MODE_ISLAND_TYPES.LIGHT || this.mode === DT_MODE_ISLAND_TYPES.DARK) {\n return this.mode;\n }\n\n // If mode is inverted, use the calculated mode if available\n if (this.mode === DT_MODE_ISLAND_TYPES.INVERTED && this.calculatedMode) {\n return this.calculatedMode;\n }\n\n // Otherwise calculate it now\n return this.calculateInvertedMode();\n },\n },\n\n beforeCreate () {\n // Throw error if data-dt-brand is manually set\n if (this.$attrs && this.$attrs['data-dt-brand']) {\n throw new Error('[DtModeIsland] The data-dt-brand attribute is not allowed on mode islands. Brand should only be set at the root level.');\n }\n },\n\n mounted () {\n // Store element reference\n this.elementRef = this.$el;\n\n // Setup MutationObserver to watch for contrast changes on root\n this.setupContrastObserver();\n\n // Setup MutationObserver to watch for mode changes (only if inverted)\n if (this.isInverted) {\n // Initialize the calculated mode\n this.calculatedMode = this.calculateInvertedMode();\n this.setupModeObserver();\n }\n\n // Initial contrast value\n this.currentContrast = getRootContrast();\n },\n\n beforeUnmount () {\n // Cleanup observers\n if (this.contrastObserver) {\n this.contrastObserver.disconnect();\n this.contrastObserver = null;\n }\n if (this.modeObserver) {\n this.modeObserver.disconnect();\n this.modeObserver = null;\n }\n },\n\n methods: {\n calculateInvertedMode () {\n // First check if there's a parent mode island\n if (this.parentModeIslandMode) {\n const parentMode = typeof this.parentModeIslandMode === 'function'\n ? this.parentModeIslandMode()\n : this.parentModeIslandMode;\n return getOppositeMode(parentMode);\n }\n\n // Otherwise, find the nearest parent with data-dt-mode\n if (this.elementRef) {\n const parentMode = findParentMode(this.elementRef);\n return getOppositeMode(parentMode);\n }\n\n // Default fallback\n return getOppositeMode(getRootMode());\n },\n\n setupContrastObserver () {\n this.contrastObserver = new MutationObserver((mutationsList) => {\n for (const mutation of mutationsList) {\n if (mutation.type === 'attributes' && mutation.attributeName === 'data-dt-contrast') {\n this.currentContrast = getRootContrast();\n }\n }\n });\n\n this.contrastObserver.observe(document.documentElement, {\n attributes: true,\n attributeFilter: ['data-dt-contrast'],\n });\n },\n\n setupModeObserver () {\n const config = {\n attributes: true,\n attributeFilter: ['data-dt-mode'],\n subtree: false,\n };\n\n this.modeObserver = new MutationObserver((mutationsList) => {\n for (const mutation of mutationsList) {\n if (mutation.type === 'attributes' && mutation.attributeName === 'data-dt-mode') {\n // Recalculate and update the reactive data property\n this.calculatedMode = this.calculateInvertedMode();\n }\n }\n });\n\n // Observe root element\n this.modeObserver.observe(document.documentElement, config);\n\n // Also observe all parent elements with data-dt-mode\n let parent = this.elementRef?.parentElement;\n while (parent) {\n if (parent.hasAttribute('data-dt-mode')) {\n this.modeObserver.observe(parent, config);\n }\n parent = parent.parentElement;\n }\n },\n },\n};\n</script>\n"],"names":["_sfc_main","DT_MODE_ISLAND_TYPES","modeValidator","getRootContrast","parentMode","getOppositeMode","findParentMode","getRootMode","mutationsList","mutation","config","parent","_a","_createBlock","_resolveDynamicComponent","$props","_mergeProps","_ctx","$options","$data","_renderSlot"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});function n(t){return t==="light"?"dark":"light"}function o(){return document.documentElement.getAttribute("data-dt-mode")||"light"}function r(){return document.documentElement.getAttribute("data-dt-contrast")||"default"}function d(t){let e=t==null?void 0:t.parentElement;for(;e&&e!==document.documentElement;){if(e.hasAttribute("data-dt-mode"))return e.getAttribute("data-dt-mode");e=e.parentElement}return o()}const u={getOppositeMode:n,getRootMode:o,getRootContrast:r,findParentMode:d};exports.default=u;exports.findParentMode=d;exports.getOppositeMode=n;exports.getRootContrast=r;exports.getRootMode=o;
|
|
2
|
+
//# sourceMappingURL=utils.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.cjs","sources":["../../../components/mode_island/utils.js"],"sourcesContent":["/**\n * Get the opposite mode (light <-> dark)\n * @param {string} currentMode - The current mode\n * @returns {string} The opposite mode\n */\nexport function getOppositeMode (currentMode) {\n return currentMode === 'light' ? 'dark' : 'light';\n}\n\n/**\n * Get the mode from the root HTML element\n * @returns {string} The root mode or 'light' as default\n */\nexport function getRootMode () {\n const rootMode = document.documentElement.getAttribute('data-dt-mode');\n return rootMode || 'light';\n}\n\n/**\n * Get the contrast from the root HTML element\n * @returns {string} The root contrast or 'default' as default\n */\nexport function getRootContrast () {\n const rootContrast = document.documentElement.getAttribute('data-dt-contrast');\n return rootContrast || 'default';\n}\n\n/**\n * Find the mode from the nearest parent element with data-dt-mode attribute\n * @param {HTMLElement} el - The starting element\n * @returns {string} The parent mode or root mode\n */\nexport function findParentMode (el) {\n let parent = el?.parentElement;\n while (parent && parent !== document.documentElement) {\n if (parent.hasAttribute('data-dt-mode')) {\n return parent.getAttribute('data-dt-mode');\n }\n parent = parent.parentElement;\n }\n return getRootMode();\n}\n\nexport default {\n getOppositeMode,\n getRootMode,\n getRootContrast,\n findParentMode,\n};"],"names":["getOppositeMode","currentMode","getRootMode","getRootContrast","findParentMode","el","parent","utils"],"mappings":"4GAKO,SAASA,EAAiBC,EAAa,CAC5C,OAAOA,IAAgB,QAAU,OAAS,OAC5C,CAMO,SAASC,GAAe,CAE7B,OADiB,SAAS,gBAAgB,aAAa,cAAc,GAClD,OACrB,CAMO,SAASC,GAAmB,CAEjC,OADqB,SAAS,gBAAgB,aAAa,kBAAkB,GACtD,SACzB,CAOO,SAASC,EAAgBC,EAAI,CAClC,IAAIC,EAASD,GAAA,YAAAA,EAAI,cACjB,KAAOC,GAAUA,IAAW,SAAS,iBAAiB,CACpD,GAAIA,EAAO,aAAa,cAAc,EACpC,OAAOA,EAAO,aAAa,cAAc,EAE3CA,EAASA,EAAO,aAClB,CACA,OAAOJ,EAAW,CACpB,CAEA,MAAAK,EAAe,CACb,gBAAAP,EACA,YAAAE,EACA,gBAAAC,EACA,eAAAC,CACF"}
|