@elliemae/ds-pagination 3.80.0-next.51 → 3.80.0-next.53

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 (202) hide show
  1. package/dist/cjs/parts/DSPaginator/DSPaginator.js +10 -166
  2. package/dist/cjs/parts/DSPaginator/DSPaginator.js.map +2 -2
  3. package/dist/cjs/parts/DSPaginator/{config/usePaginationSearch.js → DSPaginatorCTX.js} +7 -32
  4. package/dist/cjs/parts/DSPaginator/DSPaginatorCTX.js.map +7 -0
  5. package/dist/cjs/parts/DSPaginator/config/{createPaginatorHeader.js → getAmountOfPages.js} +8 -23
  6. package/dist/cjs/parts/DSPaginator/config/getAmountOfPages.js.map +7 -0
  7. package/dist/cjs/parts/DSPaginator/config/getInstanceIds.js +40 -0
  8. package/dist/cjs/parts/DSPaginator/config/getInstanceIds.js.map +7 -0
  9. package/dist/cjs/parts/DSPaginator/config/navigationKeys.js +44 -0
  10. package/dist/cjs/parts/DSPaginator/config/navigationKeys.js.map +7 -0
  11. package/dist/cjs/parts/DSPaginator/config/useFocusTracker.js +77 -0
  12. package/dist/cjs/parts/DSPaginator/config/useFocusTracker.js.map +7 -0
  13. package/dist/cjs/parts/DSPaginator/config/usePaginator.js +73 -49
  14. package/dist/cjs/parts/DSPaginator/config/usePaginator.js.map +2 -2
  15. package/dist/cjs/parts/DSPaginator/config/usePaginatorFloatingContext.js +86 -0
  16. package/dist/cjs/parts/DSPaginator/config/usePaginatorFloatingContext.js.map +7 -0
  17. package/dist/cjs/parts/DSPaginator/config/usePaginatorInteractions.js +170 -0
  18. package/dist/cjs/parts/DSPaginator/config/usePaginatorInteractions.js.map +7 -0
  19. package/dist/cjs/parts/DSPaginator/config/usePaginatorSizing.js +80 -0
  20. package/dist/cjs/parts/DSPaginator/config/usePaginatorSizing.js.map +7 -0
  21. package/dist/cjs/parts/DSPaginator/config/useValidateProps.js.map +2 -2
  22. package/dist/cjs/parts/DSPaginator/constants/index.js +49 -3
  23. package/dist/cjs/parts/DSPaginator/constants/index.js.map +2 -2
  24. package/dist/cjs/parts/DSPaginator/parts/OptionRenderer.js +98 -0
  25. package/dist/cjs/parts/DSPaginator/parts/OptionRenderer.js.map +7 -0
  26. package/dist/cjs/parts/DSPaginator/parts/Panel.js +131 -0
  27. package/dist/cjs/parts/DSPaginator/parts/Panel.js.map +7 -0
  28. package/dist/cjs/parts/DSPaginator/parts/Trigger.js +124 -0
  29. package/dist/cjs/parts/DSPaginator/parts/Trigger.js.map +7 -0
  30. package/dist/cjs/parts/DSPaginator/react-desc-prop-types.js +6 -1
  31. package/dist/cjs/parts/DSPaginator/react-desc-prop-types.js.map +2 -2
  32. package/dist/cjs/parts/DSPaginator/styled.js +113 -38
  33. package/dist/cjs/parts/DSPaginator/styled.js.map +3 -3
  34. package/dist/cjs/parts/DSPaginator/typescript-testing/slot-props.js +12 -1
  35. package/dist/cjs/parts/DSPaginator/typescript-testing/slot-props.js.map +2 -2
  36. package/dist/cjs/parts/DSPaginator/typescript-testing/typescript-testing.js +2 -1
  37. package/dist/cjs/parts/DSPaginator/typescript-testing/typescript-testing.js.map +2 -2
  38. package/dist/cjs/parts/DSPerPageSelector/DSPerPageSelector.js +10 -79
  39. package/dist/cjs/parts/DSPerPageSelector/DSPerPageSelector.js.map +3 -3
  40. package/dist/cjs/parts/DSPerPageSelector/DSPerPageSelectorCTX.js +38 -0
  41. package/dist/cjs/parts/DSPerPageSelector/DSPerPageSelectorCTX.js.map +7 -0
  42. package/dist/cjs/parts/DSPerPageSelector/config/getInstanceIds.js +40 -0
  43. package/dist/cjs/parts/DSPerPageSelector/config/getInstanceIds.js.map +7 -0
  44. package/dist/cjs/parts/DSPerPageSelector/config/getOptions.js.map +2 -2
  45. package/dist/cjs/parts/DSPerPageSelector/config/getSelectedOptionIndex.js +36 -0
  46. package/dist/cjs/parts/DSPerPageSelector/config/getSelectedOptionIndex.js.map +7 -0
  47. package/dist/cjs/parts/DSPerPageSelector/config/navigationKeys.js +44 -0
  48. package/dist/cjs/parts/DSPerPageSelector/config/navigationKeys.js.map +7 -0
  49. package/dist/cjs/parts/DSPerPageSelector/config/useFocusTracker.js +83 -0
  50. package/dist/cjs/parts/DSPerPageSelector/config/useFocusTracker.js.map +7 -0
  51. package/dist/cjs/parts/DSPerPageSelector/config/usePerPageSelector.js +68 -20
  52. package/dist/cjs/parts/DSPerPageSelector/config/usePerPageSelector.js.map +2 -2
  53. package/dist/cjs/parts/DSPerPageSelector/config/usePerPageSelectorFloatingContext.js +82 -0
  54. package/dist/cjs/parts/DSPerPageSelector/config/usePerPageSelectorFloatingContext.js.map +7 -0
  55. package/dist/cjs/parts/DSPerPageSelector/config/usePerPageSelectorInteractions.js +175 -0
  56. package/dist/cjs/parts/DSPerPageSelector/config/usePerPageSelectorInteractions.js.map +7 -0
  57. package/dist/cjs/parts/DSPerPageSelector/config/usePerPageSelectorSizing.js +66 -0
  58. package/dist/cjs/parts/DSPerPageSelector/config/usePerPageSelectorSizing.js.map +7 -0
  59. package/dist/cjs/parts/DSPerPageSelector/constants/index.js +47 -8
  60. package/dist/cjs/parts/DSPerPageSelector/constants/index.js.map +2 -2
  61. package/dist/cjs/parts/DSPerPageSelector/parts/OptionRenderer.js +94 -0
  62. package/dist/cjs/parts/DSPerPageSelector/parts/OptionRenderer.js.map +7 -0
  63. package/dist/cjs/parts/DSPerPageSelector/parts/Panel.js +120 -0
  64. package/dist/cjs/parts/DSPerPageSelector/parts/Panel.js.map +7 -0
  65. package/dist/cjs/parts/DSPerPageSelector/parts/Trigger.js +95 -0
  66. package/dist/cjs/parts/DSPerPageSelector/parts/Trigger.js.map +7 -0
  67. package/dist/cjs/parts/DSPerPageSelector/react-desc-prop-types.js +19 -2
  68. package/dist/cjs/parts/DSPerPageSelector/react-desc-prop-types.js.map +2 -2
  69. package/dist/cjs/parts/DSPerPageSelector/styled.js +104 -32
  70. package/dist/cjs/parts/DSPerPageSelector/styled.js.map +2 -2
  71. package/dist/cjs/parts/DSPerPageSelector/typescript-testing/slots-props.js +10 -1
  72. package/dist/cjs/parts/DSPerPageSelector/typescript-testing/slots-props.js.map +2 -2
  73. package/dist/cjs/parts/DSPerPageSelector/typescript-testing/typescript-testing.js +60 -1
  74. package/dist/cjs/parts/DSPerPageSelector/typescript-testing/typescript-testing.js.map +2 -2
  75. package/dist/cjs/react-desc-prop-types.js.map +1 -1
  76. package/dist/esm/parts/DSPaginator/DSPaginator.js +12 -168
  77. package/dist/esm/parts/DSPaginator/DSPaginator.js.map +2 -2
  78. package/dist/esm/parts/DSPaginator/DSPaginatorCTX.js +8 -0
  79. package/dist/esm/parts/DSPaginator/DSPaginatorCTX.js.map +7 -0
  80. package/dist/esm/parts/DSPaginator/config/getAmountOfPages.js +9 -0
  81. package/dist/esm/parts/DSPaginator/config/getAmountOfPages.js.map +7 -0
  82. package/dist/esm/parts/DSPaginator/config/getInstanceIds.js +10 -0
  83. package/dist/esm/parts/DSPaginator/config/getInstanceIds.js.map +7 -0
  84. package/dist/esm/parts/DSPaginator/config/navigationKeys.js +14 -0
  85. package/dist/esm/parts/DSPaginator/config/navigationKeys.js.map +7 -0
  86. package/dist/esm/parts/DSPaginator/config/useFocusTracker.js +47 -0
  87. package/dist/esm/parts/DSPaginator/config/useFocusTracker.js.map +7 -0
  88. package/dist/esm/parts/DSPaginator/config/usePaginator.js +74 -50
  89. package/dist/esm/parts/DSPaginator/config/usePaginator.js.map +2 -2
  90. package/dist/esm/parts/DSPaginator/config/usePaginatorFloatingContext.js +56 -0
  91. package/dist/esm/parts/DSPaginator/config/usePaginatorFloatingContext.js.map +7 -0
  92. package/dist/esm/parts/DSPaginator/config/usePaginatorInteractions.js +140 -0
  93. package/dist/esm/parts/DSPaginator/config/usePaginatorInteractions.js.map +7 -0
  94. package/dist/esm/parts/DSPaginator/config/usePaginatorSizing.js +56 -0
  95. package/dist/esm/parts/DSPaginator/config/usePaginatorSizing.js.map +7 -0
  96. package/dist/esm/parts/DSPaginator/config/useValidateProps.js.map +2 -2
  97. package/dist/esm/parts/DSPaginator/constants/index.js +49 -3
  98. package/dist/esm/parts/DSPaginator/constants/index.js.map +2 -2
  99. package/dist/esm/parts/DSPaginator/parts/OptionRenderer.js +68 -0
  100. package/dist/esm/parts/DSPaginator/parts/OptionRenderer.js.map +7 -0
  101. package/dist/esm/parts/DSPaginator/parts/Panel.js +101 -0
  102. package/dist/esm/parts/DSPaginator/parts/Panel.js.map +7 -0
  103. package/dist/esm/parts/DSPaginator/parts/Trigger.js +94 -0
  104. package/dist/esm/parts/DSPaginator/parts/Trigger.js.map +7 -0
  105. package/dist/esm/parts/DSPaginator/react-desc-prop-types.js +6 -1
  106. package/dist/esm/parts/DSPaginator/react-desc-prop-types.js.map +2 -2
  107. package/dist/esm/parts/DSPaginator/styled.js +120 -39
  108. package/dist/esm/parts/DSPaginator/styled.js.map +2 -2
  109. package/dist/esm/parts/DSPaginator/typescript-testing/slot-props.js +12 -1
  110. package/dist/esm/parts/DSPaginator/typescript-testing/slot-props.js.map +2 -2
  111. package/dist/esm/parts/DSPaginator/typescript-testing/typescript-testing.js +2 -1
  112. package/dist/esm/parts/DSPaginator/typescript-testing/typescript-testing.js.map +2 -2
  113. package/dist/esm/parts/DSPerPageSelector/DSPerPageSelector.js +11 -80
  114. package/dist/esm/parts/DSPerPageSelector/DSPerPageSelector.js.map +3 -3
  115. package/dist/esm/parts/DSPerPageSelector/DSPerPageSelectorCTX.js +8 -0
  116. package/dist/esm/parts/DSPerPageSelector/DSPerPageSelectorCTX.js.map +7 -0
  117. package/dist/esm/parts/DSPerPageSelector/config/getInstanceIds.js +10 -0
  118. package/dist/esm/parts/DSPerPageSelector/config/getInstanceIds.js.map +7 -0
  119. package/dist/esm/parts/DSPerPageSelector/config/getOptions.js.map +2 -2
  120. package/dist/esm/parts/DSPerPageSelector/config/getSelectedOptionIndex.js +6 -0
  121. package/dist/esm/parts/DSPerPageSelector/config/getSelectedOptionIndex.js.map +7 -0
  122. package/dist/esm/parts/DSPerPageSelector/config/navigationKeys.js +14 -0
  123. package/dist/esm/parts/DSPerPageSelector/config/navigationKeys.js.map +7 -0
  124. package/dist/esm/parts/DSPerPageSelector/config/useFocusTracker.js +53 -0
  125. package/dist/esm/parts/DSPerPageSelector/config/useFocusTracker.js.map +7 -0
  126. package/dist/esm/parts/DSPerPageSelector/config/usePerPageSelector.js +69 -21
  127. package/dist/esm/parts/DSPerPageSelector/config/usePerPageSelector.js.map +2 -2
  128. package/dist/esm/parts/DSPerPageSelector/config/usePerPageSelectorFloatingContext.js +52 -0
  129. package/dist/esm/parts/DSPerPageSelector/config/usePerPageSelectorFloatingContext.js.map +7 -0
  130. package/dist/esm/parts/DSPerPageSelector/config/usePerPageSelectorInteractions.js +145 -0
  131. package/dist/esm/parts/DSPerPageSelector/config/usePerPageSelectorInteractions.js.map +7 -0
  132. package/dist/esm/parts/DSPerPageSelector/config/usePerPageSelectorSizing.js +42 -0
  133. package/dist/esm/parts/DSPerPageSelector/config/usePerPageSelectorSizing.js.map +7 -0
  134. package/dist/esm/parts/DSPerPageSelector/constants/index.js +47 -8
  135. package/dist/esm/parts/DSPerPageSelector/constants/index.js.map +2 -2
  136. package/dist/esm/parts/DSPerPageSelector/parts/OptionRenderer.js +64 -0
  137. package/dist/esm/parts/DSPerPageSelector/parts/OptionRenderer.js.map +7 -0
  138. package/dist/esm/parts/DSPerPageSelector/parts/Panel.js +90 -0
  139. package/dist/esm/parts/DSPerPageSelector/parts/Panel.js.map +7 -0
  140. package/dist/esm/parts/DSPerPageSelector/parts/Trigger.js +65 -0
  141. package/dist/esm/parts/DSPerPageSelector/parts/Trigger.js.map +7 -0
  142. package/dist/esm/parts/DSPerPageSelector/react-desc-prop-types.js +19 -2
  143. package/dist/esm/parts/DSPerPageSelector/react-desc-prop-types.js.map +2 -2
  144. package/dist/esm/parts/DSPerPageSelector/styled.js +111 -33
  145. package/dist/esm/parts/DSPerPageSelector/styled.js.map +2 -2
  146. package/dist/esm/parts/DSPerPageSelector/typescript-testing/slots-props.js +10 -1
  147. package/dist/esm/parts/DSPerPageSelector/typescript-testing/slots-props.js.map +2 -2
  148. package/dist/esm/parts/DSPerPageSelector/typescript-testing/typescript-testing.js +60 -1
  149. package/dist/esm/parts/DSPerPageSelector/typescript-testing/typescript-testing.js.map +2 -2
  150. package/dist/esm/react-desc-prop-types.js.map +1 -1
  151. package/dist/types/parts/DSPageNextButton/config/usePageNextButton.d.ts +4 -4
  152. package/dist/types/parts/DSPagePrevButton/config/usePagePrevButton.d.ts +4 -4
  153. package/dist/types/parts/DSPaginationContainer/config/usePaginationContainer.d.ts +4 -4
  154. package/dist/types/parts/DSPaginationSeparator/config/usePaginationSeparator.d.ts +4 -4
  155. package/dist/types/parts/DSPaginator/DSPaginator.d.ts +5 -0
  156. package/dist/types/parts/DSPaginator/DSPaginatorCTX.d.ts +5 -0
  157. package/dist/types/parts/DSPaginator/config/getAmountOfPages.d.ts +1 -0
  158. package/dist/types/parts/DSPaginator/config/getInstanceIds.d.ts +3 -0
  159. package/dist/types/parts/DSPaginator/config/navigationKeys.d.ts +3 -0
  160. package/dist/types/parts/DSPaginator/config/useFocusTracker.d.ts +20 -0
  161. package/dist/types/parts/DSPaginator/config/usePaginator.d.ts +52 -18
  162. package/dist/types/parts/DSPaginator/config/usePaginatorFloatingContext.d.ts +31 -0
  163. package/dist/types/parts/DSPaginator/config/usePaginatorInteractions.d.ts +37 -0
  164. package/dist/types/parts/DSPaginator/config/usePaginatorSizing.d.ts +37 -0
  165. package/dist/types/parts/DSPaginator/constants/index.d.ts +36 -1
  166. package/dist/types/parts/DSPaginator/parts/OptionRenderer.d.ts +11 -0
  167. package/dist/types/parts/DSPaginator/parts/Panel.d.ts +5 -0
  168. package/dist/types/parts/DSPaginator/parts/Trigger.d.ts +5 -0
  169. package/dist/types/parts/DSPaginator/react-desc-prop-types.d.ts +17 -0
  170. package/dist/types/parts/DSPaginator/styled.d.ts +17 -4
  171. package/dist/types/parts/DSPerPageSelector/DSPerPageSelector.d.ts +5 -0
  172. package/dist/types/parts/DSPerPageSelector/DSPerPageSelectorCTX.d.ts +5 -0
  173. package/dist/types/parts/DSPerPageSelector/config/getInstanceIds.d.ts +3 -0
  174. package/dist/types/parts/DSPerPageSelector/config/getOptions.d.ts +3 -3
  175. package/dist/types/parts/DSPerPageSelector/config/getSelectedOptionIndex.d.ts +2 -0
  176. package/dist/types/parts/DSPerPageSelector/config/navigationKeys.d.ts +3 -0
  177. package/dist/types/parts/DSPerPageSelector/config/useFocusTracker.d.ts +22 -0
  178. package/dist/types/parts/DSPerPageSelector/config/usePerPageSelector.d.ts +43 -10
  179. package/dist/types/parts/DSPerPageSelector/config/usePerPageSelectorFloatingContext.d.ts +31 -0
  180. package/dist/types/parts/DSPerPageSelector/config/usePerPageSelectorInteractions.d.ts +38 -0
  181. package/dist/types/parts/DSPerPageSelector/config/usePerPageSelectorSizing.d.ts +25 -0
  182. package/dist/types/parts/DSPerPageSelector/constants/index.d.ts +32 -5
  183. package/dist/types/parts/DSPerPageSelector/parts/OptionRenderer.d.ts +11 -0
  184. package/dist/types/parts/DSPerPageSelector/parts/Panel.d.ts +5 -0
  185. package/dist/types/parts/DSPerPageSelector/parts/Trigger.d.ts +5 -0
  186. package/dist/types/parts/DSPerPageSelector/react-desc-prop-types.d.ts +27 -2
  187. package/dist/types/parts/DSPerPageSelector/styled.d.ts +15 -2
  188. package/dist/types/react-desc-prop-types.d.ts +2 -2
  189. package/package.json +15 -13
  190. package/dist/cjs/parts/DSPaginator/config/createPaginatorHeader.js.map +0 -7
  191. package/dist/cjs/parts/DSPaginator/config/getOptions.js +0 -76
  192. package/dist/cjs/parts/DSPaginator/config/getOptions.js.map +0 -7
  193. package/dist/cjs/parts/DSPaginator/config/usePaginationSearch.js.map +0 -7
  194. package/dist/esm/parts/DSPaginator/config/createPaginatorHeader.js +0 -24
  195. package/dist/esm/parts/DSPaginator/config/createPaginatorHeader.js.map +0 -7
  196. package/dist/esm/parts/DSPaginator/config/getOptions.js +0 -46
  197. package/dist/esm/parts/DSPaginator/config/getOptions.js.map +0 -7
  198. package/dist/esm/parts/DSPaginator/config/usePaginationSearch.js +0 -33
  199. package/dist/esm/parts/DSPaginator/config/usePaginationSearch.js.map +0 -7
  200. package/dist/types/parts/DSPaginator/config/createPaginatorHeader.d.ts +0 -9
  201. package/dist/types/parts/DSPaginator/config/getOptions.d.ts +0 -8
  202. package/dist/types/parts/DSPaginator/config/usePaginationSearch.d.ts +0 -1
