@ibiz-template/mob-vue3-components 0.7.41-alpha.10 → 0.7.41-alpha.12

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 (60) hide show
  1. package/dist/index-yGM1h2Ma.js +76 -0
  2. package/dist/index-yGM1h2Ma.js.map +1 -0
  3. package/dist/index.min.css +8 -8
  4. package/dist/index.system.min.js +1 -1
  5. package/dist/{quill-EpIYtlVK.js → quill-7fiycnP7.js} +2 -2
  6. package/dist/{quill-EpIYtlVK.js.map → quill-7fiycnP7.js.map} +1 -1
  7. package/dist/{quill-editor-U1UE37xw.js → quill-editor-Nndlb9WE.js} +2 -2
  8. package/dist/{quill-editor-U1UE37xw.js.map → quill-editor-Nndlb9WE.js.map} +1 -1
  9. package/dist/{quill-editor-preview-v7UO7Unq.js → quill-editor-preview-GUdcFmjn.js} +2 -2
  10. package/dist/{quill-editor-preview-v7UO7Unq.js.map → quill-editor-preview-GUdcFmjn.js.map} +1 -1
  11. package/es/_virtual/index12.mjs +2 -2
  12. package/es/_virtual/index13.mjs +2 -2
  13. package/es/_virtual/index17.mjs +2 -2
  14. package/es/_virtual/index18.mjs +2 -2
  15. package/es/editor/dropdown-list/dropdown-list-editor.provider.mjs +3 -0
  16. package/es/editor/dropdown-list/ibiz-cascader-dropdown/ibiz-cascader-dropdown.css +1 -0
  17. package/es/editor/dropdown-list/ibiz-cascader-dropdown/ibiz-cascader-dropdown.d.ts +84 -0
  18. package/es/editor/dropdown-list/ibiz-cascader-dropdown/ibiz-cascader-dropdown.mjs +149 -0
  19. package/es/editor/dropdown-list/index.d.ts +1 -0
  20. package/es/editor/dropdown-list/index.mjs +1 -0
  21. package/es/editor/index.mjs +11 -1
  22. package/es/editor/text-box/input/input.d.ts +1 -0
  23. package/es/editor/text-box/input/input.mjs +6 -5
  24. package/es/editor/upload/ibiz-file-upload/ibiz-file-upload.d.ts +2 -0
  25. package/es/editor/upload/ibiz-file-upload/ibiz-file-upload.mjs +3 -0
  26. package/es/editor/upload/upload-editor.controller.d.ts +4 -0
  27. package/es/editor/upload/upload-editor.controller.mjs +15 -1
  28. package/es/editor/upload/use/use-van-upload.d.ts +1 -0
  29. package/es/editor/upload/use/use-van-upload.mjs +8 -2
  30. package/es/index.mjs +1 -0
  31. package/es/node_modules/.pnpm/dingtalk-jsapi@3.0.38/node_modules/dingtalk-jsapi/lib/packages/frame-talk-client-pc/index.mjs +1 -1
  32. package/es/node_modules/.pnpm/dingtalk-jsapi@3.0.38/node_modules/dingtalk-jsapi/lib/sdk/middlewares/index.mjs +1 -1
  33. package/es/node_modules/.pnpm/lodash.clonedeep@4.5.0/node_modules/lodash.clonedeep/index.mjs +1 -1
  34. package/es/node_modules/.pnpm/lodash.isequal@4.5.0/node_modules/lodash.isequal/index.mjs +1 -1
  35. package/es/util/directive/loading.mjs +1 -0
  36. package/lib/_virtual/index12.cjs +2 -2
  37. package/lib/_virtual/index13.cjs +2 -2
  38. package/lib/_virtual/index17.cjs +2 -2
  39. package/lib/_virtual/index18.cjs +2 -2
  40. package/lib/editor/dropdown-list/dropdown-list-editor.provider.cjs +3 -0
  41. package/lib/editor/dropdown-list/ibiz-cascader-dropdown/ibiz-cascader-dropdown.cjs +151 -0
  42. package/lib/editor/dropdown-list/ibiz-cascader-dropdown/ibiz-cascader-dropdown.css +1 -0
  43. package/lib/editor/dropdown-list/index.cjs +2 -0
  44. package/lib/editor/index.cjs +11 -0
  45. package/lib/editor/text-box/input/input.cjs +6 -5
  46. package/lib/editor/upload/ibiz-file-upload/ibiz-file-upload.cjs +3 -0
  47. package/lib/editor/upload/upload-editor.controller.cjs +15 -1
  48. package/lib/editor/upload/use/use-van-upload.cjs +8 -2
  49. package/lib/index.cjs +2 -0
  50. package/lib/node_modules/.pnpm/dingtalk-jsapi@3.0.38/node_modules/dingtalk-jsapi/lib/packages/frame-talk-client-pc/index.cjs +1 -1
  51. package/lib/node_modules/.pnpm/dingtalk-jsapi@3.0.38/node_modules/dingtalk-jsapi/lib/sdk/middlewares/index.cjs +1 -1
  52. package/lib/node_modules/.pnpm/lodash.clonedeep@4.5.0/node_modules/lodash.clonedeep/index.cjs +1 -1
  53. package/lib/node_modules/.pnpm/lodash.isequal@4.5.0/node_modules/lodash.isequal/index.cjs +1 -1
  54. package/lib/util/directive/loading.cjs +1 -0
  55. package/package.json +4 -4
  56. package/dist/index-pP9MJGoH.js +0 -76
  57. package/dist/index-pP9MJGoH.js.map +0 -1
  58. package/es/editor/upload/use/use-ibiz-upload.d.ts +0 -95
  59. package/es/editor/upload/use/use-ibiz-upload.mjs +0 -170
  60. package/lib/editor/upload/use/use-ibiz-upload.cjs +0 -175
