@elliemae/ds-pagination 2.3.1 → 3.0.0-alpha.3

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.
Files changed (83) hide show
  1. package/dist/cjs/Pagination.js +61 -0
  2. package/dist/cjs/Pagination.js.map +7 -0
  3. package/dist/cjs/PaginationDataTestID.js +39 -0
  4. package/dist/cjs/PaginationDataTestID.js.map +7 -0
  5. package/dist/cjs/hooks/usePaginationSearch.js +60 -0
  6. package/dist/cjs/hooks/usePaginationSearch.js.map +7 -0
  7. package/dist/cjs/index.d.js +27 -0
  8. package/dist/cjs/index.d.js.map +7 -0
  9. package/dist/cjs/index.js +28 -0
  10. package/dist/cjs/index.js.map +7 -0
  11. package/dist/cjs/parts/PageNextButton.js +53 -0
  12. package/dist/cjs/parts/PageNextButton.js.map +7 -0
  13. package/dist/cjs/parts/PagePrevButton.js +49 -0
  14. package/dist/cjs/parts/PagePrevButton.js.map +7 -0
  15. package/dist/cjs/parts/PaginationContent.js +111 -0
  16. package/dist/cjs/parts/PaginationContent.js.map +7 -0
  17. package/dist/cjs/parts/Paginator.js +148 -0
  18. package/dist/cjs/parts/Paginator.js.map +7 -0
  19. package/dist/cjs/parts/PerPageSelector.js +106 -0
  20. package/dist/cjs/parts/PerPageSelector.js.map +7 -0
  21. package/dist/cjs/props.js +82 -0
  22. package/dist/cjs/props.js.map +7 -0
  23. package/dist/cjs/styled.js +130 -0
  24. package/dist/cjs/styled.js.map +7 -0
  25. package/dist/esm/Pagination.js +34 -0
  26. package/dist/esm/Pagination.js.map +7 -0
  27. package/dist/esm/PaginationDataTestID.js +10 -0
  28. package/dist/esm/PaginationDataTestID.js.map +7 -0
  29. package/{esm → dist/esm}/hooks/usePaginationSearch.js +16 -13
  30. package/dist/esm/hooks/usePaginationSearch.js.map +7 -0
  31. package/dist/esm/index.d.js +2 -0
  32. package/dist/esm/index.d.js.map +7 -0
  33. package/dist/esm/index.js +3 -0
  34. package/dist/esm/index.js.map +7 -0
  35. package/dist/esm/parts/PageNextButton.js +24 -0
  36. package/dist/esm/parts/PageNextButton.js.map +7 -0
  37. package/dist/esm/parts/PagePrevButton.js +20 -0
  38. package/dist/esm/parts/PagePrevButton.js.map +7 -0
  39. package/dist/esm/parts/PaginationContent.js +84 -0
  40. package/dist/esm/parts/PaginationContent.js.map +7 -0
  41. package/dist/esm/parts/Paginator.js +124 -0
  42. package/dist/esm/parts/Paginator.js.map +7 -0
  43. package/dist/esm/parts/PerPageSelector.js +77 -0
  44. package/dist/esm/parts/PerPageSelector.js.map +7 -0
  45. package/dist/esm/props.js +53 -0
  46. package/dist/esm/props.js.map +7 -0
  47. package/dist/esm/styled.js +106 -0
  48. package/dist/esm/styled.js.map +7 -0
  49. package/package.json +53 -45
  50. package/cjs/Pagination.js +0 -35
  51. package/cjs/PaginationDataTestID.js +0 -11
  52. package/cjs/hooks/usePaginationSearch.js +0 -32
  53. package/cjs/index.d.js +0 -2
  54. package/cjs/index.js +0 -10
  55. package/cjs/parts/PageNextButton.js +0 -33
  56. package/cjs/parts/PagePrevButton.js +0 -32
  57. package/cjs/parts/PaginationContent.js +0 -95
  58. package/cjs/parts/Paginator.js +0 -163
  59. package/cjs/parts/PerPageSelector.js +0 -110
  60. package/cjs/props.js +0 -53
  61. package/cjs/styled.js +0 -57
  62. package/esm/Pagination.js +0 -26
  63. package/esm/PaginationDataTestID.js +0 -7
  64. package/esm/index.d.js +0 -1
  65. package/esm/index.js +0 -1
  66. package/esm/parts/PageNextButton.js +0 -25
  67. package/esm/parts/PagePrevButton.js +0 -24
  68. package/esm/parts/PaginationContent.js +0 -85
  69. package/esm/parts/Paginator.js +0 -156
  70. package/esm/parts/PerPageSelector.js +0 -103
  71. package/esm/props.js +0 -48
  72. package/esm/styled.js +0 -40
  73. package/types/Pagination.d.ts +0 -5
  74. package/types/PaginationDataTestID.d.ts +0 -5
  75. package/types/hooks/usePaginationSearch.d.ts +0 -1
  76. package/types/index.d.ts +0 -1
  77. package/types/parts/PageNextButton.d.ts +0 -3
  78. package/types/parts/PagePrevButton.d.ts +0 -3
  79. package/types/parts/PaginationContent.d.ts +0 -3
  80. package/types/parts/Paginator.d.ts +0 -10
  81. package/types/parts/PerPageSelector.d.ts +0 -4
  82. package/types/props.d.ts +0 -20
  83. package/types/styled.d.ts +0 -10
