dinocollab-core 2.2.2 → 2.2.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (53) hide show
  1. package/dist/lab/data-surface/index.js +1 -1
  2. package/dist/src/filter-bar/components/filter-input.units.js +1 -1
  3. package/dist/src/filter-bar/components/filter-input.units.js.map +1 -1
  4. package/dist/src/filter-bar/components/filter-menu.js +1 -1
  5. package/dist/src/filter-bar/components/filter-menu.js.map +1 -1
  6. package/dist/src/filter-bar/components/filter-sort.js +1 -1
  7. package/dist/src/filter-bar/components/filter-sort.js.map +1 -1
  8. package/dist/src/filter-bar/helpers.js +1 -1
  9. package/dist/src/filter-bar/helpers.js.map +1 -1
  10. package/dist/src/filter-bar/index.create.js +1 -1
  11. package/dist/src/filter-bar/index.create.js.map +1 -1
  12. package/dist/src/filter-bar/index.dino.js +1 -1
  13. package/dist/src/filter-bar/index.dino.js.map +1 -1
  14. package/dist/src/form/modal-wrapper.js +1 -1
  15. package/dist/src/form/modal-wrapper.js.map +1 -1
  16. package/dist/src/lab/data-surface/button-switch.js +1 -1
  17. package/dist/src/lab/data-surface/button-switch.js.map +1 -1
  18. package/dist/src/lab/data-surface/helpers.js +2 -0
  19. package/dist/src/lab/data-surface/helpers.js.map +1 -0
  20. package/dist/src/lab/data-surface/index.create.js +1 -1
  21. package/dist/src/lab/data-surface/index.create.js.map +1 -1
  22. package/dist/src/lab/data-surface/index.dino.js +1 -1
  23. package/dist/src/lab/data-surface/index.dino.js.map +1 -1
  24. package/dist/src/lab/data-surface/ui.units.js +1 -1
  25. package/dist/src/lab/data-surface/ui.units.js.map +1 -1
  26. package/dist/src/lab/data-surface/view-grid.js +1 -1
  27. package/dist/src/lab/data-surface/view-grid.js.map +1 -1
  28. package/dist/src/lab/data-surface/view-grid.units.js +1 -1
  29. package/dist/src/lab/data-surface/view-grid.units.js.map +1 -1
  30. package/dist/src/lab/data-surface/view-list.js +1 -1
  31. package/dist/src/lab/data-surface/view-list.js.map +1 -1
  32. package/dist/src/lab/data-surface/view-list.types.js.map +1 -1
  33. package/dist/src/lab/data-surface/view-list.units.js +1 -1
  34. package/dist/src/lab/data-surface/view-list.units.js.map +1 -1
  35. package/dist/src/table/create.table.js +1 -1
  36. package/dist/src/table/create.table.js.map +1 -1
  37. package/dist/src/table/toolbar-pannel.js +1 -1
  38. package/dist/src/table/toolbar-pannel.js.map +1 -1
  39. package/dist/types/filter-bar/components/filter-sort.types.d.ts +1 -0
  40. package/dist/types/filter-bar/helpers.d.ts +30 -1
  41. package/dist/types/filter-bar/index.dino.d.ts +5 -0
  42. package/dist/types/form/modal-wrapper.d.ts +12 -5
  43. package/dist/types/lab/data-surface/button-switch.d.ts +4 -3
  44. package/dist/types/lab/data-surface/helpers.d.ts +26 -0
  45. package/dist/types/lab/data-surface/index.create.d.ts +19 -3
  46. package/dist/types/lab/data-surface/index.d.ts +1 -0
  47. package/dist/types/lab/data-surface/index.dino.d.ts +14 -0
  48. package/dist/types/lab/data-surface/ui.units.d.ts +6 -1
  49. package/dist/types/lab/data-surface/view-list.d.ts +7 -0
  50. package/dist/types/lab/data-surface/view-list.types.d.ts +4 -0
  51. package/dist/types/lab/data-surface/view-list.units.d.ts +19 -0
  52. package/dist/types/table/toolbar-pannel.d.ts +15 -6
  53. package/package.json +1 -1