@@ -34,177 +34,21 @@ __export(DSPaginator_exports, {
34
34
  module.exports = __toCommonJS(DSPaginator_exports);
35
35
  var React = __toESM(require("react"));
36
36
  var import_jsx_runtime = require("react/jsx-runtime");
37
- var import_react = __toESM(require("react"));
38
- var import_ds_circular_progress_indicator = require("@elliemae/ds-circular-progress-indicator");
39
- var import_ds_grid = require("@elliemae/ds-grid");
40
- var import_ds_icons = require("@elliemae/ds-icons");
41
37
  var import_ds_props_helpers = require("@elliemae/ds-props-helpers");
42
- var import_ds_typography = require("@elliemae/ds-typography");
43
- var import_DSPaginationSeparator = require("../DSPaginationSeparator/index.js");
44
- var import_createPaginatorHeader = require("./config/createPaginatorHeader.js");
38
+ var import_react = __toESM(require("react"));
45
39
  var import_usePaginator = require("./config/usePaginator.js");
46
40
  var import_constants = require("./constants/index.js");
41
+ var import_DSPaginatorCTX = require("./DSPaginatorCTX.js");
42
+ var import_Panel = require("./parts/Panel.js");
43
+ var import_Trigger = require("./parts/Trigger.js");
47
44
  var import_react_desc_prop_types = require("./react-desc-prop-types.js");
48
- var import_styled = require("./styled.js");
49
45
  const DSPaginator = (props) => {
50
- const {
51
- propsWithDefault: { pageIndex, pageCount, isLoadingPageCount, onPageChange, pageDetails, pageDetailsTitle },
52
- xstyledProps,
53
- globalAttributes,
54
- ownerPropsConfig,
55
- btnRef,
56
- btnWidth,
57
- pageInfoWidth,
58
- options,
59
- isOpened,
60
- actionRef,
61
- widestChildRef,
62
- pageInfoRef,
63
- checkMarkRef,
64
- checkMarkWidth,
65
- onKeyDown,
66
- setIsOpened
67
- } = (0, import_usePaginator.usePaginator)(props);
68
- const widestTypographyRef = import_react.default.useRef(null);
69
- const Header = (0, import_react.useMemo)(
70
- () => (0, import_createPaginatorHeader.createPaginatorHeader)({ pageDetailsTitle, pageInfoWidth, ownerPropsConfig, checkMarkWidth }),
71
- [pageDetailsTitle, pageInfoWidth, ownerPropsConfig, checkMarkWidth]
72
- );
73
- const buttonOnClick = (0, import_react.useMemo)(() => {
74
- if (globalAttributes.onClick) return globalAttributes.onClick;
75
- return () => setIsOpened((prev) => !prev);
76
- }, [globalAttributes.onClick, setIsOpened]);
77
- return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
78
- import_styled.StyledDropdown,
79
- {
80
- isOpened,
81
- options,
82
- selectedOptions: { [pageIndex.toString()]: true },
83
- onOptionClick: (_, clickedOption) => {
84
- onPageChange(clickedOption.value);
85
- setIsOpened(false);
86
- btnRef.current?.focus();
87
- },
88
- onClickOutside: () => {
89
- setIsOpened(false);
90
- btnRef.current?.focus();
91
- },
92
- customOffset: [-(checkMarkWidth + 7), 2],
93
- startPlacementPreference: "top-start",
94
- actionRef,
95
- onKeyDown,
96
- minWidth: pageDetails.length !== 0 ? btnWidth + checkMarkWidth + 7 : (
97
- /**
98
- * Structure of the width:
99
- * 16px (left padding)
100
- * + chevronWidth (size of the chevron icon)
101
- * + 8px (spacing between chevron and text)
102
- * + pageCount length in ch
103
- * + 16px (right padding)
104
- * + a small scrollbar placeholder (to avoid text wrapping when scrollbars appear)
105
- * By using `calc()` + `ch` units, the component stays responsive to font-size changes
106
- * without requiring an extra ref to measure the page count text width.
107
- */
108
- `calc(${checkMarkWidth + 60}px + ${pageCount.toString().length}ch)`
109
- ),
110
- maxHeight: 300,
111
- HeaderComp: Header,
112
- children: [
113
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
114
- import_styled.PaginationDropdownButtonPaginator,
115
- {
116
- buttonType: "raw",
117
- disabled: isLoadingPageCount,
118
- innerRef: btnRef,
119
- "aria-pressed": isOpened,
120
- "aria-label": `Page ${pageIndex} out of ${pageCount}, ${pageDetails.length !== 0 ? pageDetails[pageIndex - 1] : "\b\b"}. Press to change the current page`,
121
- "data-testid": import_constants.PAGINATOR_DATA_TESTID.PAGINATOR,
122
- ...globalAttributes,
123
- ...xstyledProps,
124
- ...ownerPropsConfig,
125
- onClick: buttonOnClick,
126
- children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_ds_grid.Grid, { gutter: "xxxs", alignItems: "center", style: { gridAutoFlow: "column" }, children: [
127
- /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_styled.StyledPageInfo, { innerRef: pageInfoRef, children: [
128
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
129
- import_ds_typography.DSTypography,
130
- {
131
- id: "typography-page-index",
132
- variant: "b1",
133
- as: "span",
134
- fontWeight: "semibold",
135
- textAlign: "start",
136
- children: pageIndex
137
- }
138
- ),
139
- /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
140
- import_ds_typography.DSTypography,
141
- {
142
- variant: "b1",
143
- as: "span",
144
- className: "typography-page-info-and-detail",
145
- children: [
146
- "/ ",
147
- pageCount
148
- ]
149
- }
150
- )
151
- ] }),
152
- isLoadingPageCount && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_ds_circular_progress_indicator.DSCircularIndeterminateIndicator, { ml: "xxxs", mr: "xxxs", size: "xs" }),
153
- pageDetails.length !== 0 && /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [
154
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_DSPaginationSeparator.DSPaginationSeparator, { height: "12px", ml: "12px", mr: "xxxs", ...ownerPropsConfig }),
155
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
156
- import_ds_typography.DSTypography,
157
- {
158
- className: "typography-page-info-and-detail",
159
- innerRef: widestTypographyRef,
160
- mr: "xxs",
161
- variant: "b1",
162
- as: "span",
163
- fontWeight: "semibold",
164
- textAlign: "start",
165
- children: pageDetails[pageIndex - 1]
166
- }
167
- )
168
- ] }),
169
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_ds_icons.ChevronDown, { ml: "xxxs", color: ["brand-primary", "700"], innerRef: checkMarkRef })
170
- ] })
171
- }
172
- ),
173
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_ds_grid.Grid, { style: { position: "relative" }, children: pageDetails.map((pageDetail, index) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
174
- import_styled.InvisibleDiv,
175
- {
176
- innerRef: (el) => {
177
- if (!el) return;
178
- if (!widestChildRef.current) {
179
- widestChildRef.current = el;
180
- return;
181
- }
182
- if (el.offsetWidth > widestChildRef.current.offsetWidth) {
183
- widestChildRef.current = el;
184
- }
185
- if (index === pageDetails.length - 1) {
186
- widestTypographyRef.current?.style.setProperty("min-width", `${widestChildRef.current?.offsetWidth}px`);
187
- }
188
- },
189
- "data-testid": "ds-pagination-invisible-detail-for-width-calc",
190
- children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
191
- import_ds_typography.DSTypography,
192
- {
193
- className: "typography-page-info-and-detail",
194
- mr: "xxs",
195
- variant: "b1",
196
- as: "span",
197
- fontWeight: "semibold",
198
- textAlign: "start",
199
- children: pageDetail
200
- }
201
- )
202
- },
203
- pageDetail
204
- )) })
205
- ]
206
- }
207
- );
46
+ const config = (0, import_usePaginator.usePaginator)(props);
47
+ const ctx = import_react.default.useMemo(() => ({ ...config }), [config]);
48
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_DSPaginatorCTX.DSPaginatorContext.Provider, { value: ctx, children: [
49
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_Trigger.Trigger, {}),
50
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_Panel.Panel, {})
51
+ ] });
208
52
  };
