@farris/ui-vue
Version:
Farris Vue, a Farris Design based Vue3 component library.
2 lines (1 loc) • 17.4 kB
JavaScript
(function(m,N){typeof exports=="object"&&typeof module<"u"?N(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"),require("../input-group/index.umd.js"),require("../button/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","../input-group/index.umd.js","../button/index.umd.js"],N):(m=typeof globalThis<"u"?globalThis:m||self,N(m["tree-grid"]={},m.common,m.Vue,m.VueUseCore,m.LodashES,m.locale,m.dataView,m.FInputGroup,m.FButton))})(this,function(m,N,l,_e,O,je,a,Ge,Ae){"use strict";const Pe={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}},He={enable:{type:Boolean,default:!1},fields:{type:Array,default:[]},mode:{type:String,default:"client"},multiSort:{type:Boolean,default:!1}},Me={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"}},ke={enable:{type:Boolean,default:!1},filterStyle:{type:String,default:"filter-column"},mode:{type:String,default:"server"},showSummary:{type:Boolean,default:!0}},Le={wrapHeadings:{type:Boolean,default:!1}},Ee={customRowStyle:{type:Function,default:()=>{}},customCellStyle:{type:Function,default:()=>{}},disable:{type:Function,default:()=>{}},height:{type:Number,default:28},showHovering:{type:Boolean,default:!0},wrapContent:{type:Boolean,default:!1}},Ue={enable:{type:Boolean,default:!1},customSummaryStyle:{type:Function,default:()=>{}},groupFields:{type:Array,default:[]},mode:{type:String,default:"client"},position:{type:String,default:"bottom"}},ze={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}},We={selectOnEditing:{type:Boolean,default:!1},editMode:{type:String,default:"cell"}},Ve={show:{type:Boolean,default:!1},message:{type:String,default:`${je.LocaleService.getLocaleValue("datagrid.loadingMessage")}...`}},Ce={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:36,heading:"序号"}},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"]}},autoHeight:{type:Boolean,default:!1},checkboxPosition:{type:String,default:"after-expand"},enableColumnSettingSolution:{type:Boolean,default:!1},searchable:{type:Boolean,default:!1},customSearch:{type:Function}};function qe(n,C,L,E,D,w,U,Y,F,v,h,x,K,r,R,$,_,f,T){const{calculateCellPositionInRow:le}=w,{columnContext:j,hasLeftFixedColumn:J,hasRightFixedColumn:G}=U,{gridDataStyle:Q,leftFixedGridDataStyle:ae,rightFixedGridDataStyle:ie}=r,{renderDataRow:i}=a.getHierarchyRow(n,C,j,_,Y,F,v,h,x,K,r,R,$,f,T),oe=[i];function y(g,X){const Z=le(g);return _.value.filter(P=>P.visible!==!1).map((P,H)=>oe[P.type](P,Z,X,H))}function A(){return l.createVNode("div",{ref:E,class:"fv-grid-content-left-fixed"},[l.createVNode("div",{class:"fv-grid-data",style:ae.value},[y(j.value.leftColumns.filter(g=>g.visible),"left")])])}function ue(){return l.createVNode("div",{ref:L,class:"fv-grid-content-primary"},[l.createVNode("div",{class:"fv-grid-data",style:Q.value},[y(j.value.primaryColumns.filter(g=>g.visible),"primary")])])}function B(){return l.createVNode("div",{ref:D,class:"fv-grid-content-right-fixed"},[l.createVNode("div",{class:"fv-grid-data",style:ie.value},[y(j.value.rightColumns.filter(g=>g.visible),"right")])])}function re(){const g=[];return J.value&&g.push(A()),g.push(ue()),G.value&&g.push(B()),g}return{renderDataArea:re}}const Se=l.defineComponent({name:"FTreeGrid",props:Ce,emits:["selectionChange","clickRow","expandNode","unSelectItem","dblclickNode","doubleClickRow","unSelectItem","selectItem","filterChanged","unSelectAll","selectAll","sortChanged","selectionUpdate","endEditCell"],setup(n,C){var Te,Ne;const L=l.ref(!1),E=l.ref(!1),D=0,w=l.ref(((Te=n.rowOption)==null?void 0:Te.height)||28);let U=[],Y=[];const F=l.ref(20),v=l.ref(n.columns),h=a.useIdentify(n),{idField:x}=h,K=l.ref(),r=l.ref(),R=l.ref(),$=l.ref(),_=l.ref(),f=l.ref([]),T=l.ref(!1),le=l.ref(((Ne=n.rowOption)==null?void 0:Ne.wrapContent)||!1),j=a.useGroupData(n,h),J=a.useFilter(n,C),G=a.useHierarchy(n),{collapseField:Q}=G,{showLoading:ae,renderLoading:ie}=a.useLoading(n,K),i=a.useDataView(n,new Map,J,G,h),{dataView:oe}=i,y=a.useSelection(n,i,h,f,C),{showSelection:A,selectedValues:ue}=y,B=a.useSelectHierarchyItem(n,f,i,h,y,C),re=l.computed(()=>n.disabled),g=l.computed(()=>n.virtualized?Math.min(i.dataView.value.length,F.value):i.dataView.value.length),X=a.usePagination(n,i),{shouldRenderPagination:Z}=X,{containerStyleObject:P}=a.useDataViewContainerStyle(n,f),H=l.ref(""),se=l.ref([]),Ke=l.computed(()=>n.searchable||!1),z=l.ref(0),$e=a.useCommandColumn(n),{applyCommands:be}=$e;be(v);const{applyColumnSetting:de,removeColumnSetting:Je}=a.useSettingColumn(n);n.showSetting&&de(v);const W=a.useColumn(n,C),ce=a.useSort(n),{applyColumnSorter:we,columnContext:ee,updateColumnRenderContext:Qe}=W;we(i,ce);const fe=a.useGroupColumn(n,ee),M=a.useRow(n,C,y,h),k=a.useEdit(n,C,h,M,f),me=a.useVisualDataBound(n,i,w),Xe=a.useVisualDataCell(n,k,me),Ze=a.useVisualDataRow(n,i,k,G,h,me,Xe,w),ye=a.useVisualData(n,v,i,g,D,Ze),{getVisualData:te}=ye,et=a.useCellPosition(n,ee,w,L),he=a.useSidebar(n,y),{sidebarWidth:tt}=he,p=a.useVirtualScroll(n,i,f,ee,ye,g,D,tt,w,L),{onWheel:nt,dataGridWidth:Ie,viewPortHeight:Oe,viewPortWidth:ne,resetScroll:ge,updateVisibleRowsOnLatestVisibleScope:lt}=p,De=a.useFitColumn(n,ee,r,ne,fe),{calculateColumnsSize:V}=De,Be=a.useFilterHistory(),at=a.useColumnFilter(r,_,i,Be,p),it=a.useDragColumn(n,C,W,i,fe,j,p),ot=l.computed(()=>{const e={"fv-grid":!0,"fv-grid-bordered":n.showBorder,"fv-grid-horizontal-bordered":n.showHorizontalLines,"fv-datagrid-strip":n.showStripe};return N.getCustomClass(e,n.customClass)}),ut=l.computed(()=>({"fv-grid-content":!0,"fv-grid-content-hover":T.value,"fv-grid-wrap-content":le.value})),{renderDataArea:rt}=qe(n,C,R,$,_,et,W,i,k,G,M,y,B,p,ye,me,f,w,L),{renderGridHeader:st,renderGridColumnResizeOverlay:dt,shouldShowHeader:ct}=a.getColumnHeader(n,C,r,$,_,W,i,it,at,J,Be,De,fe,y,he,ce,p,ne,f,E),{renderDataGridSidebar:ft}=a.getSidebar(n,M,y,he,p),{renderDisableMask:mt}=a.getDisableMask(),{renderHorizontalScrollbar:yt}=a.getHorizontalScrollbar(n,r,p),{renderVerticalScrollbar:ht}=a.getVerticalScrollbar(n,r,p);function gt(){var e,t,s;if(r.value&&r.value.clientHeight>0&&((e=r.value)==null?void 0:e.clientWidth)>0){const u=Math.ceil(r.value.clientHeight/w.value);u>F.value&&(F.value=u,lt()),Oe.value=((t=R.value)==null?void 0:t.clientHeight)||0,Ie.value=((s=r.value)==null?void 0:s.clientWidth)||0}r.value&&(r.value.clientHeight>0||r.value.clientWidth>0)&&V()}l.onMounted(()=>{r.value&&(F.value=Math.max(Math.ceil(r.value.clientHeight/w.value),F.value),f.value=te(0,g.value+D-1),_e.useResizeObserver(r.value,gt),V(),l.nextTick(()=>{r.value&&(Ie.value=r.value.clientWidth),R.value&&(ne.value=R.value.clientWidth,Oe.value=R.value.clientHeight)})),ae.value&&ie()}),l.onUnmounted(()=>{}),l.watch(ne,()=>{r.value&&V()});function vt(e){i.collapseTo(e),i.reOrderVisibleIndex(),ge()}function pt(e){i.expandTo(e),i.reOrderVisibleIndex(),ge()}function ve(){const e=y.getSelectionRow();return e?e.dataIndex-1:-1}function Ct(e){const t=e!==void 0?e:ve(),s=i.insertNewDataItem(t===-1?0:t);return f.value=te(0,g.value+D-1),s}function St(){const e=ve();i.insertNewChildDataItem(e),f.value=te(0,g.value+D-1)}function bt(e,t){const s=f.value.find(d=>d.raw[x.value]===t),u=s?s.dataIndex-1:-1;i.insertNewChildDataItems(e,u)}function wt(){const e=ve(),t=B.getNextSelectableHierarchyItemId(e);i.removeHierarchyDataItem(e),f.value=te(0,g.value+D-1),t&&B.selectItemById(t)}function It(e){k.onEditingRow(e)}function Ot(e){k.acceptEditingRow(e)}function Dt(e){k.cancelEditingRow(e)}function q(e){e&&(v.value=e,be(v),n.showSetting&&de(v),Qe(v.value),we(i,ce),V())}l.watch(()=>n.columns,e=>{if(n.showSetting&&n.enableColumnSettingSolution){q(v.value);return}q(e)});function Bt(e,t){e&&(i.load(e),i.reOrderVisibleIndex(),t!=null&&t.keepScrollPosition?p.scrollTo(p.offsetY.value):ge())}function pe(e){M.activeRowById(e)}function Ft(e,t={isCurrent:!0}){t!=null&&t.isCurrent&&pe(e),B.selectItemById(e)}function xt(e){const t=f.value.find(s=>s.raw[h.idField.value]===e);t&&M.clickRowItem(t)}function Rt(e){B.selectItemByIds(e)}function Tt(){return y.getSelectedItems()}function Fe(){y.clearSelection()}function Nt(){y.emptyCurrentRowId()}const _t=l.computed(()=>!f.value||!f.value.length),{renderEmpty:jt}=a.getEmpty(n,C);function Gt(){return y.getSelectionRow()}function At(e,t={clearCurrent:!0}){t!=null&&t.clearCurrent&&pe(""),B.unSelectItemByIds(e)}function Pt(){return y.currentSelectedDataId.value}function Ht(e,t,s){const u=oe.value.find(d=>d[x.value]===e);if(u){if(Object.keys(u).forEach(c=>{Object.prototype.hasOwnProperty.call(t,c)&&(u[c]=t[c])}),s){const{collapseField:c,disabledField:S,checkedField:I,visibleField:b}=s;c&&!O.isUndefined(t[c])&&(u.__fv_collapse__=t[c]),I&&!O.isUndefined(t[I])&&(u.__fv_checked__=t[I]),S&&!O.isUndefined(t[S])&&(u.__fv_disabled__=t[S]),b&&!O.isUndefined(t[b])&&(u.__fv_visible__=t[b])}const d=f.value.find(c=>c.raw[x.value]===e),o=f.value.findIndex(c=>c.raw[x.value]===e);if(d){if(d.raw=u,Object.keys(d.data).forEach(c=>{d.data[c].updateData(u)}),s){const{collapseField:c,disabledField:S,checkedField:I,visibleField:b}=s;c&&!O.isUndefined(t[c])&&(d.collapse=t[c]),I&&!O.isUndefined(t[I])&&(d.checked=t[I]),S&&!O.isUndefined(t[S])&&(d.disabled=t[S]),b&&!O.isUndefined(t[b])&&(d.visible=t[b])}f.value=[...f.value.slice(0,o),d,...f.value.slice(o+1)],i.updateSummary()}}}function Mt(e){return Object.prototype.hasOwnProperty.call(e,"raw")?i.hasRealChildren(e.raw):i.hasRealChildren(e)}function kt(e){const t=i.dataView.value.find(s=>s[x.value]===e);return t?t[Q.value]:""}function Lt(){return Q.value}l.watch(()=>n.showSetting,(e,t)=>{e!==t&&(e?de(v):Je(v),q(v.value))});function Et(e){return f.value.filter(t=>e.includes(t.raw[n.idField]))}function xe(e){const t=h.idField.value,s=f.value.find(u=>u.raw[t]===e);s&&M.changeRow(s)}function Ut(){y.keepSelectingOnPaging.value||Fe(),i.updateVisibleDataSummary(f.value)}function zt(e){y.updateSelectedValues(e)}function Wt(e){y.removeSelectedValues(e)}function Vt(e){l.nextTick(()=>{p.scrollToRowByIndex(e.dataIndex-1)})}function qt(e){let t=e;for(;t.parentId;){const s=i.dataView.value.find(u=>u[h.idField.value]===t.parentId);if(s)s[h.idField.value],i.unFold({raw:s}),t=s;else break}}function Yt(e,t){if(e.length!==t.length)return!1;const s=e.map(d=>d[h.idField.value]).sort(),u=t.map(d=>d[h.idField.value]).sort();return s.every((d,o)=>d===u[o])}function Re(){if(!H.value.trim()){se.value=[],z.value=0;return}const e=[],t=H.value.toLowerCase().trim();i.dataView.value.forEach(u=>{var o;let d=!1;(o=n.search)!=null&&o.customSearch?d=n.search.customSearch(t,u,n.columns):n.columns.forEach(c=>{!d&&c.field&&u[c.field]!==void 0&&String(u[c.field]).toLowerCase().includes(t)&&(d=!0)}),d&&(e.push(u),qt(u))}),!Yt(e,se.value)?(se.value=e,z.value=0):e.length>0&&(z.value=(z.value+1)%e.length),e.length>0&&l.nextTick(()=>{const u=e[z.value];xe(u[h.idField.value]);const d=f.value.find(o=>o.raw[h.idField.value]===u[h.idField.value]);d&&Vt(d)})}function Kt(e){e.key==="Enter"&&Re()}function $t(){Re()}C.expose({activeRowById:pe,addNewDataItem:Ct,addNewChildDataItem:St,addChildrenToNode:bt,collapseTo:vt,expandTo:pt,removeDataItem:wt,editDataItem:It,acceptDataItem:Ot,cancelDataItem:Dt,updateColumns:q,updateDataSource:Bt,selectItemById:Ft,selectItemByIds:Rt,getSelectedItems:Tt,clearSelection:Fe,getSelectionRow:Gt,clickRowItemById:xt,unSelectItemByIds:At,getCurrentRowId:Pt,reassignRowData:Ht,hasChildren:Mt,getCollapseField:Lt,getCollapseStatusById:kt,getVisibleDataByIds:Et,selectRowById:xe,updateDerivedData:Ut,emptyCurrentRowId:Nt,calculateColumnsSize:V,updateSelectedValues:zt,removeSelectedValues:Wt});const Jt=l.computed(()=>{const e={};return p.shouldShowHorizontalScrollbar.value&&(e.paddingBottom="10px"),p.shouldShowVirticalScrollbar.value&&(e.paddingRight="10px"),e}),Qt=l.computed(()=>({...P.value,borderRadius:"5px"})),{renderDataGridPagination:nn}=a.getPagination(n,C,i,p,X,y),Xt=l.computed(()=>({"d-flex":!0,"justify-content-between":Z.value&&A.value,"justify-content-end":Z.value&&!A.value,"position-relative":!0})),Zt=l.computed(()=>({"d-flex":!0,"align-items-center":!0}));function en(e){const t=e.map(o=>o.id),s=[...v.value,...U,...Y];s.filter(o=>o.dataType!==a.COMMAND_COLUMN_DATA_TYPE&&o.dataType!==a.SETTING_COLUMN_DATA_TYPE).forEach(o=>{const c=e.find(S=>S.id===o.id);c&&(o.width=c.actualWidth||o.width||120,o.title=c.title,o.halign=c.halign,o.align=c.align,o.fixed=c.fixed)}),Y=s.filter(o=>o.dataType===a.COMMAND_COLUMN_DATA_TYPE||o.dataType===a.SETTING_COLUMN_DATA_TYPE);const u=s.filter(o=>o.dataType!==a.COMMAND_COLUMN_DATA_TYPE&&o.dataType!==a.SETTING_COLUMN_DATA_TYPE),d=u.filter(o=>t.includes(o.id));U=u.filter(o=>!t.includes(o.id)),d.sort((o,c)=>{const S=e.findIndex(b=>b.id===o.id),I=e.findIndex(b=>b.id===c.id);return S-I}),q(d)}const{renderDataGridSummary:tn}=a.getSummary(n,i,W);return()=>l.createVNode(l.Fragment,null,[Ke.value&&l.createVNode("div",{class:"fv-grid-search",style:{padding:"8px 12px",border:"1px solid #e0e0e0",borderBottom:"none",borderRadius:"4px 4px 0 0"}},[l.createVNode("div",{style:{display:"flex",alignItems:"center"}},[l.createVNode(Ge,{value:H.value,onInput:e=>H.value=e,onKeydown:Kt,placeholder:"搜索数据...",style:{flex:1}},null),l.createVNode(Ae,{type:"link",onClick:$t,style:{cursor:"pointer",marginLeft:"8px"}},{default:()=>[l.createVNode("i",{class:"f-icon f-icon-search"},null)]})])]),l.createVNode("div",{ref:K,class:ot.value,style:Qt.value,onWheel:nt},[r.value&&ct.value&&st(),l.createVNode("div",{ref:r,class:ut.value,onMouseover:()=>T.value=!0,onMouseleave:()=>T.value=!1,onTouchstart:e=>{e.stopPropagation(),T.value=!0,p.onTouchstartScrollThumb(e,r)},onTouchend:e=>{T.value=!1},style:Jt.value},[r.value&&ft(f),r.value&&rt(),r.value&&_t.value&&jt(),r.value&&yt(),r.value&&ht()]),r.value&&tn(),A.value&&l.createVNode("div",{class:Xt.value},[A.value&&l.createVNode("div",{class:Zt.value},[l.createVNode("div",null,["已选:"+ue.value.length,l.createTextVNode(" 条")])])]),dt(),re.value&&mt()]),n.enableColumnSettingSolution&&l.createVNode(a.ColumnSettingSolution,{columns:[...v.value,...U],componentId:n.id,modelValue:E.value,"onUpdate:modelValue":e=>E.value=e,onChangeColumnSetting:en},null)])}}),Ye=N.withInstall(Se);m.FTreeGrid=Se,m.columnOptions=ze,m.default=Ye,m.editOptions=We,m.filterOptions=ke,m.groupOptions=Me,m.headerOptions=Le,m.loadingOptions=Ve,m.paginationOptions=Pe,m.rowOptions=Ee,m.sortOptions=He,m.summaryOptions=Ue,m.treeGridProps=Ce,Object.defineProperties(m,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});