@iobroker/gui-components 10.3.16 → 10.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (59) hide show
  1. package/README.md +17 -1
  2. package/build/Components/AnimatedIcons/IconCopyToClipboard.d.ts +25 -0
  3. package/build/Components/AnimatedIcons/IconCopyToClipboard.js +84 -0
  4. package/build/Components/AnimatedIcons/IconCopyToClipboard.js.map +1 -0
  5. package/build/Components/AnimatedIcons/IconFilter.d.ts +23 -0
  6. package/build/Components/AnimatedIcons/IconFilter.js +26 -0
  7. package/build/Components/AnimatedIcons/IconFilter.js.map +1 -0
  8. package/build/Components/AnimatedIcons/IconFolder.d.ts +6 -0
  9. package/build/Components/AnimatedIcons/IconFolder.js +2 -1
  10. package/build/Components/AnimatedIcons/IconFolder.js.map +1 -1
  11. package/build/Components/AnimatedIcons/IconThemeMode.d.ts +22 -0
  12. package/build/Components/AnimatedIcons/IconThemeMode.js +32 -0
  13. package/build/Components/AnimatedIcons/IconThemeMode.js.map +1 -0
  14. package/build/Components/AnimatedIcons/IconUpload.d.ts +24 -0
  15. package/build/Components/AnimatedIcons/IconUpload.js +37 -0
  16. package/build/Components/AnimatedIcons/IconUpload.js.map +1 -0
  17. package/build/Components/AnimatedIcons/common.d.ts +2 -0
  18. package/build/Components/AnimatedIcons/common.js +64 -5
  19. package/build/Components/AnimatedIcons/common.js.map +1 -1
  20. package/build/Components/ColorPicker.js +4 -3
  21. package/build/Components/ColorPicker.js.map +1 -1
  22. package/build/Components/FileBrowser.d.ts +6 -0
  23. package/build/Components/FileBrowser.js +54 -12
  24. package/build/Components/FileBrowser.js.map +1 -1
  25. package/build/Components/FileViewer.js +3 -2
  26. package/build/Components/FileViewer.js.map +1 -1
  27. package/build/Components/ObjectBrowser/ObjectBrowserClass.d.ts +6 -0
  28. package/build/Components/ObjectBrowser/ObjectBrowserClass.js +66 -6
  29. package/build/Components/ObjectBrowser/ObjectBrowserClass.js.map +1 -1
  30. package/build/Components/ObjectBrowser/contextMenu.js +3 -2
  31. package/build/Components/ObjectBrowser/contextMenu.js.map +1 -1
  32. package/build/Components/ObjectBrowser/renderLeaf.js +55 -76
  33. package/build/Components/ObjectBrowser/renderLeaf.js.map +1 -1
  34. package/build/Components/ObjectBrowser/rowAnimation.d.ts +25 -1
  35. package/build/Components/ObjectBrowser/rowAnimation.js +46 -19
  36. package/build/Components/ObjectBrowser/rowAnimation.js.map +1 -1
  37. package/build/Components/ObjectBrowser/skeleton.d.ts +15 -0
  38. package/build/Components/ObjectBrowser/skeleton.js +106 -0
  39. package/build/Components/ObjectBrowser/skeleton.js.map +1 -0
  40. package/build/Components/ObjectBrowser/styles.js +16 -11
  41. package/build/Components/ObjectBrowser/styles.js.map +1 -1
  42. package/build/Components/ObjectBrowser/toolbar.js +18 -14
  43. package/build/Components/ObjectBrowser/toolbar.js.map +1 -1
  44. package/build/Components/ObjectBrowser/utils.d.ts +2 -0
  45. package/build/Components/ObjectBrowser/utils.js +2 -0
  46. package/build/Components/ObjectBrowser/utils.js.map +1 -1
  47. package/build/Components/ToggleThemeMenu.js +11 -8
  48. package/build/Components/ToggleThemeMenu.js.map +1 -1
  49. package/build/Components/TreeTable.d.ts +16 -0
  50. package/build/Components/TreeTable.js +106 -18
  51. package/build/Components/TreeTable.js.map +1 -1
  52. package/build/Dialogs/ComplexCron.js +3 -2
  53. package/build/Dialogs/ComplexCron.js.map +1 -1
  54. package/build/Dialogs/Error.js +3 -2
  55. package/build/Dialogs/Error.js.map +1 -1
  56. package/build/index.d.ts +4 -0
  57. package/build/index.js +4 -0
  58. package/build/index.js.map +1 -1
  59. package/package.json +5 -5
