@aplus-frontend/ui
Version:
2 lines (1 loc) • 13.4 kB
JavaScript
;Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("vue"),C=require("vxe-table");require("vxe-table/es/style.css");const s=require("lodash-unified"),Ne=require("../ap-form/index.js");require("../config-provider/index.js");const Pe=require("../ap-table/constants.js"),d=require("../ap-table/utils.js"),Te=require("../ap-table/hooks/use-table-paging-ng.js"),S=require("@aplus-frontend/antdv"),qe=require("./hooks/use-inner-params.js"),F=require("./utils/table.js"),ze=require("./hooks/use-row-selection.js"),Ve=require("../ap-table/context.js"),h=require("./constants.js"),_e=require("./hooks/use-render-columns.js"),Ae=require("@aplus-frontend/antdv/es/theme/internal");require("../scroll-bar/index.js");const Le=require("../utils/index.js"),Oe=require("../utils/slot.js"),De=require("./hooks/use-table-style.js"),Ke=require("../utils/warning.js"),$e=require("./style/index.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("../scroll-bar/index.vue.js"),Me=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:{},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},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),Ke.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([]),a=e.ref(),w=e.ref(r.size),Q=De.useTableStyle(),[,Y]=Ae.useToken(),{t:Z}=Ge.useLocale(),R=e.ref(!0);C.VxeUI.setConfig({i18n:(t,o)=>Z(`ap.${t}`,o)});const{renderConfig:ee,updateSignal:te}=_e.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(a.value)return a.value.$el.querySelector(".vxe-table--header-inner-wrapper")}),P=e.computed(()=>(N++,r.columns?.filter(t=>!t.hideInSearch&&t.dataIndex&&(t.valueType||t.customRenderFormItem)&&!Pe.noRenderAsFormItemValueList.includes(t.valueType))?.sort((t,o)=>{let n=d.getColumnOrder(t.order);return d.getColumnOrder(o.order)-n})?.map(t=>{const o=d.updateFormProps(t,d.getFieldProps(t.fieldProps,{})),n={...t,fieldProps:{label:t.title,name:t.dataIndex,bordered:!0,...o||{},_signal:N},renderNode:void 0};return n.renderNode=d.getSearchFormItemRenderNode(n,e.unref(X)),n})||[])),oe=e.computed(()=>Le.isDef(r.manual)?r.manual:Oe.getValidVNodeList(b.searchFormExtra?.()||[]).some(o=>o.type?.name==="ApView")),ne=e.computed(()=>[u(),r.card?null:u("wrapper"),r.adaptive?u("adaptive"):null,r.sticky?u("sticky"):null,H.value].filter(Boolean)),T=e.computed(()=>d.recursionApColumns(e.unref(l),t=>{if(t.sorter===!0)return t.key||t.dataIndex}).filter(Boolean)),q=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:ae,handleTableChangeOptional:le,getPaging:se,setPaging:ue,submitWith:_}=Te.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 n=t.pageSize*(t.current-1);return{data:(r.pagination===!1?r.dataSource:r.dataSource.slice(n,n+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:q,sortFields:T,params:e.toRef(r,"params"),defaultData:r.defaultData,manual:e.unref(oe),formatParams:r.beforeSearchSubmit,pagination:r.pagination,onClickReset:Re,onAfterRequest:xe}),{sortChangeEvent:ie,filterChangeEvent:ce,paginationChangeEvent:de}=qe.useInnerParams(le);Ve.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});const fe=e.computed(()=>l.value.some(t=>t.fixed==="left"||t.fixed===!0)?"left":void 0),pe=e.computed(()=>s.isUndefined(r.loading)?i.loading:r.loading),me=e.computed(()=>s.isUndefined(r.dataSource)?i.records:r.dataSource),{selectedRows:B,rowSelection:p,...g}=ze.default({...m.value,dataSource:me,rowKey:r.rowKey}),ge=({checked:t})=>{const o=a.value;o&&o&&g.selectChange(t,o.getCheckboxRecords(),o.getCheckboxReserveRecords())},Ce=({checked:t})=>{const o=a.value;o&&g.selectAllChange(t,[...o.getCheckboxReserveRecords(),...o.getCheckboxRecords()])},he=()=>{const t=a.value;t&&g.selectRangeChange(t.getCheckboxRecords(),[...t.getCheckboxReserveRecords(),...t.getCheckboxRecords()])},ve=()=>{const t=a.value;t&&(B.value=[t.getRadioRecord()])},ye=({row:t})=>{const o=r.rowHighlightable;s.isFunction(o)&&o(t)};function we(){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=a.value;t&&(p.value.type==="radio"?(t.clearRadioRow(),t.clearRadioReserve()):(t.clearCheckboxRow(),t.clearCheckboxReserve()))}function Se(t){s.isFunction(r.rowKey)||(g.selectMultiByKeys(t),$())}function be(t){const o=a.value;if(!o)return;const n=String(t[r.rowKey]),c=o.getRowById(n);o.setCurrentRow(c)}function Re(){const t=a.value;t&&(t.clearSort(),t.clearFilter())}function $(){e.nextTick(()=>{p.value.type==="radio"?a.value?.setRadioRowKey(p.value.selectedRowKeys[0]):a.value?.setCheckboxRowKey(p.value.selectedRowKeys,!0)})}function xe(t){$(),r.onReady&&e.nextTick(()=>{r.onReady(t)})}async function ke(t,o){const n=i.records[t];if(n)return a.value?.scrollToRow(n,o)}const Be=t=>s.isFunction(r.rowKey)?r.rowKey(t):t[r.rowKey];async function Ee(t,o=!0){const n=a.value;if(!n)return;const c=s.isArray(t)?t:[t],Fe=(n.getData()||[]).filter(Ie=>c.includes(Be(Ie)));n.setRowExpand(Fe,o)}return e.watch(()=>[r.columnResizable,r.columns],()=>{const t=we();l.value=t,r.onShownColumnsChange?.(t),I.value=t},{deep:!0,immediate:!0}),e.watch(()=>r.dataSource,t=>{ae(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:Se,clearAll:E},scrollToRow:ke,getDataSource:()=>e.unref(i.records),setCurrentRow:be,getPaging:se,setPaging:ue,getSearchFormSorterItems:O,setSearchFormSorterItems:D,resetSearchFormSorterItems:K,setRowExpand:Ee}),(t,o)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(ne.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(Ne.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,n=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(n.renderNode),{key:n.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:a,key:e.unref(te),data:e.unref(i).records,"sort-config":{remote:T.value.length>0,trigger:"cell"},"filter-config":{remote:q.value.length>0},loading:pe.value,style:e.unref(Q),size:w.value,onSortChange:e.unref(ie),onFilterChange:e.unref(ce),onCheckboxChange:ge,onCheckboxRangeChange:he,onCheckboxAll:Ce,onRadioChange:ve,onCurrentRowChange:ye}),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:fe.value}),e.createSlots({content:e.withCtx(n=>[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(r.expandable.renderContent(n))))]),_:2},[t.expandable?.renderCell?{name:"default",fn:e.withCtx(n=>[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(t.expandable.renderCell(n.$table.isRowExpandByRow(n.row),n.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),n=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(n),{key:n.props.colId}))),128))]),_:2},[e.renderList(e.unref(s.omit)(b,["searchFormExtra"]),(n,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(We.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(de)}),null,16,["class","onChange"])):e.createCommentVNode("",!0)],2)],6)],6))}});exports.default=Me;