@elliemae/ds-pagination 3.57.0-next.40 → 3.57.0-next.42
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/DSPageNextButton/DSPageNextButton.js +1 -1
- package/dist/cjs/parts/DSPageNextButton/DSPageNextButton.js.map +1 -1
- package/dist/cjs/parts/DSPagePrevButton/DSPagePrevButton.js +1 -1
- package/dist/cjs/parts/DSPagePrevButton/DSPagePrevButton.js.map +1 -1
- package/dist/cjs/parts/DSPaginationContainer/DSPaginationContainer.js +1 -1
- package/dist/cjs/parts/DSPaginationContainer/DSPaginationContainer.js.map +1 -1
- package/dist/cjs/parts/DSPaginator/DSPaginator.js +86 -17
- package/dist/cjs/parts/DSPaginator/DSPaginator.js.map +3 -3
- package/dist/cjs/parts/DSPaginator/config/createPaginatorHeader.js +5 -4
- package/dist/cjs/parts/DSPaginator/config/createPaginatorHeader.js.map +2 -2
- package/dist/cjs/parts/DSPaginator/config/getOptions.js +4 -4
- package/dist/cjs/parts/DSPaginator/config/getOptions.js.map +2 -2
- package/dist/cjs/parts/DSPaginator/config/usePaginator.js +17 -18
- package/dist/cjs/parts/DSPaginator/config/usePaginator.js.map +2 -2
- package/dist/cjs/parts/DSPaginator/styled.js +42 -2
- package/dist/cjs/parts/DSPaginator/styled.js.map +3 -3
- package/dist/cjs/parts/DSPerPageSelector/DSPerPageSelector.js +24 -8
- package/dist/cjs/parts/DSPerPageSelector/DSPerPageSelector.js.map +2 -2
- package/dist/cjs/parts/DSPerPageSelector/config/usePerPageSelector.js +6 -6
- package/dist/cjs/parts/DSPerPageSelector/config/usePerPageSelector.js.map +2 -2
- package/dist/cjs/parts/DSPerPageSelector/styled.js +29 -2
- package/dist/cjs/parts/DSPerPageSelector/styled.js.map +2 -2
- package/dist/cjs/parts/{DSPaginator/config → shared}/useOnElementOnResize.js.map +1 -1
- package/dist/esm/parts/DSPageNextButton/DSPageNextButton.js +1 -1
- package/dist/esm/parts/DSPageNextButton/DSPageNextButton.js.map +1 -1
- package/dist/esm/parts/DSPagePrevButton/DSPagePrevButton.js +1 -1
- package/dist/esm/parts/DSPagePrevButton/DSPagePrevButton.js.map +1 -1
- package/dist/esm/parts/DSPaginationContainer/DSPaginationContainer.js +1 -1
- package/dist/esm/parts/DSPaginationContainer/DSPaginationContainer.js.map +1 -1
- package/dist/esm/parts/DSPaginator/DSPaginator.js +87 -18
- package/dist/esm/parts/DSPaginator/DSPaginator.js.map +3 -3
- package/dist/esm/parts/DSPaginator/config/createPaginatorHeader.js +6 -5
- package/dist/esm/parts/DSPaginator/config/createPaginatorHeader.js.map +2 -2
- package/dist/esm/parts/DSPaginator/config/getOptions.js +4 -4
- package/dist/esm/parts/DSPaginator/config/getOptions.js.map +2 -2
- package/dist/esm/parts/DSPaginator/config/usePaginator.js +18 -19
- package/dist/esm/parts/DSPaginator/config/usePaginator.js.map +2 -2
- package/dist/esm/parts/DSPaginator/styled.js +42 -2
- package/dist/esm/parts/DSPaginator/styled.js.map +2 -2
- package/dist/esm/parts/DSPerPageSelector/DSPerPageSelector.js +26 -10
- package/dist/esm/parts/DSPerPageSelector/DSPerPageSelector.js.map +2 -2
- package/dist/esm/parts/DSPerPageSelector/config/usePerPageSelector.js +6 -6
- package/dist/esm/parts/DSPerPageSelector/config/usePerPageSelector.js.map +2 -2
- package/dist/esm/parts/DSPerPageSelector/styled.js +29 -2
- package/dist/esm/parts/DSPerPageSelector/styled.js.map +2 -2
- package/dist/esm/parts/{DSPaginator/config → shared}/useOnElementOnResize.js.map +1 -1
- package/dist/types/parts/DSPaginator/config/createPaginatorHeader.d.ts +2 -1
- package/dist/types/parts/DSPaginator/config/getOptions.d.ts +1 -0
- package/dist/types/parts/DSPaginator/config/usePaginator.d.ts +4 -0
- package/dist/types/parts/DSPaginator/styled.d.ts +2 -0
- package/dist/types/parts/DSPerPageSelector/config/usePerPageSelector.d.ts +2 -1
- package/dist/types/parts/DSPerPageSelector/styled.d.ts +1 -0
- package/package.json +13 -13
- /package/dist/cjs/parts/{DSPaginator/config → shared}/useOnElementOnResize.js +0 -0
- /package/dist/esm/parts/{DSPaginator/config → shared}/useOnElementOnResize.js +0 -0
- /package/dist/types/parts/{DSPaginator/config → shared}/useOnElementOnResize.d.ts +0 -0
|
@@ -46,7 +46,7 @@ const NextPageButton = (0, import_ds_system.styled)(import_ds_button_v2.DSButton
|
|
|
46
46
|
slot: import_constants.PAGE_NEXT_BUTTON_SLOTS.PAGE_NEXT_BUTTON,
|
|
47
47
|
preserveLegacyDataTestId: true
|
|
48
48
|
})`
|
|
49
|
-
height: 42px;
|
|
49
|
+
min-height: 42px;
|
|
50
50
|
display: grid;
|
|
51
51
|
place-items: center;
|
|
52
52
|
position: relative;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/parts/DSPageNextButton/DSPageNextButton.tsx", "../../../../../../../scripts/build/transpile/react-shim.js"],
|
|
4
|
-
"sourcesContent": ["import { describe } from '@elliemae/ds-props-helpers';\nimport { styled } from '@elliemae/ds-system';\nimport React from 'react';\n\nimport { DSButtonV3 } from '@elliemae/ds-button-v2';\nimport { ChevronRight } from '@elliemae/ds-icons';\nimport { usePageNextButton } from './config/usePageNextButton.js';\nimport {\n DSPageNextButtonName,\n DSPaginationName,\n PAGE_NEXT_BUTTON_DATA_TESTID,\n PAGE_NEXT_BUTTON_SLOTS,\n} from './constants/index.js';\nimport { type DSPageNextButtonT, DSPageNextButtonPropTypesSchema } from './react-desc-prop-types.js';\n\nconst NextPageButton = styled(DSButtonV3, {\n name: DSPaginationName,\n slot: PAGE_NEXT_BUTTON_SLOTS.PAGE_NEXT_BUTTON,\n preserveLegacyDataTestId: true,\n})`\n height: 42px;\n display: grid;\n place-items: center;\n position: relative;\n padding-left: 8px;\n padding-right: 8px;\n border-radius: 0;\n :focus {\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 cursor: ${(props) => (props.disabled ? 'not-allowed' : 'pointer')};\n`;\n\nconst DSPageNextButton: React.ComponentType<DSPageNextButtonT.Props> = (props) => {\n const {\n propsWithDefault: { canNextPage, onNextPage },\n xstyledProps,\n globalAttributes,\n ownerPropsConfig,\n } = usePageNextButton(props);\n\n return (\n <NextPageButton\n disabled={!canNextPage}\n buttonType=\"raw\"\n data-testid={PAGE_NEXT_BUTTON_DATA_TESTID.PAGE_NEXT_BUTTON}\n aria-label=\"Go to next page\"\n {...globalAttributes}\n {...xstyledProps}\n {...ownerPropsConfig}\n onClick={() => {\n if (canNextPage) onNextPage();\n }}\n >\n <ChevronRight color={canNextPage ? ['brand-primary', '700'] : ['neutral', '500']} />\n </NextPageButton>\n );\n};\n\nDSPageNextButton.displayName = DSPageNextButtonName;\nconst DSPageNextButtonWithSchema = describe(DSPageNextButton);\nDSPageNextButtonWithSchema.propTypes = DSPageNextButtonPropTypesSchema;\n\nexport { DSPageNextButton, DSPageNextButtonWithSchema };\n", "import * as React from 'react';\nexport { React };\n"],
|
|
4
|
+
"sourcesContent": ["import { describe } from '@elliemae/ds-props-helpers';\nimport { styled } from '@elliemae/ds-system';\nimport React from 'react';\n\nimport { DSButtonV3 } from '@elliemae/ds-button-v2';\nimport { ChevronRight } from '@elliemae/ds-icons';\nimport { usePageNextButton } from './config/usePageNextButton.js';\nimport {\n DSPageNextButtonName,\n DSPaginationName,\n PAGE_NEXT_BUTTON_DATA_TESTID,\n PAGE_NEXT_BUTTON_SLOTS,\n} from './constants/index.js';\nimport { type DSPageNextButtonT, DSPageNextButtonPropTypesSchema } from './react-desc-prop-types.js';\n\nconst NextPageButton = styled(DSButtonV3, {\n name: DSPaginationName,\n slot: PAGE_NEXT_BUTTON_SLOTS.PAGE_NEXT_BUTTON,\n preserveLegacyDataTestId: true,\n})`\n min-height: 42px;\n display: grid;\n place-items: center;\n position: relative;\n padding-left: 8px;\n padding-right: 8px;\n border-radius: 0;\n :focus {\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 cursor: ${(props) => (props.disabled ? 'not-allowed' : 'pointer')};\n`;\n\nconst DSPageNextButton: React.ComponentType<DSPageNextButtonT.Props> = (props) => {\n const {\n propsWithDefault: { canNextPage, onNextPage },\n xstyledProps,\n globalAttributes,\n ownerPropsConfig,\n } = usePageNextButton(props);\n\n return (\n <NextPageButton\n disabled={!canNextPage}\n buttonType=\"raw\"\n data-testid={PAGE_NEXT_BUTTON_DATA_TESTID.PAGE_NEXT_BUTTON}\n aria-label=\"Go to next page\"\n {...globalAttributes}\n {...xstyledProps}\n {...ownerPropsConfig}\n onClick={() => {\n if (canNextPage) onNextPage();\n }}\n >\n <ChevronRight color={canNextPage ? ['brand-primary', '700'] : ['neutral', '500']} />\n </NextPageButton>\n );\n};\n\nDSPageNextButton.displayName = DSPageNextButtonName;\nconst DSPageNextButtonWithSchema = describe(DSPageNextButton);\nDSPageNextButtonWithSchema.propTypes = DSPageNextButtonPropTypesSchema;\n\nexport { DSPageNextButton, DSPageNextButtonWithSchema };\n", "import * as React from 'react';\nexport { React };\n"],
|
|
5
5
|
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADiEjB;AAjEN,8BAAyB;AACzB,uBAAuB;AAGvB,0BAA2B;AAC3B,sBAA6B;AAC7B,+BAAkC;AAClC,uBAKO;AACP,mCAAwE;AAExE,MAAM,qBAAiB,yBAAO,gCAAY;AAAA,EACxC,MAAM;AAAA,EACN,MAAM,wCAAuB;AAAA,EAC7B,0BAA0B;AAC5B,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,0BAiByB,CAAC,EAAE,MAAM,MAAM,MAAM,OAAO,MAAM,GAAG,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA,YAKpD,CAAC,UAAW,MAAM,WAAW,gBAAgB,SAAU;AAAA;AAGnE,MAAM,mBAAiE,CAAC,UAAU;AAChF,QAAM;AAAA,IACJ,kBAAkB,EAAE,aAAa,WAAW;AAAA,IAC5C;AAAA,IACA;AAAA,IACA;AAAA,EACF,QAAI,4CAAkB,KAAK;AAE3B,SACE;AAAA,IAAC;AAAA;AAAA,MACC,UAAU,CAAC;AAAA,MACX,YAAW;AAAA,MACX,eAAa,8CAA6B;AAAA,MAC1C,cAAW;AAAA,MACV,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,MACJ,SAAS,MAAM;AACb,YAAI,YAAa,YAAW;AAAA,MAC9B;AAAA,MAEA,sDAAC,gCAAa,OAAO,cAAc,CAAC,iBAAiB,KAAK,IAAI,CAAC,WAAW,KAAK,GAAG;AAAA;AAAA,EACpF;AAEJ;AAEA,iBAAiB,cAAc;AAC/B,MAAM,iCAA6B,kCAAS,gBAAgB;AAC5D,2BAA2B,YAAY;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -46,7 +46,7 @@ const PreviousPageButton = (0, import_ds_system.styled)(import_ds_button_v2.DSBu
|
|
|
46
46
|
slot: import_constants.PAGE_PREV_BUTTON_SLOTS.PREVIOUS_BUTTON,
|
|
47
47
|
preserveLegacyDataTestId: true
|
|
48
48
|
})`
|
|
49
|
-
height: 42px;
|
|
49
|
+
min-height: 42px;
|
|
50
50
|
display: grid;
|
|
51
51
|
place-items: center;
|
|
52
52
|
position: relative;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/parts/DSPagePrevButton/DSPagePrevButton.tsx", "../../../../../../../scripts/build/transpile/react-shim.js"],
|
|
4
|
-
"sourcesContent": ["import { describe } from '@elliemae/ds-props-helpers';\nimport { styled } from '@elliemae/ds-system';\nimport React from 'react';\n\nimport { DSButtonV3 } from '@elliemae/ds-button-v2';\nimport { ChevronLeft } from '@elliemae/ds-icons';\nimport { usePagePrevButton } from './config/usePagePrevButton.js';\nimport {\n DSPagePrevButtonName,\n DSPaginationName,\n PAGE_PREV_BUTTON_DATA_TESTID,\n PAGE_PREV_BUTTON_SLOTS,\n} from './constants/index.js';\nimport { type DSPagePrevButtonT, DSPagePrevButtonPropTypesSchema } from './react-desc-prop-types.js';\n\nconst PreviousPageButton = styled(DSButtonV3, {\n name: DSPaginationName,\n slot: PAGE_PREV_BUTTON_SLOTS.PREVIOUS_BUTTON,\n preserveLegacyDataTestId: true,\n})`\n height: 42px;\n display: grid;\n place-items: center;\n position: relative;\n padding-left: 8px;\n padding-right: 8px;\n border-radius: 0;\n :focus {\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 cursor: ${(props) => (props.disabled ? 'not-allowed' : 'pointer')};\n`;\n\nconst DSPagePrevButton: React.ComponentType<DSPagePrevButtonT.Props> = (props) => {\n const {\n propsWithDefault: { canPreviousPage, onPreviousPage },\n xstyledProps,\n globalAttributes,\n ownerPropsConfig,\n } = usePagePrevButton(props);\n\n return (\n <PreviousPageButton\n disabled={!canPreviousPage}\n buttonType=\"raw\"\n data-testid={PAGE_PREV_BUTTON_DATA_TESTID.PREVIOUS_BUTTON}\n aria-label=\"Go to previous page\"\n {...globalAttributes}\n {...xstyledProps}\n {...ownerPropsConfig}\n onClick={() => {\n if (canPreviousPage) onPreviousPage();\n }}\n >\n <ChevronLeft color={canPreviousPage ? ['brand-primary', '700'] : ['neutral', '500']} />\n </PreviousPageButton>\n );\n};\n\nDSPagePrevButton.displayName = DSPagePrevButtonName;\nconst DSPagePrevButtonWithSchema = describe(DSPagePrevButton);\nDSPagePrevButtonWithSchema.propTypes = DSPagePrevButtonPropTypesSchema;\n\nexport { DSPagePrevButton, DSPagePrevButtonWithSchema };\n", "import * as React from 'react';\nexport { React };\n"],
|
|
4
|
+
"sourcesContent": ["import { describe } from '@elliemae/ds-props-helpers';\nimport { styled } from '@elliemae/ds-system';\nimport React from 'react';\n\nimport { DSButtonV3 } from '@elliemae/ds-button-v2';\nimport { ChevronLeft } from '@elliemae/ds-icons';\nimport { usePagePrevButton } from './config/usePagePrevButton.js';\nimport {\n DSPagePrevButtonName,\n DSPaginationName,\n PAGE_PREV_BUTTON_DATA_TESTID,\n PAGE_PREV_BUTTON_SLOTS,\n} from './constants/index.js';\nimport { type DSPagePrevButtonT, DSPagePrevButtonPropTypesSchema } from './react-desc-prop-types.js';\n\nconst PreviousPageButton = styled(DSButtonV3, {\n name: DSPaginationName,\n slot: PAGE_PREV_BUTTON_SLOTS.PREVIOUS_BUTTON,\n preserveLegacyDataTestId: true,\n})`\n min-height: 42px;\n display: grid;\n place-items: center;\n position: relative;\n padding-left: 8px;\n padding-right: 8px;\n border-radius: 0;\n :focus {\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 cursor: ${(props) => (props.disabled ? 'not-allowed' : 'pointer')};\n`;\n\nconst DSPagePrevButton: React.ComponentType<DSPagePrevButtonT.Props> = (props) => {\n const {\n propsWithDefault: { canPreviousPage, onPreviousPage },\n xstyledProps,\n globalAttributes,\n ownerPropsConfig,\n } = usePagePrevButton(props);\n\n return (\n <PreviousPageButton\n disabled={!canPreviousPage}\n buttonType=\"raw\"\n data-testid={PAGE_PREV_BUTTON_DATA_TESTID.PREVIOUS_BUTTON}\n aria-label=\"Go to previous page\"\n {...globalAttributes}\n {...xstyledProps}\n {...ownerPropsConfig}\n onClick={() => {\n if (canPreviousPage) onPreviousPage();\n }}\n >\n <ChevronLeft color={canPreviousPage ? ['brand-primary', '700'] : ['neutral', '500']} />\n </PreviousPageButton>\n );\n};\n\nDSPagePrevButton.displayName = DSPagePrevButtonName;\nconst DSPagePrevButtonWithSchema = describe(DSPagePrevButton);\nDSPagePrevButtonWithSchema.propTypes = DSPagePrevButtonPropTypesSchema;\n\nexport { DSPagePrevButton, DSPagePrevButtonWithSchema };\n", "import * as React from 'react';\nexport { React };\n"],
|
|
5
5
|
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADiEjB;AAjEN,8BAAyB;AACzB,uBAAuB;AAGvB,0BAA2B;AAC3B,sBAA4B;AAC5B,+BAAkC;AAClC,uBAKO;AACP,mCAAwE;AAExE,MAAM,yBAAqB,yBAAO,gCAAY;AAAA,EAC5C,MAAM;AAAA,EACN,MAAM,wCAAuB;AAAA,EAC7B,0BAA0B;AAC5B,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,0BAiByB,CAAC,EAAE,MAAM,MAAM,MAAM,OAAO,MAAM,GAAG,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA,YAKpD,CAAC,UAAW,MAAM,WAAW,gBAAgB,SAAU;AAAA;AAGnE,MAAM,mBAAiE,CAAC,UAAU;AAChF,QAAM;AAAA,IACJ,kBAAkB,EAAE,iBAAiB,eAAe;AAAA,IACpD;AAAA,IACA;AAAA,IACA;AAAA,EACF,QAAI,4CAAkB,KAAK;AAE3B,SACE;AAAA,IAAC;AAAA;AAAA,MACC,UAAU,CAAC;AAAA,MACX,YAAW;AAAA,MACX,eAAa,8CAA6B;AAAA,MAC1C,cAAW;AAAA,MACV,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,MACJ,SAAS,MAAM;AACb,YAAI,gBAAiB,gBAAe;AAAA,MACtC;AAAA,MAEA,sDAAC,+BAAY,OAAO,kBAAkB,CAAC,iBAAiB,KAAK,IAAI,CAAC,WAAW,KAAK,GAAG;AAAA;AAAA,EACvF;AAEJ;AAEA,iBAAiB,cAAc;AAC/B,MAAM,iCAA6B,kCAAS,gBAAgB;AAC5D,2BAA2B,YAAY;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -41,7 +41,7 @@ var import_react_desc_prop_types = require("./react-desc-prop-types.js");
|
|
|
41
41
|
var import_usePaginationContainer = require("./config/usePaginationContainer.js");
|
|
42
42
|
var import_constants = require("./constants/index.js");
|
|
43
43
|
const StyledPaginationContainer = (0, import_ds_system.styled)(import_ds_grid.Grid, { name: import_constants.DSPaginationName, slot: import_constants.PAGINATION_CONTAINER_SLOTS.ROOT })`
|
|
44
|
-
height: 42px;
|
|
44
|
+
min-height: 42px;
|
|
45
45
|
max-width: 100%;
|
|
46
46
|
align-items: center;
|
|
47
47
|
justify-content: center;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/parts/DSPaginationContainer/DSPaginationContainer.tsx", "../../../../../../../scripts/build/transpile/react-shim.js"],
|
|
4
|
-
"sourcesContent": ["import React from 'react';\nimport { describe, type XstyledProps } from '@elliemae/ds-props-helpers';\nimport { styled, xStyledCommonProps } from '@elliemae/ds-system';\nimport { Grid } from '@elliemae/ds-grid';\nimport { type DSPaginationContainerT, DSPaginationContainerPropTypesSchema } from './react-desc-prop-types.js';\nimport { usePaginationContainer } from './config/usePaginationContainer.js';\nimport {\n DSPaginationContainerName,\n DSPaginationName,\n PAGINATION_CONTAINER_DATA_TESTID,\n PAGINATION_CONTAINER_SLOTS,\n} from './constants/index.js';\n\nconst StyledPaginationContainer = styled(Grid, { name: DSPaginationName, slot: PAGINATION_CONTAINER_SLOTS.ROOT })<\n React.ComponentProps<typeof Grid> & XstyledProps\n>`\n height: 42px;\n max-width: 100%;\n align-items: center;\n justify-content: center;\n box-shadow: 0 -1px 3px 0 rgba(0, 0, 0, 0.5);\n position: relative;\n ${xStyledCommonProps}\n`;\n\nconst StyledPaginationWrapper = styled('div', { name: DSPaginationName, slot: PAGINATION_CONTAINER_SLOTS.WRAPPER })`\n display: grid;\n grid-auto-flow: column;\n justify-content: center;\n align-items: center;\n`;\n\nconst DSPaginationContainer: React.ComponentType<DSPaginationContainerT.Props> = (props) => {\n const { xstyledProps, globalAttributes, ownerPropsConfig } = usePaginationContainer(props);\n\n return (\n <StyledPaginationContainer\n data-testid={PAGINATION_CONTAINER_DATA_TESTID.ROOT}\n {...globalAttributes}\n {...xstyledProps}\n {...ownerPropsConfig}\n cols={['minmax(auto, 80%)']}\n >\n <StyledPaginationWrapper {...ownerPropsConfig}>{props.children}</StyledPaginationWrapper>\n </StyledPaginationContainer>\n );\n};\n\nDSPaginationContainer.displayName = DSPaginationContainerName;\nconst DSPaginationContainerWithSchema = describe(DSPaginationContainer);\nDSPaginationContainerWithSchema.propTypes = DSPaginationContainerPropTypesSchema;\n\nexport { DSPaginationContainer, DSPaginationContainerWithSchema };\n", "import * as React from 'react';\nexport { React };\n"],
|
|
4
|
+
"sourcesContent": ["import React from 'react';\nimport { describe, type XstyledProps } from '@elliemae/ds-props-helpers';\nimport { styled, xStyledCommonProps } from '@elliemae/ds-system';\nimport { Grid } from '@elliemae/ds-grid';\nimport { type DSPaginationContainerT, DSPaginationContainerPropTypesSchema } from './react-desc-prop-types.js';\nimport { usePaginationContainer } from './config/usePaginationContainer.js';\nimport {\n DSPaginationContainerName,\n DSPaginationName,\n PAGINATION_CONTAINER_DATA_TESTID,\n PAGINATION_CONTAINER_SLOTS,\n} from './constants/index.js';\n\nconst StyledPaginationContainer = styled(Grid, { name: DSPaginationName, slot: PAGINATION_CONTAINER_SLOTS.ROOT })<\n React.ComponentProps<typeof Grid> & XstyledProps\n>`\n min-height: 42px;\n max-width: 100%;\n align-items: center;\n justify-content: center;\n box-shadow: 0 -1px 3px 0 rgba(0, 0, 0, 0.5);\n position: relative;\n ${xStyledCommonProps}\n`;\n\nconst StyledPaginationWrapper = styled('div', { name: DSPaginationName, slot: PAGINATION_CONTAINER_SLOTS.WRAPPER })`\n display: grid;\n grid-auto-flow: column;\n justify-content: center;\n align-items: center;\n`;\n\nconst DSPaginationContainer: React.ComponentType<DSPaginationContainerT.Props> = (props) => {\n const { xstyledProps, globalAttributes, ownerPropsConfig } = usePaginationContainer(props);\n\n return (\n <StyledPaginationContainer\n data-testid={PAGINATION_CONTAINER_DATA_TESTID.ROOT}\n {...globalAttributes}\n {...xstyledProps}\n {...ownerPropsConfig}\n cols={['minmax(auto, 80%)']}\n >\n <StyledPaginationWrapper {...ownerPropsConfig}>{props.children}</StyledPaginationWrapper>\n </StyledPaginationContainer>\n );\n};\n\nDSPaginationContainer.displayName = DSPaginationContainerName;\nconst DSPaginationContainerWithSchema = describe(DSPaginationContainer);\nDSPaginationContainerWithSchema.propTypes = DSPaginationContainerPropTypesSchema;\n\nexport { DSPaginationContainer, DSPaginationContainerWithSchema };\n", "import * as React from 'react';\nexport { React };\n"],
|
|
5
5
|
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;AD2CjB;AA1CN,8BAA4C;AAC5C,uBAA2C;AAC3C,qBAAqB;AACrB,mCAAkF;AAClF,oCAAuC;AACvC,uBAKO;AAEP,MAAM,gCAA4B,yBAAO,qBAAM,EAAE,MAAM,mCAAkB,MAAM,4CAA2B,KAAK,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAS5G,mCAAkB;AAAA;AAGtB,MAAM,8BAA0B,yBAAO,OAAO,EAAE,MAAM,mCAAkB,MAAM,4CAA2B,QAAQ,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAOlH,MAAM,wBAA2E,CAAC,UAAU;AAC1F,QAAM,EAAE,cAAc,kBAAkB,iBAAiB,QAAI,sDAAuB,KAAK;AAEzF,SACE;AAAA,IAAC;AAAA;AAAA,MACC,eAAa,kDAAiC;AAAA,MAC7C,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,MACJ,MAAM,CAAC,mBAAmB;AAAA,MAE1B,sDAAC,2BAAyB,GAAG,kBAAmB,gBAAM,UAAS;AAAA;AAAA,EACjE;AAEJ;AAEA,sBAAsB,cAAc;AACpC,MAAM,sCAAkC,kCAAS,qBAAqB;AACtE,gCAAgC,YAAY;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -34,9 +34,8 @@ __export(DSPaginator_exports, {
|
|
|
34
34
|
module.exports = __toCommonJS(DSPaginator_exports);
|
|
35
35
|
var React = __toESM(require("react"));
|
|
36
36
|
var import_jsx_runtime = require("react/jsx-runtime");
|
|
37
|
-
var import_react = require("react");
|
|
37
|
+
var import_react = __toESM(require("react"));
|
|
38
38
|
var import_ds_circular_progress_indicator = require("@elliemae/ds-circular-progress-indicator");
|
|
39
|
-
var import_ds_dropdownmenu_v2 = require("@elliemae/ds-dropdownmenu-v2");
|
|
40
39
|
var import_ds_grid = require("@elliemae/ds-grid");
|
|
41
40
|
var import_ds_icons = require("@elliemae/ds-icons");
|
|
42
41
|
var import_ds_props_helpers = require("@elliemae/ds-props-helpers");
|
|
@@ -58,21 +57,25 @@ const DSPaginator = (props) => {
|
|
|
58
57
|
pageInfoWidth,
|
|
59
58
|
options,
|
|
60
59
|
isOpened,
|
|
61
|
-
setIsOpened,
|
|
62
|
-
detailWidth,
|
|
63
60
|
actionRef,
|
|
64
|
-
|
|
61
|
+
widestChildRef,
|
|
62
|
+
pageInfoRef,
|
|
63
|
+
checkMarkRef,
|
|
64
|
+
checkMarkWidth,
|
|
65
|
+
onKeyDown,
|
|
66
|
+
setIsOpened
|
|
65
67
|
} = (0, import_usePaginator.usePaginator)(props);
|
|
68
|
+
const widestTypographyRef = import_react.default.useRef(null);
|
|
66
69
|
const Header = (0, import_react.useMemo)(
|
|
67
|
-
() => (0, import_createPaginatorHeader.createPaginatorHeader)({ pageDetailsTitle, pageInfoWidth, ownerPropsConfig }),
|
|
68
|
-
[pageDetailsTitle, pageInfoWidth, ownerPropsConfig]
|
|
70
|
+
() => (0, import_createPaginatorHeader.createPaginatorHeader)({ pageDetailsTitle, pageInfoWidth, ownerPropsConfig, checkMarkWidth }),
|
|
71
|
+
[pageDetailsTitle, pageInfoWidth, ownerPropsConfig, checkMarkWidth]
|
|
69
72
|
);
|
|
70
73
|
const buttonOnClick = (0, import_react.useMemo)(() => {
|
|
71
74
|
if (globalAttributes.onClick) return globalAttributes.onClick;
|
|
72
75
|
return () => setIsOpened((prev) => !prev);
|
|
73
76
|
}, [globalAttributes.onClick, setIsOpened]);
|
|
74
77
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
|
|
75
|
-
|
|
78
|
+
import_styled.StyledDropdown,
|
|
76
79
|
{
|
|
77
80
|
isOpened,
|
|
78
81
|
options,
|
|
@@ -86,11 +89,24 @@ const DSPaginator = (props) => {
|
|
|
86
89
|
setIsOpened(false);
|
|
87
90
|
btnRef.current?.focus();
|
|
88
91
|
},
|
|
89
|
-
customOffset: [-
|
|
92
|
+
customOffset: [-(checkMarkWidth + 7), 2],
|
|
90
93
|
startPlacementPreference: "top-start",
|
|
91
94
|
actionRef,
|
|
92
95
|
onKeyDown,
|
|
93
|
-
minWidth: pageDetails.length !== 0 ? btnWidth +
|
|
96
|
+
minWidth: pageDetails.length !== 0 ? btnWidth + checkMarkWidth + 7 : (
|
|
97
|
+
/**
|
|
98
|
+
* Structure of the width:
|
|
99
|
+
* 16px (left padding)
|
|
100
|
+
* + chevronWidth (size of the chevron icon)
|
|
101
|
+
* + 8px (spacing between chevron and text)
|
|
102
|
+
* + pageCount length in ch
|
|
103
|
+
* + 16px (right padding)
|
|
104
|
+
* + a small scrollbar placeholder (to avoid text wrapping when scrollbars appear)
|
|
105
|
+
* By using `calc()` + `ch` units, the component stays responsive to font-size changes
|
|
106
|
+
* without requiring an extra ref to measure the page count text width.
|
|
107
|
+
*/
|
|
108
|
+
`calc(${checkMarkWidth + 60}px + ${pageCount.toString().length}ch)`
|
|
109
|
+
),
|
|
94
110
|
maxHeight: 300,
|
|
95
111
|
HeaderComp: Header,
|
|
96
112
|
children: [
|
|
@@ -108,17 +124,39 @@ const DSPaginator = (props) => {
|
|
|
108
124
|
...ownerPropsConfig,
|
|
109
125
|
onClick: buttonOnClick,
|
|
110
126
|
children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_ds_grid.Grid, { gutter: "xxxs", alignItems: "center", style: { gridAutoFlow: "column" }, children: [
|
|
111
|
-
/* @__PURE__ */ (0, import_jsx_runtime.
|
|
112
|
-
|
|
113
|
-
|
|
127
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { ref: pageInfoRef, children: [
|
|
128
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
129
|
+
import_ds_typography.DSTypography,
|
|
130
|
+
{
|
|
131
|
+
id: "typography-page-index",
|
|
132
|
+
variant: "b1",
|
|
133
|
+
as: "span",
|
|
134
|
+
fontWeight: "semibold",
|
|
135
|
+
textAlign: "start",
|
|
136
|
+
children: pageIndex
|
|
137
|
+
}
|
|
138
|
+
),
|
|
139
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
|
|
140
|
+
import_ds_typography.DSTypography,
|
|
141
|
+
{
|
|
142
|
+
variant: "b1",
|
|
143
|
+
as: "span",
|
|
144
|
+
className: "typography-page-info-and-detail",
|
|
145
|
+
children: [
|
|
146
|
+
"/ ",
|
|
147
|
+
pageCount
|
|
148
|
+
]
|
|
149
|
+
}
|
|
150
|
+
)
|
|
151
|
+
] }),
|
|
114
152
|
isLoadingPageCount && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_ds_circular_progress_indicator.DSCircularIndeterminateIndicator, { ml: "xxxs", mr: "xxxs", size: "xs" }),
|
|
115
153
|
pageDetails.length !== 0 && /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [
|
|
116
154
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_DSPaginationSeparator.DSPaginationSeparator, { height: "12px", ml: "12px", mr: "xxxs", ...ownerPropsConfig }),
|
|
117
155
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
118
156
|
import_ds_typography.DSTypography,
|
|
119
157
|
{
|
|
120
|
-
|
|
121
|
-
|
|
158
|
+
className: "typography-page-info-and-detail",
|
|
159
|
+
innerRef: widestTypographyRef,
|
|
122
160
|
mr: "xxs",
|
|
123
161
|
variant: "b1",
|
|
124
162
|
as: "span",
|
|
@@ -128,11 +166,42 @@ const DSPaginator = (props) => {
|
|
|
128
166
|
}
|
|
129
167
|
)
|
|
130
168
|
] }),
|
|
131
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_ds_icons.ChevronDown, { ml: "xxxs", color: ["brand-primary", "700"] })
|
|
169
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_ds_icons.ChevronDown, { ml: "xxxs", color: ["brand-primary", "700"], innerRef: checkMarkRef })
|
|
132
170
|
] })
|
|
133
171
|
}
|
|
134
172
|
),
|
|
135
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_ds_grid.Grid, { style: { position: "relative" }, children: pageDetails.map((pageDetail
|
|
173
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_ds_grid.Grid, { style: { position: "relative" }, children: pageDetails.map((pageDetail, index) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
174
|
+
import_styled.InvisibleDiv,
|
|
175
|
+
{
|
|
176
|
+
innerRef: (el) => {
|
|
177
|
+
if (!el) return;
|
|
178
|
+
if (!widestChildRef.current) {
|
|
179
|
+
widestChildRef.current = el;
|
|
180
|
+
return;
|
|
181
|
+
}
|
|
182
|
+
if (el.offsetWidth > widestChildRef.current.offsetWidth) {
|
|
183
|
+
widestChildRef.current = el;
|
|
184
|
+
}
|
|
185
|
+
if (index === pageDetails.length - 1) {
|
|
186
|
+
widestTypographyRef.current?.style.setProperty("min-width", `${widestChildRef.current?.offsetWidth}px`);
|
|
187
|
+
}
|
|
188
|
+
},
|
|
189
|
+
"data-testid": "ds-pagination-invisible-detail-for-width-calc",
|
|
190
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
191
|
+
import_ds_typography.DSTypography,
|
|
192
|
+
{
|
|
193
|
+
className: "typography-page-info-and-detail",
|
|
194
|
+
mr: "xxs",
|
|
195
|
+
variant: "b1",
|
|
196
|
+
as: "span",
|
|
197
|
+
fontWeight: "semibold",
|
|
198
|
+
textAlign: "start",
|
|
199
|
+
children: pageDetail
|
|
200
|
+
}
|
|
201
|
+
)
|
|
202
|
+
},
|
|
203
|
+
pageDetail
|
|
204
|
+
)) })
|
|
136
205
|
]
|
|
137
206
|
}
|
|
138
207
|
);
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/parts/DSPaginator/DSPaginator.tsx", "../../../../../../../scripts/build/transpile/react-shim.js"],
|
|
4
|
-
"sourcesContent": ["import React, { useMemo } from 'react';\nimport type { DSButtonT } from '@elliemae/ds-button-v2';\nimport { DSCircularIndeterminateIndicator } from '@elliemae/ds-circular-progress-indicator';\nimport {
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;
|
|
6
|
-
"names": []
|
|
4
|
+
"sourcesContent": ["import React, { useMemo } from 'react';\nimport type { DSButtonT } from '@elliemae/ds-button-v2';\nimport { DSCircularIndeterminateIndicator } from '@elliemae/ds-circular-progress-indicator';\nimport { type DSDropdownMenuT } from '@elliemae/ds-dropdownmenu-v2';\nimport { Grid } from '@elliemae/ds-grid';\nimport { ChevronDown } from '@elliemae/ds-icons';\nimport { describe } from '@elliemae/ds-props-helpers';\nimport { DSTypography } from '@elliemae/ds-typography';\nimport { DSPaginationSeparator } from '../DSPaginationSeparator/index.js';\nimport { createPaginatorHeader } from './config/createPaginatorHeader.js';\nimport { usePaginator } from './config/usePaginator.js';\nimport { DSPaginatorName, PAGINATOR_DATA_TESTID } from './constants/index.js';\nimport { DSPaginatorPropTypesSchema, type DSPaginatorT } from './react-desc-prop-types.js';\nimport { InvisibleDiv, PaginationDropdownButtonPaginator, StyledDropdown } from './styled.js';\n\nconst DSPaginator: React.ComponentType<DSPaginatorT.Props> = (props) => {\n const {\n propsWithDefault: { pageIndex, pageCount, isLoadingPageCount, onPageChange, pageDetails, pageDetailsTitle },\n xstyledProps,\n globalAttributes,\n ownerPropsConfig,\n btnRef,\n btnWidth,\n pageInfoWidth,\n options,\n isOpened,\n actionRef,\n widestChildRef,\n pageInfoRef,\n checkMarkRef,\n checkMarkWidth,\n onKeyDown,\n setIsOpened,\n } = usePaginator(props);\n\n const widestTypographyRef = React.useRef<HTMLDivElement>(null);\n\n const Header = useMemo(\n () => createPaginatorHeader({ pageDetailsTitle, pageInfoWidth, ownerPropsConfig, checkMarkWidth }),\n [pageDetailsTitle, pageInfoWidth, ownerPropsConfig, checkMarkWidth],\n );\n\n const buttonOnClick: DSButtonT.Props['onClick'] = useMemo(() => {\n if (globalAttributes.onClick) return globalAttributes.onClick as DSButtonT.Props['onClick'];\n return () => setIsOpened((prev) => !prev);\n }, [globalAttributes.onClick, setIsOpened]);\n\n return (\n <StyledDropdown\n isOpened={isOpened}\n options={options}\n selectedOptions={{ [pageIndex.toString()]: true }}\n onOptionClick={(_, clickedOption) => {\n onPageChange((clickedOption as DSDropdownMenuT.ItemSingleOptions).value as number);\n setIsOpened(false);\n btnRef.current?.focus();\n }}\n onClickOutside={() => {\n setIsOpened(false);\n btnRef.current?.focus();\n }}\n customOffset={[-(checkMarkWidth + 7), 2]}\n startPlacementPreference=\"top-start\"\n actionRef={actionRef}\n onKeyDown={onKeyDown}\n minWidth={\n pageDetails.length !== 0\n ? btnWidth + checkMarkWidth + 7\n : /**\n * Structure of the width:\n * 16px (left padding)\n * + chevronWidth (size of the chevron icon)\n * + 8px (spacing between chevron and text)\n * + pageCount length in ch\n * + 16px (right padding)\n * + a small scrollbar placeholder (to avoid text wrapping when scrollbars appear)\n * By using `calc()` + `ch` units, the component stays responsive to font-size changes\n * without requiring an extra ref to measure the page count text width.\n */\n\n `calc(${checkMarkWidth + 60}px + ${pageCount.toString().length}ch)`\n }\n maxHeight={300}\n HeaderComp={Header}\n >\n <PaginationDropdownButtonPaginator\n buttonType=\"raw\"\n disabled={isLoadingPageCount}\n innerRef={btnRef}\n aria-pressed={isOpened}\n aria-label={`Page ${pageIndex} out of ${pageCount}, ${\n pageDetails.length !== 0 ? pageDetails[pageIndex - 1] : '\\b\\b'\n }. Press to change the current page`}\n data-testid={PAGINATOR_DATA_TESTID.PAGINATOR}\n {...globalAttributes}\n {...xstyledProps}\n {...ownerPropsConfig}\n onClick={buttonOnClick}\n >\n <Grid gutter=\"xxxs\" alignItems=\"center\" style={{ gridAutoFlow: 'column' }}>\n <div ref={pageInfoRef}>\n <DSTypography\n /**\n * Pagination uses DSTypography internally, but each typography variant defines\n * its own font-size. When these components are placed inside a styled() wrapper,\n * trying to style them via styled(DSTypography) triggers TypeScript errors\n * because DSTypography exposes \"as\" props and variant-specific overrides.\n *\n * Instead of wrapping DSTypography directly in styled(), we target the\n * underlying rendered elements via className/id. This avoids the TS conflicts\n * while still allowing us to override their font-size reliably.\n */\n id=\"typography-page-index\"\n variant=\"b1\"\n as=\"span\"\n fontWeight=\"semibold\"\n textAlign=\"start\"\n >\n {pageIndex}\n </DSTypography>\n <DSTypography\n variant=\"b1\"\n as=\"span\"\n /**\n * Pagination uses DSTypography internally, but each typography variant defines\n * its own font-size. When these components are placed inside a styled() wrapper,\n * trying to style them via styled(DSTypography) triggers TypeScript errors\n * because DSTypography exposes \"as\" props and variant-specific overrides.\n *\n * Instead of wrapping DSTypography directly in styled(), we target the\n * underlying rendered elements via className/id. This avoids the TS conflicts\n * while still allowing us to override their font-size reliably.\n */ className=\"typography-page-info-and-detail\"\n >\n / {pageCount}\n </DSTypography>\n </div>\n {isLoadingPageCount && <DSCircularIndeterminateIndicator ml=\"xxxs\" mr=\"xxxs\" size=\"xs\" />}\n {pageDetails.length !== 0 && (\n <>\n <DSPaginationSeparator height=\"12px\" ml=\"12px\" mr=\"xxxs\" {...ownerPropsConfig} />\n <DSTypography\n className=\"typography-page-info-and-detail\"\n innerRef={widestTypographyRef}\n mr=\"xxs\"\n variant=\"b1\"\n as=\"span\"\n fontWeight=\"semibold\"\n textAlign=\"start\"\n >\n {pageDetails[pageIndex - 1]}\n </DSTypography>\n </>\n )}\n <ChevronDown ml=\"xxxs\" color={['brand-primary', '700']} innerRef={checkMarkRef} />\n </Grid>\n </PaginationDropdownButtonPaginator>\n {/* We calculate the length of the longest detail here (this is as per specs) */}\n <Grid style={{ position: 'relative' }}>\n {pageDetails.map((pageDetail, index) => (\n <InvisibleDiv\n innerRef={(el) => {\n if (!el) return;\n if (!widestChildRef.current) {\n widestChildRef.current = el;\n return;\n }\n if (el.offsetWidth > widestChildRef.current.offsetWidth) {\n widestChildRef.current = el;\n }\n if (index === pageDetails.length - 1) {\n widestTypographyRef.current?.style.setProperty('min-width', `${widestChildRef.current?.offsetWidth}px`);\n }\n }}\n data-testid=\"ds-pagination-invisible-detail-for-width-calc\"\n key={pageDetail}\n >\n <DSTypography\n className=\"typography-page-info-and-detail\"\n mr=\"xxs\"\n variant=\"b1\"\n as=\"span\"\n fontWeight=\"semibold\"\n textAlign=\"start\"\n >\n {pageDetail}\n </DSTypography>\n </InvisibleDiv>\n ))}\n </Grid>\n </StyledDropdown>\n );\n};\n\nDSPaginator.displayName = DSPaginatorName;\nconst DSPaginatorWithSchema = describe(DSPaginator);\nDSPaginatorWithSchema.propTypes = DSPaginatorPropTypesSchema;\n\nexport { DSPaginator, DSPaginatorWithSchema };\n", "import * as React from 'react';\nexport { React };\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["React"]
|
|
7
7
|
}
|
|
@@ -33,16 +33,17 @@ __export(createPaginatorHeader_exports, {
|
|
|
33
33
|
module.exports = __toCommonJS(createPaginatorHeader_exports);
|
|
34
34
|
var React = __toESM(require("react"));
|
|
35
35
|
var import_jsx_runtime = require("react/jsx-runtime");
|
|
36
|
-
var import_ds_grid = require("@elliemae/ds-grid");
|
|
37
36
|
var import_DSPaginationSeparator = require("../../DSPaginationSeparator/index.js");
|
|
37
|
+
var import_styled = require("../styled.js");
|
|
38
38
|
const createPaginatorHeader = ({
|
|
39
39
|
pageDetailsTitle,
|
|
40
40
|
pageInfoWidth,
|
|
41
|
-
ownerPropsConfig
|
|
41
|
+
ownerPropsConfig,
|
|
42
|
+
checkMarkWidth
|
|
42
43
|
}) => {
|
|
43
44
|
const Comp = () => {
|
|
44
|
-
if (pageDetailsTitle === "") return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
45
|
-
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
|
|
45
|
+
if (pageDetailsTitle === "") return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_styled.StyledHeader, { children: "Page" });
|
|
46
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_styled.StyledHeader, { cols: [`${pageInfoWidth + checkMarkWidth + 34}px`, "8px", "auto"], children: [
|
|
46
47
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { style: { marginLeft: "8px" }, children: "Page" }),
|
|
47
48
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_DSPaginationSeparator.DSPaginationSeparator, { height: "100%", ...ownerPropsConfig }),
|
|
48
49
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { children: pageDetailsTitle })
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../src/parts/DSPaginator/config/createPaginatorHeader.tsx", "../../../../../../../../scripts/build/transpile/react-shim.js"],
|
|
4
|
-
"sourcesContent": ["import React from 'react';\nimport {
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;
|
|
4
|
+
"sourcesContent": ["import React from 'react';\nimport { DSPaginationSeparator } from '../../DSPaginationSeparator/index.js';\nimport { StyledHeader } from '../styled.js';\n\ninterface PaginatorHeaderOptions {\n pageDetailsTitle: string;\n pageInfoWidth: number;\n ownerPropsConfig: Record<string, unknown>;\n checkMarkWidth: number;\n}\n\nexport const createPaginatorHeader = ({\n pageDetailsTitle,\n pageInfoWidth,\n ownerPropsConfig,\n checkMarkWidth,\n}: PaginatorHeaderOptions) => {\n const Comp = () => {\n if (pageDetailsTitle === '') return <StyledHeader>Page</StyledHeader>;\n\n return (\n <StyledHeader cols={[`${pageInfoWidth + checkMarkWidth + 34}px`, '8px', 'auto']}>\n <span style={{ marginLeft: '8px' }}>Page</span>\n <DSPaginationSeparator height=\"100%\" {...ownerPropsConfig} />\n <span>{pageDetailsTitle}</span>\n </StyledHeader>\n );\n };\n return Comp;\n};\n", "import * as React from 'react';\nexport { React };\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADkBiB;AAjBxC,mCAAsC;AACtC,oBAA6B;AAStB,MAAM,wBAAwB,CAAC;AAAA,EACpC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAA8B;AAC5B,QAAM,OAAO,MAAM;AACjB,QAAI,qBAAqB,GAAI,QAAO,4CAAC,8BAAa,kBAAI;AAEtD,WACE,6CAAC,8BAAa,MAAM,CAAC,GAAG,gBAAgB,iBAAiB,EAAE,MAAM,OAAO,MAAM,GAC5E;AAAA,kDAAC,UAAK,OAAO,EAAE,YAAY,MAAM,GAAG,kBAAI;AAAA,MACxC,4CAAC,sDAAsB,QAAO,QAAQ,GAAG,kBAAkB;AAAA,MAC3D,4CAAC,UAAM,4BAAiB;AAAA,OAC1B;AAAA,EAEJ;AACA,SAAO;AACT;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -37,8 +37,8 @@ var import_ds_grid = require("@elliemae/ds-grid");
|
|
|
37
37
|
var import_ds_icons = require("@elliemae/ds-icons");
|
|
38
38
|
const OptionWithDetails = (props) => {
|
|
39
39
|
const Comp = () => {
|
|
40
|
-
const { pageInfoWidth, pageIndex, index, pageDetails } = props;
|
|
41
|
-
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_ds_grid.Grid, { cols: [
|
|
40
|
+
const { pageInfoWidth, pageIndex, index, pageDetails, checkMarkWidth } = props;
|
|
41
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_ds_grid.Grid, { cols: [`${checkMarkWidth}px`, `${pageInfoWidth + 16}px`, "auto"], gutter: "xxs", alignItems: "center", children: [
|
|
42
42
|
pageIndex - 1 === index ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_ds_icons.Checkmark, { size: "s", color: ["brand-primary", "600"] }) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {}),
|
|
43
43
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { children: index + 1 }),
|
|
44
44
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
@@ -57,7 +57,7 @@ const OptionWithDetails = (props) => {
|
|
|
57
57
|
return Comp;
|
|
58
58
|
};
|
|
59
59
|
const getOptions = (args) => {
|
|
60
|
-
const { pageCount, pageIndex, pageDetails, pageInfoWidth } = args;
|
|
60
|
+
const { pageCount, pageIndex, pageDetails, pageInfoWidth, checkMarkWidth } = args;
|
|
61
61
|
const amountOfPages = typeof pageCount === "string" ? pageIndex + 1 : pageCount;
|
|
62
62
|
const options = new Array(amountOfPages).fill(0).map((_, index) => {
|
|
63
63
|
const option = {
|
|
@@ -67,7 +67,7 @@ const getOptions = (args) => {
|
|
|
67
67
|
type: "single"
|
|
68
68
|
};
|
|
69
69
|
if (pageDetails?.length) {
|
|
70
|
-
option.render = OptionWithDetails({ pageInfoWidth, pageIndex, index, pageDetails });
|
|
70
|
+
option.render = OptionWithDetails({ pageInfoWidth, pageIndex, index, pageDetails, checkMarkWidth });
|
|
71
71
|
}
|
|
72
72
|
return option;
|
|
73
73
|
});
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../src/parts/DSPaginator/config/getOptions.tsx", "../../../../../../../../scripts/build/transpile/react-shim.js"],
|
|
4
|
-
"sourcesContent": ["import
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;
|
|
4
|
+
"sourcesContent": ["import type { DSDropdownMenuT } from '@elliemae/ds-dropdownmenu-v2';\nimport { Grid } from '@elliemae/ds-grid';\nimport { Checkmark } from '@elliemae/ds-icons';\n\ninterface OptionWithDetailsT {\n pageInfoWidth: number;\n pageIndex: number;\n index: number;\n pageDetails: string[] | readonly string[];\n checkMarkWidth: number;\n}\n\nconst OptionWithDetails = (props: OptionWithDetailsT) => {\n const Comp = () => {\n const { pageInfoWidth, pageIndex, index, pageDetails, checkMarkWidth } = props;\n\n return (\n <Grid cols={[`${checkMarkWidth}px`, `${pageInfoWidth + 16}px`, 'auto']} gutter=\"xxs\" alignItems=\"center\">\n {pageIndex - 1 === index ? <Checkmark size=\"s\" color={['brand-primary', '600']} /> : <div />}\n <span>{index + 1}</span>\n <span\n style={{\n whiteSpace: 'nowrap',\n textOverflow: 'ellipsis',\n overflow: 'hidden',\n }}\n >\n {pageDetails[index]}\n </span>\n </Grid>\n );\n };\n return Comp;\n};\n\nexport const getOptions = (args: {\n pageCount: number | string;\n pageIndex: number;\n pageDetails: string[] | readonly string[];\n pageInfoWidth: number;\n checkMarkWidth: number;\n}): DSDropdownMenuT.ItemSingleOptions[] => {\n const { pageCount, pageIndex, pageDetails, pageInfoWidth, checkMarkWidth } = args;\n\n const amountOfPages = typeof pageCount === 'string' ? pageIndex + 1 : pageCount;\n\n const options = new Array(amountOfPages).fill(0).map((_, index) => {\n const option: DSDropdownMenuT.ItemSingleOptions = {\n dsId: (index + 1).toString(),\n label: (index + 1).toString(),\n value: index + 1,\n type: 'single',\n };\n if (pageDetails?.length) {\n option.render = OptionWithDetails({ pageInfoWidth, pageIndex, index, pageDetails, checkMarkWidth });\n }\n return option;\n });\n return options;\n};\n", "import * as React from 'react';\nexport { React };\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADiBjB;AAhBN,qBAAqB;AACrB,sBAA0B;AAU1B,MAAM,oBAAoB,CAAC,UAA8B;AACvD,QAAM,OAAO,MAAM;AACjB,UAAM,EAAE,eAAe,WAAW,OAAO,aAAa,eAAe,IAAI;AAEzE,WACE,6CAAC,uBAAK,MAAM,CAAC,GAAG,cAAc,MAAM,GAAG,gBAAgB,EAAE,MAAM,MAAM,GAAG,QAAO,OAAM,YAAW,UAC7F;AAAA,kBAAY,MAAM,QAAQ,4CAAC,6BAAU,MAAK,KAAI,OAAO,CAAC,iBAAiB,KAAK,GAAG,IAAK,4CAAC,SAAI;AAAA,MAC1F,4CAAC,UAAM,kBAAQ,GAAE;AAAA,MACjB;AAAA,QAAC;AAAA;AAAA,UACC,OAAO;AAAA,YACL,YAAY;AAAA,YACZ,cAAc;AAAA,YACd,UAAU;AAAA,UACZ;AAAA,UAEC,sBAAY,KAAK;AAAA;AAAA,MACpB;AAAA,OACF;AAAA,EAEJ;AACA,SAAO;AACT;AAEO,MAAM,aAAa,CAAC,SAMgB;AACzC,QAAM,EAAE,WAAW,WAAW,aAAa,eAAe,eAAe,IAAI;AAE7E,QAAM,gBAAgB,OAAO,cAAc,WAAW,YAAY,IAAI;AAEtE,QAAM,UAAU,IAAI,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,IAAI,CAAC,GAAG,UAAU;AACjE,UAAM,SAA4C;AAAA,MAChD,OAAO,QAAQ,GAAG,SAAS;AAAA,MAC3B,QAAQ,QAAQ,GAAG,SAAS;AAAA,MAC5B,OAAO,QAAQ;AAAA,MACf,MAAM;AAAA,IACR;AACA,QAAI,aAAa,QAAQ;AACvB,aAAO,SAAS,kBAAkB,EAAE,eAAe,WAAW,OAAO,aAAa,eAAe,CAAC;AAAA,IACpG;AACA,WAAO;AAAA,EACT,CAAC;AACD,SAAO;AACT;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -36,7 +36,7 @@ var import_ds_props_helpers = require("@elliemae/ds-props-helpers");
|
|
|
36
36
|
var import_react = __toESM(require("react"));
|
|
37
37
|
var import_react_desc_prop_types = require("../react-desc-prop-types.js");
|
|
38
38
|
var import_useValidateProps = require("./useValidateProps.js");
|
|
39
|
-
var import_useOnElementOnResize = require("
|
|
39
|
+
var import_useOnElementOnResize = require("../../shared/useOnElementOnResize.js");
|
|
40
40
|
var import_getOptions = require("./getOptions.js");
|
|
41
41
|
var import_usePaginationSearch = require("./usePaginationSearch.js");
|
|
42
42
|
const usePaginator = (propsFromUser) => {
|
|
@@ -49,14 +49,18 @@ const usePaginator = (propsFromUser) => {
|
|
|
49
49
|
const ownerPropsConfig = (0, import_ds_props_helpers.useOwnerProps)(propsWithDefault);
|
|
50
50
|
const { pageIndex, pageCount, pageDetails } = propsWithDefault;
|
|
51
51
|
const [isOpened, setIsOpened] = (0, import_react.useState)(false);
|
|
52
|
-
const [detailWidth, setDetailWidth] = (0, import_react.useState)(0);
|
|
53
|
-
const [pageInfoWidth, setPageInfoWidth] = (0, import_react.useState)(0);
|
|
54
52
|
const btnRef = (0, import_react.useRef)(null);
|
|
55
53
|
const actionRef = (0, import_react.useRef)({});
|
|
54
|
+
const widestChildRef = import_react.default.useRef(null);
|
|
55
|
+
const pageInfoRef = import_react.default.useRef(null);
|
|
56
|
+
const checkMarkRef = (0, import_react.useRef)(null);
|
|
56
57
|
const { width: btnWidth } = (0, import_useOnElementOnResize.useOnElementResize)(btnRef);
|
|
58
|
+
const { width: checkMarkWidth } = (0, import_useOnElementOnResize.useOnElementResize)(checkMarkRef);
|
|
59
|
+
const { width: pageInfoWidth } = (0, import_useOnElementOnResize.useOnElementResize)(pageInfoRef);
|
|
60
|
+
const { width: detailWidth } = (0, import_useOnElementOnResize.useOnElementResize)(widestChildRef);
|
|
57
61
|
const options = (0, import_react.useMemo)(
|
|
58
|
-
() => (0, import_getOptions.getOptions)({ pageCount, pageIndex, pageDetails, pageInfoWidth }),
|
|
59
|
-
[pageCount, pageIndex, pageDetails, pageInfoWidth]
|
|
62
|
+
() => (0, import_getOptions.getOptions)({ pageCount, pageIndex, pageDetails, pageInfoWidth, checkMarkWidth }),
|
|
63
|
+
[pageCount, pageIndex, pageDetails, pageInfoWidth, checkMarkWidth]
|
|
60
64
|
);
|
|
61
65
|
const onKeyDown = (0, import_usePaginationSearch.usePaginationSearch)(pageCount, actionRef);
|
|
62
66
|
(0, import_react.useEffect)(() => {
|
|
@@ -65,19 +69,6 @@ const usePaginator = (propsFromUser) => {
|
|
|
65
69
|
actionRef.current.scrollOptionIntoView(pageIndex.toString());
|
|
66
70
|
}
|
|
67
71
|
}, [isOpened]);
|
|
68
|
-
(0, import_react.useLayoutEffect)(() => {
|
|
69
|
-
const invisibleDetails = [
|
|
70
|
-
...document.body.querySelectorAll('[data-testid="ds-pagination-invisible-detail-for-width-calc"]')
|
|
71
|
-
];
|
|
72
|
-
const maxWidth = invisibleDetails.reduce((acc, cur) => Math.max(acc, cur.getBoundingClientRect().width), 0);
|
|
73
|
-
setDetailWidth(maxWidth);
|
|
74
|
-
}, [pageDetails]);
|
|
75
|
-
(0, import_react.useEffect)(() => {
|
|
76
|
-
setPageInfoWidth(() => {
|
|
77
|
-
if (detailWidth) return btnWidth - detailWidth - 89;
|
|
78
|
-
return btnWidth - 56;
|
|
79
|
-
});
|
|
80
|
-
}, [btnWidth, detailWidth]);
|
|
81
72
|
return import_react.default.useMemo(
|
|
82
73
|
() => ({
|
|
83
74
|
propsWithDefault,
|
|
@@ -87,10 +78,14 @@ const usePaginator = (propsFromUser) => {
|
|
|
87
78
|
btnRef,
|
|
88
79
|
btnWidth,
|
|
89
80
|
pageInfoWidth,
|
|
81
|
+
pageInfoRef,
|
|
90
82
|
options,
|
|
91
83
|
isOpened,
|
|
92
84
|
detailWidth,
|
|
93
85
|
actionRef,
|
|
86
|
+
widestChildRef,
|
|
87
|
+
checkMarkRef,
|
|
88
|
+
checkMarkWidth,
|
|
94
89
|
setIsOpened,
|
|
95
90
|
onKeyDown
|
|
96
91
|
}),
|
|
@@ -106,6 +101,10 @@ const usePaginator = (propsFromUser) => {
|
|
|
106
101
|
isOpened,
|
|
107
102
|
detailWidth,
|
|
108
103
|
actionRef,
|
|
104
|
+
widestChildRef,
|
|
105
|
+
checkMarkRef,
|
|
106
|
+
checkMarkWidth,
|
|
107
|
+
pageInfoRef,
|
|
109
108
|
setIsOpened,
|
|
110
109
|
onKeyDown
|
|
111
110
|
]
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../src/parts/DSPaginator/config/usePaginator.ts", "../../../../../../../../scripts/build/transpile/react-shim.js"],
|
|
4
|
-
"sourcesContent": ["
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;
|
|
4
|
+
"sourcesContent": ["/* eslint-disable max-statements */\nimport {\n useGetGlobalAttributes,\n useGetXstyledProps,\n useMemoMergePropsWithDefault,\n useOwnerProps,\n} from '@elliemae/ds-props-helpers';\nimport React, { useEffect, useMemo, useRef, useState } from 'react';\n\nimport type { DSButtonV3T } from '@elliemae/ds-button-v2';\nimport { type DSPaginatorT, DSPaginatorPropTypesSchema, defaultProps } from '../react-desc-prop-types.js';\nimport { useValidateProps } from './useValidateProps.js';\nimport { useOnElementResize } from '../../shared/useOnElementOnResize.js';\nimport { getOptions } from './getOptions.js';\nimport { usePaginationSearch } from './usePaginationSearch.js';\n\nexport const usePaginator = (propsFromUser: DSPaginatorT.Props) => {\n // =============================================================================\n // MERGE WITH DEFAULT AND VALIDATE PROPS\n // =============================================================================\n const propsWithDefault = useMemoMergePropsWithDefault<DSPaginatorT.InternalProps>(propsFromUser, defaultProps);\n useValidateProps(propsWithDefault, DSPaginatorPropTypesSchema);\n // =============================================================================\n // XSTYLED PROPS\n // =============================================================================\n const xstyledProps = useGetXstyledProps(propsWithDefault);\n // =============================================================================\n // GLOBAL ATTRIBUTES\n // =============================================================================\n const globalAttributes = useGetGlobalAttributes<DSPaginatorT.InternalProps, HTMLButtonElement, DSButtonV3T.Props>(\n propsWithDefault,\n );\n // =============================================================================\n // OWNER PROPS\n // =============================================================================\n const ownerPropsConfig = useOwnerProps(propsWithDefault);\n // =============================================================================\n // AD HOC PER COMPONENT LOGIC\n // =============================================================================\n\n const { pageIndex, pageCount, pageDetails } = propsWithDefault;\n\n const [isOpened, setIsOpened] = useState(false);\n\n const btnRef = useRef<HTMLButtonElement>(null);\n const actionRef = useRef<Record<string, (dsId: string) => void>>({});\n const widestChildRef = React.useRef<HTMLDivElement | null>(null);\n const pageInfoRef = React.useRef<HTMLDivElement | null>(null);\n const checkMarkRef = useRef<HTMLDivElement>(null);\n\n // btnWidth is used to calculate dropdown min-width when pageDetails are provided\n const { width: btnWidth } = useOnElementResize(btnRef);\n\n // checkMarkWidth is used to calculate dropdown offset so, when opening the dropdown,\n // selected page is aligned properly with the available options.\n // It is also used to calculate paginatorHeader and options custom render.\n const { width: checkMarkWidth } = useOnElementResize(checkMarkRef);\n // pageInfoWidth is used to calculate dropdown min-width when pageDetails are provided on segmented pagination\n // pageInfoWidth || detailWidth\n const { width: pageInfoWidth } = useOnElementResize(pageInfoRef);\n // detailWidth is used to calculate dropdown min-width when pageDetails are provided on segmented pagination\n // pageInfoWidth || detailWidth\n const { width: detailWidth } = useOnElementResize(widestChildRef);\n const options = useMemo(\n () => getOptions({ pageCount, pageIndex, pageDetails, pageInfoWidth, checkMarkWidth }),\n [pageCount, pageIndex, pageDetails, pageInfoWidth, checkMarkWidth],\n );\n // =============================================================================\n // HELPERS HOOKS CONFIGS\n // =============================================================================\n // const eventHandlers = useEventHandlers({ propsWithDefault, instanceUid }); // <-- complex logic should be made atomics this way\n const onKeyDown = usePaginationSearch(pageCount, actionRef);\n\n useEffect(() => {\n if (isOpened) {\n actionRef.current.setActiveDescendant(pageIndex.toString());\n actionRef.current.scrollOptionIntoView(pageIndex.toString());\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [isOpened]);\n\n return React.useMemo(\n () => ({\n propsWithDefault,\n xstyledProps,\n globalAttributes,\n ownerPropsConfig,\n btnRef,\n btnWidth,\n pageInfoWidth,\n pageInfoRef,\n options,\n isOpened,\n detailWidth,\n actionRef,\n widestChildRef,\n checkMarkRef,\n checkMarkWidth,\n setIsOpened,\n onKeyDown,\n }),\n [\n propsWithDefault,\n xstyledProps,\n globalAttributes,\n ownerPropsConfig,\n btnRef,\n btnWidth,\n pageInfoWidth,\n options,\n isOpened,\n detailWidth,\n actionRef,\n widestChildRef,\n checkMarkRef,\n checkMarkWidth,\n pageInfoRef,\n setIsOpened,\n onKeyDown,\n ],\n );\n};\n", "import * as React from 'react';\nexport { React };\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADCvB,8BAKO;AACP,mBAA4D;AAG5D,mCAA4E;AAC5E,8BAAiC;AACjC,kCAAmC;AACnC,wBAA2B;AAC3B,iCAAoC;AAE7B,MAAM,eAAe,CAAC,kBAAsC;AAIjE,QAAM,uBAAmB,sDAAyD,eAAe,yCAAY;AAC7G,gDAAiB,kBAAkB,uDAA0B;AAI7D,QAAM,mBAAe,4CAAmB,gBAAgB;AAIxD,QAAM,uBAAmB;AAAA,IACvB;AAAA,EACF;AAIA,QAAM,uBAAmB,uCAAc,gBAAgB;AAKvD,QAAM,EAAE,WAAW,WAAW,YAAY,IAAI;AAE9C,QAAM,CAAC,UAAU,WAAW,QAAI,uBAAS,KAAK;AAE9C,QAAM,aAAS,qBAA0B,IAAI;AAC7C,QAAM,gBAAY,qBAA+C,CAAC,CAAC;AACnE,QAAM,iBAAiB,aAAAA,QAAM,OAA8B,IAAI;AAC/D,QAAM,cAAc,aAAAA,QAAM,OAA8B,IAAI;AAC5D,QAAM,mBAAe,qBAAuB,IAAI;AAGhD,QAAM,EAAE,OAAO,SAAS,QAAI,gDAAmB,MAAM;AAKrD,QAAM,EAAE,OAAO,eAAe,QAAI,gDAAmB,YAAY;AAGjE,QAAM,EAAE,OAAO,cAAc,QAAI,gDAAmB,WAAW;AAG/D,QAAM,EAAE,OAAO,YAAY,QAAI,gDAAmB,cAAc;AAChE,QAAM,cAAU;AAAA,IACd,UAAM,8BAAW,EAAE,WAAW,WAAW,aAAa,eAAe,eAAe,CAAC;AAAA,IACrF,CAAC,WAAW,WAAW,aAAa,eAAe,cAAc;AAAA,EACnE;AAKA,QAAM,gBAAY,gDAAoB,WAAW,SAAS;AAE1D,8BAAU,MAAM;AACd,QAAI,UAAU;AACZ,gBAAU,QAAQ,oBAAoB,UAAU,SAAS,CAAC;AAC1D,gBAAU,QAAQ,qBAAqB,UAAU,SAAS,CAAC;AAAA,IAC7D;AAAA,EAEF,GAAG,CAAC,QAAQ,CAAC;AAEb,SAAO,aAAAA,QAAM;AAAA,IACX,OAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA;AAAA,MACE;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AACF;",
|
|
6
6
|
"names": ["React"]
|
|
7
7
|
}
|
|
@@ -29,13 +29,23 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
29
29
|
var styled_exports = {};
|
|
30
30
|
__export(styled_exports, {
|
|
31
31
|
InvisibleDiv: () => InvisibleDiv,
|
|
32
|
-
PaginationDropdownButtonPaginator: () => PaginationDropdownButtonPaginator
|
|
32
|
+
PaginationDropdownButtonPaginator: () => PaginationDropdownButtonPaginator,
|
|
33
|
+
StyledDropdown: () => StyledDropdown,
|
|
34
|
+
StyledHeader: () => StyledHeader
|
|
33
35
|
});
|
|
34
36
|
module.exports = __toCommonJS(styled_exports);
|
|
35
37
|
var React = __toESM(require("react"));
|
|
36
38
|
var import_ds_button_v2 = require("@elliemae/ds-button-v2");
|
|
39
|
+
var import_ds_dropdownmenu_v2 = require("@elliemae/ds-dropdownmenu-v2");
|
|
40
|
+
var import_ds_grid = __toESM(require("@elliemae/ds-grid"));
|
|
37
41
|
var import_ds_system = require("@elliemae/ds-system");
|
|
38
42
|
var import_constants = require("./constants/index.js");
|
|
43
|
+
const fontSize13Base13 = 13 / 13;
|
|
44
|
+
const fontSize13Base16 = 13 / 16;
|
|
45
|
+
const fontSize18Base13 = 18 / 13;
|
|
46
|
+
const fontSize18Base16 = 18 / 16;
|
|
47
|
+
const fontSize12Base13 = 12 / 13;
|
|
48
|
+
const fontSize12Base16 = 12 / 16;
|
|
39
49
|
const styledFocusCss = import_ds_system.css`
|
|
40
50
|
&:after {
|
|
41
51
|
display: block;
|
|
@@ -58,7 +68,7 @@ const InvisibleDiv = import_ds_system.styled.div`
|
|
|
58
68
|
position: absolute;
|
|
59
69
|
`;
|
|
60
70
|
const paginationDropdownButtonCommonStyles = import_ds_system.css`
|
|
61
|
-
height: 42px;
|
|
71
|
+
min-height: 42px;
|
|
62
72
|
display: grid;
|
|
63
73
|
grid-auto-flow: column;
|
|
64
74
|
justify-content: center;
|
|
@@ -87,4 +97,34 @@ const PaginationDropdownButtonPaginator = (0, import_ds_system.styled)(import_ds
|
|
|
87
97
|
})`
|
|
88
98
|
${paginationDropdownButtonCommonStyles}
|
|
89
99
|
`;
|
|
100
|
+
const StyledDropdown = (0, import_ds_system.styled)(import_ds_dropdownmenu_v2.DSDropdownMenuV2)`
|
|
101
|
+
/**
|
|
102
|
+
* Pagination uses DSTypography internally, but each typography variant defines
|
|
103
|
+
* its own font-size. When these components are placed inside a styled() wrapper,
|
|
104
|
+
* trying to style them via styled(DSTypography) triggers TypeScript errors
|
|
105
|
+
* because DSTypography exposes "as" props and variant-specific overrides.
|
|
106
|
+
*
|
|
107
|
+
* Instead of wrapping DSTypography directly in styled(), we target the
|
|
108
|
+
* underlying rendered elements via className/id. This avoids the TS conflicts
|
|
109
|
+
* while still allowing us to override their font-size reliably.
|
|
110
|
+
*/
|
|
111
|
+
#typography-page-index {
|
|
112
|
+
font-size: ${fontSize18Base16}rem;
|
|
113
|
+
@media (min-width: ${({ theme }) => theme.breakpoints.small}) {
|
|
114
|
+
font-size: ${fontSize18Base13}rem;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
.typography-page-info-and-detail {
|
|
118
|
+
font-size: ${fontSize13Base16}rem;
|
|
119
|
+
@media (min-width: ${({ theme }) => theme.breakpoints.small}) {
|
|
120
|
+
font-size: ${fontSize13Base13}rem;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
`;
|
|
124
|
+
const StyledHeader = (0, import_ds_system.styled)(import_ds_grid.default)`
|
|
125
|
+
font-size: ${fontSize12Base16}rem;
|
|
126
|
+
@media (min-width: ${({ theme }) => theme.breakpoints.small}) {
|
|
127
|
+
font-size: ${fontSize12Base13}rem;
|
|
128
|
+
}
|
|
129
|
+
`;
|
|
90
130
|
//# sourceMappingURL=styled.js.map
|