@fremtind/jokul 0.49.0 → 0.51.0
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/build/build-stats.html +1 -1
- package/build/cjs/components/nav-link/stories/NavLink.stories.cjs +2 -0
- package/build/cjs/components/nav-link/stories/NavLink.stories.cjs.map +1 -0
- package/build/cjs/components/nav-link/stories/NavLink.stories.d.cts +6 -0
- package/build/cjs/components/pagination/Pagination.cjs +1 -1
- package/build/cjs/components/pagination/Pagination.cjs.map +1 -1
- package/build/es/components/nav-link/stories/NavLink.stories.d.ts +6 -0
- package/build/es/components/nav-link/stories/NavLink.stories.js +2 -0
- package/build/es/components/nav-link/stories/NavLink.stories.js.map +1 -0
- package/build/es/components/pagination/Pagination.js +1 -1
- package/build/es/components/pagination/Pagination.js.map +1 -1
- package/build/style.css +1 -1
- package/package.json +2 -2
- package/styles/components/button/button.css +2 -2
- package/styles/components/button/button.min.css +1 -1
- package/styles/components/checkbox/checkbox.css +4 -4
- package/styles/components/checkbox/checkbox.min.css +1 -1
- package/styles/components/checkbox-panel/checkbox-panel.css +2 -2
- package/styles/components/checkbox-panel/checkbox-panel.min.css +1 -1
- package/styles/components/countdown/countdown.css +2 -2
- package/styles/components/countdown/countdown.min.css +1 -1
- package/styles/components/feedback/feedback.css +2 -2
- package/styles/components/feedback/feedback.min.css +1 -1
- package/styles/components/input-group/input-group.css +2 -2
- package/styles/components/input-group/input-group.min.css +1 -1
- package/styles/components/loader/loader.css +6 -6
- package/styles/components/loader/loader.min.css +1 -1
- package/styles/components/loader/skeleton-loader.css +5 -5
- package/styles/components/loader/skeleton-loader.min.css +1 -1
- package/styles/components/message/message.css +2 -2
- package/styles/components/message/message.min.css +1 -1
- package/styles/components/progress-bar/progress-bar.css +1 -1
- package/styles/components/progress-bar/progress-bar.min.css +1 -1
- package/styles/components/radio-button/radio-button.css +2 -2
- package/styles/components/radio-button/radio-button.min.css +1 -1
- package/styles/components/radio-panel/radio-panel.css +2 -2
- package/styles/components/radio-panel/radio-panel.min.css +1 -1
- package/styles/components/system-message/system-message.css +2 -2
- package/styles/components/system-message/system-message.min.css +1 -1
- package/styles/components/toast/toast.css +4 -4
- package/styles/components/toast/toast.min.css +1 -1
- package/styles/styles.css +38 -38
- package/styles/styles.min.css +1 -1
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e={title:"Komponenter/NavLink",component:require("../NavLink.cjs").NavLink,parameters:{layout:"centered"},tags:["autodocs"],argTypes:{href:{control:"text",defaultValue:"https://www.fremtind.no"}}};exports.NavLink={args:{children:"NavLink",href:"https://www.fremtind.no"}},exports.default=e;
|
|
2
|
+
//# sourceMappingURL=NavLink.stories.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NavLink.stories.cjs","sources":["../../../../../src/components/nav-link/stories/NavLink.stories.tsx"],"sourcesContent":["import { Meta, StoryObj } from \"@storybook/react\";\nimport { NavLink as NavLinkComponent } from \"../NavLink.js\";\nimport \"../styles/_index.scss\";\n\nconst meta: Meta = {\n title: \"Komponenter/NavLink\",\n component: NavLinkComponent,\n parameters: {\n layout: \"centered\",\n },\n tags: [\"autodocs\"],\n argTypes: {\n href: {\n control: \"text\",\n defaultValue: \"https://www.fremtind.no\",\n },\n },\n} satisfies Meta<typeof NavLinkComponent>;\n\nexport default meta;\n\ntype Story = StoryObj<typeof NavLinkComponent>;\n\nexport const NavLink: Story = {\n args: {\n children: \"NavLink\",\n href: \"https://www.fremtind.no\",\n },\n};\n"],"names":["meta","title","component","NavLink","parameters","layout","tags","argTypes","href","control","defaultValue","args","children"],"mappings":"kHAIMA,EAAa,CACfC,MAAO,sBACPC,oCAAWC,QACXC,WAAY,CACRC,OAAQ,YAEZC,KAAM,CAAC,YACPC,SAAU,CACNC,KAAM,CACFC,QAAS,OACTC,aAAc,6CASI,CAC1BC,KAAM,CACFC,SAAU,UACVJ,KAAM"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),n=require("
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),n=require("../../../clsx-E3yX_9sL.cjs"),t=require("react"),a=require("../icon/icons/ChevronLeftIcon.cjs"),i=require("../icon/icons/ChevronRightIcon.cjs"),o=require("../icon-button/IconButton.cjs"),s=require("./PageButton.cjs"),r=t.forwardRef((function({onPageChange:r,currentPage:c,numberOfPages:l,labels:u={previous:"Forrige side",next:"Neste side"},as:g,className:j,...x},d){t.useEffect((()=>{c<1&&console.error("[Pagination]: currentPage prop should be set to a value larger than 0"),c>l&&console.error("[Pagination]: currentPage prop should not be set to a value larger than numberOfPages")}),[c,l]);const h=g||"nav";if(l<=7)return e.jsxs(h,{ref:d,...x,className:n.clsx("jkl-pagination",j),children:[e.jsx(o.IconButton,{className:"jkl-pagination-button",title:u.previous,onClick:()=>r(c-1,c),"aria-disabled":1===c,tabIndex:1===c?-1:0,children:e.jsx(a.ChevronLeftIcon,{})}),e.jsx("ol",{className:"jkl-pagination__pages",children:Array.from({length:l}).map(((n,t)=>{const a=t+1;return e.jsx(s.PageButton,{isActive:c===a,number:a,total:l,onClick:()=>r(a,c)},t)}))}),e.jsx(o.IconButton,{className:"jkl-pagination-button",title:u.next,onClick:()=>r(c+1,c),"aria-disabled":c===l,tabIndex:c===l?-1:0,children:e.jsx(i.ChevronRightIcon,{})})]});const m=c>4,b=c<l-3,p=Math.min(Math.max(c-2,2),l-5),k=Math.min(p+1,l-4),v=Math.min(k+1,l-3),C=Math.min(k+2,l-2),P=Math.min(k+3,l-1);return e.jsxs(h,{ref:d,...x,className:"jkl-pagination",children:[e.jsx(o.IconButton,{className:"jkl-pagination-button",title:u.previous,onClick:()=>r(c-1,c),"aria-disabled":1===c,tabIndex:1===c?-1:0,children:e.jsx(a.ChevronLeftIcon,{})}),e.jsxs("ol",{className:"jkl-pagination__pages",children:[e.jsx(s.PageButton,{isActive:1===c,number:1,total:l,onClick:()=>r(1,c)}),m?e.jsx("span",{"aria-hidden":!0,className:"jkl-pagination-button--elipsis",children:"..."}):e.jsx(s.PageButton,{isActive:c===p,number:p,total:l,onClick:()=>r(p,c)}),e.jsx(s.PageButton,{isActive:c===k,number:k,total:l,onClick:()=>r(k,c)}),e.jsx(s.PageButton,{isActive:c===v,number:v,total:l,onClick:()=>r(v,c)}),e.jsx(s.PageButton,{isActive:c===C,number:C,total:l,onClick:()=>r(C,c)}),b?e.jsx("span",{"aria-hidden":!0,className:"jkl-pagination-button--elipsis",children:"..."}):e.jsx(s.PageButton,{isActive:c===P,number:P,total:l,onClick:()=>r(P,c)}),e.jsx(s.PageButton,{isActive:c===l,number:l,total:l,onClick:()=>r(l,c)})]}),e.jsx(o.IconButton,{className:"jkl-pagination-button",title:u.next,onClick:()=>r(c+1,c),"aria-disabled":c===l,tabIndex:c===l?-1:0,children:e.jsx(i.ChevronRightIcon,{})})]})}));exports.Pagination=r;
|
|
2
2
|
//# sourceMappingURL=Pagination.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Pagination.cjs","sources":["../../../../src/components/pagination/Pagination.tsx"],"sourcesContent":["import React, { useEffect } from \"react\";\nimport { PolymorphicRef } from \"../../utilities/polymorphism/polymorphism.js\";\nimport { ChevronLeftIcon } from \"../icon/icons/ChevronLeftIcon.js\";\nimport { ChevronRightIcon } from \"../icon/icons/ChevronRightIcon.js\";\nimport { IconButton } from \"../icon-button/IconButton.js\";\nimport { PageButton } from \"./PageButton.js\";\nimport { PaginationProps } from \"./types.js\";\n\ntype PaginationComponent = <ElementType extends React.ElementType = \"nav\">(\n props: PaginationProps<ElementType>,\n) => React.ReactElement | null;\n\nexport const Pagination = React.forwardRef(function Pagination<\n ElementType extends React.ElementType = \"nav\",\n>(\n {\n onPageChange,\n currentPage,\n numberOfPages,\n labels = {\n previous: \"Forrige side\",\n next: \"Neste side\",\n },\n as,\n ...rest\n }: PaginationProps<ElementType>,\n ref?: PolymorphicRef<ElementType>,\n) {\n useEffect(() => {\n if (currentPage < 1) {\n console.error(\n \"[Pagination]: currentPage prop should be set to a value larger than 0\",\n );\n }\n if (currentPage > numberOfPages) {\n console.error(\n \"[Pagination]: currentPage prop should not be set to a value larger than numberOfPages\",\n );\n }\n }, [currentPage, numberOfPages]);\n\n const Component = as || \"nav\";\n\n if (numberOfPages <= 7) {\n return (\n <Component ref={ref} {...rest} className=\"jkl-pagination\">\n <IconButton\n className=\"jkl-pagination-button\"\n title={labels.previous}\n onClick={() => onPageChange(currentPage - 1, currentPage)}\n aria-disabled={currentPage === 1}\n tabIndex={currentPage === 1 ? -1 : 0}\n >\n <ChevronLeftIcon />\n </IconButton>\n <ol className=\"jkl-pagination__pages\">\n {Array.from({ length: numberOfPages }).map((_, index) => {\n const page = index + 1;\n return (\n <PageButton\n key={index}\n isActive={currentPage === page}\n number={page}\n total={numberOfPages}\n onClick={() => onPageChange(page, currentPage)}\n />\n );\n })}\n </ol>\n <IconButton\n className=\"jkl-pagination-button\"\n title={labels.next}\n onClick={() => onPageChange(currentPage + 1, currentPage)}\n aria-disabled={currentPage === numberOfPages}\n tabIndex={currentPage === numberOfPages ? -1 : 0}\n >\n <ChevronRightIcon />\n </IconButton>\n </Component>\n );\n }\n\n const showStartEllipsis = currentPage > 4;\n const showEndEllipsis = currentPage < numberOfPages - 3;\n\n const startEllipsis = Math.min(\n Math.max(currentPage - 2, 2),\n numberOfPages - 5,\n );\n const centerPageNumberStart = Math.min(\n startEllipsis + 1,\n numberOfPages - 4,\n );\n const centerPageNumber = Math.min(\n centerPageNumberStart + 1,\n numberOfPages - 3,\n );\n const centerPageNumberEnd = Math.min(\n centerPageNumberStart + 2,\n numberOfPages - 2,\n );\n const endEllipsis = Math.min(centerPageNumberStart + 3, numberOfPages - 1);\n\n return (\n <Component ref={ref} {...rest} className=\"jkl-pagination\">\n <IconButton\n className=\"jkl-pagination-button\"\n title={labels.previous}\n onClick={() => onPageChange(currentPage - 1, currentPage)}\n aria-disabled={currentPage === 1}\n tabIndex={currentPage === 1 ? -1 : 0}\n >\n <ChevronLeftIcon />\n </IconButton>\n <ol className=\"jkl-pagination__pages\">\n <PageButton\n isActive={currentPage === 1}\n number={1}\n total={numberOfPages}\n onClick={() => onPageChange(1, currentPage)}\n />\n {showStartEllipsis ? (\n <span\n aria-hidden\n className=\"jkl-pagination-button--elipsis\"\n >\n {\"...\"}\n </span>\n ) : (\n <PageButton\n isActive={currentPage === startEllipsis}\n number={startEllipsis}\n total={numberOfPages}\n onClick={() => onPageChange(startEllipsis, currentPage)}\n />\n )}\n <PageButton\n isActive={currentPage === centerPageNumberStart}\n number={centerPageNumberStart}\n total={numberOfPages}\n onClick={() =>\n onPageChange(centerPageNumberStart, currentPage)\n }\n />\n <PageButton\n isActive={currentPage === centerPageNumber}\n number={centerPageNumber}\n total={numberOfPages}\n onClick={() => onPageChange(centerPageNumber, currentPage)}\n />\n <PageButton\n isActive={currentPage === centerPageNumberEnd}\n number={centerPageNumberEnd}\n total={numberOfPages}\n onClick={() =>\n onPageChange(centerPageNumberEnd, currentPage)\n }\n />\n {showEndEllipsis ? (\n <span\n aria-hidden\n className=\"jkl-pagination-button--elipsis\"\n >\n {\"...\"}\n </span>\n ) : (\n <PageButton\n isActive={currentPage === endEllipsis}\n number={endEllipsis}\n total={numberOfPages}\n onClick={() => onPageChange(endEllipsis, currentPage)}\n />\n )}\n <PageButton\n isActive={currentPage === numberOfPages}\n number={numberOfPages}\n total={numberOfPages}\n onClick={() => onPageChange(numberOfPages, currentPage)}\n />\n </ol>\n <IconButton\n className=\"jkl-pagination-button\"\n title={labels.next}\n onClick={() => onPageChange(currentPage + 1, currentPage)}\n aria-disabled={currentPage === numberOfPages}\n tabIndex={currentPage === numberOfPages ? -1 : 0}\n >\n <ChevronRightIcon />\n </IconButton>\n </Component>\n );\n}) as PaginationComponent;\n"],"names":["Pagination","React","forwardRef","onPageChange","currentPage","numberOfPages","labels","previous","next","as","rest","ref","useEffect","console","error","Component","className","children","jsx","IconButton","title","onClick","tabIndex","ChevronLeftIcon","from","length","map","_","index","page","PageButton","isActive","number","total","ChevronRightIcon","showStartEllipsis","showEndEllipsis","startEllipsis","Math","min","max","centerPageNumberStart","centerPageNumber","centerPageNumberEnd","endEllipsis","jsxs"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Pagination.cjs","sources":["../../../../src/components/pagination/Pagination.tsx"],"sourcesContent":["import clsx from \"clsx\";\nimport React, { useEffect } from \"react\";\nimport { PolymorphicRef } from \"../../utilities/polymorphism/polymorphism.js\";\nimport { ChevronLeftIcon } from \"../icon/icons/ChevronLeftIcon.js\";\nimport { ChevronRightIcon } from \"../icon/icons/ChevronRightIcon.js\";\nimport { IconButton } from \"../icon-button/IconButton.js\";\nimport { PageButton } from \"./PageButton.js\";\nimport { PaginationProps } from \"./types.js\";\n\ntype PaginationComponent = <ElementType extends React.ElementType = \"nav\">(\n props: PaginationProps<ElementType>,\n) => React.ReactElement | null;\n\nexport const Pagination = React.forwardRef(function Pagination<\n ElementType extends React.ElementType = \"nav\",\n>(\n {\n onPageChange,\n currentPage,\n numberOfPages,\n labels = {\n previous: \"Forrige side\",\n next: \"Neste side\",\n },\n as,\n className,\n ...rest\n }: PaginationProps<ElementType>,\n ref?: PolymorphicRef<ElementType>,\n) {\n useEffect(() => {\n if (currentPage < 1) {\n console.error(\n \"[Pagination]: currentPage prop should be set to a value larger than 0\",\n );\n }\n if (currentPage > numberOfPages) {\n console.error(\n \"[Pagination]: currentPage prop should not be set to a value larger than numberOfPages\",\n );\n }\n }, [currentPage, numberOfPages]);\n\n const Component = as || \"nav\";\n\n if (numberOfPages <= 7) {\n return (\n <Component\n ref={ref}\n {...rest}\n className={clsx(\"jkl-pagination\", className)}\n >\n <IconButton\n className=\"jkl-pagination-button\"\n title={labels.previous}\n onClick={() => onPageChange(currentPage - 1, currentPage)}\n aria-disabled={currentPage === 1}\n tabIndex={currentPage === 1 ? -1 : 0}\n >\n <ChevronLeftIcon />\n </IconButton>\n <ol className=\"jkl-pagination__pages\">\n {Array.from({ length: numberOfPages }).map((_, index) => {\n const page = index + 1;\n return (\n <PageButton\n key={index}\n isActive={currentPage === page}\n number={page}\n total={numberOfPages}\n onClick={() => onPageChange(page, currentPage)}\n />\n );\n })}\n </ol>\n <IconButton\n className=\"jkl-pagination-button\"\n title={labels.next}\n onClick={() => onPageChange(currentPage + 1, currentPage)}\n aria-disabled={currentPage === numberOfPages}\n tabIndex={currentPage === numberOfPages ? -1 : 0}\n >\n <ChevronRightIcon />\n </IconButton>\n </Component>\n );\n }\n\n const showStartEllipsis = currentPage > 4;\n const showEndEllipsis = currentPage < numberOfPages - 3;\n\n const startEllipsis = Math.min(\n Math.max(currentPage - 2, 2),\n numberOfPages - 5,\n );\n const centerPageNumberStart = Math.min(\n startEllipsis + 1,\n numberOfPages - 4,\n );\n const centerPageNumber = Math.min(\n centerPageNumberStart + 1,\n numberOfPages - 3,\n );\n const centerPageNumberEnd = Math.min(\n centerPageNumberStart + 2,\n numberOfPages - 2,\n );\n const endEllipsis = Math.min(centerPageNumberStart + 3, numberOfPages - 1);\n\n return (\n <Component ref={ref} {...rest} className=\"jkl-pagination\">\n <IconButton\n className=\"jkl-pagination-button\"\n title={labels.previous}\n onClick={() => onPageChange(currentPage - 1, currentPage)}\n aria-disabled={currentPage === 1}\n tabIndex={currentPage === 1 ? -1 : 0}\n >\n <ChevronLeftIcon />\n </IconButton>\n <ol className=\"jkl-pagination__pages\">\n <PageButton\n isActive={currentPage === 1}\n number={1}\n total={numberOfPages}\n onClick={() => onPageChange(1, currentPage)}\n />\n {showStartEllipsis ? (\n <span\n aria-hidden\n className=\"jkl-pagination-button--elipsis\"\n >\n {\"...\"}\n </span>\n ) : (\n <PageButton\n isActive={currentPage === startEllipsis}\n number={startEllipsis}\n total={numberOfPages}\n onClick={() => onPageChange(startEllipsis, currentPage)}\n />\n )}\n <PageButton\n isActive={currentPage === centerPageNumberStart}\n number={centerPageNumberStart}\n total={numberOfPages}\n onClick={() =>\n onPageChange(centerPageNumberStart, currentPage)\n }\n />\n <PageButton\n isActive={currentPage === centerPageNumber}\n number={centerPageNumber}\n total={numberOfPages}\n onClick={() => onPageChange(centerPageNumber, currentPage)}\n />\n <PageButton\n isActive={currentPage === centerPageNumberEnd}\n number={centerPageNumberEnd}\n total={numberOfPages}\n onClick={() =>\n onPageChange(centerPageNumberEnd, currentPage)\n }\n />\n {showEndEllipsis ? (\n <span\n aria-hidden\n className=\"jkl-pagination-button--elipsis\"\n >\n {\"...\"}\n </span>\n ) : (\n <PageButton\n isActive={currentPage === endEllipsis}\n number={endEllipsis}\n total={numberOfPages}\n onClick={() => onPageChange(endEllipsis, currentPage)}\n />\n )}\n <PageButton\n isActive={currentPage === numberOfPages}\n number={numberOfPages}\n total={numberOfPages}\n onClick={() => onPageChange(numberOfPages, currentPage)}\n />\n </ol>\n <IconButton\n className=\"jkl-pagination-button\"\n title={labels.next}\n onClick={() => onPageChange(currentPage + 1, currentPage)}\n aria-disabled={currentPage === numberOfPages}\n tabIndex={currentPage === numberOfPages ? -1 : 0}\n >\n <ChevronRightIcon />\n </IconButton>\n </Component>\n );\n}) as PaginationComponent;\n"],"names":["Pagination","React","forwardRef","onPageChange","currentPage","numberOfPages","labels","previous","next","as","className","rest","ref","useEffect","console","error","Component","jsxs","clsx","children","jsx","IconButton","title","onClick","tabIndex","ChevronLeftIcon","from","length","map","_","index","page","PageButton","isActive","number","total","ChevronRightIcon","showStartEllipsis","showEndEllipsis","startEllipsis","Math","min","max","centerPageNumberStart","centerPageNumber","centerPageNumberEnd","endEllipsis"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{NavLink as t}from"../NavLink.js";const e={title:"Komponenter/NavLink",component:t,parameters:{layout:"centered"},tags:["autodocs"],argTypes:{href:{control:"text",defaultValue:"https://www.fremtind.no"}}},a={args:{children:"NavLink",href:"https://www.fremtind.no"}};export{a as NavLink,e as default};
|
|
2
|
+
//# sourceMappingURL=NavLink.stories.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NavLink.stories.js","sources":["../../../../../src/components/nav-link/stories/NavLink.stories.tsx"],"sourcesContent":["import { Meta, StoryObj } from \"@storybook/react\";\nimport { NavLink as NavLinkComponent } from \"../NavLink.js\";\nimport \"../styles/_index.scss\";\n\nconst meta: Meta = {\n title: \"Komponenter/NavLink\",\n component: NavLinkComponent,\n parameters: {\n layout: \"centered\",\n },\n tags: [\"autodocs\"],\n argTypes: {\n href: {\n control: \"text\",\n defaultValue: \"https://www.fremtind.no\",\n },\n },\n} satisfies Meta<typeof NavLinkComponent>;\n\nexport default meta;\n\ntype Story = StoryObj<typeof NavLinkComponent>;\n\nexport const NavLink: Story = {\n args: {\n children: \"NavLink\",\n href: \"https://www.fremtind.no\",\n },\n};\n"],"names":["meta","title","component","NavLinkComponent","parameters","layout","tags","argTypes","href","control","defaultValue","NavLink","args","children"],"mappings":"wCAIA,MAAMA,EAAa,CACfC,MAAO,sBACPC,UAAWC,EACXC,WAAY,CACRC,OAAQ,YAEZC,KAAM,CAAC,YACPC,SAAU,CACNC,KAAM,CACFC,QAAS,OACTC,aAAc,6BASbC,EAAiB,CAC1BC,KAAM,CACFC,SAAU,UACVL,KAAM"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsxs as n,jsx as a}from"react/jsx-runtime";import t,{useEffect as
|
|
1
|
+
import{jsxs as n,jsx as a}from"react/jsx-runtime";import{c as t}from"../../../clsx-BeLtu-UY.js";import e,{useEffect as i}from"react";import{ChevronLeftIcon as o}from"../icon/icons/ChevronLeftIcon.js";import{ChevronRightIcon as r}from"../icon/icons/ChevronRightIcon.js";import{IconButton as s}from"../icon-button/IconButton.js";import{PageButton as l}from"./PageButton.js";const c=e.forwardRef((function({onPageChange:e,currentPage:c,numberOfPages:m,labels:u={previous:"Forrige side",next:"Neste side"},as:p,className:d,...g},h){i((()=>{c<1&&console.error("[Pagination]: currentPage prop should be set to a value larger than 0"),c>m&&console.error("[Pagination]: currentPage prop should not be set to a value larger than numberOfPages")}),[c,m]);const b=p||"nav";if(m<=7)return n(b,{ref:h,...g,className:t("jkl-pagination",d),children:[a(s,{className:"jkl-pagination-button",title:u.previous,onClick:()=>e(c-1,c),"aria-disabled":1===c,tabIndex:1===c?-1:0,children:a(o,{})}),a("ol",{className:"jkl-pagination__pages",children:Array.from({length:m}).map(((n,t)=>{const i=t+1;return a(l,{isActive:c===i,number:i,total:m,onClick:()=>e(i,c)},t)}))}),a(s,{className:"jkl-pagination-button",title:u.next,onClick:()=>e(c+1,c),"aria-disabled":c===m,tabIndex:c===m?-1:0,children:a(r,{})})]});const k=c>4,f=c<m-3,j=Math.min(Math.max(c-2,2),m-5),v=Math.min(j+1,m-4),C=Math.min(v+1,m-3),x=Math.min(v+2,m-2),N=Math.min(v+3,m-1);return n(b,{ref:h,...g,className:"jkl-pagination",children:[a(s,{className:"jkl-pagination-button",title:u.previous,onClick:()=>e(c-1,c),"aria-disabled":1===c,tabIndex:1===c?-1:0,children:a(o,{})}),n("ol",{className:"jkl-pagination__pages",children:[a(l,{isActive:1===c,number:1,total:m,onClick:()=>e(1,c)}),k?a("span",{"aria-hidden":!0,className:"jkl-pagination-button--elipsis",children:"..."}):a(l,{isActive:c===j,number:j,total:m,onClick:()=>e(j,c)}),a(l,{isActive:c===v,number:v,total:m,onClick:()=>e(v,c)}),a(l,{isActive:c===C,number:C,total:m,onClick:()=>e(C,c)}),a(l,{isActive:c===x,number:x,total:m,onClick:()=>e(x,c)}),f?a("span",{"aria-hidden":!0,className:"jkl-pagination-button--elipsis",children:"..."}):a(l,{isActive:c===N,number:N,total:m,onClick:()=>e(N,c)}),a(l,{isActive:c===m,number:m,total:m,onClick:()=>e(m,c)})]}),a(s,{className:"jkl-pagination-button",title:u.next,onClick:()=>e(c+1,c),"aria-disabled":c===m,tabIndex:c===m?-1:0,children:a(r,{})})]})}));export{c as Pagination};
|
|
2
2
|
//# sourceMappingURL=Pagination.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Pagination.js","sources":["../../../../src/components/pagination/Pagination.tsx"],"sourcesContent":["import React, { useEffect } from \"react\";\nimport { PolymorphicRef } from \"../../utilities/polymorphism/polymorphism.js\";\nimport { ChevronLeftIcon } from \"../icon/icons/ChevronLeftIcon.js\";\nimport { ChevronRightIcon } from \"../icon/icons/ChevronRightIcon.js\";\nimport { IconButton } from \"../icon-button/IconButton.js\";\nimport { PageButton } from \"./PageButton.js\";\nimport { PaginationProps } from \"./types.js\";\n\ntype PaginationComponent = <ElementType extends React.ElementType = \"nav\">(\n props: PaginationProps<ElementType>,\n) => React.ReactElement | null;\n\nexport const Pagination = React.forwardRef(function Pagination<\n ElementType extends React.ElementType = \"nav\",\n>(\n {\n onPageChange,\n currentPage,\n numberOfPages,\n labels = {\n previous: \"Forrige side\",\n next: \"Neste side\",\n },\n as,\n ...rest\n }: PaginationProps<ElementType>,\n ref?: PolymorphicRef<ElementType>,\n) {\n useEffect(() => {\n if (currentPage < 1) {\n console.error(\n \"[Pagination]: currentPage prop should be set to a value larger than 0\",\n );\n }\n if (currentPage > numberOfPages) {\n console.error(\n \"[Pagination]: currentPage prop should not be set to a value larger than numberOfPages\",\n );\n }\n }, [currentPage, numberOfPages]);\n\n const Component = as || \"nav\";\n\n if (numberOfPages <= 7) {\n return (\n <Component ref={ref} {...rest} className=\"jkl-pagination\">\n <IconButton\n className=\"jkl-pagination-button\"\n title={labels.previous}\n onClick={() => onPageChange(currentPage - 1, currentPage)}\n aria-disabled={currentPage === 1}\n tabIndex={currentPage === 1 ? -1 : 0}\n >\n <ChevronLeftIcon />\n </IconButton>\n <ol className=\"jkl-pagination__pages\">\n {Array.from({ length: numberOfPages }).map((_, index) => {\n const page = index + 1;\n return (\n <PageButton\n key={index}\n isActive={currentPage === page}\n number={page}\n total={numberOfPages}\n onClick={() => onPageChange(page, currentPage)}\n />\n );\n })}\n </ol>\n <IconButton\n className=\"jkl-pagination-button\"\n title={labels.next}\n onClick={() => onPageChange(currentPage + 1, currentPage)}\n aria-disabled={currentPage === numberOfPages}\n tabIndex={currentPage === numberOfPages ? -1 : 0}\n >\n <ChevronRightIcon />\n </IconButton>\n </Component>\n );\n }\n\n const showStartEllipsis = currentPage > 4;\n const showEndEllipsis = currentPage < numberOfPages - 3;\n\n const startEllipsis = Math.min(\n Math.max(currentPage - 2, 2),\n numberOfPages - 5,\n );\n const centerPageNumberStart = Math.min(\n startEllipsis + 1,\n numberOfPages - 4,\n );\n const centerPageNumber = Math.min(\n centerPageNumberStart + 1,\n numberOfPages - 3,\n );\n const centerPageNumberEnd = Math.min(\n centerPageNumberStart + 2,\n numberOfPages - 2,\n );\n const endEllipsis = Math.min(centerPageNumberStart + 3, numberOfPages - 1);\n\n return (\n <Component ref={ref} {...rest} className=\"jkl-pagination\">\n <IconButton\n className=\"jkl-pagination-button\"\n title={labels.previous}\n onClick={() => onPageChange(currentPage - 1, currentPage)}\n aria-disabled={currentPage === 1}\n tabIndex={currentPage === 1 ? -1 : 0}\n >\n <ChevronLeftIcon />\n </IconButton>\n <ol className=\"jkl-pagination__pages\">\n <PageButton\n isActive={currentPage === 1}\n number={1}\n total={numberOfPages}\n onClick={() => onPageChange(1, currentPage)}\n />\n {showStartEllipsis ? (\n <span\n aria-hidden\n className=\"jkl-pagination-button--elipsis\"\n >\n {\"...\"}\n </span>\n ) : (\n <PageButton\n isActive={currentPage === startEllipsis}\n number={startEllipsis}\n total={numberOfPages}\n onClick={() => onPageChange(startEllipsis, currentPage)}\n />\n )}\n <PageButton\n isActive={currentPage === centerPageNumberStart}\n number={centerPageNumberStart}\n total={numberOfPages}\n onClick={() =>\n onPageChange(centerPageNumberStart, currentPage)\n }\n />\n <PageButton\n isActive={currentPage === centerPageNumber}\n number={centerPageNumber}\n total={numberOfPages}\n onClick={() => onPageChange(centerPageNumber, currentPage)}\n />\n <PageButton\n isActive={currentPage === centerPageNumberEnd}\n number={centerPageNumberEnd}\n total={numberOfPages}\n onClick={() =>\n onPageChange(centerPageNumberEnd, currentPage)\n }\n />\n {showEndEllipsis ? (\n <span\n aria-hidden\n className=\"jkl-pagination-button--elipsis\"\n >\n {\"...\"}\n </span>\n ) : (\n <PageButton\n isActive={currentPage === endEllipsis}\n number={endEllipsis}\n total={numberOfPages}\n onClick={() => onPageChange(endEllipsis, currentPage)}\n />\n )}\n <PageButton\n isActive={currentPage === numberOfPages}\n number={numberOfPages}\n total={numberOfPages}\n onClick={() => onPageChange(numberOfPages, currentPage)}\n />\n </ol>\n <IconButton\n className=\"jkl-pagination-button\"\n title={labels.next}\n onClick={() => onPageChange(currentPage + 1, currentPage)}\n aria-disabled={currentPage === numberOfPages}\n tabIndex={currentPage === numberOfPages ? -1 : 0}\n >\n <ChevronRightIcon />\n </IconButton>\n </Component>\n );\n}) as PaginationComponent;\n"],"names":["Pagination","React","forwardRef","onPageChange","currentPage","numberOfPages","labels","previous","next","as","rest","ref","useEffect","console","error","Component","className","children","jsx","IconButton","title","onClick","tabIndex","ChevronLeftIcon","from","length","map","_","index","page","PageButton","isActive","number","total","ChevronRightIcon","showStartEllipsis","showEndEllipsis","startEllipsis","Math","min","max","centerPageNumberStart","centerPageNumber","centerPageNumberEnd","endEllipsis","jsxs"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Pagination.js","sources":["../../../../src/components/pagination/Pagination.tsx"],"sourcesContent":["import clsx from \"clsx\";\nimport React, { useEffect } from \"react\";\nimport { PolymorphicRef } from \"../../utilities/polymorphism/polymorphism.js\";\nimport { ChevronLeftIcon } from \"../icon/icons/ChevronLeftIcon.js\";\nimport { ChevronRightIcon } from \"../icon/icons/ChevronRightIcon.js\";\nimport { IconButton } from \"../icon-button/IconButton.js\";\nimport { PageButton } from \"./PageButton.js\";\nimport { PaginationProps } from \"./types.js\";\n\ntype PaginationComponent = <ElementType extends React.ElementType = \"nav\">(\n props: PaginationProps<ElementType>,\n) => React.ReactElement | null;\n\nexport const Pagination = React.forwardRef(function Pagination<\n ElementType extends React.ElementType = \"nav\",\n>(\n {\n onPageChange,\n currentPage,\n numberOfPages,\n labels = {\n previous: \"Forrige side\",\n next: \"Neste side\",\n },\n as,\n className,\n ...rest\n }: PaginationProps<ElementType>,\n ref?: PolymorphicRef<ElementType>,\n) {\n useEffect(() => {\n if (currentPage < 1) {\n console.error(\n \"[Pagination]: currentPage prop should be set to a value larger than 0\",\n );\n }\n if (currentPage > numberOfPages) {\n console.error(\n \"[Pagination]: currentPage prop should not be set to a value larger than numberOfPages\",\n );\n }\n }, [currentPage, numberOfPages]);\n\n const Component = as || \"nav\";\n\n if (numberOfPages <= 7) {\n return (\n <Component\n ref={ref}\n {...rest}\n className={clsx(\"jkl-pagination\", className)}\n >\n <IconButton\n className=\"jkl-pagination-button\"\n title={labels.previous}\n onClick={() => onPageChange(currentPage - 1, currentPage)}\n aria-disabled={currentPage === 1}\n tabIndex={currentPage === 1 ? -1 : 0}\n >\n <ChevronLeftIcon />\n </IconButton>\n <ol className=\"jkl-pagination__pages\">\n {Array.from({ length: numberOfPages }).map((_, index) => {\n const page = index + 1;\n return (\n <PageButton\n key={index}\n isActive={currentPage === page}\n number={page}\n total={numberOfPages}\n onClick={() => onPageChange(page, currentPage)}\n />\n );\n })}\n </ol>\n <IconButton\n className=\"jkl-pagination-button\"\n title={labels.next}\n onClick={() => onPageChange(currentPage + 1, currentPage)}\n aria-disabled={currentPage === numberOfPages}\n tabIndex={currentPage === numberOfPages ? -1 : 0}\n >\n <ChevronRightIcon />\n </IconButton>\n </Component>\n );\n }\n\n const showStartEllipsis = currentPage > 4;\n const showEndEllipsis = currentPage < numberOfPages - 3;\n\n const startEllipsis = Math.min(\n Math.max(currentPage - 2, 2),\n numberOfPages - 5,\n );\n const centerPageNumberStart = Math.min(\n startEllipsis + 1,\n numberOfPages - 4,\n );\n const centerPageNumber = Math.min(\n centerPageNumberStart + 1,\n numberOfPages - 3,\n );\n const centerPageNumberEnd = Math.min(\n centerPageNumberStart + 2,\n numberOfPages - 2,\n );\n const endEllipsis = Math.min(centerPageNumberStart + 3, numberOfPages - 1);\n\n return (\n <Component ref={ref} {...rest} className=\"jkl-pagination\">\n <IconButton\n className=\"jkl-pagination-button\"\n title={labels.previous}\n onClick={() => onPageChange(currentPage - 1, currentPage)}\n aria-disabled={currentPage === 1}\n tabIndex={currentPage === 1 ? -1 : 0}\n >\n <ChevronLeftIcon />\n </IconButton>\n <ol className=\"jkl-pagination__pages\">\n <PageButton\n isActive={currentPage === 1}\n number={1}\n total={numberOfPages}\n onClick={() => onPageChange(1, currentPage)}\n />\n {showStartEllipsis ? (\n <span\n aria-hidden\n className=\"jkl-pagination-button--elipsis\"\n >\n {\"...\"}\n </span>\n ) : (\n <PageButton\n isActive={currentPage === startEllipsis}\n number={startEllipsis}\n total={numberOfPages}\n onClick={() => onPageChange(startEllipsis, currentPage)}\n />\n )}\n <PageButton\n isActive={currentPage === centerPageNumberStart}\n number={centerPageNumberStart}\n total={numberOfPages}\n onClick={() =>\n onPageChange(centerPageNumberStart, currentPage)\n }\n />\n <PageButton\n isActive={currentPage === centerPageNumber}\n number={centerPageNumber}\n total={numberOfPages}\n onClick={() => onPageChange(centerPageNumber, currentPage)}\n />\n <PageButton\n isActive={currentPage === centerPageNumberEnd}\n number={centerPageNumberEnd}\n total={numberOfPages}\n onClick={() =>\n onPageChange(centerPageNumberEnd, currentPage)\n }\n />\n {showEndEllipsis ? (\n <span\n aria-hidden\n className=\"jkl-pagination-button--elipsis\"\n >\n {\"...\"}\n </span>\n ) : (\n <PageButton\n isActive={currentPage === endEllipsis}\n number={endEllipsis}\n total={numberOfPages}\n onClick={() => onPageChange(endEllipsis, currentPage)}\n />\n )}\n <PageButton\n isActive={currentPage === numberOfPages}\n number={numberOfPages}\n total={numberOfPages}\n onClick={() => onPageChange(numberOfPages, currentPage)}\n />\n </ol>\n <IconButton\n className=\"jkl-pagination-button\"\n title={labels.next}\n onClick={() => onPageChange(currentPage + 1, currentPage)}\n aria-disabled={currentPage === numberOfPages}\n tabIndex={currentPage === numberOfPages ? -1 : 0}\n >\n <ChevronRightIcon />\n </IconButton>\n </Component>\n );\n}) as PaginationComponent;\n"],"names":["Pagination","React","forwardRef","onPageChange","currentPage","numberOfPages","labels","previous","next","as","className","rest","ref","useEffect","console","error","Component","jsxs","clsx","children","jsx","IconButton","title","onClick","tabIndex","ChevronLeftIcon","from","length","map","_","index","page","PageButton","isActive","number","total","ChevronRightIcon","showStartEllipsis","showEndEllipsis","startEllipsis","Math","min","max","centerPageNumberStart","centerPageNumber","centerPageNumberEnd","endEllipsis"],"mappings":"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"}
|