@etsoo/react 1.8.78 → 1.8.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.
- package/lib/cjs/components/ScrollerList.js +1 -1
- package/lib/cjs/uses/useDimensions.d.ts +1 -0
- package/lib/cjs/uses/useDimensions.js +7 -6
- package/lib/mjs/components/ScrollerList.js +1 -1
- package/lib/mjs/uses/useDimensions.d.ts +1 -0
- package/lib/mjs/uses/useDimensions.js +7 -6
- package/package.json +1 -1
- package/src/components/ScrollerList.tsx +26 -30
- package/src/uses/useDimensions.ts +9 -6
|
@@ -13,5 +13,6 @@ interface states {
|
|
|
13
13
|
export declare function useDimensions(elements: number, updateCallback?: (target: Element, rect: DOMRect) => boolean | void, miliseconds?: number, equalCallback?: (d1?: DOMRect, d2?: DOMRect) => boolean): {
|
|
14
14
|
dimensions: [React.RefCallback<Element>, Element?, DOMRect?][];
|
|
15
15
|
state: states;
|
|
16
|
+
clear: () => void;
|
|
16
17
|
};
|
|
17
18
|
export {};
|
|
@@ -85,14 +85,15 @@ function useDimensions(elements, updateCallback, miliseconds = 50, equalCallback
|
|
|
85
85
|
delayed.call(undefined, update);
|
|
86
86
|
}
|
|
87
87
|
});
|
|
88
|
+
// Clear the observer
|
|
89
|
+
const clear = () => {
|
|
90
|
+
resizeObserver.disconnect();
|
|
91
|
+
delayed.clear();
|
|
92
|
+
};
|
|
88
93
|
// Layout ready
|
|
89
94
|
react_1.default.useEffect(() => {
|
|
90
|
-
return
|
|
91
|
-
// Clear the observer
|
|
92
|
-
resizeObserver.disconnect();
|
|
93
|
-
delayed.clear();
|
|
94
|
-
};
|
|
95
|
+
return clear;
|
|
95
96
|
}, []);
|
|
96
97
|
// Return
|
|
97
|
-
return { dimensions: dimensions.current, state };
|
|
98
|
+
return { dimensions: dimensions.current, state, clear };
|
|
98
99
|
}
|
|
@@ -13,5 +13,6 @@ interface states {
|
|
|
13
13
|
export declare function useDimensions(elements: number, updateCallback?: (target: Element, rect: DOMRect) => boolean | void, miliseconds?: number, equalCallback?: (d1?: DOMRect, d2?: DOMRect) => boolean): {
|
|
14
14
|
dimensions: [React.RefCallback<Element>, Element?, DOMRect?][];
|
|
15
15
|
state: states;
|
|
16
|
+
clear: () => void;
|
|
16
17
|
};
|
|
17
18
|
export {};
|
|
@@ -79,14 +79,15 @@ export function useDimensions(elements, updateCallback, miliseconds = 50, equalC
|
|
|
79
79
|
delayed.call(undefined, update);
|
|
80
80
|
}
|
|
81
81
|
});
|
|
82
|
+
// Clear the observer
|
|
83
|
+
const clear = () => {
|
|
84
|
+
resizeObserver.disconnect();
|
|
85
|
+
delayed.clear();
|
|
86
|
+
};
|
|
82
87
|
// Layout ready
|
|
83
88
|
React.useEffect(() => {
|
|
84
|
-
return
|
|
85
|
-
// Clear the observer
|
|
86
|
-
resizeObserver.disconnect();
|
|
87
|
-
delayed.clear();
|
|
88
|
-
};
|
|
89
|
+
return clear;
|
|
89
90
|
}, []);
|
|
90
91
|
// Return
|
|
91
|
-
return { dimensions: dimensions.current, state };
|
|
92
|
+
return { dimensions: dimensions.current, state, clear };
|
|
92
93
|
}
|
package/package.json
CHANGED
|
@@ -231,40 +231,36 @@ export const ScrollerList = <T extends object>(props: ScrollerListProps<T>) => {
|
|
|
231
231
|
if (stateRefs.current.isMounted !== false) setRows(items, true);
|
|
232
232
|
};
|
|
233
233
|
|
|
234
|
-
React.useImperativeHandle(
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
const item = rows.at(index);
|
|
243
|
-
if (item) {
|
|
244
|
-
const newRows = [...rows];
|
|
245
|
-
newRows.splice(index, 1);
|
|
246
|
-
setRows(newRows);
|
|
247
|
-
}
|
|
248
|
-
return item;
|
|
249
|
-
},
|
|
250
|
-
insert(item, start) {
|
|
234
|
+
React.useImperativeHandle(mRef, () => {
|
|
235
|
+
return {
|
|
236
|
+
get element() {
|
|
237
|
+
return localRef.current?.element;
|
|
238
|
+
},
|
|
239
|
+
delete(index) {
|
|
240
|
+
const item = rows.at(index);
|
|
241
|
+
if (item) {
|
|
251
242
|
const newRows = [...rows];
|
|
252
|
-
newRows.splice(
|
|
243
|
+
newRows.splice(index, 1);
|
|
253
244
|
setRows(newRows);
|
|
254
|
-
}
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
245
|
+
}
|
|
246
|
+
return item;
|
|
247
|
+
},
|
|
248
|
+
insert(item, start) {
|
|
249
|
+
const newRows = [...rows];
|
|
250
|
+
newRows.splice(start, 0, item);
|
|
251
|
+
setRows(newRows);
|
|
252
|
+
},
|
|
253
|
+
refresh(): void {
|
|
254
|
+
loadDataLocal(0);
|
|
255
|
+
},
|
|
258
256
|
|
|
259
|
-
|
|
257
|
+
reset,
|
|
260
258
|
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
[]
|
|
267
|
-
);
|
|
259
|
+
scrollToRow(param: ScrollToRowParam): void {
|
|
260
|
+
localRef.current?.scrollToRow(param);
|
|
261
|
+
}
|
|
262
|
+
};
|
|
263
|
+
}, [rows]);
|
|
268
264
|
|
|
269
265
|
// When layout ready
|
|
270
266
|
React.useEffect(() => {
|
|
@@ -25,6 +25,7 @@ export function useDimensions(
|
|
|
25
25
|
): {
|
|
26
26
|
dimensions: [React.RefCallback<Element>, Element?, DOMRect?][];
|
|
27
27
|
state: states;
|
|
28
|
+
clear: () => void;
|
|
28
29
|
} {
|
|
29
30
|
// State
|
|
30
31
|
const [state, setState] = React.useState<states>({
|
|
@@ -111,15 +112,17 @@ export function useDimensions(
|
|
|
111
112
|
}
|
|
112
113
|
});
|
|
113
114
|
|
|
115
|
+
// Clear the observer
|
|
116
|
+
const clear = () => {
|
|
117
|
+
resizeObserver.disconnect();
|
|
118
|
+
delayed.clear();
|
|
119
|
+
};
|
|
120
|
+
|
|
114
121
|
// Layout ready
|
|
115
122
|
React.useEffect(() => {
|
|
116
|
-
return
|
|
117
|
-
// Clear the observer
|
|
118
|
-
resizeObserver.disconnect();
|
|
119
|
-
delayed.clear();
|
|
120
|
-
};
|
|
123
|
+
return clear;
|
|
121
124
|
}, []);
|
|
122
125
|
|
|
123
126
|
// Return
|
|
124
|
-
return { dimensions: dimensions.current, state };
|
|
127
|
+
return { dimensions: dimensions.current, state, clear };
|
|
125
128
|
}
|