@dialpad/dialtone 9.30.1 → 9.32.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/README.md +6 -0
- package/dist/css/dialtone.css +11 -2
- package/dist/css/dialtone.min.css +1 -1
- package/dist/tokens/css/variables-dark.css +1 -1
- package/dist/tokens/css/variables-expressive-dark.css +1 -1
- package/dist/tokens/css/variables-expressive-light.css +1 -1
- package/dist/tokens/css/variables-expressive-sm-dark.css +1 -1
- package/dist/tokens/css/variables-expressive-sm-light.css +1 -1
- package/dist/tokens/css/variables-light.css +1 -1
- package/dist/tokens/css/variables-tmo-dark.css +1 -1
- package/dist/tokens/css/variables-tmo-light.css +1 -1
- package/dist/tokens/less/variables-dark.less +1 -1
- package/dist/tokens/less/variables-expressive-dark.less +1 -1
- package/dist/tokens/less/variables-expressive-light.less +1 -1
- package/dist/tokens/less/variables-expressive-sm-dark.less +1 -1
- package/dist/tokens/less/variables-expressive-sm-light.less +1 -1
- package/dist/tokens/less/variables-light.less +1 -1
- package/dist/tokens/less/variables-tmo-dark.less +1 -1
- package/dist/tokens/less/variables-tmo-light.less +1 -1
- package/dist/vue2/component-documentation.json +1 -1
- package/dist/vue2/dialtone-vue.cjs +2 -0
- package/dist/vue2/dialtone-vue.cjs.map +1 -1
- package/dist/vue2/dialtone-vue.js +2 -0
- package/dist/vue2/dialtone-vue.js.map +1 -1
- package/dist/vue2/lib/editor.cjs +2 -0
- package/dist/vue2/lib/editor.cjs.map +1 -1
- package/dist/vue2/lib/editor.js +2 -0
- package/dist/vue2/lib/editor.js.map +1 -1
- package/dist/vue2/lib/message-input.cjs +21 -4
- package/dist/vue2/lib/message-input.cjs.map +1 -1
- package/dist/vue2/lib/message-input.js +21 -4
- package/dist/vue2/lib/message-input.js.map +1 -1
- package/dist/vue2/lib/notice.cjs +10 -1
- package/dist/vue2/lib/notice.cjs.map +1 -1
- package/dist/vue2/lib/notice.js +10 -1
- package/dist/vue2/lib/notice.js.map +1 -1
- package/dist/vue2/lib/popover.cjs +2 -1
- package/dist/vue2/lib/popover.cjs.map +1 -1
- package/dist/vue2/lib/popover.js +2 -1
- package/dist/vue2/lib/popover.js.map +1 -1
- package/dist/vue2/lib/rich-text-editor.cjs +220 -40
- package/dist/vue2/lib/rich-text-editor.cjs.map +1 -1
- package/dist/vue2/lib/rich-text-editor.js +220 -40
- package/dist/vue2/lib/rich-text-editor.js.map +1 -1
- package/dist/vue2/types/components/notice/notice.vue.d.ts +19 -0
- package/dist/vue2/types/components/notice/notice.vue.d.ts.map +1 -1
- package/dist/vue2/types/components/rich_text_editor/channel_suggestion.d.ts +15 -0
- package/dist/vue2/types/components/rich_text_editor/channel_suggestion.d.ts.map +1 -0
- package/dist/vue2/types/components/rich_text_editor/extensions/channels/ChannelComponent.vue.d.ts +47 -0
- package/dist/vue2/types/components/rich_text_editor/extensions/channels/ChannelComponent.vue.d.ts.map +1 -0
- package/dist/vue2/types/components/rich_text_editor/extensions/channels/ChannelSuggestion.vue.d.ts +15 -0
- package/dist/vue2/types/components/rich_text_editor/extensions/channels/ChannelSuggestion.vue.d.ts.map +1 -0
- package/dist/vue2/types/components/rich_text_editor/extensions/channels/channel.d.ts +2 -0
- package/dist/vue2/types/components/rich_text_editor/extensions/channels/channel.d.ts.map +1 -0
- package/dist/vue2/types/components/rich_text_editor/extensions/channels/suggestion.d.ts +11 -0
- package/dist/vue2/types/components/rich_text_editor/extensions/channels/suggestion.d.ts.map +1 -0
- package/dist/vue2/types/components/rich_text_editor/rich_text_editor.vue.d.ts +31 -0
- package/dist/vue2/types/components/rich_text_editor/rich_text_editor.vue.d.ts.map +1 -1
- package/dist/vue2/types/recipes/conversation_view/message_input/message_input.vue.d.ts +31 -0
- package/dist/vue2/types/recipes/conversation_view/message_input/message_input.vue.d.ts.map +1 -1
- package/dist/vue3/component-documentation.json +1 -1
- package/dist/vue3/dialtone-vue.cjs +2 -0
- package/dist/vue3/dialtone-vue.cjs.map +1 -1
- package/dist/vue3/dialtone-vue.js +2 -0
- package/dist/vue3/dialtone-vue.js.map +1 -1
- package/dist/vue3/lib/editor.cjs +2 -0
- package/dist/vue3/lib/editor.cjs.map +1 -1
- package/dist/vue3/lib/editor.js +2 -0
- package/dist/vue3/lib/editor.js.map +1 -1
- package/dist/vue3/lib/message-input.cjs +23 -3
- package/dist/vue3/lib/message-input.cjs.map +1 -1
- package/dist/vue3/lib/message-input.js +23 -3
- package/dist/vue3/lib/message-input.js.map +1 -1
- package/dist/vue3/lib/notice.cjs +10 -1
- package/dist/vue3/lib/notice.cjs.map +1 -1
- package/dist/vue3/lib/notice.js +10 -1
- package/dist/vue3/lib/notice.js.map +1 -1
- package/dist/vue3/lib/popover.cjs +2 -1
- package/dist/vue3/lib/popover.cjs.map +1 -1
- package/dist/vue3/lib/popover.js +2 -1
- package/dist/vue3/lib/popover.js.map +1 -1
- package/dist/vue3/lib/rich-text-editor.cjs +202 -17
- package/dist/vue3/lib/rich-text-editor.cjs.map +1 -1
- package/dist/vue3/lib/rich-text-editor.js +202 -17
- package/dist/vue3/lib/rich-text-editor.js.map +1 -1
- package/dist/vue3/types/components/notice/notice.vue.d.ts +19 -0
- package/dist/vue3/types/components/notice/notice.vue.d.ts.map +1 -1
- package/dist/vue3/types/components/rich_text_editor/channel_suggestion.d.ts +15 -0
- package/dist/vue3/types/components/rich_text_editor/channel_suggestion.d.ts.map +1 -0
- package/dist/vue3/types/components/rich_text_editor/extensions/channels/ChannelComponent.vue.d.ts +71 -0
- package/dist/vue3/types/components/rich_text_editor/extensions/channels/ChannelComponent.vue.d.ts.map +1 -0
- package/dist/vue3/types/components/rich_text_editor/extensions/channels/ChannelSuggestion.vue.d.ts +15 -0
- package/dist/vue3/types/components/rich_text_editor/extensions/channels/ChannelSuggestion.vue.d.ts.map +1 -0
- package/dist/vue3/types/components/rich_text_editor/extensions/channels/channel.d.ts +2 -0
- package/dist/vue3/types/components/rich_text_editor/extensions/channels/channel.d.ts.map +1 -0
- package/dist/vue3/types/components/rich_text_editor/extensions/channels/suggestion.d.ts +11 -0
- package/dist/vue3/types/components/rich_text_editor/extensions/channels/suggestion.d.ts.map +1 -0
- package/dist/vue3/types/components/rich_text_editor/rich_text_editor.vue.d.ts +31 -0
- package/dist/vue3/types/components/rich_text_editor/rich_text_editor.vue.d.ts.map +1 -1
- package/dist/vue3/types/recipes/conversation_view/message_input/message_input.vue.d.ts +31 -0
- package/dist/vue3/types/recipes/conversation_view/message_input/message_input.vue.d.ts.map +1 -1
- package/package.json +55 -53
|
@@ -32,6 +32,8 @@ const common_utils = require("../common/utils.cjs");
|
|
|
32
32
|
const Mention = require("@tiptap/extension-mention");
|
|
33
33
|
const lib_link = require("./link.cjs");
|
|
34
34
|
const lib_avatar = require("./avatar.cjs");
|
|
35
|
+
const DtIconHash = require("@dialpad/dialtone-icons/vue3/hash");
|
|
36
|
+
const DtIconLock = require("@dialpad/dialtone-icons/vue3/lock");
|
|
35
37
|
require("./skeleton.cjs");
|
|
36
38
|
require("../chunks/icon_constants-QYpmdE0R.js");
|
|
37
39
|
require("@dialpad/dialtone-icons/icons.json");
|
|
@@ -44,7 +46,7 @@ require("../chunks/stack_constants-SMzMWnAQ.js");
|
|
|
44
46
|
require("../common/constants.cjs");
|
|
45
47
|
require("../chunks/link_constants-Huj7D_hm.js");
|
|
46
48
|
require("./presence.cjs");
|
|
47
|
-
const _sfc_main$
|
|
49
|
+
const _sfc_main$7 = {
|
|
48
50
|
name: "EmojiComponent",
|
|
49
51
|
components: {
|
|
50
52
|
NodeViewWrapper: vue3.NodeViewWrapper,
|
|
@@ -52,7 +54,7 @@ const _sfc_main$5 = {
|
|
|
52
54
|
},
|
|
53
55
|
props: vue3.nodeViewProps
|
|
54
56
|
};
|
|
55
|
-
function _sfc_render$
|
|
57
|
+
function _sfc_render$7(_ctx, _cache, $props, $setup, $data, $options) {
|
|
56
58
|
const _component_dt_emoji = vue.resolveComponent("dt-emoji");
|
|
57
59
|
const _component_node_view_wrapper = vue.resolveComponent("node-view-wrapper");
|
|
58
60
|
return vue.openBlock(), vue.createBlock(_component_node_view_wrapper, { class: "d-d-inline-block d-va-bottom d-lh0" }, {
|
|
@@ -65,8 +67,8 @@ function _sfc_render$5(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
65
67
|
_: 1
|
|
66
68
|
});
|
|
67
69
|
}
|
|
68
|
-
const EmojiComponent = /* @__PURE__ */ _pluginVue_exportHelper._export_sfc(_sfc_main$
|
|
69
|
-
const _sfc_main$
|
|
70
|
+
const EmojiComponent = /* @__PURE__ */ _pluginVue_exportHelper._export_sfc(_sfc_main$7, [["render", _sfc_render$7]]);
|
|
71
|
+
const _sfc_main$6 = {
|
|
70
72
|
name: "SuggestionList",
|
|
71
73
|
components: {
|
|
72
74
|
DtListItem: lib_listItem.DtListItem
|
|
@@ -146,6 +148,9 @@ const _sfc_main$4 = {
|
|
|
146
148
|
case "mention":
|
|
147
149
|
this.command({ name: item.name, id: item.id, avatarSrc: item.avatarSrc });
|
|
148
150
|
break;
|
|
151
|
+
case "channel":
|
|
152
|
+
this.command({ name: item.name, id: item.id });
|
|
153
|
+
break;
|
|
149
154
|
}
|
|
150
155
|
}
|
|
151
156
|
}
|
|
@@ -155,7 +160,7 @@ const _hoisted_2 = {
|
|
|
155
160
|
ref: "suggestionList",
|
|
156
161
|
class: "dt-suggestion-list"
|
|
157
162
|
};
|
|
158
|
-
function _sfc_render$
|
|
163
|
+
function _sfc_render$6(_ctx, _cache, $props, $setup, $data, $options) {
|
|
159
164
|
const _component_dt_list_item = vue.resolveComponent("dt-list-item");
|
|
160
165
|
return vue.openBlock(), vue.createElementBlock("div", _hoisted_1, [
|
|
161
166
|
vue.withDirectives(vue.createElementVNode("ul", _hoisted_2, [
|
|
@@ -181,8 +186,8 @@ function _sfc_render$4(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
181
186
|
])
|
|
182
187
|
]);
|
|
183
188
|
}
|
|
184
|
-
const SuggestionList = /* @__PURE__ */ _pluginVue_exportHelper._export_sfc(_sfc_main$
|
|
185
|
-
const _sfc_main$
|
|
189
|
+
const SuggestionList = /* @__PURE__ */ _pluginVue_exportHelper._export_sfc(_sfc_main$6, [["render", _sfc_render$6]]);
|
|
190
|
+
const _sfc_main$5 = {
|
|
186
191
|
name: "EmojiSuggestion",
|
|
187
192
|
components: {
|
|
188
193
|
DtEmoji: lib_emoji.DtEmoji,
|
|
@@ -195,7 +200,7 @@ const _sfc_main$3 = {
|
|
|
195
200
|
}
|
|
196
201
|
}
|
|
197
202
|
};
|
|
198
|
-
function _sfc_render$
|
|
203
|
+
function _sfc_render$5(_ctx, _cache, $props, $setup, $data, $options) {
|
|
199
204
|
const _component_dt_emoji = vue.resolveComponent("dt-emoji");
|
|
200
205
|
const _component_dt_stack = vue.resolveComponent("dt-stack");
|
|
201
206
|
return vue.openBlock(), vue.createBlock(_component_dt_stack, {
|
|
@@ -212,7 +217,7 @@ function _sfc_render$3(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
212
217
|
_: 1
|
|
213
218
|
});
|
|
214
219
|
}
|
|
215
|
-
const EmojiSuggestion = /* @__PURE__ */ _pluginVue_exportHelper._export_sfc(_sfc_main$
|
|
220
|
+
const EmojiSuggestion = /* @__PURE__ */ _pluginVue_exportHelper._export_sfc(_sfc_main$5, [["render", _sfc_render$5]]);
|
|
216
221
|
const suggestionOptions = {
|
|
217
222
|
items: ({ query }) => {
|
|
218
223
|
if (query.length < 2) {
|
|
@@ -587,7 +592,7 @@ const Link = core.Mark.create({
|
|
|
587
592
|
];
|
|
588
593
|
}
|
|
589
594
|
});
|
|
590
|
-
const _sfc_main$
|
|
595
|
+
const _sfc_main$4 = {
|
|
591
596
|
name: "MentionComponent",
|
|
592
597
|
components: {
|
|
593
598
|
NodeViewWrapper: vue3.NodeViewWrapper,
|
|
@@ -600,7 +605,7 @@ const _sfc_main$2 = {
|
|
|
600
605
|
}
|
|
601
606
|
}
|
|
602
607
|
};
|
|
603
|
-
function _sfc_render$
|
|
608
|
+
function _sfc_render$4(_ctx, _cache, $props, $setup, $data, $options) {
|
|
604
609
|
const _component_dt_link = vue.resolveComponent("dt-link");
|
|
605
610
|
const _component_node_view_wrapper = vue.resolveComponent("node-view-wrapper");
|
|
606
611
|
return vue.openBlock(), vue.createBlock(_component_node_view_wrapper, { class: "d-d-inline-block" }, {
|
|
@@ -615,7 +620,7 @@ function _sfc_render$2(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
615
620
|
_: 1
|
|
616
621
|
});
|
|
617
622
|
}
|
|
618
|
-
const MentionComponent = /* @__PURE__ */ _pluginVue_exportHelper._export_sfc(_sfc_main$
|
|
623
|
+
const MentionComponent = /* @__PURE__ */ _pluginVue_exportHelper._export_sfc(_sfc_main$4, [["render", _sfc_render$4]]);
|
|
619
624
|
const MentionPlugin = Mention.extend({
|
|
620
625
|
addNodeView() {
|
|
621
626
|
return vue3.VueNodeViewRenderer(MentionComponent);
|
|
@@ -647,6 +652,72 @@ const MentionPlugin = Mention.extend({
|
|
|
647
652
|
return ["mention-component", core.mergeAttributes(this.options.HTMLAttributes, HTMLAttributes), 0];
|
|
648
653
|
}
|
|
649
654
|
});
|
|
655
|
+
const _sfc_main$3 = {
|
|
656
|
+
name: "ChannelComponent",
|
|
657
|
+
components: {
|
|
658
|
+
NodeViewWrapper: vue3.NodeViewWrapper,
|
|
659
|
+
DtLink: lib_link.DtLink
|
|
660
|
+
},
|
|
661
|
+
props: vue3.nodeViewProps,
|
|
662
|
+
computed: {
|
|
663
|
+
text() {
|
|
664
|
+
return "#" + this.$props.node.attrs.name;
|
|
665
|
+
}
|
|
666
|
+
}
|
|
667
|
+
};
|
|
668
|
+
function _sfc_render$3(_ctx, _cache, $props, $setup, $data, $options) {
|
|
669
|
+
const _component_dt_link = vue.resolveComponent("dt-link");
|
|
670
|
+
const _component_node_view_wrapper = vue.resolveComponent("node-view-wrapper");
|
|
671
|
+
return vue.openBlock(), vue.createBlock(_component_node_view_wrapper, { class: "d-d-inline-block" }, {
|
|
672
|
+
default: vue.withCtx(() => [
|
|
673
|
+
vue.createVNode(_component_dt_link, { kind: "mention" }, {
|
|
674
|
+
default: vue.withCtx(() => [
|
|
675
|
+
vue.createTextVNode(vue.toDisplayString($options.text), 1)
|
|
676
|
+
]),
|
|
677
|
+
_: 1
|
|
678
|
+
})
|
|
679
|
+
]),
|
|
680
|
+
_: 1
|
|
681
|
+
});
|
|
682
|
+
}
|
|
683
|
+
const ChannelComponent = /* @__PURE__ */ _pluginVue_exportHelper._export_sfc(_sfc_main$3, [["render", _sfc_render$3]]);
|
|
684
|
+
const ChannelPlugin = Mention.extend({
|
|
685
|
+
name: "channel",
|
|
686
|
+
addNodeView() {
|
|
687
|
+
return vue3.VueNodeViewRenderer(ChannelComponent);
|
|
688
|
+
},
|
|
689
|
+
parseHTML() {
|
|
690
|
+
return [
|
|
691
|
+
{
|
|
692
|
+
tag: "channel-component"
|
|
693
|
+
}
|
|
694
|
+
];
|
|
695
|
+
},
|
|
696
|
+
addAttributes() {
|
|
697
|
+
return {
|
|
698
|
+
name: {
|
|
699
|
+
default: ""
|
|
700
|
+
},
|
|
701
|
+
id: {
|
|
702
|
+
default: ""
|
|
703
|
+
},
|
|
704
|
+
locked: {
|
|
705
|
+
default: false
|
|
706
|
+
}
|
|
707
|
+
};
|
|
708
|
+
},
|
|
709
|
+
renderText({ node }) {
|
|
710
|
+
return `#${node.attrs.id}`;
|
|
711
|
+
},
|
|
712
|
+
renderHTML({ HTMLAttributes }) {
|
|
713
|
+
return ["channel-component", core.mergeAttributes(this.options.HTMLAttributes, HTMLAttributes), 0];
|
|
714
|
+
}
|
|
715
|
+
}).configure({
|
|
716
|
+
suggestion: {
|
|
717
|
+
char: "#",
|
|
718
|
+
pluginKey: new state.PluginKey("channelSuggestion")
|
|
719
|
+
}
|
|
720
|
+
});
|
|
650
721
|
const RICH_TEXT_EDITOR_OUTPUT_FORMATS = [
|
|
651
722
|
"text",
|
|
652
723
|
"json",
|
|
@@ -665,7 +736,7 @@ const RICH_TEXT_EDITOR_SUPPORTED_LINK_PROTOCOLS = [
|
|
|
665
736
|
"sftp",
|
|
666
737
|
"mailto"
|
|
667
738
|
];
|
|
668
|
-
const _sfc_main$
|
|
739
|
+
const _sfc_main$2 = {
|
|
669
740
|
name: "MentionSuggestion",
|
|
670
741
|
components: {
|
|
671
742
|
DtAvatar: lib_avatar.DtAvatar,
|
|
@@ -686,7 +757,7 @@ const _sfc_main$1 = {
|
|
|
686
757
|
}
|
|
687
758
|
}
|
|
688
759
|
};
|
|
689
|
-
function _sfc_render$
|
|
760
|
+
function _sfc_render$2(_ctx, _cache, $props, $setup, $data, $options) {
|
|
690
761
|
const _component_dt_avatar = vue.resolveComponent("dt-avatar");
|
|
691
762
|
const _component_dt_stack = vue.resolveComponent("dt-stack");
|
|
692
763
|
return vue.openBlock(), vue.createBlock(_component_dt_stack, {
|
|
@@ -705,8 +776,8 @@ function _sfc_render$1(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
705
776
|
_: 1
|
|
706
777
|
});
|
|
707
778
|
}
|
|
708
|
-
const MentionSuggestion = /* @__PURE__ */ _pluginVue_exportHelper._export_sfc(_sfc_main$
|
|
709
|
-
const
|
|
779
|
+
const MentionSuggestion = /* @__PURE__ */ _pluginVue_exportHelper._export_sfc(_sfc_main$2, [["render", _sfc_render$2]]);
|
|
780
|
+
const mentionSuggestion = {
|
|
710
781
|
// This function comes from the user and passed to the editor directly.
|
|
711
782
|
// This will also activate the mention plugin on the editor
|
|
712
783
|
// items: ({ query }) => { return [] },
|
|
@@ -760,6 +831,101 @@ const suggestion = {
|
|
|
760
831
|
};
|
|
761
832
|
}
|
|
762
833
|
};
|
|
834
|
+
const _sfc_main$1 = {
|
|
835
|
+
name: "ChannelSuggestion",
|
|
836
|
+
components: {
|
|
837
|
+
DtStack: lib_stack.DtStack,
|
|
838
|
+
DtIconHash,
|
|
839
|
+
DtIconLock
|
|
840
|
+
},
|
|
841
|
+
props: {
|
|
842
|
+
item: {
|
|
843
|
+
type: Object,
|
|
844
|
+
required: true
|
|
845
|
+
}
|
|
846
|
+
},
|
|
847
|
+
computed: {
|
|
848
|
+
name() {
|
|
849
|
+
return this.item.name;
|
|
850
|
+
}
|
|
851
|
+
}
|
|
852
|
+
};
|
|
853
|
+
function _sfc_render$1(_ctx, _cache, $props, $setup, $data, $options) {
|
|
854
|
+
const _component_dt_icon_hash = vue.resolveComponent("dt-icon-hash");
|
|
855
|
+
const _component_dt_icon_lock = vue.resolveComponent("dt-icon-lock");
|
|
856
|
+
const _component_dt_stack = vue.resolveComponent("dt-stack");
|
|
857
|
+
return vue.openBlock(), vue.createBlock(_component_dt_stack, {
|
|
858
|
+
direction: "row",
|
|
859
|
+
gap: "400"
|
|
860
|
+
}, {
|
|
861
|
+
default: vue.withCtx(() => [
|
|
862
|
+
!$props.item.locked ? (vue.openBlock(), vue.createBlock(_component_dt_icon_hash, {
|
|
863
|
+
key: 0,
|
|
864
|
+
size: "300"
|
|
865
|
+
})) : (vue.openBlock(), vue.createBlock(_component_dt_icon_lock, {
|
|
866
|
+
key: 1,
|
|
867
|
+
size: "300"
|
|
868
|
+
})),
|
|
869
|
+
vue.createElementVNode("span", null, vue.toDisplayString($options.name), 1)
|
|
870
|
+
]),
|
|
871
|
+
_: 1
|
|
872
|
+
});
|
|
873
|
+
}
|
|
874
|
+
const ChannelSuggestion = /* @__PURE__ */ _pluginVue_exportHelper._export_sfc(_sfc_main$1, [["render", _sfc_render$1]]);
|
|
875
|
+
const channelSuggestion = {
|
|
876
|
+
// This function comes from the user and passed to the editor directly.
|
|
877
|
+
// This will also activate the mention plugin on the editor
|
|
878
|
+
// items: ({ query }) => { return [] },
|
|
879
|
+
allowSpaces: true,
|
|
880
|
+
render: () => {
|
|
881
|
+
let component;
|
|
882
|
+
let popup;
|
|
883
|
+
return {
|
|
884
|
+
onStart: (props) => {
|
|
885
|
+
component = new vue3.VueRenderer(SuggestionList, {
|
|
886
|
+
props: {
|
|
887
|
+
itemComponent: vue.markRaw(ChannelSuggestion),
|
|
888
|
+
itemType: "channel",
|
|
889
|
+
...props
|
|
890
|
+
},
|
|
891
|
+
editor: props.editor
|
|
892
|
+
});
|
|
893
|
+
if (!props.clientRect) {
|
|
894
|
+
return;
|
|
895
|
+
}
|
|
896
|
+
popup = tippy("body", {
|
|
897
|
+
getReferenceClientRect: props.clientRect,
|
|
898
|
+
appendTo: () => document.body,
|
|
899
|
+
content: component.element,
|
|
900
|
+
showOnCreate: true,
|
|
901
|
+
interactive: true,
|
|
902
|
+
trigger: "manual",
|
|
903
|
+
placement: "top-start"
|
|
904
|
+
});
|
|
905
|
+
},
|
|
906
|
+
onUpdate(props) {
|
|
907
|
+
component.updateProps(props);
|
|
908
|
+
if (!props.clientRect) {
|
|
909
|
+
return;
|
|
910
|
+
}
|
|
911
|
+
popup[0].setProps({
|
|
912
|
+
getReferenceClientRect: props.clientRect
|
|
913
|
+
});
|
|
914
|
+
},
|
|
915
|
+
onKeyDown(props) {
|
|
916
|
+
if (props.event.key === "Escape") {
|
|
917
|
+
popup[0].hide();
|
|
918
|
+
return true;
|
|
919
|
+
}
|
|
920
|
+
return component == null ? void 0 : component.ref.onKeyDown(props);
|
|
921
|
+
},
|
|
922
|
+
onExit() {
|
|
923
|
+
popup[0].destroy();
|
|
924
|
+
component.destroy();
|
|
925
|
+
}
|
|
926
|
+
};
|
|
927
|
+
}
|
|
928
|
+
};
|
|
763
929
|
const _sfc_main = {
|
|
764
930
|
name: "DtRichTextEditor",
|
|
765
931
|
components: {
|
|
@@ -867,6 +1033,21 @@ const _sfc_main = {
|
|
|
867
1033
|
type: Object,
|
|
868
1034
|
default: null
|
|
869
1035
|
},
|
|
1036
|
+
/**
|
|
1037
|
+
* suggestion object containing the items query function.
|
|
1038
|
+
* The valid keys passed into this object can be found here: https://tiptap.dev/api/utilities/suggestion
|
|
1039
|
+
*
|
|
1040
|
+
* The only required key is the items function which is used to query the channels for suggestion.
|
|
1041
|
+
* items({ query }) => { return [ChannelObject]; }
|
|
1042
|
+
* ChannelObject format:
|
|
1043
|
+
* { name: string, id: string, locked: boolean }
|
|
1044
|
+
*
|
|
1045
|
+
* When null, it does not add the plugin. Setting locked to true will display a lock rather than hash.
|
|
1046
|
+
*/
|
|
1047
|
+
channelSuggestion: {
|
|
1048
|
+
type: Object,
|
|
1049
|
+
default: null
|
|
1050
|
+
},
|
|
870
1051
|
/**
|
|
871
1052
|
* Whether the input allows for block quote.
|
|
872
1053
|
*/
|
|
@@ -996,9 +1177,13 @@ const _sfc_main = {
|
|
|
996
1177
|
protocols: RICH_TEXT_EDITOR_SUPPORTED_LINK_PROTOCOLS
|
|
997
1178
|
}));
|
|
998
1179
|
if (this.mentionSuggestion) {
|
|
999
|
-
const suggestionObject = { ...this.mentionSuggestion, ...
|
|
1180
|
+
const suggestionObject = { ...this.mentionSuggestion, ...mentionSuggestion };
|
|
1000
1181
|
extensions.push(MentionPlugin.configure({ suggestion: suggestionObject }));
|
|
1001
1182
|
}
|
|
1183
|
+
if (this.channelSuggestion) {
|
|
1184
|
+
const suggestionObject = { ...this.channelSuggestion, ...channelSuggestion };
|
|
1185
|
+
extensions.push(ChannelPlugin.configure({ suggestion: suggestionObject }));
|
|
1186
|
+
}
|
|
1002
1187
|
extensions.push(Emoji);
|
|
1003
1188
|
extensions.push(TextAlign.configure({
|
|
1004
1189
|
types: ["paragraph"],
|