dinocollab-core 2.1.15 → 2.1.17

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.
@@ -1,2 +1,2 @@
1
- import{slicedToArray as e,toConsumableArray as t,objectSpread2 as i}from"../_virtual/_rollupPluginBabelHelpers.js";import{jsx as n,jsxs as r}from"react/jsx-runtime";import o,{useState as a,useCallback as l,useEffect as u}from"react";import{styled as s,Box as d,Stack as c,Dialog as f,DialogTitle as p,DialogContent as h,DialogContentText as m,DialogActions as g,Button as v}from"@mui/material";import x from"@mui/material/Alert";var y=o.forwardRef((function(e,t){return n(x,i(i({elevation:6,ref:t,variant:"standard"},e),{},{style:{minWidth:"300px"}}))})),C={};function A(){var r,o,s=a([]),d=e(s,2),f=d[0],p=d[1],h=l((function(e){p((function(i){return[].concat(t(i),[e])}))}),[]),m=l((function(e){var i=f.findIndex((function(t){return t.id===e.id}));f.splice(i,1),p(t(f))}),[f]);return u((function(){C.ApiAlert=i(i({},C.ApiAlert?C.ApiAlert:{}),{},{PushMessage:h,PushError:function(e,t){this.PushMessage({id:(new Date).getTime().toString(),text:e,type:"error",duration:(null==t?void 0:t.duration)||15e3})},PushInfo:function(e,t){this.PushMessage({id:(new Date).getTime().toString(),text:e,type:"info",duration:(null==t?void 0:t.duration)||6e3})},PushWarning:function(e,t){this.PushMessage({id:(new Date).getTime().toString(),text:e,type:"warning",duration:(null==t?void 0:t.duration)||6e3})},PushSuccess:function(e,t){this.PushMessage({id:(new Date).getTime().toString(),text:e,type:"success",duration:(null==t?void 0:t.duration)||3e3})}})}),[h]),n(b,{children:n(c,{spacing:2,sx:{maxWidth:"300px"},children:(r=f,o=m,r.map((function(e,t){return n(P,{data:e,IsOpen:!0,handleClose:o,autoDurationHide:e.duration},e.id+t)})))})})}var P=function(e){var t=l((function(){return e.handleClose(e.data)}),[e]);return u((function(){var t=null;return e.autoDurationHide&&(t=setTimeout((function(){e.handleClose(e.data)}),e.autoDurationHide)),function(){clearTimeout(t)}}),[e]),n(y,{onClose:t,severity:e.data.type,children:e.data.text})},b=s(d)({position:"fixed",top:"calc(var(--height-header) + 20px)",right:"50px",zIndex:2e3,display:"flex",justifyContent:"flex-start",alignItems:"center"}),I=function(t){var i=o.useState(t.IsOpen),a=e(i,2),l=a[0],u=a[1];o.useEffect((function(){u(t.IsOpen)}),[t.IsOpen]);var s=o.useCallback((function(){u(!1),t.onClose&&t.onClose()}),[t]);return n("div",{children:r(f,{open:l,onClose:s,"aria-labelledby":"alert-dialog-title","aria-describedby":"alert-dialog-description",children:[n(p,{id:"alert-dialog-title",children:t.Title}),n(h,{children:n(m,{id:"alert-dialog-description",children:t.Message})}),r(g,{children:[n(v,{onClick:t.onAccept,autoFocus:!0,color:"info",children:"Ok"}),n(v,{onClick:s,color:"error",children:"Cancel"})]})]})})};export{I as AlertDialog,C as ApiAlertContext,A as default};
1
+ import{slicedToArray as e,toConsumableArray as t,objectSpread2 as i}from"../_virtual/_rollupPluginBabelHelpers.js";import{jsx as n,jsxs as r}from"react/jsx-runtime";import a,{useState as o,useCallback as l,useEffect as u}from"react";import{styled as s,Box as d,Stack as c,Dialog as f,DialogTitle as p,DialogContent as h,DialogContentText as m,DialogActions as g,Button as x}from"@mui/material";import v from"@mui/material/Alert";var y=a.forwardRef((function(e,t){return n(v,i(i({elevation:6,ref:t,variant:"standard"},e),{},{style:{minWidth:"300px"}}))})),C={};function A(){var r,a,s=o([]),d=e(s,2),f=d[0],p=d[1],h=l((function(e){p((function(i){return[].concat(t(i),[e])}))}),[]),m=l((function(e){var i=f.findIndex((function(t){return t.id===e.id}));f.splice(i,1),p(t(f))}),[f]);return u((function(){C.ApiAlert=i(i({},C.ApiAlert?C.ApiAlert:{}),{},{PushMessage:h,PushError:function(e,t){this.PushMessage({id:(new Date).getTime().toString(),text:e,type:"error",duration:(null==t?void 0:t.duration)||15e3})},PushInfo:function(e,t){this.PushMessage({id:(new Date).getTime().toString(),text:e,type:"info",duration:(null==t?void 0:t.duration)||6e3})},PushWarning:function(e,t){this.PushMessage({id:(new Date).getTime().toString(),text:e,type:"warning",duration:(null==t?void 0:t.duration)||6e3})},PushSuccess:function(e,t){this.PushMessage({id:(new Date).getTime().toString(),text:e,type:"success",duration:(null==t?void 0:t.duration)||3e3})}})}),[h]),n(S,{children:n(c,{spacing:2,sx:{maxWidth:"300px"},children:(r=f,a=m,r.map((function(e,t){return n(P,{data:e,IsOpen:!0,handleClose:a,autoDurationHide:e.duration},e.id+t)})))})})}var P=function(e){var t=l((function(){return e.handleClose(e.data)}),[e]);return u((function(){var t=null;return e.autoDurationHide&&(t=setTimeout((function(){e.handleClose(e.data)}),e.autoDurationHide)),function(){clearTimeout(t)}}),[e]),n(y,{sx:{whiteSpace:"pre-line"},onClose:t,severity:e.data.type,children:e.data.text})},S=s(d)({position:"fixed",top:"calc(var(--height-header) + 20px)",right:"50px",zIndex:2e3,display:"flex",justifyContent:"flex-start",alignItems:"center"}),b=function(t){var i=a.useState(t.IsOpen),o=e(i,2),l=o[0],u=o[1];a.useEffect((function(){u(t.IsOpen)}),[t.IsOpen]);var s=a.useCallback((function(){u(!1),t.onClose&&t.onClose()}),[t]);return n("div",{children:r(f,{open:l,onClose:s,"aria-labelledby":"alert-dialog-title","aria-describedby":"alert-dialog-description",children:[n(p,{id:"alert-dialog-title",children:t.Title}),n(h,{children:n(m,{id:"alert-dialog-description",sx:{whiteSpace:"pre-line"},children:t.Message})}),r(g,{children:[n(x,{onClick:t.onAccept,autoFocus:!0,color:"info",children:"Ok"}),n(x,{onClick:s,color:"error",children:"Cancel"})]})]})})};export{b as AlertDialog,C as ApiAlertContext,A as default};
2
2
  //# sourceMappingURL=alert-global.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"alert-global.js","sources":["../../src/api-context/alert-global.tsx"],"sourcesContent":["import React, { FC, useCallback, useEffect, useState } from 'react'\r\nimport { Box, Stack, styled, Button, Dialog, DialogActions, DialogContent, DialogContentText, DialogTitle } from '@mui/material'\r\nimport MuiAlert, { AlertProps, AlertColor } from '@mui/material/Alert'\r\n\r\nconst Alert = React.forwardRef<HTMLDivElement, AlertProps>(function Alert(props, ref) {\r\n return <MuiAlert elevation={6} ref={ref} variant='standard' {...props} style={{ minWidth: '300px' }} />\r\n})\r\n\r\ninterface MessageData {\r\n id: string\r\n text: string\r\n type: AlertColor\r\n duration?: number\r\n}\r\n\r\ninterface IOptions {\r\n duration?: number\r\n}\r\n\r\ninterface IApiAlert {\r\n PushMessage: (data: MessageData) => void\r\n PushInfo: (data: string) => void\r\n PushError: (data: string) => void\r\n PushWarning: (data: string) => void\r\n PushSuccess: (data: string) => void\r\n}\r\n\r\nexport interface IApiContext {\r\n ApiAlert?: IApiAlert\r\n}\r\n\r\nexport const ApiAlertContext: IApiContext = {}\r\n\r\nconst RenderArea = (messages: MessageData[], onClose: (data: MessageData) => void) => {\r\n return messages.map((x, i) => {\r\n return <Message key={x.id + i} data={x} IsOpen={true} handleClose={onClose} autoDurationHide={x.duration} />\r\n })\r\n}\r\n\r\nfunction AlertGlobal() {\r\n const [Messages, setMessages] = useState<MessageData[]>([])\r\n const _PushMessage = useCallback((data: MessageData) => {\r\n setMessages((st) => [...st, data])\r\n }, [])\r\n const _HandleClose = useCallback(\r\n (data: MessageData) => {\r\n const index = Messages.findIndex((x) => x.id === data.id)\r\n Messages.splice(index, 1)\r\n setMessages([...Messages])\r\n },\r\n [Messages]\r\n )\r\n\r\n useEffect(() => {\r\n ApiAlertContext.ApiAlert = {\r\n ...(ApiAlertContext.ApiAlert ? ApiAlertContext.ApiAlert : {}),\r\n PushMessage: _PushMessage,\r\n PushError: function (data: string, options?: IOptions) {\r\n this.PushMessage({\r\n id: new Date().getTime().toString(),\r\n text: data,\r\n type: 'error',\r\n duration: options?.duration || 15000\r\n })\r\n },\r\n PushInfo: function (data: string, options?: IOptions) {\r\n this.PushMessage({\r\n id: new Date().getTime().toString(),\r\n text: data,\r\n type: 'info',\r\n duration: options?.duration || 6000\r\n })\r\n },\r\n PushWarning: function (data: string, options?: IOptions) {\r\n this.PushMessage({\r\n id: new Date().getTime().toString(),\r\n text: data,\r\n type: 'warning',\r\n duration: options?.duration || 6000\r\n })\r\n },\r\n PushSuccess: function (data: string, options?: IOptions) {\r\n this.PushMessage({\r\n id: new Date().getTime().toString(),\r\n text: data,\r\n type: 'success',\r\n duration: options?.duration || 3000\r\n })\r\n }\r\n }\r\n }, [_PushMessage])\r\n\r\n return (\r\n <Wrap>\r\n <Stack spacing={2} sx={{ maxWidth: '300px' }}>\r\n {RenderArea(Messages, _HandleClose)}\r\n </Stack>\r\n </Wrap>\r\n )\r\n}\r\nexport default AlertGlobal\r\n\r\ninterface MessageProps {\r\n IsOpen: boolean\r\n handleClose: (data: MessageData) => void\r\n data: MessageData\r\n autoDurationHide?: number\r\n}\r\nconst Message: FC<MessageProps> = (props) => {\r\n const _handleClose = useCallback(() => props.handleClose(props.data), [props])\r\n\r\n useEffect(() => {\r\n let Timer: any = null\r\n if (props.autoDurationHide) {\r\n Timer = setTimeout(() => {\r\n props.handleClose(props.data)\r\n }, props.autoDurationHide)\r\n }\r\n return () => {\r\n clearTimeout(Timer as any)\r\n }\r\n }, [props])\r\n return (\r\n <Alert onClose={_handleClose} severity={props.data.type}>\r\n {props.data.text}\r\n </Alert>\r\n )\r\n}\r\n\r\nconst Wrap = styled(Box)({\r\n position: 'fixed',\r\n top: 'calc(var(--height-header) + 20px)',\r\n right: '50px',\r\n zIndex: 2000,\r\n display: 'flex',\r\n justifyContent: 'flex-start',\r\n alignItems: 'center'\r\n})\r\n\r\ninterface AlertDialogProps {\r\n IsOpen: boolean\r\n onClose?: () => void\r\n onAccept?: () => void\r\n Title: string\r\n Message: string\r\n}\r\nexport const AlertDialog: React.FC<AlertDialogProps> = (props) => {\r\n const [Open, setOpen] = React.useState(props.IsOpen)\r\n React.useEffect(() => {\r\n setOpen(props.IsOpen)\r\n }, [props.IsOpen])\r\n const _handleClose = React.useCallback(() => {\r\n setOpen(false)\r\n props.onClose && props.onClose()\r\n }, [props])\r\n return (\r\n <div>\r\n <Dialog open={Open} onClose={_handleClose} aria-labelledby='alert-dialog-title' aria-describedby='alert-dialog-description'>\r\n <DialogTitle id='alert-dialog-title'>{props.Title}</DialogTitle>\r\n <DialogContent>\r\n <DialogContentText id='alert-dialog-description'>{props.Message}</DialogContentText>\r\n </DialogContent>\r\n <DialogActions>\r\n <Button onClick={props.onAccept} autoFocus color='info'>\r\n Ok\r\n </Button>\r\n <Button onClick={_handleClose} color='error'>\r\n Cancel\r\n </Button>\r\n </DialogActions>\r\n </Dialog>\r\n </div>\r\n )\r\n}\r\n"],"names":["Alert","React","forwardRef","props","ref","_jsx","MuiAlert","_objectSpread","elevation","variant","style","minWidth","ApiAlertContext","AlertGlobal","messages","onClose","_useState","useState","_useState2","_slicedToArray","Messages","setMessages","_PushMessage","useCallback","data","st","concat","_toConsumableArray","_HandleClose","index","findIndex","x","id","splice","useEffect","ApiAlert","PushMessage","PushError","options","this","Date","getTime","toString","text","type","duration","PushInfo","PushWarning","PushSuccess","Wrap","children","Stack","spacing","sx","maxWidth","map","i","Message","IsOpen","handleClose","autoDurationHide","_handleClose","Timer","setTimeout","clearTimeout","severity","styled","Box","position","top","right","zIndex","display","justifyContent","alignItems","AlertDialog","_React$useState","_React$useState2","Open","setOpen","_jsxs","Dialog","open","DialogTitle","Title","DialogContent","DialogContentText","DialogActions","Button","onClick","onAccept","autoFocus","color"],"mappings":"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"}