@@ -1 +1 @@
1
- {"version":3,"file":"TreeTable.js","sourceRoot":"./src/","sources":["Components/TreeTable.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { Component, type JSX } from 'react';\n\nimport {\n Box,\n Fab,\n Table,\n TableBody,\n TableCell,\n TableHead,\n TableRow,\n TableSortLabel,\n IconButton,\n Select,\n MenuItem,\n TextField,\n Checkbox,\n Tooltip,\n} from '@mui/material';\n\nimport {\n Edit as IconEdit,\n Delete as IconDelete,\n NavigateNext as IconExpand,\n Check as IconCheck,\n Close as IconClose,\n Add as IconAdd,\n ViewHeadline as IconList,\n} from '@mui/icons-material';\n\nimport type { Connection } from '../Connection';\n\nimport { DialogSelectID } from '../Dialogs/SelectID';\nimport { ColorPicker, parseColor } from './ColorPicker';\nimport { I18n } from '../i18n';\nimport { Utils } from './Utils';\nimport type { IobTheme, ThemeType } from '../types';\n\nfunction getAttr(obj: Record<string, any>, attr: string | string[], lookup?: Record<string, string>): any {\n if (typeof attr === 'string') {\n attr = attr.split('.');\n }\n\n if (!obj) {\n return null;\n }\n\n if (attr.length === 1) {\n if (lookup && lookup[obj[attr[0]]]) {\n return lookup[obj[attr[0]]];\n }\n return obj[attr[0]];\n }\n\n const name: string = attr.shift() || '';\n return getAttr(obj[name], attr);\n}\n\nfunction setAttr(obj: Record<string, any>, attr: string | string[], value: any): void {\n if (typeof attr === 'string') {\n attr = attr.split('.');\n }\n\n if (attr.length === 1) {\n return (obj[attr[0]] = value);\n }\n const name: string = attr.shift()!;\n if (obj[name] === null || obj[name] === undefined) {\n obj[name] = {};\n }\n return setAttr(obj[name], attr, value);\n}\n\n/** Checkerboard, so a semi-transparent color is recognizable as such */\nconst ALPHA_BACKGROUND =\n 'linear-gradient(45deg, #c0c0c0 25%, transparent 25%), linear-gradient(-45deg, #c0c0c0 25%, transparent 25%), linear-gradient(45deg, transparent 75%, #c0c0c0 75%), linear-gradient(-45deg, transparent 75%, #c0c0c0 75%)';\n\nconst styles: Record<string, any> = {\n tableContainer: {\n width: '100%',\n height: '100%',\n overflow: 'auto',\n },\n table: {\n width: '100%',\n minWidth: 800,\n maxWidth: 1920,\n borderCollapse: 'separate',\n },\n cell: (theme: IobTheme) => ({\n py: '4px',\n px: '8px',\n borderBottom: `1px solid ${theme.palette.divider}`,\n }),\n row: (theme: IobTheme) => ({\n transition: 'background-color 0.15s ease-in-out',\n '&:hover': {\n backgroundColor: theme.palette.action.hover,\n },\n // Show the row actions only while the row is hovered or focused. Only the buttons are faded out -\n // the cell itself must stay visible, else its bottom border would disappear too.\n '& .iob-table-actions .MuiIconButton-root': {\n opacity: 0,\n transition: 'opacity 0.15s ease-in-out',\n },\n '&:hover .iob-table-actions .MuiIconButton-root, &:focus-within .iob-table-actions .MuiIconButton-root': {\n opacity: 1,\n },\n }),\n rowMainWithChildren: {},\n rowMainWithoutChildren: {},\n rowNoEdit: {\n opacity: 0.35,\n },\n rowEditing: (theme: IobTheme) => ({\n backgroundColor: theme.palette.action.selected,\n '& .iob-table-actions .MuiIconButton-root': {\n opacity: 1,\n },\n }),\n cellExpand: {\n width: 36,\n pr: 0,\n },\n cellButton: {\n width: 40,\n textAlign: 'center',\n },\n cellHeader: (theme: IobTheme) => ({\n fontWeight: 600,\n fontSize: '0.72rem',\n textTransform: 'uppercase',\n letterSpacing: '0.06em',\n lineHeight: 1.4,\n backgroundColor: theme.palette.background.default,\n color: theme.palette.text.secondary,\n borderBottom: `2px solid ${theme.palette.divider}`,\n height: 44,\n wordBreak: 'break-word',\n whiteSpace: 'nowrap',\n '& .MuiTableSortLabel-root': {\n color: 'inherit',\n },\n '& .MuiTableSortLabel-root:hover, & .MuiTableSortLabel-root.Mui-active': {\n color: theme.palette.text.primary,\n },\n }),\n width_name_nicknames: {\n maxWidth: 150,\n },\n width_ioType: {\n maxWidth: 100,\n },\n width_type: {\n maxWidth: 100,\n },\n width_displayTraits: {\n maxWidth: 100,\n },\n width_roomHint: {\n maxWidth: 100,\n },\n rowSecondary: {},\n cellSecondary: (theme: IobTheme) => ({\n fontSize: '0.8rem',\n color: theme.palette.text.secondary,\n }),\n /** Vertical guide in front of a child row, so the hierarchy stays readable */\n childIndent: (theme: IobTheme) => ({\n display: 'inline-block',\n borderLeft: `1px solid ${theme.palette.divider}`,\n height: 20,\n mr: '8px',\n verticalAlign: 'middle',\n }),\n expandButton: {\n transition: 'transform 0.15s ease-in-out',\n },\n expandButtonOpened: {\n transform: 'rotate(90deg)',\n },\n visuallyHidden: {\n border: 0,\n clip: 'rect(0 0 0 0)',\n height: 1,\n margin: -1,\n overflow: 'hidden',\n padding: 0,\n position: 'absolute',\n top: 20,\n width: 1,\n },\n fieldEditWithButton: {\n width: 'calc(100% - 33px)',\n display: 'inline-block',\n },\n fieldEdit: {\n width: '100%',\n display: 'inline-block',\n verticalAlign: 'middle',\n },\n fieldButton: {\n width: 30,\n display: 'inline-block',\n },\n mainText: {\n fontSize: '0.875rem',\n },\n subText: {\n fontSize: '0.7rem',\n opacity: 0.7,\n },\n /** Color cell: swatch plus the value in a monospace font */\n colorCell: {\n display: 'flex',\n alignItems: 'center',\n gap: '8px',\n },\n colorSwatch: {\n width: 22,\n height: 22,\n flexShrink: 0,\n borderRadius: '5px',\n boxShadow: '0 0 0 1px rgba(128,128,128,.35) inset',\n backgroundImage: ALPHA_BACKGROUND,\n backgroundSize: '8px 8px',\n backgroundPosition: '0 0, 0 4px, 4px -4px, -4px 0px',\n },\n colorSwatchEmpty: {\n border: '1px dashed',\n borderColor: 'divider',\n backgroundImage: 'none',\n boxSizing: 'border-box',\n },\n colorSwatchFill: {\n width: '100%',\n height: '100%',\n borderRadius: 'inherit',\n },\n colorValue: {\n fontFamily: 'monospace',\n fontSize: '0.78rem',\n whiteSpace: 'nowrap',\n },\n colorValueInvalid: {\n color: 'error.main',\n },\n glow: {\n animation: 'glow 0.2s 2 alternate',\n },\n};\n\nfunction descendingComparator(\n a: Record<string, any>,\n b: Record<string, any>,\n orderBy: string,\n lookup?: Record<string, string>,\n): number {\n const _a = getAttr(a, orderBy, lookup) || '';\n const _b = getAttr(b, orderBy, lookup) || '';\n\n if (_b < _a) {\n return -1;\n }\n if (_b > _a) {\n return 1;\n }\n return 0;\n}\n\nfunction getComparator(\n order: 'desc' | 'asc',\n orderBy: string,\n lookup?: Record<string, string>,\n): (a: Record<string, any>, b: Record<string, any>) => number {\n return order === 'desc'\n ? (a, b) => descendingComparator(a, b, orderBy, lookup)\n : (a, b) => -descendingComparator(a, b, orderBy, lookup);\n}\n\nfunction stableSort(\n array: Record<string, any>[],\n comparator: (a: Record<string, any>, b: Record<string, any>) => number,\n): Record<string, any>[] {\n const stabilizedThis: { e: Record<string, any>; i: number }[] = array.map((el, index) => ({ e: el, i: index }));\n\n stabilizedThis.sort((a, b) => {\n const order = comparator(a.e, b.e);\n if (order) {\n return order;\n }\n return a.i - b.i;\n });\n\n return stabilizedThis.map(item => item.e);\n}\n\ninterface Column {\n cellStyle?: Record<string, any>;\n editComponent?: React.FC<{ value: any; rowData: Record<string, any>; onChange: (newValue: any) => void }>;\n field: string;\n headerStyle?: Record<string, any>;\n hidden?: boolean;\n lookup?: Record<string, string>;\n editable?: boolean | 'never';\n title?: string;\n type?: 'string' | 'boolean' | 'numeric' | 'icon' | 'oid' | 'color';\n subField?: string;\n subLookup?: Record<string, string>;\n subStyle?: Record<string, any>;\n}\n\ninterface TreeTableProps {\n data: Record<string, any>[];\n className?: string;\n /** name of table to save settings in localStorage */\n name?: string;\n columns: Column[];\n noSort?: boolean;\n onUpdate?: ((newData: Record<string, any>, oldData: Record<string, any>) => void) | ((addNew: true) => void);\n onDelete?: (oldData: Record<string, any>) => void;\n /** hide add button */\n noAdd?: boolean;\n themeType?: ThemeType;\n glowOnChange?: boolean;\n /** only if an oid type is used */\n socket?: Connection;\n /** Shift in pixels for every level */\n levelShift?: number;\n adapterName: string;\n theme: IobTheme;\n}\n\ninterface TreeTableState {\n opened: string[];\n editMode: number | false;\n deleteMode: number | false;\n editData: Record<string, any> | null;\n order: 'desc' | 'asc';\n update: string[] | null;\n orderBy: string;\n selectIdValue?: string | null;\n showSelectId?: boolean;\n data?: Record<string, any>[];\n}\n\nexport class TreeTable extends Component<TreeTableProps, TreeTableState> {\n private selectCallback: ((selected: string) => void) | null = null;\n\n private updateTimeout: ReturnType<typeof setTimeout> | null = null;\n\n constructor(props: TreeTableProps) {\n super(props);\n\n let opened =\n ((window as any)._localStorage || window.localStorage).getItem(this.props.name || 'iob-table') || '[]';\n try {\n opened = JSON.parse(opened) || [];\n } catch {\n opened = [];\n }\n if (!Array.isArray(opened)) {\n opened = [];\n }\n\n this.state = {\n opened,\n editMode: false,\n deleteMode: false,\n editData: null,\n order: 'asc',\n update: null,\n orderBy: this.props.columns[0].field,\n };\n }\n\n componentWillUnmount(): void {\n if (this.updateTimeout) {\n clearTimeout(this.updateTimeout);\n this.updateTimeout = null;\n }\n }\n\n static getDerivedStateFromProps(props: TreeTableProps, state: TreeTableState): Partial<TreeTableState> {\n if (props.glowOnChange) {\n const update: string[] = [];\n let count = 0;\n if (props.data && state.data) {\n props.data.forEach(line => {\n count++;\n const oldLine = state.data?.find(it => it.id === line.id);\n if (oldLine) {\n if (JSON.stringify(oldLine) !== JSON.stringify(line)) {\n update.push(line.id);\n }\n } else {\n update.push(line.id);\n }\n });\n }\n\n if (update.length && update.length !== count) {\n return { data: props.data, update };\n }\n return { data: props.data };\n }\n\n return { data: props.data };\n }\n\n renderCellEdit(item: Record<string, any>, col: Column): JSX.Element | null {\n let val = getAttr(item, col.field);\n if (Array.isArray(val)) {\n val = val[0];\n }\n\n if (col.lookup) {\n return this.renderCellEditSelect(col, val);\n }\n if (col.editComponent) {\n return this.renderCellEditCustom(col, val, item);\n }\n if (col.type === 'boolean' || (!col.type && typeof val === 'boolean')) {\n return this.renderCellEditBoolean(col, val);\n }\n if (col.type === 'color') {\n return this.renderCellEditColor(col, val);\n }\n if (col.type === 'oid') {\n return this.renderCellEditObjectID(col, val);\n }\n if (col.type === 'numeric') {\n return this.renderCellEditNumber(col, val);\n }\n\n return this.renderCellEditString(col, val);\n }\n\n onChange(col: Column, oldValue: string | number | boolean, newValue: string | number | boolean): void {\n const editData = this.state.editData ? { ...this.state.editData } : {};\n if (newValue === oldValue) {\n delete editData[col.field];\n } else {\n editData[col.field] = newValue;\n }\n this.setState({ editData });\n }\n\n renderCellEditSelect(col: Column, val: string | number): JSX.Element {\n return (\n <Select\n variant=\"standard\"\n onChange={e => this.onChange(col, val, e.target.value)}\n value={(this.state.editData && this.state.editData[col.field]) || val}\n >\n {col.lookup &&\n Object.keys(col.lookup).map((v, i) => (\n <MenuItem\n key={i}\n value={v}\n >\n {col.lookup?.[v]}\n </MenuItem>\n ))}\n </Select>\n );\n }\n\n renderCellEditString(col: Column, val: string): JSX.Element {\n return (\n <TextField\n variant=\"standard\"\n style={styles.fieldEdit}\n fullWidth\n value={\n this.state.editData && this.state.editData[col.field] !== undefined\n ? this.state.editData[col.field]\n : val\n }\n onChange={e => this.onChange(col, val, e.target.value)}\n />\n );\n }\n\n renderCellEditNumber(col: Column, val: number): JSX.Element {\n return (\n <TextField\n variant=\"standard\"\n style={styles.fieldEdit}\n type=\"number\"\n fullWidth\n value={\n this.state.editData && this.state.editData[col.field] !== undefined\n ? this.state.editData[col.field]\n : val\n }\n onChange={e => this.onChange(col, val, e.target.value)}\n />\n );\n }\n\n renderCellEditCustom(col: Column, val: any, item: Record<string, any>): JSX.Element | null {\n const EditComponent = col.editComponent;\n\n // use new value if exists\n if (this.state.editData && this.state.editData[col.field] !== undefined) {\n val = this.state.editData[col.field];\n item = JSON.parse(JSON.stringify(item));\n item[col.field] = val;\n }\n\n return EditComponent ? (\n <EditComponent\n value={val}\n rowData={item}\n onChange={(newVal: any) => this.onChange(col, val, newVal as string | number)}\n />\n ) : null;\n }\n\n renderCellEditBoolean(col: Column, val: boolean): JSX.Element {\n return (\n <Checkbox\n checked={\n this.state.editData && this.state.editData[col.field] !== undefined\n ? !!this.state.editData[col.field]\n : !!val\n }\n onChange={e => this.onChange(col, !!val, e.target.checked)}\n slotProps={{ input: { 'aria-label': 'checkbox' } }}\n />\n );\n }\n\n renderCellEditColor(col: Column, val: string): JSX.Element {\n const _val =\n this.state.editData && this.state.editData[col.field] !== undefined ? this.state.editData[col.field] : val;\n return (\n <ColorPicker\n id={`ar_tree_table_color_${col.field}`}\n style={styles.fieldEdit}\n value={(_val as string) || ''}\n onChange={color => this.onChange(col, val, color)}\n />\n );\n }\n\n renderSelectIdDialog(): JSX.Element | null {\n if (this.state.showSelectId && this.props.socket) {\n return (\n <DialogSelectID\n key=\"tableSelect\"\n imagePrefix=\"../..\"\n dialogName={this.props.adapterName}\n themeType={this.props.themeType}\n theme={this.props.theme}\n socket={this.props.socket}\n selected={this.state.selectIdValue || undefined}\n onClose={() => this.setState({ showSelectId: false })}\n onOk={(selected: string | string[] | undefined) => {\n this.setState({ showSelectId: false, selectIdValue: null });\n const selectedStr: string | undefined = Array.isArray(selected) ? selected[0] : selected;\n if (selectedStr && this.selectCallback) {\n this.selectCallback && this.selectCallback(selectedStr);\n this.selectCallback = null;\n }\n }}\n />\n );\n }\n\n return null;\n }\n\n renderCellEditObjectID(col: Column, val: string): JSX.Element {\n return (\n <div style={styles.fieldEdit}>\n <TextField\n variant=\"standard\"\n fullWidth\n style={styles.fieldEditWithButton}\n value={\n this.state.editData && this.state.editData[col.field] !== undefined\n ? this.state.editData[col.field]\n : val\n }\n onChange={e => this.onChange(col, val, e.target.value)}\n />\n\n <IconButton\n style={styles.fieldButton}\n onClick={() => {\n this.selectCallback = selected => this.onChange(col, val, selected);\n this.setState({ showSelectId: true, selectIdValue: val });\n }}\n size=\"large\"\n >\n <IconList />\n </IconButton>\n </div>\n );\n }\n\n /**\n * Show a color as swatch together with its value.\n *\n * @param color The color in any CSS notation.\n */\n static renderColorValue(color: string): JSX.Element {\n const isValid = !!color && !!parseColor(color);\n\n return (\n <Box\n component=\"div\"\n sx={styles.colorCell}\n >\n <Box\n component=\"div\"\n sx={{ ...styles.colorSwatch, ...(isValid ? undefined : styles.colorSwatchEmpty) }}\n title={color || undefined}\n >\n {isValid ? (\n <Box\n component=\"div\"\n sx={styles.colorSwatchFill}\n style={{ background: color }}\n />\n ) : null}\n </Box>\n <Box\n component=\"span\"\n sx={{ ...styles.colorValue, ...(color && !isValid ? styles.colorValueInvalid : undefined) }}\n >\n {color || ''}\n </Box>\n </Box>\n );\n }\n\n static renderCellNonEdit(item: Record<string, any>, col: Column): JSX.Element | string | number | null {\n let val = getAttr(item, col.field, col.lookup);\n if (Array.isArray(val)) {\n val = val[0];\n }\n\n if (col.type === 'boolean') {\n return (\n <Checkbox\n checked={!!val}\n disabled\n size=\"small\"\n slotProps={{ input: { 'aria-label': 'checkbox' } }}\n />\n );\n }\n\n if (col.type === 'color') {\n return TreeTable.renderColorValue(typeof val === 'string' ? val : '');\n }\n\n return val;\n }\n\n renderCell(item: Record<string, any>, col: Column, level: number, i: number): JSX.Element {\n const isEdit = this.state.editMode === i && col.editable !== 'never' && col.editable !== false;\n\n return (\n <TableCell\n key={col.field}\n sx={Utils.getStyle(this.props.theme, styles.cell, level ? styles.cellSecondary : undefined)}\n style={col.cellStyle}\n component=\"th\"\n >\n {isEdit ? this.renderCellEdit(item, col) : TreeTable.renderCellNonEdit(item, col)}\n </TableCell>\n );\n }\n\n static renderCellWithSubField(item: Record<string, any>, col: Column): JSX.Element {\n const main = getAttr(item, col.field, col.lookup);\n if (col.subField) {\n const sub = getAttr(item, col.subField, col.subLookup);\n return (\n <div>\n <div style={styles.mainText}>{main}</div>\n <div style={{ ...styles.subText, ...(col.subStyle || undefined) }}>{sub}</div>\n </div>\n );\n }\n return (\n <div>\n <div style={styles.mainText}>{main}</div>\n </div>\n );\n }\n\n renderLine(item: Record<string, any>, level?: number): JSX.Element | JSX.Element[] | null {\n const levelShift = this.props.levelShift === undefined ? 24 : this.props.levelShift;\n\n level = level || 0;\n const i = this.props.data.indexOf(item);\n if (!item) {\n return null;\n }\n if (!level && item.parentId) {\n return null;\n }\n if (level && !item.parentId) {\n return null; // should never happen\n }\n // try to find children\n const opened = this.state.opened.includes(item.id);\n const children = this.props.data.filter(it => it.parentId === item.id);\n\n const isEditingThis = this.state.editMode === i || this.state.deleteMode === i;\n const isBlurred =\n (this.state.editMode !== false && this.state.editMode !== i) ||\n (this.state.deleteMode !== false && this.state.deleteMode !== i);\n\n const row = (\n <TableRow\n key={item.id}\n className={`table-row-${(item.id || '').toString().replace(/[.$]/g, '_')}`}\n sx={Utils.getStyle(\n this.props.theme,\n styles.row,\n level ? styles.rowSecondary : undefined,\n !level && children.length ? styles.rowMainWithChildren : undefined,\n !level && !children.length ? styles.rowMainWithoutChildren : undefined,\n isEditingThis ? styles.rowEditing : undefined,\n isBlurred ? styles.rowNoEdit : undefined,\n )}\n style={\n this.state.update && this.state.update.includes(item.id)\n ? { ...(styles.glow as React.CSSProperties) }\n : undefined\n }\n >\n <TableCell\n sx={Utils.getStyle(\n this.props.theme,\n styles.cell,\n styles.cellExpand,\n level ? styles.cellSecondary : undefined,\n )}\n >\n {children.length ? (\n <IconButton\n sx={{\n ...styles.expandButton,\n ...(opened ? styles.expandButtonOpened : undefined),\n }}\n title={I18n.t(opened ? 'ra_Collapse' : 'ra_Expand')}\n onClick={() => {\n const _opened = [...this.state.opened];\n const pos = _opened.indexOf(item.id);\n if (pos === -1) {\n _opened.push(item.id);\n _opened.sort();\n } else {\n _opened.splice(pos, 1);\n }\n\n ((window as any)._localStorage || window.localStorage).setItem(\n this.props.name || 'iob-table',\n JSON.stringify(_opened),\n );\n\n this.setState({ opened: _opened });\n }}\n size=\"small\"\n >\n <IconExpand fontSize=\"small\" />\n </IconButton>\n ) : null}\n </TableCell>\n <TableCell\n scope=\"row\"\n sx={Utils.getStyle(this.props.theme, styles.cell, level ? styles.cellSecondary : undefined)}\n style={{ ...this.props.columns[0].cellStyle, paddingLeft: levelShift * level }}\n >\n <Box\n component=\"div\"\n sx={{ display: 'flex', alignItems: 'center' }}\n >\n {level ? (\n <Box\n component=\"span\"\n sx={styles.childIndent}\n />\n ) : null}\n {this.props.columns[0].subField\n ? TreeTable.renderCellWithSubField(item, this.props.columns[0])\n : getAttr(item, this.props.columns[0].field, this.props.columns[0].lookup)}\n </Box>\n </TableCell>\n\n {this.props.columns.map((col, ii) =>\n !ii && !col.hidden ? null : this.renderCell(item, col, level, i),\n )}\n\n {this.props.onUpdate ? (\n <TableCell\n className=\"iob-table-actions\"\n sx={Utils.getStyle(this.props.theme, styles.cell, styles.cellButton)}\n >\n {isEditingThis ? (\n <Tooltip title={I18n.t(this.state.editMode !== false ? 'ra_Save' : 'ra_Delete')}>\n <span>\n <IconButton\n color={this.state.deleteMode !== false ? 'error' : 'primary'}\n disabled={\n this.state.editMode !== false &&\n (!this.state.editData || !Object.keys(this.state.editData).length)\n }\n onClick={() => {\n if (this.state.editMode !== false) {\n const newData = JSON.parse(JSON.stringify(item));\n this.state.editData &&\n Object.keys(this.state.editData).forEach(attr =>\n setAttr(newData, attr, this.state.editData?.[attr]),\n );\n this.setState(\n { editMode: false },\n () => this.props.onUpdate && this.props.onUpdate(newData, item),\n );\n } else {\n this.setState(\n { deleteMode: false },\n () => this.props.onDelete && this.props.onDelete(item),\n );\n }\n }}\n size=\"small\"\n >\n <IconCheck fontSize=\"small\" />\n </IconButton>\n </span>\n </Tooltip>\n ) : (\n <Tooltip title={I18n.t('ra_Edit')}>\n <span>\n <IconButton\n disabled={this.state.editMode !== false}\n onClick={() => this.setState({ editMode: i, editData: null })}\n size=\"small\"\n >\n <IconEdit fontSize=\"small\" />\n </IconButton>\n </span>\n </Tooltip>\n )}\n </TableCell>\n ) : null}\n\n {this.props.onDelete && !this.props.onUpdate ? (\n <TableCell\n className=\"iob-table-actions\"\n sx={Utils.getStyle(this.props.theme, styles.cell, styles.cellButton)}\n >\n {this.state.deleteMode === i ? (\n <Tooltip title={I18n.t('ra_Delete')}>\n <span>\n <IconButton\n color=\"error\"\n disabled={\n this.state.editMode !== false &&\n (!this.state.editData || !Object.keys(this.state.editData).length)\n }\n onClick={() =>\n this.setState(\n { deleteMode: false },\n () => this.props.onDelete && this.props.onDelete(item),\n )\n }\n size=\"small\"\n >\n <IconCheck fontSize=\"small\" />\n </IconButton>\n </span>\n </Tooltip>\n ) : null}\n </TableCell>\n ) : null}\n\n {this.props.onUpdate || this.props.onDelete ? (\n <TableCell\n className=\"iob-table-actions\"\n sx={Utils.getStyle(this.props.theme, styles.cell, styles.cellButton)}\n >\n {isEditingThis ? (\n <Tooltip title={I18n.t('ra_Cancel')}>\n <IconButton\n onClick={() => this.setState({ editMode: false, deleteMode: false })}\n size=\"small\"\n >\n <IconClose fontSize=\"small\" />\n </IconButton>\n </Tooltip>\n ) : this.props.onDelete ? (\n <Tooltip title={I18n.t('ra_Delete')}>\n <span>\n <IconButton\n disabled={this.state.deleteMode !== false}\n onClick={() => this.setState({ deleteMode: i })}\n size=\"small\"\n >\n <IconDelete fontSize=\"small\" />\n </IconButton>\n </span>\n </Tooltip>\n ) : null}\n </TableCell>\n ) : null}\n </TableRow>\n );\n\n if (!level && opened) {\n const items: JSX.Element[] = children.map(it => this.renderLine(it, level + 1)) as JSX.Element[];\n items.unshift(row);\n return items;\n }\n return row;\n }\n\n handleRequestSort(property: string): void {\n const isAsc = this.state.orderBy === property && this.state.order === 'asc';\n this.setState({ order: isAsc ? 'desc' : 'asc', orderBy: property });\n }\n\n renderHead(): JSX.Element {\n return (\n <TableHead>\n <TableRow key=\"headerRow\">\n <TableCell\n component=\"th\"\n sx={Utils.getStyle(this.props.theme, styles.cell, styles.cellHeader, styles.cellExpand)}\n />\n <TableCell\n component=\"th\"\n sx={Utils.getStyle(\n this.props.theme,\n styles.cell,\n styles.cellHeader,\n styles[`width_${this.props.columns[0].field.replace(/\\./g, '_')}`],\n )}\n style={this.props.columns[0].headerStyle || this.props.columns[0].cellStyle}\n sortDirection={\n this.props.noSort\n ? false\n : this.state.orderBy === this.props.columns[0].field\n ? this.state.order\n : false\n }\n >\n {this.props.noSort ? null : (\n <TableSortLabel\n active={this.state.orderBy === this.props.columns[0].field}\n direction={\n this.state.orderBy === this.props.columns[0].field ? this.state.order : 'asc'\n }\n onClick={() => this.handleRequestSort(this.props.columns[0].field)}\n >\n {this.props.columns[0].title || this.props.columns[0].field}\n {this.state.orderBy === this.props.columns[0].field ? (\n <span style={styles.visuallyHidden}>\n {this.state.order === 'desc' ? 'sorted descending' : 'sorted ascending'}\n </span>\n ) : null}\n </TableSortLabel>\n )}\n </TableCell>\n {this.props.columns.map((col, i) =>\n !i && !col.hidden ? null : (\n <TableCell\n key={col.field}\n sx={Utils.getStyle(\n this.props.theme,\n styles.cell,\n styles.cellHeader,\n styles[`width_${col.field.replace(/\\./g, '_')}`],\n )}\n style={col.headerStyle || col.cellStyle}\n component=\"th\"\n >\n {this.props.noSort ? null : (\n <TableSortLabel\n active={this.state.orderBy === col.field}\n direction={this.state.orderBy === col.field ? this.state.order : 'asc'}\n onClick={() => this.handleRequestSort(col.field)}\n >\n {col.title || col.field}\n {this.state.orderBy === col.field ? (\n <span style={styles.visuallyHidden}>\n {this.state.order === 'desc' ? 'sorted descending' : 'sorted ascending'}\n </span>\n ) : null}\n </TableSortLabel>\n )}\n </TableCell>\n ),\n )}\n {this.props.onUpdate ? (\n <TableCell\n component=\"th\"\n sx={Utils.getStyle(this.props.theme, styles.cell, styles.cellHeader, styles.cellButton)}\n >\n {!this.props.noAdd ? (\n <Tooltip title={I18n.t('ra_Add')}>\n <span>\n <Fab\n color=\"primary\"\n size=\"small\"\n sx={{ width: 30, height: 30, minHeight: 30, boxShadow: 2 }}\n disabled={this.state.editMode !== false}\n onClick={() =>\n this.props.onUpdate &&\n (this.props.onUpdate as (addNew: true) => void)(true)\n }\n >\n <IconAdd fontSize=\"small\" />\n </Fab>\n </span>\n </Tooltip>\n ) : null}\n </TableCell>\n ) : null}\n {this.props.onDelete || this.props.onUpdate ? (\n <TableCell\n component=\"th\"\n sx={Utils.getStyle(this.props.theme, styles.cell, styles.cellHeader, styles.cellButton)}\n />\n ) : null}\n </TableRow>\n </TableHead>\n );\n }\n\n render(): JSX.Element | null {\n const col = this.props.columns.find(_col => _col.field === this.state.orderBy);\n if (col) {\n const lookup = col.lookup;\n const table = stableSort(this.props.data, getComparator(this.state.order, this.state.orderBy, lookup));\n\n if (this.state.update && this.state.update.length) {\n this.updateTimeout && clearTimeout(this.updateTimeout);\n this.updateTimeout = setTimeout(() => {\n this.updateTimeout = null;\n this.setState({ update: null });\n }, 500);\n }\n\n return (\n <div\n style={styles.tableContainer}\n className={this.props.className}\n >\n <Table\n style={styles.table}\n aria-label=\"simple table\"\n size=\"small\"\n stickyHeader\n >\n {this.renderHead()}\n <TableBody>{table.map(it => this.renderLine(it))}</TableBody>\n </Table>\n {this.renderSelectIdDialog()}\n </div>\n );\n }\n\n return null;\n }\n}\n/*\nconst columns = [\n {\n title: 'Name of field', // required, else it will be \"field\"\n field: 'fieldIdInData', // required\n editable: false, // or true [default - true]\n cellStyle: { // CSS style - // optional\n maxWidth: '12rem',\n overflow: 'hidden',\n wordBreak: 'break-word'\n },\n lookup: { // optional => edit will be automatically \"SELECT\"\n 'value1': 'text1',\n 'value2': 'text2',\n }\n },\n {\n title: 'Type', // required, else it will be \"field\"\n field: 'myType', // required\n editable: true, // or true [default - true]\n lookup: { // optional => edit will be automatically \"SELECT\"\n 'number': 'Number',\n 'string': 'String',\n 'boolean': 'Boolean',\n },\n type: 'number/string/color/oid/icon/boolean', // oid=ObjectID,icon=base64-icon\n editComponent: props =>\n <div>Prefix&#123; <br/>\n <textarea\n rows={4}\n style={{width: '100%', resize: 'vertical'}}\n value={props.value}\n onChange={e => props.onChange(e.target.value)}\n />\n Suffix\n </div>,\n },\n];\n*/\n/* const data = [\n {\n id: 'UniqueID1' // required\n fieldIdInData: 'Name1',\n myType: 'number',\n },\n {\n id: 'UniqueID2' // required\n fieldIdInData: 'Name12',\n myType: 'string',\n },\n];\n */\n\n/*\n// STYLES\nconst styles = theme => ({\n tableDiv: {\n width: '100%',\n overflow: 'hidden',\n height: 'calc(100% - 48px)',\n },\n});\n// renderTable\nrenderTable() {\n return <div style={styles.tableDiv}>\n <TreeTable\n columns={this.columns}\n data={lines}\n onUpdate={(newData, oldData) => console.log('Update: ' + JSON.stringify(newData))}\n onDelete={oldData => console.log('Delete: ' + JSON.stringify(oldData))}\n />\n </div>;\n}\n */\n"]}
1
+ {"version":3,"file":"TreeTable.js","sourceRoot":"./src/","sources":["Components/TreeTable.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { Component, type JSX } from 'react';\n\nimport {\n Box,\n Fab,\n Table,\n TableBody,\n TableCell,\n TableHead,\n TableRow,\n TableSortLabel,\n IconButton,\n Select,\n MenuItem,\n TextField,\n Checkbox,\n Tooltip,\n} from '@mui/material';\n\nimport {\n Edit as IconEdit,\n NavigateNext as IconExpand,\n Check as IconCheck,\n Close as IconClose,\n Add as IconAdd,\n ViewHeadline as IconList,\n} from '@mui/icons-material';\n\nimport type { Connection } from '../Connection';\n\nimport { DialogSelectID } from '../Dialogs/SelectID';\nimport { ColorPicker, parseColor } from './ColorPicker';\nimport { I18n } from '../i18n';\nimport { Utils } from './Utils';\nimport { IconTrash } from './AnimatedIcons/IconTrash';\nimport { foldRows, measureRows, unfoldRows, type RowParts } from './ObjectBrowser/rowAnimation';\nimport type { IobTheme, ThemeType } from '../types';\n\nfunction getAttr(obj: Record<string, any>, attr: string | string[], lookup?: Record<string, string>): any {\n if (typeof attr === 'string') {\n attr = attr.split('.');\n }\n\n if (!obj) {\n return null;\n }\n\n if (attr.length === 1) {\n if (lookup && lookup[obj[attr[0]]]) {\n return lookup[obj[attr[0]]];\n }\n return obj[attr[0]];\n }\n\n const name: string = attr.shift() || '';\n return getAttr(obj[name], attr);\n}\n\nfunction setAttr(obj: Record<string, any>, attr: string | string[], value: any): void {\n if (typeof attr === 'string') {\n attr = attr.split('.');\n }\n\n if (attr.length === 1) {\n return (obj[attr[0]] = value);\n }\n const name: string = attr.shift()!;\n if (obj[name] === null || obj[name] === undefined) {\n obj[name] = {};\n }\n return setAttr(obj[name], attr, value);\n}\n\n/** Checkerboard, so a semi-transparent color is recognizable as such */\nconst ALPHA_BACKGROUND =\n 'linear-gradient(45deg, #c0c0c0 25%, transparent 25%), linear-gradient(-45deg, #c0c0c0 25%, transparent 25%), linear-gradient(45deg, transparent 75%, #c0c0c0 75%), linear-gradient(-45deg, transparent 75%, #c0c0c0 75%)';\n\nconst styles: Record<string, any> = {\n tableContainer: {\n width: '100%',\n height: '100%',\n overflow: 'auto',\n },\n table: {\n width: '100%',\n minWidth: 800,\n maxWidth: 1920,\n borderCollapse: 'separate',\n },\n cell: (theme: IobTheme) => ({\n py: '4px',\n px: '8px',\n borderBottom: `1px solid ${theme.palette.divider}`,\n }),\n row: (theme: IobTheme) => ({\n transition: 'background-color 0.15s ease-in-out',\n '&:hover': {\n backgroundColor: theme.palette.action.hover,\n },\n // Show the row actions only while the row is hovered or focused. Only the buttons are faded out -\n // the cell itself must stay visible, else its bottom border would disappear too.\n '& .iob-table-actions .MuiIconButton-root': {\n opacity: 0,\n transition: 'opacity 0.15s ease-in-out',\n },\n '&:hover .iob-table-actions .MuiIconButton-root, &:focus-within .iob-table-actions .MuiIconButton-root': {\n opacity: 1,\n },\n }),\n rowMainWithChildren: {},\n rowMainWithoutChildren: {},\n rowNoEdit: {\n opacity: 0.35,\n },\n rowEditing: (theme: IobTheme) => ({\n backgroundColor: theme.palette.action.selected,\n '& .iob-table-actions .MuiIconButton-root': {\n opacity: 1,\n },\n }),\n cellExpand: {\n width: 36,\n pr: 0,\n },\n cellButton: {\n width: 40,\n textAlign: 'center',\n },\n cellHeader: (theme: IobTheme) => ({\n fontWeight: 600,\n fontSize: '0.72rem',\n textTransform: 'uppercase',\n letterSpacing: '0.06em',\n lineHeight: 1.4,\n backgroundColor: theme.palette.background.default,\n color: theme.palette.text.secondary,\n borderBottom: `2px solid ${theme.palette.divider}`,\n height: 44,\n wordBreak: 'break-word',\n whiteSpace: 'nowrap',\n '& .MuiTableSortLabel-root': {\n color: 'inherit',\n },\n '& .MuiTableSortLabel-root:hover, & .MuiTableSortLabel-root.Mui-active': {\n color: theme.palette.text.primary,\n },\n }),\n width_name_nicknames: {\n maxWidth: 150,\n },\n width_ioType: {\n maxWidth: 100,\n },\n width_type: {\n maxWidth: 100,\n },\n width_displayTraits: {\n maxWidth: 100,\n },\n width_roomHint: {\n maxWidth: 100,\n },\n rowSecondary: {},\n cellSecondary: (theme: IobTheme) => ({\n fontSize: '0.8rem',\n color: theme.palette.text.secondary,\n }),\n /** Vertical guide in front of a child row, so the hierarchy stays readable */\n childIndent: (theme: IobTheme) => ({\n display: 'inline-block',\n borderLeft: `1px solid ${theme.palette.divider}`,\n height: 20,\n mr: '8px',\n verticalAlign: 'middle',\n }),\n expandButton: {\n transition: 'transform 0.15s ease-in-out',\n },\n expandButtonOpened: {\n transform: 'rotate(90deg)',\n },\n visuallyHidden: {\n border: 0,\n clip: 'rect(0 0 0 0)',\n height: 1,\n margin: -1,\n overflow: 'hidden',\n padding: 0,\n position: 'absolute',\n top: 20,\n width: 1,\n },\n fieldEditWithButton: {\n width: 'calc(100% - 33px)',\n display: 'inline-block',\n },\n fieldEdit: {\n width: '100%',\n display: 'inline-block',\n verticalAlign: 'middle',\n },\n fieldButton: {\n width: 30,\n display: 'inline-block',\n },\n mainText: {\n fontSize: '0.875rem',\n },\n subText: {\n fontSize: '0.7rem',\n opacity: 0.7,\n },\n /** Color cell: swatch plus the value in a monospace font */\n colorCell: {\n display: 'flex',\n alignItems: 'center',\n gap: '8px',\n },\n colorSwatch: {\n width: 22,\n height: 22,\n flexShrink: 0,\n borderRadius: '5px',\n boxShadow: '0 0 0 1px rgba(128,128,128,.35) inset',\n backgroundImage: ALPHA_BACKGROUND,\n backgroundSize: '8px 8px',\n backgroundPosition: '0 0, 0 4px, 4px -4px, -4px 0px',\n },\n colorSwatchEmpty: {\n border: '1px dashed',\n borderColor: 'divider',\n backgroundImage: 'none',\n boxSizing: 'border-box',\n },\n colorSwatchFill: {\n width: '100%',\n height: '100%',\n borderRadius: 'inherit',\n },\n colorValue: {\n fontFamily: 'monospace',\n fontSize: '0.78rem',\n whiteSpace: 'nowrap',\n },\n colorValueInvalid: {\n color: 'error.main',\n },\n glow: {\n animation: 'glow 0.2s 2 alternate',\n },\n};\n\nfunction descendingComparator(\n a: Record<string, any>,\n b: Record<string, any>,\n orderBy: string,\n lookup?: Record<string, string>,\n): number {\n const _a = getAttr(a, orderBy, lookup) || '';\n const _b = getAttr(b, orderBy, lookup) || '';\n\n if (_b < _a) {\n return -1;\n }\n if (_b > _a) {\n return 1;\n }\n return 0;\n}\n\nfunction getComparator(\n order: 'desc' | 'asc',\n orderBy: string,\n lookup?: Record<string, string>,\n): (a: Record<string, any>, b: Record<string, any>) => number {\n return order === 'desc'\n ? (a, b) => descendingComparator(a, b, orderBy, lookup)\n : (a, b) => -descendingComparator(a, b, orderBy, lookup);\n}\n\nfunction stableSort(\n array: Record<string, any>[],\n comparator: (a: Record<string, any>, b: Record<string, any>) => number,\n): Record<string, any>[] {\n const stabilizedThis: { e: Record<string, any>; i: number }[] = array.map((el, index) => ({ e: el, i: index }));\n\n stabilizedThis.sort((a, b) => {\n const order = comparator(a.e, b.e);\n if (order) {\n return order;\n }\n return a.i - b.i;\n });\n\n return stabilizedThis.map(item => item.e);\n}\n\ninterface Column {\n cellStyle?: Record<string, any>;\n editComponent?: React.FC<{ value: any; rowData: Record<string, any>; onChange: (newValue: any) => void }>;\n field: string;\n headerStyle?: Record<string, any>;\n hidden?: boolean;\n lookup?: Record<string, string>;\n editable?: boolean | 'never';\n title?: string;\n type?: 'string' | 'boolean' | 'numeric' | 'icon' | 'oid' | 'color';\n subField?: string;\n subLookup?: Record<string, string>;\n subStyle?: Record<string, any>;\n}\n\ninterface TreeTableProps {\n data: Record<string, any>[];\n className?: string;\n /** name of table to save settings in localStorage */\n name?: string;\n columns: Column[];\n noSort?: boolean;\n onUpdate?: ((newData: Record<string, any>, oldData: Record<string, any>) => void) | ((addNew: true) => void);\n onDelete?: (oldData: Record<string, any>) => void;\n /** hide add button */\n noAdd?: boolean;\n themeType?: ThemeType;\n glowOnChange?: boolean;\n /** only if an oid type is used */\n socket?: Connection;\n /** Shift in pixels for every level */\n levelShift?: number;\n adapterName: string;\n theme: IobTheme;\n}\n\ninterface TreeTableState {\n opened: string[];\n editMode: number | false;\n deleteMode: number | false;\n editData: Record<string, any> | null;\n order: 'desc' | 'asc';\n update: string[] | null;\n orderBy: string;\n selectIdValue?: string | null;\n showSelectId?: boolean;\n data?: Record<string, any>[];\n}\n\nexport class TreeTable extends Component<TreeTableProps, TreeTableState> {\n private selectCallback: ((selected: string) => void) | null = null;\n\n private updateTimeout: ReturnType<typeof setTimeout> | null = null;\n\n private readonly containerRef = React.createRef<HTMLDivElement>();\n\n private readonly bodyRef = React.createRef<HTMLTableSectionElement>();\n\n /** The running animations of an opened or closing item (see `ObjectBrowser/rowAnimation.ts`) */\n private rowAnimations: Animation[] = [];\n\n /** The item whose children slide under its row at the moment; they are removed when that ends */\n private foldingId: string | null = null;\n\n private foldTimer: ReturnType<typeof setTimeout> | null = null;\n\n constructor(props: TreeTableProps) {\n super(props);\n\n let opened =\n ((window as any)._localStorage || window.localStorage).getItem(this.props.name || 'iob-table') || '[]';\n try {\n opened = JSON.parse(opened) || [];\n } catch {\n opened = [];\n }\n if (!Array.isArray(opened)) {\n opened = [];\n }\n\n this.state = {\n opened,\n editMode: false,\n deleteMode: false,\n editData: null,\n order: 'asc',\n update: null,\n orderBy: this.props.columns[0].field,\n };\n }\n\n componentWillUnmount(): void {\n if (this.updateTimeout) {\n clearTimeout(this.updateTimeout);\n this.updateTimeout = null;\n }\n // a fold animation must not update the state after the component was destroyed\n this.foldingId = null;\n if (this.foldTimer) {\n clearTimeout(this.foldTimer);\n this.foldTimer = null;\n }\n this.rowAnimations.forEach(animation => animation.cancel());\n this.rowAnimations = [];\n }\n\n /** The rendered rows of an item, of its children and the rows below them */\n getRowParts(id: string): RowParts | null {\n const body = this.bodyRef.current;\n if (!body) {\n return null;\n }\n let nodeRow: HTMLElement | null = null;\n const block: HTMLElement[] = [];\n const below: HTMLElement[] = [];\n for (const row of Array.from(body.children) as HTMLElement[]) {\n if (!nodeRow) {\n if (row.dataset.treeId === String(id)) {\n nodeRow = row;\n }\n } else if (!below.length && row.dataset.treeLevel !== '0') {\n block.push(row);\n } else {\n below.push(row);\n }\n }\n return measureRows(this.containerRef.current, nodeRow, block, below);\n }\n\n /** Opens or closes an item: its children slide out from under its row, or back under it */\n toggleOpened(id: string): void {\n // an item that is still closing is closed now, this toggle builds on it\n const folding = this.foldingId;\n this.finishRowAnimations();\n const opened = this.state.opened.filter(item => item !== folding);\n const pos = opened.indexOf(id);\n if (pos === -1) {\n opened.push(id);\n opened.sort();\n } else {\n opened.splice(pos, 1);\n }\n\n ((window as any)._localStorage || window.localStorage).setItem(\n this.props.name || 'iob-table',\n JSON.stringify(opened),\n );\n\n if (pos === -1) {\n this.setState({ opened }, () => {\n this.rowAnimations = unfoldRows(this.getRowParts(id));\n });\n return;\n }\n const animations = foldRows(this.getRowParts(id), () => this.applyFold());\n if (animations) {\n // the children slide under the row first and are removed when the animation ends\n this.rowAnimations = animations;\n this.foldingId = id;\n // a hidden tab does not run animations: close anyway\n this.foldTimer = setTimeout(() => this.applyFold(), 600);\n } else {\n this.setState({ opened });\n }\n }\n\n /** The fold animation ended (or is cut short): remove the children of the item now */\n applyFold(): void {\n const id = this.foldingId;\n if (id === null) {\n return;\n }\n this.foldingId = null;\n if (this.foldTimer) {\n clearTimeout(this.foldTimer);\n this.foldTimer = null;\n }\n const animations = this.rowAnimations;\n this.rowAnimations = [];\n // the animations hold the rows in their end position until the children are really gone\n this.setState(\n state => ({ opened: state.opened.filter(item => item !== id) }),\n () => animations.forEach(animation => animation.cancel()),\n );\n }\n\n /** Ends a running fold or unfold animation at once */\n finishRowAnimations(): void {\n if (this.foldingId !== null) {\n this.applyFold();\n } else {\n this.rowAnimations.forEach(animation => animation.cancel());\n this.rowAnimations = [];\n }\n }\n\n static getDerivedStateFromProps(props: TreeTableProps, state: TreeTableState): Partial<TreeTableState> {\n if (props.glowOnChange) {\n const update: string[] = [];\n let count = 0;\n if (props.data && state.data) {\n props.data.forEach(line => {\n count++;\n const oldLine = state.data?.find(it => it.id === line.id);\n if (oldLine) {\n if (JSON.stringify(oldLine) !== JSON.stringify(line)) {\n update.push(line.id);\n }\n } else {\n update.push(line.id);\n }\n });\n }\n\n if (update.length && update.length !== count) {\n return { data: props.data, update };\n }\n return { data: props.data };\n }\n\n return { data: props.data };\n }\n\n renderCellEdit(item: Record<string, any>, col: Column): JSX.Element | null {\n let val = getAttr(item, col.field);\n if (Array.isArray(val)) {\n val = val[0];\n }\n\n if (col.lookup) {\n return this.renderCellEditSelect(col, val);\n }\n if (col.editComponent) {\n return this.renderCellEditCustom(col, val, item);\n }\n if (col.type === 'boolean' || (!col.type && typeof val === 'boolean')) {\n return this.renderCellEditBoolean(col, val);\n }\n if (col.type === 'color') {\n return this.renderCellEditColor(col, val);\n }\n if (col.type === 'oid') {\n return this.renderCellEditObjectID(col, val);\n }\n if (col.type === 'numeric') {\n return this.renderCellEditNumber(col, val);\n }\n\n return this.renderCellEditString(col, val);\n }\n\n onChange(col: Column, oldValue: string | number | boolean, newValue: string | number | boolean): void {\n const editData = this.state.editData ? { ...this.state.editData } : {};\n if (newValue === oldValue) {\n delete editData[col.field];\n } else {\n editData[col.field] = newValue;\n }\n this.setState({ editData });\n }\n\n renderCellEditSelect(col: Column, val: string | number): JSX.Element {\n return (\n <Select\n variant=\"standard\"\n onChange={e => this.onChange(col, val, e.target.value)}\n value={(this.state.editData && this.state.editData[col.field]) || val}\n >\n {col.lookup &&\n Object.keys(col.lookup).map((v, i) => (\n <MenuItem\n key={i}\n value={v}\n >\n {col.lookup?.[v]}\n </MenuItem>\n ))}\n </Select>\n );\n }\n\n renderCellEditString(col: Column, val: string): JSX.Element {\n return (\n <TextField\n variant=\"standard\"\n style={styles.fieldEdit}\n fullWidth\n value={\n this.state.editData && this.state.editData[col.field] !== undefined\n ? this.state.editData[col.field]\n : val\n }\n onChange={e => this.onChange(col, val, e.target.value)}\n />\n );\n }\n\n renderCellEditNumber(col: Column, val: number): JSX.Element {\n return (\n <TextField\n variant=\"standard\"\n style={styles.fieldEdit}\n type=\"number\"\n fullWidth\n value={\n this.state.editData && this.state.editData[col.field] !== undefined\n ? this.state.editData[col.field]\n : val\n }\n onChange={e => this.onChange(col, val, e.target.value)}\n />\n );\n }\n\n renderCellEditCustom(col: Column, val: any, item: Record<string, any>): JSX.Element | null {\n const EditComponent = col.editComponent;\n\n // use new value if exists\n if (this.state.editData && this.state.editData[col.field] !== undefined) {\n val = this.state.editData[col.field];\n item = JSON.parse(JSON.stringify(item));\n item[col.field] = val;\n }\n\n return EditComponent ? (\n <EditComponent\n value={val}\n rowData={item}\n onChange={(newVal: any) => this.onChange(col, val, newVal as string | number)}\n />\n ) : null;\n }\n\n renderCellEditBoolean(col: Column, val: boolean): JSX.Element {\n return (\n <Checkbox\n checked={\n this.state.editData && this.state.editData[col.field] !== undefined\n ? !!this.state.editData[col.field]\n : !!val\n }\n onChange={e => this.onChange(col, !!val, e.target.checked)}\n slotProps={{ input: { 'aria-label': 'checkbox' } }}\n />\n );\n }\n\n renderCellEditColor(col: Column, val: string): JSX.Element {\n const _val =\n this.state.editData && this.state.editData[col.field] !== undefined ? this.state.editData[col.field] : val;\n return (\n <ColorPicker\n id={`ar_tree_table_color_${col.field}`}\n style={styles.fieldEdit}\n value={(_val as string) || ''}\n onChange={color => this.onChange(col, val, color)}\n />\n );\n }\n\n renderSelectIdDialog(): JSX.Element | null {\n if (this.state.showSelectId && this.props.socket) {\n return (\n <DialogSelectID\n key=\"tableSelect\"\n imagePrefix=\"../..\"\n dialogName={this.props.adapterName}\n themeType={this.props.themeType}\n theme={this.props.theme}\n socket={this.props.socket}\n selected={this.state.selectIdValue || undefined}\n onClose={() => this.setState({ showSelectId: false })}\n onOk={(selected: string | string[] | undefined) => {\n this.setState({ showSelectId: false, selectIdValue: null });\n const selectedStr: string | undefined = Array.isArray(selected) ? selected[0] : selected;\n if (selectedStr && this.selectCallback) {\n this.selectCallback && this.selectCallback(selectedStr);\n this.selectCallback = null;\n }\n }}\n />\n );\n }\n\n return null;\n }\n\n renderCellEditObjectID(col: Column, val: string): JSX.Element {\n return (\n <div style={styles.fieldEdit}>\n <TextField\n variant=\"standard\"\n fullWidth\n style={styles.fieldEditWithButton}\n value={\n this.state.editData && this.state.editData[col.field] !== undefined\n ? this.state.editData[col.field]\n : val\n }\n onChange={e => this.onChange(col, val, e.target.value)}\n />\n\n <IconButton\n style={styles.fieldButton}\n onClick={() => {\n this.selectCallback = selected => this.onChange(col, val, selected);\n this.setState({ showSelectId: true, selectIdValue: val });\n }}\n size=\"large\"\n >\n <IconList />\n </IconButton>\n </div>\n );\n }\n\n /**\n * Show a color as swatch together with its value.\n *\n * @param color The color in any CSS notation.\n */\n static renderColorValue(color: string): JSX.Element {\n const isValid = !!color && !!parseColor(color);\n\n return (\n <Box\n component=\"div\"\n sx={styles.colorCell}\n >\n <Box\n component=\"div\"\n sx={{ ...styles.colorSwatch, ...(isValid ? undefined : styles.colorSwatchEmpty) }}\n title={color || undefined}\n >\n {isValid ? (\n <Box\n component=\"div\"\n sx={styles.colorSwatchFill}\n style={{ background: color }}\n />\n ) : null}\n </Box>\n <Box\n component=\"span\"\n sx={{ ...styles.colorValue, ...(color && !isValid ? styles.colorValueInvalid : undefined) }}\n >\n {color || ''}\n </Box>\n </Box>\n );\n }\n\n static renderCellNonEdit(item: Record<string, any>, col: Column): JSX.Element | string | number | null {\n let val = getAttr(item, col.field, col.lookup);\n if (Array.isArray(val)) {\n val = val[0];\n }\n\n if (col.type === 'boolean') {\n return (\n <Checkbox\n checked={!!val}\n disabled\n size=\"small\"\n slotProps={{ input: { 'aria-label': 'checkbox' } }}\n />\n );\n }\n\n if (col.type === 'color') {\n return TreeTable.renderColorValue(typeof val === 'string' ? val : '');\n }\n\n return val;\n }\n\n renderCell(item: Record<string, any>, col: Column, level: number, i: number): JSX.Element {\n const isEdit = this.state.editMode === i && col.editable !== 'never' && col.editable !== false;\n\n return (\n <TableCell\n key={col.field}\n sx={Utils.getStyle(this.props.theme, styles.cell, level ? styles.cellSecondary : undefined)}\n style={col.cellStyle}\n component=\"th\"\n >\n {isEdit ? this.renderCellEdit(item, col) : TreeTable.renderCellNonEdit(item, col)}\n </TableCell>\n );\n }\n\n static renderCellWithSubField(item: Record<string, any>, col: Column): JSX.Element {\n const main = getAttr(item, col.field, col.lookup);\n if (col.subField) {\n const sub = getAttr(item, col.subField, col.subLookup);\n return (\n <div>\n <div style={styles.mainText}>{main}</div>\n <div style={{ ...styles.subText, ...(col.subStyle || undefined) }}>{sub}</div>\n </div>\n );\n }\n return (\n <div>\n <div style={styles.mainText}>{main}</div>\n </div>\n );\n }\n\n renderLine(item: Record<string, any>, level?: number): JSX.Element | JSX.Element[] | null {\n const levelShift = this.props.levelShift === undefined ? 24 : this.props.levelShift;\n\n level = level || 0;\n const i = this.props.data.indexOf(item);\n if (!item) {\n return null;\n }\n if (!level && item.parentId) {\n return null;\n }\n if (level && !item.parentId) {\n return null; // should never happen\n }\n // try to find children\n const opened = this.state.opened.includes(item.id);\n const children = this.props.data.filter(it => it.parentId === item.id);\n\n const isEditingThis = this.state.editMode === i || this.state.deleteMode === i;\n const isBlurred =\n (this.state.editMode !== false && this.state.editMode !== i) ||\n (this.state.deleteMode !== false && this.state.deleteMode !== i);\n\n const row = (\n <TableRow\n key={item.id}\n // for the animation of the children, see `getRowParts`\n data-tree-id={String(item.id)}\n data-tree-level={level}\n className={`table-row-${(item.id || '').toString().replace(/[.$]/g, '_')}`}\n sx={Utils.getStyle(\n this.props.theme,\n styles.row,\n level ? styles.rowSecondary : undefined,\n !level && children.length ? styles.rowMainWithChildren : undefined,\n !level && !children.length ? styles.rowMainWithoutChildren : undefined,\n isEditingThis ? styles.rowEditing : undefined,\n isBlurred ? styles.rowNoEdit : undefined,\n )}\n style={\n this.state.update && this.state.update.includes(item.id)\n ? { ...(styles.glow as React.CSSProperties) }\n : undefined\n }\n >\n <TableCell\n sx={Utils.getStyle(\n this.props.theme,\n styles.cell,\n styles.cellExpand,\n level ? styles.cellSecondary : undefined,\n )}\n >\n {children.length ? (\n <IconButton\n sx={{\n ...styles.expandButton,\n ...(opened ? styles.expandButtonOpened : undefined),\n }}\n title={I18n.t(opened ? 'ra_Collapse' : 'ra_Expand')}\n onClick={() => this.toggleOpened(item.id)}\n size=\"small\"\n >\n <IconExpand fontSize=\"small\" />\n </IconButton>\n ) : null}\n </TableCell>\n <TableCell\n scope=\"row\"\n sx={Utils.getStyle(this.props.theme, styles.cell, level ? styles.cellSecondary : undefined)}\n style={{ ...this.props.columns[0].cellStyle, paddingLeft: levelShift * level }}\n >\n <Box\n component=\"div\"\n sx={{ display: 'flex', alignItems: 'center' }}\n >\n {level ? (\n <Box\n component=\"span\"\n sx={styles.childIndent}\n />\n ) : null}\n {this.props.columns[0].subField\n ? TreeTable.renderCellWithSubField(item, this.props.columns[0])\n : getAttr(item, this.props.columns[0].field, this.props.columns[0].lookup)}\n </Box>\n </TableCell>\n\n {this.props.columns.map((col, ii) =>\n !ii && !col.hidden ? null : this.renderCell(item, col, level, i),\n )}\n\n {this.props.onUpdate ? (\n <TableCell\n className=\"iob-table-actions\"\n sx={Utils.getStyle(this.props.theme, styles.cell, styles.cellButton)}\n >\n {isEditingThis ? (\n <Tooltip title={I18n.t(this.state.editMode !== false ? 'ra_Save' : 'ra_Delete')}>\n <span>\n <IconButton\n color={this.state.deleteMode !== false ? 'error' : 'primary'}\n disabled={\n this.state.editMode !== false &&\n (!this.state.editData || !Object.keys(this.state.editData).length)\n }\n onClick={() => {\n if (this.state.editMode !== false) {\n const newData = JSON.parse(JSON.stringify(item));\n this.state.editData &&\n Object.keys(this.state.editData).forEach(attr =>\n setAttr(newData, attr, this.state.editData?.[attr]),\n );\n this.setState(\n { editMode: false },\n () => this.props.onUpdate && this.props.onUpdate(newData, item),\n );\n } else {\n this.setState(\n { deleteMode: false },\n () => this.props.onDelete && this.props.onDelete(item),\n );\n }\n }}\n size=\"small\"\n >\n <IconCheck fontSize=\"small\" />\n </IconButton>\n </span>\n </Tooltip>\n ) : (\n <Tooltip title={I18n.t('ra_Edit')}>\n <span>\n <IconButton\n disabled={this.state.editMode !== false}\n onClick={() => this.setState({ editMode: i, editData: null })}\n size=\"small\"\n >\n <IconEdit fontSize=\"small\" />\n </IconButton>\n </span>\n </Tooltip>\n )}\n </TableCell>\n ) : null}\n\n {this.props.onDelete && !this.props.onUpdate ? (\n <TableCell\n className=\"iob-table-actions\"\n sx={Utils.getStyle(this.props.theme, styles.cell, styles.cellButton)}\n >\n {this.state.deleteMode === i ? (\n <Tooltip title={I18n.t('ra_Delete')}>\n <span>\n <IconButton\n color=\"error\"\n disabled={\n this.state.editMode !== false &&\n (!this.state.editData || !Object.keys(this.state.editData).length)\n }\n onClick={() =>\n this.setState(\n { deleteMode: false },\n () => this.props.onDelete && this.props.onDelete(item),\n )\n }\n size=\"small\"\n >\n <IconCheck fontSize=\"small\" />\n </IconButton>\n </span>\n </Tooltip>\n ) : null}\n </TableCell>\n ) : null}\n\n {this.props.onUpdate || this.props.onDelete ? (\n <TableCell\n className=\"iob-table-actions\"\n sx={Utils.getStyle(this.props.theme, styles.cell, styles.cellButton)}\n >\n {isEditingThis ? (\n <Tooltip title={I18n.t('ra_Cancel')}>\n <IconButton\n onClick={() => this.setState({ editMode: false, deleteMode: false })}\n size=\"small\"\n >\n <IconClose fontSize=\"small\" />\n </IconButton>\n </Tooltip>\n ) : this.props.onDelete ? (\n <Tooltip title={I18n.t('ra_Delete')}>\n <span>\n <IconButton\n disabled={this.state.deleteMode !== false}\n onClick={() => this.setState({ deleteMode: i })}\n size=\"small\"\n >\n <IconTrash\n fontSize=\"small\"\n open={this.state.deleteMode === i}\n />\n </IconButton>\n </span>\n </Tooltip>\n ) : null}\n </TableCell>\n ) : null}\n </TableRow>\n );\n\n if (!level && opened) {\n const items: JSX.Element[] = children.map(it => this.renderLine(it, level + 1)) as JSX.Element[];\n items.unshift(row);\n return items;\n }\n return row;\n }\n\n handleRequestSort(property: string): void {\n const isAsc = this.state.orderBy === property && this.state.order === 'asc';\n this.setState({ order: isAsc ? 'desc' : 'asc', orderBy: property });\n }\n\n renderHead(): JSX.Element {\n return (\n <TableHead>\n <TableRow key=\"headerRow\">\n <TableCell\n component=\"th\"\n sx={Utils.getStyle(this.props.theme, styles.cell, styles.cellHeader, styles.cellExpand)}\n />\n <TableCell\n component=\"th\"\n sx={Utils.getStyle(\n this.props.theme,\n styles.cell,\n styles.cellHeader,\n styles[`width_${this.props.columns[0].field.replace(/\\./g, '_')}`],\n )}\n style={this.props.columns[0].headerStyle || this.props.columns[0].cellStyle}\n sortDirection={\n this.props.noSort\n ? false\n : this.state.orderBy === this.props.columns[0].field\n ? this.state.order\n : false\n }\n >\n {this.props.noSort ? null : (\n <TableSortLabel\n active={this.state.orderBy === this.props.columns[0].field}\n direction={\n this.state.orderBy === this.props.columns[0].field ? this.state.order : 'asc'\n }\n onClick={() => this.handleRequestSort(this.props.columns[0].field)}\n >\n {this.props.columns[0].title || this.props.columns[0].field}\n {this.state.orderBy === this.props.columns[0].field ? (\n <span style={styles.visuallyHidden}>\n {this.state.order === 'desc' ? 'sorted descending' : 'sorted ascending'}\n </span>\n ) : null}\n </TableSortLabel>\n )}\n </TableCell>\n {this.props.columns.map((col, i) =>\n !i && !col.hidden ? null : (\n <TableCell\n key={col.field}\n sx={Utils.getStyle(\n this.props.theme,\n styles.cell,\n styles.cellHeader,\n styles[`width_${col.field.replace(/\\./g, '_')}`],\n )}\n style={col.headerStyle || col.cellStyle}\n component=\"th\"\n >\n {this.props.noSort ? null : (\n <TableSortLabel\n active={this.state.orderBy === col.field}\n direction={this.state.orderBy === col.field ? this.state.order : 'asc'}\n onClick={() => this.handleRequestSort(col.field)}\n >\n {col.title || col.field}\n {this.state.orderBy === col.field ? (\n <span style={styles.visuallyHidden}>\n {this.state.order === 'desc' ? 'sorted descending' : 'sorted ascending'}\n </span>\n ) : null}\n </TableSortLabel>\n )}\n </TableCell>\n ),\n )}\n {this.props.onUpdate ? (\n <TableCell\n component=\"th\"\n sx={Utils.getStyle(this.props.theme, styles.cell, styles.cellHeader, styles.cellButton)}\n >\n {!this.props.noAdd ? (\n <Tooltip title={I18n.t('ra_Add')}>\n <span>\n <Fab\n color=\"primary\"\n size=\"small\"\n sx={{ width: 30, height: 30, minHeight: 30, boxShadow: 2 }}\n disabled={this.state.editMode !== false}\n onClick={() =>\n this.props.onUpdate &&\n (this.props.onUpdate as (addNew: true) => void)(true)\n }\n >\n <IconAdd fontSize=\"small\" />\n </Fab>\n </span>\n </Tooltip>\n ) : null}\n </TableCell>\n ) : null}\n {this.props.onDelete || this.props.onUpdate ? (\n <TableCell\n component=\"th\"\n sx={Utils.getStyle(this.props.theme, styles.cell, styles.cellHeader, styles.cellButton)}\n />\n ) : null}\n </TableRow>\n </TableHead>\n );\n }\n\n render(): JSX.Element | null {\n const col = this.props.columns.find(_col => _col.field === this.state.orderBy);\n if (col) {\n const lookup = col.lookup;\n const table = stableSort(this.props.data, getComparator(this.state.order, this.state.orderBy, lookup));\n\n if (this.state.update && this.state.update.length) {\n this.updateTimeout && clearTimeout(this.updateTimeout);\n this.updateTimeout = setTimeout(() => {\n this.updateTimeout = null;\n this.setState({ update: null });\n }, 500);\n }\n\n return (\n <div\n ref={this.containerRef}\n style={styles.tableContainer}\n className={this.props.className}\n >\n <Table\n style={styles.table}\n aria-label=\"simple table\"\n size=\"small\"\n stickyHeader\n >\n {this.renderHead()}\n <TableBody ref={this.bodyRef}>{table.map(it => this.renderLine(it))}</TableBody>\n </Table>\n {this.renderSelectIdDialog()}\n </div>\n );\n }\n\n return null;\n }\n}\n/*\nconst columns = [\n {\n title: 'Name of field', // required, else it will be \"field\"\n field: 'fieldIdInData', // required\n editable: false, // or true [default - true]\n cellStyle: { // CSS style - // optional\n maxWidth: '12rem',\n overflow: 'hidden',\n wordBreak: 'break-word'\n },\n lookup: { // optional => edit will be automatically \"SELECT\"\n 'value1': 'text1',\n 'value2': 'text2',\n }\n },\n {\n title: 'Type', // required, else it will be \"field\"\n field: 'myType', // required\n editable: true, // or true [default - true]\n lookup: { // optional => edit will be automatically \"SELECT\"\n 'number': 'Number',\n 'string': 'String',\n 'boolean': 'Boolean',\n },\n type: 'number/string/color/oid/icon/boolean', // oid=ObjectID,icon=base64-icon\n editComponent: props =>\n <div>Prefix&#123; <br/>\n <textarea\n rows={4}\n style={{width: '100%', resize: 'vertical'}}\n value={props.value}\n onChange={e => props.onChange(e.target.value)}\n />\n Suffix\n </div>,\n },\n];\n*/\n/* const data = [\n {\n id: 'UniqueID1' // required\n fieldIdInData: 'Name1',\n myType: 'number',\n },\n {\n id: 'UniqueID2' // required\n fieldIdInData: 'Name12',\n myType: 'string',\n },\n];\n */\n\n/*\n// STYLES\nconst styles = theme => ({\n tableDiv: {\n width: '100%',\n overflow: 'hidden',\n height: 'calc(100% - 48px)',\n },\n});\n// renderTable\nrenderTable() {\n return <div style={styles.tableDiv}>\n <TreeTable\n columns={this.columns}\n data={lines}\n onUpdate={(newData, oldData) => console.log('Update: ' + JSON.stringify(newData))}\n onDelete={oldData => console.log('Delete: ' + JSON.stringify(oldData))}\n />\n </div>;\n}\n */\n"]}
@@ -1,7 +1,8 @@
1
1
  import React from 'react';
