@alfalab/core-components-pagination 3.0.1 → 3.0.2
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/Component.d.ts +1 -1
- package/Component.js.map +1 -1
- package/components/default-view/index.css +1 -1
- package/components/default-view/index.d.ts +2 -2
- package/components/default-view/index.js.map +1 -1
- package/components/default-view/index.module.css.js +1 -1
- package/components/default-view/index.module.css.js.map +1 -1
- package/components/per-page-view/index.css +1 -1
- package/components/per-page-view/index.d.ts +2 -2
- package/components/per-page-view/index.js.map +1 -1
- package/components/per-page-view/index.module.css.js +1 -1
- package/components/per-page-view/index.module.css.js.map +1 -1
- package/components/tag/index.css +9 -9
- package/components/tag/index.d.ts +2 -2
- package/components/tag/index.js.map +1 -1
- package/components/tag/index.module.css.js +1 -1
- package/components/tag/index.module.css.js.map +1 -1
- package/cssm/Component.d.ts +1 -1
- package/cssm/Component.js.map +1 -1
- package/cssm/components/default-view/index.d.ts +2 -2
- package/cssm/components/default-view/index.js.map +1 -1
- package/cssm/components/per-page-view/index.d.ts +2 -2
- package/cssm/components/per-page-view/index.js.map +1 -1
- package/cssm/components/tag/index.d.ts +2 -2
- package/cssm/components/tag/index.js.map +1 -1
- package/cssm/components/tag/index.module.css +1 -1
- package/cssm/index.module.css +1 -1
- package/esm/Component.d.ts +1 -1
- package/esm/Component.js.map +1 -1
- package/esm/components/default-view/index.css +1 -1
- package/esm/components/default-view/index.d.ts +2 -2
- package/esm/components/default-view/index.js.map +1 -1
- package/esm/components/default-view/index.module.css.js +1 -1
- package/esm/components/default-view/index.module.css.js.map +1 -1
- package/esm/components/per-page-view/index.css +1 -1
- package/esm/components/per-page-view/index.d.ts +2 -2
- package/esm/components/per-page-view/index.js.map +1 -1
- package/esm/components/per-page-view/index.module.css.js +1 -1
- package/esm/components/per-page-view/index.module.css.js.map +1 -1
- package/esm/components/tag/index.css +9 -9
- package/esm/components/tag/index.d.ts +2 -2
- package/esm/components/tag/index.js.map +1 -1
- package/esm/components/tag/index.module.css.js +1 -1
- package/esm/components/tag/index.module.css.js.map +1 -1
- package/esm/index.css +5 -5
- package/esm/index.module.css.js +1 -1
- package/esm/index.module.css.js.map +1 -1
- package/index.css +5 -5
- package/index.module.css.js +1 -1
- package/index.module.css.js.map +1 -1
- package/modern/Component.d.ts +1 -1
- package/modern/Component.js.map +1 -1
- package/modern/components/default-view/index.css +1 -1
- package/modern/components/default-view/index.d.ts +2 -2
- package/modern/components/default-view/index.js.map +1 -1
- package/modern/components/default-view/index.module.css.js +1 -1
- package/modern/components/default-view/index.module.css.js.map +1 -1
- package/modern/components/per-page-view/index.css +1 -1
- package/modern/components/per-page-view/index.d.ts +2 -2
- package/modern/components/per-page-view/index.js.map +1 -1
- package/modern/components/per-page-view/index.module.css.js +1 -1
- package/modern/components/per-page-view/index.module.css.js.map +1 -1
- package/modern/components/tag/index.css +9 -9
- package/modern/components/tag/index.d.ts +2 -2
- package/modern/components/tag/index.js.map +1 -1
- package/modern/components/tag/index.module.css.js +1 -1
- package/modern/components/tag/index.module.css.js.map +1 -1
- package/modern/index.css +5 -5
- package/modern/index.module.css.js +1 -1
- package/modern/index.module.css.js.map +1 -1
- package/moderncssm/Component.d.ts +1 -1
- package/moderncssm/Component.js.map +1 -1
- package/moderncssm/components/default-view/index.d.ts +2 -2
- package/moderncssm/components/default-view/index.js.map +1 -1
- package/moderncssm/components/default-view/index.module.css +2 -0
- package/moderncssm/components/per-page-view/index.d.ts +2 -2
- package/moderncssm/components/per-page-view/index.js.map +1 -1
- package/moderncssm/components/per-page-view/index.module.css +2 -0
- package/moderncssm/components/tag/index.d.ts +2 -2
- package/moderncssm/components/tag/index.js.map +1 -1
- package/moderncssm/components/tag/index.module.css +3 -8
- package/moderncssm/index.module.css +3 -1
- package/package.json +4 -4
- package/src/Component.tsx +1 -1
- package/src/components/default-view/index.module.css +1 -1
- package/src/components/default-view/index.tsx +2 -2
- package/src/components/per-page-view/index.module.css +1 -1
- package/src/components/per-page-view/index.tsx +2 -2
- package/src/components/tag/index.module.css +1 -1
- package/src/components/tag/index.tsx +2 -2
- package/src/index.module.css +1 -1
package/Component.d.ts
CHANGED
package/Component.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Component.js","sources":["src/Component.tsx"],"sourcesContent":["import React, { FC } from 'react';\nimport cn from 'classnames';\n\nimport { ChevronBackMIcon } from '@alfalab/icons-glyph/ChevronBackMIcon';\nimport { ChevronForwardMIcon } from '@alfalab/icons-glyph/ChevronForwardMIcon';\n\nimport { DefaultView } from './components/default-view';\nimport { PerPageView } from './components/per-page-view';\nimport { Tag } from './components/tag';\n\nimport styles from './index.module.css';\n\nexport type PaginationProps = {\n /**\n * Текущая страница (с нуля)\n */\n currentPageIndex: number;\n\n /**\n * Количество страниц\n */\n pagesCount: number;\n\n /**\n * Дополнительный класс\n */\n className?: string;\n\n /**\n * Скрывает стрелки, если выбрана первая или последняя страница\n */\n hideArrows?: boolean;\n\n /**\n * Количество видимых страниц по бокам\n */\n sidePadding?: number;\n\n /**\n * Количество видимых страниц вокруг выбранной\n */\n activePadding?: number;\n\n /**\n * Режим пагинации\n */\n view?: 'default' | 'per-page';\n\n /**\n * Обработчик переключения страницы\n */\n onPageChange?: (pageIndex: number) => void;\n\n /**\n * Идентификатор для систем автоматизированного тестирования\n */\n dataTestId?: string;\n};\n\nexport const Pagination: FC<PaginationProps> = ({\n currentPageIndex = 0,\n pagesCount,\n className,\n sidePadding = 1,\n activePadding = 2,\n hideArrows = true,\n view = 'default',\n onPageChange = () => null,\n dataTestId,\n}) => {\n const handlePageClick = (pageIndex: number) => {\n onPageChange(pageIndex);\n };\n\n const handleNextPageClick = () => {\n handlePageClick(Math.min(pagesCount - 1, currentPageIndex + 1));\n };\n\n const handlePrevPageClick = () => {\n handlePageClick(Math.max(0, currentPageIndex - 1));\n };\n\n const shouldRenderPrevArrow = view === 'per-page' || !hideArrows || currentPageIndex > 0;\n const shouldRenderNextArrow =\n view === 'per-page' || !hideArrows || currentPageIndex < pagesCount - 1;\n\n const viewClassName = view === 'default' ? 'defaultView' : view;\n\n return (\n <div\n className={cn(styles.component, className, styles[viewClassName])}\n data-test-id={dataTestId}\n >\n {shouldRenderPrevArrow && (\n <Tag\n className={styles.arrow}\n disabled={currentPageIndex <= 0}\n onClick={handlePrevPageClick}\n rightAddons={<ChevronBackMIcon width={16} height={16} />}\n />\n )}\n\n {view === 'default' && (\n <DefaultView\n activePadding={activePadding}\n sidePadding={sidePadding}\n currentPageIndex={currentPageIndex}\n pagesCount={pagesCount}\n onPageChange={handlePageClick}\n />\n )}\n\n {view === 'per-page' && (\n <PerPageView currentPageIndex={currentPageIndex} pagesCount={pagesCount} />\n )}\n\n {shouldRenderNextArrow && (\n <Tag\n className={styles.arrow}\n disabled={currentPageIndex >= pagesCount - 1}\n onClick={handleNextPageClick}\n rightAddons={<ChevronForwardMIcon width={16} height={16} />}\n />\n )}\n </div>\n );\n};\n"],"names":["React","cn","styles","Tag","ChevronBackMIcon","DefaultView","PerPageView","ChevronForwardMIcon"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Component.js","sources":["src/Component.tsx"],"sourcesContent":["import React, { type FC } from 'react';\nimport cn from 'classnames';\n\nimport { ChevronBackMIcon } from '@alfalab/icons-glyph/ChevronBackMIcon';\nimport { ChevronForwardMIcon } from '@alfalab/icons-glyph/ChevronForwardMIcon';\n\nimport { DefaultView } from './components/default-view';\nimport { PerPageView } from './components/per-page-view';\nimport { Tag } from './components/tag';\n\nimport styles from './index.module.css';\n\nexport type PaginationProps = {\n /**\n * Текущая страница (с нуля)\n */\n currentPageIndex: number;\n\n /**\n * Количество страниц\n */\n pagesCount: number;\n\n /**\n * Дополнительный класс\n */\n className?: string;\n\n /**\n * Скрывает стрелки, если выбрана первая или последняя страница\n */\n hideArrows?: boolean;\n\n /**\n * Количество видимых страниц по бокам\n */\n sidePadding?: number;\n\n /**\n * Количество видимых страниц вокруг выбранной\n */\n activePadding?: number;\n\n /**\n * Режим пагинации\n */\n view?: 'default' | 'per-page';\n\n /**\n * Обработчик переключения страницы\n */\n onPageChange?: (pageIndex: number) => void;\n\n /**\n * Идентификатор для систем автоматизированного тестирования\n */\n dataTestId?: string;\n};\n\nexport const Pagination: FC<PaginationProps> = ({\n currentPageIndex = 0,\n pagesCount,\n className,\n sidePadding = 1,\n activePadding = 2,\n hideArrows = true,\n view = 'default',\n onPageChange = () => null,\n dataTestId,\n}) => {\n const handlePageClick = (pageIndex: number) => {\n onPageChange(pageIndex);\n };\n\n const handleNextPageClick = () => {\n handlePageClick(Math.min(pagesCount - 1, currentPageIndex + 1));\n };\n\n const handlePrevPageClick = () => {\n handlePageClick(Math.max(0, currentPageIndex - 1));\n };\n\n const shouldRenderPrevArrow = view === 'per-page' || !hideArrows || currentPageIndex > 0;\n const shouldRenderNextArrow =\n view === 'per-page' || !hideArrows || currentPageIndex < pagesCount - 1;\n\n const viewClassName = view === 'default' ? 'defaultView' : view;\n\n return (\n <div\n className={cn(styles.component, className, styles[viewClassName])}\n data-test-id={dataTestId}\n >\n {shouldRenderPrevArrow && (\n <Tag\n className={styles.arrow}\n disabled={currentPageIndex <= 0}\n onClick={handlePrevPageClick}\n rightAddons={<ChevronBackMIcon width={16} height={16} />}\n />\n )}\n\n {view === 'default' && (\n <DefaultView\n activePadding={activePadding}\n sidePadding={sidePadding}\n currentPageIndex={currentPageIndex}\n pagesCount={pagesCount}\n onPageChange={handlePageClick}\n />\n )}\n\n {view === 'per-page' && (\n <PerPageView currentPageIndex={currentPageIndex} pagesCount={pagesCount} />\n )}\n\n {shouldRenderNextArrow && (\n <Tag\n className={styles.arrow}\n disabled={currentPageIndex >= pagesCount - 1}\n onClick={handleNextPageClick}\n rightAddons={<ChevronForwardMIcon width={16} height={16} />}\n />\n )}\n </div>\n );\n};\n"],"names":["React","cn","styles","Tag","ChevronBackMIcon","DefaultView","PerPageView","ChevronForwardMIcon"],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { FC } from 'react';
|
|
2
|
-
import { PaginationProps } from '../../Component';
|
|
1
|
+
import { type FC } from 'react';
|
|
2
|
+
import { type PaginationProps } from '../../Component';
|
|
3
3
|
declare type DefaultViewProps = Pick<PaginationProps, 'sidePadding' | 'activePadding' | 'pagesCount' | 'currentPageIndex' | 'onPageChange'>;
|
|
4
4
|
export declare const DefaultView: FC<DefaultViewProps>;
|
|
5
5
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../src/components/default-view/index.tsx"],"sourcesContent":["/* eslint-disable react/no-array-index-key */\nimport React, { FC, useCallback } from 'react';\n\nimport { PaginationProps } from '../../Component';\nimport { Tag } from '../tag';\n\nimport styles from './index.module.css';\n\ntype DefaultViewProps = Pick<\n PaginationProps,\n 'sidePadding' | 'activePadding' | 'pagesCount' | 'currentPageIndex' | 'onPageChange'\n>;\n\nexport const DefaultView: FC<DefaultViewProps> = ({\n sidePadding = 2,\n activePadding = 1,\n pagesCount,\n currentPageIndex,\n onPageChange = () => null,\n}) => {\n const maxHalfCount = sidePadding + activePadding + 1;\n const maxElementsCount = maxHalfCount * 2 + 1;\n const itemsFit = pagesCount <= maxElementsCount;\n const elementsCount = itemsFit ? pagesCount : maxElementsCount;\n\n const getPageIndex = useCallback(\n (elementIndex: number) => {\n const lastIndex = pagesCount - 1;\n const reverseIndex = lastIndex - currentPageIndex;\n const lastElementIndex = elementsCount - 1;\n const reverseElementIndex = lastElementIndex - elementIndex;\n\n const hasCollapsedItems = (index: number) => !itemsFit && index >= maxHalfCount;\n\n if (elementIndex < sidePadding) {\n return elementIndex;\n }\n\n if (elementIndex === sidePadding && hasCollapsedItems(currentPageIndex)) {\n return null;\n }\n\n if (reverseElementIndex === sidePadding && hasCollapsedItems(reverseIndex)) {\n return null;\n }\n\n if (reverseElementIndex < sidePadding) {\n return lastIndex - reverseElementIndex;\n }\n\n const computedIndex = currentPageIndex - maxHalfCount + elementIndex;\n\n return Math.min(lastIndex - reverseElementIndex, Math.max(elementIndex, computedIndex));\n },\n [currentPageIndex, elementsCount, itemsFit, maxHalfCount, pagesCount, sidePadding],\n );\n\n const getPageString = (page: number) => page.toLocaleString('ru-RU');\n\n return (\n <React.Fragment>\n {Array(elementsCount)\n .fill('')\n .map((_, i) => {\n const pageIndex = getPageIndex(i);\n\n if (pageIndex === null) {\n return (\n <div key={i.toString()} className={styles.dots}>\n ...\n </div>\n );\n }\n\n const active = currentPageIndex === pageIndex;\n\n return (\n <Tag\n key={i.toString()}\n checked={active}\n disabled={active}\n onClick={() => onPageChange(pageIndex)}\n >\n {getPageString(pageIndex + 1)}\n </Tag>\n );\n })}\n </React.Fragment>\n );\n};\n"],"names":["useCallback","React","styles","Tag"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../src/components/default-view/index.tsx"],"sourcesContent":["/* eslint-disable react/no-array-index-key */\nimport React, { type FC, useCallback } from 'react';\n\nimport { type PaginationProps } from '../../Component';\nimport { Tag } from '../tag';\n\nimport styles from './index.module.css';\n\ntype DefaultViewProps = Pick<\n PaginationProps,\n 'sidePadding' | 'activePadding' | 'pagesCount' | 'currentPageIndex' | 'onPageChange'\n>;\n\nexport const DefaultView: FC<DefaultViewProps> = ({\n sidePadding = 2,\n activePadding = 1,\n pagesCount,\n currentPageIndex,\n onPageChange = () => null,\n}) => {\n const maxHalfCount = sidePadding + activePadding + 1;\n const maxElementsCount = maxHalfCount * 2 + 1;\n const itemsFit = pagesCount <= maxElementsCount;\n const elementsCount = itemsFit ? pagesCount : maxElementsCount;\n\n const getPageIndex = useCallback(\n (elementIndex: number) => {\n const lastIndex = pagesCount - 1;\n const reverseIndex = lastIndex - currentPageIndex;\n const lastElementIndex = elementsCount - 1;\n const reverseElementIndex = lastElementIndex - elementIndex;\n\n const hasCollapsedItems = (index: number) => !itemsFit && index >= maxHalfCount;\n\n if (elementIndex < sidePadding) {\n return elementIndex;\n }\n\n if (elementIndex === sidePadding && hasCollapsedItems(currentPageIndex)) {\n return null;\n }\n\n if (reverseElementIndex === sidePadding && hasCollapsedItems(reverseIndex)) {\n return null;\n }\n\n if (reverseElementIndex < sidePadding) {\n return lastIndex - reverseElementIndex;\n }\n\n const computedIndex = currentPageIndex - maxHalfCount + elementIndex;\n\n return Math.min(lastIndex - reverseElementIndex, Math.max(elementIndex, computedIndex));\n },\n [currentPageIndex, elementsCount, itemsFit, maxHalfCount, pagesCount, sidePadding],\n );\n\n const getPageString = (page: number) => page.toLocaleString('ru-RU');\n\n return (\n <React.Fragment>\n {Array(elementsCount)\n .fill('')\n .map((_, i) => {\n const pageIndex = getPageIndex(i);\n\n if (pageIndex === null) {\n return (\n <div key={i.toString()} className={styles.dots}>\n ...\n </div>\n );\n }\n\n const active = currentPageIndex === pageIndex;\n\n return (\n <Tag\n key={i.toString()}\n checked={active}\n disabled={active}\n onClick={() => onPageChange(pageIndex)}\n >\n {getPageString(pageIndex + 1)}\n </Tag>\n );\n })}\n </React.Fragment>\n );\n};\n"],"names":["useCallback","React","styles","Tag"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.module.css.js","sources":["../../src/components/default-view/index.module.css"],"sourcesContent":["@import '@alfalab/core-components-vars/src/index.css';\n\n.dots {\n width: 32px;\n height: 32px;\n text-align: center;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--color-light-text-secondary);\n cursor: default;\n}\n"],"names":[],"mappings":";;;;AAEgB,aAAe,CAAC,MAAM,CAAC,wBAAwB,CAAC;;;;"}
|
|
1
|
+
{"version":3,"file":"index.module.css.js","sources":["../../src/components/default-view/index.module.css"],"sourcesContent":["@import '@alfalab/core-components-vars/src/no-typography-index.css';\n\n.dots {\n width: 32px;\n height: 32px;\n text-align: center;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--color-light-text-secondary);\n cursor: default;\n}\n"],"names":[],"mappings":";;;;AAEgB,aAAe,CAAC,MAAM,CAAC,wBAAwB,CAAC;;;;"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { FC } from 'react';
|
|
2
|
-
import { PaginationProps } from '../../Component';
|
|
1
|
+
import { type FC } from 'react';
|
|
2
|
+
import { type PaginationProps } from '../../Component';
|
|
3
3
|
declare type PerPageViewProps = Pick<PaginationProps, 'pagesCount' | 'currentPageIndex'>;
|
|
4
4
|
export declare const PerPageView: FC<PerPageViewProps>;
|
|
5
5
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../src/components/per-page-view/index.tsx"],"sourcesContent":["import React, { FC } from 'react';\n\nimport { PaginationProps } from '../../Component';\n\nimport styles from './index.module.css';\n\ntype PerPageViewProps = Pick<PaginationProps, 'pagesCount' | 'currentPageIndex'>;\n\nexport const PerPageView: FC<PerPageViewProps> = ({ pagesCount, currentPageIndex }) => (\n <span className={styles.component}>\n {currentPageIndex + 1} из {pagesCount} страниц\n </span>\n);\n"],"names":["React","styles"],"mappings":";;;;;;;;;;;AAQO,IAAM,WAAW,GAAyB,UAAC,EAAgC,EAAA;QAA9B,UAAU,GAAA,EAAA,CAAA,UAAA,EAAE,gBAAgB,GAAA,EAAA,CAAA,gBAAA;AAAO,IAAA,QACnFA,sBAAM,CAAA,aAAA,CAAA,MAAA,EAAA,EAAA,SAAS,EAAEC,YAAM,CAAC,SAAS,EAAA;AAC5B,QAAA,gBAAgB,GAAG,CAAC;;QAAM,UAAU;sDAClC;AAH4E;;;;"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../src/components/per-page-view/index.tsx"],"sourcesContent":["import React, { type FC } from 'react';\n\nimport { type PaginationProps } from '../../Component';\n\nimport styles from './index.module.css';\n\ntype PerPageViewProps = Pick<PaginationProps, 'pagesCount' | 'currentPageIndex'>;\n\nexport const PerPageView: FC<PerPageViewProps> = ({ pagesCount, currentPageIndex }) => (\n <span className={styles.component}>\n {currentPageIndex + 1} из {pagesCount} страниц\n </span>\n);\n"],"names":["React","styles"],"mappings":";;;;;;;;;;;AAQO,IAAM,WAAW,GAAyB,UAAC,EAAgC,EAAA;QAA9B,UAAU,GAAA,EAAA,CAAA,UAAA,EAAE,gBAAgB,GAAA,EAAA,CAAA,gBAAA;AAAO,IAAA,QACnFA,sBAAM,CAAA,aAAA,CAAA,MAAA,EAAA,EAAA,SAAS,EAAEC,YAAM,CAAC,SAAS,EAAA;AAC5B,QAAA,gBAAgB,GAAG,CAAC;;QAAM,UAAU;sDAClC;AAH4E;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.module.css.js","sources":["../../src/components/per-page-view/index.module.css"],"sourcesContent":["@import '@alfalab/core-components-vars/src/index.css';\n\n.component {\n display: block;\n margin: var(--gap-0) var(--gap-16);\n}\n"],"names":[],"mappings":";;;;AAEgB,aAAe,CAAC,WAAW,CAAC,6BAA6B,CAAC;;;;"}
|
|
1
|
+
{"version":3,"file":"index.module.css.js","sources":["../../src/components/per-page-view/index.module.css"],"sourcesContent":["@import '@alfalab/core-components-vars/src/no-typography-index.css';\n\n.component {\n display: block;\n margin: var(--gap-0) var(--gap-16);\n}\n"],"names":[],"mappings":";;;;AAEgB,aAAe,CAAC,WAAW,CAAC,6BAA6B,CAAC;;;;"}
|
package/components/tag/index.css
CHANGED
|
@@ -8,29 +8,29 @@
|
|
|
8
8
|
} :root {
|
|
9
9
|
--border-radius-m: 8px;
|
|
10
10
|
--border-radius-8: var(--border-radius-m);
|
|
11
|
-
} button.
|
|
11
|
+
} button.pagination__tag_1hiz4.pagination__tag_1hiz4 {
|
|
12
12
|
color: var(--color-light-text-secondary);
|
|
13
13
|
border-radius: var(--border-radius-8);
|
|
14
14
|
border: none;
|
|
15
15
|
flex-shrink: 0;
|
|
16
16
|
min-height: auto;
|
|
17
17
|
min-width: 32px;
|
|
18
|
-
height: 32px
|
|
19
|
-
} button.
|
|
18
|
+
height: 32px;
|
|
19
|
+
} button.pagination__tag_1hiz4.pagination__tag_1hiz4:not(.pagination__arrow_1hiz4) {
|
|
20
20
|
padding: 0 6px;
|
|
21
|
-
} button.
|
|
21
|
+
} button.pagination__tag_1hiz4.pagination__tag_1hiz4:disabled:not(.pagination__checked_1hiz4) {
|
|
22
22
|
opacity: 0.3;
|
|
23
|
-
} button.
|
|
23
|
+
} button.pagination__tag_1hiz4.pagination__tag_1hiz4:hover:not(:disabled) {
|
|
24
24
|
background-color: var(--color-light-transparent-default-hover);
|
|
25
25
|
color: var(--color-light-text-primary);
|
|
26
|
-
} button.
|
|
26
|
+
} button.pagination__tag_1hiz4.pagination__tag_1hiz4:active:not(:disabled) {
|
|
27
27
|
background-color: var(--color-light-transparent-default-press);
|
|
28
|
-
} button.
|
|
28
|
+
} button.pagination__tag_1hiz4.pagination__tag_1hiz4.pagination__checked_1hiz4 {
|
|
29
29
|
cursor: default;
|
|
30
30
|
background-color: var(--color-light-accent-secondary);
|
|
31
31
|
color: var(--color-light-text-primary-inverted);
|
|
32
|
-
} button.
|
|
32
|
+
} button.pagination__tag_1hiz4.pagination__tag_1hiz4.pagination__checked_1hiz4:hover:not(:disabled) {
|
|
33
33
|
color: var(--color-light-text-primary-inverted);
|
|
34
|
-
} button.
|
|
34
|
+
} button.pagination__tag_1hiz4.pagination__tag_1hiz4.pagination__checked_1hiz4:active:not(:disabled) {
|
|
35
35
|
color: var(--color-light-text-primary);
|
|
36
36
|
}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { FC } from 'react';
|
|
2
|
-
import { TagDesktopProps as TagProps } from '@alfalab/core-components-tag/desktop';
|
|
1
|
+
import { type FC } from 'react';
|
|
2
|
+
import { type TagDesktopProps as TagProps } from '@alfalab/core-components-tag/desktop';
|
|
3
3
|
export declare const Tag: FC<TagProps>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../src/components/tag/index.tsx"],"sourcesContent":["import React, { FC } from 'react';\nimport cn from 'classnames';\n\nimport {\n TagDesktop as CoreTag,\n TagDesktopProps as TagProps,\n} from '@alfalab/core-components-tag/desktop';\n\nimport styles from './index.module.css';\n\nexport const Tag: FC<TagProps> = ({ className, checked, ...restProps }) => (\n <CoreTag\n {...restProps}\n checked={checked}\n size='xxs'\n className={cn(className, styles.tag, {\n [styles.checked]: checked,\n [styles.arrow]: className,\n })}\n />\n);\n"],"names":["__rest","React","CoreTag","__assign","cn","styles"],"mappings":";;;;;;;;;;;;;;;AAUO,IAAM,GAAG,GAAiB,UAAC,EAAoC,EAAA;;IAAlC,IAAA,SAAS,eAAA,EAAE,OAAO,aAAA,EAAK,SAAS,GAAlCA,YAAA,CAAA,EAAA,EAAA,CAAA,WAAA,EAAA,SAAA,CAAoC,CAAF;IAAO,QACvEC,qCAACC,kBAAO,EAAAC,cAAA,CAAA,EAAA,EACA,SAAS,EACb,EAAA,OAAO,EAAE,OAAO,EAChB,IAAI,EAAC,KAAK,EACV,SAAS,EAAEC,mBAAE,CAAC,SAAS,EAAEC,YAAM,CAAC,GAAG,GAAA,EAAA,GAAA,EAAA;AAC/B,YAAA,EAAA,CAACA,YAAM,CAAC,OAAO,CAAA,GAAG,OAAO;AACzB,YAAA,EAAA,CAACA,YAAM,CAAC,KAAK,CAAA,GAAG,SAAS;AAC3B,YAAA,EAAA,EAAA,EAAA,CAAA,CACJ;;;;;"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../src/components/tag/index.tsx"],"sourcesContent":["import React, { type FC } from 'react';\nimport cn from 'classnames';\n\nimport {\n TagDesktop as CoreTag,\n type TagDesktopProps as TagProps,\n} from '@alfalab/core-components-tag/desktop';\n\nimport styles from './index.module.css';\n\nexport const Tag: FC<TagProps> = ({ className, checked, ...restProps }) => (\n <CoreTag\n {...restProps}\n checked={checked}\n size='xxs'\n className={cn(className, styles.tag, {\n [styles.checked]: checked,\n [styles.arrow]: className,\n })}\n />\n);\n"],"names":["__rest","React","CoreTag","__assign","cn","styles"],"mappings":";;;;;;;;;;;;;;;AAUO,IAAM,GAAG,GAAiB,UAAC,EAAoC,EAAA;;IAAlC,IAAA,SAAS,eAAA,EAAE,OAAO,aAAA,EAAK,SAAS,GAAlCA,YAAA,CAAA,EAAA,EAAA,CAAA,WAAA,EAAA,SAAA,CAAoC,CAAF;IAAO,QACvEC,qCAACC,kBAAO,EAAAC,cAAA,CAAA,EAAA,EACA,SAAS,EACb,EAAA,OAAO,EAAE,OAAO,EAChB,IAAI,EAAC,KAAK,EACV,SAAS,EAAEC,mBAAE,CAAC,SAAS,EAAEC,YAAM,CAAC,GAAG,GAAA,EAAA,GAAA,EAAA;AAC/B,YAAA,EAAA,CAACA,YAAM,CAAC,OAAO,CAAA,GAAG,OAAO;AACzB,YAAA,EAAA,CAACA,YAAM,CAAC,KAAK,CAAA,GAAG,SAAS;AAC3B,YAAA,EAAA,EAAA,EAAA,CAAA,CACJ;;;;;"}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
require('./index.css');
|
|
4
4
|
|
|
5
|
-
var styles = {"tag":"
|
|
5
|
+
var styles = {"tag":"pagination__tag_1hiz4","arrow":"pagination__arrow_1hiz4","checked":"pagination__checked_1hiz4"};
|
|
6
6
|
|
|
7
7
|
module.exports = styles;
|
|
8
8
|
//# sourceMappingURL=index.module.css.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.module.css.js","sources":["../../src/components/tag/index.module.css"],"sourcesContent":["@import '@alfalab/core-components-vars/src/index.css';\n\nbutton.tag.tag {\n color: var(--color-light-text-secondary);\n border-radius: var(--border-radius-8);\n border: none;\n flex-shrink: 0;\n min-height: auto;\n min-width: 32px;\n height: 32px;\n\n &:not(.arrow) {\n padding: 0 6px;\n }\n\n &:disabled:not(.checked) {\n opacity: 0.3;\n }\n\n &:hover:not(:disabled) {\n background-color: var(--color-light-transparent-default-hover);\n color: var(--color-light-text-primary);\n }\n\n &:active:not(:disabled) {\n background-color: var(--color-light-transparent-default-press);\n }\n\n &.checked {\n cursor: default;\n background-color: var(--color-light-accent-secondary);\n color: var(--color-light-text-primary-inverted);\n }\n\n &.checked:hover:not(:disabled) {\n color: var(--color-light-text-primary-inverted);\n }\n\n &.checked:active:not(:disabled) {\n color: var(--color-light-text-primary);\n }\n}\n"],"names":[],"mappings":";;;;AAEgB,aAAe,CAAC,KAAK,CAAC,uBAAuB,CAAC,OAAO,CAAC,yBAAyB,CAAC,SAAS,CAAC,2BAA2B,CAAC;;;;"}
|
|
1
|
+
{"version":3,"file":"index.module.css.js","sources":["../../src/components/tag/index.module.css"],"sourcesContent":["@import '@alfalab/core-components-vars/src/no-typography-index.css';\n\nbutton.tag.tag {\n color: var(--color-light-text-secondary);\n border-radius: var(--border-radius-8);\n border: none;\n flex-shrink: 0;\n min-height: auto;\n min-width: 32px;\n height: 32px;\n\n &:not(.arrow) {\n padding: 0 6px;\n }\n\n &:disabled:not(.checked) {\n opacity: 0.3;\n }\n\n &:hover:not(:disabled) {\n background-color: var(--color-light-transparent-default-hover);\n color: var(--color-light-text-primary);\n }\n\n &:active:not(:disabled) {\n background-color: var(--color-light-transparent-default-press);\n }\n\n &.checked {\n cursor: default;\n background-color: var(--color-light-accent-secondary);\n color: var(--color-light-text-primary-inverted);\n }\n\n &.checked:hover:not(:disabled) {\n color: var(--color-light-text-primary-inverted);\n }\n\n &.checked:active:not(:disabled) {\n color: var(--color-light-text-primary);\n }\n}\n"],"names":[],"mappings":";;;;AAEgB,aAAe,CAAC,KAAK,CAAC,uBAAuB,CAAC,OAAO,CAAC,yBAAyB,CAAC,SAAS,CAAC,2BAA2B,CAAC;;;;"}
|
package/cssm/Component.d.ts
CHANGED
package/cssm/Component.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Component.js","sources":["../src/Component.tsx"],"sourcesContent":["import React, { FC } from 'react';\nimport cn from 'classnames';\n\nimport { ChevronBackMIcon } from '@alfalab/icons-glyph/ChevronBackMIcon';\nimport { ChevronForwardMIcon } from '@alfalab/icons-glyph/ChevronForwardMIcon';\n\nimport { DefaultView } from './components/default-view';\nimport { PerPageView } from './components/per-page-view';\nimport { Tag } from './components/tag';\n\nimport styles from './index.module.css';\n\nexport type PaginationProps = {\n /**\n * Текущая страница (с нуля)\n */\n currentPageIndex: number;\n\n /**\n * Количество страниц\n */\n pagesCount: number;\n\n /**\n * Дополнительный класс\n */\n className?: string;\n\n /**\n * Скрывает стрелки, если выбрана первая или последняя страница\n */\n hideArrows?: boolean;\n\n /**\n * Количество видимых страниц по бокам\n */\n sidePadding?: number;\n\n /**\n * Количество видимых страниц вокруг выбранной\n */\n activePadding?: number;\n\n /**\n * Режим пагинации\n */\n view?: 'default' | 'per-page';\n\n /**\n * Обработчик переключения страницы\n */\n onPageChange?: (pageIndex: number) => void;\n\n /**\n * Идентификатор для систем автоматизированного тестирования\n */\n dataTestId?: string;\n};\n\nexport const Pagination: FC<PaginationProps> = ({\n currentPageIndex = 0,\n pagesCount,\n className,\n sidePadding = 1,\n activePadding = 2,\n hideArrows = true,\n view = 'default',\n onPageChange = () => null,\n dataTestId,\n}) => {\n const handlePageClick = (pageIndex: number) => {\n onPageChange(pageIndex);\n };\n\n const handleNextPageClick = () => {\n handlePageClick(Math.min(pagesCount - 1, currentPageIndex + 1));\n };\n\n const handlePrevPageClick = () => {\n handlePageClick(Math.max(0, currentPageIndex - 1));\n };\n\n const shouldRenderPrevArrow = view === 'per-page' || !hideArrows || currentPageIndex > 0;\n const shouldRenderNextArrow =\n view === 'per-page' || !hideArrows || currentPageIndex < pagesCount - 1;\n\n const viewClassName = view === 'default' ? 'defaultView' : view;\n\n return (\n <div\n className={cn(styles.component, className, styles[viewClassName])}\n data-test-id={dataTestId}\n >\n {shouldRenderPrevArrow && (\n <Tag\n className={styles.arrow}\n disabled={currentPageIndex <= 0}\n onClick={handlePrevPageClick}\n rightAddons={<ChevronBackMIcon width={16} height={16} />}\n />\n )}\n\n {view === 'default' && (\n <DefaultView\n activePadding={activePadding}\n sidePadding={sidePadding}\n currentPageIndex={currentPageIndex}\n pagesCount={pagesCount}\n onPageChange={handlePageClick}\n />\n )}\n\n {view === 'per-page' && (\n <PerPageView currentPageIndex={currentPageIndex} pagesCount={pagesCount} />\n )}\n\n {shouldRenderNextArrow && (\n <Tag\n className={styles.arrow}\n disabled={currentPageIndex >= pagesCount - 1}\n onClick={handleNextPageClick}\n rightAddons={<ChevronForwardMIcon width={16} height={16} />}\n />\n )}\n </div>\n );\n};\n"],"names":["React","cn","styles","Tag","ChevronBackMIcon","DefaultView","PerPageView","ChevronForwardMIcon"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Component.js","sources":["../src/Component.tsx"],"sourcesContent":["import React, { type FC } from 'react';\nimport cn from 'classnames';\n\nimport { ChevronBackMIcon } from '@alfalab/icons-glyph/ChevronBackMIcon';\nimport { ChevronForwardMIcon } from '@alfalab/icons-glyph/ChevronForwardMIcon';\n\nimport { DefaultView } from './components/default-view';\nimport { PerPageView } from './components/per-page-view';\nimport { Tag } from './components/tag';\n\nimport styles from './index.module.css';\n\nexport type PaginationProps = {\n /**\n * Текущая страница (с нуля)\n */\n currentPageIndex: number;\n\n /**\n * Количество страниц\n */\n pagesCount: number;\n\n /**\n * Дополнительный класс\n */\n className?: string;\n\n /**\n * Скрывает стрелки, если выбрана первая или последняя страница\n */\n hideArrows?: boolean;\n\n /**\n * Количество видимых страниц по бокам\n */\n sidePadding?: number;\n\n /**\n * Количество видимых страниц вокруг выбранной\n */\n activePadding?: number;\n\n /**\n * Режим пагинации\n */\n view?: 'default' | 'per-page';\n\n /**\n * Обработчик переключения страницы\n */\n onPageChange?: (pageIndex: number) => void;\n\n /**\n * Идентификатор для систем автоматизированного тестирования\n */\n dataTestId?: string;\n};\n\nexport const Pagination: FC<PaginationProps> = ({\n currentPageIndex = 0,\n pagesCount,\n className,\n sidePadding = 1,\n activePadding = 2,\n hideArrows = true,\n view = 'default',\n onPageChange = () => null,\n dataTestId,\n}) => {\n const handlePageClick = (pageIndex: number) => {\n onPageChange(pageIndex);\n };\n\n const handleNextPageClick = () => {\n handlePageClick(Math.min(pagesCount - 1, currentPageIndex + 1));\n };\n\n const handlePrevPageClick = () => {\n handlePageClick(Math.max(0, currentPageIndex - 1));\n };\n\n const shouldRenderPrevArrow = view === 'per-page' || !hideArrows || currentPageIndex > 0;\n const shouldRenderNextArrow =\n view === 'per-page' || !hideArrows || currentPageIndex < pagesCount - 1;\n\n const viewClassName = view === 'default' ? 'defaultView' : view;\n\n return (\n <div\n className={cn(styles.component, className, styles[viewClassName])}\n data-test-id={dataTestId}\n >\n {shouldRenderPrevArrow && (\n <Tag\n className={styles.arrow}\n disabled={currentPageIndex <= 0}\n onClick={handlePrevPageClick}\n rightAddons={<ChevronBackMIcon width={16} height={16} />}\n />\n )}\n\n {view === 'default' && (\n <DefaultView\n activePadding={activePadding}\n sidePadding={sidePadding}\n currentPageIndex={currentPageIndex}\n pagesCount={pagesCount}\n onPageChange={handlePageClick}\n />\n )}\n\n {view === 'per-page' && (\n <PerPageView currentPageIndex={currentPageIndex} pagesCount={pagesCount} />\n )}\n\n {shouldRenderNextArrow && (\n <Tag\n className={styles.arrow}\n disabled={currentPageIndex >= pagesCount - 1}\n onClick={handleNextPageClick}\n rightAddons={<ChevronForwardMIcon width={16} height={16} />}\n />\n )}\n </div>\n );\n};\n"],"names":["React","cn","styles","Tag","ChevronBackMIcon","DefaultView","PerPageView","ChevronForwardMIcon"],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { FC } from 'react';
|
|
2
|
-
import { PaginationProps } from '../../Component';
|
|
1
|
+
import { type FC } from 'react';
|
|
2
|
+
import { type PaginationProps } from '../../Component';
|
|
3
3
|
declare type DefaultViewProps = Pick<PaginationProps, 'sidePadding' | 'activePadding' | 'pagesCount' | 'currentPageIndex' | 'onPageChange'>;
|
|
4
4
|
export declare const DefaultView: FC<DefaultViewProps>;
|
|
5
5
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../src/components/default-view/index.tsx"],"sourcesContent":["/* eslint-disable react/no-array-index-key */\nimport React, { FC, useCallback } from 'react';\n\nimport { PaginationProps } from '../../Component';\nimport { Tag } from '../tag';\n\nimport styles from './index.module.css';\n\ntype DefaultViewProps = Pick<\n PaginationProps,\n 'sidePadding' | 'activePadding' | 'pagesCount' | 'currentPageIndex' | 'onPageChange'\n>;\n\nexport const DefaultView: FC<DefaultViewProps> = ({\n sidePadding = 2,\n activePadding = 1,\n pagesCount,\n currentPageIndex,\n onPageChange = () => null,\n}) => {\n const maxHalfCount = sidePadding + activePadding + 1;\n const maxElementsCount = maxHalfCount * 2 + 1;\n const itemsFit = pagesCount <= maxElementsCount;\n const elementsCount = itemsFit ? pagesCount : maxElementsCount;\n\n const getPageIndex = useCallback(\n (elementIndex: number) => {\n const lastIndex = pagesCount - 1;\n const reverseIndex = lastIndex - currentPageIndex;\n const lastElementIndex = elementsCount - 1;\n const reverseElementIndex = lastElementIndex - elementIndex;\n\n const hasCollapsedItems = (index: number) => !itemsFit && index >= maxHalfCount;\n\n if (elementIndex < sidePadding) {\n return elementIndex;\n }\n\n if (elementIndex === sidePadding && hasCollapsedItems(currentPageIndex)) {\n return null;\n }\n\n if (reverseElementIndex === sidePadding && hasCollapsedItems(reverseIndex)) {\n return null;\n }\n\n if (reverseElementIndex < sidePadding) {\n return lastIndex - reverseElementIndex;\n }\n\n const computedIndex = currentPageIndex - maxHalfCount + elementIndex;\n\n return Math.min(lastIndex - reverseElementIndex, Math.max(elementIndex, computedIndex));\n },\n [currentPageIndex, elementsCount, itemsFit, maxHalfCount, pagesCount, sidePadding],\n );\n\n const getPageString = (page: number) => page.toLocaleString('ru-RU');\n\n return (\n <React.Fragment>\n {Array(elementsCount)\n .fill('')\n .map((_, i) => {\n const pageIndex = getPageIndex(i);\n\n if (pageIndex === null) {\n return (\n <div key={i.toString()} className={styles.dots}>\n ...\n </div>\n );\n }\n\n const active = currentPageIndex === pageIndex;\n\n return (\n <Tag\n key={i.toString()}\n checked={active}\n disabled={active}\n onClick={() => onPageChange(pageIndex)}\n >\n {getPageString(pageIndex + 1)}\n </Tag>\n );\n })}\n </React.Fragment>\n );\n};\n"],"names":["useCallback","React","styles","Tag"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/components/default-view/index.tsx"],"sourcesContent":["/* eslint-disable react/no-array-index-key */\nimport React, { type FC, useCallback } from 'react';\n\nimport { type PaginationProps } from '../../Component';\nimport { Tag } from '../tag';\n\nimport styles from './index.module.css';\n\ntype DefaultViewProps = Pick<\n PaginationProps,\n 'sidePadding' | 'activePadding' | 'pagesCount' | 'currentPageIndex' | 'onPageChange'\n>;\n\nexport const DefaultView: FC<DefaultViewProps> = ({\n sidePadding = 2,\n activePadding = 1,\n pagesCount,\n currentPageIndex,\n onPageChange = () => null,\n}) => {\n const maxHalfCount = sidePadding + activePadding + 1;\n const maxElementsCount = maxHalfCount * 2 + 1;\n const itemsFit = pagesCount <= maxElementsCount;\n const elementsCount = itemsFit ? pagesCount : maxElementsCount;\n\n const getPageIndex = useCallback(\n (elementIndex: number) => {\n const lastIndex = pagesCount - 1;\n const reverseIndex = lastIndex - currentPageIndex;\n const lastElementIndex = elementsCount - 1;\n const reverseElementIndex = lastElementIndex - elementIndex;\n\n const hasCollapsedItems = (index: number) => !itemsFit && index >= maxHalfCount;\n\n if (elementIndex < sidePadding) {\n return elementIndex;\n }\n\n if (elementIndex === sidePadding && hasCollapsedItems(currentPageIndex)) {\n return null;\n }\n\n if (reverseElementIndex === sidePadding && hasCollapsedItems(reverseIndex)) {\n return null;\n }\n\n if (reverseElementIndex < sidePadding) {\n return lastIndex - reverseElementIndex;\n }\n\n const computedIndex = currentPageIndex - maxHalfCount + elementIndex;\n\n return Math.min(lastIndex - reverseElementIndex, Math.max(elementIndex, computedIndex));\n },\n [currentPageIndex, elementsCount, itemsFit, maxHalfCount, pagesCount, sidePadding],\n );\n\n const getPageString = (page: number) => page.toLocaleString('ru-RU');\n\n return (\n <React.Fragment>\n {Array(elementsCount)\n .fill('')\n .map((_, i) => {\n const pageIndex = getPageIndex(i);\n\n if (pageIndex === null) {\n return (\n <div key={i.toString()} className={styles.dots}>\n ...\n </div>\n );\n }\n\n const active = currentPageIndex === pageIndex;\n\n return (\n <Tag\n key={i.toString()}\n checked={active}\n disabled={active}\n onClick={() => onPageChange(pageIndex)}\n >\n {getPageString(pageIndex + 1)}\n </Tag>\n );\n })}\n </React.Fragment>\n );\n};\n"],"names":["useCallback","React","styles","Tag"],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { FC } from 'react';
|
|
2
|
-
import { PaginationProps } from '../../Component';
|
|
1
|
+
import { type FC } from 'react';
|
|
2
|
+
import { type PaginationProps } from '../../Component';
|
|
3
3
|
declare type PerPageViewProps = Pick<PaginationProps, 'pagesCount' | 'currentPageIndex'>;
|
|
4
4
|
export declare const PerPageView: FC<PerPageViewProps>;
|
|
5
5
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../src/components/per-page-view/index.tsx"],"sourcesContent":["import React, { FC } from 'react';\n\nimport { PaginationProps } from '../../Component';\n\nimport styles from './index.module.css';\n\ntype PerPageViewProps = Pick<PaginationProps, 'pagesCount' | 'currentPageIndex'>;\n\nexport const PerPageView: FC<PerPageViewProps> = ({ pagesCount, currentPageIndex }) => (\n <span className={styles.component}>\n {currentPageIndex + 1} из {pagesCount} страниц\n </span>\n);\n"],"names":["React","styles"],"mappings":";;;;;;;;;;;;AAQO,IAAM,WAAW,GAAyB,UAAC,EAAgC,EAAA;QAA9B,UAAU,GAAA,EAAA,CAAA,UAAA,EAAE,gBAAgB,GAAA,EAAA,CAAA,gBAAA;AAAO,IAAA,QACnFA,sBAAM,CAAA,aAAA,CAAA,MAAA,EAAA,EAAA,SAAS,EAAEC,uBAAM,CAAC,SAAS,EAAA;AAC5B,QAAA,gBAAgB,GAAG,CAAC;;QAAM,UAAU;sDAClC;AAH4E;;;;"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/components/per-page-view/index.tsx"],"sourcesContent":["import React, { type FC } from 'react';\n\nimport { type PaginationProps } from '../../Component';\n\nimport styles from './index.module.css';\n\ntype PerPageViewProps = Pick<PaginationProps, 'pagesCount' | 'currentPageIndex'>;\n\nexport const PerPageView: FC<PerPageViewProps> = ({ pagesCount, currentPageIndex }) => (\n <span className={styles.component}>\n {currentPageIndex + 1} из {pagesCount} страниц\n </span>\n);\n"],"names":["React","styles"],"mappings":";;;;;;;;;;;;AAQO,IAAM,WAAW,GAAyB,UAAC,EAAgC,EAAA;QAA9B,UAAU,GAAA,EAAA,CAAA,UAAA,EAAE,gBAAgB,GAAA,EAAA,CAAA,gBAAA;AAAO,IAAA,QACnFA,sBAAM,CAAA,aAAA,CAAA,MAAA,EAAA,EAAA,SAAS,EAAEC,uBAAM,CAAC,SAAS,EAAA;AAC5B,QAAA,gBAAgB,GAAG,CAAC;;QAAM,UAAU;sDAClC;AAH4E;;;;"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { FC } from 'react';
|
|
2
|
-
import { TagDesktopProps as TagProps } from '@alfalab/core-components-tag/cssm/desktop';
|
|
1
|
+
import { type FC } from 'react';
|
|
2
|
+
import { type TagDesktopProps as TagProps } from '@alfalab/core-components-tag/cssm/desktop';
|
|
3
3
|
export declare const Tag: FC<TagProps>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../src/components/tag/index.tsx"],"sourcesContent":["import React, { FC } from 'react';\nimport cn from 'classnames';\n\nimport {\n TagDesktop as CoreTag,\n TagDesktopProps as TagProps,\n} from '@alfalab/core-components-tag/desktop';\n\nimport styles from './index.module.css';\n\nexport const Tag: FC<TagProps> = ({ className, checked, ...restProps }) => (\n <CoreTag\n {...restProps}\n checked={checked}\n size='xxs'\n className={cn(className, styles.tag, {\n [styles.checked]: checked,\n [styles.arrow]: className,\n })}\n />\n);\n"],"names":["__rest","React","CoreTag","__assign","cn","styles"],"mappings":";;;;;;;;;;;;;;;;AAUO,IAAM,GAAG,GAAiB,UAAC,EAAoC,EAAA;;IAAlC,IAAA,SAAS,eAAA,EAAE,OAAO,aAAA,EAAK,SAAS,GAAlCA,YAAA,CAAA,EAAA,EAAA,CAAA,WAAA,EAAA,SAAA,CAAoC,CAAF;IAAO,QACvEC,qCAACC,kBAAO,EAAAC,cAAA,CAAA,EAAA,EACA,SAAS,EACb,EAAA,OAAO,EAAE,OAAO,EAChB,IAAI,EAAC,KAAK,EACV,SAAS,EAAEC,mBAAE,CAAC,SAAS,EAAEC,uBAAM,CAAC,GAAG,GAAA,EAAA,GAAA,EAAA;AAC/B,YAAA,EAAA,CAACA,uBAAM,CAAC,OAAO,CAAA,GAAG,OAAO;AACzB,YAAA,EAAA,CAACA,uBAAM,CAAC,KAAK,CAAA,GAAG,SAAS;AAC3B,YAAA,EAAA,EAAA,EAAA,CAAA,CACJ;;;;;"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/components/tag/index.tsx"],"sourcesContent":["import React, { type FC } from 'react';\nimport cn from 'classnames';\n\nimport {\n TagDesktop as CoreTag,\n type TagDesktopProps as TagProps,\n} from '@alfalab/core-components-tag/desktop';\n\nimport styles from './index.module.css';\n\nexport const Tag: FC<TagProps> = ({ className, checked, ...restProps }) => (\n <CoreTag\n {...restProps}\n checked={checked}\n size='xxs'\n className={cn(className, styles.tag, {\n [styles.checked]: checked,\n [styles.arrow]: className,\n })}\n />\n);\n"],"names":["__rest","React","CoreTag","__assign","cn","styles"],"mappings":";;;;;;;;;;;;;;;;AAUO,IAAM,GAAG,GAAiB,UAAC,EAAoC,EAAA;;IAAlC,IAAA,SAAS,eAAA,EAAE,OAAO,aAAA,EAAK,SAAS,GAAlCA,YAAA,CAAA,EAAA,EAAA,CAAA,WAAA,EAAA,SAAA,CAAoC,CAAF;IAAO,QACvEC,qCAACC,kBAAO,EAAAC,cAAA,CAAA,EAAA,EACA,SAAS,EACb,EAAA,OAAO,EAAE,OAAO,EAChB,IAAI,EAAC,KAAK,EACV,SAAS,EAAEC,mBAAE,CAAC,SAAS,EAAEC,uBAAM,CAAC,GAAG,GAAA,EAAA,GAAA,EAAA;AAC/B,YAAA,EAAA,CAACA,uBAAM,CAAC,OAAO,CAAA,GAAG,OAAO;AACzB,YAAA,EAAA,CAACA,uBAAM,CAAC,KAAK,CAAA,GAAG,SAAS;AAC3B,YAAA,EAAA,EAAA,EAAA,CAAA,CACJ;;;;;"}
|
package/cssm/index.module.css
CHANGED
package/esm/Component.d.ts
CHANGED
package/esm/Component.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Component.js","sources":["../src/Component.tsx"],"sourcesContent":["import React, { FC } from 'react';\nimport cn from 'classnames';\n\nimport { ChevronBackMIcon } from '@alfalab/icons-glyph/ChevronBackMIcon';\nimport { ChevronForwardMIcon } from '@alfalab/icons-glyph/ChevronForwardMIcon';\n\nimport { DefaultView } from './components/default-view';\nimport { PerPageView } from './components/per-page-view';\nimport { Tag } from './components/tag';\n\nimport styles from './index.module.css';\n\nexport type PaginationProps = {\n /**\n * Текущая страница (с нуля)\n */\n currentPageIndex: number;\n\n /**\n * Количество страниц\n */\n pagesCount: number;\n\n /**\n * Дополнительный класс\n */\n className?: string;\n\n /**\n * Скрывает стрелки, если выбрана первая или последняя страница\n */\n hideArrows?: boolean;\n\n /**\n * Количество видимых страниц по бокам\n */\n sidePadding?: number;\n\n /**\n * Количество видимых страниц вокруг выбранной\n */\n activePadding?: number;\n\n /**\n * Режим пагинации\n */\n view?: 'default' | 'per-page';\n\n /**\n * Обработчик переключения страницы\n */\n onPageChange?: (pageIndex: number) => void;\n\n /**\n * Идентификатор для систем автоматизированного тестирования\n */\n dataTestId?: string;\n};\n\nexport const Pagination: FC<PaginationProps> = ({\n currentPageIndex = 0,\n pagesCount,\n className,\n sidePadding = 1,\n activePadding = 2,\n hideArrows = true,\n view = 'default',\n onPageChange = () => null,\n dataTestId,\n}) => {\n const handlePageClick = (pageIndex: number) => {\n onPageChange(pageIndex);\n };\n\n const handleNextPageClick = () => {\n handlePageClick(Math.min(pagesCount - 1, currentPageIndex + 1));\n };\n\n const handlePrevPageClick = () => {\n handlePageClick(Math.max(0, currentPageIndex - 1));\n };\n\n const shouldRenderPrevArrow = view === 'per-page' || !hideArrows || currentPageIndex > 0;\n const shouldRenderNextArrow =\n view === 'per-page' || !hideArrows || currentPageIndex < pagesCount - 1;\n\n const viewClassName = view === 'default' ? 'defaultView' : view;\n\n return (\n <div\n className={cn(styles.component, className, styles[viewClassName])}\n data-test-id={dataTestId}\n >\n {shouldRenderPrevArrow && (\n <Tag\n className={styles.arrow}\n disabled={currentPageIndex <= 0}\n onClick={handlePrevPageClick}\n rightAddons={<ChevronBackMIcon width={16} height={16} />}\n />\n )}\n\n {view === 'default' && (\n <DefaultView\n activePadding={activePadding}\n sidePadding={sidePadding}\n currentPageIndex={currentPageIndex}\n pagesCount={pagesCount}\n onPageChange={handlePageClick}\n />\n )}\n\n {view === 'per-page' && (\n <PerPageView currentPageIndex={currentPageIndex} pagesCount={pagesCount} />\n )}\n\n {shouldRenderNextArrow && (\n <Tag\n className={styles.arrow}\n disabled={currentPageIndex >= pagesCount - 1}\n onClick={handleNextPageClick}\n rightAddons={<ChevronForwardMIcon width={16} height={16} />}\n />\n )}\n </div>\n );\n};\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Component.js","sources":["../src/Component.tsx"],"sourcesContent":["import React, { type FC } from 'react';\nimport cn from 'classnames';\n\nimport { ChevronBackMIcon } from '@alfalab/icons-glyph/ChevronBackMIcon';\nimport { ChevronForwardMIcon } from '@alfalab/icons-glyph/ChevronForwardMIcon';\n\nimport { DefaultView } from './components/default-view';\nimport { PerPageView } from './components/per-page-view';\nimport { Tag } from './components/tag';\n\nimport styles from './index.module.css';\n\nexport type PaginationProps = {\n /**\n * Текущая страница (с нуля)\n */\n currentPageIndex: number;\n\n /**\n * Количество страниц\n */\n pagesCount: number;\n\n /**\n * Дополнительный класс\n */\n className?: string;\n\n /**\n * Скрывает стрелки, если выбрана первая или последняя страница\n */\n hideArrows?: boolean;\n\n /**\n * Количество видимых страниц по бокам\n */\n sidePadding?: number;\n\n /**\n * Количество видимых страниц вокруг выбранной\n */\n activePadding?: number;\n\n /**\n * Режим пагинации\n */\n view?: 'default' | 'per-page';\n\n /**\n * Обработчик переключения страницы\n */\n onPageChange?: (pageIndex: number) => void;\n\n /**\n * Идентификатор для систем автоматизированного тестирования\n */\n dataTestId?: string;\n};\n\nexport const Pagination: FC<PaginationProps> = ({\n currentPageIndex = 0,\n pagesCount,\n className,\n sidePadding = 1,\n activePadding = 2,\n hideArrows = true,\n view = 'default',\n onPageChange = () => null,\n dataTestId,\n}) => {\n const handlePageClick = (pageIndex: number) => {\n onPageChange(pageIndex);\n };\n\n const handleNextPageClick = () => {\n handlePageClick(Math.min(pagesCount - 1, currentPageIndex + 1));\n };\n\n const handlePrevPageClick = () => {\n handlePageClick(Math.max(0, currentPageIndex - 1));\n };\n\n const shouldRenderPrevArrow = view === 'per-page' || !hideArrows || currentPageIndex > 0;\n const shouldRenderNextArrow =\n view === 'per-page' || !hideArrows || currentPageIndex < pagesCount - 1;\n\n const viewClassName = view === 'default' ? 'defaultView' : view;\n\n return (\n <div\n className={cn(styles.component, className, styles[viewClassName])}\n data-test-id={dataTestId}\n >\n {shouldRenderPrevArrow && (\n <Tag\n className={styles.arrow}\n disabled={currentPageIndex <= 0}\n onClick={handlePrevPageClick}\n rightAddons={<ChevronBackMIcon width={16} height={16} />}\n />\n )}\n\n {view === 'default' && (\n <DefaultView\n activePadding={activePadding}\n sidePadding={sidePadding}\n currentPageIndex={currentPageIndex}\n pagesCount={pagesCount}\n onPageChange={handlePageClick}\n />\n )}\n\n {view === 'per-page' && (\n <PerPageView currentPageIndex={currentPageIndex} pagesCount={pagesCount} />\n )}\n\n {shouldRenderNextArrow && (\n <Tag\n className={styles.arrow}\n disabled={currentPageIndex >= pagesCount - 1}\n onClick={handleNextPageClick}\n rightAddons={<ChevronForwardMIcon width={16} height={16} />}\n />\n )}\n </div>\n );\n};\n"],"names":[],"mappings":";;;;;;;;;AA2DO,IAAM,UAAU,GAAwB,UAAC,EAU/C,EAAA;QATG,EAAoB,GAAA,EAAA,CAAA,gBAAA,EAApB,gBAAgB,GAAA,EAAA,KAAA,MAAA,GAAG,CAAC,GAAA,EAAA,EACpB,UAAU,GAAA,EAAA,CAAA,UAAA,EACV,SAAS,GAAA,EAAA,CAAA,SAAA,EACT,mBAAe,EAAf,WAAW,GAAG,EAAA,KAAA,MAAA,GAAA,CAAC,GAAA,EAAA,EACf,qBAAiB,EAAjB,aAAa,GAAG,EAAA,KAAA,MAAA,GAAA,CAAC,GAAA,EAAA,EACjB,kBAAiB,EAAjB,UAAU,GAAG,EAAA,KAAA,MAAA,GAAA,IAAI,GAAA,EAAA,EACjB,YAAgB,EAAhB,IAAI,GAAG,EAAA,KAAA,MAAA,GAAA,SAAS,GAAA,EAAA,EAChB,oBAAyB,EAAzB,YAAY,GAAG,EAAA,KAAA,MAAA,GAAA,YAAA,EAAM,OAAA,IAAI,GAAA,GAAA,EAAA,EACzB,UAAU,GAAA,EAAA,CAAA,UAAA;IAEV,IAAM,eAAe,GAAG,UAAC,SAAiB,EAAA;QACtC,YAAY,CAAC,SAAS,CAAC;AAC3B,KAAC;AAED,IAAA,IAAM,mBAAmB,GAAG,YAAA;AACxB,QAAA,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,GAAG,CAAC,EAAE,gBAAgB,GAAG,CAAC,CAAC,CAAC;AACnE,KAAC;AAED,IAAA,IAAM,mBAAmB,GAAG,YAAA;AACxB,QAAA,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,gBAAgB,GAAG,CAAC,CAAC,CAAC;AACtD,KAAC;AAED,IAAA,IAAM,qBAAqB,GAAG,IAAI,KAAK,UAAU,IAAI,CAAC,UAAU,IAAI,gBAAgB,GAAG,CAAC;AACxF,IAAA,IAAM,qBAAqB,GACvB,IAAI,KAAK,UAAU,IAAI,CAAC,UAAU,IAAI,gBAAgB,GAAG,UAAU,GAAG,CAAC;AAE3E,IAAA,IAAM,aAAa,GAAG,IAAI,KAAK,SAAS,GAAG,aAAa,GAAG,IAAI;AAE/D,IAAA,QACI,KACI,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,SAAS,EAAE,EAAE,CAAC,MAAM,CAAC,SAAS,EAAE,SAAS,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC,kBACnD,UAAU,EAAA;AAEvB,QAAA,qBAAqB,KAClB,KAAC,CAAA,aAAA,CAAA,GAAG,IACA,SAAS,EAAE,MAAM,CAAC,KAAK,EACvB,QAAQ,EAAE,gBAAgB,IAAI,CAAC,EAC/B,OAAO,EAAE,mBAAmB,EAC5B,WAAW,EAAE,KAAA,CAAA,aAAA,CAAC,gBAAgB,EAAC,EAAA,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAA,CAAI,GAC1D,CACL;QAEA,IAAI,KAAK,SAAS,KACf,KAAA,CAAA,aAAA,CAAC,WAAW,EAAA,EACR,aAAa,EAAE,aAAa,EAC5B,WAAW,EAAE,WAAW,EACxB,gBAAgB,EAAE,gBAAgB,EAClC,UAAU,EAAE,UAAU,EACtB,YAAY,EAAE,eAAe,EAAA,CAC/B,CACL;AAEA,QAAA,IAAI,KAAK,UAAU,KAChB,oBAAC,WAAW,EAAA,EAAC,gBAAgB,EAAE,gBAAgB,EAAE,UAAU,EAAE,UAAU,GAAI,CAC9E;AAEA,QAAA,qBAAqB,KAClB,KAAA,CAAA,aAAA,CAAC,GAAG,EACA,EAAA,SAAS,EAAE,MAAM,CAAC,KAAK,EACvB,QAAQ,EAAE,gBAAgB,IAAI,UAAU,GAAG,CAAC,EAC5C,OAAO,EAAE,mBAAmB,EAC5B,WAAW,EAAE,oBAAC,mBAAmB,EAAA,EAAC,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAA,CAAI,GAC7D,CACL,CACC;AAEd;;;;"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { FC } from 'react';
|
|
2
|
-
import { PaginationProps } from '../../Component';
|
|
1
|
+
import { type FC } from 'react';
|
|
2
|
+
import { type PaginationProps } from '../../Component';
|
|
3
3
|
declare type DefaultViewProps = Pick<PaginationProps, 'sidePadding' | 'activePadding' | 'pagesCount' | 'currentPageIndex' | 'onPageChange'>;
|
|
4
4
|
export declare const DefaultView: FC<DefaultViewProps>;
|
|
5
5
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../src/components/default-view/index.tsx"],"sourcesContent":["/* eslint-disable react/no-array-index-key */\nimport React, { FC, useCallback } from 'react';\n\nimport { PaginationProps } from '../../Component';\nimport { Tag } from '../tag';\n\nimport styles from './index.module.css';\n\ntype DefaultViewProps = Pick<\n PaginationProps,\n 'sidePadding' | 'activePadding' | 'pagesCount' | 'currentPageIndex' | 'onPageChange'\n>;\n\nexport const DefaultView: FC<DefaultViewProps> = ({\n sidePadding = 2,\n activePadding = 1,\n pagesCount,\n currentPageIndex,\n onPageChange = () => null,\n}) => {\n const maxHalfCount = sidePadding + activePadding + 1;\n const maxElementsCount = maxHalfCount * 2 + 1;\n const itemsFit = pagesCount <= maxElementsCount;\n const elementsCount = itemsFit ? pagesCount : maxElementsCount;\n\n const getPageIndex = useCallback(\n (elementIndex: number) => {\n const lastIndex = pagesCount - 1;\n const reverseIndex = lastIndex - currentPageIndex;\n const lastElementIndex = elementsCount - 1;\n const reverseElementIndex = lastElementIndex - elementIndex;\n\n const hasCollapsedItems = (index: number) => !itemsFit && index >= maxHalfCount;\n\n if (elementIndex < sidePadding) {\n return elementIndex;\n }\n\n if (elementIndex === sidePadding && hasCollapsedItems(currentPageIndex)) {\n return null;\n }\n\n if (reverseElementIndex === sidePadding && hasCollapsedItems(reverseIndex)) {\n return null;\n }\n\n if (reverseElementIndex < sidePadding) {\n return lastIndex - reverseElementIndex;\n }\n\n const computedIndex = currentPageIndex - maxHalfCount + elementIndex;\n\n return Math.min(lastIndex - reverseElementIndex, Math.max(elementIndex, computedIndex));\n },\n [currentPageIndex, elementsCount, itemsFit, maxHalfCount, pagesCount, sidePadding],\n );\n\n const getPageString = (page: number) => page.toLocaleString('ru-RU');\n\n return (\n <React.Fragment>\n {Array(elementsCount)\n .fill('')\n .map((_, i) => {\n const pageIndex = getPageIndex(i);\n\n if (pageIndex === null) {\n return (\n <div key={i.toString()} className={styles.dots}>\n ...\n </div>\n );\n }\n\n const active = currentPageIndex === pageIndex;\n\n return (\n <Tag\n key={i.toString()}\n checked={active}\n disabled={active}\n onClick={() => onPageChange(pageIndex)}\n >\n {getPageString(pageIndex + 1)}\n </Tag>\n );\n })}\n </React.Fragment>\n );\n};\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/components/default-view/index.tsx"],"sourcesContent":["/* eslint-disable react/no-array-index-key */\nimport React, { type FC, useCallback } from 'react';\n\nimport { type PaginationProps } from '../../Component';\nimport { Tag } from '../tag';\n\nimport styles from './index.module.css';\n\ntype DefaultViewProps = Pick<\n PaginationProps,\n 'sidePadding' | 'activePadding' | 'pagesCount' | 'currentPageIndex' | 'onPageChange'\n>;\n\nexport const DefaultView: FC<DefaultViewProps> = ({\n sidePadding = 2,\n activePadding = 1,\n pagesCount,\n currentPageIndex,\n onPageChange = () => null,\n}) => {\n const maxHalfCount = sidePadding + activePadding + 1;\n const maxElementsCount = maxHalfCount * 2 + 1;\n const itemsFit = pagesCount <= maxElementsCount;\n const elementsCount = itemsFit ? pagesCount : maxElementsCount;\n\n const getPageIndex = useCallback(\n (elementIndex: number) => {\n const lastIndex = pagesCount - 1;\n const reverseIndex = lastIndex - currentPageIndex;\n const lastElementIndex = elementsCount - 1;\n const reverseElementIndex = lastElementIndex - elementIndex;\n\n const hasCollapsedItems = (index: number) => !itemsFit && index >= maxHalfCount;\n\n if (elementIndex < sidePadding) {\n return elementIndex;\n }\n\n if (elementIndex === sidePadding && hasCollapsedItems(currentPageIndex)) {\n return null;\n }\n\n if (reverseElementIndex === sidePadding && hasCollapsedItems(reverseIndex)) {\n return null;\n }\n\n if (reverseElementIndex < sidePadding) {\n return lastIndex - reverseElementIndex;\n }\n\n const computedIndex = currentPageIndex - maxHalfCount + elementIndex;\n\n return Math.min(lastIndex - reverseElementIndex, Math.max(elementIndex, computedIndex));\n },\n [currentPageIndex, elementsCount, itemsFit, maxHalfCount, pagesCount, sidePadding],\n );\n\n const getPageString = (page: number) => page.toLocaleString('ru-RU');\n\n return (\n <React.Fragment>\n {Array(elementsCount)\n .fill('')\n .map((_, i) => {\n const pageIndex = getPageIndex(i);\n\n if (pageIndex === null) {\n return (\n <div key={i.toString()} className={styles.dots}>\n ...\n </div>\n );\n }\n\n const active = currentPageIndex === pageIndex;\n\n return (\n <Tag\n key={i.toString()}\n checked={active}\n disabled={active}\n onClick={() => onPageChange(pageIndex)}\n >\n {getPageString(pageIndex + 1)}\n </Tag>\n );\n })}\n </React.Fragment>\n );\n};\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.module.css.js","sources":["../../src/components/default-view/index.module.css"],"sourcesContent":["@import '@alfalab/core-components-vars/src/index.css';\n\n.dots {\n width: 32px;\n height: 32px;\n text-align: center;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--color-light-text-secondary);\n cursor: default;\n}\n"],"names":[],"mappings":";;AAEgB,aAAe,CAAC,MAAM,CAAC,wBAAwB,CAAC;;;;"}
|
|
1
|
+
{"version":3,"file":"index.module.css.js","sources":["../../src/components/default-view/index.module.css"],"sourcesContent":["@import '@alfalab/core-components-vars/src/no-typography-index.css';\n\n.dots {\n width: 32px;\n height: 32px;\n text-align: center;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--color-light-text-secondary);\n cursor: default;\n}\n"],"names":[],"mappings":";;AAEgB,aAAe,CAAC,MAAM,CAAC,wBAAwB,CAAC;;;;"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { FC } from 'react';
|
|
2
|
-
import { PaginationProps } from '../../Component';
|
|
1
|
+
import { type FC } from 'react';
|
|
2
|
+
import { type PaginationProps } from '../../Component';
|
|
3
3
|
declare type PerPageViewProps = Pick<PaginationProps, 'pagesCount' | 'currentPageIndex'>;
|
|
4
4
|
export declare const PerPageView: FC<PerPageViewProps>;
|
|
5
5
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../src/components/per-page-view/index.tsx"],"sourcesContent":["import React, { FC } from 'react';\n\nimport { PaginationProps } from '../../Component';\n\nimport styles from './index.module.css';\n\ntype PerPageViewProps = Pick<PaginationProps, 'pagesCount' | 'currentPageIndex'>;\n\nexport const PerPageView: FC<PerPageViewProps> = ({ pagesCount, currentPageIndex }) => (\n <span className={styles.component}>\n {currentPageIndex + 1} из {pagesCount} страниц\n </span>\n);\n"],"names":[],"mappings":";;;AAQO,IAAM,WAAW,GAAyB,UAAC,EAAgC,EAAA;QAA9B,UAAU,GAAA,EAAA,CAAA,UAAA,EAAE,gBAAgB,GAAA,EAAA,CAAA,gBAAA;AAAO,IAAA,QACnF,KAAM,CAAA,aAAA,CAAA,MAAA,EAAA,EAAA,SAAS,EAAE,MAAM,CAAC,SAAS,EAAA;AAC5B,QAAA,gBAAgB,GAAG,CAAC;;QAAM,UAAU;sDAClC;AAH4E;;;;"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/components/per-page-view/index.tsx"],"sourcesContent":["import React, { type FC } from 'react';\n\nimport { type PaginationProps } from '../../Component';\n\nimport styles from './index.module.css';\n\ntype PerPageViewProps = Pick<PaginationProps, 'pagesCount' | 'currentPageIndex'>;\n\nexport const PerPageView: FC<PerPageViewProps> = ({ pagesCount, currentPageIndex }) => (\n <span className={styles.component}>\n {currentPageIndex + 1} из {pagesCount} страниц\n </span>\n);\n"],"names":[],"mappings":";;;AAQO,IAAM,WAAW,GAAyB,UAAC,EAAgC,EAAA;QAA9B,UAAU,GAAA,EAAA,CAAA,UAAA,EAAE,gBAAgB,GAAA,EAAA,CAAA,gBAAA;AAAO,IAAA,QACnF,KAAM,CAAA,aAAA,CAAA,MAAA,EAAA,EAAA,SAAS,EAAE,MAAM,CAAC,SAAS,EAAA;AAC5B,QAAA,gBAAgB,GAAG,CAAC;;QAAM,UAAU;sDAClC;AAH4E;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.module.css.js","sources":["../../src/components/per-page-view/index.module.css"],"sourcesContent":["@import '@alfalab/core-components-vars/src/index.css';\n\n.component {\n display: block;\n margin: var(--gap-0) var(--gap-16);\n}\n"],"names":[],"mappings":";;AAEgB,aAAe,CAAC,WAAW,CAAC,6BAA6B,CAAC;;;;"}
|
|
1
|
+
{"version":3,"file":"index.module.css.js","sources":["../../src/components/per-page-view/index.module.css"],"sourcesContent":["@import '@alfalab/core-components-vars/src/no-typography-index.css';\n\n.component {\n display: block;\n margin: var(--gap-0) var(--gap-16);\n}\n"],"names":[],"mappings":";;AAEgB,aAAe,CAAC,WAAW,CAAC,6BAA6B,CAAC;;;;"}
|
|
@@ -8,29 +8,29 @@
|
|
|
8
8
|
} :root {
|
|
9
9
|
--border-radius-m: 8px;
|
|
10
10
|
--border-radius-8: var(--border-radius-m);
|
|
11
|
-
} button.
|
|
11
|
+
} button.pagination__tag_1hiz4.pagination__tag_1hiz4 {
|
|
12
12
|
color: var(--color-light-text-secondary);
|
|
13
13
|
border-radius: var(--border-radius-8);
|
|
14
14
|
border: none;
|
|
15
15
|
flex-shrink: 0;
|
|
16
16
|
min-height: auto;
|
|
17
17
|
min-width: 32px;
|
|
18
|
-
height: 32px
|
|
19
|
-
} button.
|
|
18
|
+
height: 32px;
|
|
19
|
+
} button.pagination__tag_1hiz4.pagination__tag_1hiz4:not(.pagination__arrow_1hiz4) {
|
|
20
20
|
padding: 0 6px;
|
|
21
|
-
} button.
|
|
21
|
+
} button.pagination__tag_1hiz4.pagination__tag_1hiz4:disabled:not(.pagination__checked_1hiz4) {
|
|
22
22
|
opacity: 0.3;
|
|
23
|
-
} button.
|
|
23
|
+
} button.pagination__tag_1hiz4.pagination__tag_1hiz4:hover:not(:disabled) {
|
|
24
24
|
background-color: var(--color-light-transparent-default-hover);
|
|
25
25
|
color: var(--color-light-text-primary);
|
|
26
|
-
} button.
|
|
26
|
+
} button.pagination__tag_1hiz4.pagination__tag_1hiz4:active:not(:disabled) {
|
|
27
27
|
background-color: var(--color-light-transparent-default-press);
|
|
28
|
-
} button.
|
|
28
|
+
} button.pagination__tag_1hiz4.pagination__tag_1hiz4.pagination__checked_1hiz4 {
|
|
29
29
|
cursor: default;
|
|
30
30
|
background-color: var(--color-light-accent-secondary);
|
|
31
31
|
color: var(--color-light-text-primary-inverted);
|
|
32
|
-
} button.
|
|
32
|
+
} button.pagination__tag_1hiz4.pagination__tag_1hiz4.pagination__checked_1hiz4:hover:not(:disabled) {
|
|
33
33
|
color: var(--color-light-text-primary-inverted);
|
|
34
|
-
} button.
|
|
34
|
+
} button.pagination__tag_1hiz4.pagination__tag_1hiz4.pagination__checked_1hiz4:active:not(:disabled) {
|
|
35
35
|
color: var(--color-light-text-primary);
|
|
36
36
|
}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { FC } from 'react';
|
|
2
|
-
import { TagDesktopProps as TagProps } from '@alfalab/core-components-tag/esm/desktop';
|
|
1
|
+
import { type FC } from 'react';
|
|
2
|
+
import { type TagDesktopProps as TagProps } from '@alfalab/core-components-tag/esm/desktop';
|
|
3
3
|
export declare const Tag: FC<TagProps>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../src/components/tag/index.tsx"],"sourcesContent":["import React, { FC } from 'react';\nimport cn from 'classnames';\n\nimport {\n TagDesktop as CoreTag,\n TagDesktopProps as TagProps,\n} from '@alfalab/core-components-tag/desktop';\n\nimport styles from './index.module.css';\n\nexport const Tag: FC<TagProps> = ({ className, checked, ...restProps }) => (\n <CoreTag\n {...restProps}\n checked={checked}\n size='xxs'\n className={cn(className, styles.tag, {\n [styles.checked]: checked,\n [styles.arrow]: className,\n })}\n />\n);\n"],"names":["CoreTag"],"mappings":";;;;;;AAUO,IAAM,GAAG,GAAiB,UAAC,EAAoC,EAAA;;IAAlC,IAAA,SAAS,eAAA,EAAE,OAAO,aAAA,EAAK,SAAS,GAAlC,MAAA,CAAA,EAAA,EAAA,CAAA,WAAA,EAAA,SAAA,CAAoC,CAAF;IAAO,QACvE,oBAACA,UAAO,EAAA,QAAA,CAAA,EAAA,EACA,SAAS,EACb,EAAA,OAAO,EAAE,OAAO,EAChB,IAAI,EAAC,KAAK,EACV,SAAS,EAAE,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC,GAAG,GAAA,EAAA,GAAA,EAAA;AAC/B,YAAA,EAAA,CAAC,MAAM,CAAC,OAAO,CAAA,GAAG,OAAO;AACzB,YAAA,EAAA,CAAC,MAAM,CAAC,KAAK,CAAA,GAAG,SAAS;AAC3B,YAAA,EAAA,EAAA,EAAA,CAAA,CACJ;;;;;"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/components/tag/index.tsx"],"sourcesContent":["import React, { type FC } from 'react';\nimport cn from 'classnames';\n\nimport {\n TagDesktop as CoreTag,\n type TagDesktopProps as TagProps,\n} from '@alfalab/core-components-tag/desktop';\n\nimport styles from './index.module.css';\n\nexport const Tag: FC<TagProps> = ({ className, checked, ...restProps }) => (\n <CoreTag\n {...restProps}\n checked={checked}\n size='xxs'\n className={cn(className, styles.tag, {\n [styles.checked]: checked,\n [styles.arrow]: className,\n })}\n />\n);\n"],"names":["CoreTag"],"mappings":";;;;;;AAUO,IAAM,GAAG,GAAiB,UAAC,EAAoC,EAAA;;IAAlC,IAAA,SAAS,eAAA,EAAE,OAAO,aAAA,EAAK,SAAS,GAAlC,MAAA,CAAA,EAAA,EAAA,CAAA,WAAA,EAAA,SAAA,CAAoC,CAAF;IAAO,QACvE,oBAACA,UAAO,EAAA,QAAA,CAAA,EAAA,EACA,SAAS,EACb,EAAA,OAAO,EAAE,OAAO,EAChB,IAAI,EAAC,KAAK,EACV,SAAS,EAAE,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC,GAAG,GAAA,EAAA,GAAA,EAAA;AAC/B,YAAA,EAAA,CAAC,MAAM,CAAC,OAAO,CAAA,GAAG,OAAO;AACzB,YAAA,EAAA,CAAC,MAAM,CAAC,KAAK,CAAA,GAAG,SAAS;AAC3B,YAAA,EAAA,EAAA,EAAA,CAAA,CACJ;;;;;"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import './index.css';
|
|
2
2
|
|
|
3
|
-
var styles = {"tag":"
|
|
3
|
+
var styles = {"tag":"pagination__tag_1hiz4","arrow":"pagination__arrow_1hiz4","checked":"pagination__checked_1hiz4"};
|
|
4
4
|
|
|
5
5
|
export { styles as default };
|
|
6
6
|
//# sourceMappingURL=index.module.css.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.module.css.js","sources":["../../src/components/tag/index.module.css"],"sourcesContent":["@import '@alfalab/core-components-vars/src/index.css';\n\nbutton.tag.tag {\n color: var(--color-light-text-secondary);\n border-radius: var(--border-radius-8);\n border: none;\n flex-shrink: 0;\n min-height: auto;\n min-width: 32px;\n height: 32px;\n\n &:not(.arrow) {\n padding: 0 6px;\n }\n\n &:disabled:not(.checked) {\n opacity: 0.3;\n }\n\n &:hover:not(:disabled) {\n background-color: var(--color-light-transparent-default-hover);\n color: var(--color-light-text-primary);\n }\n\n &:active:not(:disabled) {\n background-color: var(--color-light-transparent-default-press);\n }\n\n &.checked {\n cursor: default;\n background-color: var(--color-light-accent-secondary);\n color: var(--color-light-text-primary-inverted);\n }\n\n &.checked:hover:not(:disabled) {\n color: var(--color-light-text-primary-inverted);\n }\n\n &.checked:active:not(:disabled) {\n color: var(--color-light-text-primary);\n }\n}\n"],"names":[],"mappings":";;AAEgB,aAAe,CAAC,KAAK,CAAC,uBAAuB,CAAC,OAAO,CAAC,yBAAyB,CAAC,SAAS,CAAC,2BAA2B,CAAC;;;;"}
|
|
1
|
+
{"version":3,"file":"index.module.css.js","sources":["../../src/components/tag/index.module.css"],"sourcesContent":["@import '@alfalab/core-components-vars/src/no-typography-index.css';\n\nbutton.tag.tag {\n color: var(--color-light-text-secondary);\n border-radius: var(--border-radius-8);\n border: none;\n flex-shrink: 0;\n min-height: auto;\n min-width: 32px;\n height: 32px;\n\n &:not(.arrow) {\n padding: 0 6px;\n }\n\n &:disabled:not(.checked) {\n opacity: 0.3;\n }\n\n &:hover:not(:disabled) {\n background-color: var(--color-light-transparent-default-hover);\n color: var(--color-light-text-primary);\n }\n\n &:active:not(:disabled) {\n background-color: var(--color-light-transparent-default-press);\n }\n\n &.checked {\n cursor: default;\n background-color: var(--color-light-accent-secondary);\n color: var(--color-light-text-primary-inverted);\n }\n\n &.checked:hover:not(:disabled) {\n color: var(--color-light-text-primary-inverted);\n }\n\n &.checked:active:not(:disabled) {\n color: var(--color-light-text-primary);\n }\n}\n"],"names":[],"mappings":";;AAEgB,aAAe,CAAC,KAAK,CAAC,uBAAuB,CAAC,OAAO,CAAC,yBAAyB,CAAC,SAAS,CAAC,2BAA2B,CAAC;;;;"}
|