@ibiz-template/mob-vue3-components 0.7.41-alpha.13 → 0.7.41-alpha.14

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.
Files changed (64) hide show
  1. package/dist/index-Pq2AnubY.js +76 -0
  2. package/dist/index-Pq2AnubY.js.map +1 -0
  3. package/dist/index.min.css +9 -9
  4. package/dist/index.system.min.js +1 -1
  5. package/dist/{quill-wfN-3C_3.js → quill-QfnovuHC.js} +2 -2
  6. package/dist/{quill-wfN-3C_3.js.map → quill-QfnovuHC.js.map} +1 -1
  7. package/dist/{quill-editor-preview-G0MpMJzC.js → quill-editor-preview-0dI65Nu7.js} +2 -2
  8. package/dist/{quill-editor-preview-G0MpMJzC.js.map → quill-editor-preview-0dI65Nu7.js.map} +1 -1
  9. package/dist/{quill-editor-VqApoQJq.js → quill-editor-x-OFlakL.js} +2 -2
  10. package/dist/{quill-editor-VqApoQJq.js.map → quill-editor-x-OFlakL.js.map} +1 -1
  11. package/dist/tree-4CqtwsXL.js +2 -0
  12. package/dist/tree-4CqtwsXL.js.map +1 -0
  13. package/es/_virtual/index12.mjs +2 -2
  14. package/es/_virtual/index13.mjs +2 -2
  15. package/es/common/action-group/action-group.css +1 -0
  16. package/es/common/action-group/action-group.d.ts +54 -0
  17. package/es/common/action-group/action-group.mjs +165 -0
  18. package/es/common/action-toolbar/action-toolbar.d.ts +1 -0
  19. package/es/common/action-toolbar/action-toolbar.mjs +20 -8
  20. package/es/common/button-list/button-list.css +1 -1
  21. package/es/common/button-list/button-list.d.ts +3 -2
  22. package/es/common/button-list/button-list.mjs +83 -63
  23. package/es/common/index.mjs +2 -0
  24. package/es/common/rawitem/rawitem.mjs +2 -2
  25. package/es/control/list/md-ctrl/md-ctrl.mjs +13 -15
  26. package/es/control/tab-exp-panel/index.d.ts +1 -0
  27. package/es/control/tab-exp-panel/tab-exp-panel.css +1 -0
  28. package/es/control/tab-exp-panel/tab-exp-panel.d.ts +2 -0
  29. package/es/control/tab-exp-panel/tab-exp-panel.mjs +28 -1
  30. package/es/control/tree/tree.css +1 -1
  31. package/es/control/tree/tree.d.ts +15 -0
  32. package/es/control/tree/tree.mjs +14 -2
  33. package/es/editor/raw/ibiz-raw/ibiz-raw.d.ts +2 -2
  34. package/es/editor/span/span/span.d.ts +5 -3
  35. package/es/editor/span/span/span.mjs +5 -5
  36. package/es/editor/upload/use/use-van-upload.mjs +19 -1
  37. package/es/node_modules/.pnpm/dingtalk-jsapi@3.0.38/node_modules/dingtalk-jsapi/lib/packages/frame-talk-client-pc/index.mjs +1 -1
  38. package/es/node_modules/.pnpm/dingtalk-jsapi@3.0.38/node_modules/dingtalk-jsapi/lib/sdk/middlewares/index.mjs +1 -1
  39. package/es/panel-component/panel-button-list/panel-button-list.controller.d.ts +1 -1
  40. package/es/panel-component/panel-button-list/panel-button-list.controller.mjs +19 -18
  41. package/lib/_virtual/index12.cjs +2 -2
  42. package/lib/_virtual/index13.cjs +2 -2
  43. package/lib/common/action-group/action-group.cjs +167 -0
  44. package/lib/common/action-group/action-group.css +1 -0
  45. package/lib/common/action-toolbar/action-toolbar.cjs +20 -8
  46. package/lib/common/button-list/button-list.cjs +82 -62
  47. package/lib/common/button-list/button-list.css +1 -1
  48. package/lib/common/index.cjs +2 -0
  49. package/lib/common/rawitem/rawitem.cjs +2 -2
  50. package/lib/control/list/md-ctrl/md-ctrl.cjs +12 -14
  51. package/lib/control/tab-exp-panel/tab-exp-panel.cjs +27 -0
  52. package/lib/control/tab-exp-panel/tab-exp-panel.css +1 -0
  53. package/lib/control/tree/tree.cjs +14 -2
  54. package/lib/control/tree/tree.css +1 -1
  55. package/lib/editor/span/span/span.cjs +5 -5
  56. package/lib/editor/upload/use/use-van-upload.cjs +19 -1
  57. package/lib/node_modules/.pnpm/dingtalk-jsapi@3.0.38/node_modules/dingtalk-jsapi/lib/packages/frame-talk-client-pc/index.cjs +1 -1
  58. package/lib/node_modules/.pnpm/dingtalk-jsapi@3.0.38/node_modules/dingtalk-jsapi/lib/sdk/middlewares/index.cjs +1 -1
  59. package/lib/panel-component/panel-button-list/panel-button-list.controller.cjs +18 -17
  60. package/package.json +5 -5
  61. package/dist/index-TTGYeV0q.js +0 -76
  62. package/dist/index-TTGYeV0q.js.map +0 -1
  63. package/dist/tree-nburezSg.js +0 -2
  64. package/dist/tree-nburezSg.js.map +0 -1