2
2
  import { Button, DialogTitle, DialogContent, DialogActions, Dialog } from '@mui/material';
3
- import { Check as IconOk, Cancel as IconCancel, Delete as IconClear } from '@mui/icons-material';
3
+ import { Check as IconOk, Cancel as IconCancel } from '@mui/icons-material';
4
4
  import { ComplexCron } from '../Components/ComplexCron';
5
+ import { IconTrash } from '../Components/AnimatedIcons/IconTrash';
5
6
  import { DialogConfirm } from '../Dialogs/Confirm';
6
7
  import { I18n } from '../i18n';
7
8
  // Generate cron expression
@@ -77,7 +78,7 @@ export class DialogComplexCron extends React.Component {
77
78
  React.createElement(DialogContent, { style: { height: '100%', overflow: 'hidden' } },
78
79
  React.createElement(ComplexCron, { cronExpression: this.state.cron, onChange: cron => this.setState({ cron }), language: I18n.getLanguage() })),
79
80
  React.createElement(DialogActions, null,
80
- !!this.props.clearButton && (React.createElement(Button, { color: "grey", variant: "contained", onClick: () => this.handleClear(), startIcon: React.createElement(IconClear, null) }, this.props.clear || I18n.t('ra_Clear'))),
81
+ !!this.props.clearButton && (React.createElement(Button, { color: "grey", variant: "contained", onClick: () => this.handleClear(), startIcon: React.createElement(IconTrash, null) }, this.props.clear || I18n.t('ra_Clear'))),
81
82
  React.createElement(Button, { variant: "contained", onClick: () => this.handleOk(), color: "primary", startIcon: React.createElement(IconOk, null) }, this.props.ok || I18n.t('ra_Ok')),
82
83
  React.createElement(Button, { color: "grey", variant: "contained", onClick: () => this.handleCancel(), startIcon: React.createElement(IconCancel, null) }, this.props.cancel || I18n.t('ra_Cancel')))));
