@onewelcome/react-lib-components 0.1.10-alpha → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +13 -11
- package/dist/Tiles/Tile.d.ts +3 -3
- package/dist/Typography/Typography.d.ts +1 -2
- package/dist/_BaseStyling_/BaseStyling.d.ts +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/react-lib-components.cjs.development.js +129 -99
- package/dist/react-lib-components.cjs.development.js.map +1 -1
- package/dist/react-lib-components.cjs.production.min.js +1 -1
- package/dist/react-lib-components.cjs.production.min.js.map +1 -1
- package/dist/react-lib-components.esm.js +129 -100
- package/dist/react-lib-components.esm.js.map +1 -1
- package/package.json +8 -8
- package/src/ContextMenu/ContextMenu.module.scss +2 -5
- package/src/ContextMenu/ContextMenu.tsx +1 -1
- package/src/DataGrid/DataGridActions/DataGridColumnsToggle.module.scss +1 -0
- package/src/Form/Input/Input.module.scss +15 -2
- package/src/Form/Select/Select.module.scss +25 -18
- package/src/Form/Select/Select.tsx +1 -1
- package/src/Form/Textarea/Textarea.module.scss +8 -7
- package/src/Form/Wrapper/InputWrapper/InputWrapper.tsx +2 -1
- package/src/Form/Wrapper/TextareaWrapper/TextareaWrapper.module.scss +4 -1
- package/src/Form/Wrapper/TextareaWrapper/TextareaWrapper.tsx +2 -2
- package/src/Notifications/BaseModal/BaseModalActions/BaseModalActions.module.scss +1 -1
- package/src/Notifications/Snackbar/SnackbarItem/SnackbarItem.module.scss +13 -13
- package/src/Notifications/Snackbar/SnackbarItem/SnackbarItem.tsx +1 -1
- package/src/Pagination/Pagination.module.scss +4 -0
- package/src/Pagination/Pagination.tsx +1 -1
- package/src/Popover/Popover.tsx +1 -1
- package/src/Tiles/Tile.tsx +7 -2
- package/src/Typography/Typography.tsx +10 -2
- package/src/_BaseStyling_/BaseStyling.tsx +2 -0
- package/src/index.ts +1 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"react-lib-components.cjs.production.min.js","sources":["../src/_BaseStyling_/BaseStyling.tsx","../node_modules/rollup-plugin-styles/dist/runtime/inject-css.js","../src/Button/BaseButton.tsx","../src/Button/Button.tsx","../src/Icon/Icon.tsx","../src/hooks/useSpacing.ts","../src/Typography/Typography.tsx","../src/Breadcrumbs/Breadcrumbs.tsx","../src/hooks/usePosition.ts","../src/Popover/Popover.tsx","../src/hooks/useBodyClick.ts","../src/ContextMenu/ContextMenu.tsx","../src/ContextMenu/ContextMenuItem.tsx","../src/Link/Link.tsx","../src/Button/IconButton.tsx","../src/util/helper.tsx","../src/Tabs/TabButton.tsx","../src/Tabs/TabPanel.tsx","../src/TextEllipsis/TextEllipsis.tsx","../src/Tiles/Tile.tsx","../src/Tiles/Tiles.tsx","../src/Tooltip/Tooltip.tsx","../src/Skeleton/Skeleton.tsx","../src/Form/Input/Input.tsx","../src/Form/Select/Select.tsx","../src/Form/Select/Option.tsx","../src/Pagination/Pagination.tsx","../src/Form/Label/Label.tsx","../src/Notifications/BaseModal/BaseModalContext.ts","../src/Notifications/BaseModal/BaseModal.tsx","../src/Notifications/Snackbar/SnackbarProvider/SnackbarStateProvider.tsx","../src/Notifications/BaseModal/BaseModalContent/BaseModalContent.tsx","../src/Notifications/BaseModal/BaseModalActions/BaseModalActions.tsx","../src/Notifications/Dialog/DialogActions/DialogActions.tsx","../src/Notifications/Dialog/DialogTitle/DialogTitle.tsx","../src/Notifications/Dialog/Dialog.tsx","../src/Notifications/BaseModal/BaseModalHeader/BaseModalHeader.tsx","../src/Notifications/DiscardChangesModal/DiscardChangesDialog/DiscardChangesDialog.tsx","../src/Notifications/SlideInModal/SlideInModal.tsx","../src/Notifications/Snackbar/SnackbarContainer/SnackbarContainer.tsx","../src/hooks/useAnimation.ts","../src/Notifications/Snackbar/SnackbarItem/SnackbarItem.tsx","../src/hooks/useFormSelector.ts","../src/Form/FormHelperText/FormHelperText.tsx","../src/Form/FormSelectorWrapper/FormSelectorWrapper.tsx","../src/Form/Checkbox/Checkbox.tsx","../src/Form/Radio/Radio.tsx","../src/Form/Textarea/Textarea.tsx","../src/Form/Toggle/Toggle.tsx","../src/Form/FormControl/FormControl.tsx","../src/Form/FormGroup/FormGroup.tsx","../src/Form/Wrapper/Wrapper/Wrapper.tsx","../src/hooks/useWrapper.ts","../src/Form/Wrapper/InputWrapper/InputWrapper.tsx","../src/Form/Wrapper/SelectWrapper/SelectWrapper.tsx","../src/Form/Wrapper/TextareaWrapper/TextareaWrapper.tsx","../src/Form/Fieldset/Fieldset.tsx","../src/Form/Wrapper/RadioWrapper/RadioWrapper.tsx","../src/Form/Wrapper/CheckboxWrapper/CheckboxWrapper.tsx","../src/Wizard/wizardStateReducer.ts","../src/Wizard/WizardStateProvider.tsx","../src/Wizard/Wizard.tsx","../src/Wizard/BaseWizardSteps/BaseWizardSteps.tsx","../src/Wizard/WizardSteps/WizardSteps.tsx","../src/DataGrid/DataGridHeader/DataGridHeaderCell.tsx","../src/DataGrid/DataGridHeader/DataGridHeader.tsx","../src/DataGrid/DataGridActions/DataGridColumnsToggle.tsx","../src/DataGrid/DataGridActions/DataGridActions.tsx","../src/DataGrid/DataGridBody/DataGridCell.tsx","../src/DataGrid/DataGridBody/DataGridRow.tsx","../src/DataGrid/DataGridBody/DataGridBody.tsx","../src/DataGrid/DataGrid.tsx","../src/Notifications/DiscardChangesModal/DiscardChangesModal.tsx","../src/Form/Form.tsx","../src/Notifications/Snackbar/SnackbarProvider/SnackbarProvider.tsx","../src/Tabs/Tab.tsx","../src/Tabs/Tabs.tsx","../src/Wizard/WizardActions/WizardActions.tsx","../src/hooks/useRepeater.ts","../src/Notifications/Snackbar/useSnackbar.ts"],"sourcesContent":["import React, { Fragment, HTMLAttributes, ReactChild, useEffect, useState } from 'react';\n\ninterface CSSProperties {\n colorFocus?: string;\n colorPrimary?: string;\n colorSecondary?: string;\n colorTertiary?: string;\n defaultLineHeight?: string;\n buttonBorderRadius?: string;\n buttonBorderWidth?: string;\n buttonFontSize?: string;\n buttonBorderStyle?: string;\n buttonFillTextColor?: string;\n buttonFillBackgroundColor?: string;\n buttonOutlineHoverTextColor?: string;\n inputBorderColor?: string;\n inputBorderRadius?: string;\n inputBorderWidth?: string;\n inputBorderStyle?: string;\n inputBackgroundColor?: string;\n modalShadowColor?: string;\n modalBackgroundColor?: string;\n modalHeaderBackgroundColor?: string;\n snackbarTextColor?: string;\n snackbarInfoBackgroundColor?: string;\n snackbarSuccessBackgroundColor?: string;\n snackbarErrorBackgroundColor?: string;\n snackbarBorderRadius?: string;\n dataGridRowBackgroundColor?: string;\n dataGridRowHoverBackgroundColor?: string;\n tabsBackgroundColor?: string;\n tabBorderWidth?: string;\n tabBorderStyle?: string;\n tablistBorderWidth?: string;\n tablistBorderStyle?: string;\n tablistBorderColor?: string;\n tabTextColor?: string;\n default?: string;\n success?: string;\n error?: string;\n disabled?: string;\n greyedOut?: string;\n warning?: string;\n fontFamily?: string;\n fontFamilyCode?: string;\n fontSize?: string;\n fontSizeH1?: string;\n fontSizeH2?: string;\n fontSizeH3?: string;\n fontSizeH4?: string;\n fontSizeSub?: string;\n fontSizeCode?: string;\n}\n\nexport interface Props extends HTMLAttributes<HTMLDivElement> {\n children?: ReactChild;\n properties?: CSSProperties;\n}\n\nexport const BaseStyling = ({ children, properties = {} }: Props) => {\n const defaultProperties: CSSProperties = {\n colorFocus: '#0085f2',\n colorPrimary: '#9e006b',\n colorSecondary: '#003b5e',\n colorTertiary: '#ff1e4e',\n defaultLineHeight: '26px',\n buttonBorderRadius: '20px',\n buttonBorderWidth: '2px',\n buttonFontSize: '1rem',\n buttonBorderStyle: 'solid',\n buttonFillTextColor: '#fff',\n buttonFillBackgroundColor: '#fff',\n buttonOutlineHoverTextColor: '#fff',\n inputBorderColor: '#e9e9eb',\n inputBorderRadius: '8px',\n inputBorderWidth: '1px',\n inputBorderStyle: 'solid',\n inputBackgroundColor: '#fff',\n modalShadowColor: 'rgba(0, 0, 0, 0.16)',\n modalBackgroundColor: '#f5f8f8',\n modalHeaderBackgroundColor: '#fff',\n snackbarTextColor: '#fff',\n snackbarInfoBackgroundColor: '#003b5e',\n snackbarSuccessBackgroundColor: '#008a28',\n snackbarErrorBackgroundColor: '#e22a1d',\n snackbarBorderRadius: '8px',\n dataGridRowBackgroundColor: 'transparent',\n dataGridRowHoverBackgroundColor: '#f5e6f0',\n tabsBackgroundColor: '#FFF',\n tabBorderWidth: '2px',\n tabBorderStyle: 'solid',\n tablistBorderWidth: '1px',\n tablistBorderStyle: 'solid',\n tablistBorderColor: '#C3C3C7',\n tabTextColor: '#0f0f1e',\n default: '#0f0f1e',\n success: '#008a28',\n error: '#e22a1d',\n disabled: '#e9e9eb',\n greyedOut: '#6f6f76',\n warning: '#ff6105',\n fontFamily: \"'Red Hat Display', sans-serif\",\n fontFamilyCode: \"'Red Hat Mono', sans-serif\",\n fontSize: '1rem',\n fontSizeH1: '2.5rem',\n fontSizeH2: '1.625rem',\n fontSizeH3: '1.5rem',\n fontSizeH4: '1.25rem',\n fontSizeSub: '.75rem',\n fontSizeCode: '1rem',\n };\n\n /** We need a loading state, because otherwise you see the colors flash from the default to the possible overridden ones. */\n const [isLoading, setIsLoading] = useState(true);\n\n /** Set the actual CSS properties on the HTML :root object */\n const setCSSProperties = (CSSPropertiesObject: CSSProperties) => {\n for (const [key, value] of Object.entries(CSSPropertiesObject)) {\n const formattedPropertyName = key.replace(/([A-Z])/g, (val) => `-${val.toLowerCase()}`);\n document.documentElement.style.setProperty(`--${formattedPropertyName}`, value);\n }\n };\n\n /** Check if the properties prop object is filled with anything. If it is, we want to shallow merge it with the default BaseStyling. */\n useEffect(() => {\n if (Object.keys(properties).length !== 0) {\n const mergedState = { ...defaultProperties, ...properties };\n setCSSProperties(mergedState);\n } else {\n setCSSProperties(defaultProperties);\n }\n setIsLoading(false);\n }, [properties]);\n\n /** Only render if we're not loading */\n return !isLoading ? <Fragment>{children}</Fragment> : null;\n};\n","var e=[],t=[];function n(n,r){if(n&&\"undefined\"!=typeof document){var a,s=!0===r.prepend?\"prepend\":\"append\",d=!0===r.singleTag,i=\"string\"==typeof r.container?document.querySelector(r.container):document.getElementsByTagName(\"head\")[0];if(d){var u=e.indexOf(i);-1===u&&(u=e.push(i)-1,t[u]={}),a=t[u]&&t[u][s]?t[u][s]:t[u][s]=c()}else a=c();65279===n.charCodeAt(0)&&(n=n.substring(1)),a.styleSheet?a.styleSheet.cssText+=n:a.appendChild(document.createTextNode(n))}function c(){var e=document.createElement(\"style\");if(e.setAttribute(\"type\",\"text/css\"),r.attributes)for(var t=Object.keys(r.attributes),n=0;n<t.length;n++)e.setAttribute(t[n],r.attributes[t[n]]);var a=\"prepend\"===s?\"afterbegin\":\"beforeend\";return i.insertAdjacentElement(a,e),e}}export{n as default};\n","import React, { ComponentPropsWithRef } from 'react';\nimport classes from './BaseButton.module.scss';\n\nexport interface Props extends ComponentPropsWithRef<'button'> {\n type?: 'submit' | 'button' | 'reset';\n disabled?: boolean;\n color?: 'primary' | 'secondary' | 'tertiary' | 'default';\n}\n\nexport const BaseButton = React.forwardRef<HTMLButtonElement, Props>(\n ({ children, type = 'button', className, ...rest }, ref) => {\n const validTypes = ['submit', 'button', 'reset'];\n\n if (!validTypes.includes(type))\n throw new Error(\n `You have entered an invalid button type. Expected 'submit', 'button' or 'reset' got ${type}`\n );\n\n return (\n <button\n {...rest}\n ref={ref}\n type={type}\n className={`${classes.button} ${className ? className : ''}`}\n >\n {children}\n </button>\n );\n }\n);\n","import React from 'react';\nimport { BaseButton, Props as BaseButtonProps } from './BaseButton';\nimport classes from './Button.module.scss';\n\nexport interface Props extends BaseButtonProps {\n startIcon?: React.ReactNode | false;\n endIcon?: React.ReactNode | false;\n children?: React.ReactNode;\n variant?: 'text' | 'fill' | 'outline';\n}\n\nexport const Button = React.forwardRef<HTMLButtonElement, Props>(\n (\n {\n children,\n variant = 'fill',\n color = 'primary',\n startIcon = false,\n endIcon = false,\n className,\n ...rest\n },\n ref\n ) => {\n const additionalClasses = [];\n\n if (startIcon || endIcon) {\n additionalClasses.push(classes['has-icon']);\n }\n\n if (startIcon) {\n additionalClasses.push(classes['start-icon']);\n }\n\n if (endIcon) {\n additionalClasses.push(classes['end-icon']);\n }\n\n if (className) {\n additionalClasses.push(className);\n }\n\n return (\n <BaseButton\n {...rest}\n ref={ref}\n className={`${classes[color]} ${classes[variant]} ${additionalClasses.join(' ')}`}\n >\n {startIcon && <i>{startIcon} </i>}\n <span>{children}</span>\n {endIcon && <i> {endIcon}</i>}\n </BaseButton>\n );\n }\n);\n","import React, { ComponentPropsWithRef } from 'react';\nimport classes from './Icon.module.scss';\n\nexport enum Icons {\n Bell = 'bell',\n BellAlt = 'bell-alt',\n Bookmark = 'bookmark',\n BookmarkAlt = 'bookmark-alt',\n Build = 'build',\n Calendar = 'calendar',\n Change = 'change',\n Checkmark = 'checkmark',\n CheckmarkCircle = 'checkmark-circle',\n CheckmarkCircleAlt = 'checkmark-circle-alt',\n CheckmarkCircleBreakout = 'checkmark-circle-breakout',\n CheckmarkSquare = 'checkmark-square',\n ChevronUp = 'chevron-up',\n ChevronDown = 'chevron-down',\n ChevronLeft = 'chevron-left',\n ChevronRight = 'chevron-right',\n Circle = 'circle',\n Clock = 'clock',\n Copy = 'copy',\n Edit = 'edit',\n Ellipsis = 'ellipsis',\n EllipsisAlt = 'ellipsis-alt',\n Equal = 'equal',\n Error = 'error-circle',\n Eye = 'eye',\n Filter = 'filter',\n FilterAlt = 'filter-alt',\n FilterAltArrow = 'filter-alt-arrow',\n FilterAltTimes = 'filter-alt-times',\n Forbidden = 'forbidden',\n Fullscreen = 'fullscreen',\n FullscreenExit = 'fullscreen-exit',\n Gearwheel = 'gearwheel',\n Grid = 'grid',\n Hamburger = 'hamburger',\n Heart = 'heart',\n Image = 'image',\n InfoBell = 'info-bell',\n InfoCircle = 'info-circle',\n Link = 'link',\n MinusSquare = 'minus-square',\n NavigationFirst = 'navigation-first',\n NavigationLast = 'navigation-last',\n Plus = 'plus',\n Radio = 'radio',\n Refresh = 'refresh',\n Search = 'search',\n Share = 'share',\n Square = 'square',\n Star = 'star',\n StarAlt = 'star-alt',\n TableSearch = 'table-search',\n Times = 'times',\n TimesCircle = 'times-circle',\n TimesCircleAlt = 'times-circle-alt',\n TimesThin = 'times-thin',\n Trash = 'trash',\n TriangleDown = 'triangle-down',\n TriangleDownCircle = 'triangle-down-circle',\n TriangleLeft = 'triangle-left',\n TriangleRight = 'triangle-right',\n TriangleUp = 'triangle-up',\n Undo = 'undo',\n Warning = 'warning',\n}\n\ntype Tag = 'span' | 'div' | 'i';\n\nexport interface Props extends ComponentPropsWithRef<'div'> {\n icon: Icons;\n color?: string;\n size?: string;\n tag?: Tag;\n}\n\nexport const Icon = React.forwardRef<HTMLDivElement, Props>(\n ({ icon, color, className, style, size, tag = 'span', ...rest }: Props, ref) => {\n const Component = tag;\n\n return (\n <Component\n {...rest}\n ref={ref}\n style={{ color: color, ...style, fontSize: size }}\n data-icon\n aria-hidden=\"true\"\n className={`${classes['icon']} ${classes['icon-' + icon]} ${className ? className : ''}`}\n />\n );\n }\n);\n","import { CSSProperties } from 'react';\n\nexport type SpacingMultiplier = 0 | 0.5 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8;\ntype SpacingMultiplierStringOrNumber = `${SpacingMultiplier}` | SpacingMultiplier;\ntype MultiValueSpacingMultiplier =\n | `${SpacingMultiplier} ${SpacingMultiplier} ${SpacingMultiplier} ${SpacingMultiplier}`\n | `${SpacingMultiplier} ${SpacingMultiplier} ${SpacingMultiplier}`\n | `${SpacingMultiplier} ${SpacingMultiplier}`\n | SpacingMultiplierStringOrNumber;\n\nexport interface Spacing {\n padding?: MultiValueSpacingMultiplier;\n paddingTop?: SpacingMultiplierStringOrNumber;\n paddingBottom?: SpacingMultiplierStringOrNumber;\n paddingLeft?: SpacingMultiplierStringOrNumber;\n paddingRight?: SpacingMultiplierStringOrNumber;\n margin?: MultiValueSpacingMultiplier;\n marginTop?: SpacingMultiplierStringOrNumber;\n marginBottom?: SpacingMultiplierStringOrNumber;\n marginLeft?: SpacingMultiplierStringOrNumber;\n marginRight?: SpacingMultiplierStringOrNumber;\n}\n\nconst defaultFactor = 0.25;\nconst defaultUnit = 'rem';\nconst spacingNumberRegex = /(\\d+\\.?\\d*)+/g;\n\nexport const useSpacing = (\n spacingProps?: Spacing,\n style?: CSSProperties\n): CSSProperties | undefined => {\n if (spacingProps) {\n return Object.entries(spacingProps).reduce<CSSProperties>((prev, [spacing, multiplier]) => {\n const matches = String(multiplier).matchAll(spacingNumberRegex);\n const cssSpacingValue = Array.from(matches)\n .map(([multiplierValue]) => `${Number(multiplierValue) * defaultFactor}${defaultUnit}`)\n .join(' ');\n return { ...prev, [spacing]: cssSpacingValue };\n }, style ?? {});\n }\n return style;\n};\n","import React, { ComponentPropsWithRef, ReactNode } from 'react';\nimport classes from './Typography.module.scss';\nimport { Spacing, useSpacing } from '../hooks/useSpacing';\n\nconst validVariants = ['h1', 'h2', 'h3', 'h4', 'body', 'body-bold', 'sub-text', 'code'] as const;\nexport type Variant = typeof validVariants[number];\n\ntype Tags =\n | 'h1'\n | 'h2'\n | 'h3'\n | 'h4'\n | 'p'\n | 'div'\n | 'code'\n | 'span'\n | 'sup'\n | 'sub'\n | 'strong'\n | 'em'\n | 'small'\n | 'mark'\n | 'del'\n | 'ins'\n | 'blockquote';\n\n/** I couldn't find anything on the internet that indicated that ComponentPropsWithRef can take multiple tags. Since the TagName can be many different things I have to use any here. Using a mix of tags (like the Tags type) will throw an error. */\nexport interface Props extends ComponentPropsWithRef<any> {\n children: ReactNode;\n variant: Variant;\n tag?: Tags;\n spacing?: Spacing;\n}\n\nexport const Typography = React.forwardRef<any, Props>(\n ({ children, variant, tag, style, spacing, className = '', ...rest }: Props, ref) => {\n if (!validVariants.includes(variant)) {\n throw new Error(\n `You entered an invalid variant. You can choose from: ${validVariants}, you entered: ${variant}`\n );\n }\n\n const styleWithSpacing = useSpacing(spacing, style);\n\n if (!tag) {\n switch (variant) {\n case 'h1':\n case 'h2':\n case 'h3':\n case 'h4':\n case 'code':\n tag = variant;\n break;\n case 'body':\n tag = 'p';\n break;\n case 'body-bold':\n tag = 'p';\n break;\n case 'sub-text':\n tag = 'span';\n break;\n default:\n tag = 'div';\n break;\n }\n }\n\n let TagName = tag;\n\n return (\n <TagName\n {...rest}\n ref={ref}\n style={styleWithSpacing}\n className={`${classes['typography_style_' + variant]} ${className}`}\n >\n {children}\n </TagName>\n );\n }\n);\n","import React, { ComponentPropsWithRef, Fragment, ReactElement } from 'react';\nimport { Icon, Icons } from '../Icon/Icon';\nimport { Link, Props as LinkProps } from '../Link/Link';\nimport { Typography } from '../Typography/Typography';\nimport classes from './Breadcrumbs.module.scss';\n\ntype ChildrenType = ReactElement<LinkProps, typeof Link>;\n\nexport interface Props extends ComponentPropsWithRef<'div'> {\n children: ChildrenType | ChildrenType[];\n 'aria-label': string;\n}\n\nexport const Breadcrumbs = React.forwardRef<HTMLDivElement, Props>(\n ({ children, 'aria-label': ariaLabel, className = '', ...rest }: Props, ref) => {\n const items = React.Children.map(children, (child, index) => {\n const isLastElement = Array.isArray(children) ? index === children.length - 1 : true;\n if (isLastElement) {\n return (\n <Typography\n key={child.key}\n variant=\"body\"\n tag=\"span\"\n className={classes['last']}\n aria-current=\"page\"\n >\n {child.props.children}\n </Typography>\n );\n } else {\n return (\n <Fragment key={child.key}>\n {React.cloneElement(child)}\n <Icon icon={Icons.ChevronRight} className={classes['icon']} />\n </Fragment>\n );\n }\n });\n return (\n <nav\n {...rest}\n ref={ref}\n aria-label={ariaLabel}\n className={`${classes['breadcrumbs']} ${className}`}\n >\n {items}\n </nav>\n );\n }\n);\n","import React, { useState } from 'react';\n\nexport interface ConfigObject {\n relativeElement: RefElement;\n elementToBePositioned: RefElement;\n transformOrigin?: Placement;\n placement?: Placement;\n offset?: Offset;\n}\n\nexport type HorizontalPlacment = 'left' | 'center' | 'centerh' | 'right';\nexport type VerticalPlacement = 'top' | 'center' | 'centerv' | 'bottom';\n\ntype Axis = 'vertical' | 'horizontal';\ntype RefElement = React.RefObject<HTMLOrSVGElement> | undefined;\n\ninterface DomRectObject {\n top: number;\n right: number;\n bottom: number;\n left: number;\n center: number;\n centerh: number;\n centerv: number;\n width: number;\n height: number;\n x: number;\n y: number;\n}\n\nexport interface Placement {\n horizontal: HorizontalPlacment;\n vertical: VerticalPlacement;\n}\n\nexport interface Offset {\n top: number;\n right: number;\n bottom: number;\n left: number;\n}\n\nexport interface Position {\n top: PositionType;\n right: PositionType;\n bottom: PositionType;\n left: PositionType;\n}\n\ninterface Dimensions {\n height: number;\n width: number;\n}\n\ntype PositionType = number | 'initial';\n\nconst defaultConfigObject: ConfigObject = {\n relativeElement: undefined,\n elementToBePositioned: undefined,\n transformOrigin: {\n horizontal: 'left',\n vertical: 'top',\n },\n placement: {\n horizontal: 'left',\n vertical: 'top',\n },\n offset: {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n },\n};\n\nexport const usePosition = (providedConfigObject: ConfigObject = defaultConfigObject) => {\n const configObject = { ...defaultConfigObject, ...providedConfigObject };\n\n if (configObject.transformOrigin === undefined) {\n configObject.transformOrigin = defaultConfigObject.transformOrigin;\n }\n\n if (configObject.placement === undefined) {\n configObject.placement = defaultConfigObject.placement;\n }\n\n if (configObject.offset === undefined) {\n configObject.offset = defaultConfigObject.offset;\n }\n\n const [position, setPosition] = useState<Position>({\n left: 0,\n top: 0,\n right: 'initial',\n bottom: 'initial',\n });\n\n const _fixPossibleViewportOverflow = (\n value: number,\n transformOrigin: Placement,\n requestedReturnValue: Axis,\n elDimensions: Dimensions\n ) => {\n let returnValue = value;\n\n if (\n (transformOrigin[requestedReturnValue] === 'left' && returnValue < 0) ||\n (transformOrigin[requestedReturnValue] === 'top' && returnValue < 0) ||\n (transformOrigin[requestedReturnValue] === 'center' && returnValue < 0) ||\n (transformOrigin[requestedReturnValue] === 'bottom' && returnValue < 0)\n ) {\n returnValue = 0;\n }\n\n if (\n (transformOrigin[requestedReturnValue] === 'left' &&\n returnValue > window.innerWidth - elDimensions.width) ||\n (transformOrigin[requestedReturnValue] === 'center' &&\n requestedReturnValue === 'horizontal' &&\n returnValue > window.innerWidth - elDimensions.width)\n ) {\n returnValue = window.innerWidth - elDimensions.width;\n }\n\n if (\n (transformOrigin[requestedReturnValue] === 'top' &&\n returnValue > window.innerHeight - elDimensions.height) ||\n (transformOrigin[requestedReturnValue] === 'center' &&\n requestedReturnValue === 'vertical' &&\n returnValue > window.innerHeight - elDimensions.height)\n ) {\n returnValue = window.innerHeight - elDimensions.height;\n }\n\n if (\n transformOrigin[requestedReturnValue] === 'right' &&\n returnValue > window.innerWidth - elDimensions.width\n ) {\n returnValue = window.innerWidth - elDimensions.width;\n }\n\n if (\n transformOrigin[requestedReturnValue] === 'bottom' &&\n returnValue > window.innerHeight - elDimensions.height\n ) {\n returnValue = window.innerHeight - elDimensions.height;\n }\n\n return returnValue;\n };\n\n const _applyOffsetToPlacementValue = (\n value: number,\n requestedReturnValue: Axis,\n transformOrigin: Placement\n ) => {\n let returnValue = value;\n if (\n (requestedReturnValue === 'horizontal' && configObject.offset?.left !== 0) ||\n (requestedReturnValue === 'horizontal' && configObject.offset?.right !== 0)\n ) {\n if (\n transformOrigin[requestedReturnValue] === 'left' ||\n transformOrigin[requestedReturnValue] === 'center'\n ) {\n returnValue += configObject.offset?.left!;\n returnValue -= configObject.offset?.right!;\n }\n\n if (transformOrigin[requestedReturnValue] === 'right') {\n returnValue -= configObject.offset?.left!;\n returnValue += configObject.offset?.right!;\n }\n }\n\n if (\n (requestedReturnValue === 'vertical' && configObject.offset?.top !== 0) ||\n (requestedReturnValue === 'vertical' && configObject.offset?.bottom !== 0)\n ) {\n if (\n transformOrigin[requestedReturnValue] === 'top' ||\n transformOrigin[requestedReturnValue] === 'center'\n ) {\n returnValue += configObject.offset?.top!;\n returnValue -= configObject.offset?.bottom!;\n }\n\n if (transformOrigin[requestedReturnValue] === 'bottom') {\n returnValue -= configObject.offset?.top!;\n returnValue += configObject.offset?.bottom!;\n }\n }\n\n return returnValue;\n };\n\n const _calculateInitialPlacementValue = (\n transformOrigin: Placement,\n requestedReturnValue: Axis,\n relEl: DomRectObject,\n placementOriginDefinition: HorizontalPlacment | VerticalPlacement,\n elDimensions: Dimensions\n ) => {\n let value = 0;\n\n if (\n transformOrigin[requestedReturnValue] === 'left' ||\n transformOrigin[requestedReturnValue] === 'top'\n ) {\n value = relEl[placementOriginDefinition];\n } else if (transformOrigin[requestedReturnValue] === 'center') {\n value =\n relEl[placementOriginDefinition] -\n elDimensions[requestedReturnValue === 'horizontal' ? 'width' : 'height'] / 2;\n } else if (\n transformOrigin[requestedReturnValue] === 'right' ||\n transformOrigin[requestedReturnValue] === 'bottom'\n ) {\n value =\n window[requestedReturnValue === 'horizontal' ? 'innerWidth' : 'innerHeight'] -\n relEl[placementOriginDefinition];\n }\n\n return value;\n };\n\n /**\n *\n * @param requestedReturnValue whether the requested return value is for the horizontal or vertical axis\n * @returns either the horizontally centered placement definition (centerh) or the vertically centered one (centerv)\n */\n const _determineCenteredPlacementOrigin = (requestedReturnValue: Axis) => {\n if (requestedReturnValue === 'horizontal') {\n return 'centerh';\n } else if (requestedReturnValue === 'vertical') {\n return 'centerv';\n }\n throw new Error(\n `the requested return value isn\\'t \"vertical\" or \"horizontal\" ${requestedReturnValue} was given.`\n );\n };\n\n const _calculatePlacementValue = (\n transformOrigin: Placement,\n placement: HorizontalPlacment | VerticalPlacement,\n requestedReturnValue: Axis,\n relEl: DomRectObject,\n elDimensions: Dimensions\n ): number => {\n const placementOriginDefinition =\n placement === 'center' ? _determineCenteredPlacementOrigin(requestedReturnValue) : placement;\n\n const value = _calculateInitialPlacementValue(\n transformOrigin,\n requestedReturnValue,\n relEl,\n placementOriginDefinition,\n elDimensions\n );\n\n const valueWithOffset = _applyOffsetToPlacementValue(\n value,\n requestedReturnValue,\n transformOrigin\n );\n\n const valueCorrectionForViewportOverflow = _fixPossibleViewportOverflow(\n valueWithOffset,\n transformOrigin,\n requestedReturnValue,\n elDimensions\n );\n\n return valueCorrectionForViewportOverflow;\n };\n\n const _calculatePlacement = (relEl: DomRectObject, elDimensions: Dimensions, axis: Axis) => {\n const placementValue = _calculatePlacementValue(\n configObject.transformOrigin!,\n configObject.placement![axis]!,\n axis,\n relEl,\n elDimensions\n );\n\n let direction = 'left';\n let oppositeDirection = 'right';\n\n if (axis === 'horizontal' && configObject.transformOrigin?.horizontal === 'right') {\n direction = 'right';\n oppositeDirection = 'left';\n } else if (axis === 'horizontal') {\n direction = 'left';\n oppositeDirection = 'right';\n }\n\n if (axis === 'vertical' && configObject.transformOrigin?.vertical === 'bottom') {\n direction = 'bottom';\n oppositeDirection = 'top';\n } else if (axis === 'vertical') {\n direction = 'top';\n oppositeDirection = 'bottom';\n }\n\n setPosition((prevState) => ({\n ...prevState,\n [direction]: placementValue,\n [oppositeDirection]: 'initial',\n }));\n };\n\n const calculatePosition = () => {\n if (!configObject.relativeElement?.current) return;\n const relativeElRect = (configObject.relativeElement!\n .current as HTMLElement)!.getBoundingClientRect();\n const elementToBePositionedDimensions: Dimensions = {\n height: (configObject.elementToBePositioned!.current as HTMLElement).offsetHeight,\n width: (configObject.elementToBePositioned!.current as HTMLElement).offsetWidth,\n };\n\n /** We want to add a center (horizontal and vertical) property to the DOMRect object. Since it's a special object we can't modify so we clone it and add it. */\n const clonedRelEl = {\n top: relativeElRect.top,\n right: relativeElRect.right,\n bottom: relativeElRect.bottom,\n center: 0,\n centerv: relativeElRect.top + relativeElRect.height / 2,\n centerh: relativeElRect.left + relativeElRect.width / 2,\n left: relativeElRect.left,\n width: relativeElRect.width,\n height: relativeElRect.height,\n x: relativeElRect.x,\n y: relativeElRect.y,\n };\n\n _calculatePlacement(clonedRelEl, elementToBePositionedDimensions, 'horizontal');\n _calculatePlacement(clonedRelEl, elementToBePositionedDimensions, 'vertical');\n };\n\n return {\n top: position.top,\n bottom: position.bottom,\n left: position.left,\n right: position.right,\n calculatePosition,\n };\n};\n","import React, { ComponentPropsWithRef, ReactNode, RefObject, useEffect, useRef } from 'react';\nimport { usePosition, Offset, Placement } from '../hooks/usePosition';\nimport classes from './Popover.module.scss';\n\nexport interface Props extends ComponentPropsWithRef<'div'> {\n children?: ReactNode;\n show?: boolean;\n anchorEl?: RefObject<HTMLOrSVGElement>;\n placement?: Placement;\n offset?: Offset;\n transformOrigin?: Placement;\n}\n\nexport const Popover = React.forwardRef<HTMLDivElement, Props>(\n ({ children, className, show, placement, offset, transformOrigin, anchorEl, ...rest }, ref) => {\n const elToBePositioned = useRef<HTMLDivElement>(null);\n\n if (show === undefined) {\n throw new Error('Please make sure to define the \"show\" property on your Popover component');\n }\n\n const { top, left, right, bottom, calculatePosition } = usePosition({\n elementToBePositioned: elToBePositioned,\n relativeElement: anchorEl,\n offset: offset,\n placement: placement,\n transformOrigin: transformOrigin,\n });\n\n useEffect(() => {\n calculatePosition();\n }, [show]);\n\n return (\n <div ref={ref} {...rest}>\n <div\n ref={elToBePositioned}\n className={`${classes.popover} ${className ?? ''} ${show ? classes.show : ''}`}\n style={{ top: top, left: left, right: right, bottom: bottom }}\n >\n {children}\n </div>\n </div>\n );\n }\n);\n","import { useEffect } from 'react';\n\nexport const useBodyClick = (\n checkFunction: (event: MouseEvent) => boolean,\n callbackFunction: (...args: unknown[]) => unknown,\n dependingStateVariable: React.ComponentState | React.ComponentState[]\n) => {\n function bodyClickListener(event: MouseEvent) {\n if (checkFunction(event)) {\n callbackFunction();\n }\n }\n useEffect(() => {\n window.addEventListener('click', bodyClickListener);\n\n return () => {\n window.removeEventListener('click', bodyClickListener);\n };\n }, [dependingStateVariable]);\n};\n","import React, {\n ComponentPropsWithRef,\n ReactElement,\n ReactNode,\n useEffect,\n useRef,\n useState,\n} from 'react';\nimport { Props as ButtonProps } from '../Button/Button';\nimport { Props as IconButtonProps } from '../Button/IconButton';\nimport { Popover } from '../Popover/Popover';\nimport { Placement, Offset } from '../hooks/usePosition';\nimport classes from './ContextMenu.module.scss';\nimport { useBodyClick } from '../hooks/useBodyClick';\nimport { createPortal } from 'react-dom';\n\nexport interface Props extends ComponentPropsWithRef<'div'> {\n trigger: ReactElement<ButtonProps> | ReactElement<IconButtonProps>;\n children: ReactNode;\n placement?: Placement;\n transformOrigin?: Placement;\n offset?: Offset;\n id: string;\n show?: boolean;\n domRoot?: HTMLElement;\n onShow?: () => void;\n onClose?: () => void;\n}\n\nexport const ContextMenu = React.forwardRef<HTMLDivElement, Props>(\n (\n {\n trigger,\n children,\n id,\n show = false,\n onShow,\n onClose,\n placement = { horizontal: 'right', vertical: 'top' },\n offset = { top: 0, bottom: 0, left: 0, right: 0 },\n transformOrigin = { horizontal: 'left', vertical: 'top' },\n domRoot = document.body,\n ...rest\n }: Props,\n ref\n ) => {\n const anchorEl = useRef<HTMLButtonElement>(null);\n const [showContextMenu, setShowContextMenu] = useState(show);\n const [selectedContextMenuItem, setSelectedContextMenuItem] = useState(-1);\n const [focusedContextMenuItem, setFocusedContextMenuItem] = useState(-1);\n const [shouldClick, setShouldClick] =\n useState(\n false\n ); /** We need this, because whenever we use the arrow keys to select the contextmenu item, and we focus the currently selected item it fires the \"click\" listener in ContextMenuItem component. Instead, we only want this to fire if we press \"enter\" or \"spacebar\" so we set this to true whenever that is the case, and back to false when it has been executed. */\n const [childrenCount] = useState(React.Children.count(children));\n\n if (!id) {\n throw new Error('You need to provide an ID to the context menu');\n }\n\n const onArrowNavigation = (event: React.KeyboardEvent) => {\n if (focusedContextMenuItem === -1 && selectedContextMenuItem !== -1) {\n setFocusedContextMenuItem(selectedContextMenuItem);\n }\n\n const codesToPrevenDefault = [\n 'ArrowDown',\n 'ArrowUp',\n 'ArrowLeft',\n 'ArrowRight',\n 'Enter',\n 'Space',\n 'Escape',\n 'End',\n 'Home',\n ];\n\n if (codesToPrevenDefault.includes(event.code)) {\n event.preventDefault();\n }\n\n switch (event.code) {\n case 'ArrowDown':\n if (!showContextMenu) {\n setShowContextMenu(true);\n return;\n }\n setFocusedContextMenuItem((prevState) => {\n return prevState + 1 > childrenCount - 1 ? 0 : prevState + 1;\n });\n return;\n case 'ArrowUp':\n setFocusedContextMenuItem((prevState) => {\n return prevState - 1 < 0 ? childrenCount - 1 : prevState - 1;\n });\n return;\n case 'Enter':\n case 'Space':\n if (!showContextMenu) {\n setShowContextMenu(true);\n return;\n }\n\n setShouldClick(true);\n setSelectedContextMenuItem(focusedContextMenuItem);\n setShowContextMenu(false);\n return;\n case 'Tab':\n case 'Escape':\n setShowContextMenu(false);\n return;\n case 'End':\n setFocusedContextMenuItem(childrenCount - 1);\n return;\n case 'Home':\n setFocusedContextMenuItem(0);\n return;\n }\n };\n\n useBodyClick(\n (event) => {\n return showContextMenu && anchorEl.current !== event.target;\n },\n () => {\n setShowContextMenu(false);\n },\n showContextMenu\n );\n\n useEffect(() => {\n if (showContextMenu === true) {\n onShow && onShow();\n } else {\n onClose && onClose();\n setFocusedContextMenuItem(-1);\n anchorEl.current && anchorEl.current.focus();\n }\n }, [showContextMenu]);\n\n const renderTrigger = () =>\n React.cloneElement(trigger, {\n id: id,\n 'aria-haspopup': 'true',\n 'aria-controls': `${id}-menu`,\n 'aria-expanded': showContextMenu,\n onClick: () => setShowContextMenu(!showContextMenu),\n tabIndex: 0,\n ref: anchorEl,\n });\n\n const renderChildren = () => {\n return React.Children.map(children, (child, index) => {\n return React.cloneElement(child as ReactElement, {\n onFocusChange: (childIndex: number) => setFocusedContextMenuItem(childIndex),\n onSelectedChange: (childIndex: number) => {\n setSelectedContextMenuItem(childIndex);\n setShouldClick(false);\n },\n childIndex: index,\n hasFocus: focusedContextMenuItem === index,\n isSelected: selectedContextMenuItem === index,\n contextMenuOpened: showContextMenu,\n shouldClick: shouldClick,\n });\n });\n };\n\n return (\n <div {...rest} ref={ref} onKeyDown={onArrowNavigation} className={classes['context-menu']}>\n {renderTrigger()}\n {createPortal(\n <Popover\n placement={placement}\n transformOrigin={transformOrigin}\n offset={offset}\n anchorEl={anchorEl}\n show={showContextMenu}\n >\n <ul className={classes.menu} id={`${id}-menu`} aria-describedby={id} role=\"menu\">\n {renderChildren()}\n </ul>\n </Popover>,\n domRoot\n )}\n </div>\n );\n }\n);\n","import React, { ComponentPropsWithRef, createRef, RefObject, useEffect } from 'react';\nimport classes from './ContextMenuItem.module.scss';\n\nexport interface Props extends Omit<ComponentPropsWithRef<'button'>, 'onClick'> {\n children?: string;\n hasFocus?: boolean;\n isSelected?: boolean;\n childIndex?: number;\n shouldClick?: boolean;\n contextMenuOpened?: boolean;\n onClick?: (event: React.MouseEvent<HTMLButtonElement>) => void;\n onFocusChange?: (childIndex: number) => void;\n onSelectedChange?: (childIndex: number) => void;\n}\n\nexport const ContextMenuItem = React.forwardRef<HTMLButtonElement, Props>(\n (\n {\n children,\n onClick,\n onFocusChange,\n onSelectedChange,\n hasFocus,\n isSelected,\n childIndex,\n contextMenuOpened,\n shouldClick,\n ...rest\n }: Props,\n ref\n ) => {\n let innerButtonRef = (ref as RefObject<HTMLButtonElement>) || createRef<HTMLButtonElement>();\n\n useEffect(() => {\n if (isSelected && innerButtonRef.current && shouldClick) {\n innerButtonRef.current.click();\n }\n }, [isSelected, shouldClick]);\n\n useEffect(() => {\n if (innerButtonRef.current && hasFocus && contextMenuOpened) {\n onFocusChange && childIndex && onFocusChange(childIndex);\n innerButtonRef.current.focus();\n }\n }, [hasFocus, innerButtonRef, contextMenuOpened]);\n\n return (\n <li role=\"menuitem\" className={classes['context-menu-item']}>\n <button\n {...rest}\n ref={innerButtonRef}\n data-focus={hasFocus}\n onClick={(event) => {\n onClick && onClick(event);\n onSelectedChange && childIndex && onSelectedChange(childIndex);\n }}\n >\n {children}\n </button>\n </li>\n );\n }\n);\n","import React, {\n ComponentPropsWithRef,\n ForwardRefExoticComponent,\n ReactNode,\n RefAttributes,\n} from 'react';\nimport classes from './Link.module.scss';\nimport { LinkProps } from './types';\n\nexport type AnchorType = 'external' | 'internal' | 'download';\n\nexport interface Props extends ComponentPropsWithRef<'a'> {\n children?: ReactNode;\n color?: 'primary' | 'secondary' | 'tertiary';\n display?: 'link' | 'button';\n buttonVariant?: 'outline' | 'text' | 'fill';\n type?: AnchorType;\n to: string;\n disabled?: boolean;\n component?: ForwardRefExoticComponent<LinkProps & RefAttributes<HTMLAnchorElement>>;\n}\n\nexport const Link = React.forwardRef<HTMLAnchorElement, Props>(\n (\n {\n children,\n className,\n disabled = false,\n to,\n color = 'primary',\n type = 'internal',\n display = 'link',\n buttonVariant = 'fill',\n component,\n ...rest\n }: Props,\n ref\n ) => {\n const determineTarget = () => {\n if (rest.target) {\n return rest.target;\n }\n\n if (type === 'external') {\n return '_blank';\n }\n\n return '';\n };\n\n const classNames = [classes[color]];\n display === 'link' && classNames.push(classes['link']);\n display === 'button' && classNames.push(classes['button'], classes[buttonVariant]);\n disabled && classNames.push(classes['disabled']);\n className && classNames.push(className);\n\n if (component) {\n return React.createElement(component, {\n ...rest,\n ref: ref,\n to: to,\n className: classNames.join(' '),\n 'aria-disabled': disabled,\n style: {\n ...rest.style,\n },\n children: children,\n });\n }\n\n return (\n <a\n {...rest}\n ref={ref}\n download={type === 'download'}\n rel={type === 'external' ? 'noopener noreferer' : undefined}\n href={!disabled ? to : undefined}\n className={classNames.join(' ')}\n aria-disabled={disabled}\n target={determineTarget()}\n style={{\n ...rest.style,\n }}\n >\n {children}\n </a>\n );\n }\n);\n","import React, { Fragment } from 'react';\nimport { BaseButton, Props as BaseButtonProps } from './BaseButton';\nimport classes from './IconButton.module.scss';\nimport readyclasses from '../readyclasses.module.scss';\n\nexport interface Props extends BaseButtonProps {\n children?: React.ReactNode;\n iconSize?: 's' | 'm' | 'l';\n variant?: 'text' | 'fill' | 'outline';\n className?: string;\n title?: string;\n}\n\nexport const IconButton = React.forwardRef<HTMLButtonElement, Props>(\n (\n { children, color = 'primary', variant = 'text', iconSize = 'm', title, className, ...rest },\n ref\n ) => {\n if (!title) {\n console.error(\"Please make sure to specify a 'title' prop to your IconButton component! \");\n }\n\n const iconButtonClasses = [\n classes['icon-button'],\n classes[variant],\n classes[color],\n classes['button-' + iconSize],\n ];\n\n if (className) {\n iconButtonClasses.push(className);\n }\n\n return (\n <BaseButton {...rest} ref={ref} className={iconButtonClasses.join(' ')}>\n <Fragment>\n {children}\n <span className={readyclasses['sr-only']}>{title}</span>\n </Fragment>\n </BaseButton>\n );\n }\n);\n","type KeyValuePair = { [key: string]: unknown };\n\nexport const generateID = (length = 15, stringToWeaveIn?: string) => {\n /** We will make sure to mesh the generate id and name property together to basically create a unique ID */\n let hashCharacters = [\n '1',\n '2',\n '3',\n '4',\n '5',\n '6',\n '7',\n '8',\n '9',\n '0',\n 'A',\n 'B',\n 'C',\n 'D',\n 'E',\n 'F',\n 'G',\n 'H',\n 'I',\n 'J',\n 'K',\n 'L',\n 'M',\n 'N',\n 'O',\n 'P',\n 'Q',\n 'R',\n 'S',\n 'T',\n 'U',\n 'V',\n 'W',\n 'X',\n 'Y',\n 'Z',\n 'a',\n 'b',\n 'c',\n 'd',\n 'e',\n 'f',\n 'g',\n 'h',\n 'i',\n 'j',\n 'k',\n 'l',\n 'm',\n 'n',\n 'o',\n 'p',\n 'q',\n 'r',\n 's',\n 't',\n 'u',\n 'v',\n 'w',\n 'x',\n 'y',\n 'z',\n ];\n\n let id = '';\n\n /** Generate an id of x characters in length */\n for (let i = 0; i < length && id.length < length; i++) {\n let stringCharacter =\n stringToWeaveIn && stringToWeaveIn[i] !== undefined && !/\\s/.test(stringToWeaveIn[i])\n ? stringToWeaveIn[i]\n : '';\n id = id + stringCharacter + hashCharacters[Math.floor(Math.random() * hashCharacters.length)];\n }\n\n return id.slice(0, length);\n};\n\nexport const filterProps = (props: any, regexPattern: RegExp, returnFiltered: boolean = true) => {\n if (returnFiltered) {\n return Object.keys(props).reduce((acc: KeyValuePair, key) => {\n if (regexPattern.test(key)) {\n acc[key] = props[key];\n }\n\n return acc;\n }, {});\n } else {\n return Object.entries(props)\n .filter(([key]) => !regexPattern.test(key))\n .reduce(\n (prevObj, currKeyValPair) => ({ ...prevObj, [currKeyValPair[0]]: currKeyValPair[1] }),\n {}\n );\n }\n};\n","import React, { ComponentPropsWithRef, useEffect } from 'react';\nimport classes from './TabButton.module.scss';\n\nexport interface Props extends ComponentPropsWithRef<'button'> {\n children?: string;\n selected?: boolean;\n focussed?: boolean;\n tabId?: string;\n tabPanelId?: string;\n onTabButtonClick?: () => void;\n}\n\nexport const TabButton = React.forwardRef<HTMLButtonElement, Props>(\n (\n {\n children,\n selected = false,\n focussed = false,\n tabId,\n tabPanelId,\n className,\n onTabButtonClick,\n ...rest\n }: Props,\n ref\n ) => {\n useEffect(() => {\n if (focussed && ref) {\n (ref as React.MutableRefObject<HTMLButtonElement>).current.focus();\n }\n }, [focussed]);\n\n const classNames = [classes['tabbutton']];\n\n selected && classNames.push(classes['selected']);\n focussed && !selected && classNames.push(classes['focussed']);\n className && classNames.push(className);\n\n return (\n <button\n {...rest}\n aria-selected={selected}\n key={tabId}\n className={classNames.join(' ')}\n ref={ref}\n role=\"tab\"\n tabIndex={selected ? 0 : -1}\n type=\"button\"\n aria-controls={tabPanelId}\n id={tabId}\n onClick={onTabButtonClick}\n >\n <span aria-hidden=\"true\">{children}</span>\n {children}\n </button>\n );\n }\n);\n","import React, { ComponentPropsWithRef } from 'react';\nimport classes from './TabPanel.module.scss';\n\nexport interface Props extends ComponentPropsWithRef<'div'> {\n children: React.ReactNode;\n tabId: string;\n tabPanelId: string;\n selected?: boolean;\n}\n\nexport const TabPanel = React.forwardRef<HTMLDivElement, Props>(\n ({ children, tabId, tabPanelId, selected = false, className, ...rest }: Props, ref) => (\n <div\n {...rest}\n ref={ref}\n aria-labelledby={tabId}\n className={`${classes['tabpanel']} ${selected ? classes['selected'] : ''} ${className ?? ''}`}\n id={tabPanelId}\n role=\"tabpanel\"\n tabIndex={0}\n hidden={!selected || undefined}\n aria-hidden={!selected}\n >\n {children}\n </div>\n )\n);\n","import React, { useRef, MouseEventHandler, useState, ComponentPropsWithRef } from 'react';\nimport { Popover } from '../Popover/Popover';\nimport classes from './TextEllipsis.module.scss';\n\nexport interface Props extends ComponentPropsWithRef<'div'> {\n children?: string;\n popoverClassName?: string;\n}\n\nexport const TextEllipsis = React.forwardRef<HTMLDivElement, Props>(\n ({ children, popoverClassName, className, ...rest }: Props, ref) => {\n const [showPopover, setShowPopover] = useState(false);\n const textContainer = useRef<HTMLDivElement>(null);\n\n const ellipsisVisible = () => {\n if (\n textContainer.current &&\n textContainer.current.offsetWidth < textContainer.current.scrollWidth\n ) {\n return true;\n }\n return false;\n };\n\n const onMouseEnter: MouseEventHandler<HTMLDivElement> = () => {\n ellipsisVisible() && setShowPopover(true);\n };\n\n const onMouseLeave: MouseEventHandler<HTMLDivElement> = () => {\n ellipsisVisible() && setShowPopover(false);\n };\n\n return (\n <div\n {...rest}\n onMouseEnter={onMouseEnter}\n onMouseLeave={onMouseLeave}\n className={`${classes['text-ellipsis']} ${className ?? ''}`}\n ref={ref || textContainer}\n >\n {children}\n <Popover\n aria-hidden={true}\n data-hidden={!showPopover}\n show={showPopover}\n role=\"tooltip\"\n anchorEl={textContainer}\n className={`${classes.popover} ${popoverClassName ?? ''}`}\n >\n {children}\n </Popover>\n </div>\n );\n }\n);\n","import React, { ComponentPropsWithRef, ReactElement, useState } from 'react';\nimport { Icon, Icons } from '../Icon/Icon';\nimport classes from './Tile.module.scss';\nimport readyClasses from '../readyclasses.module.scss';\n\nimport { Props as ContextMenuProps } from '../ContextMenu/ContextMenu';\nimport { generateID } from '../util/helper';\nimport { Props as IconButtonProps } from '../Button/IconButton';\n\ninterface ImageProps {\n src: string;\n}\n\nexport interface Props extends ComponentPropsWithRef<'div'> {\n title: string;\n imageProps?: ImageProps;\n enabled?: boolean;\n loading?: boolean;\n tileAction?: ReactElement<ContextMenuProps> | ReactElement<IconButtonProps>;\n}\n\nexport const Tile = React.forwardRef<HTMLDivElement, Props>(\n ({ title, imageProps, enabled, className, loading, tileAction, ...rest }: Props, ref) => {\n const [tileDescriptionID] = useState(generateID(20));\n\n if (!title) {\n throw new Error('Please make sure to pass a title prop to your Tile component.');\n }\n\n const statusMessage = () => {\n if (enabled) {\n return 'Status: enabled';\n }\n\n return 'Status: disabled';\n };\n\n return (\n <article\n {...rest}\n tabIndex={0}\n aria-labelledby={tileDescriptionID}\n ref={ref}\n className={`${classes['tile']} ${loading ? classes['loading'] : ''}`}\n >\n <header style={{ justifyContent: enabled === undefined ? 'flex-end' : 'space-between' }}>\n {enabled === true && (\n <Icon\n color=\"var(--success)\"\n icon={Icons.Checkmark}\n className={`${classes['icon']} ${className ?? ''}`}\n />\n )}\n {enabled === false && (\n <Icon\n color=\"var(--greyed-out)\"\n icon={Icons.Forbidden}\n className={`${classes['icon']} ${className ?? ''}`}\n />\n )}\n {enabled !== undefined && (\n <span id={tileDescriptionID} className={readyClasses['sr-only']}>\n {`${title}. ${statusMessage()}`}\n </span>\n )}\n {tileAction ?? null}\n </header>\n <div className={classes['content']}>\n {imageProps && imageProps.src.length > 0 && (\n <figure className={classes['image']}>\n {!loading && <img {...imageProps} alt=\"\" />}\n </figure>\n )}\n {(!imageProps || imageProps.src.length === 0) && (\n <Icon className={classes['placeholder']} icon={Icons.Image} />\n )}\n <span className={classes['title']}>{title}</span>\n </div>\n </article>\n );\n }\n);\n","import React, { ComponentPropsWithRef, ReactNode } from 'react';\nimport classes from './Tiles.module.scss';\nimport { Tile } from './Tile';\n\nexport interface Props extends ComponentPropsWithRef<'div'> {\n children: ReactNode;\n loading?: boolean;\n}\n\nexport const Tiles = React.forwardRef<HTMLDivElement, Props>(\n ({ children, className, loading = false, ...rest }: Props, ref) => {\n const renderChildren = () => {\n if (loading) {\n return [\n <Tile\n key=\"placeholder1\"\n title=\"placeholder\"\n imageProps={{ src: 'placeholder' }}\n loading={true}\n />,\n <Tile\n key=\"placeholder2\"\n title=\"placeholder\"\n imageProps={{ src: 'placeholder' }}\n loading={true}\n />,\n <Tile\n key=\"placeholder3\"\n title=\"placeholder\"\n imageProps={{ src: 'placeholder' }}\n loading={true}\n />,\n ];\n }\n\n return children;\n };\n\n return (\n <div\n {...rest}\n ref={ref}\n className={`${classes['tiles']} ${className ?? ''}`}\n aria-live=\"polite\"\n aria-busy={loading}\n >\n {renderChildren()}\n </div>\n );\n }\n);\n","import React, {\n ComponentPropsWithRef,\n ReactNode,\n useEffect,\n useLayoutEffect,\n useRef,\n useState,\n} from 'react';\nimport { Icon, Icons } from '../Icon/Icon';\nimport classes from './Tooltip.module.scss';\nimport { generateID } from '../util/helper';\nimport { Offset, Placement, usePosition } from '../hooks/usePosition';\nimport { createPortal } from 'react-dom';\n\nexport interface Props extends ComponentPropsWithRef<'div'> {\n label: string | ReactNode;\n children: string;\n placement?: Placement;\n offset?: Offset;\n transformOrigin?: Placement;\n domRoot?: HTMLElement;\n}\n\ninterface DefaultPosition {\n placement: Placement;\n offset: Offset;\n transformOrigin: Placement;\n}\n\nconst defaultPosition: DefaultPosition = {\n placement: { horizontal: 'right', vertical: 'center' },\n offset: { left: 16, right: 0, top: 0, bottom: 0 },\n transformOrigin: { horizontal: 'left', vertical: 'center' },\n};\n\nexport const Tooltip = React.forwardRef<HTMLDivElement, Props>(\n (\n {\n children,\n className,\n placement = defaultPosition.placement,\n offset = defaultPosition.offset,\n transformOrigin = defaultPosition.transformOrigin,\n domRoot = document.body,\n label,\n ...rest\n }: Props,\n ref\n ) => {\n const [identifier] = useState(generateID());\n const [visible, setVisible] = useState(false);\n\n const relativeElement = useRef<HTMLDivElement>(null);\n const elementToBePositioned = useRef<HTMLDivElement>(null);\n\n const { top, bottom, right, left, calculatePosition } = usePosition({\n relativeElement: relativeElement,\n elementToBePositioned: elementToBePositioned,\n placement: placement,\n offset: offset,\n transformOrigin: transformOrigin,\n });\n\n useEffect(() => {\n if (!visible) return;\n\n function escapePressHandler(event: KeyboardEvent) {\n if (event.key === 'Escape') {\n setVisible(false);\n }\n }\n\n document.addEventListener('keyup', escapePressHandler);\n\n return () => {\n document.removeEventListener('keyup', escapePressHandler);\n };\n }, [visible]);\n\n useLayoutEffect(() => {\n calculatePosition();\n }, [visible]);\n\n const renderChildren = () => {\n if (React.isValidElement(label)) {\n return React.cloneElement(label, {\n onFocus: () => setVisible(true),\n onBlur: () => setVisible(false),\n 'aria-describedby': identifier,\n tabIndex: 0,\n className: classes['label'],\n });\n }\n\n return (\n <span\n className={classes['label']}\n tabIndex={0}\n onFocus={() => setVisible(true)}\n onBlur={() => setVisible(false)}\n aria-describedby={identifier}\n >\n {label}\n </span>\n );\n };\n\n return (\n <div {...rest} ref={ref} className={`${classes.wrapper} ${className ?? ''}`}>\n {renderChildren()}\n <div className={`${classes['tooltip-wrapper']}`}>\n <Icon\n ref={relativeElement}\n tag=\"div\"\n onMouseEnter={() => setVisible(true)}\n onMouseLeave={() => setVisible(false)}\n icon={Icons.InfoCircle}\n className={classes.icon}\n />\n {createPortal(\n <div\n ref={elementToBePositioned}\n style={{\n ...rest.style,\n top: top,\n left: left,\n right: right,\n bottom: bottom,\n }}\n aria-hidden={!visible}\n id={identifier}\n className={`${classes.tooltip} ${visible ? classes.visible : ''}`}\n >\n {children}\n </div>,\n domRoot\n )}\n </div>\n </div>\n );\n }\n);\n","import React, { ComponentPropsWithRef } from 'react';\nimport classes from './Skeleton.module.scss';\n\nexport interface Props extends Omit<ComponentPropsWithRef<'div'>, 'children'> {\n variant?: 'circular' | 'rectangle' | 'text';\n height?: number | string;\n width?: number | string;\n}\n\nexport const Skeleton = React.forwardRef<HTMLDivElement, Props>(\n ({ variant = 'text', height, width, className, style, ...rest }: Props, ref) => {\n const classNames = [classes['skeleton']];\n !height && classNames.push(classes['no-height']);\n variant === 'text' && classNames.push(classes['text']);\n variant === 'circular' && classNames.push(classes['circular']);\n className && classNames.push(className);\n\n return (\n <span\n {...rest}\n aria-busy=\"true\"\n aria-hidden=\"true\"\n ref={ref}\n style={{ ...style, width, height }}\n className={classNames.join(' ')}\n ></span>\n );\n }\n);\n","import React, { ComponentPropsWithRef, Ref, useEffect, useState } from 'react';\nimport classes from './Input.module.scss';\nimport readyclasses from '../../readyclasses.module.scss';\nimport { Icon, Icons } from '../../Icon/Icon';\nimport { FormElement } from '../form.interfaces';\n\nconst dateTypes = ['date', 'time', 'datetime-local'] as const;\n\nexport type Type =\n | 'text'\n | 'email'\n | 'file'\n | 'number'\n | 'password'\n | 'search'\n | 'tel'\n | 'url'\n | 'hidden'\n | typeof dateTypes[number];\n\nexport interface Props extends ComponentPropsWithRef<'input'>, FormElement {\n wrapperProps?: ComponentPropsWithRef<'div'>;\n labeledBy?: string;\n type: Type;\n suffix?: string;\n prefix?: string;\n}\n\nexport const Input = React.forwardRef(\n (\n {\n error = false,\n className,\n name,\n style,\n wrapperProps,\n type,\n labeledBy,\n prefix,\n suffix,\n disabled,\n onFocus,\n onBlur,\n ...rest\n }: Props,\n ref: Ref<HTMLInputElement>\n ) => {\n const [focus, setFocus] = useState(false);\n\n useEffect(() => {\n if (name === undefined) {\n throw new Error(\"Please give your <Input /> component a 'name' attribute\");\n }\n }, []);\n\n const inputClassNames = [classes['input']];\n\n (dateTypes as ReadonlyArray<string>).includes(type) &&\n inputClassNames.push(classes['remove-extra-indent']);\n className && inputClassNames.push(className);\n\n const iconClassNames = [classes['warning']];\n (dateTypes as ReadonlyArray<string>).includes(type) &&\n iconClassNames.push(classes['extra-indent']);\n\n const wrapperClasses = [classes['input-wrapper']];\n\n wrapperProps?.className && wrapperClasses.push(wrapperProps.className);\n type === 'hidden' && wrapperClasses.push(readyclasses['hidden']);\n prefix && wrapperClasses.push(classes['prefix']);\n suffix && wrapperClasses.push(classes['suffix']);\n disabled && wrapperClasses.push(classes['disabled']);\n error && wrapperClasses.push(classes['error']);\n focus && wrapperClasses.push(classes['focus']);\n\n return (\n <div\n {...wrapperProps}\n style={{ ...style }}\n className={`${classes['input-wrapper']} ${wrapperClasses.join(' ')}`}\n >\n {prefix && (\n <div data-prefix className={classes['prefix']}>\n <span>{prefix}</span>\n </div>\n )}\n <input\n {...rest}\n ref={ref}\n onFocus={(event) => {\n setFocus(true);\n onFocus && onFocus(event);\n }}\n onBlur={(event) => {\n setFocus(false);\n onBlur && onBlur(event);\n }}\n aria-labelledby={labeledBy}\n type={type}\n name={name}\n disabled={disabled}\n className={inputClassNames.join(' ')}\n />\n {suffix && (\n <div data-suffix className={classes['suffix']}>\n <span>{suffix}</span>\n </div>\n )}\n {error && <Icon className={iconClassNames.join(' ')} icon={Icons.Error} />}\n </div>\n );\n }\n);\n","import classes from './Select.module.scss';\n\nimport React, {\n ComponentPropsWithRef,\n createRef,\n Fragment,\n ReactElement,\n useEffect,\n useRef,\n useState,\n} from 'react';\nimport { Input, Props as InputProps } from '../Input/Input';\nimport { Icon, Icons } from '../../Icon/Icon';\nimport { FormElement } from '../form.interfaces';\nimport { useBodyClick } from '../../hooks/useBodyClick';\nimport readyclasses from '../../readyclasses.module.scss';\nimport { filterProps } from '../../util/helper';\n\ntype PartialInputProps = Partial<InputProps>;\n\nexport interface Props extends ComponentPropsWithRef<'select'>, FormElement {\n children: ReactElement[];\n name?: string;\n labeledBy?: string;\n describedBy?: string;\n placeholder?: string;\n searchPlaceholder?: string;\n searchInputProps?: PartialInputProps;\n selectButtonProps?: ComponentPropsWithRef<'button'>;\n className?: string;\n value: string;\n clearLabel?: string;\n onChange?: (event: React.ChangeEvent<HTMLSelectElement>, child?: ReactElement) => void;\n onClear?: (event: React.MouseEvent<HTMLDivElement> | React.KeyboardEvent<HTMLDivElement>) => void;\n}\n\ntype Position = {\n top: 0 | 'initial';\n bottom: 0 | 'initial';\n};\n\n/** Amount of items to be rendered before a search input is rendered */\nconst renderSearchCondition = 10;\n\nexport const Select = React.forwardRef<HTMLSelectElement, Props>(\n (\n {\n children,\n name,\n disabled = false,\n labeledBy,\n placeholder,\n describedBy,\n searchPlaceholder = 'Search item',\n searchInputProps,\n selectButtonProps,\n className,\n error = false,\n value,\n clearLabel = 'Clear selection',\n onChange,\n onClear,\n ...rest\n }: Props,\n ref\n ) => {\n const [expanded, setExpanded] = useState(false);\n const [opacity, setOpacity] = useState(0); // We set opacity because other wise if we calculate the max height you see the list full height for a split second and then it shortens.\n const [filter, setFilter] = useState('');\n const [display, setDisplay] = useState('');\n const [listPosition, setListPosition] = useState<Partial<Position>>({});\n const [optionsListMaxHeight, setOptionsListMaxHeight] = useState('none');\n const containerReference = useRef<HTMLDivElement>(null);\n const optionListReference = useRef<HTMLDivElement>(null);\n const [isSearching, setIsSearching] = useState(false);\n const [focusedSelectItem, setFocusedSelectItem] = useState(-1);\n const [shouldClick, setShouldClick] =\n useState(\n false\n ); /** We need this, because whenever we use the arrow keys to select the select item, and we focus the currently selected item it fires the \"click\" listener in Option component. Instead, we only want this to fire if we press \"enter\" or \"spacebar\" so we set this to true whenever that is the case, and back to false when it has been executed. */\n const [childrenCount] = useState(React.Children.count(children));\n\n const nativeSelect = (ref as React.RefObject<HTMLSelectElement>) || createRef();\n const searchInputRef = useRef<HTMLInputElement>(null);\n\n const onArrowNavigation = (event: React.KeyboardEvent) => {\n const codesToPreventDefault = [\n 'ArrowDown',\n 'ArrowUp',\n 'ArrowLeft',\n 'ArrowRight',\n 'Space',\n 'Escape',\n 'End',\n 'Home',\n ];\n\n const codesToPreventDefaultWhenSearching = ['ArrowDown', 'ArrowUp', 'Enter', 'Escape'];\n\n /** If the select is expanded, we also want to control the Tab key */\n if (expanded) {\n codesToPreventDefault.push('Tab');\n }\n\n /** We will handle the way certain key strokes affect the Select, unless we're searching */\n if (codesToPreventDefault.includes(event.code) && !isSearching) {\n event.preventDefault();\n }\n\n if (isSearching && codesToPreventDefaultWhenSearching.includes(event.code)) {\n event.preventDefault();\n }\n\n if (isSearching) {\n switch (event.code) {\n case 'ArrowDown':\n case 'Enter':\n setIsSearching(false);\n setFocusedSelectItem(0);\n return;\n case 'ArrowUp':\n setIsSearching(false);\n setFocusedSelectItem(childrenCount - 1);\n return;\n case 'Escape':\n case 'Tab':\n setIsSearching(false);\n setExpanded(false);\n containerReference.current &&\n containerReference.current.querySelector('button')!.focus();\n }\n } else {\n switch (event.code) {\n case 'ArrowDown':\n if (!expanded) {\n setExpanded(true);\n return;\n }\n setFocusedSelectItem((prevState) => {\n return prevState + 1 > childrenCount - 1 ? 0 : prevState + 1;\n });\n return;\n case 'ArrowUp':\n setFocusedSelectItem((prevState) => {\n return prevState - 1 < 0 ? childrenCount - 1 : prevState - 1;\n });\n return;\n case 'Space':\n if (!expanded) {\n setExpanded(true);\n return;\n }\n\n setShouldClick(true);\n setExpanded(false);\n containerReference.current &&\n containerReference.current.querySelector('button')!.focus();\n return;\n case 'Tab':\n if (childrenCount >= renderSearchCondition && expanded) {\n setIsSearching(true);\n searchInputRef.current && searchInputRef.current.focus();\n return;\n }\n setExpanded(false);\n\n return;\n case 'Escape':\n if (expanded) {\n setExpanded(false);\n containerReference.current &&\n containerReference.current.querySelector('button')!.focus();\n }\n return;\n case 'End':\n setFocusedSelectItem(childrenCount - 1);\n return;\n case 'Home':\n setFocusedSelectItem(0);\n return;\n }\n }\n };\n\n const syncDisplayValue = (val: string) => {\n React.Children.forEach(children, (child) => {\n if (child.props.value === val) {\n setDisplay(child.props.children);\n }\n });\n };\n\n const rePositionList = () => {\n if (!expanded || !optionListReference.current || !containerReference.current) {\n return;\n }\n\n // Check whether there is more space above or below the select\n // Check space between the bottom of select and top of viewport\n const spaceOnTopOfSelect = containerReference.current.getBoundingClientRect().bottom;\n\n // Check space between the top of the select and bottom of viewport\n const spaceOnBottomOfSelect =\n window.innerHeight - containerReference.current.getBoundingClientRect().top;\n\n // Set position as if there's more space on the bottom\n let position: Position = { top: 0, bottom: 'initial' };\n\n // Set the position of the select\n if (spaceOnTopOfSelect > spaceOnBottomOfSelect) {\n position = { top: 'initial', bottom: 0 };\n }\n\n setListPosition(position);\n\n // Calculate the potential max height of the options list\n calculateOptionListMaxHeight(position);\n };\n\n const calculateOptionListMaxHeight = (position: Position) => {\n // Calculate max height if there's more space below the select\n const listHeight = optionListReference.current!.getBoundingClientRect().height;\n const transformOrigin = position.top !== 'initial' ? 'top' : 'bottom';\n\n const availableSpace =\n transformOrigin === 'top'\n ? window.innerHeight -\n containerReference.current!.getBoundingClientRect()[transformOrigin] -\n 16\n : containerReference.current!.getBoundingClientRect()[transformOrigin] - 16;\n\n if (availableSpace < listHeight) {\n setOptionsListMaxHeight(`${availableSpace}px`);\n setOpacity(100);\n return;\n }\n\n setOptionsListMaxHeight('none');\n setOpacity(100);\n };\n\n const onOptionChangeHandler = (optionRef: React.RefObject<HTMLLIElement>) => {\n if (nativeSelect.current && optionRef.current) {\n nativeSelect.current.value = optionRef.current.getAttribute('data-value')!;\n nativeSelect.current.dispatchEvent(new Event('change', { bubbles: true }));\n }\n\n setExpanded(false);\n\n containerReference.current && containerReference.current.querySelector('button')!.focus();\n };\n\n /**\n * @description We have to modify the children (Option component) to have a additional props that allows us to keep track of which one is selected and focused at all times and if a filter is active.\n * The `children` prop can be either a single object (1 child) or an array of multiple children.\n */\n const renderOptions = () => {\n if (isSearching || filter !== '') {\n const filteredChildren = React.Children.toArray(children).filter(\n (child) =>\n (child as ReactElement).props.children.toLowerCase().match(filter.toLowerCase()) !==\n null\n );\n\n return _internalRenderChildren(filteredChildren as ReactElement[]);\n }\n\n return _internalRenderChildren(children);\n\n function _internalRenderChildren(internalChildren: ReactElement[]) {\n return React.Children.map(internalChildren, (child, index) => {\n return React.cloneElement(child, {\n onFocusChange: (childIndex: number) => setFocusedSelectItem(childIndex),\n onOptionSelect: (optionRef: React.RefObject<HTMLLIElement>) => {\n onOptionChangeHandler(optionRef);\n setShouldClick(false);\n },\n isSelected: child.props.value === value,\n isSearching: isSearching,\n selectOpened: expanded,\n childIndex: index,\n hasFocus: focusedSelectItem === index,\n shouldClick: shouldClick,\n });\n });\n }\n };\n\n const renderSearch = () => (\n <Input\n {...searchInputProps}\n autoFocus\n ref={searchInputRef}\n onFocus={() => setIsSearching(true)}\n onBlur={() => setIsSearching(false)}\n onChange={filterResults}\n className={classes['select-search']}\n wrapperProps={{\n className: `${classes['select-search-wrapper']} ${searchInputProps?.wrapperProps?.className}`,\n }}\n type=\"text\"\n name=\"search-option\"\n placeholder={searchPlaceholder}\n />\n );\n\n const filterResults = (event: React.ChangeEvent<HTMLInputElement>) => {\n setFilter(event.currentTarget.value);\n };\n\n const statusIcon = () => {\n if (error) {\n return <Icon className={classes['warning']} icon={Icons.Warning} />;\n }\n\n if (value?.length !== 0 && onClear) {\n return (\n <div\n aria-hidden={false}\n role=\"button\"\n tabIndex={0}\n data-clear\n onClick={(e: React.MouseEvent<HTMLDivElement, MouseEvent>) => {\n e.preventDefault();\n e.stopPropagation();\n onClear(e);\n }}\n onKeyDown={(e: React.KeyboardEvent<HTMLDivElement>) => {\n if (e.code === 'Enter' || e.code === 'Space') {\n e.preventDefault();\n e.stopPropagation();\n onClear(e);\n containerReference.current &&\n containerReference.current.querySelector('button')!.focus();\n }\n }}\n >\n <span className={readyclasses['sr-only']}>{clearLabel}</span>\n <Icon tag=\"span\" icon={Icons.TimesThin} />\n </div>\n );\n }\n return null;\n };\n\n const nativeOnChangeHandler = (event: React.ChangeEvent<HTMLSelectElement>) => {\n onChange && onChange(event);\n };\n\n useEffect(() => {\n syncDisplayValue(value);\n }, [value]);\n\n useEffect(() => {\n rePositionList();\n }, [expanded]);\n\n useBodyClick(\n (event: MouseEvent) => !(event.target as Element).closest('.custom-select') && expanded,\n () => {\n setExpanded(!expanded);\n setListPosition({ top: 0, bottom: 'initial' });\n setOpacity(0);\n },\n expanded\n );\n\n const additionalClasses = [];\n expanded && additionalClasses.push(classes.expanded);\n error && additionalClasses.push(classes.error);\n disabled && additionalClasses.push(classes.disabled);\n className && additionalClasses.push(className);\n\n /** The native select is purely for external form libraries. We use it to emit an onChange with native select event object so they know exactly what's happening. */\n return (\n <Fragment>\n <select\n {...filterProps(rest, /^data-/, false)}\n tabIndex={-1}\n aria-hidden=\"true\"\n ref={nativeSelect}\n name={name}\n onChange={nativeOnChangeHandler}\n className={readyclasses['sr-only']}\n >\n <option value=\"\"></option>\n {React.Children.map(children, (child) => (\n <option value={child.props.value}></option>\n ))}\n </select>\n <div\n {...filterProps(rest, /^data-/)}\n ref={containerReference}\n onKeyDown={onArrowNavigation}\n className={`custom-select ${classes.select} ${additionalClasses.join(' ')} ${\n className ?? ''\n }`}\n >\n <button\n {...selectButtonProps}\n onClick={() => {\n setExpanded(!expanded);\n }}\n type=\"button\"\n name={name}\n disabled={disabled}\n aria-disabled={disabled}\n aria-invalid={error}\n aria-expanded={expanded}\n aria-haspopup=\"listbox\"\n aria-labelledby={labeledBy}\n aria-describedby={describedBy}\n className={classes['custom-select']}\n >\n <div data-display className={classes['selected']}>\n {!value && placeholder && (\n <span className={classes['placeholder']}>{placeholder}</span>\n )}\n {value?.length > 0 && <span data-display-inner>{display}</span>}\n </div>\n <div className={classes['status']}>\n {statusIcon()}\n <Icon className={classes['triangle-down']} icon={Icons.TriangleDown} />\n </div>\n </button>\n <div\n ref={optionListReference}\n className={`list-wrapper ${classes['list-wrapper']}`}\n style={{\n display: expanded ? 'block' : 'none',\n opacity: opacity,\n maxHeight: optionsListMaxHeight,\n ...listPosition,\n }}\n >\n {Array.isArray(children) && children.length > renderSearchCondition && renderSearch()}\n <ul role=\"listbox\">{renderOptions()}</ul>\n </div>\n </div>\n </Fragment>\n );\n }\n);\n","import React, { ComponentPropsWithRef, createRef, RefObject, useEffect } from 'react';\nimport classes from './Select.module.scss';\n\nexport interface Props extends ComponentPropsWithRef<'li'> {\n children: string;\n value: string;\n disabled?: boolean;\n isSelected?: boolean;\n selectOpened?: boolean;\n hasFocus?: boolean;\n shouldClick?: boolean;\n isSearching?: boolean;\n label?: string;\n childIndex?: number;\n onOptionSelect?: (ref: React.RefObject<HTMLLIElement>) => void;\n onFocusChange?: (childIndex: number) => void;\n}\n\nexport const Option = React.forwardRef<HTMLLIElement, Props>(\n (\n {\n children,\n className,\n isSelected = false,\n shouldClick,\n hasFocus,\n selectOpened,\n isSearching,\n childIndex,\n onOptionSelect,\n onFocusChange,\n disabled,\n value,\n ...rest\n }: Props,\n ref\n ) => {\n let innerOptionRef = (ref as RefObject<HTMLLIElement>) || createRef<HTMLLIElement>();\n\n useEffect(() => {\n if (isSelected && innerOptionRef.current && shouldClick) {\n innerOptionRef.current.click();\n }\n }, [isSelected, shouldClick]);\n\n useEffect(() => {\n if (innerOptionRef.current && hasFocus && selectOpened && !isSearching) {\n onFocusChange && childIndex && onFocusChange(childIndex);\n innerOptionRef.current.focus();\n }\n }, [hasFocus, innerOptionRef, selectOpened, isSearching]);\n\n const onSelectHandler = () => {\n if (onOptionSelect) onOptionSelect(innerOptionRef);\n };\n\n return (\n <li\n {...rest}\n ref={innerOptionRef}\n data-value={value}\n className={`${isSelected ? classes['selected-option'] : ''} ${\n disabled ? classes.disabled : ''\n } ${className ?? ''}`}\n onClick={onSelectHandler}\n onKeyDownCapture={(event) => {\n if (event.code === 'Enter') {\n event.stopPropagation();\n event.preventDefault();\n\n onSelectHandler();\n }\n }}\n aria-selected={isSelected}\n role=\"option\"\n tabIndex={disabled ? -1 : 0}\n >\n {children}\n </li>\n );\n }\n);\n","import React, { ComponentPropsWithRef, Fragment, useState } from 'react';\nimport classes from './Pagination.module.scss';\nimport readyclasses from '../readyclasses.module.scss';\nimport { IconButton } from '../Button/IconButton';\nimport { Icons, Icon } from '../Icon/Icon';\nimport { Input } from '../Form/Input/Input';\nimport { Select } from '../Form/Select/Select';\nimport { Option } from '../Form/Select/Option';\nimport { Label } from '../Form/Label/Label';\n\nexport type PaginationTranslations = {\n totalItems: string;\n itemsPerPage: string;\n itemsPerPageLabel: string;\n currentPage: string;\n currentPageLabel: string;\n};\n\nexport type PageChangeLabels = 'next' | 'previous' | 'first' | 'last';\n\nenum DefaultTranslations {\n totalItems = 'Total items',\n itemsPerPage = 'Items per page',\n currentPage = 'Page %1 of %2',\n itemsPerPageLabel = 'Select how many items per page you want to see.',\n currentPageLabel = 'What page you are currently on.',\n}\n\nexport type PageSize = 10 | 25 | 50;\n\nexport interface Props extends Omit<ComponentPropsWithRef<'div'>, 'translate'> {\n currentPage?: number;\n totalElements?: number;\n pageSize?: PageSize;\n translate?: PaginationTranslations;\n onPageChange: (pageToGoTo: number) => void;\n onPageSizeChange: (pageSize: PageSize) => void;\n}\n\nexport const Pagination = React.forwardRef<HTMLDivElement, Props>(\n (\n {\n totalElements,\n pageSize = 10,\n translate = DefaultTranslations,\n currentPage,\n className,\n onPageChange,\n onPageSizeChange,\n ...rest\n }: Props,\n ref\n ) => {\n /** We use an internal state variable, because we don't want to fire onCurrentPageChange whenever onChange fires on the input. Rather, only when the Enter key is pressed. */\n const [internalCurrentPage, setInternalCurrentPage] = useState(currentPage?.toString() || '1');\n const calculateAmountOfPages = () => {\n if (!totalElements) return 1;\n\n if (Math.ceil(totalElements / pageSize) < 1) {\n return 1;\n }\n\n return Math.ceil(totalElements / pageSize);\n };\n\n const onEnterListener = (event: React.KeyboardEvent<HTMLInputElement>) => {\n if (event.code === 'Enter') {\n onPageChange(Number(internalCurrentPage));\n }\n };\n\n const renderCurrentPageTranslation = () => {\n const amountOfPages = calculateAmountOfPages();\n\n if (amountOfPages) {\n const splitCurrentPageTranslation = translate.currentPage.split(' ');\n\n return splitCurrentPageTranslation.map((string) => {\n if (string.includes('%1')) {\n return (\n <Fragment key={string}>\n <Label\n id=\"current-value-input-label\"\n htmlFor=\"current-value-input\"\n className={readyclasses['sr-only']}\n >\n {translate.currentPageLabel}\n </Label>\n <Input\n aria-labelledby=\"current-value-input-label\"\n key=\"input\"\n id=\"current-value-input\"\n type=\"text\"\n size={currentPage?.toString().length}\n max={calculateAmountOfPages()}\n wrapperProps={{ className: classes['current-value-input'] }}\n onKeyUp={onEnterListener}\n onBlur={(event: React.ChangeEvent<HTMLInputElement>) =>\n onPageChange(Number(event.target.value))\n }\n onChange={(e: React.ChangeEvent<HTMLInputElement>) =>\n setInternalCurrentPage(e.target.value)\n }\n name=\"current-value-input\"\n value={internalCurrentPage}\n className={`${classes['form-element']} ${classes['current-page-input']}`}\n />\n </Fragment>\n );\n }\n\n if (string.includes('%2')) {\n return (\n <div key={string}>\n <strong>{string.replace('%2', amountOfPages.toString())}</strong> \n </div>\n );\n }\n\n return <div key={string}>{string} </div>;\n });\n }\n\n return null;\n };\n\n const onPageSizeChangeHandler = (event: React.ChangeEvent<HTMLSelectElement>) => {\n const pageSizeNumber = Number(event.target.value) as PageSize;\n onPageSizeChange(pageSizeNumber);\n };\n\n const onPageChangeHandler = (pageToGoTo: number) => {\n onPageChange(pageToGoTo);\n };\n\n return (\n <div\n {...rest}\n ref={ref}\n className={`${classes['pagination-wrapper']} ${className ? className : ''}`}\n >\n {totalElements && (\n <div className={classes['total']}>\n <span tabIndex={0}>\n {translate.totalItems}: <span>{totalElements}</span>\n </span>\n </div>\n )}\n <div className={classes['pagination']}>\n {pageSize && (\n <div className={classes['per-page']}>\n <Label id=\"page-size-select-label\">{translate.itemsPerPage}</Label>\n <Select\n labeledBy=\"page-size-select-label\"\n className={`${classes['form-element']} ${classes['page-size-select']}`}\n value={pageSize.toString()}\n onChange={onPageSizeChangeHandler}\n >\n <Option value=\"10\">10</Option>\n <Option value=\"25\">25</Option>\n <Option value=\"50\">50</Option>\n </Select>\n </div>\n )}\n <Fragment>\n {!!((currentPage && currentPage > 2) || (currentPage && currentPage > 1)) && (\n <div className={classes['previous']}>\n {currentPage > 2 && (\n <IconButton\n title=\"first\"\n onClick={() => onPageChangeHandler(0)}\n data-paginate=\"first\"\n >\n <Icon icon={Icons.NavigationFirst} />\n </IconButton>\n )}\n {currentPage > 1 && (\n <IconButton\n title=\"previous\"\n onClick={() => onPageChangeHandler(currentPage - 1)}\n data-paginate=\"previous\"\n >\n <Icon icon={Icons.ChevronLeft} />\n </IconButton>\n )}\n </div>\n )}\n {totalElements && calculateAmountOfPages() && (\n <div className={classes['page']}>{renderCurrentPageTranslation()}</div>\n )}\n <div className={classes['next']}>\n {!!(\n (currentPage !== undefined && currentPage < calculateAmountOfPages()!) ||\n (currentPage !== undefined && !totalElements)\n ) && (\n <IconButton\n title=\"next\"\n onClick={() => onPageChangeHandler(currentPage + 1)}\n data-paginate=\"next\"\n >\n <Icon icon={Icons.ChevronRight} />\n </IconButton>\n )}\n {!!(currentPage && totalElements && currentPage < calculateAmountOfPages()! - 1) && (\n <IconButton\n title=\"last\"\n onClick={() => onPageChangeHandler(totalElements / pageSize)}\n data-paginate=\"last\"\n >\n <Icon icon={Icons.NavigationLast} />\n </IconButton>\n )}\n </div>\n </Fragment>\n </div>\n </div>\n );\n }\n);\n","import React, { ComponentPropsWithRef, ReactNode } from 'react';\nimport classes from './Label.module.scss';\nimport readyclasses from '../../readyclasses.module.scss';\n\nexport interface Props extends ComponentPropsWithRef<'label'> {\n children?: ReactNode;\n}\n\nexport const Label = React.forwardRef<HTMLLabelElement, Props>(\n ({ children, className, hidden = false, ...rest }: Props, ref) => {\n return (\n <label\n {...rest}\n ref={ref}\n className={`${hidden ? readyclasses['sr-only'] : ''} ${classes['label']} ${\n className ?? ''\n }`}\n >\n {children}\n </label>\n );\n }\n);\n","export const labelId = (id: string) => `${id}-label`;\nexport const descriptionId = (id: string) => `${id}-description`;\n","import React, { ComponentPropsWithRef, useEffect } from 'react';\nimport { createPortal } from 'react-dom';\nimport classes from './BaseModal.module.scss';\nimport { labelId, descriptionId } from './BaseModalContext';\n\nconst SCROLL_PROPERTY_NAME = 'overflow';\nconst SCROLL_PROPERTY_VALUE = 'hidden';\n\nexport interface Props extends ComponentPropsWithRef<'div'> {\n id: string;\n children: React.ReactNode;\n open: boolean;\n onClose?: (event?: React.MouseEvent<HTMLElement>) => unknown;\n className?: string;\n containerProps?: ComponentPropsWithRef<'div'>;\n backdropProps?: ComponentPropsWithRef<'div'>;\n labelledby?: string;\n describedby?: string;\n disableEscapeKeyDown?: boolean;\n disableBackdrop?: boolean;\n forceContainerOpen?: boolean;\n zIndex?: number;\n domRoot?: HTMLElement;\n}\n\nexport const useSetBodyScroll = (open: boolean) => {\n const hideBodyScroll = () => {\n document.body.style[SCROLL_PROPERTY_NAME] = SCROLL_PROPERTY_VALUE;\n };\n\n const showBodyScroll = () => {\n const allModalsClosed =\n document.querySelectorAll('[role=dialog][data-hidden=false]').length === 0;\n if (allModalsClosed) {\n document.body.style.removeProperty(SCROLL_PROPERTY_NAME);\n }\n };\n\n useEffect(() => {\n if (open) {\n hideBodyScroll();\n } else {\n showBodyScroll();\n }\n }, [open]);\n};\n\nexport const BaseModal = React.forwardRef<HTMLDivElement, Props>(\n (\n {\n id,\n children,\n open,\n onClose,\n className = '',\n containerProps,\n backdropProps,\n labelledby,\n describedby,\n disableEscapeKeyDown = false,\n disableBackdrop = false,\n forceContainerOpen = false,\n zIndex,\n domRoot = document.body,\n ...rest\n }: Props,\n ref\n ) => {\n useSetBodyScroll(open);\n\n const handleEscKeyPress = (event: React.KeyboardEvent<HTMLDivElement>) => {\n if (!disableEscapeKeyDown && event.key === 'Escape') {\n event.stopPropagation();\n onClose && onClose();\n }\n };\n\n const handleBackdropClick = () => !disableBackdrop && onClose && onClose();\n\n return createPortal(\n <div\n {...rest}\n ref={ref}\n id={id}\n className={`${classes['modal']} ${open ? classes['visible'] : ''} ${className}`}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby={labelledby || labelId(id)}\n aria-describedby={describedby || descriptionId(id)}\n aria-hidden={!open}\n tabIndex={-1}\n data-hidden={!open}\n onKeyDown={handleEscKeyPress}\n style={{ zIndex }}\n >\n <div\n {...backdropProps}\n className={`${classes['backdrop']} ${backdropProps?.className ?? ''}`}\n onClick={handleBackdropClick}\n ></div>\n {forceContainerOpen ? (\n <div\n {...containerProps}\n aria-hidden={!open}\n hidden={!open}\n style={{ zIndex: zIndex && zIndex + 1 }}\n className={`${classes['container']} ${containerProps?.className ?? ''}`}\n >\n {children}\n </div>\n ) : (\n open && (\n <div\n {...containerProps}\n style={{ zIndex: zIndex && zIndex + 1 }}\n className={`${classes['container']} ${containerProps?.className ?? ''}`}\n >\n {children}\n </div>\n )\n )}\n </div>,\n domRoot\n );\n }\n);\n","import React, { createContext } from 'react';\nimport { SnackbarOptionsProps } from '../interfaces';\n\ninterface SnackbarContextProps {\n enqueueSnackbar: (title: string, content?: string, options?: SnackbarOptionsProps) => void;\n enqueueSuccessSnackbar: (title: string, content?: string, options?: SnackbarOptionsProps) => void;\n enqueueErrorSnackbar: (title: string, content?: string, options?: SnackbarOptionsProps) => void;\n}\n\nconst SnackbarContext = createContext<SnackbarContextProps>({\n enqueueSnackbar: () => null,\n enqueueSuccessSnackbar: () => null,\n enqueueErrorSnackbar: () => null,\n});\n\ninterface Props {\n initialState: SnackbarContextProps;\n children?: React.ReactNode;\n}\n\nconst SnackbarContextProvider = ({ children, initialState }: Props) => {\n return <SnackbarContext.Provider value={initialState}>{children}</SnackbarContext.Provider>;\n};\n\nexport { SnackbarContextProvider, SnackbarContext, SnackbarContextProps };\n","import React, { ComponentPropsWithRef, createRef, useEffect } from 'react';\nimport classes from './BaseModalContent.module.scss';\n\nexport interface Props extends ComponentPropsWithRef<'div'> {\n id?: string;\n children: React.ReactNode;\n className?: string;\n disableAutoFocus?: boolean;\n}\n\nexport const BaseModalContent = React.forwardRef<HTMLDivElement, Props>(\n ({ id, children, className = '', disableAutoFocus = false, ...rest }: Props, ref) => {\n const contentRef = createRef<HTMLDivElement>();\n\n useEffect(() => {\n if (!disableAutoFocus && ref) {\n (ref as React.RefObject<HTMLDivElement>).current?.focus();\n } else if (!disableAutoFocus) {\n contentRef.current?.focus();\n }\n }, []);\n\n /**tabIndex is set to be able to do focus on that element which we need for catching keyDown events */\n return (\n <div\n {...rest}\n ref={ref || contentRef}\n id={id}\n className={`${classes['content']} ${className}`}\n tabIndex={-1}\n >\n {children}\n </div>\n );\n }\n);\n","import React, { ComponentPropsWithRef } from 'react';\nimport classes from './BaseModalActions.module.scss';\n\nexport interface Props extends ComponentPropsWithRef<'footer'> {\n children?: React.ReactNode;\n}\n\nexport const BaseModalActions = React.forwardRef<HTMLElement, Props>(\n ({ children, className = '', ...rest }: Props, ref) => {\n return (\n <footer {...rest} ref={ref} className={`${classes['actions']} ${className}`}>\n {children}\n </footer>\n );\n }\n);\n","import React, { ComponentPropsWithRef } from 'react';\nimport {\n BaseModalActions,\n Props as BaseModalActionsProps,\n} from '../../BaseModal/BaseModalActions/BaseModalActions';\nimport classes from './DialogActions.module.scss';\n\nexport interface Props extends ComponentPropsWithRef<any>, BaseModalActionsProps {\n align: 'left' | 'right';\n}\n\nexport const DialogActions = React.forwardRef<HTMLElement, Props>(\n ({ children, align, ...rest }: Props, ref) => {\n return (\n <BaseModalActions\n {...rest}\n ref={ref}\n className={`${classes['actions']}${align === 'left' ? ' ' + classes['left'] : ''}`}\n >\n {children}\n </BaseModalActions>\n );\n }\n);\n","import React, { ComponentPropsWithRef } from 'react';\nimport { Typography } from '../../../Typography/Typography';\nimport classes from './DialogTitle.module.scss';\n\nexport interface Props extends ComponentPropsWithRef<'div'> {\n id: string;\n title: string;\n}\n\nexport const DialogTitle = React.forwardRef<HTMLDivElement, Props>(\n ({ id, title, ...rest }: Props, ref) => {\n return (\n <div {...rest} ref={ref} className={classes['header']}>\n <Typography id={id} className={classes['title']} tag=\"h1\" variant=\"h4\">\n {title}\n </Typography>\n </div>\n );\n }\n);\n","import React, { ComponentPropsWithRef, useState } from 'react';\nimport { BaseModal } from '../BaseModal/BaseModal';\nimport { BaseModalContent } from '../BaseModal/BaseModalContent/BaseModalContent';\nimport { DialogActions } from './DialogActions/DialogActions';\nimport classes from './Dialog.module.scss';\nimport { DialogTitle } from './DialogTitle/DialogTitle';\nimport { Button, Props as ButtonProps } from '../../Button/Button';\nimport { labelId, descriptionId } from '../BaseModal/BaseModalContext';\nimport { generateID } from '../../util/helper';\n\nexport interface Props extends ComponentPropsWithRef<'div'> {\n id?: string;\n open: boolean;\n children: React.ReactNode;\n alignActions: 'left' | 'right';\n onClose: () => void;\n title: string;\n primaryAction: Action;\n secondaryAction?: Action;\n zIndex?: number;\n disableEscapeKeyDown?: boolean;\n}\n\nexport interface Action extends Omit<ButtonProps, 'variant' | 'ref'> {\n label: string;\n onClick: (event?: React.MouseEvent<HTMLButtonElement>) => unknown;\n}\n\nexport const Dialog = React.forwardRef<HTMLDivElement, Props>(\n (\n {\n id,\n open,\n children,\n alignActions,\n onClose,\n title,\n primaryAction,\n secondaryAction,\n zIndex,\n disableEscapeKeyDown = true,\n ...rest\n }: Props,\n ref\n ) => {\n const [dialogId] = useState(id ?? generateID(20));\n const { label: primaryLabel, ...restOfPrimaryAction } = primaryAction;\n const PrimaryButton = (\n <Button key=\"primary\" {...restOfPrimaryAction}>\n {primaryLabel}\n </Button>\n );\n const TertiaryButton =\n secondaryAction &&\n (function () {\n const { label: secondaryLabel, ...restOfSecondaryAction } = secondaryAction;\n return (\n <Button key=\"tertiary\" variant=\"text\" {...restOfSecondaryAction}>\n {secondaryLabel}\n </Button>\n );\n })();\n\n const onHiddenInputKeyPress = (event: React.KeyboardEvent<HTMLInputElement>) => {\n /** It has to be here because then we will need to check if user doesn't click tab to select action button and want to do another action then primary one? */\n if (event.key === 'Enter') {\n primaryAction.onClick();\n }\n };\n\n return (\n <BaseModal\n {...rest}\n ref={ref}\n id={dialogId}\n className={classes['dialog']}\n containerProps={{ className: classes['container'] }}\n open={open}\n disableBackdrop\n onClose={onClose}\n zIndex={zIndex}\n disableEscapeKeyDown={disableEscapeKeyDown}\n >\n <DialogTitle id={labelId(dialogId)} title={title} />\n <BaseModalContent\n id={descriptionId(dialogId)}\n className={classes['content']}\n disableAutoFocus\n >\n {children}\n </BaseModalContent>\n <DialogActions align={alignActions}>\n {alignActions === 'left'\n ? [PrimaryButton, TertiaryButton]\n : [TertiaryButton, PrimaryButton]}\n </DialogActions>\n <input\n autoFocus\n aria-hidden={true}\n style={{\n position: 'absolute',\n width: 0,\n height: 0,\n opacity: 0,\n }}\n maxLength={0}\n tabIndex={-1}\n onKeyPress={onHiddenInputKeyPress}\n />\n </BaseModal>\n );\n }\n);\n","import React, { ComponentPropsWithRef } from 'react';\nimport classes from './BaseModalHeader.module.scss';\nimport { IconButton } from '../../../Button/IconButton';\nimport { Icon, Icons } from '../../../Icon/Icon';\nimport { Typography } from '../../../Typography/Typography';\n\nexport interface Props extends ComponentPropsWithRef<'div'> {\n id: string;\n title: string;\n children?: React.ReactNode;\n onClose: (event: React.MouseEvent<HTMLButtonElement>) => void;\n}\n\nexport const BaseModalHeader = React.forwardRef<HTMLDivElement, Props>(\n ({ id, title, children, onClose, ...rest }: Props, ref) => {\n return (\n <div {...rest} ref={ref} className={classes['header']}>\n <div className={classes['headline']}>\n <Typography id={id} className={classes['title']} tag=\"h1\" variant=\"h4\">\n {title}\n </Typography>\n <IconButton onClick={onClose} className={classes['closeBtn']} title=\"close modal\">\n <Icon icon={Icons.Times} />\n </IconButton>\n </div>\n {children}\n </div>\n );\n }\n);\n","import React, { ComponentPropsWithRef } from 'react';\nimport { Dialog } from '../../Dialog/Dialog';\nimport { Typography } from '../../../Typography/Typography';\nimport { DataAttributeKey } from '../../../interfaces';\n\nexport interface Props extends ComponentPropsWithRef<'div'> {\n open: boolean;\n discardChangesButtonLabel: string;\n keepEditingButtonLabel: string;\n contentLabel: string;\n titleLabel: string;\n [dataAttribute: DataAttributeKey]: any;\n onKeepEditing: () => void;\n onDiscardChanges: () => void;\n}\n\nexport const DiscardChangesDialog = React.forwardRef<HTMLDivElement, Props>(\n (\n {\n open,\n onKeepEditing,\n onDiscardChanges,\n discardChangesButtonLabel,\n keepEditingButtonLabel,\n contentLabel,\n titleLabel,\n ...rest\n }: Props,\n ref\n ) => {\n return (\n <Dialog\n {...rest}\n ref={ref}\n open={open}\n alignActions=\"left\"\n title={titleLabel}\n onClose={onKeepEditing}\n primaryAction={{\n label: discardChangesButtonLabel,\n onClick: onDiscardChanges,\n }}\n secondaryAction={{\n label: keepEditingButtonLabel,\n onClick: onKeepEditing,\n }}\n disableEscapeKeyDown={false}\n >\n <Typography variant=\"body\" spacing={{ margin: 0 }}>\n {contentLabel}\n </Typography>\n </Dialog>\n );\n }\n);\n","import React, { useState } from 'react';\nimport { Props as ModalProps, Modal } from '../Modal/Modal';\nimport classes from './SlideInModal.module.scss';\n\nexport const SlideInModal = React.forwardRef<HTMLDivElement, ModalProps>(\n ({ children, id, open, ...rest }: ModalProps, ref) => {\n const [classHideOnTransition, setClassHideOnTransition] = useState<'hidden' | ''>('hidden');\n\n const onTransitionEnd = () => setClassHideOnTransition((prev) => (prev ? '' : 'hidden'));\n\n return (\n <Modal\n {...rest}\n id={id}\n open={open}\n className={`${classes['slide-in-modal']} ${open ? classes['visible'] : ''} ${\n !open ? classes[classHideOnTransition] : ''\n }`}\n containerProps={{ className: classes['container'] }}\n backdropProps={{ className: classes['backdrop-slide'] }}\n forceContainerOpen\n onTransitionEnd={onTransitionEnd}\n ref={ref}\n >\n {children}\n </Modal>\n );\n }\n);\n\nexport { Props } from '../Modal/Modal';\n","import React from 'react';\nimport classes from './SnackbarContainer.module.scss';\n\nexport interface Placement {\n vertical: 'top' | 'bottom';\n horizontal: 'start' | 'center' | 'end';\n}\n\nexport interface Props {\n placement: Placement;\n children?: React.ReactNode;\n zIndex?: number;\n className?: string;\n}\n\nexport const SnackbarContainer = ({ placement, children, zIndex, className, ...rest }: Props) => {\n return (\n <div\n {...rest}\n style={{ zIndex }}\n className={`${classes['snackbars']} ${classes[placement.horizontal]} ${\n classes[placement.vertical]\n } ${className ?? ''}`}\n >\n {children}\n </div>\n );\n};\n","import { useEffect, useRef, useState } from 'react';\n\nexport const useAnimation = <RefElement extends HTMLElement>(callback: () => void) => {\n const animatedObjectRef = useRef<RefElement>(null);\n /** We need to store flag that says us when to call the callback */\n const [animationStarted, setAnimationStarted] = useState(false);\n\n const onAnimationEnd = () => animationStarted && callback();\n\n useEffect(() => {\n animatedObjectRef.current?.addEventListener('animationend', onAnimationEnd);\n return () => animatedObjectRef.current?.removeEventListener('animationend', onAnimationEnd);\n }, [animationStarted]);\n\n return {\n ref: animatedObjectRef,\n animationStarted,\n startAnimation: () => setAnimationStarted(true),\n };\n};\n","import React, { useEffect, useRef } from 'react';\nimport { IconButton } from '../../../Button/IconButton';\nimport { Icon, Icons } from '../../../Icon/Icon';\nimport { Variant, Actions } from '../interfaces';\nimport classes from './SnackbarItem.module.scss';\nimport readyclasses from '../../../readyclasses.module.scss';\nimport { useAnimation } from '../../../hooks/useAnimation';\nimport { Typography } from '../../../Typography/Typography';\n\nconst textColor = 'var(--snackbar-text-color)';\n\nexport interface Props {\n id: string;\n title: string;\n duration: number;\n variant: Variant;\n onClose: (key: string) => void;\n closeButtonTitle: string;\n content?: string;\n actions?: Actions;\n}\n\nexport const SnackbarItem = ({\n id,\n title,\n duration,\n variant,\n content,\n actions = [],\n onClose,\n closeButtonTitle,\n}: Props) => {\n const timerHandler = useRef<ReturnType<typeof setTimeout>>();\n const onAnimationEnd = () => onClose(id);\n const { ref, animationStarted, startAnimation } = useAnimation<HTMLDivElement>(onAnimationEnd);\n\n useEffect(() => {\n timerHandler.current = setTimeout(() => startAnimation(), duration);\n return () => {\n timerHandler.current && clearTimeout(timerHandler.current);\n };\n }, []);\n\n const onMouseEnter = () => {\n timerHandler.current && clearTimeout(timerHandler.current);\n };\n\n const onMouseLeave = () => {\n timerHandler.current = setTimeout(() => startAnimation(), duration);\n };\n\n const getVariantIcon = () => {\n if (variant === 'error') {\n return Icons.Error;\n }\n return variant === 'success' ? Icons.CheckmarkCircleBreakout : Icons.InfoCircle;\n };\n\n const actionButtons = actions.map((actionProp, index) => (\n <button\n key={index}\n {...actionProp}\n onClick={(e) => {\n onClose(id);\n actionProp.onClick && actionProp.onClick(e);\n }}\n children={actionProp.label}\n className={classes['action-button']}\n ></button>\n ));\n\n return (\n <div\n ref={ref}\n className={`${classes['snackbar']} ${classes[variant]} ${\n animationStarted ? readyclasses['slide-out'] : readyclasses['slide-in']\n }`}\n onMouseEnter={onMouseEnter}\n onMouseLeave={onMouseLeave}\n >\n <Icon icon={getVariantIcon()} className={classes['icon']} />\n <div className={classes['container']}>\n <div className={classes['headline']}>\n <Typography className={classes['title']} variant=\"h4\" tag=\"span\">\n {title}\n </Typography>\n <IconButton\n onClick={() => startAnimation()}\n className={classes['close-btn']}\n title={closeButtonTitle}\n >\n <Icon icon={Icons.Times} color={textColor} />\n </IconButton>\n </div>\n {!!content && (\n <Typography className={classes['content']} variant=\"body\">\n {content}\n </Typography>\n )}\n {actionButtons.length > 0 && <div className={classes['actions']}>{actionButtons}</div>}\n </div>\n </div>\n );\n};\n","import { useEffect, useState } from 'react';\nimport { generateID } from '../util/helper';\n\nexport interface ConfigObject {\n name: string | undefined;\n errorMessage?: string;\n error?: boolean;\n parentErrorId?: string;\n helperText?: string;\n parentHelperId?: string;\n}\n\nexport const useFormSelector = (configObject: ConfigObject) => {\n const [identifier] = useState(generateID(15, configObject.name));\n const [describedBy, setDescribedBy] = useState('');\n const [errorId] = useState(generateID(15, configObject.errorMessage));\n\n useEffect(() => {\n if (configObject.error && configObject.parentErrorId) {\n setDescribedBy(configObject.parentErrorId);\n }\n\n if (\n (!configObject.error && configObject.helperText) ||\n (!configObject.parentErrorId && !configObject.errorMessage && configObject.helperText)\n ) {\n setDescribedBy(`${identifier}`);\n }\n\n if (\n (!configObject.error && !configObject.helperText && configObject.parentHelperId) ||\n (!configObject.parentErrorId && !configObject.errorMessage && configObject.parentHelperId)\n ) {\n setDescribedBy(`${configObject.parentHelperId}`);\n }\n\n if (configObject.errorMessage && !configObject.parentErrorId && configObject.error) {\n setDescribedBy(errorId);\n }\n }, [identifier, configObject.error, configObject.parentErrorId]);\n\n return {\n describedBy,\n errorId,\n identifier,\n };\n};\n","import React, { ComponentPropsWithRef, ReactNode } from 'react';\nimport classes from './FormHelperText.module.scss';\nimport { Typography } from '../../Typography/Typography';\nimport { FormElement } from '../form.interfaces';\n\nexport interface Props extends ComponentPropsWithRef<'div'>, FormElement {\n children?: ReactNode;\n}\n\nexport const FormHelperText = React.forwardRef<HTMLDivElement, Props>(\n ({ children, error, className, ...rest }: Props, ref) => {\n return (\n <Typography\n {...rest}\n ref={ref}\n variant=\"sub-text\"\n tag=\"div\"\n className={`${classes['form-helper-text']} ${error ? classes.error : ''} ${\n className ?? ''\n }`}\n >\n {children}\n </Typography>\n );\n }\n);\n","import React, { ComponentPropsWithRef, createRef, ReactNode } from 'react';\nimport { Icon, Icons } from '../../Icon/Icon';\nimport { KeyValuePair } from '../../interfaces';\nimport { FormSelector } from '../form.interfaces';\nimport { FormHelperText, Props as FormHelperTextProps } from '../FormHelperText/FormHelperText';\nimport classes from './FormSelectorWrapper.module.scss';\n\nexport interface Props extends ComponentPropsWithRef<'div'>, FormSelector {\n children?: ReactNode;\n nestedChildren?: ReactNode;\n containerProps?: ComponentPropsWithRef<'div'> & KeyValuePair;\n helperProps?: FormHelperTextProps;\n disabled?: boolean;\n errorId?: string;\n identifier?: string;\n}\n\nexport const FormSelectorWrapper = React.forwardRef<HTMLDivElement, Props>(\n (\n {\n children,\n className,\n nestedChildren,\n containerProps,\n helperProps,\n error,\n disabled,\n helperText,\n errorMessage,\n parentErrorId,\n errorId,\n identifier,\n ...rest\n }: Props,\n ref\n ) => {\n const helperRef = helperProps?.ref || createRef();\n\n return (\n <div\n {...rest}\n ref={ref}\n className={`${error ? classes['error'] : ''} ${disabled ? classes['disabled'] : ''} ${\n className ?? ''\n }`}\n >\n <div {...containerProps}>{children}</div>\n {(helperText || (helperProps && helperProps.children)) &&\n (!error || parentErrorId || !errorMessage) && (\n <FormHelperText\n {...helperProps}\n ref={helperRef}\n id={`${identifier}`}\n className={`${classes['helper-text']} ${helperProps?.className ?? ''} ${\n error ? classes['error'] : ''\n }`}\n >\n {(helperProps && helperProps.children) || helperText}\n </FormHelperText>\n )}\n {errorMessage && !parentErrorId && error && (\n <span className={classes['error-message']}>\n <Icon className={classes['error-icon']} icon={Icons.Error} />\n <span id={errorId}>{errorMessage}</span>\n </span>\n )}\n {nestedChildren}\n </div>\n );\n }\n);\n","import React, { ComponentPropsWithRef, ReactElement, ReactNode, useEffect } from 'react';\nimport { Icon, Icons } from '../../Icon/Icon';\nimport { Props as FormHelperTextProps } from '../FormHelperText/FormHelperText';\nimport classes from './Checkbox.module.scss';\nimport { useFormSelector } from '../../hooks/useFormSelector';\nimport {\n FormSelectorWrapper,\n Props as FormSelectorWrapperProps,\n} from '../FormSelectorWrapper/FormSelectorWrapper';\nimport { FormSelector } from '../form.interfaces';\n\nconst isToggle = (children: ReactNode) => (children as ReactElement)?.props?.['data-toggle'];\n\nexport interface Props extends ComponentPropsWithRef<'input'>, FormSelector {\n children: ReactNode;\n label?: string;\n indeterminate?: boolean;\n helperProps?: FormHelperTextProps;\n formSelectorWrapperProps?: FormSelectorWrapperProps;\n onChange?: (event: React.ChangeEvent<HTMLInputElement>) => void;\n}\n\nexport const Checkbox = React.forwardRef<HTMLInputElement, Props>(\n (\n {\n children,\n name,\n helperText,\n helperProps,\n indeterminate,\n parentErrorId,\n errorMessage,\n disabled,\n label,\n parentHelperId,\n className,\n error,\n checked = false,\n formSelectorWrapperProps,\n onChange,\n ...rest\n }: Props,\n ref\n ) => {\n const { errorId, identifier, describedBy } = useFormSelector({\n name,\n helperText,\n parentErrorId,\n errorMessage,\n error,\n parentHelperId,\n });\n\n useEffect(() => {\n if (!name) {\n throw new Error(\"Please pass a 'name' prop to your <Checkbox> component.\");\n }\n\n if (typeof children === 'object' && !isToggle(children) && indeterminate === undefined) {\n throw new Error(\n 'If you have nested checkboxes you have to manage the indeterminate state by passing a boolean to the `indeterminate` prop.'\n );\n }\n }, []);\n\n const determineLabel = () => {\n if (label) {\n return label;\n } else if (children === undefined) {\n throw new Error(\n 'Please make sure to pass either a string or more Checkbox components as a child of your Checkbox component.'\n );\n }\n\n if (typeof children === 'string') {\n return children;\n }\n\n throw new Error(\n 'If you pass Checkboxes as a child component (to create nested checkbox tree) you need to pass a label to the parent checkbox.'\n );\n };\n\n const renderNestedCheckboxes = () => (\n <ul className={classes['checkbox-list']}>\n {React.Children.map(children as ReactElement[], (child) => {\n return (\n <li>\n <Checkbox\n {...child.props}\n parentHelperId={parentHelperId}\n parentErrorId={parentErrorId}\n error={error}\n disabled={child.props.disabled ? child.props.disabled : disabled}\n >\n {child.props.children}\n </Checkbox>\n </li>\n );\n })}\n </ul>\n );\n\n const onChangeHandler = (event: React.ChangeEvent<HTMLInputElement>) => {\n if (disabled) {\n return;\n }\n onChange && onChange(event);\n };\n\n const renderToggle = () => React.Children.toArray(children).filter(isToggle);\n\n const iconClasses = [classes['input'], disabled ? classes['disabled'] : ''];\n\n /** Default return value is the default checkbox */\n return (\n <FormSelectorWrapper\n {...formSelectorWrapperProps}\n className={`${classes['checkbox-wrapper']} ${className ? className : ''}`}\n containerProps={{ className: classes['checkbox-container'] }}\n helperText={helperText}\n helperProps={helperProps}\n parentErrorId={parentErrorId}\n errorId={errorId}\n errorMessage={errorMessage}\n error={error}\n disabled={disabled}\n identifier={identifier}\n nestedChildren={\n typeof children === 'object' && !isToggle(children) && renderNestedCheckboxes()\n }\n >\n <input\n {...rest}\n ref={ref}\n disabled={disabled}\n className={`${classes['native-input']} ${error ? classes['error'] : ''}`}\n checked={checked}\n onChange={onChangeHandler}\n aria-invalid={error as boolean}\n aria-checked={indeterminate ? 'mixed' : checked}\n aria-describedby={describedBy}\n id={`${identifier}-checkbox`}\n name={name}\n type=\"checkbox\"\n />\n {renderToggle()}\n\n {indeterminate && <Icon className={iconClasses.join(' ')} icon={Icons.MinusSquare} />}\n {checked && !indeterminate && (\n <Icon className={iconClasses.join(' ')} icon={Icons.CheckmarkSquare} />\n )}\n {!checked && !indeterminate && (\n <Icon className={iconClasses.join(' ')} icon={Icons.Square} />\n )}\n <label htmlFor={`${identifier}-checkbox`}>{determineLabel()}</label>\n </FormSelectorWrapper>\n );\n }\n);\n","import React, { ComponentPropsWithRef } from 'react';\nimport { Icon, Icons } from '../../Icon/Icon';\nimport { Props as HelperProps } from '../FormHelperText/FormHelperText';\nimport classes from './Radio.module.scss';\nimport { useFormSelector } from '../../hooks/useFormSelector';\nimport { FormSelector } from '../form.interfaces';\nimport {\n FormSelectorWrapper,\n Props as FormSelectorWrapperProps,\n} from '../FormSelectorWrapper/FormSelectorWrapper';\n\nexport interface Props extends ComponentPropsWithRef<'input'>, FormSelector {\n children: string;\n value: string;\n formSelectorWrapperProps?: FormSelectorWrapperProps;\n helperProps?: HelperProps;\n}\n\nexport const Radio = React.forwardRef<HTMLInputElement, Props>(\n (\n {\n children,\n disabled,\n className,\n value,\n name,\n helperText,\n parentErrorId,\n parentHelperId,\n error,\n errorMessage,\n checked = false,\n formSelectorWrapperProps,\n helperProps,\n onChange,\n ...rest\n }: Props,\n ref\n ) => {\n const { errorId, identifier, describedBy } = useFormSelector({\n name,\n helperText,\n parentErrorId,\n errorMessage,\n error,\n parentHelperId,\n });\n\n const onChangeHandler = (event: React.ChangeEvent<HTMLInputElement> | React.MouseEvent) => {\n if (disabled) {\n return;\n }\n /** We have to clone the native event we got here and change the \"target\" property to the value. Otherwise, this regular event has \"on\" as it's event.target.value, which is useless. */\n const nativeEvent: any = event.nativeEvent || event;\n const clonedEvent = new nativeEvent.constructor(nativeEvent.type, nativeEvent);\n\n Object.defineProperty(clonedEvent, 'target', {\n writable: true,\n value: { value: value },\n });\n\n onChange && onChange(clonedEvent);\n };\n\n /** Default return value is the default radio */\n return (\n <FormSelectorWrapper\n {...formSelectorWrapperProps}\n className={`${classes['radio-wrapper']} ${className ?? ''}`}\n containerProps={{ className: classes['radio-container'] }}\n helperText={helperText}\n helperProps={helperProps}\n parentErrorId={parentErrorId}\n errorId={errorId}\n errorMessage={errorMessage}\n error={error}\n disabled={disabled}\n identifier={identifier}\n >\n <input\n {...rest}\n ref={ref}\n disabled={disabled}\n tabIndex={0}\n className={`${classes['native-input']} ${error ? classes['error'] : ''}`}\n onChange={onChangeHandler}\n checked={checked}\n aria-invalid={error ? true : false}\n aria-checked={checked}\n aria-describedby={describedBy}\n name={name}\n value={value}\n id={`${identifier}-radio`}\n type=\"radio\"\n />\n\n {checked && (\n <Icon\n className={`${classes['input']} ${disabled ? classes['disabled'] : ''}`}\n icon={Icons.Radio}\n />\n )}\n {!checked && (\n <Icon\n className={`${classes['input']} ${disabled ? classes['disabled'] : ''}`}\n icon={Icons.Circle}\n />\n )}\n\n <label onClick={onChangeHandler} htmlFor={`${identifier}-radio`}>\n {children}\n </label>\n </FormSelectorWrapper>\n );\n }\n);\n","import React, { ComponentPropsWithRef } from 'react';\nimport { Icon, Props as IconProps, Icons } from '../../Icon/Icon';\nimport classes from './Textarea.module.scss';\nimport { FormElement } from '../form.interfaces';\n\ninterface IconPropsPartial extends Omit<Partial<IconProps>, 'ref'> {}\n\nexport interface Props extends ComponentPropsWithRef<'textarea'>, FormElement {\n wrapperProps?: ComponentPropsWithRef<'div'>;\n errorProps?: IconPropsPartial;\n}\n\nexport const Textarea = React.forwardRef<HTMLTextAreaElement, Props>(\n (\n {\n error = false,\n disabled = false,\n className,\n rows = 4,\n wrapperProps,\n errorProps,\n ...rest\n }: Props,\n ref\n ) => {\n return (\n <div\n {...wrapperProps}\n className={`${classes['textarea-wrapper']} ${wrapperProps?.className ?? ''}`}\n >\n <textarea\n {...rest}\n ref={ref}\n rows={rows}\n className={`${error ? classes['error'] : ''} ${classes['textarea']} ${className ?? ''}`}\n disabled={disabled}\n />\n {error && (\n <Icon\n {...errorProps}\n className={`${classes['warning']} ${errorProps?.className ?? ''}`}\n icon={Icons.Error}\n />\n )}\n </div>\n );\n }\n);\n","import React, { ComponentPropsWithRef } from 'react';\nimport { Checkbox, Props as CheckboxProps } from '../Checkbox/Checkbox';\nimport classes from './Toggle.module.scss';\n\nexport interface Props\n extends ComponentPropsWithRef<'input'>,\n Omit<CheckboxProps, 'indeterminate' | 'errorMessage' | 'error' | 'children' | 'label'> {\n children: string;\n}\n\nexport const Toggle = React.forwardRef<HTMLInputElement, Props>(\n ({ children, checked, disabled, helperProps, ...rest }: Props, ref) => (\n <div className={classes['toggle-wrapper']}>\n <Checkbox\n {...rest}\n ref={ref}\n checked={checked}\n className={classes['checkbox']}\n helperProps={{ className: classes['toggle-helper'], ...helperProps }}\n disabled={disabled}\n label={children}\n >\n <span\n data-toggle\n aria-hidden=\"true\"\n className={`${classes['toggle']} ${checked ? classes['checked'] : ''} ${\n disabled ? classes['disabled'] : ''\n } `}\n ></span>\n </Checkbox>\n </div>\n )\n);\n","import React, { ComponentPropsWithRef, ReactElement } from 'react';\nimport classes from './FormControl.module.scss';\n\nexport interface Props extends ComponentPropsWithRef<'div'> {\n children?: ReactElement | ReactElement[];\n grid?: 1 | 2 | 3;\n align?: 'top' | 'start' | 'middle' | 'center' | 'bottom' | 'end' | 'stretch';\n error?: boolean;\n disabled?: boolean;\n}\n\nexport const FormControl = React.forwardRef<HTMLDivElement, Props>(\n ({ children, disabled, error, className, grid, align = 'center', ...rest }: Props, ref) => {\n const renderChildren = () =>\n React.Children.map(children, (child) => {\n if (!child) {\n return null;\n }\n\n const childElement = React.cloneElement(child, {\n disabled: child.props.disabled !== undefined ? child.props.disabled : disabled,\n error: child.props.error !== undefined ? child.props.error : error,\n });\n\n if (grid && grid > 1) {\n return (\n <div className={`${classes['col-' + grid]} ${classes.column}`}>{childElement}</div>\n );\n }\n\n return childElement;\n });\n\n return (\n <div\n {...rest}\n ref={ref}\n data-formcontrol\n className={`${classes['form-control']} ${className ? className : ''} ${\n grid && grid > 1 ? `${classes.grid} ${classes['grid-' + grid]}` : ''\n } ${classes[align]}`}\n >\n {renderChildren()}\n </div>\n );\n }\n);\n","/** The empty className property on FormHelperText is on purpose! We want to basically \"filter\" out the className from helperProps because we're adding this to the surrounding div. This makes it so also the errormessage receives this styling. */\n\nimport React, { ComponentPropsWithRef, ReactChild } from 'react';\nimport classes from './FormGroup.module.scss';\nimport { FormHelperText, Props as HelperProps } from '../FormHelperText/FormHelperText';\nimport { Icon, Icons } from '../../Icon/Icon';\n\nexport interface Props extends ComponentPropsWithRef<'div'> {\n children: ReactChild[] | ReactChild;\n error?: boolean;\n errorMessageIcon?: Icons;\n errorMessageIconPosition?: 'before' | 'after';\n errorMessage?: string;\n errorId?: string;\n helperIndent?: number;\n helperText?: string;\n helperId?: string;\n helperProps?: HelperProps;\n disabled?: boolean;\n}\n\nexport const FormGroup = React.forwardRef<HTMLDivElement, Props>(\n (\n {\n children,\n className,\n error,\n errorMessage,\n errorId,\n errorMessageIcon,\n errorMessageIconPosition = 'before',\n helperText,\n helperId,\n helperProps,\n helperIndent,\n ...rest\n }: Props,\n ref\n ) => {\n return (\n <div\n {...rest}\n ref={ref}\n className={`${classes['form-group']} ${error ? classes.error : ''} ${className ?? ''}`}\n >\n {children}\n\n {(helperText || (errorMessage && error)) && (\n <div\n style={{ marginLeft: `${helperIndent}px` }}\n className={`${classes['default-helper']} ${\n helperProps?.className ? helperProps.className : ''\n }`}\n >\n {helperText && !error && (\n <FormHelperText {...helperProps} className={''} id={helperId}>\n {(helperProps && helperProps.children) || helperText}\n </FormHelperText>\n )}\n {error && errorMessage && (\n <span className={classes['error-message']}>\n <span className={classes.message} id={errorId}>\n {errorMessageIcon && errorMessageIconPosition === 'before' && (\n <Icon\n className={`${classes['error-icon']} ${classes['error-icon-before']}`}\n icon={errorMessageIcon}\n />\n )}\n {errorMessage}\n {errorMessageIcon && errorMessageIconPosition === 'after' && (\n <Icon\n className={`${classes['error-icon']} ${classes['error-icon-after']}`}\n icon={errorMessageIcon}\n />\n )}\n </span>\n </span>\n )}\n </div>\n )}\n </div>\n );\n }\n);\n","import React, { ComponentPropsWithRef, ReactElement } from 'react';\nimport { FormGroup, Props as FormGroupProps } from '../../FormGroup/FormGroup';\nimport { Label, Props as LabelProps } from '../../Label/Label';\nimport classes from './Wrapper.module.scss';\nimport { Props as HelperProps } from '../../FormHelperText/FormHelperText';\nimport { FormElement } from '../../form.interfaces';\n\nexport interface Props extends ComponentPropsWithRef<'div'>, FormGroupProps {\n children: ReactElement | ReactElement[];\n floatingLabelActive?: boolean;\n floatingLabel?: boolean;\n helperIndent?: number;\n label?: string;\n labelProps?: LabelProps;\n name: string;\n /** This does NOT add validation! It simply adds an asterix on the Label! */\n required?: boolean;\n innerClassName?: string;\n}\n\n/** For components that extend this component we create an interface (InputWrapper, SelectWrapper, etc.) */\nexport interface WrapperProps extends FormElement {\n errorMessage?: string;\n helperText?: string;\n helperProps?: HelperProps;\n label?: string;\n name: string;\n required?: boolean;\n disabled?: boolean;\n}\n\nexport const Wrapper = React.forwardRef<HTMLDivElement, Props>(\n (\n {\n children,\n className,\n error,\n errorMessage,\n errorId,\n errorMessageIcon,\n errorMessageIconPosition,\n helperText,\n helperId,\n floatingLabel = true,\n floatingLabelActive,\n required,\n helperProps,\n helperIndent,\n labelProps,\n label,\n disabled,\n name,\n innerClassName,\n ...rest\n }: Props,\n ref\n ) => {\n const renderChildren = () =>\n React.Children.map(children, (child) =>\n React.cloneElement(child, {\n disabled,\n })\n );\n\n const labelClasses = [];\n\n floatingLabel && labelClasses.push(classes['floating-label']);\n floatingLabel && floatingLabelActive && labelClasses.push(classes['floating-label-active']);\n labelProps?.className && labelClasses.push(labelProps.className);\n required && labelClasses.push(classes['required']);\n error && labelClasses.push(classes['error']);\n\n return (\n <div {...rest} ref={ref} className={`${classes.wrapper} ${className ? className : ''}`}>\n <FormGroup\n error={error}\n errorMessage={errorMessage}\n errorId={errorId}\n errorMessageIcon={errorMessageIcon}\n errorMessageIconPosition={errorMessageIconPosition}\n helperText={helperText}\n helperId={helperId}\n helperProps={helperProps}\n helperIndent={helperIndent}\n >\n <div\n className={`${floatingLabel ? classes['floating-wrapper'] : ''} ${\n innerClassName ? innerClassName : ''\n }`}\n >\n {label && (\n <Label\n {...labelProps}\n className={`${classes.label} ${labelClasses.join(' ')}`}\n htmlFor={name}\n >\n {label}\n </Label>\n )}\n {renderChildren()}\n </div>\n </FormGroup>\n </div>\n );\n }\n);\n","import { useEffect, useState } from 'react';\nimport { generateID } from '../util/helper';\nimport { Type as InputTypes } from '../Form/Input/Input';\n\nexport const useWrapper = (value?: string, placeholder?: string, type?: InputTypes) => {\n const [helperId] = useState(generateID(20));\n const [errorId] = useState(generateID(20));\n const [labelId] = useState(generateID(20));\n const [floatingLabelActive, setFloatingLabelActive] = useState(false);\n const [hasFocus, setHasFocus] = useState(false);\n\n useEffect(() => {\n if (\n (value?.length && value.length > 0) ||\n placeholder ||\n type === 'datetime-local' ||\n type === 'time'\n ) {\n setFloatingLabelActive(true);\n }\n }, []);\n\n useEffect(() => {\n if ((value?.length && value.length > 0) || hasFocus) {\n setFloatingLabelActive(true);\n } else if (!placeholder && !hasFocus && type !== 'datetime-local' && type !== 'time') {\n setFloatingLabelActive(false);\n }\n }, [value, placeholder, type, hasFocus]);\n\n return {\n helperId,\n errorId,\n labelId,\n floatingLabelActive,\n setFloatingLabelActive,\n hasFocus,\n setHasFocus,\n };\n};\n","import React, { ComponentPropsWithRef, useEffect, useRef, useState } from 'react';\nimport { Input, Type, Props as InputProps } from '../../Input/Input';\nimport classes from './InputWrapper.module.scss';\nimport { Wrapper, WrapperProps } from '../Wrapper/Wrapper';\nimport { useWrapper } from '../../../hooks/useWrapper';\n\ninterface PartialInputProps extends Partial<InputProps> {}\n\nexport interface Props extends ComponentPropsWithRef<'div'>, WrapperProps {\n label: string;\n type: Type;\n name: string;\n inputProps?: PartialInputProps;\n value: string;\n onChange?: (event: React.ChangeEvent<HTMLInputElement>) => void;\n onBlur?: (event: React.FocusEvent<HTMLInputElement>) => void;\n onFocus?: (event: React.FocusEvent<HTMLInputElement>) => void;\n}\n\nconst useLabelOffset = (\n wrapper: React.RefObject<HTMLDivElement>,\n input: React.RefObject<HTMLInputElement>,\n floatingLabelActive: boolean,\n prefix?: string\n) => {\n const [labelOffset, setLabelOffset] = useState({});\n\n const resetLabelOffset = () => setLabelOffset({ left: undefined });\n\n useEffect(() => {\n if (wrapper.current && input.current && prefix) {\n if (floatingLabelActive) {\n resetLabelOffset();\n } else {\n const prefixDifference =\n input.current.getBoundingClientRect().left -\n wrapper.current.getBoundingClientRect().left +\n 4;\n\n setLabelOffset({ left: `${prefixDifference}px` });\n }\n }\n }, [wrapper.current, input.current, prefix, floatingLabelActive]);\n\n return { labelOffset };\n};\n\nexport const InputWrapper = React.forwardRef<HTMLDivElement, Props>(\n (\n {\n type,\n name,\n inputProps,\n helperText,\n helperProps,\n value,\n className,\n error,\n onChange,\n onBlur,\n onFocus,\n ...rest\n }: Props,\n ref\n ) => {\n const {\n errorId,\n floatingLabelActive,\n setFloatingLabelActive,\n hasFocus,\n setHasFocus,\n helperId,\n labelId,\n } = useWrapper(value, inputProps?.placeholder, type);\n const { prefix, suffix } = inputProps || {};\n const wrapper = useRef<HTMLDivElement>(null);\n const input = useRef<HTMLInputElement>(null);\n const hasValueOrActiveFloatingLabel = !!value || floatingLabelActive;\n const labelClasses = [classes['input-label']];\n const { labelOffset } = useLabelOffset(\n (ref as React.RefObject<HTMLDivElement>) || wrapper,\n (inputProps && (inputProps.ref as React.RefObject<HTMLInputElement>)) || input,\n floatingLabelActive,\n prefix\n );\n\n hasFocus && labelClasses.push(classes['focus']);\n\n return (\n <Wrapper\n {...rest}\n ref={ref || wrapper}\n name={name}\n className={`${classes['input-wrapper']} ${className ?? ''}`}\n labelProps={{\n id: labelId,\n className: labelClasses.join(' '),\n style: { ...labelOffset },\n }}\n floatingLabelActive={floatingLabelActive}\n errorId={errorId}\n error={error}\n helperId={helperId}\n helperText={helperText}\n helperProps={{\n ...helperProps,\n className: `${classes['input-wrapper-helper']} ${helperProps?.className ?? ''} `,\n }}\n helperIndent={20}\n >\n <Input\n {...inputProps}\n prefix={hasValueOrActiveFloatingLabel ? prefix : ''}\n suffix={hasValueOrActiveFloatingLabel ? suffix : ''}\n wrapperProps={{\n className: `${floatingLabelActive ? classes['floating-label-active'] : ''} ${\n inputProps?.wrapperProps?.className ?? ''\n }`,\n }}\n ref={(inputProps && inputProps.ref) || input}\n aria-labelledby={labelId}\n aria-describedby={error ? errorId : helperId}\n onChange={onChange}\n onFocus={(e) => {\n onFocus && onFocus(e);\n setHasFocus(true);\n setFloatingLabelActive(true);\n }}\n onBlur={(e) => {\n onBlur && onBlur(e);\n setHasFocus(false);\n e.target.value ||\n e.target.placeholder ||\n inputProps?.placeholder?.length ||\n type === 'datetime-local' ||\n type === 'time'\n ? setFloatingLabelActive(true)\n : setFloatingLabelActive(false);\n }}\n className={`${floatingLabelActive ? classes['floating-label'] : ''} ${\n inputProps?.className ?? ''\n }`}\n name={name}\n error={error}\n id={name}\n value={value}\n type={type}\n />\n </Wrapper>\n );\n }\n);\n","import React, { ComponentPropsWithRef, ReactChild, ReactElement } from 'react';\nimport classes from './SelectWrapper.module.scss';\nimport { Wrapper, WrapperProps } from '../Wrapper/Wrapper';\nimport { Select, Props as SelectProps } from '../../Select/Select';\nimport { useWrapper } from '../../../hooks/useWrapper';\n\ninterface PartialSelectProps extends Partial<SelectProps> {}\n\nexport interface Props\n extends Omit<ComponentPropsWithRef<'div'>, 'onChange'>,\n Omit<WrapperProps, 'onChange' | 'error'> {\n children: ReactChild | ReactChild[];\n placeholder?: string;\n value: string;\n error?: boolean;\n selectProps?: PartialSelectProps;\n onChange?: (event: React.ChangeEvent<HTMLSelectElement>) => void;\n onClear?: (event: React.MouseEvent<HTMLDivElement> | React.KeyboardEvent<HTMLDivElement>) => void;\n}\n\nexport const SelectWrapper = React.forwardRef<HTMLDivElement, Props>(\n (\n {\n children,\n error,\n value,\n placeholder,\n selectProps,\n helperProps,\n onChange,\n onClear,\n ...rest\n }: Props,\n ref\n ) => {\n const { errorId, floatingLabelActive, helperId, labelId } = useWrapper(value, placeholder);\n\n return (\n <Wrapper\n {...rest}\n ref={ref}\n floatingLabelActive={floatingLabelActive}\n errorId={errorId}\n helperId={helperId}\n labelProps={{ id: labelId, className: classes['select-label'] }}\n helperProps={{\n ...helperProps,\n className: `${classes['select-helper-text']} ${helperProps?.className ?? ''}`,\n }}\n error={error}\n >\n <Select\n {...selectProps}\n value={value}\n labeledBy={labelId}\n error={error}\n describedBy={error ? errorId : helperId}\n onChange={onChange}\n onClear={(e) => {\n onClear && onClear(e);\n }}\n placeholder={placeholder}\n className={`${floatingLabelActive ? classes['floating-label-active'] : ''} ${\n selectProps?.className ?? ''\n }`}\n >\n {children as ReactElement[]}\n </Select>\n </Wrapper>\n );\n }\n);\n","import React, { ComponentPropsWithRef, useState } from 'react';\nimport classes from './TextareaWrapper.module.scss';\nimport { Wrapper, WrapperProps } from '../Wrapper/Wrapper';\nimport { Textarea, Props as TextareaProps } from '../../Textarea/Textarea';\nimport { useWrapper } from '../../../hooks/useWrapper';\n\nexport interface Props\n extends Omit<\n ComponentPropsWithRef<'div'>,\n 'onFocus' | 'onChange' | 'onBlur' | 'onMouseEnter' | 'onMouseLeave'\n >,\n Omit<WrapperProps, 'onFocus' | 'onChange' | 'onBlur' | 'onMouseEnter' | 'onMouseLeave'> {\n placeholder?: string;\n textareaProps?: TextareaProps;\n value: string;\n onFocus?: (event: React.FocusEvent<HTMLTextAreaElement>) => void;\n onChange?: (event: React.ChangeEvent<HTMLTextAreaElement>) => void;\n onBlur?: (event: React.FocusEvent<HTMLTextAreaElement>) => void;\n onMouseEnter?: (event: React.MouseEvent<HTMLTextAreaElement>) => void;\n onMouseLeave?: (event: React.MouseEvent<HTMLTextAreaElement>) => void;\n}\n\nexport const TextareaWrapper = React.forwardRef<HTMLDivElement, Props>(\n (\n {\n name,\n error,\n value,\n label,\n placeholder,\n textareaProps,\n helperProps,\n onChange,\n onFocus,\n onBlur,\n onMouseEnter,\n onMouseLeave,\n disabled,\n ...rest\n }: Props,\n ref\n ) => {\n const {\n errorId,\n floatingLabelActive,\n setFloatingLabelActive,\n hasFocus,\n setHasFocus,\n helperId,\n labelId,\n } = useWrapper(value, placeholder);\n const [hover, setHover] = useState(false);\n\n const optionalClasses: string[] = [];\n\n hasFocus && optionalClasses.push(classes['focus']);\n hover && optionalClasses.push(classes['hover']);\n disabled && optionalClasses.push(classes['disabled']);\n error && optionalClasses.push(classes['error']);\n\n return (\n <Wrapper\n {...rest}\n ref={ref}\n disabled={disabled}\n labelProps={{\n id: labelId,\n className: `${classes['textarea-label']} ${hasFocus ? classes['focus'] : ''}`,\n }}\n name={name}\n label={label}\n helperId={helperId}\n helperProps={{\n ...helperProps,\n className: classes['textarea-helper-text'],\n }}\n error={error}\n floatingLabelActive={floatingLabelActive}\n errorId={errorId}\n >\n <Textarea\n {...textareaProps}\n error={error}\n aria-labelledby={label && labelId}\n aria-describedby={error ? errorId : helperId}\n placeholder={placeholder}\n name={name}\n id={name}\n value={value}\n onChange={onChange}\n onFocus={(e) => {\n onFocus && onFocus(e);\n setHasFocus(true);\n setFloatingLabelActive(true);\n }}\n onBlur={(e) => {\n onBlur && onBlur(e);\n setHasFocus(false);\n e.target.value || e.target.placeholder || textareaProps?.placeholder?.length\n ? setFloatingLabelActive(true)\n : setFloatingLabelActive(false);\n }}\n onMouseEnter={(e) => {\n onMouseEnter && onMouseEnter(e);\n setHover(true);\n }}\n onMouseLeave={(e) => {\n onMouseLeave && onMouseLeave(e);\n setHover(false);\n }}\n className={classes['textarea']}\n wrapperProps={{\n className: `${classes['textarea-wrapper']}} ${optionalClasses.join(' ')}`,\n }}\n errorProps={{ className: classes['error-icon'] }}\n />\n </Wrapper>\n );\n }\n);\n","import React, { ComponentPropsWithRef, ReactNode, ReactElement } from 'react';\nimport readyclasses from '../../readyclasses.module.scss';\nimport classes from './Fieldset.module.scss';\nimport { Typography, Variant } from '../../Typography/Typography';\nimport { Input } from '../Input/Input';\nimport { Select } from '../Select/Select';\nimport { Radio } from '../Radio/Radio';\nimport { Checkbox } from '../Checkbox/Checkbox';\nimport { Textarea } from '../Textarea/Textarea';\nimport { Toggle } from '../Toggle/Toggle';\nimport { Label } from '../Label/Label';\nimport { FormControl } from '../FormControl/FormControl';\nimport { FormSelectorWrapper } from '../FormSelectorWrapper/FormSelectorWrapper';\nimport { FormHelperText } from '../FormHelperText/FormHelperText';\nimport { InputWrapper } from '../Wrapper/InputWrapper/InputWrapper';\nimport { SelectWrapper } from '../Wrapper/SelectWrapper/SelectWrapper';\nimport { TextareaWrapper } from '../Wrapper/TextareaWrapper/TextareaWrapper';\n\nexport interface Props extends ComponentPropsWithRef<'fieldset'> {\n children?: ReactElement | ReactElement[];\n legend: string;\n legendStyle?: Variant;\n hideLegend?: boolean;\n background?: string;\n noPadding?: boolean;\n noBackground?: boolean;\n required?: boolean;\n error?: boolean;\n disablePropagation?: boolean;\n}\n\nexport const Fieldset = React.forwardRef<HTMLFieldSetElement, Props>(\n (\n {\n children,\n className,\n legend,\n legendStyle = 'body',\n hideLegend = false,\n noBackground,\n background = noBackground ? '' : '#FFF',\n noPadding = false,\n disabled = false,\n required = false,\n error = false,\n disablePropagation = false,\n ...rest\n }: Props,\n ref\n ) => {\n const renderChildren = () => {\n if (!children) return;\n\n /* All right, so the issue is that whenever we try to add disabled and error to a component that doesn't accept it, \n React will throw an error. However, it might occur that we want a component inside of Fieldset because of aesthetic purposes \n (fieldset applies a sort of container with white background and if we want to display it inside of this container... then yea).\n So instead we supply an array of components that we want to add the disabled and error prop to and check if child.type equals one of these. */\n const allowedComponents: ReactNode[] = [\n Input,\n Select,\n Radio,\n Checkbox,\n Textarea,\n Toggle,\n Label,\n FormControl,\n FormSelectorWrapper,\n FormHelperText,\n InputWrapper,\n SelectWrapper,\n TextareaWrapper,\n ];\n\n return React.Children.map(children, (child: ReactElement) => {\n if (allowedComponents.includes(child.type) && !disablePropagation) {\n return React.cloneElement(child, {\n disabled: child.props.disabled ?? disabled,\n error: child.props.error ?? error,\n });\n }\n\n return child;\n });\n };\n\n return (\n <fieldset\n {...rest}\n ref={ref}\n disabled={disabled}\n style={{ backgroundColor: background, ...rest.style }}\n className={`${classes.fieldset} ${noPadding ? classes['no-padding'] : ''} ${\n className ?? ''\n }`}\n >\n {legend && <legend className={readyclasses['sr-only']}>{legend}</legend>}\n {legend && !hideLegend && (\n <Typography\n variant={legendStyle}\n tag=\"span\"\n aria-hidden=\"true\"\n className={`${classes['legend']} ${required ? classes['required'] : ''} ${\n error ? classes['error'] : ''\n }`}\n >\n {legend}\n </Typography>\n )}\n {renderChildren()}\n </fieldset>\n );\n }\n);\n","import React, { ComponentPropsWithRef, ReactElement, useEffect } from 'react';\nimport classes from './RadioWrapper.module.scss';\nimport { Wrapper, WrapperProps } from '../Wrapper/Wrapper';\nimport { useWrapper } from '../../../hooks/useWrapper';\nimport { Icons } from '../../../Icon/Icon';\nimport { Fieldset, Props as FieldsetProps } from '../../../Form/Fieldset/Fieldset';\n\nexport interface Props extends ComponentPropsWithRef<'div'>, WrapperProps {\n children: ReactElement | ReactElement[];\n fieldsetProps: FieldsetProps;\n value: string;\n onChange?: (event: React.ChangeEvent<HTMLInputElement>) => void;\n}\n\nexport const RadioWrapper = React.forwardRef<HTMLDivElement, Props>(\n (\n {\n children,\n error,\n name,\n helperText,\n helperProps,\n fieldsetProps,\n value,\n onChange,\n disabled,\n ...rest\n }: Props,\n ref\n ) => {\n const { errorId, helperId } = useWrapper(value);\n\n useEffect(() => {\n if (fieldsetProps.legend === undefined) {\n console.error(\n `You should give your Fieldset component a legend prop so a legend element is rendered. This error was thrown in RadioWrapper. You can add this legend prop through the fieldsetProps prop by passing an object (fieldsetProps={{ legend: \"legend here\" }})`\n );\n }\n }, []);\n\n const renderChildren = () =>\n React.Children.map(children, (child) =>\n React.cloneElement(child, {\n parentErrorId: errorId,\n error: error,\n checked: child.props.value === value,\n name: name,\n parentHelperId: helperText ? helperId : false,\n onChange: onChange,\n disabled: child.props.disabled !== undefined ? child.props.disabled : disabled,\n })\n );\n\n return (\n <Fieldset {...fieldsetProps} error={error} disabled={disabled}>\n <Wrapper\n {...rest}\n ref={ref}\n disabled={disabled}\n name={name}\n helperId={helperId}\n helperText={helperText}\n helperProps={{\n ...helperProps,\n className: `${classes['radio-wrapper-helper']} ${\n error ? classes['radio-wrapper-error'] : ''\n } ${helperProps?.className ?? ''}`,\n }}\n error={error}\n errorId={errorId}\n errorMessageIcon={Icons.Error}\n floatingLabel={false}\n >\n {renderChildren()}\n </Wrapper>\n </Fieldset>\n );\n }\n);\n","import React, { ComponentPropsWithRef, ReactElement, useEffect } from 'react';\nimport classes from './CheckboxWrapper.module.scss';\nimport { useWrapper } from '../../../hooks/useWrapper';\nimport { Wrapper, WrapperProps } from '../Wrapper/Wrapper';\nimport { Icons } from '../../../Icon/Icon';\nimport { Fieldset, Props as FieldsetProps } from '../../../Form/Fieldset/Fieldset';\n\nexport interface Props extends ComponentPropsWithRef<'div'>, WrapperProps {\n children: ReactElement[] | ReactElement;\n fieldsetProps: FieldsetProps;\n onChange?: (event: React.ChangeEvent<HTMLInputElement>) => void;\n}\n\nexport const CheckboxWrapper = React.forwardRef<HTMLDivElement, Props>(\n ({ children, error = false, helperText, helperProps, fieldsetProps, ...rest }: Props, ref) => {\n const { errorId, helperId } = useWrapper();\n\n useEffect(() => {\n if (fieldsetProps.legend === undefined) {\n console.error(\n `You should give your Fieldset component a legend prop so a legend element is rendered. This error was thrown in CheckboxWrapper. You can add this legend prop through the fieldsetProps prop by passing an object (fieldsetProps={{ legend: \"legend here\" }})`\n );\n }\n }, []);\n\n const renderChildren = () =>\n React.Children.map(children, (child) =>\n React.cloneElement(child, {\n parentErrorId: errorId,\n error: error,\n parentHelperId: helperText ? helperId : false,\n disabled: rest.disabled,\n })\n );\n\n return (\n <Fieldset {...fieldsetProps} error={error} required={rest.required}>\n <Wrapper\n {...rest}\n ref={ref}\n label=\"\"\n helperId={helperId}\n helperText={helperText}\n helperProps={{\n ...helperProps,\n className: `${classes['checkbox-wrapper-helper']} ${\n error ? classes['checkbox-wrapper-error'] : ''\n } ${helperProps?.className ?? ''}`,\n }}\n error={error}\n errorMessageIcon={Icons.Error}\n errorId={errorId}\n >\n {renderChildren()}\n </Wrapper>\n </Fieldset>\n );\n }\n);\n","import { Reducer } from 'react';\nimport { Step } from './BaseWizardSteps/BaseWizardSteps';\nimport { WizardMode } from './Wizard';\n\ntype WizardStateType = {\n steps: Step[];\n currentStepNo: number;\n mode: WizardMode;\n stepScreenReaderLabel: string;\n};\n\ninterface SetWizardStateAction {\n type: 'SET_STATE';\n payload: {\n steps: Step[];\n mode: WizardMode;\n stepScreenReaderLabel: string;\n };\n}\n\ninterface ChangeCurrentStepNoAction {\n type: 'CHANGE_CURRENT_STEP_NO';\n payload: number;\n}\n\nconst setWizardState = (\n steps: Step[],\n mode: WizardMode,\n stepScreenReaderLabel: string\n): SetWizardStateAction => {\n return { type: 'SET_STATE', payload: { steps, mode, stepScreenReaderLabel } };\n};\n\nconst changeCurrentStepNo = (currentStepNo: number): ChangeCurrentStepNoAction => {\n return { type: 'CHANGE_CURRENT_STEP_NO', payload: currentStepNo };\n};\n\ntype WizardActions = SetWizardStateAction | ChangeCurrentStepNoAction;\n\nconst reducer: Reducer<WizardStateType, WizardActions> = (state, action) => {\n switch (action.type) {\n case 'SET_STATE':\n return { ...state, ...action.payload };\n case 'CHANGE_CURRENT_STEP_NO':\n return { ...state, currentStepNo: action.payload };\n default:\n return state;\n }\n};\n\nexport { setWizardState, changeCurrentStepNo, reducer, WizardActions, WizardStateType };\n","import React, { createContext, Dispatch, useReducer } from 'react';\nimport { WizardActions, WizardStateType, reducer } from './wizardStateReducer';\n\nconst WizardStateContext = createContext<{\n state: WizardStateType;\n dispatch: Dispatch<WizardActions>;\n}>({\n state: {} as WizardStateType,\n dispatch: () => null,\n});\n\nexport interface Props {\n initialState: WizardStateType;\n children?: React.ReactNode;\n}\n\nconst WizardStateProvider = ({ children, initialState }: Props) => {\n const [state, dispatch] = useReducer(reducer, initialState);\n return (\n <WizardStateContext.Provider value={{ state, dispatch }}>\n {children}\n </WizardStateContext.Provider>\n );\n};\n\nexport { WizardStateProvider, WizardStateContext };\n","import React, { Fragment, useContext, useEffect } from 'react';\nimport { Step } from './BaseWizardSteps/BaseWizardSteps';\nimport { WizardStateContext, WizardStateProvider } from './WizardStateProvider';\nimport { setWizardState } from './wizardStateReducer';\n\nexport type WizardMode = 'add' | 'edit';\n\nexport interface Props {\n steps: Step[];\n mode: WizardMode;\n initialStepNo?: number;\n onStepChange: (stepNo: number) => void;\n stepScreenReaderLabel: string;\n children: React.ReactNode;\n}\n\nconst useSetWizardState = (steps: Step[], mode: WizardMode, stepScreenReaderLabel: string) => {\n const { dispatch } = useContext(WizardStateContext);\n\n useEffect(() => {\n dispatch(setWizardState(steps, mode, stepScreenReaderLabel));\n }, [steps, mode, stepScreenReaderLabel]);\n};\n\nconst useStepChanging = (onStepChange: (stepNo: number) => void) => {\n const {\n state: { currentStepNo },\n } = useContext(WizardStateContext);\n\n useEffect(() => {\n onStepChange(currentStepNo);\n }, [currentStepNo]);\n};\n\nconst WizardContent = ({ steps, mode, stepScreenReaderLabel, onStepChange, children }: Props) => {\n useSetWizardState(steps, mode, stepScreenReaderLabel);\n useStepChanging(onStepChange);\n\n return <Fragment>{children}</Fragment>;\n};\n\nexport const Wizard = (props: Props) => {\n const { steps, initialStepNo: currentStepNo = 0, mode, stepScreenReaderLabel } = props;\n return (\n <WizardStateProvider initialState={{ steps, currentStepNo, mode, stepScreenReaderLabel }}>\n <WizardContent {...props} />\n </WizardStateProvider>\n );\n};\n","import React, { ComponentPropsWithRef, Fragment } from 'react';\nimport classes from './BaseWizardSteps.module.scss';\nimport readyclasses from '../../readyclasses.module.scss';\nimport { Icon, Icons } from '../../Icon/Icon';\n\ntype StepState = 'finished' | 'current' | 'future';\n\nexport interface Step {\n label: string;\n disabled?: boolean;\n}\n\nexport interface Props extends Omit<ComponentPropsWithRef<'div'>, 'onClick'> {\n steps: Step[];\n currentStepNo: number;\n onClick?: (stepNo: number) => void;\n futureStepsClickable?: boolean;\n stepScreenReaderLabel: string;\n}\n\nexport const BaseWizardSteps = React.forwardRef<HTMLDivElement, Props>(\n (\n {\n steps,\n currentStepNo,\n onClick,\n futureStepsClickable = false,\n stepScreenReaderLabel,\n ...rest\n }: Props,\n ref\n ) => {\n const getStepState = (stepNo: number): StepState => {\n if (currentStepNo === stepNo) {\n return 'current';\n } else if (stepNo < currentStepNo) {\n return 'finished';\n }\n return 'future';\n };\n\n const getStepContent = (stepState: StepState, index: number, disabled?: boolean) => {\n const stepNumberString = String(index + 1);\n if (stepState === 'finished') {\n return disabled ? null : <Icon className={classes['checkmark']} icon={Icons.Checkmark} />;\n } else {\n return (\n <Fragment>\n <span className={readyclasses['sr-only']}>{stepScreenReaderLabel} </span>\n {stepNumberString}\n </Fragment>\n );\n }\n };\n\n const generatedSteps = steps.map((step, index) => {\n const stepState = getStepState(index);\n const disabledStyleClassName = step.disabled ? classes['disabled'] : '';\n const clickableClassName = futureStepsClickable ? classes['clickable'] : '';\n\n return (\n <button\n key={step.label.toLowerCase().replace(/\\s/, '-')}\n disabled={\n step.disabled ||\n (stepState === 'future' && !futureStepsClickable) ||\n stepState === 'current'\n }\n aria-current={stepState === 'current' ? 'step' : undefined}\n onClick={() => onClick && onClick(index)}\n className={`${classes['wizard-element']} ${classes[stepState]} ${clickableClassName} ${disabledStyleClassName}`}\n >\n <div className={classes['number-wrapper']}>\n <span className={classes['number']}>\n {getStepContent(stepState, index, step.disabled)}\n </span>\n </div>\n <div className={classes['two-line-text-overflow']}>\n <span className={classes['label']}>{step.label}</span>\n </div>\n </button>\n );\n });\n\n return (\n <div {...rest} ref={ref} className={classes['wizard']}>\n {generatedSteps}\n </div>\n );\n }\n);\n","import React, { ComponentPropsWithRef, useContext } from 'react';\nimport { WizardStateContext } from '../WizardStateProvider';\nimport { BaseWizardSteps } from '../BaseWizardSteps/BaseWizardSteps';\nimport { changeCurrentStepNo } from '../wizardStateReducer';\n\nexport interface Props extends ComponentPropsWithRef<'div'> {\n onStepClick: (currentStepNo: number, selectedStepNo: number) => boolean;\n}\n\nexport const WizardSteps = React.forwardRef<HTMLDivElement, Props>(\n ({ onStepClick, ...rest }: Props, ref) => {\n const {\n state: { currentStepNo, mode, stepScreenReaderLabel, steps },\n dispatch,\n } = useContext(WizardStateContext);\n\n const onClick = (selectedStepNo: number) => {\n onStepClick(currentStepNo, selectedStepNo) && dispatch(changeCurrentStepNo(selectedStepNo));\n };\n\n return (\n <BaseWizardSteps\n {...rest}\n ref={ref}\n onClick={onClick}\n steps={steps}\n currentStepNo={currentStepNo}\n stepScreenReaderLabel={stepScreenReaderLabel}\n futureStepsClickable={mode === 'edit'}\n />\n );\n }\n);\n","import React, { ComponentPropsWithRef, Fragment } from 'react';\nimport { Icon, Icons } from '../../Icon/Icon';\nimport { ColumnName, Direction } from '../datagrid.interfaces';\nimport classes from './DataGridHeaderCell.module.scss';\n\nexport interface Props extends ComponentPropsWithRef<'th'> {\n headline: string;\n name: ColumnName;\n disableSorting?: boolean;\n activeSortDirection?: Direction;\n onSort?: (name: ColumnName) => void;\n}\n\nconst ariaSortMapping = {\n ASC: 'ascending',\n DESC: 'descending',\n} as const;\n\nexport const DataGridHeaderCell = React.forwardRef<HTMLTableCellElement, Props>(\n ({ headline, name, disableSorting, activeSortDirection, onSort, ...rest }: Props, ref) => {\n const onCellClick = () => {\n onSort && onSort(name);\n };\n\n const sortingIndicator = () => {\n const getSortingIndicatorClasses = (direction: Direction) => {\n const sortingIndicatorClasses = [classes['indicator']];\n activeSortDirection &&\n sortingIndicatorClasses.push(\n activeSortDirection === direction ? classes['active'] : classes['hidden']\n );\n return sortingIndicatorClasses;\n };\n\n return (\n <Fragment>\n <Icon className={getSortingIndicatorClasses('ASC').join(' ')} icon={Icons.TriangleUp} />\n <Icon\n className={getSortingIndicatorClasses('DESC').join(' ')}\n icon={Icons.TriangleDown}\n />\n </Fragment>\n );\n };\n\n const innerContent = (\n <Fragment>\n <span className={classes['headline']}>{headline}</span>\n {!disableSorting && (\n <div className={classes['sorting-indicator-container']}>{sortingIndicator()}</div>\n )}\n </Fragment>\n );\n\n return (\n <th\n {...rest}\n ref={ref}\n className={classes['header-cell']}\n aria-sort={activeSortDirection && ariaSortMapping[activeSortDirection]}\n >\n {disableSorting ? (\n <div key={name}>{innerContent}</div>\n ) : (\n <button key={name} onClick={onCellClick}>\n {innerContent}\n </button>\n )}\n </th>\n );\n }\n);\n","import React, { ComponentPropsWithRef, useEffect, useState } from 'react';\nimport { ColumnName, Direction, HeaderCell, OnSortFunction, Sort } from '../datagrid.interfaces';\nimport { DataGridHeaderCell } from './DataGridHeaderCell';\nimport classes from './DataGridHeader.module.scss';\n\nexport interface Props extends ComponentPropsWithRef<'thead'> {\n headers: HeaderCell[];\n initialSort?: Sort;\n onSort?: OnSortFunction;\n disableContextMenuColumn?: boolean;\n enableMultiSorting?: boolean;\n spacing?: React.CSSProperties;\n}\n\nconst sortingStates = [undefined, 'ASC', 'DESC'] as (Direction | undefined)[];\n\nexport const DataGridHeader = React.forwardRef<HTMLTableSectionElement, Props>(\n (\n {\n initialSort,\n onSort,\n headers,\n disableContextMenuColumn,\n enableMultiSorting,\n spacing,\n ...rest\n }: Props,\n ref\n ) => {\n const [sortList, setSortList] = useState(initialSort || []);\n\n useEffect(() => {\n setSortList(initialSort || []);\n }, [initialSort]);\n\n const calculateNextSortState = (direction?: Direction) => {\n const currentDirectionIdx = sortingStates.findIndex((item) => item === direction);\n return sortingStates[currentDirectionIdx + (1 % sortingStates.length)];\n };\n\n /**\n * The sortList contains sorting columns objects. The order of those objects determinates priorities of sorting.\n * Last modified sorting column has the highest priority.\n */\n const updateSortList = (name: ColumnName): Sort => {\n const current = sortList.find((item) => item.name === name);\n const restSortList = enableMultiSorting ? sortList.filter((item) => item.name !== name) : [];\n const newSortDirection = calculateNextSortState(current?.direction);\n return newSortDirection\n ? [{ name, direction: newSortDirection }, ...restSortList]\n : restSortList;\n };\n\n const wrapOnSort = (name: ColumnName) => {\n const newSort = updateSortList(name);\n onSort && onSort(newSort);\n setSortList(newSort);\n };\n\n const headerCells = headers.map((header, index) => {\n if (header.hidden) {\n return null;\n }\n\n let headerStyle: React.CSSProperties = {};\n\n if (index === 0) {\n headerStyle.paddingLeft = spacing?.paddingLeft;\n }\n if (index === headers.length - 1 && disableContextMenuColumn) {\n headerStyle.paddingRight = spacing?.paddingRight;\n }\n\n const sort = sortList.find((item) => item.name === header.name);\n return (\n <DataGridHeaderCell\n key={header.name}\n name={header.name}\n headline={header.headline}\n disableSorting={header.disableSorting || !onSort}\n onSort={wrapOnSort}\n activeSortDirection={sort?.direction}\n style={headerStyle}\n />\n );\n });\n\n return (\n <thead {...rest} ref={ref} className={classes['thead']}>\n <tr className={classes['row']}>\n {headerCells}\n {!disableContextMenuColumn && (\n <td\n style={{ paddingRight: spacing?.paddingRight }}\n aria-label=\"context menu\"\n className={classes['context-menu']}\n ></td>\n )}\n </tr>\n </thead>\n );\n }\n);\n","import React, { Fragment, useState } from 'react';\nimport { IconButton } from '../../Button/IconButton';\nimport { Toggle } from '../../Form/Toggle/Toggle';\nimport { Icon, Icons } from '../../Icon/Icon';\nimport { Popover, Props as PopoverProps } from '../../Popover/Popover';\nimport { Typography } from '../../Typography/Typography';\nimport { generateID } from '../../util/helper';\nimport { ColumnName, HeaderCell } from '../datagrid.interfaces';\nimport classes from './DataGridColumnsToggle.module.scss';\nimport { createPortal } from 'react-dom';\n\nexport interface Props extends PopoverProps {\n open: boolean;\n headers: HeaderCell[];\n titleLabel?: string;\n closeButtonTitle?: string;\n onClose: () => void;\n onToggleClicked: (colName: ColumnName) => void;\n domRoot?: HTMLElement;\n}\n\nexport const DataGridColumnsToggle = React.forwardRef<HTMLDivElement, Props>(\n (\n {\n open,\n headers,\n titleLabel = 'Show columns',\n closeButtonTitle = 'Close show columns dialog',\n onClose,\n onToggleClicked,\n className,\n domRoot = document.body,\n ...rest\n }: Props,\n ref\n ) => {\n const [id] = useState(generateID());\n const labelledId = id + '_header';\n\n const toggles = headers.map((item) => (\n <Toggle\n key={item.name}\n name={item.name}\n checked={!item.hidden}\n onChange={() => onToggleClicked(item.name)}\n >\n {item.headline}\n </Toggle>\n ));\n\n const handleBackdropClick = () => onClose();\n\n return (\n <Popover\n {...rest}\n ref={ref}\n className={`${classes['popover']} ${className}`}\n show={open}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby={labelledId}\n >\n {open &&\n createPortal(\n <div className={classes['backdrop']} onClick={handleBackdropClick}></div>,\n domRoot\n )}\n {open && (\n <Fragment>\n <div className={classes['header']}>\n <Typography id={labelledId} className={classes['title']} tag=\"span\" variant=\"h4\">\n {titleLabel}\n </Typography>\n <IconButton\n onClick={onClose}\n className={`${classes['close-btn']}`}\n title={closeButtonTitle}\n >\n <Icon icon={Icons.Times} />\n </IconButton>\n </div>\n <div className={classes['content']}>{toggles}</div>\n </Fragment>\n )}\n </Popover>\n );\n }\n);\n","import React, { ComponentPropsWithRef, Fragment, useRef, useState } from 'react';\nimport { Button, Props as ButtonProps } from '../../Button/Button';\nimport { IconButton } from '../../Button/IconButton';\nimport { Icon, Icons } from '../../Icon/Icon';\nimport { HeaderCell, ColumnName } from '../datagrid.interfaces';\nimport classes from './DataGridActions.module.scss';\nimport { DataGridColumnsToggle } from './DataGridColumnsToggle';\n\nexport interface Props extends ComponentPropsWithRef<'div'> {\n enableAddBtn?: boolean;\n enableColumnsBtn?: boolean;\n enableSearchBtn?: boolean;\n addBtnProps?: ButtonProps;\n columnsBtnProps?: ButtonProps;\n searchBtnProps?: ButtonProps;\n headers: HeaderCell[];\n onColumnToggled: (colName: ColumnName) => void;\n}\n\nexport const DataGridActions = React.forwardRef<HTMLDivElement, Props>(\n (\n {\n className,\n enableAddBtn,\n enableColumnsBtn,\n enableSearchBtn,\n addBtnProps = {},\n columnsBtnProps = {},\n searchBtnProps = {},\n headers,\n onColumnToggled,\n ...rest\n }: Props,\n ref\n ) => {\n const isHidden = !(enableAddBtn || enableColumnsBtn || enableSearchBtn);\n const [showColsPopover, setShowColsPopover] = useState(false);\n const showColumnBtn = useRef<HTMLButtonElement>(null);\n\n return isHidden ? null : (\n <div {...rest} ref={ref} className={`${classes['actions']} ${className ?? ''}`}>\n <div className={classes['left-actions']}>\n {enableAddBtn && (\n <Button\n color=\"primary\"\n startIcon={<Icon icon={Icons.Plus} />}\n title=\"Add item\"\n type=\"button\"\n variant=\"outline\"\n children=\"Add item\"\n {...addBtnProps}\n />\n )}\n </div>\n <div className={classes['right-actions']}>\n {enableColumnsBtn && (\n <Fragment>\n <Button\n startIcon={<Icon icon={Icons.Change} />}\n title=\"Show/hide columns\"\n variant=\"text\"\n children=\"Columns\"\n {...columnsBtnProps}\n className={`${classes['desktop']} ${columnsBtnProps?.className ?? ''}`}\n ref={showColumnBtn}\n onClick={() => setShowColsPopover(true)}\n />\n <IconButton\n title=\"Show/hide columns\"\n {...columnsBtnProps}\n onClick={() => setShowColsPopover(true)}\n className={`${classes['mobile']} ${columnsBtnProps?.className ?? ''}`}\n >\n <Icon icon={Icons.Change} />\n </IconButton>\n <DataGridColumnsToggle\n aria-hidden={!showColsPopover}\n open={showColsPopover}\n headers={headers}\n onClose={() => setShowColsPopover(false)}\n onToggleClicked={onColumnToggled}\n anchorEl={showColumnBtn}\n />\n </Fragment>\n )}\n {enableSearchBtn && (\n <Fragment>\n <Button\n startIcon={<Icon icon={Icons.TableSearch} />}\n title=\"Search\"\n variant=\"text\"\n children=\"Search\"\n {...searchBtnProps}\n className={`${classes['desktop']} ${searchBtnProps?.className ?? ''}`}\n />\n <IconButton\n title=\"Search\"\n {...searchBtnProps}\n className={`${classes['mobile']} ${columnsBtnProps?.className ?? ''}`}\n >\n <Icon icon={Icons.TableSearch} />\n </IconButton>\n </Fragment>\n )}\n </div>\n </div>\n );\n }\n);\n","import React, { ComponentPropsWithRef, ReactChild } from 'react';\nimport { Typography } from '../../Typography/Typography';\nimport classes from './DataGridCell.module.scss';\n\nexport interface Props extends ComponentPropsWithRef<'td'> {\n children?: ReactChild;\n isLoading?: boolean;\n spacing?: React.CSSProperties;\n cellIndex?: number;\n columnLength?: number;\n disableContextMenuColumn?: boolean;\n}\n\nexport const DataGridCell = React.forwardRef<HTMLTableCellElement, Props>(\n (\n {\n children,\n className,\n isLoading,\n spacing,\n cellIndex,\n columnLength,\n disableContextMenuColumn,\n ...rest\n }: Props,\n ref\n ) => {\n let cellStyle: React.CSSProperties = {};\n\n if (cellIndex === 0) {\n cellStyle.paddingLeft = spacing?.paddingLeft;\n }\n if (\n (cellIndex === columnLength && !disableContextMenuColumn) ||\n (columnLength && cellIndex === columnLength - 1 && disableContextMenuColumn)\n ) {\n cellStyle.paddingRight = spacing?.paddingRight;\n }\n\n return (\n <td\n {...rest}\n ref={ref}\n style={{ ...rest.style, ...cellStyle }}\n className={`${classes['cell']} ${className ?? ''}`}\n >\n {isLoading && (\n <div className={classes['loading']} aria-busy=\"true\" aria-live=\"polite\"></div>\n )}\n {!isLoading && (\n <Typography variant=\"body\" tag=\"span\">\n {children}\n </Typography>\n )}\n </td>\n );\n }\n);\n","import React, { ComponentPropsWithRef } from 'react';\nimport { HeaderCell } from '../datagrid.interfaces';\nimport classes from './DataGridRow.module.scss';\n\nexport interface Props extends ComponentPropsWithRef<'tr'> {\n headers?: HeaderCell[];\n isLoading?: boolean;\n spacing?: React.CSSProperties;\n disableContextMenuColumn?: boolean;\n}\n\nexport const DataGridRow = React.forwardRef<HTMLTableRowElement, Props>(\n (\n { children, className, headers, isLoading, spacing, disableContextMenuColumn, ...rest }: Props,\n ref\n ) => {\n const visibleCells = React.Children.map(children as React.ReactElement[], (child, index) => {\n if (child) {\n const cellWithSpacing = React.cloneElement(child, {\n spacing: spacing,\n cellIndex: index,\n columnLength: headers?.length,\n disableContextMenuColumn,\n });\n\n const visible = headers?.length! > index ? !headers![index].hidden : true;\n return visible && cellWithSpacing;\n }\n return null;\n });\n\n const classNames = [classes['row']];\n className && classNames.push(className);\n isLoading && classNames.push(classes['loading']);\n\n return (\n <tr {...rest} ref={ref} className={classNames.join(' ')}>\n {visibleCells}\n </tr>\n );\n }\n);\n","import React, { ComponentPropsWithRef, ReactElement, Ref } from 'react';\nimport { HeaderCell } from '../datagrid.interfaces';\nimport { DataGridCell } from './DataGridCell';\nimport { DataGridRow } from './DataGridRow';\nimport classes from './DataGridBody.module.scss';\nimport { Typography } from '../../Typography/Typography';\n\nexport interface Props<T> extends ComponentPropsWithRef<'tbody'> {\n children: ({ item, index }: { item: T; index: number }) => ReactElement;\n data?: T[];\n headers: HeaderCell[];\n isLoading?: boolean;\n disableContextMenuColumn?: boolean;\n emptyLabel?: string;\n spacing?: React.CSSProperties;\n}\n\nconst skeletonLoadingRows = 9;\n\nconst DataGridBodyInner = <T extends {}>(\n {\n children,\n data,\n headers,\n isLoading,\n disableContextMenuColumn,\n emptyLabel,\n spacing,\n ...rest\n }: Props<T>,\n ref: Ref<HTMLTableSectionElement>\n) => {\n const renderContent = () => {\n const visibleColumns = headers.filter((header) => !header.hidden).length;\n if (isLoading) {\n return Array.from(Array(skeletonLoadingRows)).map((_, rowIdx) => (\n <DataGridRow key={rowIdx} isLoading>\n {Array.from(Array(visibleColumns)).map((__, colIdx) => (\n <DataGridCell key={colIdx} isLoading></DataGridCell>\n ))}\n {!disableContextMenuColumn && <DataGridCell></DataGridCell>}\n </DataGridRow>\n ));\n }\n\n const emptyData = !data || data.length === 0;\n if (emptyData) {\n return (\n <tr>\n <td\n className={classes['empty']}\n colSpan={visibleColumns + (disableContextMenuColumn ? 0 : 1)}\n >\n <Typography variant=\"body\" spacing={{ margin: 0 }}>\n {emptyLabel}\n </Typography>\n </td>\n </tr>\n );\n }\n\n return data?.map((item, index) => {\n return React.cloneElement(children({ item, index }), {\n headers,\n spacing,\n disableContextMenuColumn,\n });\n });\n };\n\n return (\n <tbody {...rest} ref={ref}>\n {renderContent()}\n </tbody>\n );\n};\n\nexport const DataGridBody = React.forwardRef(DataGridBodyInner) as <T extends {}>(\n p: Props<T> & { ref?: Ref<HTMLTableSectionElement> }\n) => ReactElement;\n","import React, { ComponentPropsWithRef, ReactElement, Ref, useEffect, useState } from 'react';\nimport { Props as ButtonProps } from '../Button/Button';\nimport classes from './DataGrid.module.scss';\nimport { DataGridHeader } from './DataGridHeader/DataGridHeader';\nimport { DataGridActions } from './DataGridActions/DataGridActions';\nimport { DataGridBody } from './DataGridBody/DataGridBody';\nimport { ColumnName, HeaderCell, OnSortFunction, Sort } from './datagrid.interfaces';\nimport { Pagination, Props as PaginationProps } from '../Pagination/Pagination';\nimport { Spacing, useSpacing } from '../hooks/useSpacing';\n\nexport interface Props<T> extends ComponentPropsWithRef<'div'> {\n children: ({ item, index }: { item: T; index: number }) => ReactElement;\n data?: T[];\n initialSort?: Sort;\n onSort?: OnSortFunction;\n headers: HeaderCell[];\n actions?: {\n enableAddBtn?: boolean;\n enableColumnsBtn?: boolean;\n enableSearchBtn?: boolean;\n addBtnProps?: ButtonProps;\n columnsBtnProps?: ButtonProps;\n searchBtnProps?: ButtonProps;\n };\n emptyLabel?: string;\n paginationProps?: PaginationProps;\n disableContextMenuColumn?: boolean;\n isLoading?: boolean;\n enableMultiSorting?: boolean;\n spacing?: Spacing;\n}\n\nconst DataGridInner = <T extends {}>(\n {\n children,\n data,\n initialSort,\n onSort,\n headers,\n actions = {},\n paginationProps,\n disableContextMenuColumn,\n isLoading,\n enableMultiSorting,\n emptyLabel,\n spacing,\n style,\n ...rest\n }: Props<T>,\n ref: Ref<HTMLDivElement>\n) => {\n if (!headers) {\n throw new Error('Headers definition has to be provided');\n }\n if (!children) {\n throw new Error('DataGridBody should be provieded with a template how to render rows');\n }\n\n const [internalHeaders, setInternalHeaders] = useState(headers);\n const styleWithSpacing = useSpacing(spacing, style);\n\n useEffect(() => setInternalHeaders(headers), [headers]);\n\n const onColumnToggled = (colName: ColumnName) => {\n setInternalHeaders(\n internalHeaders.map((item) =>\n item.name !== colName ? item : { ...item, hidden: !item.hidden }\n )\n );\n };\n\n if (styleWithSpacing?.padding) {\n const splitPaddings = styleWithSpacing.padding.toString().split(' ');\n\n let paddingLeftIndex: number = 0;\n\n if (splitPaddings.length >= 2) {\n paddingLeftIndex = 1;\n }\n if (splitPaddings.length === 4) {\n paddingLeftIndex = 3;\n }\n\n Object.defineProperties(styleWithSpacing, {\n paddingTop: {\n value: splitPaddings[0],\n },\n paddingRight: {\n value: splitPaddings[splitPaddings.length - 1 > 0 ? 1 : 0],\n },\n paddingBottom: {\n value: splitPaddings[splitPaddings.length / 3 >= 1 ? 2 : 0],\n },\n paddingLeft: {\n value: splitPaddings[paddingLeftIndex],\n },\n });\n }\n\n return (\n <div\n {...rest}\n className={classes['grid-wrapper']}\n ref={ref}\n style={{\n paddingTop: styleWithSpacing?.paddingTop,\n paddingBottom: styleWithSpacing?.paddingBottom,\n }}\n >\n <DataGridActions\n {...actions}\n style={{\n paddingLeft: styleWithSpacing?.paddingLeft,\n paddingRight: styleWithSpacing?.paddingRight,\n }}\n headers={internalHeaders}\n onColumnToggled={onColumnToggled}\n />\n <div className={classes['table-wrapper']}>\n <table className={classes['table']}>\n <DataGridHeader\n headers={internalHeaders}\n initialSort={initialSort}\n onSort={onSort}\n disableContextMenuColumn={disableContextMenuColumn}\n enableMultiSorting={enableMultiSorting}\n spacing={styleWithSpacing}\n />\n <DataGridBody\n children={children}\n data={data}\n headers={internalHeaders}\n isLoading={isLoading}\n disableContextMenuColumn={disableContextMenuColumn}\n emptyLabel={emptyLabel}\n spacing={styleWithSpacing}\n />\n </table>\n </div>\n {paginationProps && !isLoading && (\n <Pagination\n {...paginationProps}\n style={{\n ...paginationProps.style,\n paddingLeft: styleWithSpacing?.paddingLeft,\n paddingRight: styleWithSpacing?.paddingRight,\n }}\n className={`${classes['pagination']} ${paginationProps.className ?? ''}`}\n />\n )}\n </div>\n );\n};\n\nexport const DataGrid = React.forwardRef(DataGridInner) as <T extends {}>(\n p: Props<T> & { ref?: Ref<HTMLDivElement> }\n) => ReactElement;\n","import React, { Fragment, useState } from 'react';\nimport { Modal, Props as ModalProps } from '../Modal/Modal';\nimport { ModalHeader, Props as ModalHeaderProps } from '../Modal/ModalHeader/ModalHeader';\nimport {\n DiscardChangesDialog,\n Props as DiscardChangesDialogProps,\n} from './DiscardChangesDialog/DiscardChangesDialog';\n\nexport interface Props extends Omit<ModalProps, 'onClose'> {\n hasUnsavedChanges: () => boolean;\n onClose: (event?: React.MouseEvent<HTMLElement>) => unknown;\n headerProps: Omit<ModalHeaderProps, 'onClose' | 'id'>;\n discardChangedDialogProps: Omit<\n DiscardChangesDialogProps,\n 'open' | 'onKeepEditing' | 'onDiscardChanges'\n >;\n modalRef?: React.RefObject<HTMLDivElement>;\n dialogRef?: React.RefObject<HTMLDivElement>;\n}\n\nexport const DiscardChangesModal = ({\n id,\n children,\n headerProps,\n discardChangedDialogProps,\n modalRef,\n dialogRef,\n onClose,\n hasUnsavedChanges,\n ...rest\n}: Props) => {\n const [openDiscardChangesDialog, setOpenDiscardChangesDialog] = useState(false);\n\n const onCloseWrapper = () =>\n hasUnsavedChanges() ? setOpenDiscardChangesDialog(true) : onClose();\n\n const onDialogKeepEditing = () => {\n setOpenDiscardChangesDialog(false);\n };\n\n const onDialogDiscardChanges = () => {\n setOpenDiscardChangesDialog(false);\n onClose();\n };\n\n return (\n <Fragment>\n <Modal id={id} ref={modalRef} onClose={onCloseWrapper} {...rest}>\n <ModalHeader {...headerProps} id={`${id}-label`} onClose={onCloseWrapper} />\n {children}\n </Modal>\n <DiscardChangesDialog\n {...discardChangedDialogProps}\n ref={dialogRef}\n open={openDiscardChangesDialog}\n onKeepEditing={onDialogKeepEditing}\n onDiscardChanges={onDialogDiscardChanges}\n />\n </Fragment>\n );\n};\n","import React, { HTMLProps, ReactNode } from 'react';\nimport classes from './Form.module.scss';\n\nexport interface Props extends HTMLProps<HTMLFormElement> {\n children?: ReactNode;\n}\n\nexport const Form = ({ children, className, ...rest }: Props) => {\n return (\n <form className={`${classes.form} ${className ?? ''}`} {...rest}>\n {children}\n </form>\n );\n};\n","import React, { ReactNode, useState } from 'react';\nimport { createPortal } from 'react-dom';\nimport { SnackbarContextProvider } from './SnackbarStateProvider';\nimport { Actions, SnackbarOptionsProps, Variant } from '../interfaces';\nimport { Placement, SnackbarContainer } from '../SnackbarContainer/SnackbarContainer';\nimport { generateID } from '../../../util/helper';\nimport { SnackbarItem } from '../SnackbarItem/SnackbarItem';\n\n/** Short msg is when only title is provided. Long one when content or/and actions are provided (or type is error). */\ninterface Duration {\n long: number;\n short: number;\n}\n\nexport interface Props {\n closeButtonTitle: string;\n children?: ReactNode;\n placement?: Placement;\n stackSize?: number;\n domRoot?: HTMLElement;\n autoHideDuration?: Duration;\n className?: string;\n}\n\ninterface Item {\n id: string;\n title: string;\n duration: number;\n variant: Variant;\n content?: string;\n actions?: Actions;\n}\n\nexport const SnackbarProvider = (\n {\n closeButtonTitle,\n placement = { vertical: 'bottom', horizontal: 'center' },\n autoHideDuration = { long: 8000, short: 4000 },\n stackSize = 3,\n domRoot = document.body,\n children,\n className,\n }: Props = { closeButtonTitle: '' }\n) => {\n const [snackbars, setSnackbars] = useState<Item[]>([]);\n\n const addSnackbar = (item: Item) => {\n setSnackbars((items) => [...items, item]);\n };\n\n const getDuration = (variant: Variant, actions?: Actions, content?: string) => {\n const hasError = variant === 'error';\n const hasContentOrActions = content || actions;\n if (hasError || hasContentOrActions) {\n return autoHideDuration.long;\n }\n return autoHideDuration.short;\n };\n\n const enqueueSnackbar = (\n title: string,\n content?: string,\n options: SnackbarOptionsProps = {}\n ): void => {\n const {\n variant = 'info',\n actions,\n duration = getDuration(variant, actions, content),\n } = options;\n const item: Item = {\n title,\n content,\n variant,\n actions,\n duration,\n id: generateID(15, title),\n };\n addSnackbar(item);\n };\n\n const enqueueSuccessSnackbar = (\n title: string,\n content?: string,\n options?: SnackbarOptionsProps\n ): void => {\n enqueueSnackbar(title, content, { ...options, variant: 'success' });\n };\n\n const enqueueErrorSnackbar = (\n title: string,\n content?: string,\n options?: SnackbarOptionsProps\n ): void => {\n enqueueSnackbar(title, content, { ...options, variant: 'error' });\n };\n\n const onItemClosed = (id: string) => {\n setSnackbars((items) => [...items].filter((item) => item.id !== id));\n };\n\n const snackbarList = snackbars.map((item, index) =>\n index < stackSize ? (\n <SnackbarItem\n {...item}\n key={item.id}\n onClose={onItemClosed}\n closeButtonTitle={closeButtonTitle}\n />\n ) : null\n );\n\n const snackbarPortal = createPortal(\n <SnackbarContainer placement={placement} className={className}>\n {snackbarList}\n </SnackbarContainer>,\n domRoot\n );\n\n return (\n <SnackbarContextProvider\n initialState={{ enqueueSnackbar, enqueueSuccessSnackbar, enqueueErrorSnackbar }}\n >\n {children}\n {snackbarPortal}\n </SnackbarContextProvider>\n );\n};\n","import React from 'react';\n\nexport interface Props {\n title: string;\n children?: React.ReactNode;\n selected?: boolean;\n focussed?: boolean;\n buttonRef?: React.RefObject<HTMLButtonElement>;\n panelRef?: React.RefObject<HTMLDivElement>;\n onTabButtonClick?: () => void;\n}\n\nexport const Tab = (args: Props) => {\n return (\n <div {...args}>{`A <Tab /> component should only be used inside the <Tabs /> component.`}</div>\n );\n};\n","import React, {\n ComponentPropsWithRef,\n createRef,\n MutableRefObject,\n useEffect,\n useRef,\n useState,\n} from 'react';\nimport { generateID } from '../util/helper';\nimport { Props as TabProps } from './Tab';\nimport { TabButton } from './TabButton';\nimport { TabPanel } from './TabPanel';\nimport classes from './Tabs.module.scss';\n\nexport interface Props extends ComponentPropsWithRef<'div'> {\n children: React.ReactElement<TabProps> | React.ReactElement<TabProps>[];\n selected?: number;\n 'aria-label'?: string;\n onTabChange?: (index: number) => void;\n}\n\nexport const Tabs = ({\n children,\n selected = 0,\n 'aria-label': ariaLabel,\n onTabChange,\n className,\n ...rest\n}: Props) => {\n const indicatorRef = useRef<HTMLDivElement>(null);\n const [indicatorPosition, setIndicatorPosition] = useState({ left: 0, top: 0 });\n const [indicatorWidth, setIndicatorWidth] = useState(0);\n\n const [max] = useState(React.Children.count(children) - 1);\n const min = 0;\n\n const [selectedTab, setSelectedTab] = useState(Math.min(max, Math.max(min, selected)));\n const [focussedTab, setFocussedTab] = useState(-1);\n const [tabIds] = useState([...Array(max)].map(() => generateID()));\n const [tabPanelIds] = useState([...Array(max)].map(() => generateID()));\n\n useEffect(() => {\n setSelectedTab(Math.min(max, Math.max(min, selected)));\n setFocussedTab(-1);\n }, [selected]);\n\n useEffect(() => {\n calculateIndicatorPosition();\n }, [selectedTab]);\n\n const calculateIndicatorPosition = () => {\n const selectedTabButton = (\n tabButtons[selectedTab].ref as MutableRefObject<HTMLButtonElement | null>\n ).current as HTMLButtonElement;\n\n setIndicatorPosition({\n left: selectedTabButton.offsetLeft,\n top:\n selectedTabButton.offsetTop +\n selectedTabButton.offsetHeight -\n indicatorRef.current!.offsetHeight,\n });\n setIndicatorWidth(selectedTabButton.offsetWidth);\n };\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLElement>) => {\n // do not show focus unless we came here before\n let currentFocussedTab = focussedTab === -1 ? selectedTab : focussedTab;\n\n switch (e.code) {\n case 'ArrowLeft':\n setFocussedTab(currentFocussedTab === min ? max : currentFocussedTab - 1);\n break;\n case 'ArrowRight':\n setFocussedTab(currentFocussedTab === max ? min : currentFocussedTab + 1);\n break;\n case 'Home':\n setFocussedTab(min);\n break;\n case 'End':\n setFocussedTab(max);\n break;\n case 'Space':\n case 'Enter':\n activateTab(currentFocussedTab);\n break;\n }\n };\n\n const handleBlur = () => {\n setFocussedTab(selectedTab);\n };\n\n const activateTab = (index: number) => {\n setSelectedTab(index);\n setFocussedTab(index);\n onTabChange && onTabChange(index);\n };\n\n const tabButtons = React.Children.map(children, (child, index) =>\n React.createElement(TabButton, {\n ref: child.props.buttonRef || createRef<HTMLButtonElement>(),\n key: generateID(),\n tabId: tabIds[index],\n tabPanelId: tabPanelIds[index],\n selected: selectedTab === index,\n focussed: focussedTab === index,\n onTabButtonClick: () => activateTab(index),\n children: child.props.title,\n })\n );\n\n const tabPanels = React.Children.map(children, (child, index) =>\n React.createElement(TabPanel, {\n ref: child.props.panelRef || createRef<HTMLDivElement>(),\n key: generateID(),\n selected: selectedTab === index,\n tabId: tabIds[index],\n tabPanelId: tabPanelIds[index],\n children: child.props.children,\n })\n );\n\n return (\n <div {...rest} className={`${classes['tabs']} ${className ?? ''}`}>\n <div\n role=\"tablist\"\n onKeyDown={handleKeyDown}\n onBlur={handleBlur}\n aria-label={ariaLabel}\n className={classes['tablist']}\n >\n <div className={classes['tabdivider']} />\n {tabButtons}\n <div\n className={classes['indicator']}\n ref={indicatorRef}\n aria-hidden=\"true\"\n tabIndex={-1}\n style={{\n width: indicatorWidth,\n ...indicatorPosition,\n }}\n />\n </div>\n <div className={classes['tabpanels']}>{tabPanels}</div>\n </div>\n );\n};\n","import React, { Fragment, useContext, useMemo } from 'react';\nimport { Button } from '../../Button/Button';\nimport { Step } from '../BaseWizardSteps/BaseWizardSteps';\nimport { WizardMode } from '../Wizard';\nimport { WizardStateContext } from '../WizardStateProvider';\nimport { changeCurrentStepNo } from '../wizardStateReducer';\n\nexport interface Props extends React.HTMLProps<HTMLDivElement> {\n cancelButtonLabel: string;\n previousButtonLabel: string;\n nextButtonLabel: string;\n saveAndCloseButtonLabel: string;\n onCancel: () => void;\n onNext: (currentStepNo: number) => boolean;\n onPrevious?: () => void;\n onSaveAndClose: (currentStepNo: number) => void;\n}\n\nconst calculateNextStepNo = (steps: Step[], currentStepNo: number) => () =>\n steps.findIndex((step, stepNo) => stepNo > currentStepNo && !step.disabled);\n\nconst calculatePrevStepNo = (steps: Step[], currentStepNo: number) => () => {\n const reversedCurrentStepNo = steps.length - 1 - currentStepNo;\n const reversedPrevStepNo = [...steps]\n .reverse()\n .findIndex((step, stepNo) => stepNo > reversedCurrentStepNo && !step.disabled);\n if (reversedPrevStepNo > 0) {\n return steps.length - 1 - reversedPrevStepNo;\n }\n return -1;\n};\n\nconst useNextStepNo = (mode: WizardMode, currentStepNo: number, steps: Step[]) =>\n useMemo(calculateNextStepNo(steps, currentStepNo), [mode, currentStepNo, steps]);\n\nconst usePreviousStepNo = (mode: WizardMode, currentStepNo: number, steps: Step[]) =>\n useMemo(calculatePrevStepNo(steps, currentStepNo), [mode, currentStepNo, steps]);\n\nexport const WizardActions = ({\n onCancel,\n onNext,\n onPrevious,\n onSaveAndClose,\n cancelButtonLabel,\n previousButtonLabel,\n nextButtonLabel,\n saveAndCloseButtonLabel,\n}: Props) => {\n const {\n state: { mode, steps, currentStepNo },\n dispatch,\n } = useContext(WizardStateContext);\n const nextStepNo = useNextStepNo(mode, currentStepNo, steps);\n const hasNextStep = nextStepNo !== -1;\n const previousStepNo = usePreviousStepNo(mode, currentStepNo, steps);\n const hasPreviousStep = previousStepNo !== -1;\n const isLastStepOrEditMode = !hasNextStep || mode === 'edit';\n\n const changeStepNo = (direction: 'forward' | 'backward') => {\n if (direction === 'forward') {\n hasNextStep && dispatch(changeCurrentStepNo(nextStepNo));\n } else {\n hasPreviousStep && dispatch(changeCurrentStepNo(previousStepNo));\n }\n };\n\n const onNextWrapper = () => {\n onNext(currentStepNo) && changeStepNo('forward');\n };\n\n const onPreviousWrapper = () => {\n onPrevious && onPrevious();\n changeStepNo('backward');\n };\n\n const onSaveAndCloseWrapper = () => {\n onSaveAndClose(currentStepNo);\n };\n\n return (\n <Fragment>\n <Button variant=\"text\" onClick={onCancel}>\n {cancelButtonLabel}\n </Button>\n {hasPreviousStep && (\n <Button variant=\"outline\" onClick={onPreviousWrapper}>\n {previousButtonLabel}\n </Button>\n )}\n {hasNextStep && (\n <Button variant={mode === 'edit' ? 'outline' : 'fill'} onClick={onNextWrapper}>\n {nextButtonLabel}\n </Button>\n )}\n {isLastStepOrEditMode && (\n <Button onClick={onSaveAndCloseWrapper}>{saveAndCloseButtonLabel}</Button>\n )}\n </Fragment>\n );\n};\n","import React, { useEffect, useState } from 'react';\nimport { generateID } from '../util/helper';\n\ninterface Arguments {\n componentToRepeat: React.ReactElement;\n}\n\nexport const useRepeater = <T>({ componentToRepeat }: Arguments) => {\n const [repeatedComponents, setRepeatedComponents] = useState<JSX.Element[]>([]);\n\n useEffect(() => {\n repeat();\n }, []);\n\n const repeat = () => {\n const clonedComponent = React.cloneElement(componentToRepeat, { key: generateID(20) });\n\n setRepeatedComponents((prevState) => [...prevState, clonedComponent]);\n };\n\n const remove = (componentToRemove: React.ReactElement<T>) => {\n const newRepeatedComponents = repeatedComponents.filter(\n (component) => component !== componentToRemove\n );\n\n setRepeatedComponents(newRepeatedComponents);\n };\n\n return {\n repeatedComponents,\n repeat,\n remove,\n };\n};\n","import { useContext } from 'react';\nimport { SnackbarContext } from './SnackbarProvider/SnackbarStateProvider';\n\nexport const useSnackbar = () => useContext(SnackbarContext);\n"],"names":["BaseStyling","e","t","n","r","document","a","s","prepend","d","singleTag","i","container","querySelector","getElementsByTagName","u","indexOf","push","c","charCodeAt","substring","styleSheet","cssText","appendChild","createTextNode","createElement","setAttribute","attributes","Object","keys","length","insertAdjacentElement","BaseButton","React","forwardRef","ref","children","_ref$type","_ref","type","className","rest","_objectWithoutPropertiesLoose","_excluded","includes","Error","classes","Button","_ref$variant","variant","_ref$color","color","_ref$startIcon","startIcon","_ref$endIcon","endIcon","additionalClasses","join","Icons","Icon","icon","style","size","_ref$tag","tag","_extends","fontSize","spacingNumberRegex","useSpacing","spacingProps","entries","reduce","prev","_extends2","spacing","matches","String","matchAll","cssSpacingValue","Array","from","map","_ref2","Number","validVariants","Typography","_ref$className","styleWithSpacing","Breadcrumbs","ariaLabel","items","Children","child","index","isArray","Fragment","key","cloneElement","ChevronRight","props","defaultConfigObject","relativeElement","undefined","elementToBePositioned","transformOrigin","horizontal","vertical","placement","offset","top","right","bottom","left","usePosition","providedConfigObject","configObject","_useState","useState","position","setPosition","_calculatePlacement","relEl","elDimensions","axis","_configObject$transfo","_configObject$transfo2","placementValue","requestedReturnValue","placementOriginDefinition","_determineCenteredPlacementOrigin","value","window","_calculateInitialPlacementValue","valueWithOffset","_configObject$offset","_configObject$offset2","_configObject$offset7","_configObject$offset8","_configObject$offset3","_configObject$offset4","_configObject$offset5","_configObject$offset6","_configObject$offset9","_configObject$offset10","_configObject$offset11","_configObject$offset12","returnValue","_applyOffsetToPlacementValue","valueCorrectionForViewportOverflow","innerWidth","width","innerHeight","height","_fixPossibleViewportOverflow","_calculatePlacementValue","direction","oppositeDirection","prevState","calculatePosition","_configObject$relativ","current","relativeElRect","getBoundingClientRect","elementToBePositionedDimensions","offsetHeight","offsetWidth","clonedRelEl","center","centerv","centerh","x","y","Popover","show","anchorEl","elToBePositioned","useRef","_usePosition","useEffect","useBodyClick","checkFunction","callbackFunction","dependingStateVariable","bodyClickListener","event","addEventListener","removeEventListener","ContextMenu","trigger","id","_ref$show","onShow","onClose","_ref$placement","_ref$offset","_ref$transformOrigin","_ref$domRoot","domRoot","body","showContextMenu","setShowContextMenu","_useState2","selectedContextMenuItem","setSelectedContextMenuItem","_useState3","focusedContextMenuItem","setFocusedContextMenuItem","shouldClick","_useState4","setShouldClick","childrenCount","count","target","focus","onKeyDown","code","preventDefault","onClick","tabIndex","createPortal","role","onFocusChange","childIndex","onSelectedChange","hasFocus","isSelected","contextMenuOpened","ContextMenuItem","innerButtonRef","createRef","click","Link","_ref$disabled","disabled","to","_ref$display","display","_ref$buttonVariant","buttonVariant","component","classNames","download","rel","href","IconButton","_ref$iconSize","iconSize","title","console","error","iconButtonClasses","readyclasses","generateID","stringToWeaveIn","hashCharacters","test","Math","floor","random","slice","filterProps","regexPattern","returnFiltered","acc","filter","prevObj","currKeyValPair","TabButton","_ref$selected","selected","_ref$focussed","focussed","tabId","tabPanelId","onTabButtonClick","TabPanel","hidden","TextEllipsis","popoverClassName","showPopover","setShowPopover","textContainer","ellipsisVisible","scrollWidth","onMouseEnter","onMouseLeave","Tile","imageProps","enabled","loading","tileAction","tileDescriptionID","justifyContent","Checkmark","Forbidden","readyClasses","src","alt","Image","Tiles","_ref$loading","defaultPosition","Tooltip","label","identifier","visible","setVisible","escapePressHandler","useLayoutEffect","isValidElement","onFocus","onBlur","InfoCircle","Skeleton","dateTypes","Input","_ref$error","name","wrapperProps","labeledBy","prefix","suffix","setFocus","inputClassNames","iconClassNames","wrapperClasses","Select","placeholder","describedBy","_ref$searchPlaceholde","searchPlaceholder","searchInputProps","selectButtonProps","_ref$clearLabel","clearLabel","onChange","onClear","expanded","setExpanded","opacity","setOpacity","setFilter","setDisplay","listPosition","_useState5","setListPosition","optionsListMaxHeight","_useState6","setOptionsListMaxHeight","containerReference","optionListReference","isSearching","_useState7","setIsSearching","_useState8","focusedSelectItem","setFocusedSelectItem","_useState9","nativeSelect","searchInputRef","val","forEach","listHeight","availableSpace","calculateOptionListMaxHeight","rePositionList","closest","_searchInputProps$wra","internalChildren","codesToPreventDefault","Warning","stopPropagation","TimesThin","TriangleDown","maxHeight","autoFocus","currentTarget","toArray","toLowerCase","match","onOptionSelect","optionRef","getAttribute","dispatchEvent","Event","bubbles","onOptionChangeHandler","selectOpened","Option","_ref$isSelected","innerOptionRef","onSelectHandler","onKeyDownCapture","DefaultTranslations","Label","_ref$hidden","Pagination","amountOfPages","totalElements","_ref$pageSize","pageSize","_ref$translate","translate","currentPage","onPageChange","onPageSizeChange","toString","internalCurrentPage","setInternalCurrentPage","calculateAmountOfPages","ceil","onEnterListener","onPageChangeHandler","pageToGoTo","totalItems","itemsPerPage","pageSizeNumber","NavigationFirst","ChevronLeft","split","string","htmlFor","currentPageLabel","max","onKeyUp","replace","NavigationLast","labelId","descriptionId","BaseModal","_backdropProps$classN","_containerProps$class","_containerProps$class2","open","containerProps","backdropProps","labelledby","describedby","_ref$disableEscapeKey","disableEscapeKeyDown","_ref$disableBackdrop","disableBackdrop","_ref$forceContainerOp","forceContainerOpen","zIndex","querySelectorAll","removeProperty","useSetBodyScroll","SnackbarContext","createContext","enqueueSnackbar","enqueueSuccessSnackbar","enqueueErrorSnackbar","SnackbarContextProvider","Provider","initialState","BaseModalContent","_ref$disableAutoFocus","disableAutoFocus","contentRef","_ref$current","_contentRef$current","BaseModalActions","DialogActions","align","DialogTitle","Dialog","secondaryLabel","restOfSecondaryAction","alignActions","primaryAction","secondaryAction","dialogId","primaryLabel","restOfPrimaryAction","_excluded2","PrimaryButton","TertiaryButton","_excluded3","maxLength","onKeyPress","BaseModalHeader","Times","DiscardChangesDialog","onKeepEditing","onDiscardChanges","discardChangesButtonLabel","keepEditingButtonLabel","contentLabel","titleLabel","margin","SlideInModal","setClassHideOnTransition","Modal","onTransitionEnd","SnackbarContainer","SnackbarItem","duration","content","_ref$actions","actions","closeButtonTitle","timerHandler","useAnimation","callback","animatedObjectRef","animationStarted","setAnimationStarted","onAnimationEnd","_animatedObjectRef$cu","_animatedObjectRef$cu2","startAnimation","setTimeout","clearTimeout","actionButtons","actionProp","CheckmarkCircleBreakout","useFormSelector","setDescribedBy","errorId","errorMessage","parentErrorId","helperText","parentHelperId","FormHelperText","FormSelectorWrapper","_helperProps$classNam","nestedChildren","helperProps","helperRef","isToggle","_children$props","Checkbox","indeterminate","_ref$checked","checked","formSelectorWrapperProps","_useFormSelector","iconClasses","MinusSquare","CheckmarkSquare","Square","determineLabel","Radio","onChangeHandler","nativeEvent","clonedEvent","constructor","defineProperty","writable","Circle","Textarea","_wrapperProps$classNa","_errorProps$className","_ref$rows","rows","errorProps","Toggle","FormControl","grid","_ref$align","childElement","column","FormGroup","errorMessageIcon","_ref$errorMessageIcon","errorMessageIconPosition","helperId","helperIndent","marginLeft","message","Wrapper","_ref$floatingLabel","floatingLabel","floatingLabelActive","required","labelProps","innerClassName","labelClasses","wrapper","useWrapper","setFloatingLabelActive","setHasFocus","InputWrapper","_inputProps$wrapperPr","_inputProps$wrapperPr2","_inputProps$className","inputProps","input","hasValueOrActiveFloatingLabel","labelOffset","setLabelOffset","prefixDifference","useLabelOffset","_inputProps$placehold","SelectWrapper","_selectProps$classNam","selectProps","_useWrapper","TextareaWrapper","textareaProps","hover","setHover","optionalClasses","_textareaProps$placeh","Fieldset","legend","_ref$legendStyle","legendStyle","_ref$hideLegend","hideLegend","_ref$background","background","noBackground","_ref$noPadding","noPadding","_ref$required","_ref$disablePropagati","disablePropagation","backgroundColor","allowedComponents","_child$props$disabled","_child$props$error","renderChildren","RadioWrapper","fieldsetProps","CheckboxWrapper","changeCurrentStepNo","currentStepNo","payload","reducer","state","action","WizardStateContext","dispatch","WizardStateProvider","_useReducer","useReducer","WizardContent","steps","mode","stepScreenReaderLabel","onStepChange","useContext","setWizardState","useStepChanging","BaseWizardSteps","_ref$futureStepsClick","futureStepsClickable","generatedSteps","step","stepNo","stepState","disabledStyleClassName","clickableClassName","stepNumberString","getStepContent","WizardSteps","onStepClick","_useContext$state","_useContext","selectedStepNo","ariaSortMapping","ASC","DESC","DataGridHeaderCell","getSortingIndicatorClasses","headline","disableSorting","activeSortDirection","onSort","innerContent","sortingIndicatorClasses","TriangleUp","sortingStates","DataGridHeader","initialSort","headers","disableContextMenuColumn","enableMultiSorting","sortList","setSortList","wrapOnSort","newSort","currentDirectionIdx","find","item","restSortList","newSortDirection","findIndex","concat","updateSortList","headerCells","header","headerStyle","paddingLeft","paddingRight","sort","DataGridColumnsToggle","_ref$titleLabel","_ref$closeButtonTitle","onToggleClicked","labelledId","toggles","DataGridActions","_columnsBtnProps$clas","_columnsBtnProps$clas2","_searchBtnProps$class","_columnsBtnProps$clas3","enableAddBtn","enableColumnsBtn","enableSearchBtn","_ref$addBtnProps","addBtnProps","_ref$columnsBtnProps","columnsBtnProps","_ref$searchBtnProps","searchBtnProps","onColumnToggled","isHidden","showColsPopover","setShowColsPopover","showColumnBtn","Plus","Change","TableSearch","DataGridCell","isLoading","cellIndex","columnLength","cellStyle","DataGridRow","visibleCells","cellWithSpacing","DataGridBodyInner","visibleColumns","data","emptyLabel","_","rowIdx","__","colIdx","colSpan","DataGridBody","DataGridInner","_paginationProps$clas","paginationProps","internalHeaders","setInternalHeaders","padding","splitPaddings","paddingLeftIndex","defineProperties","paddingTop","paddingBottom","colName","DataGrid","_ref$properties","properties","defaultProperties","colorFocus","colorPrimary","colorSecondary","colorTertiary","defaultLineHeight","buttonBorderRadius","buttonBorderWidth","buttonFontSize","buttonBorderStyle","buttonFillTextColor","buttonFillBackgroundColor","buttonOutlineHoverTextColor","inputBorderColor","inputBorderRadius","inputBorderWidth","inputBorderStyle","inputBackgroundColor","modalShadowColor","modalBackgroundColor","modalHeaderBackgroundColor","snackbarTextColor","snackbarInfoBackgroundColor","snackbarSuccessBackgroundColor","snackbarErrorBackgroundColor","snackbarBorderRadius","dataGridRowBackgroundColor","dataGridRowHoverBackgroundColor","tabsBackgroundColor","tabBorderWidth","tabBorderStyle","tablistBorderWidth","tablistBorderStyle","tablistBorderColor","tabTextColor","default","success","greyedOut","warning","fontFamily","fontFamilyCode","fontSizeH1","fontSizeH2","fontSizeH3","fontSizeH4","fontSizeSub","fontSizeCode","setIsLoading","setCSSProperties","CSSPropertiesObject","_i","_Object$entries","_Object$entries$_i","formattedPropertyName","documentElement","setProperty","mergedState","headerProps","discardChangedDialogProps","modalRef","dialogRef","hasUnsavedChanges","openDiscardChangesDialog","setOpenDiscardChangesDialog","onCloseWrapper","ModalHeader","_temp","_ref$autoHideDuration","autoHideDuration","long","short","_ref$stackSize","stackSize","setSnackbars","options","_options$variant","_options$duration","getDuration","onItemClosed","snackbarList","snackbarPortal","args","onTabChange","indicatorRef","indicatorPosition","setIndicatorPosition","indicatorWidth","setIndicatorWidth","min","selectedTab","setSelectedTab","focussedTab","setFocussedTab","tabIds","tabPanelIds","calculateIndicatorPosition","selectedTabButton","tabButtons","offsetLeft","offsetTop","activateTab","buttonRef","tabPanels","panelRef","currentFocussedTab","initialStepNo","_props$initialStepNo","onCancel","onNext","onPrevious","onSaveAndClose","cancelButtonLabel","previousButtonLabel","nextButtonLabel","saveAndCloseButtonLabel","nextStepNo","useMemo","calculateNextStepNo","useNextStepNo","hasNextStep","previousStepNo","reversedCurrentStepNo","reversedPrevStepNo","reverse","calculatePrevStepNo","usePreviousStepNo","hasPreviousStep","isLastStepOrEditMode","changeStepNo","componentToRepeat","repeatedComponents","setRepeatedComponents","repeat","clonedComponent","remove","componentToRemove","newRepeatedComponents"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"react-lib-components.cjs.production.min.js","sources":["../src/_BaseStyling_/BaseStyling.tsx","../node_modules/rollup-plugin-styles/dist/runtime/inject-css.js","../src/Button/BaseButton.tsx","../src/Button/Button.tsx","../src/Icon/Icon.tsx","../src/hooks/useSpacing.ts","../src/Typography/Typography.tsx","../src/Breadcrumbs/Breadcrumbs.tsx","../src/hooks/usePosition.ts","../src/Popover/Popover.tsx","../src/hooks/useBodyClick.ts","../src/ContextMenu/ContextMenu.tsx","../src/ContextMenu/ContextMenuItem.tsx","../src/Link/Link.tsx","../src/Button/IconButton.tsx","../src/util/helper.tsx","../src/Tabs/TabButton.tsx","../src/Tabs/TabPanel.tsx","../src/TextEllipsis/TextEllipsis.tsx","../src/Tiles/Tile.tsx","../src/Tiles/Tiles.tsx","../src/Tooltip/Tooltip.tsx","../src/Skeleton/Skeleton.tsx","../src/StatusIndicator/StatusIndicator.tsx","../src/Form/Input/Input.tsx","../src/Form/Select/Select.tsx","../src/Form/Select/Option.tsx","../src/Pagination/Pagination.tsx","../src/Form/Label/Label.tsx","../src/Notifications/BaseModal/BaseModalContext.ts","../src/Notifications/BaseModal/BaseModal.tsx","../src/Notifications/Snackbar/SnackbarProvider/SnackbarStateProvider.tsx","../src/Notifications/BaseModal/BaseModalContent/BaseModalContent.tsx","../src/Notifications/BaseModal/BaseModalActions/BaseModalActions.tsx","../src/Notifications/Dialog/DialogActions/DialogActions.tsx","../src/Notifications/Dialog/DialogTitle/DialogTitle.tsx","../src/Notifications/Dialog/Dialog.tsx","../src/Notifications/BaseModal/BaseModalHeader/BaseModalHeader.tsx","../src/Notifications/DiscardChangesModal/DiscardChangesDialog/DiscardChangesDialog.tsx","../src/Notifications/SlideInModal/SlideInModal.tsx","../src/Notifications/Snackbar/SnackbarContainer/SnackbarContainer.tsx","../src/hooks/useAnimation.ts","../src/Notifications/Snackbar/SnackbarItem/SnackbarItem.tsx","../src/hooks/useFormSelector.ts","../src/Form/FormHelperText/FormHelperText.tsx","../src/Form/FormSelectorWrapper/FormSelectorWrapper.tsx","../src/Form/Checkbox/Checkbox.tsx","../src/Form/Radio/Radio.tsx","../src/Form/Textarea/Textarea.tsx","../src/Form/Toggle/Toggle.tsx","../src/Form/FormControl/FormControl.tsx","../src/Form/FormGroup/FormGroup.tsx","../src/Form/Wrapper/Wrapper/Wrapper.tsx","../src/hooks/useWrapper.ts","../src/Form/Wrapper/InputWrapper/InputWrapper.tsx","../src/Form/Wrapper/SelectWrapper/SelectWrapper.tsx","../src/Form/Wrapper/TextareaWrapper/TextareaWrapper.tsx","../src/Form/Fieldset/Fieldset.tsx","../src/Form/Wrapper/RadioWrapper/RadioWrapper.tsx","../src/Form/Wrapper/CheckboxWrapper/CheckboxWrapper.tsx","../src/Wizard/wizardStateReducer.ts","../src/Wizard/WizardStateProvider.tsx","../src/Wizard/Wizard.tsx","../src/Wizard/BaseWizardSteps/BaseWizardSteps.tsx","../src/Wizard/WizardSteps/WizardSteps.tsx","../src/DataGrid/DataGridHeader/DataGridHeaderCell.tsx","../src/DataGrid/DataGridHeader/DataGridHeader.tsx","../src/DataGrid/DataGridActions/DataGridColumnsToggle.tsx","../src/DataGrid/DataGridActions/DataGridActions.tsx","../src/DataGrid/DataGridBody/DataGridCell.tsx","../src/DataGrid/DataGridBody/DataGridRow.tsx","../src/DataGrid/DataGridBody/DataGridBody.tsx","../src/DataGrid/DataGrid.tsx","../src/Notifications/DiscardChangesModal/DiscardChangesModal.tsx","../src/Form/Form.tsx","../src/Notifications/Snackbar/SnackbarProvider/SnackbarProvider.tsx","../src/Tabs/Tab.tsx","../src/Tabs/Tabs.tsx","../src/Wizard/WizardActions/WizardActions.tsx","../src/hooks/useRepeater.ts","../src/Notifications/Snackbar/useSnackbar.ts"],"sourcesContent":["import React, { Fragment, HTMLAttributes, ReactChild, useEffect, useState } from 'react';\n\ninterface CSSProperties {\n colorFocus?: string;\n colorPrimary?: string;\n colorSecondary?: string;\n colorTertiary?: string;\n defaultLineHeight?: string;\n buttonBorderRadius?: string;\n buttonBorderWidth?: string;\n buttonFontSize?: string;\n buttonBorderStyle?: string;\n buttonFillTextColor?: string;\n buttonFillBackgroundColor?: string;\n buttonOutlineHoverTextColor?: string;\n inputBorderColor?: string;\n inputBorderRadius?: string;\n inputBorderWidth?: string;\n inputBorderWidthFocus?: string;\n inputBorderStyle?: string;\n inputBackgroundColor?: string;\n modalShadowColor?: string;\n modalBackgroundColor?: string;\n modalHeaderBackgroundColor?: string;\n snackbarTextColor?: string;\n snackbarInfoBackgroundColor?: string;\n snackbarSuccessBackgroundColor?: string;\n snackbarErrorBackgroundColor?: string;\n snackbarBorderRadius?: string;\n dataGridRowBackgroundColor?: string;\n dataGridRowHoverBackgroundColor?: string;\n tabsBackgroundColor?: string;\n tabBorderWidth?: string;\n tabBorderStyle?: string;\n tablistBorderWidth?: string;\n tablistBorderStyle?: string;\n tablistBorderColor?: string;\n tabTextColor?: string;\n default?: string;\n success?: string;\n error?: string;\n disabled?: string;\n greyedOut?: string;\n warning?: string;\n fontFamily?: string;\n fontFamilyCode?: string;\n fontSize?: string;\n fontSizeH1?: string;\n fontSizeH2?: string;\n fontSizeH3?: string;\n fontSizeH4?: string;\n fontSizeSub?: string;\n fontSizeCode?: string;\n}\n\nexport interface Props extends HTMLAttributes<HTMLDivElement> {\n children?: ReactChild;\n properties?: CSSProperties;\n}\n\nexport const BaseStyling = ({ children, properties = {} }: Props) => {\n const defaultProperties: CSSProperties = {\n colorFocus: '#0085f2',\n colorPrimary: '#9e006b',\n colorSecondary: '#003b5e',\n colorTertiary: '#ff1e4e',\n defaultLineHeight: '26px',\n buttonBorderRadius: '20px',\n buttonBorderWidth: '2px',\n buttonFontSize: '1rem',\n buttonBorderStyle: 'solid',\n buttonFillTextColor: '#fff',\n buttonFillBackgroundColor: '#fff',\n buttonOutlineHoverTextColor: '#fff',\n inputBorderColor: '#e9e9eb',\n inputBorderRadius: '8px',\n inputBorderWidth: '1px',\n inputBorderWidthFocus: '2px',\n inputBorderStyle: 'solid',\n inputBackgroundColor: '#fff',\n modalShadowColor: 'rgba(0, 0, 0, 0.16)',\n modalBackgroundColor: '#f5f8f8',\n modalHeaderBackgroundColor: '#fff',\n snackbarTextColor: '#fff',\n snackbarInfoBackgroundColor: '#003b5e',\n snackbarSuccessBackgroundColor: '#008a28',\n snackbarErrorBackgroundColor: '#e22a1d',\n snackbarBorderRadius: '8px',\n dataGridRowBackgroundColor: 'transparent',\n dataGridRowHoverBackgroundColor: '#f5e6f0',\n tabsBackgroundColor: '#FFF',\n tabBorderWidth: '2px',\n tabBorderStyle: 'solid',\n tablistBorderWidth: '1px',\n tablistBorderStyle: 'solid',\n tablistBorderColor: '#C3C3C7',\n tabTextColor: '#0f0f1e',\n default: '#0f0f1e',\n success: '#008a28',\n error: '#e22a1d',\n disabled: '#e9e9eb',\n greyedOut: '#6f6f76',\n warning: '#ff6105',\n fontFamily: \"'Red Hat Display', sans-serif\",\n fontFamilyCode: \"'Red Hat Mono', sans-serif\",\n fontSize: '1rem',\n fontSizeH1: '2.5rem',\n fontSizeH2: '1.625rem',\n fontSizeH3: '1.5rem',\n fontSizeH4: '1.25rem',\n fontSizeSub: '.75rem',\n fontSizeCode: '1rem',\n };\n\n /** We need a loading state, because otherwise you see the colors flash from the default to the possible overridden ones. */\n const [isLoading, setIsLoading] = useState(true);\n\n /** Set the actual CSS properties on the HTML :root object */\n const setCSSProperties = (CSSPropertiesObject: CSSProperties) => {\n for (const [key, value] of Object.entries(CSSPropertiesObject)) {\n const formattedPropertyName = key.replace(/([A-Z])/g, (val) => `-${val.toLowerCase()}`);\n document.documentElement.style.setProperty(`--${formattedPropertyName}`, value);\n }\n };\n\n /** Check if the properties prop object is filled with anything. If it is, we want to shallow merge it with the default BaseStyling. */\n useEffect(() => {\n if (Object.keys(properties).length !== 0) {\n const mergedState = { ...defaultProperties, ...properties };\n setCSSProperties(mergedState);\n } else {\n setCSSProperties(defaultProperties);\n }\n setIsLoading(false);\n }, [properties]);\n\n /** Only render if we're not loading */\n return !isLoading ? <Fragment>{children}</Fragment> : null;\n};\n","var e=[],t=[];function n(n,r){if(n&&\"undefined\"!=typeof document){var a,s=!0===r.prepend?\"prepend\":\"append\",d=!0===r.singleTag,i=\"string\"==typeof r.container?document.querySelector(r.container):document.getElementsByTagName(\"head\")[0];if(d){var u=e.indexOf(i);-1===u&&(u=e.push(i)-1,t[u]={}),a=t[u]&&t[u][s]?t[u][s]:t[u][s]=c()}else a=c();65279===n.charCodeAt(0)&&(n=n.substring(1)),a.styleSheet?a.styleSheet.cssText+=n:a.appendChild(document.createTextNode(n))}function c(){var e=document.createElement(\"style\");if(e.setAttribute(\"type\",\"text/css\"),r.attributes)for(var t=Object.keys(r.attributes),n=0;n<t.length;n++)e.setAttribute(t[n],r.attributes[t[n]]);var a=\"prepend\"===s?\"afterbegin\":\"beforeend\";return i.insertAdjacentElement(a,e),e}}export{n as default};\n","import React, { ComponentPropsWithRef } from 'react';\nimport classes from './BaseButton.module.scss';\n\nexport interface Props extends ComponentPropsWithRef<'button'> {\n type?: 'submit' | 'button' | 'reset';\n disabled?: boolean;\n color?: 'primary' | 'secondary' | 'tertiary' | 'default';\n}\n\nexport const BaseButton = React.forwardRef<HTMLButtonElement, Props>(\n ({ children, type = 'button', className, ...rest }, ref) => {\n const validTypes = ['submit', 'button', 'reset'];\n\n if (!validTypes.includes(type))\n throw new Error(\n `You have entered an invalid button type. Expected 'submit', 'button' or 'reset' got ${type}`\n );\n\n return (\n <button\n {...rest}\n ref={ref}\n type={type}\n className={`${classes.button} ${className ? className : ''}`}\n >\n {children}\n </button>\n );\n }\n);\n","import React from 'react';\nimport { BaseButton, Props as BaseButtonProps } from './BaseButton';\nimport classes from './Button.module.scss';\n\nexport interface Props extends BaseButtonProps {\n startIcon?: React.ReactNode | false;\n endIcon?: React.ReactNode | false;\n children?: React.ReactNode;\n variant?: 'text' | 'fill' | 'outline';\n}\n\nexport const Button = React.forwardRef<HTMLButtonElement, Props>(\n (\n {\n children,\n variant = 'fill',\n color = 'primary',\n startIcon = false,\n endIcon = false,\n className,\n ...rest\n },\n ref\n ) => {\n const additionalClasses = [];\n\n if (startIcon || endIcon) {\n additionalClasses.push(classes['has-icon']);\n }\n\n if (startIcon) {\n additionalClasses.push(classes['start-icon']);\n }\n\n if (endIcon) {\n additionalClasses.push(classes['end-icon']);\n }\n\n if (className) {\n additionalClasses.push(className);\n }\n\n return (\n <BaseButton\n {...rest}\n ref={ref}\n className={`${classes[color]} ${classes[variant]} ${additionalClasses.join(' ')}`}\n >\n {startIcon && <i>{startIcon} </i>}\n <span>{children}</span>\n {endIcon && <i> {endIcon}</i>}\n </BaseButton>\n );\n }\n);\n","import React, { ComponentPropsWithRef } from 'react';\nimport classes from './Icon.module.scss';\n\nexport enum Icons {\n Bell = 'bell',\n BellAlt = 'bell-alt',\n Bookmark = 'bookmark',\n BookmarkAlt = 'bookmark-alt',\n Build = 'build',\n Calendar = 'calendar',\n Change = 'change',\n Checkmark = 'checkmark',\n CheckmarkCircle = 'checkmark-circle',\n CheckmarkCircleAlt = 'checkmark-circle-alt',\n CheckmarkCircleBreakout = 'checkmark-circle-breakout',\n CheckmarkSquare = 'checkmark-square',\n ChevronUp = 'chevron-up',\n ChevronDown = 'chevron-down',\n ChevronLeft = 'chevron-left',\n ChevronRight = 'chevron-right',\n Circle = 'circle',\n Clock = 'clock',\n Copy = 'copy',\n Edit = 'edit',\n Ellipsis = 'ellipsis',\n EllipsisAlt = 'ellipsis-alt',\n Equal = 'equal',\n Error = 'error-circle',\n Eye = 'eye',\n Filter = 'filter',\n FilterAlt = 'filter-alt',\n FilterAltArrow = 'filter-alt-arrow',\n FilterAltTimes = 'filter-alt-times',\n Forbidden = 'forbidden',\n Fullscreen = 'fullscreen',\n FullscreenExit = 'fullscreen-exit',\n Gearwheel = 'gearwheel',\n Grid = 'grid',\n Hamburger = 'hamburger',\n Heart = 'heart',\n Image = 'image',\n InfoBell = 'info-bell',\n InfoCircle = 'info-circle',\n Link = 'link',\n MinusSquare = 'minus-square',\n NavigationFirst = 'navigation-first',\n NavigationLast = 'navigation-last',\n Plus = 'plus',\n Radio = 'radio',\n Refresh = 'refresh',\n Search = 'search',\n Share = 'share',\n Square = 'square',\n Star = 'star',\n StarAlt = 'star-alt',\n TableSearch = 'table-search',\n Times = 'times',\n TimesCircle = 'times-circle',\n TimesCircleAlt = 'times-circle-alt',\n TimesThin = 'times-thin',\n Trash = 'trash',\n TriangleDown = 'triangle-down',\n TriangleDownCircle = 'triangle-down-circle',\n TriangleLeft = 'triangle-left',\n TriangleRight = 'triangle-right',\n TriangleUp = 'triangle-up',\n Undo = 'undo',\n Warning = 'warning',\n}\n\ntype Tag = 'span' | 'div' | 'i';\n\nexport interface Props extends ComponentPropsWithRef<'div'> {\n icon: Icons;\n color?: string;\n size?: string;\n tag?: Tag;\n}\n\nexport const Icon = React.forwardRef<HTMLDivElement, Props>(\n ({ icon, color, className, style, size, tag = 'span', ...rest }: Props, ref) => {\n const Component = tag;\n\n return (\n <Component\n {...rest}\n ref={ref}\n style={{ color: color, ...style, fontSize: size }}\n data-icon\n aria-hidden=\"true\"\n className={`${classes['icon']} ${classes['icon-' + icon]} ${className ? className : ''}`}\n />\n );\n }\n);\n","import { CSSProperties } from 'react';\n\nexport type SpacingMultiplier = 0 | 0.5 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8;\ntype SpacingMultiplierStringOrNumber = `${SpacingMultiplier}` | SpacingMultiplier;\ntype MultiValueSpacingMultiplier =\n | `${SpacingMultiplier} ${SpacingMultiplier} ${SpacingMultiplier} ${SpacingMultiplier}`\n | `${SpacingMultiplier} ${SpacingMultiplier} ${SpacingMultiplier}`\n | `${SpacingMultiplier} ${SpacingMultiplier}`\n | SpacingMultiplierStringOrNumber;\n\nexport interface Spacing {\n padding?: MultiValueSpacingMultiplier;\n paddingTop?: SpacingMultiplierStringOrNumber;\n paddingBottom?: SpacingMultiplierStringOrNumber;\n paddingLeft?: SpacingMultiplierStringOrNumber;\n paddingRight?: SpacingMultiplierStringOrNumber;\n margin?: MultiValueSpacingMultiplier;\n marginTop?: SpacingMultiplierStringOrNumber;\n marginBottom?: SpacingMultiplierStringOrNumber;\n marginLeft?: SpacingMultiplierStringOrNumber;\n marginRight?: SpacingMultiplierStringOrNumber;\n}\n\nconst defaultFactor = 0.25;\nconst defaultUnit = 'rem';\nconst spacingNumberRegex = /(\\d+\\.?\\d*)+/g;\n\nexport const useSpacing = (\n spacingProps?: Spacing,\n style?: CSSProperties\n): CSSProperties | undefined => {\n if (spacingProps) {\n return Object.entries(spacingProps).reduce<CSSProperties>((prev, [spacing, multiplier]) => {\n const matches = String(multiplier).matchAll(spacingNumberRegex);\n const cssSpacingValue = Array.from(matches)\n .map(([multiplierValue]) => `${Number(multiplierValue) * defaultFactor}${defaultUnit}`)\n .join(' ');\n return { ...prev, [spacing]: cssSpacingValue };\n }, style ?? {});\n }\n return style;\n};\n","import React, { ComponentPropsWithRef, ReactNode } from 'react';\nimport classes from './Typography.module.scss';\nimport { Spacing, useSpacing } from '../hooks/useSpacing';\n\nexport const validVariants = [\n 'h1',\n 'h2',\n 'h3',\n 'h4',\n 'body',\n 'body-bold',\n 'sub-text',\n 'code',\n] as const;\nexport type Variant = typeof validVariants[number];\n\ntype Tags =\n | 'h1'\n | 'h2'\n | 'h3'\n | 'h4'\n | 'p'\n | 'div'\n | 'code'\n | 'span'\n | 'sup'\n | 'sub'\n | 'strong'\n | 'em'\n | 'small'\n | 'mark'\n | 'del'\n | 'ins'\n | 'blockquote';\n\nexport interface Props extends ComponentPropsWithRef<any> {\n children: ReactNode;\n variant: Variant;\n tag?: Tags;\n spacing?: Spacing;\n}\n\nexport const Typography = React.forwardRef<any, Props>(\n ({ children, variant, tag, style, spacing, className = '', ...rest }: Props, ref) => {\n if (!validVariants.includes(variant)) {\n throw new Error(\n `You entered an invalid variant. You can choose from: ${validVariants}, you entered: ${variant}`\n );\n }\n\n const styleWithSpacing = useSpacing(spacing, style);\n\n if (!tag) {\n switch (variant) {\n case 'h1':\n case 'h2':\n case 'h3':\n case 'h4':\n case 'code':\n tag = variant;\n break;\n case 'body':\n tag = 'p';\n break;\n case 'body-bold':\n tag = 'p';\n break;\n case 'sub-text':\n tag = 'span';\n break;\n default:\n tag = 'div';\n break;\n }\n }\n\n let TagName = tag;\n\n return (\n <TagName\n {...rest}\n ref={ref}\n style={styleWithSpacing}\n className={`${classes['typography_style_' + variant]} ${className}`}\n >\n {children}\n </TagName>\n );\n }\n);\n","import React, { ComponentPropsWithRef, Fragment, ReactElement } from 'react';\nimport { Icon, Icons } from '../Icon/Icon';\nimport { Link, Props as LinkProps } from '../Link/Link';\nimport { Typography } from '../Typography/Typography';\nimport classes from './Breadcrumbs.module.scss';\n\ntype ChildrenType = ReactElement<LinkProps, typeof Link>;\n\nexport interface Props extends ComponentPropsWithRef<'div'> {\n children: ChildrenType | ChildrenType[];\n 'aria-label': string;\n}\n\nexport const Breadcrumbs = React.forwardRef<HTMLDivElement, Props>(\n ({ children, 'aria-label': ariaLabel, className = '', ...rest }: Props, ref) => {\n const items = React.Children.map(children, (child, index) => {\n const isLastElement = Array.isArray(children) ? index === children.length - 1 : true;\n if (isLastElement) {\n return (\n <Typography\n key={child.key}\n variant=\"body\"\n tag=\"span\"\n className={classes['last']}\n aria-current=\"page\"\n >\n {child.props.children}\n </Typography>\n );\n } else {\n return (\n <Fragment key={child.key}>\n {React.cloneElement(child)}\n <Icon icon={Icons.ChevronRight} className={classes['icon']} />\n </Fragment>\n );\n }\n });\n return (\n <nav\n {...rest}\n ref={ref}\n aria-label={ariaLabel}\n className={`${classes['breadcrumbs']} ${className}`}\n >\n {items}\n </nav>\n );\n }\n);\n","import React, { useState } from 'react';\n\nexport interface ConfigObject {\n relativeElement: RefElement;\n elementToBePositioned: RefElement;\n transformOrigin?: Placement;\n placement?: Placement;\n offset?: Offset;\n}\n\nexport type HorizontalPlacment = 'left' | 'center' | 'centerh' | 'right';\nexport type VerticalPlacement = 'top' | 'center' | 'centerv' | 'bottom';\n\ntype Axis = 'vertical' | 'horizontal';\ntype RefElement = React.RefObject<HTMLOrSVGElement> | undefined;\n\ninterface DomRectObject {\n top: number;\n right: number;\n bottom: number;\n left: number;\n center: number;\n centerh: number;\n centerv: number;\n width: number;\n height: number;\n x: number;\n y: number;\n}\n\nexport interface Placement {\n horizontal: HorizontalPlacment;\n vertical: VerticalPlacement;\n}\n\nexport interface Offset {\n top: number;\n right: number;\n bottom: number;\n left: number;\n}\n\nexport interface Position {\n top: PositionType;\n right: PositionType;\n bottom: PositionType;\n left: PositionType;\n}\n\ninterface Dimensions {\n height: number;\n width: number;\n}\n\ntype PositionType = number | 'initial';\n\nconst defaultConfigObject: ConfigObject = {\n relativeElement: undefined,\n elementToBePositioned: undefined,\n transformOrigin: {\n horizontal: 'left',\n vertical: 'top',\n },\n placement: {\n horizontal: 'left',\n vertical: 'top',\n },\n offset: {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n },\n};\n\nexport const usePosition = (providedConfigObject: ConfigObject = defaultConfigObject) => {\n const configObject = { ...defaultConfigObject, ...providedConfigObject };\n\n if (configObject.transformOrigin === undefined) {\n configObject.transformOrigin = defaultConfigObject.transformOrigin;\n }\n\n if (configObject.placement === undefined) {\n configObject.placement = defaultConfigObject.placement;\n }\n\n if (configObject.offset === undefined) {\n configObject.offset = defaultConfigObject.offset;\n }\n\n const [position, setPosition] = useState<Position>({\n left: 0,\n top: 0,\n right: 'initial',\n bottom: 'initial',\n });\n\n const _fixPossibleViewportOverflow = (\n value: number,\n transformOrigin: Placement,\n requestedReturnValue: Axis,\n elDimensions: Dimensions\n ) => {\n let returnValue = value;\n\n if (\n (transformOrigin[requestedReturnValue] === 'left' && returnValue < 0) ||\n (transformOrigin[requestedReturnValue] === 'top' && returnValue < 0) ||\n (transformOrigin[requestedReturnValue] === 'center' && returnValue < 0) ||\n (transformOrigin[requestedReturnValue] === 'bottom' && returnValue < 0)\n ) {\n returnValue = 0;\n }\n\n if (\n (transformOrigin[requestedReturnValue] === 'left' &&\n returnValue > window.innerWidth - elDimensions.width) ||\n (transformOrigin[requestedReturnValue] === 'center' &&\n requestedReturnValue === 'horizontal' &&\n returnValue > window.innerWidth - elDimensions.width)\n ) {\n returnValue = window.innerWidth - elDimensions.width;\n }\n\n if (\n (transformOrigin[requestedReturnValue] === 'top' &&\n returnValue > window.innerHeight - elDimensions.height) ||\n (transformOrigin[requestedReturnValue] === 'center' &&\n requestedReturnValue === 'vertical' &&\n returnValue > window.innerHeight - elDimensions.height)\n ) {\n returnValue = window.innerHeight - elDimensions.height;\n }\n\n if (\n transformOrigin[requestedReturnValue] === 'right' &&\n returnValue > window.innerWidth - elDimensions.width\n ) {\n returnValue = window.innerWidth - elDimensions.width;\n }\n\n if (\n transformOrigin[requestedReturnValue] === 'bottom' &&\n returnValue > window.innerHeight - elDimensions.height\n ) {\n returnValue = window.innerHeight - elDimensions.height;\n }\n\n return returnValue;\n };\n\n const _applyOffsetToPlacementValue = (\n value: number,\n requestedReturnValue: Axis,\n transformOrigin: Placement\n ) => {\n let returnValue = value;\n if (\n (requestedReturnValue === 'horizontal' && configObject.offset?.left !== 0) ||\n (requestedReturnValue === 'horizontal' && configObject.offset?.right !== 0)\n ) {\n if (\n transformOrigin[requestedReturnValue] === 'left' ||\n transformOrigin[requestedReturnValue] === 'center'\n ) {\n returnValue += configObject.offset?.left!;\n returnValue -= configObject.offset?.right!;\n }\n\n if (transformOrigin[requestedReturnValue] === 'right') {\n returnValue -= configObject.offset?.left!;\n returnValue += configObject.offset?.right!;\n }\n }\n\n if (\n (requestedReturnValue === 'vertical' && configObject.offset?.top !== 0) ||\n (requestedReturnValue === 'vertical' && configObject.offset?.bottom !== 0)\n ) {\n if (\n transformOrigin[requestedReturnValue] === 'top' ||\n transformOrigin[requestedReturnValue] === 'center'\n ) {\n returnValue += configObject.offset?.top!;\n returnValue -= configObject.offset?.bottom!;\n }\n\n if (transformOrigin[requestedReturnValue] === 'bottom') {\n returnValue -= configObject.offset?.top!;\n returnValue += configObject.offset?.bottom!;\n }\n }\n\n return returnValue;\n };\n\n const _calculateInitialPlacementValue = (\n transformOrigin: Placement,\n requestedReturnValue: Axis,\n relEl: DomRectObject,\n placementOriginDefinition: HorizontalPlacment | VerticalPlacement,\n elDimensions: Dimensions\n ) => {\n let value = 0;\n\n if (\n transformOrigin[requestedReturnValue] === 'left' ||\n transformOrigin[requestedReturnValue] === 'top'\n ) {\n value = relEl[placementOriginDefinition];\n } else if (transformOrigin[requestedReturnValue] === 'center') {\n value =\n relEl[placementOriginDefinition] -\n elDimensions[requestedReturnValue === 'horizontal' ? 'width' : 'height'] / 2;\n } else if (\n transformOrigin[requestedReturnValue] === 'right' ||\n transformOrigin[requestedReturnValue] === 'bottom'\n ) {\n value =\n window[requestedReturnValue === 'horizontal' ? 'innerWidth' : 'innerHeight'] -\n relEl[placementOriginDefinition];\n }\n\n return value;\n };\n\n /**\n *\n * @param requestedReturnValue whether the requested return value is for the horizontal or vertical axis\n * @returns either the horizontally centered placement definition (centerh) or the vertically centered one (centerv)\n */\n const _determineCenteredPlacementOrigin = (requestedReturnValue: Axis) => {\n if (requestedReturnValue === 'horizontal') {\n return 'centerh';\n } else if (requestedReturnValue === 'vertical') {\n return 'centerv';\n }\n throw new Error(\n `the requested return value isn\\'t \"vertical\" or \"horizontal\" ${requestedReturnValue} was given.`\n );\n };\n\n const _calculatePlacementValue = (\n transformOrigin: Placement,\n placement: HorizontalPlacment | VerticalPlacement,\n requestedReturnValue: Axis,\n relEl: DomRectObject,\n elDimensions: Dimensions\n ): number => {\n const placementOriginDefinition =\n placement === 'center' ? _determineCenteredPlacementOrigin(requestedReturnValue) : placement;\n\n const value = _calculateInitialPlacementValue(\n transformOrigin,\n requestedReturnValue,\n relEl,\n placementOriginDefinition,\n elDimensions\n );\n\n const valueWithOffset = _applyOffsetToPlacementValue(\n value,\n requestedReturnValue,\n transformOrigin\n );\n\n const valueCorrectionForViewportOverflow = _fixPossibleViewportOverflow(\n valueWithOffset,\n transformOrigin,\n requestedReturnValue,\n elDimensions\n );\n\n return valueCorrectionForViewportOverflow;\n };\n\n const _calculatePlacement = (relEl: DomRectObject, elDimensions: Dimensions, axis: Axis) => {\n const placementValue = _calculatePlacementValue(\n configObject.transformOrigin!,\n configObject.placement![axis]!,\n axis,\n relEl,\n elDimensions\n );\n\n let direction = 'left';\n let oppositeDirection = 'right';\n\n if (axis === 'horizontal' && configObject.transformOrigin?.horizontal === 'right') {\n direction = 'right';\n oppositeDirection = 'left';\n } else if (axis === 'horizontal') {\n direction = 'left';\n oppositeDirection = 'right';\n }\n\n if (axis === 'vertical' && configObject.transformOrigin?.vertical === 'bottom') {\n direction = 'bottom';\n oppositeDirection = 'top';\n } else if (axis === 'vertical') {\n direction = 'top';\n oppositeDirection = 'bottom';\n }\n\n setPosition((prevState) => ({\n ...prevState,\n [direction]: placementValue,\n [oppositeDirection]: 'initial',\n }));\n };\n\n const calculatePosition = () => {\n if (!configObject.relativeElement?.current) return;\n const relativeElRect = (configObject.relativeElement!\n .current as HTMLElement)!.getBoundingClientRect();\n const elementToBePositionedDimensions: Dimensions = {\n height: (configObject.elementToBePositioned!.current as HTMLElement).offsetHeight,\n width: (configObject.elementToBePositioned!.current as HTMLElement).offsetWidth,\n };\n\n /** We want to add a center (horizontal and vertical) property to the DOMRect object. Since it's a special object we can't modify so we clone it and add it. */\n const clonedRelEl = {\n top: relativeElRect.top,\n right: relativeElRect.right,\n bottom: relativeElRect.bottom,\n center: 0,\n centerv: relativeElRect.top + relativeElRect.height / 2,\n centerh: relativeElRect.left + relativeElRect.width / 2,\n left: relativeElRect.left,\n width: relativeElRect.width,\n height: relativeElRect.height,\n x: relativeElRect.x,\n y: relativeElRect.y,\n };\n\n _calculatePlacement(clonedRelEl, elementToBePositionedDimensions, 'horizontal');\n _calculatePlacement(clonedRelEl, elementToBePositionedDimensions, 'vertical');\n };\n\n return {\n top: position.top,\n bottom: position.bottom,\n left: position.left,\n right: position.right,\n calculatePosition,\n };\n};\n","import React, { ComponentPropsWithRef, ReactNode, RefObject, useEffect, useRef } from 'react';\nimport { Offset, Placement, usePosition } from '../hooks/usePosition';\nimport classes from './Popover.module.scss';\n\nexport interface Props extends ComponentPropsWithRef<'div'> {\n children?: ReactNode;\n show?: boolean;\n anchorEl?: RefObject<HTMLOrSVGElement>;\n placement?: Placement;\n offset?: Offset;\n transformOrigin?: Placement;\n}\n\nexport const Popover = React.forwardRef<HTMLDivElement, Props>(\n ({ children, className, show, placement, offset, transformOrigin, anchorEl, ...rest }, ref) => {\n const elToBePositioned = useRef<HTMLDivElement>(null);\n\n if (show === undefined) {\n throw new Error('Please make sure to define the \"show\" property on your Popover component');\n }\n\n const { top, left, right, bottom, calculatePosition } = usePosition({\n elementToBePositioned: elToBePositioned,\n relativeElement: anchorEl,\n offset: offset,\n placement: placement,\n transformOrigin: transformOrigin,\n });\n\n useEffect(() => {\n calculatePosition();\n }, [show]);\n\n return (\n <div ref={ref} {...rest}>\n <div\n ref={elToBePositioned}\n className={`${classes.popover} ${className ?? ''} ${show ? classes.show : ''}`}\n style={{ top: top, left: left, right: right, bottom: bottom }}\n >\n {children}\n </div>\n </div>\n );\n }\n);\n","import { useEffect } from 'react';\n\nexport const useBodyClick = (\n checkFunction: (event: MouseEvent) => boolean,\n callbackFunction: (...args: unknown[]) => unknown,\n dependingStateVariable: React.ComponentState | React.ComponentState[]\n) => {\n function bodyClickListener(event: MouseEvent) {\n if (checkFunction(event)) {\n callbackFunction();\n }\n }\n useEffect(() => {\n window.addEventListener('click', bodyClickListener);\n\n return () => {\n window.removeEventListener('click', bodyClickListener);\n };\n }, [dependingStateVariable]);\n};\n","import React, {\n ComponentPropsWithRef,\n ReactElement,\n ReactNode,\n useEffect,\n useRef,\n useState,\n} from 'react';\nimport { Props as ButtonProps } from '../Button/Button';\nimport { Props as IconButtonProps } from '../Button/IconButton';\nimport { Popover } from '../Popover/Popover';\nimport { Placement, Offset } from '../hooks/usePosition';\nimport classes from './ContextMenu.module.scss';\nimport { useBodyClick } from '../hooks/useBodyClick';\nimport { createPortal } from 'react-dom';\n\nexport interface Props extends ComponentPropsWithRef<'div'> {\n trigger: ReactElement<ButtonProps> | ReactElement<IconButtonProps>;\n children: ReactNode;\n placement?: Placement;\n transformOrigin?: Placement;\n offset?: Offset;\n id: string;\n show?: boolean;\n domRoot?: HTMLElement;\n onShow?: () => void;\n onClose?: () => void;\n}\n\nexport const ContextMenu = React.forwardRef<HTMLDivElement, Props>(\n (\n {\n trigger,\n children,\n id,\n show = false,\n onShow,\n onClose,\n placement = { horizontal: 'right', vertical: 'top' },\n offset = { top: 0, bottom: 0, left: 0, right: 0 },\n transformOrigin = { horizontal: 'left', vertical: 'top' },\n domRoot = document.body,\n ...rest\n }: Props,\n ref\n ) => {\n const anchorEl = useRef<HTMLButtonElement>(null);\n const [showContextMenu, setShowContextMenu] = useState(show);\n const [selectedContextMenuItem, setSelectedContextMenuItem] = useState(-1);\n const [focusedContextMenuItem, setFocusedContextMenuItem] = useState(-1);\n const [shouldClick, setShouldClick] =\n useState(\n false\n ); /** We need this, because whenever we use the arrow keys to select the contextmenu item, and we focus the currently selected item it fires the \"click\" listener in ContextMenuItem component. Instead, we only want this to fire if we press \"enter\" or \"spacebar\" so we set this to true whenever that is the case, and back to false when it has been executed. */\n const [childrenCount] = useState(React.Children.count(children));\n\n if (!id) {\n throw new Error('You need to provide an ID to the context menu');\n }\n\n const onArrowNavigation = (event: React.KeyboardEvent) => {\n if (focusedContextMenuItem === -1 && selectedContextMenuItem !== -1) {\n setFocusedContextMenuItem(selectedContextMenuItem);\n }\n\n const codesToPrevenDefault = [\n 'ArrowDown',\n 'ArrowUp',\n 'ArrowLeft',\n 'ArrowRight',\n 'Enter',\n 'Space',\n 'Escape',\n 'End',\n 'Home',\n ];\n\n if (codesToPrevenDefault.includes(event.code)) {\n event.preventDefault();\n }\n\n switch (event.code) {\n case 'ArrowDown':\n if (!showContextMenu) {\n setShowContextMenu(true);\n return;\n }\n setFocusedContextMenuItem((prevState) => {\n return prevState + 1 > childrenCount - 1 ? 0 : prevState + 1;\n });\n return;\n case 'ArrowUp':\n setFocusedContextMenuItem((prevState) => {\n return prevState - 1 < 0 ? childrenCount - 1 : prevState - 1;\n });\n return;\n case 'Enter':\n case 'Space':\n if (!showContextMenu) {\n setShowContextMenu(true);\n return;\n }\n\n setShouldClick(true);\n setSelectedContextMenuItem(focusedContextMenuItem);\n setShowContextMenu(false);\n return;\n case 'Tab':\n case 'Escape':\n setShowContextMenu(false);\n return;\n case 'End':\n setFocusedContextMenuItem(childrenCount - 1);\n return;\n case 'Home':\n setFocusedContextMenuItem(0);\n return;\n }\n };\n\n useBodyClick(\n (event) => {\n return showContextMenu && anchorEl.current !== event.target;\n },\n () => {\n setShowContextMenu(false);\n },\n showContextMenu\n );\n\n useEffect(() => {\n if (showContextMenu === true) {\n onShow && onShow();\n } else {\n onClose && onClose();\n setFocusedContextMenuItem(-1);\n anchorEl.current && anchorEl.current.focus();\n }\n }, [showContextMenu]);\n\n const renderTrigger = () =>\n React.cloneElement(trigger, {\n id: id,\n 'aria-haspopup': 'true',\n 'aria-controls': `${id}-menu`,\n 'aria-expanded': showContextMenu,\n onClick: () => setShowContextMenu(!showContextMenu),\n tabIndex: 0,\n ref: anchorEl,\n });\n\n const renderChildren = () => {\n return React.Children.map(children, (child, index) => {\n return React.cloneElement(child as ReactElement, {\n onFocusChange: (childIndex: number) => setFocusedContextMenuItem(childIndex),\n onSelectedChange: (childIndex: number) => {\n setSelectedContextMenuItem(childIndex);\n setShouldClick(false);\n },\n childIndex: index,\n hasFocus: focusedContextMenuItem === index,\n isSelected: selectedContextMenuItem === index,\n contextMenuOpened: showContextMenu,\n shouldClick: shouldClick,\n });\n });\n };\n\n return (\n <div {...rest} ref={ref} onKeyDown={onArrowNavigation} className={classes['context-menu']}>\n {renderTrigger()}\n {createPortal(\n <Popover\n placement={placement}\n transformOrigin={transformOrigin}\n offset={offset}\n anchorEl={anchorEl}\n show={showContextMenu}\n >\n <ul className={classes['menu']} id={`${id}-menu`} aria-describedby={id} role=\"menu\">\n {renderChildren()}\n </ul>\n </Popover>,\n domRoot\n )}\n </div>\n );\n }\n);\n","import React, { ComponentPropsWithRef, createRef, RefObject, useEffect } from 'react';\nimport classes from './ContextMenuItem.module.scss';\n\nexport interface Props extends Omit<ComponentPropsWithRef<'button'>, 'onClick'> {\n children?: string;\n hasFocus?: boolean;\n isSelected?: boolean;\n childIndex?: number;\n shouldClick?: boolean;\n contextMenuOpened?: boolean;\n onClick?: (event: React.MouseEvent<HTMLButtonElement>) => void;\n onFocusChange?: (childIndex: number) => void;\n onSelectedChange?: (childIndex: number) => void;\n}\n\nexport const ContextMenuItem = React.forwardRef<HTMLButtonElement, Props>(\n (\n {\n children,\n onClick,\n onFocusChange,\n onSelectedChange,\n hasFocus,\n isSelected,\n childIndex,\n contextMenuOpened,\n shouldClick,\n ...rest\n }: Props,\n ref\n ) => {\n let innerButtonRef = (ref as RefObject<HTMLButtonElement>) || createRef<HTMLButtonElement>();\n\n useEffect(() => {\n if (isSelected && innerButtonRef.current && shouldClick) {\n innerButtonRef.current.click();\n }\n }, [isSelected, shouldClick]);\n\n useEffect(() => {\n if (innerButtonRef.current && hasFocus && contextMenuOpened) {\n onFocusChange && childIndex && onFocusChange(childIndex);\n innerButtonRef.current.focus();\n }\n }, [hasFocus, innerButtonRef, contextMenuOpened]);\n\n return (\n <li role=\"menuitem\" className={classes['context-menu-item']}>\n <button\n {...rest}\n ref={innerButtonRef}\n data-focus={hasFocus}\n onClick={(event) => {\n onClick && onClick(event);\n onSelectedChange && childIndex && onSelectedChange(childIndex);\n }}\n >\n {children}\n </button>\n </li>\n );\n }\n);\n","import React, {\n ComponentPropsWithRef,\n ForwardRefExoticComponent,\n ReactNode,\n RefAttributes,\n} from 'react';\nimport classes from './Link.module.scss';\nimport { LinkProps } from './types';\n\nexport type AnchorType = 'external' | 'internal' | 'download';\n\nexport interface Props extends ComponentPropsWithRef<'a'> {\n children?: ReactNode;\n color?: 'primary' | 'secondary' | 'tertiary';\n display?: 'link' | 'button';\n buttonVariant?: 'outline' | 'text' | 'fill';\n type?: AnchorType;\n to: string;\n disabled?: boolean;\n component?: ForwardRefExoticComponent<LinkProps & RefAttributes<HTMLAnchorElement>>;\n}\n\nexport const Link = React.forwardRef<HTMLAnchorElement, Props>(\n (\n {\n children,\n className,\n disabled = false,\n to,\n color = 'primary',\n type = 'internal',\n display = 'link',\n buttonVariant = 'fill',\n component,\n ...rest\n }: Props,\n ref\n ) => {\n const determineTarget = () => {\n if (rest.target) {\n return rest.target;\n }\n\n if (type === 'external') {\n return '_blank';\n }\n\n return '';\n };\n\n const classNames = [classes[color]];\n display === 'link' && classNames.push(classes['link']);\n display === 'button' && classNames.push(classes['button'], classes[buttonVariant]);\n disabled && classNames.push(classes['disabled']);\n className && classNames.push(className);\n\n if (component) {\n return React.createElement(component, {\n ...rest,\n ref: ref,\n to: to,\n className: classNames.join(' '),\n 'aria-disabled': disabled,\n style: {\n ...rest.style,\n },\n children: children,\n });\n }\n\n return (\n <a\n {...rest}\n ref={ref}\n download={type === 'download'}\n rel={type === 'external' ? 'noopener noreferer' : undefined}\n href={!disabled ? to : undefined}\n className={classNames.join(' ')}\n aria-disabled={disabled}\n target={determineTarget()}\n style={{\n ...rest.style,\n }}\n >\n {children}\n </a>\n );\n }\n);\n","import React, { Fragment } from 'react';\nimport { BaseButton, Props as BaseButtonProps } from './BaseButton';\nimport classes from './IconButton.module.scss';\nimport readyclasses from '../readyclasses.module.scss';\n\nexport interface Props extends BaseButtonProps {\n children?: React.ReactNode;\n iconSize?: 's' | 'm' | 'l';\n variant?: 'text' | 'fill' | 'outline';\n className?: string;\n title?: string;\n}\n\nexport const IconButton = React.forwardRef<HTMLButtonElement, Props>(\n (\n { children, color = 'primary', variant = 'text', iconSize = 'm', title, className, ...rest },\n ref\n ) => {\n if (!title) {\n console.error(\"Please make sure to specify a 'title' prop to your IconButton component! \");\n }\n\n const iconButtonClasses = [\n classes['icon-button'],\n classes[variant],\n classes[color],\n classes['button-' + iconSize],\n ];\n\n if (className) {\n iconButtonClasses.push(className);\n }\n\n return (\n <BaseButton {...rest} ref={ref} className={iconButtonClasses.join(' ')}>\n <Fragment>\n {children}\n <span className={readyclasses['sr-only']}>{title}</span>\n </Fragment>\n </BaseButton>\n );\n }\n);\n","type KeyValuePair = { [key: string]: unknown };\n\nexport const generateID = (length = 15, stringToWeaveIn?: string) => {\n /** We will make sure to mesh the generate id and name property together to basically create a unique ID */\n let hashCharacters = [\n '1',\n '2',\n '3',\n '4',\n '5',\n '6',\n '7',\n '8',\n '9',\n '0',\n 'A',\n 'B',\n 'C',\n 'D',\n 'E',\n 'F',\n 'G',\n 'H',\n 'I',\n 'J',\n 'K',\n 'L',\n 'M',\n 'N',\n 'O',\n 'P',\n 'Q',\n 'R',\n 'S',\n 'T',\n 'U',\n 'V',\n 'W',\n 'X',\n 'Y',\n 'Z',\n 'a',\n 'b',\n 'c',\n 'd',\n 'e',\n 'f',\n 'g',\n 'h',\n 'i',\n 'j',\n 'k',\n 'l',\n 'm',\n 'n',\n 'o',\n 'p',\n 'q',\n 'r',\n 's',\n 't',\n 'u',\n 'v',\n 'w',\n 'x',\n 'y',\n 'z',\n ];\n\n let id = '';\n\n /** Generate an id of x characters in length */\n for (let i = 0; i < length && id.length < length; i++) {\n let stringCharacter =\n stringToWeaveIn && stringToWeaveIn[i] !== undefined && !/\\s/.test(stringToWeaveIn[i])\n ? stringToWeaveIn[i]\n : '';\n id = id + stringCharacter + hashCharacters[Math.floor(Math.random() * hashCharacters.length)];\n }\n\n return id.slice(0, length);\n};\n\nexport const filterProps = (props: any, regexPattern: RegExp, returnFiltered: boolean = true) => {\n if (returnFiltered) {\n return Object.keys(props).reduce((acc: KeyValuePair, key) => {\n if (regexPattern.test(key)) {\n acc[key] = props[key];\n }\n\n return acc;\n }, {});\n } else {\n return Object.entries(props)\n .filter(([key]) => !regexPattern.test(key))\n .reduce(\n (prevObj, currKeyValPair) => ({ ...prevObj, [currKeyValPair[0]]: currKeyValPair[1] }),\n {}\n );\n }\n};\n","import React, { ComponentPropsWithRef, useEffect } from 'react';\nimport classes from './TabButton.module.scss';\n\nexport interface Props extends ComponentPropsWithRef<'button'> {\n children?: string;\n selected?: boolean;\n focussed?: boolean;\n tabId?: string;\n tabPanelId?: string;\n onTabButtonClick?: () => void;\n}\n\nexport const TabButton = React.forwardRef<HTMLButtonElement, Props>(\n (\n {\n children,\n selected = false,\n focussed = false,\n tabId,\n tabPanelId,\n className,\n onTabButtonClick,\n ...rest\n }: Props,\n ref\n ) => {\n useEffect(() => {\n if (focussed && ref) {\n (ref as React.MutableRefObject<HTMLButtonElement>).current.focus();\n }\n }, [focussed]);\n\n const classNames = [classes['tabbutton']];\n\n selected && classNames.push(classes['selected']);\n focussed && !selected && classNames.push(classes['focussed']);\n className && classNames.push(className);\n\n return (\n <button\n {...rest}\n aria-selected={selected}\n key={tabId}\n className={classNames.join(' ')}\n ref={ref}\n role=\"tab\"\n tabIndex={selected ? 0 : -1}\n type=\"button\"\n aria-controls={tabPanelId}\n id={tabId}\n onClick={onTabButtonClick}\n >\n <span aria-hidden=\"true\">{children}</span>\n {children}\n </button>\n );\n }\n);\n","import React, { ComponentPropsWithRef } from 'react';\nimport classes from './TabPanel.module.scss';\n\nexport interface Props extends ComponentPropsWithRef<'div'> {\n children: React.ReactNode;\n tabId: string;\n tabPanelId: string;\n selected?: boolean;\n}\n\nexport const TabPanel = React.forwardRef<HTMLDivElement, Props>(\n ({ children, tabId, tabPanelId, selected = false, className, ...rest }: Props, ref) => (\n <div\n {...rest}\n ref={ref}\n aria-labelledby={tabId}\n className={`${classes['tabpanel']} ${selected ? classes['selected'] : ''} ${className ?? ''}`}\n id={tabPanelId}\n role=\"tabpanel\"\n tabIndex={0}\n hidden={!selected || undefined}\n aria-hidden={!selected}\n >\n {children}\n </div>\n )\n);\n","import React, { useRef, MouseEventHandler, useState, ComponentPropsWithRef } from 'react';\nimport { Popover } from '../Popover/Popover';\nimport classes from './TextEllipsis.module.scss';\n\nexport interface Props extends ComponentPropsWithRef<'div'> {\n children?: string;\n popoverClassName?: string;\n}\n\nexport const TextEllipsis = React.forwardRef<HTMLDivElement, Props>(\n ({ children, popoverClassName, className, ...rest }: Props, ref) => {\n const [showPopover, setShowPopover] = useState(false);\n const textContainer = useRef<HTMLDivElement>(null);\n\n const ellipsisVisible = () => {\n if (\n textContainer.current &&\n textContainer.current.offsetWidth < textContainer.current.scrollWidth\n ) {\n return true;\n }\n return false;\n };\n\n const onMouseEnter: MouseEventHandler<HTMLDivElement> = () => {\n ellipsisVisible() && setShowPopover(true);\n };\n\n const onMouseLeave: MouseEventHandler<HTMLDivElement> = () => {\n ellipsisVisible() && setShowPopover(false);\n };\n\n return (\n <div\n {...rest}\n onMouseEnter={onMouseEnter}\n onMouseLeave={onMouseLeave}\n className={`${classes['text-ellipsis']} ${className ?? ''}`}\n ref={ref || textContainer}\n >\n {children}\n <Popover\n aria-hidden={true}\n data-hidden={!showPopover}\n show={showPopover}\n role=\"tooltip\"\n anchorEl={textContainer}\n className={`${classes.popover} ${popoverClassName ?? ''}`}\n >\n {children}\n </Popover>\n </div>\n );\n }\n);\n","import React, {\n ComponentPropsWithoutRef,\n ComponentPropsWithRef,\n ReactElement,\n useState,\n} from 'react';\nimport { Icon, Icons } from '../Icon/Icon';\nimport classes from './Tile.module.scss';\nimport readyClasses from '../readyclasses.module.scss';\n\nimport { Props as ContextMenuProps } from '../ContextMenu/ContextMenu';\nimport { generateID } from '../util/helper';\nimport { Props as IconButtonProps } from '../Button/IconButton';\n\ninterface ImageProps extends ComponentPropsWithoutRef<'img'> {\n src: string;\n}\n\nexport interface Props extends ComponentPropsWithRef<'div'> {\n title: string;\n imageProps?: ImageProps;\n enabled?: boolean;\n loading?: boolean;\n tileAction?: ReactElement<ContextMenuProps> | ReactElement<IconButtonProps>;\n}\n\nexport const Tile = React.forwardRef<HTMLDivElement, Props>(\n ({ title, imageProps, enabled, className, loading, tileAction, ...rest }: Props, ref) => {\n const [tileDescriptionID] = useState(generateID(20));\n\n if (!title) {\n throw new Error('Please make sure to pass a title prop to your Tile component.');\n }\n\n const statusMessage = () => {\n if (enabled) {\n return 'Status: enabled';\n }\n\n return 'Status: disabled';\n };\n\n return (\n <article\n {...rest}\n tabIndex={0}\n aria-labelledby={tileDescriptionID}\n ref={ref}\n className={`${classes['tile']} ${loading ? classes['loading'] : ''}`}\n >\n <header style={{ justifyContent: enabled === undefined ? 'flex-end' : 'space-between' }}>\n {enabled === true && (\n <Icon\n color=\"var(--success)\"\n icon={Icons.Checkmark}\n className={`${classes['icon']} ${className ?? ''}`}\n />\n )}\n {enabled === false && (\n <Icon\n color=\"var(--greyed-out)\"\n icon={Icons.Forbidden}\n className={`${classes['icon']} ${className ?? ''}`}\n />\n )}\n {enabled !== undefined && (\n <span id={tileDescriptionID} className={readyClasses['sr-only']}>\n {`${title}. ${statusMessage()}`}\n </span>\n )}\n {tileAction ?? null}\n </header>\n <div className={classes['content']}>\n {imageProps && imageProps.src.length > 0 && (\n <figure className={classes['image']}>\n {!loading && <img {...imageProps} alt=\"\" />}\n </figure>\n )}\n {(!imageProps || imageProps.src.length === 0) && (\n <Icon className={classes['placeholder']} icon={Icons.Image} />\n )}\n <span className={classes['title']}>{title}</span>\n </div>\n </article>\n );\n }\n);\n","import React, { ComponentPropsWithRef, ReactNode } from 'react';\nimport classes from './Tiles.module.scss';\nimport { Tile } from './Tile';\n\nexport interface Props extends ComponentPropsWithRef<'div'> {\n children: ReactNode;\n loading?: boolean;\n}\n\nexport const Tiles = React.forwardRef<HTMLDivElement, Props>(\n ({ children, className, loading = false, ...rest }: Props, ref) => {\n const renderChildren = () => {\n if (loading) {\n return [\n <Tile\n key=\"placeholder1\"\n title=\"placeholder\"\n imageProps={{ src: 'placeholder' }}\n loading={true}\n />,\n <Tile\n key=\"placeholder2\"\n title=\"placeholder\"\n imageProps={{ src: 'placeholder' }}\n loading={true}\n />,\n <Tile\n key=\"placeholder3\"\n title=\"placeholder\"\n imageProps={{ src: 'placeholder' }}\n loading={true}\n />,\n ];\n }\n\n return children;\n };\n\n return (\n <div\n {...rest}\n ref={ref}\n className={`${classes['tiles']} ${className ?? ''}`}\n aria-live=\"polite\"\n aria-busy={loading}\n >\n {renderChildren()}\n </div>\n );\n }\n);\n","import React, {\n ComponentPropsWithRef,\n ReactNode,\n useEffect,\n useLayoutEffect,\n useRef,\n useState,\n} from 'react';\nimport { Icon, Icons } from '../Icon/Icon';\nimport classes from './Tooltip.module.scss';\nimport { generateID } from '../util/helper';\nimport { Offset, Placement, usePosition } from '../hooks/usePosition';\nimport { createPortal } from 'react-dom';\n\nexport interface Props extends ComponentPropsWithRef<'div'> {\n label: string | ReactNode;\n children: string;\n placement?: Placement;\n offset?: Offset;\n transformOrigin?: Placement;\n domRoot?: HTMLElement;\n}\n\ninterface DefaultPosition {\n placement: Placement;\n offset: Offset;\n transformOrigin: Placement;\n}\n\nconst defaultPosition: DefaultPosition = {\n placement: { horizontal: 'right', vertical: 'center' },\n offset: { left: 16, right: 0, top: 0, bottom: 0 },\n transformOrigin: { horizontal: 'left', vertical: 'center' },\n};\n\nexport const Tooltip = React.forwardRef<HTMLDivElement, Props>(\n (\n {\n children,\n className,\n placement = defaultPosition.placement,\n offset = defaultPosition.offset,\n transformOrigin = defaultPosition.transformOrigin,\n domRoot = document.body,\n label,\n ...rest\n }: Props,\n ref\n ) => {\n const [identifier] = useState(generateID());\n const [visible, setVisible] = useState(false);\n\n const relativeElement = useRef<HTMLDivElement>(null);\n const elementToBePositioned = useRef<HTMLDivElement>(null);\n\n const { top, bottom, right, left, calculatePosition } = usePosition({\n relativeElement: relativeElement,\n elementToBePositioned: elementToBePositioned,\n placement: placement,\n offset: offset,\n transformOrigin: transformOrigin,\n });\n\n useEffect(() => {\n if (!visible) return;\n\n function escapePressHandler(event: KeyboardEvent) {\n if (event.key === 'Escape') {\n setVisible(false);\n }\n }\n\n document.addEventListener('keyup', escapePressHandler);\n\n return () => {\n document.removeEventListener('keyup', escapePressHandler);\n };\n }, [visible]);\n\n useLayoutEffect(() => {\n calculatePosition();\n }, [visible]);\n\n const renderChildren = () => {\n if (React.isValidElement(label)) {\n return React.cloneElement(label, {\n onFocus: () => setVisible(true),\n onBlur: () => setVisible(false),\n 'aria-describedby': identifier,\n tabIndex: 0,\n className: classes['label'],\n });\n }\n\n return (\n <span\n className={classes['label']}\n tabIndex={0}\n onFocus={() => setVisible(true)}\n onBlur={() => setVisible(false)}\n aria-describedby={identifier}\n >\n {label}\n </span>\n );\n };\n\n return (\n <div {...rest} ref={ref} className={`${classes.wrapper} ${className ?? ''}`}>\n {renderChildren()}\n <div className={`${classes['tooltip-wrapper']}`}>\n <Icon\n ref={relativeElement}\n tag=\"div\"\n onMouseEnter={() => setVisible(true)}\n onMouseLeave={() => setVisible(false)}\n icon={Icons.InfoCircle}\n className={classes.icon}\n />\n {createPortal(\n <div\n ref={elementToBePositioned}\n style={{\n ...rest.style,\n top: top,\n left: left,\n right: right,\n bottom: bottom,\n }}\n aria-hidden={!visible}\n id={identifier}\n className={`${classes.tooltip} ${visible ? classes.visible : ''}`}\n >\n {children}\n </div>,\n domRoot\n )}\n </div>\n </div>\n );\n }\n);\n","import React, { ComponentPropsWithRef } from 'react';\nimport classes from './Skeleton.module.scss';\n\nexport interface Props extends Omit<ComponentPropsWithRef<'div'>, 'children'> {\n variant?: 'circular' | 'rectangle' | 'text';\n height?: number | string;\n width?: number | string;\n}\n\nexport const Skeleton = React.forwardRef<HTMLDivElement, Props>(\n ({ variant = 'text', height, width, className, style, ...rest }: Props, ref) => {\n const classNames = [classes['skeleton']];\n !height && classNames.push(classes['no-height']);\n variant === 'text' && classNames.push(classes['text']);\n variant === 'circular' && classNames.push(classes['circular']);\n className && classNames.push(className);\n\n return (\n <span\n {...rest}\n aria-busy=\"true\"\n aria-hidden=\"true\"\n ref={ref}\n style={{ ...style, width, height }}\n className={classNames.join(' ')}\n ></span>\n );\n }\n);\n","import React, { ComponentPropsWithRef, ReactNode } from 'react';\nimport { Typography, Props as TypographyProps } from '../Typography/Typography';\nimport classes from './StatusIndicator.module.scss';\n\nexport interface Props extends ComponentPropsWithRef<'div'> {\n children?: ReactNode;\n status: 'active' | 'error' | 'neutral' | 'warning';\n badgeProps?: ComponentPropsWithRef<'div'>;\n typographyProps?: TypographyProps;\n}\n\nexport const StatusIndicator = React.forwardRef<HTMLDivElement, Props>(\n ({ children, status, badgeProps, typographyProps, ...rest }: Props, ref) => {\n return (\n <div {...rest} className={classes['status-indicator']} ref={ref}>\n <div\n className={`${classes['status-badge']} ${classes[status]} ${badgeProps?.className ?? ''}`}\n />\n <Typography {...typographyProps} spacing={{ margin: '0' }} variant=\"body\" tag=\"div\">\n {typographyProps?.children || children}\n </Typography>\n </div>\n );\n }\n);\n","import React, { ComponentPropsWithRef, Ref, useEffect, useState } from 'react';\nimport classes from './Input.module.scss';\nimport readyclasses from '../../readyclasses.module.scss';\nimport { Icon, Icons } from '../../Icon/Icon';\nimport { FormElement } from '../form.interfaces';\n\nconst dateTypes = ['date', 'time', 'datetime-local'] as const;\n\nexport type Type =\n | 'text'\n | 'email'\n | 'file'\n | 'number'\n | 'password'\n | 'search'\n | 'tel'\n | 'url'\n | 'hidden'\n | typeof dateTypes[number];\n\nexport interface Props extends ComponentPropsWithRef<'input'>, FormElement {\n wrapperProps?: ComponentPropsWithRef<'div'>;\n labeledBy?: string;\n type: Type;\n suffix?: string;\n prefix?: string;\n}\n\nexport const Input = React.forwardRef(\n (\n {\n error = false,\n className,\n name,\n style,\n wrapperProps,\n type,\n labeledBy,\n prefix,\n suffix,\n disabled,\n onFocus,\n onBlur,\n ...rest\n }: Props,\n ref: Ref<HTMLInputElement>\n ) => {\n const [focus, setFocus] = useState(false);\n\n useEffect(() => {\n if (name === undefined) {\n throw new Error(\"Please give your <Input /> component a 'name' attribute\");\n }\n }, []);\n\n const inputClassNames = [classes['input']];\n\n (dateTypes as ReadonlyArray<string>).includes(type) &&\n inputClassNames.push(classes['remove-extra-indent']);\n className && inputClassNames.push(className);\n\n const iconClassNames = [classes['warning']];\n (dateTypes as ReadonlyArray<string>).includes(type) &&\n iconClassNames.push(classes['extra-indent']);\n\n const wrapperClasses = [classes['input-wrapper']];\n\n wrapperProps?.className && wrapperClasses.push(wrapperProps.className);\n type === 'hidden' && wrapperClasses.push(readyclasses['hidden']);\n prefix && wrapperClasses.push(classes['prefix']);\n suffix && wrapperClasses.push(classes['suffix']);\n disabled && wrapperClasses.push(classes['disabled']);\n error && wrapperClasses.push(classes['error']);\n focus && wrapperClasses.push(classes['focus']);\n\n return (\n <div\n {...wrapperProps}\n style={{ ...style }}\n className={`${classes['input-wrapper']} ${wrapperClasses.join(' ')}`}\n >\n {prefix && (\n <div data-prefix className={classes['prefix']}>\n <span>{prefix}</span>\n </div>\n )}\n <input\n {...rest}\n ref={ref}\n onFocus={(event) => {\n setFocus(true);\n onFocus && onFocus(event);\n }}\n onBlur={(event) => {\n setFocus(false);\n onBlur && onBlur(event);\n }}\n aria-labelledby={labeledBy}\n type={type}\n name={name}\n disabled={disabled}\n className={inputClassNames.join(' ')}\n />\n {suffix && (\n <div data-suffix className={classes['suffix']}>\n <span>{suffix}</span>\n </div>\n )}\n {error && <Icon className={iconClassNames.join(' ')} icon={Icons.Error} />}\n </div>\n );\n }\n);\n","import classes from './Select.module.scss';\n\nimport React, {\n ComponentPropsWithRef,\n createRef,\n Fragment,\n ReactElement,\n useEffect,\n useRef,\n useState,\n} from 'react';\nimport { Input, Props as InputProps } from '../Input/Input';\nimport { Icon, Icons } from '../../Icon/Icon';\nimport { FormElement } from '../form.interfaces';\nimport { useBodyClick } from '../../hooks/useBodyClick';\nimport readyclasses from '../../readyclasses.module.scss';\nimport { filterProps } from '../../util/helper';\n\ntype PartialInputProps = Partial<InputProps>;\n\nexport interface Props extends ComponentPropsWithRef<'select'>, FormElement {\n children: ReactElement[];\n name?: string;\n labeledBy?: string;\n describedBy?: string;\n placeholder?: string;\n searchPlaceholder?: string;\n searchInputProps?: PartialInputProps;\n selectButtonProps?: ComponentPropsWithRef<'button'>;\n className?: string;\n value: string;\n clearLabel?: string;\n onChange?: (event: React.ChangeEvent<HTMLSelectElement>, child?: ReactElement) => void;\n onClear?: (event: React.MouseEvent<HTMLDivElement> | React.KeyboardEvent<HTMLDivElement>) => void;\n}\n\ntype Position = {\n top: 0 | 'initial';\n bottom: 0 | 'initial';\n};\n\n/** Amount of items to be rendered before a search input is rendered */\nconst renderSearchCondition = 10;\n\nexport const Select = React.forwardRef<HTMLSelectElement, Props>(\n (\n {\n children,\n name,\n disabled = false,\n labeledBy,\n placeholder,\n describedBy,\n searchPlaceholder = 'Search item',\n searchInputProps,\n selectButtonProps,\n className,\n error = false,\n value,\n clearLabel = 'Clear selection',\n onChange,\n onClear,\n ...rest\n }: Props,\n ref\n ) => {\n const [expanded, setExpanded] = useState(false);\n const [opacity, setOpacity] = useState(0); // We set opacity because other wise if we calculate the max height you see the list full height for a split second and then it shortens.\n const [filter, setFilter] = useState('');\n const [display, setDisplay] = useState('');\n const [listPosition, setListPosition] = useState<Partial<Position>>({});\n const [optionsListMaxHeight, setOptionsListMaxHeight] = useState('none');\n const containerReference = useRef<HTMLDivElement>(null);\n const optionListReference = useRef<HTMLDivElement>(null);\n const [isSearching, setIsSearching] = useState(false);\n const [focusedSelectItem, setFocusedSelectItem] = useState(-1);\n const [shouldClick, setShouldClick] =\n useState(\n false\n ); /** We need this, because whenever we use the arrow keys to select the select item, and we focus the currently selected item it fires the \"click\" listener in Option component. Instead, we only want this to fire if we press \"enter\" or \"spacebar\" so we set this to true whenever that is the case, and back to false when it has been executed. */\n const [childrenCount] = useState(React.Children.count(children));\n\n const nativeSelect = (ref as React.RefObject<HTMLSelectElement>) || createRef();\n const searchInputRef = useRef<HTMLInputElement>(null);\n\n const onArrowNavigation = (event: React.KeyboardEvent) => {\n const codesToPreventDefault = [\n 'ArrowDown',\n 'ArrowUp',\n 'ArrowLeft',\n 'ArrowRight',\n 'Space',\n 'Escape',\n 'End',\n 'Home',\n ];\n\n const codesToPreventDefaultWhenSearching = ['ArrowDown', 'ArrowUp', 'Enter', 'Escape'];\n\n /** If the select is expanded, we also want to control the Tab key */\n if (expanded) {\n codesToPreventDefault.push('Tab');\n }\n\n /** We will handle the way certain key strokes affect the Select, unless we're searching */\n if (codesToPreventDefault.includes(event.code) && !isSearching) {\n event.preventDefault();\n }\n\n if (isSearching && codesToPreventDefaultWhenSearching.includes(event.code)) {\n event.preventDefault();\n }\n\n if (isSearching) {\n switch (event.code) {\n case 'ArrowDown':\n case 'Enter':\n setIsSearching(false);\n setFocusedSelectItem(0);\n return;\n case 'ArrowUp':\n setIsSearching(false);\n setFocusedSelectItem(childrenCount - 1);\n return;\n case 'Escape':\n case 'Tab':\n setIsSearching(false);\n setExpanded(false);\n containerReference.current &&\n containerReference.current.querySelector('button')!.focus();\n }\n } else {\n switch (event.code) {\n case 'ArrowDown':\n if (!expanded) {\n setExpanded(true);\n return;\n }\n setFocusedSelectItem((prevState) => {\n return prevState + 1 > childrenCount - 1 ? 0 : prevState + 1;\n });\n return;\n case 'ArrowUp':\n setFocusedSelectItem((prevState) => {\n return prevState - 1 < 0 ? childrenCount - 1 : prevState - 1;\n });\n return;\n case 'Space':\n if (!expanded) {\n setExpanded(true);\n return;\n }\n\n setShouldClick(true);\n setExpanded(false);\n containerReference.current &&\n containerReference.current.querySelector('button')!.focus();\n return;\n case 'Tab':\n if (childrenCount >= renderSearchCondition && expanded) {\n setIsSearching(true);\n searchInputRef.current && searchInputRef.current.focus();\n return;\n }\n setExpanded(false);\n\n return;\n case 'Escape':\n if (expanded) {\n setExpanded(false);\n containerReference.current &&\n containerReference.current.querySelector('button')!.focus();\n }\n return;\n case 'End':\n setFocusedSelectItem(childrenCount - 1);\n return;\n case 'Home':\n setFocusedSelectItem(0);\n return;\n }\n }\n };\n\n const syncDisplayValue = (val: string) => {\n React.Children.forEach(children, (child) => {\n if (child.props.value === val) {\n setDisplay(child.props.children);\n }\n });\n };\n\n const rePositionList = () => {\n if (!expanded || !optionListReference.current || !containerReference.current) {\n return;\n }\n\n // Check whether there is more space above or below the select\n // Check space between the bottom of select and top of viewport\n const spaceOnTopOfSelect = containerReference.current.getBoundingClientRect().bottom;\n\n // Check space between the top of the select and bottom of viewport\n const spaceOnBottomOfSelect =\n window.innerHeight - containerReference.current.getBoundingClientRect().top;\n\n // Set position as if there's more space on the bottom\n let position: Position = { top: 0, bottom: 'initial' };\n\n // Set the position of the select\n if (spaceOnTopOfSelect > spaceOnBottomOfSelect) {\n position = { top: 'initial', bottom: 0 };\n }\n\n setListPosition(position);\n\n // Calculate the potential max height of the options list\n calculateOptionListMaxHeight(position);\n };\n\n const calculateOptionListMaxHeight = (position: Position) => {\n // Calculate max height if there's more space below the select\n const listHeight = optionListReference.current!.getBoundingClientRect().height;\n const transformOrigin = position.top !== 'initial' ? 'top' : 'bottom';\n\n const availableSpace =\n transformOrigin === 'top'\n ? window.innerHeight -\n containerReference.current!.getBoundingClientRect()[transformOrigin] -\n 16\n : containerReference.current!.getBoundingClientRect()[transformOrigin] - 16;\n\n if (availableSpace < listHeight) {\n setOptionsListMaxHeight(`${availableSpace}px`);\n setOpacity(100);\n return;\n }\n\n setOptionsListMaxHeight('none');\n setOpacity(100);\n };\n\n const onOptionChangeHandler = (optionRef: React.RefObject<HTMLLIElement>) => {\n if (nativeSelect.current && optionRef.current) {\n nativeSelect.current.value = optionRef.current.getAttribute('data-value')!;\n nativeSelect.current.dispatchEvent(new Event('change', { bubbles: true }));\n }\n\n setExpanded(false);\n\n containerReference.current && containerReference.current.querySelector('button')!.focus();\n };\n\n /**\n * @description We have to modify the children (Option component) to have a additional props that allows us to keep track of which one is selected and focused at all times and if a filter is active.\n * The `children` prop can be either a single object (1 child) or an array of multiple children.\n */\n const renderOptions = () => {\n if (isSearching || filter !== '') {\n const filteredChildren = React.Children.toArray(children).filter(\n (child) =>\n (child as ReactElement).props.children.toLowerCase().match(filter.toLowerCase()) !==\n null\n );\n\n return _internalRenderChildren(filteredChildren as ReactElement[]);\n }\n\n return _internalRenderChildren(children);\n\n function _internalRenderChildren(internalChildren: ReactElement[]) {\n return React.Children.map(internalChildren, (child, index) => {\n return React.cloneElement(child, {\n onFocusChange: (childIndex: number) => setFocusedSelectItem(childIndex),\n onOptionSelect: (optionRef: React.RefObject<HTMLLIElement>) => {\n onOptionChangeHandler(optionRef);\n setShouldClick(false);\n },\n isSelected: child.props.value === value,\n isSearching: isSearching,\n selectOpened: expanded,\n childIndex: index,\n hasFocus: focusedSelectItem === index,\n shouldClick: shouldClick,\n });\n });\n }\n };\n\n const renderSearch = () => (\n <Input\n {...searchInputProps}\n autoFocus\n ref={searchInputRef}\n onFocus={() => setIsSearching(true)}\n onBlur={() => setIsSearching(false)}\n onChange={filterResults}\n className={classes['select-search']}\n wrapperProps={{\n className: `${classes['select-search-wrapper']} ${searchInputProps?.wrapperProps?.className}`,\n }}\n type=\"text\"\n name=\"search-option\"\n placeholder={searchPlaceholder}\n />\n );\n\n const filterResults = (event: React.ChangeEvent<HTMLInputElement>) => {\n setFilter(event.currentTarget.value);\n };\n\n const statusIcon = () => {\n if (error) {\n return <Icon className={classes['warning']} icon={Icons.Warning} />;\n }\n\n if (value?.length !== 0 && onClear) {\n return (\n <div\n aria-hidden={false}\n role=\"button\"\n tabIndex={0}\n data-clear\n onClick={(e: React.MouseEvent<HTMLDivElement, MouseEvent>) => {\n e.preventDefault();\n e.stopPropagation();\n onClear(e);\n }}\n onKeyDown={(e: React.KeyboardEvent<HTMLDivElement>) => {\n if (e.code === 'Enter' || e.code === 'Space') {\n e.preventDefault();\n e.stopPropagation();\n onClear(e);\n containerReference.current &&\n containerReference.current.querySelector('button')!.focus();\n }\n }}\n >\n <span className={readyclasses['sr-only']}>{clearLabel}</span>\n <Icon tag=\"span\" icon={Icons.TimesThin} />\n </div>\n );\n }\n return null;\n };\n\n const nativeOnChangeHandler = (event: React.ChangeEvent<HTMLSelectElement>) => {\n onChange && onChange(event);\n };\n\n useEffect(() => {\n syncDisplayValue(value);\n }, [value]);\n\n useEffect(() => {\n rePositionList();\n }, [expanded]);\n\n useBodyClick(\n (event: MouseEvent) => !(event.target as Element).closest('.custom-select') && expanded,\n () => {\n setExpanded(!expanded);\n setListPosition({ top: 0, bottom: 'initial' });\n setOpacity(0);\n },\n expanded\n );\n\n const additionalClasses = [];\n expanded && additionalClasses.push(classes.expanded);\n error && additionalClasses.push(classes.error);\n disabled && additionalClasses.push(classes.disabled);\n className && additionalClasses.push(className);\n\n /** The native select is purely for external form libraries. We use it to emit an onChange with native select event object so they know exactly what's happening. */\n return (\n <Fragment>\n <select\n {...filterProps(rest, /^data-/, false)}\n tabIndex={-1}\n aria-hidden=\"true\"\n ref={nativeSelect}\n name={name}\n onChange={nativeOnChangeHandler}\n className={readyclasses['sr-only']}\n >\n <option value=\"\"></option>\n {React.Children.map(children, (child) => (\n <option value={child.props.value}></option>\n ))}\n </select>\n <div\n {...filterProps(rest, /^data-/)}\n ref={containerReference}\n onKeyDown={onArrowNavigation}\n className={`custom-select ${classes.select} ${additionalClasses.join(' ')} ${\n className ?? ''\n }`}\n >\n <button\n {...selectButtonProps}\n onClick={() => {\n setExpanded(!expanded);\n }}\n type=\"button\"\n name={name}\n className={`${classes['custom-select']} ${additionalClasses.join(' ')} `}\n disabled={disabled}\n aria-disabled={disabled}\n aria-invalid={error}\n aria-expanded={expanded}\n aria-haspopup=\"listbox\"\n aria-labelledby={labeledBy}\n aria-describedby={describedBy}\n >\n <div data-display className={classes['selected']}>\n {!value && placeholder && (\n <span className={classes['placeholder']}>{placeholder}</span>\n )}\n {value?.length > 0 && <span data-display-inner>{display}</span>}\n </div>\n <div className={classes['status']}>\n {statusIcon()}\n <Icon className={classes['triangle-down']} icon={Icons.TriangleDown} />\n </div>\n </button>\n <div\n ref={optionListReference}\n className={`list-wrapper ${classes['list-wrapper']}`}\n style={{\n display: expanded ? 'block' : 'none',\n opacity: opacity,\n maxHeight: optionsListMaxHeight,\n ...listPosition,\n }}\n >\n {Array.isArray(children) && children.length > renderSearchCondition && renderSearch()}\n <ul role=\"listbox\">{renderOptions()}</ul>\n </div>\n </div>\n </Fragment>\n );\n }\n);\n","import React, { ComponentPropsWithRef, createRef, RefObject, useEffect } from 'react';\nimport classes from './Select.module.scss';\n\nexport interface Props extends ComponentPropsWithRef<'li'> {\n children: string;\n value: string;\n disabled?: boolean;\n isSelected?: boolean;\n selectOpened?: boolean;\n hasFocus?: boolean;\n shouldClick?: boolean;\n isSearching?: boolean;\n label?: string;\n childIndex?: number;\n onOptionSelect?: (ref: React.RefObject<HTMLLIElement>) => void;\n onFocusChange?: (childIndex: number) => void;\n}\n\nexport const Option = React.forwardRef<HTMLLIElement, Props>(\n (\n {\n children,\n className,\n isSelected = false,\n shouldClick,\n hasFocus,\n selectOpened,\n isSearching,\n childIndex,\n onOptionSelect,\n onFocusChange,\n disabled,\n value,\n ...rest\n }: Props,\n ref\n ) => {\n let innerOptionRef = (ref as RefObject<HTMLLIElement>) || createRef<HTMLLIElement>();\n\n useEffect(() => {\n if (isSelected && innerOptionRef.current && shouldClick) {\n innerOptionRef.current.click();\n }\n }, [isSelected, shouldClick]);\n\n useEffect(() => {\n if (innerOptionRef.current && hasFocus && selectOpened && !isSearching) {\n onFocusChange && childIndex && onFocusChange(childIndex);\n innerOptionRef.current.focus();\n }\n }, [hasFocus, innerOptionRef, selectOpened, isSearching]);\n\n const onSelectHandler = () => {\n if (onOptionSelect) onOptionSelect(innerOptionRef);\n };\n\n return (\n <li\n {...rest}\n ref={innerOptionRef}\n data-value={value}\n className={`${isSelected ? classes['selected-option'] : ''} ${\n disabled ? classes.disabled : ''\n } ${className ?? ''}`}\n onClick={onSelectHandler}\n onKeyDownCapture={(event) => {\n if (event.code === 'Enter') {\n event.stopPropagation();\n event.preventDefault();\n\n onSelectHandler();\n }\n }}\n aria-selected={isSelected}\n role=\"option\"\n tabIndex={disabled ? -1 : 0}\n >\n {children}\n </li>\n );\n }\n);\n","import React, { ComponentPropsWithRef, Fragment, useState } from 'react';\nimport classes from './Pagination.module.scss';\nimport readyclasses from '../readyclasses.module.scss';\nimport { IconButton } from '../Button/IconButton';\nimport { Icons, Icon } from '../Icon/Icon';\nimport { Input } from '../Form/Input/Input';\nimport { Select } from '../Form/Select/Select';\nimport { Option } from '../Form/Select/Option';\nimport { Label } from '../Form/Label/Label';\n\nexport type PaginationTranslations = {\n totalItems: string;\n itemsPerPage: string;\n itemsPerPageLabel: string;\n currentPage: string;\n currentPageLabel: string;\n};\n\nexport type PageChangeLabels = 'next' | 'previous' | 'first' | 'last';\n\nenum DefaultTranslations {\n totalItems = 'Total items',\n itemsPerPage = 'Items per page',\n currentPage = 'Page %1 of %2',\n itemsPerPageLabel = 'Select how many items per page you want to see.',\n currentPageLabel = 'What page you are currently on.',\n}\n\nexport type PageSize = 10 | 25 | 50;\n\nexport interface Props extends Omit<ComponentPropsWithRef<'div'>, 'translate'> {\n currentPage?: number;\n totalElements?: number;\n pageSize?: PageSize;\n translate?: PaginationTranslations;\n onPageChange: (pageToGoTo: number) => void;\n onPageSizeChange: (pageSize: PageSize) => void;\n}\n\nexport const Pagination = React.forwardRef<HTMLDivElement, Props>(\n (\n {\n totalElements,\n pageSize = 10,\n translate = DefaultTranslations,\n currentPage,\n className,\n onPageChange,\n onPageSizeChange,\n ...rest\n }: Props,\n ref\n ) => {\n /** We use an internal state variable, because we don't want to fire onCurrentPageChange whenever onChange fires on the input. Rather, only when the Enter key is pressed. */\n const [internalCurrentPage, setInternalCurrentPage] = useState(currentPage?.toString() || '1');\n const calculateAmountOfPages = () => {\n if (!totalElements) return 1;\n\n if (Math.ceil(totalElements / pageSize) < 1) {\n return 1;\n }\n\n return Math.ceil(totalElements / pageSize);\n };\n\n const onEnterListener = (event: React.KeyboardEvent<HTMLInputElement>) => {\n if (event.code === 'Enter') {\n onPageChange(Number(internalCurrentPage));\n }\n };\n\n const renderCurrentPageTranslation = () => {\n const amountOfPages = calculateAmountOfPages();\n\n if (amountOfPages) {\n const splitCurrentPageTranslation = translate.currentPage.split(' ');\n\n return splitCurrentPageTranslation.map((string) => {\n if (string.includes('%1')) {\n return (\n <Fragment key={string}>\n <Label\n id=\"current-value-input-label\"\n htmlFor=\"current-value-input\"\n className={`${readyclasses['sr-only']} ${classes['current-value-input-label']}`}\n >\n {translate.currentPageLabel}\n </Label>\n <Input\n aria-labelledby=\"current-value-input-label\"\n key=\"input\"\n id=\"current-value-input\"\n type=\"text\"\n size={currentPage?.toString().length}\n max={calculateAmountOfPages()}\n wrapperProps={{ className: classes['current-value-input'] }}\n onKeyUp={onEnterListener}\n onBlur={(event: React.ChangeEvent<HTMLInputElement>) =>\n onPageChange(Number(event.target.value))\n }\n onChange={(e: React.ChangeEvent<HTMLInputElement>) =>\n setInternalCurrentPage(e.target.value)\n }\n name=\"current-value-input\"\n value={internalCurrentPage}\n className={`${classes['form-element']} ${classes['current-page-input']}`}\n />\n </Fragment>\n );\n }\n\n if (string.includes('%2')) {\n return (\n <div key={string}>\n <strong>{string.replace('%2', amountOfPages.toString())}</strong> \n </div>\n );\n }\n\n return <div key={string}>{string} </div>;\n });\n }\n\n return null;\n };\n\n const onPageSizeChangeHandler = (event: React.ChangeEvent<HTMLSelectElement>) => {\n const pageSizeNumber = Number(event.target.value) as PageSize;\n onPageSizeChange(pageSizeNumber);\n };\n\n const onPageChangeHandler = (pageToGoTo: number) => {\n onPageChange(pageToGoTo);\n };\n\n return (\n <div\n {...rest}\n ref={ref}\n className={`${classes['pagination-wrapper']} ${className ? className : ''}`}\n >\n {totalElements && (\n <div className={classes['total']}>\n <span tabIndex={0}>\n {translate.totalItems}: <span>{totalElements}</span>\n </span>\n </div>\n )}\n <div className={classes['pagination']}>\n {pageSize && (\n <div className={classes['per-page']}>\n <Label id=\"page-size-select-label\">{translate.itemsPerPage}</Label>\n <Select\n labeledBy=\"page-size-select-label\"\n className={`${classes['form-element']} ${classes['page-size-select']}`}\n value={pageSize.toString()}\n onChange={onPageSizeChangeHandler}\n >\n <Option value=\"10\">10</Option>\n <Option value=\"25\">25</Option>\n <Option value=\"50\">50</Option>\n </Select>\n </div>\n )}\n <Fragment>\n {!!((currentPage && currentPage > 2) || (currentPage && currentPage > 1)) && (\n <div className={classes['previous']}>\n {currentPage > 2 && (\n <IconButton\n title=\"first\"\n onClick={() => onPageChangeHandler(0)}\n data-paginate=\"first\"\n >\n <Icon icon={Icons.NavigationFirst} />\n </IconButton>\n )}\n {currentPage > 1 && (\n <IconButton\n title=\"previous\"\n onClick={() => onPageChangeHandler(currentPage - 1)}\n data-paginate=\"previous\"\n >\n <Icon icon={Icons.ChevronLeft} />\n </IconButton>\n )}\n </div>\n )}\n {totalElements && calculateAmountOfPages() && (\n <div className={classes['page']}>{renderCurrentPageTranslation()}</div>\n )}\n <div className={classes['next']}>\n {!!(\n (currentPage !== undefined && currentPage < calculateAmountOfPages()!) ||\n (currentPage !== undefined && !totalElements)\n ) && (\n <IconButton\n title=\"next\"\n onClick={() => onPageChangeHandler(currentPage + 1)}\n data-paginate=\"next\"\n >\n <Icon icon={Icons.ChevronRight} />\n </IconButton>\n )}\n {!!(currentPage && totalElements && currentPage < calculateAmountOfPages()! - 1) && (\n <IconButton\n title=\"last\"\n onClick={() => onPageChangeHandler(totalElements / pageSize)}\n data-paginate=\"last\"\n >\n <Icon icon={Icons.NavigationLast} />\n </IconButton>\n )}\n </div>\n </Fragment>\n </div>\n </div>\n );\n }\n);\n","import React, { ComponentPropsWithRef, ReactNode } from 'react';\nimport classes from './Label.module.scss';\nimport readyclasses from '../../readyclasses.module.scss';\n\nexport interface Props extends ComponentPropsWithRef<'label'> {\n children?: ReactNode;\n}\n\nexport const Label = React.forwardRef<HTMLLabelElement, Props>(\n ({ children, className, hidden = false, ...rest }: Props, ref) => {\n return (\n <label\n {...rest}\n ref={ref}\n className={`${hidden ? readyclasses['sr-only'] : ''} ${classes['label']} ${\n className ?? ''\n }`}\n >\n {children}\n </label>\n );\n }\n);\n","export const labelId = (id: string) => `${id}-label`;\nexport const descriptionId = (id: string) => `${id}-description`;\n","import React, { ComponentPropsWithRef, useEffect } from 'react';\nimport { createPortal } from 'react-dom';\nimport classes from './BaseModal.module.scss';\nimport { labelId, descriptionId } from './BaseModalContext';\n\nconst SCROLL_PROPERTY_NAME = 'overflow';\nconst SCROLL_PROPERTY_VALUE = 'hidden';\n\nexport interface Props extends ComponentPropsWithRef<'div'> {\n id: string;\n children: React.ReactNode;\n open: boolean;\n onClose?: (event?: React.MouseEvent<HTMLElement>) => unknown;\n className?: string;\n containerProps?: ComponentPropsWithRef<'div'>;\n backdropProps?: ComponentPropsWithRef<'div'>;\n labelledby?: string;\n describedby?: string;\n disableEscapeKeyDown?: boolean;\n disableBackdrop?: boolean;\n forceContainerOpen?: boolean;\n zIndex?: number;\n domRoot?: HTMLElement;\n}\n\nexport const useSetBodyScroll = (open: boolean) => {\n const hideBodyScroll = () => {\n document.body.style[SCROLL_PROPERTY_NAME] = SCROLL_PROPERTY_VALUE;\n };\n\n const showBodyScroll = () => {\n const allModalsClosed =\n document.querySelectorAll('[role=dialog][data-hidden=false]').length === 0;\n if (allModalsClosed) {\n document.body.style.removeProperty(SCROLL_PROPERTY_NAME);\n }\n };\n\n useEffect(() => {\n if (open) {\n hideBodyScroll();\n } else {\n showBodyScroll();\n }\n }, [open]);\n};\n\nexport const BaseModal = React.forwardRef<HTMLDivElement, Props>(\n (\n {\n id,\n children,\n open,\n onClose,\n className = '',\n containerProps,\n backdropProps,\n labelledby,\n describedby,\n disableEscapeKeyDown = false,\n disableBackdrop = false,\n forceContainerOpen = false,\n zIndex,\n domRoot = document.body,\n ...rest\n }: Props,\n ref\n ) => {\n useSetBodyScroll(open);\n\n const handleEscKeyPress = (event: React.KeyboardEvent<HTMLDivElement>) => {\n if (!disableEscapeKeyDown && event.key === 'Escape') {\n event.stopPropagation();\n onClose && onClose();\n }\n };\n\n const handleBackdropClick = () => !disableBackdrop && onClose && onClose();\n\n return createPortal(\n <div\n {...rest}\n ref={ref}\n id={id}\n className={`${classes['modal']} ${open ? classes['visible'] : ''} ${className}`}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby={labelledby || labelId(id)}\n aria-describedby={describedby || descriptionId(id)}\n aria-hidden={!open}\n tabIndex={-1}\n data-hidden={!open}\n onKeyDown={handleEscKeyPress}\n style={{ zIndex }}\n >\n <div\n {...backdropProps}\n className={`${classes['backdrop']} ${backdropProps?.className ?? ''}`}\n onClick={handleBackdropClick}\n ></div>\n {forceContainerOpen ? (\n <div\n {...containerProps}\n aria-hidden={!open}\n hidden={!open}\n style={{ zIndex: zIndex && zIndex + 1 }}\n className={`${classes['container']} ${containerProps?.className ?? ''}`}\n >\n {children}\n </div>\n ) : (\n open && (\n <div\n {...containerProps}\n style={{ zIndex: zIndex && zIndex + 1 }}\n className={`${classes['container']} ${containerProps?.className ?? ''}`}\n >\n {children}\n </div>\n )\n )}\n </div>,\n domRoot\n );\n }\n);\n","import React, { createContext } from 'react';\nimport { SnackbarOptionsProps } from '../interfaces';\n\ninterface SnackbarContextProps {\n enqueueSnackbar: (title: string, content?: string, options?: SnackbarOptionsProps) => void;\n enqueueSuccessSnackbar: (title: string, content?: string, options?: SnackbarOptionsProps) => void;\n enqueueErrorSnackbar: (title: string, content?: string, options?: SnackbarOptionsProps) => void;\n}\n\nconst SnackbarContext = createContext<SnackbarContextProps>({\n enqueueSnackbar: () => null,\n enqueueSuccessSnackbar: () => null,\n enqueueErrorSnackbar: () => null,\n});\n\ninterface Props {\n initialState: SnackbarContextProps;\n children?: React.ReactNode;\n}\n\nconst SnackbarContextProvider = ({ children, initialState }: Props) => {\n return <SnackbarContext.Provider value={initialState}>{children}</SnackbarContext.Provider>;\n};\n\nexport { SnackbarContextProvider, SnackbarContext, SnackbarContextProps };\n","import React, { ComponentPropsWithRef, createRef, useEffect } from 'react';\nimport classes from './BaseModalContent.module.scss';\n\nexport interface Props extends ComponentPropsWithRef<'div'> {\n id?: string;\n children: React.ReactNode;\n className?: string;\n disableAutoFocus?: boolean;\n}\n\nexport const BaseModalContent = React.forwardRef<HTMLDivElement, Props>(\n ({ id, children, className = '', disableAutoFocus = false, ...rest }: Props, ref) => {\n const contentRef = createRef<HTMLDivElement>();\n\n useEffect(() => {\n if (!disableAutoFocus && ref) {\n (ref as React.RefObject<HTMLDivElement>).current?.focus();\n } else if (!disableAutoFocus) {\n contentRef.current?.focus();\n }\n }, []);\n\n /**tabIndex is set to be able to do focus on that element which we need for catching keyDown events */\n return (\n <div\n {...rest}\n ref={ref || contentRef}\n id={id}\n className={`${classes['content']} ${className}`}\n tabIndex={-1}\n >\n {children}\n </div>\n );\n }\n);\n","import React, { ComponentPropsWithRef } from 'react';\nimport classes from './BaseModalActions.module.scss';\n\nexport interface Props extends ComponentPropsWithRef<'footer'> {\n children?: React.ReactNode;\n}\n\nexport const BaseModalActions = React.forwardRef<HTMLElement, Props>(\n ({ children, className = '', ...rest }: Props, ref) => {\n return (\n <footer {...rest} ref={ref} className={`${classes['actions']} ${className}`}>\n {children}\n </footer>\n );\n }\n);\n","import React, { ComponentPropsWithRef } from 'react';\nimport {\n BaseModalActions,\n Props as BaseModalActionsProps,\n} from '../../BaseModal/BaseModalActions/BaseModalActions';\nimport classes from './DialogActions.module.scss';\n\nexport interface Props extends ComponentPropsWithRef<any>, BaseModalActionsProps {\n align: 'left' | 'right';\n}\n\nexport const DialogActions = React.forwardRef<HTMLElement, Props>(\n ({ children, align, ...rest }: Props, ref) => {\n return (\n <BaseModalActions\n {...rest}\n ref={ref}\n className={`${classes['actions']}${align === 'left' ? ' ' + classes['left'] : ''}`}\n >\n {children}\n </BaseModalActions>\n );\n }\n);\n","import React, { ComponentPropsWithRef } from 'react';\nimport { Typography } from '../../../Typography/Typography';\nimport classes from './DialogTitle.module.scss';\n\nexport interface Props extends ComponentPropsWithRef<'div'> {\n id: string;\n title: string;\n}\n\nexport const DialogTitle = React.forwardRef<HTMLDivElement, Props>(\n ({ id, title, ...rest }: Props, ref) => {\n return (\n <div {...rest} ref={ref} className={classes['header']}>\n <Typography id={id} className={classes['title']} tag=\"h1\" variant=\"h4\">\n {title}\n </Typography>\n </div>\n );\n }\n);\n","import React, { ComponentPropsWithRef, useState } from 'react';\nimport { BaseModal } from '../BaseModal/BaseModal';\nimport { BaseModalContent } from '../BaseModal/BaseModalContent/BaseModalContent';\nimport { DialogActions } from './DialogActions/DialogActions';\nimport classes from './Dialog.module.scss';\nimport { DialogTitle } from './DialogTitle/DialogTitle';\nimport { Button, Props as ButtonProps } from '../../Button/Button';\nimport { labelId, descriptionId } from '../BaseModal/BaseModalContext';\nimport { generateID } from '../../util/helper';\n\nexport interface Props extends ComponentPropsWithRef<'div'> {\n id?: string;\n open: boolean;\n children: React.ReactNode;\n alignActions: 'left' | 'right';\n onClose: () => void;\n title: string;\n primaryAction: Action;\n secondaryAction?: Action;\n zIndex?: number;\n disableEscapeKeyDown?: boolean;\n}\n\nexport interface Action extends Omit<ButtonProps, 'variant' | 'ref'> {\n label: string;\n onClick: (event?: React.MouseEvent<HTMLButtonElement>) => unknown;\n}\n\nexport const Dialog = React.forwardRef<HTMLDivElement, Props>(\n (\n {\n id,\n open,\n children,\n alignActions,\n onClose,\n title,\n primaryAction,\n secondaryAction,\n zIndex,\n disableEscapeKeyDown = true,\n ...rest\n }: Props,\n ref\n ) => {\n const [dialogId] = useState(id ?? generateID(20));\n const { label: primaryLabel, ...restOfPrimaryAction } = primaryAction;\n const PrimaryButton = (\n <Button key=\"primary\" {...restOfPrimaryAction}>\n {primaryLabel}\n </Button>\n );\n const TertiaryButton =\n secondaryAction &&\n (function () {\n const { label: secondaryLabel, ...restOfSecondaryAction } = secondaryAction;\n return (\n <Button key=\"tertiary\" variant=\"text\" {...restOfSecondaryAction}>\n {secondaryLabel}\n </Button>\n );\n })();\n\n const onHiddenInputKeyPress = (event: React.KeyboardEvent<HTMLInputElement>) => {\n /** It has to be here because then we will need to check if user doesn't click tab to select action button and want to do another action then primary one? */\n if (event.key === 'Enter') {\n primaryAction.onClick();\n }\n };\n\n return (\n <BaseModal\n {...rest}\n ref={ref}\n id={dialogId}\n className={classes['dialog']}\n containerProps={{ className: classes['container'] }}\n open={open}\n disableBackdrop\n onClose={onClose}\n zIndex={zIndex}\n disableEscapeKeyDown={disableEscapeKeyDown}\n >\n <DialogTitle id={labelId(dialogId)} title={title} />\n <BaseModalContent\n id={descriptionId(dialogId)}\n className={classes['content']}\n disableAutoFocus\n >\n {children}\n </BaseModalContent>\n <DialogActions align={alignActions}>\n {alignActions === 'left'\n ? [PrimaryButton, TertiaryButton]\n : [TertiaryButton, PrimaryButton]}\n </DialogActions>\n <input\n autoFocus\n aria-hidden={true}\n style={{\n position: 'absolute',\n width: 0,\n height: 0,\n opacity: 0,\n }}\n maxLength={0}\n tabIndex={-1}\n onKeyPress={onHiddenInputKeyPress}\n />\n </BaseModal>\n );\n }\n);\n","import React, { ComponentPropsWithRef } from 'react';\nimport classes from './BaseModalHeader.module.scss';\nimport { IconButton } from '../../../Button/IconButton';\nimport { Icon, Icons } from '../../../Icon/Icon';\nimport { Typography } from '../../../Typography/Typography';\n\nexport interface Props extends ComponentPropsWithRef<'div'> {\n id: string;\n title: string;\n children?: React.ReactNode;\n onClose: (event: React.MouseEvent<HTMLButtonElement>) => void;\n}\n\nexport const BaseModalHeader = React.forwardRef<HTMLDivElement, Props>(\n ({ id, title, children, onClose, ...rest }: Props, ref) => {\n return (\n <div {...rest} ref={ref} className={classes['header']}>\n <div className={classes['headline']}>\n <Typography id={id} className={classes['title']} tag=\"h1\" variant=\"h4\">\n {title}\n </Typography>\n <IconButton onClick={onClose} className={classes['closeBtn']} title=\"close modal\">\n <Icon icon={Icons.Times} />\n </IconButton>\n </div>\n {children}\n </div>\n );\n }\n);\n","import React, { ComponentPropsWithRef } from 'react';\nimport { Dialog } from '../../Dialog/Dialog';\nimport { Typography } from '../../../Typography/Typography';\nimport { DataAttributeKey } from '../../../interfaces';\n\nexport interface Props extends ComponentPropsWithRef<'div'> {\n open: boolean;\n discardChangesButtonLabel: string;\n keepEditingButtonLabel: string;\n contentLabel: string;\n titleLabel: string;\n [dataAttribute: DataAttributeKey]: any;\n onKeepEditing: () => void;\n onDiscardChanges: () => void;\n}\n\nexport const DiscardChangesDialog = React.forwardRef<HTMLDivElement, Props>(\n (\n {\n open,\n onKeepEditing,\n onDiscardChanges,\n discardChangesButtonLabel,\n keepEditingButtonLabel,\n contentLabel,\n titleLabel,\n ...rest\n }: Props,\n ref\n ) => {\n return (\n <Dialog\n {...rest}\n ref={ref}\n open={open}\n alignActions=\"left\"\n title={titleLabel}\n onClose={onKeepEditing}\n primaryAction={{\n label: discardChangesButtonLabel,\n onClick: onDiscardChanges,\n }}\n secondaryAction={{\n label: keepEditingButtonLabel,\n onClick: onKeepEditing,\n }}\n disableEscapeKeyDown={false}\n >\n <Typography variant=\"body\" spacing={{ margin: 0 }}>\n {contentLabel}\n </Typography>\n </Dialog>\n );\n }\n);\n","import React, { useState } from 'react';\nimport { Props as ModalProps, Modal } from '../Modal/Modal';\nimport classes from './SlideInModal.module.scss';\n\nexport const SlideInModal = React.forwardRef<HTMLDivElement, ModalProps>(\n ({ children, id, open, ...rest }: ModalProps, ref) => {\n const [classHideOnTransition, setClassHideOnTransition] = useState<'hidden' | ''>('hidden');\n\n const onTransitionEnd = () => setClassHideOnTransition((prev) => (prev ? '' : 'hidden'));\n\n return (\n <Modal\n {...rest}\n id={id}\n open={open}\n className={`${classes['slide-in-modal']} ${open ? classes['visible'] : ''} ${\n !open ? classes[classHideOnTransition] : ''\n }`}\n containerProps={{ className: classes['container'] }}\n backdropProps={{ className: classes['backdrop-slide'] }}\n forceContainerOpen\n onTransitionEnd={onTransitionEnd}\n ref={ref}\n >\n {children}\n </Modal>\n );\n }\n);\n\nexport { Props } from '../Modal/Modal';\n","import React from 'react';\nimport classes from './SnackbarContainer.module.scss';\n\nexport interface Placement {\n vertical: 'top' | 'bottom';\n horizontal: 'start' | 'center' | 'end';\n}\n\nexport interface Props {\n placement: Placement;\n children?: React.ReactNode;\n zIndex?: number;\n className?: string;\n}\n\nexport const SnackbarContainer = ({ placement, children, zIndex, className, ...rest }: Props) => {\n return (\n <div\n {...rest}\n style={{ zIndex }}\n className={`${classes['snackbars']} ${classes[placement.horizontal]} ${\n classes[placement.vertical]\n } ${className ?? ''}`}\n >\n {children}\n </div>\n );\n};\n","import { useEffect, useRef, useState } from 'react';\n\nexport const useAnimation = <RefElement extends HTMLElement>(callback: () => void) => {\n const animatedObjectRef = useRef<RefElement>(null);\n /** We need to store flag that says us when to call the callback */\n const [animationStarted, setAnimationStarted] = useState(false);\n\n const onAnimationEnd = () => animationStarted && callback();\n\n useEffect(() => {\n animatedObjectRef.current?.addEventListener('animationend', onAnimationEnd);\n return () => animatedObjectRef.current?.removeEventListener('animationend', onAnimationEnd);\n }, [animationStarted]);\n\n return {\n ref: animatedObjectRef,\n animationStarted,\n startAnimation: () => setAnimationStarted(true),\n };\n};\n","import React, { useEffect, useRef } from 'react';\nimport { IconButton } from '../../../Button/IconButton';\nimport { Icon, Icons } from '../../../Icon/Icon';\nimport { Variant, Actions } from '../interfaces';\nimport classes from './SnackbarItem.module.scss';\nimport readyclasses from '../../../readyclasses.module.scss';\nimport { useAnimation } from '../../../hooks/useAnimation';\nimport { Typography } from '../../../Typography/Typography';\n\nconst textColor = 'var(--snackbar-text-color)';\n\nexport interface Props {\n id: string;\n title: string;\n duration: number;\n variant: Variant;\n onClose: (key: string) => void;\n closeButtonTitle: string;\n content?: string;\n actions?: Actions;\n}\n\nexport const SnackbarItem = ({\n id,\n title,\n duration,\n variant,\n content,\n actions = [],\n onClose,\n closeButtonTitle,\n}: Props) => {\n const timerHandler = useRef<ReturnType<typeof setTimeout>>();\n const onAnimationEnd = () => onClose(id);\n const { ref, animationStarted, startAnimation } = useAnimation<HTMLDivElement>(onAnimationEnd);\n\n useEffect(() => {\n timerHandler.current = setTimeout(() => startAnimation(), duration);\n return () => {\n timerHandler.current && clearTimeout(timerHandler.current);\n };\n }, []);\n\n const onMouseEnter = () => {\n timerHandler.current && clearTimeout(timerHandler.current);\n };\n\n const onMouseLeave = () => {\n timerHandler.current = setTimeout(() => startAnimation(), duration);\n };\n\n const getVariantIcon = () => {\n if (variant === 'error') {\n return Icons.Error;\n }\n return variant === 'success' ? Icons.CheckmarkCircleBreakout : Icons.InfoCircle;\n };\n\n const actionButtons = actions.map((actionProp, index) => (\n <button\n key={index}\n {...actionProp}\n onClick={(e) => {\n onClose(id);\n actionProp.onClick && actionProp.onClick(e);\n }}\n children={actionProp.label}\n className={classes['action-button']}\n ></button>\n ));\n\n return (\n <div\n ref={ref}\n className={`${classes['snackbar']} ${classes[variant]} ${\n animationStarted ? readyclasses['slide-out'] : readyclasses['slide-in']\n }`}\n onMouseEnter={onMouseEnter}\n onMouseLeave={onMouseLeave}\n >\n <Icon icon={getVariantIcon()} className={classes['icon']} />\n <div className={classes['container']}>\n <div className={classes['headline']}>\n <Typography className={classes['title']} variant=\"h4\" tag=\"span\">\n {title}\n </Typography>\n <IconButton\n id={classes['close-btn']}\n onClick={() => startAnimation()}\n title={closeButtonTitle}\n >\n <Icon icon={Icons.Times} color={textColor} />\n </IconButton>\n </div>\n {!!content && (\n <Typography className={classes['content']} variant=\"body\">\n {content}\n </Typography>\n )}\n {actionButtons.length > 0 && <div className={classes['actions']}>{actionButtons}</div>}\n </div>\n </div>\n );\n};\n","import { useEffect, useState } from 'react';\nimport { generateID } from '../util/helper';\n\nexport interface ConfigObject {\n name: string | undefined;\n errorMessage?: string;\n error?: boolean;\n parentErrorId?: string;\n helperText?: string;\n parentHelperId?: string;\n}\n\nexport const useFormSelector = (configObject: ConfigObject) => {\n const [identifier] = useState(generateID(15, configObject.name));\n const [describedBy, setDescribedBy] = useState('');\n const [errorId] = useState(generateID(15, configObject.errorMessage));\n\n useEffect(() => {\n if (configObject.error && configObject.parentErrorId) {\n setDescribedBy(configObject.parentErrorId);\n }\n\n if (\n (!configObject.error && configObject.helperText) ||\n (!configObject.parentErrorId && !configObject.errorMessage && configObject.helperText)\n ) {\n setDescribedBy(`${identifier}`);\n }\n\n if (\n (!configObject.error && !configObject.helperText && configObject.parentHelperId) ||\n (!configObject.parentErrorId && !configObject.errorMessage && configObject.parentHelperId)\n ) {\n setDescribedBy(`${configObject.parentHelperId}`);\n }\n\n if (configObject.errorMessage && !configObject.parentErrorId && configObject.error) {\n setDescribedBy(errorId);\n }\n }, [identifier, configObject.error, configObject.parentErrorId]);\n\n return {\n describedBy,\n errorId,\n identifier,\n };\n};\n","import React, { ComponentPropsWithRef, ReactNode } from 'react';\nimport classes from './FormHelperText.module.scss';\nimport { Typography } from '../../Typography/Typography';\nimport { FormElement } from '../form.interfaces';\n\nexport interface Props extends ComponentPropsWithRef<'div'>, FormElement {\n children?: ReactNode;\n}\n\nexport const FormHelperText = React.forwardRef<HTMLDivElement, Props>(\n ({ children, error, className, ...rest }: Props, ref) => {\n return (\n <Typography\n {...rest}\n ref={ref}\n variant=\"sub-text\"\n tag=\"div\"\n className={`${classes['form-helper-text']} ${error ? classes.error : ''} ${\n className ?? ''\n }`}\n >\n {children}\n </Typography>\n );\n }\n);\n","import React, { ComponentPropsWithRef, createRef, ReactNode } from 'react';\nimport { Icon, Icons } from '../../Icon/Icon';\nimport { KeyValuePair } from '../../interfaces';\nimport { FormSelector } from '../form.interfaces';\nimport { FormHelperText, Props as FormHelperTextProps } from '../FormHelperText/FormHelperText';\nimport classes from './FormSelectorWrapper.module.scss';\n\nexport interface Props extends ComponentPropsWithRef<'div'>, FormSelector {\n children?: ReactNode;\n nestedChildren?: ReactNode;\n containerProps?: ComponentPropsWithRef<'div'> & KeyValuePair;\n helperProps?: FormHelperTextProps;\n disabled?: boolean;\n errorId?: string;\n identifier?: string;\n}\n\nexport const FormSelectorWrapper = React.forwardRef<HTMLDivElement, Props>(\n (\n {\n children,\n className,\n nestedChildren,\n containerProps,\n helperProps,\n error,\n disabled,\n helperText,\n errorMessage,\n parentErrorId,\n errorId,\n identifier,\n ...rest\n }: Props,\n ref\n ) => {\n const helperRef = helperProps?.ref || createRef();\n\n return (\n <div\n {...rest}\n ref={ref}\n className={`${error ? classes['error'] : ''} ${disabled ? classes['disabled'] : ''} ${\n className ?? ''\n }`}\n >\n <div {...containerProps}>{children}</div>\n {(helperText || (helperProps && helperProps.children)) &&\n (!error || parentErrorId || !errorMessage) && (\n <FormHelperText\n {...helperProps}\n ref={helperRef}\n id={`${identifier}`}\n className={`${classes['helper-text']} ${helperProps?.className ?? ''} ${\n error ? classes['error'] : ''\n }`}\n >\n {(helperProps && helperProps.children) || helperText}\n </FormHelperText>\n )}\n {errorMessage && !parentErrorId && error && (\n <span className={classes['error-message']}>\n <Icon className={classes['error-icon']} icon={Icons.Error} />\n <span id={errorId}>{errorMessage}</span>\n </span>\n )}\n {nestedChildren}\n </div>\n );\n }\n);\n","import React, { ComponentPropsWithRef, ReactElement, ReactNode, useEffect } from 'react';\nimport { Icon, Icons } from '../../Icon/Icon';\nimport { Props as FormHelperTextProps } from '../FormHelperText/FormHelperText';\nimport classes from './Checkbox.module.scss';\nimport { useFormSelector } from '../../hooks/useFormSelector';\nimport {\n FormSelectorWrapper,\n Props as FormSelectorWrapperProps,\n} from '../FormSelectorWrapper/FormSelectorWrapper';\nimport { FormSelector } from '../form.interfaces';\n\nconst isToggle = (children: ReactNode) => (children as ReactElement)?.props?.['data-toggle'];\n\nexport interface Props extends ComponentPropsWithRef<'input'>, FormSelector {\n children: ReactNode;\n label?: string;\n indeterminate?: boolean;\n helperProps?: FormHelperTextProps;\n formSelectorWrapperProps?: FormSelectorWrapperProps;\n onChange?: (event: React.ChangeEvent<HTMLInputElement>) => void;\n}\n\nexport const Checkbox = React.forwardRef<HTMLInputElement, Props>(\n (\n {\n children,\n name,\n helperText,\n helperProps,\n indeterminate,\n parentErrorId,\n errorMessage,\n disabled,\n label,\n parentHelperId,\n className,\n error,\n checked = false,\n formSelectorWrapperProps,\n onChange,\n ...rest\n }: Props,\n ref\n ) => {\n const { errorId, identifier, describedBy } = useFormSelector({\n name,\n helperText,\n parentErrorId,\n errorMessage,\n error,\n parentHelperId,\n });\n\n useEffect(() => {\n if (!name) {\n throw new Error(\"Please pass a 'name' prop to your <Checkbox> component.\");\n }\n\n if (typeof children === 'object' && !isToggle(children) && indeterminate === undefined) {\n throw new Error(\n 'If you have nested checkboxes you have to manage the indeterminate state by passing a boolean to the `indeterminate` prop.'\n );\n }\n }, []);\n\n const determineLabel = () => {\n if (label) {\n return label;\n } else if (children === undefined) {\n throw new Error(\n 'Please make sure to pass either a string or more Checkbox components as a child of your Checkbox component.'\n );\n }\n\n if (typeof children === 'string') {\n return children;\n }\n\n throw new Error(\n 'If you pass Checkboxes as a child component (to create nested checkbox tree) you need to pass a label to the parent checkbox.'\n );\n };\n\n const renderNestedCheckboxes = () => (\n <ul className={classes['checkbox-list']}>\n {React.Children.map(children as ReactElement[], (child) => {\n return (\n <li>\n <Checkbox\n {...child.props}\n parentHelperId={parentHelperId}\n parentErrorId={parentErrorId}\n error={error}\n disabled={child.props.disabled ? child.props.disabled : disabled}\n >\n {child.props.children}\n </Checkbox>\n </li>\n );\n })}\n </ul>\n );\n\n const onChangeHandler = (event: React.ChangeEvent<HTMLInputElement>) => {\n if (disabled) {\n return;\n }\n onChange && onChange(event);\n };\n\n const renderToggle = () => React.Children.toArray(children).filter(isToggle);\n\n const iconClasses = [classes['input'], disabled ? classes['disabled'] : ''];\n\n /** Default return value is the default checkbox */\n return (\n <FormSelectorWrapper\n {...formSelectorWrapperProps}\n className={`${classes['checkbox-wrapper']} ${className ? className : ''}`}\n containerProps={{ className: classes['checkbox-container'] }}\n helperText={helperText}\n helperProps={helperProps}\n parentErrorId={parentErrorId}\n errorId={errorId}\n errorMessage={errorMessage}\n error={error}\n disabled={disabled}\n identifier={identifier}\n nestedChildren={\n typeof children === 'object' && !isToggle(children) && renderNestedCheckboxes()\n }\n >\n <input\n {...rest}\n ref={ref}\n disabled={disabled}\n className={`${classes['native-input']} ${error ? classes['error'] : ''}`}\n checked={checked}\n onChange={onChangeHandler}\n aria-invalid={error as boolean}\n aria-checked={indeterminate ? 'mixed' : checked}\n aria-describedby={describedBy}\n id={`${identifier}-checkbox`}\n name={name}\n type=\"checkbox\"\n />\n {renderToggle()}\n\n {indeterminate && <Icon className={iconClasses.join(' ')} icon={Icons.MinusSquare} />}\n {checked && !indeterminate && (\n <Icon className={iconClasses.join(' ')} icon={Icons.CheckmarkSquare} />\n )}\n {!checked && !indeterminate && (\n <Icon className={iconClasses.join(' ')} icon={Icons.Square} />\n )}\n <label htmlFor={`${identifier}-checkbox`}>{determineLabel()}</label>\n </FormSelectorWrapper>\n );\n }\n);\n","import React, { ComponentPropsWithRef } from 'react';\nimport { Icon, Icons } from '../../Icon/Icon';\nimport { Props as HelperProps } from '../FormHelperText/FormHelperText';\nimport classes from './Radio.module.scss';\nimport { useFormSelector } from '../../hooks/useFormSelector';\nimport { FormSelector } from '../form.interfaces';\nimport {\n FormSelectorWrapper,\n Props as FormSelectorWrapperProps,\n} from '../FormSelectorWrapper/FormSelectorWrapper';\n\nexport interface Props extends ComponentPropsWithRef<'input'>, FormSelector {\n children: string;\n value: string;\n formSelectorWrapperProps?: FormSelectorWrapperProps;\n helperProps?: HelperProps;\n}\n\nexport const Radio = React.forwardRef<HTMLInputElement, Props>(\n (\n {\n children,\n disabled,\n className,\n value,\n name,\n helperText,\n parentErrorId,\n parentHelperId,\n error,\n errorMessage,\n checked = false,\n formSelectorWrapperProps,\n helperProps,\n onChange,\n ...rest\n }: Props,\n ref\n ) => {\n const { errorId, identifier, describedBy } = useFormSelector({\n name,\n helperText,\n parentErrorId,\n errorMessage,\n error,\n parentHelperId,\n });\n\n const onChangeHandler = (event: React.ChangeEvent<HTMLInputElement> | React.MouseEvent) => {\n if (disabled) {\n return;\n }\n /** We have to clone the native event we got here and change the \"target\" property to the value. Otherwise, this regular event has \"on\" as it's event.target.value, which is useless. */\n const nativeEvent: any = event.nativeEvent || event;\n const clonedEvent = new nativeEvent.constructor(nativeEvent.type, nativeEvent);\n\n Object.defineProperty(clonedEvent, 'target', {\n writable: true,\n value: { value: value },\n });\n\n onChange && onChange(clonedEvent);\n };\n\n /** Default return value is the default radio */\n return (\n <FormSelectorWrapper\n {...formSelectorWrapperProps}\n className={`${classes['radio-wrapper']} ${className ?? ''}`}\n containerProps={{ className: classes['radio-container'] }}\n helperText={helperText}\n helperProps={helperProps}\n parentErrorId={parentErrorId}\n errorId={errorId}\n errorMessage={errorMessage}\n error={error}\n disabled={disabled}\n identifier={identifier}\n >\n <input\n {...rest}\n ref={ref}\n disabled={disabled}\n tabIndex={0}\n className={`${classes['native-input']} ${error ? classes['error'] : ''}`}\n onChange={onChangeHandler}\n checked={checked}\n aria-invalid={error ? true : false}\n aria-checked={checked}\n aria-describedby={describedBy}\n name={name}\n value={value}\n id={`${identifier}-radio`}\n type=\"radio\"\n />\n\n {checked && (\n <Icon\n className={`${classes['input']} ${disabled ? classes['disabled'] : ''}`}\n icon={Icons.Radio}\n />\n )}\n {!checked && (\n <Icon\n className={`${classes['input']} ${disabled ? classes['disabled'] : ''}`}\n icon={Icons.Circle}\n />\n )}\n\n <label onClick={onChangeHandler} htmlFor={`${identifier}-radio`}>\n {children}\n </label>\n </FormSelectorWrapper>\n );\n }\n);\n","import React, { ComponentPropsWithRef } from 'react';\nimport { Icon, Props as IconProps, Icons } from '../../Icon/Icon';\nimport classes from './Textarea.module.scss';\nimport { FormElement } from '../form.interfaces';\n\ninterface IconPropsPartial extends Omit<Partial<IconProps>, 'ref'> {}\n\nexport interface Props extends ComponentPropsWithRef<'textarea'>, FormElement {\n wrapperProps?: ComponentPropsWithRef<'div'>;\n errorProps?: IconPropsPartial;\n}\n\nexport const Textarea = React.forwardRef<HTMLTextAreaElement, Props>(\n (\n {\n error = false,\n disabled = false,\n className,\n rows = 4,\n wrapperProps,\n errorProps,\n ...rest\n }: Props,\n ref\n ) => {\n return (\n <div\n {...wrapperProps}\n className={`${classes['textarea-wrapper']} ${wrapperProps?.className ?? ''}`}\n >\n <textarea\n {...rest}\n ref={ref}\n rows={rows}\n className={`${error ? classes['error'] : ''} ${classes['textarea']} ${className ?? ''}`}\n disabled={disabled}\n />\n {error && (\n <Icon\n {...errorProps}\n className={`${classes['warning']} ${errorProps?.className ?? ''}`}\n icon={Icons.Error}\n />\n )}\n </div>\n );\n }\n);\n","import React, { ComponentPropsWithRef } from 'react';\nimport { Checkbox, Props as CheckboxProps } from '../Checkbox/Checkbox';\nimport classes from './Toggle.module.scss';\n\nexport interface Props\n extends ComponentPropsWithRef<'input'>,\n Omit<CheckboxProps, 'indeterminate' | 'errorMessage' | 'error' | 'children' | 'label'> {\n children: string;\n}\n\nexport const Toggle = React.forwardRef<HTMLInputElement, Props>(\n ({ children, checked, disabled, helperProps, ...rest }: Props, ref) => (\n <div className={classes['toggle-wrapper']}>\n <Checkbox\n {...rest}\n ref={ref}\n checked={checked}\n className={classes['checkbox']}\n helperProps={{ className: classes['toggle-helper'], ...helperProps }}\n disabled={disabled}\n label={children}\n >\n <span\n data-toggle\n aria-hidden=\"true\"\n className={`${classes['toggle']} ${checked ? classes['checked'] : ''} ${\n disabled ? classes['disabled'] : ''\n } `}\n ></span>\n </Checkbox>\n </div>\n )\n);\n","import React, { ComponentPropsWithRef, ReactElement } from 'react';\nimport classes from './FormControl.module.scss';\n\nexport interface Props extends ComponentPropsWithRef<'div'> {\n children?: ReactElement | ReactElement[];\n grid?: 1 | 2 | 3;\n align?: 'top' | 'start' | 'middle' | 'center' | 'bottom' | 'end' | 'stretch';\n error?: boolean;\n disabled?: boolean;\n}\n\nexport const FormControl = React.forwardRef<HTMLDivElement, Props>(\n ({ children, disabled, error, className, grid, align = 'center', ...rest }: Props, ref) => {\n const renderChildren = () =>\n React.Children.map(children, (child) => {\n if (!child) {\n return null;\n }\n\n const childElement = React.cloneElement(child, {\n disabled: child.props.disabled !== undefined ? child.props.disabled : disabled,\n error: child.props.error !== undefined ? child.props.error : error,\n });\n\n if (grid && grid > 1) {\n return (\n <div className={`${classes['col-' + grid]} ${classes.column}`}>{childElement}</div>\n );\n }\n\n return childElement;\n });\n\n return (\n <div\n {...rest}\n ref={ref}\n data-formcontrol\n className={`${classes['form-control']} ${className ? className : ''} ${\n grid && grid > 1 ? `${classes.grid} ${classes['grid-' + grid]}` : ''\n } ${classes[align]}`}\n >\n {renderChildren()}\n </div>\n );\n }\n);\n","/** The empty className property on FormHelperText is on purpose! We want to basically \"filter\" out the className from helperProps because we're adding this to the surrounding div. This makes it so also the errormessage receives this styling. */\n\nimport React, { ComponentPropsWithRef, ReactChild } from 'react';\nimport classes from './FormGroup.module.scss';\nimport { FormHelperText, Props as HelperProps } from '../FormHelperText/FormHelperText';\nimport { Icon, Icons } from '../../Icon/Icon';\n\nexport interface Props extends ComponentPropsWithRef<'div'> {\n children: ReactChild[] | ReactChild;\n error?: boolean;\n errorMessageIcon?: Icons;\n errorMessageIconPosition?: 'before' | 'after';\n errorMessage?: string;\n errorId?: string;\n helperIndent?: number;\n helperText?: string;\n helperId?: string;\n helperProps?: HelperProps;\n disabled?: boolean;\n}\n\nexport const FormGroup = React.forwardRef<HTMLDivElement, Props>(\n (\n {\n children,\n className,\n error,\n errorMessage,\n errorId,\n errorMessageIcon,\n errorMessageIconPosition = 'before',\n helperText,\n helperId,\n helperProps,\n helperIndent,\n ...rest\n }: Props,\n ref\n ) => {\n return (\n <div\n {...rest}\n ref={ref}\n className={`${classes['form-group']} ${error ? classes.error : ''} ${className ?? ''}`}\n >\n {children}\n\n {(helperText || (errorMessage && error)) && (\n <div\n style={{ marginLeft: `${helperIndent}px` }}\n className={`${classes['default-helper']} ${\n helperProps?.className ? helperProps.className : ''\n }`}\n >\n {helperText && !error && (\n <FormHelperText {...helperProps} className={''} id={helperId}>\n {(helperProps && helperProps.children) || helperText}\n </FormHelperText>\n )}\n {error && errorMessage && (\n <span className={classes['error-message']}>\n <span className={classes.message} id={errorId}>\n {errorMessageIcon && errorMessageIconPosition === 'before' && (\n <Icon\n className={`${classes['error-icon']} ${classes['error-icon-before']}`}\n icon={errorMessageIcon}\n />\n )}\n {errorMessage}\n {errorMessageIcon && errorMessageIconPosition === 'after' && (\n <Icon\n className={`${classes['error-icon']} ${classes['error-icon-after']}`}\n icon={errorMessageIcon}\n />\n )}\n </span>\n </span>\n )}\n </div>\n )}\n </div>\n );\n }\n);\n","import React, { ComponentPropsWithRef, ReactElement } from 'react';\nimport { FormGroup, Props as FormGroupProps } from '../../FormGroup/FormGroup';\nimport { Label, Props as LabelProps } from '../../Label/Label';\nimport classes from './Wrapper.module.scss';\nimport { Props as HelperProps } from '../../FormHelperText/FormHelperText';\nimport { FormElement } from '../../form.interfaces';\n\nexport interface Props extends ComponentPropsWithRef<'div'>, FormGroupProps {\n children: ReactElement | ReactElement[];\n floatingLabelActive?: boolean;\n floatingLabel?: boolean;\n helperIndent?: number;\n label?: string;\n labelProps?: LabelProps;\n name: string;\n /** This does NOT add validation! It simply adds an asterix on the Label! */\n required?: boolean;\n innerClassName?: string;\n}\n\n/** For components that extend this component we create an interface (InputWrapper, SelectWrapper, etc.) */\nexport interface WrapperProps extends FormElement {\n errorMessage?: string;\n helperText?: string;\n helperProps?: HelperProps;\n label?: string;\n name: string;\n required?: boolean;\n disabled?: boolean;\n}\n\nexport const Wrapper = React.forwardRef<HTMLDivElement, Props>(\n (\n {\n children,\n className,\n error,\n errorMessage,\n errorId,\n errorMessageIcon,\n errorMessageIconPosition,\n helperText,\n helperId,\n floatingLabel = true,\n floatingLabelActive,\n required,\n helperProps,\n helperIndent,\n labelProps,\n label,\n disabled,\n name,\n innerClassName,\n ...rest\n }: Props,\n ref\n ) => {\n const renderChildren = () =>\n React.Children.map(children, (child) =>\n React.cloneElement(child, {\n disabled,\n })\n );\n\n const labelClasses = [];\n\n floatingLabel && labelClasses.push(classes['floating-label']);\n floatingLabel && floatingLabelActive && labelClasses.push(classes['floating-label-active']);\n labelProps?.className && labelClasses.push(labelProps.className);\n required && labelClasses.push(classes['required']);\n error && labelClasses.push(classes['error']);\n\n return (\n <div {...rest} ref={ref} className={`${classes.wrapper} ${className ? className : ''}`}>\n <FormGroup\n error={error}\n errorMessage={errorMessage}\n errorId={errorId}\n errorMessageIcon={errorMessageIcon}\n errorMessageIconPosition={errorMessageIconPosition}\n helperText={helperText}\n helperId={helperId}\n helperProps={helperProps}\n helperIndent={helperIndent}\n >\n <div\n className={`${floatingLabel ? classes['floating-wrapper'] : ''} ${\n innerClassName ? innerClassName : ''\n }`}\n >\n {label && (\n <Label\n {...labelProps}\n className={`${classes.label} ${labelClasses.join(' ')}`}\n htmlFor={name}\n >\n {label}\n </Label>\n )}\n {renderChildren()}\n </div>\n </FormGroup>\n </div>\n );\n }\n);\n","import { useEffect, useState } from 'react';\nimport { generateID } from '../util/helper';\nimport { Type as InputTypes } from '../Form/Input/Input';\n\nexport const useWrapper = (value?: string, placeholder?: string, type?: InputTypes) => {\n const [helperId] = useState(generateID(20));\n const [errorId] = useState(generateID(20));\n const [labelId] = useState(generateID(20));\n const [floatingLabelActive, setFloatingLabelActive] = useState(false);\n const [hasFocus, setHasFocus] = useState(false);\n\n useEffect(() => {\n if (\n (value?.length && value.length > 0) ||\n placeholder ||\n type === 'datetime-local' ||\n type === 'time'\n ) {\n setFloatingLabelActive(true);\n }\n }, []);\n\n useEffect(() => {\n if ((value?.length && value.length > 0) || hasFocus) {\n setFloatingLabelActive(true);\n } else if (!placeholder && !hasFocus && type !== 'datetime-local' && type !== 'time') {\n setFloatingLabelActive(false);\n }\n }, [value, placeholder, type, hasFocus]);\n\n return {\n helperId,\n errorId,\n labelId,\n floatingLabelActive,\n setFloatingLabelActive,\n hasFocus,\n setHasFocus,\n };\n};\n","import React, { ComponentPropsWithRef, useEffect, useRef, useState } from 'react';\nimport { Input, Type, Props as InputProps } from '../../Input/Input';\nimport classes from './InputWrapper.module.scss';\nimport { Wrapper, WrapperProps } from '../Wrapper/Wrapper';\nimport { useWrapper } from '../../../hooks/useWrapper';\n\ninterface PartialInputProps extends Partial<InputProps> {}\n\nexport interface Props extends ComponentPropsWithRef<'div'>, WrapperProps {\n label: string;\n type: Type;\n name: string;\n inputProps?: PartialInputProps;\n value: string;\n onChange?: (event: React.ChangeEvent<HTMLInputElement>) => void;\n onBlur?: (event: React.FocusEvent<HTMLInputElement>) => void;\n onFocus?: (event: React.FocusEvent<HTMLInputElement>) => void;\n}\n\nconst useLabelOffset = (\n wrapper: React.RefObject<HTMLDivElement>,\n input: React.RefObject<HTMLInputElement>,\n floatingLabelActive: boolean,\n prefix?: string\n) => {\n const [labelOffset, setLabelOffset] = useState({});\n\n const resetLabelOffset = () => setLabelOffset({ left: undefined });\n\n useEffect(() => {\n if (wrapper.current && input.current && prefix) {\n if (floatingLabelActive) {\n resetLabelOffset();\n } else {\n const prefixDifference =\n input.current.getBoundingClientRect().left -\n wrapper.current.getBoundingClientRect().left +\n 4;\n\n setLabelOffset({ left: `${prefixDifference}px` });\n }\n }\n }, [wrapper.current, input.current, prefix, floatingLabelActive]);\n\n return { labelOffset };\n};\n\nexport const InputWrapper = React.forwardRef<HTMLDivElement, Props>(\n (\n {\n type,\n name,\n inputProps,\n helperText,\n helperProps,\n value,\n className,\n error,\n onChange,\n onBlur,\n onFocus,\n ...rest\n }: Props,\n ref\n ) => {\n const {\n errorId,\n floatingLabelActive,\n setFloatingLabelActive,\n hasFocus,\n setHasFocus,\n helperId,\n labelId,\n } = useWrapper(value, inputProps?.placeholder, type);\n const { prefix, suffix } = inputProps || {};\n const wrapper = useRef<HTMLDivElement>(null);\n const input = useRef<HTMLInputElement>(null);\n const hasValueOrActiveFloatingLabel = !!value || floatingLabelActive;\n const labelClasses = [classes['input-label']];\n const { labelOffset } = useLabelOffset(\n (ref as React.RefObject<HTMLDivElement>) || wrapper,\n (inputProps && (inputProps.ref as React.RefObject<HTMLInputElement>)) || input,\n floatingLabelActive,\n prefix\n );\n\n hasFocus && labelClasses.push(classes['focus']);\n\n return (\n <Wrapper\n {...rest}\n ref={ref || wrapper}\n name={name}\n className={`${classes['input-wrapper']} ${className ?? ''}`}\n labelProps={{\n id: labelId,\n className: labelClasses.join(' '),\n style: { ...labelOffset },\n }}\n floatingLabelActive={floatingLabelActive}\n errorId={errorId}\n error={error}\n helperId={helperId}\n helperText={helperText}\n helperProps={{\n ...helperProps,\n className: `${classes['input-wrapper-helper']} ${helperProps?.className ?? ''} `,\n }}\n helperIndent={20}\n >\n <Input\n {...inputProps}\n prefix={hasValueOrActiveFloatingLabel ? prefix : ''}\n suffix={hasValueOrActiveFloatingLabel ? suffix : ''}\n wrapperProps={{\n className: `${floatingLabelActive ? classes['floating-label-active'] : ''} ${\n inputProps?.wrapperProps?.className ?? ''\n }`,\n }}\n ref={(inputProps && inputProps.ref) || input}\n aria-labelledby={labelId}\n aria-describedby={error ? errorId : helperId}\n onChange={onChange}\n onFocus={(e) => {\n onFocus && onFocus(e);\n setHasFocus(true);\n setFloatingLabelActive(true);\n }}\n onBlur={(e) => {\n onBlur && onBlur(e);\n setHasFocus(false);\n e.target.value ||\n e.target.placeholder ||\n inputProps?.placeholder?.length ||\n type === 'datetime-local' ||\n type === 'time' ||\n type === 'date'\n ? setFloatingLabelActive(true)\n : setFloatingLabelActive(false);\n }}\n className={`${floatingLabelActive ? classes['floating-label'] : ''} ${\n inputProps?.className ?? ''\n }`}\n name={name}\n error={error}\n id={name}\n value={value}\n type={type}\n />\n </Wrapper>\n );\n }\n);\n","import React, { ComponentPropsWithRef, ReactChild, ReactElement } from 'react';\nimport classes from './SelectWrapper.module.scss';\nimport { Wrapper, WrapperProps } from '../Wrapper/Wrapper';\nimport { Select, Props as SelectProps } from '../../Select/Select';\nimport { useWrapper } from '../../../hooks/useWrapper';\n\ninterface PartialSelectProps extends Partial<SelectProps> {}\n\nexport interface Props\n extends Omit<ComponentPropsWithRef<'div'>, 'onChange'>,\n Omit<WrapperProps, 'onChange' | 'error'> {\n children: ReactChild | ReactChild[];\n placeholder?: string;\n value: string;\n error?: boolean;\n selectProps?: PartialSelectProps;\n onChange?: (event: React.ChangeEvent<HTMLSelectElement>) => void;\n onClear?: (event: React.MouseEvent<HTMLDivElement> | React.KeyboardEvent<HTMLDivElement>) => void;\n}\n\nexport const SelectWrapper = React.forwardRef<HTMLDivElement, Props>(\n (\n {\n children,\n error,\n value,\n placeholder,\n selectProps,\n helperProps,\n onChange,\n onClear,\n ...rest\n }: Props,\n ref\n ) => {\n const { errorId, floatingLabelActive, helperId, labelId } = useWrapper(value, placeholder);\n\n return (\n <Wrapper\n {...rest}\n ref={ref}\n floatingLabelActive={floatingLabelActive}\n errorId={errorId}\n helperId={helperId}\n labelProps={{ id: labelId, className: classes['select-label'] }}\n helperProps={{\n ...helperProps,\n className: `${classes['select-helper-text']} ${helperProps?.className ?? ''}`,\n }}\n error={error}\n >\n <Select\n {...selectProps}\n value={value}\n labeledBy={labelId}\n error={error}\n describedBy={error ? errorId : helperId}\n onChange={onChange}\n onClear={(e) => {\n onClear && onClear(e);\n }}\n placeholder={placeholder}\n className={`${floatingLabelActive ? classes['floating-label-active'] : ''} ${\n selectProps?.className ?? ''\n }`}\n >\n {children as ReactElement[]}\n </Select>\n </Wrapper>\n );\n }\n);\n","import React, { ComponentPropsWithRef, useState } from 'react';\nimport classes from './TextareaWrapper.module.scss';\nimport { Wrapper, WrapperProps } from '../Wrapper/Wrapper';\nimport { Textarea, Props as TextareaProps } from '../../Textarea/Textarea';\nimport { useWrapper } from '../../../hooks/useWrapper';\n\nexport interface Props\n extends Omit<\n ComponentPropsWithRef<'div'>,\n 'onFocus' | 'onChange' | 'onBlur' | 'onMouseEnter' | 'onMouseLeave'\n >,\n Omit<WrapperProps, 'onFocus' | 'onChange' | 'onBlur' | 'onMouseEnter' | 'onMouseLeave'> {\n placeholder?: string;\n textareaProps?: TextareaProps;\n value: string;\n onFocus?: (event: React.FocusEvent<HTMLTextAreaElement>) => void;\n onChange?: (event: React.ChangeEvent<HTMLTextAreaElement>) => void;\n onBlur?: (event: React.FocusEvent<HTMLTextAreaElement>) => void;\n onMouseEnter?: (event: React.MouseEvent<HTMLTextAreaElement>) => void;\n onMouseLeave?: (event: React.MouseEvent<HTMLTextAreaElement>) => void;\n}\n\nexport const TextareaWrapper = React.forwardRef<HTMLDivElement, Props>(\n (\n {\n name,\n error,\n value,\n label,\n placeholder,\n textareaProps,\n helperProps,\n onChange,\n onFocus,\n onBlur,\n onMouseEnter,\n onMouseLeave,\n disabled,\n ...rest\n }: Props,\n ref\n ) => {\n const {\n errorId,\n floatingLabelActive,\n setFloatingLabelActive,\n hasFocus,\n setHasFocus,\n helperId,\n labelId,\n } = useWrapper(value, placeholder);\n const [hover, setHover] = useState(false);\n\n const optionalClasses: string[] = [];\n\n hasFocus && optionalClasses.push(classes['focus']);\n hover && optionalClasses.push(classes['hover']);\n disabled && optionalClasses.push(classes['disabled']);\n error && optionalClasses.push(classes['error']);\n\n return (\n <Wrapper\n {...rest}\n ref={ref}\n disabled={disabled}\n labelProps={{\n id: labelId,\n className: `${classes['textarea-label']} ${optionalClasses.join('')}`,\n }}\n name={name}\n label={label}\n helperId={helperId}\n helperProps={{\n ...helperProps,\n className: classes['textarea-helper-text'],\n }}\n error={error}\n floatingLabelActive={floatingLabelActive}\n errorId={errorId}\n >\n <Textarea\n {...textareaProps}\n error={error}\n aria-labelledby={label && labelId}\n aria-describedby={error ? errorId : helperId}\n placeholder={placeholder}\n name={name}\n id={name}\n value={value}\n onChange={onChange}\n onFocus={(e) => {\n onFocus && onFocus(e);\n setHasFocus(true);\n setFloatingLabelActive(true);\n }}\n onBlur={(e) => {\n onBlur && onBlur(e);\n setHasFocus(false);\n e.target.value || e.target.placeholder || textareaProps?.placeholder?.length\n ? setFloatingLabelActive(true)\n : setFloatingLabelActive(false);\n }}\n onMouseEnter={(e) => {\n onMouseEnter && onMouseEnter(e);\n setHover(true);\n }}\n onMouseLeave={(e) => {\n onMouseLeave && onMouseLeave(e);\n setHover(false);\n }}\n className={`${classes['textarea']} ${error ? classes['error'] : ''}`}\n wrapperProps={{\n className: `${classes['textarea-wrapper']}} ${optionalClasses.join(' ')}`,\n }}\n errorProps={{ className: classes['error-icon'] }}\n />\n </Wrapper>\n );\n }\n);\n","import React, { ComponentPropsWithRef, ReactNode, ReactElement } from 'react';\nimport readyclasses from '../../readyclasses.module.scss';\nimport classes from './Fieldset.module.scss';\nimport { Typography, Variant } from '../../Typography/Typography';\nimport { Input } from '../Input/Input';\nimport { Select } from '../Select/Select';\nimport { Radio } from '../Radio/Radio';\nimport { Checkbox } from '../Checkbox/Checkbox';\nimport { Textarea } from '../Textarea/Textarea';\nimport { Toggle } from '../Toggle/Toggle';\nimport { Label } from '../Label/Label';\nimport { FormControl } from '../FormControl/FormControl';\nimport { FormSelectorWrapper } from '../FormSelectorWrapper/FormSelectorWrapper';\nimport { FormHelperText } from '../FormHelperText/FormHelperText';\nimport { InputWrapper } from '../Wrapper/InputWrapper/InputWrapper';\nimport { SelectWrapper } from '../Wrapper/SelectWrapper/SelectWrapper';\nimport { TextareaWrapper } from '../Wrapper/TextareaWrapper/TextareaWrapper';\n\nexport interface Props extends ComponentPropsWithRef<'fieldset'> {\n children?: ReactElement | ReactElement[];\n legend: string;\n legendStyle?: Variant;\n hideLegend?: boolean;\n background?: string;\n noPadding?: boolean;\n noBackground?: boolean;\n required?: boolean;\n error?: boolean;\n disablePropagation?: boolean;\n}\n\nexport const Fieldset = React.forwardRef<HTMLFieldSetElement, Props>(\n (\n {\n children,\n className,\n legend,\n legendStyle = 'body',\n hideLegend = false,\n noBackground,\n background = noBackground ? '' : '#FFF',\n noPadding = false,\n disabled = false,\n required = false,\n error = false,\n disablePropagation = false,\n ...rest\n }: Props,\n ref\n ) => {\n const renderChildren = () => {\n if (!children) return;\n\n /* All right, so the issue is that whenever we try to add disabled and error to a component that doesn't accept it, \n React will throw an error. However, it might occur that we want a component inside of Fieldset because of aesthetic purposes \n (fieldset applies a sort of container with white background and if we want to display it inside of this container... then yea).\n So instead we supply an array of components that we want to add the disabled and error prop to and check if child.type equals one of these. */\n const allowedComponents: ReactNode[] = [\n Input,\n Select,\n Radio,\n Checkbox,\n Textarea,\n Toggle,\n Label,\n FormControl,\n FormSelectorWrapper,\n FormHelperText,\n InputWrapper,\n SelectWrapper,\n TextareaWrapper,\n ];\n\n return React.Children.map(children, (child: ReactElement) => {\n if (allowedComponents.includes(child.type) && !disablePropagation) {\n return React.cloneElement(child, {\n disabled: child.props.disabled ?? disabled,\n error: child.props.error ?? error,\n });\n }\n\n return child;\n });\n };\n\n return (\n <fieldset\n {...rest}\n ref={ref}\n disabled={disabled}\n style={{ backgroundColor: background, ...rest.style }}\n className={`${classes.fieldset} ${noPadding ? classes['no-padding'] : ''} ${\n className ?? ''\n }`}\n >\n {legend && <legend className={readyclasses['sr-only']}>{legend}</legend>}\n {legend && !hideLegend && (\n <Typography\n variant={legendStyle}\n tag=\"span\"\n aria-hidden=\"true\"\n className={`${classes['legend']} ${required ? classes['required'] : ''} ${\n error ? classes['error'] : ''\n }`}\n >\n {legend}\n </Typography>\n )}\n {renderChildren()}\n </fieldset>\n );\n }\n);\n","import React, { ComponentPropsWithRef, ReactElement, useEffect } from 'react';\nimport classes from './RadioWrapper.module.scss';\nimport { Wrapper, WrapperProps } from '../Wrapper/Wrapper';\nimport { useWrapper } from '../../../hooks/useWrapper';\nimport { Icons } from '../../../Icon/Icon';\nimport { Fieldset, Props as FieldsetProps } from '../../../Form/Fieldset/Fieldset';\n\nexport interface Props extends ComponentPropsWithRef<'div'>, WrapperProps {\n children: ReactElement | ReactElement[];\n fieldsetProps: FieldsetProps;\n value: string;\n onChange?: (event: React.ChangeEvent<HTMLInputElement>) => void;\n}\n\nexport const RadioWrapper = React.forwardRef<HTMLDivElement, Props>(\n (\n {\n children,\n error,\n name,\n helperText,\n helperProps,\n fieldsetProps,\n value,\n onChange,\n disabled,\n ...rest\n }: Props,\n ref\n ) => {\n const { errorId, helperId } = useWrapper(value);\n\n useEffect(() => {\n if (fieldsetProps.legend === undefined) {\n console.error(\n `You should give your Fieldset component a legend prop so a legend element is rendered. This error was thrown in RadioWrapper. You can add this legend prop through the fieldsetProps prop by passing an object (fieldsetProps={{ legend: \"legend here\" }})`\n );\n }\n }, []);\n\n const renderChildren = () =>\n React.Children.map(children, (child) =>\n React.cloneElement(child, {\n parentErrorId: errorId,\n error: error,\n checked: child.props.value === value,\n name: name,\n parentHelperId: helperText ? helperId : false,\n onChange: onChange,\n disabled: child.props.disabled !== undefined ? child.props.disabled : disabled,\n })\n );\n\n return (\n <Fieldset {...fieldsetProps} error={error} disabled={disabled}>\n <Wrapper\n {...rest}\n ref={ref}\n disabled={disabled}\n name={name}\n helperId={helperId}\n helperText={helperText}\n helperProps={{\n ...helperProps,\n className: `${classes['radio-wrapper-helper']} ${\n error ? classes['radio-wrapper-error'] : ''\n } ${helperProps?.className ?? ''}`,\n }}\n error={error}\n errorId={errorId}\n errorMessageIcon={Icons.Error}\n floatingLabel={false}\n >\n {renderChildren()}\n </Wrapper>\n </Fieldset>\n );\n }\n);\n","import React, { ComponentPropsWithRef, ReactElement, useEffect } from 'react';\nimport classes from './CheckboxWrapper.module.scss';\nimport { useWrapper } from '../../../hooks/useWrapper';\nimport { Wrapper, WrapperProps } from '../Wrapper/Wrapper';\nimport { Icons } from '../../../Icon/Icon';\nimport { Fieldset, Props as FieldsetProps } from '../../../Form/Fieldset/Fieldset';\n\nexport interface Props extends ComponentPropsWithRef<'div'>, WrapperProps {\n children: ReactElement[] | ReactElement;\n fieldsetProps: FieldsetProps;\n onChange?: (event: React.ChangeEvent<HTMLInputElement>) => void;\n}\n\nexport const CheckboxWrapper = React.forwardRef<HTMLDivElement, Props>(\n ({ children, error = false, helperText, helperProps, fieldsetProps, ...rest }: Props, ref) => {\n const { errorId, helperId } = useWrapper();\n\n useEffect(() => {\n if (fieldsetProps.legend === undefined) {\n console.error(\n `You should give your Fieldset component a legend prop so a legend element is rendered. This error was thrown in CheckboxWrapper. You can add this legend prop through the fieldsetProps prop by passing an object (fieldsetProps={{ legend: \"legend here\" }})`\n );\n }\n }, []);\n\n const renderChildren = () =>\n React.Children.map(children, (child) =>\n React.cloneElement(child, {\n parentErrorId: errorId,\n error: error,\n parentHelperId: helperText ? helperId : false,\n disabled: rest.disabled,\n })\n );\n\n return (\n <Fieldset {...fieldsetProps} error={error} required={rest.required}>\n <Wrapper\n {...rest}\n ref={ref}\n label=\"\"\n helperId={helperId}\n helperText={helperText}\n helperProps={{\n ...helperProps,\n className: `${classes['checkbox-wrapper-helper']} ${\n error ? classes['checkbox-wrapper-error'] : ''\n } ${helperProps?.className ?? ''}`,\n }}\n error={error}\n errorMessageIcon={Icons.Error}\n errorId={errorId}\n >\n {renderChildren()}\n </Wrapper>\n </Fieldset>\n );\n }\n);\n","import { Reducer } from 'react';\nimport { Step } from './BaseWizardSteps/BaseWizardSteps';\nimport { WizardMode } from './Wizard';\n\ntype WizardStateType = {\n steps: Step[];\n currentStepNo: number;\n mode: WizardMode;\n stepScreenReaderLabel: string;\n};\n\ninterface SetWizardStateAction {\n type: 'SET_STATE';\n payload: {\n steps: Step[];\n mode: WizardMode;\n stepScreenReaderLabel: string;\n };\n}\n\ninterface ChangeCurrentStepNoAction {\n type: 'CHANGE_CURRENT_STEP_NO';\n payload: number;\n}\n\nconst setWizardState = (\n steps: Step[],\n mode: WizardMode,\n stepScreenReaderLabel: string\n): SetWizardStateAction => {\n return { type: 'SET_STATE', payload: { steps, mode, stepScreenReaderLabel } };\n};\n\nconst changeCurrentStepNo = (currentStepNo: number): ChangeCurrentStepNoAction => {\n return { type: 'CHANGE_CURRENT_STEP_NO', payload: currentStepNo };\n};\n\ntype WizardActions = SetWizardStateAction | ChangeCurrentStepNoAction;\n\nconst reducer: Reducer<WizardStateType, WizardActions> = (state, action) => {\n switch (action.type) {\n case 'SET_STATE':\n return { ...state, ...action.payload };\n case 'CHANGE_CURRENT_STEP_NO':\n return { ...state, currentStepNo: action.payload };\n default:\n return state;\n }\n};\n\nexport { setWizardState, changeCurrentStepNo, reducer, WizardActions, WizardStateType };\n","import React, { createContext, Dispatch, useReducer } from 'react';\nimport { WizardActions, WizardStateType, reducer } from './wizardStateReducer';\n\nconst WizardStateContext = createContext<{\n state: WizardStateType;\n dispatch: Dispatch<WizardActions>;\n}>({\n state: {} as WizardStateType,\n dispatch: () => null,\n});\n\nexport interface Props {\n initialState: WizardStateType;\n children?: React.ReactNode;\n}\n\nconst WizardStateProvider = ({ children, initialState }: Props) => {\n const [state, dispatch] = useReducer(reducer, initialState);\n return (\n <WizardStateContext.Provider value={{ state, dispatch }}>\n {children}\n </WizardStateContext.Provider>\n );\n};\n\nexport { WizardStateProvider, WizardStateContext };\n","import React, { Fragment, useContext, useEffect } from 'react';\nimport { Step } from './BaseWizardSteps/BaseWizardSteps';\nimport { WizardStateContext, WizardStateProvider } from './WizardStateProvider';\nimport { setWizardState } from './wizardStateReducer';\n\nexport type WizardMode = 'add' | 'edit';\n\nexport interface Props {\n steps: Step[];\n mode: WizardMode;\n initialStepNo?: number;\n onStepChange: (stepNo: number) => void;\n stepScreenReaderLabel: string;\n children: React.ReactNode;\n}\n\nconst useSetWizardState = (steps: Step[], mode: WizardMode, stepScreenReaderLabel: string) => {\n const { dispatch } = useContext(WizardStateContext);\n\n useEffect(() => {\n dispatch(setWizardState(steps, mode, stepScreenReaderLabel));\n }, [steps, mode, stepScreenReaderLabel]);\n};\n\nconst useStepChanging = (onStepChange: (stepNo: number) => void) => {\n const {\n state: { currentStepNo },\n } = useContext(WizardStateContext);\n\n useEffect(() => {\n onStepChange(currentStepNo);\n }, [currentStepNo]);\n};\n\nconst WizardContent = ({ steps, mode, stepScreenReaderLabel, onStepChange, children }: Props) => {\n useSetWizardState(steps, mode, stepScreenReaderLabel);\n useStepChanging(onStepChange);\n\n return <Fragment>{children}</Fragment>;\n};\n\nexport const Wizard = (props: Props) => {\n const { steps, initialStepNo: currentStepNo = 0, mode, stepScreenReaderLabel } = props;\n return (\n <WizardStateProvider initialState={{ steps, currentStepNo, mode, stepScreenReaderLabel }}>\n <WizardContent {...props} />\n </WizardStateProvider>\n );\n};\n","import React, { ComponentPropsWithRef, Fragment } from 'react';\nimport classes from './BaseWizardSteps.module.scss';\nimport readyclasses from '../../readyclasses.module.scss';\nimport { Icon, Icons } from '../../Icon/Icon';\n\ntype StepState = 'finished' | 'current' | 'future';\n\nexport interface Step {\n label: string;\n disabled?: boolean;\n}\n\nexport interface Props extends Omit<ComponentPropsWithRef<'div'>, 'onClick'> {\n steps: Step[];\n currentStepNo: number;\n onClick?: (stepNo: number) => void;\n futureStepsClickable?: boolean;\n stepScreenReaderLabel: string;\n}\n\nexport const BaseWizardSteps = React.forwardRef<HTMLDivElement, Props>(\n (\n {\n steps,\n currentStepNo,\n onClick,\n futureStepsClickable = false,\n stepScreenReaderLabel,\n ...rest\n }: Props,\n ref\n ) => {\n const getStepState = (stepNo: number): StepState => {\n if (currentStepNo === stepNo) {\n return 'current';\n } else if (stepNo < currentStepNo) {\n return 'finished';\n }\n return 'future';\n };\n\n const getStepContent = (stepState: StepState, index: number, disabled?: boolean) => {\n const stepNumberString = String(index + 1);\n if (stepState === 'finished') {\n return disabled ? null : <Icon className={classes['checkmark']} icon={Icons.Checkmark} />;\n } else {\n return (\n <Fragment>\n <span className={readyclasses['sr-only']}>{stepScreenReaderLabel} </span>\n {stepNumberString}\n </Fragment>\n );\n }\n };\n\n const generatedSteps = steps.map((step, index) => {\n const stepState = getStepState(index);\n const disabledStyleClassName = step.disabled ? classes['disabled'] : '';\n const clickableClassName = futureStepsClickable ? classes['clickable'] : '';\n\n return (\n <button\n key={step.label.toLowerCase().replace(/\\s/, '-')}\n disabled={\n step.disabled ||\n (stepState === 'future' && !futureStepsClickable) ||\n stepState === 'current'\n }\n aria-current={stepState === 'current' ? 'step' : undefined}\n onClick={() => onClick && onClick(index)}\n className={`${classes['wizard-element']} ${classes[stepState]} ${clickableClassName} ${disabledStyleClassName}`}\n >\n <div className={classes['number-wrapper']}>\n <span className={classes['number']}>\n {getStepContent(stepState, index, step.disabled)}\n </span>\n </div>\n <div className={classes['two-line-text-overflow']}>\n <span className={classes['label']}>{step.label}</span>\n </div>\n </button>\n );\n });\n\n return (\n <div {...rest} ref={ref} className={classes['wizard']}>\n {generatedSteps}\n </div>\n );\n }\n);\n","import React, { ComponentPropsWithRef, useContext } from 'react';\nimport { WizardStateContext } from '../WizardStateProvider';\nimport { BaseWizardSteps } from '../BaseWizardSteps/BaseWizardSteps';\nimport { changeCurrentStepNo } from '../wizardStateReducer';\n\nexport interface Props extends ComponentPropsWithRef<'div'> {\n onStepClick: (currentStepNo: number, selectedStepNo: number) => boolean;\n}\n\nexport const WizardSteps = React.forwardRef<HTMLDivElement, Props>(\n ({ onStepClick, ...rest }: Props, ref) => {\n const {\n state: { currentStepNo, mode, stepScreenReaderLabel, steps },\n dispatch,\n } = useContext(WizardStateContext);\n\n const onClick = (selectedStepNo: number) => {\n onStepClick(currentStepNo, selectedStepNo) && dispatch(changeCurrentStepNo(selectedStepNo));\n };\n\n return (\n <BaseWizardSteps\n {...rest}\n ref={ref}\n onClick={onClick}\n steps={steps}\n currentStepNo={currentStepNo}\n stepScreenReaderLabel={stepScreenReaderLabel}\n futureStepsClickable={mode === 'edit'}\n />\n );\n }\n);\n","import React, { ComponentPropsWithRef, Fragment } from 'react';\nimport { Icon, Icons } from '../../Icon/Icon';\nimport { ColumnName, Direction } from '../datagrid.interfaces';\nimport classes from './DataGridHeaderCell.module.scss';\n\nexport interface Props extends ComponentPropsWithRef<'th'> {\n headline: string;\n name: ColumnName;\n disableSorting?: boolean;\n activeSortDirection?: Direction;\n onSort?: (name: ColumnName) => void;\n}\n\nconst ariaSortMapping = {\n ASC: 'ascending',\n DESC: 'descending',\n} as const;\n\nexport const DataGridHeaderCell = React.forwardRef<HTMLTableCellElement, Props>(\n ({ headline, name, disableSorting, activeSortDirection, onSort, ...rest }: Props, ref) => {\n const onCellClick = () => {\n onSort && onSort(name);\n };\n\n const sortingIndicator = () => {\n const getSortingIndicatorClasses = (direction: Direction) => {\n const sortingIndicatorClasses = [classes['indicator']];\n activeSortDirection &&\n sortingIndicatorClasses.push(\n activeSortDirection === direction ? classes['active'] : classes['hidden']\n );\n return sortingIndicatorClasses;\n };\n\n return (\n <Fragment>\n <Icon className={getSortingIndicatorClasses('ASC').join(' ')} icon={Icons.TriangleUp} />\n <Icon\n className={getSortingIndicatorClasses('DESC').join(' ')}\n icon={Icons.TriangleDown}\n />\n </Fragment>\n );\n };\n\n const innerContent = (\n <Fragment>\n <span className={classes['headline']}>{headline}</span>\n {!disableSorting && (\n <div className={classes['sorting-indicator-container']}>{sortingIndicator()}</div>\n )}\n </Fragment>\n );\n\n return (\n <th\n {...rest}\n ref={ref}\n className={classes['header-cell']}\n aria-sort={activeSortDirection && ariaSortMapping[activeSortDirection]}\n >\n {disableSorting ? (\n <div key={name}>{innerContent}</div>\n ) : (\n <button key={name} onClick={onCellClick}>\n {innerContent}\n </button>\n )}\n </th>\n );\n }\n);\n","import React, { ComponentPropsWithRef, useEffect, useState } from 'react';\nimport { ColumnName, Direction, HeaderCell, OnSortFunction, Sort } from '../datagrid.interfaces';\nimport { DataGridHeaderCell } from './DataGridHeaderCell';\nimport classes from './DataGridHeader.module.scss';\n\nexport interface Props extends ComponentPropsWithRef<'thead'> {\n headers: HeaderCell[];\n initialSort?: Sort;\n onSort?: OnSortFunction;\n disableContextMenuColumn?: boolean;\n enableMultiSorting?: boolean;\n spacing?: React.CSSProperties;\n}\n\nconst sortingStates = [undefined, 'ASC', 'DESC'] as (Direction | undefined)[];\n\nexport const DataGridHeader = React.forwardRef<HTMLTableSectionElement, Props>(\n (\n {\n initialSort,\n onSort,\n headers,\n disableContextMenuColumn,\n enableMultiSorting,\n spacing,\n ...rest\n }: Props,\n ref\n ) => {\n const [sortList, setSortList] = useState(initialSort || []);\n\n useEffect(() => {\n setSortList(initialSort || []);\n }, [initialSort]);\n\n const calculateNextSortState = (direction?: Direction) => {\n const currentDirectionIdx = sortingStates.findIndex((item) => item === direction);\n return sortingStates[currentDirectionIdx + (1 % sortingStates.length)];\n };\n\n /**\n * The sortList contains sorting columns objects. The order of those objects determinates priorities of sorting.\n * Last modified sorting column has the highest priority.\n */\n const updateSortList = (name: ColumnName): Sort => {\n const current = sortList.find((item) => item.name === name);\n const restSortList = enableMultiSorting ? sortList.filter((item) => item.name !== name) : [];\n const newSortDirection = calculateNextSortState(current?.direction);\n return newSortDirection\n ? [{ name, direction: newSortDirection }, ...restSortList]\n : restSortList;\n };\n\n const wrapOnSort = (name: ColumnName) => {\n const newSort = updateSortList(name);\n onSort && onSort(newSort);\n setSortList(newSort);\n };\n\n const headerCells = headers.map((header, index) => {\n if (header.hidden) {\n return null;\n }\n\n let headerStyle: React.CSSProperties = {};\n\n if (index === 0) {\n headerStyle.paddingLeft = spacing?.paddingLeft;\n }\n if (index === headers.length - 1 && disableContextMenuColumn) {\n headerStyle.paddingRight = spacing?.paddingRight;\n }\n\n const sort = sortList.find((item) => item.name === header.name);\n return (\n <DataGridHeaderCell\n key={header.name}\n name={header.name}\n headline={header.headline}\n disableSorting={header.disableSorting || !onSort}\n onSort={wrapOnSort}\n activeSortDirection={sort?.direction}\n style={headerStyle}\n />\n );\n });\n\n return (\n <thead {...rest} ref={ref} className={classes['thead']}>\n <tr className={classes['row']}>\n {headerCells}\n {!disableContextMenuColumn && (\n <td\n style={{ paddingRight: spacing?.paddingRight }}\n aria-label=\"context menu\"\n className={classes['context-menu']}\n ></td>\n )}\n </tr>\n </thead>\n );\n }\n);\n","import React, { Fragment, useState } from 'react';\nimport { IconButton } from '../../Button/IconButton';\nimport { Toggle } from '../../Form/Toggle/Toggle';\nimport { Icon, Icons } from '../../Icon/Icon';\nimport { Popover, Props as PopoverProps } from '../../Popover/Popover';\nimport { Typography } from '../../Typography/Typography';\nimport { generateID } from '../../util/helper';\nimport { ColumnName, HeaderCell } from '../datagrid.interfaces';\nimport classes from './DataGridColumnsToggle.module.scss';\nimport { createPortal } from 'react-dom';\n\nexport interface Props extends PopoverProps {\n open: boolean;\n headers: HeaderCell[];\n titleLabel?: string;\n closeButtonTitle?: string;\n onClose: () => void;\n onToggleClicked: (colName: ColumnName) => void;\n domRoot?: HTMLElement;\n}\n\nexport const DataGridColumnsToggle = React.forwardRef<HTMLDivElement, Props>(\n (\n {\n open,\n headers,\n titleLabel = 'Show columns',\n closeButtonTitle = 'Close show columns dialog',\n onClose,\n onToggleClicked,\n className,\n domRoot = document.body,\n ...rest\n }: Props,\n ref\n ) => {\n const [id] = useState(generateID());\n const labelledId = id + '_header';\n\n const toggles = headers.map((item) => (\n <Toggle\n key={item.name}\n name={item.name}\n checked={!item.hidden}\n onChange={() => onToggleClicked(item.name)}\n >\n {item.headline}\n </Toggle>\n ));\n\n const handleBackdropClick = () => onClose();\n\n return (\n <Popover\n {...rest}\n ref={ref}\n className={`${classes['popover']} ${className}`}\n show={open}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby={labelledId}\n >\n {open &&\n createPortal(\n <div className={classes['backdrop']} onClick={handleBackdropClick}></div>,\n domRoot\n )}\n {open && (\n <Fragment>\n <div className={classes['header']}>\n <Typography id={labelledId} className={classes['title']} tag=\"span\" variant=\"h4\">\n {titleLabel}\n </Typography>\n <IconButton\n onClick={onClose}\n className={`${classes['close-btn']}`}\n title={closeButtonTitle}\n >\n <Icon icon={Icons.Times} />\n </IconButton>\n </div>\n <div className={classes['content']}>{toggles}</div>\n </Fragment>\n )}\n </Popover>\n );\n }\n);\n","import React, { ComponentPropsWithRef, Fragment, useRef, useState } from 'react';\nimport { Button, Props as ButtonProps } from '../../Button/Button';\nimport { IconButton } from '../../Button/IconButton';\nimport { Icon, Icons } from '../../Icon/Icon';\nimport { HeaderCell, ColumnName } from '../datagrid.interfaces';\nimport classes from './DataGridActions.module.scss';\nimport { DataGridColumnsToggle } from './DataGridColumnsToggle';\n\nexport interface Props extends ComponentPropsWithRef<'div'> {\n enableAddBtn?: boolean;\n enableColumnsBtn?: boolean;\n enableSearchBtn?: boolean;\n addBtnProps?: ButtonProps;\n columnsBtnProps?: ButtonProps;\n searchBtnProps?: ButtonProps;\n headers: HeaderCell[];\n onColumnToggled: (colName: ColumnName) => void;\n}\n\nexport const DataGridActions = React.forwardRef<HTMLDivElement, Props>(\n (\n {\n className,\n enableAddBtn,\n enableColumnsBtn,\n enableSearchBtn,\n addBtnProps = {},\n columnsBtnProps = {},\n searchBtnProps = {},\n headers,\n onColumnToggled,\n ...rest\n }: Props,\n ref\n ) => {\n const isHidden = !(enableAddBtn || enableColumnsBtn || enableSearchBtn);\n const [showColsPopover, setShowColsPopover] = useState(false);\n const showColumnBtn = useRef<HTMLButtonElement>(null);\n\n return isHidden ? null : (\n <div {...rest} ref={ref} className={`${classes['actions']} ${className ?? ''}`}>\n <div className={classes['left-actions']}>\n {enableAddBtn && (\n <Button\n color=\"primary\"\n startIcon={<Icon icon={Icons.Plus} />}\n title=\"Add item\"\n type=\"button\"\n variant=\"outline\"\n children=\"Add item\"\n {...addBtnProps}\n />\n )}\n </div>\n <div className={classes['right-actions']}>\n {enableColumnsBtn && (\n <Fragment>\n <Button\n startIcon={<Icon icon={Icons.Change} />}\n title=\"Show/hide columns\"\n variant=\"text\"\n children=\"Columns\"\n {...columnsBtnProps}\n className={`${classes['desktop']} ${columnsBtnProps?.className ?? ''}`}\n ref={showColumnBtn}\n onClick={() => setShowColsPopover(true)}\n />\n <IconButton\n title=\"Show/hide columns\"\n {...columnsBtnProps}\n onClick={() => setShowColsPopover(true)}\n className={`${classes['mobile']} ${columnsBtnProps?.className ?? ''}`}\n >\n <Icon icon={Icons.Change} />\n </IconButton>\n <DataGridColumnsToggle\n aria-hidden={!showColsPopover}\n open={showColsPopover}\n headers={headers}\n onClose={() => setShowColsPopover(false)}\n onToggleClicked={onColumnToggled}\n anchorEl={showColumnBtn}\n />\n </Fragment>\n )}\n {enableSearchBtn && (\n <Fragment>\n <Button\n startIcon={<Icon icon={Icons.TableSearch} />}\n title=\"Search\"\n variant=\"text\"\n children=\"Search\"\n {...searchBtnProps}\n className={`${classes['desktop']} ${searchBtnProps?.className ?? ''}`}\n />\n <IconButton\n title=\"Search\"\n {...searchBtnProps}\n className={`${classes['mobile']} ${columnsBtnProps?.className ?? ''}`}\n >\n <Icon icon={Icons.TableSearch} />\n </IconButton>\n </Fragment>\n )}\n </div>\n </div>\n );\n }\n);\n","import React, { ComponentPropsWithRef, ReactChild } from 'react';\nimport { Typography } from '../../Typography/Typography';\nimport classes from './DataGridCell.module.scss';\n\nexport interface Props extends ComponentPropsWithRef<'td'> {\n children?: ReactChild;\n isLoading?: boolean;\n spacing?: React.CSSProperties;\n cellIndex?: number;\n columnLength?: number;\n disableContextMenuColumn?: boolean;\n}\n\nexport const DataGridCell = React.forwardRef<HTMLTableCellElement, Props>(\n (\n {\n children,\n className,\n isLoading,\n spacing,\n cellIndex,\n columnLength,\n disableContextMenuColumn,\n ...rest\n }: Props,\n ref\n ) => {\n let cellStyle: React.CSSProperties = {};\n\n if (cellIndex === 0) {\n cellStyle.paddingLeft = spacing?.paddingLeft;\n }\n if (\n (cellIndex === columnLength && !disableContextMenuColumn) ||\n (columnLength && cellIndex === columnLength - 1 && disableContextMenuColumn)\n ) {\n cellStyle.paddingRight = spacing?.paddingRight;\n }\n\n return (\n <td\n {...rest}\n ref={ref}\n style={{ ...rest.style, ...cellStyle }}\n className={`${classes['cell']} ${className ?? ''}`}\n >\n {isLoading && (\n <div className={classes['loading']} aria-busy=\"true\" aria-live=\"polite\"></div>\n )}\n {!isLoading && (\n <Typography variant=\"body\" tag=\"span\">\n {children}\n </Typography>\n )}\n </td>\n );\n }\n);\n","import React, { ComponentPropsWithRef } from 'react';\nimport { HeaderCell } from '../datagrid.interfaces';\nimport classes from './DataGridRow.module.scss';\n\nexport interface Props extends ComponentPropsWithRef<'tr'> {\n headers?: HeaderCell[];\n isLoading?: boolean;\n spacing?: React.CSSProperties;\n disableContextMenuColumn?: boolean;\n}\n\nexport const DataGridRow = React.forwardRef<HTMLTableRowElement, Props>(\n (\n { children, className, headers, isLoading, spacing, disableContextMenuColumn, ...rest }: Props,\n ref\n ) => {\n const visibleCells = React.Children.map(children as React.ReactElement[], (child, index) => {\n if (child) {\n const cellWithSpacing = React.cloneElement(child, {\n spacing: spacing,\n cellIndex: index,\n columnLength: headers?.length,\n disableContextMenuColumn,\n });\n\n const visible = headers?.length! > index ? !headers![index].hidden : true;\n return visible && cellWithSpacing;\n }\n return null;\n });\n\n const classNames = [classes['row']];\n className && classNames.push(className);\n isLoading && classNames.push(classes['loading']);\n\n return (\n <tr {...rest} ref={ref} className={classNames.join(' ')}>\n {visibleCells}\n </tr>\n );\n }\n);\n","import React, { ComponentPropsWithRef, ReactElement, Ref } from 'react';\nimport { HeaderCell } from '../datagrid.interfaces';\nimport { DataGridCell } from './DataGridCell';\nimport { DataGridRow } from './DataGridRow';\nimport classes from './DataGridBody.module.scss';\nimport { Typography } from '../../Typography/Typography';\n\nexport interface Props<T> extends ComponentPropsWithRef<'tbody'> {\n children: ({ item, index }: { item: T; index: number }) => ReactElement;\n data?: T[];\n headers: HeaderCell[];\n isLoading?: boolean;\n disableContextMenuColumn?: boolean;\n emptyLabel?: string;\n spacing?: React.CSSProperties;\n}\n\nconst skeletonLoadingRows = 9;\n\nconst DataGridBodyInner = <T extends {}>(\n {\n children,\n data,\n headers,\n isLoading,\n disableContextMenuColumn,\n emptyLabel,\n spacing,\n ...rest\n }: Props<T>,\n ref: Ref<HTMLTableSectionElement>\n) => {\n const renderContent = () => {\n const visibleColumns = headers.filter((header) => !header.hidden).length;\n if (isLoading) {\n return Array.from(Array(skeletonLoadingRows)).map((_, rowIdx) => (\n <DataGridRow key={rowIdx} isLoading>\n {Array.from(Array(visibleColumns)).map((__, colIdx) => (\n <DataGridCell key={colIdx} isLoading></DataGridCell>\n ))}\n {!disableContextMenuColumn && <DataGridCell></DataGridCell>}\n </DataGridRow>\n ));\n }\n\n const emptyData = !data || data.length === 0;\n if (emptyData) {\n return (\n <tr>\n <td\n className={classes['empty']}\n colSpan={visibleColumns + (disableContextMenuColumn ? 0 : 1)}\n >\n <Typography variant=\"body\" spacing={{ margin: 0 }}>\n {emptyLabel}\n </Typography>\n </td>\n </tr>\n );\n }\n\n return data?.map((item, index) => {\n return React.cloneElement(children({ item, index }), {\n headers,\n spacing,\n disableContextMenuColumn,\n });\n });\n };\n\n return (\n <tbody {...rest} ref={ref}>\n {renderContent()}\n </tbody>\n );\n};\n\nexport const DataGridBody = React.forwardRef(DataGridBodyInner) as <T extends {}>(\n p: Props<T> & { ref?: Ref<HTMLTableSectionElement> }\n) => ReactElement;\n","import React, { ComponentPropsWithRef, ReactElement, Ref, useEffect, useState } from 'react';\nimport { Props as ButtonProps } from '../Button/Button';\nimport classes from './DataGrid.module.scss';\nimport { DataGridHeader } from './DataGridHeader/DataGridHeader';\nimport { DataGridActions } from './DataGridActions/DataGridActions';\nimport { DataGridBody } from './DataGridBody/DataGridBody';\nimport { ColumnName, HeaderCell, OnSortFunction, Sort } from './datagrid.interfaces';\nimport { Pagination, Props as PaginationProps } from '../Pagination/Pagination';\nimport { Spacing, useSpacing } from '../hooks/useSpacing';\n\nexport interface Props<T> extends ComponentPropsWithRef<'div'> {\n children: ({ item, index }: { item: T; index: number }) => ReactElement;\n data?: T[];\n initialSort?: Sort;\n onSort?: OnSortFunction;\n headers: HeaderCell[];\n actions?: {\n enableAddBtn?: boolean;\n enableColumnsBtn?: boolean;\n enableSearchBtn?: boolean;\n addBtnProps?: ButtonProps;\n columnsBtnProps?: ButtonProps;\n searchBtnProps?: ButtonProps;\n };\n emptyLabel?: string;\n paginationProps?: PaginationProps;\n disableContextMenuColumn?: boolean;\n isLoading?: boolean;\n enableMultiSorting?: boolean;\n spacing?: Spacing;\n}\n\nconst DataGridInner = <T extends {}>(\n {\n children,\n data,\n initialSort,\n onSort,\n headers,\n actions = {},\n paginationProps,\n disableContextMenuColumn,\n isLoading,\n enableMultiSorting,\n emptyLabel,\n spacing,\n style,\n ...rest\n }: Props<T>,\n ref: Ref<HTMLDivElement>\n) => {\n if (!headers) {\n throw new Error('Headers definition has to be provided');\n }\n if (!children) {\n throw new Error('DataGridBody should be provieded with a template how to render rows');\n }\n\n const [internalHeaders, setInternalHeaders] = useState(headers);\n const styleWithSpacing = useSpacing(spacing, style);\n\n useEffect(() => setInternalHeaders(headers), [headers]);\n\n const onColumnToggled = (colName: ColumnName) => {\n setInternalHeaders(\n internalHeaders.map((item) =>\n item.name !== colName ? item : { ...item, hidden: !item.hidden }\n )\n );\n };\n\n if (styleWithSpacing?.padding) {\n const splitPaddings = styleWithSpacing.padding.toString().split(' ');\n\n let paddingLeftIndex: number = 0;\n\n if (splitPaddings.length >= 2) {\n paddingLeftIndex = 1;\n }\n if (splitPaddings.length === 4) {\n paddingLeftIndex = 3;\n }\n\n Object.defineProperties(styleWithSpacing, {\n paddingTop: {\n value: splitPaddings[0],\n },\n paddingRight: {\n value: splitPaddings[splitPaddings.length - 1 > 0 ? 1 : 0],\n },\n paddingBottom: {\n value: splitPaddings[splitPaddings.length / 3 >= 1 ? 2 : 0],\n },\n paddingLeft: {\n value: splitPaddings[paddingLeftIndex],\n },\n });\n }\n\n return (\n <div\n {...rest}\n className={classes['grid-wrapper']}\n ref={ref}\n style={{\n paddingTop: styleWithSpacing?.paddingTop,\n paddingBottom: styleWithSpacing?.paddingBottom,\n }}\n >\n <DataGridActions\n {...actions}\n style={{\n paddingLeft: styleWithSpacing?.paddingLeft,\n paddingRight: styleWithSpacing?.paddingRight,\n }}\n headers={internalHeaders}\n onColumnToggled={onColumnToggled}\n />\n <div className={classes['table-wrapper']}>\n <table className={classes['table']}>\n <DataGridHeader\n headers={internalHeaders}\n initialSort={initialSort}\n onSort={onSort}\n disableContextMenuColumn={disableContextMenuColumn}\n enableMultiSorting={enableMultiSorting}\n spacing={styleWithSpacing}\n />\n <DataGridBody\n children={children}\n data={data}\n headers={internalHeaders}\n isLoading={isLoading}\n disableContextMenuColumn={disableContextMenuColumn}\n emptyLabel={emptyLabel}\n spacing={styleWithSpacing}\n />\n </table>\n </div>\n {paginationProps && !isLoading && (\n <Pagination\n {...paginationProps}\n style={{\n ...paginationProps.style,\n paddingLeft: styleWithSpacing?.paddingLeft,\n paddingRight: styleWithSpacing?.paddingRight,\n }}\n className={`${classes['pagination']} ${paginationProps.className ?? ''}`}\n />\n )}\n </div>\n );\n};\n\nexport const DataGrid = React.forwardRef(DataGridInner) as <T extends {}>(\n p: Props<T> & { ref?: Ref<HTMLDivElement> }\n) => ReactElement;\n","import React, { Fragment, useState } from 'react';\nimport { Modal, Props as ModalProps } from '../Modal/Modal';\nimport { ModalHeader, Props as ModalHeaderProps } from '../Modal/ModalHeader/ModalHeader';\nimport {\n DiscardChangesDialog,\n Props as DiscardChangesDialogProps,\n} from './DiscardChangesDialog/DiscardChangesDialog';\n\nexport interface Props extends Omit<ModalProps, 'onClose'> {\n hasUnsavedChanges: () => boolean;\n onClose: (event?: React.MouseEvent<HTMLElement>) => unknown;\n headerProps: Omit<ModalHeaderProps, 'onClose' | 'id'>;\n discardChangedDialogProps: Omit<\n DiscardChangesDialogProps,\n 'open' | 'onKeepEditing' | 'onDiscardChanges'\n >;\n modalRef?: React.RefObject<HTMLDivElement>;\n dialogRef?: React.RefObject<HTMLDivElement>;\n}\n\nexport const DiscardChangesModal = ({\n id,\n children,\n headerProps,\n discardChangedDialogProps,\n modalRef,\n dialogRef,\n onClose,\n hasUnsavedChanges,\n ...rest\n}: Props) => {\n const [openDiscardChangesDialog, setOpenDiscardChangesDialog] = useState(false);\n\n const onCloseWrapper = () =>\n hasUnsavedChanges() ? setOpenDiscardChangesDialog(true) : onClose();\n\n const onDialogKeepEditing = () => {\n setOpenDiscardChangesDialog(false);\n };\n\n const onDialogDiscardChanges = () => {\n setOpenDiscardChangesDialog(false);\n onClose();\n };\n\n return (\n <Fragment>\n <Modal id={id} ref={modalRef} onClose={onCloseWrapper} {...rest}>\n <ModalHeader {...headerProps} id={`${id}-label`} onClose={onCloseWrapper} />\n {children}\n </Modal>\n <DiscardChangesDialog\n {...discardChangedDialogProps}\n ref={dialogRef}\n open={openDiscardChangesDialog}\n onKeepEditing={onDialogKeepEditing}\n onDiscardChanges={onDialogDiscardChanges}\n />\n </Fragment>\n );\n};\n","import React, { HTMLProps, ReactNode } from 'react';\nimport classes from './Form.module.scss';\n\nexport interface Props extends HTMLProps<HTMLFormElement> {\n children?: ReactNode;\n}\n\nexport const Form = ({ children, className, ...rest }: Props) => {\n return (\n <form className={`${classes.form} ${className ?? ''}`} {...rest}>\n {children}\n </form>\n );\n};\n","import React, { ReactNode, useState } from 'react';\nimport { createPortal } from 'react-dom';\nimport { SnackbarContextProvider } from './SnackbarStateProvider';\nimport { Actions, SnackbarOptionsProps, Variant } from '../interfaces';\nimport { Placement, SnackbarContainer } from '../SnackbarContainer/SnackbarContainer';\nimport { generateID } from '../../../util/helper';\nimport { SnackbarItem } from '../SnackbarItem/SnackbarItem';\n\n/** Short msg is when only title is provided. Long one when content or/and actions are provided (or type is error). */\ninterface Duration {\n long: number;\n short: number;\n}\n\nexport interface Props {\n closeButtonTitle: string;\n children?: ReactNode;\n placement?: Placement;\n stackSize?: number;\n domRoot?: HTMLElement;\n autoHideDuration?: Duration;\n className?: string;\n}\n\ninterface Item {\n id: string;\n title: string;\n duration: number;\n variant: Variant;\n content?: string;\n actions?: Actions;\n}\n\nexport const SnackbarProvider = (\n {\n closeButtonTitle,\n placement = { vertical: 'bottom', horizontal: 'center' },\n autoHideDuration = { long: 8000, short: 4000 },\n stackSize = 3,\n domRoot = document.body,\n children,\n className,\n }: Props = { closeButtonTitle: '' }\n) => {\n const [snackbars, setSnackbars] = useState<Item[]>([]);\n\n const addSnackbar = (item: Item) => {\n setSnackbars((items) => [...items, item]);\n };\n\n const getDuration = (variant: Variant, actions?: Actions, content?: string) => {\n const hasError = variant === 'error';\n const hasContentOrActions = content || actions;\n if (hasError || hasContentOrActions) {\n return autoHideDuration.long;\n }\n return autoHideDuration.short;\n };\n\n const enqueueSnackbar = (\n title: string,\n content?: string,\n options: SnackbarOptionsProps = {}\n ): void => {\n const {\n variant = 'info',\n actions,\n duration = getDuration(variant, actions, content),\n } = options;\n const item: Item = {\n title,\n content,\n variant,\n actions,\n duration,\n id: generateID(15, title),\n };\n addSnackbar(item);\n };\n\n const enqueueSuccessSnackbar = (\n title: string,\n content?: string,\n options?: SnackbarOptionsProps\n ): void => {\n enqueueSnackbar(title, content, { ...options, variant: 'success' });\n };\n\n const enqueueErrorSnackbar = (\n title: string,\n content?: string,\n options?: SnackbarOptionsProps\n ): void => {\n enqueueSnackbar(title, content, { ...options, variant: 'error' });\n };\n\n const onItemClosed = (id: string) => {\n setSnackbars((items) => [...items].filter((item) => item.id !== id));\n };\n\n const snackbarList = snackbars.map((item, index) =>\n index < stackSize ? (\n <SnackbarItem\n {...item}\n key={item.id}\n onClose={onItemClosed}\n closeButtonTitle={closeButtonTitle}\n />\n ) : null\n );\n\n const snackbarPortal = createPortal(\n <SnackbarContainer placement={placement} className={className}>\n {snackbarList}\n </SnackbarContainer>,\n domRoot\n );\n\n return (\n <SnackbarContextProvider\n initialState={{ enqueueSnackbar, enqueueSuccessSnackbar, enqueueErrorSnackbar }}\n >\n {children}\n {snackbarPortal}\n </SnackbarContextProvider>\n );\n};\n","import React from 'react';\n\nexport interface Props {\n title: string;\n children?: React.ReactNode;\n selected?: boolean;\n focussed?: boolean;\n buttonRef?: React.RefObject<HTMLButtonElement>;\n panelRef?: React.RefObject<HTMLDivElement>;\n onTabButtonClick?: () => void;\n}\n\nexport const Tab = (args: Props) => {\n return (\n <div {...args}>{`A <Tab /> component should only be used inside the <Tabs /> component.`}</div>\n );\n};\n","import React, {\n ComponentPropsWithRef,\n createRef,\n MutableRefObject,\n useEffect,\n useRef,\n useState,\n} from 'react';\nimport { generateID } from '../util/helper';\nimport { Props as TabProps } from './Tab';\nimport { TabButton } from './TabButton';\nimport { TabPanel } from './TabPanel';\nimport classes from './Tabs.module.scss';\n\nexport interface Props extends ComponentPropsWithRef<'div'> {\n children: React.ReactElement<TabProps> | React.ReactElement<TabProps>[];\n selected?: number;\n 'aria-label'?: string;\n onTabChange?: (index: number) => void;\n}\n\nexport const Tabs = ({\n children,\n selected = 0,\n 'aria-label': ariaLabel,\n onTabChange,\n className,\n ...rest\n}: Props) => {\n const indicatorRef = useRef<HTMLDivElement>(null);\n const [indicatorPosition, setIndicatorPosition] = useState({ left: 0, top: 0 });\n const [indicatorWidth, setIndicatorWidth] = useState(0);\n\n const [max] = useState(React.Children.count(children) - 1);\n const min = 0;\n\n const [selectedTab, setSelectedTab] = useState(Math.min(max, Math.max(min, selected)));\n const [focussedTab, setFocussedTab] = useState(-1);\n const [tabIds] = useState([...Array(max)].map(() => generateID()));\n const [tabPanelIds] = useState([...Array(max)].map(() => generateID()));\n\n useEffect(() => {\n setSelectedTab(Math.min(max, Math.max(min, selected)));\n setFocussedTab(-1);\n }, [selected]);\n\n useEffect(() => {\n calculateIndicatorPosition();\n }, [selectedTab]);\n\n const calculateIndicatorPosition = () => {\n const selectedTabButton = (\n tabButtons[selectedTab].ref as MutableRefObject<HTMLButtonElement | null>\n ).current as HTMLButtonElement;\n\n setIndicatorPosition({\n left: selectedTabButton.offsetLeft,\n top:\n selectedTabButton.offsetTop +\n selectedTabButton.offsetHeight -\n indicatorRef.current!.offsetHeight,\n });\n setIndicatorWidth(selectedTabButton.offsetWidth);\n };\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLElement>) => {\n // do not show focus unless we came here before\n let currentFocussedTab = focussedTab === -1 ? selectedTab : focussedTab;\n\n switch (e.code) {\n case 'ArrowLeft':\n setFocussedTab(currentFocussedTab === min ? max : currentFocussedTab - 1);\n break;\n case 'ArrowRight':\n setFocussedTab(currentFocussedTab === max ? min : currentFocussedTab + 1);\n break;\n case 'Home':\n setFocussedTab(min);\n break;\n case 'End':\n setFocussedTab(max);\n break;\n case 'Space':\n case 'Enter':\n activateTab(currentFocussedTab);\n break;\n }\n };\n\n const handleBlur = () => {\n setFocussedTab(selectedTab);\n };\n\n const activateTab = (index: number) => {\n setSelectedTab(index);\n setFocussedTab(index);\n onTabChange && onTabChange(index);\n };\n\n const tabButtons = React.Children.map(children, (child, index) =>\n React.createElement(TabButton, {\n ref: child.props.buttonRef || createRef<HTMLButtonElement>(),\n key: generateID(),\n tabId: tabIds[index],\n tabPanelId: tabPanelIds[index],\n selected: selectedTab === index,\n focussed: focussedTab === index,\n onTabButtonClick: () => activateTab(index),\n children: child.props.title,\n })\n );\n\n const tabPanels = React.Children.map(children, (child, index) =>\n React.createElement(TabPanel, {\n ref: child.props.panelRef || createRef<HTMLDivElement>(),\n key: generateID(),\n selected: selectedTab === index,\n tabId: tabIds[index],\n tabPanelId: tabPanelIds[index],\n children: child.props.children,\n })\n );\n\n return (\n <div {...rest} className={`${classes['tabs']} ${className ?? ''}`}>\n <div\n role=\"tablist\"\n onKeyDown={handleKeyDown}\n onBlur={handleBlur}\n aria-label={ariaLabel}\n className={classes['tablist']}\n >\n <div className={classes['tabdivider']} />\n {tabButtons}\n <div\n className={classes['indicator']}\n ref={indicatorRef}\n aria-hidden=\"true\"\n tabIndex={-1}\n style={{\n width: indicatorWidth,\n ...indicatorPosition,\n }}\n />\n </div>\n <div className={classes['tabpanels']}>{tabPanels}</div>\n </div>\n );\n};\n","import React, { Fragment, useContext, useMemo } from 'react';\nimport { Button } from '../../Button/Button';\nimport { Step } from '../BaseWizardSteps/BaseWizardSteps';\nimport { WizardMode } from '../Wizard';\nimport { WizardStateContext } from '../WizardStateProvider';\nimport { changeCurrentStepNo } from '../wizardStateReducer';\n\nexport interface Props extends React.HTMLProps<HTMLDivElement> {\n cancelButtonLabel: string;\n previousButtonLabel: string;\n nextButtonLabel: string;\n saveAndCloseButtonLabel: string;\n onCancel: () => void;\n onNext: (currentStepNo: number) => boolean;\n onPrevious?: () => void;\n onSaveAndClose: (currentStepNo: number) => void;\n}\n\nconst calculateNextStepNo = (steps: Step[], currentStepNo: number) => () =>\n steps.findIndex((step, stepNo) => stepNo > currentStepNo && !step.disabled);\n\nconst calculatePrevStepNo = (steps: Step[], currentStepNo: number) => () => {\n const reversedCurrentStepNo = steps.length - 1 - currentStepNo;\n const reversedPrevStepNo = [...steps]\n .reverse()\n .findIndex((step, stepNo) => stepNo > reversedCurrentStepNo && !step.disabled);\n if (reversedPrevStepNo > 0) {\n return steps.length - 1 - reversedPrevStepNo;\n }\n return -1;\n};\n\nconst useNextStepNo = (mode: WizardMode, currentStepNo: number, steps: Step[]) =>\n useMemo(calculateNextStepNo(steps, currentStepNo), [mode, currentStepNo, steps]);\n\nconst usePreviousStepNo = (mode: WizardMode, currentStepNo: number, steps: Step[]) =>\n useMemo(calculatePrevStepNo(steps, currentStepNo), [mode, currentStepNo, steps]);\n\nexport const WizardActions = ({\n onCancel,\n onNext,\n onPrevious,\n onSaveAndClose,\n cancelButtonLabel,\n previousButtonLabel,\n nextButtonLabel,\n saveAndCloseButtonLabel,\n}: Props) => {\n const {\n state: { mode, steps, currentStepNo },\n dispatch,\n } = useContext(WizardStateContext);\n const nextStepNo = useNextStepNo(mode, currentStepNo, steps);\n const hasNextStep = nextStepNo !== -1;\n const previousStepNo = usePreviousStepNo(mode, currentStepNo, steps);\n const hasPreviousStep = previousStepNo !== -1;\n const isLastStepOrEditMode = !hasNextStep || mode === 'edit';\n\n const changeStepNo = (direction: 'forward' | 'backward') => {\n if (direction === 'forward') {\n hasNextStep && dispatch(changeCurrentStepNo(nextStepNo));\n } else {\n hasPreviousStep && dispatch(changeCurrentStepNo(previousStepNo));\n }\n };\n\n const onNextWrapper = () => {\n onNext(currentStepNo) && changeStepNo('forward');\n };\n\n const onPreviousWrapper = () => {\n onPrevious && onPrevious();\n changeStepNo('backward');\n };\n\n const onSaveAndCloseWrapper = () => {\n onSaveAndClose(currentStepNo);\n };\n\n return (\n <Fragment>\n <Button variant=\"text\" onClick={onCancel}>\n {cancelButtonLabel}\n </Button>\n {hasPreviousStep && (\n <Button variant=\"outline\" onClick={onPreviousWrapper}>\n {previousButtonLabel}\n </Button>\n )}\n {hasNextStep && (\n <Button variant={mode === 'edit' ? 'outline' : 'fill'} onClick={onNextWrapper}>\n {nextButtonLabel}\n </Button>\n )}\n {isLastStepOrEditMode && (\n <Button onClick={onSaveAndCloseWrapper}>{saveAndCloseButtonLabel}</Button>\n )}\n </Fragment>\n );\n};\n","import React, { useEffect, useState } from 'react';\nimport { generateID } from '../util/helper';\n\ninterface Arguments {\n componentToRepeat: React.ReactElement;\n}\n\nexport const useRepeater = <T>({ componentToRepeat }: Arguments) => {\n const [repeatedComponents, setRepeatedComponents] = useState<JSX.Element[]>([]);\n\n useEffect(() => {\n repeat();\n }, []);\n\n const repeat = () => {\n const clonedComponent = React.cloneElement(componentToRepeat, { key: generateID(20) });\n\n setRepeatedComponents((prevState) => [...prevState, clonedComponent]);\n };\n\n const remove = (componentToRemove: React.ReactElement<T>) => {\n const newRepeatedComponents = repeatedComponents.filter(\n (component) => component !== componentToRemove\n );\n\n setRepeatedComponents(newRepeatedComponents);\n };\n\n return {\n repeatedComponents,\n repeat,\n remove,\n };\n};\n","import { useContext } from 'react';\nimport { SnackbarContext } from './SnackbarProvider/SnackbarStateProvider';\n\nexport const useSnackbar = () => useContext(SnackbarContext);\n"],"names":["BaseStyling","e","t","n","r","document","a","s","prepend","d","singleTag","i","container","querySelector","getElementsByTagName","u","indexOf","push","c","charCodeAt","substring","styleSheet","cssText","appendChild","createTextNode","createElement","setAttribute","attributes","Object","keys","length","insertAdjacentElement","BaseButton","React","forwardRef","ref","children","_ref$type","_ref","type","className","rest","_objectWithoutPropertiesLoose","_excluded","includes","Error","classes","Button","_ref$variant","variant","_ref$color","color","_ref$startIcon","startIcon","_ref$endIcon","endIcon","additionalClasses","join","Icons","Icon","icon","style","size","_ref$tag","tag","_extends","fontSize","spacingNumberRegex","useSpacing","spacingProps","entries","reduce","prev","_extends2","spacing","matches","String","matchAll","cssSpacingValue","Array","from","map","_ref2","Number","validVariants","Typography","_ref$className","styleWithSpacing","Breadcrumbs","ariaLabel","items","Children","child","index","isArray","Fragment","key","cloneElement","ChevronRight","props","defaultConfigObject","relativeElement","undefined","elementToBePositioned","transformOrigin","horizontal","vertical","placement","offset","top","right","bottom","left","usePosition","providedConfigObject","configObject","_useState","useState","position","setPosition","_calculatePlacement","relEl","elDimensions","axis","_configObject$transfo","_configObject$transfo2","placementValue","requestedReturnValue","placementOriginDefinition","_determineCenteredPlacementOrigin","value","window","_calculateInitialPlacementValue","valueWithOffset","_configObject$offset","_configObject$offset2","_configObject$offset7","_configObject$offset8","_configObject$offset3","_configObject$offset4","_configObject$offset5","_configObject$offset6","_configObject$offset9","_configObject$offset10","_configObject$offset11","_configObject$offset12","returnValue","_applyOffsetToPlacementValue","valueCorrectionForViewportOverflow","innerWidth","width","innerHeight","height","_fixPossibleViewportOverflow","_calculatePlacementValue","direction","oppositeDirection","prevState","calculatePosition","_configObject$relativ","current","relativeElRect","getBoundingClientRect","elementToBePositionedDimensions","offsetHeight","offsetWidth","clonedRelEl","center","centerv","centerh","x","y","Popover","show","anchorEl","elToBePositioned","useRef","_usePosition","useEffect","useBodyClick","checkFunction","callbackFunction","dependingStateVariable","bodyClickListener","event","addEventListener","removeEventListener","ContextMenu","trigger","id","_ref$show","onShow","onClose","_ref$placement","_ref$offset","_ref$transformOrigin","_ref$domRoot","domRoot","body","showContextMenu","setShowContextMenu","_useState2","selectedContextMenuItem","setSelectedContextMenuItem","_useState3","focusedContextMenuItem","setFocusedContextMenuItem","shouldClick","_useState4","setShouldClick","childrenCount","count","target","focus","onKeyDown","code","preventDefault","onClick","tabIndex","createPortal","role","onFocusChange","childIndex","onSelectedChange","hasFocus","isSelected","contextMenuOpened","ContextMenuItem","innerButtonRef","createRef","click","Link","_ref$disabled","disabled","to","_ref$display","display","_ref$buttonVariant","buttonVariant","component","classNames","download","rel","href","IconButton","_ref$iconSize","iconSize","title","console","error","iconButtonClasses","readyclasses","generateID","stringToWeaveIn","hashCharacters","test","Math","floor","random","slice","filterProps","regexPattern","returnFiltered","acc","filter","prevObj","currKeyValPair","TabButton","_ref$selected","selected","_ref$focussed","focussed","tabId","tabPanelId","onTabButtonClick","TabPanel","hidden","TextEllipsis","popoverClassName","showPopover","setShowPopover","textContainer","ellipsisVisible","scrollWidth","onMouseEnter","onMouseLeave","Tile","imageProps","enabled","loading","tileAction","tileDescriptionID","justifyContent","Checkmark","Forbidden","readyClasses","src","alt","Image","Tiles","_ref$loading","defaultPosition","Tooltip","label","identifier","visible","setVisible","escapePressHandler","useLayoutEffect","isValidElement","onFocus","onBlur","InfoCircle","Skeleton","StatusIndicator","_badgeProps$className","status","badgeProps","typographyProps","margin","dateTypes","Input","_ref$error","name","wrapperProps","labeledBy","prefix","suffix","setFocus","inputClassNames","iconClassNames","wrapperClasses","Select","placeholder","describedBy","_ref$searchPlaceholde","searchPlaceholder","searchInputProps","selectButtonProps","_ref$clearLabel","clearLabel","onChange","onClear","expanded","setExpanded","opacity","setOpacity","setFilter","setDisplay","listPosition","_useState5","setListPosition","optionsListMaxHeight","_useState6","setOptionsListMaxHeight","containerReference","optionListReference","isSearching","_useState7","setIsSearching","_useState8","focusedSelectItem","setFocusedSelectItem","_useState9","nativeSelect","searchInputRef","val","forEach","listHeight","availableSpace","calculateOptionListMaxHeight","rePositionList","closest","_searchInputProps$wra","internalChildren","codesToPreventDefault","Warning","stopPropagation","TimesThin","TriangleDown","maxHeight","autoFocus","currentTarget","toArray","toLowerCase","match","onOptionSelect","optionRef","getAttribute","dispatchEvent","Event","bubbles","onOptionChangeHandler","selectOpened","Option","_ref$isSelected","innerOptionRef","onSelectHandler","onKeyDownCapture","DefaultTranslations","Label","_ref$hidden","Pagination","amountOfPages","totalElements","_ref$pageSize","pageSize","_ref$translate","translate","currentPage","onPageChange","onPageSizeChange","toString","internalCurrentPage","setInternalCurrentPage","calculateAmountOfPages","ceil","onEnterListener","onPageChangeHandler","pageToGoTo","totalItems","itemsPerPage","pageSizeNumber","NavigationFirst","ChevronLeft","split","string","htmlFor","currentPageLabel","max","onKeyUp","replace","NavigationLast","labelId","descriptionId","BaseModal","_backdropProps$classN","_containerProps$class","_containerProps$class2","open","containerProps","backdropProps","labelledby","describedby","_ref$disableEscapeKey","disableEscapeKeyDown","_ref$disableBackdrop","disableBackdrop","_ref$forceContainerOp","forceContainerOpen","zIndex","querySelectorAll","removeProperty","useSetBodyScroll","SnackbarContext","createContext","enqueueSnackbar","enqueueSuccessSnackbar","enqueueErrorSnackbar","SnackbarContextProvider","Provider","initialState","BaseModalContent","_ref$disableAutoFocus","disableAutoFocus","contentRef","_ref$current","_contentRef$current","BaseModalActions","DialogActions","align","DialogTitle","Dialog","secondaryLabel","restOfSecondaryAction","alignActions","primaryAction","secondaryAction","dialogId","primaryLabel","restOfPrimaryAction","_excluded2","PrimaryButton","TertiaryButton","_excluded3","maxLength","onKeyPress","BaseModalHeader","Times","DiscardChangesDialog","onKeepEditing","onDiscardChanges","discardChangesButtonLabel","keepEditingButtonLabel","contentLabel","titleLabel","SlideInModal","setClassHideOnTransition","Modal","onTransitionEnd","SnackbarContainer","SnackbarItem","duration","content","_ref$actions","actions","closeButtonTitle","timerHandler","useAnimation","callback","animatedObjectRef","animationStarted","setAnimationStarted","onAnimationEnd","_animatedObjectRef$cu","_animatedObjectRef$cu2","startAnimation","setTimeout","clearTimeout","actionButtons","actionProp","CheckmarkCircleBreakout","useFormSelector","setDescribedBy","errorId","errorMessage","parentErrorId","helperText","parentHelperId","FormHelperText","FormSelectorWrapper","_helperProps$classNam","nestedChildren","helperProps","helperRef","isToggle","_children$props","Checkbox","indeterminate","_ref$checked","checked","formSelectorWrapperProps","_useFormSelector","iconClasses","MinusSquare","CheckmarkSquare","Square","determineLabel","Radio","onChangeHandler","nativeEvent","clonedEvent","constructor","defineProperty","writable","Circle","Textarea","_wrapperProps$classNa","_errorProps$className","_ref$rows","rows","errorProps","Toggle","FormControl","grid","_ref$align","childElement","column","FormGroup","errorMessageIcon","_ref$errorMessageIcon","errorMessageIconPosition","helperId","helperIndent","marginLeft","message","Wrapper","_ref$floatingLabel","floatingLabel","floatingLabelActive","required","labelProps","innerClassName","labelClasses","wrapper","useWrapper","setFloatingLabelActive","setHasFocus","InputWrapper","_inputProps$wrapperPr","_inputProps$wrapperPr2","_inputProps$className","inputProps","input","hasValueOrActiveFloatingLabel","labelOffset","setLabelOffset","prefixDifference","useLabelOffset","_inputProps$placehold","SelectWrapper","_selectProps$classNam","selectProps","_useWrapper","TextareaWrapper","textareaProps","hover","setHover","optionalClasses","_textareaProps$placeh","Fieldset","legend","_ref$legendStyle","legendStyle","_ref$hideLegend","hideLegend","_ref$background","background","noBackground","_ref$noPadding","noPadding","_ref$required","_ref$disablePropagati","disablePropagation","backgroundColor","allowedComponents","_child$props$disabled","_child$props$error","renderChildren","RadioWrapper","fieldsetProps","CheckboxWrapper","changeCurrentStepNo","currentStepNo","payload","reducer","state","action","WizardStateContext","dispatch","WizardStateProvider","_useReducer","useReducer","WizardContent","steps","mode","stepScreenReaderLabel","onStepChange","useContext","setWizardState","useStepChanging","BaseWizardSteps","_ref$futureStepsClick","futureStepsClickable","generatedSteps","step","stepNo","stepState","disabledStyleClassName","clickableClassName","stepNumberString","getStepContent","WizardSteps","onStepClick","_useContext$state","_useContext","selectedStepNo","ariaSortMapping","ASC","DESC","DataGridHeaderCell","getSortingIndicatorClasses","headline","disableSorting","activeSortDirection","onSort","innerContent","sortingIndicatorClasses","TriangleUp","sortingStates","DataGridHeader","initialSort","headers","disableContextMenuColumn","enableMultiSorting","sortList","setSortList","wrapOnSort","newSort","currentDirectionIdx","find","item","restSortList","newSortDirection","findIndex","concat","updateSortList","headerCells","header","headerStyle","paddingLeft","paddingRight","sort","DataGridColumnsToggle","_ref$titleLabel","_ref$closeButtonTitle","onToggleClicked","labelledId","toggles","DataGridActions","_columnsBtnProps$clas","_columnsBtnProps$clas2","_searchBtnProps$class","_columnsBtnProps$clas3","enableAddBtn","enableColumnsBtn","enableSearchBtn","_ref$addBtnProps","addBtnProps","_ref$columnsBtnProps","columnsBtnProps","_ref$searchBtnProps","searchBtnProps","onColumnToggled","isHidden","showColsPopover","setShowColsPopover","showColumnBtn","Plus","Change","TableSearch","DataGridCell","isLoading","cellIndex","columnLength","cellStyle","DataGridRow","visibleCells","cellWithSpacing","DataGridBodyInner","visibleColumns","data","emptyLabel","_","rowIdx","__","colIdx","colSpan","DataGridBody","DataGridInner","_paginationProps$clas","paginationProps","internalHeaders","setInternalHeaders","padding","splitPaddings","paddingLeftIndex","defineProperties","paddingTop","paddingBottom","colName","DataGrid","_ref$properties","properties","defaultProperties","colorFocus","colorPrimary","colorSecondary","colorTertiary","defaultLineHeight","buttonBorderRadius","buttonBorderWidth","buttonFontSize","buttonBorderStyle","buttonFillTextColor","buttonFillBackgroundColor","buttonOutlineHoverTextColor","inputBorderColor","inputBorderRadius","inputBorderWidth","inputBorderWidthFocus","inputBorderStyle","inputBackgroundColor","modalShadowColor","modalBackgroundColor","modalHeaderBackgroundColor","snackbarTextColor","snackbarInfoBackgroundColor","snackbarSuccessBackgroundColor","snackbarErrorBackgroundColor","snackbarBorderRadius","dataGridRowBackgroundColor","dataGridRowHoverBackgroundColor","tabsBackgroundColor","tabBorderWidth","tabBorderStyle","tablistBorderWidth","tablistBorderStyle","tablistBorderColor","tabTextColor","default","success","greyedOut","warning","fontFamily","fontFamilyCode","fontSizeH1","fontSizeH2","fontSizeH3","fontSizeH4","fontSizeSub","fontSizeCode","setIsLoading","setCSSProperties","CSSPropertiesObject","_i","_Object$entries","_Object$entries$_i","formattedPropertyName","documentElement","setProperty","mergedState","headerProps","discardChangedDialogProps","modalRef","dialogRef","hasUnsavedChanges","openDiscardChangesDialog","setOpenDiscardChangesDialog","onCloseWrapper","ModalHeader","_temp","_ref$autoHideDuration","autoHideDuration","long","short","_ref$stackSize","stackSize","setSnackbars","options","_options$variant","_options$duration","getDuration","onItemClosed","snackbarList","snackbarPortal","args","onTabChange","indicatorRef","indicatorPosition","setIndicatorPosition","indicatorWidth","setIndicatorWidth","min","selectedTab","setSelectedTab","focussedTab","setFocussedTab","tabIds","tabPanelIds","calculateIndicatorPosition","selectedTabButton","tabButtons","offsetLeft","offsetTop","activateTab","buttonRef","tabPanels","panelRef","currentFocussedTab","initialStepNo","_props$initialStepNo","onCancel","onNext","onPrevious","onSaveAndClose","cancelButtonLabel","previousButtonLabel","nextButtonLabel","saveAndCloseButtonLabel","nextStepNo","useMemo","calculateNextStepNo","useNextStepNo","hasNextStep","previousStepNo","reversedCurrentStepNo","reversedPrevStepNo","reverse","calculatePrevStepNo","usePreviousStepNo","hasPreviousStep","isLastStepOrEditMode","changeStepNo","componentToRepeat","repeatedComponents","setRepeatedComponents","repeat","clonedComponent","remove","componentToRemove","newRepeatedComponents"],"mappings":"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"}
|