@dialpad/dialtone 9.123.1 → 9.123.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/css/dialtone-default-theme.css +50 -28
- package/dist/css/dialtone-default-theme.min.css +1 -1
- package/dist/css/dialtone-docs.json +1 -1
- package/dist/css/dialtone.css +50 -28
- package/dist/css/dialtone.min.css +1 -1
- package/dist/tokens/doc.json +17362 -17362
- package/dist/vue2/_plugin-vue2_normalizer-DSLOjnn3.js +11 -0
- package/dist/vue2/_plugin-vue2_normalizer-DSLOjnn3.js.map +1 -0
- package/dist/vue2/_plugin-vue2_normalizer-e_CkxkSV.cjs +2 -0
- package/dist/vue2/_plugin-vue2_normalizer-e_CkxkSV.cjs.map +1 -0
- package/dist/vue2/lib/attachment-carousel/attachment-carousel.cjs +1 -1
- package/dist/vue2/lib/attachment-carousel/attachment-carousel.cjs.map +1 -1
- package/dist/vue2/lib/attachment-carousel/attachment-carousel.js +8 -17
- package/dist/vue2/lib/attachment-carousel/attachment-carousel.js.map +1 -1
- package/dist/vue2/lib/avatar/avatar.cjs +1 -1
- package/dist/vue2/lib/avatar/avatar.js +2 -5
- package/dist/vue2/lib/avatar/avatar.js.map +1 -1
- package/dist/vue2/lib/badge/badge.cjs +1 -1
- package/dist/vue2/lib/badge/badge.js +4 -7
- package/dist/vue2/lib/badge/badge.js.map +1 -1
- package/dist/vue2/lib/banner/banner.cjs +2 -2
- package/dist/vue2/lib/banner/banner.js +6 -9
- package/dist/vue2/lib/banner/banner.js.map +1 -1
- package/dist/vue2/lib/breadcrumbs/breadcrumb-item.cjs +1 -1
- package/dist/vue2/lib/breadcrumbs/breadcrumb-item.js +4 -7
- package/dist/vue2/lib/breadcrumbs/breadcrumb-item.js.map +1 -1
- package/dist/vue2/lib/breadcrumbs/breadcrumbs.cjs +1 -1
- package/dist/vue2/lib/breadcrumbs/breadcrumbs.js +2 -5
- package/dist/vue2/lib/breadcrumbs/breadcrumbs.js.map +1 -1
- package/dist/vue2/lib/button/button.cjs +1 -1
- package/dist/vue2/lib/button/button.js +2 -5
- package/dist/vue2/lib/button/button.js.map +1 -1
- package/dist/vue2/lib/button-group/button-group.cjs +1 -1
- package/dist/vue2/lib/button-group/button-group.js +8 -11
- package/dist/vue2/lib/button-group/button-group.js.map +1 -1
- package/dist/vue2/lib/button-group/buttons-decorator.cjs +1 -1
- package/dist/vue2/lib/button-group/buttons-decorator.js +4 -7
- package/dist/vue2/lib/button-group/buttons-decorator.js.map +1 -1
- package/dist/vue2/lib/callbar-button/callbar-button.cjs +1 -1
- package/dist/vue2/lib/callbar-button/callbar-button.js +7 -10
- package/dist/vue2/lib/callbar-button/callbar-button.js.map +1 -1
- package/dist/vue2/lib/callbar-button-with-dropdown/callbar-button-with-dropdown.cjs +1 -1
- package/dist/vue2/lib/callbar-button-with-dropdown/callbar-button-with-dropdown.js +2 -5
- package/dist/vue2/lib/callbar-button-with-dropdown/callbar-button-with-dropdown.js.map +1 -1
- package/dist/vue2/lib/callbar-button-with-popover/callbar-button-with-popover.cjs +1 -1
- package/dist/vue2/lib/callbar-button-with-popover/callbar-button-with-popover.js +9 -12
- package/dist/vue2/lib/callbar-button-with-popover/callbar-button-with-popover.js.map +1 -1
- package/dist/vue2/lib/callbox/callbox.cjs +1 -1
- package/dist/vue2/lib/callbox/callbox.js +2 -5
- package/dist/vue2/lib/callbox/callbox.js.map +1 -1
- package/dist/vue2/lib/card/card.cjs +1 -1
- package/dist/vue2/lib/card/card.js +4 -7
- package/dist/vue2/lib/card/card.js.map +1 -1
- package/dist/vue2/lib/checkbox/checkbox.cjs +1 -1
- package/dist/vue2/lib/checkbox/checkbox.js +2 -5
- package/dist/vue2/lib/checkbox/checkbox.js.map +1 -1
- package/dist/vue2/lib/checkbox-group/checkbox-group.cjs +1 -1
- package/dist/vue2/lib/checkbox-group/checkbox-group.js +5 -8
- package/dist/vue2/lib/checkbox-group/checkbox-group.js.map +1 -1
- package/dist/vue2/lib/checkbox-group/checkboxes-decorator.cjs +1 -1
- package/dist/vue2/lib/checkbox-group/checkboxes-decorator.js +9 -12
- package/dist/vue2/lib/checkbox-group/checkboxes-decorator.js.map +1 -1
- package/dist/vue2/lib/chip/chip.cjs +1 -1
- package/dist/vue2/lib/chip/chip.js +8 -11
- package/dist/vue2/lib/chip/chip.js.map +1 -1
- package/dist/vue2/lib/codeblock/codeblock.cjs +2 -2
- package/dist/vue2/lib/codeblock/codeblock.js +8 -11
- package/dist/vue2/lib/codeblock/codeblock.js.map +1 -1
- package/dist/vue2/lib/collapsible/collapsible-lazy-show.cjs +1 -1
- package/dist/vue2/lib/collapsible/collapsible-lazy-show.js +2 -5
- package/dist/vue2/lib/collapsible/collapsible-lazy-show.js.map +1 -1
- package/dist/vue2/lib/collapsible/collapsible.cjs +1 -1
- package/dist/vue2/lib/collapsible/collapsible.js +4 -7
- package/dist/vue2/lib/collapsible/collapsible.js.map +1 -1
- package/dist/vue2/lib/combobox/combobox-empty-list.cjs +1 -1
- package/dist/vue2/lib/combobox/combobox-empty-list.js +7 -10
- package/dist/vue2/lib/combobox/combobox-empty-list.js.map +1 -1
- package/dist/vue2/lib/combobox/combobox-loading-list.cjs +1 -1
- package/dist/vue2/lib/combobox/combobox-loading-list.js +7 -10
- package/dist/vue2/lib/combobox/combobox-loading-list.js.map +1 -1
- package/dist/vue2/lib/combobox/combobox.cjs +2 -2
- package/dist/vue2/lib/combobox/combobox.js +2 -5
- package/dist/vue2/lib/combobox/combobox.js.map +1 -1
- package/dist/vue2/lib/combobox-multi-select/combobox-multi-select.cjs +1 -1
- package/dist/vue2/lib/combobox-multi-select/combobox-multi-select.js +6 -9
- package/dist/vue2/lib/combobox-multi-select/combobox-multi-select.js.map +1 -1
- package/dist/vue2/lib/combobox-with-popover/combobox-with-popover.cjs +1 -1
- package/dist/vue2/lib/combobox-with-popover/combobox-with-popover.js +2 -5
- package/dist/vue2/lib/combobox-with-popover/combobox-with-popover.js.map +1 -1
- package/dist/vue2/lib/contact-centers-row/contact-centers-row.cjs +1 -1
- package/dist/vue2/lib/contact-centers-row/contact-centers-row.js +6 -9
- package/dist/vue2/lib/contact-centers-row/contact-centers-row.js.map +1 -1
- package/dist/vue2/lib/contact-info/contact-info.cjs +1 -1
- package/dist/vue2/lib/contact-info/contact-info.js +5 -8
- package/dist/vue2/lib/contact-info/contact-info.js.map +1 -1
- package/dist/vue2/lib/contact-row/contact-row.cjs +1 -1
- package/dist/vue2/lib/contact-row/contact-row.js +2 -5
- package/dist/vue2/lib/contact-row/contact-row.js.map +1 -1
- package/dist/vue2/lib/datepicker/datepicker.cjs +1 -1
- package/dist/vue2/lib/datepicker/datepicker.cjs.map +1 -1
- package/dist/vue2/lib/datepicker/datepicker.js +4 -13
- package/dist/vue2/lib/datepicker/datepicker.js.map +1 -1
- package/dist/vue2/lib/description-list/description-list.cjs +1 -1
- package/dist/vue2/lib/description-list/description-list.js +10 -13
- package/dist/vue2/lib/description-list/description-list.js.map +1 -1
- package/dist/vue2/lib/dropdown/dropdown-list.cjs +1 -1
- package/dist/vue2/lib/dropdown/dropdown-list.js +5 -8
- package/dist/vue2/lib/dropdown/dropdown-list.js.map +1 -1
- package/dist/vue2/lib/dropdown/dropdown-separator.cjs +1 -1
- package/dist/vue2/lib/dropdown/dropdown-separator.js +4 -7
- package/dist/vue2/lib/dropdown/dropdown-separator.js.map +1 -1
- package/dist/vue2/lib/dropdown/dropdown.cjs +1 -1
- package/dist/vue2/lib/dropdown/dropdown.js +2 -5
- package/dist/vue2/lib/dropdown/dropdown.js.map +1 -1
- package/dist/vue2/lib/editor/editor.cjs +1 -1
- package/dist/vue2/lib/editor/editor.js +46 -49
- package/dist/vue2/lib/editor/editor.js.map +1 -1
- package/dist/vue2/lib/emoji/emoji.cjs +1 -1
- package/dist/vue2/lib/emoji/emoji.js +7 -10
- package/dist/vue2/lib/emoji/emoji.js.map +1 -1
- package/dist/vue2/lib/emoji-picker/emoji-picker.cjs +1 -1
- package/dist/vue2/lib/emoji-picker/emoji-picker.cjs.map +1 -1
- package/dist/vue2/lib/emoji-picker/emoji-picker.js +7 -25
- package/dist/vue2/lib/emoji-picker/emoji-picker.js.map +1 -1
- package/dist/vue2/lib/emoji-row/emoji-row.cjs +1 -1
- package/dist/vue2/lib/emoji-row/emoji-row.js +3 -6
- package/dist/vue2/lib/emoji-row/emoji-row.js.map +1 -1
- package/dist/vue2/lib/emoji-text-wrapper/emoji-text-wrapper.cjs +1 -1
- package/dist/vue2/lib/emoji-text-wrapper/emoji-text-wrapper.js +6 -9
- package/dist/vue2/lib/emoji-text-wrapper/emoji-text-wrapper.js.map +1 -1
- package/dist/vue2/lib/empty-state/empty-state.cjs +1 -1
- package/dist/vue2/lib/empty-state/empty-state.js +6 -9
- package/dist/vue2/lib/empty-state/empty-state.js.map +1 -1
- package/dist/vue2/lib/feed-item-pill/feed-item-pill.cjs +1 -1
- package/dist/vue2/lib/feed-item-pill/feed-item-pill.js +11 -14
- package/dist/vue2/lib/feed-item-pill/feed-item-pill.js.map +1 -1
- package/dist/vue2/lib/feed-item-row/feed-item-row.cjs +1 -1
- package/dist/vue2/lib/feed-item-row/feed-item-row.js +6 -9
- package/dist/vue2/lib/feed-item-row/feed-item-row.js.map +1 -1
- package/dist/vue2/lib/general-row/general-row.cjs +1 -1
- package/dist/vue2/lib/general-row/general-row.js +2 -5
- package/dist/vue2/lib/general-row/general-row.js.map +1 -1
- package/dist/vue2/lib/general-row/leftbar-general-row-icon.cjs +1 -1
- package/dist/vue2/lib/general-row/leftbar-general-row-icon.js +7 -10
- package/dist/vue2/lib/general-row/leftbar-general-row-icon.js.map +1 -1
- package/dist/vue2/lib/group-row/group-row.cjs +1 -1
- package/dist/vue2/lib/group-row/group-row.js +4 -7
- package/dist/vue2/lib/group-row/group-row.js.map +1 -1
- package/dist/vue2/lib/grouped-chip/grouped-chip.cjs +1 -1
- package/dist/vue2/lib/grouped-chip/grouped-chip.js +4 -7
- package/dist/vue2/lib/grouped-chip/grouped-chip.js.map +1 -1
- package/dist/vue2/lib/hovercard/hovercard.cjs +1 -1
- package/dist/vue2/lib/hovercard/hovercard.js +6 -9
- package/dist/vue2/lib/hovercard/hovercard.js.map +1 -1
- package/dist/vue2/lib/icon/icon.cjs +1 -1
- package/dist/vue2/lib/icon/icon.js +9 -12
- package/dist/vue2/lib/icon/icon.js.map +1 -1
- package/dist/vue2/lib/illustration/illustration.cjs +1 -1
- package/dist/vue2/lib/illustration/illustration.js +10 -13
- package/dist/vue2/lib/illustration/illustration.js.map +1 -1
- package/dist/vue2/lib/image-viewer/image-viewer.cjs +1 -1
- package/dist/vue2/lib/image-viewer/image-viewer.js +6 -9
- package/dist/vue2/lib/image-viewer/image-viewer.js.map +1 -1
- package/dist/vue2/lib/input/input.cjs +1 -1
- package/dist/vue2/lib/input/input.js +2 -5
- package/dist/vue2/lib/input/input.js.map +1 -1
- package/dist/vue2/lib/input-group/input-group.cjs +1 -1
- package/dist/vue2/lib/input-group/input-group.js +6 -9
- package/dist/vue2/lib/input-group/input-group.js.map +1 -1
- package/dist/vue2/lib/item-layout/item-layout.cjs +2 -2
- package/dist/vue2/lib/item-layout/item-layout.js +4 -7
- package/dist/vue2/lib/item-layout/item-layout.js.map +1 -1
- package/dist/vue2/lib/ivr-node/ivr-node.cjs +1 -1
- package/dist/vue2/lib/ivr-node/ivr-node.js +11 -14
- package/dist/vue2/lib/ivr-node/ivr-node.js.map +1 -1
- package/dist/vue2/lib/keyboard-shortcut/keyboard-shortcut.cjs +1 -1
- package/dist/vue2/lib/keyboard-shortcut/keyboard-shortcut.js +10 -13
- package/dist/vue2/lib/keyboard-shortcut/keyboard-shortcut.js.map +1 -1
- package/dist/vue2/lib/lazy-show/lazy-show.cjs +1 -1
- package/dist/vue2/lib/lazy-show/lazy-show.js +2 -5
- package/dist/vue2/lib/lazy-show/lazy-show.js.map +1 -1
- package/dist/vue2/lib/link/link.cjs +1 -1
- package/dist/vue2/lib/link/link.js +6 -9
- package/dist/vue2/lib/link/link.js.map +1 -1
- package/dist/vue2/lib/list-item/list-item.cjs +1 -1
- package/dist/vue2/lib/list-item/list-item.js +22 -25
- package/dist/vue2/lib/list-item/list-item.js.map +1 -1
- package/dist/vue2/lib/list-item-group/list-item-group.cjs +1 -1
- package/dist/vue2/lib/list-item-group/list-item-group.js +8 -11
- package/dist/vue2/lib/list-item-group/list-item-group.js.map +1 -1
- package/dist/vue2/lib/message-input/message-input-button.cjs +1 -1
- package/dist/vue2/lib/message-input/message-input-button.js +4 -7
- package/dist/vue2/lib/message-input/message-input-button.js.map +1 -1
- package/dist/vue2/lib/message-input/message-input-link.cjs +1 -1
- package/dist/vue2/lib/message-input/message-input-link.js +2 -5
- package/dist/vue2/lib/message-input/message-input-link.js.map +1 -1
- package/dist/vue2/lib/message-input/message-input-topbar.cjs +1 -1
- package/dist/vue2/lib/message-input/message-input-topbar.js +2 -5
- package/dist/vue2/lib/message-input/message-input-topbar.js.map +1 -1
- package/dist/vue2/lib/message-input/message-input.cjs +1 -1
- package/dist/vue2/lib/message-input/message-input.cjs.map +1 -1
- package/dist/vue2/lib/message-input/message-input.js +3 -9
- package/dist/vue2/lib/message-input/message-input.js.map +1 -1
- package/dist/vue2/lib/modal/modal.cjs +2 -2
- package/dist/vue2/lib/modal/modal.js +2 -5
- package/dist/vue2/lib/modal/modal.js.map +1 -1
- package/dist/vue2/lib/notice/notice-action.cjs +1 -1
- package/dist/vue2/lib/notice/notice-action.js +4 -7
- package/dist/vue2/lib/notice/notice-action.js.map +1 -1
- package/dist/vue2/lib/notice/notice-content.cjs +1 -1
- package/dist/vue2/lib/notice/notice-content.js +2 -5
- package/dist/vue2/lib/notice/notice-content.js.map +1 -1
- package/dist/vue2/lib/notice/notice-icon.cjs +1 -1
- package/dist/vue2/lib/notice/notice-icon.js +13 -16
- package/dist/vue2/lib/notice/notice-icon.js.map +1 -1
- package/dist/vue2/lib/notice/notice.cjs +1 -1
- package/dist/vue2/lib/notice/notice.js +7 -10
- package/dist/vue2/lib/notice/notice.js.map +1 -1
- package/dist/vue2/lib/pagination/pagination.cjs +1 -1
- package/dist/vue2/lib/pagination/pagination.js +6 -9
- package/dist/vue2/lib/pagination/pagination.js.map +1 -1
- package/dist/vue2/lib/popover/popover-header-footer.cjs +1 -1
- package/dist/vue2/lib/popover/popover-header-footer.js +5 -8
- package/dist/vue2/lib/popover/popover-header-footer.js.map +1 -1
- package/dist/vue2/lib/popover/popover.cjs +1 -1
- package/dist/vue2/lib/popover/popover.cjs.map +1 -1
- package/dist/vue2/lib/popover/popover.js +3 -6
- package/dist/vue2/lib/popover/popover.js.map +1 -1
- package/dist/vue2/lib/presence/presence.cjs +1 -1
- package/dist/vue2/lib/presence/presence.js +4 -7
- package/dist/vue2/lib/presence/presence.js.map +1 -1
- package/dist/vue2/lib/radio/radio.cjs +1 -1
- package/dist/vue2/lib/radio/radio.js +5 -8
- package/dist/vue2/lib/radio/radio.js.map +1 -1
- package/dist/vue2/lib/radio-group/radio-group.cjs +1 -1
- package/dist/vue2/lib/radio-group/radio-group.js +2 -5
- package/dist/vue2/lib/radio-group/radio-group.js.map +1 -1
- package/dist/vue2/lib/radio-group/radios-decorator.cjs +1 -1
- package/dist/vue2/lib/radio-group/radios-decorator.js +6 -9
- package/dist/vue2/lib/radio-group/radios-decorator.js.map +1 -1
- package/dist/vue2/lib/rich-text-editor/rich-text-editor.cjs +3 -3
- package/dist/vue2/lib/rich-text-editor/rich-text-editor.cjs.map +1 -1
- package/dist/vue2/lib/rich-text-editor/rich-text-editor.js +11 -41
- package/dist/vue2/lib/rich-text-editor/rich-text-editor.js.map +1 -1
- package/dist/vue2/lib/root-layout/root-layout.cjs +1 -1
- package/dist/vue2/lib/root-layout/root-layout.js +5 -8
- package/dist/vue2/lib/root-layout/root-layout.js.map +1 -1
- package/dist/vue2/lib/select-menu/select-menu.cjs +1 -1
- package/dist/vue2/lib/select-menu/select-menu.js +2 -5
- package/dist/vue2/lib/select-menu/select-menu.js.map +1 -1
- package/dist/vue2/lib/settings-menu-button/settings-menu-button.cjs +1 -1
- package/dist/vue2/lib/settings-menu-button/settings-menu-button.js +4 -7
- package/dist/vue2/lib/settings-menu-button/settings-menu-button.js.map +1 -1
- package/dist/vue2/lib/skeleton/skeleton-list-item.cjs +1 -1
- package/dist/vue2/lib/skeleton/skeleton-list-item.js +2 -5
- package/dist/vue2/lib/skeleton/skeleton-list-item.js.map +1 -1
- package/dist/vue2/lib/skeleton/skeleton-paragraph.cjs +1 -1
- package/dist/vue2/lib/skeleton/skeleton-paragraph.js +5 -8
- package/dist/vue2/lib/skeleton/skeleton-paragraph.js.map +1 -1
- package/dist/vue2/lib/skeleton/skeleton-shape.cjs +1 -1
- package/dist/vue2/lib/skeleton/skeleton-shape.js +4 -7
- package/dist/vue2/lib/skeleton/skeleton-shape.js.map +1 -1
- package/dist/vue2/lib/skeleton/skeleton-text.cjs +1 -1
- package/dist/vue2/lib/skeleton/skeleton-text.js +11 -14
- package/dist/vue2/lib/skeleton/skeleton-text.js.map +1 -1
- package/dist/vue2/lib/skeleton/skeleton.cjs +1 -1
- package/dist/vue2/lib/skeleton/skeleton.js +6 -9
- package/dist/vue2/lib/skeleton/skeleton.js.map +1 -1
- package/dist/vue2/lib/split-button/split-button-alpha.cjs +1 -1
- package/dist/vue2/lib/split-button/split-button-alpha.js +9 -12
- package/dist/vue2/lib/split-button/split-button-alpha.js.map +1 -1
- package/dist/vue2/lib/split-button/split-button-omega.cjs +1 -1
- package/dist/vue2/lib/split-button/split-button-omega.js +6 -9
- package/dist/vue2/lib/split-button/split-button-omega.js.map +1 -1
- package/dist/vue2/lib/split-button/split-button.cjs +1 -1
- package/dist/vue2/lib/split-button/split-button.js +6 -9
- package/dist/vue2/lib/split-button/split-button.js.map +1 -1
- package/dist/vue2/lib/stack/stack.cjs +1 -1
- package/dist/vue2/lib/stack/stack.js +12 -15
- package/dist/vue2/lib/stack/stack.js.map +1 -1
- package/dist/vue2/lib/tab/tab-group.cjs +1 -1
- package/dist/vue2/lib/tab/tab-group.js +2 -5
- package/dist/vue2/lib/tab/tab-group.js.map +1 -1
- package/dist/vue2/lib/tab/tab-panel.cjs +1 -1
- package/dist/vue2/lib/tab/tab-panel.js +8 -11
- package/dist/vue2/lib/tab/tab-panel.js.map +1 -1
- package/dist/vue2/lib/tab/tab.cjs +1 -1
- package/dist/vue2/lib/tab/tab.js +7 -10
- package/dist/vue2/lib/tab/tab.js.map +1 -1
- package/dist/vue2/lib/time-pill/time-pill.cjs +1 -1
- package/dist/vue2/lib/time-pill/time-pill.js +5 -8
- package/dist/vue2/lib/time-pill/time-pill.js.map +1 -1
- package/dist/vue2/lib/toast/toast.cjs +1 -1
- package/dist/vue2/lib/toast/toast.cjs.map +1 -1
- package/dist/vue2/lib/toast/toast.js +5 -17
- package/dist/vue2/lib/toast/toast.js.map +1 -1
- package/dist/vue2/lib/toggle/toggle.cjs +1 -1
- package/dist/vue2/lib/toggle/toggle.js +2 -5
- package/dist/vue2/lib/toggle/toggle.js.map +1 -1
- package/dist/vue2/lib/tooltip/tooltip.cjs +1 -1
- package/dist/vue2/lib/tooltip/tooltip.js +6 -9
- package/dist/vue2/lib/tooltip/tooltip.js.map +1 -1
- package/dist/vue2/lib/top-banner-info/top-banner-info.cjs +1 -1
- package/dist/vue2/lib/top-banner-info/top-banner-info.js +2 -5
- package/dist/vue2/lib/top-banner-info/top-banner-info.js.map +1 -1
- package/dist/vue2/lib/unread-pill/unread-pill.cjs +1 -1
- package/dist/vue2/lib/unread-pill/unread-pill.js +5 -8
- package/dist/vue2/lib/unread-pill/unread-pill.js.map +1 -1
- package/dist/vue2/lib/validation-messages/validation-messages.cjs +1 -1
- package/dist/vue2/lib/validation-messages/validation-messages.js +7 -10
- package/dist/vue2/lib/validation-messages/validation-messages.js.map +1 -1
- package/dist/vue2/shared/sr_only_close_button.cjs +1 -1
- package/dist/vue2/shared/sr_only_close_button.js +9 -12
- package/dist/vue2/shared/sr_only_close_button.js.map +1 -1
- package/dist/vue2/types/components/popover/popover.vue.d.ts.map +1 -1
- package/dist/vue3/lib/popover/popover.cjs +1 -1
- package/dist/vue3/lib/popover/popover.cjs.map +1 -1
- package/dist/vue3/lib/popover/popover.js +37 -38
- package/dist/vue3/lib/popover/popover.js.map +1 -1
- package/dist/vue3/lib/rich-text-editor/rich-text-editor.cjs +1 -1
- package/dist/vue3/lib/rich-text-editor/rich-text-editor.cjs.map +1 -1
- package/dist/vue3/lib/rich-text-editor/rich-text-editor.js +1 -1
- package/dist/vue3/lib/rich-text-editor/rich-text-editor.js.map +1 -1
- package/dist/vue3/types/components/popover/popover.vue.d.ts.map +1 -1
- package/package.json +3 -3
- package/dist/vue2/_plugin-vue2_normalizer-CeySl7Fu.js +0 -11
- package/dist/vue2/_plugin-vue2_normalizer-CeySl7Fu.js.map +0 -1
- package/dist/vue2/_plugin-vue2_normalizer-yXi3ZRRD.cjs +0 -2
- package/dist/vue2/_plugin-vue2_normalizer-yXi3ZRRD.cjs.map +0 -1
- package/dist/vue2/style.css +0 -1
- package/dist/vue3/style.css +0 -1
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const o=require("../../_plugin-vue2_normalizer-
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const o=require("../../_plugin-vue2_normalizer-e_CkxkSV.cjs"),a=require("../button/button.cjs"),n=require("../tooltip/tooltip.cjs"),u=require("../stack/stack.cjs"),i=require("../keyboard-shortcut/keyboard-shortcut.cjs"),c={name:"DtRecipeMessageInputButton",components:{DtButton:a.default,DtTooltip:n.default,DtStack:u.default,DtKeyboardShortcut:i.default},props:{ariaLabel:{type:String,required:!0},tooltipText:{type:String,required:!0},keyboardShortcutText:{type:String,default:""},isActive:{type:Boolean,default:!1},dataQa:{type:String,required:!0}},emits:["click"]};var s=function(){var t=this,e=t._self._c;return e("dt-tooltip",{scopedSlots:t._u([{key:"anchor",fn:function(){return[e("dt-button",{attrs:{"data-qa":t.dataQa,importance:"clear",kind:"muted","aria-label":t.ariaLabel,size:"xs",active:t.isActive},on:{click:function(r){return t.$emit("click",r)}},scopedSlots:t._u([{key:"icon",fn:function(){return[t._t("icon")]},proxy:!0}],null,!0)})]},proxy:!0}])},[e("dt-stack",{attrs:{gap:"200"}},[e("p",[t._v(t._s(t.tooltipText))]),t.keyboardShortcutText?e("dt-keyboard-shortcut",{attrs:{inverted:"",shortcut:t.keyboardShortcutText}}):t._e()],1)],1)},l=[],d=o.n(c,s,l);const _=d.exports;exports.default=_;
|
|
2
2
|
//# sourceMappingURL=message-input-button.cjs.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { n as o } from "../../_plugin-vue2_normalizer-
|
|
1
|
+
import { n as o } from "../../_plugin-vue2_normalizer-DSLOjnn3.js";
|
|
2
2
|
import a from "../button/button.js";
|
|
3
3
|
import n from "../tooltip/tooltip.js";
|
|
4
4
|
import i from "../stack/stack.js";
|
|
@@ -44,15 +44,12 @@ var s = function() {
|
|
|
44
44
|
return [t._t("icon")];
|
|
45
45
|
}, proxy: !0 }], null, !0) })];
|
|
46
46
|
}, proxy: !0 }]) }, [e("dt-stack", { attrs: { gap: "200" } }, [e("p", [t._v(t._s(t.tooltipText))]), t.keyboardShortcutText ? e("dt-keyboard-shortcut", { attrs: { inverted: "", shortcut: t.keyboardShortcutText } }) : t._e()], 1)], 1);
|
|
47
|
-
}, p = [],
|
|
47
|
+
}, p = [], d = /* @__PURE__ */ o(
|
|
48
48
|
u,
|
|
49
49
|
s,
|
|
50
|
-
p
|
|
51
|
-
!1,
|
|
52
|
-
null,
|
|
53
|
-
null
|
|
50
|
+
p
|
|
54
51
|
);
|
|
55
|
-
const S =
|
|
52
|
+
const S = d.exports;
|
|
56
53
|
export {
|
|
57
54
|
S as default
|
|
58
55
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"message-input-button.js","sources":["../../../recipes/conversation_view/message_input/message_input_button.vue"],"sourcesContent":["<template>\n <dt-tooltip>\n <template #anchor>\n <dt-button\n :data-qa=\"dataQa\"\n importance=\"clear\"\n kind=\"muted\"\n :aria-label=\"ariaLabel\"\n size=\"xs\"\n :active=\"isActive\"\n @click=\"$emit('click', $event)\"\n >\n <template #icon>\n <slot name=\"icon\" />\n </template>\n </dt-button>\n </template>\n <dt-stack gap=\"200\">\n <p>{{ tooltipText }}</p>\n <dt-keyboard-shortcut\n v-if=\"keyboardShortcutText\"\n inverted\n :shortcut=\"keyboardShortcutText\"\n />\n </dt-stack>\n </dt-tooltip>\n</template>\n\n<script>\nimport { DtButton } from '@/components/button';\nimport { DtTooltip } from '@/components/tooltip';\nimport { DtStack } from '@/components/stack';\nimport { DtKeyboardShortcut } from '@/components/keyboard_shortcut';\nexport default {\n name: 'DtRecipeMessageInputButton',\n components: {\n DtButton,\n DtTooltip,\n DtStack,\n DtKeyboardShortcut,\n },\n\n props: {\n ariaLabel: {\n type: String,\n required: true,\n },\n\n tooltipText: {\n type: String,\n required: true,\n },\n\n keyboardShortcutText: {\n type: String,\n default: '',\n },\n\n isActive: {\n type: Boolean,\n default: false,\n },\n\n dataQa: {\n type: String,\n required: true,\n },\n },\n\n emits: ['click'],\n};\n</script>\n"],"names":["_sfc_main","DtButton","DtTooltip","DtStack","DtKeyboardShortcut"],"mappings":";;;;;AAiCA,MAAAA,IAAA;AAAA,EACA,MAAA;AAAA,EACA,YAAA;AAAA,IACA,UAAAC;AAAA,IACA,WAAAC;AAAA,IACA,SAAAC;AAAA,IACA,oBAAAC;AAAA,EACA;AAAA,EAEA,OAAA;AAAA,IACA,WAAA;AAAA,MACA,MAAA;AAAA,MACA,UAAA;AAAA,IACA;AAAA,IAEA,aAAA;AAAA,MACA,MAAA;AAAA,MACA,UAAA;AAAA,IACA;AAAA,IAEA,sBAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA,IAEA,UAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA,IAEA,QAAA;AAAA,MACA,MAAA;AAAA,MACA,UAAA;AAAA,IACA;AAAA,EACA;AAAA,EAEA,OAAA,CAAA,OAAA;AACA
|
|
1
|
+
{"version":3,"file":"message-input-button.js","sources":["../../../recipes/conversation_view/message_input/message_input_button.vue"],"sourcesContent":["<template>\n <dt-tooltip>\n <template #anchor>\n <dt-button\n :data-qa=\"dataQa\"\n importance=\"clear\"\n kind=\"muted\"\n :aria-label=\"ariaLabel\"\n size=\"xs\"\n :active=\"isActive\"\n @click=\"$emit('click', $event)\"\n >\n <template #icon>\n <slot name=\"icon\" />\n </template>\n </dt-button>\n </template>\n <dt-stack gap=\"200\">\n <p>{{ tooltipText }}</p>\n <dt-keyboard-shortcut\n v-if=\"keyboardShortcutText\"\n inverted\n :shortcut=\"keyboardShortcutText\"\n />\n </dt-stack>\n </dt-tooltip>\n</template>\n\n<script>\nimport { DtButton } from '@/components/button';\nimport { DtTooltip } from '@/components/tooltip';\nimport { DtStack } from '@/components/stack';\nimport { DtKeyboardShortcut } from '@/components/keyboard_shortcut';\nexport default {\n name: 'DtRecipeMessageInputButton',\n components: {\n DtButton,\n DtTooltip,\n DtStack,\n DtKeyboardShortcut,\n },\n\n props: {\n ariaLabel: {\n type: String,\n required: true,\n },\n\n tooltipText: {\n type: String,\n required: true,\n },\n\n keyboardShortcutText: {\n type: String,\n default: '',\n },\n\n isActive: {\n type: Boolean,\n default: false,\n },\n\n dataQa: {\n type: String,\n required: true,\n },\n },\n\n emits: ['click'],\n};\n</script>\n"],"names":["_sfc_main","DtButton","DtTooltip","DtStack","DtKeyboardShortcut"],"mappings":";;;;;AAiCA,MAAAA,IAAA;AAAA,EACA,MAAA;AAAA,EACA,YAAA;AAAA,IACA,UAAAC;AAAA,IACA,WAAAC;AAAA,IACA,SAAAC;AAAA,IACA,oBAAAC;AAAA,EACA;AAAA,EAEA,OAAA;AAAA,IACA,WAAA;AAAA,MACA,MAAA;AAAA,MACA,UAAA;AAAA,IACA;AAAA,IAEA,aAAA;AAAA,MACA,MAAA;AAAA,MACA,UAAA;AAAA,IACA;AAAA,IAEA,sBAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA,IAEA,UAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA,IAEA,QAAA;AAAA,MACA,MAAA;AAAA,MACA,UAAA;AAAA,IACA;AAAA,EACA;AAAA,EAEA,OAAA,CAAA,OAAA;AACA;;;;;;;;;;;;;;;;"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const o=require("@dialpad/dialtone-icons/vue2"),
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const o=require("@dialpad/dialtone-icons/vue2"),a=require("./message-input-button.cjs"),l=require("../../_plugin-vue2_normalizer-e_CkxkSV.cjs"),s=require("../popover/popover.cjs"),u=require("../input/input.cjs"),r=require("../button/button.cjs"),p=require("../stack/stack.cjs"),c={name:"MessageInputLink",components:{DtPopover:s.default,DtInput:u.default,DtButton:r.default,DtStack:p.default,DtIconLink2:o.DtIconLink2,DtRecipeMessageInputButton:a.default},props:{open:{type:Boolean,default:!1},linkButtonOptions:{type:Object,required:!0},isSelectionActive:{type:Function,default:()=>{}}},emits:["set-link","remove-link","opened"],data(){return{linkText:"",linkInput:"",isOpen:!1}},watch:{open:{immediate:!0,handler(i){this.isOpen=i}}},methods:{setInitialValues(i,t){this.linkText=i,this.linkInput=t}}};var k=function(){var t=this,e=t._self._c;return e("dt-popover",{attrs:{open:t.isOpen,placement:"bottom-start","content-class":"d-recipe-message-input__link-popover","visually-hidden-close":!0,"visually-hidden-close-label":t.linkButtonOptions.visuallyHiddenCloseText,"data-qa":"dt-message-input-link-popover","show-close-button":!1},on:{opened:function(n){return t.$emit("opened",n)}},scopedSlots:t._u([{key:"anchor",fn:function(){return[e("dt-recipe-message-input-button",{attrs:{"aria-label":t.linkButtonOptions.ariaLabel,"tooltip-text":t.linkButtonOptions.tooltipText,"keyboard-shortcut-text":t.linkButtonOptions.keyboardShortcutText,"data-qa":"message-input-link-btn","is-active":t.isSelectionActive("link")},on:{click:function(n){t.isOpen=!0}},scopedSlots:t._u([{key:"icon",fn:function(){return[e("dt-icon-link2",{staticClass:"d-recipe-message-input__button-stack-icon",attrs:{size:"200"}})]},proxy:!0}])})]},proxy:!0},{key:"content",fn:function(){return[e("dt-stack",{attrs:{gap:"500"}},[t.linkButtonOptions.dialogTitle.length>0?e("div",{staticClass:"d-recipe-message-input__link-dialog-title"},[t._v(" "+t._s(t.linkButtonOptions.dialogTitle)+" ")]):t._e(),e("dt-input",{attrs:{"input-aria-label":t.linkButtonOptions.textLabel,size:"xs","data-qa":"dt-message-input-link-text-input",label:t.linkButtonOptions.textLabel,"input-wrapper-class":"d-recipe-message-input__link-input"},on:{click:function(n){n.stopPropagation()},focus:function(n){n.stopPropagation()},keydown:function(n){return!n.type.indexOf("key")&&t._k(n.keyCode,"enter",13,n.key,"Enter")?null:t.$emit("set-link",t.linkText,t.linkInput)}},nativeOn:{click:function(n){n.stopPropagation()}},model:{value:t.linkText,callback:function(n){t.linkText=n},expression:"linkText"}}),e("dt-input",{attrs:{"input-aria-label":t.linkButtonOptions.linkLabel,size:"xs","data-qa":"dt-message-input-link-input",placeholder:t.linkButtonOptions.linkPlaceholder,label:t.linkButtonOptions.linkLabel,"input-wrapper-class":"d-recipe-message-input__link-input"},on:{click:function(n){n.stopPropagation()},focus:function(n){n.stopPropagation()},keydown:function(n){return!n.type.indexOf("key")&&t._k(n.keyCode,"enter",13,n.key,"Enter")?null:t.$emit("set-link",t.linkText,t.linkInput)}},nativeOn:{click:function(n){n.stopPropagation()}},model:{value:t.linkInput,callback:function(n){t.linkInput=n},expression:"linkInput"}}),e("dt-stack",{staticClass:"d-recipe-message-input__link-dialog-buttons",attrs:{direction:"row"}},[e("dt-button",{attrs:{"aria-label":t.linkButtonOptions.removeLabel,importance:"clear",kind:"danger",size:"md","data-qa":"dt-message-input-link-remove-btn"},on:{click:function(n){return t.$emit("remove-link",t.linkText,t.linkInput)}}},[t._v(" "+t._s(t.linkButtonOptions.removeLabel)+" ")]),e("dt-stack",{attrs:{direction:"row",gap:"400"}},[e("dt-button",{attrs:{"aria-label":t.linkButtonOptions.cancelLabel,importance:"clear",kind:"muted",size:"md","data-qa":"dt-message-input-link-cancel-btn"},on:{click:function(n){t.isOpen=!1}}},[t._v(" "+t._s(t.linkButtonOptions.cancelLabel)+" ")]),e("dt-button",{attrs:{size:"md","aria-label":t.linkButtonOptions.confirmLabel,"data-qa":"dt-message-input-link-confirm-btn"},on:{click:function(n){return t.$emit("set-link",t.linkText,t.linkInput)}}},[t._v(" "+t._s(t.linkButtonOptions.confirmLabel)+" ")])],1)],1)],1)]},proxy:!0}])})},d=[],_=l.n(c,k,d);const m=_.exports;exports.default=m;
|
|
2
2
|
//# sourceMappingURL=message-input-link.cjs.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { DtIconLink2 as o } from "@dialpad/dialtone-icons/vue2";
|
|
2
2
|
import a from "./message-input-button.js";
|
|
3
|
-
import { n as l } from "../../_plugin-vue2_normalizer-
|
|
3
|
+
import { n as l } from "../../_plugin-vue2_normalizer-DSLOjnn3.js";
|
|
4
4
|
import s from "../popover/popover.js";
|
|
5
5
|
import r from "../input/input.js";
|
|
6
6
|
import p from "../button/button.js";
|
|
@@ -94,10 +94,7 @@ var k = function() {
|
|
|
94
94
|
}, d = [], m = /* @__PURE__ */ l(
|
|
95
95
|
c,
|
|
96
96
|
k,
|
|
97
|
-
d
|
|
98
|
-
!1,
|
|
99
|
-
null,
|
|
100
|
-
null
|
|
97
|
+
d
|
|
101
98
|
);
|
|
102
99
|
const y = m.exports;
|
|
103
100
|
export {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"message-input-link.js","sources":["../../../recipes/conversation_view/message_input/message_input_link.vue"],"sourcesContent":["<template>\n <dt-popover\n :open=\"isOpen\"\n placement=\"bottom-start\"\n content-class=\"d-recipe-message-input__link-popover\"\n :visually-hidden-close=\"true\"\n :visually-hidden-close-label=\"linkButtonOptions.visuallyHiddenCloseText\"\n data-qa=\"dt-message-input-link-popover\"\n :show-close-button=\"false\"\n @opened=\"$emit('opened', $event)\"\n >\n <template #anchor>\n <dt-recipe-message-input-button\n :aria-label=\"linkButtonOptions.ariaLabel\"\n :tooltip-text=\"linkButtonOptions.tooltipText\"\n :keyboard-shortcut-text=\"linkButtonOptions.keyboardShortcutText\"\n data-qa=\"message-input-link-btn\"\n :is-active=\"isSelectionActive('link')\"\n @click=\"isOpen = true\"\n >\n <template #icon>\n <dt-icon-link2\n class=\"d-recipe-message-input__button-stack-icon\"\n size=\"200\"\n />\n </template>\n </dt-recipe-message-input-button>\n </template>\n\n <template #content>\n <dt-stack gap=\"500\">\n <div\n v-if=\"linkButtonOptions.dialogTitle.length > 0\"\n class=\"d-recipe-message-input__link-dialog-title\"\n >\n {{ linkButtonOptions.dialogTitle }}\n </div>\n <dt-input\n v-model=\"linkText\"\n :input-aria-label=\"linkButtonOptions.textLabel\"\n size=\"xs\"\n data-qa=\"dt-message-input-link-text-input\"\n :label=\"linkButtonOptions.textLabel\"\n input-wrapper-class=\"d-recipe-message-input__link-input\"\n @click.stop\n @click.native.stop\n @focus.stop\n @keydown.enter=\"$emit('set-link', linkText, linkInput)\"\n />\n <dt-input\n v-model=\"linkInput\"\n :input-aria-label=\"linkButtonOptions.linkLabel\"\n size=\"xs\"\n data-qa=\"dt-message-input-link-input\"\n :placeholder=\"linkButtonOptions.linkPlaceholder\"\n :label=\"linkButtonOptions.linkLabel\"\n input-wrapper-class=\"d-recipe-message-input__link-input\"\n @click.stop\n @click.native.stop\n @focus.stop\n @keydown.enter=\"$emit('set-link', linkText, linkInput)\"\n />\n <dt-stack\n direction=\"row\"\n class=\"d-recipe-message-input__link-dialog-buttons\"\n >\n <dt-button\n :aria-label=\"linkButtonOptions.removeLabel\"\n importance=\"clear\"\n kind=\"danger\"\n size=\"md\"\n data-qa=\"dt-message-input-link-remove-btn\"\n @click=\"$emit('remove-link', linkText, linkInput)\"\n >\n {{ linkButtonOptions.removeLabel }}\n </dt-button>\n <dt-stack\n direction=\"row\"\n gap=\"400\"\n >\n <dt-button\n :aria-label=\"linkButtonOptions.cancelLabel\"\n importance=\"clear\"\n kind=\"muted\"\n size=\"md\"\n data-qa=\"dt-message-input-link-cancel-btn\"\n @click=\"isOpen = false\"\n >\n {{ linkButtonOptions.cancelLabel }}\n </dt-button>\n <dt-button\n size=\"md\"\n :aria-label=\"linkButtonOptions.confirmLabel\"\n data-qa=\"dt-message-input-link-confirm-btn\"\n @click=\"$emit('set-link', linkText, linkInput)\"\n >\n {{ linkButtonOptions.confirmLabel }}\n </dt-button>\n </dt-stack>\n </dt-stack>\n </dt-stack>\n </template>\n </dt-popover>\n</template>\n\n<script>\nimport { DtPopover } from '@/components/popover';\nimport { DtInput } from '@/components/input';\nimport { DtButton } from '@/components/button';\nimport { DtStack } from '@/components/stack';\nimport { DtIconLink2 } from '@dialpad/dialtone-icons/vue2';\nimport DtRecipeMessageInputButton from './message_input_button.vue';\nexport default {\n name: 'MessageInputLink',\n\n components: {\n DtPopover,\n DtInput,\n DtButton,\n DtStack,\n DtIconLink2,\n DtRecipeMessageInputButton,\n },\n\n props: {\n open: {\n type: Boolean,\n default: false,\n },\n\n linkButtonOptions: {\n type: Object,\n required: true,\n },\n\n isSelectionActive: {\n type: Function,\n default: () => {},\n },\n },\n\n emits: ['set-link', 'remove-link', 'opened'],\n\n data () {\n return {\n linkText: '',\n linkInput: '',\n isOpen: false,\n };\n },\n\n watch: {\n open: {\n immediate: true,\n handler (value) {\n this.isOpen = value;\n },\n },\n },\n\n methods: {\n setInitialValues (linkText, linkInput) {\n this.linkText = linkText;\n this.linkInput = linkInput;\n },\n },\n};\n</script>\n"],"names":["_sfc_main","DtPopover","DtInput","DtButton","DtStack","DtIconLink2","DtRecipeMessageInputButton","value","linkText","linkInput"],"mappings":";;;;;;;AAgHA,MAAAA,IAAA;AAAA,EACA,MAAA;AAAA,EAEA,YAAA;AAAA,IACA,WAAAC;AAAA,IACA,SAAAC;AAAA,IACA,UAAAC;AAAA,IACA,SAAAC;AAAA,IACA,aAAAC;AAAA,IACA,4BAAAC;AAAA,EACA;AAAA,EAEA,OAAA;AAAA,IACA,MAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA,IAEA,mBAAA;AAAA,MACA,MAAA;AAAA,MACA,UAAA;AAAA,IACA;AAAA,IAEA,mBAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA,MAAA;AAAA,MAAA;AAAA,IACA;AAAA,EACA;AAAA,EAEA,OAAA,CAAA,YAAA,eAAA,QAAA;AAAA,EAEA,OAAA;AACA,WAAA;AAAA,MACA,UAAA;AAAA,MACA,WAAA;AAAA,MACA,QAAA;AAAA,IACA;AAAA,EACA;AAAA,EAEA,OAAA;AAAA,IACA,MAAA;AAAA,MACA,WAAA;AAAA,MACA,QAAAC,GAAA;AACA,aAAA,SAAAA;AAAA,MACA;AAAA,IACA;AAAA,EACA;AAAA,EAEA,SAAA;AAAA,IACA,iBAAAC,GAAAC,GAAA;AACA,WAAA,WAAAD,GACA,KAAA,YAAAC;AAAA,IACA;AAAA,EACA;AACA
|
|
1
|
+
{"version":3,"file":"message-input-link.js","sources":["../../../recipes/conversation_view/message_input/message_input_link.vue"],"sourcesContent":["<template>\n <dt-popover\n :open=\"isOpen\"\n placement=\"bottom-start\"\n content-class=\"d-recipe-message-input__link-popover\"\n :visually-hidden-close=\"true\"\n :visually-hidden-close-label=\"linkButtonOptions.visuallyHiddenCloseText\"\n data-qa=\"dt-message-input-link-popover\"\n :show-close-button=\"false\"\n @opened=\"$emit('opened', $event)\"\n >\n <template #anchor>\n <dt-recipe-message-input-button\n :aria-label=\"linkButtonOptions.ariaLabel\"\n :tooltip-text=\"linkButtonOptions.tooltipText\"\n :keyboard-shortcut-text=\"linkButtonOptions.keyboardShortcutText\"\n data-qa=\"message-input-link-btn\"\n :is-active=\"isSelectionActive('link')\"\n @click=\"isOpen = true\"\n >\n <template #icon>\n <dt-icon-link2\n class=\"d-recipe-message-input__button-stack-icon\"\n size=\"200\"\n />\n </template>\n </dt-recipe-message-input-button>\n </template>\n\n <template #content>\n <dt-stack gap=\"500\">\n <div\n v-if=\"linkButtonOptions.dialogTitle.length > 0\"\n class=\"d-recipe-message-input__link-dialog-title\"\n >\n {{ linkButtonOptions.dialogTitle }}\n </div>\n <dt-input\n v-model=\"linkText\"\n :input-aria-label=\"linkButtonOptions.textLabel\"\n size=\"xs\"\n data-qa=\"dt-message-input-link-text-input\"\n :label=\"linkButtonOptions.textLabel\"\n input-wrapper-class=\"d-recipe-message-input__link-input\"\n @click.stop\n @click.native.stop\n @focus.stop\n @keydown.enter=\"$emit('set-link', linkText, linkInput)\"\n />\n <dt-input\n v-model=\"linkInput\"\n :input-aria-label=\"linkButtonOptions.linkLabel\"\n size=\"xs\"\n data-qa=\"dt-message-input-link-input\"\n :placeholder=\"linkButtonOptions.linkPlaceholder\"\n :label=\"linkButtonOptions.linkLabel\"\n input-wrapper-class=\"d-recipe-message-input__link-input\"\n @click.stop\n @click.native.stop\n @focus.stop\n @keydown.enter=\"$emit('set-link', linkText, linkInput)\"\n />\n <dt-stack\n direction=\"row\"\n class=\"d-recipe-message-input__link-dialog-buttons\"\n >\n <dt-button\n :aria-label=\"linkButtonOptions.removeLabel\"\n importance=\"clear\"\n kind=\"danger\"\n size=\"md\"\n data-qa=\"dt-message-input-link-remove-btn\"\n @click=\"$emit('remove-link', linkText, linkInput)\"\n >\n {{ linkButtonOptions.removeLabel }}\n </dt-button>\n <dt-stack\n direction=\"row\"\n gap=\"400\"\n >\n <dt-button\n :aria-label=\"linkButtonOptions.cancelLabel\"\n importance=\"clear\"\n kind=\"muted\"\n size=\"md\"\n data-qa=\"dt-message-input-link-cancel-btn\"\n @click=\"isOpen = false\"\n >\n {{ linkButtonOptions.cancelLabel }}\n </dt-button>\n <dt-button\n size=\"md\"\n :aria-label=\"linkButtonOptions.confirmLabel\"\n data-qa=\"dt-message-input-link-confirm-btn\"\n @click=\"$emit('set-link', linkText, linkInput)\"\n >\n {{ linkButtonOptions.confirmLabel }}\n </dt-button>\n </dt-stack>\n </dt-stack>\n </dt-stack>\n </template>\n </dt-popover>\n</template>\n\n<script>\nimport { DtPopover } from '@/components/popover';\nimport { DtInput } from '@/components/input';\nimport { DtButton } from '@/components/button';\nimport { DtStack } from '@/components/stack';\nimport { DtIconLink2 } from '@dialpad/dialtone-icons/vue2';\nimport DtRecipeMessageInputButton from './message_input_button.vue';\nexport default {\n name: 'MessageInputLink',\n\n components: {\n DtPopover,\n DtInput,\n DtButton,\n DtStack,\n DtIconLink2,\n DtRecipeMessageInputButton,\n },\n\n props: {\n open: {\n type: Boolean,\n default: false,\n },\n\n linkButtonOptions: {\n type: Object,\n required: true,\n },\n\n isSelectionActive: {\n type: Function,\n default: () => {},\n },\n },\n\n emits: ['set-link', 'remove-link', 'opened'],\n\n data () {\n return {\n linkText: '',\n linkInput: '',\n isOpen: false,\n };\n },\n\n watch: {\n open: {\n immediate: true,\n handler (value) {\n this.isOpen = value;\n },\n },\n },\n\n methods: {\n setInitialValues (linkText, linkInput) {\n this.linkText = linkText;\n this.linkInput = linkInput;\n },\n },\n};\n</script>\n"],"names":["_sfc_main","DtPopover","DtInput","DtButton","DtStack","DtIconLink2","DtRecipeMessageInputButton","value","linkText","linkInput"],"mappings":";;;;;;;AAgHA,MAAAA,IAAA;AAAA,EACA,MAAA;AAAA,EAEA,YAAA;AAAA,IACA,WAAAC;AAAA,IACA,SAAAC;AAAA,IACA,UAAAC;AAAA,IACA,SAAAC;AAAA,IACA,aAAAC;AAAA,IACA,4BAAAC;AAAA,EACA;AAAA,EAEA,OAAA;AAAA,IACA,MAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA,IAEA,mBAAA;AAAA,MACA,MAAA;AAAA,MACA,UAAA;AAAA,IACA;AAAA,IAEA,mBAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA,MAAA;AAAA,MAAA;AAAA,IACA;AAAA,EACA;AAAA,EAEA,OAAA,CAAA,YAAA,eAAA,QAAA;AAAA,EAEA,OAAA;AACA,WAAA;AAAA,MACA,UAAA;AAAA,MACA,WAAA;AAAA,MACA,QAAA;AAAA,IACA;AAAA,EACA;AAAA,EAEA,OAAA;AAAA,IACA,MAAA;AAAA,MACA,WAAA;AAAA,MACA,QAAAC,GAAA;AACA,aAAA,SAAAA;AAAA,MACA;AAAA,IACA;AAAA,EACA;AAAA,EAEA,SAAA;AAAA,IACA,iBAAAC,GAAAC,GAAA;AACA,WAAA,WAAAD,GACA,KAAA,YAAAC;AAAA,IACA;AAAA,EACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const i=require("@dialpad/dialtone-icons/vue2"),c=require("./message-input-button.cjs"),n=require("../../_plugin-vue2_normalizer-
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const i=require("@dialpad/dialtone-icons/vue2"),c=require("./message-input-button.cjs"),n=require("../../_plugin-vue2_normalizer-e_CkxkSV.cjs"),s=require("../stack/stack.cjs"),a={name:"DtRecipeMesageInputTopbar",components:{DtStack:s.default,DtIconListBullet:i.DtIconListBullet,DtIconBold:i.DtIconBold,DtIconItalic:i.DtIconItalic,DtIconStrikethrough:i.DtIconStrikethrough,DtIconListOrdered:i.DtIconListOrdered,DtIconQuote:i.DtIconQuote,DtIconCode:i.DtIconCode,DtIconCodeBlock:i.DtIconCodeBlock,DtRecipeMessageInputButton:c.default},props:{boldButtonOptions:{type:Object,default:()=>({})},italicButtonOptions:{type:Object,default:()=>({})},strikeButtonOptions:{type:Object,default:()=>({})},bulletListButtonOptions:{type:Object,default:()=>({})},orderedListButtonOptions:{type:Object,default:()=>({})},blockQuoteButtonOptions:{type:Object,default:()=>({})},codeButtonOptions:{type:Object,default:()=>({})},codeBlockButtonOptions:{type:Object,default:()=>({})},isSelectionActive:{type:Function,default:()=>{}}},emits:["click"]};var r=function(){var t=this,e=t._self._c;return e("dt-stack",{staticClass:"d-recipe-message-input__button-stack",attrs:{direction:"row",gap:"200"}},[e("dt-recipe-message-input-button",{attrs:{"aria-label":t.boldButtonOptions.ariaLabel,"tooltip-text":t.boldButtonOptions.tooltipText,"keyboard-shortcut-text":t.boldButtonOptions.keyboardShortcutText,"data-qa":"bold","is-active":t.isSelectionActive("bold")},on:{click:function(o){return t.$emit("click","bold",o)}},scopedSlots:t._u([{key:"icon",fn:function(){return[e("dt-icon-bold",{staticClass:"d-recipe-message-input__button-stack-icon",attrs:{size:"200"}})]},proxy:!0}])}),e("dt-recipe-message-input-button",{attrs:{"aria-label":t.italicButtonOptions.ariaLabel,"tooltip-text":t.italicButtonOptions.tooltipText,"keyboard-shortcut-text":t.italicButtonOptions.keyboardShortcutText,"data-qa":"italic","is-active":t.isSelectionActive("italic")},on:{click:function(o){return t.$emit("click","italic",o)}},scopedSlots:t._u([{key:"icon",fn:function(){return[e("dt-icon-italic",{staticClass:"d-recipe-message-input__button-stack-icon",attrs:{size:"200"}})]},proxy:!0}])}),e("dt-recipe-message-input-button",{attrs:{"aria-label":t.strikeButtonOptions.ariaLabel,"tooltip-text":t.strikeButtonOptions.tooltipText,"keyboard-shortcut-text":t.strikeButtonOptions.keyboardShortcutText,"data-qa":"strikethrough","is-active":t.isSelectionActive("strike")},on:{click:function(o){return t.$emit("click","strike",o)}},scopedSlots:t._u([{key:"icon",fn:function(){return[e("dt-icon-strikethrough",{staticClass:"d-recipe-message-input__button-stack-icon",attrs:{size:"200"}})]},proxy:!0}])}),e("div",{staticClass:"d-recipe-message-input--button-group-divider"}),t._t("link"),e("div",{staticClass:"d-recipe-message-input--button-group-divider"}),e("dt-recipe-message-input-button",{attrs:{"aria-label":t.bulletListButtonOptions.ariaLabel,"tooltip-text":t.bulletListButtonOptions.tooltipText,"keyboard-shortcut-text":t.bulletListButtonOptions.keyboardShortcutText,"data-qa":"bullet-list","is-active":t.isSelectionActive("bulletList")},on:{click:function(o){return t.$emit("click","bulletList",o)}},scopedSlots:t._u([{key:"icon",fn:function(){return[e("dt-icon-list-bullet",{staticClass:"d-recipe-message-input__button-stack-icon",attrs:{size:"200"}})]},proxy:!0}])}),e("dt-recipe-message-input-button",{attrs:{"aria-label":t.orderedListButtonOptions.ariaLabel,"tooltip-text":t.orderedListButtonOptions.tooltipText,"keyboard-shortcut-text":t.orderedListButtonOptions.keyboardShortcutText,"data-qa":"ordered-list","is-active":t.isSelectionActive("orderedList")},on:{click:function(o){return t.$emit("click","orderedList",o)}},scopedSlots:t._u([{key:"icon",fn:function(){return[e("dt-icon-list-ordered",{staticClass:"d-recipe-message-input__button-stack-icon",attrs:{size:"200"}})]},proxy:!0}])}),e("div",{staticClass:"d-recipe-message-input--button-group-divider"}),e("dt-recipe-message-input-button",{attrs:{"aria-label":t.blockQuoteButtonOptions.ariaLabel,"tooltip-text":t.blockQuoteButtonOptions.tooltipText,"keyboard-shortcut-text":t.blockQuoteButtonOptions.keyboardShortcutText,"data-qa":"blockquote","is-active":t.isSelectionActive("blockquote")},on:{click:function(o){return t.$emit("click","blockquote",o)}},scopedSlots:t._u([{key:"icon",fn:function(){return[e("dt-icon-quote",{staticClass:"d-recipe-message-input__button-stack-icon",attrs:{size:"200"}})]},proxy:!0}])}),e("div",{staticClass:"d-recipe-message-input--button-group-divider"}),e("dt-recipe-message-input-button",{attrs:{"aria-label":t.codeButtonOptions.ariaLabel,"tooltip-text":t.codeButtonOptions.tooltipText,"keyboard-shortcut-text":t.codeButtonOptions.keyboardShortcutText,"data-qa":"code","is-active":t.isSelectionActive("code")},on:{click:function(o){return t.$emit("click","code",o)}},scopedSlots:t._u([{key:"icon",fn:function(){return[e("dt-icon-code",{staticClass:"d-recipe-message-input__button-stack-icon",attrs:{size:"200"}})]},proxy:!0}])}),e("dt-recipe-message-input-button",{attrs:{"aria-label":t.codeBlockButtonOptions.ariaLabel,"tooltip-text":t.codeBlockButtonOptions.tooltipText,"keyboard-shortcut-text":t.codeBlockButtonOptions.keyboardShortcutText,"data-qa":"code-block","is-active":t.isSelectionActive("codeBlock")},on:{click:function(o){return t.$emit("click","codeBlock",o)}},scopedSlots:t._u([{key:"icon",fn:function(){return[e("dt-icon-code-block",{staticClass:"d-recipe-message-input__button-stack-icon",attrs:{size:"200"}})]},proxy:!0}])})],2)},u=[],l=n.n(a,r,u);const d=l.exports;exports.default=d;
|
|
2
2
|
//# sourceMappingURL=message-input-topbar.cjs.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { DtIconListBullet as i, DtIconBold as c, DtIconItalic as n, DtIconStrikethrough as s, DtIconListOrdered as a, DtIconQuote as r, DtIconCode as u, DtIconCodeBlock as l } from "@dialpad/dialtone-icons/vue2";
|
|
2
2
|
import p from "./message-input-button.js";
|
|
3
|
-
import { n as d } from "../../_plugin-vue2_normalizer-
|
|
3
|
+
import { n as d } from "../../_plugin-vue2_normalizer-DSLOjnn3.js";
|
|
4
4
|
import b from "../stack/stack.js";
|
|
5
5
|
const k = {
|
|
6
6
|
name: "DtRecipeMesageInputTopbar",
|
|
@@ -95,10 +95,7 @@ var m = function() {
|
|
|
95
95
|
}, f = [], x = /* @__PURE__ */ d(
|
|
96
96
|
k,
|
|
97
97
|
m,
|
|
98
|
-
f
|
|
99
|
-
!1,
|
|
100
|
-
null,
|
|
101
|
-
null
|
|
98
|
+
f
|
|
102
99
|
);
|
|
103
100
|
const v = x.exports;
|
|
104
101
|
export {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"message-input-topbar.js","sources":["../../../recipes/conversation_view/message_input/message_input_topbar.vue"],"sourcesContent":["<template>\n <dt-stack\n direction=\"row\"\n gap=\"200\"\n class=\"d-recipe-message-input__button-stack\"\n >\n <dt-recipe-message-input-button\n :aria-label=\"boldButtonOptions.ariaLabel\"\n :tooltip-text=\"boldButtonOptions.tooltipText\"\n :keyboard-shortcut-text=\"boldButtonOptions.keyboardShortcutText\"\n data-qa=\"bold\"\n :is-active=\"isSelectionActive('bold')\"\n @click=\"$emit('click', 'bold', $event)\"\n >\n <template #icon>\n <dt-icon-bold\n class=\"d-recipe-message-input__button-stack-icon\"\n size=\"200\"\n />\n </template>\n </dt-recipe-message-input-button>\n\n <dt-recipe-message-input-button\n :aria-label=\"italicButtonOptions.ariaLabel\"\n :tooltip-text=\"italicButtonOptions.tooltipText\"\n :keyboard-shortcut-text=\"italicButtonOptions.keyboardShortcutText\"\n data-qa=\"italic\"\n :is-active=\"isSelectionActive('italic')\"\n @click=\"$emit('click', 'italic', $event)\"\n >\n <template #icon>\n <dt-icon-italic\n class=\"d-recipe-message-input__button-stack-icon\"\n size=\"200\"\n />\n </template>\n </dt-recipe-message-input-button>\n\n <dt-recipe-message-input-button\n :aria-label=\"strikeButtonOptions.ariaLabel\"\n :tooltip-text=\"strikeButtonOptions.tooltipText\"\n :keyboard-shortcut-text=\"strikeButtonOptions.keyboardShortcutText\"\n data-qa=\"strikethrough\"\n :is-active=\"isSelectionActive('strike')\"\n @click=\"$emit('click', 'strike', $event)\"\n >\n <template #icon>\n <dt-icon-strikethrough\n class=\"d-recipe-message-input__button-stack-icon\"\n size=\"200\"\n />\n </template>\n </dt-recipe-message-input-button>\n <div class=\"d-recipe-message-input--button-group-divider\" />\n\n <!-- @slot special slot for link button, since links require a custom dialog -->\n <slot name=\"link\" />\n\n <div class=\"d-recipe-message-input--button-group-divider\" />\n\n <dt-recipe-message-input-button\n :aria-label=\"bulletListButtonOptions.ariaLabel\"\n :tooltip-text=\"bulletListButtonOptions.tooltipText\"\n :keyboard-shortcut-text=\"bulletListButtonOptions.keyboardShortcutText\"\n data-qa=\"bullet-list\"\n :is-active=\"isSelectionActive('bulletList')\"\n @click=\"$emit('click', 'bulletList', $event)\"\n >\n <template #icon>\n <dt-icon-list-bullet\n class=\"d-recipe-message-input__button-stack-icon\"\n size=\"200\"\n />\n </template>\n </dt-recipe-message-input-button>\n\n <dt-recipe-message-input-button\n :aria-label=\"orderedListButtonOptions.ariaLabel\"\n :tooltip-text=\"orderedListButtonOptions.tooltipText\"\n :keyboard-shortcut-text=\"orderedListButtonOptions.keyboardShortcutText\"\n data-qa=\"ordered-list\"\n :is-active=\"isSelectionActive('orderedList')\"\n @click=\"$emit('click', 'orderedList', $event)\"\n >\n <template #icon>\n <dt-icon-list-ordered\n class=\"d-recipe-message-input__button-stack-icon\"\n size=\"200\"\n />\n </template>\n </dt-recipe-message-input-button>\n <div class=\"d-recipe-message-input--button-group-divider\" />\n <dt-recipe-message-input-button\n :aria-label=\"blockQuoteButtonOptions.ariaLabel\"\n :tooltip-text=\"blockQuoteButtonOptions.tooltipText\"\n :keyboard-shortcut-text=\"blockQuoteButtonOptions.keyboardShortcutText\"\n data-qa=\"blockquote\"\n :is-active=\"isSelectionActive('blockquote')\"\n @click=\"$emit('click', 'blockquote', $event)\"\n >\n <template #icon>\n <dt-icon-quote\n class=\"d-recipe-message-input__button-stack-icon\"\n size=\"200\"\n />\n </template>\n </dt-recipe-message-input-button>\n\n <div class=\"d-recipe-message-input--button-group-divider\" />\n\n <dt-recipe-message-input-button\n :aria-label=\"codeButtonOptions.ariaLabel\"\n :tooltip-text=\"codeButtonOptions.tooltipText\"\n :keyboard-shortcut-text=\"codeButtonOptions.keyboardShortcutText\"\n data-qa=\"code\"\n :is-active=\"isSelectionActive('code')\"\n @click=\"$emit('click', 'code', $event)\"\n >\n <template #icon>\n <dt-icon-code\n class=\"d-recipe-message-input__button-stack-icon\"\n size=\"200\"\n />\n </template>\n </dt-recipe-message-input-button>\n <dt-recipe-message-input-button\n :aria-label=\"codeBlockButtonOptions.ariaLabel\"\n :tooltip-text=\"codeBlockButtonOptions.tooltipText\"\n :keyboard-shortcut-text=\"codeBlockButtonOptions.keyboardShortcutText\"\n data-qa=\"code-block\"\n :is-active=\"isSelectionActive('codeBlock')\"\n @click=\"$emit('click', 'codeBlock', $event)\"\n >\n <template #icon>\n <dt-icon-code-block\n class=\"d-recipe-message-input__button-stack-icon\"\n size=\"200\"\n />\n </template>\n </dt-recipe-message-input-button>\n </dt-stack>\n</template>\n\n<script>\nimport { DtStack } from '@/components/stack';\n\nimport {\n DtIconListBullet, DtIconBold, DtIconItalic, DtIconStrikethrough,\n DtIconListOrdered, DtIconQuote, DtIconCode, DtIconCodeBlock,\n} from '@dialpad/dialtone-icons/vue2';\n\nimport DtRecipeMessageInputButton from './message_input_button.vue';\nexport default {\n name: 'DtRecipeMesageInputTopbar',\n components: {\n DtStack,\n DtIconListBullet,\n DtIconBold,\n DtIconItalic,\n DtIconStrikethrough,\n DtIconListOrdered,\n DtIconQuote,\n DtIconCode,\n DtIconCodeBlock,\n DtRecipeMessageInputButton,\n },\n\n props: {\n boldButtonOptions: {\n type: Object,\n default: () => ({}),\n },\n\n italicButtonOptions: {\n type: Object,\n default: () => ({}),\n },\n\n strikeButtonOptions: {\n type: Object,\n default: () => ({}),\n },\n\n bulletListButtonOptions: {\n type: Object,\n default: () => ({}),\n },\n\n orderedListButtonOptions: {\n type: Object,\n default: () => ({}),\n },\n\n blockQuoteButtonOptions: {\n type: Object,\n default: () => ({}),\n },\n\n codeButtonOptions: {\n type: Object,\n default: () => ({}),\n },\n\n codeBlockButtonOptions: {\n type: Object,\n default: () => ({}),\n },\n\n isSelectionActive: {\n type: Function,\n default: () => {},\n },\n },\n\n emits: ['click'],\n};\n</script>\n"],"names":["_sfc_main","DtStack","DtIconListBullet","DtIconBold","DtIconItalic","DtIconStrikethrough","DtIconListOrdered","DtIconQuote","DtIconCode","DtIconCodeBlock","DtRecipeMessageInputButton"],"mappings":";;;;AAwJA,MAAAA,IAAA;AAAA,EACA,MAAA;AAAA,EACA,YAAA;AAAA,IACA,SAAAC;AAAA,IACA,kBAAAC;AAAA,IACA,YAAAC;AAAA,IACA,cAAAC;AAAA,IACA,qBAAAC;AAAA,IACA,mBAAAC;AAAA,IACA,aAAAC;AAAA,IACA,YAAAC;AAAA,IACA,iBAAAC;AAAA,IACA,4BAAAC;AAAA,EACA;AAAA,EAEA,OAAA;AAAA,IACA,mBAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA,OAAA,CAAA;AAAA,IACA;AAAA,IAEA,qBAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA,OAAA,CAAA;AAAA,IACA;AAAA,IAEA,qBAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA,OAAA,CAAA;AAAA,IACA;AAAA,IAEA,yBAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA,OAAA,CAAA;AAAA,IACA;AAAA,IAEA,0BAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA,OAAA,CAAA;AAAA,IACA;AAAA,IAEA,yBAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA,OAAA,CAAA;AAAA,IACA;AAAA,IAEA,mBAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA,OAAA,CAAA;AAAA,IACA;AAAA,IAEA,wBAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA,OAAA,CAAA;AAAA,IACA;AAAA,IAEA,mBAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA,MAAA;AAAA,MAAA;AAAA,IACA;AAAA,EACA;AAAA,EAEA,OAAA,CAAA,OAAA;AACA
|
|
1
|
+
{"version":3,"file":"message-input-topbar.js","sources":["../../../recipes/conversation_view/message_input/message_input_topbar.vue"],"sourcesContent":["<template>\n <dt-stack\n direction=\"row\"\n gap=\"200\"\n class=\"d-recipe-message-input__button-stack\"\n >\n <dt-recipe-message-input-button\n :aria-label=\"boldButtonOptions.ariaLabel\"\n :tooltip-text=\"boldButtonOptions.tooltipText\"\n :keyboard-shortcut-text=\"boldButtonOptions.keyboardShortcutText\"\n data-qa=\"bold\"\n :is-active=\"isSelectionActive('bold')\"\n @click=\"$emit('click', 'bold', $event)\"\n >\n <template #icon>\n <dt-icon-bold\n class=\"d-recipe-message-input__button-stack-icon\"\n size=\"200\"\n />\n </template>\n </dt-recipe-message-input-button>\n\n <dt-recipe-message-input-button\n :aria-label=\"italicButtonOptions.ariaLabel\"\n :tooltip-text=\"italicButtonOptions.tooltipText\"\n :keyboard-shortcut-text=\"italicButtonOptions.keyboardShortcutText\"\n data-qa=\"italic\"\n :is-active=\"isSelectionActive('italic')\"\n @click=\"$emit('click', 'italic', $event)\"\n >\n <template #icon>\n <dt-icon-italic\n class=\"d-recipe-message-input__button-stack-icon\"\n size=\"200\"\n />\n </template>\n </dt-recipe-message-input-button>\n\n <dt-recipe-message-input-button\n :aria-label=\"strikeButtonOptions.ariaLabel\"\n :tooltip-text=\"strikeButtonOptions.tooltipText\"\n :keyboard-shortcut-text=\"strikeButtonOptions.keyboardShortcutText\"\n data-qa=\"strikethrough\"\n :is-active=\"isSelectionActive('strike')\"\n @click=\"$emit('click', 'strike', $event)\"\n >\n <template #icon>\n <dt-icon-strikethrough\n class=\"d-recipe-message-input__button-stack-icon\"\n size=\"200\"\n />\n </template>\n </dt-recipe-message-input-button>\n <div class=\"d-recipe-message-input--button-group-divider\" />\n\n <!-- @slot special slot for link button, since links require a custom dialog -->\n <slot name=\"link\" />\n\n <div class=\"d-recipe-message-input--button-group-divider\" />\n\n <dt-recipe-message-input-button\n :aria-label=\"bulletListButtonOptions.ariaLabel\"\n :tooltip-text=\"bulletListButtonOptions.tooltipText\"\n :keyboard-shortcut-text=\"bulletListButtonOptions.keyboardShortcutText\"\n data-qa=\"bullet-list\"\n :is-active=\"isSelectionActive('bulletList')\"\n @click=\"$emit('click', 'bulletList', $event)\"\n >\n <template #icon>\n <dt-icon-list-bullet\n class=\"d-recipe-message-input__button-stack-icon\"\n size=\"200\"\n />\n </template>\n </dt-recipe-message-input-button>\n\n <dt-recipe-message-input-button\n :aria-label=\"orderedListButtonOptions.ariaLabel\"\n :tooltip-text=\"orderedListButtonOptions.tooltipText\"\n :keyboard-shortcut-text=\"orderedListButtonOptions.keyboardShortcutText\"\n data-qa=\"ordered-list\"\n :is-active=\"isSelectionActive('orderedList')\"\n @click=\"$emit('click', 'orderedList', $event)\"\n >\n <template #icon>\n <dt-icon-list-ordered\n class=\"d-recipe-message-input__button-stack-icon\"\n size=\"200\"\n />\n </template>\n </dt-recipe-message-input-button>\n <div class=\"d-recipe-message-input--button-group-divider\" />\n <dt-recipe-message-input-button\n :aria-label=\"blockQuoteButtonOptions.ariaLabel\"\n :tooltip-text=\"blockQuoteButtonOptions.tooltipText\"\n :keyboard-shortcut-text=\"blockQuoteButtonOptions.keyboardShortcutText\"\n data-qa=\"blockquote\"\n :is-active=\"isSelectionActive('blockquote')\"\n @click=\"$emit('click', 'blockquote', $event)\"\n >\n <template #icon>\n <dt-icon-quote\n class=\"d-recipe-message-input__button-stack-icon\"\n size=\"200\"\n />\n </template>\n </dt-recipe-message-input-button>\n\n <div class=\"d-recipe-message-input--button-group-divider\" />\n\n <dt-recipe-message-input-button\n :aria-label=\"codeButtonOptions.ariaLabel\"\n :tooltip-text=\"codeButtonOptions.tooltipText\"\n :keyboard-shortcut-text=\"codeButtonOptions.keyboardShortcutText\"\n data-qa=\"code\"\n :is-active=\"isSelectionActive('code')\"\n @click=\"$emit('click', 'code', $event)\"\n >\n <template #icon>\n <dt-icon-code\n class=\"d-recipe-message-input__button-stack-icon\"\n size=\"200\"\n />\n </template>\n </dt-recipe-message-input-button>\n <dt-recipe-message-input-button\n :aria-label=\"codeBlockButtonOptions.ariaLabel\"\n :tooltip-text=\"codeBlockButtonOptions.tooltipText\"\n :keyboard-shortcut-text=\"codeBlockButtonOptions.keyboardShortcutText\"\n data-qa=\"code-block\"\n :is-active=\"isSelectionActive('codeBlock')\"\n @click=\"$emit('click', 'codeBlock', $event)\"\n >\n <template #icon>\n <dt-icon-code-block\n class=\"d-recipe-message-input__button-stack-icon\"\n size=\"200\"\n />\n </template>\n </dt-recipe-message-input-button>\n </dt-stack>\n</template>\n\n<script>\nimport { DtStack } from '@/components/stack';\n\nimport {\n DtIconListBullet, DtIconBold, DtIconItalic, DtIconStrikethrough,\n DtIconListOrdered, DtIconQuote, DtIconCode, DtIconCodeBlock,\n} from '@dialpad/dialtone-icons/vue2';\n\nimport DtRecipeMessageInputButton from './message_input_button.vue';\nexport default {\n name: 'DtRecipeMesageInputTopbar',\n components: {\n DtStack,\n DtIconListBullet,\n DtIconBold,\n DtIconItalic,\n DtIconStrikethrough,\n DtIconListOrdered,\n DtIconQuote,\n DtIconCode,\n DtIconCodeBlock,\n DtRecipeMessageInputButton,\n },\n\n props: {\n boldButtonOptions: {\n type: Object,\n default: () => ({}),\n },\n\n italicButtonOptions: {\n type: Object,\n default: () => ({}),\n },\n\n strikeButtonOptions: {\n type: Object,\n default: () => ({}),\n },\n\n bulletListButtonOptions: {\n type: Object,\n default: () => ({}),\n },\n\n orderedListButtonOptions: {\n type: Object,\n default: () => ({}),\n },\n\n blockQuoteButtonOptions: {\n type: Object,\n default: () => ({}),\n },\n\n codeButtonOptions: {\n type: Object,\n default: () => ({}),\n },\n\n codeBlockButtonOptions: {\n type: Object,\n default: () => ({}),\n },\n\n isSelectionActive: {\n type: Function,\n default: () => {},\n },\n },\n\n emits: ['click'],\n};\n</script>\n"],"names":["_sfc_main","DtStack","DtIconListBullet","DtIconBold","DtIconItalic","DtIconStrikethrough","DtIconListOrdered","DtIconQuote","DtIconCode","DtIconCodeBlock","DtRecipeMessageInputButton"],"mappings":";;;;AAwJA,MAAAA,IAAA;AAAA,EACA,MAAA;AAAA,EACA,YAAA;AAAA,IACA,SAAAC;AAAA,IACA,kBAAAC;AAAA,IACA,YAAAC;AAAA,IACA,cAAAC;AAAA,IACA,qBAAAC;AAAA,IACA,mBAAAC;AAAA,IACA,aAAAC;AAAA,IACA,YAAAC;AAAA,IACA,iBAAAC;AAAA,IACA,4BAAAC;AAAA,EACA;AAAA,EAEA,OAAA;AAAA,IACA,mBAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA,OAAA,CAAA;AAAA,IACA;AAAA,IAEA,qBAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA,OAAA,CAAA;AAAA,IACA;AAAA,IAEA,qBAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA,OAAA,CAAA;AAAA,IACA;AAAA,IAEA,yBAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA,OAAA,CAAA;AAAA,IACA;AAAA,IAEA,0BAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA,OAAA,CAAA;AAAA,IACA;AAAA,IAEA,yBAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA,OAAA,CAAA;AAAA,IACA;AAAA,IAEA,mBAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA,OAAA,CAAA;AAAA,IACA;AAAA,IAEA,wBAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA,OAAA,CAAA;AAAA,IACA;AAAA,IAEA,mBAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA,MAAA;AAAA,MAAA;AAAA,IACA;AAAA,EACA;AAAA,EAEA,OAAA,CAAA,OAAA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const m=require("./last-active-nodes.cjs"),r=require("@tiptap/core"),l=require("../../node_modules/@tiptap/vue-2.cjs"),a=require("@dialpad/dialtone-icons/vue2"),d=require("../../_plugin-vue2_normalizer-yXi3ZRRD.cjs"),h=require("../item-layout/item-layout.cjs"),p=require("../button/button.cjs"),g=require("./message-input-topbar.cjs"),f=require("./message-input-link.cjs"),c=require("../editor/editor-constants.cjs"),b=require("../emoji-picker/emoji-picker.cjs"),k=require("../input/input.cjs"),_=require("../popover/popover.cjs"),x=require("../rich-text-editor/rich-text-editor.cjs"),T=require("../tooltip/tooltip.cjs"),v=require("../stack/stack.cjs"),u=require("../rich-text-editor/rich-text-editor-constants.cjs"),L={name:"MeetingPill",components:{NodeViewWrapper:l.NodeViewWrapper,DtItemLayout:h.default,DtIconClose:a.DtIconClose,DtButton:p.default,DtIconVideo:a.DtIconVideo},props:l.nodeViewProps,emits:["meeting-pill-close"],methods:{close(t){this.$parent.$emit("meeting-pill-close",t)}}};var y=function(){var e=this,i=e._self._c;return i("node-view-wrapper",{staticClass:"d-recipe-message-input-meeting-pill"},[i("dt-item-layout",{staticClass:"d-recipe-message-input-meeting-pill__layout",attrs:{unstyled:""},scopedSlots:e._u([{key:"left",fn:function(){return[i("div",{staticClass:"d-recipe-message-input-meeting-pill__icon"},[i("dt-icon-video",{attrs:{size:"400"}})],1)]},proxy:!0},{key:"right",fn:function(){return[i("div",{staticClass:"d-recipe-message-input-meeting-pill__close"},[i("dt-button",{attrs:{circle:"","aria-label":e.node.attrs["close-button-aria-label"],size:"xs",importance:"clear"},on:{click:e.close},scopedSlots:e._u([{key:"icon",fn:function(){return[i("dt-icon-close",{attrs:{size:"300"}})]},proxy:!0}])})],1)]},proxy:!0}])},[e._v(" "+e._s(e.node.attrs.text)+" ")])],1)},S=[],I=d.n(L,y,S,!1,null,null);const w=I.exports,O=r.Node.create({atom:!0,group:"inline",inline:!0,addNodeView(){return l.VueNodeViewRenderer(w)},addAttributes(){return{text:{default:'Please pass in "text" attribute'},"close-button-aria-label":{}}},parseHTML(){return[{tag:"meeting-pill"}]},renderText({node:t}){return"/dpm"},renderHTML({HTMLAttributes:t}){return["meeting-pill",r.mergeAttributes(t)]}}),C={name:"DtRecipeMessageInput",components:{DtButton:p.default,DtEmojiPicker:b.default,DtInput:k.default,DtPopover:_.default,DtRecipeMessageInputTopbar:g.default,DtRecipeMessageInputLink:f.default,DtRichTextEditor:x.default,DtTooltip:T.default,DtStack:v.default,DtIconImage:a.DtIconImage,DtIconVerySatisfied:a.DtIconVerySatisfied,DtIconSatisfied:a.DtIconSatisfied,DtIconSend:a.DtIconSend},mixins:[],inheritAttrs:!1,props:{richText:{type:Boolean,default:!0},value:{type:[Object,String],default:""},editable:{type:Boolean,default:!0},inputAriaLabel:{type:String,required:!0,default:""},preventTyping:{type:Boolean,default:!1},inputClass:{type:String,default:""},autoFocus:{type:[Boolean,String,Number],default:!1,validator(t){return typeof t=="string"?u.RICH_TEXT_EDITOR_AUTOFOCUS_TYPES.includes(t):!0}},outputFormat:{type:String,default:"json",validator(t){return u.RICH_TEXT_EDITOR_OUTPUT_FORMATS.includes(t)}},placeholder:{type:String,default:""},disableSend:{type:Boolean,default:!1},maxHeight:{type:String,default:"unset"},showEmojiPicker:{type:Boolean,default:!0},emojiPickerProps:{type:Object,default:()=>({}),validate(t){return["searchNoResultsLabel","searchResultsLabel","searchPlaceholderLabel","skinSelectorButtonTooltipLabel","tabSetLabels"].every(e=>t[e]!=null)}},emojiTooltipMessage:{type:String,default:"Emoji"},emojiButtonAriaLabel:{type:String,default:"emoji button"},showCharacterLimit:{type:[Boolean,Object],default:()=>({count:1500,warning:500,message:""})},showImagePicker:{type:[Boolean,Object],default:()=>({tooltipLabel:"Attach Image",ariaLabel:"image button"})},showSend:{type:[Boolean,Object],default:()=>({})},showCancel:{type:[Boolean,Object],default:()=>({text:"Cancel"})},mentionSuggestion:{type:Object,default:null},channelSuggestion:{type:Object,default:null},slashCommandSuggestion:{type:Object,default:null},boldButtonOptions:{type:Object,default:()=>({ariaLabel:"Toggle bold on selected text",tooltipText:"Bold",keyboardShortcutText:"Mod + B"})},italicButtonOptions:{type:Object,default:()=>({ariaLabel:"Toggle italic on selected text",tooltipText:"Italic",keyboardShortcutText:"Mod + I"})},strikeButtonOptions:{type:Object,default:()=>({ariaLabel:"Toggle strikethrough on selected text",tooltipText:"Strikethrough",keyboardShortcutText:"Mod + Shift + S"})},linkButtonOptions:{type:Object,default:()=>({ariaLabel:"Create or edit link on selected text",tooltipText:"Link",keyboardShortcutText:"Mod + K",dialogTitle:"Add a link",textLabel:"Text to display (optional)",linkLabel:"Link",linkPlaceholder:"e.g. https://www.dialpad.com",removeLabel:"Remove",cancelLabel:"Cancel",confirmLabel:"Done",visuallyHiddenCloseText:"Close link dialog"})},bulletListButtonOptions:{type:Object,default:()=>({ariaLabel:"Toggle bullet list on selected text",tooltipText:"Bullet list",keyboardShortcutText:"Mod + Shift + 8"})},orderedListButtonOptions:{type:Object,default:()=>({ariaLabel:"Toggle ordered list on selected text",tooltipText:"Ordered list",keyboardShortcutText:"Mod + Shift + 7"})},blockQuoteButtonOptions:{type:Object,default:()=>({ariaLabel:"Toggle Blockquote on selected text",tooltipText:"Blockquote",keyboardShortcutText:"Mod + Shift + B"})},codeButtonOptions:{type:Object,default:()=>({ariaLabel:"Toggle code tag on selected text",tooltipText:"Code",keyboardShortcutText:"Mod + E"})},codeBlockButtonOptions:{type:Object,default:()=>({ariaLabel:"Toggle code block on selected text",tooltipText:"Code block",keyboardShortcutText:"Mod + Alt + C"})}},emits:["submit","select-media","add-media","paste-media","cancel","skin-tone","selected-emoji","selected-command","meeting-pill-close","update:value","text-input","add-emoji"],data(){return{lastActiveNodes:m.default,additionalExtensions:[O],internalInputValue:this.value,imagePickerFocus:!1,emojiPickerFocus:!1,emojiPickerOpened:!1,isFocused:!1,linkOptions:{class:"d-link d-c-text d-d-inline-block"},linkDialogOpen:!1,selectedText:"",text:"",hideLinkBubbleMenu:!1}},computed:{showSendIcon(){return!this.showSend.text},inputLength(){return this.text.length},displayCharacterLimitWarning(){return!!this.showCharacterLimit&&this.showCharacterLimit.count-this.inputLength<=this.showCharacterLimit.warning},characterLimitTooltipEnabled(){return this.showCharacterLimit.message&&this.showCharacterLimit.count-this.inputLength<0},isSendDisabled(){return this.disableSend||this.showCharacterLimit&&this.inputLength>this.showCharacterLimit.count},computedCloseButtonProps(){return{ariaLabel:"Close"}},emojiPickerHovered(){return this.emojiPickerFocus||this.emojiPickerOpened},sendIconSize(){return"300"}},watch:{value(t){this.internalInputValue=t},emojiPickerOpened(t){var e;t||(e=this.$refs.richTextEditor)==null||e.focusEditor()}},created(){this.value&&this.outputFormat==="text"?this.internalInputValue=this.value.replace(/\n/g,"<br>"):this.internalInputValue=this.value},methods:{linkDialogOpened(t){var e;this.linkDialogOpen=t,t===!0?this.initLinkDialog():(this.hideLinkBubbleMenu=!1,(e=this.$refs.richTextEditor)==null||e.focusEditor())},handleTopbarClick(t){var n;const e=(n=this.$refs.richTextEditor)==null?void 0:n.editor,i={bold:()=>e==null?void 0:e.chain().focus().toggleBold().run(),italic:()=>e==null?void 0:e.chain().focus().toggleItalic().run(),strike:()=>e==null?void 0:e.chain().focus().toggleStrike().run(),bulletList:()=>e==null?void 0:e.chain().focus().toggleBulletList().run(),orderedList:()=>e==null?void 0:e.chain().focus().toggleOrderedList().run(),blockquote:()=>e==null?void 0:e.chain().focus().toggleBlockquote().run(),code:()=>e==null?void 0:e.chain().focus().toggleCode().run(),codeBlock:()=>e==null?void 0:e.chain().focus().toggleCodeBlock().run()};e&&i[t]&&i[t]()},isSelectionActive(t){var e,i,n,o;return["bulletList","orderedList"].includes(t)?this.lastActiveNodes((i=(e=this.$refs.richTextEditor)==null?void 0:e.editor)==null?void 0:i.state,[{type:"bulletList"},{type:"orderedList"}]).includes(t)&&this.isFocused:((o=(n=this.$refs.richTextEditor)==null?void 0:n.editor)==null?void 0:o.isActive(t))&&this.isFocused},initLinkDialog(){var t,e,i;this.$refs.link.setInitialValues(this.selectedText,(i=(e=(t=this.$refs.richTextEditor)==null?void 0:t.editor)==null?void 0:e.getAttributes("link"))==null?void 0:i.href),this.hideLinkBubbleMenu=!0,this.linkDialogOpen=!0},removeLink(){var t;(t=this.$refs.richTextEditor)==null||t.removeLink(),this.linkDialogOpen=!1},setLink(t,e){this.$refs.richTextEditor.setLink(e,t,this.linkOptions,c.EDITOR_SUPPORTED_LINK_PROTOCOLS,c.EDITOR_DEFAULT_LINK_PREFIX),this.linkDialogOpen=!1},onMousedown(t){this.$refs.richTextEditor.$el.querySelector(".tiptap").contains(t.target)||(t.preventDefault(),this.$refs.richTextEditor.focusEditor())},onDrop(t){const e=t.dataTransfer,i=Array.from(e.files);this.$emit("add-media",i)},onPaste(t){if(t.clipboardData.files.length){t.stopPropagation(),t.preventDefault();const e=[...t.clipboardData.files];this.$emit("paste-media",e)}},onSkinTone(t){this.$emit("skin-tone",t)},onSelectEmoji(t,e){t&&(t.shift_key||e(),this.$refs.richTextEditor.editor.commands.insertContent({type:"emoji",attrs:{code:t.shortname}}),this.$emit("selected-emoji",t))},onSelectImage(){this.$refs.messageInputImageUpload.$refs.input.click()},onImageUpload(){this.$emit("select-media",this.$refs.messageInputImageUpload.$refs.input.files)},toggleEmojiPicker(){this.emojiPickerOpened=!this.emojiPickerOpened},onSend(){this.isSendDisabled||this.$emit("submit",this.internalInputValue)},onCancel(){this.$emit("cancel")},onInput(t){this.$emit("update:value",t)},onTextInput(t){this.text=t,this.$emit("text-input",t)}}};var j=function(){var n;var e=this,i=e._self._c;return i("div",{staticClass:"d-recipe-message-input",attrs:{"data-qa":"dt-recipe-message-input",role:"presentation"},on:{dragover:function(o){o.preventDefault()},drop:function(o){return o.preventDefault(),e.onDrop.apply(null,arguments)},paste:e.onPaste,mousedown:e.onMousedown}},[e._t("top"),e.richText?i("dt-recipe-message-input-topbar",{key:e.selectedText,attrs:{"bold-button-options":e.boldButtonOptions,"italic-button-options":e.italicButtonOptions,"strike-button-options":e.strikeButtonOptions,"bullet-list-button-options":e.bulletListButtonOptions,"ordered-list-button-options":e.orderedListButtonOptions,"block-quote-button-options":e.blockQuoteButtonOptions,"code-button-options":e.codeButtonOptions,"code-block-button-options":e.codeBlockButtonOptions,"is-selection-active":e.isSelectionActive},on:{click:e.handleTopbarClick},scopedSlots:e._u([{key:"link",fn:function(){return[i("dt-recipe-message-input-link",{ref:"link",attrs:{open:e.linkDialogOpen,"link-button-options":e.linkButtonOptions,"is-selection-active":e.isSelectionActive},on:{opened:e.linkDialogOpened,"set-link":e.setLink,"remove-link":e.removeLink}})]},proxy:!0}],null,!1,1527282285)}):e._e(),i("div",{directives:[{name:"dt-scrollbar",rawName:"v-dt-scrollbar"}],staticClass:"d-recipe-message-input__editor-wrapper",style:{"max-height":e.maxHeight}},[i("dt-rich-text-editor",e._g(e._b({ref:"richTextEditor",attrs:{editable:e.editable,"input-aria-label":e.inputAriaLabel,"input-class":e.inputClass,"output-format":e.outputFormat,"auto-focus":e.autoFocus,link:e.richText,placeholder:e.placeholder,"prevent-typing":e.preventTyping,"mention-suggestion":e.mentionSuggestion,"channel-suggestion":e.channelSuggestion,"slash-command-suggestion":e.slashCommandSuggestion,"allow-blockquote":e.richText,"allow-bold":e.richText,"allow-bullet-list":e.richText,"allow-code":e.richText,"allow-codeblock":e.richText,"allow-italic":e.richText,"allow-strike":e.richText,"allow-underline":e.richText,"additional-extensions":e.additionalExtensions,"hide-link-bubble-menu":e.hideLinkBubbleMenu},on:{input:e.onInput,"text-input":e.onTextInput,enter:e.onSend,selected:function(o){e.selectedText=o},"edit-link":e.initLinkDialog,focus:function(o){e.isFocused=!0},blur:function(o){e.isFocused=!1}},model:{value:e.internalInputValue,callback:function(o){e.internalInputValue=o},expression:"internalInputValue"}},"dt-rich-text-editor",e.$attrs,!1),e.$listeners))],1),e._t("middle"),i("section",{staticClass:"d-recipe-message-input__bottom-section"},[i("div",{staticClass:"d-recipe-message-input__bottom-section-left"},[i("dt-stack",{attrs:{direction:"row",gap:"200"}},[e.showImagePicker?i("dt-button",{directives:[{name:"dt-tooltip",rawName:"v-dt-tooltip:top-start",value:(n=e.showImagePicker)==null?void 0:n.tooltipLabel,expression:"showImagePicker?.tooltipLabel",arg:"top-start"}],staticClass:"d-recipe-message-input__button",attrs:{"data-qa":"dt-recipe-message-input-image-btn",size:"sm",kind:"muted",importance:"clear","aria-label":e.showImagePicker.ariaLabel},on:{click:e.onSelectImage,mouseenter:function(o){e.imagePickerFocus=!0},mouseleave:function(o){e.imagePickerFocus=!1},focus:function(o){e.imagePickerFocus=!0},blur:function(o){e.imagePickerFocus=!1}},scopedSlots:e._u([{key:"icon",fn:function(){return[i("dt-icon-image",{attrs:{size:"300"}})]},proxy:!0}],null,!1,4195307205)}):e._e(),i("dt-input",{ref:"messageInputImageUpload",staticClass:"d-recipe-message-input__image-input",attrs:{"data-qa":"dt-recipe-message-input-image-input",accept:"image/*, video/*",type:"file",multiple:"",hidden:""},on:{input:e.onImageUpload}}),e.showEmojiPicker?i("dt-popover",{attrs:{"open.sync":"emojiPickerOpened","data-qa":"dt-recipe-message-input-emoji-picker-popover","initial-focus-element":"#searchInput",padding:"none"},scopedSlots:e._u([{key:"anchor",fn:function({attrs:o}){return[i("dt-button",e._b({directives:[{name:"dt-tooltip",rawName:"v-dt-tooltip",value:e.emojiTooltipMessage,expression:"emojiTooltipMessage"}],staticClass:"d-recipe-message-input__button",attrs:{"data-qa":"dt-recipe-message-input-emoji-picker-btn",size:"sm",kind:"muted",importance:"clear","aria-label":e.emojiButtonAriaLabel},on:{click:e.toggleEmojiPicker,mouseenter:function(s){e.emojiPickerFocus=!0},mouseleave:function(s){e.emojiPickerFocus=!1},focus:function(s){e.emojiPickerFocus=!0},blur:function(s){e.emojiPickerFocus=!1}},scopedSlots:e._u([{key:"icon",fn:function(){return[e.emojiPickerHovered?i("dt-icon-very-satisfied",{attrs:{size:"300"}}):i("dt-icon-satisfied",{attrs:{size:"300"}})]},proxy:!0}],null,!0)},"dt-button",o,!1))]}},{key:"content",fn:function({close:o}){return[i("dt-emoji-picker",e._b({on:{"add-emoji":function(s){return e.$emit("add-emoji")},"skin-tone":e.onSkinTone,"selected-emoji":s=>e.onSelectEmoji(s,o)}},"dt-emoji-picker",e.emojiPickerProps,!1))]}}],null,!1,4220830595)}):e._e(),e._t("emojiGiphyPicker"),e._t("customActionIcons")],2)],1),i("div",{staticClass:"d-recipe-message-input__bottom-section-right"},[i("dt-stack",{attrs:{direction:"row",gap:"300"}},[i("div",{staticClass:"d-recipe-message-input__sms-count"},[e._t("smsCount")],2),e.showCharacterLimit?i("dt-tooltip",{staticClass:"d-recipe-message-input__remaining-char-tooltip",attrs:{placement:"top-end",enabled:e.characterLimitTooltipEnabled,message:e.showCharacterLimit.message,offset:[10,8]},scopedSlots:e._u([{key:"anchor",fn:function(){return[i("p",{directives:[{name:"show",rawName:"v-show",value:e.displayCharacterLimitWarning,expression:"displayCharacterLimitWarning"}],staticClass:"d-recipe-message-input__remaining-char",attrs:{"data-qa":"dt-recipe-message-input-character-limit"}},[e._v(" "+e._s(e.showCharacterLimit.count-e.inputLength)+" ")])]},proxy:!0}],null,!1,1021505058)}):e._e(),e.showCancel?i("dt-button",{staticClass:"d-recipe-message-input__button d-recipe-message-input__cancel-button",attrs:{"data-qa":"dt-recipe-message-input-cancel-button",size:"sm",kind:"muted",importance:"clear","aria-label":e.showCancel.ariaLabel},on:{click:e.onCancel}},[i("p",[e._v(e._s(e.showCancel.text))])]):e._e(),e._t("sendButton",function(){var o;return[e.showSend?i("dt-button",{directives:[{name:"dt-tooltip",rawName:"v-dt-tooltip:top-end",value:(o=e.showSend)==null?void 0:o.tooltipLabel,expression:"showSend?.tooltipLabel",arg:"top-end"}],class:["d-recipe-message-input__button d-recipe-message-input__send-button",{"d-recipe-message-input__send-button--disabled":e.isSendDisabled,"d-btn--icon-only":e.showSendIcon}],attrs:{"data-qa":"dt-recipe-message-input-send-btn",size:"sm",kind:"default",importance:"primary","aria-label":e.showSend.ariaLabel,"aria-disabled":e.isSendDisabled},on:{click:e.onSend},scopedSlots:e._u([e.showSendIcon?{key:"icon",fn:function(){return[e._t("sendIcon",function(){return[i("dt-icon-send",{attrs:{size:e.sendIconSize}})]},{iconSize:e.sendIconSize})]},proxy:!0}:null],null,!0)},[e.showSend.text?[i("p",[e._v(e._s(e.showSend.text))])]:e._e()],2):e._e()]})],2)],1)])],2)},P=[],B=d.n(C,j,P,!1,null,null);const D=B.exports;exports.default=D;
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const m=require("./last-active-nodes.cjs"),l=require("@tiptap/core"),r=require("../../node_modules/@tiptap/vue-2.cjs"),a=require("@dialpad/dialtone-icons/vue2"),d=require("../../_plugin-vue2_normalizer-e_CkxkSV.cjs"),h=require("../item-layout/item-layout.cjs"),p=require("../button/button.cjs"),g=require("./message-input-topbar.cjs"),f=require("./message-input-link.cjs"),c=require("../editor/editor-constants.cjs"),b=require("../emoji-picker/emoji-picker.cjs"),k=require("../input/input.cjs"),_=require("../popover/popover.cjs"),x=require("../rich-text-editor/rich-text-editor.cjs"),T=require("../tooltip/tooltip.cjs"),v=require("../stack/stack.cjs"),u=require("../rich-text-editor/rich-text-editor-constants.cjs"),L={name:"MeetingPill",components:{NodeViewWrapper:r.NodeViewWrapper,DtItemLayout:h.default,DtIconClose:a.DtIconClose,DtButton:p.default,DtIconVideo:a.DtIconVideo},props:r.nodeViewProps,emits:["meeting-pill-close"],methods:{close(t){this.$parent.$emit("meeting-pill-close",t)}}};var y=function(){var e=this,i=e._self._c;return i("node-view-wrapper",{staticClass:"d-recipe-message-input-meeting-pill"},[i("dt-item-layout",{staticClass:"d-recipe-message-input-meeting-pill__layout",attrs:{unstyled:""},scopedSlots:e._u([{key:"left",fn:function(){return[i("div",{staticClass:"d-recipe-message-input-meeting-pill__icon"},[i("dt-icon-video",{attrs:{size:"400"}})],1)]},proxy:!0},{key:"right",fn:function(){return[i("div",{staticClass:"d-recipe-message-input-meeting-pill__close"},[i("dt-button",{attrs:{circle:"","aria-label":e.node.attrs["close-button-aria-label"],size:"xs",importance:"clear"},on:{click:e.close},scopedSlots:e._u([{key:"icon",fn:function(){return[i("dt-icon-close",{attrs:{size:"300"}})]},proxy:!0}])})],1)]},proxy:!0}])},[e._v(" "+e._s(e.node.attrs.text)+" ")])],1)},S=[],I=d.n(L,y,S);const w=I.exports,O=l.Node.create({atom:!0,group:"inline",inline:!0,addNodeView(){return r.VueNodeViewRenderer(w)},addAttributes(){return{text:{default:'Please pass in "text" attribute'},"close-button-aria-label":{}}},parseHTML(){return[{tag:"meeting-pill"}]},renderText({node:t}){return"/dpm"},renderHTML({HTMLAttributes:t}){return["meeting-pill",l.mergeAttributes(t)]}}),C={name:"DtRecipeMessageInput",components:{DtButton:p.default,DtEmojiPicker:b.default,DtInput:k.default,DtPopover:_.default,DtRecipeMessageInputTopbar:g.default,DtRecipeMessageInputLink:f.default,DtRichTextEditor:x.default,DtTooltip:T.default,DtStack:v.default,DtIconImage:a.DtIconImage,DtIconVerySatisfied:a.DtIconVerySatisfied,DtIconSatisfied:a.DtIconSatisfied,DtIconSend:a.DtIconSend},mixins:[],inheritAttrs:!1,props:{richText:{type:Boolean,default:!0},value:{type:[Object,String],default:""},editable:{type:Boolean,default:!0},inputAriaLabel:{type:String,required:!0,default:""},preventTyping:{type:Boolean,default:!1},inputClass:{type:String,default:""},autoFocus:{type:[Boolean,String,Number],default:!1,validator(t){return typeof t=="string"?u.RICH_TEXT_EDITOR_AUTOFOCUS_TYPES.includes(t):!0}},outputFormat:{type:String,default:"json",validator(t){return u.RICH_TEXT_EDITOR_OUTPUT_FORMATS.includes(t)}},placeholder:{type:String,default:""},disableSend:{type:Boolean,default:!1},maxHeight:{type:String,default:"unset"},showEmojiPicker:{type:Boolean,default:!0},emojiPickerProps:{type:Object,default:()=>({}),validate(t){return["searchNoResultsLabel","searchResultsLabel","searchPlaceholderLabel","skinSelectorButtonTooltipLabel","tabSetLabels"].every(e=>t[e]!=null)}},emojiTooltipMessage:{type:String,default:"Emoji"},emojiButtonAriaLabel:{type:String,default:"emoji button"},showCharacterLimit:{type:[Boolean,Object],default:()=>({count:1500,warning:500,message:""})},showImagePicker:{type:[Boolean,Object],default:()=>({tooltipLabel:"Attach Image",ariaLabel:"image button"})},showSend:{type:[Boolean,Object],default:()=>({})},showCancel:{type:[Boolean,Object],default:()=>({text:"Cancel"})},mentionSuggestion:{type:Object,default:null},channelSuggestion:{type:Object,default:null},slashCommandSuggestion:{type:Object,default:null},boldButtonOptions:{type:Object,default:()=>({ariaLabel:"Toggle bold on selected text",tooltipText:"Bold",keyboardShortcutText:"Mod + B"})},italicButtonOptions:{type:Object,default:()=>({ariaLabel:"Toggle italic on selected text",tooltipText:"Italic",keyboardShortcutText:"Mod + I"})},strikeButtonOptions:{type:Object,default:()=>({ariaLabel:"Toggle strikethrough on selected text",tooltipText:"Strikethrough",keyboardShortcutText:"Mod + Shift + S"})},linkButtonOptions:{type:Object,default:()=>({ariaLabel:"Create or edit link on selected text",tooltipText:"Link",keyboardShortcutText:"Mod + K",dialogTitle:"Add a link",textLabel:"Text to display (optional)",linkLabel:"Link",linkPlaceholder:"e.g. https://www.dialpad.com",removeLabel:"Remove",cancelLabel:"Cancel",confirmLabel:"Done",visuallyHiddenCloseText:"Close link dialog"})},bulletListButtonOptions:{type:Object,default:()=>({ariaLabel:"Toggle bullet list on selected text",tooltipText:"Bullet list",keyboardShortcutText:"Mod + Shift + 8"})},orderedListButtonOptions:{type:Object,default:()=>({ariaLabel:"Toggle ordered list on selected text",tooltipText:"Ordered list",keyboardShortcutText:"Mod + Shift + 7"})},blockQuoteButtonOptions:{type:Object,default:()=>({ariaLabel:"Toggle Blockquote on selected text",tooltipText:"Blockquote",keyboardShortcutText:"Mod + Shift + B"})},codeButtonOptions:{type:Object,default:()=>({ariaLabel:"Toggle code tag on selected text",tooltipText:"Code",keyboardShortcutText:"Mod + E"})},codeBlockButtonOptions:{type:Object,default:()=>({ariaLabel:"Toggle code block on selected text",tooltipText:"Code block",keyboardShortcutText:"Mod + Alt + C"})}},emits:["submit","select-media","add-media","paste-media","cancel","skin-tone","selected-emoji","selected-command","meeting-pill-close","update:value","text-input","add-emoji"],data(){return{lastActiveNodes:m.default,additionalExtensions:[O],internalInputValue:this.value,imagePickerFocus:!1,emojiPickerFocus:!1,emojiPickerOpened:!1,isFocused:!1,linkOptions:{class:"d-link d-c-text d-d-inline-block"},linkDialogOpen:!1,selectedText:"",text:"",hideLinkBubbleMenu:!1}},computed:{showSendIcon(){return!this.showSend.text},inputLength(){return this.text.length},displayCharacterLimitWarning(){return!!this.showCharacterLimit&&this.showCharacterLimit.count-this.inputLength<=this.showCharacterLimit.warning},characterLimitTooltipEnabled(){return this.showCharacterLimit.message&&this.showCharacterLimit.count-this.inputLength<0},isSendDisabled(){return this.disableSend||this.showCharacterLimit&&this.inputLength>this.showCharacterLimit.count},computedCloseButtonProps(){return{ariaLabel:"Close"}},emojiPickerHovered(){return this.emojiPickerFocus||this.emojiPickerOpened},sendIconSize(){return"300"}},watch:{value(t){this.internalInputValue=t},emojiPickerOpened(t){var e;t||(e=this.$refs.richTextEditor)==null||e.focusEditor()}},created(){this.value&&this.outputFormat==="text"?this.internalInputValue=this.value.replace(/\n/g,"<br>"):this.internalInputValue=this.value},methods:{linkDialogOpened(t){var e;this.linkDialogOpen=t,t===!0?this.initLinkDialog():(this.hideLinkBubbleMenu=!1,(e=this.$refs.richTextEditor)==null||e.focusEditor())},handleTopbarClick(t){var n;const e=(n=this.$refs.richTextEditor)==null?void 0:n.editor,i={bold:()=>e==null?void 0:e.chain().focus().toggleBold().run(),italic:()=>e==null?void 0:e.chain().focus().toggleItalic().run(),strike:()=>e==null?void 0:e.chain().focus().toggleStrike().run(),bulletList:()=>e==null?void 0:e.chain().focus().toggleBulletList().run(),orderedList:()=>e==null?void 0:e.chain().focus().toggleOrderedList().run(),blockquote:()=>e==null?void 0:e.chain().focus().toggleBlockquote().run(),code:()=>e==null?void 0:e.chain().focus().toggleCode().run(),codeBlock:()=>e==null?void 0:e.chain().focus().toggleCodeBlock().run()};e&&i[t]&&i[t]()},isSelectionActive(t){var e,i,n,o;return["bulletList","orderedList"].includes(t)?this.lastActiveNodes((i=(e=this.$refs.richTextEditor)==null?void 0:e.editor)==null?void 0:i.state,[{type:"bulletList"},{type:"orderedList"}]).includes(t)&&this.isFocused:((o=(n=this.$refs.richTextEditor)==null?void 0:n.editor)==null?void 0:o.isActive(t))&&this.isFocused},initLinkDialog(){var t,e,i;this.$refs.link.setInitialValues(this.selectedText,(i=(e=(t=this.$refs.richTextEditor)==null?void 0:t.editor)==null?void 0:e.getAttributes("link"))==null?void 0:i.href),this.hideLinkBubbleMenu=!0,this.linkDialogOpen=!0},removeLink(){var t;(t=this.$refs.richTextEditor)==null||t.removeLink(),this.linkDialogOpen=!1},setLink(t,e){this.$refs.richTextEditor.setLink(e,t,this.linkOptions,c.EDITOR_SUPPORTED_LINK_PROTOCOLS,c.EDITOR_DEFAULT_LINK_PREFIX),this.linkDialogOpen=!1},onMousedown(t){this.$refs.richTextEditor.$el.querySelector(".tiptap").contains(t.target)||(t.preventDefault(),this.$refs.richTextEditor.focusEditor())},onDrop(t){const e=t.dataTransfer,i=Array.from(e.files);this.$emit("add-media",i)},onPaste(t){if(t.clipboardData.files.length){t.stopPropagation(),t.preventDefault();const e=[...t.clipboardData.files];this.$emit("paste-media",e)}},onSkinTone(t){this.$emit("skin-tone",t)},onSelectEmoji(t,e){t&&(t.shift_key||e(),this.$refs.richTextEditor.editor.commands.insertContent({type:"emoji",attrs:{code:t.shortname}}),this.$emit("selected-emoji",t))},onSelectImage(){this.$refs.messageInputImageUpload.$refs.input.click()},onImageUpload(){this.$emit("select-media",this.$refs.messageInputImageUpload.$refs.input.files)},toggleEmojiPicker(){this.emojiPickerOpened=!this.emojiPickerOpened},onSend(){this.isSendDisabled||this.$emit("submit",this.internalInputValue)},onCancel(){this.$emit("cancel")},onInput(t){this.$emit("update:value",t)},onTextInput(t){this.text=t,this.$emit("text-input",t)}}};var j=function(){var n;var e=this,i=e._self._c;return i("div",{staticClass:"d-recipe-message-input",attrs:{"data-qa":"dt-recipe-message-input",role:"presentation"},on:{dragover:function(o){o.preventDefault()},drop:function(o){return o.preventDefault(),e.onDrop.apply(null,arguments)},paste:e.onPaste,mousedown:e.onMousedown}},[e._t("top"),e.richText?i("dt-recipe-message-input-topbar",{key:e.selectedText,attrs:{"bold-button-options":e.boldButtonOptions,"italic-button-options":e.italicButtonOptions,"strike-button-options":e.strikeButtonOptions,"bullet-list-button-options":e.bulletListButtonOptions,"ordered-list-button-options":e.orderedListButtonOptions,"block-quote-button-options":e.blockQuoteButtonOptions,"code-button-options":e.codeButtonOptions,"code-block-button-options":e.codeBlockButtonOptions,"is-selection-active":e.isSelectionActive},on:{click:e.handleTopbarClick},scopedSlots:e._u([{key:"link",fn:function(){return[i("dt-recipe-message-input-link",{ref:"link",attrs:{open:e.linkDialogOpen,"link-button-options":e.linkButtonOptions,"is-selection-active":e.isSelectionActive},on:{opened:e.linkDialogOpened,"set-link":e.setLink,"remove-link":e.removeLink}})]},proxy:!0}],null,!1,1527282285)}):e._e(),i("div",{directives:[{name:"dt-scrollbar",rawName:"v-dt-scrollbar"}],staticClass:"d-recipe-message-input__editor-wrapper",style:{"max-height":e.maxHeight}},[i("dt-rich-text-editor",e._g(e._b({ref:"richTextEditor",attrs:{editable:e.editable,"input-aria-label":e.inputAriaLabel,"input-class":e.inputClass,"output-format":e.outputFormat,"auto-focus":e.autoFocus,link:e.richText,placeholder:e.placeholder,"prevent-typing":e.preventTyping,"mention-suggestion":e.mentionSuggestion,"channel-suggestion":e.channelSuggestion,"slash-command-suggestion":e.slashCommandSuggestion,"allow-blockquote":e.richText,"allow-bold":e.richText,"allow-bullet-list":e.richText,"allow-code":e.richText,"allow-codeblock":e.richText,"allow-italic":e.richText,"allow-strike":e.richText,"allow-underline":e.richText,"additional-extensions":e.additionalExtensions,"hide-link-bubble-menu":e.hideLinkBubbleMenu},on:{input:e.onInput,"text-input":e.onTextInput,enter:e.onSend,selected:function(o){e.selectedText=o},"edit-link":e.initLinkDialog,focus:function(o){e.isFocused=!0},blur:function(o){e.isFocused=!1}},model:{value:e.internalInputValue,callback:function(o){e.internalInputValue=o},expression:"internalInputValue"}},"dt-rich-text-editor",e.$attrs,!1),e.$listeners))],1),e._t("middle"),i("section",{staticClass:"d-recipe-message-input__bottom-section"},[i("div",{staticClass:"d-recipe-message-input__bottom-section-left"},[i("dt-stack",{attrs:{direction:"row",gap:"200"}},[e.showImagePicker?i("dt-button",{directives:[{name:"dt-tooltip",rawName:"v-dt-tooltip:top-start",value:(n=e.showImagePicker)==null?void 0:n.tooltipLabel,expression:"showImagePicker?.tooltipLabel",arg:"top-start"}],staticClass:"d-recipe-message-input__button",attrs:{"data-qa":"dt-recipe-message-input-image-btn",size:"sm",kind:"muted",importance:"clear","aria-label":e.showImagePicker.ariaLabel},on:{click:e.onSelectImage,mouseenter:function(o){e.imagePickerFocus=!0},mouseleave:function(o){e.imagePickerFocus=!1},focus:function(o){e.imagePickerFocus=!0},blur:function(o){e.imagePickerFocus=!1}},scopedSlots:e._u([{key:"icon",fn:function(){return[i("dt-icon-image",{attrs:{size:"300"}})]},proxy:!0}],null,!1,4195307205)}):e._e(),i("dt-input",{ref:"messageInputImageUpload",staticClass:"d-recipe-message-input__image-input",attrs:{"data-qa":"dt-recipe-message-input-image-input",accept:"image/*, video/*",type:"file",multiple:"",hidden:""},on:{input:e.onImageUpload}}),e.showEmojiPicker?i("dt-popover",{attrs:{"open.sync":"emojiPickerOpened","data-qa":"dt-recipe-message-input-emoji-picker-popover","initial-focus-element":"#searchInput",padding:"none"},scopedSlots:e._u([{key:"anchor",fn:function({attrs:o}){return[i("dt-button",e._b({directives:[{name:"dt-tooltip",rawName:"v-dt-tooltip",value:e.emojiTooltipMessage,expression:"emojiTooltipMessage"}],staticClass:"d-recipe-message-input__button",attrs:{"data-qa":"dt-recipe-message-input-emoji-picker-btn",size:"sm",kind:"muted",importance:"clear","aria-label":e.emojiButtonAriaLabel},on:{click:e.toggleEmojiPicker,mouseenter:function(s){e.emojiPickerFocus=!0},mouseleave:function(s){e.emojiPickerFocus=!1},focus:function(s){e.emojiPickerFocus=!0},blur:function(s){e.emojiPickerFocus=!1}},scopedSlots:e._u([{key:"icon",fn:function(){return[e.emojiPickerHovered?i("dt-icon-very-satisfied",{attrs:{size:"300"}}):i("dt-icon-satisfied",{attrs:{size:"300"}})]},proxy:!0}],null,!0)},"dt-button",o,!1))]}},{key:"content",fn:function({close:o}){return[i("dt-emoji-picker",e._b({on:{"add-emoji":function(s){return e.$emit("add-emoji")},"skin-tone":e.onSkinTone,"selected-emoji":s=>e.onSelectEmoji(s,o)}},"dt-emoji-picker",e.emojiPickerProps,!1))]}}],null,!1,4220830595)}):e._e(),e._t("emojiGiphyPicker"),e._t("customActionIcons")],2)],1),i("div",{staticClass:"d-recipe-message-input__bottom-section-right"},[i("dt-stack",{attrs:{direction:"row",gap:"300"}},[i("div",{staticClass:"d-recipe-message-input__sms-count"},[e._t("smsCount")],2),e.showCharacterLimit?i("dt-tooltip",{staticClass:"d-recipe-message-input__remaining-char-tooltip",attrs:{placement:"top-end",enabled:e.characterLimitTooltipEnabled,message:e.showCharacterLimit.message,offset:[10,8]},scopedSlots:e._u([{key:"anchor",fn:function(){return[i("p",{directives:[{name:"show",rawName:"v-show",value:e.displayCharacterLimitWarning,expression:"displayCharacterLimitWarning"}],staticClass:"d-recipe-message-input__remaining-char",attrs:{"data-qa":"dt-recipe-message-input-character-limit"}},[e._v(" "+e._s(e.showCharacterLimit.count-e.inputLength)+" ")])]},proxy:!0}],null,!1,1021505058)}):e._e(),e.showCancel?i("dt-button",{staticClass:"d-recipe-message-input__button d-recipe-message-input__cancel-button",attrs:{"data-qa":"dt-recipe-message-input-cancel-button",size:"sm",kind:"muted",importance:"clear","aria-label":e.showCancel.ariaLabel},on:{click:e.onCancel}},[i("p",[e._v(e._s(e.showCancel.text))])]):e._e(),e._t("sendButton",function(){var o;return[e.showSend?i("dt-button",{directives:[{name:"dt-tooltip",rawName:"v-dt-tooltip:top-end",value:(o=e.showSend)==null?void 0:o.tooltipLabel,expression:"showSend?.tooltipLabel",arg:"top-end"}],class:["d-recipe-message-input__button d-recipe-message-input__send-button",{"d-recipe-message-input__send-button--disabled":e.isSendDisabled,"d-btn--icon-only":e.showSendIcon}],attrs:{"data-qa":"dt-recipe-message-input-send-btn",size:"sm",kind:"default",importance:"primary","aria-label":e.showSend.ariaLabel,"aria-disabled":e.isSendDisabled},on:{click:e.onSend},scopedSlots:e._u([e.showSendIcon?{key:"icon",fn:function(){return[e._t("sendIcon",function(){return[i("dt-icon-send",{attrs:{size:e.sendIconSize}})]},{iconSize:e.sendIconSize})]},proxy:!0}:null],null,!0)},[e.showSend.text?[i("p",[e._v(e._s(e.showSend.text))])]:e._e()],2):e._e()]})],2)],1)])],2)},P=[],B=d.n(C,j,P);const D=B.exports;exports.default=D;
|
|
2
2
|
//# sourceMappingURL=message-input.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"message-input.cjs","sources":["../../../recipes/conversation_view/message_input/extensions/meeting_pill/MeetingPill.vue","../../../recipes/conversation_view/message_input/extensions/meeting_pill/meeting_pill.js","../../../recipes/conversation_view/message_input/message_input.vue"],"sourcesContent":["<template>\n <node-view-wrapper class=\"d-recipe-message-input-meeting-pill\">\n <dt-item-layout\n class=\"d-recipe-message-input-meeting-pill__layout\"\n unstyled\n >\n <template #left>\n <div class=\"d-recipe-message-input-meeting-pill__icon\">\n <dt-icon-video\n size=\"400\"\n />\n </div>\n </template>\n {{ node.attrs.text }}\n <template #right>\n <div class=\"d-recipe-message-input-meeting-pill__close\">\n <dt-button\n circle\n :aria-label=\"node.attrs['close-button-aria-label']\"\n size=\"xs\"\n importance=\"clear\"\n @click=\"close\"\n >\n <template #icon>\n <dt-icon-close\n size=\"300\"\n />\n </template>\n </dt-button>\n </div>\n </template>\n </dt-item-layout>\n </node-view-wrapper>\n</template>\n\n<script>\nimport { NodeViewWrapper, nodeViewProps } from '@tiptap/vue-2';\nimport { DtItemLayout } from '@/components/item_layout';\nimport { DtIconClose, DtIconVideo } from '@dialpad/dialtone-icons/vue2';\nimport { DtButton } from '@/components/button';\n\nexport default {\n name: 'MeetingPill',\n\n components: {\n NodeViewWrapper,\n DtItemLayout,\n DtIconClose,\n DtButton,\n DtIconVideo,\n },\n\n props: nodeViewProps,\n\n emits: ['meeting-pill-close'],\n\n methods: {\n close (e) {\n this.$parent.$emit('meeting-pill-close', e);\n },\n },\n};\n</script>\n","import { mergeAttributes, Node } from '@tiptap/core';\nimport { VueNodeViewRenderer } from '@tiptap/vue-2';\nimport MeetingPill from './MeetingPill.vue';\n\nexport default Node.create({\n\n atom: true,\n group: 'inline',\n inline: true,\n\n addNodeView () {\n return VueNodeViewRenderer(MeetingPill);\n },\n\n addAttributes () {\n return {\n text: {\n default: 'Please pass in \"text\" attribute',\n },\n 'close-button-aria-label': {},\n };\n },\n\n parseHTML () {\n return [\n {\n tag: 'meeting-pill',\n },\n ];\n },\n\n renderText ({ node }) {\n return '/dpm';\n },\n\n renderHTML ({ HTMLAttributes }) {\n return ['meeting-pill', mergeAttributes(HTMLAttributes)];\n },\n});\n","<!-- eslint-disable max-lines -->\n<template>\n <div\n data-qa=\"dt-recipe-message-input\"\n role=\"presentation\"\n class=\"d-recipe-message-input\"\n @dragover.prevent\n @drop.prevent=\"onDrop\"\n @paste=\"onPaste\"\n @mousedown=\"onMousedown\"\n >\n <!-- @slot Renders above the input, but still within the borders. -->\n <slot name=\"top\" />\n\n <!-- set key to selectedText to force update. otherwise this component may not reflect the active selection -->\n <dt-recipe-message-input-topbar\n v-if=\"richText\"\n :key=\"selectedText\"\n :bold-button-options=\"boldButtonOptions\"\n :italic-button-options=\"italicButtonOptions\"\n :strike-button-options=\"strikeButtonOptions\"\n :bullet-list-button-options=\"bulletListButtonOptions\"\n :ordered-list-button-options=\"orderedListButtonOptions\"\n :block-quote-button-options=\"blockQuoteButtonOptions\"\n :code-button-options=\"codeButtonOptions\"\n :code-block-button-options=\"codeBlockButtonOptions\"\n :is-selection-active=\"isSelectionActive\"\n @click=\"handleTopbarClick\"\n >\n <template #link>\n <dt-recipe-message-input-link\n ref=\"link\"\n :open=\"linkDialogOpen\"\n :link-button-options=\"linkButtonOptions\"\n :is-selection-active=\"isSelectionActive\"\n @opened=\"linkDialogOpened\"\n @set-link=\"setLink\"\n @remove-link=\"removeLink\"\n />\n </template>\n </dt-recipe-message-input-topbar>\n <!-- Some wrapper to restrict the height and show the scrollbar -->\n <div\n v-dt-scrollbar\n class=\"d-recipe-message-input__editor-wrapper\"\n :style=\"{ 'max-height': maxHeight }\"\n >\n <dt-rich-text-editor\n ref=\"richTextEditor\"\n v-model=\"internalInputValue\"\n :editable=\"editable\"\n :input-aria-label=\"inputAriaLabel\"\n :input-class=\"inputClass\"\n :output-format=\"outputFormat\"\n :auto-focus=\"autoFocus\"\n :link=\"richText\"\n :placeholder=\"placeholder\"\n :prevent-typing=\"preventTyping\"\n :mention-suggestion=\"mentionSuggestion\"\n :channel-suggestion=\"channelSuggestion\"\n :slash-command-suggestion=\"slashCommandSuggestion\"\n :allow-blockquote=\"richText\"\n :allow-bold=\"richText\"\n :allow-bullet-list=\"richText\"\n :allow-code=\"richText\"\n :allow-codeblock=\"richText\"\n :allow-italic=\"richText\"\n :allow-strike=\"richText\"\n :allow-underline=\"richText\"\n :additional-extensions=\"additionalExtensions\"\n :hide-link-bubble-menu=\"hideLinkBubbleMenu\"\n v-bind=\"$attrs\"\n @input=\"onInput\"\n @text-input=\"onTextInput\"\n @enter=\"onSend\"\n @selected=\"selectedText = $event\"\n @edit-link=\"initLinkDialog\"\n @focus=\"isFocused = true\"\n @blur=\"isFocused = false\"\n v-on=\"$listeners\"\n />\n </div>\n <!-- @slot Slot for attachment carousel -->\n <slot name=\"middle\" />\n <!-- Section for the bottom UI -->\n <section class=\"d-recipe-message-input__bottom-section\">\n <!-- Left content -->\n <div class=\"d-recipe-message-input__bottom-section-left\">\n <dt-stack\n direction=\"row\"\n gap=\"200\"\n >\n <dt-button\n v-if=\"showImagePicker\"\n v-dt-tooltip:top-start=\"showImagePicker?.tooltipLabel\"\n data-qa=\"dt-recipe-message-input-image-btn\"\n size=\"sm\"\n class=\"d-recipe-message-input__button\"\n kind=\"muted\"\n importance=\"clear\"\n :aria-label=\"showImagePicker.ariaLabel\"\n @click=\"onSelectImage\"\n @mouseenter=\"imagePickerFocus = true\"\n @mouseleave=\"imagePickerFocus = false\"\n @focus=\"imagePickerFocus = true\"\n @blur=\"imagePickerFocus = false\"\n >\n <template #icon>\n <dt-icon-image size=\"300\" />\n </template>\n </dt-button>\n <dt-input\n ref=\"messageInputImageUpload\"\n data-qa=\"dt-recipe-message-input-image-input\"\n accept=\"image/*, video/*\"\n type=\"file\"\n class=\"d-recipe-message-input__image-input\"\n multiple\n hidden\n @input=\"onImageUpload\"\n />\n <dt-popover\n v-if=\"showEmojiPicker\"\n open.sync=\"emojiPickerOpened\"\n data-qa=\"dt-recipe-message-input-emoji-picker-popover\"\n initial-focus-element=\"#searchInput\"\n padding=\"none\"\n >\n <template #anchor=\"{ attrs }\">\n <dt-button\n v-dt-tooltip=\"emojiTooltipMessage\"\n v-bind=\"attrs\"\n data-qa=\"dt-recipe-message-input-emoji-picker-btn\"\n size=\"sm\"\n class=\"d-recipe-message-input__button\"\n kind=\"muted\"\n importance=\"clear\"\n :aria-label=\"emojiButtonAriaLabel\"\n @click=\"toggleEmojiPicker\"\n @mouseenter=\"emojiPickerFocus = true\"\n @mouseleave=\"emojiPickerFocus = false\"\n @focus=\"emojiPickerFocus = true\"\n @blur=\"emojiPickerFocus = false\"\n >\n <template #icon>\n <dt-icon-very-satisfied\n v-if=\"emojiPickerHovered\"\n size=\"300\"\n />\n <dt-icon-satisfied\n v-else\n size=\"300\"\n />\n </template>\n </dt-button>\n </template>\n <template #content=\"{ close }\">\n <dt-emoji-picker\n v-bind=\"emojiPickerProps\"\n @add-emoji=\"$emit('add-emoji')\"\n @skin-tone=\"onSkinTone\"\n @selected-emoji=\"(emoji) => onSelectEmoji(emoji, close)\"\n />\n </template>\n </dt-popover>\n <!-- @slot Slot for emojiGiphy picker -->\n <slot name=\"emojiGiphyPicker\" />\n <!-- @slot Slot to add extra action icons next to default ones -->\n <slot name=\"customActionIcons\" />\n </dt-stack>\n </div>\n <!-- Right content -->\n <div class=\"d-recipe-message-input__bottom-section-right\">\n <dt-stack\n direction=\"row\"\n gap=\"300\"\n >\n <!-- @slot Slot for sms count -->\n <div class=\"d-recipe-message-input__sms-count\">\n <slot name=\"smsCount\" />\n </div>\n\n <!-- Optionally displayed remaining character counter -->\n <dt-tooltip\n v-if=\"Boolean(showCharacterLimit)\"\n class=\"d-recipe-message-input__remaining-char-tooltip\"\n placement=\"top-end\"\n :enabled=\"characterLimitTooltipEnabled\"\n :message=\"showCharacterLimit.message\"\n :offset=\"[10, 8]\"\n >\n <template #anchor>\n <p\n v-show=\"displayCharacterLimitWarning\"\n class=\"d-recipe-message-input__remaining-char\"\n data-qa=\"dt-recipe-message-input-character-limit\"\n >\n {{ showCharacterLimit.count - inputLength }}\n </p>\n </template>\n </dt-tooltip>\n\n <!-- Cancel button for edit mode -->\n <dt-button\n v-if=\"showCancel\"\n data-qa=\"dt-recipe-message-input-cancel-button\"\n class=\"d-recipe-message-input__button d-recipe-message-input__cancel-button\"\n size=\"sm\"\n kind=\"muted\"\n importance=\"clear\"\n :aria-label=\"showCancel.ariaLabel\"\n @click=\"onCancel\"\n >\n <p>{{ showCancel.text }}</p>\n </dt-button>\n\n <!-- @slot Slot for sendButton picker -->\n <slot name=\"sendButton\">\n <!-- Send button -->\n <!-- Right positioned UI - send button -->\n <dt-button\n v-if=\"showSend\"\n v-dt-tooltip:top-end=\"showSend?.tooltipLabel\"\n data-qa=\"dt-recipe-message-input-send-btn\"\n size=\"sm\"\n kind=\"default\"\n importance=\"primary\"\n :class=\"[\n 'd-recipe-message-input__button d-recipe-message-input__send-button',\n {\n 'd-recipe-message-input__send-button--disabled': isSendDisabled,\n 'd-btn--icon-only': showSendIcon,\n },\n ]\"\n :aria-label=\"showSend.ariaLabel\"\n :aria-disabled=\"isSendDisabled\"\n @click=\"onSend\"\n >\n <template\n v-if=\"showSendIcon\"\n #icon\n >\n <!-- @slot Slot for send button icon -->\n <slot\n name=\"sendIcon\"\n :icon-size=\"sendIconSize\"\n >\n <dt-icon-send\n :size=\"sendIconSize\"\n />\n </slot>\n </template>\n <template\n v-if=\"showSend.text\"\n >\n <p>{{ showSend.text }}</p>\n </template>\n </dt-button>\n </slot>\n </dt-stack>\n </div>\n </section>\n </div>\n</template>\n\n<script>\n/* eslint-disable max-lines */\nimport {\n DtRichTextEditor,\n RICH_TEXT_EDITOR_OUTPUT_FORMATS,\n RICH_TEXT_EDITOR_AUTOFOCUS_TYPES,\n} from '@/components/rich_text_editor';\nimport lastActiveNodes from './last_active_nodes';\nimport MeetingPill from './extensions/meeting_pill/meeting_pill';\nimport { DtButton } from '@/components/button';\nimport { DtEmojiPicker } from '@/components/emoji_picker';\nimport { DtPopover } from '@/components/popover';\nimport { DtInput } from '@/components/input';\nimport { DtTooltip } from '@/components/tooltip';\nimport { DtStack } from '@/components/stack';\nimport {\n DtIconImage, DtIconVerySatisfied, DtIconSatisfied, DtIconSend,\n} from '@dialpad/dialtone-icons/vue2';\nimport DtRecipeMessageInputTopbar from './message_input_topbar.vue';\nimport DtRecipeMessageInputLink from './message_input_link.vue';\n\nimport {\n EDITOR_SUPPORTED_LINK_PROTOCOLS,\n EDITOR_DEFAULT_LINK_PREFIX,\n} from '../editor/editor_constants.js';\n\nexport default {\n name: 'DtRecipeMessageInput',\n\n components: {\n DtButton,\n DtEmojiPicker,\n DtInput,\n DtPopover,\n DtRecipeMessageInputTopbar,\n DtRecipeMessageInputLink,\n DtRichTextEditor,\n DtTooltip,\n DtStack,\n DtIconImage,\n DtIconVerySatisfied,\n DtIconSatisfied,\n DtIconSend,\n },\n\n mixins: [],\n\n inheritAttrs: false,\n\n props: {\n /**\n * Displays all the buttons for rich text formatting above the message input, and enables it within the editor.\n * Rich text formatting for the purposes of this component is defined as:\n *\n * bold, italic, strikethrough, lists, blockquotes, inline code tags, and code blocks.\n *\n * If you are sending a message to a phone rather than a Dialpad to Dialpad message, you should have this as false.\n */\n richText: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Value of the input. The object format should match TipTap's JSON\n * document structure: https://tiptap.dev/guide/output#option-1-json\n */\n value: {\n type: [Object, String],\n default: '',\n },\n\n /**\n * Whether the input is editable\n */\n editable: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Descriptive label for the input element\n */\n inputAriaLabel: {\n type: String,\n required: true,\n default: '',\n },\n\n /**\n * Prevents the user from typing any further. Deleting text will still work.\n */\n preventTyping: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Additional class name for the input element. Only accepts a String value\n * because this is passed to the editor via options. For multiple classes,\n * join them into one string, e.g. \"d-p8 d-hmx96\"\n */\n inputClass: {\n type: String,\n default: '',\n },\n\n /**\n * Whether the input should receive focus after the component has been\n * mounted. Either one of `start`, `end`, `all` or a Boolean or a Number.\n * - `start` Sets the focus to the beginning of the input\n * - `end` Sets the focus to the end of the input\n * - `all` Selects the whole contents of the input\n * - `Number` Sets the focus to a specific position in the input\n * - `true` Defaults to `start`\n * - `false` Disables autofocus\n * @values true, false, start, end, all, number\n */\n autoFocus: {\n type: [Boolean, String, Number],\n default: false,\n validator (autoFocus) {\n if (typeof autoFocus === 'string') {\n return RICH_TEXT_EDITOR_AUTOFOCUS_TYPES.includes(autoFocus);\n }\n return true;\n },\n },\n\n /**\n * The output format that the editor uses when emitting the \"@input\" event.\n * One of `text`, `json`, `html`. See https://tiptap.dev/guide/output for\n * examples.\n * @values text, json, html\n */\n outputFormat: {\n type: String,\n default: 'json',\n validator (outputFormat) {\n return RICH_TEXT_EDITOR_OUTPUT_FORMATS.includes(outputFormat);\n },\n },\n\n /**\n * Placeholder text\n */\n placeholder: {\n type: String,\n default: '',\n },\n\n /**\n * Disable Send Button\n */\n disableSend: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Content area needs to dynamically adjust height based on the conversation area height.\n * can be vh|px|rem|em|%\n */\n maxHeight: {\n type: String,\n default: 'unset',\n },\n\n // Emoji picker props\n showEmojiPicker: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Props to pass into the emoji picker.\n */\n emojiPickerProps: {\n type: Object,\n default: () => ({}),\n validate (emojiPickerProps) {\n return [\n 'searchNoResultsLabel',\n 'searchResultsLabel',\n 'searchPlaceholderLabel',\n 'skinSelectorButtonTooltipLabel',\n 'tabSetLabels',\n ].every(prop => emojiPickerProps[prop] != null);\n },\n },\n\n /**\n * Emoji button tooltip label\n */\n emojiTooltipMessage: {\n type: String,\n default: 'Emoji',\n },\n\n // Aria label for buttons\n /**\n * Emoji button aria label\n */\n emojiButtonAriaLabel: {\n type: String,\n default: 'emoji button',\n },\n\n /**\n * Enable character Limit warning\n */\n showCharacterLimit: {\n type: [Boolean, Object],\n default: () => ({ count: 1500, warning: 500, message: '' }),\n },\n\n showImagePicker: {\n type: [Boolean, Object],\n default: () => ({ tooltipLabel: 'Attach Image', ariaLabel: 'image button' }),\n },\n\n /**\n * Send button defaults.\n */\n showSend: {\n type: [Boolean, Object],\n default: () => ({}),\n },\n\n /**\n * Cancel button defaults.\n */\n showCancel: {\n type: [Boolean, Object],\n default: () => ({ text: 'Cancel' }),\n },\n\n /**\n * suggestion object containing the items query function.\n * The valid keys passed into this object can be found here: https://tiptap.dev/api/utilities/suggestion\n *\n * The only required key is the items function which is used to query the contacts for suggestion.\n * items({ query }) => { return [ContactObject]; }\n * ContactObject format:\n * { name: string, avatarSrc: string, id: string }\n *\n * When null, it does not add the plugin.\n */\n mentionSuggestion: {\n type: Object,\n default: null,\n },\n\n /**\n * suggestion object containing the items query function.\n * The valid keys passed into this object can be found here: https://tiptap.dev/api/utilities/suggestion\n *\n * The only required key is the items function which is used to query the channels for suggestion.\n * items({ query }) => { return [ChannelObject]; }\n * ChannelObject format:\n * { name: string, id: string, locked: boolean }\n *\n * When null, it does not add the plugin. Setting locked to true will display a lock rather than hash.\n */\n channelSuggestion: {\n type: Object,\n default: null,\n },\n\n /**\n * suggestion object containing the items query function.\n * The valid keys passed into this object can be found here: https://tiptap.dev/api/utilities/suggestion\n *\n * The only required key is the items function which is used to query the slash commands for suggestion.\n * items({ query }) => { return [SlashCommandObject]; }\n * SlashCommandObject format:\n * { command: string, description: string, parametersExample?: string }\n * The \"parametersExample\" parameter is optional, and describes an example\n * of the parameters that command can take.\n *\n * When null, it does not add the plugin.\n */\n slashCommandSuggestion: {\n type: Object,\n default: null,\n },\n\n /**\n * descriptive text fields for the bold button\n *\n * object format:\n * { ariaLabel: string, tooltipText: string, keyboardShortcutText: string }\n */\n boldButtonOptions: {\n type: Object,\n default: () => ({\n ariaLabel: 'Toggle bold on selected text',\n tooltipText: 'Bold',\n keyboardShortcutText: 'Mod + B',\n }),\n },\n\n /**\n * descriptive text fields for the italic button\n *\n * object format:\n * { ariaLabel: string, tooltipText: string, keyboardShortcutText: string }\n */\n italicButtonOptions: {\n type: Object,\n default: () => ({\n ariaLabel: 'Toggle italic on selected text',\n tooltipText: 'Italic',\n keyboardShortcutText: 'Mod + I',\n }),\n },\n\n /**\n * descriptive text fields for the strikethrough button\n *\n * object format:\n * { ariaLabel: string, tooltipText: string, keyboardShortcutText: string }\n */\n strikeButtonOptions: {\n type: Object,\n default: () => ({\n ariaLabel: 'Toggle strikethrough on selected text',\n tooltipText: 'Strikethrough',\n keyboardShortcutText: 'Mod + Shift + S',\n }),\n },\n\n /**\n * descriptive text fields for the link button\n *\n * object format:\n * { ariaLabel: string, tooltipText: string, keyboardShortcutText: string }\n */\n linkButtonOptions: {\n type: Object,\n default: () => ({\n ariaLabel: 'Create or edit link on selected text',\n tooltipText: 'Link',\n // TODO: implement mod k\n keyboardShortcutText: 'Mod + K',\n dialogTitle: 'Add a link',\n textLabel: 'Text to display (optional)',\n linkLabel: 'Link',\n linkPlaceholder: 'e.g. https://www.dialpad.com',\n removeLabel: 'Remove',\n cancelLabel: 'Cancel',\n confirmLabel: 'Done',\n visuallyHiddenCloseText: 'Close link dialog',\n }),\n },\n\n /**\n * descriptive text fields for the bullet list button\n *\n * object format:\n * { ariaLabel: string, tooltipText: string, keyboardShortcutText: string }\n */\n bulletListButtonOptions: {\n type: Object,\n default: () => ({\n ariaLabel: 'Toggle bullet list on selected text',\n tooltipText: 'Bullet list',\n keyboardShortcutText: 'Mod + Shift + 8',\n }),\n },\n\n /**\n * descriptive text fields for the ordered list button\n *\n * object format:\n * { ariaLabel: string, tooltipText: string, keyboardShortcutText: string }\n */\n orderedListButtonOptions: {\n type: Object,\n default: () => ({\n ariaLabel: 'Toggle ordered list on selected text',\n tooltipText: 'Ordered list',\n keyboardShortcutText: 'Mod + Shift + 7',\n }),\n },\n\n /**\n * descriptive text fields for the italic button\n *\n * object format:\n * { ariaLabel: string, tooltipText: string, keyboardShortcutText: string }\n */\n blockQuoteButtonOptions: {\n type: Object,\n default: () => ({\n ariaLabel: 'Toggle Blockquote on selected text',\n tooltipText: 'Blockquote',\n keyboardShortcutText: 'Mod + Shift + B',\n }),\n },\n\n /**\n * descriptive text fields for the code button\n *\n * object format:\n * { ariaLabel: string, tooltipText: string, keyboardShortcutText: string }\n */\n codeButtonOptions: {\n type: Object,\n default: () => ({\n ariaLabel: 'Toggle code tag on selected text',\n tooltipText: 'Code',\n keyboardShortcutText: 'Mod + E',\n }),\n },\n\n /**\n * descriptive text fields for the code block button\n *\n * object format:\n * { ariaLabel: string, tooltipText: string, keyboardShortcutText: string }\n */\n codeBlockButtonOptions: {\n type: Object,\n default: () => ({\n ariaLabel: 'Toggle code block on selected text',\n tooltipText: 'Code block',\n keyboardShortcutText: 'Mod + Alt + C',\n }),\n },\n },\n\n emits: [\n /**\n * Fires when send button is clicked\n *\n * @event submit\n * @type {String}\n */\n 'submit',\n\n /**\n * Fires when media is selected from image button\n *\n * @event select-media\n * @type {Array}\n */\n 'select-media',\n\n /**\n * Fires when media is dropped into the message input\n *\n * @event add-media\n * @type {Array}\n */\n 'add-media',\n\n /**\n * Fires when media is pasted into the message input\n *\n * @event paste-media\n * @type {Array}\n */\n 'paste-media',\n\n /**\n * Fires when cancel button is pressed (only on edit mode)\n *\n * @event cancel\n * @type {Boolean}\n */\n 'cancel',\n\n /**\n * Fires when skin tone is selected from the emoji picker\n *\n * @event skin-tone\n * @type {String}\n */\n 'skin-tone',\n\n /**\n * Fires when emoji is selected from the emoji picker\n *\n * @event selected-emoji\n * @type {String}\n */\n 'selected-emoji',\n\n /**\n * Fires when a slash command is selected\n *\n * @event selected-command\n * @type {String}\n */\n 'selected-command',\n\n /**\n * Fires when meeting pill is closed\n *\n * @event meeting-pill-close\n * @type {String}\n */\n 'meeting-pill-close',\n\n /**\n * Event to sync the value with the parent\n * @event update:value\n * @type {String|JSON}\n */\n 'update:value',\n\n /**\n * Emitted when input changes, returns text content only\n * @event text-input\n * @type {String}\n */\n 'text-input',\n\n /**\n * Emitted when the 'Add emoji' button is clicked\n * @event add-emoji\n * @type {Boolean}\n */\n 'add-emoji',\n ],\n\n data () {\n return {\n // If an ordered list is nested within an unordered list, we only want to show the currently selected list as\n // active. This function performs the logic to determine the farthest active node from the root.\n lastActiveNodes,\n additionalExtensions: [MeetingPill],\n internalInputValue: this.value, // internal input content\n imagePickerFocus: false,\n emojiPickerFocus: false,\n emojiPickerOpened: false,\n isFocused: false,\n linkOptions: {\n class: 'd-link d-c-text d-d-inline-block',\n },\n\n linkDialogOpen: false,\n selectedText: '',\n text: '',\n hideLinkBubbleMenu: false,\n };\n },\n\n computed: {\n\n showSendIcon () {\n return !this.showSend.text;\n },\n\n inputLength () {\n return this.text.length;\n },\n\n displayCharacterLimitWarning () {\n return Boolean(this.showCharacterLimit) &&\n ((this.showCharacterLimit.count - this.inputLength) <= this.showCharacterLimit.warning);\n },\n\n characterLimitTooltipEnabled () {\n return this.showCharacterLimit.message && (this.showCharacterLimit.count - this.inputLength < 0);\n },\n\n isSendDisabled () {\n return this.disableSend ||\n (this.showCharacterLimit && this.inputLength > this.showCharacterLimit.count);\n },\n\n computedCloseButtonProps () {\n return {\n ariaLabel: 'Close',\n };\n },\n\n emojiPickerHovered () {\n return this.emojiPickerFocus || this.emojiPickerOpened;\n },\n\n sendIconSize () {\n return '300';\n },\n },\n\n watch: {\n value (newValue) {\n this.internalInputValue = newValue;\n },\n\n emojiPickerOpened (newValue) {\n if (!newValue) {\n this.$refs.richTextEditor?.focusEditor();\n }\n },\n },\n\n created () {\n if (this.value && this.outputFormat === 'text') {\n this.internalInputValue = this.value.replace(/\\n/g, '<br>');\n } else {\n this.internalInputValue = this.value;\n }\n },\n\n methods: {\n linkDialogOpened (value) {\n this.linkDialogOpen = value;\n if (value === true) {\n this.initLinkDialog();\n } else {\n this.hideLinkBubbleMenu = false;\n this.$refs.richTextEditor?.focusEditor();\n }\n },\n\n // eslint-disable-next-line complexity\n handleTopbarClick (type) {\n const editor = this.$refs.richTextEditor?.editor;\n // Key is the name returned in the event, value is the name of the TipTap command function to run.\n const typeToCommandMap = {\n bold: () => editor?.chain().focus().toggleBold().run(),\n italic: () => editor?.chain().focus().toggleItalic().run(),\n strike: () => editor?.chain().focus().toggleStrike().run(),\n bulletList: () => editor?.chain().focus().toggleBulletList().run(),\n orderedList: () => editor?.chain().focus().toggleOrderedList().run(),\n blockquote: () => editor?.chain().focus().toggleBlockquote().run(),\n code: () => editor?.chain().focus().toggleCode().run(),\n codeBlock: () => editor?.chain().focus().toggleCodeBlock().run(),\n };\n\n if (editor && typeToCommandMap[type]) {\n typeToCommandMap[type]();\n }\n },\n\n // Checks if the node currently selected is active ex/ the bold button is active if the selected text is bold\n isSelectionActive (type) {\n if (['bulletList', 'orderedList'].includes(type)) {\n return this.lastActiveNodes(this.$refs.richTextEditor?.editor?.state, [{ type: 'bulletList' }, { type: 'orderedList' }]).includes(type) && this.isFocused;\n }\n return this.$refs.richTextEditor?.editor?.isActive(type) && this.isFocused;\n },\n\n initLinkDialog () {\n this.$refs.link.setInitialValues(this.selectedText, this.$refs.richTextEditor?.editor?.getAttributes('link')?.href);\n this.hideLinkBubbleMenu = true;\n this.linkDialogOpen = true;\n },\n\n removeLink () {\n this.$refs.richTextEditor?.removeLink();\n this.linkDialogOpen = false;\n },\n\n setLink (linkText, linkInput) {\n this.$refs.richTextEditor.setLink(\n linkInput, linkText, this.linkOptions, EDITOR_SUPPORTED_LINK_PROTOCOLS, EDITOR_DEFAULT_LINK_PREFIX,\n );\n this.linkDialogOpen = false;\n },\n\n // Mousedown instead of click because it fires before the blur event.\n onMousedown (e) {\n const isWithinInput = this.$refs.richTextEditor.$el.querySelector('.tiptap').contains(e.target);\n\n // If the click is not within the tiptap rich text editor input itself, but still within the wrapping div,\n // focus the editor.\n if (!isWithinInput) {\n // Prevent default prevents blurring the rich text editor input when it is already focused.\n e.preventDefault();\n this.$refs.richTextEditor.focusEditor();\n }\n },\n\n onDrop (e) {\n const dt = e.dataTransfer;\n const files = Array.from(dt.files);\n this.$emit('add-media', files);\n },\n\n onPaste (e) {\n if (e.clipboardData.files.length) {\n e.stopPropagation();\n e.preventDefault();\n const files = [...e.clipboardData.files];\n this.$emit('paste-media', files);\n }\n },\n\n onSkinTone (skinTone) {\n this.$emit('skin-tone', skinTone);\n },\n\n onSelectEmoji (emoji, close) {\n if (!emoji) {\n return;\n }\n\n if (!emoji.shift_key) {\n close();\n }\n\n // Insert emoji into the editor\n this.$refs.richTextEditor.editor.commands.insertContent({\n type: 'emoji',\n attrs: {\n code: emoji.shortname,\n },\n });\n this.$emit('selected-emoji', emoji);\n },\n\n onSelectImage () {\n this.$refs.messageInputImageUpload.$refs.input.click();\n },\n\n onImageUpload () {\n this.$emit('select-media', this.$refs.messageInputImageUpload.$refs.input.files);\n },\n\n toggleEmojiPicker () {\n this.emojiPickerOpened = !this.emojiPickerOpened;\n },\n\n onSend () {\n if (this.isSendDisabled) {\n return;\n }\n this.$emit('submit', this.internalInputValue);\n },\n\n onCancel () {\n this.$emit('cancel');\n },\n\n onInput (event) {\n this.$emit('update:value', event);\n },\n\n onTextInput (event) {\n this.text = event;\n this.$emit('text-input', event);\n },\n },\n};\n</script>\n"],"names":["_sfc_main","NodeViewWrapper","DtItemLayout","DtIconClose","DtButton","DtIconVideo","nodeViewProps","e","Node","VueNodeViewRenderer","MeetingPill","node","HTMLAttributes","mergeAttributes","DtEmojiPicker","DtInput","DtPopover","DtRecipeMessageInputTopbar","DtRecipeMessageInputLink","DtRichTextEditor","DtTooltip","DtStack","DtIconImage","DtIconVerySatisfied","DtIconSatisfied","DtIconSend","autoFocus","RICH_TEXT_EDITOR_AUTOFOCUS_TYPES","outputFormat","RICH_TEXT_EDITOR_OUTPUT_FORMATS","emojiPickerProps","prop","lastActiveNodes","newValue","_a","value","type","editor","typeToCommandMap","_b","_d","_c","linkText","linkInput","EDITOR_SUPPORTED_LINK_PROTOCOLS","EDITOR_DEFAULT_LINK_PREFIX","dt","files","skinTone","emoji","close","event"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"message-input.cjs","sources":["../../../recipes/conversation_view/message_input/extensions/meeting_pill/MeetingPill.vue","../../../recipes/conversation_view/message_input/extensions/meeting_pill/meeting_pill.js","../../../recipes/conversation_view/message_input/message_input.vue"],"sourcesContent":["<template>\n <node-view-wrapper class=\"d-recipe-message-input-meeting-pill\">\n <dt-item-layout\n class=\"d-recipe-message-input-meeting-pill__layout\"\n unstyled\n >\n <template #left>\n <div class=\"d-recipe-message-input-meeting-pill__icon\">\n <dt-icon-video\n size=\"400\"\n />\n </div>\n </template>\n {{ node.attrs.text }}\n <template #right>\n <div class=\"d-recipe-message-input-meeting-pill__close\">\n <dt-button\n circle\n :aria-label=\"node.attrs['close-button-aria-label']\"\n size=\"xs\"\n importance=\"clear\"\n @click=\"close\"\n >\n <template #icon>\n <dt-icon-close\n size=\"300\"\n />\n </template>\n </dt-button>\n </div>\n </template>\n </dt-item-layout>\n </node-view-wrapper>\n</template>\n\n<script>\nimport { NodeViewWrapper, nodeViewProps } from '@tiptap/vue-2';\nimport { DtItemLayout } from '@/components/item_layout';\nimport { DtIconClose, DtIconVideo } from '@dialpad/dialtone-icons/vue2';\nimport { DtButton } from '@/components/button';\n\nexport default {\n name: 'MeetingPill',\n\n components: {\n NodeViewWrapper,\n DtItemLayout,\n DtIconClose,\n DtButton,\n DtIconVideo,\n },\n\n props: nodeViewProps,\n\n emits: ['meeting-pill-close'],\n\n methods: {\n close (e) {\n this.$parent.$emit('meeting-pill-close', e);\n },\n },\n};\n</script>\n","import { mergeAttributes, Node } from '@tiptap/core';\nimport { VueNodeViewRenderer } from '@tiptap/vue-2';\nimport MeetingPill from './MeetingPill.vue';\n\nexport default Node.create({\n\n atom: true,\n group: 'inline',\n inline: true,\n\n addNodeView () {\n return VueNodeViewRenderer(MeetingPill);\n },\n\n addAttributes () {\n return {\n text: {\n default: 'Please pass in \"text\" attribute',\n },\n 'close-button-aria-label': {},\n };\n },\n\n parseHTML () {\n return [\n {\n tag: 'meeting-pill',\n },\n ];\n },\n\n renderText ({ node }) {\n return '/dpm';\n },\n\n renderHTML ({ HTMLAttributes }) {\n return ['meeting-pill', mergeAttributes(HTMLAttributes)];\n },\n});\n","<!-- eslint-disable max-lines -->\n<template>\n <div\n data-qa=\"dt-recipe-message-input\"\n role=\"presentation\"\n class=\"d-recipe-message-input\"\n @dragover.prevent\n @drop.prevent=\"onDrop\"\n @paste=\"onPaste\"\n @mousedown=\"onMousedown\"\n >\n <!-- @slot Renders above the input, but still within the borders. -->\n <slot name=\"top\" />\n\n <!-- set key to selectedText to force update. otherwise this component may not reflect the active selection -->\n <dt-recipe-message-input-topbar\n v-if=\"richText\"\n :key=\"selectedText\"\n :bold-button-options=\"boldButtonOptions\"\n :italic-button-options=\"italicButtonOptions\"\n :strike-button-options=\"strikeButtonOptions\"\n :bullet-list-button-options=\"bulletListButtonOptions\"\n :ordered-list-button-options=\"orderedListButtonOptions\"\n :block-quote-button-options=\"blockQuoteButtonOptions\"\n :code-button-options=\"codeButtonOptions\"\n :code-block-button-options=\"codeBlockButtonOptions\"\n :is-selection-active=\"isSelectionActive\"\n @click=\"handleTopbarClick\"\n >\n <template #link>\n <dt-recipe-message-input-link\n ref=\"link\"\n :open=\"linkDialogOpen\"\n :link-button-options=\"linkButtonOptions\"\n :is-selection-active=\"isSelectionActive\"\n @opened=\"linkDialogOpened\"\n @set-link=\"setLink\"\n @remove-link=\"removeLink\"\n />\n </template>\n </dt-recipe-message-input-topbar>\n <!-- Some wrapper to restrict the height and show the scrollbar -->\n <div\n v-dt-scrollbar\n class=\"d-recipe-message-input__editor-wrapper\"\n :style=\"{ 'max-height': maxHeight }\"\n >\n <dt-rich-text-editor\n ref=\"richTextEditor\"\n v-model=\"internalInputValue\"\n :editable=\"editable\"\n :input-aria-label=\"inputAriaLabel\"\n :input-class=\"inputClass\"\n :output-format=\"outputFormat\"\n :auto-focus=\"autoFocus\"\n :link=\"richText\"\n :placeholder=\"placeholder\"\n :prevent-typing=\"preventTyping\"\n :mention-suggestion=\"mentionSuggestion\"\n :channel-suggestion=\"channelSuggestion\"\n :slash-command-suggestion=\"slashCommandSuggestion\"\n :allow-blockquote=\"richText\"\n :allow-bold=\"richText\"\n :allow-bullet-list=\"richText\"\n :allow-code=\"richText\"\n :allow-codeblock=\"richText\"\n :allow-italic=\"richText\"\n :allow-strike=\"richText\"\n :allow-underline=\"richText\"\n :additional-extensions=\"additionalExtensions\"\n :hide-link-bubble-menu=\"hideLinkBubbleMenu\"\n v-bind=\"$attrs\"\n @input=\"onInput\"\n @text-input=\"onTextInput\"\n @enter=\"onSend\"\n @selected=\"selectedText = $event\"\n @edit-link=\"initLinkDialog\"\n @focus=\"isFocused = true\"\n @blur=\"isFocused = false\"\n v-on=\"$listeners\"\n />\n </div>\n <!-- @slot Slot for attachment carousel -->\n <slot name=\"middle\" />\n <!-- Section for the bottom UI -->\n <section class=\"d-recipe-message-input__bottom-section\">\n <!-- Left content -->\n <div class=\"d-recipe-message-input__bottom-section-left\">\n <dt-stack\n direction=\"row\"\n gap=\"200\"\n >\n <dt-button\n v-if=\"showImagePicker\"\n v-dt-tooltip:top-start=\"showImagePicker?.tooltipLabel\"\n data-qa=\"dt-recipe-message-input-image-btn\"\n size=\"sm\"\n class=\"d-recipe-message-input__button\"\n kind=\"muted\"\n importance=\"clear\"\n :aria-label=\"showImagePicker.ariaLabel\"\n @click=\"onSelectImage\"\n @mouseenter=\"imagePickerFocus = true\"\n @mouseleave=\"imagePickerFocus = false\"\n @focus=\"imagePickerFocus = true\"\n @blur=\"imagePickerFocus = false\"\n >\n <template #icon>\n <dt-icon-image size=\"300\" />\n </template>\n </dt-button>\n <dt-input\n ref=\"messageInputImageUpload\"\n data-qa=\"dt-recipe-message-input-image-input\"\n accept=\"image/*, video/*\"\n type=\"file\"\n class=\"d-recipe-message-input__image-input\"\n multiple\n hidden\n @input=\"onImageUpload\"\n />\n <dt-popover\n v-if=\"showEmojiPicker\"\n open.sync=\"emojiPickerOpened\"\n data-qa=\"dt-recipe-message-input-emoji-picker-popover\"\n initial-focus-element=\"#searchInput\"\n padding=\"none\"\n >\n <template #anchor=\"{ attrs }\">\n <dt-button\n v-dt-tooltip=\"emojiTooltipMessage\"\n v-bind=\"attrs\"\n data-qa=\"dt-recipe-message-input-emoji-picker-btn\"\n size=\"sm\"\n class=\"d-recipe-message-input__button\"\n kind=\"muted\"\n importance=\"clear\"\n :aria-label=\"emojiButtonAriaLabel\"\n @click=\"toggleEmojiPicker\"\n @mouseenter=\"emojiPickerFocus = true\"\n @mouseleave=\"emojiPickerFocus = false\"\n @focus=\"emojiPickerFocus = true\"\n @blur=\"emojiPickerFocus = false\"\n >\n <template #icon>\n <dt-icon-very-satisfied\n v-if=\"emojiPickerHovered\"\n size=\"300\"\n />\n <dt-icon-satisfied\n v-else\n size=\"300\"\n />\n </template>\n </dt-button>\n </template>\n <template #content=\"{ close }\">\n <dt-emoji-picker\n v-bind=\"emojiPickerProps\"\n @add-emoji=\"$emit('add-emoji')\"\n @skin-tone=\"onSkinTone\"\n @selected-emoji=\"(emoji) => onSelectEmoji(emoji, close)\"\n />\n </template>\n </dt-popover>\n <!-- @slot Slot for emojiGiphy picker -->\n <slot name=\"emojiGiphyPicker\" />\n <!-- @slot Slot to add extra action icons next to default ones -->\n <slot name=\"customActionIcons\" />\n </dt-stack>\n </div>\n <!-- Right content -->\n <div class=\"d-recipe-message-input__bottom-section-right\">\n <dt-stack\n direction=\"row\"\n gap=\"300\"\n >\n <!-- @slot Slot for sms count -->\n <div class=\"d-recipe-message-input__sms-count\">\n <slot name=\"smsCount\" />\n </div>\n\n <!-- Optionally displayed remaining character counter -->\n <dt-tooltip\n v-if=\"Boolean(showCharacterLimit)\"\n class=\"d-recipe-message-input__remaining-char-tooltip\"\n placement=\"top-end\"\n :enabled=\"characterLimitTooltipEnabled\"\n :message=\"showCharacterLimit.message\"\n :offset=\"[10, 8]\"\n >\n <template #anchor>\n <p\n v-show=\"displayCharacterLimitWarning\"\n class=\"d-recipe-message-input__remaining-char\"\n data-qa=\"dt-recipe-message-input-character-limit\"\n >\n {{ showCharacterLimit.count - inputLength }}\n </p>\n </template>\n </dt-tooltip>\n\n <!-- Cancel button for edit mode -->\n <dt-button\n v-if=\"showCancel\"\n data-qa=\"dt-recipe-message-input-cancel-button\"\n class=\"d-recipe-message-input__button d-recipe-message-input__cancel-button\"\n size=\"sm\"\n kind=\"muted\"\n importance=\"clear\"\n :aria-label=\"showCancel.ariaLabel\"\n @click=\"onCancel\"\n >\n <p>{{ showCancel.text }}</p>\n </dt-button>\n\n <!-- @slot Slot for sendButton picker -->\n <slot name=\"sendButton\">\n <!-- Send button -->\n <!-- Right positioned UI - send button -->\n <dt-button\n v-if=\"showSend\"\n v-dt-tooltip:top-end=\"showSend?.tooltipLabel\"\n data-qa=\"dt-recipe-message-input-send-btn\"\n size=\"sm\"\n kind=\"default\"\n importance=\"primary\"\n :class=\"[\n 'd-recipe-message-input__button d-recipe-message-input__send-button',\n {\n 'd-recipe-message-input__send-button--disabled': isSendDisabled,\n 'd-btn--icon-only': showSendIcon,\n },\n ]\"\n :aria-label=\"showSend.ariaLabel\"\n :aria-disabled=\"isSendDisabled\"\n @click=\"onSend\"\n >\n <template\n v-if=\"showSendIcon\"\n #icon\n >\n <!-- @slot Slot for send button icon -->\n <slot\n name=\"sendIcon\"\n :icon-size=\"sendIconSize\"\n >\n <dt-icon-send\n :size=\"sendIconSize\"\n />\n </slot>\n </template>\n <template\n v-if=\"showSend.text\"\n >\n <p>{{ showSend.text }}</p>\n </template>\n </dt-button>\n </slot>\n </dt-stack>\n </div>\n </section>\n </div>\n</template>\n\n<script>\n/* eslint-disable max-lines */\nimport {\n DtRichTextEditor,\n RICH_TEXT_EDITOR_OUTPUT_FORMATS,\n RICH_TEXT_EDITOR_AUTOFOCUS_TYPES,\n} from '@/components/rich_text_editor';\nimport lastActiveNodes from './last_active_nodes';\nimport MeetingPill from './extensions/meeting_pill/meeting_pill';\nimport { DtButton } from '@/components/button';\nimport { DtEmojiPicker } from '@/components/emoji_picker';\nimport { DtPopover } from '@/components/popover';\nimport { DtInput } from '@/components/input';\nimport { DtTooltip } from '@/components/tooltip';\nimport { DtStack } from '@/components/stack';\nimport {\n DtIconImage, DtIconVerySatisfied, DtIconSatisfied, DtIconSend,\n} from '@dialpad/dialtone-icons/vue2';\nimport DtRecipeMessageInputTopbar from './message_input_topbar.vue';\nimport DtRecipeMessageInputLink from './message_input_link.vue';\n\nimport {\n EDITOR_SUPPORTED_LINK_PROTOCOLS,\n EDITOR_DEFAULT_LINK_PREFIX,\n} from '../editor/editor_constants.js';\n\nexport default {\n name: 'DtRecipeMessageInput',\n\n components: {\n DtButton,\n DtEmojiPicker,\n DtInput,\n DtPopover,\n DtRecipeMessageInputTopbar,\n DtRecipeMessageInputLink,\n DtRichTextEditor,\n DtTooltip,\n DtStack,\n DtIconImage,\n DtIconVerySatisfied,\n DtIconSatisfied,\n DtIconSend,\n },\n\n mixins: [],\n\n inheritAttrs: false,\n\n props: {\n /**\n * Displays all the buttons for rich text formatting above the message input, and enables it within the editor.\n * Rich text formatting for the purposes of this component is defined as:\n *\n * bold, italic, strikethrough, lists, blockquotes, inline code tags, and code blocks.\n *\n * If you are sending a message to a phone rather than a Dialpad to Dialpad message, you should have this as false.\n */\n richText: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Value of the input. The object format should match TipTap's JSON\n * document structure: https://tiptap.dev/guide/output#option-1-json\n */\n value: {\n type: [Object, String],\n default: '',\n },\n\n /**\n * Whether the input is editable\n */\n editable: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Descriptive label for the input element\n */\n inputAriaLabel: {\n type: String,\n required: true,\n default: '',\n },\n\n /**\n * Prevents the user from typing any further. Deleting text will still work.\n */\n preventTyping: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Additional class name for the input element. Only accepts a String value\n * because this is passed to the editor via options. For multiple classes,\n * join them into one string, e.g. \"d-p8 d-hmx96\"\n */\n inputClass: {\n type: String,\n default: '',\n },\n\n /**\n * Whether the input should receive focus after the component has been\n * mounted. Either one of `start`, `end`, `all` or a Boolean or a Number.\n * - `start` Sets the focus to the beginning of the input\n * - `end` Sets the focus to the end of the input\n * - `all` Selects the whole contents of the input\n * - `Number` Sets the focus to a specific position in the input\n * - `true` Defaults to `start`\n * - `false` Disables autofocus\n * @values true, false, start, end, all, number\n */\n autoFocus: {\n type: [Boolean, String, Number],\n default: false,\n validator (autoFocus) {\n if (typeof autoFocus === 'string') {\n return RICH_TEXT_EDITOR_AUTOFOCUS_TYPES.includes(autoFocus);\n }\n return true;\n },\n },\n\n /**\n * The output format that the editor uses when emitting the \"@input\" event.\n * One of `text`, `json`, `html`. See https://tiptap.dev/guide/output for\n * examples.\n * @values text, json, html\n */\n outputFormat: {\n type: String,\n default: 'json',\n validator (outputFormat) {\n return RICH_TEXT_EDITOR_OUTPUT_FORMATS.includes(outputFormat);\n },\n },\n\n /**\n * Placeholder text\n */\n placeholder: {\n type: String,\n default: '',\n },\n\n /**\n * Disable Send Button\n */\n disableSend: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Content area needs to dynamically adjust height based on the conversation area height.\n * can be vh|px|rem|em|%\n */\n maxHeight: {\n type: String,\n default: 'unset',\n },\n\n // Emoji picker props\n showEmojiPicker: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Props to pass into the emoji picker.\n */\n emojiPickerProps: {\n type: Object,\n default: () => ({}),\n validate (emojiPickerProps) {\n return [\n 'searchNoResultsLabel',\n 'searchResultsLabel',\n 'searchPlaceholderLabel',\n 'skinSelectorButtonTooltipLabel',\n 'tabSetLabels',\n ].every(prop => emojiPickerProps[prop] != null);\n },\n },\n\n /**\n * Emoji button tooltip label\n */\n emojiTooltipMessage: {\n type: String,\n default: 'Emoji',\n },\n\n // Aria label for buttons\n /**\n * Emoji button aria label\n */\n emojiButtonAriaLabel: {\n type: String,\n default: 'emoji button',\n },\n\n /**\n * Enable character Limit warning\n */\n showCharacterLimit: {\n type: [Boolean, Object],\n default: () => ({ count: 1500, warning: 500, message: '' }),\n },\n\n showImagePicker: {\n type: [Boolean, Object],\n default: () => ({ tooltipLabel: 'Attach Image', ariaLabel: 'image button' }),\n },\n\n /**\n * Send button defaults.\n */\n showSend: {\n type: [Boolean, Object],\n default: () => ({}),\n },\n\n /**\n * Cancel button defaults.\n */\n showCancel: {\n type: [Boolean, Object],\n default: () => ({ text: 'Cancel' }),\n },\n\n /**\n * suggestion object containing the items query function.\n * The valid keys passed into this object can be found here: https://tiptap.dev/api/utilities/suggestion\n *\n * The only required key is the items function which is used to query the contacts for suggestion.\n * items({ query }) => { return [ContactObject]; }\n * ContactObject format:\n * { name: string, avatarSrc: string, id: string }\n *\n * When null, it does not add the plugin.\n */\n mentionSuggestion: {\n type: Object,\n default: null,\n },\n\n /**\n * suggestion object containing the items query function.\n * The valid keys passed into this object can be found here: https://tiptap.dev/api/utilities/suggestion\n *\n * The only required key is the items function which is used to query the channels for suggestion.\n * items({ query }) => { return [ChannelObject]; }\n * ChannelObject format:\n * { name: string, id: string, locked: boolean }\n *\n * When null, it does not add the plugin. Setting locked to true will display a lock rather than hash.\n */\n channelSuggestion: {\n type: Object,\n default: null,\n },\n\n /**\n * suggestion object containing the items query function.\n * The valid keys passed into this object can be found here: https://tiptap.dev/api/utilities/suggestion\n *\n * The only required key is the items function which is used to query the slash commands for suggestion.\n * items({ query }) => { return [SlashCommandObject]; }\n * SlashCommandObject format:\n * { command: string, description: string, parametersExample?: string }\n * The \"parametersExample\" parameter is optional, and describes an example\n * of the parameters that command can take.\n *\n * When null, it does not add the plugin.\n */\n slashCommandSuggestion: {\n type: Object,\n default: null,\n },\n\n /**\n * descriptive text fields for the bold button\n *\n * object format:\n * { ariaLabel: string, tooltipText: string, keyboardShortcutText: string }\n */\n boldButtonOptions: {\n type: Object,\n default: () => ({\n ariaLabel: 'Toggle bold on selected text',\n tooltipText: 'Bold',\n keyboardShortcutText: 'Mod + B',\n }),\n },\n\n /**\n * descriptive text fields for the italic button\n *\n * object format:\n * { ariaLabel: string, tooltipText: string, keyboardShortcutText: string }\n */\n italicButtonOptions: {\n type: Object,\n default: () => ({\n ariaLabel: 'Toggle italic on selected text',\n tooltipText: 'Italic',\n keyboardShortcutText: 'Mod + I',\n }),\n },\n\n /**\n * descriptive text fields for the strikethrough button\n *\n * object format:\n * { ariaLabel: string, tooltipText: string, keyboardShortcutText: string }\n */\n strikeButtonOptions: {\n type: Object,\n default: () => ({\n ariaLabel: 'Toggle strikethrough on selected text',\n tooltipText: 'Strikethrough',\n keyboardShortcutText: 'Mod + Shift + S',\n }),\n },\n\n /**\n * descriptive text fields for the link button\n *\n * object format:\n * { ariaLabel: string, tooltipText: string, keyboardShortcutText: string }\n */\n linkButtonOptions: {\n type: Object,\n default: () => ({\n ariaLabel: 'Create or edit link on selected text',\n tooltipText: 'Link',\n // TODO: implement mod k\n keyboardShortcutText: 'Mod + K',\n dialogTitle: 'Add a link',\n textLabel: 'Text to display (optional)',\n linkLabel: 'Link',\n linkPlaceholder: 'e.g. https://www.dialpad.com',\n removeLabel: 'Remove',\n cancelLabel: 'Cancel',\n confirmLabel: 'Done',\n visuallyHiddenCloseText: 'Close link dialog',\n }),\n },\n\n /**\n * descriptive text fields for the bullet list button\n *\n * object format:\n * { ariaLabel: string, tooltipText: string, keyboardShortcutText: string }\n */\n bulletListButtonOptions: {\n type: Object,\n default: () => ({\n ariaLabel: 'Toggle bullet list on selected text',\n tooltipText: 'Bullet list',\n keyboardShortcutText: 'Mod + Shift + 8',\n }),\n },\n\n /**\n * descriptive text fields for the ordered list button\n *\n * object format:\n * { ariaLabel: string, tooltipText: string, keyboardShortcutText: string }\n */\n orderedListButtonOptions: {\n type: Object,\n default: () => ({\n ariaLabel: 'Toggle ordered list on selected text',\n tooltipText: 'Ordered list',\n keyboardShortcutText: 'Mod + Shift + 7',\n }),\n },\n\n /**\n * descriptive text fields for the italic button\n *\n * object format:\n * { ariaLabel: string, tooltipText: string, keyboardShortcutText: string }\n */\n blockQuoteButtonOptions: {\n type: Object,\n default: () => ({\n ariaLabel: 'Toggle Blockquote on selected text',\n tooltipText: 'Blockquote',\n keyboardShortcutText: 'Mod + Shift + B',\n }),\n },\n\n /**\n * descriptive text fields for the code button\n *\n * object format:\n * { ariaLabel: string, tooltipText: string, keyboardShortcutText: string }\n */\n codeButtonOptions: {\n type: Object,\n default: () => ({\n ariaLabel: 'Toggle code tag on selected text',\n tooltipText: 'Code',\n keyboardShortcutText: 'Mod + E',\n }),\n },\n\n /**\n * descriptive text fields for the code block button\n *\n * object format:\n * { ariaLabel: string, tooltipText: string, keyboardShortcutText: string }\n */\n codeBlockButtonOptions: {\n type: Object,\n default: () => ({\n ariaLabel: 'Toggle code block on selected text',\n tooltipText: 'Code block',\n keyboardShortcutText: 'Mod + Alt + C',\n }),\n },\n },\n\n emits: [\n /**\n * Fires when send button is clicked\n *\n * @event submit\n * @type {String}\n */\n 'submit',\n\n /**\n * Fires when media is selected from image button\n *\n * @event select-media\n * @type {Array}\n */\n 'select-media',\n\n /**\n * Fires when media is dropped into the message input\n *\n * @event add-media\n * @type {Array}\n */\n 'add-media',\n\n /**\n * Fires when media is pasted into the message input\n *\n * @event paste-media\n * @type {Array}\n */\n 'paste-media',\n\n /**\n * Fires when cancel button is pressed (only on edit mode)\n *\n * @event cancel\n * @type {Boolean}\n */\n 'cancel',\n\n /**\n * Fires when skin tone is selected from the emoji picker\n *\n * @event skin-tone\n * @type {String}\n */\n 'skin-tone',\n\n /**\n * Fires when emoji is selected from the emoji picker\n *\n * @event selected-emoji\n * @type {String}\n */\n 'selected-emoji',\n\n /**\n * Fires when a slash command is selected\n *\n * @event selected-command\n * @type {String}\n */\n 'selected-command',\n\n /**\n * Fires when meeting pill is closed\n *\n * @event meeting-pill-close\n * @type {String}\n */\n 'meeting-pill-close',\n\n /**\n * Event to sync the value with the parent\n * @event update:value\n * @type {String|JSON}\n */\n 'update:value',\n\n /**\n * Emitted when input changes, returns text content only\n * @event text-input\n * @type {String}\n */\n 'text-input',\n\n /**\n * Emitted when the 'Add emoji' button is clicked\n * @event add-emoji\n * @type {Boolean}\n */\n 'add-emoji',\n ],\n\n data () {\n return {\n // If an ordered list is nested within an unordered list, we only want to show the currently selected list as\n // active. This function performs the logic to determine the farthest active node from the root.\n lastActiveNodes,\n additionalExtensions: [MeetingPill],\n internalInputValue: this.value, // internal input content\n imagePickerFocus: false,\n emojiPickerFocus: false,\n emojiPickerOpened: false,\n isFocused: false,\n linkOptions: {\n class: 'd-link d-c-text d-d-inline-block',\n },\n\n linkDialogOpen: false,\n selectedText: '',\n text: '',\n hideLinkBubbleMenu: false,\n };\n },\n\n computed: {\n\n showSendIcon () {\n return !this.showSend.text;\n },\n\n inputLength () {\n return this.text.length;\n },\n\n displayCharacterLimitWarning () {\n return Boolean(this.showCharacterLimit) &&\n ((this.showCharacterLimit.count - this.inputLength) <= this.showCharacterLimit.warning);\n },\n\n characterLimitTooltipEnabled () {\n return this.showCharacterLimit.message && (this.showCharacterLimit.count - this.inputLength < 0);\n },\n\n isSendDisabled () {\n return this.disableSend ||\n (this.showCharacterLimit && this.inputLength > this.showCharacterLimit.count);\n },\n\n computedCloseButtonProps () {\n return {\n ariaLabel: 'Close',\n };\n },\n\n emojiPickerHovered () {\n return this.emojiPickerFocus || this.emojiPickerOpened;\n },\n\n sendIconSize () {\n return '300';\n },\n },\n\n watch: {\n value (newValue) {\n this.internalInputValue = newValue;\n },\n\n emojiPickerOpened (newValue) {\n if (!newValue) {\n this.$refs.richTextEditor?.focusEditor();\n }\n },\n },\n\n created () {\n if (this.value && this.outputFormat === 'text') {\n this.internalInputValue = this.value.replace(/\\n/g, '<br>');\n } else {\n this.internalInputValue = this.value;\n }\n },\n\n methods: {\n linkDialogOpened (value) {\n this.linkDialogOpen = value;\n if (value === true) {\n this.initLinkDialog();\n } else {\n this.hideLinkBubbleMenu = false;\n this.$refs.richTextEditor?.focusEditor();\n }\n },\n\n // eslint-disable-next-line complexity\n handleTopbarClick (type) {\n const editor = this.$refs.richTextEditor?.editor;\n // Key is the name returned in the event, value is the name of the TipTap command function to run.\n const typeToCommandMap = {\n bold: () => editor?.chain().focus().toggleBold().run(),\n italic: () => editor?.chain().focus().toggleItalic().run(),\n strike: () => editor?.chain().focus().toggleStrike().run(),\n bulletList: () => editor?.chain().focus().toggleBulletList().run(),\n orderedList: () => editor?.chain().focus().toggleOrderedList().run(),\n blockquote: () => editor?.chain().focus().toggleBlockquote().run(),\n code: () => editor?.chain().focus().toggleCode().run(),\n codeBlock: () => editor?.chain().focus().toggleCodeBlock().run(),\n };\n\n if (editor && typeToCommandMap[type]) {\n typeToCommandMap[type]();\n }\n },\n\n // Checks if the node currently selected is active ex/ the bold button is active if the selected text is bold\n isSelectionActive (type) {\n if (['bulletList', 'orderedList'].includes(type)) {\n return this.lastActiveNodes(this.$refs.richTextEditor?.editor?.state, [{ type: 'bulletList' }, { type: 'orderedList' }]).includes(type) && this.isFocused;\n }\n return this.$refs.richTextEditor?.editor?.isActive(type) && this.isFocused;\n },\n\n initLinkDialog () {\n this.$refs.link.setInitialValues(this.selectedText, this.$refs.richTextEditor?.editor?.getAttributes('link')?.href);\n this.hideLinkBubbleMenu = true;\n this.linkDialogOpen = true;\n },\n\n removeLink () {\n this.$refs.richTextEditor?.removeLink();\n this.linkDialogOpen = false;\n },\n\n setLink (linkText, linkInput) {\n this.$refs.richTextEditor.setLink(\n linkInput, linkText, this.linkOptions, EDITOR_SUPPORTED_LINK_PROTOCOLS, EDITOR_DEFAULT_LINK_PREFIX,\n );\n this.linkDialogOpen = false;\n },\n\n // Mousedown instead of click because it fires before the blur event.\n onMousedown (e) {\n const isWithinInput = this.$refs.richTextEditor.$el.querySelector('.tiptap').contains(e.target);\n\n // If the click is not within the tiptap rich text editor input itself, but still within the wrapping div,\n // focus the editor.\n if (!isWithinInput) {\n // Prevent default prevents blurring the rich text editor input when it is already focused.\n e.preventDefault();\n this.$refs.richTextEditor.focusEditor();\n }\n },\n\n onDrop (e) {\n const dt = e.dataTransfer;\n const files = Array.from(dt.files);\n this.$emit('add-media', files);\n },\n\n onPaste (e) {\n if (e.clipboardData.files.length) {\n e.stopPropagation();\n e.preventDefault();\n const files = [...e.clipboardData.files];\n this.$emit('paste-media', files);\n }\n },\n\n onSkinTone (skinTone) {\n this.$emit('skin-tone', skinTone);\n },\n\n onSelectEmoji (emoji, close) {\n if (!emoji) {\n return;\n }\n\n if (!emoji.shift_key) {\n close();\n }\n\n // Insert emoji into the editor\n this.$refs.richTextEditor.editor.commands.insertContent({\n type: 'emoji',\n attrs: {\n code: emoji.shortname,\n },\n });\n this.$emit('selected-emoji', emoji);\n },\n\n onSelectImage () {\n this.$refs.messageInputImageUpload.$refs.input.click();\n },\n\n onImageUpload () {\n this.$emit('select-media', this.$refs.messageInputImageUpload.$refs.input.files);\n },\n\n toggleEmojiPicker () {\n this.emojiPickerOpened = !this.emojiPickerOpened;\n },\n\n onSend () {\n if (this.isSendDisabled) {\n return;\n }\n this.$emit('submit', this.internalInputValue);\n },\n\n onCancel () {\n this.$emit('cancel');\n },\n\n onInput (event) {\n this.$emit('update:value', event);\n },\n\n onTextInput (event) {\n this.text = event;\n this.$emit('text-input', event);\n },\n },\n};\n</script>\n"],"names":["_sfc_main","NodeViewWrapper","DtItemLayout","DtIconClose","DtButton","DtIconVideo","nodeViewProps","e","Node","VueNodeViewRenderer","MeetingPill","node","HTMLAttributes","mergeAttributes","DtEmojiPicker","DtInput","DtPopover","DtRecipeMessageInputTopbar","DtRecipeMessageInputLink","DtRichTextEditor","DtTooltip","DtStack","DtIconImage","DtIconVerySatisfied","DtIconSatisfied","DtIconSend","autoFocus","RICH_TEXT_EDITOR_AUTOFOCUS_TYPES","outputFormat","RICH_TEXT_EDITOR_OUTPUT_FORMATS","emojiPickerProps","prop","lastActiveNodes","newValue","_a","value","type","editor","typeToCommandMap","_b","_d","_c","linkText","linkInput","EDITOR_SUPPORTED_LINK_PROTOCOLS","EDITOR_DEFAULT_LINK_PREFIX","dt","files","skinTone","emoji","close","event"],"mappings":"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"}
|
|
@@ -2,7 +2,7 @@ import l from "./last-active-nodes.js";
|
|
|
2
2
|
import { Node as c, mergeAttributes as u } from "@tiptap/core";
|
|
3
3
|
import { NodeViewWrapper as d, nodeViewProps as p, VueNodeViewRenderer as m } from "../../node_modules/@tiptap/vue-2.js";
|
|
4
4
|
import { DtIconClose as h, DtIconVideo as f, DtIconImage as g, DtIconVerySatisfied as b, DtIconSatisfied as k, DtIconSend as _ } from "@dialpad/dialtone-icons/vue2";
|
|
5
|
-
import { n as a } from "../../_plugin-vue2_normalizer-
|
|
5
|
+
import { n as a } from "../../_plugin-vue2_normalizer-DSLOjnn3.js";
|
|
6
6
|
import x from "../item-layout/item-layout.js";
|
|
7
7
|
import r from "../button/button.js";
|
|
8
8
|
import T from "./message-input-topbar.js";
|
|
@@ -44,10 +44,7 @@ var $ = function() {
|
|
|
44
44
|
}, E = [], M = /* @__PURE__ */ a(
|
|
45
45
|
D,
|
|
46
46
|
$,
|
|
47
|
-
E
|
|
48
|
-
!1,
|
|
49
|
-
null,
|
|
50
|
-
null
|
|
47
|
+
E
|
|
51
48
|
);
|
|
52
49
|
const F = M.exports, A = c.create({
|
|
53
50
|
atom: !0,
|
|
@@ -742,10 +739,7 @@ var q = function() {
|
|
|
742
739
|
}, z = [], V = /* @__PURE__ */ a(
|
|
743
740
|
R,
|
|
744
741
|
q,
|
|
745
|
-
z
|
|
746
|
-
!1,
|
|
747
|
-
null,
|
|
748
|
-
null
|
|
742
|
+
z
|
|
749
743
|
);
|
|
750
744
|
const ae = V.exports;
|
|
751
745
|
export {
|