{"version":3,"file":"Modal.cjs","sources":["../../../../src/components/modal/Modal.tsx"],"sourcesContent":["import clsx from \"clsx\";\nimport React, { forwardRef } from \"react\";\nimport { IconButton } from \"../icon-button/IconButton.js\";\nimport type { IconButtonProps } from \"../icon-button/types.js\";\nimport { CloseIcon } from \"../icon/icons/CloseIcon.js\";\nimport type {\n    BaseModalProps,\n    ModalConfig,\n    ModalContainerProps,\n    ModalOverlayProps,\n    ModalProps,\n} from \"./types.js\";\n\n/**\n * Ment å brukes med `useModal`.\n */\nexport const ModalContainer = forwardRef<HTMLDivElement, ModalContainerProps>(\n    ({ className, placement = \"center\", slideIn, ...rest }, ref) => {\n        // TODO: 'data-portal' fjernes når modalen tar i bruk Popover komponenten. Issue: https://github.com/fremtind/jokul/issues/4356\n        return (\n            <div\n                className={clsx(\n                    \"jkl-modal-container\",\n                    `jkl-modal-container--placement-${placement}`,\n                    { \"jkl-modal-container--slide-in\": slideIn },\n                    className,\n                )}\n                {...rest}\n                ref={ref}\n                data-portal\n            />\n        );\n    },\n);\nModalContainer.displayName = \"ModalContainer\";\n\n/**\n * Ment å brukes med `useModal`.\n */\nexport const ModalOverlay = forwardRef<HTMLDivElement, ModalOverlayProps>(\n    ({ className, transparent, ...rest }, ref) => (\n        <div\n            className={clsx(\"jkl-modal-overlay\", className, {\n                \"jkl-modal-overlay--transparent\": transparent,\n            })}\n            {...rest}\n            ref={ref}\n        />\n    ),\n);\nModalOverlay.displayName = \"ModalOverlay\";\n\n/**\n * Ment å brukes med `useModal`.\n */\nexport const Modal = forwardRef<HTMLElement, ModalConfig[\"modal\"] & ModalProps>(\n    ({ className, component, padding, style, ...rest }, ref) => {\n        const C = component || \"div\";\n        return (\n            <C\n                className={clsx(\"jkl jkl-modal\", className)}\n                style={\n                    {\n                        \"--modal-padding\": padding\n                            ? `var(--jkl-spacing-${padding})`\n                            : undefined,\n                        ...style,\n                    } as React.CSSProperties\n                }\n                {...rest}\n                ref={ref}\n            />\n        );\n    },\n);\nModal.displayName = \"Modal\";\n\n/**\n * Ment å brukes med `useModal`.\n */\nexport const ModalHeader = forwardRef<HTMLDivElement, BaseModalProps>(\n    ({ className, ...rest }, ref) => (\n        <div\n            className={clsx(\"jkl-modal-header\", className)}\n            {...rest}\n            ref={ref}\n        />\n    ),\n);\nModalHeader.displayName = \"ModalHeader\";\n\n/**\n * Ment å brukes med `useModal`.\n */\nexport const ModalTitle = forwardRef<\n    HTMLParagraphElement,\n    ModalConfig[\"title\"] & BaseModalProps\n>(({ className, ...rest }, ref) => (\n    <p className={clsx(\"jkl-modal-title\", className)} {...rest} ref={ref} />\n));\nModalTitle.displayName = \"ModalTitle\";\n\n/**\n * Ment å brukes med `useModal`.\n */\nexport const ModalCloseButton = forwardRef<\n    HTMLButtonElement,\n    Omit<ModalConfig[\"closeButton\"], \"onClick\"> &\n        BaseModalProps &\n        IconButtonProps\n>(({ className, ...rest }, ref) => (\n    <IconButton\n        className={clsx(\"jkl-modal-close\", className)}\n        data-testautoid=\"jkl-modal-close\"\n        {...rest}\n        ref={ref}\n    >\n        <CloseIcon variant=\"medium\" />\n    </IconButton>\n));\nModalCloseButton.displayName = \"ModalCloseButton\";\n\n/**\n * Ment å brukes med `useModal`.\n */\nexport const ModalBody = forwardRef<HTMLDivElement, BaseModalProps>(\n    ({ className, ...rest }, ref) => (\n        <div\n            className={clsx(\"jkl-modal-body\", className)}\n            {...rest}\n            ref={ref}\n        />\n    ),\n);\nModalBody.displayName = \"ModalBody\";\n\n/**\n * Ment å brukes med `useModal`.\n */\nexport const ModalActions = forwardRef<HTMLDivElement, BaseModalProps>(\n    ({ className, ...rest }, ref) => (\n        <div\n            className={clsx(\"jkl-modal-actions\", className)}\n            {...rest}\n            ref={ref}\n        />\n    ),\n);\nModalActions.displayName = \"ModalActions\";\n"],"names":["ModalContainer","forwardRef","className","placement","slideIn","rest","ref","jsx","clsx","displayName","ModalOverlay","transparent","Modal","component","padding","style","C","ModalHeader","ModalTitle","ModalCloseButton","IconButton","children","CloseIcon","variant","ModalBody","ModalActions"],"mappings":"oQAgBaA,EAAiBC,EAAAA,WAC1B,EAAGC,UAAAA,EAAWC,UAAAA,EAAY,SAAUC,QAAAA,KAAYC,GAAQC,IAGhDC,EAAAA,IAAC,MAAA,CACGL,UAAWM,EAAAA,KACP,sBACA,kCAAkCL,IAClC,CAAE,gCAAiCC,GACnCF,MAEAG,EACJC,IAAAA,EACA,eAAW,KAK3BN,EAAeS,YAAc,iBAKtB,MAAMC,EAAeT,EAAAA,WACxB,EAAGC,UAAAA,EAAWS,YAAAA,KAAgBN,GAAQC,IAClCC,EAAAA,IAAC,MAAA,CACGL,UAAWM,EAAAA,KAAK,oBAAqBN,EAAW,CAC5C,iCAAkCS,OAElCN,EACJC,IAAAA,KAIZI,EAAaD,YAAc,eAKpB,MAAMG,EAAQX,EAAAA,WACjB,EAAGC,UAAAA,EAAWW,UAAAA,EAAWC,QAAAA,EAASC,MAAAA,KAAUV,GAAQC,KAChD,MAAMU,EAAIH,GAAa,MACvB,OACIN,EAAAA,IAACS,EAAA,CACGd,UAAWM,EAAAA,KAAK,gBAAiBN,GACjCa,MACI,CACI,kBAAmBD,EACb,qBAAqBA,UACrB,KACHC,MAGPV,EACJC,IAAAA,MAKhBM,EAAMH,YAAc,QAKb,MAAMQ,EAAchB,EAAAA,WACvB,EAAGC,UAAAA,KAAcG,GAAQC,IACrBC,EAAAA,IAAC,MAAA,CACGL,UAAWM,EAAAA,KAAK,mBAAoBN,MAChCG,EACJC,IAAAA,KAIZW,EAAYR,YAAc,cAKnB,MAAMS,EAAajB,EAAAA,WAGxB,EAAGC,UAAAA,KAAcG,GAAQC,UACtB,IAAA,CAAEJ,UAAWM,EAAAA,KAAK,kBAAmBN,MAAgBG,EAAMC,IAAAA,KAEhEY,EAAWT,YAAc,aAKlB,MAAMU,EAAmBlB,EAAAA,WAK9B,EAAGC,UAAAA,KAAcG,GAAQC,IACvBC,EAAAA,IAACa,EAAAA,WAAA,CACGlB,UAAWM,EAAAA,KAAK,kBAAmBN,GACnC,kBAAgB,qBACZG,EACJC,IAAAA,EAEAe,SAAAd,EAAAA,IAACe,EAAAA,UAAA,CAAUC,QAAQ,cAG3BJ,EAAiBV,YAAc,mBAKxB,MAAMe,EAAYvB,EAAAA,WACrB,EAAGC,UAAAA,KAAcG,GAAQC,IACrBC,EAAAA,IAAC,MAAA,CACGL,UAAWM,EAAAA,KAAK,iBAAkBN,MAC9BG,EACJC,IAAAA,KAIZkB,EAAUf,YAAc,YAKjB,MAAMgB,EAAexB,EAAAA,WACxB,EAAGC,UAAAA,KAAcG,GAAQC,IACrBC,EAAAA,IAAC,MAAA,CACGL,UAAWM,EAAAA,KAAK,oBAAqBN,MACjCG,EACJC,IAAAA,KAIZmB,EAAahB,YAAc"}