@etsoo/materialui 1.1.9 → 1.1.11

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/DnDList.d.ts CHANGED
@@ -17,7 +17,7 @@ export declare const DnDItemStyle: (index: number, isDragging: boolean, theme: T
17
17
  /**
18
18
  * DnD list forward ref
19
19
  */
20
- export interface DnDListRef<D extends object> {
20
+ export interface DnDListRef<D extends object, K extends DataTypes.Keys<D>> {
21
21
  /**
22
22
  * Add item
23
23
  * @param item New item
@@ -39,6 +39,10 @@ export interface DnDListRef<D extends object> {
39
39
  * @param index Index
40
40
  */
41
41
  editItem(newItem: D, index: number): boolean;
42
+ /**
43
+ * Get deleted ids
44
+ */
45
+ getDeletedIds(): D[K][];
42
46
  /**
43
47
  * Get all items
44
48
  */
@@ -71,7 +75,7 @@ export interface DnDListPros<D extends object, K extends DataTypes.Keys<D>> {
71
75
  /**
72
76
  * Methods ref
73
77
  */
74
- mRef?: React.Ref<DnDListRef<D>>;
78
+ mRef?: React.Ref<DnDListRef<D, K>>;
75
79
  /**
76
80
  * Data change handler
77
81
  */
package/lib/DnDList.js CHANGED
@@ -57,6 +57,7 @@ export function DnDList(props) {
57
57
  // States
58
58
  const [items, setItems] = React.useState([]);
59
59
  const [activeId, setActiveId] = React.useState();
60
+ const deletedIds = React.useRef([]);
60
61
  const doFormChange = (newItems) => {
61
62
  if (onFormChange)
62
63
  onFormChange(newItems !== null && newItems !== void 0 ? newItems : items);
@@ -141,10 +142,18 @@ export function DnDList(props) {
141
142
  // Clone
142
143
  const newItems = [...items];
143
144
  // Remove the item
144
- newItems.splice(index, 1);
145
+ const deleted = newItems.splice(index, 1);
146
+ deleted.forEach((d) => {
147
+ const id = d[keyField];
148
+ if (!deletedIds.current.includes(id))
149
+ deletedIds.current.push(id);
150
+ });
145
151
  // Update the state
146
152
  changeItems(newItems);
147
153
  },
154
+ getDeletedIds() {
155
+ return deletedIds.current;
156
+ },
148
157
  getItems() {
149
158
  return items;
150
159
  }
@@ -166,6 +175,7 @@ export function DnDList(props) {
166
175
  };
167
176
  React.useEffect(() => {
168
177
  setItems(props.items);
178
+ deletedIds.current = [];
169
179
  }, [props.items]);
170
180
  const children = (React.createElement(DndContext, { onDragStart: handleDragStart, onDragEnd: handleDragEnd },
171
181
  React.createElement(SortableContext, { items: items, strategy: verticalListSortingStrategy }, items.map((item, index) => {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@etsoo/materialui",
3
- "version": "1.1.9",
3
+ "version": "1.1.11",
4
4
  "description": "TypeScript Material-UI Implementation",
5
5
  "main": "lib/index.js",
6
6
  "types": "lib/index.d.ts",
@@ -55,7 +55,7 @@
55
55
  "@etsoo/react": "^1.6.42",
56
56
  "@etsoo/shared": "^1.1.88",
57
57
  "@mui/icons-material": "^5.11.0",
58
- "@mui/material": "^5.11.4",
58
+ "@mui/material": "^5.11.5",
59
59
  "@types/pica": "^9.0.1",
60
60
  "@types/pulltorefreshjs": "^0.1.5",
61
61
  "@types/react": "^18.0.26",
package/src/DnDList.tsx CHANGED
@@ -79,7 +79,7 @@ export const DnDItemStyle = (
79
79
  /**
80
80
  * DnD list forward ref
81
81
  */
82
- export interface DnDListRef<D extends object> {
82
+ export interface DnDListRef<D extends object, K extends DataTypes.Keys<D>> {
83
83
  /**
84
84
  * Add item
85
85
  * @param item New item
@@ -105,6 +105,11 @@ export interface DnDListRef<D extends object> {
105
105
  */
106
106
  editItem(newItem: D, index: number): boolean;
107
107
 
108
+ /**
109
+ * Get deleted ids
110
+ */
111
+ getDeletedIds(): D[K][];
112
+
108
113
  /**
109
114
  * Get all items
110
115
  */
@@ -148,7 +153,7 @@ export interface DnDListPros<D extends object, K extends DataTypes.Keys<D>> {
148
153
  /**
149
154
  * Methods ref
150
155
  */
151
- mRef?: React.Ref<DnDListRef<D>>;
156
+ mRef?: React.Ref<DnDListRef<D, K>>;
152
157
 
153
158
  /**
154
159
  * Data change handler
@@ -200,6 +205,7 @@ export function DnDList<
200
205
  // States
201
206
  const [items, setItems] = React.useState<D[]>([]);
202
207
  const [activeId, setActiveId] = React.useState<UniqueIdentifier>();
208
+ const deletedIds = React.useRef<D[K][]>([]);
203
209
 
204
210
  const doFormChange = (newItems?: D[]) => {
205
211
  if (onFormChange) onFormChange(newItems ?? items);
@@ -316,12 +322,20 @@ export function DnDList<
316
322
  const newItems = [...items];
317
323
 
318
324
  // Remove the item
319
- newItems.splice(index, 1);
325
+ const deleted = newItems.splice(index, 1);
326
+ deleted.forEach((d) => {
327
+ const id = d[keyField];
328
+ if (!deletedIds.current.includes(id)) deletedIds.current.push(id);
329
+ });
320
330
 
321
331
  // Update the state
322
332
  changeItems(newItems);
323
333
  },
324
334
 
335
+ getDeletedIds() {
336
+ return deletedIds.current;
337
+ },
338
+
325
339
  getItems() {
326
340
  return items;
327
341
  }
@@ -355,6 +369,7 @@ export function DnDList<
355
369
 
356
370
  React.useEffect(() => {
357
371
  setItems(props.items);
372
+ deletedIds.current = [];
358
373
  }, [props.items]);
359
374
 
360
375
  const children = (