dinocollab-core 2.2.14 → 2.2.16

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 (71) hide show
  1. package/dist/src/components/image-with-fallback.js +1 -1
  2. package/dist/src/components/image-with-fallback.js.map +1 -1
  3. package/dist/src/data-surface/helpers.js +1 -1
  4. package/dist/src/data-surface/helpers.js.map +1 -1
  5. package/dist/src/data-surface/view-grid/helpers.js +1 -1
  6. package/dist/src/data-surface/view-grid/helpers.js.map +1 -1
  7. package/dist/src/data-surface/view-grid/hooks.js +1 -1
  8. package/dist/src/data-surface/view-grid/hooks.js.map +1 -1
  9. package/dist/src/data-surface/view-grid/index.js +1 -1
  10. package/dist/src/data-surface/view-grid/index.js.map +1 -1
  11. package/dist/src/filter-bar/components/chip-viewer.js +1 -1
  12. package/dist/src/filter-bar/components/chip-viewer.js.map +1 -1
  13. package/dist/src/filter-bar/components/filter-input.mobile.js +1 -1
  14. package/dist/src/filter-bar/components/filter-input.mobile.js.map +1 -1
  15. package/dist/src/filter-bar/components/filter-summary.js +1 -1
  16. package/dist/src/filter-bar/components/filter-summary.js.map +1 -1
  17. package/dist/src/filter-bar/components/popper-custom.js +1 -1
  18. package/dist/src/filter-bar/components/popper-custom.js.map +1 -1
  19. package/dist/src/filter-bar/components/ui.units.js +1 -1
  20. package/dist/src/filter-bar/components/ui.units.js.map +1 -1
  21. package/dist/src/filter-bar/convert-to-graphql.js +1 -1
  22. package/dist/src/filter-bar/convert-to-graphql.js.map +1 -1
  23. package/dist/src/filter-bar/index.create.js +1 -1
  24. package/dist/src/filter-bar/index.create.js.map +1 -1
  25. package/dist/src/filter-bar/index.dino.js +1 -1
  26. package/dist/src/filter-bar/index.dino.js.map +1 -1
  27. package/dist/src/filter-bar/menu/create-form-field-datetime.js +2 -0
  28. package/dist/src/filter-bar/menu/create-form-field-datetime.js.map +1 -0
  29. package/dist/src/filter-bar/menu/create-form-field-select-multiple.js +1 -1
  30. package/dist/src/filter-bar/menu/create-form-field-select-multiple.js.map +1 -1
  31. package/dist/src/filter-bar/menu/create-form-field-select.js +1 -1
  32. package/dist/src/filter-bar/menu/create-form-field-select.js.map +1 -1
  33. package/dist/src/filter-bar/menu/create-form-field-string.js +1 -1
  34. package/dist/src/filter-bar/menu/create-form-field-string.js.map +1 -1
  35. package/dist/src/filter-bar/menu/create.js +1 -1
  36. package/dist/src/filter-bar/menu/create.js.map +1 -1
  37. package/dist/src/filter-bar/types.js.map +1 -1
  38. package/dist/src/form/create.form-grid-layout.units.js +1 -1
  39. package/dist/src/form/create.form-grid-layout.units.js.map +1 -1
  40. package/dist/src/table/create.table.js +1 -1
  41. package/dist/src/table/create.table.js.map +1 -1
  42. package/dist/src/table/helpers.js +1 -1
  43. package/dist/src/table/helpers.js.map +1 -1
  44. package/dist/src/table/styled.js +2 -0
  45. package/dist/src/table/styled.js.map +1 -0
  46. package/dist/src/table/toolbar-pannel.js +1 -1
  47. package/dist/src/table/toolbar-pannel.js.map +1 -1
  48. package/dist/table/index.js +1 -1
  49. package/dist/types/components/image-with-fallback.d.ts +7 -2
  50. package/dist/types/data-surface/helpers.d.ts +5 -3
  51. package/dist/types/data-surface/view-grid/helpers.d.ts +4 -0
  52. package/dist/types/data-surface/view-grid/hooks.d.ts +1 -0
  53. package/dist/types/data-surface/view-grid/types.d.ts +2 -0
  54. package/dist/types/filter-bar/components/filter-summary.types.d.ts +2 -1
  55. package/dist/types/filter-bar/components/hint-icon.types.d.ts +1 -1
  56. package/dist/types/filter-bar/components/popper-custom.d.ts +1 -0
  57. package/dist/types/filter-bar/components/ui.units.d.ts +8 -1
  58. package/dist/types/filter-bar/index.d.ts +2 -0
  59. package/dist/types/filter-bar/index.dino.d.ts +2 -0
  60. package/dist/types/filter-bar/menu/create-form-field-datetime.d.ts +53 -0
  61. package/dist/types/filter-bar/menu/create-form-field-select-multiple.d.ts +19 -0
  62. package/dist/types/filter-bar/menu/create-form-field-select.d.ts +17 -0
  63. package/dist/types/filter-bar/menu/create-form-field-string.d.ts +16 -0
  64. package/dist/types/filter-bar/menu/create.d.ts +17 -0
  65. package/dist/types/filter-bar/menu/types.d.ts +12 -1
  66. package/dist/types/filter-bar/types.d.ts +3 -0
  67. package/dist/types/table/helpers.d.ts +0 -3
  68. package/dist/types/table/index.d.ts +1 -1
  69. package/dist/types/table/styled.d.ts +8 -0
  70. package/dist/types/table/toolbar-pannel.d.ts +5 -0
  71. package/package.json +1 -1
@@ -1,2 +1,2 @@
1
- import{defineProperty as o}from"../../_virtual/_rollupPluginBabelHelpers.js";import{jsxs as t,jsx as r}from"react/jsx-runtime";import{styled as i,Box as e,colors as a,Button as n}from"@mui/material";var m={root:"DinoFormGridLayout-root",form:"DinoFormGridLayout-form",bottomBar:"DinoFormGridLayout-bottomBar",autoHeight:"DinoFormGridLayout-autoHeight"},p=i(e)(function(t){var r=t.theme;return o({padding:r.spacing(2,1.5,0),maxHeight:"calc(100vh - ".concat(120,"px)"),overflowY:"auto",overflowX:"hidden"},"&.".concat(m.autoHeight),{maxHeight:"none",height:"fit-content",overflow:"visible"})});function l(){return function(o){return t(u,{className:m.bottomBar,children:[r(e,{sx:{flex:1},children:o.before}),r(n,{variant:"contained",type:"submit",size:"small",children:"Submit"})]})}}var u=i(e)({display:"flex",alignItems:"center",padding:"0 12px",boxShadow:"rgba(145, 158, 171, 0.2) 0px 0px 2px 0px,rgba(145, 158, 171, 0.12) 0px 12px 24px -4px",position:"sticky",bottom:0,backgroundColor:a.common.white,zIndex:1,height:"48px"});export{l as CreateFormBottomBar,u as FormBottomBarWrap,p as FormGridLayoutStyled,m as formGridLayoutClasses};
1
+ import{defineProperty as o}from"../../_virtual/_rollupPluginBabelHelpers.js";import{jsxs as t,jsx as r}from"react/jsx-runtime";import{styled as e,Box as i,Button as a}from"@mui/material";var n={root:"DinoFormGridLayout-root",form:"DinoFormGridLayout-form",bottomBar:"DinoFormGridLayout-bottomBar",autoHeight:"DinoFormGridLayout-autoHeight"},m=e(i)(function(t){var r=t.theme;return o({padding:r.spacing(2,1.5,0),maxHeight:"calc(100vh - ".concat(120,"px)"),overflowY:"auto",overflowX:"hidden"},"&.".concat(n.autoHeight),{maxHeight:"none",height:"fit-content",overflow:"visible"})});function p(){return function(o){return t(u,{className:n.bottomBar,children:[r(i,{sx:{flex:1},children:o.before}),r(a,{variant:"contained",type:"submit",size:"small",children:"Submit"})]})}}var u=e(i)(function(o){return{display:"flex",alignItems:"center",padding:"0 12px",boxShadow:"rgba(145, 158, 171, 0.2) 0px 0px 2px 0px,rgba(145, 158, 171, 0.12) 0px 12px 24px -4px",position:"sticky",bottom:0,backgroundColor:o.theme.palette.background.paper,zIndex:1,height:"48px"}});export{p as CreateFormBottomBar,u as FormBottomBarWrap,m as FormGridLayoutStyled,n as formGridLayoutClasses};
2
2
  //# sourceMappingURL=create.form-grid-layout.units.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"create.form-grid-layout.units.js","sources":["../../../src/form/create.form-grid-layout.units.tsx"],"sourcesContent":["import { FC, ReactNode } from 'react'\r\nimport { Box, Button, colors, styled } from '@mui/material'\r\nimport { IFormBase } from './types'\r\n\r\nexport const formGridLayoutClasses = {\r\n root: 'DinoFormGridLayout-root',\r\n form: 'DinoFormGridLayout-form',\r\n bottomBar: 'DinoFormGridLayout-bottomBar',\r\n // status\r\n autoHeight: 'DinoFormGridLayout-autoHeight'\r\n}\r\n\r\nexport const FormGridLayoutStyled = styled(Box)(({ theme }) => ({\r\n padding: theme.spacing(2, 1.5, 0),\r\n maxHeight: `calc(100vh - ${48 * 2 + 12 * 2}px)`,\r\n overflowY: 'auto',\r\n overflowX: 'hidden',\r\n [`&.${formGridLayoutClasses.autoHeight}`]: {\r\n maxHeight: 'none',\r\n height: 'fit-content',\r\n overflow: 'visible'\r\n }\r\n}))\r\n\r\nexport interface IFormBottomBarProps<T> extends IFormBase<T> {\r\n before?: ReactNode\r\n}\r\n\r\nexport function CreateFormBottomBar<T>() {\r\n const FormBottomBar: FC<IFormBottomBarProps<T>> = (props) => (\r\n <FormBottomBarWrap className={formGridLayoutClasses.bottomBar}>\r\n <Box sx={{ flex: 1 }}>{props.before}</Box>\r\n <Button variant='contained' type='submit' size='small'>\r\n Submit\r\n </Button>\r\n </FormBottomBarWrap>\r\n )\r\n return FormBottomBar\r\n}\r\n\r\nexport const FormBottomBarWrap = styled(Box)({\r\n display: 'flex',\r\n alignItems: 'center',\r\n padding: '0 12px',\r\n boxShadow: 'rgba(145, 158, 171, 0.2) 0px 0px 2px 0px,rgba(145, 158, 171, 0.12) 0px 12px 24px -4px',\r\n position: 'sticky',\r\n bottom: 0,\r\n backgroundColor: colors.common.white,\r\n zIndex: 1,\r\n height: '48px'\r\n})\r\n"],"names":["formGridLayoutClasses","root","form","bottomBar","autoHeight","FormGridLayoutStyled","styled","Box","_ref","theme","_defineProperty","padding","spacing","maxHeight","concat","overflowY","overflowX","height","overflow","CreateFormBottomBar","props","_jsxs","FormBottomBarWrap","className","children","_jsx","sx","flex","before","Button","variant","type","size","display","alignItems","boxShadow","position","bottom","backgroundColor","colors","common","white","zIndex"],"mappings":"uMAIO,IAAMA,EAAwB,CACnCC,KAAM,0BACNC,KAAM,0BACNC,UAAW,+BAEXC,WAAY,iCAGDC,EAAuBC,EAAOC,EAAPD,CAAY,SAAAE,GAAA,IAAGC,EAAKD,EAALC,MAAK,OAAAC,EAAA,CACtDC,QAASF,EAAMG,QAAQ,EAAG,IAAK,GAC/BC,UAAS,gBAAAC,OAAkB,IAAoB,OAC/CC,UAAW,OACXC,UAAW,UAAQ,KAAAF,OACbd,EAAsBI,YAAe,CACzCS,UAAW,OACXI,OAAQ,cACRC,SAAU,WACX,YAOaC,IASd,OARkD,SAACC,GAAK,OACtDC,EAACC,EAAiB,CAACC,UAAWvB,EAAsBG,UAClDqB,SAAA,CAAAC,EAAClB,EAAI,CAAAmB,GAAI,CAAEC,KAAM,GAAGH,SAAGJ,EAAMQ,SAC7BH,EAACI,EAAM,CAACC,QAAQ,YAAYC,KAAK,SAASC,KAAK,QAAOR,SAAA,aAIzD,CAEH,KAEaF,EAAoBhB,EAAOC,EAAPD,CAAY,CAC3C2B,QAAS,OACTC,WAAY,SACZvB,QAAS,SACTwB,UAAW,wFACXC,SAAU,SACVC,OAAQ,EACRC,gBAAiBC,EAAOC,OAAOC,MAC/BC,OAAQ,EACRzB,OAAQ"}
