@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.
- package/dist/index-yGM1h2Ma.js +76 -0
- package/dist/index-yGM1h2Ma.js.map +1 -0
- package/dist/index.min.css +8 -8
- package/dist/index.system.min.js +1 -1
- package/dist/{quill-EpIYtlVK.js → quill-7fiycnP7.js} +2 -2
- package/dist/{quill-EpIYtlVK.js.map → quill-7fiycnP7.js.map} +1 -1
- package/dist/{quill-editor-U1UE37xw.js → quill-editor-Nndlb9WE.js} +2 -2
- package/dist/{quill-editor-U1UE37xw.js.map → quill-editor-Nndlb9WE.js.map} +1 -1
- package/dist/{quill-editor-preview-v7UO7Unq.js → quill-editor-preview-GUdcFmjn.js} +2 -2
- package/dist/{quill-editor-preview-v7UO7Unq.js.map → quill-editor-preview-GUdcFmjn.js.map} +1 -1
- package/es/_virtual/index12.mjs +2 -2
- package/es/_virtual/index13.mjs +2 -2
- package/es/_virtual/index17.mjs +2 -2
- package/es/_virtual/index18.mjs +2 -2
- package/es/editor/dropdown-list/dropdown-list-editor.provider.mjs +3 -0
- package/es/editor/dropdown-list/ibiz-cascader-dropdown/ibiz-cascader-dropdown.css +1 -0
- package/es/editor/dropdown-list/ibiz-cascader-dropdown/ibiz-cascader-dropdown.d.ts +84 -0
- package/es/editor/dropdown-list/ibiz-cascader-dropdown/ibiz-cascader-dropdown.mjs +149 -0
- package/es/editor/dropdown-list/index.d.ts +1 -0
- package/es/editor/dropdown-list/index.mjs +1 -0
- package/es/editor/index.mjs +11 -1
- package/es/editor/text-box/input/input.d.ts +1 -0
- package/es/editor/text-box/input/input.mjs +6 -5
- package/es/editor/upload/ibiz-file-upload/ibiz-file-upload.d.ts +2 -0
- package/es/editor/upload/ibiz-file-upload/ibiz-file-upload.mjs +3 -0
- package/es/editor/upload/upload-editor.controller.d.ts +4 -0
- package/es/editor/upload/upload-editor.controller.mjs +15 -1
- package/es/editor/upload/use/use-van-upload.d.ts +1 -0
- package/es/editor/upload/use/use-van-upload.mjs +8 -2
- package/es/index.mjs +1 -0
- package/es/node_modules/.pnpm/dingtalk-jsapi@3.0.38/node_modules/dingtalk-jsapi/lib/packages/frame-talk-client-pc/index.mjs +1 -1
- package/es/node_modules/.pnpm/dingtalk-jsapi@3.0.38/node_modules/dingtalk-jsapi/lib/sdk/middlewares/index.mjs +1 -1
- package/es/node_modules/.pnpm/lodash.clonedeep@4.5.0/node_modules/lodash.clonedeep/index.mjs +1 -1
- package/es/node_modules/.pnpm/lodash.isequal@4.5.0/node_modules/lodash.isequal/index.mjs +1 -1
- package/es/util/directive/loading.mjs +1 -0
- package/lib/_virtual/index12.cjs +2 -2
- package/lib/_virtual/index13.cjs +2 -2
- package/lib/_virtual/index17.cjs +2 -2
- package/lib/_virtual/index18.cjs +2 -2
- package/lib/editor/dropdown-list/dropdown-list-editor.provider.cjs +3 -0
- package/lib/editor/dropdown-list/ibiz-cascader-dropdown/ibiz-cascader-dropdown.cjs +151 -0
- package/lib/editor/dropdown-list/ibiz-cascader-dropdown/ibiz-cascader-dropdown.css +1 -0
- package/lib/editor/dropdown-list/index.cjs +2 -0
- package/lib/editor/index.cjs +11 -0
- package/lib/editor/text-box/input/input.cjs +6 -5
- package/lib/editor/upload/ibiz-file-upload/ibiz-file-upload.cjs +3 -0
- package/lib/editor/upload/upload-editor.controller.cjs +15 -1
- package/lib/editor/upload/use/use-van-upload.cjs +8 -2
- package/lib/index.cjs +2 -0
- package/lib/node_modules/.pnpm/dingtalk-jsapi@3.0.38/node_modules/dingtalk-jsapi/lib/packages/frame-talk-client-pc/index.cjs +1 -1
- package/lib/node_modules/.pnpm/dingtalk-jsapi@3.0.38/node_modules/dingtalk-jsapi/lib/sdk/middlewares/index.cjs +1 -1
- package/lib/node_modules/.pnpm/lodash.clonedeep@4.5.0/node_modules/lodash.clonedeep/index.cjs +1 -1
- package/lib/node_modules/.pnpm/lodash.isequal@4.5.0/node_modules/lodash.isequal/index.cjs +1 -1
- package/lib/util/directive/loading.cjs +1 -0
- package/package.json +4 -4
- package/dist/index-pP9MJGoH.js +0 -76
- package/dist/index-pP9MJGoH.js.map +0 -1
- package/es/editor/upload/use/use-ibiz-upload.d.ts +0 -95
- package/es/editor/upload/use/use-ibiz-upload.mjs +0 -170
- package/lib/editor/upload/use/use-ibiz-upload.cjs +0 -175
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
System.register(["vue","@ibiz-template/vue3-util","./quill-
|
|
2
|
-
//# sourceMappingURL=quill-editor-
|
|
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":"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"}
|
|
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-
|
|
2
|
-
//# sourceMappingURL=quill-editor-preview-
|
|
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-
|
|
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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"}
|
package/es/_virtual/index12.mjs
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
var
|
|
1
|
+
var middlewares = {};
|
|
2
2
|
|
|
3
|
-
export {
|
|
3
|
+
export { middlewares as __exports };
|
package/es/_virtual/index13.mjs
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
var
|
|
1
|
+
var frameTalkClientPc = {exports: {}};
|
|
2
2
|
|
|
3
|
-
export {
|
|
3
|
+
export { frameTalkClientPc as __module };
|
package/es/_virtual/index17.mjs
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
var
|
|
1
|
+
var lodash_clonedeep = {exports: {}};
|
|
2
2
|
|
|
3
|
-
export {
|
|
3
|
+
export { lodash_clonedeep as __module };
|
package/es/_virtual/index18.mjs
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
var
|
|
1
|
+
var lodash_isequal = {exports: {}};
|
|
2
2
|
|
|
3
|
-
export {
|
|
3
|
+
export { lodash_isequal as __module };
|
|
@@ -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
|
|
package/es/editor/index.mjs
CHANGED
|
@@ -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
|
|
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.
|
|
29
|
-
|
|
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
|
|
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"
|
|
@@ -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 {
|
|
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);
|