@elliemae/ds-pagination 3.80.0-next.50 → 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.
- package/dist/cjs/parts/DSPaginator/DSPaginator.js +10 -166
- package/dist/cjs/parts/DSPaginator/DSPaginator.js.map +2 -2
- package/dist/cjs/parts/DSPaginator/{config/usePaginationSearch.js → DSPaginatorCTX.js} +7 -32
- package/dist/cjs/parts/DSPaginator/DSPaginatorCTX.js.map +7 -0
- package/dist/cjs/parts/DSPaginator/config/{createPaginatorHeader.js → getAmountOfPages.js} +8 -23
- package/dist/cjs/parts/DSPaginator/config/getAmountOfPages.js.map +7 -0
- package/dist/cjs/parts/DSPaginator/config/getInstanceIds.js +40 -0
- package/dist/cjs/parts/DSPaginator/config/getInstanceIds.js.map +7 -0
- package/dist/cjs/parts/DSPaginator/config/navigationKeys.js +44 -0
- package/dist/cjs/parts/DSPaginator/config/navigationKeys.js.map +7 -0
- package/dist/cjs/parts/DSPaginator/config/useFocusTracker.js +77 -0
- package/dist/cjs/parts/DSPaginator/config/useFocusTracker.js.map +7 -0
- package/dist/cjs/parts/DSPaginator/config/usePaginator.js +73 -49
- package/dist/cjs/parts/DSPaginator/config/usePaginator.js.map +2 -2
- package/dist/cjs/parts/DSPaginator/config/usePaginatorFloatingContext.js +86 -0
- package/dist/cjs/parts/DSPaginator/config/usePaginatorFloatingContext.js.map +7 -0
- package/dist/cjs/parts/DSPaginator/config/usePaginatorInteractions.js +170 -0
- package/dist/cjs/parts/DSPaginator/config/usePaginatorInteractions.js.map +7 -0
- package/dist/cjs/parts/DSPaginator/config/usePaginatorSizing.js +80 -0
- package/dist/cjs/parts/DSPaginator/config/usePaginatorSizing.js.map +7 -0
- package/dist/cjs/parts/DSPaginator/config/useValidateProps.js.map +2 -2
- package/dist/cjs/parts/DSPaginator/constants/index.js +49 -3
- package/dist/cjs/parts/DSPaginator/constants/index.js.map +2 -2
- package/dist/cjs/parts/DSPaginator/parts/OptionRenderer.js +98 -0
- package/dist/cjs/parts/DSPaginator/parts/OptionRenderer.js.map +7 -0
- package/dist/cjs/parts/DSPaginator/parts/Panel.js +131 -0
- package/dist/cjs/parts/DSPaginator/parts/Panel.js.map +7 -0
- package/dist/cjs/parts/DSPaginator/parts/Trigger.js +124 -0
- package/dist/cjs/parts/DSPaginator/parts/Trigger.js.map +7 -0
- package/dist/cjs/parts/DSPaginator/react-desc-prop-types.js +6 -1
- package/dist/cjs/parts/DSPaginator/react-desc-prop-types.js.map +2 -2
- package/dist/cjs/parts/DSPaginator/styled.js +113 -38
- package/dist/cjs/parts/DSPaginator/styled.js.map +3 -3
- package/dist/cjs/parts/DSPaginator/typescript-testing/slot-props.js +12 -1
- package/dist/cjs/parts/DSPaginator/typescript-testing/slot-props.js.map +2 -2
- package/dist/cjs/parts/DSPaginator/typescript-testing/typescript-testing.js +2 -1
- package/dist/cjs/parts/DSPaginator/typescript-testing/typescript-testing.js.map +2 -2
- package/dist/cjs/parts/DSPerPageSelector/DSPerPageSelector.js +10 -79
- package/dist/cjs/parts/DSPerPageSelector/DSPerPageSelector.js.map +3 -3
- package/dist/cjs/parts/DSPerPageSelector/DSPerPageSelectorCTX.js +38 -0
- package/dist/cjs/parts/DSPerPageSelector/DSPerPageSelectorCTX.js.map +7 -0
- package/dist/cjs/parts/DSPerPageSelector/config/getInstanceIds.js +40 -0
- package/dist/cjs/parts/DSPerPageSelector/config/getInstanceIds.js.map +7 -0
- package/dist/cjs/parts/DSPerPageSelector/config/getOptions.js.map +2 -2
- package/dist/cjs/parts/DSPerPageSelector/config/getSelectedOptionIndex.js +36 -0
- package/dist/cjs/parts/DSPerPageSelector/config/getSelectedOptionIndex.js.map +7 -0
- package/dist/cjs/parts/DSPerPageSelector/config/navigationKeys.js +44 -0
- package/dist/cjs/parts/DSPerPageSelector/config/navigationKeys.js.map +7 -0
- package/dist/cjs/parts/DSPerPageSelector/config/useFocusTracker.js +83 -0
- package/dist/cjs/parts/DSPerPageSelector/config/useFocusTracker.js.map +7 -0
- package/dist/cjs/parts/DSPerPageSelector/config/usePerPageSelector.js +68 -20
- package/dist/cjs/parts/DSPerPageSelector/config/usePerPageSelector.js.map +2 -2
- package/dist/cjs/parts/DSPerPageSelector/config/usePerPageSelectorFloatingContext.js +82 -0
- package/dist/cjs/parts/DSPerPageSelector/config/usePerPageSelectorFloatingContext.js.map +7 -0
- package/dist/cjs/parts/DSPerPageSelector/config/usePerPageSelectorInteractions.js +175 -0
- package/dist/cjs/parts/DSPerPageSelector/config/usePerPageSelectorInteractions.js.map +7 -0
- package/dist/cjs/parts/DSPerPageSelector/config/usePerPageSelectorSizing.js +66 -0
- package/dist/cjs/parts/DSPerPageSelector/config/usePerPageSelectorSizing.js.map +7 -0
- package/dist/cjs/parts/DSPerPageSelector/constants/index.js +47 -8
- package/dist/cjs/parts/DSPerPageSelector/constants/index.js.map +2 -2
- package/dist/cjs/parts/DSPerPageSelector/parts/OptionRenderer.js +94 -0
- package/dist/cjs/parts/DSPerPageSelector/parts/OptionRenderer.js.map +7 -0
- package/dist/cjs/parts/DSPerPageSelector/parts/Panel.js +120 -0
- package/dist/cjs/parts/DSPerPageSelector/parts/Panel.js.map +7 -0
- package/dist/cjs/parts/DSPerPageSelector/parts/Trigger.js +95 -0
- package/dist/cjs/parts/DSPerPageSelector/parts/Trigger.js.map +7 -0
- package/dist/cjs/parts/DSPerPageSelector/react-desc-prop-types.js +19 -2
- package/dist/cjs/parts/DSPerPageSelector/react-desc-prop-types.js.map +2 -2
- package/dist/cjs/parts/DSPerPageSelector/styled.js +104 -32
- package/dist/cjs/parts/DSPerPageSelector/styled.js.map +2 -2
- package/dist/cjs/parts/DSPerPageSelector/typescript-testing/slots-props.js +10 -1
- package/dist/cjs/parts/DSPerPageSelector/typescript-testing/slots-props.js.map +2 -2
- package/dist/cjs/parts/DSPerPageSelector/typescript-testing/typescript-testing.js +60 -1
- package/dist/cjs/parts/DSPerPageSelector/typescript-testing/typescript-testing.js.map +2 -2
- package/dist/cjs/react-desc-prop-types.js.map +1 -1
- package/dist/esm/parts/DSPaginator/DSPaginator.js +12 -168
- package/dist/esm/parts/DSPaginator/DSPaginator.js.map +2 -2
- package/dist/esm/parts/DSPaginator/DSPaginatorCTX.js +8 -0
- package/dist/esm/parts/DSPaginator/DSPaginatorCTX.js.map +7 -0
- package/dist/esm/parts/DSPaginator/config/getAmountOfPages.js +9 -0
- package/dist/esm/parts/DSPaginator/config/getAmountOfPages.js.map +7 -0
- package/dist/esm/parts/DSPaginator/config/getInstanceIds.js +10 -0
- package/dist/esm/parts/DSPaginator/config/getInstanceIds.js.map +7 -0
- package/dist/esm/parts/DSPaginator/config/navigationKeys.js +14 -0
- package/dist/esm/parts/DSPaginator/config/navigationKeys.js.map +7 -0
- package/dist/esm/parts/DSPaginator/config/useFocusTracker.js +47 -0
- package/dist/esm/parts/DSPaginator/config/useFocusTracker.js.map +7 -0
- package/dist/esm/parts/DSPaginator/config/usePaginator.js +74 -50
- package/dist/esm/parts/DSPaginator/config/usePaginator.js.map +2 -2
- package/dist/esm/parts/DSPaginator/config/usePaginatorFloatingContext.js +56 -0
- package/dist/esm/parts/DSPaginator/config/usePaginatorFloatingContext.js.map +7 -0
- package/dist/esm/parts/DSPaginator/config/usePaginatorInteractions.js +140 -0
- package/dist/esm/parts/DSPaginator/config/usePaginatorInteractions.js.map +7 -0
- package/dist/esm/parts/DSPaginator/config/usePaginatorSizing.js +56 -0
- package/dist/esm/parts/DSPaginator/config/usePaginatorSizing.js.map +7 -0
- package/dist/esm/parts/DSPaginator/config/useValidateProps.js.map +2 -2
- package/dist/esm/parts/DSPaginator/constants/index.js +49 -3
- package/dist/esm/parts/DSPaginator/constants/index.js.map +2 -2
- package/dist/esm/parts/DSPaginator/parts/OptionRenderer.js +68 -0
- package/dist/esm/parts/DSPaginator/parts/OptionRenderer.js.map +7 -0
- package/dist/esm/parts/DSPaginator/parts/Panel.js +101 -0
- package/dist/esm/parts/DSPaginator/parts/Panel.js.map +7 -0
- package/dist/esm/parts/DSPaginator/parts/Trigger.js +94 -0
- package/dist/esm/parts/DSPaginator/parts/Trigger.js.map +7 -0
- package/dist/esm/parts/DSPaginator/react-desc-prop-types.js +6 -1
- package/dist/esm/parts/DSPaginator/react-desc-prop-types.js.map +2 -2
- package/dist/esm/parts/DSPaginator/styled.js +120 -39
- package/dist/esm/parts/DSPaginator/styled.js.map +2 -2
- package/dist/esm/parts/DSPaginator/typescript-testing/slot-props.js +12 -1
- package/dist/esm/parts/DSPaginator/typescript-testing/slot-props.js.map +2 -2
- package/dist/esm/parts/DSPaginator/typescript-testing/typescript-testing.js +2 -1
- package/dist/esm/parts/DSPaginator/typescript-testing/typescript-testing.js.map +2 -2
- package/dist/esm/parts/DSPerPageSelector/DSPerPageSelector.js +11 -80
- package/dist/esm/parts/DSPerPageSelector/DSPerPageSelector.js.map +3 -3
- package/dist/esm/parts/DSPerPageSelector/DSPerPageSelectorCTX.js +8 -0
- package/dist/esm/parts/DSPerPageSelector/DSPerPageSelectorCTX.js.map +7 -0
- package/dist/esm/parts/DSPerPageSelector/config/getInstanceIds.js +10 -0
- package/dist/esm/parts/DSPerPageSelector/config/getInstanceIds.js.map +7 -0
- package/dist/esm/parts/DSPerPageSelector/config/getOptions.js.map +2 -2
- package/dist/esm/parts/DSPerPageSelector/config/getSelectedOptionIndex.js +6 -0
- package/dist/esm/parts/DSPerPageSelector/config/getSelectedOptionIndex.js.map +7 -0
- package/dist/esm/parts/DSPerPageSelector/config/navigationKeys.js +14 -0
- package/dist/esm/parts/DSPerPageSelector/config/navigationKeys.js.map +7 -0
- package/dist/esm/parts/DSPerPageSelector/config/useFocusTracker.js +53 -0
- package/dist/esm/parts/DSPerPageSelector/config/useFocusTracker.js.map +7 -0
- package/dist/esm/parts/DSPerPageSelector/config/usePerPageSelector.js +69 -21
- package/dist/esm/parts/DSPerPageSelector/config/usePerPageSelector.js.map +2 -2
- package/dist/esm/parts/DSPerPageSelector/config/usePerPageSelectorFloatingContext.js +52 -0
- package/dist/esm/parts/DSPerPageSelector/config/usePerPageSelectorFloatingContext.js.map +7 -0
- package/dist/esm/parts/DSPerPageSelector/config/usePerPageSelectorInteractions.js +145 -0
- package/dist/esm/parts/DSPerPageSelector/config/usePerPageSelectorInteractions.js.map +7 -0
- package/dist/esm/parts/DSPerPageSelector/config/usePerPageSelectorSizing.js +42 -0
- package/dist/esm/parts/DSPerPageSelector/config/usePerPageSelectorSizing.js.map +7 -0
- package/dist/esm/parts/DSPerPageSelector/constants/index.js +47 -8
- package/dist/esm/parts/DSPerPageSelector/constants/index.js.map +2 -2
- package/dist/esm/parts/DSPerPageSelector/parts/OptionRenderer.js +64 -0
- package/dist/esm/parts/DSPerPageSelector/parts/OptionRenderer.js.map +7 -0
- package/dist/esm/parts/DSPerPageSelector/parts/Panel.js +90 -0
- package/dist/esm/parts/DSPerPageSelector/parts/Panel.js.map +7 -0
- package/dist/esm/parts/DSPerPageSelector/parts/Trigger.js +65 -0
- package/dist/esm/parts/DSPerPageSelector/parts/Trigger.js.map +7 -0
- package/dist/esm/parts/DSPerPageSelector/react-desc-prop-types.js +19 -2
- package/dist/esm/parts/DSPerPageSelector/react-desc-prop-types.js.map +2 -2
- package/dist/esm/parts/DSPerPageSelector/styled.js +111 -33
- package/dist/esm/parts/DSPerPageSelector/styled.js.map +2 -2
- package/dist/esm/parts/DSPerPageSelector/typescript-testing/slots-props.js +10 -1
- package/dist/esm/parts/DSPerPageSelector/typescript-testing/slots-props.js.map +2 -2
- package/dist/esm/parts/DSPerPageSelector/typescript-testing/typescript-testing.js +60 -1
- package/dist/esm/parts/DSPerPageSelector/typescript-testing/typescript-testing.js.map +2 -2
- package/dist/esm/react-desc-prop-types.js.map +1 -1
- package/dist/types/parts/DSPageNextButton/config/usePageNextButton.d.ts +4 -4
- package/dist/types/parts/DSPagePrevButton/config/usePagePrevButton.d.ts +4 -4
- package/dist/types/parts/DSPaginationContainer/config/usePaginationContainer.d.ts +4 -4
- package/dist/types/parts/DSPaginationSeparator/config/usePaginationSeparator.d.ts +4 -4
- package/dist/types/parts/DSPaginator/DSPaginator.d.ts +5 -0
- package/dist/types/parts/DSPaginator/DSPaginatorCTX.d.ts +5 -0
- package/dist/types/parts/DSPaginator/config/getAmountOfPages.d.ts +1 -0
- package/dist/types/parts/DSPaginator/config/getInstanceIds.d.ts +3 -0
- package/dist/types/parts/DSPaginator/config/navigationKeys.d.ts +3 -0
- package/dist/types/parts/DSPaginator/config/useFocusTracker.d.ts +20 -0
- package/dist/types/parts/DSPaginator/config/usePaginator.d.ts +52 -18
- package/dist/types/parts/DSPaginator/config/usePaginatorFloatingContext.d.ts +31 -0
- package/dist/types/parts/DSPaginator/config/usePaginatorInteractions.d.ts +37 -0
- package/dist/types/parts/DSPaginator/config/usePaginatorSizing.d.ts +37 -0
- package/dist/types/parts/DSPaginator/constants/index.d.ts +36 -1
- package/dist/types/parts/DSPaginator/parts/OptionRenderer.d.ts +11 -0
- package/dist/types/parts/DSPaginator/parts/Panel.d.ts +5 -0
- package/dist/types/parts/DSPaginator/parts/Trigger.d.ts +5 -0
- package/dist/types/parts/DSPaginator/react-desc-prop-types.d.ts +17 -0
- package/dist/types/parts/DSPaginator/styled.d.ts +17 -4
- package/dist/types/parts/DSPerPageSelector/DSPerPageSelector.d.ts +5 -0
- package/dist/types/parts/DSPerPageSelector/DSPerPageSelectorCTX.d.ts +5 -0
- package/dist/types/parts/DSPerPageSelector/config/getInstanceIds.d.ts +3 -0
- package/dist/types/parts/DSPerPageSelector/config/getOptions.d.ts +3 -3
- package/dist/types/parts/DSPerPageSelector/config/getSelectedOptionIndex.d.ts +2 -0
- package/dist/types/parts/DSPerPageSelector/config/navigationKeys.d.ts +3 -0
- package/dist/types/parts/DSPerPageSelector/config/useFocusTracker.d.ts +22 -0
- package/dist/types/parts/DSPerPageSelector/config/usePerPageSelector.d.ts +43 -10
- package/dist/types/parts/DSPerPageSelector/config/usePerPageSelectorFloatingContext.d.ts +31 -0
- package/dist/types/parts/DSPerPageSelector/config/usePerPageSelectorInteractions.d.ts +38 -0
- package/dist/types/parts/DSPerPageSelector/config/usePerPageSelectorSizing.d.ts +25 -0
- package/dist/types/parts/DSPerPageSelector/constants/index.d.ts +32 -5
- package/dist/types/parts/DSPerPageSelector/parts/OptionRenderer.d.ts +11 -0
- package/dist/types/parts/DSPerPageSelector/parts/Panel.d.ts +5 -0
- package/dist/types/parts/DSPerPageSelector/parts/Trigger.d.ts +5 -0
- package/dist/types/parts/DSPerPageSelector/react-desc-prop-types.d.ts +27 -2
- package/dist/types/parts/DSPerPageSelector/styled.d.ts +15 -2
- package/dist/types/react-desc-prop-types.d.ts +2 -2
- package/package.json +15 -13
- package/dist/cjs/parts/DSPaginator/config/createPaginatorHeader.js.map +0 -7
- package/dist/cjs/parts/DSPaginator/config/getOptions.js +0 -76
- package/dist/cjs/parts/DSPaginator/config/getOptions.js.map +0 -7
- package/dist/cjs/parts/DSPaginator/config/usePaginationSearch.js.map +0 -7
- package/dist/esm/parts/DSPaginator/config/createPaginatorHeader.js +0 -24
- package/dist/esm/parts/DSPaginator/config/createPaginatorHeader.js.map +0 -7
- package/dist/esm/parts/DSPaginator/config/getOptions.js +0 -46
- package/dist/esm/parts/DSPaginator/config/getOptions.js.map +0 -7
- package/dist/esm/parts/DSPaginator/config/usePaginationSearch.js +0 -33
- package/dist/esm/parts/DSPaginator/config/usePaginationSearch.js.map +0 -7
- package/dist/types/parts/DSPaginator/config/createPaginatorHeader.d.ts +0 -9
- package/dist/types/parts/DSPaginator/config/getOptions.d.ts +0 -8
- package/dist/types/parts/DSPaginator/config/usePaginationSearch.d.ts +0 -1
|
@@ -1,9 +1,16 @@
|
|
|
1
1
|
import * as React from "react";
|
|
2
2
|
import { DSButtonV3 } from "@elliemae/ds-button-v2";
|
|
3
|
-
import {
|
|
4
|
-
import
|
|
3
|
+
import { FloatingWrapper } from "@elliemae/ds-floating-context";
|
|
4
|
+
import { DSFastList } from "@elliemae/ds-fast-list";
|
|
5
|
+
import { Grid } from "@elliemae/ds-grid";
|
|
5
6
|
import { css, styled } from "@elliemae/ds-system";
|
|
6
|
-
import {
|
|
7
|
+
import {
|
|
8
|
+
DSPaginationName,
|
|
9
|
+
PAGINATOR_HEADER_HEIGHT,
|
|
10
|
+
PAGINATOR_OPTION_HEIGHT,
|
|
11
|
+
PAGINATOR_PANEL_PADDING_BOTTOM,
|
|
12
|
+
PAGINATOR_SLOTS
|
|
13
|
+
} from "./constants/index.js";
|
|
7
14
|
const fontSize13Base13 = 13 / 13;
|
|
8
15
|
const fontSize13Base16 = 13 / 16;
|
|
9
16
|
const fontSize18Base13 = 18 / 13;
|
|
@@ -24,14 +31,11 @@ const styledFocusCss = css`
|
|
|
24
31
|
z-index: 7;
|
|
25
32
|
}
|
|
26
33
|
`;
|
|
27
|
-
const
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
position: absolute;
|
|
33
|
-
`;
|
|
34
|
-
const paginationDropdownButtonCommonStyles = css`
|
|
34
|
+
const StyledTrigger = styled(DSButtonV3, {
|
|
35
|
+
name: DSPaginationName,
|
|
36
|
+
slot: PAGINATOR_SLOTS.PAGINATOR,
|
|
37
|
+
preserveLegacyDataTestId: true
|
|
38
|
+
})`
|
|
35
39
|
min-height: 42px;
|
|
36
40
|
display: grid;
|
|
37
41
|
grid-auto-flow: column;
|
|
@@ -42,7 +46,9 @@ const paginationDropdownButtonCommonStyles = css`
|
|
|
42
46
|
padding-right: 16px;
|
|
43
47
|
grid-gap: 8px;
|
|
44
48
|
font-size: 13px;
|
|
45
|
-
color: neutral-700
|
|
49
|
+
/* the existing DSPaginator declares \`color: neutral-700\` here, but inside its \`css\` helper the token is never
|
|
50
|
+
resolved, so the declaration is dropped and the text renders with the browser's button color (black, greyed when
|
|
51
|
+
disabled). Not copied: the paginator keeps what is rendered today (see dimsum_compliance_status_report.md) */
|
|
46
52
|
cursor: pointer;
|
|
47
53
|
border-radius: 0;
|
|
48
54
|
font-weight: ${(props) => props.theme.fontWeights.regular};
|
|
@@ -53,25 +59,15 @@ const paginationDropdownButtonCommonStyles = css`
|
|
|
53
59
|
cursor: not-allowed;
|
|
54
60
|
}
|
|
55
61
|
white-space: nowrap;
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
/**
|
|
66
|
-
* Pagination uses DSTypography internally, but each typography variant defines
|
|
67
|
-
* its own font-size. When these components are placed inside a styled() wrapper,
|
|
68
|
-
* trying to style them via styled(DSTypography) triggers TypeScript errors
|
|
69
|
-
* because DSTypography exposes "as" props and variant-specific overrides.
|
|
70
|
-
*
|
|
71
|
-
* Instead of wrapping DSTypography directly in styled(), we target the
|
|
72
|
-
* underlying rendered elements via className/id. This avoids the TS conflicts
|
|
73
|
-
* while still allowing us to override their font-size reliably.
|
|
74
|
-
*/
|
|
62
|
+
|
|
63
|
+
/* same approach as the existing DSPaginator: the typography variants own their font-size, so we target the
|
|
64
|
+
rendered elements by className instead of wrapping DSTypography in styled() */
|
|
65
|
+
/* the detail of the current page wraps when it reaches the list width (the trigger does not reserve the width of the
|
|
66
|
+
widest detail: it follows the current one) */
|
|
67
|
+
.typography-paginator-detail {
|
|
68
|
+
white-space: normal;
|
|
69
|
+
overflow-wrap: anywhere;
|
|
70
|
+
}
|
|
75
71
|
#typography-page-index {
|
|
76
72
|
font-size: ${fontSize18Base16}rem;
|
|
77
73
|
@media (min-width: ${({ theme }) => theme.breakpoints.small}) {
|
|
@@ -85,21 +81,106 @@ const StyledDropdown = styled(DSDropdownMenuV2)`
|
|
|
85
81
|
}
|
|
86
82
|
}
|
|
87
83
|
`;
|
|
88
|
-
const
|
|
84
|
+
const StyledTriggerWrapper = styled("div", {
|
|
85
|
+
name: DSPaginationName,
|
|
86
|
+
slot: PAGINATOR_SLOTS.TRIGGER_WRAPPER
|
|
87
|
+
})`
|
|
88
|
+
display: contents;
|
|
89
|
+
`;
|
|
90
|
+
const StyledPageInfo = styled("div", { name: DSPaginationName, slot: PAGINATOR_SLOTS.PAGE_INFO })`
|
|
91
|
+
display: flex;
|
|
92
|
+
gap: 4px;
|
|
93
|
+
`;
|
|
94
|
+
const StyledFloatingWrapper = styled(FloatingWrapper, {
|
|
95
|
+
name: DSPaginationName,
|
|
96
|
+
slot: PAGINATOR_SLOTS.FLOATING_WRAPPER
|
|
97
|
+
})``;
|
|
98
|
+
const StyledPanel = styled("div", { name: DSPaginationName, slot: PAGINATOR_SLOTS.PANEL })`
|
|
99
|
+
display: grid;
|
|
100
|
+
grid-template-rows: auto 1fr;
|
|
101
|
+
/* same as the previous DSDropdownMenuV2 wrapper: 4px of padding below the list */
|
|
102
|
+
padding-bottom: ${PAGINATOR_PANEL_PADDING_BOTTOM}px;
|
|
103
|
+
background-color: ${({ theme }) => theme.colors.neutral["000"]};
|
|
104
|
+
`;
|
|
105
|
+
const StyledHeader = styled(Grid, { name: DSPaginationName, slot: PAGINATOR_SLOTS.HEADER })`
|
|
106
|
+
align-items: center;
|
|
107
|
+
box-sizing: border-box;
|
|
108
|
+
min-height: ${PAGINATOR_HEADER_HEIGHT}px;
|
|
109
|
+
padding: 0 0 0 4px;
|
|
110
|
+
border-bottom: 1px solid ${({ theme }) => theme.colors.neutral[300]};
|
|
89
111
|
font-size: ${fontSize12Base16}rem;
|
|
112
|
+
color: ${({ theme }) => theme.colors.neutral[500]};
|
|
90
113
|
@media (min-width: ${({ theme }) => theme.breakpoints.small}) {
|
|
91
114
|
font-size: ${fontSize12Base13}rem;
|
|
92
115
|
}
|
|
93
116
|
`;
|
|
94
|
-
const
|
|
95
|
-
|
|
96
|
-
|
|
117
|
+
const StyledListWrapper = styled("div", {
|
|
118
|
+
name: DSPaginationName,
|
|
119
|
+
slot: PAGINATOR_SLOTS.LIST_WRAPPER
|
|
120
|
+
})``;
|
|
121
|
+
const StyledList = styled(DSFastList, { name: DSPaginationName, slot: PAGINATOR_SLOTS.LIST })``;
|
|
122
|
+
const StyledOption = styled("div", { name: DSPaginationName, slot: PAGINATOR_SLOTS.OPTION })`
|
|
123
|
+
position: relative;
|
|
124
|
+
display: grid;
|
|
125
|
+
align-items: center;
|
|
126
|
+
column-gap: 8px;
|
|
127
|
+
min-height: ${PAGINATOR_OPTION_HEIGHT}px;
|
|
128
|
+
padding: 4px 16px;
|
|
129
|
+
cursor: pointer;
|
|
130
|
+
list-style: none;
|
|
131
|
+
font-size: ${fontSize13Base16}rem;
|
|
132
|
+
@media (min-width: ${({ theme }) => theme.breakpoints.small}) {
|
|
133
|
+
font-size: ${fontSize13Base13}rem;
|
|
134
|
+
}
|
|
135
|
+
background-color: ${({ theme }) => theme.colors.neutral["000"]};
|
|
136
|
+
&:hover {
|
|
137
|
+
background-color: ${({ theme }) => theme.colors.brand[200]};
|
|
138
|
+
}
|
|
139
|
+
&:focus {
|
|
140
|
+
outline: none;
|
|
141
|
+
background-color: ${({ theme }) => theme.colors.brand[200]};
|
|
142
|
+
&:after {
|
|
143
|
+
display: block;
|
|
144
|
+
content: ' ';
|
|
145
|
+
position: absolute;
|
|
146
|
+
top: 0;
|
|
147
|
+
left: 0;
|
|
148
|
+
right: 0;
|
|
149
|
+
bottom: 0;
|
|
150
|
+
border: 1px solid ${({ theme }) => theme.colors.brand[500]};
|
|
151
|
+
pointer-events: none;
|
|
152
|
+
z-index: 7;
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
`;
|
|
156
|
+
const StyledOptionCheckmark = styled("span", {
|
|
157
|
+
name: DSPaginationName,
|
|
158
|
+
slot: PAGINATOR_SLOTS.OPTION_CHECKMARK
|
|
159
|
+
})`
|
|
160
|
+
display: grid;
|
|
161
|
+
place-items: center;
|
|
162
|
+
`;
|
|
163
|
+
const StyledOptionPage = styled("span", { name: DSPaginationName, slot: PAGINATOR_SLOTS.OPTION_PAGE })``;
|
|
164
|
+
const StyledOptionDetail = styled("span", {
|
|
165
|
+
name: DSPaginationName,
|
|
166
|
+
slot: PAGINATOR_SLOTS.OPTION_DETAIL
|
|
167
|
+
})`
|
|
168
|
+
/* details wrap, they are never truncated (see stories/docs/principles/a11y/TextTruncationCriticalities.md) */
|
|
169
|
+
white-space: normal;
|
|
170
|
+
overflow-wrap: anywhere;
|
|
97
171
|
`;
|
|
98
172
|
export {
|
|
99
|
-
|
|
100
|
-
PaginationDropdownButtonPaginator,
|
|
101
|
-
StyledDropdown,
|
|
173
|
+
StyledFloatingWrapper,
|
|
102
174
|
StyledHeader,
|
|
103
|
-
|
|
175
|
+
StyledList,
|
|
176
|
+
StyledListWrapper,
|
|
177
|
+
StyledOption,
|
|
178
|
+
StyledOptionCheckmark,
|
|
179
|
+
StyledOptionDetail,
|
|
180
|
+
StyledOptionPage,
|
|
181
|
+
StyledPageInfo,
|
|
182
|
+
StyledPanel,
|
|
183
|
+
StyledTrigger,
|
|
184
|
+
StyledTriggerWrapper
|
|
104
185
|
};
|
|
105
186
|
//# sourceMappingURL=styled.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../../../scripts/build/transpile/react-shim.js", "../../../../src/parts/DSPaginator/styled.tsx"],
|
|
4
|
-
"sourcesContent": ["import * as React from 'react';\nexport { React };\n", "import { DSButtonV3 } from '@elliemae/ds-button-v2';\
|
|
5
|
-
"mappings": "AAAA,YAAY,WAAW;ACAvB,SAAS,kBAAkB;
|
|
4
|
+
"sourcesContent": ["import * as React from 'react';\nexport { React };\n", "import { DSButtonV3 } from '@elliemae/ds-button-v2';\nimport { FloatingWrapper } from '@elliemae/ds-floating-context';\nimport { DSFastList } from '@elliemae/ds-fast-list';\nimport { Grid } from '@elliemae/ds-grid';\nimport { css, styled } from '@elliemae/ds-system';\nimport type {} from '@xstyled/system';\nimport {\n DSPaginationName,\n PAGINATOR_HEADER_HEIGHT,\n PAGINATOR_OPTION_HEIGHT,\n PAGINATOR_PANEL_PADDING_BOTTOM,\n PAGINATOR_SLOTS,\n} from './constants/index.js';\n\n// the font sizes are the ones of the existing DSPaginator (same rem/px dance between the 13px and 16px base)\nconst fontSize13Base13 = 13 / 13;\nconst fontSize13Base16 = 13 / 16;\nconst fontSize18Base13 = 18 / 13;\nconst fontSize18Base16 = 18 / 16;\nconst fontSize12Base13 = 12 / 13;\nconst fontSize12Base16 = 12 / 16;\n\nconst styledFocusCss = css`\n &:after {\n display: block;\n content: ' ';\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n border: 2px solid ${({ theme }) => theme.colors.brand[700]};\n pointer-events: none;\n z-index: 7;\n }\n`;\n\nexport const StyledTrigger = styled(DSButtonV3, {\n name: DSPaginationName,\n slot: PAGINATOR_SLOTS.PAGINATOR,\n preserveLegacyDataTestId: true,\n})`\n min-height: 42px;\n display: grid;\n grid-auto-flow: column;\n justify-content: center;\n align-items: center;\n position: relative;\n padding-left: 16px;\n padding-right: 16px;\n grid-gap: 8px;\n font-size: 13px;\n /* the existing DSPaginator declares \\`color: neutral-700\\` here, but inside its \\`css\\` helper the token is never\n resolved, so the declaration is dropped and the text renders with the browser's button color (black, greyed when\n disabled). Not copied: the paginator keeps what is rendered today (see dimsum_compliance_status_report.md) */\n cursor: pointer;\n border-radius: 0;\n font-weight: ${(props) => props.theme.fontWeights.regular};\n :focus {\n ${styledFocusCss}\n }\n &:disabled {\n cursor: not-allowed;\n }\n white-space: nowrap;\n\n /* same approach as the existing DSPaginator: the typography variants own their font-size, so we target the\n rendered elements by className instead of wrapping DSTypography in styled() */\n /* the detail of the current page wraps when it reaches the list width (the trigger does not reserve the width of the\n widest detail: it follows the current one) */\n .typography-paginator-detail {\n white-space: normal;\n overflow-wrap: anywhere;\n }\n #typography-page-index {\n font-size: ${fontSize18Base16}rem;\n @media (min-width: ${({ theme }) => theme.breakpoints.small}) {\n font-size: ${fontSize18Base13}rem;\n }\n }\n .typography-page-info-and-detail {\n font-size: ${fontSize13Base16}rem;\n @media (min-width: ${({ theme }) => theme.breakpoints.small}) {\n font-size: ${fontSize13Base13}rem;\n }\n }\n`;\n\nexport const StyledTriggerWrapper = styled('div', {\n name: DSPaginationName,\n slot: PAGINATOR_SLOTS.TRIGGER_WRAPPER,\n})`\n display: contents;\n`;\n\nexport const StyledPageInfo = styled('div', { name: DSPaginationName, slot: PAGINATOR_SLOTS.PAGE_INFO })`\n display: flex;\n gap: 4px;\n`;\n\nexport const StyledFloatingWrapper = styled(FloatingWrapper, {\n name: DSPaginationName,\n slot: PAGINATOR_SLOTS.FLOATING_WRAPPER,\n})``;\n\nexport const StyledPanel = styled('div', { name: DSPaginationName, slot: PAGINATOR_SLOTS.PANEL })`\n display: grid;\n grid-template-rows: auto 1fr;\n /* same as the previous DSDropdownMenuV2 wrapper: 4px of padding below the list */\n padding-bottom: ${PAGINATOR_PANEL_PADDING_BOTTOM}px;\n background-color: ${({ theme }) => theme.colors.neutral['000']};\n`;\n\nexport const StyledHeader = styled(Grid, { name: DSPaginationName, slot: PAGINATOR_SLOTS.HEADER })`\n align-items: center;\n box-sizing: border-box;\n min-height: ${PAGINATOR_HEADER_HEIGHT}px;\n padding: 0 0 0 4px;\n border-bottom: 1px solid ${({ theme }) => theme.colors.neutral[300]};\n font-size: ${fontSize12Base16}rem;\n color: ${({ theme }) => theme.colors.neutral[500]};\n @media (min-width: ${({ theme }) => theme.breakpoints.small}) {\n font-size: ${fontSize12Base13}rem;\n }\n`;\n\n// explicit height: the virtual list needs a constrained box to scroll (its own container is height: 100%)\nexport const StyledListWrapper = styled('div', {\n name: DSPaginationName,\n slot: PAGINATOR_SLOTS.LIST_WRAPPER,\n})``;\n\nexport const StyledList = styled(DSFastList, { name: DSPaginationName, slot: PAGINATOR_SLOTS.LIST })``;\n\nexport const StyledOption = styled('div', { name: DSPaginationName, slot: PAGINATOR_SLOTS.OPTION })`\n position: relative;\n display: grid;\n align-items: center;\n column-gap: 8px;\n min-height: ${PAGINATOR_OPTION_HEIGHT}px;\n padding: 4px 16px;\n cursor: pointer;\n list-style: none;\n font-size: ${fontSize13Base16}rem;\n @media (min-width: ${({ theme }) => theme.breakpoints.small}) {\n font-size: ${fontSize13Base13}rem;\n }\n background-color: ${({ theme }) => theme.colors.neutral['000']};\n &:hover {\n background-color: ${({ theme }) => theme.colors.brand[200]};\n }\n &:focus {\n outline: none;\n background-color: ${({ theme }) => theme.colors.brand[200]};\n &:after {\n display: block;\n content: ' ';\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n border: 1px solid ${({ theme }) => theme.colors.brand[500]};\n pointer-events: none;\n z-index: 7;\n }\n }\n`;\n\nexport const StyledOptionCheckmark = styled('span', {\n name: DSPaginationName,\n slot: PAGINATOR_SLOTS.OPTION_CHECKMARK,\n})`\n display: grid;\n place-items: center;\n`;\n\nexport const StyledOptionPage = styled('span', { name: DSPaginationName, slot: PAGINATOR_SLOTS.OPTION_PAGE })``;\n\nexport const StyledOptionDetail = styled('span', {\n name: DSPaginationName,\n slot: PAGINATOR_SLOTS.OPTION_DETAIL,\n})`\n /* details wrap, they are never truncated (see stories/docs/principles/a11y/TextTruncationCriticalities.md) */\n white-space: normal;\n overflow-wrap: anywhere;\n`;\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -3,7 +3,18 @@ const SlotPropsAsObj = {
|
|
|
3
3
|
dsPaginationPaginator: { "aria-label": "just a typescript test" }
|
|
4
4
|
};
|
|
5
5
|
const SlotPropsAsFunctions = {
|
|
6
|
-
dsPaginationPaginator: () => ({ "aria-label": "just a typescript test" })
|
|
6
|
+
dsPaginationPaginator: () => ({ "aria-label": "just a typescript test" }),
|
|
7
|
+
dsPaginationPaginatorTriggerWrapper: () => ({ "aria-label": "just a typescript test" }),
|
|
8
|
+
dsPaginationPaginatorPageInfo: () => ({ "aria-label": "just a typescript test" }),
|
|
9
|
+
dsPaginationPaginatorFloatingWrapper: () => ({ "aria-label": "just a typescript test" }),
|
|
10
|
+
dsPaginationPaginatorPanel: () => ({ "aria-label": "just a typescript test" }),
|
|
11
|
+
dsPaginationPaginatorHeader: () => ({ "aria-label": "just a typescript test" }),
|
|
12
|
+
dsPaginationPaginatorListWrapper: () => ({ "aria-label": "just a typescript test" }),
|
|
13
|
+
dsPaginationPaginatorList: () => ({ "aria-label": "just a typescript test" }),
|
|
14
|
+
dsPaginationPaginatorOption: () => ({ "aria-label": "just a typescript test" }),
|
|
15
|
+
dsPaginationPaginatorOptionCheckmark: () => ({ "aria-label": "just a typescript test" }),
|
|
16
|
+
dsPaginationPaginatorOptionPage: () => ({ "aria-label": "just a typescript test" }),
|
|
17
|
+
dsPaginationPaginatorOptionDetail: () => ({ "aria-label": "just a typescript test" })
|
|
7
18
|
};
|
|
8
19
|
const EnsureAllSlotsExistInSlotFunctionArguments = SlotPropsAsFunctions;
|
|
9
20
|
//# sourceMappingURL=slot-props.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../../../../scripts/build/transpile/react-shim.js", "../../../../../src/parts/DSPaginator/typescript-testing/slot-props.ts"],
|
|
4
|
-
"sourcesContent": ["import * as React from 'react';\nexport { React };\n", "/* eslint-disable @typescript-eslint/no-unused-vars, no-unused-vars */\n\nimport type { TypescriptHelpersT } from '@elliemae/ds-typescript-helpers';\nimport type { DSPaginationName, PAGINATOR_SLOTS } from '../constants/index.js';\nimport type { DSPaginatorT } from '../react-desc-prop-types.js';\n\nconst SlotPropsAsObj: Partial<DSPaginatorT.Props> = {\n dsPaginationPaginator: { 'aria-label': 'just a typescript test' },\n};\nconst SlotPropsAsFunctions: DSPaginatorT.SlotFunctionArguments = {\n dsPaginationPaginator: () => ({ 'aria-label': 'just a typescript test' }),\n};\nconst EnsureAllSlotsExistInSlotFunctionArguments: Required<\n TypescriptHelpersT.PropsForSlots<typeof DSPaginationName, typeof PAGINATOR_SLOTS>\n> = SlotPropsAsFunctions;\n"],
|
|
5
|
-
"mappings": "AAAA,YAAY,WAAW;ACMvB,MAAM,iBAA8C;AAAA,EAClD,uBAAuB,EAAE,cAAc,yBAAyB;AAClE;AACA,MAAM,uBAA2D;AAAA,EAC/D,uBAAuB,OAAO,EAAE,cAAc,yBAAyB;
|
|
4
|
+
"sourcesContent": ["import * as React from 'react';\nexport { React };\n", "/* eslint-disable @typescript-eslint/no-unused-vars, no-unused-vars */\n\nimport type { TypescriptHelpersT } from '@elliemae/ds-typescript-helpers';\nimport type { DSPaginationName, PAGINATOR_SLOTS } from '../constants/index.js';\nimport type { DSPaginatorT } from '../react-desc-prop-types.js';\n\nconst SlotPropsAsObj: Partial<DSPaginatorT.Props> = {\n dsPaginationPaginator: { 'aria-label': 'just a typescript test' },\n};\nconst SlotPropsAsFunctions: DSPaginatorT.SlotFunctionArguments = {\n dsPaginationPaginator: () => ({ 'aria-label': 'just a typescript test' }),\n dsPaginationPaginatorTriggerWrapper: () => ({ 'aria-label': 'just a typescript test' }),\n dsPaginationPaginatorPageInfo: () => ({ 'aria-label': 'just a typescript test' }),\n dsPaginationPaginatorFloatingWrapper: () => ({ 'aria-label': 'just a typescript test' }),\n dsPaginationPaginatorPanel: () => ({ 'aria-label': 'just a typescript test' }),\n dsPaginationPaginatorHeader: () => ({ 'aria-label': 'just a typescript test' }),\n dsPaginationPaginatorListWrapper: () => ({ 'aria-label': 'just a typescript test' }),\n dsPaginationPaginatorList: () => ({ 'aria-label': 'just a typescript test' }),\n dsPaginationPaginatorOption: () => ({ 'aria-label': 'just a typescript test' }),\n dsPaginationPaginatorOptionCheckmark: () => ({ 'aria-label': 'just a typescript test' }),\n dsPaginationPaginatorOptionPage: () => ({ 'aria-label': 'just a typescript test' }),\n dsPaginationPaginatorOptionDetail: () => ({ 'aria-label': 'just a typescript test' }),\n};\nconst EnsureAllSlotsExistInSlotFunctionArguments: Required<\n TypescriptHelpersT.PropsForSlots<typeof DSPaginationName, typeof PAGINATOR_SLOTS>\n> = SlotPropsAsFunctions;\n"],
|
|
5
|
+
"mappings": "AAAA,YAAY,WAAW;ACMvB,MAAM,iBAA8C;AAAA,EAClD,uBAAuB,EAAE,cAAc,yBAAyB;AAClE;AACA,MAAM,uBAA2D;AAAA,EAC/D,uBAAuB,OAAO,EAAE,cAAc,yBAAyB;AAAA,EACvE,qCAAqC,OAAO,EAAE,cAAc,yBAAyB;AAAA,EACrF,+BAA+B,OAAO,EAAE,cAAc,yBAAyB;AAAA,EAC/E,sCAAsC,OAAO,EAAE,cAAc,yBAAyB;AAAA,EACtF,4BAA4B,OAAO,EAAE,cAAc,yBAAyB;AAAA,EAC5E,6BAA6B,OAAO,EAAE,cAAc,yBAAyB;AAAA,EAC7E,kCAAkC,OAAO,EAAE,cAAc,yBAAyB;AAAA,EAClF,2BAA2B,OAAO,EAAE,cAAc,yBAAyB;AAAA,EAC3E,6BAA6B,OAAO,EAAE,cAAc,yBAAyB;AAAA,EAC7E,sCAAsC,OAAO,EAAE,cAAc,yBAAyB;AAAA,EACtF,iCAAiC,OAAO,EAAE,cAAc,yBAAyB;AAAA,EACjF,mCAAmC,OAAO,EAAE,cAAc,yBAAyB;AACrF;AACA,MAAM,6CAEF;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -2,7 +2,8 @@ import * as React from "react";
|
|
|
2
2
|
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
3
3
|
import { DSPaginator } from "../index.js";
|
|
4
4
|
const testRequiredProps = {};
|
|
5
|
-
const testOptionalProps = {};
|
|
5
|
+
const testOptionalProps = { listWidth: 320 };
|
|
6
|
+
const testOptionalPropsCssLength = { listWidth: "24rem" };
|
|
6
7
|
const testPartialDefaults = {
|
|
7
8
|
pageCount: 0,
|
|
8
9
|
isLoadingPageCount: false,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../../../../scripts/build/transpile/react-shim.js", "../../../../../src/parts/DSPaginator/typescript-testing/typescript-testing.tsx"],
|
|
4
|
-
"sourcesContent": ["import * as React from 'react';\nexport { React };\n", "/* eslint-disable @typescript-eslint/no-unused-vars, no-unused-vars */\nimport { DSPaginator } from '../index.js';\nimport type { DSPaginatorT } from '../index.js';\n\n// test we expose the namespace and the namespace follows our deliverable conventions\ntype ComponentPropsForApp = DSPaginatorT.Props;\ntype ComponentPropsInternals = DSPaginatorT.InternalProps;\ntype ComponentPropsDefaultProps = DSPaginatorT.DefaultProps;\ntype ComponentPropsOptionalProps = DSPaginatorT.OptionalProps;\ntype ComponentPropsRequiredProps = DSPaginatorT.RequiredProps;\n\nconst testRequiredProps: ComponentPropsRequiredProps = {};\n\nconst testOptionalProps: ComponentPropsOptionalProps = {};\n\n// difference Props and InternalProps is that InternalProps has all the default props filled in\n// Props allows for partial defaults\nconst testPartialDefaults: Partial<ComponentPropsDefaultProps> = {\n pageCount: 0,\n isLoadingPageCount: false,\n onPageChange: () => null,\n};\n\nconst testProps: ComponentPropsForApp = {\n ...testRequiredProps,\n ...testOptionalProps,\n ...testPartialDefaults,\n};\n\nconst testPropsAsSyntax = {\n ...testRequiredProps,\n ...testOptionalProps,\n ...testPartialDefaults,\n} as ComponentPropsForApp;\n\n// InternalProps requires all defaults to be filled in\nconst testCompleteDefaults: Required<ComponentPropsDefaultProps> = {\n pageCount: 0,\n isLoadingPageCount: false,\n pageIndex: 1,\n onPageChange: () => null,\n pageDetails: [],\n pageDetailsTitle: '',\n};\n\nconst testInternalProps: ComponentPropsInternals = {\n ...testRequiredProps,\n ...testOptionalProps,\n ...testCompleteDefaults,\n};\n\nconst testInternalPropsAsSyntax = {\n ...testRequiredProps,\n ...testOptionalProps,\n ...testCompleteDefaults,\n} as ComponentPropsInternals;\n\n// using the explicit type definition, if there is an error, it will be marked on the key that is wrong\nconst testExplicitDefinition: ComponentPropsForApp = {\n pageCount: 0,\n isLoadingPageCount: false,\n pageIndex: 1,\n onPageChange: () => null,\n pageDetails: [],\n pageDetailsTitle: '',\n};\n\n// using the \"as\" syntax, if there is an error, it will be marking the whole object as wrong because it is not compatible with the type\nconst testInferedTypeCompatibility = {\n pageCount: 0,\n isLoadingPageCount: false,\n pageIndex: 1,\n onPageChange: () => null,\n pageDetails: [],\n pageDetailsTitle: '',\n} as ComponentPropsForApp;\n\nconst testDefinitionAsConst = {\n pageCount: 0,\n isLoadingPageCount: false,\n pageIndex: 1,\n onPageChange: () => null,\n pageDetails: [],\n pageDetailsTitle: '',\n} as const;\n\nconst ExampleUsageComponent = () => (\n <>\n {/* works with explicitly casted props, all syntaxes */}\n <DSPaginator {...testExplicitDefinition} />\n <DSPaginator {...testInferedTypeCompatibility} />\n <DSPaginator {...testDefinitionAsConst} />\n {/* works with inline values */}\n <DSPaginator\n pageCount={0}\n isLoadingPageCount={false}\n pageIndex={1}\n onPageChange={() => null}\n pageDetails={[]}\n pageDetailsTitle=\"\"\n />\n </>\n);\n"],
|
|
5
|
-
"mappings": "AAAA,YAAY,WAAW;
|
|
4
|
+
"sourcesContent": ["import * as React from 'react';\nexport { React };\n", "/* eslint-disable @typescript-eslint/no-unused-vars, no-unused-vars */\nimport { DSPaginator } from '../index.js';\nimport type { DSPaginatorT } from '../index.js';\n\n// test we expose the namespace and the namespace follows our deliverable conventions\ntype ComponentPropsForApp = DSPaginatorT.Props;\ntype ComponentPropsInternals = DSPaginatorT.InternalProps;\ntype ComponentPropsDefaultProps = DSPaginatorT.DefaultProps;\ntype ComponentPropsOptionalProps = DSPaginatorT.OptionalProps;\ntype ComponentPropsRequiredProps = DSPaginatorT.RequiredProps;\n\nconst testRequiredProps: ComponentPropsRequiredProps = {};\n\nconst testOptionalProps: ComponentPropsOptionalProps = { listWidth: 320 };\nconst testOptionalPropsCssLength: ComponentPropsOptionalProps = { listWidth: '24rem' };\n\n// difference Props and InternalProps is that InternalProps has all the default props filled in\n// Props allows for partial defaults\nconst testPartialDefaults: Partial<ComponentPropsDefaultProps> = {\n pageCount: 0,\n isLoadingPageCount: false,\n onPageChange: () => null,\n};\n\nconst testProps: ComponentPropsForApp = {\n ...testRequiredProps,\n ...testOptionalProps,\n ...testPartialDefaults,\n};\n\nconst testPropsAsSyntax = {\n ...testRequiredProps,\n ...testOptionalProps,\n ...testPartialDefaults,\n} as ComponentPropsForApp;\n\n// InternalProps requires all defaults to be filled in\nconst testCompleteDefaults: Required<ComponentPropsDefaultProps> = {\n pageCount: 0,\n isLoadingPageCount: false,\n pageIndex: 1,\n onPageChange: () => null,\n pageDetails: [],\n pageDetailsTitle: '',\n};\n\nconst testInternalProps: ComponentPropsInternals = {\n ...testRequiredProps,\n ...testOptionalProps,\n ...testCompleteDefaults,\n};\n\nconst testInternalPropsAsSyntax = {\n ...testRequiredProps,\n ...testOptionalProps,\n ...testCompleteDefaults,\n} as ComponentPropsInternals;\n\n// using the explicit type definition, if there is an error, it will be marked on the key that is wrong\nconst testExplicitDefinition: ComponentPropsForApp = {\n pageCount: 0,\n isLoadingPageCount: false,\n pageIndex: 1,\n onPageChange: () => null,\n pageDetails: [],\n pageDetailsTitle: '',\n};\n\n// using the \"as\" syntax, if there is an error, it will be marking the whole object as wrong because it is not compatible with the type\nconst testInferedTypeCompatibility = {\n pageCount: 0,\n isLoadingPageCount: false,\n pageIndex: 1,\n onPageChange: () => null,\n pageDetails: [],\n pageDetailsTitle: '',\n} as ComponentPropsForApp;\n\nconst testDefinitionAsConst = {\n pageCount: 0,\n isLoadingPageCount: false,\n pageIndex: 1,\n onPageChange: () => null,\n pageDetails: [],\n pageDetailsTitle: '',\n} as const;\n\nconst ExampleUsageComponent = () => (\n <>\n {/* works with explicitly casted props, all syntaxes */}\n <DSPaginator {...testExplicitDefinition} />\n <DSPaginator {...testInferedTypeCompatibility} />\n <DSPaginator {...testDefinitionAsConst} />\n {/* works with inline values */}\n <DSPaginator\n pageCount={0}\n isLoadingPageCount={false}\n pageIndex={1}\n onPageChange={() => null}\n pageDetails={[]}\n pageDetailsTitle=\"\"\n />\n </>\n);\n"],
|
|
5
|
+
"mappings": "AAAA,YAAY,WAAW;ACwFrB,mBAEE,KAFF;AAvFF,SAAS,mBAAmB;AAU5B,MAAM,oBAAiD,CAAC;AAExD,MAAM,oBAAiD,EAAE,WAAW,IAAI;AACxE,MAAM,6BAA0D,EAAE,WAAW,QAAQ;AAIrF,MAAM,sBAA2D;AAAA,EAC/D,WAAW;AAAA,EACX,oBAAoB;AAAA,EACpB,cAAc,MAAM;AACtB;AAEA,MAAM,YAAkC;AAAA,EACtC,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AACL;AAEA,MAAM,oBAAoB;AAAA,EACxB,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AACL;AAGA,MAAM,uBAA6D;AAAA,EACjE,WAAW;AAAA,EACX,oBAAoB;AAAA,EACpB,WAAW;AAAA,EACX,cAAc,MAAM;AAAA,EACpB,aAAa,CAAC;AAAA,EACd,kBAAkB;AACpB;AAEA,MAAM,oBAA6C;AAAA,EACjD,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AACL;AAEA,MAAM,4BAA4B;AAAA,EAChC,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AACL;AAGA,MAAM,yBAA+C;AAAA,EACnD,WAAW;AAAA,EACX,oBAAoB;AAAA,EACpB,WAAW;AAAA,EACX,cAAc,MAAM;AAAA,EACpB,aAAa,CAAC;AAAA,EACd,kBAAkB;AACpB;AAGA,MAAM,+BAA+B;AAAA,EACnC,WAAW;AAAA,EACX,oBAAoB;AAAA,EACpB,WAAW;AAAA,EACX,cAAc,MAAM;AAAA,EACpB,aAAa,CAAC;AAAA,EACd,kBAAkB;AACpB;AAEA,MAAM,wBAAwB;AAAA,EAC5B,WAAW;AAAA,EACX,oBAAoB;AAAA,EACpB,WAAW;AAAA,EACX,cAAc,MAAM;AAAA,EACpB,aAAa,CAAC;AAAA,EACd,kBAAkB;AACpB;AAEA,MAAM,wBAAwB,MAC5B,iCAEE;AAAA,sBAAC,eAAa,GAAG,wBAAwB;AAAA,EACzC,oBAAC,eAAa,GAAG,8BAA8B;AAAA,EAC/C,oBAAC,eAAa,GAAG,uBAAuB;AAAA,EAExC;AAAA,IAAC;AAAA;AAAA,MACC,WAAW;AAAA,MACX,oBAAoB;AAAA,MACpB,WAAW;AAAA,MACX,cAAc,MAAM;AAAA,MACpB,aAAa,CAAC;AAAA,MACd,kBAAiB;AAAA;AAAA,EACnB;AAAA,GACF;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -1,89 +1,20 @@
|
|
|
1
1
|
import * as React from "react";
|
|
2
2
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
3
|
-
import { DSDropdownMenuV2 } from "@elliemae/ds-dropdownmenu-v2";
|
|
4
|
-
import { ChevronDown } from "@elliemae/ds-icons";
|
|
5
3
|
import { describe } from "@elliemae/ds-props-helpers";
|
|
6
|
-
import
|
|
7
|
-
import { useMemo } from "react";
|
|
4
|
+
import React2 from "react";
|
|
8
5
|
import { usePerPageSelector } from "./config/usePerPageSelector.js";
|
|
9
|
-
import { DSPerPageSelectorName
|
|
6
|
+
import { DSPerPageSelectorName } from "./constants/index.js";
|
|
7
|
+
import { DSPerPageSelectorContext } from "./DSPerPageSelectorCTX.js";
|
|
8
|
+
import { Panel } from "./parts/Panel.js";
|
|
9
|
+
import { Trigger } from "./parts/Trigger.js";
|
|
10
10
|
import { DSPerPageSelectorPropTypesSchema } from "./react-desc-prop-types.js";
|
|
11
|
-
import { PaginationDropdownButtonPerPageSelector, StyledHeader } from "./styled.js";
|
|
12
|
-
const Header = () => /* @__PURE__ */ jsx(StyledHeader, { children: "Per Page" });
|
|
13
11
|
const DSPerPageSelector = (props) => {
|
|
14
|
-
const
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
btnRef,
|
|
21
|
-
chevronRef,
|
|
22
|
-
chevronWidth,
|
|
23
|
-
isOpened,
|
|
24
|
-
options,
|
|
25
|
-
setIsOpened
|
|
26
|
-
} = usePerPageSelector(props);
|
|
27
|
-
const buttonOnClick = useMemo(() => {
|
|
28
|
-
if (globalAttributes.onClick) return globalAttributes.onClick;
|
|
29
|
-
return () => setIsOpened((prev) => !prev);
|
|
30
|
-
}, [globalAttributes.onClick, setIsOpened]);
|
|
31
|
-
const maxOptionsLength = useMemo(() => {
|
|
32
|
-
const maxLength = options.reduce((acc, cur) => Math.max(acc, ("label" in cur ? cur.label : "").length), 0);
|
|
33
|
-
return maxLength;
|
|
34
|
-
}, [options]);
|
|
35
|
-
return /* @__PURE__ */ jsx(
|
|
36
|
-
DSDropdownMenuV2,
|
|
37
|
-
{
|
|
38
|
-
isOpened,
|
|
39
|
-
options,
|
|
40
|
-
selectedOptions: { [pageSize.toString()]: true },
|
|
41
|
-
onOptionClick: (_, clickedOption) => {
|
|
42
|
-
onPageSizeChange(clickedOption.value);
|
|
43
|
-
setIsOpened(false);
|
|
44
|
-
btnRef.current?.focus();
|
|
45
|
-
},
|
|
46
|
-
onClickOutside: () => {
|
|
47
|
-
setIsOpened(false);
|
|
48
|
-
btnRef.current?.focus();
|
|
49
|
-
},
|
|
50
|
-
customOffset: [-(chevronWidth + 7), 2],
|
|
51
|
-
startPlacementPreference: "top-start",
|
|
52
|
-
actionRef,
|
|
53
|
-
minWidth: `calc(${chevronWidth + 60}px + ${maxOptionsLength}ch)`,
|
|
54
|
-
maxHeight: 300,
|
|
55
|
-
HeaderComp: Header,
|
|
56
|
-
children: /* @__PURE__ */ jsxs(
|
|
57
|
-
PaginationDropdownButtonPerPageSelector,
|
|
58
|
-
{
|
|
59
|
-
buttonType: "raw",
|
|
60
|
-
innerRef: btnRef,
|
|
61
|
-
"aria-pressed": isOpened,
|
|
62
|
-
"aria-label": `${pageSize} rows per page. Press to select rows per page`,
|
|
63
|
-
"data-testid": PER_PAGE_SELECTOR_DATA_TESTID.PER_PAGE_SELECTOR,
|
|
64
|
-
...globalAttributes,
|
|
65
|
-
...xstyledProps,
|
|
66
|
-
...ownerPropsConfig,
|
|
67
|
-
onClick: buttonOnClick,
|
|
68
|
-
children: [
|
|
69
|
-
/* @__PURE__ */ jsxs(
|
|
70
|
-
DSTypography,
|
|
71
|
-
{
|
|
72
|
-
variant: "b1",
|
|
73
|
-
as: "span",
|
|
74
|
-
className: "typography-per-page-selector",
|
|
75
|
-
children: [
|
|
76
|
-
pageSize,
|
|
77
|
-
" / page"
|
|
78
|
-
]
|
|
79
|
-
}
|
|
80
|
-
),
|
|
81
|
-
/* @__PURE__ */ jsx(ChevronDown, { color: ["brand-primary", "700"], innerRef: chevronRef })
|
|
82
|
-
]
|
|
83
|
-
}
|
|
84
|
-
)
|
|
85
|
-
}
|
|
86
|
-
);
|
|
12
|
+
const config = usePerPageSelector(props);
|
|
13
|
+
const ctx = React2.useMemo(() => ({ ...config }), [config]);
|
|
14
|
+
return /* @__PURE__ */ jsxs(DSPerPageSelectorContext.Provider, { value: ctx, children: [
|
|
15
|
+
/* @__PURE__ */ jsx(Trigger, {}),
|
|
16
|
+
/* @__PURE__ */ jsx(Panel, {})
|
|
17
|
+
] });
|
|
87
18
|
};
|
|
88
19
|
DSPerPageSelector.displayName = DSPerPageSelectorName;
|
|
89
20
|
const DSPerPageSelectorWithSchema = describe(DSPerPageSelector);
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../../../scripts/build/transpile/react-shim.js", "../../../../src/parts/DSPerPageSelector/DSPerPageSelector.tsx"],
|
|
4
|
-
"sourcesContent": ["import * as React from 'react';\nexport { React };\n", "import
|
|
5
|
-
"mappings": "AAAA,YAAY,WAAW;
|
|
6
|
-
"names": []
|
|
4
|
+
"sourcesContent": ["import * as React from 'react';\nexport { React };\n", "import { describe } from '@elliemae/ds-props-helpers';\nimport React from 'react';\nimport { usePerPageSelector } from './config/usePerPageSelector.js';\nimport { DSPerPageSelectorName } from './constants/index.js';\nimport { DSPerPageSelectorContext, type DSPerPageSelectorCTX } from './DSPerPageSelectorCTX.js';\nimport { Panel } from './parts/Panel.js';\nimport { Trigger } from './parts/Trigger.js';\nimport { DSPerPageSelectorPropTypesSchema, type DSPerPageSelectorT } 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 page sizes (virtualized with DSFastList). It replaced a DSDropdownMenuV2 based implementation keeping its\n * public contract; same widget as DSPaginator (accepted deviations: KNOWN_INTENTIONAL_DEVIATIONS.md, package root).\n */\nconst DSPerPageSelector: React.ComponentType<DSPerPageSelectorT.Props> = (props) => {\n const config = usePerPageSelector(props);\n const ctx: DSPerPageSelectorCTX = React.useMemo(() => ({ ...config }), [config]);\n\n return (\n <DSPerPageSelectorContext.Provider value={ctx}>\n <Trigger />\n <Panel />\n </DSPerPageSelectorContext.Provider>\n );\n};\n\nDSPerPageSelector.displayName = DSPerPageSelectorName;\nconst DSPerPageSelectorWithSchema = describe(DSPerPageSelector);\nDSPerPageSelectorWithSchema.propTypes = DSPerPageSelectorPropTypesSchema;\n\nexport { DSPerPageSelector, DSPerPageSelectorWithSchema };\n"],
|
|
5
|
+
"mappings": "AAAA,YAAY,WAAW;ACmBnB,SACE,KADF;AAnBJ,SAAS,gBAAgB;AACzB,OAAOA,YAAW;AAClB,SAAS,0BAA0B;AACnC,SAAS,6BAA6B;AACtC,SAAS,gCAA2D;AACpE,SAAS,aAAa;AACtB,SAAS,eAAe;AACxB,SAAS,wCAAiE;AAO1E,MAAM,oBAAmE,CAAC,UAAU;AAClF,QAAM,SAAS,mBAAmB,KAAK;AACvC,QAAM,MAA4BA,OAAM,QAAQ,OAAO,EAAE,GAAG,OAAO,IAAI,CAAC,MAAM,CAAC;AAE/E,SACE,qBAAC,yBAAyB,UAAzB,EAAkC,OAAO,KACxC;AAAA,wBAAC,WAAQ;AAAA,IACT,oBAAC,SAAM;AAAA,KACT;AAEJ;AAEA,kBAAkB,cAAc;AAChC,MAAM,8BAA8B,SAAS,iBAAiB;AAC9D,4BAA4B,YAAY;",
|
|
6
|
+
"names": ["React"]
|
|
7
7
|
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../../../scripts/build/transpile/react-shim.js", "../../../../src/parts/DSPerPageSelector/DSPerPageSelectorCTX.ts"],
|
|
4
|
+
"sourcesContent": ["import * as React from 'react';\nexport { React };\n", "import { createContext } from 'react';\nimport type { usePerPageSelector } from './config/usePerPageSelector.js';\n\nexport interface DSPerPageSelectorCTX extends ReturnType<typeof usePerPageSelector> {}\n\nconst defaultContext = {} as DSPerPageSelectorCTX;\n\n/** Single source of truth for the parts of DSPerPageSelector: props, owner props, floating context, focus tracker. */\nexport const DSPerPageSelectorContext = createContext<DSPerPageSelectorCTX>(defaultContext);\n"],
|
|
5
|
+
"mappings": "AAAA,YAAY,WAAW;ACAvB,SAAS,qBAAqB;AAK9B,MAAM,iBAAiB,CAAC;AAGjB,MAAM,2BAA2B,cAAoC,cAAc;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
const getHeaderId = (instanceUid) => `ds-per-page-selector-header-${instanceUid}`;
|
|
3
|
+
const getListId = (instanceUid) => `ds-per-page-selector-list-${instanceUid}`;
|
|
4
|
+
const getDialogId = (instanceUid) => `ds-per-page-selector-dialog-${instanceUid}`;
|
|
5
|
+
export {
|
|
6
|
+
getDialogId,
|
|
7
|
+
getHeaderId,
|
|
8
|
+
getListId
|
|
9
|
+
};
|
|
10
|
+
//# sourceMappingURL=getInstanceIds.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../../../../scripts/build/transpile/react-shim.js", "../../../../../src/parts/DSPerPageSelector/config/getInstanceIds.ts"],
|
|
4
|
+
"sourcesContent": ["import * as React from 'react';\nexport { React };\n", "// one place composes the ids so the parts and the aria relationships cannot drift apart\nexport const getHeaderId = (instanceUid: string) => `ds-per-page-selector-header-${instanceUid}`;\nexport const getListId = (instanceUid: string) => `ds-per-page-selector-list-${instanceUid}`;\nexport const getDialogId = (instanceUid: string) => `ds-per-page-selector-dialog-${instanceUid}`;\n"],
|
|
5
|
+
"mappings": "AAAA,YAAY,WAAW;ACChB,MAAM,cAAc,CAAC,gBAAwB,+BAA+B,WAAW;AACvF,MAAM,YAAY,CAAC,gBAAwB,6BAA6B,WAAW;AACnF,MAAM,cAAc,CAAC,gBAAwB,+BAA+B,WAAW;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../../../../scripts/build/transpile/react-shim.js", "../../../../../src/parts/DSPerPageSelector/config/getOptions.ts"],
|
|
4
|
-
"sourcesContent": ["import * as React from 'react';\nexport { React };\n", "import { range } from 'lodash-es';\nimport type {
|
|
5
|
-
"mappings": "AAAA,YAAY,WAAW;ACAvB,SAAS,aAAa;AAGf,MAAM,iBAAiB,
|
|
4
|
+
"sourcesContent": ["import * as React from 'react';\nexport { React };\n", "import { range } from 'lodash-es';\nimport type { DSPerPageSelectorT } from '../react-desc-prop-types.js';\n\nexport const generateOption = (value: number | DSPerPageSelectorT.PerPageOption): DSPerPageSelectorT.PerPageOption => {\n if (typeof value === 'object') {\n return value;\n }\n return {\n dsId: value.toString(),\n value,\n label: value.toString(),\n type: 'single',\n } as const;\n};\n\nexport const getOptions = (step: number, min: number, max: number) => {\n const options = range(min, max + step, step).map(generateOption);\n return min === 0 ? options.slice(1, options.length) : options;\n};\n"],
|
|
5
|
+
"mappings": "AAAA,YAAY,WAAW;ACAvB,SAAS,aAAa;AAGf,MAAM,iBAAiB,CAAC,UAAuF;AACpH,MAAI,OAAO,UAAU,UAAU;AAC7B,WAAO;AAAA,EACT;AACA,SAAO;AAAA,IACL,MAAM,MAAM,SAAS;AAAA,IACrB;AAAA,IACA,OAAO,MAAM,SAAS;AAAA,IACtB,MAAM;AAAA,EACR;AACF;AAEO,MAAM,aAAa,CAAC,MAAc,KAAa,QAAgB;AACpE,QAAM,UAAU,MAAM,KAAK,MAAM,MAAM,IAAI,EAAE,IAAI,cAAc;AAC/D,SAAO,QAAQ,IAAI,QAAQ,MAAM,GAAG,QAAQ,MAAM,IAAI;AACxD;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../../../../scripts/build/transpile/react-shim.js", "../../../../../src/parts/DSPerPageSelector/config/getSelectedOptionIndex.ts"],
|
|
4
|
+
"sourcesContent": ["import * as React from 'react';\nexport { React };\n", "import type { DSPerPageSelectorT } from '../react-desc-prop-types.js';\n\n// the selected option is the one whose `dsId` is the current page size, as in the previous implementation: `value`s are not\n// guaranteed to be unique, `dsId`s are, so it is the one identity the component can control. A consequence kept on purpose: an\n// option like { dsId: 'all', value: 1000 } is not shown as selected when the page size is 1000\nexport const getSelectedOptionIndex = (options: DSPerPageSelectorT.PerPageOption[], pageSize: number) =>\n options.findIndex((option) => option.dsId === pageSize.toString());\n"],
|
|
5
|
+
"mappings": "AAAA,YAAY,WAAW;ACKhB,MAAM,yBAAyB,CAAC,SAA6C,aAClF,QAAQ,UAAU,CAAC,WAAW,OAAO,SAAS,SAAS,SAAS,CAAC;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import { PER_PAGE_SELECTOR_PAGE_JUMP } from "../constants/index.js";
|
|
3
|
+
const NAVIGATION_KEYS = {
|
|
4
|
+
ArrowDown: (currentIndex) => currentIndex + 1,
|
|
5
|
+
ArrowUp: (currentIndex) => currentIndex - 1,
|
|
6
|
+
PageDown: (currentIndex) => currentIndex + PER_PAGE_SELECTOR_PAGE_JUMP,
|
|
7
|
+
PageUp: (currentIndex) => currentIndex - PER_PAGE_SELECTOR_PAGE_JUMP,
|
|
8
|
+
Home: () => 0,
|
|
9
|
+
End: (_currentIndex, amountOfOptions) => amountOfOptions - 1
|
|
10
|
+
};
|
|
11
|
+
export {
|
|
12
|
+
NAVIGATION_KEYS
|
|
13
|
+
};
|
|
14
|
+
//# sourceMappingURL=navigationKeys.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../../../../scripts/build/transpile/react-shim.js", "../../../../../src/parts/DSPerPageSelector/config/navigationKeys.ts"],
|
|
4
|
+
"sourcesContent": ["import * as React from 'react';\nexport { React };\n", "import { PER_PAGE_SELECTOR_PAGE_JUMP } from '../constants/index.js';\n\ntype GetTargetIndex = (currentIndex: number, amountOfOptions: 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, GetTargetIndex> = {\n ArrowDown: (currentIndex) => currentIndex + 1,\n ArrowUp: (currentIndex) => currentIndex - 1,\n PageDown: (currentIndex) => currentIndex + PER_PAGE_SELECTOR_PAGE_JUMP,\n PageUp: (currentIndex) => currentIndex - PER_PAGE_SELECTOR_PAGE_JUMP,\n Home: () => 0,\n End: (_currentIndex, amountOfOptions) => amountOfOptions - 1,\n};\n"],
|
|
5
|
+
"mappings": "AAAA,YAAY,WAAW;ACAvB,SAAS,mCAAmC;AAKrC,MAAM,kBAAkD;AAAA,EAC7D,WAAW,CAAC,iBAAiB,eAAe;AAAA,EAC5C,SAAS,CAAC,iBAAiB,eAAe;AAAA,EAC1C,UAAU,CAAC,iBAAiB,eAAe;AAAA,EAC3C,QAAQ,CAAC,iBAAiB,eAAe;AAAA,EACzC,MAAM,MAAM;AAAA,EACZ,KAAK,CAAC,eAAe,oBAAoB,kBAAkB;AAC7D;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import { useCallback, useMemo, useState } from "react";
|
|
3
|
+
import { PER_PAGE_SELECTOR_REGION_FOCUSES } from "../constants/index.js";
|
|
4
|
+
import { getSelectedOptionIndex } from "./getSelectedOptionIndex.js";
|
|
5
|
+
const getOptionRegionId = (dsId) => `${PER_PAGE_SELECTOR_REGION_FOCUSES.OPTION_PREFIX}${dsId}`;
|
|
6
|
+
const useFocusTracker = ({ options, pageSize }) => {
|
|
7
|
+
const [focusRegion, setFocusRegion] = useState(PER_PAGE_SELECTOR_REGION_FOCUSES.RESET);
|
|
8
|
+
const focusedIndex = useMemo(
|
|
9
|
+
() => options.findIndex((option) => getOptionRegionId(option.dsId) === focusRegion),
|
|
10
|
+
[focusRegion, options]
|
|
11
|
+
);
|
|
12
|
+
const clampIndex = useCallback((index) => Math.min(Math.max(index, 0), options.length - 1), [options.length]);
|
|
13
|
+
const trackFocusRegionReset = useCallback(() => setFocusRegion(PER_PAGE_SELECTOR_REGION_FOCUSES.RESET), []);
|
|
14
|
+
const trackFocusTrigger = useCallback(() => setFocusRegion(PER_PAGE_SELECTOR_REGION_FOCUSES.TRIGGER), []);
|
|
15
|
+
const trackFocusOptionAtIndex = useCallback(
|
|
16
|
+
(index) => {
|
|
17
|
+
if (options.length > 0) setFocusRegion(getOptionRegionId(options[clampIndex(index)].dsId));
|
|
18
|
+
},
|
|
19
|
+
[clampIndex, options]
|
|
20
|
+
);
|
|
21
|
+
const trackFocusOption = useCallback((dsId) => setFocusRegion(getOptionRegionId(dsId)), []);
|
|
22
|
+
const trackFocusSelectedOption = useCallback(
|
|
23
|
+
() => trackFocusOptionAtIndex(Math.max(getSelectedOptionIndex(options, pageSize), 0)),
|
|
24
|
+
[options, pageSize, trackFocusOptionAtIndex]
|
|
25
|
+
);
|
|
26
|
+
return useMemo(
|
|
27
|
+
() => ({
|
|
28
|
+
focusRegion,
|
|
29
|
+
focusedIndex,
|
|
30
|
+
clampIndex,
|
|
31
|
+
trackFocusRegionReset,
|
|
32
|
+
trackFocusTrigger,
|
|
33
|
+
trackFocusOption,
|
|
34
|
+
trackFocusOptionAtIndex,
|
|
35
|
+
trackFocusSelectedOption
|
|
36
|
+
}),
|
|
37
|
+
[
|
|
38
|
+
focusRegion,
|
|
39
|
+
focusedIndex,
|
|
40
|
+
clampIndex,
|
|
41
|
+
trackFocusRegionReset,
|
|
42
|
+
trackFocusTrigger,
|
|
43
|
+
trackFocusOption,
|
|
44
|
+
trackFocusOptionAtIndex,
|
|
45
|
+
trackFocusSelectedOption
|
|
46
|
+
]
|
|
47
|
+
);
|
|
48
|
+
};
|
|
49
|
+
export {
|
|
50
|
+
getOptionRegionId,
|
|
51
|
+
useFocusTracker
|
|
52
|
+
};
|
|
53
|
+
//# sourceMappingURL=useFocusTracker.js.map
|