@onepercentio/one-ui 0.13.5 → 0.13.6
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.
|
@@ -2,8 +2,11 @@ import { RefObject } from "react";
|
|
|
2
2
|
/**
|
|
3
3
|
* This hook handles the display of pagination controls for the user to move to another page
|
|
4
4
|
*/
|
|
5
|
-
export default function usePaginationControls(containerRef: RefObject<HTMLDivElement>, { snapToPage, }?: {
|
|
5
|
+
export default function usePaginationControls(containerRef: RefObject<HTMLDivElement>, { snapToPage, baseWidth, snapToCutElement, }?: {
|
|
6
6
|
snapToPage?: boolean;
|
|
7
|
+
baseWidth?: number;
|
|
8
|
+
/** This will scroll only until the partially visible element is at the border, instead of scrolling all the container */
|
|
9
|
+
snapToCutElement?: boolean;
|
|
7
10
|
}): {
|
|
8
11
|
controls: JSX.Element[];
|
|
9
12
|
checkControlsRequirement: () => void;
|
|
@@ -35,26 +35,48 @@ const usePaginationControls_module_scss_1 = __importDefault(require("./usePagina
|
|
|
35
35
|
/**
|
|
36
36
|
* This hook handles the display of pagination controls for the user to move to another page
|
|
37
37
|
*/
|
|
38
|
-
function usePaginationControls(containerRef, { snapToPage, } = {}) {
|
|
38
|
+
function usePaginationControls(containerRef, { snapToPage, baseWidth, snapToCutElement, } = {}) {
|
|
39
39
|
const [[leftControl, rightControl], setControls] = (0, react_1.useState)([false, false]);
|
|
40
40
|
const LeftControl = (0, OneUIProvider_1.useOneUIConfig)("hook.ui.usePaginationControls.LeftControl");
|
|
41
41
|
const RightControl = (0, OneUIProvider_1.useOneUIConfig)("hook.ui.usePaginationControls.RightControl");
|
|
42
42
|
const className = (0, OneUIProvider_1.useOneUIConfig)("hook.ui.usePaginationControls.className", "");
|
|
43
43
|
function move(direction) {
|
|
44
44
|
return () => {
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
45
|
+
if (snapToCutElement !== null && snapToCutElement !== void 0 ? snapToCutElement : false) {
|
|
46
|
+
const childBaseWidth = baseWidth || containerRef.current.firstElementChild.clientWidth;
|
|
47
|
+
const howMuchDoesTheScrollAddsUpTo = containerRef.current.scrollLeft / childBaseWidth -
|
|
48
|
+
Math.floor(containerRef.current.scrollLeft / childBaseWidth);
|
|
49
|
+
const howMuchElementsFitOnAPage = containerRef.current.clientWidth / childBaseWidth;
|
|
50
|
+
const howMuchElementsFullyFitOnAPage = Math.floor(howMuchElementsFitOnAPage);
|
|
51
|
+
const directionScale = direction === "l"
|
|
52
|
+
? 1 - howMuchDoesTheScrollAddsUpTo
|
|
53
|
+
: howMuchDoesTheScrollAddsUpTo;
|
|
54
|
+
const howMuchOfTheRemainingElementIsShown = howMuchElementsFitOnAPage +
|
|
55
|
+
directionScale -
|
|
56
|
+
howMuchElementsFullyFitOnAPage;
|
|
57
|
+
const howMuchToScroll = (containerRef.current.clientWidth -
|
|
58
|
+
childBaseWidth * howMuchOfTheRemainingElementIsShown) *
|
|
59
|
+
(direction === "l" ? -1 : 1);
|
|
60
|
+
containerRef.current.scrollBy({
|
|
61
|
+
left: howMuchToScroll,
|
|
62
|
+
behavior: "smooth",
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
else {
|
|
66
|
+
const rest = containerRef.current.scrollLeft % containerRef.current.clientWidth;
|
|
67
|
+
const snapOffset = snapToPage
|
|
68
|
+
? direction === "l"
|
|
69
|
+
? rest
|
|
70
|
+
? containerRef.current.clientWidth - rest
|
|
71
|
+
: 0
|
|
72
|
+
: rest
|
|
73
|
+
: 0;
|
|
74
|
+
containerRef.current.scrollBy({
|
|
75
|
+
left: (containerRef.current.clientWidth - snapOffset) *
|
|
76
|
+
(direction === "l" ? -1 : 1),
|
|
77
|
+
behavior: "smooth",
|
|
78
|
+
});
|
|
79
|
+
}
|
|
58
80
|
};
|
|
59
81
|
}
|
|
60
82
|
function checkControlsRequirement() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usePaginationControls.js","sourceRoot":"","sources":["../../../src/hooks/ui/usePaginationControls.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+DAAuC;AACvC,+CAA8D;AAC9D,qEAA2C;AAC3C,+DAA6D;AAC7D,4GAAyD;AAEzD;;GAEG;AACH,SAAwB,qBAAqB,CAC3C,YAAuC,EACvC,EACE,UAAU,
|
|
1
|
+
{"version":3,"file":"usePaginationControls.js","sourceRoot":"","sources":["../../../src/hooks/ui/usePaginationControls.tsx"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@onepercentio/one-ui",
|
|
3
|
-
"version": "0.13.
|
|
3
|
+
"version": "0.13.6",
|
|
4
4
|
"description": "A set of reusable components created through the development of Onepercent projects",
|
|
5
5
|
"repository": "git@github.com:onepercentio/one-ui.git",
|
|
6
6
|
"author": "Murilo Oliveira de Araujo <murilo.araujo@onepercent.io>",
|