209
53
  DSPaginator.displayName = import_constants.DSPaginatorName;
210
54
  const DSPaginatorWithSchema = (0, import_ds_props_helpers.describe)(DSPaginator);
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/parts/DSPaginator/DSPaginator.tsx", "../../../../../../../scripts/build/transpile/react-shim.js"],
4
- "sourcesContent": ["import React, { useMemo } from 'react';\nimport type { DSButtonT } from '@elliemae/ds-button-v2';\nimport { DSCircularIndeterminateIndicator } from '@elliemae/ds-circular-progress-indicator';\nimport { type DSDropdownMenuT } from '@elliemae/ds-dropdownmenu-v2';\nimport { Grid } from '@elliemae/ds-grid';\nimport { ChevronDown } from '@elliemae/ds-icons';\nimport { describe } from '@elliemae/ds-props-helpers';\nimport { DSTypography } from '@elliemae/ds-typography';\nimport { DSPaginationSeparator } from '../DSPaginationSeparator/index.js';\nimport { createPaginatorHeader } from './config/createPaginatorHeader.js';\nimport { usePaginator } from './config/usePaginator.js';\nimport { DSPaginatorName, PAGINATOR_DATA_TESTID } from './constants/index.js';\nimport { DSPaginatorPropTypesSchema, type DSPaginatorT } from './react-desc-prop-types.js';\nimport { InvisibleDiv, PaginationDropdownButtonPaginator, StyledDropdown, StyledPageInfo } from './styled.js';\n\nconst DSPaginator: React.ComponentType<DSPaginatorT.Props> = (props) => {\n const {\n propsWithDefault: { pageIndex, pageCount, isLoadingPageCount, onPageChange, pageDetails, pageDetailsTitle },\n xstyledProps,\n globalAttributes,\n ownerPropsConfig,\n btnRef,\n btnWidth,\n pageInfoWidth,\n options,\n isOpened,\n actionRef,\n widestChildRef,\n pageInfoRef,\n checkMarkRef,\n checkMarkWidth,\n onKeyDown,\n setIsOpened,\n } = usePaginator(props);\n\n const widestTypographyRef = React.useRef<HTMLDivElement>(null);\n\n const Header = useMemo(\n () => createPaginatorHeader({ pageDetailsTitle, pageInfoWidth, ownerPropsConfig, checkMarkWidth }),\n [pageDetailsTitle, pageInfoWidth, ownerPropsConfig, checkMarkWidth],\n );\n\n const buttonOnClick: DSButtonT.Props['onClick'] = useMemo(() => {\n if (globalAttributes.onClick) return globalAttributes.onClick as DSButtonT.Props['onClick'];\n return () => setIsOpened((prev) => !prev);\n }, [globalAttributes.onClick, setIsOpened]);\n\n return (\n <StyledDropdown\n isOpened={isOpened}\n options={options}\n selectedOptions={{ [pageIndex.toString()]: true }}\n onOptionClick={(_, clickedOption) => {\n onPageChange((clickedOption as DSDropdownMenuT.ItemSingleOptions).value as number);\n setIsOpened(false);\n btnRef.current?.focus();\n }}\n onClickOutside={() => {\n setIsOpened(false);\n btnRef.current?.focus();\n }}\n customOffset={[-(checkMarkWidth + 7), 2]}\n startPlacementPreference=\"top-start\"\n actionRef={actionRef}\n onKeyDown={onKeyDown}\n minWidth={\n pageDetails.length !== 0\n ? btnWidth + checkMarkWidth + 7\n : /**\n * Structure of the width:\n * 16px (left padding)\n * + chevronWidth (size of the chevron icon)\n * + 8px (spacing between chevron and text)\n * + pageCount length in ch\n * + 16px (right padding)\n * + a small scrollbar placeholder (to avoid text wrapping when scrollbars appear)\n * By using `calc()` + `ch` units, the component stays responsive to font-size changes\n * without requiring an extra ref to measure the page count text width.\n */\n\n `calc(${checkMarkWidth + 60}px + ${pageCount.toString().length}ch)`\n }\n maxHeight={300}\n HeaderComp={Header}\n >\n <PaginationDropdownButtonPaginator\n buttonType=\"raw\"\n disabled={isLoadingPageCount}\n innerRef={btnRef}\n aria-pressed={isOpened}\n aria-label={`Page ${pageIndex} out of ${pageCount}, ${\n pageDetails.length !== 0 ? pageDetails[pageIndex - 1] : '\\b\\b'\n }. Press to change the current page`}\n data-testid={PAGINATOR_DATA_TESTID.PAGINATOR}\n {...globalAttributes}\n {...xstyledProps}\n {...ownerPropsConfig}\n onClick={buttonOnClick}\n >\n <Grid gutter=\"xxxs\" alignItems=\"center\" style={{ gridAutoFlow: 'column' }}>\n <StyledPageInfo innerRef={pageInfoRef}>\n <DSTypography\n /**\n * Pagination uses DSTypography internally, but each typography variant defines\n * its own font-size. When these components are placed inside a styled() wrapper,\n * trying to style them via styled(DSTypography) triggers TypeScript errors\n * because DSTypography exposes \"as\" props and variant-specific overrides.\n *\n * Instead of wrapping DSTypography directly in styled(), we target the\n * underlying rendered elements via className/id. This avoids the TS conflicts\n * while still allowing us to override their font-size reliably.\n */\n id=\"typography-page-index\"\n variant=\"b1\"\n as=\"span\"\n fontWeight=\"semibold\"\n textAlign=\"start\"\n >\n {pageIndex}\n </DSTypography>\n <DSTypography\n variant=\"b1\"\n as=\"span\"\n /**\n * Pagination uses DSTypography internally, but each typography variant defines\n * its own font-size. When these components are placed inside a styled() wrapper,\n * trying to style them via styled(DSTypography) triggers TypeScript errors\n * because DSTypography exposes \"as\" props and variant-specific overrides.\n *\n * Instead of wrapping DSTypography directly in styled(), we target the\n * underlying rendered elements via className/id. This avoids the TS conflicts\n * while still allowing us to override their font-size reliably.\n */ className=\"typography-page-info-and-detail\"\n >\n / {pageCount}\n </DSTypography>\n </StyledPageInfo>\n {isLoadingPageCount && <DSCircularIndeterminateIndicator ml=\"xxxs\" mr=\"xxxs\" size=\"xs\" />}\n {pageDetails.length !== 0 && (\n <>\n <DSPaginationSeparator height=\"12px\" ml=\"12px\" mr=\"xxxs\" {...ownerPropsConfig} />\n <DSTypography\n className=\"typography-page-info-and-detail\"\n innerRef={widestTypographyRef}\n mr=\"xxs\"\n variant=\"b1\"\n as=\"span\"\n fontWeight=\"semibold\"\n textAlign=\"start\"\n >\n {pageDetails[pageIndex - 1]}\n </DSTypography>\n </>\n )}\n <ChevronDown ml=\"xxxs\" color={['brand-primary', '700']} innerRef={checkMarkRef} />\n </Grid>\n </PaginationDropdownButtonPaginator>\n {/* We calculate the length of the longest detail here (this is as per specs) */}\n <Grid style={{ position: 'relative' }}>\n {pageDetails.map((pageDetail, index) => (\n <InvisibleDiv\n innerRef={(el) => {\n if (!el) return;\n if (!widestChildRef.current) {\n widestChildRef.current = el;\n return;\n }\n if (el.offsetWidth > widestChildRef.current.offsetWidth) {\n widestChildRef.current = el;\n }\n if (index === pageDetails.length - 1) {\n widestTypographyRef.current?.style.setProperty('min-width', `${widestChildRef.current?.offsetWidth}px`);\n }\n }}\n data-testid=\"ds-pagination-invisible-detail-for-width-calc\"\n key={pageDetail}\n >\n <DSTypography\n className=\"typography-page-info-and-detail\"\n mr=\"xxs\"\n variant=\"b1\"\n as=\"span\"\n fontWeight=\"semibold\"\n textAlign=\"start\"\n >\n {pageDetail}\n </DSTypography>\n </InvisibleDiv>\n ))}\n </Grid>\n </StyledDropdown>\n );\n};\n\nDSPaginator.displayName = DSPaginatorName;\nconst DSPaginatorWithSchema = describe(DSPaginator);\nDSPaginatorWithSchema.propTypes = DSPaginatorPropTypesSchema;\n\nexport { DSPaginator, DSPaginatorWithSchema };\n", "import * as React from 'react';\nexport { React };\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import { describe } from '@elliemae/ds-props-helpers';\nimport React from 'react';\nimport { usePaginator } from './config/usePaginator.js';\nimport { DSPaginatorName } from './constants/index.js';\nimport { DSPaginatorContext, type DSPaginatorCTX } from './DSPaginatorCTX.js';\nimport { Panel } from './parts/Panel.js';\nimport { Trigger } from './parts/Trigger.js';\nimport { DSPaginatorPropTypesSchema, type DSPaginatorT } from './react-desc-prop-types.js';\n\n/**\n * A trigger (aria-haspopup=\"dialog\") that owns a non-modal dialog, positioned by the floating context, whose content is\n * a listbox of pages (virtualized with DSFastList). It replaced a DSDropdownMenuV2 based implementation keeping its\n * public contract; see KNOWN_INTENTIONAL_DEVIATIONS.md (package root) for the accepted deviations and the release notes for the behavior changes.\n */\nconst DSPaginator: React.ComponentType<DSPaginatorT.Props> = (props) => {\n const config = usePaginator(props);\n const ctx: DSPaginatorCTX = React.useMemo(() => ({ ...config }), [config]);\n\n return (\n <DSPaginatorContext.Provider value={ctx}>\n <Trigger />\n <Panel />\n </DSPaginatorContext.Provider>\n );\n};\n\nDSPaginator.displayName = DSPaginatorName;\nconst DSPaginatorWithSchema = describe(DSPaginator);\nDSPaginatorWithSchema.propTypes = DSPaginatorPropTypesSchema;\n\nexport { DSPaginator, DSPaginatorWithSchema };\n", "import * as React from 'react';\nexport { React };\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADmBnB;AAnBJ,8BAAyB;AACzB,mBAAkB;AAClB,0BAA6B;AAC7B,uBAAgC;AAChC,4BAAwD;AACxD,mBAAsB;AACtB,qBAAwB;AACxB,mCAA8D;AAO9D,MAAM,cAAuD,CAAC,UAAU;AACtE,QAAM,aAAS,kCAAa,KAAK;AACjC,QAAM,MAAsB,aAAAA,QAAM,QAAQ,OAAO,EAAE,GAAG,OAAO,IAAI,CAAC,MAAM,CAAC;AAEzE,SACE,6CAAC,yCAAmB,UAAnB,EAA4B,OAAO,KAClC;AAAA,gDAAC,0BAAQ;AAAA,IACT,4CAAC,sBAAM;AAAA,KACT;AAEJ;AAEA,YAAY,cAAc;AAC1B,MAAM,4BAAwB,kCAAS,WAAW;AAClD,sBAAsB,YAAY;",
6
6
  "names": ["React"]
7
7
  }