1
+ {"version":3,"file":"alert-global.js","sources":["../../src/api-context/alert-global.tsx"],"sourcesContent":["import React, { FC, useCallback, useEffect, useState } from 'react'\r\nimport { Box, Stack, styled, Button, Dialog, DialogActions, DialogContent, DialogContentText, DialogTitle } from '@mui/material'\r\nimport MuiAlert, { AlertProps, AlertColor } from '@mui/material/Alert'\r\n\r\nconst Alert = React.forwardRef<HTMLDivElement, AlertProps>(function Alert(props, ref) {\r\n return <MuiAlert elevation={6} ref={ref} variant='standard' {...props} style={{ minWidth: '300px' }} />\r\n})\r\n\r\ninterface MessageData {\r\n id: string\r\n text: string\r\n type: AlertColor\r\n duration?: number\r\n}\r\n\r\ninterface IOptions {\r\n duration?: number\r\n}\r\n\r\ninterface IApiAlert {\r\n PushMessage: (data: MessageData) => void\r\n PushInfo: (data: string) => void\r\n PushError: (data: string) => void\r\n PushWarning: (data: string) => void\r\n PushSuccess: (data: string) => void\r\n}\r\n\r\nexport interface IApiContext {\r\n ApiAlert?: IApiAlert\r\n}\r\n\r\nexport const ApiAlertContext: IApiContext = {}\r\n\r\nconst RenderArea = (messages: MessageData[], onClose: (data: MessageData) => void) => {\r\n return messages.map((x, i) => {\r\n return <Message key={x.id + i} data={x} IsOpen={true} handleClose={onClose} autoDurationHide={x.duration} />\r\n })\r\n}\r\n\r\nfunction AlertGlobal() {\r\n const [Messages, setMessages] = useState<MessageData[]>([])\r\n const _PushMessage = useCallback((data: MessageData) => {\r\n setMessages((st) => [...st, data])\r\n }, [])\r\n const _HandleClose = useCallback(\r\n (data: MessageData) => {\r\n const index = Messages.findIndex((x) => x.id === data.id)\r\n Messages.splice(index, 1)\r\n setMessages([...Messages])\r\n },\r\n [Messages]\r\n )\r\n\r\n useEffect(() => {\r\n ApiAlertContext.ApiAlert = {\r\n ...(ApiAlertContext.ApiAlert ? ApiAlertContext.ApiAlert : {}),\r\n PushMessage: _PushMessage,\r\n PushError: function (data: string, options?: IOptions) {\r\n this.PushMessage({\r\n id: new Date().getTime().toString(),\r\n text: data,\r\n type: 'error',\r\n duration: options?.duration || 15000\r\n })\r\n },\r\n PushInfo: function (data: string, options?: IOptions) {\r\n this.PushMessage({\r\n id: new Date().getTime().toString(),\r\n text: data,\r\n type: 'info',\r\n duration: options?.duration || 6000\r\n })\r\n },\r\n PushWarning: function (data: string, options?: IOptions) {\r\n this.PushMessage({\r\n id: new Date().getTime().toString(),\r\n text: data,\r\n type: 'warning',\r\n duration: options?.duration || 6000\r\n })\r\n },\r\n PushSuccess: function (data: string, options?: IOptions) {\r\n this.PushMessage({\r\n id: new Date().getTime().toString(),\r\n text: data,\r\n type: 'success',\r\n duration: options?.duration || 3000\r\n })\r\n }\r\n }\r\n }, [_PushMessage])\r\n\r\n return (\r\n <Wrap>\r\n <Stack spacing={2} sx={{ maxWidth: '300px' }}>\r\n {RenderArea(Messages, _HandleClose)}\r\n </Stack>\r\n </Wrap>\r\n )\r\n}\r\nexport default AlertGlobal\r\n\r\ninterface MessageProps {\r\n IsOpen: boolean\r\n handleClose: (data: MessageData) => void\r\n data: MessageData\r\n autoDurationHide?: number\r\n}\r\nconst Message: FC<MessageProps> = (props) => {\r\n const _handleClose = useCallback(() => props.handleClose(props.data), [props])\r\n\r\n useEffect(() => {\r\n let Timer: any = null\r\n if (props.autoDurationHide) {\r\n Timer = setTimeout(() => {\r\n props.handleClose(props.data)\r\n }, props.autoDurationHide)\r\n }\r\n return () => {\r\n clearTimeout(Timer as any)\r\n }\r\n }, [props])\r\n return (\r\n <Alert sx={{ whiteSpace: 'pre-line' }} onClose={_handleClose} severity={props.data.type}>\r\n {props.data.text}\r\n </Alert>\r\n )\r\n}\r\n\r\nconst Wrap = styled(Box)({\r\n position: 'fixed',\r\n top: 'calc(var(--height-header) + 20px)',\r\n right: '50px',\r\n zIndex: 2000,\r\n display: 'flex',\r\n justifyContent: 'flex-start',\r\n alignItems: 'center'\r\n})\r\n\r\ninterface AlertDialogProps {\r\n IsOpen: boolean\r\n onClose?: () => void\r\n onAccept?: () => void\r\n Title: string\r\n Message: string\r\n}\r\nexport const AlertDialog: React.FC<AlertDialogProps> = (props) => {\r\n const [Open, setOpen] = React.useState(props.IsOpen)\r\n React.useEffect(() => {\r\n setOpen(props.IsOpen)\r\n }, [props.IsOpen])\r\n const _handleClose = React.useCallback(() => {\r\n setOpen(false)\r\n props.onClose && props.onClose()\r\n }, [props])\r\n return (\r\n <div>\r\n <Dialog open={Open} onClose={_handleClose} aria-labelledby='alert-dialog-title' aria-describedby='alert-dialog-description'>\r\n <DialogTitle id='alert-dialog-title'>{props.Title}</DialogTitle>\r\n <DialogContent>\r\n <DialogContentText id='alert-dialog-description' sx={{ whiteSpace: 'pre-line' }}>\r\n {props.Message}\r\n </DialogContentText>\r\n </DialogContent>\r\n <DialogActions>\r\n <Button onClick={props.onAccept} autoFocus color='info'>\r\n Ok\r\n </Button>\r\n <Button onClick={_handleClose} color='error'>\r\n Cancel\r\n </Button>\r\n </DialogActions>\r\n </Dialog>\r\n </div>\r\n )\r\n}\r\n"],"names":["Alert","React","forwardRef","props","ref","_jsx","MuiAlert","_objectSpread","elevation","variant","style","minWidth","ApiAlertContext","AlertGlobal","messages","onClose","_useState","useState","_useState2","_slicedToArray","Messages","setMessages","_PushMessage","useCallback","data","st","concat","_toConsumableArray","_HandleClose","index","findIndex","x","id","splice","useEffect","ApiAlert","PushMessage","PushError","options","this","Date","getTime","toString","text","type","duration","PushInfo","PushWarning","PushSuccess","Wrap","children","Stack","spacing","sx","maxWidth","map","i","Message","IsOpen","handleClose","autoDurationHide","_handleClose","Timer","setTimeout","clearTimeout","whiteSpace","severity","styled","Box","position","top","right","zIndex","display","justifyContent","alignItems","AlertDialog","_React$useState","_React$useState2","Open","setOpen","_jsxs","Dialog","open","DialogTitle","Title","DialogContent","DialogContentText","DialogActions","Button","onClick","onAccept","autoFocus","color"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{objectWithoutProperties as e,objectSpread2 as o,defineProperty as r,inherits as t,createClass as a,classCallCheck as i,callSuper as l,toConsumableArray as n}from"../_virtual/_rollupPluginBabelHelpers.js";import{jsx as s}from"react/jsx-runtime";import{Component as d}from"react";import{styled as u,Box as p}from"@mui/material";import{DataGrid as c}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 g}from"./context.js";import{customFilterOperators as h}from"./custom.filter-operators.js";import f,{dinoTableClasses as v}from"./helpers.js";import b from"./toolbar-pannel.js";import{GlobalModal as y,mapGlobalModalContext as C}from"../api-context/global-modal.js";var P=["children"];function M(e){return function(){function u(t){var a;return i(this,u),a=l(this,u,[t]),r(a,"setTableQueryParams",(function(e){a.tableQueryParams=m({},a.tableQueryParams,e)})),r(a,"renderWrapContext",(function(e){return s(y,{children:C((function(o){return s(g.Provider,{value:{showModal:o.show,closeModal:o.close},children:e})}))})})),r(a,"getDataGridProps",(function(){var o,r,t,i,l=a.mergeConfig,n={getRowId:e.getRowId,columns:a.columns,rows:null!==(o=null===(r=a.props.data)||void 0===r?void 0:r.items)&&void 0!==o?o:[],checkboxSelection:!0,pagination:!0,density:null!==(t=null===(i=a.props.slots)||void 0===i?void 0:i.density)&&void 0!==t?t:"standard",initialState:f.mapInitialState(a.props.query,{columns:{columnVisibilityModel:e.columnVisibilityModel}}),filterDebounceMs:800,sx:{border:0},slots:{toolbar:l.toolbar},rowSelectionModel:a.rowSelecteds,onRowSelectionModelChange:a.handleRowSelectionChange};if("server"===e.featureMode){var s,d,u={filterMode:"server",sortingMode:"server",paginationMode:"server",onPaginationModelChange:a.onPaginationModelChange,onFilterModelChange:a.onFilterModelChange,onSortModelChange:a.onSortModelChange,rowCount:null!==(s=null===(d=a.props.data)||void 0===d?void 0:d.rowTotal)&&void 0!==s?s:0,paginationModel:a.tableQueryParams.pagination,filterModel:a.tableQueryParams.filter,sortModel:f.mapSortModel(a.tableQueryParams.sort),loading:a.tableQueryParams.loading};Object.assign(n,u)}return m(n,a.mergeConfig.dataGridProps)})),r(a,"initialColumns",(function(){var r,t,i=a.mergeConfig.ActionRow,l=[];return i&&l.push(o({field:"Actions",minWidth:100,headerAlign:"right",align:"right",filterable:!1,sortable:!1,renderCell:function(e){return s(i,{value:e.row})}},e.actionRow)),r=l,t=Object.keys(e.columns).map((function(r){var t=o({field:r},e.columns[r]);return t.filterOperators=e.filterOperators?e.filterOperators(t):h(t),t})),r&&r.length>0&&t.push.apply(t,n(r)),t})),r(a,"onPaginationModelChange",(function(e,o){a.setTableQueryParams({pagination:e,detail:"pagination"}),a.handleChange()})),r(a,"onFilterModelChange",(function(e,o){var r,t=a.tableQueryParams.pagination;a.setTableQueryParams({filter:e,pagination:{page:0,pageSize:null!==(r=null==t?void 0:t.pageSize)&&void 0!==r?r:25},detail:f.detectSearchType(e)}),a.handleChange()})),r(a,"onSortModelChange",(function(e,o){var r,t,i,l,n,s=e,d=a.tableQueryParams.sort;null!=d&&d.length&&!s.length&&(s=(null==d||null===(r=d[0])||void 0===r?void 0:r.field)===(null===(t=a.defaultTableQueryParams.sort)||void 0===t||null===(t=t[0])||void 0===t?void 0:t.field)?[{field:null===(i=d[0])||void 0===i?void 0:i.field,sort:"desc"===(null===(l=d[0])||void 0===l?void 0:l.sort)?"asc":"desc"}]:null!==(n=a.defaultTableQueryParams.sort)&&void 0!==n?n:[]);a.setTableQueryParams({sort:s,detail:"sort"}),a.handleChange()})),r(a,"handleChange",(function(){a.props.onChange&&a.props.onChange(a.tableQueryParams)})),r(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({},t.query),a.defaultTableQueryParams=a.tableQueryParams,a.rowSelecteds=[],a}return t(u,d),a(u,[{key:"mergeConfig",get:function(){var r,t,a,i,l,n,d,u=m({},null==e?void 0:e.toolbarProps,null===(r=this.props.slots)||void 0===r?void 0:r.toolbarProps);return{toolbar:null!==(t=null===(a=this.props.slots)||void 0===a?void 0:a.toolbar)&&void 0!==t?t:function(){return s(b,o({},u))},ActionRow:null===(i=this.props.slots)||void 0===i?void 0:i.actionRow,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)}}},{key:"shouldComponentUpdate",value:function(o){return"server"!==e.featureMode||f.equalTableQueryParams(o.query,this.props.query)?"server"!==e.featureMode:(this.setTableQueryParams(null!==(r=o.query)&&void 0!==r?r:{}),!0);var r}},{key:"render",value:function(){return this.renderWrapContext(s(S,{children:s(c,o({loading:this.props.loading},this.getDataGridProps()))}))}}])}()}var S=u((function(r){var t=r.children,a=e(r,P);return s(p,o(o({},a),{},{children:s("div",{children:t})}))}))(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(v.whiteSpacePre," .MuiDataGrid-cellContent"),{whiteSpace:"pre"}));export{M as CreateTable,M as default};
1
+ import{objectWithoutProperties as e,objectSpread2 as o,defineProperty as r,inherits as a,createClass as t,classCallCheck as i,callSuper as l,toConsumableArray as n}from"../_virtual/_rollupPluginBabelHelpers.js";import{jsx as s}from"react/jsx-runtime";import d,{Component as u}from"react";import{styled as p,Box as c}from"@mui/material";import{DataGrid as m}from"@mui/x-data-grid";import{mergeObjects as g}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 M=["children"];function S(e){return function(){function p(a){var t;return i(this,p),t=l(this,p,[a]),r(t,"setTableQueryParams",(function(e){t.tableQueryParams=g({},t.tableQueryParams,e)})),r(t,"renderWrapContext",(function(o){var r=e.disableGlobalModalProvider?d.Fragment:C;return s(r,{children:P((function(e){return s(h.Provider,{value:{showModal:e.show,closeModal:e.close},children:o})}))})})),r(t,"getDataGridProps",(function(){var o,r,a,i,l=t.mergeConfig,n={getRowId:e.getRowId,columns:t.columns,rows:null!==(o=null===(r=t.props.data)||void 0===r?void 0:r.items)&&void 0!==o?o:[],checkboxSelection:!0,pagination:!0,density:null!==(a=null===(i=t.props.slots)||void 0===i?void 0:i.density)&&void 0!==a?a:"standard",initialState:v.mapInitialState(t.props.query,{columns:{columnVisibilityModel:e.columnVisibilityModel}}),filterDebounceMs:800,sx:{border:0},slots:{toolbar:l.toolbar},rowSelectionModel:t.rowSelecteds,onRowSelectionModelChange:t.handleRowSelectionChange};if("server"===e.featureMode){var s,d,u={filterMode:"server",sortingMode:"server",paginationMode:"server",onPaginationModelChange:t.onPaginationModelChange,onFilterModelChange:t.onFilterModelChange,onSortModelChange:t.onSortModelChange,rowCount:null!==(s=null===(d=t.props.data)||void 0===d?void 0:d.rowTotal)&&void 0!==s?s:0,paginationModel:t.tableQueryParams.pagination,filterModel:t.tableQueryParams.filter,sortModel:v.mapSortModel(t.tableQueryParams.sort),loading:t.tableQueryParams.loading};Object.assign(n,u)}return g(n,t.mergeConfig.dataGridProps)})),r(t,"initialColumns",(function(){var r,a,i=t.mergeConfig.ActionRow,l=[];return i&&l.push(o({field:"Actions",minWidth:100,headerAlign:"right",align:"right",filterable:!1,sortable:!1,renderCell:function(e){return s(i,{value:e.row})}},e.actionRow)),r=l,a=Object.keys(e.columns).map((function(r){var a=o({field:r},e.columns[r]);return a.filterOperators=e.filterOperators?e.filterOperators(a):f(a),a})),r&&r.length>0&&a.push.apply(a,n(r)),a})),r(t,"onPaginationModelChange",(function(e,o){t.setTableQueryParams({pagination:e,detail:"pagination"}),t.handleChange()})),r(t,"onFilterModelChange",(function(e,o){var r,a=t.tableQueryParams.pagination;t.setTableQueryParams({filter:e,pagination:{page:0,pageSize:null!==(r=null==a?void 0:a.pageSize)&&void 0!==r?r:25},detail:v.detectSearchType(e)}),t.handleChange()})),r(t,"onSortModelChange",(function(e,o){var r,a,i,l,n,s=e,d=t.tableQueryParams.sort;null!=d&&d.length&&!s.length&&(s=(null==d||null===(r=d[0])||void 0===r?void 0:r.field)===(null===(a=t.defaultTableQueryParams.sort)||void 0===a||null===(a=a[0])||void 0===a?void 0:a.field)?[{field:null===(i=d[0])||void 0===i?void 0:i.field,sort:"desc"===(null===(l=d[0])||void 0===l?void 0:l.sort)?"asc":"desc"}]:null!==(n=t.defaultTableQueryParams.sort)&&void 0!==n?n:[]);t.setTableQueryParams({sort:s,detail:"sort"}),t.handleChange()})),r(t,"handleChange",(function(){t.props.onChange&&t.props.onChange(t.tableQueryParams)})),r(t,"handleRowSelectionChange",(function(e,o){t.mergeConfig.maxSelcion&&e.length>t.mergeConfig.maxSelcion?t.rowSelecteds=e.slice(0,t.mergeConfig.maxSelcion):t.rowSelecteds=e,t.props.onRowSelectionChange&&t.props.onRowSelectionChange(t.rowSelecteds,o),t.forceUpdate()})),t.columns=t.initialColumns(),t.tableQueryParams=o({},a.query),t.defaultTableQueryParams=t.tableQueryParams,t.rowSelecteds=[],t}return a(p,u),t(p,[{key:"mergeConfig",get:function(){var r,a,t,i,l,n,d,u=g({},null==e?void 0:e.toolbarProps,null===(r=this.props.slots)||void 0===r?void 0:r.toolbarProps);return{toolbar:null!==(a=null===(t=this.props.slots)||void 0===t?void 0:t.toolbar)&&void 0!==a?a:function(){return s(y,o({},u))},ActionRow:null===(i=this.props.slots)||void 0===i?void 0:i.actionRow,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:g({},e.dataGridProps,null===(d=this.props.slots)||void 0===d?void 0:d.dataGridProps)}}},{key:"shouldComponentUpdate",value:function(o){return"server"!==e.featureMode||v.equalTableQueryParams(o.query,this.props.query)?"server"!==e.featureMode:(this.setTableQueryParams(null!==(r=o.query)&&void 0!==r?r:{}),!0);var r}},{key:"render",value:function(){return this.renderWrapContext(s(w,{children:s(m,o({loading:this.props.loading},this.getDataGridProps()))}))}}])}()}var w=p((function(r){var a=r.children,t=e(r,M);return s(c,o(o({},t),{},{children:s("div",{children:a})}))}))(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(b.whiteSpacePre," .MuiDataGrid-cellContent"),{whiteSpace:"pre"}));export{S as CreateTable,S as default};
2
2
  //# sourceMappingURL=create.table.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"create.table.js","sources":["../../src/table/create.table.tsx"],"sourcesContent":["import React, { Component, ComponentType } 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 { 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?: React.ComponentType<IToolbarPannelProps>\r\n actionRow?: React.ComponentType<IActionRowProps<T>>\r\n toolbarProps?: IToolbarPannelProps\r\n dataGridProps?: DataGridProps\r\n}\r\n\r\nexport type ITableParamsSlots<T> = Pick<ITableSlots<T>, 'maxSelection' | 'toolbarProps' | 'dataGridProps'>\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}\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 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 columnVisibilityModel: params.columnVisibilityModel,\r\n maxSelcion: this.props.slots?.maxSelection ?? params.maxSelection,\r\n dataGridProps: mergeObjects({}, params.dataGridProps, this.props.slots?.dataGridProps)\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 shouldComponentUpdate(nextProps: Readonly<ITableProps<T>>): boolean {\r\n if (params.featureMode === 'server' && !TableHelper.equalTableQueryParams(nextProps.query, this.props.query)) {\r\n this.setTableQueryParams(nextProps.query ?? {})\r\n return true\r\n } else if (params.featureMode !== 'server') {\r\n return true\r\n } else {\r\n return false\r\n }\r\n }\r\n\r\n render() {\r\n return this.renderWrapContext(\r\n <Wrap>\r\n <DataGrid loading={this.props.loading} {...this.getDataGridProps()} />\r\n </Wrap>\r\n )\r\n }\r\n\r\n renderWrapContext = (children: React.ReactNode) => (\r\n <GlobalModal>\r\n {mapGlobalModalContext((context) => (\r\n <TableBaseContext.Provider value={{ showModal: context.show, closeModal: context.close }}>{children}</TableBaseContext.Provider>\r\n ))}\r\n </GlobalModal>\r\n )\r\n\r\n getDataGridProps = (): DataGridProps<T> => {\r\n const mergeConfig = this.mergeConfig\r\n const obj: DataGridProps<T> = {\r\n getRowId: params.getRowId,\r\n columns: this.columns,\r\n rows: this.props.data?.items ?? [],\r\n checkboxSelection: true,\r\n pagination: true,\r\n density: this.props.slots?.density ?? 'standard',\r\n initialState: TableHelper.mapInitialState(this.props.query, {\r\n columns: { columnVisibilityModel: params.columnVisibilityModel as GridColumnVisibilityModel }\r\n }),\r\n filterDebounceMs: 800,\r\n sx: { border: 0 },\r\n slots: { toolbar: mergeConfig.toolbar },\r\n rowSelectionModel: this.rowSelecteds,\r\n onRowSelectionModelChange: this.handleRowSelectionChange\r\n }\r\n if (params.featureMode === 'server') {\r\n const objServer: Partial<DataGridProps<T>> = {\r\n filterMode: 'server',\r\n sortingMode: 'server',\r\n paginationMode: 'server',\r\n onPaginationModelChange: this.onPaginationModelChange,\r\n onFilterModelChange: this.onFilterModelChange,\r\n onSortModelChange: this.onSortModelChange,\r\n rowCount: this.props.data?.rowTotal ?? 0,\r\n paginationModel: this.tableQueryParams.pagination,\r\n filterModel: this.tableQueryParams.filter as GridFilterModel,\r\n sortModel: TableHelper.mapSortModel(this.tableQueryParams.sort),\r\n loading: this.tableQueryParams.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 } = this.mergeConfig\r\n const list: GridColDef<T>[] = []\r\n if (!!ActionRow) {\r\n list.push({\r\n field: 'Actions',\r\n minWidth: 100,\r\n headerAlign: 'right',\r\n align: 'right',\r\n filterable: false,\r\n sortable: false,\r\n renderCell: (value) => <ActionRow value={value.row} />,\r\n ...params.actionRow\r\n })\r\n }\r\n return generateColumns(list)\r\n }\r\n\r\n onPaginationModelChange = (model: GridPaginationModel, details: GridCallbackDetails<'pagination'>) => {\r\n this.setTableQueryParams({ pagination: model, detail: 'pagination' })\r\n this.handleChange()\r\n }\r\n\r\n onFilterModelChange = (model: GridFilterModel, details: GridCallbackDetails<'filter'>) => {\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 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 this.props.onChange && this.props.onChange(this.tableQueryParams)\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})\r\n"],"names":["CreateTable","params","Table","props","_this","_classCallCheck","_callSuper","_defineProperty","value","tableQueryParams","mergeObjects","children","_jsx","GlobalModal","mapGlobalModalContext","context","TableBaseContext","Provider","showModal","show","closeModal","close","_this$props$data$item","_this$props$data","_this$props$slots$den","_this$props$slots","mergeConfig","obj","getRowId","columns","rows","data","items","checkboxSelection","pagination","density","slots","initialState","TableHelper","mapInitialState","query","columnVisibilityModel","filterDebounceMs","sx","border","toolbar","rowSelectionModel","rowSelecteds","onRowSelectionModelChange","handleRowSelectionChange","featureMode","_this$props$data$rowT","_this$props$data2","objServer","filterMode","sortingMode","paginationMode","onPaginationModelChange","onFilterModelChange","onSortModelChange","rowCount","rowTotal","paginationModel","filterModel","filter","sortModel","mapSortModel","sort","loading","Object","assign","dataGridProps","extendColDefs","ActionRow","list","push","_objectSpread","field","minWidth","headerAlign","align","filterable","sortable","renderCell","row","actionRow","keys","map","key","filterOperators","customFilterOperators","length","apply","_toConsumableArray","model","details","setTableQueryParams","detail","handleChange","_pagination$pageSize","page","pageSize","detectSearchType","_sort$","_this$defaultTableQue","_sort$2","_sort$3","_this$defaultTableQue2","sortValue","defaultTableQueryParams","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","toolbarPannelProps","toolbarProps","this","ToolbarPannel","maxSelection","nextProps","equalTableQueryParams","_nextProps$query","renderWrapContext","Wrap","DataGrid","getDataGridProps","styled","_ref","p","_objectWithoutProperties","_excluded","Box","flex","position","top","left","width","height","overflowY","overflow","concat","dinoTableClasses","whiteSpacePre","whiteSpace"],"mappings":"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"}