1
+ {"version":3,"file":"create.form-grid-layout.units.js","sources":["../../../src/form/create.form-grid-layout.units.tsx"],"sourcesContent":["import { FC, ReactNode } from 'react'\r\nimport { Box, Button, colors, styled } from '@mui/material'\r\nimport { IFormBase } from './types'\r\n\r\nexport const formGridLayoutClasses = {\r\n root: 'DinoFormGridLayout-root',\r\n form: 'DinoFormGridLayout-form',\r\n bottomBar: 'DinoFormGridLayout-bottomBar',\r\n // status\r\n autoHeight: 'DinoFormGridLayout-autoHeight'\r\n}\r\n\r\nexport const FormGridLayoutStyled = styled(Box)(({ theme }) => ({\r\n padding: theme.spacing(2, 1.5, 0),\r\n maxHeight: `calc(100vh - ${48 * 2 + 12 * 2}px)`,\r\n overflowY: 'auto',\r\n overflowX: 'hidden',\r\n [`&.${formGridLayoutClasses.autoHeight}`]: {\r\n maxHeight: 'none',\r\n height: 'fit-content',\r\n overflow: 'visible'\r\n }\r\n}))\r\n\r\nexport interface IFormBottomBarProps<T> extends IFormBase<T> {\r\n before?: ReactNode\r\n}\r\n\r\nexport function CreateFormBottomBar<T>() {\r\n const FormBottomBar: FC<IFormBottomBarProps<T>> = (props) => (\r\n <FormBottomBarWrap className={formGridLayoutClasses.bottomBar}>\r\n <Box sx={{ flex: 1 }}>{props.before}</Box>\r\n <Button variant='contained' type='submit' size='small'>\r\n Submit\r\n </Button>\r\n </FormBottomBarWrap>\r\n )\r\n return FormBottomBar\r\n}\r\n\r\nexport const FormBottomBarWrap = styled(Box)(({ theme }) => ({\r\n display: 'flex',\r\n alignItems: 'center',\r\n padding: '0 12px',\r\n boxShadow: 'rgba(145, 158, 171, 0.2) 0px 0px 2px 0px,rgba(145, 158, 171, 0.12) 0px 12px 24px -4px',\r\n position: 'sticky',\r\n bottom: 0,\r\n backgroundColor: theme.palette.background.paper,\r\n zIndex: 1,\r\n height: '48px'\r\n}))\r\n"],"names":["formGridLayoutClasses","root","form","bottomBar","autoHeight","FormGridLayoutStyled","styled","Box","_ref","theme","_defineProperty","padding","spacing","maxHeight","concat","overflowY","overflowX","height","overflow","CreateFormBottomBar","props","_jsxs","FormBottomBarWrap","className","children","_jsx","sx","flex","before","Button","variant","type","size","_ref3","display","alignItems","boxShadow","position","bottom","backgroundColor","palette","background","paper","zIndex"],"mappings":"2LAIO,IAAMA,EAAwB,CACnCC,KAAM,0BACNC,KAAM,0BACNC,UAAW,+BAEXC,WAAY,iCAGDC,EAAuBC,EAAOC,EAAPD,CAAY,SAAAE,GAAA,IAAGC,EAAKD,EAALC,MAAK,OAAAC,EAAA,CACtDC,QAASF,EAAMG,QAAQ,EAAG,IAAK,GAC/BC,UAAS,gBAAAC,OAAkB,IAAoB,OAC/CC,UAAW,OACXC,UAAW,UAAQ,KAAAF,OACbd,EAAsBI,YAAe,CACzCS,UAAW,OACXI,OAAQ,cACRC,SAAU,WACX,YAOaC,IASd,OARkD,SAACC,GAAK,OACtDC,EAACC,EAAiB,CAACC,UAAWvB,EAAsBG,UAClDqB,SAAA,CAAAC,EAAClB,EAAI,CAAAmB,GAAI,CAAEC,KAAM,GAAGH,SAAGJ,EAAMQ,SAC7BH,EAACI,EAAM,CAACC,QAAQ,YAAYC,KAAK,SAASC,KAAK,QAAOR,SAAA,aAIzD,CAEH,CAEO,IAAMF,EAAoBhB,EAAOC,EAAPD,CAAY,SAAA2B,GAAQ,MAAQ,CAC3DC,QAAS,OACTC,WAAY,SACZxB,QAAS,SACTyB,UAAW,wFACXC,SAAU,SACVC,OAAQ,EACRC,gBAPmDN,EAALxB,MAOvB+B,QAAQC,WAAWC,MAC1CC,OAAQ,EACR1B,OAAQ,OACT"}
@@ -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=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,disableExport:!0,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{inherits as e,createClass as o,objectSpread2 as r,classCallCheck as i,callSuper as a,defineProperty as t,toConsumableArray as l}from"../../_virtual/_rollupPluginBabelHelpers.js";import{jsx as n}from"react/jsx-runtime";import{Component as s,Fragment as d}from"react";import{DataGrid as u}from"@mui/x-data-grid";import{mergeObjects as p}from"../utils/helpers.js";import"../utils/dayjs-config.js";import"../utils/query-param.js";import{TableBaseContext as g}from"./context.js";import{customFilterOperators as m}from"./custom.filter-operators.js";import c from"./helpers.js";import f from"./toolbar-pannel.js";import{dinoTableClasses as h,TableStyled as v}from"./styled.js";import{GlobalModal as b,mapGlobalModalContext as y}from"../api-context/global-modal.js";function C(C){return function(){function P(e){var o;return i(this,P),o=a(this,P,[e]),t(o,"setTableQueryParams",function(e){o.tableQueryParams=p({},o.tableQueryParams,e)}),t(o,"renderWrapContext",function(e){var o=C.disableGlobalModalProvider?d:b;return n(o,{children:y(function(o){return n(g.Provider,{value:{showModal:o.show,closeModal:o.close},children:e})})})}),t(o,"getDataGridProps",function(){var e,r,i,a,t=c.mapInitialState(o.props.query,{columns:{columnVisibilityModel:C.columnVisibilityModel}}),l={getRowId:C.getRowId,initialState:t,columns:o.columns,rows:null!==(e=null===(r=o.props.data)||void 0===r?void 0:r.items)&&void 0!==e?e:[],checkboxSelection:!0,pagination:!0,density:null!==(i=null===(a=o.props.slots)||void 0===a?void 0:a.density)&&void 0!==i?i:"standard",filterDebounceMs:800,sx:{border:0},slots:{toolbar:o.mergeConfig.toolbar},rowSelectionModel:o.rowSelecteds,onRowSelectionModelChange:o.handleRowSelectionChange};if("server"===C.featureMode){var n,s,d={filterMode:"server",sortingMode:"server",paginationMode:"server",onPaginationModelChange:o.onPaginationModelChange,onFilterModelChange:o.onFilterModelChange,onSortModelChange:o.onSortModelChange,rowCount:null!==(n=null===(s=o.props.data)||void 0===s?void 0:s.rowTotal)&&void 0!==n?n:0,paginationModel:o.tableQueryParams.pagination,filterModel:o.tableQueryParams.filter,sortModel:c.mapSortModel(o.tableQueryParams.sort),loading:o.mergeConfig.loading};Object.assign(l,d)}return p(l,o.mergeConfig.dataGridProps)}),t(o,"initialColumns",function(){var e,i,a=o.mergeConfig,t=a.ActionRow,s=a.disableActionRow,d=[];return t&&!0!==s&&d.push(r({field:"Actions",minWidth:100,headerAlign:"right",align:"right",filterable:!1,sortable:!1,disableExport:!0,renderCell:function(e){return n(t,{value:e.row})}},C.actionRow)),e=d,i=Object.keys(C.columns).map(function(e){var o=r({field:e},C.columns[e]);return o.filterOperators=C.filterOperators?C.filterOperators(o):m(o),o}),e&&e.length>0&&i.push.apply(i,l(e)),i}),t(o,"onPaginationModelChange",function(e,r){o.mergeConfig.loading||(o.setTableQueryParams({pagination:e,detail:"pagination"}),o.handleChange())}),t(o,"onFilterModelChange",function(e,r){var i;if(!o.mergeConfig.loading){var a=o.tableQueryParams.pagination;o.setTableQueryParams({filter:e,pagination:{page:0,pageSize:null!==(i=null==a?void 0:a.pageSize)&&void 0!==i?i:25},detail:c.detectSearchType(e)}),o.handleChange()}}),t(o,"onSortModelChange",function(e,r){if(!o.mergeConfig.loading){var i,a,t,l,n,s=e,d=o.tableQueryParams.sort;if(null!=d&&d.length&&!s.length)if((null==d||null===(i=d[0])||void 0===i?void 0:i.field)===(null===(a=o.defaultTableQueryParams.sort)||void 0===a||null===(a=a[0])||void 0===a?void 0:a.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=o.defaultTableQueryParams.sort)&&void 0!==n?n:[];o.setTableQueryParams({sort:s,detail:"sort"}),o.handleChange()}}),t(o,"handleChange",function(){o.changeTimeout&&clearTimeout(o.changeTimeout),o.changeTimeout=setTimeout(function(){o.props.onChange&&o.props.onChange(o.tableQueryParams)},300)}),t(o,"handleRowSelectionChange",function(e,r){o.mergeConfig.maxSelcion&&e.length>o.mergeConfig.maxSelcion?o.rowSelecteds=e.slice(0,o.mergeConfig.maxSelcion):o.rowSelecteds=e,o.props.onRowSelectionChange&&o.props.onRowSelectionChange(o.rowSelecteds,r),o.forceUpdate()}),o.columns=o.initialColumns(),o.tableQueryParams=r({},e.query),o.defaultTableQueryParams=o.tableQueryParams,o.rowSelecteds=[],o}return e(P,s),o(P,[{key:"mergeConfig",get:function(){var e,o,i,a,t,l,s,d,u,g,m=p({},null==C?void 0:C.toolbarProps,null===(e=this.props.slots)||void 0===e?void 0:e.toolbarProps);return{toolbar:null!==(o=null===(i=this.props.slots)||void 0===i?void 0:i.toolbar)&&void 0!==o?o:function(){return n(f,r({},m))},ActionRow:null===(a=this.props.slots)||void 0===a?void 0:a.actionRow,disableActionRow:C.disableActionRow,columnVisibilityModel:C.columnVisibilityModel,maxSelcion:null!==(t=null===(l=this.props.slots)||void 0===l?void 0:l.maxSelection)&&void 0!==t?t:C.maxSelection,dataGridProps:p({},C.dataGridProps,null===(s=this.props.slots)||void 0===s?void 0:s.dataGridProps),wrapProps:p({},C.wrapProps,null===(d=this.props.slots)||void 0===d?void 0:d.wrapProps),loading:null!==(u=void 0!==this.props.loading?this.props.loading:null===(g=this.tableQueryParams)||void 0===g?void 0:g.loading)&&void 0!==u&&u}}},{key:"componentWillUnmount",value:function(){this.changeTimeout&&clearTimeout(this.changeTimeout)}},{key:"shouldComponentUpdate",value:function(e){var o;return"server"!==C.featureMode||(c.equalTableQueryParams(e.query,this.props.query)?JSON.stringify(e.data)!==JSON.stringify(this.props.data)||e.loading!==this.props.loading:(this.setTableQueryParams(null!==(o=e.query)&&void 0!==o?o:{}),!0))}},{key:"render",value:function(){var e,o=[h.root,null===(e=this.mergeConfig.wrapProps)||void 0===e?void 0:e.className];return this.renderWrapContext(n(v,r(r({},this.mergeConfig.wrapProps),{},{className:o.filter(function(e){return!!e}).join(" "),children:n(u,r({loading:this.props.loading},this.getDataGridProps()))})))}}])}()}export{C as CreateTable,C 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 } 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 disableExport: true,\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","disableExport","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":"ozBA+CM,SAAUA,EAAyCC,GAiMvD,kBA9KE,SAAAC,EAAYC,GAAqB,IAAAC,EAKT,OALSC,OAAAH,GAC/BE,EAAAE,EAAAJ,KAAAA,GAAMC,IAAMI,EAAAH,EAqBQ,sBAAA,SAACI,GACrBJ,EAAKK,iBAAmBC,EAAa,CAAE,EAAEN,EAAKK,iBAAkBD,KACjED,EAAAH,EAiCmB,oBAAA,SAACO,GACnB,IAAMC,EAAgBX,EAAOY,2BAA6BC,EAAWC,EACrE,OACEC,EAACJ,EACE,CAAAD,SAAAM,EAAsB,SAACC,GAAO,OAC7BF,EAACG,EAAiBC,UAASZ,MAAO,CAAEa,UAAWH,EAAQI,KAAMC,WAAYL,EAAQM,gBAAUb,GAC5F,OAGNJ,EAAAH,EAAA,mBAEkB,WAAuB,IAAAqB,EAAAC,EAAAC,EAAAC,EAClCC,EAAeC,EAAYC,gBAAgB3B,EAAKD,MAAM6B,MAAO,CACjEC,QAAS,CAAEC,sBAAuBjC,EAAOiC,yBAErCC,EAAwB,CAC5BC,SAAUnC,EAAOmC,SACjBP,aAAAA,EACAI,QAAS7B,EAAK6B,QACdI,aAAIZ,UAAAC,EAAEtB,EAAKD,MAAMmC,YAAI,IAAAZ,OAAA,EAAfA,EAAiBa,aAAK,IAAAd,EAAAA,EAAI,GAChCe,mBAAmB,EACnBC,YAAY,EACZC,gBAAOf,UAAAC,EAAExB,EAAKD,MAAMwC,aAAK,IAAAf,OAAA,EAAhBA,EAAkBc,eAAO,IAAAf,EAAAA,EAAI,WACtCiB,iBAAkB,IAClBC,GAAI,CAAEC,OAAQ,GACdH,MAAO,CAAEI,QAAS3C,EAAK4C,YAAYD,SACnCE,kBAAmB7C,EAAK8C,aACxBC,0BAA2B/C,EAAKgD,0BAElC,GAA2B,WAAvBnD,EAAOoD,YAA0B,CAAA,IAAAC,EAAAC,EAC7BC,EAAuC,CAC3CC,WAAY,SACZC,YAAa,SACbC,eAAgB,SAChBC,wBAAyBxD,EAAKwD,wBAC9BC,oBAAqBzD,EAAKyD,oBAC1BC,kBAAmB1D,EAAK0D,kBACxBC,iBAAQT,UAAAC,EAAEnD,EAAKD,MAAMmC,YAAI,IAAAiB,OAAA,EAAfA,EAAiBS,gBAAQ,IAAAV,EAAAA,EAAI,EACvCW,gBAAiB7D,EAAKK,iBAAiBgC,WACvCyB,YAAa9D,EAAKK,iBAAiB0D,OACnCC,UAAWtC,EAAYuC,aAAajE,EAAKK,iBAAiB6D,MAC1DC,QAASnE,EAAK4C,YAAYuB,SAE5BC,OAAOC,OAAOtC,EAAKqB,EACpB,CACD,OAAO9C,EAAayB,EAAK/B,EAAK4C,YAAY0B,iBAC3CnE,EAAAH,EAAA,iBAEgB,WACf,IA5HqBuE,EACjB1C,EA2HJ2C,EAAwCxE,EAAK4C,YAArC6B,EAASD,EAATC,UAAWC,EAAgBF,EAAhBE,iBACbC,EAAwB,GAc9B,OAbMF,IAAkC,IAArBC,GACjBC,EAAKC,KAAIC,EAAA,CACPC,MAAO,UACPC,SAAU,IACVC,YAAa,QACbC,MAAO,QACPC,YAAY,EACZC,UAAU,EACVC,eAAe,EACfC,WAAY,SAACjF,GAAK,OAAKQ,EAAC6D,EAAS,CAACrE,MAAOA,EAAMkF,KAAO,GACnDzF,EAAO0F,YAxIOhB,EA2IEI,EA1InB9C,EAAUuC,OAAOoB,KAAK3F,EAAOgC,SAAS4D,IAAgB,SAACC,GAC3D,IAAM3D,EAAG8C,EAAA,CAAKC,MAAOY,GAAQ7F,EAAOgC,QAAQ6D,IAE5C,OADA3D,EAAI4D,gBAAkB9F,EAAO8F,gBAAkB9F,EAAO8F,gBAAgB5D,GAAO6D,EAAsB7D,GAC5FA,CACT,GAEMwC,GAAiBA,EAAcsB,OAAS,GAAGhE,EAAQ+C,KAAIkB,MAAZjE,EAAOkE,EAASxB,IAC1D1C,IAoIN1B,EAAAH,EAAA,0BAEyB,SAACgG,EAA4BC,GACjDjG,EAAK4C,YAAYuB,UACrBnE,EAAKkG,oBAAoB,CAAE7D,WAAY2D,EAAOG,OAAQ,eACtDnG,EAAKoG,kBACNjG,EAAAH,EAAA,sBAEqB,SAACgG,EAAwBC,GAA0C,IAAAI,EACvF,IAAIrG,EAAK4C,YAAYuB,QAArB,CACA,IAAQ9B,EAAerC,EAAKK,iBAApBgC,WACRrC,EAAKkG,oBAAoB,CACvBnC,OAAQiC,EACR3D,WAAY,CAAEiE,KAAM,EAAGC,SAA8B,QAAtBF,EAAEhE,aAAU,EAAVA,EAAYkE,gBAAQ,IAAAF,EAAAA,EAAI,IACzDF,OAAQzE,EAAY8E,iBAAiBR,KAEvChG,EAAKoG,cAPyB,IAQ/BjG,EAAAH,EAAA,oBAEmB,SAACgG,EAAsBC,GACzC,IAAIjG,EAAK4C,YAAYuB,QAArB,CACA,IAEyCsC,EAAAC,EACiCC,EAAAC,EAEjEC,EALLC,EAAYd,EACR9B,EAASlE,EAAKK,iBAAd6D,KACR,GAAMA,SAAAA,EAAM2B,SAAWiB,EAAUjB,OAC/B,IAAI3B,iBAAIuC,EAAJvC,EAAO,UAAE,IAAAuC,OAAA,EAATA,EAAW3B,kBAAK4B,EAAK1G,EAAK+G,wBAAwB7C,YAAI,IAAAwC,GAAKA,QAALA,EAAjCA,EAAoC,cAAEA,SAAtCA,EAAwC5B,OAC/DgC,EAAY,CAAC,CAAEhC,MAAc,QAAT6B,EAAEzC,EAAK,UAAE,IAAAyC,OAAA,EAAPA,EAAS7B,MAAOZ,KAAwB,UAAX,QAAP0C,EAAA1C,EAAK,UAAE,IAAA0C,OAAA,EAAPA,EAAS1C,MAAkB,MAAQ,cAE/E4C,EAA6CD,QAApCA,EAAG7G,EAAK+G,wBAAwB7C,YAAI2C,IAAAA,EAAAA,EAAI,GAGrD7G,EAAKkG,oBAAoB,CAAEhC,KAAM4C,EAAWX,OAAQ,SACpDnG,EAAKoG,cAXyB,IAY/BjG,EAAAH,EAAA,eAEc,WACTA,EAAKgH,eAAeC,aAAajH,EAAKgH,eAC1ChH,EAAKgH,cAAgBE,WAAW,WAC9BlH,EAAKD,MAAMoH,UAAYnH,EAAKD,MAAMoH,SAASnH,EAAKK,iBACjD,EAAE,OACJF,EAAAH,EAAA,2BAE0B,SAACI,EAA8B6F,GACpDjG,EAAK4C,YAAYwE,YAAchH,EAAMyF,OAAS7F,EAAK4C,YAAYwE,WACjEpH,EAAK8C,aAAe1C,EAAMiH,MAAM,EAAGrH,EAAK4C,YAAYwE,YAEpDpH,EAAK8C,aAAe1C,EAEtBJ,EAAKD,MAAMuH,sBAAwBtH,EAAKD,MAAMuH,qBAAqBtH,EAAK8C,aAAcmD,GACtFjG,EAAKuH,gBAxKLvH,EAAK6B,QAAU7B,EAAKwH,iBACpBxH,EAAKK,iBAAgBwE,KAAQ9E,EAAM6B,OACnC5B,EAAK+G,wBAA0B/G,EAAKK,iBACpCL,EAAK8C,aAAe,GAAE9C,CACxB,CAAC,OAAAyH,EAAA3H,EAbiB4H,GAajBC,EAAA7H,EAAA,CAAA,CAAA4F,IAAA,cAAAkC,IAED,WAAe,IAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EACPC,EAAqBjI,EAAa,CAAA,EAAIT,aAAAA,EAAAA,EAAQ2I,aAA8BX,QAAlBA,EAAEY,KAAK1I,MAAMwC,aAAXsF,IAAgBA,OAAhBA,EAAAA,EAAkBW,cACpF,MAAO,CACL7F,gBAAOmF,UAAAC,EAAEU,KAAK1I,MAAMwC,aAAK,IAAAwF,OAAA,EAAhBA,EAAkBpF,eAAO,IAAAmF,EAAAA,EAAK,WAAA,OAAMlH,EAAC8H,EAAa7D,EAAK0D,CAAAA,EAAAA,GAAuB,EACvF9D,UAA2BuD,QAAlBA,EAAES,KAAK1I,MAAMwC,aAAXyF,IAAgBA,OAAhBA,EAAAA,EAAkBzC,UAC7Bb,iBAAkB7E,EAAO6E,iBACzB5C,sBAAuBjC,EAAOiC,sBAC9BsF,WAA0Ca,QAAhCA,EAAkB,QAAlBC,EAAEO,KAAK1I,MAAMwC,aAAX2F,IAAgBA,OAAhBA,EAAAA,EAAkBS,wBAAYV,EAAAA,EAAIpI,EAAO8I,aACrDrE,cAAehE,EAAa,CAAE,EAAET,EAAOyE,cAA+B,QAAlB6D,EAAEM,KAAK1I,MAAMwC,aAAX4F,IAAgBA,OAAhBA,EAAAA,EAAkB7D,eACxEsE,UAAWtI,EAAa,CAAE,EAAET,EAAO+I,UAA2B,QAAlBR,EAAEK,KAAK1I,MAAMwC,aAAX6F,IAAgBA,OAAhBA,EAAAA,EAAkBQ,WAChEzE,QAAgG,QAAzFkE,OAA0BQ,IAAvBJ,KAAK1I,MAAMoE,QAAwBsE,KAAK1I,MAAMoE,gBAAOmE,EAAGG,KAAKpI,wBAAgB,IAAAiI,OAAA,EAArBA,EAAuBnE,eAAO,IAAAkE,GAAAA,EAEpG,GAAC,CAAA3C,IAAA,uBAAAtF,MAMD,WACMqI,KAAKzB,eACPC,aAAawB,KAAKzB,cAEtB,GAAC,CAAAtB,IAAA,wBAAAtF,MAED,SAAsB0I,GAGyD,IAAAC,EAF7E,MAA2B,WAAvBlJ,EAAOoD,cAEJvB,EAAYsH,sBAAsBF,EAAUlH,MAAO6G,KAAK1I,MAAM6B,OAK/DqH,KAAKC,UAAUJ,EAAU5G,QAAU+G,KAAKC,UAAUT,KAAK1I,MAAMmC,OAAS4G,EAAU3E,UAAYsE,KAAK1I,MAAMoE,SAJzGsE,KAAKvC,oBAAmC,QAAhB6C,EAACD,EAAUlH,aAAKmH,IAAAA,EAAAA,EAAI,KACrC,GAUb,GAAC,CAAArD,IAAA,SAAAtF,MAED,WACE,OAAOqI,KAAKU,kBACVvI,EAACwI,EAAIvE,EAAAA,EAAK,CAAA,EAAA4D,KAAK7F,YAAYgG,WAAS,CAAA,EAAA,UAClChI,EAACyI,EAAQxE,EAAA,CAACV,QAASsE,KAAK1I,MAAMoE,SAAasE,KAAKa,wBAGtD,IAAC,GAwHL,CAIA,IAAMF,EAAOG,EAAO,SAAAC,GAAA,IAAGjJ,EAAQiJ,EAARjJ,SAAakJ,EAACC,EAAAF,EAAAG,GAAA,OACnC/I,EAACgJ,EAAG/E,EAAAA,KAAK4E,GAAC,GAAA,CAAAlJ,SACRK,EAAM,MAAA,CAAAL,SAAAA,MACF,EAHKgJ,CAIXpJ,EAAAA,EAAA,CACA0J,KAAM,EACNC,SAAU,WACV,UAAW,CACTA,SAAU,WACVC,IAAK,EACLC,KAAM,EACNC,MAAO,OACPC,OAAQ,OACRC,UAAW,QAEb,oBAAqB,CACnB,6BAA8B,EAC9BC,SAAU,WACX,qBAAAC,OACqBC,EAAiBC,cAA2C,6BAAA,CAChFC,WAAY,QAEkB,6BAAA,CAC9BC,aAAc"}
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 from './helpers'\r\nimport ToolbarPannel, { IToolbarPannelProps } from './toolbar-pannel'\r\nimport { dinoTableClasses, TableStyled } from './styled'\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 const rootClasses = [dinoTableClasses.root, this.mergeConfig.wrapProps?.className]\r\n return this.renderWrapContext(\r\n <TableStyled {...this.mergeConfig.wrapProps} className={rootClasses.filter((x) => !!x).join(' ')}>\r\n <DataGrid loading={this.props.loading} {...this.getDataGridProps()} />\r\n </TableStyled>\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 disableExport: true,\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"],"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","disableExport","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","_this$mergeConfig$wra","rootClasses","dinoTableClasses","root","className","renderWrapContext","TableStyled","x","join","DataGrid","getDataGridProps"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{createClass as t,classCallCheck as e,defineProperty as r,objectSpread2 as i}from"../../_virtual/_rollupPluginBabelHelpers.js";import{encodeBase64 as l,tryParseObject as a,decodeBase64 as n}from"../utils/helpers.js";import"../utils/dayjs-config.js";import{QueryParam as u}from"../utils/query-param.js";var s={whiteSpacePre:"white-space-pre-wrap"},o=new(t(function t(){var s=this;e(this,t),r(this,"extractTableQueryParams",function(t){return t?{pagination:t.pagination,filter:t.filter,sort:t.sort,loading:t.loading}:{}}),r(this,"isEmpty",function(t,e){var r,i=s.extractTableQueryParams(t),l=!i.filter||i.filter.items.filter(function(t){return!!t.value}).length<1,a=!(null!==(r=t.filter)&&void 0!==r&&r.quickFilterValues)||t.filter.quickFilterValues.length<1;return l||a}),r(this,"equalTableQueryParams",function(t,e){return JSON.stringify(s.extractTableQueryParams(t))===JSON.stringify(s.extractTableQueryParams(e))}),r(this,"mapInitialState",function(t,e){return t?i({pagination:{paginationModel:t.pagination},filter:{filterModel:t.filter},sorting:{sortModel:s.mapSortModel(t.sort)}},e):null!=e?e:{}}),r(this,"mapSortModel",function(t){return null==t?void 0:t.map(function(t){return{field:t.field.toString(),sort:t.sort}})}),r(this,"detectSearchType",function(t){var e=t.quickFilterValues&&t.quickFilterValues.length>0,r=t.items&&t.items.length>0;return e&&!r?"quickSearch":r?"filter":void 0}),r(this,"extractToUrlQuery",function(t){var e,r=t.filter,i={filter:r,sort:t.sort,pagination:t.pagination},l=!(null!=r&&null!==(e=r.quickFilterValues)&&void 0!==e&&e.filter(function(t){return!!t}).length);return null!=r&&r.items.length||!l||(i.filter=void 0),i}),r(this,"equals",function(t,e){return JSON.stringify(s.extractToUrlQuery(t))===JSON.stringify(s.extractToUrlQuery(e))}),r(this,"setUrlQuery",function(t,e){try{if(s.equals(t,e))u.deletes("table");else{var r=s.extractToUrlQuery(t),i={table:l(JSON.stringify(r))};u.patch(i)}}catch(t){console.log("Set URL Query error:",t)}}),r(this,"getUrlQuery",function(t){var e,r=u.getAll();if(null==r||!r.table)return t;var i=a(n(null!==(e=r.table)&&void 0!==e?e:""),{});return Object.keys(i).length<1?t:i})}));export{o as default,s as dinoTableClasses};
1
+ import{createClass as t,classCallCheck as r,defineProperty as e,objectSpread2 as i}from"../../_virtual/_rollupPluginBabelHelpers.js";import{encodeBase64 as l,tryParseObject as a,decodeBase64 as n}from"../utils/helpers.js";import"../utils/dayjs-config.js";import{QueryParam as u}from"../utils/query-param.js";var s=new(t(function t(){var s=this;r(this,t),e(this,"extractTableQueryParams",function(t){return t?{pagination:t.pagination,filter:t.filter,sort:t.sort,loading:t.loading}:{}}),e(this,"isEmpty",function(t,r){var e,i=s.extractTableQueryParams(t),l=!i.filter||i.filter.items.filter(function(t){return!!t.value}).length<1,a=!(null!==(e=t.filter)&&void 0!==e&&e.quickFilterValues)||t.filter.quickFilterValues.length<1;return l||a}),e(this,"equalTableQueryParams",function(t,r){return JSON.stringify(s.extractTableQueryParams(t))===JSON.stringify(s.extractTableQueryParams(r))}),e(this,"mapInitialState",function(t,r){return t?i({pagination:{paginationModel:t.pagination},filter:{filterModel:t.filter},sorting:{sortModel:s.mapSortModel(t.sort)}},r):null!=r?r:{}}),e(this,"mapSortModel",function(t){return null==t?void 0:t.map(function(t){return{field:t.field.toString(),sort:t.sort}})}),e(this,"detectSearchType",function(t){var r=t.quickFilterValues&&t.quickFilterValues.length>0,e=t.items&&t.items.length>0;return r&&!e?"quickSearch":e?"filter":void 0}),e(this,"extractToUrlQuery",function(t){var r,e=t.filter,i={filter:e,sort:t.sort,pagination:t.pagination},l=!(null!=e&&null!==(r=e.quickFilterValues)&&void 0!==r&&r.filter(function(t){return!!t}).length);return null!=e&&e.items.length||!l||(i.filter=void 0),i}),e(this,"equals",function(t,r){return JSON.stringify(s.extractToUrlQuery(t))===JSON.stringify(s.extractToUrlQuery(r))}),e(this,"setUrlQuery",function(t,r){try{if(s.equals(t,r))u.deletes("table");else{var e=s.extractToUrlQuery(t),i={table:l(JSON.stringify(e))};u.patch(i)}}catch(t){console.log("Set URL Query error:",t)}}),e(this,"getUrlQuery",function(t){var r,e=u.getAll();if(null==e||!e.table)return t;var i=a(n(null!==(r=e.table)&&void 0!==r?r:""),{});return Object.keys(i).length<1?t:i})}));export{s as default};
2
2
  //# sourceMappingURL=helpers.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.js","sources":["../../../src/table/helpers.ts"],"sourcesContent":["import { GridFilterModel, GridSortItem, GridSortModel } from '@mui/x-data-grid'\r\nimport { GridInitialStateCommunity } from '@mui/x-data-grid/models/gridStateCommunity'\r\nimport { ICustomGridSortModel, ITableQueryParams, ITableQueryDetail } from './types'\r\nimport { decodeBase64, encodeBase64, QueryParam, tryParseObject } from '../utils'\r\n\r\nexport const dinoTableClasses = {\r\n whiteSpacePre: 'white-space-pre-wrap'\r\n}\r\n\r\nexport interface ITableQueryParamModel {\r\n table?: string\r\n}\r\n\r\nclass TableHelperBase {\r\n private extractTableQueryParams = <T>(data?: ITableQueryParams<T>): ITableQueryParams<T> => {\r\n if (!data) return {}\r\n const { pagination, filter, sort, loading } = data\r\n return { pagination, filter, sort, loading }\r\n }\r\n\r\n isEmpty = <T>(value: ITableQueryParams<T>, defaultValue?: ITableQueryParams<T>): boolean => {\r\n const obj = this.extractTableQueryParams<T>(value)\r\n const check1 = !obj.filter || obj.filter.items.filter((x) => !!x.value).length < 1\r\n const check2 = !value.filter?.quickFilterValues || value.filter.quickFilterValues.length < 1\r\n // const check3 =\r\n return check1 || check2\r\n }\r\n\r\n equalTableQueryParams = <T>(ti1?: ITableQueryParams<T>, ti2?: ITableQueryParams<T>): boolean => {\r\n return JSON.stringify(this.extractTableQueryParams<T>(ti1)) === JSON.stringify(this.extractTableQueryParams<T>(ti2))\r\n }\r\n\r\n mapInitialState = <T>(value?: ITableQueryParams<T>, initialState?: GridInitialStateCommunity): GridInitialStateCommunity => {\r\n if (!value) return initialState ?? {}\r\n return {\r\n pagination: { paginationModel: value.pagination },\r\n filter: { filterModel: value.filter as GridFilterModel },\r\n sorting: { sortModel: this.mapSortModel(value.sort) },\r\n ...initialState\r\n }\r\n }\r\n\r\n mapSortModel = <T>(value?: ICustomGridSortModel<T>): GridSortModel | undefined => {\r\n return value?.map<GridSortItem>((x) => ({ field: x.field.toString(), sort: x.sort }))\r\n }\r\n\r\n detectSearchType = (data: GridFilterModel): ITableQueryDetail => {\r\n const hasQuickSearch = data.quickFilterValues && data.quickFilterValues.length > 0\r\n const hasFilter = data.items && data.items.length > 0\r\n if (hasQuickSearch && !hasFilter) return 'quickSearch'\r\n if (hasFilter) return 'filter'\r\n }\r\n\r\n //#region Query Params\r\n private extractToUrlQuery = <TModel>(tableInfo: Partial<ITableQueryParams<TModel>>): Partial<ITableQueryParams<TModel>> => {\r\n const { filter, sort, pagination } = tableInfo\r\n const obj = { filter, sort, pagination }\r\n const isQuickSearchEmpty = !filter?.quickFilterValues?.filter((x) => !!x).length\r\n if (!filter?.items.length && isQuickSearchEmpty) {\r\n obj.filter = undefined\r\n }\r\n return obj\r\n }\r\n\r\n private equals = <TModel>(tableInfo: Partial<ITableQueryParams<TModel>>, tableInfoOld: Partial<ITableQueryParams<TModel>>) => {\r\n return JSON.stringify(this.extractToUrlQuery(tableInfo)) === JSON.stringify(this.extractToUrlQuery(tableInfoOld))\r\n }\r\n\r\n setUrlQuery = <TModel>(tableInfo: Partial<ITableQueryParams<TModel>>, defaultValue: ITableQueryParams<TModel>) => {\r\n try {\r\n if (!this.equals(tableInfo, defaultValue)) {\r\n const data = this.extractToUrlQuery(tableInfo)\r\n const tqp: ITableQueryParamModel = { table: encodeBase64(JSON.stringify(data)) }\r\n QueryParam.patch(tqp)\r\n } else {\r\n QueryParam.deletes<ITableQueryParamModel>('table')\r\n }\r\n } catch (error) {\r\n console.log('Set URL Query error:', error)\r\n }\r\n }\r\n\r\n getUrlQuery = <TModel>(defaultValue: ITableQueryParams<TModel>): ITableQueryParams<TModel> => {\r\n const temp = QueryParam.getAll() as ITableQueryParamModel\r\n if (!temp?.table) return defaultValue\r\n const data = tryParseObject<ITableQueryParams<TModel>>(decodeBase64(temp.table ?? ''), {})\r\n if (Object.keys(data).length < 1) return defaultValue\r\n return data\r\n }\r\n //#endregion\r\n}\r\n\r\nconst TableHelper = new TableHelperBase()\r\nexport default TableHelper\r\n"],"names":["dinoTableClasses","whiteSpacePre","TableHelper","_createClass","TableHelperBase","_this","this","_classCallCheck","_defineProperty","data","pagination","filter","sort","loading","value","defaultValue","_value$filter","obj","extractTableQueryParams","check1","items","x","length","check2","quickFilterValues","ti1","ti2","JSON","stringify","initialState","_objectSpread","paginationModel","filterModel","sorting","sortModel","mapSortModel","map","field","toString","hasQuickSearch","hasFilter","tableInfo","_filter$quickFilterVa","isQuickSearchEmpty","undefined","tableInfoOld","extractToUrlQuery","equals","QueryParam","deletes","tqp","table","encodeBase64","patch","error","console","log","_temp$table","temp","getAll","tryParseObject","decodeBase64","Object","keys"],"mappings":"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"}
1
+ {"version":3,"file":"helpers.js","sources":["../../../src/table/helpers.ts"],"sourcesContent":["import { GridFilterModel, GridSortItem, GridSortModel } from '@mui/x-data-grid'\r\nimport { GridInitialStateCommunity } from '@mui/x-data-grid/models/gridStateCommunity'\r\nimport { ICustomGridSortModel, ITableQueryParams, ITableQueryDetail } from './types'\r\nimport { decodeBase64, encodeBase64, QueryParam, tryParseObject } from '../utils'\r\n\r\nexport interface ITableQueryParamModel {\r\n table?: string\r\n}\r\n\r\nclass TableHelperBase {\r\n private extractTableQueryParams = <T>(data?: ITableQueryParams<T>): ITableQueryParams<T> => {\r\n if (!data) return {}\r\n const { pagination, filter, sort, loading } = data\r\n return { pagination, filter, sort, loading }\r\n }\r\n\r\n isEmpty = <T>(value: ITableQueryParams<T>, defaultValue?: ITableQueryParams<T>): boolean => {\r\n const obj = this.extractTableQueryParams<T>(value)\r\n const check1 = !obj.filter || obj.filter.items.filter((x) => !!x.value).length < 1\r\n const check2 = !value.filter?.quickFilterValues || value.filter.quickFilterValues.length < 1\r\n // const check3 =\r\n return check1 || check2\r\n }\r\n\r\n equalTableQueryParams = <T>(ti1?: ITableQueryParams<T>, ti2?: ITableQueryParams<T>): boolean => {\r\n return JSON.stringify(this.extractTableQueryParams<T>(ti1)) === JSON.stringify(this.extractTableQueryParams<T>(ti2))\r\n }\r\n\r\n mapInitialState = <T>(value?: ITableQueryParams<T>, initialState?: GridInitialStateCommunity): GridInitialStateCommunity => {\r\n if (!value) return initialState ?? {}\r\n return {\r\n pagination: { paginationModel: value.pagination },\r\n filter: { filterModel: value.filter as GridFilterModel },\r\n sorting: { sortModel: this.mapSortModel(value.sort) },\r\n ...initialState\r\n }\r\n }\r\n\r\n mapSortModel = <T>(value?: ICustomGridSortModel<T>): GridSortModel | undefined => {\r\n return value?.map<GridSortItem>((x) => ({ field: x.field.toString(), sort: x.sort }))\r\n }\r\n\r\n detectSearchType = (data: GridFilterModel): ITableQueryDetail => {\r\n const hasQuickSearch = data.quickFilterValues && data.quickFilterValues.length > 0\r\n const hasFilter = data.items && data.items.length > 0\r\n if (hasQuickSearch && !hasFilter) return 'quickSearch'\r\n if (hasFilter) return 'filter'\r\n }\r\n\r\n //#region Query Params\r\n private extractToUrlQuery = <TModel>(tableInfo: Partial<ITableQueryParams<TModel>>): Partial<ITableQueryParams<TModel>> => {\r\n const { filter, sort, pagination } = tableInfo\r\n const obj = { filter, sort, pagination }\r\n const isQuickSearchEmpty = !filter?.quickFilterValues?.filter((x) => !!x).length\r\n if (!filter?.items.length && isQuickSearchEmpty) {\r\n obj.filter = undefined\r\n }\r\n return obj\r\n }\r\n\r\n private equals = <TModel>(tableInfo: Partial<ITableQueryParams<TModel>>, tableInfoOld: Partial<ITableQueryParams<TModel>>) => {\r\n return JSON.stringify(this.extractToUrlQuery(tableInfo)) === JSON.stringify(this.extractToUrlQuery(tableInfoOld))\r\n }\r\n\r\n setUrlQuery = <TModel>(tableInfo: Partial<ITableQueryParams<TModel>>, defaultValue: ITableQueryParams<TModel>) => {\r\n try {\r\n if (!this.equals(tableInfo, defaultValue)) {\r\n const data = this.extractToUrlQuery(tableInfo)\r\n const tqp: ITableQueryParamModel = { table: encodeBase64(JSON.stringify(data)) }\r\n QueryParam.patch(tqp)\r\n } else {\r\n QueryParam.deletes<ITableQueryParamModel>('table')\r\n }\r\n } catch (error) {\r\n console.log('Set URL Query error:', error)\r\n }\r\n }\r\n\r\n getUrlQuery = <TModel>(defaultValue: ITableQueryParams<TModel>): ITableQueryParams<TModel> => {\r\n const temp = QueryParam.getAll() as ITableQueryParamModel\r\n if (!temp?.table) return defaultValue\r\n const data = tryParseObject<ITableQueryParams<TModel>>(decodeBase64(temp.table ?? ''), {})\r\n if (Object.keys(data).length < 1) return defaultValue\r\n return data\r\n }\r\n //#endregion\r\n}\r\n\r\nconst TableHelper = new TableHelperBase()\r\nexport default TableHelper\r\n"],"names":["TableHelper","_createClass","TableHelperBase","_this","this","_classCallCheck","_defineProperty","data","pagination","filter","sort","loading","value","defaultValue","_value$filter","obj","extractTableQueryParams","check1","items","x","length","check2","quickFilterValues","ti1","ti2","JSON","stringify","initialState","_objectSpread","paginationModel","filterModel","sorting","sortModel","mapSortModel","map","field","toString","hasQuickSearch","hasFilter","tableInfo","_filter$quickFilterVa","isQuickSearchEmpty","undefined","tableInfoOld","extractToUrlQuery","equals","QueryParam","deletes","tqp","table","encodeBase64","patch","error","console","log","_temp$table","temp","getAll","tryParseObject","decodeBase64","Object","keys"],"mappings":"oTAGiF,IAqF3EA,EAAc,IA/ECC,EAAA,SAAAC,IAAA,IAAAC,EAAAC,KAAAC,OAAAH,GAAAI,EAAAF,KAAA,0BACe,SAAIG,GACpC,OAAKA,EAEE,CAAEC,WADqCD,EAAtCC,WACaC,OADyBF,EAA1BE,OACSC,KADiBH,EAAlBG,KACOC,QADWJ,EAAZI,SADhB,CAAE,IAGrBL,EAESF,KAAA,UAAA,SAAIQ,EAA6BC,GAAgD,IAAAC,EACnFC,EAAMZ,EAAKa,wBAA2BJ,GACtCK,GAAUF,EAAIN,QAAUM,EAAIN,OAAOS,MAAMT,OAAO,SAACU,GAAC,QAAOA,EAAEP,QAAOQ,OAAS,EAC3EC,IAAsB,QAAbP,EAACF,EAAMH,cAAM,IAAAK,GAAZA,EAAcQ,oBAAqBV,EAAMH,OAAOa,kBAAkBF,OAAS,EAE3F,OAAOH,GAAUI,IAClBf,EAEuBF,KAAA,wBAAA,SAAImB,EAA4BC,GACtD,OAAOC,KAAKC,UAAUvB,EAAKa,wBAA2BO,MAAUE,KAAKC,UAAUvB,EAAKa,wBAA2BQ,MAChHlB,EAEiBF,KAAA,kBAAA,SAAIQ,EAA8Be,GAClD,OAAKf,EACLgB,EAAA,CACEpB,WAAY,CAAEqB,gBAAiBjB,EAAMJ,YACrCC,OAAQ,CAAEqB,YAAalB,EAAMH,QAC7BsB,QAAS,CAAEC,UAAW7B,EAAK8B,aAAarB,EAAMF,QAC3CiB,GALcA,QAAAA,EAAgB,CAAE,IAOtCrB,EAAAF,KAAA,eAEc,SAAIQ,GACjB,OAAOA,aAAK,EAALA,EAAOsB,IAAkB,SAACf,GAAC,MAAM,CAAEgB,MAAOhB,EAAEgB,MAAMC,WAAY1B,KAAMS,EAAET,KAAM,KACpFJ,EAAAF,KAAA,mBAEkB,SAACG,GAClB,IAAM8B,EAAiB9B,EAAKe,mBAAqBf,EAAKe,kBAAkBF,OAAS,EAC3EkB,EAAY/B,EAAKW,OAASX,EAAKW,MAAME,OAAS,EACpD,OAAIiB,IAAmBC,EAAkB,cACrCA,EAAkB,cAAtB,IAGFhC,EAAAF,KAAA,oBAC4B,SAASmC,GAAqF,IAAAC,EAChH/B,EAA6B8B,EAA7B9B,OACFM,EAAM,CAAEN,OAAAA,EAAQC,KADe6B,EAArB7B,KACYF,WADS+B,EAAf/B,YAEhBiC,IAAsBhC,SAAyB,QAAnB+B,EAAN/B,EAAQa,yBAARkB,IAAyBA,GAAzBA,EAA2B/B,OAAO,SAACU,GAAC,QAAOA,CAAC,GAAEC,QAI1E,OAHKX,SAAAA,EAAQS,MAAME,SAAUqB,IAC3B1B,EAAIN,YAASiC,GAER3B,IACRT,EAEgBF,KAAA,SAAA,SAASmC,EAA+CI,GACvE,OAAOlB,KAAKC,UAAUvB,EAAKyC,kBAAkBL,MAAgBd,KAAKC,UAAUvB,EAAKyC,kBAAkBD,MACpGrC,EAEaF,KAAA,cAAA,SAASmC,EAA+C1B,GACpE,IACE,GAAKV,EAAK0C,OAAON,EAAW1B,GAK1BiC,EAAWC,QAA+B,aALD,CACzC,IAAMxC,EAAOJ,EAAKyC,kBAAkBL,GAC9BS,EAA6B,CAAEC,MAAOC,EAAazB,KAAKC,UAAUnB,KACxEuC,EAAWK,MAAMH,EAClB,CAGF,CAAC,MAAOI,GACPC,QAAQC,IAAI,uBAAwBF,EACrC,IACF9C,EAAAF,KAAA,cAEa,SAASS,GAAsE,IAAA0C,EACrFC,EAAOV,EAAWW,SACxB,GAAKD,UAAAA,EAAMP,MAAO,OAAOpC,EACzB,IAAMN,EAAOmD,EAA0CC,EAAuBJ,QAAXA,EAACC,EAAKP,iBAAKM,EAAAA,EAAI,IAAK,CAAA,GACvF,OAAIK,OAAOC,KAAKtD,GAAMa,OAAS,EAAUP,EAClCN,GACR"}
@@ -0,0 +1,2 @@
1
+ import{objectWithoutProperties as e,objectSpread2 as i,defineProperty as r}from"../../_virtual/_rollupPluginBabelHelpers.js";import{jsx as t}from"react/jsx-runtime";import{styled as o,Box as a}from"@mui/material";var l=["children"],n={root:"DinoTable-root",whiteSpacePre:"DinoTable-white-space-pre-wrap"},p=o(function(r){var o=r.children,n=e(r,l);return t(a,i(i({},n),{},{children:t("div",{children:o})}))})(r(r({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(n.whiteSpacePre," .MuiDataGrid-cellContent"),{whiteSpace:"pre"}),".MuiTablePagination-root p",{marginBottom:0}));export{p as TableStyled,n as dinoTableClasses};
2
+ //# sourceMappingURL=styled.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"styled.js","sources":["../../../src/table/styled.tsx"],"sourcesContent":["import { Box, BoxProps, styled } from '@mui/material'\r\n\r\nexport const dinoTableClasses = {\r\n root: 'DinoTable-root',\r\n whiteSpacePre: 'DinoTable-white-space-pre-wrap'\r\n}\r\n\r\nexport const TableStyled = 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":["dinoTableClasses","root","whiteSpacePre","TableStyled","styled","_ref","children","p","_objectWithoutProperties","_excluded","_jsx","Box","_objectSpread","_defineProperty","flex","position","top","left","width","height","overflowY","overflow","concat","whiteSpace","marginBottom"],"mappings":"wOAEaA,EAAmB,CAC9BC,KAAM,iBACNC,cAAe,kCAGJC,EAAcC,EAAO,SAAAC,GAAA,IAAGC,EAAQD,EAARC,SAAaC,EAACC,EAAAH,EAAAI,GAAA,OACjDC,EAACC,EAAGC,EAAAA,KAAKL,GAAC,GAAA,CAAAD,SACRI,EAAM,MAAA,CAAAJ,SAAAA,MACF,EAHmBF,CAIzBS,EAAAA,EAAA,CACAC,KAAM,EACNC,SAAU,WACV,UAAW,CACTA,SAAU,WACVC,IAAK,EACLC,KAAM,EACNC,MAAO,OACPC,OAAQ,OACRC,UAAW,QAEb,oBAAqB,CACnB,6BAA8B,EAC9BC,SAAU,WACX,qBAAAC,OACqBtB,EAAiBE,cAA2C,6BAAA,CAChFqB,WAAY,QAEkB,6BAAA,CAC9BC,aAAc"}
@@ -1,2 +1,2 @@
1
- import{defineProperty as t,inherits as i,createClass as r,objectSpread2 as e,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,GridToolbarQuickFilter as m}from"@mui/x-data-grid";import{styled as u,Box as f,Typography as b}from"@mui/material";import{BtnFormCreate as v}from"./ui.buttons.js";import{CustomExportButton as g}from"./custom.export-button.js";import{Breadcrumbs as x}from"../components/breadcrumbs.js";import{HelpTooltip as T}from"../components/help-tooltip.js";var y=function(){function u(){var i;o(this,u);for(var r=arguments.length,c=new Array(r),p=0;p<r;p++)c[p]=arguments[p];return i=a(this,u,[].concat(c)),t(i,"renderTitle",function(){var t,r=i.props,o=r.title,a=r.afterTitle,c=r.breadcrumbs,p=r.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(b,{noWrap:!0,variant:"subtitle1",className:P.titleText,children:o})),c&&(h=l(x,{value:c})),n(f,e(e({},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(T,{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(b,{variant:"body2",children:t})},i)})})})}),i}return i(u,c),r(u,[{key:"render",value:function(){var t,i,r,o;return n(W,{className:P.root,sx:this.props.sx,children:[this.renderTitle(),this.props.aboveAction,n(f,e(e({className:P.actionsRow},this.props.actionWrapProps),{},{children:[n(f,{className:P.actionsLeft,children:[n(f,{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===(r=this.props.visibilityToolbar)||void 0===r?void 0:r.density)&&l(h,{}),!1!==(null===(o=this.props.visibilityToolbar)||void 0===o?void 0:o.export)&&l(g,{csvOptions:this.props.exportCsvOptions})]}),this.props.formCreate&&l(v,{children:this.props.formCreate}),this.props.afterAction]}),l(f,{className:P.actionsRight,children:n(f,{className:P.quickFilterWrap,children:[l(m,{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=u(f)(function(i){var r=i.theme;return t(t(t(t(t(t(t(t(t(t({padding:r.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"},r.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"}}),r.breakpoints.down("md"),{padding:r.spacing(1,1,0)})});export{y as default};
1
+ import{defineProperty as e,inherits as t,createClass as r,createForOfIteratorHelper as i,objectSpread2 as o,classCallCheck as n,callSuper as a}from"../../_virtual/_rollupPluginBabelHelpers.js";import{jsxs as l,Fragment as s,jsx as p}from"react/jsx-runtime";import{Component as c}from"react";import{GridToolbarColumnsButton as d,GridToolbarFilterButton as u,GridToolbarDensitySelector as m,GridToolbarQuickFilter as h}from"@mui/x-data-grid";import{styled as b,Box as f,GlobalStyles as v,Typography as x}from"@mui/material";import{BtnFormCreate as g}from"./ui.buttons.js";import{CustomExportButton as y}from"./custom.export-button.js";import{Breadcrumbs as T}from"../components/breadcrumbs.js";import{HelpTooltip as w}from"../components/help-tooltip.js";var P=function(){function b(){var t;n(this,b);for(var r=arguments.length,i=new Array(r),c=0;c<r;c++)i[c]=arguments[c];return t=a(this,b,[].concat(i)),e(t,"_popperObserver",null),e(t,"_elementObserver",null),e(t,"_observedPopper",null),e(t,"renderTitle",function(){var e,r=t.props,i=r.title,n=r.afterTitle,a=r.breadcrumbs,c=r.icon,d="".concat(_.titleWrap).concat(null!==(e=t.props.titleProps)&&void 0!==e&&e.className?" ".concat(t.props.titleProps.className):"");if(!(!!i||!!a||!!n))return p(s,{});var u=i;return"string"==typeof i&&(u=p(x,{noWrap:!0,variant:"subtitle1",className:_.titleText,children:i})),a&&(u=p(T,{value:a})),l(f,o(o({},t.props.titleProps),{},{className:d,children:[c&&p("div",{className:_.icon,children:c}),u,n]}))}),e(t,"renderEndAdornment",function(){return!t.props.searchInclude||t.props.searchInclude.length<=0?p(s,{}):p(w,{title:"The search includes",small:!0,children:p("ul",{className:_.searchHelp,children:t.props.searchInclude.map(function(e,t){return p("li",{children:p(x,{variant:"body2",children:e})},t)})})})}),t}return t(b,c),r(b,[{key:"componentDidMount",value:function(){var e=this;this._popperObserver=new MutationObserver(function(){var t=document.querySelector(".MuiDataGrid-panel");if(t&&window.matchMedia("(max-width:768px)").matches&&e._observedPopper!==t){e._observedPopper=t;var r=function(){var e=(t.style.transform||"").match(/translate3d\([^,]+,\s*([^,]+),\s*[^\)]+\)/),r=e?e[1].trim():"0px";t.style.transform="translate3d(8px, ".concat(r,", 0px)")};r(),e._elementObserver&&e._elementObserver.disconnect(),e._elementObserver=new MutationObserver(function(e){var o,n=i(e);try{for(n.s();!(o=n.n()).done;){if("style"===o.value.attributeName)(t.style.transform||"").startsWith("translate3d(8px")||r()}}catch(e){n.e(e)}finally{n.f()}}),e._elementObserver.observe(t,{attributes:!0,attributeFilter:["style"]})}}),this._popperObserver.observe(document.body,{childList:!0,subtree:!0})}},{key:"componentWillUnmount",value:function(){this._popperObserver&&(this._popperObserver.disconnect(),this._popperObserver=null),this._elementObserver&&(this._elementObserver.disconnect(),this._elementObserver=null),this._observedPopper=null}},{key:"render",value:function(){var e,t,r,i;return l(s,{children:[p(v,{styles:{"@media (max-width:768px)":{".MuiDataGrid-panel":{left:"8px !important",overflow:"hidden",maxWidth:"calc(100svw - 16px)",width:"100%",".MuiPaper-root, .MuiDataGrid-paper":{margin:"0 8px"},".MuiDataGrid-panelContent":{overflow:"auto",".MuiFormControl-root":{width:"auto"},".MuiDataGrid-filterFormValueInput":{width:"100px"}}}}}}),l(O,{className:_.root,sx:this.props.sx,children:[this.renderTitle(),this.props.aboveAction,l(f,o(o({className:_.actionsRow},this.props.actionWrapProps),{},{children:[l(f,{className:_.actionsLeft,children:[l(f,{className:_.gridToolbar,children:[!1!==(null===(e=this.props.visibilityToolbar)||void 0===e?void 0:e.columns)&&p(d,{}),!1!==(null===(t=this.props.visibilityToolbar)||void 0===t?void 0:t.filters)&&p(u,{}),!1!==(null===(r=this.props.visibilityToolbar)||void 0===r?void 0:r.density)&&p(m,{}),!1!==(null===(i=this.props.visibilityToolbar)||void 0===i?void 0:i.export)&&p(y,{csvOptions:this.props.exportCsvOptions})]}),this.props.formCreate&&p(g,{children:this.props.formCreate}),this.props.afterAction]}),p(f,{className:_.actionsRight,children:l(f,{className:_.quickFilterWrap,children:[p(h,{fullWidth:!0,variant:"standard",size:"small",debounceMs:800,quickFilterParser:function(e){return[e]}}),this.renderEndAdornment()]})})]})),this.props.belowAction]})]})}}])}(),_={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"},O=b(f)(function(t){var r=t.theme;return e(e(e(e(e(e(e(e(e(e({padding:r.spacing(1,2,0)},".".concat(_.actionsRow),{display:"flex",flexWrap:"wrap"}),".".concat(_.actionsLeft),{flex:1,display:"flex",alignItems:"center",flexWrap:"wrap"}),".".concat(_.actionsRight),e({display:"flex",gap:"8px",alignItems:"center",width:"auto"},r.breakpoints.down("md"),{width:"100%"})),".".concat(_.quickFilterWrap),{display:"flex",alignItems:"center"}),".".concat(_.gridToolbar),{padding:0}),".".concat(_.titleWrap),{height:"var(--height-table-topbar, 48px)",display:"flex",alignItems:"center"}),".".concat(_.titleText),{fontWeight:700,flex:1}),".".concat(_.icon),{marginRight:8,display:"flex",alignItems:"center",justifyContent:"center",flex:"0 0 auto"}),".".concat(_.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"}}),r.breakpoints.down("md"),{padding:r.spacing(1,1,0)})});export{P 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 { 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\nimport { IExportCsvOptionsModel } from './csv-export-helper'\r\nimport { CustomExportButton } from './custom.export-button'\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 exportCsvOptions?: IExportCsvOptionsModel\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 && <CustomExportButton csvOptions={this.props.exportCsvOptions} />}\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","CustomExportButton","csvOptions","exportCsvOptions","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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"}
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 { GridToolbarFilterButton, GridToolbarQuickFilter } from '@mui/x-data-grid'\r\nimport { Box, BoxProps, GlobalStyles, styled, Typography } from '@mui/material'\r\nimport { BtnFormCreate } from './ui.buttons'\r\nimport { Breadcrumbs, IBreadcrumbConfig, HelpTooltip } from '../components'\r\nimport { IExportCsvOptionsModel } from './csv-export-helper'\r\nimport { CustomExportButton } from './custom.export-button'\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 exportCsvOptions?: IExportCsvOptionsModel\r\n}\r\n\r\nclass ToolbarPannel extends Component<React.PropsWithChildren<IToolbarPannelProps>> {\r\n private _popperObserver: MutationObserver | null = null\r\n private _elementObserver: MutationObserver | null = null\r\n private _observedPopper: HTMLElement | null = null\r\n\r\n componentDidMount() {\r\n // observe DOM for filter popper being added; when found, observe + fix transform on mobile\r\n this._popperObserver = new MutationObserver(() => {\r\n // selector based on class visible in DevTools (no MuiPopper-root prefix)\r\n const popper = document.querySelector('.MuiDataGrid-panel') as HTMLElement | null\r\n if (!popper) return\r\n if (!window.matchMedia('(max-width:768px)').matches) return\r\n if (this._observedPopper === popper) return\r\n\r\n this._observedPopper = popper\r\n\r\n const applyFix = () => {\r\n // extract Y from current transform, keep it; force X = 8px\r\n const raw = popper.style.transform || ''\r\n const m = raw.match(/translate3d\\([^,]+,\\s*([^,]+),\\s*[^\\)]+\\)/)\r\n const y = m ? m[1].trim() : '0px'\r\n popper.style.transform = `translate3d(8px, ${y}, 0px)`\r\n }\r\n\r\n applyFix()\r\n\r\n // re-apply every time Popper writes a new inline transform\r\n if (this._elementObserver) this._elementObserver.disconnect()\r\n this._elementObserver = new MutationObserver((muts) => {\r\n for (const mut of muts) {\r\n if (mut.attributeName === 'style') {\r\n // guard: avoid infinite loop — only re-apply if X is not already 8px\r\n const cur = popper.style.transform || ''\r\n if (!cur.startsWith('translate3d(8px')) applyFix()\r\n }\r\n }\r\n })\r\n this._elementObserver.observe(popper, { attributes: true, attributeFilter: ['style'] })\r\n })\r\n\r\n this._popperObserver.observe(document.body, { childList: true, subtree: true })\r\n }\r\n\r\n componentWillUnmount() {\r\n if (this._popperObserver) {\r\n this._popperObserver.disconnect()\r\n this._popperObserver = null\r\n }\r\n if (this._elementObserver) {\r\n this._elementObserver.disconnect()\r\n this._elementObserver = null\r\n }\r\n this._observedPopper = null\r\n }\r\n\r\n render() {\r\n return (\r\n <>\r\n <GlobalStyles\r\n styles={{\r\n '@media (max-width:768px)': {\r\n '.MuiDataGrid-panel': {\r\n left: '8px !important',\r\n overflow: 'hidden',\r\n maxWidth: 'calc(100svw - 16px)',\r\n width: '100%',\r\n '.MuiPaper-root, .MuiDataGrid-paper': { margin: '0 8px' },\r\n '.MuiDataGrid-panelContent': {\r\n overflow: 'auto',\r\n '.MuiFormControl-root': { width: 'auto' },\r\n '.MuiDataGrid-filterFormValueInput': { width: '100px' }\r\n }\r\n }\r\n }\r\n }}\r\n />\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 && <CustomExportButton csvOptions={this.props.exportCsvOptions} />}\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\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","_this2","_popperObserver","MutationObserver","popper","document","querySelector","window","matchMedia","matches","_observedPopper","applyFix","m","style","transform","match","y","trim","_elementObserver","disconnect","muts","_step","_iterator","_createForOfIteratorHelper","s","n","done","attributeName","startsWith","err","e","f","observe","attributes","attributeFilter","body","childList","subtree","_this$props$visibilit","_this$props$visibilit2","_this$props$visibilit3","_this$props$visibilit4","_Fragment","GlobalStyles","styles","left","overflow","maxWidth","width","margin","ToolbarPannelStyled","root","sx","renderTitle","aboveAction","actionsRow","actionWrapProps","actionsLeft","gridToolbar","visibilityToolbar","columns","GridToolbarColumnsButton","filters","GridToolbarFilterButton","density","GridToolbarDensitySelector","CustomExportButton","csvOptions","exportCsvOptions","formCreate","BtnFormCreate","afterAction","actionsRight","quickFilterWrap","GridToolbarQuickFilter","fullWidth","size","debounceMs","quickFilterParser","x","renderEndAdornment","belowAction","styled","_ref","theme","padding","spacing","display","flexWrap","flex","alignItems","gap","breakpoints","down","height","fontWeight","marginRight","justifyContent","li","position","content","top"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- export{ELogic,EOperator,EOrder}from"../src/table/model-filter.js";import"react/jsx-runtime";import"react";import"@mui/material";import"@mui/icons-material/Edit";import"@mui/icons-material/Delete";import"dayjs";import"../src/utils/dayjs-config.js";import"../src/utils/query-param.js";export{CreateTable}from"../src/table/create.table.js";export{default as DinoTable}from"../src/table/dino.js";export{dinoTableClasses}from"../src/table/helpers.js";
1
+ export{ELogic,EOperator,EOrder}from"../src/table/model-filter.js";import"react/jsx-runtime";import"react";import"@mui/material";import"@mui/icons-material/Edit";import"@mui/icons-material/Delete";import"dayjs";import"../src/utils/dayjs-config.js";import"../src/utils/query-param.js";export{CreateTable}from"../src/table/create.table.js";export{default as DinoTable}from"../src/table/dino.js";export{dinoTableClasses}from"../src/table/styled.js";
2
2
  //# sourceMappingURL=index.js.map
@@ -1,9 +1,14 @@
1
1
  import type { FC, ImgHTMLAttributes, ReactNode } from 'react';
2
2
  export interface IImageWithFallbackPropsOwner {
3
+ /** The source URL of the image */
3
4
  src?: string;
5
+ /** The alt text for the image */
4
6
  alt?: string;
5
- fallbackSrc: string;
6
- loading?: ReactNode;
7
+ /** The fallback source(s) to use if the main image fails to load */
8
+ fallbackSrc?: string | string[];
9
+ /** The loading indicator to display while the image is loading */
10
+ loading?: ReactNode | ((isLoading: boolean) => ReactNode);
11
+ /** The debounce delay in milliseconds */
7
12
  debounceDelay?: number;
8
13
  }
9
14
  export type IImageProps = Omit<ImgHTMLAttributes<HTMLImageElement>, keyof IImageWithFallbackPropsOwner>;
@@ -9,11 +9,13 @@ export interface IPaginationQueryParams {
9
9
  pageSize?: string;
10
10
  }
11
11
  /**
12
- * @en Synchronize pagination to URL query parameters. If pagination equals defaultPagination, remove from URL to keep it clean.
13
- * @vi Dong bo pagination vao URL query parameters. Neu pagination bang defaultPagination, xoa khoi URL de giu URL sach.
12
+ * @en Synchronize pagination to URL query parameters. Each field is handled independently:
13
+ * if it differs from default add to URL; if same or undefined remove from URL.
14
+ * @vi Dong bo pagination vao URL query parameters. Tung field duoc xu ly doc lap:
15
+ * neu khac default → them vao URL; neu bang hoac undefined → xoa khoi URL.
14
16
  *
15
17
  * @param pagination - Current pagination to sync
16
- * @param defaultPagination - Default pagination (if current equals this, don't save to URL)
18
+ * @param defaultPagination - Default pagination values used as baseline
17
19
  */
18
20
  export declare function setPaginationToURL(pagination?: TPagination, defaultPagination?: TPagination): void;
19
21
  /**
@@ -7,6 +7,10 @@ export declare const resolveGridSpacing: (...spacing: (number | undefined)[]) =>
7
7
  export declare const DEFAULT_GRID_SCROLLING_THRESHOLD_PX = 80;
8
8
  /** Resolves the final scrolling threshold from multiple optional values. */
9
9
  export declare const resolveGridScrollingThreshold: (...threshold: (number | undefined)[]) => number;
10
+ /** Default near-end threshold in pixels for triggering near-end events. */
11
+ export declare const DEFAULT_GRID_NEAR_END_THRESHOLD_PX = 80;
12
+ /** Resolves the final near-end threshold from multiple optional values. */
13
+ export declare const resolveGridNearEndThreshold: (...threshold: (number | undefined)[]) => number;
10
14
  /** Default grid item height estimate in pixels, used for virtualization calculations. */
11
15
  export declare const DEFAULT_GRID_ITEM_HEIGHT_ESTIMATE = 120;
12
16
  /** Default grid item sizes for each breakpoint. */
@@ -4,6 +4,7 @@ import type { IViewGridConfig, IViewGridProps } from './types';
4
4
  export declare const useMergedConfig: <T>(props: IViewGridProps<T>, config: IViewGridConfig<T>) => {
5
5
  spacing: number;
6
6
  scrollingThreshold: number;
7
+ nearEndThreshold: number;
7
8
  sizes: Partial<Record<import("./types").TGridSize, number>>;
8
9
  Component: import("react").FC<import("./types").IViewGridItemProps<any>> | import("react").ComponentType<import("./types").IViewGridItemProps<T>>;
9
10
  normalOptions: {
@@ -25,6 +25,8 @@ export interface IViewGridBase<T> {
25
25
  spacing?: number;
26
26
  /** Scroll offset threshold in pixels before the `scrolling` class is applied. @default 80 */
27
27
  scrollingThreshold?: number;
28
+ /** Distance in pixels from the bottom of the scroll container at which `onNearEnd` is triggered. @default 80 */
29
+ nearEndThreshold?: number;
28
30
  sizes?: TGridSizes;
29
31
  /**
30
32
  * Controls how the list is rendered into the DOM.
@@ -1,8 +1,9 @@
1
1
  import { BoxProps } from '@mui/material';
2
- import type { TFieldType } from '../types';
2
+ import type { TFieldType, TFieldValid } from '../types';
3
3
  export interface IFieldSummaryConfig<T> {
4
4
  field: TFieldType<T>;
5
5
  label?: string;
6
+ labelFormatter?: (value: TFieldValid) => string | undefined;
6
7
  }
7
8
  export type TFieldSummaryConfigs<T> = Partial<Record<TFieldType<T>, Omit<IFieldSummaryConfig<T>, 'field'>>>;
8
9
  export interface IFilterSummaryConfig<T> {
@@ -1,5 +1,5 @@
1
1
  import type { ReactNode } from 'react';
2
- import { TFieldType } from '../types';
2
+ import type { TFieldType } from '../types';
3
3
  export type THintConfig = {
4
4
  title: ReactNode;
5
5
  content: ReactNode;
@@ -16,6 +16,7 @@ export interface PopperContentProps extends BoxProps {
16
16
  onClose?: ButtonProps['onClick'];
17
17
  disableGutter?: boolean;
18
18
  disableMinMaxWidth?: boolean;
19
+ anchorEl?: HTMLElement | null;
19
20
  slots?: {
20
21
  afterTitle?: React.ReactNode;
21
22
  beforeTitle?: React.ReactNode;
@@ -1,6 +1,6 @@
1
1
  import type { FC } from 'react';
2
2
  import type { ToggleButtonGroupProps } from '@mui/material';
3
- import type { TLogic } from '../types';
3
+ import type { TDateLogic, TLogic } from '../types';
4
4
  interface IFilterMenuNoFieldProps {
5
5
  onClose: () => void;
6
6
  }
@@ -19,4 +19,11 @@ export interface FilterLogicToggleProps {
19
19
  sx?: ToggleButtonGroupProps['sx'];
20
20
  }
21
21
  export declare const FilterLogicToggle: FC<FilterLogicToggleProps>;
22
+ type TDateSingleLogic = Exclude<TDateLogic, 'range'>;
23
+ export interface DateLogicToggleProps {
24
+ value?: TDateSingleLogic;
25
+ onChange?: (event: React.MouseEvent<HTMLElement>, value: TDateSingleLogic) => void;
26
+ sx?: ToggleButtonGroupProps['sx'];
27
+ }
28
+ export declare const DateLogicToggle: FC<DateLogicToggleProps>;
22
29
  export {};
@@ -4,3 +4,5 @@ export * from './components/hint-icon';
4
4
  export * from './convert-to-graphql';
5
5
  export * from './local-filter-builder';
6
6
  export * from './index.dino';
7
+ export type { IFieldSelectOption } from './menu/create-form-field-select';
8
+ export type { IFormFieldDateTimeParam, TDateTimePickerType, TDateTimeMode } from './menu/create-form-field-datetime';
@@ -3,6 +3,7 @@ import { getFilterFromURL, isEmptyFilterState, isFilterStateEqual, removeNullVal
3
3
  import createFormFieldString from './menu/create-form-field-string';
4
4
  import createFormFieldSelect from './menu/create-form-field-select';
5
5
  import createFormFieldSelectMultiple from './menu/create-form-field-select-multiple';
6
+ import createFormFieldDateTime from './menu/create-form-field-datetime';
6
7
  export declare class DinoFilterBar {
7
8
  createFilterBar: typeof createFilterBar;
8
9
  createConvertToGraphQL: <TSource extends Record<string, any>, TTarget extends object>(state: import("./types").TFilterState<TSource>) => import("./convert-to-graphql").TableFileterConverter<TSource, TTarget>;
@@ -10,6 +11,7 @@ export declare class DinoFilterBar {
10
11
  createFormFieldString: typeof createFormFieldString;
11
12
  createFormFieldSelect: typeof createFormFieldSelect;
12
13
  createFormFieldSelectMultiple: typeof createFormFieldSelectMultiple;
14
+ createFormFieldDateTime: typeof createFormFieldDateTime;
13
15
  mapLogic: (logic?: import("./types").TLogic | undefined) => "Or" | "And";
14
16
  mapDirection: (direction?: import("./types").TDirection | undefined) => "ASC" | "DESC";
15
17
  isEmptyFilterState: typeof isEmptyFilterState;
@@ -0,0 +1,53 @@
1
+ import type { FC } from 'react';
2
+ import type { TDateLogic } from '../types';
3
+ import type { IFieldMenuConfig, IFilterMenuFormProps } from './types';
4
+ /** Date logic options available in `single` mode. */
5
+ export type TDateSingleLogic = Exclude<TDateLogic, 'range'>;
6
+ /** The MUI picker variant to render inside the filter menu. */
7
+ export type TDateTimePickerType = 'date' | 'datetime' | 'time';
8
+ /**
9
+ * Selection mode for the DateTime filter.
10
+ * - `'single'` — one value per Apply; values accumulate with OR / AND logic.
11
+ * - `'range'` — two pickers (From / To); always stores exactly `[fromISO, toISO]`.
12
+ */
13
+ export type TDateTimeMode = 'single' | 'range';
14
+ /** Props for the `FormFieldDateTime` component returned by `createFormFieldDateTime`. Extends the base filter-menu form props. */
15
+ export interface IFormFieldDateTimeProps<T> extends IFilterMenuFormProps<T> {
16
+ }
17
+ /** Parameters passed to `createFormFieldDateTime` to configure the generated component. */
18
+ export interface IFormFieldDateTimeParam<T> {
19
+ /** Optional field-level configuration overrides. */
20
+ config?: IFieldMenuConfig<T>;
21
+ /**
22
+ * Controls which MUI picker is rendered.
23
+ * - `'date'` → `DatePicker` (default)
24
+ * - `'datetime'` → `DateTimePicker`
25
+ * - `'time'` → `TimePicker`
26
+ * @default 'datetime'
27
+ */
28
+ pickerType?: TDateTimePickerType;
29
+ /**
30
+ * Controls the selection mode.
31
+ * - `'single'` (default) — one value per Apply click; multiple values accumulate with OR / AND logic.
32
+ * - `'range'` — two pickers (From / To); always stores exactly `[fromISO, toISO]`.
33
+ * @default 'single'
34
+ */
35
+ mode?: TDateTimeMode;
36
+ }
37
+ /**
38
+ * Factory function that creates a `FormFieldDateTime` filter-menu component.
39
+ *
40
+ * The generated component renders a date / time picker inside a popper/menu panel.
41
+ * It supports two selection modes:
42
+ * - **single** (default) — user picks one value per submission; values accumulate
43
+ * and an OR / AND logic toggle appears when more than one value is active.
44
+ * - **range** — two pickers rendered (From / To); always stores exactly
45
+ * `[fromISO, toISO]`, replacing any previous range on each Apply.
46
+ *
47
+ * All stored values are ISO 8601 strings (`TFieldValid = string`).
48
+ *
49
+ * @param params - Static configuration (picker type, mode, optional field config override)
50
+ * @returns A React FC ready to be used as a date/time filter-menu field component
51
+ */
52
+ declare function createFormFieldDateTime<T>(params?: IFormFieldDateTimeParam<T>): FC<IFormFieldDateTimeProps<T>>;
53
+ export default createFormFieldDateTime;