@@ -26,38 +26,13 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
26
26
  mod
27
27
  ));
28
28
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
- var usePaginationSearch_exports = {};
30
- __export(usePaginationSearch_exports, {
31
- usePaginationSearch: () => usePaginationSearch
29
+ var DSPaginatorCTX_exports = {};
30
+ __export(DSPaginatorCTX_exports, {
31
+ DSPaginatorContext: () => DSPaginatorContext
32
32
  });
33
- module.exports = __toCommonJS(usePaginationSearch_exports);
33
+ module.exports = __toCommonJS(DSPaginatorCTX_exports);
34
34
  var React = __toESM(require("react"));
35
35
  var import_react = require("react");
36
- const usePaginationSearch = (pageCount, actionRef) => {
37
- const [searchValue, setSearchValue] = (0, import_react.useState)("");
38
- const [shouldResetSearchValue, setShouldResetSearchValue] = (0, import_react.useState)(true);
39
- const timeoutRef = (0, import_react.useRef)();
40
- (0, import_react.useEffect)(() => {
41
- if (typeof pageCount === "string") return;
42
- if (searchValue !== "" && Number.parseInt(searchValue, 10) <= pageCount) {
43
- actionRef.current.setActiveDescendant(searchValue);
44
- actionRef.current.scrollOptionIntoView(searchValue);
45
- }
46
- }, [searchValue]);
47
- const onKeyDown = (0, import_react.useCallback)(
48
- (e) => {
49
- if (e.code.startsWith("Digit")) {
50
- if (shouldResetSearchValue) setSearchValue(e.key);
51
- else setSearchValue((prevValue) => prevValue + e.key);
52
- setShouldResetSearchValue(false);
53
- if (timeoutRef.current) clearTimeout(timeoutRef.current);
54
- timeoutRef.current = setTimeout(() => {
55
- setShouldResetSearchValue(true);
56
- }, 1e3);
57
- }
58
- },
59
- [shouldResetSearchValue]
60
- );
61
- return onKeyDown;
62
- };
63
- //# sourceMappingURL=usePaginationSearch.js.map
36
+ const defaultContext = {};
37
+ const DSPaginatorContext = (0, import_react.createContext)(defaultContext);
38
+ //# sourceMappingURL=DSPaginatorCTX.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/parts/DSPaginator/DSPaginatorCTX.ts", "../../../../../../../scripts/build/transpile/react-shim.js"],
4
+ "sourcesContent": ["import { createContext } from 'react';\nimport type { usePaginator } from './config/usePaginator.js';\n\nexport interface DSPaginatorCTX extends ReturnType<typeof usePaginator> {}\n\nconst defaultContext = {} as DSPaginatorCTX;\n\n/** Single source of truth for the parts of DSPaginator: props, owner props, floating context, focus tracker. */\nexport const DSPaginatorContext = createContext<DSPaginatorCTX>(defaultContext);\n", "import * as React from 'react';\nexport { React };\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADAvB,mBAA8B;AAK9B,MAAM,iBAAiB,CAAC;AAGjB,MAAM,yBAAqB,4BAA8B,cAAc;",
6
+ "names": []
7
+ }
@@ -26,29 +26,14 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
26
26
  mod
27
27
  ));
