UNPKG

vxe-design

Version:

A PC-based visual designer based on Vxe UI, used for building zero-code and low-code platforms

1 lines 3.8 kB
Object.defineProperty(exports,"__esModule",{value:!0}),exports.useWidgetPropDataSource=useWidgetPropDataSource;var _vue=require("vue"),_core=require("@vxe-ui/core");function useWidgetPropDataSource(a,e){let t=_core.VxeUI.getComponent("vxe-form-item"),u=_core.VxeUI.getComponent("vxe-button"),r=_core.VxeUI.getComponent("vxe-textarea"),n=_core.VxeUI.getComponent("vxe-tip");let s=Object.assign({},e).isSubOption,d=(0,_vue.ref)(""),l=(0,_vue.ref)([]),o=()=>{var e=a.renderParams,e=e.widget,t=e.options.options||[];t.push({value:(0,_core.getI18n)("vxe.formDesign.widgetProp.dataSource.defValue",[t.length+1])}),e.options.options=[...t]},i=/^(\s|\t)+/,p=e=>i.test(e),v=()=>{var e=a.renderParams,e=e.widget,e=e.options.options||[];let o=[];e.forEach((e,t)=>{e=e.options;e&&e.length&&o.push(t)}),l.value=o},c=(e,t)=>{l.value.includes(t)?l.value=l.value.filter(e=>e!==t):l.value.push(t)},g=(t,e)=>{var o=a.renderParams,o=o.widget,o=o.options;e?e.options&&(e.options=e.options.filter(e=>e!==t)):o.options=o.options.filter(e=>e!==t)},m=()=>{var e=a.renderParams,e=e.widget;let r=[],n=d.value.split("\n"),i=null;s?n.forEach((e,t)=>{var t=n[t+1],o=e.trim();if(o){o={value:o};if(i){if(p(e))return void i.options.push(o);i=null}r.push(o),t&&p(t)&&(i=Object.assign(o,{options:[]}))}}):n.forEach(e=>{r.push({value:e.trim()})}),e.options.options=r,v()},_=()=>{var e,t=a.renderParams,t=t.widget;let o=[];null!=(e=t.options.options)&&e.forEach(e=>{o.push(e.value),null!=(e=e.options)&&e.forEach(e=>{o.push(` `+e.value)})}),d.value=o.join("\n"),_core.VxeUI.modal.open({title:t.title+" - "+(0,_core.getI18n)("vxe.formDesign.widgetProp.dataSource.batchEditOption"),width:500,height:"50vh ",resize:!0,showFooter:!0,showCancelButton:!0,showConfirmButton:!0,confirmButtonText:(0,_core.getI18n)("vxe.formDesign.widgetProp.dataSource.buildOption"),onConfirm:m,slots:{default(){return(0,_vue.h)("div",{class:"vxe-form-design--widget-form-item-data-source-popup"},[(0,_vue.h)(n,{status:"primary",title:"",content:(0,_core.getI18n)("vxe.formDesign.widgetProp.dataSource."+(s?"batchEditSubTip":"batchEditTip"))}),(0,_vue.h)(r,{resize:"none",modelValue:d.value,"onUpdate:modelValue"(e){d.value=e}})])}}})},h=(t,e,o,r,n,i,a)=>(0,_vue.h)("div",{class:["vxe-form-design--widget-form-item-data-source-option",{"is--first":i,"is--last":a}]},[(0,_vue.h)("div",{class:"vxe-form-design--widget-expand-btn"},!e&&n?[(0,_vue.h)("i",{class:o?(0,_core.getIcon)().FORM_DESIGN_WIDGET_OPTION_EXPAND_CLOSE:(0,_core.getIcon)().FORM_DESIGN_WIDGET_OPTION_EXPAND_OPEN,onClick(){c(t,r)}})]:[]),(0,_vue.h)("input",{class:"vxe-default-input",value:t.value,onInput(e){t.value=e.target.value}}),(0,_vue.h)(u,{status:"danger",mode:"text",icon:(0,_core.getIcon)().FORM_DESIGN_WIDGET_DELETE,onClick(){g(t,e)}})]),f=((0,_vue.watch)(()=>a.renderParams.widget,()=>{v()}),(0,_vue.onMounted)(()=>{v()}),()=>[(0,_vue.h)("div",{},[(0,_vue.h)(u,{status:"primary",mode:"text",content:(0,_core.getI18n)("vxe.formDesign.widgetProp.dataSource.addOption"),onClick:o}),(0,_vue.h)(u,{status:"primary",mode:"text",content:(0,_core.getI18n)("vxe.formDesign.widgetProp.dataSource.batchEditOption"),onClick:_})]),(0,_vue.h)("div",{class:"vxe-form-design--widget-form-item-data-source-wrapper"},(()=>{var e=a.renderParams,e=e.widget,e=e.options;let n=e.options,i=[];return n&&n.forEach((t,e)=>{var o=t.options;let r=l.value.includes(e);o&&o.length?(i.push(h(t,null,r,e,!0,0===e,e===n.length-1)),r&&i.push((0,_vue.h)("div",{class:"vxe-form-design--widget-form-item-data-source-sub-option"},o.map(e=>h(e,t,r,0,!1,!1,!1))))):i.push(h(t,null,r,e,!1,0===e,e===n.length-1))}),i})())]);return{renderDataSourceFormItem(){return(0,_vue.h)(t,{title:(0,_core.getI18n)("vxe.formDesign.widgetProp.dataSource.name"),field:"options"},{default(){return f()}})},renderDataSourceFormItemContent:f}}