@@ -0,0 +1,148 @@
1
+ var __create = Object.create;
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __getProtoOf = Object.getPrototypeOf;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __markAsModule = (target) => __defProp(target, "__esModule", { value: true });
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __reExport = (target, module2, copyDefault, desc) => {
13
+ if (module2 && typeof module2 === "object" || typeof module2 === "function") {
14
+ for (let key of __getOwnPropNames(module2))
15
+ if (!__hasOwnProp.call(target, key) && (copyDefault || key !== "default"))
16
+ __defProp(target, key, { get: () => module2[key], enumerable: !(desc = __getOwnPropDesc(module2, key)) || desc.enumerable });
17
+ }
18
+ return target;
19
+ };
20
+ var __toESM = (module2, isNodeMode) => {
21
+ return __reExport(__markAsModule(__defProp(module2 != null ? __create(__getProtoOf(module2)) : {}, "default", !isNodeMode && module2 && module2.__esModule ? { get: () => module2.default, enumerable: true } : { value: module2, enumerable: true })), module2);
22
+ };
23
+ var __toCommonJS = /* @__PURE__ */ ((cache) => {
24
+ return (module2, temp) => {
25
+ return cache && cache.get(module2) || (temp = __reExport(__markAsModule({}), module2, 1), cache && cache.set(module2, temp), temp);
26
+ };
27
+ })(typeof WeakMap !== "undefined" ? /* @__PURE__ */ new WeakMap() : 0);
28
+ var Paginator_exports = {};
29
+ __export(Paginator_exports, {
30
+ default: () => Paginator_default
31
+ });
32
+ var React = __toESM(require("react"));
33
+ var import_react = __toESM(require("react"));
34
+ var import_ds_icons = require("@elliemae/ds-icons");
35
+ var import_ds_utilities = require("@elliemae/ds-utilities");
36
+ var import_ds_grid = require("@elliemae/ds-grid");
37
+ var import_ds_dropdownmenu = require("@elliemae/ds-dropdownmenu");
38
+ var import_ds_truncated_tooltip_text = require("@elliemae/ds-truncated-tooltip-text");
39
+ var import_styled = require("../styled");
40
+ var import_usePaginationSearch = require("../hooks/usePaginationSearch");
41
+ const Paginator = (props) => {
42
+ const { pageIndex, pageCount, onPageChange, pageDetails, pageDetailsTitle } = props;
43
+ const [isOpened, setIsOpened] = (0, import_react.useState)(false);
44
+ const btnRef = (0, import_react.useRef)(null);
45
+ const pageInfoRef = (0, import_react.useRef)(null);
46
+ const { width: btnWidth } = (0, import_ds_utilities.useOnElementResize)(btnRef);
47
+ const { width: txtWidth } = (0, import_ds_utilities.useOnElementResize)(pageInfoRef);
48
+ const options = (0, import_react.useMemo)(() => new Array(pageCount).fill(0).map((_, index) => {
49
+ const option = {
50
+ dsId: (index + 1).toString(),
51
+ label: (index + 1).toString(),
52
+ value: index + 1,
53
+ type: "single"
54
+ };
55
+ if (pageDetails?.length) {
56
+ option.render = () => /* @__PURE__ */ import_react.default.createElement(import_ds_grid.Grid, {
57
+ cols: ["16px", `${txtWidth + 16}px`, "auto"],
58
+ gutter: "xxs",
59
+ alignItems: "center"
60
+ }, pageIndex === index ? /* @__PURE__ */ import_react.default.createElement(import_ds_icons.Checkmark, {
61
+ size: "s",
62
+ color: ["brand-primary", "600"]
63
+ }) : /* @__PURE__ */ import_react.default.createElement("div", null), /* @__PURE__ */ import_react.default.createElement("span", null, index + 1), /* @__PURE__ */ import_react.default.createElement("span", {
64
+ style: {
65
+ whiteSpace: "nowrap",
66
+ textOverflow: "ellipsis",
67
+ overflow: "hidden"
68
+ }
69
+ }, pageDetails[index]));
70
+ }
71
+ return option;
72
+ }), [pageCount, pageDetails, pageIndex, txtWidth]);
73
+ const actionRef = (0, import_react.useRef)({});
74
+ (0, import_react.useEffect)(() => {
75
+ if (isOpened) {
76
+ actionRef.current.setActiveDescendant((pageIndex + 1).toString());
77
+ actionRef.current.scrollOptionIntoView((pageIndex + 1).toString());
78
+ }
79
+ }, [isOpened]);
80
+ const [detailWidth, setDetailWidth] = (0, import_react.useState)(0);
81
+ (0, import_react.useLayoutEffect)(() => {
82
+ const invisibleDetails = [
83
+ ...document.body.querySelectorAll('[data-testid="ds-pagination-invisible-detail-for-width-calc"]')
84
+ ];
85
+ const maxWidth = invisibleDetails.reduce((acc, cur) => Math.max(acc, cur.getBoundingClientRect().width), 0);
86
+ setDetailWidth(maxWidth);
87
+ }, [pageDetails]);
88
+ const onKeyDown = (0, import_usePaginationSearch.usePaginationSearch)(pageCount, actionRef);
89
+ return /* @__PURE__ */ import_react.default.createElement(import_react.default.Fragment, null, /* @__PURE__ */ import_react.default.createElement(import_styled.PaginationSeparator, null), /* @__PURE__ */ import_react.default.createElement(import_ds_dropdownmenu.DSDropdownMenuV2, {
90
+ isOpened,
91
+ options,
92
+ selectedOptions: { [(pageIndex + 1).toString()]: true },
93
+ onOptionClick: (_, clickedOption) => {
94
+ onPageChange(clickedOption.value);
95
+ setIsOpened(false);
96
+ btnRef.current?.focus();
97
+ },
98
+ onClickOutside: () => {
99
+ setIsOpened(false);
100
+ btnRef.current?.focus();
101
+ },
102
+ customOffset: [-23, 2],
103
+ startPlacementPreference: "top-start",
104
+ actionRef,
105
+ onKeyDown,
106
+ minWidth: pageDetails.length !== 0 ? btnWidth + 23 : pageCount.toString().length * 6 + 90,
107
+ maxHeight: 300,
108
+ HeaderComp: () => pageDetailsTitle !== "" ? /* @__PURE__ */ import_react.default.createElement(import_ds_grid.Grid, {
109
+ cols: [`${txtWidth + 50}px`, "8px", "auto"]
110
+ }, /* @__PURE__ */ import_react.default.createElement("span", {
111
+ style: { marginLeft: "8px" }
112
+ }, "Page"), /* @__PURE__ */ import_react.default.createElement(import_styled.PaginationSeparator, {
113
+ height: "100%"
114
+ }), /* @__PURE__ */ import_react.default.createElement("span", null, pageDetailsTitle)) : "Page"
115
+ }, /* @__PURE__ */ import_react.default.createElement(import_styled.PaginationDropdownButton, {
116
+ buttonType: "raw",
117
+ onClick: () => setIsOpened((prev) => !prev),
118
+ innerRef: btnRef
119
+ }, /* @__PURE__ */ import_react.default.createElement(import_ds_grid.Grid, {
120
+ gutter: "xxs",
121
+ alignItems: "center",
122
+ cols: pageDetails.length !== 0 ? ["auto", "min-content", "minmax(0px, 70%)", "min-content"] : ["auto", "min-content"]
123
+ }, /* @__PURE__ */ import_react.default.createElement(import_ds_grid.Grid, {
124
+ alignItems: "center",
125
+ gutter: "xxxs",
126
+ ref: pageInfoRef,
127
+ style: { gridAutoFlow: "column" }
128
+ }, /* @__PURE__ */ import_react.default.createElement(import_styled.PaginationBoldText, {
129
+ fontSize: "18px"
130
+ }, pageIndex + 1), " / ", pageCount), pageDetails.length !== 0 && /* @__PURE__ */ import_react.default.createElement(import_react.default.Fragment, null, /* @__PURE__ */ import_react.default.createElement(import_styled.PaginationSeparator, {
131
+ height: "12px",
132
+ ml: "8px"
133
+ }), /* @__PURE__ */ import_react.default.createElement(import_styled.PaginationBoldText, {
134
+ fontSize: "13px",
135
+ w: detailWidth,
136
+ mr: "xxs",
137
+ display: "grid"
138
+ }, /* @__PURE__ */ import_react.default.createElement(import_ds_truncated_tooltip_text.SimpleTruncatedTooltipText, {
139
+ value: pageDetails[pageIndex]
140
+ }, pageDetails[pageIndex]), pageDetails.map((pageDetail) => /* @__PURE__ */ import_react.default.createElement(import_styled.InvisibleDetail, {
141
+ "data-testid": "ds-pagination-invisible-detail-for-width-calc"
142
+ }, pageDetail)))), /* @__PURE__ */ import_react.default.createElement(import_ds_icons.ChevronDown, {
143
+ color: ["brand-primary", "700"]
144
+ })))), /* @__PURE__ */ import_react.default.createElement(import_styled.PaginationSeparator, null));
145
+ };
146
+ var Paginator_default = Paginator;
147
+ module.exports = __toCommonJS(Paginator_exports);
148
+ //# sourceMappingURL=Paginator.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/parts/Paginator.tsx", "../../../../../scripts/build/transpile/react-shim.js"],
4
+ "sourcesContent": ["/* eslint-disable react/prop-types */\nimport React, { useEffect, useLayoutEffect, useMemo, useRef, useState } from 'react';\nimport { Checkmark, ChevronDown } from '@elliemae/ds-icons';\nimport { useOnElementResize } from '@elliemae/ds-utilities';\nimport { Grid } from '@elliemae/ds-grid';\nimport { DSDropdownMenuV2 } from '@elliemae/ds-dropdownmenu';\nimport { SimpleTruncatedTooltipText } from '@elliemae/ds-truncated-tooltip-text';\nimport {\n InvisibleDetail,\n PaginationBoldText,\n PaginationDetail,\n PaginationDropdownButton,\n PaginationSeparator,\n} from '../styled';\nimport { usePaginationSearch } from '../hooks/usePaginationSearch';\n\ninterface PaginatorPropsT {\n pageIndex: number;\n pageCount: number;\n onPageChange: (page: number) => void;\n pageDetails: string[];\n pageDetailsTitle: string;\n}\n\nconst Paginator: React.ComponentType<PaginatorPropsT> = (props) => {\n const { pageIndex, pageCount, onPageChange, pageDetails, pageDetailsTitle } = props;\n\n const [isOpened, setIsOpened] = useState(false);\n\n const btnRef = useRef<HTMLButtonElement>(null);\n const pageInfoRef = useRef<HTMLDivElement>(null);\n\n const { width: btnWidth } = useOnElementResize(btnRef);\n const { width: txtWidth } = useOnElementResize(pageInfoRef);\n\n const options = useMemo(\n () =>\n new Array(pageCount).fill(0).map((_, index) => {\n const option: Record<string, unknown> = {\n dsId: (index + 1).toString(),\n label: (index + 1).toString(),\n value: index + 1,\n type: 'single',\n };\n if (pageDetails?.length) {\n option.render = () => (\n <Grid cols={['16px', `${txtWidth + 16}px`, 'auto']} gutter=\"xxs\" alignItems=\"center\">\n {pageIndex === index ? <Checkmark size=\"s\" color={['brand-primary', '600']} /> : <div />}\n <span>{index + 1}</span>\n <span\n style={{\n whiteSpace: 'nowrap',\n textOverflow: 'ellipsis',\n overflow: 'hidden',\n }}\n >\n {pageDetails[index]}\n </span>\n </Grid>\n );\n }\n return option;\n }),\n [pageCount, pageDetails, pageIndex, txtWidth],\n );\n\n const actionRef = useRef<Record<string, (dsId: string) => void>>({});\n\n useEffect(() => {\n if (isOpened) {\n actionRef.current.setActiveDescendant((pageIndex + 1).toString());\n actionRef.current.scrollOptionIntoView((pageIndex + 1).toString());\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [isOpened]);\n\n const [detailWidth, setDetailWidth] = useState(0);\n\n useLayoutEffect(() => {\n const invisibleDetails = [\n ...document.body.querySelectorAll('[data-testid=\"ds-pagination-invisible-detail-for-width-calc\"]'),\n ] as HTMLDivElement[];\n const maxWidth = invisibleDetails.reduce((acc, cur) => Math.max(acc, cur.getBoundingClientRect().width), 0);\n setDetailWidth(maxWidth);\n }, [pageDetails]);\n\n const onKeyDown = usePaginationSearch(pageCount, actionRef);\n\n return (\n <>\n <PaginationSeparator />\n <DSDropdownMenuV2\n isOpened={isOpened}\n options={options}\n selectedOptions={{ [(pageIndex + 1).toString()]: true }}\n onOptionClick={(_, clickedOption) => {\n onPageChange(clickedOption.value);\n setIsOpened(false);\n btnRef.current?.focus();\n }}\n onClickOutside={() => {\n setIsOpened(false);\n btnRef.current?.focus();\n }}\n customOffset={[-23, 2]}\n startPlacementPreference=\"top-start\"\n actionRef={actionRef}\n onKeyDown={onKeyDown}\n minWidth={pageDetails.length !== 0 ? btnWidth + 23 : pageCount.toString().length * 6 + 90}\n maxHeight={300}\n HeaderComp={() =>\n pageDetailsTitle !== '' ? (\n <Grid cols={[`${txtWidth + 50}px`, '8px', 'auto']}>\n <span style={{ marginLeft: '8px' }}>Page</span>\n <PaginationSeparator height=\"100%\" />\n <span>{pageDetailsTitle}</span>\n </Grid>\n ) : (\n 'Page'\n )\n }\n >\n <PaginationDropdownButton buttonType=\"raw\" onClick={() => setIsOpened((prev) => !prev)} innerRef={btnRef}>\n <Grid\n gutter=\"xxs\"\n alignItems=\"center\"\n cols={\n pageDetails.length !== 0\n ? ['auto', 'min-content', 'minmax(0px, 70%)', 'min-content']\n : ['auto', 'min-content']\n }\n >\n <Grid alignItems=\"center\" gutter=\"xxxs\" ref={pageInfoRef} style={{ gridAutoFlow: 'column' }}>\n <PaginationBoldText fontSize=\"18px\">{pageIndex + 1}</PaginationBoldText> / {pageCount}\n </Grid>\n {pageDetails.length !== 0 && (\n <>\n <PaginationSeparator height=\"12px\" ml=\"8px\" />\n <PaginationBoldText fontSize=\"13px\" w={detailWidth} mr=\"xxs\" display=\"grid\">\n <SimpleTruncatedTooltipText value={pageDetails[pageIndex]}>\n {pageDetails[pageIndex]}\n </SimpleTruncatedTooltipText>\n {pageDetails.map((pageDetail) => (\n <InvisibleDetail data-testid=\"ds-pagination-invisible-detail-for-width-calc\">\n {pageDetail}\n </InvisibleDetail>\n ))}\n </PaginationBoldText>\n </>\n )}\n <ChevronDown color={['brand-primary', '700']} />\n </Grid>\n </PaginationDropdownButton>\n </DSDropdownMenuV2>\n <PaginationSeparator />\n </>\n );\n};\n\nexport default Paginator;\n", "import * as React from 'react';\nexport { React };\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }
@@ -0,0 +1,106 @@
1
+ var __create = Object.create;
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __getProtoOf = Object.getPrototypeOf;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __markAsModule = (target) => __defProp(target, "__esModule", { value: true });
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __reExport = (target, module2, copyDefault, desc) => {
13
+ if (module2 && typeof module2 === "object" || typeof module2 === "function") {
14
+ for (let key of __getOwnPropNames(module2))
15
+ if (!__hasOwnProp.call(target, key) && (copyDefault || key !== "default"))
16
+ __defProp(target, key, { get: () => module2[key], enumerable: !(desc = __getOwnPropDesc(module2, key)) || desc.enumerable });
17
+ }
18
+ return target;
19
+ };
20
+ var __toESM = (module2, isNodeMode) => {
21
+ return __reExport(__markAsModule(__defProp(module2 != null ? __create(__getProtoOf(module2)) : {}, "default", !isNodeMode && module2 && module2.__esModule ? { get: () => module2.default, enumerable: true } : { value: module2, enumerable: true })), module2);
22
+ };
23
+ var __toCommonJS = /* @__PURE__ */ ((cache) => {
24
+ return (module2, temp) => {
25
+ return cache && cache.get(module2) || (temp = __reExport(__markAsModule({}), module2, 1), cache && cache.set(module2, temp), temp);
26
+ };
27
+ })(typeof WeakMap !== "undefined" ? /* @__PURE__ */ new WeakMap() : 0);
28
+ var PerPageSelector_exports = {};
29
+ __export(PerPageSelector_exports, {
30
+ default: () => PerPageSelector_default
31
+ });
32
+ var React = __toESM(require("react"));
33
+ var import_react = __toESM(require("react"));
34
+ var import_memoize_one = __toESM(require("memoize-one"));
35
+ var import_ds_utilities = require("@elliemae/ds-utilities");
36
+ var import_ds_dropdownmenu = require("@elliemae/ds-dropdownmenu");
37
+ var import_ds_icons = require("@elliemae/ds-icons");
38
+ var import_styled = require("../styled");
39
+ const generateOption = (value) => {
40
+ if (typeof value === "object") {
41
+ return value;
42
+ }
43
+ return {
44
+ dsId: value.toString(),
45
+ value,
46
+ label: value.toString(),
47
+ type: "single"
48
+ };
49
+ };
50
+ const getOptions = (0, import_memoize_one.default)((step, min, max) => {
51
+ const options = (0, import_ds_utilities.range)(min, max + step, step).map(generateOption);
52
+ return min === 0 ? options.slice(1, options.length) : options;
53
+ });
54
+ const PerPageSelector = (props) => {
55
+ const [isOpened, setIsOpened] = (0, import_react.useState)(false);
56
+ const { pageSize, onPageSizeChange, perPageOptions, maxPerPage, perPageStep, minPerPage } = props;
57
+ const options = (0, import_react.useMemo)(() => {
58
+ if (perPageOptions)
59
+ return perPageOptions.map(generateOption);
60
+ return getOptions(perPageStep, minPerPage, maxPerPage);
61
+ }, [maxPerPage, minPerPage, perPageOptions, perPageStep]);
62
+ const actionRef = (0, import_react.useRef)({});
63
+ const btnRef = (0, import_react.useRef)(null);
64
+ (0, import_react.useEffect)(() => {
65
+ if (isOpened) {
66
+ actionRef.current.setActiveDescendant(pageSize.toString());
67
+ actionRef.current.scrollOptionIntoView(pageSize.toString());
68
+ }
69
+ }, [isOpened]);
70
+ const width = (0, import_react.useMemo)(() => {
71
+ const maxLength = options.reduce((acc, cur) => Math.max(acc, cur?.label?.length ?? 0), 0);
72
+ return maxLength * 6 + 90;
73
+ }, [options]);
74
+ return /* @__PURE__ */ import_react.default.createElement(import_ds_dropdownmenu.DSDropdownMenuV2, {
75
+ isOpened,
76
+ options,
77
+ selectedOptions: { [pageSize.toString()]: true },
78
+ onOptionClick: (_, clickedOption) => {
79
+ onPageSizeChange(clickedOption.value);
80
+ setIsOpened(false);
81
+ btnRef.current?.focus();
82
+ },
83
+ onClickOutside: () => {
84
+ setIsOpened(false);
85
+ btnRef.current?.focus();
86
+ },
87
+ customOffset: [10, 2],
88
+ startPlacementPreference: "top-start",
89
+ actionRef,
90
+ minWidth: width,
91
+ maxHeight: 300,
92
+ HeaderComp: () => "Per Page"
93
+ }, /* @__PURE__ */ import_react.default.createElement("div", {
94
+ style: { marginLeft: "32px" }
95
+ }, /* @__PURE__ */ import_react.default.createElement(import_styled.PaginationDropdownButton, {
96
+ buttonType: "raw",
97
+ onClick: () => setIsOpened((prev) => !prev),
98
+ "aria-pressed": isOpened,
99
+ innerRef: btnRef
100
+ }, pageSize, " / page", /* @__PURE__ */ import_react.default.createElement(import_ds_icons.ChevronDown, {
101
+ color: ["brand-primary", "700"]
102
+ }))));
103
+ };
104
+ var PerPageSelector_default = PerPageSelector;
105
+ module.exports = __toCommonJS(PerPageSelector_exports);
106
+ //# sourceMappingURL=PerPageSelector.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/parts/PerPageSelector.tsx", "../../../../../scripts/build/transpile/react-shim.js"],
4
+ "sourcesContent": ["/* eslint-disable react/prop-types */\nimport React, { useEffect, useMemo, useRef, useState } from 'react';\nimport memoize from 'memoize-one';\nimport { range } from '@elliemae/ds-utilities';\nimport { DSDropdownMenuV2 } from '@elliemae/ds-dropdownmenu';\nimport { ChevronDown } from '@elliemae/ds-icons';\nimport { DSPaginationProps } from '../index.d';\nimport { PaginationDropdownButton } from '../styled';\n\nconst generateOption = (value: number | Record<string, unknown>) => {\n if (typeof value === 'object') {\n return value;\n }\n return {\n dsId: value.toString(),\n value,\n label: value.toString(),\n type: 'single',\n };\n};\n\nconst getOptions = memoize((step: number, min: number, max: number) => {\n const options = range(min, max + step, step).map(generateOption);\n return min === 0 ? options.slice(1, options.length) : options;\n});\n\nconst PerPageSelector: React.ComponentType<\n Required<\n Pick<\n DSPaginationProps,\n 'pageSize' | 'onPageSizeChange' | 'perPageOptions' | 'perPageStep' | 'minPerPage' | 'maxPerPage'\n >\n >\n> = (props) => {\n const [isOpened, setIsOpened] = useState(false);\n const { pageSize, onPageSizeChange, perPageOptions, maxPerPage, perPageStep, minPerPage } = props;\n\n const options = useMemo(() => {\n if (perPageOptions) return perPageOptions.map(generateOption);\n return getOptions(perPageStep, minPerPage, maxPerPage);\n }, [maxPerPage, minPerPage, perPageOptions, perPageStep]);\n\n const actionRef = useRef<Record<string, (dsId: string) => void>>({});\n const btnRef = useRef<HTMLButtonElement>(null);\n\n useEffect(() => {\n if (isOpened) {\n actionRef.current.setActiveDescendant(pageSize.toString());\n actionRef.current.scrollOptionIntoView(pageSize.toString());\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [isOpened]);\n\n const width = useMemo(() => {\n const maxLength = options.reduce((acc, cur) => Math.max(acc, (cur?.label as string)?.length ?? 0), 0);\n return maxLength * 6 + 90;\n }, [options]);\n\n return (\n <DSDropdownMenuV2\n isOpened={isOpened}\n options={options}\n selectedOptions={{ [pageSize.toString()]: true }}\n onOptionClick={(_, clickedOption) => {\n onPageSizeChange(clickedOption.value);\n setIsOpened(false);\n btnRef.current?.focus();\n }}\n onClickOutside={() => {\n setIsOpened(false);\n btnRef.current?.focus();\n }}\n customOffset={[10, 2]}\n startPlacementPreference=\"top-start\"\n actionRef={actionRef}\n minWidth={width}\n maxHeight={300}\n HeaderComp={() => 'Per Page'}\n >\n <div style={{ marginLeft: '32px' }}>\n <PaginationDropdownButton\n buttonType=\"raw\"\n onClick={() => setIsOpened((prev) => !prev)}\n aria-pressed={isOpened}\n innerRef={btnRef}\n >\n {pageSize} / page\n <ChevronDown color={['brand-primary', '700']} />\n </PaginationDropdownButton>\n </div>\n </DSDropdownMenuV2>\n );\n};\n\nexport default PerPageSelector;\n", "import * as React from 'react';\nexport { React };\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADCvB,mBAA4D;AAC5D,yBAAoB;AACpB,0BAAsB;AACtB,6BAAiC;AACjC,sBAA4B;AAE5B,oBAAyC;AAEzC,MAAM,iBAAiB,CAAC,UAA4C;AAClE,MAAI,OAAO,UAAU,UAAU;AAC7B,WAAO;AAAA;AAET,SAAO;AAAA,IACL,MAAM,MAAM;AAAA,IACZ;AAAA,IACA,OAAO,MAAM;AAAA,IACb,MAAM;AAAA;AAAA;AAIV,MAAM,aAAa,gCAAQ,CAAC,MAAc,KAAa,QAAgB;AACrE,QAAM,UAAU,+BAAM,KAAK,MAAM,MAAM,MAAM,IAAI;AACjD,SAAO,QAAQ,IAAI,QAAQ,MAAM,GAAG,QAAQ,UAAU;AAAA;AAGxD,MAAM,kBAOF,CAAC,UAAU;AACb,QAAM,CAAC,UAAU,eAAe,2BAAS;AACzC,QAAM,EAAE,UAAU,kBAAkB,gBAAgB,YAAY,aAAa,eAAe;AAE5F,QAAM,UAAU,0BAAQ,MAAM;AAC5B,QAAI;AAAgB,aAAO,eAAe,IAAI;AAC9C,WAAO,WAAW,aAAa,YAAY;AAAA,KAC1C,CAAC,YAAY,YAAY,gBAAgB;AAE5C,QAAM,YAAY,yBAA+C;AACjE,QAAM,SAAS,yBAA0B;AAEzC,8BAAU,MAAM;AACd,QAAI,UAAU;AACZ,gBAAU,QAAQ,oBAAoB,SAAS;AAC/C,gBAAU,QAAQ,qBAAqB,SAAS;AAAA;AAAA,KAGjD,CAAC;AAEJ,QAAM,QAAQ,0BAAQ,MAAM;AAC1B,UAAM,YAAY,QAAQ,OAAO,CAAC,KAAK,QAAQ,KAAK,IAAI,KAAM,KAAK,OAAkB,UAAU,IAAI;AACnG,WAAO,YAAY,IAAI;AAAA,KACtB,CAAC;AAEJ,SACE,mDAAC,yCAAD;AAAA,IACE;AAAA,IACA;AAAA,IACA,iBAAiB,GAAG,SAAS,aAAa;AAAA,IAC1C,eAAe,CAAC,GAAG,kBAAkB;AACnC,uBAAiB,cAAc;AAC/B,kBAAY;AACZ,aAAO,SAAS;AAAA;AAAA,IAElB,gBAAgB,MAAM;AACpB,kBAAY;AACZ,aAAO,SAAS;AAAA;AAAA,IAElB,cAAc,CAAC,IAAI;AAAA,IACnB,0BAAyB;AAAA,IACzB;AAAA,IACA,UAAU;AAAA,IACV,WAAW;AAAA,IACX,YAAY,MAAM;AAAA,KAElB,mDAAC,OAAD;AAAA,IAAK,OAAO,EAAE,YAAY;AAAA,KACxB,mDAAC,wCAAD;AAAA,IACE,YAAW;AAAA,IACX,SAAS,MAAM,YAAY,CAAC,SAAS,CAAC;AAAA,IACtC,gBAAc;AAAA,IACd,UAAU;AAAA,KAET,UAAS,WACV,mDAAC,6BAAD;AAAA,IAAa,OAAO,CAAC,iBAAiB;AAAA;AAAA;AAOhD,IAAO,0BAAQ;",
6
+ "names": []
7
+ }
@@ -0,0 +1,82 @@
1
+ var __create = Object.create;
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __getProtoOf = Object.getPrototypeOf;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __markAsModule = (target) => __defProp(target, "__esModule", { value: true });
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __reExport = (target, module2, copyDefault, desc) => {
13
+ if (module2 && typeof module2 === "object" || typeof module2 === "function") {
14
+ for (let key of __getOwnPropNames(module2))
15
+ if (!__hasOwnProp.call(target, key) && (copyDefault || key !== "default"))
16
+ __defProp(target, key, { get: () => module2[key], enumerable: !(desc = __getOwnPropDesc(module2, key)) || desc.enumerable });
17
+ }
18
+ return target;
19
+ };
20
+ var __toESM = (module2, isNodeMode) => {
21
+ return __reExport(__markAsModule(__defProp(module2 != null ? __create(__getProtoOf(module2)) : {}, "default", !isNodeMode && module2 && module2.__esModule ? { get: () => module2.default, enumerable: true } : { value: module2, enumerable: true })), module2);
22
+ };
23
+ var __toCommonJS = /* @__PURE__ */ ((cache) => {
24
+ return (module2, temp) => {
25
+ return cache && cache.get(module2) || (temp = __reExport(__markAsModule({}), module2, 1), cache && cache.set(module2, temp), temp);
26
+ };
27
+ })(typeof WeakMap !== "undefined" ? /* @__PURE__ */ new WeakMap() : 0);
28
+ var props_exports = {};
29
+ __export(props_exports, {
30
+ defaultProps: () => defaultProps,
31
+ propTypes: () => propTypes
32
+ });
33
+ var React = __toESM(require("react"));
34
+ var import_ds_props_helpers = require("@elliemae/ds-props-helpers");
35
+ const emptyFunc = () => null;
36
+ const propTypes = {
37
+ pageCount: import_ds_props_helpers.PropTypes.number.description("How many pages are there"),
38
+ pageIndex: import_ds_props_helpers.PropTypes.number.description("Index of the current page, starting from 1").defaultValue(1),
39
+ canPreviousPage: import_ds_props_helpers.PropTypes.bool.description("Whether the previous button is disabled or not").defaultValue(true),
40
+ canNextPage: import_ds_props_helpers.PropTypes.bool.description("Whether the next button is disabled or not").defaultValue(true),
41
+ pageSize: import_ds_props_helpers.PropTypes.number.description("The current page size").defaultValue(10),
42
+ showPerPageSelector: import_ds_props_helpers.PropTypes.bool.description("Whether to show the page selector").defaultValue(true),
43
+ perPageOptions: import_ds_props_helpers.PropTypes.arrayOf(import_ds_props_helpers.PropTypes.oneOfType([
44
+ import_ds_props_helpers.PropTypes.number,
45
+ import_ds_props_helpers.PropTypes.shape({
46
+ dsId: import_ds_props_helpers.PropTypes.string,
47
+ value: import_ds_props_helpers.PropTypes.number,
48
+ label: import_ds_props_helpers.PropTypes.string,
49
+ type: import_ds_props_helpers.PropTypes.oneOf(["single"])
50
+ })
51
+ ])).description("The available options for page size").defaultValue([10]),
52
+ perPageStep: import_ds_props_helpers.PropTypes.number.description("Step for the per page options").defaultValue(5),
53
+ minPerPage: import_ds_props_helpers.PropTypes.number.description("Step for the per page options").defaultValue(0),
54
+ maxPerPage: import_ds_props_helpers.PropTypes.number.description("Step for the per page options").defaultValue(100),
55
+ onPageSizeChange: import_ds_props_helpers.PropTypes.func.description("Function invoked when the page size changes").defaultValue(() => null),
56
+ onPreviousPage: import_ds_props_helpers.PropTypes.func.description("Function invoked when the previous button is pressed").defaultValue(() => null),
57
+ onPageChange: import_ds_props_helpers.PropTypes.func.description("Function invoked when the page changes").defaultValue(() => null),
58
+ onNextPage: import_ds_props_helpers.PropTypes.func.description("Function invoked when next button is pressed").defaultValue(() => null),
59
+ pageDetails: import_ds_props_helpers.PropTypes.arrayOf(import_ds_props_helpers.PropTypes.string).description("Details to provide for each page").defaultValue([]),
60
+ pageDetailsTitle: import_ds_props_helpers.PropTypes.string.description("The title of the details (usually a column of your dataset)").defaultValue(""),
61
+ width: import_ds_props_helpers.PropTypes.any.description("Width for the container of the pagination").defaultValue("100%")
62
+ };
63
+ const defaultProps = {
64
+ pageIndex: 1,
65
+ canPreviousPage: true,
66
+ canNextPage: true,
67
+ pageSize: 10,
68
+ showPerPageSelector: true,
69
+ perPageOptions: [10],
70
+ perPageStep: 5,
71
+ minPerPage: 0,
72
+ maxPerPage: 100,
73
+ onPageSizeChange: emptyFunc,
74
+ onPreviousPage: emptyFunc,
75
+ onNextPage: emptyFunc,
76
+ onPageChange: emptyFunc,
77
+ pageDetails: [],
78
+ pageDetailsTitle: "",
79
+ width: "100%"
80
+ };
81
+ module.exports = __toCommonJS(props_exports);
82
+ //# sourceMappingURL=props.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/props.tsx", "../../../../scripts/build/transpile/react-shim.js"],
4
+ "sourcesContent": ["import { PropTypes } from '@elliemae/ds-props-helpers';\nimport { WeakValidationMap } from 'react';\n\nconst emptyFunc = () => null;\n\nexport const propTypes = {\n pageCount: PropTypes.number.description('How many pages are there'),\n pageIndex: PropTypes.number.description('Index of the current page, starting from 1').defaultValue(1),\n canPreviousPage: PropTypes.bool.description('Whether the previous button is disabled or not').defaultValue(true),\n canNextPage: PropTypes.bool.description('Whether the next button is disabled or not').defaultValue(true),\n pageSize: PropTypes.number.description('The current page size').defaultValue(10),\n showPerPageSelector: PropTypes.bool.description('Whether to show the page selector').defaultValue(true),\n perPageOptions: PropTypes.arrayOf(\n PropTypes.oneOfType([\n PropTypes.number,\n PropTypes.shape({\n dsId: PropTypes.string,\n value: PropTypes.number,\n label: PropTypes.string,\n type: PropTypes.oneOf(['single']),\n }),\n ]),\n )\n .description('The available options for page size')\n .defaultValue([10]),\n perPageStep: PropTypes.number.description('Step for the per page options').defaultValue(5),\n minPerPage: PropTypes.number.description('Step for the per page options').defaultValue(0),\n maxPerPage: PropTypes.number.description('Step for the per page options').defaultValue(100),\n onPageSizeChange: PropTypes.func.description('Function invoked when the page size changes').defaultValue(() => null),\n onPreviousPage: PropTypes.func\n .description('Function invoked when the previous button is pressed')\n .defaultValue(() => null),\n onPageChange: PropTypes.func.description('Function invoked when the page changes').defaultValue(() => null),\n onNextPage: PropTypes.func.description('Function invoked when next button is pressed').defaultValue(() => null),\n pageDetails: PropTypes.arrayOf(PropTypes.string).description('Details to provide for each page').defaultValue([]),\n pageDetailsTitle: PropTypes.string\n .description('The title of the details (usually a column of your dataset)')\n .defaultValue(''),\n width: PropTypes.any.description('Width for the container of the pagination').defaultValue('100%'),\n} as WeakValidationMap<unknown>;\n\nexport const defaultProps = {\n pageIndex: 1,\n canPreviousPage: true,\n canNextPage: true,\n pageSize: 10,\n showPerPageSelector: true,\n perPageOptions: [10],\n perPageStep: 5,\n minPerPage: 0,\n maxPerPage: 100,\n onPageSizeChange: emptyFunc,\n onPreviousPage: emptyFunc,\n onNextPage: emptyFunc,\n onPageChange: emptyFunc,\n pageDetails: [],\n pageDetailsTitle: '',\n width: '100%',\n};\n", "import * as React from 'react';\nexport { React };\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADAvB,8BAA0B;AAG1B,MAAM,YAAY,MAAM;AAEjB,MAAM,YAAY;AAAA,EACvB,WAAW,kCAAU,OAAO,YAAY;AAAA,EACxC,WAAW,kCAAU,OAAO,YAAY,8CAA8C,aAAa;AAAA,EACnG,iBAAiB,kCAAU,KAAK,YAAY,kDAAkD,aAAa;AAAA,EAC3G,aAAa,kCAAU,KAAK,YAAY,8CAA8C,aAAa;AAAA,EACnG,UAAU,kCAAU,OAAO,YAAY,yBAAyB,aAAa;AAAA,EAC7E,qBAAqB,kCAAU,KAAK,YAAY,qCAAqC,aAAa;AAAA,EAClG,gBAAgB,kCAAU,QACxB,kCAAU,UAAU;AAAA,IAClB,kCAAU;AAAA,IACV,kCAAU,MAAM;AAAA,MACd,MAAM,kCAAU;AAAA,MAChB,OAAO,kCAAU;AAAA,MACjB,OAAO,kCAAU;AAAA,MACjB,MAAM,kCAAU,MAAM,CAAC;AAAA;AAAA,MAI1B,YAAY,uCACZ,aAAa,CAAC;AAAA,EACjB,aAAa,kCAAU,OAAO,YAAY,iCAAiC,aAAa;AAAA,EACxF,YAAY,kCAAU,OAAO,YAAY,iCAAiC,aAAa;AAAA,EACvF,YAAY,kCAAU,OAAO,YAAY,iCAAiC,aAAa;AAAA,EACvF,kBAAkB,kCAAU,KAAK,YAAY,+CAA+C,aAAa,MAAM;AAAA,EAC/G,gBAAgB,kCAAU,KACvB,YAAY,wDACZ,aAAa,MAAM;AAAA,EACtB,cAAc,kCAAU,KAAK,YAAY,0CAA0C,aAAa,MAAM;AAAA,EACtG,YAAY,kCAAU,KAAK,YAAY,gDAAgD,aAAa,MAAM;AAAA,EAC1G,aAAa,kCAAU,QAAQ,kCAAU,QAAQ,YAAY,oCAAoC,aAAa;AAAA,EAC9G,kBAAkB,kCAAU,OACzB,YAAY,+DACZ,aAAa;AAAA,EAChB,OAAO,kCAAU,IAAI,YAAY,6CAA6C,aAAa;AAAA;AAGtF,MAAM,eAAe;AAAA,EAC1B,WAAW;AAAA,EACX,iBAAiB;AAAA,EACjB,aAAa;AAAA,EACb,UAAU;AAAA,EACV,qBAAqB;AAAA,EACrB,gBAAgB,CAAC;AAAA,EACjB,aAAa;AAAA,EACb,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,kBAAkB;AAAA,EAClB,gBAAgB;AAAA,EAChB,YAAY;AAAA,EACZ,cAAc;AAAA,EACd,aAAa;AAAA,EACb,kBAAkB;AAAA,EAClB,OAAO;AAAA;",
6
+ "names": []
7
+ }
@@ -0,0 +1,130 @@
1
+ var __create = Object.create;
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __getProtoOf = Object.getPrototypeOf;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __markAsModule = (target) => __defProp(target, "__esModule", { value: true });
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __reExport = (target, module2, copyDefault, desc) => {
13
+ if (module2 && typeof module2 === "object" || typeof module2 === "function") {
14
+ for (let key of __getOwnPropNames(module2))
15
+ if (!__hasOwnProp.call(target, key) && (copyDefault || key !== "default"))
16
+ __defProp(target, key, { get: () => module2[key], enumerable: !(desc = __getOwnPropDesc(module2, key)) || desc.enumerable });
17
+ }
18
+ return target;
19
+ };
20
+ var __toESM = (module2, isNodeMode) => {
21
+ return __reExport(__markAsModule(__defProp(module2 != null ? __create(__getProtoOf(module2)) : {}, "default", !isNodeMode && module2 && module2.__esModule ? { get: () => module2.default, enumerable: true } : { value: module2, enumerable: true })), module2);
22
+ };
23
+ var __toCommonJS = /* @__PURE__ */ ((cache) => {
24
+ return (module2, temp) => {
25
+ return cache && cache.get(module2) || (temp = __reExport(__markAsModule({}), module2, 1), cache && cache.set(module2, temp), temp);
26
+ };
27
+ })(typeof WeakMap !== "undefined" ? /* @__PURE__ */ new WeakMap() : 0);
28
+ var styled_exports = {};
29
+ __export(styled_exports, {
30
+ InvisibleDetail: () => InvisibleDetail,
31
+ PaginationBoldText: () => PaginationBoldText,
32
+ PaginationContainer: () => PaginationContainer,
33
+ PaginationDetail: () => PaginationDetail,
34
+ PaginationDropdownButton: () => PaginationDropdownButton,
35
+ PaginationSeparator: () => PaginationSeparator,
36
+ PaginationWrapper: () => PaginationWrapper,
37
+ PreviousNextPageButton: () => PreviousNextPageButton
38
+ });
39
+ var React = __toESM(require("react"));
40
+ var import_ds_grid = require("@elliemae/ds-grid");
41
+ var import_ds_button = require("@elliemae/ds-button");
42
+ var import_styled_components = __toESM(require("styled-components"));
43
+ var import_styled_components2 = require("@xstyled/styled-components");
44
+ var import_ds_system = require("@elliemae/ds-system");
45
+ const styledFocusCss = import_ds_system.css`
46
+ &:after {
47
+ display: block;
48
+ content: ' ';
49
+ position: absolute;
50
+ top: 0;
51
+ left: 0;
52
+ right: 0;
53
+ bottom: 0;
54
+ border: 2px solid ${({ theme }) => theme.colors.brand[700]};
55
+ pointer-events: none;
56
+ z-index: 7;
57
+ }
58
+ `;
59
+ const PaginationContainer = (0, import_styled_components.default)(import_ds_grid.Grid)`
60
+ height: 42px;
61
+ max-width: 100%;
62
+ align-items: center;
63
+ box-shadow: 0 -1px 3px 0 rgba(0, 0, 0, 0.5);
64
+ `;
65
+ const PaginationWrapper = import_styled_components.default.div`
66
+ display: flex;
67
+ justify-content: center;
68
+ align-items: center;
69
+ `;
70
+ const PaginationSeparator = (0, import_styled_components.default)(import_ds_grid.Grid)`
71
+ background-color: ${(props) => props.theme.colors.neutral[300]};
72
+ width: 1px;
73
+ height: ${(props) => props.height || "30px"};
74
+ `;
75
+ const PaginationBoldText = import_styled_components.default.span`
76
+ font-weight: ${(props) => props.theme.fontWeights.semibold};
77
+ ${import_styled_components2.typography}
78
+ ${import_styled_components2.space}
79
+ ${import_styled_components2.sizing}
80
+ ${import_styled_components2.layout}
81
+ position: relative;
82
+ `;
83
+ const InvisibleDetail = import_styled_components.default.div`
84
+ opacity: 0;
85
+ white-space: nowrap;
86
+ overflow: hidden;
87
+ text-overflow: ellipsis;
88
+ position: absolute;
89
+ `;
90
+ const PaginationDetail = import_styled_components.default.span`
91
+ text-align: left;
92
+ white-space: nowrap;
93
+ overflow: hidden;
94
+ text-overflow: ellipsis;
95
+ `;
96
+ const PaginationDropdownButton = (0, import_styled_components.default)(import_ds_button.DSButtonV2)`
97
+ height: 42px;
98
+ display: grid;
99
+ grid-auto-flow: column;
100
+ justify-content: center;
101
+ align-items: center;
102
+ position: relative;
103
+ padding-left: 16px;
104
+ padding-right: 16px;
105
+ grid-gap: 8px;
106
+ font-size: 13px;
107
+ color: ${(props) => props.theme.colors.neutral[700]};
108
+ cursor: pointer;
109
+ border-radius: 0;
110
+ font-weight: ${(props) => props.theme.fontWeights.regular};
111
+ :focus {
112
+ ${styledFocusCss}
113
+ }
114
+ white-space: nowrap;
115
+ `;
116
+ const PreviousNextPageButton = (0, import_styled_components.default)(import_ds_button.DSButtonV2)`
117
+ height: 42px;
118
+ display: grid;
119
+ place-items: center;
120
+ position: relative;
121
+ padding-left: 8px;
122
+ padding-right: 8px;
123
+ border-radius: 0;
124
+ cursor: ${(props) => props.disabled ? "not-allowed" : "pointer"};
125
+ :focus {
126
+ ${styledFocusCss}
127
+ }
128
+ `;
129
+ module.exports = __toCommonJS(styled_exports);
130
+ //# sourceMappingURL=styled.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/styled.tsx", "../../../../scripts/build/transpile/react-shim.js"],
4
+ "sourcesContent": ["import { Grid } from '@elliemae/ds-grid';\nimport { DSButtonV2 } from '@elliemae/ds-button';\nimport styled from 'styled-components';\nimport {\n space,\n typography,\n TypographyProps,\n SpaceProps,\n sizing,\n SizingProps,\n layout,\n LayoutProps,\n} from '@xstyled/styled-components';\nimport { css } from '@elliemae/ds-system';\n\nconst styledFocusCss = css`\n &:after {\n display: block;\n content: ' ';\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n border: 2px solid ${({ theme }) => theme.colors.brand[700]};\n pointer-events: none;\n z-index: 7;\n }\n`;\n\nexport const PaginationContainer = styled(Grid)`\n height: 42px;\n max-width: 100%;\n align-items: center;\n box-shadow: 0 -1px 3px 0 rgba(0, 0, 0, 0.5);\n`;\n\nexport const PaginationWrapper = styled.div`\n display: flex;\n justify-content: center;\n align-items: center;\n`;\n\nexport const PaginationSeparator = styled(Grid)`\n background-color: ${(props) => props.theme.colors.neutral[300]};\n width: 1px;\n height: ${(props) => props.height || '30px'};\n`;\n\nexport const PaginationBoldText = styled.span<TypographyProps & SpaceProps & SizingProps & LayoutProps>`\n font-weight: ${(props) => props.theme.fontWeights.semibold};\n ${typography}\n ${space}\n ${sizing}\n ${layout}\n position: relative;\n`;\n\nexport const InvisibleDetail = styled.div`\n opacity: 0;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n position: absolute;\n`;\n\nexport const PaginationDetail = styled.span`\n text-align: left;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n`;\n\nexport const PaginationDropdownButton = styled(DSButtonV2)`\n height: 42px;\n display: grid;\n grid-auto-flow: column;\n justify-content: center;\n align-items: center;\n position: relative;\n padding-left: 16px;\n padding-right: 16px;\n grid-gap: 8px;\n font-size: 13px;\n color: ${(props) => props.theme.colors.neutral[700]};\n cursor: pointer;\n border-radius: 0;\n font-weight: ${(props) => props.theme.fontWeights.regular};\n :focus {\n ${styledFocusCss}\n }\n white-space: nowrap;\n`;\n\nexport const PreviousNextPageButton = styled(DSButtonV2)`\n height: 42px;\n display: grid;\n place-items: center;\n position: relative;\n padding-left: 8px;\n padding-right: 8px;\n border-radius: 0;\n cursor: ${(props) => (props.disabled ? 'not-allowed' : 'pointer')};\n :focus {\n ${styledFocusCss}\n }\n`;\n", "import * as React from 'react';\nexport { React };\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADAvB,qBAAqB;AACrB,uBAA2B;AAC3B,+BAAmB;AACnB,gCASO;AACP,uBAAoB;AAEpB,MAAM,iBAAiB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,wBASC,CAAC,EAAE,YAAY,MAAM,OAAO,MAAM;AAAA;AAAA;AAAA;AAAA;AAMnD,MAAM,sBAAsB,sCAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAOnC,MAAM,oBAAoB,iCAAO;AAAA;AAAA;AAAA;AAAA;AAMjC,MAAM,sBAAsB,sCAAO;AAAA,sBACpB,CAAC,UAAU,MAAM,MAAM,OAAO,QAAQ;AAAA;AAAA,YAEhD,CAAC,UAAU,MAAM,UAAU;AAAA;AAGhC,MAAM,qBAAqB,iCAAO;AAAA,iBACxB,CAAC,UAAU,MAAM,MAAM,YAAY;AAAA,IAChD;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;AAAA;AAIG,MAAM,kBAAkB,iCAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAQ/B,MAAM,mBAAmB,iCAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAOhC,MAAM,2BAA2B,sCAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,WAWpC,CAAC,UAAU,MAAM,MAAM,OAAO,QAAQ;AAAA;AAAA;AAAA,iBAGhC,CAAC,UAAU,MAAM,MAAM,YAAY;AAAA;AAAA,MAE9C;AAAA;AAAA;AAAA;AAKC,MAAM,yBAAyB,sCAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAQjC,CAAC,UAAW,MAAM,WAAW,gBAAgB;AAAA;AAAA,MAEnD;AAAA;AAAA;",
6
+ "names": []
7
+ }
@@ -0,0 +1,34 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
3
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
4
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
5
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
6
+ var __spreadValues = (a, b) => {
7
+ for (var prop in b || (b = {}))
8
+ if (__hasOwnProp.call(b, prop))
9
+ __defNormalProp(a, prop, b[prop]);
10
+ if (__getOwnPropSymbols)
11
+ for (var prop of __getOwnPropSymbols(b)) {
12
+ if (__propIsEnum.call(b, prop))
13
+ __defNormalProp(a, prop, b[prop]);
14
+ }
15
+ return a;
16
+ };
17
+ import * as React from "react";
18
+ import React2 from "react";
19
+ import { describe, useMemoMergePropsWithDefault, useValidateTypescriptPropTypes } from "@elliemae/ds-props-helpers";
20
+ import { PaginationContent } from "./parts/PaginationContent";
21
+ import { propTypes, defaultProps } from "./props";
22
+ const DSPagination = (props) => {
23
+ const propsWithDefault = useMemoMergePropsWithDefault(props, defaultProps);
24
+ useValidateTypescriptPropTypes(propsWithDefault, propTypes);
25
+ return /* @__PURE__ */ React2.createElement(PaginationContent, __spreadValues({}, propsWithDefault));
26
+ };
27
+ DSPagination.propTypes = propTypes;
28
+ const DSPaginationWithSchema = describe(DSPagination).description("DSPagination");
29
+ DSPaginationWithSchema.propTypes = propTypes;
30
+ export {
31
+ DSPagination,
32
+ DSPaginationWithSchema
33
+ };
34
+ //# sourceMappingURL=Pagination.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../scripts/build/transpile/react-shim.js", "../../src/Pagination.tsx"],
4
+ "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "import React from 'react';\nimport { describe, useMemoMergePropsWithDefault, useValidateTypescriptPropTypes } from '@elliemae/ds-props-helpers';\nimport { PaginationContent } from './parts/PaginationContent';\nimport { propTypes, defaultProps } from './props';\nimport { DSPaginationProps } from './index.d';\n\nconst DSPagination: React.ComponentType<DSPaginationProps> = (props) => {\n const propsWithDefault = useMemoMergePropsWithDefault(props, defaultProps);\n useValidateTypescriptPropTypes(propsWithDefault, propTypes);\n\n return <PaginationContent {...propsWithDefault} />;\n};\n\nDSPagination.propTypes = propTypes;\nconst DSPaginationWithSchema = describe(DSPagination).description('DSPagination');\nDSPaginationWithSchema.propTypes = propTypes;\n\nexport { DSPagination, DSPaginationWithSchema };\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;AAAA;ACAA;AACA;AACA;AACA;AAGA,MAAM,eAAuD,CAAC,UAAU;AACtE,QAAM,mBAAmB,6BAA6B,OAAO;AAC7D,iCAA+B,kBAAkB;AAEjD,SAAO,qCAAC,mBAAD,mBAAuB;AAAA;AAGhC,aAAa,YAAY;AACzB,MAAM,yBAAyB,SAAS,cAAc,YAAY;AAClE,uBAAuB,YAAY;",
6
+ "names": []
7
+ }
@@ -0,0 +1,10 @@
1
+ import * as React from "react";
2
+ const PAGINATION_DATA_TESTID = {
3
+ PREVIOUS_BUTTON: "data-table-pagination-prev-button",
4
+ NEXT_BUTTON: "data-table-pagination-next-button",
5
+ CONTAINER: "data-table-pagination-container"
6
+ };
7
+ export {
8
+ PAGINATION_DATA_TESTID
9
+ };
10
+ //# sourceMappingURL=PaginationDataTestID.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../scripts/build/transpile/react-shim.js", "../../src/PaginationDataTestID.tsx"],
4
+ "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "export const PAGINATION_DATA_TESTID = {\n PREVIOUS_BUTTON: 'data-table-pagination-prev-button',\n NEXT_BUTTON: 'data-table-pagination-next-button',\n CONTAINER: 'data-table-pagination-container',\n};\n"],
5
+ "mappings": "AAAA;ACAO,MAAM,yBAAyB;AAAA,EACpC,iBAAiB;AAAA,EACjB,aAAa;AAAA,EACb,WAAW;AAAA;",
6
+ "names": []
7
+ }