@dialpad/dialtone 9.98.0 → 9.99.0-beta.1
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/css/dialtone-default-theme.css +92 -85
- package/dist/css/dialtone-default-theme.min.css +1 -1
- package/dist/css/dialtone.css +92 -85
- package/dist/css/dialtone.min.css +1 -1
- package/dist/tokens/doc.json +21788 -21788
- package/dist/vue2/component-documentation.json +1 -1
- package/dist/vue2/components/item_layout/item_layout.vue.cjs +63 -1
- package/dist/vue2/components/item_layout/item_layout.vue.cjs.map +1 -1
- package/dist/vue2/components/item_layout/item_layout.vue.js +63 -1
- package/dist/vue2/components/item_layout/item_layout.vue.js.map +1 -1
- package/dist/vue2/components/list_item/list_item.vue.cjs +12 -13
- package/dist/vue2/components/list_item/list_item.vue.cjs.map +1 -1
- package/dist/vue2/components/list_item/list_item.vue.js +12 -13
- package/dist/vue2/components/list_item/list_item.vue.js.map +1 -1
- package/dist/vue2/recipes/comboboxes/combobox_multi_select/combobox_multi_select.vue.cjs +1 -1
- package/dist/vue2/recipes/comboboxes/combobox_multi_select/combobox_multi_select.vue.cjs.map +1 -1
- package/dist/vue2/recipes/comboboxes/combobox_multi_select/combobox_multi_select.vue.js +1 -1
- package/dist/vue2/recipes/comboboxes/combobox_multi_select/combobox_multi_select.vue.js.map +1 -1
- package/dist/vue2/recipes/comboboxes/combobox_with_popover/combobox_with_popover.vue.cjs +5 -1
- package/dist/vue2/recipes/comboboxes/combobox_with_popover/combobox_with_popover.vue.cjs.map +1 -1
- package/dist/vue2/recipes/comboboxes/combobox_with_popover/combobox_with_popover.vue.js +5 -1
- package/dist/vue2/recipes/comboboxes/combobox_with_popover/combobox_with_popover.vue.js.map +1 -1
- package/dist/vue2/recipes/conversation_view/editor/editor.vue.cjs +15 -0
- package/dist/vue2/recipes/conversation_view/editor/editor.vue.cjs.map +1 -1
- package/dist/vue2/recipes/conversation_view/editor/editor.vue.js +15 -0
- package/dist/vue2/recipes/conversation_view/editor/editor.vue.js.map +1 -1
- package/dist/vue2/recipes/conversation_view/feed_item_pill/feed_item_pill.vue.cjs +10 -10
- package/dist/vue2/recipes/conversation_view/feed_item_pill/feed_item_pill.vue.cjs.map +1 -1
- package/dist/vue2/recipes/conversation_view/feed_item_pill/feed_item_pill.vue.js +10 -10
- package/dist/vue2/recipes/conversation_view/feed_item_pill/feed_item_pill.vue.js.map +1 -1
- package/dist/vue2/recipes/conversation_view/feed_item_row/feed_item_row.vue.cjs +2 -4
- package/dist/vue2/recipes/conversation_view/feed_item_row/feed_item_row.vue.cjs.map +1 -1
- package/dist/vue2/recipes/conversation_view/feed_item_row/feed_item_row.vue.js +2 -4
- package/dist/vue2/recipes/conversation_view/feed_item_row/feed_item_row.vue.js.map +1 -1
- package/dist/vue2/recipes/item_layout/contact_info/contact_info.vue.cjs +4 -4
- package/dist/vue2/recipes/item_layout/contact_info/contact_info.vue.cjs.map +1 -1
- package/dist/vue2/recipes/item_layout/contact_info/contact_info.vue.js +4 -4
- package/dist/vue2/recipes/item_layout/contact_info/contact_info.vue.js.map +1 -1
- package/dist/vue2/types/components/item_layout/item_layout.vue.d.ts +66 -1
- package/dist/vue2/types/components/item_layout/item_layout.vue.d.ts.map +1 -1
- package/dist/vue2/types/components/list_item/list_item.vue.d.ts +1 -22
- package/dist/vue2/types/components/list_item/list_item.vue.d.ts.map +1 -1
- package/dist/vue2/types/recipes/comboboxes/combobox_multi_select/combobox_multi_select.vue.d.ts.map +1 -1
- package/dist/vue2/types/recipes/comboboxes/combobox_with_popover/combobox_with_popover.vue.d.ts.map +1 -1
- package/dist/vue2/types/recipes/conversation_view/editor/editor.vue.d.ts +11 -0
- package/dist/vue2/types/recipes/conversation_view/feed_item_pill/feed_item_pill.vue.d.ts.map +1 -1
- package/dist/vue2/types/recipes/conversation_view/feed_item_row/feed_item_row.vue.d.ts.map +1 -1
- package/dist/vue2/types/recipes/item_layout/contact_info/contact_info.vue.d.ts.map +1 -1
- package/dist/vue3/component-documentation.json +1 -1
- package/dist/vue3/components/avatar/avatar.vue.cjs +1 -0
- package/dist/vue3/components/avatar/avatar.vue.cjs.map +1 -1
- package/dist/vue3/components/avatar/avatar.vue.js +1 -0
- package/dist/vue3/components/avatar/avatar.vue.js.map +1 -1
- package/dist/vue3/components/badge/badge.vue.cjs +1 -0
- package/dist/vue3/components/badge/badge.vue.cjs.map +1 -1
- package/dist/vue3/components/badge/badge.vue.js +1 -0
- package/dist/vue3/components/badge/badge.vue.js.map +1 -1
- package/dist/vue3/components/banner/banner.vue.cjs +1 -0
- package/dist/vue3/components/banner/banner.vue.cjs.map +1 -1
- package/dist/vue3/components/banner/banner.vue.js +1 -0
- package/dist/vue3/components/banner/banner.vue.js.map +1 -1
- package/dist/vue3/components/breadcrumbs/breadcrumbs.vue.cjs +1 -0
- package/dist/vue3/components/breadcrumbs/breadcrumbs.vue.cjs.map +1 -1
- package/dist/vue3/components/breadcrumbs/breadcrumbs.vue.js +1 -0
- package/dist/vue3/components/breadcrumbs/breadcrumbs.vue.js.map +1 -1
- package/dist/vue3/components/button/button.vue.cjs +1 -0
- package/dist/vue3/components/button/button.vue.cjs.map +1 -1
- package/dist/vue3/components/button/button.vue.js +1 -0
- package/dist/vue3/components/button/button.vue.js.map +1 -1
- package/dist/vue3/components/button_group/button_group.vue.cjs +1 -0
- package/dist/vue3/components/button_group/button_group.vue.cjs.map +1 -1
- package/dist/vue3/components/button_group/button_group.vue.js +1 -0
- package/dist/vue3/components/button_group/button_group.vue.js.map +1 -1
- package/dist/vue3/components/card/card.vue.cjs +1 -0
- package/dist/vue3/components/card/card.vue.cjs.map +1 -1
- package/dist/vue3/components/card/card.vue.js +1 -0
- package/dist/vue3/components/card/card.vue.js.map +1 -1
- package/dist/vue3/components/checkbox/checkbox.vue.cjs +1 -0
- package/dist/vue3/components/checkbox/checkbox.vue.cjs.map +1 -1
- package/dist/vue3/components/checkbox/checkbox.vue.js +1 -0
- package/dist/vue3/components/checkbox/checkbox.vue.js.map +1 -1
- package/dist/vue3/components/checkbox_group/checkbox_group.vue.cjs +1 -0
- package/dist/vue3/components/checkbox_group/checkbox_group.vue.cjs.map +1 -1
- package/dist/vue3/components/checkbox_group/checkbox_group.vue.js +1 -0
- package/dist/vue3/components/checkbox_group/checkbox_group.vue.js.map +1 -1
- package/dist/vue3/components/chip/chip.vue.cjs +1 -0
- package/dist/vue3/components/chip/chip.vue.cjs.map +1 -1
- package/dist/vue3/components/chip/chip.vue.js +1 -0
- package/dist/vue3/components/chip/chip.vue.js.map +1 -1
- package/dist/vue3/components/codeblock/codeblock.vue.cjs +1 -0
- package/dist/vue3/components/codeblock/codeblock.vue.cjs.map +1 -1
- package/dist/vue3/components/codeblock/codeblock.vue.js +1 -0
- package/dist/vue3/components/codeblock/codeblock.vue.js.map +1 -1
- package/dist/vue3/components/collapsible/collapsible.vue.cjs +1 -0
- package/dist/vue3/components/collapsible/collapsible.vue.cjs.map +1 -1
- package/dist/vue3/components/collapsible/collapsible.vue.js +1 -0
- package/dist/vue3/components/collapsible/collapsible.vue.js.map +1 -1
- package/dist/vue3/components/combobox/combobox.vue.cjs +1 -0
- package/dist/vue3/components/combobox/combobox.vue.cjs.map +1 -1
- package/dist/vue3/components/combobox/combobox.vue.js +1 -0
- package/dist/vue3/components/combobox/combobox.vue.js.map +1 -1
- package/dist/vue3/components/description_list/description_list.vue.cjs +1 -0
- package/dist/vue3/components/description_list/description_list.vue.cjs.map +1 -1
- package/dist/vue3/components/description_list/description_list.vue.js +1 -0
- package/dist/vue3/components/description_list/description_list.vue.js.map +1 -1
- package/dist/vue3/components/dropdown/dropdown.vue.cjs +1 -0
- package/dist/vue3/components/dropdown/dropdown.vue.cjs.map +1 -1
- package/dist/vue3/components/dropdown/dropdown.vue.js +1 -0
- package/dist/vue3/components/dropdown/dropdown.vue.js.map +1 -1
- package/dist/vue3/components/dropdown/dropdown_separator.vue.cjs +1 -0
- package/dist/vue3/components/dropdown/dropdown_separator.vue.cjs.map +1 -1
- package/dist/vue3/components/dropdown/dropdown_separator.vue.js +1 -0
- package/dist/vue3/components/dropdown/dropdown_separator.vue.js.map +1 -1
- package/dist/vue3/components/emoji/emoji.vue.cjs +1 -0
- package/dist/vue3/components/emoji/emoji.vue.cjs.map +1 -1
- package/dist/vue3/components/emoji/emoji.vue.js +1 -0
- package/dist/vue3/components/emoji/emoji.vue.js.map +1 -1
- package/dist/vue3/components/emoji_text_wrapper/emoji_text_wrapper.vue.cjs +1 -0
- package/dist/vue3/components/emoji_text_wrapper/emoji_text_wrapper.vue.cjs.map +1 -1
- package/dist/vue3/components/emoji_text_wrapper/emoji_text_wrapper.vue.js +1 -0
- package/dist/vue3/components/emoji_text_wrapper/emoji_text_wrapper.vue.js.map +1 -1
- package/dist/vue3/components/icon/icon.vue.cjs +1 -0
- package/dist/vue3/components/icon/icon.vue.cjs.map +1 -1
- package/dist/vue3/components/icon/icon.vue.js +1 -0
- package/dist/vue3/components/icon/icon.vue.js.map +1 -1
- package/dist/vue3/components/image_viewer/image_viewer.vue.cjs +1 -0
- package/dist/vue3/components/image_viewer/image_viewer.vue.cjs.map +1 -1
- package/dist/vue3/components/image_viewer/image_viewer.vue.js +1 -0
- package/dist/vue3/components/image_viewer/image_viewer.vue.js.map +1 -1
- package/dist/vue3/components/input/input.vue.cjs +1 -0
- package/dist/vue3/components/input/input.vue.cjs.map +1 -1
- package/dist/vue3/components/input/input.vue.js +1 -0
- package/dist/vue3/components/input/input.vue.js.map +1 -1
- package/dist/vue3/components/input_group/input_group.vue.cjs +1 -0
- package/dist/vue3/components/input_group/input_group.vue.cjs.map +1 -1
- package/dist/vue3/components/input_group/input_group.vue.js +1 -0
- package/dist/vue3/components/input_group/input_group.vue.js.map +1 -1
- package/dist/vue3/components/item_layout/item_layout.vue.cjs +1 -0
- package/dist/vue3/components/item_layout/item_layout.vue.cjs.map +1 -1
- package/dist/vue3/components/item_layout/item_layout.vue.js +1 -0
- package/dist/vue3/components/item_layout/item_layout.vue.js.map +1 -1
- package/dist/vue3/components/keyboard_shortcut/keyboard_shortcut.vue.cjs +1 -0
- package/dist/vue3/components/keyboard_shortcut/keyboard_shortcut.vue.cjs.map +1 -1
- package/dist/vue3/components/keyboard_shortcut/keyboard_shortcut.vue.js +1 -0
- package/dist/vue3/components/keyboard_shortcut/keyboard_shortcut.vue.js.map +1 -1
- package/dist/vue3/components/lazy_show/lazy_show.vue.cjs +1 -0
- package/dist/vue3/components/lazy_show/lazy_show.vue.cjs.map +1 -1
- package/dist/vue3/components/lazy_show/lazy_show.vue.js +1 -0
- package/dist/vue3/components/lazy_show/lazy_show.vue.js.map +1 -1
- package/dist/vue3/components/link/link.vue.cjs +1 -0
- package/dist/vue3/components/link/link.vue.cjs.map +1 -1
- package/dist/vue3/components/link/link.vue.js +1 -0
- package/dist/vue3/components/link/link.vue.js.map +1 -1
- package/dist/vue3/components/list_item/list_item.vue.cjs +1 -0
- package/dist/vue3/components/list_item/list_item.vue.cjs.map +1 -1
- package/dist/vue3/components/list_item/list_item.vue.js +1 -0
- package/dist/vue3/components/list_item/list_item.vue.js.map +1 -1
- package/dist/vue3/components/list_item_group/list_item_group.vue.cjs +1 -0
- package/dist/vue3/components/list_item_group/list_item_group.vue.cjs.map +1 -1
- package/dist/vue3/components/list_item_group/list_item_group.vue.js +1 -0
- package/dist/vue3/components/list_item_group/list_item_group.vue.js.map +1 -1
- package/dist/vue3/components/modal/modal.vue.cjs +1 -0
- package/dist/vue3/components/modal/modal.vue.cjs.map +1 -1
- package/dist/vue3/components/modal/modal.vue.js +1 -0
- package/dist/vue3/components/modal/modal.vue.js.map +1 -1
- package/dist/vue3/components/notice/notice.vue.cjs +1 -0
- package/dist/vue3/components/notice/notice.vue.cjs.map +1 -1
- package/dist/vue3/components/notice/notice.vue.js +1 -0
- package/dist/vue3/components/notice/notice.vue.js.map +1 -1
- package/dist/vue3/components/notice/notice_action.vue.cjs +1 -0
- package/dist/vue3/components/notice/notice_action.vue.cjs.map +1 -1
- package/dist/vue3/components/notice/notice_action.vue.js +1 -0
- package/dist/vue3/components/notice/notice_action.vue.js.map +1 -1
- package/dist/vue3/components/notice/notice_content.vue.cjs +1 -0
- package/dist/vue3/components/notice/notice_content.vue.cjs.map +1 -1
- package/dist/vue3/components/notice/notice_content.vue.js +1 -0
- package/dist/vue3/components/notice/notice_content.vue.js.map +1 -1
- package/dist/vue3/components/notice/notice_icon.vue.cjs +1 -0
- package/dist/vue3/components/notice/notice_icon.vue.cjs.map +1 -1
- package/dist/vue3/components/notice/notice_icon.vue.js +1 -0
- package/dist/vue3/components/notice/notice_icon.vue.js.map +1 -1
- package/dist/vue3/components/pagination/pagination.vue.cjs +1 -0
- package/dist/vue3/components/pagination/pagination.vue.cjs.map +1 -1
- package/dist/vue3/components/pagination/pagination.vue.js +1 -0
- package/dist/vue3/components/pagination/pagination.vue.js.map +1 -1
- package/dist/vue3/components/popover/popover.vue.cjs +1 -0
- package/dist/vue3/components/popover/popover.vue.cjs.map +1 -1
- package/dist/vue3/components/popover/popover.vue.js +1 -0
- package/dist/vue3/components/popover/popover.vue.js.map +1 -1
- package/dist/vue3/components/popover/popover_header_footer.vue.cjs +1 -0
- package/dist/vue3/components/popover/popover_header_footer.vue.cjs.map +1 -1
- package/dist/vue3/components/popover/popover_header_footer.vue.js +1 -0
- package/dist/vue3/components/popover/popover_header_footer.vue.js.map +1 -1
- package/dist/vue3/components/presence/presence.vue.cjs +1 -0
- package/dist/vue3/components/presence/presence.vue.cjs.map +1 -1
- package/dist/vue3/components/presence/presence.vue.js +1 -0
- package/dist/vue3/components/presence/presence.vue.js.map +1 -1
- package/dist/vue3/components/radio/radio.vue.cjs +1 -0
- package/dist/vue3/components/radio/radio.vue.cjs.map +1 -1
- package/dist/vue3/components/radio/radio.vue.js +1 -0
- package/dist/vue3/components/radio/radio.vue.js.map +1 -1
- package/dist/vue3/components/radio_group/radio_group.vue.cjs +1 -0
- package/dist/vue3/components/radio_group/radio_group.vue.cjs.map +1 -1
- package/dist/vue3/components/radio_group/radio_group.vue.js +1 -0
- package/dist/vue3/components/radio_group/radio_group.vue.js.map +1 -1
- package/dist/vue3/components/rich_text_editor/extensions/channels/ChannelComponent.vue.cjs +1 -0
- package/dist/vue3/components/rich_text_editor/extensions/channels/ChannelComponent.vue.cjs.map +1 -1
- package/dist/vue3/components/rich_text_editor/extensions/channels/ChannelComponent.vue.js +1 -0
- package/dist/vue3/components/rich_text_editor/extensions/channels/ChannelComponent.vue.js.map +1 -1
- package/dist/vue3/components/rich_text_editor/extensions/channels/ChannelSuggestion.vue.cjs +1 -0
- package/dist/vue3/components/rich_text_editor/extensions/channels/ChannelSuggestion.vue.cjs.map +1 -1
- package/dist/vue3/components/rich_text_editor/extensions/channels/ChannelSuggestion.vue.js +1 -0
- package/dist/vue3/components/rich_text_editor/extensions/channels/ChannelSuggestion.vue.js.map +1 -1
- package/dist/vue3/components/rich_text_editor/extensions/emoji/EmojiComponent.vue.cjs +1 -0
- package/dist/vue3/components/rich_text_editor/extensions/emoji/EmojiComponent.vue.cjs.map +1 -1
- package/dist/vue3/components/rich_text_editor/extensions/emoji/EmojiComponent.vue.js +1 -0
- package/dist/vue3/components/rich_text_editor/extensions/emoji/EmojiComponent.vue.js.map +1 -1
- package/dist/vue3/components/rich_text_editor/extensions/emoji/EmojiSuggestion.vue.cjs +1 -0
- package/dist/vue3/components/rich_text_editor/extensions/emoji/EmojiSuggestion.vue.cjs.map +1 -1
- package/dist/vue3/components/rich_text_editor/extensions/emoji/EmojiSuggestion.vue.js +1 -0
- package/dist/vue3/components/rich_text_editor/extensions/emoji/EmojiSuggestion.vue.js.map +1 -1
- package/dist/vue3/components/rich_text_editor/extensions/mentions/MentionComponent.vue.cjs +1 -0
- package/dist/vue3/components/rich_text_editor/extensions/mentions/MentionComponent.vue.cjs.map +1 -1
- package/dist/vue3/components/rich_text_editor/extensions/mentions/MentionComponent.vue.js +1 -0
- package/dist/vue3/components/rich_text_editor/extensions/mentions/MentionComponent.vue.js.map +1 -1
- package/dist/vue3/components/rich_text_editor/extensions/mentions/MentionSuggestion.vue.cjs +1 -0
- package/dist/vue3/components/rich_text_editor/extensions/mentions/MentionSuggestion.vue.cjs.map +1 -1
- package/dist/vue3/components/rich_text_editor/extensions/mentions/MentionSuggestion.vue.js +1 -0
- package/dist/vue3/components/rich_text_editor/extensions/mentions/MentionSuggestion.vue.js.map +1 -1
- package/dist/vue3/components/rich_text_editor/extensions/slash_command/SlashCommandComponent.vue.cjs +1 -0
- package/dist/vue3/components/rich_text_editor/extensions/slash_command/SlashCommandComponent.vue.cjs.map +1 -1
- package/dist/vue3/components/rich_text_editor/extensions/slash_command/SlashCommandComponent.vue.js +1 -0
- package/dist/vue3/components/rich_text_editor/extensions/slash_command/SlashCommandComponent.vue.js.map +1 -1
- package/dist/vue3/components/rich_text_editor/extensions/slash_command/SlashCommandSuggestion.vue.cjs +1 -0
- package/dist/vue3/components/rich_text_editor/extensions/slash_command/SlashCommandSuggestion.vue.cjs.map +1 -1
- package/dist/vue3/components/rich_text_editor/extensions/slash_command/SlashCommandSuggestion.vue.js +1 -0
- package/dist/vue3/components/rich_text_editor/extensions/slash_command/SlashCommandSuggestion.vue.js.map +1 -1
- package/dist/vue3/components/rich_text_editor/extensions/suggestion/SuggestionList.vue.cjs +1 -0
- package/dist/vue3/components/rich_text_editor/extensions/suggestion/SuggestionList.vue.cjs.map +1 -1
- package/dist/vue3/components/rich_text_editor/extensions/suggestion/SuggestionList.vue.js +1 -0
- package/dist/vue3/components/rich_text_editor/extensions/suggestion/SuggestionList.vue.js.map +1 -1
- package/dist/vue3/components/rich_text_editor/rich_text_editor.vue.cjs +1 -0
- package/dist/vue3/components/rich_text_editor/rich_text_editor.vue.cjs.map +1 -1
- package/dist/vue3/components/rich_text_editor/rich_text_editor.vue.js +1 -0
- package/dist/vue3/components/rich_text_editor/rich_text_editor.vue.js.map +1 -1
- package/dist/vue3/components/root_layout/root_layout.vue.cjs +1 -0
- package/dist/vue3/components/root_layout/root_layout.vue.cjs.map +1 -1
- package/dist/vue3/components/root_layout/root_layout.vue.js +1 -0
- package/dist/vue3/components/root_layout/root_layout.vue.js.map +1 -1
- package/dist/vue3/components/select_menu/select_menu.vue.cjs +1 -0
- package/dist/vue3/components/select_menu/select_menu.vue.cjs.map +1 -1
- package/dist/vue3/components/select_menu/select_menu.vue.js +1 -0
- package/dist/vue3/components/select_menu/select_menu.vue.js.map +1 -1
- package/dist/vue3/components/skeleton/skeleton-list-item.vue.cjs +1 -0
- package/dist/vue3/components/skeleton/skeleton-list-item.vue.cjs.map +1 -1
- package/dist/vue3/components/skeleton/skeleton-list-item.vue.js +1 -0
- package/dist/vue3/components/skeleton/skeleton-list-item.vue.js.map +1 -1
- package/dist/vue3/components/skeleton/skeleton-paragraph.vue.cjs +1 -0
- package/dist/vue3/components/skeleton/skeleton-paragraph.vue.cjs.map +1 -1
- package/dist/vue3/components/skeleton/skeleton-paragraph.vue.js +1 -0
- package/dist/vue3/components/skeleton/skeleton-paragraph.vue.js.map +1 -1
- package/dist/vue3/components/skeleton/skeleton-shape.vue.cjs +1 -0
- package/dist/vue3/components/skeleton/skeleton-shape.vue.cjs.map +1 -1
- package/dist/vue3/components/skeleton/skeleton-shape.vue.js +1 -0
- package/dist/vue3/components/skeleton/skeleton-shape.vue.js.map +1 -1
- package/dist/vue3/components/skeleton/skeleton-text.vue.cjs +1 -0
- package/dist/vue3/components/skeleton/skeleton-text.vue.cjs.map +1 -1
- package/dist/vue3/components/skeleton/skeleton-text.vue.js +1 -0
- package/dist/vue3/components/skeleton/skeleton-text.vue.js.map +1 -1
- package/dist/vue3/components/skeleton/skeleton.vue.cjs +1 -0
- package/dist/vue3/components/skeleton/skeleton.vue.cjs.map +1 -1
- package/dist/vue3/components/skeleton/skeleton.vue.js +1 -0
- package/dist/vue3/components/skeleton/skeleton.vue.js.map +1 -1
- package/dist/vue3/components/split_button/split_button-alpha.vue.cjs +1 -0
- package/dist/vue3/components/split_button/split_button-alpha.vue.cjs.map +1 -1
- package/dist/vue3/components/split_button/split_button-alpha.vue.js +1 -0
- package/dist/vue3/components/split_button/split_button-alpha.vue.js.map +1 -1
- package/dist/vue3/components/split_button/split_button-omega.vue.cjs +1 -0
- package/dist/vue3/components/split_button/split_button-omega.vue.cjs.map +1 -1
- package/dist/vue3/components/split_button/split_button-omega.vue.js +1 -0
- package/dist/vue3/components/split_button/split_button-omega.vue.js.map +1 -1
- package/dist/vue3/components/split_button/split_button.vue.cjs +1 -0
- package/dist/vue3/components/split_button/split_button.vue.cjs.map +1 -1
- package/dist/vue3/components/split_button/split_button.vue.js +1 -0
- package/dist/vue3/components/split_button/split_button.vue.js.map +1 -1
- package/dist/vue3/components/stack/stack.vue.cjs +1 -0
- package/dist/vue3/components/stack/stack.vue.cjs.map +1 -1
- package/dist/vue3/components/stack/stack.vue.js +1 -0
- package/dist/vue3/components/stack/stack.vue.js.map +1 -1
- package/dist/vue3/components/tab/tab.vue.cjs +1 -0
- package/dist/vue3/components/tab/tab.vue.cjs.map +1 -1
- package/dist/vue3/components/tab/tab.vue.js +1 -0
- package/dist/vue3/components/tab/tab.vue.js.map +1 -1
- package/dist/vue3/components/tab/tab_group.vue.cjs +1 -0
- package/dist/vue3/components/tab/tab_group.vue.cjs.map +1 -1
- package/dist/vue3/components/tab/tab_group.vue.js +1 -0
- package/dist/vue3/components/tab/tab_group.vue.js.map +1 -1
- package/dist/vue3/components/tab/tab_panel.vue.cjs +1 -0
- package/dist/vue3/components/tab/tab_panel.vue.cjs.map +1 -1
- package/dist/vue3/components/tab/tab_panel.vue.js +1 -0
- package/dist/vue3/components/tab/tab_panel.vue.js.map +1 -1
- package/dist/vue3/components/toast/toast.vue.cjs +1 -0
- package/dist/vue3/components/toast/toast.vue.cjs.map +1 -1
- package/dist/vue3/components/toast/toast.vue.js +1 -0
- package/dist/vue3/components/toast/toast.vue.js.map +1 -1
- package/dist/vue3/components/toggle/toggle.vue.cjs +1 -0
- package/dist/vue3/components/toggle/toggle.vue.cjs.map +1 -1
- package/dist/vue3/components/toggle/toggle.vue.js +1 -0
- package/dist/vue3/components/toggle/toggle.vue.js.map +1 -1
- package/dist/vue3/components/tooltip/tooltip.vue.cjs +1 -0
- package/dist/vue3/components/tooltip/tooltip.vue.cjs.map +1 -1
- package/dist/vue3/components/tooltip/tooltip.vue.js +1 -0
- package/dist/vue3/components/tooltip/tooltip.vue.js.map +1 -1
- package/dist/vue3/components/validation_messages/validation_messages.vue.cjs +1 -0
- package/dist/vue3/components/validation_messages/validation_messages.vue.cjs.map +1 -1
- package/dist/vue3/components/validation_messages/validation_messages.vue.js +1 -0
- package/dist/vue3/components/validation_messages/validation_messages.vue.js.map +1 -1
- package/dist/vue3/recipes/buttons/callbar_button/callbar_button.vue.cjs +1 -0
- package/dist/vue3/recipes/buttons/callbar_button/callbar_button.vue.cjs.map +1 -1
- package/dist/vue3/recipes/buttons/callbar_button/callbar_button.vue.js +1 -0
- package/dist/vue3/recipes/buttons/callbar_button/callbar_button.vue.js.map +1 -1
- package/dist/vue3/recipes/buttons/callbar_button_with_popover/callbar_button_with_popover.vue.cjs +1 -0
- package/dist/vue3/recipes/buttons/callbar_button_with_popover/callbar_button_with_popover.vue.cjs.map +1 -1
- package/dist/vue3/recipes/buttons/callbar_button_with_popover/callbar_button_with_popover.vue.js +1 -0
- package/dist/vue3/recipes/buttons/callbar_button_with_popover/callbar_button_with_popover.vue.js.map +1 -1
- package/dist/vue3/recipes/cards/ivr_node/ivr_node.vue.cjs +1 -0
- package/dist/vue3/recipes/cards/ivr_node/ivr_node.vue.cjs.map +1 -1
- package/dist/vue3/recipes/cards/ivr_node/ivr_node.vue.js +1 -0
- package/dist/vue3/recipes/cards/ivr_node/ivr_node.vue.js.map +1 -1
- package/dist/vue3/recipes/chips/grouped_chip/grouped_chip.vue.cjs +1 -0
- package/dist/vue3/recipes/chips/grouped_chip/grouped_chip.vue.cjs.map +1 -1
- package/dist/vue3/recipes/chips/grouped_chip/grouped_chip.vue.js +1 -0
- package/dist/vue3/recipes/chips/grouped_chip/grouped_chip.vue.js.map +1 -1
- package/dist/vue3/recipes/comboboxes/combobox_multi_select/combobox_multi_select.vue.cjs +1 -0
- package/dist/vue3/recipes/comboboxes/combobox_multi_select/combobox_multi_select.vue.cjs.map +1 -1
- package/dist/vue3/recipes/comboboxes/combobox_multi_select/combobox_multi_select.vue.js +1 -0
- package/dist/vue3/recipes/comboboxes/combobox_multi_select/combobox_multi_select.vue.js.map +1 -1
- package/dist/vue3/recipes/comboboxes/combobox_with_popover/combobox_with_popover.vue.cjs +1 -0
- package/dist/vue3/recipes/comboboxes/combobox_with_popover/combobox_with_popover.vue.cjs.map +1 -1
- package/dist/vue3/recipes/comboboxes/combobox_with_popover/combobox_with_popover.vue.js +1 -0
- package/dist/vue3/recipes/comboboxes/combobox_with_popover/combobox_with_popover.vue.js.map +1 -1
- package/dist/vue3/recipes/conversation_view/attachment_carousel/attachment_carousel.vue.cjs +1 -0
- package/dist/vue3/recipes/conversation_view/attachment_carousel/attachment_carousel.vue.cjs.map +1 -1
- package/dist/vue3/recipes/conversation_view/attachment_carousel/attachment_carousel.vue.js +1 -0
- package/dist/vue3/recipes/conversation_view/attachment_carousel/attachment_carousel.vue.js.map +1 -1
- package/dist/vue3/recipes/conversation_view/attachment_carousel/media_components/image_carousel.vue.cjs +1 -0
- package/dist/vue3/recipes/conversation_view/attachment_carousel/media_components/image_carousel.vue.cjs.map +1 -1
- package/dist/vue3/recipes/conversation_view/attachment_carousel/media_components/image_carousel.vue.js +1 -0
- package/dist/vue3/recipes/conversation_view/attachment_carousel/media_components/image_carousel.vue.js.map +1 -1
- package/dist/vue3/recipes/conversation_view/attachment_carousel/media_components/progress_bar.vue.cjs +1 -0
- package/dist/vue3/recipes/conversation_view/attachment_carousel/media_components/progress_bar.vue.cjs.map +1 -1
- package/dist/vue3/recipes/conversation_view/attachment_carousel/media_components/progress_bar.vue.js +1 -0
- package/dist/vue3/recipes/conversation_view/attachment_carousel/media_components/progress_bar.vue.js.map +1 -1
- package/dist/vue3/recipes/conversation_view/editor/editor.vue.cjs +16 -0
- package/dist/vue3/recipes/conversation_view/editor/editor.vue.cjs.map +1 -1
- package/dist/vue3/recipes/conversation_view/editor/editor.vue.js +16 -0
- package/dist/vue3/recipes/conversation_view/editor/editor.vue.js.map +1 -1
- package/dist/vue3/recipes/conversation_view/emoji_row/emoji_row.vue.cjs +1 -0
- package/dist/vue3/recipes/conversation_view/emoji_row/emoji_row.vue.cjs.map +1 -1
- package/dist/vue3/recipes/conversation_view/emoji_row/emoji_row.vue.js +1 -0
- package/dist/vue3/recipes/conversation_view/emoji_row/emoji_row.vue.js.map +1 -1
- package/dist/vue3/recipes/conversation_view/feed_item_pill/feed_item_pill.vue.cjs +1 -0
- package/dist/vue3/recipes/conversation_view/feed_item_pill/feed_item_pill.vue.cjs.map +1 -1
- package/dist/vue3/recipes/conversation_view/feed_item_pill/feed_item_pill.vue.js +1 -0
- package/dist/vue3/recipes/conversation_view/feed_item_pill/feed_item_pill.vue.js.map +1 -1
- package/dist/vue3/recipes/conversation_view/feed_item_row/feed_item_row.vue.cjs +1 -0
- package/dist/vue3/recipes/conversation_view/feed_item_row/feed_item_row.vue.cjs.map +1 -1
- package/dist/vue3/recipes/conversation_view/feed_item_row/feed_item_row.vue.js +1 -0
- package/dist/vue3/recipes/conversation_view/feed_item_row/feed_item_row.vue.js.map +1 -1
- package/dist/vue3/recipes/conversation_view/message_input/message_input.vue.cjs +1 -0
- package/dist/vue3/recipes/conversation_view/message_input/message_input.vue.cjs.map +1 -1
- package/dist/vue3/recipes/conversation_view/message_input/message_input.vue.js +1 -0
- package/dist/vue3/recipes/conversation_view/message_input/message_input.vue.js.map +1 -1
- package/dist/vue3/recipes/conversation_view/message_input/message_input_button.vue.cjs +1 -0
- package/dist/vue3/recipes/conversation_view/message_input/message_input_button.vue.cjs.map +1 -1
- package/dist/vue3/recipes/conversation_view/message_input/message_input_button.vue.js +1 -0
- package/dist/vue3/recipes/conversation_view/message_input/message_input_button.vue.js.map +1 -1
- package/dist/vue3/recipes/conversation_view/message_input/message_input_link.vue.cjs +1 -0
- package/dist/vue3/recipes/conversation_view/message_input/message_input_link.vue.cjs.map +1 -1
- package/dist/vue3/recipes/conversation_view/message_input/message_input_link.vue.js +1 -0
- package/dist/vue3/recipes/conversation_view/message_input/message_input_link.vue.js.map +1 -1
- package/dist/vue3/recipes/conversation_view/message_input/message_input_topbar.vue.cjs +1 -0
- package/dist/vue3/recipes/conversation_view/message_input/message_input_topbar.vue.cjs.map +1 -1
- package/dist/vue3/recipes/conversation_view/message_input/message_input_topbar.vue.js +1 -0
- package/dist/vue3/recipes/conversation_view/message_input/message_input_topbar.vue.js.map +1 -1
- package/dist/vue3/recipes/conversation_view/time_pill/time_pill.vue.cjs +1 -0
- package/dist/vue3/recipes/conversation_view/time_pill/time_pill.vue.cjs.map +1 -1
- package/dist/vue3/recipes/conversation_view/time_pill/time_pill.vue.js +1 -0
- package/dist/vue3/recipes/conversation_view/time_pill/time_pill.vue.js.map +1 -1
- package/dist/vue3/recipes/header/settings_menu_button/settings_menu_button.vue.cjs +1 -0
- package/dist/vue3/recipes/header/settings_menu_button/settings_menu_button.vue.cjs.map +1 -1
- package/dist/vue3/recipes/header/settings_menu_button/settings_menu_button.vue.js +1 -0
- package/dist/vue3/recipes/header/settings_menu_button/settings_menu_button.vue.js.map +1 -1
- package/dist/vue3/recipes/item_layout/contact_info/contact_info.vue.cjs +1 -0
- package/dist/vue3/recipes/item_layout/contact_info/contact_info.vue.cjs.map +1 -1
- package/dist/vue3/recipes/item_layout/contact_info/contact_info.vue.js +1 -0
- package/dist/vue3/recipes/item_layout/contact_info/contact_info.vue.js.map +1 -1
- package/dist/vue3/recipes/leftbar/callbox/callbox.vue.cjs +1 -0
- package/dist/vue3/recipes/leftbar/callbox/callbox.vue.cjs.map +1 -1
- package/dist/vue3/recipes/leftbar/callbox/callbox.vue.js +1 -0
- package/dist/vue3/recipes/leftbar/callbox/callbox.vue.js.map +1 -1
- package/dist/vue3/recipes/leftbar/contact_centers_row/contact_centers_row.vue.cjs +1 -0
- package/dist/vue3/recipes/leftbar/contact_centers_row/contact_centers_row.vue.cjs.map +1 -1
- package/dist/vue3/recipes/leftbar/contact_centers_row/contact_centers_row.vue.js +1 -0
- package/dist/vue3/recipes/leftbar/contact_centers_row/contact_centers_row.vue.js.map +1 -1
- package/dist/vue3/recipes/leftbar/contact_row/contact_row.vue.cjs +1 -0
- package/dist/vue3/recipes/leftbar/contact_row/contact_row.vue.cjs.map +1 -1
- package/dist/vue3/recipes/leftbar/contact_row/contact_row.vue.js +1 -0
- package/dist/vue3/recipes/leftbar/contact_row/contact_row.vue.js.map +1 -1
- package/dist/vue3/recipes/leftbar/general_row/general_row.vue.cjs +1 -0
- package/dist/vue3/recipes/leftbar/general_row/general_row.vue.cjs.map +1 -1
- package/dist/vue3/recipes/leftbar/general_row/general_row.vue.js +1 -0
- package/dist/vue3/recipes/leftbar/general_row/general_row.vue.js.map +1 -1
- package/dist/vue3/recipes/leftbar/general_row/leftbar_general_row_icon.vue.cjs +1 -0
- package/dist/vue3/recipes/leftbar/general_row/leftbar_general_row_icon.vue.cjs.map +1 -1
- package/dist/vue3/recipes/leftbar/general_row/leftbar_general_row_icon.vue.js +1 -0
- package/dist/vue3/recipes/leftbar/general_row/leftbar_general_row_icon.vue.js.map +1 -1
- package/dist/vue3/recipes/leftbar/group_row/group_row.vue.cjs +1 -0
- package/dist/vue3/recipes/leftbar/group_row/group_row.vue.cjs.map +1 -1
- package/dist/vue3/recipes/leftbar/group_row/group_row.vue.js +1 -0
- package/dist/vue3/recipes/leftbar/group_row/group_row.vue.js.map +1 -1
- package/dist/vue3/recipes/leftbar/unread_pill/unread_pill.vue.cjs +1 -0
- package/dist/vue3/recipes/leftbar/unread_pill/unread_pill.vue.cjs.map +1 -1
- package/dist/vue3/recipes/leftbar/unread_pill/unread_pill.vue.js +1 -0
- package/dist/vue3/recipes/leftbar/unread_pill/unread_pill.vue.js.map +1 -1
- package/dist/vue3/recipes/notices/top_banner_info/top_banner_info.vue.cjs +1 -0
- package/dist/vue3/recipes/notices/top_banner_info/top_banner_info.vue.cjs.map +1 -1
- package/dist/vue3/recipes/notices/top_banner_info/top_banner_info.vue.js +1 -0
- package/dist/vue3/recipes/notices/top_banner_info/top_banner_info.vue.js.map +1 -1
- package/dist/vue3/types/components/avatar/avatar.vue.d.ts.map +1 -1
- package/dist/vue3/types/components/button/button.vue.d.ts.map +1 -1
- package/dist/vue3/types/components/card/card.vue.d.ts.map +1 -1
- package/dist/vue3/types/components/chip/chip.vue.d.ts.map +1 -1
- package/dist/vue3/types/components/combobox/combobox.vue.d.ts.map +1 -1
- package/dist/vue3/types/components/emoji_text_wrapper/emoji_text_wrapper.vue.d.ts.map +1 -1
- package/dist/vue3/types/components/input/input.vue.d.ts.map +1 -1
- package/dist/vue3/types/components/input_group/input_group.vue.d.ts.map +1 -1
- package/dist/vue3/types/components/item_layout/item_layout.vue.d.ts.map +1 -1
- package/dist/vue3/types/components/lazy_show/lazy_show.vue.d.ts.map +1 -1
- package/dist/vue3/types/components/modal/modal.vue.d.ts.map +1 -1
- package/dist/vue3/types/components/notice/notice_content.vue.d.ts.map +1 -1
- package/dist/vue3/types/components/notice/notice_icon.vue.d.ts.map +1 -1
- package/dist/vue3/types/components/popover/popover.vue.d.ts.map +1 -1
- package/dist/vue3/types/components/popover/popover_header_footer.vue.d.ts.map +1 -1
- package/dist/vue3/types/components/radio/radio.vue.d.ts.map +1 -1
- package/dist/vue3/types/components/rich_text_editor/rich_text_editor.vue.d.ts.map +1 -1
- package/dist/vue3/types/components/select_menu/select_menu.vue.d.ts.map +1 -1
- package/dist/vue3/types/components/toggle/toggle.vue.d.ts.map +1 -1
- package/dist/vue3/types/components/tooltip/tooltip.vue.d.ts.map +1 -1
- package/dist/vue3/types/components/validation_messages/validation_messages.vue.d.ts.map +1 -1
- package/dist/vue3/types/recipes/chips/grouped_chip/grouped_chip.vue.d.ts.map +1 -1
- package/dist/vue3/types/recipes/comboboxes/combobox_with_popover/combobox_with_popover.vue.d.ts.map +1 -1
- package/dist/vue3/types/recipes/conversation_view/editor/editor.vue.d.ts +11 -0
- package/dist/vue3/types/recipes/conversation_view/message_input/message_input.vue.d.ts.map +1 -1
- package/dist/vue3/types/recipes/leftbar/general_row/general_row.vue.d.ts.map +1 -1
- package/package.json +6 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"collapsible.vue.js","sources":["../../../components/collapsible/collapsible.vue"],"sourcesContent":["<template>\n <component\n :is=\"elementType\"\n ref=\"collapsible\"\n v-on=\"collapsibleListeners\"\n >\n <!-- Element for capturing keypress events -->\n <div\n :id=\"!ariaLabelledBy && labelledBy\"\n ref=\"anchor\"\n :class=\"anchorClass\"\n >\n <!-- @slot Slot for the anchor element that toggles the collapsible content -->\n <slot\n name=\"anchor\"\n :attrs=\"{\n 'aria-controls': id,\n 'aria-expanded': isOpen.toString(),\n 'role': 'button',\n }\"\n >\n <dt-button\n importance=\"clear\"\n kind=\"muted\"\n :aria-controls=\"id\"\n :aria-expanded=\"`${isOpen}`\"\n :style=\"{\n 'width': maxWidth,\n }\"\n @click=\"defaultToggleOpen\"\n >\n <dt-icon-chevron-down\n v-if=\"isOpen\"\n class=\"d-collapsible__icon\"\n size=\"300\"\n />\n <dt-icon-chevron-right\n v-else\n class=\"d-collapsible__icon\"\n size=\"300\"\n />\n <span\n class=\"d-collapsible__anchor-text\"\n :title=\"anchorText\"\n >\n {{ anchorText }}\n </span>\n </dt-button>\n </slot>\n </div>\n <dt-collapsible-lazy-show\n :id=\"id\"\n ref=\"contentWrapper\"\n :aria-hidden=\"`${!isOpen}`\"\n :aria-labelledby=\"labelledBy\"\n :aria-label=\"ariaLabel\"\n :show=\"isOpen\"\n :element-type=\"contentElementType\"\n :class=\"contentClass\"\n :style=\"{\n 'max-height': maxHeight,\n 'max-width': maxWidth,\n }\"\n data-qa=\"dt-collapsible--content\"\n tabindex=\"-1\"\n appear\n v-on=\"collapsibleListeners\"\n @after-leave=\"onLeaveTransitionComplete\"\n @after-enter=\"onEnterTransitionComplete\"\n >\n <!-- @slot Slot for the collapsible element that is expanded by the anchor -->\n <slot\n name=\"content\"\n />\n </dt-collapsible-lazy-show>\n </component>\n</template>\n\n<script>\nimport { extractVueListeners, getUniqueString, hasSlotContent } from '@/common/utils';\nimport DtCollapsibleLazyShow from './collapsible_lazy_show.vue';\nimport { DtButton } from '@/components/button';\nimport { DtLazyShow } from '@/components/lazy_show';\nimport { DtIconChevronDown, DtIconChevronRight } from '@dialpad/dialtone-icons/vue3';\n\n/**\n * A collapsible is a component consisting of an interactive anchor that toggled the expandable/collapsible element.\n * @see https://dialtone.dialpad.com/components/collapsible.html\n */\nexport default {\n name: 'DtCollapsible',\n\n components: {\n DtButton,\n DtCollapsibleLazyShow,\n DtLazyShow,\n DtIconChevronDown,\n DtIconChevronRight,\n },\n\n props: {\n /**\n * Text that is displayed on the anchor if nothing is passed in the slot.\n * Ignored if the anchor slot is used.\n */\n anchorText: {\n type: String,\n default: null,\n },\n\n /**\n * Controls whether the collapsible is shown. Leaving this null will have the collapsible start\n * expanded and trigger on click by default. If you set this value, the default trigger\n * behavior will be disabled, and you can control it as you need.\n * Supports .sync modifier\n * @values null, true, false\n */\n open: {\n type: Boolean,\n default: null,\n },\n\n /**\n * The id of the content wrapper.\n */\n id: {\n type: String,\n default () { return getUniqueString(); },\n },\n\n /**\n * HTML element type (tag name) of the root element of the component.\n */\n elementType: {\n type: String,\n default: 'div',\n },\n\n /**\n * HTML element type (tag name) of the content wrapper element.\n */\n contentElementType: {\n type: String,\n default: 'div',\n },\n\n /**\n * Additional class name for the anchor wrapper element.\n */\n anchorClass: {\n type: [String, Array, Object],\n default: null,\n },\n\n /**\n * Additional class name for the content wrapper element.\n */\n contentClass: {\n type: [String, Array, Object],\n default: null,\n },\n\n /**\n * The maximum width of the anchor and collapsible element.\n * Possible units rem|px|%|em\n */\n maxWidth: {\n type: String,\n default: null,\n },\n\n /**\n * The maximum height of the collapsible element.\n * Possible units rem|px|%|em\n */\n maxHeight: {\n type: String,\n default: null,\n },\n\n /**\n * Label on the collapsible content. Should provide this or ariaLabelledBy but not both.\n */\n ariaLabel: {\n type: String,\n default: null,\n },\n\n /**\n * Id of the element that labels the collapsible content. Defaults to the anchor element.\n * Should provide this or ariaLabel but not both.\n */\n ariaLabelledBy: {\n type: String,\n default: null,\n },\n },\n\n emits: [\n /**\n * Event fired to sync the open prop with the parent component\n * @event update:open\n */\n 'update:open',\n\n /**\n * Event fired when the content is shown or hidden\n *\n * @event opened\n * @type {Boolean}\n */\n 'opened',\n ],\n\n data () {\n return {\n isOpen: true,\n };\n },\n\n computed: {\n labelledBy () {\n // aria-labelledby should be set only if aria-labelledby is passed as a prop, or if\n // there is no aria-label and the labelledby should point to the anchor\n return this.ariaLabelledBy || (!this.ariaLabel && getUniqueString('DtCollapsible__anchor'));\n },\n\n collapsibleListeners () {\n return extractVueListeners(this.$attrs);\n },\n },\n\n watch: {\n open: {\n handler: function (open) {\n if (open !== null) {\n this.isOpen = open;\n }\n },\n\n immediate: true,\n },\n },\n\n created () {\n this.validateProperAnchor();\n },\n\n methods: {\n onLeaveTransitionComplete () {\n this.$emit('opened', false);\n if (this.open !== null) {\n this.$emit('update:open', false);\n }\n },\n\n onEnterTransitionComplete () {\n this.$emit('opened', true, this.$refs.content);\n if (this.open !== null) {\n this.$emit('update:open', true);\n }\n },\n\n defaultToggleOpen () {\n if (this.open === null) {\n this.toggleOpen();\n }\n },\n\n toggleOpen () {\n this.isOpen = !this.isOpen;\n },\n\n validateProperAnchor () {\n if (!this.anchorText && !hasSlotContent(this.$slots.anchor)) {\n console.error('anchor text and anchor slot content cannot both be falsy');\n }\n },\n },\n};\n</script>\n"],"names":["_openBlock","_createBlock","_resolveDynamicComponent","_mergeProps","_toHandlers","_withCtx","_createElementVNode","_normalizeClass","_renderSlot","_createVNode","_normalizeStyle","_toDisplayString"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"collapsible.vue.js","sources":["../../../components/collapsible/collapsible.vue"],"sourcesContent":["<template>\n <component\n :is=\"elementType\"\n ref=\"collapsible\"\n v-on=\"collapsibleListeners\"\n >\n <!-- Element for capturing keypress events -->\n <div\n :id=\"!ariaLabelledBy && labelledBy\"\n ref=\"anchor\"\n :class=\"anchorClass\"\n >\n <!-- @slot Slot for the anchor element that toggles the collapsible content -->\n <slot\n name=\"anchor\"\n :attrs=\"{\n 'aria-controls': id,\n 'aria-expanded': isOpen.toString(),\n 'role': 'button',\n }\"\n >\n <dt-button\n importance=\"clear\"\n kind=\"muted\"\n :aria-controls=\"id\"\n :aria-expanded=\"`${isOpen}`\"\n :style=\"{\n 'width': maxWidth,\n }\"\n @click=\"defaultToggleOpen\"\n >\n <dt-icon-chevron-down\n v-if=\"isOpen\"\n class=\"d-collapsible__icon\"\n size=\"300\"\n />\n <dt-icon-chevron-right\n v-else\n class=\"d-collapsible__icon\"\n size=\"300\"\n />\n <span\n class=\"d-collapsible__anchor-text\"\n :title=\"anchorText\"\n >\n {{ anchorText }}\n </span>\n </dt-button>\n </slot>\n </div>\n <dt-collapsible-lazy-show\n :id=\"id\"\n ref=\"contentWrapper\"\n :aria-hidden=\"`${!isOpen}`\"\n :aria-labelledby=\"labelledBy\"\n :aria-label=\"ariaLabel\"\n :show=\"isOpen\"\n :element-type=\"contentElementType\"\n :class=\"contentClass\"\n :style=\"{\n 'max-height': maxHeight,\n 'max-width': maxWidth,\n }\"\n data-qa=\"dt-collapsible--content\"\n tabindex=\"-1\"\n appear\n v-on=\"collapsibleListeners\"\n @after-leave=\"onLeaveTransitionComplete\"\n @after-enter=\"onEnterTransitionComplete\"\n >\n <!-- @slot Slot for the collapsible element that is expanded by the anchor -->\n <slot\n name=\"content\"\n />\n </dt-collapsible-lazy-show>\n </component>\n</template>\n\n<script>\nimport { extractVueListeners, getUniqueString, hasSlotContent } from '@/common/utils';\nimport DtCollapsibleLazyShow from './collapsible_lazy_show.vue';\nimport { DtButton } from '@/components/button';\nimport { DtLazyShow } from '@/components/lazy_show';\nimport { DtIconChevronDown, DtIconChevronRight } from '@dialpad/dialtone-icons/vue3';\n\n/**\n * A collapsible is a component consisting of an interactive anchor that toggled the expandable/collapsible element.\n * @see https://dialtone.dialpad.com/components/collapsible.html\n */\nexport default {\n compatConfig: { MODE: 3 },\n name: 'DtCollapsible',\n\n components: {\n DtButton,\n DtCollapsibleLazyShow,\n DtLazyShow,\n DtIconChevronDown,\n DtIconChevronRight,\n },\n\n props: {\n /**\n * Text that is displayed on the anchor if nothing is passed in the slot.\n * Ignored if the anchor slot is used.\n */\n anchorText: {\n type: String,\n default: null,\n },\n\n /**\n * Controls whether the collapsible is shown. Leaving this null will have the collapsible start\n * expanded and trigger on click by default. If you set this value, the default trigger\n * behavior will be disabled, and you can control it as you need.\n * Supports .sync modifier\n * @values null, true, false\n */\n open: {\n type: Boolean,\n default: null,\n },\n\n /**\n * The id of the content wrapper.\n */\n id: {\n type: String,\n default () { return getUniqueString(); },\n },\n\n /**\n * HTML element type (tag name) of the root element of the component.\n */\n elementType: {\n type: String,\n default: 'div',\n },\n\n /**\n * HTML element type (tag name) of the content wrapper element.\n */\n contentElementType: {\n type: String,\n default: 'div',\n },\n\n /**\n * Additional class name for the anchor wrapper element.\n */\n anchorClass: {\n type: [String, Array, Object],\n default: null,\n },\n\n /**\n * Additional class name for the content wrapper element.\n */\n contentClass: {\n type: [String, Array, Object],\n default: null,\n },\n\n /**\n * The maximum width of the anchor and collapsible element.\n * Possible units rem|px|%|em\n */\n maxWidth: {\n type: String,\n default: null,\n },\n\n /**\n * The maximum height of the collapsible element.\n * Possible units rem|px|%|em\n */\n maxHeight: {\n type: String,\n default: null,\n },\n\n /**\n * Label on the collapsible content. Should provide this or ariaLabelledBy but not both.\n */\n ariaLabel: {\n type: String,\n default: null,\n },\n\n /**\n * Id of the element that labels the collapsible content. Defaults to the anchor element.\n * Should provide this or ariaLabel but not both.\n */\n ariaLabelledBy: {\n type: String,\n default: null,\n },\n },\n\n emits: [\n /**\n * Event fired to sync the open prop with the parent component\n * @event update:open\n */\n 'update:open',\n\n /**\n * Event fired when the content is shown or hidden\n *\n * @event opened\n * @type {Boolean}\n */\n 'opened',\n ],\n\n data () {\n return {\n isOpen: true,\n };\n },\n\n computed: {\n labelledBy () {\n // aria-labelledby should be set only if aria-labelledby is passed as a prop, or if\n // there is no aria-label and the labelledby should point to the anchor\n return this.ariaLabelledBy || (!this.ariaLabel && getUniqueString('DtCollapsible__anchor'));\n },\n\n collapsibleListeners () {\n return extractVueListeners(this.$attrs);\n },\n },\n\n watch: {\n open: {\n handler: function (open) {\n if (open !== null) {\n this.isOpen = open;\n }\n },\n\n immediate: true,\n },\n },\n\n created () {\n this.validateProperAnchor();\n },\n\n methods: {\n onLeaveTransitionComplete () {\n this.$emit('opened', false);\n if (this.open !== null) {\n this.$emit('update:open', false);\n }\n },\n\n onEnterTransitionComplete () {\n this.$emit('opened', true, this.$refs.content);\n if (this.open !== null) {\n this.$emit('update:open', true);\n }\n },\n\n defaultToggleOpen () {\n if (this.open === null) {\n this.toggleOpen();\n }\n },\n\n toggleOpen () {\n this.isOpen = !this.isOpen;\n },\n\n validateProperAnchor () {\n if (!this.anchorText && !hasSlotContent(this.$slots.anchor)) {\n console.error('anchor text and anchor slot content cannot both be falsy');\n }\n },\n },\n};\n</script>\n"],"names":["_openBlock","_createBlock","_resolveDynamicComponent","_mergeProps","_toHandlers","_withCtx","_createElementVNode","_normalizeClass","_renderSlot","_createVNode","_normalizeStyle","_toDisplayString"],"mappings":"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"}
|
|
@@ -8,6 +8,7 @@ const combobox_constants = require("./combobox_constants.cjs");
|
|
|
8
8
|
const vue = require("vue");
|
|
9
9
|
const _pluginVue_exportHelper = require("../../_virtual/_plugin-vue_export-helper.cjs");
|
|
10
10
|
const _sfc_main = {
|
|
11
|
+
compatConfig: { MODE: 3 },
|
|
11
12
|
name: "DtCombobox",
|
|
12
13
|
components: {
|
|
13
14
|
ComboboxLoadingList: combobox_loadingList.default,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"combobox.vue.cjs","sources":["../../../components/combobox/combobox.vue"],"sourcesContent":["<!-- eslint-disable vuejs-accessibility/no-static-element-interactions -->\n<template>\n <div\n @keydown.esc.stop=\"onKeyValidation($event, 'onEscapeKey')\"\n @keydown.enter.exact=\"onKeyValidation($event, 'onEnterKey')\"\n @keydown.up.stop.prevent=\"onKeyValidation($event, 'onUpKey')\"\n @keydown.down.stop.prevent=\"onKeyValidation($event, 'onDownKey')\"\n @keydown.home.stop.prevent=\"onKeyValidation($event, 'onHomeKey')\"\n @keydown.end.stop.prevent=\"onKeyValidation($event, 'onEndKey')\"\n >\n <div data-qa=\"dt-combobox-input-wrapper\">\n <!-- @slot Slot for the combobox input element -->\n <slot\n name=\"input\"\n :input-props=\"inputProps\"\n />\n </div>\n\n <div\n v-if=\"showList\"\n ref=\"listWrapper\"\n data-qa=\"dt-combobox-list-wrapper\"\n @mouseleave=\"clearHighlightIndex\"\n @focusout=\"clearHighlightIndex\"\n @mousemove.capture=\"onMouseHighlight\"\n >\n <combobox-loading-list\n v-if=\"loading && !listRenderedOutside\"\n v-bind=\"listProps\"\n />\n <combobox-empty-list\n v-else-if=\"emptyList && (emptyStateMessage || hasSlotContent($slots.emptyListItem)) && !listRenderedOutside\"\n v-bind=\"listProps\"\n :message=\"emptyStateMessage\"\n :item-class=\"emptyStateClass\"\n >\n <slot name=\"emptyListItem\" />\n </combobox-empty-list>\n <!-- @slot Slot for the combobox list element -->\n <slot\n v-else\n name=\"list\"\n :list-props=\"listProps\"\n :opened=\"onOpen\"\n :clear-highlight-index=\"clearHighlightIndex\"\n />\n </div>\n </div>\n</template>\n\n<script>\nimport KeyboardNavigation from '@/common/mixins/keyboard_list_navigation';\nimport { getUniqueString, hasSlotContent } from '@/common/utils';\nimport ComboboxLoadingList from './combobox_loading-list.vue';\nimport ComboboxEmptyList from './combobox_empty-list.vue';\nimport { LABEL_SIZES } from '@/components/combobox/combobox_constants';\n\n/**\n * A combobox is a semantic component that displays an input element combined with a listbox,\n * which enables the user to select items from the list.\n * @see https://dialtone.dialpad.com/components/combobox.html\n */\nexport default {\n name: 'DtCombobox',\n\n components: {\n ComboboxLoadingList,\n ComboboxEmptyList,\n },\n\n mixins: [\n KeyboardNavigation({\n indexKey: 'highlightIndex',\n idKey: 'highlightId',\n listElementKey: 'getListElement',\n afterHighlightMethod: 'afterHighlight',\n beginningOfListMethod: 'beginningOfListMethod',\n endOfListMethod: 'endOfListMethod',\n activeItemKey: 'activeItemEl',\n }),\n ],\n\n props: {\n /**\n * String to use for the input label.\n */\n label: {\n type: String,\n required: true,\n },\n\n /**\n * Determines visibility of input label.\n * @values true, false\n */\n labelVisible: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Size of the input, one of `xs`, `sm`, `md`, `lg`, `xl`\n * @values null, xs, sm, md, lg, xl\n */\n size: {\n type: String,\n default: null,\n validator: (t) => Object.values(LABEL_SIZES).includes(t),\n },\n\n /**\n * Description for the input\n */\n description: {\n type: String,\n default: '',\n },\n\n /**\n * Sets an ID on the list element of the component. Used by several aria attributes\n * as well as when deriving the IDs for each item.\n */\n listId: {\n type: String,\n default () { return getUniqueString(); },\n },\n\n /**\n * A method that will be called when the selection goes past the beginning of the list.\n */\n onBeginningOfList: {\n type: Function,\n default: null,\n },\n\n /**\n * A method that will be called when the selection goes past the end of the list.\n */\n onEndOfList: {\n type: Function,\n default: null,\n },\n\n /**\n * Determines when to show the list element and also controls the aria-expanded attribute.\n * @values true, false\n */\n showList: {\n type: Boolean,\n default: false,\n },\n\n /**\n * If the list is rendered outside the component, like when using popover as the list wrapper.\n * @values true, false\n */\n listRenderedOutside: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Determines when to show the skeletons and also controls aria-busy attribute.\n * @values true, false\n */\n loading: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Sets the list to an empty state, and displays the message from prop `emptyStateMessage`.\n * @values true, false\n */\n emptyList: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Message to show when the list is empty\n */\n emptyStateMessage: {\n type: String,\n default: '',\n },\n\n /**\n * Additional class name for the empty list element.\n * Can accept all of String, Object, and Array, i.e. has the\n * same api as Vue's built-in handling of the class attribute.\n */\n emptyStateClass: {\n type: [String, Object, Array],\n default: '',\n },\n\n /**\n * Programmatically click on the active list item element when a selection\n * comes from keyboard navigation, i.e. pressing the \"Enter\" key.\n * @values true, false\n */\n clickOnSelect: {\n type: Boolean,\n default: false,\n },\n },\n\n emits: [\n /**\n * Event fired when item selected\n *\n * @event select\n * @type {Number}\n */\n 'select',\n\n /**\n * Event fired when pressing escape\n *\n * @event escape\n */\n 'escape',\n\n /**\n * Event fired when the highlight changes\n *\n * @event highlight\n * @type {Number}\n */\n 'highlight',\n\n /**\n * Event fired when list is shown or hidden\n *\n * @event opened\n * @type {Boolean}\n */\n 'opened',\n ],\n\n data () {\n return {\n // If the list is rendered at the root, rather than as a child\n // of this component, this is the ref to that dom element. Set\n // by the onOpen method.\n outsideRenderedListRef: null,\n hasSlotContent,\n };\n },\n\n computed: {\n inputProps () {\n return {\n label: this.label,\n labelVisible: this.labelVisible,\n size: this.size,\n description: this.description,\n role: 'combobox',\n 'aria-label': this.label,\n 'aria-expanded': this.showList.toString(),\n 'aria-owns': this.listId,\n 'aria-haspopup': 'listbox',\n 'aria-activedescendant': this.activeItemId,\n 'aria-controls': this.listId,\n };\n },\n\n listProps () {\n return {\n role: 'listbox',\n id: this.listId,\n // The list has to be positioned relatively so that the auto-scroll can\n // calculate the correct offset for the list items.\n class: 'd-ps-relative',\n 'aria-label': this.label,\n };\n },\n\n beginningOfListMethod () {\n return this.onBeginningOfList || this.jumpToEnd;\n },\n\n endOfListMethod () {\n return this.onEndOfList || this.jumpToBeginning;\n },\n\n activeItemId () {\n if (!this.showList || this.highlightIndex < 0 || this.loading) {\n return;\n }\n return this.highlightId;\n },\n\n activeItemEl () {\n if (!this.highlightId) return '';\n return this.getListElement().querySelector('#' + this.highlightId);\n },\n },\n\n watch: {\n showList (showList) {\n // When the list's visibility changes reset the highlight index.\n\n if (!this.listRenderedOutside) {\n this.setInitialHighlightIndex();\n this.$emit('opened', showList);\n }\n\n if (!showList && this.outsideRenderedListRef) {\n this.outsideRenderedListRef.removeEventListener('mousemove', this.onMouseHighlight);\n this.outsideRenderedListRef = null;\n }\n },\n\n loading (loading) {\n this.$nextTick(() => {\n this.setInitialHighlightIndex();\n });\n },\n\n $props: {\n deep: true,\n immediate: true,\n handler () {\n this.validateEmptyListProps();\n },\n },\n },\n\n created () {\n this.validateEmptyListProps();\n },\n\n methods: {\n onMouseHighlight (e) {\n if (this.loading) return;\n\n const liElement = e.target.closest('li');\n\n if (liElement && this.highlightId !== liElement.id) {\n this.setHighlightId(liElement.id);\n }\n },\n\n getListElement () {\n return this.outsideRenderedListRef ?? this.$refs.listWrapper?.querySelector(`#${this.listId}`);\n },\n\n clearHighlightIndex () {\n if (this.showList) {\n this.setHighlightIndex(-1);\n }\n },\n\n afterHighlight () {\n if (this.loading) return;\n this.$emit('highlight', this.highlightIndex);\n },\n\n onEnterKey () {\n if (this.loading || this.emptyList) return;\n\n if (this.highlightIndex >= 0) {\n this.$emit('select', this.highlightIndex);\n\n if (this.clickOnSelect) {\n this.activeItemEl?.click();\n }\n }\n },\n\n onEscapeKey () {\n this.$emit('escape');\n },\n\n onOpen (open, contentRef) {\n this.outsideRenderedListRef = contentRef;\n this.outsideRenderedListRef?.addEventListener('mousemove', this.onMouseHighlight);\n this.$emit('opened', open);\n\n if (open) {\n this.setInitialHighlightIndex();\n }\n },\n\n onKeyValidation (e, eventHandler) {\n if (!this.showList || !this.getListElement()) return;\n\n this[eventHandler](e);\n },\n\n setInitialHighlightIndex () {\n if (!this.showList) return;\n this.$nextTick(() => {\n // When the list's is shown, reset the highlight index.\n // If the list is loading, set to -1\n this.setHighlightIndex(this.loading ? -1 : 0);\n });\n },\n\n validateEmptyListProps () {\n if (this.$slots.emptyListItem) { return; }\n\n if (this.emptyList && !this.emptyStateMessage) {\n console.error(`Invalid props: you must pass both props emptyList and emptyStateMessage to show the\n empty message.`);\n }\n },\n },\n};\n</script>\n"],"names":["ComboboxLoadingList","ComboboxEmptyList","KeyboardNavigation","LABEL_SIZES","getUniqueString","hasSlotContent","_createElementBlock","_withKeys","_withModifiers","_createElementVNode","_renderSlot","_openBlock","_createBlock","_normalizeProps","_mergeProps","_withCtx","_createCommentVNode"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"combobox.vue.cjs","sources":["../../../components/combobox/combobox.vue"],"sourcesContent":["<!-- eslint-disable vuejs-accessibility/no-static-element-interactions -->\n<template>\n <div\n @keydown.esc.stop=\"onKeyValidation($event, 'onEscapeKey')\"\n @keydown.enter.exact=\"onKeyValidation($event, 'onEnterKey')\"\n @keydown.up.stop.prevent=\"onKeyValidation($event, 'onUpKey')\"\n @keydown.down.stop.prevent=\"onKeyValidation($event, 'onDownKey')\"\n @keydown.home.stop.prevent=\"onKeyValidation($event, 'onHomeKey')\"\n @keydown.end.stop.prevent=\"onKeyValidation($event, 'onEndKey')\"\n >\n <div data-qa=\"dt-combobox-input-wrapper\">\n <!-- @slot Slot for the combobox input element -->\n <slot\n name=\"input\"\n :input-props=\"inputProps\"\n />\n </div>\n\n <div\n v-if=\"showList\"\n ref=\"listWrapper\"\n data-qa=\"dt-combobox-list-wrapper\"\n @mouseleave=\"clearHighlightIndex\"\n @focusout=\"clearHighlightIndex\"\n @mousemove.capture=\"onMouseHighlight\"\n >\n <combobox-loading-list\n v-if=\"loading && !listRenderedOutside\"\n v-bind=\"listProps\"\n />\n <combobox-empty-list\n v-else-if=\"emptyList && (emptyStateMessage || hasSlotContent($slots.emptyListItem)) && !listRenderedOutside\"\n v-bind=\"listProps\"\n :message=\"emptyStateMessage\"\n :item-class=\"emptyStateClass\"\n >\n <slot name=\"emptyListItem\" />\n </combobox-empty-list>\n <!-- @slot Slot for the combobox list element -->\n <slot\n v-else\n name=\"list\"\n :list-props=\"listProps\"\n :opened=\"onOpen\"\n :clear-highlight-index=\"clearHighlightIndex\"\n />\n </div>\n </div>\n</template>\n\n<script>\nimport KeyboardNavigation from '@/common/mixins/keyboard_list_navigation';\nimport { getUniqueString, hasSlotContent } from '@/common/utils';\nimport ComboboxLoadingList from './combobox_loading-list.vue';\nimport ComboboxEmptyList from './combobox_empty-list.vue';\nimport { LABEL_SIZES } from '@/components/combobox/combobox_constants';\n\n/**\n * A combobox is a semantic component that displays an input element combined with a listbox,\n * which enables the user to select items from the list.\n * @see https://dialtone.dialpad.com/components/combobox.html\n */\nexport default {\n compatConfig: { MODE: 3 },\n name: 'DtCombobox',\n\n components: {\n ComboboxLoadingList,\n ComboboxEmptyList,\n },\n\n mixins: [\n KeyboardNavigation({\n indexKey: 'highlightIndex',\n idKey: 'highlightId',\n listElementKey: 'getListElement',\n afterHighlightMethod: 'afterHighlight',\n beginningOfListMethod: 'beginningOfListMethod',\n endOfListMethod: 'endOfListMethod',\n activeItemKey: 'activeItemEl',\n }),\n ],\n\n props: {\n /**\n * String to use for the input label.\n */\n label: {\n type: String,\n required: true,\n },\n\n /**\n * Determines visibility of input label.\n * @values true, false\n */\n labelVisible: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Size of the input, one of `xs`, `sm`, `md`, `lg`, `xl`\n * @values null, xs, sm, md, lg, xl\n */\n size: {\n type: String,\n default: null,\n validator: (t) => Object.values(LABEL_SIZES).includes(t),\n },\n\n /**\n * Description for the input\n */\n description: {\n type: String,\n default: '',\n },\n\n /**\n * Sets an ID on the list element of the component. Used by several aria attributes\n * as well as when deriving the IDs for each item.\n */\n listId: {\n type: String,\n default () { return getUniqueString(); },\n },\n\n /**\n * A method that will be called when the selection goes past the beginning of the list.\n */\n onBeginningOfList: {\n type: Function,\n default: null,\n },\n\n /**\n * A method that will be called when the selection goes past the end of the list.\n */\n onEndOfList: {\n type: Function,\n default: null,\n },\n\n /**\n * Determines when to show the list element and also controls the aria-expanded attribute.\n * @values true, false\n */\n showList: {\n type: Boolean,\n default: false,\n },\n\n /**\n * If the list is rendered outside the component, like when using popover as the list wrapper.\n * @values true, false\n */\n listRenderedOutside: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Determines when to show the skeletons and also controls aria-busy attribute.\n * @values true, false\n */\n loading: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Sets the list to an empty state, and displays the message from prop `emptyStateMessage`.\n * @values true, false\n */\n emptyList: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Message to show when the list is empty\n */\n emptyStateMessage: {\n type: String,\n default: '',\n },\n\n /**\n * Additional class name for the empty list element.\n * Can accept all of String, Object, and Array, i.e. has the\n * same api as Vue's built-in handling of the class attribute.\n */\n emptyStateClass: {\n type: [String, Object, Array],\n default: '',\n },\n\n /**\n * Programmatically click on the active list item element when a selection\n * comes from keyboard navigation, i.e. pressing the \"Enter\" key.\n * @values true, false\n */\n clickOnSelect: {\n type: Boolean,\n default: false,\n },\n },\n\n emits: [\n /**\n * Event fired when item selected\n *\n * @event select\n * @type {Number}\n */\n 'select',\n\n /**\n * Event fired when pressing escape\n *\n * @event escape\n */\n 'escape',\n\n /**\n * Event fired when the highlight changes\n *\n * @event highlight\n * @type {Number}\n */\n 'highlight',\n\n /**\n * Event fired when list is shown or hidden\n *\n * @event opened\n * @type {Boolean}\n */\n 'opened',\n ],\n\n data () {\n return {\n // If the list is rendered at the root, rather than as a child\n // of this component, this is the ref to that dom element. Set\n // by the onOpen method.\n outsideRenderedListRef: null,\n hasSlotContent,\n };\n },\n\n computed: {\n inputProps () {\n return {\n label: this.label,\n labelVisible: this.labelVisible,\n size: this.size,\n description: this.description,\n role: 'combobox',\n 'aria-label': this.label,\n 'aria-expanded': this.showList.toString(),\n 'aria-owns': this.listId,\n 'aria-haspopup': 'listbox',\n 'aria-activedescendant': this.activeItemId,\n 'aria-controls': this.listId,\n };\n },\n\n listProps () {\n return {\n role: 'listbox',\n id: this.listId,\n // The list has to be positioned relatively so that the auto-scroll can\n // calculate the correct offset for the list items.\n class: 'd-ps-relative',\n 'aria-label': this.label,\n };\n },\n\n beginningOfListMethod () {\n return this.onBeginningOfList || this.jumpToEnd;\n },\n\n endOfListMethod () {\n return this.onEndOfList || this.jumpToBeginning;\n },\n\n activeItemId () {\n if (!this.showList || this.highlightIndex < 0 || this.loading) {\n return;\n }\n return this.highlightId;\n },\n\n activeItemEl () {\n if (!this.highlightId) return '';\n return this.getListElement().querySelector('#' + this.highlightId);\n },\n },\n\n watch: {\n showList (showList) {\n // When the list's visibility changes reset the highlight index.\n\n if (!this.listRenderedOutside) {\n this.setInitialHighlightIndex();\n this.$emit('opened', showList);\n }\n\n if (!showList && this.outsideRenderedListRef) {\n this.outsideRenderedListRef.removeEventListener('mousemove', this.onMouseHighlight);\n this.outsideRenderedListRef = null;\n }\n },\n\n loading (loading) {\n this.$nextTick(() => {\n this.setInitialHighlightIndex();\n });\n },\n\n $props: {\n deep: true,\n immediate: true,\n handler () {\n this.validateEmptyListProps();\n },\n },\n },\n\n created () {\n this.validateEmptyListProps();\n },\n\n methods: {\n onMouseHighlight (e) {\n if (this.loading) return;\n\n const liElement = e.target.closest('li');\n\n if (liElement && this.highlightId !== liElement.id) {\n this.setHighlightId(liElement.id);\n }\n },\n\n getListElement () {\n return this.outsideRenderedListRef ?? this.$refs.listWrapper?.querySelector(`#${this.listId}`);\n },\n\n clearHighlightIndex () {\n if (this.showList) {\n this.setHighlightIndex(-1);\n }\n },\n\n afterHighlight () {\n if (this.loading) return;\n this.$emit('highlight', this.highlightIndex);\n },\n\n onEnterKey () {\n if (this.loading || this.emptyList) return;\n\n if (this.highlightIndex >= 0) {\n this.$emit('select', this.highlightIndex);\n\n if (this.clickOnSelect) {\n this.activeItemEl?.click();\n }\n }\n },\n\n onEscapeKey () {\n this.$emit('escape');\n },\n\n onOpen (open, contentRef) {\n this.outsideRenderedListRef = contentRef;\n this.outsideRenderedListRef?.addEventListener('mousemove', this.onMouseHighlight);\n this.$emit('opened', open);\n\n if (open) {\n this.setInitialHighlightIndex();\n }\n },\n\n onKeyValidation (e, eventHandler) {\n if (!this.showList || !this.getListElement()) return;\n\n this[eventHandler](e);\n },\n\n setInitialHighlightIndex () {\n if (!this.showList) return;\n this.$nextTick(() => {\n // When the list's is shown, reset the highlight index.\n // If the list is loading, set to -1\n this.setHighlightIndex(this.loading ? -1 : 0);\n });\n },\n\n validateEmptyListProps () {\n if (this.$slots.emptyListItem) { return; }\n\n if (this.emptyList && !this.emptyStateMessage) {\n console.error(`Invalid props: you must pass both props emptyList and emptyStateMessage to show the\n empty message.`);\n }\n },\n },\n};\n</script>\n"],"names":["ComboboxLoadingList","ComboboxEmptyList","KeyboardNavigation","LABEL_SIZES","getUniqueString","hasSlotContent","_createElementBlock","_withKeys","_withModifiers","_createElementVNode","_renderSlot","_openBlock","_createBlock","_normalizeProps","_mergeProps","_withCtx","_createCommentVNode"],"mappings":"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"}
|
|
@@ -6,6 +6,7 @@ import { LABEL_SIZES } from "./combobox_constants.js";
|
|
|
6
6
|
import { resolveComponent, openBlock, createElementBlock, withKeys, withModifiers, createElementVNode, renderSlot, createBlock, normalizeProps, mergeProps, withCtx, createCommentVNode } from "vue";
|
|
7
7
|
import _export_sfc from "../../_virtual/_plugin-vue_export-helper.js";
|
|
8
8
|
const _sfc_main = {
|
|
9
|
+
compatConfig: { MODE: 3 },
|
|
9
10
|
name: "DtCombobox",
|
|
10
11
|
components: {
|
|
11
12
|
ComboboxLoadingList,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"combobox.vue.js","sources":["../../../components/combobox/combobox.vue"],"sourcesContent":["<!-- eslint-disable vuejs-accessibility/no-static-element-interactions -->\n<template>\n <div\n @keydown.esc.stop=\"onKeyValidation($event, 'onEscapeKey')\"\n @keydown.enter.exact=\"onKeyValidation($event, 'onEnterKey')\"\n @keydown.up.stop.prevent=\"onKeyValidation($event, 'onUpKey')\"\n @keydown.down.stop.prevent=\"onKeyValidation($event, 'onDownKey')\"\n @keydown.home.stop.prevent=\"onKeyValidation($event, 'onHomeKey')\"\n @keydown.end.stop.prevent=\"onKeyValidation($event, 'onEndKey')\"\n >\n <div data-qa=\"dt-combobox-input-wrapper\">\n <!-- @slot Slot for the combobox input element -->\n <slot\n name=\"input\"\n :input-props=\"inputProps\"\n />\n </div>\n\n <div\n v-if=\"showList\"\n ref=\"listWrapper\"\n data-qa=\"dt-combobox-list-wrapper\"\n @mouseleave=\"clearHighlightIndex\"\n @focusout=\"clearHighlightIndex\"\n @mousemove.capture=\"onMouseHighlight\"\n >\n <combobox-loading-list\n v-if=\"loading && !listRenderedOutside\"\n v-bind=\"listProps\"\n />\n <combobox-empty-list\n v-else-if=\"emptyList && (emptyStateMessage || hasSlotContent($slots.emptyListItem)) && !listRenderedOutside\"\n v-bind=\"listProps\"\n :message=\"emptyStateMessage\"\n :item-class=\"emptyStateClass\"\n >\n <slot name=\"emptyListItem\" />\n </combobox-empty-list>\n <!-- @slot Slot for the combobox list element -->\n <slot\n v-else\n name=\"list\"\n :list-props=\"listProps\"\n :opened=\"onOpen\"\n :clear-highlight-index=\"clearHighlightIndex\"\n />\n </div>\n </div>\n</template>\n\n<script>\nimport KeyboardNavigation from '@/common/mixins/keyboard_list_navigation';\nimport { getUniqueString, hasSlotContent } from '@/common/utils';\nimport ComboboxLoadingList from './combobox_loading-list.vue';\nimport ComboboxEmptyList from './combobox_empty-list.vue';\nimport { LABEL_SIZES } from '@/components/combobox/combobox_constants';\n\n/**\n * A combobox is a semantic component that displays an input element combined with a listbox,\n * which enables the user to select items from the list.\n * @see https://dialtone.dialpad.com/components/combobox.html\n */\nexport default {\n name: 'DtCombobox',\n\n components: {\n ComboboxLoadingList,\n ComboboxEmptyList,\n },\n\n mixins: [\n KeyboardNavigation({\n indexKey: 'highlightIndex',\n idKey: 'highlightId',\n listElementKey: 'getListElement',\n afterHighlightMethod: 'afterHighlight',\n beginningOfListMethod: 'beginningOfListMethod',\n endOfListMethod: 'endOfListMethod',\n activeItemKey: 'activeItemEl',\n }),\n ],\n\n props: {\n /**\n * String to use for the input label.\n */\n label: {\n type: String,\n required: true,\n },\n\n /**\n * Determines visibility of input label.\n * @values true, false\n */\n labelVisible: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Size of the input, one of `xs`, `sm`, `md`, `lg`, `xl`\n * @values null, xs, sm, md, lg, xl\n */\n size: {\n type: String,\n default: null,\n validator: (t) => Object.values(LABEL_SIZES).includes(t),\n },\n\n /**\n * Description for the input\n */\n description: {\n type: String,\n default: '',\n },\n\n /**\n * Sets an ID on the list element of the component. Used by several aria attributes\n * as well as when deriving the IDs for each item.\n */\n listId: {\n type: String,\n default () { return getUniqueString(); },\n },\n\n /**\n * A method that will be called when the selection goes past the beginning of the list.\n */\n onBeginningOfList: {\n type: Function,\n default: null,\n },\n\n /**\n * A method that will be called when the selection goes past the end of the list.\n */\n onEndOfList: {\n type: Function,\n default: null,\n },\n\n /**\n * Determines when to show the list element and also controls the aria-expanded attribute.\n * @values true, false\n */\n showList: {\n type: Boolean,\n default: false,\n },\n\n /**\n * If the list is rendered outside the component, like when using popover as the list wrapper.\n * @values true, false\n */\n listRenderedOutside: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Determines when to show the skeletons and also controls aria-busy attribute.\n * @values true, false\n */\n loading: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Sets the list to an empty state, and displays the message from prop `emptyStateMessage`.\n * @values true, false\n */\n emptyList: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Message to show when the list is empty\n */\n emptyStateMessage: {\n type: String,\n default: '',\n },\n\n /**\n * Additional class name for the empty list element.\n * Can accept all of String, Object, and Array, i.e. has the\n * same api as Vue's built-in handling of the class attribute.\n */\n emptyStateClass: {\n type: [String, Object, Array],\n default: '',\n },\n\n /**\n * Programmatically click on the active list item element when a selection\n * comes from keyboard navigation, i.e. pressing the \"Enter\" key.\n * @values true, false\n */\n clickOnSelect: {\n type: Boolean,\n default: false,\n },\n },\n\n emits: [\n /**\n * Event fired when item selected\n *\n * @event select\n * @type {Number}\n */\n 'select',\n\n /**\n * Event fired when pressing escape\n *\n * @event escape\n */\n 'escape',\n\n /**\n * Event fired when the highlight changes\n *\n * @event highlight\n * @type {Number}\n */\n 'highlight',\n\n /**\n * Event fired when list is shown or hidden\n *\n * @event opened\n * @type {Boolean}\n */\n 'opened',\n ],\n\n data () {\n return {\n // If the list is rendered at the root, rather than as a child\n // of this component, this is the ref to that dom element. Set\n // by the onOpen method.\n outsideRenderedListRef: null,\n hasSlotContent,\n };\n },\n\n computed: {\n inputProps () {\n return {\n label: this.label,\n labelVisible: this.labelVisible,\n size: this.size,\n description: this.description,\n role: 'combobox',\n 'aria-label': this.label,\n 'aria-expanded': this.showList.toString(),\n 'aria-owns': this.listId,\n 'aria-haspopup': 'listbox',\n 'aria-activedescendant': this.activeItemId,\n 'aria-controls': this.listId,\n };\n },\n\n listProps () {\n return {\n role: 'listbox',\n id: this.listId,\n // The list has to be positioned relatively so that the auto-scroll can\n // calculate the correct offset for the list items.\n class: 'd-ps-relative',\n 'aria-label': this.label,\n };\n },\n\n beginningOfListMethod () {\n return this.onBeginningOfList || this.jumpToEnd;\n },\n\n endOfListMethod () {\n return this.onEndOfList || this.jumpToBeginning;\n },\n\n activeItemId () {\n if (!this.showList || this.highlightIndex < 0 || this.loading) {\n return;\n }\n return this.highlightId;\n },\n\n activeItemEl () {\n if (!this.highlightId) return '';\n return this.getListElement().querySelector('#' + this.highlightId);\n },\n },\n\n watch: {\n showList (showList) {\n // When the list's visibility changes reset the highlight index.\n\n if (!this.listRenderedOutside) {\n this.setInitialHighlightIndex();\n this.$emit('opened', showList);\n }\n\n if (!showList && this.outsideRenderedListRef) {\n this.outsideRenderedListRef.removeEventListener('mousemove', this.onMouseHighlight);\n this.outsideRenderedListRef = null;\n }\n },\n\n loading (loading) {\n this.$nextTick(() => {\n this.setInitialHighlightIndex();\n });\n },\n\n $props: {\n deep: true,\n immediate: true,\n handler () {\n this.validateEmptyListProps();\n },\n },\n },\n\n created () {\n this.validateEmptyListProps();\n },\n\n methods: {\n onMouseHighlight (e) {\n if (this.loading) return;\n\n const liElement = e.target.closest('li');\n\n if (liElement && this.highlightId !== liElement.id) {\n this.setHighlightId(liElement.id);\n }\n },\n\n getListElement () {\n return this.outsideRenderedListRef ?? this.$refs.listWrapper?.querySelector(`#${this.listId}`);\n },\n\n clearHighlightIndex () {\n if (this.showList) {\n this.setHighlightIndex(-1);\n }\n },\n\n afterHighlight () {\n if (this.loading) return;\n this.$emit('highlight', this.highlightIndex);\n },\n\n onEnterKey () {\n if (this.loading || this.emptyList) return;\n\n if (this.highlightIndex >= 0) {\n this.$emit('select', this.highlightIndex);\n\n if (this.clickOnSelect) {\n this.activeItemEl?.click();\n }\n }\n },\n\n onEscapeKey () {\n this.$emit('escape');\n },\n\n onOpen (open, contentRef) {\n this.outsideRenderedListRef = contentRef;\n this.outsideRenderedListRef?.addEventListener('mousemove', this.onMouseHighlight);\n this.$emit('opened', open);\n\n if (open) {\n this.setInitialHighlightIndex();\n }\n },\n\n onKeyValidation (e, eventHandler) {\n if (!this.showList || !this.getListElement()) return;\n\n this[eventHandler](e);\n },\n\n setInitialHighlightIndex () {\n if (!this.showList) return;\n this.$nextTick(() => {\n // When the list's is shown, reset the highlight index.\n // If the list is loading, set to -1\n this.setHighlightIndex(this.loading ? -1 : 0);\n });\n },\n\n validateEmptyListProps () {\n if (this.$slots.emptyListItem) { return; }\n\n if (this.emptyList && !this.emptyStateMessage) {\n console.error(`Invalid props: you must pass both props emptyList and emptyStateMessage to show the\n empty message.`);\n }\n },\n },\n};\n</script>\n"],"names":["_createElementBlock","_withKeys","_withModifiers","_createElementVNode","_renderSlot","_openBlock","_createBlock","_normalizeProps","_mergeProps","_withCtx","_createCommentVNode"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"combobox.vue.js","sources":["../../../components/combobox/combobox.vue"],"sourcesContent":["<!-- eslint-disable vuejs-accessibility/no-static-element-interactions -->\n<template>\n <div\n @keydown.esc.stop=\"onKeyValidation($event, 'onEscapeKey')\"\n @keydown.enter.exact=\"onKeyValidation($event, 'onEnterKey')\"\n @keydown.up.stop.prevent=\"onKeyValidation($event, 'onUpKey')\"\n @keydown.down.stop.prevent=\"onKeyValidation($event, 'onDownKey')\"\n @keydown.home.stop.prevent=\"onKeyValidation($event, 'onHomeKey')\"\n @keydown.end.stop.prevent=\"onKeyValidation($event, 'onEndKey')\"\n >\n <div data-qa=\"dt-combobox-input-wrapper\">\n <!-- @slot Slot for the combobox input element -->\n <slot\n name=\"input\"\n :input-props=\"inputProps\"\n />\n </div>\n\n <div\n v-if=\"showList\"\n ref=\"listWrapper\"\n data-qa=\"dt-combobox-list-wrapper\"\n @mouseleave=\"clearHighlightIndex\"\n @focusout=\"clearHighlightIndex\"\n @mousemove.capture=\"onMouseHighlight\"\n >\n <combobox-loading-list\n v-if=\"loading && !listRenderedOutside\"\n v-bind=\"listProps\"\n />\n <combobox-empty-list\n v-else-if=\"emptyList && (emptyStateMessage || hasSlotContent($slots.emptyListItem)) && !listRenderedOutside\"\n v-bind=\"listProps\"\n :message=\"emptyStateMessage\"\n :item-class=\"emptyStateClass\"\n >\n <slot name=\"emptyListItem\" />\n </combobox-empty-list>\n <!-- @slot Slot for the combobox list element -->\n <slot\n v-else\n name=\"list\"\n :list-props=\"listProps\"\n :opened=\"onOpen\"\n :clear-highlight-index=\"clearHighlightIndex\"\n />\n </div>\n </div>\n</template>\n\n<script>\nimport KeyboardNavigation from '@/common/mixins/keyboard_list_navigation';\nimport { getUniqueString, hasSlotContent } from '@/common/utils';\nimport ComboboxLoadingList from './combobox_loading-list.vue';\nimport ComboboxEmptyList from './combobox_empty-list.vue';\nimport { LABEL_SIZES } from '@/components/combobox/combobox_constants';\n\n/**\n * A combobox is a semantic component that displays an input element combined with a listbox,\n * which enables the user to select items from the list.\n * @see https://dialtone.dialpad.com/components/combobox.html\n */\nexport default {\n compatConfig: { MODE: 3 },\n name: 'DtCombobox',\n\n components: {\n ComboboxLoadingList,\n ComboboxEmptyList,\n },\n\n mixins: [\n KeyboardNavigation({\n indexKey: 'highlightIndex',\n idKey: 'highlightId',\n listElementKey: 'getListElement',\n afterHighlightMethod: 'afterHighlight',\n beginningOfListMethod: 'beginningOfListMethod',\n endOfListMethod: 'endOfListMethod',\n activeItemKey: 'activeItemEl',\n }),\n ],\n\n props: {\n /**\n * String to use for the input label.\n */\n label: {\n type: String,\n required: true,\n },\n\n /**\n * Determines visibility of input label.\n * @values true, false\n */\n labelVisible: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Size of the input, one of `xs`, `sm`, `md`, `lg`, `xl`\n * @values null, xs, sm, md, lg, xl\n */\n size: {\n type: String,\n default: null,\n validator: (t) => Object.values(LABEL_SIZES).includes(t),\n },\n\n /**\n * Description for the input\n */\n description: {\n type: String,\n default: '',\n },\n\n /**\n * Sets an ID on the list element of the component. Used by several aria attributes\n * as well as when deriving the IDs for each item.\n */\n listId: {\n type: String,\n default () { return getUniqueString(); },\n },\n\n /**\n * A method that will be called when the selection goes past the beginning of the list.\n */\n onBeginningOfList: {\n type: Function,\n default: null,\n },\n\n /**\n * A method that will be called when the selection goes past the end of the list.\n */\n onEndOfList: {\n type: Function,\n default: null,\n },\n\n /**\n * Determines when to show the list element and also controls the aria-expanded attribute.\n * @values true, false\n */\n showList: {\n type: Boolean,\n default: false,\n },\n\n /**\n * If the list is rendered outside the component, like when using popover as the list wrapper.\n * @values true, false\n */\n listRenderedOutside: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Determines when to show the skeletons and also controls aria-busy attribute.\n * @values true, false\n */\n loading: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Sets the list to an empty state, and displays the message from prop `emptyStateMessage`.\n * @values true, false\n */\n emptyList: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Message to show when the list is empty\n */\n emptyStateMessage: {\n type: String,\n default: '',\n },\n\n /**\n * Additional class name for the empty list element.\n * Can accept all of String, Object, and Array, i.e. has the\n * same api as Vue's built-in handling of the class attribute.\n */\n emptyStateClass: {\n type: [String, Object, Array],\n default: '',\n },\n\n /**\n * Programmatically click on the active list item element when a selection\n * comes from keyboard navigation, i.e. pressing the \"Enter\" key.\n * @values true, false\n */\n clickOnSelect: {\n type: Boolean,\n default: false,\n },\n },\n\n emits: [\n /**\n * Event fired when item selected\n *\n * @event select\n * @type {Number}\n */\n 'select',\n\n /**\n * Event fired when pressing escape\n *\n * @event escape\n */\n 'escape',\n\n /**\n * Event fired when the highlight changes\n *\n * @event highlight\n * @type {Number}\n */\n 'highlight',\n\n /**\n * Event fired when list is shown or hidden\n *\n * @event opened\n * @type {Boolean}\n */\n 'opened',\n ],\n\n data () {\n return {\n // If the list is rendered at the root, rather than as a child\n // of this component, this is the ref to that dom element. Set\n // by the onOpen method.\n outsideRenderedListRef: null,\n hasSlotContent,\n };\n },\n\n computed: {\n inputProps () {\n return {\n label: this.label,\n labelVisible: this.labelVisible,\n size: this.size,\n description: this.description,\n role: 'combobox',\n 'aria-label': this.label,\n 'aria-expanded': this.showList.toString(),\n 'aria-owns': this.listId,\n 'aria-haspopup': 'listbox',\n 'aria-activedescendant': this.activeItemId,\n 'aria-controls': this.listId,\n };\n },\n\n listProps () {\n return {\n role: 'listbox',\n id: this.listId,\n // The list has to be positioned relatively so that the auto-scroll can\n // calculate the correct offset for the list items.\n class: 'd-ps-relative',\n 'aria-label': this.label,\n };\n },\n\n beginningOfListMethod () {\n return this.onBeginningOfList || this.jumpToEnd;\n },\n\n endOfListMethod () {\n return this.onEndOfList || this.jumpToBeginning;\n },\n\n activeItemId () {\n if (!this.showList || this.highlightIndex < 0 || this.loading) {\n return;\n }\n return this.highlightId;\n },\n\n activeItemEl () {\n if (!this.highlightId) return '';\n return this.getListElement().querySelector('#' + this.highlightId);\n },\n },\n\n watch: {\n showList (showList) {\n // When the list's visibility changes reset the highlight index.\n\n if (!this.listRenderedOutside) {\n this.setInitialHighlightIndex();\n this.$emit('opened', showList);\n }\n\n if (!showList && this.outsideRenderedListRef) {\n this.outsideRenderedListRef.removeEventListener('mousemove', this.onMouseHighlight);\n this.outsideRenderedListRef = null;\n }\n },\n\n loading (loading) {\n this.$nextTick(() => {\n this.setInitialHighlightIndex();\n });\n },\n\n $props: {\n deep: true,\n immediate: true,\n handler () {\n this.validateEmptyListProps();\n },\n },\n },\n\n created () {\n this.validateEmptyListProps();\n },\n\n methods: {\n onMouseHighlight (e) {\n if (this.loading) return;\n\n const liElement = e.target.closest('li');\n\n if (liElement && this.highlightId !== liElement.id) {\n this.setHighlightId(liElement.id);\n }\n },\n\n getListElement () {\n return this.outsideRenderedListRef ?? this.$refs.listWrapper?.querySelector(`#${this.listId}`);\n },\n\n clearHighlightIndex () {\n if (this.showList) {\n this.setHighlightIndex(-1);\n }\n },\n\n afterHighlight () {\n if (this.loading) return;\n this.$emit('highlight', this.highlightIndex);\n },\n\n onEnterKey () {\n if (this.loading || this.emptyList) return;\n\n if (this.highlightIndex >= 0) {\n this.$emit('select', this.highlightIndex);\n\n if (this.clickOnSelect) {\n this.activeItemEl?.click();\n }\n }\n },\n\n onEscapeKey () {\n this.$emit('escape');\n },\n\n onOpen (open, contentRef) {\n this.outsideRenderedListRef = contentRef;\n this.outsideRenderedListRef?.addEventListener('mousemove', this.onMouseHighlight);\n this.$emit('opened', open);\n\n if (open) {\n this.setInitialHighlightIndex();\n }\n },\n\n onKeyValidation (e, eventHandler) {\n if (!this.showList || !this.getListElement()) return;\n\n this[eventHandler](e);\n },\n\n setInitialHighlightIndex () {\n if (!this.showList) return;\n this.$nextTick(() => {\n // When the list's is shown, reset the highlight index.\n // If the list is loading, set to -1\n this.setHighlightIndex(this.loading ? -1 : 0);\n });\n },\n\n validateEmptyListProps () {\n if (this.$slots.emptyListItem) { return; }\n\n if (this.emptyList && !this.emptyStateMessage) {\n console.error(`Invalid props: you must pass both props emptyList and emptyStateMessage to show the\n empty message.`);\n }\n },\n },\n};\n</script>\n"],"names":["_createElementBlock","_withKeys","_withModifiers","_createElementVNode","_renderSlot","_openBlock","_createBlock","_normalizeProps","_mergeProps","_withCtx","_createCommentVNode"],"mappings":"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"}
|
|
@@ -6,6 +6,7 @@ const description_list_validators = require("./description_list_validators.cjs")
|
|
|
6
6
|
const vue = require("vue");
|
|
7
7
|
const _pluginVue_exportHelper = require("../../_virtual/_plugin-vue_export-helper.cjs");
|
|
8
8
|
const _sfc_main = {
|
|
9
|
+
compatConfig: { MODE: 3 },
|
|
9
10
|
name: "DtDescriptionList",
|
|
10
11
|
props: {
|
|
11
12
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"description_list.vue.cjs","sources":["../../../components/description_list/description_list.vue"],"sourcesContent":["<template>\n <dl :class=\"['d-description-list', getDirectionClass, getGapClass]\">\n <template\n v-for=\"item in items\"\n :key=\"item.term\"\n >\n <dt :class=\"dtClass\">\n {{ item.term }}\n </dt>\n <dd :class=\"ddClass\">\n {{ item.description }}\n </dd>\n </template>\n </dl>\n</template>\n\n<script>\nimport { DT_STACK_GAP } from '../stack/stack_constants';\nimport { DT_DESCRIPTION_LIST_DIRECTION } from './description_list_constants';\nimport { itemsValidator } from './description_list_validators';\n\nexport default {\n name: 'DtDescriptionList',\n\n props: {\n /**\n * The direction for the list\n * @values row, column\n */\n direction: {\n type: String,\n default: 'row',\n validator: direction => DT_DESCRIPTION_LIST_DIRECTION.includes(direction),\n },\n\n /**\n * A list of items that represent the term and the description\n */\n items: {\n type: Array,\n default: () => [],\n validator: items => itemsValidator(items),\n required: true,\n },\n\n /**\n * Set the space between the elements\n * @values 0, 100, 200, 300, 400, 500, 600\n */\n gap: {\n type: String,\n default: '400',\n validator: (gap) => DT_STACK_GAP.includes(gap),\n },\n\n /**\n * Used to customize the term element\n */\n termClass: {\n type: [String, Array, Object],\n default: '',\n },\n\n /**\n * Used to customize the description element\n */\n descriptionClass: {\n type: [String, Array, Object],\n default: '',\n },\n },\n\n computed: {\n dtClass () {\n return ['d-description-list__term', this.termClass];\n },\n\n ddClass () {\n return ['d-description-list__description', this.descriptionClass];\n },\n\n getDirectionClass () {\n return `d-description-list--${this.direction}`;\n },\n\n getGapClass () {\n return `d-description-list--gap-${this.gap}`;\n },\n },\n};\n</script>\n"],"names":["DT_DESCRIPTION_LIST_DIRECTION","itemsValidator","DT_STACK_GAP","_createElementBlock","_normalizeClass","_openBlock","_Fragment","_renderList","_createElementVNode","_toDisplayString"],"mappings":";;;;;;;AAqBA,MAAK,YAAU;AAAA,EACb,MAAM;AAAA,EAEN,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA,IAKL,WAAW;AAAA,MACT,MAAM;AAAA,MACN,SAAS;AAAA,MACT,WAAW,eAAaA,yDAA8B,SAAS,SAAS;AAAA,IACzE;AAAA;AAAA;AAAA;AAAA,IAKD,OAAO;AAAA,MACL,MAAM;AAAA,MACN,SAAS,MAAM,CAAE;AAAA,MACjB,WAAW,WAASC,4BAAc,eAAC,KAAK;AAAA,MACxC,UAAU;AAAA,IACX;AAAA;AAAA;AAAA;AAAA;AAAA,IAMD,KAAK;AAAA,MACH,MAAM;AAAA,MACN,SAAS;AAAA,MACT,WAAW,CAAC,QAAQC,6BAAa,SAAS,GAAG;AAAA,IAC9C;AAAA;AAAA;AAAA;AAAA,IAKD,WAAW;AAAA,MACT,MAAM,CAAC,QAAQ,OAAO,MAAM;AAAA,MAC5B,SAAS;AAAA,IACV;AAAA;AAAA;AAAA;AAAA,IAKD,kBAAkB;AAAA,MAChB,MAAM,CAAC,QAAQ,OAAO,MAAM;AAAA,MAC5B,SAAS;AAAA,IACV;AAAA,EACF;AAAA,EAED,UAAU;AAAA,IACR,UAAW;AACT,aAAO,CAAC,4BAA4B,KAAK,SAAS;AAAA,IACnD;AAAA,IAED,UAAW;AACT,aAAO,CAAC,mCAAmC,KAAK,gBAAgB;AAAA,IACjE;AAAA,IAED,oBAAqB;AACnB,aAAO,uBAAuB,KAAK,SAAS;AAAA,IAC7C;AAAA,IAED,cAAe;AACb,aAAO,2BAA2B,KAAK,GAAG;AAAA,IAC3C;AAAA,EACF;AACH;;
|
|
1
|
+
{"version":3,"file":"description_list.vue.cjs","sources":["../../../components/description_list/description_list.vue"],"sourcesContent":["<template>\n <dl :class=\"['d-description-list', getDirectionClass, getGapClass]\">\n <template\n v-for=\"item in items\"\n :key=\"item.term\"\n >\n <dt :class=\"dtClass\">\n {{ item.term }}\n </dt>\n <dd :class=\"ddClass\">\n {{ item.description }}\n </dd>\n </template>\n </dl>\n</template>\n\n<script>\nimport { DT_STACK_GAP } from '../stack/stack_constants';\nimport { DT_DESCRIPTION_LIST_DIRECTION } from './description_list_constants';\nimport { itemsValidator } from './description_list_validators';\n\nexport default {\n compatConfig: { MODE: 3 },\n name: 'DtDescriptionList',\n\n props: {\n /**\n * The direction for the list\n * @values row, column\n */\n direction: {\n type: String,\n default: 'row',\n validator: direction => DT_DESCRIPTION_LIST_DIRECTION.includes(direction),\n },\n\n /**\n * A list of items that represent the term and the description\n */\n items: {\n type: Array,\n default: () => [],\n validator: items => itemsValidator(items),\n required: true,\n },\n\n /**\n * Set the space between the elements\n * @values 0, 100, 200, 300, 400, 500, 600\n */\n gap: {\n type: String,\n default: '400',\n validator: (gap) => DT_STACK_GAP.includes(gap),\n },\n\n /**\n * Used to customize the term element\n */\n termClass: {\n type: [String, Array, Object],\n default: '',\n },\n\n /**\n * Used to customize the description element\n */\n descriptionClass: {\n type: [String, Array, Object],\n default: '',\n },\n },\n\n computed: {\n dtClass () {\n return ['d-description-list__term', this.termClass];\n },\n\n ddClass () {\n return ['d-description-list__description', this.descriptionClass];\n },\n\n getDirectionClass () {\n return `d-description-list--${this.direction}`;\n },\n\n getGapClass () {\n return `d-description-list--gap-${this.gap}`;\n },\n },\n};\n</script>\n"],"names":["DT_DESCRIPTION_LIST_DIRECTION","itemsValidator","DT_STACK_GAP","_createElementBlock","_normalizeClass","_openBlock","_Fragment","_renderList","_createElementVNode","_toDisplayString"],"mappings":";;;;;;;AAqBA,MAAK,YAAU;AAAA,EACb,cAAc,EAAE,MAAM,EAAG;AAAA,EACzB,MAAM;AAAA,EAEN,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA,IAKL,WAAW;AAAA,MACT,MAAM;AAAA,MACN,SAAS;AAAA,MACT,WAAW,eAAaA,yDAA8B,SAAS,SAAS;AAAA,IACzE;AAAA;AAAA;AAAA;AAAA,IAKD,OAAO;AAAA,MACL,MAAM;AAAA,MACN,SAAS,MAAM,CAAE;AAAA,MACjB,WAAW,WAASC,4BAAc,eAAC,KAAK;AAAA,MACxC,UAAU;AAAA,IACX;AAAA;AAAA;AAAA;AAAA;AAAA,IAMD,KAAK;AAAA,MACH,MAAM;AAAA,MACN,SAAS;AAAA,MACT,WAAW,CAAC,QAAQC,6BAAa,SAAS,GAAG;AAAA,IAC9C;AAAA;AAAA;AAAA;AAAA,IAKD,WAAW;AAAA,MACT,MAAM,CAAC,QAAQ,OAAO,MAAM;AAAA,MAC5B,SAAS;AAAA,IACV;AAAA;AAAA;AAAA;AAAA,IAKD,kBAAkB;AAAA,MAChB,MAAM,CAAC,QAAQ,OAAO,MAAM;AAAA,MAC5B,SAAS;AAAA,IACV;AAAA,EACF;AAAA,EAED,UAAU;AAAA,IACR,UAAW;AACT,aAAO,CAAC,4BAA4B,KAAK,SAAS;AAAA,IACnD;AAAA,IAED,UAAW;AACT,aAAO,CAAC,mCAAmC,KAAK,gBAAgB;AAAA,IACjE;AAAA,IAED,oBAAqB;AACnB,aAAO,uBAAuB,KAAK,SAAS;AAAA,IAC7C;AAAA,IAED,cAAe;AACb,aAAO,2BAA2B,KAAK,GAAG;AAAA,IAC3C;AAAA,EACF;AACH;;0BAzFEC,IAYK,mBAAA,MAAA;AAAA,IAZA,OADPC,IAAA,eAAA,CAAA,sBACqC,SAAiB,mBAAE,SAAW,WAAA,CAAA;AAAA;KAC/DC,cAAA,IAAA,GAAAF,IAAAA,mBAUWG,IAZf,UAAA,MAAAC,IAAAA,WAGqB,OAAK,OAH1B,CAGa,SAAI;AAHjB,aAAAF,IAAA,UAAA,GAAAF,IAAA,mBAAAG,cAAA;AAAA,QAAA,KAIY,KAAK;AAAA;QAEXE,IAAAA,mBAEK,MAAA;AAAA,UAFA,OANXJ,IAAAA,eAMkB,SAAO,OAAA;AAAA,QACd,GAAAK,oBAAA,KAAK,IAAI,GAAA,CAAA;AAAA,QAEdD,IAAAA,mBAEK,MAAA;AAAA,UAFA,OATXJ,IAAAA,eASkB,SAAO,OAAA;AAAA,QACd,GAAAK,oBAAA,KAAK,WAAW,GAAA,CAAA;AAAA;;;;;;"}
|
|
@@ -4,6 +4,7 @@ import { itemsValidator } from "./description_list_validators.js";
|
|
|
4
4
|
import { openBlock, createElementBlock, normalizeClass, Fragment, renderList, createElementVNode, toDisplayString } from "vue";
|
|
5
5
|
import _export_sfc from "../../_virtual/_plugin-vue_export-helper.js";
|
|
6
6
|
const _sfc_main = {
|
|
7
|
+
compatConfig: { MODE: 3 },
|
|
7
8
|
name: "DtDescriptionList",
|
|
8
9
|
props: {
|
|
9
10
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"description_list.vue.js","sources":["../../../components/description_list/description_list.vue"],"sourcesContent":["<template>\n <dl :class=\"['d-description-list', getDirectionClass, getGapClass]\">\n <template\n v-for=\"item in items\"\n :key=\"item.term\"\n >\n <dt :class=\"dtClass\">\n {{ item.term }}\n </dt>\n <dd :class=\"ddClass\">\n {{ item.description }}\n </dd>\n </template>\n </dl>\n</template>\n\n<script>\nimport { DT_STACK_GAP } from '../stack/stack_constants';\nimport { DT_DESCRIPTION_LIST_DIRECTION } from './description_list_constants';\nimport { itemsValidator } from './description_list_validators';\n\nexport default {\n name: 'DtDescriptionList',\n\n props: {\n /**\n * The direction for the list\n * @values row, column\n */\n direction: {\n type: String,\n default: 'row',\n validator: direction => DT_DESCRIPTION_LIST_DIRECTION.includes(direction),\n },\n\n /**\n * A list of items that represent the term and the description\n */\n items: {\n type: Array,\n default: () => [],\n validator: items => itemsValidator(items),\n required: true,\n },\n\n /**\n * Set the space between the elements\n * @values 0, 100, 200, 300, 400, 500, 600\n */\n gap: {\n type: String,\n default: '400',\n validator: (gap) => DT_STACK_GAP.includes(gap),\n },\n\n /**\n * Used to customize the term element\n */\n termClass: {\n type: [String, Array, Object],\n default: '',\n },\n\n /**\n * Used to customize the description element\n */\n descriptionClass: {\n type: [String, Array, Object],\n default: '',\n },\n },\n\n computed: {\n dtClass () {\n return ['d-description-list__term', this.termClass];\n },\n\n ddClass () {\n return ['d-description-list__description', this.descriptionClass];\n },\n\n getDirectionClass () {\n return `d-description-list--${this.direction}`;\n },\n\n getGapClass () {\n return `d-description-list--gap-${this.gap}`;\n },\n },\n};\n</script>\n"],"names":["_createElementBlock","_normalizeClass","_openBlock","_Fragment","_renderList","_createElementVNode","_toDisplayString"],"mappings":";;;;;AAqBA,MAAK,YAAU;AAAA,EACb,MAAM;AAAA,EAEN,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA,IAKL,WAAW;AAAA,MACT,MAAM;AAAA,MACN,SAAS;AAAA,MACT,WAAW,eAAa,8BAA8B,SAAS,SAAS;AAAA,IACzE;AAAA;AAAA;AAAA;AAAA,IAKD,OAAO;AAAA,MACL,MAAM;AAAA,MACN,SAAS,MAAM,CAAE;AAAA,MACjB,WAAW,WAAS,eAAe,KAAK;AAAA,MACxC,UAAU;AAAA,IACX;AAAA;AAAA;AAAA;AAAA;AAAA,IAMD,KAAK;AAAA,MACH,MAAM;AAAA,MACN,SAAS;AAAA,MACT,WAAW,CAAC,QAAQ,aAAa,SAAS,GAAG;AAAA,IAC9C;AAAA;AAAA;AAAA;AAAA,IAKD,WAAW;AAAA,MACT,MAAM,CAAC,QAAQ,OAAO,MAAM;AAAA,MAC5B,SAAS;AAAA,IACV;AAAA;AAAA;AAAA;AAAA,IAKD,kBAAkB;AAAA,MAChB,MAAM,CAAC,QAAQ,OAAO,MAAM;AAAA,MAC5B,SAAS;AAAA,IACV;AAAA,EACF;AAAA,EAED,UAAU;AAAA,IACR,UAAW;AACT,aAAO,CAAC,4BAA4B,KAAK,SAAS;AAAA,IACnD;AAAA,IAED,UAAW;AACT,aAAO,CAAC,mCAAmC,KAAK,gBAAgB;AAAA,IACjE;AAAA,IAED,oBAAqB;AACnB,aAAO,uBAAuB,KAAK,SAAS;AAAA,IAC7C;AAAA,IAED,cAAe;AACb,aAAO,2BAA2B,KAAK,GAAG;AAAA,IAC3C;AAAA,EACF;AACH;;
|
|
1
|
+
{"version":3,"file":"description_list.vue.js","sources":["../../../components/description_list/description_list.vue"],"sourcesContent":["<template>\n <dl :class=\"['d-description-list', getDirectionClass, getGapClass]\">\n <template\n v-for=\"item in items\"\n :key=\"item.term\"\n >\n <dt :class=\"dtClass\">\n {{ item.term }}\n </dt>\n <dd :class=\"ddClass\">\n {{ item.description }}\n </dd>\n </template>\n </dl>\n</template>\n\n<script>\nimport { DT_STACK_GAP } from '../stack/stack_constants';\nimport { DT_DESCRIPTION_LIST_DIRECTION } from './description_list_constants';\nimport { itemsValidator } from './description_list_validators';\n\nexport default {\n compatConfig: { MODE: 3 },\n name: 'DtDescriptionList',\n\n props: {\n /**\n * The direction for the list\n * @values row, column\n */\n direction: {\n type: String,\n default: 'row',\n validator: direction => DT_DESCRIPTION_LIST_DIRECTION.includes(direction),\n },\n\n /**\n * A list of items that represent the term and the description\n */\n items: {\n type: Array,\n default: () => [],\n validator: items => itemsValidator(items),\n required: true,\n },\n\n /**\n * Set the space between the elements\n * @values 0, 100, 200, 300, 400, 500, 600\n */\n gap: {\n type: String,\n default: '400',\n validator: (gap) => DT_STACK_GAP.includes(gap),\n },\n\n /**\n * Used to customize the term element\n */\n termClass: {\n type: [String, Array, Object],\n default: '',\n },\n\n /**\n * Used to customize the description element\n */\n descriptionClass: {\n type: [String, Array, Object],\n default: '',\n },\n },\n\n computed: {\n dtClass () {\n return ['d-description-list__term', this.termClass];\n },\n\n ddClass () {\n return ['d-description-list__description', this.descriptionClass];\n },\n\n getDirectionClass () {\n return `d-description-list--${this.direction}`;\n },\n\n getGapClass () {\n return `d-description-list--gap-${this.gap}`;\n },\n },\n};\n</script>\n"],"names":["_createElementBlock","_normalizeClass","_openBlock","_Fragment","_renderList","_createElementVNode","_toDisplayString"],"mappings":";;;;;AAqBA,MAAK,YAAU;AAAA,EACb,cAAc,EAAE,MAAM,EAAG;AAAA,EACzB,MAAM;AAAA,EAEN,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA,IAKL,WAAW;AAAA,MACT,MAAM;AAAA,MACN,SAAS;AAAA,MACT,WAAW,eAAa,8BAA8B,SAAS,SAAS;AAAA,IACzE;AAAA;AAAA;AAAA;AAAA,IAKD,OAAO;AAAA,MACL,MAAM;AAAA,MACN,SAAS,MAAM,CAAE;AAAA,MACjB,WAAW,WAAS,eAAe,KAAK;AAAA,MACxC,UAAU;AAAA,IACX;AAAA;AAAA;AAAA;AAAA;AAAA,IAMD,KAAK;AAAA,MACH,MAAM;AAAA,MACN,SAAS;AAAA,MACT,WAAW,CAAC,QAAQ,aAAa,SAAS,GAAG;AAAA,IAC9C;AAAA;AAAA;AAAA;AAAA,IAKD,WAAW;AAAA,MACT,MAAM,CAAC,QAAQ,OAAO,MAAM;AAAA,MAC5B,SAAS;AAAA,IACV;AAAA;AAAA;AAAA;AAAA,IAKD,kBAAkB;AAAA,MAChB,MAAM,CAAC,QAAQ,OAAO,MAAM;AAAA,MAC5B,SAAS;AAAA,IACV;AAAA,EACF;AAAA,EAED,UAAU;AAAA,IACR,UAAW;AACT,aAAO,CAAC,4BAA4B,KAAK,SAAS;AAAA,IACnD;AAAA,IAED,UAAW;AACT,aAAO,CAAC,mCAAmC,KAAK,gBAAgB;AAAA,IACjE;AAAA,IAED,oBAAqB;AACnB,aAAO,uBAAuB,KAAK,SAAS;AAAA,IAC7C;AAAA,IAED,cAAe;AACb,aAAO,2BAA2B,KAAK,GAAG;AAAA,IAC3C;AAAA,EACF;AACH;;sBAzFEA,mBAYK,MAAA;AAAA,IAZA,OADPC,eAAA,CAAA,sBACqC,SAAiB,mBAAE,SAAW,WAAA,CAAA;AAAA;KAC/DC,UAAA,IAAA,GAAAF,mBAUWG,UAZf,MAAAC,WAGqB,OAAK,OAH1B,CAGa,SAAI;AAHjB,aAAAF,UAAA,GAAAF,mBAAAG,UAAA;AAAA,QAAA,KAIY,KAAK;AAAA;QAEXE,mBAEK,MAAA;AAAA,UAFA,OANXJ,eAMkB,SAAO,OAAA;AAAA,QACd,GAAAK,gBAAA,KAAK,IAAI,GAAA,CAAA;AAAA,QAEdD,mBAEK,MAAA;AAAA,UAFA,OATXJ,eASkB,SAAO,OAAA;AAAA,QACd,GAAAK,gBAAA,KAAK,WAAW,GAAA,CAAA;AAAA;;;;;"}
|
|
@@ -12,6 +12,7 @@ const popover = require("../popover/popover.vue.cjs");
|
|
|
12
12
|
const list_item_constants = require("../list_item/list_item_constants.cjs");
|
|
13
13
|
const popover_constants = require("../popover/popover_constants.cjs");
|
|
14
14
|
const _sfc_main = {
|
|
15
|
+
compatConfig: { MODE: 3 },
|
|
15
16
|
name: "DtDropdown",
|
|
16
17
|
components: {
|
|
17
18
|
DtPopover: popover.default,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dropdown.vue.cjs","sources":["../../../components/dropdown/dropdown.vue"],"sourcesContent":["<!-- eslint-disable max-lines -->\n<template>\n <dt-popover\n ref=\"popover\"\n :content-width=\"contentWidth\"\n :open=\"open\"\n :placement=\"placement\"\n :initial-focus-element=\"openedWithKeyboard ? 'first' : 'dialog'\"\n :fallback-placements=\"fallbackPlacements\"\n padding=\"none\"\n role=\"menu\"\n :append-to=\"appendTo\"\n :modal=\"modal\"\n :max-height=\"maxHeight\"\n :max-width=\"maxWidth\"\n :open-with-arrow-keys=\"shouldOpenWithArrowKeys\"\n :open-on-context=\"openOnContext\"\n v-bind=\"$attrs\"\n :tether=\"tether\"\n :transition=\"transition\"\n v-on=\"dropdownListeners\"\n >\n <template #anchor=\"{ attrs }\">\n <!-- @slot Anchor element that activates the dropdown -->\n <slot\n ref=\"anchor\"\n name=\"anchor\"\n v-bind=\"attrs\"\n />\n </template>\n <template #content=\"{ close }\">\n <!-- eslint-disable-next-line max-len -->\n <!-- eslint-disable-next-line vuejs-accessibility/mouse-events-have-key-events vuejs-accessibility/no-static-element-interactions -->\n <ul\n :id=\"listId\"\n ref=\"listWrapper\"\n :class=\"listClasses\"\n data-qa=\"dt-dropdown-list-wrapper\"\n @mouseleave=\"clearHighlightIndex\"\n @mousemove.capture=\"onMouseHighlight\"\n >\n <!-- @slot Slot for the list component -->\n <slot\n name=\"list\"\n :close=\"close\"\n />\n <sr-only-close-button\n v-if=\"showVisuallyHiddenClose\"\n :visually-hidden-close-label=\"visuallyHiddenCloseLabel\"\n :tabindex=\"isArrowKeyNav ? -1 : 0\"\n @close=\"close\"\n />\n </ul>\n </template>\n </dt-popover>\n</template>\n\n<script>\nimport KeyboardNavigation from '@/common/mixins/keyboard_list_navigation';\nimport { DtPopover, POPOVER_APPEND_TO_VALUES } from '@/components/popover';\nimport { LIST_ITEM_NAVIGATION_TYPES } from '@/components/list_item';\nimport { DROPDOWN_PADDING_CLASSES } from './dropdown_constants';\nimport { getUniqueString } from '@/common/utils';\nimport { EVENT_KEYNAMES } from '@/common/constants';\nimport SrOnlyCloseButtonMixin from '@/common/mixins/sr_only_close_button';\nimport SrOnlyCloseButton from '@/common/sr_only_close_button.vue';\n\nexport default {\n name: 'DtDropdown',\n\n components: {\n DtPopover,\n SrOnlyCloseButton,\n },\n\n mixins: [\n KeyboardNavigation({\n indexKey: 'highlightIndex',\n idKey: 'highlightId',\n listElementKey: 'getListElement',\n listItemRole: 'menuitem',\n afterHighlightMethod: 'afterHighlight',\n beginningOfListMethod: 'beginningOfListMethod',\n endOfListMethod: 'endOfListMethod',\n activeItemKey: 'activeItemEl',\n focusOnKeyboardNavigation: true,\n }),\n SrOnlyCloseButtonMixin,\n ],\n\n inheritAttrs: false,\n\n props: {\n /**\n * Controls whether the dropdown is shown. Leaving this null will have the dropdown trigger on click by default.\n * If you set this value, the default trigger behavior will be disabled and you can control it as you need.\n * Supports v-model\n */\n open: {\n type: Boolean,\n default: null,\n },\n\n /**\n * Opens the dropdown on right click (context menu). If you set this value to `true`,\n * the default trigger behavior will be disabled.\n */\n openOnContext: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Vertical padding size around the list element.\n * @values none, small, large\n */\n padding: {\n type: String,\n default: 'small',\n validator: (padding) => {\n return Object.keys(DROPDOWN_PADDING_CLASSES).some((item) => item === padding);\n },\n },\n\n /**\n * Determines modal state, dropdown has a modal overlay preventing interaction with elements\n * below it, but it is invisible.\n */\n modal: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Width configuration for the popover content. When its value is 'anchor',\n * the popover content will have the same width as the anchor.\n * @values null, anchor\n */\n contentWidth: {\n type: String,\n default: null,\n },\n\n /**\n * Determines maximum height for the popover before overflow.\n * Possible units rem|px|em\n */\n maxHeight: {\n type: String,\n default: '',\n },\n\n /**\n * Determines maximum width for the popover before overflow.\n * Possible units rem|px|%|em\n */\n maxWidth: {\n type: String,\n default: '',\n },\n\n /**\n * Sets an ID on the list element of the component. Used by several aria attributes\n * as well as when deriving the IDs for each item.\n */\n listId: {\n type: String,\n default () { return getUniqueString(); },\n },\n\n /**\n * The type of navigation that this component should support.\n * - \"arrow-keys\" for items that are navigated with UP/DOWN keys.\n * - \"tab\" for items that are navigated using the TAB key.\n * - \"none\" for static items that are not interactive.\n * @values arrow-keys, tab, none\n */\n navigationType: {\n type: String,\n default: LIST_ITEM_NAVIGATION_TYPES.ARROW_KEYS,\n validator: (t) => Object.values(LIST_ITEM_NAVIGATION_TYPES).includes(t),\n },\n\n /**\n * If the dropdown does not fit in the direction described by \"placement\",\n * it will attempt to change it's direction to the \"fallbackPlacements\".\n *\n * @values top, top-start, top-end,\n * right, right-start, right-end,\n * left, left-start, left-end,\n * bottom, bottom-start, bottom-end,\n * auto, auto-start, auto-end\n * */\n fallbackPlacements: {\n type: Array,\n default: () => {\n return ['auto'];\n },\n },\n\n /**\n * The direction the dropdown displays relative to the anchor.\n */\n placement: {\n type: String,\n default: 'bottom',\n },\n\n /**\n * A method that will be called when the selection goes past the beginning of the list.\n */\n onBeginningOfList: {\n type: Function,\n default: null,\n },\n\n /**\n * A method that will be called when the selection goes past the end of the list.\n */\n onEndOfList: {\n type: Function,\n default: null,\n },\n\n /**\n * Additional class for the wrapper list element.\n */\n listClass: {\n type: [String, Array, Object],\n default: '',\n },\n\n /**\n * Sets the element to which the popover is going to append to.\n * 'body' will append to the nearest body (supports shadow DOM).\n * @values 'body', 'parent', HTMLElement,\n */\n appendTo: {\n type: [HTMLElement, String],\n default: 'body',\n validator: appendTo => {\n return POPOVER_APPEND_TO_VALUES.includes(appendTo) ||\n (appendTo instanceof HTMLElement);\n },\n },\n\n /**\n * If set to false the dialog will display over top of the anchor when there is insufficient space.\n * If set to true it will never move from its position relative to the anchor and will clip instead.\n * <a\n * class=\"d-link\"\n * href=\"https://popper.js.org/docs/v2/modifiers/prevent-overflow/#tether\"\n * target=\"_blank\"\n * >\n * Popper.js docs\n * </a>\n * @values true, false\n */\n tether: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Named transition when the content display is toggled.\n * @see DtLazyShow\n */\n transition: {\n type: String,\n default: 'fade',\n },\n },\n\n emits: [\n /**\n * Native keydown event\n *\n * @event keydown\n * @type {KeyboardEvent}\n */\n 'keydown',\n\n /**\n * Event fired when the highlight changes\n *\n * @event highlight\n * @type {Number}\n */\n 'highlight',\n\n /**\n * Event fired to sync the open prop with the parent component\n * @event update:open\n */\n 'update:open',\n\n /**\n * Event fired when dropdown is shown or hidden\n *\n * @event opened\n * @type {Boolean | Array}\n */\n 'opened',\n\n /**\n * Event fired to sync the open prop with the parent component\n * @event update:open\n */\n 'update:open',\n ],\n\n data () {\n return {\n LIST_ITEM_NAVIGATION_TYPES,\n DROPDOWN_PADDING_CLASSES,\n EVENT_KEYNAMES,\n openedWithKeyboard: false,\n isOpen: null,\n };\n },\n\n computed: {\n dropdownListeners () {\n return {\n opened: isPopoverOpen => {\n this.updateInitialHighlightIndex(isPopoverOpen);\n },\n\n keydown: event => {\n const eventCode = event.code;\n\n switch (eventCode) {\n case EVENT_KEYNAMES.up:\n case EVENT_KEYNAMES.arrowup:\n this.onUpKeyPress(event);\n event.stopPropagation();\n event.preventDefault();\n break;\n case EVENT_KEYNAMES.down:\n case EVENT_KEYNAMES.arrowdown:\n this.onDownKeyPress(event);\n event.stopPropagation();\n event.preventDefault();\n break;\n case EVENT_KEYNAMES.space:\n case EVENT_KEYNAMES.spacebar:\n this.onSpaceKey();\n break;\n case EVENT_KEYNAMES.enter:\n this.onEnterKey();\n break;\n case EVENT_KEYNAMES.home:\n this.onHomeKeyPress(event);\n event.stopPropagation();\n event.preventDefault();\n break;\n case EVENT_KEYNAMES.end:\n this.onEndKeyPress(event);\n event.stopPropagation();\n event.preventDefault();\n break;\n default:\n this.onKeyPress(event);\n break;\n }\n\n this.$emit('keydown', event);\n },\n };\n },\n\n beginningOfListMethod () {\n return this.onBeginningOfList || this.jumpToEnd;\n },\n\n endOfListMethod () {\n return this.onEndOfList || this.jumpToBeginning;\n },\n\n activeItemEl () {\n return this.getListElement().querySelector('#' + this.highlightId);\n },\n\n isArrowKeyNav () {\n return this.navigationType === this.LIST_ITEM_NAVIGATION_TYPES.ARROW_KEYS;\n },\n\n listClasses () {\n return [\n 'd-dropdown-list',\n DROPDOWN_PADDING_CLASSES[this.padding],\n this.listClass,\n { 'd-context-menu-list': this.openOnContext },\n ];\n },\n\n shouldOpenWithArrowKeys () {\n return !this.openOnContext;\n },\n },\n\n methods: {\n onMouseHighlight (e) {\n const liElement = e.target.closest('li');\n\n if (liElement && liElement.role && this.highlightId !== liElement.id) {\n this.setHighlightId(liElement.id);\n liElement.focus();\n }\n },\n\n getListElement () {\n return this.$refs.listWrapper;\n },\n\n clearHighlightIndex () {\n this.setHighlightIndex(-1);\n },\n\n afterHighlight () {\n if (this.visuallyHiddenClose && this.highlightIndex === this._itemsLength() - 1) {\n return;\n }\n\n this.$emit('highlight', this.highlightIndex);\n },\n\n updateInitialHighlightIndex (isPopoverOpen) {\n this.isOpen = isPopoverOpen;\n\n if (isPopoverOpen) {\n if (this.openedWithKeyboard && this.isArrowKeyNav) {\n this.setHighlightIndex(0);\n }\n this.$emit('opened', true);\n } else {\n this.clearHighlightIndex();\n this.openedWithKeyboard = false;\n this.$emit('opened', false);\n }\n },\n\n onSpaceKey () {\n if (!this.open) {\n this.openedWithKeyboard = true;\n }\n },\n\n onEnterKey () {\n if (!this.open) {\n this.openedWithKeyboard = true;\n }\n },\n\n onUpKeyPress () {\n if (!this.isOpen) {\n this.openedWithKeyboard = true;\n return;\n }\n if (this.isArrowKeyNav) {\n return this.onUpKey();\n }\n },\n\n onDownKeyPress () {\n if (!this.isOpen) {\n this.openedWithKeyboard = true;\n return;\n }\n if (this.isArrowKeyNav) {\n return this.onDownKey();\n }\n },\n\n onHomeKeyPress () {\n if (!this.isOpen || !this.isArrowKeyNav) {\n return;\n }\n\n return this.onHomeKey();\n },\n\n onEndKeyPress () {\n if (!this.isOpen || !this.isArrowKeyNav) {\n return;\n }\n\n return this.onEndKey();\n },\n\n onKeyPress (e) {\n if (!this.isOpen || !this.isArrowKeyNav || !this.isValidLetter(e.key)) {\n return;\n }\n\n e.stopPropagation();\n e.preventDefault();\n\n return this.onNavigationKey(e.key);\n },\n },\n};\n</script>\n"],"names":["DtPopover","SrOnlyCloseButton","KeyboardNavigation","SrOnlyCloseButtonMixin","DROPDOWN_PADDING_CLASSES","getUniqueString","LIST_ITEM_NAVIGATION_TYPES","POPOVER_APPEND_TO_VALUES","EVENT_KEYNAMES","_openBlock","_createBlock","_mergeProps","_toHandlers","_withCtx","_renderSlot","_createElementVNode","_normalizeClass","_createCommentVNode"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"dropdown.vue.cjs","sources":["../../../components/dropdown/dropdown.vue"],"sourcesContent":["<!-- eslint-disable max-lines -->\n<template>\n <dt-popover\n ref=\"popover\"\n :content-width=\"contentWidth\"\n :open=\"open\"\n :placement=\"placement\"\n :initial-focus-element=\"openedWithKeyboard ? 'first' : 'dialog'\"\n :fallback-placements=\"fallbackPlacements\"\n padding=\"none\"\n role=\"menu\"\n :append-to=\"appendTo\"\n :modal=\"modal\"\n :max-height=\"maxHeight\"\n :max-width=\"maxWidth\"\n :open-with-arrow-keys=\"shouldOpenWithArrowKeys\"\n :open-on-context=\"openOnContext\"\n v-bind=\"$attrs\"\n :tether=\"tether\"\n :transition=\"transition\"\n v-on=\"dropdownListeners\"\n >\n <template #anchor=\"{ attrs }\">\n <!-- @slot Anchor element that activates the dropdown -->\n <slot\n ref=\"anchor\"\n name=\"anchor\"\n v-bind=\"attrs\"\n />\n </template>\n <template #content=\"{ close }\">\n <!-- eslint-disable-next-line max-len -->\n <!-- eslint-disable-next-line vuejs-accessibility/mouse-events-have-key-events vuejs-accessibility/no-static-element-interactions -->\n <ul\n :id=\"listId\"\n ref=\"listWrapper\"\n :class=\"listClasses\"\n data-qa=\"dt-dropdown-list-wrapper\"\n @mouseleave=\"clearHighlightIndex\"\n @mousemove.capture=\"onMouseHighlight\"\n >\n <!-- @slot Slot for the list component -->\n <slot\n name=\"list\"\n :close=\"close\"\n />\n <sr-only-close-button\n v-if=\"showVisuallyHiddenClose\"\n :visually-hidden-close-label=\"visuallyHiddenCloseLabel\"\n :tabindex=\"isArrowKeyNav ? -1 : 0\"\n @close=\"close\"\n />\n </ul>\n </template>\n </dt-popover>\n</template>\n\n<script>\nimport KeyboardNavigation from '@/common/mixins/keyboard_list_navigation';\nimport { DtPopover, POPOVER_APPEND_TO_VALUES } from '@/components/popover';\nimport { LIST_ITEM_NAVIGATION_TYPES } from '@/components/list_item';\nimport { DROPDOWN_PADDING_CLASSES } from './dropdown_constants';\nimport { getUniqueString } from '@/common/utils';\nimport { EVENT_KEYNAMES } from '@/common/constants';\nimport SrOnlyCloseButtonMixin from '@/common/mixins/sr_only_close_button';\nimport SrOnlyCloseButton from '@/common/sr_only_close_button.vue';\n\nexport default {\n compatConfig: { MODE: 3 },\n name: 'DtDropdown',\n\n components: {\n DtPopover,\n SrOnlyCloseButton,\n },\n\n mixins: [\n KeyboardNavigation({\n indexKey: 'highlightIndex',\n idKey: 'highlightId',\n listElementKey: 'getListElement',\n listItemRole: 'menuitem',\n afterHighlightMethod: 'afterHighlight',\n beginningOfListMethod: 'beginningOfListMethod',\n endOfListMethod: 'endOfListMethod',\n activeItemKey: 'activeItemEl',\n focusOnKeyboardNavigation: true,\n }),\n SrOnlyCloseButtonMixin,\n ],\n\n inheritAttrs: false,\n\n props: {\n /**\n * Controls whether the dropdown is shown. Leaving this null will have the dropdown trigger on click by default.\n * If you set this value, the default trigger behavior will be disabled and you can control it as you need.\n * Supports v-model\n */\n open: {\n type: Boolean,\n default: null,\n },\n\n /**\n * Opens the dropdown on right click (context menu). If you set this value to `true`,\n * the default trigger behavior will be disabled.\n */\n openOnContext: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Vertical padding size around the list element.\n * @values none, small, large\n */\n padding: {\n type: String,\n default: 'small',\n validator: (padding) => {\n return Object.keys(DROPDOWN_PADDING_CLASSES).some((item) => item === padding);\n },\n },\n\n /**\n * Determines modal state, dropdown has a modal overlay preventing interaction with elements\n * below it, but it is invisible.\n */\n modal: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Width configuration for the popover content. When its value is 'anchor',\n * the popover content will have the same width as the anchor.\n * @values null, anchor\n */\n contentWidth: {\n type: String,\n default: null,\n },\n\n /**\n * Determines maximum height for the popover before overflow.\n * Possible units rem|px|em\n */\n maxHeight: {\n type: String,\n default: '',\n },\n\n /**\n * Determines maximum width for the popover before overflow.\n * Possible units rem|px|%|em\n */\n maxWidth: {\n type: String,\n default: '',\n },\n\n /**\n * Sets an ID on the list element of the component. Used by several aria attributes\n * as well as when deriving the IDs for each item.\n */\n listId: {\n type: String,\n default () { return getUniqueString(); },\n },\n\n /**\n * The type of navigation that this component should support.\n * - \"arrow-keys\" for items that are navigated with UP/DOWN keys.\n * - \"tab\" for items that are navigated using the TAB key.\n * - \"none\" for static items that are not interactive.\n * @values arrow-keys, tab, none\n */\n navigationType: {\n type: String,\n default: LIST_ITEM_NAVIGATION_TYPES.ARROW_KEYS,\n validator: (t) => Object.values(LIST_ITEM_NAVIGATION_TYPES).includes(t),\n },\n\n /**\n * If the dropdown does not fit in the direction described by \"placement\",\n * it will attempt to change it's direction to the \"fallbackPlacements\".\n *\n * @values top, top-start, top-end,\n * right, right-start, right-end,\n * left, left-start, left-end,\n * bottom, bottom-start, bottom-end,\n * auto, auto-start, auto-end\n * */\n fallbackPlacements: {\n type: Array,\n default: () => {\n return ['auto'];\n },\n },\n\n /**\n * The direction the dropdown displays relative to the anchor.\n */\n placement: {\n type: String,\n default: 'bottom',\n },\n\n /**\n * A method that will be called when the selection goes past the beginning of the list.\n */\n onBeginningOfList: {\n type: Function,\n default: null,\n },\n\n /**\n * A method that will be called when the selection goes past the end of the list.\n */\n onEndOfList: {\n type: Function,\n default: null,\n },\n\n /**\n * Additional class for the wrapper list element.\n */\n listClass: {\n type: [String, Array, Object],\n default: '',\n },\n\n /**\n * Sets the element to which the popover is going to append to.\n * 'body' will append to the nearest body (supports shadow DOM).\n * @values 'body', 'parent', HTMLElement,\n */\n appendTo: {\n type: [HTMLElement, String],\n default: 'body',\n validator: appendTo => {\n return POPOVER_APPEND_TO_VALUES.includes(appendTo) ||\n (appendTo instanceof HTMLElement);\n },\n },\n\n /**\n * If set to false the dialog will display over top of the anchor when there is insufficient space.\n * If set to true it will never move from its position relative to the anchor and will clip instead.\n * <a\n * class=\"d-link\"\n * href=\"https://popper.js.org/docs/v2/modifiers/prevent-overflow/#tether\"\n * target=\"_blank\"\n * >\n * Popper.js docs\n * </a>\n * @values true, false\n */\n tether: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Named transition when the content display is toggled.\n * @see DtLazyShow\n */\n transition: {\n type: String,\n default: 'fade',\n },\n },\n\n emits: [\n /**\n * Native keydown event\n *\n * @event keydown\n * @type {KeyboardEvent}\n */\n 'keydown',\n\n /**\n * Event fired when the highlight changes\n *\n * @event highlight\n * @type {Number}\n */\n 'highlight',\n\n /**\n * Event fired to sync the open prop with the parent component\n * @event update:open\n */\n 'update:open',\n\n /**\n * Event fired when dropdown is shown or hidden\n *\n * @event opened\n * @type {Boolean | Array}\n */\n 'opened',\n\n /**\n * Event fired to sync the open prop with the parent component\n * @event update:open\n */\n 'update:open',\n ],\n\n data () {\n return {\n LIST_ITEM_NAVIGATION_TYPES,\n DROPDOWN_PADDING_CLASSES,\n EVENT_KEYNAMES,\n openedWithKeyboard: false,\n isOpen: null,\n };\n },\n\n computed: {\n dropdownListeners () {\n return {\n opened: isPopoverOpen => {\n this.updateInitialHighlightIndex(isPopoverOpen);\n },\n\n keydown: event => {\n const eventCode = event.code;\n\n switch (eventCode) {\n case EVENT_KEYNAMES.up:\n case EVENT_KEYNAMES.arrowup:\n this.onUpKeyPress(event);\n event.stopPropagation();\n event.preventDefault();\n break;\n case EVENT_KEYNAMES.down:\n case EVENT_KEYNAMES.arrowdown:\n this.onDownKeyPress(event);\n event.stopPropagation();\n event.preventDefault();\n break;\n case EVENT_KEYNAMES.space:\n case EVENT_KEYNAMES.spacebar:\n this.onSpaceKey();\n break;\n case EVENT_KEYNAMES.enter:\n this.onEnterKey();\n break;\n case EVENT_KEYNAMES.home:\n this.onHomeKeyPress(event);\n event.stopPropagation();\n event.preventDefault();\n break;\n case EVENT_KEYNAMES.end:\n this.onEndKeyPress(event);\n event.stopPropagation();\n event.preventDefault();\n break;\n default:\n this.onKeyPress(event);\n break;\n }\n\n this.$emit('keydown', event);\n },\n };\n },\n\n beginningOfListMethod () {\n return this.onBeginningOfList || this.jumpToEnd;\n },\n\n endOfListMethod () {\n return this.onEndOfList || this.jumpToBeginning;\n },\n\n activeItemEl () {\n return this.getListElement().querySelector('#' + this.highlightId);\n },\n\n isArrowKeyNav () {\n return this.navigationType === this.LIST_ITEM_NAVIGATION_TYPES.ARROW_KEYS;\n },\n\n listClasses () {\n return [\n 'd-dropdown-list',\n DROPDOWN_PADDING_CLASSES[this.padding],\n this.listClass,\n { 'd-context-menu-list': this.openOnContext },\n ];\n },\n\n shouldOpenWithArrowKeys () {\n return !this.openOnContext;\n },\n },\n\n methods: {\n onMouseHighlight (e) {\n const liElement = e.target.closest('li');\n\n if (liElement && liElement.role && this.highlightId !== liElement.id) {\n this.setHighlightId(liElement.id);\n liElement.focus();\n }\n },\n\n getListElement () {\n return this.$refs.listWrapper;\n },\n\n clearHighlightIndex () {\n this.setHighlightIndex(-1);\n },\n\n afterHighlight () {\n if (this.visuallyHiddenClose && this.highlightIndex === this._itemsLength() - 1) {\n return;\n }\n\n this.$emit('highlight', this.highlightIndex);\n },\n\n updateInitialHighlightIndex (isPopoverOpen) {\n this.isOpen = isPopoverOpen;\n\n if (isPopoverOpen) {\n if (this.openedWithKeyboard && this.isArrowKeyNav) {\n this.setHighlightIndex(0);\n }\n this.$emit('opened', true);\n } else {\n this.clearHighlightIndex();\n this.openedWithKeyboard = false;\n this.$emit('opened', false);\n }\n },\n\n onSpaceKey () {\n if (!this.open) {\n this.openedWithKeyboard = true;\n }\n },\n\n onEnterKey () {\n if (!this.open) {\n this.openedWithKeyboard = true;\n }\n },\n\n onUpKeyPress () {\n if (!this.isOpen) {\n this.openedWithKeyboard = true;\n return;\n }\n if (this.isArrowKeyNav) {\n return this.onUpKey();\n }\n },\n\n onDownKeyPress () {\n if (!this.isOpen) {\n this.openedWithKeyboard = true;\n return;\n }\n if (this.isArrowKeyNav) {\n return this.onDownKey();\n }\n },\n\n onHomeKeyPress () {\n if (!this.isOpen || !this.isArrowKeyNav) {\n return;\n }\n\n return this.onHomeKey();\n },\n\n onEndKeyPress () {\n if (!this.isOpen || !this.isArrowKeyNav) {\n return;\n }\n\n return this.onEndKey();\n },\n\n onKeyPress (e) {\n if (!this.isOpen || !this.isArrowKeyNav || !this.isValidLetter(e.key)) {\n return;\n }\n\n e.stopPropagation();\n e.preventDefault();\n\n return this.onNavigationKey(e.key);\n },\n },\n};\n</script>\n"],"names":["DtPopover","SrOnlyCloseButton","KeyboardNavigation","SrOnlyCloseButtonMixin","DROPDOWN_PADDING_CLASSES","getUniqueString","LIST_ITEM_NAVIGATION_TYPES","POPOVER_APPEND_TO_VALUES","EVENT_KEYNAMES","_openBlock","_createBlock","_mergeProps","_toHandlers","_withCtx","_renderSlot","_createElementVNode","_normalizeClass","_createCommentVNode"],"mappings":";;;;;;;;;;;;;AAmEA,MAAK,YAAU;AAAA,EACb,cAAc,EAAE,MAAM,EAAG;AAAA,EACzB,MAAM;AAAA,EAEN,YAAY;AAAA,IACV,WAAAA,QAAS;AAAA,IACT,mBAAAC,qBAAiB;AAAA,EAClB;AAAA,EAED,QAAQ;AAAA,IACNC,iCAAmB;AAAA,MACjB,UAAU;AAAA,MACV,OAAO;AAAA,MACP,gBAAgB;AAAA,MAChB,cAAc;AAAA,MACd,sBAAsB;AAAA,MACtB,uBAAuB;AAAA,MACvB,iBAAiB;AAAA,MACjB,eAAe;AAAA,MACf,2BAA2B;AAAA,IAC7B,CAAC;AAAA,IACDC,uBAAsB;AAAA,EACvB;AAAA,EAED,cAAc;AAAA,EAEd,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAML,MAAM;AAAA,MACJ,MAAM;AAAA,MACN,SAAS;AAAA,IACV;AAAA;AAAA;AAAA;AAAA;AAAA,IAMD,eAAe;AAAA,MACb,MAAM;AAAA,MACN,SAAS;AAAA,IACV;AAAA;AAAA;AAAA;AAAA;AAAA,IAMD,SAAS;AAAA,MACP,MAAM;AAAA,MACN,SAAS;AAAA,MACT,WAAW,CAAC,YAAY;AACtB,eAAO,OAAO,KAAKC,2CAAwB,EAAE,KAAK,CAAC,SAAS,SAAS,OAAO;AAAA,MAC7E;AAAA,IACF;AAAA;AAAA;AAAA;AAAA;AAAA,IAMD,OAAO;AAAA,MACL,MAAM;AAAA,MACN,SAAS;AAAA,IACV;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOD,cAAc;AAAA,MACZ,MAAM;AAAA,MACN,SAAS;AAAA,IACV;AAAA;AAAA;AAAA;AAAA;AAAA,IAMD,WAAW;AAAA,MACT,MAAM;AAAA,MACN,SAAS;AAAA,IACV;AAAA;AAAA;AAAA;AAAA;AAAA,IAMD,UAAU;AAAA,MACR,MAAM;AAAA,MACN,SAAS;AAAA,IACV;AAAA;AAAA;AAAA;AAAA;AAAA,IAMD,QAAQ;AAAA,MACN,MAAM;AAAA,MACN,UAAW;AAAE,eAAOC,aAAe,gBAAA;AAAA,MAAK;AAAA,IACzC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IASD,gBAAgB;AAAA,MACd,MAAM;AAAA,MACN,SAASC,oBAA0B,2BAAC;AAAA,MACpC,WAAW,CAAC,MAAM,OAAO,OAAOA,8CAA0B,EAAE,SAAS,CAAC;AAAA,IACvE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAYD,oBAAoB;AAAA,MAClB,MAAM;AAAA,MACN,SAAS,MAAM;AACb,eAAO,CAAC,MAAM;AAAA,MACf;AAAA,IACF;AAAA;AAAA;AAAA;AAAA,IAKD,WAAW;AAAA,MACT,MAAM;AAAA,MACN,SAAS;AAAA,IACV;AAAA;AAAA;AAAA;AAAA,IAKD,mBAAmB;AAAA,MACjB,MAAM;AAAA,MACN,SAAS;AAAA,IACV;AAAA;AAAA;AAAA;AAAA,IAKD,aAAa;AAAA,MACX,MAAM;AAAA,MACN,SAAS;AAAA,IACV;AAAA;AAAA;AAAA;AAAA,IAKD,WAAW;AAAA,MACT,MAAM,CAAC,QAAQ,OAAO,MAAM;AAAA,MAC5B,SAAS;AAAA,IACV;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOD,UAAU;AAAA,MACR,MAAM,CAAC,aAAa,MAAM;AAAA,MAC1B,SAAS;AAAA,MACT,WAAW,cAAY;AACrB,eAAOC,kBAAwB,yBAAC,SAAS,QAAQ,KAC5C,oBAAoB;AAAA,MAC1B;AAAA,IACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAcD,QAAQ;AAAA,MACN,MAAM;AAAA,MACN,SAAS;AAAA,IACV;AAAA;AAAA;AAAA;AAAA;AAAA,IAMD,YAAY;AAAA,MACV,MAAM;AAAA,MACN,SAAS;AAAA,IACV;AAAA,EACF;AAAA,EAED,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOL;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAQA;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAQA;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA;AAAA,EACD;AAAA,EAED,OAAQ;AACN,WAAO;AAAA,kCACLD,oBAA0B;AAAA,gCAC1BF,mBAAwB;AAAA,MACxB,gBAAAI,iBAAc;AAAA,MACd,oBAAoB;AAAA,MACpB,QAAQ;AAAA;EAEX;AAAA,EAED,UAAU;AAAA,IACR,oBAAqB;AACnB,aAAO;AAAA,QACL,QAAQ,mBAAiB;AACvB,eAAK,4BAA4B,aAAa;AAAA,QAC/C;AAAA,QAED,SAAS,WAAS;AAChB,gBAAM,YAAY,MAAM;AAExB,kBAAQ,WAAS;AAAA,YACf,KAAKA,iBAAAA,eAAe;AAAA,YACpB,KAAKA,iBAAc,eAAC;AAClB,mBAAK,aAAa,KAAK;AACvB,oBAAM,gBAAe;AACrB,oBAAM,eAAc;AACpB;AAAA,YACF,KAAKA,iBAAAA,eAAe;AAAA,YACpB,KAAKA,iBAAc,eAAC;AAClB,mBAAK,eAAe,KAAK;AACzB,oBAAM,gBAAe;AACrB,oBAAM,eAAc;AACpB;AAAA,YACF,KAAKA,iBAAAA,eAAe;AAAA,YACpB,KAAKA,iBAAc,eAAC;AAClB,mBAAK,WAAU;AACf;AAAA,YACF,KAAKA,iBAAc,eAAC;AAClB,mBAAK,WAAU;AACf;AAAA,YACF,KAAKA,iBAAc,eAAC;AAClB,mBAAK,eAAe,KAAK;AACzB,oBAAM,gBAAe;AACrB,oBAAM,eAAc;AACpB;AAAA,YACF,KAAKA,iBAAc,eAAC;AAClB,mBAAK,cAAc,KAAK;AACxB,oBAAM,gBAAe;AACrB,oBAAM,eAAc;AACpB;AAAA,YACF;AACE,mBAAK,WAAW,KAAK;AACrB;AAAA,UACJ;AAEA,eAAK,MAAM,WAAW,KAAK;AAAA,QAC5B;AAAA;IAEJ;AAAA,IAED,wBAAyB;AACvB,aAAO,KAAK,qBAAqB,KAAK;AAAA,IACvC;AAAA,IAED,kBAAmB;AACjB,aAAO,KAAK,eAAe,KAAK;AAAA,IACjC;AAAA,IAED,eAAgB;AACd,aAAO,KAAK,iBAAiB,cAAc,MAAM,KAAK,WAAW;AAAA,IAClE;AAAA,IAED,gBAAiB;AACf,aAAO,KAAK,mBAAmB,KAAK,2BAA2B;AAAA,IAChE;AAAA,IAED,cAAe;AACb,aAAO;AAAA,QACL;AAAA,QACAJ,mBAAwB,yBAAC,KAAK,OAAO;AAAA,QACrC,KAAK;AAAA,QACL,EAAE,uBAAuB,KAAK,cAAe;AAAA;IAEhD;AAAA,IAED,0BAA2B;AACzB,aAAO,CAAC,KAAK;AAAA,IACd;AAAA,EACF;AAAA,EAED,SAAS;AAAA,IACP,iBAAkB,GAAG;AACnB,YAAM,YAAY,EAAE,OAAO,QAAQ,IAAI;AAEvC,UAAI,aAAa,UAAU,QAAQ,KAAK,gBAAgB,UAAU,IAAI;AACpE,aAAK,eAAe,UAAU,EAAE;AAChC,kBAAU,MAAK;AAAA,MACjB;AAAA,IACD;AAAA,IAED,iBAAkB;AAChB,aAAO,KAAK,MAAM;AAAA,IACnB;AAAA,IAED,sBAAuB;AACrB,WAAK,kBAAkB,EAAE;AAAA,IAC1B;AAAA,IAED,iBAAkB;AAChB,UAAI,KAAK,uBAAuB,KAAK,mBAAmB,KAAK,aAAe,IAAE,GAAG;AAC/E;AAAA,MACF;AAEA,WAAK,MAAM,aAAa,KAAK,cAAc;AAAA,IAC5C;AAAA,IAED,4BAA6B,eAAe;AAC1C,WAAK,SAAS;AAEd,UAAI,eAAe;AACjB,YAAI,KAAK,sBAAsB,KAAK,eAAe;AACjD,eAAK,kBAAkB,CAAC;AAAA,QAC1B;AACA,aAAK,MAAM,UAAU,IAAI;AAAA,aACpB;AACL,aAAK,oBAAmB;AACxB,aAAK,qBAAqB;AAC1B,aAAK,MAAM,UAAU,KAAK;AAAA,MAC5B;AAAA,IACD;AAAA,IAED,aAAc;AACZ,UAAI,CAAC,KAAK,MAAM;AACd,aAAK,qBAAqB;AAAA,MAC5B;AAAA,IACD;AAAA,IAED,aAAc;AACZ,UAAI,CAAC,KAAK,MAAM;AACd,aAAK,qBAAqB;AAAA,MAC5B;AAAA,IACD;AAAA,IAED,eAAgB;AACd,UAAI,CAAC,KAAK,QAAQ;AAChB,aAAK,qBAAqB;AAC1B;AAAA,MACF;AACA,UAAI,KAAK,eAAe;AACtB,eAAO,KAAK;MACd;AAAA,IACD;AAAA,IAED,iBAAkB;AAChB,UAAI,CAAC,KAAK,QAAQ;AAChB,aAAK,qBAAqB;AAC1B;AAAA,MACF;AACA,UAAI,KAAK,eAAe;AACtB,eAAO,KAAK;MACd;AAAA,IACD;AAAA,IAED,iBAAkB;AAChB,UAAI,CAAC,KAAK,UAAU,CAAC,KAAK,eAAe;AACvC;AAAA,MACF;AAEA,aAAO,KAAK;IACb;AAAA,IAED,gBAAiB;AACf,UAAI,CAAC,KAAK,UAAU,CAAC,KAAK,eAAe;AACvC;AAAA,MACF;AAEA,aAAO,KAAK;IACb;AAAA,IAED,WAAY,GAAG;AACb,UAAI,CAAC,KAAK,UAAU,CAAC,KAAK,iBAAiB,CAAC,KAAK,cAAc,EAAE,GAAG,GAAG;AACrE;AAAA,MACF;AAEA,QAAE,gBAAe;AACjB,QAAE,eAAc;AAEhB,aAAO,KAAK,gBAAgB,EAAE,GAAG;AAAA,IAClC;AAAA,EACF;AACH;AAtfA,MAAA,aAAA,CAAA,IAAA;;;;AAEE,SAAAK,cAAA,GAAAC,gBAoDa,uBApDbC,IAAAA,WAoDa;AAAA,IAnDX,KAAI;AAAA,IACH,iBAAe,OAAY;AAAA,IAC3B,MAAM,OAAI;AAAA,IACV,WAAW,OAAS;AAAA,IACpB,yBAAuB,MAAkB,qBAAA,UAAA;AAAA,IACzC,uBAAqB,OAAkB;AAAA,IACxC,SAAQ;AAAA,IACR,MAAK;AAAA,IACJ,aAAW,OAAQ;AAAA,IACnB,OAAO,OAAK;AAAA,IACZ,cAAY,OAAS;AAAA,IACrB,aAAW,OAAQ;AAAA,IACnB,wBAAsB,SAAuB;AAAA,IAC7C,mBAAiB,OAAa;AAAA,KACvB,KAAM,QAAA;AAAA,IACb,QAAQ,OAAM;AAAA,IACd,YAAY,OAAU;AAAA,EACvB,GAAAC,eAAwB,SAAD,iBAAA,CAAA,GAAA;AAAA,IAEZ,QAAMC,IAAA,QAEf,CAIE,EANiB,YAAK;AAAA,MAExBC,eAIE,uBAJFH,IAAAA,WAIE,EAHA,KAAI,YAEI,KAAK,CAAA;AAAA;IAGN,SAAOE,IAAA,QAGhB,CAmBK,EAtBe,YAAK;AAAA,MAGzBE,IAAAA,mBAmBK,MAAA;AAAA,QAlBF,IAAI,OAAM;AAAA,QACX,KAAI;AAAA,QACH,OApCTC,IAAAA,eAoCgB,SAAW,WAAA;AAAA,QACnB,WAAQ;AAAA,QACP,qDAAY,SAAmB,uBAAA,SAAA,oBAAA,GAAA,IAAA;AAAA,QAtCxC,oBAAA,OAAA,CAAA,MAAA,OAAA,CAAA,IAAA,IAAA,SAuC4B,SAAgB,oBAAA,SAAA,iBAAA,GAAA,IAAA;AAAA;QAGpCF,IAGE,WAAA,KAAA,QAAA,QAAA,EADC,OAAY;AAAA,QAGP,KAAuB,4CAD/BJ,IAKE,YAAA,iCAAA;AAAA,UAnDV,KAAA;AAAA,UAgDW,+BAA6B,KAAwB;AAAA,UACrD,UAAU,SAAa,gBAAA,KAAA;AAAA,UACvB,SAAO;AAAA,+EAlDlBO,IAAA,mBAAA,IAAA,IAAA;AAAA,MAAA,GAAA,IAAA,UAAA;AAAA;IAAA,GAAA;AAAA;;;;"}
|
|
@@ -10,6 +10,7 @@ import DtPopover from "../popover/popover.vue.js";
|
|
|
10
10
|
import { LIST_ITEM_NAVIGATION_TYPES } from "../list_item/list_item_constants.js";
|
|
11
11
|
import { POPOVER_APPEND_TO_VALUES } from "../popover/popover_constants.js";
|
|
12
12
|
const _sfc_main = {
|
|
13
|
+
compatConfig: { MODE: 3 },
|
|
13
14
|
name: "DtDropdown",
|
|
14
15
|
components: {
|
|
15
16
|
DtPopover,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dropdown.vue.js","sources":["../../../components/dropdown/dropdown.vue"],"sourcesContent":["<!-- eslint-disable max-lines -->\n<template>\n <dt-popover\n ref=\"popover\"\n :content-width=\"contentWidth\"\n :open=\"open\"\n :placement=\"placement\"\n :initial-focus-element=\"openedWithKeyboard ? 'first' : 'dialog'\"\n :fallback-placements=\"fallbackPlacements\"\n padding=\"none\"\n role=\"menu\"\n :append-to=\"appendTo\"\n :modal=\"modal\"\n :max-height=\"maxHeight\"\n :max-width=\"maxWidth\"\n :open-with-arrow-keys=\"shouldOpenWithArrowKeys\"\n :open-on-context=\"openOnContext\"\n v-bind=\"$attrs\"\n :tether=\"tether\"\n :transition=\"transition\"\n v-on=\"dropdownListeners\"\n >\n <template #anchor=\"{ attrs }\">\n <!-- @slot Anchor element that activates the dropdown -->\n <slot\n ref=\"anchor\"\n name=\"anchor\"\n v-bind=\"attrs\"\n />\n </template>\n <template #content=\"{ close }\">\n <!-- eslint-disable-next-line max-len -->\n <!-- eslint-disable-next-line vuejs-accessibility/mouse-events-have-key-events vuejs-accessibility/no-static-element-interactions -->\n <ul\n :id=\"listId\"\n ref=\"listWrapper\"\n :class=\"listClasses\"\n data-qa=\"dt-dropdown-list-wrapper\"\n @mouseleave=\"clearHighlightIndex\"\n @mousemove.capture=\"onMouseHighlight\"\n >\n <!-- @slot Slot for the list component -->\n <slot\n name=\"list\"\n :close=\"close\"\n />\n <sr-only-close-button\n v-if=\"showVisuallyHiddenClose\"\n :visually-hidden-close-label=\"visuallyHiddenCloseLabel\"\n :tabindex=\"isArrowKeyNav ? -1 : 0\"\n @close=\"close\"\n />\n </ul>\n </template>\n </dt-popover>\n</template>\n\n<script>\nimport KeyboardNavigation from '@/common/mixins/keyboard_list_navigation';\nimport { DtPopover, POPOVER_APPEND_TO_VALUES } from '@/components/popover';\nimport { LIST_ITEM_NAVIGATION_TYPES } from '@/components/list_item';\nimport { DROPDOWN_PADDING_CLASSES } from './dropdown_constants';\nimport { getUniqueString } from '@/common/utils';\nimport { EVENT_KEYNAMES } from '@/common/constants';\nimport SrOnlyCloseButtonMixin from '@/common/mixins/sr_only_close_button';\nimport SrOnlyCloseButton from '@/common/sr_only_close_button.vue';\n\nexport default {\n name: 'DtDropdown',\n\n components: {\n DtPopover,\n SrOnlyCloseButton,\n },\n\n mixins: [\n KeyboardNavigation({\n indexKey: 'highlightIndex',\n idKey: 'highlightId',\n listElementKey: 'getListElement',\n listItemRole: 'menuitem',\n afterHighlightMethod: 'afterHighlight',\n beginningOfListMethod: 'beginningOfListMethod',\n endOfListMethod: 'endOfListMethod',\n activeItemKey: 'activeItemEl',\n focusOnKeyboardNavigation: true,\n }),\n SrOnlyCloseButtonMixin,\n ],\n\n inheritAttrs: false,\n\n props: {\n /**\n * Controls whether the dropdown is shown. Leaving this null will have the dropdown trigger on click by default.\n * If you set this value, the default trigger behavior will be disabled and you can control it as you need.\n * Supports v-model\n */\n open: {\n type: Boolean,\n default: null,\n },\n\n /**\n * Opens the dropdown on right click (context menu). If you set this value to `true`,\n * the default trigger behavior will be disabled.\n */\n openOnContext: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Vertical padding size around the list element.\n * @values none, small, large\n */\n padding: {\n type: String,\n default: 'small',\n validator: (padding) => {\n return Object.keys(DROPDOWN_PADDING_CLASSES).some((item) => item === padding);\n },\n },\n\n /**\n * Determines modal state, dropdown has a modal overlay preventing interaction with elements\n * below it, but it is invisible.\n */\n modal: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Width configuration for the popover content. When its value is 'anchor',\n * the popover content will have the same width as the anchor.\n * @values null, anchor\n */\n contentWidth: {\n type: String,\n default: null,\n },\n\n /**\n * Determines maximum height for the popover before overflow.\n * Possible units rem|px|em\n */\n maxHeight: {\n type: String,\n default: '',\n },\n\n /**\n * Determines maximum width for the popover before overflow.\n * Possible units rem|px|%|em\n */\n maxWidth: {\n type: String,\n default: '',\n },\n\n /**\n * Sets an ID on the list element of the component. Used by several aria attributes\n * as well as when deriving the IDs for each item.\n */\n listId: {\n type: String,\n default () { return getUniqueString(); },\n },\n\n /**\n * The type of navigation that this component should support.\n * - \"arrow-keys\" for items that are navigated with UP/DOWN keys.\n * - \"tab\" for items that are navigated using the TAB key.\n * - \"none\" for static items that are not interactive.\n * @values arrow-keys, tab, none\n */\n navigationType: {\n type: String,\n default: LIST_ITEM_NAVIGATION_TYPES.ARROW_KEYS,\n validator: (t) => Object.values(LIST_ITEM_NAVIGATION_TYPES).includes(t),\n },\n\n /**\n * If the dropdown does not fit in the direction described by \"placement\",\n * it will attempt to change it's direction to the \"fallbackPlacements\".\n *\n * @values top, top-start, top-end,\n * right, right-start, right-end,\n * left, left-start, left-end,\n * bottom, bottom-start, bottom-end,\n * auto, auto-start, auto-end\n * */\n fallbackPlacements: {\n type: Array,\n default: () => {\n return ['auto'];\n },\n },\n\n /**\n * The direction the dropdown displays relative to the anchor.\n */\n placement: {\n type: String,\n default: 'bottom',\n },\n\n /**\n * A method that will be called when the selection goes past the beginning of the list.\n */\n onBeginningOfList: {\n type: Function,\n default: null,\n },\n\n /**\n * A method that will be called when the selection goes past the end of the list.\n */\n onEndOfList: {\n type: Function,\n default: null,\n },\n\n /**\n * Additional class for the wrapper list element.\n */\n listClass: {\n type: [String, Array, Object],\n default: '',\n },\n\n /**\n * Sets the element to which the popover is going to append to.\n * 'body' will append to the nearest body (supports shadow DOM).\n * @values 'body', 'parent', HTMLElement,\n */\n appendTo: {\n type: [HTMLElement, String],\n default: 'body',\n validator: appendTo => {\n return POPOVER_APPEND_TO_VALUES.includes(appendTo) ||\n (appendTo instanceof HTMLElement);\n },\n },\n\n /**\n * If set to false the dialog will display over top of the anchor when there is insufficient space.\n * If set to true it will never move from its position relative to the anchor and will clip instead.\n * <a\n * class=\"d-link\"\n * href=\"https://popper.js.org/docs/v2/modifiers/prevent-overflow/#tether\"\n * target=\"_blank\"\n * >\n * Popper.js docs\n * </a>\n * @values true, false\n */\n tether: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Named transition when the content display is toggled.\n * @see DtLazyShow\n */\n transition: {\n type: String,\n default: 'fade',\n },\n },\n\n emits: [\n /**\n * Native keydown event\n *\n * @event keydown\n * @type {KeyboardEvent}\n */\n 'keydown',\n\n /**\n * Event fired when the highlight changes\n *\n * @event highlight\n * @type {Number}\n */\n 'highlight',\n\n /**\n * Event fired to sync the open prop with the parent component\n * @event update:open\n */\n 'update:open',\n\n /**\n * Event fired when dropdown is shown or hidden\n *\n * @event opened\n * @type {Boolean | Array}\n */\n 'opened',\n\n /**\n * Event fired to sync the open prop with the parent component\n * @event update:open\n */\n 'update:open',\n ],\n\n data () {\n return {\n LIST_ITEM_NAVIGATION_TYPES,\n DROPDOWN_PADDING_CLASSES,\n EVENT_KEYNAMES,\n openedWithKeyboard: false,\n isOpen: null,\n };\n },\n\n computed: {\n dropdownListeners () {\n return {\n opened: isPopoverOpen => {\n this.updateInitialHighlightIndex(isPopoverOpen);\n },\n\n keydown: event => {\n const eventCode = event.code;\n\n switch (eventCode) {\n case EVENT_KEYNAMES.up:\n case EVENT_KEYNAMES.arrowup:\n this.onUpKeyPress(event);\n event.stopPropagation();\n event.preventDefault();\n break;\n case EVENT_KEYNAMES.down:\n case EVENT_KEYNAMES.arrowdown:\n this.onDownKeyPress(event);\n event.stopPropagation();\n event.preventDefault();\n break;\n case EVENT_KEYNAMES.space:\n case EVENT_KEYNAMES.spacebar:\n this.onSpaceKey();\n break;\n case EVENT_KEYNAMES.enter:\n this.onEnterKey();\n break;\n case EVENT_KEYNAMES.home:\n this.onHomeKeyPress(event);\n event.stopPropagation();\n event.preventDefault();\n break;\n case EVENT_KEYNAMES.end:\n this.onEndKeyPress(event);\n event.stopPropagation();\n event.preventDefault();\n break;\n default:\n this.onKeyPress(event);\n break;\n }\n\n this.$emit('keydown', event);\n },\n };\n },\n\n beginningOfListMethod () {\n return this.onBeginningOfList || this.jumpToEnd;\n },\n\n endOfListMethod () {\n return this.onEndOfList || this.jumpToBeginning;\n },\n\n activeItemEl () {\n return this.getListElement().querySelector('#' + this.highlightId);\n },\n\n isArrowKeyNav () {\n return this.navigationType === this.LIST_ITEM_NAVIGATION_TYPES.ARROW_KEYS;\n },\n\n listClasses () {\n return [\n 'd-dropdown-list',\n DROPDOWN_PADDING_CLASSES[this.padding],\n this.listClass,\n { 'd-context-menu-list': this.openOnContext },\n ];\n },\n\n shouldOpenWithArrowKeys () {\n return !this.openOnContext;\n },\n },\n\n methods: {\n onMouseHighlight (e) {\n const liElement = e.target.closest('li');\n\n if (liElement && liElement.role && this.highlightId !== liElement.id) {\n this.setHighlightId(liElement.id);\n liElement.focus();\n }\n },\n\n getListElement () {\n return this.$refs.listWrapper;\n },\n\n clearHighlightIndex () {\n this.setHighlightIndex(-1);\n },\n\n afterHighlight () {\n if (this.visuallyHiddenClose && this.highlightIndex === this._itemsLength() - 1) {\n return;\n }\n\n this.$emit('highlight', this.highlightIndex);\n },\n\n updateInitialHighlightIndex (isPopoverOpen) {\n this.isOpen = isPopoverOpen;\n\n if (isPopoverOpen) {\n if (this.openedWithKeyboard && this.isArrowKeyNav) {\n this.setHighlightIndex(0);\n }\n this.$emit('opened', true);\n } else {\n this.clearHighlightIndex();\n this.openedWithKeyboard = false;\n this.$emit('opened', false);\n }\n },\n\n onSpaceKey () {\n if (!this.open) {\n this.openedWithKeyboard = true;\n }\n },\n\n onEnterKey () {\n if (!this.open) {\n this.openedWithKeyboard = true;\n }\n },\n\n onUpKeyPress () {\n if (!this.isOpen) {\n this.openedWithKeyboard = true;\n return;\n }\n if (this.isArrowKeyNav) {\n return this.onUpKey();\n }\n },\n\n onDownKeyPress () {\n if (!this.isOpen) {\n this.openedWithKeyboard = true;\n return;\n }\n if (this.isArrowKeyNav) {\n return this.onDownKey();\n }\n },\n\n onHomeKeyPress () {\n if (!this.isOpen || !this.isArrowKeyNav) {\n return;\n }\n\n return this.onHomeKey();\n },\n\n onEndKeyPress () {\n if (!this.isOpen || !this.isArrowKeyNav) {\n return;\n }\n\n return this.onEndKey();\n },\n\n onKeyPress (e) {\n if (!this.isOpen || !this.isArrowKeyNav || !this.isValidLetter(e.key)) {\n return;\n }\n\n e.stopPropagation();\n e.preventDefault();\n\n return this.onNavigationKey(e.key);\n },\n },\n};\n</script>\n"],"names":["_openBlock","_createBlock","_mergeProps","_toHandlers","_withCtx","_renderSlot","_createElementVNode","_normalizeClass","_createCommentVNode"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"dropdown.vue.js","sources":["../../../components/dropdown/dropdown.vue"],"sourcesContent":["<!-- eslint-disable max-lines -->\n<template>\n <dt-popover\n ref=\"popover\"\n :content-width=\"contentWidth\"\n :open=\"open\"\n :placement=\"placement\"\n :initial-focus-element=\"openedWithKeyboard ? 'first' : 'dialog'\"\n :fallback-placements=\"fallbackPlacements\"\n padding=\"none\"\n role=\"menu\"\n :append-to=\"appendTo\"\n :modal=\"modal\"\n :max-height=\"maxHeight\"\n :max-width=\"maxWidth\"\n :open-with-arrow-keys=\"shouldOpenWithArrowKeys\"\n :open-on-context=\"openOnContext\"\n v-bind=\"$attrs\"\n :tether=\"tether\"\n :transition=\"transition\"\n v-on=\"dropdownListeners\"\n >\n <template #anchor=\"{ attrs }\">\n <!-- @slot Anchor element that activates the dropdown -->\n <slot\n ref=\"anchor\"\n name=\"anchor\"\n v-bind=\"attrs\"\n />\n </template>\n <template #content=\"{ close }\">\n <!-- eslint-disable-next-line max-len -->\n <!-- eslint-disable-next-line vuejs-accessibility/mouse-events-have-key-events vuejs-accessibility/no-static-element-interactions -->\n <ul\n :id=\"listId\"\n ref=\"listWrapper\"\n :class=\"listClasses\"\n data-qa=\"dt-dropdown-list-wrapper\"\n @mouseleave=\"clearHighlightIndex\"\n @mousemove.capture=\"onMouseHighlight\"\n >\n <!-- @slot Slot for the list component -->\n <slot\n name=\"list\"\n :close=\"close\"\n />\n <sr-only-close-button\n v-if=\"showVisuallyHiddenClose\"\n :visually-hidden-close-label=\"visuallyHiddenCloseLabel\"\n :tabindex=\"isArrowKeyNav ? -1 : 0\"\n @close=\"close\"\n />\n </ul>\n </template>\n </dt-popover>\n</template>\n\n<script>\nimport KeyboardNavigation from '@/common/mixins/keyboard_list_navigation';\nimport { DtPopover, POPOVER_APPEND_TO_VALUES } from '@/components/popover';\nimport { LIST_ITEM_NAVIGATION_TYPES } from '@/components/list_item';\nimport { DROPDOWN_PADDING_CLASSES } from './dropdown_constants';\nimport { getUniqueString } from '@/common/utils';\nimport { EVENT_KEYNAMES } from '@/common/constants';\nimport SrOnlyCloseButtonMixin from '@/common/mixins/sr_only_close_button';\nimport SrOnlyCloseButton from '@/common/sr_only_close_button.vue';\n\nexport default {\n compatConfig: { MODE: 3 },\n name: 'DtDropdown',\n\n components: {\n DtPopover,\n SrOnlyCloseButton,\n },\n\n mixins: [\n KeyboardNavigation({\n indexKey: 'highlightIndex',\n idKey: 'highlightId',\n listElementKey: 'getListElement',\n listItemRole: 'menuitem',\n afterHighlightMethod: 'afterHighlight',\n beginningOfListMethod: 'beginningOfListMethod',\n endOfListMethod: 'endOfListMethod',\n activeItemKey: 'activeItemEl',\n focusOnKeyboardNavigation: true,\n }),\n SrOnlyCloseButtonMixin,\n ],\n\n inheritAttrs: false,\n\n props: {\n /**\n * Controls whether the dropdown is shown. Leaving this null will have the dropdown trigger on click by default.\n * If you set this value, the default trigger behavior will be disabled and you can control it as you need.\n * Supports v-model\n */\n open: {\n type: Boolean,\n default: null,\n },\n\n /**\n * Opens the dropdown on right click (context menu). If you set this value to `true`,\n * the default trigger behavior will be disabled.\n */\n openOnContext: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Vertical padding size around the list element.\n * @values none, small, large\n */\n padding: {\n type: String,\n default: 'small',\n validator: (padding) => {\n return Object.keys(DROPDOWN_PADDING_CLASSES).some((item) => item === padding);\n },\n },\n\n /**\n * Determines modal state, dropdown has a modal overlay preventing interaction with elements\n * below it, but it is invisible.\n */\n modal: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Width configuration for the popover content. When its value is 'anchor',\n * the popover content will have the same width as the anchor.\n * @values null, anchor\n */\n contentWidth: {\n type: String,\n default: null,\n },\n\n /**\n * Determines maximum height for the popover before overflow.\n * Possible units rem|px|em\n */\n maxHeight: {\n type: String,\n default: '',\n },\n\n /**\n * Determines maximum width for the popover before overflow.\n * Possible units rem|px|%|em\n */\n maxWidth: {\n type: String,\n default: '',\n },\n\n /**\n * Sets an ID on the list element of the component. Used by several aria attributes\n * as well as when deriving the IDs for each item.\n */\n listId: {\n type: String,\n default () { return getUniqueString(); },\n },\n\n /**\n * The type of navigation that this component should support.\n * - \"arrow-keys\" for items that are navigated with UP/DOWN keys.\n * - \"tab\" for items that are navigated using the TAB key.\n * - \"none\" for static items that are not interactive.\n * @values arrow-keys, tab, none\n */\n navigationType: {\n type: String,\n default: LIST_ITEM_NAVIGATION_TYPES.ARROW_KEYS,\n validator: (t) => Object.values(LIST_ITEM_NAVIGATION_TYPES).includes(t),\n },\n\n /**\n * If the dropdown does not fit in the direction described by \"placement\",\n * it will attempt to change it's direction to the \"fallbackPlacements\".\n *\n * @values top, top-start, top-end,\n * right, right-start, right-end,\n * left, left-start, left-end,\n * bottom, bottom-start, bottom-end,\n * auto, auto-start, auto-end\n * */\n fallbackPlacements: {\n type: Array,\n default: () => {\n return ['auto'];\n },\n },\n\n /**\n * The direction the dropdown displays relative to the anchor.\n */\n placement: {\n type: String,\n default: 'bottom',\n },\n\n /**\n * A method that will be called when the selection goes past the beginning of the list.\n */\n onBeginningOfList: {\n type: Function,\n default: null,\n },\n\n /**\n * A method that will be called when the selection goes past the end of the list.\n */\n onEndOfList: {\n type: Function,\n default: null,\n },\n\n /**\n * Additional class for the wrapper list element.\n */\n listClass: {\n type: [String, Array, Object],\n default: '',\n },\n\n /**\n * Sets the element to which the popover is going to append to.\n * 'body' will append to the nearest body (supports shadow DOM).\n * @values 'body', 'parent', HTMLElement,\n */\n appendTo: {\n type: [HTMLElement, String],\n default: 'body',\n validator: appendTo => {\n return POPOVER_APPEND_TO_VALUES.includes(appendTo) ||\n (appendTo instanceof HTMLElement);\n },\n },\n\n /**\n * If set to false the dialog will display over top of the anchor when there is insufficient space.\n * If set to true it will never move from its position relative to the anchor and will clip instead.\n * <a\n * class=\"d-link\"\n * href=\"https://popper.js.org/docs/v2/modifiers/prevent-overflow/#tether\"\n * target=\"_blank\"\n * >\n * Popper.js docs\n * </a>\n * @values true, false\n */\n tether: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Named transition when the content display is toggled.\n * @see DtLazyShow\n */\n transition: {\n type: String,\n default: 'fade',\n },\n },\n\n emits: [\n /**\n * Native keydown event\n *\n * @event keydown\n * @type {KeyboardEvent}\n */\n 'keydown',\n\n /**\n * Event fired when the highlight changes\n *\n * @event highlight\n * @type {Number}\n */\n 'highlight',\n\n /**\n * Event fired to sync the open prop with the parent component\n * @event update:open\n */\n 'update:open',\n\n /**\n * Event fired when dropdown is shown or hidden\n *\n * @event opened\n * @type {Boolean | Array}\n */\n 'opened',\n\n /**\n * Event fired to sync the open prop with the parent component\n * @event update:open\n */\n 'update:open',\n ],\n\n data () {\n return {\n LIST_ITEM_NAVIGATION_TYPES,\n DROPDOWN_PADDING_CLASSES,\n EVENT_KEYNAMES,\n openedWithKeyboard: false,\n isOpen: null,\n };\n },\n\n computed: {\n dropdownListeners () {\n return {\n opened: isPopoverOpen => {\n this.updateInitialHighlightIndex(isPopoverOpen);\n },\n\n keydown: event => {\n const eventCode = event.code;\n\n switch (eventCode) {\n case EVENT_KEYNAMES.up:\n case EVENT_KEYNAMES.arrowup:\n this.onUpKeyPress(event);\n event.stopPropagation();\n event.preventDefault();\n break;\n case EVENT_KEYNAMES.down:\n case EVENT_KEYNAMES.arrowdown:\n this.onDownKeyPress(event);\n event.stopPropagation();\n event.preventDefault();\n break;\n case EVENT_KEYNAMES.space:\n case EVENT_KEYNAMES.spacebar:\n this.onSpaceKey();\n break;\n case EVENT_KEYNAMES.enter:\n this.onEnterKey();\n break;\n case EVENT_KEYNAMES.home:\n this.onHomeKeyPress(event);\n event.stopPropagation();\n event.preventDefault();\n break;\n case EVENT_KEYNAMES.end:\n this.onEndKeyPress(event);\n event.stopPropagation();\n event.preventDefault();\n break;\n default:\n this.onKeyPress(event);\n break;\n }\n\n this.$emit('keydown', event);\n },\n };\n },\n\n beginningOfListMethod () {\n return this.onBeginningOfList || this.jumpToEnd;\n },\n\n endOfListMethod () {\n return this.onEndOfList || this.jumpToBeginning;\n },\n\n activeItemEl () {\n return this.getListElement().querySelector('#' + this.highlightId);\n },\n\n isArrowKeyNav () {\n return this.navigationType === this.LIST_ITEM_NAVIGATION_TYPES.ARROW_KEYS;\n },\n\n listClasses () {\n return [\n 'd-dropdown-list',\n DROPDOWN_PADDING_CLASSES[this.padding],\n this.listClass,\n { 'd-context-menu-list': this.openOnContext },\n ];\n },\n\n shouldOpenWithArrowKeys () {\n return !this.openOnContext;\n },\n },\n\n methods: {\n onMouseHighlight (e) {\n const liElement = e.target.closest('li');\n\n if (liElement && liElement.role && this.highlightId !== liElement.id) {\n this.setHighlightId(liElement.id);\n liElement.focus();\n }\n },\n\n getListElement () {\n return this.$refs.listWrapper;\n },\n\n clearHighlightIndex () {\n this.setHighlightIndex(-1);\n },\n\n afterHighlight () {\n if (this.visuallyHiddenClose && this.highlightIndex === this._itemsLength() - 1) {\n return;\n }\n\n this.$emit('highlight', this.highlightIndex);\n },\n\n updateInitialHighlightIndex (isPopoverOpen) {\n this.isOpen = isPopoverOpen;\n\n if (isPopoverOpen) {\n if (this.openedWithKeyboard && this.isArrowKeyNav) {\n this.setHighlightIndex(0);\n }\n this.$emit('opened', true);\n } else {\n this.clearHighlightIndex();\n this.openedWithKeyboard = false;\n this.$emit('opened', false);\n }\n },\n\n onSpaceKey () {\n if (!this.open) {\n this.openedWithKeyboard = true;\n }\n },\n\n onEnterKey () {\n if (!this.open) {\n this.openedWithKeyboard = true;\n }\n },\n\n onUpKeyPress () {\n if (!this.isOpen) {\n this.openedWithKeyboard = true;\n return;\n }\n if (this.isArrowKeyNav) {\n return this.onUpKey();\n }\n },\n\n onDownKeyPress () {\n if (!this.isOpen) {\n this.openedWithKeyboard = true;\n return;\n }\n if (this.isArrowKeyNav) {\n return this.onDownKey();\n }\n },\n\n onHomeKeyPress () {\n if (!this.isOpen || !this.isArrowKeyNav) {\n return;\n }\n\n return this.onHomeKey();\n },\n\n onEndKeyPress () {\n if (!this.isOpen || !this.isArrowKeyNav) {\n return;\n }\n\n return this.onEndKey();\n },\n\n onKeyPress (e) {\n if (!this.isOpen || !this.isArrowKeyNav || !this.isValidLetter(e.key)) {\n return;\n }\n\n e.stopPropagation();\n e.preventDefault();\n\n return this.onNavigationKey(e.key);\n },\n },\n};\n</script>\n"],"names":["_openBlock","_createBlock","_mergeProps","_toHandlers","_withCtx","_renderSlot","_createElementVNode","_normalizeClass","_createCommentVNode"],"mappings":"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"}
|
|
@@ -3,6 +3,7 @@ Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toString
|
|
|
3
3
|
const vue = require("vue");
|
|
4
4
|
const _pluginVue_exportHelper = require("../../_virtual/_plugin-vue_export-helper.cjs");
|
|
5
5
|
const _sfc_main = {
|
|
6
|
+
compatConfig: { MODE: 3 },
|
|
6
7
|
name: "DtDropdownSeparator"
|
|
7
8
|
};
|
|
8
9
|
const _hoisted_1 = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dropdown_separator.vue.cjs","sources":["../../../components/dropdown/dropdown_separator.vue"],"sourcesContent":["<template>\n <li\n aria-hidden=\"true\"\n class=\"d-list-item-separator\"\n />\n</template>\n\n<script>\nexport default {\n name: 'DtDropdownSeparator',\n};\n</script>\n"],"names":["_openBlock","_createElementBlock"],"mappings":";;;;AAQA,MAAK,YAAU;AAAA,EACb,MAAM;AACR;;
|
|
1
|
+
{"version":3,"file":"dropdown_separator.vue.cjs","sources":["../../../components/dropdown/dropdown_separator.vue"],"sourcesContent":["<template>\n <li\n aria-hidden=\"true\"\n class=\"d-list-item-separator\"\n />\n</template>\n\n<script>\nexport default {\n compatConfig: { MODE: 3 },\n name: 'DtDropdownSeparator',\n};\n</script>\n"],"names":["_openBlock","_createElementBlock"],"mappings":";;;;AAQA,MAAK,YAAU;AAAA,EACb,cAAc,EAAE,MAAM,EAAG;AAAA,EACzB,MAAM;AACR;;EATI,eAAY;AAAA,EACZ,OAAM;;;AAFR,SAAAA,IAAA,UAAA,GAAAC,IAAAA,mBAGE,MAHF,UAGE;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dropdown_separator.vue.js","sources":["../../../components/dropdown/dropdown_separator.vue"],"sourcesContent":["<template>\n <li\n aria-hidden=\"true\"\n class=\"d-list-item-separator\"\n />\n</template>\n\n<script>\nexport default {\n name: 'DtDropdownSeparator',\n};\n</script>\n"],"names":["_openBlock","_createElementBlock"],"mappings":";;AAQA,MAAK,YAAU;AAAA,EACb,MAAM;AACR;;
|
|
1
|
+
{"version":3,"file":"dropdown_separator.vue.js","sources":["../../../components/dropdown/dropdown_separator.vue"],"sourcesContent":["<template>\n <li\n aria-hidden=\"true\"\n class=\"d-list-item-separator\"\n />\n</template>\n\n<script>\nexport default {\n compatConfig: { MODE: 3 },\n name: 'DtDropdownSeparator',\n};\n</script>\n"],"names":["_openBlock","_createElementBlock"],"mappings":";;AAQA,MAAK,YAAU;AAAA,EACb,cAAc,EAAE,MAAM,EAAG;AAAA,EACzB,MAAM;AACR;;EATI,eAAY;AAAA,EACZ,OAAM;;;AAFR,SAAAA,UAAA,GAAAC,mBAGE,MAHF,UAGE;;;"}
|
|
@@ -6,6 +6,7 @@ const _pluginVue_exportHelper = require("../../_virtual/_plugin-vue_export-helpe
|
|
|
6
6
|
const skeleton = require("../skeleton/skeleton.vue.cjs");
|
|
7
7
|
const icon_constants = require("../icon/icon_constants.cjs");
|
|
8
8
|
const _sfc_main = {
|
|
9
|
+
compatConfig: { MODE: 3 },
|
|
9
10
|
name: "DtEmoji",
|
|
10
11
|
components: {
|
|
11
12
|
DtSkeleton: skeleton.default
|