83
84
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ComplexCron.js","sourceRoot":"./src/","sources":["Dialogs/ComplexCron.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmB,MAAM,OAAO,CAAC;AAExC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAE1F,OAAO,EAAE,KAAK,IAAI,MAAM,EAAE,MAAM,IAAI,UAAU,EAAE,MAAM,IAAI,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAEjG,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAE/B,2BAA2B;AAC3B,MAAM,MAAM,GAAwC;IAChD,QAAQ,EAAE;QACN,UAAU,EAAE,MAAM;QAClB,SAAS,EAAE,QAAQ;KACtB;IACD,KAAK,EAAE;QACH,OAAO,EAAE,cAAc;KAC1B;IACD,WAAW,EAAE;QACT,MAAM,EAAE,mBAAmB;KAC9B;CACJ,CAAC;AAkBF,MAAM,OAAO,iBAAkB,SAAQ,KAAK,CAAC,SAA2C;IACpF,YAAY,KAAsB;QAC9B,KAAK,CAAC,KAAK,CAAC,CAAC;QACb,IAAI,IAAI,CAAC;QACT,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;YAC5G,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QACvD,CAAC;aAAM,CAAC;YACJ,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC;YAC/B,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAC3B,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;YAC7D,CAAC;QACL,CAAC;QAED,IAAI,CAAC,KAAK,GAAG;YACT,WAAW,EAAE,EAAE;YACf,IAAI;SACP,CAAC;IACN,CAAC;IAED,YAAY;QACR,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;IACzB,CAAC;IAED,QAAQ,CAAC,WAAqB;QAC1B,IAAI,CAAC,WAAW,EAAE,CAAC;YACf,oFAAoF;YACpF,MAAM,IAAI,GAAG,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACrD,IAAI,IAAI,CAAC,OAAO,KAAK,GAAG,IAAI,IAAI,CAAC,OAAO,KAAK,KAAK,EAAE,CAAC;gBACjD,IAAI,CAAC,QAAQ,CAAC,EAAE,WAAW,EAAE,aAAa,EAAE,CAAC,CAAC;gBAC9C,OAAO;YACX,CAAC;YACD,IAAI,IAAI,CAAC,OAAO,KAAK,GAAG,IAAI,IAAI,CAAC,OAAO,KAAK,KAAK,EAAE,CAAC;gBACjD,IAAI,CAAC,QAAQ,CAAC,EAAE,WAAW,EAAE,aAAa,EAAE,CAAC,CAAC;gBAC9C,OAAO;YACX,CAAC;QACL,CAAC;QAED,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACjC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;IACzB,CAAC;IAED,mBAAmB;QACf,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;YAC1B,OAAO,IAAI,CAAC;QAChB,CAAC;QACD,OAAO,CACH,oBAAC,aAAa,IACV,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,mBAAmB,CAAC,EAClC,IAAI,EAAE,IAAI,CAAC,CAAC,CACR,IAAI,CAAC,KAAK,CAAC,WAAW,KAAK,aAAa;gBACpC,CAAC,CAAC,8DAA8D;gBAChE,CAAC,CAAC,8DAA8D,CACvE,EACD,OAAO,EAAE,CAAC,EAAW,EAAE,EAAE,CACrB,IAAI,CAAC,QAAQ,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE;gBACpC,IAAI,EAAE,EAAE,CAAC;oBACL,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;gBACxB,CAAC;YACL,CAAC,CAAC,GAER,CACL,CAAC;IACN,CAAC;IAED,WAAW;QACP,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACvB,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;IACzB,CAAC;IAED,MAAM;QACF,OAAO,CACH,oBAAC,MAAM,IACH,OAAO,EAAE,GAAG,EAAE,GAAE,CAAC,EACjB,QAAQ,EAAC,IAAI,EACb,SAAS,QACT,EAAE,EAAE,EAAE,oBAAoB,EAAE,MAAM,CAAC,WAAW,EAAE,EAChD,IAAI,EAAE,CAAC,CAAC,qBACQ,mBAAmB;YAElC,IAAI,CAAC,mBAAmB,EAAE;YAC3B,oBAAC,WAAW,IAAC,EAAE,EAAC,mBAAmB,IAAE,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAe;YACvG,oBAAC,aAAa,IAAC,KAAK,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE;gBACxD,oBAAC,WAAW,IACR,cAAc,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,EAC/B,QAAQ,EAAE,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,CAAC,EACzC,QAAQ,EAAE,IAAI,CAAC,WAAW,EAAE,GAC9B,CACU;YAChB,oBAAC,aAAa;gBACT,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,IAAI,CACzB,oBAAC,MAAM,IACH,KAAK,EAAC,MAAM,EACZ,OAAO,EAAC,WAAW,EACnB,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,EACjC,SAAS,EAAE,oBAAC,SAAS,OAAG,IAEvB,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAClC,CACZ;gBACD,oBAAC,MAAM,IACH,OAAO,EAAC,WAAW,EACnB,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,EAC9B,KAAK,EAAC,SAAS,EACf,SAAS,EAAE,oBAAC,MAAM,OAAG,IAEpB,IAAI,CAAC,KAAK,CAAC,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAC5B;gBACT,oBAAC,MAAM,IACH,KAAK,EAAC,MAAM,EACZ,OAAO,EAAC,WAAW,EACnB,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,YAAY,EAAE,EAClC,SAAS,EAAE,oBAAC,UAAU,OAAG,IAExB,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,CACpC,CACG,CACX,CACZ,CAAC;IACN,CAAC;CACJ","sourcesContent":["import React, { type JSX } from 'react';\n\nimport { Button, DialogTitle, DialogContent, DialogActions, Dialog } from '@mui/material';\n\nimport { Check as IconOk, Cancel as IconCancel, Delete as IconClear } from '@mui/icons-material';\n\nimport { ComplexCron } from '../Components/ComplexCron';\nimport { DialogConfirm } from '../Dialogs/Confirm';\n\nimport { I18n } from '../i18n';\n\n// Generate cron expression\nconst styles: Record<string, React.CSSProperties> = {\n headerID: {\n fontWeight: 'bold',\n fontStyle: 'italic',\n },\n radio: {\n display: 'inline-block',\n },\n dialogPaper: {\n height: 'calc(100% - 96px)',\n },\n};\n\ninterface DialogCronProps {\n onClose: () => void;\n onOk: (cron: string | false) => void;\n title?: string;\n cron?: string;\n cancel?: string;\n ok?: string;\n clear?: string;\n clearButton?: boolean;\n}\n\ninterface DialogCronState {\n cron: string;\n showWarning: '' | 'everySecond' | 'everyMinute';\n}\n\nexport class DialogComplexCron extends React.Component<DialogCronProps, DialogCronState> {\n constructor(props: DialogCronProps) {\n super(props);\n let cron;\n if (this.props.cron && typeof this.props.cron === 'string' && this.props.cron.replace(/^[\"']/, '')[0] !== '{') {\n cron = this.props.cron.replace(/['\"]/g, '').trim();\n } else {\n cron = this.props.cron || '{}';\n if (typeof cron === 'string') {\n cron = cron.replace(/^[\"']/, '').replace(/[\"']\\n?$/, '');\n }\n }\n\n this.state = {\n showWarning: '',\n cron,\n };\n }\n\n handleCancel(): void {\n this.props.onClose();\n }\n\n handleOk(ignoreCheck?: boolean): void {\n if (!ignoreCheck) {\n // Check if the CRON will be executed every second or every minute and warn about it\n const cron = ComplexCron.cron2state(this.state.cron);\n if (cron.seconds === '*' || cron.seconds === '*/1') {\n this.setState({ showWarning: 'everySecond' });\n return;\n }\n if (cron.minutes === '*' || cron.minutes === '*/1') {\n this.setState({ showWarning: 'everyMinute' });\n return;\n }\n }\n\n this.props.onOk(this.state.cron);\n this.props.onClose();\n }\n\n renderWarningDialog(): JSX.Element | null {\n if (!this.state.showWarning) {\n return null;\n }\n return (\n <DialogConfirm\n title={I18n.t('ra_Please confirm')}\n text={I18n.t(\n this.state.showWarning === 'everySecond'\n ? 'ra_The schedule will be executed every second. Are you sure?'\n : 'ra_The schedule will be executed every minute. Are you sure?',\n )}\n onClose={(ok: boolean) =>\n this.setState({ showWarning: '' }, () => {\n if (ok) {\n this.handleOk(true);\n }\n })\n }\n />\n );\n }\n\n handleClear(): void {\n this.props.onOk(false);\n this.props.onClose();\n }\n\n render(): JSX.Element {\n return (\n <Dialog\n onClose={() => {}}\n maxWidth=\"md\"\n fullWidth\n sx={{ '& .MuiDialog-paper': styles.dialogPaper }}\n open={!0}\n aria-labelledby=\"cron-dialog-title\"\n >\n {this.renderWarningDialog()}\n <DialogTitle id=\"cron-dialog-title\">{this.props.title || I18n.t('ra_Define schedule...')}</DialogTitle>\n <DialogContent style={{ height: '100%', overflow: 'hidden' }}>\n <ComplexCron\n cronExpression={this.state.cron}\n onChange={cron => this.setState({ cron })}\n language={I18n.getLanguage()}\n />\n </DialogContent>\n <DialogActions>\n {!!this.props.clearButton && (\n <Button\n color=\"grey\"\n variant=\"contained\"\n onClick={() => this.handleClear()}\n startIcon={<IconClear />}\n >\n {this.props.clear || I18n.t('ra_Clear')}\n </Button>\n )}\n <Button\n variant=\"contained\"\n onClick={() => this.handleOk()}\n color=\"primary\"\n startIcon={<IconOk />}\n >\n {this.props.ok || I18n.t('ra_Ok')}\n </Button>\n <Button\n color=\"grey\"\n variant=\"contained\"\n onClick={() => this.handleCancel()}\n startIcon={<IconCancel />}\n >\n {this.props.cancel || I18n.t('ra_Cancel')}\n </Button>\n </DialogActions>\n </Dialog>\n );\n }\n}\n"]}
1
+ {"version":3,"file":"ComplexCron.js","sourceRoot":"./src/","sources":["Dialogs/ComplexCron.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { type JSX } from 'react';\n\nimport { Button, DialogTitle, DialogContent, DialogActions, Dialog } from '@mui/material';\n\nimport { Check as IconOk, Cancel as IconCancel } from '@mui/icons-material';\n\nimport { ComplexCron } from '../Components/ComplexCron';\nimport { IconTrash } from '../Components/AnimatedIcons/IconTrash';\nimport { DialogConfirm } from '../Dialogs/Confirm';\n\nimport { I18n } from '../i18n';\n\n// Generate cron expression\nconst styles: Record<string, React.CSSProperties> = {\n headerID: {\n fontWeight: 'bold',\n fontStyle: 'italic',\n },\n radio: {\n display: 'inline-block',\n },\n dialogPaper: {\n height: 'calc(100% - 96px)',\n },\n};\n\ninterface DialogCronProps {\n onClose: () => void;\n onOk: (cron: string | false) => void;\n title?: string;\n cron?: string;\n cancel?: string;\n ok?: string;\n clear?: string;\n clearButton?: boolean;\n}\n\ninterface DialogCronState {\n cron: string;\n showWarning: '' | 'everySecond' | 'everyMinute';\n}\n\nexport class DialogComplexCron extends React.Component<DialogCronProps, DialogCronState> {\n constructor(props: DialogCronProps) {\n super(props);\n let cron;\n if (this.props.cron && typeof this.props.cron === 'string' && this.props.cron.replace(/^[\"']/, '')[0] !== '{') {\n cron = this.props.cron.replace(/['\"]/g, '').trim();\n } else {\n cron = this.props.cron || '{}';\n if (typeof cron === 'string') {\n cron = cron.replace(/^[\"']/, '').replace(/[\"']\\n?$/, '');\n }\n }\n\n this.state = {\n showWarning: '',\n cron,\n };\n }\n\n handleCancel(): void {\n this.props.onClose();\n }\n\n handleOk(ignoreCheck?: boolean): void {\n if (!ignoreCheck) {\n // Check if the CRON will be executed every second or every minute and warn about it\n const cron = ComplexCron.cron2state(this.state.cron);\n if (cron.seconds === '*' || cron.seconds === '*/1') {\n this.setState({ showWarning: 'everySecond' });\n return;\n }\n if (cron.minutes === '*' || cron.minutes === '*/1') {\n this.setState({ showWarning: 'everyMinute' });\n return;\n }\n }\n\n this.props.onOk(this.state.cron);\n this.props.onClose();\n }\n\n renderWarningDialog(): JSX.Element | null {\n if (!this.state.showWarning) {\n return null;\n }\n return (\n <DialogConfirm\n title={I18n.t('ra_Please confirm')}\n text={I18n.t(\n this.state.showWarning === 'everySecond'\n ? 'ra_The schedule will be executed every second. Are you sure?'\n : 'ra_The schedule will be executed every minute. Are you sure?',\n )}\n onClose={(ok: boolean) =>\n this.setState({ showWarning: '' }, () => {\n if (ok) {\n this.handleOk(true);\n }\n })\n }\n />\n );\n }\n\n handleClear(): void {\n this.props.onOk(false);\n this.props.onClose();\n }\n\n render(): JSX.Element {\n return (\n <Dialog\n onClose={() => {}}\n maxWidth=\"md\"\n fullWidth\n sx={{ '& .MuiDialog-paper': styles.dialogPaper }}\n open={!0}\n aria-labelledby=\"cron-dialog-title\"\n >\n {this.renderWarningDialog()}\n <DialogTitle id=\"cron-dialog-title\">{this.props.title || I18n.t('ra_Define schedule...')}</DialogTitle>\n <DialogContent style={{ height: '100%', overflow: 'hidden' }}>\n <ComplexCron\n cronExpression={this.state.cron}\n onChange={cron => this.setState({ cron })}\n language={I18n.getLanguage()}\n />\n </DialogContent>\n <DialogActions>\n {!!this.props.clearButton && (\n <Button\n color=\"grey\"\n variant=\"contained\"\n onClick={() => this.handleClear()}\n startIcon={<IconTrash />}\n >\n {this.props.clear || I18n.t('ra_Clear')}\n </Button>\n )}\n <Button\n variant=\"contained\"\n onClick={() => this.handleOk()}\n color=\"primary\"\n startIcon={<IconOk />}\n >\n {this.props.ok || I18n.t('ra_Ok')}\n </Button>\n <Button\n color=\"grey\"\n variant=\"contained\"\n onClick={() => this.handleCancel()}\n startIcon={<IconCancel />}\n >\n {this.props.cancel || I18n.t('ra_Cancel')}\n </Button>\n </DialogActions>\n </Dialog>\n );\n }\n}\n"]}
@@ -8,7 +8,8 @@
8
8
  import React, { Component } from 'react';
