@dialpad/dialtone-vue 3.223.0-next.2 → 3.223.0-next.4
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/Combobox-CYEmi3dv.cjs +3 -0
- package/dist/Combobox-CYEmi3dv.cjs.map +1 -0
- package/dist/{Combobox-By01ETlj.js → Combobox-D8nQeBIf.js} +33 -32
- package/dist/Combobox-D8nQeBIf.js.map +1 -0
- package/dist/MarkdownRenderer-D5XWsyQk.cjs.map +1 -1
- package/dist/{MarkdownRenderer-C3MZDB2I.js → MarkdownRenderer-NSSny0ID.js} +2 -2
- package/dist/{MarkdownRenderer-C3MZDB2I.js.map → MarkdownRenderer-NSSny0ID.js.map} +1 -1
- package/dist/{RichTextEditor-BX-5tCOx.cjs → RichTextEditor-B9NGgB03.cjs} +2 -2
- package/dist/{RichTextEditor-BX-5tCOx.cjs.map → RichTextEditor-B9NGgB03.cjs.map} +1 -1
- package/dist/{RichTextEditor-D8Kas5A3.js → RichTextEditor-DxbZSRop.js} +4 -4
- package/dist/{RichTextEditor-D8Kas5A3.js.map → RichTextEditor-DxbZSRop.js.map} +1 -1
- package/dist/TextList-B6XFfQfD.js +88 -0
- package/dist/TextList-B6XFfQfD.js.map +1 -0
- package/dist/TextList-Dd-ROFiI.cjs +2 -0
- package/dist/TextList-Dd-ROFiI.cjs.map +1 -0
- package/dist/TextListItem-DIlrCkaM.cjs +2 -0
- package/dist/TextListItem-DIlrCkaM.cjs.map +1 -0
- package/dist/TextListItem-ImUi_FWh.js +62 -0
- package/dist/TextListItem-ImUi_FWh.js.map +1 -0
- package/dist/{Toast-CHbVmbBg.js → Toast-BIHkIpZP.js} +95 -94
- package/dist/Toast-BIHkIpZP.js.map +1 -0
- package/dist/Toast-D8ARDEgT.cjs +2 -0
- package/dist/Toast-D8ARDEgT.cjs.map +1 -0
- package/dist/{attachment_carousel-BFIAXWOZ.js → attachment_carousel-CyiexPBk.js} +1 -1
- package/dist/{attachment_carousel-BFIAXWOZ.js.map → attachment_carousel-CyiexPBk.js.map} +1 -1
- package/dist/{attachment_carousel-BJxqNJ5T.cjs → attachment_carousel-DJqILY7f.cjs} +1 -1
- package/dist/{attachment_carousel-BJxqNJ5T.cjs.map → attachment_carousel-DJqILY7f.cjs.map} +1 -1
- package/dist/common/mixins/input.d.ts +4 -4
- package/dist/common/mixins/input_group.d.ts +2 -2
- package/dist/common/sr_only_close_button.vue.d.ts +30 -30
- package/dist/common/sr_only_close_button.vue.d.ts.map +1 -1
- package/dist/common/validators/index.cjs +1 -1
- package/dist/common/validators/index.cjs.map +1 -1
- package/dist/common/validators/index.d.ts +2 -0
- package/dist/common/validators/index.d.ts.map +1 -1
- package/dist/common/validators/index.js +9 -2
- package/dist/common/validators/index.js.map +1 -1
- package/dist/component-documentation.json +1 -1
- package/dist/components/Avatar/Avatar.vue.d.ts +10 -10
- package/dist/components/Avatar/Avatar.vue.d.ts.map +1 -1
- package/dist/components/Badge/Badge.vue.d.ts +13 -13
- package/dist/components/Banner/Banner.vue.d.ts +142 -107
- package/dist/components/Banner/Banner.vue.d.ts.map +1 -1
- package/dist/components/Box/Box.vue.d.ts +18 -0
- package/dist/components/Box/Box.vue.d.ts.map +1 -1
- package/dist/components/Box/BoxConstants.d.ts +4 -0
- package/dist/components/Box/BoxConstants.d.ts.map +1 -1
- package/dist/components/Box/Validators.d.ts +4 -0
- package/dist/components/Box/Validators.d.ts.map +1 -1
- package/dist/components/Box/index.d.ts +1 -1
- package/dist/components/Breadcrumbs/BreadcrumbItem.vue.d.ts +1 -0
- package/dist/components/Breadcrumbs/BreadcrumbItem.vue.d.ts.map +1 -1
- package/dist/components/Breadcrumbs/Breadcrumbs.vue.d.ts +3 -2
- package/dist/components/Button/Button.vue.d.ts +25 -25
- package/dist/components/Button/Button.vue.d.ts.map +1 -1
- package/dist/components/Card/Card.vue.d.ts +6 -6
- package/dist/components/Checkbox/Checkbox.vue.d.ts +62 -27
- package/dist/components/Checkbox/Checkbox.vue.d.ts.map +1 -1
- package/dist/components/CheckboxGroup/CheckboxGroup.vue.d.ts +82 -47
- package/dist/components/CheckboxGroup/CheckboxGroup.vue.d.ts.map +1 -1
- package/dist/components/Chip/Chip.vue.d.ts +40 -40
- package/dist/components/Chip/Chip.vue.d.ts.map +1 -1
- package/dist/components/Codeblock/Codeblock.vue.d.ts +2 -2
- package/dist/components/Collapsible/Collapsible.vue.d.ts +39 -39
- package/dist/components/Collapsible/Collapsible.vue.d.ts.map +1 -1
- package/dist/components/Combobox/Combobox.vue.d.ts +66 -66
- package/dist/components/Combobox/Combobox.vue.d.ts.map +1 -1
- package/dist/components/Combobox/ComboboxEmptyList.vue.d.ts +29 -29
- package/dist/components/Combobox/ComboboxEmptyList.vue.d.ts.map +1 -1
- package/dist/components/Combobox/ComboboxLoadingList.vue.d.ts +35 -35
- package/dist/components/Combobox/ComboboxLoadingList.vue.d.ts.map +1 -1
- package/dist/components/ComboboxWithPopover/ComboboxWithPopover.vue.d.ts +216 -216
- package/dist/components/ComboboxWithPopover/ComboboxWithPopover.vue.d.ts.map +1 -1
- package/dist/components/DescriptionList/DescriptionList.vue.d.ts +4 -4
- package/dist/components/Dropdown/Dropdown.vue.d.ts +82 -82
- package/dist/components/Dropdown/Dropdown.vue.d.ts.map +1 -1
- package/dist/components/Emoji/Emoji.vue.d.ts +17 -17
- package/dist/components/EmojiPicker/EmojiPicker.vue.d.ts +73 -38
- package/dist/components/EmojiPicker/EmojiPicker.vue.d.ts.map +1 -1
- package/dist/components/EmojiPicker/Modules/EmojiSearch.vue.d.ts +73 -38
- package/dist/components/EmojiPicker/Modules/EmojiSearch.vue.d.ts.map +1 -1
- package/dist/components/EmojiTextWrapper/EmojiTextWrapper.vue.d.ts +24 -24
- package/dist/components/EmojiTextWrapper/EmojiTextWrapper.vue.d.ts.map +1 -1
- package/dist/components/EmptyState/EmptyState.vue.d.ts.map +1 -1
- package/dist/components/FilterPill/FilterPill.vue.d.ts +380 -310
- package/dist/components/FilterPill/FilterPill.vue.d.ts.map +1 -1
- package/dist/components/Hovercard/Hovercard.vue.d.ts +156 -156
- package/dist/components/Hovercard/Hovercard.vue.d.ts.map +1 -1
- package/dist/components/Icon/Icon.vue.d.ts +7 -7
- package/dist/components/ImageViewer/ImageViewer.vue.d.ts +60 -60
- package/dist/components/ImageViewer/ImageViewer.vue.d.ts.map +1 -1
- package/dist/components/Input/Input.vue.d.ts +73 -38
- package/dist/components/Input/Input.vue.d.ts.map +1 -1
- package/dist/components/InputGroup/InputGroup.vue.d.ts +82 -47
- package/dist/components/InputGroup/InputGroup.vue.d.ts.map +1 -1
- package/dist/components/ItemLayout/ItemLayout.vue.d.ts +20 -20
- package/dist/components/KeyboardShortcut/KeyboardShortcut.vue.d.ts +116 -81
- package/dist/components/KeyboardShortcut/KeyboardShortcut.vue.d.ts.map +1 -1
- package/dist/components/Link/Link.vue.d.ts +1 -0
- package/dist/components/Link/LinkConstants.d.ts +3 -0
- package/dist/components/Link/LinkConstants.d.ts.map +1 -1
- package/dist/components/ListItem/ListItem.vue.d.ts +27 -27
- package/dist/components/ListItem/ListItem.vue.d.ts.map +1 -1
- package/dist/components/ListItemGroup/ListItemGroup.vue.d.ts +4 -4
- package/dist/components/Loader/Loader.vue.d.ts +7 -7
- package/dist/components/Modal/Modal.vue.d.ts +115 -86
- package/dist/components/Modal/Modal.vue.d.ts.map +1 -1
- package/dist/components/Modal/ModalConstants.d.ts +0 -5
- package/dist/components/Modal/index.d.ts +1 -1
- package/dist/components/Notice/Notice.vue.d.ts +142 -107
- package/dist/components/Notice/Notice.vue.d.ts.map +1 -1
- package/dist/components/Notice/NoticeAction.vue.d.ts +62 -62
- package/dist/components/Notice/NoticeAction.vue.d.ts.map +1 -1
- package/dist/components/Notice/NoticeContent.vue.d.ts +40 -5
- package/dist/components/Notice/NoticeContent.vue.d.ts.map +1 -1
- package/dist/components/Notice/NoticeIcon.vue.d.ts +32 -32
- package/dist/components/Notice/NoticeIcon.vue.d.ts.map +1 -1
- package/dist/components/Pagination/Pagination.vue.d.ts +40 -40
- package/dist/components/Pagination/Pagination.vue.d.ts.map +1 -1
- package/dist/components/Popover/Popover.vue.d.ts +78 -78
- package/dist/components/Popover/Popover.vue.d.ts.map +1 -1
- package/dist/components/Popover/PopoverHeaderFooter.vue.d.ts +34 -34
- package/dist/components/Popover/PopoverHeaderFooter.vue.d.ts.map +1 -1
- package/dist/components/ProgressCircle/ProgressCircle.vue.d.ts +7 -7
- package/dist/components/Prose/Prose.vue.d.ts.map +1 -1
- package/dist/components/Radio/Radio.vue.d.ts +62 -27
- package/dist/components/Radio/Radio.vue.d.ts.map +1 -1
- package/dist/components/RadioGroup/RadioGroup.vue.d.ts +82 -47
- package/dist/components/RadioGroup/RadioGroup.vue.d.ts.map +1 -1
- package/dist/components/RichTextEditor/Extensions/Channels/ChannelComponent.vue.d.ts +6 -5
- package/dist/components/RichTextEditor/Extensions/Channels/ChannelComponent.vue.d.ts.map +1 -1
- package/dist/components/RichTextEditor/Extensions/Channels/ChannelSuggestion.vue.d.ts +10 -10
- package/dist/components/RichTextEditor/Extensions/Channels/ChannelSuggestion.vue.d.ts.map +1 -1
- package/dist/components/RichTextEditor/Extensions/Emoji/EmojiComponent.vue.d.ts +17 -17
- package/dist/components/RichTextEditor/Extensions/Emoji/EmojiSuggestion.vue.d.ts +17 -17
- package/dist/components/RichTextEditor/Extensions/Mentions/MentionComponent.vue.d.ts +1 -0
- package/dist/components/RichTextEditor/Extensions/Mentions/MentionSuggestion.vue.d.ts +46 -11
- package/dist/components/RichTextEditor/Extensions/SlashCommand/SlashCommandSuggestion.vue.d.ts +36 -1
- package/dist/components/RichTextEditor/Extensions/Suggestion/SuggestionList.vue.d.ts +27 -27
- package/dist/components/RichTextEditor/Extensions/Suggestion/SuggestionList.vue.d.ts.map +1 -1
- package/dist/components/RichTextEditor/Extensions/Variable/VariableComponent.vue.d.ts +189 -154
- package/dist/components/RichTextEditor/Extensions/Variable/VariableComponent.vue.d.ts.map +1 -1
- package/dist/components/RootLayout/RootLayout.vue.d.ts +10 -10
- package/dist/components/SegmentedControl/SegmentedControl.vue.d.ts.map +1 -1
- package/dist/components/SelectMenu/SelectMenu.vue.d.ts +69 -34
- package/dist/components/SelectMenu/SelectMenu.vue.d.ts.map +1 -1
- package/dist/components/Skeleton/Skeleton.vue.d.ts +8 -8
- package/dist/components/Skeleton/SkeletonListItem.vue.d.ts +4 -4
- package/dist/components/Skeleton/SkeletonParagraph.vue.d.ts +2 -2
- package/dist/components/Skeleton/SkeletonShape.vue.d.ts +2 -2
- package/dist/components/SplitButton/SplitButton.vue.d.ts +157 -157
- package/dist/components/SplitButton/SplitButton.vue.d.ts.map +1 -1
- package/dist/components/SplitButton/SplitButtonEnd.vue.d.ts +30 -30
- package/dist/components/SplitButton/SplitButtonEnd.vue.d.ts.map +1 -1
- package/dist/components/SplitButton/SplitButtonStart.vue.d.ts +31 -31
- package/dist/components/Tab/Tab.vue.d.ts +33 -33
- package/dist/components/Tab/TabGroup.vue.d.ts +6 -6
- package/dist/components/Tab/TabPanel.vue.d.ts +2 -2
- package/dist/components/Text/Text.vue.d.ts +36 -1
- package/dist/components/Text/Text.vue.d.ts.map +1 -1
- package/dist/components/Text/TextConstants.d.ts +53 -0
- package/dist/components/Text/TextConstants.d.ts.map +1 -1
- package/dist/components/Text/index.d.ts +1 -1
- package/dist/components/TextList/TextList.vue.d.ts +87 -0
- package/dist/components/TextList/TextList.vue.d.ts.map +1 -0
- package/dist/components/TextList/TextListConstants.d.ts +20 -0
- package/dist/components/TextList/TextListConstants.d.ts.map +1 -0
- package/dist/components/TextList/TextListItem.vue.d.ts +60 -0
- package/dist/components/TextList/TextListItem.vue.d.ts.map +1 -0
- package/dist/components/TextList/Validators.d.ts +5 -0
- package/dist/components/TextList/Validators.d.ts.map +1 -0
- package/dist/components/TextList/index.d.ts +4 -0
- package/dist/components/TextList/index.d.ts.map +1 -0
- package/dist/components/Toast/Layouts/ToastLayoutAlternate.vue.d.ts +144 -109
- package/dist/components/Toast/Layouts/ToastLayoutAlternate.vue.d.ts.map +1 -1
- package/dist/components/Toast/Layouts/ToastLayoutAlternateIcon.vue.d.ts +34 -34
- package/dist/components/Toast/Layouts/ToastLayoutAlternateIcon.vue.d.ts.map +1 -1
- package/dist/components/Toast/Layouts/ToastLayoutDefault.vue.d.ts +142 -107
- package/dist/components/Toast/Layouts/ToastLayoutDefault.vue.d.ts.map +1 -1
- package/dist/components/Toast/Toast.vue.d.ts +580 -440
- package/dist/components/Toast/Toast.vue.d.ts.map +1 -1
- package/dist/components/Toggle/Toggle.vue.d.ts +4 -4
- package/dist/components/Toggle/Toggle.vue.d.ts.map +1 -1
- package/dist/components/Tooltip/Tooltip.vue.d.ts +4 -4
- package/dist/components/ValidationMessages/ValidationMessages.vue.d.ts +22 -22
- package/dist/components/ValidationMessages/ValidationMessages.vue.d.ts.map +1 -1
- package/dist/dialtone-vue.cjs +1 -1
- package/dist/dialtone-vue.js +146 -142
- package/dist/index.d.ts +1 -0
- package/dist/lib/attachment-carousel/attachment-carousel.cjs +1 -1
- package/dist/lib/attachment-carousel/attachment-carousel.js +1 -1
- package/dist/lib/attachment-carousel/index.cjs +1 -1
- package/dist/lib/attachment-carousel/index.js +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 +55 -54
- package/dist/lib/avatar/avatar.js.map +1 -1
- package/dist/lib/badge/badge.cjs +1 -1
- package/dist/lib/badge/badge.cjs.map +1 -1
- package/dist/lib/badge/badge.js +36 -35
- package/dist/lib/badge/badge.js.map +1 -1
- package/dist/lib/box/box-constants.cjs +1 -1
- package/dist/lib/box/box-constants.cjs.map +1 -1
- package/dist/lib/box/box-constants.js +34 -7
- package/dist/lib/box/box-constants.js.map +1 -1
- package/dist/lib/box/box.cjs +1 -1
- package/dist/lib/box/box.cjs.map +1 -1
- package/dist/lib/box/box.js +93 -34
- package/dist/lib/box/box.js.map +1 -1
- package/dist/lib/box/index.cjs +1 -1
- package/dist/lib/box/index.js +3 -3
- package/dist/lib/box/validators.cjs +1 -1
- package/dist/lib/box/validators.cjs.map +1 -1
- package/dist/lib/box/validators.js +4 -4
- package/dist/lib/box/validators.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 +69 -68
- package/dist/lib/button/button.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 +36 -35
- package/dist/lib/chip/chip.js.map +1 -1
- package/dist/lib/codeblock/codeblock.cjs +1 -1
- package/dist/lib/codeblock/codeblock.cjs.map +1 -1
- package/dist/lib/codeblock/codeblock.js +11 -10
- package/dist/lib/codeblock/codeblock.js.map +1 -1
- package/dist/lib/combobox/combobox.cjs +1 -1
- package/dist/lib/combobox/combobox.js +1 -1
- package/dist/lib/combobox/index.cjs +1 -1
- package/dist/lib/combobox/index.js +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 +53 -53
- package/dist/lib/combobox-multi-select/combobox-multi-select.js.map +1 -1
- package/dist/lib/combobox-with-popover/combobox-with-popover.cjs +1 -1
- package/dist/lib/combobox-with-popover/combobox-with-popover.cjs.map +1 -1
- package/dist/lib/combobox-with-popover/combobox-with-popover.js +48 -47
- package/dist/lib/combobox-with-popover/combobox-with-popover.js.map +1 -1
- package/dist/lib/editor/editor.cjs +1 -1
- package/dist/lib/editor/editor.js +2 -2
- package/dist/lib/emoji/emoji.cjs +1 -1
- package/dist/lib/emoji/emoji.cjs.map +1 -1
- package/dist/lib/emoji/emoji.js +25 -24
- package/dist/lib/emoji/emoji.js.map +1 -1
- package/dist/lib/emoji-text-wrapper/emoji-text-wrapper.cjs +1 -1
- package/dist/lib/emoji-text-wrapper/emoji-text-wrapper.cjs.map +1 -1
- package/dist/lib/emoji-text-wrapper/emoji-text-wrapper.js +20 -19
- package/dist/lib/emoji-text-wrapper/emoji-text-wrapper.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 +31 -30
- package/dist/lib/empty-state/empty-state.js.map +1 -1
- package/dist/lib/filter-pill/filter-pill.cjs +1 -1
- package/dist/lib/filter-pill/filter-pill.cjs.map +1 -1
- package/dist/lib/filter-pill/filter-pill.js +73 -72
- package/dist/lib/filter-pill/filter-pill.js.map +1 -1
- package/dist/lib/icon/icon.cjs +1 -1
- package/dist/lib/icon/icon.cjs.map +1 -1
- package/dist/lib/icon/icon.js +16 -15
- package/dist/lib/icon/icon.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 +64 -63
- package/dist/lib/input/input.js.map +1 -1
- package/dist/lib/link/link-constants.cjs +1 -1
- package/dist/lib/link/link-constants.cjs.map +1 -1
- package/dist/lib/link/link-constants.js +11 -9
- package/dist/lib/link/link-constants.js.map +1 -1
- package/dist/lib/link/link.cjs +1 -1
- package/dist/lib/link/link.cjs.map +1 -1
- package/dist/lib/link/link.js +17 -14
- package/dist/lib/link/link.js.map +1 -1
- package/dist/lib/loader/loader.cjs +3 -3
- package/dist/lib/loader/loader.cjs.map +1 -1
- package/dist/lib/loader/loader.js +21 -20
- package/dist/lib/loader/loader.js.map +1 -1
- package/dist/lib/message-input/index.cjs +1 -1
- package/dist/lib/message-input/index.js +1 -1
- package/dist/lib/message-input/message-input.cjs +1 -1
- package/dist/lib/message-input/message-input.js +1 -1
- package/dist/lib/modal/index.cjs +1 -1
- package/dist/lib/modal/index.js +3 -3
- package/dist/lib/modal/modal-constants.cjs +1 -1
- package/dist/lib/modal/modal-constants.cjs.map +1 -1
- package/dist/lib/modal/modal-constants.js +1 -4
- package/dist/lib/modal/modal-constants.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 +40 -42
- package/dist/lib/modal/modal.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/progress-circle.cjs +1 -1
- package/dist/lib/progress-circle/progress-circle.cjs.map +1 -1
- package/dist/lib/progress-circle/progress-circle.js +33 -32
- package/dist/lib/progress-circle/progress-circle.js.map +1 -1
- package/dist/lib/prose/prose.cjs +1 -1
- package/dist/lib/prose/prose.cjs.map +1 -1
- package/dist/lib/prose/prose.js +23 -22
- package/dist/lib/prose/prose.js.map +1 -1
- package/dist/lib/rich-text-editor/index.cjs +1 -1
- package/dist/lib/rich-text-editor/index.js +1 -1
- package/dist/lib/rich-text-editor/markdown-renderer.js +1 -1
- package/dist/lib/rich-text-editor/rich-text-editor.cjs +1 -1
- package/dist/lib/rich-text-editor/rich-text-editor.js +1 -1
- package/dist/lib/segmented-control/segmented-control.cjs +1 -1
- package/dist/lib/segmented-control/segmented-control.cjs.map +1 -1
- package/dist/lib/segmented-control/segmented-control.js +42 -41
- package/dist/lib/segmented-control/segmented-control.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 +48 -47
- package/dist/lib/select-menu/select-menu.js.map +1 -1
- 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 +45 -44
- package/dist/lib/split-button/split-button.js.map +1 -1
- 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 +34 -35
- package/dist/lib/tab/tab-group.js.map +1 -1
- package/dist/lib/text/index.cjs +1 -1
- package/dist/lib/text/index.js +3 -3
- package/dist/lib/text/text-constants.cjs +1 -1
- package/dist/lib/text/text-constants.cjs.map +1 -1
- package/dist/lib/text/text-constants.js +70 -21
- package/dist/lib/text/text-constants.js.map +1 -1
- package/dist/lib/text/text.cjs +1 -1
- package/dist/lib/text/text.cjs.map +1 -1
- package/dist/lib/text/text.js +72 -37
- package/dist/lib/text/text.js.map +1 -1
- package/dist/lib/text-list/index.cjs +1 -0
- package/dist/lib/text-list/index.js +4 -0
- package/dist/lib/text-list/text-list-constants.cjs +2 -0
- package/dist/lib/text-list/text-list-constants.cjs.map +1 -0
- package/dist/lib/text-list/text-list-constants.js +31 -0
- package/dist/lib/text-list/text-list-constants.js.map +1 -0
- package/dist/lib/text-list/text-list-item.cjs +1 -0
- package/dist/lib/text-list/text-list-item.js +2 -0
- package/dist/lib/text-list/text-list.cjs +1 -0
- package/dist/lib/text-list/text-list.js +2 -0
- package/dist/lib/text-list/validators.cjs +2 -0
- package/dist/lib/text-list/validators.cjs.map +1 -0
- package/dist/lib/text-list/validators.js +10 -0
- package/dist/lib/text-list/validators.js.map +1 -0
- package/dist/lib/toast/index.cjs +1 -1
- package/dist/lib/toast/index.js +1 -1
- package/dist/lib/toast/toast.cjs +1 -1
- package/dist/lib/toast/toast.js +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 +23 -22
- package/dist/lib/toggle/toggle.js.map +1 -1
- package/dist/{message_input-CbQCd07F.js → message_input-C6BcWqr8.js} +2 -2
- package/dist/{message_input-CbQCd07F.js.map → message_input-C6BcWqr8.js.map} +1 -1
- package/dist/{message_input-dBQwgyjI.cjs → message_input-ftx8f8wC.cjs} +2 -2
- package/dist/{message_input-dBQwgyjI.cjs.map → message_input-ftx8f8wC.cjs.map} +1 -1
- package/dist/node_modules/@tiptap/vue-3.cjs.map +1 -1
- package/dist/node_modules/@tiptap/vue-3.js +1 -1
- package/dist/node_modules/@tiptap/vue-3.js.map +1 -1
- package/dist/recipes/buttons/callbar_button/callbar_button.vue.d.ts +33 -33
- package/dist/recipes/buttons/callbar_button_with_dropdown/callbar_button_with_dropdown.vue.d.ts +149 -149
- package/dist/recipes/buttons/callbar_button_with_dropdown/callbar_button_with_dropdown.vue.d.ts.map +1 -1
- package/dist/recipes/buttons/callbar_button_with_popover/callbar_button_with_popover.vue.d.ts +147 -147
- package/dist/recipes/buttons/callbar_button_with_popover/callbar_button_with_popover.vue.d.ts.map +1 -1
- package/dist/recipes/cards/ivr_node/ivr_node.vue.d.ts +173 -173
- package/dist/recipes/cards/ivr_node/ivr_node.vue.d.ts.map +1 -1
- package/dist/recipes/chips/grouped_chip/grouped_chip.vue.d.ts +40 -40
- package/dist/recipes/chips/grouped_chip/grouped_chip.vue.d.ts.map +1 -1
- package/dist/recipes/conversation_view/attachment_carousel/attachment_carousel.vue.d.ts +132 -132
- package/dist/recipes/conversation_view/attachment_carousel/attachment_carousel.vue.d.ts.map +1 -1
- package/dist/recipes/conversation_view/attachment_carousel/media_components/image_carousel.vue.d.ts +97 -97
- package/dist/recipes/conversation_view/attachment_carousel/media_components/image_carousel.vue.d.ts.map +1 -1
- package/dist/recipes/conversation_view/editor/EditorToolbarButton.vue.d.ts +25 -25
- package/dist/recipes/conversation_view/editor/EditorToolbarDropdownButton.vue.d.ts +107 -107
- package/dist/recipes/conversation_view/editor/EditorToolbarDropdownButton.vue.d.ts.map +1 -1
- package/dist/recipes/conversation_view/editor/EditorToolbarPopoverButton.vue.d.ts +103 -103
- package/dist/recipes/conversation_view/editor/EditorToolbarPopoverButton.vue.d.ts.map +1 -1
- package/dist/recipes/conversation_view/editor/editor.vue.d.ts +672 -637
- package/dist/recipes/conversation_view/editor/editor.vue.d.ts.map +1 -1
- package/dist/recipes/conversation_view/emoji_row/emoji_row.vue.d.ts +70 -70
- package/dist/recipes/conversation_view/emoji_row/emoji_row.vue.d.ts.map +1 -1
- package/dist/recipes/conversation_view/feed_item_pill/feed_item_pill.vue.d.ts +66 -66
- package/dist/recipes/conversation_view/feed_item_pill/feed_item_pill.vue.d.ts.map +1 -1
- package/dist/recipes/conversation_view/feed_item_row/feed_item_row.vue.d.ts +55 -55
- package/dist/recipes/conversation_view/feed_item_row/feed_item_row.vue.d.ts.map +1 -1
- package/dist/recipes/conversation_view/message_input/extensions/meeting_pill/MeetingPill.vue.d.ts +55 -55
- package/dist/recipes/conversation_view/message_input/extensions/meeting_pill/MeetingPill.vue.d.ts.map +1 -1
- package/dist/recipes/conversation_view/message_input/message_input.vue.d.ts +784 -609
- package/dist/recipes/conversation_view/message_input/message_input.vue.d.ts.map +1 -1
- package/dist/recipes/conversation_view/message_input/message_input_button.vue.d.ts +145 -110
- package/dist/recipes/conversation_view/message_input/message_input_button.vue.d.ts.map +1 -1
- package/dist/recipes/conversation_view/message_input/message_input_link.vue.d.ts +326 -256
- package/dist/recipes/conversation_view/message_input/message_input_link.vue.d.ts.map +1 -1
- package/dist/recipes/conversation_view/message_input/message_input_topbar.vue.d.ts +185 -150
- package/dist/recipes/conversation_view/message_input/message_input_topbar.vue.d.ts.map +1 -1
- package/dist/recipes/header/settings_menu_button/settings_menu_button.vue.d.ts +30 -30
- package/dist/recipes/header/settings_menu_button/settings_menu_button.vue.d.ts.map +1 -1
- package/dist/recipes/item_layout/contact_info/contact_info.vue.d.ts +30 -30
- package/dist/recipes/leftbar/callbox/callbox.vue.d.ts +28 -28
- package/dist/recipes/leftbar/callbox/callbox.vue.d.ts.map +1 -1
- package/dist/recipes/leftbar/contact_centers_row/contact_centers_row.vue.d.ts +72 -72
- package/dist/recipes/leftbar/contact_centers_row/contact_centers_row.vue.d.ts.map +1 -1
- package/dist/recipes/leftbar/contact_row/contact_row.vue.d.ts +215 -215
- package/dist/recipes/leftbar/contact_row/contact_row.vue.d.ts.map +1 -1
- package/dist/recipes/leftbar/general_row/general_row.vue.d.ts +176 -176
- package/dist/recipes/leftbar/general_row/general_row.vue.d.ts.map +1 -1
- package/dist/recipes/leftbar/general_row/leftbar_general_row_icon.vue.d.ts +80 -80
- package/dist/recipes/leftbar/general_row/leftbar_general_row_icon.vue.d.ts.map +1 -1
- package/dist/recipes/leftbar/group_row/group_row.vue.d.ts +181 -181
- package/dist/recipes/leftbar/group_row/group_row.vue.d.ts.map +1 -1
- package/dist/recipes/leftbar/unread_pill/unread_pill.vue.d.ts +10 -10
- package/dist/recipes/leftbar/unread_pill/unread_pill.vue.d.ts.map +1 -1
- package/package.json +4 -4
- package/dist/Combobox-By01ETlj.js.map +0 -1
- package/dist/Combobox-D4hc1-41.cjs +0 -3
- package/dist/Combobox-D4hc1-41.cjs.map +0 -1
- package/dist/Toast-CHbVmbBg.js.map +0 -1
- package/dist/Toast-DX-REYXG.cjs +0 -2
- package/dist/Toast-DX-REYXG.cjs.map +0 -1
|
@@ -1,17 +1,18 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { t as r } from "../../
|
|
3
|
-
import {
|
|
4
|
-
import c from "../
|
|
5
|
-
import l from "
|
|
6
|
-
import u from "./split-button-
|
|
7
|
-
import
|
|
1
|
+
import { ordinalSizeValidator as e } from "../../common/validators/index.js";
|
|
2
|
+
import { hasSlotContent as t, returnFirstEl as n, warnIfUnmounted as r } from "../../common/utils/index.js";
|
|
3
|
+
import { t as i } from "../../_plugin-vue_export-helper-BTgDAbhb.js";
|
|
4
|
+
import { BUTTON_IMPORTANCE_MODIFIERS as a, BUTTON_KIND_MODIFIERS as o, BUTTON_SIZE_MODIFIERS as s, ICON_POSITION_MODIFIERS as c } from "../button/button-constants.js";
|
|
5
|
+
import l from "../dropdown/dropdown.js";
|
|
6
|
+
import u from "./split-button-start.js";
|
|
7
|
+
import d from "./split-button-end.js";
|
|
8
|
+
import { Fragment as f, createBlock as p, createElementBlock as m, createSlots as h, createVNode as g, mergeProps as _, normalizeClass as v, normalizeStyle as y, openBlock as b, renderSlot as x, resolveComponent as S, withCtx as C } from "vue";
|
|
8
9
|
//#region components/SplitButton/SplitButton.vue
|
|
9
|
-
var
|
|
10
|
+
var w = {
|
|
10
11
|
name: "DtSplitButton",
|
|
11
12
|
components: {
|
|
12
|
-
SplitButtonEnd:
|
|
13
|
-
DtDropdown:
|
|
14
|
-
SplitButtonStart:
|
|
13
|
+
SplitButtonEnd: d,
|
|
14
|
+
DtDropdown: l,
|
|
15
|
+
SplitButtonStart: u
|
|
15
16
|
},
|
|
16
17
|
inheritAttrs: !1,
|
|
17
18
|
props: {
|
|
@@ -34,12 +35,12 @@ var C = {
|
|
|
34
35
|
startIconPosition: {
|
|
35
36
|
type: String,
|
|
36
37
|
default: "left",
|
|
37
|
-
validator: (e) => Object.keys(
|
|
38
|
+
validator: (e) => Object.keys(c).includes(e)
|
|
38
39
|
},
|
|
39
40
|
alphaIconPosition: {
|
|
40
41
|
type: String,
|
|
41
42
|
default: void 0,
|
|
42
|
-
validator: (e) => e === void 0 || Object.keys(
|
|
43
|
+
validator: (e) => e === void 0 || Object.keys(c).includes(e)
|
|
43
44
|
},
|
|
44
45
|
startLabelClass: {
|
|
45
46
|
type: [
|
|
@@ -128,12 +129,12 @@ var C = {
|
|
|
128
129
|
importance: {
|
|
129
130
|
type: String,
|
|
130
131
|
default: "primary",
|
|
131
|
-
validator: (e) => Object.keys(
|
|
132
|
+
validator: (e) => Object.keys(a).includes(e)
|
|
132
133
|
},
|
|
133
134
|
kind: {
|
|
134
135
|
type: String,
|
|
135
136
|
default: "default",
|
|
136
|
-
validator: (e) => Object.keys(
|
|
137
|
+
validator: (e) => Object.keys(o).includes(e)
|
|
137
138
|
},
|
|
138
139
|
endActive: {
|
|
139
140
|
type: Boolean,
|
|
@@ -178,7 +179,7 @@ var C = {
|
|
|
178
179
|
size: {
|
|
179
180
|
type: [String, Number],
|
|
180
181
|
default: 300,
|
|
181
|
-
validator:
|
|
182
|
+
validator: e(s)
|
|
182
183
|
},
|
|
183
184
|
width: {
|
|
184
185
|
type: String,
|
|
@@ -265,7 +266,7 @@ var C = {
|
|
|
265
266
|
this.validateProps();
|
|
266
267
|
},
|
|
267
268
|
mounted() {
|
|
268
|
-
n(
|
|
269
|
+
r(n(this.$el), this.$options.name);
|
|
269
270
|
},
|
|
270
271
|
methods: {
|
|
271
272
|
onStartClick() {
|
|
@@ -278,39 +279,39 @@ var C = {
|
|
|
278
279
|
this.validateStartButtonProps(), this.validateEndButtonProps(), this.validateShowDivider();
|
|
279
280
|
},
|
|
280
281
|
validateStartButtonProps() {
|
|
281
|
-
|
|
282
|
+
t(this.$slots.default) || (t(this.$slots.startIcon) || t(this.$slots.alphaIcon)) && !(this.alphaTooltipText ?? this.startTooltipText) && console.warn("start-tooltip-text prop must be set if start button has an icon only");
|
|
282
283
|
},
|
|
283
284
|
validateEndButtonProps() {
|
|
284
|
-
|
|
285
|
+
t(this.$slots.end) || t(this.$slots.omega) || (this.omegaTooltipText ?? this.endTooltipText) || console.warn("end-tooltip-text prop is required as it is an icon-only button");
|
|
285
286
|
},
|
|
286
287
|
validateShowDivider() {
|
|
287
288
|
!this.showDivider && this.importance !== "clear" && console.warn("show-divider prop set to false has no effect when importance is not \"clear\". The divider is always shown for \"outlined\" and \"primary\" importances.");
|
|
288
289
|
}
|
|
289
290
|
}
|
|
290
291
|
};
|
|
291
|
-
function
|
|
292
|
-
let o =
|
|
293
|
-
return
|
|
292
|
+
function T(e, t, n, r, i, a) {
|
|
293
|
+
let o = S("split-button-start"), s = S("split-button-end"), c = S("dt-dropdown");
|
|
294
|
+
return b(), m("span", {
|
|
294
295
|
"data-qa": "dt-split-button",
|
|
295
|
-
class:
|
|
296
|
+
class: v([
|
|
296
297
|
"d-split-btn",
|
|
297
298
|
{ "d-split-btn--no-divider": !n.showDivider && n.importance === "clear" },
|
|
298
299
|
e.$attrs.class
|
|
299
300
|
]),
|
|
300
|
-
style:
|
|
301
|
-
}, [
|
|
301
|
+
style: y([e.$attrs.style, { width: n.width }])
|
|
302
|
+
}, [g(o, _(a.startButtonProps, {
|
|
302
303
|
ref: "startButton",
|
|
303
304
|
onClick: a.onStartClick
|
|
304
|
-
}),
|
|
305
|
-
default:
|
|
305
|
+
}), h({
|
|
306
|
+
default: C(() => [x(e.$slots, "default")]),
|
|
306
307
|
_: 2
|
|
307
308
|
}, [
|
|
308
309
|
e.$slots.startEndIcon ? {
|
|
309
310
|
name: "startIcon",
|
|
310
|
-
fn:
|
|
311
|
+
fn: C(({ size: t }) => [e.$slots.startIcon ? x(e.$slots, "startIcon", {
|
|
311
312
|
key: 0,
|
|
312
313
|
size: t
|
|
313
|
-
}) :
|
|
314
|
+
}) : x(e.$slots, "alphaIcon", {
|
|
314
315
|
key: 1,
|
|
315
316
|
size: t
|
|
316
317
|
})]),
|
|
@@ -318,15 +319,15 @@ function w(e, t, n, r, i, a) {
|
|
|
318
319
|
} : void 0,
|
|
319
320
|
e.$slots.startEndIcon ? {
|
|
320
321
|
name: "endIcon",
|
|
321
|
-
fn:
|
|
322
|
+
fn: C(({ size: t }) => [x(e.$slots, "startEndIcon", { size: t })]),
|
|
322
323
|
key: "1"
|
|
323
324
|
} : void 0,
|
|
324
325
|
e.$slots.startEndIcon ? void 0 : {
|
|
325
326
|
name: "icon",
|
|
326
|
-
fn:
|
|
327
|
+
fn: C(({ size: t }) => [e.$slots.startIcon ? x(e.$slots, "startIcon", {
|
|
327
328
|
key: 0,
|
|
328
329
|
size: t
|
|
329
|
-
}) :
|
|
330
|
+
}) : x(e.$slots, "alphaIcon", {
|
|
330
331
|
key: 1,
|
|
331
332
|
size: t
|
|
332
333
|
})]),
|
|
@@ -334,51 +335,51 @@ function w(e, t, n, r, i, a) {
|
|
|
334
335
|
},
|
|
335
336
|
e.$slots.leading ? {
|
|
336
337
|
name: "leading",
|
|
337
|
-
fn:
|
|
338
|
+
fn: C(() => [x(e.$slots, "leading")]),
|
|
338
339
|
key: "3"
|
|
339
340
|
} : void 0,
|
|
340
341
|
e.$slots.trailing ? {
|
|
341
342
|
name: "trailing",
|
|
342
|
-
fn:
|
|
343
|
+
fn: C(() => [x(e.$slots, "trailing")]),
|
|
343
344
|
key: "4"
|
|
344
345
|
} : void 0
|
|
345
|
-
]), 1040, ["onClick"]), e.$slots.end ?
|
|
346
|
+
]), 1040, ["onClick"]), e.$slots.end ? x(e.$slots, "end", { key: 0 }) : e.$slots.omega ? x(e.$slots, "omega", { key: 1 }) : (b(), m(f, { key: 2 }, [e.$slots.dropdownList ? (b(), p(c, {
|
|
346
347
|
key: 0,
|
|
347
348
|
placement: n.dropdownPlacement,
|
|
348
349
|
onClick: t[0] || (t[0] = (e) => i.isDropdownOpen = !0),
|
|
349
350
|
onOpened: t[1] || (t[1] = (e) => i.isDropdownOpen = e)
|
|
350
351
|
}, {
|
|
351
|
-
anchor:
|
|
352
|
+
anchor: C((t) => [g(s, _({
|
|
352
353
|
...t,
|
|
353
354
|
...a.endButtonProps
|
|
354
355
|
}, {
|
|
355
356
|
active: i.isDropdownOpen,
|
|
356
357
|
onClick: a.onEndClick
|
|
357
358
|
}), {
|
|
358
|
-
icon:
|
|
359
|
+
icon: C(({ size: t }) => [e.$slots.endIcon ? x(e.$slots, "endIcon", {
|
|
359
360
|
key: 0,
|
|
360
361
|
size: t
|
|
361
|
-
}) :
|
|
362
|
+
}) : x(e.$slots, "omegaIcon", {
|
|
362
363
|
key: 1,
|
|
363
364
|
size: t
|
|
364
365
|
})]),
|
|
365
366
|
_: 3
|
|
366
367
|
}, 16, ["active", "onClick"])]),
|
|
367
|
-
list:
|
|
368
|
+
list: C(({ close: t }) => [x(e.$slots, "dropdownList", { close: t })]),
|
|
368
369
|
_: 3
|
|
369
|
-
}, 8, ["placement"])) : (
|
|
370
|
-
icon:
|
|
370
|
+
}, 8, ["placement"])) : (b(), p(s, _({ key: 1 }, a.endButtonProps, { onClick: a.onEndClick }), {
|
|
371
|
+
icon: C(({ size: t }) => [e.$slots.endIcon ? x(e.$slots, "endIcon", {
|
|
371
372
|
key: 0,
|
|
372
373
|
size: t
|
|
373
|
-
}) :
|
|
374
|
+
}) : x(e.$slots, "omegaIcon", {
|
|
374
375
|
key: 1,
|
|
375
376
|
size: t
|
|
376
377
|
})]),
|
|
377
378
|
_: 3
|
|
378
379
|
}, 16, ["onClick"]))], 64))], 6);
|
|
379
380
|
}
|
|
380
|
-
var
|
|
381
|
+
var E = /* @__PURE__ */ i(w, [["render", T]]);
|
|
381
382
|
//#endregion
|
|
382
|
-
export {
|
|
383
|
+
export { E as default };
|
|
383
384
|
|
|
384
385
|
//# sourceMappingURL=split-button.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"split-button.js","names":[],"sources":["../../../components/SplitButton/SplitButton.vue"],"sourcesContent":["<template>\n <span\n data-qa=\"dt-split-button\"\n :class=\"['d-split-btn', { 'd-split-btn--no-divider': !showDivider && importance === 'clear' }, $attrs.class]\"\n :style=\"[$attrs.style, { width }]\"\n >\n <split-button-start\n v-bind=\"startButtonProps\"\n ref=\"startButton\"\n @click=\"onStartClick\"\n >\n <!-- Dual-icon path: when startEndIcon is provided, use DtButton's startIcon/endIcon -->\n <template\n v-if=\"$slots.startEndIcon\"\n #startIcon=\"{ size: iconSize }\"\n >\n <!-- @slot Start (left) button icon slot -->\n <slot\n v-if=\"$slots.startIcon\"\n name=\"startIcon\"\n :size=\"iconSize\"\n />\n <!-- @slot @deprecated Use startIcon -->\n <slot\n v-else\n name=\"alphaIcon\"\n :size=\"iconSize\"\n />\n </template>\n <template\n v-if=\"$slots.startEndIcon\"\n #endIcon=\"{ size: iconSize }\"\n >\n <!-- @slot End-positioned icon within the start button (enables dual icons on the start button) -->\n <slot\n name=\"startEndIcon\"\n :size=\"iconSize\"\n />\n </template>\n <!-- Legacy single-icon path: uses DtButton's icon slot with iconPosition -->\n <template\n v-if=\"!$slots.startEndIcon\"\n #icon=\"{ size: iconSize }\"\n >\n <!-- @slot Start (left) button icon slot -->\n <slot\n v-if=\"$slots.startIcon\"\n name=\"startIcon\"\n :size=\"iconSize\"\n />\n <!-- @slot @deprecated Use startIcon -->\n <slot\n v-else\n name=\"alphaIcon\"\n :size=\"iconSize\"\n />\n </template>\n <template\n v-if=\"$slots.leading\"\n #leading\n >\n <!-- @slot Leading slot, forwarded to the alpha button's leading slot -->\n <slot name=\"leading\" />\n </template>\n <template\n v-if=\"$slots.trailing\"\n #trailing\n >\n <!-- @slot Trailing slot, forwarded to the alpha button's trailing slot -->\n <slot name=\"trailing\" />\n </template>\n <!-- @slot Default content slot -->\n <slot name=\"default\" />\n </split-button-start>\n <!-- @slot End (right) content slot, overrides end button styling and functionality completely -->\n <template v-if=\"$slots.end\">\n <slot name=\"end\" />\n </template>\n <!-- @slot @deprecated Use end -->\n <template v-else-if=\"$slots.omega\">\n <slot name=\"omega\" />\n </template>\n <template v-else>\n <dt-dropdown\n v-if=\"$slots.dropdownList\"\n :placement=\"dropdownPlacement\"\n @click=\"isDropdownOpen = true\"\n @opened=\"open => isDropdownOpen = open\"\n >\n <template #anchor=\"attrs\">\n <split-button-end\n v-bind=\"{ ...attrs, ...endButtonProps }\"\n :active=\"isDropdownOpen\"\n @click=\"onEndClick\"\n >\n <template #icon=\"{ size: iconSize }\">\n <!-- @slot End (right) button icon slot -->\n <slot\n v-if=\"$slots.endIcon\"\n name=\"endIcon\"\n :size=\"iconSize\"\n />\n <!-- @slot @deprecated Use endIcon -->\n <slot\n v-else\n name=\"omegaIcon\"\n :size=\"iconSize\"\n />\n </template>\n </split-button-end>\n </template>\n <template #list=\"{ close }\">\n <!-- @slot Built-in dropdown content slot, use of dt-list-item is highly recommended here. -->\n <slot\n name=\"dropdownList\"\n :close=\"close\"\n />\n </template>\n </dt-dropdown>\n\n <split-button-end\n v-else\n v-bind=\"endButtonProps\"\n @click=\"onEndClick\"\n >\n <template #icon=\"{ size: iconSize }\">\n <!-- @slot End (right) button icon slot -->\n <slot\n v-if=\"$slots.endIcon\"\n name=\"endIcon\"\n :size=\"iconSize\"\n />\n <!-- @slot @deprecated Use endIcon -->\n <slot\n v-else\n name=\"omegaIcon\"\n :size=\"iconSize\"\n />\n </template>\n </split-button-end>\n </template>\n </span>\n</template>\n\n<script>\nimport {\n BUTTON_IMPORTANCE_MODIFIERS,\n BUTTON_KIND_MODIFIERS,\n BUTTON_SIZE_MODIFIERS,\n ICON_POSITION_MODIFIERS,\n} from '@/components/Button';\nimport SplitButtonStart from './SplitButtonStart.vue';\nimport SplitButtonEnd from './SplitButtonEnd.vue';\nimport { DtDropdown } from '@/components/Dropdown';\nimport { hasSlotContent, warnIfUnmounted, returnFirstEl } from '@/common/utils';\n\nexport default {\n name: 'DtSplitButton',\n\n components: {\n SplitButtonEnd,\n DtDropdown,\n SplitButtonStart,\n },\n\n inheritAttrs: false,\n\n props: {\n /**\n * Determines whether the start button should have active styling\n * @values true, false\n */\n startActive: {\n type: Boolean,\n default: false,\n },\n\n /**\n * @deprecated Use startActive\n * @values true, false\n */\n alphaActive: {\n type: Boolean,\n default: null,\n },\n\n /**\n * Descriptive label for the start button\n */\n startAriaLabel: {\n type: String,\n default: null,\n },\n\n /**\n * @deprecated Use startAriaLabel\n */\n alphaAriaLabel: {\n type: String,\n default: undefined,\n },\n\n /**\n * The position of the icon slot within the start button.\n * @values start, end, blockStart, blockEnd, left, right, top, bottom\n */\n startIconPosition: {\n type: String,\n default: 'left',\n validator: (position) => Object.keys(ICON_POSITION_MODIFIERS).includes(position),\n },\n\n /**\n * @deprecated Use startIconPosition\n * @values start, end, blockStart, blockEnd, left, right, top, bottom\n */\n alphaIconPosition: {\n type: String,\n default: undefined,\n validator: (position) => position === undefined || Object.keys(ICON_POSITION_MODIFIERS).includes(position),\n },\n\n /**\n * Used to customize the start label container\n */\n startLabelClass: {\n type: [String, Array, Object],\n default: '',\n },\n\n /**\n * Used to customize the start button leading container\n */\n startLeadingClass: {\n type: [String, Array, Object],\n default: '',\n },\n\n /**\n * @deprecated Use startLeadingClass\n */\n alphaLeadingClass: {\n type: [String, Array, Object],\n default: undefined,\n },\n\n /**\n * Used to customize the start button trailing container\n */\n startTrailingClass: {\n type: [String, Array, Object],\n default: '',\n },\n\n /**\n * @deprecated Use startTrailingClass\n */\n alphaTrailingClass: {\n type: [String, Array, Object],\n default: undefined,\n },\n\n /**\n * @deprecated Use startLabelClass\n */\n alphaLabelClass: {\n type: [String, Array, Object],\n default: undefined,\n },\n\n /**\n * HTML button disabled attribute for start button only\n * <a class=\"d-link\" href=\"https://developer.mozilla.org/en-US/docs/Web/HTML/Element/button#disabled\" target=\"_blank\">\n * (Reference)\n * </a>\n * @values true, false\n */\n startDisabled: {\n type: Boolean,\n default: false,\n },\n\n /**\n * @deprecated Use startDisabled\n * @values true, false\n */\n alphaDisabled: {\n type: Boolean,\n default: null,\n },\n\n /**\n * Whether the start button should display a loading animation or not.\n * @values true, false\n */\n startLoading: {\n type: Boolean,\n default: false,\n },\n\n /**\n * @deprecated Use startLoading\n * @values true, false\n */\n alphaLoading: {\n type: Boolean,\n default: null,\n },\n\n /**\n * Text shown in tooltip when you hover the start button,\n * required if no content is passed to default slot\n */\n startTooltipText: {\n type: String,\n default: undefined,\n },\n\n /**\n * @deprecated Use startTooltipText\n */\n alphaTooltipText: {\n type: String,\n default: undefined,\n },\n\n /**\n * Determines whether a screenreader reads live updates of\n * the button content to the user while the button\n * is in focus.\n * @values true, false\n */\n assertiveOnFocus: {\n type: Boolean,\n default: false,\n },\n\n /**\n * HTML button disabled attribute for both buttons.\n * Use startDisabled or endDisabled to disable buttons individually.\n * <a class=\"d-link\" href=\"https://developer.mozilla.org/en-US/docs/Web/HTML/Element/button#disabled\" target=\"_blank\">\n * (Reference)\n * </a>\n * @values true, false\n */\n disabled: {\n type: Boolean,\n default: false,\n },\n\n /**\n * The direction the dropdown displays relative to the anchor.\n * @values top, top-start, top-end, right, right-start, right-end, left, left-start, left-end, bottom, bottom-start, bottom-end, auto, auto-start, auto-end\n */\n dropdownPlacement: {\n type: String,\n default: 'bottom-end',\n },\n\n /**\n * The fill and outline of the button associated with its visual importance.\n * @values clear, outlined, primary\n */\n importance: {\n type: String,\n default: 'primary',\n validator: (i) => Object.keys(BUTTON_IMPORTANCE_MODIFIERS).includes(i),\n },\n\n /**\n * The color of the button.\n * @values default, unstyled, muted, critical, positive\n */\n kind: {\n type: String,\n default: 'default',\n validator: (k) => Object.keys(BUTTON_KIND_MODIFIERS).includes(k),\n },\n\n /**\n * Determines whether the end button should have active styling\n * @values true, false\n */\n endActive: {\n type: Boolean,\n default: false,\n },\n\n /**\n * @deprecated Use endActive\n * @values true, false\n */\n omegaActive: {\n type: Boolean,\n default: null,\n },\n\n /**\n * Descriptive label for the end button\n */\n endAriaLabel: {\n type: String,\n default: null,\n },\n\n /**\n * @deprecated Use endAriaLabel\n */\n omegaAriaLabel: {\n type: String,\n default: undefined,\n },\n\n /**\n * HTML button disabled attribute for end button only\n * <a class=\"d-link\" href=\"https://developer.mozilla.org/en-US/docs/Web/HTML/Element/button#disabled\" target=\"_blank\">\n * (Reference)\n * </a>\n * @values true, false\n */\n endDisabled: {\n type: Boolean,\n default: false,\n },\n\n /**\n * @deprecated Use endDisabled\n * @values true, false\n */\n omegaDisabled: {\n type: Boolean,\n default: null,\n },\n\n /**\n * Element ID, useful in case you need to reference the button\n * as an external anchor for popover.\n */\n endId: {\n type: String,\n default: undefined,\n },\n\n /**\n * @deprecated Use endId\n */\n omegaId: {\n type: String,\n default: undefined,\n },\n\n /**\n * Text shown in tooltip when you hover the end button,\n * required as it is an icon only button\n */\n endTooltipText: {\n type: String,\n default: undefined,\n },\n\n /**\n * @deprecated Use endTooltipText\n */\n omegaTooltipText: {\n type: String,\n default: undefined,\n },\n\n /**\n * The size of the button.\n * @values 100, 200, 300, 400, 500\n */\n size: {\n type: [String, Number],\n default: 300,\n validator: (s) => Object.keys(BUTTON_SIZE_MODIFIERS).includes(String(s)),\n },\n\n /**\n * Button width, accepts\n * <a class=\"d-link\" href=\"https://developer.mozilla.org/en-US/docs/Web/CSS/width\" target=\"_blank\">\n * CSS width attribute\n * </a>\n * values\n */\n width: {\n type: String,\n default: null,\n },\n\n /**\n * Whether to show the vertical divider between the start and end buttons.\n * Only applies when importance is \"clear\".\n * @values true, false\n */\n showDivider: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Vue router `to` prop for the start button.\n * When set, renders the start button as a `<router-link>`.\n */\n startTo: {\n type: [String, Object],\n default: null,\n },\n\n /**\n * Whether to use `router.replace()` instead of `router.push()`\n * when navigating via `startTo`.\n * @values true, false\n */\n startReplace: {\n type: Boolean,\n default: false,\n },\n\n /**\n * HTML href for the start button.\n * When set, renders the start button as an `<a>` element.\n */\n startHref: {\n type: String,\n default: null,\n },\n\n /**\n * HTML target attribute for the start button link.\n * Only applies when `startHref` is set.\n */\n startTarget: {\n type: String,\n default: null,\n },\n\n /**\n * HTML rel attribute for the start button link.\n * Only applies when `startHref` is set.\n */\n startRel: {\n type: String,\n default: null,\n },\n },\n\n emits: [\n /**\n * Native start button click event\n *\n * @event click\n * @type {PointerEvent | KeyboardEvent}\n */\n 'start-clicked',\n\n /**\n * @deprecated Use start-clicked\n */\n 'alpha-clicked',\n\n /**\n * Native end button click event\n *\n * @event click\n * @type {PointerEvent | KeyboardEvent}\n */\n 'end-clicked',\n\n /**\n * @deprecated Use end-clicked\n */\n 'omega-clicked',\n ],\n\n data () {\n return {\n isDropdownOpen: false,\n };\n },\n\n computed: {\n startButtonProps () {\n return {\n active: this.alphaActive ?? this.startActive,\n ariaLabel: this.alphaAriaLabel ?? this.startAriaLabel,\n assertiveOnFocus: this.assertiveOnFocus,\n disabled: this.disabled || (this.alphaDisabled ?? this.startDisabled),\n iconPosition: this.alphaIconPosition ?? this.startIconPosition,\n labelClass: this.alphaLabelClass ?? this.startLabelClass,\n leadingClass: this.alphaLeadingClass ?? this.startLeadingClass,\n trailingClass: this.alphaTrailingClass ?? this.startTrailingClass,\n loading: this.alphaLoading ?? this.startLoading,\n importance: this.importance,\n kind: this.kind,\n size: this.size,\n tooltipText: this.alphaTooltipText ?? this.startTooltipText,\n to: this.startTo,\n replace: this.startReplace,\n href: this.startHref,\n target: this.startTarget,\n rel: this.startRel,\n class: this.$attrs.class,\n style: this.$attrs.style,\n };\n },\n\n endButtonProps () {\n return {\n id: this.omegaId ?? this.endId,\n active: this.omegaActive ?? this.endActive,\n ariaLabel: this.omegaAriaLabel ?? this.endAriaLabel,\n disabled: this.disabled || (this.omegaDisabled ?? this.endDisabled),\n importance: this.importance,\n kind: this.kind,\n size: this.size,\n tooltipText: this.omegaTooltipText ?? this.endTooltipText,\n class: this.$attrs.class,\n style: this.$attrs.style,\n };\n },\n },\n\n created () {\n this.validateProps();\n },\n\n updated () {\n this.validateProps();\n },\n\n mounted () {\n warnIfUnmounted(returnFirstEl(this.$el), this.$options.name);\n },\n\n methods: {\n onStartClick () {\n this.$emit('start-clicked');\n this.$emit('alpha-clicked');\n },\n\n onEndClick () {\n this.$emit('end-clicked');\n this.$emit('omega-clicked');\n },\n\n validateProps () {\n this.validateStartButtonProps();\n this.validateEndButtonProps();\n this.validateShowDivider();\n },\n\n validateStartButtonProps () {\n if (hasSlotContent(this.$slots.default)) return;\n\n if ((hasSlotContent(this.$slots.startIcon) || hasSlotContent(this.$slots.alphaIcon)) &&\n !(this.alphaTooltipText ?? this.startTooltipText)) {\n console.warn('start-tooltip-text prop must be set if start button has an icon only');\n }\n },\n\n validateEndButtonProps () {\n if (hasSlotContent(this.$slots.end) || hasSlotContent(this.$slots.omega)) return;\n\n if (!(this.omegaTooltipText ?? this.endTooltipText)) {\n console.warn('end-tooltip-text prop is required as it is an icon-only button');\n }\n },\n\n validateShowDivider () {\n if (!this.showDivider && this.importance !== 'clear') {\n console.warn(\n 'show-divider prop set to false has no effect when importance is not \"clear\". ' +\n 'The divider is always shown for \"outlined\" and \"primary\" importances.',\n );\n }\n },\n },\n};\n</script>\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"split-button.js","names":[],"sources":["../../../components/SplitButton/SplitButton.vue"],"sourcesContent":["<template>\n <span\n data-qa=\"dt-split-button\"\n :class=\"['d-split-btn', { 'd-split-btn--no-divider': !showDivider && importance === 'clear' }, $attrs.class]\"\n :style=\"[$attrs.style, { width }]\"\n >\n <split-button-start\n v-bind=\"startButtonProps\"\n ref=\"startButton\"\n @click=\"onStartClick\"\n >\n <!-- Dual-icon path: when startEndIcon is provided, use DtButton's startIcon/endIcon -->\n <template\n v-if=\"$slots.startEndIcon\"\n #startIcon=\"{ size: iconSize }\"\n >\n <!-- @slot Start (left) button icon slot -->\n <slot\n v-if=\"$slots.startIcon\"\n name=\"startIcon\"\n :size=\"iconSize\"\n />\n <!-- @slot @deprecated Use startIcon -->\n <slot\n v-else\n name=\"alphaIcon\"\n :size=\"iconSize\"\n />\n </template>\n <template\n v-if=\"$slots.startEndIcon\"\n #endIcon=\"{ size: iconSize }\"\n >\n <!-- @slot End-positioned icon within the start button (enables dual icons on the start button) -->\n <slot\n name=\"startEndIcon\"\n :size=\"iconSize\"\n />\n </template>\n <!-- Legacy single-icon path: uses DtButton's icon slot with iconPosition -->\n <template\n v-if=\"!$slots.startEndIcon\"\n #icon=\"{ size: iconSize }\"\n >\n <!-- @slot Start (left) button icon slot -->\n <slot\n v-if=\"$slots.startIcon\"\n name=\"startIcon\"\n :size=\"iconSize\"\n />\n <!-- @slot @deprecated Use startIcon -->\n <slot\n v-else\n name=\"alphaIcon\"\n :size=\"iconSize\"\n />\n </template>\n <template\n v-if=\"$slots.leading\"\n #leading\n >\n <!-- @slot Leading slot, forwarded to the alpha button's leading slot -->\n <slot name=\"leading\" />\n </template>\n <template\n v-if=\"$slots.trailing\"\n #trailing\n >\n <!-- @slot Trailing slot, forwarded to the alpha button's trailing slot -->\n <slot name=\"trailing\" />\n </template>\n <!-- @slot Default content slot -->\n <slot name=\"default\" />\n </split-button-start>\n <!-- @slot End (right) content slot, overrides end button styling and functionality completely -->\n <template v-if=\"$slots.end\">\n <slot name=\"end\" />\n </template>\n <!-- @slot @deprecated Use end -->\n <template v-else-if=\"$slots.omega\">\n <slot name=\"omega\" />\n </template>\n <template v-else>\n <dt-dropdown\n v-if=\"$slots.dropdownList\"\n :placement=\"dropdownPlacement\"\n @click=\"isDropdownOpen = true\"\n @opened=\"open => isDropdownOpen = open\"\n >\n <template #anchor=\"attrs\">\n <split-button-end\n v-bind=\"{ ...attrs, ...endButtonProps }\"\n :active=\"isDropdownOpen\"\n @click=\"onEndClick\"\n >\n <template #icon=\"{ size: iconSize }\">\n <!-- @slot End (right) button icon slot -->\n <slot\n v-if=\"$slots.endIcon\"\n name=\"endIcon\"\n :size=\"iconSize\"\n />\n <!-- @slot @deprecated Use endIcon -->\n <slot\n v-else\n name=\"omegaIcon\"\n :size=\"iconSize\"\n />\n </template>\n </split-button-end>\n </template>\n <template #list=\"{ close }\">\n <!-- @slot Built-in dropdown content slot, use of dt-list-item is highly recommended here. -->\n <slot\n name=\"dropdownList\"\n :close=\"close\"\n />\n </template>\n </dt-dropdown>\n\n <split-button-end\n v-else\n v-bind=\"endButtonProps\"\n @click=\"onEndClick\"\n >\n <template #icon=\"{ size: iconSize }\">\n <!-- @slot End (right) button icon slot -->\n <slot\n v-if=\"$slots.endIcon\"\n name=\"endIcon\"\n :size=\"iconSize\"\n />\n <!-- @slot @deprecated Use endIcon -->\n <slot\n v-else\n name=\"omegaIcon\"\n :size=\"iconSize\"\n />\n </template>\n </split-button-end>\n </template>\n </span>\n</template>\n\n<script>\nimport {\n BUTTON_IMPORTANCE_MODIFIERS,\n BUTTON_KIND_MODIFIERS,\n BUTTON_SIZE_MODIFIERS,\n ICON_POSITION_MODIFIERS,\n} from '@/components/Button';\nimport SplitButtonStart from './SplitButtonStart.vue';\nimport SplitButtonEnd from './SplitButtonEnd.vue';\nimport { DtDropdown } from '@/components/Dropdown';\nimport { hasSlotContent, warnIfUnmounted, returnFirstEl } from '@/common/utils';\nimport { ordinalSizeValidator } from '@/common/validators';\n\nexport default {\n name: 'DtSplitButton',\n\n components: {\n SplitButtonEnd,\n DtDropdown,\n SplitButtonStart,\n },\n\n inheritAttrs: false,\n\n props: {\n /**\n * Determines whether the start button should have active styling\n * @values true, false\n */\n startActive: {\n type: Boolean,\n default: false,\n },\n\n /**\n * @deprecated Use startActive\n * @values true, false\n */\n alphaActive: {\n type: Boolean,\n default: null,\n },\n\n /**\n * Descriptive label for the start button\n */\n startAriaLabel: {\n type: String,\n default: null,\n },\n\n /**\n * @deprecated Use startAriaLabel\n */\n alphaAriaLabel: {\n type: String,\n default: undefined,\n },\n\n /**\n * The position of the icon slot within the start button.\n * @values start, end, blockStart, blockEnd, left, right, top, bottom\n */\n startIconPosition: {\n type: String,\n default: 'left',\n validator: (position) => Object.keys(ICON_POSITION_MODIFIERS).includes(position),\n },\n\n /**\n * @deprecated Use startIconPosition\n * @values start, end, blockStart, blockEnd, left, right, top, bottom\n */\n alphaIconPosition: {\n type: String,\n default: undefined,\n validator: (position) => position === undefined || Object.keys(ICON_POSITION_MODIFIERS).includes(position),\n },\n\n /**\n * Used to customize the start label container\n */\n startLabelClass: {\n type: [String, Array, Object],\n default: '',\n },\n\n /**\n * Used to customize the start button leading container\n */\n startLeadingClass: {\n type: [String, Array, Object],\n default: '',\n },\n\n /**\n * @deprecated Use startLeadingClass\n */\n alphaLeadingClass: {\n type: [String, Array, Object],\n default: undefined,\n },\n\n /**\n * Used to customize the start button trailing container\n */\n startTrailingClass: {\n type: [String, Array, Object],\n default: '',\n },\n\n /**\n * @deprecated Use startTrailingClass\n */\n alphaTrailingClass: {\n type: [String, Array, Object],\n default: undefined,\n },\n\n /**\n * @deprecated Use startLabelClass\n */\n alphaLabelClass: {\n type: [String, Array, Object],\n default: undefined,\n },\n\n /**\n * HTML button disabled attribute for start button only\n * <a class=\"d-link\" href=\"https://developer.mozilla.org/en-US/docs/Web/HTML/Element/button#disabled\" target=\"_blank\">\n * (Reference)\n * </a>\n * @values true, false\n */\n startDisabled: {\n type: Boolean,\n default: false,\n },\n\n /**\n * @deprecated Use startDisabled\n * @values true, false\n */\n alphaDisabled: {\n type: Boolean,\n default: null,\n },\n\n /**\n * Whether the start button should display a loading animation or not.\n * @values true, false\n */\n startLoading: {\n type: Boolean,\n default: false,\n },\n\n /**\n * @deprecated Use startLoading\n * @values true, false\n */\n alphaLoading: {\n type: Boolean,\n default: null,\n },\n\n /**\n * Text shown in tooltip when you hover the start button,\n * required if no content is passed to default slot\n */\n startTooltipText: {\n type: String,\n default: undefined,\n },\n\n /**\n * @deprecated Use startTooltipText\n */\n alphaTooltipText: {\n type: String,\n default: undefined,\n },\n\n /**\n * Determines whether a screenreader reads live updates of\n * the button content to the user while the button\n * is in focus.\n * @values true, false\n */\n assertiveOnFocus: {\n type: Boolean,\n default: false,\n },\n\n /**\n * HTML button disabled attribute for both buttons.\n * Use startDisabled or endDisabled to disable buttons individually.\n * <a class=\"d-link\" href=\"https://developer.mozilla.org/en-US/docs/Web/HTML/Element/button#disabled\" target=\"_blank\">\n * (Reference)\n * </a>\n * @values true, false\n */\n disabled: {\n type: Boolean,\n default: false,\n },\n\n /**\n * The direction the dropdown displays relative to the anchor.\n * @values top, top-start, top-end, right, right-start, right-end, left, left-start, left-end, bottom, bottom-start, bottom-end, auto, auto-start, auto-end\n */\n dropdownPlacement: {\n type: String,\n default: 'bottom-end',\n },\n\n /**\n * The fill and outline of the button associated with its visual importance.\n * @values clear, outlined, primary\n */\n importance: {\n type: String,\n default: 'primary',\n validator: (i) => Object.keys(BUTTON_IMPORTANCE_MODIFIERS).includes(i),\n },\n\n /**\n * The color of the button.\n * @values default, unstyled, muted, critical, positive\n */\n kind: {\n type: String,\n default: 'default',\n validator: (k) => Object.keys(BUTTON_KIND_MODIFIERS).includes(k),\n },\n\n /**\n * Determines whether the end button should have active styling\n * @values true, false\n */\n endActive: {\n type: Boolean,\n default: false,\n },\n\n /**\n * @deprecated Use endActive\n * @values true, false\n */\n omegaActive: {\n type: Boolean,\n default: null,\n },\n\n /**\n * Descriptive label for the end button\n */\n endAriaLabel: {\n type: String,\n default: null,\n },\n\n /**\n * @deprecated Use endAriaLabel\n */\n omegaAriaLabel: {\n type: String,\n default: undefined,\n },\n\n /**\n * HTML button disabled attribute for end button only\n * <a class=\"d-link\" href=\"https://developer.mozilla.org/en-US/docs/Web/HTML/Element/button#disabled\" target=\"_blank\">\n * (Reference)\n * </a>\n * @values true, false\n */\n endDisabled: {\n type: Boolean,\n default: false,\n },\n\n /**\n * @deprecated Use endDisabled\n * @values true, false\n */\n omegaDisabled: {\n type: Boolean,\n default: null,\n },\n\n /**\n * Element ID, useful in case you need to reference the button\n * as an external anchor for popover.\n */\n endId: {\n type: String,\n default: undefined,\n },\n\n /**\n * @deprecated Use endId\n */\n omegaId: {\n type: String,\n default: undefined,\n },\n\n /**\n * Text shown in tooltip when you hover the end button,\n * required as it is an icon only button\n */\n endTooltipText: {\n type: String,\n default: undefined,\n },\n\n /**\n * @deprecated Use endTooltipText\n */\n omegaTooltipText: {\n type: String,\n default: undefined,\n },\n\n /**\n * The size of the button.\n * @values 100, 200, 300, 400, 500\n */\n size: {\n type: [String, Number],\n default: 300,\n validator: ordinalSizeValidator(BUTTON_SIZE_MODIFIERS),\n },\n\n /**\n * Button width, accepts\n * <a class=\"d-link\" href=\"https://developer.mozilla.org/en-US/docs/Web/CSS/width\" target=\"_blank\">\n * CSS width attribute\n * </a>\n * values\n */\n width: {\n type: String,\n default: null,\n },\n\n /**\n * Whether to show the vertical divider between the start and end buttons.\n * Only applies when importance is \"clear\".\n * @values true, false\n */\n showDivider: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Vue router `to` prop for the start button.\n * When set, renders the start button as a `<router-link>`.\n */\n startTo: {\n type: [String, Object],\n default: null,\n },\n\n /**\n * Whether to use `router.replace()` instead of `router.push()`\n * when navigating via `startTo`.\n * @values true, false\n */\n startReplace: {\n type: Boolean,\n default: false,\n },\n\n /**\n * HTML href for the start button.\n * When set, renders the start button as an `<a>` element.\n */\n startHref: {\n type: String,\n default: null,\n },\n\n /**\n * HTML target attribute for the start button link.\n * Only applies when `startHref` is set.\n */\n startTarget: {\n type: String,\n default: null,\n },\n\n /**\n * HTML rel attribute for the start button link.\n * Only applies when `startHref` is set.\n */\n startRel: {\n type: String,\n default: null,\n },\n },\n\n emits: [\n /**\n * Native start button click event\n *\n * @event click\n * @type {PointerEvent | KeyboardEvent}\n */\n 'start-clicked',\n\n /**\n * @deprecated Use start-clicked\n */\n 'alpha-clicked',\n\n /**\n * Native end button click event\n *\n * @event click\n * @type {PointerEvent | KeyboardEvent}\n */\n 'end-clicked',\n\n /**\n * @deprecated Use end-clicked\n */\n 'omega-clicked',\n ],\n\n data () {\n return {\n isDropdownOpen: false,\n };\n },\n\n computed: {\n startButtonProps () {\n return {\n active: this.alphaActive ?? this.startActive,\n ariaLabel: this.alphaAriaLabel ?? this.startAriaLabel,\n assertiveOnFocus: this.assertiveOnFocus,\n disabled: this.disabled || (this.alphaDisabled ?? this.startDisabled),\n iconPosition: this.alphaIconPosition ?? this.startIconPosition,\n labelClass: this.alphaLabelClass ?? this.startLabelClass,\n leadingClass: this.alphaLeadingClass ?? this.startLeadingClass,\n trailingClass: this.alphaTrailingClass ?? this.startTrailingClass,\n loading: this.alphaLoading ?? this.startLoading,\n importance: this.importance,\n kind: this.kind,\n size: this.size,\n tooltipText: this.alphaTooltipText ?? this.startTooltipText,\n to: this.startTo,\n replace: this.startReplace,\n href: this.startHref,\n target: this.startTarget,\n rel: this.startRel,\n class: this.$attrs.class,\n style: this.$attrs.style,\n };\n },\n\n endButtonProps () {\n return {\n id: this.omegaId ?? this.endId,\n active: this.omegaActive ?? this.endActive,\n ariaLabel: this.omegaAriaLabel ?? this.endAriaLabel,\n disabled: this.disabled || (this.omegaDisabled ?? this.endDisabled),\n importance: this.importance,\n kind: this.kind,\n size: this.size,\n tooltipText: this.omegaTooltipText ?? this.endTooltipText,\n class: this.$attrs.class,\n style: this.$attrs.style,\n };\n },\n },\n\n created () {\n this.validateProps();\n },\n\n updated () {\n this.validateProps();\n },\n\n mounted () {\n warnIfUnmounted(returnFirstEl(this.$el), this.$options.name);\n },\n\n methods: {\n onStartClick () {\n this.$emit('start-clicked');\n this.$emit('alpha-clicked');\n },\n\n onEndClick () {\n this.$emit('end-clicked');\n this.$emit('omega-clicked');\n },\n\n validateProps () {\n this.validateStartButtonProps();\n this.validateEndButtonProps();\n this.validateShowDivider();\n },\n\n validateStartButtonProps () {\n if (hasSlotContent(this.$slots.default)) return;\n\n if ((hasSlotContent(this.$slots.startIcon) || hasSlotContent(this.$slots.alphaIcon)) &&\n !(this.alphaTooltipText ?? this.startTooltipText)) {\n console.warn('start-tooltip-text prop must be set if start button has an icon only');\n }\n },\n\n validateEndButtonProps () {\n if (hasSlotContent(this.$slots.end) || hasSlotContent(this.$slots.omega)) return;\n\n if (!(this.omegaTooltipText ?? this.endTooltipText)) {\n console.warn('end-tooltip-text prop is required as it is an icon-only button');\n }\n },\n\n validateShowDivider () {\n if (!this.showDivider && this.importance !== 'clear') {\n console.warn(\n 'show-divider prop set to false has no effect when importance is not \"clear\". ' +\n 'The divider is always shown for \"outlined\" and \"primary\" importances.',\n );\n }\n },\n },\n};\n</script>\n"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}}),require(`../../chunk-Bmb41Sf3.cjs`);const e=require(`../../_plugin-vue_export-helper-D8jCH6HB.cjs`),
|
|
1
|
+
Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}}),require(`../../chunk-Bmb41Sf3.cjs`);const e=require(`../../common/validators/index.cjs`),t=require(`../../_plugin-vue_export-helper-D8jCH6HB.cjs`),n=require(`./tabs-constants.cjs`),r=require(`../../common/composables/use-indicator-animation.cjs`);let i=require(`vue`);var a={name:`DtTabGroup`,provide(){return{groupContext:this.provideObj,setFocus:this.setFocus}},props:{label:{type:String,default:``},selected:{type:String,default:``},disabled:{type:Boolean,default:!1},inverted:{type:Boolean,default:!1},borderless:{type:Boolean,default:!1},spread:{type:String,default:`none`,validator(e){return n.TAB_SPREADS.includes(e)}},orientation:{type:String,default:`horizontal`,validator(e){return n.TAB_ORIENTATIONS.includes(e)}},size:{type:[String,Number],default:300,validator:e.ordinalSizeValidator(n.TAB_LIST_SIZES)},tabsClass:{type:[String,Array,Object],default:``},tabListClass:{type:[String,Array,Object],default:void 0},tabListChildProps:{type:Object,default:()=>({})},kind:{type:String,default:`default`,validator(e){return n.TAB_GROUP_KINDS.includes(e)}},outlined:{type:Boolean,default:!1},activationMode:{type:String,default:`manual`,validator(e){return n.TAB_ACTIVATION_MODES.includes(e)}},showIndicatorTransition:{type:Boolean,default:!0}},emits:[`change`,`before-change`],setup(){let e=(0,i.ref)(null);return{tabs:e,indicator:r.useIndicatorAnimation(e,`--tab-indicator-duration`,`--tab-indicator-easing`)}},data(){return{provideObj:{selected:``,disabled:!1,size:300,kind:`default`,outlined:!1,orientation:`horizontal`,spread:`none`,focusedTabId:null},tabItems:[],TAB_LIST_SIZE_MODIFIERS:n.TAB_LIST_SIZE_MODIFIERS,TAB_LIST_KIND_MODIFIERS:n.TAB_LIST_KIND_MODIFIERS,TAB_LIST_IMPORTANCE_MODIFIERS:n.TAB_LIST_IMPORTANCE_MODIFIERS,TAB_ORIENTATION_MODIFIERS:n.TAB_ORIENTATION_MODIFIERS,TAB_SPREAD_MODIFIERS:n.TAB_SPREAD_MODIFIERS}},computed:{resolvedTabsClass(){return this.tabListClass??this.tabsClass}},watch:{disabled:{immediate:!0,handler(){this.provideObj.disabled=this.disabled}},selected:{immediate:!0,handler(e,t){this.provideObj.selected=this.selected,e!==t&&(this.provideObj.focusedTabId=null)}},size:{immediate:!0,handler(){this.provideObj.size=this.size}},kind:{immediate:!0,handler(){this.provideObj.kind=this.kind}},outlined:{immediate:!0,handler(){this.provideObj.outlined=this.outlined}},orientation:{immediate:!0,handler(){this.provideObj.orientation=this.orientation}},spread:{immediate:!0,handler(){this.provideObj.spread=this.spread}}},mounted(){this.updateSelected()},updated(){this.updateSelected()},methods:{updateSelected(){this.provideObj.selected||(this.provideObj.selected=this.selected),this.tabItems=this.getTabChildren(),this.provideObj.focusedTabId&&!this.tabItems.some(e=>e.tabId===this.provideObj.focusedTabId)&&(this.provideObj.focusedTabId=null)},setFocus(e){this.provideObj.focusedTabId!==e&&(this.provideObj.focusedTabId=e)},getTabChildren(){return Array.from(this.$refs.tabs.querySelectorAll(`[role="tab"]`)).map(e=>({context:e,panelId:e.getAttribute(`aria-controls`)?.replace(`dt-panel-`,``),tabId:e.getAttribute(`id`)?.replace(`dt-tab-`,``),isSelected:e.getAttribute(`aria-selected`)===`true`,isDisabled:e.getAttribute(`aria-disabled`)===`true`}))},onChange(){this.$emit(`change`,{...this.provideObj})},tabLeft(){this.orientation===`horizontal`&&this.navigatePrevious()},tabRight(){this.orientation===`horizontal`&&this.navigateNext()},tabUp(e){this.orientation===`vertical`&&(e.preventDefault(),this.navigatePrevious())},tabDown(e){this.orientation===`vertical`&&(e.preventDefault(),this.navigateNext())},navigatePrevious(){let e=this.getFocusedTabIndex();if(e===-1)return;let t=this.findNextTab(e,-1);this.selectFocusOnTab(t)},navigateNext(){let e=this.getFocusedTabIndex();if(e===-1)return;let t=this.findNextTab(e,1);this.selectFocusOnTab(t)},findNextTab(e,t){let n=this.tabItems.length;return(e+t+n)%n},transitionIndicator(e,t){if(!t||!this.showIndicatorTransition){this.provideObj.selected=e;return}let n=this.indicator.snapshot(`[aria-selected="true"]`);this.provideObj.selected=e,n&&this.$nextTick(()=>{let e={backgroundColor:`transparent`},r={},i=`::after`;this.outlined?(e={borderColor:`transparent`,backgroundColor:`transparent`},r={boxShadow:`inset 0 0 0 ${n.style.borderWidth} ${n.style.borderColor}`},i=`::before`):this.kind===`muted`&&(r={backgroundColor:n.style.backgroundColor},i=`::before`),this.indicator.animate({oldRect:n.rect,newEl:t,orientation:this.orientation,hideProps:e,indicatorExtra:r,pseudoElement:i})})},selectFocusOnTab(e){let{context:t,panelId:n,isDisabled:r}=this.tabItems[e];t.focus(),this.activationMode===`auto`&&!r&&(this.indicator.cancel(),this.provideObj.selected=n,this.onChange())},selectTab(e){let t=e.target.closest(`[role="tab"]`),n=t?this.tabItems.findIndex(e=>e.context===t):this.getFocusedTabIndex();n!==-1&&(this.tabItems[n]?.isDisabled||this.provideObj.selected!==this.tabItems[n]?.panelId&&(this.$emit(`before-change`,e),!e.defaultPrevented&&(e.preventDefault(),this.selectTabByIndex(n),this.onChange())))},selectTabByIndex(e){let{context:t,panelId:n}=this.tabItems[e];this.transitionIndicator(n,t),t.focus()},getFocusedTabIndex(){let e=this.provideObj.focusedTabId,t=this.tabItems.findIndex(t=>e?t.tabId===e:t.isSelected);return t===-1?0:t},onHomeButton(){this.tabItems.length&&this.selectFocusOnTab(0)},onEndButton(){this.tabItems.length&&this.selectFocusOnTab(this.tabItems.length-1)}}},o=[`aria-label`,`aria-orientation`];function s(e,t,n,r,a,s){return(0,i.openBlock)(),(0,i.createElementBlock)(`div`,{"data-qa":`dt-tab-group`,class:(0,i.normalizeClass)([`d-tab-neux`,{"d-tab-neux--vertical":n.orientation===`vertical`}])},[(0,i.createElementVNode)(`div`,(0,i.mergeProps)({ref:`tabs`,class:[`d-tablist`,a.TAB_LIST_SIZE_MODIFIERS[String(n.size)],a.TAB_ORIENTATION_MODIFIERS[n.orientation],n.orientation!==`vertical`&&a.TAB_SPREAD_MODIFIERS[n.spread],{[a.TAB_LIST_KIND_MODIFIERS.inverted]:n.inverted,[a.TAB_LIST_IMPORTANCE_MODIFIERS.borderless]:n.borderless},s.resolvedTabsClass]},n.tabListChildProps,{role:`tablist`,"aria-label":n.label,"aria-orientation":n.orientation,onKeydown:[t[0]||(t[0]=(0,i.withKeys)((...e)=>s.tabLeft&&s.tabLeft(...e),[`left`])),t[1]||(t[1]=(0,i.withKeys)((...e)=>s.tabRight&&s.tabRight(...e),[`right`])),t[2]||(t[2]=(0,i.withKeys)((...e)=>s.tabUp&&s.tabUp(...e),[`up`])),t[3]||(t[3]=(0,i.withKeys)((...e)=>s.tabDown&&s.tabDown(...e),[`down`])),t[4]||(t[4]=(0,i.withKeys)((...e)=>s.selectTab&&s.selectTab(...e),[`enter`])),t[5]||(t[5]=(0,i.withKeys)((...e)=>s.selectTab&&s.selectTab(...e),[`space`])),t[7]||(t[7]=(0,i.withKeys)((0,i.withModifiers)((...e)=>s.onHomeButton&&s.onHomeButton(...e),[`prevent`]),[`home`])),t[8]||(t[8]=(0,i.withKeys)((0,i.withModifiers)((...e)=>s.onEndButton&&s.onEndButton(...e),[`prevent`]),[`end`]))],onClick:t[6]||(t[6]=(...e)=>s.selectTab&&s.selectTab(...e))}),[(0,i.renderSlot)(e.$slots,`tabs`)],16,o),(0,i.renderSlot)(e.$slots,`default`)],2)}var c=t.t(a,[[`render`,s]]);exports.default=c;
|
|
2
2
|
//# sourceMappingURL=tab-group.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tab-group.cjs","names":[],"sources":["../../../components/Tab/TabGroup.vue"],"sourcesContent":["<template>\n <div\n data-qa=\"dt-tab-group\"\n :class=\"['d-tab-neux', { 'd-tab-neux--vertical': orientation === 'vertical' }]\"\n >\n <!-- eslint-disable-next-line vuejs-accessibility/interactive-supports-focus -->\n <div\n ref=\"tabs\"\n :class=\"[\n 'd-tablist',\n TAB_LIST_SIZE_MODIFIERS[String(size)],\n TAB_ORIENTATION_MODIFIERS[orientation],\n orientation !== 'vertical' && TAB_SPREAD_MODIFIERS[spread],\n {\n [TAB_LIST_KIND_MODIFIERS.inverted]: inverted,\n [TAB_LIST_IMPORTANCE_MODIFIERS.borderless]: borderless,\n },\n resolvedTabsClass,\n ]\"\n v-bind=\"tabListChildProps\"\n role=\"tablist\"\n :aria-label=\"label\"\n :aria-orientation=\"orientation\"\n @keydown.left=\"tabLeft\"\n @keydown.right=\"tabRight\"\n @keydown.up=\"tabUp\"\n @keydown.down=\"tabDown\"\n @keydown.enter=\"selectTab\"\n @keydown.space=\"selectTab\"\n @click=\"selectTab\"\n @keydown.home.prevent=\"onHomeButton\"\n @keydown.end.prevent=\"onEndButton\"\n >\n <!-- @slot Slot for Tabs -->\n <slot name=\"tabs\" />\n </div>\n <!-- @slot Default slot for Panel -->\n <slot />\n </div>\n</template>\n\n<script>\nimport {\n TAB_LIST_SIZES,\n TAB_LIST_KIND_MODIFIERS,\n TAB_LIST_IMPORTANCE_MODIFIERS,\n TAB_LIST_SIZE_MODIFIERS,\n TAB_ORIENTATIONS,\n TAB_ORIENTATION_MODIFIERS,\n TAB_ACTIVATION_MODES,\n TAB_GROUP_KINDS,\n TAB_SPREADS,\n TAB_SPREAD_MODIFIERS,\n} from './TabsConstants';\nimport { ref } from 'vue';\nimport { useIndicatorAnimation } from '@/common/composables/useIndicatorAnimation';\n\n/**\n * Tabs allow users to navigation between grouped content in different views while within the same page context.\n * @see https://dialtone.dialpad.com/components/tabs.html\n */\nexport default {\n name: 'DtTabGroup',\n\n provide () {\n return {\n groupContext: this.provideObj,\n setFocus: this.setFocus,\n };\n },\n\n props: {\n /**\n * Identifies the tab group\n */\n label: {\n type: String,\n default: '',\n },\n\n /**\n * The id of the selected tab panel which should be displayed\n */\n selected: {\n type: String,\n default: '',\n },\n\n /**\n * If true, disables the tab group\n * @values true, false\n */\n disabled: {\n type: Boolean,\n default: false,\n },\n\n /**\n * If true, applies inverted styles to the tab group\n * @deprecated Use v-dt-mode directive instead.\n * @values true, false\n */\n inverted: {\n type: Boolean,\n default: false,\n },\n\n /**\n * If true, applies borderless styles to the tab group\n * @values true, false\n */\n borderless: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Controls how tabs distribute available space within the tab list.\n * @values none, grow, equal\n */\n spread: {\n type: String,\n default: 'none',\n validator (value) {\n return TAB_SPREADS.includes(value);\n },\n },\n\n /**\n * The orientation of the tab list\n * @values horizontal, vertical\n */\n orientation: {\n type: String,\n default: 'horizontal',\n validator (value) {\n return TAB_ORIENTATIONS.includes(value);\n },\n },\n\n /**\n * If provided, applies size styles to the tab group\n * @values 100, 200, 300, 400, 500\n */\n size: {\n type: [String, Number],\n default: 300,\n validator (size) {\n return TAB_LIST_SIZES.includes(String(size));\n },\n },\n\n /**\n * Pass through classes, used to customize the tab list\n */\n tabsClass: {\n type: [String, Array, Object],\n default: '',\n },\n\n /**\n * Pass through classes, used to customize the tab list\n * @deprecated Use tabsClass\n */\n tabListClass: {\n type: [String, Array, Object],\n default: undefined,\n },\n\n /**\n * Pass through props, used to customize the tab list\n */\n tabListChildProps: {\n type: Object,\n default: () => ({}),\n },\n\n /**\n * The visual style kind applied to tabs within this group.\n * Maps to specific DtButton kind/importance combinations for selected/unselected states.\n * @values default, muted\n */\n kind: {\n type: String,\n default: 'default',\n validator (value) {\n return TAB_GROUP_KINDS.includes(value);\n },\n },\n\n /**\n * If true, the selected tab renders with outlined importance instead of clear.\n * @values true, false\n */\n outlined: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Controls whether tabs are selected on focus (auto) or on click/keypress (manual)\n * @values auto, manual\n */\n activationMode: {\n type: String,\n default: 'manual',\n validator (value) {\n return TAB_ACTIVATION_MODES.includes(value);\n },\n },\n\n /**\n * If true, the selection indicator animates between tabs on click.\n * @values true, false\n */\n showIndicatorTransition: {\n type: Boolean,\n default: true,\n },\n },\n\n emits: [\n /**\n * Change tab event with the arguments: selected id of the current tab and disabled value\n *\n * @event change\n * @type {Object}\n */\n 'change',\n\n /**\n * Before change tab event with the event argument, useful to perform validations and prevent changing tabs if neccessary.\n *\n * @event before-change\n * @type {Event}\n */\n 'before-change',\n ],\n\n setup () {\n const tabs = ref(null);\n const indicator = useIndicatorAnimation(\n tabs, '--tab-indicator-duration', '--tab-indicator-easing',\n );\n return { tabs, indicator };\n },\n\n data () {\n return {\n provideObj: {\n selected: '', // the currently displayed tab id\n disabled: false, // disable group\n size: 300,\n kind: 'default',\n outlined: false,\n orientation: 'horizontal',\n spread: 'none',\n focusedTabId: null, // tracks last-focused tab for roving tabindex\n },\n\n tabItems: [],\n TAB_LIST_SIZE_MODIFIERS,\n TAB_LIST_KIND_MODIFIERS,\n TAB_LIST_IMPORTANCE_MODIFIERS,\n TAB_ORIENTATION_MODIFIERS,\n TAB_SPREAD_MODIFIERS,\n };\n },\n\n computed: {\n resolvedTabsClass () {\n return this.tabListClass ?? this.tabsClass;\n },\n },\n\n watch: {\n disabled: {\n immediate: true,\n handler () {\n this.provideObj.disabled = this.disabled;\n },\n },\n\n selected: {\n immediate: true,\n handler (newVal, oldVal) {\n this.provideObj.selected = this.selected;\n if (newVal !== oldVal) {\n this.provideObj.focusedTabId = null;\n }\n },\n },\n\n size: {\n immediate: true,\n handler () {\n this.provideObj.size = this.size;\n },\n },\n\n kind: {\n immediate: true,\n handler () {\n this.provideObj.kind = this.kind;\n },\n },\n\n outlined: {\n immediate: true,\n handler () {\n this.provideObj.outlined = this.outlined;\n },\n },\n\n orientation: {\n immediate: true,\n handler () {\n this.provideObj.orientation = this.orientation;\n },\n },\n\n spread: {\n immediate: true,\n handler () {\n this.provideObj.spread = this.spread;\n },\n },\n },\n\n mounted () {\n this.updateSelected();\n },\n\n updated () {\n this.updateSelected();\n },\n\n methods: {\n updateSelected () {\n /**\n * Prevent override tab selected by default\n */\n if (!this.provideObj.selected) {\n this.provideObj.selected = this.selected;\n }\n this.tabItems = this.getTabChildren();\n\n // Clear stale focusedTabId if the focused tab was removed\n if (this.provideObj.focusedTabId && !this.tabItems.some(t => t.tabId === this.provideObj.focusedTabId)) {\n this.provideObj.focusedTabId = null;\n }\n },\n\n setFocus (focusId) {\n if (this.provideObj.focusedTabId !== focusId) {\n this.provideObj.focusedTabId = focusId;\n }\n },\n\n getTabChildren () {\n const tabs = Array.from(this.$refs.tabs.querySelectorAll('[role=\"tab\"]'));\n return tabs\n .map(el => {\n return ({\n context: el,\n panelId: el.getAttribute('aria-controls')?.replace('dt-panel-', ''),\n tabId: el.getAttribute('id')?.replace('dt-tab-', ''),\n isSelected: el.getAttribute('aria-selected') === 'true',\n isDisabled: el.getAttribute('aria-disabled') === 'true',\n });\n });\n },\n\n onChange () {\n this.$emit('change', { ...this.provideObj });\n },\n\n tabLeft () {\n if (this.orientation !== 'horizontal') return;\n this.navigatePrevious();\n },\n\n tabRight () {\n if (this.orientation !== 'horizontal') return;\n this.navigateNext();\n },\n\n tabUp (event) {\n if (this.orientation !== 'vertical') return;\n event.preventDefault();\n this.navigatePrevious();\n },\n\n tabDown (event) {\n if (this.orientation !== 'vertical') return;\n event.preventDefault();\n this.navigateNext();\n },\n\n navigatePrevious () {\n const index = this.getFocusedTabIndex();\n if (index === -1) return;\n\n const nextIndex = this.findNextTab(index, -1);\n this.selectFocusOnTab(nextIndex);\n },\n\n navigateNext () {\n const index = this.getFocusedTabIndex();\n if (index === -1) return;\n\n const nextIndex = this.findNextTab(index, 1);\n this.selectFocusOnTab(nextIndex);\n },\n\n findNextTab (fromIndex, direction) {\n const len = this.tabItems.length;\n return (fromIndex + direction + len) % len;\n },\n\n transitionIndicator (panelId, newContext) {\n if (!newContext || !this.showIndicatorTransition) {\n this.provideObj.selected = panelId;\n return;\n }\n\n const old = this.indicator.snapshot('[aria-selected=\"true\"]');\n\n this.provideObj.selected = panelId;\n if (!old) return;\n\n this.$nextTick(() => {\n let hideProps = { backgroundColor: 'transparent' };\n let indicatorExtra = {};\n let pseudoElement = '::after';\n\n if (this.outlined) {\n hideProps = { borderColor: 'transparent', backgroundColor: 'transparent' };\n indicatorExtra = { boxShadow: `inset 0 0 0 ${old.style.borderWidth} ${old.style.borderColor}` };\n pseudoElement = '::before';\n } else if (this.kind === 'muted') {\n indicatorExtra = { backgroundColor: old.style.backgroundColor };\n pseudoElement = '::before';\n }\n\n this.indicator.animate({\n oldRect: old.rect,\n newEl: newContext,\n orientation: this.orientation,\n hideProps,\n indicatorExtra,\n pseudoElement,\n });\n });\n },\n\n selectFocusOnTab (index) {\n const { context, panelId, isDisabled } = this.tabItems[index];\n context.focus();\n if (this.activationMode === 'auto' && !isDisabled) {\n this.indicator.cancel();\n this.provideObj.selected = panelId;\n this.onChange();\n }\n },\n\n selectTab (event) {\n const tabEl = event.target.closest('[role=\"tab\"]');\n const index = tabEl\n ? this.tabItems.findIndex(t => t.context === tabEl)\n : this.getFocusedTabIndex();\n\n if (index === -1) return;\n if (this.tabItems[index]?.isDisabled) return;\n if (this.provideObj.selected === this.tabItems[index]?.panelId) return;\n\n this.$emit('before-change', event);\n if (event.defaultPrevented) return;\n\n // Prevent keyboard defaults (Space scroll, Enter form submit)\n // after confirming the tab change will proceed\n event.preventDefault();\n\n this.selectTabByIndex(index);\n this.onChange();\n },\n\n selectTabByIndex (index) {\n const { context, panelId } = this.tabItems[index];\n this.transitionIndicator(panelId, context);\n context.focus();\n },\n\n getFocusedTabIndex () {\n const focusedId = this.provideObj.focusedTabId;\n const index = this.tabItems.findIndex((context) =>\n focusedId ? context.tabId === focusedId : context.isSelected,\n );\n\n return index === -1 ? 0 : index;\n },\n\n onHomeButton () {\n if (this.tabItems.length) this.selectFocusOnTab(0);\n },\n\n onEndButton () {\n if (this.tabItems.length) this.selectFocusOnTab(this.tabItems.length - 1);\n },\n\n },\n};\n</script>\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tab-group.cjs","names":[],"sources":["../../../components/Tab/TabGroup.vue"],"sourcesContent":["<template>\n <div\n data-qa=\"dt-tab-group\"\n :class=\"['d-tab-neux', { 'd-tab-neux--vertical': orientation === 'vertical' }]\"\n >\n <!-- eslint-disable-next-line vuejs-accessibility/interactive-supports-focus -->\n <div\n ref=\"tabs\"\n :class=\"[\n 'd-tablist',\n TAB_LIST_SIZE_MODIFIERS[String(size)],\n TAB_ORIENTATION_MODIFIERS[orientation],\n orientation !== 'vertical' && TAB_SPREAD_MODIFIERS[spread],\n {\n [TAB_LIST_KIND_MODIFIERS.inverted]: inverted,\n [TAB_LIST_IMPORTANCE_MODIFIERS.borderless]: borderless,\n },\n resolvedTabsClass,\n ]\"\n v-bind=\"tabListChildProps\"\n role=\"tablist\"\n :aria-label=\"label\"\n :aria-orientation=\"orientation\"\n @keydown.left=\"tabLeft\"\n @keydown.right=\"tabRight\"\n @keydown.up=\"tabUp\"\n @keydown.down=\"tabDown\"\n @keydown.enter=\"selectTab\"\n @keydown.space=\"selectTab\"\n @click=\"selectTab\"\n @keydown.home.prevent=\"onHomeButton\"\n @keydown.end.prevent=\"onEndButton\"\n >\n <!-- @slot Slot for Tabs -->\n <slot name=\"tabs\" />\n </div>\n <!-- @slot Default slot for Panel -->\n <slot />\n </div>\n</template>\n\n<script>\nimport {\n TAB_LIST_SIZES,\n TAB_LIST_KIND_MODIFIERS,\n TAB_LIST_IMPORTANCE_MODIFIERS,\n TAB_LIST_SIZE_MODIFIERS,\n TAB_ORIENTATIONS,\n TAB_ORIENTATION_MODIFIERS,\n TAB_ACTIVATION_MODES,\n TAB_GROUP_KINDS,\n TAB_SPREADS,\n TAB_SPREAD_MODIFIERS,\n} from './TabsConstants';\nimport { ref } from 'vue';\nimport { useIndicatorAnimation } from '@/common/composables/useIndicatorAnimation';\nimport { ordinalSizeValidator } from '@/common/validators';\n\n/**\n * Tabs allow users to navigation between grouped content in different views while within the same page context.\n * @see https://dialtone.dialpad.com/components/tabs.html\n */\nexport default {\n name: 'DtTabGroup',\n\n provide () {\n return {\n groupContext: this.provideObj,\n setFocus: this.setFocus,\n };\n },\n\n props: {\n /**\n * Identifies the tab group\n */\n label: {\n type: String,\n default: '',\n },\n\n /**\n * The id of the selected tab panel which should be displayed\n */\n selected: {\n type: String,\n default: '',\n },\n\n /**\n * If true, disables the tab group\n * @values true, false\n */\n disabled: {\n type: Boolean,\n default: false,\n },\n\n /**\n * If true, applies inverted styles to the tab group\n * @deprecated Use v-dt-mode directive instead.\n * @values true, false\n */\n inverted: {\n type: Boolean,\n default: false,\n },\n\n /**\n * If true, applies borderless styles to the tab group\n * @values true, false\n */\n borderless: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Controls how tabs distribute available space within the tab list.\n * @values none, grow, equal\n */\n spread: {\n type: String,\n default: 'none',\n validator (value) {\n return TAB_SPREADS.includes(value);\n },\n },\n\n /**\n * The orientation of the tab list\n * @values horizontal, vertical\n */\n orientation: {\n type: String,\n default: 'horizontal',\n validator (value) {\n return TAB_ORIENTATIONS.includes(value);\n },\n },\n\n /**\n * If provided, applies size styles to the tab group\n * @values 100, 200, 300, 400, 500\n */\n size: {\n type: [String, Number],\n default: 300,\n validator: ordinalSizeValidator(TAB_LIST_SIZES),\n },\n\n /**\n * Pass through classes, used to customize the tab list\n */\n tabsClass: {\n type: [String, Array, Object],\n default: '',\n },\n\n /**\n * Pass through classes, used to customize the tab list\n * @deprecated Use tabsClass\n */\n tabListClass: {\n type: [String, Array, Object],\n default: undefined,\n },\n\n /**\n * Pass through props, used to customize the tab list\n */\n tabListChildProps: {\n type: Object,\n default: () => ({}),\n },\n\n /**\n * The visual style kind applied to tabs within this group.\n * Maps to specific DtButton kind/importance combinations for selected/unselected states.\n * @values default, muted\n */\n kind: {\n type: String,\n default: 'default',\n validator (value) {\n return TAB_GROUP_KINDS.includes(value);\n },\n },\n\n /**\n * If true, the selected tab renders with outlined importance instead of clear.\n * @values true, false\n */\n outlined: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Controls whether tabs are selected on focus (auto) or on click/keypress (manual)\n * @values auto, manual\n */\n activationMode: {\n type: String,\n default: 'manual',\n validator (value) {\n return TAB_ACTIVATION_MODES.includes(value);\n },\n },\n\n /**\n * If true, the selection indicator animates between tabs on click.\n * @values true, false\n */\n showIndicatorTransition: {\n type: Boolean,\n default: true,\n },\n },\n\n emits: [\n /**\n * Change tab event with the arguments: selected id of the current tab and disabled value\n *\n * @event change\n * @type {Object}\n */\n 'change',\n\n /**\n * Before change tab event with the event argument, useful to perform validations and prevent changing tabs if neccessary.\n *\n * @event before-change\n * @type {Event}\n */\n 'before-change',\n ],\n\n setup () {\n const tabs = ref(null);\n const indicator = useIndicatorAnimation(\n tabs, '--tab-indicator-duration', '--tab-indicator-easing',\n );\n return { tabs, indicator };\n },\n\n data () {\n return {\n provideObj: {\n selected: '', // the currently displayed tab id\n disabled: false, // disable group\n size: 300,\n kind: 'default',\n outlined: false,\n orientation: 'horizontal',\n spread: 'none',\n focusedTabId: null, // tracks last-focused tab for roving tabindex\n },\n\n tabItems: [],\n TAB_LIST_SIZE_MODIFIERS,\n TAB_LIST_KIND_MODIFIERS,\n TAB_LIST_IMPORTANCE_MODIFIERS,\n TAB_ORIENTATION_MODIFIERS,\n TAB_SPREAD_MODIFIERS,\n };\n },\n\n computed: {\n resolvedTabsClass () {\n return this.tabListClass ?? this.tabsClass;\n },\n },\n\n watch: {\n disabled: {\n immediate: true,\n handler () {\n this.provideObj.disabled = this.disabled;\n },\n },\n\n selected: {\n immediate: true,\n handler (newVal, oldVal) {\n this.provideObj.selected = this.selected;\n if (newVal !== oldVal) {\n this.provideObj.focusedTabId = null;\n }\n },\n },\n\n size: {\n immediate: true,\n handler () {\n this.provideObj.size = this.size;\n },\n },\n\n kind: {\n immediate: true,\n handler () {\n this.provideObj.kind = this.kind;\n },\n },\n\n outlined: {\n immediate: true,\n handler () {\n this.provideObj.outlined = this.outlined;\n },\n },\n\n orientation: {\n immediate: true,\n handler () {\n this.provideObj.orientation = this.orientation;\n },\n },\n\n spread: {\n immediate: true,\n handler () {\n this.provideObj.spread = this.spread;\n },\n },\n },\n\n mounted () {\n this.updateSelected();\n },\n\n updated () {\n this.updateSelected();\n },\n\n methods: {\n updateSelected () {\n /**\n * Prevent override tab selected by default\n */\n if (!this.provideObj.selected) {\n this.provideObj.selected = this.selected;\n }\n this.tabItems = this.getTabChildren();\n\n // Clear stale focusedTabId if the focused tab was removed\n if (this.provideObj.focusedTabId && !this.tabItems.some(t => t.tabId === this.provideObj.focusedTabId)) {\n this.provideObj.focusedTabId = null;\n }\n },\n\n setFocus (focusId) {\n if (this.provideObj.focusedTabId !== focusId) {\n this.provideObj.focusedTabId = focusId;\n }\n },\n\n getTabChildren () {\n const tabs = Array.from(this.$refs.tabs.querySelectorAll('[role=\"tab\"]'));\n return tabs\n .map(el => {\n return ({\n context: el,\n panelId: el.getAttribute('aria-controls')?.replace('dt-panel-', ''),\n tabId: el.getAttribute('id')?.replace('dt-tab-', ''),\n isSelected: el.getAttribute('aria-selected') === 'true',\n isDisabled: el.getAttribute('aria-disabled') === 'true',\n });\n });\n },\n\n onChange () {\n this.$emit('change', { ...this.provideObj });\n },\n\n tabLeft () {\n if (this.orientation !== 'horizontal') return;\n this.navigatePrevious();\n },\n\n tabRight () {\n if (this.orientation !== 'horizontal') return;\n this.navigateNext();\n },\n\n tabUp (event) {\n if (this.orientation !== 'vertical') return;\n event.preventDefault();\n this.navigatePrevious();\n },\n\n tabDown (event) {\n if (this.orientation !== 'vertical') return;\n event.preventDefault();\n this.navigateNext();\n },\n\n navigatePrevious () {\n const index = this.getFocusedTabIndex();\n if (index === -1) return;\n\n const nextIndex = this.findNextTab(index, -1);\n this.selectFocusOnTab(nextIndex);\n },\n\n navigateNext () {\n const index = this.getFocusedTabIndex();\n if (index === -1) return;\n\n const nextIndex = this.findNextTab(index, 1);\n this.selectFocusOnTab(nextIndex);\n },\n\n findNextTab (fromIndex, direction) {\n const len = this.tabItems.length;\n return (fromIndex + direction + len) % len;\n },\n\n transitionIndicator (panelId, newContext) {\n if (!newContext || !this.showIndicatorTransition) {\n this.provideObj.selected = panelId;\n return;\n }\n\n const old = this.indicator.snapshot('[aria-selected=\"true\"]');\n\n this.provideObj.selected = panelId;\n if (!old) return;\n\n this.$nextTick(() => {\n let hideProps = { backgroundColor: 'transparent' };\n let indicatorExtra = {};\n let pseudoElement = '::after';\n\n if (this.outlined) {\n hideProps = { borderColor: 'transparent', backgroundColor: 'transparent' };\n indicatorExtra = { boxShadow: `inset 0 0 0 ${old.style.borderWidth} ${old.style.borderColor}` };\n pseudoElement = '::before';\n } else if (this.kind === 'muted') {\n indicatorExtra = { backgroundColor: old.style.backgroundColor };\n pseudoElement = '::before';\n }\n\n this.indicator.animate({\n oldRect: old.rect,\n newEl: newContext,\n orientation: this.orientation,\n hideProps,\n indicatorExtra,\n pseudoElement,\n });\n });\n },\n\n selectFocusOnTab (index) {\n const { context, panelId, isDisabled } = this.tabItems[index];\n context.focus();\n if (this.activationMode === 'auto' && !isDisabled) {\n this.indicator.cancel();\n this.provideObj.selected = panelId;\n this.onChange();\n }\n },\n\n selectTab (event) {\n const tabEl = event.target.closest('[role=\"tab\"]');\n const index = tabEl\n ? this.tabItems.findIndex(t => t.context === tabEl)\n : this.getFocusedTabIndex();\n\n if (index === -1) return;\n if (this.tabItems[index]?.isDisabled) return;\n if (this.provideObj.selected === this.tabItems[index]?.panelId) return;\n\n this.$emit('before-change', event);\n if (event.defaultPrevented) return;\n\n // Prevent keyboard defaults (Space scroll, Enter form submit)\n // after confirming the tab change will proceed\n event.preventDefault();\n\n this.selectTabByIndex(index);\n this.onChange();\n },\n\n selectTabByIndex (index) {\n const { context, panelId } = this.tabItems[index];\n this.transitionIndicator(panelId, context);\n context.focus();\n },\n\n getFocusedTabIndex () {\n const focusedId = this.provideObj.focusedTabId;\n const index = this.tabItems.findIndex((context) =>\n focusedId ? context.tabId === focusedId : context.isSelected,\n );\n\n return index === -1 ? 0 : index;\n },\n\n onHomeButton () {\n if (this.tabItems.length) this.selectFocusOnTab(0);\n },\n\n onEndButton () {\n if (this.tabItems.length) this.selectFocusOnTab(this.tabItems.length - 1);\n },\n\n },\n};\n</script>\n"],"mappings":"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"}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
1
|
+
import { ordinalSizeValidator as e } from "../../common/validators/index.js";
|
|
2
|
+
import { t } from "../../_plugin-vue_export-helper-BTgDAbhb.js";
|
|
3
|
+
import { TAB_ACTIVATION_MODES as n, TAB_GROUP_KINDS as r, TAB_LIST_IMPORTANCE_MODIFIERS as i, TAB_LIST_KIND_MODIFIERS as a, TAB_LIST_SIZES as o, TAB_LIST_SIZE_MODIFIERS as s, TAB_ORIENTATIONS as c, TAB_ORIENTATION_MODIFIERS as l, TAB_SPREADS as u, TAB_SPREAD_MODIFIERS as d } from "./tabs-constants.js";
|
|
4
|
+
import { useIndicatorAnimation as f } from "../../common/composables/use-indicator-animation.js";
|
|
5
|
+
import { createElementBlock as p, createElementVNode as m, mergeProps as h, normalizeClass as g, openBlock as _, ref as v, renderSlot as y, withKeys as b, withModifiers as x } from "vue";
|
|
5
6
|
//#region components/Tab/TabGroup.vue
|
|
6
|
-
var
|
|
7
|
+
var S = {
|
|
7
8
|
name: "DtTabGroup",
|
|
8
9
|
provide() {
|
|
9
10
|
return {
|
|
@@ -36,22 +37,20 @@ var x = {
|
|
|
36
37
|
type: String,
|
|
37
38
|
default: "none",
|
|
38
39
|
validator(e) {
|
|
39
|
-
return
|
|
40
|
+
return u.includes(e);
|
|
40
41
|
}
|
|
41
42
|
},
|
|
42
43
|
orientation: {
|
|
43
44
|
type: String,
|
|
44
45
|
default: "horizontal",
|
|
45
46
|
validator(e) {
|
|
46
|
-
return
|
|
47
|
+
return c.includes(e);
|
|
47
48
|
}
|
|
48
49
|
},
|
|
49
50
|
size: {
|
|
50
51
|
type: [String, Number],
|
|
51
52
|
default: 300,
|
|
52
|
-
validator(
|
|
53
|
-
return a.includes(String(e));
|
|
54
|
-
}
|
|
53
|
+
validator: e(o)
|
|
55
54
|
},
|
|
56
55
|
tabsClass: {
|
|
57
56
|
type: [
|
|
@@ -77,7 +76,7 @@ var x = {
|
|
|
77
76
|
type: String,
|
|
78
77
|
default: "default",
|
|
79
78
|
validator(e) {
|
|
80
|
-
return
|
|
79
|
+
return r.includes(e);
|
|
81
80
|
}
|
|
82
81
|
},
|
|
83
82
|
outlined: {
|
|
@@ -88,7 +87,7 @@ var x = {
|
|
|
88
87
|
type: String,
|
|
89
88
|
default: "manual",
|
|
90
89
|
validator(e) {
|
|
91
|
-
return
|
|
90
|
+
return n.includes(e);
|
|
92
91
|
}
|
|
93
92
|
},
|
|
94
93
|
showIndicatorTransition: {
|
|
@@ -98,10 +97,10 @@ var x = {
|
|
|
98
97
|
},
|
|
99
98
|
emits: ["change", "before-change"],
|
|
100
99
|
setup() {
|
|
101
|
-
let e =
|
|
100
|
+
let e = v(null);
|
|
102
101
|
return {
|
|
103
102
|
tabs: e,
|
|
104
|
-
indicator:
|
|
103
|
+
indicator: f(e, "--tab-indicator-duration", "--tab-indicator-easing")
|
|
105
104
|
};
|
|
106
105
|
},
|
|
107
106
|
data() {
|
|
@@ -117,11 +116,11 @@ var x = {
|
|
|
117
116
|
focusedTabId: null
|
|
118
117
|
},
|
|
119
118
|
tabItems: [],
|
|
120
|
-
TAB_LIST_SIZE_MODIFIERS:
|
|
121
|
-
TAB_LIST_KIND_MODIFIERS:
|
|
122
|
-
TAB_LIST_IMPORTANCE_MODIFIERS:
|
|
123
|
-
TAB_ORIENTATION_MODIFIERS:
|
|
124
|
-
TAB_SPREAD_MODIFIERS:
|
|
119
|
+
TAB_LIST_SIZE_MODIFIERS: s,
|
|
120
|
+
TAB_LIST_KIND_MODIFIERS: a,
|
|
121
|
+
TAB_LIST_IMPORTANCE_MODIFIERS: i,
|
|
122
|
+
TAB_ORIENTATION_MODIFIERS: l,
|
|
123
|
+
TAB_SPREAD_MODIFIERS: d
|
|
125
124
|
};
|
|
126
125
|
},
|
|
127
126
|
computed: { resolvedTabsClass() {
|
|
@@ -268,12 +267,12 @@ var x = {
|
|
|
268
267
|
this.tabItems.length && this.selectFocusOnTab(this.tabItems.length - 1);
|
|
269
268
|
}
|
|
270
269
|
}
|
|
271
|
-
},
|
|
272
|
-
function
|
|
273
|
-
return
|
|
270
|
+
}, C = ["aria-label", "aria-orientation"];
|
|
271
|
+
function w(e, t, n, r, i, a) {
|
|
272
|
+
return _(), p("div", {
|
|
274
273
|
"data-qa": "dt-tab-group",
|
|
275
|
-
class:
|
|
276
|
-
}, [
|
|
274
|
+
class: g(["d-tab-neux", { "d-tab-neux--vertical": n.orientation === "vertical" }])
|
|
275
|
+
}, [m("div", h({
|
|
277
276
|
ref: "tabs",
|
|
278
277
|
class: [
|
|
279
278
|
"d-tablist",
|
|
@@ -291,20 +290,20 @@ function C(e, t, n, r, i, a) {
|
|
|
291
290
|
"aria-label": n.label,
|
|
292
291
|
"aria-orientation": n.orientation,
|
|
293
292
|
onKeydown: [
|
|
294
|
-
t[0] || (t[0] =
|
|
295
|
-
t[1] || (t[1] =
|
|
296
|
-
t[2] || (t[2] =
|
|
297
|
-
t[3] || (t[3] =
|
|
298
|
-
t[4] || (t[4] =
|
|
299
|
-
t[5] || (t[5] =
|
|
300
|
-
t[7] || (t[7] =
|
|
301
|
-
t[8] || (t[8] =
|
|
293
|
+
t[0] || (t[0] = b((...e) => a.tabLeft && a.tabLeft(...e), ["left"])),
|
|
294
|
+
t[1] || (t[1] = b((...e) => a.tabRight && a.tabRight(...e), ["right"])),
|
|
295
|
+
t[2] || (t[2] = b((...e) => a.tabUp && a.tabUp(...e), ["up"])),
|
|
296
|
+
t[3] || (t[3] = b((...e) => a.tabDown && a.tabDown(...e), ["down"])),
|
|
297
|
+
t[4] || (t[4] = b((...e) => a.selectTab && a.selectTab(...e), ["enter"])),
|
|
298
|
+
t[5] || (t[5] = b((...e) => a.selectTab && a.selectTab(...e), ["space"])),
|
|
299
|
+
t[7] || (t[7] = b(x((...e) => a.onHomeButton && a.onHomeButton(...e), ["prevent"]), ["home"])),
|
|
300
|
+
t[8] || (t[8] = b(x((...e) => a.onEndButton && a.onEndButton(...e), ["prevent"]), ["end"]))
|
|
302
301
|
],
|
|
303
302
|
onClick: t[6] || (t[6] = (...e) => a.selectTab && a.selectTab(...e))
|
|
304
|
-
}), [
|
|
303
|
+
}), [y(e.$slots, "tabs")], 16, C), y(e.$slots, "default")], 2);
|
|
305
304
|
}
|
|
306
|
-
var
|
|
305
|
+
var T = /* @__PURE__ */ t(S, [["render", w]]);
|
|
307
306
|
//#endregion
|
|
308
|
-
export {
|
|
307
|
+
export { T as default };
|
|
309
308
|
|
|
310
309
|
//# sourceMappingURL=tab-group.js.map
|