@etsoo/react 1.5.77 → 1.5.80

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 (83) hide show
  1. package/__tests__/mu/ComboBox.tsx +30 -0
  2. package/__tests__/mu/NotifierMUTests.tsx +1 -1
  3. package/__tests__/mu/SelectEx.tsx +26 -0
  4. package/lib/app/CommonApp.d.ts +2 -2
  5. package/lib/app/Labels.d.ts +1 -1
  6. package/lib/app/ServiceApp.d.ts +2 -2
  7. package/lib/components/GridColumn.d.ts +10 -10
  8. package/lib/components/GridLoader.d.ts +7 -8
  9. package/lib/components/ScrollerGrid.d.ts +6 -7
  10. package/lib/components/ScrollerList.d.ts +2 -2
  11. package/lib/mu/AutocompleteExtendedProps.d.ts +4 -4
  12. package/lib/mu/ComboBox.d.ts +5 -5
  13. package/lib/mu/DataGridEx.d.ts +6 -6
  14. package/lib/mu/DataGridRenderers.d.ts +1 -1
  15. package/lib/mu/DnDList.d.ts +2 -2
  16. package/lib/mu/ItemList.d.ts +6 -5
  17. package/lib/mu/ItemList.js +4 -12
  18. package/lib/mu/ListMoreDisplay.d.ts +2 -2
  19. package/lib/mu/MUGlobal.d.ts +5 -5
  20. package/lib/mu/OptionGroup.d.ts +8 -8
  21. package/lib/mu/ResponsibleContainer.d.ts +6 -6
  22. package/lib/mu/ScrollerListEx.d.ts +11 -10
  23. package/lib/mu/SearchOptionGroup.d.ts +2 -2
  24. package/lib/mu/SelectBool.d.ts +2 -3
  25. package/lib/mu/SelectBool.js +1 -1
  26. package/lib/mu/SelectEx.d.ts +8 -8
  27. package/lib/mu/SelectEx.js +3 -3
  28. package/lib/mu/TableEx.d.ts +4 -4
  29. package/lib/mu/Tiplist.d.ts +4 -4
  30. package/lib/mu/Tiplist.js +1 -3
  31. package/lib/mu/pages/CommonPageProps.d.ts +1 -1
  32. package/lib/mu/pages/DataGridPage.d.ts +2 -2
  33. package/lib/mu/pages/DataGridPageProps.d.ts +3 -3
  34. package/lib/mu/pages/FixedListPage.d.ts +2 -2
  35. package/lib/mu/pages/ListPage.d.ts +2 -2
  36. package/lib/mu/pages/ListPageProps.d.ts +1 -2
  37. package/lib/mu/pages/ResponsivePage.d.ts +2 -2
  38. package/lib/mu/pages/ResponsivePageProps.d.ts +3 -3
  39. package/lib/mu/pages/SearchPageProps.d.ts +2 -2
  40. package/lib/mu/pages/TablePage.d.ts +2 -2
  41. package/lib/mu/pages/TablePageProps.d.ts +1 -2
  42. package/lib/mu/pages/ViewPage.d.ts +5 -4
  43. package/lib/states/IState.d.ts +1 -1
  44. package/lib/uses/useCombinedRefs.d.ts +1 -1
  45. package/package.json +12 -12
  46. package/src/app/CommonApp.ts +2 -2
  47. package/src/app/Labels.ts +1 -1
  48. package/src/app/ServiceApp.ts +2 -2
  49. package/src/components/GridColumn.ts +10 -11
  50. package/src/components/GridLoader.ts +7 -7
  51. package/src/components/ScrollerGrid.tsx +66 -62
  52. package/src/components/ScrollerList.tsx +2 -2
  53. package/src/mu/AutocompleteExtendedProps.ts +9 -9
  54. package/src/mu/ComboBox.tsx +20 -12
  55. package/src/mu/DataGridEx.tsx +15 -15
  56. package/src/mu/DataGridRenderers.tsx +1 -1
  57. package/src/mu/DnDList.tsx +2 -2
  58. package/src/mu/ItemList.tsx +28 -25
  59. package/src/mu/ListMoreDisplay.tsx +2 -2
  60. package/src/mu/MUGlobal.ts +5 -5
  61. package/src/mu/OptionGroup.tsx +22 -14
  62. package/src/mu/ResponsibleContainer.tsx +15 -20
  63. package/src/mu/ScrollerListEx.tsx +21 -20
  64. package/src/mu/SearchOptionGroup.tsx +11 -5
  65. package/src/mu/SelectBool.tsx +7 -14
  66. package/src/mu/SelectEx.tsx +25 -19
  67. package/src/mu/TableEx.tsx +53 -53
  68. package/src/mu/Tiplist.tsx +11 -10
  69. package/src/mu/pages/CommonPageProps.ts +1 -1
  70. package/src/mu/pages/DataGridPage.tsx +15 -11
  71. package/src/mu/pages/DataGridPageProps.ts +17 -14
  72. package/src/mu/pages/FixedListPage.tsx +6 -5
  73. package/src/mu/pages/ListPage.tsx +6 -5
  74. package/src/mu/pages/ListPageProps.ts +5 -3
  75. package/src/mu/pages/ResponsivePage.tsx +6 -5
  76. package/src/mu/pages/ResponsivePageProps.ts +10 -7
  77. package/src/mu/pages/SearchPageProps.ts +5 -3
  78. package/src/mu/pages/TablePage.tsx +6 -5
  79. package/src/mu/pages/TablePageProps.ts +5 -3
  80. package/src/mu/pages/ViewPage.tsx +8 -6
  81. package/src/states/IState.ts +1 -1
  82. package/src/states/UserState.ts +1 -1
  83. package/src/uses/useCombinedRefs.ts +3 -3