9
9
  import { Button, Dialog, DialogActions, DialogContent, DialogContentText, DialogTitle } from '@mui/material';
10
10
  import { alpha } from '@mui/material/styles';
11
- import { Check as IconCheck, ErrorOutlined as IconError } from '@mui/icons-material';
11
+ import { Check as IconCheck } from '@mui/icons-material';
12
+ import { IconResult } from '../Components/AnimatedIcons/IconResult';
12
13
  import { I18n } from '../i18n';
13
14
  const styles = {
14
15
  // Accent line on top of the dialog, so it is recognizable as an error at a glance
@@ -37,7 +38,7 @@ export class DialogError extends Component {
37
38
  render() {
38
39
  return (React.createElement(Dialog, { open: !0, maxWidth: "sm", sx: styles.paper, fullWidth: this.props.fullWidth !== undefined ? this.props.fullWidth : true, onClose: () => this.handleOk(), "aria-labelledby": "alert-dialog-title", "aria-describedby": "alert-dialog-description" },
39
40
  React.createElement(DialogTitle, { id: "ar_alert_dialog_title", sx: styles.title },
40
- React.createElement(IconError, null),
41
+ React.createElement(IconResult, { type: "error", style: { color: 'inherit' } }),
41
42
  this.props.title || I18n.t('ra_Error')),
42
43
  React.createElement(DialogContent, { sx: styles.content },
43
44
  React.createElement(DialogContentText, { id: "ar_alert_dialog_description" }, this.props.text || I18n.t('ra_Unknown error!'))),
@@ -1 +1 @@
1
- {"version":3,"file":"Error.js","sourceRoot":"./src/","sources":["Dialogs/Error.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,uHAAuH;AACvH,OAAO,KAAK,EAAE,EAAE,SAAS,EAAY,MAAM,OAAO,CAAC;AAEnD,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,aAAa,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC7G,OAAO,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAE7C,OAAO,EAAE,KAAK,IAAI,SAAS,EAAE,aAAa,IAAI,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAErF,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAI/B,MAAM,MAAM,GAAwB;IAChC,kFAAkF;IAClF,KAAK,EAAE,CAAC,KAAe,EAAE,EAAE,CAAC,CAAC;QACzB,oBAAoB,EAAE;YAClB,SAAS,EAAE,aAAa,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE;SACrD;KACJ,CAAC;IACF,KAAK,EAAE,CAAC,KAAe,EAAE,EAAE,CAAC,CAAC;QACzB,OAAO,EAAE,MAAM;QACf,UAAU,EAAE,QAAQ;QACpB,GAAG,EAAE,MAAM;QACX,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI;QAC/B,eAAe,EAAE,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;KAChG,CAAC;IACF,OAAO,EAAE;QACL,EAAE,EAAE,iBAAiB;KACxB;CACJ,CAAC;AAaF,MAAM,OAAO,WAAY,SAAQ,SAA2B;IACxD,QAAQ;QACJ,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;YACrB,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;QACzB,CAAC;IACL,CAAC;IAED,MAAM;QACF,OAAO,CACH,oBAAC,MAAM,IACH,IAAI,EAAE,CAAC,CAAC,EACR,QAAQ,EAAC,IAAI,EACb,EAAE,EAAE,MAAM,CAAC,KAAK,EAChB,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,EAC3E,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,qBACd,oBAAoB,sBACnB,0BAA0B;YAE3C,oBAAC,WAAW,IACR,EAAE,EAAC,uBAAuB,EAC1B,EAAE,EAAE,MAAM,CAAC,KAAK;gBAEhB,oBAAC,SAAS,OAAG;gBACZ,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAC7B;YACd,oBAAC,aAAa,IAAC,EAAE,EAAE,MAAM,CAAC,OAAO;gBAC7B,oBAAC,iBAAiB,IAAC,EAAE,EAAC,6BAA6B,IAC9C,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAC/B,CACR;YAChB,oBAAC,aAAa;gBACV,oBAAC,MAAM,IACH,EAAE,EAAC,oBAAoB,EACvB,OAAO,EAAC,WAAW,EACnB,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,EAC9B,KAAK,EAAC,OAAO,EACb,SAAS,QACT,SAAS,EAAE,oBAAC,SAAS,OAAG,IAEvB,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CACX,CACG,CACX,CACZ,CAAC;IACN,CAAC;CACJ","sourcesContent":["/**\n * Copyright 2018-2023 Denis Haev (bluefox) <dogafox@gmail.com>\n *\n * MIT License\n *\n */\n// please do not delete React, as without it other projects could not be compiled: ReferenceError: React is not defined\nimport React, { Component, type JSX } from 'react';\n\nimport { Button, Dialog, DialogActions, DialogContent, DialogContentText, DialogTitle } from '@mui/material';\nimport { alpha } from '@mui/material/styles';\n\nimport { Check as IconCheck, ErrorOutlined as IconError } from '@mui/icons-material';\n\nimport { I18n } from '../i18n';\n\nimport type { IobTheme } from '../types';\n\nconst styles: Record<string, any> = {\n // Accent line on top of the dialog, so it is recognizable as an error at a glance\n paper: (theme: IobTheme) => ({\n '& .MuiDialog-paper': {\n borderTop: `4px solid ${theme.palette.error.main}`,\n },\n }),\n title: (theme: IobTheme) => ({\n display: 'flex',\n alignItems: 'center',\n gap: '10px',\n color: theme.palette.error.main,\n backgroundColor: alpha(theme.palette.error.main, theme.palette.mode === 'dark' ? 0.16 : 0.08),\n }),\n content: {\n pt: '20px !important',\n },\n};\n\ninterface DialogErrorProps {\n /* The dialog title; default: Error (translated) */\n title?: string;\n /* The dialog text */\n text: string | React.JSX.Element | React.JSX.Element[];\n /* Close handler. */\n onClose?: () => void;\n /* if the dialog must be fill sized */\n fullWidth?: boolean;\n}\n\nexport class DialogError extends Component<DialogErrorProps> {\n handleOk(): void {\n if (this.props.onClose) {\n this.props.onClose();\n }\n }\n\n render(): JSX.Element {\n return (\n <Dialog\n open={!0}\n maxWidth=\"sm\"\n sx={styles.paper}\n fullWidth={this.props.fullWidth !== undefined ? this.props.fullWidth : true}\n onClose={() => this.handleOk()}\n aria-labelledby=\"alert-dialog-title\"\n aria-describedby=\"alert-dialog-description\"\n >\n <DialogTitle\n id=\"ar_alert_dialog_title\"\n sx={styles.title}\n >\n <IconError />\n {this.props.title || I18n.t('ra_Error')}\n </DialogTitle>\n <DialogContent sx={styles.content}>\n <DialogContentText id=\"ar_alert_dialog_description\">\n {this.props.text || I18n.t('ra_Unknown error!')}\n </DialogContentText>\n </DialogContent>\n <DialogActions>\n <Button\n id=\"ar_dialog_error_ok\"\n variant=\"contained\"\n onClick={() => this.handleOk()}\n color=\"error\"\n autoFocus\n startIcon={<IconCheck />}\n >\n {I18n.t('ra_Ok')}\n </Button>\n </DialogActions>\n </Dialog>\n );\n }\n}\n"]}
1
+ {"version":3,"file":"Error.js","sourceRoot":"./src/","sources":["Dialogs/Error.tsx"],"names":[],"mappings":"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","sourcesContent":["/**\n * Copyright 2018-2023 Denis Haev (bluefox) <dogafox@gmail.com>\n *\n * MIT License\n *\n */\n// please do not delete React, as without it other projects could not be compiled: ReferenceError: React is not defined\nimport React, { Component, type JSX } from 'react';\n\nimport { Button, Dialog, DialogActions, DialogContent, DialogContentText, DialogTitle } from '@mui/material';\nimport { alpha } from '@mui/material/styles';\n\nimport { Check as IconCheck } from '@mui/icons-material';\n\nimport { IconResult } from '../Components/AnimatedIcons/IconResult';\n\nimport { I18n } from '../i18n';\n\nimport type { IobTheme } from '../types';\n\nconst styles: Record<string, any> = {\n // Accent line on top of the dialog, so it is recognizable as an error at a glance\n paper: (theme: IobTheme) => ({\n '& .MuiDialog-paper': {\n borderTop: `4px solid ${theme.palette.error.main}`,\n },\n }),\n title: (theme: IobTheme) => ({\n display: 'flex',\n alignItems: 'center',\n gap: '10px',\n color: theme.palette.error.main,\n backgroundColor: alpha(theme.palette.error.main, theme.palette.mode === 'dark' ? 0.16 : 0.08),\n }),\n content: {\n pt: '20px !important',\n },\n};\n\ninterface DialogErrorProps {\n /* The dialog title; default: Error (translated) */\n title?: string;\n /* The dialog text */\n text: string | React.JSX.Element | React.JSX.Element[];\n /* Close handler. */\n onClose?: () => void;\n /* if the dialog must be fill sized */\n fullWidth?: boolean;\n}\n\nexport class DialogError extends Component<DialogErrorProps> {\n handleOk(): void {\n if (this.props.onClose) {\n this.props.onClose();\n }\n }\n\n render(): JSX.Element {\n return (\n <Dialog\n open={!0}\n maxWidth=\"sm\"\n sx={styles.paper}\n fullWidth={this.props.fullWidth !== undefined ? this.props.fullWidth : true}\n onClose={() => this.handleOk()}\n aria-labelledby=\"alert-dialog-title\"\n aria-describedby=\"alert-dialog-description\"\n >\n <DialogTitle\n id=\"ar_alert_dialog_title\"\n sx={styles.title}\n >\n {/* draws itself and shakes once; the color of the title */}\n <IconResult\n type=\"error\"\n style={{ color: 'inherit' }}\n />\n {this.props.title || I18n.t('ra_Error')}\n </DialogTitle>\n <DialogContent sx={styles.content}>\n <DialogContentText id=\"ar_alert_dialog_description\">\n {this.props.text || I18n.t('ra_Unknown error!')}\n </DialogContentText>\n </DialogContent>\n <DialogActions>\n <Button\n id=\"ar_dialog_error_ok\"\n variant=\"contained\"\n onClick={() => this.handleOk()}\n color=\"error\"\n autoFocus\n startIcon={<IconCheck />}\n >\n {I18n.t('ra_Ok')}\n </Button>\n </DialogActions>\n </Dialog>\n );\n }\n}\n"]}
package/build/index.d.ts CHANGED
@@ -64,6 +64,10 @@ export { IconTrash, type IconTrashProps } from './Components/AnimatedIcons/IconT
64
64
  export { IconConnectionState, type IconConnectionStateProps } from './Components/AnimatedIcons/IconConnectionState';
65
65
  export { IconExpertMode, type IconExpertModeProps } from './Components/AnimatedIcons/IconExpertMode';
66
66
  export { IconFolder, type IconFolderProps } from './Components/AnimatedIcons/IconFolder';
67
+ export { IconCopyToClipboard, type IconCopyToClipboardProps } from './Components/AnimatedIcons/IconCopyToClipboard';
68
+ export { IconThemeMode, type IconThemeModeProps } from './Components/AnimatedIcons/IconThemeMode';
69
+ export { IconUpload, type IconUploadProps } from './Components/AnimatedIcons/IconUpload';
70
+ export { IconFilter, type IconFilterProps } from './Components/AnimatedIcons/IconFilter';
67
71
  export { type IconProps } from './Components/Icon';
68
72
  export { type IconsIconProps } from './icons/types';
69
73
  export { IconAdapter } from './icons/IconAdapter';
package/build/index.js CHANGED
@@ -60,6 +60,10 @@ export { IconTrash } from './Components/AnimatedIcons/IconTrash';
60
60
  export { IconConnectionState } from './Components/AnimatedIcons/IconConnectionState';
61
61
  export { IconExpertMode } from './Components/AnimatedIcons/IconExpertMode';
62
62
  export { IconFolder } from './Components/AnimatedIcons/IconFolder';
63
+ export { IconCopyToClipboard } from './Components/AnimatedIcons/IconCopyToClipboard';
64
+ export { IconThemeMode } from './Components/AnimatedIcons/IconThemeMode';
65
+ export { IconUpload } from './Components/AnimatedIcons/IconUpload';
66
+ export { IconFilter } from './Components/AnimatedIcons/IconFilter';
63
67
  export { IconAdapter } from './icons/IconAdapter';
64
68
  export { IconAlias } from './icons/IconAlias';
65
69
  export { IconButtonImage } from './icons/IconButtonImage';