dinocollab-core 1.0.13 → 1.0.14

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 +1 @@
1
- {"version":3,"file":"create.table-grid.js","sources":["../../src/table-grid/create.table-grid.tsx"],"sourcesContent":["import React, { Component, ReactNode } from 'react'\r\nimport { alpha, Box, CircularProgress, colors, Divider, Fade, Grid, styled, TablePagination, Typography } from '@mui/material'\r\nimport { mergeObjects } from '../utils'\r\nimport { tableGridClasses } from './helpers'\r\nimport { CreateTableGridItemActions } from './item-actions'\r\nimport { GlobalModal, PopoverGlobal } from '../api-context'\r\nimport { CreateFilterBar, IFilterState } from '../filter-bar'\r\nimport { TableGridFilter, PaginationModel, TableGridParams, TableGridProps, TableGridInnerSlots } from './types'\r\nimport ToolbarPannelDefault from './toolbar-pannel'\r\n\r\nfunction CreateTableGrid<T extends object>(params: TableGridParams<T>): React.ComponentType<TableGridProps<T>> {\r\n const FilterBarInstance = CreateFilterBar<T>(params.filterBarConfig ?? { fields: {} })\r\n const ItemActions = CreateTableGridItemActions<T>()\r\n\r\n class TableGrid extends Component<TableGridProps<T>> {\r\n defaultPagination: PaginationModel = { page: 0, pageSize: 10 }\r\n private filterStateStore: TableGridFilter<T> = { pagination: this.defaultPagination }\r\n get filterState(): TableGridFilter<T> {\r\n return this.props.filter ?? this.filterStateStore\r\n }\r\n\r\n get slots(): TableGridInnerSlots<T> {\r\n const obj = mergeObjects(params.slots, this.props.slots)\r\n return {\r\n ...obj,\r\n TableGridItem: this.props.slots?.item ?? params.item ?? (() => <ItemDefault />),\r\n ToolbarPannel: this.props.slots?.toolbar ?? params.slots?.toolbar ?? ToolbarPannelDefault\r\n }\r\n }\r\n\r\n get mergeConfig() {\r\n return {\r\n size: params.size ?? { xs: 12, sm: 6, md: 4 }\r\n }\r\n }\r\n\r\n setFilterState = (value: Partial<TableGridFilter<T>>) => {\r\n try {\r\n if (!!value.details) {\r\n this.filterStateStore = { pagination: this.filterStateStore.pagination, ...value }\r\n } else {\r\n this.filterStateStore = mergeObjects<any>({}, this.filterState, value)\r\n }\r\n this.props.onFilterChange && this.props.onFilterChange(this.filterStateStore)\r\n this.forceUpdate()\r\n } catch (error) {\r\n console.log(error)\r\n }\r\n }\r\n\r\n render() {\r\n const { TableGridItem, ToolbarPannel, actionProps } = this.slots\r\n const items = this.getItems()\r\n return this.preRender(\r\n <Wrap className={this.getRootClases()}>\r\n <ToolbarPannel title={params.title} {...this.slots.toolbarProps} />\r\n <FilterBarInstance value={this.filterState} onChange={this.handleFilterChange} />\r\n <div className={tableGridClasses.content}>\r\n <div className={[tableGridClasses.contentInner, tableGridClasses.contentPosition].join(' ')}>\r\n <Grid container spacing={2} {...this.slots.gridContainer}>\r\n {items.map((item, index) => (\r\n <Grid key={params.getSelecterId(item).toString() + index} item {...this.mergeConfig.size} {...this.slots.gridItem}>\r\n <div className={tableGridClasses.item}>\r\n <TableGridItem value={item} />\r\n <Box className={tableGridClasses.actions}>\r\n <ItemActions value={item} {...actionProps} />\r\n </Box>\r\n </div>\r\n </Grid>\r\n ))}\r\n </Grid>\r\n </div>\r\n <Fade in={this.filterState.loading} unmountOnExit>\r\n <div className={[tableGridClasses.overlay, tableGridClasses.contentPosition].join(' ')}>\r\n <CircularProgress size={36} />\r\n </div>\r\n </Fade>\r\n <Fade in={items.length < 1 && !this.filterState.loading} unmountOnExit>\r\n <div className={[tableGridClasses.noItems, tableGridClasses.contentPosition].join(' ')}>\r\n <Typography variant='body2'>No items data</Typography>\r\n </div>\r\n </Fade>\r\n </div>\r\n <Divider />\r\n <TablePagination\r\n component='div'\r\n count={this.props.data.totalItems ?? 0}\r\n page={this.filterState.pagination.page}\r\n onPageChange={this.handleChangePage}\r\n rowsPerPage={this.filterState.pagination.pageSize}\r\n onRowsPerPageChange={this.handleChangeRowsPerPage}\r\n slotProps={{ select: { MenuProps: { disableScrollLock: true } } }}\r\n />\r\n </Wrap>\r\n )\r\n }\r\n\r\n preRender = (children?: ReactNode) => (\r\n <GlobalModal>\r\n <PopoverGlobal.Provider />\r\n {children}\r\n </GlobalModal>\r\n )\r\n\r\n getRootClases = () => {\r\n const classes = [tableGridClasses.root]\r\n if (this.filterState.loading) classes.push(tableGridClasses.loading)\r\n return classes.join(' ')\r\n }\r\n\r\n getItems = () => {\r\n return this.props.data.items ?? []\r\n }\r\n\r\n handleFilterChange = (filterStateChange: IFilterState<T>) => {\r\n this.setFilterState(filterStateChange)\r\n }\r\n\r\n handleChangePage = (_: React.MouseEvent<HTMLButtonElement, MouseEvent> | null, page: number) => {\r\n // this.setState((prev) => ({ pagination: { ...prev.pagination, page } }))\r\n this.setFilterState({ pagination: { page, pageSize: this.filterState.pagination.pageSize } })\r\n }\r\n\r\n handleChangeRowsPerPage: React.ChangeEventHandler<HTMLInputElement | HTMLTextAreaElement> = (event) => {\r\n // this.setState({ pagination: { page: 0, pageSize: parseInt(event.target.value, 10) } })\r\n this.setFilterState({ pagination: { page: 0, pageSize: parseInt(event.target.value, 10) } })\r\n }\r\n }\r\n\r\n return TableGrid\r\n}\r\n\r\nexport default CreateTableGrid\r\n\r\nconst Wrap = styled(Box)({\r\n flex: 1,\r\n height: '100%',\r\n display: 'flex',\r\n flexDirection: 'column',\r\n [`.${tableGridClasses.content}`]: {\r\n position: 'relative',\r\n flex: 1\r\n },\r\n [`.${tableGridClasses.contentPosition}`]: {\r\n position: 'absolute',\r\n top: 0,\r\n left: 0,\r\n width: '100%',\r\n height: '100%'\r\n },\r\n [`.${tableGridClasses.contentInner}`]: {\r\n overflowY: 'auto',\r\n padding: '10px 5px'\r\n },\r\n [`.${tableGridClasses.overlay}`]: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n background: alpha(colors.common.white, 0.4),\r\n zIndex: 10\r\n },\r\n [`.${tableGridClasses.noItems}`]: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center'\r\n },\r\n [`.${tableGridClasses.item}`]: {\r\n position: 'relative'\r\n },\r\n [`.${tableGridClasses.actions}`]: {\r\n position: 'absolute',\r\n top: '5px',\r\n right: '5px',\r\n zIndex: 5,\r\n display: 'inline-block'\r\n }\r\n})\r\n\r\nconst ItemDefault = styled(Box)({\r\n width: '100%',\r\n paddingBottom: '100%',\r\n background: colors.grey[600]\r\n})\r\n"],"names":["CreateTableGrid","params","_params$filterBarConf","FilterBarInstance","CreateFilterBar","filterBarConfig","fields","ItemActions","CreateTableGridItemActions","TableGrid","_this","_classCallCheck","_len","arguments","length","args","Array","_key","_callSuper","this","concat","_defineProperty","page","pageSize","pagination","defaultPagination","value","details","filterStateStore","_objectSpread","mergeObjects","filterState","props","onFilterChange","forceUpdate","error","console","log","children","_jsxs","GlobalModal","_jsx","PopoverGlobal","Provider","classes","tableGridClasses","root","loading","push","join","_this$props$data$item","data","items","filterStateChange","setFilterState","_","event","parseInt","target","_inherits","Component","_createClass","key","get","_this$props$filter","filter","_ref","_this$props$slots$ite","_this$props$slots","_ref2","_this$props$slots$too","_this$props$slots2","_params$slots","obj","slots","TableGridItem","item","ItemDefault","ToolbarPannel","toolbar","ToolbarPannelDefault","_params$size","size","xs","sm","md","_this$props$data$tota","_this2","_this$slots","actionProps","getItems","preRender","Wrap","className","getRootClases","title","toolbarProps","onChange","handleFilterChange","content","contentInner","contentPosition","Grid","container","spacing","gridContainer","map","index","mergeConfig","gridItem","Box","actions","getSelecterId","toString","Fade","in","unmountOnExit","overlay","CircularProgress","noItems","Typography","variant","Divider","TablePagination","component","count","totalItems","onPageChange","handleChangePage","rowsPerPage","onRowsPerPageChange","handleChangeRowsPerPage","slotProps","select","MenuProps","disableScrollLock","styled","flex","height","display","flexDirection","position","top","left","width","overflowY","padding","alignItems","justifyContent","background","alpha","colors","common","white","zIndex","right","paddingBottom","grey"],"mappings":"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"}
1
+ {"version":3,"file":"create.table-grid.js","sources":["../../src/table-grid/create.table-grid.tsx"],"sourcesContent":["import React, { Component, ReactNode } from 'react'\r\nimport { alpha, Box, CircularProgress, colors, Divider, Fade, Grid, styled, TablePagination, Typography } from '@mui/material'\r\nimport { mergeObjects } from '../utils'\r\nimport { tableGridClasses } from './helpers'\r\nimport { CreateTableGridItemActions } from './item-actions'\r\nimport { GlobalModal, PopoverGlobal } from '../api-context'\r\nimport { CreateFilterBar, IFilterState } from '../filter-bar'\r\nimport { ITableGridFilter, IPaginationModel, ITableGridParams, ITableGridProps, ITableGridInnerSlots } from './types'\r\nimport ToolbarPannelDefault from './toolbar-pannel'\r\n\r\nfunction CreateTableGrid<T extends object>(params: ITableGridParams<T>): React.ComponentType<ITableGridProps<T>> {\r\n const FilterBarInstance = CreateFilterBar<T>(params.filterBarConfig ?? { fields: {} })\r\n const ItemActions = CreateTableGridItemActions<T>()\r\n\r\n class TableGrid extends Component<ITableGridProps<T>> {\r\n defaultPagination: IPaginationModel = { page: 0, pageSize: 10 }\r\n private filterStateStore: ITableGridFilter<T> = { pagination: this.defaultPagination }\r\n get filterState(): ITableGridFilter<T> {\r\n return this.props.filter ?? this.filterStateStore\r\n }\r\n\r\n get slots(): ITableGridInnerSlots<T> {\r\n const obj = mergeObjects(params.slots, this.props.slots)\r\n return {\r\n ...obj,\r\n TableGridItem: this.props.slots?.item ?? params.item ?? (() => <ItemDefault />),\r\n ToolbarPannel: this.props.slots?.toolbar ?? params.slots?.toolbar ?? ToolbarPannelDefault\r\n }\r\n }\r\n\r\n get mergeConfig() {\r\n return {\r\n size: params.size ?? { xs: 12, sm: 6, md: 4 }\r\n }\r\n }\r\n\r\n setFilterState = (value: Partial<ITableGridFilter<T>>) => {\r\n try {\r\n if (!!value.details) {\r\n this.filterStateStore = { pagination: this.filterStateStore.pagination, ...value }\r\n } else {\r\n this.filterStateStore = mergeObjects<any>({}, this.filterState, value)\r\n }\r\n this.props.onFilterChange && this.props.onFilterChange(this.filterStateStore)\r\n this.forceUpdate()\r\n } catch (error) {\r\n console.log(error)\r\n }\r\n }\r\n\r\n render() {\r\n const { TableGridItem, ToolbarPannel, actionProps } = this.slots\r\n const items = this.getItems()\r\n return this.preRender(\r\n <Wrap className={this.getRootClases()}>\r\n <ToolbarPannel title={params.title} {...this.slots.toolbarProps} />\r\n <FilterBarInstance value={this.filterState} onChange={this.handleFilterChange} />\r\n <div className={tableGridClasses.content}>\r\n <div className={[tableGridClasses.contentInner, tableGridClasses.contentPosition].join(' ')}>\r\n <Grid container spacing={2} {...this.slots.gridContainer}>\r\n {items.map((item, index) => (\r\n <Grid key={params.getSelecterId(item).toString() + index} item {...this.mergeConfig.size} {...this.slots.gridItem}>\r\n <div className={tableGridClasses.item}>\r\n <TableGridItem value={item} />\r\n <Box className={tableGridClasses.actions}>\r\n <ItemActions value={item} {...actionProps} />\r\n </Box>\r\n </div>\r\n </Grid>\r\n ))}\r\n </Grid>\r\n </div>\r\n <Fade in={this.filterState.loading} unmountOnExit>\r\n <div className={[tableGridClasses.overlay, tableGridClasses.contentPosition].join(' ')}>\r\n <CircularProgress size={36} />\r\n </div>\r\n </Fade>\r\n <Fade in={items.length < 1 && !this.filterState.loading} unmountOnExit>\r\n <div className={[tableGridClasses.noItems, tableGridClasses.contentPosition].join(' ')}>\r\n <Typography variant='body2'>No items data</Typography>\r\n </div>\r\n </Fade>\r\n </div>\r\n <Divider />\r\n <TablePagination\r\n component='div'\r\n count={this.props.data.totalItems ?? 0}\r\n page={this.filterState.pagination.page}\r\n onPageChange={this.handleChangePage}\r\n rowsPerPage={this.filterState.pagination.pageSize}\r\n onRowsPerPageChange={this.handleChangeRowsPerPage}\r\n slotProps={{ select: { MenuProps: { disableScrollLock: true } } }}\r\n />\r\n </Wrap>\r\n )\r\n }\r\n\r\n preRender = (children?: ReactNode) => (\r\n <GlobalModal>\r\n <PopoverGlobal.Provider />\r\n {children}\r\n </GlobalModal>\r\n )\r\n\r\n getRootClases = () => {\r\n const classes = [tableGridClasses.root]\r\n if (this.filterState.loading) classes.push(tableGridClasses.loading)\r\n return classes.join(' ')\r\n }\r\n\r\n getItems = () => {\r\n return this.props.data.items ?? []\r\n }\r\n\r\n handleFilterChange = (filterStateChange: IFilterState<T>) => {\r\n this.setFilterState(filterStateChange)\r\n }\r\n\r\n handleChangePage = (_: React.MouseEvent<HTMLButtonElement, MouseEvent> | null, page: number) => {\r\n // this.setState((prev) => ({ pagination: { ...prev.pagination, page } }))\r\n this.setFilterState({ pagination: { page, pageSize: this.filterState.pagination.pageSize } })\r\n }\r\n\r\n handleChangeRowsPerPage: React.ChangeEventHandler<HTMLInputElement | HTMLTextAreaElement> = (event) => {\r\n // this.setState({ pagination: { page: 0, pageSize: parseInt(event.target.value, 10) } })\r\n this.setFilterState({ pagination: { page: 0, pageSize: parseInt(event.target.value, 10) } })\r\n }\r\n }\r\n\r\n return TableGrid\r\n}\r\n\r\nexport default CreateTableGrid\r\n\r\nconst Wrap = styled(Box)({\r\n flex: 1,\r\n height: '100%',\r\n display: 'flex',\r\n flexDirection: 'column',\r\n [`.${tableGridClasses.content}`]: {\r\n position: 'relative',\r\n flex: 1\r\n },\r\n [`.${tableGridClasses.contentPosition}`]: {\r\n position: 'absolute',\r\n top: 0,\r\n left: 0,\r\n width: '100%',\r\n height: '100%'\r\n },\r\n [`.${tableGridClasses.contentInner}`]: {\r\n overflowY: 'auto',\r\n padding: '10px 5px'\r\n },\r\n [`.${tableGridClasses.overlay}`]: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n background: alpha(colors.common.white, 0.4),\r\n zIndex: 10\r\n },\r\n [`.${tableGridClasses.noItems}`]: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center'\r\n },\r\n [`.${tableGridClasses.item}`]: {\r\n position: 'relative'\r\n },\r\n [`.${tableGridClasses.actions}`]: {\r\n position: 'absolute',\r\n top: '5px',\r\n right: '5px',\r\n zIndex: 5,\r\n display: 'inline-block'\r\n }\r\n})\r\n\r\nconst ItemDefault = styled(Box)({\r\n width: '100%',\r\n paddingBottom: '100%',\r\n background: colors.grey[600]\r\n})\r\n"],"names":["CreateTableGrid","params","_params$filterBarConf","FilterBarInstance","CreateFilterBar","filterBarConfig","fields","ItemActions","CreateTableGridItemActions","TableGrid","_this","_classCallCheck","_len","arguments","length","args","Array","_key","_callSuper","this","concat","_defineProperty","page","pageSize","pagination","defaultPagination","value","details","filterStateStore","_objectSpread","mergeObjects","filterState","props","onFilterChange","forceUpdate","error","console","log","children","_jsxs","GlobalModal","_jsx","PopoverGlobal","Provider","classes","tableGridClasses","root","loading","push","join","_this$props$data$item","data","items","filterStateChange","setFilterState","_","event","parseInt","target","_inherits","Component","_createClass","key","get","_this$props$filter","filter","_ref","_this$props$slots$ite","_this$props$slots","_ref2","_this$props$slots$too","_this$props$slots2","_params$slots","obj","slots","TableGridItem","item","ItemDefault","ToolbarPannel","toolbar","ToolbarPannelDefault","_params$size","size","xs","sm","md","_this$props$data$tota","_this2","_this$slots","actionProps","getItems","preRender","Wrap","className","getRootClases","title","toolbarProps","onChange","handleFilterChange","content","contentInner","contentPosition","Grid","container","spacing","gridContainer","map","index","mergeConfig","gridItem","Box","actions","getSelecterId","toString","Fade","in","unmountOnExit","overlay","CircularProgress","noItems","Typography","variant","Divider","TablePagination","component","count","totalItems","onPageChange","handleChangePage","rowsPerPage","onRowsPerPageChange","handleChangeRowsPerPage","slotProps","select","MenuProps","disableScrollLock","styled","flex","height","display","flexDirection","position","top","left","width","overflowY","padding","alignItems","justifyContent","background","alpha","colors","common","white","zIndex","right","paddingBottom","grey"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"item-actions.js","sources":["../../src/table-grid/item-actions.tsx"],"sourcesContent":["import React, { Component, ComponentType, ReactNode } from 'react'\r\nimport { Box, colors, IconButton, List, ListItem, ListItemButton, ListItemIcon, ListItemProps, ListItemText, styled } from '@mui/material'\r\nimport EditIcon from '@mui/icons-material/Edit'\r\nimport MoreVertIcon from '@mui/icons-material/MoreVert'\r\nimport DeleteOutlineIcon from '@mui/icons-material/DeleteOutline'\r\nimport { ClosePopover, GlobalModalState, mapGlobalModalContext, PopoverGlobal } from '../api-context'\r\n\r\nexport type TableGridItemActionType = 'Edit' | 'Delete'\r\n\r\nconst mapIcons: { [key in TableGridItemActionType]: ReactNode } = {\r\n Edit: <EditIcon fontSize='small' color='primary' />,\r\n Delete: <DeleteOutlineIcon fontSize='small' color='error' />\r\n}\r\n\r\nexport interface TableGridItemActionsProps<T> {\r\n value: T\r\n}\r\n\r\ntype FormRenderFunc<T> = (value: T) => React.ReactNode\r\n\r\ninterface ListItemDef<T> {\r\n name: string\r\n icon?: ReactNode\r\n /** Whether this item should trigger a close action when clicked. @default true */\r\n closableOnClick?: boolean\r\n /** Handler called when item is clicked */\r\n onClick?: (event: React.MouseEvent<HTMLLIElement, MouseEvent>, value: T) => void\r\n listItemProps?: ListItemProps\r\n /**\r\n * Optional custom ReactNode to override the entire ListItem UI.\r\n * If provided, this will be rendered instead of the default ListItem structure\r\n * (icon + text + click behavior).\r\n */\r\n override?: ComponentType<{ onClose?: ClosePopover }>\r\n}\r\n\r\nexport interface TableGridItemActionsConfig<T> {\r\n formEdit?: FormRenderFunc<T>\r\n formDelete?: FormRenderFunc<T>\r\n buttonEditConfig?: GlobalModalState\r\n buttonDeleteConfig?: GlobalModalState\r\n menuList?: {\r\n before?: SingleOrArray<ListItemDef<T>>\r\n after?: ListItemDef<T>\r\n }\r\n}\r\n\r\ninterface IProps<T> extends TableGridItemActionsProps<T>, TableGridItemActionsConfig<T> {}\r\n\r\nexport function CreateTableGridItemActions<T>() {\r\n class TableGridItemActions extends Component<IProps<T>> {\r\n render() {\r\n if (!this.isVisible()) return <></>\r\n return (\r\n <Wrap>\r\n <IconButton\r\n size='small'\r\n onClick={(e) => {\r\n PopoverGlobal.Api.open({\r\n anchorEl: e.currentTarget,\r\n popoverProps: { anchorOrigin: { vertical: 'top', horizontal: 'right' }, transformOrigin: { vertical: 'top', horizontal: 'right' } },\r\n content: (\r\n <List>\r\n {this.renderItems(this.props.menuList?.before)}\r\n {this.renderItemWithForm('Edit', this.props.formEdit, this.props.buttonEditConfig)}\r\n {this.renderItemWithForm('Delete', this.props.formDelete, this.props.buttonEditConfig ?? { backdropActivated: true })}\r\n {this.renderItems(this.props.menuList?.after)}\r\n </List>\r\n )\r\n })\r\n }}\r\n >\r\n <MoreVertIcon fontSize='small' />\r\n </IconButton>\r\n </Wrap>\r\n )\r\n }\r\n\r\n isVisible = () => {\r\n return !!this.props.formEdit || !!this.props.formDelete\r\n }\r\n\r\n renderItems = (value?: SingleOrArray<ListItemDef<T>>) => {\r\n if (!value) return <></>\r\n const list = Array.isArray(value) ? value : [value]\r\n return list.map((item, index) => {\r\n const key = item.name + index\r\n const { override: Override } = item\r\n if (Override) return <Override key={key} onClose={PopoverGlobal.Api.close} />\r\n return (\r\n <ListItem\r\n key={key}\r\n disablePadding\r\n sx={{ minWidth: '170px' }}\r\n onClick={(e) => {\r\n if (item.closableOnClick !== false) PopoverGlobal.Api.close()\r\n item.onClick && item.onClick(e, this.props.value)\r\n }}\r\n {...item.listItemProps}\r\n >\r\n <ListItemButton>\r\n <ListItemIcon>{item.icon}</ListItemIcon>\r\n <ListItemText primary={item.name} />\r\n </ListItemButton>\r\n </ListItem>\r\n )\r\n })\r\n }\r\n\r\n renderItemWithForm = (name: TableGridItemActionType, form?: FormRenderFunc<T>, globalState?: GlobalModalState) => {\r\n if (!form) return <></>\r\n return mapGlobalModalContext((context) => (\r\n <ListItem\r\n disablePadding\r\n sx={{ minWidth: '170px' }}\r\n onClick={() => {\r\n PopoverGlobal.Api.close()\r\n context.show({ renderContent: () => form(this.props.value), ...globalState })\r\n }}\r\n >\r\n <ListItemButton>\r\n <ListItemIcon>{mapIcons[name]}</ListItemIcon>\r\n <ListItemText primary={name} />\r\n </ListItemButton>\r\n </ListItem>\r\n ))\r\n }\r\n }\r\n return TableGridItemActions\r\n}\r\n\r\nconst Wrap = styled(Box)({\r\n background: colors.common.white,\r\n borderRadius: '6px',\r\n '& > .MuiButtonBase-root': {\r\n borderRadius: '6px'\r\n }\r\n})\r\n"],"names":["mapIcons","Edit","_jsx","EditIcon","fontSize","color","Delete","DeleteOutlineIcon","CreateTableGridItemActions","TableGridItemActions","_this","_classCallCheck","_len","arguments","length","args","Array","_key","_callSuper","this","concat","_defineProperty","props","formEdit","formDelete","value","isArray","map","item","index","key","name","Override","override","onClose","PopoverGlobal","Api","close","ListItem","_objectSpread","disablePadding","sx","minWidth","onClick","e","closableOnClick","listItemProps","children","_jsxs","ListItemButton","ListItemIcon","icon","ListItemText","primary","form","globalState","mapGlobalModalContext","context","show","renderContent","_inherits","Component","_createClass","_this2","isVisible","Wrap","IconButton","size","_this2$props$menuList","_this2$props$buttonEd","_this2$props$menuList2","open","anchorEl","currentTarget","popoverProps","anchorOrigin","vertical","horizontal","transformOrigin","content","List","renderItems","menuList","before","renderItemWithForm","buttonEditConfig","backdropActivated","after","MoreVertIcon","styled","Box","background","colors","common","white","borderRadius"],"mappings":"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"}
1
+ {"version":3,"file":"item-actions.js","sources":["../../src/table-grid/item-actions.tsx"],"sourcesContent":["import React, { Component, ComponentType, ReactNode } from 'react'\r\nimport { Box, colors, IconButton, List, ListItem, ListItemButton, ListItemIcon, ListItemProps, ListItemText, styled } from '@mui/material'\r\nimport EditIcon from '@mui/icons-material/Edit'\r\nimport MoreVertIcon from '@mui/icons-material/MoreVert'\r\nimport DeleteOutlineIcon from '@mui/icons-material/DeleteOutline'\r\nimport { ClosePopover, GlobalModalState, mapGlobalModalContext, PopoverGlobal } from '../api-context'\r\n\r\nexport type ITableGridItemActionType = 'Edit' | 'Delete'\r\n\r\nconst mapIcons: { [key in ITableGridItemActionType]: ReactNode } = {\r\n Edit: <EditIcon fontSize='small' color='primary' />,\r\n Delete: <DeleteOutlineIcon fontSize='small' color='error' />\r\n}\r\n\r\nexport interface ITableGridItemActionsBaseProps<T> {\r\n value: T\r\n}\r\n\r\nexport type IFormRenderFunc<T> = (value: T) => React.ReactNode\r\n\r\nexport interface IListItemDef<T> {\r\n name: string\r\n icon?: ReactNode\r\n /** Whether this item should trigger a close action when clicked. @default true */\r\n closableOnClick?: boolean\r\n /** Handler called when item is clicked */\r\n onClick?: (event: React.MouseEvent<HTMLLIElement, MouseEvent>, value: T) => void\r\n listItemProps?: ListItemProps\r\n /**\r\n * Optional custom ReactNode to override the entire ListItem UI.\r\n * If provided, this will be rendered instead of the default ListItem structure\r\n * (icon + text + click behavior).\r\n */\r\n override?: ComponentType<{ onClose?: ClosePopover }>\r\n}\r\n\r\nexport interface TableGridItemActionsConfig<T> {\r\n formEdit?: IFormRenderFunc<T>\r\n formDelete?: IFormRenderFunc<T>\r\n buttonEditConfig?: GlobalModalState\r\n buttonDeleteConfig?: GlobalModalState\r\n menuList?: {\r\n before?: SingleOrArray<IListItemDef<T>>\r\n after?: IListItemDef<T>\r\n }\r\n}\r\n\r\nexport interface ITableGridItemActionsProps<T> extends ITableGridItemActionsBaseProps<T>, TableGridItemActionsConfig<T> {}\r\n\r\nexport function CreateTableGridItemActions<T>() {\r\n class TableGridItemActions extends Component<ITableGridItemActionsProps<T>> {\r\n render() {\r\n if (!this.isVisible()) return <></>\r\n return (\r\n <Wrap>\r\n <IconButton\r\n size='small'\r\n onClick={(e) => {\r\n PopoverGlobal.Api.open({\r\n anchorEl: e.currentTarget,\r\n popoverProps: { anchorOrigin: { vertical: 'top', horizontal: 'right' }, transformOrigin: { vertical: 'top', horizontal: 'right' } },\r\n content: (\r\n <List>\r\n {this.renderItems(this.props.menuList?.before)}\r\n {this.renderItemWithForm('Edit', this.props.formEdit, this.props.buttonEditConfig)}\r\n {this.renderItemWithForm('Delete', this.props.formDelete, this.props.buttonEditConfig ?? { backdropActivated: true })}\r\n {this.renderItems(this.props.menuList?.after)}\r\n </List>\r\n )\r\n })\r\n }}\r\n >\r\n <MoreVertIcon fontSize='small' />\r\n </IconButton>\r\n </Wrap>\r\n )\r\n }\r\n\r\n isVisible = () => {\r\n return !!this.props.formEdit || !!this.props.formDelete\r\n }\r\n\r\n renderItems = (value?: SingleOrArray<IListItemDef<T>>) => {\r\n if (!value) return <></>\r\n const list = Array.isArray(value) ? value : [value]\r\n return list.map((item, index) => {\r\n const key = item.name + index\r\n const { override: Override } = item\r\n if (Override) return <Override key={key} onClose={PopoverGlobal.Api.close} />\r\n return (\r\n <ListItem\r\n key={key}\r\n disablePadding\r\n sx={{ minWidth: '170px' }}\r\n onClick={(e) => {\r\n if (item.closableOnClick !== false) PopoverGlobal.Api.close()\r\n item.onClick && item.onClick(e, this.props.value)\r\n }}\r\n {...item.listItemProps}\r\n >\r\n <ListItemButton>\r\n <ListItemIcon>{item.icon}</ListItemIcon>\r\n <ListItemText primary={item.name} />\r\n </ListItemButton>\r\n </ListItem>\r\n )\r\n })\r\n }\r\n\r\n renderItemWithForm = (name: ITableGridItemActionType, form?: IFormRenderFunc<T>, globalState?: GlobalModalState) => {\r\n if (!form) return <></>\r\n return mapGlobalModalContext((context) => (\r\n <ListItem\r\n disablePadding\r\n sx={{ minWidth: '170px' }}\r\n onClick={() => {\r\n PopoverGlobal.Api.close()\r\n context.show({ renderContent: () => form(this.props.value), ...globalState })\r\n }}\r\n >\r\n <ListItemButton>\r\n <ListItemIcon>{mapIcons[name]}</ListItemIcon>\r\n <ListItemText primary={name} />\r\n </ListItemButton>\r\n </ListItem>\r\n ))\r\n }\r\n }\r\n return TableGridItemActions\r\n}\r\n\r\nconst Wrap = styled(Box)({\r\n background: colors.common.white,\r\n borderRadius: '6px',\r\n '& > .MuiButtonBase-root': {\r\n borderRadius: '6px'\r\n }\r\n})\r\n"],"names":["mapIcons","Edit","_jsx","EditIcon","fontSize","color","Delete","DeleteOutlineIcon","CreateTableGridItemActions","TableGridItemActions","_this","_classCallCheck","_len","arguments","length","args","Array","_key","_callSuper","this","concat","_defineProperty","props","formEdit","formDelete","value","isArray","map","item","index","key","name","Override","override","onClose","PopoverGlobal","Api","close","ListItem","_objectSpread","disablePadding","sx","minWidth","onClick","e","closableOnClick","listItemProps","children","_jsxs","ListItemButton","ListItemIcon","icon","ListItemText","primary","form","globalState","mapGlobalModalContext","context","show","renderContent","_inherits","Component","_createClass","_this2","isVisible","Wrap","IconButton","size","_this2$props$menuList","_this2$props$buttonEd","_this2$props$menuList2","open","anchorEl","currentTarget","popoverProps","anchorOrigin","vertical","horizontal","transformOrigin","content","List","renderItems","menuList","before","renderItemWithForm","buttonEditConfig","backdropActivated","after","MoreVertIcon","styled","Box","background","colors","common","white","borderRadius"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"toolbar-pannel.js","sources":["../../src/table-grid/toolbar-pannel.tsx"],"sourcesContent":["import React, { Component } from 'react'\r\nimport { Box, BoxProps, Button, ButtonProps, styled, Tooltip, Typography, TypographyProps } from '@mui/material'\r\nimport AddCircleOutlineIcon from '@mui/icons-material/AddCircleOutline'\r\nimport { mapGlobalModalContext } from '../api-context'\r\nimport { Breadcrumbs, IBreadcrumbConfig } from '../components'\r\n\r\ninterface SectionSlots {\r\n before?: React.ReactNode\r\n after?: React.ReactNode\r\n}\r\n\r\nexport interface ToolbarPannelProps {\r\n /** @default true */\r\n visible?: boolean\r\n searchInclude?: string[]\r\n breadcrumbs?: IBreadcrumbConfig[]\r\n title?: React.ReactNode\r\n titleSlots?: SectionSlots\r\n formCreate?: React.ReactNode\r\n actionSlots?: SectionSlots\r\n slots?: {\r\n rootProps?: BoxProps\r\n buttonCreateProps?: ButtonProps\r\n }\r\n}\r\n\r\nclass ToolbarPannel extends Component<ToolbarPannelProps> {\r\n render() {\r\n if (this.props.visible === false) return\r\n return (\r\n <Wrap {...this.props.slots?.rootProps}>\r\n {this.props.titleSlots?.before}\r\n {this.renderTitle()}\r\n {this.props.titleSlots?.after}\r\n <Box sx={{ flex: 1 }} />\r\n {this.props.actionSlots?.before}\r\n {this.renderButtonCreate()}\r\n {this.props.actionSlots?.after}\r\n </Wrap>\r\n )\r\n }\r\n\r\n renderButtonCreate = () => {\r\n if (!this.props.formCreate) return <></>\r\n return mapGlobalModalContext((context) => (\r\n <Tooltip title='Create new'>\r\n <Button\r\n size='small'\r\n onClick={() => context.show({ renderContent: () => this.props.formCreate })}\r\n startIcon={<AddCircleOutlineIcon fontSize='small' />}\r\n sx={{ fontWeight: 600 }}\r\n variant='contained'\r\n {...this.props.slots?.buttonCreateProps}\r\n >\r\n Create\r\n </Button>\r\n </Tooltip>\r\n ))\r\n }\r\n\r\n renderTitle = () => {\r\n const { title, breadcrumbs } = this.props ?? {}\r\n if (breadcrumbs) return <Breadcrumbs value={breadcrumbs} />\r\n if (typeof title === 'string') return <Title>{title}</Title>\r\n return <>{title}</>\r\n }\r\n}\r\n\r\nexport default ToolbarPannel\r\n\r\n// const SeachHelp = styled('ul')({\r\n// margin: '0 0 0 18px',\r\n// padding: 0,\r\n// li: {\r\n// position: 'relative'\r\n// },\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\r\nconst Title = styled((props: TypographyProps) => <Typography noWrap variant='subtitle1' {...props} />)({\r\n fontWeight: 700,\r\n flex: 1\r\n})\r\n\r\nconst Wrap = styled(Box)({\r\n height: 'var(--height-toolbar, 56px)',\r\n display: 'flex',\r\n alignItems: 'center',\r\n gap: '8px',\r\n padding: '0 6px'\r\n})\r\n"],"names":["ToolbarPannel","_this","_classCallCheck","_len","arguments","length","args","Array","_key","_callSuper","this","concat","_defineProperty","props","formCreate","mapGlobalModalContext","context","_this$props$slots","_jsx","Tooltip","title","children","Button","_objectSpread","size","onClick","show","renderContent","startIcon","AddCircleOutlineIcon","fontSize","sx","fontWeight","variant","slots","buttonCreateProps","_this$props","_ref","breadcrumbs","Breadcrumbs","value","Title","_Fragment","_inherits","Component","_createClass","key","_this$props$slots2","_this$props$titleSlot","_this$props$titleSlot2","_this$props$actionSlo","_this$props$actionSlo2","visible","_jsxs","Wrap","rootProps","titleSlots","before","renderTitle","after","Box","flex","actionSlots","renderButtonCreate","styled","Typography","noWrap","height","display","alignItems","gap","padding"],"mappings":"k1BA0BMA,IAAAA,aAAc,SAAAA,IAAA,IAAAC,EAAAC,OAAAF,GAAA,IAAA,IAAAG,EAAAC,UAAAC,OAAAC,EAAAC,IAAAA,MAAAJ,GAAAK,EAAA,EAAAA,EAAAL,EAAAK,IAAAF,EAAAE,GAAAJ,UAAAI,GAuCjB,OAvCiBP,EAAAQ,EAAAC,KAAAV,EAAAW,GAAAA,OAAAL,IAAAM,EAAAX,EAAA,sBAgBG,WACnB,OAAKA,EAAKY,MAAMC,WACTC,GAAsB,SAACC,GAAO,IAAAC,EAAA,OACnCC,EAACC,GAAQC,MAAM,aAAYC,SACzBH,EAACI,EAAMC,EAAAA,EAAA,CACLC,KAAK,QACLC,QAAS,WAAF,OAAQT,EAAQU,KAAK,CAAEC,cAAe,WAAF,OAAQ1B,EAAKY,MAAMC,UAAU,GAAG,EAC3Ec,UAAWV,EAACW,EAAqB,CAAAC,SAAS,UAC1CC,GAAI,CAAEC,WAAY,KAClBC,QAAQ,aACY,QADDhB,EACfhB,EAAKY,MAAMqB,aAAK,IAAAjB,OAAA,EAAhBA,EAAkBkB,mBAAiB,CAAA,EAAA,uBAIjC,IAbuBjB,WAepCN,EAAAX,EAAA,eAEa,WAAK,IAAAmC,EACjBC,EAAyC,QAAzCD,EAA+BnC,EAAKY,aAAK,IAAAuB,EAAAA,EAAI,CAAE,EAAvChB,EAAKiB,EAALjB,MAAOkB,EAAWD,EAAXC,YACf,OAAIA,EAAoBpB,EAACqB,EAAW,CAACC,MAAOF,IACNpB,EAAjB,iBAAVE,EAA4BqB,EAChCC,EADuC,CAAArB,SAAAD,OAE/CnB,CAAA,CAAA,OAAA0C,EAAA3C,EAvCyB4C,GAuCzBC,EAAA7C,EAAA,CAAA,CAAA8C,IAAA,SAAAN,MAtCD,WAAM,IAAAO,EAAAC,EAAAC,EAAAC,EAAAC,EACJ,IAA2B,IAAvBzC,KAAKG,MAAMuC,QACf,OACEC,EAACC,EAAI/B,EAAAA,KAAqB,QAArBwB,EAAKrC,KAAKG,MAAMqB,aAAXa,IAAgBA,OAAhBA,EAAAA,EAAkBQ,WAAS,GAAA,CAAAlC,SAAA,CACb,QADa2B,EAClCtC,KAAKG,MAAM2C,kBAAXR,IAAqBA,OAArBA,EAAAA,EAAuBS,OACvB/C,KAAKgD,cACgB,QADHT,EAClBvC,KAAKG,MAAM2C,kBAAU,IAAAP,OAAA,EAArBA,EAAuBU,MACxBzC,EAAC0C,EAAI,CAAA7B,GAAI,CAAE8B,KAAM,aAAOX,EACvBxC,KAAKG,MAAMiD,mBAAW,IAAAZ,OAAA,EAAtBA,EAAwBO,OACxB/C,KAAKqD,qBACiBZ,QADGA,EACzBzC,KAAKG,MAAMiD,mBAAXX,IAAsBA,OAAtBA,EAAAA,EAAwBQ,SAG/B,IAAC,IA8CGlB,EAAQuB,GAAO,SAACnD,GAAsB,OAAKK,EAAC+C,EAAU1C,EAAA,CAAC2C,UAAOjC,QAAQ,aAAgBpB,GAAS,GAAvFmD,CAAyF,CACrGhC,WAAY,IACZ6B,KAAM,IAGFP,EAAOU,EAAOJ,EAAPI,CAAY,CACvBG,OAAQ,8BACRC,QAAS,OACTC,WAAY,SACZC,IAAK,MACLC,QAAS"}
1
+ {"version":3,"file":"toolbar-pannel.js","sources":["../../src/table-grid/toolbar-pannel.tsx"],"sourcesContent":["import React, { Component } from 'react'\r\nimport { Box, BoxProps, Button, ButtonProps, styled, Tooltip, Typography, TypographyProps } from '@mui/material'\r\nimport AddCircleOutlineIcon from '@mui/icons-material/AddCircleOutline'\r\nimport { mapGlobalModalContext } from '../api-context'\r\nimport { Breadcrumbs, IBreadcrumbConfig } from '../components'\r\n\r\nexport interface ISectionSlots {\r\n before?: React.ReactNode\r\n after?: React.ReactNode\r\n}\r\n\r\nexport interface IToolbarPannelProps {\r\n /** @default true */\r\n visible?: boolean\r\n searchInclude?: string[]\r\n breadcrumbs?: IBreadcrumbConfig[]\r\n title?: React.ReactNode\r\n titleSlots?: ISectionSlots\r\n formCreate?: React.ReactNode\r\n actionSlots?: ISectionSlots\r\n slots?: {\r\n rootProps?: BoxProps\r\n buttonCreateProps?: ButtonProps\r\n }\r\n}\r\n\r\nclass ToolbarPannel extends Component<IToolbarPannelProps> {\r\n render() {\r\n if (this.props.visible === false) return\r\n return (\r\n <Wrap {...this.props.slots?.rootProps}>\r\n {this.props.titleSlots?.before}\r\n {this.renderTitle()}\r\n {this.props.titleSlots?.after}\r\n <Box sx={{ flex: 1 }} />\r\n {this.props.actionSlots?.before}\r\n {this.renderButtonCreate()}\r\n {this.props.actionSlots?.after}\r\n </Wrap>\r\n )\r\n }\r\n\r\n renderButtonCreate = () => {\r\n if (!this.props.formCreate) return <></>\r\n return mapGlobalModalContext((context) => (\r\n <Tooltip title='Create new'>\r\n <Button\r\n size='small'\r\n onClick={() => context.show({ renderContent: () => this.props.formCreate })}\r\n startIcon={<AddCircleOutlineIcon fontSize='small' />}\r\n sx={{ fontWeight: 600 }}\r\n variant='contained'\r\n {...this.props.slots?.buttonCreateProps}\r\n >\r\n Create\r\n </Button>\r\n </Tooltip>\r\n ))\r\n }\r\n\r\n renderTitle = () => {\r\n const { title, breadcrumbs } = this.props ?? {}\r\n if (breadcrumbs) return <Breadcrumbs value={breadcrumbs} />\r\n if (typeof title === 'string') return <Title>{title}</Title>\r\n return <>{title}</>\r\n }\r\n}\r\n\r\nexport default ToolbarPannel\r\n\r\n// const SearchHelp = styled('ul')({\r\n// margin: '0 0 0 18px',\r\n// padding: 0,\r\n// li: {\r\n// position: 'relative'\r\n// },\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\r\nconst Title = styled((props: TypographyProps) => <Typography noWrap variant='subtitle1' {...props} />)({\r\n fontWeight: 700,\r\n flex: 1\r\n})\r\n\r\nconst Wrap = styled(Box)({\r\n height: 'var(--height-toolbar, 56px)',\r\n display: 'flex',\r\n alignItems: 'center',\r\n gap: '8px',\r\n padding: '0 6px'\r\n})\r\n"],"names":["ToolbarPannel","_this","_classCallCheck","_len","arguments","length","args","Array","_key","_callSuper","this","concat","_defineProperty","props","formCreate","mapGlobalModalContext","context","_this$props$slots","_jsx","Tooltip","title","children","Button","_objectSpread","size","onClick","show","renderContent","startIcon","AddCircleOutlineIcon","fontSize","sx","fontWeight","variant","slots","buttonCreateProps","_this$props","_ref","breadcrumbs","Breadcrumbs","value","Title","_Fragment","_inherits","Component","_createClass","key","_this$props$slots2","_this$props$titleSlot","_this$props$titleSlot2","_this$props$actionSlo","_this$props$actionSlo2","visible","_jsxs","Wrap","rootProps","titleSlots","before","renderTitle","after","Box","flex","actionSlots","renderButtonCreate","styled","Typography","noWrap","height","display","alignItems","gap","padding"],"mappings":"k1BA0BMA,IAAAA,aAAc,SAAAA,IAAA,IAAAC,EAAAC,OAAAF,GAAA,IAAA,IAAAG,EAAAC,UAAAC,OAAAC,EAAAC,IAAAA,MAAAJ,GAAAK,EAAA,EAAAA,EAAAL,EAAAK,IAAAF,EAAAE,GAAAJ,UAAAI,GAuCjB,OAvCiBP,EAAAQ,EAAAC,KAAAV,EAAAW,GAAAA,OAAAL,IAAAM,EAAAX,EAAA,sBAgBG,WACnB,OAAKA,EAAKY,MAAMC,WACTC,GAAsB,SAACC,GAAO,IAAAC,EAAA,OACnCC,EAACC,GAAQC,MAAM,aAAYC,SACzBH,EAACI,EAAMC,EAAAA,EAAA,CACLC,KAAK,QACLC,QAAS,WAAF,OAAQT,EAAQU,KAAK,CAAEC,cAAe,WAAF,OAAQ1B,EAAKY,MAAMC,UAAU,GAAG,EAC3Ec,UAAWV,EAACW,EAAqB,CAAAC,SAAS,UAC1CC,GAAI,CAAEC,WAAY,KAClBC,QAAQ,aACY,QADDhB,EACfhB,EAAKY,MAAMqB,aAAK,IAAAjB,OAAA,EAAhBA,EAAkBkB,mBAAiB,CAAA,EAAA,uBAIjC,IAbuBjB,WAepCN,EAAAX,EAAA,eAEa,WAAK,IAAAmC,EACjBC,EAAyC,QAAzCD,EAA+BnC,EAAKY,aAAK,IAAAuB,EAAAA,EAAI,CAAE,EAAvChB,EAAKiB,EAALjB,MAAOkB,EAAWD,EAAXC,YACf,OAAIA,EAAoBpB,EAACqB,EAAW,CAACC,MAAOF,IACNpB,EAAjB,iBAAVE,EAA4BqB,EAChCC,EADuC,CAAArB,SAAAD,OAE/CnB,CAAA,CAAA,OAAA0C,EAAA3C,EAvCyB4C,GAuCzBC,EAAA7C,EAAA,CAAA,CAAA8C,IAAA,SAAAN,MAtCD,WAAM,IAAAO,EAAAC,EAAAC,EAAAC,EAAAC,EACJ,IAA2B,IAAvBzC,KAAKG,MAAMuC,QACf,OACEC,EAACC,EAAI/B,EAAAA,KAAqB,QAArBwB,EAAKrC,KAAKG,MAAMqB,aAAXa,IAAgBA,OAAhBA,EAAAA,EAAkBQ,WAAS,GAAA,CAAAlC,SAAA,CACb,QADa2B,EAClCtC,KAAKG,MAAM2C,kBAAXR,IAAqBA,OAArBA,EAAAA,EAAuBS,OACvB/C,KAAKgD,cACgB,QADHT,EAClBvC,KAAKG,MAAM2C,kBAAU,IAAAP,OAAA,EAArBA,EAAuBU,MACxBzC,EAAC0C,EAAI,CAAA7B,GAAI,CAAE8B,KAAM,aAAOX,EACvBxC,KAAKG,MAAMiD,mBAAW,IAAAZ,OAAA,EAAtBA,EAAwBO,OACxB/C,KAAKqD,qBACiBZ,QADGA,EACzBzC,KAAKG,MAAMiD,mBAAXX,IAAsBA,OAAtBA,EAAAA,EAAwBQ,SAG/B,IAAC,IA8CGlB,EAAQuB,GAAO,SAACnD,GAAsB,OAAKK,EAAC+C,EAAU1C,EAAA,CAAC2C,UAAOjC,QAAQ,aAAgBpB,GAAS,GAAvFmD,CAAyF,CACrGhC,WAAY,IACZ6B,KAAM,IAGFP,EAAOU,EAAOJ,EAAPI,CAAY,CACvBG,OAAQ,8BACRC,QAAS,OACTC,WAAY,SACZC,IAAK,MACLC,QAAS"}
@@ -1,4 +1,4 @@
1
1
  import React from 'react';
2
- import { TableGridParams, TableGridProps } from './types';
3
- declare function CreateTableGrid<T extends object>(params: TableGridParams<T>): React.ComponentType<TableGridProps<T>>;
2
+ import { ITableGridParams, ITableGridProps } from './types';
3
+ declare function CreateTableGrid<T extends object>(params: ITableGridParams<T>): React.ComponentType<ITableGridProps<T>>;
4
4
  export default CreateTableGrid;
@@ -1,12 +1,12 @@
1
1
  import React, { ComponentType, ReactNode } from 'react';
2
2
  import { ListItemProps } from '@mui/material';
3
3
  import { ClosePopover, GlobalModalState } from '../api-context';
4
- export type TableGridItemActionType = 'Edit' | 'Delete';
5
- export interface TableGridItemActionsProps<T> {
4
+ export type ITableGridItemActionType = 'Edit' | 'Delete';
5
+ export interface ITableGridItemActionsBaseProps<T> {
6
6
  value: T;
7
7
  }
8
- type FormRenderFunc<T> = (value: T) => React.ReactNode;
9
- interface ListItemDef<T> {
8
+ export type IFormRenderFunc<T> = (value: T) => React.ReactNode;
9
+ export interface IListItemDef<T> {
10
10
  name: string;
11
11
  icon?: ReactNode;
12
12
  /** Whether this item should trigger a close action when clicked. @default true */
@@ -24,70 +24,69 @@ interface ListItemDef<T> {
24
24
  }>;
25
25
  }
26
26
  export interface TableGridItemActionsConfig<T> {
27
- formEdit?: FormRenderFunc<T>;
28
- formDelete?: FormRenderFunc<T>;
27
+ formEdit?: IFormRenderFunc<T>;
28
+ formDelete?: IFormRenderFunc<T>;
29
29
  buttonEditConfig?: GlobalModalState;
30
30
  buttonDeleteConfig?: GlobalModalState;
31
31
  menuList?: {
32
- before?: SingleOrArray<ListItemDef<T>>;
33
- after?: ListItemDef<T>;
32
+ before?: SingleOrArray<IListItemDef<T>>;
33
+ after?: IListItemDef<T>;
34
34
  };
35
35
  }
36
- interface IProps<T> extends TableGridItemActionsProps<T>, TableGridItemActionsConfig<T> {
36
+ export interface ITableGridItemActionsProps<T> extends ITableGridItemActionsBaseProps<T>, TableGridItemActionsConfig<T> {
37
37
  }
38
38
  export declare function CreateTableGridItemActions<T>(): {
39
- new (props: IProps<T>): {
39
+ new (props: ITableGridItemActionsProps<T>): {
40
40
  render(): import("react/jsx-runtime").JSX.Element;
41
41
  isVisible: () => boolean;
42
- renderItems: (value?: SingleOrArray<ListItemDef<T>>) => import("react/jsx-runtime").JSX.Element | import("react/jsx-runtime").JSX.Element[];
43
- renderItemWithForm: (name: TableGridItemActionType, form?: FormRenderFunc<T>, globalState?: GlobalModalState) => import("react/jsx-runtime").JSX.Element;
42
+ renderItems: (value?: SingleOrArray<IListItemDef<T>>) => import("react/jsx-runtime").JSX.Element | import("react/jsx-runtime").JSX.Element[];
43
+ renderItemWithForm: (name: ITableGridItemActionType, form?: IFormRenderFunc<T>, globalState?: GlobalModalState) => import("react/jsx-runtime").JSX.Element;
44
44
  context: unknown;
45
- setState<K extends never>(state: {} | ((prevState: Readonly<{}>, props: Readonly<IProps<T>>) => {} | Pick<{}, K> | null) | Pick<{}, K> | null, callback?: (() => void) | undefined): void;
45
+ setState<K extends never>(state: {} | ((prevState: Readonly<{}>, props: Readonly<ITableGridItemActionsProps<T>>) => {} | Pick<{}, K> | null) | Pick<{}, K> | null, callback?: (() => void) | undefined): void;
46
46
  forceUpdate(callback?: (() => void) | undefined): void;
47
- readonly props: Readonly<IProps<T>>;
47
+ readonly props: Readonly<ITableGridItemActionsProps<T>>;
48
48
  state: Readonly<{}>;
49
49
  refs: {
50
50
  [key: string]: React.ReactInstance;
51
51
  };
52
52
  componentDidMount?(): void;
53
- shouldComponentUpdate?(nextProps: Readonly<IProps<T>>, nextState: Readonly<{}>, nextContext: any): boolean;
53
+ shouldComponentUpdate?(nextProps: Readonly<ITableGridItemActionsProps<T>>, nextState: Readonly<{}>, nextContext: any): boolean;
54
54
  componentWillUnmount?(): void;
55
55
  componentDidCatch?(error: Error, errorInfo: React.ErrorInfo): void;
56
- getSnapshotBeforeUpdate?(prevProps: Readonly<IProps<T>>, prevState: Readonly<{}>): any;
57
- componentDidUpdate?(prevProps: Readonly<IProps<T>>, prevState: Readonly<{}>, snapshot?: any): void;
56
+ getSnapshotBeforeUpdate?(prevProps: Readonly<ITableGridItemActionsProps<T>>, prevState: Readonly<{}>): any;
57
+ componentDidUpdate?(prevProps: Readonly<ITableGridItemActionsProps<T>>, prevState: Readonly<{}>, snapshot?: any): void;
58
58
  componentWillMount?(): void;
59
59
  UNSAFE_componentWillMount?(): void;
60
- componentWillReceiveProps?(nextProps: Readonly<IProps<T>>, nextContext: any): void;
61
- UNSAFE_componentWillReceiveProps?(nextProps: Readonly<IProps<T>>, nextContext: any): void;
62
- componentWillUpdate?(nextProps: Readonly<IProps<T>>, nextState: Readonly<{}>, nextContext: any): void;
63
- UNSAFE_componentWillUpdate?(nextProps: Readonly<IProps<T>>, nextState: Readonly<{}>, nextContext: any): void;
60
+ componentWillReceiveProps?(nextProps: Readonly<ITableGridItemActionsProps<T>>, nextContext: any): void;
61
+ UNSAFE_componentWillReceiveProps?(nextProps: Readonly<ITableGridItemActionsProps<T>>, nextContext: any): void;
62
+ componentWillUpdate?(nextProps: Readonly<ITableGridItemActionsProps<T>>, nextState: Readonly<{}>, nextContext: any): void;
63
+ UNSAFE_componentWillUpdate?(nextProps: Readonly<ITableGridItemActionsProps<T>>, nextState: Readonly<{}>, nextContext: any): void;
64
64
  };
65
- new (props: IProps<T>, context: any): {
65
+ new (props: ITableGridItemActionsProps<T>, context: any): {
66
66
  render(): import("react/jsx-runtime").JSX.Element;
67
67
  isVisible: () => boolean;
68
- renderItems: (value?: SingleOrArray<ListItemDef<T>>) => import("react/jsx-runtime").JSX.Element | import("react/jsx-runtime").JSX.Element[];
69
- renderItemWithForm: (name: TableGridItemActionType, form?: FormRenderFunc<T>, globalState?: GlobalModalState) => import("react/jsx-runtime").JSX.Element;
68
+ renderItems: (value?: SingleOrArray<IListItemDef<T>>) => import("react/jsx-runtime").JSX.Element | import("react/jsx-runtime").JSX.Element[];
69
+ renderItemWithForm: (name: ITableGridItemActionType, form?: IFormRenderFunc<T>, globalState?: GlobalModalState) => import("react/jsx-runtime").JSX.Element;
70
70
  context: unknown;
71
- setState<K extends never>(state: {} | ((prevState: Readonly<{}>, props: Readonly<IProps<T>>) => {} | Pick<{}, K> | null) | Pick<{}, K> | null, callback?: (() => void) | undefined): void;
71
+ setState<K extends never>(state: {} | ((prevState: Readonly<{}>, props: Readonly<ITableGridItemActionsProps<T>>) => {} | Pick<{}, K> | null) | Pick<{}, K> | null, callback?: (() => void) | undefined): void;
72
72
  forceUpdate(callback?: (() => void) | undefined): void;
73
- readonly props: Readonly<IProps<T>>;
73
+ readonly props: Readonly<ITableGridItemActionsProps<T>>;
74
74
  state: Readonly<{}>;
75
75
  refs: {
76
76
  [key: string]: React.ReactInstance;
77
77
  };
78
78
  componentDidMount?(): void;
79
- shouldComponentUpdate?(nextProps: Readonly<IProps<T>>, nextState: Readonly<{}>, nextContext: any): boolean;
79
+ shouldComponentUpdate?(nextProps: Readonly<ITableGridItemActionsProps<T>>, nextState: Readonly<{}>, nextContext: any): boolean;
80
80
  componentWillUnmount?(): void;
81
81
  componentDidCatch?(error: Error, errorInfo: React.ErrorInfo): void;
82
- getSnapshotBeforeUpdate?(prevProps: Readonly<IProps<T>>, prevState: Readonly<{}>): any;
83
- componentDidUpdate?(prevProps: Readonly<IProps<T>>, prevState: Readonly<{}>, snapshot?: any): void;
82
+ getSnapshotBeforeUpdate?(prevProps: Readonly<ITableGridItemActionsProps<T>>, prevState: Readonly<{}>): any;
83
+ componentDidUpdate?(prevProps: Readonly<ITableGridItemActionsProps<T>>, prevState: Readonly<{}>, snapshot?: any): void;
84
84
  componentWillMount?(): void;
85
85
  UNSAFE_componentWillMount?(): void;
86
- componentWillReceiveProps?(nextProps: Readonly<IProps<T>>, nextContext: any): void;
87
- UNSAFE_componentWillReceiveProps?(nextProps: Readonly<IProps<T>>, nextContext: any): void;
88
- componentWillUpdate?(nextProps: Readonly<IProps<T>>, nextState: Readonly<{}>, nextContext: any): void;
89
- UNSAFE_componentWillUpdate?(nextProps: Readonly<IProps<T>>, nextState: Readonly<{}>, nextContext: any): void;
86
+ componentWillReceiveProps?(nextProps: Readonly<ITableGridItemActionsProps<T>>, nextContext: any): void;
87
+ UNSAFE_componentWillReceiveProps?(nextProps: Readonly<ITableGridItemActionsProps<T>>, nextContext: any): void;
88
+ componentWillUpdate?(nextProps: Readonly<ITableGridItemActionsProps<T>>, nextState: Readonly<{}>, nextContext: any): void;
89
+ UNSAFE_componentWillUpdate?(nextProps: Readonly<ITableGridItemActionsProps<T>>, nextState: Readonly<{}>, nextContext: any): void;
90
90
  };
91
91
  contextType?: React.Context<any> | undefined;
92
92
  };
93
- export {};
@@ -1,25 +1,25 @@
1
1
  import React, { Component } from 'react';
2
2
  import { BoxProps, ButtonProps } from '@mui/material';
3
3
  import { IBreadcrumbConfig } from '../components';
4
- interface SectionSlots {
4
+ export interface ISectionSlots {
5
5
  before?: React.ReactNode;
6
6
  after?: React.ReactNode;
7
7
  }
8
- export interface ToolbarPannelProps {
8
+ export interface IToolbarPannelProps {
9
9
  /** @default true */
10
10
  visible?: boolean;
11
11
  searchInclude?: string[];
12
12
  breadcrumbs?: IBreadcrumbConfig[];
13
13
  title?: React.ReactNode;
14
- titleSlots?: SectionSlots;
14
+ titleSlots?: ISectionSlots;
15
15
  formCreate?: React.ReactNode;
16
- actionSlots?: SectionSlots;
16
+ actionSlots?: ISectionSlots;
17
17
  slots?: {
18
18
  rootProps?: BoxProps;
19
19
  buttonCreateProps?: ButtonProps;
20
20
  };
21
21
  }
22
- declare class ToolbarPannel extends Component<ToolbarPannelProps> {
22
+ declare class ToolbarPannel extends Component<IToolbarPannelProps> {
23
23
  render(): import("react/jsx-runtime").JSX.Element | undefined;
24
24
  renderButtonCreate: () => import("react/jsx-runtime").JSX.Element;
25
25
  renderTitle: () => import("react/jsx-runtime").JSX.Element;
@@ -1,56 +1,56 @@
1
1
  import { ComponentType, ReactNode } from 'react';
2
2
  import { GridProps, RegularBreakpoints } from '@mui/material';
3
- import { ToolbarPannelProps } from './toolbar-pannel';
3
+ import { IToolbarPannelProps } from './toolbar-pannel';
4
4
  import { FilterBarParams, IFilterState } from '../filter-bar';
5
- import { TableGridItemActionsConfig, TableGridItemActionsProps } from './item-actions';
6
- export interface TableGridItemProps<T = any> {
5
+ import { TableGridItemActionsConfig, ITableGridItemActionsBaseProps } from './item-actions';
6
+ export interface ITableGridItemProps<T = any> {
7
7
  value: T;
8
8
  }
9
- export type GetSelecterIdFunc<T> = (item: T) => string;
10
- export interface PaginationModel {
9
+ export type IGetSelecterIdFunc<T> = (item: T) => string;
10
+ export interface IPaginationModel {
11
11
  page: number;
12
12
  pageSize: number;
13
13
  }
14
- export interface TableGridFilter<T> extends IFilterState<T> {
15
- pagination: PaginationModel;
14
+ export interface ITableGridFilter<T> extends IFilterState<T> {
15
+ pagination: IPaginationModel;
16
16
  loading?: boolean;
17
17
  }
18
- export interface TableGridFlexibleSlots<T> {
19
- item?: ComponentType<TableGridItemProps<T>>;
18
+ export interface ITableGridFlexibleSlots<T> {
19
+ item?: ComponentType<ITableGridItemProps<T>>;
20
20
  }
21
- export interface TableGridSlots<T> extends TableGridFlexibleSlots<T> {
21
+ export interface ITableGridSlots<T> extends ITableGridFlexibleSlots<T> {
22
22
  flex?: boolean;
23
23
  gridContainer?: GridProps;
24
24
  gridItem?: GridProps;
25
25
  toolbar?: ComponentType;
26
- toolbarProps?: ToolbarPannelProps;
27
- action?: ComponentType<TableGridItemActionsProps<T>>;
26
+ toolbarProps?: IToolbarPannelProps;
27
+ action?: ComponentType<ITableGridItemActionsBaseProps<T>>;
28
28
  actionProps?: TableGridItemActionsConfig<T>;
29
29
  }
30
- export interface TableGridInnerSlots<T> extends TableGridSlots<T> {
31
- TableGridItem: ComponentType<TableGridItemProps<T>>;
32
- ToolbarPannel: ComponentType<ToolbarPannelProps>;
30
+ export interface ITableGridInnerSlots<T> extends ITableGridSlots<T> {
31
+ TableGridItem: ComponentType<ITableGridItemProps<T>>;
32
+ ToolbarPannel: ComponentType<IToolbarPannelProps>;
33
33
  }
34
- export interface TableGridParams<T> extends TableGridFlexibleSlots<T> {
35
- getSelecterId: GetSelecterIdFunc<T>;
34
+ export interface ITableGridParams<T> extends ITableGridFlexibleSlots<T> {
35
+ getSelecterId: IGetSelecterIdFunc<T>;
36
36
  title?: ReactNode;
37
37
  filterBarConfig?: FilterBarParams<T>;
38
38
  size?: RegularBreakpoints;
39
- slots?: TableGridSlots<T>;
39
+ slots?: ITableGridSlots<T>;
40
40
  }
41
- export interface TableGridData<T> {
41
+ export interface ITableGridData<T> {
42
42
  items?: T[];
43
43
  totalItems?: number;
44
44
  }
45
- export interface TableGridProps<T> {
46
- data: TableGridData<T>;
47
- filter?: TableGridFilter<T>;
48
- onFilterChange?: (value: TableGridFilter<T>) => void;
49
- slots?: TableGridSlots<T>;
45
+ export interface ITableGridProps<T> {
46
+ data: ITableGridData<T>;
47
+ filter?: ITableGridFilter<T>;
48
+ onFilterChange?: (value: ITableGridFilter<T>) => void;
49
+ slots?: ITableGridSlots<T>;
50
50
  }
51
- export interface TableGridReduxState<T> {
52
- tableData: TableGridData<T>;
53
- tableFilter: TableGridFilter<T>;
54
- tableFilterThunk: TableGridFilter<T>;
51
+ export interface ITableGridReduxState<T> {
52
+ tableData: ITableGridData<T>;
53
+ tableFilter: ITableGridFilter<T>;
54
+ tableFilterThunk: ITableGridFilter<T>;
55
55
  }
56
- export type TableGridStateRedux<T, K extends keyof TableGridReduxState<T> = keyof TableGridReduxState<T>> = Pick<TableGridReduxState<T>, K>;
56
+ export type ITableGridStateRedux<T, K extends keyof ITableGridReduxState<T> = keyof ITableGridReduxState<T>> = Pick<ITableGridReduxState<T>, K>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dinocollab-core",
3
- "version": "1.0.13",
3
+ "version": "1.0.14",
4
4
  "description": "",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.js",