1
+ {"version":3,"file":"create.table.js","sources":["../../src/table/create.table.tsx"],"sourcesContent":["import React, { Component, ComponentType } 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 { 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?: React.ComponentType<IToolbarPannelProps>\r\n actionRow?: React.ComponentType<IActionRowProps<T>>\r\n toolbarProps?: IToolbarPannelProps\r\n dataGridProps?: DataGridProps\r\n}\r\n\r\nexport type ITableParamsSlots<T> = Pick<ITableSlots<T>, 'maxSelection' | 'toolbarProps' | 'dataGridProps'>\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 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 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 columnVisibilityModel: params.columnVisibilityModel,\r\n maxSelcion: this.props.slots?.maxSelection ?? params.maxSelection,\r\n dataGridProps: mergeObjects({}, params.dataGridProps, this.props.slots?.dataGridProps)\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 shouldComponentUpdate(nextProps: Readonly<ITableProps<T>>): boolean {\r\n if (params.featureMode === 'server' && !TableHelper.equalTableQueryParams(nextProps.query, this.props.query)) {\r\n this.setTableQueryParams(nextProps.query ?? {})\r\n return true\r\n } else if (params.featureMode !== 'server') {\r\n return true\r\n } else {\r\n return false\r\n }\r\n }\r\n\r\n render() {\r\n return this.renderWrapContext(\r\n <Wrap>\r\n <DataGrid loading={this.props.loading} {...this.getDataGridProps()} />\r\n </Wrap>\r\n )\r\n }\r\n\r\n renderWrapContext = (children: React.ReactNode) => {\r\n const WrapComponent = params.disableGlobalModalProvider ? React.Fragment : GlobalModal\r\n return (\r\n <WrapComponent>\r\n {mapGlobalModalContext((context) => (\r\n <TableBaseContext.Provider value={{ showModal: context.show, closeModal: context.close }}>{children}</TableBaseContext.Provider>\r\n ))}\r\n </WrapComponent>\r\n )\r\n }\r\n\r\n getDataGridProps = (): DataGridProps<T> => {\r\n const mergeConfig = this.mergeConfig\r\n const obj: DataGridProps<T> = {\r\n getRowId: params.getRowId,\r\n columns: this.columns,\r\n rows: this.props.data?.items ?? [],\r\n checkboxSelection: true,\r\n pagination: true,\r\n density: this.props.slots?.density ?? 'standard',\r\n initialState: TableHelper.mapInitialState(this.props.query, {\r\n columns: { columnVisibilityModel: params.columnVisibilityModel as GridColumnVisibilityModel }\r\n }),\r\n filterDebounceMs: 800,\r\n sx: { border: 0 },\r\n slots: { toolbar: mergeConfig.toolbar },\r\n rowSelectionModel: this.rowSelecteds,\r\n onRowSelectionModelChange: this.handleRowSelectionChange\r\n }\r\n if (params.featureMode === 'server') {\r\n const objServer: Partial<DataGridProps<T>> = {\r\n filterMode: 'server',\r\n sortingMode: 'server',\r\n paginationMode: 'server',\r\n onPaginationModelChange: this.onPaginationModelChange,\r\n onFilterModelChange: this.onFilterModelChange,\r\n onSortModelChange: this.onSortModelChange,\r\n rowCount: this.props.data?.rowTotal ?? 0,\r\n paginationModel: this.tableQueryParams.pagination,\r\n filterModel: this.tableQueryParams.filter as GridFilterModel,\r\n sortModel: TableHelper.mapSortModel(this.tableQueryParams.sort),\r\n loading: this.tableQueryParams.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 } = this.mergeConfig\r\n const list: GridColDef<T>[] = []\r\n if (!!ActionRow) {\r\n list.push({\r\n field: 'Actions',\r\n minWidth: 100,\r\n headerAlign: 'right',\r\n align: 'right',\r\n filterable: false,\r\n sortable: false,\r\n renderCell: (value) => <ActionRow value={value.row} />,\r\n ...params.actionRow\r\n })\r\n }\r\n return generateColumns(list)\r\n }\r\n\r\n onPaginationModelChange = (model: GridPaginationModel, details: GridCallbackDetails<'pagination'>) => {\r\n this.setTableQueryParams({ pagination: model, detail: 'pagination' })\r\n this.handleChange()\r\n }\r\n\r\n onFilterModelChange = (model: GridFilterModel, details: GridCallbackDetails<'filter'>) => {\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 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 this.props.onChange && this.props.onChange(this.tableQueryParams)\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})\r\n"],"names":["CreateTable","params","Table","props","_this","_classCallCheck","_callSuper","_defineProperty","value","tableQueryParams","mergeObjects","children","WrapComponent","disableGlobalModalProvider","React","Fragment","GlobalModal","_jsx","mapGlobalModalContext","context","TableBaseContext","Provider","showModal","show","closeModal","close","_this$props$data$item","_this$props$data","_this$props$slots$den","_this$props$slots","mergeConfig","obj","getRowId","columns","rows","data","items","checkboxSelection","pagination","density","slots","initialState","TableHelper","mapInitialState","query","columnVisibilityModel","filterDebounceMs","sx","border","toolbar","rowSelectionModel","rowSelecteds","onRowSelectionModelChange","handleRowSelectionChange","featureMode","_this$props$data$rowT","_this$props$data2","objServer","filterMode","sortingMode","paginationMode","onPaginationModelChange","onFilterModelChange","onSortModelChange","rowCount","rowTotal","paginationModel","filterModel","filter","sortModel","mapSortModel","sort","loading","Object","assign","dataGridProps","extendColDefs","ActionRow","list","push","_objectSpread","field","minWidth","headerAlign","align","filterable","sortable","renderCell","row","actionRow","keys","map","key","filterOperators","customFilterOperators","length","apply","_toConsumableArray","model","details","setTableQueryParams","detail","handleChange","_pagination$pageSize","page","pageSize","detectSearchType","_sort$","_this$defaultTableQue","_sort$2","_sort$3","_this$defaultTableQue2","sortValue","defaultTableQueryParams","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","toolbarPannelProps","toolbarProps","this","ToolbarPannel","maxSelection","nextProps","equalTableQueryParams","_nextProps$query","renderWrapContext","Wrap","DataGrid","getDataGridProps","styled","_ref","p","_objectWithoutProperties","_excluded","Box","flex","position","top","left","width","height","overflowY","overflow","concat","dinoTableClasses","whiteSpacePre","whiteSpace"],"mappings":"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"}
@@ -29,6 +29,7 @@ export interface ITableParams<T extends GridValidRowModel> extends ITableParamsS
29
29
  filterOperators?: (config: GridColDef) => GridFilterOperator[];
30
30
  columnVisibilityModel?: Partial<Record<keyof T, boolean>>;
31
31
  actionRow?: Omit<GridColDef, 'field'>;
32
+ disableGlobalModalProvider?: boolean;
32
33
  }
33
34
  export declare function CreateTable<T extends GridValidRowModel>(params: ITableParams<T>): ComponentType<ITableProps<T>>;
34
35
  export default CreateTable;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dinocollab-core",
3
- "version": "2.1.15",
3
+ "version": "2.1.17",
4
4
  "description": "Dinocollab core - libraries for building collaborative applications with React 18",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.js",