@@ -1,2 +1,2 @@
1
- System.register(["vue","@ibiz-template/vue3-util","./quill-EpIYtlVK.js","@ibiz-template/core","lodash-es","./index-pP9MJGoH.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-U1UE37xw.js.map
1
+ System.register(["vue","@ibiz-template/vue3-util","./quill-7fiycnP7.js","@ibiz-template/core","lodash-es","./index-yGM1h2Ma.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-Nndlb9WE.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"quill-editor-U1UE37xw.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":"kvBAgBA,OAAA,OAAAA,GAAA,YAAA,OAAA,UAAA,SAAA,KAAAA,CAAA,IAAA,mBAAA,CAAAC,EAAAD,CAAA,CACA,CACA,MAAAE,EAAAC,EAAA,UAAAC,EAAA,CACA,KAAA,YACA,MAAAC,EAAA,EACA,MAAAC,EAAA,EACA,MAAAC,EAAA,CACA,KAAAC,CACA,EAAA,CACA,MAAAC,EAAAC,EAAA,OAAA,EACAC,EAAAJ,EAAA,WACAK,EAAAC,EAAA,IAAA,EACAC,EAAA,KAAA,KAAA,QAAA,EACA,IAAAC,EAAA,KACA,MAAAC,EAAAH,EAAA,CACA,CAAA,GAAA,KAAA,IAAA,WAAA,eAAA,EAAA,GAAA,KAAA,IAAA,WAAA,UAAAI,EAAAC,EAAA,KAAA,CAAA,EAAA,CAAA,EAAAC,EAAAN,EAAA,EAAA,EAAAO,EAAAP,EAAA,EAAA,EACMX,EAAiBE,EAAAA,EAAAA,EACJiB,EAAAR,EAAA,EAAA,EACES,EAAuBT,EAAC,EAAA,EACtBU,EAAAV,EAAE,EAAA,IACVW,GAAA,CAAEhB,MAAAA,EAAAA,EAAAA,IAAAA,KAAAA,GAAAA,EAAAA,QAAAA,EAAAA,OAAAA,KAAAA,EAAQ,GAAAiB,EACrB,OAAWf,EAAY,OAAA,KAGvB,EAEMI,EAAW,yBAEjBC,EAAA,8BAIMC,EAA0B,MAAAU,GAAA,CAC9B,QAAaC,EAAYD,CAAA,EAGzBE,EAAA,MAAA,KAAA,KAAA,KAAA,WAAAT,EAAA,MAAAU,EAAAb,EAAA,KAAA,yCAEFc,EAAAC,IACAT,EAA4B,MAAMQ,EAAI,QAAAJ,EAAAM,CAAA,GAEtCC,EAAA,IAAA,CACA,GAAMb,CAAwBR,EAAA,aAG9B,MAA2BsB,EAAGrB,EAAG,YAAO,OAAA,0BAExC,MAAAqB,EACA,QAA4BvB,EAAA,wCAE5B,YAAAA,EAAA,WACA,CAAA,+BAEA,GAAAwB,IAAA,OAAA,CACMZ,MAAwBG,EAAMU,EAAMZ,CAAA,EAEpCY,GAAAA,GAAYZ,EAAAA,YAAiB,OAAA,CAC3BC,EAAaY,SAEjB,CACFf,EAAA,MAAAS,GACD,EAEKA,EACApB,EAAE2B,YAAc,QAClBvB,EAAA,QAAqBR,EAAA,OAAE,EAAA,CAEzB,EACF,OAAAgC,EAAC,IAAA,CAAAhC,EAAA,SAAAA,EAAA,QAAA,EAAA,IAAA,KAICA,EAAU,UAAeA,WACnBqB,EAAAA,OAAaY,EAAAA,EAMnBzB,EAAW,OAAGgB,IAEf,CAEKE,UAAOA,EACX,CAAA,EACEM,EAAA,IAAAhC,EAAA,KAAAkC,GAAA,CACF,GAAAA,EAAA,CACMP,MAAAA,EAAS,eAAe,kBAAiBvB,EAAA,QAAAA,EAAA,OAAA8B,EAAA9B,EAAA,YAAA,EAC/CI,EAAY2B,MAAeC,EAAA,UACzBT,EAAK,MAAAS,EAAA,YAELC,EAAAA,WACW,GACb,KAAE,OAEIT,IAAAA,EAAW,MAAM,IAAE,CACrB,CAAApB,GAAW,CAAAR,EAAW,QAGpBe,EAAA,MAAAf,EAAA,MACFI,EAAA,YAAA,OACAW,EAAAA,QAAUQ,EAAQC,KAAAA,GAEpBV,EAAA,MAAA,GACFwB,EAAe,IAAA,CACRxB,QAAc,EACrB,CAAA,GAGFkB,EAAAA,CAGI,UAAY,EACV,CAAA,QAsBApB,EAAAA,EACAC,KAAAA,EACF,QAAA0B,EAEF,SAAAzB,EAAE0B,UAAAA,EAAiBC,WAAAA,EACpB,WA1BG,IAAA,IAEEjC,KA0BNwB,aAvBI,IAAA,CAEFO,EAAA,MAAA,EAAEC,EAwBA,cAvBH,IAAA,qBAEDD,EAAA,MAAA,EACAP,CAqBM,CACF,EACAjB,QAAAA,CACA,IAAA2B,EAAeC,EACbnC,OAAAA,EAAmB,OACrB,MAAO,CAAA,KAAA,GAAA,EAAA,EAAA,KAAA,SAAA,KAAA,GAAA,EAAA,UAAA,EAAA,GAAA,KAAA,SAAA,KAAA,GAAA,EAAA,UAAA,EAAA,GAAA,KAAA,GAAA,EAAA,KAAA,KAAA,YAAA,CAAA,CAAA,IACLM,CAAQ,KAAA,UAAa8B,EAAAC,EAAA,kBAAA,EAAA,CACrBP,MAAAA,KAAe,iBACC,KAAA,WAChB,SAAE,KAAA,SACJ,SAAA,KAAA,SAEF,aAAA,KAAA,EAAA,aAAEE,cAAW,KAAA,EAAA,cACd,WAAA,KAAA,uBAED,KAAA,QAAA,EACMM,EACJ,WAAYC,GAAA,CACVrB,KAAK,WAACqB,CACR,CACD,EAAA,IAAA,EAAAH,EAAAC,EAAA,kBAAA,EAAA,mBAED,gBAAAG,GAAA,KAAA,QAAAA,EACMC,SAAAA,OACJV,MAAa,CAAA,KAAA,GAAQ,EAAA,OAAA,EAAA,KAAA,GAAA,EAAA,KAAA,KAAA,YAAA,CAAA,CAAA,EACtB,SAAA,KAAA,aAED,QAAA,IAAA,CAAAK,EAAA,MAAA,CACMM,MAAAA,KAAAA,GAAgBA,EAAA,SAAM,CAC1BjD,EAAAA,CAAI2C,EAAoB,MAAA,CACjB,IAAM,aACd,CAAA,KAAA,WAAA,YAAA,OAAAA,EAAA,MAAA,CAEM,UAAA,KAAA,OACH,IAAA,EAAA,IAAA,CAAA,CAAA,CAAA,EAAAA,EAAA,MAAA,CACD,MAAA,KAAA,GAAA,EAAA,QAAA,CACG,EAAA,CAAAA,EAAAC,EAAA,YAAA,EAAA,CACG,MAAA,KAAA,GAAA,EAAA,QAAA,EACC,QAAA,KAAA,cACCM,EAAAT,EAAA,KAAA,KAAA,EAAA,sBAAA,CAAA,EAAAA,EAAA,CACC,QAAA,IAAA,CAAAA,CAAA,CACA,CAAA,EAAAE,EAAAC,EAAA,YAAA,EAAA,CACE,MAAA,KAAA,GAAA,EAAA,SAAA,EACZK,QAAAA,KAAAA,cACD,KAAA,WACFC,EAAAR,EAAA,KAAA,KAAA,EAAA,uBAAA,CAAA,EAAAA,EAAA,CACKS,QAAG,IAAA,CAAAT,CAAA,CAAAD,CAAAA,CAAAA,CAAAA,CAAAA,CACP,CAAA,CAAA,CAAA,EAOK,CAAA,CAAA"}
1
+ {"version":3,"file":"quill-editor-Nndlb9WE.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,2 +1,2 @@
1
- System.register(["vue","@ibiz-template/vue3-util","./quill-EpIYtlVK.js","lodash-es","./index-pP9MJGoH.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-v7UO7Unq.js.map
1
+ System.register(["vue","@ibiz-template/vue3-util","./quill-7fiycnP7.js","lodash-es","./index-yGM1h2Ma.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-GUdcFmjn.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"quill-editor-preview-v7UO7Unq.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-GUdcFmjn.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,3 +1,3 @@
1
- var frameTalkClientPc = {exports: {}};
1
+ var middlewares = {};
2
2
 
3
- export { frameTalkClientPc as __module };
3
+ export { middlewares as __exports };
@@ -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 lodash_isequal = {exports: {}};
1
+ var lodash_clonedeep = {exports: {}};
2
2
 
3
- export { lodash_isequal as __module };
3
+ export { lodash_clonedeep as __module };
@@ -1,3 +1,3 @@
1
- var lodash_clonedeep = {exports: {}};
1
+ var lodash_isequal = {exports: {}};
2
2
 
3
- export { lodash_clonedeep as __module };
3
+ export { lodash_isequal as __module };
@@ -20,6 +20,9 @@ class DropDownListEditorProvider {
20
20
  case "EMOJI_PICKER":
21
21
  componentName = "IBizEmojiPicker";
22
22
  break;
23
+ case "MOBDROPDOWNLIST_CASCADER":
24
+ componentName = "IBizCascaderDropdown";
25
+ break;
23
26
  default:
24
27
  break;
25
28
  }
@@ -0,0 +1 @@
1
+ .ibiz-cascader-dropdown{height:100%}.ibiz-cascader-dropdown .van-field{font-size:var(--ibiz-form-item-font-size)}.ibiz-cascader-dropdown .van-field::after{display:none}.ibiz-cascader-dropdown .van-cell--clickable:active{background-color:transparent}.ibiz-cascader-dropdown--disabled{color:var(--ibiz-form-item-disabled-color);--van-field-input-text-color:var(--ibiz-form-item-disabled-color)}.ibiz-cascader-dropdown--readonly{--van-field-input-text-color:var(--ibiz-form-item-readonly-color);color:var(--ibiz-form-item-readonly-color)}.ibiz-cascader-dropdown input{text-align:var(--ibiz-form-item-container-editor-align)}.ibiz-cascader-dropdown.ibiz-cascader--readonly{text-align:var(--ibiz-form-item-container-editor-align)}
@@ -0,0 +1,84 @@
1
+ import { Ref } from 'vue';
2
+ import { DropDownListEditorController } from '../dropdown-list-editor.controller';
3
+ import './ibiz-cascader-dropdown.scss';
4
+ /**
5
+ * 移动端级联下拉列表(单选)
6
+ * @primary
7
+ * @description 使用van-cascader组件,用于选择树形代码表数据。基于`移动端下拉列表(单选)`编辑器扩展,编辑器样式代码名称为:CASCADER
8
+ * @ignoreprops autoFocus | overflowMode
9
+ * @ignoreemits infoTextChange | enter
10
+ */
11
+ export declare const IBizCascaderDropdown: import("vue").DefineComponent<{
12
+ value: (StringConstructor | NumberConstructor)[];
13
+ controller: import("@ibiz-template/vue3-util").RequiredProp<import("vue").PropType<DropDownListEditorController>, undefined, undefined>;
14
+ data: import("@ibiz-template/vue3-util").RequiredProp<import("vue").PropType<import("@ibiz-template/core").IApiData>, undefined, undefined>;
15
+ disabled: {
16
+ type: BooleanConstructor;
17
+ };
18
+ readonly: {
19
+ type: BooleanConstructor;
20
+ default: boolean;
21
+ };
22
+ autoFocus: {
23
+ type: BooleanConstructor;
24
+ default: boolean;
25
+ };
26
+ overflowMode: {
27
+ type: StringConstructor;
28
+ };
29
+ controlParams: {
30
+ type: ObjectConstructor;
31
+ required: boolean;
32
+ };
33
+ }, {
34
+ ns: import("@ibiz-template/core").Namespace;
35
+ c: DropDownListEditorController;
36
+ show: Ref<boolean>;
37
+ treeData: Ref<import("@ibiz-template/core").IApiData[]>;
38
+ selectValue: Ref<string | string[] | string[][] | null>;
39
+ curValue: Ref<string>;
40
+ onBlur: () => void;
41
+ onFocus: () => void;
42
+ openPopup: () => void;
43
+ onClose: () => void;
44
+ onChange: ($event: IData) => void;
45
+ onFinish: ($event: IData) => void;
46
+ }, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
47
+ change: (_value: unknown, _name?: string | undefined, _ignore?: boolean | undefined) => boolean;
48
+ blur: (_event?: import("@ibiz-template/core").IApiData | undefined) => boolean;
49
+ focus: (_event?: import("@ibiz-template/core").IApiData | undefined) => boolean;
50
+ enter: (_event?: import("@ibiz-template/core").IApiData | undefined) => boolean;
51
+ infoTextChange: (_text: string) => boolean;
52
+ }, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
53
+ value: (StringConstructor | NumberConstructor)[];
54
+ controller: import("@ibiz-template/vue3-util").RequiredProp<import("vue").PropType<DropDownListEditorController>, undefined, undefined>;
55
+ data: import("@ibiz-template/vue3-util").RequiredProp<import("vue").PropType<import("@ibiz-template/core").IApiData>, undefined, undefined>;
56
+ disabled: {
57
+ type: BooleanConstructor;
58
+ };
59
+ readonly: {
60
+ type: BooleanConstructor;
61
+ default: boolean;
62
+ };
63
+ autoFocus: {
64
+ type: BooleanConstructor;
65
+ default: boolean;
66
+ };
67
+ overflowMode: {
68
+ type: StringConstructor;
69
+ };
70
+ controlParams: {
71
+ type: ObjectConstructor;
72
+ required: boolean;
73
+ };
74
+ }>> & {
75
+ onFocus?: ((_event?: import("@ibiz-template/core").IApiData | undefined) => any) | undefined;
76
+ onBlur?: ((_event?: import("@ibiz-template/core").IApiData | undefined) => any) | undefined;
77
+ onChange?: ((_value: unknown, _name?: string | undefined, _ignore?: boolean | undefined) => any) | undefined;
78
+ onInfoTextChange?: ((_text: string) => any) | undefined;
79
+ onEnter?: ((_event?: import("@ibiz-template/core").IApiData | undefined) => any) | undefined;
80
+ }, {
81
+ disabled: boolean;
82
+ readonly: boolean;
83
+ autoFocus: boolean;
84
+ }, {}>;
@@ -0,0 +1,149 @@
1
+ import { ref, watch, resolveComponent, createVNode, defineComponent } from 'vue';
2
+ import { getDropdownProps, getEditorEmits, useNamespace } from '@ibiz-template/vue3-util';
3
+ import { isNil } from 'ramda';
4
+ import { IBizCommonRightIcon } from '../../common/right-icon/right-icon.mjs';
5
+ import '../../../util/index.mjs';
6
+ import './ibiz-cascader-dropdown.css';
7
+ import { usePopstateListener } from '../../../util/use-popstate-util/use-popstate-util.mjs';
8
+
9
+ "use strict";
10
+ const IBizCascaderDropdown = /* @__PURE__ */ defineComponent({
11
+ name: "IBizCascaderDropdown",
12
+ props: getDropdownProps(),
13
+ emits: getEditorEmits(),
14
+ setup(props, {
15
+ emit
16
+ }) {
17
+ const ns = useNamespace("cascader-dropdown");
18
+ const c = props.controller;
19
+ const treeData = ref([]);
20
+ const codeListMap = /* @__PURE__ */ new Map();
21
+ const curValue = ref("");
22
+ const selectValue = ref(null);
23
+ const show = ref(false);
24
+ const onClose = () => {
25
+ show.value = false;
26
+ };
27
+ const transformTreeData = (list, pValueField) => {
28
+ codeListMap.clear();
29
+ list.forEach((item) => {
30
+ codeListMap.set(item.value, {
31
+ ...item
32
+ });
33
+ });
34
+ const rootNodes = [];
35
+ if (pValueField) {
36
+ list.forEach((item) => {
37
+ const node = codeListMap.get(item.value);
38
+ if (isNil(item.data[pValueField])) {
39
+ rootNodes.push(node);
40
+ } else {
41
+ const parent = codeListMap.get(item.data[pValueField]);
42
+ if (parent) {
43
+ if (!parent.children) {
44
+ parent.children = [];
45
+ }
46
+ parent.children.push(node);
47
+ }
48
+ }
49
+ });
50
+ } else {
51
+ rootNodes.push(...list);
52
+ }
53
+ return rootNodes;
54
+ };
55
+ const loadCodeList = async () => {
56
+ const codeList = await c.loadCodeList(props.data);
57
+ const {
58
+ pvaluefield
59
+ } = c.editorParams;
60
+ treeData.value = transformTreeData(codeList, pvaluefield);
61
+ if (props.value) {
62
+ const item = codeListMap.get(props.value);
63
+ curValue.value = (item == null ? void 0 : item.text) || "";
64
+ }
65
+ };
66
+ loadCodeList();
67
+ const onFinish = ($event) => {
68
+ const {
69
+ value
70
+ } = $event;
71
+ onClose();
72
+ emit("change", value);
73
+ };
74
+ const onChange = ($event) => {
75
+ const {
76
+ value
77
+ } = $event;
78
+ emit("change", value);
79
+ };
80
+ watch(() => props.value, (newVal) => {
81
+ const item = codeListMap.get(newVal || "");
82
+ curValue.value = (item == null ? void 0 : item.text) || "";
83
+ }, {
84
+ immediate: true
85
+ });
86
+ const onBlur = () => {
87
+ emit("blur");
88
+ };
89
+ const onFocus = () => {
90
+ emit("focus");
91
+ };
92
+ const openPopup = () => {
93
+ if (props.disabled || props.readonly) {
94
+ return;
95
+ }
96
+ show.value = !show.value;
97
+ };
98
+ usePopstateListener(onClose);
99
+ return {
100
+ ns,
101
+ c,
102
+ show,
103
+ treeData,
104
+ selectValue,
105
+ curValue,
106
+ onBlur,
107
+ onFocus,
108
+ openPopup,
109
+ onClose,
110
+ onChange,
111
+ onFinish
112
+ };
113
+ },
114
+ render() {
115
+ return createVNode("div", {
116
+ "class": [this.ns.b(), this.disabled ? this.ns.m("disabled") : "", this.readonly ? this.ns.m("readonly") : ""]
117
+ }, [this.readonly && this.curValue, !this.readonly && createVNode(resolveComponent("van-field"), {
118
+ "modelValue": this.curValue,
119
+ "onUpdate:modelValue": ($event) => this.curValue = $event,
120
+ "readonly": true,
121
+ "disabled": this.disabled,
122
+ "placeholder": this.c.placeHolder,
123
+ "onBlur": this.onBlur,
124
+ "onFocus": this.onFocus,
125
+ "onClick": this.openPopup
126
+ }, {
127
+ "right-icon": !this.readonly && createVNode(IBizCommonRightIcon, null, null)
128
+ }), createVNode(resolveComponent("van-popup"), {
129
+ "show": this.show,
130
+ "onUpdate:show": ($event) => this.show = $event,
131
+ "round": true,
132
+ "position": "bottom",
133
+ "teleport": "body",
134
+ "close-on-popstate": true
135
+ }, {
136
+ default: () => [createVNode(resolveComponent("van-cascader"), {
137
+ "modelValue": this.selectValue,
138
+ "onUpdate:modelValue": ($event) => this.selectValue = $event,
139
+ "title": this.c.placeHolder ? this.c.placeHolder : " ",
140
+ "options": this.treeData,
141
+ "onClose": this.onClose,
142
+ "onChange": this.onChange,
143
+ "onFinish": this.onFinish
144
+ }, null)]
145
+ })]);
146
+ }
147
+ });
148
+
149
+ export { IBizCascaderDropdown };
@@ -1,4 +1,5 @@
1
1
  export { IBizDropdown } from './ibiz-dropdown/ibiz-dropdown';
2
2
  export { IBizEmojiPicker } from './ibiz-emoji-picker/ibiz-emoji-picker';
3
+ export { IBizCascaderDropdown } from './ibiz-cascader-dropdown/ibiz-cascader-dropdown';
3
4
  export * from './dropdown-list-editor.controller';
4
5
  export * from './dropdown-list-editor.provider';
@@ -1,5 +1,6 @@
1
1
  export { IBizDropdown } from './ibiz-dropdown/ibiz-dropdown.mjs';
2
2
  export { IBizEmojiPicker } from './ibiz-emoji-picker/ibiz-emoji-picker.mjs';
3
+ export { IBizCascaderDropdown } from './ibiz-cascader-dropdown/ibiz-cascader-dropdown.mjs';
3
4
  export { DropDownListEditorController } from './dropdown-list-editor.controller.mjs';
4
5
  export { DropDownListEditorProvider } from './dropdown-list-editor.provider.mjs';
5
6
 
@@ -32,6 +32,7 @@ import { IBizSwitch } from './switch/ibiz-switch/ibiz-switch.mjs';
32
32
  import { IBizRadio } from './radio-button-list/ibiz-radio/ibiz-radio.mjs';
33
33
  import { IBizDropdown } from './dropdown-list/ibiz-dropdown/ibiz-dropdown.mjs';
34
34
  import { IBizEmojiPicker } from './dropdown-list/ibiz-emoji-picker/ibiz-emoji-picker.mjs';
35
+ import { IBizCascaderDropdown } from './dropdown-list/ibiz-cascader-dropdown/ibiz-cascader-dropdown.mjs';
35
36
  import { IBizCheckboxList } from './check-box-list/ibiz-checkbox-list/ibiz-checkbox-list.mjs';
36
37
  import { IBizSlider } from './slider/ibiz-slider/ibiz-slider.mjs';
37
38
  import { IBizRaw } from './raw/ibiz-raw/ibiz-raw.mjs';
@@ -109,6 +110,7 @@ const IBizEditor = {
109
110
  v.component(IBizDropdown.name, IBizDropdown);
110
111
  v.component(IBizDropdownList.name, IBizDropdownList);
111
112
  v.component(IBizEmojiPicker.name, IBizEmojiPicker);
113
+ v.component(IBizCascaderDropdown.name, IBizCascaderDropdown);
112
114
  v.component(IBizCheckboxList.name, IBizCheckboxList);
113
115
  v.component(IBizSlider.name, IBizSlider);
114
116
  v.component(IBizRaw.name, IBizRaw);
@@ -177,6 +179,14 @@ const IBizEditor = {
177
179
  "MOBDROPDOWNLIST_EMOJI_PICKER",
178
180
  () => new DropDownListEditorProvider("EMOJI_PICKER")
179
181
  );
182
+ registerEditorProvider(
183
+ "ROPDOWNLIST_CASCADER",
184
+ () => new DropDownListEditorProvider("MOBDROPDOWNLIST_CASCADER")
185
+ );
186
+ registerEditorProvider(
187
+ "MOBDROPDOWNLIST_CASCADER",
188
+ () => new DropDownListEditorProvider("MOBDROPDOWNLIST_CASCADER")
189
+ );
180
190
  registerEditorProvider(
181
191
  "MOBCHECKLIST",
182
192
  () => new DropDownListEditorProvider("MOBCHECKLIST")
@@ -384,4 +394,4 @@ const IBizEditor = {
384
394
  }
385
395
  };
386
396
 
387
- export { CascaderEditorProvider, CheckBoxListEditorProvider, ColorPickerEditorProvider, DataPickerEditorProvider, DatePickerEditorProvider, DateRangeEditorProvider, DropDownListEditorProvider, FileUploaderEditorProvider, HtmlEditorProvider, IBizCascader, IBizCheckboxList, IBizColorPicker, IBizDatePicker, IBizDateRangePicker, IBizDropdown, IBizEditor, IBizEditorCarousel, IBizEmojiPicker, IBizFileUpload, IBizImageCropping, IBizImageSelect, IBizImageUpload, IBizInput, IBizInputNumber, IBizMPicker, IBizNumberRangePicker, IBizPicker, IBizPickerSelectView, IBizRadio, IBizRate, IBizSignature, IBizSlider, IBizSpan, IBizStepper, IBizSwitch, MarkDownEditorProvider, NumberRangeEditorProvider, RadioButtonListEditorProvider, RateEditorProvider, SliderEditorProvider, SpanEditorProvider, StepperEditorProvider, SwitchEditorProvider, TextBoxEditorProvider, IBizEditor as default };
397
+ export { CascaderEditorProvider, CheckBoxListEditorProvider, ColorPickerEditorProvider, DataPickerEditorProvider, DatePickerEditorProvider, DateRangeEditorProvider, DropDownListEditorProvider, FileUploaderEditorProvider, HtmlEditorProvider, IBizCascader, IBizCascaderDropdown, IBizCheckboxList, IBizColorPicker, IBizDatePicker, IBizDateRangePicker, IBizDropdown, IBizEditor, IBizEditorCarousel, IBizEmojiPicker, IBizFileUpload, IBizImageCropping, IBizImageSelect, IBizImageUpload, IBizInput, IBizInputNumber, IBizMPicker, IBizNumberRangePicker, IBizPicker, IBizPickerSelectView, IBizRadio, IBizRate, IBizSignature, IBizSlider, IBizSpan, IBizStepper, IBizSwitch, MarkDownEditorProvider, NumberRangeEditorProvider, RadioButtonListEditorProvider, RateEditorProvider, SliderEditorProvider, SpanEditorProvider, StepperEditorProvider, SwitchEditorProvider, TextBoxEditorProvider, IBizEditor as default };
@@ -43,6 +43,7 @@ export declare const IBizInput: import("vue").DefineComponent<{
43
43
  onClear: () => void;
44
44
  inputRef: import("vue").Ref<any>;
45
45
  showPassword: import("vue").Ref<boolean>;
46
+ enableshowpwd: boolean;
46
47
  switchPwd: () => void;
47
48
  }, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
48
49
  change: (_value: unknown, _name?: string | undefined, _ignore?: boolean | undefined) => boolean;
@@ -20,13 +20,13 @@ const IBizInput = /* @__PURE__ */ defineComponent({
20
20
  const editorModel = c.model;
21
21
  const inputRef = ref();
22
22
  const showPassword = ref(false);
23
- let showSwitchIcon = false;
23
+ let enableshowpwd = false;
24
24
  const rows = ref(2);
25
25
  if (editorModel.editorType === "TEXTAREA_10") {
26
26
  rows.value = 10;
27
27
  }
28
- if (c.editorParams.showswitchicon) {
29
- showSwitchIcon = c.editorParams.showswitchicon === "true";
28
+ if (c.editorParams.enableshowpwd) {
29
+ enableshowpwd = c.editorParams.enableshowpwd === "true" || c.editorParams.enableshowpwd === "TRUE";
30
30
  }
31
31
  const type = computed(() => {
32
32
  switch (editorModel.editorType) {
@@ -107,7 +107,7 @@ const IBizInput = /* @__PURE__ */ defineComponent({
107
107
  emit("change", "");
108
108
  };
109
109
  const switchPwd = () => {
110
- showPassword.value = !showPassword.value && showSwitchIcon;
110
+ showPassword.value = !showPassword.value;
111
111
  };
112
112
  return {
113
113
  c,
@@ -122,6 +122,7 @@ const IBizInput = /* @__PURE__ */ defineComponent({
122
122
  onClear,
123
123
  inputRef,
124
124
  showPassword,
125
+ enableshowpwd,
125
126
  switchPwd
126
127
  };
127
128
  },
@@ -144,7 +145,7 @@ const IBizInput = /* @__PURE__ */ defineComponent({
144
145
  }, [unitName]);
145
146
  };
146
147
  }
147
- if (this.type === "password") {
148
+ if (this.type === "password" && this.enableshowpwd) {
148
149
  slots["right-icon"] = () => {
149
150
  return this.showPassword ? createVNode("ion-icon", {
150
151
  "name": "eye-off-outline",
@@ -8,6 +8,7 @@ import { UploadEditorController } from '../upload-editor.controller';
8
8
  * @editorparams {name:accept,parameterType:string,description:允许上传的文件类型,van-uploader组件的accept属性}
9
9
  * @editorparams {name:uploadParams,parameterType:IData,description:上传参数}
10
10
  * @editorparams {name:exportParams,parameterType:IData,description:下载参数}
11
+ * @editorparams {name:showloading,parameterType:boolean,description:是否显示加载动画}
11
12
  * @ignoreprops autoFocus | overflowMode
12
13
  * @ignoreemits blur | focus | enter | infoTextChange
13
14
  *
@@ -44,6 +45,7 @@ export declare const IBizFileUpload: import("vue").DefineComponent<{
44
45
  name: string;
45
46
  url?: string | undefined;
46
47
  }[]>;
48
+ loading: import("vue").Ref<boolean>;
47
49
  onRemove: (file: import("@ibiz-template/core").IApiData) => void;
48
50
  beforeUpload: () => void;
49
51
  onDownload: (file: import("@ibiz-template/core").IApiData) => void;
@@ -17,6 +17,7 @@ const IBizFileUpload = /* @__PURE__ */ defineComponent({
17
17
  uploadUrl,
18
18
  headers,
19
19
  files,
20
+ loading,
20
21
  onRemove,
21
22
  beforeUpload,
22
23
  onDownload,
@@ -52,6 +53,7 @@ const IBizFileUpload = /* @__PURE__ */ defineComponent({
52
53
  uploadUrl,
53
54
  headers,
54
55
  files,
56
+ loading,
55
57
  onRemove,
56
58
  beforeUpload,
57
59
  onDownload,
@@ -77,6 +79,7 @@ const IBizFileUpload = /* @__PURE__ */ defineComponent({
77
79
  }, this.$attrs), {
78
80
  default: () => {
79
81
  return !this.readonly && !this.disabled && createVNode(resolveComponent("van-button"), {
82
+ "loading": this.loading,
80
83
  "class": this.ns.b("button"),
81
84
  "icon": "add-o",
82
85
  "type": "primary"
@@ -27,6 +27,10 @@ export declare class UploadEditorController extends EditorController<IFileUpload
27
27
  * 下载参数
28
28
  */
29
29
  exportParams?: IParams;
30
+ /**
31
+ * 显示加载动画
32
+ */
33
+ showLoading: boolean;
30
34
  /**
31
35
  * 文件类型
32
36
  *
@@ -31,6 +31,10 @@ class UploadEditorController extends EditorController {
31
31
  * 下载参数
32
32
  */
33
33
  __publicField(this, "exportParams");
34
+ /**
35
+ * 显示加载动画
36
+ */
37
+ __publicField(this, "showLoading", false);
34
38
  /**
35
39
  * 文件类型
36
40
  *
@@ -99,7 +103,14 @@ class UploadEditorController extends EditorController {
99
103
  this.multiple = false;
100
104
  }
101
105
  if (this.editorParams) {
102
- const { isDrag, multiple, accept, uploadParams, exportParams } = this.editorParams;
106
+ const {
107
+ isDrag,
108
+ multiple,
109
+ accept,
110
+ uploadParams,
111
+ exportParams,
112
+ showloading
113
+ } = this.editorParams;
103
114
  if (isDrag) {
104
115
  this.isDrag = Boolean(isDrag);
105
116
  }
@@ -109,6 +120,9 @@ class UploadEditorController extends EditorController {
109
120
  if (accept) {
110
121
  this.accept = accept;
111
122
  }
123
+ if (showloading) {
124
+ this.showLoading = Boolean(showloading);
125
+ }
112
126
  if (uploadParams) {
113
127
  try {
114
128
  this.uploadParams = JSON.parse(uploadParams);