@entur/form 8.4.1-beta.0 → 8.4.1-beta.1

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.
@@ -4,6 +4,7 @@ export type InputGroupLabelProps = {
4
4
  required?: boolean;
5
5
  labelTooltip?: string;
6
6
  labelId: string;
7
+ isFilled?: boolean;
7
8
  staticAnimation?: boolean;
8
9
  } & React.DetailedHTMLProps<React.LabelHTMLAttributes<HTMLLabelElement>, HTMLLabelElement>;
9
10
  export declare const InputGroupLabel: React.FC<InputGroupLabelProps>;
package/dist/form.cjs.js CHANGED
@@ -116,15 +116,18 @@ const InputGroupLabel = ({
116
116
  required,
117
117
  labelId,
118
118
  staticAnimation = false,
119
+ className,
120
+ isFilled: forceIsFilled,
119
121
  ...rest
120
122
  }) => {
121
123
  const { isFilled: isFilled2 } = useInputGroupContext();
122
- const filler = staticAnimation || isFilled2;
124
+ const filler = staticAnimation || (forceIsFilled ?? isFilled2);
123
125
  return /* @__PURE__ */ jsxRuntime.jsx(
124
126
  "label",
125
127
  {
126
- className: classNames(rest.className, {
127
- "eds-input-group-label-wrapper--filled": filler
128
+ className: classNames(className, {
129
+ "eds-input-group-label-wrapper--filled": filler,
130
+ "eds-input-group-label-wrapper--controlled-label-position": forceIsFilled !== void 0
128
131
  }),
129
132
  id: labelId,
130
133
  ...rest,
@@ -1 +1 @@
1
- {"version":3,"file":"form.cjs.js","sources":["../src/FeedbackText.tsx","../src/InputGroupContext.tsx","../src/InputGroupLabel.tsx","../src/VariantProvider.tsx","../src/BaseFormControl.tsx","../src/Checkbox.tsx","../src/Fieldset.tsx","../src/RadioGroupContext.tsx","../src/Radio.tsx","../src/inputPanel/InputPanelBase.tsx","../src/inputPanel/RadioPanel.tsx","../src/inputPanel/CheckboxPanel.tsx","../src/RadioGroup.tsx","../src/Switch.tsx","../src/utils.ts","../src/TextArea.tsx","../src/TextField.tsx","../src/segmented-control/SegmentedContext.tsx","../src/segmented-control/SegmentedChoice.tsx","../src/segmented-control/SegmentedControl.tsx","../src/segmented-control/MultipleSegmentedControl.tsx","../src/index.tsx"],"sourcesContent":["import React from 'react';\nimport {\n ValidationSuccessFilledIcon,\n ValidationErrorFilledIcon,\n ValidationExclamationFilledIcon,\n} from '@entur/icons';\nimport { SubLabel } from '@entur/typography';\nimport { VariantType } from '@entur/utils';\n\nimport classNames from 'classnames';\nimport './FeedbackText.scss';\n\n/** @deprecated use variant=\"information\" instead */\nconst info = 'info';\n/** @deprecated use variant=\"negative\" instead */\nconst error = 'error';\n\nconst AlertIcon: React.FC<{\n variant: VariantType | typeof info | typeof error;\n}> = ({ variant }) => {\n const iconClass = `eds-feedback-text__icon eds-feedback-text__icon--${variant}`;\n switch (variant) {\n case 'success':\n return (\n <ValidationSuccessFilledIcon\n aria-label=\"Suksessmelding\"\n className={iconClass}\n />\n );\n case 'negative':\n return (\n <ValidationErrorFilledIcon\n aria-label=\"Feilmelding\"\n className={iconClass}\n />\n );\n case 'information':\n return null;\n case 'warning':\n return (\n <ValidationExclamationFilledIcon\n aria-label=\"Varselmelding\"\n className={iconClass}\n />\n );\n case error:\n return (\n <ValidationErrorFilledIcon\n aria-label=\"Feilmelding\"\n className={iconClass}\n />\n );\n case info:\n return null;\n default:\n return null;\n }\n};\n\nexport type FeedbackTextProps = {\n /** Teksten som vises */\n children: React.ReactNode;\n /** Skjuler ikonet */\n hideIcon?: boolean;\n /** Feedbackvarianten*/\n variant: VariantType | typeof error | typeof info;\n /** Ekstra klassenavn */\n className?: string;\n [key: string]: any;\n};\nexport const FeedbackText: React.FC<FeedbackTextProps> = ({\n children,\n hideIcon = false,\n variant,\n className,\n ...rest\n}) => {\n return (\n <SubLabel\n className={classNames(\n 'eds-feedback-text',\n {\n 'eds-feedback-text--information':\n variant === info || variant === 'information',\n },\n className,\n )}\n {...rest}\n >\n {!hideIcon && <AlertIcon variant={variant} />}\n <span className=\"eds-feedback-text__text\">{children}</span>\n </SubLabel>\n );\n};\n","import * as React from 'react';\n\ntype InputGroupContextType = {\n isFilled: boolean;\n setFilled: (e: boolean) => void;\n};\n\nconst InputGroupContext = React.createContext<InputGroupContextType>({\n isFilled: false,\n setFilled: () => null,\n});\n\nexport const InputGroupContextProvider: React.FC<{\n children: React.ReactNode;\n}> = ({ children }) => {\n const [filled, setFilled] = React.useState(false);\n return (\n <InputGroupContext.Provider\n value={{ isFilled: filled, setFilled: setFilled }}\n >\n {children}\n </InputGroupContext.Provider>\n );\n};\n\nexport const useInputGroupContext: () => InputGroupContextType = () =>\n React.useContext(InputGroupContext);\n","import classNames from 'classnames';\nimport React from 'react';\nimport { useInputGroupContext } from './InputGroupContext';\nimport './InputGroupLabel.scss';\n\nexport type InputGroupLabelProps = {\n label?: React.ReactNode;\n required?: boolean;\n labelTooltip?: string;\n labelId: string;\n staticAnimation?: boolean;\n} & React.DetailedHTMLProps<\n React.LabelHTMLAttributes<HTMLLabelElement>,\n HTMLLabelElement\n>;\n\nexport const InputGroupLabel: React.FC<InputGroupLabelProps> = ({\n label,\n required,\n labelId,\n staticAnimation = false,\n ...rest\n}) => {\n const { isFilled } = useInputGroupContext();\n const filler = staticAnimation || isFilled;\n return (\n <label\n className={classNames(rest.className, {\n 'eds-input-group-label-wrapper--filled': filler,\n })}\n id={labelId}\n {...rest}\n >\n <span\n className={classNames('eds-input-group__label', {\n 'eds-input-group__label--filled': filler,\n })}\n >\n {label} {required && <span>*</span>}\n </span>\n </label>\n );\n};\n","import React from 'react';\nimport { VariantType } from '@entur/utils';\n\n/** @deprecated use variant=\"information\" instead */\nconst info = 'info';\n/** @deprecated use variant=\"negative\" instead */\nconst error = 'error';\n\nconst VariantContext = React.createContext<\n VariantType | typeof error | typeof info | null\n>(null);\n\nexport type VariantProviderProps = {\n variant?: VariantType | typeof error | typeof info;\n};\nexport const VariantProvider: React.FC<VariantProviderProps> = ({\n children,\n variant = null,\n}) => {\n return (\n <VariantContext.Provider value={variant}>\n {children}\n </VariantContext.Provider>\n );\n};\n\nexport const useVariant: () =>\n | VariantType\n | typeof error\n | typeof info\n | null = () => {\n const context = React.useContext(VariantContext);\n return context;\n};\n","import React from 'react';\nimport classNames from 'classnames';\n\nimport { VariantType } from '@entur/utils';\nimport { QuestionIcon } from '@entur/icons';\nimport { Placement, Tooltip } from '@entur/tooltip';\nimport { IconButton } from '@entur/button';\n\nimport { FeedbackText } from './FeedbackText';\nimport { InputGroupContextProvider } from './InputGroupContext';\nimport { InputGroupLabel } from './InputGroupLabel';\nimport { useVariant } from './VariantProvider';\n\nimport './BaseFormControl.scss';\n\n/** @deprecated use variant=\"information\" instead */\nconst info = 'info';\n/** @deprecated use variant=\"negative\" instead */\nconst error = 'error';\n\nexport type BaseFormControlProps = React.HTMLAttributes<HTMLDivElement> & {\n /** Et skjemaelement med `eds-form-control`-klassen */\n children: React.ReactNode;\n /** Ekstra klassenavn */\n className?: string;\n /** Sett til true om skjema-elementet er disabled */\n disabled?: boolean;\n /** Sett til true om skjema-elementet er i read-only modus */\n readOnly?: boolean;\n /** Tekst eller ikon som vises foran skjema-elementet */\n prepend?: React.ReactNode;\n /** Tekst eller ikon som vises etter skjema-elementet */\n append?: React.ReactNode;\n /** Valideringsvariant */\n variant?: VariantType | typeof error | typeof info;\n /**Størrelsen på skjemaelementet\n * @default \"medium\"\n */\n size?: 'medium' | 'large';\n /** Label til inputfeltet */\n label: React.ReactNode;\n /** En tooltip som forklarer labelen til inputfeltet */\n labelTooltip?: React.ReactNode;\n /** Forklarende tekst for knappen som åpner labelTooltip */\n labelTooltipButtonAriaLabel?: string;\n labelTooltipPlacement?: Placement;\n /** Illustrerer om inputfeltet er påkrevd eller ikke */\n required?: boolean;\n /** ID som settes på labelen til inputfeltet */\n labelId: string;\n /** Varselmelding, som vil komme under form-komponenten */\n feedback?: string;\n /** Om inputfeltet er fylt med data. Brukes for plassering av label */\n isFilled?: boolean;\n /**Ekstra props som sendes til label */\n labelProps?: { [key: string]: any };\n /** Ekstra styling */\n style?: React.CSSProperties;\n /** Plasserer labelen statisk på toppen av inputfeltet */\n disableLabelAnimation?: boolean;\n /** Setter feedbackText sin rolle til \"alert\" */\n onClick?: (event: React.MouseEvent<HTMLElement>) => void;\n ariaAlertOnFeedback?: boolean;\n /** Legg til et element etter feltet */\n after?: React.ReactNode;\n /** Legg til et element før feltet */\n before?: React.ReactNode;\n /** Aria-label som brukes når inputfeltet er i read-only modus */\n ariaLabelOnReadOnly?: string;\n};\n\nexport const BaseFormControl = React.forwardRef<\n HTMLDivElement,\n BaseFormControlProps\n>(\n (\n {\n after,\n before,\n children,\n className,\n disabled = false,\n readOnly = false,\n variant,\n prepend,\n append,\n size = 'medium',\n isFilled,\n label,\n required,\n labelTooltip,\n labelTooltipButtonAriaLabel = `Klikk for tilleggsinfo om ${label}-feltet`,\n labelTooltipPlacement = 'top',\n feedback,\n labelId,\n labelProps,\n style,\n disableLabelAnimation = false,\n ariaAlertOnFeedback = false,\n ariaLabelOnReadOnly = 'Dette skjemafeltet kan bare leses',\n ...rest\n },\n ref,\n ) => {\n const contextVariant = useVariant();\n const currentVariant = variant || contextVariant;\n\n return (\n <InputGroupContextProvider>\n <div\n className={classNames(\n 'eds-form-control__field-and-feedback-text',\n className,\n {\n 'eds-form-control__field-and-feedback-text--has-tooltip':\n labelTooltip !== undefined,\n },\n )}\n style={style}\n >\n {before}\n <div\n className={classNames(\n 'eds-form-control-wrapper',\n `eds-form-control-wrapper--size-${size}`,\n {\n 'eds-form-control-wrapper--success':\n currentVariant === 'success',\n 'eds-form-control-wrapper--negative':\n currentVariant === 'negative' || currentVariant === error,\n 'eds-form-control-wrapper--disabled': disabled,\n 'eds-form-control-wrapper--readonly': readOnly,\n 'eds-form-control-wrapper--is-filled': isFilled,\n },\n )}\n ref={ref}\n tabIndex={readOnly ? -1 : undefined}\n {...rest}\n >\n {prepend && (\n <div className=\"eds-form-control__prepend\">{prepend}</div>\n )}\n <InputGroupLabel\n label={label}\n required={required}\n labelId={labelId}\n staticAnimation={disableLabelAnimation}\n aria-label={\n readOnly ? `${label}, ${ariaLabelOnReadOnly}` : undefined\n }\n {...labelProps}\n />\n {labelTooltip && (\n <Tooltip\n content={labelTooltip}\n placement={labelTooltipPlacement}\n showCloseButton={false}\n disableFocusListener={true}\n disableHoverListener={true}\n disableClickListner={false}\n disableKeyboardListener={false}\n >\n <IconButton\n as=\"span\"\n tabIndex={0}\n role=\"button\"\n className=\"eds-form-control__append eds-form-control__append--tooltip\"\n aria-label={labelTooltipButtonAriaLabel}\n >\n <QuestionIcon\n className=\"eds-input-group__label-tooltip-icon\"\n aria-hidden=\"true\"\n />\n </IconButton>\n </Tooltip>\n )}\n {children}\n {append && <div className=\"eds-form-control__append\">{append}</div>}\n </div>\n {feedback && currentVariant && (\n <FeedbackText\n variant={currentVariant}\n role={ariaAlertOnFeedback ? 'alert' : undefined}\n >\n {feedback}\n </FeedbackText>\n )}\n {after}\n </div>\n </InputGroupContextProvider>\n );\n },\n);\n","import React, { CSSProperties } from 'react';\nimport cx from 'classnames';\nimport { Paragraph } from '@entur/typography';\nimport { mergeRefs } from '@entur/utils';\n\nimport './Checkbox.scss';\n\nexport type CheckboxProps = {\n /** Ekstra klassenavn */\n className?: string;\n /** Label for checkboxen, som vises ved høyre side. */\n children?: React.ReactNode;\n /** Om Checkbox er avmerket, eller om den er i en indeterminate state */\n checked?: 'indeterminate' | boolean;\n /** Callback for Checkbox */\n onChange?: (e: React.ChangeEvent<HTMLInputElement>) => void;\n /** Om checkboxen er disabled eller ikke\n * @default false\n */\n disabled?: boolean;\n /** Sett til true om skjema-elementet er i read-only modus\n * @default false\n */\n readOnly?: boolean;\n /**Ekstra styling til komponenten */\n style?: CSSProperties;\n /** Reduserer klikkflaten for Checkbox'en\n * @default false\n */\n reduceClickArea?: boolean;\n /** Om animasjon skal deaktiveres\n * @default false\n */\n disableAnimation?: boolean;\n} & Omit<React.InputHTMLAttributes<HTMLInputElement>, 'checked'>;\n\nexport const Checkbox = React.forwardRef<HTMLInputElement, CheckboxProps>(\n (\n {\n checked,\n className,\n children,\n style,\n disabled = false,\n readOnly = false,\n reduceClickArea,\n disableAnimation = false,\n ...rest\n },\n ref: React.Ref<HTMLInputElement>,\n ) => {\n const inputRef = React.useRef<HTMLInputElement>(null);\n\n const isIndeterminate = checked === 'indeterminate';\n const isControlled = checked !== undefined;\n\n React.useEffect(() => {\n if (inputRef && inputRef.current) {\n inputRef.current.indeterminate = isIndeterminate;\n }\n }, [isIndeterminate]);\n\n return (\n <label\n className={cx('eds-checkbox__container', className, {\n 'eds-checkbox--disabled': disabled,\n 'eds-checkbox--readonly': readOnly,\n 'eds-checkbox__container--reduced-click-area': reduceClickArea,\n })}\n style={style}\n >\n <input\n type=\"checkbox\"\n ref={mergeRefs(ref, inputRef)}\n checked={isControlled ? checked === true : undefined}\n disabled={disabled}\n onKeyDown={e => {\n if (readOnly && (e.key === ' ' || e.key === 'Enter')) {\n e.preventDefault();\n e.stopPropagation();\n }\n }}\n aria-label={\n readOnly ? ` ${children?.toString()}. Kan ikke endres` : undefined\n }\n {...rest}\n />\n <span\n className={cx('eds-checkbox__icon', {\n 'eds-checkbox__icon--disabled': disabled,\n 'eds-checkbox__icon--readonly': readOnly,\n 'eds-checkbox__icon--reduced-click-area': reduceClickArea,\n 'eds-checkbox__icon--no-animation':\n disableAnimation || disabled || readOnly,\n })}\n >\n <CheckboxIcon indeterminate={isIndeterminate} />\n </span>\n {children && (\n <Paragraph className=\"eds-checkbox__label\" margin=\"none\" as=\"span\">\n {children}\n </Paragraph>\n )}\n </label>\n );\n },\n);\n\nconst CheckboxIcon: React.FC<{ indeterminate: boolean }> = ({\n indeterminate = false,\n}) => {\n return (\n <svg\n className=\"eds-checkbox-icon\"\n width=\"11px\"\n height=\"9px\"\n viewBox=\"6 11 37 33\"\n aria-hidden={true}\n >\n {indeterminate ? (\n <rect x=\"10\" y=\"25\" width=\"28\" height=\"5\" fill=\"white\" />\n ) : (\n <path d=\"M14.1 27.2l7.1 7.2 14.6-14.8\" fill=\"none\" />\n )}\n </svg>\n );\n};\n","import React from 'react';\nimport classNames from 'classnames';\nimport { Heading5 } from '@entur/typography';\nimport './Fieldset.scss';\n\nexport type FieldsetProps = {\n /** Innholdet i felt-gruppen. */\n children: React.ReactNode;\n /** Ekstra klassenavn */\n className?: string;\n /** Labelen til felt-gruppen. */\n label?: React.ReactNode;\n [key: string]: any;\n};\n\nexport const Fieldset: React.FC<FieldsetProps> = ({\n children,\n className,\n label,\n ...rest\n}) => (\n <fieldset className={classNames('eds-fieldset', className)} {...rest}>\n {label && <Heading5 as=\"legend\">{label}</Heading5>}\n {children}\n </fieldset>\n);\n","import React from 'react';\n\ntype RadioGroupContextProps = {\n name: string;\n onChange: (e: React.ChangeEvent<HTMLInputElement>) => void;\n value: string | null;\n readOnly?: boolean;\n};\n\nconst RadioGroupContext = React.createContext<RadioGroupContextProps | null>(\n null,\n);\n\nexport const RadioGroupContextProvider = RadioGroupContext.Provider;\n\nexport const useRadioGroupContext: () => RadioGroupContextProps = () => {\n const context = React.useContext(RadioGroupContext);\n if (!context) {\n throw new Error(\n 'You need to wrap your RadioButtons in a RadioGroup component',\n );\n }\n return context;\n};\n","import React from 'react';\nimport cx from 'classnames';\nimport { Paragraph } from '@entur/typography';\nimport { useRadioGroupContext } from './RadioGroupContext';\nimport './Radio.scss';\n\nexport type RadioProps = {\n /** Ekstra klassenavn */\n className?: string;\n /** Label til radio-button. Vises ved høyre side. */\n children?: React.ReactNode;\n /** Verdien til radioknappen */\n value: string;\n /** Om radiobutton er disabled eller ikke\n * @default false\n */\n disabled?: boolean;\n /** Beskrivelse som leses opp av skjermlesere når radiobutton er readonly */\n readOnlyLabelDescription?: string;\n} & React.InputHTMLAttributes<HTMLInputElement>;\n\nexport const Radio = React.forwardRef<HTMLInputElement, RadioProps>(\n (\n { className, children, value, disabled, readOnlyLabelDescription, ...rest },\n ref: React.Ref<HTMLInputElement>,\n ) => {\n const {\n name,\n value: selectedValue,\n onChange,\n readOnly,\n } = useRadioGroupContext();\n\n const classList = cx(className, 'eds-form-component--radio__radio', {\n 'eds-form-component--radio__radio--disabled': disabled,\n 'eds-form-component--radio__radio--readonly': readOnly,\n });\n\n return (\n <label className=\"eds-form-component--radio__container\">\n <input\n type=\"radio\"\n name={rest.name ?? name}\n ref={ref}\n value={value}\n checked={rest.checked ?? selectedValue === value}\n onChange={e => {\n if (readOnly) {\n e.preventDefault();\n return;\n }\n (rest.onChange ?? onChange)?.(e);\n }}\n onClick={e => {\n if (readOnly) {\n e.preventDefault();\n }\n }}\n disabled={disabled}\n aria-label={\n readOnly\n ? `${children?.toString()}. ${\n readOnlyLabelDescription ?? 'Kan ikke endres'\n }`\n : undefined\n }\n {...rest}\n />\n <span className={classList}>\n <span className=\"eds-form-component--radio__circle\"></span>\n </span>\n {children && (\n <Paragraph\n margin=\"none\"\n as=\"span\"\n className=\"eds-form-component--radio__label\"\n >\n {children}\n </Paragraph>\n )}\n </label>\n );\n },\n);\n","import React, { useRef } from 'react';\nimport classNames from 'classnames';\nimport { mergeRefs, useRandomId, useForceUpdate } from '@entur/utils';\nimport { Checkbox } from '../Checkbox';\nimport { Radio } from '../Radio';\n\nimport './InputPanelBase.scss';\n\nexport type InputPanelProps = {\n /** Om det er en radio- eller checkbox-variant */\n type: string;\n /** Verdien til input-panelet */\n value: string;\n /** Om input-panelet skal være valgt eller ikke */\n checked?: boolean;\n /** Hovedtittelen til input-panelet */\n title: React.ReactNode;\n /** Ektstra label som står høyrestilt, til venstre for Checkboxen/Radio-button-en */\n secondaryLabel?: React.ReactNode;\n /** Ekstra informasjon som legges nederst i input-panelet */\n children?: React.ReactNode;\n /** Størrelse på input-panelet\n * @default \"medium\"\n */\n size?: 'medium' | 'large';\n /**Skjuler checkbox-/radio-button-en i input-panelet\n * @default false\n */\n hideSelectionIndicator?: boolean;\n /** Ekstra klassenavn */\n className?: string;\n /** Om input-panelet er deaktivert eller ikke\n * @default false\n */\n disabled?: boolean;\n /** */\n style?: React.CSSProperties;\n} & Omit<\n React.DetailedHTMLProps<\n React.InputHTMLAttributes<HTMLInputElement>,\n HTMLInputElement\n >,\n 'title' | 'size'\n>;\n\nexport const InputPanelBase = React.forwardRef<\n HTMLInputElement,\n InputPanelProps\n>(\n (\n {\n className,\n children,\n value,\n title,\n secondaryLabel,\n size = 'medium',\n hideSelectionIndicator = false,\n style,\n id,\n disabled = false,\n type = 'radio',\n onChange,\n checked,\n name,\n ...rest\n },\n ref: React.Ref<HTMLInputElement>,\n ) => {\n const classList = classNames(\n className,\n 'eds-input-panel__container',\n `eds-input-panel--${size}`,\n );\n\n const inputRef = useRef<HTMLInputElement>(null);\n\n const defaultId = useRandomId('eds-inputpanel');\n const inputPanelId = id || defaultId;\n const forceUpdate = useForceUpdate();\n\n const handleOnChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n if (onChange === undefined) forceUpdate();\n onChange?.(e);\n };\n\n return (\n <label className=\"eds-input-panel\" htmlFor={inputPanelId}>\n <input\n type={type}\n name={name}\n ref={mergeRefs(ref, inputRef)}\n value={value}\n checked={checked}\n onChange={handleOnChange}\n id={inputPanelId}\n disabled={disabled}\n {...rest}\n />\n <div className={classList} style={style}>\n <div className=\"eds-input-panel__title-wrapper\">\n <div className=\"eds-input-panel__title\">{title}</div>\n <div className=\"eds-input-panel__secondary-label-and-icon-wrapper\">\n {secondaryLabel !== undefined && <>{secondaryLabel}</>}\n <span style={{ pointerEvents: 'none' }}>\n {!(disabled || hideSelectionIndicator) &&\n (type === 'radio' ? (\n <Radio\n name=\"\"\n value=\"\"\n checked={checked ?? inputRef.current?.checked ?? false}\n onChange={() => {\n return;\n }}\n aria-hidden=\"true\"\n tabIndex={-1}\n />\n ) : (\n <Checkbox\n checked={checked ?? inputRef.current?.checked ?? false}\n onChange={() => null}\n aria-hidden=\"true\"\n tabIndex={-1}\n />\n ))}\n </span>\n </div>\n </div>\n {children && (\n <div className=\"eds-input-panel__additional-content\">\n {children}\n </div>\n )}\n </div>\n </label>\n );\n },\n);\n","import React from 'react';\nimport { useRadioGroupContext } from '../RadioGroupContext';\nimport { InputPanelBase } from './InputPanelBase';\n\nexport type RadioPanelProps = {\n /** Verdien til radio-panelet */\n value: string;\n /** Hovedtittelen til radio-panelet */\n title: React.ReactNode;\n /** Ektstra label som står høyrestilt, til venstre for radio-button-en */\n secondaryLabel?: React.ReactNode;\n /** Ekstra informasjon som legges nederst i radio-panelet */\n children?: React.ReactNode;\n /** Størrelse på radio-panelet\n * @default \"medium\"\n */\n size?: 'medium' | 'large';\n /**Skjuler radio-button-en i radio-panelet\n * @default false\n */\n hideRadioButton?: boolean;\n /** Ekstra klassenavn */\n className?: string;\n /** Om radio-panelet er deaktivert eller ikke\n * @default false\n */\n disabled?: boolean;\n /** */\n style?: React.CSSProperties;\n} & Omit<\n React.DetailedHTMLProps<\n React.InputHTMLAttributes<HTMLInputElement>,\n HTMLInputElement\n >,\n 'title' | 'size'\n>;\n\nexport const RadioPanel = React.forwardRef<HTMLInputElement, RadioPanelProps>(\n (\n {\n className,\n children,\n value,\n title,\n secondaryLabel,\n size = 'medium',\n hideRadioButton = false,\n style,\n id,\n disabled = false,\n ...rest\n },\n ref: React.Ref<HTMLInputElement>,\n ) => {\n const { name, value: selected, onChange } = useRadioGroupContext();\n\n return (\n <InputPanelBase\n type=\"radio\"\n name={name}\n title={title}\n value={value}\n checked={selected === value}\n onChange={onChange}\n className={className}\n secondaryLabel={secondaryLabel}\n size={size}\n hideSelectionIndicator={hideRadioButton}\n style={style}\n id={id}\n disabled={disabled}\n {...rest}\n ref={ref}\n >\n {children}\n </InputPanelBase>\n );\n },\n);\n","import React from 'react';\nimport { InputPanelBase } from './InputPanelBase';\n\nexport type CheckboxPanelProps = {\n /** Verdien til CheckboxPanel */\n value: string;\n /** Om checkbox-panelet skal være valgt eller ikke */\n checked?: boolean;\n /** Hovedtittelen til CheckboxPanel */\n title: React.ReactNode;\n /** Ektstra label som står høyrestilt mot Checkboxen */\n secondaryLabel?: React.ReactNode;\n /** Ekstra informasjon som legges nederst i CheckboxPanel */\n children?: React.ReactNode;\n /** Størrelse på CheckboxPanel\n * @default \"medium\"\n */\n size?: 'medium' | 'large';\n /**Skjuler checkbox-en i CheckboxPanel\n * @default false\n */\n hideCheckbox?: boolean;\n /** Ekstra klassenavn */\n className?: string;\n /** Om CheckboxPanel er deaktivert eller ikke\n * @default false\n */\n disabled?: boolean;\n /** */\n style?: React.CSSProperties;\n} & Omit<\n React.DetailedHTMLProps<\n React.InputHTMLAttributes<HTMLInputElement>,\n HTMLInputElement\n >,\n 'title' | 'size'\n>;\n\nexport const CheckboxPanel = React.forwardRef<\n HTMLInputElement,\n CheckboxPanelProps\n>(\n (\n {\n name,\n checked,\n onChange,\n className,\n children,\n value,\n title,\n secondaryLabel,\n size = 'medium',\n hideCheckbox = false,\n style,\n id,\n disabled = false,\n ...rest\n },\n ref: React.Ref<HTMLInputElement>,\n ) => {\n return (\n <InputPanelBase\n type=\"checkbox\"\n name={name}\n title={title}\n value={value}\n checked={checked}\n onChange={onChange}\n className={className}\n secondaryLabel={secondaryLabel}\n size={size}\n hideSelectionIndicator={hideCheckbox}\n style={style}\n id={id}\n disabled={disabled}\n {...rest}\n ref={ref}\n >\n {children}\n </InputPanelBase>\n );\n },\n);\n","import React from 'react';\nimport { RadioGroupContextProvider } from './RadioGroupContext';\nimport { Fieldset } from './Fieldset';\n\nexport type RadioGroupProps = {\n /** Navnet til radiogruppen. */\n name: string;\n /** Overskrift over radiogruppen */\n label?: string;\n /** Verdien til den valgte radioknappen */\n value: string | null;\n /** Radioknappene sendes inn som children */\n children: React.ReactNode;\n /** En callback som blir kalles hver gang en radioknapp klikkes på */\n onChange: (e: React.ChangeEvent<HTMLInputElement>) => void;\n [key: string]: any;\n /** Sett radiogruppen i readonly-modus */\n readOnly?: boolean;\n};\n\nexport const RadioGroup: React.FC<RadioGroupProps> = ({\n name,\n value,\n children,\n onChange,\n label,\n readOnly = false,\n ...rest\n}) => {\n const contextValue = React.useMemo(\n () => ({ name, value, onChange, readOnly }),\n [name, value, onChange, readOnly],\n );\n return (\n <RadioGroupContextProvider value={contextValue}>\n {label ? (\n <Fieldset label={label} {...rest}>\n {children}\n </Fieldset>\n ) : (\n children\n )}\n </RadioGroupContextProvider>\n );\n};\n","import React from 'react';\nimport classNames from 'classnames';\nimport { colors } from '@entur/tokens';\nimport { CheckIcon, CloseSmallIcon } from '@entur/icons';\nimport './Switch.scss';\n\nexport type SwitchProps = {\n /** Ekstra klassenavn */\n className?: string;\n /** Label for Switch-en. */\n children?: React.ReactNode;\n /** Posisjonen til label for Switch-en.\n * @default \"right\"\n */\n labelPlacement?: 'right' | 'bottom';\n /** Om switch-en er checked eller ikke */\n checked?: boolean;\n /** Ikonet som skal stå inne i sirkelen på Switch-en */\n icon?: React.ReactNode;\n /** Skjul ikonet inne i sikrelen på Switch-en\n * @default false\n */\n hideIcon?: boolean;\n /** Farge som settes på ikon og bakgrunn når Switch-en er \"checked\"\n * @default colors.validation.mint\n */\n color?: string;\n /** Farge på bakgrunn når Switch-en er \"checked\" og står i en kontrast-seksjon\n * @default colors.validation.mintContrast\n */\n contrastColor?: string;\n /** Størrelsen på Switch-en\n * @default \"medium\"\n */\n size?: 'medium' | 'large';\n /** Callback for når verdien endres */\n onChange?: (e: React.ChangeEvent<HTMLInputElement>) => void;\n} & Omit<React.InputHTMLAttributes<HTMLInputElement>, 'size'>;\n\nexport const Switch = React.forwardRef<HTMLInputElement, SwitchProps>(\n (\n {\n className,\n children,\n labelPlacement = 'right',\n icon,\n hideIcon = false,\n color = colors.validation.mint,\n contrastColor = colors.validation.mintContrast,\n size = 'medium',\n checked,\n ...rest\n },\n ref: React.Ref<HTMLInputElement>,\n ) => {\n const displayedIcon = () => {\n if (icon) return icon;\n if (checked === undefined) return <></>;\n const iconSize = size === 'large' ? 23 : undefined;\n return checked ? (\n <CheckIcon size={iconSize} />\n ) : (\n <CloseSmallIcon size={iconSize} />\n );\n };\n\n return (\n <label\n className={classNames(\n 'eds-switch',\n `eds-switch--${labelPlacement}`,\n className,\n )}\n style={{ ...rest.style }}\n >\n <input type=\"checkbox\" ref={ref} checked={checked} {...rest} />\n <span\n className={classNames(\n 'eds-switch__switch',\n `eds-switch__switch--${size}`,\n )}\n style={\n {\n '--eds-switch-color': color,\n '--eds-switch-contrast-color': contrastColor,\n } as React.CSSProperties\n }\n aria-hidden=\"true\"\n >\n <span className=\"eds-switch__circle\">\n {!hideIcon && displayedIcon()}\n </span>\n </span>\n {children && (\n <span\n className={classNames(\n 'eds-switch__label',\n `eds-switch__label--${size}--${labelPlacement}`,\n )}\n >\n {children}\n </span>\n )}\n </label>\n );\n },\n);\n","// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types -- disabled during Yarn upgrade\nexport function hasValue(value: any): boolean {\n return value != null && !(Array.isArray(value) && value.length === 0);\n}\n\n// Determine if field is empty or filled.\n// Response determines if label is presented above field or as placeholder.\n//\n// @param obj\n// @param SSR\n// @returns {boolean} False when not present or empty string.\n// True when any number or string with length.\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types -- disabled during Yarn upgrade\nexport function isFilled(obj: any, SSR = false): boolean {\n return (\n obj &&\n ((hasValue(obj.value) && obj.value !== '') ||\n (SSR && hasValue(obj.defaultValue) && obj.defaultValue !== ''))\n );\n}\n","import React from 'react';\nimport classNames from 'classnames';\n\nimport { useRandomId, useOnMount, mergeRefs, VariantType } from '@entur/utils';\n\nimport { useVariant } from './VariantProvider';\nimport { BaseFormControl } from './BaseFormControl';\nimport { useInputGroupContext } from './InputGroupContext';\nimport { isFilled } from './utils';\n\nimport './TextArea.scss';\nimport { Placement } from '@entur/tooltip';\n\n/** @deprecated use variant=\"information\" instead */\nconst info = 'info';\n/** @deprecated use variant=\"negative\" instead */\nconst error = 'error';\n\nexport type TextAreaProps = {\n /** Ekstra klassenavn */\n className?: string;\n /** Valideringsvariant */\n variant?: VariantType | typeof error | typeof info;\n /** Deaktiverer tekstområdet */\n disabled?: boolean;\n /** Setter tekstområdet i read-only modus */\n readOnly?: boolean;\n /** Label over TextArea */\n label: string;\n /** En tooltip som forklarer labelen til inputfeltet */\n labelTooltip?: React.ReactNode;\n /** Forklarende tekst for knappen som åpner labelTooltip */\n labelTooltipButtonAriaLabel?: string;\n /** Plasseringen til tooltip-en relativt til spørsmålstegn-knappen */\n labelTooltipPlacement?: Placement;\n /** Varselmelding, som vil komme under TextArea */\n feedback?: string;\n /** Plasserer labelen statisk på toppen av inputfeltet\n * @default false\n */\n disableLabelAnimation?: boolean;\n} & React.TextareaHTMLAttributes<HTMLTextAreaElement>;\n\nexport const TextArea = React.forwardRef<HTMLTextAreaElement, TextAreaProps>(\n (\n {\n variant,\n disabled = false,\n readOnly = false,\n className,\n style,\n label,\n feedback,\n labelTooltip,\n labelTooltipButtonAriaLabel,\n labelTooltipPlacement,\n onChange,\n disableLabelAnimation,\n ...rest\n },\n ref: React.Ref<HTMLTextAreaElement>,\n ) => {\n const textAreaId = useRandomId('eds-textarea');\n const textareaRef = React.useRef<HTMLTextAreaElement>(null);\n return (\n <BaseFormControl\n className={classNames(className, 'eds-textarea__wrapper')}\n disabled={disabled}\n readOnly={readOnly}\n variant={variant}\n style={style}\n label={label}\n labelId={textAreaId}\n feedback={feedback}\n labelTooltip={labelTooltip}\n labelTooltipButtonAriaLabel={labelTooltipButtonAriaLabel}\n labelTooltipPlacement={labelTooltipPlacement}\n labelProps={{ className: 'eds-textarea__label' }}\n disableLabelAnimation={disableLabelAnimation}\n onClick={e => {\n if (e.target === e.currentTarget) textareaRef?.current?.focus();\n }}\n >\n <TextAreaBase\n readOnly={readOnly}\n disabled={disabled}\n ref={mergeRefs(ref, textareaRef)}\n aria-labelledby={textAreaId}\n onChange={onChange}\n variant={variant}\n {...rest}\n />\n </BaseFormControl>\n );\n },\n);\n\ntype TextAreaBaseProps = {\n readOnly?: boolean;\n disabled?: boolean;\n variant?: VariantType | typeof error | typeof info;\n} & React.TextareaHTMLAttributes<HTMLTextAreaElement>;\n\nconst TextAreaBase = React.forwardRef<HTMLTextAreaElement, TextAreaBaseProps>(\n ({ readOnly, disabled, onChange, value, variant, ...rest }, ref) => {\n const contextVariant = useVariant();\n const currentVariant = variant || contextVariant;\n const { isFilled: isInputFilled, setFilled: setFiller } =\n useInputGroupContext();\n\n useOnMount(() => {\n if (value?.toString() || rest.defaultValue) {\n setFiller && !isInputFilled && setFiller(true);\n }\n });\n React.useEffect(() => {\n if (value?.toString() && setFiller && !isInputFilled) {\n setFiller(true);\n }\n }, [value, setFiller, isInputFilled]);\n\n const handleChange = (event: React.ChangeEvent<HTMLTextAreaElement>) => {\n if (isFilled(event.target)) {\n setFiller && !isInputFilled && setFiller(true);\n } else {\n setFiller && isInputFilled && setFiller(false);\n }\n if (onChange) {\n onChange(event);\n }\n };\n\n return (\n <textarea\n className=\"eds-form-control eds-textarea\"\n ref={ref}\n readOnly={readOnly}\n disabled={disabled}\n onChange={handleChange}\n value={value}\n aria-invalid={currentVariant === 'error'}\n {...rest}\n />\n );\n },\n);\n","import React from 'react';\nimport classNames from 'classnames';\n\nimport { CloseSmallIcon } from '@entur/icons';\nimport { useRandomId, useOnMount, mergeRefs, VariantType } from '@entur/utils';\n\nimport { BaseFormControl } from './BaseFormControl';\nimport { useInputGroupContext } from './InputGroupContext';\nimport { isFilled } from './utils';\nimport { useVariant } from './VariantProvider';\nimport './TextField.scss';\nimport { Placement } from '@entur/tooltip';\n\n/** @deprecated use variant=\"information\" instead */\nconst info = 'info';\n/** @deprecated use variant=\"negative\" instead */\nconst error = 'error';\n\nexport type TextFieldProps = {\n /** Tekst eller ikon som kommer før inputfeltet */\n prepend?: React.ReactNode;\n /** Tekst eller ikon som kommer etter inputfeltet */\n append?: React.ReactNode;\n /** Ekstra klassenavn */\n className?: string;\n /** Label over TextField */\n label: React.ReactNode;\n /** En tooltip som forklarer labelen til inputfeltet */\n labelTooltip?: React.ReactNode;\n /** Forklarende tekst for knappen som åpner labelTooltip */\n labelTooltipButtonAriaLabel?: string;\n /** Plasseringen til tooltip-en relativt til spørsmålstegn-knappen */\n labelTooltipPlacement?: Placement;\n /** Varselmelding, som vil komme under TextField */\n feedback?: string;\n /** Hvilken valideringsfarge som vises*/\n variant?: VariantType | typeof error | typeof info;\n /** Deaktiver inputfeltet */\n disabled?: boolean;\n /** Setter inputfeltet i read-only modus */\n readOnly?: boolean;\n /** Størrelsen på TextField\n * @default \"medium\"\n */\n size?: 'medium' | 'large';\n /** Plasserer labelen statisk på toppen av inputfeltet\n * @default false\n */\n disableLabelAnimation?: boolean;\n /** Ekstra props som sendes til label-elementet */\n labelProps?: React.DetailedHTMLProps<\n React.LabelHTMLAttributes<HTMLLabelElement>,\n HTMLLabelElement\n >;\n /** Om man skal ha muliget for å nullstille TextField. Viser lukkekryss hvis feltet er fylt.\n * @default false\n */\n clearable?: boolean;\n /** Callback for clearable */\n onClear?: () => void;\n ariaAlertOnFeedback?: boolean;\n} & Omit<React.InputHTMLAttributes<HTMLInputElement>, 'size' | 'label'>;\n\nexport const TextField = React.forwardRef<HTMLInputElement, TextFieldProps>(\n (\n {\n prepend,\n append,\n variant,\n disabled = false,\n readOnly = false,\n className,\n style,\n size = 'medium',\n label,\n required,\n labelTooltip,\n labelTooltipButtonAriaLabel,\n labelTooltipPlacement,\n feedback,\n onChange,\n disableLabelAnimation,\n labelProps,\n clearable = false,\n onClear,\n value,\n ariaAlertOnFeedback = false,\n ...rest\n },\n ref: React.Ref<HTMLInputElement>,\n ) => {\n const randomId = useRandomId('eds-textfield');\n const textFieldId = labelProps && labelProps.id ? labelProps.id : randomId;\n const textFieldRef = React.useRef<HTMLInputElement>(null);\n return (\n <BaseFormControl\n disabled={disabled}\n readOnly={readOnly}\n variant={variant}\n prepend={prepend}\n append={\n clearable && onClear ? <ClearButton onClear={onClear} /> : append\n }\n className={classNames(className, 'eds-textfield__wrapper')}\n style={style}\n size={size}\n label={label}\n required={required}\n labelTooltip={labelTooltip}\n labelTooltipButtonAriaLabel={labelTooltipButtonAriaLabel}\n labelTooltipPlacement={labelTooltipPlacement}\n labelId={textFieldId}\n feedback={feedback}\n disableLabelAnimation={disableLabelAnimation}\n labelProps={labelProps}\n ariaAlertOnFeedback={ariaAlertOnFeedback}\n onClick={e => {\n if (e.target === e.currentTarget) textFieldRef?.current?.focus();\n }}\n >\n <TextFieldBase\n disabled={disabled}\n readOnly={readOnly}\n ref={mergeRefs(ref, textFieldRef)}\n aria-labelledby={textFieldId}\n onChange={onChange}\n value={value}\n variant={variant}\n {...rest}\n />\n </BaseFormControl>\n );\n },\n);\n\ntype TextFieldBaseProps = {\n /** Deaktiver inputfeltet */\n disabled?: boolean;\n /** Setter inputfeltet i read-only modus */\n readOnly?: boolean;\n variant?: VariantType | typeof error | typeof info;\n} & React.DetailedHTMLProps<\n React.InputHTMLAttributes<HTMLInputElement>,\n HTMLInputElement\n>;\n\nconst TextFieldBase = React.forwardRef<HTMLInputElement, TextFieldBaseProps>(\n (\n { disabled, readOnly, placeholder, onChange, value, variant, ...rest },\n forwardRef,\n ) => {\n const contextVariant = useVariant();\n const currentVariant = variant || contextVariant;\n const { isFilled: isInputFilled, setFilled: setFiller } =\n useInputGroupContext();\n\n useOnMount(() => {\n if (value?.toString() || rest.defaultValue) {\n setFiller && !isInputFilled && setFiller(true);\n }\n });\n React.useEffect(() => {\n if (value?.toString() && setFiller && !isInputFilled) {\n setFiller(true);\n }\n }, [value, setFiller, isInputFilled]);\n\n const handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n if (isFilled(event.target)) {\n setFiller && !isInputFilled && setFiller(true);\n } else {\n setFiller && isInputFilled && setFiller(false);\n }\n if (onChange) {\n onChange(event);\n }\n };\n\n return (\n <input\n aria-invalid={currentVariant === 'error'}\n className=\"eds-form-control\"\n disabled={disabled}\n readOnly={readOnly}\n ref={forwardRef}\n placeholder={placeholder}\n onChange={handleChange}\n value={value}\n {...rest}\n />\n );\n },\n);\n\nconst ClearButton: React.FC<{\n onClear: () => void;\n [key: string]: any;\n}> = ({ onClear, ...props }) => {\n const { isFilled: hasValue, setFilled } = useInputGroupContext();\n return (\n <div className=\"eds-textfield__clear-button-wrapper\">\n {hasValue && <div className=\"eds-textfield__divider\"></div>}\n {hasValue && (\n <button\n className=\"eds-textfield__clear-button\"\n type=\"button\"\n tabIndex={-1}\n onClick={() => {\n setFilled(false);\n onClear();\n }}\n {...props}\n >\n <CloseSmallIcon />\n </button>\n )}\n </div>\n );\n};\n","import React from 'react';\nimport { useRandomId } from '@entur/utils';\n\nexport type SelectedValues = { [key: string]: boolean };\nexport type SelectedValue = string | null;\nexport type SegmentedContextProps =\n | {\n name: string;\n onChange: (value: SelectedValues) => void;\n selectedValue: SelectedValues;\n multiple: true;\n size: 'medium' | 'large';\n }\n | {\n name: string;\n onChange: (value: SelectedValue) => void;\n selectedValue: SelectedValue;\n multiple: false;\n size: 'medium' | 'large';\n };\n\nconst SegmentedContext = React.createContext<SegmentedContextProps | null>(\n null,\n);\n\nexport type SegmentedProviderProps =\n | {\n name?: string;\n onChange?: (value: SelectedValues) => void;\n selectedValue: SelectedValues;\n multiple: true;\n size: 'medium' | 'large';\n }\n | {\n name?: string;\n onChange?: (value: SelectedValue) => void;\n selectedValue: SelectedValue;\n multiple: false;\n size: 'medium' | 'large';\n };\n\nexport const SegmentedProvider: React.FC<SegmentedProviderProps> = ({\n name,\n onChange = () => undefined,\n selectedValue,\n multiple,\n size,\n ...rest\n}) => {\n const generatedName = useRandomId('eds-segmented-control');\n const contextValue = React.useMemo(\n () => ({\n name: name || generatedName,\n onChange,\n multiple,\n selectedValue,\n size,\n }),\n [generatedName, multiple, name, onChange, selectedValue, size],\n ) as SegmentedContextProps;\n return <SegmentedContext.Provider value={contextValue} {...rest} />;\n};\n\nexport const useSegmentedContext = (): SegmentedContextProps => {\n const context = React.useContext(SegmentedContext);\n if (!context) {\n throw new Error(\n 'You need to wrap your SegmentedChoice in either SegmentedControl or MultipleSegmentedControl',\n );\n }\n return context;\n};\n","import React from 'react';\nimport classNames from 'classnames';\nimport {\n useSegmentedContext,\n SelectedValues,\n SelectedValue,\n} from './SegmentedContext';\nimport './SegmentedChoice.scss';\n\nexport type SegmentedChoiceProps = {\n /** Verdien til valget */\n value: string;\n /** Innhold som beskriver valget */\n children: React.ReactNode;\n /** Ekstra klassenavn */\n className?: string;\n /** Callback som kalles når komponenten endres */\n onChange?: (e: React.ChangeEvent<HTMLInputElement>) => void;\n} & React.DetailedHTMLProps<\n React.InputHTMLAttributes<HTMLInputElement>,\n HTMLInputElement\n>;\n\nexport const SegmentedChoice = React.forwardRef<\n HTMLInputElement,\n SegmentedChoiceProps\n>(\n (\n {\n children,\n className,\n style,\n value,\n name,\n onChange = () => undefined,\n ...rest\n },\n ref: React.Ref<HTMLInputElement>,\n ) => {\n const {\n name: commonName,\n selectedValue,\n onChange: commonOnChange,\n multiple,\n size,\n } = useSegmentedContext();\n\n const isChecked = multiple\n ? (selectedValue as SelectedValues)[value]\n : (selectedValue as SelectedValue) === value;\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n onChange(e);\n if (multiple) {\n commonOnChange({\n ...(selectedValue as SelectedValues),\n [value]: e.target.checked,\n } as any);\n } else if (e.target.checked) {\n commonOnChange(value as any);\n }\n };\n\n return (\n <label\n className={classNames('eds-segmented-choice', className)}\n style={style}\n >\n <input\n type={multiple ? 'checkbox' : 'radio'}\n name={name || commonName}\n checked={isChecked}\n value={value}\n onChange={handleChange}\n ref={ref}\n {...rest}\n />\n <div\n className={classNames('eds-base-segmented', {\n 'eds-base-segmented--large': size === 'large',\n })}\n >\n {children}\n </div>\n </label>\n );\n },\n);\n","import React from 'react';\nimport { SegmentedProvider, SelectedValue } from './SegmentedContext';\nimport { Fieldset } from '../Fieldset';\nimport classNames from 'classnames';\nimport './SegmentedControl.scss';\n\nexport type SegmentedControlProps = {\n /** Navn på input-elementene */\n name?: string;\n /** Beskrivende tekst */\n label?: string;\n /** En eller flere SegmentedChoice-komponenter */\n children: React.ReactNode;\n /** Den valgte verdien */\n selectedValue: SelectedValue;\n /** Callback for når det gjøres et valg */\n onChange: (value: SelectedValue) => void;\n /** Størrelsen på SegmentedChoice-komponentene */\n size?: 'medium' | 'large';\n /** Ekstra klassenavn */\n className?: string;\n [key: string]: any;\n};\n\nexport const SegmentedControl: React.FC<SegmentedControlProps> = ({\n children,\n label,\n name,\n onChange,\n selectedValue,\n size = 'medium',\n className,\n ...rest\n}) => {\n return (\n <SegmentedProvider\n name={name}\n selectedValue={selectedValue}\n onChange={onChange}\n multiple={false}\n size={size}\n >\n <Fieldset label={label}>\n <div\n className={classNames('eds-segmented-control', className)}\n {...rest}\n >\n {children}\n </div>\n </Fieldset>\n </SegmentedProvider>\n );\n};\n","import React from 'react';\nimport { Label } from '@entur/typography';\nimport { SegmentedProvider, SelectedValues } from './SegmentedContext';\nimport './SegmentedControl.scss';\n\nexport type MultipleSegmentedControlProps = {\n /** Navn på input-elementene */\n name?: string;\n /** Beskrivende tekst */\n label?: string;\n /** En eller flere SegmentedChoice-komponenter */\n children: React.ReactNode;\n /** Den eller de valgte verdiene */\n selectedValue: SelectedValues;\n /** Callback for når det gjøres et valg */\n onChange: (value: SelectedValues) => void;\n [key: string]: any;\n};\n\n/**This component is not used by anyone, and is therefore deprecated\n * @deprecated\n */\nexport const MultipleSegmentedControl: React.FC<\n MultipleSegmentedControlProps\n> = ({ children, label, name, onChange, selectedValue, ...rest }) => {\n return (\n <SegmentedProvider\n name={name}\n selectedValue={selectedValue}\n onChange={onChange}\n multiple={true}\n size=\"medium\"\n >\n <Label as=\"div\">{label}</Label>\n <div className=\"eds-segmented-control\" {...rest}>\n {children}\n </div>\n </SegmentedProvider>\n );\n};\n","import { warnAboutMissingStyles } from '@entur/utils';\nimport './index.scss';\n\nwarnAboutMissingStyles('form', 'icons', 'typography');\n\nexport * from './BaseFormControl';\nexport * from './Checkbox';\nexport * from './FeedbackText';\nexport * from './Fieldset';\nexport * from './InputGroupLabel';\nexport * from './InputGroupContext';\nexport * from './inputPanel';\nexport * from './Radio';\nexport * from './RadioGroup';\nexport * from './Switch';\nexport * from './TextArea';\nexport * from './TextField';\nexport * from './VariantProvider';\nexport * from './variants';\nexport * from './utils';\nexport * from './segmented-control/SegmentedChoice';\nexport * from './segmented-control/SegmentedControl';\nexport * from './segmented-control/MultipleSegmentedControl';\n"],"names":["error","jsx","ValidationSuccessFilledIcon","ValidationErrorFilledIcon","ValidationExclamationFilledIcon","jsxs","SubLabel","React","isFilled","Tooltip","IconButton","QuestionIcon","cx","mergeRefs","Paragraph","Heading5","useRef","useRandomId","useForceUpdate","colors","Fragment","CheckIcon","CloseSmallIcon","useOnMount","hasValue","Label","warnAboutMissingStyles"],"mappings":"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"}
1
+ {"version":3,"file":"form.cjs.js","sources":["../src/FeedbackText.tsx","../src/InputGroupContext.tsx","../src/InputGroupLabel.tsx","../src/VariantProvider.tsx","../src/BaseFormControl.tsx","../src/Checkbox.tsx","../src/Fieldset.tsx","../src/RadioGroupContext.tsx","../src/Radio.tsx","../src/inputPanel/InputPanelBase.tsx","../src/inputPanel/RadioPanel.tsx","../src/inputPanel/CheckboxPanel.tsx","../src/RadioGroup.tsx","../src/Switch.tsx","../src/utils.ts","../src/TextArea.tsx","../src/TextField.tsx","../src/segmented-control/SegmentedContext.tsx","../src/segmented-control/SegmentedChoice.tsx","../src/segmented-control/SegmentedControl.tsx","../src/segmented-control/MultipleSegmentedControl.tsx","../src/index.tsx"],"sourcesContent":["import React from 'react';\nimport {\n ValidationSuccessFilledIcon,\n ValidationErrorFilledIcon,\n ValidationExclamationFilledIcon,\n} from '@entur/icons';\nimport { SubLabel } from '@entur/typography';\nimport { VariantType } from '@entur/utils';\n\nimport classNames from 'classnames';\nimport './FeedbackText.scss';\n\n/** @deprecated use variant=\"information\" instead */\nconst info = 'info';\n/** @deprecated use variant=\"negative\" instead */\nconst error = 'error';\n\nconst AlertIcon: React.FC<{\n variant: VariantType | typeof info | typeof error;\n}> = ({ variant }) => {\n const iconClass = `eds-feedback-text__icon eds-feedback-text__icon--${variant}`;\n switch (variant) {\n case 'success':\n return (\n <ValidationSuccessFilledIcon\n aria-label=\"Suksessmelding\"\n className={iconClass}\n />\n );\n case 'negative':\n return (\n <ValidationErrorFilledIcon\n aria-label=\"Feilmelding\"\n className={iconClass}\n />\n );\n case 'information':\n return null;\n case 'warning':\n return (\n <ValidationExclamationFilledIcon\n aria-label=\"Varselmelding\"\n className={iconClass}\n />\n );\n case error:\n return (\n <ValidationErrorFilledIcon\n aria-label=\"Feilmelding\"\n className={iconClass}\n />\n );\n case info:\n return null;\n default:\n return null;\n }\n};\n\nexport type FeedbackTextProps = {\n /** Teksten som vises */\n children: React.ReactNode;\n /** Skjuler ikonet */\n hideIcon?: boolean;\n /** Feedbackvarianten*/\n variant: VariantType | typeof error | typeof info;\n /** Ekstra klassenavn */\n className?: string;\n [key: string]: any;\n};\nexport const FeedbackText: React.FC<FeedbackTextProps> = ({\n children,\n hideIcon = false,\n variant,\n className,\n ...rest\n}) => {\n return (\n <SubLabel\n className={classNames(\n 'eds-feedback-text',\n {\n 'eds-feedback-text--information':\n variant === info || variant === 'information',\n },\n className,\n )}\n {...rest}\n >\n {!hideIcon && <AlertIcon variant={variant} />}\n <span className=\"eds-feedback-text__text\">{children}</span>\n </SubLabel>\n );\n};\n","import * as React from 'react';\n\ntype InputGroupContextType = {\n isFilled: boolean;\n setFilled: (e: boolean) => void;\n};\n\nconst InputGroupContext = React.createContext<InputGroupContextType>({\n isFilled: false,\n setFilled: () => null,\n});\n\nexport const InputGroupContextProvider: React.FC<{\n children: React.ReactNode;\n}> = ({ children }) => {\n const [filled, setFilled] = React.useState(false);\n return (\n <InputGroupContext.Provider\n value={{ isFilled: filled, setFilled: setFilled }}\n >\n {children}\n </InputGroupContext.Provider>\n );\n};\n\nexport const useInputGroupContext: () => InputGroupContextType = () =>\n React.useContext(InputGroupContext);\n","import classNames from 'classnames';\nimport React from 'react';\nimport { useInputGroupContext } from './InputGroupContext';\nimport './InputGroupLabel.scss';\n\nexport type InputGroupLabelProps = {\n label?: React.ReactNode;\n required?: boolean;\n labelTooltip?: string;\n labelId: string;\n isFilled?: boolean;\n staticAnimation?: boolean;\n} & React.DetailedHTMLProps<\n React.LabelHTMLAttributes<HTMLLabelElement>,\n HTMLLabelElement\n>;\n\nexport const InputGroupLabel: React.FC<InputGroupLabelProps> = ({\n label,\n required,\n labelId,\n staticAnimation = false,\n className,\n isFilled: forceIsFilled,\n ...rest\n}) => {\n const { isFilled } = useInputGroupContext();\n const filler = staticAnimation || (forceIsFilled ?? isFilled);\n return (\n <label\n className={classNames(className, {\n 'eds-input-group-label-wrapper--filled': filler,\n 'eds-input-group-label-wrapper--controlled-label-position':\n forceIsFilled !== undefined,\n })}\n id={labelId}\n {...rest}\n >\n <span\n className={classNames('eds-input-group__label', {\n 'eds-input-group__label--filled': filler,\n })}\n >\n {label} {required && <span>*</span>}\n </span>\n </label>\n );\n};\n","import React from 'react';\nimport { VariantType } from '@entur/utils';\n\n/** @deprecated use variant=\"information\" instead */\nconst info = 'info';\n/** @deprecated use variant=\"negative\" instead */\nconst error = 'error';\n\nconst VariantContext = React.createContext<\n VariantType | typeof error | typeof info | null\n>(null);\n\nexport type VariantProviderProps = {\n variant?: VariantType | typeof error | typeof info;\n};\nexport const VariantProvider: React.FC<VariantProviderProps> = ({\n children,\n variant = null,\n}) => {\n return (\n <VariantContext.Provider value={variant}>\n {children}\n </VariantContext.Provider>\n );\n};\n\nexport const useVariant: () =>\n | VariantType\n | typeof error\n | typeof info\n | null = () => {\n const context = React.useContext(VariantContext);\n return context;\n};\n","import React from 'react';\nimport classNames from 'classnames';\n\nimport { VariantType } from '@entur/utils';\nimport { QuestionIcon } from '@entur/icons';\nimport { Placement, Tooltip } from '@entur/tooltip';\nimport { IconButton } from '@entur/button';\n\nimport { FeedbackText } from './FeedbackText';\nimport { InputGroupContextProvider } from './InputGroupContext';\nimport { InputGroupLabel } from './InputGroupLabel';\nimport { useVariant } from './VariantProvider';\n\nimport './BaseFormControl.scss';\n\n/** @deprecated use variant=\"information\" instead */\nconst info = 'info';\n/** @deprecated use variant=\"negative\" instead */\nconst error = 'error';\n\nexport type BaseFormControlProps = React.HTMLAttributes<HTMLDivElement> & {\n /** Et skjemaelement med `eds-form-control`-klassen */\n children: React.ReactNode;\n /** Ekstra klassenavn */\n className?: string;\n /** Sett til true om skjema-elementet er disabled */\n disabled?: boolean;\n /** Sett til true om skjema-elementet er i read-only modus */\n readOnly?: boolean;\n /** Tekst eller ikon som vises foran skjema-elementet */\n prepend?: React.ReactNode;\n /** Tekst eller ikon som vises etter skjema-elementet */\n append?: React.ReactNode;\n /** Valideringsvariant */\n variant?: VariantType | typeof error | typeof info;\n /**Størrelsen på skjemaelementet\n * @default \"medium\"\n */\n size?: 'medium' | 'large';\n /** Label til inputfeltet */\n label: React.ReactNode;\n /** En tooltip som forklarer labelen til inputfeltet */\n labelTooltip?: React.ReactNode;\n /** Forklarende tekst for knappen som åpner labelTooltip */\n labelTooltipButtonAriaLabel?: string;\n labelTooltipPlacement?: Placement;\n /** Illustrerer om inputfeltet er påkrevd eller ikke */\n required?: boolean;\n /** ID som settes på labelen til inputfeltet */\n labelId: string;\n /** Varselmelding, som vil komme under form-komponenten */\n feedback?: string;\n /** Om inputfeltet er fylt med data. Brukes for plassering av label */\n isFilled?: boolean;\n /**Ekstra props som sendes til label */\n labelProps?: { [key: string]: any };\n /** Ekstra styling */\n style?: React.CSSProperties;\n /** Plasserer labelen statisk på toppen av inputfeltet */\n disableLabelAnimation?: boolean;\n /** Setter feedbackText sin rolle til \"alert\" */\n onClick?: (event: React.MouseEvent<HTMLElement>) => void;\n ariaAlertOnFeedback?: boolean;\n /** Legg til et element etter feltet */\n after?: React.ReactNode;\n /** Legg til et element før feltet */\n before?: React.ReactNode;\n /** Aria-label som brukes når inputfeltet er i read-only modus */\n ariaLabelOnReadOnly?: string;\n};\n\nexport const BaseFormControl = React.forwardRef<\n HTMLDivElement,\n BaseFormControlProps\n>(\n (\n {\n after,\n before,\n children,\n className,\n disabled = false,\n readOnly = false,\n variant,\n prepend,\n append,\n size = 'medium',\n isFilled,\n label,\n required,\n labelTooltip,\n labelTooltipButtonAriaLabel = `Klikk for tilleggsinfo om ${label}-feltet`,\n labelTooltipPlacement = 'top',\n feedback,\n labelId,\n labelProps,\n style,\n disableLabelAnimation = false,\n ariaAlertOnFeedback = false,\n ariaLabelOnReadOnly = 'Dette skjemafeltet kan bare leses',\n ...rest\n },\n ref,\n ) => {\n const contextVariant = useVariant();\n const currentVariant = variant || contextVariant;\n\n return (\n <InputGroupContextProvider>\n <div\n className={classNames(\n 'eds-form-control__field-and-feedback-text',\n className,\n {\n 'eds-form-control__field-and-feedback-text--has-tooltip':\n labelTooltip !== undefined,\n },\n )}\n style={style}\n >\n {before}\n <div\n className={classNames(\n 'eds-form-control-wrapper',\n `eds-form-control-wrapper--size-${size}`,\n {\n 'eds-form-control-wrapper--success':\n currentVariant === 'success',\n 'eds-form-control-wrapper--negative':\n currentVariant === 'negative' || currentVariant === error,\n 'eds-form-control-wrapper--disabled': disabled,\n 'eds-form-control-wrapper--readonly': readOnly,\n 'eds-form-control-wrapper--is-filled': isFilled,\n },\n )}\n ref={ref}\n tabIndex={readOnly ? -1 : undefined}\n {...rest}\n >\n {prepend && (\n <div className=\"eds-form-control__prepend\">{prepend}</div>\n )}\n <InputGroupLabel\n label={label}\n required={required}\n labelId={labelId}\n staticAnimation={disableLabelAnimation}\n aria-label={\n readOnly ? `${label}, ${ariaLabelOnReadOnly}` : undefined\n }\n {...labelProps}\n />\n {labelTooltip && (\n <Tooltip\n content={labelTooltip}\n placement={labelTooltipPlacement}\n showCloseButton={false}\n disableFocusListener={true}\n disableHoverListener={true}\n disableClickListner={false}\n disableKeyboardListener={false}\n >\n <IconButton\n as=\"span\"\n tabIndex={0}\n role=\"button\"\n className=\"eds-form-control__append eds-form-control__append--tooltip\"\n aria-label={labelTooltipButtonAriaLabel}\n >\n <QuestionIcon\n className=\"eds-input-group__label-tooltip-icon\"\n aria-hidden=\"true\"\n />\n </IconButton>\n </Tooltip>\n )}\n {children}\n {append && <div className=\"eds-form-control__append\">{append}</div>}\n </div>\n {feedback && currentVariant && (\n <FeedbackText\n variant={currentVariant}\n role={ariaAlertOnFeedback ? 'alert' : undefined}\n >\n {feedback}\n </FeedbackText>\n )}\n {after}\n </div>\n </InputGroupContextProvider>\n );\n },\n);\n","import React, { CSSProperties } from 'react';\nimport cx from 'classnames';\nimport { Paragraph } from '@entur/typography';\nimport { mergeRefs } from '@entur/utils';\n\nimport './Checkbox.scss';\n\nexport type CheckboxProps = {\n /** Ekstra klassenavn */\n className?: string;\n /** Label for checkboxen, som vises ved høyre side. */\n children?: React.ReactNode;\n /** Om Checkbox er avmerket, eller om den er i en indeterminate state */\n checked?: 'indeterminate' | boolean;\n /** Callback for Checkbox */\n onChange?: (e: React.ChangeEvent<HTMLInputElement>) => void;\n /** Om checkboxen er disabled eller ikke\n * @default false\n */\n disabled?: boolean;\n /** Sett til true om skjema-elementet er i read-only modus\n * @default false\n */\n readOnly?: boolean;\n /**Ekstra styling til komponenten */\n style?: CSSProperties;\n /** Reduserer klikkflaten for Checkbox'en\n * @default false\n */\n reduceClickArea?: boolean;\n /** Om animasjon skal deaktiveres\n * @default false\n */\n disableAnimation?: boolean;\n} & Omit<React.InputHTMLAttributes<HTMLInputElement>, 'checked'>;\n\nexport const Checkbox = React.forwardRef<HTMLInputElement, CheckboxProps>(\n (\n {\n checked,\n className,\n children,\n style,\n disabled = false,\n readOnly = false,\n reduceClickArea,\n disableAnimation = false,\n ...rest\n },\n ref: React.Ref<HTMLInputElement>,\n ) => {\n const inputRef = React.useRef<HTMLInputElement>(null);\n\n const isIndeterminate = checked === 'indeterminate';\n const isControlled = checked !== undefined;\n\n React.useEffect(() => {\n if (inputRef && inputRef.current) {\n inputRef.current.indeterminate = isIndeterminate;\n }\n }, [isIndeterminate]);\n\n return (\n <label\n className={cx('eds-checkbox__container', className, {\n 'eds-checkbox--disabled': disabled,\n 'eds-checkbox--readonly': readOnly,\n 'eds-checkbox__container--reduced-click-area': reduceClickArea,\n })}\n style={style}\n >\n <input\n type=\"checkbox\"\n ref={mergeRefs(ref, inputRef)}\n checked={isControlled ? checked === true : undefined}\n disabled={disabled}\n onKeyDown={e => {\n if (readOnly && (e.key === ' ' || e.key === 'Enter')) {\n e.preventDefault();\n e.stopPropagation();\n }\n }}\n aria-label={\n readOnly ? ` ${children?.toString()}. Kan ikke endres` : undefined\n }\n {...rest}\n />\n <span\n className={cx('eds-checkbox__icon', {\n 'eds-checkbox__icon--disabled': disabled,\n 'eds-checkbox__icon--readonly': readOnly,\n 'eds-checkbox__icon--reduced-click-area': reduceClickArea,\n 'eds-checkbox__icon--no-animation':\n disableAnimation || disabled || readOnly,\n })}\n >\n <CheckboxIcon indeterminate={isIndeterminate} />\n </span>\n {children && (\n <Paragraph className=\"eds-checkbox__label\" margin=\"none\" as=\"span\">\n {children}\n </Paragraph>\n )}\n </label>\n );\n },\n);\n\nconst CheckboxIcon: React.FC<{ indeterminate: boolean }> = ({\n indeterminate = false,\n}) => {\n return (\n <svg\n className=\"eds-checkbox-icon\"\n width=\"11px\"\n height=\"9px\"\n viewBox=\"6 11 37 33\"\n aria-hidden={true}\n >\n {indeterminate ? (\n <rect x=\"10\" y=\"25\" width=\"28\" height=\"5\" fill=\"white\" />\n ) : (\n <path d=\"M14.1 27.2l7.1 7.2 14.6-14.8\" fill=\"none\" />\n )}\n </svg>\n );\n};\n","import React from 'react';\nimport classNames from 'classnames';\nimport { Heading5 } from '@entur/typography';\nimport './Fieldset.scss';\n\nexport type FieldsetProps = {\n /** Innholdet i felt-gruppen. */\n children: React.ReactNode;\n /** Ekstra klassenavn */\n className?: string;\n /** Labelen til felt-gruppen. */\n label?: React.ReactNode;\n [key: string]: any;\n};\n\nexport const Fieldset: React.FC<FieldsetProps> = ({\n children,\n className,\n label,\n ...rest\n}) => (\n <fieldset className={classNames('eds-fieldset', className)} {...rest}>\n {label && <Heading5 as=\"legend\">{label}</Heading5>}\n {children}\n </fieldset>\n);\n","import React from 'react';\n\ntype RadioGroupContextProps = {\n name: string;\n onChange: (e: React.ChangeEvent<HTMLInputElement>) => void;\n value: string | null;\n readOnly?: boolean;\n};\n\nconst RadioGroupContext = React.createContext<RadioGroupContextProps | null>(\n null,\n);\n\nexport const RadioGroupContextProvider = RadioGroupContext.Provider;\n\nexport const useRadioGroupContext: () => RadioGroupContextProps = () => {\n const context = React.useContext(RadioGroupContext);\n if (!context) {\n throw new Error(\n 'You need to wrap your RadioButtons in a RadioGroup component',\n );\n }\n return context;\n};\n","import React from 'react';\nimport cx from 'classnames';\nimport { Paragraph } from '@entur/typography';\nimport { useRadioGroupContext } from './RadioGroupContext';\nimport './Radio.scss';\n\nexport type RadioProps = {\n /** Ekstra klassenavn */\n className?: string;\n /** Label til radio-button. Vises ved høyre side. */\n children?: React.ReactNode;\n /** Verdien til radioknappen */\n value: string;\n /** Om radiobutton er disabled eller ikke\n * @default false\n */\n disabled?: boolean;\n /** Beskrivelse som leses opp av skjermlesere når radiobutton er readonly */\n readOnlyLabelDescription?: string;\n} & React.InputHTMLAttributes<HTMLInputElement>;\n\nexport const Radio = React.forwardRef<HTMLInputElement, RadioProps>(\n (\n { className, children, value, disabled, readOnlyLabelDescription, ...rest },\n ref: React.Ref<HTMLInputElement>,\n ) => {\n const {\n name,\n value: selectedValue,\n onChange,\n readOnly,\n } = useRadioGroupContext();\n\n const classList = cx(className, 'eds-form-component--radio__radio', {\n 'eds-form-component--radio__radio--disabled': disabled,\n 'eds-form-component--radio__radio--readonly': readOnly,\n });\n\n return (\n <label className=\"eds-form-component--radio__container\">\n <input\n type=\"radio\"\n name={rest.name ?? name}\n ref={ref}\n value={value}\n checked={rest.checked ?? selectedValue === value}\n onChange={e => {\n if (readOnly) {\n e.preventDefault();\n return;\n }\n (rest.onChange ?? onChange)?.(e);\n }}\n onClick={e => {\n if (readOnly) {\n e.preventDefault();\n }\n }}\n disabled={disabled}\n aria-label={\n readOnly\n ? `${children?.toString()}. ${\n readOnlyLabelDescription ?? 'Kan ikke endres'\n }`\n : undefined\n }\n {...rest}\n />\n <span className={classList}>\n <span className=\"eds-form-component--radio__circle\"></span>\n </span>\n {children && (\n <Paragraph\n margin=\"none\"\n as=\"span\"\n className=\"eds-form-component--radio__label\"\n >\n {children}\n </Paragraph>\n )}\n </label>\n );\n },\n);\n","import React, { useRef } from 'react';\nimport classNames from 'classnames';\nimport { mergeRefs, useRandomId, useForceUpdate } from '@entur/utils';\nimport { Checkbox } from '../Checkbox';\nimport { Radio } from '../Radio';\n\nimport './InputPanelBase.scss';\n\nexport type InputPanelProps = {\n /** Om det er en radio- eller checkbox-variant */\n type: string;\n /** Verdien til input-panelet */\n value: string;\n /** Om input-panelet skal være valgt eller ikke */\n checked?: boolean;\n /** Hovedtittelen til input-panelet */\n title: React.ReactNode;\n /** Ektstra label som står høyrestilt, til venstre for Checkboxen/Radio-button-en */\n secondaryLabel?: React.ReactNode;\n /** Ekstra informasjon som legges nederst i input-panelet */\n children?: React.ReactNode;\n /** Størrelse på input-panelet\n * @default \"medium\"\n */\n size?: 'medium' | 'large';\n /**Skjuler checkbox-/radio-button-en i input-panelet\n * @default false\n */\n hideSelectionIndicator?: boolean;\n /** Ekstra klassenavn */\n className?: string;\n /** Om input-panelet er deaktivert eller ikke\n * @default false\n */\n disabled?: boolean;\n /** */\n style?: React.CSSProperties;\n} & Omit<\n React.DetailedHTMLProps<\n React.InputHTMLAttributes<HTMLInputElement>,\n HTMLInputElement\n >,\n 'title' | 'size'\n>;\n\nexport const InputPanelBase = React.forwardRef<\n HTMLInputElement,\n InputPanelProps\n>(\n (\n {\n className,\n children,\n value,\n title,\n secondaryLabel,\n size = 'medium',\n hideSelectionIndicator = false,\n style,\n id,\n disabled = false,\n type = 'radio',\n onChange,\n checked,\n name,\n ...rest\n },\n ref: React.Ref<HTMLInputElement>,\n ) => {\n const classList = classNames(\n className,\n 'eds-input-panel__container',\n `eds-input-panel--${size}`,\n );\n\n const inputRef = useRef<HTMLInputElement>(null);\n\n const defaultId = useRandomId('eds-inputpanel');\n const inputPanelId = id || defaultId;\n const forceUpdate = useForceUpdate();\n\n const handleOnChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n if (onChange === undefined) forceUpdate();\n onChange?.(e);\n };\n\n return (\n <label className=\"eds-input-panel\" htmlFor={inputPanelId}>\n <input\n type={type}\n name={name}\n ref={mergeRefs(ref, inputRef)}\n value={value}\n checked={checked}\n onChange={handleOnChange}\n id={inputPanelId}\n disabled={disabled}\n {...rest}\n />\n <div className={classList} style={style}>\n <div className=\"eds-input-panel__title-wrapper\">\n <div className=\"eds-input-panel__title\">{title}</div>\n <div className=\"eds-input-panel__secondary-label-and-icon-wrapper\">\n {secondaryLabel !== undefined && <>{secondaryLabel}</>}\n <span style={{ pointerEvents: 'none' }}>\n {!(disabled || hideSelectionIndicator) &&\n (type === 'radio' ? (\n <Radio\n name=\"\"\n value=\"\"\n checked={checked ?? inputRef.current?.checked ?? false}\n onChange={() => {\n return;\n }}\n aria-hidden=\"true\"\n tabIndex={-1}\n />\n ) : (\n <Checkbox\n checked={checked ?? inputRef.current?.checked ?? false}\n onChange={() => null}\n aria-hidden=\"true\"\n tabIndex={-1}\n />\n ))}\n </span>\n </div>\n </div>\n {children && (\n <div className=\"eds-input-panel__additional-content\">\n {children}\n </div>\n )}\n </div>\n </label>\n );\n },\n);\n","import React from 'react';\nimport { useRadioGroupContext } from '../RadioGroupContext';\nimport { InputPanelBase } from './InputPanelBase';\n\nexport type RadioPanelProps = {\n /** Verdien til radio-panelet */\n value: string;\n /** Hovedtittelen til radio-panelet */\n title: React.ReactNode;\n /** Ektstra label som står høyrestilt, til venstre for radio-button-en */\n secondaryLabel?: React.ReactNode;\n /** Ekstra informasjon som legges nederst i radio-panelet */\n children?: React.ReactNode;\n /** Størrelse på radio-panelet\n * @default \"medium\"\n */\n size?: 'medium' | 'large';\n /**Skjuler radio-button-en i radio-panelet\n * @default false\n */\n hideRadioButton?: boolean;\n /** Ekstra klassenavn */\n className?: string;\n /** Om radio-panelet er deaktivert eller ikke\n * @default false\n */\n disabled?: boolean;\n /** */\n style?: React.CSSProperties;\n} & Omit<\n React.DetailedHTMLProps<\n React.InputHTMLAttributes<HTMLInputElement>,\n HTMLInputElement\n >,\n 'title' | 'size'\n>;\n\nexport const RadioPanel = React.forwardRef<HTMLInputElement, RadioPanelProps>(\n (\n {\n className,\n children,\n value,\n title,\n secondaryLabel,\n size = 'medium',\n hideRadioButton = false,\n style,\n id,\n disabled = false,\n ...rest\n },\n ref: React.Ref<HTMLInputElement>,\n ) => {\n const { name, value: selected, onChange } = useRadioGroupContext();\n\n return (\n <InputPanelBase\n type=\"radio\"\n name={name}\n title={title}\n value={value}\n checked={selected === value}\n onChange={onChange}\n className={className}\n secondaryLabel={secondaryLabel}\n size={size}\n hideSelectionIndicator={hideRadioButton}\n style={style}\n id={id}\n disabled={disabled}\n {...rest}\n ref={ref}\n >\n {children}\n </InputPanelBase>\n );\n },\n);\n","import React from 'react';\nimport { InputPanelBase } from './InputPanelBase';\n\nexport type CheckboxPanelProps = {\n /** Verdien til CheckboxPanel */\n value: string;\n /** Om checkbox-panelet skal være valgt eller ikke */\n checked?: boolean;\n /** Hovedtittelen til CheckboxPanel */\n title: React.ReactNode;\n /** Ektstra label som står høyrestilt mot Checkboxen */\n secondaryLabel?: React.ReactNode;\n /** Ekstra informasjon som legges nederst i CheckboxPanel */\n children?: React.ReactNode;\n /** Størrelse på CheckboxPanel\n * @default \"medium\"\n */\n size?: 'medium' | 'large';\n /**Skjuler checkbox-en i CheckboxPanel\n * @default false\n */\n hideCheckbox?: boolean;\n /** Ekstra klassenavn */\n className?: string;\n /** Om CheckboxPanel er deaktivert eller ikke\n * @default false\n */\n disabled?: boolean;\n /** */\n style?: React.CSSProperties;\n} & Omit<\n React.DetailedHTMLProps<\n React.InputHTMLAttributes<HTMLInputElement>,\n HTMLInputElement\n >,\n 'title' | 'size'\n>;\n\nexport const CheckboxPanel = React.forwardRef<\n HTMLInputElement,\n CheckboxPanelProps\n>(\n (\n {\n name,\n checked,\n onChange,\n className,\n children,\n value,\n title,\n secondaryLabel,\n size = 'medium',\n hideCheckbox = false,\n style,\n id,\n disabled = false,\n ...rest\n },\n ref: React.Ref<HTMLInputElement>,\n ) => {\n return (\n <InputPanelBase\n type=\"checkbox\"\n name={name}\n title={title}\n value={value}\n checked={checked}\n onChange={onChange}\n className={className}\n secondaryLabel={secondaryLabel}\n size={size}\n hideSelectionIndicator={hideCheckbox}\n style={style}\n id={id}\n disabled={disabled}\n {...rest}\n ref={ref}\n >\n {children}\n </InputPanelBase>\n );\n },\n);\n","import React from 'react';\nimport { RadioGroupContextProvider } from './RadioGroupContext';\nimport { Fieldset } from './Fieldset';\n\nexport type RadioGroupProps = {\n /** Navnet til radiogruppen. */\n name: string;\n /** Overskrift over radiogruppen */\n label?: string;\n /** Verdien til den valgte radioknappen */\n value: string | null;\n /** Radioknappene sendes inn som children */\n children: React.ReactNode;\n /** En callback som blir kalles hver gang en radioknapp klikkes på */\n onChange: (e: React.ChangeEvent<HTMLInputElement>) => void;\n [key: string]: any;\n /** Sett radiogruppen i readonly-modus */\n readOnly?: boolean;\n};\n\nexport const RadioGroup: React.FC<RadioGroupProps> = ({\n name,\n value,\n children,\n onChange,\n label,\n readOnly = false,\n ...rest\n}) => {\n const contextValue = React.useMemo(\n () => ({ name, value, onChange, readOnly }),\n [name, value, onChange, readOnly],\n );\n return (\n <RadioGroupContextProvider value={contextValue}>\n {label ? (\n <Fieldset label={label} {...rest}>\n {children}\n </Fieldset>\n ) : (\n children\n )}\n </RadioGroupContextProvider>\n );\n};\n","import React from 'react';\nimport classNames from 'classnames';\nimport { colors } from '@entur/tokens';\nimport { CheckIcon, CloseSmallIcon } from '@entur/icons';\nimport './Switch.scss';\n\nexport type SwitchProps = {\n /** Ekstra klassenavn */\n className?: string;\n /** Label for Switch-en. */\n children?: React.ReactNode;\n /** Posisjonen til label for Switch-en.\n * @default \"right\"\n */\n labelPlacement?: 'right' | 'bottom';\n /** Om switch-en er checked eller ikke */\n checked?: boolean;\n /** Ikonet som skal stå inne i sirkelen på Switch-en */\n icon?: React.ReactNode;\n /** Skjul ikonet inne i sikrelen på Switch-en\n * @default false\n */\n hideIcon?: boolean;\n /** Farge som settes på ikon og bakgrunn når Switch-en er \"checked\"\n * @default colors.validation.mint\n */\n color?: string;\n /** Farge på bakgrunn når Switch-en er \"checked\" og står i en kontrast-seksjon\n * @default colors.validation.mintContrast\n */\n contrastColor?: string;\n /** Størrelsen på Switch-en\n * @default \"medium\"\n */\n size?: 'medium' | 'large';\n /** Callback for når verdien endres */\n onChange?: (e: React.ChangeEvent<HTMLInputElement>) => void;\n} & Omit<React.InputHTMLAttributes<HTMLInputElement>, 'size'>;\n\nexport const Switch = React.forwardRef<HTMLInputElement, SwitchProps>(\n (\n {\n className,\n children,\n labelPlacement = 'right',\n icon,\n hideIcon = false,\n color = colors.validation.mint,\n contrastColor = colors.validation.mintContrast,\n size = 'medium',\n checked,\n ...rest\n },\n ref: React.Ref<HTMLInputElement>,\n ) => {\n const displayedIcon = () => {\n if (icon) return icon;\n if (checked === undefined) return <></>;\n const iconSize = size === 'large' ? 23 : undefined;\n return checked ? (\n <CheckIcon size={iconSize} />\n ) : (\n <CloseSmallIcon size={iconSize} />\n );\n };\n\n return (\n <label\n className={classNames(\n 'eds-switch',\n `eds-switch--${labelPlacement}`,\n className,\n )}\n style={{ ...rest.style }}\n >\n <input type=\"checkbox\" ref={ref} checked={checked} {...rest} />\n <span\n className={classNames(\n 'eds-switch__switch',\n `eds-switch__switch--${size}`,\n )}\n style={\n {\n '--eds-switch-color': color,\n '--eds-switch-contrast-color': contrastColor,\n } as React.CSSProperties\n }\n aria-hidden=\"true\"\n >\n <span className=\"eds-switch__circle\">\n {!hideIcon && displayedIcon()}\n </span>\n </span>\n {children && (\n <span\n className={classNames(\n 'eds-switch__label',\n `eds-switch__label--${size}--${labelPlacement}`,\n )}\n >\n {children}\n </span>\n )}\n </label>\n );\n },\n);\n","// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types -- disabled during Yarn upgrade\nexport function hasValue(value: any): boolean {\n return value != null && !(Array.isArray(value) && value.length === 0);\n}\n\n// Determine if field is empty or filled.\n// Response determines if label is presented above field or as placeholder.\n//\n// @param obj\n// @param SSR\n// @returns {boolean} False when not present or empty string.\n// True when any number or string with length.\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types -- disabled during Yarn upgrade\nexport function isFilled(obj: any, SSR = false): boolean {\n return (\n obj &&\n ((hasValue(obj.value) && obj.value !== '') ||\n (SSR && hasValue(obj.defaultValue) && obj.defaultValue !== ''))\n );\n}\n","import React from 'react';\nimport classNames from 'classnames';\n\nimport { useRandomId, useOnMount, mergeRefs, VariantType } from '@entur/utils';\n\nimport { useVariant } from './VariantProvider';\nimport { BaseFormControl } from './BaseFormControl';\nimport { useInputGroupContext } from './InputGroupContext';\nimport { isFilled } from './utils';\n\nimport './TextArea.scss';\nimport { Placement } from '@entur/tooltip';\n\n/** @deprecated use variant=\"information\" instead */\nconst info = 'info';\n/** @deprecated use variant=\"negative\" instead */\nconst error = 'error';\n\nexport type TextAreaProps = {\n /** Ekstra klassenavn */\n className?: string;\n /** Valideringsvariant */\n variant?: VariantType | typeof error | typeof info;\n /** Deaktiverer tekstområdet */\n disabled?: boolean;\n /** Setter tekstområdet i read-only modus */\n readOnly?: boolean;\n /** Label over TextArea */\n label: string;\n /** En tooltip som forklarer labelen til inputfeltet */\n labelTooltip?: React.ReactNode;\n /** Forklarende tekst for knappen som åpner labelTooltip */\n labelTooltipButtonAriaLabel?: string;\n /** Plasseringen til tooltip-en relativt til spørsmålstegn-knappen */\n labelTooltipPlacement?: Placement;\n /** Varselmelding, som vil komme under TextArea */\n feedback?: string;\n /** Plasserer labelen statisk på toppen av inputfeltet\n * @default false\n */\n disableLabelAnimation?: boolean;\n} & React.TextareaHTMLAttributes<HTMLTextAreaElement>;\n\nexport const TextArea = React.forwardRef<HTMLTextAreaElement, TextAreaProps>(\n (\n {\n variant,\n disabled = false,\n readOnly = false,\n className,\n style,\n label,\n feedback,\n labelTooltip,\n labelTooltipButtonAriaLabel,\n labelTooltipPlacement,\n onChange,\n disableLabelAnimation,\n ...rest\n },\n ref: React.Ref<HTMLTextAreaElement>,\n ) => {\n const textAreaId = useRandomId('eds-textarea');\n const textareaRef = React.useRef<HTMLTextAreaElement>(null);\n return (\n <BaseFormControl\n className={classNames(className, 'eds-textarea__wrapper')}\n disabled={disabled}\n readOnly={readOnly}\n variant={variant}\n style={style}\n label={label}\n labelId={textAreaId}\n feedback={feedback}\n labelTooltip={labelTooltip}\n labelTooltipButtonAriaLabel={labelTooltipButtonAriaLabel}\n labelTooltipPlacement={labelTooltipPlacement}\n labelProps={{ className: 'eds-textarea__label' }}\n disableLabelAnimation={disableLabelAnimation}\n onClick={e => {\n if (e.target === e.currentTarget) textareaRef?.current?.focus();\n }}\n >\n <TextAreaBase\n readOnly={readOnly}\n disabled={disabled}\n ref={mergeRefs(ref, textareaRef)}\n aria-labelledby={textAreaId}\n onChange={onChange}\n variant={variant}\n {...rest}\n />\n </BaseFormControl>\n );\n },\n);\n\ntype TextAreaBaseProps = {\n readOnly?: boolean;\n disabled?: boolean;\n variant?: VariantType | typeof error | typeof info;\n} & React.TextareaHTMLAttributes<HTMLTextAreaElement>;\n\nconst TextAreaBase = React.forwardRef<HTMLTextAreaElement, TextAreaBaseProps>(\n ({ readOnly, disabled, onChange, value, variant, ...rest }, ref) => {\n const contextVariant = useVariant();\n const currentVariant = variant || contextVariant;\n const { isFilled: isInputFilled, setFilled: setFiller } =\n useInputGroupContext();\n\n useOnMount(() => {\n if (value?.toString() || rest.defaultValue) {\n setFiller && !isInputFilled && setFiller(true);\n }\n });\n React.useEffect(() => {\n if (value?.toString() && setFiller && !isInputFilled) {\n setFiller(true);\n }\n }, [value, setFiller, isInputFilled]);\n\n const handleChange = (event: React.ChangeEvent<HTMLTextAreaElement>) => {\n if (isFilled(event.target)) {\n setFiller && !isInputFilled && setFiller(true);\n } else {\n setFiller && isInputFilled && setFiller(false);\n }\n if (onChange) {\n onChange(event);\n }\n };\n\n return (\n <textarea\n className=\"eds-form-control eds-textarea\"\n ref={ref}\n readOnly={readOnly}\n disabled={disabled}\n onChange={handleChange}\n value={value}\n aria-invalid={currentVariant === 'error'}\n {...rest}\n />\n );\n },\n);\n","import React from 'react';\nimport classNames from 'classnames';\n\nimport { CloseSmallIcon } from '@entur/icons';\nimport { useRandomId, useOnMount, mergeRefs, VariantType } from '@entur/utils';\n\nimport { BaseFormControl } from './BaseFormControl';\nimport { useInputGroupContext } from './InputGroupContext';\nimport { isFilled } from './utils';\nimport { useVariant } from './VariantProvider';\nimport './TextField.scss';\nimport { Placement } from '@entur/tooltip';\n\n/** @deprecated use variant=\"information\" instead */\nconst info = 'info';\n/** @deprecated use variant=\"negative\" instead */\nconst error = 'error';\n\nexport type TextFieldProps = {\n /** Tekst eller ikon som kommer før inputfeltet */\n prepend?: React.ReactNode;\n /** Tekst eller ikon som kommer etter inputfeltet */\n append?: React.ReactNode;\n /** Ekstra klassenavn */\n className?: string;\n /** Label over TextField */\n label: React.ReactNode;\n /** En tooltip som forklarer labelen til inputfeltet */\n labelTooltip?: React.ReactNode;\n /** Forklarende tekst for knappen som åpner labelTooltip */\n labelTooltipButtonAriaLabel?: string;\n /** Plasseringen til tooltip-en relativt til spørsmålstegn-knappen */\n labelTooltipPlacement?: Placement;\n /** Varselmelding, som vil komme under TextField */\n feedback?: string;\n /** Hvilken valideringsfarge som vises*/\n variant?: VariantType | typeof error | typeof info;\n /** Deaktiver inputfeltet */\n disabled?: boolean;\n /** Setter inputfeltet i read-only modus */\n readOnly?: boolean;\n /** Størrelsen på TextField\n * @default \"medium\"\n */\n size?: 'medium' | 'large';\n /** Plasserer labelen statisk på toppen av inputfeltet\n * @default false\n */\n disableLabelAnimation?: boolean;\n /** Ekstra props som sendes til label-elementet */\n labelProps?: React.DetailedHTMLProps<\n React.LabelHTMLAttributes<HTMLLabelElement>,\n HTMLLabelElement\n >;\n /** Om man skal ha muliget for å nullstille TextField. Viser lukkekryss hvis feltet er fylt.\n * @default false\n */\n clearable?: boolean;\n /** Callback for clearable */\n onClear?: () => void;\n ariaAlertOnFeedback?: boolean;\n} & Omit<React.InputHTMLAttributes<HTMLInputElement>, 'size' | 'label'>;\n\nexport const TextField = React.forwardRef<HTMLInputElement, TextFieldProps>(\n (\n {\n prepend,\n append,\n variant,\n disabled = false,\n readOnly = false,\n className,\n style,\n size = 'medium',\n label,\n required,\n labelTooltip,\n labelTooltipButtonAriaLabel,\n labelTooltipPlacement,\n feedback,\n onChange,\n disableLabelAnimation,\n labelProps,\n clearable = false,\n onClear,\n value,\n ariaAlertOnFeedback = false,\n ...rest\n },\n ref: React.Ref<HTMLInputElement>,\n ) => {\n const randomId = useRandomId('eds-textfield');\n const textFieldId = labelProps && labelProps.id ? labelProps.id : randomId;\n const textFieldRef = React.useRef<HTMLInputElement>(null);\n return (\n <BaseFormControl\n disabled={disabled}\n readOnly={readOnly}\n variant={variant}\n prepend={prepend}\n append={\n clearable && onClear ? <ClearButton onClear={onClear} /> : append\n }\n className={classNames(className, 'eds-textfield__wrapper')}\n style={style}\n size={size}\n label={label}\n required={required}\n labelTooltip={labelTooltip}\n labelTooltipButtonAriaLabel={labelTooltipButtonAriaLabel}\n labelTooltipPlacement={labelTooltipPlacement}\n labelId={textFieldId}\n feedback={feedback}\n disableLabelAnimation={disableLabelAnimation}\n labelProps={labelProps}\n ariaAlertOnFeedback={ariaAlertOnFeedback}\n onClick={e => {\n if (e.target === e.currentTarget) textFieldRef?.current?.focus();\n }}\n >\n <TextFieldBase\n disabled={disabled}\n readOnly={readOnly}\n ref={mergeRefs(ref, textFieldRef)}\n aria-labelledby={textFieldId}\n onChange={onChange}\n value={value}\n variant={variant}\n {...rest}\n />\n </BaseFormControl>\n );\n },\n);\n\ntype TextFieldBaseProps = {\n /** Deaktiver inputfeltet */\n disabled?: boolean;\n /** Setter inputfeltet i read-only modus */\n readOnly?: boolean;\n variant?: VariantType | typeof error | typeof info;\n} & React.DetailedHTMLProps<\n React.InputHTMLAttributes<HTMLInputElement>,\n HTMLInputElement\n>;\n\nconst TextFieldBase = React.forwardRef<HTMLInputElement, TextFieldBaseProps>(\n (\n { disabled, readOnly, placeholder, onChange, value, variant, ...rest },\n forwardRef,\n ) => {\n const contextVariant = useVariant();\n const currentVariant = variant || contextVariant;\n const { isFilled: isInputFilled, setFilled: setFiller } =\n useInputGroupContext();\n\n useOnMount(() => {\n if (value?.toString() || rest.defaultValue) {\n setFiller && !isInputFilled && setFiller(true);\n }\n });\n React.useEffect(() => {\n if (value?.toString() && setFiller && !isInputFilled) {\n setFiller(true);\n }\n }, [value, setFiller, isInputFilled]);\n\n const handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n if (isFilled(event.target)) {\n setFiller && !isInputFilled && setFiller(true);\n } else {\n setFiller && isInputFilled && setFiller(false);\n }\n if (onChange) {\n onChange(event);\n }\n };\n\n return (\n <input\n aria-invalid={currentVariant === 'error'}\n className=\"eds-form-control\"\n disabled={disabled}\n readOnly={readOnly}\n ref={forwardRef}\n placeholder={placeholder}\n onChange={handleChange}\n value={value}\n {...rest}\n />\n );\n },\n);\n\nconst ClearButton: React.FC<{\n onClear: () => void;\n [key: string]: any;\n}> = ({ onClear, ...props }) => {\n const { isFilled: hasValue, setFilled } = useInputGroupContext();\n return (\n <div className=\"eds-textfield__clear-button-wrapper\">\n {hasValue && <div className=\"eds-textfield__divider\"></div>}\n {hasValue && (\n <button\n className=\"eds-textfield__clear-button\"\n type=\"button\"\n tabIndex={-1}\n onClick={() => {\n setFilled(false);\n onClear();\n }}\n {...props}\n >\n <CloseSmallIcon />\n </button>\n )}\n </div>\n );\n};\n","import React from 'react';\nimport { useRandomId } from '@entur/utils';\n\nexport type SelectedValues = { [key: string]: boolean };\nexport type SelectedValue = string | null;\nexport type SegmentedContextProps =\n | {\n name: string;\n onChange: (value: SelectedValues) => void;\n selectedValue: SelectedValues;\n multiple: true;\n size: 'medium' | 'large';\n }\n | {\n name: string;\n onChange: (value: SelectedValue) => void;\n selectedValue: SelectedValue;\n multiple: false;\n size: 'medium' | 'large';\n };\n\nconst SegmentedContext = React.createContext<SegmentedContextProps | null>(\n null,\n);\n\nexport type SegmentedProviderProps =\n | {\n name?: string;\n onChange?: (value: SelectedValues) => void;\n selectedValue: SelectedValues;\n multiple: true;\n size: 'medium' | 'large';\n }\n | {\n name?: string;\n onChange?: (value: SelectedValue) => void;\n selectedValue: SelectedValue;\n multiple: false;\n size: 'medium' | 'large';\n };\n\nexport const SegmentedProvider: React.FC<SegmentedProviderProps> = ({\n name,\n onChange = () => undefined,\n selectedValue,\n multiple,\n size,\n ...rest\n}) => {\n const generatedName = useRandomId('eds-segmented-control');\n const contextValue = React.useMemo(\n () => ({\n name: name || generatedName,\n onChange,\n multiple,\n selectedValue,\n size,\n }),\n [generatedName, multiple, name, onChange, selectedValue, size],\n ) as SegmentedContextProps;\n return <SegmentedContext.Provider value={contextValue} {...rest} />;\n};\n\nexport const useSegmentedContext = (): SegmentedContextProps => {\n const context = React.useContext(SegmentedContext);\n if (!context) {\n throw new Error(\n 'You need to wrap your SegmentedChoice in either SegmentedControl or MultipleSegmentedControl',\n );\n }\n return context;\n};\n","import React from 'react';\nimport classNames from 'classnames';\nimport {\n useSegmentedContext,\n SelectedValues,\n SelectedValue,\n} from './SegmentedContext';\nimport './SegmentedChoice.scss';\n\nexport type SegmentedChoiceProps = {\n /** Verdien til valget */\n value: string;\n /** Innhold som beskriver valget */\n children: React.ReactNode;\n /** Ekstra klassenavn */\n className?: string;\n /** Callback som kalles når komponenten endres */\n onChange?: (e: React.ChangeEvent<HTMLInputElement>) => void;\n} & React.DetailedHTMLProps<\n React.InputHTMLAttributes<HTMLInputElement>,\n HTMLInputElement\n>;\n\nexport const SegmentedChoice = React.forwardRef<\n HTMLInputElement,\n SegmentedChoiceProps\n>(\n (\n {\n children,\n className,\n style,\n value,\n name,\n onChange = () => undefined,\n ...rest\n },\n ref: React.Ref<HTMLInputElement>,\n ) => {\n const {\n name: commonName,\n selectedValue,\n onChange: commonOnChange,\n multiple,\n size,\n } = useSegmentedContext();\n\n const isChecked = multiple\n ? (selectedValue as SelectedValues)[value]\n : (selectedValue as SelectedValue) === value;\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n onChange(e);\n if (multiple) {\n commonOnChange({\n ...(selectedValue as SelectedValues),\n [value]: e.target.checked,\n } as any);\n } else if (e.target.checked) {\n commonOnChange(value as any);\n }\n };\n\n return (\n <label\n className={classNames('eds-segmented-choice', className)}\n style={style}\n >\n <input\n type={multiple ? 'checkbox' : 'radio'}\n name={name || commonName}\n checked={isChecked}\n value={value}\n onChange={handleChange}\n ref={ref}\n {...rest}\n />\n <div\n className={classNames('eds-base-segmented', {\n 'eds-base-segmented--large': size === 'large',\n })}\n >\n {children}\n </div>\n </label>\n );\n },\n);\n","import React from 'react';\nimport { SegmentedProvider, SelectedValue } from './SegmentedContext';\nimport { Fieldset } from '../Fieldset';\nimport classNames from 'classnames';\nimport './SegmentedControl.scss';\n\nexport type SegmentedControlProps = {\n /** Navn på input-elementene */\n name?: string;\n /** Beskrivende tekst */\n label?: string;\n /** En eller flere SegmentedChoice-komponenter */\n children: React.ReactNode;\n /** Den valgte verdien */\n selectedValue: SelectedValue;\n /** Callback for når det gjøres et valg */\n onChange: (value: SelectedValue) => void;\n /** Størrelsen på SegmentedChoice-komponentene */\n size?: 'medium' | 'large';\n /** Ekstra klassenavn */\n className?: string;\n [key: string]: any;\n};\n\nexport const SegmentedControl: React.FC<SegmentedControlProps> = ({\n children,\n label,\n name,\n onChange,\n selectedValue,\n size = 'medium',\n className,\n ...rest\n}) => {\n return (\n <SegmentedProvider\n name={name}\n selectedValue={selectedValue}\n onChange={onChange}\n multiple={false}\n size={size}\n >\n <Fieldset label={label}>\n <div\n className={classNames('eds-segmented-control', className)}\n {...rest}\n >\n {children}\n </div>\n </Fieldset>\n </SegmentedProvider>\n );\n};\n","import React from 'react';\nimport { Label } from '@entur/typography';\nimport { SegmentedProvider, SelectedValues } from './SegmentedContext';\nimport './SegmentedControl.scss';\n\nexport type MultipleSegmentedControlProps = {\n /** Navn på input-elementene */\n name?: string;\n /** Beskrivende tekst */\n label?: string;\n /** En eller flere SegmentedChoice-komponenter */\n children: React.ReactNode;\n /** Den eller de valgte verdiene */\n selectedValue: SelectedValues;\n /** Callback for når det gjøres et valg */\n onChange: (value: SelectedValues) => void;\n [key: string]: any;\n};\n\n/**This component is not used by anyone, and is therefore deprecated\n * @deprecated\n */\nexport const MultipleSegmentedControl: React.FC<\n MultipleSegmentedControlProps\n> = ({ children, label, name, onChange, selectedValue, ...rest }) => {\n return (\n <SegmentedProvider\n name={name}\n selectedValue={selectedValue}\n onChange={onChange}\n multiple={true}\n size=\"medium\"\n >\n <Label as=\"div\">{label}</Label>\n <div className=\"eds-segmented-control\" {...rest}>\n {children}\n </div>\n </SegmentedProvider>\n );\n};\n","import { warnAboutMissingStyles } from '@entur/utils';\nimport './index.scss';\n\nwarnAboutMissingStyles('form', 'icons', 'typography');\n\nexport * from './BaseFormControl';\nexport * from './Checkbox';\nexport * from './FeedbackText';\nexport * from './Fieldset';\nexport * from './InputGroupLabel';\nexport * from './InputGroupContext';\nexport * from './inputPanel';\nexport * from './Radio';\nexport * from './RadioGroup';\nexport * from './Switch';\nexport * from './TextArea';\nexport * from './TextField';\nexport * from './VariantProvider';\nexport * from './variants';\nexport * from './utils';\nexport * from './segmented-control/SegmentedChoice';\nexport * from './segmented-control/SegmentedControl';\nexport * from './segmented-control/MultipleSegmentedControl';\n"],"names":["error","jsx","ValidationSuccessFilledIcon","ValidationErrorFilledIcon","ValidationExclamationFilledIcon","jsxs","SubLabel","React","isFilled","Tooltip","IconButton","QuestionIcon","cx","mergeRefs","Paragraph","Heading5","useRef","useRandomId","useForceUpdate","colors","Fragment","CheckIcon","CloseSmallIcon","useOnMount","hasValue","Label","warnAboutMissingStyles"],"mappings":"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"}
package/dist/form.esm.js CHANGED
@@ -98,15 +98,18 @@ const InputGroupLabel = ({
98
98
  required,
99
99
  labelId,
100
100
  staticAnimation = false,
101
+ className,
102
+ isFilled: forceIsFilled,
101
103
  ...rest
102
104
  }) => {
103
105
  const { isFilled: isFilled2 } = useInputGroupContext();
104
- const filler = staticAnimation || isFilled2;
106
+ const filler = staticAnimation || (forceIsFilled ?? isFilled2);
105
107
  return /* @__PURE__ */ jsx(
106
108
  "label",
107
109
  {
108
- className: classNames(rest.className, {
109
- "eds-input-group-label-wrapper--filled": filler
110
+ className: classNames(className, {
111
+ "eds-input-group-label-wrapper--filled": filler,
112
+ "eds-input-group-label-wrapper--controlled-label-position": forceIsFilled !== void 0
110
113
  }),
111
114
  id: labelId,
112
115
  ...rest,
@@ -1 +1 @@
1
- {"version":3,"file":"form.esm.js","sources":["../src/FeedbackText.tsx","../src/InputGroupContext.tsx","../src/InputGroupLabel.tsx","../src/VariantProvider.tsx","../src/BaseFormControl.tsx","../src/Checkbox.tsx","../src/Fieldset.tsx","../src/RadioGroupContext.tsx","../src/Radio.tsx","../src/inputPanel/InputPanelBase.tsx","../src/inputPanel/RadioPanel.tsx","../src/inputPanel/CheckboxPanel.tsx","../src/RadioGroup.tsx","../src/Switch.tsx","../src/utils.ts","../src/TextArea.tsx","../src/TextField.tsx","../src/segmented-control/SegmentedContext.tsx","../src/segmented-control/SegmentedChoice.tsx","../src/segmented-control/SegmentedControl.tsx","../src/segmented-control/MultipleSegmentedControl.tsx","../src/index.tsx"],"sourcesContent":["import React from 'react';\nimport {\n ValidationSuccessFilledIcon,\n ValidationErrorFilledIcon,\n ValidationExclamationFilledIcon,\n} from '@entur/icons';\nimport { SubLabel } from '@entur/typography';\nimport { VariantType } from '@entur/utils';\n\nimport classNames from 'classnames';\nimport './FeedbackText.scss';\n\n/** @deprecated use variant=\"information\" instead */\nconst info = 'info';\n/** @deprecated use variant=\"negative\" instead */\nconst error = 'error';\n\nconst AlertIcon: React.FC<{\n variant: VariantType | typeof info | typeof error;\n}> = ({ variant }) => {\n const iconClass = `eds-feedback-text__icon eds-feedback-text__icon--${variant}`;\n switch (variant) {\n case 'success':\n return (\n <ValidationSuccessFilledIcon\n aria-label=\"Suksessmelding\"\n className={iconClass}\n />\n );\n case 'negative':\n return (\n <ValidationErrorFilledIcon\n aria-label=\"Feilmelding\"\n className={iconClass}\n />\n );\n case 'information':\n return null;\n case 'warning':\n return (\n <ValidationExclamationFilledIcon\n aria-label=\"Varselmelding\"\n className={iconClass}\n />\n );\n case error:\n return (\n <ValidationErrorFilledIcon\n aria-label=\"Feilmelding\"\n className={iconClass}\n />\n );\n case info:\n return null;\n default:\n return null;\n }\n};\n\nexport type FeedbackTextProps = {\n /** Teksten som vises */\n children: React.ReactNode;\n /** Skjuler ikonet */\n hideIcon?: boolean;\n /** Feedbackvarianten*/\n variant: VariantType | typeof error | typeof info;\n /** Ekstra klassenavn */\n className?: string;\n [key: string]: any;\n};\nexport const FeedbackText: React.FC<FeedbackTextProps> = ({\n children,\n hideIcon = false,\n variant,\n className,\n ...rest\n}) => {\n return (\n <SubLabel\n className={classNames(\n 'eds-feedback-text',\n {\n 'eds-feedback-text--information':\n variant === info || variant === 'information',\n },\n className,\n )}\n {...rest}\n >\n {!hideIcon && <AlertIcon variant={variant} />}\n <span className=\"eds-feedback-text__text\">{children}</span>\n </SubLabel>\n );\n};\n","import * as React from 'react';\n\ntype InputGroupContextType = {\n isFilled: boolean;\n setFilled: (e: boolean) => void;\n};\n\nconst InputGroupContext = React.createContext<InputGroupContextType>({\n isFilled: false,\n setFilled: () => null,\n});\n\nexport const InputGroupContextProvider: React.FC<{\n children: React.ReactNode;\n}> = ({ children }) => {\n const [filled, setFilled] = React.useState(false);\n return (\n <InputGroupContext.Provider\n value={{ isFilled: filled, setFilled: setFilled }}\n >\n {children}\n </InputGroupContext.Provider>\n );\n};\n\nexport const useInputGroupContext: () => InputGroupContextType = () =>\n React.useContext(InputGroupContext);\n","import classNames from 'classnames';\nimport React from 'react';\nimport { useInputGroupContext } from './InputGroupContext';\nimport './InputGroupLabel.scss';\n\nexport type InputGroupLabelProps = {\n label?: React.ReactNode;\n required?: boolean;\n labelTooltip?: string;\n labelId: string;\n staticAnimation?: boolean;\n} & React.DetailedHTMLProps<\n React.LabelHTMLAttributes<HTMLLabelElement>,\n HTMLLabelElement\n>;\n\nexport const InputGroupLabel: React.FC<InputGroupLabelProps> = ({\n label,\n required,\n labelId,\n staticAnimation = false,\n ...rest\n}) => {\n const { isFilled } = useInputGroupContext();\n const filler = staticAnimation || isFilled;\n return (\n <label\n className={classNames(rest.className, {\n 'eds-input-group-label-wrapper--filled': filler,\n })}\n id={labelId}\n {...rest}\n >\n <span\n className={classNames('eds-input-group__label', {\n 'eds-input-group__label--filled': filler,\n })}\n >\n {label} {required && <span>*</span>}\n </span>\n </label>\n );\n};\n","import React from 'react';\nimport { VariantType } from '@entur/utils';\n\n/** @deprecated use variant=\"information\" instead */\nconst info = 'info';\n/** @deprecated use variant=\"negative\" instead */\nconst error = 'error';\n\nconst VariantContext = React.createContext<\n VariantType | typeof error | typeof info | null\n>(null);\n\nexport type VariantProviderProps = {\n variant?: VariantType | typeof error | typeof info;\n};\nexport const VariantProvider: React.FC<VariantProviderProps> = ({\n children,\n variant = null,\n}) => {\n return (\n <VariantContext.Provider value={variant}>\n {children}\n </VariantContext.Provider>\n );\n};\n\nexport const useVariant: () =>\n | VariantType\n | typeof error\n | typeof info\n | null = () => {\n const context = React.useContext(VariantContext);\n return context;\n};\n","import React from 'react';\nimport classNames from 'classnames';\n\nimport { VariantType } from '@entur/utils';\nimport { QuestionIcon } from '@entur/icons';\nimport { Placement, Tooltip } from '@entur/tooltip';\nimport { IconButton } from '@entur/button';\n\nimport { FeedbackText } from './FeedbackText';\nimport { InputGroupContextProvider } from './InputGroupContext';\nimport { InputGroupLabel } from './InputGroupLabel';\nimport { useVariant } from './VariantProvider';\n\nimport './BaseFormControl.scss';\n\n/** @deprecated use variant=\"information\" instead */\nconst info = 'info';\n/** @deprecated use variant=\"negative\" instead */\nconst error = 'error';\n\nexport type BaseFormControlProps = React.HTMLAttributes<HTMLDivElement> & {\n /** Et skjemaelement med `eds-form-control`-klassen */\n children: React.ReactNode;\n /** Ekstra klassenavn */\n className?: string;\n /** Sett til true om skjema-elementet er disabled */\n disabled?: boolean;\n /** Sett til true om skjema-elementet er i read-only modus */\n readOnly?: boolean;\n /** Tekst eller ikon som vises foran skjema-elementet */\n prepend?: React.ReactNode;\n /** Tekst eller ikon som vises etter skjema-elementet */\n append?: React.ReactNode;\n /** Valideringsvariant */\n variant?: VariantType | typeof error | typeof info;\n /**Størrelsen på skjemaelementet\n * @default \"medium\"\n */\n size?: 'medium' | 'large';\n /** Label til inputfeltet */\n label: React.ReactNode;\n /** En tooltip som forklarer labelen til inputfeltet */\n labelTooltip?: React.ReactNode;\n /** Forklarende tekst for knappen som åpner labelTooltip */\n labelTooltipButtonAriaLabel?: string;\n labelTooltipPlacement?: Placement;\n /** Illustrerer om inputfeltet er påkrevd eller ikke */\n required?: boolean;\n /** ID som settes på labelen til inputfeltet */\n labelId: string;\n /** Varselmelding, som vil komme under form-komponenten */\n feedback?: string;\n /** Om inputfeltet er fylt med data. Brukes for plassering av label */\n isFilled?: boolean;\n /**Ekstra props som sendes til label */\n labelProps?: { [key: string]: any };\n /** Ekstra styling */\n style?: React.CSSProperties;\n /** Plasserer labelen statisk på toppen av inputfeltet */\n disableLabelAnimation?: boolean;\n /** Setter feedbackText sin rolle til \"alert\" */\n onClick?: (event: React.MouseEvent<HTMLElement>) => void;\n ariaAlertOnFeedback?: boolean;\n /** Legg til et element etter feltet */\n after?: React.ReactNode;\n /** Legg til et element før feltet */\n before?: React.ReactNode;\n /** Aria-label som brukes når inputfeltet er i read-only modus */\n ariaLabelOnReadOnly?: string;\n};\n\nexport const BaseFormControl = React.forwardRef<\n HTMLDivElement,\n BaseFormControlProps\n>(\n (\n {\n after,\n before,\n children,\n className,\n disabled = false,\n readOnly = false,\n variant,\n prepend,\n append,\n size = 'medium',\n isFilled,\n label,\n required,\n labelTooltip,\n labelTooltipButtonAriaLabel = `Klikk for tilleggsinfo om ${label}-feltet`,\n labelTooltipPlacement = 'top',\n feedback,\n labelId,\n labelProps,\n style,\n disableLabelAnimation = false,\n ariaAlertOnFeedback = false,\n ariaLabelOnReadOnly = 'Dette skjemafeltet kan bare leses',\n ...rest\n },\n ref,\n ) => {\n const contextVariant = useVariant();\n const currentVariant = variant || contextVariant;\n\n return (\n <InputGroupContextProvider>\n <div\n className={classNames(\n 'eds-form-control__field-and-feedback-text',\n className,\n {\n 'eds-form-control__field-and-feedback-text--has-tooltip':\n labelTooltip !== undefined,\n },\n )}\n style={style}\n >\n {before}\n <div\n className={classNames(\n 'eds-form-control-wrapper',\n `eds-form-control-wrapper--size-${size}`,\n {\n 'eds-form-control-wrapper--success':\n currentVariant === 'success',\n 'eds-form-control-wrapper--negative':\n currentVariant === 'negative' || currentVariant === error,\n 'eds-form-control-wrapper--disabled': disabled,\n 'eds-form-control-wrapper--readonly': readOnly,\n 'eds-form-control-wrapper--is-filled': isFilled,\n },\n )}\n ref={ref}\n tabIndex={readOnly ? -1 : undefined}\n {...rest}\n >\n {prepend && (\n <div className=\"eds-form-control__prepend\">{prepend}</div>\n )}\n <InputGroupLabel\n label={label}\n required={required}\n labelId={labelId}\n staticAnimation={disableLabelAnimation}\n aria-label={\n readOnly ? `${label}, ${ariaLabelOnReadOnly}` : undefined\n }\n {...labelProps}\n />\n {labelTooltip && (\n <Tooltip\n content={labelTooltip}\n placement={labelTooltipPlacement}\n showCloseButton={false}\n disableFocusListener={true}\n disableHoverListener={true}\n disableClickListner={false}\n disableKeyboardListener={false}\n >\n <IconButton\n as=\"span\"\n tabIndex={0}\n role=\"button\"\n className=\"eds-form-control__append eds-form-control__append--tooltip\"\n aria-label={labelTooltipButtonAriaLabel}\n >\n <QuestionIcon\n className=\"eds-input-group__label-tooltip-icon\"\n aria-hidden=\"true\"\n />\n </IconButton>\n </Tooltip>\n )}\n {children}\n {append && <div className=\"eds-form-control__append\">{append}</div>}\n </div>\n {feedback && currentVariant && (\n <FeedbackText\n variant={currentVariant}\n role={ariaAlertOnFeedback ? 'alert' : undefined}\n >\n {feedback}\n </FeedbackText>\n )}\n {after}\n </div>\n </InputGroupContextProvider>\n );\n },\n);\n","import React, { CSSProperties } from 'react';\nimport cx from 'classnames';\nimport { Paragraph } from '@entur/typography';\nimport { mergeRefs } from '@entur/utils';\n\nimport './Checkbox.scss';\n\nexport type CheckboxProps = {\n /** Ekstra klassenavn */\n className?: string;\n /** Label for checkboxen, som vises ved høyre side. */\n children?: React.ReactNode;\n /** Om Checkbox er avmerket, eller om den er i en indeterminate state */\n checked?: 'indeterminate' | boolean;\n /** Callback for Checkbox */\n onChange?: (e: React.ChangeEvent<HTMLInputElement>) => void;\n /** Om checkboxen er disabled eller ikke\n * @default false\n */\n disabled?: boolean;\n /** Sett til true om skjema-elementet er i read-only modus\n * @default false\n */\n readOnly?: boolean;\n /**Ekstra styling til komponenten */\n style?: CSSProperties;\n /** Reduserer klikkflaten for Checkbox'en\n * @default false\n */\n reduceClickArea?: boolean;\n /** Om animasjon skal deaktiveres\n * @default false\n */\n disableAnimation?: boolean;\n} & Omit<React.InputHTMLAttributes<HTMLInputElement>, 'checked'>;\n\nexport const Checkbox = React.forwardRef<HTMLInputElement, CheckboxProps>(\n (\n {\n checked,\n className,\n children,\n style,\n disabled = false,\n readOnly = false,\n reduceClickArea,\n disableAnimation = false,\n ...rest\n },\n ref: React.Ref<HTMLInputElement>,\n ) => {\n const inputRef = React.useRef<HTMLInputElement>(null);\n\n const isIndeterminate = checked === 'indeterminate';\n const isControlled = checked !== undefined;\n\n React.useEffect(() => {\n if (inputRef && inputRef.current) {\n inputRef.current.indeterminate = isIndeterminate;\n }\n }, [isIndeterminate]);\n\n return (\n <label\n className={cx('eds-checkbox__container', className, {\n 'eds-checkbox--disabled': disabled,\n 'eds-checkbox--readonly': readOnly,\n 'eds-checkbox__container--reduced-click-area': reduceClickArea,\n })}\n style={style}\n >\n <input\n type=\"checkbox\"\n ref={mergeRefs(ref, inputRef)}\n checked={isControlled ? checked === true : undefined}\n disabled={disabled}\n onKeyDown={e => {\n if (readOnly && (e.key === ' ' || e.key === 'Enter')) {\n e.preventDefault();\n e.stopPropagation();\n }\n }}\n aria-label={\n readOnly ? ` ${children?.toString()}. Kan ikke endres` : undefined\n }\n {...rest}\n />\n <span\n className={cx('eds-checkbox__icon', {\n 'eds-checkbox__icon--disabled': disabled,\n 'eds-checkbox__icon--readonly': readOnly,\n 'eds-checkbox__icon--reduced-click-area': reduceClickArea,\n 'eds-checkbox__icon--no-animation':\n disableAnimation || disabled || readOnly,\n })}\n >\n <CheckboxIcon indeterminate={isIndeterminate} />\n </span>\n {children && (\n <Paragraph className=\"eds-checkbox__label\" margin=\"none\" as=\"span\">\n {children}\n </Paragraph>\n )}\n </label>\n );\n },\n);\n\nconst CheckboxIcon: React.FC<{ indeterminate: boolean }> = ({\n indeterminate = false,\n}) => {\n return (\n <svg\n className=\"eds-checkbox-icon\"\n width=\"11px\"\n height=\"9px\"\n viewBox=\"6 11 37 33\"\n aria-hidden={true}\n >\n {indeterminate ? (\n <rect x=\"10\" y=\"25\" width=\"28\" height=\"5\" fill=\"white\" />\n ) : (\n <path d=\"M14.1 27.2l7.1 7.2 14.6-14.8\" fill=\"none\" />\n )}\n </svg>\n );\n};\n","import React from 'react';\nimport classNames from 'classnames';\nimport { Heading5 } from '@entur/typography';\nimport './Fieldset.scss';\n\nexport type FieldsetProps = {\n /** Innholdet i felt-gruppen. */\n children: React.ReactNode;\n /** Ekstra klassenavn */\n className?: string;\n /** Labelen til felt-gruppen. */\n label?: React.ReactNode;\n [key: string]: any;\n};\n\nexport const Fieldset: React.FC<FieldsetProps> = ({\n children,\n className,\n label,\n ...rest\n}) => (\n <fieldset className={classNames('eds-fieldset', className)} {...rest}>\n {label && <Heading5 as=\"legend\">{label}</Heading5>}\n {children}\n </fieldset>\n);\n","import React from 'react';\n\ntype RadioGroupContextProps = {\n name: string;\n onChange: (e: React.ChangeEvent<HTMLInputElement>) => void;\n value: string | null;\n readOnly?: boolean;\n};\n\nconst RadioGroupContext = React.createContext<RadioGroupContextProps | null>(\n null,\n);\n\nexport const RadioGroupContextProvider = RadioGroupContext.Provider;\n\nexport const useRadioGroupContext: () => RadioGroupContextProps = () => {\n const context = React.useContext(RadioGroupContext);\n if (!context) {\n throw new Error(\n 'You need to wrap your RadioButtons in a RadioGroup component',\n );\n }\n return context;\n};\n","import React from 'react';\nimport cx from 'classnames';\nimport { Paragraph } from '@entur/typography';\nimport { useRadioGroupContext } from './RadioGroupContext';\nimport './Radio.scss';\n\nexport type RadioProps = {\n /** Ekstra klassenavn */\n className?: string;\n /** Label til radio-button. Vises ved høyre side. */\n children?: React.ReactNode;\n /** Verdien til radioknappen */\n value: string;\n /** Om radiobutton er disabled eller ikke\n * @default false\n */\n disabled?: boolean;\n /** Beskrivelse som leses opp av skjermlesere når radiobutton er readonly */\n readOnlyLabelDescription?: string;\n} & React.InputHTMLAttributes<HTMLInputElement>;\n\nexport const Radio = React.forwardRef<HTMLInputElement, RadioProps>(\n (\n { className, children, value, disabled, readOnlyLabelDescription, ...rest },\n ref: React.Ref<HTMLInputElement>,\n ) => {\n const {\n name,\n value: selectedValue,\n onChange,\n readOnly,\n } = useRadioGroupContext();\n\n const classList = cx(className, 'eds-form-component--radio__radio', {\n 'eds-form-component--radio__radio--disabled': disabled,\n 'eds-form-component--radio__radio--readonly': readOnly,\n });\n\n return (\n <label className=\"eds-form-component--radio__container\">\n <input\n type=\"radio\"\n name={rest.name ?? name}\n ref={ref}\n value={value}\n checked={rest.checked ?? selectedValue === value}\n onChange={e => {\n if (readOnly) {\n e.preventDefault();\n return;\n }\n (rest.onChange ?? onChange)?.(e);\n }}\n onClick={e => {\n if (readOnly) {\n e.preventDefault();\n }\n }}\n disabled={disabled}\n aria-label={\n readOnly\n ? `${children?.toString()}. ${\n readOnlyLabelDescription ?? 'Kan ikke endres'\n }`\n : undefined\n }\n {...rest}\n />\n <span className={classList}>\n <span className=\"eds-form-component--radio__circle\"></span>\n </span>\n {children && (\n <Paragraph\n margin=\"none\"\n as=\"span\"\n className=\"eds-form-component--radio__label\"\n >\n {children}\n </Paragraph>\n )}\n </label>\n );\n },\n);\n","import React, { useRef } from 'react';\nimport classNames from 'classnames';\nimport { mergeRefs, useRandomId, useForceUpdate } from '@entur/utils';\nimport { Checkbox } from '../Checkbox';\nimport { Radio } from '../Radio';\n\nimport './InputPanelBase.scss';\n\nexport type InputPanelProps = {\n /** Om det er en radio- eller checkbox-variant */\n type: string;\n /** Verdien til input-panelet */\n value: string;\n /** Om input-panelet skal være valgt eller ikke */\n checked?: boolean;\n /** Hovedtittelen til input-panelet */\n title: React.ReactNode;\n /** Ektstra label som står høyrestilt, til venstre for Checkboxen/Radio-button-en */\n secondaryLabel?: React.ReactNode;\n /** Ekstra informasjon som legges nederst i input-panelet */\n children?: React.ReactNode;\n /** Størrelse på input-panelet\n * @default \"medium\"\n */\n size?: 'medium' | 'large';\n /**Skjuler checkbox-/radio-button-en i input-panelet\n * @default false\n */\n hideSelectionIndicator?: boolean;\n /** Ekstra klassenavn */\n className?: string;\n /** Om input-panelet er deaktivert eller ikke\n * @default false\n */\n disabled?: boolean;\n /** */\n style?: React.CSSProperties;\n} & Omit<\n React.DetailedHTMLProps<\n React.InputHTMLAttributes<HTMLInputElement>,\n HTMLInputElement\n >,\n 'title' | 'size'\n>;\n\nexport const InputPanelBase = React.forwardRef<\n HTMLInputElement,\n InputPanelProps\n>(\n (\n {\n className,\n children,\n value,\n title,\n secondaryLabel,\n size = 'medium',\n hideSelectionIndicator = false,\n style,\n id,\n disabled = false,\n type = 'radio',\n onChange,\n checked,\n name,\n ...rest\n },\n ref: React.Ref<HTMLInputElement>,\n ) => {\n const classList = classNames(\n className,\n 'eds-input-panel__container',\n `eds-input-panel--${size}`,\n );\n\n const inputRef = useRef<HTMLInputElement>(null);\n\n const defaultId = useRandomId('eds-inputpanel');\n const inputPanelId = id || defaultId;\n const forceUpdate = useForceUpdate();\n\n const handleOnChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n if (onChange === undefined) forceUpdate();\n onChange?.(e);\n };\n\n return (\n <label className=\"eds-input-panel\" htmlFor={inputPanelId}>\n <input\n type={type}\n name={name}\n ref={mergeRefs(ref, inputRef)}\n value={value}\n checked={checked}\n onChange={handleOnChange}\n id={inputPanelId}\n disabled={disabled}\n {...rest}\n />\n <div className={classList} style={style}>\n <div className=\"eds-input-panel__title-wrapper\">\n <div className=\"eds-input-panel__title\">{title}</div>\n <div className=\"eds-input-panel__secondary-label-and-icon-wrapper\">\n {secondaryLabel !== undefined && <>{secondaryLabel}</>}\n <span style={{ pointerEvents: 'none' }}>\n {!(disabled || hideSelectionIndicator) &&\n (type === 'radio' ? (\n <Radio\n name=\"\"\n value=\"\"\n checked={checked ?? inputRef.current?.checked ?? false}\n onChange={() => {\n return;\n }}\n aria-hidden=\"true\"\n tabIndex={-1}\n />\n ) : (\n <Checkbox\n checked={checked ?? inputRef.current?.checked ?? false}\n onChange={() => null}\n aria-hidden=\"true\"\n tabIndex={-1}\n />\n ))}\n </span>\n </div>\n </div>\n {children && (\n <div className=\"eds-input-panel__additional-content\">\n {children}\n </div>\n )}\n </div>\n </label>\n );\n },\n);\n","import React from 'react';\nimport { useRadioGroupContext } from '../RadioGroupContext';\nimport { InputPanelBase } from './InputPanelBase';\n\nexport type RadioPanelProps = {\n /** Verdien til radio-panelet */\n value: string;\n /** Hovedtittelen til radio-panelet */\n title: React.ReactNode;\n /** Ektstra label som står høyrestilt, til venstre for radio-button-en */\n secondaryLabel?: React.ReactNode;\n /** Ekstra informasjon som legges nederst i radio-panelet */\n children?: React.ReactNode;\n /** Størrelse på radio-panelet\n * @default \"medium\"\n */\n size?: 'medium' | 'large';\n /**Skjuler radio-button-en i radio-panelet\n * @default false\n */\n hideRadioButton?: boolean;\n /** Ekstra klassenavn */\n className?: string;\n /** Om radio-panelet er deaktivert eller ikke\n * @default false\n */\n disabled?: boolean;\n /** */\n style?: React.CSSProperties;\n} & Omit<\n React.DetailedHTMLProps<\n React.InputHTMLAttributes<HTMLInputElement>,\n HTMLInputElement\n >,\n 'title' | 'size'\n>;\n\nexport const RadioPanel = React.forwardRef<HTMLInputElement, RadioPanelProps>(\n (\n {\n className,\n children,\n value,\n title,\n secondaryLabel,\n size = 'medium',\n hideRadioButton = false,\n style,\n id,\n disabled = false,\n ...rest\n },\n ref: React.Ref<HTMLInputElement>,\n ) => {\n const { name, value: selected, onChange } = useRadioGroupContext();\n\n return (\n <InputPanelBase\n type=\"radio\"\n name={name}\n title={title}\n value={value}\n checked={selected === value}\n onChange={onChange}\n className={className}\n secondaryLabel={secondaryLabel}\n size={size}\n hideSelectionIndicator={hideRadioButton}\n style={style}\n id={id}\n disabled={disabled}\n {...rest}\n ref={ref}\n >\n {children}\n </InputPanelBase>\n );\n },\n);\n","import React from 'react';\nimport { InputPanelBase } from './InputPanelBase';\n\nexport type CheckboxPanelProps = {\n /** Verdien til CheckboxPanel */\n value: string;\n /** Om checkbox-panelet skal være valgt eller ikke */\n checked?: boolean;\n /** Hovedtittelen til CheckboxPanel */\n title: React.ReactNode;\n /** Ektstra label som står høyrestilt mot Checkboxen */\n secondaryLabel?: React.ReactNode;\n /** Ekstra informasjon som legges nederst i CheckboxPanel */\n children?: React.ReactNode;\n /** Størrelse på CheckboxPanel\n * @default \"medium\"\n */\n size?: 'medium' | 'large';\n /**Skjuler checkbox-en i CheckboxPanel\n * @default false\n */\n hideCheckbox?: boolean;\n /** Ekstra klassenavn */\n className?: string;\n /** Om CheckboxPanel er deaktivert eller ikke\n * @default false\n */\n disabled?: boolean;\n /** */\n style?: React.CSSProperties;\n} & Omit<\n React.DetailedHTMLProps<\n React.InputHTMLAttributes<HTMLInputElement>,\n HTMLInputElement\n >,\n 'title' | 'size'\n>;\n\nexport const CheckboxPanel = React.forwardRef<\n HTMLInputElement,\n CheckboxPanelProps\n>(\n (\n {\n name,\n checked,\n onChange,\n className,\n children,\n value,\n title,\n secondaryLabel,\n size = 'medium',\n hideCheckbox = false,\n style,\n id,\n disabled = false,\n ...rest\n },\n ref: React.Ref<HTMLInputElement>,\n ) => {\n return (\n <InputPanelBase\n type=\"checkbox\"\n name={name}\n title={title}\n value={value}\n checked={checked}\n onChange={onChange}\n className={className}\n secondaryLabel={secondaryLabel}\n size={size}\n hideSelectionIndicator={hideCheckbox}\n style={style}\n id={id}\n disabled={disabled}\n {...rest}\n ref={ref}\n >\n {children}\n </InputPanelBase>\n );\n },\n);\n","import React from 'react';\nimport { RadioGroupContextProvider } from './RadioGroupContext';\nimport { Fieldset } from './Fieldset';\n\nexport type RadioGroupProps = {\n /** Navnet til radiogruppen. */\n name: string;\n /** Overskrift over radiogruppen */\n label?: string;\n /** Verdien til den valgte radioknappen */\n value: string | null;\n /** Radioknappene sendes inn som children */\n children: React.ReactNode;\n /** En callback som blir kalles hver gang en radioknapp klikkes på */\n onChange: (e: React.ChangeEvent<HTMLInputElement>) => void;\n [key: string]: any;\n /** Sett radiogruppen i readonly-modus */\n readOnly?: boolean;\n};\n\nexport const RadioGroup: React.FC<RadioGroupProps> = ({\n name,\n value,\n children,\n onChange,\n label,\n readOnly = false,\n ...rest\n}) => {\n const contextValue = React.useMemo(\n () => ({ name, value, onChange, readOnly }),\n [name, value, onChange, readOnly],\n );\n return (\n <RadioGroupContextProvider value={contextValue}>\n {label ? (\n <Fieldset label={label} {...rest}>\n {children}\n </Fieldset>\n ) : (\n children\n )}\n </RadioGroupContextProvider>\n );\n};\n","import React from 'react';\nimport classNames from 'classnames';\nimport { colors } from '@entur/tokens';\nimport { CheckIcon, CloseSmallIcon } from '@entur/icons';\nimport './Switch.scss';\n\nexport type SwitchProps = {\n /** Ekstra klassenavn */\n className?: string;\n /** Label for Switch-en. */\n children?: React.ReactNode;\n /** Posisjonen til label for Switch-en.\n * @default \"right\"\n */\n labelPlacement?: 'right' | 'bottom';\n /** Om switch-en er checked eller ikke */\n checked?: boolean;\n /** Ikonet som skal stå inne i sirkelen på Switch-en */\n icon?: React.ReactNode;\n /** Skjul ikonet inne i sikrelen på Switch-en\n * @default false\n */\n hideIcon?: boolean;\n /** Farge som settes på ikon og bakgrunn når Switch-en er \"checked\"\n * @default colors.validation.mint\n */\n color?: string;\n /** Farge på bakgrunn når Switch-en er \"checked\" og står i en kontrast-seksjon\n * @default colors.validation.mintContrast\n */\n contrastColor?: string;\n /** Størrelsen på Switch-en\n * @default \"medium\"\n */\n size?: 'medium' | 'large';\n /** Callback for når verdien endres */\n onChange?: (e: React.ChangeEvent<HTMLInputElement>) => void;\n} & Omit<React.InputHTMLAttributes<HTMLInputElement>, 'size'>;\n\nexport const Switch = React.forwardRef<HTMLInputElement, SwitchProps>(\n (\n {\n className,\n children,\n labelPlacement = 'right',\n icon,\n hideIcon = false,\n color = colors.validation.mint,\n contrastColor = colors.validation.mintContrast,\n size = 'medium',\n checked,\n ...rest\n },\n ref: React.Ref<HTMLInputElement>,\n ) => {\n const displayedIcon = () => {\n if (icon) return icon;\n if (checked === undefined) return <></>;\n const iconSize = size === 'large' ? 23 : undefined;\n return checked ? (\n <CheckIcon size={iconSize} />\n ) : (\n <CloseSmallIcon size={iconSize} />\n );\n };\n\n return (\n <label\n className={classNames(\n 'eds-switch',\n `eds-switch--${labelPlacement}`,\n className,\n )}\n style={{ ...rest.style }}\n >\n <input type=\"checkbox\" ref={ref} checked={checked} {...rest} />\n <span\n className={classNames(\n 'eds-switch__switch',\n `eds-switch__switch--${size}`,\n )}\n style={\n {\n '--eds-switch-color': color,\n '--eds-switch-contrast-color': contrastColor,\n } as React.CSSProperties\n }\n aria-hidden=\"true\"\n >\n <span className=\"eds-switch__circle\">\n {!hideIcon && displayedIcon()}\n </span>\n </span>\n {children && (\n <span\n className={classNames(\n 'eds-switch__label',\n `eds-switch__label--${size}--${labelPlacement}`,\n )}\n >\n {children}\n </span>\n )}\n </label>\n );\n },\n);\n","// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types -- disabled during Yarn upgrade\nexport function hasValue(value: any): boolean {\n return value != null && !(Array.isArray(value) && value.length === 0);\n}\n\n// Determine if field is empty or filled.\n// Response determines if label is presented above field or as placeholder.\n//\n// @param obj\n// @param SSR\n// @returns {boolean} False when not present or empty string.\n// True when any number or string with length.\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types -- disabled during Yarn upgrade\nexport function isFilled(obj: any, SSR = false): boolean {\n return (\n obj &&\n ((hasValue(obj.value) && obj.value !== '') ||\n (SSR && hasValue(obj.defaultValue) && obj.defaultValue !== ''))\n );\n}\n","import React from 'react';\nimport classNames from 'classnames';\n\nimport { useRandomId, useOnMount, mergeRefs, VariantType } from '@entur/utils';\n\nimport { useVariant } from './VariantProvider';\nimport { BaseFormControl } from './BaseFormControl';\nimport { useInputGroupContext } from './InputGroupContext';\nimport { isFilled } from './utils';\n\nimport './TextArea.scss';\nimport { Placement } from '@entur/tooltip';\n\n/** @deprecated use variant=\"information\" instead */\nconst info = 'info';\n/** @deprecated use variant=\"negative\" instead */\nconst error = 'error';\n\nexport type TextAreaProps = {\n /** Ekstra klassenavn */\n className?: string;\n /** Valideringsvariant */\n variant?: VariantType | typeof error | typeof info;\n /** Deaktiverer tekstområdet */\n disabled?: boolean;\n /** Setter tekstområdet i read-only modus */\n readOnly?: boolean;\n /** Label over TextArea */\n label: string;\n /** En tooltip som forklarer labelen til inputfeltet */\n labelTooltip?: React.ReactNode;\n /** Forklarende tekst for knappen som åpner labelTooltip */\n labelTooltipButtonAriaLabel?: string;\n /** Plasseringen til tooltip-en relativt til spørsmålstegn-knappen */\n labelTooltipPlacement?: Placement;\n /** Varselmelding, som vil komme under TextArea */\n feedback?: string;\n /** Plasserer labelen statisk på toppen av inputfeltet\n * @default false\n */\n disableLabelAnimation?: boolean;\n} & React.TextareaHTMLAttributes<HTMLTextAreaElement>;\n\nexport const TextArea = React.forwardRef<HTMLTextAreaElement, TextAreaProps>(\n (\n {\n variant,\n disabled = false,\n readOnly = false,\n className,\n style,\n label,\n feedback,\n labelTooltip,\n labelTooltipButtonAriaLabel,\n labelTooltipPlacement,\n onChange,\n disableLabelAnimation,\n ...rest\n },\n ref: React.Ref<HTMLTextAreaElement>,\n ) => {\n const textAreaId = useRandomId('eds-textarea');\n const textareaRef = React.useRef<HTMLTextAreaElement>(null);\n return (\n <BaseFormControl\n className={classNames(className, 'eds-textarea__wrapper')}\n disabled={disabled}\n readOnly={readOnly}\n variant={variant}\n style={style}\n label={label}\n labelId={textAreaId}\n feedback={feedback}\n labelTooltip={labelTooltip}\n labelTooltipButtonAriaLabel={labelTooltipButtonAriaLabel}\n labelTooltipPlacement={labelTooltipPlacement}\n labelProps={{ className: 'eds-textarea__label' }}\n disableLabelAnimation={disableLabelAnimation}\n onClick={e => {\n if (e.target === e.currentTarget) textareaRef?.current?.focus();\n }}\n >\n <TextAreaBase\n readOnly={readOnly}\n disabled={disabled}\n ref={mergeRefs(ref, textareaRef)}\n aria-labelledby={textAreaId}\n onChange={onChange}\n variant={variant}\n {...rest}\n />\n </BaseFormControl>\n );\n },\n);\n\ntype TextAreaBaseProps = {\n readOnly?: boolean;\n disabled?: boolean;\n variant?: VariantType | typeof error | typeof info;\n} & React.TextareaHTMLAttributes<HTMLTextAreaElement>;\n\nconst TextAreaBase = React.forwardRef<HTMLTextAreaElement, TextAreaBaseProps>(\n ({ readOnly, disabled, onChange, value, variant, ...rest }, ref) => {\n const contextVariant = useVariant();\n const currentVariant = variant || contextVariant;\n const { isFilled: isInputFilled, setFilled: setFiller } =\n useInputGroupContext();\n\n useOnMount(() => {\n if (value?.toString() || rest.defaultValue) {\n setFiller && !isInputFilled && setFiller(true);\n }\n });\n React.useEffect(() => {\n if (value?.toString() && setFiller && !isInputFilled) {\n setFiller(true);\n }\n }, [value, setFiller, isInputFilled]);\n\n const handleChange = (event: React.ChangeEvent<HTMLTextAreaElement>) => {\n if (isFilled(event.target)) {\n setFiller && !isInputFilled && setFiller(true);\n } else {\n setFiller && isInputFilled && setFiller(false);\n }\n if (onChange) {\n onChange(event);\n }\n };\n\n return (\n <textarea\n className=\"eds-form-control eds-textarea\"\n ref={ref}\n readOnly={readOnly}\n disabled={disabled}\n onChange={handleChange}\n value={value}\n aria-invalid={currentVariant === 'error'}\n {...rest}\n />\n );\n },\n);\n","import React from 'react';\nimport classNames from 'classnames';\n\nimport { CloseSmallIcon } from '@entur/icons';\nimport { useRandomId, useOnMount, mergeRefs, VariantType } from '@entur/utils';\n\nimport { BaseFormControl } from './BaseFormControl';\nimport { useInputGroupContext } from './InputGroupContext';\nimport { isFilled } from './utils';\nimport { useVariant } from './VariantProvider';\nimport './TextField.scss';\nimport { Placement } from '@entur/tooltip';\n\n/** @deprecated use variant=\"information\" instead */\nconst info = 'info';\n/** @deprecated use variant=\"negative\" instead */\nconst error = 'error';\n\nexport type TextFieldProps = {\n /** Tekst eller ikon som kommer før inputfeltet */\n prepend?: React.ReactNode;\n /** Tekst eller ikon som kommer etter inputfeltet */\n append?: React.ReactNode;\n /** Ekstra klassenavn */\n className?: string;\n /** Label over TextField */\n label: React.ReactNode;\n /** En tooltip som forklarer labelen til inputfeltet */\n labelTooltip?: React.ReactNode;\n /** Forklarende tekst for knappen som åpner labelTooltip */\n labelTooltipButtonAriaLabel?: string;\n /** Plasseringen til tooltip-en relativt til spørsmålstegn-knappen */\n labelTooltipPlacement?: Placement;\n /** Varselmelding, som vil komme under TextField */\n feedback?: string;\n /** Hvilken valideringsfarge som vises*/\n variant?: VariantType | typeof error | typeof info;\n /** Deaktiver inputfeltet */\n disabled?: boolean;\n /** Setter inputfeltet i read-only modus */\n readOnly?: boolean;\n /** Størrelsen på TextField\n * @default \"medium\"\n */\n size?: 'medium' | 'large';\n /** Plasserer labelen statisk på toppen av inputfeltet\n * @default false\n */\n disableLabelAnimation?: boolean;\n /** Ekstra props som sendes til label-elementet */\n labelProps?: React.DetailedHTMLProps<\n React.LabelHTMLAttributes<HTMLLabelElement>,\n HTMLLabelElement\n >;\n /** Om man skal ha muliget for å nullstille TextField. Viser lukkekryss hvis feltet er fylt.\n * @default false\n */\n clearable?: boolean;\n /** Callback for clearable */\n onClear?: () => void;\n ariaAlertOnFeedback?: boolean;\n} & Omit<React.InputHTMLAttributes<HTMLInputElement>, 'size' | 'label'>;\n\nexport const TextField = React.forwardRef<HTMLInputElement, TextFieldProps>(\n (\n {\n prepend,\n append,\n variant,\n disabled = false,\n readOnly = false,\n className,\n style,\n size = 'medium',\n label,\n required,\n labelTooltip,\n labelTooltipButtonAriaLabel,\n labelTooltipPlacement,\n feedback,\n onChange,\n disableLabelAnimation,\n labelProps,\n clearable = false,\n onClear,\n value,\n ariaAlertOnFeedback = false,\n ...rest\n },\n ref: React.Ref<HTMLInputElement>,\n ) => {\n const randomId = useRandomId('eds-textfield');\n const textFieldId = labelProps && labelProps.id ? labelProps.id : randomId;\n const textFieldRef = React.useRef<HTMLInputElement>(null);\n return (\n <BaseFormControl\n disabled={disabled}\n readOnly={readOnly}\n variant={variant}\n prepend={prepend}\n append={\n clearable && onClear ? <ClearButton onClear={onClear} /> : append\n }\n className={classNames(className, 'eds-textfield__wrapper')}\n style={style}\n size={size}\n label={label}\n required={required}\n labelTooltip={labelTooltip}\n labelTooltipButtonAriaLabel={labelTooltipButtonAriaLabel}\n labelTooltipPlacement={labelTooltipPlacement}\n labelId={textFieldId}\n feedback={feedback}\n disableLabelAnimation={disableLabelAnimation}\n labelProps={labelProps}\n ariaAlertOnFeedback={ariaAlertOnFeedback}\n onClick={e => {\n if (e.target === e.currentTarget) textFieldRef?.current?.focus();\n }}\n >\n <TextFieldBase\n disabled={disabled}\n readOnly={readOnly}\n ref={mergeRefs(ref, textFieldRef)}\n aria-labelledby={textFieldId}\n onChange={onChange}\n value={value}\n variant={variant}\n {...rest}\n />\n </BaseFormControl>\n );\n },\n);\n\ntype TextFieldBaseProps = {\n /** Deaktiver inputfeltet */\n disabled?: boolean;\n /** Setter inputfeltet i read-only modus */\n readOnly?: boolean;\n variant?: VariantType | typeof error | typeof info;\n} & React.DetailedHTMLProps<\n React.InputHTMLAttributes<HTMLInputElement>,\n HTMLInputElement\n>;\n\nconst TextFieldBase = React.forwardRef<HTMLInputElement, TextFieldBaseProps>(\n (\n { disabled, readOnly, placeholder, onChange, value, variant, ...rest },\n forwardRef,\n ) => {\n const contextVariant = useVariant();\n const currentVariant = variant || contextVariant;\n const { isFilled: isInputFilled, setFilled: setFiller } =\n useInputGroupContext();\n\n useOnMount(() => {\n if (value?.toString() || rest.defaultValue) {\n setFiller && !isInputFilled && setFiller(true);\n }\n });\n React.useEffect(() => {\n if (value?.toString() && setFiller && !isInputFilled) {\n setFiller(true);\n }\n }, [value, setFiller, isInputFilled]);\n\n const handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n if (isFilled(event.target)) {\n setFiller && !isInputFilled && setFiller(true);\n } else {\n setFiller && isInputFilled && setFiller(false);\n }\n if (onChange) {\n onChange(event);\n }\n };\n\n return (\n <input\n aria-invalid={currentVariant === 'error'}\n className=\"eds-form-control\"\n disabled={disabled}\n readOnly={readOnly}\n ref={forwardRef}\n placeholder={placeholder}\n onChange={handleChange}\n value={value}\n {...rest}\n />\n );\n },\n);\n\nconst ClearButton: React.FC<{\n onClear: () => void;\n [key: string]: any;\n}> = ({ onClear, ...props }) => {\n const { isFilled: hasValue, setFilled } = useInputGroupContext();\n return (\n <div className=\"eds-textfield__clear-button-wrapper\">\n {hasValue && <div className=\"eds-textfield__divider\"></div>}\n {hasValue && (\n <button\n className=\"eds-textfield__clear-button\"\n type=\"button\"\n tabIndex={-1}\n onClick={() => {\n setFilled(false);\n onClear();\n }}\n {...props}\n >\n <CloseSmallIcon />\n </button>\n )}\n </div>\n );\n};\n","import React from 'react';\nimport { useRandomId } from '@entur/utils';\n\nexport type SelectedValues = { [key: string]: boolean };\nexport type SelectedValue = string | null;\nexport type SegmentedContextProps =\n | {\n name: string;\n onChange: (value: SelectedValues) => void;\n selectedValue: SelectedValues;\n multiple: true;\n size: 'medium' | 'large';\n }\n | {\n name: string;\n onChange: (value: SelectedValue) => void;\n selectedValue: SelectedValue;\n multiple: false;\n size: 'medium' | 'large';\n };\n\nconst SegmentedContext = React.createContext<SegmentedContextProps | null>(\n null,\n);\n\nexport type SegmentedProviderProps =\n | {\n name?: string;\n onChange?: (value: SelectedValues) => void;\n selectedValue: SelectedValues;\n multiple: true;\n size: 'medium' | 'large';\n }\n | {\n name?: string;\n onChange?: (value: SelectedValue) => void;\n selectedValue: SelectedValue;\n multiple: false;\n size: 'medium' | 'large';\n };\n\nexport const SegmentedProvider: React.FC<SegmentedProviderProps> = ({\n name,\n onChange = () => undefined,\n selectedValue,\n multiple,\n size,\n ...rest\n}) => {\n const generatedName = useRandomId('eds-segmented-control');\n const contextValue = React.useMemo(\n () => ({\n name: name || generatedName,\n onChange,\n multiple,\n selectedValue,\n size,\n }),\n [generatedName, multiple, name, onChange, selectedValue, size],\n ) as SegmentedContextProps;\n return <SegmentedContext.Provider value={contextValue} {...rest} />;\n};\n\nexport const useSegmentedContext = (): SegmentedContextProps => {\n const context = React.useContext(SegmentedContext);\n if (!context) {\n throw new Error(\n 'You need to wrap your SegmentedChoice in either SegmentedControl or MultipleSegmentedControl',\n );\n }\n return context;\n};\n","import React from 'react';\nimport classNames from 'classnames';\nimport {\n useSegmentedContext,\n SelectedValues,\n SelectedValue,\n} from './SegmentedContext';\nimport './SegmentedChoice.scss';\n\nexport type SegmentedChoiceProps = {\n /** Verdien til valget */\n value: string;\n /** Innhold som beskriver valget */\n children: React.ReactNode;\n /** Ekstra klassenavn */\n className?: string;\n /** Callback som kalles når komponenten endres */\n onChange?: (e: React.ChangeEvent<HTMLInputElement>) => void;\n} & React.DetailedHTMLProps<\n React.InputHTMLAttributes<HTMLInputElement>,\n HTMLInputElement\n>;\n\nexport const SegmentedChoice = React.forwardRef<\n HTMLInputElement,\n SegmentedChoiceProps\n>(\n (\n {\n children,\n className,\n style,\n value,\n name,\n onChange = () => undefined,\n ...rest\n },\n ref: React.Ref<HTMLInputElement>,\n ) => {\n const {\n name: commonName,\n selectedValue,\n onChange: commonOnChange,\n multiple,\n size,\n } = useSegmentedContext();\n\n const isChecked = multiple\n ? (selectedValue as SelectedValues)[value]\n : (selectedValue as SelectedValue) === value;\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n onChange(e);\n if (multiple) {\n commonOnChange({\n ...(selectedValue as SelectedValues),\n [value]: e.target.checked,\n } as any);\n } else if (e.target.checked) {\n commonOnChange(value as any);\n }\n };\n\n return (\n <label\n className={classNames('eds-segmented-choice', className)}\n style={style}\n >\n <input\n type={multiple ? 'checkbox' : 'radio'}\n name={name || commonName}\n checked={isChecked}\n value={value}\n onChange={handleChange}\n ref={ref}\n {...rest}\n />\n <div\n className={classNames('eds-base-segmented', {\n 'eds-base-segmented--large': size === 'large',\n })}\n >\n {children}\n </div>\n </label>\n );\n },\n);\n","import React from 'react';\nimport { SegmentedProvider, SelectedValue } from './SegmentedContext';\nimport { Fieldset } from '../Fieldset';\nimport classNames from 'classnames';\nimport './SegmentedControl.scss';\n\nexport type SegmentedControlProps = {\n /** Navn på input-elementene */\n name?: string;\n /** Beskrivende tekst */\n label?: string;\n /** En eller flere SegmentedChoice-komponenter */\n children: React.ReactNode;\n /** Den valgte verdien */\n selectedValue: SelectedValue;\n /** Callback for når det gjøres et valg */\n onChange: (value: SelectedValue) => void;\n /** Størrelsen på SegmentedChoice-komponentene */\n size?: 'medium' | 'large';\n /** Ekstra klassenavn */\n className?: string;\n [key: string]: any;\n};\n\nexport const SegmentedControl: React.FC<SegmentedControlProps> = ({\n children,\n label,\n name,\n onChange,\n selectedValue,\n size = 'medium',\n className,\n ...rest\n}) => {\n return (\n <SegmentedProvider\n name={name}\n selectedValue={selectedValue}\n onChange={onChange}\n multiple={false}\n size={size}\n >\n <Fieldset label={label}>\n <div\n className={classNames('eds-segmented-control', className)}\n {...rest}\n >\n {children}\n </div>\n </Fieldset>\n </SegmentedProvider>\n );\n};\n","import React from 'react';\nimport { Label } from '@entur/typography';\nimport { SegmentedProvider, SelectedValues } from './SegmentedContext';\nimport './SegmentedControl.scss';\n\nexport type MultipleSegmentedControlProps = {\n /** Navn på input-elementene */\n name?: string;\n /** Beskrivende tekst */\n label?: string;\n /** En eller flere SegmentedChoice-komponenter */\n children: React.ReactNode;\n /** Den eller de valgte verdiene */\n selectedValue: SelectedValues;\n /** Callback for når det gjøres et valg */\n onChange: (value: SelectedValues) => void;\n [key: string]: any;\n};\n\n/**This component is not used by anyone, and is therefore deprecated\n * @deprecated\n */\nexport const MultipleSegmentedControl: React.FC<\n MultipleSegmentedControlProps\n> = ({ children, label, name, onChange, selectedValue, ...rest }) => {\n return (\n <SegmentedProvider\n name={name}\n selectedValue={selectedValue}\n onChange={onChange}\n multiple={true}\n size=\"medium\"\n >\n <Label as=\"div\">{label}</Label>\n <div className=\"eds-segmented-control\" {...rest}>\n {children}\n </div>\n </SegmentedProvider>\n );\n};\n","import { warnAboutMissingStyles } from '@entur/utils';\nimport './index.scss';\n\nwarnAboutMissingStyles('form', 'icons', 'typography');\n\nexport * from './BaseFormControl';\nexport * from './Checkbox';\nexport * from './FeedbackText';\nexport * from './Fieldset';\nexport * from './InputGroupLabel';\nexport * from './InputGroupContext';\nexport * from './inputPanel';\nexport * from './Radio';\nexport * from './RadioGroup';\nexport * from './Switch';\nexport * from './TextArea';\nexport * from './TextField';\nexport * from './VariantProvider';\nexport * from './variants';\nexport * from './utils';\nexport * from './segmented-control/SegmentedChoice';\nexport * from './segmented-control/SegmentedControl';\nexport * from './segmented-control/MultipleSegmentedControl';\n"],"names":["error","isFilled","React","cx","hasValue"],"mappings":"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"}
1
+ {"version":3,"file":"form.esm.js","sources":["../src/FeedbackText.tsx","../src/InputGroupContext.tsx","../src/InputGroupLabel.tsx","../src/VariantProvider.tsx","../src/BaseFormControl.tsx","../src/Checkbox.tsx","../src/Fieldset.tsx","../src/RadioGroupContext.tsx","../src/Radio.tsx","../src/inputPanel/InputPanelBase.tsx","../src/inputPanel/RadioPanel.tsx","../src/inputPanel/CheckboxPanel.tsx","../src/RadioGroup.tsx","../src/Switch.tsx","../src/utils.ts","../src/TextArea.tsx","../src/TextField.tsx","../src/segmented-control/SegmentedContext.tsx","../src/segmented-control/SegmentedChoice.tsx","../src/segmented-control/SegmentedControl.tsx","../src/segmented-control/MultipleSegmentedControl.tsx","../src/index.tsx"],"sourcesContent":["import React from 'react';\nimport {\n ValidationSuccessFilledIcon,\n ValidationErrorFilledIcon,\n ValidationExclamationFilledIcon,\n} from '@entur/icons';\nimport { SubLabel } from '@entur/typography';\nimport { VariantType } from '@entur/utils';\n\nimport classNames from 'classnames';\nimport './FeedbackText.scss';\n\n/** @deprecated use variant=\"information\" instead */\nconst info = 'info';\n/** @deprecated use variant=\"negative\" instead */\nconst error = 'error';\n\nconst AlertIcon: React.FC<{\n variant: VariantType | typeof info | typeof error;\n}> = ({ variant }) => {\n const iconClass = `eds-feedback-text__icon eds-feedback-text__icon--${variant}`;\n switch (variant) {\n case 'success':\n return (\n <ValidationSuccessFilledIcon\n aria-label=\"Suksessmelding\"\n className={iconClass}\n />\n );\n case 'negative':\n return (\n <ValidationErrorFilledIcon\n aria-label=\"Feilmelding\"\n className={iconClass}\n />\n );\n case 'information':\n return null;\n case 'warning':\n return (\n <ValidationExclamationFilledIcon\n aria-label=\"Varselmelding\"\n className={iconClass}\n />\n );\n case error:\n return (\n <ValidationErrorFilledIcon\n aria-label=\"Feilmelding\"\n className={iconClass}\n />\n );\n case info:\n return null;\n default:\n return null;\n }\n};\n\nexport type FeedbackTextProps = {\n /** Teksten som vises */\n children: React.ReactNode;\n /** Skjuler ikonet */\n hideIcon?: boolean;\n /** Feedbackvarianten*/\n variant: VariantType | typeof error | typeof info;\n /** Ekstra klassenavn */\n className?: string;\n [key: string]: any;\n};\nexport const FeedbackText: React.FC<FeedbackTextProps> = ({\n children,\n hideIcon = false,\n variant,\n className,\n ...rest\n}) => {\n return (\n <SubLabel\n className={classNames(\n 'eds-feedback-text',\n {\n 'eds-feedback-text--information':\n variant === info || variant === 'information',\n },\n className,\n )}\n {...rest}\n >\n {!hideIcon && <AlertIcon variant={variant} />}\n <span className=\"eds-feedback-text__text\">{children}</span>\n </SubLabel>\n );\n};\n","import * as React from 'react';\n\ntype InputGroupContextType = {\n isFilled: boolean;\n setFilled: (e: boolean) => void;\n};\n\nconst InputGroupContext = React.createContext<InputGroupContextType>({\n isFilled: false,\n setFilled: () => null,\n});\n\nexport const InputGroupContextProvider: React.FC<{\n children: React.ReactNode;\n}> = ({ children }) => {\n const [filled, setFilled] = React.useState(false);\n return (\n <InputGroupContext.Provider\n value={{ isFilled: filled, setFilled: setFilled }}\n >\n {children}\n </InputGroupContext.Provider>\n );\n};\n\nexport const useInputGroupContext: () => InputGroupContextType = () =>\n React.useContext(InputGroupContext);\n","import classNames from 'classnames';\nimport React from 'react';\nimport { useInputGroupContext } from './InputGroupContext';\nimport './InputGroupLabel.scss';\n\nexport type InputGroupLabelProps = {\n label?: React.ReactNode;\n required?: boolean;\n labelTooltip?: string;\n labelId: string;\n isFilled?: boolean;\n staticAnimation?: boolean;\n} & React.DetailedHTMLProps<\n React.LabelHTMLAttributes<HTMLLabelElement>,\n HTMLLabelElement\n>;\n\nexport const InputGroupLabel: React.FC<InputGroupLabelProps> = ({\n label,\n required,\n labelId,\n staticAnimation = false,\n className,\n isFilled: forceIsFilled,\n ...rest\n}) => {\n const { isFilled } = useInputGroupContext();\n const filler = staticAnimation || (forceIsFilled ?? isFilled);\n return (\n <label\n className={classNames(className, {\n 'eds-input-group-label-wrapper--filled': filler,\n 'eds-input-group-label-wrapper--controlled-label-position':\n forceIsFilled !== undefined,\n })}\n id={labelId}\n {...rest}\n >\n <span\n className={classNames('eds-input-group__label', {\n 'eds-input-group__label--filled': filler,\n })}\n >\n {label} {required && <span>*</span>}\n </span>\n </label>\n );\n};\n","import React from 'react';\nimport { VariantType } from '@entur/utils';\n\n/** @deprecated use variant=\"information\" instead */\nconst info = 'info';\n/** @deprecated use variant=\"negative\" instead */\nconst error = 'error';\n\nconst VariantContext = React.createContext<\n VariantType | typeof error | typeof info | null\n>(null);\n\nexport type VariantProviderProps = {\n variant?: VariantType | typeof error | typeof info;\n};\nexport const VariantProvider: React.FC<VariantProviderProps> = ({\n children,\n variant = null,\n}) => {\n return (\n <VariantContext.Provider value={variant}>\n {children}\n </VariantContext.Provider>\n );\n};\n\nexport const useVariant: () =>\n | VariantType\n | typeof error\n | typeof info\n | null = () => {\n const context = React.useContext(VariantContext);\n return context;\n};\n","import React from 'react';\nimport classNames from 'classnames';\n\nimport { VariantType } from '@entur/utils';\nimport { QuestionIcon } from '@entur/icons';\nimport { Placement, Tooltip } from '@entur/tooltip';\nimport { IconButton } from '@entur/button';\n\nimport { FeedbackText } from './FeedbackText';\nimport { InputGroupContextProvider } from './InputGroupContext';\nimport { InputGroupLabel } from './InputGroupLabel';\nimport { useVariant } from './VariantProvider';\n\nimport './BaseFormControl.scss';\n\n/** @deprecated use variant=\"information\" instead */\nconst info = 'info';\n/** @deprecated use variant=\"negative\" instead */\nconst error = 'error';\n\nexport type BaseFormControlProps = React.HTMLAttributes<HTMLDivElement> & {\n /** Et skjemaelement med `eds-form-control`-klassen */\n children: React.ReactNode;\n /** Ekstra klassenavn */\n className?: string;\n /** Sett til true om skjema-elementet er disabled */\n disabled?: boolean;\n /** Sett til true om skjema-elementet er i read-only modus */\n readOnly?: boolean;\n /** Tekst eller ikon som vises foran skjema-elementet */\n prepend?: React.ReactNode;\n /** Tekst eller ikon som vises etter skjema-elementet */\n append?: React.ReactNode;\n /** Valideringsvariant */\n variant?: VariantType | typeof error | typeof info;\n /**Størrelsen på skjemaelementet\n * @default \"medium\"\n */\n size?: 'medium' | 'large';\n /** Label til inputfeltet */\n label: React.ReactNode;\n /** En tooltip som forklarer labelen til inputfeltet */\n labelTooltip?: React.ReactNode;\n /** Forklarende tekst for knappen som åpner labelTooltip */\n labelTooltipButtonAriaLabel?: string;\n labelTooltipPlacement?: Placement;\n /** Illustrerer om inputfeltet er påkrevd eller ikke */\n required?: boolean;\n /** ID som settes på labelen til inputfeltet */\n labelId: string;\n /** Varselmelding, som vil komme under form-komponenten */\n feedback?: string;\n /** Om inputfeltet er fylt med data. Brukes for plassering av label */\n isFilled?: boolean;\n /**Ekstra props som sendes til label */\n labelProps?: { [key: string]: any };\n /** Ekstra styling */\n style?: React.CSSProperties;\n /** Plasserer labelen statisk på toppen av inputfeltet */\n disableLabelAnimation?: boolean;\n /** Setter feedbackText sin rolle til \"alert\" */\n onClick?: (event: React.MouseEvent<HTMLElement>) => void;\n ariaAlertOnFeedback?: boolean;\n /** Legg til et element etter feltet */\n after?: React.ReactNode;\n /** Legg til et element før feltet */\n before?: React.ReactNode;\n /** Aria-label som brukes når inputfeltet er i read-only modus */\n ariaLabelOnReadOnly?: string;\n};\n\nexport const BaseFormControl = React.forwardRef<\n HTMLDivElement,\n BaseFormControlProps\n>(\n (\n {\n after,\n before,\n children,\n className,\n disabled = false,\n readOnly = false,\n variant,\n prepend,\n append,\n size = 'medium',\n isFilled,\n label,\n required,\n labelTooltip,\n labelTooltipButtonAriaLabel = `Klikk for tilleggsinfo om ${label}-feltet`,\n labelTooltipPlacement = 'top',\n feedback,\n labelId,\n labelProps,\n style,\n disableLabelAnimation = false,\n ariaAlertOnFeedback = false,\n ariaLabelOnReadOnly = 'Dette skjemafeltet kan bare leses',\n ...rest\n },\n ref,\n ) => {\n const contextVariant = useVariant();\n const currentVariant = variant || contextVariant;\n\n return (\n <InputGroupContextProvider>\n <div\n className={classNames(\n 'eds-form-control__field-and-feedback-text',\n className,\n {\n 'eds-form-control__field-and-feedback-text--has-tooltip':\n labelTooltip !== undefined,\n },\n )}\n style={style}\n >\n {before}\n <div\n className={classNames(\n 'eds-form-control-wrapper',\n `eds-form-control-wrapper--size-${size}`,\n {\n 'eds-form-control-wrapper--success':\n currentVariant === 'success',\n 'eds-form-control-wrapper--negative':\n currentVariant === 'negative' || currentVariant === error,\n 'eds-form-control-wrapper--disabled': disabled,\n 'eds-form-control-wrapper--readonly': readOnly,\n 'eds-form-control-wrapper--is-filled': isFilled,\n },\n )}\n ref={ref}\n tabIndex={readOnly ? -1 : undefined}\n {...rest}\n >\n {prepend && (\n <div className=\"eds-form-control__prepend\">{prepend}</div>\n )}\n <InputGroupLabel\n label={label}\n required={required}\n labelId={labelId}\n staticAnimation={disableLabelAnimation}\n aria-label={\n readOnly ? `${label}, ${ariaLabelOnReadOnly}` : undefined\n }\n {...labelProps}\n />\n {labelTooltip && (\n <Tooltip\n content={labelTooltip}\n placement={labelTooltipPlacement}\n showCloseButton={false}\n disableFocusListener={true}\n disableHoverListener={true}\n disableClickListner={false}\n disableKeyboardListener={false}\n >\n <IconButton\n as=\"span\"\n tabIndex={0}\n role=\"button\"\n className=\"eds-form-control__append eds-form-control__append--tooltip\"\n aria-label={labelTooltipButtonAriaLabel}\n >\n <QuestionIcon\n className=\"eds-input-group__label-tooltip-icon\"\n aria-hidden=\"true\"\n />\n </IconButton>\n </Tooltip>\n )}\n {children}\n {append && <div className=\"eds-form-control__append\">{append}</div>}\n </div>\n {feedback && currentVariant && (\n <FeedbackText\n variant={currentVariant}\n role={ariaAlertOnFeedback ? 'alert' : undefined}\n >\n {feedback}\n </FeedbackText>\n )}\n {after}\n </div>\n </InputGroupContextProvider>\n );\n },\n);\n","import React, { CSSProperties } from 'react';\nimport cx from 'classnames';\nimport { Paragraph } from '@entur/typography';\nimport { mergeRefs } from '@entur/utils';\n\nimport './Checkbox.scss';\n\nexport type CheckboxProps = {\n /** Ekstra klassenavn */\n className?: string;\n /** Label for checkboxen, som vises ved høyre side. */\n children?: React.ReactNode;\n /** Om Checkbox er avmerket, eller om den er i en indeterminate state */\n checked?: 'indeterminate' | boolean;\n /** Callback for Checkbox */\n onChange?: (e: React.ChangeEvent<HTMLInputElement>) => void;\n /** Om checkboxen er disabled eller ikke\n * @default false\n */\n disabled?: boolean;\n /** Sett til true om skjema-elementet er i read-only modus\n * @default false\n */\n readOnly?: boolean;\n /**Ekstra styling til komponenten */\n style?: CSSProperties;\n /** Reduserer klikkflaten for Checkbox'en\n * @default false\n */\n reduceClickArea?: boolean;\n /** Om animasjon skal deaktiveres\n * @default false\n */\n disableAnimation?: boolean;\n} & Omit<React.InputHTMLAttributes<HTMLInputElement>, 'checked'>;\n\nexport const Checkbox = React.forwardRef<HTMLInputElement, CheckboxProps>(\n (\n {\n checked,\n className,\n children,\n style,\n disabled = false,\n readOnly = false,\n reduceClickArea,\n disableAnimation = false,\n ...rest\n },\n ref: React.Ref<HTMLInputElement>,\n ) => {\n const inputRef = React.useRef<HTMLInputElement>(null);\n\n const isIndeterminate = checked === 'indeterminate';\n const isControlled = checked !== undefined;\n\n React.useEffect(() => {\n if (inputRef && inputRef.current) {\n inputRef.current.indeterminate = isIndeterminate;\n }\n }, [isIndeterminate]);\n\n return (\n <label\n className={cx('eds-checkbox__container', className, {\n 'eds-checkbox--disabled': disabled,\n 'eds-checkbox--readonly': readOnly,\n 'eds-checkbox__container--reduced-click-area': reduceClickArea,\n })}\n style={style}\n >\n <input\n type=\"checkbox\"\n ref={mergeRefs(ref, inputRef)}\n checked={isControlled ? checked === true : undefined}\n disabled={disabled}\n onKeyDown={e => {\n if (readOnly && (e.key === ' ' || e.key === 'Enter')) {\n e.preventDefault();\n e.stopPropagation();\n }\n }}\n aria-label={\n readOnly ? ` ${children?.toString()}. Kan ikke endres` : undefined\n }\n {...rest}\n />\n <span\n className={cx('eds-checkbox__icon', {\n 'eds-checkbox__icon--disabled': disabled,\n 'eds-checkbox__icon--readonly': readOnly,\n 'eds-checkbox__icon--reduced-click-area': reduceClickArea,\n 'eds-checkbox__icon--no-animation':\n disableAnimation || disabled || readOnly,\n })}\n >\n <CheckboxIcon indeterminate={isIndeterminate} />\n </span>\n {children && (\n <Paragraph className=\"eds-checkbox__label\" margin=\"none\" as=\"span\">\n {children}\n </Paragraph>\n )}\n </label>\n );\n },\n);\n\nconst CheckboxIcon: React.FC<{ indeterminate: boolean }> = ({\n indeterminate = false,\n}) => {\n return (\n <svg\n className=\"eds-checkbox-icon\"\n width=\"11px\"\n height=\"9px\"\n viewBox=\"6 11 37 33\"\n aria-hidden={true}\n >\n {indeterminate ? (\n <rect x=\"10\" y=\"25\" width=\"28\" height=\"5\" fill=\"white\" />\n ) : (\n <path d=\"M14.1 27.2l7.1 7.2 14.6-14.8\" fill=\"none\" />\n )}\n </svg>\n );\n};\n","import React from 'react';\nimport classNames from 'classnames';\nimport { Heading5 } from '@entur/typography';\nimport './Fieldset.scss';\n\nexport type FieldsetProps = {\n /** Innholdet i felt-gruppen. */\n children: React.ReactNode;\n /** Ekstra klassenavn */\n className?: string;\n /** Labelen til felt-gruppen. */\n label?: React.ReactNode;\n [key: string]: any;\n};\n\nexport const Fieldset: React.FC<FieldsetProps> = ({\n children,\n className,\n label,\n ...rest\n}) => (\n <fieldset className={classNames('eds-fieldset', className)} {...rest}>\n {label && <Heading5 as=\"legend\">{label}</Heading5>}\n {children}\n </fieldset>\n);\n","import React from 'react';\n\ntype RadioGroupContextProps = {\n name: string;\n onChange: (e: React.ChangeEvent<HTMLInputElement>) => void;\n value: string | null;\n readOnly?: boolean;\n};\n\nconst RadioGroupContext = React.createContext<RadioGroupContextProps | null>(\n null,\n);\n\nexport const RadioGroupContextProvider = RadioGroupContext.Provider;\n\nexport const useRadioGroupContext: () => RadioGroupContextProps = () => {\n const context = React.useContext(RadioGroupContext);\n if (!context) {\n throw new Error(\n 'You need to wrap your RadioButtons in a RadioGroup component',\n );\n }\n return context;\n};\n","import React from 'react';\nimport cx from 'classnames';\nimport { Paragraph } from '@entur/typography';\nimport { useRadioGroupContext } from './RadioGroupContext';\nimport './Radio.scss';\n\nexport type RadioProps = {\n /** Ekstra klassenavn */\n className?: string;\n /** Label til radio-button. Vises ved høyre side. */\n children?: React.ReactNode;\n /** Verdien til radioknappen */\n value: string;\n /** Om radiobutton er disabled eller ikke\n * @default false\n */\n disabled?: boolean;\n /** Beskrivelse som leses opp av skjermlesere når radiobutton er readonly */\n readOnlyLabelDescription?: string;\n} & React.InputHTMLAttributes<HTMLInputElement>;\n\nexport const Radio = React.forwardRef<HTMLInputElement, RadioProps>(\n (\n { className, children, value, disabled, readOnlyLabelDescription, ...rest },\n ref: React.Ref<HTMLInputElement>,\n ) => {\n const {\n name,\n value: selectedValue,\n onChange,\n readOnly,\n } = useRadioGroupContext();\n\n const classList = cx(className, 'eds-form-component--radio__radio', {\n 'eds-form-component--radio__radio--disabled': disabled,\n 'eds-form-component--radio__radio--readonly': readOnly,\n });\n\n return (\n <label className=\"eds-form-component--radio__container\">\n <input\n type=\"radio\"\n name={rest.name ?? name}\n ref={ref}\n value={value}\n checked={rest.checked ?? selectedValue === value}\n onChange={e => {\n if (readOnly) {\n e.preventDefault();\n return;\n }\n (rest.onChange ?? onChange)?.(e);\n }}\n onClick={e => {\n if (readOnly) {\n e.preventDefault();\n }\n }}\n disabled={disabled}\n aria-label={\n readOnly\n ? `${children?.toString()}. ${\n readOnlyLabelDescription ?? 'Kan ikke endres'\n }`\n : undefined\n }\n {...rest}\n />\n <span className={classList}>\n <span className=\"eds-form-component--radio__circle\"></span>\n </span>\n {children && (\n <Paragraph\n margin=\"none\"\n as=\"span\"\n className=\"eds-form-component--radio__label\"\n >\n {children}\n </Paragraph>\n )}\n </label>\n );\n },\n);\n","import React, { useRef } from 'react';\nimport classNames from 'classnames';\nimport { mergeRefs, useRandomId, useForceUpdate } from '@entur/utils';\nimport { Checkbox } from '../Checkbox';\nimport { Radio } from '../Radio';\n\nimport './InputPanelBase.scss';\n\nexport type InputPanelProps = {\n /** Om det er en radio- eller checkbox-variant */\n type: string;\n /** Verdien til input-panelet */\n value: string;\n /** Om input-panelet skal være valgt eller ikke */\n checked?: boolean;\n /** Hovedtittelen til input-panelet */\n title: React.ReactNode;\n /** Ektstra label som står høyrestilt, til venstre for Checkboxen/Radio-button-en */\n secondaryLabel?: React.ReactNode;\n /** Ekstra informasjon som legges nederst i input-panelet */\n children?: React.ReactNode;\n /** Størrelse på input-panelet\n * @default \"medium\"\n */\n size?: 'medium' | 'large';\n /**Skjuler checkbox-/radio-button-en i input-panelet\n * @default false\n */\n hideSelectionIndicator?: boolean;\n /** Ekstra klassenavn */\n className?: string;\n /** Om input-panelet er deaktivert eller ikke\n * @default false\n */\n disabled?: boolean;\n /** */\n style?: React.CSSProperties;\n} & Omit<\n React.DetailedHTMLProps<\n React.InputHTMLAttributes<HTMLInputElement>,\n HTMLInputElement\n >,\n 'title' | 'size'\n>;\n\nexport const InputPanelBase = React.forwardRef<\n HTMLInputElement,\n InputPanelProps\n>(\n (\n {\n className,\n children,\n value,\n title,\n secondaryLabel,\n size = 'medium',\n hideSelectionIndicator = false,\n style,\n id,\n disabled = false,\n type = 'radio',\n onChange,\n checked,\n name,\n ...rest\n },\n ref: React.Ref<HTMLInputElement>,\n ) => {\n const classList = classNames(\n className,\n 'eds-input-panel__container',\n `eds-input-panel--${size}`,\n );\n\n const inputRef = useRef<HTMLInputElement>(null);\n\n const defaultId = useRandomId('eds-inputpanel');\n const inputPanelId = id || defaultId;\n const forceUpdate = useForceUpdate();\n\n const handleOnChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n if (onChange === undefined) forceUpdate();\n onChange?.(e);\n };\n\n return (\n <label className=\"eds-input-panel\" htmlFor={inputPanelId}>\n <input\n type={type}\n name={name}\n ref={mergeRefs(ref, inputRef)}\n value={value}\n checked={checked}\n onChange={handleOnChange}\n id={inputPanelId}\n disabled={disabled}\n {...rest}\n />\n <div className={classList} style={style}>\n <div className=\"eds-input-panel__title-wrapper\">\n <div className=\"eds-input-panel__title\">{title}</div>\n <div className=\"eds-input-panel__secondary-label-and-icon-wrapper\">\n {secondaryLabel !== undefined && <>{secondaryLabel}</>}\n <span style={{ pointerEvents: 'none' }}>\n {!(disabled || hideSelectionIndicator) &&\n (type === 'radio' ? (\n <Radio\n name=\"\"\n value=\"\"\n checked={checked ?? inputRef.current?.checked ?? false}\n onChange={() => {\n return;\n }}\n aria-hidden=\"true\"\n tabIndex={-1}\n />\n ) : (\n <Checkbox\n checked={checked ?? inputRef.current?.checked ?? false}\n onChange={() => null}\n aria-hidden=\"true\"\n tabIndex={-1}\n />\n ))}\n </span>\n </div>\n </div>\n {children && (\n <div className=\"eds-input-panel__additional-content\">\n {children}\n </div>\n )}\n </div>\n </label>\n );\n },\n);\n","import React from 'react';\nimport { useRadioGroupContext } from '../RadioGroupContext';\nimport { InputPanelBase } from './InputPanelBase';\n\nexport type RadioPanelProps = {\n /** Verdien til radio-panelet */\n value: string;\n /** Hovedtittelen til radio-panelet */\n title: React.ReactNode;\n /** Ektstra label som står høyrestilt, til venstre for radio-button-en */\n secondaryLabel?: React.ReactNode;\n /** Ekstra informasjon som legges nederst i radio-panelet */\n children?: React.ReactNode;\n /** Størrelse på radio-panelet\n * @default \"medium\"\n */\n size?: 'medium' | 'large';\n /**Skjuler radio-button-en i radio-panelet\n * @default false\n */\n hideRadioButton?: boolean;\n /** Ekstra klassenavn */\n className?: string;\n /** Om radio-panelet er deaktivert eller ikke\n * @default false\n */\n disabled?: boolean;\n /** */\n style?: React.CSSProperties;\n} & Omit<\n React.DetailedHTMLProps<\n React.InputHTMLAttributes<HTMLInputElement>,\n HTMLInputElement\n >,\n 'title' | 'size'\n>;\n\nexport const RadioPanel = React.forwardRef<HTMLInputElement, RadioPanelProps>(\n (\n {\n className,\n children,\n value,\n title,\n secondaryLabel,\n size = 'medium',\n hideRadioButton = false,\n style,\n id,\n disabled = false,\n ...rest\n },\n ref: React.Ref<HTMLInputElement>,\n ) => {\n const { name, value: selected, onChange } = useRadioGroupContext();\n\n return (\n <InputPanelBase\n type=\"radio\"\n name={name}\n title={title}\n value={value}\n checked={selected === value}\n onChange={onChange}\n className={className}\n secondaryLabel={secondaryLabel}\n size={size}\n hideSelectionIndicator={hideRadioButton}\n style={style}\n id={id}\n disabled={disabled}\n {...rest}\n ref={ref}\n >\n {children}\n </InputPanelBase>\n );\n },\n);\n","import React from 'react';\nimport { InputPanelBase } from './InputPanelBase';\n\nexport type CheckboxPanelProps = {\n /** Verdien til CheckboxPanel */\n value: string;\n /** Om checkbox-panelet skal være valgt eller ikke */\n checked?: boolean;\n /** Hovedtittelen til CheckboxPanel */\n title: React.ReactNode;\n /** Ektstra label som står høyrestilt mot Checkboxen */\n secondaryLabel?: React.ReactNode;\n /** Ekstra informasjon som legges nederst i CheckboxPanel */\n children?: React.ReactNode;\n /** Størrelse på CheckboxPanel\n * @default \"medium\"\n */\n size?: 'medium' | 'large';\n /**Skjuler checkbox-en i CheckboxPanel\n * @default false\n */\n hideCheckbox?: boolean;\n /** Ekstra klassenavn */\n className?: string;\n /** Om CheckboxPanel er deaktivert eller ikke\n * @default false\n */\n disabled?: boolean;\n /** */\n style?: React.CSSProperties;\n} & Omit<\n React.DetailedHTMLProps<\n React.InputHTMLAttributes<HTMLInputElement>,\n HTMLInputElement\n >,\n 'title' | 'size'\n>;\n\nexport const CheckboxPanel = React.forwardRef<\n HTMLInputElement,\n CheckboxPanelProps\n>(\n (\n {\n name,\n checked,\n onChange,\n className,\n children,\n value,\n title,\n secondaryLabel,\n size = 'medium',\n hideCheckbox = false,\n style,\n id,\n disabled = false,\n ...rest\n },\n ref: React.Ref<HTMLInputElement>,\n ) => {\n return (\n <InputPanelBase\n type=\"checkbox\"\n name={name}\n title={title}\n value={value}\n checked={checked}\n onChange={onChange}\n className={className}\n secondaryLabel={secondaryLabel}\n size={size}\n hideSelectionIndicator={hideCheckbox}\n style={style}\n id={id}\n disabled={disabled}\n {...rest}\n ref={ref}\n >\n {children}\n </InputPanelBase>\n );\n },\n);\n","import React from 'react';\nimport { RadioGroupContextProvider } from './RadioGroupContext';\nimport { Fieldset } from './Fieldset';\n\nexport type RadioGroupProps = {\n /** Navnet til radiogruppen. */\n name: string;\n /** Overskrift over radiogruppen */\n label?: string;\n /** Verdien til den valgte radioknappen */\n value: string | null;\n /** Radioknappene sendes inn som children */\n children: React.ReactNode;\n /** En callback som blir kalles hver gang en radioknapp klikkes på */\n onChange: (e: React.ChangeEvent<HTMLInputElement>) => void;\n [key: string]: any;\n /** Sett radiogruppen i readonly-modus */\n readOnly?: boolean;\n};\n\nexport const RadioGroup: React.FC<RadioGroupProps> = ({\n name,\n value,\n children,\n onChange,\n label,\n readOnly = false,\n ...rest\n}) => {\n const contextValue = React.useMemo(\n () => ({ name, value, onChange, readOnly }),\n [name, value, onChange, readOnly],\n );\n return (\n <RadioGroupContextProvider value={contextValue}>\n {label ? (\n <Fieldset label={label} {...rest}>\n {children}\n </Fieldset>\n ) : (\n children\n )}\n </RadioGroupContextProvider>\n );\n};\n","import React from 'react';\nimport classNames from 'classnames';\nimport { colors } from '@entur/tokens';\nimport { CheckIcon, CloseSmallIcon } from '@entur/icons';\nimport './Switch.scss';\n\nexport type SwitchProps = {\n /** Ekstra klassenavn */\n className?: string;\n /** Label for Switch-en. */\n children?: React.ReactNode;\n /** Posisjonen til label for Switch-en.\n * @default \"right\"\n */\n labelPlacement?: 'right' | 'bottom';\n /** Om switch-en er checked eller ikke */\n checked?: boolean;\n /** Ikonet som skal stå inne i sirkelen på Switch-en */\n icon?: React.ReactNode;\n /** Skjul ikonet inne i sikrelen på Switch-en\n * @default false\n */\n hideIcon?: boolean;\n /** Farge som settes på ikon og bakgrunn når Switch-en er \"checked\"\n * @default colors.validation.mint\n */\n color?: string;\n /** Farge på bakgrunn når Switch-en er \"checked\" og står i en kontrast-seksjon\n * @default colors.validation.mintContrast\n */\n contrastColor?: string;\n /** Størrelsen på Switch-en\n * @default \"medium\"\n */\n size?: 'medium' | 'large';\n /** Callback for når verdien endres */\n onChange?: (e: React.ChangeEvent<HTMLInputElement>) => void;\n} & Omit<React.InputHTMLAttributes<HTMLInputElement>, 'size'>;\n\nexport const Switch = React.forwardRef<HTMLInputElement, SwitchProps>(\n (\n {\n className,\n children,\n labelPlacement = 'right',\n icon,\n hideIcon = false,\n color = colors.validation.mint,\n contrastColor = colors.validation.mintContrast,\n size = 'medium',\n checked,\n ...rest\n },\n ref: React.Ref<HTMLInputElement>,\n ) => {\n const displayedIcon = () => {\n if (icon) return icon;\n if (checked === undefined) return <></>;\n const iconSize = size === 'large' ? 23 : undefined;\n return checked ? (\n <CheckIcon size={iconSize} />\n ) : (\n <CloseSmallIcon size={iconSize} />\n );\n };\n\n return (\n <label\n className={classNames(\n 'eds-switch',\n `eds-switch--${labelPlacement}`,\n className,\n )}\n style={{ ...rest.style }}\n >\n <input type=\"checkbox\" ref={ref} checked={checked} {...rest} />\n <span\n className={classNames(\n 'eds-switch__switch',\n `eds-switch__switch--${size}`,\n )}\n style={\n {\n '--eds-switch-color': color,\n '--eds-switch-contrast-color': contrastColor,\n } as React.CSSProperties\n }\n aria-hidden=\"true\"\n >\n <span className=\"eds-switch__circle\">\n {!hideIcon && displayedIcon()}\n </span>\n </span>\n {children && (\n <span\n className={classNames(\n 'eds-switch__label',\n `eds-switch__label--${size}--${labelPlacement}`,\n )}\n >\n {children}\n </span>\n )}\n </label>\n );\n },\n);\n","// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types -- disabled during Yarn upgrade\nexport function hasValue(value: any): boolean {\n return value != null && !(Array.isArray(value) && value.length === 0);\n}\n\n// Determine if field is empty or filled.\n// Response determines if label is presented above field or as placeholder.\n//\n// @param obj\n// @param SSR\n// @returns {boolean} False when not present or empty string.\n// True when any number or string with length.\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types -- disabled during Yarn upgrade\nexport function isFilled(obj: any, SSR = false): boolean {\n return (\n obj &&\n ((hasValue(obj.value) && obj.value !== '') ||\n (SSR && hasValue(obj.defaultValue) && obj.defaultValue !== ''))\n );\n}\n","import React from 'react';\nimport classNames from 'classnames';\n\nimport { useRandomId, useOnMount, mergeRefs, VariantType } from '@entur/utils';\n\nimport { useVariant } from './VariantProvider';\nimport { BaseFormControl } from './BaseFormControl';\nimport { useInputGroupContext } from './InputGroupContext';\nimport { isFilled } from './utils';\n\nimport './TextArea.scss';\nimport { Placement } from '@entur/tooltip';\n\n/** @deprecated use variant=\"information\" instead */\nconst info = 'info';\n/** @deprecated use variant=\"negative\" instead */\nconst error = 'error';\n\nexport type TextAreaProps = {\n /** Ekstra klassenavn */\n className?: string;\n /** Valideringsvariant */\n variant?: VariantType | typeof error | typeof info;\n /** Deaktiverer tekstområdet */\n disabled?: boolean;\n /** Setter tekstområdet i read-only modus */\n readOnly?: boolean;\n /** Label over TextArea */\n label: string;\n /** En tooltip som forklarer labelen til inputfeltet */\n labelTooltip?: React.ReactNode;\n /** Forklarende tekst for knappen som åpner labelTooltip */\n labelTooltipButtonAriaLabel?: string;\n /** Plasseringen til tooltip-en relativt til spørsmålstegn-knappen */\n labelTooltipPlacement?: Placement;\n /** Varselmelding, som vil komme under TextArea */\n feedback?: string;\n /** Plasserer labelen statisk på toppen av inputfeltet\n * @default false\n */\n disableLabelAnimation?: boolean;\n} & React.TextareaHTMLAttributes<HTMLTextAreaElement>;\n\nexport const TextArea = React.forwardRef<HTMLTextAreaElement, TextAreaProps>(\n (\n {\n variant,\n disabled = false,\n readOnly = false,\n className,\n style,\n label,\n feedback,\n labelTooltip,\n labelTooltipButtonAriaLabel,\n labelTooltipPlacement,\n onChange,\n disableLabelAnimation,\n ...rest\n },\n ref: React.Ref<HTMLTextAreaElement>,\n ) => {\n const textAreaId = useRandomId('eds-textarea');\n const textareaRef = React.useRef<HTMLTextAreaElement>(null);\n return (\n <BaseFormControl\n className={classNames(className, 'eds-textarea__wrapper')}\n disabled={disabled}\n readOnly={readOnly}\n variant={variant}\n style={style}\n label={label}\n labelId={textAreaId}\n feedback={feedback}\n labelTooltip={labelTooltip}\n labelTooltipButtonAriaLabel={labelTooltipButtonAriaLabel}\n labelTooltipPlacement={labelTooltipPlacement}\n labelProps={{ className: 'eds-textarea__label' }}\n disableLabelAnimation={disableLabelAnimation}\n onClick={e => {\n if (e.target === e.currentTarget) textareaRef?.current?.focus();\n }}\n >\n <TextAreaBase\n readOnly={readOnly}\n disabled={disabled}\n ref={mergeRefs(ref, textareaRef)}\n aria-labelledby={textAreaId}\n onChange={onChange}\n variant={variant}\n {...rest}\n />\n </BaseFormControl>\n );\n },\n);\n\ntype TextAreaBaseProps = {\n readOnly?: boolean;\n disabled?: boolean;\n variant?: VariantType | typeof error | typeof info;\n} & React.TextareaHTMLAttributes<HTMLTextAreaElement>;\n\nconst TextAreaBase = React.forwardRef<HTMLTextAreaElement, TextAreaBaseProps>(\n ({ readOnly, disabled, onChange, value, variant, ...rest }, ref) => {\n const contextVariant = useVariant();\n const currentVariant = variant || contextVariant;\n const { isFilled: isInputFilled, setFilled: setFiller } =\n useInputGroupContext();\n\n useOnMount(() => {\n if (value?.toString() || rest.defaultValue) {\n setFiller && !isInputFilled && setFiller(true);\n }\n });\n React.useEffect(() => {\n if (value?.toString() && setFiller && !isInputFilled) {\n setFiller(true);\n }\n }, [value, setFiller, isInputFilled]);\n\n const handleChange = (event: React.ChangeEvent<HTMLTextAreaElement>) => {\n if (isFilled(event.target)) {\n setFiller && !isInputFilled && setFiller(true);\n } else {\n setFiller && isInputFilled && setFiller(false);\n }\n if (onChange) {\n onChange(event);\n }\n };\n\n return (\n <textarea\n className=\"eds-form-control eds-textarea\"\n ref={ref}\n readOnly={readOnly}\n disabled={disabled}\n onChange={handleChange}\n value={value}\n aria-invalid={currentVariant === 'error'}\n {...rest}\n />\n );\n },\n);\n","import React from 'react';\nimport classNames from 'classnames';\n\nimport { CloseSmallIcon } from '@entur/icons';\nimport { useRandomId, useOnMount, mergeRefs, VariantType } from '@entur/utils';\n\nimport { BaseFormControl } from './BaseFormControl';\nimport { useInputGroupContext } from './InputGroupContext';\nimport { isFilled } from './utils';\nimport { useVariant } from './VariantProvider';\nimport './TextField.scss';\nimport { Placement } from '@entur/tooltip';\n\n/** @deprecated use variant=\"information\" instead */\nconst info = 'info';\n/** @deprecated use variant=\"negative\" instead */\nconst error = 'error';\n\nexport type TextFieldProps = {\n /** Tekst eller ikon som kommer før inputfeltet */\n prepend?: React.ReactNode;\n /** Tekst eller ikon som kommer etter inputfeltet */\n append?: React.ReactNode;\n /** Ekstra klassenavn */\n className?: string;\n /** Label over TextField */\n label: React.ReactNode;\n /** En tooltip som forklarer labelen til inputfeltet */\n labelTooltip?: React.ReactNode;\n /** Forklarende tekst for knappen som åpner labelTooltip */\n labelTooltipButtonAriaLabel?: string;\n /** Plasseringen til tooltip-en relativt til spørsmålstegn-knappen */\n labelTooltipPlacement?: Placement;\n /** Varselmelding, som vil komme under TextField */\n feedback?: string;\n /** Hvilken valideringsfarge som vises*/\n variant?: VariantType | typeof error | typeof info;\n /** Deaktiver inputfeltet */\n disabled?: boolean;\n /** Setter inputfeltet i read-only modus */\n readOnly?: boolean;\n /** Størrelsen på TextField\n * @default \"medium\"\n */\n size?: 'medium' | 'large';\n /** Plasserer labelen statisk på toppen av inputfeltet\n * @default false\n */\n disableLabelAnimation?: boolean;\n /** Ekstra props som sendes til label-elementet */\n labelProps?: React.DetailedHTMLProps<\n React.LabelHTMLAttributes<HTMLLabelElement>,\n HTMLLabelElement\n >;\n /** Om man skal ha muliget for å nullstille TextField. Viser lukkekryss hvis feltet er fylt.\n * @default false\n */\n clearable?: boolean;\n /** Callback for clearable */\n onClear?: () => void;\n ariaAlertOnFeedback?: boolean;\n} & Omit<React.InputHTMLAttributes<HTMLInputElement>, 'size' | 'label'>;\n\nexport const TextField = React.forwardRef<HTMLInputElement, TextFieldProps>(\n (\n {\n prepend,\n append,\n variant,\n disabled = false,\n readOnly = false,\n className,\n style,\n size = 'medium',\n label,\n required,\n labelTooltip,\n labelTooltipButtonAriaLabel,\n labelTooltipPlacement,\n feedback,\n onChange,\n disableLabelAnimation,\n labelProps,\n clearable = false,\n onClear,\n value,\n ariaAlertOnFeedback = false,\n ...rest\n },\n ref: React.Ref<HTMLInputElement>,\n ) => {\n const randomId = useRandomId('eds-textfield');\n const textFieldId = labelProps && labelProps.id ? labelProps.id : randomId;\n const textFieldRef = React.useRef<HTMLInputElement>(null);\n return (\n <BaseFormControl\n disabled={disabled}\n readOnly={readOnly}\n variant={variant}\n prepend={prepend}\n append={\n clearable && onClear ? <ClearButton onClear={onClear} /> : append\n }\n className={classNames(className, 'eds-textfield__wrapper')}\n style={style}\n size={size}\n label={label}\n required={required}\n labelTooltip={labelTooltip}\n labelTooltipButtonAriaLabel={labelTooltipButtonAriaLabel}\n labelTooltipPlacement={labelTooltipPlacement}\n labelId={textFieldId}\n feedback={feedback}\n disableLabelAnimation={disableLabelAnimation}\n labelProps={labelProps}\n ariaAlertOnFeedback={ariaAlertOnFeedback}\n onClick={e => {\n if (e.target === e.currentTarget) textFieldRef?.current?.focus();\n }}\n >\n <TextFieldBase\n disabled={disabled}\n readOnly={readOnly}\n ref={mergeRefs(ref, textFieldRef)}\n aria-labelledby={textFieldId}\n onChange={onChange}\n value={value}\n variant={variant}\n {...rest}\n />\n </BaseFormControl>\n );\n },\n);\n\ntype TextFieldBaseProps = {\n /** Deaktiver inputfeltet */\n disabled?: boolean;\n /** Setter inputfeltet i read-only modus */\n readOnly?: boolean;\n variant?: VariantType | typeof error | typeof info;\n} & React.DetailedHTMLProps<\n React.InputHTMLAttributes<HTMLInputElement>,\n HTMLInputElement\n>;\n\nconst TextFieldBase = React.forwardRef<HTMLInputElement, TextFieldBaseProps>(\n (\n { disabled, readOnly, placeholder, onChange, value, variant, ...rest },\n forwardRef,\n ) => {\n const contextVariant = useVariant();\n const currentVariant = variant || contextVariant;\n const { isFilled: isInputFilled, setFilled: setFiller } =\n useInputGroupContext();\n\n useOnMount(() => {\n if (value?.toString() || rest.defaultValue) {\n setFiller && !isInputFilled && setFiller(true);\n }\n });\n React.useEffect(() => {\n if (value?.toString() && setFiller && !isInputFilled) {\n setFiller(true);\n }\n }, [value, setFiller, isInputFilled]);\n\n const handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n if (isFilled(event.target)) {\n setFiller && !isInputFilled && setFiller(true);\n } else {\n setFiller && isInputFilled && setFiller(false);\n }\n if (onChange) {\n onChange(event);\n }\n };\n\n return (\n <input\n aria-invalid={currentVariant === 'error'}\n className=\"eds-form-control\"\n disabled={disabled}\n readOnly={readOnly}\n ref={forwardRef}\n placeholder={placeholder}\n onChange={handleChange}\n value={value}\n {...rest}\n />\n );\n },\n);\n\nconst ClearButton: React.FC<{\n onClear: () => void;\n [key: string]: any;\n}> = ({ onClear, ...props }) => {\n const { isFilled: hasValue, setFilled } = useInputGroupContext();\n return (\n <div className=\"eds-textfield__clear-button-wrapper\">\n {hasValue && <div className=\"eds-textfield__divider\"></div>}\n {hasValue && (\n <button\n className=\"eds-textfield__clear-button\"\n type=\"button\"\n tabIndex={-1}\n onClick={() => {\n setFilled(false);\n onClear();\n }}\n {...props}\n >\n <CloseSmallIcon />\n </button>\n )}\n </div>\n );\n};\n","import React from 'react';\nimport { useRandomId } from '@entur/utils';\n\nexport type SelectedValues = { [key: string]: boolean };\nexport type SelectedValue = string | null;\nexport type SegmentedContextProps =\n | {\n name: string;\n onChange: (value: SelectedValues) => void;\n selectedValue: SelectedValues;\n multiple: true;\n size: 'medium' | 'large';\n }\n | {\n name: string;\n onChange: (value: SelectedValue) => void;\n selectedValue: SelectedValue;\n multiple: false;\n size: 'medium' | 'large';\n };\n\nconst SegmentedContext = React.createContext<SegmentedContextProps | null>(\n null,\n);\n\nexport type SegmentedProviderProps =\n | {\n name?: string;\n onChange?: (value: SelectedValues) => void;\n selectedValue: SelectedValues;\n multiple: true;\n size: 'medium' | 'large';\n }\n | {\n name?: string;\n onChange?: (value: SelectedValue) => void;\n selectedValue: SelectedValue;\n multiple: false;\n size: 'medium' | 'large';\n };\n\nexport const SegmentedProvider: React.FC<SegmentedProviderProps> = ({\n name,\n onChange = () => undefined,\n selectedValue,\n multiple,\n size,\n ...rest\n}) => {\n const generatedName = useRandomId('eds-segmented-control');\n const contextValue = React.useMemo(\n () => ({\n name: name || generatedName,\n onChange,\n multiple,\n selectedValue,\n size,\n }),\n [generatedName, multiple, name, onChange, selectedValue, size],\n ) as SegmentedContextProps;\n return <SegmentedContext.Provider value={contextValue} {...rest} />;\n};\n\nexport const useSegmentedContext = (): SegmentedContextProps => {\n const context = React.useContext(SegmentedContext);\n if (!context) {\n throw new Error(\n 'You need to wrap your SegmentedChoice in either SegmentedControl or MultipleSegmentedControl',\n );\n }\n return context;\n};\n","import React from 'react';\nimport classNames from 'classnames';\nimport {\n useSegmentedContext,\n SelectedValues,\n SelectedValue,\n} from './SegmentedContext';\nimport './SegmentedChoice.scss';\n\nexport type SegmentedChoiceProps = {\n /** Verdien til valget */\n value: string;\n /** Innhold som beskriver valget */\n children: React.ReactNode;\n /** Ekstra klassenavn */\n className?: string;\n /** Callback som kalles når komponenten endres */\n onChange?: (e: React.ChangeEvent<HTMLInputElement>) => void;\n} & React.DetailedHTMLProps<\n React.InputHTMLAttributes<HTMLInputElement>,\n HTMLInputElement\n>;\n\nexport const SegmentedChoice = React.forwardRef<\n HTMLInputElement,\n SegmentedChoiceProps\n>(\n (\n {\n children,\n className,\n style,\n value,\n name,\n onChange = () => undefined,\n ...rest\n },\n ref: React.Ref<HTMLInputElement>,\n ) => {\n const {\n name: commonName,\n selectedValue,\n onChange: commonOnChange,\n multiple,\n size,\n } = useSegmentedContext();\n\n const isChecked = multiple\n ? (selectedValue as SelectedValues)[value]\n : (selectedValue as SelectedValue) === value;\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n onChange(e);\n if (multiple) {\n commonOnChange({\n ...(selectedValue as SelectedValues),\n [value]: e.target.checked,\n } as any);\n } else if (e.target.checked) {\n commonOnChange(value as any);\n }\n };\n\n return (\n <label\n className={classNames('eds-segmented-choice', className)}\n style={style}\n >\n <input\n type={multiple ? 'checkbox' : 'radio'}\n name={name || commonName}\n checked={isChecked}\n value={value}\n onChange={handleChange}\n ref={ref}\n {...rest}\n />\n <div\n className={classNames('eds-base-segmented', {\n 'eds-base-segmented--large': size === 'large',\n })}\n >\n {children}\n </div>\n </label>\n );\n },\n);\n","import React from 'react';\nimport { SegmentedProvider, SelectedValue } from './SegmentedContext';\nimport { Fieldset } from '../Fieldset';\nimport classNames from 'classnames';\nimport './SegmentedControl.scss';\n\nexport type SegmentedControlProps = {\n /** Navn på input-elementene */\n name?: string;\n /** Beskrivende tekst */\n label?: string;\n /** En eller flere SegmentedChoice-komponenter */\n children: React.ReactNode;\n /** Den valgte verdien */\n selectedValue: SelectedValue;\n /** Callback for når det gjøres et valg */\n onChange: (value: SelectedValue) => void;\n /** Størrelsen på SegmentedChoice-komponentene */\n size?: 'medium' | 'large';\n /** Ekstra klassenavn */\n className?: string;\n [key: string]: any;\n};\n\nexport const SegmentedControl: React.FC<SegmentedControlProps> = ({\n children,\n label,\n name,\n onChange,\n selectedValue,\n size = 'medium',\n className,\n ...rest\n}) => {\n return (\n <SegmentedProvider\n name={name}\n selectedValue={selectedValue}\n onChange={onChange}\n multiple={false}\n size={size}\n >\n <Fieldset label={label}>\n <div\n className={classNames('eds-segmented-control', className)}\n {...rest}\n >\n {children}\n </div>\n </Fieldset>\n </SegmentedProvider>\n );\n};\n","import React from 'react';\nimport { Label } from '@entur/typography';\nimport { SegmentedProvider, SelectedValues } from './SegmentedContext';\nimport './SegmentedControl.scss';\n\nexport type MultipleSegmentedControlProps = {\n /** Navn på input-elementene */\n name?: string;\n /** Beskrivende tekst */\n label?: string;\n /** En eller flere SegmentedChoice-komponenter */\n children: React.ReactNode;\n /** Den eller de valgte verdiene */\n selectedValue: SelectedValues;\n /** Callback for når det gjøres et valg */\n onChange: (value: SelectedValues) => void;\n [key: string]: any;\n};\n\n/**This component is not used by anyone, and is therefore deprecated\n * @deprecated\n */\nexport const MultipleSegmentedControl: React.FC<\n MultipleSegmentedControlProps\n> = ({ children, label, name, onChange, selectedValue, ...rest }) => {\n return (\n <SegmentedProvider\n name={name}\n selectedValue={selectedValue}\n onChange={onChange}\n multiple={true}\n size=\"medium\"\n >\n <Label as=\"div\">{label}</Label>\n <div className=\"eds-segmented-control\" {...rest}>\n {children}\n </div>\n </SegmentedProvider>\n );\n};\n","import { warnAboutMissingStyles } from '@entur/utils';\nimport './index.scss';\n\nwarnAboutMissingStyles('form', 'icons', 'typography');\n\nexport * from './BaseFormControl';\nexport * from './Checkbox';\nexport * from './FeedbackText';\nexport * from './Fieldset';\nexport * from './InputGroupLabel';\nexport * from './InputGroupContext';\nexport * from './inputPanel';\nexport * from './Radio';\nexport * from './RadioGroup';\nexport * from './Switch';\nexport * from './TextArea';\nexport * from './TextField';\nexport * from './VariantProvider';\nexport * from './variants';\nexport * from './utils';\nexport * from './segmented-control/SegmentedChoice';\nexport * from './segmented-control/SegmentedControl';\nexport * from './segmented-control/MultipleSegmentedControl';\n"],"names":["error","isFilled","React","cx","hasValue"],"mappings":"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"}
package/dist/styles.css CHANGED
@@ -742,19 +742,19 @@
742
742
  padding: 0;
743
743
  }
744
744
 
745
- .eds-form-control-wrapper:focus-within .eds-input-group__label {
745
+ .eds-form-control-wrapper:focus-within :not(.eds-input-group-label-wrapper--controlled-label-position) .eds-input-group__label {
746
746
  top: 0.375rem;
747
747
  font-size: 0.75rem;
748
748
  line-height: 0.75rem;
749
749
  height: 10px;
750
750
  padding: 0;
751
751
  }
752
- .eds-textarea__label .eds-form-control-wrapper:focus-within .eds-input-group__label {
752
+ .eds-textarea__label .eds-form-control-wrapper:focus-within :not(.eds-input-group-label-wrapper--controlled-label-position) .eds-input-group__label {
753
753
  box-shadow: 0px -2px 0px 4px var(--textarea-label-background);
754
754
  background: var(--textarea-label-background);
755
755
  width: calc(100% - 1rem - 1rem - 4px);
756
756
  }
757
- .eds-form-control-wrapper--size-large:focus-within .eds-input-group__label {
757
+ .eds-form-control-wrapper--size-large:focus-within :not(.eds-input-group-label-wrapper--controlled-label-position) .eds-input-group__label {
758
758
  top: 0.5rem;
759
759
  font-size: 0.875rem;
760
760
  line-height: 1rem;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@entur/form",
3
- "version": "8.4.1-beta.0",
3
+ "version": "8.4.1-beta.1",
4
4
  "license": "EUPL-1.2",
5
5
  "main": "dist/form.cjs.js",
6
6
  "module": "dist/form.esm.js",
@@ -48,5 +48,5 @@
48
48
  "vite": "^7.1.3",
49
49
  "vite-plugin-dts": "^4.5.4"
50
50
  },
51
- "gitHead": "4b9f4e324e6efef2fd56407909a5da32bcdf7662"
51
+ "gitHead": "663dcb5061014c1eaaf24f3d0f8d458e0c501abc"
52
52
  }