@@ -48,12 +48,12 @@ export function GridDataGet<F extends DataTypes.BasicTemplate>(
48
48
  /**
49
49
  * Grid Json data
50
50
  */
51
- export interface GridJsonData extends Omit<GridLoadDataProps, 'data'> {}
51
+ export type GridJsonData = Omit<GridLoadDataProps, 'data'>;
52
52
 
53
53
  /**
54
54
  * Grid data load props
55
55
  */
56
- export interface GridLoadDataProps {
56
+ export type GridLoadDataProps = {
57
57
  /**
58
58
  * Current page
59
59
  */
@@ -78,12 +78,12 @@ export interface GridLoadDataProps {
78
78
  * Data related
79
79
  */
80
80
  data?: GridData;
81
- }
81
+ };
82
82
 
83
83
  /**
84
84
  * Grid data loader
85
85
  */
86
- export interface GridLoader<T> {
86
+ export type GridLoader<T extends object> = {
87
87
  /**
88
88
  * Auto load data, otherwise call reset
89
89
  * @default true
@@ -109,12 +109,12 @@ export interface GridLoader<T> {
109
109
  * Threshold at which to pre-fetch data; default is half of loadBatchSize
110
110
  */
111
111
  threshold?: number | undefined;
112
- }
112
+ };
113
113
 
114
114
  /**
115
115
  * Grid loader states
116
116
  */
117
- export interface GridLoaderStates<T> extends GridLoadDataProps {
117
+ export type GridLoaderStates<T> = GridLoadDataProps & {
118
118
  /**
119
119
  * Auto load data, otherwise call reset
120
120
  * @default true
@@ -150,4 +150,4 @@ export interface GridLoaderStates<T> extends GridLoadDataProps {
150
150
  * Selected items of id
151
151
  */
152
152
  selectedItems: T[];
153
- }
153
+ };
@@ -1,4 +1,4 @@
1
- import { DataTypes } from '@etsoo/shared';
1
+ import { DataTypes, IdDefaultType } from '@etsoo/shared';
2
2
  import React from 'react';
3
3
  import {
4
4
  Align,
@@ -10,8 +10,10 @@ import {
10
10
  import { GridMethodRef } from '../mu/GridMethodRef';
11
11
  import { GridLoadDataProps, GridLoader, GridLoaderStates } from './GridLoader';
12
12
 
13
- export interface ScrollerGridItemRendererProps<T>
14
- extends Omit<GridChildComponentProps<T>, 'data'> {
13
+ export type ScrollerGridItemRendererProps<T> = Omit<
14
+ GridChildComponentProps<T>,
15
+ 'data'
16
+ > & {
15
17
  /**
16
18
  * Selected items
17
19
  */
@@ -21,66 +23,65 @@ export interface ScrollerGridItemRendererProps<T>
21
23
  * Data
22
24
  */
23
25
  data?: T;
24
- }
26
+ };
25
27
 
26
28
  /**
27
29
  * Scroller vertical grid props
28
30
  */
29
- export interface ScrollerGridProps<
30
- T extends {},
31
- D extends DataTypes.Keys<T> = DataTypes.Keys<T>
32
- > extends GridLoader<T>,
33
- Omit<
34
- VariableSizeGridProps<T>,
35
- 'children' | 'rowCount' | 'rowHeight' | 'ref'
36
- > {
37
- /**
38
- * Default order by asc
39
- * @default true
40
- */
41
- defaultOrderByAsc?: boolean;
42
-
43
- /**
44
- * Footer renderer
45
- */
46
- footerRenderer?: (
47
- rows: T[],
48
- states: GridLoaderStates<T>
49
- ) => React.ReactNode;
50
-
51
- /**
52
- * Header renderer
53
- */
54
- headerRenderer?: (states: GridLoaderStates<T>) => React.ReactNode;
55
-
56
- /**
57
- * Id field
58
- * @default id
59
- */
60
- idField?: D;
61
-
62
- /**
63
- * Item renderer
64
- */
65
- itemRenderer: (
66
- props: ScrollerGridItemRendererProps<T>
67
- ) => React.ReactElement;
68
-
69
- /**
70
- * Methods
71
- */
72
- mRef?: React.Ref<ScrollerGridForwardRef>;
73
-
74
- /**
75
- * On items select change
76
- */
77
- onSelectChange?: (selectedItems: T[]) => void;
78
-
79
- /**
80
- * Returns the height of the specified row.
81
- */
82
- rowHeight?: ((index: number) => number) | number;
83
- }
31
+ export type ScrollerGridProps<
32
+ T extends object,
33
+ D extends DataTypes.Keys<T>
34
+ > = GridLoader<T> &
35
+ Omit<
36
+ VariableSizeGridProps<T>,
37
+ 'children' | 'rowCount' | 'rowHeight' | 'ref'
38
+ > & {
39
+ /**
40
+ * Default order by asc
41
+ * @default true
42
+ */
43
+ defaultOrderByAsc?: boolean;
44
+
45
+ /**
46
+ * Footer renderer
47
+ */
48
+ footerRenderer?: (
49
+ rows: T[],
50
+ states: GridLoaderStates<T>
51
+ ) => React.ReactNode;
52
+
53
+ /**
54
+ * Header renderer
55
+ */
56
+ headerRenderer?: (states: GridLoaderStates<T>) => React.ReactNode;
57
+
58
+ /**
59
+ * Id field
60
+ */
61
+ idField?: D;
62
+
63
+ /**
64
+ * Item renderer
65
+ */
66
+ itemRenderer: (
67
+ props: ScrollerGridItemRendererProps<T>
68
+ ) => React.ReactElement;
69
+
70
+ /**
71
+ * Methods
72
+ */
73
+ mRef?: React.Ref<ScrollerGridForwardRef>;
74
+
75
+ /**
76
+ * On items select change
77
+ */
78
+ onSelectChange?: (selectedItems: T[]) => void;
79
+
80
+ /**
81
+ * Returns the height of the specified row.
82
+ */
83
+ rowHeight?: ((index: number) => number) | number;
84
+ };
84
85
 
85
86
  /**
86
87
  * Scroller grid forward ref
@@ -146,8 +147,11 @@ export interface ScrollerGridForwardRef extends GridMethodRef {
146
147
  * @param props Props
147
148
  * @returns Component
148
149
  */
149
- export const ScrollerGrid = <T extends Record<string, unknown>>(
150
- props: ScrollerGridProps<T>
150
+ export const ScrollerGrid = <
151
+ T extends object,
152
+ D extends DataTypes.Keys<T> = IdDefaultType<T>
153
+ >(
154
+ props: ScrollerGridProps<T, D>
151
155
  ) => {
152
156
  // Destruct
153
157
  const {
@@ -157,7 +161,7 @@ export const ScrollerGrid = <T extends Record<string, unknown>>(
157
161
  footerRenderer,
158
162
  headerRenderer,
159
163
  itemRenderer,
160
- idField = 'id',
164
+ idField = 'id' as D,
161
165
  loadBatchSize,
162
166
  loadData,
163
167
  mRef,
@@ -20,7 +20,7 @@ import {
20
20
  /**
21
21
  * Scroller vertical list props
22
22
  */
23
- export interface ScrollerListProps<T>
23
+ export interface ScrollerListProps<T extends object>
24
24
  extends GridLoader<T>,
25
25
  Omit<
26
26
  ListProps<T>,
@@ -98,7 +98,7 @@ const calculateBatchSize = (
98
98
  * @param props Props
99
99
  * @returns Component
100
100
  */
101
- export const ScrollerList = <T extends {}>(props: ScrollerListProps<T>) => {
101
+ export const ScrollerList = <T extends object>(props: ScrollerListProps<T>) => {
102
102
  // Destruct
103
103
  const {
104
104
  autoLoad = true,
@@ -5,17 +5,17 @@ import { ChangeEventHandler } from 'react';
5
5
  /**
6
6
  * Autocomplete extended props
7
7
  */
8
- export interface AutocompleteExtendedProps<
9
- T extends {},
8
+ export type AutocompleteExtendedProps<
9
+ T extends object,
10
10
  D extends DataTypes.Keys<T>
11
- > extends Omit<
12
- AutocompleteProps<T, undefined, false, false>,
13
- 'renderInput' | 'options'
14
- > {
11
+ > = Omit<
12
+ AutocompleteProps<T, undefined, false, false>,
13
+ 'renderInput' | 'options'
14
+ > & {
15
15
  /**
16
- * Id field, default is id
16
+ * Id field
17
17
  */
18
- idField: T extends DataTypes.IdLabelItem ? D | undefined : D;
18
+ idField?: D;
19
19
 
20
20
  /**
21
21
  * Id value
@@ -80,4 +80,4 @@ export interface AutocompleteExtendedProps<
80
80
  * Is search field?
81
81
  */
82
82
  search?: boolean;
83
- }
83
+ };
@@ -1,4 +1,10 @@
1
- import { DataTypes, Keyboard } from '@etsoo/shared';
1
+ import {
2
+ DataTypes,
3
+ IdDefaultType,
4
+ Keyboard,
5
+ LabelDefaultType,
6
+ ListType
7
+ } from '@etsoo/shared';
2
8
  import { Autocomplete, AutocompleteRenderInputParams } from '@mui/material';
3
9
  import React from 'react';
4
10
  import { Utils as SharedUtils } from '@etsoo/shared';
@@ -10,10 +16,11 @@ import { ReactUtils } from '../app/ReactUtils';
10
16
  /**
11
17
  * ComboBox props
12
18
  */
13
- export interface ComboBoxProps<
14
- T extends {},
15
- D extends DataTypes.Keys<T> = DataTypes.Keys<T>
16
- > extends AutocompleteExtendedProps<T, D> {
19
+ export type ComboBoxProps<
20
+ T extends object,
21
+ D extends DataTypes.Keys<T>,
22
+ L extends DataTypes.Keys<T, string>
23
+ > = AutocompleteExtendedProps<T, D> & {
17
24
  /**
18
25
  * Auto add blank item
19
26
  */
@@ -27,7 +34,7 @@ export interface ComboBoxProps<
27
34
  /**
28
35
  * Label field
29
36
  */
30
- labelField: T extends DataTypes.IdLabelItem ? D | undefined : D;
37
+ labelField?: L;
31
38
 
32
39
  /**
33
40
  * Load data callback
@@ -43,7 +50,7 @@ export interface ComboBoxProps<
43
50
  * Array of options.
44
51
  */
45
52
  options?: ReadonlyArray<T>;
46
- }
53
+ };
47
54
 
48
55
  /**
49
56
  * ComboBox
@@ -51,9 +58,10 @@ export interface ComboBoxProps<
51
58
  * @returns Component
52
59
  */
53
60
  export function ComboBox<
54
- T extends {} = DataTypes.IdLabelItem,
55
- D extends DataTypes.Keys<T> = DataTypes.Keys<T>
56
- >(props: ComboBoxProps<T, D>) {
61
+ T extends object = ListType,
62
+ D extends DataTypes.Keys<T> = IdDefaultType<T>,
63
+ L extends DataTypes.Keys<T, string> = LabelDefaultType<T>
64
+ >(props: ComboBoxProps<T, D, L>) {
57
65
  // Destruct
58
66
  const {
59
67
  search = false,
@@ -68,7 +76,7 @@ export function ComboBox<
68
76
  inputVariant,
69
77
  defaultValue,
70
78
  label,
71
- labelField = 'label' as D,
79
+ labelField = 'label' as L,
72
80
  loadData,
73
81
  onLoadData,
74
82
  name,
@@ -194,7 +202,7 @@ export function ComboBox<
194
202
  onChange={inputOnChange}
195
203
  />
196
204
  {/* Previous input will reset first with "disableClearable = false", next input trigger change works */}
197
- <Autocomplete
205
+ <Autocomplete<T, undefined, false, false>
198
206
  value={stateValue}
199
207
  getOptionLabel={getOptionLabel}
200
208
  isOptionEqualToValue={(option: T, value: T) =>
@@ -1,5 +1,5 @@
1
1
  import { css } from '@emotion/css';
2
- import { DataTypes, Utils } from '@etsoo/shared';
2
+ import { DataTypes, IdDefaultType, Utils } from '@etsoo/shared';
3
3
  import {
4
4
  Box,
5
5
  BoxProps,
@@ -30,24 +30,24 @@ import { MouseEventWithDataHandler } from './MUGlobal';
30
30
  /**
31
31
  * Footer item renderer props
32
32
  */
33
- export interface DataGridExFooterItemRendererProps<T extends {}> {
33
+ export type DataGridExFooterItemRendererProps<T extends object> = {
34
34
  column: GridColumn<T>;
35
35
  index: number;
36
36
  states: GridLoaderStates<T>;
37
37
  cellProps: any;
38
38
  checkable: boolean;
39
- }
39
+ };
40
40
 
41
41
  /**
42
42
  * Extended DataGrid with VariableSizeGrid props
43
43
  */
44
- export interface DataGridExProps<
45
- T extends {},
46
- D extends DataTypes.Keys<T> = DataTypes.Keys<T>
47
- > extends Omit<
48
- ScrollerGridProps<T, D>,
49
- 'itemRenderer' | 'columnCount' | 'columnWidth' | 'width'
50
- > {
44
+ export type DataGridExProps<
45
+ T extends object,
46
+ D extends DataTypes.Keys<T>
47
+ > = Omit<
48
+ ScrollerGridProps<T, D>,
49
+ 'itemRenderer' | 'columnCount' | 'columnWidth' | 'width'
50
+ > & {
51
51
  /**
52
52
  * Alternating colors for odd/even rows
53
53
  */
@@ -124,7 +124,7 @@ export interface DataGridExProps<
124
124
  * Width
125
125
  */
126
126
  width?: number;
127
- }
127
+ };
128
128
 
129
129
  // Borders
130
130
  const boldBorder = '2px solid rgba(224, 224, 224, 1)';
@@ -211,8 +211,8 @@ export function DataGridExCalColumns<T>(columns: GridColumn<T>[]) {
211
211
  * @returns Component
212
212
  */
213
213
  export function DataGridEx<
214
- T extends {},
215
- D extends DataTypes.Keys<T> = DataTypes.Keys<T>
214
+ T extends object,
215
+ D extends DataTypes.Keys<T> = IdDefaultType<T>
216
216
  >(props: DataGridExProps<T, D>) {
217
217
  // Theme
218
218
  const theme = useTheme();
@@ -443,7 +443,7 @@ export function DataGridEx<
443
443
  };
444
444
 
445
445
  // Reset
446
- const reset = (add: {}) => {
446
+ const reset = (add: object) => {
447
447
  refs.current.ref?.reset(add);
448
448
  };
449
449
 
@@ -633,7 +633,7 @@ export function DataGridEx<
633
633
  : undefined;
634
634
 
635
635
  return (
636
- <ScrollerGrid<T>
636
+ <ScrollerGrid<T, D>
637
637
  className={Utils.mergeClasses(
638
638
  'DataGridEx-Body',
639
639
  'DataGridEx-CustomBar',
@@ -117,7 +117,7 @@ export namespace DataGridRenderers {
117
117
  * @param location Renderer location (column index)
118
118
  * @returns Component
119
119
  */
120
- export function defaultFooterItemRenderer<T>(
120
+ export function defaultFooterItemRenderer<T extends object>(
121
121
  _rows: T[],
122
122
  { index, states, checkable }: DataGridExFooterItemRendererProps<T>,
123
123
  location: number = 0
@@ -79,7 +79,7 @@ export const DnDItemStyle = (
79
79
  /**
80
80
  * DnD list forward ref
81
81
  */
82
- export interface DnDListRef<D extends {}> {
82
+ export interface DnDListRef<D extends object> {
83
83
  /**
84
84
  * Add item
85
85
  * @param item New item
@@ -109,7 +109,7 @@ export interface DnDListRef<D extends {}> {
109
109
  /**
110
110
  * DnD sortable list properties
111
111
  */
112
- export interface DnDListPros<D extends {}, K extends DataTypes.Keys<D>> {
112
+ export interface DnDListPros<D extends object, K extends DataTypes.Keys<D>> {
113
113
  /**
114
114
  * Get list item style callback
115
115
  */
@@ -3,17 +3,26 @@ import {
3
3
  Dialog,
4
4
  DialogTitle,
5
5
  List,
6
- ListItem,
7
6
  ListItemText,
8
7
  DialogContent,
9
- Button
8
+ Button,
9
+ ListItemButton
10
10
  } from '@mui/material';
11
- import { DataTypes } from '@etsoo/shared';
11
+ import {
12
+ DataTypes,
13
+ IdDefaultType,
14
+ LabelDefaultType,
15
+ ListType
16
+ } from '@etsoo/shared';
12
17
 
13
18
  /**
14
19
  * Item list properties
15
20
  */
16
- export interface ItemListProps<T extends Record<string, unknown>> {
21
+ export interface ItemListProps<
22
+ T extends object,
23
+ D extends DataTypes.Keys<T>,
24
+ L extends DataTypes.Keys<T, string>
25
+ > {
17
26
  /**
18
27
  * Style class name
19
28
  */
@@ -22,12 +31,12 @@ export interface ItemListProps<T extends Record<string, unknown>> {
22
31
  /**
23
32
  * Id field name
24
33
  */
25
- idField?: string & keyof T;
34
+ idField?: D;
26
35
 
27
36
  /**
28
37
  * Label field name or callback
29
38
  */
30
- labelField?: (string & keyof T) | ((item: T) => string);
39
+ labelField?: L | ((item: T) => string);
31
40
 
32
41
  /**
33
42
  * Button icon
@@ -47,7 +56,7 @@ export interface ItemListProps<T extends Record<string, unknown>> {
47
56
  /**
48
57
  * Current selected language
49
58
  */
50
- selectedValue?: string;
59
+ selectedValue?: T[D];
51
60
 
52
61
  /**
53
62
  * Button size
@@ -75,15 +84,17 @@ export interface ItemListProps<T extends Record<string, unknown>> {
75
84
  * @param props Properties
76
85
  */
77
86
  export function ItemList<
78
- T extends Record<string, unknown> = Record<string, unknown>
79
- >(props: ItemListProps<T>) {
87
+ T extends object = ListType,
88
+ D extends DataTypes.Keys<T> = IdDefaultType<T>,
89
+ L extends DataTypes.Keys<T, string> = LabelDefaultType<T>
90
+ >(props: ItemListProps<T, D, L>) {
80
91
  // properties destructure
81
92
  const {
82
93
  className,
83
94
  color = 'primary',
84
95
  items,
85
- idField = 'id',
86
- labelField = 'label',
96
+ idField = 'id' as D,
97
+ labelField = 'label' as L,
87
98
  icon,
88
99
  onClose,
89
100
  selectedValue,
@@ -92,13 +103,6 @@ export function ItemList<
92
103
  variant = 'outlined'
93
104
  } = props;
94
105
 
95
- // Get id
96
- const getId = (item: T): string | number => {
97
- const id = item[idField];
98
- if (typeof id === 'number') return id;
99
- return DataTypes.convert(id, 'string') ?? '';
100
- };
101
-
102
106
  // Get label
103
107
  const getLabel = (item: T): string => {
104
108
  if (typeof labelField === 'function') {
@@ -113,7 +117,7 @@ export function ItemList<
113
117
 
114
118
  // Default state
115
119
  const defaultItem =
116
- items.find((item) => getId(item) === selectedValue) ?? items[0];
120
+ items.find((item) => item[idField] === selectedValue) ?? items[0];
117
121
 
118
122
  // Current item
119
123
  const [currentItem, setCurrentItem] = React.useState(defaultItem);
@@ -179,18 +183,17 @@ export function ItemList<
179
183
  <DialogContent>
180
184
  <List>
181
185
  {items.map((item) => {
182
- const id = getId(item);
186
+ const id = item[idField];
183
187
  return (
184
- <ListItem
185
- button
186
- key={id}
187
- disabled={id === getId(currentItem)}
188
+ <ListItemButton
189
+ key={id as unknown as React.Key}
190
+ disabled={id === currentItem[idField]}
188
191
  onClick={() => closeItemHandler(item)}
189
192
  >
190
193
  <ListItemText>
191
194
  {getLabel(item)}
192
195
  </ListItemText>
193
- </ListItem>
196
+ </ListItemButton>
194
197
  );
195
198
  })}
196
199
  </List>
@@ -22,7 +22,7 @@ import { LoadingButton } from './LoadingButton';
22
22
  * ListMoreDisplay props
23
23
  */
24
24
  export interface ListMoreDisplayProps<
25
- T,
25
+ T extends object,
26
26
  F extends DataTypes.BasicTemplate = DataTypes.BasicTemplate
27
27
  > extends Omit<CardProps, 'children'>,
28
28
  GridLoader<T> {
@@ -63,7 +63,7 @@ type states<T> = {
63
63
  * @returns Component
64
64
  */
65
65
  export function ListMoreDisplay<
66
- T extends {},
66
+ T extends object,
67
67
  F extends DataTypes.BasicTemplate = DataTypes.BasicTemplate
68
68
  >(props: ListMoreDisplayProps<T, F>) {
69
69
  // Destruct
@@ -92,7 +92,7 @@ export class MUGlobal {
92
92
  * @param input Input object
93
93
  * @returns Updated object
94
94
  */
95
- static half(input: {}) {
95
+ static half(input: object) {
96
96
  const newObj = { ...input };
97
97
  Object.entries(newObj).forEach(([key, value]) => {
98
98
  if (typeof value === 'number') {
@@ -107,7 +107,7 @@ export class MUGlobal {
107
107
  * @param input Input object
108
108
  * @returns Updated object
109
109
  */
110
- static reverse(input: {}) {
110
+ static reverse(input: object) {
111
111
  const newObj = { ...input };
112
112
  Object.entries(newObj).forEach(([key, value]) => {
113
113
  if (typeof value === 'number') {
@@ -124,7 +124,7 @@ export class MUGlobal {
124
124
  * @param field Specific field
125
125
  * @returns Updated object
126
126
  */
127
- static increase(input: {}, adjust: number | {}, field?: string) {
127
+ static increase(input: object, adjust: number | object, field?: string) {
128
128
  const newObj = { ...input };
129
129
  Object.entries(newObj).forEach(([key, value]) => {
130
130
  if (typeof value === 'number') {
@@ -152,7 +152,7 @@ export class MUGlobal {
152
152
  */
153
153
  static adjustWithTheme(
154
154
  size: number,
155
- adjust: {},
155
+ adjust: object,
156
156
  updateFunc: (value: number) => string
157
157
  ) {
158
158
  const newObj = { ...adjust };
@@ -185,7 +185,7 @@ export class MUGlobal {
185
185
  * @param theme Theme
186
186
  * @returns Result
187
187
  */
188
- static getSpace(spaces: {}, theme: Theme) {
188
+ static getSpace(spaces: object, theme: Theme) {
189
189
  const start = this.breakpoints.length - 1;
190
190
  for (let i = start; i >= 0; i--) {
191
191
  const key = this.breakpoints[i];