28
28
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
- var createPaginatorHeader_exports = {};
30
- __export(createPaginatorHeader_exports, {
31
- createPaginatorHeader: () => createPaginatorHeader
29
+ var getAmountOfPages_exports = {};
30
+ __export(getAmountOfPages_exports, {
31
+ getAmountOfPages: () => getAmountOfPages
32
32
  });
33
- module.exports = __toCommonJS(createPaginatorHeader_exports);
33
+ module.exports = __toCommonJS(getAmountOfPages_exports);
34
34
  var React = __toESM(require("react"));
35
- var import_jsx_runtime = require("react/jsx-runtime");
36
- var import_DSPaginationSeparator = require("../../DSPaginationSeparator/index.js");
37
- var import_styled = require("../styled.js");
38
- const createPaginatorHeader = ({
39
- pageDetailsTitle,
40
- pageInfoWidth,
41
- ownerPropsConfig,
42
- checkMarkWidth
43
- }) => {
44
- const Comp = () => {
45
- if (pageDetailsTitle === "") return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_styled.StyledHeader, { children: "Page" });
46
- return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_styled.StyledHeader, { cols: [`${pageInfoWidth + checkMarkWidth + 34}px`, "8px", "auto"], children: [
47
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { style: { marginLeft: "8px" }, children: "Page" }),
48
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_DSPaginationSeparator.DSPaginationSeparator, { height: "100%", ...ownerPropsConfig }),
49
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { children: pageDetailsTitle })
50
- ] });
51
- };
52
- return Comp;
35
+ const getAmountOfPages = (pageCount, pageIndex) => {
36
+ const amount = typeof pageCount === "string" ? pageIndex + 1 : pageCount;
37
+ return Number.isFinite(amount) && amount > 0 ? Math.floor(amount) : 0;
53
38
  };