@@ -1,2 +1,2 @@
1
- System.register(["vue","@ibiz-template/vue3-util","./quill-wfN-3C_3.js","lodash-es","./index-TTGYeV0q.js","vant","@ibiz-template/core","ramda","@ibiz-template/runtime","@floating-ui/dom","vue-router","pinia","qx-util","dayjs","vuedraggable","qs","vue-i18n","@ibiz-template/devtool","@ibiz-template/model-helper"],function(k){"use strict";var v,s,p,f,m,l,r,g,C,w;return{setters:[function(e){v=e.defineComponent,s=e.ref,p=e.onMounted,f=e.nextTick,m=e.watch,l=e.createVNode,r=e.resolveComponent},function(e){g=e.getHtmlProps,C=e.useNamespace},function(e){w=e.Q},null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],execute:function(){const e=k("default",v({name:"IBizQuillPreview",props:{...g(),showCollapse:{type:Boolean},defaultHeight:{type:Number,default:200},isCollapse:{type:Boolean,default:!1}},setup(t,{emit:b}){const H=C("quill-preview"),c=t.controller,i=s(null),B=ibiz.i18n.getLang();let x=null;const h=s(""),o=s("auto"),u=s(!1),I=()=>{i.value&&(x=new w(i.value,{theme:"bubble",modules:c.modules,readOnly:!0,placeholder:c.placeHolder}),c.valueMode==="text"&&x.setText(t.value||""))},d=()=>{if(t.isCollapse&&i.value){const n=i.value.offsetHeight;n<t.defaultHeight?(o.value=`${n}px`,u.value=!1):(o.value=`${t.defaultHeight}px`,u.value=!0)}},P=n=>{if(!n)return;const a=n.querySelectorAll("img");let y=0;a.forEach(z=>{z.addEventListener("load",()=>{const T=z.offsetHeight;y+=T,y>t.defaultHeight&&(o.value=`${t.defaultHeight}px`,u.value=!0)})})};p(()=>{I(),f(()=>{d(),P(i.value)})});const q=()=>{b("edit")},M=()=>{h.value=""},N=n=>{const a=n.target;a&&a.tagName==="IMG"&&(h.value=a.src)},L=()=>{b("collapse",!t.isCollapse),d()},Q=()=>l("div",{class:H.b("collapse-btn"),onClick:L},[l("span",null,[t.isCollapse?ibiz.i18n.t("editor.html.expand"):ibiz.i18n.t("editor.html.collapse")]),t.isCollapse&&l("ion-icon",{name:"caret-down-outline"},null),!t.isCollapse&&l("ion-icon",{name:"caret-up-outline"},null)]);return m(()=>t.value,()=>{d()},{immediate:!0}),{ns:H,lang:B,editorRef:i,previewImage:h,collapseHeight:o,showCollapseBtn:u,handleClick:q,handleContentClick:N,handlePreviewClose:M,renderCollapseBtn:Q}},render(){return l("div",{class:[this.ns.b(),this.disabled?this.ns.m("disabled"):"",this.readonly?this.ns.m("readonly"):"",this.ns.m(this.lang.toLowerCase()),this.showCollapse?this.ns.m("show-collapse"):"",this.ns.is("collapse",this.isCollapse)],style:`--default-height: ${this.collapseHeight}`},[l("div",{ref:"editorRef",onClick:this.handleContentClick},[this.controller.valueMode==="html"?l("div",{innerHTML:this.value},null):null]),!this.readonly&&!this.disabled?l("div",{onClick:this.handleClick,class:this.ns.e("edit")},[l("ion-icon",{name:"create-outline"},null)]):null,this.showCollapse&&this.showCollapseBtn&&this.renderCollapseBtn(),l(r("van-popup"),{class:this.ns.e("image-popup"),show:!!this.previewImage,"close-on-popstate":!0,onClose:this.handlePreviewClose},{default:()=>[l(r("iBizPreviewImage"),{url:this.previewImage},null)]})])}}))}}});
2
- //# sourceMappingURL=quill-editor-preview-G0MpMJzC.js.map
1
+ System.register(["vue","@ibiz-template/vue3-util","./quill-QfnovuHC.js","lodash-es","./index-Pq2AnubY.js","vant","@ibiz-template/core","ramda","@ibiz-template/runtime","@floating-ui/dom","vue-router","pinia","qx-util","dayjs","vuedraggable","qs","vue-i18n","@ibiz-template/devtool","@ibiz-template/model-helper"],function(k){"use strict";var v,s,p,f,m,l,r,g,C,w;return{setters:[function(e){v=e.defineComponent,s=e.ref,p=e.onMounted,f=e.nextTick,m=e.watch,l=e.createVNode,r=e.resolveComponent},function(e){g=e.getHtmlProps,C=e.useNamespace},function(e){w=e.Q},null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],execute:function(){const e=k("default",v({name:"IBizQuillPreview",props:{...g(),showCollapse:{type:Boolean},defaultHeight:{type:Number,default:200},isCollapse:{type:Boolean,default:!1}},setup(t,{emit:b}){const H=C("quill-preview"),c=t.controller,i=s(null),B=ibiz.i18n.getLang();let x=null;const h=s(""),o=s("auto"),u=s(!1),I=()=>{i.value&&(x=new w(i.value,{theme:"bubble",modules:c.modules,readOnly:!0,placeholder:c.placeHolder}),c.valueMode==="text"&&x.setText(t.value||""))},d=()=>{if(t.isCollapse&&i.value){const n=i.value.offsetHeight;n<t.defaultHeight?(o.value=`${n}px`,u.value=!1):(o.value=`${t.defaultHeight}px`,u.value=!0)}},P=n=>{if(!n)return;const a=n.querySelectorAll("img");let y=0;a.forEach(z=>{z.addEventListener("load",()=>{const T=z.offsetHeight;y+=T,y>t.defaultHeight&&(o.value=`${t.defaultHeight}px`,u.value=!0)})})};p(()=>{I(),f(()=>{d(),P(i.value)})});const q=()=>{b("edit")},M=()=>{h.value=""},N=n=>{const a=n.target;a&&a.tagName==="IMG"&&(h.value=a.src)},L=()=>{b("collapse",!t.isCollapse),d()},Q=()=>l("div",{class:H.b("collapse-btn"),onClick:L},[l("span",null,[t.isCollapse?ibiz.i18n.t("editor.html.expand"):ibiz.i18n.t("editor.html.collapse")]),t.isCollapse&&l("ion-icon",{name:"caret-down-outline"},null),!t.isCollapse&&l("ion-icon",{name:"caret-up-outline"},null)]);return m(()=>t.value,()=>{d()},{immediate:!0}),{ns:H,lang:B,editorRef:i,previewImage:h,collapseHeight:o,showCollapseBtn:u,handleClick:q,handleContentClick:N,handlePreviewClose:M,renderCollapseBtn:Q}},render(){return l("div",{class:[this.ns.b(),this.disabled?this.ns.m("disabled"):"",this.readonly?this.ns.m("readonly"):"",this.ns.m(this.lang.toLowerCase()),this.showCollapse?this.ns.m("show-collapse"):"",this.ns.is("collapse",this.isCollapse)],style:`--default-height: ${this.collapseHeight}`},[l("div",{ref:"editorRef",onClick:this.handleContentClick},[this.controller.valueMode==="html"?l("div",{innerHTML:this.value},null):null]),!this.readonly&&!this.disabled?l("div",{onClick:this.handleClick,class:this.ns.e("edit")},[l("ion-icon",{name:"create-outline"},null)]):null,this.showCollapse&&this.showCollapseBtn&&this.renderCollapseBtn(),l(r("van-popup"),{class:this.ns.e("image-popup"),show:!!this.previewImage,"close-on-popstate":!0,onClose:this.handlePreviewClose},{default:()=>[l(r("iBizPreviewImage"),{url:this.previewImage},null)]})])}}))}}});
2
+ //# sourceMappingURL=quill-editor-preview-0dI65Nu7.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"quill-editor-preview-G0MpMJzC.js","sources":["../src/editor/html/quill-editor-preview/quill-editor-preview.tsx"],"sourcesContent":["/* eslint-disable import/no-extraneous-dependencies */\nimport { defineComponent, nextTick, onMounted, ref, watch } from 'vue';\nimport { getHtmlProps, useNamespace } from '@ibiz-template/vue3-util';\nimport Quill from 'quill';\nimport { HtmlEditorController } from '../html-editor.controller';\nimport './quill-editor-preview.scss';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst IBizQuillPreview: any = defineComponent({\n name: 'IBizQuillPreview',\n props: {\n ...getHtmlProps<HtmlEditorController>(),\n showCollapse: {\n type: Boolean,\n },\n defaultHeight: {\n type: Number,\n default: 200,\n },\n isCollapse: {\n type: Boolean,\n default: false,\n },\n },\n setup(props, { emit }) {\n const ns = useNamespace('quill-preview');\n const c: HtmlEditorController = props.controller;\n\n const editorRef = ref(null);\n\n const lang = ibiz.i18n.getLang();\n\n // 编辑器对象\n let quill: Quill | null = null;\n\n // 预览图片路径\n const previewImage = ref('');\n\n // 伸缩内容高度\n const collapseHeight = ref('auto');\n\n // 显示伸缩按钮\n const showCollapseBtn = ref(false);\n\n const init = () => {\n if (!editorRef.value) {\n return;\n }\n quill = new Quill(editorRef.value, {\n theme: 'bubble',\n modules: c.modules,\n readOnly: true,\n placeholder: c.placeHolder,\n });\n if (c.valueMode === 'text') {\n quill.setText(props.value || '');\n }\n };\n\n // 重置伸缩高度\n const resetCollapseHeight = () => {\n if (props.isCollapse && editorRef.value) {\n // 收缩时\n const height = (editorRef.value as HTMLElement).offsetHeight;\n // 内容高度低于设置的默认高度时,拿内容高度作为伸缩高度\n if (height < props.defaultHeight) {\n collapseHeight.value = `${height}px`;\n showCollapseBtn.value = false;\n } else {\n collapseHeight.value = `${props.defaultHeight}px`;\n showCollapseBtn.value = true;\n }\n }\n };\n\n // 监听img加载情况\n const watchHtmlImages = (container: HTMLElement | null) => {\n if (!container) return;\n const images = container.querySelectorAll('img');\n let totalHieght = 0;\n images.forEach(image => {\n image.addEventListener('load', () => {\n const height = image.offsetHeight;\n totalHieght += height;\n if (totalHieght > props.defaultHeight) {\n collapseHeight.value = `${props.defaultHeight}px`;\n showCollapseBtn.value = true;\n }\n });\n });\n };\n\n onMounted(() => {\n init();\n nextTick(() => {\n resetCollapseHeight();\n watchHtmlImages(editorRef.value);\n });\n });\n\n const handleClick = () => {\n emit('edit');\n };\n\n const handlePreviewClose = () => {\n previewImage.value = '';\n };\n\n const handleContentClick = (event: MouseEvent) => {\n const target = event.target as HTMLElement;\n if (target && target.tagName === 'IMG') {\n previewImage.value = (target as IData).src;\n }\n };\n\n // 点击伸缩按钮\n const onClick = () => {\n // isCollapse.value = !isCollapse.value;\n emit('collapse', !props.isCollapse);\n resetCollapseHeight();\n };\n\n // 绘制伸缩按钮\n const renderCollapseBtn = () => {\n return (\n <div class={ns.b('collapse-btn')} onClick={onClick}>\n <span>\n {props.isCollapse\n ? ibiz.i18n.t('editor.html.expand')\n : ibiz.i18n.t('editor.html.collapse')}\n </span>\n {props.isCollapse && <ion-icon name='caret-down-outline'></ion-icon>}\n {!props.isCollapse && <ion-icon name='caret-up-outline'></ion-icon>}\n </div>\n );\n };\n\n watch(\n () => props.value,\n () => {\n resetCollapseHeight();\n },\n {\n immediate: true,\n },\n );\n\n return {\n ns,\n lang,\n editorRef,\n previewImage,\n collapseHeight,\n showCollapseBtn,\n handleClick,\n handleContentClick,\n handlePreviewClose,\n renderCollapseBtn,\n };\n },\n render() {\n return (\n <div\n class={[\n this.ns.b(),\n this.disabled ? this.ns.m('disabled') : '',\n this.readonly ? this.ns.m('readonly') : '',\n this.ns.m(this.lang.toLowerCase()),\n this.showCollapse ? this.ns.m('show-collapse') : '',\n this.ns.is('collapse', this.isCollapse),\n ]}\n style={`--default-height: ${this.collapseHeight}`}\n >\n <div ref='editorRef' onClick={this.handleContentClick}>\n {this.controller.valueMode === 'html' ? (\n <div v-html={this.value}></div>\n ) : null}\n </div>\n {!this.readonly && !this.disabled ? (\n <div onClick={this.handleClick} class={this.ns.e('edit')}>\n <ion-icon name='create-outline'></ion-icon>\n </div>\n ) : null}\n {this.showCollapse && this.showCollapseBtn && this.renderCollapseBtn()}\n <van-popup\n class={this.ns.e('image-popup')}\n show={!!this.previewImage}\n close-on-popstate={true}\n onClose={this.handlePreviewClose}\n >\n <iBizPreviewImage url={this.previewImage}></iBizPreviewImage>\n </van-popup>\n </div>\n );\n },\n});\n\nexport default IBizQuillPreview;\n"],"names":["IBizQuillPreview","name","props","getHtmlProps","showCollapse","type","Boolean","defaultHeight","default","isCollapse","emit","setup","ns","ref","c","quill","lang","getLang","showCollapseBtn","init","editorRef","value","theme","modules","height","readOnly","collapseHeight","placeHolder","resetCollapseHeight","container","images","totalHieght","image","onMounted","watchHtmlImages","nextTick","previewImage","handleContentClick","event","target","renderCollapseBtn","_createVNode","handlePreviewClose","watch","onClick","handleClick","immediate","_resolveComponent","render"],"mappings":"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"}
1
+ {"version":3,"file":"quill-editor-preview-0dI65Nu7.js","sources":["../src/editor/html/quill-editor-preview/quill-editor-preview.tsx"],"sourcesContent":["/* eslint-disable import/no-extraneous-dependencies */\nimport { defineComponent, nextTick, onMounted, ref, watch } from 'vue';\nimport { getHtmlProps, useNamespace } from '@ibiz-template/vue3-util';\nimport Quill from 'quill';\nimport { HtmlEditorController } from '../html-editor.controller';\nimport './quill-editor-preview.scss';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst IBizQuillPreview: any = defineComponent({\n name: 'IBizQuillPreview',\n props: {\n ...getHtmlProps<HtmlEditorController>(),\n showCollapse: {\n type: Boolean,\n },\n defaultHeight: {\n type: Number,\n default: 200,\n },\n isCollapse: {\n type: Boolean,\n default: false,\n },\n },\n setup(props, { emit }) {\n const ns = useNamespace('quill-preview');\n const c: HtmlEditorController = props.controller;\n\n const editorRef = ref(null);\n\n const lang = ibiz.i18n.getLang();\n\n // 编辑器对象\n let quill: Quill | null = null;\n\n // 预览图片路径\n const previewImage = ref('');\n\n // 伸缩内容高度\n const collapseHeight = ref('auto');\n\n // 显示伸缩按钮\n const showCollapseBtn = ref(false);\n\n const init = () => {\n if (!editorRef.value) {\n return;\n }\n quill = new Quill(editorRef.value, {\n theme: 'bubble',\n modules: c.modules,\n readOnly: true,\n placeholder: c.placeHolder,\n });\n if (c.valueMode === 'text') {\n quill.setText(props.value || '');\n }\n };\n\n // 重置伸缩高度\n const resetCollapseHeight = () => {\n if (props.isCollapse && editorRef.value) {\n // 收缩时\n const height = (editorRef.value as HTMLElement).offsetHeight;\n // 内容高度低于设置的默认高度时,拿内容高度作为伸缩高度\n if (height < props.defaultHeight) {\n collapseHeight.value = `${height}px`;\n showCollapseBtn.value = false;\n } else {\n collapseHeight.value = `${props.defaultHeight}px`;\n showCollapseBtn.value = true;\n }\n }\n };\n\n // 监听img加载情况\n const watchHtmlImages = (container: HTMLElement | null) => {\n if (!container) return;\n const images = container.querySelectorAll('img');\n let totalHieght = 0;\n images.forEach(image => {\n image.addEventListener('load', () => {\n const height = image.offsetHeight;\n totalHieght += height;\n if (totalHieght > props.defaultHeight) {\n collapseHeight.value = `${props.defaultHeight}px`;\n showCollapseBtn.value = true;\n }\n });\n });\n };\n\n onMounted(() => {\n init();\n nextTick(() => {\n resetCollapseHeight();\n watchHtmlImages(editorRef.value);\n });\n });\n\n const handleClick = () => {\n emit('edit');\n };\n\n const handlePreviewClose = () => {\n previewImage.value = '';\n };\n\n const handleContentClick = (event: MouseEvent) => {\n const target = event.target as HTMLElement;\n if (target && target.tagName === 'IMG') {\n previewImage.value = (target as IData).src;\n }\n };\n\n // 点击伸缩按钮\n const onClick = () => {\n // isCollapse.value = !isCollapse.value;\n emit('collapse', !props.isCollapse);\n resetCollapseHeight();\n };\n\n // 绘制伸缩按钮\n const renderCollapseBtn = () => {\n return (\n <div class={ns.b('collapse-btn')} onClick={onClick}>\n <span>\n {props.isCollapse\n ? ibiz.i18n.t('editor.html.expand')\n : ibiz.i18n.t('editor.html.collapse')}\n </span>\n {props.isCollapse && <ion-icon name='caret-down-outline'></ion-icon>}\n {!props.isCollapse && <ion-icon name='caret-up-outline'></ion-icon>}\n </div>\n );\n };\n\n watch(\n () => props.value,\n () => {\n resetCollapseHeight();\n },\n {\n immediate: true,\n },\n );\n\n return {\n ns,\n lang,\n editorRef,\n previewImage,\n collapseHeight,\n showCollapseBtn,\n handleClick,\n handleContentClick,\n handlePreviewClose,\n renderCollapseBtn,\n };\n },\n render() {\n return (\n <div\n class={[\n this.ns.b(),\n this.disabled ? this.ns.m('disabled') : '',\n this.readonly ? this.ns.m('readonly') : '',\n this.ns.m(this.lang.toLowerCase()),\n this.showCollapse ? this.ns.m('show-collapse') : '',\n this.ns.is('collapse', this.isCollapse),\n ]}\n style={`--default-height: ${this.collapseHeight}`}\n >\n <div ref='editorRef' onClick={this.handleContentClick}>\n {this.controller.valueMode === 'html' ? (\n <div v-html={this.value}></div>\n ) : null}\n </div>\n {!this.readonly && !this.disabled ? (\n <div onClick={this.handleClick} class={this.ns.e('edit')}>\n <ion-icon name='create-outline'></ion-icon>\n </div>\n ) : null}\n {this.showCollapse && this.showCollapseBtn && this.renderCollapseBtn()}\n <van-popup\n class={this.ns.e('image-popup')}\n show={!!this.previewImage}\n close-on-popstate={true}\n onClose={this.handlePreviewClose}\n >\n <iBizPreviewImage url={this.previewImage}></iBizPreviewImage>\n </van-popup>\n </div>\n );\n },\n});\n\nexport default IBizQuillPreview;\n"],"names":["IBizQuillPreview","name","props","getHtmlProps","showCollapse","type","Boolean","defaultHeight","default","isCollapse","emit","setup","ns","ref","c","quill","lang","getLang","showCollapseBtn","init","editorRef","value","theme","modules","height","readOnly","collapseHeight","placeHolder","resetCollapseHeight","container","images","totalHieght","image","onMounted","watchHtmlImages","nextTick","previewImage","handleContentClick","event","target","renderCollapseBtn","_createVNode","handlePreviewClose","watch","onClick","handleClick","immediate","_resolveComponent","render"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- System.register(["vue","@ibiz-template/vue3-util","./quill-wfN-3C_3.js","@ibiz-template/core","lodash-es","./index-TTGYeV0q.js","vant","ramda","@ibiz-template/runtime","@floating-ui/dom","vue-router","pinia","qx-util","dayjs","vuedraggable","qs","vue-i18n","@ibiz-template/devtool","@ibiz-template/model-helper"],function(B){"use strict";var C,a,h,n,u,y,z,w,x,T,E,U,k,H;return{setters:[function(t){C=t.defineComponent,a=t.ref,h=t.watch,n=t.createVNode,u=t.resolveComponent,y=t.isVNode,z=t.nextTick},function(t){w=t.getHtmlProps,x=t.getEditorEmits,T=t.useNamespace},function(t){E=t.Q},function(t){U=t.getAppCookie,k=t.CoreConst,H=t.base64ToBlob},null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],execute:function(){function t(e){return typeof e=="function"||Object.prototype.toString.call(e)==="[object Object]"&&!y(e)}const I=B("default",C({name:"IBizQuill",props:w(),emits:x(),setup(e,{emit:r}){const d=T("quill"),l=e.controller,m=a(null),q=ibiz.i18n.getLang();let i=null;const L=a({[`${ibiz.env.tokenHeader}Authorization`]:`${ibiz.env.tokenPrefix}Bearer ${U(k.TOKEN)}`}),M=a(""),N=a(""),b=a(!1),g=a(!1),f=a(""),O=a(!0),P=o=>{const s=o.ops.find(c=>c.insert&&c.insert.image);if(s)return s.insert.image},j=()=>l.valueMode==="text"?i.getText():i.getSemanticHTML(),Q=async o=>{const s=H(o),c=await ibiz.util.file.fileUpload(M.value,s,L.value),p=N.value.replace("%fileId%",c.fileid),v=j();f.value=v.replace(o,p)},V=()=>{if(!m.value)return;const o=l.showToolbar?"snow":"bubble";i=new E(m.value,{theme:o,modules:l.modules,readOnly:e.disabled||e.readonly,placeholder:l.placeHolder}),i.on("text-change",(s,c,p)=>{if(p==="user"){const v=P(s);if(v&&l.imageMode==="file"){Q(v);return}f.value=j()}}),l.valueMode==="text"&&i.setText(e.value||"")};return h(()=>[e.disabled,e.readonly],()=>{i&&(e.disabled||e.readonly?i.enable(!1):i.enable())},{immediate:!0}),h(()=>e.data,o=>{if(o){const s=ibiz.util.file.calcFileUpDownUrl(l.context,l.params,o,l.editorParams);M.value=s.uploadUrl,N.value=s.downloadUrl}},{immediate:!0,deep:!0}),h(()=>e.value,()=>{!i||!e.value||(f.value=e.value,l.valueMode==="text"?i.setText(e.value):(g.value=!0,z(()=>{g.value=!1})))},{immediate:!0}),{ns:d,c:l,lang:q,editing:b,updating:g,editorRef:m,isCollapse:O,handleEdit:()=>{i||V()},handleCancel:()=>{b.value=!1},handleConfirm:()=>{r("change",f.value),b.value=!1}}},render(){let e,r;return n("div",{class:[this.ns.b(),this.disabled?this.ns.m("disabled"):"",this.readonly?this.ns.m("readonly"):"",this.ns.m(this.lang.toLowerCase())]},[!this.updating&&n(u("iBizQuillPreview"),{value:this.value,controller:this.controller,disabled:this.disabled,readonly:this.readonly,showCollapse:this.c.showCollapse,defaultHeight:this.c.defaultHeight,isCollapse:this.isCollapse,onEdit:()=>{this.editing=!0},onCollapse:d=>{this.isCollapse=d}},null),n(u("van-action-sheet"),{show:this.editing,"onUpdate:show":d=>this.editing=d,teleport:"body",class:[this.ns.e("popup"),this.ns.m(this.lang.toLowerCase())],onOpened:this.handleEdit},{default:()=>[n("div",{class:this.ns.e("content")},[n("div",{ref:"editorRef"},[this.controller.valueMode==="html"?n("div",{innerHTML:this.value},null):null])]),n("div",{class:this.ns.e("footer")},[n(u("van-button"),{class:this.ns.e("cancel"),onClick:this.handleCancel},t(e=ibiz.i18n.t("editor.common.cancel"))?e:{default:()=>[e]}),n(u("van-button"),{class:this.ns.e("confirm"),onClick:this.handleConfirm,type:"primary"},t(r=ibiz.i18n.t("editor.common.confirm"))?r:{default:()=>[r]})])]})])}}))}}});
2
- //# sourceMappingURL=quill-editor-VqApoQJq.js.map
1
+ System.register(["vue","@ibiz-template/vue3-util","./quill-QfnovuHC.js","@ibiz-template/core","lodash-es","./index-Pq2AnubY.js","vant","ramda","@ibiz-template/runtime","@floating-ui/dom","vue-router","pinia","qx-util","dayjs","vuedraggable","qs","vue-i18n","@ibiz-template/devtool","@ibiz-template/model-helper"],function(B){"use strict";var C,a,h,n,u,y,z,w,x,T,E,U,k,H;return{setters:[function(t){C=t.defineComponent,a=t.ref,h=t.watch,n=t.createVNode,u=t.resolveComponent,y=t.isVNode,z=t.nextTick},function(t){w=t.getHtmlProps,x=t.getEditorEmits,T=t.useNamespace},function(t){E=t.Q},function(t){U=t.getAppCookie,k=t.CoreConst,H=t.base64ToBlob},null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],execute:function(){function t(e){return typeof e=="function"||Object.prototype.toString.call(e)==="[object Object]"&&!y(e)}const I=B("default",C({name:"IBizQuill",props:w(),emits:x(),setup(e,{emit:r}){const d=T("quill"),l=e.controller,m=a(null),q=ibiz.i18n.getLang();let i=null;const L=a({[`${ibiz.env.tokenHeader}Authorization`]:`${ibiz.env.tokenPrefix}Bearer ${U(k.TOKEN)}`}),M=a(""),N=a(""),b=a(!1),g=a(!1),f=a(""),O=a(!0),P=o=>{const s=o.ops.find(c=>c.insert&&c.insert.image);if(s)return s.insert.image},j=()=>l.valueMode==="text"?i.getText():i.getSemanticHTML(),Q=async o=>{const s=H(o),c=await ibiz.util.file.fileUpload(M.value,s,L.value),p=N.value.replace("%fileId%",c.fileid),v=j();f.value=v.replace(o,p)},V=()=>{if(!m.value)return;const o=l.showToolbar?"snow":"bubble";i=new E(m.value,{theme:o,modules:l.modules,readOnly:e.disabled||e.readonly,placeholder:l.placeHolder}),i.on("text-change",(s,c,p)=>{if(p==="user"){const v=P(s);if(v&&l.imageMode==="file"){Q(v);return}f.value=j()}}),l.valueMode==="text"&&i.setText(e.value||"")};return h(()=>[e.disabled,e.readonly],()=>{i&&(e.disabled||e.readonly?i.enable(!1):i.enable())},{immediate:!0}),h(()=>e.data,o=>{if(o){const s=ibiz.util.file.calcFileUpDownUrl(l.context,l.params,o,l.editorParams);M.value=s.uploadUrl,N.value=s.downloadUrl}},{immediate:!0,deep:!0}),h(()=>e.value,()=>{!i||!e.value||(f.value=e.value,l.valueMode==="text"?i.setText(e.value):(g.value=!0,z(()=>{g.value=!1})))},{immediate:!0}),{ns:d,c:l,lang:q,editing:b,updating:g,editorRef:m,isCollapse:O,handleEdit:()=>{i||V()},handleCancel:()=>{b.value=!1},handleConfirm:()=>{r("change",f.value),b.value=!1}}},render(){let e,r;return n("div",{class:[this.ns.b(),this.disabled?this.ns.m("disabled"):"",this.readonly?this.ns.m("readonly"):"",this.ns.m(this.lang.toLowerCase())]},[!this.updating&&n(u("iBizQuillPreview"),{value:this.value,controller:this.controller,disabled:this.disabled,readonly:this.readonly,showCollapse:this.c.showCollapse,defaultHeight:this.c.defaultHeight,isCollapse:this.isCollapse,onEdit:()=>{this.editing=!0},onCollapse:d=>{this.isCollapse=d}},null),n(u("van-action-sheet"),{show:this.editing,"onUpdate:show":d=>this.editing=d,teleport:"body",class:[this.ns.e("popup"),this.ns.m(this.lang.toLowerCase())],onOpened:this.handleEdit},{default:()=>[n("div",{class:this.ns.e("content")},[n("div",{ref:"editorRef"},[this.controller.valueMode==="html"?n("div",{innerHTML:this.value},null):null])]),n("div",{class:this.ns.e("footer")},[n(u("van-button"),{class:this.ns.e("cancel"),onClick:this.handleCancel},t(e=ibiz.i18n.t("editor.common.cancel"))?e:{default:()=>[e]}),n(u("van-button"),{class:this.ns.e("confirm"),onClick:this.handleConfirm,type:"primary"},t(r=ibiz.i18n.t("editor.common.confirm"))?r:{default:()=>[r]})])]})])}}))}}});
2
+ //# sourceMappingURL=quill-editor-x-OFlakL.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"quill-editor-VqApoQJq.js","sources":["../src/editor/html/quill-editor/quill-editor.tsx"],"sourcesContent":["/* eslint-disable import/no-extraneous-dependencies */\nimport { defineComponent, nextTick, Ref, ref, watch } from 'vue';\nimport {\n getHtmlProps,\n getEditorEmits,\n useNamespace,\n} from '@ibiz-template/vue3-util';\nimport 'quill/dist/quill.core.css';\nimport 'quill/dist/quill.snow.css';\nimport 'quill/dist/quill.bubble.css';\nimport Quill from 'quill';\nimport { Delta } from 'quill/core';\nimport { base64ToBlob, CoreConst, getAppCookie } from '@ibiz-template/core';\nimport { HtmlEditorController } from '../html-editor.controller';\nimport './quill-editor.scss';\n\n/**\n * 移动端HTML编辑框\n * @primary\n * @description 基于Quill深度定制可扩展的富文本编辑器,集成文件/图片上传、实时预览及样式配置功能,提供完整的富媒体编辑解决方案。支持编辑器类型包含:`移动端HTML编辑框`\n * @editorparams {name:uploadParams,parameterType:IData,defaultvalue:{},description:上传参数}\n * @editorparams {name:exportParams,parameterType:IData,defaultvalue:{},description:下载参数}\n * @editorparams {name:SHOWTOOLBAR,parameterType:boolean,defaultvalue:true,description:显示工具栏}\n * @editorparams {name:VALUEMODE,parameterType:'text' | 'html',defaultvalue:html,description:值模式,暂时只支持html模式}\n * @editorparams {name:IMAGEMODE,parameterType:'base64' | 'file',defaultvalue:'file',description:图片模式}\n * @editorparams {name:MODULES,parameterType:IData,description:quill配置}\n * @editorparams {name:DEFAULTHEIGHT,parameterType:number,defaultvalue:200,description:收缩时的高度}\n * @editorparams {name:SHOWCOLLAPSE,parameterType:boolean,defaultvalue:true,description:是否显示伸缩按钮}\n * @ignoreprops autoFocus | overflowMode\n * @ignoreemits infoTextChange | enter\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst IBizQuill: any = defineComponent({\n name: 'IBizQuill',\n props: getHtmlProps<HtmlEditorController>(),\n emits: getEditorEmits(),\n setup(props, { emit }) {\n const ns = useNamespace('quill');\n const c: HtmlEditorController = props.controller;\n\n const editorRef = ref(null);\n\n const lang = ibiz.i18n.getLang();\n\n // 编辑器对象\n let quill: Quill | null = null;\n\n // 请求头\n const headers: Ref<IData> = ref({\n [`${ibiz.env.tokenHeader}Authorization`]: `${\n ibiz.env.tokenPrefix\n }Bearer ${getAppCookie(CoreConst.TOKEN)}`,\n });\n\n // 上传文件路径\n const uploadUrl: Ref<string> = ref('');\n\n // 下载文件路径\n const downloadUrl: Ref<string> = ref('');\n\n // 编辑状态\n const editing: Ref<boolean> = ref(false);\n\n // 更新中\n const updating: Ref<boolean> = ref(false);\n\n // 临时数据\n const tempValue: Ref<string> = ref('');\n\n // 是否完全展开\n const isCollapse: Ref<boolean> = ref(true);\n\n const getImage = (delta: Delta) => {\n const item = delta.ops.find(x => x.insert && (x.insert as IData).image);\n if (item) {\n return (item.insert as IData).image;\n }\n };\n\n const getValue = () => {\n if (c.valueMode === 'text') {\n return quill!.getText();\n }\n return quill!.getSemanticHTML();\n };\n\n // 处理图片上传(文件模式)\n const handleUpload = async (image: string) => {\n const blob = base64ToBlob(image);\n const file = await ibiz.util.file.fileUpload(\n uploadUrl.value,\n blob,\n headers.value,\n );\n const url = downloadUrl.value.replace('%fileId%', file.fileid);\n const value = getValue();\n tempValue.value = value.replace(image, url);\n };\n\n const init = () => {\n if (!editorRef.value) {\n return;\n }\n const theme = c.showToolbar ? 'snow' : 'bubble';\n quill = new Quill(editorRef.value, {\n theme,\n modules: c.modules,\n readOnly: props.disabled || props.readonly,\n placeholder: c.placeHolder,\n });\n quill.on('text-change', (delta, oldDelta, source) => {\n if (source === 'user') {\n const image = getImage(delta);\n if (image && c.imageMode === 'file') {\n handleUpload(image);\n return;\n }\n tempValue.value = getValue();\n }\n });\n if (c.valueMode === 'text') {\n quill.setText(props.value || '');\n }\n };\n\n watch(\n () => [props.disabled, props.readonly],\n () => {\n if (!quill) {\n return;\n }\n if (props.disabled || props.readonly) {\n quill.enable(false);\n } else {\n quill.enable();\n }\n },\n { immediate: true },\n );\n\n // data响应式变更基础路径\n watch(\n () => props.data,\n newVal => {\n if (newVal) {\n const urls = ibiz.util.file.calcFileUpDownUrl(\n c.context,\n c.params,\n newVal,\n c.editorParams,\n );\n uploadUrl.value = urls.uploadUrl;\n downloadUrl.value = urls.downloadUrl;\n }\n },\n { immediate: true, deep: true },\n );\n\n watch(\n () => props.value,\n () => {\n if (!quill || !props.value) {\n return;\n }\n tempValue.value = props.value;\n if (c.valueMode === 'text') {\n quill.setText(props.value);\n } else {\n updating.value = true;\n nextTick(() => {\n updating.value = false;\n });\n }\n },\n { immediate: true },\n );\n\n // 展开编辑\n const handleEdit = () => {\n if (!quill) {\n init();\n }\n };\n\n // 取消编辑\n const handleCancel = () => {\n editing.value = false;\n };\n\n // 确认编辑\n const handleConfirm = () => {\n emit('change', tempValue.value);\n editing.value = false;\n };\n\n return {\n ns,\n c,\n lang,\n editing,\n updating,\n editorRef,\n isCollapse,\n handleEdit,\n handleCancel,\n handleConfirm,\n };\n },\n render() {\n return (\n <div\n class={[\n this.ns.b(),\n this.disabled ? this.ns.m('disabled') : '',\n this.readonly ? this.ns.m('readonly') : '',\n this.ns.m(this.lang.toLowerCase()),\n ]}\n >\n {!this.updating && (\n <iBizQuillPreview\n value={this.value}\n controller={this.controller}\n disabled={this.disabled}\n readonly={this.readonly}\n showCollapse={this.c.showCollapse}\n defaultHeight={this.c.defaultHeight}\n isCollapse={this.isCollapse}\n onEdit={() => {\n this.editing = true;\n }}\n onCollapse={(val: boolean) => {\n this.isCollapse = val;\n }}\n />\n )}\n <van-action-sheet\n v-model:show={this.editing}\n teleport='body'\n class={[this.ns.e('popup'), this.ns.m(this.lang.toLowerCase())]}\n onOpened={this.handleEdit}\n >\n <div class={this.ns.e('content')}>\n <div ref='editorRef'>\n {this.controller.valueMode === 'html' ? (\n <div v-html={this.value}></div>\n ) : null}\n </div>\n </div>\n <div class={this.ns.e('footer')}>\n <van-button class={this.ns.e('cancel')} onClick={this.handleCancel}>\n {ibiz.i18n.t('editor.common.cancel')}\n </van-button>\n <van-button\n class={this.ns.e('confirm')}\n onClick={this.handleConfirm}\n type='primary'\n >\n {ibiz.i18n.t('editor.common.confirm')}\n </van-button>\n </div>\n </van-action-sheet>\n </div>\n );\n },\n});\n\nexport default IBizQuill;\n"],"names":["s","_isVNode","IBizQuill","exports","defineComponent","getHtmlProps","getEditorEmits","props","emit","ns","useNamespace","c","editorRef","ref","lang","quill","headers","getAppCookie","CoreConst","uploadUrl","downloadUrl","updating","tempValue","isCollapse","delta","item","image","tokenHeader","file","blob","value","getValue","url","init","theme","source","getImage","ops","valueMode","watch","ibiz","newVal","Quill","urls","readOnly","nextTick","editing","immediate","deep","_slot","_slot2","_createVNode","_resolveComponent","handleEdit","val","$event","handleCancel","handleConfirm","_isSlot","render"],"mappings":"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"}
1
+ {"version":3,"file":"quill-editor-x-OFlakL.js","sources":["../src/editor/html/quill-editor/quill-editor.tsx"],"sourcesContent":["/* eslint-disable import/no-extraneous-dependencies */\nimport { defineComponent, nextTick, Ref, ref, watch } from 'vue';\nimport {\n getHtmlProps,\n getEditorEmits,\n useNamespace,\n} from '@ibiz-template/vue3-util';\nimport 'quill/dist/quill.core.css';\nimport 'quill/dist/quill.snow.css';\nimport 'quill/dist/quill.bubble.css';\nimport Quill from 'quill';\nimport { Delta } from 'quill/core';\nimport { base64ToBlob, CoreConst, getAppCookie } from '@ibiz-template/core';\nimport { HtmlEditorController } from '../html-editor.controller';\nimport './quill-editor.scss';\n\n/**\n * 移动端HTML编辑框\n * @primary\n * @description 基于Quill深度定制可扩展的富文本编辑器,集成文件/图片上传、实时预览及样式配置功能,提供完整的富媒体编辑解决方案。支持编辑器类型包含:`移动端HTML编辑框`\n * @editorparams {name:uploadParams,parameterType:IData,defaultvalue:{},description:上传参数}\n * @editorparams {name:exportParams,parameterType:IData,defaultvalue:{},description:下载参数}\n * @editorparams {name:SHOWTOOLBAR,parameterType:boolean,defaultvalue:true,description:显示工具栏}\n * @editorparams {name:VALUEMODE,parameterType:'text' | 'html',defaultvalue:html,description:值模式,暂时只支持html模式}\n * @editorparams {name:IMAGEMODE,parameterType:'base64' | 'file',defaultvalue:'file',description:图片模式}\n * @editorparams {name:MODULES,parameterType:IData,description:quill配置}\n * @editorparams {name:DEFAULTHEIGHT,parameterType:number,defaultvalue:200,description:收缩时的高度}\n * @editorparams {name:SHOWCOLLAPSE,parameterType:boolean,defaultvalue:true,description:是否显示伸缩按钮}\n * @ignoreprops autoFocus | overflowMode\n * @ignoreemits infoTextChange | enter\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst IBizQuill: any = defineComponent({\n name: 'IBizQuill',\n props: getHtmlProps<HtmlEditorController>(),\n emits: getEditorEmits(),\n setup(props, { emit }) {\n const ns = useNamespace('quill');\n const c: HtmlEditorController = props.controller;\n\n const editorRef = ref(null);\n\n const lang = ibiz.i18n.getLang();\n\n // 编辑器对象\n let quill: Quill | null = null;\n\n // 请求头\n const headers: Ref<IData> = ref({\n [`${ibiz.env.tokenHeader}Authorization`]: `${\n ibiz.env.tokenPrefix\n }Bearer ${getAppCookie(CoreConst.TOKEN)}`,\n });\n\n // 上传文件路径\n const uploadUrl: Ref<string> = ref('');\n\n // 下载文件路径\n const downloadUrl: Ref<string> = ref('');\n\n // 编辑状态\n const editing: Ref<boolean> = ref(false);\n\n // 更新中\n const updating: Ref<boolean> = ref(false);\n\n // 临时数据\n const tempValue: Ref<string> = ref('');\n\n // 是否完全展开\n const isCollapse: Ref<boolean> = ref(true);\n\n const getImage = (delta: Delta) => {\n const item = delta.ops.find(x => x.insert && (x.insert as IData).image);\n if (item) {\n return (item.insert as IData).image;\n }\n };\n\n const getValue = () => {\n if (c.valueMode === 'text') {\n return quill!.getText();\n }\n return quill!.getSemanticHTML();\n };\n\n // 处理图片上传(文件模式)\n const handleUpload = async (image: string) => {\n const blob = base64ToBlob(image);\n const file = await ibiz.util.file.fileUpload(\n uploadUrl.value,\n blob,\n headers.value,\n );\n const url = downloadUrl.value.replace('%fileId%', file.fileid);\n const value = getValue();\n tempValue.value = value.replace(image, url);\n };\n\n const init = () => {\n if (!editorRef.value) {\n return;\n }\n const theme = c.showToolbar ? 'snow' : 'bubble';\n quill = new Quill(editorRef.value, {\n theme,\n modules: c.modules,\n readOnly: props.disabled || props.readonly,\n placeholder: c.placeHolder,\n });\n quill.on('text-change', (delta, oldDelta, source) => {\n if (source === 'user') {\n const image = getImage(delta);\n if (image && c.imageMode === 'file') {\n handleUpload(image);\n return;\n }\n tempValue.value = getValue();\n }\n });\n if (c.valueMode === 'text') {\n quill.setText(props.value || '');\n }\n };\n\n watch(\n () => [props.disabled, props.readonly],\n () => {\n if (!quill) {\n return;\n }\n if (props.disabled || props.readonly) {\n quill.enable(false);\n } else {\n quill.enable();\n }\n },\n { immediate: true },\n );\n\n // data响应式变更基础路径\n watch(\n () => props.data,\n newVal => {\n if (newVal) {\n const urls = ibiz.util.file.calcFileUpDownUrl(\n c.context,\n c.params,\n newVal,\n c.editorParams,\n );\n uploadUrl.value = urls.uploadUrl;\n downloadUrl.value = urls.downloadUrl;\n }\n },\n { immediate: true, deep: true },\n );\n\n watch(\n () => props.value,\n () => {\n if (!quill || !props.value) {\n return;\n }\n tempValue.value = props.value;\n if (c.valueMode === 'text') {\n quill.setText(props.value);\n } else {\n updating.value = true;\n nextTick(() => {\n updating.value = false;\n });\n }\n },\n { immediate: true },\n );\n\n // 展开编辑\n const handleEdit = () => {\n if (!quill) {\n init();\n }\n };\n\n // 取消编辑\n const handleCancel = () => {\n editing.value = false;\n };\n\n // 确认编辑\n const handleConfirm = () => {\n emit('change', tempValue.value);\n editing.value = false;\n };\n\n return {\n ns,\n c,\n lang,\n editing,\n updating,\n editorRef,\n isCollapse,\n handleEdit,\n handleCancel,\n handleConfirm,\n };\n },\n render() {\n return (\n <div\n class={[\n this.ns.b(),\n this.disabled ? this.ns.m('disabled') : '',\n this.readonly ? this.ns.m('readonly') : '',\n this.ns.m(this.lang.toLowerCase()),\n ]}\n >\n {!this.updating && (\n <iBizQuillPreview\n value={this.value}\n controller={this.controller}\n disabled={this.disabled}\n readonly={this.readonly}\n showCollapse={this.c.showCollapse}\n defaultHeight={this.c.defaultHeight}\n isCollapse={this.isCollapse}\n onEdit={() => {\n this.editing = true;\n }}\n onCollapse={(val: boolean) => {\n this.isCollapse = val;\n }}\n />\n )}\n <van-action-sheet\n v-model:show={this.editing}\n teleport='body'\n class={[this.ns.e('popup'), this.ns.m(this.lang.toLowerCase())]}\n onOpened={this.handleEdit}\n >\n <div class={this.ns.e('content')}>\n <div ref='editorRef'>\n {this.controller.valueMode === 'html' ? (\n <div v-html={this.value}></div>\n ) : null}\n </div>\n </div>\n <div class={this.ns.e('footer')}>\n <van-button class={this.ns.e('cancel')} onClick={this.handleCancel}>\n {ibiz.i18n.t('editor.common.cancel')}\n </van-button>\n <van-button\n class={this.ns.e('confirm')}\n onClick={this.handleConfirm}\n type='primary'\n >\n {ibiz.i18n.t('editor.common.confirm')}\n </van-button>\n </div>\n </van-action-sheet>\n </div>\n );\n },\n});\n\nexport default IBizQuill;\n"],"names":["s","_isVNode","IBizQuill","exports","defineComponent","getHtmlProps","getEditorEmits","props","emit","ns","useNamespace","c","editorRef","ref","lang","quill","headers","getAppCookie","CoreConst","uploadUrl","downloadUrl","updating","tempValue","isCollapse","delta","item","image","tokenHeader","file","blob","value","getValue","url","init","theme","source","getImage","ops","valueMode","watch","ibiz","newVal","Quill","urls","readOnly","nextTick","editing","immediate","deep","_slot","_slot2","_createVNode","_resolveComponent","handleEdit","val","$event","handleCancel","handleConfirm","_isSlot","render"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ System.register(["vue","@ibiz-template/vue3-util","@ibiz-template/runtime","lodash-es","qx-util","@ibiz-template-package/vs-tree-ex"],function(M){"use strict";var N,v,l,D,a,u,k,x,S,E,L,I,z,T,d,A;return{setters:[function(s){N=s.defineComponent,v=s.computed,l=s.ref,D=s.onUnmounted,a=s.createVNode,u=s.resolveComponent,k=s.isVNode,x=s.h,S=s.createApp},function(s){E=s.useControlController,L=s.useNamespace,I=s.IBizIcon},function(s){z=s.TreeController},function(s){T=s.debounce},function(s){d=s.createUUID},function(s){A=s.VsTreeComponent}],execute:function(){function s(i){return typeof i=="function"||Object.prototype.toString.call(i)==="[object Object]"&&!k(i)}const B=N({name:"IBizTreeControl",components:{"vs-tree":A},props:{modelData:{type:Object,required:!0},context:{type:Object,required:!0},params:{type:Object,default:()=>({})},provider:{type:Object},mdctrlActiveMode:{type:Number,default:2},singleSelect:{type:Boolean,default:!0},navigational:{type:Boolean,default:void 0}},setup(){var i,f;const o=E((...e)=>new z(...e)),_=L(`control-${o.model.controlType.toLowerCase()}`),V=v(()=>o.state.selectedData.map(e=>e._id));let C=[];const p=l(),y=l(d()),Q=l(""),K=d(),j=l(!0),G=e=>{const t=x(I,e),n=S(t),r=document.createElement("span");return n.mount(r),C.push(n),r},q=e=>e.map(t=>{const n=t?._icon?G({icon:t?._icon}):"";return{_id:t._id,_uuid:t._uuid,_leaf:t._leaf,_text:t._text,icon:n,_disableSelect:t._disableSelect}}),w=v(()=>{if(!o.state.isLoaded)return[];const e=o.model.rootVisible?o.state.rootNodes:o.state.rootNodes.reduce((t,n)=>n._children?t.concat(n._children):t,[]);return q(e)});function F(e,t){const n=t.state.items.find(r=>r._id===e);return n||t.state.items.find(r=>r._uuid===e)}const J=async(e,t)=>{if(!o.state.isLoaded)return;let n;const r=F(e.data._uuid,o);if(r&&r._children&&!o.state.query?(ibiz.log.debug("\u8282\u70B9\u5C55\u5F00\u52A0\u8F7D-\u672C\u5730",r),n=r._children):(ibiz.log.debug("\u8282\u70B9\u5C55\u5F00\u52A0\u8F7D-\u8FDC\u7A0B",r),n=await o.loadNodes(r)),n&&o.state.rootNodes.includes(n[0])){t(w.value),o.state.mobExpandedKey="",y.value=d();return}t(q(n))},O=(e,t)=>{if(o.state.singleSelect)return;const{originData:n}=t,{selectedData:r}=o.state,c=F(n._uuid,o),h=r.filter(b=>b._id!==c._id);h.length===r.length?o.setSelection(r.concat([c])):o.setSelection(h)},U=(e,t)=>{e.stopPropagation();const{originData:n}=t;n._leaf&&(O(e,t),o.onTreeNodeClick(n,e))},R=e=>{o.state.mobExpandedKey=e._uuid||""},W=T(async()=>{var e,t,n,r,c,h,b,P,H;if(p.value){const g=(c=(r=(n=(t=(e=p.value)==null?void 0:e.tree)==null?void 0:t.tree)==null?void 0:n.store)==null?void 0:r.breadcrumb)==null?void 0:c.list,m=g?g[g.length-1]:null;m&&(m.childNodes=[],(H=(P=(b=(h=p.value)==null?void 0:h.tree)==null?void 0:b.tree)==null?void 0:P.store)==null||H.nodesChange([]),m.loaded=!1,m.setExpand(!0))}},500),X=async e=>{o.state.query=e,await o.load()};o.evt.on("onAfterRefreshParent",()=>{W()}),o.evt.on("onLoadSuccess",()=>{o.state.mobExpandedKey="",y.value=d()});const Y=e=>({id:e._id,name:e._text,children:e._children,isLeaf:e._leaf}),Z=e=>{const{originData:t,loadingEl:n}=e;V.value.includes(t._id)&&n&&(n.parentNode.parentNode.classList.add("selected"),e.store.selectedCurrent=e)},ee=(e,t)=>{o.state.singleSelect&&Z(t);const{originData:n}=t;if(!n._leaf)return e("div",{text:ibiz.i18n.t("control.tree.subordinate"),className:"tree-button",click:(r,c)=>{c.store.breadcrumb.list.push(c),c.setExpand(!0),R(n)}})},te=(e,t)=>{const{checked:n}=t;t.setChecked(!n),U(e,t)},$={maxHeight:"100%",checkInherit:!1,nocheckParent:!0,rootName:(f=(i=o.model.detreeNodes)==null?void 0:i.find(e=>e.rootNode))==null?void 0:f.name,renderContent:ee,customNodeClick:te};return j.value&&Object.assign($,{breadcrumb:{el:`#breadcrumb${K}`,link:(e,t)=>{const n=document.createElement("span"),r=document.createElement("span");return r.innerText=t.name,t.icon instanceof HTMLElement&&n.appendChild(t.icon.cloneNode(!0)),n.appendChild(r),n.className=`${_.be("header","crumb")} ${_.is("root",t._vsroot)}`,n.onclick=()=>R.bind(this)(t),n}}}),D(()=>{C.forEach(e=>{e.unmount()}),C=[]}),{c:o,ns:_,treeRefreshKey:y,treeData:w,options:$,breadcrumb:j,checkedKeys:V,uuid:K,treeRef:p,onNodeCheck:O,onNodeClick:U,loadData:J,treeDataFormat:Y,currentVal:Q,onInput:X}},render(){const i={searchbar:()=>this.c.enableQuickSearch?a(u("van-search"),{modelValue:this.c.state.query,class:this.ns.b("quick-search"),clearable:!0,placeholder:this.c.state.placeHolder,"onUpdate:model-value":this.onInput},null):null},f=this.c.controlPanel?"tree":"default";return i[f]=()=>{const o=[this.breadcrumb&&a("div",{class:this.ns.be("header","container")},[a(u("van-sticky"),null,{default:()=>[a("div",{id:`breadcrumb${this.uuid}`,class:[this.ns.b("header"),this.ns.is("no-root",!this.c.model.rootVisible)]},null)]})]),this.c.state.isCreated&&this.c.state.isLoaded&&a(u("vs-tree"),{"show-line":!0,ref:"treeRef",key:this.treeRefreshKey,class:[this.ns.b("content")],lazy:!0,strictLeaf:!0,options:this.options,"show-checkbox":!this.c.state.singleSelect,showIcon:!0,data:this.treeData,highlightCurrent:!0,checkedKeys:this.checkedKeys,format:this.treeDataFormat,load:this.loadData,onCheck:this.onNodeCheck},null)];return a("div",{class:this.ns.b("container")},[o])},a(u("iBizControlBase"),{controller:this.c},s(i)?i:{default:()=>[i]})}});M({TreeControl:B,default:B})}}});
2
+ //# sourceMappingURL=tree-4CqtwsXL.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tree-4CqtwsXL.js","sources":["../src/control/tree/tree.tsx"],"sourcesContent":["import {\n useControlController,\n useNamespace,\n IBizIcon,\n} from '@ibiz-template/vue3-util';\nimport {\n computed,\n defineComponent,\n PropType,\n ref,\n VNode,\n h as vueH,\n createApp,\n App,\n onUnmounted,\n} from 'vue';\nimport { IDETree } from '@ibiz/model-core';\nimport {\n IControlProvider,\n ITreeController,\n ITreeNodeData,\n TreeController,\n} from '@ibiz-template/runtime';\nimport { debounce } from 'lodash-es';\nimport { createUUID } from 'qx-util';\nimport { VsTreeComponent } from '@ibiz-template-package/vs-tree-ex';\nimport './tree.scss';\n\nexport const TreeControl = defineComponent({\n name: 'IBizTreeControl',\n components: {\n 'vs-tree': VsTreeComponent,\n },\n props: {\n /**\n * @description 树控件模型数据\n */\n modelData: { type: Object as PropType<IDETree>, required: true },\n /**\n * @description 应用上下文对象\n */\n context: { type: Object as PropType<IContext>, required: true },\n /**\n * @description 视图参数对象\n * @default {}\n */\n params: { type: Object as PropType<IParams>, default: () => ({}) },\n /**\n * @description 部件适配器\n */\n provider: { type: Object as PropType<IControlProvider> },\n /**\n * @description 部件激活模式,值为0:无激活,值为1:单击激活,值为2:双击激活\n * @default 2\n */\n mdctrlActiveMode: { type: Number, default: 2 },\n /**\n * @description 是否单选\n * @default true\n */\n singleSelect: { type: Boolean, default: true },\n /**\n * @description 是否是导航内的(即树导航里的树)\n */\n navigational: { type: Boolean, default: undefined },\n },\n setup() {\n const c = useControlController<TreeController>(\n (...args) => new TreeController(...args),\n );\n const ns = useNamespace(`control-${c.model.controlType!.toLowerCase()}`);\n // 默认选中项\n const checkedKeys = computed(() => {\n return c.state.selectedData.map(item => item._id);\n });\n\n // 节点创建的app实例,用于组件销毁时销毁所有实例\n let vueApps: App[] = [];\n // 引用的树组件实例\n const treeRef = ref();\n // 用于树强制刷新\n const treeRefreshKey = ref(createUUID());\n\n // 快捷搜索值\n const currentVal = ref('');\n\n const uuid = createUUID();\n\n // 启用面包屑功能\n const breadcrumb = ref(true);\n\n // 创建图标节点\n const createIconNode = (customProps: IData) => {\n const iop = vueH(IBizIcon, customProps);\n const vueApp = createApp(iop);\n const dom = document.createElement('span');\n vueApp.mount(dom);\n vueApps.push(vueApp);\n return dom;\n };\n\n /**\n * 创建新的节点对象,隔离组件数据和controller数据\n * @param {ITreeNodeData[]} nodes\n * @return {*} {IData[]}\n */\n const toElNodes = (nodes: ITreeNodeData[]): IData[] => {\n return nodes.map(node => {\n const iconDom = node?._icon\n ? createIconNode({ icon: node?._icon })\n : '';\n return {\n _id: node._id,\n _uuid: node._uuid,\n _leaf: node._leaf,\n _text: node._text,\n icon: iconDom,\n _disableSelect: node._disableSelect,\n };\n });\n };\n\n /** 树展示数据 */\n const treeData = computed(() => {\n if (!c.state.isLoaded) {\n return [];\n }\n const nodes = c.model.rootVisible\n ? c.state.rootNodes\n : c.state.rootNodes.reduce<ITreeNodeData[]>((result, nodeData) => {\n if (nodeData._children) {\n return result.concat(nodeData._children as ITreeNodeData[]);\n }\n return result;\n }, []);\n return toElNodes(nodes as ITreeNodeData[]);\n });\n\n /**\n * 根据id查找树节点数据对象\n * @export\n * @param {string} key (数据的_uuid 或者 _id)\n * @param {ITreeController} c\n * @return {*} {(ITreeNodeData | undefined)}\n */\n function findNodeData(\n key: string,\n controller: ITreeController,\n ): ITreeNodeData | undefined {\n const find = controller.state.items.find(item => item._id === key);\n if (find) {\n return find;\n }\n return controller.state.items.find(item => item._uuid === key);\n }\n\n /**\n * 触发节点加载数据\n * @author zk\n * @date 2023-05-29 09:16:07\n * @param {IData} item\n * @param {(nodes: IData[]) => void} callback\n */\n const loadData = async (\n item: IData,\n callback: (nodes: IData[]) => void,\n ) => {\n // 没加载前拦截\n if (!c.state.isLoaded) {\n return;\n }\n\n // 加载时拦截点击事件\n let nodes: ITreeNodeData[];\n const nodeData = findNodeData(item.data._uuid, c)!;\n // 有搜索值为搜索框搜索,必须请求后台数据过滤\n if (nodeData && nodeData._children && !c.state.query) {\n ibiz.log.debug('节点展开加载-本地', nodeData);\n nodes = nodeData._children;\n } else {\n ibiz.log.debug('节点展开加载-远程', nodeData);\n nodes = await c.loadNodes(nodeData);\n }\n // 根节点搜索时,返回树展示数据,并强制刷新\n if (nodes && c.state.rootNodes.includes(nodes[0])) {\n callback(treeData.value);\n c.state.mobExpandedKey = '';\n treeRefreshKey.value = createUUID();\n return;\n }\n callback(toElNodes(nodes));\n };\n\n /**\n * 多选时选中节点变更\n *\n * @param {ITreeNodeData} nodeData\n */\n const onNodeCheck = (event: MouseEvent, opts: IData) => {\n if (c.state.singleSelect) {\n return;\n }\n const { originData } = opts;\n // 选中相关处理\n const { selectedData } = c.state;\n const nodeData = findNodeData(originData._uuid, c)!;\n // 选中里没有则添加,有则删除\n const filterArr = selectedData.filter(\n (item: IData) => item._id !== nodeData._id,\n );\n if (filterArr.length === selectedData.length) {\n c.setSelection(selectedData.concat([nodeData]));\n } else {\n c.setSelection(filterArr);\n }\n };\n\n const onNodeClick = (event: MouseEvent, opts: IData) => {\n event.stopPropagation();\n const { originData } = opts;\n if (!originData._leaf) {\n return;\n }\n onNodeCheck(event, opts);\n c.onTreeNodeClick(originData, event);\n };\n\n // 处理展开节点切换\n const handleExpandedLastKey = (data: IData) => {\n c.state.mobExpandedKey = data._uuid || '';\n };\n\n // 搜索\n const debounceSearch = debounce(async () => {\n if (treeRef.value) {\n // 获取最后展开的节点\n const breadcrumbList =\n treeRef.value?.tree?.tree?.store?.breadcrumb?.list;\n const breadcrumbListLast = breadcrumbList\n ? breadcrumbList[breadcrumbList.length - 1]\n : null;\n if (breadcrumbListLast) {\n breadcrumbListLast.childNodes = [];\n treeRef.value?.tree?.tree?.store?.nodesChange([]);\n breadcrumbListLast.loaded = false;\n breadcrumbListLast.setExpand(true);\n }\n }\n }, 500);\n\n const onInput = async (value: string): Promise<void> => {\n c.state.query = value;\n await c.load();\n };\n\n c.evt.on('onAfterRefreshParent', () => {\n debounceSearch();\n });\n\n c.evt.on('onLoadSuccess', () => {\n c.state.mobExpandedKey = '';\n treeRefreshKey.value = createUUID();\n });\n\n /**\n * 树数据格式化\n *\n * @author zk\n * @date 2023-07-03 11:07:59\n * @param {ITreeNodeData} data\n * @return {*}\n */\n const treeDataFormat = (data: ITreeNodeData) => {\n return {\n id: data._id,\n name: data._text,\n children: data._children,\n isLeaf: data._leaf,\n };\n };\n\n /**\n * 处理单选默认选中样式\n *\n * @author ljx\n * @date 2024-12-12 15:07:59\n * @param {IData} opts\n * @return {*}\n */\n const handleSingleSelect = (opts: IData) => {\n const { originData, loadingEl } = opts;\n if (checkedKeys.value.includes(originData._id) && loadingEl) {\n loadingEl.parentNode.parentNode.classList.add('selected');\n opts.store.selectedCurrent = opts;\n }\n };\n\n const renderContent = (\n h: (tag: string, opt: IData) => VNode,\n opts: IData,\n ) => {\n if (c.state.singleSelect) handleSingleSelect(opts);\n const { originData } = opts;\n if (!originData._leaf) {\n return h('div', {\n text: ibiz.i18n.t('control.tree.subordinate'),\n className: 'tree-button',\n click: (e: Event, _opts: IData) => {\n _opts.store.breadcrumb.list.push(_opts);\n _opts.setExpand(true);\n handleExpandedLastKey(originData);\n },\n });\n }\n };\n\n const customNodeClick = (event: MouseEvent, opts: IData) => {\n const { checked } = opts;\n opts.setChecked(!checked);\n onNodeClick(event, opts);\n };\n\n // vs树配置项\n const options = {\n maxHeight: '100%',\n // 继承父状态\n checkInherit: false,\n // 不能选择父节点\n nocheckParent: true,\n rootName: c.model.detreeNodes?.find(item => item.rootNode)?.name,\n renderContent,\n customNodeClick,\n };\n\n if (breadcrumb.value) {\n Object.assign(options, {\n breadcrumb: {\n el: `#breadcrumb${uuid}`,\n link: (node: IData, data: IData) => {\n const content = document.createElement('span');\n const textDom = document.createElement('span');\n textDom.innerText = data.name;\n if (data.icon instanceof HTMLElement) {\n content.appendChild(data.icon.cloneNode(true));\n }\n content.appendChild(textDom);\n content.className = `${ns.be('header', 'crumb')} ${ns.is(\n 'root',\n data._vsroot,\n )}`;\n content.onclick = () => handleExpandedLastKey.bind(this)(data);\n return content;\n },\n },\n });\n }\n\n onUnmounted(() => {\n // 卸载绘制的图标节点\n vueApps.forEach((vueApp: App) => {\n vueApp.unmount();\n });\n vueApps = [];\n });\n\n return {\n c,\n ns,\n treeRefreshKey,\n treeData,\n options,\n breadcrumb,\n checkedKeys,\n uuid,\n treeRef,\n onNodeCheck,\n onNodeClick,\n loadData,\n treeDataFormat,\n currentVal,\n onInput,\n };\n },\n render() {\n const slots: IData = {\n searchbar: () => {\n if (!this.c.enableQuickSearch) {\n return null;\n }\n return (\n <van-search\n modelValue={this.c.state.query}\n class={this.ns.b('quick-search')}\n clearable={true}\n placeholder={this.c.state.placeHolder}\n onUpdate:model-value={this.onInput}\n ></van-search>\n );\n },\n };\n const key = this.c.controlPanel ? 'tree' : 'default';\n slots[key] = () => {\n const content = [\n this.breadcrumb && (\n <div class={this.ns.be('header', 'container')}>\n <van-sticky>\n <div\n id={`breadcrumb${this.uuid}`}\n class={[\n this.ns.b('header'),\n this.ns.is('no-root', !this.c.model.rootVisible),\n ]}\n ></div>\n </van-sticky>\n </div>\n ),\n this.c.state.isCreated && this.c.state.isLoaded && (\n <vs-tree\n show-line\n ref='treeRef'\n key={this.treeRefreshKey}\n class={[this.ns.b('content')]}\n lazy={true}\n strictLeaf={true}\n options={this.options}\n show-checkbox={!this.c.state.singleSelect}\n showIcon={true}\n data={this.treeData}\n highlightCurrent={true}\n checkedKeys={this.checkedKeys}\n format={this.treeDataFormat}\n load={this.loadData}\n onCheck={this.onNodeCheck}\n ></vs-tree>\n ),\n ];\n return <div class={this.ns.b('container')}>{content}</div>;\n };\n return <iBizControlBase controller={this.c}>{slots}</iBizControlBase>;\n },\n});\n\nexport default TreeControl;\n"],"names":["_isSlot","s","_isVNode","TreeControl","defineComponent","components","VsTreeComponent","props","type","required","Object","default","setup","c","_a","_b","useControlController","args","TreeController","checkedKeys","useNamespace","computed","item","vueApps","ref","treeRefreshKey","createUUID","treeRef","uuid","iop","vueH","IBizIcon","customProps","vueApp","createApp","dom","toElNodes","nodes","createIconNode","node","mount","push","iconDom","map","result","nodeData","icon","findNodeData","key","controller","find","loadData","callback","treeData","state","onNodeCheck","event","opts","originData","selectedData","filterArr","onNodeClick","debug","loadNodes","handleExpandedLastKey","data","rootNodes","mobExpandedKey","value","_e","_i","breadcrumbList","_d","_c","_b2","_a2","breadcrumbListLast","_h","_g","_f","debounceSearch","treeDataFormat","setSelection","stopPropagation","_leaf","loadingEl","renderContent","h","handleSingleSelect","e","_opts","tree","customNodeClick","onInput","checked","on","evt","breadcrumb","options","content","textDom","ns","onUnmounted","className","click","setExpand","_createVNode","_resolveComponent","slots","maxHeight","checkInherit","nocheckParent","rootName","assign","link","document","innerText","appendChild","onclick","forEach","unmount","exports"],"mappings":"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"}
@@ -1,3 +1,3 @@
1
- var middlewares = {};
1
+ var frameTalkClientPc = {exports: {}};
2
2
 
3
- export { middlewares as __exports };
3
+ export { frameTalkClientPc as __module };
@@ -1,3 +1,3 @@
1
- var frameTalkClientPc = {exports: {}};
1
+ var middlewares = {};
2
2
 
3
- export { frameTalkClientPc as __module };
3
+ export { middlewares as __exports };
@@ -0,0 +1 @@
1
+ .ibiz-action-group__separator{width:100%;height:.0625rem;display:inline-block;vertical-align:middle;background-color:var(--ibiz-color-border)}.ibiz-action-group__button .van-button__text{display:flex;align-items:center;gap:var(--ibiz-spacing-extra-tight)}.ibiz-action-group .van-popover__content{display:flex;flex-direction:column}.ibiz-action-group .van-popover__content .van-button{padding:0;font-size:var(--van-popover-action-font-size);line-height:var(--van-line-height-md);width:var(--van-popover-action-width);height:var(--van-popover-action-height);border-color:var(--ibiz-color-white)}.ibiz-action-group .van-popover__content .van-button:before{border-color:var(--ibiz-color-white)}.ibiz-action-group .van-popover__content .van-button .van-button__text{display:flex;align-items:center;gap:var(--ibiz-spacing-extra-tight)}
@@ -0,0 +1,54 @@
1
+ import { PropType } from 'vue';
2
+ import { IButtonContainerState } from '@ibiz-template/runtime';
3
+ import { IAppDEUIActionGroupDetail } from '@ibiz/model-core';
4
+ import './action-group.scss';
5
+ export declare const IBizActionGroup: import("vue").DefineComponent<{
6
+ actionDetail: {
7
+ type: PropType<IAppDEUIActionGroupDetail>;
8
+ required: true;
9
+ };
10
+ actionsState: {
11
+ type: PropType<IButtonContainerState>;
12
+ required: true;
13
+ };
14
+ popoverClassName: {
15
+ type: StringConstructor;
16
+ };
17
+ direction: {
18
+ type: PropType<"vertical" | "horizontal">;
19
+ default: string;
20
+ };
21
+ }, {
22
+ ns: import("@ibiz-template/core").Namespace;
23
+ visible: import("vue").ComputedRef<boolean>;
24
+ buttonRef: import("vue").Ref<any>;
25
+ placement: import("vue").ComputedRef<"bottom" | "right" | "top-end" | "top-start" | "bottom-end" | "bottom-start" | "left-end" | "right-end" | "left-start" | "right-start">;
26
+ showPopover: import("vue").Ref<boolean>;
27
+ childPopover: import("vue").Ref<boolean>;
28
+ renderActions: () => ((import("vue/jsx-runtime").JSX.Element | undefined)[] | null)[];
29
+ onPopoverVisibleChange: (visible: boolean) => void;
30
+ }, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
31
+ actionClick: (detail: IAppDEUIActionGroupDetail, event: MouseEvent) => true;
32
+ popoverVisibleChange: (visible: boolean) => true;
33
+ }, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
34
+ actionDetail: {
35
+ type: PropType<IAppDEUIActionGroupDetail>;
36
+ required: true;
37
+ };
38
+ actionsState: {
39
+ type: PropType<IButtonContainerState>;
40
+ required: true;
41
+ };
42
+ popoverClassName: {
43
+ type: StringConstructor;
44
+ };
45
+ direction: {
46
+ type: PropType<"vertical" | "horizontal">;
47
+ default: string;
48
+ };
49
+ }>> & {
50
+ onActionClick?: ((detail: IAppDEUIActionGroupDetail, event: MouseEvent) => any) | undefined;
51
+ onPopoverVisibleChange?: ((visible: boolean) => any) | undefined;
52
+ }, {
53
+ direction: "vertical" | "horizontal";
54
+ }, {}>;
@@ -0,0 +1,165 @@
1
+ import { ref, computed, createVNode, resolveComponent, defineComponent } from 'vue';
2
+ import { useNamespace } from '@ibiz-template/vue3-util';
3
+ import '../../util/index.mjs';
4
+ import './action-group.css';
5
+ import { convertBtnType } from '../../util/button-util/button-util.mjs';
6
+
7
+ "use strict";
8
+ const IBizActionGroup = /* @__PURE__ */ defineComponent({
9
+ name: "IBizActionGroup",
10
+ props: {
11
+ actionDetail: {
12
+ type: Object,
13
+ required: true
14
+ },
15
+ actionsState: {
16
+ type: Object,
17
+ required: true
18
+ },
19
+ popoverClassName: {
20
+ type: String
21
+ },
22
+ direction: {
23
+ type: String,
24
+ default: "horizontal"
25
+ }
26
+ },
27
+ emits: {
28
+ actionClick: (detail, event) => true,
29
+ popoverVisibleChange: (visible) => true
30
+ },
31
+ setup(props, {
32
+ emit
33
+ }) {
34
+ const ns = useNamespace("action-group");
35
+ const showPopover = ref(false);
36
+ const buttonRef = ref();
37
+ const childPopover = ref(false);
38
+ const details = computed(() => {
39
+ if (props.actionDetail.detailType === "DEUIACTIONGROUP" && props.actionDetail.refUIActionGroup)
40
+ return props.actionDetail.refUIActionGroup.uiactionGroupDetails || [];
41
+ return [];
42
+ });
43
+ const visible = computed(() => {
44
+ const visible2 = details.value.some((item) => {
45
+ var _a, _b;
46
+ return (_b = (_a = props.actionsState) == null ? void 0 : _a[item.id]) == null ? void 0 : _b.visible;
47
+ });
48
+ return visible2;
49
+ });
50
+ const placement = computed(() => {
51
+ if (!buttonRef.value)
52
+ return props.direction === "horizontal" ? "right" : "bottom";
53
+ const {
54
+ innerWidth,
55
+ innerHeight
56
+ } = window;
57
+ const {
58
+ offsetLeft: x,
59
+ offsetTop: y,
60
+ offsetWidth: width
61
+ } = buttonRef.value.$el;
62
+ const centerX = innerWidth - width - 128;
63
+ const centerY = details.value.length ? innerHeight - details.value.length * 44 : innerHeight / 2;
64
+ if (y > centerY) {
65
+ if (props.direction === "horizontal")
66
+ return x > centerX ? "left-end" : "right-end";
67
+ return x > centerX ? "top-end" : "top-start";
68
+ }
69
+ if (props.direction === "horizontal")
70
+ return x > centerX ? "left-start" : "right-start";
71
+ return x > centerX ? "bottom-end" : "bottom-start";
72
+ });
73
+ const handleClick = async (detail, event, closePopover = false) => {
74
+ if (closePopover)
75
+ showPopover.value = false;
76
+ emit("actionClick", detail, event);
77
+ };
78
+ const onPopoverVisibleChange = (visible2) => {
79
+ emit("popoverVisibleChange", visible2);
80
+ };
81
+ const renderSeparator = (visible2) => {
82
+ if (visible2)
83
+ return createVNode("div", {
84
+ "class": ns.e("separator")
85
+ }, null);
86
+ };
87
+ const renderActions = () => {
88
+ var _a;
89
+ return (_a = details.value) == null ? void 0 : _a.map((detail) => {
90
+ var _a2, _b, _c;
91
+ if (detail.detailType === "DEUIACTIONGROUP")
92
+ return [renderSeparator(detail.addSeparator), createVNode(resolveComponent("iBizActionGroup"), {
93
+ "actionDetail": detail,
94
+ "onActionClick": handleClick,
95
+ "actionsState": props.actionsState,
96
+ "popoverClassName": props.popoverClassName,
97
+ "onPopoverVisibleChange": (visible2) => childPopover.value = visible2
98
+ }, null)];
99
+ if ((_b = (_a2 = props.actionsState) == null ? void 0 : _a2[detail.id]) == null ? void 0 : _b.visible)
100
+ return [renderSeparator(detail.addSeparator), createVNode(resolveComponent("van-button"), {
101
+ "size": "small",
102
+ "type": convertBtnType(detail.buttonStyle),
103
+ "text": detail.showCaption ? detail.caption : "",
104
+ "onClick": (e) => handleClick(detail, e, true),
105
+ "disabled": props.actionsState[detail.id].disabled,
106
+ "class": [ns.e("item"), (_c = detail.sysCss) == null ? void 0 : _c.codeName]
107
+ }, {
108
+ icon: () => {
109
+ return detail.showIcon && detail.sysImage && createVNode(resolveComponent("iBizIcon"), {
110
+ "icon": detail.sysImage
111
+ }, null);
112
+ }
113
+ })];
114
+ return null;
115
+ });
116
+ };
117
+ return {
118
+ ns,
119
+ visible,
120
+ buttonRef,
121
+ placement,
122
+ showPopover,
123
+ childPopover,
124
+ renderActions,
125
+ onPopoverVisibleChange
126
+ };
127
+ },
128
+ render() {
129
+ if (this.visible)
130
+ return createVNode(resolveComponent("van-popover"), {
131
+ "placement": this.placement,
132
+ "show": this.showPopover,
133
+ "onUpdate:show": ($event) => this.showPopover = $event,
134
+ "close-on-click-outside": !this.childPopover,
135
+ "class": [this.ns.b(), this.popoverClassName],
136
+ "onOpen": () => this.onPopoverVisibleChange(true),
137
+ "onClose": () => this.onPopoverVisibleChange(false)
138
+ }, {
139
+ reference: () => {
140
+ return createVNode(resolveComponent("van-button"), {
141
+ "size": "small",
142
+ "ref": "buttonRef",
143
+ "class": this.ns.e("button"),
144
+ "type": convertBtnType(this.actionDetail.buttonStyle)
145
+ }, {
146
+ default: () => {
147
+ var _a, _b;
148
+ return [createVNode("div", {
149
+ "class": this.ns.em("button", "text")
150
+ }, [((_a = this.actionDetail.refUIActionGroup) == null ? void 0 : _a.name) || ((_b = this.actionDetail.refUIActionGroup) == null ? void 0 : _b.id)]), createVNode("ion-icon", {
151
+ "class": this.ns.em("button", "icon"),
152
+ "name": this.direction === "horizontal" ? "chevron-forward-outline" : "chevron-down-outline"
153
+ }, null)];
154
+ }
155
+ });
156
+ },
157
+ default: () => {
158
+ return this.renderActions();
159
+ }
160
+ });
161
+ return void 0;
162
+ }
163
+ });
164
+
165
+ export { IBizActionGroup };
@@ -32,6 +32,7 @@ export declare const IBizActionToolbar: import("vue").DefineComponent<{
32
32
  }, {
33
33
  ns: import("@ibiz-template/core").Namespace;
34
34
  handleClick: (detail: IAppDEUIActionGroupDetail, event: MouseEvent) => Promise<void>;
35
+ renderSeparator: () => import("vue/jsx-runtime").JSX.Element;
35
36
  }, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
36
37
  actionDetails: {
37
38
  type: {
@@ -30,27 +30,40 @@ const IBizActionToolbar = /* @__PURE__ */ defineComponent({
30
30
  event.stopPropagation();
31
31
  emit("action-click", detail, event);
32
32
  };
33
+ const renderSeparator = () => {
34
+ return createVNode("div", {
35
+ "class": ns.e("separator")
36
+ }, null);
37
+ };
33
38
  return {
34
39
  ns,
35
- handleClick
40
+ handleClick,
41
+ renderSeparator
36
42
  };
37
43
  },
38
44
  render() {
39
45
  const details = this.actionDetails || [];
40
- if (this.mode === "buttons") {
46
+ if (this.mode === "buttons")
41
47
  return createVNode("div", {
42
48
  "class": [this.ns.b(), this.ns.m("buttons")]
43
49
  }, [details.length > 0 && details.map((detail) => {
44
- if (this.actionsState[detail.id].visible) {
45
- return [detail.addSeparator && createVNode("div", {
46
- "class": this.ns.e("separator")
47
- }, null), createVNode(resolveComponent("van-button"), {
50
+ var _a, _b, _c;
51
+ if (detail.detailType === "DEUIACTIONGROUP")
52
+ return [detail.addSeparator && this.renderSeparator(), createVNode(resolveComponent("iBizActionGroup"), {
53
+ "direction": "vertical",
54
+ "actionDetail": detail,
55
+ "actionsState": this.actionsState,
56
+ "onActionClick": this.handleClick,
57
+ "popoverClassName": this.ns.b("action-group")
58
+ }, null)];
59
+ if ((_b = (_a = this.actionsState) == null ? void 0 : _a[detail.id]) == null ? void 0 : _b.visible) {
60
+ return [detail.addSeparator && this.renderSeparator(), createVNode(resolveComponent("van-button"), {
48
61
  "size": "small",
49
62
  "text": detail.showCaption ? detail.caption : "",
50
63
  "type": convertBtnType(detail.buttonStyle),
51
64
  "onClick": (e) => this.handleClick(detail, e),
52
65
  "disabled": this.actionsState[detail.id].disabled,
53
- "class": [this.ns.e("item"), this.ns.is("disabled", false)]
66
+ "class": [this.ns.e("item"), this.ns.is("disabled", false), (_c = detail.sysCss) == null ? void 0 : _c.codeName]
54
67
  }, {
55
68
  icon: () => {
56
69
  return detail.showIcon && detail.sysImage && createVNode(resolveComponent("iBizIcon"), {
@@ -61,7 +74,6 @@ const IBizActionToolbar = /* @__PURE__ */ defineComponent({
61
74
  }
62
75
  return null;
63
76
  })]);
64
- }
65
77
  return createVNode("div", null, [ibiz.i18n.t("component.actionToolbar.noSupportDropDown")]);
66
78
  }
67
79
  });
@@ -1 +1 @@
1
- .ibiz-button-list{width:100%;height:100%}.ibiz-button-list .van-button{border:none}.ibiz-button-list .van-button .van-button__text{display:flex;align-items:center;gap:var(--ibiz-spacing-extra-tight)}.ibiz-button-list .van-button .van-button__text .ibiz-icon{display:flex;align-items:center;justify-content:center;width:var(--ibiz-width-icon-medium);height:var(--ibiz-width-icon-medium);font-size:var(--ibiz-width-icon-medium)}.ibiz-button-list__content{display:flex;flex-wrap:wrap;gap:var(--ibiz-spacing-extra-tight)}.ibiz-button-list__popover{--ibiz-color-bg-0:var(--van-popover-light-text-color)}.ibiz-button-list__popover .van-popover__action--disabled,.ibiz-button-list__popover .van-popover__action--disabled:active{color:var(--ibiz-color-disabled-text)!important;background-color:var(--ibiz-color-disabled-bg)}.ibiz-button-list__popover--item{display:flex;align-items:center;gap:var(--ibiz-spacing-extra-tight)}.ibiz-button-list__popover--item .ibiz-icon{display:flex;align-items:center;justify-content:center;width:var(--ibiz-width-icon-medium);height:var(--ibiz-width-icon-medium);font-size:var(--ibiz-width-icon-medium)}.ibiz-button-list__popover--caption{display:flex;line-height:100%;align-items:center;gap:var(--ibiz-spacing-extra-tight)}
1
+ .ibiz-button-list{width:100%;height:100%}.ibiz-button-list .van-button{border:none}.ibiz-button-list .van-button .van-button__text{display:flex;align-items:center;gap:var(--ibiz-spacing-extra-tight)}.ibiz-button-list .van-button .van-button__text .ibiz-icon{display:flex;align-items:center;justify-content:center;width:var(--ibiz-width-icon-medium);height:var(--ibiz-width-icon-medium);font-size:var(--ibiz-width-icon-medium)}.ibiz-button-list__content{display:flex;flex-wrap:wrap;gap:var(--ibiz-spacing-extra-tight)}.ibiz-button-list__button--caption{display:flex;line-height:100%;align-items:center;gap:var(--ibiz-spacing-extra-tight)}.ibiz-button-list__popover{--ibiz-color-bg-0:var(--van-popover-light-text-color)}.ibiz-button-list__popover .van-popover__action--disabled,.ibiz-button-list__popover .van-popover__action--disabled:active{color:var(--ibiz-color-disabled-text)!important;background-color:var(--ibiz-color-disabled-bg)}.ibiz-button-list__popover .van-popover__content{display:flex;flex-direction:column}.ibiz-button-list__popover .van-popover__content .van-button{padding:0;font-size:var(--van-popover-action-font-size);line-height:var(--van-line-height-md);width:var(--van-popover-action-width);height:var(--van-popover-action-height);border-color:var(--ibiz-color-white)}.ibiz-button-list__popover .van-popover__content .van-button:before{border-color:var(--ibiz-color-white)}.ibiz-button-list__popover .van-popover__content .van-button .van-button__text{display:flex;align-items:center;gap:var(--ibiz-spacing-extra-tight)}
@@ -1,4 +1,4 @@
1
- import { PropType } from 'vue';
1
+ import { PropType, Ref } from 'vue';
2
2
  import { JSX } from 'vue/jsx-runtime';
3
3
  import { IPanelButtonList, IDEFormButtonList } from '@ibiz/model-core';
4
4
  import { IButtonContainerState } from '@ibiz-template/runtime';
@@ -21,8 +21,9 @@ export declare const IBizButtonList: import("vue").DefineComponent<{
21
21
  };
22
22
  }, {
23
23
  ns: import("@ibiz-template/core").Namespace;
24
+ buttonRef: Ref<any>;
24
25
  renderDropdown: () => JSX.Element;
25
- renderActions: () => JSX.Element;
26
+ renderActions: (direction: 'horizontal' | 'vertical') => ((JSX.Element | undefined)[] | null)[];
26
27
  }, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
27
28
  click: (_id: string, _e?: MouseEvent) => true;
28
29
  }, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{