@salt-ds/lab 1.0.0-alpha.25 → 1.0.0-alpha.26

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 (118) hide show
  1. package/css/salt-lab.css +86 -121
  2. package/dist-cjs/combo-box-next/ComboBoxNext.js +1 -1
  3. package/dist-cjs/combo-box-next/ComboBoxNext.js.map +1 -1
  4. package/dist-cjs/dropdown-next/DropdownNext.js +1 -2
  5. package/dist-cjs/dropdown-next/DropdownNext.js.map +1 -1
  6. package/dist-cjs/index.js +4 -0
  7. package/dist-cjs/index.js.map +1 -1
  8. package/dist-cjs/pagination/CompactInput.css.js +6 -0
  9. package/dist-cjs/pagination/CompactInput.css.js.map +1 -0
  10. package/dist-cjs/pagination/CompactInput.js +31 -35
  11. package/dist-cjs/pagination/CompactInput.js.map +1 -1
  12. package/dist-cjs/pagination/CompactPaginator.css.js +6 -0
  13. package/dist-cjs/pagination/CompactPaginator.css.js.map +1 -0
  14. package/dist-cjs/pagination/CompactPaginator.js +76 -0
  15. package/dist-cjs/pagination/CompactPaginator.js.map +1 -0
  16. package/dist-cjs/pagination/GoToInput.css.js +6 -0
  17. package/dist-cjs/pagination/GoToInput.css.js.map +1 -0
  18. package/dist-cjs/pagination/GoToInput.js +37 -59
  19. package/dist-cjs/pagination/GoToInput.js.map +1 -1
  20. package/dist-cjs/pagination/PageButton.css.js +6 -0
  21. package/dist-cjs/pagination/PageButton.css.js.map +1 -0
  22. package/dist-cjs/pagination/PageButton.js +34 -33
  23. package/dist-cjs/pagination/PageButton.js.map +1 -1
  24. package/dist-cjs/pagination/PageRanges.css.js +6 -0
  25. package/dist-cjs/pagination/PageRanges.css.js.map +1 -0
  26. package/dist-cjs/pagination/PageRanges.js +73 -0
  27. package/dist-cjs/pagination/PageRanges.js.map +1 -0
  28. package/dist-cjs/pagination/Pagination.css.js +1 -1
  29. package/dist-cjs/pagination/Pagination.js +21 -38
  30. package/dist-cjs/pagination/Pagination.js.map +1 -1
  31. package/dist-cjs/pagination/PaginationContext.js +1 -6
  32. package/dist-cjs/pagination/PaginationContext.js.map +1 -1
  33. package/dist-cjs/pagination/Paginator.css.js +6 -0
  34. package/dist-cjs/pagination/Paginator.css.js.map +1 -0
  35. package/dist-cjs/pagination/Paginator.js +33 -43
  36. package/dist-cjs/pagination/Paginator.js.map +1 -1
  37. package/dist-cjs/pagination/usePaginationContext.js +1 -1
  38. package/dist-cjs/pagination/usePaginationContext.js.map +1 -1
  39. package/dist-cjs/pill-next/PillNext.css.js +1 -1
  40. package/dist-cjs/pill-next/PillNext.js +26 -31
  41. package/dist-cjs/pill-next/PillNext.js.map +1 -1
  42. package/dist-es/combo-box-next/ComboBoxNext.js +1 -1
  43. package/dist-es/combo-box-next/ComboBoxNext.js.map +1 -1
  44. package/dist-es/dropdown-next/DropdownNext.js +1 -2
  45. package/dist-es/dropdown-next/DropdownNext.js.map +1 -1
  46. package/dist-es/index.js +2 -0
  47. package/dist-es/index.js.map +1 -1
  48. package/dist-es/pagination/CompactInput.css.js +4 -0
  49. package/dist-es/pagination/CompactInput.css.js.map +1 -0
  50. package/dist-es/pagination/CompactInput.js +32 -36
  51. package/dist-es/pagination/CompactInput.js.map +1 -1
  52. package/dist-es/pagination/CompactPaginator.css.js +4 -0
  53. package/dist-es/pagination/CompactPaginator.css.js.map +1 -0
  54. package/dist-es/pagination/CompactPaginator.js +72 -0
  55. package/dist-es/pagination/CompactPaginator.js.map +1 -0
  56. package/dist-es/pagination/GoToInput.css.js +4 -0
  57. package/dist-es/pagination/GoToInput.css.js.map +1 -0
  58. package/dist-es/pagination/GoToInput.js +40 -62
  59. package/dist-es/pagination/GoToInput.js.map +1 -1
  60. package/dist-es/pagination/PageButton.css.js +4 -0
  61. package/dist-es/pagination/PageButton.css.js.map +1 -0
  62. package/dist-es/pagination/PageButton.js +34 -33
  63. package/dist-es/pagination/PageButton.js.map +1 -1
  64. package/dist-es/pagination/PageRanges.css.js +4 -0
  65. package/dist-es/pagination/PageRanges.css.js.map +1 -0
  66. package/dist-es/pagination/PageRanges.js +69 -0
  67. package/dist-es/pagination/PageRanges.js.map +1 -0
  68. package/dist-es/pagination/Pagination.css.js +1 -1
  69. package/dist-es/pagination/Pagination.js +20 -37
  70. package/dist-es/pagination/Pagination.js.map +1 -1
  71. package/dist-es/pagination/PaginationContext.js +1 -6
  72. package/dist-es/pagination/PaginationContext.js.map +1 -1
  73. package/dist-es/pagination/Paginator.css.js +4 -0
  74. package/dist-es/pagination/Paginator.css.js.map +1 -0
  75. package/dist-es/pagination/Paginator.js +32 -42
  76. package/dist-es/pagination/Paginator.js.map +1 -1
  77. package/dist-es/pagination/usePaginationContext.js +1 -1
  78. package/dist-es/pagination/usePaginationContext.js.map +1 -1
  79. package/dist-es/pill-next/PillNext.css.js +1 -1
  80. package/dist-es/pill-next/PillNext.js +28 -33
  81. package/dist-es/pill-next/PillNext.js.map +1 -1
  82. package/dist-types/combo-box-next/useComboBox.d.ts +2 -2
  83. package/dist-types/combo-box-next/useComboboxPortal.d.ts +2 -2
  84. package/dist-types/dialog/useDialog.d.ts +6 -7
  85. package/dist-types/drawer/useDrawer.d.ts +6 -7
  86. package/dist-types/dropdown-next/useDropdownNext.d.ts +12 -4
  87. package/dist-types/pagination/CompactInput.d.ts +2 -8
  88. package/dist-types/pagination/CompactPaginator.d.ts +1 -0
  89. package/dist-types/pagination/GoToInput.d.ts +13 -4
  90. package/dist-types/pagination/PageButton.d.ts +2 -3
  91. package/dist-types/pagination/PageRanges.d.ts +5 -0
  92. package/dist-types/pagination/Pagination.d.ts +15 -4
  93. package/dist-types/pagination/PaginationContext.d.ts +2 -4
  94. package/dist-types/pagination/Paginator.d.ts +6 -3
  95. package/dist-types/pagination/index.d.ts +2 -0
  96. package/dist-types/pill-next/PillNext.d.ts +1 -4
  97. package/dist-types/tabs/drag-drop/drag-utils.d.ts +6 -6
  98. package/package.json +3 -3
  99. package/dist-cjs/pagination/ArrowButton.js +0 -64
  100. package/dist-cjs/pagination/ArrowButton.js.map +0 -1
  101. package/dist-cjs/pagination/CompactControls.js +0 -38
  102. package/dist-cjs/pagination/CompactControls.js.map +0 -1
  103. package/dist-cjs/pagination/RegularControls.js +0 -58
  104. package/dist-cjs/pagination/RegularControls.js.map +0 -1
  105. package/dist-cjs/pagination/utils.js +0 -10
  106. package/dist-cjs/pagination/utils.js.map +0 -1
  107. package/dist-es/pagination/ArrowButton.js +0 -60
  108. package/dist-es/pagination/ArrowButton.js.map +0 -1
  109. package/dist-es/pagination/CompactControls.js +0 -34
  110. package/dist-es/pagination/CompactControls.js.map +0 -1
  111. package/dist-es/pagination/RegularControls.js +0 -54
  112. package/dist-es/pagination/RegularControls.js.map +0 -1
  113. package/dist-es/pagination/utils.js +0 -6
  114. package/dist-es/pagination/utils.js.map +0 -1
  115. package/dist-types/pagination/ArrowButton.d.ts +0 -7
  116. package/dist-types/pagination/CompactControls.d.ts +0 -8
  117. package/dist-types/pagination/RegularControls.d.ts +0 -8
  118. package/dist-types/pagination/utils.d.ts +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CompactPaginator.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
