awing-library 2.1.2-dev.68 → 2.1.2-dev.69

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.
@@ -0,0 +1,2 @@
1
+ import type { TableEditableProps } from './interface';
2
+ export default function TableEditable<T>(props: TableEditableProps<T>): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,2 @@
1
+ import { TableCellEditableProps } from '../interface';
2
+ export default function TableCellEditable<T extends object>(props: TableCellEditableProps<T>): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,2 @@
1
+ import type { TableEditableBodyProps } from '../interface';
2
+ export default function TableEditableBody<T>(props: TableEditableBodyProps<T>): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,2 @@
1
+ import { TableHeaderProps } from '../interface';
2
+ export default function TableHeader<T>(props: TableHeaderProps<T>): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,2 @@
1
+ import { TableRowEditableProps } from '../interface';
2
+ export default function TableRowEditable<T>(props: TableRowEditableProps<T>): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,2 @@
1
+ import { TopBarActionsProps } from '../interface';
2
+ export default function TopBarActions(props: TopBarActionsProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,6 @@
1
+ export { default } from './Container';
2
+ export { default as TableEditableCollapsibleTableHeader } from './components/TableHeader';
3
+ export { default as TableEditableCollapsibleBody } from './components/TableEditableBody';
4
+ export { default as TableEditableCollapsibleCell } from './components/TableCellEditable';
5
+ export { default as TableEditableCollapsibleTopBarActions } from './components/TopBarActions';
6
+ export * from './interface';
@@ -0,0 +1,96 @@
1
+ import { TableCellProps } from '@mui/material/TableCell';
2
+ import { ReactNode } from 'react';
3
+ import type { SelectionActionDefinition } from '../DataGrid/interface';
4
+ import { FieldDefinitionProps } from 'AWING/DataInput/interfaces';
5
+ export type CellDefinition<T extends object> = FieldDefinitionProps<T> & {
6
+ TableCellProps?: TableCellProps;
7
+ isTooltip?: boolean;
8
+ row?: Partial<T>;
9
+ getTitleTooltip?: (value: T[keyof T]) => NonNullable<ReactNode>;
10
+ };
11
+ export interface ColumnDefinition<T extends object> {
12
+ headerName: ReactNode;
13
+ /**
14
+ * Độ rộng của cột
15
+ */
16
+ width?: string | number;
17
+ TableCellProps?: TableCellProps;
18
+ editFieldDefinition?: CellDefinition<T>;
19
+ isRowGroup?: boolean;
20
+ contentGetter?: (obj: T, idx?: number) => ReactNode;
21
+ fieldName?: string;
22
+ isTooltip?: boolean;
23
+ getTitleTooltip?: (value: T[keyof T]) => NonNullable<ReactNode>;
24
+ }
25
+ export type TableEditableProps<T> = {
26
+ columnDefinitions: Array<ColumnDefinition<Partial<T>>>;
27
+ fieldDefinitions: Array<ColumnDefinition<Partial<T>>>;
28
+ items: Array<Partial<T>>;
29
+ onChange(newData: Array<Partial<T>>, dataValid: boolean, fieldName?: keyof T): void;
30
+ getRowId?(obj: Partial<T>): number;
31
+ selected?: number[];
32
+ onSelectedChange?(ids: number[]): void;
33
+ hideHeader?: boolean;
34
+ onAddNew?(): void;
35
+ includeDelete?: boolean;
36
+ spanningRows?: ReactNode[];
37
+ selectionActions?: SelectionActionDefinition[];
38
+ mergeRowsBy?: string;
39
+ observation?: {
40
+ objObserve: Array<keyof T>;
41
+ callback: (fieldName?: keyof T, columnValue?: unknown, index?: number) => void;
42
+ }[];
43
+ };
44
+ export interface TopBarActionsProps {
45
+ selected: number[];
46
+ selectionActions?: SelectionActionDefinition[];
47
+ }
48
+ export interface TableHeaderProps<T> {
49
+ selected?: number[];
50
+ onSelectedChange?: (selected: number[]) => void;
51
+ numOfRows: number;
52
+ onSelectAll: () => void;
53
+ includeDelete?: boolean;
54
+ columnDefinitions: Array<ColumnDefinition<Partial<T>>>;
55
+ }
56
+ export interface TableEditableBodyProps<T> {
57
+ items: Array<Partial<T>>;
58
+ getId: (item: Partial<T>) => string | number | undefined;
59
+ selected?: number[];
60
+ onSelectedChange?: (selected: number[]) => void;
61
+ onSelect: (id: number) => void;
62
+ columnDefinitions: Array<ColumnDefinition<Partial<T>>>;
63
+ fieldDefinitions?: Array<ColumnDefinition<Partial<T>>>;
64
+ dataValidation: Partial<{
65
+ [K in keyof T]: boolean;
66
+ }>[];
67
+ includeDelete?: boolean;
68
+ spanningRows?: ReactNode[];
69
+ onChange: (indexes: number[], fieldName: keyof T, newValue: T[keyof T], valid: boolean) => void;
70
+ onDelete: (rowIdx: number) => void;
71
+ mergeRowsBy?: string;
72
+ }
73
+ export interface TableRowEditableProps<T> {
74
+ id: string | number;
75
+ rowIdx: number;
76
+ selected?: number[];
77
+ onSelectedChange?: (selected: number[]) => void;
78
+ onSelect: (id: number) => void;
79
+ columnDefinitions: Array<ColumnDefinition<Partial<T>>>;
80
+ fieldDefinitions?: Array<ColumnDefinition<Partial<T>>>;
81
+ mergeRowsBy?: string;
82
+ convertItems: Partial<T>[];
83
+ row: Partial<T>;
84
+ itemIndex: number;
85
+ includeDelete?: boolean;
86
+ dataValidation: Partial<{
87
+ [K in keyof T]: boolean;
88
+ }>[];
89
+ onChange: (indexes: number[], fieldName: keyof T, newValue: T[keyof T], valid: boolean) => void;
90
+ onDelete: (rowIdx: number) => void;
91
+ }
92
+ export interface TableCellEditableProps<T extends object> {
93
+ cellDefinition: CellDefinition<T>;
94
+ isContainer?: boolean;
95
+ numOfRowSpan?: number;
96
+ }
@@ -149,3 +149,7 @@ export { default as Statistics, TYPE_CHART } from './Statistics';
149
149
  export type { CellDefinition, ColumnDefinition, TableCellEditableProps, TableEditableBodyProps, TableEditableProps, TableHeaderProps, TopBarActionsProps, } from './TableEditable';
150
150
  export { default as TableEditable, TableCellEditable, TableEditableBody, TableHeader, TopBarActions, } from './TableEditable';
151
151
  /*****/
152
+ /*****/
153
+ export type { CellDefinition as TableEditableCollapsibleCellDefinition, ColumnDefinition as TableEditableCollapsibleColumnDefinition, TableCellEditableProps as TableEditableCollapsibleTableCellEditableProps, TableEditableBodyProps as TableEditableCollapsibleTableEditableBodyProps, TableEditableProps as TableEditableCollapsibleTableEditableProps, TableHeaderProps as TableEditableCollapsibleTableHeaderProps, TopBarActionsProps as TableEditableCollapsibleTopBarActionsProps, } from './TableEditable';
154
+ export { default as TableEditableCollapsible, TableEditableCollapsibleCell, TableEditableCollapsibleBody, TableEditableCollapsibleTableHeader, TableEditableCollapsibleTopBarActions, } from './TableEditableCollapsible';
155
+ /*****/
package/dist/esm/index.js CHANGED
@@ -3,7 +3,7 @@ import { initReactI18next, useTranslation, Trans, I18nextProvider } from 'react-
3
3
  import * as React from 'react';
4
4
  import React__default, { useState, useRef, useEffect, Fragment, Children, isValidElement, cloneElement, useMemo, createElement, forwardRef, useLayoutEffect, useCallback, createContext as createContext$1, memo, useReducer, useContext, PureComponent, createRef } from 'react';
5
5
  import { MoreVert, KeyboardArrowDown, Done as Done$1, FolderOpen, ArrowDropDown, ArrowDropUp, CheckBoxOutlineBlank, CheckBox, ExpandMore, ExpandLess, KeyboardArrowUp, DragIndicator, PinDrop, LastPage, FirstPage, KeyboardArrowRight, KeyboardArrowLeft, UnfoldMore, North, South, HighlightOff, CalendarTodaySharp, FileCopyOutlined, Close, Save, Check, ArrowRightAlt as ArrowRightAlt$1, CallSplit, ManageAccounts, People, Person, Info, ChevronRight as ChevronRight$1, Clear, AddCircleOutline, Search, MoreHoriz, CreateNewFolderOutlined, Delete, PlaylistAddCheck, FormatListNumbered, Add, MoreHorizOutlined, DisplaySettings, VisibilityOff, Visibility, ManageSearch, Notifications as Notifications$6, Science, Settings, AddBox, Edit as Edit$2, InsertDriveFile, SignalCellularAlt, Logout, ArrowRight, ChevronLeft as ChevronLeft$1 } from '@mui/icons-material';
6
- import { Tooltip as Tooltip$2, IconButton as IconButton$1, Menu as Menu$2, MenuItem as MenuItem$1, Button as Button$1, TextField as TextField$1, Grid as Grid$1, FormControl as FormControl$1, Select as Select$1, Box as Box$1, alpha as alpha$2, Typography as Typography$1, Paper as Paper$1, List as List$1, ListItem as ListItem$1, ListItemButton, ListItemText, Divider, Popover as Popover$1, Popper as Popper$2, Grow as Grow$1, ClickAwayListener, Autocomplete as Autocomplete$2, InputBase as InputBase$1, Stack, ButtonBase as ButtonBase$1, Collapse as Collapse$1, Chip as Chip$1, CircularProgress as CircularProgress$2, FormControlLabel, Checkbox as Checkbox$1, RadioGroup, Radio, InputLabel as InputLabel$1, ListSubheader as ListSubheader$1, FormLabel as FormLabel$1, TablePagination, TableRow, TableContainer, Table, TableHead, TableCell, TableSortLabel, TableBody, InputAdornment as InputAdornment$1, Drawer as Drawer$1, Dialog as Dialog$3, DialogTitle, DialogContent as DialogContent$1, DialogContentText, DialogActions as DialogActions$1, Tabs, Tab, Snackbar, Alert, Toolbar, Switch, tooltipClasses as tooltipClasses$1, Avatar, Skeleton, Badge, Stepper, Step, StepLabel, StepContent, Card, CardHeader, CardContent, NoSsr, ListItemIcon, styled as styled$4, AppBar, Container as Container$o, Icon, CssBaseline } from '@mui/material';
6
+ import { Tooltip as Tooltip$2, IconButton as IconButton$1, Menu as Menu$2, MenuItem as MenuItem$1, Button as Button$1, TextField as TextField$1, Grid as Grid$1, FormControl as FormControl$1, Select as Select$1, Box as Box$1, alpha as alpha$2, Typography as Typography$1, Paper as Paper$1, List as List$1, ListItem as ListItem$1, ListItemButton, ListItemText, Divider, Popover as Popover$1, Popper as Popper$2, Grow as Grow$1, ClickAwayListener, Autocomplete as Autocomplete$2, InputBase as InputBase$1, Stack, ButtonBase as ButtonBase$1, Collapse as Collapse$1, Chip as Chip$1, CircularProgress as CircularProgress$2, FormControlLabel, Checkbox as Checkbox$1, RadioGroup, Radio, InputLabel as InputLabel$1, ListSubheader as ListSubheader$1, FormLabel as FormLabel$1, TablePagination, TableRow, TableContainer, Table, TableHead, TableCell, TableSortLabel, TableBody, InputAdornment as InputAdornment$1, Drawer as Drawer$1, Dialog as Dialog$3, DialogTitle, DialogContent as DialogContent$1, DialogContentText, DialogActions as DialogActions$1, Tabs, Tab, Snackbar, Alert, Toolbar, Switch, tooltipClasses as tooltipClasses$1, styled as styled$4, Avatar, Skeleton, Badge, Stepper, Step, StepLabel, StepContent, Card, CardHeader, CardContent, NoSsr, ListItemIcon, AppBar, Container as Container$o, Icon, CssBaseline } from '@mui/material';
7
7
  import styled$3 from '@emotion/styled';
8
8
  import { CacheProvider, Global, ThemeContext as ThemeContext$2, keyframes, css } from '@emotion/react';
9
9
  import { makeStyles } from '@mui/styles';
@@ -166516,7 +166516,7 @@ const getCellWidth = id => {
166516
166516
  return '10%';
166517
166517
  }
166518
166518
  };
