@bbl-digital/snorre 2.2.30 → 2.2.31
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/esm/core/ListPager/index.js +55 -0
- package/esm/core/ListPager/styles.js +34 -0
- package/esm/utils/pagination.js +26 -0
- package/lib/core/ListPager/index.d.ts +16 -0
- package/lib/core/ListPager/index.d.ts.map +1 -0
- package/lib/core/ListPager/index.js +55 -0
- package/lib/core/ListPager/styles.d.ts +11 -0
- package/lib/core/ListPager/styles.d.ts.map +1 -0
- package/lib/core/ListPager/styles.js +34 -0
- package/lib/utils/pagination.d.ts +7 -0
- package/lib/utils/pagination.d.ts.map +1 -0
- package/lib/utils/pagination.js +26 -0
- package/package.json +1 -1
@@ -0,0 +1,55 @@
|
|
1
|
+
import React from 'react';
|
2
|
+
import { useTheme } from '@emotion/react';
|
3
|
+
import { DotWrapper, PageStyle, Wrapper } from './styles';
|
4
|
+
import { getHasPreviousPages, getHasMorePages, getFirstButtonIndex } from '../../utils/pagination';
|
5
|
+
import Button from '../Button';
|
6
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
7
|
+
import { jsxs as _jsxs } from "react/jsx-runtime";
|
8
|
+
|
9
|
+
const ListPager = ({
|
10
|
+
totalPageCount,
|
11
|
+
currentPage,
|
12
|
+
onFirstClick,
|
13
|
+
onLastClick,
|
14
|
+
onPageClick
|
15
|
+
}) => {
|
16
|
+
const theme = useTheme();
|
17
|
+
|
18
|
+
if (!(totalPageCount && totalPageCount > 0 && currentPage)) {
|
19
|
+
return null;
|
20
|
+
}
|
21
|
+
|
22
|
+
const totalButtons = totalPageCount > 5 ? 5 : totalPageCount;
|
23
|
+
const hasPreviousPages = getHasPreviousPages(currentPage, totalPageCount);
|
24
|
+
const hasMorePages = getHasMorePages(currentPage, totalPageCount);
|
25
|
+
const firstButtonIndex = getFirstButtonIndex(currentPage, totalPageCount);
|
26
|
+
|
27
|
+
const Dots = /*#__PURE__*/_jsx(DotWrapper, {
|
28
|
+
children: "..."
|
29
|
+
});
|
30
|
+
|
31
|
+
let pages = [];
|
32
|
+
|
33
|
+
for (let i = firstButtonIndex; i < firstButtonIndex + totalButtons; i++) {
|
34
|
+
pages.push( /*#__PURE__*/_jsx(Button, {
|
35
|
+
nostyle: true,
|
36
|
+
onClick: () => onPageClick && onPageClick(i + 1),
|
37
|
+
css: PageStyle(currentPage === i + 1, theme.primary),
|
38
|
+
children: i + 1
|
39
|
+
}, i));
|
40
|
+
}
|
41
|
+
|
42
|
+
return /*#__PURE__*/_jsxs(Wrapper, {
|
43
|
+
children: [/*#__PURE__*/_jsx(Button, {
|
44
|
+
nostyle: true,
|
45
|
+
onClick: onFirstClick,
|
46
|
+
children: "F\xF8rste"
|
47
|
+
}), hasPreviousPages && Dots, pages, hasMorePages && Dots, /*#__PURE__*/_jsx(Button, {
|
48
|
+
nostyle: true,
|
49
|
+
onClick: () => onLastClick && totalPageCount && onLastClick(totalPageCount),
|
50
|
+
children: "Siste"
|
51
|
+
})]
|
52
|
+
});
|
53
|
+
};
|
54
|
+
|
55
|
+
export default ListPager;
|
@@ -0,0 +1,34 @@
|
|
1
|
+
import _styled from "@emotion/styled/base";
|
2
|
+
|
3
|
+
function _EMOTION_STRINGIFIED_CSS_ERROR__() { return "You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop)."; }
|
4
|
+
|
5
|
+
import { css } from '@emotion/react';
|
6
|
+
export const PageStyle = (active, primary) => /*#__PURE__*/css("color:", active ? primary : 'initial', ";&:active,&:hover,&:focus{color:", active ? primary : 'initial', ";}" + (process.env.NODE_ENV === "production" ? "" : ";label:PageStyle;"), process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wYWNrYWdlcy9jb3JlL0xpc3RQYWdlci9zdHlsZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR2tFIiwiZmlsZSI6Ii4uLy4uLy4uL3NyYy9wYWNrYWdlcy9jb3JlL0xpc3RQYWdlci9zdHlsZXMudHMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjc3MgfSBmcm9tICdAZW1vdGlvbi9yZWFjdCdcbmltcG9ydCBzdHlsZWQgZnJvbSAnQGVtb3Rpb24vc3R5bGVkJ1xuXG5leHBvcnQgY29uc3QgUGFnZVN0eWxlID0gKGFjdGl2ZTogYm9vbGVhbiwgcHJpbWFyeTogc3RyaW5nKSA9PiBjc3NgXG4gIGNvbG9yOiAke2FjdGl2ZSA/IHByaW1hcnkgOiAnaW5pdGlhbCd9O1xuICAmOmFjdGl2ZSxcbiAgJjpob3ZlcixcbiAgJjpmb2N1cyB7XG4gICAgY29sb3I6ICR7YWN0aXZlID8gcHJpbWFyeSA6ICdpbml0aWFsJ307XG4gIH1cbmBcbmV4cG9ydCBjb25zdCBXcmFwcGVyID0gc3R5bGVkLmRpdmBcbiAgZGlzcGxheTogZ3JpZDtcbiAgZ3JpZC1jb2x1bW4tZ2FwOiAxZW07XG4gIGdyaWQtYXV0by1mbG93OiBjb2x1bW47XG4gIHdpZHRoOiBtaW4tY29udGVudDtcbmBcblxuZXhwb3J0IGNvbnN0IERvdFdyYXBwZXIgPSBzdHlsZWQuc3BhbmBcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbmBcbiJdfQ== */");
|
7
|
+
export const Wrapper = _styled("div", process.env.NODE_ENV === "production" ? {
|
8
|
+
target: "eava76v1"
|
9
|
+
} : {
|
10
|
+
target: "eava76v1",
|
11
|
+
label: "Wrapper"
|
12
|
+
})(process.env.NODE_ENV === "production" ? {
|
13
|
+
name: "1o2oc08",
|
14
|
+
styles: "display:grid;grid-column-gap:1em;grid-auto-flow:column;width:min-content"
|
15
|
+
} : {
|
16
|
+
name: "1o2oc08",
|
17
|
+
styles: "display:grid;grid-column-gap:1em;grid-auto-flow:column;width:min-content",
|
18
|
+
map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wYWNrYWdlcy9jb3JlL0xpc3RQYWdlci9zdHlsZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBV2lDIiwiZmlsZSI6Ii4uLy4uLy4uL3NyYy9wYWNrYWdlcy9jb3JlL0xpc3RQYWdlci9zdHlsZXMudHMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjc3MgfSBmcm9tICdAZW1vdGlvbi9yZWFjdCdcbmltcG9ydCBzdHlsZWQgZnJvbSAnQGVtb3Rpb24vc3R5bGVkJ1xuXG5leHBvcnQgY29uc3QgUGFnZVN0eWxlID0gKGFjdGl2ZTogYm9vbGVhbiwgcHJpbWFyeTogc3RyaW5nKSA9PiBjc3NgXG4gIGNvbG9yOiAke2FjdGl2ZSA/IHByaW1hcnkgOiAnaW5pdGlhbCd9O1xuICAmOmFjdGl2ZSxcbiAgJjpob3ZlcixcbiAgJjpmb2N1cyB7XG4gICAgY29sb3I6ICR7YWN0aXZlID8gcHJpbWFyeSA6ICdpbml0aWFsJ307XG4gIH1cbmBcbmV4cG9ydCBjb25zdCBXcmFwcGVyID0gc3R5bGVkLmRpdmBcbiAgZGlzcGxheTogZ3JpZDtcbiAgZ3JpZC1jb2x1bW4tZ2FwOiAxZW07XG4gIGdyaWQtYXV0by1mbG93OiBjb2x1bW47XG4gIHdpZHRoOiBtaW4tY29udGVudDtcbmBcblxuZXhwb3J0IGNvbnN0IERvdFdyYXBwZXIgPSBzdHlsZWQuc3BhbmBcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbmBcbiJdfQ== */",
|
19
|
+
toString: _EMOTION_STRINGIFIED_CSS_ERROR__
|
20
|
+
});
|
21
|
+
export const DotWrapper = _styled("span", process.env.NODE_ENV === "production" ? {
|
22
|
+
target: "eava76v0"
|
23
|
+
} : {
|
24
|
+
target: "eava76v0",
|
25
|
+
label: "DotWrapper"
|
26
|
+
})(process.env.NODE_ENV === "production" ? {
|
27
|
+
name: "s5xdrg",
|
28
|
+
styles: "display:flex;align-items:center"
|
29
|
+
} : {
|
30
|
+
name: "s5xdrg",
|
31
|
+
styles: "display:flex;align-items:center",
|
32
|
+
map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wYWNrYWdlcy9jb3JlL0xpc3RQYWdlci9zdHlsZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBa0JxQyIsImZpbGUiOiIuLi8uLi8uLi9zcmMvcGFja2FnZXMvY29yZS9MaXN0UGFnZXIvc3R5bGVzLnRzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY3NzIH0gZnJvbSAnQGVtb3Rpb24vcmVhY3QnXG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCdcblxuZXhwb3J0IGNvbnN0IFBhZ2VTdHlsZSA9IChhY3RpdmU6IGJvb2xlYW4sIHByaW1hcnk6IHN0cmluZykgPT4gY3NzYFxuICBjb2xvcjogJHthY3RpdmUgPyBwcmltYXJ5IDogJ2luaXRpYWwnfTtcbiAgJjphY3RpdmUsXG4gICY6aG92ZXIsXG4gICY6Zm9jdXMge1xuICAgIGNvbG9yOiAke2FjdGl2ZSA/IHByaW1hcnkgOiAnaW5pdGlhbCd9O1xuICB9XG5gXG5leHBvcnQgY29uc3QgV3JhcHBlciA9IHN0eWxlZC5kaXZgXG4gIGRpc3BsYXk6IGdyaWQ7XG4gIGdyaWQtY29sdW1uLWdhcDogMWVtO1xuICBncmlkLWF1dG8tZmxvdzogY29sdW1uO1xuICB3aWR0aDogbWluLWNvbnRlbnQ7XG5gXG5cbmV4cG9ydCBjb25zdCBEb3RXcmFwcGVyID0gc3R5bGVkLnNwYW5gXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5gXG4iXX0= */",
|
33
|
+
toString: _EMOTION_STRINGIFIED_CSS_ERROR__
|
34
|
+
});
|
@@ -0,0 +1,26 @@
|
|
1
|
+
const getCurrentPage = (take, skip) => {
|
2
|
+
if (skip === undefined || take === undefined || take === 0) return 0;
|
3
|
+
if (skip === 0) return 1;
|
4
|
+
return Math.floor(skip / take + 1);
|
5
|
+
};
|
6
|
+
|
7
|
+
const getSkippedItems = (pageNumber, take) => {
|
8
|
+
if (pageNumber === undefined || take === undefined) return NaN;
|
9
|
+
return (pageNumber - 1) * take;
|
10
|
+
};
|
11
|
+
|
12
|
+
const getHasPreviousPages = (currentPage, totalPages) => {
|
13
|
+
return currentPage > 3 && totalPages > 5;
|
14
|
+
};
|
15
|
+
|
16
|
+
const getHasMorePages = (currentPage, totalPages) => {
|
17
|
+
return currentPage < totalPages - 2 && totalPages > 5;
|
18
|
+
};
|
19
|
+
|
20
|
+
const getFirstButtonIndex = (currentPage, totalPages) => {
|
21
|
+
if (totalPages <= 5 || currentPage <= 3) return 0;
|
22
|
+
if (totalPages - currentPage <= 2) return totalPages - 5;
|
23
|
+
return currentPage - 3;
|
24
|
+
};
|
25
|
+
|
26
|
+
export { getCurrentPage, getSkippedItems, getHasPreviousPages, getHasMorePages, getFirstButtonIndex };
|
@@ -0,0 +1,16 @@
|
|
1
|
+
import React from 'react';
|
2
|
+
interface IProps {
|
3
|
+
/** Amount of pages */
|
4
|
+
totalPageCount?: number;
|
5
|
+
/** Current page number */
|
6
|
+
currentPage?: number;
|
7
|
+
/** CB on first click */
|
8
|
+
onFirstClick?: () => void;
|
9
|
+
/** CB on last click */
|
10
|
+
onLastClick?: (page: number) => void;
|
11
|
+
/** CB on page number click */
|
12
|
+
onPageClick?: (page: number) => void;
|
13
|
+
}
|
14
|
+
declare const ListPager: React.FC<IProps>;
|
15
|
+
export default ListPager;
|
16
|
+
//# sourceMappingURL=index.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/packages/core/ListPager/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAUzB,UAAU,MAAM;IACd,sBAAsB;IACtB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,0BAA0B;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,wBAAwB;IACxB,YAAY,CAAC,EAAE,MAAM,IAAI,CAAA;IACzB,uBAAuB;IACvB,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IACpC,8BAA8B;IAC9B,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;CACrC;AAED,QAAA,MAAM,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC,MAAM,CAkD/B,CAAA;AAED,eAAe,SAAS,CAAA"}
|
@@ -0,0 +1,55 @@
|
|
1
|
+
import React from 'react';
|
2
|
+
import { useTheme } from '@emotion/react';
|
3
|
+
import { DotWrapper, PageStyle, Wrapper } from './styles';
|
4
|
+
import { getHasPreviousPages, getHasMorePages, getFirstButtonIndex } from '../../utils/pagination';
|
5
|
+
import Button from '../Button';
|
6
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
7
|
+
import { jsxs as _jsxs } from "react/jsx-runtime";
|
8
|
+
|
9
|
+
const ListPager = ({
|
10
|
+
totalPageCount,
|
11
|
+
currentPage,
|
12
|
+
onFirstClick,
|
13
|
+
onLastClick,
|
14
|
+
onPageClick
|
15
|
+
}) => {
|
16
|
+
const theme = useTheme();
|
17
|
+
|
18
|
+
if (!(totalPageCount && totalPageCount > 0 && currentPage)) {
|
19
|
+
return null;
|
20
|
+
}
|
21
|
+
|
22
|
+
const totalButtons = totalPageCount > 5 ? 5 : totalPageCount;
|
23
|
+
const hasPreviousPages = getHasPreviousPages(currentPage, totalPageCount);
|
24
|
+
const hasMorePages = getHasMorePages(currentPage, totalPageCount);
|
25
|
+
const firstButtonIndex = getFirstButtonIndex(currentPage, totalPageCount);
|
26
|
+
|
27
|
+
const Dots = /*#__PURE__*/_jsx(DotWrapper, {
|
28
|
+
children: "..."
|
29
|
+
});
|
30
|
+
|
31
|
+
let pages = [];
|
32
|
+
|
33
|
+
for (let i = firstButtonIndex; i < firstButtonIndex + totalButtons; i++) {
|
34
|
+
pages.push( /*#__PURE__*/_jsx(Button, {
|
35
|
+
nostyle: true,
|
36
|
+
onClick: () => onPageClick && onPageClick(i + 1),
|
37
|
+
css: PageStyle(currentPage === i + 1, theme.primary),
|
38
|
+
children: i + 1
|
39
|
+
}, i));
|
40
|
+
}
|
41
|
+
|
42
|
+
return /*#__PURE__*/_jsxs(Wrapper, {
|
43
|
+
children: [/*#__PURE__*/_jsx(Button, {
|
44
|
+
nostyle: true,
|
45
|
+
onClick: onFirstClick,
|
46
|
+
children: "F\xF8rste"
|
47
|
+
}), hasPreviousPages && Dots, pages, hasMorePages && Dots, /*#__PURE__*/_jsx(Button, {
|
48
|
+
nostyle: true,
|
49
|
+
onClick: () => onLastClick && totalPageCount && onLastClick(totalPageCount),
|
50
|
+
children: "Siste"
|
51
|
+
})]
|
52
|
+
});
|
53
|
+
};
|
54
|
+
|
55
|
+
export default ListPager;
|
@@ -0,0 +1,11 @@
|
|
1
|
+
/// <reference types="react" />
|
2
|
+
export declare const PageStyle: (active: boolean, primary: string) => import("@emotion/react").SerializedStyles;
|
3
|
+
export declare const Wrapper: import("@emotion/styled").StyledComponent<{
|
4
|
+
theme?: import("@emotion/react").Theme | undefined;
|
5
|
+
as?: import("react").ElementType<any> | undefined;
|
6
|
+
}, import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
|
7
|
+
export declare const DotWrapper: import("@emotion/styled").StyledComponent<{
|
8
|
+
theme?: import("@emotion/react").Theme | undefined;
|
9
|
+
as?: import("react").ElementType<any> | undefined;
|
10
|
+
}, import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>, {}>;
|
11
|
+
//# sourceMappingURL=styles.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../../src/packages/core/ListPager/styles.ts"],"names":[],"mappings":";AAGA,eAAO,MAAM,SAAS,WAAY,OAAO,WAAW,MAAM,8CAOzD,CAAA;AACD,eAAO,MAAM,OAAO;;;yGAKnB,CAAA;AAED,eAAO,MAAM,UAAU;;;2GAGtB,CAAA"}
|
@@ -0,0 +1,34 @@
|
|
1
|
+
import _styled from "@emotion/styled/base";
|
2
|
+
|
3
|
+
function _EMOTION_STRINGIFIED_CSS_ERROR__() { return "You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop)."; }
|
4
|
+
|
5
|
+
import { css } from '@emotion/react';
|
6
|
+
export const PageStyle = (active, primary) => /*#__PURE__*/css("color:", active ? primary : 'initial', ";&:active,&:hover,&:focus{color:", active ? primary : 'initial', ";}" + (process.env.NODE_ENV === "production" ? "" : ";label:PageStyle;"), process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wYWNrYWdlcy9jb3JlL0xpc3RQYWdlci9zdHlsZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR2tFIiwiZmlsZSI6Ii4uLy4uLy4uL3NyYy9wYWNrYWdlcy9jb3JlL0xpc3RQYWdlci9zdHlsZXMudHMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjc3MgfSBmcm9tICdAZW1vdGlvbi9yZWFjdCdcbmltcG9ydCBzdHlsZWQgZnJvbSAnQGVtb3Rpb24vc3R5bGVkJ1xuXG5leHBvcnQgY29uc3QgUGFnZVN0eWxlID0gKGFjdGl2ZTogYm9vbGVhbiwgcHJpbWFyeTogc3RyaW5nKSA9PiBjc3NgXG4gIGNvbG9yOiAke2FjdGl2ZSA/IHByaW1hcnkgOiAnaW5pdGlhbCd9O1xuICAmOmFjdGl2ZSxcbiAgJjpob3ZlcixcbiAgJjpmb2N1cyB7XG4gICAgY29sb3I6ICR7YWN0aXZlID8gcHJpbWFyeSA6ICdpbml0aWFsJ307XG4gIH1cbmBcbmV4cG9ydCBjb25zdCBXcmFwcGVyID0gc3R5bGVkLmRpdmBcbiAgZGlzcGxheTogZ3JpZDtcbiAgZ3JpZC1jb2x1bW4tZ2FwOiAxZW07XG4gIGdyaWQtYXV0by1mbG93OiBjb2x1bW47XG4gIHdpZHRoOiBtaW4tY29udGVudDtcbmBcblxuZXhwb3J0IGNvbnN0IERvdFdyYXBwZXIgPSBzdHlsZWQuc3BhbmBcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbmBcbiJdfQ== */");
|
7
|
+
export const Wrapper = _styled("div", process.env.NODE_ENV === "production" ? {
|
8
|
+
target: "eava76v1"
|
9
|
+
} : {
|
10
|
+
target: "eava76v1",
|
11
|
+
label: "Wrapper"
|
12
|
+
})(process.env.NODE_ENV === "production" ? {
|
13
|
+
name: "1o2oc08",
|
14
|
+
styles: "display:grid;grid-column-gap:1em;grid-auto-flow:column;width:min-content"
|
15
|
+
} : {
|
16
|
+
name: "1o2oc08",
|
17
|
+
styles: "display:grid;grid-column-gap:1em;grid-auto-flow:column;width:min-content",
|
18
|
+
map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wYWNrYWdlcy9jb3JlL0xpc3RQYWdlci9zdHlsZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBV2lDIiwiZmlsZSI6Ii4uLy4uLy4uL3NyYy9wYWNrYWdlcy9jb3JlL0xpc3RQYWdlci9zdHlsZXMudHMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjc3MgfSBmcm9tICdAZW1vdGlvbi9yZWFjdCdcbmltcG9ydCBzdHlsZWQgZnJvbSAnQGVtb3Rpb24vc3R5bGVkJ1xuXG5leHBvcnQgY29uc3QgUGFnZVN0eWxlID0gKGFjdGl2ZTogYm9vbGVhbiwgcHJpbWFyeTogc3RyaW5nKSA9PiBjc3NgXG4gIGNvbG9yOiAke2FjdGl2ZSA/IHByaW1hcnkgOiAnaW5pdGlhbCd9O1xuICAmOmFjdGl2ZSxcbiAgJjpob3ZlcixcbiAgJjpmb2N1cyB7XG4gICAgY29sb3I6ICR7YWN0aXZlID8gcHJpbWFyeSA6ICdpbml0aWFsJ307XG4gIH1cbmBcbmV4cG9ydCBjb25zdCBXcmFwcGVyID0gc3R5bGVkLmRpdmBcbiAgZGlzcGxheTogZ3JpZDtcbiAgZ3JpZC1jb2x1bW4tZ2FwOiAxZW07XG4gIGdyaWQtYXV0by1mbG93OiBjb2x1bW47XG4gIHdpZHRoOiBtaW4tY29udGVudDtcbmBcblxuZXhwb3J0IGNvbnN0IERvdFdyYXBwZXIgPSBzdHlsZWQuc3BhbmBcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbmBcbiJdfQ== */",
|
19
|
+
toString: _EMOTION_STRINGIFIED_CSS_ERROR__
|
20
|
+
});
|
21
|
+
export const DotWrapper = _styled("span", process.env.NODE_ENV === "production" ? {
|
22
|
+
target: "eava76v0"
|
23
|
+
} : {
|
24
|
+
target: "eava76v0",
|
25
|
+
label: "DotWrapper"
|
26
|
+
})(process.env.NODE_ENV === "production" ? {
|
27
|
+
name: "s5xdrg",
|
28
|
+
styles: "display:flex;align-items:center"
|
29
|
+
} : {
|
30
|
+
name: "s5xdrg",
|
31
|
+
styles: "display:flex;align-items:center",
|
32
|
+
map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wYWNrYWdlcy9jb3JlL0xpc3RQYWdlci9zdHlsZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBa0JxQyIsImZpbGUiOiIuLi8uLi8uLi9zcmMvcGFja2FnZXMvY29yZS9MaXN0UGFnZXIvc3R5bGVzLnRzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY3NzIH0gZnJvbSAnQGVtb3Rpb24vcmVhY3QnXG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCdcblxuZXhwb3J0IGNvbnN0IFBhZ2VTdHlsZSA9IChhY3RpdmU6IGJvb2xlYW4sIHByaW1hcnk6IHN0cmluZykgPT4gY3NzYFxuICBjb2xvcjogJHthY3RpdmUgPyBwcmltYXJ5IDogJ2luaXRpYWwnfTtcbiAgJjphY3RpdmUsXG4gICY6aG92ZXIsXG4gICY6Zm9jdXMge1xuICAgIGNvbG9yOiAke2FjdGl2ZSA/IHByaW1hcnkgOiAnaW5pdGlhbCd9O1xuICB9XG5gXG5leHBvcnQgY29uc3QgV3JhcHBlciA9IHN0eWxlZC5kaXZgXG4gIGRpc3BsYXk6IGdyaWQ7XG4gIGdyaWQtY29sdW1uLWdhcDogMWVtO1xuICBncmlkLWF1dG8tZmxvdzogY29sdW1uO1xuICB3aWR0aDogbWluLWNvbnRlbnQ7XG5gXG5cbmV4cG9ydCBjb25zdCBEb3RXcmFwcGVyID0gc3R5bGVkLnNwYW5gXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5gXG4iXX0= */",
|
33
|
+
toString: _EMOTION_STRINGIFIED_CSS_ERROR__
|
34
|
+
});
|
@@ -0,0 +1,7 @@
|
|
1
|
+
declare const getCurrentPage: (take: number, skip: number) => number;
|
2
|
+
declare const getSkippedItems: (pageNumber: number, take: number) => number;
|
3
|
+
declare const getHasPreviousPages: (currentPage: number, totalPages: number) => boolean;
|
4
|
+
declare const getHasMorePages: (currentPage: number, totalPages: number) => boolean;
|
5
|
+
declare const getFirstButtonIndex: (currentPage: number, totalPages: number) => number;
|
6
|
+
export { getCurrentPage, getSkippedItems, getHasPreviousPages, getHasMorePages, getFirstButtonIndex, };
|
7
|
+
//# sourceMappingURL=pagination.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"pagination.d.ts","sourceRoot":"","sources":["../../src/packages/utils/pagination.ts"],"names":[],"mappings":"AAAA,QAAA,MAAM,cAAc,SAAU,MAAM,QAAQ,MAAM,WAKjD,CAAA;AAED,QAAA,MAAM,eAAe,eAAgB,MAAM,QAAQ,MAAM,WAGxD,CAAA;AAED,QAAA,MAAM,mBAAmB,gBAAiB,MAAM,cAAc,MAAM,YAEnE,CAAA;AAED,QAAA,MAAM,eAAe,gBAAiB,MAAM,cAAc,MAAM,YAE/D,CAAA;AAED,QAAA,MAAM,mBAAmB,gBAAiB,MAAM,cAAc,MAAM,WAInE,CAAA;AAED,OAAO,EACL,cAAc,EACd,eAAe,EACf,mBAAmB,EACnB,eAAe,EACf,mBAAmB,GACpB,CAAA"}
|
@@ -0,0 +1,26 @@
|
|
1
|
+
const getCurrentPage = (take, skip) => {
|
2
|
+
if (skip === undefined || take === undefined || take === 0) return 0;
|
3
|
+
if (skip === 0) return 1;
|
4
|
+
return Math.floor(skip / take + 1);
|
5
|
+
};
|
6
|
+
|
7
|
+
const getSkippedItems = (pageNumber, take) => {
|
8
|
+
if (pageNumber === undefined || take === undefined) return NaN;
|
9
|
+
return (pageNumber - 1) * take;
|
10
|
+
};
|
11
|
+
|
12
|
+
const getHasPreviousPages = (currentPage, totalPages) => {
|
13
|
+
return currentPage > 3 && totalPages > 5;
|
14
|
+
};
|
15
|
+
|
16
|
+
const getHasMorePages = (currentPage, totalPages) => {
|
17
|
+
return currentPage < totalPages - 2 && totalPages > 5;
|
18
|
+
};
|
19
|
+
|
20
|
+
const getFirstButtonIndex = (currentPage, totalPages) => {
|
21
|
+
if (totalPages <= 5 || currentPage <= 3) return 0;
|
22
|
+
if (totalPages - currentPage <= 2) return totalPages - 5;
|
23
|
+
return currentPage - 3;
|
24
|
+
};
|
25
|
+
|
26
|
+
export { getCurrentPage, getSkippedItems, getHasPreviousPages, getHasMorePages, getFirstButtonIndex };
|