@@ -0,0 +1,72 @@
1
+ import { jsxs, jsx } from 'react/jsx-runtime';
2
+ import { forwardRef } from 'react';
3
+ import { clsx } from 'clsx';
4
+ import { makePrefixer, Button, Text } from '@salt-ds/core';
5
+ import { ChevronLeftIcon, ChevronRightIcon } from '@salt-ds/icons';
6
+ import { PageButton } from './PageButton.js';
7
+ import { usePaginationContext } from './usePaginationContext.js';
8
+ import { useWindow } from '@salt-ds/window';
9
+ import { useComponentCssInjection } from '@salt-ds/styles';
10
+ import css_248z from './CompactPaginator.css.js';
11
+
12
+ const withBaseName = makePrefixer("saltCompactPaginator");
13
+ const CompactPaginator = forwardRef(function CompactPaginator2({ children, className, ...restProps }, ref) {
14
+ const targetWindow = useWindow();
15
+ useComponentCssInjection({
16
+ testId: "salt-compact-paginator",
17
+ css: css_248z,
18
+ window: targetWindow
19
+ });
20
+ const { count, page, onPageChange } = usePaginationContext();
21
+ const onPreviousPage = (event) => {
22
+ onPageChange(event, Math.max(1, page - 1));
23
+ };
24
+ const onNextPage = (event) => {
25
+ onPageChange(event, Math.min(page + 1, count));
26
+ };
27
+ const isOnFirstPage = page === 1;
28
+ const isOnLastPage = page === count;
29
+ return /* @__PURE__ */ jsxs("div", {
30
+ className: clsx(withBaseName(), className),
31
+ ...restProps,
32
+ ref,
33
+ children: [
34
+ /* @__PURE__ */ jsx(Button, {
35
+ variant: "secondary",
36
+ "aria-label": "Previous Page",
37
+ onClick: onPreviousPage,
38
+ disabled: isOnFirstPage,
39
+ className: withBaseName("arrowButton"),
40
+ children: /* @__PURE__ */ jsx(ChevronLeftIcon, {
41
+ "aria-hidden": true
42
+ })
43
+ }),
44
+ children ? children : /* @__PURE__ */ jsx(PageButton, {
45
+ page,
46
+ disabled: true
47
+ }),
48
+ /* @__PURE__ */ jsx(Text, {
49
+ as: "span",
50
+ variant: "secondary",
51
+ children: "of"
52
+ }),
53
+ /* @__PURE__ */ jsx(PageButton, {
54
+ page: count,
55
+ disabled: isOnLastPage
56
+ }),
57
+ /* @__PURE__ */ jsx(Button, {
58
+ variant: "secondary",
59
+ "aria-label": "Next Page",
60
+ onClick: onNextPage,
61
+ disabled: isOnLastPage,
62
+ className: withBaseName("arrowButton"),
63
+ children: /* @__PURE__ */ jsx(ChevronRightIcon, {
64
+ "aria-hidden": true
65
+ })
66
+ })
67
+ ]
68
+ });
69
+ });
70
+
71
+ export { CompactPaginator };
72
+ //# sourceMappingURL=CompactPaginator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CompactPaginator.js","sources":["../src/pagination/CompactPaginator.tsx"],"sourcesContent":["import { ComponentPropsWithoutRef, forwardRef, MouseEventHandler } from \"react\";\nimport { clsx } from \"clsx\";\nimport { Button, Text, makePrefixer } from \"@salt-ds/core\";\nimport { ChevronLeftIcon, ChevronRightIcon } from \"@salt-ds/icons\";\nimport { PageButton } from \"./PageButton\";\nimport { usePaginationContext } from \"./usePaginationContext\";\n\nimport { useWindow } from \"@salt-ds/window\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\n\nimport compactPaginatorCss from \"./CompactPaginator.css\";\n\nconst withBaseName = makePrefixer(\"saltCompactPaginator\");\n\nexport const CompactPaginator = forwardRef<\n HTMLDivElement,\n ComponentPropsWithoutRef<\"div\">\n>(function CompactPaginator({ children, className, ...restProps }, ref) {\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-compact-paginator\",\n css: compactPaginatorCss,\n window: targetWindow,\n });\n\n const { count, page, onPageChange } = usePaginationContext();\n\n const onPreviousPage: MouseEventHandler<HTMLButtonElement> = (event) => {\n onPageChange(event, Math.max(1, page - 1));\n };\n\n const onNextPage: MouseEventHandler<HTMLButtonElement> = (event) => {\n onPageChange(event, Math.min(page + 1, count));\n };\n\n const isOnFirstPage = page === 1;\n const isOnLastPage = page === count;\n\n return (\n <div className={clsx(withBaseName(), className)} {...restProps} ref={ref}>\n <Button\n variant=\"secondary\"\n aria-label=\"Previous Page\"\n onClick={onPreviousPage}\n disabled={isOnFirstPage}\n className={withBaseName(\"arrowButton\")}\n >\n <ChevronLeftIcon aria-hidden />\n </Button>\n {children ? children : <PageButton page={page} disabled />}\n <Text as=\"span\" variant=\"secondary\">\n of\n </Text>\n <PageButton page={count} disabled={isOnLastPage} />\n <Button\n variant=\"secondary\"\n aria-label=\"Next Page\"\n onClick={onNextPage}\n disabled={isOnLastPage}\n className={withBaseName(\"arrowButton\")}\n >\n <ChevronRightIcon aria-hidden />\n </Button>\n </div>\n );\n});\n"],"names":["CompactPaginator","compactPaginatorCss"],"mappings":";;;;;;;;;;;AAYA,MAAM,YAAA,GAAe,aAAa,sBAAsB,CAAA,CAAA;AAE3C,MAAA,gBAAA,GAAmB,WAG9B,SAASA,iBAAAA,CAAiB,EAAE,QAAU,EAAA,SAAA,EAAA,GAAc,SAAU,EAAA,EAAG,GAAK,EAAA;AACtE,EAAA,MAAM,eAAe,SAAU,EAAA,CAAA;AAC/B,EAAyB,wBAAA,CAAA;AAAA,IACvB,MAAQ,EAAA,wBAAA;AAAA,IACR,GAAK,EAAAC,QAAA;AAAA,IACL,MAAQ,EAAA,YAAA;AAAA,GACT,CAAA,CAAA;AAED,EAAA,MAAM,EAAE,KAAA,EAAO,IAAM,EAAA,YAAA,KAAiB,oBAAqB,EAAA,CAAA;AAE3D,EAAM,MAAA,cAAA,GAAuD,CAAC,KAAU,KAAA;AACtE,IAAA,YAAA,CAAa,OAAO,IAAK,CAAA,GAAA,CAAI,CAAG,EAAA,IAAA,GAAO,CAAC,CAAC,CAAA,CAAA;AAAA,GAC3C,CAAA;AAEA,EAAM,MAAA,UAAA,GAAmD,CAAC,KAAU,KAAA;AAClE,IAAA,YAAA,CAAa,OAAO,IAAK,CAAA,GAAA,CAAI,IAAO,GAAA,CAAA,EAAG,KAAK,CAAC,CAAA,CAAA;AAAA,GAC/C,CAAA;AAEA,EAAA,MAAM,gBAAgB,IAAS,KAAA,CAAA,CAAA;AAC/B,EAAA,MAAM,eAAe,IAAS,KAAA,KAAA,CAAA;AAE9B,EAAA,uBACG,IAAA,CAAA,KAAA,EAAA;AAAA,IAAI,SAAW,EAAA,IAAA,CAAK,YAAa,EAAA,EAAG,SAAS,CAAA;AAAA,IAAI,GAAG,SAAA;AAAA,IAAW,GAAA;AAAA,IAC9D,QAAA,EAAA;AAAA,sBAAC,GAAA,CAAA,MAAA,EAAA;AAAA,QACC,OAAQ,EAAA,WAAA;AAAA,QACR,YAAW,EAAA,eAAA;AAAA,QACX,OAAS,EAAA,cAAA;AAAA,QACT,QAAU,EAAA,aAAA;AAAA,QACV,SAAA,EAAW,aAAa,aAAa,CAAA;AAAA,QAErC,QAAC,kBAAA,GAAA,CAAA,eAAA,EAAA;AAAA,UAAgB,aAAW,EAAA,IAAA;AAAA,SAAC,CAAA;AAAA,OAC/B,CAAA;AAAA,MACC,QAAA,GAAW,2BAAY,GAAA,CAAA,UAAA,EAAA;AAAA,QAAW,IAAA;AAAA,QAAY,QAAQ,EAAA,IAAA;AAAA,OAAC,CAAA;AAAA,sBACvD,GAAA,CAAA,IAAA,EAAA;AAAA,QAAK,EAAG,EAAA,MAAA;AAAA,QAAO,OAAQ,EAAA,WAAA;AAAA,QAAY,QAAA,EAAA,IAAA;AAAA,OAEpC,CAAA;AAAA,sBACC,GAAA,CAAA,UAAA,EAAA;AAAA,QAAW,IAAM,EAAA,KAAA;AAAA,QAAO,QAAU,EAAA,YAAA;AAAA,OAAc,CAAA;AAAA,sBAChD,GAAA,CAAA,MAAA,EAAA;AAAA,QACC,OAAQ,EAAA,WAAA;AAAA,QACR,YAAW,EAAA,WAAA;AAAA,QACX,OAAS,EAAA,UAAA;AAAA,QACT,QAAU,EAAA,YAAA;AAAA,QACV,SAAA,EAAW,aAAa,aAAa,CAAA;AAAA,QAErC,QAAC,kBAAA,GAAA,CAAA,gBAAA,EAAA;AAAA,UAAiB,aAAW,EAAA,IAAA;AAAA,SAAC,CAAA;AAAA,OAChC,CAAA;AAAA,KAAA;AAAA,GACF,CAAA,CAAA;AAEJ,CAAC;;;;"}
@@ -0,0 +1,4 @@
1
+ var css_248z = ".saltGoToInput.saltFormField {\n display: flex;\n flex-direction: row;\n gap: var(--salt-spacing-100);\n align-items: baseline;\n text-wrap: nowrap;\n}\n\n.saltGoToInput-input {\n height: var(--salt-size-base);\n --saltInput-minWidth: unset;\n}\n\n.saltGoToInput-inputDefaultSize {\n --saltInput-minWidth: var(--salt-size-base);\n max-width: var(--salt-size-base);\n width: var(--salt-size-base);\n}\n";
2
+
3
+ export { css_248z as default };
4
+ //# sourceMappingURL=GoToInput.css.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GoToInput.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
@@ -1,92 +1,70 @@
1
- import { jsx } from 'react/jsx-runtime';
1
+ import { jsxs, jsx } from 'react/jsx-runtime';
2
2
  import { clsx } from 'clsx';