166519
- const TableHeader$1 = props => {
166519
+ const TableHeader$2 = props => {
166520
166520
  const {
166521
166521
  headCells
166522
166522
  } = props;
@@ -166570,7 +166570,7 @@ const PermissionManagement = props => {
166570
166570
  border: BORDER_LIGHTGRAY$1,
166571
166571
  borderRadius: '0px 0px 4px 4px'
166572
166572
  }),
166573
- children: [jsxRuntimeExports.jsx(TableHeader$1, {
166573
+ children: [jsxRuntimeExports.jsx(TableHeader$2, {
166574
166574
  headCells: headCells
166575
166575
  }), jsxRuntimeExports.jsx(TableBody, {
166576
166576
  children: isLoading ? jsxRuntimeExports.jsx(TableRow, {
@@ -169039,7 +169039,7 @@ function PermissionTable(props) {
169039
169039
  sx: {
169040
169040
  minWidth: '900px'
169041
169041
  },
169042
- children: [jsxRuntimeExports.jsx(TableHeader$1, {
169042
+ children: [jsxRuntimeExports.jsx(TableHeader$2, {
169043
169043
  headCells: headCells
169044
169044
  }), jsxRuntimeExports.jsx(TableBody, {
169045
169045
  children: explicitPermissions.map((item, idx) => {
@@ -177066,7 +177066,7 @@ process.env.NODE_ENV !== "production" ? Tooltip.propTypes /* remove-proptypes */
177066
177066
  TransitionProps: PropTypes.object
177067
177067
  } : void 0;
177068
177068
 
177069
- const StyleTooltip$1 = styled(_a => {
177069
+ const StyleTooltip$3 = styled(_a => {
177070
177070
  var {
177071
177071
  className
177072
177072
  } = _a,
@@ -177088,7 +177088,7 @@ const StyleTooltip$1 = styled(_a => {
177088
177088
  boxShadow: '0px 2px 1px -1px rgb(0 0 0 / 20%), 0px 1px 1px 0px rgb(0 0 0 / 14%), 0px 1px 3px 0px rgb(0 0 0 / 12%)'
177089
177089
  }
177090
177090
  }));
177091
- function TableCellEditable(props) {
177091
+ function TableCellEditable$1(props) {
177092
177092
  const {
177093
177093
  cellDefinition,
177094
177094
  numOfRowSpan
@@ -177122,7 +177122,7 @@ function TableCellEditable(props) {
177122
177122
  },
177123
177123
  rowSpan: numOfRowSpan
177124
177124
  }, TableCellProps, {
177125
- children: isTooltip ? jsxRuntimeExports.jsx(StyleTooltip$1, {
177125
+ children: isTooltip ? jsxRuntimeExports.jsx(StyleTooltip$3, {
177126
177126
  title: getTitleTooltip && getTitleTooltip(value) || '',
177127
177127
  placement: "top-start",
177128
177128
  children: jsxRuntimeExports.jsx("div", {
@@ -177132,7 +177132,7 @@ function TableCellEditable(props) {
177132
177132
  }));
177133
177133
  }
177134
177134
 
177135
- const StyleTooltip = styled(_a => {
177135
+ const StyleTooltip$2 = styled(_a => {
177136
177136
  var {
177137
177137
  className
177138
177138
  } = _a,
@@ -177154,7 +177154,7 @@ const StyleTooltip = styled(_a => {
177154
177154
  boxShadow: '0px 2px 1px -1px rgb(0 0 0 / 20%), 0px 1px 1px 0px rgb(0 0 0 / 14%), 0px 1px 3px 0px rgb(0 0 0 / 12%)'
177155
177155
  }
177156
177156
  }));
177157
- function TableEditableBody(props) {
177157
+ function TableEditableBody$1(props) {
177158
177158
  const {
177159
177159
  items,
177160
177160
  getId,
@@ -177217,7 +177217,7 @@ function TableEditableBody(props) {
177217
177217
  }
177218
177218
  }, colDef.TableCellProps, {
177219
177219
  rowSpan: numOfRowSpan,
177220
- children: colDef.isTooltip ? jsxRuntimeExports.jsx(StyleTooltip, {
177220
+ children: colDef.isTooltip ? jsxRuntimeExports.jsx(StyleTooltip$2, {
177221
177221
  title: colDef.getTitleTooltip && colDef.getTitleTooltip(content) || '',
177222
177222
  placement: "top-start",
177223
177223
  children: jsxRuntimeExports.jsx("div", {
@@ -177235,7 +177235,7 @@ function TableEditableBody(props) {
177235
177235
  const isDisplay = isMergeColumn ? index == 0 || convertItems[index - 1][fieldName] !== row[fieldName] : true;
177236
177236
  const numOfRowSpan = isMergeColumn ? convertItems.filter(c => c[fieldName] === row[fieldName]).length : 1;
177237
177237
  const error = ((_c = dataValidation === null || dataValidation === void 0 ? void 0 : dataValidation[rowIdx]) === null || _c === void 0 ? void 0 : _c[fieldName]) !== undefined && !((_d = dataValidation === null || dataValidation === void 0 ? void 0 : dataValidation[rowIdx]) === null || _d === void 0 ? void 0 : _d[fieldName]);
177238
- return isDisplay && jsxRuntimeExports.jsx(TableCellEditable, {
177238
+ return isDisplay && jsxRuntimeExports.jsx(TableCellEditable$1, {
177239
177239
  cellDefinition: Object.assign(Object.assign({}, colDef.editFieldDefinition), {
177240
177240
  row,
177241
177241
  TableCellProps: colDef.TableCellProps,
@@ -177278,7 +177278,7 @@ function TableEditableBody(props) {
177278
177278
  });
177279
177279
  }
177280
177280
 
177281
- function TableHeader(props) {
177281
+ function TableHeader$1(props) {
177282
177282
  const {
177283
177283
  selected,
177284
177284
  onSelectedChange,
@@ -177331,7 +177331,7 @@ function TableHeader(props) {
177331
177331
  });
177332
177332
  }
177333
177333
 
177334
- function TopBarActions(props) {
177334
+ function TopBarActions$1(props) {
177335
177335
  const {
177336
177336
  t
177337
177337
  } = useTranslation();
@@ -177382,7 +177382,7 @@ function TopBarActions(props) {
177382
177382
  });
177383
177383
  }
177384
177384
 
177385
- function TableEditable(props) {
177385
+ function TableEditable$1(props) {
177386
177386
  const {
177387
177387
  t
177388
177388
  } = useTranslation();
@@ -177560,6 +177560,757 @@ function TableEditable(props) {
177560
177560
  return jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, {
177561
177561
  children: [jsxRuntimeExports.jsxs(TableContainer, {
177562
177562
  component: Paper$1,
177563
+ children: [selected && onSelectedChange && selected.length > 0 && selectionActions && jsxRuntimeExports.jsx(TopBarActions$1, {
177564
+ selected: selected,
177565
+ selectionActions: selectionActions
177566
+ }), jsxRuntimeExports.jsxs(Table, {
177567
+ "aria-label": "table editable",
177568
+ children: [!hideHeader && jsxRuntimeExports.jsx(TableHeader$1, {
177569
+ selected: selected,
177570
+ onSelectedChange: onSelectedChange,
177571
+ numOfRows: items.length,
177572
+ onSelectAll: handleSelectAll,
177573
+ includeDelete: includeDelete,
177574
+ columnDefinitions: columnDefinitions
177575
+ }), jsxRuntimeExports.jsx(TableEditableBody$1, {
177576
+ items: items,
177577
+ getId: getId,
177578
+ selected: selected,
177579
+ onSelectedChange: onSelectedChange,
177580
+ onSelect: handleSelect,
177581
+ columnDefinitions: columnDefinitions,
177582
+ dataValidation: dataValidation,
177583
+ includeDelete: includeDelete,
177584
+ spanningRows: spanningRows,
177585
+ onChange: handleChange,
177586
+ onDelete: handleDelete,
177587
+ mergeRowsBy: mergeRowsBy
177588
+ })]
177589
+ })]
177590
+ }), onAddNew && jsxRuntimeExports.jsx(Button$1, {
177591
+ variant: "outlined",
177592
+ startIcon: jsxRuntimeExports.jsx(Add, {}),
177593
+ sx: {
177594
+ mt: 2
177595
+ },
177596
+ onClick: () => onAddNew(),
177597
+ children: t('Common.Create')
177598
+ })]
177599
+ });
177600
+ }
177601
+
177602
+ const StyleTooltip$1 = styled(_a => {
177603
+ var {
177604
+ className
177605
+ } = _a,
177606
+ props = __rest$1(_a, ["className"]);
177607
+ return jsxRuntimeExports.jsx(Tooltip, Object.assign({}, props, {
177608
+ arrow: true,
177609
+ classes: {
177610
+ popper: className
177611
+ }
177612
+ }));
177613
+ })(() => ({
177614
+ ["& .".concat(tooltipClasses.arrow)]: {
177615
+ color: '#bbbbbb',
177616
+ maxWidth: 450
177617
+ },
177618
+ ["& .".concat(tooltipClasses.tooltip)]: {
177619
+ backgroundColor: '#f5f5f5',
177620
+ maxWidth: 900,
177621
+ boxShadow: '0px 2px 1px -1px rgb(0 0 0 / 20%), 0px 1px 1px 0px rgb(0 0 0 / 14%), 0px 1px 3px 0px rgb(0 0 0 / 12%)'
177622
+ }
177623
+ }));
177624
+ function TableCellEditable(props) {
177625
+ const {
177626
+ isContainer,
177627
+ cellDefinition,
177628
+ numOfRowSpan
177629
+ } = props;
177630
+ const {
177631
+ TableCellProps,
177632
+ isTooltip,
177633
+ getTitleTooltip,
177634
+ value,
177635
+ error
177636
+ } = cellDefinition;
177637
+ const renderDataInput = () => {
177638
+ var _a;
177639
+ const inputProps = Object.assign(Object.assign(Object.assign({}, ![FIELD_TYPE.ASYNC_AUTOCOMPLETE, FIELD_TYPE.AUTOCOMPLETE].includes(cellDefinition === null || cellDefinition === void 0 ? void 0 : cellDefinition.type) ? {
177640
+ InputProps: {
177641
+ disableUnderline: true,
177642
+ style: {
177643
+ textAlign: ((_a = cellDefinition === null || cellDefinition === void 0 ? void 0 : cellDefinition.TableCellProps) === null || _a === void 0 ? void 0 : _a.align) == 'right' ? 'end' : undefined,
177644
+ padding: '0px 8px'
177645
+ }
177646
+ }
177647
+ } : {}), cellDefinition), {
177648
+ disableHelperText: true
177649
+ });
177650
+ return jsxRuntimeExports.jsx(InputFactory, Object.assign({}, inputProps));
177651
+ };
177652
+ return isContainer ? jsxRuntimeExports.jsx(jsxRuntimeExports.Fragment, {
177653
+ children: isTooltip ? jsxRuntimeExports.jsx(StyleTooltip$1, {
177654
+ title: getTitleTooltip && getTitleTooltip(value) || '',
177655
+ placement: "top-start",
177656
+ children: jsxRuntimeExports.jsx(Stack, {
177657
+ children: renderDataInput()
177658
+ })
177659
+ }) : renderDataInput()
177660
+ }) : jsxRuntimeExports.jsx(TableCell, Object.assign({
177661
+ sx: {
177662
+ p: 1,
177663
+ border: error ? '2px solid #ED1D25' : '1px solid rgb(224, 224, 224)'
177664
+ },
177665
+ rowSpan: numOfRowSpan
177666
+ }, TableCellProps, {
177667
+ children: isTooltip ? jsxRuntimeExports.jsx(StyleTooltip$1, {
177668
+ title: getTitleTooltip && getTitleTooltip(value) || '',
177669
+ placement: "top-start",
177670
+ children: jsxRuntimeExports.jsx(Stack, {
177671
+ children: renderDataInput()
177672
+ })
177673
+ }) : renderDataInput()
177674
+ }));
177675
+ }
177676
+
177677
+ const StyleTooltip = styled$4(_a => {
177678
+ var {
177679
+ className
177680
+ } = _a,
177681
+ props = __rest$1(_a, ["className"]);
177682
+ return jsxRuntimeExports.jsx(Tooltip$2, Object.assign({}, props, {
177683
+ arrow: true,
177684
+ classes: {
177685
+ popper: className
177686
+ }
177687
+ }));
177688
+ })(() => ({
177689
+ ["& .".concat(tooltipClasses$1.arrow)]: {
177690
+ color: '#bbbbbb',
177691
+ maxWidth: 450
177692
+ },
177693
+ ["& .".concat(tooltipClasses$1.tooltip)]: {
177694
+ backgroundColor: '#f5f5f5',
177695
+ maxWidth: 900,
177696
+ boxShadow: '0px 2px 1px -1px rgb(0 0 0 / 20%), 0px 1px 1px 0px rgb(0 0 0 / 14%), 0px 1px 3px 0px rgb(0 0 0 / 12%)'
177697
+ }
177698
+ }));
177699
+ function TableRowEditable(props) {
177700
+ const {
177701
+ id,
177702
+ rowIdx,
177703
+ selected,
177704
+ columnDefinitions,
177705
+ fieldDefinitions,
177706
+ mergeRowsBy,
177707
+ row,
177708
+ convertItems,
177709
+ itemIndex,
177710
+ dataValidation,
177711
+ includeDelete,
177712
+ onSelectedChange,
177713
+ onSelect,
177714
+ onChange,
177715
+ onDelete
177716
+ } = props;
177717
+ const [open, setOpen] = useState(false);
177718
+ return jsxRuntimeExports.jsx(Fragment, {
177719
+ children: jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, {
177720
+ children: [jsxRuntimeExports.jsxs(TableRow, {
177721
+ children: [selected && onSelectedChange && jsxRuntimeExports.jsx(TableCell, {
177722
+ padding: "checkbox",
177723
+ sx: {
177724
+ border: '1px solid rgb(224, 224, 224)'
177725
+ },
177726
+ children: jsxRuntimeExports.jsx(Checkbox$1, {
177727
+ color: "primary",
177728
+ checked: selected.includes(Number(id)),
177729
+ onClick: e => e.stopPropagation(),
177730
+ onChange: () => onSelect(Number(id)),
177731
+ slotProps: {
177732
+ input: {
177733
+ 'aria-braillelabel': "enhanced-table-checkbox-".concat(id)
177734
+ }
177735
+ }
177736
+ })
177737
+ }), columnDefinitions.map((colDef, idx) => {
177738
+ var _a, _b, _c, _d;
177739
+ if (colDef.contentGetter) {
177740
+ const content = colDef.contentGetter(row, rowIdx);
177741
+ const fieldName = (_a = colDef.fieldName) !== null && _a !== void 0 ? _a : '';
177742
+ const isMergeColumn = fieldName === mergeRowsBy;
177743
+ const isDisplay = isMergeColumn ? itemIndex === 0 || convertItems[itemIndex - 1][fieldName] !== row[fieldName] : true;
177744
+ const numOfRowSpan = isMergeColumn ? convertItems.filter(c => c[fieldName] === row[fieldName]).length : 1;
177745
+ return isDisplay && jsxRuntimeExports.jsxs(TableCell, Object.assign({
177746
+ sx: {
177747
+ border: '1px solid rgb(224, 224, 224)'
177748
+ }
177749
+ }, colDef.TableCellProps, {
177750
+ rowSpan: numOfRowSpan,
177751
+ children: [idx === 0 &&
177752
+ // Hiển thị icon mở rộng, ở cột đầu tiên
177753
+ jsxRuntimeExports.jsx(IconButton$1, {
177754
+ "aria-label": "expand row",
177755
+ size: "small",
177756
+ onClick: () => setOpen(!open),
177757
+ children: open ? jsxRuntimeExports.jsx(KeyboardArrowDown, {}) : jsxRuntimeExports.jsx(KeyboardArrowRight, {})
177758
+ }), colDef.isTooltip ? jsxRuntimeExports.jsx(StyleTooltip, {
177759
+ title: colDef.getTitleTooltip && colDef.getTitleTooltip(content),
177760
+ placement: "top-start",
177761
+ children: jsxRuntimeExports.jsx("div", {
177762
+ children: content
177763
+ })
177764
+ }) : colDef.contentGetter(row, rowIdx)]
177765
+ }), idx);
177766
+ }
177767
+ if (colDef.editFieldDefinition) {
177768
+ const {
177769
+ fieldName
177770
+ } = colDef.editFieldDefinition;
177771
+ const currentValue = (_b = row[fieldName]) !== null && _b !== void 0 ? _b : '';
177772
+ const isMergeColumn = fieldName === mergeRowsBy;
177773
+ const isDisplay = isMergeColumn ? itemIndex === 0 || convertItems[itemIndex - 1][fieldName] !== row[fieldName] : true;
177774
+ const numOfRowSpan = isMergeColumn ? convertItems.filter(c => c[fieldName] === row[fieldName]).length : 1;
177775
+ const error = ((_c = dataValidation === null || dataValidation === void 0 ? void 0 : dataValidation[rowIdx]) === null || _c === void 0 ? void 0 : _c[fieldName]) !== undefined && !((_d = dataValidation === null || dataValidation === void 0 ? void 0 : dataValidation[rowIdx]) === null || _d === void 0 ? void 0 : _d[fieldName]);
177776
+ return isDisplay && jsxRuntimeExports.jsx(TableCellEditable, {
177777
+ cellDefinition: Object.assign(Object.assign({}, colDef.editFieldDefinition), {
177778
+ row,
177779
+ TableCellProps: colDef.TableCellProps,
177780
+ isTooltip: colDef.isTooltip,
177781
+ getTitleTooltip: colDef.getTitleTooltip,
177782
+ error: error,
177783
+ value: currentValue,
177784
+ onChange: (newValue, valid) => {
177785
+ let indexes = [rowIdx];
177786
+ if (isMergeColumn) {
177787
+ indexes = convertItems.filter(c => c[fieldName] === row[fieldName]).map(c => {
177788
+ var _a;
177789
+ return (_a = c === null || c === void 0 ? void 0 : c.originalIndex) !== null && _a !== void 0 ? _a : 0;
177790
+ });
177791
+ }
177792
+ onChange(indexes, fieldName, newValue, valid);
177793
+ },
177794
+ type: colDef.editFieldDefinition.type,
177795
+ fieldName: colDef.editFieldDefinition.fieldName || ''
177796
+ }),
177797
+ numOfRowSpan: numOfRowSpan
177798
+ }, idx);
177799
+ }
177800
+ }), includeDelete === true && jsxRuntimeExports.jsx(TableCell, {
177801
+ align: "center",
177802
+ sx: {
177803
+ p: 0,
177804
+ border: '1px solid rgb(224, 224, 224)'
177805
+ },
177806
+ children: jsxRuntimeExports.jsx(IconButton$1, {
177807
+ "aria-label": "delete",
177808
+ onClick: () => onDelete(rowIdx),
177809
+ children: jsxRuntimeExports.jsx(Delete, {})
177810
+ })
177811
+ })]
177812
+ }, rowIdx), jsxRuntimeExports.jsxs(TableRow, {
177813
+ children: [jsxRuntimeExports.jsx(TableCell, {
177814
+ style: {
177815
+ paddingBottom: 0,
177816
+ paddingTop: 0
177817
+ }
177818
+ }), jsxRuntimeExports.jsx(TableCell, {
177819
+ style: {
177820
+ paddingBottom: 0,
177821
+ paddingTop: 0
177822
+ },
177823
+ colSpan: columnDefinitions.length - 1,
177824
+ children: jsxRuntimeExports.jsx(Collapse$1, {
177825
+ in: open,
177826
+ timeout: "auto",
177827
+ unmountOnExit: true,
177828
+ children: jsxRuntimeExports.jsx(Box$1, {
177829
+ sx: {
177830
+ margin: 1
177831
+ },
177832
+ display: "flex",
177833
+ flexWrap: "wrap",
177834
+ gap: 2,
177835
+ children: fieldDefinitions === null || fieldDefinitions === void 0 ? void 0 : fieldDefinitions.map((colDef, idx) => {
177836
+ var _a, _b, _c, _d;
177837
+ if (colDef.contentGetter) {
177838
+ const content = colDef.contentGetter(row, rowIdx);
177839
+ const fieldName = (_a = colDef.fieldName) !== null && _a !== void 0 ? _a : '';
177840
+ const isMergeColumn = fieldName === mergeRowsBy;
177841
+ const isDisplay = isMergeColumn ? itemIndex === 0 || convertItems[itemIndex - 1][fieldName] !== row[fieldName] : true;
177842
+ isMergeColumn ? convertItems.filter(c => c[fieldName] === row[fieldName]).length : 1;
177843
+ return isDisplay && jsxRuntimeExports.jsx(Box$1, {
177844
+ sx: {
177845
+ flex: '0 1 calc(33.333% - 16px)',
177846
+ boxSizing: 'border-box',
177847
+ p: 2
177848
+ },
177849
+ children: colDef.isTooltip ? jsxRuntimeExports.jsx(StyleTooltip, {
177850
+ title: colDef.getTitleTooltip && colDef.getTitleTooltip(content),
177851
+ placement: "top-start",
177852
+ children: jsxRuntimeExports.jsx("div", {
177853
+ children: content
177854
+ })
177855
+ }) : colDef.contentGetter(row, rowIdx)
177856
+ }, idx);
177857
+ }
177858
+ if (colDef.editFieldDefinition) {
177859
+ const {
177860
+ fieldName
177861
+ } = colDef.editFieldDefinition;
177862
+ const currentValue = (_b = row[fieldName]) !== null && _b !== void 0 ? _b : '';
177863
+ const isMergeColumn = fieldName === mergeRowsBy;
177864
+ const isDisplay = isMergeColumn ? itemIndex === 0 || convertItems[itemIndex - 1][fieldName] !== row[fieldName] : true;
177865
+ const numOfRowSpan = isMergeColumn ? convertItems.filter(c => c[fieldName] === row[fieldName]).length : 1;
177866
+ const error = ((_c = dataValidation === null || dataValidation === void 0 ? void 0 : dataValidation[rowIdx]) === null || _c === void 0 ? void 0 : _c[fieldName]) !== undefined && !((_d = dataValidation === null || dataValidation === void 0 ? void 0 : dataValidation[rowIdx]) === null || _d === void 0 ? void 0 : _d[fieldName]);
177867
+ return isDisplay && jsxRuntimeExports.jsx(Box$1, {
177868
+ sx: {
177869
+ flex: '0 1 calc(33.333% - 16px)',
177870
+ boxSizing: 'border-box',
177871
+ p: 2
177872
+ },
177873
+ children: jsxRuntimeExports.jsx(TableCellEditable, {
177874
+ isContainer: true,
177875
+ cellDefinition: Object.assign(Object.assign({}, colDef.editFieldDefinition), {
177876
+ row,
177877
+ TableCellProps: colDef.TableCellProps,
177878
+ isTooltip: colDef.isTooltip,
177879
+ getTitleTooltip: colDef.getTitleTooltip,
177880
+ error: error,
177881
+ value: currentValue,
177882
+ onChange: (newValue, valid) => {
177883
+ let indexes = [rowIdx];
177884
+ if (isMergeColumn) {
177885
+ indexes = convertItems.filter(c => c[fieldName] === row[fieldName]).map(c => {
177886
+ var _a;
177887
+ return (_a = c === null || c === void 0 ? void 0 : c.originalIndex) !== null && _a !== void 0 ? _a : 0;
177888
+ });
177889
+ }
177890
+ onChange(indexes, fieldName, newValue, valid);
177891
+ },
177892
+ type: colDef.editFieldDefinition.type,
177893
+ fieldName: colDef.editFieldDefinition.fieldName || ''
177894
+ }),
177895
+ numOfRowSpan: numOfRowSpan
177896
+ }, idx)
177897
+ }, idx);
177898
+ }
177899
+ })
177900
+ })
177901
+ })
177902
+ })]
177903
+ })]
177904
+ })
177905
+ });
177906
+ }
177907
+
177908
+ styled(_a => {
177909
+ var {
177910
+ className
177911
+ } = _a,
177912
+ props = __rest$1(_a, ["className"]);
177913
+ return jsxRuntimeExports.jsx(Tooltip$2, Object.assign({}, props, {
177914
+ arrow: true,
177915
+ classes: {
177916
+ popper: className
177917
+ }
177918
+ }));
177919
+ })(() => ({
177920
+ ["& .".concat(tooltipClasses$1.arrow)]: {
177921
+ color: '#bbbbbb',
177922
+ maxWidth: 450
177923
+ },
177924
+ ["& .".concat(tooltipClasses$1.tooltip)]: {
177925
+ backgroundColor: '#f5f5f5',
177926
+ maxWidth: 900,
177927
+ boxShadow: '0px 2px 1px -1px rgb(0 0 0 / 20%), 0px 1px 1px 0px rgb(0 0 0 / 14%), 0px 1px 3px 0px rgb(0 0 0 / 12%)'
177928
+ }
177929
+ }));
177930
+ function TableEditableBody(props) {
177931
+ const {
177932
+ items,
177933
+ getId,
177934
+ selected,
177935
+ onSelectedChange,
177936
+ onSelect,
177937
+ columnDefinitions,
177938
+ fieldDefinitions,
177939
+ dataValidation,
177940
+ includeDelete,
177941
+ spanningRows,
177942
+ onChange,
177943
+ onDelete,
177944
+ mergeRowsBy
177945
+ } = props;
177946
+ const convertToMergeAbleItems = keyValue => {
177947
+ const result = [];
177948
+ const temp = [...items.map((item, index) => Object.assign(Object.assign({}, item), {
177949
+ originalIndex: index
177950
+ }))];
177951
+ lodashExports.uniqBy(temp, keyValue).map(t => {
177952
+ const childs = temp.filter(item => item[keyValue] === t[keyValue]);
177953
+ result.push(...childs);
177954
+ });
177955
+ return result;
177956
+ };
177957
+ const convertItems = mergeRowsBy ? convertToMergeAbleItems(mergeRowsBy) : items;
177958
+ return jsxRuntimeExports.jsxs(TableBody, {
177959
+ children: [convertItems.map((row, index) => {
177960
+ var _a, _b;
177961
+ const rowIdx = (_a = row.originalIndex) !== null && _a !== void 0 ? _a : index;
177962
+ const id = (_b = getId(row)) !== null && _b !== void 0 ? _b : rowIdx;
177963
+ return jsxRuntimeExports.jsx(TableRowEditable, {
177964
+ columnDefinitions: columnDefinitions,
177965
+ fieldDefinitions: fieldDefinitions,
177966
+ convertItems: convertItems,
177967
+ dataValidation: dataValidation,
177968
+ id: id,
177969
+ itemIndex: index,
177970
+ row: row,
177971
+ rowIdx: rowIdx,
177972
+ mergeRowsBy: mergeRowsBy,
177973
+ selected: selected,
177974
+ onChange: onChange,
177975
+ onDelete: onDelete,
177976
+ onSelect: onSelect,
177977
+ includeDelete: includeDelete,
177978
+ onSelectedChange: onSelectedChange
177979
+ }, index);
177980
+ }), spanningRows === null || spanningRows === void 0 ? void 0 : spanningRows.map((row, index) => jsxRuntimeExports.jsx(Fragment, {
177981
+ children: row
177982
+ }, index))]
177983
+ });
177984
+ }
177985
+
177986
+ function TableHeader(props) {
177987
+ const {
177988
+ selected,
177989
+ onSelectedChange,
177990
+ numOfRows,
177991
+ onSelectAll,
177992
+ includeDelete,
177993
+ columnDefinitions
177994
+ } = props;
177995
+ return jsxRuntimeExports.jsx(TableHead, {
177996
+ children: jsxRuntimeExports.jsxs(TableRow, {
177997
+ children: [selected && onSelectedChange && jsxRuntimeExports.jsx(TableCell, {
177998
+ padding: "checkbox",
177999
+ sx: {
178000
+ border: '1px solid rgb(224, 224, 224)'
178001
+ },
178002
+ children: jsxRuntimeExports.jsx(Checkbox$1, {
178003
+ color: "primary",
178004
+ indeterminate: selected.length > 0 && selected.length < numOfRows,
178005
+ checked: selected.length > 0 && selected.length === numOfRows,
178006
+ onChange: () => onSelectAll(),
178007
+ slotProps: {
178008
+ input: {
178009
+ 'aria-label': 'select all desserts'
178010
+ }
178011
+ }
178012
+ })
178013
+ }), columnDefinitions.map((colDef, idx) => {
178014
+ var _a;
178015
+ const {
178016
+ headerName,
178017
+ width,
178018
+ TableCellProps
178019
+ } = colDef;
178020
+ return jsxRuntimeExports.jsx(TableCell, Object.assign({
178021
+ sx: Object.assign({
178022
+ border: '1px solid rgb(224, 224, 224)'
178023
+ }, width && {
178024
+ width: width
178025
+ })
178026
+ }, TableCellProps, {
178027
+ children: "".concat(headerName).concat(((_a = colDef === null || colDef === void 0 ? void 0 : colDef.editFieldDefinition) === null || _a === void 0 ? void 0 : _a.required) ? '*' : '')
178028
+ }), idx);
178029
+ }), includeDelete === true && jsxRuntimeExports.jsx(TableCell, {
178030
+ sx: {
178031
+ width: 60,
178032
+ border: '1px solid rgb(224, 224, 224)'
178033
+ }
178034
+ })]
178035
+ })
178036
+ });
178037
+ }
178038
+
178039
+ function TopBarActions(props) {
178040
+ const {
178041
+ t
178042
+ } = useTranslation();
178043
+ const {
178044
+ selected,
178045
+ selectionActions
178046
+ } = props;
178047
+ return jsxRuntimeExports.jsx(Box$1, {
178048
+ sx: {
178049
+ position: 'relative'
178050
+ },
178051
+ children: jsxRuntimeExports.jsxs(Box$1, {
178052
+ sx: {
178053
+ padding: '10px 16px',
178054
+ width: '100%',
178055
+ display: 'flex',
178056
+ flexDirection: 'row',
178057
+ justifyContent: 'space-between',
178058
+ background: '#EEEEEE'
178059
+ },
178060
+ children: [jsxRuntimeExports.jsx(Typography$1, {
178061
+ variant: "body1",
178062
+ style: {
178063
+ display: 'flex',
178064
+ alignItems: 'center'
178065
+ },
178066
+ children: "".concat(selected.length, " ").concat(t('Common.Selected').toLowerCase())
178067
+ }), jsxRuntimeExports.jsx(Box$1, {
178068
+ style: {
178069
+ display: 'flex',
178070
+ flexDirection: 'row',
178071
+ justifyContent: 'flex-end'
178072
+ },
178073
+ children: selectionActions && selectionActions.map((actionDef, actIdx) => jsxRuntimeExports.jsx(Tooltip$2, {
178074
+ title: actionDef.tooltipTitle,
178075
+ children: jsxRuntimeExports.jsx(IconButton$1, {
178076
+ size: "small",
178077
+ onClick: () => actionDef.action(),
178078
+ sx: {
178079
+ mx: 0.5
178080
+ },
178081
+ disabled: actionDef.disabled,
178082
+ children: actionDef.icon
178083
+ })
178084
+ }, actIdx))
178085
+ })]
178086
+ })
178087
+ });
178088
+ }
178089
+
178090
+ function TableEditable(props) {
178091
+ const {
178092
+ t
178093
+ } = useTranslation();
178094
+ const {
178095
+ columnDefinitions,
178096
+ fieldDefinitions,
178097
+ items,
178098
+ onChange,
178099
+ getRowId,
178100
+ selected,
178101
+ onSelectedChange,
178102
+ hideHeader = false,
178103
+ onAddNew,
178104
+ includeDelete = false,
178105
+ spanningRows,
178106
+ selectionActions,
178107
+ mergeRowsBy,
178108
+ observation
178109
+ } = props;
178110
+ const [dataValidation, setDataValidation] = useState(items.map(() => ({})));
178111
+ useEffect(() => {
178112
+ const difference = items.length - dataValidation.length;
178113
+ if (difference > 0) {
178114
+ let newDataValidation = _$3.cloneDeep(dataValidation);
178115
+ for (let i = 0; i < difference; i++) {
178116
+ newDataValidation.push({});
178117
+ }
178118
+ setDataValidation(newDataValidation);
178119
+ }
178120
+ }, [items]);
178121
+ const handleChange = (indexes, fieldName, newValue, valid) => {
178122
+ console.log('sss', indexes, fieldName, newValue, valid);
178123
+ let newData = _$3.cloneDeep(items);
178124
+ let newValidation = _$3.cloneDeep(dataValidation);
178125
+ indexes.map(indexOfArray => {
178126
+ var _a, _b;
178127
+ newData[indexOfArray][fieldName] = newValue;
178128
+ newValidation[indexOfArray][fieldName] = valid;
178129
+ let columnField = (_a = columnDefinitions.find(x => {
178130
+ var _a;
178131
+ return ((_a = x.editFieldDefinition) === null || _a === void 0 ? void 0 : _a.fieldName) === fieldName;
178132
+ })) === null || _a === void 0 ? void 0 : _a.editFieldDefinition;
178133
+ let collapField = (_b = fieldDefinitions.find(x => {
178134
+ var _a;
178135
+ return ((_a = x.editFieldDefinition) === null || _a === void 0 ? void 0 : _a.fieldName) === fieldName;
178136
+ })) === null || _b === void 0 ? void 0 : _b.editFieldDefinition;
178137
+ // Column
178138
+ if (columnField) {
178139
+ if (columnField.customeFieldChange) {
178140
+ const objChange = columnField.customeFieldChange(newValue);
178141
+ if (typeof objChange === 'object' && objChange !== null) {
178142
+ newData[indexOfArray] = Object.assign(Object.assign({}, newData[indexOfArray]), objChange);
178143
+ for (let fieldKey in objChange) {
178144
+ newValidation[indexOfArray][fieldKey] = true;
178145
+ }
178146
+ }
178147
+ }
178148
+ const convertFields = columnDefinitions.filter(col => col.editFieldDefinition && col.editFieldDefinition.fieldName).map(col => {
178149
+ var _a;
178150
+ return {
178151
+ fieldName: String(col.editFieldDefinition.fieldName),
178152
+ value: String((_a = newData[indexOfArray][col.editFieldDefinition.fieldName]) !== null && _a !== void 0 ? _a : '')
178153
+ };
178154
+ });
178155
+ const convertFormulas = columnDefinitions.filter(col => !!col.editFieldDefinition && !!col.editFieldDefinition.autoFormula && col.editFieldDefinition.fieldName).map(col => {
178156
+ var _a;
178157
+ return {
178158
+ fieldName: String(col.editFieldDefinition.fieldName),
178159
+ value: (_a = col.editFieldDefinition) === null || _a === void 0 ? void 0 : _a.autoFormula
178160
+ };
178161
+ });
178162
+ const currentField = columnField;
178163
+ const relateFormulas = convertFormulas.filter(formula => {
178164
+ var _a, _b;
178165
+ return (_a = formula === null || formula === void 0 ? void 0 : formula.value) === null || _a === void 0 ? void 0 : _a.includes("{".concat((_b = currentField === null || currentField === void 0 ? void 0 : currentField.fieldName) === null || _b === void 0 ? void 0 : _b.toString(), "}"));
178166
+ });
178167
+ if (relateFormulas.length > 0) {
178168
+ const result = updateFieldsWithFormulas(convertFormulas, convertFields, newData[indexOfArray], newValidation[indexOfArray], relateFormulas);
178169
+ newData[indexOfArray] = result.newData;
178170
+ newValidation[indexOfArray] = result.newValidation;
178171
+ }
178172
+ }
178173
+ // collapsible
178174
+ if (collapField) {
178175
+ if (collapField.customeFieldChange) {
178176
+ const objChange = collapField.customeFieldChange(newValue);
178177
+ if (typeof objChange === 'object' && objChange !== null) {
178178
+ newData[indexOfArray] = Object.assign(Object.assign({}, newData[indexOfArray]), objChange);
178179
+ for (let fieldKey in objChange) {
178180
+ newValidation[indexOfArray][fieldKey] = true;
178181
+ }
178182
+ }
178183
+ }
178184
+ const convertFields = columnDefinitions.filter(col => col.editFieldDefinition && col.editFieldDefinition.fieldName).map(col => {
178185
+ var _a;
178186
+ return {
178187
+ fieldName: String(col.editFieldDefinition.fieldName),
178188
+ value: String((_a = newData[indexOfArray][col.editFieldDefinition.fieldName]) !== null && _a !== void 0 ? _a : '')
178189
+ };
178190
+ });
178191
+ const convertFormulas = columnDefinitions.filter(col => !!col.editFieldDefinition && !!col.editFieldDefinition.autoFormula && col.editFieldDefinition.fieldName).map(col => {
178192
+ var _a;
178193
+ return {
178194
+ fieldName: String(col.editFieldDefinition.fieldName),
178195
+ value: (_a = col.editFieldDefinition) === null || _a === void 0 ? void 0 : _a.autoFormula
178196
+ };
178197
+ });
178198
+ const currentField = collapField;
178199
+ const relateFormulas = convertFormulas.filter(formula => {
178200
+ var _a, _b;
178201
+ return (_a = formula === null || formula === void 0 ? void 0 : formula.value) === null || _a === void 0 ? void 0 : _a.includes("{".concat((_b = currentField === null || currentField === void 0 ? void 0 : currentField.fieldName) === null || _b === void 0 ? void 0 : _b.toString(), "}"));
178202
+ });
178203
+ if (relateFormulas.length > 0) {
178204
+ const result = updateFieldsWithFormulas(convertFormulas, convertFields, newData[indexOfArray], newValidation[indexOfArray], relateFormulas);
178205
+ newData[indexOfArray] = result.newData;
178206
+ newValidation[indexOfArray] = result.newValidation;
178207
+ }
178208
+ }
178209
+ });
178210
+ const dataValid = getDataValidation(newData, newValidation);
178211
+ if (mergeRowsBy) {
178212
+ newData = _$3.omit(newData, 'originalId');
178213
+ }
178214
+ onChange(newData, dataValid, fieldName);
178215
+ setDataValidation(newValidation);
178216
+ if (observation && observation.length) {
178217
+ observation.forEach(o => {
178218
+ if (o.objObserve.includes(fieldName)) {
178219
+ o.callback(fieldName, newValue, indexes[0]);
178220
+ }
178221
+ });
178222
+ }
178223
+ };
178224
+ const updateFieldsWithFormulas = (convertFormulas, convertFields, newValue, validation, relateFormulas) => {
178225
+ const newData = Object.assign({}, newValue);
178226
+ const newValidation = Object.assign({}, validation);
178227
+ const newFields = Object.assign([], convertFields);
178228
+ relateFormulas.map(formula => {
178229
+ var _a;
178230
+ let stack = [formula];
178231
+ while (stack.length > 0) {
178232
+ const currentStack = stack.shift();
178233
+ const replaceValue = replaceFieldsValue(newFields, (_a = currentStack === null || currentStack === void 0 ? void 0 : currentStack.value) !== null && _a !== void 0 ? _a : '');
178234
+ if (!replaceValue.includes('notready')) {
178235
+ const binaryTree = convertFormulaToBinaryTree(replaceValue);
178236
+ if (binaryTree) {
178237
+ const result = calculateValue(binaryTree);
178238
+ const fieldIndex = newFields.findIndex(field => field.fieldName === (currentStack === null || currentStack === void 0 ? void 0 : currentStack.fieldName));
178239
+ newFields[fieldIndex].value = result.toString();
178240
+ newData[currentStack === null || currentStack === void 0 ? void 0 : currentStack.fieldName] = result.toString();
178241
+ newValidation[currentStack === null || currentStack === void 0 ? void 0 : currentStack.fieldName] = true;
178242
+ const relateField = newFields[fieldIndex];
178243
+ const relateAgains = convertFormulas.filter(formula => {
178244
+ var _a;
178245
+ return (_a = formula === null || formula === void 0 ? void 0 : formula.value) === null || _a === void 0 ? void 0 : _a.includes(relateField.fieldName);
178246
+ });
178247
+ stack.push(...relateAgains);
178248
+ }
178249
+ }
178250
+ }
178251
+ });
178252
+ return {
178253
+ newData,
178254
+ newValidation
178255
+ };
178256
+ };
178257
+ const handleDelete = indexOfArray => {
178258
+ const newData = _$3.cloneDeep(items);
178259
+ const itemDeleted = newData[indexOfArray];
178260
+ newData.splice(indexOfArray, 1);
178261
+ const newValidation = _$3.cloneDeep(dataValidation);
178262
+ newValidation.splice(indexOfArray, 1);
178263
+ const dataValid = getDataValidation(newData, newValidation);
178264
+ if (selected === null || selected === void 0 ? void 0 : selected.includes(itemDeleted.id)) handleSelect(itemDeleted.id);
178265
+ onChange(newData, dataValid);
178266
+ setDataValidation(newValidation);
178267
+ };
178268
+ const getDataValidation = (data, validation) => {
178269
+ let dataValid = validation.every(validation => Object.keys(validation).every(key => validation[key]));
178270
+ if (dataValid) {
178271
+ data.forEach(item => {
178272
+ columnDefinitions.filter(x => x.editFieldDefinition && x.editFieldDefinition.required).forEach(fieldDef => {
178273
+ if (dataValid && fieldDef.editFieldDefinition && item[fieldDef.editFieldDefinition.fieldName] == undefined) dataValid = false;
178274
+ });
178275
+ });
178276
+ }
178277
+ return dataValid;
178278
+ };
178279
+ const getId = row => {
178280
+ if (getRowId) {
178281
+ return getRowId(row);
178282
+ } else if (row.hasOwnProperty('id')) {
178283
+ return 'id' in row ? row['id'] : undefined;
178284
+ } else {
178285
+ return undefined;
178286
+ }
178287
+ };
178288
+ const handleSelectAll = () => {
178289
+ if (selected && onSelectedChange) {
178290
+ if (selected.length > 0) {
178291
+ onSelectedChange([]);
178292
+ } else {
178293
+ onSelectedChange(items === null || items === void 0 ? void 0 : items.map((r, index) => getId(r) !== undefined ? getId(r) : index));
178294
+ }
178295
+ }
178296
+ };
178297
+ const handleSelect = id => {
178298
+ if (selected && onSelectedChange) {
178299
+ if (selected.includes(id)) {
178300
+ onSelectedChange(selected.filter(x => x !== id));
178301
+ } else {
178302
+ let newSelected = selected.slice();
178303
+ newSelected.push(id);
178304
+ onSelectedChange(newSelected);
178305
+ }
178306
+ }
178307
+ };
178308
+ return jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, {
178309
+ children: [jsxRuntimeExports.jsxs(TableContainer, {
178310
+ component: Paper$1,
178311
+ sx: {
178312
+ overflow: 'hidden'
178313
+ },
177563
178314
  children: [selected && onSelectedChange && selected.length > 0 && selectionActions && jsxRuntimeExports.jsx(TopBarActions, {
177564
178315
  selected: selected,
177565
178316
  selectionActions: selectionActions
@@ -177579,6 +178330,7 @@ function TableEditable(props) {
177579
178330
  onSelectedChange: onSelectedChange,
177580
178331
  onSelect: handleSelect,
177581
178332
  columnDefinitions: columnDefinitions,
178333
+ fieldDefinitions: fieldDefinitions,
177582
178334
  dataValidation: dataValidation,
177583
178335
  includeDelete: includeDelete,
177584
178336
  spanningRows: spanningRows,
@@ -205681,4 +206433,4 @@ var index_es = /*#__PURE__*/Object.freeze({
205681
206433
  vectorsRatio: vectorsRatio
205682
206434
  });
205683
206435
 
205684
- export { Container$n as Action, AdvancedSearch, AppContext, AppProvider, AsyncAutocomplete, AwingContext, BarLineChart, BoxResizableSplit, ButtonDateRangePicker, ButtonSelect, CircularProgress, DrawerBase as ClassicBaseDrawer, DrawerWrapper$1 as ClassicDrawer, CloseAction, ContentHeader, ControlPanels, CopyButton, CronTab, DataForm, DataGrid, DataGridGroup, DataGridSortType, InputFactory as DataInput, DateAutoFormat, Container$g as DatePicker, DateRangePicker$1 as DateRangePicker, Container$h as DateRangePickerOld, EnhancedDialog as DeprecatedEnhancedDialog, CreateDirectory as DirectoryForm, PermissionWarpper as DirectoryPermission, DirectoryRoot, DirectorySystem, DirectoryTree, DrawerWrapper as Drawer, DrawerNavigate, DrawerStateEnum, Container$m as EnhancedAutoComplete, EnumFieldInputType, EnumSelectedPlaceType, FIELD_TYPE, FilterNotification, FilterOperationType, FilterTreeView, FooterContainer as Footer, GoogleMap, GroupSystem, GroupTable, HierarchyTree, I18nProvider, INT_NUMBER_LIMIT, Container as Layout, Notifications as LayoutNotifications, LogicExpressionInput as LogicExpression, LogicalOperatorType, MemoWrap, MonacoEditor$1 as MonacoEditor, MultipleChoice, MultipleHierarchicalChoice, NoData, NotificationConfig, NotificationFilter as NotificationObjectFilter, NumberFormat, AsynchronousAutocomplete as OldAsyncAutoComplete, Page, PageManagement, Pagination, PieChart, PlaceFilter, RoleSystem, RoleTagSystem, SchemaSystem, SearchBox, Sharing as SharingSystem, ShowTreeItem, SimpleTreeItemWrapper, SortEnumType, Sortable, SortableTree, StatisticsCommon as Statistics, SubscriptionConfig, TIMELINE_TYPE, TYPE_CHART, TYPE_FILTERS, TabLabel, TableCellEditable, TableEditable, TableEditableBody, TableHeader, TablePaginationActions, Template as TemplateConfig, ThemeProvider, ToolbarLayout as Toolbar, TopBarActions, TreeItemWithAction, User as UserSystem, WMAPEcalculator, WorkflowFeature as WorkflowSystem, WorkspaceType, Wrapper, arrayIsNotEmptyValid, calculateValue, calculatorDirectoryIdRoot, changeToAlias, checkValidMacAddress, checkValidStringListAP, checkValidUrl, colorValid, containsOnlyDigits, convertArrayFiltersToCondition, convertArrayToObject, convertDataSetPattern, convertDateTimeToTimestamp, convertFilterExpressionToCondition, convertFormulaToBinaryTree, convertTimeLine, convertTimelineToDateTime, convertTimestampToDateTime, convertToPostfix, darkTheme, dateRangeValid, dateTimeToString, dateToString, dateToStringDDMMYYYY, dateValid, download, downloadWithDataSet, emailValid, fillMissingDates, flattenTree, formatChartNumber, formatJSON$1 as formatJSON, formatNumberByLocale, formatNumberWithLanguage, generateUUID, getCookie, getGUID, getPrecedence, getQueryVariable, getRandomKey, getRoutePath, getStartOfDay, getToday, handleExportExcel, i18n as i18nLib, isOperand, isOperator, lightTheme, nameExportStandard, notNullValid, numberNotNullValid, numberOnlyValid, numberPercentageNotNullValid, off, offlinePaginate, parseJSON, passwordValid, positiveNumberNotNullValid, pub, replaceFieldsValue, roundDecimalNumber, setObject, stringNotNullValid, stringNullableValid, sub, textValidation, timestampToStringDDMMYYYY, toCapitalize, tokenize, updateGUID, updateObjectFields, urlValid, useAppHelper, useAwing, useDrawer, useGetContext$8 as useGetContext, useGetData, usePath, validateNumber };
206436
+ export { Container$n as Action, AdvancedSearch, AppContext, AppProvider, AsyncAutocomplete, AwingContext, BarLineChart, BoxResizableSplit, ButtonDateRangePicker, ButtonSelect, CircularProgress, DrawerBase as ClassicBaseDrawer, DrawerWrapper$1 as ClassicDrawer, CloseAction, ContentHeader, ControlPanels, CopyButton, CronTab, DataForm, DataGrid, DataGridGroup, DataGridSortType, InputFactory as DataInput, DateAutoFormat, Container$g as DatePicker, DateRangePicker$1 as DateRangePicker, Container$h as DateRangePickerOld, EnhancedDialog as DeprecatedEnhancedDialog, CreateDirectory as DirectoryForm, PermissionWarpper as DirectoryPermission, DirectoryRoot, DirectorySystem, DirectoryTree, DrawerWrapper as Drawer, DrawerNavigate, DrawerStateEnum, Container$m as EnhancedAutoComplete, EnumFieldInputType, EnumSelectedPlaceType, FIELD_TYPE, FilterNotification, FilterOperationType, FilterTreeView, FooterContainer as Footer, GoogleMap, GroupSystem, GroupTable, HierarchyTree, I18nProvider, INT_NUMBER_LIMIT, Container as Layout, Notifications as LayoutNotifications, LogicExpressionInput as LogicExpression, LogicalOperatorType, MemoWrap, MonacoEditor$1 as MonacoEditor, MultipleChoice, MultipleHierarchicalChoice, NoData, NotificationConfig, NotificationFilter as NotificationObjectFilter, NumberFormat, AsynchronousAutocomplete as OldAsyncAutoComplete, Page, PageManagement, Pagination, PieChart, PlaceFilter, RoleSystem, RoleTagSystem, SchemaSystem, SearchBox, Sharing as SharingSystem, ShowTreeItem, SimpleTreeItemWrapper, SortEnumType, Sortable, SortableTree, StatisticsCommon as Statistics, SubscriptionConfig, TIMELINE_TYPE, TYPE_CHART, TYPE_FILTERS, TabLabel, TableCellEditable$1 as TableCellEditable, TableEditable$1 as TableEditable, TableEditableBody$1 as TableEditableBody, TableEditable as TableEditableCollapsible, TableEditableBody as TableEditableCollapsibleBody, TableCellEditable as TableEditableCollapsibleCell, TableHeader as TableEditableCollapsibleTableHeader, TopBarActions as TableEditableCollapsibleTopBarActions, TableHeader$1 as TableHeader, TablePaginationActions, Template as TemplateConfig, ThemeProvider, ToolbarLayout as Toolbar, TopBarActions$1 as TopBarActions, TreeItemWithAction, User as UserSystem, WMAPEcalculator, WorkflowFeature as WorkflowSystem, WorkspaceType, Wrapper, arrayIsNotEmptyValid, calculateValue, calculatorDirectoryIdRoot, changeToAlias, checkValidMacAddress, checkValidStringListAP, checkValidUrl, colorValid, containsOnlyDigits, convertArrayFiltersToCondition, convertArrayToObject, convertDataSetPattern, convertDateTimeToTimestamp, convertFilterExpressionToCondition, convertFormulaToBinaryTree, convertTimeLine, convertTimelineToDateTime, convertTimestampToDateTime, convertToPostfix, darkTheme, dateRangeValid, dateTimeToString, dateToString, dateToStringDDMMYYYY, dateValid, download, downloadWithDataSet, emailValid, fillMissingDates, flattenTree, formatChartNumber, formatJSON$1 as formatJSON, formatNumberByLocale, formatNumberWithLanguage, generateUUID, getCookie, getGUID, getPrecedence, getQueryVariable, getRandomKey, getRoutePath, getStartOfDay, getToday, handleExportExcel, i18n as i18nLib, isOperand, isOperator, lightTheme, nameExportStandard, notNullValid, numberNotNullValid, numberOnlyValid, numberPercentageNotNullValid, off, offlinePaginate, parseJSON, passwordValid, positiveNumberNotNullValid, pub, replaceFieldsValue, roundDecimalNumber, setObject, stringNotNullValid, stringNullableValid, sub, textValidation, timestampToStringDDMMYYYY, toCapitalize, tokenize, updateGUID, updateObjectFields, urlValid, useAppHelper, useAwing, useDrawer, useGetContext$8 as useGetContext, useGetData, usePath, validateNumber };
package/dist/index.d.ts CHANGED
@@ -1723,6 +1723,87 @@ interface ChartContentProps<F> extends Pick<IStatisticsProps<F>, 'dataChart' | '
1723
1723
 
1724
1724
  declare const StatisticsCommon: <F extends object = object>(props: IStatisticsProps<F>) => react_jsx_runtime.JSX.Element;
1725
1725
 
1726
+ type CellDefinition$1<T extends object> = FieldDefinitionProps$1<T> & {
1727
+ TableCellProps?: TableCellProps$1;
1728
+ isTooltip?: boolean;
1729
+ row?: Partial<T>;
1730
+ getTitleTooltip?: (value: T[keyof T]) => NonNullable<ReactNode>;
1731
+ };
1732
+ interface ColumnDefinition$1<T extends object> {
1733
+ headerName: ReactNode;
1734
+ /**
1735
+ * Độ rộng của cột
1736
+ */
1737
+ width?: string | number;
1738
+ TableCellProps?: TableCellProps$1;
1739
+ editFieldDefinition?: CellDefinition$1<T>;
1740
+ isRowGroup?: boolean;
1741
+ contentGetter?: (obj: T, idx?: number) => ReactNode;
1742
+ fieldName?: string;
1743
+ isTooltip?: boolean;
1744
+ getTitleTooltip?: (value: T[keyof T]) => NonNullable<ReactNode>;
1745
+ }
1746
+ type TableEditableProps$1<T> = {
1747
+ columnDefinitions: Array<ColumnDefinition$1<Partial<T>>>;
1748
+ items: Array<Partial<T>>;
1749
+ onChange(newData: Array<Partial<T>>, dataValid: boolean, fieldName?: keyof T): void;
1750
+ getRowId?(obj: Partial<T>): number;
1751
+ selected?: number[];
1752
+ onSelectedChange?(ids: number[]): void;
1753
+ hideHeader?: boolean;
1754
+ onAddNew?(): void;
1755
+ includeDelete?: boolean;
1756
+ spanningRows?: ReactNode[];
1757
+ selectionActions?: SelectionActionDefinition[];
1758
+ mergeRowsBy?: string;
1759
+ observation?: {
1760
+ objObserve: Array<keyof T>;
1761
+ callback: (fieldName?: keyof T, columnValue?: unknown, index?: number) => void;
1762
+ }[];
1763
+ };
1764
+ interface TopBarActionsProps$1 {
1765
+ selected: number[];
1766
+ selectionActions?: SelectionActionDefinition[];
1767
+ }
1768
+ interface TableHeaderProps$1<T> {
1769
+ selected?: number[];
1770
+ onSelectedChange?: (selected: number[]) => void;
1771
+ numOfRows: number;
1772
+ onSelectAll: () => void;
1773
+ includeDelete?: boolean;
1774
+ columnDefinitions: Array<ColumnDefinition$1<Partial<T>>>;
1775
+ }
1776
+ interface TableEditableBodyProps$1<T> {
1777
+ items: Array<Partial<T>>;
1778
+ getId: (item: Partial<T>) => string | number | undefined;
1779
+ selected?: number[];
1780
+ onSelectedChange?: (selected: number[]) => void;
1781
+ onSelect: (id: number) => void;
1782
+ columnDefinitions: Array<ColumnDefinition$1<Partial<T>>>;
1783
+ dataValidation: Partial<{
1784
+ [K in keyof T]: boolean;
1785
+ }>[];
1786
+ includeDelete?: boolean;
1787
+ spanningRows?: ReactNode[];
1788
+ onChange: (indexes: number[], fieldName: keyof T, newValue: T[keyof T], valid: boolean) => void;
1789
+ onDelete: (rowIdx: number) => void;
1790
+ mergeRowsBy?: string;
1791
+ }
1792
+ interface TableCellEditableProps$1<T extends object> {
1793
+ cellDefinition: CellDefinition$1<T>;
1794
+ numOfRowSpan?: number;
1795
+ }
1796
+
1797
+ declare function TableEditable$1<T>(props: TableEditableProps$1<T>): react_jsx_runtime.JSX.Element;
1798
+
1799
+ declare function TableHeader$1<T>(props: TableHeaderProps$1<T>): react_jsx_runtime.JSX.Element;
1800
+
1801
+ declare function TableEditableBody$1<T>(props: TableEditableBodyProps$1<T>): react_jsx_runtime.JSX.Element;
1802
+
1803
+ declare function TableCellEditable$1<T extends object>(props: TableCellEditableProps$1<T>): react_jsx_runtime.JSX.Element;
1804
+
1805
+ declare function TopBarActions$1(props: TopBarActionsProps$1): react_jsx_runtime.JSX.Element;
1806
+
1726
1807
  type CellDefinition<T extends object> = FieldDefinitionProps$1<T> & {
1727
1808
  TableCellProps?: TableCellProps$1;
1728
1809
  isTooltip?: boolean;
@@ -1745,6 +1826,7 @@ interface ColumnDefinition<T extends object> {
1745
1826
  }
1746
1827
  type TableEditableProps<T> = {
1747
1828
  columnDefinitions: Array<ColumnDefinition<Partial<T>>>;
1829
+ fieldDefinitions: Array<ColumnDefinition<Partial<T>>>;
1748
1830
  items: Array<Partial<T>>;
1749
1831
  onChange(newData: Array<Partial<T>>, dataValid: boolean, fieldName?: keyof T): void;
1750
1832
  getRowId?(obj: Partial<T>): number;
@@ -1780,6 +1862,7 @@ interface TableEditableBodyProps<T> {
1780
1862
  onSelectedChange?: (selected: number[]) => void;
1781
1863
  onSelect: (id: number) => void;
1782
1864
  columnDefinitions: Array<ColumnDefinition<Partial<T>>>;
1865
+ fieldDefinitions?: Array<ColumnDefinition<Partial<T>>>;
1783
1866
  dataValidation: Partial<{
1784
1867
  [K in keyof T]: boolean;
1785
1868
  }>[];
@@ -1791,6 +1874,7 @@ interface TableEditableBodyProps<T> {
1791
1874
  }
1792
1875
  interface TableCellEditableProps<T extends object> {
1793
1876
  cellDefinition: CellDefinition<T>;
1877
+ isContainer?: boolean;
1794
1878
  numOfRowSpan?: number;
1795
1879
  }
1796
1880
 
@@ -3418,4 +3502,4 @@ declare function ThemeProvider(props: {
3418
3502
  };
3419
3503
  }): react_jsx_runtime.JSX.Element;
3420
3504
 
3421
- export { Container$4 as Action, type ActionsProps, AdvancedSearch, type AdvancedSearchField, type AdvancedSearchProps, type AnalyticDataProviderModel, AppContext, AppProvider, AsyncAutocomplete, type AsyncAutocompleteProps, type AsynchronousAutocompleteProps, AwingContext, BarLineChart, type BaseDirectoryPermission, type BaseFieldDefinition, type BaseFieldRender, type BinaryTreeNode, BoxResizableSplit, type BoxResizableSplitProps, ButtonDateRangePicker, type ButtonDateRangePickerProps, ButtonSelect, type ButtonSelectProps, type Cell, type CellDefinition, type ChartContentProps, CircularProgress, DrawerBase as ClassicBaseDrawer, DrawerWrapper as ClassicDrawer, CloseAction, type ColumnDefinition, type CombinedProps, ContentHeader, type OwnProps as ContentHeaderProps, ControlPanels, CopyButton, type CopyButtonProps, CronTab, type CronTabProps, type CronTabValue, type DataExportEntity, DataForm, type DataFormProps, DataGrid, type DataGridColumnDefinitionBase, DataGridGroup, type DataGridProps, DataGridSortType, InputFactory as DataInput, type DataSet, DateAutoFormat, type DateAutoFormatProps, Container$2 as DatePicker, type DatePickerProps, type DateRange, DateRangePicker, Container$3 as DateRangePickerOld, type DateRangePickerOldProps, type DateRangePickerProps, type DayInterval, type DayIntervalPickerProps, EnhancedDialog as DeprecatedEnhancedDialog, type Directory$2 as Directory, CreateDirectory as DirectoryForm, PermissionWarpper as DirectoryPermission, type DirectoryPermissionServices, type DirectoryProps, DirectoryRoot, DirectorySystem, DirectoryTree, type DirectoryTreeProps, DrawerWrapper$1 as Drawer, type DrawerBaseProps, type DrawerHandle, DrawerNavigate, type DrawerNavigateProps, type DrawerProps, DrawerStateEnum, Container$1 as EnhancedAutoComplete, type EnhancedAutoCompleteProps, type EnhancedDialogProps, EnumFieldInputType, EnumSelectedPlaceType, FIELD_TYPE, type FieldDefinitionProps, type FileResponse, type FilterExpression, type FilterGroup, type FilterItem, FilterNotification, FilterOperationType, FilterTreeView, type FilterTreeViewProps, type FiltersType, FooterContainer as Footer, type FunctionStructure, GoogleMap, type GridSortDirection, type GridSortModel, type GroupComponentProps, type GroupFilter, GroupSystem, GroupTable, type GroupTableProps, type HeadCell, HierarchyTree, I18nProvider, type IChartJsContainer, type ICircularProgress, type IConfigChart, type IControlPanel, type DataGridGroupsProps as IDataGridGroups, type IDirectoryTreeViewProps, type IFilterField, type IGoogleMapProps, type IMenu, type IMonacoEditorProps, type IMultipleChoiceComponentProps, type IMultipleChoiceProps, type IMultipleHierarchicalChoice, type IMultipleHierarchicalChoiceInput, type IMultipleHierarchicalChoiceProps, type IMultipleSelect, INT_NUMBER_LIMIT, type IOption, type IPieContainer, type IStatisticsProps, type ITag, Container as Layout, Notifications as LayoutNotifications, type Locale, LogicExpressionInput as LogicExpression, type LogicExpressionInputProps, LogicalOperatorType, MemoWrap, type MemoWrapProps, type MenuOption, type ModalDrawerProps, MonacoEditor, MultipleChoice, type MultipleHierarChicalChoiceComponentProps, MultipleHierarchicalChoice, NoData, NotificationConfig, NotificationFilter$1 as NotificationObjectFilter, NumberFormat, type ObjectDefinition$4 as ObjectDefinition, type ObjectStructure, AsynchronousAutocomplete as OldAsyncAutoComplete, Page, PageManagement, type PageManagementProps, type PageProps, Pagination, type PermissionContainerProps, PieChart, PlaceFilter, type PlaceFilterProps, type QueryInput, type QueryInputStatistics, type Role, type RoleServices, RoleSystem, type RoleTag$3 as RoleTag, type RoleTagServices, RoleTagSystem, type Row, type RowActionDefinition, type RowId, type RowProps, type SchedulePermission, SchemaSystem, SearchBox, type SearchBoxProps, type SearchType, type SharingProps, Sharing as SharingSystem, ShowTreeItem, SimpleTreeItemWrapper, SortEnumType, Sortable, SortableTree, type SortableTreeProps, StatisticsCommon as Statistics, SubscriptionConfig, TIMELINE_TYPE, TYPE_CHART, TYPE_FILTERS, TabLabel, TableCellEditable, type TableCellEditableProps, TableEditable, TableEditableBody, type TableEditableBodyProps, type TableEditableProps, type TableGridProps, TableHeader, type TableHeaderProps, type TableLabelProps, TablePaginationActions, type TablePaginationActionsProps, Template as TemplateConfig, ThemeProvider, type Timestamp, ToolbarLayout as Toolbar, TopBarActions, type TopBarActionsProps, type TreeItem, type TreeItemOption, TreeItemWithAction, type TreeItemWithActionProps, type TreeItems, User as UserSystem, type Value, type ValueBase, WMAPEcalculator, WorkflowFeature as WorkflowSystem, WorkspaceType, Wrapper, arrayIsNotEmptyValid, calculateValue, calculatorDirectoryIdRoot, changeToAlias, checkValidMacAddress, checkValidStringListAP, checkValidUrl, colorValid, containsOnlyDigits, convertArrayFiltersToCondition, convertArrayToObject, convertDataSetPattern, convertDateTimeToTimestamp, convertFilterExpressionToCondition, convertFormulaToBinaryTree, convertTimeLine, convertTimelineToDateTime, convertTimestampToDateTime, convertToPostfix, darkTheme, dateRangeValid, dateTimeToString, dateToString, dateToStringDDMMYYYY, dateValid, download, downloadWithDataSet, emailValid, fillMissingDates, flattenTree, formatChartNumber, formatJSON, formatNumberByLocale, formatNumberWithLanguage, generateUUID, getCookie, getGUID, getPrecedence, getQueryVariable, getRandomKey, getRoutePath, getStartOfDay, getToday, handleExportExcel, i18n as i18nLib, isOperand, isOperator, lightTheme, nameExportStandard, notNullValid, numberNotNullValid, numberOnlyValid, numberPercentageNotNullValid, off, offlinePaginate, parseJSON, passwordValid, positiveNumberNotNullValid, pub, replaceFieldsValue, roundDecimalNumber, setObject, stringNotNullValid, stringNullableValid, sub, textValidation, timestampToStringDDMMYYYY, toCapitalize, tokenize, updateGUID, updateObjectFields, urlValid, useAppHelper, useAwing, useDrawer, useGetContext, useGetData, usePath, validateNumber };
3505
+ export { Container$4 as Action, type ActionsProps, AdvancedSearch, type AdvancedSearchField, type AdvancedSearchProps, type AnalyticDataProviderModel, AppContext, AppProvider, AsyncAutocomplete, type AsyncAutocompleteProps, type AsynchronousAutocompleteProps, AwingContext, BarLineChart, type BaseDirectoryPermission, type BaseFieldDefinition, type BaseFieldRender, type BinaryTreeNode, BoxResizableSplit, type BoxResizableSplitProps, ButtonDateRangePicker, type ButtonDateRangePickerProps, ButtonSelect, type ButtonSelectProps, type Cell, type CellDefinition$1 as CellDefinition, type ChartContentProps, CircularProgress, DrawerBase as ClassicBaseDrawer, DrawerWrapper as ClassicDrawer, CloseAction, type ColumnDefinition$1 as ColumnDefinition, type CombinedProps, ContentHeader, type OwnProps as ContentHeaderProps, ControlPanels, CopyButton, type CopyButtonProps, CronTab, type CronTabProps, type CronTabValue, type DataExportEntity, DataForm, type DataFormProps, DataGrid, type DataGridColumnDefinitionBase, DataGridGroup, type DataGridProps, DataGridSortType, InputFactory as DataInput, type DataSet, DateAutoFormat, type DateAutoFormatProps, Container$2 as DatePicker, type DatePickerProps, type DateRange, DateRangePicker, Container$3 as DateRangePickerOld, type DateRangePickerOldProps, type DateRangePickerProps, type DayInterval, type DayIntervalPickerProps, EnhancedDialog as DeprecatedEnhancedDialog, type Directory$2 as Directory, CreateDirectory as DirectoryForm, PermissionWarpper as DirectoryPermission, type DirectoryPermissionServices, type DirectoryProps, DirectoryRoot, DirectorySystem, DirectoryTree, type DirectoryTreeProps, DrawerWrapper$1 as Drawer, type DrawerBaseProps, type DrawerHandle, DrawerNavigate, type DrawerNavigateProps, type DrawerProps, DrawerStateEnum, Container$1 as EnhancedAutoComplete, type EnhancedAutoCompleteProps, type EnhancedDialogProps, EnumFieldInputType, EnumSelectedPlaceType, FIELD_TYPE, type FieldDefinitionProps, type FileResponse, type FilterExpression, type FilterGroup, type FilterItem, FilterNotification, FilterOperationType, FilterTreeView, type FilterTreeViewProps, type FiltersType, FooterContainer as Footer, type FunctionStructure, GoogleMap, type GridSortDirection, type GridSortModel, type GroupComponentProps, type GroupFilter, GroupSystem, GroupTable, type GroupTableProps, type HeadCell, HierarchyTree, I18nProvider, type IChartJsContainer, type ICircularProgress, type IConfigChart, type IControlPanel, type DataGridGroupsProps as IDataGridGroups, type IDirectoryTreeViewProps, type IFilterField, type IGoogleMapProps, type IMenu, type IMonacoEditorProps, type IMultipleChoiceComponentProps, type IMultipleChoiceProps, type IMultipleHierarchicalChoice, type IMultipleHierarchicalChoiceInput, type IMultipleHierarchicalChoiceProps, type IMultipleSelect, INT_NUMBER_LIMIT, type IOption, type IPieContainer, type IStatisticsProps, type ITag, Container as Layout, Notifications as LayoutNotifications, type Locale, LogicExpressionInput as LogicExpression, type LogicExpressionInputProps, LogicalOperatorType, MemoWrap, type MemoWrapProps, type MenuOption, type ModalDrawerProps, MonacoEditor, MultipleChoice, type MultipleHierarChicalChoiceComponentProps, MultipleHierarchicalChoice, NoData, NotificationConfig, NotificationFilter$1 as NotificationObjectFilter, NumberFormat, type ObjectDefinition$4 as ObjectDefinition, type ObjectStructure, AsynchronousAutocomplete as OldAsyncAutoComplete, Page, PageManagement, type PageManagementProps, type PageProps, Pagination, type PermissionContainerProps, PieChart, PlaceFilter, type PlaceFilterProps, type QueryInput, type QueryInputStatistics, type Role, type RoleServices, RoleSystem, type RoleTag$3 as RoleTag, type RoleTagServices, RoleTagSystem, type Row, type RowActionDefinition, type RowId, type RowProps, type SchedulePermission, SchemaSystem, SearchBox, type SearchBoxProps, type SearchType, type SharingProps, Sharing as SharingSystem, ShowTreeItem, SimpleTreeItemWrapper, SortEnumType, Sortable, SortableTree, type SortableTreeProps, StatisticsCommon as Statistics, SubscriptionConfig, TIMELINE_TYPE, TYPE_CHART, TYPE_FILTERS, TabLabel, TableCellEditable$1 as TableCellEditable, type TableCellEditableProps$1 as TableCellEditableProps, TableEditable$1 as TableEditable, TableEditableBody$1 as TableEditableBody, type TableEditableBodyProps$1 as TableEditableBodyProps, TableEditable as TableEditableCollapsible, TableEditableBody as TableEditableCollapsibleBody, TableCellEditable as TableEditableCollapsibleCell, type CellDefinition$1 as TableEditableCollapsibleCellDefinition, type ColumnDefinition$1 as TableEditableCollapsibleColumnDefinition, type TableCellEditableProps$1 as TableEditableCollapsibleTableCellEditableProps, type TableEditableBodyProps$1 as TableEditableCollapsibleTableEditableBodyProps, type TableEditableProps$1 as TableEditableCollapsibleTableEditableProps, TableHeader as TableEditableCollapsibleTableHeader, type TableHeaderProps$1 as TableEditableCollapsibleTableHeaderProps, TopBarActions as TableEditableCollapsibleTopBarActions, type TopBarActionsProps$1 as TableEditableCollapsibleTopBarActionsProps, type TableEditableProps$1 as TableEditableProps, type TableGridProps, TableHeader$1 as TableHeader, type TableHeaderProps$1 as TableHeaderProps, type TableLabelProps, TablePaginationActions, type TablePaginationActionsProps, Template as TemplateConfig, ThemeProvider, type Timestamp, ToolbarLayout as Toolbar, TopBarActions$1 as TopBarActions, type TopBarActionsProps$1 as TopBarActionsProps, type TreeItem, type TreeItemOption, TreeItemWithAction, type TreeItemWithActionProps, type TreeItems, User as UserSystem, type Value, type ValueBase, WMAPEcalculator, WorkflowFeature as WorkflowSystem, WorkspaceType, Wrapper, arrayIsNotEmptyValid, calculateValue, calculatorDirectoryIdRoot, changeToAlias, checkValidMacAddress, checkValidStringListAP, checkValidUrl, colorValid, containsOnlyDigits, convertArrayFiltersToCondition, convertArrayToObject, convertDataSetPattern, convertDateTimeToTimestamp, convertFilterExpressionToCondition, convertFormulaToBinaryTree, convertTimeLine, convertTimelineToDateTime, convertTimestampToDateTime, convertToPostfix, darkTheme, dateRangeValid, dateTimeToString, dateToString, dateToStringDDMMYYYY, dateValid, download, downloadWithDataSet, emailValid, fillMissingDates, flattenTree, formatChartNumber, formatJSON, formatNumberByLocale, formatNumberWithLanguage, generateUUID, getCookie, getGUID, getPrecedence, getQueryVariable, getRandomKey, getRoutePath, getStartOfDay, getToday, handleExportExcel, i18n as i18nLib, isOperand, isOperator, lightTheme, nameExportStandard, notNullValid, numberNotNullValid, numberOnlyValid, numberPercentageNotNullValid, off, offlinePaginate, parseJSON, passwordValid, positiveNumberNotNullValid, pub, replaceFieldsValue, roundDecimalNumber, setObject, stringNotNullValid, stringNullableValid, sub, textValidation, timestampToStringDDMMYYYY, toCapitalize, tokenize, updateGUID, updateObjectFields, urlValid, useAppHelper, useAwing, useDrawer, useGetContext, useGetData, usePath, validateNumber };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "awing-library",
3
- "version": "2.1.2-dev.68",
3
+ "version": "2.1.2-dev.69",
4
4
  "main": "dist/esm/index.js",
5
5
  "module": "dist/esm/index.js",
6
6
  "types": "dist/index.d.ts",