@etsoo/materialui 1.0.94 → 1.0.95

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.
package/lib/ItemList.d.ts CHANGED
@@ -12,6 +12,10 @@ export interface ItemListProps<T extends object, D extends DataTypes.Keys<T>, L
12
12
  * Style class name
13
13
  */
14
14
  className?: string;
15
+ /**
16
+ * Keep click for all items
17
+ */
18
+ keepClick?: boolean;
15
19
  /**
16
20
  * Id field name
17
21
  */
@@ -20,6 +24,10 @@ export interface ItemListProps<T extends object, D extends DataTypes.Keys<T>, L
20
24
  * Label field name or callback
21
25
  */
22
26
  labelField?: L | ((item: T) => string);
27
+ /**
28
+ * Minimum width
29
+ */
30
+ minWidth?: number | string;
23
31
  /**
24
32
  * Button icon
25
33
  */
package/lib/ItemList.js CHANGED
@@ -8,7 +8,7 @@ import { DataTypes } from '@etsoo/shared';
8
8
  export function ItemList(props) {
9
9
  var _a;
10
10
  // properties destructure
11
- const { buttonLabel, className, color = 'primary', items, idField = 'id', labelField = 'label', icon, onClose, selectedValue, size = 'medium', title, variant = 'outlined' } = props;
11
+ const { buttonLabel, className, color = 'primary', keepClick = false, items, idField = 'id', labelField = 'label', minWidth = '200px', icon, onClose, selectedValue, size = 'medium', title, variant = 'outlined' } = props;
12
12
  // Get label
13
13
  const getLabel = (item) => {
14
14
  var _a;
@@ -58,12 +58,13 @@ export function ItemList(props) {
58
58
  };
59
59
  return (React.createElement(React.Fragment, null,
60
60
  React.createElement(Button, { className: className, variant: variant, startIcon: icon, color: color, size: size, onClick: clickHandler }, buttonLabel !== null && buttonLabel !== void 0 ? buttonLabel : getLabel(currentItem)),
61
- React.createElement(Dialog, { "aria-labelledby": "dialog-title", open: open, onClose: closeHandler },
62
- title && (React.createElement(DialogTitle, { sx: { minWidth: '200px' }, id: "dialog-title" }, title)),
61
+ React.createElement(Dialog, { "aria-labelledby": "dialog-title", open: open, onClose: closeHandler, sx: { minWidth } },
62
+ title && React.createElement(DialogTitle, { id: "dialog-title" }, title),
63
63
  React.createElement(DialogContent, null,
64
64
  React.createElement(List, null, items.map((item) => {
65
65
  const id = item[idField];
66
- return (React.createElement(ListItemButton, { key: id, disabled: id === currentItem[idField], onClick: () => closeItemHandler(item) },
66
+ return (React.createElement(ListItemButton, { key: id, disabled: id === currentItem[idField] &&
67
+ !keepClick, onClick: () => closeItemHandler(item) },
67
68
  React.createElement(ListItemText, null, getLabel(item))));
68
69
  }))))));
69
70
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@etsoo/materialui",
3
- "version": "1.0.94",
3
+ "version": "1.0.95",
4
4
  "description": "TypeScript Material-UI Implementation",
5
5
  "main": "lib/index.js",
6
6
  "types": "lib/index.d.ts",
package/src/ItemList.tsx CHANGED
@@ -33,6 +33,11 @@ export interface ItemListProps<
33
33
  */
34
34
  className?: string;
35
35
 
36
+ /**
37
+ * Keep click for all items
38
+ */
39
+ keepClick?: boolean;
40
+
36
41
  /**
37
42
  * Id field name
38
43
  */
@@ -43,6 +48,11 @@ export interface ItemListProps<
43
48
  */
44
49
  labelField?: L | ((item: T) => string);
45
50
 
51
+ /**
52
+ * Minimum width
53
+ */
54
+ minWidth?: number | string;
55
+
46
56
  /**
47
57
  * Button icon
48
58
  */
@@ -98,9 +108,11 @@ export function ItemList<
98
108
  buttonLabel,
99
109
  className,
100
110
  color = 'primary',
111
+ keepClick = false,
101
112
  items,
102
113
  idField = 'id' as D,
103
114
  labelField = 'label' as L,
115
+ minWidth = '200px',
104
116
  icon,
105
117
  onClose,
106
118
  selectedValue,
@@ -182,12 +194,9 @@ export function ItemList<
182
194
  aria-labelledby="dialog-title"
183
195
  open={open}
184
196
  onClose={closeHandler}
197
+ sx={{ minWidth }}
185
198
  >
186
- {title && (
187
- <DialogTitle sx={{ minWidth: '200px' }} id="dialog-title">
188
- {title}
189
- </DialogTitle>
190
- )}
199
+ {title && <DialogTitle id="dialog-title">{title}</DialogTitle>}
191
200
  <DialogContent>
192
201
  <List>
193
202
  {items.map((item) => {
@@ -195,7 +204,10 @@ export function ItemList<
195
204
  return (
196
205
  <ListItemButton
197
206
  key={id as unknown as React.Key}
198
- disabled={id === currentItem[idField]}
207
+ disabled={
208
+ id === currentItem[idField] &&
209
+ !keepClick
210
+ }
199
211
  onClick={() => closeItemHandler(item)}
200
212
  >
201
213
  <ListItemText>