@fremtind/jokul 5.2.3 → 6.0.0-next.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/README.md +1 -1
- package/build/build-stats.html +1 -1
- package/build/cjs/components/file/File.cjs +1 -1
- package/build/cjs/components/file/File.cjs.map +1 -1
- package/build/cjs/components/file/types.d.cts +10 -1
- package/build/cjs/hooks/index.cjs +1 -1
- package/build/cjs/hooks/index.d.cts +0 -1
- package/build/cjs/utilities/formatters/index.cjs +1 -1
- package/build/cjs/utilities/formatters/index.d.cts +1 -1
- package/build/cjs/utilities/formatters/util/registerWithMask.cjs +1 -1
- package/build/cjs/utilities/formatters/util/registerWithMask.cjs.map +1 -1
- package/build/cjs/utilities/formatters/util/registerWithMask.d.cts +0 -8
- package/build/cjs/utilities/index.cjs +1 -1
- package/build/cjs/utilities/validators/index.cjs +1 -1
- package/build/cjs/utilities/validators/index.d.cts +0 -1
- package/build/es/components/file/File.js +1 -1
- package/build/es/components/file/File.js.map +1 -1
- package/build/es/components/file/types.d.ts +10 -1
- package/build/es/hooks/index.d.ts +0 -1
- package/build/es/hooks/index.js +1 -1
- package/build/es/utilities/formatters/index.d.ts +1 -1
- package/build/es/utilities/formatters/index.js +1 -1
- package/build/es/utilities/formatters/util/registerWithMask.d.ts +0 -8
- package/build/es/utilities/formatters/util/registerWithMask.js +1 -1
- package/build/es/utilities/formatters/util/registerWithMask.js.map +1 -1
- package/build/es/utilities/index.js +1 -1
- package/build/es/utilities/validators/index.d.ts +0 -1
- package/build/es/utilities/validators/index.js +1 -1
- package/codemods/CODEMODS.md +16 -0
- package/codemods/__tests__/import-paths.test.mjs +43 -0
- package/codemods/import-paths.mjs +8 -2
- package/codemods/transforms/register-with-mask.mjs +267 -0
- package/package.json +1 -1
- package/src/fonts/Jokul-Icons.woff2 +0 -0
- package/src/fonts/brands/fremtind/Jokul-Icons.woff2 +0 -0
- package/styles/base.css +1 -1
- package/styles/base.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/file/file.css +50 -61
- package/styles/components/file/file.min.css +1 -1
- package/styles/components/file/file.scss +66 -79
- package/styles/components/file-input/file-input.css +59 -70
- package/styles/components/file-input/file-input.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 +3 -3
- 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/segmented-control/segmented-control.css +2 -2
- package/styles/components/segmented-control/segmented-control.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/components.css +74 -85
- package/styles/components.min.css +1 -1
- package/styles/jkl/_shadows.scss +0 -12
- package/styles/theme/_fonts.scss +1 -1
- package/build/cjs/hooks/useAnimatedDetails/index.cjs +0 -2
- package/build/cjs/hooks/useAnimatedDetails/index.cjs.map +0 -1
- package/build/cjs/hooks/useAnimatedDetails/index.d.cts +0 -1
- package/build/cjs/hooks/useAnimatedDetails/useAnimatedDetails.cjs +0 -2
- package/build/cjs/hooks/useAnimatedDetails/useAnimatedDetails.cjs.map +0 -1
- package/build/cjs/hooks/useAnimatedDetails/useAnimatedDetails.d.cts +0 -21
- package/build/cjs/utilities/validators/isValidDogId/isValidDogId.cjs +0 -2
- package/build/cjs/utilities/validators/isValidDogId/isValidDogId.cjs.map +0 -1
- package/build/cjs/utilities/validators/isValidDogId/isValidDogId.d.cts +0 -7
- package/build/es/hooks/useAnimatedDetails/index.d.ts +0 -1
- package/build/es/hooks/useAnimatedDetails/index.js +0 -2
- package/build/es/hooks/useAnimatedDetails/index.js.map +0 -1
- package/build/es/hooks/useAnimatedDetails/useAnimatedDetails.d.ts +0 -21
- package/build/es/hooks/useAnimatedDetails/useAnimatedDetails.js +0 -2
- package/build/es/hooks/useAnimatedDetails/useAnimatedDetails.js.map +0 -1
- package/build/es/utilities/validators/isValidDogId/isValidDogId.d.ts +0 -7
- package/build/es/utilities/validators/isValidDogId/isValidDogId.js +0 -2
- package/build/es/utilities/validators/isValidDogId/isValidDogId.js.map +0 -1
- package/src/fonts/Fremtind-Material-Symbols.woff2 +0 -0
- package/src/fonts/brands/fremtind/Fremtind-Material-Symbols.woff2 +0 -0
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),i=require("../../../clsx-E3yX_9sL.cjs"),c=require("react"),n=require("../../utilities/formatters/bytes/formatBytes.cjs");require("../../utilities/polymorphism/SlotComponent.cjs");const
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),i=require("../../../clsx-E3yX_9sL.cjs"),c=require("react"),n=require("../../utilities/formatters/bytes/formatBytes.cjs");require("../../utilities/polymorphism/SlotComponent.cjs");const r=require("../button/Button.cjs"),s=require("../file-input/internal/fileInputContext.cjs"),o=require("../flex/Flex.cjs");require("../icon/Icon.cjs"),require("../icon/icons/animated/ArrowVerticalAnimated.cjs"),require("../icon/icons/animated/ArrowHorizontalAnimated.cjs"),require("../icon/icons/animated/PlusRemoveAnimated.cjs"),require("../icon/icons/ArrowDownIcon.cjs"),require("../icon/icons/ArrowLeftIcon.cjs"),require("../icon/icons/ArrowNorthEastIcon.cjs"),require("../icon/icons/ArrowRightIcon.cjs"),require("../icon/icons/ArrowUpIcon.cjs"),require("../icon/icons/CalendarIcon.cjs"),require("../icon/icons/CheckIcon.cjs"),require("../icon/icons/ChevronDownIcon.cjs"),require("../icon/icons/ChevronLeftIcon.cjs"),require("../icon/icons/ChevronRightIcon.cjs"),require("../icon/icons/ChevronUpIcon.cjs"),require("../icon/icons/CloseIcon.cjs"),require("../icon/icons/CopyIcon.cjs"),require("../icon/icons/DotsIcon.cjs"),require("../icon/icons/DragIcon.cjs"),require("../icon/icons/ErrorIcon.cjs"),require("../icon/icons/GreenCheckIcon.cjs"),require("../icon/icons/HamburgerIcon.cjs"),require("../icon/icons/InfoIcon.cjs"),require("../icon/icons/LinkIcon.cjs"),require("../icon/icons/MinusIcon.cjs"),require("../icon/icons/OpenInNewIcon.cjs"),require("../icon/icons/PenIcon.cjs"),require("../icon/icons/PlusIcon.cjs"),require("../icon/icons/QuestionIcon.cjs"),require("../icon/icons/RedCrossIcon.cjs"),require("../icon/icons/SearchIcon.cjs"),require("../icon/icons/SuccessIcon.cjs"),require("../icon/icons/ThumbDownIcon.cjs"),require("../icon/icons/ThumbUpIcon.cjs");const t=require("../icon/icons/TrashCanIcon.cjs");require("../icon/icons/WarningIcon.cjs"),require("../../hooks/useId/useId.cjs");const l=require("../input-group/SupportLabel.cjs");require("../input-group/InputGroup.cjs");const a=require("../link/Link.cjs"),u=require("../typography/Text.cjs");require("../typography/Title.cjs");exports.File=j=>{const{children:q,hideThumbnail:I,className:p,fileName:m,fileType:h,fileSize:d,path:f,file:x,state:k,errorLabel:b="Feil",onRemove:g,variant:_="list",...C}=j,y=`jkl-file-preview-${c.useId()}`,w=`${y}-support`,N=s.useFileInputContext(),v=h.startsWith("image/")&&(x?URL.createObjectURL(x):f),T=e.jsxs("div",{id:y,className:i.clsx(p,"jkl-file",`jkl-file--${_}`),"data-state":k,...C,children:[e.jsxs(o.Flex,{gap:"8",direction:"card"===_?"column":"row",alignItems:"card"===_?"start":"center",className:"jkl-file__content",children:[!I&&e.jsx("div",{className:"jkl-file__thumbnail","data-filetype":h,children:v&&e.jsx("img",{src:v,alt:""})}),e.jsxs(o.Flex,{gap:"8",alignItems:"center",justifyContent:"space-between",className:"jkl-file__info",children:[f?e.jsx(u.Text,{size:"s",className:"jkl-file__name",children:e.jsxs(a.Link,{href:f,children:[m," ",e.jsxs("span",{className:"jkl-file__size",children:["(",n.formatBytes(d),")"]})]})}):e.jsxs(u.Text,{size:"s",className:"jkl-file__name",children:[m," ",e.jsxs("span",{className:"jkl-file__size",children:["(",n.formatBytes(d),")"]})]}),g&&e.jsx(r.Button,{variant:"ghost",className:"jkl-file__button",onClick:g,title:`Fjern ${m}`,icon:e.jsx(t.TrashCanIcon,{})})]})]}),"error"===k&&b&&e.jsx(l.SupportLabel,{className:"jkl-file__support-label",id:w,label:b,labelType:"error"})]});return N?e.jsx("li",{children:T}):T};
|
|
2
2
|
//# sourceMappingURL=File.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"File.cjs","sources":["../../../../src/components/file/File.tsx"],"sourcesContent":["import clsx from \"clsx\";\nimport
|
|
1
|
+
{"version":3,"file":"File.cjs","sources":["../../../../src/components/file/File.tsx"],"sourcesContent":["import clsx from \"clsx\";\nimport { type ComponentProps, type FC, useId } from \"react\";\nimport { formatBytes } from \"../../utilities/index.js\";\nimport { Button } from \"../button/index.js\";\nimport { useFileInputContext } from \"../file-input/internal/fileInputContext.js\";\nimport { Flex } from \"../flex/index.js\";\nimport { TrashCanIcon } from \"../icon/index.js\";\nimport { SupportLabel } from \"../input-group/index.js\";\nimport { Link } from \"../link/index.js\";\nimport { Text } from \"../typography/index.js\";\nimport type { FileProps } from \"./types.js\";\n\nexport const File: FC<FileProps & ComponentProps<\"div\">> = (props) => {\n const {\n children: _,\n hideThumbnail,\n className,\n fileName,\n fileType,\n fileSize,\n path,\n file,\n state,\n errorLabel = \"Feil\",\n onRemove,\n variant = \"list\",\n ...rest\n } = props;\n\n const id = `jkl-file-preview-${useId()}`;\n const supportId = `${id}-support`;\n\n const context = useFileInputContext();\n\n const imageSrc =\n fileType.startsWith(\"image/\") &&\n (file ? URL.createObjectURL(file) : path);\n\n const fileComponent = (\n <div\n id={id}\n className={clsx(className, \"jkl-file\", `jkl-file--${variant}`)}\n data-state={state}\n {...rest}\n >\n <Flex\n gap=\"8\"\n direction={variant === \"card\" ? \"column\" : \"row\"}\n alignItems={variant === \"card\" ? \"start\" : \"center\"}\n className={\"jkl-file__content\"}\n >\n {!hideThumbnail && (\n <div\n className=\"jkl-file__thumbnail\"\n data-filetype={fileType}\n >\n {imageSrc && <img src={imageSrc} alt=\"\" />}\n </div>\n )}\n <Flex\n gap=\"8\"\n alignItems=\"center\"\n justifyContent=\"space-between\"\n className=\"jkl-file__info\"\n >\n {path ? (\n <Text size=\"s\" className=\"jkl-file__name\">\n <Link href={path}>\n {fileName}{\" \"}\n <span className=\"jkl-file__size\">\n ({formatBytes(fileSize)})\n </span>\n </Link>\n </Text>\n ) : (\n <Text size=\"s\" className=\"jkl-file__name\">\n {fileName}{\" \"}\n <span className=\"jkl-file__size\">\n ({formatBytes(fileSize)})\n </span>\n </Text>\n )}\n {onRemove && (\n <Button\n variant={\"ghost\"}\n className=\"jkl-file__button\"\n onClick={onRemove}\n title={`Fjern ${fileName}`}\n icon={<TrashCanIcon />}\n />\n )}\n </Flex>\n </Flex>\n\n {state === \"error\" && errorLabel && (\n <SupportLabel\n className=\"jkl-file__support-label\"\n id={supportId}\n label={errorLabel}\n labelType={\"error\"}\n />\n )}\n </div>\n );\n\n return context ? <li>{fileComponent}</li> : fileComponent;\n};\n"],"names":["props","children","_","hideThumbnail","className","fileName","fileType","fileSize","path","file","state","errorLabel","onRemove","variant","rest","id","useId","supportId","context","useFileInputContext","imageSrc","startsWith","URL","createObjectURL","fileComponent","jsxs","clsx","Flex","gap","direction","alignItems","jsx","src","alt","justifyContent","Text","size","Link","href","formatBytes","Button","onClick","title","icon","TrashCanIcon","SupportLabel","label","labelType"],"mappings":"oqEAY4DA,IACxD,MACIC,SAAUC,EACVC,cAAAA,EACAC,UAAAA,EACAC,SAAAA,EACAC,SAAAA,EACAC,SAAAA,EACAC,KAAAA,EACAC,KAAAA,EACAC,MAAAA,EACAC,WAAAA,EAAa,OACbC,SAAAA,EACAC,QAAAA,EAAU,UACPC,GACHd,EAEEe,EAAK,oBAAoBC,EAAAA,UACzBC,EAAY,GAAGF,YAEfG,EAAUC,EAAAA,sBAEVC,EACFd,EAASe,WAAW,YACnBZ,EAAOa,IAAIC,gBAAgBd,GAAQD,GAElCgB,EACFC,EAAAA,KAAC,MAAA,CACGV,GAAAA,EACAX,UAAWsB,EAAAA,KAAKtB,EAAW,WAAY,aAAaS,KACpD,aAAYH,KACRI,EAEJb,SAAA,CAAAwB,EAAAA,KAACE,EAAAA,KAAA,CACGC,IAAI,IACJC,UAAuB,SAAZhB,EAAqB,SAAW,MAC3CiB,WAAwB,SAAZjB,EAAqB,QAAU,SAC3CT,UAAW,oBAEVH,SAAA,EAACE,GACE4B,EAAAA,IAAC,MAAA,CACG3B,UAAU,sBACV,gBAAeE,EAEdL,YAAY8B,EAAAA,IAAC,MAAA,CAAIC,IAAKZ,EAAUa,IAAI,OAG7CR,EAAAA,KAACE,EAAAA,KAAA,CACGC,IAAI,IACJE,WAAW,SACXI,eAAe,gBACf9B,UAAU,iBAETH,SAAA,CAAAO,EACGuB,EAAAA,IAACI,EAAAA,MAAKC,KAAK,IAAIhC,UAAU,iBACrBH,SAAAwB,EAAAA,KAACY,EAAAA,KAAA,CAAKC,KAAM9B,EACPP,SAAA,CAAAI,EAAU,IACXoB,EAAAA,KAAC,OAAA,CAAKrB,UAAU,iBAAiBH,SAAA,CAAA,IAC3BsC,EAAAA,YAAYhC,GAAU,YAKpCkB,EAAAA,KAACU,EAAAA,MAAKC,KAAK,IAAIhC,UAAU,iBACpBH,SAAA,CAAAI,EAAU,IACXoB,EAAAA,KAAC,OAAA,CAAKrB,UAAU,iBAAiBH,SAAA,CAAA,IAC3BsC,EAAAA,YAAYhC,GAAU,UAInCK,GACGmB,EAAAA,IAACS,EAAAA,OAAA,CACG3B,QAAS,QACTT,UAAU,mBACVqC,QAAS7B,EACT8B,MAAO,SAASrC,IAChBsC,WAAOC,EAAAA,aAAA,CAAA,WAMZ,UAAVlC,GAAqBC,GAClBoB,EAAAA,IAACc,EAAAA,aAAA,CACGzC,UAAU,0BACVW,GAAIE,EACJ6B,MAAOnC,EACPoC,UAAW,aAM3B,OAAO7B,EAAUa,EAAAA,IAAC,KAAA,CAAI9B,SAAAuB,IAAsBA"}
|
|
@@ -1,10 +1,15 @@
|
|
|
1
|
-
import { MouseEvent } from 'react';
|
|
1
|
+
import { MouseEvent, ReactNode } from 'react';
|
|
2
2
|
export type FileProps = {
|
|
3
3
|
fileName: string;
|
|
4
4
|
fileType: string;
|
|
5
5
|
fileSize: number;
|
|
6
6
|
path?: string;
|
|
7
7
|
errorLabel?: string;
|
|
8
|
+
/**
|
|
9
|
+
* Du kan skjule forhåndsvisning av bilde/filendelse for å spare plass
|
|
10
|
+
* @default false
|
|
11
|
+
*/
|
|
12
|
+
hideThumbnail?: boolean;
|
|
8
13
|
state?: "error" | "loading";
|
|
9
14
|
/**
|
|
10
15
|
* Velg hvordan filene skal vises for brukeren
|
|
@@ -17,4 +22,8 @@ export type FileProps = {
|
|
|
17
22
|
* Gjør det mulig å vise en knapp for fjerning av filene ved filopplasting
|
|
18
23
|
*/
|
|
19
24
|
onRemove?: (e: MouseEvent<HTMLButtonElement>) => void;
|
|
25
|
+
/**
|
|
26
|
+
* @deprecated Blir ikke brukt, vil fjernes i neste major-release
|
|
27
|
+
*/
|
|
28
|
+
children?: ReactNode;
|
|
20
29
|
};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./useAnimatedHeight/useAnimatedHeight.cjs"),s=require("./useAnimatedHeight/useAnimatedHeightBetween.cjs"),r=require("./useAnimatedHeight/useAutoAnimateHeight.cjs"),u=require("./useBrowserPreferences/useBrowserPreferences.cjs"),i=require("./useIntersectionObserver/useIntersectionObserver.cjs"),t=require("./useLocalStorage/useLocalStorage.cjs"),o=require("./useMutationObserver/useMutationObserver.cjs"),n=require("./usePreviousValue/usePreviousValue.cjs"),c=require("./useProgressiveImg/useProgressiveImg.cjs"),a=require("./useScreen/useScreen.cjs"),g=require("./useScrollIntoView/useScrollIntoView.cjs"),l=require("./useAriaLiveRegion/useAriaLiveRegion.cjs"),d=require("./useClickOutside/useClickOutside.cjs"),m=require("./useFocusOutside/useFocusOutside.cjs"),p=require("./useElementDimensions/useElementDimensions.cjs"),v=require("./useId/useId.cjs"),j=require("./useKeyListener/useKeyListener.cjs"),x=require("./useListNavigation/useListNavigation.cjs"),q=require("./useSwipeGesture/useSwipeGesture.cjs");exports.useAnimatedHeight=e.useAnimatedHeight,exports.useAnimatedHeightBetween=s.useAnimatedHeightBetween,exports.useAutoAnimatedHeight=r.useAutoAnimatedHeight,exports.useBrowserPreferences=u.useBrowserPreferences,exports.useIntersectionObserver=i.useIntersectionObserver,exports.useLocalStorage=t.useLocalStorage,exports.useMutationObserver=o.useMutationObserver,exports.usePreviousValue=n.usePreviousValue,exports.useProgressiveImg=c.useProgressiveImg,exports.useScreen=a.useScreen,exports.useScrollIntoView=g.useScrollIntoView,exports.useAriaLiveRegion=l.useAriaLiveRegion,exports.useClickOutside=d.useClickOutside,exports.useFocusOutside=m.useFocusOutside,exports.useElementDimensions=p.useElementDimensions,exports.useId=v.useId,exports.useKeyListener=j.useKeyListener,exports.useListNavigation=x.useListNavigation,exports.useSwipeGesture=q.useSwipeGesture;
|
|
2
2
|
//# sourceMappingURL=index.cjs.map
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
export { useAnimatedDetails } from './useAnimatedDetails/useAnimatedDetails.cjs';
|
|
2
1
|
export { useAnimatedHeight, useAnimatedHeightBetween, useAutoAnimatedHeight, type UseAutoAnimatedHeightOptions, type UseAnimatedHeightOptions, } from './useAnimatedHeight/index.cjs';
|
|
3
2
|
export { useBrowserPreferences } from './/useBrowserPreferences//useBrowserPreferences.cjs';
|
|
4
3
|
export { useIntersectionObserver } from './useIntersectionObserver/useIntersectionObserver.cjs';
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("./util/formatNumber.cjs"),e=require("./util/parseNumber.cjs"),t=require("./util/registerWithMask.cjs"),
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("./util/formatNumber.cjs"),e=require("./util/parseNumber.cjs"),t=require("./util/registerWithMask.cjs"),o=require("./avstand/formatAvstand.cjs"),m=require("./bytes/formatBytes.cjs"),s=require("./date/formatDate.cjs"),a=require("./fodselsnummer/formatFodselsnummer.cjs"),u=require("./organisasjonsnummer/formatOrganisasjonsnummer.cjs"),n=require("./kontonummer/formatKontonummer.cjs"),f=require("./kortnummer/formatKortnummer.cjs"),E=require("./telefonnummer/formatTelefonnummer.cjs"),i=require("./valuta/formatValuta.cjs");exports.formatNumber=r.formatNumber,exports.parseNumber=e.parseNumber,exports.registerWithMasks=t.registerWithMasks,exports.formatAvstand=o.formatAvstand,exports.formatBytes=m.formatBytes,exports.formatDate=s.formatDate,exports.FODSELSNUMMER_REGEX=a.FODSELSNUMMER_REGEX,exports.formatFodselsnummer=a.formatFodselsnummer,exports.ORGANISASJONSNUMMER_REGEX=u.ORGANISASJONSNUMMER_REGEX,exports.formatOrganisasjonsnummer=u.formatOrganisasjonsnummer,exports.KONTONUMMER_REGEX=n.KONTONUMMER_REGEX,exports.formatKontonummer=n.formatKontonummer,exports.KORTNUMMER_REGEX=f.KORTNUMMER_REGEX,exports.formatKortnummer=f.formatKortnummer,exports.TELEFONNUMMER_REGEX=E.TELEFONNUMMER_REGEX,exports.formatTelefonnummer=E.formatTelefonnummer,exports.formatValuta=i.formatValuta;
|
|
2
2
|
//# sourceMappingURL=index.cjs.map
|
|
@@ -2,7 +2,7 @@ export type { FormatNumberOptions } from './util/formatNumber.cjs';
|
|
|
2
2
|
export { formatNumber } from './util/formatNumber.cjs';
|
|
3
3
|
export { parseNumber } from './util/parseNumber.cjs';
|
|
4
4
|
export type { Formatter, RegisterWithMaskOptions, } from './util/registerWithMask.cjs';
|
|
5
|
-
export { registerWithMasks
|
|
5
|
+
export { registerWithMasks } from './util/registerWithMask.cjs';
|
|
6
6
|
export { formatAvstand } from './avstand/formatAvstand.cjs';
|
|
7
7
|
export { formatBytes } from './bytes/formatBytes.cjs';
|
|
8
8
|
export { formatDate } from './date/formatDate.cjs';
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("../date/formatDate.cjs"),r=require("../fodselsnummer/formatFodselsnummer.cjs"),t=require("../kontonummer/formatKontonummer.cjs"),n=require("../kortnummer/formatKortnummer.cjs"),s=require("../organisasjonsnummer/formatOrganisasjonsnummer.cjs"),m=require("../telefonnummer/formatTelefonnummer.cjs"),o=require("./formatNumber.cjs"),a={date:e.formatDateString,fodselsnummer:r.formatFodselsnummer,kortnummer:n.formatKortnummer,kontonummer:t.formatKontonummer,telefonnummer:m.formatTelefonnummer,number:o.formatNumber,organisasjonsnummer:s.formatOrganisasjonsnummer},u=e=>(r,t,n)=>{let s=0,m="",o="";const u={setValueAs:e=>e.replace(/\s/g,""),onChange:u=>{n?.onChange?.(u);let i=0;const l=u.target.value.length;null!==u.target.selectionStart&&(i=u.target.selectionStart);const g=a[e](u.target.value,{partial:!0}),c=g.toString().length;r.setValue(t,g);let f=null;if(["Delete","Backspace"].includes(m)){const e=s-i,r=""===o.trim()?0:c-l;f=s-e+r}else if(i<u.target.value.length||l!==c){f=i+(c-l)}if(null!==f){const e=((e,r,t)=>Math.min(Math.max(e,r),t))(f,0,c);u.target.setSelectionRange(e,e,void 0)}}};n&&Object.assign(u,n);const i=r.register(t,u);return Object.assign(i,{onKeyDown:e=>{o="";const r=e.target,{selectionStart:t,selectionEnd:n,value:a}=r;null!==t&&(s=t,null!==n&&n>t?o=a.slice(t,n):"Backspace"===e.key?o=a[s-1]??"":"Delete"===e.key&&(o=a[s]??"")),m=e.key}})}
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("../date/formatDate.cjs"),r=require("../fodselsnummer/formatFodselsnummer.cjs"),t=require("../kontonummer/formatKontonummer.cjs"),n=require("../kortnummer/formatKortnummer.cjs"),s=require("../organisasjonsnummer/formatOrganisasjonsnummer.cjs"),m=require("../telefonnummer/formatTelefonnummer.cjs"),o=require("./formatNumber.cjs"),a={date:e.formatDateString,fodselsnummer:r.formatFodselsnummer,kortnummer:n.formatKortnummer,kontonummer:t.formatKontonummer,telefonnummer:m.formatTelefonnummer,number:o.formatNumber,organisasjonsnummer:s.formatOrganisasjonsnummer},u=e=>(r,t,n)=>{let s=0,m="",o="";const u={setValueAs:e=>e.replace(/\s/g,""),onChange:u=>{n?.onChange?.(u);let i=0;const l=u.target.value.length;null!==u.target.selectionStart&&(i=u.target.selectionStart);const g=a[e](u.target.value,{partial:!0}),c=g.toString().length;r.setValue(t,g);let f=null;if(["Delete","Backspace"].includes(m)){const e=s-i,r=""===o.trim()?0:c-l;f=s-e+r}else if(i<u.target.value.length||l!==c){f=i+(c-l)}if(null!==f){const e=((e,r,t)=>Math.min(Math.max(e,r),t))(f,0,c);u.target.setSelectionRange(e,e,void 0)}}};n&&Object.assign(u,n);const i=r.register(t,u);return Object.assign(i,{onKeyDown:e=>{o="";const r=e.target,{selectionStart:t,selectionEnd:n,value:a}=r;null!==t&&(s=t,null!==n&&n>t?o=a.slice(t,n):"Backspace"===e.key?o=a[s-1]??"":"Delete"===e.key&&(o=a[s]??"")),m=e.key}})};exports.registerWithMasks=e=>({registerWithFodselsnummerMask:(r,t)=>u("fodselsnummer")(e,r,t),registerWithKortnummerMask:(r,t)=>u("kortnummer")(e,r,t),registerWithKontonummerMask:(r,t)=>u("kontonummer")(e,r,t),registerWithTelefonnummerMask:(r,t)=>u("telefonnummer")(e,r,t),registerWithOrganisasjonsnummerMask:(r,t)=>u("organisasjonsnummer")(e,r,t),registerWithDateMask:(r,t)=>u("date")(e,r,t),registerWithNumber:(r,t)=>u("number")(e,r,t)});
|
|
2
2
|
//# sourceMappingURL=registerWithMask.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registerWithMask.cjs","sources":["../../../../../src/utilities/formatters/util/registerWithMask.ts"],"sourcesContent":["import type { ChangeEvent, KeyboardEventHandler } from \"react\";\nimport type {\n FieldValues,\n Path,\n PathValue,\n RegisterOptions,\n UseFormRegisterReturn,\n UseFormReturn,\n} from \"react-hook-form\";\nimport { formatDateString } from \"../date/formatDate.js\";\nimport { formatFodselsnummer } from \"../fodselsnummer/formatFodselsnummer.js\";\nimport { formatKontonummer } from \"../kontonummer/formatKontonummer.js\";\nimport { formatKortnummer } from \"../kortnummer/formatKortnummer.js\";\nimport { formatOrganisasjonsnummer } from \"../organisasjonsnummer/formatOrganisasjonsnummer.js\";\nimport { formatTelefonnummer } from \"../telefonnummer/formatTelefonnummer.js\";\nimport { formatNumber } from \"./formatNumber.js\";\n\nconst formatters = {\n date: formatDateString,\n fodselsnummer: formatFodselsnummer,\n kortnummer: formatKortnummer,\n kontonummer: formatKontonummer,\n telefonnummer: formatTelefonnummer,\n number: formatNumber,\n organisasjonsnummer: formatOrganisasjonsnummer,\n};\nexport type Formatter = keyof typeof formatters;\n\nconst clamp = (value: number, min: number, max: number) =>\n Math.min(Math.max(value, min), max);\n\nexport type RegisterWithMaskOptions<T extends FieldValues> = Omit<\n RegisterOptions<T>,\n \"setValueAs\"\n>;\n\nconst registerWithMask =\n (formatter: Formatter) =>\n <T extends FieldValues>(\n form: UseFormReturn<T>,\n name: Path<T>,\n options?: RegisterWithMaskOptions<T>,\n ) => {\n let onKeyDownCaretPosition = 0;\n let onKeyDownKeyPressed = \"\";\n let deletedCharactersOnKeyDown = \"\";\n\n const setValueAs = (value: string) => value.replace(/\\s/g, \"\");\n const onChange = (event: ChangeEvent<HTMLInputElement>) => {\n options?.onChange?.(event);\n\n // save some values before event.target.value change\n let onChangeCaretPosition = 0;\n const inputLength = event.target.value.length;\n\n // type checking formalities\n if (event.target.selectionStart !== null) {\n onChangeCaretPosition = event.target.selectionStart;\n }\n\n const formattedValue = formatters[formatter](event.target.value, {\n partial: true,\n });\n const formattedLength = formattedValue.toString().length;\n\n form.setValue(name, formattedValue as PathValue<T, Path<T>>);\n\n let newPosition: number | null = null;\n\n if ([\"Delete\", \"Backspace\"].includes(onKeyDownKeyPressed)) {\n // handle removing content\n // calculate how much to move the caret, this also accounts for removing sections of text\n const delta = onKeyDownCaretPosition - onChangeCaretPosition;\n const formattedLengthChange =\n deletedCharactersOnKeyDown.trim() === \"\"\n ? 0\n : formattedLength - inputLength;\n\n // calculate new caret position (- because we move backwards)\n newPosition =\n onKeyDownCaretPosition - delta + formattedLengthChange;\n } else if (\n onChangeCaretPosition < event.target.value.length ||\n inputLength !== formattedLength\n ) {\n // handle adding content from inside the string\n // calculate how much to move the caret forwards\n const delta = formattedLength - inputLength;\n\n // calculate new caret position (+ because we move forwards)\n newPosition = onChangeCaretPosition + delta;\n }\n\n if (newPosition !== null) {\n const clampedPosition = clamp(newPosition, 0, formattedLength);\n\n event.target.setSelectionRange(\n clampedPosition,\n clampedPosition,\n undefined,\n );\n }\n };\n\n const registerOptions: RegisterOptions<T, Path<T>> = {\n setValueAs,\n onChange,\n };\n if (options) {\n Object.assign(registerOptions, options);\n }\n const register = form.register(name, registerOptions);\n\n // save the caret position before the change occured\n const onKeyDown: KeyboardEventHandler<HTMLInputElement> = (event) => {\n deletedCharactersOnKeyDown = \"\";\n\n const input = event.target as HTMLInputElement;\n const { selectionStart, selectionEnd, value } = input;\n\n if (selectionStart !== null) {\n onKeyDownCaretPosition = selectionStart;\n\n if (selectionEnd !== null && selectionEnd > selectionStart) {\n deletedCharactersOnKeyDown = value.slice(\n selectionStart,\n selectionEnd,\n );\n } else if (event.key === \"Backspace\") {\n deletedCharactersOnKeyDown =\n value[onKeyDownCaretPosition - 1] ?? \"\";\n } else if (event.key === \"Delete\") {\n deletedCharactersOnKeyDown =\n value[onKeyDownCaretPosition] ?? \"\";\n }\n }\n onKeyDownKeyPressed = event.key;\n };\n\n // add onKeyDown event handler to the registered input\n const extra: Record<string, unknown> = {\n onKeyDown,\n };\n\n return Object.assign(register, extra);\n };\n\n/** @deprecated Bruk `registerWithMasks` i stedet */\nexport const registerWithFodselsnummerMask = registerWithMask(\"fodselsnummer\");\n/** @deprecated Bruk `registerWithMasks` i stedet */\nexport const registerWithKortnummerMask = registerWithMask(\"kortnummer\");\n/** @deprecated Bruk `registerWithMasks` i stedet */\nexport const registerWithKontonummerMask = registerWithMask(\"kontonummer\");\n/** @deprecated Bruk `registerWithMasks` i stedet */\nexport const registerWithTelefonnummerMask = registerWithMask(\"telefonnummer\");\n\n/**\n * Hjelpefunksjon for React Hook Form som lar deg bruke formateringsfunksjonene i denne pakken som inputmasker.\n */\nexport const registerWithMasks = <T extends FieldValues>(\n form: UseFormReturn<T>,\n) => ({\n registerWithFodselsnummerMask: (\n name: Path<T>,\n options?: RegisterWithMaskOptions<T>,\n ): UseFormRegisterReturn =>\n registerWithMask(\"fodselsnummer\")<T>(form, name, options),\n registerWithKortnummerMask: (\n name: Path<T>,\n options?: RegisterWithMaskOptions<T>,\n ): UseFormRegisterReturn =>\n registerWithMask(\"kortnummer\")<T>(form, name, options),\n registerWithKontonummerMask: (\n name: Path<T>,\n options?: RegisterWithMaskOptions<T>,\n ): UseFormRegisterReturn =>\n registerWithMask(\"kontonummer\")<T>(form, name, options),\n registerWithTelefonnummerMask: (\n name: Path<T>,\n options?: RegisterWithMaskOptions<T>,\n ): UseFormRegisterReturn =>\n registerWithMask(\"telefonnummer\")<T>(form, name, options),\n registerWithOrganisasjonsnummerMask: (\n name: Path<T>,\n options?: RegisterWithMaskOptions<T>,\n ): UseFormRegisterReturn =>\n registerWithMask(\"organisasjonsnummer\")<T>(form, name, options),\n registerWithDateMask: (\n name: Path<T>,\n options?: RegisterWithMaskOptions<T>,\n ): UseFormRegisterReturn =>\n registerWithMask(\"date\")<T>(form, name, options),\n registerWithNumber: (\n name: Path<T>,\n options?: RegisterWithMaskOptions<T>,\n ): UseFormRegisterReturn =>\n registerWithMask(\"number\")<T>(form, name, options),\n});\n"],"names":["formatters","date","formatDateString","fodselsnummer","formatFodselsnummer","kortnummer","formatKortnummer","kontonummer","formatKontonummer","telefonnummer","formatTelefonnummer","number","formatNumber","organisasjonsnummer","formatOrganisasjonsnummer","registerWithMask","formatter","form","name","options","onKeyDownCaretPosition","onKeyDownKeyPressed","deletedCharactersOnKeyDown","registerOptions","setValueAs","value","replace","onChange","event","onChangeCaretPosition","inputLength","target","length","selectionStart","formattedValue","partial","formattedLength","toString","setValue","newPosition","includes","delta","formattedLengthChange","trim","clampedPosition","min","max","Math","clamp","setSelectionRange","Object","assign","register","onKeyDown","input","selectionEnd","slice","key","registerWithFodselsnummerMask","registerWithKortnummerMask","registerWithKontonummerMask","registerWithTelefonnummerMask","registerWithOrganisasjonsnummerMask","registerWithDateMask","registerWithNumber"],"mappings":"0aAiBMA,EAAa,CACfC,KAAMC,EAAAA,iBACNC,cAAeC,EAAAA,oBACfC,WAAYC,EAAAA,iBACZC,YAAaC,EAAAA,kBACbC,cAAeC,EAAAA,oBACfC,OAAQC,EAAAA,aACRC,oBAAqBC,EAAAA,2BAYnBC,EACDC,GACD,CACIC,EACAC,EACAC,KAEA,IAAIC,EAAyB,EACzBC,EAAsB,GACtBC,EAA6B,GA2DjC,MAAMC,EAA+C,CACjDC,WA1DgBC,GAAkBA,EAAMC,QAAQ,MAAO,IA2DvDC,SA1DcC,IACdT,GAASQ,WAAWC,GAGpB,IAAIC,EAAwB,EAC5B,MAAMC,EAAcF,EAAMG,OAAON,MAAMO,OAGH,OAAhCJ,EAAMG,OAAOE,iBACbJ,EAAwBD,EAAMG,OAAOE,gBAGzC,MAAMC,EAAiBlC,EAAWgB,GAAWY,EAAMG,OAAON,MAAO,CAC7DU,SAAS,IAEPC,EAAkBF,EAAeG,WAAWL,OAElDf,EAAKqB,SAASpB,EAAMgB,GAEpB,IAAIK,EAA6B,KAEjC,GAAI,CAAC,SAAU,aAAaC,SAASnB,GAAsB,CAGvD,MAAMoB,EAAQrB,EAAyBS,EACjCa,EACoC,KAAtCpB,EAA2BqB,OACrB,EACAP,EAAkBN,EAG5BS,EACInB,EAAyBqB,EAAQC,CACzC,MAAA,GACIb,EAAwBD,EAAMG,OAAON,MAAMO,QAC3CF,IAAgBM,EAClB,CAMEG,EAAcV,GAHAO,EAAkBN,EAIpC,CAEA,GAAoB,OAAhBS,EAAsB,CACtB,MAAMK,EAlER,EAACnB,EAAeoB,EAAaC,IACvCC,KAAKF,IAAIE,KAAKD,IAAIrB,EAAOoB,GAAMC,GAiEKE,CAAMT,EAAa,EAAGH,GAE9CR,EAAMG,OAAOkB,kBACTL,EACAA,OACA,EAER,IAOAzB,GACA+B,OAAOC,OAAO5B,EAAiBJ,GAEnC,MAAMiC,EAAWnC,EAAKmC,SAASlC,EAAMK,GAiCrC,OAAO2B,OAAOC,OAAOC,EAJkB,CACnCC,UA3BuDzB,IACvDN,EAA6B,GAE7B,MAAMgC,EAAQ1B,EAAMG,QACZE,eAAAA,EAAgBsB,aAAAA,EAAc9B,MAAAA,GAAU6B,EAEzB,OAAnBrB,IACAb,EAAyBa,EAEJ,OAAjBsB,GAAyBA,EAAetB,EACxCX,EAA6BG,EAAM+B,MAC/BvB,EACAsB,GAEiB,cAAd3B,EAAM6B,IACbnC,EACIG,EAAML,EAAyB,IAAM,GACpB,WAAdQ,EAAM6B,MACbnC,EACIG,EAAML,IAA2B,KAG7CC,EAAsBO,EAAM6B,QAY3BC,EAAgC3C,EAAiB,iBAEjD4C,EAA6B5C,EAAiB,cAE9C6C,EAA8B7C,EAAiB,eAE/C8C,EAAgC9C,EAAiB,8JAM1DE,KAEAyC,8BAA+B,CAC3BxC,EACAC,IAEAJ,EAAiB,gBAAjBA,CAAqCE,EAAMC,EAAMC,GACrDwC,2BAA4B,CACxBzC,EACAC,IAEAJ,EAAiB,aAAjBA,CAAkCE,EAAMC,EAAMC,GAClDyC,4BAA6B,CACzB1C,EACAC,IAEAJ,EAAiB,cAAjBA,CAAmCE,EAAMC,EAAMC,GACnD0C,8BAA+B,CAC3B3C,EACAC,IAEAJ,EAAiB,gBAAjBA,CAAqCE,EAAMC,EAAMC,GACrD2C,oCAAqC,CACjC5C,EACAC,IAEAJ,EAAiB,sBAAjBA,CAA2CE,EAAMC,EAAMC,GAC3D4C,qBAAsB,CAClB7C,EACAC,IAEAJ,EAAiB,OAAjBA,CAA4BE,EAAMC,EAAMC,GAC5C6C,mBAAoB,CAChB9C,EACAC,IAEAJ,EAAiB,SAAjBA,CAA8BE,EAAMC,EAAMC"}
|
|
1
|
+
{"version":3,"file":"registerWithMask.cjs","sources":["../../../../../src/utilities/formatters/util/registerWithMask.ts"],"sourcesContent":["import type { ChangeEvent, KeyboardEventHandler } from \"react\";\nimport type {\n FieldValues,\n Path,\n PathValue,\n RegisterOptions,\n UseFormRegisterReturn,\n UseFormReturn,\n} from \"react-hook-form\";\nimport { formatDateString } from \"../date/formatDate.js\";\nimport { formatFodselsnummer } from \"../fodselsnummer/formatFodselsnummer.js\";\nimport { formatKontonummer } from \"../kontonummer/formatKontonummer.js\";\nimport { formatKortnummer } from \"../kortnummer/formatKortnummer.js\";\nimport { formatOrganisasjonsnummer } from \"../organisasjonsnummer/formatOrganisasjonsnummer.js\";\nimport { formatTelefonnummer } from \"../telefonnummer/formatTelefonnummer.js\";\nimport { formatNumber } from \"./formatNumber.js\";\n\nconst formatters = {\n date: formatDateString,\n fodselsnummer: formatFodselsnummer,\n kortnummer: formatKortnummer,\n kontonummer: formatKontonummer,\n telefonnummer: formatTelefonnummer,\n number: formatNumber,\n organisasjonsnummer: formatOrganisasjonsnummer,\n};\nexport type Formatter = keyof typeof formatters;\n\nconst clamp = (value: number, min: number, max: number) =>\n Math.min(Math.max(value, min), max);\n\nexport type RegisterWithMaskOptions<T extends FieldValues> = Omit<\n RegisterOptions<T>,\n \"setValueAs\"\n>;\n\nconst registerWithMask =\n (formatter: Formatter) =>\n <T extends FieldValues>(\n form: UseFormReturn<T>,\n name: Path<T>,\n options?: RegisterWithMaskOptions<T>,\n ) => {\n let onKeyDownCaretPosition = 0;\n let onKeyDownKeyPressed = \"\";\n let deletedCharactersOnKeyDown = \"\";\n\n const setValueAs = (value: string) => value.replace(/\\s/g, \"\");\n const onChange = (event: ChangeEvent<HTMLInputElement>) => {\n options?.onChange?.(event);\n\n // save some values before event.target.value change\n let onChangeCaretPosition = 0;\n const inputLength = event.target.value.length;\n\n // type checking formalities\n if (event.target.selectionStart !== null) {\n onChangeCaretPosition = event.target.selectionStart;\n }\n\n const formattedValue = formatters[formatter](event.target.value, {\n partial: true,\n });\n const formattedLength = formattedValue.toString().length;\n\n form.setValue(name, formattedValue as PathValue<T, Path<T>>);\n\n let newPosition: number | null = null;\n\n if ([\"Delete\", \"Backspace\"].includes(onKeyDownKeyPressed)) {\n // handle removing content\n // calculate how much to move the caret, this also accounts for removing sections of text\n const delta = onKeyDownCaretPosition - onChangeCaretPosition;\n const formattedLengthChange =\n deletedCharactersOnKeyDown.trim() === \"\"\n ? 0\n : formattedLength - inputLength;\n\n // calculate new caret position (- because we move backwards)\n newPosition =\n onKeyDownCaretPosition - delta + formattedLengthChange;\n } else if (\n onChangeCaretPosition < event.target.value.length ||\n inputLength !== formattedLength\n ) {\n // handle adding content from inside the string\n // calculate how much to move the caret forwards\n const delta = formattedLength - inputLength;\n\n // calculate new caret position (+ because we move forwards)\n newPosition = onChangeCaretPosition + delta;\n }\n\n if (newPosition !== null) {\n const clampedPosition = clamp(newPosition, 0, formattedLength);\n\n event.target.setSelectionRange(\n clampedPosition,\n clampedPosition,\n undefined,\n );\n }\n };\n\n const registerOptions: RegisterOptions<T, Path<T>> = {\n setValueAs,\n onChange,\n };\n if (options) {\n Object.assign(registerOptions, options);\n }\n const register = form.register(name, registerOptions);\n\n // save the caret position before the change occured\n const onKeyDown: KeyboardEventHandler<HTMLInputElement> = (event) => {\n deletedCharactersOnKeyDown = \"\";\n\n const input = event.target as HTMLInputElement;\n const { selectionStart, selectionEnd, value } = input;\n\n if (selectionStart !== null) {\n onKeyDownCaretPosition = selectionStart;\n\n if (selectionEnd !== null && selectionEnd > selectionStart) {\n deletedCharactersOnKeyDown = value.slice(\n selectionStart,\n selectionEnd,\n );\n } else if (event.key === \"Backspace\") {\n deletedCharactersOnKeyDown =\n value[onKeyDownCaretPosition - 1] ?? \"\";\n } else if (event.key === \"Delete\") {\n deletedCharactersOnKeyDown =\n value[onKeyDownCaretPosition] ?? \"\";\n }\n }\n onKeyDownKeyPressed = event.key;\n };\n\n // add onKeyDown event handler to the registered input\n const extra: Record<string, unknown> = {\n onKeyDown,\n };\n\n return Object.assign(register, extra);\n };\n\n/**\n * Hjelpefunksjon for React Hook Form som lar deg bruke formateringsfunksjonene i denne pakken som inputmasker.\n */\nexport const registerWithMasks = <T extends FieldValues>(\n form: UseFormReturn<T>,\n) => ({\n registerWithFodselsnummerMask: (\n name: Path<T>,\n options?: RegisterWithMaskOptions<T>,\n ): UseFormRegisterReturn =>\n registerWithMask(\"fodselsnummer\")<T>(form, name, options),\n registerWithKortnummerMask: (\n name: Path<T>,\n options?: RegisterWithMaskOptions<T>,\n ): UseFormRegisterReturn =>\n registerWithMask(\"kortnummer\")<T>(form, name, options),\n registerWithKontonummerMask: (\n name: Path<T>,\n options?: RegisterWithMaskOptions<T>,\n ): UseFormRegisterReturn =>\n registerWithMask(\"kontonummer\")<T>(form, name, options),\n registerWithTelefonnummerMask: (\n name: Path<T>,\n options?: RegisterWithMaskOptions<T>,\n ): UseFormRegisterReturn =>\n registerWithMask(\"telefonnummer\")<T>(form, name, options),\n registerWithOrganisasjonsnummerMask: (\n name: Path<T>,\n options?: RegisterWithMaskOptions<T>,\n ): UseFormRegisterReturn =>\n registerWithMask(\"organisasjonsnummer\")<T>(form, name, options),\n registerWithDateMask: (\n name: Path<T>,\n options?: RegisterWithMaskOptions<T>,\n ): UseFormRegisterReturn =>\n registerWithMask(\"date\")<T>(form, name, options),\n registerWithNumber: (\n name: Path<T>,\n options?: RegisterWithMaskOptions<T>,\n ): UseFormRegisterReturn =>\n registerWithMask(\"number\")<T>(form, name, options),\n});\n"],"names":["formatters","date","formatDateString","fodselsnummer","formatFodselsnummer","kortnummer","formatKortnummer","kontonummer","formatKontonummer","telefonnummer","formatTelefonnummer","number","formatNumber","organisasjonsnummer","formatOrganisasjonsnummer","registerWithMask","formatter","form","name","options","onKeyDownCaretPosition","onKeyDownKeyPressed","deletedCharactersOnKeyDown","registerOptions","setValueAs","value","replace","onChange","event","onChangeCaretPosition","inputLength","target","length","selectionStart","formattedValue","partial","formattedLength","toString","setValue","newPosition","includes","delta","formattedLengthChange","trim","clampedPosition","min","max","Math","clamp","setSelectionRange","Object","assign","register","onKeyDown","input","selectionEnd","slice","key","registerWithFodselsnummerMask","registerWithKortnummerMask","registerWithKontonummerMask","registerWithTelefonnummerMask","registerWithOrganisasjonsnummerMask","registerWithDateMask","registerWithNumber"],"mappings":"0aAiBMA,EAAa,CACfC,KAAMC,EAAAA,iBACNC,cAAeC,EAAAA,oBACfC,WAAYC,EAAAA,iBACZC,YAAaC,EAAAA,kBACbC,cAAeC,EAAAA,oBACfC,OAAQC,EAAAA,aACRC,oBAAqBC,EAAAA,2BAYnBC,EACDC,GACD,CACIC,EACAC,EACAC,KAEA,IAAIC,EAAyB,EACzBC,EAAsB,GACtBC,EAA6B,GA2DjC,MAAMC,EAA+C,CACjDC,WA1DgBC,GAAkBA,EAAMC,QAAQ,MAAO,IA2DvDC,SA1DcC,IACdT,GAASQ,WAAWC,GAGpB,IAAIC,EAAwB,EAC5B,MAAMC,EAAcF,EAAMG,OAAON,MAAMO,OAGH,OAAhCJ,EAAMG,OAAOE,iBACbJ,EAAwBD,EAAMG,OAAOE,gBAGzC,MAAMC,EAAiBlC,EAAWgB,GAAWY,EAAMG,OAAON,MAAO,CAC7DU,SAAS,IAEPC,EAAkBF,EAAeG,WAAWL,OAElDf,EAAKqB,SAASpB,EAAMgB,GAEpB,IAAIK,EAA6B,KAEjC,GAAI,CAAC,SAAU,aAAaC,SAASnB,GAAsB,CAGvD,MAAMoB,EAAQrB,EAAyBS,EACjCa,EACoC,KAAtCpB,EAA2BqB,OACrB,EACAP,EAAkBN,EAG5BS,EACInB,EAAyBqB,EAAQC,CACzC,SACIb,EAAwBD,EAAMG,OAAON,MAAMO,QAC3CF,IAAgBM,EAClB,CAMEG,EAAcV,GAHAO,EAAkBN,EAIpC,CAEA,GAAoB,OAAhBS,EAAsB,CACtB,MAAMK,EAlER,EAACnB,EAAeoB,EAAaC,IACvCC,KAAKF,IAAIE,KAAKD,IAAIrB,EAAOoB,GAAMC,GAiEKE,CAAMT,EAAa,EAAGH,GAE9CR,EAAMG,OAAOkB,kBACTL,EACAA,OACA,EAER,IAOAzB,GACA+B,OAAOC,OAAO5B,EAAiBJ,GAEnC,MAAMiC,EAAWnC,EAAKmC,SAASlC,EAAMK,GAiCrC,OAAO2B,OAAOC,OAAOC,EAJkB,CACnCC,UA3BuDzB,IACvDN,EAA6B,GAE7B,MAAMgC,EAAQ1B,EAAMG,QACZE,eAAAA,EAAgBsB,aAAAA,EAAc9B,MAAAA,GAAU6B,EAEzB,OAAnBrB,IACAb,EAAyBa,EAEJ,OAAjBsB,GAAyBA,EAAetB,EACxCX,EAA6BG,EAAM+B,MAC/BvB,EACAsB,GAEiB,cAAd3B,EAAM6B,IACbnC,EACIG,EAAML,EAAyB,IAAM,GACpB,WAAdQ,EAAM6B,MACbnC,EACIG,EAAML,IAA2B,KAG7CC,EAAsBO,EAAM6B,kCAepCxC,KAEAyC,8BAA+B,CAC3BxC,EACAC,IAEAJ,EAAiB,gBAAjBA,CAAqCE,EAAMC,EAAMC,GACrDwC,2BAA4B,CACxBzC,EACAC,IAEAJ,EAAiB,aAAjBA,CAAkCE,EAAMC,EAAMC,GAClDyC,4BAA6B,CACzB1C,EACAC,IAEAJ,EAAiB,cAAjBA,CAAmCE,EAAMC,EAAMC,GACnD0C,8BAA+B,CAC3B3C,EACAC,IAEAJ,EAAiB,gBAAjBA,CAAqCE,EAAMC,EAAMC,GACrD2C,oCAAqC,CACjC5C,EACAC,IAEAJ,EAAiB,sBAAjBA,CAA2CE,EAAMC,EAAMC,GAC3D4C,qBAAsB,CAClB7C,EACAC,IAEAJ,EAAiB,OAAjBA,CAA4BE,EAAMC,EAAMC,GAC5C6C,mBAAoB,CAChB9C,EACAC,IAEAJ,EAAiB,SAAjBA,CAA8BE,EAAMC,EAAMC"}
|
|
@@ -17,14 +17,6 @@ declare const formatters: {
|
|
|
17
17
|
};
|
|
18
18
|
export type Formatter = keyof typeof formatters;
|
|
19
19
|
export type RegisterWithMaskOptions<T extends FieldValues> = Omit<RegisterOptions<T>, "setValueAs">;
|
|
20
|
-
/** @deprecated Bruk `registerWithMasks` i stedet */
|
|
21
|
-
export declare const registerWithFodselsnummerMask: <T extends FieldValues>(form: UseFormReturn<T>, name: Path<T>, options?: RegisterWithMaskOptions<T>) => UseFormRegisterReturn<Path<T>> & Record<string, unknown>;
|
|
22
|
-
/** @deprecated Bruk `registerWithMasks` i stedet */
|
|
23
|
-
export declare const registerWithKortnummerMask: <T extends FieldValues>(form: UseFormReturn<T>, name: Path<T>, options?: RegisterWithMaskOptions<T>) => UseFormRegisterReturn<Path<T>> & Record<string, unknown>;
|
|
24
|
-
/** @deprecated Bruk `registerWithMasks` i stedet */
|
|
25
|
-
export declare const registerWithKontonummerMask: <T extends FieldValues>(form: UseFormReturn<T>, name: Path<T>, options?: RegisterWithMaskOptions<T>) => UseFormRegisterReturn<Path<T>> & Record<string, unknown>;
|
|
26
|
-
/** @deprecated Bruk `registerWithMasks` i stedet */
|
|
27
|
-
export declare const registerWithTelefonnummerMask: <T extends FieldValues>(form: UseFormReturn<T>, name: Path<T>, options?: RegisterWithMaskOptions<T>) => UseFormRegisterReturn<Path<T>> & Record<string, unknown>;
|
|
28
20
|
/**
|
|
29
21
|
* Hjelpefunksjon for React Hook Form som lar deg bruke formateringsfunksjonene i denne pakken som inputmasker.
|
|
30
22
|
*/
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("../../index-CaISwoxr.cjs"),r=require("./formatters/util/formatNumber.cjs"),s=require("./formatters/util/parseNumber.cjs"),t=require("./formatters/util/registerWithMask.cjs"),
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("../../index-CaISwoxr.cjs"),r=require("./formatters/util/formatNumber.cjs"),s=require("./formatters/util/parseNumber.cjs"),t=require("./formatters/util/registerWithMask.cjs"),a=require("./formatters/avstand/formatAvstand.cjs"),i=require("./formatters/bytes/formatBytes.cjs"),o=require("./formatters/date/formatDate.cjs"),m=require("./formatters/fodselsnummer/formatFodselsnummer.cjs"),n=require("./formatters/organisasjonsnummer/formatOrganisasjonsnummer.cjs"),u=require("./formatters/kontonummer/formatKontonummer.cjs"),l=require("./formatters/kortnummer/formatKortnummer.cjs"),d=require("./formatters/telefonnummer/formatTelefonnummer.cjs"),f=require("./formatters/valuta/formatValuta.cjs"),p=require("./getThemeAndSize.cjs"),g=require("./mergeRefs.cjs"),c=require("./polymorphism/mergeProps.cjs"),E=require("./polymorphism/SlotComponent.cjs"),x=require("./tabListener.cjs"),j=require("./validators/isValidEpost/isValidEpost.cjs"),R=require("./validators/isValidTelefonnummer/isValidTelefonnummer.cjs"),N=require("./validators/isValidRegistreringsnummer/isValidRegistreringsnummer.cjs"),V=require("./validators/isValidChassisnummer/isValidChassisnummer.cjs"),q=require("./validators/isExactLength/isExactLength.cjs"),M=require("./validators/isInteger/isInteger.cjs"),h=require("./validators/isValidFodselsnummer/isValidFodselsnummer.cjs"),O=require("./validators/isValidOrganisasjonsnummer/isValidOrganisasjonsnummer.cjs"),S=require("./validators/isValidName/isValidName.cjs"),T=require("./validators/hasMinimumWords/hasMinimumWords.cjs"),v=require("./validators/hasNoIllegalCharacters/hasNoIllegalCharacters.cjs"),b=require("./valuePair.cjs"),A=require("./types.cjs");exports.unicode=e.unicode,exports.formatNumber=r.formatNumber,exports.parseNumber=s.parseNumber,exports.registerWithMasks=t.registerWithMasks,exports.formatAvstand=a.formatAvstand,exports.formatBytes=i.formatBytes,exports.formatDate=o.formatDate,exports.FODSELSNUMMER_REGEX=m.FODSELSNUMMER_REGEX,exports.formatFodselsnummer=m.formatFodselsnummer,exports.ORGANISASJONSNUMMER_REGEX=n.ORGANISASJONSNUMMER_REGEX,exports.formatOrganisasjonsnummer=n.formatOrganisasjonsnummer,exports.KONTONUMMER_REGEX=u.KONTONUMMER_REGEX,exports.formatKontonummer=u.formatKontonummer,exports.KORTNUMMER_REGEX=l.KORTNUMMER_REGEX,exports.formatKortnummer=l.formatKortnummer,exports.TELEFONNUMMER_REGEX=d.TELEFONNUMMER_REGEX,exports.formatTelefonnummer=d.formatTelefonnummer,exports.formatValuta=f.formatValuta,exports.getThemeAndSize=p.getThemeAndSize,exports.mergeRefs=g.mergeRefs,exports.useMergeRefs=g.useMergeRefs,exports.mergeProps=c.mergeProps,exports.SlotComponent=E.SlotComponent,exports.initTabListener=x.initTabListener,exports.isValidEpost=j.isValidEpost,exports.isValidTelefonnummer=R.isValidTelefonnummer,exports.isValidRegistreringsnummer=N.isValidRegistreringsnummer,exports.isValidChassisnummer=V.isValidChassisnummer,exports.isExactLength=q.isExactLength,exports.isInteger=M.isInteger,exports.isValidFodselsnummer=h.isValidFodselsnummer,exports.isValidOrganisasjonsnummer=O.isValidOrganisasjonsnummer,exports.isValidName=S.isValidName,exports.hasMinimumWords=T.hasMinimumWords,exports.hasNoIllegalCharacters=v.hasNoIllegalCharacters,exports.getValuePair=b.getValuePair,exports.BRANDS=A.BRANDS;
|
|
2
2
|
//# sourceMappingURL=index.cjs.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("./isValidEpost/isValidEpost.cjs"),
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("./isValidEpost/isValidEpost.cjs"),e=require("./isValidTelefonnummer/isValidTelefonnummer.cjs"),i=require("./isValidRegistreringsnummer/isValidRegistreringsnummer.cjs"),r=require("./isValidChassisnummer/isValidChassisnummer.cjs"),a=require("./isExactLength/isExactLength.cjs"),m=require("./isInteger/isInteger.cjs"),l=require("./isValidFodselsnummer/isValidFodselsnummer.cjs"),n=require("./isValidOrganisasjonsnummer/isValidOrganisasjonsnummer.cjs"),t=require("./isValidName/isValidName.cjs"),o=require("./hasMinimumWords/hasMinimumWords.cjs"),d=require("./hasNoIllegalCharacters/hasNoIllegalCharacters.cjs");exports.isValidEpost=s.isValidEpost,exports.isValidTelefonnummer=e.isValidTelefonnummer,exports.isValidRegistreringsnummer=i.isValidRegistreringsnummer,exports.isValidChassisnummer=r.isValidChassisnummer,exports.isExactLength=a.isExactLength,exports.isInteger=m.isInteger,exports.isValidFodselsnummer=l.isValidFodselsnummer,exports.isValidOrganisasjonsnummer=n.isValidOrganisasjonsnummer,exports.isValidName=t.isValidName,exports.hasMinimumWords=o.hasMinimumWords,exports.hasNoIllegalCharacters=d.hasNoIllegalCharacters;
|
|
2
2
|
//# sourceMappingURL=index.cjs.map
|
|
@@ -2,7 +2,6 @@ export { isValidEpost } from './isValidEpost/isValidEpost.cjs';
|
|
|
2
2
|
export { isValidTelefonnummer } from './isValidTelefonnummer/isValidTelefonnummer.cjs';
|
|
3
3
|
export { isValidRegistreringsnummer } from './isValidRegistreringsnummer/isValidRegistreringsnummer.cjs';
|
|
4
4
|
export { isValidChassisnummer } from './isValidChassisnummer/isValidChassisnummer.cjs';
|
|
5
|
-
export { isValidDogId } from './isValidDogId/isValidDogId.cjs';
|
|
6
5
|
export { isExactLength } from './isExactLength/isExactLength.cjs';
|
|
7
6
|
export { isInteger } from './isInteger/isInteger.cjs';
|
|
8
7
|
export { isValidFodselsnummer } from './isValidFodselsnummer/isValidFodselsnummer.cjs';
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsxs as o,jsx as i}from"react/jsx-runtime";import{c as n}from"../../../clsx-BeLtu-UY.js";import{useId as s}from"react";import{formatBytes as c}from"../../utilities/formatters/bytes/formatBytes.js";import"../../utilities/polymorphism/SlotComponent.js";import{Button as
|
|
1
|
+
import{jsxs as o,jsx as i}from"react/jsx-runtime";import{c as n}from"../../../clsx-BeLtu-UY.js";import{useId as s}from"react";import{formatBytes as c}from"../../utilities/formatters/bytes/formatBytes.js";import"../../utilities/polymorphism/SlotComponent.js";import{Button as r}from"../button/Button.js";import{useFileInputContext as t}from"../file-input/internal/fileInputContext.js";import{Flex as e}from"../flex/Flex.js";import"../icon/Icon.js";import"../icon/icons/animated/ArrowVerticalAnimated.js";import"../icon/icons/animated/ArrowHorizontalAnimated.js";import"../icon/icons/animated/PlusRemoveAnimated.js";import"../icon/icons/ArrowDownIcon.js";import"../icon/icons/ArrowLeftIcon.js";import"../icon/icons/ArrowNorthEastIcon.js";import"../icon/icons/ArrowRightIcon.js";import"../icon/icons/ArrowUpIcon.js";import"../icon/icons/CalendarIcon.js";import"../icon/icons/CheckIcon.js";import"../icon/icons/ChevronDownIcon.js";import"../icon/icons/ChevronLeftIcon.js";import"../icon/icons/ChevronRightIcon.js";import"../icon/icons/ChevronUpIcon.js";import"../icon/icons/CloseIcon.js";import"../icon/icons/CopyIcon.js";import"../icon/icons/DotsIcon.js";import"../icon/icons/DragIcon.js";import"../icon/icons/ErrorIcon.js";import"../icon/icons/GreenCheckIcon.js";import"../icon/icons/HamburgerIcon.js";import"../icon/icons/InfoIcon.js";import"../icon/icons/LinkIcon.js";import"../icon/icons/MinusIcon.js";import"../icon/icons/OpenInNewIcon.js";import"../icon/icons/PenIcon.js";import"../icon/icons/PlusIcon.js";import"../icon/icons/QuestionIcon.js";import"../icon/icons/RedCrossIcon.js";import"../icon/icons/SearchIcon.js";import"../icon/icons/SuccessIcon.js";import"../icon/icons/ThumbDownIcon.js";import"../icon/icons/ThumbUpIcon.js";import{TrashCanIcon as a}from"../icon/icons/TrashCanIcon.js";import"../icon/icons/WarningIcon.js";import"../../hooks/useId/useId.js";import{SupportLabel as m}from"../input-group/SupportLabel.js";import"../input-group/InputGroup.js";import{Link as l}from"../link/Link.js";import{Text as p}from"../typography/Text.js";import"../typography/Title.js";const j=j=>{const{children:I,hideThumbnail:f,className:u,fileName:h,fileType:d,fileSize:k,path:_,file:C,state:b,errorLabel:g="Feil",onRemove:w,variant:N="list",...y}=j,x=`jkl-file-preview-${s()}`,v=`${x}-support`,A=t(),L=d.startsWith("image/")&&(C?URL.createObjectURL(C):_),T=o("div",{id:x,className:n(u,"jkl-file",`jkl-file--${N}`),"data-state":b,...y,children:[o(e,{gap:"8",direction:"card"===N?"column":"row",alignItems:"card"===N?"start":"center",className:"jkl-file__content",children:[!f&&i("div",{className:"jkl-file__thumbnail","data-filetype":d,children:L&&i("img",{src:L,alt:""})}),o(e,{gap:"8",alignItems:"center",justifyContent:"space-between",className:"jkl-file__info",children:[_?i(p,{size:"s",className:"jkl-file__name",children:o(l,{href:_,children:[h," ",o("span",{className:"jkl-file__size",children:["(",c(k),")"]})]})}):o(p,{size:"s",className:"jkl-file__name",children:[h," ",o("span",{className:"jkl-file__size",children:["(",c(k),")"]})]}),w&&i(r,{variant:"ghost",className:"jkl-file__button",onClick:w,title:`Fjern ${h}`,icon:i(a,{})})]})]}),"error"===b&&g&&i(m,{className:"jkl-file__support-label",id:v,label:g,labelType:"error"})]});return A?i("li",{children:T}):T};export{j as File};
|
|
2
2
|
//# sourceMappingURL=File.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"File.js","sources":["../../../../src/components/file/File.tsx"],"sourcesContent":["import clsx from \"clsx\";\nimport
|
|
1
|
+
{"version":3,"file":"File.js","sources":["../../../../src/components/file/File.tsx"],"sourcesContent":["import clsx from \"clsx\";\nimport { type ComponentProps, type FC, useId } from \"react\";\nimport { formatBytes } from \"../../utilities/index.js\";\nimport { Button } from \"../button/index.js\";\nimport { useFileInputContext } from \"../file-input/internal/fileInputContext.js\";\nimport { Flex } from \"../flex/index.js\";\nimport { TrashCanIcon } from \"../icon/index.js\";\nimport { SupportLabel } from \"../input-group/index.js\";\nimport { Link } from \"../link/index.js\";\nimport { Text } from \"../typography/index.js\";\nimport type { FileProps } from \"./types.js\";\n\nexport const File: FC<FileProps & ComponentProps<\"div\">> = (props) => {\n const {\n children: _,\n hideThumbnail,\n className,\n fileName,\n fileType,\n fileSize,\n path,\n file,\n state,\n errorLabel = \"Feil\",\n onRemove,\n variant = \"list\",\n ...rest\n } = props;\n\n const id = `jkl-file-preview-${useId()}`;\n const supportId = `${id}-support`;\n\n const context = useFileInputContext();\n\n const imageSrc =\n fileType.startsWith(\"image/\") &&\n (file ? URL.createObjectURL(file) : path);\n\n const fileComponent = (\n <div\n id={id}\n className={clsx(className, \"jkl-file\", `jkl-file--${variant}`)}\n data-state={state}\n {...rest}\n >\n <Flex\n gap=\"8\"\n direction={variant === \"card\" ? \"column\" : \"row\"}\n alignItems={variant === \"card\" ? \"start\" : \"center\"}\n className={\"jkl-file__content\"}\n >\n {!hideThumbnail && (\n <div\n className=\"jkl-file__thumbnail\"\n data-filetype={fileType}\n >\n {imageSrc && <img src={imageSrc} alt=\"\" />}\n </div>\n )}\n <Flex\n gap=\"8\"\n alignItems=\"center\"\n justifyContent=\"space-between\"\n className=\"jkl-file__info\"\n >\n {path ? (\n <Text size=\"s\" className=\"jkl-file__name\">\n <Link href={path}>\n {fileName}{\" \"}\n <span className=\"jkl-file__size\">\n ({formatBytes(fileSize)})\n </span>\n </Link>\n </Text>\n ) : (\n <Text size=\"s\" className=\"jkl-file__name\">\n {fileName}{\" \"}\n <span className=\"jkl-file__size\">\n ({formatBytes(fileSize)})\n </span>\n </Text>\n )}\n {onRemove && (\n <Button\n variant={\"ghost\"}\n className=\"jkl-file__button\"\n onClick={onRemove}\n title={`Fjern ${fileName}`}\n icon={<TrashCanIcon />}\n />\n )}\n </Flex>\n </Flex>\n\n {state === \"error\" && errorLabel && (\n <SupportLabel\n className=\"jkl-file__support-label\"\n id={supportId}\n label={errorLabel}\n labelType={\"error\"}\n />\n )}\n </div>\n );\n\n return context ? <li>{fileComponent}</li> : fileComponent;\n};\n"],"names":["File","props","children","_","hideThumbnail","className","fileName","fileType","fileSize","path","file","state","errorLabel","onRemove","variant","rest","id","useId","supportId","context","useFileInputContext","imageSrc","startsWith","URL","createObjectURL","fileComponent","jsxs","clsx","Flex","gap","direction","alignItems","jsx","src","alt","justifyContent","Text","size","Link","href","formatBytes","Button","onClick","title","icon","TrashCanIcon","SupportLabel","label","labelType"],"mappings":"iiEAYO,MAAMA,EAA+CC,IACxD,MACIC,SAAUC,EACVC,cAAAA,EACAC,UAAAA,EACAC,SAAAA,EACAC,SAAAA,EACAC,SAAAA,EACAC,KAAAA,EACAC,KAAAA,EACAC,MAAAA,EACAC,WAAAA,EAAa,OACbC,SAAAA,EACAC,QAAAA,EAAU,UACPC,GACHd,EAEEe,EAAK,oBAAoBC,MACzBC,EAAY,GAAGF,YAEfG,EAAUC,IAEVC,EACFd,EAASe,WAAW,YACnBZ,EAAOa,IAAIC,gBAAgBd,GAAQD,GAElCgB,EACFC,EAAC,MAAA,CACGV,GAAAA,EACAX,UAAWsB,EAAKtB,EAAW,WAAY,aAAaS,KACpD,aAAYH,KACRI,EAEJb,SAAA,CAAAwB,EAACE,EAAA,CACGC,IAAI,IACJC,UAAuB,SAAZhB,EAAqB,SAAW,MAC3CiB,WAAwB,SAAZjB,EAAqB,QAAU,SAC3CT,UAAW,oBAEVH,SAAA,EAACE,GACE4B,EAAC,MAAA,CACG3B,UAAU,sBACV,gBAAeE,EAEdL,YAAY8B,EAAC,MAAA,CAAIC,IAAKZ,EAAUa,IAAI,OAG7CR,EAACE,EAAA,CACGC,IAAI,IACJE,WAAW,SACXI,eAAe,gBACf9B,UAAU,iBAETH,SAAA,CAAAO,EACGuB,EAACI,GAAKC,KAAK,IAAIhC,UAAU,iBACrBH,SAAAwB,EAACY,EAAA,CAAKC,KAAM9B,EACPP,SAAA,CAAAI,EAAU,IACXoB,EAAC,OAAA,CAAKrB,UAAU,iBAAiBH,SAAA,CAAA,IAC3BsC,EAAYhC,GAAU,YAKpCkB,EAACU,GAAKC,KAAK,IAAIhC,UAAU,iBACpBH,SAAA,CAAAI,EAAU,IACXoB,EAAC,OAAA,CAAKrB,UAAU,iBAAiBH,SAAA,CAAA,IAC3BsC,EAAYhC,GAAU,UAInCK,GACGmB,EAACS,EAAA,CACG3B,QAAS,QACTT,UAAU,mBACVqC,QAAS7B,EACT8B,MAAO,SAASrC,IAChBsC,OAAOC,EAAA,CAAA,WAMZ,UAAVlC,GAAqBC,GAClBoB,EAACc,EAAA,CACGzC,UAAU,0BACVW,GAAIE,EACJ6B,MAAOnC,EACPoC,UAAW,aAM3B,OAAO7B,EAAUa,EAAC,KAAA,CAAI9B,SAAAuB,IAAsBA"}
|
|
@@ -1,10 +1,15 @@
|
|
|
1
|
-
import { MouseEvent } from 'react';
|
|
1
|
+
import { MouseEvent, ReactNode } from 'react';
|
|
2
2
|
export type FileProps = {
|
|
3
3
|
fileName: string;
|
|
4
4
|
fileType: string;
|
|
5
5
|
fileSize: number;
|
|
6
6
|
path?: string;
|
|
7
7
|
errorLabel?: string;
|
|
8
|
+
/**
|
|
9
|
+
* Du kan skjule forhåndsvisning av bilde/filendelse for å spare plass
|
|
10
|
+
* @default false
|
|
11
|
+
*/
|
|
12
|
+
hideThumbnail?: boolean;
|
|
8
13
|
state?: "error" | "loading";
|
|
9
14
|
/**
|
|
10
15
|
* Velg hvordan filene skal vises for brukeren
|
|
@@ -17,4 +22,8 @@ export type FileProps = {
|
|
|
17
22
|
* Gjør det mulig å vise en knapp for fjerning av filene ved filopplasting
|
|
18
23
|
*/
|
|
19
24
|
onRemove?: (e: MouseEvent<HTMLButtonElement>) => void;
|
|
25
|
+
/**
|
|
26
|
+
* @deprecated Blir ikke brukt, vil fjernes i neste major-release
|
|
27
|
+
*/
|
|
28
|
+
children?: ReactNode;
|
|
20
29
|
};
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
export { useAnimatedDetails } from './useAnimatedDetails/useAnimatedDetails.js';
|
|
2
1
|
export { useAnimatedHeight, useAnimatedHeightBetween, useAutoAnimatedHeight, type UseAutoAnimatedHeightOptions, type UseAnimatedHeightOptions, } from './useAnimatedHeight/index.js';
|
|
3
2
|
export { useBrowserPreferences } from './/useBrowserPreferences//useBrowserPreferences.js';
|
|
4
3
|
export { useIntersectionObserver } from './useIntersectionObserver/useIntersectionObserver.js';
|
package/build/es/hooks/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{useAnimatedHeight as e}from"./useAnimatedHeight/useAnimatedHeight.js";import{useAnimatedHeightBetween as s}from"./useAnimatedHeight/useAnimatedHeightBetween.js";import{useAutoAnimatedHeight as i}from"./useAnimatedHeight/useAutoAnimateHeight.js";import{useBrowserPreferences as r}from"./useBrowserPreferences/useBrowserPreferences.js";import{useIntersectionObserver as u}from"./useIntersectionObserver/useIntersectionObserver.js";import{useLocalStorage as t}from"./useLocalStorage/useLocalStorage.js";import{useMutationObserver as o}from"./useMutationObserver/useMutationObserver.js";import{usePreviousValue as a}from"./usePreviousValue/usePreviousValue.js";import{useProgressiveImg as n}from"./useProgressiveImg/useProgressiveImg.js";import{useScreen as m}from"./useScreen/useScreen.js";import{useScrollIntoView as g}from"./useScrollIntoView/useScrollIntoView.js";import{useAriaLiveRegion as c}from"./useAriaLiveRegion/useAriaLiveRegion.js";import{useClickOutside as l}from"./useClickOutside/useClickOutside.js";import{useFocusOutside as p}from"./useFocusOutside/useFocusOutside.js";import{useElementDimensions as v}from"./useElementDimensions/useElementDimensions.js";import{useId as d}from"./useId/useId.js";import{useKeyListener as f}from"./useKeyListener/useKeyListener.js";import{useListNavigation as j}from"./useListNavigation/useListNavigation.js";import{useSwipeGesture as A}from"./useSwipeGesture/useSwipeGesture.js";export{e as useAnimatedHeight,s as useAnimatedHeightBetween,c as useAriaLiveRegion,i as useAutoAnimatedHeight,r as useBrowserPreferences,l as useClickOutside,v as useElementDimensions,p as useFocusOutside,d as useId,u as useIntersectionObserver,f as useKeyListener,j as useListNavigation,t as useLocalStorage,o as useMutationObserver,a as usePreviousValue,n as useProgressiveImg,m as useScreen,g as useScrollIntoView,A as useSwipeGesture};
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
|
@@ -2,7 +2,7 @@ export type { FormatNumberOptions } from './util/formatNumber.js';
|
|
|
2
2
|
export { formatNumber } from './util/formatNumber.js';
|
|
3
3
|
export { parseNumber } from './util/parseNumber.js';
|
|
4
4
|
export type { Formatter, RegisterWithMaskOptions, } from './util/registerWithMask.js';
|
|
5
|
-
export { registerWithMasks
|
|
5
|
+
export { registerWithMasks } from './util/registerWithMask.js';
|
|
6
6
|
export { formatAvstand } from './avstand/formatAvstand.js';
|
|
7
7
|
export { formatBytes } from './bytes/formatBytes.js';
|
|
8
8
|
export { formatDate } from './date/formatDate.js';
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{formatNumber as
|
|
1
|
+
import{formatNumber as m}from"./util/formatNumber.js";import{parseNumber as r}from"./util/parseNumber.js";import{registerWithMasks as a}from"./util/registerWithMask.js";import{formatAvstand as s}from"./avstand/formatAvstand.js";import{formatBytes as o}from"./bytes/formatBytes.js";import{formatDate as t}from"./date/formatDate.js";import{FODSELSNUMMER_REGEX as e,formatFodselsnummer as f}from"./fodselsnummer/formatFodselsnummer.js";import{ORGANISASJONSNUMMER_REGEX as n,formatOrganisasjonsnummer as E}from"./organisasjonsnummer/formatOrganisasjonsnummer.js";import{KONTONUMMER_REGEX as u,formatKontonummer as i}from"./kontonummer/formatKontonummer.js";import{KORTNUMMER_REGEX as N,formatKortnummer as R}from"./kortnummer/formatKortnummer.js";import{TELEFONNUMMER_REGEX as M,formatTelefonnummer as O}from"./telefonnummer/formatTelefonnummer.js";import{formatValuta as j}from"./valuta/formatValuta.js";export{e as FODSELSNUMMER_REGEX,u as KONTONUMMER_REGEX,N as KORTNUMMER_REGEX,n as ORGANISASJONSNUMMER_REGEX,M as TELEFONNUMMER_REGEX,s as formatAvstand,o as formatBytes,t as formatDate,f as formatFodselsnummer,i as formatKontonummer,R as formatKortnummer,m as formatNumber,E as formatOrganisasjonsnummer,O as formatTelefonnummer,j as formatValuta,r as parseNumber,a as registerWithMasks};
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
|
@@ -17,14 +17,6 @@ declare const formatters: {
|
|
|
17
17
|
};
|
|
18
18
|
export type Formatter = keyof typeof formatters;
|
|
19
19
|
export type RegisterWithMaskOptions<T extends FieldValues> = Omit<RegisterOptions<T>, "setValueAs">;
|
|
20
|
-
/** @deprecated Bruk `registerWithMasks` i stedet */
|
|
21
|
-
export declare const registerWithFodselsnummerMask: <T extends FieldValues>(form: UseFormReturn<T>, name: Path<T>, options?: RegisterWithMaskOptions<T>) => UseFormRegisterReturn<Path<T>> & Record<string, unknown>;
|
|
22
|
-
/** @deprecated Bruk `registerWithMasks` i stedet */
|
|
23
|
-
export declare const registerWithKortnummerMask: <T extends FieldValues>(form: UseFormReturn<T>, name: Path<T>, options?: RegisterWithMaskOptions<T>) => UseFormRegisterReturn<Path<T>> & Record<string, unknown>;
|
|
24
|
-
/** @deprecated Bruk `registerWithMasks` i stedet */
|
|
25
|
-
export declare const registerWithKontonummerMask: <T extends FieldValues>(form: UseFormReturn<T>, name: Path<T>, options?: RegisterWithMaskOptions<T>) => UseFormRegisterReturn<Path<T>> & Record<string, unknown>;
|
|
26
|
-
/** @deprecated Bruk `registerWithMasks` i stedet */
|
|
27
|
-
export declare const registerWithTelefonnummerMask: <T extends FieldValues>(form: UseFormReturn<T>, name: Path<T>, options?: RegisterWithMaskOptions<T>) => UseFormRegisterReturn<Path<T>> & Record<string, unknown>;
|
|
28
20
|
/**
|
|
29
21
|
* Hjelpefunksjon for React Hook Form som lar deg bruke formateringsfunksjonene i denne pakken som inputmasker.
|
|
30
22
|
*/
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{formatDateString as e}from"../date/formatDate.js";import{formatFodselsnummer as
|
|
1
|
+
import{formatDateString as e}from"../date/formatDate.js";import{formatFodselsnummer as t}from"../fodselsnummer/formatFodselsnummer.js";import{formatKontonummer as r}from"../kontonummer/formatKontonummer.js";import{formatKortnummer as m}from"../kortnummer/formatKortnummer.js";import{formatOrganisasjonsnummer as n}from"../organisasjonsnummer/formatOrganisasjonsnummer.js";import{formatTelefonnummer as s}from"../telefonnummer/formatTelefonnummer.js";import{formatNumber as o}from"./formatNumber.js";const a={date:e,fodselsnummer:t,kortnummer:m,kontonummer:r,telefonnummer:s,number:o,organisasjonsnummer:n},i=e=>(t,r,m)=>{let n=0,s="",o="";const i={setValueAs:e=>e.replace(/\s/g,""),onChange:i=>{m?.onChange?.(i);let u=0;const l=i.target.value.length;null!==i.target.selectionStart&&(u=i.target.selectionStart);const f=a[e](i.target.value,{partial:!0}),g=f.toString().length;t.setValue(r,f);let c=null;if(["Delete","Backspace"].includes(s)){const e=n-u,t=""===o.trim()?0:g-l;c=n-e+t}else if(u<i.target.value.length||l!==g){c=u+(g-l)}if(null!==c){const e=((e,t,r)=>Math.min(Math.max(e,t),r))(c,0,g);i.target.setSelectionRange(e,e,void 0)}}};m&&Object.assign(i,m);const u=t.register(r,i);return Object.assign(u,{onKeyDown:e=>{o="";const t=e.target,{selectionStart:r,selectionEnd:m,value:a}=t;null!==r&&(n=r,null!==m&&m>r?o=a.slice(r,m):"Backspace"===e.key?o=a[n-1]??"":"Delete"===e.key&&(o=a[n]??"")),s=e.key}})},u=e=>({registerWithFodselsnummerMask:(t,r)=>i("fodselsnummer")(e,t,r),registerWithKortnummerMask:(t,r)=>i("kortnummer")(e,t,r),registerWithKontonummerMask:(t,r)=>i("kontonummer")(e,t,r),registerWithTelefonnummerMask:(t,r)=>i("telefonnummer")(e,t,r),registerWithOrganisasjonsnummerMask:(t,r)=>i("organisasjonsnummer")(e,t,r),registerWithDateMask:(t,r)=>i("date")(e,t,r),registerWithNumber:(t,r)=>i("number")(e,t,r)});export{u as registerWithMasks};
|
|
2
2
|
//# sourceMappingURL=registerWithMask.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registerWithMask.js","sources":["../../../../../src/utilities/formatters/util/registerWithMask.ts"],"sourcesContent":["import type { ChangeEvent, KeyboardEventHandler } from \"react\";\nimport type {\n FieldValues,\n Path,\n PathValue,\n RegisterOptions,\n UseFormRegisterReturn,\n UseFormReturn,\n} from \"react-hook-form\";\nimport { formatDateString } from \"../date/formatDate.js\";\nimport { formatFodselsnummer } from \"../fodselsnummer/formatFodselsnummer.js\";\nimport { formatKontonummer } from \"../kontonummer/formatKontonummer.js\";\nimport { formatKortnummer } from \"../kortnummer/formatKortnummer.js\";\nimport { formatOrganisasjonsnummer } from \"../organisasjonsnummer/formatOrganisasjonsnummer.js\";\nimport { formatTelefonnummer } from \"../telefonnummer/formatTelefonnummer.js\";\nimport { formatNumber } from \"./formatNumber.js\";\n\nconst formatters = {\n date: formatDateString,\n fodselsnummer: formatFodselsnummer,\n kortnummer: formatKortnummer,\n kontonummer: formatKontonummer,\n telefonnummer: formatTelefonnummer,\n number: formatNumber,\n organisasjonsnummer: formatOrganisasjonsnummer,\n};\nexport type Formatter = keyof typeof formatters;\n\nconst clamp = (value: number, min: number, max: number) =>\n Math.min(Math.max(value, min), max);\n\nexport type RegisterWithMaskOptions<T extends FieldValues> = Omit<\n RegisterOptions<T>,\n \"setValueAs\"\n>;\n\nconst registerWithMask =\n (formatter: Formatter) =>\n <T extends FieldValues>(\n form: UseFormReturn<T>,\n name: Path<T>,\n options?: RegisterWithMaskOptions<T>,\n ) => {\n let onKeyDownCaretPosition = 0;\n let onKeyDownKeyPressed = \"\";\n let deletedCharactersOnKeyDown = \"\";\n\n const setValueAs = (value: string) => value.replace(/\\s/g, \"\");\n const onChange = (event: ChangeEvent<HTMLInputElement>) => {\n options?.onChange?.(event);\n\n // save some values before event.target.value change\n let onChangeCaretPosition = 0;\n const inputLength = event.target.value.length;\n\n // type checking formalities\n if (event.target.selectionStart !== null) {\n onChangeCaretPosition = event.target.selectionStart;\n }\n\n const formattedValue = formatters[formatter](event.target.value, {\n partial: true,\n });\n const formattedLength = formattedValue.toString().length;\n\n form.setValue(name, formattedValue as PathValue<T, Path<T>>);\n\n let newPosition: number | null = null;\n\n if ([\"Delete\", \"Backspace\"].includes(onKeyDownKeyPressed)) {\n // handle removing content\n // calculate how much to move the caret, this also accounts for removing sections of text\n const delta = onKeyDownCaretPosition - onChangeCaretPosition;\n const formattedLengthChange =\n deletedCharactersOnKeyDown.trim() === \"\"\n ? 0\n : formattedLength - inputLength;\n\n // calculate new caret position (- because we move backwards)\n newPosition =\n onKeyDownCaretPosition - delta + formattedLengthChange;\n } else if (\n onChangeCaretPosition < event.target.value.length ||\n inputLength !== formattedLength\n ) {\n // handle adding content from inside the string\n // calculate how much to move the caret forwards\n const delta = formattedLength - inputLength;\n\n // calculate new caret position (+ because we move forwards)\n newPosition = onChangeCaretPosition + delta;\n }\n\n if (newPosition !== null) {\n const clampedPosition = clamp(newPosition, 0, formattedLength);\n\n event.target.setSelectionRange(\n clampedPosition,\n clampedPosition,\n undefined,\n );\n }\n };\n\n const registerOptions: RegisterOptions<T, Path<T>> = {\n setValueAs,\n onChange,\n };\n if (options) {\n Object.assign(registerOptions, options);\n }\n const register = form.register(name, registerOptions);\n\n // save the caret position before the change occured\n const onKeyDown: KeyboardEventHandler<HTMLInputElement> = (event) => {\n deletedCharactersOnKeyDown = \"\";\n\n const input = event.target as HTMLInputElement;\n const { selectionStart, selectionEnd, value } = input;\n\n if (selectionStart !== null) {\n onKeyDownCaretPosition = selectionStart;\n\n if (selectionEnd !== null && selectionEnd > selectionStart) {\n deletedCharactersOnKeyDown = value.slice(\n selectionStart,\n selectionEnd,\n );\n } else if (event.key === \"Backspace\") {\n deletedCharactersOnKeyDown =\n value[onKeyDownCaretPosition - 1] ?? \"\";\n } else if (event.key === \"Delete\") {\n deletedCharactersOnKeyDown =\n value[onKeyDownCaretPosition] ?? \"\";\n }\n }\n onKeyDownKeyPressed = event.key;\n };\n\n // add onKeyDown event handler to the registered input\n const extra: Record<string, unknown> = {\n onKeyDown,\n };\n\n return Object.assign(register, extra);\n };\n\n/** @deprecated Bruk `registerWithMasks` i stedet */\nexport const registerWithFodselsnummerMask = registerWithMask(\"fodselsnummer\");\n/** @deprecated Bruk `registerWithMasks` i stedet */\nexport const registerWithKortnummerMask = registerWithMask(\"kortnummer\");\n/** @deprecated Bruk `registerWithMasks` i stedet */\nexport const registerWithKontonummerMask = registerWithMask(\"kontonummer\");\n/** @deprecated Bruk `registerWithMasks` i stedet */\nexport const registerWithTelefonnummerMask = registerWithMask(\"telefonnummer\");\n\n/**\n * Hjelpefunksjon for React Hook Form som lar deg bruke formateringsfunksjonene i denne pakken som inputmasker.\n */\nexport const registerWithMasks = <T extends FieldValues>(\n form: UseFormReturn<T>,\n) => ({\n registerWithFodselsnummerMask: (\n name: Path<T>,\n options?: RegisterWithMaskOptions<T>,\n ): UseFormRegisterReturn =>\n registerWithMask(\"fodselsnummer\")<T>(form, name, options),\n registerWithKortnummerMask: (\n name: Path<T>,\n options?: RegisterWithMaskOptions<T>,\n ): UseFormRegisterReturn =>\n registerWithMask(\"kortnummer\")<T>(form, name, options),\n registerWithKontonummerMask: (\n name: Path<T>,\n options?: RegisterWithMaskOptions<T>,\n ): UseFormRegisterReturn =>\n registerWithMask(\"kontonummer\")<T>(form, name, options),\n registerWithTelefonnummerMask: (\n name: Path<T>,\n options?: RegisterWithMaskOptions<T>,\n ): UseFormRegisterReturn =>\n registerWithMask(\"telefonnummer\")<T>(form, name, options),\n registerWithOrganisasjonsnummerMask: (\n name: Path<T>,\n options?: RegisterWithMaskOptions<T>,\n ): UseFormRegisterReturn =>\n registerWithMask(\"organisasjonsnummer\")<T>(form, name, options),\n registerWithDateMask: (\n name: Path<T>,\n options?: RegisterWithMaskOptions<T>,\n ): UseFormRegisterReturn =>\n registerWithMask(\"date\")<T>(form, name, options),\n registerWithNumber: (\n name: Path<T>,\n options?: RegisterWithMaskOptions<T>,\n ): UseFormRegisterReturn =>\n registerWithMask(\"number\")<T>(form, name, options),\n});\n"],"names":["formatters","date","formatDateString","fodselsnummer","formatFodselsnummer","kortnummer","formatKortnummer","kontonummer","formatKontonummer","telefonnummer","formatTelefonnummer","number","formatNumber","organisasjonsnummer","formatOrganisasjonsnummer","registerWithMask","formatter","form","name","options","onKeyDownCaretPosition","onKeyDownKeyPressed","deletedCharactersOnKeyDown","registerOptions","setValueAs","value","replace","onChange","event","onChangeCaretPosition","inputLength","target","length","selectionStart","formattedValue","partial","formattedLength","toString","setValue","newPosition","includes","delta","formattedLengthChange","trim","clampedPosition","min","max","Math","clamp","setSelectionRange","Object","assign","register","onKeyDown","input","selectionEnd","slice","key","registerWithFodselsnummerMask","registerWithKortnummerMask","registerWithKontonummerMask","registerWithTelefonnummerMask","registerWithMasks","registerWithOrganisasjonsnummerMask","registerWithDateMask","registerWithNumber"],"mappings":"mfAiBA,MAAMA,EAAa,CACfC,KAAMC,EACNC,cAAeC,EACfC,WAAYC,EACZC,YAAaC,EACbC,cAAeC,EACfC,OAAQC,EACRC,oBAAqBC,GAYnBC,EACDC,GACD,CACIC,EACAC,EACAC,KAEA,IAAIC,EAAyB,EACzBC,EAAsB,GACtBC,EAA6B,GA2DjC,MAAMC,EAA+C,CACjDC,WA1DgBC,GAAkBA,EAAMC,QAAQ,MAAO,IA2DvDC,SA1DcC,IACdT,GAASQ,WAAWC,GAGpB,IAAIC,EAAwB,EAC5B,MAAMC,EAAcF,EAAMG,OAAON,MAAMO,OAGH,OAAhCJ,EAAMG,OAAOE,iBACbJ,EAAwBD,EAAMG,OAAOE,gBAGzC,MAAMC,EAAiBlC,EAAWgB,GAAWY,EAAMG,OAAON,MAAO,CAC7DU,SAAS,IAEPC,EAAkBF,EAAeG,WAAWL,OAElDf,EAAKqB,SAASpB,EAAMgB,GAEpB,IAAIK,EAA6B,KAEjC,GAAI,CAAC,SAAU,aAAaC,SAASnB,GAAsB,CAGvD,MAAMoB,EAAQrB,EAAyBS,EACjCa,EACoC,KAAtCpB,EAA2BqB,OACrB,EACAP,EAAkBN,EAG5BS,EACInB,EAAyBqB,EAAQC,CACzC,SACIb,EAAwBD,EAAMG,OAAON,MAAMO,QAC3CF,IAAgBM,EAClB,CAMEG,EAAcV,GAHAO,EAAkBN,EAIpC,CAEA,GAAoB,OAAhBS,EAAsB,CACtB,MAAMK,EAlER,EAACnB,EAAeoB,EAAaC,IACvCC,KAAKF,IAAIE,KAAKD,IAAIrB,EAAOoB,GAAMC,GAiEKE,CAAMT,EAAa,EAAGH,GAE9CR,EAAMG,OAAOkB,kBACTL,EACAA,OACA,EAER,IAOAzB,GACA+B,OAAOC,OAAO5B,EAAiBJ,GAEnC,MAAMiC,EAAWnC,EAAKmC,SAASlC,EAAMK,GAiCrC,OAAO2B,OAAOC,OAAOC,EAJkB,CACnCC,UA3BuDzB,IACvDN,EAA6B,GAE7B,MAAMgC,EAAQ1B,EAAMG,QACZE,eAAAA,EAAgBsB,aAAAA,EAAc9B,MAAAA,GAAU6B,EAEzB,OAAnBrB,IACAb,EAAyBa,EAEJ,OAAjBsB,GAAyBA,EAAetB,EACxCX,EAA6BG,EAAM+B,MAC/BvB,EACAsB,GAEiB,cAAd3B,EAAM6B,IACbnC,EACIG,EAAML,EAAyB,IAAM,GACpB,WAAdQ,EAAM6B,MACbnC,EACIG,EAAML,IAA2B,KAG7CC,EAAsBO,EAAM6B,QAY3BC,EAAgC3C,EAAiB,iBAEjD4C,EAA6B5C,EAAiB,cAE9C6C,EAA8B7C,EAAiB,eAE/C8C,EAAgC9C,EAAiB,iBAKjD+C,EACT7C,IAAAA,CAEAyC,8BAA+B,CAC3BxC,EACAC,IAEAJ,EAAiB,gBAAjBA,CAAqCE,EAAMC,EAAMC,GACrDwC,2BAA4B,CACxBzC,EACAC,IAEAJ,EAAiB,aAAjBA,CAAkCE,EAAMC,EAAMC,GAClDyC,4BAA6B,CACzB1C,EACAC,IAEAJ,EAAiB,cAAjBA,CAAmCE,EAAMC,EAAMC,GACnD0C,8BAA+B,CAC3B3C,EACAC,IAEAJ,EAAiB,gBAAjBA,CAAqCE,EAAMC,EAAMC,GACrD4C,oCAAqC,CACjC7C,EACAC,IAEAJ,EAAiB,sBAAjBA,CAA2CE,EAAMC,EAAMC,GAC3D6C,qBAAsB,CAClB9C,EACAC,IAEAJ,EAAiB,OAAjBA,CAA4BE,EAAMC,EAAMC,GAC5C8C,mBAAoB,CAChB/C,EACAC,IAEAJ,EAAiB,SAAjBA,CAA8BE,EAAMC,EAAMC"}
|
|
1
|
+
{"version":3,"file":"registerWithMask.js","sources":["../../../../../src/utilities/formatters/util/registerWithMask.ts"],"sourcesContent":["import type { ChangeEvent, KeyboardEventHandler } from \"react\";\nimport type {\n FieldValues,\n Path,\n PathValue,\n RegisterOptions,\n UseFormRegisterReturn,\n UseFormReturn,\n} from \"react-hook-form\";\nimport { formatDateString } from \"../date/formatDate.js\";\nimport { formatFodselsnummer } from \"../fodselsnummer/formatFodselsnummer.js\";\nimport { formatKontonummer } from \"../kontonummer/formatKontonummer.js\";\nimport { formatKortnummer } from \"../kortnummer/formatKortnummer.js\";\nimport { formatOrganisasjonsnummer } from \"../organisasjonsnummer/formatOrganisasjonsnummer.js\";\nimport { formatTelefonnummer } from \"../telefonnummer/formatTelefonnummer.js\";\nimport { formatNumber } from \"./formatNumber.js\";\n\nconst formatters = {\n date: formatDateString,\n fodselsnummer: formatFodselsnummer,\n kortnummer: formatKortnummer,\n kontonummer: formatKontonummer,\n telefonnummer: formatTelefonnummer,\n number: formatNumber,\n organisasjonsnummer: formatOrganisasjonsnummer,\n};\nexport type Formatter = keyof typeof formatters;\n\nconst clamp = (value: number, min: number, max: number) =>\n Math.min(Math.max(value, min), max);\n\nexport type RegisterWithMaskOptions<T extends FieldValues> = Omit<\n RegisterOptions<T>,\n \"setValueAs\"\n>;\n\nconst registerWithMask =\n (formatter: Formatter) =>\n <T extends FieldValues>(\n form: UseFormReturn<T>,\n name: Path<T>,\n options?: RegisterWithMaskOptions<T>,\n ) => {\n let onKeyDownCaretPosition = 0;\n let onKeyDownKeyPressed = \"\";\n let deletedCharactersOnKeyDown = \"\";\n\n const setValueAs = (value: string) => value.replace(/\\s/g, \"\");\n const onChange = (event: ChangeEvent<HTMLInputElement>) => {\n options?.onChange?.(event);\n\n // save some values before event.target.value change\n let onChangeCaretPosition = 0;\n const inputLength = event.target.value.length;\n\n // type checking formalities\n if (event.target.selectionStart !== null) {\n onChangeCaretPosition = event.target.selectionStart;\n }\n\n const formattedValue = formatters[formatter](event.target.value, {\n partial: true,\n });\n const formattedLength = formattedValue.toString().length;\n\n form.setValue(name, formattedValue as PathValue<T, Path<T>>);\n\n let newPosition: number | null = null;\n\n if ([\"Delete\", \"Backspace\"].includes(onKeyDownKeyPressed)) {\n // handle removing content\n // calculate how much to move the caret, this also accounts for removing sections of text\n const delta = onKeyDownCaretPosition - onChangeCaretPosition;\n const formattedLengthChange =\n deletedCharactersOnKeyDown.trim() === \"\"\n ? 0\n : formattedLength - inputLength;\n\n // calculate new caret position (- because we move backwards)\n newPosition =\n onKeyDownCaretPosition - delta + formattedLengthChange;\n } else if (\n onChangeCaretPosition < event.target.value.length ||\n inputLength !== formattedLength\n ) {\n // handle adding content from inside the string\n // calculate how much to move the caret forwards\n const delta = formattedLength - inputLength;\n\n // calculate new caret position (+ because we move forwards)\n newPosition = onChangeCaretPosition + delta;\n }\n\n if (newPosition !== null) {\n const clampedPosition = clamp(newPosition, 0, formattedLength);\n\n event.target.setSelectionRange(\n clampedPosition,\n clampedPosition,\n undefined,\n );\n }\n };\n\n const registerOptions: RegisterOptions<T, Path<T>> = {\n setValueAs,\n onChange,\n };\n if (options) {\n Object.assign(registerOptions, options);\n }\n const register = form.register(name, registerOptions);\n\n // save the caret position before the change occured\n const onKeyDown: KeyboardEventHandler<HTMLInputElement> = (event) => {\n deletedCharactersOnKeyDown = \"\";\n\n const input = event.target as HTMLInputElement;\n const { selectionStart, selectionEnd, value } = input;\n\n if (selectionStart !== null) {\n onKeyDownCaretPosition = selectionStart;\n\n if (selectionEnd !== null && selectionEnd > selectionStart) {\n deletedCharactersOnKeyDown = value.slice(\n selectionStart,\n selectionEnd,\n );\n } else if (event.key === \"Backspace\") {\n deletedCharactersOnKeyDown =\n value[onKeyDownCaretPosition - 1] ?? \"\";\n } else if (event.key === \"Delete\") {\n deletedCharactersOnKeyDown =\n value[onKeyDownCaretPosition] ?? \"\";\n }\n }\n onKeyDownKeyPressed = event.key;\n };\n\n // add onKeyDown event handler to the registered input\n const extra: Record<string, unknown> = {\n onKeyDown,\n };\n\n return Object.assign(register, extra);\n };\n\n/**\n * Hjelpefunksjon for React Hook Form som lar deg bruke formateringsfunksjonene i denne pakken som inputmasker.\n */\nexport const registerWithMasks = <T extends FieldValues>(\n form: UseFormReturn<T>,\n) => ({\n registerWithFodselsnummerMask: (\n name: Path<T>,\n options?: RegisterWithMaskOptions<T>,\n ): UseFormRegisterReturn =>\n registerWithMask(\"fodselsnummer\")<T>(form, name, options),\n registerWithKortnummerMask: (\n name: Path<T>,\n options?: RegisterWithMaskOptions<T>,\n ): UseFormRegisterReturn =>\n registerWithMask(\"kortnummer\")<T>(form, name, options),\n registerWithKontonummerMask: (\n name: Path<T>,\n options?: RegisterWithMaskOptions<T>,\n ): UseFormRegisterReturn =>\n registerWithMask(\"kontonummer\")<T>(form, name, options),\n registerWithTelefonnummerMask: (\n name: Path<T>,\n options?: RegisterWithMaskOptions<T>,\n ): UseFormRegisterReturn =>\n registerWithMask(\"telefonnummer\")<T>(form, name, options),\n registerWithOrganisasjonsnummerMask: (\n name: Path<T>,\n options?: RegisterWithMaskOptions<T>,\n ): UseFormRegisterReturn =>\n registerWithMask(\"organisasjonsnummer\")<T>(form, name, options),\n registerWithDateMask: (\n name: Path<T>,\n options?: RegisterWithMaskOptions<T>,\n ): UseFormRegisterReturn =>\n registerWithMask(\"date\")<T>(form, name, options),\n registerWithNumber: (\n name: Path<T>,\n options?: RegisterWithMaskOptions<T>,\n ): UseFormRegisterReturn =>\n registerWithMask(\"number\")<T>(form, name, options),\n});\n"],"names":["formatters","date","formatDateString","fodselsnummer","formatFodselsnummer","kortnummer","formatKortnummer","kontonummer","formatKontonummer","telefonnummer","formatTelefonnummer","number","formatNumber","organisasjonsnummer","formatOrganisasjonsnummer","registerWithMask","formatter","form","name","options","onKeyDownCaretPosition","onKeyDownKeyPressed","deletedCharactersOnKeyDown","registerOptions","setValueAs","value","replace","onChange","event","onChangeCaretPosition","inputLength","target","length","selectionStart","formattedValue","partial","formattedLength","toString","setValue","newPosition","includes","delta","formattedLengthChange","trim","clampedPosition","min","max","Math","clamp","setSelectionRange","Object","assign","register","onKeyDown","input","selectionEnd","slice","key","registerWithMasks","registerWithFodselsnummerMask","registerWithKortnummerMask","registerWithKontonummerMask","registerWithTelefonnummerMask","registerWithOrganisasjonsnummerMask","registerWithDateMask","registerWithNumber"],"mappings":"mfAiBA,MAAMA,EAAa,CACfC,KAAMC,EACNC,cAAeC,EACfC,WAAYC,EACZC,YAAaC,EACbC,cAAeC,EACfC,OAAQC,EACRC,oBAAqBC,GAYnBC,EACDC,GACD,CACIC,EACAC,EACAC,KAEA,IAAIC,EAAyB,EACzBC,EAAsB,GACtBC,EAA6B,GA2DjC,MAAMC,EAA+C,CACjDC,WA1DgBC,GAAkBA,EAAMC,QAAQ,MAAO,IA2DvDC,SA1DcC,IACdT,GAASQ,WAAWC,GAGpB,IAAIC,EAAwB,EAC5B,MAAMC,EAAcF,EAAMG,OAAON,MAAMO,OAGH,OAAhCJ,EAAMG,OAAOE,iBACbJ,EAAwBD,EAAMG,OAAOE,gBAGzC,MAAMC,EAAiBlC,EAAWgB,GAAWY,EAAMG,OAAON,MAAO,CAC7DU,SAAS,IAEPC,EAAkBF,EAAeG,WAAWL,OAElDf,EAAKqB,SAASpB,EAAMgB,GAEpB,IAAIK,EAA6B,KAEjC,GAAI,CAAC,SAAU,aAAaC,SAASnB,GAAsB,CAGvD,MAAMoB,EAAQrB,EAAyBS,EACjCa,EACoC,KAAtCpB,EAA2BqB,OACrB,EACAP,EAAkBN,EAG5BS,EACInB,EAAyBqB,EAAQC,CACzC,SACIb,EAAwBD,EAAMG,OAAON,MAAMO,QAC3CF,IAAgBM,EAClB,CAMEG,EAAcV,GAHAO,EAAkBN,EAIpC,CAEA,GAAoB,OAAhBS,EAAsB,CACtB,MAAMK,EAlER,EAACnB,EAAeoB,EAAaC,IACvCC,KAAKF,IAAIE,KAAKD,IAAIrB,EAAOoB,GAAMC,GAiEKE,CAAMT,EAAa,EAAGH,GAE9CR,EAAMG,OAAOkB,kBACTL,EACAA,OACA,EAER,IAOAzB,GACA+B,OAAOC,OAAO5B,EAAiBJ,GAEnC,MAAMiC,EAAWnC,EAAKmC,SAASlC,EAAMK,GAiCrC,OAAO2B,OAAOC,OAAOC,EAJkB,CACnCC,UA3BuDzB,IACvDN,EAA6B,GAE7B,MAAMgC,EAAQ1B,EAAMG,QACZE,eAAAA,EAAgBsB,aAAAA,EAAc9B,MAAAA,GAAU6B,EAEzB,OAAnBrB,IACAb,EAAyBa,EAEJ,OAAjBsB,GAAyBA,EAAetB,EACxCX,EAA6BG,EAAM+B,MAC/BvB,EACAsB,GAEiB,cAAd3B,EAAM6B,IACbnC,EACIG,EAAML,EAAyB,IAAM,GACpB,WAAdQ,EAAM6B,MACbnC,EACIG,EAAML,IAA2B,KAG7CC,EAAsBO,EAAM6B,QAc3BC,EACTzC,IAAAA,CAEA0C,8BAA+B,CAC3BzC,EACAC,IAEAJ,EAAiB,gBAAjBA,CAAqCE,EAAMC,EAAMC,GACrDyC,2BAA4B,CACxB1C,EACAC,IAEAJ,EAAiB,aAAjBA,CAAkCE,EAAMC,EAAMC,GAClD0C,4BAA6B,CACzB3C,EACAC,IAEAJ,EAAiB,cAAjBA,CAAmCE,EAAMC,EAAMC,GACnD2C,8BAA+B,CAC3B5C,EACAC,IAEAJ,EAAiB,gBAAjBA,CAAqCE,EAAMC,EAAMC,GACrD4C,oCAAqC,CACjC7C,EACAC,IAEAJ,EAAiB,sBAAjBA,CAA2CE,EAAMC,EAAMC,GAC3D6C,qBAAsB,CAClB9C,EACAC,IAEAJ,EAAiB,OAAjBA,CAA4BE,EAAMC,EAAMC,GAC5C8C,mBAAoB,CAChB/C,EACAC,IAEAJ,EAAiB,SAAjBA,CAA8BE,EAAMC,EAAMC"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{u as s}from"../../index-C1iqmqvT.js";import{formatNumber as a}from"./formatters/util/formatNumber.js";import{parseNumber as r}from"./formatters/util/parseNumber.js";import{
|
|
1
|
+
import{u as s}from"../../index-C1iqmqvT.js";import{formatNumber as a}from"./formatters/util/formatNumber.js";import{parseNumber as r}from"./formatters/util/parseNumber.js";import{registerWithMasks as m}from"./formatters/util/registerWithMask.js";import{formatAvstand as e}from"./formatters/avstand/formatAvstand.js";import{formatBytes as o}from"./formatters/bytes/formatBytes.js";import{formatDate as t}from"./formatters/date/formatDate.js";import{FODSELSNUMMER_REGEX as i,formatFodselsnummer as n}from"./formatters/fodselsnummer/formatFodselsnummer.js";import{ORGANISASJONSNUMMER_REGEX as f,formatOrganisasjonsnummer as l}from"./formatters/organisasjonsnummer/formatOrganisasjonsnummer.js";import{KONTONUMMER_REGEX as u,formatKontonummer as d}from"./formatters/kontonummer/formatKontonummer.js";import{KORTNUMMER_REGEX as p,formatKortnummer as g}from"./formatters/kortnummer/formatKortnummer.js";import{TELEFONNUMMER_REGEX as E,formatTelefonnummer as j}from"./formatters/telefonnummer/formatTelefonnummer.js";import{formatValuta as R}from"./formatters/valuta/formatValuta.js";import{getThemeAndSize as N}from"./getThemeAndSize.js";import{mergeRefs as V,useMergeRefs as M}from"./mergeRefs.js";import{mergeProps as h}from"./polymorphism/mergeProps.js";import{SlotComponent as O}from"./polymorphism/SlotComponent.js";import{initTabListener as S}from"./tabListener.js";import{isValidEpost as T}from"./validators/isValidEpost/isValidEpost.js";import{isValidTelefonnummer as v}from"./validators/isValidTelefonnummer/isValidTelefonnummer.js";import{isValidRegistreringsnummer as A}from"./validators/isValidRegistreringsnummer/isValidRegistreringsnummer.js";import{isValidChassisnummer as G}from"./validators/isValidChassisnummer/isValidChassisnummer.js";import{isExactLength as C}from"./validators/isExactLength/isExactLength.js";import{isInteger as F}from"./validators/isInteger/isInteger.js";import{isValidFodselsnummer as L}from"./validators/isValidFodselsnummer/isValidFodselsnummer.js";import{isValidOrganisasjonsnummer as b}from"./validators/isValidOrganisasjonsnummer/isValidOrganisasjonsnummer.js";import{isValidName as I}from"./validators/isValidName/isValidName.js";import{hasMinimumWords as K}from"./validators/hasMinimumWords/hasMinimumWords.js";import{hasNoIllegalCharacters as U}from"./validators/hasNoIllegalCharacters/hasNoIllegalCharacters.js";import{getValuePair as X}from"./valuePair.js";import{BRANDS as _}from"./types.js";export{_ as BRANDS,i as FODSELSNUMMER_REGEX,u as KONTONUMMER_REGEX,p as KORTNUMMER_REGEX,f as ORGANISASJONSNUMMER_REGEX,O as SlotComponent,E as TELEFONNUMMER_REGEX,e as formatAvstand,o as formatBytes,t as formatDate,n as formatFodselsnummer,d as formatKontonummer,g as formatKortnummer,a as formatNumber,l as formatOrganisasjonsnummer,j as formatTelefonnummer,R as formatValuta,N as getThemeAndSize,X as getValuePair,K as hasMinimumWords,U as hasNoIllegalCharacters,S as initTabListener,C as isExactLength,F as isInteger,G as isValidChassisnummer,T as isValidEpost,L as isValidFodselsnummer,I as isValidName,b as isValidOrganisasjonsnummer,A as isValidRegistreringsnummer,v as isValidTelefonnummer,h as mergeProps,V as mergeRefs,r as parseNumber,m as registerWithMasks,s as unicode,M as useMergeRefs};
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
|
@@ -2,7 +2,6 @@ export { isValidEpost } from './isValidEpost/isValidEpost.js';
|
|
|
2
2
|
export { isValidTelefonnummer } from './isValidTelefonnummer/isValidTelefonnummer.js';
|
|
3
3
|
export { isValidRegistreringsnummer } from './isValidRegistreringsnummer/isValidRegistreringsnummer.js';
|
|
4
4
|
export { isValidChassisnummer } from './isValidChassisnummer/isValidChassisnummer.js';
|
|
5
|
-
export { isValidDogId } from './isValidDogId/isValidDogId.js';
|
|
6
5
|
export { isExactLength } from './isExactLength/isExactLength.js';
|
|
7
6
|
export { isInteger } from './isInteger/isInteger.js';
|
|
8
7
|
export { isValidFodselsnummer } from './isValidFodselsnummer/isValidFodselsnummer.js';
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{isValidEpost as s}from"./isValidEpost/isValidEpost.js";import{isValidTelefonnummer as i}from"./isValidTelefonnummer/isValidTelefonnummer.js";import{isValidRegistreringsnummer as a}from"./isValidRegistreringsnummer/isValidRegistreringsnummer.js";import{isValidChassisnummer as m}from"./isValidChassisnummer/isValidChassisnummer.js";import{
|
|
1
|
+
import{isValidEpost as s}from"./isValidEpost/isValidEpost.js";import{isValidTelefonnummer as i}from"./isValidTelefonnummer/isValidTelefonnummer.js";import{isValidRegistreringsnummer as a}from"./isValidRegistreringsnummer/isValidRegistreringsnummer.js";import{isValidChassisnummer as m}from"./isValidChassisnummer/isValidChassisnummer.js";import{isExactLength as r}from"./isExactLength/isExactLength.js";import{isInteger as e}from"./isInteger/isInteger.js";import{isValidFodselsnummer as l}from"./isValidFodselsnummer/isValidFodselsnummer.js";import{isValidOrganisasjonsnummer as n}from"./isValidOrganisasjonsnummer/isValidOrganisasjonsnummer.js";import{isValidName as o}from"./isValidName/isValidName.js";import{hasMinimumWords as d}from"./hasMinimumWords/hasMinimumWords.js";import{hasNoIllegalCharacters as t}from"./hasNoIllegalCharacters/hasNoIllegalCharacters.js";export{d as hasMinimumWords,t as hasNoIllegalCharacters,r as isExactLength,e as isInteger,m as isValidChassisnummer,s as isValidEpost,l as isValidFodselsnummer,o as isValidName,n as isValidOrganisasjonsnummer,a as isValidRegistreringsnummer,i as isValidTelefonnummer};
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
package/codemods/CODEMODS.md
CHANGED
|
@@ -120,6 +120,22 @@ Tailwind-modifikatorer (`hover:`, `dark:`, `md:`, `focus:` o.l.), opacity-modifi
|
|
|
120
120
|
|
|
121
121
|
---
|
|
122
122
|
|
|
123
|
+
#### Fjernede maskefunksjoner
|
|
124
|
+
|
|
125
|
+
De frittstående, utgåtte maskefunksjonene er fjernet. Kall og importer skrives om
|
|
126
|
+
til `registerWithMasks(form)`-API-et.
|
|
127
|
+
|
|
128
|
+
| Fjernet funksjon | Erstatning |
|
|
129
|
+
|---|---|
|
|
130
|
+
| `registerWithFodselsnummerMask(form, name, options)` | `registerWithMasks(form).registerWithFodselsnummerMask(name, options)` |
|
|
131
|
+
| `registerWithKontonummerMask(form, name, options)` | `registerWithMasks(form).registerWithKontonummerMask(name, options)` |
|
|
132
|
+
| `registerWithKortnummerMask(form, name, options)` | `registerWithMasks(form).registerWithKortnummerMask(name, options)` |
|
|
133
|
+
| `registerWithTelefonnummerMask(form, name, options)` | `registerWithMasks(form).registerWithTelefonnummerMask(name, options)` |
|
|
134
|
+
|
|
135
|
+
Importer fra `@fremtind/jokul/utilities` (og gamle `@fremtind/jokul/core`) ryddes:
|
|
136
|
+
de fjernede navnene tas ut og `registerWithMasks` legges til. Aliaserte importer
|
|
137
|
+
(`... as x`) migreres ikke automatisk og gir et varsel.
|
|
138
|
+
|
|
123
139
|
### Varsler (krever manuell vurdering)
|
|
124
140
|
|
|
125
141
|
Disse mønstrene kan ikke omdøpes automatisk. Codemoden skriver ut ett varsel per fil der mønsteret finnes.
|