@dialpad/dialtone 9.169.0 → 9.171.0
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/tokens/doc.json +88738 -88738
- package/dist/vue3/component-documentation.json +1 -1
- package/dist/vue3/lib/editor/editor.cjs +1 -1
- package/dist/vue3/lib/editor/editor.cjs.map +1 -1
- package/dist/vue3/lib/editor/editor.js +18 -6
- package/dist/vue3/lib/editor/editor.js.map +1 -1
- package/dist/vue3/lib/hovercard/hovercard.cjs +1 -1
- package/dist/vue3/lib/hovercard/hovercard.cjs.map +1 -1
- package/dist/vue3/lib/hovercard/hovercard.js +47 -47
- package/dist/vue3/lib/hovercard/hovercard.js.map +1 -1
- package/dist/vue3/lib/rich-text-editor/rich-text-editor.cjs +2 -2
- 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 +16 -2
- package/dist/vue3/lib/rich-text-editor/rich-text-editor.js.map +1 -1
- package/dist/vue3/types/components/hovercard/hovercard.vue.d.ts +4 -0
- package/dist/vue3/types/components/hovercard/hovercard.vue.d.ts.map +1 -1
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"editor.js","sources":["../../../recipes/conversation_view/editor/editor.vue"],"sourcesContent":["<template>\n <div\n ref=\"editorRoot\"\n class=\"d-recipe-editor\"\n v-bind=\"addClassStyleAttrs($attrs)\"\n data-qa=\"dt-recipe-editor\"\n role=\"presentation\"\n @click=\"$refs.richTextEditor.focusEditor()\"\n >\n <!-- Section for the top UI -->\n <dt-stack\n class=\"d-recipe-editor__top-bar\"\n direction=\"row\"\n gap=\"450\"\n >\n <dt-stack\n v-for=\"buttonGroup in buttonGroups\"\n :key=\"buttonGroup.key\"\n direction=\"row\"\n gap=\"300\"\n >\n <template v-for=\"button in buttonGroup.buttonGroup\">\n <!-- Font Style Popover -->\n <editor-toolbar-popover-button\n v-if=\"button.buttonType === 'popover' && button.selector === 'fontStyle'\"\n :key=\"getButtonKey(buttonGroup.key, button.selector)\"\n :ref=\"getButtonRef(buttonGroup.key, button.selector)\"\n :is-active=\"$refs.richTextEditor?.editor?.isActive(button.selector)\"\n :tooltip-message=\"button.tooltipMessage\"\n :data-qa=\"button.dataQA\"\n :popover-data-qa=\"'dt-recipe-editor-font-style-input-popover'\"\n :tabindex=\"canFocus(getButtonRef(buttonGroup.key, button.selector)) ? 0 : -1\"\n :icon=\"button.icon\"\n @shift-focus-right=\"shiftActionBarFocusRight\"\n @shift-focus-left=\"shiftActionBarFocusLeft\"\n >\n <template #content=\"{ close }\">\n <dt-combobox\n label=\"\"\n :label-visible=\"false\"\n :show-list=\"true\"\n :click-on-select=\"true\"\n @escape=\"close()\"\n >\n <template #input=\"{ inputProps }\">\n <dt-input\n v-bind=\"inputProps\"\n v-model=\"fontStyleSearch\"\n root-class=\"d-p8 d-pb4 d-w216\"\n type=\"search\"\n :placeholder=\"i18n.$t('DIALTONE_EDITOR_FONT_STYLE_SEARCH_PLACEHOLDER')\"\n size=\"sm\"\n role=\"menuitem\"\n >\n <template #leftIcon=\"{ iconSize }\">\n <dt-icon-search :size=\"iconSize\" />\n </template>\n </dt-input>\n </template>\n <template #list=\"{ listProps }\">\n <ul\n v-bind=\"listProps\"\n >\n <dt-list-item\n v-for=\"fontStyle in filteredFontStyles\"\n :key=\"fontStyle.name\"\n :selected=\"isCurrentFontFamily(fontStyle.value)\"\n :style=\"{ fontFamily: fontStyle.value || 'inherit' }\"\n role=\"option\"\n navigation-type=\"arrow-keys\"\n @click=\"\n close();\n onFontStyleSelect(fontStyle.value)\n \"\n >\n {{ fontStyle.name }}\n </dt-list-item>\n </ul>\n </template>\n </dt-combobox>\n </template>\n </editor-toolbar-popover-button>\n\n <!-- Font Size Dropdown -->\n <editor-toolbar-dropdown-button\n v-else-if=\"button.buttonType === 'popover' && button.selector === 'fontSize'\"\n :key=\"getButtonKey(buttonGroup.key, button.selector)\"\n :ref=\"getButtonRef(buttonGroup.key, button.selector)\"\n :is-active=\"$refs.richTextEditor?.editor?.isActive(button.selector)\"\n :tooltip-message=\"button.tooltipMessage\"\n :data-qa=\"button.dataQA\"\n :dropdown-data-qa=\"'dt-recipe-editor-font-size-input-popover'\"\n :tabindex=\"canFocus(getButtonRef(buttonGroup.key, button.selector)) ? 0 : -1\"\n :icon=\"button.icon\"\n @shift-focus-right=\"shiftActionBarFocusRight\"\n @shift-focus-left=\"shiftActionBarFocusLeft\"\n >\n <template #list=\"{ close }\">\n <dt-list-item\n v-for=\"fontSize in fontSizes\"\n :key=\"fontSize.name\"\n :selected=\"isCurrentFontSize(fontSize.value)\"\n role=\"menuitem\"\n navigation-type=\"arrow-keys\"\n @click=\"\n close();\n onFontSizeSelect(fontSize.value, $event)\n \"\n >\n <span :style=\"{ fontSize: fontSize.value }\">{{ fontSize.name }}</span>\n </dt-list-item>\n </template>\n </editor-toolbar-dropdown-button>\n\n <!-- Font Color Button -->\n <dt-button\n v-else-if=\"button.buttonType === 'custom' && button.selector === 'fontColor'\"\n :key=\"getButtonKey(buttonGroup.key, button.selector)\"\n :ref=\"getButtonRef(buttonGroup.key, button.selector)\"\n v-dt-tooltip=\"{\n message: button.tooltipMessage,\n placement: 'top',\n externalAnchorElement: $refs[getButtonRef(buttonGroup.key, button.selector)]?.$el, \n }\"\n kind=\"muted\"\n importance=\"clear\"\n size=\"xs\"\n :active=\"$refs.richTextEditor?.editor?.isActive(button.selector)\"\n :tabindex=\"canFocus(getButtonRef(buttonGroup.key, button.selector)) ? 0 : -1\"\n :aria-label=\"button.tooltipMessage\"\n :data-qa=\"button.dataQA\"\n @keydown.right.stop=\"shiftActionBarFocusRight\"\n @keydown.left.stop=\"shiftActionBarFocusLeft\"\n @click=\"button.onClick()\"\n >\n <template #icon>\n <component\n :is=\"button.icon\"\n size=\"200\"\n :style=\"!isDefaultFontColor ? { color: currentFontColor } : {}\"\n />\n <dt-input\n :value=\"currentFontColor\"\n root-class=\"d-w0 d-h0 d-of-hidden\"\n input-class=\"colorPickerInput d-w0 d-h0 d-p0 d-bar0\"\n input-wrapper-class=\"d-w0 d-h0 d-ba-none\"\n size=\"sm\"\n type=\"color\"\n @input=\"onColorPickerInput\"\n @click.stop\n />\n </template>\n </dt-button>\n\n <!-- Variable Popover -->\n <editor-toolbar-popover-button\n v-else-if=\"button.buttonType === 'popover' && button.selector === 'variable'\"\n :key=\"getButtonKey(buttonGroup.key, button.selector)\"\n :ref=\"getButtonRef(buttonGroup.key, button.selector)\"\n :is-active=\"false\"\n :tooltip-message=\"button.tooltipMessage\"\n :data-qa=\"button.dataQA\"\n :popover-data-qa=\"'dt-recipe-editor-variable-popover'\"\n :tabindex=\"canFocus(getButtonRef(buttonGroup.key, button.selector)) ? 0 : -1\"\n :icon=\"button.icon\"\n @shift-focus-right=\"shiftActionBarFocusRight\"\n @shift-focus-left=\"shiftActionBarFocusLeft\"\n >\n <template #content=\"{ close }\">\n <dt-combobox\n label=\"\"\n :label-visible=\"false\"\n :show-list=\"true\"\n :click-on-select=\"true\"\n @escape=\"close()\"\n >\n <template #input=\"{ inputProps }\">\n <dt-input\n v-bind=\"inputProps\"\n v-model=\"variableSearchValue\"\n root-class=\"d-p8 d-pb4 d-w264\"\n type=\"search\"\n :placeholder=\"i18n.$t('DIALTONE_EDITOR_VARIABLE_POPOVER_SEARCH_PLACEHOLDER')\"\n size=\"md\"\n role=\"menuitem\"\n >\n <template #leftIcon=\"{ iconSize }\">\n <dt-icon-search :size=\"iconSize\" />\n </template>\n </dt-input>\n </template>\n <template #list=\"{ listProps }\">\n <div v-bind=\"listProps\">\n <dt-list-item-group\n v-for=\"(category, index) in filteredCategories\"\n :key=\"category.name\"\n :heading=\"category.name\"\n heading-class=\"d-headline--sm-compact d-p8\"\n >\n <dt-list-item\n v-for=\"item in getFilteredItemsForCategory(category)\"\n :key=\"category.name + item.name\"\n role=\"option\"\n navigation-type=\"arrow-keys\"\n @click=\"\n insertVariable(category.name, item);\n close();\n \"\n >\n {{ item.name }}\n </dt-list-item>\n <dt-dropdown-separator\n v-if=\"index < filteredCategories.length - 1\"\n />\n </dt-list-item-group>\n </div>\n </template>\n </dt-combobox>\n </template>\n </editor-toolbar-popover-button>\n\n <!-- Regular Toolbar Button -->\n <editor-toolbar-button\n v-else-if=\"button.buttonType === 'button'\"\n :key=\"getButtonKey(buttonGroup.key, button.selector)\"\n :ref=\"getButtonRef(buttonGroup.key, button.selector)\"\n :is-active=\"$refs.richTextEditor?.editor?.isActive(button.selector)\"\n :tooltip-message=\"button.tooltipMessage\"\n :data-qa=\"button.dataQA\"\n :tabindex=\"canFocus(getButtonRef(buttonGroup.key, button.selector)) ? 0 : -1\"\n :icon=\"button.icon\"\n :label=\"button.label\"\n :on-click=\"button.onClick\"\n @shift-focus-right=\"shiftActionBarFocusRight\"\n @shift-focus-left=\"shiftActionBarFocusLeft\"\n />\n </template>\n <div class=\"d-recipe-editor__button-group-divider\" />\n </dt-stack>\n <dt-stack\n v-if=\"linkButton.showBtn\"\n direction=\"row\"\n gap=\"300\"\n >\n <dt-popover\n :open=\"showLinkInput\"\n :show-close-button=\"false\"\n data-qa=\"dt-recipe-editor-link-input-popover\"\n padding=\"none\"\n placement=\"bottom-start\"\n @click=\"onInputFocus\"\n @opened=\"updateInput\"\n @click.stop=\"onInputFocus\"\n >\n <template #anchor>\n <dt-tooltip\n :key=\"linkButton.key\"\n :message=\"linkButton.tooltipMessage\"\n placement=\"top\"\n >\n <template #anchor>\n <dt-button\n :ref=\"getButtonRef('custom', 'link')\"\n :active=\"$refs.richTextEditor?.editor?.isActive(linkButton.selector)\"\n :aria-label=\"linkButton.tooltipMessage\"\n :data-qa=\"linkButton.dataQA\"\n :tabindex=\"canFocus(getButtonRef('custom', 'link')) ? 0 : -1\"\n importance=\"clear\"\n kind=\"muted\"\n size=\"xs\"\n @click=\"linkButton.onClick()\"\n @keydown.right.stop=\"shiftActionBarFocusRight\"\n @keydown.left.stop=\"shiftActionBarFocusLeft\"\n >\n <template #icon>\n <component\n :is=\"linkButton.icon\"\n size=\"200\"\n />\n </template>\n </dt-button>\n </template>\n </dt-tooltip>\n </template>\n\n <template #content>\n <div class=\"d-recipe-editor__popover-content\">\n <span>\n {{ showAddLinkButtonLabels.title }}\n </span>\n <dt-input\n v-model=\"linkInput\"\n :input-aria-label=\"showAddLinkButtonLabels['aria-label']\"\n :placeholder=\"setLinkPlaceholder\"\n data-qa=\"dt-recipe-editor-link-input\"\n input-wrapper-class=\"d-recipe-editor-link__input-wrapper\"\n @click=\"onInputFocus\"\n @focus=\"onInputFocus\"\n @click.stop=\"onInputFocus\"\n @keydown.enter=\"setLink\"\n />\n </div>\n </template>\n <template #footerContent>\n <dt-stack\n direction=\"row\"\n gap=\"300\"\n class=\"d-recipe-editor__popover-footer\"\n >\n <dt-button\n data-qa=\"dt-recipe-editor-remove-link-btn\"\n importance=\"clear\"\n kind=\"muted\"\n size=\"sm\"\n v-bind=\"removeLinkButtonLabels\"\n @click=\"removeLink\"\n >\n {{ removeLinkButtonLabels.title }}\n </dt-button>\n <dt-button\n data-qa=\"dt-recipe-editor-set-link-cancel-btn\"\n importance=\"clear\"\n kind=\"muted\"\n size=\"sm\"\n v-bind=\"cancelSetLinkButtonLabels\"\n @click=\"closeLinkInput\"\n >\n {{ cancelSetLinkButtonLabels.title }}\n </dt-button>\n <dt-button\n data-qa=\"dt-recipe-editor-set-link-confirm-btn\"\n size=\"sm\"\n v-bind=\"confirmSetLinkButtonLabels\"\n @click=\"setLink\"\n >\n {{ confirmSetLinkButtonLabels.title }}\n </dt-button>\n </dt-stack>\n </template>\n </dt-popover>\n </dt-stack>\n </dt-stack>\n\n <!-- Some wrapper to restrict the height and show the scrollbar -->\n <div\n :style=\"{ 'max-height': maxHeight }\"\n :class=\"['d-recipe-editor__content', { 'd-recipe-editor__content-image-resize': allowImageResize }]\"\n >\n <dt-rich-text-editor\n ref=\"richTextEditor\"\n v-model=\"internalInputValue\"\n :allow-font-color=\"true\"\n :allow-font-family=\"true\"\n :allow-inline-images=\"true\"\n :allow-line-breaks=\"true\"\n :allow-variable=\"true\"\n :allow-font-size=\"showFontSizeButton\"\n :allow-background-color=\"allowBackgroundColor\"\n :allow-line-height=\"allowLineHeight\"\n :variable-items=\"flattenedVariableItems\"\n :hide-link-bubble-menu=\"true\"\n :auto-focus=\"autoFocus\"\n :editable=\"editable\"\n :input-aria-label=\"inputAriaLabel\"\n :input-class=\"`d-recipe-editor__content-input ${inputClass}`\"\n :link=\"true\"\n :output-format=\"htmlOutputFormat\"\n :placeholder=\"placeholder\"\n :use-div-tags=\"useDivTags\"\n :allow-tables=\"allowTables\"\n :allow-image-resize=\"allowImageResize\"\n data-qa=\"dt-rich-text-editor\"\n v-bind=\"removeClassStyleAttrs($attrs)\"\n @text-input=\"onTextInput\"\n @blur=\"onBlur\"\n @focus=\"onFocus\"\n @input=\"onInput($event)\"\n @selected=\"onSelected\"\n />\n </div>\n </div>\n</template>\n\n<script>\nimport {\n DtRichTextEditor,\n RICH_TEXT_EDITOR_OUTPUT_FORMATS,\n RICH_TEXT_EDITOR_AUTOFOCUS_TYPES,\n} from '@/components/rich_text_editor';\nimport {\n EDITOR_SUPPORTED_LINK_PROTOCOLS,\n EDITOR_DEFAULT_LINK_PREFIX,\n EDITOR_DEFAULT_FONT_COLOR,\n} from './editor_constants.js';\nimport { removeClassStyleAttrs, addClassStyleAttrs } from '@/common/utils';\nimport { DtButton } from '@/components/button';\nimport { DtPopover } from '@/components/popover';\nimport { DtStack } from '@/components/stack';\nimport { DtInput } from '@/components/input';\nimport { DtTooltip } from '@/components/tooltip';\nimport { DtListItem } from '@/components/list_item';\nimport { DtCombobox } from '@/components/combobox';\n\nimport { DtDropdownSeparator } from '@/components/dropdown/index.js';\nimport { DtListItemGroup } from '@/components/list_item_group/index.js';\nimport EditorToolbarButton from './EditorToolbarButton.vue';\nimport EditorToolbarDropdownButton from './EditorToolbarDropdownButton.vue';\nimport EditorToolbarPopoverButton from './EditorToolbarPopoverButton.vue';\nimport {\n DtIconAlignCenter,\n DtIconAlignJustify,\n DtIconAlignLeft,\n DtIconAlignRight,\n DtIconBold,\n DtIconCodeBlock,\n DtIconImage,\n DtIconItalic,\n DtIconQuickReply,\n DtIconLink2,\n DtIconListBullet,\n DtIconListOrdered,\n DtIconQuote,\n DtIconStrikethrough,\n DtIconUnderline,\n DtIconType,\n DtIconBraces,\n DtIconSearch,\n DtIconChevronDown,\n DtIconFontSize,\n DtIconStopFilled,\n} from '@dialpad/dialtone-icons/vue3';\nimport { DialtoneLocalization } from '@/localization';\n\nexport default {\n compatConfig: { MODE: 3 },\n name: 'DtRecipeEditor',\n\n components: {\n DtListItemGroup,\n DtDropdownSeparator,\n DtListItem,\n DtRichTextEditor,\n DtButton,\n DtPopover,\n DtStack,\n DtInput,\n DtTooltip,\n DtCombobox,\n EditorToolbarButton,\n EditorToolbarDropdownButton,\n EditorToolbarPopoverButton,\n DtIconQuickReply,\n DtIconBold,\n DtIconItalic,\n DtIconUnderline,\n DtIconStrikethrough,\n DtIconListBullet,\n DtIconListOrdered,\n DtIconAlignLeft,\n DtIconAlignCenter,\n DtIconAlignRight,\n DtIconAlignJustify,\n DtIconQuote,\n DtIconCodeBlock,\n DtIconLink2,\n DtIconImage,\n DtIconSearch,\n DtIconType,\n DtIconBraces,\n DtIconChevronDown,\n DtIconFontSize,\n DtIconStopFilled,\n },\n\n mixins: [],\n\n inheritAttrs: false,\n\n props: {\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 modelValue: {\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 * 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 * Placeholder text\n */\n placeholder: {\n type: String,\n default: '',\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 /**\n * Placeholder text for the set link input field\n */\n setLinkPlaceholder: {\n type: String,\n default: '',\n },\n\n /**\n * Show button to render text as bold\n */\n showBoldButton: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Show button to render text in italics\n */\n showItalicsButton: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Show button to underline text\n */\n showUnderlineButton: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Show button to strike text\n */\n showStrikeButton: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Show button to render list items\n */\n showListItemsButton: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Show button to render ordered list items\n */\n showOrderedListButton: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Show button to align text to the left\n */\n showAlignLeftButton: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Show button to align text to the center\n */\n showAlignCenterButton: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Show button to align text to the right\n */\n showAlignRightButton: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Show button to justify text\n */\n showAlignJustifyButton: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Show button to add quote format to text\n */\n showQuoteButton: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Show button to add code block\n */\n showCodeBlockButton: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Show button to handle quick replies\n */\n showQuickRepliesButton: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Show button to add an inline image\n */\n showInlineImageButton: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Show button to add a variable\n */\n showVariableButton: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Variable categories to display when variable button is clicked\n */\n variableCategories: {\n type: Array,\n default: () => [],\n },\n\n /**\n * Show add link default config.\n */\n showAddLink: {\n type: Object,\n default: () => ({\n showAddLinkButton: true,\n }),\n },\n\n /**\n * Show font style button.\n */\n showFontStyleButton: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Show font size button.\n */\n showFontSizeButton: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Show font color button.\n */\n showFontColorButton: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Available font styles for the font style dropdown.\n */\n fontStyles: {\n type: Array,\n default: () => [\n { name: 'Arial', value: null }, // arial is the default font\n { name: 'Georgia', value: 'Georgia' },\n { name: 'Helvetica', value: 'Helvetica' },\n { name: 'Verdana', value: 'Verdana'},\n { name: 'Times New Roman', value: 'Times New Roman' },\n ],\n },\n\n fontSizes : {\n type: Array,\n default: () => [\n { name: 'Small', value: '12px'},\n { name: 'Normal', value: '15px'},\n { name: 'Large', value: '24px'},\n { name: 'Huge', value: '36px'},\n ],\n },\n\n /**\n * Whether the input allows background color to be introduced in the text.\n */\n allowBackgroundColor: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Whether the input allows line height to be introduced in the text.\n */\n allowLineHeight: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Use div tags instead of paragraph tags to show text\n */\n useDivTags: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Allow Tables to be used in to the editor\n */\n allowTables: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Allow image resizing\n */\n allowImageResize: {\n type: Boolean,\n default: false,\n },\n },\n\n emits: [\n /**\n * Native focus event\n * @event input\n * @type {String|JSON}\n */\n 'focus',\n\n /**\n * Native blur event\n * @event input\n * @type {String|JSON}\n */\n 'blur',\n\n /**\n * Native input event\n * @event input\n * @type {String|JSON}\n */\n 'input',\n\n /**\n * Event fired to sync the modelValue prop with the parent component\n * @event input\n * @type {String|JSON}\n */\n 'update:modelValue',\n\n /**\n * Quick replies button\n * pressed event\n * @event quick-replies-click\n */\n 'quick-replies-click',\n\n /**\n * Emit when inline image button is clicked\n * @event inline-image-click\n */\n 'inline-image-click',\n\n /**\n * Emit when text input is changed\n * @event text-input\n * @type {String}\n */\n 'text-input',\n ],\n\n data () {\n return {\n internalInputValue: this.modelValue, // internal input content\n hasFocus: false,\n\n linkOptions: {\n class: 'd-recipe-editor__link',\n },\n\n currentFontColor: undefined,\n showLinkInput: false,\n fontStyleSearch: '',\n linkInput: '',\n currentButtonRefIndex: 0,\n variableSearchValue: '',\n i18n: new DialtoneLocalization(),\n };\n },\n\n computed: {\n inputLength () {\n return this.internalInputValue.length;\n },\n\n htmlOutputFormat () {\n return RICH_TEXT_EDITOR_OUTPUT_FORMATS[2];\n },\n\n flattenedVariableItems () {\n if (!this.variableCategories) return [];\n return this.variableCategories.reduce((acc, category) => {\n return acc.concat(category.items || []);\n }, []);\n },\n\n showingTextFormatButtons () {\n return this.showBoldButton || this.showItalicsButton || this.showStrikeButton || this.showUnderlineButton;\n },\n\n showingAlignmentButtons () {\n return this.showAlignLeftButton || this.showAlignCenterButton ||\n this.showAlignRightButton || this.showAlignJustifyButton;\n },\n\n showingListButtons () {\n return this.showListItemsButton || this.showOrderedListButton;\n },\n\n orderedRefs () {\n const refs = this.buttonGroups.reduce(function (acc, buttonData) {\n buttonData.buttonGroup.forEach(button => {\n acc.push(this.getButtonRef(buttonData.key, button.selector));\n }, this);\n return acc;\n }.bind(this), []);\n refs.push(this.getButtonRef('custom', 'link'));\n return refs;\n },\n\n buttonGroups () {\n const individualButtonStacks = this.individualButtons.map(buttonData => ({\n key: buttonData.selector,\n buttonGroup: [buttonData],\n }));\n return [\n { key: 'new', buttonGroup: this.newButtons },\n { key: 'format', buttonGroup: this.textFormatButtons },\n { key: 'alignment', buttonGroup: this.alignmentButtons },\n { key: 'list', buttonGroup: this.listButtons },\n ...individualButtonStacks,\n ].filter(buttonGroupData => buttonGroupData.buttonGroup.length > 0);\n },\n\n newButtons () {\n return [\n {\n showBtn: this.showQuickRepliesButton,\n buttonType: 'button',\n label: this.i18n.$t('DIALTONE_EDITOR_QUICK_REPLY_BUTTON_LABEL'),\n selector: 'quickReplies',\n icon: DtIconQuickReply,\n dataQA: 'dt-recipe-editor-quick-replies-btn',\n tooltipMessage: this.i18n.$t('DIALTONE_EDITOR_QUICK_REPLY_BUTTON_LABEL'),\n onClick: this.onQuickRepliesClick,\n },\n ].filter(button => button.showBtn);\n },\n\n textFormatButtons () {\n return [\n {\n showBtn: this.showFontStyleButton,\n buttonType: 'popover',\n selector: 'fontStyle',\n icon: DtIconType,\n dataQA: 'dt-recipe-editor-font-style-btn',\n tooltipMessage: this.i18n.$t('DIALTONE_EDITOR_FONT_STYLE_BUTTON_LABEL'),\n },\n {\n showBtn: this.showFontSizeButton,\n buttonType: 'popover',\n selector: 'fontSize',\n icon: DtIconFontSize,\n dataQA: 'dt-recipe-editor-font-size-btn',\n tooltipMessage: this.i18n.$t('DIALTONE_EDITOR_FONT_SIZE_BUTTON_LABEL'),\n },\n {\n showBtn: this.showFontColorButton,\n buttonType: 'custom',\n selector: 'fontColor',\n icon: DtIconStopFilled,\n dataQA: 'dt-recipe-editor-font-color-btn',\n tooltipMessage: this.i18n.$t('DIALTONE_EDITOR_FONT_COLOR_BUTTON_LABEL'),\n onClick: this.onColorPickerButtonClick,\n },\n {\n showBtn: this.showBoldButton,\n buttonType: 'button',\n selector: 'bold',\n icon: DtIconBold,\n dataQA: 'dt-recipe-editor-bold-btn',\n tooltipMessage: this.i18n.$t('DIALTONE_EDITOR_BOLD_BUTTON_LABEL'),\n onClick: this.onBoldTextToggle,\n },\n {\n showBtn: this.showItalicsButton,\n buttonType: 'button',\n selector: 'italic',\n icon: DtIconItalic,\n dataQA: 'dt-recipe-editor-italics-btn',\n tooltipMessage: this.i18n.$t('DIALTONE_EDITOR_ITALICS_BUTTON_LABEL'),\n onClick: this.onItalicTextToggle,\n },\n {\n showBtn: this.showUnderlineButton,\n buttonType: 'button',\n selector: 'underline',\n icon: DtIconUnderline,\n dataQA: 'dt-recipe-editor-underline-btn',\n tooltipMessage: this.i18n.$t('DIALTONE_EDITOR_UNDERLINE_BUTTON_LABEL'),\n onClick: this.onUnderlineTextToggle,\n },\n {\n showBtn: this.showStrikeButton,\n buttonType: 'button',\n selector: 'strike',\n icon: DtIconStrikethrough,\n dataQA: 'dt-recipe-editor-strike-btn',\n tooltipMessage: this.i18n.$t('DIALTONE_EDITOR_STRIKE_BUTTON_LABEL'),\n onClick: this.onStrikethroughTextToggle,\n },\n ].filter(button => button.showBtn);\n },\n\n alignmentButtons () {\n return [\n {\n showBtn: this.showAlignLeftButton,\n buttonType: 'button',\n selector: { textAlign: 'left' },\n icon: DtIconAlignLeft,\n dataQA: 'dt-recipe-editor-align-left-btn',\n tooltipMessage: this.i18n.$t('DIALTONE_EDITOR_ALIGN_LEFT_BUTTON_LABEL'),\n onClick: () => this.onTextAlign('left'),\n },\n {\n showBtn: this.showAlignCenterButton,\n buttonType: 'button',\n selector: { textAlign: 'center' },\n icon: DtIconAlignCenter,\n dataQA: 'dt-recipe-editor-align-center-btn',\n tooltipMessage: this.i18n.$t('DIALTONE_EDITOR_ALIGN_CENTER_BUTTON_LABEL'),\n onClick: () => this.onTextAlign('center'),\n },\n {\n showBtn: this.showAlignRightButton,\n buttonType: 'button',\n selector: { textAlign: 'right' },\n icon: DtIconAlignRight,\n dataQA: 'dt-recipe-editor-align-right-btn',\n tooltipMessage: this.i18n.$t('DIALTONE_EDITOR_ALIGN_RIGHT_BUTTON_LABEL'),\n onClick: () => this.onTextAlign('right'),\n },\n {\n showBtn: this.showAlignJustifyButton,\n buttonType: 'button',\n selector: { textAlign: 'justify' },\n icon: DtIconAlignJustify,\n dataQA: 'dt-recipe-editor-align-justify-btn',\n tooltipMessage: this.i18n.$t('DIALTONE_EDITOR_ALIGN_JUSTIFY_BUTTON_LABEL'),\n onClick: () => this.onTextAlign('justify'),\n },\n ].filter(button => button.showBtn);\n },\n\n listButtons () {\n return [\n {\n showBtn: this.showListItemsButton,\n buttonType: 'button',\n selector: 'bulletList',\n icon: DtIconListBullet,\n dataQA: 'dt-recipe-editor-list-items-btn',\n tooltipMessage: this.i18n.$t('DIALTONE_EDITOR_BULLET_LIST_BUTTON_LABEL'),\n onClick: this.onBulletListToggle,\n },\n {\n showBtn: this.showOrderedListButton,\n buttonType: 'button',\n selector: 'orderedList',\n icon: DtIconListOrdered,\n dataQA: 'dt-recipe-editor-ordered-list-items-btn',\n tooltipMessage: this.i18n.$t('DIALTONE_EDITOR_ORDERED_LIST_BUTTON_LABEL'),\n onClick: this.onOrderedListToggle,\n },\n ].filter(button => button.showBtn);\n },\n\n individualButtons () {\n return [\n {\n showBtn: this.showQuoteButton,\n buttonType: 'button',\n selector: 'blockquote',\n icon: DtIconQuote,\n dataQA: 'dt-recipe-editor-blockquote-btn',\n tooltipMessage: this.i18n.$t('DIALTONE_EDITOR_QUOTE_BUTTON_LABEL'),\n onClick: this.onBlockquoteToggle,\n },\n {\n showBtn: this.showCodeBlockButton,\n buttonType: 'button',\n selector: 'codeBlock',\n icon: DtIconCodeBlock,\n dataQA: 'dt-recipe-editor-code-block-btn',\n tooltipMessage: this.i18n.$t('DIALTONE_EDITOR_CODE_BUTTON_LABEL'),\n onClick: this.onCodeBlockToggle,\n },\n {\n showBtn: this.showInlineImageButton,\n buttonType: 'button',\n selector: 'image',\n icon: DtIconImage,\n dataQA: 'dt-recipe-editor-inline-image-btn',\n tooltipMessage: this.i18n.$t('DIALTONE_EDITOR_IMAGE_BUTTON_LABEL'),\n // Handle getting image\n onClick: this.onInsertInlineImageClick,\n },\n {\n showBtn: this.showVariableButton,\n buttonType: 'popover',\n selector: 'variable',\n icon: DtIconBraces,\n dataQA: 'dt-recipe-editor-variable-btn',\n tooltipMessage: this.i18n.$t('DIALTONE_EDITOR_VARIABLE_BUTTON_LABEL'),\n },\n ].filter(button => button.showBtn);\n },\n\n linkButton () {\n return {\n showBtn: this.showAddLink.showAddLinkButton,\n buttonType: 'custom',\n selector: 'link',\n icon: DtIconLink2,\n dataQA: 'dt-recipe-editor-add-link-btn',\n tooltipMessage: this.i18n.$t('DIALTONE_EDITOR_LINK_BUTTON_LABEL'),\n onClick: this.openLinkInput,\n };\n },\n\n confirmSetLinkButtonLabels () {\n return this.i18n.$ta('DIALTONE_EDITOR_CONFIRM_SET_LINK_BUTTON');\n },\n\n cancelSetLinkButtonLabels () {\n return this.i18n.$ta('DIALTONE_EDITOR_CANCEL_SET_LINK_BUTTON');\n },\n\n removeLinkButtonLabels () {\n return this.i18n.$ta('DIALTONE_EDITOR_REMOVE_LINK_BUTTON');\n },\n\n showAddLinkButtonLabels () {\n return this.i18n.$ta('DIALTONE_EDITOR_ADD_LINK_BUTTON');\n },\n\n filteredFontStyles () {\n const searchValue = this.fontStyleSearch.toLowerCase();\n return this.fontStyles.filter((item) =>\n item.name.toLowerCase().includes(searchValue),\n );\n },\n\n filteredCategories() {\n return this.variableCategories.filter(\n (category) => this.getFilteredItemsForCategory(category).length,\n );\n },\n\n colorPickerInput() {\n return this.$refs.editorRoot?.querySelector('.colorPickerInput');\n },\n\n isDefaultFontColor() {\n return this.currentFontColor === EDITOR_DEFAULT_FONT_COLOR;\n },\n\n actionBarBtn () {\n const ref = this.$refs[this.orderedRefs[this.currentButtonRefIndex]][0]?.$refs?.buttonRef // get nested ref\n || this.$refs[this.orderedRefs[this.currentButtonRefIndex]];\n return Array.isArray(ref) ? ref[0] : ref;\n },\n\n },\n\n watch: {\n modelValue (newValue) {\n this.internalInputValue = newValue;\n },\n },\n\n methods: {\n removeClassStyleAttrs,\n addClassStyleAttrs,\n\n onInputFocus (event) {\n event?.stopPropagation();\n },\n\n removeLink () {\n this.$refs.richTextEditor?.editor?.chain()?.focus()?.unsetLink()?.run();\n this.closeLinkInput();\n },\n\n setLink (event) {\n const editor = this.$refs.richTextEditor?.editor;\n event?.preventDefault();\n event?.stopPropagation();\n\n if (!this.linkInput) {\n // If link text is set to empty string,\n // remove any existing links.\n this.removeLink();\n return;\n }\n\n // Check if input matches any of the supported link formats\n const prefix = EDITOR_SUPPORTED_LINK_PROTOCOLS.find(prefixRegex => prefixRegex.test(this.linkInput));\n\n if (!prefix) {\n // If no matching pattern is found, prepend default prefix\n this.linkInput = `${EDITOR_DEFAULT_LINK_PREFIX}${this.linkInput}`;\n }\n\n const selection = editor?.view?.state?.selection;\n\n if (selection.anchor === selection.head) {\n // If no text has been selected, manually insert the link text.\n // Do not rely on link options set through DtRichTextEditor\n // component, because they clash with these and cause issues.\n editor\n .chain()\n .focus()\n .insertContentAt(\n selection.anchor,\n `<a class=\"${this.linkOptions.class}\" href=${this.linkInput}>${this.linkInput}</a>`,\n )\n .run();\n } else {\n // Set or edit the link\n editor\n .chain()\n .focus()\n .extendMarkRange('link')\n .setLink({ href: this.linkInput, class: this.linkOptions.class })\n .run();\n }\n\n this.closeLinkInput();\n },\n\n openLinkInput () {\n this.showLinkInput = true;\n },\n\n updateInput (openedInput) {\n if (!openedInput) {\n return this.closeLinkInput();\n }\n this.linkInput = this.$refs.richTextEditor?.editor?.getAttributes('link')?.href;\n },\n\n closeLinkInput () {\n this.showLinkInput = false;\n this.linkInput = '';\n this.$refs.richTextEditor.editor?.chain().focus();\n },\n\n onBoldTextToggle () {\n this.$refs.richTextEditor?.editor?.chain().focus().toggleBold().run();\n },\n\n onItalicTextToggle () {\n this.$refs.richTextEditor?.editor.chain().focus().toggleItalic().run();\n },\n\n onUnderlineTextToggle () {\n this.$refs.richTextEditor?.editor.chain().focus().toggleUnderline().run();\n },\n\n onStrikethroughTextToggle () {\n this.$refs.richTextEditor?.editor.chain().focus().toggleStrike().run();\n },\n\n onTextAlign (alignment) {\n if (this.$refs.richTextEditor?.editor?.isActive({ textAlign: alignment })) {\n // If this alignment type is already set here, unset it\n return this.$refs.richTextEditor?.editor.chain().focus().unsetTextAlign().run();\n }\n this.$refs.richTextEditor?.editor.chain().focus().setTextAlign(alignment).run();\n },\n\n onBulletListToggle () {\n this.$refs.richTextEditor?.editor.chain().focus().toggleBulletList().run();\n },\n\n onOrderedListToggle () {\n this.$refs.richTextEditor?.editor.chain().focus().toggleOrderedList().run();\n },\n\n onCodeBlockToggle () {\n this.$refs.richTextEditor?.editor.chain().focus().toggleCodeBlock().run();\n },\n\n onQuickRepliesClick () {\n this.$emit('quick-replies-click');\n },\n\n onInsertInlineImageClick () {\n this.$emit('inline-image-click');\n },\n\n insertVariable (categoryName, variableData) {\n // Insert a variable using the custom command from the Variable extension\n this.$refs.richTextEditor?.editor.chain().focus().insertVariable({\n id: variableData.id,\n placeholder: variableData.placeholder || '',\n altText: '',\n enableAltText: variableData.enableAltText,\n }).run();\n },\n\n insertInlineImage (imageUrl) {\n this.$refs.richTextEditor?.editor.chain().focus().setImage({ src: imageUrl }).run();\n },\n\n insertInMessageBody (messageContent) {\n this.$refs.richTextEditor?.editor.chain().focus().insertContent(messageContent).run();\n },\n\n setCursorPosition (position = null) {\n this.$refs.richTextEditor?.editor.chain().focus(position).run();\n },\n\n onBlockquoteToggle () {\n this.$refs.richTextEditor?.editor.chain().focus().toggleBlockquote().run();\n },\n\n onTextInput (input) {\n this.$emit('text-input', input);\n },\n\n onFocus (event) {\n this.hasFocus = true;\n this.$emit('focus', event);\n },\n\n onBlur (event) {\n this.hasFocus = false;\n this.$emit('blur', event);\n },\n\n onInput (event) {\n this.$emit('input', event);\n this.$emit('update:modelValue', event);\n },\n\n onSelected() {\n this.updateFontColorInput();\n },\n\n getButtonKey (key, selector) {\n return `${key}-${JSON.stringify(selector)}`;\n },\n\n // Unique Button Ref Key to identify ref\n getButtonRef (key, selector) {\n return `${this.getButtonKey(key, selector)}-ref`;\n },\n\n /**\n * Determines if an element in the action bar button list is focusable with tab key\n * @param {string} refKey - unique identifier for the ref element in DOM\n */\n canFocus (refKey) {\n return refKey === this.orderedRefs[this.currentButtonRefIndex];\n },\n\n shiftActionBarFocusRight () {\n this.shiftButtonRefIndex(1);\n },\n\n shiftActionBarFocusLeft () {\n this.shiftButtonRefIndex(-1);\n },\n\n shiftButtonRefIndex (shiftAmount) {\n const previousActionBarBtn = this.actionBarBtn;\n const index = (this.currentButtonRefIndex + shiftAmount) % this.orderedRefs.length;\n this.currentButtonRefIndex = index >= 0 ? index : this.orderedRefs.length + index;\n const currentActionBarBtn = this.actionBarBtn;\n\n previousActionBarBtn.$el.blur();\n currentActionBarBtn.$el.focus();\n },\n\n onFontStyleSelect (fontFamily) {\n if (fontFamily) {\n this.$refs.richTextEditor?.editor?.chain().focus().setFontFamily(fontFamily).run();\n } else {\n this.$refs.richTextEditor?.editor?.chain().focus().unsetFontFamily().run();\n }\n this.$refs.richTextEditor?.editor?.commands.focus();\n },\n\n isCurrentFontFamily (fontFamily) {\n if (!fontFamily) {\n return !this.$refs.richTextEditor?.editor?.getAttributes('textStyle')?.fontFamily;\n }\n return this.$refs.richTextEditor?.editor?.isActive('textStyle', { fontFamily });\n },\n\n onFontSizeSelect (fontSize) {\n this.$refs.richTextEditor?.editor?.chain().focus().setFontSize(fontSize).run();\n this.$refs.richTextEditor?.editor?.commands.focus();\n },\n\n isCurrentFontSize (fontSize) {\n if (!fontSize) {\n return !this.$refs.richTextEditor?.editor?.getAttributes('textStyle')?.fontSize;\n }\n return this.$refs.richTextEditor?.editor?.isActive('textStyle', { fontSize });\n },\n\n getFilteredItemsForCategory(category) {\n const searchValue = this.variableSearchValue.toLowerCase();\n if (category.name.toLowerCase().includes(searchValue)) {\n return category.items;\n }\n return category.items.filter((item) =>\n item.name.toLowerCase().includes(searchValue),\n );\n },\n\n updateFontColorInput() {\n this.currentFontColor = this.$refs.richTextEditor?.editor?.getAttributes('textStyle')?.color || EDITOR_DEFAULT_FONT_COLOR;\n },\n\n onColorPickerButtonClick () {\n this.colorPickerInput?.click();\n },\n\n onColorPickerInput (fontColor) {\n this.$refs.richTextEditor?.editor?.chain().focus().setColor(fontColor).run();\n this.$refs.richTextEditor?.editor?.commands.focus();\n this.updateFontColorInput();\n },\n },\n};\n</script>\n\n<style>\n/* Image resizing classes - only active when allowImageResize is true */\n\n/* Image border */\n.d-recipe-editor__content-image-resize .tiptap .ProseMirror-selectednode [data-resize-wrapper] {\n outline: 1px solid var(--dt-color-chart-info-selected);\n line-height: 0 !important;\n}\n\n/* Corner handles */\n.d-recipe-editor__content-image-resize .tiptap .ProseMirror-selectednode [data-resize-handle] {\n position: absolute;\n background: var(--dt-color-chart-info-selected);\n z-index: 10;\n}\n\n.d-recipe-editor__content-image-resize .tiptap .ProseMirror-selectednode [data-resize-handle='top-left'],\n.d-recipe-editor__content-image-resize .tiptap .ProseMirror-selectednode [data-resize-handle='top-right'],\n.d-recipe-editor__content-image-resize .tiptap .ProseMirror-selectednode [data-resize-handle='bottom-left'],\n.d-recipe-editor__content-image-resize .tiptap .ProseMirror-selectednode [data-resize-handle='bottom-right'] {\n width: 8px;\n height: 8px;\n}\n.d-recipe-editor__content-image-resize .tiptap .ProseMirror-selectednode [data-resize-handle='top-left'] {\n cursor: nwse-resize;\n transform: translate(-50%, -50%);\n}\n.d-recipe-editor__content-image-resize .tiptap .ProseMirror-selectednode [data-resize-handle='top-right'] {\n cursor: nesw-resize;\n transform: translate(50%, -50%);\n}\n.d-recipe-editor__content-image-resize .tiptap .ProseMirror-selectednode [data-resize-handle='bottom-left'] {\n cursor: nesw-resize;\n transform: translate(-50%, 50%);\n}\n.d-recipe-editor__content-image-resize .tiptap .ProseMirror-selectednode [data-resize-handle='bottom-right'] {\n cursor: nwse-resize;\n transform: translate(50%, 50%);\n}\n</style>\n"],"names":["_sfc_main","DtListItemGroup","DtDropdownSeparator","DtListItem","DtRichTextEditor","DtButton","DtPopover","DtStack","DtInput","DtTooltip","DtCombobox","EditorToolbarButton","EditorToolbarDropdownButton","EditorToolbarPopoverButton","DtIconQuickReply","DtIconBold","DtIconItalic","DtIconUnderline","DtIconStrikethrough","DtIconListBullet","DtIconListOrdered","DtIconAlignLeft","DtIconAlignCenter","DtIconAlignRight","DtIconAlignJustify","DtIconQuote","DtIconCodeBlock","DtIconLink2","DtIconImage","DtIconSearch","DtIconType","DtIconBraces","DtIconChevronDown","DtIconFontSize","DtIconStopFilled","autoFocus","RICH_TEXT_EDITOR_AUTOFOCUS_TYPES","DialtoneLocalization","RICH_TEXT_EDITOR_OUTPUT_FORMATS","acc","category","refs","buttonData","button","individualButtonStacks","buttonGroupData","searchValue","item","_a","EDITOR_DEFAULT_FONT_COLOR","ref","_b","newValue","removeClassStyleAttrs","addClassStyleAttrs","event","_e","_d","_c","editor","EDITOR_SUPPORTED_LINK_PROTOCOLS","prefixRegex","EDITOR_DEFAULT_LINK_PREFIX","selection","openedInput","alignment","categoryName","variableData","imageUrl","messageContent","position","input","key","selector","refKey","shiftAmount","previousActionBarBtn","index","currentActionBarBtn","fontFamily","_f","fontSize","fontColor","_hoisted_1","_openBlock","_createElementBlock","_mergeProps","$options","_ctx","_cache","$event","_createVNode","_component_dt_stack","_Fragment","_renderList","buttonGroup","_createBlock","_component_editor_toolbar_popover_button","_withCtx","close","_component_dt_combobox","inputProps","_component_dt_input","$data","iconSize","_component_dt_icon_search","listProps","_createElementVNode","fontStyle","_component_dt_list_item","_normalizeStyle","_createTextVNode","_toDisplayString","_component_editor_toolbar_dropdown_button","$props","_component_dt_button","_resolveDynamicComponent","_g","_component_dt_list_item_group","_component_dt_dropdown_separator","_component_editor_toolbar_button","_i","_h","_component_dt_popover","_component_dt_tooltip","_component_dt_rich_text_editor"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"editor.js","sources":["../../../recipes/conversation_view/editor/editor.vue"],"sourcesContent":["<template>\n <div\n ref=\"editorRoot\"\n class=\"d-recipe-editor\"\n v-bind=\"addClassStyleAttrs($attrs)\"\n data-qa=\"dt-recipe-editor\"\n role=\"presentation\"\n @click=\"$refs.richTextEditor.focusEditor()\"\n >\n <!-- Section for the top UI -->\n <dt-stack\n class=\"d-recipe-editor__top-bar\"\n direction=\"row\"\n gap=\"450\"\n >\n <dt-stack\n v-for=\"buttonGroup in buttonGroups\"\n :key=\"buttonGroup.key\"\n direction=\"row\"\n gap=\"300\"\n >\n <template v-for=\"button in buttonGroup.buttonGroup\">\n <!-- Font Style Popover -->\n <editor-toolbar-popover-button\n v-if=\"button.buttonType === 'popover' && button.selector === 'fontStyle'\"\n :key=\"getButtonKey(buttonGroup.key, button.selector)\"\n :ref=\"getButtonRef(buttonGroup.key, button.selector)\"\n :is-active=\"$refs.richTextEditor?.editor?.isActive(button.selector)\"\n :tooltip-message=\"button.tooltipMessage\"\n :data-qa=\"button.dataQA\"\n :popover-data-qa=\"'dt-recipe-editor-font-style-input-popover'\"\n :tabindex=\"canFocus(getButtonRef(buttonGroup.key, button.selector)) ? 0 : -1\"\n :icon=\"button.icon\"\n @shift-focus-right=\"shiftActionBarFocusRight\"\n @shift-focus-left=\"shiftActionBarFocusLeft\"\n >\n <template #content=\"{ close }\">\n <dt-combobox\n label=\"\"\n :label-visible=\"false\"\n :show-list=\"true\"\n :click-on-select=\"true\"\n @escape=\"close()\"\n >\n <template #input=\"{ inputProps }\">\n <dt-input\n v-bind=\"inputProps\"\n v-model=\"fontStyleSearch\"\n root-class=\"d-p8 d-pb4 d-w216\"\n type=\"search\"\n :placeholder=\"i18n.$t('DIALTONE_EDITOR_FONT_STYLE_SEARCH_PLACEHOLDER')\"\n size=\"sm\"\n role=\"menuitem\"\n >\n <template #leftIcon=\"{ iconSize }\">\n <dt-icon-search :size=\"iconSize\" />\n </template>\n </dt-input>\n </template>\n <template #list=\"{ listProps }\">\n <ul\n v-bind=\"listProps\"\n >\n <dt-list-item\n v-for=\"fontStyle in filteredFontStyles\"\n :key=\"fontStyle.name\"\n :selected=\"isCurrentFontFamily(fontStyle.value)\"\n :style=\"{ fontFamily: fontStyle.value || 'inherit' }\"\n role=\"option\"\n navigation-type=\"arrow-keys\"\n @click=\"\n close();\n onFontStyleSelect(fontStyle.value)\n \"\n >\n {{ fontStyle.name }}\n </dt-list-item>\n </ul>\n </template>\n </dt-combobox>\n </template>\n </editor-toolbar-popover-button>\n\n <!-- Font Size Dropdown -->\n <editor-toolbar-dropdown-button\n v-else-if=\"button.buttonType === 'popover' && button.selector === 'fontSize'\"\n :key=\"getButtonKey(buttonGroup.key, button.selector)\"\n :ref=\"getButtonRef(buttonGroup.key, button.selector)\"\n :is-active=\"$refs.richTextEditor?.editor?.isActive(button.selector)\"\n :tooltip-message=\"button.tooltipMessage\"\n :data-qa=\"button.dataQA\"\n :dropdown-data-qa=\"'dt-recipe-editor-font-size-input-popover'\"\n :tabindex=\"canFocus(getButtonRef(buttonGroup.key, button.selector)) ? 0 : -1\"\n :icon=\"button.icon\"\n @shift-focus-right=\"shiftActionBarFocusRight\"\n @shift-focus-left=\"shiftActionBarFocusLeft\"\n >\n <template #list=\"{ close }\">\n <dt-list-item\n v-for=\"fontSize in fontSizes\"\n :key=\"fontSize.name\"\n :selected=\"isCurrentFontSize(fontSize.value)\"\n role=\"menuitem\"\n navigation-type=\"arrow-keys\"\n @click=\"\n close();\n onFontSizeSelect(fontSize.value, $event)\n \"\n >\n <span :style=\"{ fontSize: fontSize.value }\">{{ fontSize.name }}</span>\n </dt-list-item>\n </template>\n </editor-toolbar-dropdown-button>\n\n <!-- Font Color Button -->\n <dt-button\n v-else-if=\"button.buttonType === 'custom' && button.selector === 'fontColor'\"\n :key=\"getButtonKey(buttonGroup.key, button.selector)\"\n :ref=\"getButtonRef(buttonGroup.key, button.selector)\"\n v-dt-tooltip=\"{\n message: button.tooltipMessage,\n placement: 'top',\n externalAnchorElement: $refs[getButtonRef(buttonGroup.key, button.selector)]?.$el, \n }\"\n kind=\"muted\"\n importance=\"clear\"\n size=\"xs\"\n :active=\"$refs.richTextEditor?.editor?.isActive(button.selector)\"\n :tabindex=\"canFocus(getButtonRef(buttonGroup.key, button.selector)) ? 0 : -1\"\n :aria-label=\"button.tooltipMessage\"\n :data-qa=\"button.dataQA\"\n @keydown.right.stop=\"shiftActionBarFocusRight\"\n @keydown.left.stop=\"shiftActionBarFocusLeft\"\n @click=\"button.onClick()\"\n >\n <template #icon>\n <component\n :is=\"button.icon\"\n size=\"200\"\n :style=\"!isDefaultFontColor ? { color: currentFontColor } : {}\"\n />\n <dt-input\n :value=\"currentFontColor\"\n root-class=\"d-w0 d-h0 d-of-hidden\"\n input-class=\"colorPickerInput d-w0 d-h0 d-p0 d-bar0\"\n input-wrapper-class=\"d-w0 d-h0 d-ba-none\"\n size=\"sm\"\n type=\"color\"\n @input=\"onColorPickerInput\"\n @click.stop\n />\n </template>\n </dt-button>\n\n <!-- Variable Popover -->\n <editor-toolbar-popover-button\n v-else-if=\"button.buttonType === 'popover' && button.selector === 'variable'\"\n :key=\"getButtonKey(buttonGroup.key, button.selector)\"\n :ref=\"getButtonRef(buttonGroup.key, button.selector)\"\n :is-active=\"false\"\n :tooltip-message=\"button.tooltipMessage\"\n :data-qa=\"button.dataQA\"\n :popover-data-qa=\"'dt-recipe-editor-variable-popover'\"\n :tabindex=\"canFocus(getButtonRef(buttonGroup.key, button.selector)) ? 0 : -1\"\n :icon=\"button.icon\"\n @shift-focus-right=\"shiftActionBarFocusRight\"\n @shift-focus-left=\"shiftActionBarFocusLeft\"\n >\n <template #content=\"{ close }\">\n <dt-combobox\n label=\"\"\n :label-visible=\"false\"\n :show-list=\"true\"\n :click-on-select=\"true\"\n @escape=\"close()\"\n >\n <template #input=\"{ inputProps }\">\n <dt-input\n v-bind=\"inputProps\"\n v-model=\"variableSearchValue\"\n root-class=\"d-p8 d-pb4 d-w264\"\n type=\"search\"\n :placeholder=\"i18n.$t('DIALTONE_EDITOR_VARIABLE_POPOVER_SEARCH_PLACEHOLDER')\"\n size=\"md\"\n role=\"menuitem\"\n >\n <template #leftIcon=\"{ iconSize }\">\n <dt-icon-search :size=\"iconSize\" />\n </template>\n </dt-input>\n </template>\n <template #list=\"{ listProps }\">\n <div v-bind=\"listProps\">\n <dt-list-item-group\n v-for=\"(category, index) in filteredCategories\"\n :key=\"category.name\"\n :heading=\"category.name\"\n heading-class=\"d-headline--sm-compact d-p8\"\n >\n <dt-list-item\n v-for=\"item in getFilteredItemsForCategory(category)\"\n :key=\"category.name + item.name\"\n role=\"option\"\n navigation-type=\"arrow-keys\"\n @click=\"\n insertVariable(category.name, item);\n close();\n \"\n >\n {{ item.name }}\n </dt-list-item>\n <dt-dropdown-separator\n v-if=\"index < filteredCategories.length - 1\"\n />\n </dt-list-item-group>\n </div>\n </template>\n </dt-combobox>\n </template>\n </editor-toolbar-popover-button>\n\n <!-- Regular Toolbar Button -->\n <editor-toolbar-button\n v-else-if=\"button.buttonType === 'button'\"\n :key=\"getButtonKey(buttonGroup.key, button.selector)\"\n :ref=\"getButtonRef(buttonGroup.key, button.selector)\"\n :is-active=\"$refs.richTextEditor?.editor?.isActive(button.selector)\"\n :tooltip-message=\"button.tooltipMessage\"\n :data-qa=\"button.dataQA\"\n :tabindex=\"canFocus(getButtonRef(buttonGroup.key, button.selector)) ? 0 : -1\"\n :icon=\"button.icon\"\n :label=\"button.label\"\n :on-click=\"button.onClick\"\n @shift-focus-right=\"shiftActionBarFocusRight\"\n @shift-focus-left=\"shiftActionBarFocusLeft\"\n />\n </template>\n <div class=\"d-recipe-editor__button-group-divider\" />\n </dt-stack>\n <dt-stack\n v-if=\"linkButton.showBtn\"\n direction=\"row\"\n gap=\"300\"\n >\n <dt-popover\n :open=\"showLinkInput\"\n :show-close-button=\"false\"\n data-qa=\"dt-recipe-editor-link-input-popover\"\n padding=\"none\"\n placement=\"bottom-start\"\n @click=\"onInputFocus\"\n @opened=\"updateInput\"\n @click.stop=\"onInputFocus\"\n >\n <template #anchor>\n <dt-tooltip\n :key=\"linkButton.key\"\n :message=\"linkButton.tooltipMessage\"\n placement=\"top\"\n >\n <template #anchor>\n <dt-button\n :ref=\"getButtonRef('custom', 'link')\"\n :active=\"$refs.richTextEditor?.editor?.isActive(linkButton.selector)\"\n :aria-label=\"linkButton.tooltipMessage\"\n :data-qa=\"linkButton.dataQA\"\n :tabindex=\"canFocus(getButtonRef('custom', 'link')) ? 0 : -1\"\n importance=\"clear\"\n kind=\"muted\"\n size=\"xs\"\n @click=\"linkButton.onClick()\"\n @keydown.right.stop=\"shiftActionBarFocusRight\"\n @keydown.left.stop=\"shiftActionBarFocusLeft\"\n >\n <template #icon>\n <component\n :is=\"linkButton.icon\"\n size=\"200\"\n />\n </template>\n </dt-button>\n </template>\n </dt-tooltip>\n </template>\n\n <template #content>\n <div class=\"d-recipe-editor__popover-content\">\n <span>\n {{ showAddLinkButtonLabels.title }}\n </span>\n <dt-input\n v-model=\"linkInput\"\n :input-aria-label=\"showAddLinkButtonLabels['aria-label']\"\n :placeholder=\"setLinkPlaceholder\"\n data-qa=\"dt-recipe-editor-link-input\"\n input-wrapper-class=\"d-recipe-editor-link__input-wrapper\"\n @click=\"onInputFocus\"\n @focus=\"onInputFocus\"\n @click.stop=\"onInputFocus\"\n @keydown.enter=\"setLink\"\n />\n </div>\n </template>\n <template #footerContent>\n <dt-stack\n direction=\"row\"\n gap=\"300\"\n class=\"d-recipe-editor__popover-footer\"\n >\n <dt-button\n data-qa=\"dt-recipe-editor-remove-link-btn\"\n importance=\"clear\"\n kind=\"muted\"\n size=\"sm\"\n v-bind=\"removeLinkButtonLabels\"\n @click=\"removeLink\"\n >\n {{ removeLinkButtonLabels.title }}\n </dt-button>\n <dt-button\n data-qa=\"dt-recipe-editor-set-link-cancel-btn\"\n importance=\"clear\"\n kind=\"muted\"\n size=\"sm\"\n v-bind=\"cancelSetLinkButtonLabels\"\n @click=\"closeLinkInput\"\n >\n {{ cancelSetLinkButtonLabels.title }}\n </dt-button>\n <dt-button\n data-qa=\"dt-recipe-editor-set-link-confirm-btn\"\n size=\"sm\"\n v-bind=\"confirmSetLinkButtonLabels\"\n @click=\"setLink\"\n >\n {{ confirmSetLinkButtonLabels.title }}\n </dt-button>\n </dt-stack>\n </template>\n </dt-popover>\n </dt-stack>\n </dt-stack>\n\n <!-- Some wrapper to restrict the height and show the scrollbar -->\n <div\n :style=\"{ 'max-height': maxHeight }\"\n :class=\"['d-recipe-editor__content', { 'd-recipe-editor__content-image-resize': allowImageResize }]\"\n >\n <dt-rich-text-editor\n ref=\"richTextEditor\"\n v-model=\"internalInputValue\"\n :allow-font-color=\"true\"\n :allow-font-family=\"true\"\n :allow-inline-images=\"true\"\n :allow-line-breaks=\"true\"\n :allow-variable=\"true\"\n :allow-font-size=\"showFontSizeButton\"\n :allow-background-color=\"allowBackgroundColor\"\n :allow-line-height=\"allowLineHeight\"\n :variable-items=\"flattenedVariableItems\"\n :hide-link-bubble-menu=\"true\"\n :auto-focus=\"autoFocus\"\n :editable=\"editable\"\n :input-aria-label=\"inputAriaLabel\"\n :input-class=\"`d-recipe-editor__content-input ${inputClass}`\"\n :link=\"true\"\n :output-format=\"htmlOutputFormat\"\n :placeholder=\"placeholder\"\n :preserve-whitespace=\"preserveWhitespace\"\n :use-div-tags=\"useDivTags\"\n :allow-tables=\"allowTables\"\n :allow-image-resize=\"allowImageResize\"\n data-qa=\"dt-rich-text-editor\"\n v-bind=\"removeClassStyleAttrs($attrs)\"\n @text-input=\"onTextInput\"\n @blur=\"onBlur\"\n @focus=\"onFocus\"\n @input=\"onInput($event)\"\n @selected=\"onSelected\"\n />\n </div>\n </div>\n</template>\n\n<script>\nimport {\n DtRichTextEditor,\n RICH_TEXT_EDITOR_OUTPUT_FORMATS,\n RICH_TEXT_EDITOR_AUTOFOCUS_TYPES,\n} from '@/components/rich_text_editor';\nimport {\n EDITOR_SUPPORTED_LINK_PROTOCOLS,\n EDITOR_DEFAULT_LINK_PREFIX,\n EDITOR_DEFAULT_FONT_COLOR,\n} from './editor_constants.js';\nimport { removeClassStyleAttrs, addClassStyleAttrs } from '@/common/utils';\nimport { DtButton } from '@/components/button';\nimport { DtPopover } from '@/components/popover';\nimport { DtStack } from '@/components/stack';\nimport { DtInput } from '@/components/input';\nimport { DtTooltip } from '@/components/tooltip';\nimport { DtListItem } from '@/components/list_item';\nimport { DtCombobox } from '@/components/combobox';\n\nimport { DtDropdownSeparator } from '@/components/dropdown/index.js';\nimport { DtListItemGroup } from '@/components/list_item_group/index.js';\nimport EditorToolbarButton from './EditorToolbarButton.vue';\nimport EditorToolbarDropdownButton from './EditorToolbarDropdownButton.vue';\nimport EditorToolbarPopoverButton from './EditorToolbarPopoverButton.vue';\nimport {\n DtIconAlignCenter,\n DtIconAlignJustify,\n DtIconAlignLeft,\n DtIconAlignRight,\n DtIconBold,\n DtIconCodeBlock,\n DtIconImage,\n DtIconItalic,\n DtIconQuickReply,\n DtIconLink2,\n DtIconListBullet,\n DtIconListOrdered,\n DtIconQuote,\n DtIconStrikethrough,\n DtIconUnderline,\n DtIconType,\n DtIconBraces,\n DtIconSearch,\n DtIconChevronDown,\n DtIconFontSize,\n DtIconStopFilled,\n} from '@dialpad/dialtone-icons/vue3';\nimport { DialtoneLocalization } from '@/localization';\n\nexport default {\n compatConfig: { MODE: 3 },\n name: 'DtRecipeEditor',\n\n components: {\n DtListItemGroup,\n DtDropdownSeparator,\n DtListItem,\n DtRichTextEditor,\n DtButton,\n DtPopover,\n DtStack,\n DtInput,\n DtTooltip,\n DtCombobox,\n EditorToolbarButton,\n EditorToolbarDropdownButton,\n EditorToolbarPopoverButton,\n DtIconQuickReply,\n DtIconBold,\n DtIconItalic,\n DtIconUnderline,\n DtIconStrikethrough,\n DtIconListBullet,\n DtIconListOrdered,\n DtIconAlignLeft,\n DtIconAlignCenter,\n DtIconAlignRight,\n DtIconAlignJustify,\n DtIconQuote,\n DtIconCodeBlock,\n DtIconLink2,\n DtIconImage,\n DtIconSearch,\n DtIconType,\n DtIconBraces,\n DtIconChevronDown,\n DtIconFontSize,\n DtIconStopFilled,\n },\n\n mixins: [],\n\n inheritAttrs: false,\n\n props: {\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 modelValue: {\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 * 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 * Placeholder text\n */\n placeholder: {\n type: String,\n default: '',\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 /**\n * Placeholder text for the set link input field\n */\n setLinkPlaceholder: {\n type: String,\n default: '',\n },\n\n /**\n * Show button to render text as bold\n */\n showBoldButton: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Show button to render text in italics\n */\n showItalicsButton: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Show button to underline text\n */\n showUnderlineButton: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Show button to strike text\n */\n showStrikeButton: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Show button to render list items\n */\n showListItemsButton: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Show button to render ordered list items\n */\n showOrderedListButton: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Show button to align text to the left\n */\n showAlignLeftButton: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Show button to align text to the center\n */\n showAlignCenterButton: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Show button to align text to the right\n */\n showAlignRightButton: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Show button to justify text\n */\n showAlignJustifyButton: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Show button to add quote format to text\n */\n showQuoteButton: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Show button to add code block\n */\n showCodeBlockButton: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Show button to handle quick replies\n */\n showQuickRepliesButton: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Show button to add an inline image\n */\n showInlineImageButton: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Show button to add a variable\n */\n showVariableButton: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Variable categories to display when variable button is clicked\n */\n variableCategories: {\n type: Array,\n default: () => [],\n },\n\n /**\n * Show add link default config.\n */\n showAddLink: {\n type: Object,\n default: () => ({\n showAddLinkButton: true,\n }),\n },\n\n /**\n * Show font style button.\n */\n showFontStyleButton: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Show font size button.\n */\n showFontSizeButton: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Show font color button.\n */\n showFontColorButton: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Available font styles for the font style dropdown.\n */\n fontStyles: {\n type: Array,\n default: () => [\n { name: 'Arial', value: null }, // arial is the default font\n { name: 'Georgia', value: 'Georgia' },\n { name: 'Helvetica', value: 'Helvetica' },\n { name: 'Verdana', value: 'Verdana'},\n { name: 'Times New Roman', value: 'Times New Roman' },\n ],\n },\n\n fontSizes : {\n type: Array,\n default: () => [\n { name: 'Small', value: '12px'},\n { name: 'Normal', value: '15px'},\n { name: 'Large', value: '24px'},\n { name: 'Huge', value: '36px'},\n ],\n },\n\n /**\n * Whether the input allows background color to be introduced in the text.\n */\n allowBackgroundColor: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Whether the input allows line height to be introduced in the text.\n */\n allowLineHeight: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Controls how whitespace is handled when parsing HTML content.\n * - 'full': All whitespace is preserved\n * - true: Whitespace in inline content is preserved, whitespace-only nodes between blocks are removed\n * - false: Standard HTML whitespace collapsing\n * @values full, true, false\n */\n preserveWhitespace: {\n type: [Boolean, String],\n default: 'full',\n },\n\n /**\n * Use div tags instead of paragraph tags to show text\n */\n useDivTags: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Allow Tables to be used in to the editor\n */\n allowTables: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Allow image resizing\n */\n allowImageResize: {\n type: Boolean,\n default: false,\n },\n },\n\n emits: [\n /**\n * Native focus event\n * @event input\n * @type {String|JSON}\n */\n 'focus',\n\n /**\n * Native blur event\n * @event input\n * @type {String|JSON}\n */\n 'blur',\n\n /**\n * Native input event\n * @event input\n * @type {String|JSON}\n */\n 'input',\n\n /**\n * Event fired to sync the modelValue prop with the parent component\n * @event input\n * @type {String|JSON}\n */\n 'update:modelValue',\n\n /**\n * Quick replies button\n * pressed event\n * @event quick-replies-click\n */\n 'quick-replies-click',\n\n /**\n * Emit when inline image button is clicked\n * @event inline-image-click\n */\n 'inline-image-click',\n\n /**\n * Emit when text input is changed\n * @event text-input\n * @type {String}\n */\n 'text-input',\n ],\n\n data () {\n return {\n internalInputValue: this.modelValue, // internal input content\n hasFocus: false,\n\n linkOptions: {\n class: 'd-recipe-editor__link',\n },\n\n currentFontColor: undefined,\n showLinkInput: false,\n fontStyleSearch: '',\n linkInput: '',\n currentButtonRefIndex: 0,\n variableSearchValue: '',\n i18n: new DialtoneLocalization(),\n };\n },\n\n computed: {\n inputLength () {\n return this.internalInputValue.length;\n },\n\n htmlOutputFormat () {\n return RICH_TEXT_EDITOR_OUTPUT_FORMATS[2];\n },\n\n flattenedVariableItems () {\n if (!this.variableCategories) return [];\n return this.variableCategories.reduce((acc, category) => {\n return acc.concat(category.items || []);\n }, []);\n },\n\n showingTextFormatButtons () {\n return this.showBoldButton || this.showItalicsButton || this.showStrikeButton || this.showUnderlineButton;\n },\n\n showingAlignmentButtons () {\n return this.showAlignLeftButton || this.showAlignCenterButton ||\n this.showAlignRightButton || this.showAlignJustifyButton;\n },\n\n showingListButtons () {\n return this.showListItemsButton || this.showOrderedListButton;\n },\n\n orderedRefs () {\n const refs = this.buttonGroups.reduce(function (acc, buttonData) {\n buttonData.buttonGroup.forEach(button => {\n acc.push(this.getButtonRef(buttonData.key, button.selector));\n }, this);\n return acc;\n }.bind(this), []);\n refs.push(this.getButtonRef('custom', 'link'));\n return refs;\n },\n\n buttonGroups () {\n const individualButtonStacks = this.individualButtons.map(buttonData => ({\n key: buttonData.selector,\n buttonGroup: [buttonData],\n }));\n return [\n { key: 'new', buttonGroup: this.newButtons },\n { key: 'format', buttonGroup: this.textFormatButtons },\n { key: 'alignment', buttonGroup: this.alignmentButtons },\n { key: 'list', buttonGroup: this.listButtons },\n ...individualButtonStacks,\n ].filter(buttonGroupData => buttonGroupData.buttonGroup.length > 0);\n },\n\n newButtons () {\n return [\n {\n showBtn: this.showQuickRepliesButton,\n buttonType: 'button',\n label: this.i18n.$t('DIALTONE_EDITOR_QUICK_REPLY_BUTTON_LABEL'),\n selector: 'quickReplies',\n icon: DtIconQuickReply,\n dataQA: 'dt-recipe-editor-quick-replies-btn',\n tooltipMessage: this.i18n.$t('DIALTONE_EDITOR_QUICK_REPLY_BUTTON_LABEL'),\n onClick: this.onQuickRepliesClick,\n },\n ].filter(button => button.showBtn);\n },\n\n textFormatButtons () {\n return [\n {\n showBtn: this.showFontStyleButton,\n buttonType: 'popover',\n selector: 'fontStyle',\n icon: DtIconType,\n dataQA: 'dt-recipe-editor-font-style-btn',\n tooltipMessage: this.i18n.$t('DIALTONE_EDITOR_FONT_STYLE_BUTTON_LABEL'),\n },\n {\n showBtn: this.showFontSizeButton,\n buttonType: 'popover',\n selector: 'fontSize',\n icon: DtIconFontSize,\n dataQA: 'dt-recipe-editor-font-size-btn',\n tooltipMessage: this.i18n.$t('DIALTONE_EDITOR_FONT_SIZE_BUTTON_LABEL'),\n },\n {\n showBtn: this.showFontColorButton,\n buttonType: 'custom',\n selector: 'fontColor',\n icon: DtIconStopFilled,\n dataQA: 'dt-recipe-editor-font-color-btn',\n tooltipMessage: this.i18n.$t('DIALTONE_EDITOR_FONT_COLOR_BUTTON_LABEL'),\n onClick: this.onColorPickerButtonClick,\n },\n {\n showBtn: this.showBoldButton,\n buttonType: 'button',\n selector: 'bold',\n icon: DtIconBold,\n dataQA: 'dt-recipe-editor-bold-btn',\n tooltipMessage: this.i18n.$t('DIALTONE_EDITOR_BOLD_BUTTON_LABEL'),\n onClick: this.onBoldTextToggle,\n },\n {\n showBtn: this.showItalicsButton,\n buttonType: 'button',\n selector: 'italic',\n icon: DtIconItalic,\n dataQA: 'dt-recipe-editor-italics-btn',\n tooltipMessage: this.i18n.$t('DIALTONE_EDITOR_ITALICS_BUTTON_LABEL'),\n onClick: this.onItalicTextToggle,\n },\n {\n showBtn: this.showUnderlineButton,\n buttonType: 'button',\n selector: 'underline',\n icon: DtIconUnderline,\n dataQA: 'dt-recipe-editor-underline-btn',\n tooltipMessage: this.i18n.$t('DIALTONE_EDITOR_UNDERLINE_BUTTON_LABEL'),\n onClick: this.onUnderlineTextToggle,\n },\n {\n showBtn: this.showStrikeButton,\n buttonType: 'button',\n selector: 'strike',\n icon: DtIconStrikethrough,\n dataQA: 'dt-recipe-editor-strike-btn',\n tooltipMessage: this.i18n.$t('DIALTONE_EDITOR_STRIKE_BUTTON_LABEL'),\n onClick: this.onStrikethroughTextToggle,\n },\n ].filter(button => button.showBtn);\n },\n\n alignmentButtons () {\n return [\n {\n showBtn: this.showAlignLeftButton,\n buttonType: 'button',\n selector: { textAlign: 'left' },\n icon: DtIconAlignLeft,\n dataQA: 'dt-recipe-editor-align-left-btn',\n tooltipMessage: this.i18n.$t('DIALTONE_EDITOR_ALIGN_LEFT_BUTTON_LABEL'),\n onClick: () => this.onTextAlign('left'),\n },\n {\n showBtn: this.showAlignCenterButton,\n buttonType: 'button',\n selector: { textAlign: 'center' },\n icon: DtIconAlignCenter,\n dataQA: 'dt-recipe-editor-align-center-btn',\n tooltipMessage: this.i18n.$t('DIALTONE_EDITOR_ALIGN_CENTER_BUTTON_LABEL'),\n onClick: () => this.onTextAlign('center'),\n },\n {\n showBtn: this.showAlignRightButton,\n buttonType: 'button',\n selector: { textAlign: 'right' },\n icon: DtIconAlignRight,\n dataQA: 'dt-recipe-editor-align-right-btn',\n tooltipMessage: this.i18n.$t('DIALTONE_EDITOR_ALIGN_RIGHT_BUTTON_LABEL'),\n onClick: () => this.onTextAlign('right'),\n },\n {\n showBtn: this.showAlignJustifyButton,\n buttonType: 'button',\n selector: { textAlign: 'justify' },\n icon: DtIconAlignJustify,\n dataQA: 'dt-recipe-editor-align-justify-btn',\n tooltipMessage: this.i18n.$t('DIALTONE_EDITOR_ALIGN_JUSTIFY_BUTTON_LABEL'),\n onClick: () => this.onTextAlign('justify'),\n },\n ].filter(button => button.showBtn);\n },\n\n listButtons () {\n return [\n {\n showBtn: this.showListItemsButton,\n buttonType: 'button',\n selector: 'bulletList',\n icon: DtIconListBullet,\n dataQA: 'dt-recipe-editor-list-items-btn',\n tooltipMessage: this.i18n.$t('DIALTONE_EDITOR_BULLET_LIST_BUTTON_LABEL'),\n onClick: this.onBulletListToggle,\n },\n {\n showBtn: this.showOrderedListButton,\n buttonType: 'button',\n selector: 'orderedList',\n icon: DtIconListOrdered,\n dataQA: 'dt-recipe-editor-ordered-list-items-btn',\n tooltipMessage: this.i18n.$t('DIALTONE_EDITOR_ORDERED_LIST_BUTTON_LABEL'),\n onClick: this.onOrderedListToggle,\n },\n ].filter(button => button.showBtn);\n },\n\n individualButtons () {\n return [\n {\n showBtn: this.showQuoteButton,\n buttonType: 'button',\n selector: 'blockquote',\n icon: DtIconQuote,\n dataQA: 'dt-recipe-editor-blockquote-btn',\n tooltipMessage: this.i18n.$t('DIALTONE_EDITOR_QUOTE_BUTTON_LABEL'),\n onClick: this.onBlockquoteToggle,\n },\n {\n showBtn: this.showCodeBlockButton,\n buttonType: 'button',\n selector: 'codeBlock',\n icon: DtIconCodeBlock,\n dataQA: 'dt-recipe-editor-code-block-btn',\n tooltipMessage: this.i18n.$t('DIALTONE_EDITOR_CODE_BUTTON_LABEL'),\n onClick: this.onCodeBlockToggle,\n },\n {\n showBtn: this.showInlineImageButton,\n buttonType: 'button',\n selector: 'image',\n icon: DtIconImage,\n dataQA: 'dt-recipe-editor-inline-image-btn',\n tooltipMessage: this.i18n.$t('DIALTONE_EDITOR_IMAGE_BUTTON_LABEL'),\n // Handle getting image\n onClick: this.onInsertInlineImageClick,\n },\n {\n showBtn: this.showVariableButton,\n buttonType: 'popover',\n selector: 'variable',\n icon: DtIconBraces,\n dataQA: 'dt-recipe-editor-variable-btn',\n tooltipMessage: this.i18n.$t('DIALTONE_EDITOR_VARIABLE_BUTTON_LABEL'),\n },\n ].filter(button => button.showBtn);\n },\n\n linkButton () {\n return {\n showBtn: this.showAddLink.showAddLinkButton,\n buttonType: 'custom',\n selector: 'link',\n icon: DtIconLink2,\n dataQA: 'dt-recipe-editor-add-link-btn',\n tooltipMessage: this.i18n.$t('DIALTONE_EDITOR_LINK_BUTTON_LABEL'),\n onClick: this.openLinkInput,\n };\n },\n\n confirmSetLinkButtonLabels () {\n return this.i18n.$ta('DIALTONE_EDITOR_CONFIRM_SET_LINK_BUTTON');\n },\n\n cancelSetLinkButtonLabels () {\n return this.i18n.$ta('DIALTONE_EDITOR_CANCEL_SET_LINK_BUTTON');\n },\n\n removeLinkButtonLabels () {\n return this.i18n.$ta('DIALTONE_EDITOR_REMOVE_LINK_BUTTON');\n },\n\n showAddLinkButtonLabels () {\n return this.i18n.$ta('DIALTONE_EDITOR_ADD_LINK_BUTTON');\n },\n\n filteredFontStyles () {\n const searchValue = this.fontStyleSearch.toLowerCase();\n return this.fontStyles.filter((item) =>\n item.name.toLowerCase().includes(searchValue),\n );\n },\n\n filteredCategories() {\n return this.variableCategories.filter(\n (category) => this.getFilteredItemsForCategory(category).length,\n );\n },\n\n colorPickerInput() {\n return this.$refs.editorRoot?.querySelector('.colorPickerInput');\n },\n\n isDefaultFontColor() {\n return this.currentFontColor === EDITOR_DEFAULT_FONT_COLOR;\n },\n\n actionBarBtn () {\n const ref = this.$refs[this.orderedRefs[this.currentButtonRefIndex]][0]?.$refs?.buttonRef // get nested ref\n || this.$refs[this.orderedRefs[this.currentButtonRefIndex]];\n return Array.isArray(ref) ? ref[0] : ref;\n },\n\n },\n\n watch: {\n modelValue (newValue) {\n this.internalInputValue = newValue;\n },\n },\n\n methods: {\n removeClassStyleAttrs,\n addClassStyleAttrs,\n\n onInputFocus (event) {\n event?.stopPropagation();\n },\n\n removeLink () {\n this.$refs.richTextEditor?.editor?.chain()?.focus()?.unsetLink()?.run();\n this.closeLinkInput();\n },\n\n setLink (event) {\n const editor = this.$refs.richTextEditor?.editor;\n event?.preventDefault();\n event?.stopPropagation();\n\n if (!this.linkInput) {\n // If link text is set to empty string,\n // remove any existing links.\n this.removeLink();\n return;\n }\n\n // Check if input matches any of the supported link formats\n const prefix = EDITOR_SUPPORTED_LINK_PROTOCOLS.find(prefixRegex => prefixRegex.test(this.linkInput));\n\n if (!prefix) {\n // If no matching pattern is found, prepend default prefix\n this.linkInput = `${EDITOR_DEFAULT_LINK_PREFIX}${this.linkInput}`;\n }\n\n const selection = editor?.view?.state?.selection;\n\n if (selection.anchor === selection.head) {\n // If no text has been selected, manually insert the link text.\n // Do not rely on link options set through DtRichTextEditor\n // component, because they clash with these and cause issues.\n editor\n .chain()\n .focus()\n .insertContentAt(\n selection.anchor,\n `<a class=\"${this.linkOptions.class}\" href=${this.linkInput}>${this.linkInput}</a>`,\n )\n .run();\n } else {\n // Set or edit the link\n editor\n .chain()\n .focus()\n .extendMarkRange('link')\n .setLink({ href: this.linkInput, class: this.linkOptions.class })\n .run();\n }\n\n this.closeLinkInput();\n },\n\n openLinkInput () {\n this.showLinkInput = true;\n },\n\n updateInput (openedInput) {\n if (!openedInput) {\n return this.closeLinkInput();\n }\n this.linkInput = this.$refs.richTextEditor?.editor?.getAttributes('link')?.href;\n },\n\n closeLinkInput () {\n this.showLinkInput = false;\n this.linkInput = '';\n this.$refs.richTextEditor.editor?.chain().focus();\n },\n\n onBoldTextToggle () {\n this.$refs.richTextEditor?.editor?.chain().focus().toggleBold().run();\n },\n\n onItalicTextToggle () {\n this.$refs.richTextEditor?.editor.chain().focus().toggleItalic().run();\n },\n\n onUnderlineTextToggle () {\n this.$refs.richTextEditor?.editor.chain().focus().toggleUnderline().run();\n },\n\n onStrikethroughTextToggle () {\n this.$refs.richTextEditor?.editor.chain().focus().toggleStrike().run();\n },\n\n onTextAlign (alignment) {\n if (this.$refs.richTextEditor?.editor?.isActive({ textAlign: alignment })) {\n // If this alignment type is already set here, unset it\n return this.$refs.richTextEditor?.editor.chain().focus().unsetTextAlign().run();\n }\n this.$refs.richTextEditor?.editor.chain().focus().setTextAlign(alignment).run();\n },\n\n onBulletListToggle () {\n this.$refs.richTextEditor?.editor.chain().focus().toggleBulletList().run();\n },\n\n onOrderedListToggle () {\n this.$refs.richTextEditor?.editor.chain().focus().toggleOrderedList().run();\n },\n\n onCodeBlockToggle () {\n this.$refs.richTextEditor?.editor.chain().focus().toggleCodeBlock().run();\n },\n\n onQuickRepliesClick () {\n this.$emit('quick-replies-click');\n },\n\n onInsertInlineImageClick () {\n this.$emit('inline-image-click');\n },\n\n insertVariable (categoryName, variableData) {\n // Insert a variable using the custom command from the Variable extension\n this.$refs.richTextEditor?.editor.chain().focus().insertVariable({\n id: variableData.id,\n placeholder: variableData.placeholder || '',\n altText: '',\n enableAltText: variableData.enableAltText,\n }).run();\n },\n\n insertInlineImage (imageUrl) {\n this.$refs.richTextEditor?.editor.chain().focus().setImage({ src: imageUrl }).run();\n },\n\n insertInMessageBody (messageContent) {\n this.$refs.richTextEditor?.editor.chain().focus().insertContent(messageContent).run();\n },\n\n setCursorPosition (position = null) {\n this.$refs.richTextEditor?.editor.chain().focus(position).run();\n },\n\n onBlockquoteToggle () {\n this.$refs.richTextEditor?.editor.chain().focus().toggleBlockquote().run();\n },\n\n onTextInput (input) {\n this.$emit('text-input', input);\n },\n\n onFocus (event) {\n this.hasFocus = true;\n this.$emit('focus', event);\n },\n\n onBlur (event) {\n this.hasFocus = false;\n this.$emit('blur', event);\n },\n\n onInput (event) {\n this.$emit('input', event);\n this.$emit('update:modelValue', event);\n },\n\n onSelected() {\n this.updateFontColorInput();\n },\n\n getButtonKey (key, selector) {\n return `${key}-${JSON.stringify(selector)}`;\n },\n\n // Unique Button Ref Key to identify ref\n getButtonRef (key, selector) {\n return `${this.getButtonKey(key, selector)}-ref`;\n },\n\n /**\n * Determines if an element in the action bar button list is focusable with tab key\n * @param {string} refKey - unique identifier for the ref element in DOM\n */\n canFocus (refKey) {\n return refKey === this.orderedRefs[this.currentButtonRefIndex];\n },\n\n shiftActionBarFocusRight () {\n this.shiftButtonRefIndex(1);\n },\n\n shiftActionBarFocusLeft () {\n this.shiftButtonRefIndex(-1);\n },\n\n shiftButtonRefIndex (shiftAmount) {\n const previousActionBarBtn = this.actionBarBtn;\n const index = (this.currentButtonRefIndex + shiftAmount) % this.orderedRefs.length;\n this.currentButtonRefIndex = index >= 0 ? index : this.orderedRefs.length + index;\n const currentActionBarBtn = this.actionBarBtn;\n\n previousActionBarBtn.$el.blur();\n currentActionBarBtn.$el.focus();\n },\n\n onFontStyleSelect (fontFamily) {\n if (fontFamily) {\n this.$refs.richTextEditor?.editor?.chain().focus().setFontFamily(fontFamily).run();\n } else {\n this.$refs.richTextEditor?.editor?.chain().focus().unsetFontFamily().run();\n }\n this.$refs.richTextEditor?.editor?.commands.focus();\n },\n\n isCurrentFontFamily (fontFamily) {\n if (!fontFamily) {\n return !this.$refs.richTextEditor?.editor?.getAttributes('textStyle')?.fontFamily;\n }\n return this.$refs.richTextEditor?.editor?.isActive('textStyle', { fontFamily });\n },\n\n onFontSizeSelect (fontSize) {\n this.$refs.richTextEditor?.editor?.chain().focus().setFontSize(fontSize).run();\n this.$refs.richTextEditor?.editor?.commands.focus();\n },\n\n isCurrentFontSize (fontSize) {\n if (!fontSize) {\n return !this.$refs.richTextEditor?.editor?.getAttributes('textStyle')?.fontSize;\n }\n return this.$refs.richTextEditor?.editor?.isActive('textStyle', { fontSize });\n },\n\n getFilteredItemsForCategory(category) {\n const searchValue = this.variableSearchValue.toLowerCase();\n if (category.name.toLowerCase().includes(searchValue)) {\n return category.items;\n }\n return category.items.filter((item) =>\n item.name.toLowerCase().includes(searchValue),\n );\n },\n\n updateFontColorInput() {\n this.currentFontColor = this.$refs.richTextEditor?.editor?.getAttributes('textStyle')?.color || EDITOR_DEFAULT_FONT_COLOR;\n },\n\n onColorPickerButtonClick () {\n this.colorPickerInput?.click();\n },\n\n onColorPickerInput (fontColor) {\n this.$refs.richTextEditor?.editor?.chain().focus().setColor(fontColor).run();\n this.$refs.richTextEditor?.editor?.commands.focus();\n this.updateFontColorInput();\n },\n },\n};\n</script>\n\n<style>\n/* Image resizing classes - only active when allowImageResize is true */\n\n/* Image border */\n.d-recipe-editor__content-image-resize .tiptap .ProseMirror-selectednode [data-resize-wrapper] {\n outline: 1px solid var(--dt-color-chart-info-selected);\n line-height: 0 !important;\n}\n\n/* Corner handles */\n.d-recipe-editor__content-image-resize .tiptap .ProseMirror-selectednode [data-resize-handle] {\n position: absolute;\n background: var(--dt-color-chart-info-selected);\n z-index: 10;\n}\n\n.d-recipe-editor__content-image-resize .tiptap .ProseMirror-selectednode [data-resize-handle='top-left'],\n.d-recipe-editor__content-image-resize .tiptap .ProseMirror-selectednode [data-resize-handle='top-right'],\n.d-recipe-editor__content-image-resize .tiptap .ProseMirror-selectednode [data-resize-handle='bottom-left'],\n.d-recipe-editor__content-image-resize .tiptap .ProseMirror-selectednode [data-resize-handle='bottom-right'] {\n width: 8px;\n height: 8px;\n}\n.d-recipe-editor__content-image-resize .tiptap .ProseMirror-selectednode [data-resize-handle='top-left'] {\n cursor: nwse-resize;\n transform: translate(-50%, -50%);\n}\n.d-recipe-editor__content-image-resize .tiptap .ProseMirror-selectednode [data-resize-handle='top-right'] {\n cursor: nesw-resize;\n transform: translate(50%, -50%);\n}\n.d-recipe-editor__content-image-resize .tiptap .ProseMirror-selectednode [data-resize-handle='bottom-left'] {\n cursor: nesw-resize;\n transform: translate(-50%, 50%);\n}\n.d-recipe-editor__content-image-resize .tiptap .ProseMirror-selectednode [data-resize-handle='bottom-right'] {\n cursor: nwse-resize;\n transform: translate(50%, 50%);\n}\n</style>\n"],"names":["_sfc_main","DtListItemGroup","DtDropdownSeparator","DtListItem","DtRichTextEditor","DtButton","DtPopover","DtStack","DtInput","DtTooltip","DtCombobox","EditorToolbarButton","EditorToolbarDropdownButton","EditorToolbarPopoverButton","DtIconQuickReply","DtIconBold","DtIconItalic","DtIconUnderline","DtIconStrikethrough","DtIconListBullet","DtIconListOrdered","DtIconAlignLeft","DtIconAlignCenter","DtIconAlignRight","DtIconAlignJustify","DtIconQuote","DtIconCodeBlock","DtIconLink2","DtIconImage","DtIconSearch","DtIconType","DtIconBraces","DtIconChevronDown","DtIconFontSize","DtIconStopFilled","autoFocus","RICH_TEXT_EDITOR_AUTOFOCUS_TYPES","DialtoneLocalization","RICH_TEXT_EDITOR_OUTPUT_FORMATS","acc","category","refs","buttonData","button","individualButtonStacks","buttonGroupData","searchValue","item","_a","EDITOR_DEFAULT_FONT_COLOR","ref","_b","newValue","removeClassStyleAttrs","addClassStyleAttrs","event","_e","_d","_c","editor","EDITOR_SUPPORTED_LINK_PROTOCOLS","prefixRegex","EDITOR_DEFAULT_LINK_PREFIX","selection","openedInput","alignment","categoryName","variableData","imageUrl","messageContent","position","input","key","selector","refKey","shiftAmount","previousActionBarBtn","index","currentActionBarBtn","fontFamily","_f","fontSize","fontColor","_hoisted_1","_openBlock","_createElementBlock","_mergeProps","$options","_ctx","_cache","$event","_createVNode","_component_dt_stack","_Fragment","_renderList","buttonGroup","_createBlock","_component_editor_toolbar_popover_button","_withCtx","close","_component_dt_combobox","inputProps","_component_dt_input","$data","iconSize","_component_dt_icon_search","listProps","_createElementVNode","fontStyle","_component_dt_list_item","_normalizeStyle","_createTextVNode","_toDisplayString","_component_editor_toolbar_dropdown_button","$props","_component_dt_button","_resolveDynamicComponent","_g","_component_dt_list_item_group","_component_dt_dropdown_separator","_component_editor_toolbar_button","_i","_h","_component_dt_popover","_component_dt_tooltip","_component_dt_rich_text_editor"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("vue"),
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("vue"),S=require("../../common/utils/index.cjs"),y=require("../tooltip/tooltip-constants.cjs"),P=require("../popover/popover.cjs"),T=require("../popover/popover-constants.cjs"),E={__name:"hovercard",props:{transition:{type:Boolean,default:!1},open:{type:Boolean,default:null},fallbackPlacements:{type:Array,default:()=>["auto"]},placement:{type:String,default:"top-start",validator(t){return y.TOOLTIP_DIRECTIONS.includes(t)}},padding:{type:String,default:"large",validator:t=>Object.keys(T.POPOVER_PADDING_CLASSES).some(s=>s===t)},offset:{type:Array,default:()=>[0,16]},id:{type:String,default(){return S.getUniqueString()}},headerClass:{type:[String,Array,Object],default:""},footerClass:{type:[String,Array,Object],default:""},dialogClass:{type:[String,Array,Object],default:""},contentClass:{type:[String,Array,Object],default:""},appendTo:{type:[HTMLElement,String],default:"body",validator:t=>T.POPOVER_APPEND_TO_VALUES.includes(t)||t instanceof HTMLElement},enterDelay:{type:Number,default:y.TOOLTIP_DELAY_MS},leaveDelay:{type:Number,default:y.TOOLTIP_DELAY_MS},externalAnchorElement:{type:HTMLElement,default:null}},emits:["opened"],setup(t,{expose:s}){const o=t,l=e.ref(o.open),i=e.ref(!1),c=e.ref(!1),d=e.ref(null),f=e.ref(null),v=e.ref(null),u=e.ref(null),h=e.ref(null);e.onMounted(()=>{e.nextTick(()=>{var n,r,a;v.value=(a=(r=(n=h.value)==null?void 0:n.$refs)==null?void 0:r.anchor)==null?void 0:a.firstElementChild,u.value=new MutationObserver(()=>{v.value&&!v.value.isConnected&&(l.value=!1)}),u.value.observe(document.body,{childList:!0,subtree:!0})})}),e.onBeforeUnmount(()=>{u.value&&u.value.disconnect(),clearTimeout(d),clearTimeout(f)}),e.watch(()=>o.open,n=>{l.value=n},{immediate:!0}),s({show:m,hide:p});function C(){o.open===null&&(clearTimeout(f.value),d.value=setTimeout(()=>{l.value=!0},o.enterDelay))}function O(){o.open===null&&(clearTimeout(d.value),f.value=setTimeout(()=>{l.value=!1},o.leaveDelay))}function m(){c.value=!0,C()}function p(){c.value=!1,!i.value&&O()}function b(){i.value=!0,C()}function g(){i.value=!1,c.value||O()}return(n,r)=>(e.openBlock(),e.createBlock(e.unref(P.default),{id:t.id,ref_key:"popover",ref:h,open:l.value,placement:t.placement,"content-class":t.contentClass,"dialog-class":t.dialogClass,"fallback-placements":t.fallbackPlacements,padding:t.padding,transition:t.transition?"fade":null,offset:t.offset,modal:!1,"initial-focus-element":"none","header-class":t.headerClass,"footer-class":t.footerClass,"append-to":t.appendTo,"external-anchor-element":t.externalAnchorElement,"data-qa":"dt-hovercard","enter-delay":t.enterDelay,"leave-delay":t.leaveDelay,onOpened:r[0]||(r[0]=a=>n.$emit("opened",a)),onMouseenterPopover:m,onMouseleavePopover:p,onMouseenterPopoverAnchor:m,onMouseleavePopoverAnchor:p},{anchor:e.withCtx(({attrs:a})=>[e.renderSlot(n.$slots,"anchor",e.normalizeProps(e.guardReactiveProps(a)))]),content:e.withCtx(()=>[e.createElementVNode("div",{onFocusin:b,onFocusout:g},[e.renderSlot(n.$slots,"content")],32)]),headerContent:e.withCtx(()=>[e.renderSlot(n.$slots,"headerContent")]),footerContent:e.withCtx(()=>[e.renderSlot(n.$slots,"footerContent")]),_:3},8,["id","open","placement","content-class","dialog-class","fallback-placements","padding","transition","offset","header-class","footer-class","append-to","external-anchor-element","enter-delay","leave-delay"]))}};exports.default=E;
|
|
2
2
|
//# sourceMappingURL=hovercard.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hovercard.cjs","sources":["../../../components/hovercard/hovercard.vue"],"sourcesContent":["<!-- eslint-disable vue/multi-word-component-names -->\n<template>\n <dt-popover\n :id=\"id\"\n ref=\"popover\"\n :open=\"hovercardOpen\"\n :placement=\"placement\"\n :content-class=\"contentClass\"\n :dialog-class=\"dialogClass\"\n :fallback-placements=\"fallbackPlacements\"\n :padding=\"padding\"\n :transition=\"transition ? 'fade' : null\"\n :offset=\"offset\"\n :modal=\"false\"\n initial-focus-element=\"none\"\n :header-class=\"headerClass\"\n :footer-class=\"footerClass\"\n :append-to=\"appendTo\"\n :external-anchor-element=\"externalAnchorElement\"\n data-qa=\"dt-hovercard\"\n :enter-delay=\"enterDelay\"\n :leave-delay=\"leaveDelay\"\n @opened=\"(e) => ($emit('opened', e))\"\n @mouseenter-popover=\"onMouseEnter\"\n @mouseleave-popover=\"onMouseLeave\"\n @mouseenter-popover-anchor=\"onMouseEnter\"\n @mouseleave-popover-anchor=\"onMouseLeave\"\n >\n <template #anchor=\"{ attrs }\">\n <!-- @slot Anchor element that activates the hovercard. Usually a button. -->\n <slot\n name=\"anchor\"\n v-bind=\"attrs\"\n />\n </template>\n <template #content>\n <div\n @focusin=\"onContentFocusIn\"\n @focusout=\"onContentFocusOut\"\n >\n <!-- @slot Slot for the content that is displayed in the hovercard. -->\n <slot name=\"content\" />\n </div>\n </template>\n <template #headerContent>\n <!-- @slot Slot for hovercard header content -->\n <slot name=\"headerContent\" />\n </template>\n\n <template #footerContent>\n <!-- @slot Slot for the footer content. -->\n <slot name=\"footerContent\" />\n </template>\n </dt-popover>\n</template>\n\n<script setup>\nimport { ref, watch, nextTick, onMounted, onBeforeUnmount } from 'vue';\nimport { POPOVER_APPEND_TO_VALUES, POPOVER_PADDING_CLASSES, DtPopover } from '@/components/popover/index.js';\nimport { TOOLTIP_DIRECTIONS, TOOLTIP_DELAY_MS } from '@/components/tooltip/index.js';\nimport { getUniqueString } from '@/common/utils';\n\nconst props = defineProps({\n /**\n * Fade transition when the content display is toggled.\n * @type boolean\n * @values true, false\n */\n transition: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Controls whether the hovercard is shown. Leaving this null will have the hovercard trigger on hover by default.\n * If you set this value, the default trigger behavior will be disabled, and you can control it as you need.\n * Supports .sync modifier\n * @values null, true, false\n */\n open: {\n type: Boolean,\n default: null,\n },\n\n /**\n * If the popover does not fit in the direction described by \"placement\",\n * it will attempt to change its direction to the \"fallbackPlacements\".\n * @see https://popper.js.org/docs/v2/modifiers/flip/#fallbackplacements\"\n */\n fallbackPlacements: {\n type: Array,\n default: () => {\n return ['auto'];\n },\n },\n\n /**\n * The direction the popover displays relative to the anchor.\n * @see https://atomiks.github.io/tippyjs/v6/all-props/#placement\"\n * @values top, top-start, top-end,\n * right, right-start, right-end,\n * left, left-start, left-end,\n * bottom, bottom-start, bottom-end,\n * auto, auto-start, auto-end\n */\n placement: {\n type: String,\n default: 'top-start',\n validator (placement) {\n return TOOLTIP_DIRECTIONS.includes(placement);\n },\n },\n\n /**\n * Padding size class for the popover content.\n * @values none, small, medium, large\n */\n padding: {\n type: String,\n default: 'large',\n validator: (padding) => {\n return Object.keys(POPOVER_PADDING_CLASSES).some((item) => item === padding);\n },\n },\n\n /**\n * Displaces the content box from its anchor element\n * by the specified number of pixels.\n * @see https://atomiks.github.io/tippyjs/v6/all-props/#offset\"\n */\n offset: {\n type: Array,\n default: () => [0, 16],\n },\n\n /**\n * The id of the tooltip\n */\n id: {\n type: String,\n default () { return getUniqueString(); },\n },\n\n /**\n * Additional class name for the header content wrapper element.\n */\n headerClass: {\n type: [String, Array, Object],\n default: '',\n },\n\n /**\n * Additional class name for the footer content wrapper element.\n */\n footerClass: {\n type: [String, Array, Object],\n default: '',\n },\n\n /**\n * Additional class name for the dialog element.\n */\n dialogClass: {\n type: [String, Array, Object],\n default: '',\n },\n\n /**\n * Additional class name for the content wrapper element.\n */\n contentClass: {\n type: [String, Array, Object],\n default: '',\n },\n\n /**\n * Sets the element to which the popover is going to append to.\n * 'body' will append to the nearest body (supports shadow DOM).\n * @values 'body', 'parent', HTMLElement,\n */\n appendTo: {\n type: [HTMLElement, String],\n default: 'body',\n validator: appendTo => {\n return POPOVER_APPEND_TO_VALUES.includes(appendTo) ||\n (appendTo instanceof HTMLElement);\n },\n },\n\n /**\n * The enter delay in milliseconds before the hovercard is shown.\n * @type number\n */\n enterDelay: {\n type: Number,\n default: TOOLTIP_DELAY_MS,\n },\n\n /**\n * The leave delay in milliseconds before the hovercard is hidden.\n * @type number\n */\n leaveDelay: {\n type: Number,\n default: TOOLTIP_DELAY_MS,\n },\n\n /**\n * External anchor element reference. Use this instead of the anchor slot when\n * the anchor may be inside a Shadow DOM, as querySelector cannot pierce shadow boundaries.\n */\n externalAnchorElement: {\n type: HTMLElement,\n default: null,\n },\n});\n\ndefineEmits([\n /**\n * Emitted when hovercard is shown or hidden\n *\n * @event opened\n * @type {Boolean | Array}\n */\n 'opened',\n]);\n\nconst hovercardOpen = ref(props.open);\nconst contentFocused = ref(false);\nconst mouseOverHovercard = ref(false);\nconst inTimer = ref(null);\nconst outTimer = ref(null);\nconst anchorEl = ref(null);\nconst observer = ref(null);\nconst popover = ref(null);\n\nonMounted(() => {\n nextTick(() => {\n anchorEl.value = popover.value?.$refs?.anchor?.firstElementChild;\n\n observer.value = new MutationObserver(() => {\n if (anchorEl.value && !anchorEl.value.isConnected) {\n hovercardOpen.value = false;\n }\n });\n\n observer.value.observe(document.body, {\n childList: true,\n subtree: true,\n });\n });\n});\n\nonBeforeUnmount(() => {\n if (observer.value) {\n observer.value.disconnect();\n }\n clearTimeout(inTimer);\n clearTimeout(outTimer);\n});\nwatch(() => props.open, (open) => {\n hovercardOpen.value = open;\n}, { immediate: true });\n\nfunction setInTimer () {\n if (props.open === null) {\n clearTimeout(outTimer.value);\n inTimer.value = setTimeout(() => {\n hovercardOpen.value = true;\n }, props.enterDelay);\n }\n}\n\nfunction setOutTimer () {\n if (props.open === null) {\n clearTimeout(inTimer.value);\n outTimer.value = setTimeout(() => {\n hovercardOpen.value = false;\n }, props.leaveDelay);\n }\n}\n\nfunction onMouseEnter () {\n mouseOverHovercard.value = true;\n setInTimer();\n}\n\nfunction onMouseLeave () {\n mouseOverHovercard.value = false;\n if (contentFocused.value) {\n return;\n }\n setOutTimer();\n}\n\nfunction onContentFocusIn () {\n contentFocused.value = true;\n setInTimer();\n}\n\nfunction onContentFocusOut () {\n contentFocused.value = false;\n\n // If mouse is not over the hovercard, close it\n if (!mouseOverHovercard.value) {\n setOutTimer();\n }\n}\n</script>\n"],"names":["props","__props","hovercardOpen","ref","contentFocused","mouseOverHovercard","inTimer","outTimer","anchorEl","observer","popover","onMounted","nextTick","_c","_b","_a","onBeforeUnmount","watch","open","setInTimer","setOutTimer","onMouseEnter","onMouseLeave","onContentFocusIn","onContentFocusOut","_createBlock","_unref","DtPopover","_cache","e","$emit","_withCtx","attrs","_renderSlot","_ctx","_createElementVNode"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"hovercard.cjs","sources":["../../../components/hovercard/hovercard.vue"],"sourcesContent":["<!-- eslint-disable vue/multi-word-component-names -->\n<template>\n <dt-popover\n :id=\"id\"\n ref=\"popover\"\n :open=\"hovercardOpen\"\n :placement=\"placement\"\n :content-class=\"contentClass\"\n :dialog-class=\"dialogClass\"\n :fallback-placements=\"fallbackPlacements\"\n :padding=\"padding\"\n :transition=\"transition ? 'fade' : null\"\n :offset=\"offset\"\n :modal=\"false\"\n initial-focus-element=\"none\"\n :header-class=\"headerClass\"\n :footer-class=\"footerClass\"\n :append-to=\"appendTo\"\n :external-anchor-element=\"externalAnchorElement\"\n data-qa=\"dt-hovercard\"\n :enter-delay=\"enterDelay\"\n :leave-delay=\"leaveDelay\"\n @opened=\"(e) => ($emit('opened', e))\"\n @mouseenter-popover=\"onMouseEnter\"\n @mouseleave-popover=\"onMouseLeave\"\n @mouseenter-popover-anchor=\"onMouseEnter\"\n @mouseleave-popover-anchor=\"onMouseLeave\"\n >\n <template #anchor=\"{ attrs }\">\n <!-- @slot Anchor element that activates the hovercard. Usually a button. -->\n <slot\n name=\"anchor\"\n v-bind=\"attrs\"\n />\n </template>\n <template #content>\n <div\n @focusin=\"onContentFocusIn\"\n @focusout=\"onContentFocusOut\"\n >\n <!-- @slot Slot for the content that is displayed in the hovercard. -->\n <slot name=\"content\" />\n </div>\n </template>\n <template #headerContent>\n <!-- @slot Slot for hovercard header content -->\n <slot name=\"headerContent\" />\n </template>\n\n <template #footerContent>\n <!-- @slot Slot for the footer content. -->\n <slot name=\"footerContent\" />\n </template>\n </dt-popover>\n</template>\n\n<script setup>\nimport { ref, watch, nextTick, onMounted, onBeforeUnmount } from 'vue';\nimport { POPOVER_APPEND_TO_VALUES, POPOVER_PADDING_CLASSES, DtPopover } from '@/components/popover/index.js';\nimport { TOOLTIP_DIRECTIONS, TOOLTIP_DELAY_MS } from '@/components/tooltip/index.js';\nimport { getUniqueString } from '@/common/utils';\n\nconst props = defineProps({\n /**\n * Fade transition when the content display is toggled.\n * @type boolean\n * @values true, false\n */\n transition: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Controls whether the hovercard is shown. Leaving this null will have the hovercard trigger on hover by default.\n * If you set this value, the default trigger behavior will be disabled, and you can control it as you need.\n * Supports .sync modifier\n * @values null, true, false\n */\n open: {\n type: Boolean,\n default: null,\n },\n\n /**\n * If the popover does not fit in the direction described by \"placement\",\n * it will attempt to change its direction to the \"fallbackPlacements\".\n * @see https://popper.js.org/docs/v2/modifiers/flip/#fallbackplacements\"\n */\n fallbackPlacements: {\n type: Array,\n default: () => {\n return ['auto'];\n },\n },\n\n /**\n * The direction the popover displays relative to the anchor.\n * @see https://atomiks.github.io/tippyjs/v6/all-props/#placement\"\n * @values top, top-start, top-end,\n * right, right-start, right-end,\n * left, left-start, left-end,\n * bottom, bottom-start, bottom-end,\n * auto, auto-start, auto-end\n */\n placement: {\n type: String,\n default: 'top-start',\n validator (placement) {\n return TOOLTIP_DIRECTIONS.includes(placement);\n },\n },\n\n /**\n * Padding size class for the popover content.\n * @values none, small, medium, large\n */\n padding: {\n type: String,\n default: 'large',\n validator: (padding) => {\n return Object.keys(POPOVER_PADDING_CLASSES).some((item) => item === padding);\n },\n },\n\n /**\n * Displaces the content box from its anchor element\n * by the specified number of pixels.\n * @see https://atomiks.github.io/tippyjs/v6/all-props/#offset\"\n */\n offset: {\n type: Array,\n default: () => [0, 16],\n },\n\n /**\n * The id of the tooltip\n */\n id: {\n type: String,\n default () { return getUniqueString(); },\n },\n\n /**\n * Additional class name for the header content wrapper element.\n */\n headerClass: {\n type: [String, Array, Object],\n default: '',\n },\n\n /**\n * Additional class name for the footer content wrapper element.\n */\n footerClass: {\n type: [String, Array, Object],\n default: '',\n },\n\n /**\n * Additional class name for the dialog element.\n */\n dialogClass: {\n type: [String, Array, Object],\n default: '',\n },\n\n /**\n * Additional class name for the content wrapper element.\n */\n contentClass: {\n type: [String, Array, Object],\n default: '',\n },\n\n /**\n * Sets the element to which the popover is going to append to.\n * 'body' will append to the nearest body (supports shadow DOM).\n * @values 'body', 'parent', HTMLElement,\n */\n appendTo: {\n type: [HTMLElement, String],\n default: 'body',\n validator: appendTo => {\n return POPOVER_APPEND_TO_VALUES.includes(appendTo) ||\n (appendTo instanceof HTMLElement);\n },\n },\n\n /**\n * The enter delay in milliseconds before the hovercard is shown.\n * @type number\n */\n enterDelay: {\n type: Number,\n default: TOOLTIP_DELAY_MS,\n },\n\n /**\n * The leave delay in milliseconds before the hovercard is hidden.\n * @type number\n */\n leaveDelay: {\n type: Number,\n default: TOOLTIP_DELAY_MS,\n },\n\n /**\n * External anchor element reference. Use this instead of the anchor slot when\n * the anchor may be inside a Shadow DOM, as querySelector cannot pierce shadow boundaries.\n */\n externalAnchorElement: {\n type: HTMLElement,\n default: null,\n },\n});\n\ndefineEmits([\n /**\n * Emitted when hovercard is shown or hidden\n *\n * @event opened\n * @type {Boolean | Array}\n */\n 'opened',\n]);\n\nconst hovercardOpen = ref(props.open);\nconst contentFocused = ref(false);\nconst mouseOverHovercard = ref(false);\nconst inTimer = ref(null);\nconst outTimer = ref(null);\nconst anchorEl = ref(null);\nconst observer = ref(null);\nconst popover = ref(null);\n\nonMounted(() => {\n nextTick(() => {\n anchorEl.value = popover.value?.$refs?.anchor?.firstElementChild;\n\n observer.value = new MutationObserver(() => {\n if (anchorEl.value && !anchorEl.value.isConnected) {\n hovercardOpen.value = false;\n }\n });\n\n observer.value.observe(document.body, {\n childList: true,\n subtree: true,\n });\n });\n});\n\nonBeforeUnmount(() => {\n if (observer.value) {\n observer.value.disconnect();\n }\n clearTimeout(inTimer);\n clearTimeout(outTimer);\n});\nwatch(() => props.open, (open) => {\n hovercardOpen.value = open;\n}, { immediate: true });\n\ndefineExpose({ show: onMouseEnter, hide: onMouseLeave });\n\nfunction setInTimer () {\n if (props.open === null) {\n clearTimeout(outTimer.value);\n inTimer.value = setTimeout(() => {\n hovercardOpen.value = true;\n }, props.enterDelay);\n }\n}\n\nfunction setOutTimer () {\n if (props.open === null) {\n clearTimeout(inTimer.value);\n outTimer.value = setTimeout(() => {\n hovercardOpen.value = false;\n }, props.leaveDelay);\n }\n}\n\nfunction onMouseEnter () {\n mouseOverHovercard.value = true;\n setInTimer();\n}\n\nfunction onMouseLeave () {\n mouseOverHovercard.value = false;\n if (contentFocused.value) {\n return;\n }\n setOutTimer();\n}\n\nfunction onContentFocusIn () {\n contentFocused.value = true;\n setInTimer();\n}\n\nfunction onContentFocusOut () {\n contentFocused.value = false;\n\n // If mouse is not over the hovercard, close it\n if (!mouseOverHovercard.value) {\n setOutTimer();\n }\n}\n</script>\n"],"names":["props","__props","hovercardOpen","ref","contentFocused","mouseOverHovercard","inTimer","outTimer","anchorEl","observer","popover","onMounted","nextTick","_c","_b","_a","onBeforeUnmount","watch","open","__expose","onMouseEnter","onMouseLeave","setInTimer","setOutTimer","onContentFocusIn","onContentFocusOut","_createBlock","_unref","DtPopover","_cache","e","$emit","_withCtx","attrs","_renderSlot","_ctx","_createElementVNode"],"mappings":"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"}
|