@@ -1,2 +1,2 @@
1
- import{defineProperty as e,objectSpread2 as n,asyncToGenerator as t,regenerator as l,slicedToArray as i}from"../../../_virtual/_rollupPluginBabelHelpers.js";import{jsx as o,jsxs as a}from"react/jsx-runtime";import{useCallback as r,useMemo as d,useRef as c,useState as u,useLayoutEffect as s}from"react";import{styled as v,Box as p,TableContainer as f,Table as h,TableHead as g,TableRow as b,TableCell as m,TableBody as x}from"@mui/material";import{ListDensity as w}from"./view-list.types.js";import{LIST_HEADER_HEIGHT as C,LIST_ROW_HEIGHT_BY_DENSITY as S,LIST_CELL_PADDING_BY_DENSITY as y}from"./view-list.units.js";var H=function(e,n){if(void 0!==e.width)return e.width;if(n>0&&e.flex&&e.flex>0){var t=e.flex/n*100;return"".concat(t,"%")}return n>0&&e.minWidth?"".concat(e.minWidth,"px"):void 0},N=function(e,n,t){var l=e.valueGetter?e.valueGetter(n,t):n[e.field],i={value:l,row:n,index:t,field:e.field};return e.renderCell?e.renderCell(i):String(null!=l?l:"")},k=function(e){if(0===e.length)return[];var n=e[0];return Object.keys(n).map(function(e){return{field:e,label:String(e),flex:1}})},z=function(e){return e?Object.keys(e).map(function(t){var l,i=null!==(l=e[t])&&void 0!==l?l:{};return n({field:t},i)}):[]};function T(e){var t=function(e){return function(n){var t,l,i=null!==(t=null!==(l=n.density)&&void 0!==l?l:e.density)&&void 0!==t?t:w.standard,r=n.columns?z(n.columns):e.columns?z(e.columns):k(n.value),d=r.reduce(function(e,n){return e+(n.flex&&n.flex>0?n.flex:0)},0),c=S[i],u=y[i];return o(B,{className:M.root,children:o(f,{className:M.scrollContainer,onScroll:function(e){var t,l=e.currentTarget;l.scrollHeight-l.scrollTop-l.clientHeight<=80&&(null===(t=n.onNearEnd)||void 0===t||t.call(n))},children:a(h,{size:"small",className:M.table,children:[o(g,{className:M.tableHeader,children:o(b,{children:r.map(function(e){var n,t;return o(m,{className:M.tableHeaderCell,align:e.align,sx:{minWidth:e.minWidth,width:H(e,d),maxWidth:null!==(n=e.width)&&void 0!==n?n:d>0&&e.flex?0:void 0},children:null!==(t=e.label)&&void 0!==t?t:String(e.field)},String(e.field))})})}),o(x,{children:n.value.map(function(n,t){var l,i=null!==(l=e.getterId(n,t))&&void 0!==l?l:t;return o(b,{hover:!0,sx:{height:c},children:r.map(function(e){var l;return o(m,{className:M.tableBodyCell,align:e.align,sx:{height:c,padding:u,maxWidth:null!==(l=e.width)&&void 0!==l?l:d>0&&e.flex?0:void 0},children:o(p,{className:M.tableCellContent,children:N(e,n,t)})},"".concat(String(i),"-").concat(String(e.field)))})},i)})})]})})})}}(e),l=function(e){return function(n){var t,l,r,v,T=null!==(t=null!==(l=n.density)&&void 0!==l?l:e.density)&&void 0!==t?t:w.standard,W=n.columns?z(n.columns):e.columns?z(e.columns):k(n.value),L=W.reduce(function(e,n){return e+(n.flex&&n.flex>0?n.flex:0)},0),B=S[T],V=y[T],j=d(function(){return Object.assign({},e.virtualizedConfig,n.virtualizedConfig)},[n.virtualizedConfig]),I=c(null),O=c(null),R=u(0),P=i(R,2),E=P[0],G=P[1],Y=u(null!==(r=null==j?void 0:j.scrollTop)&&void 0!==r?r:0),_=i(Y,2),A=_[0],q=_[1],F=u(C),J=i(F,2),K=J[0],Q=J[1],U=Math.max(1,null!==(v=null==j?void 0:j.overscan)&&void 0!==v?v:6);s(function(){if(I.current){var e=function(){var e,n,t=null!==(e=null===(n=I.current)||void 0===n?void 0:n.clientHeight)&&void 0!==e?e:0;G(function(e){return e===t?e:t})};e();var n=new ResizeObserver(function(){e()});return n.observe(I.current),function(){return n.disconnect()}}},[]),s(function(){j&&"number"==typeof j.scrollTop&&q(j.scrollTop)},[null==j?void 0:j.scrollTop]),s(function(){var e,n,t=null!==(e=null===(n=O.current)||void 0===n?void 0:n.offsetHeight)&&void 0!==e?e:0;t>0&&t!==K&&Q(t)},[W.length,K]);var X=d(function(){var e,t=n.value.length;if(0===t)return{start:0,end:-1,topSpacerHeight:0,bottomSpacerHeight:0};var l=j&&"number"==typeof j.scrollTop?j.scrollTop:A,i=Math.max(1,(null!==(e=null==j?void 0:j.viewportHeight)&&void 0!==e?e:E)-K),o=Math.max(0,l-K),a=Math.max(0,Math.floor(o/B)-U),r=Math.ceil(i/B),d=Math.min(t-1,a+r+2*U);return{start:a,end:d,topSpacerHeight:a*B,bottomSpacerHeight:Math.max(0,(t-d-1)*B)}},[n.value.length,K,U,B,j,A,E]),Z=X.end>=X.start?n.value.slice(X.start,X.end+1):[];return o(D,{className:M.root,children:o(f,{ref:I,className:M.scrollContainer,onScroll:function(e){var t,l=e.currentTarget;j&&"number"==typeof j.scrollTop||q(l.scrollTop),l.scrollHeight-l.scrollTop-l.clientHeight<=80&&(null===(t=n.onNearEnd)||void 0===t||t.call(n))},children:a(h,{size:"small",className:M.table,children:[o(g,{className:M.tableHeader,children:o(b,{ref:O,children:W.map(function(e){var n,t;return o(m,{className:M.tableHeaderCell,align:e.align,sx:{minWidth:e.minWidth,width:H(e,L),maxWidth:null!==(n=e.width)&&void 0!==n?n:L>0&&e.flex?0:void 0},children:null!==(t=e.label)&&void 0!==t?t:String(e.field)},String(e.field))})})}),a(x,{children:[X.topSpacerHeight>0?o(b,{className:M.tableSpacerRow,children:o(m,{colSpan:W.length,className:M.tableSpacerCell,sx:{height:X.topSpacerHeight,padding:0,border:0}})}):null,Z.map(function(n,t){var l,i=X.start+t,a=null!==(l=e.getterId(n,i))&&void 0!==l?l:i;return o(b,{hover:!0,sx:{height:B},children:W.map(function(e){var t;return o(m,{className:M.tableBodyCell,align:e.align,sx:{height:B,padding:V,maxWidth:null!==(t=e.width)&&void 0!==t?t:L>0&&e.flex?0:void 0},children:o(p,{className:M.tableCellContent,children:N(e,n,i)})},"".concat(String(a),"-").concat(String(e.field)))})},a)}),X.bottomSpacerHeight>0?o(b,{className:M.tableSpacerRow,children:o(m,{colSpan:W.length,className:M.tableSpacerCell,sx:{height:X.bottomSpacerHeight,padding:0,border:0}})}):null]})]})})})}}(e);return function(i){var a,r,d=null!==(a=null!==(r=i.renderStrategy)&&void 0!==r?r:e.renderStrategy)&&void 0!==a?a:"normal";return o("virtualized"===d?l:t,n({},i))}}function W(e){return function(n){var i,a,d,c=r(t(l().m(function e(){var t,i,o,a,r,d,c,u,s;return l().w(function(e){for(;;)switch(e.n){case 0:if("infiniteScroll"===n.loadMode){e.n=1;break}return e.a(2);case 1:if(null!==(t=n.pagination)&&void 0!==t&&t.hasNext){e.n=2;break}return e.a(2);case 2:if(!n.loading){e.n=3;break}return e.a(2);case 3:return c=null!==(i=null===(o=n.pagination)||void 0===o?void 0:o.page)&&void 0!==i?i:0,u=null!==(a=null===(r=n.pagination)||void 0===r?void 0:r.pageSize)&&void 0!==a?a:20,s=c+1,e.n=4,null===(d=n.onPageChange)||void 0===d?void 0:d.call(n,s,u);case 4:return e.a(2)}},e)})),[n.loadMode,null===(i=n.pagination)||void 0===i?void 0:i.hasNext,null===(a=n.pagination)||void 0===a?void 0:a.page,null===(d=n.pagination)||void 0===d?void 0:d.pageSize,n.loading,n.onPageChange]);return o(e,{value:n.value,columns:n.columns,density:n.density,renderStrategy:n.renderStrategy,virtualizedConfig:n.virtualizedConfig,onNearEnd:"infiniteScroll"===n.loadMode?c:void 0})}}var L={root:"DinoViewList-root",scrollContainer:"DinoViewList-scrollContainer",table:"DinoViewList-table",tableHeader:"DinoViewList-tableHeader",tableHeaderCell:"DinoViewList-tableHeaderCell",tableBodyCell:"DinoViewList-tableBodyCell",tableSpacerRow:"DinoViewList-tableSpacerRow",tableSpacerCell:"DinoViewList-tableSpacerCell",tableCellContent:"DinoViewList-tableCellContent"},M=L,B=v(p)(function(n){var t=n.theme;return e(e(e(e(e(e({position:"relative",width:"100%",height:"100%",overflow:"hidden"},".".concat(M.scrollContainer),{position:"absolute",inset:0,overflowY:"auto"}),".".concat(M.table),{tableLayout:"fixed",width:"100%"}),".".concat(M.tableHeader),{position:"sticky",top:0,zIndex:2,backgroundColor:t.palette.background.paper,boxShadow:"0 1px 3px ".concat("dark"===t.palette.mode?"rgba(0,0,0,0.3)":"rgba(99, 99, 99, 0.2) 0px 2px 8px 0px"),"&::before":{content:'""',position:"absolute",inset:0,backgroundColor:"dark"===t.palette.mode?"rgba(255,255,255,0.05)":"rgba(0,0,0,0.02)",zIndex:-1}}),".".concat(M.tableHeaderCell),{fontWeight:600,paddingTop:t.spacing(1.5),paddingBottom:t.spacing(1.5),overflow:"hidden"}),".".concat(M.tableBodyCell),{overflow:"hidden"}),".".concat(M.tableCellContent),{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"})}),D=v(p)(function(n){var t=n.theme;return e(e(e(e(e(e({position:"relative",width:"100%",height:"100%",overflow:"hidden",boxSizing:"border-box"},".".concat(M.scrollContainer),{position:"absolute",inset:0,overflowY:"auto"}),".".concat(M.table),{tableLayout:"fixed",width:"100%"}),".".concat(M.tableHeader),{position:"sticky",top:0,zIndex:2,backgroundColor:t.palette.background.paper,boxShadow:"0 1px 3px ".concat("dark"===t.palette.mode?"rgba(0,0,0,0.3)":"rgba(99, 99, 99, 0.2) 0px 2px 8px 0px"),"&::before":{content:'""',position:"absolute",inset:0,backgroundColor:"dark"===t.palette.mode?"rgba(255,255,255,0.05)":"rgba(0,0,0,0.02)",zIndex:-1}}),".".concat(M.tableHeaderCell),{fontWeight:600,paddingTop:t.spacing(1.5),paddingBottom:t.spacing(1.5),overflow:"hidden"}),".".concat(M.tableBodyCell),{overflow:"hidden"}),".".concat(M.tableCellContent),{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"})});export{T as createViewList,W as createViewListLoading,T as default,L as viewListClasses};
1
+ import{defineProperty as e,objectSpread2 as l,asyncToGenerator as n,regenerator as t,slicedToArray as i}from"../../../_virtual/_rollupPluginBabelHelpers.js";import{jsx as a,jsxs as r}from"react/jsx-runtime";import{useCallback as o,useMemo as d,useRef as c,useState as s,useLayoutEffect as u}from"react";import{styled as h,Box as v,alpha as g,TableContainer as p,Table as f,TableHead as m,TableRow as b,TableCell as w,Checkbox as S,TableBody as x,Typography as C}from"@mui/material";import{ListDensity as y}from"./view-list.types.js";import{useListSelection as H,LIST_HEADER_HEIGHT as N,LIST_ROW_HEIGHT_BY_DENSITY as k,LIST_CELL_PADDING_BY_DENSITY as T}from"./view-list.units.js";var W=function(e,l){if(void 0!==e.width)return e.width;if(e.flex&&e.flex>0&&l>0){var n=e.flex/l*100;return"".concat(n,"%")}};function z(e,l,n){var t=e.valueGetter?e.valueGetter(l,n):l[e.field],i={value:t,row:l,index:n,field:e.field};if(e.renderCell)return e.renderCell(i);var r=String(null!=t?t:"");return a(C,{variant:"body2",noWrap:!0,title:r,children:r})}var B=function(e,n){return n?Object.keys(n).map(function(e){var t,i=null!==(t=n[e])&&void 0!==t?t:{};return l({field:e},i)}):function(e){if(0===e.length)return[];var l=e[0];return Object.keys(l).map(function(e){return{field:e,label:String(e),flex:1}})}(e)};function L(e){var n=function(e){return function(l){var n,t,i,o,d,c,s=null!==(n=null!==(t=l.density)&&void 0!==t?t:e.density)&&void 0!==n?n:y.standard,u=B(l.value,null!==(i=l.columns)&&void 0!==i?i:e.columns),h=u.reduce(function(e,l){return e+(l.flex&&l.flex>0?l.flex:0)},0),g=k[s],C=T[s],N=null!==(o=null!==(d=l.selectable)&&void 0!==d?d:e.selectable)&&void 0!==o&&o,L=null!==(c=l.onSelectionChange)&&void 0!==c?c:e.onSelectionChange,I=H(l.value,e.getterId,N,l.selectedIds,L),M=I.selectedIds,j=I.isAllSelected,O=I.isSomeSelected,R=I.handleToggleAll,A=I.handleToggleRow;return a(V,{className:D.root,children:a(p,{className:D.scrollContainer,onScroll:function(e){var n,t=e.currentTarget;t.scrollHeight-t.scrollTop-t.clientHeight<=80&&(null===(n=l.onNearEnd)||void 0===n||n.call(l))},children:r(f,{size:"small",className:D.table,children:[a(m,{className:D.tableHeader,children:r(b,{children:[N&&a(w,{padding:"checkbox",className:D.tableHeaderCell,sx:{width:48},children:a(S,{checked:j,indeterminate:O,onChange:R})}),u.map(function(e){var l,n,t=W(e,h),i=void 0!==e.width;return a(w,{className:D.tableHeaderCell,align:e.align,sx:{width:t,minWidth:i?t:e.minWidth,maxWidth:null!==(l=e.maxWidth)&&void 0!==l?l:t,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:null!==(n=e.label)&&void 0!==n?n:String(e.field)},String(e.field))})]})}),a(x,{children:l.value.map(function(l,n){var t,i=null!==(t=e.getterId(l,n))&&void 0!==t?t:n,o=M.includes(i);return r(b,{hover:!0,sx:{height:g},selected:o,children:[N&&a(w,{padding:"checkbox",className:D.tableBodyCell,sx:{height:g,padding:C},children:a(S,{checked:o,onChange:function(){return A(i)}})}),u.map(function(e){var t,r=W(e,h),o=void 0!==e.width;return a(w,{className:D.tableBodyCell,align:e.align,sx:{height:g,padding:C,width:r,minWidth:o?r:e.minWidth,maxWidth:null!==(t=e.maxWidth)&&void 0!==t?t:r,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:a(v,{className:D.tableCellContent,children:z(e,l,n)})},"".concat(String(i),"-").concat(String(e.field)))})]},i)})})]})})})}}(e),t=function(e){return function(l){var n,t,o,h,g,C,L,I=null!==(n=null!==(t=l.density)&&void 0!==t?t:e.density)&&void 0!==n?n:y.standard,M=B(l.value,l.columns||e.columns),j=M.reduce(function(e,l){return e+(l.flex&&l.flex>0?l.flex:0)},0),O=k[I],R=T[I],A=null!==(o=null!==(h=l.selectable)&&void 0!==h?h:e.selectable)&&void 0!==o&&o,P=null!==(g=l.onSelectionChange)&&void 0!==g?g:e.onSelectionChange,E=H(l.value,e.getterId,A,l.selectedIds,P),G=E.selectedIds,_=E.isAllSelected,Y=E.isSomeSelected,q=E.handleToggleAll,F=E.handleToggleRow,J=d(function(){return Object.assign({},e.virtualizedConfig,l.virtualizedConfig)},[l.virtualizedConfig]),K=c(null),Q=c(null),U=s(0),X=i(U,2),Z=X[0],$=X[1],ee=s(null!==(C=null==J?void 0:J.scrollTop)&&void 0!==C?C:0),le=i(ee,2),ne=le[0],te=le[1],ie=s(N),ae=i(ie,2),re=ae[0],oe=ae[1],de=Math.max(1,null!==(L=null==J?void 0:J.overscan)&&void 0!==L?L:6);u(function(){if(K.current){var e=function(){var e,l,n=null!==(e=null===(l=K.current)||void 0===l?void 0:l.clientHeight)&&void 0!==e?e:0;$(function(e){return e===n?e:n})};e();var l=new ResizeObserver(function(){e()});return l.observe(K.current),function(){return l.disconnect()}}},[]),u(function(){J&&"number"==typeof J.scrollTop&&te(J.scrollTop)},[null==J?void 0:J.scrollTop]),u(function(){var e,l,n=null!==(e=null===(l=Q.current)||void 0===l?void 0:l.offsetHeight)&&void 0!==e?e:0;n>0&&n!==re&&oe(n)},[M.length,re]);var ce=d(function(){var e,n=l.value.length;if(0===n)return{start:0,end:-1,topSpacerHeight:0,bottomSpacerHeight:0};var t=J&&"number"==typeof J.scrollTop?J.scrollTop:ne,i=Math.max(1,(null!==(e=null==J?void 0:J.viewportHeight)&&void 0!==e?e:Z)-re),a=Math.max(0,t-re),r=Math.max(0,Math.floor(a/O)-de),o=Math.ceil(i/O),d=Math.min(n-1,r+o+2*de);return{start:r,end:d,topSpacerHeight:r*O,bottomSpacerHeight:Math.max(0,(n-d-1)*O)}},[l.value.length,re,de,O,J,ne,Z]),se=ce.end>=ce.start?l.value.slice(ce.start,ce.end+1):[],ue=[D.root,D.virtualized].filter(Boolean).join(" ");return a(V,{className:ue,children:a(p,{ref:K,className:D.scrollContainer,onScroll:function(e){var n,t=e.currentTarget;J&&"number"==typeof J.scrollTop||te(t.scrollTop),t.scrollHeight-t.scrollTop-t.clientHeight<=80&&(null===(n=l.onNearEnd)||void 0===n||n.call(l))},children:r(f,{size:"small",className:D.table,children:[a(m,{className:D.tableHeader,children:r(b,{ref:Q,children:[A&&a(w,{padding:"checkbox",className:D.tableHeaderCell,sx:{width:48},children:a(S,{checked:_,indeterminate:Y,onChange:q})}),M.map(function(e){var l,n,t=W(e,j),i=void 0!==e.width;return a(w,{className:D.tableHeaderCell,align:e.align,sx:{width:t,minWidth:i?t:e.minWidth,maxWidth:null!==(l=e.maxWidth)&&void 0!==l?l:t,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:null!==(n=e.label)&&void 0!==n?n:String(e.field)},String(e.field))})]})}),r(x,{children:[ce.topSpacerHeight>0?a(b,{className:D.tableSpacerRow,children:a(w,{colSpan:M.length+(A?1:0),className:D.tableSpacerCell,sx:{height:ce.topSpacerHeight,padding:0,border:0}})}):null,se.map(function(l,n){var t,i=ce.start+n,o=null!==(t=e.getterId(l,i))&&void 0!==t?t:i,d=G.includes(o);return r(b,{hover:!0,sx:{height:O},selected:d,children:[A&&a(w,{padding:"checkbox",className:D.tableBodyCell,sx:{height:O,padding:R},children:a(S,{checked:d,onChange:function(){return F(o)}})}),M.map(function(e){var n,t=W(e,j),r=void 0!==e.width;return a(w,{className:D.tableBodyCell,align:e.align,sx:{height:O,padding:R,width:t,minWidth:r?t:e.minWidth,maxWidth:null!==(n=e.maxWidth)&&void 0!==n?n:t,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:a(v,{className:D.tableCellContent,children:z(e,l,i)})},"".concat(String(o),"-").concat(String(e.field)))})]},o)}),ce.bottomSpacerHeight>0?a(b,{className:D.tableSpacerRow,children:a(w,{colSpan:M.length+(A?1:0),className:D.tableSpacerCell,sx:{height:ce.bottomSpacerHeight,padding:0,border:0}})}):null]})]})})})}}(e);return function(i){var r,o,d=null!==(r=null!==(o=i.renderStrategy)&&void 0!==o?o:e.renderStrategy)&&void 0!==r?r:"normal";return a("virtualized"===d?t:n,l({},i))}}function I(e){return function(l){var i,r,d,c=o(n(t().m(function e(){var n,i,a,r,o,d,c,s,u;return t().w(function(e){for(;;)switch(e.n){case 0:if("infiniteScroll"===l.loadMode){e.n=1;break}return e.a(2);case 1:if(null!==(n=l.pagination)&&void 0!==n&&n.hasNext){e.n=2;break}return e.a(2);case 2:if(!l.loading){e.n=3;break}return e.a(2);case 3:return c=null!==(i=null===(a=l.pagination)||void 0===a?void 0:a.page)&&void 0!==i?i:0,s=null!==(r=null===(o=l.pagination)||void 0===o?void 0:o.pageSize)&&void 0!==r?r:20,u=c+1,e.n=4,null===(d=l.onPageChange)||void 0===d?void 0:d.call(l,u,s);case 4:return e.a(2)}},e)})),[l.loadMode,null===(i=l.pagination)||void 0===i?void 0:i.hasNext,null===(r=l.pagination)||void 0===r?void 0:r.page,null===(d=l.pagination)||void 0===d?void 0:d.pageSize,l.loading,l.onPageChange]);return a(e,{value:l.value,columns:l.columns,density:l.density,renderStrategy:l.renderStrategy,virtualizedConfig:l.virtualizedConfig,onNearEnd:"infiniteScroll"===l.loadMode?c:void 0,selectable:l.selectable,selectedIds:l.selectedIds,onSelectionChange:l.onSelectionChange})}}var M={root:"DinoViewList-root",virtualized:"DinoViewList-virtualized",scrollContainer:"DinoViewList-scrollContainer",table:"DinoViewList-table",tableHeader:"DinoViewList-tableHeader",tableHeaderCell:"DinoViewList-tableHeaderCell",tableBodyCell:"DinoViewList-tableBodyCell",tableSpacerRow:"DinoViewList-tableSpacerRow",tableSpacerCell:"DinoViewList-tableSpacerCell",tableCellContent:"DinoViewList-tableCellContent"},D=M,V=h(v)(function(l){var n=l.theme,t=n.palette.mode,i=g(n.palette.common.black,"dark"===t?.24:.08),a="dark"===t?n.palette.grey[800]:n.palette.grey[50];return e(e(e(e(e(e(e(e({},"&.".concat(D.root),{position:"relative",width:"100%",height:"100%",overflow:"hidden"}),".".concat(D.scrollContainer),{position:"absolute",inset:0,overflowY:"auto",padding:n.spacing(0,.5),margin:n.spacing(0,-.5),"&::-webkit-scrollbar":{width:8,height:8},"&::-webkit-scrollbar-thumb":{backgroundColor:n.palette.grey[300],borderRadius:4},"&::-webkit-scrollbar-thumb:hover":{backgroundColor:n.palette.grey[500]}}),".".concat(D.table),{tableLayout:"auto",width:"100%",borderCollapse:"separate",borderSpacing:"0 ".concat(n.spacing(.5)),marginTop:n.spacing(-.5)}),".".concat(D.tableHeader),{position:"sticky",top:0,zIndex:2,backgroundColor:a}),".".concat(D.tableHeaderCell),{fontWeight:500,paddingTop:n.spacing(1.5),paddingBottom:n.spacing(1.5),overflow:"hidden",borderBottom:"unset"}),".".concat(D.tableBodyCell),{overflow:"hidden",borderTop:"0.5px dashed ".concat(i),borderBottom:"0.5px dashed ".concat(i),"&:first-of-type":{borderLeft:"0.5px dashed ".concat(i)},"&:last-of-type":{borderRight:"0.5px dashed ".concat(i)}}),".".concat(D.tableCellContent),{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",minWidth:0,width:"100%"}),"&.".concat(D.virtualized),{boxSizing:"border-box"})});export{L as createViewList,I as createViewListLoading,L as default,M as viewListClasses};
2
2
  //# sourceMappingURL=view-list.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"view-list.js","sources":["../../../../src/lab/data-surface/view-list.tsx"],"sourcesContent":["// Copyright (c) 2024-present, Dinocollab Technologies, Inc. and its affiliates. All rights reserved.\r\n\r\n// imports\r\nimport { useCallback, useLayoutEffect, useMemo, useRef, useState } from 'react'\r\nimport { Box, Table, TableBody, TableCell, TableContainer, TableHead, TableRow, styled } from '@mui/material'\r\nimport { ListDensity } from './view-list.types'\r\nimport { LIST_CELL_PADDING_BY_DENSITY, LIST_HEADER_HEIGHT, LIST_ROW_HEIGHT_BY_DENSITY } from './view-list.units'\r\n// types\r\nimport type { ComponentType, FC, ReactNode } from 'react'\r\nimport type { IListCellParams, TListColumn, TListColumns } from './view-list.types'\r\nimport type { TGetterId, LoadingModeRule, TPagination, TVirtualizedConfig, RenderStrategyRule } from './types'\r\n\r\nexport interface IViewListBase<T> {\r\n columns?: TListColumns<T>\r\n density?: ListDensity\r\n /**\r\n * Controls how the list is rendered into the DOM.\r\n * - `normal` — all rows are mounted (suitable for small datasets)\r\n * - `virtualized` — only visible rows are mounted (optimized for large datasets)\r\n * @default 'normal'\r\n */\r\n renderStrategy?: RenderStrategyRule\r\n virtualizedConfig?: TVirtualizedConfig\r\n /** Called when user scrolls near the bottom of the list. Use this to trigger pagination or infinity load. */\r\n onNearEnd?: () => void\r\n}\r\n\r\nexport interface IViewListConfig<T> extends IViewListBase<T> {\r\n getterId: TGetterId<T>\r\n}\r\n\r\nexport interface IViewListProps<T> extends IViewListBase<T> {\r\n value: T[]\r\n}\r\n\r\nexport interface IViewListLoadingProps<T> extends IViewListBase<T> {\r\n value: T[]\r\n loadMode: LoadingModeRule\r\n loading?: boolean\r\n pagination?: TPagination\r\n onPageChange?: (page: number, pageSize: number) => void | Promise<void>\r\n}\r\n\r\nconst getColumnWidth = <T,>(column: TListColumn<T>, totalFlex: number): number | string | undefined => {\r\n if (column.width !== undefined) return column.width\r\n if (totalFlex > 0 && column.flex && column.flex > 0) {\r\n const percent = (column.flex / totalFlex) * 100\r\n return `${percent}%`\r\n }\r\n if (totalFlex > 0 && column.minWidth) return `${column.minWidth}px`\r\n return undefined\r\n}\r\n\r\nconst renderCellValue = <T,>(column: TListColumn<T>, row: T, index: number): ReactNode => {\r\n const value = column.valueGetter ? column.valueGetter(row, index) : (row as any)[column.field]\r\n const params: IListCellParams<T> = { value, row, index, field: column.field }\r\n\r\n if (column.renderCell) return column.renderCell(params)\r\n return String(value ?? '')\r\n}\r\n\r\nconst buildDefaultColumns = <T,>(data: T[]): TListColumn<T>[] => {\r\n if (data.length === 0) return []\r\n const firstRow = data[0]\r\n return Object.keys(firstRow as object).map((key) => ({\r\n field: key as keyof T,\r\n label: String(key),\r\n flex: 1\r\n }))\r\n}\r\n\r\n/**\r\n * Converts TListColumns<T> Record type to TListColumn<T>[] array for internal use.\r\n */\r\nconst columnsRecordToArray = <T,>(columnsRecord?: TListColumns<T>): TListColumn<T>[] => {\r\n if (!columnsRecord) return []\r\n const keys = Object.keys(columnsRecord) as (keyof T)[]\r\n return keys.map((key) => {\r\n const colConfig = columnsRecord[key] ?? {}\r\n return { field: key, ...colConfig } as TListColumn<T>\r\n })\r\n}\r\n\r\nfunction createViewListNormal<T>(config: IViewListConfig<T>) {\r\n const ViewListNormal: FC<IViewListProps<T>> = (props) => {\r\n const density = props.density ?? config.density ?? ListDensity.standard\r\n const columnsArray = props.columns\r\n ? columnsRecordToArray(props.columns)\r\n : config.columns\r\n ? columnsRecordToArray(config.columns)\r\n : buildDefaultColumns(props.value)\r\n const columns = columnsArray\r\n const totalFlex = columns.reduce((sum, col) => sum + (col.flex && col.flex > 0 ? col.flex : 0), 0)\r\n const rowHeight = LIST_ROW_HEIGHT_BY_DENSITY[density]\r\n const cellPadding = LIST_CELL_PADDING_BY_DENSITY[density]\r\n\r\n return (\r\n <ViewListNormalStyled className={classes.root}>\r\n <TableContainer\r\n className={classes.scrollContainer}\r\n onScroll={(e) => {\r\n const t = e.currentTarget\r\n if (t.scrollHeight - t.scrollTop - t.clientHeight <= 80) {\r\n props.onNearEnd?.()\r\n }\r\n }}\r\n >\r\n <Table size='small' className={classes.table}>\r\n <TableHead className={classes.tableHeader}>\r\n <TableRow>\r\n {columns.map((col) => (\r\n <TableCell\r\n key={String(col.field)}\r\n className={classes.tableHeaderCell}\r\n align={col.align}\r\n sx={{\r\n minWidth: col.minWidth,\r\n width: getColumnWidth(col, totalFlex),\r\n maxWidth: col.width ?? (totalFlex > 0 && col.flex ? 0 : undefined)\r\n }}\r\n >\r\n {col.label ?? String(col.field)}\r\n </TableCell>\r\n ))}\r\n </TableRow>\r\n </TableHead>\r\n <TableBody>\r\n {props.value.map((row, index) => {\r\n const rowKey = config.getterId(row, index) ?? index\r\n return (\r\n <TableRow key={rowKey} hover sx={{ height: rowHeight }}>\r\n {columns.map((col) => (\r\n <TableCell\r\n key={`${String(rowKey)}-${String(col.field)}`}\r\n className={classes.tableBodyCell}\r\n align={col.align}\r\n sx={{\r\n height: rowHeight,\r\n padding: cellPadding,\r\n maxWidth: col.width ?? (totalFlex > 0 && col.flex ? 0 : undefined)\r\n }}\r\n >\r\n <Box className={classes.tableCellContent}>{renderCellValue(col, row, index)}</Box>\r\n </TableCell>\r\n ))}\r\n </TableRow>\r\n )\r\n })}\r\n </TableBody>\r\n </Table>\r\n </TableContainer>\r\n </ViewListNormalStyled>\r\n )\r\n }\r\n return ViewListNormal\r\n}\r\n\r\nfunction createViewListVirtualized<T>(config: IViewListConfig<T>) {\r\n const ViewListVirtualized: FC<IViewListProps<T>> = (props) => {\r\n const density = props.density ?? config.density ?? ListDensity.standard\r\n const columnsArray = props.columns\r\n ? columnsRecordToArray(props.columns)\r\n : config.columns\r\n ? columnsRecordToArray(config.columns)\r\n : buildDefaultColumns(props.value)\r\n const columns = columnsArray\r\n const totalFlex = columns.reduce((sum, col) => sum + (col.flex && col.flex > 0 ? col.flex : 0), 0)\r\n const rowHeight = LIST_ROW_HEIGHT_BY_DENSITY[density]\r\n const cellPadding = LIST_CELL_PADDING_BY_DENSITY[density]\r\n\r\n const virtualized = useMemo(() => {\r\n return Object.assign({}, config.virtualizedConfig, props.virtualizedConfig) as TVirtualizedConfig | undefined\r\n }, [props.virtualizedConfig])\r\n\r\n const wrapRef = useRef<HTMLDivElement | null>(null)\r\n const headerRowRef = useRef<HTMLTableRowElement | null>(null)\r\n const [containerHeight, setContainerHeight] = useState(0)\r\n const [scrollTopState, setScrollTopState] = useState(virtualized?.scrollTop ?? 0)\r\n const [headerHeight, setHeaderHeight] = useState(LIST_HEADER_HEIGHT)\r\n\r\n const overscan = Math.max(1, virtualized?.overscan ?? 6)\r\n\r\n useLayoutEffect(() => {\r\n if (!wrapRef.current) return\r\n\r\n const updateSize = () => {\r\n const nextHeight = wrapRef.current?.clientHeight ?? 0\r\n setContainerHeight((prev) => (prev === nextHeight ? prev : nextHeight))\r\n }\r\n\r\n updateSize()\r\n\r\n const observer = new ResizeObserver(() => {\r\n updateSize()\r\n })\r\n\r\n observer.observe(wrapRef.current)\r\n return () => observer.disconnect()\r\n }, [])\r\n\r\n // sync external virtualized.scrollTop when provided\r\n useLayoutEffect(() => {\r\n if (virtualized && typeof virtualized.scrollTop === 'number') {\r\n setScrollTopState(virtualized.scrollTop)\r\n }\r\n }, [virtualized?.scrollTop])\r\n\r\n useLayoutEffect(() => {\r\n const measured = headerRowRef.current?.offsetHeight ?? 0\r\n if (measured > 0 && measured !== headerHeight) {\r\n setHeaderHeight(measured)\r\n }\r\n }, [columns.length, headerHeight])\r\n\r\n const windowed = useMemo(() => {\r\n const totalItems = props.value.length\r\n if (totalItems === 0) {\r\n return { start: 0, end: -1, topSpacerHeight: 0, bottomSpacerHeight: 0 }\r\n }\r\n\r\n const effectiveScrollTop = virtualized && typeof virtualized.scrollTop === 'number' ? virtualized.scrollTop : scrollTopState\r\n const safeViewportHeight = Math.max(1, (virtualized?.viewportHeight ?? containerHeight) - headerHeight)\r\n const adjustedScrollTop = Math.max(0, effectiveScrollTop - headerHeight)\r\n const start = Math.max(0, Math.floor(adjustedScrollTop / rowHeight) - overscan)\r\n const visibleCount = Math.ceil(safeViewportHeight / rowHeight)\r\n const end = Math.min(totalItems - 1, start + visibleCount + overscan * 2)\r\n\r\n const topSpacerHeight = start * rowHeight\r\n const bottomSpacerHeight = Math.max(0, (totalItems - end - 1) * rowHeight)\r\n\r\n return { start, end, topSpacerHeight, bottomSpacerHeight }\r\n }, [props.value.length, headerHeight, overscan, rowHeight, virtualized, scrollTopState, containerHeight])\r\n\r\n const rowsToRender = windowed.end >= windowed.start ? props.value.slice(windowed.start, windowed.end + 1) : []\r\n\r\n return (\r\n <ViewListVirtualizedStyled className={classes.root}>\r\n <TableContainer\r\n ref={wrapRef}\r\n className={classes.scrollContainer}\r\n onScroll={(e) => {\r\n const t = e.currentTarget as HTMLDivElement\r\n if (!virtualized || typeof virtualized.scrollTop !== 'number') {\r\n setScrollTopState(t.scrollTop)\r\n }\r\n if (t.scrollHeight - t.scrollTop - t.clientHeight <= 80) {\r\n props.onNearEnd?.()\r\n }\r\n }}\r\n >\r\n <Table size='small' className={classes.table}>\r\n <TableHead className={classes.tableHeader}>\r\n <TableRow ref={headerRowRef}>\r\n {columns.map((col) => (\r\n <TableCell\r\n key={String(col.field)}\r\n className={classes.tableHeaderCell}\r\n align={col.align}\r\n sx={{\r\n minWidth: col.minWidth,\r\n width: getColumnWidth(col, totalFlex),\r\n maxWidth: col.width ?? (totalFlex > 0 && col.flex ? 0 : undefined)\r\n }}\r\n >\r\n {col.label ?? String(col.field)}\r\n </TableCell>\r\n ))}\r\n </TableRow>\r\n </TableHead>\r\n <TableBody>\r\n {windowed.topSpacerHeight > 0 ? (\r\n <TableRow className={classes.tableSpacerRow}>\r\n <TableCell\r\n colSpan={columns.length}\r\n className={classes.tableSpacerCell}\r\n sx={{ height: windowed.topSpacerHeight, padding: 0, border: 0 }}\r\n />\r\n </TableRow>\r\n ) : null}\r\n\r\n {rowsToRender.map((row, offset) => {\r\n const index = windowed.start + offset\r\n const rowKey = config.getterId(row, index) ?? index\r\n\r\n return (\r\n <TableRow key={rowKey} hover sx={{ height: rowHeight }}>\r\n {columns.map((col) => (\r\n <TableCell\r\n key={`${String(rowKey)}-${String(col.field)}`}\r\n className={classes.tableBodyCell}\r\n align={col.align}\r\n sx={{\r\n height: rowHeight,\r\n padding: cellPadding,\r\n maxWidth: col.width ?? (totalFlex > 0 && col.flex ? 0 : undefined)\r\n }}\r\n >\r\n <Box className={classes.tableCellContent}>{renderCellValue(col, row, index)}</Box>\r\n </TableCell>\r\n ))}\r\n </TableRow>\r\n )\r\n })}\r\n\r\n {windowed.bottomSpacerHeight > 0 ? (\r\n <TableRow className={classes.tableSpacerRow}>\r\n <TableCell\r\n colSpan={columns.length}\r\n className={classes.tableSpacerCell}\r\n sx={{ height: windowed.bottomSpacerHeight, padding: 0, border: 0 }}\r\n />\r\n </TableRow>\r\n ) : null}\r\n </TableBody>\r\n </Table>\r\n </TableContainer>\r\n </ViewListVirtualizedStyled>\r\n )\r\n }\r\n return ViewListVirtualized\r\n}\r\n\r\nexport function createViewList<T>(config: IViewListConfig<T>) {\r\n const ViewListNormal = createViewListNormal<T>(config)\r\n const ViewListVirtualized = createViewListVirtualized<T>(config)\r\n\r\n const ViewList: FC<IViewListProps<T>> = (props) => {\r\n const renderStrategy = props.renderStrategy ?? config.renderStrategy ?? 'normal'\r\n if (renderStrategy === 'virtualized') {\r\n return <ViewListVirtualized {...props} />\r\n }\r\n return <ViewListNormal {...props} />\r\n }\r\n return ViewList\r\n}\r\n\r\nexport function createViewListLoading<T>(ListComponent: ComponentType<IViewListProps<T>>) {\r\n const ViewListLoading: FC<IViewListLoadingProps<T>> = (props) => {\r\n const handleNearEnd = useCallback(async () => {\r\n if (props.loadMode !== 'infiniteScroll') return\r\n if (!props.pagination?.hasNext) return\r\n if (props.loading) return\r\n\r\n const currentPage = props.pagination?.page ?? 0\r\n const currentPageSize = props.pagination?.pageSize ?? 20\r\n const nextPage = currentPage + 1\r\n await props.onPageChange?.(nextPage, currentPageSize)\r\n }, [props.loadMode, props.pagination?.hasNext, props.pagination?.page, props.pagination?.pageSize, props.loading, props.onPageChange])\r\n\r\n return (\r\n <ListComponent\r\n value={props.value}\r\n columns={props.columns}\r\n density={props.density}\r\n renderStrategy={props.renderStrategy}\r\n virtualizedConfig={props.virtualizedConfig}\r\n onNearEnd={props.loadMode === 'infiniteScroll' ? handleNearEnd : undefined}\r\n />\r\n )\r\n }\r\n\r\n return ViewListLoading\r\n}\r\n\r\nexport default createViewList\r\n\r\nexport const viewListClasses = {\r\n root: 'DinoViewList-root',\r\n scrollContainer: 'DinoViewList-scrollContainer',\r\n table: 'DinoViewList-table',\r\n tableHeader: 'DinoViewList-tableHeader',\r\n tableHeaderCell: 'DinoViewList-tableHeaderCell',\r\n tableBodyCell: 'DinoViewList-tableBodyCell',\r\n tableSpacerRow: 'DinoViewList-tableSpacerRow',\r\n tableSpacerCell: 'DinoViewList-tableSpacerCell',\r\n tableCellContent: 'DinoViewList-tableCellContent'\r\n}\r\nconst classes = viewListClasses\r\n\r\nconst ViewListNormalStyled = styled(Box)(({ theme }) => ({\r\n position: 'relative',\r\n width: '100%',\r\n height: '100%',\r\n overflow: 'hidden',\r\n [`.${classes.scrollContainer}`]: {\r\n position: 'absolute',\r\n inset: 0, // top: 0, left: 0, right: 0, bottom: 0\r\n overflowY: 'auto'\r\n },\r\n [`.${classes.table}`]: {\r\n tableLayout: 'fixed',\r\n width: '100%'\r\n },\r\n [`.${classes.tableHeader}`]: {\r\n position: 'sticky',\r\n top: 0,\r\n zIndex: 2,\r\n backgroundColor: theme.palette.background.paper,\r\n boxShadow: `0 1px 3px ${theme.palette.mode === 'dark' ? 'rgba(0,0,0,0.3)' : 'rgba(99, 99, 99, 0.2) 0px 2px 8px 0px'}`,\r\n '&::before': {\r\n content: '\"\"',\r\n position: 'absolute',\r\n inset: 0, // top: 0, left: 0, right: 0, bottom: 0\r\n backgroundColor: theme.palette.mode === 'dark' ? 'rgba(255,255,255,0.05)' : 'rgba(0,0,0,0.02)',\r\n zIndex: -1\r\n }\r\n },\r\n [`.${classes.tableHeaderCell}`]: {\r\n fontWeight: 600,\r\n paddingTop: theme.spacing(1.5),\r\n paddingBottom: theme.spacing(1.5),\r\n overflow: 'hidden'\r\n },\r\n [`.${classes.tableBodyCell}`]: {\r\n overflow: 'hidden'\r\n },\r\n [`.${classes.tableCellContent}`]: {\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis',\r\n whiteSpace: 'nowrap'\r\n }\r\n}))\r\n\r\nconst ViewListVirtualizedStyled = styled(Box)(({ theme }) => ({\r\n position: 'relative',\r\n width: '100%',\r\n height: '100%',\r\n overflow: 'hidden',\r\n boxSizing: 'border-box',\r\n [`.${classes.scrollContainer}`]: {\r\n position: 'absolute',\r\n inset: 0, // top: 0, left: 0, right: 0, bottom: 0\r\n overflowY: 'auto'\r\n },\r\n [`.${classes.table}`]: {\r\n tableLayout: 'fixed',\r\n width: '100%'\r\n },\r\n [`.${classes.tableHeader}`]: {\r\n position: 'sticky',\r\n top: 0,\r\n zIndex: 2,\r\n backgroundColor: theme.palette.background.paper,\r\n boxShadow: `0 1px 3px ${theme.palette.mode === 'dark' ? 'rgba(0,0,0,0.3)' : 'rgba(99, 99, 99, 0.2) 0px 2px 8px 0px'}`,\r\n '&::before': {\r\n content: '\"\"',\r\n position: 'absolute',\r\n inset: 0,\r\n backgroundColor: theme.palette.mode === 'dark' ? 'rgba(255,255,255,0.05)' : 'rgba(0,0,0,0.02)',\r\n zIndex: -1\r\n }\r\n },\r\n [`.${classes.tableHeaderCell}`]: {\r\n fontWeight: 600,\r\n paddingTop: theme.spacing(1.5),\r\n paddingBottom: theme.spacing(1.5),\r\n overflow: 'hidden'\r\n },\r\n [`.${classes.tableBodyCell}`]: {\r\n overflow: 'hidden'\r\n },\r\n [`.${classes.tableCellContent}`]: {\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis',\r\n whiteSpace: 'nowrap'\r\n }\r\n}))\r\n"],"names":["getColumnWidth","column","totalFlex","undefined","width","flex","percent","concat","minWidth","renderCellValue","row","index","value","valueGetter","field","params","renderCell","String","buildDefaultColumns","data","length","firstRow","Object","keys","map","key","label","columnsRecordToArray","columnsRecord","_columnsRecord$key","colConfig","_objectSpread","createViewList","config","ViewListNormal","props","_ref","_props$density","density","ListDensity","standard","columns","reduce","sum","col","rowHeight","LIST_ROW_HEIGHT_BY_DENSITY","cellPadding","LIST_CELL_PADDING_BY_DENSITY","_jsx","ViewListNormalStyled","className","classes","root","children","TableContainer","scrollContainer","onScroll","e","_props$onNearEnd","t","currentTarget","scrollHeight","scrollTop","clientHeight","onNearEnd","call","_jsxs","Table","size","table","TableHead","tableHeader","TableRow","_col$width","_col$label","TableCell","tableHeaderCell","align","sx","maxWidth","TableBody","_config$getterId","rowKey","getterId","hover","height","_col$width2","tableBodyCell","padding","Box","tableCellContent","createViewListNormal","ViewListVirtualized","_ref2","_props$density2","_virtualized$scrollTo","_virtualized$overscan","virtualized","useMemo","assign","virtualizedConfig","wrapRef","useRef","headerRowRef","_useState","useState","_useState2","_slicedToArray","containerHeight","setContainerHeight","_useState3","_useState4","scrollTopState","setScrollTopState","_useState5","LIST_HEADER_HEIGHT","_useState6","headerHeight","setHeaderHeight","overscan","Math","max","useLayoutEffect","current","updateSize","_wrapRef$current$clie","_wrapRef$current","nextHeight","prev","observer","ResizeObserver","observe","disconnect","_headerRowRef$current","_headerRowRef$current2","measured","offsetHeight","windowed","_virtualized$viewport","totalItems","start","end","topSpacerHeight","bottomSpacerHeight","effectiveScrollTop","safeViewportHeight","viewportHeight","adjustedScrollTop","floor","visibleCount","ceil","min","rowsToRender","slice","ViewListVirtualizedStyled","ref","_props$onNearEnd2","_col$width3","_col$label2","tableSpacerRow","colSpan","tableSpacerCell","border","offset","_config$getterId2","_col$width4","createViewListVirtualized","_ref3","_props$renderStrategy","renderStrategy","createViewListLoading","ListComponent","_props$pagination4","_props$pagination5","_props$pagination6","handleNearEnd","useCallback","_asyncToGenerator","_regenerator","m","_callee","_props$pagination","_props$pagination$pag","_props$pagination2","_props$pagination$pag2","_props$pagination3","_props$onPageChange","currentPage","currentPageSize","nextPage","w","_context","n","loadMode","a","pagination","hasNext","loading","page","pageSize","onPageChange","viewListClasses","styled","_ref5","theme","_defineProperty","position","overflow","inset","overflowY","tableLayout","top","zIndex","backgroundColor","palette","background","paper","boxShadow","mode","content","fontWeight","paddingTop","spacing","paddingBottom","textOverflow","whiteSpace","_ref7","boxSizing"],"mappings":"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"}
1
+ {"version":3,"file":"view-list.js","sources":["../../../../src/lab/data-surface/view-list.tsx"],"sourcesContent":["// Copyright (c) 2024-present, Dinocollab Technologies, Inc. and its affiliates. All rights reserved.\r\n\r\n// imports\r\nimport { useCallback, useLayoutEffect, useMemo, useRef, useState } from 'react'\r\nimport { Box, Checkbox, Table, TableBody, TableCell, TableContainer, TableHead, TableRow, Typography, alpha, styled } from '@mui/material'\r\nimport { ListDensity } from './view-list.types'\r\nimport { LIST_CELL_PADDING_BY_DENSITY, LIST_HEADER_HEIGHT, LIST_ROW_HEIGHT_BY_DENSITY, useListSelection } from './view-list.units'\r\n// types\r\nimport type { ComponentType, FC, ReactNode } from 'react'\r\nimport type { IListCellParams, TListColumn, TListColumns } from './view-list.types'\r\nimport type { TGetterId, LoadingModeRule, TPagination, TVirtualizedConfig, RenderStrategyRule } from './types'\r\n\r\nexport interface IViewListBase<T> {\r\n columns?: TListColumns<T>\r\n density?: ListDensity\r\n /**\r\n * Controls how the list is rendered into the DOM.\r\n * - `normal` — all rows are mounted (suitable for small datasets)\r\n * - `virtualized` — only visible rows are mounted (optimized for large datasets)\r\n * @default 'normal'\r\n */\r\n renderStrategy?: RenderStrategyRule\r\n virtualizedConfig?: TVirtualizedConfig\r\n /** Called when user scrolls near the bottom of the list. Use this to trigger pagination or infinity load. */\r\n onNearEnd?: () => void\r\n /** Enable row selection with checkboxes. */\r\n selectable?: boolean\r\n /** Array of selected row IDs (controlled). */\r\n selectedIds?: (string | number)[]\r\n /** Callback when selection changes. */\r\n onSelectionChange?: (selectedIds: (string | number)[]) => void\r\n}\r\n\r\nexport interface IViewListConfig<T> extends IViewListBase<T> {\r\n getterId: TGetterId<T>\r\n}\r\n\r\nexport interface IViewListProps<T> extends IViewListBase<T> {\r\n value: T[]\r\n}\r\n\r\nexport interface IViewListLoadingProps<T> extends IViewListBase<T> {\r\n value: T[]\r\n loadMode: LoadingModeRule\r\n loading?: boolean\r\n pagination?: TPagination\r\n onPageChange?: (page: number, pageSize: number) => void | Promise<void>\r\n}\r\n\r\nconst getColumnWidth = <T,>(column: TListColumn<T>, totalFlex: number): number | string | undefined => {\r\n // Priority 1: Explicit width always wins\r\n if (column.width !== undefined) return column.width\r\n\r\n // Priority 2: Flex-based proportional width\r\n if (column.flex && column.flex > 0 && totalFlex > 0) {\r\n const percent = (column.flex / totalFlex) * 100\r\n return `${percent}%`\r\n }\r\n\r\n // Priority 3: Auto-width (no width or flex specified)\r\n // Let the table auto-calculate based on content\r\n return undefined\r\n}\r\n\r\nfunction renderCellValue<T>(column: TListColumn<T>, row: T, index: number): ReactNode {\r\n const value = column.valueGetter ? column.valueGetter(row, index) : (row as any)[column.field]\r\n const params: IListCellParams<T> = { value, row, index, field: column.field }\r\n if (column.renderCell) return column.renderCell(params)\r\n const valueLabel = String(value ?? '')\r\n return (\r\n <Typography variant='body2' noWrap title={valueLabel}>\r\n {valueLabel}\r\n </Typography>\r\n )\r\n}\r\n\r\nconst buildDefaultColumns = <T,>(data: T[]): TListColumn<T>[] => {\r\n if (data.length === 0) return []\r\n const firstRow = data[0]\r\n return Object.keys(firstRow as object).map((key) => ({\r\n field: key as keyof T,\r\n label: String(key),\r\n flex: 1\r\n }))\r\n}\r\n\r\n/**\r\n * Converts TListColumns<T> Record type to TListColumn<T>[] array for internal use.\r\n */\r\nconst columnsRecordToArray = <T,>(value: T[], columnsRecord?: TListColumns<T>): TListColumn<T>[] => {\r\n if (!columnsRecord) return buildDefaultColumns(value)\r\n const keys = Object.keys(columnsRecord) as (keyof T)[]\r\n return keys.map((key) => {\r\n const colConfig = columnsRecord[key] ?? {}\r\n return { field: key, ...colConfig } as TListColumn<T>\r\n })\r\n}\r\n\r\nfunction createViewListNormal<T>(config: IViewListConfig<T>) {\r\n const ViewListNormal: FC<IViewListProps<T>> = (props) => {\r\n const density = props.density ?? config.density ?? ListDensity.standard\r\n\r\n const columnsArray = columnsRecordToArray(props.value, props.columns ?? config.columns)\r\n const columns = columnsArray\r\n const totalFlex = columns.reduce((sum, col) => sum + (col.flex && col.flex > 0 ? col.flex : 0), 0)\r\n const rowHeight = LIST_ROW_HEIGHT_BY_DENSITY[density]\r\n const cellPadding = LIST_CELL_PADDING_BY_DENSITY[density]\r\n\r\n const selectable = props.selectable ?? config.selectable ?? false\r\n const onSelectionChange = props.onSelectionChange ?? config.onSelectionChange\r\n\r\n // Use selection hook to manage checkbox state and handlers\r\n const selection = useListSelection(props.value, config.getterId, selectable, props.selectedIds, onSelectionChange)\r\n const { selectedIds, isAllSelected, isSomeSelected, handleToggleAll, handleToggleRow } = selection\r\n\r\n return (\r\n <ViewListStyled className={classes.root}>\r\n <TableContainer\r\n className={classes.scrollContainer}\r\n onScroll={(e) => {\r\n const t = e.currentTarget\r\n if (t.scrollHeight - t.scrollTop - t.clientHeight <= 80) {\r\n props.onNearEnd?.()\r\n }\r\n }}\r\n >\r\n <Table size='small' className={classes.table}>\r\n <TableHead className={classes.tableHeader}>\r\n <TableRow>\r\n {selectable && (\r\n <TableCell padding='checkbox' className={classes.tableHeaderCell} sx={{ width: 48 }}>\r\n <Checkbox checked={isAllSelected} indeterminate={isSomeSelected} onChange={handleToggleAll} />\r\n </TableCell>\r\n )}\r\n {columns.map((col) => {\r\n const colWidth = getColumnWidth(col, totalFlex)\r\n const hasFixedWidth = col.width !== undefined\r\n return (\r\n <TableCell\r\n key={String(col.field)}\r\n className={classes.tableHeaderCell}\r\n align={col.align}\r\n sx={{\r\n width: colWidth,\r\n // For fixed-width columns, enforce minWidth = width to prevent shrinking\r\n minWidth: hasFixedWidth ? colWidth : col.minWidth,\r\n // Lock all columns with maxWidth to prevent text overflow expansion\r\n maxWidth: col.maxWidth ?? colWidth,\r\n // Prevent text overflow from expanding cells\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis',\r\n whiteSpace: 'nowrap'\r\n }}\r\n >\r\n {col.label ?? String(col.field)}\r\n </TableCell>\r\n )\r\n })}\r\n </TableRow>\r\n </TableHead>\r\n <TableBody>\r\n {props.value.map((row, index) => {\r\n const rowKey = config.getterId(row, index) ?? index\r\n const isSelected = selectedIds.includes(rowKey)\r\n return (\r\n <TableRow key={rowKey} hover sx={{ height: rowHeight }} selected={isSelected}>\r\n {selectable && (\r\n <TableCell padding='checkbox' className={classes.tableBodyCell} sx={{ height: rowHeight, padding: cellPadding }}>\r\n <Checkbox checked={isSelected} onChange={() => handleToggleRow(rowKey)} />\r\n </TableCell>\r\n )}\r\n {columns.map((col) => {\r\n const colWidth = getColumnWidth(col, totalFlex)\r\n const hasFixedWidth = col.width !== undefined\r\n return (\r\n <TableCell\r\n key={`${String(rowKey)}-${String(col.field)}`}\r\n className={classes.tableBodyCell}\r\n align={col.align}\r\n sx={{\r\n height: rowHeight,\r\n padding: cellPadding,\r\n width: colWidth,\r\n // For fixed-width columns, enforce minWidth = width to prevent shrinking\r\n minWidth: hasFixedWidth ? colWidth : col.minWidth,\r\n // Lock all columns with maxWidth to prevent text overflow expansion\r\n maxWidth: col.maxWidth ?? colWidth,\r\n // Prevent text overflow from expanding cells\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis',\r\n whiteSpace: 'nowrap'\r\n }}\r\n >\r\n <Box className={classes.tableCellContent}>{renderCellValue(col, row, index)}</Box>\r\n </TableCell>\r\n )\r\n })}\r\n </TableRow>\r\n )\r\n })}\r\n </TableBody>\r\n </Table>\r\n </TableContainer>\r\n </ViewListStyled>\r\n )\r\n }\r\n return ViewListNormal\r\n}\r\n\r\nfunction createViewListVirtualized<T>(config: IViewListConfig<T>) {\r\n const ViewListVirtualized: FC<IViewListProps<T>> = (props) => {\r\n const density = props.density ?? config.density ?? ListDensity.standard\r\n const columnsArray = columnsRecordToArray(props.value, props.columns || config.columns)\r\n const columns = columnsArray\r\n const totalFlex = columns.reduce((sum, col) => sum + (col.flex && col.flex > 0 ? col.flex : 0), 0)\r\n const rowHeight = LIST_ROW_HEIGHT_BY_DENSITY[density]\r\n const cellPadding = LIST_CELL_PADDING_BY_DENSITY[density]\r\n\r\n const selectable = props.selectable ?? config.selectable ?? false\r\n const onSelectionChange = props.onSelectionChange ?? config.onSelectionChange\r\n\r\n // Use selection hook to manage checkbox state and handlers\r\n const selection = useListSelection(props.value, config.getterId, selectable, props.selectedIds, onSelectionChange)\r\n const { selectedIds, isAllSelected, isSomeSelected, handleToggleAll, handleToggleRow } = selection\r\n\r\n const virtualized = useMemo(() => {\r\n return Object.assign({}, config.virtualizedConfig, props.virtualizedConfig) as TVirtualizedConfig | undefined\r\n }, [props.virtualizedConfig])\r\n\r\n const wrapRef = useRef<HTMLDivElement | null>(null)\r\n const headerRowRef = useRef<HTMLTableRowElement | null>(null)\r\n const [containerHeight, setContainerHeight] = useState(0)\r\n const [scrollTopState, setScrollTopState] = useState(virtualized?.scrollTop ?? 0)\r\n const [headerHeight, setHeaderHeight] = useState(LIST_HEADER_HEIGHT)\r\n\r\n const overscan = Math.max(1, virtualized?.overscan ?? 6)\r\n\r\n useLayoutEffect(() => {\r\n if (!wrapRef.current) return\r\n\r\n const updateSize = () => {\r\n const nextHeight = wrapRef.current?.clientHeight ?? 0\r\n setContainerHeight((prev) => (prev === nextHeight ? prev : nextHeight))\r\n }\r\n\r\n updateSize()\r\n\r\n const observer = new ResizeObserver(() => {\r\n updateSize()\r\n })\r\n\r\n observer.observe(wrapRef.current)\r\n return () => observer.disconnect()\r\n }, [])\r\n\r\n // sync external virtualized.scrollTop when provided\r\n useLayoutEffect(() => {\r\n if (virtualized && typeof virtualized.scrollTop === 'number') {\r\n setScrollTopState(virtualized.scrollTop)\r\n }\r\n }, [virtualized?.scrollTop])\r\n\r\n useLayoutEffect(() => {\r\n const measured = headerRowRef.current?.offsetHeight ?? 0\r\n if (measured > 0 && measured !== headerHeight) {\r\n setHeaderHeight(measured)\r\n }\r\n }, [columns.length, headerHeight])\r\n\r\n const windowed = useMemo(() => {\r\n const totalItems = props.value.length\r\n if (totalItems === 0) {\r\n return { start: 0, end: -1, topSpacerHeight: 0, bottomSpacerHeight: 0 }\r\n }\r\n\r\n const effectiveScrollTop = virtualized && typeof virtualized.scrollTop === 'number' ? virtualized.scrollTop : scrollTopState\r\n const safeViewportHeight = Math.max(1, (virtualized?.viewportHeight ?? containerHeight) - headerHeight)\r\n const adjustedScrollTop = Math.max(0, effectiveScrollTop - headerHeight)\r\n const start = Math.max(0, Math.floor(adjustedScrollTop / rowHeight) - overscan)\r\n const visibleCount = Math.ceil(safeViewportHeight / rowHeight)\r\n const end = Math.min(totalItems - 1, start + visibleCount + overscan * 2)\r\n\r\n const topSpacerHeight = start * rowHeight\r\n const bottomSpacerHeight = Math.max(0, (totalItems - end - 1) * rowHeight)\r\n\r\n return { start, end, topSpacerHeight, bottomSpacerHeight }\r\n }, [props.value.length, headerHeight, overscan, rowHeight, virtualized, scrollTopState, containerHeight])\r\n\r\n const rowsToRender = windowed.end >= windowed.start ? props.value.slice(windowed.start, windowed.end + 1) : []\r\n const rootClasses = [classes.root, classes.virtualized].filter(Boolean).join(' ')\r\n return (\r\n <ViewListStyled className={rootClasses}>\r\n <TableContainer\r\n ref={wrapRef}\r\n className={classes.scrollContainer}\r\n onScroll={(e) => {\r\n const t = e.currentTarget as HTMLDivElement\r\n if (!virtualized || typeof virtualized.scrollTop !== 'number') {\r\n setScrollTopState(t.scrollTop)\r\n }\r\n if (t.scrollHeight - t.scrollTop - t.clientHeight <= 80) {\r\n props.onNearEnd?.()\r\n }\r\n }}\r\n >\r\n <Table size='small' className={classes.table}>\r\n <TableHead className={classes.tableHeader}>\r\n <TableRow ref={headerRowRef}>\r\n {selectable && (\r\n <TableCell padding='checkbox' className={classes.tableHeaderCell} sx={{ width: 48 }}>\r\n <Checkbox checked={isAllSelected} indeterminate={isSomeSelected} onChange={handleToggleAll} />\r\n </TableCell>\r\n )}\r\n {columns.map((col) => {\r\n const colWidth = getColumnWidth(col, totalFlex)\r\n const hasFixedWidth = col.width !== undefined\r\n return (\r\n <TableCell\r\n key={String(col.field)}\r\n className={classes.tableHeaderCell}\r\n align={col.align}\r\n sx={{\r\n width: colWidth,\r\n // For fixed-width columns, enforce minWidth = width to prevent shrinking\r\n minWidth: hasFixedWidth ? colWidth : col.minWidth,\r\n // Lock all columns with maxWidth to prevent text overflow expansion\r\n maxWidth: col.maxWidth ?? colWidth,\r\n // Prevent text overflow from expanding cells\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis',\r\n whiteSpace: 'nowrap'\r\n }}\r\n >\r\n {col.label ?? String(col.field)}\r\n </TableCell>\r\n )\r\n })}\r\n </TableRow>\r\n </TableHead>\r\n <TableBody>\r\n {windowed.topSpacerHeight > 0 ? (\r\n <TableRow className={classes.tableSpacerRow}>\r\n <TableCell\r\n colSpan={columns.length + (selectable ? 1 : 0)}\r\n className={classes.tableSpacerCell}\r\n sx={{ height: windowed.topSpacerHeight, padding: 0, border: 0 }}\r\n />\r\n </TableRow>\r\n ) : null}\r\n\r\n {rowsToRender.map((row, offset) => {\r\n const index = windowed.start + offset\r\n const rowKey = config.getterId(row, index) ?? index\r\n const isSelected = selectedIds.includes(rowKey)\r\n\r\n return (\r\n <TableRow key={rowKey} hover sx={{ height: rowHeight }} selected={isSelected}>\r\n {selectable && (\r\n <TableCell padding='checkbox' className={classes.tableBodyCell} sx={{ height: rowHeight, padding: cellPadding }}>\r\n <Checkbox checked={isSelected} onChange={() => handleToggleRow(rowKey)} />\r\n </TableCell>\r\n )}\r\n {columns.map((col) => {\r\n const colWidth = getColumnWidth(col, totalFlex)\r\n const hasFixedWidth = col.width !== undefined\r\n return (\r\n <TableCell\r\n key={`${String(rowKey)}-${String(col.field)}`}\r\n className={classes.tableBodyCell}\r\n align={col.align}\r\n sx={{\r\n height: rowHeight,\r\n padding: cellPadding,\r\n width: colWidth,\r\n // For fixed-width columns, enforce minWidth = width to prevent shrinking\r\n minWidth: hasFixedWidth ? colWidth : col.minWidth,\r\n // Lock all columns with maxWidth to prevent text overflow expansion\r\n maxWidth: col.maxWidth ?? colWidth,\r\n // Prevent text overflow from expanding cells\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis',\r\n whiteSpace: 'nowrap'\r\n }}\r\n >\r\n <Box className={classes.tableCellContent}>{renderCellValue(col, row, index)}</Box>\r\n </TableCell>\r\n )\r\n })}\r\n </TableRow>\r\n )\r\n })}\r\n\r\n {windowed.bottomSpacerHeight > 0 ? (\r\n <TableRow className={classes.tableSpacerRow}>\r\n <TableCell\r\n colSpan={columns.length + (selectable ? 1 : 0)}\r\n className={classes.tableSpacerCell}\r\n sx={{ height: windowed.bottomSpacerHeight, padding: 0, border: 0 }}\r\n />\r\n </TableRow>\r\n ) : null}\r\n </TableBody>\r\n </Table>\r\n </TableContainer>\r\n </ViewListStyled>\r\n )\r\n }\r\n return ViewListVirtualized\r\n}\r\n\r\nexport function createViewList<T>(config: IViewListConfig<T>) {\r\n const ViewListNormal = createViewListNormal<T>(config)\r\n const ViewListVirtualized = createViewListVirtualized<T>(config)\r\n\r\n const ViewList: FC<IViewListProps<T>> = (props) => {\r\n const renderStrategy = props.renderStrategy ?? config.renderStrategy ?? 'normal'\r\n if (renderStrategy === 'virtualized') {\r\n return <ViewListVirtualized {...props} />\r\n }\r\n return <ViewListNormal {...props} />\r\n }\r\n return ViewList\r\n}\r\n\r\nexport function createViewListLoading<T>(ListComponent: ComponentType<IViewListProps<T>>) {\r\n const ViewListLoading: FC<IViewListLoadingProps<T>> = (props) => {\r\n const handleNearEnd = useCallback(async () => {\r\n if (props.loadMode !== 'infiniteScroll') return\r\n if (!props.pagination?.hasNext) return\r\n if (props.loading) return\r\n\r\n const currentPage = props.pagination?.page ?? 0\r\n const currentPageSize = props.pagination?.pageSize ?? 20\r\n const nextPage = currentPage + 1\r\n await props.onPageChange?.(nextPage, currentPageSize)\r\n }, [props.loadMode, props.pagination?.hasNext, props.pagination?.page, props.pagination?.pageSize, props.loading, props.onPageChange])\r\n\r\n return (\r\n <ListComponent\r\n value={props.value}\r\n columns={props.columns}\r\n density={props.density}\r\n renderStrategy={props.renderStrategy}\r\n virtualizedConfig={props.virtualizedConfig}\r\n onNearEnd={props.loadMode === 'infiniteScroll' ? handleNearEnd : undefined}\r\n selectable={props.selectable}\r\n selectedIds={props.selectedIds}\r\n onSelectionChange={props.onSelectionChange}\r\n />\r\n )\r\n }\r\n\r\n return ViewListLoading\r\n}\r\n\r\nexport default createViewList\r\n\r\nexport const viewListClasses = {\r\n root: 'DinoViewList-root',\r\n virtualized: 'DinoViewList-virtualized',\r\n scrollContainer: 'DinoViewList-scrollContainer',\r\n table: 'DinoViewList-table',\r\n tableHeader: 'DinoViewList-tableHeader',\r\n tableHeaderCell: 'DinoViewList-tableHeaderCell',\r\n tableBodyCell: 'DinoViewList-tableBodyCell',\r\n tableSpacerRow: 'DinoViewList-tableSpacerRow',\r\n tableSpacerCell: 'DinoViewList-tableSpacerCell',\r\n tableCellContent: 'DinoViewList-tableCellContent'\r\n}\r\nconst classes = viewListClasses\r\n\r\nconst ViewListStyled = styled(Box)(({ theme }) => {\r\n const mode = theme.palette.mode\r\n const borderColor = alpha(theme.palette.common.black, mode === 'dark' ? 0.24 : 0.08)\r\n const bgHeader = mode === 'dark' ? theme.palette.grey[800] : theme.palette.grey[50]\r\n\r\n return {\r\n [`&.${classes.root}`]: {\r\n position: 'relative',\r\n width: '100%',\r\n height: '100%',\r\n overflow: 'hidden'\r\n // border: `1px solid ${theme.palette.divider}`,\r\n // borderRadius: theme.spacing(1),\r\n },\r\n [`.${classes.scrollContainer}`]: {\r\n position: 'absolute',\r\n inset: 0, // top: 0, left: 0, right: 0, bottom: 0\r\n overflowY: 'auto',\r\n padding: theme.spacing(0, 0.5),\r\n margin: theme.spacing(0, -0.5),\r\n // Scrollbar styling\r\n '&::-webkit-scrollbar': { width: 8, height: 8 },\r\n '&::-webkit-scrollbar-thumb': { backgroundColor: theme.palette.grey[300], borderRadius: 4 },\r\n '&::-webkit-scrollbar-thumb:hover': { backgroundColor: theme.palette.grey[500] }\r\n },\r\n [`.${classes.table}`]: {\r\n tableLayout: 'auto',\r\n width: '100%',\r\n borderCollapse: 'separate',\r\n borderSpacing: `0 ${theme.spacing(0.5)}`,\r\n marginTop: theme.spacing(-0.5)\r\n },\r\n [`.${classes.tableHeader}`]: {\r\n position: 'sticky',\r\n top: 0,\r\n zIndex: 2,\r\n backgroundColor: bgHeader\r\n },\r\n [`.${classes.tableHeaderCell}`]: {\r\n fontWeight: 500,\r\n paddingTop: theme.spacing(1.5),\r\n paddingBottom: theme.spacing(1.5),\r\n overflow: 'hidden',\r\n borderBottom: 'unset'\r\n // borderTop: `1px dashed ${borderColor}`,\r\n // borderBottom: `1px dashed ${borderColor}`,\r\n // '&:first-of-type': { borderLeft: `1px dashed ${borderColor}` },\r\n // '&:last-of-type': { borderRight: `1px dashed ${borderColor}` }\r\n },\r\n [`.${classes.tableBodyCell}`]: {\r\n overflow: 'hidden',\r\n borderTop: `0.5px dashed ${borderColor}`,\r\n borderBottom: `0.5px dashed ${borderColor}`,\r\n '&:first-of-type': { borderLeft: `0.5px dashed ${borderColor}` },\r\n '&:last-of-type': { borderRight: `0.5px dashed ${borderColor}` }\r\n },\r\n [`.${classes.tableCellContent}`]: {\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis',\r\n whiteSpace: 'nowrap',\r\n minWidth: 0, // Allow shrinking below content size\r\n width: '100%' // Fill parent TableCell\r\n },\r\n // Virtualized styles\r\n [`&.${classes.virtualized}`]: {\r\n boxSizing: 'border-box'\r\n }\r\n }\r\n})\r\n"],"names":["getColumnWidth","column","totalFlex","undefined","width","flex","percent","concat","renderCellValue","row","index","value","valueGetter","field","params","renderCell","valueLabel","String","_jsx","Typography","variant","noWrap","title","columnsRecordToArray","columnsRecord","Object","keys","map","key","_columnsRecord$key","colConfig","_objectSpread","data","length","firstRow","label","buildDefaultColumns","createViewList","config","ViewListNormal","props","_ref","_props$density","_props$columns","_ref2","_props$selectable","_props$onSelectionCha","density","ListDensity","standard","columns","reduce","sum","col","rowHeight","LIST_ROW_HEIGHT_BY_DENSITY","cellPadding","LIST_CELL_PADDING_BY_DENSITY","selectable","onSelectionChange","selection","useListSelection","getterId","selectedIds","isAllSelected","isSomeSelected","handleToggleAll","handleToggleRow","ViewListStyled","className","classes","root","children","TableContainer","scrollContainer","onScroll","e","_props$onNearEnd","t","currentTarget","scrollHeight","scrollTop","clientHeight","onNearEnd","call","_jsxs","Table","size","table","TableHead","tableHeader","TableRow","TableCell","padding","tableHeaderCell","sx","Checkbox","checked","indeterminate","onChange","_col$maxWidth","_col$label","colWidth","hasFixedWidth","align","minWidth","maxWidth","overflow","textOverflow","whiteSpace","TableBody","_config$getterId","rowKey","isSelected","includes","hover","height","selected","tableBodyCell","_col$maxWidth2","Box","tableCellContent","createViewListNormal","ViewListVirtualized","_ref3","_props$density2","_ref4","_props$selectable2","_props$onSelectionCha2","_virtualized$scrollTo","_virtualized$overscan","virtualized","useMemo","assign","virtualizedConfig","wrapRef","useRef","headerRowRef","_useState","useState","_useState2","_slicedToArray","containerHeight","setContainerHeight","_useState3","_useState4","scrollTopState","setScrollTopState","_useState5","LIST_HEADER_HEIGHT","_useState6","headerHeight","setHeaderHeight","overscan","Math","max","useLayoutEffect","current","updateSize","_wrapRef$current$clie","_wrapRef$current","nextHeight","prev","observer","ResizeObserver","observe","disconnect","_headerRowRef$current","_headerRowRef$current2","measured","offsetHeight","windowed","_virtualized$viewport","totalItems","start","end","topSpacerHeight","bottomSpacerHeight","effectiveScrollTop","safeViewportHeight","viewportHeight","adjustedScrollTop","floor","visibleCount","ceil","min","rowsToRender","slice","rootClasses","filter","Boolean","join","ref","_props$onNearEnd2","_col$maxWidth3","_col$label2","tableSpacerRow","colSpan","tableSpacerCell","border","offset","_config$getterId2","_col$maxWidth4","createViewListVirtualized","_ref5","_props$renderStrategy","renderStrategy","createViewListLoading","ListComponent","_props$pagination4","_props$pagination5","_props$pagination6","handleNearEnd","useCallback","_asyncToGenerator","_regenerator","m","_callee","_props$pagination","_props$pagination$pag","_props$pagination2","_props$pagination$pag2","_props$pagination3","_props$onPageChange","currentPage","currentPageSize","nextPage","w","_context","n","loadMode","a","pagination","hasNext","loading","page","pageSize","onPageChange","viewListClasses","styled","_ref7","theme","mode","palette","borderColor","alpha","common","black","bgHeader","grey","_defineProperty","position","inset","overflowY","spacing","margin","backgroundColor","borderRadius","tableLayout","borderCollapse","borderSpacing","marginTop","top","zIndex","fontWeight","paddingTop","paddingBottom","borderBottom","borderTop","borderLeft","borderRight","boxSizing"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"view-list.types.js","sources":["../../../../src/lab/data-surface/view-list.types.ts"],"sourcesContent":["// Copyright (c) 2024-present, Dinocollab Technologies, Inc. and its affiliates. All rights reserved.\r\n\r\nimport type { ReactNode } from 'react'\r\n\r\n/**\r\n * Props received by the custom render function for each row in List view.\r\n * @template T - The shape of a single data row object.\r\n */\r\nexport interface IViewListItemProps<T> {\r\n /** The data object for this list row. */\r\n value: T\r\n /** Zero-based position of this item in the data array. */\r\n index: number\r\n}\r\n\r\n/** Horizontal alignment for list cell content. */\r\nexport type TListAlign = 'left' | 'right' | 'center'\r\n\r\n/**\r\n * Context passed to a column's render callback.\r\n * @template T - The shape of a single data row object.\r\n */\r\nexport interface IListCellParams<T> {\r\n /** Resolved cell value (after valueGetter if provided). */\r\n value: any\r\n /** The full row object. */\r\n row: T\r\n /** Zero-based row index. */\r\n index: number\r\n /** The column field key this cell belongs to. */\r\n field: keyof T\r\n}\r\n\r\n/**\r\n * Definition of a single column in List view.\r\n * @template T - The shape of a single data row object.\r\n */\r\nexport interface TListColumn<T> {\r\n /** Key of the row object this column maps to. */\r\n field: keyof T\r\n /** Column header label shown in the header. */\r\n label?: string\r\n /** Explicit column width. Accepts px number or CSS string (e.g. '120px', '20%'). */\r\n width?: number | string\r\n /** Minimum column width in pixels. */\r\n minWidth?: number\r\n /** Flex grow ratio used when no explicit width is set. */\r\n flex?: number\r\n /** Horizontal alignment of the cell content. */\r\n align?: TListAlign\r\n /** Custom cell render function - receives CellParams, returns ReactNode. */\r\n renderCell?: (params: IListCellParams<T>) => ReactNode\r\n /** Derives a value from the row before it is passed to the render step. */\r\n valueGetter?: (row: T, index: number) => any\r\n}\r\n\r\nexport type TListColumns<T> = Partial<Record<keyof T, Omit<TListColumn<T>, 'field'>>>\r\n\r\n/**\r\n * Row density preset for List view.\r\n * Controls the row height and cell padding.\r\n */\r\nexport const ListDensity = {\r\n compact: 'compact',\r\n standard: 'standard',\r\n comfortable: 'comfortable'\r\n} as const\r\nexport type ListDensity = keyof typeof ListDensity\r\n"],"names":["ListDensity","compact","standard","comfortable"],"mappings":"AA8DO,IAAMA,EAAc,CACzBC,QAAS,UACTC,SAAU,WACVC,YAAa"}
1
+ {"version":3,"file":"view-list.types.js","sources":["../../../../src/lab/data-surface/view-list.types.ts"],"sourcesContent":["// Copyright (c) 2024-present, Dinocollab Technologies, Inc. and its affiliates. All rights reserved.\r\n\r\nimport type { ReactNode } from 'react'\r\n\r\n/**\r\n * Props received by the custom render function for each row in List view.\r\n * @template T - The shape of a single data row object.\r\n */\r\nexport interface IViewListItemProps<T> {\r\n /** The data object for this list row. */\r\n value: T\r\n /** Zero-based position of this item in the data array. */\r\n index: number\r\n /** Whether this row is currently selected. */\r\n selected?: boolean\r\n}\r\n\r\n/** Horizontal alignment for list cell content. */\r\nexport type TListAlign = 'left' | 'right' | 'center'\r\n\r\n/**\r\n * Context passed to a column's render callback.\r\n * @template T - The shape of a single data row object.\r\n */\r\nexport interface IListCellParams<T> {\r\n /** Resolved cell value (after valueGetter if provided). */\r\n value: any\r\n /** The full row object. */\r\n row: T\r\n /** Zero-based row index. */\r\n index: number\r\n /** The column field key this cell belongs to. */\r\n field: keyof T\r\n}\r\n\r\n/**\r\n * Definition of a single column in List view.\r\n * @template T - The shape of a single data row object.\r\n */\r\nexport interface TListColumn<T> {\r\n /** Key of the row object this column maps to. */\r\n field: keyof T\r\n /** Column header label shown in the header. */\r\n label?: string\r\n /** Explicit column width. Accepts px number or CSS string (e.g. '120px', '20%'). */\r\n width?: number | string\r\n /** Minimum column width in pixels. */\r\n minWidth?: number\r\n /** Maximum column width in pixels. */\r\n maxWidth?: number\r\n /** Flex grow ratio used when no explicit width is set. */\r\n flex?: number\r\n /** Horizontal alignment of the cell content. */\r\n align?: TListAlign\r\n /** Custom cell render function - receives CellParams, returns ReactNode. */\r\n renderCell?: (params: IListCellParams<T>) => ReactNode\r\n /** Derives a value from the row before it is passed to the render step. */\r\n valueGetter?: (row: T, index: number) => any\r\n}\r\n\r\nexport type TListColumns<T> = Partial<Record<keyof T, Omit<TListColumn<T>, 'field'>>>\r\n\r\n/**\r\n * Row density preset for List view.\r\n * Controls the row height and cell padding.\r\n */\r\nexport const ListDensity = {\r\n compact: 'compact',\r\n standard: 'standard',\r\n comfortable: 'comfortable'\r\n} as const\r\nexport type ListDensity = keyof typeof ListDensity\r\n"],"names":["ListDensity","compact","standard","comfortable"],"mappings":"AAkEO,IAAMA,EAAc,CACzBC,QAAS,UACTC,SAAU,WACVC,YAAa"}
@@ -1,2 +1,2 @@
1
- var a=48,p={compact:36,standard:48,comfortable:56},o={compact:"6px 10px",standard:"10px 12px",comfortable:"12px 14px"};export{o as LIST_CELL_PADDING_BY_DENSITY,a as LIST_HEADER_HEIGHT,p as LIST_ROW_HEIGHT_BY_DENSITY};
1
+ import{toConsumableArray as e}from"../../../_virtual/_rollupPluginBabelHelpers.js";import{useMemo as r}from"react";var n=48,t={compact:36,standard:48,comfortable:56},l={compact:"6px 10px",standard:"10px 12px",comfortable:"12px 14px"};function o(n,t,l,o,a){var c=null!=o?o:[],u=r(function(){var e=new Map;return n.forEach(function(r,n){var l=t(r,n);null!=l&&e.set(l,r)}),e},[n,t]),i=r(function(){return Array.from(u.keys())},[u]),f=i.length>0&&i.every(function(e){return c.includes(e)}),p=c.length>0&&!f;return{selectedIds:c,isAllSelected:f,isSomeSelected:p,handleToggleAll:function(){l&&a&&a(f?[]:i)},handleToggleRow:function(r){if(l&&a){var n=c.includes(r)?c.filter(function(e){return e!==r}):[].concat(e(c),[r]);a(n)}}}}export{l as LIST_CELL_PADDING_BY_DENSITY,n as LIST_HEADER_HEIGHT,t as LIST_ROW_HEIGHT_BY_DENSITY,o as useListSelection};
2
2
  //# sourceMappingURL=view-list.units.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"view-list.units.js","sources":["../../../../src/lab/data-surface/view-list.units.tsx"],"sourcesContent":["// Copyright (c) 2024-present, Dinocollab Technologies, Inc. and its affiliates. All rights reserved.\r\n\r\nimport { ListDensity } from './view-list.types'\r\n\r\nexport const LIST_HEADER_HEIGHT = 48\r\n\r\nexport const LIST_ROW_HEIGHT_BY_DENSITY: Record<ListDensity, number> = {\r\n compact: 36,\r\n standard: 48,\r\n comfortable: 56\r\n}\r\n\r\nexport const LIST_CELL_PADDING_BY_DENSITY: Record<ListDensity, string> = {\r\n compact: '6px 10px',\r\n standard: '10px 12px',\r\n comfortable: '12px 14px'\r\n}\r\n"],"names":["LIST_HEADER_HEIGHT","LIST_ROW_HEIGHT_BY_DENSITY","compact","standard","comfortable","LIST_CELL_PADDING_BY_DENSITY"],"mappings":"AAIO,IAAMA,EAAqB,GAErBC,EAA0D,CACrEC,QAAS,GACTC,SAAU,GACVC,YAAa,IAGFC,EAA4D,CACvEH,QAAS,WACTC,SAAU,YACVC,YAAa"}
1
+ {"version":3,"file":"view-list.units.js","sources":["../../../../src/lab/data-surface/view-list.units.tsx"],"sourcesContent":["// Copyright (c) 2024-present, Dinocollab Technologies, Inc. and its affiliates. All rights reserved.\r\n\r\nimport { useMemo } from 'react'\r\nimport { ListDensity } from './view-list.types'\r\nimport type { TGetterId } from './types'\r\n\r\nexport const LIST_HEADER_HEIGHT = 48\r\n\r\nexport const LIST_ROW_HEIGHT_BY_DENSITY: Record<ListDensity, number> = {\r\n compact: 36,\r\n standard: 48,\r\n comfortable: 56\r\n}\r\n\r\nexport const LIST_CELL_PADDING_BY_DENSITY: Record<ListDensity, string> = {\r\n compact: '6px 10px',\r\n standard: '10px 12px',\r\n comfortable: '12px 14px'\r\n}\r\n\r\n/**\r\n * Custom hook to manage list row selection logic.\r\n * Handles select all, individual row selection, and indeterminate state.\r\n *\r\n * @param value - The array of data items\r\n * @param getterId - Function to extract unique ID from each row\r\n * @param selectable - Whether selection is enabled\r\n * @param selectedIds - Controlled array of selected row IDs\r\n * @param onSelectionChange - Callback when selection changes\r\n * @returns Selection state and handlers\r\n */\r\nexport function useListSelection<T>(\r\n value: T[],\r\n getterId: TGetterId<T>,\r\n selectable: boolean,\r\n selectedIds?: (string | number)[],\r\n onSelectionChange?: (selectedIds: (string | number)[]) => void\r\n) {\r\n const safeSelectedIds = selectedIds ?? []\r\n\r\n // Build map of row IDs for quick lookup\r\n const rowIdMap = useMemo(() => {\r\n const map = new Map<string | number, T>()\r\n value.forEach((row, index) => {\r\n const id = getterId(row, index)\r\n if (id !== null && id !== undefined) {\r\n map.set(id, row)\r\n }\r\n })\r\n return map\r\n }, [value, getterId])\r\n\r\n const allRowIds = useMemo(() => Array.from(rowIdMap.keys()), [rowIdMap])\r\n\r\n const isAllSelected = allRowIds.length > 0 && allRowIds.every((id) => safeSelectedIds.includes(id))\r\n const isSomeSelected = safeSelectedIds.length > 0 && !isAllSelected\r\n\r\n const handleToggleAll = () => {\r\n if (!selectable || !onSelectionChange) return\r\n if (isAllSelected) {\r\n onSelectionChange([])\r\n } else {\r\n onSelectionChange(allRowIds)\r\n }\r\n }\r\n\r\n const handleToggleRow = (rowId: string | number) => {\r\n if (!selectable || !onSelectionChange) return\r\n const newSelected = safeSelectedIds.includes(rowId) ? safeSelectedIds.filter((id) => id !== rowId) : [...safeSelectedIds, rowId]\r\n onSelectionChange(newSelected)\r\n }\r\n\r\n return {\r\n selectedIds: safeSelectedIds,\r\n isAllSelected,\r\n isSomeSelected,\r\n handleToggleAll,\r\n handleToggleRow\r\n }\r\n}\r\n"],"names":["LIST_HEADER_HEIGHT","LIST_ROW_HEIGHT_BY_DENSITY","compact","standard","comfortable","LIST_CELL_PADDING_BY_DENSITY","useListSelection","value","getterId","selectable","selectedIds","onSelectionChange","safeSelectedIds","rowIdMap","useMemo","map","Map","forEach","row","index","id","set","allRowIds","Array","from","keys","isAllSelected","length","every","includes","isSomeSelected","handleToggleAll","handleToggleRow","rowId","newSelected","filter","concat","_toConsumableArray"],"mappings":"mHAMO,IAAMA,EAAqB,GAErBC,EAA0D,CACrEC,QAAS,GACTC,SAAU,GACVC,YAAa,IAGFC,EAA4D,CACvEH,QAAS,WACTC,SAAU,YACVC,YAAa,aAcT,SAAUE,EACdC,EACAC,EACAC,EACAC,EACAC,GAEA,IAAMC,EAAkBF,QAAAA,EAAe,GAGjCG,EAAWC,EAAQ,WACvB,IAAMC,EAAM,IAAIC,IAOhB,OANAT,EAAMU,QAAQ,SAACC,EAAKC,GAClB,IAAMC,EAAKZ,EAASU,EAAKC,GACrBC,SACFL,EAAIM,IAAID,EAAIF,EAEhB,GACOH,CACT,EAAG,CAACR,EAAOC,IAELc,EAAYR,EAAQ,WAAA,OAAMS,MAAMC,KAAKX,EAASY,SAAS,CAACZ,IAExDa,EAAgBJ,EAAUK,OAAS,GAAKL,EAAUM,MAAM,SAACR,GAAE,OAAKR,EAAgBiB,SAAST,KACzFU,EAAiBlB,EAAgBe,OAAS,IAAMD,EAiBtD,MAAO,CACLhB,YAAaE,EACbc,cAAAA,EACAI,eAAAA,EACAC,gBAnBsB,WACjBtB,GAAeE,GAElBA,EADEe,EACgB,GAEAJ,EAErB,EAaCU,gBAXsB,SAACC,GACvB,GAAKxB,GAAeE,EAApB,CACA,IAAMuB,EAActB,EAAgBiB,SAASI,GAASrB,EAAgBuB,OAAO,SAACf,GAAE,OAAKA,IAAOa,IAAM,GAAAG,OAAAC,EAAOzB,GAAe,CAAEqB,IAC1HtB,EAAkBuB,EAFqB,CAGxC,EASH"}
@@ -1,2 +1,2 @@
1
- import{objectWithoutProperties as e,objectSpread2 as o,defineProperty as i,inherits as r,createClass as a,classCallCheck as t,callSuper as l,toConsumableArray as n}from"../../_virtual/_rollupPluginBabelHelpers.js";import{jsx as s}from"react/jsx-runtime";import{Component as d,Fragment as u}from"react";import{styled as p,Box as c}from"@mui/material";import{DataGrid as g}from"@mui/x-data-grid";import{mergeObjects as m}from"../utils/helpers.js";import"../utils/dayjs-config.js";import"../utils/query-param.js";import{TableBaseContext as h}from"./context.js";import{customFilterOperators as f}from"./custom.filter-operators.js";import v,{dinoTableClasses as b}from"./helpers.js";import y from"./toolbar-pannel.js";import{GlobalModal as C,mapGlobalModalContext as P}from"../api-context/global-modal.js";var w=["children"];function S(e){return function(){function p(r){var a;return t(this,p),a=l(this,p,[r]),i(a,"setTableQueryParams",function(e){a.tableQueryParams=m({},a.tableQueryParams,e)}),i(a,"renderWrapContext",function(o){var i=e.disableGlobalModalProvider?u:C;return s(i,{children:P(function(e){return s(h.Provider,{value:{showModal:e.show,closeModal:e.close},children:o})})})}),i(a,"getDataGridProps",function(){var o,i,r,t,l=a.mergeConfig,n={getRowId:e.getRowId,columns:a.columns,rows:null!==(o=null===(i=a.props.data)||void 0===i?void 0:i.items)&&void 0!==o?o:[],checkboxSelection:!0,pagination:!0,density:null!==(r=null===(t=a.props.slots)||void 0===t?void 0:t.density)&&void 0!==r?r:"standard",initialState:v.mapInitialState(a.props.query,{columns:{columnVisibilityModel:e.columnVisibilityModel}}),filterDebounceMs:800,sx:{border:0},slots:{toolbar:l.toolbar},rowSelectionModel:a.rowSelecteds,onRowSelectionModelChange:a.handleRowSelectionChange};if("server"===e.featureMode){var s,d,u={filterMode:"server",sortingMode:"server",paginationMode:"server",onPaginationModelChange:a.onPaginationModelChange,onFilterModelChange:a.onFilterModelChange,onSortModelChange:a.onSortModelChange,rowCount:null!==(s=null===(d=a.props.data)||void 0===d?void 0:d.rowTotal)&&void 0!==s?s:0,paginationModel:a.tableQueryParams.pagination,filterModel:a.tableQueryParams.filter,sortModel:v.mapSortModel(a.tableQueryParams.sort),loading:a.mergeConfig.loading};Object.assign(n,u)}return m(n,a.mergeConfig.dataGridProps)}),i(a,"initialColumns",function(){var i,r,t=a.mergeConfig,l=t.ActionRow,d=t.disableActionRow,u=[];return l&&!0!==d&&u.push(o({field:"Actions",minWidth:100,headerAlign:"right",align:"right",filterable:!1,sortable:!1,renderCell:function(e){return s(l,{value:e.row})}},e.actionRow)),i=u,r=Object.keys(e.columns).map(function(i){var r=o({field:i},e.columns[i]);return r.filterOperators=e.filterOperators?e.filterOperators(r):f(r),r}),i&&i.length>0&&r.push.apply(r,n(i)),r}),i(a,"onPaginationModelChange",function(e,o){a.mergeConfig.loading||(a.setTableQueryParams({pagination:e,detail:"pagination"}),a.handleChange())}),i(a,"onFilterModelChange",function(e,o){var i;if(!a.mergeConfig.loading){var r=a.tableQueryParams.pagination;a.setTableQueryParams({filter:e,pagination:{page:0,pageSize:null!==(i=null==r?void 0:r.pageSize)&&void 0!==i?i:25},detail:v.detectSearchType(e)}),a.handleChange()}}),i(a,"onSortModelChange",function(e,o){if(!a.mergeConfig.loading){var i,r,t,l,n,s=e,d=a.tableQueryParams.sort;if(null!=d&&d.length&&!s.length)if((null==d||null===(i=d[0])||void 0===i?void 0:i.field)===(null===(r=a.defaultTableQueryParams.sort)||void 0===r||null===(r=r[0])||void 0===r?void 0:r.field))s=[{field:null===(t=d[0])||void 0===t?void 0:t.field,sort:"desc"===(null===(l=d[0])||void 0===l?void 0:l.sort)?"asc":"desc"}];else s=null!==(n=a.defaultTableQueryParams.sort)&&void 0!==n?n:[];a.setTableQueryParams({sort:s,detail:"sort"}),a.handleChange()}}),i(a,"handleChange",function(){a.changeTimeout&&clearTimeout(a.changeTimeout),a.changeTimeout=setTimeout(function(){a.props.onChange&&a.props.onChange(a.tableQueryParams)},300)}),i(a,"handleRowSelectionChange",function(e,o){a.mergeConfig.maxSelcion&&e.length>a.mergeConfig.maxSelcion?a.rowSelecteds=e.slice(0,a.mergeConfig.maxSelcion):a.rowSelecteds=e,a.props.onRowSelectionChange&&a.props.onRowSelectionChange(a.rowSelecteds,o),a.forceUpdate()}),a.columns=a.initialColumns(),a.tableQueryParams=o({},r.query),a.defaultTableQueryParams=a.tableQueryParams,a.rowSelecteds=[],a}return r(p,d),a(p,[{key:"mergeConfig",get:function(){var i,r,a,t,l,n,d,u,p,c,g=m({},null==e?void 0:e.toolbarProps,null===(i=this.props.slots)||void 0===i?void 0:i.toolbarProps);return{toolbar:null!==(r=null===(a=this.props.slots)||void 0===a?void 0:a.toolbar)&&void 0!==r?r:function(){return s(y,o({},g))},ActionRow:null===(t=this.props.slots)||void 0===t?void 0:t.actionRow,disableActionRow:e.disableActionRow,columnVisibilityModel:e.columnVisibilityModel,maxSelcion:null!==(l=null===(n=this.props.slots)||void 0===n?void 0:n.maxSelection)&&void 0!==l?l:e.maxSelection,dataGridProps:m({},e.dataGridProps,null===(d=this.props.slots)||void 0===d?void 0:d.dataGridProps),wrapProps:m({},e.wrapProps,null===(u=this.props.slots)||void 0===u?void 0:u.wrapProps),loading:null!==(p=void 0!==this.props.loading?this.props.loading:null===(c=this.tableQueryParams)||void 0===c?void 0:c.loading)&&void 0!==p&&p}}},{key:"componentWillUnmount",value:function(){this.changeTimeout&&clearTimeout(this.changeTimeout)}},{key:"shouldComponentUpdate",value:function(o){var i;return"server"!==e.featureMode||(v.equalTableQueryParams(o.query,this.props.query)?JSON.stringify(o.data)!==JSON.stringify(this.props.data)||o.loading!==this.props.loading:(this.setTableQueryParams(null!==(i=o.query)&&void 0!==i?i:{}),!0))}},{key:"render",value:function(){return this.renderWrapContext(s(M,o(o({},this.mergeConfig.wrapProps),{},{children:s(g,o({loading:this.props.loading},this.getDataGridProps()))})))}}])}()}var M=p(function(i){var r=i.children,a=e(i,w);return s(c,o(o({},a),{},{children:s("div",{children:r})}))})(i(i({flex:1,position:"relative","& > div":{position:"absolute",top:0,left:0,width:"100%",height:"100%",overflowY:"auto"},".MuiDataGrid-root":{"--unstable_DataGrid-radius":0,overflow:"hidden"}},".MuiDataGrid-cell.".concat(b.whiteSpacePre," .MuiDataGrid-cellContent"),{whiteSpace:"pre"}),".MuiTablePagination-root p",{marginBottom:0}));export{S as CreateTable,S as default};
1
+ import{objectWithoutProperties as e,objectSpread2 as o,defineProperty as i,inherits as r,createClass as a,classCallCheck as t,callSuper as l,toConsumableArray as n}from"../../_virtual/_rollupPluginBabelHelpers.js";import{jsx as s}from"react/jsx-runtime";import{Component as d,Fragment as u}from"react";import{styled as p,Box as c}from"@mui/material";import{DataGrid as g}from"@mui/x-data-grid";import{mergeObjects as m}from"../utils/helpers.js";import"../utils/dayjs-config.js";import"../utils/query-param.js";import{TableBaseContext as h}from"./context.js";import{customFilterOperators as f}from"./custom.filter-operators.js";import v,{dinoTableClasses as b}from"./helpers.js";import y from"./toolbar-pannel.js";import{GlobalModal as C,mapGlobalModalContext as P}from"../api-context/global-modal.js";var w=["children"];function S(e){return function(){function p(r){var a;return t(this,p),a=l(this,p,[r]),i(a,"setTableQueryParams",function(e){a.tableQueryParams=m({},a.tableQueryParams,e)}),i(a,"renderWrapContext",function(o){var i=e.disableGlobalModalProvider?u:C;return s(i,{children:P(function(e){return s(h.Provider,{value:{showModal:e.show,closeModal:e.close},children:o})})})}),i(a,"getDataGridProps",function(){var o,i,r,t,l=v.mapInitialState(a.props.query,{columns:{columnVisibilityModel:e.columnVisibilityModel}}),n={getRowId:e.getRowId,initialState:l,columns:a.columns,rows:null!==(o=null===(i=a.props.data)||void 0===i?void 0:i.items)&&void 0!==o?o:[],checkboxSelection:!0,pagination:!0,density:null!==(r=null===(t=a.props.slots)||void 0===t?void 0:t.density)&&void 0!==r?r:"standard",filterDebounceMs:800,sx:{border:0},slots:{toolbar:a.mergeConfig.toolbar},rowSelectionModel:a.rowSelecteds,onRowSelectionModelChange:a.handleRowSelectionChange};if("server"===e.featureMode){var s,d,u={filterMode:"server",sortingMode:"server",paginationMode:"server",onPaginationModelChange:a.onPaginationModelChange,onFilterModelChange:a.onFilterModelChange,onSortModelChange:a.onSortModelChange,rowCount:null!==(s=null===(d=a.props.data)||void 0===d?void 0:d.rowTotal)&&void 0!==s?s:0,paginationModel:a.tableQueryParams.pagination,filterModel:a.tableQueryParams.filter,sortModel:v.mapSortModel(a.tableQueryParams.sort),loading:a.mergeConfig.loading};Object.assign(n,u)}return m(n,a.mergeConfig.dataGridProps)}),i(a,"initialColumns",function(){var i,r,t=a.mergeConfig,l=t.ActionRow,d=t.disableActionRow,u=[];return l&&!0!==d&&u.push(o({field:"Actions",minWidth:100,headerAlign:"right",align:"right",filterable:!1,sortable:!1,renderCell:function(e){return s(l,{value:e.row})}},e.actionRow)),i=u,r=Object.keys(e.columns).map(function(i){var r=o({field:i},e.columns[i]);return r.filterOperators=e.filterOperators?e.filterOperators(r):f(r),r}),i&&i.length>0&&r.push.apply(r,n(i)),r}),i(a,"onPaginationModelChange",function(e,o){a.mergeConfig.loading||(a.setTableQueryParams({pagination:e,detail:"pagination"}),a.handleChange())}),i(a,"onFilterModelChange",function(e,o){var i;if(!a.mergeConfig.loading){var r=a.tableQueryParams.pagination;a.setTableQueryParams({filter:e,pagination:{page:0,pageSize:null!==(i=null==r?void 0:r.pageSize)&&void 0!==i?i:25},detail:v.detectSearchType(e)}),a.handleChange()}}),i(a,"onSortModelChange",function(e,o){if(!a.mergeConfig.loading){var i,r,t,l,n,s=e,d=a.tableQueryParams.sort;if(null!=d&&d.length&&!s.length)if((null==d||null===(i=d[0])||void 0===i?void 0:i.field)===(null===(r=a.defaultTableQueryParams.sort)||void 0===r||null===(r=r[0])||void 0===r?void 0:r.field))s=[{field:null===(t=d[0])||void 0===t?void 0:t.field,sort:"desc"===(null===(l=d[0])||void 0===l?void 0:l.sort)?"asc":"desc"}];else s=null!==(n=a.defaultTableQueryParams.sort)&&void 0!==n?n:[];a.setTableQueryParams({sort:s,detail:"sort"}),a.handleChange()}}),i(a,"handleChange",function(){a.changeTimeout&&clearTimeout(a.changeTimeout),a.changeTimeout=setTimeout(function(){a.props.onChange&&a.props.onChange(a.tableQueryParams)},300)}),i(a,"handleRowSelectionChange",function(e,o){a.mergeConfig.maxSelcion&&e.length>a.mergeConfig.maxSelcion?a.rowSelecteds=e.slice(0,a.mergeConfig.maxSelcion):a.rowSelecteds=e,a.props.onRowSelectionChange&&a.props.onRowSelectionChange(a.rowSelecteds,o),a.forceUpdate()}),a.columns=a.initialColumns(),a.tableQueryParams=o({},r.query),a.defaultTableQueryParams=a.tableQueryParams,a.rowSelecteds=[],a}return r(p,d),a(p,[{key:"mergeConfig",get:function(){var i,r,a,t,l,n,d,u,p,c,g=m({},null==e?void 0:e.toolbarProps,null===(i=this.props.slots)||void 0===i?void 0:i.toolbarProps);return{toolbar:null!==(r=null===(a=this.props.slots)||void 0===a?void 0:a.toolbar)&&void 0!==r?r:function(){return s(y,o({},g))},ActionRow:null===(t=this.props.slots)||void 0===t?void 0:t.actionRow,disableActionRow:e.disableActionRow,columnVisibilityModel:e.columnVisibilityModel,maxSelcion:null!==(l=null===(n=this.props.slots)||void 0===n?void 0:n.maxSelection)&&void 0!==l?l:e.maxSelection,dataGridProps:m({},e.dataGridProps,null===(d=this.props.slots)||void 0===d?void 0:d.dataGridProps),wrapProps:m({},e.wrapProps,null===(u=this.props.slots)||void 0===u?void 0:u.wrapProps),loading:null!==(p=void 0!==this.props.loading?this.props.loading:null===(c=this.tableQueryParams)||void 0===c?void 0:c.loading)&&void 0!==p&&p}}},{key:"componentWillUnmount",value:function(){this.changeTimeout&&clearTimeout(this.changeTimeout)}},{key:"shouldComponentUpdate",value:function(o){var i;return"server"!==e.featureMode||(v.equalTableQueryParams(o.query,this.props.query)?JSON.stringify(o.data)!==JSON.stringify(this.props.data)||o.loading!==this.props.loading:(this.setTableQueryParams(null!==(i=o.query)&&void 0!==i?i:{}),!0))}},{key:"render",value:function(){return this.renderWrapContext(s(M,o(o({},this.mergeConfig.wrapProps),{},{children:s(g,o({loading:this.props.loading},this.getDataGridProps()))})))}}])}()}var M=p(function(i){var r=i.children,a=e(i,w);return s(c,o(o({},a),{},{children:s("div",{children:r})}))})(i(i({flex:1,position:"relative","& > div":{position:"absolute",top:0,left:0,width:"100%",height:"100%",overflowY:"auto"},".MuiDataGrid-root":{"--unstable_DataGrid-radius":0,overflow:"hidden"}},".MuiDataGrid-cell.".concat(b.whiteSpacePre," .MuiDataGrid-cellContent"),{whiteSpace:"pre"}),".MuiTablePagination-root p",{marginBottom:0}));export{S as CreateTable,S as default};
2
2
  //# sourceMappingURL=create.table.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"create.table.js","sources":["../../../src/table/create.table.tsx"],"sourcesContent":["import { Component, Fragment } from 'react'\r\nimport { Box, BoxProps, styled, tablePaginationClasses } from '@mui/material'\r\nimport { DataGrid, DataGridProps, GridColDef, GridFeatureMode, GridFilterOperator } from '@mui/x-data-grid'\r\nimport { GridSortModel, GridValidRowModel, GridRowIdGetter, GridRowSelectionModel } from '@mui/x-data-grid'\r\nimport { GridCallbackDetails, GridColumnVisibilityModel, GridDensity, GridFilterModel, GridPaginationModel } from '@mui/x-data-grid'\r\nimport type { ComponentType, ReactNode } from 'react'\r\nimport { mergeObjects } from '../utils'\r\nimport { TableBaseContext } from './context'\r\nimport { IActionRowProps } from './create.action-row'\r\nimport { customFilterOperators } from './custom.filter-operators'\r\nimport { GlobalModal, mapGlobalModalContext } from '../api-context'\r\nimport { ICustomGridColDef, ICustomGridFilterModel, ICustomGridSortModel, ITableData, ITableQueryParams } from './types'\r\nimport TableHelper, { dinoTableClasses } from './helpers'\r\nimport ToolbarPannel, { IToolbarPannelProps } from './toolbar-pannel'\r\n\r\nexport interface ITableSlots<T> {\r\n maxSelection?: number\r\n density?: GridDensity\r\n toolbar?: ComponentType<IToolbarPannelProps>\r\n actionRow?: ComponentType<IActionRowProps<T>>\r\n toolbarProps?: IToolbarPannelProps\r\n dataGridProps?: DataGridProps\r\n wrapProps?: BoxProps\r\n}\r\n\r\nexport type ITableParamsSlots<T> = Pick<ITableSlots<T>, 'maxSelection' | 'toolbarProps' | 'dataGridProps' | 'wrapProps'>\r\n\r\nexport interface ITableProps<T> {\r\n data?: ITableData<T>\r\n query?: ITableQueryParams<T>\r\n loading?: boolean\r\n onChange?: (query: ITableQueryParams<T>) => void\r\n onRowSelectionChange?: DataGridProps['onRowSelectionModelChange']\r\n slots?: ITableSlots<T>\r\n}\r\n\r\nexport interface ITableParams<T extends GridValidRowModel> extends ITableParamsSlots<T> {\r\n featureMode?: GridFeatureMode\r\n getRowId: GridRowIdGetter<T>\r\n columns: ICustomGridColDef<T>\r\n filterOperators?: (config: GridColDef) => GridFilterOperator[]\r\n columnVisibilityModel?: Partial<Record<keyof T, boolean>>\r\n actionRow?: Omit<GridColDef, 'field'>\r\n disableActionRow?: boolean\r\n disableGlobalModalProvider?: boolean\r\n}\r\n\r\nexport function CreateTable<T extends GridValidRowModel>(params: ITableParams<T>): ComponentType<ITableProps<T>> {\r\n const generateColumns = (extendColDefs?: GridColDef[]) => {\r\n const columns = Object.keys(params.columns).map<GridColDef>((key) => {\r\n const obj = { field: key, ...params.columns[key] }\r\n obj.filterOperators = params.filterOperators ? params.filterOperators(obj) : customFilterOperators(obj)\r\n return obj\r\n })\r\n\r\n if (!!extendColDefs && extendColDefs.length > 0) columns.push(...extendColDefs)\r\n return columns\r\n }\r\n\r\n class Table extends Component<ITableProps<T>> {\r\n private tableQueryParams: ITableQueryParams<T>\r\n // private tableQueryParamsCache: ITableQueryParams<T> = {}\r\n private defaultTableQueryParams: ITableQueryParams<T>\r\n private columns: GridColDef<T>[]\r\n private rowSelecteds: GridRowSelectionModel\r\n private changeTimeout?: ReturnType<typeof setTimeout>\r\n constructor(props: ITableProps<T>) {\r\n super(props)\r\n this.columns = this.initialColumns()\r\n this.tableQueryParams = { ...props.query }\r\n this.defaultTableQueryParams = this.tableQueryParams\r\n this.rowSelecteds = []\r\n }\r\n\r\n get mergeConfig() {\r\n const toolbarPannelProps = mergeObjects({}, params?.toolbarProps, this.props.slots?.toolbarProps)\r\n return {\r\n toolbar: this.props.slots?.toolbar ?? (() => <ToolbarPannel {...toolbarPannelProps} />),\r\n ActionRow: this.props.slots?.actionRow,\r\n disableActionRow: params.disableActionRow,\r\n columnVisibilityModel: params.columnVisibilityModel,\r\n maxSelcion: this.props.slots?.maxSelection ?? params.maxSelection,\r\n dataGridProps: mergeObjects({}, params.dataGridProps, this.props.slots?.dataGridProps),\r\n wrapProps: mergeObjects({}, params.wrapProps, this.props.slots?.wrapProps),\r\n loading: (this.props.loading !== undefined ? this.props.loading : this.tableQueryParams?.loading) ?? false\r\n }\r\n }\r\n\r\n setTableQueryParams = (value: Partial<ITableQueryParams<T>>) => {\r\n this.tableQueryParams = mergeObjects({}, this.tableQueryParams, value)\r\n }\r\n\r\n componentWillUnmount() {\r\n if (this.changeTimeout) {\r\n clearTimeout(this.changeTimeout)\r\n }\r\n }\r\n\r\n shouldComponentUpdate(nextProps: Readonly<ITableProps<T>>): boolean {\r\n if (params.featureMode === 'server') {\r\n // Check if query changed\r\n if (!TableHelper.equalTableQueryParams(nextProps.query, this.props.query)) {\r\n this.setTableQueryParams(nextProps.query ?? {})\r\n return true\r\n }\r\n // Check if data or loading changed\r\n if (JSON.stringify(nextProps.data) !== JSON.stringify(this.props.data) || nextProps.loading !== this.props.loading) {\r\n return true\r\n }\r\n return false\r\n } else {\r\n return true\r\n }\r\n }\r\n\r\n render() {\r\n return this.renderWrapContext(\r\n <Wrap {...this.mergeConfig.wrapProps}>\r\n <DataGrid loading={this.props.loading} {...this.getDataGridProps()} />\r\n </Wrap>\r\n )\r\n }\r\n\r\n renderWrapContext = (children: ReactNode) => {\r\n const WrapComponent = params.disableGlobalModalProvider ? Fragment : GlobalModal\r\n return (\r\n <WrapComponent>\r\n {mapGlobalModalContext((context) => (\r\n <TableBaseContext.Provider value={{ showModal: context.show, closeModal: context.close }}>{children}</TableBaseContext.Provider>\r\n ))}\r\n </WrapComponent>\r\n )\r\n }\r\n\r\n getDataGridProps = (): DataGridProps<T> => {\r\n const mergeConfig = this.mergeConfig\r\n const obj: DataGridProps<T> = {\r\n getRowId: params.getRowId,\r\n columns: this.columns,\r\n rows: this.props.data?.items ?? [],\r\n checkboxSelection: true,\r\n pagination: true,\r\n density: this.props.slots?.density ?? 'standard',\r\n initialState: TableHelper.mapInitialState(this.props.query, {\r\n columns: { columnVisibilityModel: params.columnVisibilityModel as GridColumnVisibilityModel }\r\n }),\r\n filterDebounceMs: 800,\r\n sx: { border: 0 },\r\n slots: { toolbar: mergeConfig.toolbar },\r\n rowSelectionModel: this.rowSelecteds,\r\n onRowSelectionModelChange: this.handleRowSelectionChange\r\n }\r\n if (params.featureMode === 'server') {\r\n const objServer: Partial<DataGridProps<T>> = {\r\n filterMode: 'server',\r\n sortingMode: 'server',\r\n paginationMode: 'server',\r\n onPaginationModelChange: this.onPaginationModelChange,\r\n onFilterModelChange: this.onFilterModelChange,\r\n onSortModelChange: this.onSortModelChange,\r\n rowCount: this.props.data?.rowTotal ?? 0,\r\n paginationModel: this.tableQueryParams.pagination,\r\n filterModel: this.tableQueryParams.filter as GridFilterModel,\r\n sortModel: TableHelper.mapSortModel(this.tableQueryParams.sort),\r\n loading: this.mergeConfig.loading\r\n }\r\n Object.assign(obj, objServer)\r\n }\r\n return mergeObjects(obj, this.mergeConfig.dataGridProps)\r\n }\r\n\r\n initialColumns = (): GridColDef<T>[] => {\r\n const { ActionRow, disableActionRow } = this.mergeConfig\r\n const list: GridColDef<T>[] = []\r\n if (!!ActionRow && disableActionRow !== true) {\r\n list.push({\r\n field: 'Actions',\r\n minWidth: 100,\r\n headerAlign: 'right',\r\n align: 'right',\r\n filterable: false,\r\n sortable: false,\r\n renderCell: (value) => <ActionRow value={value.row} />,\r\n ...params.actionRow\r\n })\r\n }\r\n return generateColumns(list)\r\n }\r\n\r\n onPaginationModelChange = (model: GridPaginationModel, details: GridCallbackDetails<'pagination'>) => {\r\n if (this.mergeConfig.loading) return\r\n this.setTableQueryParams({ pagination: model, detail: 'pagination' })\r\n this.handleChange()\r\n }\r\n\r\n onFilterModelChange = (model: GridFilterModel, details: GridCallbackDetails<'filter'>) => {\r\n if (this.mergeConfig.loading) return\r\n const { pagination } = this.tableQueryParams\r\n this.setTableQueryParams({\r\n filter: model as ICustomGridFilterModel<T>,\r\n pagination: { page: 0, pageSize: pagination?.pageSize ?? 25 },\r\n detail: TableHelper.detectSearchType(model)\r\n })\r\n this.handleChange()\r\n }\r\n\r\n onSortModelChange = (model: GridSortModel, details: GridCallbackDetails<any>) => {\r\n if (this.mergeConfig.loading) return\r\n let sortValue = model as ICustomGridSortModel<T>\r\n const { sort } = this.tableQueryParams\r\n if (!!sort?.length && !sortValue.length) {\r\n if (sort?.[0]?.field === this.defaultTableQueryParams.sort?.[0]?.field) {\r\n sortValue = [{ field: sort[0]?.field, sort: sort[0]?.sort === 'desc' ? 'asc' : 'desc' }]\r\n } else {\r\n sortValue = this.defaultTableQueryParams.sort ?? []\r\n }\r\n }\r\n this.setTableQueryParams({ sort: sortValue, detail: 'sort' })\r\n this.handleChange()\r\n }\r\n\r\n handleChange = () => {\r\n if (this.changeTimeout) clearTimeout(this.changeTimeout)\r\n this.changeTimeout = setTimeout(() => {\r\n this.props.onChange && this.props.onChange(this.tableQueryParams)\r\n }, 300)\r\n }\r\n\r\n handleRowSelectionChange = (value: GridRowSelectionModel, details: GridCallbackDetails) => {\r\n if (this.mergeConfig.maxSelcion && value.length > this.mergeConfig.maxSelcion) {\r\n this.rowSelecteds = value.slice(0, this.mergeConfig.maxSelcion)\r\n } else {\r\n this.rowSelecteds = value\r\n }\r\n this.props.onRowSelectionChange && this.props.onRowSelectionChange(this.rowSelecteds, details)\r\n this.forceUpdate()\r\n }\r\n }\r\n\r\n return Table\r\n}\r\n\r\nexport default CreateTable\r\n\r\nconst Wrap = styled(({ children, ...p }: BoxProps) => (\r\n <Box {...p}>\r\n <div>{children}</div>\r\n </Box>\r\n))({\r\n flex: 1,\r\n position: 'relative',\r\n '& > div': {\r\n position: 'absolute',\r\n top: 0,\r\n left: 0,\r\n width: '100%',\r\n height: '100%',\r\n overflowY: 'auto'\r\n },\r\n '.MuiDataGrid-root': {\r\n '--unstable_DataGrid-radius': 0,\r\n overflow: 'hidden'\r\n },\r\n [`.MuiDataGrid-cell.${dinoTableClasses.whiteSpacePre} .MuiDataGrid-cellContent`]: {\r\n whiteSpace: 'pre'\r\n },\r\n [`.MuiTablePagination-root p`]: {\r\n marginBottom: 0\r\n }\r\n})\r\n"],"names":["CreateTable","params","Table","props","_this","_classCallCheck","_callSuper","_defineProperty","value","tableQueryParams","mergeObjects","children","WrapComponent","disableGlobalModalProvider","Fragment","GlobalModal","_jsx","mapGlobalModalContext","context","TableBaseContext","Provider","showModal","show","closeModal","close","_this$props$data$item","_this$props$data","_this$props$slots$den","_this$props$slots","mergeConfig","obj","getRowId","columns","rows","data","items","checkboxSelection","pagination","density","slots","initialState","TableHelper","mapInitialState","query","columnVisibilityModel","filterDebounceMs","sx","border","toolbar","rowSelectionModel","rowSelecteds","onRowSelectionModelChange","handleRowSelectionChange","featureMode","_this$props$data$rowT","_this$props$data2","objServer","filterMode","sortingMode","paginationMode","onPaginationModelChange","onFilterModelChange","onSortModelChange","rowCount","rowTotal","paginationModel","filterModel","filter","sortModel","mapSortModel","sort","loading","Object","assign","dataGridProps","extendColDefs","_this$mergeConfig","ActionRow","disableActionRow","list","push","_objectSpread","field","minWidth","headerAlign","align","filterable","sortable","renderCell","row","actionRow","keys","map","key","filterOperators","customFilterOperators","length","apply","_toConsumableArray","model","details","setTableQueryParams","detail","handleChange","_pagination$pageSize","page","pageSize","detectSearchType","_sort$","_this$defaultTableQue","_sort$2","_sort$3","_this$defaultTableQue2","sortValue","defaultTableQueryParams","changeTimeout","clearTimeout","setTimeout","onChange","maxSelcion","slice","onRowSelectionChange","forceUpdate","initialColumns","_inherits","Component","_createClass","get","_this$props$slots2","_this$props$slots$too","_this$props$slots3","_this$props$slots4","_this$props$slots$max","_this$props$slots5","_this$props$slots6","_this$props$slots7","_ref","_this$tableQueryParam","toolbarPannelProps","toolbarProps","this","ToolbarPannel","maxSelection","wrapProps","undefined","nextProps","_nextProps$query","equalTableQueryParams","JSON","stringify","renderWrapContext","Wrap","DataGrid","getDataGridProps","styled","_ref2","p","_objectWithoutProperties","_excluded","Box","flex","position","top","left","width","height","overflowY","overflow","concat","dinoTableClasses","whiteSpacePre","whiteSpace","marginBottom"],"mappings":"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"}
1
+ {"version":3,"file":"create.table.js","sources":["../../../src/table/create.table.tsx"],"sourcesContent":["import { Component, Fragment } from 'react'\r\nimport { Box, BoxProps, styled } from '@mui/material'\r\nimport { DataGrid, DataGridProps, GridColDef, GridFeatureMode, GridFilterOperator } from '@mui/x-data-grid'\r\nimport { GridSortModel, GridValidRowModel, GridRowIdGetter, GridRowSelectionModel } from '@mui/x-data-grid'\r\nimport { GridCallbackDetails, GridColumnVisibilityModel, GridDensity, GridFilterModel, GridPaginationModel } from '@mui/x-data-grid'\r\nimport type { ComponentType, ReactNode } from 'react'\r\nimport { mergeObjects } from '../utils'\r\nimport { TableBaseContext } from './context'\r\nimport { IActionRowProps } from './create.action-row'\r\nimport { customFilterOperators } from './custom.filter-operators'\r\nimport { GlobalModal, mapGlobalModalContext } from '../api-context'\r\nimport { ICustomGridColDef, ICustomGridFilterModel, ICustomGridSortModel, ITableData, ITableQueryParams } from './types'\r\nimport TableHelper, { dinoTableClasses } from './helpers'\r\nimport ToolbarPannel, { IToolbarPannelProps } from './toolbar-pannel'\r\n\r\nexport interface ITableSlots<T> {\r\n maxSelection?: number\r\n density?: GridDensity\r\n toolbar?: ComponentType<IToolbarPannelProps>\r\n actionRow?: ComponentType<IActionRowProps<T>>\r\n toolbarProps?: IToolbarPannelProps\r\n dataGridProps?: DataGridProps\r\n wrapProps?: BoxProps\r\n}\r\n\r\nexport type ITableParamsSlots<T> = Pick<ITableSlots<T>, 'maxSelection' | 'toolbarProps' | 'dataGridProps' | 'wrapProps'>\r\n\r\nexport interface ITableProps<T> {\r\n data?: ITableData<T>\r\n query?: ITableQueryParams<T>\r\n loading?: boolean\r\n onChange?: (query: ITableQueryParams<T>) => void\r\n onRowSelectionChange?: DataGridProps['onRowSelectionModelChange']\r\n slots?: ITableSlots<T>\r\n}\r\n\r\nexport interface ITableParams<T extends GridValidRowModel> extends ITableParamsSlots<T> {\r\n featureMode?: GridFeatureMode\r\n getRowId: GridRowIdGetter<T>\r\n columns: ICustomGridColDef<T>\r\n filterOperators?: (config: GridColDef) => GridFilterOperator[]\r\n columnVisibilityModel?: Partial<Record<keyof T, boolean>>\r\n actionRow?: Omit<GridColDef, 'field'>\r\n disableActionRow?: boolean\r\n disableGlobalModalProvider?: boolean\r\n}\r\n\r\nexport function CreateTable<T extends GridValidRowModel>(params: ITableParams<T>): ComponentType<ITableProps<T>> {\r\n const generateColumns = (extendColDefs?: GridColDef[]) => {\r\n const columns = Object.keys(params.columns).map<GridColDef>((key) => {\r\n const obj = { field: key, ...params.columns[key] }\r\n obj.filterOperators = params.filterOperators ? params.filterOperators(obj) : customFilterOperators(obj)\r\n return obj\r\n })\r\n\r\n if (!!extendColDefs && extendColDefs.length > 0) columns.push(...extendColDefs)\r\n return columns\r\n }\r\n\r\n class Table extends Component<ITableProps<T>> {\r\n private tableQueryParams: ITableQueryParams<T>\r\n // private tableQueryParamsCache: ITableQueryParams<T> = {}\r\n private defaultTableQueryParams: ITableQueryParams<T>\r\n private columns: GridColDef<T>[]\r\n private rowSelecteds: GridRowSelectionModel\r\n private changeTimeout?: ReturnType<typeof setTimeout>\r\n constructor(props: ITableProps<T>) {\r\n super(props)\r\n this.columns = this.initialColumns()\r\n this.tableQueryParams = { ...props.query }\r\n this.defaultTableQueryParams = this.tableQueryParams\r\n this.rowSelecteds = []\r\n }\r\n\r\n get mergeConfig() {\r\n const toolbarPannelProps = mergeObjects({}, params?.toolbarProps, this.props.slots?.toolbarProps)\r\n return {\r\n toolbar: this.props.slots?.toolbar ?? (() => <ToolbarPannel {...toolbarPannelProps} />),\r\n ActionRow: this.props.slots?.actionRow,\r\n disableActionRow: params.disableActionRow,\r\n columnVisibilityModel: params.columnVisibilityModel,\r\n maxSelcion: this.props.slots?.maxSelection ?? params.maxSelection,\r\n dataGridProps: mergeObjects({}, params.dataGridProps, this.props.slots?.dataGridProps),\r\n wrapProps: mergeObjects({}, params.wrapProps, this.props.slots?.wrapProps),\r\n loading: (this.props.loading !== undefined ? this.props.loading : this.tableQueryParams?.loading) ?? false\r\n }\r\n }\r\n\r\n setTableQueryParams = (value: Partial<ITableQueryParams<T>>) => {\r\n this.tableQueryParams = mergeObjects({}, this.tableQueryParams, value)\r\n }\r\n\r\n componentWillUnmount() {\r\n if (this.changeTimeout) {\r\n clearTimeout(this.changeTimeout)\r\n }\r\n }\r\n\r\n shouldComponentUpdate(nextProps: Readonly<ITableProps<T>>): boolean {\r\n if (params.featureMode === 'server') {\r\n // Check if query changed\r\n if (!TableHelper.equalTableQueryParams(nextProps.query, this.props.query)) {\r\n this.setTableQueryParams(nextProps.query ?? {})\r\n return true\r\n }\r\n // Check if data or loading changed\r\n if (JSON.stringify(nextProps.data) !== JSON.stringify(this.props.data) || nextProps.loading !== this.props.loading) {\r\n return true\r\n }\r\n return false\r\n } else {\r\n return true\r\n }\r\n }\r\n\r\n render() {\r\n return this.renderWrapContext(\r\n <Wrap {...this.mergeConfig.wrapProps}>\r\n <DataGrid loading={this.props.loading} {...this.getDataGridProps()} />\r\n </Wrap>\r\n )\r\n }\r\n\r\n renderWrapContext = (children: ReactNode) => {\r\n const WrapComponent = params.disableGlobalModalProvider ? Fragment : GlobalModal\r\n return (\r\n <WrapComponent>\r\n {mapGlobalModalContext((context) => (\r\n <TableBaseContext.Provider value={{ showModal: context.show, closeModal: context.close }}>{children}</TableBaseContext.Provider>\r\n ))}\r\n </WrapComponent>\r\n )\r\n }\r\n\r\n getDataGridProps = (): DataGridProps<T> => {\r\n const initialState = TableHelper.mapInitialState(this.props.query, {\r\n columns: { columnVisibilityModel: params.columnVisibilityModel as GridColumnVisibilityModel }\r\n })\r\n const obj: DataGridProps<T> = {\r\n getRowId: params.getRowId,\r\n initialState,\r\n columns: this.columns,\r\n rows: this.props.data?.items ?? [],\r\n checkboxSelection: true,\r\n pagination: true,\r\n density: this.props.slots?.density ?? 'standard',\r\n filterDebounceMs: 800,\r\n sx: { border: 0 },\r\n slots: { toolbar: this.mergeConfig.toolbar },\r\n rowSelectionModel: this.rowSelecteds,\r\n onRowSelectionModelChange: this.handleRowSelectionChange\r\n }\r\n if (params.featureMode === 'server') {\r\n const objServer: Partial<DataGridProps<T>> = {\r\n filterMode: 'server',\r\n sortingMode: 'server',\r\n paginationMode: 'server',\r\n onPaginationModelChange: this.onPaginationModelChange,\r\n onFilterModelChange: this.onFilterModelChange,\r\n onSortModelChange: this.onSortModelChange,\r\n rowCount: this.props.data?.rowTotal ?? 0,\r\n paginationModel: this.tableQueryParams.pagination,\r\n filterModel: this.tableQueryParams.filter as GridFilterModel,\r\n sortModel: TableHelper.mapSortModel(this.tableQueryParams.sort),\r\n loading: this.mergeConfig.loading\r\n }\r\n Object.assign(obj, objServer)\r\n }\r\n return mergeObjects(obj, this.mergeConfig.dataGridProps)\r\n }\r\n\r\n initialColumns = (): GridColDef<T>[] => {\r\n const { ActionRow, disableActionRow } = this.mergeConfig\r\n const list: GridColDef<T>[] = []\r\n if (!!ActionRow && disableActionRow !== true) {\r\n list.push({\r\n field: 'Actions',\r\n minWidth: 100,\r\n headerAlign: 'right',\r\n align: 'right',\r\n filterable: false,\r\n sortable: false,\r\n renderCell: (value) => <ActionRow value={value.row} />,\r\n ...params.actionRow\r\n })\r\n }\r\n return generateColumns(list)\r\n }\r\n\r\n onPaginationModelChange = (model: GridPaginationModel, details: GridCallbackDetails<'pagination'>) => {\r\n if (this.mergeConfig.loading) return\r\n this.setTableQueryParams({ pagination: model, detail: 'pagination' })\r\n this.handleChange()\r\n }\r\n\r\n onFilterModelChange = (model: GridFilterModel, details: GridCallbackDetails<'filter'>) => {\r\n if (this.mergeConfig.loading) return\r\n const { pagination } = this.tableQueryParams\r\n this.setTableQueryParams({\r\n filter: model as ICustomGridFilterModel<T>,\r\n pagination: { page: 0, pageSize: pagination?.pageSize ?? 25 },\r\n detail: TableHelper.detectSearchType(model)\r\n })\r\n this.handleChange()\r\n }\r\n\r\n onSortModelChange = (model: GridSortModel, details: GridCallbackDetails<any>) => {\r\n if (this.mergeConfig.loading) return\r\n let sortValue = model as ICustomGridSortModel<T>\r\n const { sort } = this.tableQueryParams\r\n if (!!sort?.length && !sortValue.length) {\r\n if (sort?.[0]?.field === this.defaultTableQueryParams.sort?.[0]?.field) {\r\n sortValue = [{ field: sort[0]?.field, sort: sort[0]?.sort === 'desc' ? 'asc' : 'desc' }]\r\n } else {\r\n sortValue = this.defaultTableQueryParams.sort ?? []\r\n }\r\n }\r\n this.setTableQueryParams({ sort: sortValue, detail: 'sort' })\r\n this.handleChange()\r\n }\r\n\r\n handleChange = () => {\r\n if (this.changeTimeout) clearTimeout(this.changeTimeout)\r\n this.changeTimeout = setTimeout(() => {\r\n this.props.onChange && this.props.onChange(this.tableQueryParams)\r\n }, 300)\r\n }\r\n\r\n handleRowSelectionChange = (value: GridRowSelectionModel, details: GridCallbackDetails) => {\r\n if (this.mergeConfig.maxSelcion && value.length > this.mergeConfig.maxSelcion) {\r\n this.rowSelecteds = value.slice(0, this.mergeConfig.maxSelcion)\r\n } else {\r\n this.rowSelecteds = value\r\n }\r\n this.props.onRowSelectionChange && this.props.onRowSelectionChange(this.rowSelecteds, details)\r\n this.forceUpdate()\r\n }\r\n }\r\n\r\n return Table\r\n}\r\n\r\nexport default CreateTable\r\n\r\nconst Wrap = styled(({ children, ...p }: BoxProps) => (\r\n <Box {...p}>\r\n <div>{children}</div>\r\n </Box>\r\n))({\r\n flex: 1,\r\n position: 'relative',\r\n '& > div': {\r\n position: 'absolute',\r\n top: 0,\r\n left: 0,\r\n width: '100%',\r\n height: '100%',\r\n overflowY: 'auto'\r\n },\r\n '.MuiDataGrid-root': {\r\n '--unstable_DataGrid-radius': 0,\r\n overflow: 'hidden'\r\n },\r\n [`.MuiDataGrid-cell.${dinoTableClasses.whiteSpacePre} .MuiDataGrid-cellContent`]: {\r\n whiteSpace: 'pre'\r\n },\r\n [`.MuiTablePagination-root p`]: {\r\n marginBottom: 0\r\n }\r\n})\r\n"],"names":["CreateTable","params","Table","props","_this","_classCallCheck","_callSuper","_defineProperty","value","tableQueryParams","mergeObjects","children","WrapComponent","disableGlobalModalProvider","Fragment","GlobalModal","_jsx","mapGlobalModalContext","context","TableBaseContext","Provider","showModal","show","closeModal","close","_this$props$data$item","_this$props$data","_this$props$slots$den","_this$props$slots","initialState","TableHelper","mapInitialState","query","columns","columnVisibilityModel","obj","getRowId","rows","data","items","checkboxSelection","pagination","density","slots","filterDebounceMs","sx","border","toolbar","mergeConfig","rowSelectionModel","rowSelecteds","onRowSelectionModelChange","handleRowSelectionChange","featureMode","_this$props$data$rowT","_this$props$data2","objServer","filterMode","sortingMode","paginationMode","onPaginationModelChange","onFilterModelChange","onSortModelChange","rowCount","rowTotal","paginationModel","filterModel","filter","sortModel","mapSortModel","sort","loading","Object","assign","dataGridProps","extendColDefs","_this$mergeConfig","ActionRow","disableActionRow","list","push","_objectSpread","field","minWidth","headerAlign","align","filterable","sortable","renderCell","row","actionRow","keys","map","key","filterOperators","customFilterOperators","length","apply","_toConsumableArray","model","details","setTableQueryParams","detail","handleChange","_pagination$pageSize","page","pageSize","detectSearchType","_sort$","_this$defaultTableQue","_sort$2","_sort$3","_this$defaultTableQue2","sortValue","defaultTableQueryParams","changeTimeout","clearTimeout","setTimeout","onChange","maxSelcion","slice","onRowSelectionChange","forceUpdate","initialColumns","_inherits","Component","_createClass","get","_this$props$slots2","_this$props$slots$too","_this$props$slots3","_this$props$slots4","_this$props$slots$max","_this$props$slots5","_this$props$slots6","_this$props$slots7","_ref","_this$tableQueryParam","toolbarPannelProps","toolbarProps","this","ToolbarPannel","maxSelection","wrapProps","undefined","nextProps","_nextProps$query","equalTableQueryParams","JSON","stringify","renderWrapContext","Wrap","DataGrid","getDataGridProps","styled","_ref2","p","_objectWithoutProperties","_excluded","Box","flex","position","top","left","width","height","overflowY","overflow","concat","dinoTableClasses","whiteSpacePre","whiteSpace","marginBottom"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{defineProperty as e,inherits as t,createClass as a,classCallCheck as r,callSuper as n,objectSpread2 as i}from"../../_virtual/_rollupPluginBabelHelpers.js";import{jsxs as o,jsx as l,Fragment as s}from"react/jsx-runtime";import{Component as c}from"react";import{GridToolbar as p,GridToolbarQuickFilter as d}from"@mui/x-data-grid";import{styled as m,Box as u,Typography as h}from"@mui/material";import{BtnFormCreate as f}from"./ui.buttons.js";import{Breadcrumbs as g}from"../components/breadcrumbs.js";import{HelpTooltip as b}from"../components/help-tooltip.js";var x=function(){function m(){var t;r(this,m);for(var a=arguments.length,c=new Array(a),p=0;p<a;p++)c[p]=arguments[p];return t=n(this,m,[].concat(c)),e(t,"renderTitle",function(){var e,a=t.props,r=a.title,n=a.afterTitle,c=a.breadcrumbs,p=a.icon,d="".concat(T.titleWrap).concat(null!==(e=t.props.titleProps)&&void 0!==e&&e.className?" ".concat(t.props.titleProps.className):"");if(!(!!r||!!c||!!n))return l(s,{});var m=r;return"string"==typeof r&&(m=l(h,{noWrap:!0,variant:"subtitle1",className:T.titleText,children:r})),c&&(m=l(g,{value:c})),o(u,i(i({},t.props.titleProps),{},{className:d,children:[p&&l("div",{className:T.icon,children:p}),m,n]}))}),e(t,"renderEndAdornment",function(){return!t.props.searchInclude||t.props.searchInclude.length<=0?l(s,{}):l(b,{title:"The search includes",small:!0,children:l("ul",{className:T.searchHelp,children:t.props.searchInclude.map(function(e,t){return l("li",{children:l(h,{variant:"body2",children:e})},t)})})})}),t}return t(m,c),a(m,[{key:"render",value:function(){return o(v,{className:T.root,children:[this.renderTitle(),o(u,{className:T.actionsRow,children:[o(u,{className:T.actionsLeft,children:[l(p,{className:T.gridToolbar}),this.props.formCreate&&l(f,{children:this.props.formCreate}),this.props.afterAction]}),l(u,{className:T.actionsRight,children:o(u,{className:T.quickFilterWrap,children:[l(d,{fullWidth:!0,variant:"standard",size:"small",debounceMs:800,quickFilterParser:function(e){return[e]}}),this.renderEndAdornment()]})})]})]})}}])}(),T={root:"Dino-ToolbarPannel-root",actionsRow:"Dino-ToolbarPannel-actionsRow",actionsLeft:"Dino-ToolbarPannel-actionsLeft",actionsRight:"Dino-ToolbarPannel-actionsRight",quickFilterWrap:"Dino-ToolbarPannel-quickFilterWrap",gridToolbar:"Dino-ToolbarPannel-gridToolbar",titleWrap:"Dino-ToolbarPannel-titleWrap",titleText:"Dino-ToolbarPannel-titleText",searchHelp:"Dino-ToolbarPannel-searchHelp",icon:"Dino-ToolbarPannel-icon"},v=m(u)(function(t){var a=t.theme;return e(e(e(e(e(e(e(e(e(e({padding:a.spacing(1,2,0)},".".concat(T.actionsRow),{display:"flex",flexWrap:"wrap"}),".".concat(T.actionsLeft),{flex:1,display:"flex",alignItems:"center",flexWrap:"wrap"}),".".concat(T.actionsRight),e({display:"flex",gap:"8px",alignItems:"center",width:"auto"},a.breakpoints.down("md"),{width:"100%"})),".".concat(T.quickFilterWrap),{display:"flex",alignItems:"center"}),".".concat(T.gridToolbar),{padding:0}),".".concat(T.titleWrap),{height:"var(--height-table-topbar, 48px)",display:"flex",alignItems:"center"}),".".concat(T.titleText),{fontWeight:700,flex:1}),".".concat(T.icon),{marginRight:8,display:"flex",alignItems:"center",justifyContent:"center",flex:"0 0 auto"}),".".concat(T.searchHelp),{margin:"0 0 0 18px",padding:0,li:{position:"relative"},"li::after":{content:'"►"',display:"inline-block",top:"50%",transform:"translateY(-50%)",position:"absolute",left:"-18px"}}),a.breakpoints.down("md"),{padding:a.spacing(1,1,0)})});export{x as default};
1
+ import{defineProperty as t,inherits as i,createClass as e,objectSpread2 as r,classCallCheck as o,callSuper as a}from"../../_virtual/_rollupPluginBabelHelpers.js";import{jsxs as n,jsx as l,Fragment as s}from"react/jsx-runtime";import{Component as c}from"react";import{GridToolbarColumnsButton as p,GridToolbarFilterButton as d,GridToolbarDensitySelector as h,GridToolbarExport as m,GridToolbarQuickFilter as u}from"@mui/x-data-grid";import{styled as f,Box as b,Typography as g}from"@mui/material";import{BtnFormCreate as v}from"./ui.buttons.js";import{Breadcrumbs as T}from"../components/breadcrumbs.js";import{HelpTooltip as x}from"../components/help-tooltip.js";var y=function(){function f(){var i;o(this,f);for(var e=arguments.length,c=new Array(e),p=0;p<e;p++)c[p]=arguments[p];return i=a(this,f,[].concat(c)),t(i,"renderTitle",function(){var t,e=i.props,o=e.title,a=e.afterTitle,c=e.breadcrumbs,p=e.icon,d="".concat(P.titleWrap).concat(null!==(t=i.props.titleProps)&&void 0!==t&&t.className?" ".concat(i.props.titleProps.className):"");if(!(!!o||!!c||!!a))return l(s,{});var h=o;return"string"==typeof o&&(h=l(g,{noWrap:!0,variant:"subtitle1",className:P.titleText,children:o})),c&&(h=l(T,{value:c})),n(b,r(r({},i.props.titleProps),{},{className:d,children:[p&&l("div",{className:P.icon,children:p}),h,a]}))}),t(i,"renderEndAdornment",function(){return!i.props.searchInclude||i.props.searchInclude.length<=0?l(s,{}):l(x,{title:"The search includes",small:!0,children:l("ul",{className:P.searchHelp,children:i.props.searchInclude.map(function(t,i){return l("li",{children:l(g,{variant:"body2",children:t})},i)})})})}),i}return i(f,c),e(f,[{key:"render",value:function(){var t,i,e,o;return n(W,{className:P.root,sx:this.props.sx,children:[this.renderTitle(),this.props.aboveAction,n(b,r(r({className:P.actionsRow},this.props.actionWrapProps),{},{children:[n(b,{className:P.actionsLeft,children:[n(b,{className:P.gridToolbar,children:[!1!==(null===(t=this.props.visibilityToolbar)||void 0===t?void 0:t.columns)&&l(p,{}),!1!==(null===(i=this.props.visibilityToolbar)||void 0===i?void 0:i.filters)&&l(d,{}),!1!==(null===(e=this.props.visibilityToolbar)||void 0===e?void 0:e.density)&&l(h,{}),!1!==(null===(o=this.props.visibilityToolbar)||void 0===o?void 0:o.export)&&l(m,{})]}),this.props.formCreate&&l(v,{children:this.props.formCreate}),this.props.afterAction]}),l(b,{className:P.actionsRight,children:n(b,{className:P.quickFilterWrap,children:[l(u,{fullWidth:!0,variant:"standard",size:"small",debounceMs:800,quickFilterParser:function(t){return[t]}}),this.renderEndAdornment()]})})]})),this.props.belowAction]})}}])}(),P={root:"Dino-ToolbarPannel-root",actionsRow:"Dino-ToolbarPannel-actionsRow",actionsLeft:"Dino-ToolbarPannel-actionsLeft",actionsRight:"Dino-ToolbarPannel-actionsRight",quickFilterWrap:"Dino-ToolbarPannel-quickFilterWrap",gridToolbar:"Dino-ToolbarPannel-gridToolbar",titleWrap:"Dino-ToolbarPannel-titleWrap",titleText:"Dino-ToolbarPannel-titleText",searchHelp:"Dino-ToolbarPannel-searchHelp",icon:"Dino-ToolbarPannel-icon"},W=f(b)(function(i){var e=i.theme;return t(t(t(t(t(t(t(t(t(t({padding:e.spacing(1,2,0)},".".concat(P.actionsRow),{display:"flex",flexWrap:"wrap"}),".".concat(P.actionsLeft),{flex:1,display:"flex",alignItems:"center",flexWrap:"wrap"}),".".concat(P.actionsRight),t({display:"flex",gap:"8px",alignItems:"center",width:"auto"},e.breakpoints.down("md"),{width:"100%"})),".".concat(P.quickFilterWrap),{display:"flex",alignItems:"center"}),".".concat(P.gridToolbar),{padding:0}),".".concat(P.titleWrap),{height:"var(--height-table-topbar, 48px)",display:"flex",alignItems:"center"}),".".concat(P.titleText),{fontWeight:700,flex:1}),".".concat(P.icon),{marginRight:8,display:"flex",alignItems:"center",justifyContent:"center",flex:"0 0 auto"}),".".concat(P.searchHelp),{margin:"0 0 0 18px",padding:0,li:{position:"relative"},"li::after":{content:'"►"',display:"inline-block",top:"50%",transform:"translateY(-50%)",position:"absolute",left:"-18px"}}),e.breakpoints.down("md"),{padding:e.spacing(1,1,0)})});export{y as default};
2
2
  //# sourceMappingURL=toolbar-pannel.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"toolbar-pannel.js","sources":["../../../src/table/toolbar-pannel.tsx"],"sourcesContent":["import React, { Component } from 'react'\r\nimport { GridToolbar, GridToolbarQuickFilter } from '@mui/x-data-grid'\r\nimport { Box, BoxProps, styled, Typography } from '@mui/material'\r\nimport { BtnFormCreate } from './ui.buttons'\r\nimport { Breadcrumbs, IBreadcrumbConfig, HelpTooltip } from '../components'\r\n\r\nexport interface IToolbarPannelOptions {\r\n searchInclude?: string[]\r\n formCreate?: React.ReactNode\r\n afterAction?: React.ReactNode\r\n breadcrumbs?: IBreadcrumbConfig[]\r\n}\r\n\r\nexport interface IToolbarPannelProps extends IToolbarPannelOptions {\r\n title?: React.ReactNode\r\n titleProps?: BoxProps\r\n icon?: React.ReactNode\r\n afterTitle?: React.ReactNode\r\n}\r\n\r\nclass ToolbarPannel extends Component<React.PropsWithChildren<IToolbarPannelProps>> {\r\n render() {\r\n return (\r\n <ToolbarPannelStyled className={toolbarPannelClasses.root}>\r\n {this.renderTitle()}\r\n <Box className={toolbarPannelClasses.actionsRow}>\r\n <Box className={toolbarPannelClasses.actionsLeft}>\r\n <GridToolbar className={toolbarPannelClasses.gridToolbar} />\r\n {this.props.formCreate && <BtnFormCreate>{this.props.formCreate}</BtnFormCreate>}\r\n {this.props.afterAction}\r\n </Box>\r\n <Box className={toolbarPannelClasses.actionsRight}>\r\n <Box className={toolbarPannelClasses.quickFilterWrap}>\r\n <GridToolbarQuickFilter fullWidth variant='standard' size='small' debounceMs={800} quickFilterParser={(x: any) => [x]} />\r\n {this.renderEndAdornment()}\r\n </Box>\r\n </Box>\r\n </Box>\r\n </ToolbarPannelStyled>\r\n )\r\n }\r\n\r\n renderTitle = () => {\r\n const { title, afterTitle, breadcrumbs, icon } = this.props\r\n const titleClassName = `${toolbarPannelClasses.titleWrap}${this.props.titleProps?.className ? ` ${this.props.titleProps.className}` : ''}`\r\n\r\n const isVisible = !!title || !!breadcrumbs || !!afterTitle\r\n if (!isVisible) return <></>\r\n\r\n let titleElm = title\r\n if (typeof title === 'string') {\r\n titleElm = (\r\n <Typography noWrap variant='subtitle1' className={toolbarPannelClasses.titleText}>\r\n {title}\r\n </Typography>\r\n )\r\n }\r\n if (breadcrumbs) titleElm = <Breadcrumbs value={breadcrumbs} />\r\n\r\n return (\r\n <Box {...this.props.titleProps} className={titleClassName}>\r\n {icon && <div className={toolbarPannelClasses.icon}>{icon}</div>}\r\n {titleElm}\r\n {afterTitle}\r\n </Box>\r\n )\r\n }\r\n\r\n renderEndAdornment = () => {\r\n if (!this.props.searchInclude || this.props.searchInclude.length <= 0) return <></>\r\n return (\r\n <HelpTooltip title='The search includes' small>\r\n <ul className={toolbarPannelClasses.searchHelp}>\r\n {this.props.searchInclude.map((item, index) => (\r\n <li key={index}>\r\n <Typography variant='body2'>{item}</Typography>\r\n </li>\r\n ))}\r\n </ul>\r\n </HelpTooltip>\r\n )\r\n }\r\n}\r\nexport default ToolbarPannel\r\n\r\nconst toolbarPannelClasses = {\r\n root: 'Dino-ToolbarPannel-root',\r\n actionsRow: 'Dino-ToolbarPannel-actionsRow',\r\n actionsLeft: 'Dino-ToolbarPannel-actionsLeft',\r\n actionsRight: 'Dino-ToolbarPannel-actionsRight',\r\n quickFilterWrap: 'Dino-ToolbarPannel-quickFilterWrap',\r\n gridToolbar: 'Dino-ToolbarPannel-gridToolbar',\r\n titleWrap: 'Dino-ToolbarPannel-titleWrap',\r\n titleText: 'Dino-ToolbarPannel-titleText',\r\n searchHelp: 'Dino-ToolbarPannel-searchHelp',\r\n icon: 'Dino-ToolbarPannel-icon'\r\n}\r\n\r\nconst ToolbarPannelStyled = styled(Box)(({ theme }) => ({\r\n padding: theme.spacing(1, 2, 0),\r\n [`.${toolbarPannelClasses.actionsRow}`]: { display: 'flex', flexWrap: 'wrap' },\r\n [`.${toolbarPannelClasses.actionsLeft}`]: { flex: 1, display: 'flex', alignItems: 'center', flexWrap: 'wrap' },\r\n [`.${toolbarPannelClasses.actionsRight}`]: {\r\n display: 'flex',\r\n gap: '8px',\r\n alignItems: 'center',\r\n width: 'auto',\r\n [theme.breakpoints.down('md')]: { width: '100%' }\r\n },\r\n [`.${toolbarPannelClasses.quickFilterWrap}`]: { display: 'flex', alignItems: 'center' },\r\n [`.${toolbarPannelClasses.gridToolbar}`]: { padding: 0 },\r\n [`.${toolbarPannelClasses.titleWrap}`]: { height: 'var(--height-table-topbar, 48px)', display: 'flex', alignItems: 'center' },\r\n [`.${toolbarPannelClasses.titleText}`]: { fontWeight: 700, flex: 1 },\r\n [`.${toolbarPannelClasses.icon}`]: {\r\n marginRight: 8,\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n flex: '0 0 auto'\r\n },\r\n [`.${toolbarPannelClasses.searchHelp}`]: {\r\n margin: '0 0 0 18px',\r\n padding: 0,\r\n li: { position: 'relative' },\r\n 'li::after': {\r\n content: '\"►\"',\r\n display: 'inline-block',\r\n top: '50%',\r\n transform: 'translateY(-50%)',\r\n position: 'absolute',\r\n left: '-18px'\r\n }\r\n },\r\n [theme.breakpoints.down('md')]: { padding: theme.spacing(1, 1, 0) }\r\n}))\r\n"],"names":["ToolbarPannel","_this","_classCallCheck","_len","arguments","length","args","Array","_key","_callSuper","this","concat","_defineProperty","_this$props$titleProp","_this$props","props","title","afterTitle","breadcrumbs","icon","titleClassName","toolbarPannelClasses","titleWrap","titleProps","className","_jsx","titleElm","Typography","noWrap","variant","titleText","Breadcrumbs","value","_jsxs","Box","_objectSpread","children","searchInclude","HelpTooltip","small","searchHelp","map","item","index","_inherits","Component","_createClass","key","ToolbarPannelStyled","root","renderTitle","actionsRow","actionsLeft","GridToolbar","gridToolbar","formCreate","BtnFormCreate","afterAction","actionsRight","quickFilterWrap","GridToolbarQuickFilter","fullWidth","size","debounceMs","quickFilterParser","x","renderEndAdornment","styled","_ref","theme","padding","spacing","display","flexWrap","flex","alignItems","gap","width","breakpoints","down","height","fontWeight","marginRight","justifyContent","margin","li","position","content","top","transform","left"],"mappings":"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"}
1
+ {"version":3,"file":"toolbar-pannel.js","sources":["../../../src/table/toolbar-pannel.tsx"],"sourcesContent":["import React, { Component } from 'react'\r\nimport { GridToolbarColumnsButton, GridToolbarDensitySelector } from '@mui/x-data-grid'\r\nimport { GridToolbarExport, GridToolbarFilterButton, GridToolbarQuickFilter } from '@mui/x-data-grid'\r\nimport { Box, BoxProps, styled, Typography } from '@mui/material'\r\nimport { BtnFormCreate } from './ui.buttons'\r\nimport { Breadcrumbs, IBreadcrumbConfig, HelpTooltip } from '../components'\r\n\r\nexport interface IToolbarPannelToolbarConfig {\r\n columns?: boolean\r\n filters?: boolean\r\n density?: boolean\r\n export?: boolean\r\n}\r\n\r\nexport interface IToolbarPannelProps {\r\n title?: React.ReactNode\r\n titleProps?: BoxProps\r\n icon?: React.ReactNode\r\n afterTitle?: React.ReactNode\r\n searchInclude?: string[]\r\n visibilityToolbar?: IToolbarPannelToolbarConfig\r\n formCreate?: React.ReactNode\r\n breadcrumbs?: IBreadcrumbConfig[]\r\n afterAction?: React.ReactNode\r\n belowAction?: React.ReactNode\r\n aboveAction?: React.ReactNode\r\n actionWrapProps?: BoxProps\r\n sx?: BoxProps['sx']\r\n}\r\n\r\nclass ToolbarPannel extends Component<React.PropsWithChildren<IToolbarPannelProps>> {\r\n render() {\r\n return (\r\n <ToolbarPannelStyled className={toolbarPannelClasses.root} sx={this.props.sx}>\r\n {this.renderTitle()}\r\n {this.props.aboveAction}\r\n <Box className={toolbarPannelClasses.actionsRow} {...this.props.actionWrapProps}>\r\n <Box className={toolbarPannelClasses.actionsLeft}>\r\n <Box className={toolbarPannelClasses.gridToolbar}>\r\n {this.props.visibilityToolbar?.columns !== false && <GridToolbarColumnsButton />}\r\n {this.props.visibilityToolbar?.filters !== false && <GridToolbarFilterButton />}\r\n {this.props.visibilityToolbar?.density !== false && <GridToolbarDensitySelector />}\r\n {this.props.visibilityToolbar?.export !== false && <GridToolbarExport />}\r\n </Box>\r\n {this.props.formCreate && <BtnFormCreate>{this.props.formCreate}</BtnFormCreate>}\r\n {this.props.afterAction}\r\n </Box>\r\n <Box className={toolbarPannelClasses.actionsRight}>\r\n <Box className={toolbarPannelClasses.quickFilterWrap}>\r\n <GridToolbarQuickFilter fullWidth variant='standard' size='small' debounceMs={800} quickFilterParser={(x: any) => [x]} />\r\n {this.renderEndAdornment()}\r\n </Box>\r\n </Box>\r\n </Box>\r\n {this.props.belowAction}\r\n </ToolbarPannelStyled>\r\n )\r\n }\r\n\r\n renderTitle = () => {\r\n const { title, afterTitle, breadcrumbs, icon } = this.props\r\n const titleClassName = `${toolbarPannelClasses.titleWrap}${this.props.titleProps?.className ? ` ${this.props.titleProps.className}` : ''}`\r\n\r\n const isVisible = !!title || !!breadcrumbs || !!afterTitle\r\n if (!isVisible) return <></>\r\n\r\n let titleElm = title\r\n if (typeof title === 'string') {\r\n titleElm = (\r\n <Typography noWrap variant='subtitle1' className={toolbarPannelClasses.titleText}>\r\n {title}\r\n </Typography>\r\n )\r\n }\r\n if (breadcrumbs) titleElm = <Breadcrumbs value={breadcrumbs} />\r\n\r\n return (\r\n <Box {...this.props.titleProps} className={titleClassName}>\r\n {icon && <div className={toolbarPannelClasses.icon}>{icon}</div>}\r\n {titleElm}\r\n {afterTitle}\r\n </Box>\r\n )\r\n }\r\n\r\n renderEndAdornment = () => {\r\n if (!this.props.searchInclude || this.props.searchInclude.length <= 0) return <></>\r\n return (\r\n <HelpTooltip title='The search includes' small>\r\n <ul className={toolbarPannelClasses.searchHelp}>\r\n {this.props.searchInclude.map((item, index) => (\r\n <li key={index}>\r\n <Typography variant='body2'>{item}</Typography>\r\n </li>\r\n ))}\r\n </ul>\r\n </HelpTooltip>\r\n )\r\n }\r\n}\r\nexport default ToolbarPannel\r\n\r\nconst toolbarPannelClasses = {\r\n root: 'Dino-ToolbarPannel-root',\r\n actionsRow: 'Dino-ToolbarPannel-actionsRow',\r\n actionsLeft: 'Dino-ToolbarPannel-actionsLeft',\r\n actionsRight: 'Dino-ToolbarPannel-actionsRight',\r\n quickFilterWrap: 'Dino-ToolbarPannel-quickFilterWrap',\r\n gridToolbar: 'Dino-ToolbarPannel-gridToolbar',\r\n titleWrap: 'Dino-ToolbarPannel-titleWrap',\r\n titleText: 'Dino-ToolbarPannel-titleText',\r\n searchHelp: 'Dino-ToolbarPannel-searchHelp',\r\n icon: 'Dino-ToolbarPannel-icon'\r\n}\r\n\r\nconst ToolbarPannelStyled = styled(Box)(({ theme }) => ({\r\n padding: theme.spacing(1, 2, 0),\r\n [`.${toolbarPannelClasses.actionsRow}`]: { display: 'flex', flexWrap: 'wrap' },\r\n [`.${toolbarPannelClasses.actionsLeft}`]: { flex: 1, display: 'flex', alignItems: 'center', flexWrap: 'wrap' },\r\n [`.${toolbarPannelClasses.actionsRight}`]: {\r\n display: 'flex',\r\n gap: '8px',\r\n alignItems: 'center',\r\n width: 'auto',\r\n [theme.breakpoints.down('md')]: { width: '100%' }\r\n },\r\n [`.${toolbarPannelClasses.quickFilterWrap}`]: { display: 'flex', alignItems: 'center' },\r\n [`.${toolbarPannelClasses.gridToolbar}`]: { padding: 0 },\r\n [`.${toolbarPannelClasses.titleWrap}`]: { height: 'var(--height-table-topbar, 48px)', display: 'flex', alignItems: 'center' },\r\n [`.${toolbarPannelClasses.titleText}`]: { fontWeight: 700, flex: 1 },\r\n [`.${toolbarPannelClasses.icon}`]: {\r\n marginRight: 8,\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n flex: '0 0 auto'\r\n },\r\n [`.${toolbarPannelClasses.searchHelp}`]: {\r\n margin: '0 0 0 18px',\r\n padding: 0,\r\n li: { position: 'relative' },\r\n 'li::after': {\r\n content: '\"►\"',\r\n display: 'inline-block',\r\n top: '50%',\r\n transform: 'translateY(-50%)',\r\n position: 'absolute',\r\n left: '-18px'\r\n }\r\n },\r\n [theme.breakpoints.down('md')]: { padding: theme.spacing(1, 1, 0) }\r\n}))\r\n"],"names":["ToolbarPannel","_this","_classCallCheck","_len","arguments","length","args","Array","_key","_callSuper","this","concat","_defineProperty","_this$props$titleProp","_this$props","props","title","afterTitle","breadcrumbs","icon","titleClassName","toolbarPannelClasses","titleWrap","titleProps","className","_jsx","titleElm","Typography","noWrap","variant","titleText","Breadcrumbs","value","_jsxs","Box","_objectSpread","children","searchInclude","HelpTooltip","small","searchHelp","map","item","index","_inherits","Component","_createClass","key","_this$props$visibilit","_this$props$visibilit2","_this$props$visibilit3","_this$props$visibilit4","ToolbarPannelStyled","root","sx","renderTitle","aboveAction","actionsRow","actionWrapProps","actionsLeft","gridToolbar","visibilityToolbar","columns","GridToolbarColumnsButton","filters","GridToolbarFilterButton","density","GridToolbarDensitySelector","GridToolbarExport","formCreate","BtnFormCreate","afterAction","actionsRight","quickFilterWrap","GridToolbarQuickFilter","fullWidth","size","debounceMs","quickFilterParser","x","renderEndAdornment","belowAction","styled","_ref","theme","padding","spacing","display","flexWrap","flex","alignItems","gap","width","breakpoints","down","height","fontWeight","marginRight","justifyContent","margin","li","position","content","top","transform","left"],"mappings":"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"}
@@ -16,6 +16,7 @@ export interface IFilterSortSlots {
16
16
  rootProps?: BoxProps;
17
17
  }
18
18
  export interface IFilterSortProps<T> {
19
+ sx?: BoxProps['sx'];
19
20
  slots?: IFilterSortSlots;
20
21
  }
21
22
  export interface IFilterSortConfig<T> extends IFilterSortSlots {
@@ -1,2 +1,31 @@
1
- import { KeySpecial } from './types';
1
+ import { KeySpecial, TFilterState } from './types';
2
2
  export declare const mapSpecialLabel: Record<KeySpecial, string>;
3
+ export interface IFilterStateQueryParams {
4
+ filter?: string;
5
+ }
6
+ /**
7
+ * @en Remove null/undefined values from object recursively for accurate comparison.
8
+ * @vi Loai bo cac gia tri null/undefined khoi object mot cach de quy de so sanh chinh xac.
9
+ */
10
+ export declare function removeNullValues<T = any>(obj: T): T | undefined;
11
+ /**
12
+ * @en Deep comparison of two filter states to check if they are equal.
13
+ * @vi So sanh sau hai filter state de kiem tra xem chung co bang nhau khong.
14
+ */
15
+ export declare function isFilterStateEqual<T>(state1?: TFilterState<T>, state2?: TFilterState<T>): boolean;
16
+ /**
17
+ * @en Synchronize filter state to URL query parameters. If state equals defaultState, remove from URL to keep it clean.
18
+ * @vi Dong bo filter state vao URL query parameters. Neu state bang defaultState, xoa khoi URL de giu URL sach.
19
+ *
20
+ * @param state - Current filter state to sync
21
+ * @param defaultState - Default filter state (if current equals this, don't save to URL)
22
+ */
23
+ export declare function setFilterToURL<T>(state?: TFilterState<T>, defaultState?: TFilterState<T>): void;
24
+ /**
25
+ * @en Retrieve filter state from URL query parameters.
26
+ * @vi Lay filter state tu URL query parameters.
27
+ *
28
+ * @param defaultState - Default filter state to return if URL has no filter state
29
+ * @returns Filter state from URL or defaultState
30
+ */
31
+ export declare function getFilterFromURL<T>(defaultState?: TFilterState<T>): TFilterState<T> | undefined;
@@ -1,8 +1,13 @@
1
+ import { getFilterFromURL, isFilterStateEqual, removeNullValues, setFilterToURL } from './helpers';
1
2
  import { createFilterBar } from './index.create';
2
3
  export declare class DinoFilterBar {
3
4
  createFilterBar: typeof createFilterBar;
4
5
  createConvertToGraphQL: <TSource extends Record<string, any>, TTarget extends object>(state: import("./types").TFilterState<TSource>) => import("./convert-to-graphql").TableFileterConverter<TSource, TTarget>;
5
6
  mapLogic: (logic?: import("./types").TLogic | undefined) => "Or" | "And";
6
7
  mapDirection: (direction?: import("./types").TDirection | undefined) => "ASC" | "DESC";
8
+ removeNullValues: typeof removeNullValues;
9
+ isFilterStateEqual: typeof isFilterStateEqual;
10
+ setFilterToURL: typeof setFilterToURL;
11
+ getFilterFromURL: typeof getFilterFromURL;
7
12
  }
8
13
  export declare const dinoFilterBar: DinoFilterBar;