@vchasno/ui-kit 0.4.71 → 0.4.76

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/CHANGELOG.md CHANGED
@@ -7,6 +7,24 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [0.4.76] — 2026-01-07
11
+
12
+ ## Changed
13
+
14
+ - Add BasePagination to index file
15
+
16
+ ## [0.4.73 - 0.4.75] — 2026-01-07
17
+
18
+ ## Changed
19
+
20
+ - No API changes, technical release
21
+
22
+ ## [0.4.72] - 2026-01-07
23
+
24
+ ## Added
25
+
26
+ - add BasePagination component
27
+
10
28
  ## [0.4.71] - 2025-12-05
11
29
 
12
30
  ## Changed
@@ -0,0 +1,22 @@
1
+ import React from 'react';
2
+
3
+ interface BasePaginationProps {
4
+ hide?: boolean;
5
+ className?: string;
6
+ currentPage: number;
7
+ total?: number | null;
8
+ onPageChange?: (page: number) => void;
9
+ simple?: boolean;
10
+ hideNext?: boolean;
11
+ hidePrev?: boolean;
12
+ onPrevGapClick?: () => void;
13
+ onNextGapClick?: () => void;
14
+ onPrevClick: () => void;
15
+ onNextClick: () => void;
16
+ isPrevDisabled?: boolean;
17
+ isNextDisabled?: boolean;
18
+ gapStep?: number;
19
+ }
20
+ declare function BasePagination(props: BasePaginationProps): React.JSX.Element | null;
21
+
22
+ export { BasePagination, type BasePaginationProps };
@@ -0,0 +1,2 @@
1
+ import e from"react";import i from"classnames";import{composePaginationSteps as n}from"./utils.js";function t(e,i,n){return i in e?Object.defineProperty(e,i,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[i]=n,e}function a(t){var a,o,c,s,u;return t.hide?null:e.createElement("ul",{className:i("vchasno-ui-pagination",t.className)},e.createElement(r,{type:"prev",onClick:t.onPrevClick,isDisabled:null!==(a=t.isPrevDisabled)&&void 0!==a&&a,isHidden:null!==(o=t.hidePrev)&&void 0!==o&&o}),!t.simple&&n(null!==(c=t.total)&&void 0!==c?c:0,t.currentPage).map(function(i){return Array.isArray(i)?i[0]<t.currentPage?e.createElement(l,{key:"prev",isActive:!1,onClick:function(){var e;return null===(e=t.onPrevGapClick)||void 0===e?void 0:e.call(t)},text:"..."}):e.createElement(l,{key:"next",isActive:!1,onClick:function(){var e;return null===(e=t.onNextGapClick)||void 0===e?void 0:e.call(t)},text:"..."}):e.createElement(l,{key:i.toString(),isActive:i===t.currentPage,onClick:function(){var e;return null===(e=t.onPageChange)||void 0===e?void 0:e.call(t,i)},text:i.toString()})}),e.createElement(r,{type:"next",onClick:t.onNextClick,isDisabled:null!==(s=t.isNextDisabled)&&void 0!==s&&s,isHidden:null!==(u=t.hideNext)&&void 0!==u&&u}))}function r(n){var a;return e.createElement("li",{onClick:function(){return n.onClick()},className:i("vchasno-ui-pagination__item","vchasno-ui-pagination__item-arrow",(t(a={},"vchasno-ui-pagination__item-disabled",n.isDisabled),t(a,"vchasno-ui-pagination__item-hidden",n.isHidden),a))},e.createElement("svg",{style:"next"===n.type?{transform:"rotate(180deg)",transformOrigin:"center center"}:void 0,width:"20",height:"20",viewBox:"0 0 20 20",fill:"none",xmlns:"http://www.w3.org/2000/svg"},e.createElement("path",{d:"M7 9.99253C7 9.73253 7.1 9.48252 7.29 9.28253L11.29 5.29253C11.68 4.90253 12.32 4.90253 12.71 5.29253C13.1 5.68253 13.1 6.32253 12.71 6.71253L9.42 9.99253L12.71 13.2825C13.1 13.6725 13.1 14.3125 12.71 14.7025C12.32 15.0925 11.68 15.0925 11.29 14.7025L7.3 10.7125C7.1 10.5125 7 10.2525 7 9.99253Z",fill:"currentColor"})))}function l(n){return e.createElement("li",{onClick:n.onClick,key:n.key,className:i("vchasno-ui-pagination__item",t({},"vchasno-ui-pagination__item-active",n.isActive))},n.text)}export{a as BasePagination};
2
+ //# sourceMappingURL=BasePagination.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BasePagination.js","sources":["../../../src/components/Pagination/BasePagination.tsx"],"sourcesContent":["import React from 'react';\nimport cn from 'classnames';\nimport './Pagination.global.css';\nimport { composePaginationSteps } from './utils';\n\n\nexport interface BasePaginationProps {\n hide?: boolean;\n className?: string;\n currentPage: number;\n total?: number | null;\n onPageChange?: (page: number) => void;\n simple?: boolean;\n hideNext?: boolean;\n hidePrev?: boolean;\n onPrevGapClick?: () => void;\n onNextGapClick?: () => void;\n onPrevClick: () => void;\n onNextClick: () => void;\n isPrevDisabled?: boolean;\n isNextDisabled?: boolean;\n gapStep?: number;\n}\n\n\nexport function BasePagination(props: BasePaginationProps) {\n if (props.hide) {\n return null;\n }\n\n return (\n <ul className={cn('vchasno-ui-pagination', props.className)}>\n <PaginationArrowButton\n type=\"prev\"\n onClick={props.onPrevClick}\n isDisabled={props.isPrevDisabled ?? false}\n isHidden={props.hidePrev ?? false} />\n {!props.simple &&\n composePaginationSteps(props.total ?? 0, props.currentPage).map((item) => {\n if (Array.isArray(item)) {\n // Це три крапки між сторінками і стрілочками:\n // < 1 ... 5 6 7 ... 20 >\n // ^^^ ^^^\n if (item[0] < props.currentPage) {\n return <PaginationItem\n key='prev'\n isActive={false}\n onClick={() => props.onPrevGapClick?.()}\n text=\"...\" />;\n } else {\n return <PaginationItem\n key='next'\n isActive={false}\n onClick={() => props.onNextGapClick?.()}\n text=\"...\" />;\n }\n }\n return (\n <PaginationItem\n key={item.toString()}\n isActive={item === props.currentPage}\n onClick={() => props.onPageChange?.(item)}\n text={item.toString()} />\n );\n })}\n <PaginationArrowButton\n type=\"next\"\n onClick={props.onNextClick}\n isDisabled={props.isNextDisabled ?? false}\n isHidden={props.hideNext ?? false} />\n </ul>\n );\n}\n\n\nfunction PaginationArrowButton(props: {\n onClick: () => void;\n isDisabled: boolean;\n isHidden: boolean;\n type: \"prev\" | \"next\";\n}) {\n return (\n <li\n onClick={() => props.onClick()}\n className={cn('vchasno-ui-pagination__item', 'vchasno-ui-pagination__item-arrow', {\n ['vchasno-ui-pagination__item-disabled']: props.isDisabled,\n ['vchasno-ui-pagination__item-hidden']: props.isHidden,\n })}\n >\n <svg\n // Без стилів SVG зображує кнопку назад\n style={props.type === \"next\" ? { transform: 'rotate(180deg)', transformOrigin: 'center center' } : undefined}\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M7 9.99253C7 9.73253 7.1 9.48252 7.29 9.28253L11.29 5.29253C11.68 4.90253 12.32 4.90253 12.71 5.29253C13.1 5.68253 13.1 6.32253 12.71 6.71253L9.42 9.99253L12.71 13.2825C13.1 13.6725 13.1 14.3125 12.71 14.7025C12.32 15.0925 11.68 15.0925 11.29 14.7025L7.3 10.7125C7.1 10.5125 7 10.2525 7 9.99253Z\"\n fill=\"currentColor\" />\n </svg>\n </li>\n );\n}\n\n\nfunction PaginationItem(props: {\n key: string;\n isActive: boolean;\n text: string;\n onClick: () => void;\n}) {\n return (\n <li\n onClick={props.onClick}\n key={props.key}\n className={cn('vchasno-ui-pagination__item', {\n ['vchasno-ui-pagination__item-active']: props.isActive,\n })}\n >\n {props.text}\n </li>\n );\n}\n"],"names":["BasePagination","props","hide","React","ul","className","cn","PaginationArrowButton","type","onClick","onPrevClick","isDisabled","isPrevDisabled","isHidden","hidePrev","simple","composePaginationSteps","total","currentPage","map","item","Array","isArray","PaginationItem","key","isActive","onPrevGapClick","text","onNextGapClick","toString","onPageChange","onNextClick","isNextDisabled","hideNext","_obj","li","_define_property","svg","style","transform","transformOrigin","undefined","width","height","viewBox","fill","xmlns","path","d"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import n,{useState as e}from"react";import t from"classnames";import{composePaginationSteps as i}from"./utils.js";function r(n,e){(null==e||e>n.length)&&(e=n.length);for(var t=0,i=Array(e);t<e;t++)i[t]=n[t];return i}function a(n,e,t){return e in n?Object.defineProperty(n,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):n[e]=t,n}var o=function(o){var l,c,u,s=o.className,m=o.initPage,f=o.total,v=void 0===f?1:f,g=o.gapStep,h=void 0===g?5:g,p=o.hideOnSinglePage,d=o.onChange,y=o.current,C=o.scrollOnChange,_=void 0===C||C,w=o.hideArrows,b=void 0!==w&&w,E=o.simple,A=void 0!==E&&E,L=function(n){if(Array.isArray(n))return n}(l=e(y||(void 0===m?1:m)))||function(n,e){var t,i,r=null==n?null:"undefined"!=typeof Symbol&&n[Symbol.iterator]||n["@@iterator"];if(null!=r){var a=[],o=!0,l=!1;try{for(r=r.call(n);!(o=(t=r.next()).done)&&(a.push(t.value),2!==a.length);o=!0);}catch(n){l=!0,i=n}finally{try{o||null==r.return||r.return()}finally{if(l)throw i}}return a}}(l,2)||function(n,e){if(n){if("string"==typeof n)return r(n,2);var t=Object.prototype.toString.call(n).slice(8,-1);if("Object"===t&&n.constructor&&(t=n.constructor.name),"Map"===t||"Set"===t)return Array.from(t);if("Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t))return r(n,2)}}(l,2)||function(){throw TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}(),N=L[0],x=L[1],S=y||N,k=function(n){x(n),d&&d(n),_&&n!==N&&window.scrollTo(0,0)};return isNaN(v)?(console.error('Component "Pagination" received invalid "total" data'),null):p&&v<=1?null:n.createElement("ul",{className:t("vchasno-ui-pagination",s)},n.createElement("li",{onClick:function(){1!==S&&k(S<=1?1:S-1)},className:t("vchasno-ui-pagination__item","vchasno-ui-pagination__item-arrow",(a(c={},"vchasno-ui-pagination__item-disabled",1===S),a(c,"vchasno-ui-pagination__item-hidden",b&&!A),c))},n.createElement("svg",{width:"20",height:"20",viewBox:"0 0 20 20",fill:"none",xmlns:"http://www.w3.org/2000/svg"},n.createElement("path",{d:"M7 9.99253C7 9.73253 7.1 9.48252 7.29 9.28253L11.29 5.29253C11.68 4.90253 12.32 4.90253 12.71 5.29253C13.1 5.68253 13.1 6.32253 12.71 6.71253L9.42 9.99253L12.71 13.2825C13.1 13.6725 13.1 14.3125 12.71 14.7025C12.32 15.0925 11.68 15.0925 11.29 14.7025L7.3 10.7125C7.1 10.5125 7 10.2525 7 9.99253Z",fill:"currentColor"}))),!A&&i(v,S).map(function(e){if(Array.isArray(e)){var i=e[0]<S;return n.createElement("li",{key:i?"prev":"next",className:"vchasno-ui-pagination__item",onClick:function(){i?k(S-h<=0?1:S-h):k(S+h>=v?v:S+h)}},"...")}return n.createElement("li",{onClick:function(){return k(e)},key:e,className:t("vchasno-ui-pagination__item",a({},"vchasno-ui-pagination__item-active",e===S))},e)}),n.createElement("li",{onClick:function(){S!==v&&k(S>=v-1?v:S+1)},className:t("vchasno-ui-pagination__item","vchasno-ui-pagination__item-arrow",(a(u={},"vchasno-ui-pagination__item-disabled",S===v),a(u,"vchasno-ui-pagination__item-hidden",b&&!A),u))},n.createElement("svg",{style:{transform:"rotate(180deg)",transformOrigin:"center center"},width:"20",height:"20",viewBox:"0 0 20 20",fill:"none",xmlns:"http://www.w3.org/2000/svg"},n.createElement("path",{d:"M7 9.99253C7 9.73253 7.1 9.48252 7.29 9.28253L11.29 5.29253C11.68 4.90253 12.32 4.90253 12.71 5.29253C13.1 5.68253 13.1 6.32253 12.71 6.71253L9.42 9.99253L12.71 13.2825C13.1 13.6725 13.1 14.3125 12.71 14.7025C12.32 15.0925 11.68 15.0925 11.29 14.7025L7.3 10.7125C7.1 10.5125 7 10.2525 7 9.99253Z",fill:"currentColor"}))))};export{o as default};
1
+ import t,{useState as n}from"react";import{BasePagination as r}from"./BasePagination.js";function e(t,n){(null==n||n>t.length)&&(n=t.length);for(var r=0,e=Array(n);r<n;r++)e[r]=t[r];return e}var o=function(o){var i,a=o.className,l=o.initPage,c=o.total,u=void 0===c?1:c,s=o.gapStep,f=void 0===s?5:s,d=o.hideOnSinglePage,v=o.onChange,m=o.current,p=o.scrollOnChange,g=void 0===p||p,y=o.hideArrows,h=void 0!==y&&y,b=o.simple,P=void 0!==b&&b,C=function(t){if(Array.isArray(t))return t}(i=n(m||(void 0===l?1:l)))||function(t,n){var r,e,o=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=o){var i=[],a=!0,l=!1;try{for(o=o.call(t);!(a=(r=o.next()).done)&&(i.push(r.value),2!==i.length);a=!0);}catch(t){l=!0,e=t}finally{try{a||null==o.return||o.return()}finally{if(l)throw e}}return i}}(i,2)||function(t,n){if(t){if("string"==typeof t)return e(t,2);var r=Object.prototype.toString.call(t).slice(8,-1);if("Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r)return Array.from(r);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return e(t,2)}}(i,2)||function(){throw TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}(),N=C[0],A=C[1],S=m||N,x=function(t){A(t),v&&v(t),g&&t!==N&&window.scrollTo(0,0)};return isNaN(u)?(console.error('Component "Pagination" received invalid "total" data'),null):d&&u<=1?null:t.createElement(r,{className:a,currentPage:S,total:u,onPageChange:x,simple:P,hideNext:h&&!P,hidePrev:h&&!P,onPrevGapClick:function(){x(S-f<=0?1:S-f)},onNextGapClick:function(){x(S+f>=u?u:S+f)},onPrevClick:function(){1!==S&&x(S<=1?1:S-1)},onNextClick:function(){S!==u&&x(S>=u?u:S+1)},isPrevDisabled:1===S,isNextDisabled:S===u})};export{o as default};
2
2
  //# sourceMappingURL=Pagination.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Pagination.js","sources":["../../../src/components/Pagination/Pagination.tsx"],"sourcesContent":["import React, { useState } from 'react';\n\nimport cn from 'classnames';\n\nimport { composePaginationSteps } from './utils';\n\nimport './Pagination.global.css';\n\nexport interface PaginationProps {\n className?: string;\n initPage?: number;\n total?: number;\n hideOnSinglePage?: boolean;\n onChange?: (page: number) => void;\n current?: number;\n scrollOnChange?: boolean;\n gapStep?: number;\n hideArrows?: boolean;\n simple?: boolean;\n}\n\nconst Pagination: React.FC<PaginationProps> = ({\n className,\n initPage = 1,\n total = 1,\n gapStep = 5,\n hideOnSinglePage,\n onChange,\n current,\n scrollOnChange = true,\n hideArrows = false,\n simple = false,\n}) => {\n const [_currentPage, setCurrentPage] = useState(current || initPage);\n const currentPage = current || _currentPage;\n\n const setPage = (page: number) => {\n setCurrentPage(page);\n\n if (onChange) {\n onChange(page);\n }\n\n if (scrollOnChange && page !== _currentPage) {\n window.scrollTo(0, 0);\n }\n };\n\n if (isNaN(total)) {\n console.error('Component \"Pagination\" received invalid \"total\" data');\n return null;\n }\n\n if (hideOnSinglePage && total <= 1) {\n return null;\n }\n\n return (\n <ul className={cn('vchasno-ui-pagination', className)}>\n <li\n onClick={() => {\n if (currentPage !== 1) {\n setPage(currentPage <= 1 ? 1 : currentPage - 1);\n }\n }}\n className={cn('vchasno-ui-pagination__item', 'vchasno-ui-pagination__item-arrow', {\n ['vchasno-ui-pagination__item-disabled']: currentPage === 1,\n ['vchasno-ui-pagination__item-hidden']: hideArrows && !simple,\n })}\n >\n <svg\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M7 9.99253C7 9.73253 7.1 9.48252 7.29 9.28253L11.29 5.29253C11.68 4.90253 12.32 4.90253 12.71 5.29253C13.1 5.68253 13.1 6.32253 12.71 6.71253L9.42 9.99253L12.71 13.2825C13.1 13.6725 13.1 14.3125 12.71 14.7025C12.32 15.0925 11.68 15.0925 11.29 14.7025L7.3 10.7125C7.1 10.5125 7 10.2525 7 9.99253Z\"\n fill=\"currentColor\"\n />\n </svg>\n </li>\n {!simple &&\n composePaginationSteps(total, currentPage).map((item) => {\n if (Array.isArray(item)) {\n const isPrev = item[0] < currentPage;\n const handleClick = () => {\n if (isPrev) {\n setPage(currentPage - gapStep <= 0 ? 1 : currentPage - gapStep);\n } else {\n setPage(\n currentPage + gapStep >= total ? total : currentPage + gapStep,\n );\n }\n };\n return (\n <li\n key={isPrev ? 'prev' : 'next'}\n className=\"vchasno-ui-pagination__item\"\n onClick={handleClick}\n >\n ...\n </li>\n );\n }\n\n return (\n <li\n onClick={() => setPage(item)}\n key={item}\n className={cn('vchasno-ui-pagination__item', {\n ['vchasno-ui-pagination__item-active']: item === currentPage,\n })}\n >\n {item}\n </li>\n );\n })}\n <li\n onClick={() => {\n if (currentPage !== total) {\n setPage(currentPage >= total - 1 ? total : currentPage + 1);\n }\n }}\n className={cn('vchasno-ui-pagination__item', 'vchasno-ui-pagination__item-arrow', {\n ['vchasno-ui-pagination__item-disabled']: currentPage === total,\n ['vchasno-ui-pagination__item-hidden']: hideArrows && !simple,\n })}\n >\n <svg\n style={{ transform: 'rotate(180deg)', transformOrigin: 'center center' }}\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M7 9.99253C7 9.73253 7.1 9.48252 7.29 9.28253L11.29 5.29253C11.68 4.90253 12.32 4.90253 12.71 5.29253C13.1 5.68253 13.1 6.32253 12.71 6.71253L9.42 9.99253L12.71 13.2825C13.1 13.6725 13.1 14.3125 12.71 14.7025C12.32 15.0925 11.68 15.0925 11.29 14.7025L7.3 10.7125C7.1 10.5125 7 10.2525 7 9.99253Z\"\n fill=\"currentColor\"\n />\n </svg>\n </li>\n </ul>\n );\n};\n\nexport default Pagination;\n"],"names":["Pagination","param","_obj","_obj1","className","initPage","_param_total","total","undefined","_param_gapStep","gapStep","hideOnSinglePage","onChange","current","scrollOnChange","hideArrows","simple","_param_simple","useState","_param_initPage","_currentPage","setCurrentPage","currentPage","setPage","page","window","scrollTo","isNaN","console","error","React","ul","cn","li","onClick","_define_property","svg","width","height","viewBox","fill","xmlns","path","d","composePaginationSteps","map","item","Array","isArray","isPrev","key","style","transform","transformOrigin"],"mappings":"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"}
1
+ {"version":3,"file":"Pagination.js","sources":["../../../src/components/Pagination/Pagination.tsx"],"sourcesContent":["import React, { useState } from 'react';\n\nimport { BasePagination } from './BasePagination';\n\nimport './Pagination.global.css';\n\nexport interface PaginationProps {\n className?: string;\n initPage?: number;\n total?: number;\n hideOnSinglePage?: boolean;\n onChange?: (page: number) => void;\n current?: number;\n scrollOnChange?: boolean;\n gapStep?: number;\n hideArrows?: boolean;\n simple?: boolean;\n}\n\nconst Pagination: React.FC<PaginationProps> = ({\n className,\n initPage = 1,\n total = 1,\n gapStep = 5,\n hideOnSinglePage,\n onChange,\n current,\n scrollOnChange = true,\n hideArrows = false,\n simple = false,\n}) => {\n const [_currentPage, setCurrentPage] = useState(current || initPage);\n const currentPage = current || _currentPage;\n\n const setPage = (page: number) => {\n setCurrentPage(page);\n\n if (onChange) {\n onChange(page);\n }\n\n if (scrollOnChange && page !== _currentPage) {\n window.scrollTo(0, 0);\n }\n };\n\n if (isNaN(total)) {\n console.error('Component \"Pagination\" received invalid \"total\" data');\n return null;\n }\n\n if (hideOnSinglePage && total <= 1) {\n return null;\n }\n\n const handlePrevGapClick = () => {\n setPage(currentPage - gapStep <= 0 ? 1 : currentPage - gapStep);\n };\n\n const handleNextGapClick = () => {\n setPage(currentPage + gapStep >= total ? total : currentPage + gapStep);\n };\n\n const handlePrevClick = () => {\n if (currentPage !== 1) {\n setPage(currentPage <= 1 ? 1 : currentPage - 1);\n }\n };\n\n const handleNextClick = () => {\n if (currentPage !== total) {\n setPage(currentPage >= total ? total : currentPage + 1);\n }\n };\n\n return (\n <BasePagination\n className={className}\n currentPage={currentPage}\n total={total}\n onPageChange={setPage}\n simple={simple}\n hideNext={hideArrows && !simple}\n hidePrev={hideArrows && !simple}\n onPrevGapClick={handlePrevGapClick}\n onNextGapClick={handleNextGapClick}\n onPrevClick={handlePrevClick}\n onNextClick={handleNextClick}\n isPrevDisabled={currentPage === 1}\n isNextDisabled={currentPage === total}\n />\n );\n};\n\nexport default Pagination;\n"],"names":["Pagination","param","className","initPage","_param_total","total","undefined","_param_gapStep","gapStep","hideOnSinglePage","onChange","current","scrollOnChange","hideArrows","simple","_param_simple","useState","_param_initPage","_currentPage","setCurrentPage","currentPage","setPage","page","window","scrollTo","isNaN","console","error","React","BasePagination","onPageChange","hideNext","hidePrev","onPrevGapClick","onNextGapClick","onPrevClick","onNextClick","isPrevDisabled","isNextDisabled"],"mappings":"+LAmBA,IAAMA,EAAwC,SAAAC,CAAA,QAC1CC,EAAAA,EAAAA,SAAAA,CAAAA,EAAAA,EACAC,SAAWC,EAAAH,EACXI,MAAAA,EAAQD,AAAAE,KAAAA,IAAAF,EAAA,EAAAA,EAAAG,EAAAN,EACRO,OAAAA,CAAAA,EAAAA,AAAAA,KAAAA,IAAAA,EAAU,EACVC,EAAAA,EAAAA,EAAAA,iBACAC,EAAAA,EAAAA,QAAAA,CACAC,EAAAA,EAAAA,OAAAA,CAAAA,EAAAA,EACAC,cAAAA,CAAAA,EAAAA,AAAAA,KAAAA,IAAAA,SACAC,UAAAA,CAAAA,EAAAA,AAAAA,KAAAA,IAAAA,GACAC,EAAAA,EAAAA,EAAAA,MAAAA,CAAAA,EAASC,AAAAT,KAAAA,IAAAS,GAAAA,EAE8BC,8CAAAA,EAASL,GAVrCM,CAAAA,AAAAX,KAAAA,IAAAW,EAAA,EAAAA,CAAA,sMAUJC,oHAAAA,yDAAAA,0OAAAA,OAAAA,gLAAAA,EAAgCF,KAAlBG,EAAkBH,CAAAA,CAAAA,EAAAA,CACjCI,EAAcT,GAAWO,EAEzBG,EAAU,SAACC,CAAAA,EACbH,EAAeG,GAEXZ,GACAA,EAASY,GAGTV,GAAkBU,IAASJ,GAC3BK,OAAOC,QAAQ,CAAC,EAAG,EAE3B,SAEA,AAAIC,MAAMpB,IACNqB,QAAQC,KAAK,CAAC,wDACP,MAGPlB,GAAoBJ,GAAS,EACtB,KAwBPuB,EAACC,aAAAA,CAAAA,EAAAA,CACG3B,UAAWA,EACXkB,YAAaA,EACbf,MAAOA,EACPyB,aAAcT,EACdP,OAAQA,EACRiB,SAAUlB,GAAc,CAACC,EACzBkB,SAAUnB,GAAc,CAACC,EACzBmB,eA7BmB,WACvBZ,EAAQD,EAAcZ,GAAW,EAAI,EAAIY,EAAcZ,EAC3D,EA4BQ0B,eA1BmB,WACvBb,EAAQD,EAAcZ,GAAWH,EAAQA,EAAQe,EAAcZ,EACnE,EAyBQ2B,YAvBgB,WACA,IAAhBf,GACAC,EAAQD,GAAe,EAAI,EAAIA,EAAc,EAErD,EAoBQgB,YAlBgB,WAChBhB,IAAgBf,GAChBgB,EAAQD,GAAef,EAAQA,EAAQe,EAAc,EAE7D,EAeQiB,eAAgBjB,AAAgB,IAAhBA,EAChBkB,eAAgBlB,IAAgBf,GAG5C"}
package/dist/index.d.ts CHANGED
@@ -20,6 +20,7 @@ export { default as MenuButton, MenuButtonProps } from './components/MenuButton/
20
20
  export { default as MenuItem, MenuItemProps } from './components/MenuItem/MenuItem.js';
21
21
  export { default as MobileAppLinks, MobileAppLinksProps } from './components/MobileAppLinks/MobileAppLinks.js';
22
22
  export { default as Pagination, PaginationProps } from './components/Pagination/Pagination.js';
23
+ export { BasePagination, BasePaginationProps } from './components/Pagination/BasePagination.js';
23
24
  export { default as Paragraph, ParagraphProps } from './components/Paragraph/Paragraph.js';
24
25
  export { default as ProjectsPopover, ProjectsPopoverProps } from './components/ProjectsPopover/ProjectsPopover.js';
25
26
  export { default as PulseDot, PulseDotProps } from './components/PulseDot/PulseDot.js';
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
- export{default as BodyPortal}from"./components/BodyPortal/BodyPortal.js";export{default as ScrollableBox}from"./components/ScrollableBox/ScrollableBox.js";export{useElementScrollable}from"./components/ScrollableBox/useElementScrollable.js";export{default as FullScreenModal}from"./components/FullScreenModal/FullScreenModal.js";export{default as Alert}from"./components/Alert/Alert.js";export{default as BlackTooltip}from"./components/BlackTooltip/BlackTooltip.js";export{default as BubbleBox}from"./components/BubbleBox/BubbleBox.js";export{composeBubblePath}from"./components/BubbleBox/utils.js";export{default as Button}from"./components/Button/Button.js";export{default as Checkbox}from"./components/Checkbox/Checkbox.js";export{default as Datepicker}from"./components/Datepicker/DatePicker.js";export{default as FlexBox}from"./components/FlexBox/FlexBox.js";export{default as FollowUs}from"./components/FollowUs/FollowUs.js";export{default as Input}from"./components/Input/Input.js";export{default as InputMeta}from"./components/InputMeta/InputMeta.js";export{default as LabelText}from"./components/LabelText/LabelText.js";export{default as MaskInput}from"./components/MaskInput/MaskInput.js";export{default as Menu}from"./components/Menu/Menu.js";export{MenuButton}from"./components/MenuButton/MenuButton.js";export{MenuItem}from"./components/MenuItem/MenuItem.js";export{default as MobileAppLinks}from"./components/MobileAppLinks/MobileAppLinks.js";export{default as Pagination}from"./components/Pagination/Pagination.js";export{default as Paragraph}from"./components/Paragraph/Paragraph.js";export{default as ProjectsPopover}from"./components/ProjectsPopover/ProjectsPopover.js";export{default as PulseDot}from"./components/PulseDot/PulseDot.js";export{default as Select,SelectComponents}from"./components/Select/Select.js";export{default as SelectCreatable}from"./components/Select/SelectCreatable.js";export{default as AsyncSelect}from"./components/Select/AsyncSelect.js";export{default as Snackbar,snackbarToast}from"./components/Snackbar/Snackbar.js";export{default as Spinner}from"./components/Spinner/Spinner.js";export{default as SplashLogo}from"./components/SplashLogo/SplashLogo.js";export{default as SvgBorder}from"./components/SvgBorder/SvgBorder.js";export{composeRoundedBorderPath}from"./components/SvgBorder/utils.js";export{default as Switch}from"./components/Switch/Switch.js";export{default as Tabs}from"./components/Tabs/Tabs.js";export{default as Text}from"./components/Text/Text.js";export{default as TextAreaInput}from"./components/TextAreaInput/TextAreaInput.js";export{default as TextInput}from"./components/TextInput/TextInput.js";export{default as Title}from"./components/Title/Title.js";export{useClientRect}from"./hooks/useClientRect.js";export{default as PasswordInput}from"./components/PasswordInput/PasswordInput.js";export{default as Slider}from"./components/Slider/Slider.js";export{default as SnowEffect}from"./components/SnowEffect/SnowEffect.js";export{default as Breadcrumbs}from"./components/Breadcrumbs/Breadcrumbs.js";
1
+ export{default as BodyPortal}from"./components/BodyPortal/BodyPortal.js";export{default as ScrollableBox}from"./components/ScrollableBox/ScrollableBox.js";export{useElementScrollable}from"./components/ScrollableBox/useElementScrollable.js";export{default as FullScreenModal}from"./components/FullScreenModal/FullScreenModal.js";export{default as Alert}from"./components/Alert/Alert.js";export{default as BlackTooltip}from"./components/BlackTooltip/BlackTooltip.js";export{default as BubbleBox}from"./components/BubbleBox/BubbleBox.js";export{composeBubblePath}from"./components/BubbleBox/utils.js";export{default as Button}from"./components/Button/Button.js";export{default as Checkbox}from"./components/Checkbox/Checkbox.js";export{default as Datepicker}from"./components/Datepicker/DatePicker.js";export{default as FlexBox}from"./components/FlexBox/FlexBox.js";export{default as FollowUs}from"./components/FollowUs/FollowUs.js";export{default as Input}from"./components/Input/Input.js";export{default as InputMeta}from"./components/InputMeta/InputMeta.js";export{default as LabelText}from"./components/LabelText/LabelText.js";export{default as MaskInput}from"./components/MaskInput/MaskInput.js";export{default as Menu}from"./components/Menu/Menu.js";export{MenuButton}from"./components/MenuButton/MenuButton.js";export{MenuItem}from"./components/MenuItem/MenuItem.js";export{default as MobileAppLinks}from"./components/MobileAppLinks/MobileAppLinks.js";export{default as Pagination}from"./components/Pagination/Pagination.js";export{BasePagination}from"./components/Pagination/BasePagination.js";export{default as Paragraph}from"./components/Paragraph/Paragraph.js";export{default as ProjectsPopover}from"./components/ProjectsPopover/ProjectsPopover.js";export{default as PulseDot}from"./components/PulseDot/PulseDot.js";export{default as Select,SelectComponents}from"./components/Select/Select.js";export{default as SelectCreatable}from"./components/Select/SelectCreatable.js";export{default as AsyncSelect}from"./components/Select/AsyncSelect.js";export{default as Snackbar,snackbarToast}from"./components/Snackbar/Snackbar.js";export{default as Spinner}from"./components/Spinner/Spinner.js";export{default as SplashLogo}from"./components/SplashLogo/SplashLogo.js";export{default as SvgBorder}from"./components/SvgBorder/SvgBorder.js";export{composeRoundedBorderPath}from"./components/SvgBorder/utils.js";export{default as Switch}from"./components/Switch/Switch.js";export{default as Tabs}from"./components/Tabs/Tabs.js";export{default as Text}from"./components/Text/Text.js";export{default as TextAreaInput}from"./components/TextAreaInput/TextAreaInput.js";export{default as TextInput}from"./components/TextInput/TextInput.js";export{default as Title}from"./components/Title/Title.js";export{useClientRect}from"./hooks/useClientRect.js";export{default as PasswordInput}from"./components/PasswordInput/PasswordInput.js";export{default as Slider}from"./components/Slider/Slider.js";export{default as SnowEffect}from"./components/SnowEffect/SnowEffect.js";export{default as Breadcrumbs}from"./components/Breadcrumbs/Breadcrumbs.js";
2
2
  //# sourceMappingURL=index.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vchasno/ui-kit",
3
- "version": "0.4.71",
3
+ "version": "0.4.76",
4
4
  "description": "React UI components for Vchasno applications",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.js",