@qoretechnologies/reqore 0.78.5-pr.708.gd45a15b → 0.78.5
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/dist/components/Dropdown/index.d.ts.map +1 -1
- package/dist/components/Dropdown/index.js +3 -1
- package/dist/components/Dropdown/index.js.map +1 -1
- package/dist/components/Paging/index.d.ts.map +1 -1
- package/dist/components/Paging/index.js +17 -17
- package/dist/components/Paging/index.js.map +1 -1
- package/dist/components/Panel/index.d.ts.map +1 -1
- package/dist/components/Panel/index.js +9 -3
- package/dist/components/Panel/index.js.map +1 -1
- package/dist/components/Popover/index.d.ts +8 -0
- package/dist/components/Popover/index.d.ts.map +1 -1
- package/dist/components/Popover/index.js +79 -17
- package/dist/components/Popover/index.js.map +1 -1
- package/dist/components/SegmentedControl/index.d.ts.map +1 -1
- package/dist/components/SegmentedControl/index.js +3 -1
- package/dist/components/SegmentedControl/index.js.map +1 -1
- package/dist/components/Tabs/list.d.ts.map +1 -1
- package/dist/components/Tabs/list.js +3 -1
- package/dist/components/Tabs/list.js.map +1 -1
- package/dist/helpers/hoveringPointer.d.ts +8 -2
- package/dist/helpers/hoveringPointer.d.ts.map +1 -1
- package/dist/helpers/hoveringPointer.js +7 -1
- package/dist/helpers/hoveringPointer.js.map +1 -1
- package/dist/hooks/useCloneThroughFragments.d.ts.map +1 -1
- package/dist/hooks/useCloneThroughFragments.js +39 -33
- package/dist/hooks/useCloneThroughFragments.js.map +1 -1
- package/dist/hooks/usePaging.d.ts +9 -4
- package/dist/hooks/usePaging.d.ts.map +1 -1
- package/dist/hooks/usePaging.js +21 -32
- package/dist/hooks/usePaging.js.map +1 -1
- package/dist/hooks/useReqoreMedia.d.ts +10 -2
- package/dist/hooks/useReqoreMedia.d.ts.map +1 -1
- package/dist/hooks/useReqoreMedia.js +20 -17
- package/dist/hooks/useReqoreMedia.js.map +1 -1
- package/package.json +1 -2
- package/tests.json +1 -0
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { usePaginationReturn } from 'react-use-pagination-hook';
|
|
2
1
|
export interface IReqorePageChangeData {
|
|
3
2
|
isFirst?: boolean;
|
|
4
3
|
isLast?: boolean;
|
|
@@ -12,7 +11,11 @@ export interface IReqorePagingOptions<T> {
|
|
|
12
11
|
enabled?: boolean;
|
|
13
12
|
onPageChange?: (page: number, info: IReqorePageChangeData) => void;
|
|
14
13
|
}
|
|
15
|
-
export interface IReqorePagingResult<T>
|
|
14
|
+
export interface IReqorePagingResult<T> {
|
|
15
|
+
/** Opens a page: one outside the list opens the nearest page in it. */
|
|
16
|
+
setPage: (page: number) => void;
|
|
17
|
+
/** The open page: always one of the list's (1 when it has none). */
|
|
18
|
+
currentPage: number;
|
|
16
19
|
pages: number[];
|
|
17
20
|
allPages: number[];
|
|
18
21
|
applyPaging: (items: T[]) => T[];
|
|
@@ -21,8 +24,10 @@ export interface IReqorePagingResult<T> extends Pick<usePaginationReturn, 'setPa
|
|
|
21
24
|
itemsLeft: number;
|
|
22
25
|
isLastPage: boolean;
|
|
23
26
|
isFirstPage: boolean;
|
|
24
|
-
next:
|
|
25
|
-
|
|
27
|
+
/** The next page, or the last one: each call a step, the steps one render takes too. */
|
|
28
|
+
next: () => void;
|
|
29
|
+
/** The page before, or the first one. */
|
|
30
|
+
back: () => void;
|
|
26
31
|
first: () => void;
|
|
27
32
|
last: () => void;
|
|
28
33
|
pageCount: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usePaging.d.ts","sourceRoot":"","sources":["../../src/hooks/usePaging.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"usePaging.d.ts","sourceRoot":"","sources":["../../src/hooks/usePaging.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,qBAAqB;IACpC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,oBAAoB,CAAC,CAAC;IACrC,KAAK,EAAE,CAAC,EAAE,CAAC;IACX,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,qBAAqB,KAAK,IAAI,CAAC;CACpE;AAED,MAAM,WAAW,mBAAmB,CAAC,CAAC;IACpC,uEAAuE;IACvE,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,oEAAoE;IACpE,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,WAAW,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC;IACjC,KAAK,EAAE,CAAC,EAAE,CAAC;IACX,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,OAAO,CAAC;IACpB,WAAW,EAAE,OAAO,CAAC;IACrB,wFAAwF;IACxF,IAAI,EAAE,MAAM,IAAI,CAAC;IACjB,yCAAyC;IACzC,IAAI,EAAE,MAAM,IAAI,CAAC;IACjB,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,IAAI,EAAE,MAAM,IAAI,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,OAAO,CAAC;IAClB,cAAc,EAAE,OAAO,CAAC;CACzB;AAED,eAAO,MAAM,oBAAoB,EAAE,oBAAoB,CAAC,GAAG,CAI1D,CAAC;AAEF,eAAO,MAAM,eAAe,GAAI,CAAC,EAC/B,UAAS,oBAAoB,CAAC,CAAC,CAAwB,KACtD,mBAAmB,CAAC,CAAC,CA4IvB,CAAC"}
|
package/dist/hooks/usePaging.js
CHANGED
|
@@ -19,15 +19,11 @@ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
|
19
19
|
}
|
|
20
20
|
return to.concat(ar || Array.prototype.slice.call(from));
|
|
21
21
|
};
|
|
22
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
23
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
24
|
-
};
|
|
25
22
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
23
|
exports.useReqorePaging = exports.defaultPagingOptions = void 0;
|
|
27
24
|
var lodash_1 = require("lodash");
|
|
28
25
|
var react_1 = require("react");
|
|
29
26
|
var react_use_1 = require("react-use");
|
|
30
|
-
var react_use_pagination_hook_1 = __importDefault(require("react-use-pagination-hook"));
|
|
31
27
|
exports.defaultPagingOptions = {
|
|
32
28
|
items: [],
|
|
33
29
|
itemsPerPage: 10,
|
|
@@ -40,10 +36,22 @@ var useReqorePaging = function (options) {
|
|
|
40
36
|
return value !== undefined;
|
|
41
37
|
}))), items = _a.items, itemsPerPage = _a.itemsPerPage, infinite = _a.infinite, pagesToShow = _a.pagesToShow, startPage = _a.startPage, _b = _a.enabled, enabled = _b === void 0 ? true : _b, onPageChange = _a.onPageChange;
|
|
42
38
|
var allPageCount = (0, react_1.useMemo)(function () { return Math.ceil((0, lodash_1.size)(items) / itemsPerPage); }, [items, itemsPerPage]);
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
39
|
+
// a list without rows still has its one, empty, page
|
|
40
|
+
var pagelist = (0, react_1.useMemo)(function () { return (0, lodash_1.range)(1, Math.max(1, allPageCount) + 1); }, [allPageCount]);
|
|
41
|
+
/* The page is ours, kept within the list on every change. It was a pagination hook's window index, which two
|
|
42
|
+
steps from one render (two auto-load observers, say) took past the last page: the page read as undefined,
|
|
43
|
+
no rows were shown and "Load more" stayed. A step reads the page it is taken from (a functional update),
|
|
44
|
+
not the one the render saw, and stops at either end. */
|
|
45
|
+
var lastPage = (0, react_1.useRef)(Math.max(1, allPageCount));
|
|
46
|
+
lastPage.current = Math.max(1, allPageCount);
|
|
47
|
+
var toPage = function (page) { return Math.min(Math.max(1, page), lastPage.current); };
|
|
48
|
+
var _c = (0, react_1.useState)(1), openPage = _c[0], setOpenPage = _c[1];
|
|
49
|
+
// the page as shown: within the list as it is now, also before the effects below have caught up with it
|
|
50
|
+
var currentPage = toPage(openPage);
|
|
51
|
+
var setPage = (0, react_1.useCallback)(function (page) { return setOpenPage(toPage(page)); }, []);
|
|
52
|
+
var goNext = (0, react_1.useCallback)(function () { return setOpenPage(function (page) { return toPage(page + 1); }); }, []);
|
|
53
|
+
var goBefore = (0, react_1.useCallback)(function () { return setOpenPage(function (page) { return toPage(page - 1); }); }, []);
|
|
54
|
+
// the start page is opened as any other, so `onPageChange` hears of it
|
|
47
55
|
(0, react_1.useEffect)(function () {
|
|
48
56
|
setPage(startPage || 1);
|
|
49
57
|
}, [startPage]);
|
|
@@ -53,36 +61,17 @@ var useReqorePaging = function (options) {
|
|
|
53
61
|
isLast: currentPage === allPageCount,
|
|
54
62
|
});
|
|
55
63
|
}, [currentPage]);
|
|
56
|
-
/* The pagination hook derives `currentPage` from a window of pages; while the
|
|
57
|
-
total is shrinking that window is briefly out of range and the page reads as
|
|
58
|
-
undefined, which is exactly when the clamp below has to know where the reader
|
|
59
|
-
was. */
|
|
60
|
-
var lastKnownPage = (0, react_1.useRef)(1);
|
|
61
|
-
if (currentPage) {
|
|
62
|
-
lastKnownPage.current = currentPage;
|
|
63
|
-
}
|
|
64
64
|
(0, react_use_1.useUpdateEffect)(function () {
|
|
65
|
-
var pageCount = Math.max(1, Math.ceil((0, lodash_1.size)(items) / itemsPerPage));
|
|
66
65
|
/* An INFINITE list keeps the reader where they are. Its pages are cumulative
|
|
67
66
|
— page 3 shows the first thirty rows — so a row arriving at the top or
|
|
68
67
|
fifty older rows loading at the bottom changes what the window holds, not
|
|
69
68
|
where the reader is; snapping to page 1 on every count change collapsed a
|
|
70
69
|
list someone had scrolled down three times the moment anything arrived.
|
|
71
|
-
Only a list that shrank below the current page pulls the page back
|
|
72
|
-
|
|
73
|
-
filter, a reload) should open on its
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
if (!currentPage || page > pageCount) {
|
|
77
|
-
setPage(Math.min(page, pageCount));
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
else {
|
|
81
|
-
setPage(1);
|
|
82
|
-
}
|
|
83
|
-
// After the page: the pagination hook validates a page against the total it
|
|
84
|
-
// holds, so shrinking the total first would reject the page it should land on.
|
|
85
|
-
setTotalPage(pageCount);
|
|
70
|
+
Only a list that shrank below the current page pulls the page back (and
|
|
71
|
+
keeps it there when it grows again). A paged table is different: its page
|
|
72
|
+
is a slice, and a new data set (a filter, a reload) should open on its
|
|
73
|
+
first page as it always has. */
|
|
74
|
+
setOpenPage(function (page) { return (infinite ? toPage(page) : 1); });
|
|
86
75
|
}, [(0, lodash_1.size)(items)]);
|
|
87
76
|
var slicedItems = (0, react_1.useMemo)(function () {
|
|
88
77
|
return items.slice(infinite ? 0 : (currentPage - 1) * itemsPerPage, currentPage * itemsPerPage);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usePaging.js","sourceRoot":"","sources":["../../src/hooks/usePaging.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"usePaging.js","sourceRoot":"","sources":["../../src/hooks/usePaging.ts"],"names":[],"mappings":"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"}
|
|
@@ -24,8 +24,16 @@ export declare const CAN_QUERY_MEDIA: boolean;
|
|
|
24
24
|
* asks the browser in an effect: on a phone, a `responsiveLayout` drawer
|
|
25
25
|
* mounted as the caller's side panel for one render before it became a sheet,
|
|
26
26
|
* and a floating one kept the side panel's `right: 10px` from that render (a
|
|
27
|
-
* 380px sheet on a 390px phone).
|
|
28
|
-
*
|
|
27
|
+
* 380px sheet on a 390px phone).
|
|
28
|
+
*
|
|
29
|
+
* And it is hydration-safe: the query is an external store
|
|
30
|
+
* (`useSyncExternalStore`), whose server snapshot is `defaultState`. A page
|
|
31
|
+
* rendered on a server (the docs site renders `ReqoreUIProvider` there) is
|
|
32
|
+
* hydrated with the server's answer, so React finds what the server drew, and
|
|
33
|
+
* the browser's answer follows straight after. Asked in `useState`'s
|
|
34
|
+
* initialiser, the browser's answer was in the hydrating render itself: a
|
|
35
|
+
* phone's `isMobile` against the server's `false`, a mismatch. A page rendered
|
|
36
|
+
* only in the browser still has the browser's answer from its first render.
|
|
29
37
|
*/
|
|
30
38
|
export declare const useReqoreMedia: (query: string, defaultState?: boolean) => boolean;
|
|
31
39
|
//# sourceMappingURL=useReqoreMedia.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useReqoreMedia.d.ts","sourceRoot":"","sources":["../../src/hooks/useReqoreMedia.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,eAAe,SAC8C,CAAC;AAE3E
|
|
1
|
+
{"version":3,"file":"useReqoreMedia.d.ts","sourceRoot":"","sources":["../../src/hooks/useReqoreMedia.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,eAAe,SAC8C,CAAC;AAE3E;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,eAAO,MAAM,cAAc,GAAI,OAAO,MAAM,EAAE,sBAAoB,KAAG,OAiBpE,CAAC"}
|
|
@@ -28,26 +28,29 @@ exports.CAN_QUERY_MEDIA = typeof window !== 'undefined' && typeof window.matchMe
|
|
|
28
28
|
* asks the browser in an effect: on a phone, a `responsiveLayout` drawer
|
|
29
29
|
* mounted as the caller's side panel for one render before it became a sheet,
|
|
30
30
|
* and a floating one kept the side panel's `right: 10px` from that render (a
|
|
31
|
-
* 380px sheet on a 390px phone).
|
|
32
|
-
*
|
|
31
|
+
* 380px sheet on a 390px phone).
|
|
32
|
+
*
|
|
33
|
+
* And it is hydration-safe: the query is an external store
|
|
34
|
+
* (`useSyncExternalStore`), whose server snapshot is `defaultState`. A page
|
|
35
|
+
* rendered on a server (the docs site renders `ReqoreUIProvider` there) is
|
|
36
|
+
* hydrated with the server's answer, so React finds what the server drew, and
|
|
37
|
+
* the browser's answer follows straight after. Asked in `useState`'s
|
|
38
|
+
* initialiser, the browser's answer was in the hydrating render itself: a
|
|
39
|
+
* phone's `isMobile` against the server's `false`, a mismatch. A page rendered
|
|
40
|
+
* only in the browser still has the browser's answer from its first render.
|
|
33
41
|
*/
|
|
34
42
|
var useReqoreMedia = function (query, defaultState) {
|
|
35
43
|
if (defaultState === void 0) { defaultState = false; }
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
(0, react_1.
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
update();
|
|
47
|
-
list.addEventListener('change', update);
|
|
48
|
-
return function () { return list.removeEventListener('change', update); };
|
|
49
|
-
}, [query]);
|
|
50
|
-
return matches;
|
|
44
|
+
// One list per query: `matchMedia` makes a new one on every call, and the snapshot is read on
|
|
45
|
+
// every render.
|
|
46
|
+
var list = (0, react_1.useMemo)(function () { return (exports.CAN_QUERY_MEDIA ? window.matchMedia(query) : undefined); }, [query]);
|
|
47
|
+
var subscribe = (0, react_1.useCallback)(function (onChange) {
|
|
48
|
+
list === null || list === void 0 ? void 0 : list.addEventListener('change', onChange);
|
|
49
|
+
return function () { return list === null || list === void 0 ? void 0 : list.removeEventListener('change', onChange); };
|
|
50
|
+
}, [list]);
|
|
51
|
+
var getSnapshot = (0, react_1.useCallback)(function () { return (list ? list.matches : defaultState); }, [list, defaultState]);
|
|
52
|
+
var getServerSnapshot = (0, react_1.useCallback)(function () { return defaultState; }, [defaultState]);
|
|
53
|
+
return (0, react_1.useSyncExternalStore)(subscribe, getSnapshot, getServerSnapshot);
|
|
51
54
|
};
|
|
52
55
|
exports.useReqoreMedia = useReqoreMedia;
|
|
53
56
|
//# sourceMappingURL=useReqoreMedia.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useReqoreMedia.js","sourceRoot":"","sources":["../../src/hooks/useReqoreMedia.ts"],"names":[],"mappings":";;;AAAA,+
|
|
1
|
+
{"version":3,"file":"useReqoreMedia.js","sourceRoot":"","sources":["../../src/hooks/useReqoreMedia.ts"],"names":[],"mappings":";;;AAAA,+BAAmE;AAEnE;;;;;;;;;;;;GAYG;AACU,QAAA,eAAe,GAC1B,OAAO,MAAM,KAAK,WAAW,IAAI,OAAO,MAAM,CAAC,UAAU,KAAK,UAAU,CAAC;AAE3E;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACI,IAAM,cAAc,GAAG,UAAC,KAAa,EAAE,YAAoB;IAApB,6BAAA,EAAA,oBAAoB;IAChE,8FAA8F;IAC9F,gBAAgB;IAChB,IAAM,IAAI,GAAG,IAAA,eAAO,EAAC,cAAM,OAAA,CAAC,uBAAe,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,EAAxD,CAAwD,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IAE9F,IAAM,SAAS,GAAG,IAAA,mBAAW,EAC3B,UAAC,QAAoB;QACnB,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAE3C,OAAO,cAAM,OAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,mBAAmB,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAA7C,CAA6C,CAAC;IAC7D,CAAC,EACD,CAAC,IAAI,CAAC,CACP,CAAC;IACF,IAAM,WAAW,GAAG,IAAA,mBAAW,EAAC,cAAM,OAAA,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,EAApC,CAAoC,EAAE,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC;IAClG,IAAM,iBAAiB,GAAG,IAAA,mBAAW,EAAC,cAAM,OAAA,YAAY,EAAZ,CAAY,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC;IAE1E,OAAO,IAAA,4BAAoB,EAAC,SAAS,EAAE,WAAW,EAAE,iBAAiB,CAAC,CAAC;AACzE,CAAC,CAAC;AAjBW,QAAA,cAAc,kBAiBzB"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@qoretechnologies/reqore",
|
|
3
|
-
"version": "0.78.5
|
|
3
|
+
"version": "0.78.5",
|
|
4
4
|
"description": "ReQore is a highly theme-able and modular UI library for React",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -115,7 +115,6 @@
|
|
|
115
115
|
"react-popper": "^2.3.0",
|
|
116
116
|
"react-scrollbar": "^0.5.6",
|
|
117
117
|
"react-use": "^17.6.0",
|
|
118
|
-
"react-use-pagination-hook": "^1.1.2",
|
|
119
118
|
"react-window": "^1.8.6",
|
|
120
119
|
"scheduler": "^0.23.0",
|
|
121
120
|
"slate": "^0.103.0",
|