@farris/ui-vue
Version:
Farris Vue, a Farris Design based Vue3 component library.
2 lines (1 loc) • 13.7 kB
JavaScript
(function(s,j){typeof exports=="object"&&typeof module<"u"?j(exports,require("../common/index.umd.js"),require("vue"),require("@vueuse/core"),require("lodash-es"),require("../locale/index.umd.js"),require("../data-view/index.umd.js")):typeof define=="function"&&define.amd?define(["exports","../common/index.umd.js","vue","@vueuse/core","lodash-es","../locale/index.umd.js","../data-view/index.umd.js"],j):(s=typeof globalThis<"u"?globalThis:s||self,j(s["tree-grid"]={},s.common,s.Vue,s.VueUseCore,s.LodashES,s.locale,s.dataView))})(this,function(s,j,l,Oe,S,ce,o){"use strict";const Be={enable:{type:Boolean,default:!1},index:{type:Number,default:1},mode:{type:String,default:"server"},showGoto:{type:Boolean,default:!1},showIndex:{type:Boolean,default:!0},showLimits:{type:Boolean,default:!1},showPageInfo:{type:Boolean,default:!0},size:{type:Number,default:20},sizeLimits:{type:Array,default:[10,20,30,50,100]},total:{type:Number,default:0}},De={enable:{type:Boolean,default:!1},fields:{type:Array,default:[]},mode:{type:String,default:"client"},multiSort:{type:Boolean,default:!1}},Fe={customGroupRow:{type:Function,default:()=>{}},customGroupRowStyle:{type:Function,default:()=>{}},customSummaryStyle:{type:Function,default:()=>{}},enable:{type:Boolean,default:!1},groupColSpan:{type:Number,default:1},groupFields:{type:Array,default:[]},showGroupedColumn:{type:Boolean,default:!0},showGroupPanel:{type:Boolean,default:!1},showSummary:{type:Boolean,default:!1},summaryPosition:{type:String,default:"separate"}},Re={enable:{type:Boolean,default:!1},filterStyle:{type:String,default:"filter-column"},mode:{type:String,default:"server"},showSummary:{type:Boolean,default:!0}},je={wrapHeadings:{type:Boolean,default:!1}},Ne={customRowStyle:{type:Function,default:()=>{}},disable:{type:Function,default:()=>{}},height:{type:Number,default:28},showHovering:{type:Boolean,default:!0},wrapContent:{type:Boolean,default:!1}},xe={enable:{type:Boolean,default:!1},customSummaryStyle:{type:Function,default:()=>{}},groupFields:{type:Array,default:[]},mode:{type:String,default:"client"},position:{type:String,default:"bottom"}},Ge={fitColumns:{type:Boolean,default:!1},fitMode:{type:String,default:"average"},groups:{type:Array,defaut:[]},reorderColumn:{type:Boolean,default:!1},resizeColumn:{type:Boolean,default:!0},resizeColumnOnDoubleClick:{type:Boolean,default:!0}},He={selectOnEditing:{type:Boolean,default:!1},editMode:{type:String,default:"cell"}},Pe={show:{type:Boolean,default:!1},message:{type:String,default:`${ce.LocaleService.getLocaleValue("datagrid.loadingMessage")}...`}},fe={customClass:{type:String,default:""},sort:{type:Object},filter:{type:Object},autoCheckChildren:{type:Boolean,default:!1},columns:{type:Array,default:[]},columnOption:{type:Object},commandOption:{type:Object,default:{enable:!1,commands:[]}},data:{type:Array,default:[]},disabled:{type:Boolean,default:!1},disabledField:{type:String,default:"disabled"},displayField:{type:String,default:"name"},editable:{type:Boolean,default:!1},editOption:{type:Object,default:{selectOnEditing:!1,editMode:"cell"}},fit:{type:Boolean,default:!1},header:{type:Object},height:{type:Number,default:-1},hierarchy:{type:Object,default:{cascadeOption:{autoCancelParent:!0,autoCheckChildren:!1,autoCheckParent:!1,selectionRange:"All"},parentIdField:"parent"}},id:{type:String,default:""},idField:{type:String,default:"id",require:!0},loadData:{type:Function},loading:{type:Boolean,default:!1},minHeight:{type:Number,default:300},minWidth:{type:Number,default:400},newDataItem:{type:Function,default:()=>{}},pagination:{type:Object,default:{enable:!1,size:-1}},rowNumber:{type:Object,default:{enable:!0,width:32,heading:ce.LocaleService.getLocaleValue("datagrid.lineNumberTitle")}},rowOption:{type:Object,default:{wrapContent:!1}},selection:{type:Object,default:{enableSelectRow:!0,multiSelect:!1,multiSelectMode:"DependOnCheck",showCheckbox:!1,showSelectAll:!1,showSelection:!1}},selectionValues:{type:Array,default:[]},showBorder:{type:Boolean,default:!1},showHeader:{type:Boolean,default:!0},showHorizontalLines:{type:Boolean,default:!0},showLines:{type:Boolean,default:!1},showOptions:{type:Boolean,default:!1},showScrollBar:{type:String,default:"auto"},showSetting:{type:Boolean,default:!1},showStripe:{type:Boolean,default:!0},showTreeNodeIcons:{type:Boolean,default:!1},showVerticallLines:{type:Boolean,default:!1},treeNodeIconsData:{type:[Object,String],default:{}},width:{type:Number,default:-1},virtualized:{type:Boolean,default:!1},emptyTemplate:{type:Object},summary:{type:Object,default:{enable:!1,groupFields:["numericField1","numericField2"]}}};function _e(t,y,ye,T,w,h,v,I,M,i,O,z,H,u,P,K,L){const{calculateCellPositionInRow:A}=h,{columnContext:C,hasLeftFixedColumn:U,hasRightFixedColumn:Q}=v,{gridDataStyle:X,leftFixedGridDataStyle:a,rightFixedGridDataStyle:Z}=u,{renderDataRow:r}=o.getHierarchyRow(t,y,C,L,I,M,i,O,z,H,u,P,K),N=[r];function _(m,te){const ne=A(m);return L.value.filter(B=>B.visible!==!1).map((B,E)=>N[B.type](B,ne,te,E))}function W(){return l.createVNode("div",{ref:T,class:"fv-grid-content-left-fixed"},[l.createVNode("div",{class:"fv-grid-data",style:a.value},[_(C.value.leftColumns.filter(m=>m.visible),"left")])])}function ee(){return l.createVNode("div",{ref:ye,class:"fv-grid-content-primary"},[l.createVNode("div",{class:"fv-grid-data",style:X.value},[_(C.value.primaryColumns.filter(m=>m.visible),"primary")])])}function b(){return l.createVNode("div",{ref:w,class:"fv-grid-content-right-fixed"},[l.createVNode("div",{class:"fv-grid-data",style:Z.value},[_(C.value.rightColumns.filter(m=>m.visible),"right")])])}function q(){const m=[];return U.value&&m.push(W()),m.push(ee()),Q.value&&m.push(b()),m}return{renderDataArea:q}}const me=l.defineComponent({name:"FTreeGrid",props:fe,emits:["selectionChange","clickRow","expandNode","unSelectItem","dblclickNode","doubleClickRow","unSelectItem","selectItem","filterChanged","sortChanged"],setup(t,y){var be,we;const T=((be=t.rowOption)==null?void 0:be.height)||28,w=l.ref(20),h=l.ref(t.columns),v=o.useIdentify(t),{idField:I}=v,M=l.ref(),i=l.ref(),O=l.ref(),z=l.ref(),H=l.ref(),u=l.ref([]),P=l.ref(!1),K=l.ref(((we=t.rowOption)==null?void 0:we.wrapContent)||!1),L=o.useGroupData(t,v),A=o.useFilter(t,y),C=o.useHierarchy(t),{collapseField:U}=C,{showLoading:Q,renderLoading:X}=o.useLoading(t,M),a=o.useDataView(t,new Map,A,C,v),{dataView:Z}=a,r=o.useSelection(t,a,v,u,y),{showSelection:N,selectedValues:_}=r,W=o.useSelectHierarchyItem(t,u,a,v,r,y),ee=l.computed(()=>t.disabled),b=l.computed(()=>t.virtualized?Math.min(a.dataView.value.length,w.value):a.dataView.value.length),q=o.usePagination(t,a),{shouldRenderPagination:m}=q,{containerStyleObject:te}=o.useDataViewContainerStyle(t),ne=o.useCommandColumn(t),{applyCommands:B}=ne;B(h);const{applyColumnSetting:E,removeColumnSetting:Te}=o.useSettingColumn(t);t.showSetting&&E(h);const k=o.useColumn(t,y),le=o.useSort(t),{applyColumnSorter:pe,columnContext:V,updateColumnRenderContext:Me}=k;pe(a,le);const oe=o.useGroupColumn(t,V),x=o.useRow(t,y,r,v),G=o.useEdit(t,y,v,x,u),ae=o.useVisualDataBound(t),ze=o.useVisualDataCell(t,G,ae),Le=o.useVisualDataRow(t,a,G,C,v,ae,ze),ie=o.useVisualData(t,h,a,b,0,Le),{getVisualData:Y}=ie,Ae=o.useCellPosition(t,V),ue=o.useSidebar(t,r),{sidebarWidth:Ue}=ue,p=o.useVirtualScroll(t,a,u,V,ie,b,0,Ue),{onWheel:We,dataGridWidth:ge,viewPortHeight:ve,viewPortWidth:$,resetScroll:se,updateVisibleRowsOnLatestVisibleScope:qe}=p,he=o.useFitColumn(t,V,i,$,oe),{calculateColumnsSize:J}=he,Ce=o.useFilterHistory(),Ee=o.useColumnFilter(i,H,a,Ce,p),Ve=o.useDragColumn(t,y,k,a,oe,L,p),Ye=l.computed(()=>{const e={"fv-grid":!0,"fv-grid-bordered":t.showBorder,"fv-grid-horizontal-bordered":t.showHorizontalLines,"fv-datagrid-strip":t.showStripe};return j.getCustomClass(e,t.customClass)}),$e=l.computed(()=>({"fv-grid-content":!0,"fv-grid-content-hover":P.value,"fv-grid-wrap-content":K.value})),{renderDataArea:Je}=_e(t,y,O,z,H,Ae,k,a,G,C,x,r,W,p,ie,ae,u),{renderGridHeader:Ke,renderGridColumnResizeOverlay:Qe,shouldShowHeader:Xe}=o.getColumnHeader(t,y,i,z,H,k,a,Ve,Ee,A,Ce,he,oe,r,ue,le,p,$,u),{renderDataGridSidebar:Ze}=o.getSidebar(t,x,r,ue,p),{renderDisableMask:et}=o.getDisableMask(),{renderHorizontalScrollbar:tt}=o.getHorizontalScrollbar(t,i,p),{renderVerticalScrollbar:nt}=o.getVerticalScrollbar(t,i,p);function lt(){var e,n,d;if(i.value&&i.value.clientHeight>0&&((e=i.value)==null?void 0:e.clientWidth)>0){const f=Math.ceil(i.value.clientHeight/T);f>w.value&&(w.value=f,qe()),ve.value=((n=O.value)==null?void 0:n.clientHeight)||0,ge.value=((d=i.value)==null?void 0:d.clientWidth)||0,J()}}l.onMounted(()=>{i.value&&(w.value=Math.max(Math.ceil(i.value.clientHeight/T),w.value),u.value=Y(0,b.value+0-1),Oe.useResizeObserver(i.value,lt),J(),l.nextTick(()=>{i.value&&(ge.value=i.value.clientWidth),O.value&&($.value=O.value.clientWidth,ve.value=O.value.clientHeight)})),Q.value&&X()}),l.onUnmounted(()=>{}),l.watch($,()=>{i.value&&J()});function ot(e){a.collapseTo(e),a.reOrderVisibleIndex(),se()}function at(e){a.expandTo(e),a.reOrderVisibleIndex(),se()}function re(){const e=r.getSelectionRow();return e?e.dataIndex-1:-1}function it(){const e=re();a.insertNewDataItem(e),u.value=Y(0,b.value+0-1)}function ut(){const e=re();a.insertNewChildDataItem(e),u.value=Y(0,b.value+0-1)}function st(e,n){const d=u.value.find(g=>g.raw[I.value]===n),f=d?d.dataIndex-1:-1;a.insertNewChildDataItems(e,f)}function rt(){const e=re(),n=W.getNextSelectableHierarchyItemId(e);a.removeHierarchyDataItem(e),u.value=Y(0,b.value+0-1),n&&r.selectItemById(n)}function dt(e){G.onEditingRow(e)}function ct(e){G.acceptEditingRow(e)}function ft(e){G.cancelEditingRow(e)}function de(e){e&&(h.value=e,B(h),Me(h.value),pe(a,le),J())}l.watch(()=>t.columns,e=>{de(e)});function mt(e,n){e&&(a.load(e),a.reOrderVisibleIndex(),n!=null&&n.keepScrollPosition?p.scrollTo(p.offsetY.value):se())}function yt(e){r.selectItemById(e)}function pt(e){const n=u.value.find(d=>d.raw[v.idField.value]===e);n&&x.clickRowItem(n)}function gt(e){x.activeRowById(e)}function vt(e){r.selectItemByIds(e)}function ht(){return r.getSelectedItems()}function Se(){r.clearSelection()}const Ct=l.computed(()=>!u.value||!u.value.length),{renderEmpty:St}=o.getEmpty(t,y);function bt(){return r.getSelectionRow()}function wt(e){r.unSelectItemByIds(e)}function It(){return r.currentSelectedDataId.value}function Ot(e,n,d){const f=Z.value.find(g=>g[I.value]===e);if(f){if(Object.keys(f).forEach(c=>{Object.prototype.hasOwnProperty.call(n,c)&&(f[c]=n[c])}),d){const{collapseField:c,disabledField:D,checkedField:F,visibleField:R}=d;c&&!S.isUndefined(n[c])&&(f.__fv_collapse__=n[c]),F&&!S.isUndefined(n[F])&&(f.__fv_checked__=n[F]),D&&!S.isUndefined(n[D])&&(f.__fv_disabled__=n[D]),R&&!S.isUndefined(n[R])&&(f.__fv_visible__=n[R])}const g=u.value.find(c=>c.raw[I.value]===e),Ie=u.value.findIndex(c=>c.raw[I.value]===e);if(g){if(g.raw=f,Object.keys(g.data).forEach(c=>{g.data[c].updateData(f)}),d){const{collapseField:c,disabledField:D,checkedField:F,visibleField:R}=d;c&&!S.isUndefined(n[c])&&(g.collapse=n[c]),F&&!S.isUndefined(n[F])&&(g.checked=n[F]),D&&!S.isUndefined(n[D])&&(g.disabled=n[D]),R&&!S.isUndefined(n[R])&&(g.visible=n[R])}u.value=[...u.value.slice(0,Ie),g,...u.value.slice(Ie+1)],a.updateSummary()}}}function Bt(e){return Object.prototype.hasOwnProperty.call(e,"raw")?a.hasRealChildren(e.raw):a.hasRealChildren(e)}function Dt(e){const n=a.dataView.value.find(d=>d[I.value]===e);return n?n[U.value]:""}function Ft(){return U.value}l.watch(()=>t.showSetting,(e,n)=>{e!==n&&(e?E(h):Te(h),de(h.value))});function Rt(e){return u.value.filter(n=>e.includes(n.raw[t.idField]))}function jt(e){const n=v.idField.value,d=u.value.find(f=>f.raw[n]===e);d&&x.selectRow(d)}function Nt(){r.keepSelectingOnPaging.value||Se(),a.updateVisibleDataSummary(u.value)}y.expose({activeRowById:gt,addNewDataItem:it,addNewChildDataItem:ut,addChildrenToNode:st,collapseTo:ot,expandTo:at,removeDataItem:rt,editDataItem:dt,acceptDataItem:ct,cancelDataItem:ft,updateColumns:de,updateDataSource:mt,selectItemById:yt,selectItemByIds:vt,getSelectedItems:ht,clearSelection:Se,getSelectionRow:bt,clickRowItemById:pt,unSelectItemByIds:wt,getCurrentRowId:It,reassignRowData:Ot,hasChildren:Bt,getCollapseField:Ft,getCollapseStatusById:Dt,getVisibleDataByIds:Rt,selectRowById:jt,updateDerivedData:Nt});const xt=l.computed(()=>{const e={};return p.shouldShowHorizontalScrollbar.value&&(e.paddingBottom="10px"),p.shouldShowVirticalScrollbar.value&&(e.paddingRight="10px"),e}),Gt=l.computed(()=>({...te.value,borderRadius:"5px"}));o.getPagination(t,y,a,p,q,r);const Ht=l.computed(()=>({"d-flex":!0,"justify-content-between":m.value&&N.value,"justify-content-end":m.value&&!N.value,"position-relative":!0})),Pt=l.computed(()=>({"d-flex":!0,"align-items-center":!0})),{renderDataGridSummary:_t}=o.getSummary(t,a,k);return()=>l.createVNode("div",{ref:M,class:Ye.value,style:Gt.value,onWheel:We},[i.value&&Xe.value&&Ke(),l.createVNode("div",{ref:i,class:$e.value,onMouseover:()=>P.value=!0,onMouseleave:()=>P.value=!1,style:xt.value},[i.value&&Ze(u),i.value&&Je(),i.value&&Ct.value&&St(),i.value&&tt(),i.value&&nt()]),i.value&&_t(),N.value&&l.createVNode("div",{class:Ht.value},[N.value&&l.createVNode("div",{class:Pt.value},[l.createVNode("div",null,["已选:"+_.value.length,l.createTextVNode(" 条")])])]),Qe(),ee.value&&et()])}}),ke=j.withInstall(me);s.FTreeGrid=me,s.columnOptions=Ge,s.default=ke,s.editOptions=He,s.filterOptions=Re,s.groupOptions=Fe,s.headerOptions=je,s.loadingOptions=Pe,s.paginationOptions=Be,s.rowOptions=Ne,s.sortOptions=De,s.summaryOptions=xe,s.treeGridProps=fe,Object.defineProperties(s,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});