@maketribe/ms-app 3.2.40 → 3.2.42
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/cjs/components/basic/doc-editor/plugins/AutoLinkPlugin/LinkEditDialog.js +2 -2
- package/dist/cjs/components/basic/doc-editor/plugins/AutoLinkPlugin/LinkEditDialog.js.map +1 -1
- package/dist/cjs/components/basic/doc-editor/plugins/AutoLinkPlugin/index.vue.js +1 -27
- package/dist/cjs/components/basic/doc-editor/plugins/AutoLinkPlugin/index.vue.js.map +1 -1
- package/dist/cjs/components/basic/doc-editor/plugins/ToolbarPlugin/ContentStyleTool.vue.js +0 -1
- package/dist/cjs/components/basic/doc-editor/plugins/ToolbarPlugin/ContentStyleTool.vue.js.map +1 -1
- package/dist/cjs/components/basic/doc-editor/plugins/ToolbarPlugin/FontStyleTool.vue.js +4 -6
- package/dist/cjs/components/basic/doc-editor/plugins/ToolbarPlugin/FontStyleTool.vue.js.map +1 -1
- package/dist/cjs/components/basic/doc-editor/plugins/ToolbarPlugin/index.vue.js +1 -27
- package/dist/cjs/components/basic/doc-editor/plugins/ToolbarPlugin/index.vue.js.map +1 -1
- package/dist/cjs/components/data-model/data-table/components/column-sort/column-sort.js +23 -5
- package/dist/cjs/components/data-model/data-table/components/column-sort/column-sort.js.map +1 -1
- package/dist/cjs/components/data-model/data-table/views/table/table.js +4 -16
- package/dist/cjs/components/data-model/data-table/views/table/table.js.map +1 -1
- package/dist/cjs/message-impl/DialogerImpl.js +1 -1
- package/dist/cjs/message-impl/DialogerImpl.js.map +1 -1
- package/dist/cjs/modules/ms/components/material-list/material-item.vue.js +34 -1
- package/dist/cjs/modules/ms/components/material-list/material-item.vue.js.map +1 -1
- package/dist/cjs/modules/ms/components/rich-text-editor/rich-text-editor.js.map +1 -1
- package/dist/cjs/modules/ms/dataviews/ms-config/MsConfigTable.js +9 -0
- package/dist/cjs/modules/ms/dataviews/ms-config/MsConfigTable.js.map +1 -1
- package/dist/esm/components/basic/doc-editor/plugins/AutoLinkPlugin/LinkEditDialog.js +2 -2
- package/dist/esm/components/basic/doc-editor/plugins/AutoLinkPlugin/LinkEditDialog.js.map +1 -1
- package/dist/esm/components/basic/doc-editor/plugins/AutoLinkPlugin/index.vue.js +3 -29
- package/dist/esm/components/basic/doc-editor/plugins/AutoLinkPlugin/index.vue.js.map +1 -1
- package/dist/esm/components/basic/doc-editor/plugins/ToolbarPlugin/ContentStyleTool.vue.js +0 -1
- package/dist/esm/components/basic/doc-editor/plugins/ToolbarPlugin/ContentStyleTool.vue.js.map +1 -1
- package/dist/esm/components/basic/doc-editor/plugins/ToolbarPlugin/FontStyleTool.vue.js +5 -7
- package/dist/esm/components/basic/doc-editor/plugins/ToolbarPlugin/FontStyleTool.vue.js.map +1 -1
- package/dist/esm/components/basic/doc-editor/plugins/ToolbarPlugin/index.vue.js +2 -28
- package/dist/esm/components/basic/doc-editor/plugins/ToolbarPlugin/index.vue.js.map +1 -1
- package/dist/esm/components/data-model/data-table/components/column-sort/column-sort.js +24 -6
- package/dist/esm/components/data-model/data-table/components/column-sort/column-sort.js.map +1 -1
- package/dist/esm/components/data-model/data-table/views/table/table.js +4 -16
- package/dist/esm/components/data-model/data-table/views/table/table.js.map +1 -1
- package/dist/esm/message-impl/DialogerImpl.js +1 -1
- package/dist/esm/message-impl/DialogerImpl.js.map +1 -1
- package/dist/esm/modules/ms/components/material-list/material-item.vue.js +34 -1
- package/dist/esm/modules/ms/components/material-list/material-item.vue.js.map +1 -1
- package/dist/esm/modules/ms/components/rich-text-editor/rich-text-editor.js.map +1 -1
- package/dist/esm/modules/ms/dataviews/ms-config/MsConfigTable.js +9 -0
- package/dist/esm/modules/ms/dataviews/ms-config/MsConfigTable.js.map +1 -1
- package/dist/types/components/basic/doc-editor/plugins/AutoLinkPlugin/LinkEditDialog.d.ts +1 -1
- package/package.json +3 -3
- package/dist/cjs/components/basic/doc-editor/core/plugins/LexicalAutoLinkPlugin/index.vue.js +0 -4
- package/dist/cjs/components/basic/doc-editor/core/plugins/LexicalAutoLinkPlugin/index.vue.js.map +0 -1
- package/dist/cjs/components/basic/doc-editor/core/plugins/LexicalAutoLinkPlugin/index.vue2.js +0 -37
- package/dist/cjs/components/basic/doc-editor/core/plugins/LexicalAutoLinkPlugin/index.vue2.js.map +0 -1
- package/dist/cjs/components/basic/doc-editor/core/plugins/LexicalAutoLinkPlugin/shared.js +0 -176
- package/dist/cjs/components/basic/doc-editor/core/plugins/LexicalAutoLinkPlugin/shared.js.map +0 -1
- package/dist/esm/components/basic/doc-editor/core/plugins/LexicalAutoLinkPlugin/index.vue.js +0 -5
- package/dist/esm/components/basic/doc-editor/core/plugins/LexicalAutoLinkPlugin/index.vue.js.map +0 -1
- package/dist/esm/components/basic/doc-editor/core/plugins/LexicalAutoLinkPlugin/index.vue2.js +0 -38
- package/dist/esm/components/basic/doc-editor/core/plugins/LexicalAutoLinkPlugin/index.vue2.js.map +0 -1
- package/dist/esm/components/basic/doc-editor/core/plugins/LexicalAutoLinkPlugin/shared.js +0 -176
- package/dist/esm/components/basic/doc-editor/core/plugins/LexicalAutoLinkPlugin/shared.js.map +0 -1
|
@@ -3,7 +3,7 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
|
3
3
|
const vue = require("vue");
|
|
4
4
|
const dm = require("@maketribe/dm");
|
|
5
5
|
const elementPlus = require("element-plus");
|
|
6
|
-
const
|
|
6
|
+
const showLinkEditPanel = async (href) => {
|
|
7
7
|
return new Promise((resolve, reject) => {
|
|
8
8
|
const hrefValue = vue.ref(href);
|
|
9
9
|
const handleCancelClick = () => {
|
|
@@ -47,5 +47,5 @@ const ShowLinkEditPanel = async (href) => {
|
|
|
47
47
|
});
|
|
48
48
|
});
|
|
49
49
|
};
|
|
50
|
-
exports.
|
|
50
|
+
exports.showLinkEditPanel = showLinkEditPanel;
|
|
51
51
|
//# sourceMappingURL=LinkEditDialog.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LinkEditDialog.js","sources":["../../../../../../../src/components/basic/doc-editor/plugins/AutoLinkPlugin/LinkEditDialog.tsx"],"sourcesContent":["\r\nimport { Fragment,ref
|
|
1
|
+
{"version":3,"file":"LinkEditDialog.js","sources":["../../../../../../../src/components/basic/doc-editor/plugins/AutoLinkPlugin/LinkEditDialog.tsx"],"sourcesContent":["\r\nimport { Fragment,ref } from 'vue'\r\nimport { Dialoger } from '@maketribe/dm'\r\nimport { ElButton ,ElInput } from \"element-plus\";\r\n/**\r\n * \r\n * @param href \r\n * @returns \r\n */\r\nexport const showLinkEditPanel = async (href:any) => {\r\n return new Promise((resolve,reject) => {\r\n\r\n const hrefValue = ref(href)\r\n\r\n // 取消编辑\r\n const handleCancelClick = () => {\r\n dialogInstance.destroy();\r\n };\r\n\r\n // 确认编辑\r\n const handleConfirmClick = () => {\r\n dialogInstance.destroy();\r\n resolve(hrefValue.value);\r\n };\r\n\r\n const dialogInstance = Dialoger.customRender({\r\n title: \"设置连接\",\r\n class: \"mk-html-editor-dialog\",\r\n width: \"500px\",\r\n onClose: () => {\r\n dialogInstance.destroy();\r\n },\r\n body: () => {\r\n return <ElInput v-model={hrefValue.value} clearable={true} placeholder='http://www.xxx.com' v-slots={\r\n {\r\n prepend:()=>{\r\n return \"地址:\";\r\n }\r\n }\r\n }></ElInput>\r\n },\r\n footer: () => {\r\n return <Fragment>\r\n <ElButton onClick={handleCancelClick}>取消</ElButton>\r\n <ElButton type=\"primary\" onClick={handleConfirmClick}>\r\n 确定\r\n </ElButton>\r\n </Fragment>\r\n },\r\n });\r\n });\r\n}\r\n"],"names":["showLinkEditPanel","href","Promise","resolve","reject","hrefValue","ref","handleCancelClick","dialogInstance","destroy","handleConfirmClick","value","Dialoger","customRender","title","class","width","onClose","body","_createVNode","ElInput","$event","prepend","footer","_Fragment","ElButton","default","_createTextVNode"],"mappings":";;;;;AASaA,MAAAA,oBAAoB,OAAQC,SAAa;AACpD,SAAO,IAAIC,QAAQ,CAACC,SAAQC,WAAW;AAErC,UAAMC,YAAYC,QAAIL,IAAI;AAG1B,UAAMM,oBAAoBA,MAAM;AAC9BC,qBAAeC,QAAO;AAAA;AAIxB,UAAMC,qBAAqBA,MAAM;AAC/BF,qBAAeC,QAAO;AACtBN,cAAQE,UAAUM,KAAK;AAAA;AAGzB,UAAMH,iBAAiBI,GAAQ,SAACC,aAAa;AAAA,MAC3CC,OAAO;AAAA,MACPC,OAAO;AAAA,MACPC,OAAO;AAAA,MACPC,SAASA,MAAM;AACbT,uBAAeC,QAAO;AAAA,MACvB;AAAA,MACDS,MAAMA,MAAM;AACV,eAAAC,IAAAA,YAAAC,YAAAA,SAAA;AAAA,UAAA,cAAyBf,UAAUM;AAAAA,UAAK,uBAAAU,YAAfhB,UAAUM,QAAKU;AAAAA,UAAA,aAAa;AAAA,UAAI,eAAA;AAAA,WACvD;AAAA,UACEC,SAAQA,MAAI;AACV,mBAAO;AAAA,UACT;AAAA,SACD;AAAA,MAEJ;AAAA,MACDC,QAAQA,MAAM;AACZ,eAAAJ,IAAA,YAAAK,IAAA,UAAAL,MAAAA,CAAAA,IAAAA,YAAAM,YAAAA,UAAA;AAAA,UAAA,WACqBlB;AAAAA,QAAiB,GAAA;AAAA,UAAAmB,SAAAA,MAAA,CAAAC,oBAAA,IAAA,CAAA;AAAA,SAAAR,GAAAA,IAAA,YAAAM,sBAAA;AAAA,UAAA,QAAA;AAAA,UAAA,WACFf;AAAAA,QAAkB,GAAA;AAAA,UAAAgB,SAAAA,MAAA,CAAAC,oBAAA,IAAA,CAAA;AAAA,QAAA,CAAA,CAAA,CAAA;AAAA,MAIxD;AAAA,IACF,CAAC;AAAA,EACH,CAAC;AACH;;"}
|
|
@@ -1,38 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
const vue = require("vue");
|
|
3
3
|
require("../../core/index.js");
|
|
4
|
-
const index_vue_vue_type_script_setup_true_lang = require("../../core/plugins/LexicalAutoLinkPlugin/index.vue2.js");
|
|
5
4
|
const LexicalLinkPlugin_vue_vue_type_script_setup_true_lang = require("../../core/plugins/LexicalLinkPlugin.vue2.js");
|
|
6
5
|
const _sfc_main = /* @__PURE__ */ vue.defineComponent({
|
|
7
6
|
__name: "index",
|
|
8
7
|
setup(__props) {
|
|
9
|
-
const URL_MATCHER = /((https?:\/\/(www\.)?)|(www\.))[-a-zA-Z0-9@:%._+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_+.~#?&//=]*)/;
|
|
10
|
-
const EMAIL_MATCHER = /(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))/;
|
|
11
|
-
const MATCHERS = [
|
|
12
|
-
(text) => {
|
|
13
|
-
const match = URL_MATCHER.exec(text);
|
|
14
|
-
return match && {
|
|
15
|
-
index: match.index,
|
|
16
|
-
length: match[0].length,
|
|
17
|
-
text: match[0],
|
|
18
|
-
url: match[0]
|
|
19
|
-
};
|
|
20
|
-
},
|
|
21
|
-
(text) => {
|
|
22
|
-
const match = EMAIL_MATCHER.exec(text);
|
|
23
|
-
return match && {
|
|
24
|
-
index: match.index,
|
|
25
|
-
length: match[0].length,
|
|
26
|
-
text: match[0],
|
|
27
|
-
url: `mailto:${match[0]}`
|
|
28
|
-
};
|
|
29
|
-
}
|
|
30
|
-
];
|
|
31
8
|
return (_ctx, _cache) => {
|
|
32
|
-
return vue.openBlock(), vue.
|
|
33
|
-
vue.createVNode(vue.unref(index_vue_vue_type_script_setup_true_lang), { matchers: MATCHERS }),
|
|
34
|
-
vue.createVNode(vue.unref(LexicalLinkPlugin_vue_vue_type_script_setup_true_lang))
|
|
35
|
-
], 64);
|
|
9
|
+
return vue.openBlock(), vue.createBlock(vue.unref(LexicalLinkPlugin_vue_vue_type_script_setup_true_lang));
|
|
36
10
|
};
|
|
37
11
|
}
|
|
38
12
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.vue.js","sources":[
|
|
1
|
+
{"version":3,"file":"index.vue.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;"}
|
|
@@ -89,7 +89,6 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
|
|
|
89
89
|
const _component_el_dropdown = vue.resolveComponent("el-dropdown");
|
|
90
90
|
return vue.openBlock(), vue.createBlock(_component_el_dropdown, {
|
|
91
91
|
"max-height": "300px",
|
|
92
|
-
trigger: "click",
|
|
93
92
|
disabled: disabled.value
|
|
94
93
|
}, {
|
|
95
94
|
dropdown: vue.withCtx(() => [
|
package/dist/cjs/components/basic/doc-editor/plugins/ToolbarPlugin/ContentStyleTool.vue.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ContentStyleTool.vue.js","sources":["../../../../../../../src/components/basic/doc-editor/plugins/ToolbarPlugin/ContentStyleTool.vue"],"sourcesContent":["<script setup lang=\"ts\">\r\nimport {\r\n $createParagraphNode,\r\n $getSelection,\r\n $isRangeSelection,\r\n $isRootOrShadowRoot\r\n} from 'lexical'\r\nimport { $patchStyleText,$setBlocksType } from '@lexical/selection'\r\nimport type { HeadingTagType } from '@lexical/rich-text'\r\nimport { $createHeadingNode,$isHeadingNode } from '@lexical/rich-text'\r\nimport { \r\n INSERT_CHECK_LIST_COMMAND, INSERT_ORDERED_LIST_COMMAND, INSERT_UNORDERED_LIST_COMMAND, \r\n} from '@lexical/list'\r\nimport { $findMatchingParent } from '@lexical/utils'\r\nimport { useLexicalComposer } from '../../core/composables'\r\nimport { onMounted, onUnmounted, ref } from 'vue'\r\n\r\nconst editor = useLexicalComposer()\r\n\r\n// 内容类型\r\nconst CONTENT_TYPE_DEFINES = [\r\n {value:\"paragraph\",label:\"正文\"},\r\n {value:\"bullet\",label:\"无序列表\"},\r\n {value:\"number\",label:\"有序列表\"},\r\n {value:\"h1\",label:\"标题 1\"},\r\n {value:\"h2\",label:\"标题 2\"},\r\n {value:\"h3\",label:\"标题 3\"}\r\n];\r\n\r\nconst disabled = ref(false)\r\n\r\nconst contentType = ref<any>(CONTENT_TYPE_DEFINES[0]);\r\n\r\n\r\n\r\n// 更新状态栏\r\nfunction updateToolbar() {\r\n\r\n const selection = $getSelection()\r\n\r\n if ($isRangeSelection(selection)) {\r\n\r\n const anchorNode = selection.anchor.getNode()\r\n\r\n let element\r\n = anchorNode.getKey() === 'root'\r\n ? anchorNode\r\n : $findMatchingParent(anchorNode, (e) => {\r\n const parent = e.getParent()\r\n return parent !== null && $isRootOrShadowRoot(parent)\r\n })\r\n\r\n if (element === null){ element = anchorNode.getTopLevelElementOrThrow() }\r\n \r\n const elementKey = element.getKey()\r\n const elementDOM = editor.getElementByKey(elementKey)\r\n\r\n if (elementDOM !== null) {\r\n const type = $isHeadingNode(element) ? element.getTag() : element.getType();\r\n contentType.value = CONTENT_TYPE_DEFINES.find(item=>item.value == type) || CONTENT_TYPE_DEFINES[0]\r\n }\r\n disabled.value = false;\r\n }\r\n else{\r\n\r\n disabled.value = true;\r\n }\r\n}\r\n\r\n// 设置内容类型\r\nconst setContentType = (type:any)=>{\r\n\r\n contentType.value = type;\r\n \r\n editor.update(() => {\r\n\r\n const selection = $getSelection()\r\n \r\n if ($isRangeSelection(selection)){\r\n\r\n // 清空字体大小\r\n $patchStyleText(selection, { [\"font-size\"]:\"\" })\r\n \r\n if(type.value == \"paragraph\"){\r\n $setBlocksType(selection, () => $createParagraphNode())\r\n }\r\n else if(type.value == \"bullet\"){\r\n editor.dispatchCommand(INSERT_UNORDERED_LIST_COMMAND, undefined)\r\n }\r\n else if(type.value == \"bullet\"){\r\n editor.dispatchCommand(INSERT_ORDERED_LIST_COMMAND, undefined)\r\n }\r\n else if(type.value == \"check-list\"){\r\n editor.dispatchCommand(INSERT_CHECK_LIST_COMMAND, undefined)\r\n }\r\n else{\r\n $setBlocksType(selection, () => {\r\n return $createHeadingNode(type.value as HeadingTagType)\r\n })\r\n }\r\n }\r\n })\r\n}\r\n\r\n// 挂载的时候\r\nonMounted(() => {\r\n\r\nconst unregisterMergeListener = editor.registerUpdateListener(({ editorState }) => {\r\n editorState.read(() => updateToolbar())\r\n})\r\n\r\n\r\nonUnmounted(() => unregisterMergeListener());\r\n})\r\n\r\n</script>\r\n\r\n<template>\r\n <el-dropdown max-height=\"300px\"
|
|
1
|
+
{"version":3,"file":"ContentStyleTool.vue.js","sources":["../../../../../../../src/components/basic/doc-editor/plugins/ToolbarPlugin/ContentStyleTool.vue"],"sourcesContent":["<script setup lang=\"ts\">\r\nimport {\r\n $createParagraphNode,\r\n $getSelection,\r\n $isRangeSelection,\r\n $isRootOrShadowRoot\r\n} from 'lexical'\r\nimport { $patchStyleText,$setBlocksType } from '@lexical/selection'\r\nimport type { HeadingTagType } from '@lexical/rich-text'\r\nimport { $createHeadingNode,$isHeadingNode } from '@lexical/rich-text'\r\nimport { \r\n INSERT_CHECK_LIST_COMMAND, INSERT_ORDERED_LIST_COMMAND, INSERT_UNORDERED_LIST_COMMAND, \r\n} from '@lexical/list'\r\nimport { $findMatchingParent } from '@lexical/utils'\r\nimport { useLexicalComposer } from '../../core/composables'\r\nimport { onMounted, onUnmounted, ref } from 'vue'\r\n\r\nconst editor = useLexicalComposer()\r\n\r\n// 内容类型\r\nconst CONTENT_TYPE_DEFINES = [\r\n {value:\"paragraph\",label:\"正文\"},\r\n {value:\"bullet\",label:\"无序列表\"},\r\n {value:\"number\",label:\"有序列表\"},\r\n {value:\"h1\",label:\"标题 1\"},\r\n {value:\"h2\",label:\"标题 2\"},\r\n {value:\"h3\",label:\"标题 3\"}\r\n];\r\n\r\nconst disabled = ref(false)\r\n\r\nconst contentType = ref<any>(CONTENT_TYPE_DEFINES[0]);\r\n\r\n\r\n\r\n// 更新状态栏\r\nfunction updateToolbar() {\r\n\r\n const selection = $getSelection()\r\n\r\n if ($isRangeSelection(selection)) {\r\n\r\n const anchorNode = selection.anchor.getNode()\r\n\r\n let element\r\n = anchorNode.getKey() === 'root'\r\n ? anchorNode\r\n : $findMatchingParent(anchorNode, (e) => {\r\n const parent = e.getParent()\r\n return parent !== null && $isRootOrShadowRoot(parent)\r\n })\r\n\r\n if (element === null){ element = anchorNode.getTopLevelElementOrThrow() }\r\n \r\n const elementKey = element.getKey()\r\n const elementDOM = editor.getElementByKey(elementKey)\r\n\r\n if (elementDOM !== null) {\r\n const type = $isHeadingNode(element) ? element.getTag() : element.getType();\r\n contentType.value = CONTENT_TYPE_DEFINES.find(item=>item.value == type) || CONTENT_TYPE_DEFINES[0]\r\n }\r\n disabled.value = false;\r\n }\r\n else{\r\n\r\n disabled.value = true;\r\n }\r\n}\r\n\r\n// 设置内容类型\r\nconst setContentType = (type:any)=>{\r\n\r\n contentType.value = type;\r\n \r\n editor.update(() => {\r\n\r\n const selection = $getSelection()\r\n \r\n if ($isRangeSelection(selection)){\r\n\r\n // 清空字体大小\r\n $patchStyleText(selection, { [\"font-size\"]:\"\" })\r\n \r\n if(type.value == \"paragraph\"){\r\n $setBlocksType(selection, () => $createParagraphNode())\r\n }\r\n else if(type.value == \"bullet\"){\r\n editor.dispatchCommand(INSERT_UNORDERED_LIST_COMMAND, undefined)\r\n }\r\n else if(type.value == \"bullet\"){\r\n editor.dispatchCommand(INSERT_ORDERED_LIST_COMMAND, undefined)\r\n }\r\n else if(type.value == \"check-list\"){\r\n editor.dispatchCommand(INSERT_CHECK_LIST_COMMAND, undefined)\r\n }\r\n else{\r\n $setBlocksType(selection, () => {\r\n return $createHeadingNode(type.value as HeadingTagType)\r\n })\r\n }\r\n }\r\n })\r\n}\r\n\r\n// 挂载的时候\r\nonMounted(() => {\r\n\r\nconst unregisterMergeListener = editor.registerUpdateListener(({ editorState }) => {\r\n editorState.read(() => updateToolbar())\r\n})\r\n\r\n\r\nonUnmounted(() => unregisterMergeListener());\r\n})\r\n\r\n</script>\r\n\r\n<template>\r\n <el-dropdown max-height=\"300px\" :disabled=\"disabled\">\r\n <el-button text :disabled=\"disabled\">\r\n {{contentType.label}} <MKSvgIcon iconClass=\"ArrowDownBold\" style=\"margin-left: 8px;\" /> \r\n </el-button>\r\n <template #dropdown>\r\n <el-dropdown-menu>\r\n <el-dropdown-item :class=\"{active:contentType.label == item.label}\" v-for=\"item in CONTENT_TYPE_DEFINES\" :value=\"item.value\" @click=\"setContentType(item)\">\r\n <template v-if=\"item.value.indexOf('h')!=0 \">\r\n <div class=\"mk-doc-editor-toolbar-content-style-item text\">{{item.label}}</div>\r\n </template>\r\n <template v-else>\r\n <div class=\"mk-doc-editor-toolbar-content-style-item\" v-html=\"`<${item.value}>${item.label}</${item.value}>`\"></div>\r\n </template>\r\n </el-dropdown-item>\r\n </el-dropdown-menu>\r\n </template>\r\n </el-dropdown>\r\n</template>\r\n"],"names":["useLexicalComposer","ref","selection","$getSelection","$isRangeSelection","$findMatchingParent","$isRootOrShadowRoot","$isHeadingNode","$patchStyleText","$setBlocksType","$createParagraphNode","INSERT_UNORDERED_LIST_COMMAND","INSERT_ORDERED_LIST_COMMAND","INSERT_CHECK_LIST_COMMAND","$createHeadingNode","onMounted","onUnmounted"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAiBA,UAAM,SAASA,mBAAAA;AAGf,UAAM,uBAAuB;AAAA,MAC3B,EAAC,OAAM,aAAY,OAAM,KAAI;AAAA,MAC7B,EAAC,OAAM,UAAS,OAAM,OAAM;AAAA,MAC5B,EAAC,OAAM,UAAS,OAAM,OAAM;AAAA,MAC5B,EAAC,OAAM,MAAK,OAAM,OAAM;AAAA,MACxB,EAAC,OAAM,MAAK,OAAM,OAAM;AAAA,MACxB,EAAC,OAAM,MAAK,OAAM,OAAM;AAAA,IAAA;AAGpB,UAAA,WAAWC,QAAI,KAAK;AAE1B,UAAM,cAAcA,IAAA,IAAS,qBAAqB,CAAC,CAAC;AAKpD,aAAS,gBAAgB;AAEvB,YAAMC,aAAYC,QAAAA;AAEd,UAAAC,QAAAA,kBAAkBF,UAAS,GAAG;AAE1B,cAAA,aAAaA,WAAU,OAAO,QAAQ;AAExC,YAAA,UACE,WAAW,aAAa,SACtB,aACAG,MAAA,oBAAoB,YAAY,CAAC,MAAM;AACjC,gBAAA,SAAS,EAAE;AACV,iBAAA,WAAW,QAAQC,QAAA,oBAAoB,MAAM;AAAA,QAAA,CACrD;AAEP,YAAI,YAAY,MAAK;AAAE,oBAAU,WAAW;QAA4B;AAElE,cAAA,aAAa,QAAQ;AACrB,cAAA,aAAa,OAAO,gBAAgB,UAAU;AAEpD,YAAI,eAAe,MAAM;AACjB,gBAAA,OAAOC,wBAAe,OAAO,IAAI,QAAQ,OAAO,IAAI,QAAQ;AACtD,sBAAA,QAAQ,qBAAqB,KAAK,CAAA,SAAM,KAAK,SAAS,IAAI,KAAK,qBAAqB,CAAC;AAAA,QACnG;AACA,iBAAS,QAAQ;AAAA,MAAA,OAEf;AAEF,iBAAS,QAAQ;AAAA,MACnB;AAAA,IACF;AAGM,UAAA,iBAAiB,CAAC,SAAW;AAEjC,kBAAY,QAAQ;AAEpB,aAAO,OAAO,MAAM;AAEhB,cAAML,cAAYC,QAAAA;AAEd,YAAAC,QAAAA,kBAAkBF,WAAS,GAAE;AAG/BM,oBAAAA,gBAAgBN,aAAW,EAAE,CAAC,WAAW,GAAE,GAAI,CAAA;AAE5C,cAAA,KAAK,SAAS,aAAY;AACZO,sBAAAA,eAAAP,aAAW,MAAMQ,QAAA,qBAAA,CAAsB;AAAA,UAAA,WAEhD,KAAK,SAAS,UAAS;AACtB,mBAAA,gBAAgBC,oCAA+B,MAAS;AAAA,UAAA,WAEzD,KAAK,SAAS,UAAS;AACtB,mBAAA,gBAAgBC,kCAA6B,MAAS;AAAA,UAAA,WAEvD,KAAK,SAAS,cAAa;AAC1B,mBAAA,gBAAgBC,gCAA2B,MAAS;AAAA,UAAA,OAEzD;AACFJ,sBAAA,eAAeP,aAAW,MAAM;AACvB,qBAAAY,SAAA,mBAAmB,KAAK,KAAwB;AAAA,YAAA,CACxD;AAAA,UACH;AAAA,QACF;AAAA,MAAA,CACH;AAAA,IAAA;AAIHC,QAAAA,UAAU,MAAM;AAEhB,YAAM,0BAA0B,OAAO,uBAAuB,CAAC,EAAE,kBAAkB;AACrE,oBAAA,KAAK,MAAM,cAAA,CAAe;AAAA,MAAA,CACvC;AAGWC,sBAAA,MAAM,yBAAyB;AAAA,IAAA,CAC1C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -37,7 +37,7 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
|
|
|
37
37
|
const isLink = vue.ref(false);
|
|
38
38
|
const linkValue = vue.ref("");
|
|
39
39
|
async function insertLink() {
|
|
40
|
-
const result = await LinkEditDialog.
|
|
40
|
+
const result = await LinkEditDialog.showLinkEditPanel(linkValue.value);
|
|
41
41
|
if (result.trim()) {
|
|
42
42
|
editor.dispatchCommand(link.TOGGLE_LINK_COMMAND, url.sanitizeUrl(result));
|
|
43
43
|
} else {
|
|
@@ -136,7 +136,6 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
|
|
|
136
136
|
return vue.openBlock(), vue.createElementBlock(vue.Fragment, null, [
|
|
137
137
|
vue.createVNode(_component_el_dropdown, {
|
|
138
138
|
"max-height": "300px",
|
|
139
|
-
trigger: "click",
|
|
140
139
|
disabled: disabled.value
|
|
141
140
|
}, {
|
|
142
141
|
dropdown: vue.withCtx(() => [
|
|
@@ -182,7 +181,6 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
|
|
|
182
181
|
vue.createVNode(_component_el_divider, { direction: "vertical" }),
|
|
183
182
|
vue.createVNode(_component_el_dropdown, {
|
|
184
183
|
"max-height": "300px",
|
|
185
|
-
trigger: "click",
|
|
186
184
|
disabled: disabled.value
|
|
187
185
|
}, {
|
|
188
186
|
dropdown: vue.withCtx(() => [
|
|
@@ -247,12 +245,12 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
|
|
|
247
245
|
vue.createVNode(_component_el_color_picker, {
|
|
248
246
|
modelValue: bgColor.value,
|
|
249
247
|
"onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => bgColor.value = $event),
|
|
250
|
-
disabled: disabled.value
|
|
248
|
+
disabled: disabled.value,
|
|
249
|
+
onChange: setBgColor
|
|
251
250
|
}, null, 8, ["modelValue", "disabled"]),
|
|
252
251
|
vue.createVNode(_component_MKSvgIcon, {
|
|
253
252
|
class: "view",
|
|
254
|
-
iconClass: "doc-background-color"
|
|
255
|
-
onChange: setBgColor
|
|
253
|
+
iconClass: "doc-background-color"
|
|
256
254
|
})
|
|
257
255
|
]),
|
|
258
256
|
_: 1
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FontStyleTool.vue.js","sources":["../../../../../../../src/components/basic/doc-editor/plugins/ToolbarPlugin/FontStyleTool.vue"],"sourcesContent":["<script setup lang=\"ts\">\r\nimport {\r\n $getSelection,\r\n $isRangeSelection,\r\n $isRootOrShadowRoot,\r\n $isParagraphNode,\r\n FORMAT_TEXT_COMMAND,\r\n FORMAT_ELEMENT_COMMAND,\r\n type ElementFormatType,\r\n} from 'lexical'\r\nimport {\r\n $getSelectionStyleValueForProperty,\r\n $patchStyleText,\r\n} from '@lexical/selection'\r\n\r\nimport { $isLinkNode, TOGGLE_LINK_COMMAND,LinkNode } from '@lexical/link'\r\nimport { sanitizeUrl } from '../../utils/url'\r\nimport { getSelectedNode } from '../../utils/getSelectedNode'\r\nimport { $findMatchingParent,mergeRegister } from '@lexical/utils'\r\nimport { useLexicalComposer } from '../../core/composables'\r\nimport { onMounted, onUnmounted, ref,watch } from 'vue'\r\nimport { FONT_SIZE_OPTIONS,ROOT_FONT_SIZE,FONT_FAMILY_OPTIONS } from \"./FontStyleDefines\"\r\nimport { ShowLinkEditPanel } from \"../AutoLinkPlugin/LinkEditDialog\";\r\n\r\nconst editor = useLexicalComposer()\r\nconst fontSize = ref('14px')\r\nconst fontColor = ref<string>('#000')\r\nconst bgColor = ref<string>('#fff')\r\nconst fontFamily = ref<any>(FONT_FAMILY_OPTIONS[0])\r\nconst isBold = ref(false)\r\nconst isItalic = ref(false)\r\nconst isUnderline = ref(false)\r\nconst isStrikethrough = ref(false)\r\n\r\nconst isSubscript = ref(false)\r\nconst isSuperscript = ref(false)\r\n\r\n// 对齐方式\r\nconst alignList = ref<ElementFormatType[]>([\"left\",\"center\",\"right\",\"justify\"])\r\nconst alignValue = ref(alignList.value[0])\r\nconst disabled = ref(false)\r\nconst isLink = ref(false)\r\nconst linkValue = ref(\"\");\r\n\r\nasync function insertLink() {\r\n\r\n const result:any = await ShowLinkEditPanel(linkValue.value);\r\n\r\n if(result.trim()){\r\n editor.dispatchCommand(TOGGLE_LINK_COMMAND, sanitizeUrl(result))\r\n }\r\n else{\r\n editor.dispatchCommand(TOGGLE_LINK_COMMAND, null)\r\n }\r\n}\r\n\r\n// 更新状态栏\r\nfunction updateToolbar() {\r\n\r\n const selection = $getSelection()\r\n\r\n if ($isRangeSelection(selection)) {\r\n\r\n const anchorNode = selection.anchor.getNode()\r\n\r\n let element = anchorNode.getKey() === 'root'\r\n ? anchorNode\r\n : $findMatchingParent(anchorNode, (e) => {\r\n const parent = e.getParent()\r\n return parent !== null && $isRootOrShadowRoot(parent)\r\n });\r\n\r\n\r\n if (element === null){\r\n element = anchorNode.getTopLevelElementOrThrow()\r\n }\r\n\r\n let elementDOM = editor.getElementByKey(element.getKey());\r\n\r\n // 文本对齐\r\n alignValue.value = (elementDOM?.style.textAlign as ElementFormatType) || \"left\";\r\n\r\n if(alignValue.value == \"start\"){ alignValue.value = \"left\"; }\r\n else if(alignValue.value == \"end\"){ alignValue.value = \"right\"; }\r\n\r\n // Update text format\r\n isBold.value = selection.hasFormat('bold')\r\n isItalic.value = selection.hasFormat('italic')\r\n isUnderline.value = selection.hasFormat('underline')\r\n isStrikethrough.value = selection.hasFormat('strikethrough')\r\n isSubscript.value = selection.hasFormat('subscript')\r\n isSuperscript.value = selection.hasFormat('superscript')\r\n\r\n // Handle buttons\r\n var ff = $getSelectionStyleValueForProperty(selection, 'font-family', 'Arial');\r\n let fs = $getSelectionStyleValueForProperty(selection, 'font-size', '1rem');\r\n \r\n if(fs){\r\n fontSize.value = Math.round(parseFloat(fs) * ROOT_FONT_SIZE)+\"px\"\r\n }\r\n \r\n fontColor.value = $getSelectionStyleValueForProperty(selection, 'color', '#000')\r\n bgColor.value = $getSelectionStyleValueForProperty(selection, 'background-color', '#fff')\r\n fontFamily.value = FONT_FAMILY_OPTIONS.find(item=>item.value==ff) || FONT_FAMILY_OPTIONS[0];\r\n\r\n disabled.value = false;\r\n\r\n // Update links\r\n const node = getSelectedNode(selection)\r\n const parent = node.getParent()\r\n isLink.value = $isLinkNode(parent) || $isLinkNode(node)\r\n if(isLink.value){\r\n linkValue.value = $isLinkNode(parent) ? parent.getURL() : (node as LinkNode).getURL()\r\n }\r\n else{\r\n linkValue.value = \"\";\r\n }\r\n }\r\n else{\r\n\r\n disabled.value = true;\r\n }\r\n}\r\n\r\n// 文字样式\r\nconst fontStyleHandle = (data : any,styleName?:any)=>{\r\n fontSize.value = data.label;\r\n editor.update(() => {\r\n const selection = $getSelection()\r\n if (selection !== null) {\r\n $patchStyleText(selection, {\r\n [styleName || \"font-size\"]:data.value\r\n })\r\n }\r\n })\r\n}\r\n\r\n// 字体颜色\r\nconst setFontColor = (color:any)=>{\r\n editor.update(() => {\r\n const selection = $getSelection()\r\n if (selection !== null){\r\n $patchStyleText(selection, { color })\r\n }\r\n },{})\r\n}\r\n\r\n// bg颜色\r\nconst setBgColor = (color:any)=>{\r\n editor.update(() => {\r\n const selection = $getSelection()\r\n if (selection !== null){\r\n $patchStyleText(selection, { 'background-color':color })\r\n }\r\n },{})\r\n}\r\n\r\n\r\n// 挂载的时候\r\nonMounted(() => {\r\n\r\n const unregisterMergeListener = mergeRegister(\r\n editor.registerUpdateListener(({ editorState }) => {\r\n editorState.read(() => updateToolbar())\r\n })\r\n )\r\n\r\n onUnmounted(() => unregisterMergeListener());\r\n})\r\n\r\n</script>\r\n\r\n<template>\r\n <!-- 字体 -->\r\n <el-dropdown max-height=\"300px\" trigger=\"click\" :disabled=\"disabled\">\r\n <el-button text :style=\"{fontFamily:fontFamily.value}\" :disabled=\"disabled\">\r\n {{fontFamily.label}} <MKSvgIcon iconClass=\"ArrowDownBold\" style=\"margin-left: 8px;\" /> \r\n </el-button>\r\n <template #dropdown>\r\n <el-dropdown-menu>\r\n <el-dropdown-item :class=\"{active:fontFamily.label == item.label}\" :disabled=\"disabled\" v-for=\"item in FONT_FAMILY_OPTIONS\" :value=\"item.value\" @click=\"fontStyleHandle(item,'font-family')\">\r\n <span :style=\"{fontFamily:item.value}\">\r\n {{item.label}}\r\n </span>\r\n </el-dropdown-item>\r\n </el-dropdown-menu>\r\n </template>\r\n </el-dropdown>\r\n <el-divider direction=\"vertical\" /> \r\n <!-- 字体大小 -->\r\n <el-dropdown max-height=\"300px\" trigger=\"click\" :disabled=\"disabled\">\r\n <el-button text :disabled=\"disabled\">\r\n {{fontSize}} <MKSvgIcon iconClass=\"ArrowDownBold\" style=\"margin-left: 8px;\" /> \r\n </el-button>\r\n <template #dropdown>\r\n <el-dropdown-menu>\r\n <el-dropdown-item :class=\"{active:fontSize==item.label}\" :disabled=\"disabled\" v-for=\"item in FONT_SIZE_OPTIONS\" :value=\"item.value\" @click=\"fontStyleHandle(item)\">{{item.label}}</el-dropdown-item>\r\n </el-dropdown-menu>\r\n </template>\r\n </el-dropdown>\r\n <el-divider direction=\"vertical\" /> \r\n <!-- 字体颜色 -->\r\n <el-button text class=\"mk-doc-editor-toolbar__fontcolor\" :disabled=\"disabled\" >\r\n <el-color-picker v-model=\"fontColor\" :disabled=\"disabled\" @change=\"setFontColor\" />\r\n </el-button>\r\n <!-- 背景颜色 -->\r\n <el-button text class=\"mk-doc-editor-toolbar__bgcolor\" :disabled=\"disabled\" >\r\n <el-color-picker v-model=\"bgColor\" :disabled=\"disabled\" />\r\n <MKSvgIcon class=\"view\" iconClass=\"doc-background-color\" @change=\"setBgColor\" /> \r\n </el-button>\r\n\r\n <el-divider direction=\"vertical\" />\r\n <el-button-group>\r\n <el-button :disabled=\"disabled\" text :class=\"`${isBold ? 'active' : ''}`\" @click=\"editor.dispatchCommand(FORMAT_TEXT_COMMAND, 'bold')\">\r\n <MKSvgIcon iconClass=\"doc-bold\" /> \r\n </el-button>\r\n <el-button :disabled=\"disabled\" text :class=\"`${isItalic ? 'active' : ''}`\" @click=\"editor.dispatchCommand(FORMAT_TEXT_COMMAND, 'italic')\">\r\n <MKSvgIcon iconClass=\"doc-italic\" /> \r\n </el-button>\r\n <el-button :disabled=\"disabled\" text :class=\"`${isUnderline ? 'active' : ''}`\" @click=\"editor.dispatchCommand(FORMAT_TEXT_COMMAND, 'underline')\">\r\n <MKSvgIcon iconClass=\"doc-underline\" /> \r\n </el-button>\r\n <el-button :disabled=\"disabled\" text :class=\"`${isStrikethrough ? 'active' : ''}`\" @click=\"editor.dispatchCommand(FORMAT_TEXT_COMMAND, 'strikethrough')\">\r\n <MKSvgIcon iconClass=\"doc-strikethrough\" /> \r\n </el-button>\r\n <el-button :disabled=\"disabled\" text :class=\"`${isSubscript ? 'active' : ''}`\" @click=\"editor.dispatchCommand(FORMAT_TEXT_COMMAND, 'subscript')\">\r\n <MKSvgIcon iconClass=\"doc-sub\" /> \r\n </el-button>\r\n <el-button :disabled=\"disabled\" text :class=\"`${isSuperscript ? 'active' : ''}`\" @click=\"editor.dispatchCommand(FORMAT_TEXT_COMMAND, 'superscript')\">\r\n <MKSvgIcon iconClass=\"doc-sup\" /> \r\n </el-button>\r\n </el-button-group>\r\n <el-divider direction=\"vertical\" />\r\n <el-dropdown max-height=\"300px\" trigger=\"click\" :disabled=\"disabled\">\r\n <el-button text :style=\"{fontFamily:fontFamily.value}\" :disabled=\"disabled\">\r\n <MKSvgIcon :iconClass=\"`doc-align-${alignValue}`\" style=\"font-size: 18px;\" /> \r\n </el-button>\r\n <template #dropdown>\r\n <el-dropdown-menu>\r\n <el-dropdown-item :disabled=\"disabled\" :class=\"{active:alignValue == item}\" v-for=\"item in alignList\" :value=\"item\" @click=\"editor.dispatchCommand(FORMAT_ELEMENT_COMMAND, item)\">\r\n <MKSvgIcon :iconClass=\"`doc-align-${item}`\" style=\"font-size: 18px;\" /> \r\n </el-dropdown-item>\r\n </el-dropdown-menu>\r\n </template>\r\n </el-dropdown>\r\n <el-divider direction=\"vertical\" />\r\n <!-- 链接 -->\r\n <el-button-group>\r\n <el-button text :disabled=\"disabled\" :class=\"`${isLink ? 'active' : ''}`\" @click=\"insertLink\">\r\n <MKSvgIcon iconClass=\"doc-link\" /> \r\n </el-button>\r\n </el-button-group>\r\n</template>\r\n"],"names":["useLexicalComposer","ref","FONT_FAMILY_OPTIONS","ShowLinkEditPanel","TOGGLE_LINK_COMMAND","sanitizeUrl","selection","$getSelection","$isRangeSelection","$findMatchingParent","parent","$isRootOrShadowRoot","$getSelectionStyleValueForProperty","ROOT_FONT_SIZE","getSelectedNode","$isLinkNode","$patchStyleText","onMounted","mergeRegister","onUnmounted"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"FontStyleTool.vue.js","sources":["../../../../../../../src/components/basic/doc-editor/plugins/ToolbarPlugin/FontStyleTool.vue"],"sourcesContent":["<script setup lang=\"ts\">\r\nimport {\r\n $getSelection,\r\n $isRangeSelection,\r\n $isRootOrShadowRoot,\r\n $isParagraphNode,\r\n FORMAT_TEXT_COMMAND,\r\n FORMAT_ELEMENT_COMMAND,\r\n type ElementFormatType,\r\n} from 'lexical'\r\nimport {\r\n $getSelectionStyleValueForProperty,\r\n $patchStyleText,\r\n} from '@lexical/selection'\r\n\r\nimport { $isLinkNode, TOGGLE_LINK_COMMAND,LinkNode } from '@lexical/link'\r\nimport { sanitizeUrl } from '../../utils/url'\r\nimport { getSelectedNode } from '../../utils/getSelectedNode'\r\nimport { $findMatchingParent,mergeRegister } from '@lexical/utils'\r\nimport { useLexicalComposer } from '../../core/composables'\r\nimport { onMounted, onUnmounted, ref,watch } from 'vue'\r\nimport { FONT_SIZE_OPTIONS,ROOT_FONT_SIZE,FONT_FAMILY_OPTIONS } from \"./FontStyleDefines\"\r\nimport { showLinkEditPanel } from \"../AutoLinkPlugin/LinkEditDialog\";\r\n\r\nconst editor = useLexicalComposer()\r\nconst fontSize = ref('14px')\r\nconst fontColor = ref<string>('#000')\r\nconst bgColor = ref<string>('#fff')\r\nconst fontFamily = ref<any>(FONT_FAMILY_OPTIONS[0])\r\nconst isBold = ref(false)\r\nconst isItalic = ref(false)\r\nconst isUnderline = ref(false)\r\nconst isStrikethrough = ref(false)\r\n\r\nconst isSubscript = ref(false)\r\nconst isSuperscript = ref(false)\r\n\r\n// 对齐方式\r\nconst alignList = ref<ElementFormatType[]>([\"left\",\"center\",\"right\",\"justify\"])\r\nconst alignValue = ref(alignList.value[0])\r\nconst disabled = ref(false)\r\nconst isLink = ref(false)\r\nconst linkValue = ref(\"\");\r\n\r\nasync function insertLink() {\r\n\r\n const result:any = await showLinkEditPanel(linkValue.value);\r\n\r\n if(result.trim()){\r\n editor.dispatchCommand(TOGGLE_LINK_COMMAND, sanitizeUrl(result))\r\n }\r\n else{\r\n editor.dispatchCommand(TOGGLE_LINK_COMMAND, null)\r\n }\r\n}\r\n\r\n// 更新状态栏\r\nfunction updateToolbar() {\r\n\r\n const selection = $getSelection()\r\n\r\n if ($isRangeSelection(selection)) {\r\n\r\n const anchorNode = selection.anchor.getNode()\r\n\r\n let element = anchorNode.getKey() === 'root'\r\n ? anchorNode\r\n : $findMatchingParent(anchorNode, (e) => {\r\n const parent = e.getParent()\r\n return parent !== null && $isRootOrShadowRoot(parent)\r\n });\r\n\r\n\r\n if (element === null){\r\n element = anchorNode.getTopLevelElementOrThrow()\r\n }\r\n\r\n let elementDOM = editor.getElementByKey(element.getKey());\r\n\r\n // 文本对齐\r\n alignValue.value = (elementDOM?.style.textAlign as ElementFormatType) || \"left\";\r\n\r\n if(alignValue.value == \"start\"){ alignValue.value = \"left\"; }\r\n else if(alignValue.value == \"end\"){ alignValue.value = \"right\"; }\r\n\r\n // Update text format\r\n isBold.value = selection.hasFormat('bold')\r\n isItalic.value = selection.hasFormat('italic')\r\n isUnderline.value = selection.hasFormat('underline')\r\n isStrikethrough.value = selection.hasFormat('strikethrough')\r\n isSubscript.value = selection.hasFormat('subscript')\r\n isSuperscript.value = selection.hasFormat('superscript')\r\n\r\n // Handle buttons\r\n var ff = $getSelectionStyleValueForProperty(selection, 'font-family', 'Arial');\r\n let fs = $getSelectionStyleValueForProperty(selection, 'font-size', '1rem');\r\n \r\n if(fs){\r\n fontSize.value = Math.round(parseFloat(fs) * ROOT_FONT_SIZE)+\"px\"\r\n }\r\n \r\n fontColor.value = $getSelectionStyleValueForProperty(selection, 'color', '#000')\r\n bgColor.value = $getSelectionStyleValueForProperty(selection, 'background-color', '#fff')\r\n fontFamily.value = FONT_FAMILY_OPTIONS.find(item=>item.value==ff) || FONT_FAMILY_OPTIONS[0];\r\n\r\n disabled.value = false;\r\n\r\n // Update links\r\n const node = getSelectedNode(selection)\r\n const parent = node.getParent()\r\n isLink.value = $isLinkNode(parent) || $isLinkNode(node)\r\n if(isLink.value){\r\n linkValue.value = $isLinkNode(parent) ? parent.getURL() : (node as LinkNode).getURL()\r\n }\r\n else{\r\n linkValue.value = \"\";\r\n }\r\n }\r\n else{\r\n\r\n disabled.value = true;\r\n }\r\n}\r\n\r\n// 文字样式\r\nconst fontStyleHandle = (data : any,styleName?:any)=>{\r\n fontSize.value = data.label;\r\n editor.update(() => {\r\n const selection = $getSelection()\r\n if (selection !== null) {\r\n $patchStyleText(selection, {\r\n [styleName || \"font-size\"]:data.value\r\n })\r\n }\r\n })\r\n}\r\n\r\n// 字体颜色\r\nconst setFontColor = (color:any)=>{\r\n editor.update(() => {\r\n const selection = $getSelection()\r\n if (selection !== null){\r\n $patchStyleText(selection, { color })\r\n }\r\n },{})\r\n}\r\n\r\n// bg颜色\r\nconst setBgColor = (color:any)=>{\r\n editor.update(() => {\r\n const selection = $getSelection()\r\n if (selection !== null){\r\n $patchStyleText(selection, { 'background-color':color })\r\n }\r\n },{})\r\n}\r\n\r\n\r\n// 挂载的时候\r\nonMounted(() => {\r\n\r\n const unregisterMergeListener = mergeRegister(\r\n editor.registerUpdateListener(({ editorState }) => {\r\n editorState.read(() => updateToolbar())\r\n })\r\n )\r\n\r\n onUnmounted(() => unregisterMergeListener());\r\n})\r\n\r\n</script>\r\n\r\n<template>\r\n <!-- 字体 -->\r\n <el-dropdown max-height=\"300px\" :disabled=\"disabled\">\r\n <el-button text :style=\"{fontFamily:fontFamily.value}\" :disabled=\"disabled\">\r\n {{fontFamily.label}} <MKSvgIcon iconClass=\"ArrowDownBold\" style=\"margin-left: 8px;\" /> \r\n </el-button>\r\n <template #dropdown>\r\n <el-dropdown-menu>\r\n <el-dropdown-item :class=\"{active:fontFamily.label == item.label}\" :disabled=\"disabled\" v-for=\"item in FONT_FAMILY_OPTIONS\" :value=\"item.value\" @click=\"fontStyleHandle(item,'font-family')\">\r\n <span :style=\"{fontFamily:item.value}\">\r\n {{item.label}}\r\n </span>\r\n </el-dropdown-item>\r\n </el-dropdown-menu>\r\n </template>\r\n </el-dropdown>\r\n <el-divider direction=\"vertical\" /> \r\n <!-- 字体大小 -->\r\n <el-dropdown max-height=\"300px\" :disabled=\"disabled\">\r\n <el-button text :disabled=\"disabled\">\r\n {{fontSize}} <MKSvgIcon iconClass=\"ArrowDownBold\" style=\"margin-left: 8px;\" /> \r\n </el-button>\r\n <template #dropdown>\r\n <el-dropdown-menu>\r\n <el-dropdown-item :class=\"{active:fontSize==item.label}\" :disabled=\"disabled\" v-for=\"item in FONT_SIZE_OPTIONS\" :value=\"item.value\" @click=\"fontStyleHandle(item)\">{{item.label}}</el-dropdown-item>\r\n </el-dropdown-menu>\r\n </template>\r\n </el-dropdown>\r\n <el-divider direction=\"vertical\" /> \r\n <!-- 字体颜色 -->\r\n <el-button text class=\"mk-doc-editor-toolbar__fontcolor\" :disabled=\"disabled\" >\r\n <el-color-picker v-model=\"fontColor\" :disabled=\"disabled\" @change=\"setFontColor\" />\r\n </el-button>\r\n <!-- 背景颜色 -->\r\n <el-button text class=\"mk-doc-editor-toolbar__bgcolor\" :disabled=\"disabled\" >\r\n <el-color-picker v-model=\"bgColor\" :disabled=\"disabled\" @change=\"setBgColor\" />\r\n <MKSvgIcon class=\"view\" iconClass=\"doc-background-color\" /> \r\n </el-button>\r\n\r\n <el-divider direction=\"vertical\" />\r\n <el-button-group>\r\n <el-button :disabled=\"disabled\" text :class=\"`${isBold ? 'active' : ''}`\" @click=\"editor.dispatchCommand(FORMAT_TEXT_COMMAND, 'bold')\">\r\n <MKSvgIcon iconClass=\"doc-bold\" /> \r\n </el-button>\r\n <el-button :disabled=\"disabled\" text :class=\"`${isItalic ? 'active' : ''}`\" @click=\"editor.dispatchCommand(FORMAT_TEXT_COMMAND, 'italic')\">\r\n <MKSvgIcon iconClass=\"doc-italic\" /> \r\n </el-button>\r\n <el-button :disabled=\"disabled\" text :class=\"`${isUnderline ? 'active' : ''}`\" @click=\"editor.dispatchCommand(FORMAT_TEXT_COMMAND, 'underline')\">\r\n <MKSvgIcon iconClass=\"doc-underline\" /> \r\n </el-button>\r\n <el-button :disabled=\"disabled\" text :class=\"`${isStrikethrough ? 'active' : ''}`\" @click=\"editor.dispatchCommand(FORMAT_TEXT_COMMAND, 'strikethrough')\">\r\n <MKSvgIcon iconClass=\"doc-strikethrough\" /> \r\n </el-button>\r\n <el-button :disabled=\"disabled\" text :class=\"`${isSubscript ? 'active' : ''}`\" @click=\"editor.dispatchCommand(FORMAT_TEXT_COMMAND, 'subscript')\">\r\n <MKSvgIcon iconClass=\"doc-sub\" /> \r\n </el-button>\r\n <el-button :disabled=\"disabled\" text :class=\"`${isSuperscript ? 'active' : ''}`\" @click=\"editor.dispatchCommand(FORMAT_TEXT_COMMAND, 'superscript')\">\r\n <MKSvgIcon iconClass=\"doc-sup\" /> \r\n </el-button>\r\n </el-button-group>\r\n <el-divider direction=\"vertical\" />\r\n <el-dropdown max-height=\"300px\" trigger=\"click\" :disabled=\"disabled\">\r\n <el-button text :style=\"{fontFamily:fontFamily.value}\" :disabled=\"disabled\">\r\n <MKSvgIcon :iconClass=\"`doc-align-${alignValue}`\" style=\"font-size: 18px;\" /> \r\n </el-button>\r\n <template #dropdown>\r\n <el-dropdown-menu>\r\n <el-dropdown-item :disabled=\"disabled\" :class=\"{active:alignValue == item}\" v-for=\"item in alignList\" :value=\"item\" @click=\"editor.dispatchCommand(FORMAT_ELEMENT_COMMAND, item)\">\r\n <MKSvgIcon :iconClass=\"`doc-align-${item}`\" style=\"font-size: 18px;\" /> \r\n </el-dropdown-item>\r\n </el-dropdown-menu>\r\n </template>\r\n </el-dropdown>\r\n <el-divider direction=\"vertical\" />\r\n <!-- 链接 -->\r\n <el-button-group>\r\n <el-button text :disabled=\"disabled\" :class=\"`${isLink ? 'active' : ''}`\" @click=\"insertLink\">\r\n <MKSvgIcon iconClass=\"doc-link\" /> \r\n </el-button>\r\n </el-button-group>\r\n</template>\r\n"],"names":["useLexicalComposer","ref","FONT_FAMILY_OPTIONS","showLinkEditPanel","TOGGLE_LINK_COMMAND","sanitizeUrl","selection","$getSelection","$isRangeSelection","$findMatchingParent","parent","$isRootOrShadowRoot","$getSelectionStyleValueForProperty","ROOT_FONT_SIZE","getSelectedNode","$isLinkNode","$patchStyleText","onMounted","mergeRegister","onUnmounted"],"mappings":"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"}
|
|
@@ -11,10 +11,10 @@ require("@lexical/list");
|
|
|
11
11
|
require("@lexical/dragon");
|
|
12
12
|
require("@lexical/plain-text");
|
|
13
13
|
require("@lexical/rich-text");
|
|
14
|
-
const index = require("../../core/index.js");
|
|
15
14
|
const PreviewToolbar_vue_vue_type_script_setup_true_lang = require("./PreviewToolbar.vue.js");
|
|
16
15
|
const FontStyleTool_vue_vue_type_script_setup_true_lang = require("./FontStyleTool.vue.js");
|
|
17
16
|
const ContentStyleTool_vue_vue_type_script_setup_true_lang = require("./ContentStyleTool.vue.js");
|
|
17
|
+
const index = require("../../core/index.js");
|
|
18
18
|
const TextGridNode = require("../GridPlugin/TextGridNode.js");
|
|
19
19
|
require("../GridPlugin/LayoutGridNode.js");
|
|
20
20
|
const ImageTextGridNode = require("../GridPlugin/ImageTextGridNode.js");
|
|
@@ -127,32 +127,6 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
|
|
|
127
127
|
vue.createVNode(_component_el_divider, { direction: "vertical" }),
|
|
128
128
|
vue.createVNode(FontStyleTool_vue_vue_type_script_setup_true_lang),
|
|
129
129
|
vue.createVNode(_component_el_divider, { direction: "vertical" }),
|
|
130
|
-
vue.createVNode(_component_el_button_group, null, {
|
|
131
|
-
default: vue.withCtx(() => [
|
|
132
|
-
vue.createVNode(_component_el_button, {
|
|
133
|
-
text: "",
|
|
134
|
-
class: vue.normalizeClass(`${vue.unref(index.DEVICE_VIEW_MODE) == "pc" ? "active" : ""}`),
|
|
135
|
-
onClick: _cache[2] || (_cache[2] = ($event) => index.DEVICE_VIEW_MODE.value = "pc")
|
|
136
|
-
}, {
|
|
137
|
-
default: vue.withCtx(() => [
|
|
138
|
-
vue.createVNode(_component_MKSvgIcon, { iconClass: "Platform" })
|
|
139
|
-
]),
|
|
140
|
-
_: 1
|
|
141
|
-
}, 8, ["class"]),
|
|
142
|
-
vue.createVNode(_component_el_button, {
|
|
143
|
-
text: "",
|
|
144
|
-
class: vue.normalizeClass(`${vue.unref(index.DEVICE_VIEW_MODE) == "mobile" ? "active" : ""}`),
|
|
145
|
-
onClick: _cache[3] || (_cache[3] = ($event) => index.DEVICE_VIEW_MODE.value = "mobile")
|
|
146
|
-
}, {
|
|
147
|
-
default: vue.withCtx(() => [
|
|
148
|
-
vue.createVNode(_component_MKSvgIcon, { iconClass: "Iphone" })
|
|
149
|
-
]),
|
|
150
|
-
_: 1
|
|
151
|
-
}, 8, ["class"])
|
|
152
|
-
]),
|
|
153
|
-
_: 1
|
|
154
|
-
}),
|
|
155
|
-
vue.createVNode(_component_el_divider, { direction: "vertical" }),
|
|
156
130
|
vue.createVNode(_component_el_dropdown, { disabled: toolbarDisabled.value }, {
|
|
157
131
|
dropdown: vue.withCtx(() => [
|
|
158
132
|
vue.createVNode(_component_el_dropdown_menu, null, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.vue.js","sources":["../../../../../../../src/components/basic/doc-editor/plugins/ToolbarPlugin/index.vue"],"sourcesContent":["<script setup lang=\"ts\">\r\nimport type { CommandListenerPriority } from 'lexical'\r\nimport {\r\n$getSelection,\r\n$isNodeSelection,\r\n $isRangeSelection,\r\n CAN_REDO_COMMAND,\r\n CAN_UNDO_COMMAND,\r\n REDO_COMMAND,\r\n UNDO_COMMAND,\r\n} from 'lexical'\r\nimport { $findMatchingParent,mergeRegister } from '@lexical/utils'\r\nimport { useLexicalComposer } from '../../core/composables'\r\nimport { onMounted, onUnmounted, ref } from 'vue'\r\nimport { DEVICE_VIEW_MODE } from \"../../core\"\r\nimport PreviewToolbar from \"./PreviewToolbar.vue\"\r\nimport FontStyleToolbar from \"./FontStyleTool.vue\"\r\nimport ContentStyleToolbar from \"./ContentStyleTool.vue\"\r\nimport { ToolbarExtendPlugins } from \"../../core\"\r\nimport { $isTextGridNode,$isImageTextGridNode,$isModuleGridNode } from \"../GridPlugin\"\r\nimport { $isModuleBlockNode } from \"../ModulePlugin\"\r\n// 参数\r\ndefineProps({\r\n js:{ type:String,default:`` },\r\n css:{ type:String,default:`` }\r\n})\r\n\r\nconst LowPriority: CommandListenerPriority = 1\r\n\r\nconst toolbarRef = ref<HTMLDivElement | null>(null)\r\nconst toolbarDisabled = ref(false)\r\nconst editor = useLexicalComposer()\r\n\r\nconst canUndo = ref(false)\r\nconst canRedo = ref(false)\r\n\r\nonMounted(() => {\r\n \r\n const unregisterMergeListener = mergeRegister(\r\n editor.registerCommand(\r\n CAN_UNDO_COMMAND,\r\n (payload: boolean) => {\r\n canUndo.value = payload\r\n return false\r\n },\r\n LowPriority,\r\n ),\r\n editor.registerCommand(\r\n CAN_REDO_COMMAND,\r\n (payload: boolean) => {\r\n canRedo.value = payload\r\n return false\r\n },\r\n LowPriority,\r\n ),\r\n editor.registerUpdateListener(({ editorState }) => {\r\n editorState.read(() => {\r\n\r\n const selection = $getSelection()\r\n const node = $isNodeSelection(selection) ? selection?.getNodes()[0] : null;\r\n\r\n if(node){\r\n if ($isModuleBlockNode(node) || $isTextGridNode(node) || $isImageTextGridNode(node) || $isModuleGridNode(node) ) {\r\n toolbarDisabled.value = true;\r\n }\r\n else{\r\n toolbarDisabled.value = false;\r\n }\r\n }\r\n else if ($isRangeSelection(selection)) {\r\n\r\n const anchorNode = selection.anchor.getNode()\r\n\r\n let element = anchorNode.getKey() === 'root'\r\n ? anchorNode\r\n : $findMatchingParent(anchorNode, (e) => {\r\n const parent = e.getParent()\r\n return parent !== null && $isTextGridNode(parent)\r\n });\r\n\r\n // 文本节点内 也不允许插入奇怪的东西\r\n if(element != null && $isTextGridNode(element.getParent())){\r\n toolbarDisabled.value = true;\r\n }\r\n else{\r\n toolbarDisabled.value = false;\r\n }\r\n }\r\n else{\r\n toolbarDisabled.value = false;\r\n }\r\n })\r\n })\r\n )\r\n\r\n onUnmounted(() => {\r\n ToolbarExtendPlugins.length = 0;\r\n unregisterMergeListener()\r\n })\r\n})\r\n\r\n\r\n</script>\r\n\r\n<template>\r\n <div ref=\"toolbarRef\" class=\"mk-doc-editor-toolbar\">\r\n <el-button-group>\r\n <el-button text :disabled=\"!canUndo\" @click=\"editor.dispatchCommand(UNDO_COMMAND, undefined)\">\r\n <MKSvgIcon iconClass=\"RefreshLeft\" /> \r\n </el-button>\r\n <el-button text :disabled=\"!canRedo\" @click=\"editor.dispatchCommand(REDO_COMMAND, undefined)\">\r\n <MKSvgIcon iconClass=\"RefreshRight\" /> \r\n </el-button>\r\n </el-button-group>\r\n <el-divider direction=\"vertical\" />\r\n <!-- 内容 -->\r\n <ContentStyleToolbar />\r\n <el-divider direction=\"vertical\" /> \r\n <!-- 文字样式 -->\r\n <FontStyleToolbar /> \r\n <el-divider direction=\"vertical\" />\r\n \r\n <el-button-group>\r\n <el-button text :class=\"`${DEVICE_VIEW_MODE=='pc' ? 'active' : ''}`\" @click=\"DEVICE_VIEW_MODE='pc'\">\r\n <MKSvgIcon iconClass=\"Platform\" /> \r\n </el-button>\r\n <el-button text :class=\"`${DEVICE_VIEW_MODE=='mobile' ? 'active' : ''}`\" @click=\"DEVICE_VIEW_MODE='mobile'\">\r\n <MKSvgIcon iconClass=\"Iphone\" /> \r\n </el-button>\r\n </el-button-group
|
|
1
|
+
{"version":3,"file":"index.vue.js","sources":["../../../../../../../src/components/basic/doc-editor/plugins/ToolbarPlugin/index.vue"],"sourcesContent":["<script setup lang=\"ts\">\r\nimport type { CommandListenerPriority } from 'lexical'\r\nimport {\r\n$getSelection,\r\n$isNodeSelection,\r\n $isRangeSelection,\r\n CAN_REDO_COMMAND,\r\n CAN_UNDO_COMMAND,\r\n REDO_COMMAND,\r\n UNDO_COMMAND,\r\n} from 'lexical'\r\nimport { $findMatchingParent,mergeRegister } from '@lexical/utils'\r\nimport { useLexicalComposer } from '../../core/composables'\r\nimport { onMounted, onUnmounted, ref } from 'vue'\r\nimport { DEVICE_VIEW_MODE } from \"../../core\"\r\nimport PreviewToolbar from \"./PreviewToolbar.vue\"\r\nimport FontStyleToolbar from \"./FontStyleTool.vue\"\r\nimport ContentStyleToolbar from \"./ContentStyleTool.vue\"\r\nimport { ToolbarExtendPlugins } from \"../../core\"\r\nimport { $isTextGridNode,$isImageTextGridNode,$isModuleGridNode } from \"../GridPlugin\"\r\nimport { $isModuleBlockNode } from \"../ModulePlugin\"\r\n// 参数\r\ndefineProps({\r\n js:{ type:String,default:`` },\r\n css:{ type:String,default:`` }\r\n})\r\n\r\nconst LowPriority: CommandListenerPriority = 1\r\n\r\nconst toolbarRef = ref<HTMLDivElement | null>(null)\r\nconst toolbarDisabled = ref(false)\r\nconst editor = useLexicalComposer()\r\n\r\nconst canUndo = ref(false)\r\nconst canRedo = ref(false)\r\n\r\nonMounted(() => {\r\n \r\n const unregisterMergeListener = mergeRegister(\r\n editor.registerCommand(\r\n CAN_UNDO_COMMAND,\r\n (payload: boolean) => {\r\n canUndo.value = payload\r\n return false\r\n },\r\n LowPriority,\r\n ),\r\n editor.registerCommand(\r\n CAN_REDO_COMMAND,\r\n (payload: boolean) => {\r\n canRedo.value = payload\r\n return false\r\n },\r\n LowPriority,\r\n ),\r\n editor.registerUpdateListener(({ editorState }) => {\r\n editorState.read(() => {\r\n\r\n const selection = $getSelection()\r\n const node = $isNodeSelection(selection) ? selection?.getNodes()[0] : null;\r\n\r\n if(node){\r\n if ($isModuleBlockNode(node) || $isTextGridNode(node) || $isImageTextGridNode(node) || $isModuleGridNode(node) ) {\r\n toolbarDisabled.value = true;\r\n }\r\n else{\r\n toolbarDisabled.value = false;\r\n }\r\n }\r\n else if ($isRangeSelection(selection)) {\r\n\r\n const anchorNode = selection.anchor.getNode()\r\n\r\n let element = anchorNode.getKey() === 'root'\r\n ? anchorNode\r\n : $findMatchingParent(anchorNode, (e) => {\r\n const parent = e.getParent()\r\n return parent !== null && $isTextGridNode(parent)\r\n });\r\n\r\n // 文本节点内 也不允许插入奇怪的东西\r\n if(element != null && $isTextGridNode(element.getParent())){\r\n toolbarDisabled.value = true;\r\n }\r\n else{\r\n toolbarDisabled.value = false;\r\n }\r\n }\r\n else{\r\n toolbarDisabled.value = false;\r\n }\r\n })\r\n })\r\n )\r\n\r\n onUnmounted(() => {\r\n ToolbarExtendPlugins.length = 0;\r\n unregisterMergeListener()\r\n })\r\n})\r\n\r\n\r\n</script>\r\n\r\n<template>\r\n <div ref=\"toolbarRef\" class=\"mk-doc-editor-toolbar\">\r\n <el-button-group>\r\n <el-button text :disabled=\"!canUndo\" @click=\"editor.dispatchCommand(UNDO_COMMAND, undefined)\">\r\n <MKSvgIcon iconClass=\"RefreshLeft\" /> \r\n </el-button>\r\n <el-button text :disabled=\"!canRedo\" @click=\"editor.dispatchCommand(REDO_COMMAND, undefined)\">\r\n <MKSvgIcon iconClass=\"RefreshRight\" /> \r\n </el-button>\r\n </el-button-group>\r\n <el-divider direction=\"vertical\" />\r\n <!-- 内容 -->\r\n <ContentStyleToolbar />\r\n <el-divider direction=\"vertical\" /> \r\n <!-- 文字样式 -->\r\n <FontStyleToolbar /> \r\n <!-- <el-divider direction=\"vertical\" />\r\n \r\n <el-button-group>\r\n <el-button text :class=\"`${DEVICE_VIEW_MODE=='pc' ? 'active' : ''}`\" @click=\"DEVICE_VIEW_MODE='pc'\">\r\n <MKSvgIcon iconClass=\"Platform\" /> \r\n </el-button>\r\n <el-button text :class=\"`${DEVICE_VIEW_MODE=='mobile' ? 'active' : ''}`\" @click=\"DEVICE_VIEW_MODE='mobile'\">\r\n <MKSvgIcon iconClass=\"Iphone\" /> \r\n </el-button>\r\n </el-button-group> -->\r\n <el-divider direction=\"vertical\" />\r\n <el-dropdown :disabled=\"toolbarDisabled\">\r\n <el-button text :disabled=\"toolbarDisabled\">\r\n <MKSvgIcon iconClass=\"Plus\" style=\"margin-right: 5px;\" /> 插入\r\n </el-button>\r\n <template #dropdown>\r\n <el-dropdown-menu>\r\n <el-dropdown-item v-for=\"item in ToolbarExtendPlugins\" :key=\"item\" @click=\"item.action()\">\r\n <MKSvgIcon :iconClass=\"item.icon\" /> \r\n {{item.text}}\r\n </el-dropdown-item>\r\n </el-dropdown-menu>\r\n </template>\r\n </el-dropdown>\r\n <el-divider direction=\"vertical\" />\r\n <el-button-group>\r\n <PreviewToolbar :js=\"js\" :css=\"css\" />\r\n </el-button-group>\r\n </div>\r\n</template>\r\n"],"names":["ref","useLexicalComposer","onMounted","mergeRegister","CAN_UNDO_COMMAND","CAN_REDO_COMMAND","$getSelection","$isNodeSelection","$isModuleBlockNode","$isTextGridNode","$isImageTextGridNode","$isModuleGridNode","$isRangeSelection","$findMatchingParent","onUnmounted","ToolbarExtendPlugins"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AA2BA,MAAM,cAAuC;;;;;;;;AAEvC,UAAA,aAAaA,QAA2B,IAAI;AAC5C,UAAA,kBAAkBA,QAAI,KAAK;AACjC,UAAM,SAASC,mBAAAA;AAET,UAAA,UAAUD,QAAI,KAAK;AACnB,UAAA,UAAUA,QAAI,KAAK;AAEzBE,QAAAA,UAAU,MAAM;AAEd,YAAM,0BAA0BC,MAAA;AAAA,QAC9B,OAAO;AAAA,UACLC,QAAA;AAAA,UACA,CAAC,YAAqB;AACpB,oBAAQ,QAAQ;AACT,mBAAA;AAAA,UACT;AAAA,UACA;AAAA,QACF;AAAA,QACA,OAAO;AAAA,UACLC,QAAA;AAAA,UACA,CAAC,YAAqB;AACpB,oBAAQ,QAAQ;AACT,mBAAA;AAAA,UACT;AAAA,UACA;AAAA,QACF;AAAA,QACA,OAAO,uBAAuB,CAAC,EAAE,kBAAkB;AACjD,sBAAY,KAAK,MAAM;AAErB,kBAAM,YAAYC,QAAAA;AACZ,kBAAA,OAAOC,yBAAiB,SAAS,IAAI,uCAAW,WAAW,KAAK;AAEtE,gBAAG,MAAK;AACF,kBAAAC,mCAAmB,IAAI,KAAKC,aAAAA,gBAAgB,IAAI,KAAKC,kBAAA,qBAAqB,IAAI,KAAKC,iCAAkB,IAAI,GAAI;AAC/G,gCAAgB,QAAQ;AAAA,cAAA,OAEtB;AACF,gCAAgB,QAAQ;AAAA,cAC1B;AAAA,YAAA,WAEOC,QAAAA,kBAAkB,SAAS,GAAG;AAE/B,oBAAA,aAAa,UAAU,OAAO,QAAQ;AAExC,kBAAA,UAAU,WAAW,aAAa,SAClC,aACAC,MAAA,oBAAoB,YAAY,CAAC,MAAM;AACjC,sBAAA,SAAS,EAAE;AACV,uBAAA,WAAW,QAAQJ,aAAA,gBAAgB,MAAM;AAAA,cAAA,CACjD;AAGH,kBAAG,WAAW,QAAQA,aAAAA,gBAAgB,QAAQ,UAAW,CAAA,GAAE;AACzD,gCAAgB,QAAQ;AAAA,cAAA,OAEtB;AACF,gCAAgB,QAAQ;AAAA,cAC1B;AAAA,YAAA,OAEE;AACF,8BAAgB,QAAQ;AAAA,YAC1B;AAAA,UAAA,CACD;AAAA,QAAA,CACF;AAAA,MAAA;AAGHK,UAAAA,YAAY,MAAM;AAChBC,cAAA,qBAAqB,SAAS;AACN;MAAA,CACzB;AAAA,IAAA,CACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -27,17 +27,31 @@ require("../../../../basic/doc-editor/index.js");
|
|
|
27
27
|
require("../../../../basic/copy-container/index.js");
|
|
28
28
|
require("../../../../basic/image-cropper/index.js");
|
|
29
29
|
require("../../../../basic/visual-page-editor/index.js");
|
|
30
|
+
const token = require("../../token.js");
|
|
30
31
|
const ColumnSort = /* @__PURE__ */ vue.defineComponent({
|
|
31
32
|
name: "MKColumnSort",
|
|
32
33
|
props: columnSortOptions.columnSortProps,
|
|
33
34
|
setup(props) {
|
|
35
|
+
const dataTableContext = vue.inject(token.DATA_TABLE_CONTEXT_KEY);
|
|
36
|
+
const handleMoveUp = () => {
|
|
37
|
+
dataTableContext.dataTable.moveUp(props.row);
|
|
38
|
+
};
|
|
39
|
+
const handleMoveDown = () => {
|
|
40
|
+
dataTableContext.dataTable.moveDown(props.row);
|
|
41
|
+
};
|
|
42
|
+
const handleToTop = () => {
|
|
43
|
+
dataTableContext.dataTable.toTop(props.row);
|
|
44
|
+
};
|
|
45
|
+
const handleToBottom = () => {
|
|
46
|
+
dataTableContext.dataTable.toBottom(props.row);
|
|
47
|
+
};
|
|
34
48
|
return () => {
|
|
35
49
|
let children = null;
|
|
36
50
|
if (props.drag) {
|
|
37
51
|
children = vue.createVNode("span", {
|
|
38
52
|
"class": "mk-column-sort__drag"
|
|
39
53
|
}, [vue.createVNode(index.MKSvgIcon, {
|
|
40
|
-
"iconClass": "
|
|
54
|
+
"iconClass": "Rank"
|
|
41
55
|
}, null)]);
|
|
42
56
|
} else {
|
|
43
57
|
children = vue.createVNode("span", {
|
|
@@ -47,28 +61,32 @@ const ColumnSort = /* @__PURE__ */ vue.defineComponent({
|
|
|
47
61
|
"placement": "top"
|
|
48
62
|
}, {
|
|
49
63
|
default: () => [vue.createVNode(index.MKSvgIcon, {
|
|
50
|
-
"iconClass": "
|
|
64
|
+
"iconClass": "Top",
|
|
65
|
+
"onClick": handleToTop
|
|
51
66
|
}, null)]
|
|
52
67
|
}), vue.createVNode(elementPlus.ElTooltip, {
|
|
53
68
|
"content": "上移",
|
|
54
69
|
"placement": "top"
|
|
55
70
|
}, {
|
|
56
71
|
default: () => [vue.createVNode(index.MKSvgIcon, {
|
|
57
|
-
"iconClass": "
|
|
72
|
+
"iconClass": "ArrowUpBold",
|
|
73
|
+
"onClick": handleMoveUp
|
|
58
74
|
}, null)]
|
|
59
75
|
}), vue.createVNode(elementPlus.ElTooltip, {
|
|
60
76
|
"content": "下移",
|
|
61
77
|
"placement": "top"
|
|
62
78
|
}, {
|
|
63
79
|
default: () => [vue.createVNode(index.MKSvgIcon, {
|
|
64
|
-
"iconClass": "
|
|
80
|
+
"iconClass": "ArrowDownBold",
|
|
81
|
+
"onClick": handleMoveDown
|
|
65
82
|
}, null)]
|
|
66
83
|
}), vue.createVNode(elementPlus.ElTooltip, {
|
|
67
84
|
"content": "置底",
|
|
68
85
|
"placement": "top"
|
|
69
86
|
}, {
|
|
70
87
|
default: () => [vue.createVNode(index.MKSvgIcon, {
|
|
71
|
-
"iconClass": "
|
|
88
|
+
"iconClass": "Bottom",
|
|
89
|
+
"onClick": handleToBottom
|
|
72
90
|
}, null)]
|
|
73
91
|
})]);
|
|
74
92
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"column-sort.js","sources":["../../../../../../../src/components/data-model/data-table/components/column-sort/column-sort.tsx"],"sourcesContent":["import { defineComponent } from \"vue\";\r\nimport { columnSortProps } from \"./column-sort-options\";\r\nimport { MKSvgIcon } from \"../../../../basic\";\r\nimport { ElTooltip } from \"element-plus\";\r\n\r\nexport default defineComponent({\r\n name: \"MKColumnSort\",\r\n props: columnSortProps,\r\n setup(props) {\r\n return () => {\r\n let children = null;\r\n\r\n if (props.drag) {\r\n children = (\r\n <span class=\"mk-column-sort__drag\">\r\n <MKSvgIcon iconClass=\"
|
|
1
|
+
{"version":3,"file":"column-sort.js","sources":["../../../../../../../src/components/data-model/data-table/components/column-sort/column-sort.tsx"],"sourcesContent":["import { defineComponent, inject } from \"vue\";\r\nimport { columnSortProps } from \"./column-sort-options\";\r\nimport { MKSvgIcon } from \"../../../../basic\";\r\nimport { ElTooltip } from \"element-plus\";\r\nimport { DATA_TABLE_CONTEXT_KEY } from \"../../token\";\r\n\r\nexport default defineComponent({\r\n name: \"MKColumnSort\",\r\n props: columnSortProps,\r\n setup(props) {\r\n const dataTableContext = inject(DATA_TABLE_CONTEXT_KEY)!;\r\n\r\n const handleMoveUp = () => {\r\n dataTableContext.dataTable.moveUp(props.row);\r\n };\r\n\r\n const handleMoveDown = () => {\r\n dataTableContext.dataTable.moveDown(props.row);\r\n };\r\n\r\n const handleToTop = () => {\r\n dataTableContext.dataTable.toTop(props.row);\r\n };\r\n\r\n const handleToBottom = () => {\r\n dataTableContext.dataTable.toBottom(props.row);\r\n };\r\n\r\n return () => {\r\n let children = null;\r\n\r\n if (props.drag) {\r\n children = (\r\n <span class=\"mk-column-sort__drag\">\r\n <MKSvgIcon iconClass=\"Rank\" />\r\n </span>\r\n );\r\n } else {\r\n children = (\r\n <span class=\"mk-column-sort__switch\">\r\n <ElTooltip content=\"置顶\" placement=\"top\">\r\n <MKSvgIcon iconClass=\"Top\" onClick={handleToTop} />\r\n </ElTooltip>\r\n <ElTooltip content=\"上移\" placement=\"top\">\r\n <MKSvgIcon iconClass=\"ArrowUpBold\" onClick={handleMoveUp} />\r\n </ElTooltip>\r\n <ElTooltip content=\"下移\" placement=\"top\">\r\n <MKSvgIcon iconClass=\"ArrowDownBold\" onClick={handleMoveDown} />\r\n </ElTooltip>\r\n <ElTooltip content=\"置底\" placement=\"top\">\r\n <MKSvgIcon iconClass=\"Bottom\" onClick={handleToBottom} />\r\n </ElTooltip>\r\n </span>\r\n );\r\n }\r\n\r\n return <span class=\"mk-column-sort\">{children}</span>;\r\n };\r\n },\r\n});\r\n"],"names":["defineComponent","name","props","columnSortProps","setup","dataTableContext","inject","DATA_TABLE_CONTEXT_KEY","handleMoveUp","dataTable","moveUp","row","handleMoveDown","moveDown","handleToTop","toTop","handleToBottom","toBottom","children","drag","_createVNode","MKSvgIcon","ElTooltip","default"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAMA,MAAeA,iDAAgB;AAAA,EAC7BC,MAAM;AAAA,EACNC,OAAOC,kBAAe;AAAA,EACtBC,MAAMF,OAAO;AACX,UAAMG,mBAAmBC,WAAOC,MAAAA,sBAAsB;AAEtD,UAAMC,eAAeA,MAAM;AACzBH,uBAAiBI,UAAUC,OAAOR,MAAMS,GAAG;AAAA;AAG7C,UAAMC,iBAAiBA,MAAM;AAC3BP,uBAAiBI,UAAUI,SAASX,MAAMS,GAAG;AAAA;AAG/C,UAAMG,cAAcA,MAAM;AACxBT,uBAAiBI,UAAUM,MAAMb,MAAMS,GAAG;AAAA;AAG5C,UAAMK,iBAAiBA,MAAM;AAC3BX,uBAAiBI,UAAUQ,SAASf,MAAMS,GAAG;AAAA;AAG/C,WAAO,MAAM;AACX,UAAIO,WAAW;AAEf,UAAIhB,MAAMiB,MAAM;AACdD,mBAAQE,IAAA,YAAA,QAAA;AAAA,UAAA,SAAA;AAAA,WAAAA,CAAAA,IAAA,YAAAC,iBAAA;AAAA,UAAA,aAAA;AAAA,WAIP,IAAA,CAAA,CAAA;AAAA,MACH,OAAO;AACLH,mBAAQE,IAAA,YAAA,QAAA;AAAA,UAAA,SAAA;AAAA,WAAAA,CAAAA,IAAA,YAAAE,uBAAA;AAAA,UAAA,WAAA;AAAA,UAAA,aAAA;AAAA,QAAA,GAAA;AAAA,UAAAC,SAAAA,MAAAH,CAAAA,IAAA,YAAAC,iBAAA;AAAA,YAAA,aAAA;AAAA,YAAA,WAGkCP;AAAAA,UAAW,GAAA,IAAA,CAAA;AAAA,SAAAM,GAAAA,IAAA,YAAAE,uBAAA;AAAA,UAAA,WAAA;AAAA,UAAA,aAAA;AAAA,QAAA,GAAA;AAAA,UAAAC,SAAAA,MAAAH,CAAAA,IAAA,YAAAC,iBAAA;AAAA,YAAA,aAAA;AAAA,YAAA,WAGHb;AAAAA,UAAY,GAAA,IAAA,CAAA;AAAA,SAAAY,GAAAA,IAAA,YAAAE,uBAAA;AAAA,UAAA,WAAA;AAAA,UAAA,aAAA;AAAA,QAAA,GAAA;AAAA,UAAAC,SAAAA,MAAAH,CAAAA,IAAA,YAAAC,iBAAA;AAAA,YAAA,aAAA;AAAA,YAAA,WAGVT;AAAAA,UAAc,GAAA,IAAA,CAAA;AAAA,SAAAQ,GAAAA,IAAA,YAAAE,uBAAA;AAAA,UAAA,WAAA;AAAA,UAAA,aAAA;AAAA,QAAA,GAAA;AAAA,UAAAC,SAAAA,MAAAH,CAAAA,IAAA,YAAAC,iBAAA;AAAA,YAAA,aAAA;AAAA,YAAA,WAGrBL;AAAAA,UAAc,GAAA,IAAA,CAAA;AAAA,QAG1D,CAAA,CAAA,CAAA;AAAA,MACH;AAEA,aAAAI,IAAAA,YAAA,QAAA;AAAA,QAAA,SAAA;AAAA,MAAA,GAAA,CAAqCF,QAAQ,CAAA;AAAA;EAEjD;AACF,CAAC;;"}
|
|
@@ -76,22 +76,10 @@ const Table = /* @__PURE__ */ vue.defineComponent({
|
|
|
76
76
|
if (oldIndx === newIndex) {
|
|
77
77
|
return;
|
|
78
78
|
}
|
|
79
|
-
const
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
for (const middleElement of middleElements) {
|
|
84
|
-
Number.parseInt(middleElement.sort);
|
|
85
|
-
}
|
|
86
|
-
[movedElement, ...middleElements];
|
|
87
|
-
} else {
|
|
88
|
-
const middleElements = vue.unref(dataTable).getList().splice(oldIndx, newIndex);
|
|
89
|
-
movedElement.sort = middleElements[middleElements.length - 1].sort;
|
|
90
|
-
for (const middleElement of middleElements) {
|
|
91
|
-
Number.parseInt(middleElement.sort);
|
|
92
|
-
}
|
|
93
|
-
[...middleElements, movedElement];
|
|
94
|
-
}
|
|
79
|
+
const sourceItem = vue.unref(dataTable).getList()[oldIndx];
|
|
80
|
+
let dropItem = vue.unref(dataTable).getList()[newIndex];
|
|
81
|
+
let sortAction = oldIndx > newIndex ? 1 : 2;
|
|
82
|
+
vue.unref(dataTable).moveTarget(sourceItem, dropItem, sortAction);
|
|
95
83
|
}
|
|
96
84
|
});
|
|
97
85
|
onCleanup(() => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"table.js","sources":["../../../../../../../src/components/data-model/data-table/views/table/table.tsx"],"sourcesContent":["import {\r\n computed,\r\n defineComponent,\r\n onMounted,\r\n ref,\r\n Ref,\r\n unref,\r\n watch,\r\n nextTick,\r\n inject,\r\n} from \"vue\";\r\nimport { Column, ElEmpty, ElTable, ElTableColumn } from \"element-plus\";\r\nimport { isEqual } from \"lodash-es\";\r\nimport MKDataTableColumn from \"../../data-table-column\";\r\nimport { tableProps } from \"./table-options\";\r\nimport { DATA_TABLE_CONTEXT_KEY } from \"../../token\";\r\nimport Sortable from \"sortablejs\";\r\nimport { OrderType } from \"@maketribe/request\";\r\n\r\nexport default defineComponent({\r\n name: \"MKTable\",\r\n props: tableProps,\r\n setup(props, { slots }) {\r\n const treeProps = computed(() => {\r\n return props.treeProps;\r\n });\r\n\r\n const dataTableContext = inject(DATA_TABLE_CONTEXT_KEY);\r\n\r\n const dataTableEl = computed(() => dataTableContext?.el ?? null);\r\n\r\n const tableEl: Ref<InstanceType<typeof ElTable> | null> = ref(null);\r\n\r\n const dataTable = computed(\r\n () => props.dataTable ?? dataTableContext!.dataTable\r\n );\r\n\r\n const rowKey = computed(() => props.rowKey || unref(dataTable).primaryKey);\r\n\r\n const list = computed(() => props.getList(unref(dataTable)));\r\n\r\n const selectionColumn = computed(() => unref(dataTable).selectionColumn);\r\n\r\n type SortChangeEvent = { column: Column; prop: string; order: string };\r\n\r\n const handleSortChange = ({ column, prop, order }: SortChangeEvent) => {\r\n let orderType: OrderType | null = null;\r\n\r\n if (order === \"descending\") {\r\n orderType = OrderType.DESC;\r\n } else if (order === \"ascending\") {\r\n orderType = OrderType.ASC;\r\n }\r\n\r\n unref(dataTable).sorter.setColumnSort(prop, orderType);\r\n };\r\n\r\n let allowChangeSelection = true;\r\n\r\n const handleSelectionChange = (items: any[]) => {\r\n if (allowChangeSelection) {\r\n unref(dataTable).setSelection(\r\n items.map((item) => item[unref(dataTable).primaryKey])\r\n );\r\n }\r\n };\r\n\r\n onMounted(() => {\r\n const _tableEl = unref(tableEl)!;\r\n\r\n watch(list, (list, _, onCleanup) => {\r\n onCleanup(\r\n watch(\r\n computed(() => unref(dataTable).getSelection()),\r\n async (selections) => {\r\n const primaryKey = unref(dataTable).primaryKey;\r\n\r\n const tableSelections = _tableEl\r\n .getSelectionRows()\r\n .map((item: any) => item[primaryKey])\r\n .sort();\r\n\r\n if (isEqual(selections, tableSelections)) {\r\n return;\r\n }\r\n\r\n allowChangeSelection = false;\r\n\r\n _tableEl.clearSelection();\r\n\r\n await nextTick();\r\n\r\n const selectedRows = list.filter((item: any) =>\r\n selections.includes(item[primaryKey])\r\n );\r\n\r\n for (var item of selectedRows) {\r\n _tableEl.toggleRowSelection(item, true);\r\n }\r\n\r\n allowChangeSelection = true;\r\n },\r\n {\r\n immediate: true,\r\n }\r\n )\r\n );\r\n });\r\n\r\n watch(\r\n dataTableEl,\r\n (el, _, onCleanup) => {\r\n if (!el) {\r\n return;\r\n }\r\n var sortableInstance = Sortable.create(el.querySelector(\"tbody\")!, {\r\n handle: \".mk-column-sort__drag\",\r\n animation: 300,\r\n onEnd: (event) => {\r\n const newIndex = event.newIndex!;\r\n const oldIndx = event.oldIndex!;\r\n\r\n if (oldIndx === newIndex) {\r\n return;\r\n }\r\n\r\n const movedElement = unref(dataTable).getList()[oldIndx];\r\n\r\n var updateRecords: any[] = [];\r\n\r\n if (oldIndx > newIndex) {\r\n // 后面元素移到了中间元素前 中间元素需要增加排序值\r\n const middleElements = unref(dataTable)\r\n .getList()\r\n .splice(newIndex, oldIndx);\r\n\r\n movedElement.sort = middleElements[0].sort;\r\n\r\n for (const middleElement of middleElements) {\r\n let sort = Number.parseInt(middleElement.sort);\r\n sort = Number.isNaN(sort) ? 0 : sort;\r\n sort += 1;\r\n }\r\n\r\n updateRecords = [movedElement, ...middleElements];\r\n } else {\r\n // 前面元素移动到了中间元素后 中间元素需要减少排序值\r\n const middleElements = unref(dataTable)\r\n .getList()\r\n .splice(oldIndx, newIndex);\r\n\r\n movedElement.sort =\r\n middleElements[middleElements.length - 1].sort;\r\n\r\n for (const middleElement of middleElements) {\r\n let sort = Number.parseInt(middleElement.sort);\r\n sort = Number.isNaN(sort) ? 0 : sort;\r\n sort -= 1;\r\n }\r\n\r\n updateRecords = [...middleElements, movedElement];\r\n }\r\n },\r\n });\r\n\r\n onCleanup(() => {\r\n sortableInstance.destroy();\r\n });\r\n },\r\n { immediate: true }\r\n );\r\n });\r\n\r\n return () => {\r\n const columns = unref(dataTable)\r\n .getColumns()\r\n .filter((column) => column.visible && column.name)\r\n .map((column) => {\r\n const columnProps: Record<string, any> = {\r\n prop: column.name,\r\n label: column.label,\r\n width: column.width,\r\n minWidth: column.minWidth,\r\n fixed: column.fixed,\r\n align: column.align || \"center\",\r\n reserveSelection: true,\r\n type: column.type || \"default\",\r\n sortable: column.sortable,\r\n };\r\n\r\n if (!column.visible) {\r\n return null;\r\n }\r\n\r\n return (\r\n slots[`col-${column.name}`]?.() ?? (\r\n <ElTableColumn\r\n {...columnProps}\r\n v-slots={{\r\n default: (scope: {\r\n $index: number;\r\n row: any;\r\n column: any;\r\n }) => {\r\n let children = slots[`col-${column.name}-content`]?.({\r\n $index: scope.$index,\r\n row: scope.row,\r\n column: column,\r\n dataTable: unref(dataTable),\r\n });\r\n\r\n if (children) {\r\n return children;\r\n }\r\n\r\n return (\r\n <MKDataTableColumn\r\n column={column}\r\n row={scope.row}\r\n index={scope.$index}\r\n />\r\n );\r\n },\r\n }}\r\n />\r\n )\r\n );\r\n });\r\n\r\n return (\r\n <ElTable\r\n data={unref(list)}\r\n row-key={unref(rowKey)}\r\n onSort-change={handleSortChange}\r\n ref={(el: any) =>\r\n (tableEl.value = el as InstanceType<typeof ElTable>)\r\n }\r\n show-overflow-tooltip\r\n border\r\n stripe\r\n lazy={props.lazy}\r\n load={props.load as any}\r\n v-slots={{ empty: () => slots.empty?.() || <ElEmpty /> }}\r\n onSelection-change={handleSelectionChange}\r\n defaultExpandAll={props.defaultExpandAll}\r\n >\r\n {unref(selectionColumn).visible ? (\r\n <ElTableColumn\r\n type={unref(selectionColumn).type ?? \"selection\"}\r\n width={unref(selectionColumn).width}\r\n fixed={unref(selectionColumn).fixed}\r\n />\r\n ) : null}\r\n {columns}\r\n </ElTable>\r\n );\r\n };\r\n },\r\n});\r\n"],"names":["defineComponent","name","props","tableProps","setup","slots","computed","treeProps","dataTableContext","inject","DATA_TABLE_CONTEXT_KEY","dataTableEl","el","tableEl","ref","dataTable","rowKey","unref","primaryKey","list","getList","selectionColumn","handleSortChange","column","prop","order","orderType","OrderType","DESC","ASC","sorter","setColumnSort","allowChangeSelection","handleSelectionChange","items","setSelection","map","item","onMounted","_tableEl","watch","_","onCleanup","getSelection","selections","tableSelections","getSelectionRows","sort","isEqual","clearSelection","nextTick","selectedRows","filter","includes","toggleRowSelection","immediate","sortableInstance","Sortable","create","querySelector","handle","animation","onEnd","event","newIndex","oldIndx","oldIndex","movedElement","middleElements","splice","middleElement","Number","parseInt","length","destroy","columns","getColumns","visible","columnProps","label","width","minWidth","fixed","align","reserveSelection","type","sortable","_createVNode","ElTableColumn","default","scope","children","$index","row","MKDataTableColumn","ElTable","value","lazy","load","defaultExpandAll","empty","ElEmpty"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"table.js","sources":["../../../../../../../src/components/data-model/data-table/views/table/table.tsx"],"sourcesContent":["import {\r\n computed,\r\n defineComponent,\r\n onMounted,\r\n ref,\r\n Ref,\r\n unref,\r\n watch,\r\n nextTick,\r\n inject,\r\n} from \"vue\";\r\nimport { Column, ElEmpty, ElTable, ElTableColumn } from \"element-plus\";\r\nimport { isEqual } from \"lodash-es\";\r\nimport MKDataTableColumn from \"../../data-table-column\";\r\nimport { tableProps } from \"./table-options\";\r\nimport { DATA_TABLE_CONTEXT_KEY } from \"../../token\";\r\nimport Sortable from \"sortablejs\";\r\nimport { OrderType } from \"@maketribe/request\";\r\n\r\nexport default defineComponent({\r\n name: \"MKTable\",\r\n props: tableProps,\r\n setup(props, { slots }) {\r\n const treeProps = computed(() => {\r\n return props.treeProps;\r\n });\r\n\r\n const dataTableContext = inject(DATA_TABLE_CONTEXT_KEY);\r\n\r\n const dataTableEl = computed(() => dataTableContext?.el ?? null);\r\n\r\n const tableEl: Ref<InstanceType<typeof ElTable> | null> = ref(null);\r\n\r\n const dataTable = computed(\r\n () => props.dataTable ?? dataTableContext!.dataTable\r\n );\r\n\r\n const rowKey = computed(() => props.rowKey || unref(dataTable).primaryKey);\r\n\r\n const list = computed(() => props.getList(unref(dataTable)));\r\n\r\n const selectionColumn = computed(() => unref(dataTable).selectionColumn);\r\n\r\n type SortChangeEvent = { column: Column; prop: string; order: string };\r\n\r\n const handleSortChange = ({ column, prop, order }: SortChangeEvent) => {\r\n let orderType: OrderType | null = null;\r\n\r\n if (order === \"descending\") {\r\n orderType = OrderType.DESC;\r\n } else if (order === \"ascending\") {\r\n orderType = OrderType.ASC;\r\n }\r\n\r\n unref(dataTable).sorter.setColumnSort(prop, orderType);\r\n };\r\n\r\n let allowChangeSelection = true;\r\n\r\n const handleSelectionChange = (items: any[]) => {\r\n if (allowChangeSelection) {\r\n unref(dataTable).setSelection(\r\n items.map((item) => item[unref(dataTable).primaryKey])\r\n );\r\n }\r\n };\r\n\r\n onMounted(() => {\r\n const _tableEl = unref(tableEl)!;\r\n\r\n watch(list, (list, _, onCleanup) => {\r\n onCleanup(\r\n watch(\r\n computed(() => unref(dataTable).getSelection()),\r\n async (selections) => {\r\n const primaryKey = unref(dataTable).primaryKey;\r\n\r\n const tableSelections = _tableEl\r\n .getSelectionRows()\r\n .map((item: any) => item[primaryKey])\r\n .sort();\r\n\r\n if (isEqual(selections, tableSelections)) {\r\n return;\r\n }\r\n\r\n allowChangeSelection = false;\r\n\r\n _tableEl.clearSelection();\r\n\r\n await nextTick();\r\n\r\n const selectedRows = list.filter((item: any) =>\r\n selections.includes(item[primaryKey])\r\n );\r\n\r\n for (var item of selectedRows) {\r\n _tableEl.toggleRowSelection(item, true);\r\n }\r\n\r\n allowChangeSelection = true;\r\n },\r\n {\r\n immediate: true,\r\n }\r\n )\r\n );\r\n });\r\n\r\n watch(\r\n dataTableEl,\r\n (el, _, onCleanup) => {\r\n if (!el) {\r\n return;\r\n }\r\n var sortableInstance = Sortable.create(el.querySelector(\"tbody\")!, {\r\n handle: \".mk-column-sort__drag\",\r\n animation: 300,\r\n onEnd: (event) => {\r\n const newIndex = event.newIndex!;\r\n const oldIndx = event.oldIndex!;\r\n\r\n if (oldIndx === newIndex) {\r\n return;\r\n }\r\n\r\n const sourceItem = unref(dataTable).getList()[oldIndx];\r\n let dropItem = unref(dataTable).getList()[newIndex];\r\n let sortAction = oldIndx > newIndex ? 1 : 2;\r\n\r\n unref(dataTable).moveTarget(sourceItem, dropItem, sortAction);\r\n\r\n },\r\n });\r\n\r\n onCleanup(() => {\r\n sortableInstance.destroy();\r\n });\r\n },\r\n { immediate: true }\r\n );\r\n });\r\n\r\n return () => {\r\n const columns = unref(dataTable)\r\n .getColumns()\r\n .filter((column) => column.visible && column.name)\r\n .map((column) => {\r\n const columnProps: Record<string, any> = {\r\n prop: column.name,\r\n label: column.label,\r\n width: column.width,\r\n minWidth: column.minWidth,\r\n fixed: column.fixed,\r\n align: column.align || \"center\",\r\n reserveSelection: true,\r\n type: column.type || \"default\",\r\n sortable: column.sortable,\r\n };\r\n\r\n if (!column.visible) {\r\n return null;\r\n }\r\n\r\n return (\r\n slots[`col-${column.name}`]?.() ?? (\r\n <ElTableColumn\r\n {...columnProps}\r\n v-slots={{\r\n default: (scope: {\r\n $index: number;\r\n row: any;\r\n column: any;\r\n }) => {\r\n let children = slots[`col-${column.name}-content`]?.({\r\n $index: scope.$index,\r\n row: scope.row,\r\n column: column,\r\n dataTable: unref(dataTable),\r\n });\r\n\r\n if (children) {\r\n return children;\r\n }\r\n\r\n return (\r\n <MKDataTableColumn\r\n column={column}\r\n row={scope.row}\r\n index={scope.$index}\r\n />\r\n );\r\n },\r\n }}\r\n />\r\n )\r\n );\r\n });\r\n\r\n return (\r\n <ElTable\r\n data={unref(list)}\r\n row-key={unref(rowKey)}\r\n onSort-change={handleSortChange}\r\n ref={(el: any) =>\r\n (tableEl.value = el as InstanceType<typeof ElTable>)\r\n }\r\n show-overflow-tooltip\r\n border\r\n stripe\r\n lazy={props.lazy}\r\n load={props.load as any}\r\n v-slots={{ empty: () => slots.empty?.() || <ElEmpty /> }}\r\n onSelection-change={handleSelectionChange}\r\n defaultExpandAll={props.defaultExpandAll}\r\n >\r\n {unref(selectionColumn).visible ? (\r\n <ElTableColumn\r\n type={unref(selectionColumn).type ?? \"selection\"}\r\n width={unref(selectionColumn).width}\r\n fixed={unref(selectionColumn).fixed}\r\n />\r\n ) : null}\r\n {columns}\r\n </ElTable>\r\n );\r\n };\r\n },\r\n});\r\n"],"names":["defineComponent","name","props","tableProps","setup","slots","computed","treeProps","dataTableContext","inject","DATA_TABLE_CONTEXT_KEY","dataTableEl","el","tableEl","ref","dataTable","rowKey","unref","primaryKey","list","getList","selectionColumn","handleSortChange","column","prop","order","orderType","OrderType","DESC","ASC","sorter","setColumnSort","allowChangeSelection","handleSelectionChange","items","setSelection","map","item","onMounted","_tableEl","watch","_","onCleanup","getSelection","selections","tableSelections","getSelectionRows","sort","isEqual","clearSelection","nextTick","selectedRows","filter","includes","toggleRowSelection","immediate","sortableInstance","Sortable","create","querySelector","handle","animation","onEnd","event","newIndex","oldIndx","oldIndex","sourceItem","dropItem","sortAction","moveTarget","destroy","columns","getColumns","visible","columnProps","label","width","minWidth","fixed","align","reserveSelection","type","sortable","_createVNode","ElTableColumn","default","scope","children","$index","row","MKDataTableColumn","ElTable","value","lazy","load","defaultExpandAll","empty","ElEmpty"],"mappings":"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"}
|
|
@@ -182,7 +182,7 @@ class DialogerImpl extends dm.SkeletonDialoger {
|
|
|
182
182
|
},
|
|
183
183
|
body: () => {
|
|
184
184
|
return vue.createVNode(elementPlus.ElScrollbar, {
|
|
185
|
-
"max-height": "
|
|
185
|
+
"max-height": "550px"
|
|
186
186
|
}, {
|
|
187
187
|
default: () => [vue.createVNode(index$1.MKDataForm, {
|
|
188
188
|
"dataForm": dataForm
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DialogerImpl.js","sources":["../../../src/message-impl/DialogerImpl.tsx"],"sourcesContent":["import {\r\n DataForm,\r\n DataFormDialogOptions,\r\n DataTable,\r\n DataTableSelectDialogResult,\r\n DialogInstance,\r\n IDialogMessage,\r\n IDialogRenderOptions,\r\n Messager,\r\n SkeletonDialoger,\r\n TableActionColumn,\r\n} from \"@maketribe/dm\";\r\nimport { Event } from \"@maketribe/utils\";\r\nimport { ElButton, ElDrawer, ElMessageBox, ElScrollbar } from \"element-plus\";\r\nimport { isFunction } from \"lodash-es\";\r\nimport { MKDataForm, MKDataTable, MKForm } from \"../components\";\r\nimport { Fragment, reactive } from \"vue\";\r\nimport { I18n } from \"@maketribe/locale\";\r\n\r\nlet uid = 0;\r\n\r\nexport class DialogerImpl extends SkeletonDialoger {\r\n dialogInstanceCreateEvent: Event<DialogInstance> = new Event();\r\n\r\n async prompt(options: IDialogMessage): Promise<string> {\r\n const promptResult = await ElMessageBox.prompt(\r\n options.message,\r\n options.title,\r\n options\r\n );\r\n\r\n return promptResult.value;\r\n }\r\n\r\n async confirm(options: IDialogMessage): Promise<boolean> {\r\n try {\r\n await ElMessageBox.confirm(options.message, options.title, options);\r\n return true;\r\n } catch (e) {\r\n return false;\r\n }\r\n }\r\n\r\n async alert(options: IDialogMessage): Promise<void> {\r\n await ElMessageBox.alert(options.message, options.title, options);\r\n }\r\n\r\n customRender(options: IDialogRenderOptions): DialogInstance {\r\n let visible = true;\r\n\r\n const dialogInstance: DialogInstance = {\r\n class: \"\",\r\n ...options,\r\n id: uid++,\r\n get visible() {\r\n return visible;\r\n },\r\n set visible(v) {\r\n visible = v;\r\n dialogInstance.visibleChangeEvent.emit(visible);\r\n },\r\n visibleChangeEvent: new Event(),\r\n destroyEvent: new Event(),\r\n destroy: () => {\r\n dialogInstance.visible = false;\r\n dialogInstance.destroyEvent.emit();\r\n },\r\n };\r\n this.dialogInstanceCreateEvent.emit(dialogInstance);\r\n\r\n return dialogInstance;\r\n }\r\n\r\n async custom(options: IDialogRenderOptions): Promise<boolean> {\r\n return new Promise<boolean>((resolve) => {\r\n const dialogInstance = this.customRender({\r\n ...options,\r\n onConfirm: async () => {\r\n if (\r\n isFunction(options.onConfirm)\r\n ? (await options.onConfirm()) === false\r\n : false\r\n ) {\r\n return false;\r\n }\r\n\r\n dialogInstance.destroy();\r\n\r\n resolve(true);\r\n },\r\n onCancel: async () => {\r\n if (\r\n isFunction(options.onCancel)\r\n ? (await options.onCancel()) === false\r\n : false\r\n ) {\r\n return false;\r\n }\r\n\r\n dialogInstance.destroy();\r\n\r\n resolve(false);\r\n },\r\n });\r\n });\r\n }\r\n\r\n async dataTableSelectDialog(\r\n dataTable: DataTable\r\n ): Promise<DataTableSelectDialogResult> {\r\n dataTable = reactive(dataTable) as DataTable;\r\n\r\n dataTable.afterInitdEvent.once(() => {\r\n // 过滤掉操作列\r\n const columns = dataTable\r\n .getColumns()\r\n .filter((column) => column.name !== TableActionColumn.actionColumnName);\r\n dataTable.setColumns(columns);\r\n });\r\n\r\n return new Promise((resolve) => {\r\n const handleConfirm = () => {\r\n resolve({ isConfirm: true, selections: dataTable.getSelection() });\r\n\r\n dataTable.setList([]);\r\n dataTable.setSelection([]);\r\n\r\n dialogInstance.destroy();\r\n };\r\n\r\n const handleCancel = () => {\r\n resolve({ isConfirm: false, selections: [] });\r\n\r\n dialogInstance.destroy();\r\n };\r\n\r\n const dialogInstance = this.customRender({\r\n class: \"mk-data-table-select-dialog\",\r\n width: \"80%\",\r\n body: () => {\r\n return (\r\n <div class=\"mk-data-table-select-dialog__main\">\r\n <MKDataTable dataTable={dataTable} selection />\r\n </div>\r\n );\r\n },\r\n footer: () => {\r\n return (\r\n <Fragment>\r\n <ElButton\r\n type=\"primary\"\r\n onClick={handleConfirm}\r\n disabled={dataTable.getSelection().length === 0}\r\n >\r\n 确定\r\n </ElButton>\r\n <ElButton onClick={handleCancel}>取消</ElButton>\r\n </Fragment>\r\n );\r\n },\r\n });\r\n });\r\n }\r\n\r\n async dataFormDialog(\r\n dataFormOptions: DataFormDialogOptions\r\n ): Promise<DialogInstance> {\r\n return new Promise((resolve) => {\r\n const dataForm = reactive(dataFormOptions.dataForm) as DataForm;\r\n\r\n let title = \"\";\r\n\r\n if (dataFormOptions.customDataFormStatus !== true) {\r\n if (dataFormOptions.recId) {\r\n dataForm.editRecord(dataFormOptions.recId);\r\n } else {\r\n dataForm.addRecord();\r\n }\r\n\r\n title = dataFormOptions.recId ? \"编辑\" : \"新增\";\r\n }\r\n\r\n const dialogInstance = this.customRender({\r\n title: dataFormOptions.title ?? title,\r\n onClose: () => {\r\n dataForm.cancel();\r\n\r\n dialogInstance.destroy();\r\n },\r\n body: () => {\r\n return (\r\n <ElScrollbar max-height=\"600px\">\r\n <MKDataForm dataForm={dataForm}>\r\n <MKForm dataForm={dataForm} />\r\n </MKDataForm>\r\n </ElScrollbar>\r\n );\r\n },\r\n\r\n footer: () => {\r\n return (\r\n <Fragment>\r\n <ElButton\r\n type=\"primary\"\r\n disabled={!dataForm.isChanged}\r\n loading={!dataForm.allowSubmit}\r\n onClick={async () => {\r\n if (!(await dataForm.validate())) {\r\n return;\r\n }\r\n\r\n if (await dataForm.simpleSubmit()) {\r\n dialogInstance.destroy();\r\n }\r\n }}\r\n >\r\n {I18n.instance.translate(\"mk.dataForm.saveButton\")}\r\n </ElButton>\r\n <ElButton\r\n onClick={() => {\r\n dataForm.cancel();\r\n\r\n dialogInstance.destroy();\r\n }}\r\n >\r\n {I18n.instance.translate(\"mk.dataForm.cancelButton\")}\r\n </ElButton>\r\n </Fragment>\r\n );\r\n },\r\n });\r\n\r\n resolve(dialogInstance);\r\n });\r\n }\r\n}\r\n"],"names":["_isSlot","s","Object","prototype","toString","call","_isVNode","uid","DialogerImpl","SkeletonDialoger","dialogInstanceCreateEvent","Event","prompt","options","promptResult","ElMessageBox","message","title","value","confirm","e","alert","customRender","visible","dialogInstance","class","id","v","visibleChangeEvent","emit","destroyEvent","destroy","custom","Promise","resolve","onConfirm","isFunction","onCancel","dataTableSelectDialog","dataTable","reactive","afterInitdEvent","once","columns","getColumns","filter","column","name","TableActionColumn","actionColumnName","setColumns","handleConfirm","isConfirm","selections","getSelection","setList","setSelection","handleCancel","width","body","_createVNode","MKDataTable","footer","_Fragment","ElButton","length","default","_createTextVNode","dataFormDialog","dataFormOptions","dataForm","customDataFormStatus","recId","editRecord","addRecord","onClose","cancel","ElScrollbar","MKDataForm","MKForm","_slot","_slot2","isChanged","allowSubmit","validate","simpleSubmit","I18n","instance","translate","onClick"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"DialogerImpl.js","sources":["../../../src/message-impl/DialogerImpl.tsx"],"sourcesContent":["import {\r\n DataForm,\r\n DataFormDialogOptions,\r\n DataTable,\r\n DataTableSelectDialogResult,\r\n DialogInstance,\r\n IDialogMessage,\r\n IDialogRenderOptions,\r\n Messager,\r\n SkeletonDialoger,\r\n TableActionColumn,\r\n} from \"@maketribe/dm\";\r\nimport { Event } from \"@maketribe/utils\";\r\nimport { ElButton, ElDrawer, ElMessageBox, ElScrollbar } from \"element-plus\";\r\nimport { isFunction } from \"lodash-es\";\r\nimport { MKDataForm, MKDataTable, MKForm } from \"../components\";\r\nimport { Fragment, reactive } from \"vue\";\r\nimport { I18n } from \"@maketribe/locale\";\r\n\r\nlet uid = 0;\r\n\r\nexport class DialogerImpl extends SkeletonDialoger {\r\n dialogInstanceCreateEvent: Event<DialogInstance> = new Event();\r\n\r\n async prompt(options: IDialogMessage): Promise<string> {\r\n const promptResult = await ElMessageBox.prompt(\r\n options.message,\r\n options.title,\r\n options\r\n );\r\n\r\n return promptResult.value;\r\n }\r\n\r\n async confirm(options: IDialogMessage): Promise<boolean> {\r\n try {\r\n await ElMessageBox.confirm(options.message, options.title, options);\r\n return true;\r\n } catch (e) {\r\n return false;\r\n }\r\n }\r\n\r\n async alert(options: IDialogMessage): Promise<void> {\r\n await ElMessageBox.alert(options.message, options.title, options);\r\n }\r\n\r\n customRender(options: IDialogRenderOptions): DialogInstance {\r\n let visible = true;\r\n\r\n const dialogInstance: DialogInstance = {\r\n class: \"\",\r\n ...options,\r\n id: uid++,\r\n get visible() {\r\n return visible;\r\n },\r\n set visible(v) {\r\n visible = v;\r\n dialogInstance.visibleChangeEvent.emit(visible);\r\n },\r\n visibleChangeEvent: new Event(),\r\n destroyEvent: new Event(),\r\n destroy: () => {\r\n dialogInstance.visible = false;\r\n dialogInstance.destroyEvent.emit();\r\n },\r\n };\r\n this.dialogInstanceCreateEvent.emit(dialogInstance);\r\n\r\n return dialogInstance;\r\n }\r\n\r\n async custom(options: IDialogRenderOptions): Promise<boolean> {\r\n return new Promise<boolean>((resolve) => {\r\n const dialogInstance = this.customRender({\r\n ...options,\r\n onConfirm: async () => {\r\n if (\r\n isFunction(options.onConfirm)\r\n ? (await options.onConfirm()) === false\r\n : false\r\n ) {\r\n return false;\r\n }\r\n\r\n dialogInstance.destroy();\r\n\r\n resolve(true);\r\n },\r\n onCancel: async () => {\r\n if (\r\n isFunction(options.onCancel)\r\n ? (await options.onCancel()) === false\r\n : false\r\n ) {\r\n return false;\r\n }\r\n\r\n dialogInstance.destroy();\r\n\r\n resolve(false);\r\n },\r\n });\r\n });\r\n }\r\n\r\n async dataTableSelectDialog(\r\n dataTable: DataTable\r\n ): Promise<DataTableSelectDialogResult> {\r\n dataTable = reactive(dataTable) as DataTable;\r\n\r\n dataTable.afterInitdEvent.once(() => {\r\n // 过滤掉操作列\r\n const columns = dataTable\r\n .getColumns()\r\n .filter((column) => column.name !== TableActionColumn.actionColumnName);\r\n dataTable.setColumns(columns);\r\n });\r\n\r\n return new Promise((resolve) => {\r\n const handleConfirm = () => {\r\n resolve({ isConfirm: true, selections: dataTable.getSelection() });\r\n\r\n dataTable.setList([]);\r\n dataTable.setSelection([]);\r\n\r\n dialogInstance.destroy();\r\n };\r\n\r\n const handleCancel = () => {\r\n resolve({ isConfirm: false, selections: [] });\r\n\r\n dialogInstance.destroy();\r\n };\r\n\r\n const dialogInstance = this.customRender({\r\n class: \"mk-data-table-select-dialog\",\r\n width: \"80%\",\r\n body: () => {\r\n return (\r\n <div class=\"mk-data-table-select-dialog__main\">\r\n <MKDataTable dataTable={dataTable} selection />\r\n </div>\r\n );\r\n },\r\n footer: () => {\r\n return (\r\n <Fragment>\r\n <ElButton\r\n type=\"primary\"\r\n onClick={handleConfirm}\r\n disabled={dataTable.getSelection().length === 0}\r\n >\r\n 确定\r\n </ElButton>\r\n <ElButton onClick={handleCancel}>取消</ElButton>\r\n </Fragment>\r\n );\r\n },\r\n });\r\n });\r\n }\r\n\r\n async dataFormDialog(\r\n dataFormOptions: DataFormDialogOptions\r\n ): Promise<DialogInstance> {\r\n return new Promise((resolve) => {\r\n const dataForm = reactive(dataFormOptions.dataForm) as DataForm;\r\n\r\n let title = \"\";\r\n\r\n if (dataFormOptions.customDataFormStatus !== true) {\r\n if (dataFormOptions.recId) {\r\n dataForm.editRecord(dataFormOptions.recId);\r\n } else {\r\n dataForm.addRecord();\r\n }\r\n\r\n title = dataFormOptions.recId ? \"编辑\" : \"新增\";\r\n }\r\n\r\n const dialogInstance = this.customRender({\r\n title: dataFormOptions.title ?? title,\r\n onClose: () => {\r\n dataForm.cancel();\r\n\r\n dialogInstance.destroy();\r\n },\r\n body: () => {\r\n return (\r\n <ElScrollbar max-height=\"550px\">\r\n <MKDataForm dataForm={dataForm}>\r\n <MKForm dataForm={dataForm} />\r\n </MKDataForm>\r\n </ElScrollbar>\r\n );\r\n },\r\n\r\n footer: () => {\r\n return (\r\n <Fragment>\r\n <ElButton\r\n type=\"primary\"\r\n disabled={!dataForm.isChanged}\r\n loading={!dataForm.allowSubmit}\r\n onClick={async () => {\r\n if (!(await dataForm.validate())) {\r\n return;\r\n }\r\n\r\n if (await dataForm.simpleSubmit()) {\r\n dialogInstance.destroy();\r\n }\r\n }}\r\n >\r\n {I18n.instance.translate(\"mk.dataForm.saveButton\")}\r\n </ElButton>\r\n <ElButton\r\n onClick={() => {\r\n dataForm.cancel();\r\n\r\n dialogInstance.destroy();\r\n }}\r\n >\r\n {I18n.instance.translate(\"mk.dataForm.cancelButton\")}\r\n </ElButton>\r\n </Fragment>\r\n );\r\n },\r\n });\r\n\r\n resolve(dialogInstance);\r\n });\r\n }\r\n}\r\n"],"names":["_isSlot","s","Object","prototype","toString","call","_isVNode","uid","DialogerImpl","SkeletonDialoger","dialogInstanceCreateEvent","Event","prompt","options","promptResult","ElMessageBox","message","title","value","confirm","e","alert","customRender","visible","dialogInstance","class","id","v","visibleChangeEvent","emit","destroyEvent","destroy","custom","Promise","resolve","onConfirm","isFunction","onCancel","dataTableSelectDialog","dataTable","reactive","afterInitdEvent","once","columns","getColumns","filter","column","name","TableActionColumn","actionColumnName","setColumns","handleConfirm","isConfirm","selections","getSelection","setList","setSelection","handleCancel","width","body","_createVNode","MKDataTable","footer","_Fragment","ElButton","length","default","_createTextVNode","dataFormDialog","dataFormOptions","dataForm","customDataFormStatus","recId","editRecord","addRecord","onClose","cancel","ElScrollbar","MKDataForm","MKForm","_slot","_slot2","isChanged","allowSubmit","validate","simpleSubmit","I18n","instance","translate","onClick"],"mappings":"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"}
|