vxe-pc-ui
Version:
A vue based PC component library
1 lines • 4.13 kB
JavaScript
;Object.defineProperty(exports,"__esModule",{value:!0}),exports.useWidgetPropDataSource=useWidgetPropDataSource;var _vue=require("vue"),_core=require("@vxe-ui/core"),_formItem=_interopRequireDefault(require("../../../form/src/form-item")),_button=_interopRequireDefault(require("../../../button/src/button")),_textarea=_interopRequireDefault(require("../../../textarea/src/textarea")),_tip=_interopRequireDefault(require("../../../tip/src/tip"));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function useWidgetPropDataSource(a,e){const u=Object.assign({},e).isSubOption,s=(0,_vue.ref)(""),d=(0,_vue.ref)([]),t=()=>{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]},o=/^(\s|\t)+/,l=e=>o.test(e),p=()=>{var e=a["renderParams"],e=e["widget"],e=e.options.options||[];const o=[];e.forEach((e,t)=>{e=e.options;e&&e.length&&o.push(t)}),d.value=o},r=()=>{var e=a["renderParams"],e=e["widget"];const r=[],i=s.value.split("\n");let n=null;u?i.forEach((e,t)=>{var t=i[t+1],o=e.trim();if(o){o={value:o};if(n){if(l(e))return void n.options.push(o);n=null}r.push(o),t&&l(t)&&(n=Object.assign(o,{options:[]}))}}):i.forEach(e=>{r.push({value:e.trim()})}),e.options.options=r,p()},i=()=>{var e,t=a["renderParams"],t=t["widget"];const o=[];null!=(e=t.options.options)&&e.forEach(e=>{o.push(e.value),null!=(e=e.options)&&e.forEach(e=>{o.push(` `+e.value)})}),s.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:r,slots:{default(){return(0,_vue.h)("div",{class:"vxe-form-design--widget-form-item-data-source-popup"},[(0,_vue.h)(_tip.default,{status:"primary",title:"",content:(0,_core.getI18n)("vxe.formDesign.widgetProp.dataSource."+(u?"batchEditSubTip":"batchEditTip"))}),(0,_vue.h)(_textarea.default,{resize:"none",modelValue:s.value,"onUpdate:modelValue"(e){s.value=e}})])}}})},c=(r,i,e,o,t,n,u)=>{return(0,_vue.h)("div",{class:["vxe-form-design--widget-form-item-data-source-option",{"is--first":n,"is--last":u}]},[(0,_vue.h)("div",{class:"vxe-form-design--widget-expand-btn"},!i&&t?[(0,_vue.h)("i",{class:e?(0,_core.getIcon)().FORM_DESIGN_WIDGET_OPTION_EXPAND_CLOSE:(0,_core.getIcon)().FORM_DESIGN_WIDGET_OPTION_EXPAND_OPEN,onClick(){var t;t=o,d.value.includes(t)?d.value=d.value.filter(e=>e!==t):d.value.push(t)}})]:[]),(0,_vue.h)("input",{class:"vxe-default-input",value:r.value,onInput(e){r.value=e.target.value}}),(0,_vue.h)(_button.default,{status:"danger",mode:"text",icon:(0,_core.getIcon)().FORM_DESIGN_WIDGET_DELETE,onClick(){var t,e,o;t=r,e=i,o=(o=(o=a.renderParams).widget).options,e?e.options&&(e.options=e.options.filter(e=>e!==t)):o.options=o.options.filter(e=>e!==t)}})])},n=((0,_vue.watch)(()=>a.renderParams.widget,()=>{p()}),(0,_vue.onMounted)(()=>{p()}),()=>[(0,_vue.h)("div",{},[(0,_vue.h)(_button.default,{status:"primary",mode:"text",content:(0,_core.getI18n)("vxe.formDesign.widgetProp.dataSource.addOption"),onClick:t}),(0,_vue.h)(_button.default,{status:"primary",mode:"text",content:(0,_core.getI18n)("vxe.formDesign.widgetProp.dataSource.batchEditOption"),onClick:i})]),(0,_vue.h)("div",{class:"vxe-form-design--widget-form-item-data-source-wrapper"},(()=>{var e=a["renderParams"],e=e["widget"],e=e["options"];const i=e.options,n=[];return i&&i.forEach((t,e)=>{var o=t["options"];const r=d.value.includes(e);o&&o.length?(n.push(c(t,null,r,e,!0,0===e,e===i.length-1)),r&&n.push((0,_vue.h)("div",{class:"vxe-form-design--widget-form-item-data-source-sub-option"},o.map(e=>c(e,t,r,0,!1,!1,!1))))):n.push(c(t,null,r,e,!1,0===e,e===i.length-1))}),n})())]);return{renderDataSourceFormItem(){return(0,_vue.h)(_formItem.default,{title:(0,_core.getI18n)("vxe.formDesign.widgetProp.dataSource.name"),field:"options"},{default(){return n()}})},renderDataSourceFormItemContent:n}}