@helsenorge/designsystem-react 11.0.0-beta.4 → 11.0.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/CHANGELOG.md +35 -0
- package/Panel.js +1 -1
- package/Panel.js.map +1 -1
- package/components/Drawer/index.js +1 -1
- package/components/Drawer/index.js.map +1 -1
- package/components/Dropdown/Dropdown.d.ts +4 -1
- package/components/Dropdown/index.js +34 -8
- package/components/Dropdown/index.js.map +1 -1
- package/components/Dropdown/resourceHelper.d.ts +3 -0
- package/components/Dropdown/styles.module.scss +1 -0
- package/components/Icons/AdditionalIconInformation.d.ts +20 -0
- package/components/Icons/AdditionalIconInformation.js +5 -0
- package/components/Icons/AdditionalIconInformation.js.map +1 -1
- package/components/Modal/Modal.d.ts +2 -0
- package/components/Modal/index.js +4 -8
- package/components/Modal/index.js.map +1 -1
- package/components/Panel/PanelExamples.d.ts +1 -0
- package/components/RadioButton/styles.module.scss +3 -3
- package/components/Tabs/TabsDocs.d.ts +1 -0
- package/components/Toggle/styles.module.scss +10 -2
- package/constants.d.ts +1 -2
- package/constants.js +1 -2
- package/constants.js.map +1 -1
- package/designsystem-react.css +9 -9
- package/package.json +1 -1
- package/resources/HN.Designsystem.Dropdown.en-GB.json.d.ts +6 -0
- package/resources/HN.Designsystem.Dropdown.nb-NO.json.d.ts +6 -0
- package/resources/index.d.ts +0 -0
- package/scss/supernova/index.css +2 -2
- package/scss/supernova/styles/colors.css +9 -9
- package/utils/scroll.d.ts +2 -0
- package/utils/scroll.js +11 -0
- package/utils/scroll.js.map +1 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,11 @@
|
|
|
1
|
+
## [11.0.0](https://github.com/helsenorge/designsystem/branchCompare?baseVersion=GTv10.8.0&targetVersion=GTv11.0.0) (2025-04-29)
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
### Bug Fixes
|
|
5
|
+
|
|
6
|
+
* sass use variabler oppdatert ([a724dd1](https://github.com/helsenorge/designsystem/commit/a724dd10ebee8446ae161370ebac15e3e0738c8d))
|
|
7
|
+
* **panel:** riktig styling på expander knapp og flere eksempler ([8e881a9](https://github.com/helsenorge/designsystem/commit/8e881a9cc0093c4ca4e5e9083908839b56ddc89d)), closes [#336117](https://github.com/helsenorge/designsystem/issues/336117)
|
|
8
|
+
|
|
1
9
|
## 11.0.0-beta.4 (2025-04-23)
|
|
2
10
|
|
|
3
11
|
|
|
@@ -35,6 +43,33 @@
|
|
|
35
43
|
|
|
36
44
|
## 11.0.0-beta.0 (2025-03-05)
|
|
37
45
|
|
|
46
|
+
## [10.8.0](https://github.com/helsenorge/designsystem/branchCompare?baseVersion=GTv10.7.0&targetVersion=GTv10.8.0) (2025-04-23)
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
### Features
|
|
50
|
+
|
|
51
|
+
* oppdater fargetokens for plum ([7a5eb26](https://github.com/helsenorge/designsystem/commit/7a5eb26db3a190cbc43a8e71a3187752394f79d5)), closes [#349794](https://github.com/helsenorge/designsystem/issues/349794)
|
|
52
|
+
* **modal:** legg til prop for role ([01e24b3](https://github.com/helsenorge/designsystem/commit/01e24b380e4d91d9aee0f5e6b2dce6f61bf20c31)), closes [#346796](https://github.com/helsenorge/designsystem/issues/346796)
|
|
53
|
+
* **radiobutton:** sett styling på checked disabled state ([78e56df](https://github.com/helsenorge/designsystem/commit/78e56dff7477766f5cf8cdd5e52f044c1a50879d)), closes [#339561](https://github.com/helsenorge/designsystem/issues/339561)
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
### Bug Fixes
|
|
57
|
+
|
|
58
|
+
* **dropdown:** trykke på eller ved siden av skal lukke dropdown ([b0d852c](https://github.com/helsenorge/designsystem/commit/b0d852cb42ed0ce41f8baa067d0dae5aba69800f)), closes [#343160](https://github.com/helsenorge/designsystem/issues/343160)
|
|
59
|
+
* **toggle:** toggle right med lang sublabel wrapper ikke riktig ([409ef89](https://github.com/helsenorge/designsystem/commit/409ef8916a99d7f66a3e327ca8b259f6a1c2bed5)), closes [#349679](https://github.com/helsenorge/designsystem/issues/349679)
|
|
60
|
+
|
|
61
|
+
## [10.7.0](https://github.com/helsenorge/designsystem/branchCompare?baseVersion=GTv10.6.3&targetVersion=GTv10.7.0) (2025-04-10)
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
### Features
|
|
65
|
+
|
|
66
|
+
* **dropdown:** legg til språkhåndtering ([e54e4e8](https://github.com/helsenorge/designsystem/commit/e54e4e8a3abf2fb44fc9e39ba77bb344b61ecee5)), closes [#349329](https://github.com/helsenorge/designsystem/issues/349329)
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
### Bug Fixes
|
|
70
|
+
|
|
71
|
+
* **lightbox:** zoom pan og zindex fikser ([ffc268d](https://github.com/helsenorge/designsystem/commit/ffc268d607b3ce7c613b0db5e20db4b2c6c1e18d)), closes [#342790](https://github.com/helsenorge/designsystem/issues/342790)
|
|
72
|
+
|
|
38
73
|
## [10.6.3](https://github.com/helsenorge/designsystem/branchCompare?baseVersion=GTv10.6.2&targetVersion=GTv10.6.3) (2025-03-20)
|
|
39
74
|
|
|
40
75
|
|
package/Panel.js
CHANGED
|
@@ -41,7 +41,7 @@ const ExpandButton = ({ onClick, isExpanded }) => {
|
|
|
41
41
|
{
|
|
42
42
|
variant: "borderless",
|
|
43
43
|
textClassName: styles["expander__button__text"],
|
|
44
|
-
|
|
44
|
+
wrapperClassName: buttonClassName,
|
|
45
45
|
"aria-expanded": isExpanded,
|
|
46
46
|
onClick,
|
|
47
47
|
children: [
|
package/Panel.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Panel.js","sources":["../src/components/Panel/Panel.tsx"],"sourcesContent":["import React from 'react';\n\nimport classNames from 'classnames';\n\nimport { PaletteNames } from '../../theme/palette';\nimport Button from '../Button';\nimport Icon, { IconSize } from '../Icon';\nimport PanelTitle, { PanelTitleProps } from './PanelTitle';\nimport ChevronDown from '../Icons/ChevronDown';\nimport ChevronRight from '../Icons/ChevronRight';\nimport ChevronUp from '../Icons/ChevronUp';\n\nimport styles from './styles.module.scss';\n\nexport enum PanelLayout {\n vertical = 'vertical',\n horizontal = 'horizontal',\n combined = 'combined',\n bAsRightCol = 'bAsRightCol',\n}\n\nexport type PanelColors = Extract<PaletteNames, 'white' | 'neutral'>;\n\nexport enum PanelVariant {\n fill = 'fill',\n line = 'line',\n outline = 'outline',\n}\n\nexport enum PanelStacking {\n default = 'default',\n bFirst = 'bFirst',\n}\n\nexport enum PanelStatus {\n none = 'none',\n new = 'new',\n error = 'error',\n draft = 'draft',\n}\n\nexport interface PanelProps {\n /** Sets the text on the bottom call to action button */\n buttonBottomText?: string;\n /** Sets the action on the bottom call to action button */\n buttonBottomOnClick?: () => void;\n /** Sets the layout and order of the content boxes */\n layout?: PanelLayout;\n /** Sets the visual variant of panel */\n variant?: PanelVariant;\n /** Sets the color for panel if it has variant fill */\n color?: PanelColors;\n /** Sets classes on the outermost container of the panel */\n className?: string;\n /** Sets the stacking order of the content boxes */\n stacking?: PanelStacking;\n /** Sets the data-testid attribute. */\n testId?: string;\n /** Children elements to be rendered inside the panel */\n children?: React.ReactNode;\n /** Displays a status on the left side: default normal */\n status?: PanelStatus;\n}\n\nconst ExpandButton = ({ onClick, isExpanded }: { onClick: () => void; isExpanded: boolean | undefined }): React.JSX.Element => {\n const buttonClassName = classNames(styles['expander__button'], isExpanded && styles['expander__button--expanded']);\n\n return (\n <Button\n variant=\"borderless\"\n textClassName={styles['expander__button__text']}\n className={buttonClassName}\n aria-expanded={isExpanded}\n onClick={onClick}\n >\n <Icon svgIcon={isExpanded ? ChevronUp : ChevronDown} size={IconSize.XSmall} />\n {/* @todo: språk på knapp */}\n <span>{isExpanded ? 'Skjul detaljer' : 'Se detaljer'}</span>\n </Button>\n );\n};\n\nconst Panel: React.FC<PanelProps> & {\n PreContainer: React.FC<ContentProps>;\n Title: React.FC<PanelTitleProps>;\n A: React.FC<ContentProps>;\n B: React.FC<ContentProps>;\n C: React.FC<ContentProps>;\n ExpandedContent: React.FC<ContentProps>;\n} = ({\n layout = PanelLayout.vertical,\n variant = PanelVariant.fill,\n color = 'neutral',\n stacking = PanelStacking.default,\n testId,\n children,\n status = PanelStatus.none,\n buttonBottomOnClick,\n buttonBottomText,\n className,\n}: PanelProps) => {\n const [preContainer, setPreContainer] = React.useState<React.ReactNode[]>([]);\n const [title, setTitle] = React.useState<React.ReactNode[]>([]);\n const [content, setContent] = React.useState<React.ReactNode[]>([]);\n const [expandableContent, setExpandableContent] = React.useState<React.ReactNode[]>([]);\n const [hasIcon, setHasIcon] = React.useState(false);\n const [isExpanded, setIsExpanded] = React.useState(false);\n const panelRef = React.useRef<HTMLDivElement>(null);\n const expandedContentRef = React.useRef<HTMLDivElement>(null);\n const defaultScroll = 100;\n\n React.useEffect(() => {\n let localHasIcon = false;\n const newPreContainer: React.ReactNode[] = [];\n const newTitle: React.ReactNode[] = [];\n const newContent: React.ReactNode[] = [];\n const newExpandableContent: React.ReactNode[] = [];\n\n React.Children.forEach(children, child => {\n if (React.isValidElement(child)) {\n if (child.type === PreContainer) {\n newPreContainer.push(child);\n } else if (child.type === PanelTitle) {\n newTitle.push(child);\n if (child.props.icon) {\n localHasIcon = true;\n }\n } else if (child.type === A || child.type === B || child.type === C) {\n newContent.push(child);\n } else if (child.type === ExpandedContent) {\n newExpandableContent.push(child);\n }\n }\n });\n\n setPreContainer(newPreContainer);\n setTitle(newTitle);\n setContent(newContent);\n setExpandableContent(newExpandableContent);\n setHasIcon(localHasIcon);\n }, [children]);\n\n React.useEffect(() => {\n // Scroller oppover når expanded content åpnes\n if (isExpanded) {\n if (panelRef.current && expandedContentRef.current) {\n const panelRect = panelRef.current.getBoundingClientRect();\n const expandedContentRect = expandedContentRef.current.getBoundingClientRect();\n\n const scrollAmount = Math.min(defaultScroll, panelRect.top - 20);\n\n // Scroller kun oppover, og kun dersom expandedContent havner utenfor skjermen når åpnet\n if (scrollAmount > 0 && expandedContentRect.bottom > window.innerHeight) {\n const prefersReducedMotion = window.matchMedia('(prefers-reduced-motion: reduce)').matches;\n if (prefersReducedMotion) {\n return;\n }\n window.scrollBy({\n top: scrollAmount,\n behavior: 'smooth',\n });\n }\n }\n }\n }, [isExpanded]);\n\n const colorScheme = variant === PanelVariant.fill ? color : 'white';\n\n const outerClassnames = classNames(className, {\n [styles['panel__border--outline--outer']]: variant === PanelVariant.outline,\n [styles['panel__border--line']]: variant === PanelVariant.line,\n [styles['panel__border--fill--neutral']]: variant === PanelVariant.fill && colorScheme === 'neutral',\n });\n const panelClassnames = classNames(styles['panel'], styles[`panel--${colorScheme}`], styles['panel--status'], {\n [styles['panel--line']]: variant === PanelVariant.line,\n [styles['panel--new']]: status === PanelStatus.new,\n [styles['panel--draft']]: status === PanelStatus.draft,\n [styles['panel--error']]: status === PanelStatus.error,\n [styles['panel--icon']]: hasIcon,\n });\n const contentContainerLayout = classNames(styles['panel__content'], styles[`panel__content--${layout}`], {\n [styles[`panel__content--b-first`]]: stacking === PanelStacking.bFirst,\n });\n const expanderBorderLayout = classNames({\n [styles['panel__expander__border--expanded']]: isExpanded && status === PanelStatus.none,\n [styles[`panel__expander__border--not-expanded--${colorScheme}`]]: !isExpanded && status === PanelStatus.none,\n [styles[`panel__expander__border--not-expanded--line`]]: !isExpanded && status === PanelStatus.none && variant === PanelVariant.line,\n });\n\n return expandableContent.length > 0 ? (\n <div className={outerClassnames}>\n <div className={classNames({ [styles['panel__border--outline--inner']]: variant === PanelVariant.outline })}>\n <div className={expanderBorderLayout}>\n <div className={panelClassnames} data-testid={testId} ref={panelRef}>\n {preContainer}\n {title}\n <div className={contentContainerLayout}>{content}</div>\n <ExpandButton onClick={() => setIsExpanded(!isExpanded)} isExpanded={isExpanded} />\n {isExpanded && (\n <div ref={expandedContentRef}>\n <div className={styles['panel__expander__separator']} />\n {expandableContent}\n </div>\n )}\n </div>\n </div>\n </div>\n </div>\n ) : (\n <div className={outerClassnames}>\n <div className={classNames({ [styles['panel__border--outline--inner']]: variant === PanelVariant.outline })}>\n <div className={panelClassnames} data-testid={testId} ref={panelRef}>\n {preContainer}\n {title}\n <div className={contentContainerLayout}>{content}</div>\n {buttonBottomText && buttonBottomOnClick && (\n <div className={styles['panel__button-bottom']}>\n <Button variant=\"borderless\" type=\"button\" size=\"medium\" onClick={buttonBottomOnClick}>\n {buttonBottomText}\n <Icon svgIcon={ChevronRight} size={IconSize.XSmall} />\n </Button>\n </div>\n )}\n </div>\n </div>\n </div>\n );\n};\n\nexport interface ContentProps {\n /** Children elements to be rendered inside the content box */\n children?: React.ReactNode;\n}\n\nexport const PreContainer: React.FC<ContentProps> = ({ children }) => {\n return <div className={styles['panel__pre-container']}>{children}</div>;\n};\n\nexport const A: React.FC<ContentProps> = ({ children }) => {\n const styling = classNames(styles['panel__content__item'], styles['panel__content__item--a']);\n return <div className={styling}>{children}</div>;\n};\n\nexport const B: React.FC<ContentProps> = ({ children }) => {\n const styling = classNames(styles['panel__content__item'], styles['panel__content__item--b']);\n return <div className={styling}>{children}</div>;\n};\n\nexport const C: React.FC<ContentProps> = ({ children }) => {\n const styling = classNames(styles['panel__content__item'], styles['panel__content__item--c']);\n return <div className={styling}>{children}</div>;\n};\n\nexport const ExpandedContent: React.FC<ContentProps> = ({ children }) => {\n const styling = classNames(styles['panel__expander__content']);\n return <div className={styling}>{children}</div>;\n};\n\nPanel.PreContainer = PreContainer;\nPanel.Title = PanelTitle;\nPanel.A = A;\nPanel.B = B;\nPanel.C = C;\nPanel.ExpandedContent = ExpandedContent;\n\nexport default Panel;\n"],"names":["PanelLayout","PanelVariant","PanelStacking","PanelStatus","React"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Panel.js","sources":["../src/components/Panel/Panel.tsx"],"sourcesContent":["import React from 'react';\n\nimport classNames from 'classnames';\n\nimport { PaletteNames } from '../../theme/palette';\nimport Button from '../Button';\nimport Icon, { IconSize } from '../Icon';\nimport PanelTitle, { PanelTitleProps } from './PanelTitle';\nimport ChevronDown from '../Icons/ChevronDown';\nimport ChevronRight from '../Icons/ChevronRight';\nimport ChevronUp from '../Icons/ChevronUp';\n\nimport styles from './styles.module.scss';\n\nexport enum PanelLayout {\n vertical = 'vertical',\n horizontal = 'horizontal',\n combined = 'combined',\n bAsRightCol = 'bAsRightCol',\n}\n\nexport type PanelColors = Extract<PaletteNames, 'white' | 'neutral'>;\n\nexport enum PanelVariant {\n fill = 'fill',\n line = 'line',\n outline = 'outline',\n}\n\nexport enum PanelStacking {\n default = 'default',\n bFirst = 'bFirst',\n}\n\nexport enum PanelStatus {\n none = 'none',\n new = 'new',\n error = 'error',\n draft = 'draft',\n}\n\nexport interface PanelProps {\n /** Sets the text on the bottom call to action button */\n buttonBottomText?: string;\n /** Sets the action on the bottom call to action button */\n buttonBottomOnClick?: () => void;\n /** Sets the layout and order of the content boxes */\n layout?: PanelLayout;\n /** Sets the visual variant of panel */\n variant?: PanelVariant;\n /** Sets the color for panel if it has variant fill */\n color?: PanelColors;\n /** Sets classes on the outermost container of the panel */\n className?: string;\n /** Sets the stacking order of the content boxes */\n stacking?: PanelStacking;\n /** Sets the data-testid attribute. */\n testId?: string;\n /** Children elements to be rendered inside the panel */\n children?: React.ReactNode;\n /** Displays a status on the left side: default normal */\n status?: PanelStatus;\n}\n\nconst ExpandButton = ({ onClick, isExpanded }: { onClick: () => void; isExpanded: boolean | undefined }): React.JSX.Element => {\n const buttonClassName = classNames(styles['expander__button'], isExpanded && styles['expander__button--expanded']);\n\n return (\n <Button\n variant=\"borderless\"\n textClassName={styles['expander__button__text']}\n wrapperClassName={buttonClassName}\n aria-expanded={isExpanded}\n onClick={onClick}\n >\n <Icon svgIcon={isExpanded ? ChevronUp : ChevronDown} size={IconSize.XSmall} />\n {/* @todo: språk på knapp */}\n <span>{isExpanded ? 'Skjul detaljer' : 'Se detaljer'}</span>\n </Button>\n );\n};\n\nconst Panel: React.FC<PanelProps> & {\n PreContainer: React.FC<ContentProps>;\n Title: React.FC<PanelTitleProps>;\n A: React.FC<ContentProps>;\n B: React.FC<ContentProps>;\n C: React.FC<ContentProps>;\n ExpandedContent: React.FC<ContentProps>;\n} = ({\n layout = PanelLayout.vertical,\n variant = PanelVariant.fill,\n color = 'neutral',\n stacking = PanelStacking.default,\n testId,\n children,\n status = PanelStatus.none,\n buttonBottomOnClick,\n buttonBottomText,\n className,\n}: PanelProps) => {\n const [preContainer, setPreContainer] = React.useState<React.ReactNode[]>([]);\n const [title, setTitle] = React.useState<React.ReactNode[]>([]);\n const [content, setContent] = React.useState<React.ReactNode[]>([]);\n const [expandableContent, setExpandableContent] = React.useState<React.ReactNode[]>([]);\n const [hasIcon, setHasIcon] = React.useState(false);\n const [isExpanded, setIsExpanded] = React.useState(false);\n const panelRef = React.useRef<HTMLDivElement>(null);\n const expandedContentRef = React.useRef<HTMLDivElement>(null);\n const defaultScroll = 100;\n\n React.useEffect(() => {\n let localHasIcon = false;\n const newPreContainer: React.ReactNode[] = [];\n const newTitle: React.ReactNode[] = [];\n const newContent: React.ReactNode[] = [];\n const newExpandableContent: React.ReactNode[] = [];\n\n React.Children.forEach(children, child => {\n if (React.isValidElement(child)) {\n if (child.type === PreContainer) {\n newPreContainer.push(child);\n } else if (child.type === PanelTitle) {\n newTitle.push(child);\n if (child.props.icon) {\n localHasIcon = true;\n }\n } else if (child.type === A || child.type === B || child.type === C) {\n newContent.push(child);\n } else if (child.type === ExpandedContent) {\n newExpandableContent.push(child);\n }\n }\n });\n\n setPreContainer(newPreContainer);\n setTitle(newTitle);\n setContent(newContent);\n setExpandableContent(newExpandableContent);\n setHasIcon(localHasIcon);\n }, [children]);\n\n React.useEffect(() => {\n // Scroller oppover når expanded content åpnes\n if (isExpanded) {\n if (panelRef.current && expandedContentRef.current) {\n const panelRect = panelRef.current.getBoundingClientRect();\n const expandedContentRect = expandedContentRef.current.getBoundingClientRect();\n\n const scrollAmount = Math.min(defaultScroll, panelRect.top - 20);\n\n // Scroller kun oppover, og kun dersom expandedContent havner utenfor skjermen når åpnet\n if (scrollAmount > 0 && expandedContentRect.bottom > window.innerHeight) {\n const prefersReducedMotion = window.matchMedia('(prefers-reduced-motion: reduce)').matches;\n if (prefersReducedMotion) {\n return;\n }\n window.scrollBy({\n top: scrollAmount,\n behavior: 'smooth',\n });\n }\n }\n }\n }, [isExpanded]);\n\n const colorScheme = variant === PanelVariant.fill ? color : 'white';\n\n const outerClassnames = classNames(className, {\n [styles['panel__border--outline--outer']]: variant === PanelVariant.outline,\n [styles['panel__border--line']]: variant === PanelVariant.line,\n [styles['panel__border--fill--neutral']]: variant === PanelVariant.fill && colorScheme === 'neutral',\n });\n const panelClassnames = classNames(styles['panel'], styles[`panel--${colorScheme}`], styles['panel--status'], {\n [styles['panel--line']]: variant === PanelVariant.line,\n [styles['panel--new']]: status === PanelStatus.new,\n [styles['panel--draft']]: status === PanelStatus.draft,\n [styles['panel--error']]: status === PanelStatus.error,\n [styles['panel--icon']]: hasIcon,\n });\n const contentContainerLayout = classNames(styles['panel__content'], styles[`panel__content--${layout}`], {\n [styles[`panel__content--b-first`]]: stacking === PanelStacking.bFirst,\n });\n const expanderBorderLayout = classNames({\n [styles['panel__expander__border--expanded']]: isExpanded && status === PanelStatus.none,\n [styles[`panel__expander__border--not-expanded--${colorScheme}`]]: !isExpanded && status === PanelStatus.none,\n [styles[`panel__expander__border--not-expanded--line`]]: !isExpanded && status === PanelStatus.none && variant === PanelVariant.line,\n });\n\n return expandableContent.length > 0 ? (\n <div className={outerClassnames}>\n <div className={classNames({ [styles['panel__border--outline--inner']]: variant === PanelVariant.outline })}>\n <div className={expanderBorderLayout}>\n <div className={panelClassnames} data-testid={testId} ref={panelRef}>\n {preContainer}\n {title}\n <div className={contentContainerLayout}>{content}</div>\n <ExpandButton onClick={() => setIsExpanded(!isExpanded)} isExpanded={isExpanded} />\n {isExpanded && (\n <div ref={expandedContentRef}>\n <div className={styles['panel__expander__separator']} />\n {expandableContent}\n </div>\n )}\n </div>\n </div>\n </div>\n </div>\n ) : (\n <div className={outerClassnames}>\n <div className={classNames({ [styles['panel__border--outline--inner']]: variant === PanelVariant.outline })}>\n <div className={panelClassnames} data-testid={testId} ref={panelRef}>\n {preContainer}\n {title}\n <div className={contentContainerLayout}>{content}</div>\n {buttonBottomText && buttonBottomOnClick && (\n <div className={styles['panel__button-bottom']}>\n <Button variant=\"borderless\" type=\"button\" size=\"medium\" onClick={buttonBottomOnClick}>\n {buttonBottomText}\n <Icon svgIcon={ChevronRight} size={IconSize.XSmall} />\n </Button>\n </div>\n )}\n </div>\n </div>\n </div>\n );\n};\n\nexport interface ContentProps {\n /** Children elements to be rendered inside the content box */\n children?: React.ReactNode;\n}\n\nexport const PreContainer: React.FC<ContentProps> = ({ children }) => {\n return <div className={styles['panel__pre-container']}>{children}</div>;\n};\n\nexport const A: React.FC<ContentProps> = ({ children }) => {\n const styling = classNames(styles['panel__content__item'], styles['panel__content__item--a']);\n return <div className={styling}>{children}</div>;\n};\n\nexport const B: React.FC<ContentProps> = ({ children }) => {\n const styling = classNames(styles['panel__content__item'], styles['panel__content__item--b']);\n return <div className={styling}>{children}</div>;\n};\n\nexport const C: React.FC<ContentProps> = ({ children }) => {\n const styling = classNames(styles['panel__content__item'], styles['panel__content__item--c']);\n return <div className={styling}>{children}</div>;\n};\n\nexport const ExpandedContent: React.FC<ContentProps> = ({ children }) => {\n const styling = classNames(styles['panel__expander__content']);\n return <div className={styling}>{children}</div>;\n};\n\nPanel.PreContainer = PreContainer;\nPanel.Title = PanelTitle;\nPanel.A = A;\nPanel.B = B;\nPanel.C = C;\nPanel.ExpandedContent = ExpandedContent;\n\nexport default Panel;\n"],"names":["PanelLayout","PanelVariant","PanelStacking","PanelStatus","React"],"mappings":"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"}
|
|
@@ -236,7 +236,7 @@ const InnerDrawer = (props) => {
|
|
|
236
236
|
title,
|
|
237
237
|
titleHtmlMarkup = "h3",
|
|
238
238
|
titleId = uuid(),
|
|
239
|
-
zIndex = ZIndex.
|
|
239
|
+
zIndex = ZIndex.OverlayScreen
|
|
240
240
|
} = props;
|
|
241
241
|
const ariaLabelAttributes = getAriaLabelAttributes({ label: ariaLabel, id: ariaLabelledBy, fallbackId: titleId });
|
|
242
242
|
const overlayRef = useRef(null);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../../node_modules/motion/dist/es/framer-motion/dist/es/context/LayoutGroupContext.mjs","../../../../../node_modules/motion/dist/es/framer-motion/dist/es/context/PresenceContext.mjs","../../../../../node_modules/motion/dist/es/framer-motion/dist/es/context/MotionConfigContext.mjs","../../../../../node_modules/motion/dist/es/framer-motion/dist/es/components/AnimatePresence/PopChild.mjs","../../../../../node_modules/motion/dist/es/framer-motion/dist/es/components/AnimatePresence/PresenceChild.mjs","../../../../../node_modules/motion/dist/es/framer-motion/dist/es/components/AnimatePresence/use-presence.mjs","../../../../../node_modules/motion/dist/es/framer-motion/dist/es/components/AnimatePresence/utils.mjs","../../../../../node_modules/motion/dist/es/framer-motion/dist/es/utils/use-isomorphic-effect.mjs","../../../../../node_modules/motion/dist/es/framer-motion/dist/es/components/AnimatePresence/index.mjs","../../../src/components/Drawer/Drawer.tsx"],"sourcesContent":["\"use client\";\nimport { createContext } from 'react';\n\nconst LayoutGroupContext = createContext({});\n\nexport { LayoutGroupContext };\n","\"use client\";\nimport { createContext } from 'react';\n\n/**\n * @public\n */\nconst PresenceContext = createContext(null);\n\nexport { PresenceContext };\n","\"use client\";\nimport { createContext } from 'react';\n\n/**\n * @public\n */\nconst MotionConfigContext = createContext({\n transformPagePoint: (p) => p,\n isStatic: false,\n reducedMotion: \"never\",\n});\n\nexport { MotionConfigContext };\n","\"use client\";\nimport { jsx } from 'react/jsx-runtime';\nimport * as React from 'react';\nimport { useId, useRef, useContext, useInsertionEffect } from 'react';\nimport { MotionConfigContext } from '../../context/MotionConfigContext.mjs';\n\n/**\n * Measurement functionality has to be within a separate component\n * to leverage snapshot lifecycle.\n */\nclass PopChildMeasure extends React.Component {\n getSnapshotBeforeUpdate(prevProps) {\n const element = this.props.childRef.current;\n if (element && prevProps.isPresent && !this.props.isPresent) {\n const size = this.props.sizeRef.current;\n size.height = element.offsetHeight || 0;\n size.width = element.offsetWidth || 0;\n size.top = element.offsetTop;\n size.left = element.offsetLeft;\n }\n return null;\n }\n /**\n * Required with getSnapshotBeforeUpdate to stop React complaining.\n */\n componentDidUpdate() { }\n render() {\n return this.props.children;\n }\n}\nfunction PopChild({ children, isPresent }) {\n const id = useId();\n const ref = useRef(null);\n const size = useRef({\n width: 0,\n height: 0,\n top: 0,\n left: 0,\n });\n const { nonce } = useContext(MotionConfigContext);\n /**\n * We create and inject a style block so we can apply this explicit\n * sizing in a non-destructive manner by just deleting the style block.\n *\n * We can't apply size via render as the measurement happens\n * in getSnapshotBeforeUpdate (post-render), likewise if we apply the\n * styles directly on the DOM node, we might be overwriting\n * styles set via the style prop.\n */\n useInsertionEffect(() => {\n const { width, height, top, left } = size.current;\n if (isPresent || !ref.current || !width || !height)\n return;\n ref.current.dataset.motionPopId = id;\n const style = document.createElement(\"style\");\n if (nonce)\n style.nonce = nonce;\n document.head.appendChild(style);\n if (style.sheet) {\n style.sheet.insertRule(`\n [data-motion-pop-id=\"${id}\"] {\n position: absolute !important;\n width: ${width}px !important;\n height: ${height}px !important;\n top: ${top}px !important;\n left: ${left}px !important;\n }\n `);\n }\n return () => {\n document.head.removeChild(style);\n };\n }, [isPresent]);\n return (jsx(PopChildMeasure, { isPresent: isPresent, childRef: ref, sizeRef: size, children: React.cloneElement(children, { ref }) }));\n}\n\nexport { PopChild };\n","\"use client\";\nimport { jsx } from 'react/jsx-runtime';\nimport * as React from 'react';\nimport { useId, useCallback, useMemo } from 'react';\nimport { PresenceContext } from '../../context/PresenceContext.mjs';\nimport { useConstant } from '../../utils/use-constant.mjs';\nimport { PopChild } from './PopChild.mjs';\n\nconst PresenceChild = ({ children, initial, isPresent, onExitComplete, custom, presenceAffectsLayout, mode, }) => {\n const presenceChildren = useConstant(newChildrenMap);\n const id = useId();\n const memoizedOnExitComplete = useCallback((childId) => {\n presenceChildren.set(childId, true);\n for (const isComplete of presenceChildren.values()) {\n if (!isComplete)\n return; // can stop searching when any is incomplete\n }\n onExitComplete && onExitComplete();\n }, [presenceChildren, onExitComplete]);\n const context = useMemo(() => ({\n id,\n initial,\n isPresent,\n custom,\n onExitComplete: memoizedOnExitComplete,\n register: (childId) => {\n presenceChildren.set(childId, false);\n return () => presenceChildren.delete(childId);\n },\n }), \n /**\n * If the presence of a child affects the layout of the components around it,\n * we want to make a new context value to ensure they get re-rendered\n * so they can detect that layout change.\n */\n presenceAffectsLayout\n ? [Math.random(), memoizedOnExitComplete]\n : [isPresent, memoizedOnExitComplete]);\n useMemo(() => {\n presenceChildren.forEach((_, key) => presenceChildren.set(key, false));\n }, [isPresent]);\n /**\n * If there's no `motion` components to fire exit animations, we want to remove this\n * component immediately.\n */\n React.useEffect(() => {\n !isPresent &&\n !presenceChildren.size &&\n onExitComplete &&\n onExitComplete();\n }, [isPresent]);\n if (mode === \"popLayout\") {\n children = jsx(PopChild, { isPresent: isPresent, children: children });\n }\n return (jsx(PresenceContext.Provider, { value: context, children: children }));\n};\nfunction newChildrenMap() {\n return new Map();\n}\n\nexport { PresenceChild };\n","import { useContext, useId, useEffect, useCallback } from 'react';\nimport { PresenceContext } from '../../context/PresenceContext.mjs';\n\n/**\n * When a component is the child of `AnimatePresence`, it can use `usePresence`\n * to access information about whether it's still present in the React tree.\n *\n * ```jsx\n * import { usePresence } from \"framer-motion\"\n *\n * export const Component = () => {\n * const [isPresent, safeToRemove] = usePresence()\n *\n * useEffect(() => {\n * !isPresent && setTimeout(safeToRemove, 1000)\n * }, [isPresent])\n *\n * return <div />\n * }\n * ```\n *\n * If `isPresent` is `false`, it means that a component has been removed the tree, but\n * `AnimatePresence` won't really remove it until `safeToRemove` has been called.\n *\n * @public\n */\nfunction usePresence(subscribe = true) {\n const context = useContext(PresenceContext);\n if (context === null)\n return [true, null];\n const { isPresent, onExitComplete, register } = context;\n // It's safe to call the following hooks conditionally (after an early return) because the context will always\n // either be null or non-null for the lifespan of the component.\n const id = useId();\n useEffect(() => {\n if (subscribe)\n register(id);\n }, [subscribe]);\n const safeToRemove = useCallback(() => subscribe && onExitComplete && onExitComplete(id), [id, onExitComplete, subscribe]);\n return !isPresent && onExitComplete ? [false, safeToRemove] : [true];\n}\n/**\n * Similar to `usePresence`, except `useIsPresent` simply returns whether or not the component is present.\n * There is no `safeToRemove` function.\n *\n * ```jsx\n * import { useIsPresent } from \"framer-motion\"\n *\n * export const Component = () => {\n * const isPresent = useIsPresent()\n *\n * useEffect(() => {\n * !isPresent && console.log(\"I've been removed!\")\n * }, [isPresent])\n *\n * return <div />\n * }\n * ```\n *\n * @public\n */\nfunction useIsPresent() {\n return isPresent(useContext(PresenceContext));\n}\nfunction isPresent(context) {\n return context === null ? true : context.isPresent;\n}\n\nexport { isPresent, useIsPresent, usePresence };\n","import { Children, isValidElement } from 'react';\n\nconst getChildKey = (child) => child.key || \"\";\nfunction onlyElements(children) {\n const filtered = [];\n // We use forEach here instead of map as map mutates the component key by preprending `.$`\n Children.forEach(children, (child) => {\n if (isValidElement(child))\n filtered.push(child);\n });\n return filtered;\n}\n\nexport { getChildKey, onlyElements };\n","import { useLayoutEffect, useEffect } from 'react';\nimport { isBrowser } from './is-browser.mjs';\n\nconst useIsomorphicLayoutEffect = isBrowser ? useLayoutEffect : useEffect;\n\nexport { useIsomorphicLayoutEffect };\n","\"use client\";\nimport { jsx, Fragment } from 'react/jsx-runtime';\nimport { useMemo, useRef, useState, useContext } from 'react';\nimport { LayoutGroupContext } from '../../context/LayoutGroupContext.mjs';\nimport { useConstant } from '../../utils/use-constant.mjs';\nimport { PresenceChild } from './PresenceChild.mjs';\nimport { usePresence } from './use-presence.mjs';\nimport { onlyElements, getChildKey } from './utils.mjs';\nimport { useIsomorphicLayoutEffect } from '../../utils/use-isomorphic-effect.mjs';\n\n/**\n * `AnimatePresence` enables the animation of components that have been removed from the tree.\n *\n * When adding/removing more than a single child, every child **must** be given a unique `key` prop.\n *\n * Any `motion` components that have an `exit` property defined will animate out when removed from\n * the tree.\n *\n * ```jsx\n * import { motion, AnimatePresence } from 'framer-motion'\n *\n * export const Items = ({ items }) => (\n * <AnimatePresence>\n * {items.map(item => (\n * <motion.div\n * key={item.id}\n * initial={{ opacity: 0 }}\n * animate={{ opacity: 1 }}\n * exit={{ opacity: 0 }}\n * />\n * ))}\n * </AnimatePresence>\n * )\n * ```\n *\n * You can sequence exit animations throughout a tree using variants.\n *\n * If a child contains multiple `motion` components with `exit` props, it will only unmount the child\n * once all `motion` components have finished animating out. Likewise, any components using\n * `usePresence` all need to call `safeToRemove`.\n *\n * @public\n */\nconst AnimatePresence = ({ children, custom, initial = true, onExitComplete, presenceAffectsLayout = true, mode = \"sync\", propagate = false, }) => {\n const [isParentPresent, safeToRemove] = usePresence(propagate);\n /**\n * Filter any children that aren't ReactElements. We can only track components\n * between renders with a props.key.\n */\n const presentChildren = useMemo(() => onlyElements(children), [children]);\n /**\n * Track the keys of the currently rendered children. This is used to\n * determine which children are exiting.\n */\n const presentKeys = propagate && !isParentPresent ? [] : presentChildren.map(getChildKey);\n /**\n * If `initial={false}` we only want to pass this to components in the first render.\n */\n const isInitialRender = useRef(true);\n /**\n * A ref containing the currently present children. When all exit animations\n * are complete, we use this to re-render the component with the latest children\n * *committed* rather than the latest children *rendered*.\n */\n const pendingPresentChildren = useRef(presentChildren);\n /**\n * Track which exiting children have finished animating out.\n */\n const exitComplete = useConstant(() => new Map());\n /**\n * Save children to render as React state. To ensure this component is concurrent-safe,\n * we check for exiting children via an effect.\n */\n const [diffedChildren, setDiffedChildren] = useState(presentChildren);\n const [renderedChildren, setRenderedChildren] = useState(presentChildren);\n useIsomorphicLayoutEffect(() => {\n isInitialRender.current = false;\n pendingPresentChildren.current = presentChildren;\n /**\n * Update complete status of exiting children.\n */\n for (let i = 0; i < renderedChildren.length; i++) {\n const key = getChildKey(renderedChildren[i]);\n if (!presentKeys.includes(key)) {\n if (exitComplete.get(key) !== true) {\n exitComplete.set(key, false);\n }\n }\n else {\n exitComplete.delete(key);\n }\n }\n }, [renderedChildren, presentKeys.length, presentKeys.join(\"-\")]);\n const exitingChildren = [];\n if (presentChildren !== diffedChildren) {\n let nextChildren = [...presentChildren];\n /**\n * Loop through all the currently rendered components and decide which\n * are exiting.\n */\n for (let i = 0; i < renderedChildren.length; i++) {\n const child = renderedChildren[i];\n const key = getChildKey(child);\n if (!presentKeys.includes(key)) {\n nextChildren.splice(i, 0, child);\n exitingChildren.push(child);\n }\n }\n /**\n * If we're in \"wait\" mode, and we have exiting children, we want to\n * only render these until they've all exited.\n */\n if (mode === \"wait\" && exitingChildren.length) {\n nextChildren = exitingChildren;\n }\n setRenderedChildren(onlyElements(nextChildren));\n setDiffedChildren(presentChildren);\n /**\n * Early return to ensure once we've set state with the latest diffed\n * children, we can immediately re-render.\n */\n return;\n }\n if (process.env.NODE_ENV !== \"production\" &&\n mode === \"wait\" &&\n renderedChildren.length > 1) {\n console.warn(`You're attempting to animate multiple children within AnimatePresence, but its mode is set to \"wait\". This will lead to odd visual behaviour.`);\n }\n /**\n * If we've been provided a forceRender function by the LayoutGroupContext,\n * we can use it to force a re-render amongst all surrounding components once\n * all components have finished animating out.\n */\n const { forceRender } = useContext(LayoutGroupContext);\n return (jsx(Fragment, { children: renderedChildren.map((child) => {\n const key = getChildKey(child);\n const isPresent = propagate && !isParentPresent\n ? false\n : presentChildren === renderedChildren ||\n presentKeys.includes(key);\n const onExit = () => {\n if (exitComplete.has(key)) {\n exitComplete.set(key, true);\n }\n else {\n return;\n }\n let isEveryExitComplete = true;\n exitComplete.forEach((isExitComplete) => {\n if (!isExitComplete)\n isEveryExitComplete = false;\n });\n if (isEveryExitComplete) {\n forceRender === null || forceRender === void 0 ? void 0 : forceRender();\n setRenderedChildren(pendingPresentChildren.current);\n propagate && (safeToRemove === null || safeToRemove === void 0 ? void 0 : safeToRemove());\n onExitComplete && onExitComplete();\n }\n };\n return (jsx(PresenceChild, { isPresent: isPresent, initial: !isInitialRender.current || initial\n ? undefined\n : false, custom: isPresent ? undefined : custom, presenceAffectsLayout: presenceAffectsLayout, mode: mode, onExitComplete: isPresent ? undefined : onExit, children: child }, key));\n }) }));\n};\n\nexport { AnimatePresence };\n","import React, { useEffect, useRef } from 'react';\n\nimport classNames from 'classnames';\nimport { AnimatePresence, useAnimate, usePresence } from 'motion/react';\n\nimport { AnalyticsId, KeyboardEventKey, ZIndex } from '../../constants';\nimport { useBreakpoint } from '../../hooks/useBreakpoint';\nimport useFocusTrap from '../../hooks/useFocusTrap';\nimport { useKeyboardEvent } from '../../hooks/useKeyboardEvent';\nimport { useOutsideEvent } from '../../hooks/useOutsideEvent';\nimport { useReturnFocusOnUnmount } from '../../hooks/useReturnFocusOnUnmount';\nimport { breakpoints } from '../../theme/grid';\nimport { getAriaLabelAttributes } from '../../utils/accessibility';\nimport uuid from '../../utils/uuid';\nimport Button from '../Button';\nimport Close from '../Close';\nimport Title, { TitleTags } from '../Title';\n\nimport styles from './styles.module.scss';\n\ntype DesktopDirections = 'left' | 'right';\n\nexport interface DrawerProps extends InnerDrawerProps {\n /** Opens and closes the drawer */\n isOpen: boolean;\n}\n\nexport interface InnerDrawerProps {\n /** Sets the aria-label of the drawer */\n ariaLabel?: string;\n /** Sets the aria-labelledby of the drawer */\n ariaLabelledBy?: string;\n /** Close button aria-label */\n ariaLabelCloseBtn?: string;\n /** Direction of the drawer on desktop. Default: left */\n desktopDirection?: DesktopDirections;\n /** Title to display in the header of the drawer */\n title: string;\n /** id of the drawer title */\n titleId?: string;\n /** Changes the underlying element of the title. Default: h3 */\n titleHtmlMarkup?: TitleTags;\n /** Callback that triggers when clicking on close button or outside the drawer, update isOpen state when this triggers */\n onRequestClose: () => void;\n /** Optional footer content that can be rendered instead of default CTA(s) */\n footerContent?: React.ReactNode;\n /** Main content of the drawer */\n children?: React.ReactNode;\n /** Primary CTA callback */\n onPrimaryAction?: () => void;\n /** Text for primary CTA button if you want a default CTA button rendered (instead of `footerContent`) */\n primaryActionText?: string;\n /** Text for secondary CTA button if you want a default CTA button rendered (instead of `footerContent`) */\n secondaryActionText?: string;\n /** Secondary CTA callback */\n onSecondaryAction?: () => void;\n /** Customize the z-index of the drawer */\n zIndex?: number;\n}\n\nconst Drawer: React.FC<DrawerProps> = props => {\n const { isOpen, ...rest } = props;\n\n return <AnimatePresence>{isOpen && <InnerDrawer {...rest} />}</AnimatePresence>;\n};\n\nconst InnerDrawer: React.FC<InnerDrawerProps> = props => {\n const {\n ariaLabel,\n ariaLabelledBy,\n ariaLabelCloseBtn,\n children,\n desktopDirection = 'left',\n footerContent,\n onPrimaryAction,\n onRequestClose,\n onSecondaryAction,\n primaryActionText,\n secondaryActionText,\n title,\n titleHtmlMarkup = 'h3',\n titleId = uuid(),\n zIndex = ZIndex.Modal,\n } = props;\n\n const ariaLabelAttributes = getAriaLabelAttributes({ label: ariaLabel, id: ariaLabelledBy, fallbackId: titleId });\n const overlayRef = useRef<HTMLDivElement>(null);\n const containerRef = useRef<HTMLDivElement>(null);\n const contentRef = useRef<HTMLDivElement>(null);\n const breakpoint = useBreakpoint();\n const isMobile = breakpoint < breakpoints.md;\n const [scope, animate] = useAnimate();\n const [isPresent, safeToRemove] = usePresence();\n const contentIsScrollable = contentRef.current && contentRef.current.scrollHeight > contentRef.current.clientHeight;\n\n useFocusTrap(containerRef, true);\n useReturnFocusOnUnmount(containerRef);\n useOutsideEvent(containerRef, () => {\n onRequestClose && onRequestClose();\n });\n useKeyboardEvent(containerRef, () => onRequestClose && onRequestClose(), [KeyboardEventKey.Escape]);\n\n useEffect(() => {\n containerRef.current?.focus();\n }, []);\n\n // Open animation.\n useEffect(() => {\n if (!overlayRef.current || !containerRef.current) return;\n\n if (!isPresent) {\n closeDrawer();\n return;\n }\n\n if (isMobile) {\n animate(containerRef.current, { y: '0' }, { duration: 0.3, ease: 'easeInOut' });\n } else {\n animate(containerRef.current, { x: '0' }, { duration: 0.3, ease: 'easeInOut' });\n }\n\n animate(overlayRef.current, { opacity: 1, pointerEvents: 'auto' }, { duration: 0.3, ease: 'easeInOut' });\n }, [isPresent]);\n\n useEffect(() => {}, [isPresent]);\n\n // Close animasjon, vi kaller `onClose()` til slutt\n const closeDrawer = (): void => {\n if (!overlayRef.current || !containerRef.current) return;\n\n animate(overlayRef.current, { opacity: 0, pointerEvents: 'none' }, { duration: 0.3, ease: 'easeInOut' });\n\n if (isMobile) {\n animate(\n containerRef.current,\n { y: '100%' },\n {\n duration: 0.3,\n ease: 'easeInOut',\n onComplete: () => {\n safeToRemove && safeToRemove();\n },\n }\n );\n } else {\n animate(\n containerRef.current,\n { x: desktopDirection === 'left' ? '-100%' : '100%' },\n {\n duration: 0.3,\n ease: 'easeInOut',\n onComplete: () => {\n safeToRemove && safeToRemove();\n },\n }\n );\n }\n };\n\n const handleCTA = (callback?: () => void): void => {\n if (callback) {\n callback();\n }\n };\n\n return (\n <div className={styles.drawer} ref={scope} style={{ zIndex }} data-analyticsid={AnalyticsId.Drawer}>\n <div className={styles.drawer__overlay} ref={overlayRef} aria-hidden=\"true\" />\n <div\n className={classNames(styles.drawer__container, {\n [styles['drawer__container--right']]: desktopDirection === 'right',\n })}\n ref={containerRef}\n role=\"dialog\"\n aria-modal=\"true\"\n tabIndex={-1}\n {...ariaLabelAttributes}\n >\n <div className={styles.drawer__container__inner}>\n <div className={styles.drawer__header}>\n <Title id={ariaLabelAttributes?.['aria-labelledby']} htmlMarkup={titleHtmlMarkup} appearance=\"title3\">\n {title}\n </Title>\n <Close ariaLabel={ariaLabelCloseBtn} onClick={onRequestClose} small={isMobile} />\n </div>\n <div\n className={styles.drawer__content}\n tabIndex={contentIsScrollable ? 0 : undefined}\n role={contentIsScrollable ? 'region' : undefined}\n {...(contentIsScrollable ? ariaLabelAttributes : {})}\n ref={contentRef}\n >\n {children}\n </div>\n </div>\n <div className={styles.drawer__footer}>\n {footerContent ? (\n footerContent\n ) : (\n <>\n {primaryActionText && <Button onClick={() => handleCTA(onPrimaryAction)}>{primaryActionText}</Button>}\n {secondaryActionText && (\n <Button variant=\"borderless\" onClick={() => handleCTA(onSecondaryAction)}>\n {secondaryActionText}\n </Button>\n )}\n </>\n )}\n </div>\n </div>\n </div>\n );\n};\n\nexport default Drawer;\n"],"names":[],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8]}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../../node_modules/motion/dist/es/framer-motion/dist/es/context/LayoutGroupContext.mjs","../../../../../node_modules/motion/dist/es/framer-motion/dist/es/context/PresenceContext.mjs","../../../../../node_modules/motion/dist/es/framer-motion/dist/es/context/MotionConfigContext.mjs","../../../../../node_modules/motion/dist/es/framer-motion/dist/es/components/AnimatePresence/PopChild.mjs","../../../../../node_modules/motion/dist/es/framer-motion/dist/es/components/AnimatePresence/PresenceChild.mjs","../../../../../node_modules/motion/dist/es/framer-motion/dist/es/components/AnimatePresence/use-presence.mjs","../../../../../node_modules/motion/dist/es/framer-motion/dist/es/components/AnimatePresence/utils.mjs","../../../../../node_modules/motion/dist/es/framer-motion/dist/es/utils/use-isomorphic-effect.mjs","../../../../../node_modules/motion/dist/es/framer-motion/dist/es/components/AnimatePresence/index.mjs","../../../src/components/Drawer/Drawer.tsx"],"sourcesContent":["\"use client\";\nimport { createContext } from 'react';\n\nconst LayoutGroupContext = createContext({});\n\nexport { LayoutGroupContext };\n","\"use client\";\nimport { createContext } from 'react';\n\n/**\n * @public\n */\nconst PresenceContext = createContext(null);\n\nexport { PresenceContext };\n","\"use client\";\nimport { createContext } from 'react';\n\n/**\n * @public\n */\nconst MotionConfigContext = createContext({\n transformPagePoint: (p) => p,\n isStatic: false,\n reducedMotion: \"never\",\n});\n\nexport { MotionConfigContext };\n","\"use client\";\nimport { jsx } from 'react/jsx-runtime';\nimport * as React from 'react';\nimport { useId, useRef, useContext, useInsertionEffect } from 'react';\nimport { MotionConfigContext } from '../../context/MotionConfigContext.mjs';\n\n/**\n * Measurement functionality has to be within a separate component\n * to leverage snapshot lifecycle.\n */\nclass PopChildMeasure extends React.Component {\n getSnapshotBeforeUpdate(prevProps) {\n const element = this.props.childRef.current;\n if (element && prevProps.isPresent && !this.props.isPresent) {\n const size = this.props.sizeRef.current;\n size.height = element.offsetHeight || 0;\n size.width = element.offsetWidth || 0;\n size.top = element.offsetTop;\n size.left = element.offsetLeft;\n }\n return null;\n }\n /**\n * Required with getSnapshotBeforeUpdate to stop React complaining.\n */\n componentDidUpdate() { }\n render() {\n return this.props.children;\n }\n}\nfunction PopChild({ children, isPresent }) {\n const id = useId();\n const ref = useRef(null);\n const size = useRef({\n width: 0,\n height: 0,\n top: 0,\n left: 0,\n });\n const { nonce } = useContext(MotionConfigContext);\n /**\n * We create and inject a style block so we can apply this explicit\n * sizing in a non-destructive manner by just deleting the style block.\n *\n * We can't apply size via render as the measurement happens\n * in getSnapshotBeforeUpdate (post-render), likewise if we apply the\n * styles directly on the DOM node, we might be overwriting\n * styles set via the style prop.\n */\n useInsertionEffect(() => {\n const { width, height, top, left } = size.current;\n if (isPresent || !ref.current || !width || !height)\n return;\n ref.current.dataset.motionPopId = id;\n const style = document.createElement(\"style\");\n if (nonce)\n style.nonce = nonce;\n document.head.appendChild(style);\n if (style.sheet) {\n style.sheet.insertRule(`\n [data-motion-pop-id=\"${id}\"] {\n position: absolute !important;\n width: ${width}px !important;\n height: ${height}px !important;\n top: ${top}px !important;\n left: ${left}px !important;\n }\n `);\n }\n return () => {\n document.head.removeChild(style);\n };\n }, [isPresent]);\n return (jsx(PopChildMeasure, { isPresent: isPresent, childRef: ref, sizeRef: size, children: React.cloneElement(children, { ref }) }));\n}\n\nexport { PopChild };\n","\"use client\";\nimport { jsx } from 'react/jsx-runtime';\nimport * as React from 'react';\nimport { useId, useCallback, useMemo } from 'react';\nimport { PresenceContext } from '../../context/PresenceContext.mjs';\nimport { useConstant } from '../../utils/use-constant.mjs';\nimport { PopChild } from './PopChild.mjs';\n\nconst PresenceChild = ({ children, initial, isPresent, onExitComplete, custom, presenceAffectsLayout, mode, }) => {\n const presenceChildren = useConstant(newChildrenMap);\n const id = useId();\n const memoizedOnExitComplete = useCallback((childId) => {\n presenceChildren.set(childId, true);\n for (const isComplete of presenceChildren.values()) {\n if (!isComplete)\n return; // can stop searching when any is incomplete\n }\n onExitComplete && onExitComplete();\n }, [presenceChildren, onExitComplete]);\n const context = useMemo(() => ({\n id,\n initial,\n isPresent,\n custom,\n onExitComplete: memoizedOnExitComplete,\n register: (childId) => {\n presenceChildren.set(childId, false);\n return () => presenceChildren.delete(childId);\n },\n }), \n /**\n * If the presence of a child affects the layout of the components around it,\n * we want to make a new context value to ensure they get re-rendered\n * so they can detect that layout change.\n */\n presenceAffectsLayout\n ? [Math.random(), memoizedOnExitComplete]\n : [isPresent, memoizedOnExitComplete]);\n useMemo(() => {\n presenceChildren.forEach((_, key) => presenceChildren.set(key, false));\n }, [isPresent]);\n /**\n * If there's no `motion` components to fire exit animations, we want to remove this\n * component immediately.\n */\n React.useEffect(() => {\n !isPresent &&\n !presenceChildren.size &&\n onExitComplete &&\n onExitComplete();\n }, [isPresent]);\n if (mode === \"popLayout\") {\n children = jsx(PopChild, { isPresent: isPresent, children: children });\n }\n return (jsx(PresenceContext.Provider, { value: context, children: children }));\n};\nfunction newChildrenMap() {\n return new Map();\n}\n\nexport { PresenceChild };\n","import { useContext, useId, useEffect, useCallback } from 'react';\nimport { PresenceContext } from '../../context/PresenceContext.mjs';\n\n/**\n * When a component is the child of `AnimatePresence`, it can use `usePresence`\n * to access information about whether it's still present in the React tree.\n *\n * ```jsx\n * import { usePresence } from \"framer-motion\"\n *\n * export const Component = () => {\n * const [isPresent, safeToRemove] = usePresence()\n *\n * useEffect(() => {\n * !isPresent && setTimeout(safeToRemove, 1000)\n * }, [isPresent])\n *\n * return <div />\n * }\n * ```\n *\n * If `isPresent` is `false`, it means that a component has been removed the tree, but\n * `AnimatePresence` won't really remove it until `safeToRemove` has been called.\n *\n * @public\n */\nfunction usePresence(subscribe = true) {\n const context = useContext(PresenceContext);\n if (context === null)\n return [true, null];\n const { isPresent, onExitComplete, register } = context;\n // It's safe to call the following hooks conditionally (after an early return) because the context will always\n // either be null or non-null for the lifespan of the component.\n const id = useId();\n useEffect(() => {\n if (subscribe)\n register(id);\n }, [subscribe]);\n const safeToRemove = useCallback(() => subscribe && onExitComplete && onExitComplete(id), [id, onExitComplete, subscribe]);\n return !isPresent && onExitComplete ? [false, safeToRemove] : [true];\n}\n/**\n * Similar to `usePresence`, except `useIsPresent` simply returns whether or not the component is present.\n * There is no `safeToRemove` function.\n *\n * ```jsx\n * import { useIsPresent } from \"framer-motion\"\n *\n * export const Component = () => {\n * const isPresent = useIsPresent()\n *\n * useEffect(() => {\n * !isPresent && console.log(\"I've been removed!\")\n * }, [isPresent])\n *\n * return <div />\n * }\n * ```\n *\n * @public\n */\nfunction useIsPresent() {\n return isPresent(useContext(PresenceContext));\n}\nfunction isPresent(context) {\n return context === null ? true : context.isPresent;\n}\n\nexport { isPresent, useIsPresent, usePresence };\n","import { Children, isValidElement } from 'react';\n\nconst getChildKey = (child) => child.key || \"\";\nfunction onlyElements(children) {\n const filtered = [];\n // We use forEach here instead of map as map mutates the component key by preprending `.$`\n Children.forEach(children, (child) => {\n if (isValidElement(child))\n filtered.push(child);\n });\n return filtered;\n}\n\nexport { getChildKey, onlyElements };\n","import { useLayoutEffect, useEffect } from 'react';\nimport { isBrowser } from './is-browser.mjs';\n\nconst useIsomorphicLayoutEffect = isBrowser ? useLayoutEffect : useEffect;\n\nexport { useIsomorphicLayoutEffect };\n","\"use client\";\nimport { jsx, Fragment } from 'react/jsx-runtime';\nimport { useMemo, useRef, useState, useContext } from 'react';\nimport { LayoutGroupContext } from '../../context/LayoutGroupContext.mjs';\nimport { useConstant } from '../../utils/use-constant.mjs';\nimport { PresenceChild } from './PresenceChild.mjs';\nimport { usePresence } from './use-presence.mjs';\nimport { onlyElements, getChildKey } from './utils.mjs';\nimport { useIsomorphicLayoutEffect } from '../../utils/use-isomorphic-effect.mjs';\n\n/**\n * `AnimatePresence` enables the animation of components that have been removed from the tree.\n *\n * When adding/removing more than a single child, every child **must** be given a unique `key` prop.\n *\n * Any `motion` components that have an `exit` property defined will animate out when removed from\n * the tree.\n *\n * ```jsx\n * import { motion, AnimatePresence } from 'framer-motion'\n *\n * export const Items = ({ items }) => (\n * <AnimatePresence>\n * {items.map(item => (\n * <motion.div\n * key={item.id}\n * initial={{ opacity: 0 }}\n * animate={{ opacity: 1 }}\n * exit={{ opacity: 0 }}\n * />\n * ))}\n * </AnimatePresence>\n * )\n * ```\n *\n * You can sequence exit animations throughout a tree using variants.\n *\n * If a child contains multiple `motion` components with `exit` props, it will only unmount the child\n * once all `motion` components have finished animating out. Likewise, any components using\n * `usePresence` all need to call `safeToRemove`.\n *\n * @public\n */\nconst AnimatePresence = ({ children, custom, initial = true, onExitComplete, presenceAffectsLayout = true, mode = \"sync\", propagate = false, }) => {\n const [isParentPresent, safeToRemove] = usePresence(propagate);\n /**\n * Filter any children that aren't ReactElements. We can only track components\n * between renders with a props.key.\n */\n const presentChildren = useMemo(() => onlyElements(children), [children]);\n /**\n * Track the keys of the currently rendered children. This is used to\n * determine which children are exiting.\n */\n const presentKeys = propagate && !isParentPresent ? [] : presentChildren.map(getChildKey);\n /**\n * If `initial={false}` we only want to pass this to components in the first render.\n */\n const isInitialRender = useRef(true);\n /**\n * A ref containing the currently present children. When all exit animations\n * are complete, we use this to re-render the component with the latest children\n * *committed* rather than the latest children *rendered*.\n */\n const pendingPresentChildren = useRef(presentChildren);\n /**\n * Track which exiting children have finished animating out.\n */\n const exitComplete = useConstant(() => new Map());\n /**\n * Save children to render as React state. To ensure this component is concurrent-safe,\n * we check for exiting children via an effect.\n */\n const [diffedChildren, setDiffedChildren] = useState(presentChildren);\n const [renderedChildren, setRenderedChildren] = useState(presentChildren);\n useIsomorphicLayoutEffect(() => {\n isInitialRender.current = false;\n pendingPresentChildren.current = presentChildren;\n /**\n * Update complete status of exiting children.\n */\n for (let i = 0; i < renderedChildren.length; i++) {\n const key = getChildKey(renderedChildren[i]);\n if (!presentKeys.includes(key)) {\n if (exitComplete.get(key) !== true) {\n exitComplete.set(key, false);\n }\n }\n else {\n exitComplete.delete(key);\n }\n }\n }, [renderedChildren, presentKeys.length, presentKeys.join(\"-\")]);\n const exitingChildren = [];\n if (presentChildren !== diffedChildren) {\n let nextChildren = [...presentChildren];\n /**\n * Loop through all the currently rendered components and decide which\n * are exiting.\n */\n for (let i = 0; i < renderedChildren.length; i++) {\n const child = renderedChildren[i];\n const key = getChildKey(child);\n if (!presentKeys.includes(key)) {\n nextChildren.splice(i, 0, child);\n exitingChildren.push(child);\n }\n }\n /**\n * If we're in \"wait\" mode, and we have exiting children, we want to\n * only render these until they've all exited.\n */\n if (mode === \"wait\" && exitingChildren.length) {\n nextChildren = exitingChildren;\n }\n setRenderedChildren(onlyElements(nextChildren));\n setDiffedChildren(presentChildren);\n /**\n * Early return to ensure once we've set state with the latest diffed\n * children, we can immediately re-render.\n */\n return;\n }\n if (process.env.NODE_ENV !== \"production\" &&\n mode === \"wait\" &&\n renderedChildren.length > 1) {\n console.warn(`You're attempting to animate multiple children within AnimatePresence, but its mode is set to \"wait\". This will lead to odd visual behaviour.`);\n }\n /**\n * If we've been provided a forceRender function by the LayoutGroupContext,\n * we can use it to force a re-render amongst all surrounding components once\n * all components have finished animating out.\n */\n const { forceRender } = useContext(LayoutGroupContext);\n return (jsx(Fragment, { children: renderedChildren.map((child) => {\n const key = getChildKey(child);\n const isPresent = propagate && !isParentPresent\n ? false\n : presentChildren === renderedChildren ||\n presentKeys.includes(key);\n const onExit = () => {\n if (exitComplete.has(key)) {\n exitComplete.set(key, true);\n }\n else {\n return;\n }\n let isEveryExitComplete = true;\n exitComplete.forEach((isExitComplete) => {\n if (!isExitComplete)\n isEveryExitComplete = false;\n });\n if (isEveryExitComplete) {\n forceRender === null || forceRender === void 0 ? void 0 : forceRender();\n setRenderedChildren(pendingPresentChildren.current);\n propagate && (safeToRemove === null || safeToRemove === void 0 ? void 0 : safeToRemove());\n onExitComplete && onExitComplete();\n }\n };\n return (jsx(PresenceChild, { isPresent: isPresent, initial: !isInitialRender.current || initial\n ? undefined\n : false, custom: isPresent ? undefined : custom, presenceAffectsLayout: presenceAffectsLayout, mode: mode, onExitComplete: isPresent ? undefined : onExit, children: child }, key));\n }) }));\n};\n\nexport { AnimatePresence };\n","import React, { useEffect, useRef } from 'react';\n\nimport classNames from 'classnames';\nimport { AnimatePresence, useAnimate, usePresence } from 'motion/react';\n\nimport { AnalyticsId, KeyboardEventKey, ZIndex } from '../../constants';\nimport { useBreakpoint } from '../../hooks/useBreakpoint';\nimport useFocusTrap from '../../hooks/useFocusTrap';\nimport { useKeyboardEvent } from '../../hooks/useKeyboardEvent';\nimport { useOutsideEvent } from '../../hooks/useOutsideEvent';\nimport { useReturnFocusOnUnmount } from '../../hooks/useReturnFocusOnUnmount';\nimport { breakpoints } from '../../theme/grid';\nimport { getAriaLabelAttributes } from '../../utils/accessibility';\nimport uuid from '../../utils/uuid';\nimport Button from '../Button';\nimport Close from '../Close';\nimport Title, { TitleTags } from '../Title';\n\nimport styles from './styles.module.scss';\n\ntype DesktopDirections = 'left' | 'right';\n\nexport interface DrawerProps extends InnerDrawerProps {\n /** Opens and closes the drawer */\n isOpen: boolean;\n}\n\nexport interface InnerDrawerProps {\n /** Sets the aria-label of the drawer */\n ariaLabel?: string;\n /** Sets the aria-labelledby of the drawer */\n ariaLabelledBy?: string;\n /** Close button aria-label */\n ariaLabelCloseBtn?: string;\n /** Direction of the drawer on desktop. Default: left */\n desktopDirection?: DesktopDirections;\n /** Title to display in the header of the drawer */\n title: string;\n /** id of the drawer title */\n titleId?: string;\n /** Changes the underlying element of the title. Default: h3 */\n titleHtmlMarkup?: TitleTags;\n /** Callback that triggers when clicking on close button or outside the drawer, update isOpen state when this triggers */\n onRequestClose: () => void;\n /** Optional footer content that can be rendered instead of default CTA(s) */\n footerContent?: React.ReactNode;\n /** Main content of the drawer */\n children?: React.ReactNode;\n /** Primary CTA callback */\n onPrimaryAction?: () => void;\n /** Text for primary CTA button if you want a default CTA button rendered (instead of `footerContent`) */\n primaryActionText?: string;\n /** Text for secondary CTA button if you want a default CTA button rendered (instead of `footerContent`) */\n secondaryActionText?: string;\n /** Secondary CTA callback */\n onSecondaryAction?: () => void;\n /** Customize the z-index of the drawer */\n zIndex?: number;\n}\n\nconst Drawer: React.FC<DrawerProps> = props => {\n const { isOpen, ...rest } = props;\n\n return <AnimatePresence>{isOpen && <InnerDrawer {...rest} />}</AnimatePresence>;\n};\n\nconst InnerDrawer: React.FC<InnerDrawerProps> = props => {\n const {\n ariaLabel,\n ariaLabelledBy,\n ariaLabelCloseBtn,\n children,\n desktopDirection = 'left',\n footerContent,\n onPrimaryAction,\n onRequestClose,\n onSecondaryAction,\n primaryActionText,\n secondaryActionText,\n title,\n titleHtmlMarkup = 'h3',\n titleId = uuid(),\n zIndex = ZIndex.OverlayScreen,\n } = props;\n\n const ariaLabelAttributes = getAriaLabelAttributes({ label: ariaLabel, id: ariaLabelledBy, fallbackId: titleId });\n const overlayRef = useRef<HTMLDivElement>(null);\n const containerRef = useRef<HTMLDivElement>(null);\n const contentRef = useRef<HTMLDivElement>(null);\n const breakpoint = useBreakpoint();\n const isMobile = breakpoint < breakpoints.md;\n const [scope, animate] = useAnimate();\n const [isPresent, safeToRemove] = usePresence();\n const contentIsScrollable = contentRef.current && contentRef.current.scrollHeight > contentRef.current.clientHeight;\n\n useFocusTrap(containerRef, true);\n useReturnFocusOnUnmount(containerRef);\n useOutsideEvent(containerRef, () => {\n onRequestClose && onRequestClose();\n });\n useKeyboardEvent(containerRef, () => onRequestClose && onRequestClose(), [KeyboardEventKey.Escape]);\n\n useEffect(() => {\n containerRef.current?.focus();\n }, []);\n\n // Open animation.\n useEffect(() => {\n if (!overlayRef.current || !containerRef.current) return;\n\n if (!isPresent) {\n closeDrawer();\n return;\n }\n\n if (isMobile) {\n animate(containerRef.current, { y: '0' }, { duration: 0.3, ease: 'easeInOut' });\n } else {\n animate(containerRef.current, { x: '0' }, { duration: 0.3, ease: 'easeInOut' });\n }\n\n animate(overlayRef.current, { opacity: 1, pointerEvents: 'auto' }, { duration: 0.3, ease: 'easeInOut' });\n }, [isPresent]);\n\n useEffect(() => {}, [isPresent]);\n\n // Close animasjon, vi kaller `onClose()` til slutt\n const closeDrawer = (): void => {\n if (!overlayRef.current || !containerRef.current) return;\n\n animate(overlayRef.current, { opacity: 0, pointerEvents: 'none' }, { duration: 0.3, ease: 'easeInOut' });\n\n if (isMobile) {\n animate(\n containerRef.current,\n { y: '100%' },\n {\n duration: 0.3,\n ease: 'easeInOut',\n onComplete: () => {\n safeToRemove && safeToRemove();\n },\n }\n );\n } else {\n animate(\n containerRef.current,\n { x: desktopDirection === 'left' ? '-100%' : '100%' },\n {\n duration: 0.3,\n ease: 'easeInOut',\n onComplete: () => {\n safeToRemove && safeToRemove();\n },\n }\n );\n }\n };\n\n const handleCTA = (callback?: () => void): void => {\n if (callback) {\n callback();\n }\n };\n\n return (\n <div className={styles.drawer} ref={scope} style={{ zIndex }} data-analyticsid={AnalyticsId.Drawer}>\n <div className={styles.drawer__overlay} ref={overlayRef} aria-hidden=\"true\" />\n <div\n className={classNames(styles.drawer__container, {\n [styles['drawer__container--right']]: desktopDirection === 'right',\n })}\n ref={containerRef}\n role=\"dialog\"\n aria-modal=\"true\"\n tabIndex={-1}\n {...ariaLabelAttributes}\n >\n <div className={styles.drawer__container__inner}>\n <div className={styles.drawer__header}>\n <Title id={ariaLabelAttributes?.['aria-labelledby']} htmlMarkup={titleHtmlMarkup} appearance=\"title3\">\n {title}\n </Title>\n <Close ariaLabel={ariaLabelCloseBtn} onClick={onRequestClose} small={isMobile} />\n </div>\n <div\n className={styles.drawer__content}\n tabIndex={contentIsScrollable ? 0 : undefined}\n role={contentIsScrollable ? 'region' : undefined}\n {...(contentIsScrollable ? ariaLabelAttributes : {})}\n ref={contentRef}\n >\n {children}\n </div>\n </div>\n <div className={styles.drawer__footer}>\n {footerContent ? (\n footerContent\n ) : (\n <>\n {primaryActionText && <Button onClick={() => handleCTA(onPrimaryAction)}>{primaryActionText}</Button>}\n {secondaryActionText && (\n <Button variant=\"borderless\" onClick={() => handleCTA(onSecondaryAction)}>\n {secondaryActionText}\n </Button>\n )}\n </>\n )}\n </div>\n </div>\n </div>\n );\n};\n\nexport default Drawer;\n"],"names":[],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8]}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { default as React } from 'react';
|
|
2
|
+
import { HNDesignsystemDropdown } from '../../resources/Resources';
|
|
2
3
|
export declare enum DropdownOnColor {
|
|
3
4
|
onwhite = "onwhite",
|
|
4
5
|
ongrey = "ongrey",
|
|
@@ -12,7 +13,7 @@ export interface DropdownProps {
|
|
|
12
13
|
placeholder: string;
|
|
13
14
|
/** Sets the dropdown content */
|
|
14
15
|
children: React.ReactNode;
|
|
15
|
-
/** Close button text */
|
|
16
|
+
/** @deprecated Close button text */
|
|
16
17
|
closeText?: string;
|
|
17
18
|
/** Minimum width for the dropdown in pixels. Does not affect trigger button */
|
|
18
19
|
dropdownMinWidth?: number;
|
|
@@ -34,6 +35,8 @@ export interface DropdownProps {
|
|
|
34
35
|
testId?: string;
|
|
35
36
|
/** Overrides the default z-index of the DropDownContent */
|
|
36
37
|
zIndex?: number;
|
|
38
|
+
/** Resources for component */
|
|
39
|
+
resources?: Partial<HNDesignsystemDropdown>;
|
|
37
40
|
}
|
|
38
41
|
declare const Dropdown: React.FC<DropdownProps>;
|
|
39
42
|
export default Dropdown;
|
|
@@ -8,8 +8,9 @@ import { useToggle } from "../../hooks/useToggle.js";
|
|
|
8
8
|
import { useKeyboardEvent } from "../../hooks/useKeyboardEvent.js";
|
|
9
9
|
import { useOutsideEvent } from "../../hooks/useOutsideEvent.js";
|
|
10
10
|
import { useUuid } from "../../hooks/useUuid.js";
|
|
11
|
-
import { ZIndex, KeyboardEventKey, AnalyticsId, IconSize } from "../../constants.js";
|
|
11
|
+
import { LanguageLocales, ZIndex, KeyboardEventKey, AnalyticsId, IconSize } from "../../constants.js";
|
|
12
12
|
import { isComponent } from "../../utils/component.js";
|
|
13
|
+
import { useLanguage } from "../../utils/language.js";
|
|
13
14
|
import { mergeRefs } from "../../utils/refs.js";
|
|
14
15
|
import { B as Button } from "../../Button.js";
|
|
15
16
|
import { C as Checkbox } from "../../Checkbox.js";
|
|
@@ -17,6 +18,23 @@ import { I as Icon } from "../../Icon.js";
|
|
|
17
18
|
import PlusSmall from "../Icons/PlusSmall.js";
|
|
18
19
|
import { R as RadioButton } from "../../RadioButton.js";
|
|
19
20
|
import styles from "./styles.module.scss";
|
|
21
|
+
const closeText$1 = "Close";
|
|
22
|
+
const enGB = {
|
|
23
|
+
closeText: closeText$1
|
|
24
|
+
};
|
|
25
|
+
const closeText = "Lukk";
|
|
26
|
+
const nbNO = {
|
|
27
|
+
closeText
|
|
28
|
+
};
|
|
29
|
+
const getResources = (language) => {
|
|
30
|
+
switch (language) {
|
|
31
|
+
case LanguageLocales.ENGLISH:
|
|
32
|
+
return enGB;
|
|
33
|
+
case LanguageLocales.NORWEGIAN:
|
|
34
|
+
default:
|
|
35
|
+
return nbNO;
|
|
36
|
+
}
|
|
37
|
+
};
|
|
20
38
|
var DropdownOnColor = /* @__PURE__ */ ((DropdownOnColor2) => {
|
|
21
39
|
DropdownOnColor2["onwhite"] = "onwhite";
|
|
22
40
|
DropdownOnColor2["ongrey"] = "ongrey";
|
|
@@ -28,7 +46,6 @@ const Dropdown = (props) => {
|
|
|
28
46
|
const {
|
|
29
47
|
label,
|
|
30
48
|
placeholder,
|
|
31
|
-
closeText = "Lukk",
|
|
32
49
|
noCloseButton = false,
|
|
33
50
|
onToggle,
|
|
34
51
|
dropdownMinWidth,
|
|
@@ -39,7 +56,8 @@ const Dropdown = (props) => {
|
|
|
39
56
|
fluid = false,
|
|
40
57
|
testId,
|
|
41
58
|
disabled,
|
|
42
|
-
zIndex = ZIndex.PopOver
|
|
59
|
+
zIndex = ZIndex.PopOver,
|
|
60
|
+
resources
|
|
43
61
|
} = props;
|
|
44
62
|
const dropdownRef = useRef(null);
|
|
45
63
|
const optionsRef = useRef(null);
|
|
@@ -51,6 +69,13 @@ const Dropdown = (props) => {
|
|
|
51
69
|
const labelId = useUuid();
|
|
52
70
|
const toggleLabelId = useUuid();
|
|
53
71
|
const optionIdPrefix = useUuid();
|
|
72
|
+
const { language } = useLanguage(LanguageLocales.NORWEGIAN);
|
|
73
|
+
const defaultResources = getResources(language);
|
|
74
|
+
const mergedResources = {
|
|
75
|
+
...defaultResources,
|
|
76
|
+
...resources,
|
|
77
|
+
closeText: props.closeText ?? (resources == null ? void 0 : resources.closeText) ?? defaultResources.closeText
|
|
78
|
+
};
|
|
54
79
|
const handleOpen = (isKeyboard) => {
|
|
55
80
|
openedByKeyboard.current = isKeyboard;
|
|
56
81
|
toggleIsOpen();
|
|
@@ -76,13 +101,14 @@ const Dropdown = (props) => {
|
|
|
76
101
|
if (!inputRefList.current) {
|
|
77
102
|
return;
|
|
78
103
|
}
|
|
104
|
+
if (event.key === KeyboardEventKey.Escape) {
|
|
105
|
+
if (isOpen) handleClose();
|
|
106
|
+
return;
|
|
107
|
+
}
|
|
79
108
|
if (!isOpen) {
|
|
80
109
|
handleOpen(true);
|
|
81
110
|
event.preventDefault();
|
|
82
111
|
return;
|
|
83
|
-
} else if (event.key === KeyboardEventKey.Escape && isOpen) {
|
|
84
|
-
handleClose();
|
|
85
|
-
return;
|
|
86
112
|
}
|
|
87
113
|
const index = inputRefList.current.findIndex((x) => x.current === event.target);
|
|
88
114
|
let nextIndex = index;
|
|
@@ -136,7 +162,7 @@ const Dropdown = (props) => {
|
|
|
136
162
|
"button",
|
|
137
163
|
{
|
|
138
164
|
type: "button",
|
|
139
|
-
onClick: () =>
|
|
165
|
+
onClick: () => handleOpen(false),
|
|
140
166
|
className: toggleClasses,
|
|
141
167
|
ref: buttonRef,
|
|
142
168
|
"data-testid": testId,
|
|
@@ -173,7 +199,7 @@ const Dropdown = (props) => {
|
|
|
173
199
|
children: renderChildren
|
|
174
200
|
}
|
|
175
201
|
),
|
|
176
|
-
!noCloseButton && /* @__PURE__ */ jsx("div", { className: styles.dropdown__close, children: /* @__PURE__ */ jsx(Button, { onClick: handleClose, "aria-expanded": isOpen, children: closeText }) })
|
|
202
|
+
!noCloseButton && /* @__PURE__ */ jsx("div", { className: styles.dropdown__close, children: /* @__PURE__ */ jsx(Button, { onClick: handleClose, "aria-expanded": isOpen, children: mergedResources.closeText }) })
|
|
177
203
|
] })
|
|
178
204
|
] });
|
|
179
205
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../src/components/Dropdown/Dropdown.tsx"],"sourcesContent":["import React, { useEffect, useRef, useState } from 'react';\n\nimport classNames from 'classnames';\n\nimport {\n AnalyticsId,\n IconSize,\n KeyboardEventKey,\n ZIndex,\n theme,\n useHover,\n useKeyboardEvent,\n useOutsideEvent,\n useToggle,\n useUuid,\n} from '../..';\nimport { isComponent } from '../../utils/component';\nimport { mergeRefs } from '../../utils/refs';\nimport Button from '../Button';\nimport Checkbox, { CheckboxProps } from '../Checkbox';\nimport Icon from '../Icon';\nimport PlusSmall from '../Icons/PlusSmall';\nimport RadioButton, { RadioButtonProps } from '../RadioButton';\n\nimport styles from './styles.module.scss';\n\nexport enum DropdownOnColor {\n onwhite = 'onwhite',\n ongrey = 'ongrey',\n onblueberry = 'onblueberry',\n oncherry = 'oncherry',\n}\n\nexport interface DropdownProps {\n /** Label for dropdown. Visible for screen readers */\n label: string;\n /** Text on the trigger button that opens the dropdown */\n placeholder: string;\n /** Sets the dropdown content */\n children: React.ReactNode;\n /** Close button text */\n closeText?: string;\n /** Minimum width for the dropdown in pixels. Does not affect trigger button */\n dropdownMinWidth?: number;\n /** No close button */\n noCloseButton?: boolean;\n /** Called when dropdown is open/closed */\n onToggle?: (isOpen: boolean) => void;\n /** Whether the dropdown is open or not */\n open?: boolean;\n /** Changes the visuals of the dropdown */\n onColor?: keyof typeof DropdownOnColor;\n /** Makes the background of the trigger transparent */\n transparent?: boolean;\n /** Makes the width of the full component adjust to its parent */\n fluid?: boolean;\n /** Makes the dropdown disabled */\n disabled?: boolean;\n /** Sets the data-testid attribute on the dropdown button */\n testId?: string;\n /** Overrides the default z-index of the DropDownContent */\n zIndex?: number;\n}\n\nconst Dropdown: React.FC<DropdownProps> = props => {\n const {\n label,\n placeholder,\n closeText = 'Lukk',\n noCloseButton = false,\n onToggle,\n dropdownMinWidth,\n open = false,\n children,\n onColor = DropdownOnColor.onwhite,\n transparent = false,\n fluid = false,\n testId,\n disabled,\n zIndex = ZIndex.PopOver,\n } = props;\n const dropdownRef = useRef<HTMLDivElement>(null);\n const optionsRef = useRef<HTMLUListElement>(null);\n const { hoverRef: buttonRef, isHovered } = useHover<HTMLButtonElement>();\n const openedByKeyboard = useRef<boolean>(false);\n const { value: isOpen, toggleValue: toggleIsOpen } = useToggle(!disabled && open, onToggle);\n const inputRefList = useRef(React.Children.map(children, () => React.createRef<HTMLElement>()));\n const [currentIndex, setCurrentIndex] = useState<number>();\n const labelId = useUuid();\n const toggleLabelId = useUuid();\n const optionIdPrefix = useUuid();\n\n const handleOpen = (isKeyboard: boolean): void => {\n openedByKeyboard.current = isKeyboard;\n toggleIsOpen();\n };\n\n const handleClose = (): void => {\n toggleIsOpen();\n buttonRef.current?.focus();\n };\n\n useEffect(() => {\n if (isOpen && openedByKeyboard.current) {\n inputRefList.current\n ?.find((inputRef, index) => {\n if (inputRef.current && !inputRef.current.hasAttribute('disabled')) {\n setCurrentIndex(index);\n return true;\n }\n })\n ?.current?.focus();\n }\n }, [isOpen]);\n\n const handleKeyboardNavigation = (event: KeyboardEvent): void => {\n if (!inputRefList.current) {\n return;\n }\n\n if (!isOpen) {\n handleOpen(true);\n event.preventDefault();\n return;\n } else if (event.key === KeyboardEventKey.Escape && isOpen) {\n handleClose();\n return;\n }\n\n const index = inputRefList.current.findIndex(x => x.current === event.target);\n let nextIndex = index;\n\n if (event.key === KeyboardEventKey.Home) {\n nextIndex = 0;\n } else if (event.key === KeyboardEventKey.End) {\n nextIndex = inputRefList.current.length - 1;\n } else if (event.key === KeyboardEventKey.ArrowDown && index < inputRefList.current.length - 1) {\n nextIndex = index + 1;\n } else if (event.key === KeyboardEventKey.ArrowUp && index > 0) {\n nextIndex = index - 1;\n } else if (event.key === KeyboardEventKey.Enter && index !== -1) {\n nextIndex = index;\n }\n\n if (nextIndex !== -1 && event.key !== KeyboardEventKey.Space) {\n event.preventDefault();\n\n inputRefList.current[nextIndex].current?.focus();\n setCurrentIndex(nextIndex);\n }\n };\n\n useKeyboardEvent(dropdownRef, handleKeyboardNavigation, [\n KeyboardEventKey.ArrowDown,\n KeyboardEventKey.ArrowUp,\n KeyboardEventKey.End,\n KeyboardEventKey.Enter,\n KeyboardEventKey.Escape,\n KeyboardEventKey.Home,\n KeyboardEventKey.Space,\n ]);\n\n useOutsideEvent(dropdownRef, () => isOpen && handleClose());\n\n const toggleClasses = classNames(\n styles.dropdown__toggle,\n !disabled && {\n [styles['dropdown__toggle--on-white']]: onColor === DropdownOnColor.onwhite,\n [styles['dropdown__toggle--on-grey']]: onColor === DropdownOnColor.ongrey,\n [styles['dropdown__toggle--on-blueberry']]: onColor === DropdownOnColor.onblueberry,\n [styles['dropdown__toggle--on-cherry']]: onColor === DropdownOnColor.oncherry,\n [styles['dropdown__toggle--transparent']]: transparent,\n [styles['dropdown__toggle--fluid']]: fluid,\n [styles['dropdown__toggle--open']]: isOpen,\n }\n );\n\n const contentClasses = classNames(styles.dropdown__content, isOpen && styles['dropdown__content--open']);\n\n const renderChildren = React.Children.map(children, (child, index) => {\n const role = isComponent<RadioButtonProps>(child, RadioButton)\n ? 'menuitemradio'\n : isComponent<CheckboxProps>(child, Checkbox)\n ? 'menuitemcheckbox'\n : 'menuitem';\n\n return (\n <li className={styles.dropdown__input} role={role} id={`${optionIdPrefix}-${index}`}>\n {React.isValidElement(child) && inputRefList.current && inputRefList.current[index]\n ? React.cloneElement(child as React.ReactElement, { ref: mergeRefs([child.props.ref, inputRefList.current[index]]) })\n : child}\n </li>\n );\n });\n\n return (\n <div className={styles.dropdown} ref={dropdownRef}>\n <span id={labelId} className={styles.dropdown__label}>\n {label}\n </span>\n <button\n type=\"button\"\n onClick={(): false | void => !isOpen && handleOpen(false)}\n className={toggleClasses}\n ref={buttonRef}\n data-testid={testId}\n data-analyticsid={AnalyticsId.Dropdown}\n disabled={disabled}\n aria-labelledby={toggleLabelId}\n aria-haspopup=\"menu\"\n aria-expanded={isOpen}\n >\n <span id={toggleLabelId} className={styles.dropdown__toggle__label}>\n {placeholder}\n </span>\n <Icon\n color={disabled ? theme.palette.neutral700 : theme.palette.blueberry600}\n svgIcon={PlusSmall}\n className={styles.dropdown__icon}\n isHovered={!disabled && isHovered}\n size={IconSize.XSmall}\n />\n </button>\n <div className={contentClasses} style={{ width: fluid ? '100%' : `auto`, minWidth: dropdownMinWidth ?? 'auto', zIndex: zIndex }}>\n <ul\n className={styles.dropdown__options}\n role=\"menu\"\n aria-labelledby={labelId}\n tabIndex={-1}\n aria-activedescendant={typeof currentIndex !== 'undefined' ? `${optionIdPrefix}-${currentIndex}` : undefined}\n ref={optionsRef}\n >\n {renderChildren}\n </ul>\n {!noCloseButton && (\n <div className={styles.dropdown__close}>\n <Button onClick={handleClose} aria-expanded={isOpen}>\n {closeText}\n </Button>\n </div>\n )}\n </div>\n </div>\n );\n};\n\nexport default Dropdown;\n"],"names":["DropdownOnColor","React"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/components/Dropdown/resourceHelper.ts","../../../src/components/Dropdown/Dropdown.tsx"],"sourcesContent":["import { LanguageLocales } from '../../constants';\nimport enGB from '../../resources/HN.Designsystem.Dropdown.en-GB.json';\nimport nbNO from '../../resources/HN.Designsystem.Dropdown.nb-NO.json';\nimport { HNDesignsystemDropdown } from '../../resources/Resources';\n\nexport const getResources = (language: LanguageLocales): HNDesignsystemDropdown => {\n switch (language) {\n case LanguageLocales.ENGLISH:\n return enGB;\n case LanguageLocales.NORWEGIAN:\n default:\n return nbNO;\n }\n};\n","import React, { useEffect, useRef, useState } from 'react';\n\nimport classNames from 'classnames';\n\nimport {\n AnalyticsId,\n IconSize,\n KeyboardEventKey,\n LanguageLocales,\n ZIndex,\n theme,\n useHover,\n useKeyboardEvent,\n useOutsideEvent,\n useToggle,\n useUuid,\n} from '../..';\nimport { HNDesignsystemDropdown } from '../../resources/Resources';\nimport { isComponent } from '../../utils/component';\nimport { useLanguage } from '../../utils/language';\nimport { mergeRefs } from '../../utils/refs';\nimport Button from '../Button';\nimport Checkbox, { CheckboxProps } from '../Checkbox';\nimport Icon from '../Icon';\nimport PlusSmall from '../Icons/PlusSmall';\nimport RadioButton, { RadioButtonProps } from '../RadioButton';\nimport { getResources } from './resourceHelper';\n\nimport styles from './styles.module.scss';\n\nexport enum DropdownOnColor {\n onwhite = 'onwhite',\n ongrey = 'ongrey',\n onblueberry = 'onblueberry',\n oncherry = 'oncherry',\n}\n\nexport interface DropdownProps {\n /** Label for dropdown. Visible for screen readers */\n label: string;\n /** Text on the trigger button that opens the dropdown */\n placeholder: string;\n /** Sets the dropdown content */\n children: React.ReactNode;\n /** @deprecated Close button text */\n closeText?: string;\n /** Minimum width for the dropdown in pixels. Does not affect trigger button */\n dropdownMinWidth?: number;\n /** No close button */\n noCloseButton?: boolean;\n /** Called when dropdown is open/closed */\n onToggle?: (isOpen: boolean) => void;\n /** Whether the dropdown is open or not */\n open?: boolean;\n /** Changes the visuals of the dropdown */\n onColor?: keyof typeof DropdownOnColor;\n /** Makes the background of the trigger transparent */\n transparent?: boolean;\n /** Makes the width of the full component adjust to its parent */\n fluid?: boolean;\n /** Makes the dropdown disabled */\n disabled?: boolean;\n /** Sets the data-testid attribute on the dropdown button */\n testId?: string;\n /** Overrides the default z-index of the DropDownContent */\n zIndex?: number;\n /** Resources for component */\n resources?: Partial<HNDesignsystemDropdown>;\n}\n\nconst Dropdown: React.FC<DropdownProps> = props => {\n const {\n label,\n placeholder,\n noCloseButton = false,\n onToggle,\n dropdownMinWidth,\n open = false,\n children,\n onColor = DropdownOnColor.onwhite,\n transparent = false,\n fluid = false,\n testId,\n disabled,\n zIndex = ZIndex.PopOver,\n resources,\n } = props;\n const dropdownRef = useRef<HTMLDivElement>(null);\n const optionsRef = useRef<HTMLUListElement>(null);\n const { hoverRef: buttonRef, isHovered } = useHover<HTMLButtonElement>();\n const openedByKeyboard = useRef<boolean>(false);\n const { value: isOpen, toggleValue: toggleIsOpen } = useToggle(!disabled && open, onToggle);\n const inputRefList = useRef(React.Children.map(children, () => React.createRef<HTMLElement>()));\n const [currentIndex, setCurrentIndex] = useState<number>();\n const labelId = useUuid();\n const toggleLabelId = useUuid();\n const optionIdPrefix = useUuid();\n const { language } = useLanguage<LanguageLocales>(LanguageLocales.NORWEGIAN);\n const defaultResources = getResources(language);\n\n const mergedResources: HNDesignsystemDropdown = {\n ...defaultResources,\n ...resources,\n closeText: props.closeText ?? resources?.closeText ?? defaultResources.closeText,\n };\n\n const handleOpen = (isKeyboard: boolean): void => {\n openedByKeyboard.current = isKeyboard;\n toggleIsOpen();\n };\n\n const handleClose = (): void => {\n toggleIsOpen();\n buttonRef.current?.focus();\n };\n\n useEffect(() => {\n if (isOpen && openedByKeyboard.current) {\n inputRefList.current\n ?.find((inputRef, index) => {\n if (inputRef.current && !inputRef.current.hasAttribute('disabled')) {\n setCurrentIndex(index);\n return true;\n }\n })\n ?.current?.focus();\n }\n }, [isOpen]);\n\n const handleKeyboardNavigation = (event: KeyboardEvent): void => {\n if (!inputRefList.current) {\n return;\n }\n\n if (event.key === KeyboardEventKey.Escape) {\n if (isOpen) handleClose();\n return;\n }\n\n if (!isOpen) {\n handleOpen(true);\n event.preventDefault();\n return;\n }\n\n const index = inputRefList.current.findIndex(x => x.current === event.target);\n let nextIndex = index;\n\n if (event.key === KeyboardEventKey.Home) {\n nextIndex = 0;\n } else if (event.key === KeyboardEventKey.End) {\n nextIndex = inputRefList.current.length - 1;\n } else if (event.key === KeyboardEventKey.ArrowDown && index < inputRefList.current.length - 1) {\n nextIndex = index + 1;\n } else if (event.key === KeyboardEventKey.ArrowUp && index > 0) {\n nextIndex = index - 1;\n } else if (event.key === KeyboardEventKey.Enter && index !== -1) {\n nextIndex = index;\n }\n\n if (nextIndex !== -1 && event.key !== KeyboardEventKey.Space) {\n event.preventDefault();\n\n inputRefList.current[nextIndex].current?.focus();\n setCurrentIndex(nextIndex);\n }\n };\n\n useKeyboardEvent(dropdownRef, handleKeyboardNavigation, [\n KeyboardEventKey.ArrowDown,\n KeyboardEventKey.ArrowUp,\n KeyboardEventKey.End,\n KeyboardEventKey.Enter,\n KeyboardEventKey.Escape,\n KeyboardEventKey.Home,\n KeyboardEventKey.Space,\n ]);\n\n useOutsideEvent(dropdownRef, () => isOpen && handleClose());\n\n const toggleClasses = classNames(\n styles.dropdown__toggle,\n !disabled && {\n [styles['dropdown__toggle--on-white']]: onColor === DropdownOnColor.onwhite,\n [styles['dropdown__toggle--on-grey']]: onColor === DropdownOnColor.ongrey,\n [styles['dropdown__toggle--on-blueberry']]: onColor === DropdownOnColor.onblueberry,\n [styles['dropdown__toggle--on-cherry']]: onColor === DropdownOnColor.oncherry,\n [styles['dropdown__toggle--transparent']]: transparent,\n [styles['dropdown__toggle--fluid']]: fluid,\n [styles['dropdown__toggle--open']]: isOpen,\n }\n );\n\n const contentClasses = classNames(styles.dropdown__content, isOpen && styles['dropdown__content--open']);\n\n const renderChildren = React.Children.map(children, (child, index) => {\n const role = isComponent<RadioButtonProps>(child, RadioButton)\n ? 'menuitemradio'\n : isComponent<CheckboxProps>(child, Checkbox)\n ? 'menuitemcheckbox'\n : 'menuitem';\n\n return (\n <li className={styles.dropdown__input} role={role} id={`${optionIdPrefix}-${index}`}>\n {React.isValidElement(child) && inputRefList.current && inputRefList.current[index]\n ? React.cloneElement(child as React.ReactElement, { ref: mergeRefs([child.props.ref, inputRefList.current[index]]) })\n : child}\n </li>\n );\n });\n\n return (\n <div className={styles.dropdown} ref={dropdownRef}>\n <span id={labelId} className={styles.dropdown__label}>\n {label}\n </span>\n <button\n type=\"button\"\n onClick={(): false | void => handleOpen(false)}\n className={toggleClasses}\n ref={buttonRef}\n data-testid={testId}\n data-analyticsid={AnalyticsId.Dropdown}\n disabled={disabled}\n aria-labelledby={toggleLabelId}\n aria-haspopup=\"menu\"\n aria-expanded={isOpen}\n >\n <span id={toggleLabelId} className={styles.dropdown__toggle__label}>\n {placeholder}\n </span>\n <Icon\n color={disabled ? theme.palette.neutral700 : theme.palette.blueberry600}\n svgIcon={PlusSmall}\n className={styles.dropdown__icon}\n isHovered={!disabled && isHovered}\n size={IconSize.XSmall}\n />\n </button>\n <div className={contentClasses} style={{ width: fluid ? '100%' : `auto`, minWidth: dropdownMinWidth ?? 'auto', zIndex: zIndex }}>\n <ul\n className={styles.dropdown__options}\n role=\"menu\"\n aria-labelledby={labelId}\n tabIndex={-1}\n aria-activedescendant={typeof currentIndex !== 'undefined' ? `${optionIdPrefix}-${currentIndex}` : undefined}\n ref={optionsRef}\n >\n {renderChildren}\n </ul>\n {!noCloseButton && (\n <div className={styles.dropdown__close}>\n <Button onClick={handleClose} aria-expanded={isOpen}>\n {mergedResources.closeText}\n </Button>\n </div>\n )}\n </div>\n </div>\n );\n};\n\nexport default Dropdown;\n"],"names":["DropdownOnColor","React"],"mappings":"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"}
|
|
@@ -1299,6 +1299,26 @@ declare const _default: {
|
|
|
1299
1299
|
alternativeName: string;
|
|
1300
1300
|
categories: string;
|
|
1301
1301
|
};
|
|
1302
|
+
alertsignfill: {
|
|
1303
|
+
alternativeName: string;
|
|
1304
|
+
categories: string;
|
|
1305
|
+
};
|
|
1306
|
+
alertsignstroke: {
|
|
1307
|
+
alternativeName: string;
|
|
1308
|
+
categories: string;
|
|
1309
|
+
};
|
|
1310
|
+
avatar: {
|
|
1311
|
+
alternativeName: string;
|
|
1312
|
+
categories: string;
|
|
1313
|
+
};
|
|
1314
|
+
noaccess: {
|
|
1315
|
+
alternativeName: string;
|
|
1316
|
+
categories: string;
|
|
1317
|
+
};
|
|
1318
|
+
patientandperson: {
|
|
1319
|
+
alternativeName: string;
|
|
1320
|
+
categories: string;
|
|
1321
|
+
};
|
|
1302
1322
|
'': {
|
|
1303
1323
|
alternativeName: string;
|
|
1304
1324
|
categories: string;
|
|
@@ -324,6 +324,11 @@ const AdditionalIconInformation = {
|
|
|
324
324
|
dotlookingglass: { alternativeName: "", categories: "System, StatusDot" },
|
|
325
325
|
dotquestionmark: { alternativeName: "", categories: "System, StatusDot" },
|
|
326
326
|
dotwarningtriangle: { alternativeName: "", categories: "System, StatusDot" },
|
|
327
|
+
alertsignfill: { alternativeName: "Advarselskilt (mørk)", categories: "System" },
|
|
328
|
+
alertsignstroke: { alternativeName: "Advarselskilt", categories: "System" },
|
|
329
|
+
avatar: { alternativeName: "Avatar", categories: "Generisk, Personer" },
|
|
330
|
+
noaccess: { alternativeName: "IngenTilgang (mørk)", categories: "System" },
|
|
331
|
+
patientandperson: { alternativeName: "PårørendeOgPasient", categories: "Behandling, Personer" },
|
|
327
332
|
"": { alternativeName: "", categories: "" }
|
|
328
333
|
};
|
|
329
334
|
export {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AdditionalIconInformation.js","sources":["../../../src/components/Icons/AdditionalIconInformation.ts"],"sourcesContent":["export default {\n bandaid: { alternativeName: 'Plaster', categories: 'Generisk, Behandling, Samvalg' },\n plant: { alternativeName: 'Plante', categories: 'Giftinformasjonen, Livsstil' },\n snake: { alternativeName: 'Slange', categories: 'Giftinformasjonen' },\n gascan: { alternativeName: 'Gassbeholder', categories: 'Giftinformasjonen' },\n medicine: { alternativeName: 'Legemidler', categories: 'Tjeneste, Behandling, Samvalg' },\n spray: { alternativeName: 'Sprayflaske', categories: 'Giftinformasjonen, Livsstil' },\n pizzaslice: { alternativeName: 'Pizza', categories: 'Giftinformasjonen, Livsstil' },\n beerandpills: { alternativeName: 'Rusmidler', categories: 'Giftinformasjonen, Livsstil' },\n dog: { alternativeName: 'Hund', categories: 'Giftinformasjonen, Dyr' },\n mushroom: { alternativeName: 'Sopp', categories: 'Giftinformasjonen, Livsstil' },\n bus: { alternativeName: 'Buss', categories: 'Tjeneste, Kjøretøy' },\n vaccine: { alternativeName: 'Vaksiner', categories: 'Tjeneste, Behandling' },\n referral: { alternativeName: 'Henvisninger', categories: 'Tjeneste' },\n envelope: { alternativeName: 'Konvolutt', categories: 'Tjeneste, Generisk' },\n calendar: { alternativeName: 'Kalender', categories: 'Tjeneste, Generisk' },\n contacts: { alternativeName: 'Helsekontakter', categories: 'Tjeneste' },\n archive: { alternativeName: 'Arkivboks', categories: 'Tjeneste' },\n donorcard: { alternativeName: 'Donorkort', categories: 'Tjeneste' },\n wallet: { alternativeName: 'Lommebok', categories: 'Tjeneste, Generisk' },\n kjernejournal: { alternativeName: 'Kjernejournal', categories: 'Tjeneste' },\n maledoctor: { alternativeName: 'Mannlig lege', categories: 'Tjeneste, Behandling' },\n laboratory: { alternativeName: 'Laboratorieprøver', categories: 'Tjeneste, Behandling' },\n toolbox: { alternativeName: 'Verktøykasse', categories: 'Tjeneste, Generisk' },\n criticalhealthinfo: { alternativeName: 'Sykdom og kritisk informasjon', categories: 'Tjeneste' },\n scale: { alternativeName: 'Vektskål', categories: 'Generisk' },\n poisoninformation: { alternativeName: 'Giftinformasjonen', categories: 'Giftinformasjonen' },\n lightbulb: { alternativeName: 'Lyspære', categories: 'Generisk' },\n europeanhealthcard: { alternativeName: 'Europeisk helsetrygdkort', categories: 'Tjeneste' },\n documents: { alternativeName: 'Dokumenter', categories: 'Tjeneste, Generisk' },\n medicinewarning: { alternativeName: 'Meld bivirkninger', categories: 'Tjeneste' },\n refund: { alternativeName: 'Refusjon', categories: 'Tjeneste' },\n lawbook: { alternativeName: 'Lovbok', categories: 'Generisk' },\n userorganization: { alternativeName: 'Pasient- og brukerorganisasjoner', categories: 'Generisk, Personer' },\n publication: { alternativeName: 'Publikasjon', categories: 'Generisk' },\n facebook: { alternativeName: 'Facebook', categories: 'Sosiale medier' },\n receptionist: { alternativeName: 'Person med headset', categories: 'Generisk, Personer' },\n infosignstroke: { alternativeName: 'Informasjon (lys)', categories: 'Generisk' },\n helpsign: { alternativeName: 'Spørsmål', categories: 'Generisk' },\n globe: { alternativeName: 'Globus', categories: 'Generisk' },\n calendarevent: { alternativeName: 'Kalenderhendelse', categories: 'Generisk' },\n laptopblog: { alternativeName: 'Laptop blogg', categories: 'Generisk, Sosiale medier' },\n snapchat: { alternativeName: 'Snapshat', categories: 'Sosiale medier, Generisk' },\n twitter: { alternativeName: 'Twitter', categories: 'Sosiale medier, Generisk' },\n youtube: { alternativeName: 'Youtube', categories: 'Sosiale medier, Generisk' },\n instagram: { alternativeName: 'Instagram', categories: 'Sosiale medier, Generisk' },\n echat: { alternativeName: 'Sosiale medier (generisk)', categories: 'Sosiale medier, Generisk' },\n journal: { alternativeName: 'Pasientjournal', categories: 'Tjeneste' },\n firstaidkit: { alternativeName: 'Førstehjelpsskrin', categories: 'Giftinformasjonen, Behandling' },\n shakinghand: { alternativeName: 'Hender som holder', categories: 'Tjeneste, Samvalg' },\n hospital: { alternativeName: 'Sykehus', categories: 'Tjeneste, Behandling' },\n microscope: { alternativeName: 'Mikroskop', categories: 'Tjeneste, Behandling' },\n apple: { alternativeName: 'Eple', categories: 'Livsstil' },\n makeup: { alternativeName: 'Sminke', categories: 'Giftinformasjonen' },\n garden: { alternativeName: 'Hage', categories: 'Giftinformasjonen' },\n paintroller: { alternativeName: 'Malingsrull', categories: 'Giftinformasjonen' },\n football: { alternativeName: 'Fotball', categories: 'Giftinformasjonen, Livsstil' },\n pencil: { alternativeName: 'Blyant', categories: 'Giftinformasjonen' },\n hiker: { alternativeName: 'Turgåer', categories: 'Livsstil, Samvalg' },\n personoverweight: { alternativeName: 'Overvektig person', categories: 'Livsstil, Personer' },\n mentalhealthadult: { alternativeName: 'Psykisk helse voksne', categories: 'Psykisk helse' },\n pregnant: { alternativeName: 'Gravid', categories: 'Gravid og fødsel' },\n birthdaycake: { alternativeName: 'Bursdagskake', categories: 'Gravid og fødsel, Generisk' },\n baby: { alternativeName: 'Baby', categories: 'Gravid og fødsel' },\n motherholdingbaby: { alternativeName: 'Kvinne holder baby', categories: 'Gravid og fødsel' },\n cigarette: { alternativeName: 'Sigarett', categories: 'Livsstil' },\n anxiety: { alternativeName: 'Angst', categories: 'Psykisk helse, Sykdom' },\n depression: { alternativeName: 'Depresjon', categories: 'Psykisk helse, Sykdom' },\n teddybear: { alternativeName: 'Teddybjørn', categories: 'Generisk, Sykdom' },\n brain: { alternativeName: 'Hjerne', categories: 'Sykdom, Anatomi' },\n heart: { alternativeName: 'Hjerte', categories: 'Sykdom, Anatomi' },\n skin: { alternativeName: 'Hud og hår', categories: 'Sykdom, Anatomi' },\n cancer: { alternativeName: 'Kreft', categories: 'Sykdom' },\n lungs: { alternativeName: 'Lunger', categories: 'Sykdom, Anatomi' },\n digestivesystem: { alternativeName: 'Fordøyelsessystem', categories: 'Sykdom, Anatomi' },\n skeleton: { alternativeName: 'Skjelett', categories: 'Sykdom, Anatomi' },\n kidney: { alternativeName: 'Nyre', categories: 'Sykdom, Anatomi' },\n dizzy: { alternativeName: 'Svimmel', categories: 'Sykdom' },\n awakepersononpillow: { alternativeName: 'Person som ikke får sove', categories: 'Generisk, Sykdom' },\n tooth: { alternativeName: 'Tann', categories: 'Anatomi' },\n thinkingaboutbaby: { alternativeName: 'Ufrivillig barnløshet', categories: 'Behandling, Sykdom' },\n malegenitalia: { alternativeName: 'Mannlig kjønnsorgan', categories: 'Sykdom, Anatomi' },\n earnosethroat: { alternativeName: 'Øre - nese - hals', categories: 'Sykdom, Anatomi' },\n eye: { alternativeName: 'Øye', categories: 'Sykdom, Anatomi' },\n armflexing: { alternativeName: 'Viser muskler (arm)', categories: 'Livsstil, Anatomi' },\n coronavirus: { alternativeName: 'Koronavirus', categories: 'Sykdom' },\n femaledoctor: { alternativeName: 'Kvinnelig lege', categories: 'Tjeneste, Personer' },\n maledoctorandperson: { alternativeName: 'Mannlig lege og pasient', categories: 'Behandling, Personer' },\n person: { alternativeName: 'Person', categories: 'Generisk, Personer' },\n form: { alternativeName: 'Skjema', categories: 'Tjeneste, Generisk' },\n lock: { alternativeName: 'Hengelås', categories: 'Tjeneste, Generisk' },\n mobilephone: { alternativeName: 'Mobiltelefon', categories: 'Generisk' },\n worksuitcase: { alternativeName: 'Koffert', categories: 'Generisk' },\n window: { alternativeName: 'Vindu', categories: 'Generisk' },\n worddocument: { alternativeName: 'Word fil', categories: 'Filtyper' },\n videochat: { alternativeName: 'Video chat', categories: 'Tjeneste, Generisk' },\n videocamera: { alternativeName: 'Videokamera', categories: 'Generisk' },\n brokenpuzzle: { alternativeName: 'Ødelagt pusslespill', categories: 'Generisk' },\n brokenheart: { alternativeName: 'Knust hjerte', categories: 'Generisk' },\n train: { alternativeName: 'Tog', categories: 'Kjøretøy' },\n ticket: { alternativeName: 'Billett', categories: 'Generisk' },\n taxi: { alternativeName: 'Taxi', categories: 'Kjøretøy' },\n musselsandsalt: { alternativeName: 'Blåskjell og saltbøsse', categories: 'Giftinformasjonen, Livsstil' },\n alarmclock: { alternativeName: 'Vekkeklokke', categories: 'Generisk' },\n arrowleft: { alternativeName: 'Ventrepil', categories: 'System' },\n arrowright: { alternativeName: 'Høyrepil', categories: 'System' },\n calendarsave: { alternativeName: 'Lagre i kalender', categories: 'System' },\n chevrondown: { alternativeName: 'Nedover halvpil', categories: 'System' },\n chevronleft: { alternativeName: 'Venstre halvpil', categories: 'System' },\n chevronright: { alternativeName: 'Høyre halvpil', categories: 'System' },\n chevronup: { alternativeName: 'Oppover halvpil', categories: 'System' },\n cross: { alternativeName: 'Kryss', categories: 'System' },\n enterfullscreen: { alternativeName: 'Fullskjermvisning', categories: 'System' },\n eraser: { alternativeName: 'Viskelær', categories: 'System' },\n exitfullscreen: { alternativeName: 'Gå ut av fullskjermvisning', categories: 'System' },\n nofilter: { alternativeName: 'Fjern filter', categories: 'System' },\n forward: { alternativeName: 'Pil fremover', categories: 'System' },\n menu: { alternativeName: 'Meny', categories: 'System' },\n minus: { alternativeName: 'Minus', categories: 'System' },\n paperplane: { alternativeName: 'Papirfly', categories: 'Generisk' },\n pause: { alternativeName: 'Pause', categories: 'System' },\n pluslarge: { alternativeName: 'Stort pluss', categories: 'System' },\n plussmall: { alternativeName: 'Liten pluss', categories: 'System' },\n printer: { alternativeName: 'Printer', categories: 'Generisk' },\n reply: { alternativeName: 'Svar', categories: 'System' },\n search: { alternativeName: 'Søk', categories: 'Generisk' },\n share: { alternativeName: 'Dele', categories: 'Sosiale medier' },\n save: { alternativeName: 'Lagre', categories: 'System' },\n verticaldots: { alternativeName: 'Vertikale prikker', categories: 'System' },\n upload: { alternativeName: 'Last opp', categories: 'System' },\n bell: { alternativeName: 'Varsel', categories: 'Generisk' },\n check: { alternativeName: 'Avsjekket', categories: 'Generisk' },\n draft: { alternativeName: 'Kladd', categories: 'Generisk' },\n female: { alternativeName: 'Kvinne- tegn', categories: 'Generisk' },\n handwaving: { alternativeName: 'Vinke', categories: 'Generisk' },\n hormone: { alternativeName: 'Hormoner', categories: 'Sykdom, Anatomi' },\n jointpain: { alternativeName: 'Leddsmerte', categories: 'Sykdom, Anatomi' },\n location: { alternativeName: 'Lokasjon', categories: 'Generisk' },\n personinxraymachine: { alternativeName: 'Røntgen', categories: 'Behandling, Sykdom' },\n personwithbrokenarm: { alternativeName: 'Person med brukket arm', categories: 'Behandling, Personer' },\n personandpatient: { alternativeName: 'Pasient og pårørende', categories: 'Behandling, Personer' },\n personwithcrutches: { alternativeName: 'Person med krykker', categories: 'Behandling, Personer' },\n personrelaxing: { alternativeName: 'Person som slapper av', categories: 'Livsstil, Personer' },\n plane: { alternativeName: 'Fly', categories: 'Kjøretøy' },\n puzzle: { alternativeName: 'Puslespillbit', categories: 'Generisk' },\n rocket: { alternativeName: 'Romrakett', categories: 'Kjøretøy' },\n trashcan: { alternativeName: 'Søplekasse', categories: 'Generisk' },\n x: { alternativeName: 'X', categories: 'System' },\n amputation: { alternativeName: 'Amputasjon', categories: 'Behandling, Personer' },\n childplaying: { alternativeName: 'Barn leker', categories: 'Livsstil, Personer' },\n breasts: { alternativeName: 'Pupper', categories: 'Anatomi, Sykdom, Samvalg' },\n arrowupright: { alternativeName: 'Pil oppover mot høyre', categories: 'System' },\n attachment: { alternativeName: 'Vedlegg', categories: 'Generisk' },\n atv: { alternativeName: 'ATV', categories: 'Kjøretøy' },\n bike: { alternativeName: 'Sykkel', categories: 'Kjøretøy, Livsstil' },\n boat: { alternativeName: 'Båt', categories: 'Kjøretøy' },\n mentalhealthchild: { alternativeName: 'Mental helse barn', categories: 'Psykisk helse, Sykdom' },\n copy: { alternativeName: 'Kopi', categories: 'System' },\n cough: { alternativeName: 'Hoste', categories: 'Sykdom, Behandling' },\n elderlyperson: { alternativeName: 'Eldre', categories: 'Livsstil, Personer' },\n epilepsy: { alternativeName: 'Epilepsi', categories: 'Sykdom' },\n ferry: { alternativeName: 'Ferje', categories: 'Kjøretøy' },\n handwithdisease: { alternativeName: 'Hånd med utslett', categories: 'Sykdom, Anatomi' },\n errorsignfill: { alternativeName: 'Feilmelding (mørk)', categories: 'Generisk' },\n errorsignstroke: { alternativeName: 'Feilmelding (lys)', categories: 'Generisk' },\n fingerbleed: { alternativeName: 'Finger som blør', categories: 'Sykdom, Behandling' },\n history: { alternativeName: 'Historikk', categories: 'Generisk' },\n hivandaids: { alternativeName: 'HIV og Aids', categories: 'Sykdom' },\n imgfile: { alternativeName: 'Bildefil', categories: 'Filtyper' },\n inbox: { alternativeName: 'Innboks', categories: 'Generisk' },\n jpgfile: { alternativeName: 'Jpg-fil', categories: 'Filtyper' },\n mirror: { alternativeName: 'Speil', categories: 'Generisk' },\n muscleback: { alternativeName: 'Ryggmuskler', categories: 'Anatomi' },\n muscleleg: { alternativeName: 'Leggmuskler', categories: 'Anatomi' },\n notepad: { alternativeName: 'Skriveblokk', categories: 'Generisk' },\n pdffile: { alternativeName: 'PDF', categories: 'Filtyper' },\n personwithbrain: { alternativeName: 'Person med hjerne', categories: 'Anatomi, Personer' },\n personwithjaw: { alternativeName: 'Person med kjeve', categories: 'Anatomi, Personer' },\n personwithmagnifyingglass: { alternativeName: 'Person med lupe', categories: 'Behandling, Personer' },\n personwithsenses: { alternativeName: 'Person med sanser', categories: 'Psykisk helse, Personer' },\n personworking: { alternativeName: 'Person som jobber', categories: 'Generisk, Personer, Samvalg' },\n pngfile: { alternativeName: 'PNG', categories: 'Filtyper' },\n psychosis: { alternativeName: 'Psykose', categories: 'Sykdom, Psykisk helse' },\n refresh: { alternativeName: 'Oppdater', categories: 'Generisk' },\n rtffile: { alternativeName: 'RTF-fil', categories: 'Filtyper' },\n xmlfile: { alternativeName: 'XML', categories: 'Filtyper' },\n receipt: { alternativeName: 'Kvittering', categories: 'Generisk' },\n infosignfill: { alternativeName: 'Informasjon (mørk)', categories: 'Generisk' },\n chest: { alternativeName: 'Kiste', categories: 'Generisk' },\n breastreconstruction: { alternativeName: 'Brystrekonstruksjon', categories: 'Samvalg' },\n breastremoval: { alternativeName: 'Brystfjerning', categories: 'Samvalg' },\n activemonitoring: { alternativeName: 'Aktiv overvåkning', categories: 'Samvalg' },\n surgery: { alternativeName: 'Kirurgi', categories: 'Samvalg, Behandling' },\n intravenous: { alternativeName: 'Intravenøs', categories: 'Samvalg, Behandling' },\n radioiodine: { alternativeName: 'Radiojod', categories: 'Samvalg' },\n hipprosthesis: { alternativeName: 'Hofteprotese', categories: 'Samvalg' },\n shuntoperation: { alternativeName: 'Shunt-operasjon', categories: 'Samvalg' },\n timepassing: { alternativeName: 'Tiden går', categories: 'Samvalg' },\n osteotomy: { alternativeName: 'Osteotomi', categories: 'Samvalg' },\n uniprosthesis: { alternativeName: 'Uniprotese', categories: 'Samvalg' },\n fullkneeprosthesis: { alternativeName: 'Total kneprotese', categories: 'Samvalg' },\n transplantation: { alternativeName: 'Transplantasjon', categories: 'Samvalg' },\n peritonealdialysis: { alternativeName: 'Peritoneal dialyse', categories: 'Samvalg' },\n hemodialysis: { alternativeName: 'Hemodialyse', categories: 'Samvalg' },\n embolization: { alternativeName: 'Cyster', categories: 'Samvalg, Sykdom' },\n radioactivetreatment: { alternativeName: 'Radioaktiv behandling', categories: 'Samvalg' },\n radiotherapy: { alternativeName: 'Strålebehandling', categories: 'Samvalg' },\n peopletalking: { alternativeName: 'Samtale', categories: 'Samvalg, Personer' },\n music: { alternativeName: 'Musikk', categories: 'Samvalg' },\n helpinghand: { alternativeName: 'Hjelpende hånd', categories: 'Samvalg' },\n kitchenscale: { alternativeName: 'Kjøkkenvekt', categories: 'Samvalg' },\n wheelchair: { alternativeName: 'Rullestol', categories: 'Generisk, Behandling' },\n wheelchairactive: { alternativeName: 'Rullestol aktov', categories: 'Generisk, Personer' },\n healthclinic: { alternativeName: 'Helsesenter', categories: 'Generisk, Behandling' },\n teenagers: { alternativeName: 'Tenåringer', categories: 'Generisk, Personer' },\n website: { alternativeName: 'Nettside', categories: 'Generisk' },\n settings: { alternativeName: 'Innstillinger', categories: 'System' },\n undo: { alternativeName: 'Angre', categories: 'System' },\n coronacertificate: { alternativeName: 'Koronasertifikat', categories: 'Tjeneste' },\n watch: { alternativeName: 'Klokke', categories: 'Generisk' },\n totalkneeprosthesis: { alternativeName: 'Full kneprotese', categories: 'Samvalg, Behandling' },\n stopwatch: { alternativeName: 'Stoppeklokke', categories: 'Generisk' },\n podcast: { alternativeName: 'Podcast', categories: 'Generisk' },\n play: { alternativeName: 'Play', categories: 'Generisk' },\n hourglass: { alternativeName: 'Timeglass', categories: 'Generisk' },\n floppydisk: { alternativeName: 'Diskett', categories: 'Generisk' },\n download: { alternativeName: 'Last ned', categories: 'System, Generisk' },\n dataexchange: { alternativeName: 'Datautveklsling', categories: 'System, Generisk' },\n datareceived: { alternativeName: 'Data motatt', categories: 'System, Generisk' },\n datasent: { alternativeName: 'Data sendt', categories: 'System, Generisk' },\n chevronsdown: { alternativeName: 'Dobbelpil ned', categories: 'System, Generisk' },\n chevronsup: { alternativeName: 'Dobbeltpil opp', categories: 'System, Generisk' },\n change: { alternativeName: 'Endre', categories: 'System, Generisk' },\n calendarchange: { alternativeName: 'Kalender endring', categories: 'System, Generisk' },\n calendarcheck: { alternativeName: 'Kalender ok', categories: 'System, Generisk' },\n healthwarning: { alternativeName: 'Helseadvarsel', categories: 'Tjeneste' },\n zoom: { alternativeName: 'Zoom inn', categories: 'System, Generisk' },\n checkoutline: { alternativeName: 'Avhukning', categories: 'System, Generisk' },\n shield: { alternativeName: 'Skjold', categories: 'System, Generisk' },\n xoutline: { alternativeName: 'X', categories: 'System, Generisk' },\n recovery: { alternativeName: 'Gjenoppretting', categories: 'System, Generisk' },\n body: { alternativeName: 'Kropp', categories: 'Anatomi, Personer' },\n genderidentity: { alternativeName: 'Kjønnsidentitet', categories: 'Generisk, Personer' },\n home: { alternativeName: 'Hjem', categories: 'Generisk' },\n qrcode: { alternativeName: 'QR kode', categories: 'Generisk' },\n quarrel: { alternativeName: 'Krangle', categories: 'Generisk' },\n sexualorientation: { alternativeName: 'Seksuell orientering', categories: 'Generisk' },\n birthcontrol: { alternativeName: 'Prevensjon', categories: 'Generisk' },\n gallery: { alternativeName: 'Galleri', categories: 'System' },\n list: { alternativeName: 'Liste', categories: 'System' },\n stds: { alternativeName: 'Kjønnssykom', categories: 'Sykdom, Personer' },\n acupunctureback: { alternativeName: 'Akupunktur rygg', categories: 'Samvalg, Generisk' },\n noeye: { alternativeName: 'Øye m strek', categories: 'System' },\n sectionsign: { alternativeName: 'Paragraftegn', categories: 'Samvalg, Generisk' },\n speechbubble: { alternativeName: 'Snakkeboble', categories: 'Samvalg, Generisk' },\n supportingperson: { alternativeName: 'Ledsager', categories: 'Samvalg, Personer' },\n syringe: { alternativeName: 'Sprøyte', categories: 'Samvalg, Generisk' },\n car: { alternativeName: 'Bil', categories: 'Kjøretøy' },\n group: { alternativeName: 'Gruppe', categories: 'Personer' },\n checkfill: { alternativeName: 'Utfylt sjekkboks', categories: 'System' },\n personalplan: { alternativeName: 'Behandlingsplan', categories: 'Tjeneste' },\n emoticonannoyed: { alternativeName: 'Emoji Irritert', categories: 'Generisk' },\n emoticondelighted: { alternativeName: 'Emoji Lykkelig', categories: 'Generisk' },\n emoticondisappointed: { alternativeName: 'Emoji Skuffet', categories: 'Generisk' },\n emoticonhappy: { alternativeName: 'Emoji Glad', categories: 'Generisk' },\n emoticonmeh: { alternativeName: 'Emoji Nøytral', categories: 'Generisk' },\n sortdown: { alternativeName: 'Sortere ned', categories: 'System, Generisk' },\n sortup: { alternativeName: 'Sortere opp', categories: 'System, Generisk' },\n filter: { alternativeName: 'Filter', categories: 'System, Generisk' },\n personcancel: { alternativeName: 'Person Avbryt', categories: 'Generisk, Tjeneste' },\n travelroute: { alternativeName: 'Reiserute', categories: 'Generisk, Tjeneste' },\n coins: { alternativeName: 'Mynter', categories: 'Generisk, Tjeneste' },\n hearthands: { alternativeName: 'Hjertehender', categories: 'System, Generisk' },\n trianglex: { alternativeName: 'TriangelX', categories: 'System, Generisk' },\n login: { alternativeName: 'Logg inn', categories: 'System, Generisk' },\n logout: { alternativeName: 'Logg ut', categories: 'System, Generisk' },\n 'sort-a-z': { alternativeName: 'Sortere', categories: 'System, Generisk' },\n file: { alternativeName: 'Fil', categories: 'System, Generisk' },\n handsandheart: { alternativeName: 'Hender og Hjerte', categories: 'Generisk' },\n tombstone: { alternativeName: 'Gravstein', categories: 'Generisk' },\n candle: { alternativeName: 'Kubbelys', categories: 'Generisk' },\n legaldocument: { alternativeName: 'Juridisk Dokument', categories: 'Generisk' },\n fallingleaf: { alternativeName: 'Fallende Blad', categories: 'Generisk' },\n graph: { alternativeName: 'Graf', categories: 'System, Generisk' },\n healthcarepersonnel: { alternativeName: 'Helsepersonell', categories: 'Generisk, Personer' },\n healthcareperson: { alternativeName: 'Helseperson', categories: 'Generisk, Personer' },\n grouptwins: { alternativeName: 'Gruppe Tvillinger', categories: 'Generisk, Personer' },\n sun: { alternativeName: 'Sol', categories: 'Generisk' },\n ear: { alternativeName: 'Øre', categories: 'Generisk, Syn og hørsel' },\n earhearingaid: { alternativeName: 'Øre Høreapparat', categories: 'Generisk, Syn og hørsel' },\n earvolume: { alternativeName: 'Øre Volum', categories: 'Generisk, Syn og hørsel' },\n eardeaf: { alternativeName: 'Øre Døv', categories: 'Generisk, Syn og hørsel' },\n braille: { alternativeName: 'Blindeskrift', categories: 'Generisk, Syn og hørsel' },\n screenreader: { alternativeName: 'Skjermleser', categories: 'Generisk, Syn og hørsel' },\n hearingprotection: { alternativeName: 'Hørselsvern', categories: 'Generisk, Syn og hørsel' },\n htmlfile: { alternativeName: 'HTML-fil', categories: 'Filtyper' },\n emergencycall: { alternativeName: 'Nødsamtale', categories: 'Generisk' },\n glasses: { alternativeName: 'Briller', categories: 'Generisk, Syn og hørsel' },\n carton: { alternativeName: 'Kartong', categories: 'Generisk' },\n creditcard: { alternativeName: 'Kredittkort', categories: 'Generisk' },\n fish: { alternativeName: 'Fisk', categories: 'Generisk' },\n glasswater: { alternativeName: 'Vannglass', categories: 'Generisk' },\n grain: { alternativeName: 'Korn', categories: 'Generisk' },\n plateknifefork: { alternativeName: 'TallerkenKnivGaffel', categories: 'Generisk' },\n reminder: { alternativeName: 'Påminnelse', categories: 'Generisk' },\n sweets: { alternativeName: 'Søtsaker', categories: 'Generisk' },\n maledoctorcompact: { alternativeName: '', categories: 'System, Mobil' },\n maledoctorcompactfill: { alternativeName: '', categories: 'System, Mobil' },\n settingsfill: { alternativeName: '', categories: 'System, Mobil' },\n homefill: { alternativeName: '', categories: 'System, Mobil' },\n locationfill: { alternativeName: '', categories: 'System, Mobil' },\n emptybox: { alternativeName: 'TomEske', categories: 'Generisk' },\n stickynote: { alternativeName: 'Huskelapp', categories: 'Generisk' },\n stickynotes: { alternativeName: 'Huskelapper', categories: 'Generisk' },\n sharedhealthdata: { alternativeName: 'DelteHelseData', categories: 'Tjeneste, Generisk' },\n sharedhealthmeasurements: { alternativeName: 'DelteHelseMålinger', categories: 'Generisk, Tjeneste' },\n healthmeasurements: { alternativeName: 'HelseMålinger', categories: 'Generisk, Tjeneste' },\n dotalert: { alternativeName: '', categories: 'System, StatusDot' },\n dotcancelled: { alternativeName: '', categories: 'System, StatusDot' },\n dotinfo: { alternativeName: '', categories: 'System, StatusDot' },\n dotsuccess: { alternativeName: '', categories: 'System, StatusDot' },\n dottransparent: { alternativeName: '', categories: 'System, StatusDot' },\n dothalfdisc: { alternativeName: '', categories: 'System, StatusDot' },\n dotlookingglass: { alternativeName: '', categories: 'System, StatusDot' },\n dotquestionmark: { alternativeName: '', categories: 'System, StatusDot' },\n dotwarningtriangle: { alternativeName: '', categories: 'System, StatusDot' },\n '': { alternativeName: '', categories: '' },\n};\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"AdditionalIconInformation.js","sources":["../../../src/components/Icons/AdditionalIconInformation.ts"],"sourcesContent":["export default {\n bandaid: { alternativeName: 'Plaster', categories: 'Generisk, Behandling, Samvalg' },\n plant: { alternativeName: 'Plante', categories: 'Giftinformasjonen, Livsstil' },\n snake: { alternativeName: 'Slange', categories: 'Giftinformasjonen' },\n gascan: { alternativeName: 'Gassbeholder', categories: 'Giftinformasjonen' },\n medicine: { alternativeName: 'Legemidler', categories: 'Tjeneste, Behandling, Samvalg' },\n spray: { alternativeName: 'Sprayflaske', categories: 'Giftinformasjonen, Livsstil' },\n pizzaslice: { alternativeName: 'Pizza', categories: 'Giftinformasjonen, Livsstil' },\n beerandpills: { alternativeName: 'Rusmidler', categories: 'Giftinformasjonen, Livsstil' },\n dog: { alternativeName: 'Hund', categories: 'Giftinformasjonen, Dyr' },\n mushroom: { alternativeName: 'Sopp', categories: 'Giftinformasjonen, Livsstil' },\n bus: { alternativeName: 'Buss', categories: 'Tjeneste, Kjøretøy' },\n vaccine: { alternativeName: 'Vaksiner', categories: 'Tjeneste, Behandling' },\n referral: { alternativeName: 'Henvisninger', categories: 'Tjeneste' },\n envelope: { alternativeName: 'Konvolutt', categories: 'Tjeneste, Generisk' },\n calendar: { alternativeName: 'Kalender', categories: 'Tjeneste, Generisk' },\n contacts: { alternativeName: 'Helsekontakter', categories: 'Tjeneste' },\n archive: { alternativeName: 'Arkivboks', categories: 'Tjeneste' },\n donorcard: { alternativeName: 'Donorkort', categories: 'Tjeneste' },\n wallet: { alternativeName: 'Lommebok', categories: 'Tjeneste, Generisk' },\n kjernejournal: { alternativeName: 'Kjernejournal', categories: 'Tjeneste' },\n maledoctor: { alternativeName: 'Mannlig lege', categories: 'Tjeneste, Behandling' },\n laboratory: { alternativeName: 'Laboratorieprøver', categories: 'Tjeneste, Behandling' },\n toolbox: { alternativeName: 'Verktøykasse', categories: 'Tjeneste, Generisk' },\n criticalhealthinfo: { alternativeName: 'Sykdom og kritisk informasjon', categories: 'Tjeneste' },\n scale: { alternativeName: 'Vektskål', categories: 'Generisk' },\n poisoninformation: { alternativeName: 'Giftinformasjonen', categories: 'Giftinformasjonen' },\n lightbulb: { alternativeName: 'Lyspære', categories: 'Generisk' },\n europeanhealthcard: { alternativeName: 'Europeisk helsetrygdkort', categories: 'Tjeneste' },\n documents: { alternativeName: 'Dokumenter', categories: 'Tjeneste, Generisk' },\n medicinewarning: { alternativeName: 'Meld bivirkninger', categories: 'Tjeneste' },\n refund: { alternativeName: 'Refusjon', categories: 'Tjeneste' },\n lawbook: { alternativeName: 'Lovbok', categories: 'Generisk' },\n userorganization: { alternativeName: 'Pasient- og brukerorganisasjoner', categories: 'Generisk, Personer' },\n publication: { alternativeName: 'Publikasjon', categories: 'Generisk' },\n facebook: { alternativeName: 'Facebook', categories: 'Sosiale medier' },\n receptionist: { alternativeName: 'Person med headset', categories: 'Generisk, Personer' },\n infosignstroke: { alternativeName: 'Informasjon (lys)', categories: 'Generisk' },\n helpsign: { alternativeName: 'Spørsmål', categories: 'Generisk' },\n globe: { alternativeName: 'Globus', categories: 'Generisk' },\n calendarevent: { alternativeName: 'Kalenderhendelse', categories: 'Generisk' },\n laptopblog: { alternativeName: 'Laptop blogg', categories: 'Generisk, Sosiale medier' },\n snapchat: { alternativeName: 'Snapshat', categories: 'Sosiale medier, Generisk' },\n twitter: { alternativeName: 'Twitter', categories: 'Sosiale medier, Generisk' },\n youtube: { alternativeName: 'Youtube', categories: 'Sosiale medier, Generisk' },\n instagram: { alternativeName: 'Instagram', categories: 'Sosiale medier, Generisk' },\n echat: { alternativeName: 'Sosiale medier (generisk)', categories: 'Sosiale medier, Generisk' },\n journal: { alternativeName: 'Pasientjournal', categories: 'Tjeneste' },\n firstaidkit: { alternativeName: 'Førstehjelpsskrin', categories: 'Giftinformasjonen, Behandling' },\n shakinghand: { alternativeName: 'Hender som holder', categories: 'Tjeneste, Samvalg' },\n hospital: { alternativeName: 'Sykehus', categories: 'Tjeneste, Behandling' },\n microscope: { alternativeName: 'Mikroskop', categories: 'Tjeneste, Behandling' },\n apple: { alternativeName: 'Eple', categories: 'Livsstil' },\n makeup: { alternativeName: 'Sminke', categories: 'Giftinformasjonen' },\n garden: { alternativeName: 'Hage', categories: 'Giftinformasjonen' },\n paintroller: { alternativeName: 'Malingsrull', categories: 'Giftinformasjonen' },\n football: { alternativeName: 'Fotball', categories: 'Giftinformasjonen, Livsstil' },\n pencil: { alternativeName: 'Blyant', categories: 'Giftinformasjonen' },\n hiker: { alternativeName: 'Turgåer', categories: 'Livsstil, Samvalg' },\n personoverweight: { alternativeName: 'Overvektig person', categories: 'Livsstil, Personer' },\n mentalhealthadult: { alternativeName: 'Psykisk helse voksne', categories: 'Psykisk helse' },\n pregnant: { alternativeName: 'Gravid', categories: 'Gravid og fødsel' },\n birthdaycake: { alternativeName: 'Bursdagskake', categories: 'Gravid og fødsel, Generisk' },\n baby: { alternativeName: 'Baby', categories: 'Gravid og fødsel' },\n motherholdingbaby: { alternativeName: 'Kvinne holder baby', categories: 'Gravid og fødsel' },\n cigarette: { alternativeName: 'Sigarett', categories: 'Livsstil' },\n anxiety: { alternativeName: 'Angst', categories: 'Psykisk helse, Sykdom' },\n depression: { alternativeName: 'Depresjon', categories: 'Psykisk helse, Sykdom' },\n teddybear: { alternativeName: 'Teddybjørn', categories: 'Generisk, Sykdom' },\n brain: { alternativeName: 'Hjerne', categories: 'Sykdom, Anatomi' },\n heart: { alternativeName: 'Hjerte', categories: 'Sykdom, Anatomi' },\n skin: { alternativeName: 'Hud og hår', categories: 'Sykdom, Anatomi' },\n cancer: { alternativeName: 'Kreft', categories: 'Sykdom' },\n lungs: { alternativeName: 'Lunger', categories: 'Sykdom, Anatomi' },\n digestivesystem: { alternativeName: 'Fordøyelsessystem', categories: 'Sykdom, Anatomi' },\n skeleton: { alternativeName: 'Skjelett', categories: 'Sykdom, Anatomi' },\n kidney: { alternativeName: 'Nyre', categories: 'Sykdom, Anatomi' },\n dizzy: { alternativeName: 'Svimmel', categories: 'Sykdom' },\n awakepersononpillow: { alternativeName: 'Person som ikke får sove', categories: 'Generisk, Sykdom' },\n tooth: { alternativeName: 'Tann', categories: 'Anatomi' },\n thinkingaboutbaby: { alternativeName: 'Ufrivillig barnløshet', categories: 'Behandling, Sykdom' },\n malegenitalia: { alternativeName: 'Mannlig kjønnsorgan', categories: 'Sykdom, Anatomi' },\n earnosethroat: { alternativeName: 'Øre - nese - hals', categories: 'Sykdom, Anatomi' },\n eye: { alternativeName: 'Øye', categories: 'Sykdom, Anatomi' },\n armflexing: { alternativeName: 'Viser muskler (arm)', categories: 'Livsstil, Anatomi' },\n coronavirus: { alternativeName: 'Koronavirus', categories: 'Sykdom' },\n femaledoctor: { alternativeName: 'Kvinnelig lege', categories: 'Tjeneste, Personer' },\n maledoctorandperson: { alternativeName: 'Mannlig lege og pasient', categories: 'Behandling, Personer' },\n person: { alternativeName: 'Person', categories: 'Generisk, Personer' },\n form: { alternativeName: 'Skjema', categories: 'Tjeneste, Generisk' },\n lock: { alternativeName: 'Hengelås', categories: 'Tjeneste, Generisk' },\n mobilephone: { alternativeName: 'Mobiltelefon', categories: 'Generisk' },\n worksuitcase: { alternativeName: 'Koffert', categories: 'Generisk' },\n window: { alternativeName: 'Vindu', categories: 'Generisk' },\n worddocument: { alternativeName: 'Word fil', categories: 'Filtyper' },\n videochat: { alternativeName: 'Video chat', categories: 'Tjeneste, Generisk' },\n videocamera: { alternativeName: 'Videokamera', categories: 'Generisk' },\n brokenpuzzle: { alternativeName: 'Ødelagt pusslespill', categories: 'Generisk' },\n brokenheart: { alternativeName: 'Knust hjerte', categories: 'Generisk' },\n train: { alternativeName: 'Tog', categories: 'Kjøretøy' },\n ticket: { alternativeName: 'Billett', categories: 'Generisk' },\n taxi: { alternativeName: 'Taxi', categories: 'Kjøretøy' },\n musselsandsalt: { alternativeName: 'Blåskjell og saltbøsse', categories: 'Giftinformasjonen, Livsstil' },\n alarmclock: { alternativeName: 'Vekkeklokke', categories: 'Generisk' },\n arrowleft: { alternativeName: 'Ventrepil', categories: 'System' },\n arrowright: { alternativeName: 'Høyrepil', categories: 'System' },\n calendarsave: { alternativeName: 'Lagre i kalender', categories: 'System' },\n chevrondown: { alternativeName: 'Nedover halvpil', categories: 'System' },\n chevronleft: { alternativeName: 'Venstre halvpil', categories: 'System' },\n chevronright: { alternativeName: 'Høyre halvpil', categories: 'System' },\n chevronup: { alternativeName: 'Oppover halvpil', categories: 'System' },\n cross: { alternativeName: 'Kryss', categories: 'System' },\n enterfullscreen: { alternativeName: 'Fullskjermvisning', categories: 'System' },\n eraser: { alternativeName: 'Viskelær', categories: 'System' },\n exitfullscreen: { alternativeName: 'Gå ut av fullskjermvisning', categories: 'System' },\n nofilter: { alternativeName: 'Fjern filter', categories: 'System' },\n forward: { alternativeName: 'Pil fremover', categories: 'System' },\n menu: { alternativeName: 'Meny', categories: 'System' },\n minus: { alternativeName: 'Minus', categories: 'System' },\n paperplane: { alternativeName: 'Papirfly', categories: 'Generisk' },\n pause: { alternativeName: 'Pause', categories: 'System' },\n pluslarge: { alternativeName: 'Stort pluss', categories: 'System' },\n plussmall: { alternativeName: 'Liten pluss', categories: 'System' },\n printer: { alternativeName: 'Printer', categories: 'Generisk' },\n reply: { alternativeName: 'Svar', categories: 'System' },\n search: { alternativeName: 'Søk', categories: 'Generisk' },\n share: { alternativeName: 'Dele', categories: 'Sosiale medier' },\n save: { alternativeName: 'Lagre', categories: 'System' },\n verticaldots: { alternativeName: 'Vertikale prikker', categories: 'System' },\n upload: { alternativeName: 'Last opp', categories: 'System' },\n bell: { alternativeName: 'Varsel', categories: 'Generisk' },\n check: { alternativeName: 'Avsjekket', categories: 'Generisk' },\n draft: { alternativeName: 'Kladd', categories: 'Generisk' },\n female: { alternativeName: 'Kvinne- tegn', categories: 'Generisk' },\n handwaving: { alternativeName: 'Vinke', categories: 'Generisk' },\n hormone: { alternativeName: 'Hormoner', categories: 'Sykdom, Anatomi' },\n jointpain: { alternativeName: 'Leddsmerte', categories: 'Sykdom, Anatomi' },\n location: { alternativeName: 'Lokasjon', categories: 'Generisk' },\n personinxraymachine: { alternativeName: 'Røntgen', categories: 'Behandling, Sykdom' },\n personwithbrokenarm: { alternativeName: 'Person med brukket arm', categories: 'Behandling, Personer' },\n personandpatient: { alternativeName: 'Pasient og pårørende', categories: 'Behandling, Personer' },\n personwithcrutches: { alternativeName: 'Person med krykker', categories: 'Behandling, Personer' },\n personrelaxing: { alternativeName: 'Person som slapper av', categories: 'Livsstil, Personer' },\n plane: { alternativeName: 'Fly', categories: 'Kjøretøy' },\n puzzle: { alternativeName: 'Puslespillbit', categories: 'Generisk' },\n rocket: { alternativeName: 'Romrakett', categories: 'Kjøretøy' },\n trashcan: { alternativeName: 'Søplekasse', categories: 'Generisk' },\n x: { alternativeName: 'X', categories: 'System' },\n amputation: { alternativeName: 'Amputasjon', categories: 'Behandling, Personer' },\n childplaying: { alternativeName: 'Barn leker', categories: 'Livsstil, Personer' },\n breasts: { alternativeName: 'Pupper', categories: 'Anatomi, Sykdom, Samvalg' },\n arrowupright: { alternativeName: 'Pil oppover mot høyre', categories: 'System' },\n attachment: { alternativeName: 'Vedlegg', categories: 'Generisk' },\n atv: { alternativeName: 'ATV', categories: 'Kjøretøy' },\n bike: { alternativeName: 'Sykkel', categories: 'Kjøretøy, Livsstil' },\n boat: { alternativeName: 'Båt', categories: 'Kjøretøy' },\n mentalhealthchild: { alternativeName: 'Mental helse barn', categories: 'Psykisk helse, Sykdom' },\n copy: { alternativeName: 'Kopi', categories: 'System' },\n cough: { alternativeName: 'Hoste', categories: 'Sykdom, Behandling' },\n elderlyperson: { alternativeName: 'Eldre', categories: 'Livsstil, Personer' },\n epilepsy: { alternativeName: 'Epilepsi', categories: 'Sykdom' },\n ferry: { alternativeName: 'Ferje', categories: 'Kjøretøy' },\n handwithdisease: { alternativeName: 'Hånd med utslett', categories: 'Sykdom, Anatomi' },\n errorsignfill: { alternativeName: 'Feilmelding (mørk)', categories: 'Generisk' },\n errorsignstroke: { alternativeName: 'Feilmelding (lys)', categories: 'Generisk' },\n fingerbleed: { alternativeName: 'Finger som blør', categories: 'Sykdom, Behandling' },\n history: { alternativeName: 'Historikk', categories: 'Generisk' },\n hivandaids: { alternativeName: 'HIV og Aids', categories: 'Sykdom' },\n imgfile: { alternativeName: 'Bildefil', categories: 'Filtyper' },\n inbox: { alternativeName: 'Innboks', categories: 'Generisk' },\n jpgfile: { alternativeName: 'Jpg-fil', categories: 'Filtyper' },\n mirror: { alternativeName: 'Speil', categories: 'Generisk' },\n muscleback: { alternativeName: 'Ryggmuskler', categories: 'Anatomi' },\n muscleleg: { alternativeName: 'Leggmuskler', categories: 'Anatomi' },\n notepad: { alternativeName: 'Skriveblokk', categories: 'Generisk' },\n pdffile: { alternativeName: 'PDF', categories: 'Filtyper' },\n personwithbrain: { alternativeName: 'Person med hjerne', categories: 'Anatomi, Personer' },\n personwithjaw: { alternativeName: 'Person med kjeve', categories: 'Anatomi, Personer' },\n personwithmagnifyingglass: { alternativeName: 'Person med lupe', categories: 'Behandling, Personer' },\n personwithsenses: { alternativeName: 'Person med sanser', categories: 'Psykisk helse, Personer' },\n personworking: { alternativeName: 'Person som jobber', categories: 'Generisk, Personer, Samvalg' },\n pngfile: { alternativeName: 'PNG', categories: 'Filtyper' },\n psychosis: { alternativeName: 'Psykose', categories: 'Sykdom, Psykisk helse' },\n refresh: { alternativeName: 'Oppdater', categories: 'Generisk' },\n rtffile: { alternativeName: 'RTF-fil', categories: 'Filtyper' },\n xmlfile: { alternativeName: 'XML', categories: 'Filtyper' },\n receipt: { alternativeName: 'Kvittering', categories: 'Generisk' },\n infosignfill: { alternativeName: 'Informasjon (mørk)', categories: 'Generisk' },\n chest: { alternativeName: 'Kiste', categories: 'Generisk' },\n breastreconstruction: { alternativeName: 'Brystrekonstruksjon', categories: 'Samvalg' },\n breastremoval: { alternativeName: 'Brystfjerning', categories: 'Samvalg' },\n activemonitoring: { alternativeName: 'Aktiv overvåkning', categories: 'Samvalg' },\n surgery: { alternativeName: 'Kirurgi', categories: 'Samvalg, Behandling' },\n intravenous: { alternativeName: 'Intravenøs', categories: 'Samvalg, Behandling' },\n radioiodine: { alternativeName: 'Radiojod', categories: 'Samvalg' },\n hipprosthesis: { alternativeName: 'Hofteprotese', categories: 'Samvalg' },\n shuntoperation: { alternativeName: 'Shunt-operasjon', categories: 'Samvalg' },\n timepassing: { alternativeName: 'Tiden går', categories: 'Samvalg' },\n osteotomy: { alternativeName: 'Osteotomi', categories: 'Samvalg' },\n uniprosthesis: { alternativeName: 'Uniprotese', categories: 'Samvalg' },\n fullkneeprosthesis: { alternativeName: 'Total kneprotese', categories: 'Samvalg' },\n transplantation: { alternativeName: 'Transplantasjon', categories: 'Samvalg' },\n peritonealdialysis: { alternativeName: 'Peritoneal dialyse', categories: 'Samvalg' },\n hemodialysis: { alternativeName: 'Hemodialyse', categories: 'Samvalg' },\n embolization: { alternativeName: 'Cyster', categories: 'Samvalg, Sykdom' },\n radioactivetreatment: { alternativeName: 'Radioaktiv behandling', categories: 'Samvalg' },\n radiotherapy: { alternativeName: 'Strålebehandling', categories: 'Samvalg' },\n peopletalking: { alternativeName: 'Samtale', categories: 'Samvalg, Personer' },\n music: { alternativeName: 'Musikk', categories: 'Samvalg' },\n helpinghand: { alternativeName: 'Hjelpende hånd', categories: 'Samvalg' },\n kitchenscale: { alternativeName: 'Kjøkkenvekt', categories: 'Samvalg' },\n wheelchair: { alternativeName: 'Rullestol', categories: 'Generisk, Behandling' },\n wheelchairactive: { alternativeName: 'Rullestol aktov', categories: 'Generisk, Personer' },\n healthclinic: { alternativeName: 'Helsesenter', categories: 'Generisk, Behandling' },\n teenagers: { alternativeName: 'Tenåringer', categories: 'Generisk, Personer' },\n website: { alternativeName: 'Nettside', categories: 'Generisk' },\n settings: { alternativeName: 'Innstillinger', categories: 'System' },\n undo: { alternativeName: 'Angre', categories: 'System' },\n coronacertificate: { alternativeName: 'Koronasertifikat', categories: 'Tjeneste' },\n watch: { alternativeName: 'Klokke', categories: 'Generisk' },\n totalkneeprosthesis: { alternativeName: 'Full kneprotese', categories: 'Samvalg, Behandling' },\n stopwatch: { alternativeName: 'Stoppeklokke', categories: 'Generisk' },\n podcast: { alternativeName: 'Podcast', categories: 'Generisk' },\n play: { alternativeName: 'Play', categories: 'Generisk' },\n hourglass: { alternativeName: 'Timeglass', categories: 'Generisk' },\n floppydisk: { alternativeName: 'Diskett', categories: 'Generisk' },\n download: { alternativeName: 'Last ned', categories: 'System, Generisk' },\n dataexchange: { alternativeName: 'Datautveklsling', categories: 'System, Generisk' },\n datareceived: { alternativeName: 'Data motatt', categories: 'System, Generisk' },\n datasent: { alternativeName: 'Data sendt', categories: 'System, Generisk' },\n chevronsdown: { alternativeName: 'Dobbelpil ned', categories: 'System, Generisk' },\n chevronsup: { alternativeName: 'Dobbeltpil opp', categories: 'System, Generisk' },\n change: { alternativeName: 'Endre', categories: 'System, Generisk' },\n calendarchange: { alternativeName: 'Kalender endring', categories: 'System, Generisk' },\n calendarcheck: { alternativeName: 'Kalender ok', categories: 'System, Generisk' },\n healthwarning: { alternativeName: 'Helseadvarsel', categories: 'Tjeneste' },\n zoom: { alternativeName: 'Zoom inn', categories: 'System, Generisk' },\n checkoutline: { alternativeName: 'Avhukning', categories: 'System, Generisk' },\n shield: { alternativeName: 'Skjold', categories: 'System, Generisk' },\n xoutline: { alternativeName: 'X', categories: 'System, Generisk' },\n recovery: { alternativeName: 'Gjenoppretting', categories: 'System, Generisk' },\n body: { alternativeName: 'Kropp', categories: 'Anatomi, Personer' },\n genderidentity: { alternativeName: 'Kjønnsidentitet', categories: 'Generisk, Personer' },\n home: { alternativeName: 'Hjem', categories: 'Generisk' },\n qrcode: { alternativeName: 'QR kode', categories: 'Generisk' },\n quarrel: { alternativeName: 'Krangle', categories: 'Generisk' },\n sexualorientation: { alternativeName: 'Seksuell orientering', categories: 'Generisk' },\n birthcontrol: { alternativeName: 'Prevensjon', categories: 'Generisk' },\n gallery: { alternativeName: 'Galleri', categories: 'System' },\n list: { alternativeName: 'Liste', categories: 'System' },\n stds: { alternativeName: 'Kjønnssykom', categories: 'Sykdom, Personer' },\n acupunctureback: { alternativeName: 'Akupunktur rygg', categories: 'Samvalg, Generisk' },\n noeye: { alternativeName: 'Øye m strek', categories: 'System' },\n sectionsign: { alternativeName: 'Paragraftegn', categories: 'Samvalg, Generisk' },\n speechbubble: { alternativeName: 'Snakkeboble', categories: 'Samvalg, Generisk' },\n supportingperson: { alternativeName: 'Ledsager', categories: 'Samvalg, Personer' },\n syringe: { alternativeName: 'Sprøyte', categories: 'Samvalg, Generisk' },\n car: { alternativeName: 'Bil', categories: 'Kjøretøy' },\n group: { alternativeName: 'Gruppe', categories: 'Personer' },\n checkfill: { alternativeName: 'Utfylt sjekkboks', categories: 'System' },\n personalplan: { alternativeName: 'Behandlingsplan', categories: 'Tjeneste' },\n emoticonannoyed: { alternativeName: 'Emoji Irritert', categories: 'Generisk' },\n emoticondelighted: { alternativeName: 'Emoji Lykkelig', categories: 'Generisk' },\n emoticondisappointed: { alternativeName: 'Emoji Skuffet', categories: 'Generisk' },\n emoticonhappy: { alternativeName: 'Emoji Glad', categories: 'Generisk' },\n emoticonmeh: { alternativeName: 'Emoji Nøytral', categories: 'Generisk' },\n sortdown: { alternativeName: 'Sortere ned', categories: 'System, Generisk' },\n sortup: { alternativeName: 'Sortere opp', categories: 'System, Generisk' },\n filter: { alternativeName: 'Filter', categories: 'System, Generisk' },\n personcancel: { alternativeName: 'Person Avbryt', categories: 'Generisk, Tjeneste' },\n travelroute: { alternativeName: 'Reiserute', categories: 'Generisk, Tjeneste' },\n coins: { alternativeName: 'Mynter', categories: 'Generisk, Tjeneste' },\n hearthands: { alternativeName: 'Hjertehender', categories: 'System, Generisk' },\n trianglex: { alternativeName: 'TriangelX', categories: 'System, Generisk' },\n login: { alternativeName: 'Logg inn', categories: 'System, Generisk' },\n logout: { alternativeName: 'Logg ut', categories: 'System, Generisk' },\n 'sort-a-z': { alternativeName: 'Sortere', categories: 'System, Generisk' },\n file: { alternativeName: 'Fil', categories: 'System, Generisk' },\n handsandheart: { alternativeName: 'Hender og Hjerte', categories: 'Generisk' },\n tombstone: { alternativeName: 'Gravstein', categories: 'Generisk' },\n candle: { alternativeName: 'Kubbelys', categories: 'Generisk' },\n legaldocument: { alternativeName: 'Juridisk Dokument', categories: 'Generisk' },\n fallingleaf: { alternativeName: 'Fallende Blad', categories: 'Generisk' },\n graph: { alternativeName: 'Graf', categories: 'System, Generisk' },\n healthcarepersonnel: { alternativeName: 'Helsepersonell', categories: 'Generisk, Personer' },\n healthcareperson: { alternativeName: 'Helseperson', categories: 'Generisk, Personer' },\n grouptwins: { alternativeName: 'Gruppe Tvillinger', categories: 'Generisk, Personer' },\n sun: { alternativeName: 'Sol', categories: 'Generisk' },\n ear: { alternativeName: 'Øre', categories: 'Generisk, Syn og hørsel' },\n earhearingaid: { alternativeName: 'Øre Høreapparat', categories: 'Generisk, Syn og hørsel' },\n earvolume: { alternativeName: 'Øre Volum', categories: 'Generisk, Syn og hørsel' },\n eardeaf: { alternativeName: 'Øre Døv', categories: 'Generisk, Syn og hørsel' },\n braille: { alternativeName: 'Blindeskrift', categories: 'Generisk, Syn og hørsel' },\n screenreader: { alternativeName: 'Skjermleser', categories: 'Generisk, Syn og hørsel' },\n hearingprotection: { alternativeName: 'Hørselsvern', categories: 'Generisk, Syn og hørsel' },\n htmlfile: { alternativeName: 'HTML-fil', categories: 'Filtyper' },\n emergencycall: { alternativeName: 'Nødsamtale', categories: 'Generisk' },\n glasses: { alternativeName: 'Briller', categories: 'Generisk, Syn og hørsel' },\n carton: { alternativeName: 'Kartong', categories: 'Generisk' },\n creditcard: { alternativeName: 'Kredittkort', categories: 'Generisk' },\n fish: { alternativeName: 'Fisk', categories: 'Generisk' },\n glasswater: { alternativeName: 'Vannglass', categories: 'Generisk' },\n grain: { alternativeName: 'Korn', categories: 'Generisk' },\n plateknifefork: { alternativeName: 'TallerkenKnivGaffel', categories: 'Generisk' },\n reminder: { alternativeName: 'Påminnelse', categories: 'Generisk' },\n sweets: { alternativeName: 'Søtsaker', categories: 'Generisk' },\n maledoctorcompact: { alternativeName: '', categories: 'System, Mobil' },\n maledoctorcompactfill: { alternativeName: '', categories: 'System, Mobil' },\n settingsfill: { alternativeName: '', categories: 'System, Mobil' },\n homefill: { alternativeName: '', categories: 'System, Mobil' },\n locationfill: { alternativeName: '', categories: 'System, Mobil' },\n emptybox: { alternativeName: 'TomEske', categories: 'Generisk' },\n stickynote: { alternativeName: 'Huskelapp', categories: 'Generisk' },\n stickynotes: { alternativeName: 'Huskelapper', categories: 'Generisk' },\n sharedhealthdata: { alternativeName: 'DelteHelseData', categories: 'Tjeneste, Generisk' },\n sharedhealthmeasurements: { alternativeName: 'DelteHelseMålinger', categories: 'Generisk, Tjeneste' },\n healthmeasurements: { alternativeName: 'HelseMålinger', categories: 'Generisk, Tjeneste' },\n dotalert: { alternativeName: '', categories: 'System, StatusDot' },\n dotcancelled: { alternativeName: '', categories: 'System, StatusDot' },\n dotinfo: { alternativeName: '', categories: 'System, StatusDot' },\n dotsuccess: { alternativeName: '', categories: 'System, StatusDot' },\n dottransparent: { alternativeName: '', categories: 'System, StatusDot' },\n dothalfdisc: { alternativeName: '', categories: 'System, StatusDot' },\n dotlookingglass: { alternativeName: '', categories: 'System, StatusDot' },\n dotquestionmark: { alternativeName: '', categories: 'System, StatusDot' },\n dotwarningtriangle: { alternativeName: '', categories: 'System, StatusDot' },\n alertsignfill: { alternativeName: 'Advarselskilt (mørk)', categories: 'System' },\n alertsignstroke: { alternativeName: 'Advarselskilt', categories: 'System' },\n avatar: { alternativeName: 'Avatar', categories: 'Generisk, Personer' },\n noaccess: { alternativeName: 'IngenTilgang (mørk)', categories: 'System' },\n patientandperson: { alternativeName: 'PårørendeOgPasient', categories: 'Behandling, Personer' },\n '': { alternativeName: '', categories: '' },\n};\n"],"names":[],"mappings":"AAAA,MAAe,4BAAA;AAAA,EACb,SAAS,EAAE,iBAAiB,WAAW,YAAY,gCAAgC;AAAA,EACnF,OAAO,EAAE,iBAAiB,UAAU,YAAY,8BAA8B;AAAA,EAC9E,OAAO,EAAE,iBAAiB,UAAU,YAAY,oBAAoB;AAAA,EACpE,QAAQ,EAAE,iBAAiB,gBAAgB,YAAY,oBAAoB;AAAA,EAC3E,UAAU,EAAE,iBAAiB,cAAc,YAAY,gCAAgC;AAAA,EACvF,OAAO,EAAE,iBAAiB,eAAe,YAAY,8BAA8B;AAAA,EACnF,YAAY,EAAE,iBAAiB,SAAS,YAAY,8BAA8B;AAAA,EAClF,cAAc,EAAE,iBAAiB,aAAa,YAAY,8BAA8B;AAAA,EACxF,KAAK,EAAE,iBAAiB,QAAQ,YAAY,yBAAyB;AAAA,EACrE,UAAU,EAAE,iBAAiB,QAAQ,YAAY,8BAA8B;AAAA,EAC/E,KAAK,EAAE,iBAAiB,QAAQ,YAAY,qBAAqB;AAAA,EACjE,SAAS,EAAE,iBAAiB,YAAY,YAAY,uBAAuB;AAAA,EAC3E,UAAU,EAAE,iBAAiB,gBAAgB,YAAY,WAAW;AAAA,EACpE,UAAU,EAAE,iBAAiB,aAAa,YAAY,qBAAqB;AAAA,EAC3E,UAAU,EAAE,iBAAiB,YAAY,YAAY,qBAAqB;AAAA,EAC1E,UAAU,EAAE,iBAAiB,kBAAkB,YAAY,WAAW;AAAA,EACtE,SAAS,EAAE,iBAAiB,aAAa,YAAY,WAAW;AAAA,EAChE,WAAW,EAAE,iBAAiB,aAAa,YAAY,WAAW;AAAA,EAClE,QAAQ,EAAE,iBAAiB,YAAY,YAAY,qBAAqB;AAAA,EACxE,eAAe,EAAE,iBAAiB,iBAAiB,YAAY,WAAW;AAAA,EAC1E,YAAY,EAAE,iBAAiB,gBAAgB,YAAY,uBAAuB;AAAA,EAClF,YAAY,EAAE,iBAAiB,qBAAqB,YAAY,uBAAuB;AAAA,EACvF,SAAS,EAAE,iBAAiB,gBAAgB,YAAY,qBAAqB;AAAA,EAC7E,oBAAoB,EAAE,iBAAiB,iCAAiC,YAAY,WAAW;AAAA,EAC/F,OAAO,EAAE,iBAAiB,YAAY,YAAY,WAAW;AAAA,EAC7D,mBAAmB,EAAE,iBAAiB,qBAAqB,YAAY,oBAAoB;AAAA,EAC3F,WAAW,EAAE,iBAAiB,WAAW,YAAY,WAAW;AAAA,EAChE,oBAAoB,EAAE,iBAAiB,4BAA4B,YAAY,WAAW;AAAA,EAC1F,WAAW,EAAE,iBAAiB,cAAc,YAAY,qBAAqB;AAAA,EAC7E,iBAAiB,EAAE,iBAAiB,qBAAqB,YAAY,WAAW;AAAA,EAChF,QAAQ,EAAE,iBAAiB,YAAY,YAAY,WAAW;AAAA,EAC9D,SAAS,EAAE,iBAAiB,UAAU,YAAY,WAAW;AAAA,EAC7D,kBAAkB,EAAE,iBAAiB,oCAAoC,YAAY,qBAAqB;AAAA,EAC1G,aAAa,EAAE,iBAAiB,eAAe,YAAY,WAAW;AAAA,EACtE,UAAU,EAAE,iBAAiB,YAAY,YAAY,iBAAiB;AAAA,EACtE,cAAc,EAAE,iBAAiB,sBAAsB,YAAY,qBAAqB;AAAA,EACxF,gBAAgB,EAAE,iBAAiB,qBAAqB,YAAY,WAAW;AAAA,EAC/E,UAAU,EAAE,iBAAiB,YAAY,YAAY,WAAW;AAAA,EAChE,OAAO,EAAE,iBAAiB,UAAU,YAAY,WAAW;AAAA,EAC3D,eAAe,EAAE,iBAAiB,oBAAoB,YAAY,WAAW;AAAA,EAC7E,YAAY,EAAE,iBAAiB,gBAAgB,YAAY,2BAA2B;AAAA,EACtF,UAAU,EAAE,iBAAiB,YAAY,YAAY,2BAA2B;AAAA,EAChF,SAAS,EAAE,iBAAiB,WAAW,YAAY,2BAA2B;AAAA,EAC9E,SAAS,EAAE,iBAAiB,WAAW,YAAY,2BAA2B;AAAA,EAC9E,WAAW,EAAE,iBAAiB,aAAa,YAAY,2BAA2B;AAAA,EAClF,OAAO,EAAE,iBAAiB,6BAA6B,YAAY,2BAA2B;AAAA,EAC9F,SAAS,EAAE,iBAAiB,kBAAkB,YAAY,WAAW;AAAA,EACrE,aAAa,EAAE,iBAAiB,qBAAqB,YAAY,gCAAgC;AAAA,EACjG,aAAa,EAAE,iBAAiB,qBAAqB,YAAY,oBAAoB;AAAA,EACrF,UAAU,EAAE,iBAAiB,WAAW,YAAY,uBAAuB;AAAA,EAC3E,YAAY,EAAE,iBAAiB,aAAa,YAAY,uBAAuB;AAAA,EAC/E,OAAO,EAAE,iBAAiB,QAAQ,YAAY,WAAW;AAAA,EACzD,QAAQ,EAAE,iBAAiB,UAAU,YAAY,oBAAoB;AAAA,EACrE,QAAQ,EAAE,iBAAiB,QAAQ,YAAY,oBAAoB;AAAA,EACnE,aAAa,EAAE,iBAAiB,eAAe,YAAY,oBAAoB;AAAA,EAC/E,UAAU,EAAE,iBAAiB,WAAW,YAAY,8BAA8B;AAAA,EAClF,QAAQ,EAAE,iBAAiB,UAAU,YAAY,oBAAoB;AAAA,EACrE,OAAO,EAAE,iBAAiB,WAAW,YAAY,oBAAoB;AAAA,EACrE,kBAAkB,EAAE,iBAAiB,qBAAqB,YAAY,qBAAqB;AAAA,EAC3F,mBAAmB,EAAE,iBAAiB,wBAAwB,YAAY,gBAAgB;AAAA,EAC1F,UAAU,EAAE,iBAAiB,UAAU,YAAY,mBAAmB;AAAA,EACtE,cAAc,EAAE,iBAAiB,gBAAgB,YAAY,6BAA6B;AAAA,EAC1F,MAAM,EAAE,iBAAiB,QAAQ,YAAY,mBAAmB;AAAA,EAChE,mBAAmB,EAAE,iBAAiB,sBAAsB,YAAY,mBAAmB;AAAA,EAC3F,WAAW,EAAE,iBAAiB,YAAY,YAAY,WAAW;AAAA,EACjE,SAAS,EAAE,iBAAiB,SAAS,YAAY,wBAAwB;AAAA,EACzE,YAAY,EAAE,iBAAiB,aAAa,YAAY,wBAAwB;AAAA,EAChF,WAAW,EAAE,iBAAiB,cAAc,YAAY,mBAAmB;AAAA,EAC3E,OAAO,EAAE,iBAAiB,UAAU,YAAY,kBAAkB;AAAA,EAClE,OAAO,EAAE,iBAAiB,UAAU,YAAY,kBAAkB;AAAA,EAClE,MAAM,EAAE,iBAAiB,cAAc,YAAY,kBAAkB;AAAA,EACrE,QAAQ,EAAE,iBAAiB,SAAS,YAAY,SAAS;AAAA,EACzD,OAAO,EAAE,iBAAiB,UAAU,YAAY,kBAAkB;AAAA,EAClE,iBAAiB,EAAE,iBAAiB,qBAAqB,YAAY,kBAAkB;AAAA,EACvF,UAAU,EAAE,iBAAiB,YAAY,YAAY,kBAAkB;AAAA,EACvE,QAAQ,EAAE,iBAAiB,QAAQ,YAAY,kBAAkB;AAAA,EACjE,OAAO,EAAE,iBAAiB,WAAW,YAAY,SAAS;AAAA,EAC1D,qBAAqB,EAAE,iBAAiB,4BAA4B,YAAY,mBAAmB;AAAA,EACnG,OAAO,EAAE,iBAAiB,QAAQ,YAAY,UAAU;AAAA,EACxD,mBAAmB,EAAE,iBAAiB,yBAAyB,YAAY,qBAAqB;AAAA,EAChG,eAAe,EAAE,iBAAiB,uBAAuB,YAAY,kBAAkB;AAAA,EACvF,eAAe,EAAE,iBAAiB,qBAAqB,YAAY,kBAAkB;AAAA,EACrF,KAAK,EAAE,iBAAiB,OAAO,YAAY,kBAAkB;AAAA,EAC7D,YAAY,EAAE,iBAAiB,uBAAuB,YAAY,oBAAoB;AAAA,EACtF,aAAa,EAAE,iBAAiB,eAAe,YAAY,SAAS;AAAA,EACpE,cAAc,EAAE,iBAAiB,kBAAkB,YAAY,qBAAqB;AAAA,EACpF,qBAAqB,EAAE,iBAAiB,2BAA2B,YAAY,uBAAuB;AAAA,EACtG,QAAQ,EAAE,iBAAiB,UAAU,YAAY,qBAAqB;AAAA,EACtE,MAAM,EAAE,iBAAiB,UAAU,YAAY,qBAAqB;AAAA,EACpE,MAAM,EAAE,iBAAiB,YAAY,YAAY,qBAAqB;AAAA,EACtE,aAAa,EAAE,iBAAiB,gBAAgB,YAAY,WAAW;AAAA,EACvE,cAAc,EAAE,iBAAiB,WAAW,YAAY,WAAW;AAAA,EACnE,QAAQ,EAAE,iBAAiB,SAAS,YAAY,WAAW;AAAA,EAC3D,cAAc,EAAE,iBAAiB,YAAY,YAAY,WAAW;AAAA,EACpE,WAAW,EAAE,iBAAiB,cAAc,YAAY,qBAAqB;AAAA,EAC7E,aAAa,EAAE,iBAAiB,eAAe,YAAY,WAAW;AAAA,EACtE,cAAc,EAAE,iBAAiB,uBAAuB,YAAY,WAAW;AAAA,EAC/E,aAAa,EAAE,iBAAiB,gBAAgB,YAAY,WAAW;AAAA,EACvE,OAAO,EAAE,iBAAiB,OAAO,YAAY,WAAW;AAAA,EACxD,QAAQ,EAAE,iBAAiB,WAAW,YAAY,WAAW;AAAA,EAC7D,MAAM,EAAE,iBAAiB,QAAQ,YAAY,WAAW;AAAA,EACxD,gBAAgB,EAAE,iBAAiB,0BAA0B,YAAY,8BAA8B;AAAA,EACvG,YAAY,EAAE,iBAAiB,eAAe,YAAY,WAAW;AAAA,EACrE,WAAW,EAAE,iBAAiB,aAAa,YAAY,SAAS;AAAA,EAChE,YAAY,EAAE,iBAAiB,YAAY,YAAY,SAAS;AAAA,EAChE,cAAc,EAAE,iBAAiB,oBAAoB,YAAY,SAAS;AAAA,EAC1E,aAAa,EAAE,iBAAiB,mBAAmB,YAAY,SAAS;AAAA,EACxE,aAAa,EAAE,iBAAiB,mBAAmB,YAAY,SAAS;AAAA,EACxE,cAAc,EAAE,iBAAiB,iBAAiB,YAAY,SAAS;AAAA,EACvE,WAAW,EAAE,iBAAiB,mBAAmB,YAAY,SAAS;AAAA,EACtE,OAAO,EAAE,iBAAiB,SAAS,YAAY,SAAS;AAAA,EACxD,iBAAiB,EAAE,iBAAiB,qBAAqB,YAAY,SAAS;AAAA,EAC9E,QAAQ,EAAE,iBAAiB,YAAY,YAAY,SAAS;AAAA,EAC5D,gBAAgB,EAAE,iBAAiB,8BAA8B,YAAY,SAAS;AAAA,EACtF,UAAU,EAAE,iBAAiB,gBAAgB,YAAY,SAAS;AAAA,EAClE,SAAS,EAAE,iBAAiB,gBAAgB,YAAY,SAAS;AAAA,EACjE,MAAM,EAAE,iBAAiB,QAAQ,YAAY,SAAS;AAAA,EACtD,OAAO,EAAE,iBAAiB,SAAS,YAAY,SAAS;AAAA,EACxD,YAAY,EAAE,iBAAiB,YAAY,YAAY,WAAW;AAAA,EAClE,OAAO,EAAE,iBAAiB,SAAS,YAAY,SAAS;AAAA,EACxD,WAAW,EAAE,iBAAiB,eAAe,YAAY,SAAS;AAAA,EAClE,WAAW,EAAE,iBAAiB,eAAe,YAAY,SAAS;AAAA,EAClE,SAAS,EAAE,iBAAiB,WAAW,YAAY,WAAW;AAAA,EAC9D,OAAO,EAAE,iBAAiB,QAAQ,YAAY,SAAS;AAAA,EACvD,QAAQ,EAAE,iBAAiB,OAAO,YAAY,WAAW;AAAA,EACzD,OAAO,EAAE,iBAAiB,QAAQ,YAAY,iBAAiB;AAAA,EAC/D,MAAM,EAAE,iBAAiB,SAAS,YAAY,SAAS;AAAA,EACvD,cAAc,EAAE,iBAAiB,qBAAqB,YAAY,SAAS;AAAA,EAC3E,QAAQ,EAAE,iBAAiB,YAAY,YAAY,SAAS;AAAA,EAC5D,MAAM,EAAE,iBAAiB,UAAU,YAAY,WAAW;AAAA,EAC1D,OAAO,EAAE,iBAAiB,aAAa,YAAY,WAAW;AAAA,EAC9D,OAAO,EAAE,iBAAiB,SAAS,YAAY,WAAW;AAAA,EAC1D,QAAQ,EAAE,iBAAiB,gBAAgB,YAAY,WAAW;AAAA,EAClE,YAAY,EAAE,iBAAiB,SAAS,YAAY,WAAW;AAAA,EAC/D,SAAS,EAAE,iBAAiB,YAAY,YAAY,kBAAkB;AAAA,EACtE,WAAW,EAAE,iBAAiB,cAAc,YAAY,kBAAkB;AAAA,EAC1E,UAAU,EAAE,iBAAiB,YAAY,YAAY,WAAW;AAAA,EAChE,qBAAqB,EAAE,iBAAiB,WAAW,YAAY,qBAAqB;AAAA,EACpF,qBAAqB,EAAE,iBAAiB,0BAA0B,YAAY,uBAAuB;AAAA,EACrG,kBAAkB,EAAE,iBAAiB,wBAAwB,YAAY,uBAAuB;AAAA,EAChG,oBAAoB,EAAE,iBAAiB,sBAAsB,YAAY,uBAAuB;AAAA,EAChG,gBAAgB,EAAE,iBAAiB,yBAAyB,YAAY,qBAAqB;AAAA,EAC7F,OAAO,EAAE,iBAAiB,OAAO,YAAY,WAAW;AAAA,EACxD,QAAQ,EAAE,iBAAiB,iBAAiB,YAAY,WAAW;AAAA,EACnE,QAAQ,EAAE,iBAAiB,aAAa,YAAY,WAAW;AAAA,EAC/D,UAAU,EAAE,iBAAiB,cAAc,YAAY,WAAW;AAAA,EAClE,GAAG,EAAE,iBAAiB,KAAK,YAAY,SAAS;AAAA,EAChD,YAAY,EAAE,iBAAiB,cAAc,YAAY,uBAAuB;AAAA,EAChF,cAAc,EAAE,iBAAiB,cAAc,YAAY,qBAAqB;AAAA,EAChF,SAAS,EAAE,iBAAiB,UAAU,YAAY,2BAA2B;AAAA,EAC7E,cAAc,EAAE,iBAAiB,yBAAyB,YAAY,SAAS;AAAA,EAC/E,YAAY,EAAE,iBAAiB,WAAW,YAAY,WAAW;AAAA,EACjE,KAAK,EAAE,iBAAiB,OAAO,YAAY,WAAW;AAAA,EACtD,MAAM,EAAE,iBAAiB,UAAU,YAAY,qBAAqB;AAAA,EACpE,MAAM,EAAE,iBAAiB,OAAO,YAAY,WAAW;AAAA,EACvD,mBAAmB,EAAE,iBAAiB,qBAAqB,YAAY,wBAAwB;AAAA,EAC/F,MAAM,EAAE,iBAAiB,QAAQ,YAAY,SAAS;AAAA,EACtD,OAAO,EAAE,iBAAiB,SAAS,YAAY,qBAAqB;AAAA,EACpE,eAAe,EAAE,iBAAiB,SAAS,YAAY,qBAAqB;AAAA,EAC5E,UAAU,EAAE,iBAAiB,YAAY,YAAY,SAAS;AAAA,EAC9D,OAAO,EAAE,iBAAiB,SAAS,YAAY,WAAW;AAAA,EAC1D,iBAAiB,EAAE,iBAAiB,oBAAoB,YAAY,kBAAkB;AAAA,EACtF,eAAe,EAAE,iBAAiB,sBAAsB,YAAY,WAAW;AAAA,EAC/E,iBAAiB,EAAE,iBAAiB,qBAAqB,YAAY,WAAW;AAAA,EAChF,aAAa,EAAE,iBAAiB,mBAAmB,YAAY,qBAAqB;AAAA,EACpF,SAAS,EAAE,iBAAiB,aAAa,YAAY,WAAW;AAAA,EAChE,YAAY,EAAE,iBAAiB,eAAe,YAAY,SAAS;AAAA,EACnE,SAAS,EAAE,iBAAiB,YAAY,YAAY,WAAW;AAAA,EAC/D,OAAO,EAAE,iBAAiB,WAAW,YAAY,WAAW;AAAA,EAC5D,SAAS,EAAE,iBAAiB,WAAW,YAAY,WAAW;AAAA,EAC9D,QAAQ,EAAE,iBAAiB,SAAS,YAAY,WAAW;AAAA,EAC3D,YAAY,EAAE,iBAAiB,eAAe,YAAY,UAAU;AAAA,EACpE,WAAW,EAAE,iBAAiB,eAAe,YAAY,UAAU;AAAA,EACnE,SAAS,EAAE,iBAAiB,eAAe,YAAY,WAAW;AAAA,EAClE,SAAS,EAAE,iBAAiB,OAAO,YAAY,WAAW;AAAA,EAC1D,iBAAiB,EAAE,iBAAiB,qBAAqB,YAAY,oBAAoB;AAAA,EACzF,eAAe,EAAE,iBAAiB,oBAAoB,YAAY,oBAAoB;AAAA,EACtF,2BAA2B,EAAE,iBAAiB,mBAAmB,YAAY,uBAAuB;AAAA,EACpG,kBAAkB,EAAE,iBAAiB,qBAAqB,YAAY,0BAA0B;AAAA,EAChG,eAAe,EAAE,iBAAiB,qBAAqB,YAAY,8BAA8B;AAAA,EACjG,SAAS,EAAE,iBAAiB,OAAO,YAAY,WAAW;AAAA,EAC1D,WAAW,EAAE,iBAAiB,WAAW,YAAY,wBAAwB;AAAA,EAC7E,SAAS,EAAE,iBAAiB,YAAY,YAAY,WAAW;AAAA,EAC/D,SAAS,EAAE,iBAAiB,WAAW,YAAY,WAAW;AAAA,EAC9D,SAAS,EAAE,iBAAiB,OAAO,YAAY,WAAW;AAAA,EAC1D,SAAS,EAAE,iBAAiB,cAAc,YAAY,WAAW;AAAA,EACjE,cAAc,EAAE,iBAAiB,sBAAsB,YAAY,WAAW;AAAA,EAC9E,OAAO,EAAE,iBAAiB,SAAS,YAAY,WAAW;AAAA,EAC1D,sBAAsB,EAAE,iBAAiB,uBAAuB,YAAY,UAAU;AAAA,EACtF,eAAe,EAAE,iBAAiB,iBAAiB,YAAY,UAAU;AAAA,EACzE,kBAAkB,EAAE,iBAAiB,qBAAqB,YAAY,UAAU;AAAA,EAChF,SAAS,EAAE,iBAAiB,WAAW,YAAY,sBAAsB;AAAA,EACzE,aAAa,EAAE,iBAAiB,cAAc,YAAY,sBAAsB;AAAA,EAChF,aAAa,EAAE,iBAAiB,YAAY,YAAY,UAAU;AAAA,EAClE,eAAe,EAAE,iBAAiB,gBAAgB,YAAY,UAAU;AAAA,EACxE,gBAAgB,EAAE,iBAAiB,mBAAmB,YAAY,UAAU;AAAA,EAC5E,aAAa,EAAE,iBAAiB,aAAa,YAAY,UAAU;AAAA,EACnE,WAAW,EAAE,iBAAiB,aAAa,YAAY,UAAU;AAAA,EACjE,eAAe,EAAE,iBAAiB,cAAc,YAAY,UAAU;AAAA,EACtE,oBAAoB,EAAE,iBAAiB,oBAAoB,YAAY,UAAU;AAAA,EACjF,iBAAiB,EAAE,iBAAiB,mBAAmB,YAAY,UAAU;AAAA,EAC7E,oBAAoB,EAAE,iBAAiB,sBAAsB,YAAY,UAAU;AAAA,EACnF,cAAc,EAAE,iBAAiB,eAAe,YAAY,UAAU;AAAA,EACtE,cAAc,EAAE,iBAAiB,UAAU,YAAY,kBAAkB;AAAA,EACzE,sBAAsB,EAAE,iBAAiB,yBAAyB,YAAY,UAAU;AAAA,EACxF,cAAc,EAAE,iBAAiB,oBAAoB,YAAY,UAAU;AAAA,EAC3E,eAAe,EAAE,iBAAiB,WAAW,YAAY,oBAAoB;AAAA,EAC7E,OAAO,EAAE,iBAAiB,UAAU,YAAY,UAAU;AAAA,EAC1D,aAAa,EAAE,iBAAiB,kBAAkB,YAAY,UAAU;AAAA,EACxE,cAAc,EAAE,iBAAiB,eAAe,YAAY,UAAU;AAAA,EACtE,YAAY,EAAE,iBAAiB,aAAa,YAAY,uBAAuB;AAAA,EAC/E,kBAAkB,EAAE,iBAAiB,mBAAmB,YAAY,qBAAqB;AAAA,EACzF,cAAc,EAAE,iBAAiB,eAAe,YAAY,uBAAuB;AAAA,EACnF,WAAW,EAAE,iBAAiB,cAAc,YAAY,qBAAqB;AAAA,EAC7E,SAAS,EAAE,iBAAiB,YAAY,YAAY,WAAW;AAAA,EAC/D,UAAU,EAAE,iBAAiB,iBAAiB,YAAY,SAAS;AAAA,EACnE,MAAM,EAAE,iBAAiB,SAAS,YAAY,SAAS;AAAA,EACvD,mBAAmB,EAAE,iBAAiB,oBAAoB,YAAY,WAAW;AAAA,EACjF,OAAO,EAAE,iBAAiB,UAAU,YAAY,WAAW;AAAA,EAC3D,qBAAqB,EAAE,iBAAiB,mBAAmB,YAAY,sBAAsB;AAAA,EAC7F,WAAW,EAAE,iBAAiB,gBAAgB,YAAY,WAAW;AAAA,EACrE,SAAS,EAAE,iBAAiB,WAAW,YAAY,WAAW;AAAA,EAC9D,MAAM,EAAE,iBAAiB,QAAQ,YAAY,WAAW;AAAA,EACxD,WAAW,EAAE,iBAAiB,aAAa,YAAY,WAAW;AAAA,EAClE,YAAY,EAAE,iBAAiB,WAAW,YAAY,WAAW;AAAA,EACjE,UAAU,EAAE,iBAAiB,YAAY,YAAY,mBAAmB;AAAA,EACxE,cAAc,EAAE,iBAAiB,mBAAmB,YAAY,mBAAmB;AAAA,EACnF,cAAc,EAAE,iBAAiB,eAAe,YAAY,mBAAmB;AAAA,EAC/E,UAAU,EAAE,iBAAiB,cAAc,YAAY,mBAAmB;AAAA,EAC1E,cAAc,EAAE,iBAAiB,iBAAiB,YAAY,mBAAmB;AAAA,EACjF,YAAY,EAAE,iBAAiB,kBAAkB,YAAY,mBAAmB;AAAA,EAChF,QAAQ,EAAE,iBAAiB,SAAS,YAAY,mBAAmB;AAAA,EACnE,gBAAgB,EAAE,iBAAiB,oBAAoB,YAAY,mBAAmB;AAAA,EACtF,eAAe,EAAE,iBAAiB,eAAe,YAAY,mBAAmB;AAAA,EAChF,eAAe,EAAE,iBAAiB,iBAAiB,YAAY,WAAW;AAAA,EAC1E,MAAM,EAAE,iBAAiB,YAAY,YAAY,mBAAmB;AAAA,EACpE,cAAc,EAAE,iBAAiB,aAAa,YAAY,mBAAmB;AAAA,EAC7E,QAAQ,EAAE,iBAAiB,UAAU,YAAY,mBAAmB;AAAA,EACpE,UAAU,EAAE,iBAAiB,KAAK,YAAY,mBAAmB;AAAA,EACjE,UAAU,EAAE,iBAAiB,kBAAkB,YAAY,mBAAmB;AAAA,EAC9E,MAAM,EAAE,iBAAiB,SAAS,YAAY,oBAAoB;AAAA,EAClE,gBAAgB,EAAE,iBAAiB,mBAAmB,YAAY,qBAAqB;AAAA,EACvF,MAAM,EAAE,iBAAiB,QAAQ,YAAY,WAAW;AAAA,EACxD,QAAQ,EAAE,iBAAiB,WAAW,YAAY,WAAW;AAAA,EAC7D,SAAS,EAAE,iBAAiB,WAAW,YAAY,WAAW;AAAA,EAC9D,mBAAmB,EAAE,iBAAiB,wBAAwB,YAAY,WAAW;AAAA,EACrF,cAAc,EAAE,iBAAiB,cAAc,YAAY,WAAW;AAAA,EACtE,SAAS,EAAE,iBAAiB,WAAW,YAAY,SAAS;AAAA,EAC5D,MAAM,EAAE,iBAAiB,SAAS,YAAY,SAAS;AAAA,EACvD,MAAM,EAAE,iBAAiB,eAAe,YAAY,mBAAmB;AAAA,EACvE,iBAAiB,EAAE,iBAAiB,mBAAmB,YAAY,oBAAoB;AAAA,EACvF,OAAO,EAAE,iBAAiB,eAAe,YAAY,SAAS;AAAA,EAC9D,aAAa,EAAE,iBAAiB,gBAAgB,YAAY,oBAAoB;AAAA,EAChF,cAAc,EAAE,iBAAiB,eAAe,YAAY,oBAAoB;AAAA,EAChF,kBAAkB,EAAE,iBAAiB,YAAY,YAAY,oBAAoB;AAAA,EACjF,SAAS,EAAE,iBAAiB,WAAW,YAAY,oBAAoB;AAAA,EACvE,KAAK,EAAE,iBAAiB,OAAO,YAAY,WAAW;AAAA,EACtD,OAAO,EAAE,iBAAiB,UAAU,YAAY,WAAW;AAAA,EAC3D,WAAW,EAAE,iBAAiB,oBAAoB,YAAY,SAAS;AAAA,EACvE,cAAc,EAAE,iBAAiB,mBAAmB,YAAY,WAAW;AAAA,EAC3E,iBAAiB,EAAE,iBAAiB,kBAAkB,YAAY,WAAW;AAAA,EAC7E,mBAAmB,EAAE,iBAAiB,kBAAkB,YAAY,WAAW;AAAA,EAC/E,sBAAsB,EAAE,iBAAiB,iBAAiB,YAAY,WAAW;AAAA,EACjF,eAAe,EAAE,iBAAiB,cAAc,YAAY,WAAW;AAAA,EACvE,aAAa,EAAE,iBAAiB,iBAAiB,YAAY,WAAW;AAAA,EACxE,UAAU,EAAE,iBAAiB,eAAe,YAAY,mBAAmB;AAAA,EAC3E,QAAQ,EAAE,iBAAiB,eAAe,YAAY,mBAAmB;AAAA,EACzE,QAAQ,EAAE,iBAAiB,UAAU,YAAY,mBAAmB;AAAA,EACpE,cAAc,EAAE,iBAAiB,iBAAiB,YAAY,qBAAqB;AAAA,EACnF,aAAa,EAAE,iBAAiB,aAAa,YAAY,qBAAqB;AAAA,EAC9E,OAAO,EAAE,iBAAiB,UAAU,YAAY,qBAAqB;AAAA,EACrE,YAAY,EAAE,iBAAiB,gBAAgB,YAAY,mBAAmB;AAAA,EAC9E,WAAW,EAAE,iBAAiB,aAAa,YAAY,mBAAmB;AAAA,EAC1E,OAAO,EAAE,iBAAiB,YAAY,YAAY,mBAAmB;AAAA,EACrE,QAAQ,EAAE,iBAAiB,WAAW,YAAY,mBAAmB;AAAA,EACrE,YAAY,EAAE,iBAAiB,WAAW,YAAY,mBAAmB;AAAA,EACzE,MAAM,EAAE,iBAAiB,OAAO,YAAY,mBAAmB;AAAA,EAC/D,eAAe,EAAE,iBAAiB,oBAAoB,YAAY,WAAW;AAAA,EAC7E,WAAW,EAAE,iBAAiB,aAAa,YAAY,WAAW;AAAA,EAClE,QAAQ,EAAE,iBAAiB,YAAY,YAAY,WAAW;AAAA,EAC9D,eAAe,EAAE,iBAAiB,qBAAqB,YAAY,WAAW;AAAA,EAC9E,aAAa,EAAE,iBAAiB,iBAAiB,YAAY,WAAW;AAAA,EACxE,OAAO,EAAE,iBAAiB,QAAQ,YAAY,mBAAmB;AAAA,EACjE,qBAAqB,EAAE,iBAAiB,kBAAkB,YAAY,qBAAqB;AAAA,EAC3F,kBAAkB,EAAE,iBAAiB,eAAe,YAAY,qBAAqB;AAAA,EACrF,YAAY,EAAE,iBAAiB,qBAAqB,YAAY,qBAAqB;AAAA,EACrF,KAAK,EAAE,iBAAiB,OAAO,YAAY,WAAW;AAAA,EACtD,KAAK,EAAE,iBAAiB,OAAO,YAAY,0BAA0B;AAAA,EACrE,eAAe,EAAE,iBAAiB,mBAAmB,YAAY,0BAA0B;AAAA,EAC3F,WAAW,EAAE,iBAAiB,aAAa,YAAY,0BAA0B;AAAA,EACjF,SAAS,EAAE,iBAAiB,WAAW,YAAY,0BAA0B;AAAA,EAC7E,SAAS,EAAE,iBAAiB,gBAAgB,YAAY,0BAA0B;AAAA,EAClF,cAAc,EAAE,iBAAiB,eAAe,YAAY,0BAA0B;AAAA,EACtF,mBAAmB,EAAE,iBAAiB,eAAe,YAAY,0BAA0B;AAAA,EAC3F,UAAU,EAAE,iBAAiB,YAAY,YAAY,WAAW;AAAA,EAChE,eAAe,EAAE,iBAAiB,cAAc,YAAY,WAAW;AAAA,EACvE,SAAS,EAAE,iBAAiB,WAAW,YAAY,0BAA0B;AAAA,EAC7E,QAAQ,EAAE,iBAAiB,WAAW,YAAY,WAAW;AAAA,EAC7D,YAAY,EAAE,iBAAiB,eAAe,YAAY,WAAW;AAAA,EACrE,MAAM,EAAE,iBAAiB,QAAQ,YAAY,WAAW;AAAA,EACxD,YAAY,EAAE,iBAAiB,aAAa,YAAY,WAAW;AAAA,EACnE,OAAO,EAAE,iBAAiB,QAAQ,YAAY,WAAW;AAAA,EACzD,gBAAgB,EAAE,iBAAiB,uBAAuB,YAAY,WAAW;AAAA,EACjF,UAAU,EAAE,iBAAiB,cAAc,YAAY,WAAW;AAAA,EAClE,QAAQ,EAAE,iBAAiB,YAAY,YAAY,WAAW;AAAA,EAC9D,mBAAmB,EAAE,iBAAiB,IAAI,YAAY,gBAAgB;AAAA,EACtE,uBAAuB,EAAE,iBAAiB,IAAI,YAAY,gBAAgB;AAAA,EAC1E,cAAc,EAAE,iBAAiB,IAAI,YAAY,gBAAgB;AAAA,EACjE,UAAU,EAAE,iBAAiB,IAAI,YAAY,gBAAgB;AAAA,EAC7D,cAAc,EAAE,iBAAiB,IAAI,YAAY,gBAAgB;AAAA,EACjE,UAAU,EAAE,iBAAiB,WAAW,YAAY,WAAW;AAAA,EAC/D,YAAY,EAAE,iBAAiB,aAAa,YAAY,WAAW;AAAA,EACnE,aAAa,EAAE,iBAAiB,eAAe,YAAY,WAAW;AAAA,EACtE,kBAAkB,EAAE,iBAAiB,kBAAkB,YAAY,qBAAqB;AAAA,EACxF,0BAA0B,EAAE,iBAAiB,sBAAsB,YAAY,qBAAqB;AAAA,EACpG,oBAAoB,EAAE,iBAAiB,iBAAiB,YAAY,qBAAqB;AAAA,EACzF,UAAU,EAAE,iBAAiB,IAAI,YAAY,oBAAoB;AAAA,EACjE,cAAc,EAAE,iBAAiB,IAAI,YAAY,oBAAoB;AAAA,EACrE,SAAS,EAAE,iBAAiB,IAAI,YAAY,oBAAoB;AAAA,EAChE,YAAY,EAAE,iBAAiB,IAAI,YAAY,oBAAoB;AAAA,EACnE,gBAAgB,EAAE,iBAAiB,IAAI,YAAY,oBAAoB;AAAA,EACvE,aAAa,EAAE,iBAAiB,IAAI,YAAY,oBAAoB;AAAA,EACpE,iBAAiB,EAAE,iBAAiB,IAAI,YAAY,oBAAoB;AAAA,EACxE,iBAAiB,EAAE,iBAAiB,IAAI,YAAY,oBAAoB;AAAA,EACxE,oBAAoB,EAAE,iBAAiB,IAAI,YAAY,oBAAoB;AAAA,EAC3E,eAAe,EAAE,iBAAiB,wBAAwB,YAAY,SAAS;AAAA,EAC/E,iBAAiB,EAAE,iBAAiB,iBAAiB,YAAY,SAAS;AAAA,EAC1E,QAAQ,EAAE,iBAAiB,UAAU,YAAY,qBAAqB;AAAA,EACtE,UAAU,EAAE,iBAAiB,uBAAuB,YAAY,SAAS;AAAA,EACzE,kBAAkB,EAAE,iBAAiB,sBAAsB,YAAY,uBAAuB;AAAA,EAC9F,IAAI,EAAE,iBAAiB,IAAI,YAAY,GAAG;AAC5C;"}
|
|
@@ -53,6 +53,8 @@ export interface ModalProps {
|
|
|
53
53
|
printable?: boolean;
|
|
54
54
|
/** If disabled, clicking escape or outside the modal will not close it */
|
|
55
55
|
disableCloseEvents?: boolean;
|
|
56
|
+
/** Aria role used for the Modal. Default is dialog */
|
|
57
|
+
role?: 'dialog' | 'alertdialog';
|
|
56
58
|
}
|
|
57
59
|
declare const Modal: React.FC<ModalProps>;
|
|
58
60
|
export default Modal;
|
|
@@ -7,6 +7,7 @@ import { useIsVisible } from "../../hooks/useIsVisible.js";
|
|
|
7
7
|
import { useReturnFocusOnUnmount } from "../../hooks/useReturnFocusOnUnmount.js";
|
|
8
8
|
import { palette } from "../../theme/palette.js";
|
|
9
9
|
import { getAriaLabelAttributes } from "../../utils/accessibility.js";
|
|
10
|
+
import { disableBodyScroll, enableBodyScroll } from "../../utils/scroll.js";
|
|
10
11
|
import { u as uuid } from "../../uuid.js";
|
|
11
12
|
import { B as Button } from "../../Button.js";
|
|
12
13
|
import { C as Close } from "../../Close.js";
|
|
@@ -60,7 +61,8 @@ const Modal = (props) => {
|
|
|
60
61
|
titleId = uuid(),
|
|
61
62
|
className = "",
|
|
62
63
|
size = "large",
|
|
63
|
-
zIndex = ZIndex.
|
|
64
|
+
zIndex = ZIndex.OverlayScreen,
|
|
65
|
+
role = "dialog"
|
|
64
66
|
} = props;
|
|
65
67
|
const topContent = React__default.useRef(null);
|
|
66
68
|
const modalContentRef = React__default.useRef(null);
|
|
@@ -83,12 +85,6 @@ const Modal = (props) => {
|
|
|
83
85
|
props.onClose();
|
|
84
86
|
}
|
|
85
87
|
}
|
|
86
|
-
function disableBodyScroll() {
|
|
87
|
-
document.body.style.overflow = "hidden";
|
|
88
|
-
}
|
|
89
|
-
function enableBodyScroll() {
|
|
90
|
-
document.body.style.removeProperty("overflow");
|
|
91
|
-
}
|
|
92
88
|
const imageView = variant === "image";
|
|
93
89
|
const overlayRef = React__default.useRef(null);
|
|
94
90
|
const showActions = props.secondaryButtonText && ((_a = props.secondaryButtonText) == null ? void 0 : _a.length) > 0 || props.onSuccess;
|
|
@@ -132,7 +128,7 @@ const Modal = (props) => {
|
|
|
132
128
|
"data-testid": props.testId,
|
|
133
129
|
"data-analyticsid": AnalyticsId.Modal,
|
|
134
130
|
style: { zIndex },
|
|
135
|
-
children: /* @__PURE__ */ jsx("div", { className: styles.align, children: /* @__PURE__ */ jsxs("div", { className: dialogClasses, role
|
|
131
|
+
children: /* @__PURE__ */ jsx("div", { className: styles.align, children: /* @__PURE__ */ jsxs("div", { className: dialogClasses, role, "aria-modal": "true", tabIndex: -1, ...ariaLabelAttributes, ref: dialogRef, children: [
|
|
136
132
|
/* @__PURE__ */ jsx(
|
|
137
133
|
"div",
|
|
138
134
|
{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../src/components/Modal/Modal.tsx"],"sourcesContent":["import React, { useEffect } from 'react';\n\nimport cn from 'classnames';\n\nimport { AnalyticsId, ZIndex } from '../../constants';\nimport useFocusTrap from '../../hooks/useFocusTrap';\nimport { useIsVisible } from '../../hooks/useIsVisible';\nimport { useReturnFocusOnUnmount } from '../../hooks/useReturnFocusOnUnmount';\nimport { palette } from '../../theme/palette';\nimport { getAriaLabelAttributes } from '../../utils/accessibility';\nimport { uuid } from '../../utils/uuid';\nimport Button from '../Button';\nimport Close from '../Close';\nimport Icon, { IconSize } from '../Icon';\nimport AlertSignFill from '../Icons/AlertSignFill';\nimport AlertSignStroke from '../Icons/AlertSignStroke';\nimport CheckOutline from '../Icons/CheckOutline';\nimport Portal from '../Portal';\nimport Title from '../Title/Title';\n\nimport styles from './styles.module.scss';\n\nexport enum ModalVariants {\n normal = 'normal',\n warning = 'warning',\n error = 'error',\n success = 'success',\n image = 'image',\n}\n\nexport enum ModalSize {\n large = 'large',\n medium = 'medium',\n}\n\nexport interface ModalProps {\n /** Title of the modal */\n title: string;\n /** id of the modal title */\n titleId?: string;\n /** Description of the modal. Will not render if the modal has children. */\n description?: string;\n /** Changes the visual representation of the modal */\n variant?: keyof typeof ModalVariants;\n /** Change width of the modal (default: large) */\n size?: keyof typeof ModalSize;\n /** Icon displayed in title */\n icon?: React.ReactElement;\n /** Hides the close button */\n noCloseButton?: boolean;\n /** Sets the data-testid attribute. */\n testId?: string;\n /** Primary button text */\n primaryButtonText?: string;\n /** Secondary button text */\n secondaryButtonText?: string;\n /** Sets the aria-label of the modal */\n ariaLabel?: string;\n /** Sets the aria-labelledby of the modal */\n ariaLabelledBy?: string;\n /** Close button aria-label */\n ariaLabelCloseBtn?: string;\n /** Alternative component to modal */\n children?: React.ReactNode;\n /** Component shown after title */\n afterTitleChildren?: React.ReactNode;\n /** Adds custom classes to the element. */\n className?: string;\n /** Customize the z-index of the modal */\n zIndex?: number;\n /** Function is called when user clicks primary button */\n onSuccess?: () => void;\n /** Function is called when user clicks secondary button, clicks escape or outside the modal */\n onClose?: () => void;\n /** When enabled the component will be rendered in the bottom of document.body */\n printable?: boolean;\n /** If disabled, clicking escape or outside the modal will not close it */\n disableCloseEvents?: boolean;\n}\n\nconst getVariantIcon = (variant?: ModalProps['variant']): JSX.Element | null => {\n if (variant === ModalVariants.error) {\n return <Icon size={IconSize.Small} svgIcon={AlertSignFill} color={palette.cherry500} />;\n } else if (variant === ModalVariants.warning) {\n return <Icon size={IconSize.Small} svgIcon={AlertSignStroke} color={palette.black} />;\n } else if (variant === ModalVariants.success) {\n return <Icon size={IconSize.Small} svgIcon={CheckOutline} color={palette.kiwi900} />;\n }\n return null;\n};\n\nconst getIcon = (variant?: ModalProps['variant'], icon?: ModalProps['icon']): JSX.Element | null => {\n const variantIcon = getVariantIcon(variant);\n if (variantIcon) {\n return <div className={styles.modal__iconWrapper}>{variantIcon}</div>;\n }\n if (icon) {\n return (\n <div className={styles.modal__iconWrapper}>\n {React.cloneElement(icon, {\n size: IconSize.Small,\n })}\n </div>\n );\n }\n return null;\n};\n\nconst Modal: React.FC<ModalProps> = props => {\n const {\n variant = ModalVariants.normal,\n primaryButtonText = 'OK',\n titleId = uuid(),\n className = '',\n size = ModalSize.large,\n zIndex = ZIndex.Modal,\n } = props;\n\n const topContent = React.useRef<HTMLDivElement>(null);\n const modalContentRef = React.useRef<HTMLDivElement>(null);\n const dialogRef = React.useRef<HTMLDivElement>(null);\n useFocusTrap(dialogRef, true);\n const topContentVisible = useIsVisible(topContent);\n const bottomContent = React.useRef<HTMLDivElement>(null);\n const bottomContentVisible = useIsVisible(bottomContent);\n const contentIsScrollable = modalContentRef.current && modalContentRef.current.scrollHeight > modalContentRef.current.clientHeight;\n useReturnFocusOnUnmount(dialogRef);\n\n function handleKeyboardEvent(e: KeyboardEvent): void {\n if (e.key === 'Escape' && props.onClose) {\n e.stopPropagation();\n props.onClose();\n }\n }\n\n function handleClickEvent(event: MouseEvent): void {\n if (event.target && overlayRef.current === event.target && props.onClose) {\n event.stopPropagation();\n props.onClose();\n }\n }\n\n function disableBodyScroll(): void {\n document.body.style.overflow = 'hidden';\n }\n\n function enableBodyScroll(): void {\n document.body.style.removeProperty('overflow');\n }\n\n /* Displays a full window size modal with image */\n const imageView = variant === ModalVariants.image;\n\n const overlayRef = React.useRef<HTMLDivElement>(null);\n\n const showActions = (props.secondaryButtonText && props.secondaryButtonText?.length > 0) || props.onSuccess;\n\n const ariaLabelAttributes = getAriaLabelAttributes({ label: props.ariaLabel, id: props.ariaLabelledBy, fallbackId: titleId });\n\n useEffect(() => {\n const overlayElement = overlayRef.current;\n disableBodyScroll();\n if (!props.disableCloseEvents && overlayElement) {\n overlayElement.addEventListener('keydown', handleKeyboardEvent);\n overlayElement.addEventListener('click', handleClickEvent);\n }\n return (): void => {\n enableBodyScroll();\n if (!props.disableCloseEvents && overlayElement) {\n overlayElement.removeEventListener('keydown', handleKeyboardEvent);\n overlayElement.removeEventListener('click', handleClickEvent);\n }\n };\n }, [props.disableCloseEvents]);\n\n useEffect(() => {\n dialogRef.current?.focus();\n }, []);\n\n const dialogClasses = cn(\n className,\n styles.modal,\n variant && styles[`modal--${variant}`],\n size && styles[`modal--${size}`],\n contentIsScrollable && !showActions && styles['modal--no-actions']\n );\n\n const titleClasses = cn({\n [styles['modal__title--error']]: variant === ModalVariants.error,\n [styles['modal__title--success']]: variant === ModalVariants.success,\n });\n\n const Component = (\n <div data-testid=\"dialog-container\">\n <div\n ref={overlayRef}\n className={styles['modal-overlay']}\n data-testid={props.testId}\n data-analyticsid={AnalyticsId.Modal}\n style={{ zIndex }}\n >\n <div className={styles.align}>\n <div className={dialogClasses} role=\"dialog\" aria-modal=\"true\" tabIndex={-1} {...ariaLabelAttributes} ref={dialogRef}>\n <div\n className={cn(styles['modal__shadow'], styles['modal__shadow--top'], {\n [styles['modal__shadow--show']]: !topContentVisible && contentIsScrollable,\n })}\n />\n <div\n className={cn(styles.modal__contentWrapper, {\n [styles['modal__contentWrapper--image']]: imageView,\n })}\n tabIndex={contentIsScrollable ? 0 : undefined}\n role={contentIsScrollable ? 'region' : undefined}\n {...(contentIsScrollable ? ariaLabelAttributes : {})}\n ref={modalContentRef}\n >\n {!props.noCloseButton && (\n <div className={styles.modal__closeWrapper}>\n <div className={cn(styles.modal__closeWrapper__close)}>\n <Close onClick={props.onClose} ariaLabel={props.ariaLabelCloseBtn} />\n </div>\n </div>\n )}\n <div\n className={cn(size && styles[`modal__contentWrapper__scroll--${size}`], {\n [styles['modal__contentWrapper__scroll--image']]: imageView,\n })}\n >\n <div ref={topContent} />\n <div className={styles.modal__contentWrapper__title}>\n {getIcon(variant, props.icon)}\n <Title id={ariaLabelAttributes?.['aria-labelledby']} htmlMarkup=\"h3\" appearance=\"title3\" className={titleClasses}>\n {props.title}\n </Title>\n {props.afterTitleChildren && <div className={styles['modal__afterTitleChildren']}>{props.afterTitleChildren}</div>}\n </div>\n {imageView && (\n <div>\n <div className={styles['modal__contentWrapper__imageWrapper']}>{props.children}</div>\n <span className={styles['modal__contentWrapper__imageDescription']}>{props.description}</span>\n </div>\n )}\n {!imageView && props.children && <div>{props.children}</div>}\n {!imageView && !props.children && <p className={styles.modal__description}>{props.description}</p>}\n <div ref={bottomContent} />\n </div>\n </div>\n <div\n className={cn(styles['modal__shadow'], styles['modal__shadow--bottom'], {\n [styles['modal__shadow--show']]: !bottomContentVisible && contentIsScrollable,\n })}\n />\n {showActions && (\n <div className={cn(styles['modal__call-to-action'], size && styles[`modal__call-to-action--${size}`])}>\n {props.onSuccess && <Button onClick={props.onSuccess}>{primaryButtonText}</Button>}\n {props.secondaryButtonText && props.secondaryButtonText?.length > 0 && (\n <Button variant=\"borderless\" onClick={props.onClose}>\n {props.secondaryButtonText}\n </Button>\n )}\n </div>\n )}\n </div>\n </div>\n </div>\n </div>\n );\n\n if (props.printable) {\n const printModal = 'print-modal';\n return (\n <Portal className={printModal} testId=\"print-modal\">\n <style media=\"print\">{`body > *:not(.${printModal}) {display: none;}`}</style>\n {Component}\n </Portal>\n );\n }\n\n return Component;\n};\n\nexport default Modal;\n"],"names":["ModalVariants","ModalSize","React","_a","cn"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/components/Modal/Modal.tsx"],"sourcesContent":["import React, { useEffect } from 'react';\n\nimport cn from 'classnames';\n\nimport { AnalyticsId, ZIndex } from '../../constants';\nimport useFocusTrap from '../../hooks/useFocusTrap';\nimport { useIsVisible } from '../../hooks/useIsVisible';\nimport { useReturnFocusOnUnmount } from '../../hooks/useReturnFocusOnUnmount';\nimport { palette } from '../../theme/palette';\nimport { getAriaLabelAttributes } from '../../utils/accessibility';\nimport { disableBodyScroll, enableBodyScroll } from '../../utils/scroll';\nimport { uuid } from '../../utils/uuid';\nimport Button from '../Button';\nimport Close from '../Close';\nimport Icon, { IconSize } from '../Icon';\nimport AlertSignFill from '../Icons/AlertSignFill';\nimport AlertSignStroke from '../Icons/AlertSignStroke';\nimport CheckOutline from '../Icons/CheckOutline';\nimport Portal from '../Portal';\nimport Title from '../Title/Title';\n\nimport styles from './styles.module.scss';\n\nexport enum ModalVariants {\n normal = 'normal',\n warning = 'warning',\n error = 'error',\n success = 'success',\n image = 'image',\n}\n\nexport enum ModalSize {\n large = 'large',\n medium = 'medium',\n}\n\nexport interface ModalProps {\n /** Title of the modal */\n title: string;\n /** id of the modal title */\n titleId?: string;\n /** Description of the modal. Will not render if the modal has children. */\n description?: string;\n /** Changes the visual representation of the modal */\n variant?: keyof typeof ModalVariants;\n /** Change width of the modal (default: large) */\n size?: keyof typeof ModalSize;\n /** Icon displayed in title */\n icon?: React.ReactElement;\n /** Hides the close button */\n noCloseButton?: boolean;\n /** Sets the data-testid attribute. */\n testId?: string;\n /** Primary button text */\n primaryButtonText?: string;\n /** Secondary button text */\n secondaryButtonText?: string;\n /** Sets the aria-label of the modal */\n ariaLabel?: string;\n /** Sets the aria-labelledby of the modal */\n ariaLabelledBy?: string;\n /** Close button aria-label */\n ariaLabelCloseBtn?: string;\n /** Alternative component to modal */\n children?: React.ReactNode;\n /** Component shown after title */\n afterTitleChildren?: React.ReactNode;\n /** Adds custom classes to the element. */\n className?: string;\n /** Customize the z-index of the modal */\n zIndex?: number;\n /** Function is called when user clicks primary button */\n onSuccess?: () => void;\n /** Function is called when user clicks secondary button, clicks escape or outside the modal */\n onClose?: () => void;\n /** When enabled the component will be rendered in the bottom of document.body */\n printable?: boolean;\n /** If disabled, clicking escape or outside the modal will not close it */\n disableCloseEvents?: boolean;\n /** Aria role used for the Modal. Default is dialog */\n role?: 'dialog' | 'alertdialog';\n}\n\nconst getVariantIcon = (variant?: ModalProps['variant']): JSX.Element | null => {\n if (variant === ModalVariants.error) {\n return <Icon size={IconSize.Small} svgIcon={AlertSignFill} color={palette.cherry500} />;\n } else if (variant === ModalVariants.warning) {\n return <Icon size={IconSize.Small} svgIcon={AlertSignStroke} color={palette.black} />;\n } else if (variant === ModalVariants.success) {\n return <Icon size={IconSize.Small} svgIcon={CheckOutline} color={palette.kiwi900} />;\n }\n return null;\n};\n\nconst getIcon = (variant?: ModalProps['variant'], icon?: ModalProps['icon']): JSX.Element | null => {\n const variantIcon = getVariantIcon(variant);\n if (variantIcon) {\n return <div className={styles.modal__iconWrapper}>{variantIcon}</div>;\n }\n if (icon) {\n return (\n <div className={styles.modal__iconWrapper}>\n {React.cloneElement(icon, {\n size: IconSize.Small,\n })}\n </div>\n );\n }\n return null;\n};\n\nconst Modal: React.FC<ModalProps> = props => {\n const {\n variant = ModalVariants.normal,\n primaryButtonText = 'OK',\n titleId = uuid(),\n className = '',\n size = ModalSize.large,\n zIndex = ZIndex.OverlayScreen,\n role = 'dialog',\n } = props;\n\n const topContent = React.useRef<HTMLDivElement>(null);\n const modalContentRef = React.useRef<HTMLDivElement>(null);\n const dialogRef = React.useRef<HTMLDivElement>(null);\n useFocusTrap(dialogRef, true);\n const topContentVisible = useIsVisible(topContent);\n const bottomContent = React.useRef<HTMLDivElement>(null);\n const bottomContentVisible = useIsVisible(bottomContent);\n const contentIsScrollable = modalContentRef.current && modalContentRef.current.scrollHeight > modalContentRef.current.clientHeight;\n useReturnFocusOnUnmount(dialogRef);\n\n function handleKeyboardEvent(e: KeyboardEvent): void {\n if (e.key === 'Escape' && props.onClose) {\n e.stopPropagation();\n props.onClose();\n }\n }\n\n function handleClickEvent(event: MouseEvent): void {\n if (event.target && overlayRef.current === event.target && props.onClose) {\n event.stopPropagation();\n props.onClose();\n }\n }\n\n /* Displays a full window size modal with image */\n const imageView = variant === ModalVariants.image;\n\n const overlayRef = React.useRef<HTMLDivElement>(null);\n\n const showActions = (props.secondaryButtonText && props.secondaryButtonText?.length > 0) || props.onSuccess;\n\n const ariaLabelAttributes = getAriaLabelAttributes({ label: props.ariaLabel, id: props.ariaLabelledBy, fallbackId: titleId });\n\n useEffect(() => {\n const overlayElement = overlayRef.current;\n disableBodyScroll();\n if (!props.disableCloseEvents && overlayElement) {\n overlayElement.addEventListener('keydown', handleKeyboardEvent);\n overlayElement.addEventListener('click', handleClickEvent);\n }\n return (): void => {\n enableBodyScroll();\n if (!props.disableCloseEvents && overlayElement) {\n overlayElement.removeEventListener('keydown', handleKeyboardEvent);\n overlayElement.removeEventListener('click', handleClickEvent);\n }\n };\n }, [props.disableCloseEvents]);\n\n useEffect(() => {\n dialogRef.current?.focus();\n }, []);\n\n const dialogClasses = cn(\n className,\n styles.modal,\n variant && styles[`modal--${variant}`],\n size && styles[`modal--${size}`],\n contentIsScrollable && !showActions && styles['modal--no-actions']\n );\n\n const titleClasses = cn({\n [styles['modal__title--error']]: variant === ModalVariants.error,\n [styles['modal__title--success']]: variant === ModalVariants.success,\n });\n\n const Component = (\n <div data-testid=\"dialog-container\">\n <div\n ref={overlayRef}\n className={styles['modal-overlay']}\n data-testid={props.testId}\n data-analyticsid={AnalyticsId.Modal}\n style={{ zIndex }}\n >\n <div className={styles.align}>\n <div className={dialogClasses} role={role} aria-modal=\"true\" tabIndex={-1} {...ariaLabelAttributes} ref={dialogRef}>\n <div\n className={cn(styles['modal__shadow'], styles['modal__shadow--top'], {\n [styles['modal__shadow--show']]: !topContentVisible && contentIsScrollable,\n })}\n />\n <div\n className={cn(styles.modal__contentWrapper, {\n [styles['modal__contentWrapper--image']]: imageView,\n })}\n tabIndex={contentIsScrollable ? 0 : undefined}\n role={contentIsScrollable ? 'region' : undefined}\n {...(contentIsScrollable ? ariaLabelAttributes : {})}\n ref={modalContentRef}\n >\n {!props.noCloseButton && (\n <div className={styles.modal__closeWrapper}>\n <div className={cn(styles.modal__closeWrapper__close)}>\n <Close onClick={props.onClose} ariaLabel={props.ariaLabelCloseBtn} />\n </div>\n </div>\n )}\n <div\n className={cn(size && styles[`modal__contentWrapper__scroll--${size}`], {\n [styles['modal__contentWrapper__scroll--image']]: imageView,\n })}\n >\n <div ref={topContent} />\n <div className={styles.modal__contentWrapper__title}>\n {getIcon(variant, props.icon)}\n <Title id={ariaLabelAttributes?.['aria-labelledby']} htmlMarkup=\"h3\" appearance=\"title3\" className={titleClasses}>\n {props.title}\n </Title>\n {props.afterTitleChildren && <div className={styles['modal__afterTitleChildren']}>{props.afterTitleChildren}</div>}\n </div>\n {imageView && (\n <div>\n <div className={styles['modal__contentWrapper__imageWrapper']}>{props.children}</div>\n <span className={styles['modal__contentWrapper__imageDescription']}>{props.description}</span>\n </div>\n )}\n {!imageView && props.children && <div>{props.children}</div>}\n {!imageView && !props.children && <p className={styles.modal__description}>{props.description}</p>}\n <div ref={bottomContent} />\n </div>\n </div>\n <div\n className={cn(styles['modal__shadow'], styles['modal__shadow--bottom'], {\n [styles['modal__shadow--show']]: !bottomContentVisible && contentIsScrollable,\n })}\n />\n {showActions && (\n <div className={cn(styles['modal__call-to-action'], size && styles[`modal__call-to-action--${size}`])}>\n {props.onSuccess && <Button onClick={props.onSuccess}>{primaryButtonText}</Button>}\n {props.secondaryButtonText && props.secondaryButtonText?.length > 0 && (\n <Button variant=\"borderless\" onClick={props.onClose}>\n {props.secondaryButtonText}\n </Button>\n )}\n </div>\n )}\n </div>\n </div>\n </div>\n </div>\n );\n\n if (props.printable) {\n const printModal = 'print-modal';\n return (\n <Portal className={printModal} testId=\"print-modal\">\n <style media=\"print\">{`body > *:not(.${printModal}) {display: none;}`}</style>\n {Component}\n </Portal>\n );\n }\n\n return Component;\n};\n\nexport default Modal;\n"],"names":["ModalVariants","ModalSize","React","_a","cn"],"mappings":"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"}
|
|
@@ -301,8 +301,8 @@
|
|
|
301
301
|
color: palette.$neutral600;
|
|
302
302
|
|
|
303
303
|
&:hover {
|
|
304
|
-
box-shadow:
|
|
305
|
-
background-color:
|
|
304
|
+
box-shadow: none;
|
|
305
|
+
background-color: transparent;
|
|
306
306
|
}
|
|
307
307
|
}
|
|
308
308
|
}
|
|
@@ -332,7 +332,7 @@
|
|
|
332
332
|
}
|
|
333
333
|
|
|
334
334
|
&--disabled:checked::before {
|
|
335
|
-
background-color:
|
|
335
|
+
background-color: palette.$neutral600;
|
|
336
336
|
}
|
|
337
337
|
|
|
338
338
|
&__large {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const TabsDocs: () => React.JSX.Element;
|
|
@@ -46,21 +46,29 @@
|
|
|
46
46
|
}
|
|
47
47
|
|
|
48
48
|
&__sublabel {
|
|
49
|
+
--sublabel-mobile-margin: 3.9rem;
|
|
50
|
+
--sublabel-desktop-margin: 4.1rem;
|
|
51
|
+
|
|
49
52
|
font-size: font-settings.$font-size-xs;
|
|
50
53
|
line-height: 1.25rem;
|
|
51
54
|
color: var(--core-color-neutral-800);
|
|
52
|
-
margin-left:
|
|
55
|
+
margin-left: var(--sublabel-mobile-margin);
|
|
53
56
|
text-align: left;
|
|
54
57
|
|
|
55
58
|
@media (min-width: map.get(breakpoints.$grid-breakpoints, sm)) {
|
|
56
59
|
font-size: font-settings.$font-size-sm;
|
|
57
60
|
line-height: font-settings.$lineheight-size-xs;
|
|
58
61
|
text-align: left;
|
|
59
|
-
margin-left:
|
|
62
|
+
margin-left: var(--sublabel-desktop-margin);
|
|
60
63
|
}
|
|
61
64
|
|
|
62
65
|
&--toggle-right {
|
|
63
66
|
margin-left: 0;
|
|
67
|
+
margin-right: var(--sublabel-mobile-margin);
|
|
68
|
+
|
|
69
|
+
@media (min-width: map.get(breakpoints.$grid-breakpoints, sm)) {
|
|
70
|
+
margin-right: var(--sublabel-desktop-margin);
|
|
71
|
+
}
|
|
64
72
|
}
|
|
65
73
|
}
|
|
66
74
|
|
package/constants.d.ts
CHANGED
|
@@ -7,9 +7,8 @@ export declare enum IconSize {
|
|
|
7
7
|
XLarge = 130
|
|
8
8
|
}
|
|
9
9
|
export declare enum ZIndex {
|
|
10
|
-
|
|
10
|
+
OverlayScreen = 1300000,
|
|
11
11
|
PopOver = 11000,
|
|
12
|
-
OverlayScreen = 9999,
|
|
13
12
|
LightBoxButtons = 1000
|
|
14
13
|
}
|
|
15
14
|
export declare const AVERAGE_CHARACTER_WIDTH_PX = 12;
|
package/constants.js
CHANGED
|
@@ -8,9 +8,8 @@ var IconSize = /* @__PURE__ */ ((IconSize2) => {
|
|
|
8
8
|
return IconSize2;
|
|
9
9
|
})(IconSize || {});
|
|
10
10
|
var ZIndex = /* @__PURE__ */ ((ZIndex2) => {
|
|
11
|
-
ZIndex2[ZIndex2["
|
|
11
|
+
ZIndex2[ZIndex2["OverlayScreen"] = 13e5] = "OverlayScreen";
|
|
12
12
|
ZIndex2[ZIndex2["PopOver"] = 11e3] = "PopOver";
|
|
13
|
-
ZIndex2[ZIndex2["OverlayScreen"] = 9999] = "OverlayScreen";
|
|
14
13
|
ZIndex2[ZIndex2["LightBoxButtons"] = 1e3] = "LightBoxButtons";
|
|
15
14
|
return ZIndex2;
|
|
16
15
|
})(ZIndex || {});
|
package/constants.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sources":["../src/constants.ts"],"sourcesContent":["export enum IconSize {\n XXSmall = 24,\n XSmall = 38,\n Small = 48,\n Medium = 64,\n Large = 80,\n XLarge = 130,\n}\n\nexport enum ZIndex {\n
|
|
1
|
+
{"version":3,"file":"constants.js","sources":["../src/constants.ts"],"sourcesContent":["export enum IconSize {\n XXSmall = 24,\n XSmall = 38,\n Small = 48,\n Medium = 64,\n Large = 80,\n XLarge = 130,\n}\n\nexport enum ZIndex {\n OverlayScreen = 1300000,\n PopOver = 11000,\n LightBoxButtons = 1000,\n}\n\nexport const AVERAGE_CHARACTER_WIDTH_PX = 12;\n\nexport interface HTMLButtonProps {\n autoFocus?: boolean;\n disabled?: boolean;\n form?: string;\n formAction?: string;\n formEncType?: string;\n formMethod?: string;\n formNoValidate?: boolean;\n formTarget?: string;\n name?: string;\n type?: 'submit' | 'reset' | 'button' | string;\n value?: string | string[] | number;\n id?: string;\n}\n\nexport type AnchorTarget = '_self' | '_blank' | '_parent' | '_top';\n\nexport interface HTMLAnchorProps {\n download?: string;\n href?: string;\n hrefLang?: string;\n media?: string;\n ping?: string;\n rel?: AnchorTarget;\n target?: string;\n referrerPolicy?:\n | ''\n | 'same-origin'\n | 'no-referrer'\n | 'no-referrer-when-downgrade'\n | 'origin'\n | 'origin-when-cross-origin'\n | 'strict-origin'\n | 'strict-origin-when-cross-origin'\n | 'unsafe-url';\n}\n\nexport type ButtonVariant = 'secondary' | 'tertiary' | string | undefined | null;\n\nexport enum FormOnColor {\n onwhite = 'onwhite',\n ongrey = 'ongrey',\n onblueberry = 'onblueberry',\n ondark = 'ondark',\n oninvalid = 'oninvalid',\n}\n\nexport enum FormSize {\n medium = 'medium',\n large = 'large',\n}\n\nexport enum AnalyticsId {\n AnchorLink = 'anchor-link',\n Avatar = 'avatar',\n Badge = 'badge',\n Button = 'button',\n Checkbox = 'checkbox',\n Chip = 'chip',\n Close = 'close',\n DictionaryTrigger = 'dictionary-trigger',\n Drawer = 'Drawer',\n Dropdown = 'dropdown',\n Duolist = 'duolist',\n EmptyState = 'empty-state',\n Expander = 'expander',\n ExpanderHierarchy = 'expander-hierarchy',\n ExpanderHierarchyExpander = 'expander-hierarchy-expander',\n ExpanderList = 'expander-list',\n ExpanderListExpander = 'expander-list-expander',\n EyebrowHeader = 'eyebrow-header',\n FormGroup = 'form-group',\n FormLayout = 'form-layout',\n HelpBubble = 'help-bubble',\n HelpQuestion = 'help-question',\n HelpTooltip = 'help-tooltip',\n HighlightPanel = 'highlight-panel',\n Icon = 'icon',\n Illustration = 'Illustration',\n Input = 'input',\n Label = 'label',\n Link = 'link',\n LinkList = 'link-list',\n List = 'list',\n Loader = 'loader',\n Logo = 'logo',\n Modal = 'modal',\n NotificationPanel = 'notification-panel',\n PanelOld = 'panel',\n PanelList = 'panel-list',\n PopMenu = 'pop-menu',\n PopOver = 'pop-over',\n Portal = 'portal',\n PromoPanel = 'promo-panel',\n RadioButton = 'radio-button',\n Select = 'select',\n SharingStatus = 'sharing-status',\n Slider = 'slider',\n Spacer = 'spacer',\n StatusDot = 'status-dot',\n Step = 'step',\n StepButtons = 'step-buttons',\n Stepper = 'stepper',\n Sublabel = 'sublabel',\n Table = 'table',\n Tag = 'tag',\n TagList = 'tag-list',\n Textarea = 'textarea',\n Tile = 'tile',\n Title = 'title',\n Toggle = 'toggle',\n Trigger = 'trigger',\n Validation = 'validation',\n}\n\nexport enum KeyboardEventKey {\n Enter = 'Enter',\n Escape = 'Escape',\n ArrowDown = 'ArrowDown',\n ArrowUp = 'ArrowUp',\n ArrowRight = 'ArrowRight',\n ArrowLeft = 'ArrowLeft',\n Home = 'Home',\n End = 'End',\n Space = ' ',\n Tab = 'Tab',\n}\n\nexport enum LanguageLocales {\n NORWEGIAN = 'nb-NO',\n NORWEGIAN_NYNORSK = 'nn-NO',\n ENGLISH = 'en-GB',\n SAMI_NORTHERN = 'se-NO',\n}\n"],"names":["IconSize","ZIndex","FormOnColor","FormSize","AnalyticsId","KeyboardEventKey","LanguageLocales"],"mappings":"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"}
|
package/designsystem-react.css
CHANGED
|
@@ -119,14 +119,14 @@
|
|
|
119
119
|
--core-color-kiwi-700: #0ca161;
|
|
120
120
|
--core-color-kiwi-800: #099150;
|
|
121
121
|
--core-color-kiwi-900: #078141;
|
|
122
|
-
--core-color-plum-50: #
|
|
123
|
-
--core-color-plum-100: #
|
|
124
|
-
--core-color-plum-200: #
|
|
125
|
-
--core-color-plum-300: #
|
|
126
|
-
--core-color-plum-400: #
|
|
127
|
-
--core-color-plum-500: #
|
|
128
|
-
--core-color-plum-600: #
|
|
129
|
-
--core-color-plum-700: #
|
|
122
|
+
--core-color-plum-50: #f4ecfe;
|
|
123
|
+
--core-color-plum-100: #e5d5fb;
|
|
124
|
+
--core-color-plum-200: #cfb1f6;
|
|
125
|
+
--core-color-plum-300: #b388ec;
|
|
126
|
+
--core-color-plum-400: #9862df;
|
|
127
|
+
--core-color-plum-500: #7c3fcb;
|
|
128
|
+
--core-color-plum-600: #6c36b3;
|
|
129
|
+
--core-color-plum-700: #5c27a1;
|
|
130
130
|
--core-color-plum-800: #4c1b8c;
|
|
131
131
|
--core-color-plum-900: #3c1471;
|
|
132
132
|
--color-destructive-background-emphasized: #f7e1d2;
|
|
@@ -178,4 +178,4 @@
|
|
|
178
178
|
/* In a few cases where coloured text is required to stress the semantics of an error notification text */
|
|
179
179
|
--color-notification-text-error: #a31f0e;
|
|
180
180
|
--color-notification-text-success: #078141;
|
|
181
|
-
}
|
|
181
|
+
}
|
package/package.json
CHANGED
|
File without changes
|
package/scss/supernova/index.css
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
/* This file was generated by Supernova and should not be changed manually */
|
|
2
|
-
@import
|
|
3
|
-
@import
|
|
2
|
+
@import "./colors.css";
|
|
3
|
+
@import "./typography.css";
|
|
@@ -119,14 +119,14 @@
|
|
|
119
119
|
--core-color-kiwi-700: #0ca161;
|
|
120
120
|
--core-color-kiwi-800: #099150;
|
|
121
121
|
--core-color-kiwi-900: #078141;
|
|
122
|
-
--core-color-plum-50: #
|
|
123
|
-
--core-color-plum-100: #
|
|
124
|
-
--core-color-plum-200: #
|
|
125
|
-
--core-color-plum-300: #
|
|
126
|
-
--core-color-plum-400: #
|
|
127
|
-
--core-color-plum-500: #
|
|
128
|
-
--core-color-plum-600: #
|
|
129
|
-
--core-color-plum-700: #
|
|
122
|
+
--core-color-plum-50: #f4ecfe;
|
|
123
|
+
--core-color-plum-100: #e5d5fb;
|
|
124
|
+
--core-color-plum-200: #cfb1f6;
|
|
125
|
+
--core-color-plum-300: #b388ec;
|
|
126
|
+
--core-color-plum-400: #9862df;
|
|
127
|
+
--core-color-plum-500: #7c3fcb;
|
|
128
|
+
--core-color-plum-600: #6c36b3;
|
|
129
|
+
--core-color-plum-700: #5c27a1;
|
|
130
130
|
--core-color-plum-800: #4c1b8c;
|
|
131
131
|
--core-color-plum-900: #3c1471;
|
|
132
132
|
--color-destructive-background-emphasized: #f7e1d2;
|
|
@@ -178,4 +178,4 @@
|
|
|
178
178
|
/* In a few cases where coloured text is required to stress the semantics of an error notification text */
|
|
179
179
|
--color-notification-text-error: #a31f0e;
|
|
180
180
|
--color-notification-text-success: #078141;
|
|
181
|
-
}
|
|
181
|
+
}
|
package/utils/scroll.js
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
const disableBodyScroll = () => {
|
|
2
|
+
document.body.style.overflow = "hidden";
|
|
3
|
+
};
|
|
4
|
+
const enableBodyScroll = () => {
|
|
5
|
+
document.body.style.removeProperty("overflow");
|
|
6
|
+
};
|
|
7
|
+
export {
|
|
8
|
+
disableBodyScroll,
|
|
9
|
+
enableBodyScroll
|
|
10
|
+
};
|
|
11
|
+
//# sourceMappingURL=scroll.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scroll.js","sources":["../../src/utils/scroll.ts"],"sourcesContent":["export const disableBodyScroll = (): void => {\n document.body.style.overflow = 'hidden';\n};\n\nexport const enableBodyScroll = (): void => {\n document.body.style.removeProperty('overflow');\n};\n"],"names":[],"mappings":"AAAO,MAAM,oBAAoB,MAAY;AAClC,WAAA,KAAK,MAAM,WAAW;AACjC;AAEO,MAAM,mBAAmB,MAAY;AACjC,WAAA,KAAK,MAAM,eAAe,UAAU;AAC/C;"}
|