54
- //# sourceMappingURL=createPaginatorHeader.js.map
39
+ //# sourceMappingURL=getAmountOfPages.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../src/parts/DSPaginator/config/getAmountOfPages.ts", "../../../../../../../../scripts/build/transpile/react-shim.js"],
4
+ "sourcesContent": ["// same rule as the existing DSPaginator: when the page count is not known (a string, e.g. \"many\"),\n// the user can only reach the pages up to the one after the current\nexport const getAmountOfPages = (pageCount: number | string, pageIndex: number): number => {\n const amount = typeof pageCount === 'string' ? pageIndex + 1 : pageCount;\n return Number.isFinite(amount) && amount > 0 ? Math.floor(amount) : 0;\n};\n", "import * as React from 'react';\nexport { React };\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADEhB,MAAM,mBAAmB,CAAC,WAA4B,cAA8B;AACzF,QAAM,SAAS,OAAO,cAAc,WAAW,YAAY,IAAI;AAC/D,SAAO,OAAO,SAAS,MAAM,KAAK,SAAS,IAAI,KAAK,MAAM,MAAM,IAAI;AACtE;",
6
+ "names": []
7
+ }
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+ var getInstanceIds_exports = {};
30
+ __export(getInstanceIds_exports, {
31
+ getDialogId: () => getDialogId,
32
+ getHeaderId: () => getHeaderId,
33
+ getListId: () => getListId
34
+ });
35
+ module.exports = __toCommonJS(getInstanceIds_exports);
36
+ var React = __toESM(require("react"));
37
+ const getHeaderId = (instanceUid) => `ds-paginator-header-${instanceUid}`;
38
+ const getListId = (instanceUid) => `ds-paginator-list-${instanceUid}`;
39
+ const getDialogId = (instanceUid) => `ds-paginator-dialog-${instanceUid}`;
40
+ //# sourceMappingURL=getInstanceIds.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../src/parts/DSPaginator/config/getInstanceIds.ts", "../../../../../../../../scripts/build/transpile/react-shim.js"],
4
+ "sourcesContent": ["// one place composes the ids so the parts and the aria relationships cannot drift apart\nexport const getHeaderId = (instanceUid: string) => `ds-paginator-header-${instanceUid}`;\nexport const getListId = (instanceUid: string) => `ds-paginator-list-${instanceUid}`;\nexport const getDialogId = (instanceUid: string) => `ds-paginator-dialog-${instanceUid}`;\n", "import * as React from 'react';\nexport { React };\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADChB,MAAM,cAAc,CAAC,gBAAwB,uBAAuB,WAAW;AAC/E,MAAM,YAAY,CAAC,gBAAwB,qBAAqB,WAAW;AAC3E,MAAM,cAAc,CAAC,gBAAwB,uBAAuB,WAAW;",
6
+ "names": []
7
+ }
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+ var navigationKeys_exports = {};
30
+ __export(navigationKeys_exports, {
31
+ NAVIGATION_KEYS: () => NAVIGATION_KEYS
32
+ });
33
+ module.exports = __toCommonJS(navigationKeys_exports);
34
+ var React = __toESM(require("react"));
35
+ var import_constants = require("../constants/index.js");
36
+ const NAVIGATION_KEYS = {
37
+ ArrowDown: (currentPage) => currentPage + 1,
38
+ ArrowUp: (currentPage) => currentPage - 1,
39
+ PageDown: (currentPage) => currentPage + import_constants.PAGINATOR_PAGE_JUMP,
40
+ PageUp: (currentPage) => currentPage - import_constants.PAGINATOR_PAGE_JUMP,
41
+ Home: () => 1,
42
+ End: (_currentPage, amountOfPages) => amountOfPages
43
+ };
44
+ //# sourceMappingURL=navigationKeys.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../src/parts/DSPaginator/config/navigationKeys.ts", "../../../../../../../../scripts/build/transpile/react-shim.js"],
4
+ "sourcesContent": ["import { PAGINATOR_PAGE_JUMP } from '../constants/index.js';\n\ntype GetTargetPage = (currentPage: number, amountOfPages: number) => number;\n\n// the keys that only MOVE the focus through the options (APG listbox / select-only combobox navigation)\nexport const NAVIGATION_KEYS: Record<string, GetTargetPage> = {\n ArrowDown: (currentPage) => currentPage + 1,\n ArrowUp: (currentPage) => currentPage - 1,\n PageDown: (currentPage) => currentPage + PAGINATOR_PAGE_JUMP,\n PageUp: (currentPage) => currentPage - PAGINATOR_PAGE_JUMP,\n Home: () => 1,\n End: (_currentPage, amountOfPages) => amountOfPages,\n};\n", "import * as React from 'react';\nexport { React };\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADAvB,uBAAoC;AAK7B,MAAM,kBAAiD;AAAA,EAC5D,WAAW,CAAC,gBAAgB,cAAc;AAAA,EAC1C,SAAS,CAAC,gBAAgB,cAAc;AAAA,EACxC,UAAU,CAAC,gBAAgB,cAAc;AAAA,EACzC,QAAQ,CAAC,gBAAgB,cAAc;AAAA,EACvC,MAAM,MAAM;AAAA,EACZ,KAAK,CAAC,cAAc,kBAAkB;AACxC;",
6
+ "names": []
7
+ }
@@ -0,0 +1,77 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+ var useFocusTracker_exports = {};
30
+ __export(useFocusTracker_exports, {
31
+ getOptionRegionId: () => getOptionRegionId,
32
+ useFocusTracker: () => useFocusTracker
33
+ });
34
+ module.exports = __toCommonJS(useFocusTracker_exports);
35
+ var React = __toESM(require("react"));
36
+ var import_react = require("react");
37
+ var import_constants = require("../constants/index.js");
38
+ const getOptionRegionId = (page) => `${import_constants.PAGINATOR_REGION_FOCUSES.OPTION_PREFIX}${page}`;
39
+ const getPageFromRegion = (region) => {
40
+ if (!region.startsWith(import_constants.PAGINATOR_REGION_FOCUSES.OPTION_PREFIX)) return null;
41
+ return Number(region.slice(import_constants.PAGINATOR_REGION_FOCUSES.OPTION_PREFIX.length));
42
+ };
43
+ const useFocusTracker = ({ amountOfPages, pageIndex }) => {
44
+ const [focusRegion, setFocusRegion] = (0, import_react.useState)(import_constants.PAGINATOR_REGION_FOCUSES.RESET);
45
+ const focusedPage = (0, import_react.useMemo)(() => getPageFromRegion(focusRegion), [focusRegion]);
46
+ const clampPage = (0, import_react.useCallback)((page) => Math.min(Math.max(page, 1), amountOfPages), [amountOfPages]);
47
+ const trackFocusRegionReset = (0, import_react.useCallback)(() => setFocusRegion(import_constants.PAGINATOR_REGION_FOCUSES.RESET), []);
48
+ const trackFocusTrigger = (0, import_react.useCallback)(() => setFocusRegion(import_constants.PAGINATOR_REGION_FOCUSES.TRIGGER), []);
49
+ const trackFocusOption = (0, import_react.useCallback)(
50
+ (page) => {
51
+ if (amountOfPages > 0) setFocusRegion(getOptionRegionId(clampPage(page)));
52
+ },
53
+ [amountOfPages, clampPage]
54
+ );
55
+ const trackFocusSelectedOption = (0, import_react.useCallback)(() => trackFocusOption(pageIndex), [pageIndex, trackFocusOption]);
56
+ return (0, import_react.useMemo)(
57
+ () => ({
58
+ focusRegion,
59
+ focusedPage,
60
+ clampPage,
61
+ trackFocusRegionReset,
62
+ trackFocusTrigger,
63
+ trackFocusOption,
64
+ trackFocusSelectedOption
65
+ }),
66
+ [
67
+ focusRegion,
68
+ focusedPage,
69
+ clampPage,
70
+ trackFocusRegionReset,
71
+ trackFocusTrigger,
72
+ trackFocusOption,
73
+ trackFocusSelectedOption
74
+ ]
75
+ );
76
+ };
77
+ //# sourceMappingURL=useFocusTracker.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../src/parts/DSPaginator/config/useFocusTracker.ts", "../../../../../../../../scripts/build/transpile/react-shim.js"],
4
+ "sourcesContent": ["import { useCallback, useMemo, useState } from 'react';\nimport { PAGINATOR_REGION_FOCUSES } from '../constants/index.js';\n\ntype FocusTrackerConfigT = {\n amountOfPages: number;\n pageIndex: number;\n};\n\n// the identity of an option is the page it represents: stable, never the position in the (virtualized) DOM\nexport const getOptionRegionId = (page: number) => `${PAGINATOR_REGION_FOCUSES.OPTION_PREFIX}${page}`;\n\nconst getPageFromRegion = (region: string): number | null => {\n if (!region.startsWith(PAGINATOR_REGION_FOCUSES.OPTION_PREFIX)) return null;\n return Number(region.slice(PAGINATOR_REGION_FOCUSES.OPTION_PREFIX.length));\n};\n\n/**\n * Focus tracker (see .github/memories/project_focus_tracker.md): the handlers declare WHAT must receive focus\n * (a semantic identity), each part checks whether it IS that identity, and only the matching part focuses itself\n * from its ref callback. Nothing in here calls `.focus()`.\n */\nexport const useFocusTracker = ({ amountOfPages, pageIndex }: FocusTrackerConfigT) => {\n const [focusRegion, setFocusRegion] = useState<string>(PAGINATOR_REGION_FOCUSES.RESET);\n\n const focusedPage = useMemo(() => getPageFromRegion(focusRegion), [focusRegion]);\n\n const clampPage = useCallback((page: number) => Math.min(Math.max(page, 1), amountOfPages), [amountOfPages]);\n\n const trackFocusRegionReset = useCallback(() => setFocusRegion(PAGINATOR_REGION_FOCUSES.RESET), []);\n const trackFocusTrigger = useCallback(() => setFocusRegion(PAGINATOR_REGION_FOCUSES.TRIGGER), []);\n const trackFocusOption = useCallback(\n (page: number) => {\n if (amountOfPages > 0) setFocusRegion(getOptionRegionId(clampPage(page)));\n },\n [amountOfPages, clampPage],\n );\n const trackFocusSelectedOption = useCallback(() => trackFocusOption(pageIndex), [pageIndex, trackFocusOption]);\n\n return useMemo(\n () => ({\n focusRegion,\n focusedPage,\n clampPage,\n trackFocusRegionReset,\n trackFocusTrigger,\n trackFocusOption,\n trackFocusSelectedOption,\n }),\n [\n focusRegion,\n focusedPage,\n clampPage,\n trackFocusRegionReset,\n trackFocusTrigger,\n trackFocusOption,\n trackFocusSelectedOption,\n ],\n );\n};\n", "import * as React from 'react';\nexport { React };\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADAvB,mBAA+C;AAC/C,uBAAyC;AAQlC,MAAM,oBAAoB,CAAC,SAAiB,GAAG,0CAAyB,aAAa,GAAG,IAAI;AAEnG,MAAM,oBAAoB,CAAC,WAAkC;AAC3D,MAAI,CAAC,OAAO,WAAW,0CAAyB,aAAa,EAAG,QAAO;AACvE,SAAO,OAAO,OAAO,MAAM,0CAAyB,cAAc,MAAM,CAAC;AAC3E;AAOO,MAAM,kBAAkB,CAAC,EAAE,eAAe,UAAU,MAA2B;AACpF,QAAM,CAAC,aAAa,cAAc,QAAI,uBAAiB,0CAAyB,KAAK;AAErF,QAAM,kBAAc,sBAAQ,MAAM,kBAAkB,WAAW,GAAG,CAAC,WAAW,CAAC;AAE/E,QAAM,gBAAY,0BAAY,CAAC,SAAiB,KAAK,IAAI,KAAK,IAAI,MAAM,CAAC,GAAG,aAAa,GAAG,CAAC,aAAa,CAAC;AAE3G,QAAM,4BAAwB,0BAAY,MAAM,eAAe,0CAAyB,KAAK,GAAG,CAAC,CAAC;AAClG,QAAM,wBAAoB,0BAAY,MAAM,eAAe,0CAAyB,OAAO,GAAG,CAAC,CAAC;AAChG,QAAM,uBAAmB;AAAA,IACvB,CAAC,SAAiB;AAChB,UAAI,gBAAgB,EAAG,gBAAe,kBAAkB,UAAU,IAAI,CAAC,CAAC;AAAA,IAC1E;AAAA,IACA,CAAC,eAAe,SAAS;AAAA,EAC3B;AACA,QAAM,+BAA2B,0BAAY,MAAM,iBAAiB,SAAS,GAAG,CAAC,WAAW,gBAAgB,CAAC;AAE7G,aAAO;AAAA,IACL,OAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA;AAAA,MACE;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AACF;",
6
+ "names": []
7
+ }