@aplus-frontend/ui
Version:
2 lines (1 loc) • 13.5 kB
JavaScript
;Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("vue"),S=require("@aplus-frontend/antdv"),Pe=require("@aplus-frontend/antdv/es/theme/internal"),s=require("lodash-unified"),C=require("vxe-table");require("vxe-table/es/style.css");const qe=require("../ap-table/constants.js"),Te=require("../ap-table/context.js"),ze=require("../ap-table/hooks/use-table-paging-ng.js"),d=require("../ap-table/utils.js");require("../config-provider/index.js");require("../scroll-bar/index.js");require("../utils/index.js");const Ve=require("../utils/slot.js"),_e=require("../utils/warning.js"),Ae=require("../ap-form/index.js"),h=require("./constants.js"),Le=require("./hooks/use-inner-params.js"),Oe=require("./hooks/use-render-columns.js"),De=require("./hooks/use-row-selection.js"),Ke=require("./hooks/use-table-style.js"),$e=require("./style/index.js"),F=require("./utils/table.js"),Ue=require("../config-provider/hooks/use-namespace.js"),G=require("../config-provider/hooks/use-global-config.js"),Ge=require("../config-provider/hooks/use-locale.js"),We=require("../utils/is.js"),Me=require("../scroll-bar/index.vue.js"),je=e.defineComponent({name:"ApGrid",__name:"index",props:{dropdownPrefixCls:{},bordered:{type:Boolean,default:!1},locale:{},onChange:{},onResizeColumn:{},getPopupContainer:{},scroll:{},sortDirections:{default:()=>["ascend","descend"]},showSorterTooltip:{type:[Boolean,Object],default:!1},prefixCls:{},tableLayout:{},title:{},id:{},showHeader:{type:Boolean,default:!0},components:{},customRow:{},customHeaderRow:{},direction:{},expandFixed:{type:[String,Boolean],default:!1},expandColumnWidth:{},expandedRowKeys:{},defaultExpandedRowKeys:{},expandedRowRender:{},expandRowByClick:{type:Boolean,default:!1},expandIcon:{},onExpand:{},onExpandedRowsChange:{},defaultExpandAllRows:{type:Boolean,default:!1},indentSize:{default:15},expandIconColumnIndex:{},showExpandColumn:{type:Boolean,default:!0},expandedRowClassName:{},childrenColumnName:{default:"children"},rowExpandable:{},sticky:{type:[Boolean,Object],default:!1},transformCellText:{},rowHoverable:{type:Boolean},rowClassName:{},stripe:{type:Boolean},headerRowClassName:{},footerRowClassName:{},cellClassName:{},headerCellClassName:{},footerCellClassName:{},rowStyle:{},headerRowStyle:{},footerRowStyle:{},cellStyle:{},headerCellStyle:{},footerCellStyle:{},height:{},minHeight:{},maxHeight:{},mergeCells:{},mergeFooterItems:{},cellConfig:{},loading:{type:Boolean,default:void 0},loadingConfig:{},headerCellConfig:{},footerCellConfig:{},round:{type:Boolean,default:void 0},columns:{},rowSelection:{type:[Boolean,Object]},card:{type:Boolean,default:!1},params:{},request:{},defaultData:{},dataSource:{},onLoadingChange:{},onShownColumnsChange:{},searchForm:{type:[Boolean,Object],default:void 0},beforeSearchSubmit:{},pagination:{type:[Boolean,Object],default:void 0},searchFormWrapperStyle:{},tableWrapperStyle:{},wrapperStyle:{},manual:{type:Boolean,default:void 0},size:{default:"mini"},adaptive:{type:Boolean,default:!1},columnResizable:{type:[Boolean,Object],default:!1},rowKey:{default:"key"},footer:{},virtual:{type:[Boolean,Object],default:void 0},expandable:{},value:{},rowHighlightable:{type:[Boolean,Function],default:!1},treeConfig:{},onReady:{}},setup(W,{expose:M}){const b=e.useSlots(),r=W,v=e.getCurrentInstance()?.appContext.app;v&&!v.__VXE_PC_UI_INSTALLED__&&(v.use(C.VxeUI),v.__VXE_PC_UI_INSTALLED__=!0),_e.useDevWarning("ApGrid")(!1,"breaking","AgGrid has been EOL, Please use AgGrid(https://aplus.aplnk.com/aplus-ui/components/ag-grid/) instead.");const{e:y,b:u,be:j}=Ue.useNamespace("ap-grid"),H=$e.default("ap-grid"),X=G.useGlobalConfig("valueTypeMap"),J=G.useGlobalConfig("apGrid"),l=e.ref([]),I=e.ref([]),n=e.ref(),w=e.ref(r.size),Q=Ke.useTableStyle(),[,Y]=Pe.useToken(),{t:Z}=Ge.useLocale(),R=e.ref(!0);C.VxeUI.setConfig({i18n:(t,o)=>Z(`ap.${t}`,o)});const{renderConfig:ee,updateSignal:te}=Oe.useRenderColumns(l);let N=0;const m=e.computed(()=>{let t=r.rowSelection||J.value?.rowSelection;if(t)return t===!0?h.DEFAULT_ROW_SELECTION_CONFIG:{...h.DEFAULT_ROW_SELECTION_CONFIG,...t}}),re=e.computed(()=>{if(n.value)return n.value.$el.querySelector(".vxe-table--header-inner-wrapper")}),P=e.computed(()=>(N++,r.columns?.filter(t=>!t.hideInSearch&&t.dataIndex&&(t.valueType||t.customRenderFormItem)&&!qe.noRenderAsFormItemValueList.includes(t.valueType))?.sort((t,o)=>{let a=d.getColumnOrder(t.order);return d.getColumnOrder(o.order)-a})?.map(t=>{const o=d.updateFormProps(t,d.getFieldProps(t.fieldProps,{})),a={...t,fieldProps:{label:t.title,name:t.dataIndex,bordered:!0,...o||{},_signal:N},renderNode:void 0};return a.renderNode=d.getSearchFormItemRenderNode(a,e.unref(X)),a})||[])),oe=e.computed(()=>We.isDef(r.manual)?r.manual:Ve.getValidVNodeList(b.searchFormExtra?.()||[]).some(o=>o.type?.name==="ApView")),ae=e.computed(()=>[u(),r.card?null:u("wrapper"),r.adaptive?u("adaptive"):null,r.sticky?u("sticky"):null,H.value].filter(Boolean)),q=e.computed(()=>d.recursionApColumns(e.unref(l),t=>{if(t.sorter===!0)return t.key||t.dataIndex}).filter(Boolean)),T=e.computed(()=>d.recursionApColumns(e.unref(l),t=>{if(t.filters&&!t.onFilter)return t.key||t.dataIndex}).filter(Boolean)),{formRef:f,submit:x,reset:k,refresh:z,data:i,tableProps:V,setDataSource:ne,handleTableChangeOptional:le,getPaging:se,setPaging:ue,submitWith:_,getLastParams:ie}=ze.useTablePaging({async request(t){if(m.value&&!m.value.preserveSelectedRowKeys&&s.isUndefined(r.dataSource)&&!R.value&&E(),R.value&&(R.value=!1),!s.isUndefined(r.dataSource)){const a=t.pageSize*(t.current-1);return{data:(r.pagination===!1?r.dataSource:r.dataSource.slice(a,a+t.pageSize))||[],total:r.dataSource.length||0}}const o=await r.request?.(t);return{data:o?.data||[],total:o?.total||0}},namespace:"ap-grid",filterFields:T,sortFields:q,params:e.toRef(r,"params"),defaultData:r.defaultData,manual:e.unref(oe),formatParams:r.beforeSearchSubmit,pagination:r.pagination,onClickReset:xe,onAfterRequest:ke}),{sortChangeEvent:ce,filterChangeEvent:de,paginationChangeEvent:fe}=Le.useInnerParams(le);Te.useProvideApTable({columns:e.computed(()=>l.value),columnsBackup:e.computed(()=>I.value),size:e.computed(()=>h.sizeMap[w.value]),updateColumns(t){l.value=t,r.onShownColumnsChange?.(t)},updateSize(t){w.value=h.sizeReverseMap[t]},renderConfig:e.computed(()=>({className:j("table-header","title"),color:Y.value.colorTextTertiary})),dataSource:e.computed(()=>e.unref(i).records),getSearchFormValues:L,setSearchFormValues:A,submit:x,submitWith:_,reset:k,refresh:z,getSearchFormSorterItems:O,setSearchFormSorterItems:D,resetSearchFormSorterItems:K,getLastParams:ie});const pe=e.computed(()=>l.value.some(t=>t.fixed==="left"||t.fixed===!0)?"left":void 0),me=e.computed(()=>s.isUndefined(r.loading)?i.loading:r.loading),ge=e.computed(()=>s.isUndefined(r.dataSource)?i.records:r.dataSource),{selectedRows:B,rowSelection:p,...g}=De.default({...m.value,dataSource:ge,rowKey:r.rowKey}),Ce=({checked:t})=>{const o=n.value;o&&o&&g.selectChange(t,o.getCheckboxRecords(),o.getCheckboxReserveRecords())},he=({checked:t})=>{const o=n.value;o&&g.selectAllChange(t,[...o.getCheckboxReserveRecords(),...o.getCheckboxRecords()])},ve=()=>{const t=n.value;t&&g.selectRangeChange(t.getCheckboxRecords(),[...t.getCheckboxReserveRecords(),...t.getCheckboxRecords()])},ye=()=>{const t=n.value;t&&(B.value=[t.getRadioRecord()])},we=({row:t})=>{const o=r.rowHighlightable;s.isFunction(o)&&o(t)};function Se(){return r.columns?.filter(t=>!t.hideInTable)||[]}function A(t){f.value?.apForm?.setFieldsValue?.(t)}function L(t=!1){const o=t?"getFieldsValueTransformed":"getFieldsValue";return f.value?.apForm?.[o]?.(!0)}function O(){return f.value?.getSorterItems()||[]}function D(t){f.value?.setSorterItems(t)}function K(){f.value?.resetSorterItems()}function E(){g.clearAll();const t=n.value;t&&(p.value.type==="radio"?(t.clearRadioRow(),t.clearRadioReserve()):(t.clearCheckboxRow(),t.clearCheckboxReserve()))}function be(t){s.isFunction(r.rowKey)||(g.selectMultiByKeys(t),$())}function Re(t){const o=n.value;if(!o)return;const a=String(t[r.rowKey]),c=o.getRowById(a);o.setCurrentRow(c)}function xe(){const t=n.value;t&&(t.clearSort(),t.clearFilter())}function $(){e.nextTick(()=>{p.value.type==="radio"?n.value?.setRadioRowKey(p.value.selectedRowKeys[0]):n.value?.setCheckboxRowKey(p.value.selectedRowKeys,!0)})}function ke(t){$(),r.onReady&&e.nextTick(()=>{r.onReady(t)})}async function Be(t,o){const a=i.records[t];if(a)return n.value?.scrollToRow(a,o)}const Ee=t=>s.isFunction(r.rowKey)?r.rowKey(t):t[r.rowKey];async function Fe(t,o=!0){const a=n.value;if(!a)return;const c=s.isArray(t)?t:[t],Ie=(a.getData()||[]).filter(Ne=>c.includes(Ee(Ne)));a.setRowExpand(Ie,o)}return e.watch(()=>[r.columnResizable,r.columns],()=>{const t=Se();l.value=t,r.onShownColumnsChange?.(t),I.value=t},{deep:!0,immediate:!0}),e.watch(()=>r.dataSource,t=>{ne(t)},{immediate:!0,deep:!0}),e.watch(()=>e.unref(i).loading,t=>{r.onLoadingChange?.(t)}),e.watch(()=>r.size,t=>{w.value=t}),M({submit:x,reset:k,refresh:z,submitWith:_,setSearchFormValues:A,getSearchFormValues:L,getShowColumns:()=>e.unref(l),rowSelection:{selectedRows:e.computed(()=>B.value),setSelectedRowKeys:be,clearAll:E},scrollToRow:Be,getDataSource:()=>e.unref(i.records),setCurrentRow:Re,getPaging:se,setPaging:ue,getSearchFormSorterItems:O,setSearchFormSorterItems:D,resetSearchFormSorterItems:K,setRowExpand:Fe}),(t,o)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(ae.value),style:e.normalizeStyle(t.wrapperStyle)},[e.unref(s.isUndefined)(t.dataSource)&&t.searchForm!==!1&&P.value.length>0?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(t.card?e.unref(y)("search-wrapper"):null),style:e.normalizeStyle(t.searchFormWrapperStyle)},[e.createVNode(e.unref(Ae.ApForm).SearchForm,e.mergeProps(t.searchForm||{},{ref_key:"formRef",ref:f,"custom-reset":"","submit-loading":e.unref(V).loading,onSubmit:e.unref(x),onReset:e.unref(k)}),e.createSlots({default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(P.value,a=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(a.renderNode),{key:a.dataIndex}))),128))]),_:2},[b.searchFormExtra?{name:"extra",fn:e.withCtx(()=>[e.renderSlot(t.$slots,"searchFormExtra")]),key:"0"}:void 0]),1040,["submit-loading","onSubmit","onReset"])],6)):e.createCommentVNode("",!0),e.createElementVNode("div",{class:e.normalizeClass([e.unref(y)("table-wrapper"),t.card?e.unref(y)("table-wrapper-card"):null]),style:e.normalizeStyle(t.tableWrapperStyle)},[e.createElementVNode("div",{class:e.normalizeClass(e.unref(u)("header-wrapper"))},[e.renderSlot(t.$slots,"title",{selectedRows:e.unref(B),selectedRowKeys:e.unref(p).selectedRowKeys,shownColumns:l.value,clearAll:E})],2),e.createElementVNode("div",{class:e.normalizeClass(e.unref(u)("vxe-wrapper"))},[(e.openBlock(),e.createBlock(e.unref(C.VxeTable),e.mergeProps(e.unref(F.toVxeProps)(r,m.value),{ref_key:"tableRef",ref:n,key:e.unref(te),data:e.unref(i).records,"sort-config":{remote:q.value.length>0,trigger:"cell"},"filter-config":{remote:T.value.length>0},loading:me.value,style:e.unref(Q),size:w.value,onSortChange:e.unref(ce),onFilterChange:e.unref(de),onCheckboxChange:Ce,onCheckboxRangeChange:ve,onCheckboxAll:he,onRadioChange:ye,onCurrentRowChange:we}),e.createSlots({empty:e.withCtx(()=>[e.createVNode(e.unref(S.Empty),{image:e.unref(S.Empty).PRESENTED_IMAGE_SIMPLE},null,8,["image"])]),loading:e.withCtx(()=>[e.createElementVNode("div",{class:e.normalizeClass(e.unref(y)("table-loading-wrapper"))},[e.createVNode(e.unref(S.Spin))],2)]),default:e.withCtx(()=>[r.expandable&&l.value.length?(e.openBlock(),e.createBlock(e.unref(C.VxeColumn),e.mergeProps({key:0},e.unref(F.getRowExpandProps)(t.expandable),{fixed:pe.value}),e.createSlots({content:e.withCtx(a=>[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(r.expandable.renderContent(a))))]),_:2},[t.expandable?.renderCell?{name:"default",fn:e.withCtx(a=>[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(t.expandable.renderCell(a.$table.isRowExpandByRow(a.row),a.row))))]),key:"0"}:void 0]),1040,["fixed"])):e.createCommentVNode("",!0),m.value&&l.value.length?(e.openBlock(),e.createBlock(e.unref(C.VxeColumn),e.mergeProps({key:1},e.unref(F.getRowSelectionProps)(e.unref(p),l.value,r.size),{resizable:!1,field:e.unref(h.ROW_SELECTION_FIELD)}),null,16,["field"])):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(ee),a=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(a),{key:a.props.colId}))),128))]),_:2},[e.renderList(e.unref(s.omit)(b,["searchFormExtra"]),(a,c)=>({name:c,fn:e.withCtx(U=>[e.renderSlot(t.$slots,c,e.normalizeProps(e.guardReactiveProps(U||{})))])}))]),1040,["data","sort-config","filter-config","loading","style","size","onSortChange","onFilterChange"]))],2),e.createElementVNode("div",{class:e.normalizeClass(e.unref(u)("pagination-wrapper"))},[t.sticky?(e.openBlock(),e.createBlock(e.unref(Me.default),{key:0,direction:"horizontal","scroll-container":re.value,"extra-size":-4.2,"bar-color":"var(--scrollbar-thumb-color-base)","track-color":"var(--table-header-bg, #f2f6f9)"},null,8,["scroll-container"])):e.createCommentVNode("",!0),t.pagination!==!1?(e.openBlock(),e.createBlock(e.unref(S.Pagination),e.mergeProps({key:1,class:e.unref(u)("pagination")},e.unref(V).pagination,{onChange:e.unref(fe)}),null,16,["class","onChange"])):e.createCommentVNode("",!0)],2)],6)],6))}});exports.default=je;