3
- import { forwardRef, useRef, useState, useCallback, useEffect } from 'react';
4
- import { useId, useForkRef, useIsomorphicLayoutEffect } from '@salt-ds/core';
3
+ import { forwardRef, useState } from 'react';
4
+ import { makePrefixer, FormField, FormFieldLabel, Input } from '@salt-ds/core';
5
5
  import { usePaginationContext } from './usePaginationContext.js';
6
- import { withBaseName } from './utils.js';
7
- import { FormFieldLegacy } from '../form-field-legacy/FormFieldLegacy.js';
8
- import '../form-field-legacy/FormLabel.js';
9
- import { InputLegacy } from '../input-legacy/InputLegacy.js';
10
- import '../input-legacy/StaticInputAdornment.js';
6
+ import { useWindow } from '@salt-ds/window';
7
+ import { useComponentCssInjection } from '@salt-ds/styles';
8
+ import css_248z from './GoToInput.css.js';
11
9
 
10
+ const withBaseName = makePrefixer("saltGoToInput");
12
11
  const GoToInput = forwardRef(
13
- ({
12
+ function GoToInput2({
14
13
  className,
15
- id: idProp,
14
+ inputRef,
15
+ inputVariant = "primary",
16
16
  label = "Go to",
17
- FormFieldProps: { ...restFormFieldLegacyProps } = {},
18
17
  ...restProps
19
- }, forwardedRef) => {
20
- const { compact, count, onPageChange, paginatorElement } = usePaginationContext();
21
- const id = useId(idProp);
22
- const rootRef = useRef(null);
23
- const forkedRef = useForkRef(rootRef, forwardedRef);
18
+ }, ref) {
19
+ const targetWindow = useWindow();
20
+ useComponentCssInjection({
21
+ testId: "salt-go-to-input",
22
+ css: css_248z,
23
+ window: targetWindow
24
+ });
25
+ const { count, onPageChange } = usePaginationContext();
24
26
  const [inputValue, setInputValue] = useState("");
25
- const onChange = useCallback(
26
- (event) => {
27
- setInputValue(event.target.value);
28
- },
29
- [setInputValue]
30
- );
27
+ const onChange = (event) => {
28
+ setInputValue(event.target.value);
29
+ };
31
30
  const onKeyDown = (event) => {
32
31
  if (event.key === "Enter") {
33
32
  const pageValue = Number(inputValue);
34
33
  if (!inputValue.startsWith("0") && !isNaN(pageValue) && pageValue > 0 && pageValue <= count) {
35
- onPageChange(pageValue);
34
+ onPageChange(event, pageValue);
36
35
  }
37
36
  setInputValue("");
38
37
  }
39
38
  };
40
- const onBlur = useCallback(() => {
39
+ const onBlur = () => {
41
40
  setInputValue("");
42
- }, [setInputValue]);
43
- useEffect(() => {
44
- if (compact) {
45
- setInputValue("");
46
- }
47
- }, [compact]);
48
- const [position, setPosition] = useState();
49
- useIsomorphicLayoutEffect(() => {
50
- if (paginatorElement && !compact && rootRef.current) {
51
- setPosition(
52
- rootRef.current.compareDocumentPosition(paginatorElement) === Node.DOCUMENT_POSITION_PRECEDING ? "right" : "left"
53
- );
54
- }
55
- }, [paginatorElement, compact, rootRef.current]);
56
- if (compact) {
57
- return null;
58
- }
41
+ };
59
42
  const widthCh = `${`${count}`.length}ch`;
60
- return /* @__PURE__ */ jsx("span", {
61
- className: clsx(
62
- withBaseName("goToInputWrapper"),
63
- { [withBaseName(`${position}GoToInput`)]: position },
64
- className
65
- ),
66
- ref: forkedRef,
67
- children: /* @__PURE__ */ jsx(FormFieldLegacy, {
68
- className: withBaseName("goToInputField"),
69
- fullWidth: false,
70
- label,
71
- labelPlacement: "left",
72
- ...restFormFieldLegacyProps,
73
- children: /* @__PURE__ */ jsx(InputLegacy, {
74
- className: clsx(withBaseName("goToInput"), {
75
- [withBaseName("goToInputFixed")]: count < 100
43
+ return /* @__PURE__ */ jsxs(FormField, {
44
+ labelPlacement: "left",
45
+ className: clsx(withBaseName(), className),
46
+ ref,
47
+ ...restProps,
48
+ children: [
49
+ /* @__PURE__ */ jsx(FormFieldLabel, {
50
+ children: label
51
+ }),
52
+ /* @__PURE__ */ jsx(Input, {
53
+ className: clsx(withBaseName("input"), {
54
+ [withBaseName("inputDefaultSize")]: count < 100
76
55
  }),
77
- id,
56
+ ref: inputRef,
78
57
  inputProps: {
79
- "aria-labelledby": id,
80
- "aria-label": `Page, ${count} total`,
81
58
  style: { width: widthCh }
82
59
  },
83
60
  onBlur,
84
61
  onChange,
85
62
  onKeyDown,
86
63
  value: inputValue,
87
- textAlign: "center"
64
+ textAlign: "center",
65
+ variant: inputVariant
88
66
  })
89
- })
67
+ ]
90
68
  });
91
69
  }
92
70
  );
@@ -1 +1 @@
1
- {"version":3,"file":"GoToInput.js","sources":["../src/pagination/GoToInput.tsx"],"sourcesContent":["import { clsx } from \"clsx\";\nimport {\n ChangeEventHandler,\n forwardRef,\n HTMLAttributes,\n KeyboardEventHandler,\n useCallback,\n useEffect,\n useRef,\n useState,\n} from \"react\";\nimport { useForkRef, useId, useIsomorphicLayoutEffect } from \"@salt-ds/core\";\nimport { usePaginationContext } from \"./usePaginationContext\";\nimport { withBaseName } from \"./utils\";\nimport {\n FormFieldLegacy as FormField,\n FormFieldLegacyProps as FormFieldProps,\n} from \"../form-field-legacy\";\nimport { InputLegacy as Input } from \"../input-legacy\";\n\nexport interface GoToInputProps extends HTMLAttributes<HTMLSpanElement> {\n label?: string;\n FormFieldProps?: Partial<FormFieldProps>;\n}\n\nexport const GoToInput = forwardRef<HTMLSpanElement, GoToInputProps>(\n (\n {\n className,\n id: idProp,\n label = \"Go to\",\n FormFieldProps: { ...restFormFieldLegacyProps } = {},\n ...restProps\n },\n\n forwardedRef\n ) => {\n const { compact, count, onPageChange, paginatorElement } =\n usePaginationContext();\n\n const id = useId(idProp);\n\n const rootRef = useRef<HTMLSpanElement>(null);\n const forkedRef = useForkRef(rootRef, forwardedRef);\n\n const [inputValue, setInputValue] = useState(\"\");\n\n const onChange: ChangeEventHandler<HTMLInputElement> = useCallback(\n (event) => {\n setInputValue(event.target.value);\n },\n [setInputValue]\n );\n\n const onKeyDown: KeyboardEventHandler<HTMLInputElement> = (event) => {\n if (event.key === \"Enter\") {\n const pageValue = Number(inputValue);\n if (\n !inputValue.startsWith(\"0\") &&\n !isNaN(pageValue) &&\n pageValue > 0 &&\n pageValue <= count\n ) {\n onPageChange(pageValue);\n }\n setInputValue(\"\");\n }\n };\n\n const onBlur = useCallback(() => {\n setInputValue(\"\");\n }, [setInputValue]);\n\n useEffect(() => {\n if (compact) {\n setInputValue(\"\");\n }\n }, [compact]);\n\n const [position, setPosition] = useState<\"left\" | \"right\">();\n\n useIsomorphicLayoutEffect(() => {\n if (paginatorElement && !compact && rootRef.current) {\n setPosition(\n rootRef.current.compareDocumentPosition(paginatorElement) ===\n Node.DOCUMENT_POSITION_PRECEDING\n ? \"right\"\n : \"left\"\n );\n }\n }, [paginatorElement, compact, rootRef.current]);\n\n if (compact) {\n return null;\n }\n\n const widthCh = `${`${count}`.length}ch`;\n\n return (\n <span\n className={clsx(\n withBaseName(\"goToInputWrapper\"),\n { [withBaseName(`${position!}GoToInput`)]: position },\n className\n )}\n ref={forkedRef}\n >\n <FormField\n className={withBaseName(\"goToInputField\")}\n fullWidth={false}\n label={label}\n labelPlacement=\"left\"\n {...restFormFieldLegacyProps}\n >\n <Input\n className={clsx(withBaseName(\"goToInput\"), {\n [withBaseName(\"goToInputFixed\")]: count < 100,\n })}\n id={id}\n inputProps={{\n \"aria-labelledby\": id,\n \"aria-label\": `Page, ${count} total`,\n style: { width: widthCh },\n }}\n onBlur={onBlur}\n onChange={onChange}\n onKeyDown={onKeyDown}\n value={inputValue}\n textAlign={\"center\"}\n />\n </FormField>\n </span>\n );\n }\n);\n"],"names":["FormField","Input"],"mappings":"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"}
1
+ {"version":3,"file":"GoToInput.js","sources":["../src/pagination/GoToInput.tsx"],"sourcesContent":["import { clsx } from \"clsx\";\nimport {\n ChangeEventHandler,\n forwardRef,\n HTMLAttributes,\n KeyboardEventHandler,\n Ref,\n useState,\n} from \"react\";\nimport { FormField, FormFieldLabel, Input, makePrefixer } from \"@salt-ds/core\";\nimport { usePaginationContext } from \"./usePaginationContext\";\n\nimport { useWindow } from \"@salt-ds/window\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\n\nimport goToInputCss from \"./GoToInput.css\";\n\nconst withBaseName = makePrefixer(\"saltGoToInput\");\nexport interface GoToInputProps extends HTMLAttributes<HTMLSpanElement> {\n /**\n * Input label.\n */\n label?: string;\n /**\n * Optional ref for the input component\n */\n inputRef?: Ref<HTMLInputElement>;\n /**\n * Change input variant.\n */\n inputVariant?: \"primary\" | \"secondary\";\n}\n\nexport const GoToInput = forwardRef<HTMLDivElement, GoToInputProps>(\n function GoToInput(\n {\n className,\n inputRef,\n inputVariant = \"primary\",\n label = \"Go to\",\n ...restProps\n },\n ref\n ) {\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-go-to-input\",\n css: goToInputCss,\n window: targetWindow,\n });\n\n const { count, onPageChange } = usePaginationContext();\n const [inputValue, setInputValue] = useState(\"\");\n\n const onChange: ChangeEventHandler<HTMLInputElement> = (event) => {\n setInputValue(event.target.value);\n };\n\n const onKeyDown: KeyboardEventHandler<HTMLInputElement> = (event) => {\n if (event.key === \"Enter\") {\n const pageValue = Number(inputValue);\n if (\n !inputValue.startsWith(\"0\") &&\n !isNaN(pageValue) &&\n pageValue > 0 &&\n pageValue <= count\n ) {\n onPageChange(event, pageValue);\n }\n setInputValue(\"\");\n }\n };\n\n const onBlur = () => {\n setInputValue(\"\");\n };\n\n const widthCh = `${`${count}`.length}ch`;\n\n return (\n <FormField\n labelPlacement=\"left\"\n className={clsx(withBaseName(), className)}\n ref={ref}\n {...restProps}\n >\n <FormFieldLabel>{label}</FormFieldLabel>\n <Input\n className={clsx(withBaseName(\"input\"), {\n [withBaseName(\"inputDefaultSize\")]: count < 100,\n })}\n ref={inputRef}\n inputProps={{\n style: { width: widthCh },\n }}\n onBlur={onBlur}\n onChange={onChange}\n onKeyDown={onKeyDown}\n value={inputValue}\n textAlign={\"center\"}\n variant={inputVariant}\n />\n </FormField>\n );\n }\n);\n"],"names":["GoToInput","goToInputCss"],"mappings":";;;;;;;;;AAiBA,MAAM,YAAA,GAAe,aAAa,eAAe,CAAA,CAAA;AAgB1C,MAAM,SAAY,GAAA,UAAA;AAAA,EACvB,SAASA,UACP,CAAA;AAAA,IACE,SAAA;AAAA,IACA,QAAA;AAAA,IACA,YAAe,GAAA,SAAA;AAAA,IACf,KAAQ,GAAA,OAAA;AAAA,IACL,GAAA,SAAA;AAAA,KAEL,GACA,EAAA;AACA,IAAA,MAAM,eAAe,SAAU,EAAA,CAAA;AAC/B,IAAyB,wBAAA,CAAA;AAAA,MACvB,MAAQ,EAAA,kBAAA;AAAA,MACR,GAAK,EAAAC,QAAA;AAAA,MACL,MAAQ,EAAA,YAAA;AAAA,KACT,CAAA,CAAA;AAED,IAAA,MAAM,EAAE,KAAA,EAAO,YAAa,EAAA,GAAI,oBAAqB,EAAA,CAAA;AACrD,IAAA,MAAM,CAAC,UAAA,EAAY,aAAa,CAAA,GAAI,SAAS,EAAE,CAAA,CAAA;AAE/C,IAAM,MAAA,QAAA,GAAiD,CAAC,KAAU,KAAA;AAChE,MAAc,aAAA,CAAA,KAAA,CAAM,OAAO,KAAK,CAAA,CAAA;AAAA,KAClC,CAAA;AAEA,IAAM,MAAA,SAAA,GAAoD,CAAC,KAAU,KAAA;AACnE,MAAI,IAAA,KAAA,CAAM,QAAQ,OAAS,EAAA;AACzB,QAAM,MAAA,SAAA,GAAY,OAAO,UAAU,CAAA,CAAA;AACnC,QAAA,IACE,CAAC,UAAA,CAAW,UAAW,CAAA,GAAG,CAC1B,IAAA,CAAC,KAAM,CAAA,SAAS,CAChB,IAAA,SAAA,GAAY,CACZ,IAAA,SAAA,IAAa,KACb,EAAA;AACA,UAAA,YAAA,CAAa,OAAO,SAAS,CAAA,CAAA;AAAA,SAC/B;AACA,QAAA,aAAA,CAAc,EAAE,CAAA,CAAA;AAAA,OAClB;AAAA,KACF,CAAA;AAEA,IAAA,MAAM,SAAS,MAAM;AACnB,MAAA,aAAA,CAAc,EAAE,CAAA,CAAA;AAAA,KAClB,CAAA;AAEA,IAAM,MAAA,OAAA,GAAU,CAAG,EAAA,CAAA,EAAG,KAAQ,CAAA,CAAA,CAAA,MAAA,CAAA,EAAA,CAAA,CAAA;AAE9B,IAAA,uBACG,IAAA,CAAA,SAAA,EAAA;AAAA,MACC,cAAe,EAAA,MAAA;AAAA,MACf,SAAW,EAAA,IAAA,CAAK,YAAa,EAAA,EAAG,SAAS,CAAA;AAAA,MACzC,GAAA;AAAA,MACC,GAAG,SAAA;AAAA,MAEJ,QAAA,EAAA;AAAA,wBAAC,GAAA,CAAA,cAAA,EAAA;AAAA,UAAgB,QAAA,EAAA,KAAA;AAAA,SAAM,CAAA;AAAA,wBACtB,GAAA,CAAA,KAAA,EAAA;AAAA,UACC,SAAW,EAAA,IAAA,CAAK,YAAa,CAAA,OAAO,CAAG,EAAA;AAAA,YACrC,CAAC,YAAA,CAAa,kBAAkB,CAAA,GAAI,KAAQ,GAAA,GAAA;AAAA,WAC7C,CAAA;AAAA,UACD,GAAK,EAAA,QAAA;AAAA,UACL,UAAY,EAAA;AAAA,YACV,KAAA,EAAO,EAAE,KAAA,EAAO,OAAQ,EAAA;AAAA,WAC1B;AAAA,UACA,MAAA;AAAA,UACA,QAAA;AAAA,UACA,SAAA;AAAA,UACA,KAAO,EAAA,UAAA;AAAA,UACP,SAAW,EAAA,QAAA;AAAA,UACX,OAAS,EAAA,YAAA;AAAA,SACX,CAAA;AAAA,OAAA;AAAA,KACF,CAAA,CAAA;AAAA,GAEJ;AACF;;;;"}
@@ -0,0 +1,4 @@
1
+ var css_248z = ".saltPageButton {\n --saltButton-minWidth: var(--salt-size-base);\n --saltButton-fontWeight: var(--salt-text-fontWeight);\n --saltButton-height: var(--salt-size-base);\n --saltButton-text-color: var(--salt-content-primary-foreground);\n --saltButton-background-active: var(--salt-selectable-background-selected);\n --saltButton-text-color-active: var(--salt-content-primary-foreground);\n}\n\n.saltPageButton:hover,\n.saltPageButton:focus-visible {\n --saltButton-background-hover: var(--salt-selectable-background-hover);\n}\n\n.saltPageButton:disabled {\n --saltButton-text-color-disabled: var(--salt-content-secondary-foreground);\n --saltButton-cursor-disabled: var(--salt-editable-cursor-readonly);\n}\n\n.saltPageButton-selected {\n --saltButton-background: var(--salt-selectable-background-selected);\n}\n.saltPageButton-selected:focus-visible {\n --saltButton-background-hover: var(--salt-selectable-background-selected);\n}\n\n.saltPageButton-fixed {\n --saltButton-padding: 0;\n}\n";
2
+
3
+ export { css_248z as default };
4
+ //# sourceMappingURL=PageButton.css.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PageButton.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
@@ -1,39 +1,40 @@
1
1
  import { jsx } from 'react/jsx-runtime';
2
- import { withBaseName } from './utils.js';
3
- import { Button } from '@salt-ds/core';
2
+ import { forwardRef } from 'react';
4
3
  import { clsx } from 'clsx';
4
+ import { makePrefixer, Button } from '@salt-ds/core';
5
+ import { usePaginationContext } from './usePaginationContext.js';
6
+ import { useWindow } from '@salt-ds/window';
7
+ import { useComponentCssInjection } from '@salt-ds/styles';
8
+ import css_248z from './PageButton.css.js';
5
9
 
6
- const PageButton = ({
7
- page,
8
- isSelected,
9
- onPageChange,
10
- disabled
11
- }) => {
12
- const name = `Page ${page}`;
13
- const onKeyDown = (event) => {
14
- if (event.key === "Enter") {
15
- onPageChange(page);
16
- }
17
- };
18
- const onClick = () => {
19
- onPageChange(page);
20
- };
21
- return /* @__PURE__ */ jsx(Button, {
22
- "aria-label": name,
23
- name,
24
- "aria-current": isSelected ? "page" : void 0,
25
- variant: "secondary",
26
- className: clsx(withBaseName("pageButton"), {
27
- [withBaseName("pageButtonSelected")]: isSelected,
28
- [withBaseName("pageButtonFixed")]: page < 100
29
- }),
30
- onClick,
31
- onKeyDown,
32
- role: "link",
33
- disabled,
34
- children: page
35
- });
36
- };
10
+ const withBaseName = makePrefixer("saltPageButton");
11
+ const PageButton = forwardRef(
12
+ function PageButton2({ page, selected, disabled }, ref) {
13
+ const targetWindow = useWindow();
14
+ useComponentCssInjection({
15
+ testId: "salt-page-button",
16
+ css: css_248z,
17
+ window: targetWindow
18
+ });
19
+ const { count, onPageChange } = usePaginationContext();
20
+ const onClick = (event) => {
21
+ onPageChange(event, page);
22
+ };
23
+ return /* @__PURE__ */ jsx(Button, {
24
+ "aria-label": `Page ${page} of ${count}`,
25
+ "aria-current": selected ? "page" : void 0,
26
+ variant: "secondary",
27
+ className: clsx(withBaseName(), {
28
+ [withBaseName("selected")]: selected,
29
+ [withBaseName("fixed")]: page < 100
30
+ }),
31
+ onClick,
32
+ disabled,
33
+ ref,
34
+ children: page
35
+ });
36
+ }
37
+ );
37
38
 
38
39
  export { PageButton };
39
40
  //# sourceMappingURL=PageButton.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PageButton.js","sources":["../src/pagination/PageButton.tsx"],"sourcesContent":["import { KeyboardEventHandler, MouseEventHandler } from \"react\";\nimport { withBaseName } from \"./utils\";\nimport { Button } from \"@salt-ds/core\";\nimport { clsx } from \"clsx\";\n\nexport interface PageButtonProps {\n page: number;\n isSelected?: boolean;\n onPageChange: (page: number) => void;\n disabled?: boolean;\n}\n\nexport const PageButton = ({\n page,\n isSelected,\n onPageChange,\n disabled,\n}: PageButtonProps) => {\n const name = `Page ${page}`;\n\n const onKeyDown: KeyboardEventHandler<HTMLButtonElement> = (event) => {\n if (event.key === \"Enter\") {\n onPageChange(page);\n }\n };\n\n const onClick: MouseEventHandler<HTMLButtonElement> = () => {\n onPageChange(page);\n };\n\n return (\n <Button\n aria-label={name}\n name={name}\n aria-current={isSelected ? \"page\" : undefined}\n variant=\"secondary\"\n className={clsx(withBaseName(\"pageButton\"), {\n [withBaseName(\"pageButtonSelected\")]: isSelected,\n [withBaseName(\"pageButtonFixed\")]: page < 100,\n })}\n onClick={onClick}\n onKeyDown={onKeyDown}\n role=\"link\"\n disabled={disabled}\n >\n {page}\n </Button>\n );\n};\n"],"names":[],"mappings":";;;;;AAYO,MAAM,aAAa,CAAC;AAAA,EACzB,IAAA;AAAA,EACA,UAAA;AAAA,EACA,YAAA;AAAA,EACA,QAAA;AACF,CAAuB,KAAA;AACrB,EAAA,MAAM,OAAO,CAAQ,KAAA,EAAA,IAAA,CAAA,CAAA,CAAA;AAErB,EAAM,MAAA,SAAA,GAAqD,CAAC,KAAU,KAAA;AACpE,IAAI,IAAA,KAAA,CAAM,QAAQ,OAAS,EAAA;AACzB,MAAA,YAAA,CAAa,IAAI,CAAA,CAAA;AAAA,KACnB;AAAA,GACF,CAAA;AAEA,EAAA,MAAM,UAAgD,MAAM;AAC1D,IAAA,YAAA,CAAa,IAAI,CAAA,CAAA;AAAA,GACnB,CAAA;AAEA,EAAA,uBACG,GAAA,CAAA,MAAA,EAAA;AAAA,IACC,YAAY,EAAA,IAAA;AAAA,IACZ,IAAA;AAAA,IACA,cAAA,EAAc,aAAa,MAAS,GAAA,KAAA,CAAA;AAAA,IACpC,OAAQ,EAAA,WAAA;AAAA,IACR,SAAW,EAAA,IAAA,CAAK,YAAa,CAAA,YAAY,CAAG,EAAA;AAAA,MAC1C,CAAC,YAAa,CAAA,oBAAoB,CAAI,GAAA,UAAA;AAAA,MACtC,CAAC,YAAA,CAAa,iBAAiB,CAAA,GAAI,IAAO,GAAA,GAAA;AAAA,KAC3C,CAAA;AAAA,IACD,OAAA;AAAA,IACA,SAAA;AAAA,IACA,IAAK,EAAA,MAAA;AAAA,IACL,QAAA;AAAA,IAEC,QAAA,EAAA,IAAA;AAAA,GACH,CAAA,CAAA;AAEJ;;;;"}
1
+ {"version":3,"file":"PageButton.js","sources":["../src/pagination/PageButton.tsx"],"sourcesContent":["import { MouseEventHandler, forwardRef } from \"react\";\nimport { clsx } from \"clsx\";\nimport { Button, makePrefixer } from \"@salt-ds/core\";\nimport { usePaginationContext } from \"./usePaginationContext\";\n\nimport { useWindow } from \"@salt-ds/window\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\n\nimport pageButtonCss from \"./PageButton.css\";\n\nconst withBaseName = makePrefixer(\"saltPageButton\");\n\nexport interface PageButtonProps {\n page: number;\n selected?: boolean;\n disabled?: boolean;\n}\nexport const PageButton = forwardRef<HTMLButtonElement, PageButtonProps>(\n function PageButton({ page, selected, disabled }: PageButtonProps, ref) {\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-page-button\",\n css: pageButtonCss,\n window: targetWindow,\n });\n\n const { count, onPageChange } = usePaginationContext();\n\n const onClick: MouseEventHandler<HTMLButtonElement> = (event) => {\n onPageChange(event, page);\n };\n\n return (\n <Button\n aria-label={`Page ${page} of ${count}`}\n aria-current={selected ? \"page\" : undefined}\n variant=\"secondary\"\n className={clsx(withBaseName(), {\n [withBaseName(\"selected\")]: selected,\n [withBaseName(\"fixed\")]: page < 100,\n })}\n onClick={onClick}\n disabled={disabled}\n ref={ref}\n >\n {page}\n </Button>\n );\n }\n);\n"],"names":["PageButton","pageButtonCss"],"mappings":";;;;;;;;;AAUA,MAAM,YAAA,GAAe,aAAa,gBAAgB,CAAA,CAAA;AAO3C,MAAM,UAAa,GAAA,UAAA;AAAA,EACxB,SAASA,WAAW,CAAA,EAAE,MAAM,QAAU,EAAA,QAAA,IAA6B,GAAK,EAAA;AACtE,IAAA,MAAM,eAAe,SAAU,EAAA,CAAA;AAC/B,IAAyB,wBAAA,CAAA;AAAA,MACvB,MAAQ,EAAA,kBAAA;AAAA,MACR,GAAK,EAAAC,QAAA;AAAA,MACL,MAAQ,EAAA,YAAA;AAAA,KACT,CAAA,CAAA;AAED,IAAA,MAAM,EAAE,KAAA,EAAO,YAAa,EAAA,GAAI,oBAAqB,EAAA,CAAA;AAErD,IAAM,MAAA,OAAA,GAAgD,CAAC,KAAU,KAAA;AAC/D,MAAA,YAAA,CAAa,OAAO,IAAI,CAAA,CAAA;AAAA,KAC1B,CAAA;AAEA,IAAA,uBACG,GAAA,CAAA,MAAA,EAAA;AAAA,MACC,YAAA,EAAY,QAAQ,IAAW,CAAA,IAAA,EAAA,KAAA,CAAA,CAAA;AAAA,MAC/B,cAAA,EAAc,WAAW,MAAS,GAAA,KAAA,CAAA;AAAA,MAClC,OAAQ,EAAA,WAAA;AAAA,MACR,SAAA,EAAW,IAAK,CAAA,YAAA,EAAgB,EAAA;AAAA,QAC9B,CAAC,YAAa,CAAA,UAAU,CAAI,GAAA,QAAA;AAAA,QAC5B,CAAC,YAAA,CAAa,OAAO,CAAA,GAAI,IAAO,GAAA,GAAA;AAAA,OACjC,CAAA;AAAA,MACD,OAAA;AAAA,MACA,QAAA;AAAA,MACA,GAAA;AAAA,MAEC,QAAA,EAAA,IAAA;AAAA,KACH,CAAA,CAAA;AAAA,GAEJ;AACF;;;;"}
@@ -0,0 +1,4 @@
1
+ var css_248z = ".saltPageRanges-ellipsis {\n display: inline-flex;\n width: var(--salt-size-base);\n height: var(--salt-size-base);\n line-height: var(--salt-size-base);\n justify-content: center;\n}\n";
2
+
3
+ export { css_248z as default };
4
+ //# sourceMappingURL=PageRanges.css.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PageRanges.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
@@ -0,0 +1,69 @@
1
+ import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
2
+ import { useCallback } from 'react';
3
+ import { makePrefixer } from '@salt-ds/core';
4
+ import { PageButton } from './PageButton.js';
5
+ import { usePagination } from './usePagination.js';
6
+ import { usePaginationContext } from './usePaginationContext.js';
7
+ import { useWindow } from '@salt-ds/window';
8
+ import { useComponentCssInjection } from '@salt-ds/styles';
9
+ import css_248z from './PageRanges.css.js';
10
+
11
+ const withBaseName = makePrefixer("saltPageRanges");
12
+ const Ellipsis = () => {
13
+ return /* @__PURE__ */ jsx("div", {
14
+ className: withBaseName("ellipsis"),
15
+ children: `\u2026`
16
+ });
17
+ };
18
+ const mapRange = (range, fn) => {
19
+ const result = [];
20
+ for (let i = range[0]; i <= range[1]; ++i) {
21
+ result.push(fn(i));
22
+ }
23
+ return result;
24
+ };
25
+ function PageRanges({
26
+ siblingCount = 2,
27
+ boundaryCount = 1
28
+ }) {
29
+ const targetWindow = useWindow();
30
+ useComponentCssInjection({
31
+ testId: "salt-page-ranges",
32
+ css: css_248z,
33
+ window: targetWindow
34
+ });
35
+ const { count, page } = usePaginationContext();
36
+ const renderPages = useCallback(
37
+ (range) => mapRange(range, (i) => /* @__PURE__ */ jsx(PageButton, {
38
+ page: i,
39
+ selected: page === i
40
+ }, i)),
41
+ [page]
42
+ );
43
+ const [leftPages, middlePages, rightPages] = usePagination(
44
+ page,
45
+ count,
46
+ Math.max(1, boundaryCount),
47
+ siblingCount
48
+ );
49
+ return /* @__PURE__ */ jsxs(Fragment, {
50
+ children: [
51
+ leftPages && /* @__PURE__ */ jsxs(Fragment, {
52
+ children: [
53
+ renderPages(leftPages),
54
+ /* @__PURE__ */ jsx(Ellipsis, {})
55
+ ]
56
+ }),
57
+ middlePages && renderPages(middlePages),
58
+ rightPages && /* @__PURE__ */ jsxs(Fragment, {
59
+ children: [
60
+ /* @__PURE__ */ jsx(Ellipsis, {}),
61
+ renderPages(rightPages)
62
+ ]
63
+ })
64
+ ]
65
+ });
66
+ }
67
+
68
+ export { PageRanges };
69
+ //# sourceMappingURL=PageRanges.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PageRanges.js","sources":["../src/pagination/PageRanges.tsx"],"sourcesContent":["import { ReactElement, useCallback } from \"react\";\nimport { makePrefixer } from \"@salt-ds/core\";\nimport { PageButton } from \"./PageButton\";\nimport { PageRange, usePagination } from \"./usePagination\";\nimport { usePaginationContext } from \"./usePaginationContext\";\n\nimport { useWindow } from \"@salt-ds/window\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\n\nimport pageRangesCss from \"./PageRanges.css\";\n\nconst withBaseName = makePrefixer(\"saltPageRanges\");\n\nexport interface PageRangesProps {\n boundaryCount?: number;\n siblingCount?: number;\n}\n\nconst Ellipsis = () => {\n return <div className={withBaseName(\"ellipsis\")}>{`\\u2026`}</div>;\n};\n\nconst mapRange = (range: PageRange, fn: (i: number) => ReactElement) => {\n const result: ReactElement[] = [];\n for (let i = range[0]; i <= range[1]; ++i) {\n result.push(fn(i));\n }\n return result;\n};\n\nexport function PageRanges({\n siblingCount = 2,\n boundaryCount = 1,\n}: PageRangesProps) {\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-page-ranges\",\n css: pageRangesCss,\n window: targetWindow,\n });\n\n const { count, page } = usePaginationContext();\n\n const renderPages = useCallback(\n (range: PageRange) =>\n mapRange(range, (i) => (\n <PageButton key={i} page={i} selected={page === i} />\n )),\n [page]\n );\n\n const [leftPages, middlePages, rightPages] = usePagination(\n page,\n count,\n Math.max(1, boundaryCount),\n siblingCount\n );\n\n return (\n <>\n {leftPages && (\n <>\n {renderPages(leftPages)}\n <Ellipsis />\n </>\n )}\n {middlePages && renderPages(middlePages)}\n {rightPages && (\n <>\n <Ellipsis />\n {renderPages(rightPages)}\n </>\n )}\n </>\n );\n}\n"],"names":["pageRangesCss"],"mappings":";;;;;;;;;;AAWA,MAAM,YAAA,GAAe,aAAa,gBAAgB,CAAA,CAAA;AAOlD,MAAM,WAAW,MAAM;AACrB,EAAA,uBAAQ,GAAA,CAAA,KAAA,EAAA;AAAA,IAAI,SAAA,EAAW,aAAa,UAAU,CAAA;AAAA,IAAI,QAAA,EAAA,CAAA,MAAA,CAAA;AAAA,GAAS,CAAA,CAAA;AAC7D,CAAA,CAAA;AAEA,MAAM,QAAA,GAAW,CAAC,KAAA,EAAkB,EAAoC,KAAA;AACtE,EAAA,MAAM,SAAyB,EAAC,CAAA;AAChC,EAAA,KAAA,IAAS,IAAI,KAAM,CAAA,CAAA,CAAA,EAAI,KAAK,KAAM,CAAA,CAAA,CAAA,EAAI,EAAE,CAAG,EAAA;AACzC,IAAO,MAAA,CAAA,IAAA,CAAK,EAAG,CAAA,CAAC,CAAC,CAAA,CAAA;AAAA,GACnB;AACA,EAAO,OAAA,MAAA,CAAA;AACT,CAAA,CAAA;AAEO,SAAS,UAAW,CAAA;AAAA,EACzB,YAAe,GAAA,CAAA;AAAA,EACf,aAAgB,GAAA,CAAA;AAClB,CAAoB,EAAA;AAClB,EAAA,MAAM,eAAe,SAAU,EAAA,CAAA;AAC/B,EAAyB,wBAAA,CAAA;AAAA,IACvB,MAAQ,EAAA,kBAAA;AAAA,IACR,GAAK,EAAAA,QAAA;AAAA,IACL,MAAQ,EAAA,YAAA;AAAA,GACT,CAAA,CAAA;AAED,EAAA,MAAM,EAAE,KAAA,EAAO,IAAK,EAAA,GAAI,oBAAqB,EAAA,CAAA;AAE7C,EAAA,MAAM,WAAc,GAAA,WAAA;AAAA,IAClB,CAAC,KACC,KAAA,QAAA,CAAS,KAAO,EAAA,CAAC,sBACd,GAAA,CAAA,UAAA,EAAA;AAAA,MAAmB,IAAM,EAAA,CAAA;AAAA,MAAG,UAAU,IAAS,KAAA,CAAA;AAAA,KAAA,EAA/B,CAAkC,CACpD,CAAA;AAAA,IACH,CAAC,IAAI,CAAA;AAAA,GACP,CAAA;AAEA,EAAA,MAAM,CAAC,SAAA,EAAW,WAAa,EAAA,UAAU,CAAI,GAAA,aAAA;AAAA,IAC3C,IAAA;AAAA,IACA,KAAA;AAAA,IACA,IAAA,CAAK,GAAI,CAAA,CAAA,EAAG,aAAa,CAAA;AAAA,IACzB,YAAA;AAAA,GACF,CAAA;AAEA,EACE,uBAAA,IAAA,CAAA,QAAA,EAAA;AAAA,IACG,QAAA,EAAA;AAAA,MACC,SAAA,oBAAA,IAAA,CAAA,QAAA,EAAA;AAAA,QACG,QAAA,EAAA;AAAA,UAAA,WAAA,CAAY,SAAS,CAAA;AAAA,8BACrB,QAAS,EAAA,EAAA,CAAA;AAAA,SAAA;AAAA,OACZ,CAAA;AAAA,MAED,WAAA,IAAe,YAAY,WAAW,CAAA;AAAA,MACtC,UACC,oBAAA,IAAA,CAAA,QAAA,EAAA;AAAA,QACE,QAAA,EAAA;AAAA,0BAAA,GAAA,CAAC,QAAS,EAAA,EAAA,CAAA;AAAA,UACT,YAAY,UAAU,CAAA;AAAA,SAAA;AAAA,OACzB,CAAA;AAAA,KAAA;AAAA,GAEJ,CAAA,CAAA;AAEJ;;;;"}
@@ -1,4 +1,4 @@
1
- var css_248z = ".salt-density-medium {\n --pagination-button-size: 28px;\n --pagination-fontSize: 12px;\n}\n\n.salt-density-high {\n --pagination-button-size: 20px;\n --pagination-fontSize: 11px;\n}\n\n.salt-density-low {\n --pagination-button-size: 36px;\n --pagination-fontSize: 14px;\n}\n\n.salt-density-touch {\n --pagination-button-size: 44px;\n --pagination-fontSize: 16px;\n}\n\n.saltPagination {\n display: flex;\n flex-direction: row;\n}\n\n.saltPagination-arrowButton {\n width: var(--pagination-button-size);\n height: var(--pagination-button-size);\n}\n\n.saltPagination-previousButton {\n margin-right: var(--salt-size-unit);\n}\n\n.saltPagination-nextButton {\n margin-left: var(--salt-size-unit);\n}\n\n.saltPagination-pageButton {\n min-width: var(--pagination-button-size);\n height: var(--pagination-button-size);\n --saltButton-fontWeight: var(--salt-text-fontWeight);\n}\n\n.saltPagination-pageButtonSelected {\n background: var(--salt-selectable-background-selected);\n color: var(--salt-palette-interact-cta-foreground-active);\n}\n\n.saltPagination-pageButtonFixed {\n padding: 0;\n}\n\n.saltPagination-ellipsis {\n width: var(--pagination-button-size);\n height: var(--pagination-button-size);\n text-align: center;\n}\n\n.saltPagination-accessibleText {\n display: block;\n position: absolute;\n width: 1px;\n height: 1px;\n overflow: hidden;\n top: 0;\n left: 0;\n opacity: 0;\n}\n\n.saltPagination-compactInputField {\n}\n\n.saltPagination-compactInput {\n height: var(--pagination-button-size);\n min-width: unset;\n}\n\n.saltPagination-compactInputFixed {\n min-width: var(--pagination-button-size);\n width: var(--pagination-button-size);\n}\n\n.saltPagination-compactSeparator {\n height: var(--pagination-button-size);\n width: var(--pagination-button-size);\n text-align: center;\n font-size: var(--pagination-fontSize);\n line-height: var(--pagination-button-size);\n}\n\n.saltPagination-goToInputWrapper {\n}\n\n.saltPagination-leftGoToInput {\n margin-right: var(--salt-size-unit);\n}\n\n.saltPagination-rightGoToInput {\n margin-left: var(--salt-size-unit);\n min-width: unset;\n}\n\n.saltPagination-goToInputField {\n}\n\n.saltPagination-goToInput {\n height: var(--pagination-button-size);\n min-width: unset;\n}\n\n.saltPagination-goToInputFixed {\n min-width: var(--pagination-button-size);\n width: var(--pagination-button-size);\n}\n";
1
+ var css_248z = ".saltPagination {\n display: flex;\n flex-direction: row;\n align-items: center;\n}\n";
2
2
 
3
3
  export { css_248z as default };
4
4
  //# sourceMappingURL=Pagination.css.js.map
@@ -1,33 +1,40 @@
1
1
  import { jsx } from 'react/jsx-runtime';
2
- import { useControlled, useAriaAnnouncer } from '@salt-ds/core';
2
+ import { forwardRef, useCallback, useMemo, useRef, useEffect } from 'react';
3
3
  import { clsx } from 'clsx';
4
- import { forwardRef, useState, useCallback, useMemo, useRef, useEffect } from 'react';
4
+ import { makePrefixer, useControlled, useAriaAnnouncer } from '@salt-ds/core';
5
5
  import { paginationContext } from './PaginationContext.js';
6
- import { withBaseName } from './utils.js';
6
+ import { useWindow } from '@salt-ds/window';
7
+ import { useComponentCssInjection } from '@salt-ds/styles';
8
+ import css_248z from './Pagination.css.js';
7
9
 
10
+ const withBaseName = makePrefixer("saltPagination");
8
11
  const { Provider } = paginationContext;
9
12
  const Pagination = forwardRef(
10
- ({
13
+ function Pagination2({
11
14
  className,
12
15
  count,
13
16
  children,
14
- initialPage = 1,
17
+ defaultPage = 1,
15
18
  page: pageProp,
16
19
  onPageChange: onPageChangeProp,
17
- compact = false,
18
20
  ...restProps
19
- }, ref) => {
21
+ }, ref) {
22
+ const targetWindow = useWindow();
23
+ useComponentCssInjection({
24
+ testId: "salt-pagination",
25
+ css: css_248z,
26
+ window: targetWindow
27
+ });
20
28
  const [pageState, setPageState] = useControlled({
21
29
  controlled: pageProp,
22
- default: initialPage,
23
- name: "Paginator",
30
+ default: defaultPage,
31
+ name: "Pagination",
24
32
  state: "page"
25
33
  });
26
- const [paginatorElement, setPaginatorElement] = useState();
27
34
  const onPageChange = useCallback(
28
- (page) => {
35
+ (event, page) => {
29
36
  setPageState(page);
30
- onPageChangeProp && onPageChangeProp(page);
37
+ onPageChangeProp && onPageChangeProp(event, page);
31
38
  },
32
39
  [onPageChangeProp, setPageState]
33
40
  );
@@ -35,28 +42,10 @@ const Pagination = forwardRef(
35
42
  () => ({
36
43
  page: pageState,
37
44
  count,
38
- compact,
39
- onPageChange,
40
- paginatorElement,
41
- setPaginatorElement
45
+ onPageChange
42
46
  }),
43
47
  [pageState, count, onPageChange]
44
48
  );
45
- const onKeyDown = useCallback(
46
- ({ altKey, key }) => {
47
- if (altKey) {
48
- switch (key) {
49
- case "PageDown":
50
- onPageChange(Math.min(pageState + 1, count));
51
- break;
52
- case "PageUp":
53
- onPageChange(Math.max(pageState - 1, 1));
54
- break;
55
- }
56
- }
57
- },
58
- [onPageChange]
59
- );
60
49
  const { announce } = useAriaAnnouncer();
61
50
  const mounted = useRef(false);
62
51
  useEffect(() => {
@@ -66,11 +55,6 @@ const Pagination = forwardRef(
66
55
  mounted.current = true;
67
56
  }
68
57
  }, [announce, pageState]);
69
- useEffect(() => {
70
- if (count < pageState) {
71
- onPageChange(1);
72
- }
73
- }, [count, pageState, onPageChange]);
74
58
  if (count < 2) {
75
59
  return null;
76
60
  }
@@ -78,7 +62,6 @@ const Pagination = forwardRef(
78
62
  value: contextValue,
79
63
  children: /* @__PURE__ */ jsx("nav", {
80
64
  className: clsx(withBaseName(), className),
81
- onKeyDown,
82
65
  ref,
83
66
  ...restProps,
84
67
  children
@@ -1 +1 @@
1
- {"version":3,"file":"Pagination.js","sources":["../src/pagination/Pagination.tsx"],"sourcesContent":["import { useAriaAnnouncer, useControlled } from \"@salt-ds/core\";\nimport { clsx } from \"clsx\";\nimport {\n forwardRef,\n HTMLAttributes,\n KeyboardEventHandler,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { PaginationContext, paginationContext } from \"./PaginationContext\";\nimport { withBaseName } from \"./utils\";\n\nconst { Provider } = paginationContext;\n\nexport interface PaginationProps extends HTMLAttributes<HTMLElement> {\n count: number;\n page?: number;\n initialPage?: number;\n onPageChange?: (page: number) => void;\n compact?: boolean;\n}\n\nexport const Pagination = forwardRef<HTMLElement, PaginationProps>(\n (\n {\n className,\n count,\n children,\n initialPage = 1,\n page: pageProp,\n onPageChange: onPageChangeProp,\n compact = false,\n ...restProps\n },\n ref\n ) => {\n const [pageState, setPageState] = useControlled({\n controlled: pageProp,\n default: initialPage,\n name: \"Paginator\",\n state: \"page\",\n });\n\n const [paginatorElement, setPaginatorElement] = useState<HTMLDivElement>();\n\n const onPageChange = useCallback(\n (page: number) => {\n setPageState(page);\n onPageChangeProp && onPageChangeProp(page);\n },\n [onPageChangeProp, setPageState]\n );\n\n const contextValue: PaginationContext = useMemo(\n () => ({\n page: pageState,\n count,\n compact,\n onPageChange,\n paginatorElement,\n setPaginatorElement,\n }),\n [pageState, count, onPageChange]\n );\n\n const onKeyDown: KeyboardEventHandler = useCallback(\n ({ altKey, key }) => {\n if (altKey) {\n switch (key) {\n case \"PageDown\":\n onPageChange(Math.min(pageState + 1, count));\n break;\n case \"PageUp\":\n onPageChange(Math.max(pageState - 1, 1));\n break;\n default:\n }\n }\n },\n [onPageChange]\n );\n\n const { announce } = useAriaAnnouncer();\n const mounted = useRef<boolean>(false);\n\n useEffect(() => {\n if (mounted.current) {\n announce(`Page ${pageState}`);\n } else {\n mounted.current = true;\n }\n }, [announce, pageState]);\n\n useEffect(() => {\n if (count < pageState) {\n onPageChange(1);\n }\n }, [count, pageState, onPageChange]);\n\n if (count < 2) {\n return null;\n }\n\n return (\n <Provider value={contextValue}>\n <nav\n className={clsx(withBaseName(), className)}\n onKeyDown={onKeyDown}\n ref={ref}\n {...restProps}\n >\n {children}\n </nav>\n </Provider>\n );\n }\n);\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Pagination.js","sources":["../src/pagination/Pagination.tsx"],"sourcesContent":["import {\n forwardRef,\n HTMLAttributes,\n SyntheticEvent,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n} from \"react\";\nimport { clsx } from \"clsx\";\nimport { makePrefixer, useAriaAnnouncer, useControlled } from \"@salt-ds/core\";\nimport { PaginationContext, paginationContext } from \"./PaginationContext\";\n\nimport { useWindow } from \"@salt-ds/window\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\n\nimport paginationCss from \"./Pagination.css\";\n\nconst withBaseName = makePrefixer(\"saltPagination\");\n\nconst { Provider } = paginationContext;\n\nexport interface PaginationProps extends HTMLAttributes<HTMLElement> {\n /**\n * Number of pages.\n */\n count: number;\n /**\n * Current/active page.\n */\n page?: number;\n /**\n * Default current/active page.\n */\n defaultPage?: number;\n /**\n * Callback function triggered when current page changed.\n */\n onPageChange?: (event: SyntheticEvent, page: number) => void;\n}\n\nexport const Pagination = forwardRef<HTMLElement, PaginationProps>(\n function Pagination(\n {\n className,\n count,\n children,\n defaultPage = 1,\n page: pageProp,\n onPageChange: onPageChangeProp,\n ...restProps\n },\n ref\n ) {\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-pagination\",\n css: paginationCss,\n window: targetWindow,\n });\n\n const [pageState, setPageState] = useControlled({\n controlled: pageProp,\n default: defaultPage,\n name: \"Pagination\",\n state: \"page\",\n });\n\n const onPageChange = useCallback(\n (event: SyntheticEvent, page: number) => {\n setPageState(page);\n onPageChangeProp && onPageChangeProp(event, page);\n },\n [onPageChangeProp, setPageState]\n );\n\n const contextValue: PaginationContext = useMemo(\n () => ({\n page: pageState,\n count,\n onPageChange,\n }),\n [pageState, count, onPageChange]\n );\n\n const { announce } = useAriaAnnouncer();\n const mounted = useRef<boolean>(false);\n\n useEffect(() => {\n if (mounted.current) {\n announce(`Page ${pageState}`);\n } else {\n mounted.current = true;\n }\n }, [announce, pageState]);\n\n if (count < 2) {\n return null;\n }\n\n return (\n <Provider value={contextValue}>\n <nav\n className={clsx(withBaseName(), className)}\n ref={ref}\n {...restProps}\n >\n {children}\n </nav>\n </Provider>\n );\n }\n);\n"],"names":["Pagination","paginationCss"],"mappings":";;;;;;;;;AAkBA,MAAM,YAAA,GAAe,aAAa,gBAAgB,CAAA,CAAA;AAElD,MAAM,EAAE,UAAa,GAAA,iBAAA,CAAA;AAqBd,MAAM,UAAa,GAAA,UAAA;AAAA,EACxB,SAASA,WACP,CAAA;AAAA,IACE,SAAA;AAAA,IACA,KAAA;AAAA,IACA,QAAA;AAAA,IACA,WAAc,GAAA,CAAA;AAAA,IACd,IAAM,EAAA,QAAA;AAAA,IACN,YAAc,EAAA,gBAAA;AAAA,IACX,GAAA,SAAA;AAAA,KAEL,GACA,EAAA;AACA,IAAA,MAAM,eAAe,SAAU,EAAA,CAAA;AAC/B,IAAyB,wBAAA,CAAA;AAAA,MACvB,MAAQ,EAAA,iBAAA;AAAA,MACR,GAAK,EAAAC,QAAA;AAAA,MACL,MAAQ,EAAA,YAAA;AAAA,KACT,CAAA,CAAA;AAED,IAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAI,aAAc,CAAA;AAAA,MAC9C,UAAY,EAAA,QAAA;AAAA,MACZ,OAAS,EAAA,WAAA;AAAA,MACT,IAAM,EAAA,YAAA;AAAA,MACN,KAAO,EAAA,MAAA;AAAA,KACR,CAAA,CAAA;AAED,IAAA,MAAM,YAAe,GAAA,WAAA;AAAA,MACnB,CAAC,OAAuB,IAAiB,KAAA;AACvC,QAAA,YAAA,CAAa,IAAI,CAAA,CAAA;AACjB,QAAoB,gBAAA,IAAA,gBAAA,CAAiB,OAAO,IAAI,CAAA,CAAA;AAAA,OAClD;AAAA,MACA,CAAC,kBAAkB,YAAY,CAAA;AAAA,KACjC,CAAA;AAEA,IAAA,MAAM,YAAkC,GAAA,OAAA;AAAA,MACtC,OAAO;AAAA,QACL,IAAM,EAAA,SAAA;AAAA,QACN,KAAA;AAAA,QACA,YAAA;AAAA,OACF,CAAA;AAAA,MACA,CAAC,SAAW,EAAA,KAAA,EAAO,YAAY,CAAA;AAAA,KACjC,CAAA;AAEA,IAAM,MAAA,EAAE,QAAS,EAAA,GAAI,gBAAiB,EAAA,CAAA;AACtC,IAAM,MAAA,OAAA,GAAU,OAAgB,KAAK,CAAA,CAAA;AAErC,IAAA,SAAA,CAAU,MAAM;AACd,MAAA,IAAI,QAAQ,OAAS,EAAA;AACnB,QAAA,QAAA,CAAS,QAAQ,SAAW,CAAA,CAAA,CAAA,CAAA;AAAA,OACvB,MAAA;AACL,QAAA,OAAA,CAAQ,OAAU,GAAA,IAAA,CAAA;AAAA,OACpB;AAAA,KACC,EAAA,CAAC,QAAU,EAAA,SAAS,CAAC,CAAA,CAAA;AAExB,IAAA,IAAI,QAAQ,CAAG,EAAA;AACb,MAAO,OAAA,IAAA,CAAA;AAAA,KACT;AAEA,IAAA,uBACG,GAAA,CAAA,QAAA,EAAA;AAAA,MAAS,KAAO,EAAA,YAAA;AAAA,MACf,QAAC,kBAAA,GAAA,CAAA,KAAA,EAAA;AAAA,QACC,SAAW,EAAA,IAAA,CAAK,YAAa,EAAA,EAAG,SAAS,CAAA;AAAA,QACzC,GAAA;AAAA,QACC,GAAG,SAAA;AAAA,QAEH,QAAA;AAAA,OACH,CAAA;AAAA,KACF,CAAA,CAAA;AAAA,GAEJ;AACF;;;;"}
@@ -3,12 +3,7 @@ import { createContext } from 'react';
3
3
  const paginationContext = createContext({
4
4
  page: 0,
5
5
  count: 0,
6
- compact: false,
7
- onPageChange: () => {
8
- },
9
- paginatorElement: void 0,
10
- setPaginatorElement: () => {
11
- }
6
+ onPageChange: () => void 0
12
7
  });
13
8
  if (process.env.NODE_ENV !== "production") {
14
9
  paginationContext.displayName = "PaginationContext";
@@ -1 +1 @@
1
- {"version":3,"file":"PaginationContext.js","sources":["../src/pagination/PaginationContext.ts"],"sourcesContent":["import { createContext } from \"react\";\n\nexport interface PaginationContext {\n page: number;\n count: number;\n compact: boolean;\n onPageChange: (page: number) => void;\n paginatorElement?: HTMLDivElement;\n setPaginatorElement: (element: HTMLDivElement) => void;\n}\n\nexport const paginationContext = createContext<PaginationContext>({\n page: 0,\n count: 0,\n compact: false,\n onPageChange: () => {},\n paginatorElement: undefined,\n setPaginatorElement: () => {},\n});\n\nif (process.env.NODE_ENV !== \"production\") {\n paginationContext.displayName = \"PaginationContext\";\n}\n"],"names":[],"mappings":";;AAWO,MAAM,oBAAoB,aAAiC,CAAA;AAAA,EAChE,IAAM,EAAA,CAAA;AAAA,EACN,KAAO,EAAA,CAAA;AAAA,EACP,OAAS,EAAA,KAAA;AAAA,EACT,cAAc,MAAM;AAAA,GAAC;AAAA,EACrB,gBAAkB,EAAA,KAAA,CAAA;AAAA,EAClB,qBAAqB,MAAM;AAAA,GAAC;AAC9B,CAAC,EAAA;AAED,IAAI,OAAA,CAAQ,GAAI,CAAA,QAAA,KAAa,YAAc,EAAA;AACzC,EAAA,iBAAA,CAAkB,WAAc,GAAA,mBAAA,CAAA;AAClC;;;;"}
1
+ {"version":3,"file":"PaginationContext.js","sources":["../src/pagination/PaginationContext.ts"],"sourcesContent":["import { SyntheticEvent, createContext } from \"react\";\n\nexport interface PaginationContext {\n page: number;\n count: number;\n onPageChange: (event: SyntheticEvent, page: number) => void;\n}\n\nexport const paginationContext = createContext<PaginationContext>({\n page: 0,\n count: 0,\n onPageChange: () => undefined,\n});\n\nif (process.env.NODE_ENV !== \"production\") {\n paginationContext.displayName = \"PaginationContext\";\n}\n"],"names":[],"mappings":";;AAQO,MAAM,oBAAoB,aAAiC,CAAA;AAAA,EAChE,IAAM,EAAA,CAAA;AAAA,EACN,KAAO,EAAA,CAAA;AAAA,EACP,cAAc,MAAM,KAAA,CAAA;AACtB,CAAC,EAAA;AAED,IAAI,OAAA,CAAQ,GAAI,CAAA,QAAA,KAAa,YAAc,EAAA;AACzC,EAAA,iBAAA,CAAkB,WAAc,GAAA,mBAAA,CAAA;AAClC;;;;"}
@@ -0,0 +1,4 @@
1
+ var css_248z = ".saltPaginator {\n display: flex;\n flex-wrap: nowrap;\n}\n\n.saltPaginator-arrowButton-previous {\n --saltButton-margin: 0 var(--salt-spacing-100) 0 0;\n}\n\n.saltPaginator-arrowButton-next {\n --saltButton-margin: 0 0 0 var(--salt-spacing-100);\n}\n";
2
+
3
+ export { css_248z as default };
4
+ //# sourceMappingURL=Paginator.css.js.map