diff --git a/packages/assets/src/scss/_choice-input-field.scss b/packages/assets/src/scss/_choice-input-field.scss index 15d756d0..fe966525 100644 --- a/packages/assets/src/scss/_choice-input-field.scss +++ b/packages/assets/src/scss/_choice-input-field.scss @@ -1,7 +1,30 @@ @use 'functions' as *; +@use 'variables' as *; .ids-choice-input-field { + --ids-input-hover-border-color: var(--ids-input-hover-color, #{$color-primary-80}); + --ids-input-hover-text-color: var(--ids-input-hover-color, #{$color-primary-80}); + display: flex; align-items: center; gap: calculateRem(8px); + + &--disabled { + .ids-choice-input-label { + color: var(--ids-input-disabled-text-color, #{$color-neutral-150}); + pointer-events: none; + } + } + + &--error { + .ids-choice-input-label { + color: var(--ids-input-error-text-color, #{$color-error-80}); + } + } + + &:hover:not(&--disabled) { + .ids-choice-input-label { + color: var(--ids-input-hover-text-color); + } + } } diff --git a/packages/assets/src/scss/mixins/_inputs.scss b/packages/assets/src/scss/mixins/_inputs.scss index 204d6790..4c0b5504 100644 --- a/packages/assets/src/scss/mixins/_inputs.scss +++ b/packages/assets/src/scss/mixins/_inputs.scss @@ -29,7 +29,7 @@ pointer-events: none; } - &:hover { + &:hover:not(&--disabled) { border-color: var(--ids-input-hover-border-color, #{$color-primary-80}); } diff --git a/packages/components/src/components/RadioButton/RadioButtonField/RadioButtonField.tsx b/packages/components/src/components/RadioButton/RadioButtonField/RadioButtonField.tsx index 5a2d7c2d..f346d40d 100644 --- a/packages/components/src/components/RadioButton/RadioButtonField/RadioButtonField.tsx +++ b/packages/components/src/components/RadioButton/RadioButtonField/RadioButtonField.tsx @@ -9,8 +9,8 @@ import { RadioButtonFieldProps } from './RadioButtonField.types'; export const RadioButtonField = ({ className = '', - label, inputWrapperClassName = '', + label, labelClassName = '', ...inputProps }: RadioButtonFieldProps) => { @@ -25,6 +25,8 @@ export const RadioButtonField = ({ return ( any; // eslint-disable-line @typescript-eslint/no-explicit-any @@ -22,6 +22,10 @@ export const withStateChecked = (WrappedComponent: FC) => } }; + useEffect(() => { + setComponentChecked(checked); + }, [checked]); + return ; }; diff --git a/packages/components/src/hoc/withStateValue.tsx b/packages/components/src/hoc/withStateValue.tsx index 300c5bc4..2383cb7e 100644 --- a/packages/components/src/hoc/withStateValue.tsx +++ b/packages/components/src/hoc/withStateValue.tsx @@ -1,4 +1,4 @@ -import React, { FC, useState } from 'react'; +import React, { FC, useEffect, useState } from 'react'; type OnChangeFn = (value: T, ...args: any[]) => any; // eslint-disable-line @typescript-eslint/no-explicit-any @@ -22,6 +22,10 @@ export const withStateValue = (WrappedComponent: FC) => { } }; + useEffect(() => { + setComponentValue(value); + }, [value]); + return ; }; diff --git a/packages/components/src/partials/BaseChoiceInput/BaseChoiceInput.tsx b/packages/components/src/partials/BaseChoiceInput/BaseChoiceInput.tsx index 3d9c5fd7..717587cc 100644 --- a/packages/components/src/partials/BaseChoiceInput/BaseChoiceInput.tsx +++ b/packages/components/src/partials/BaseChoiceInput/BaseChoiceInput.tsx @@ -20,7 +20,6 @@ export const BaseChoiceInput = ({ id = undefined, inputClassName = '', ref, - required = false, title = '', value = '', }: BaseChoiceInputProps) => { @@ -58,7 +57,6 @@ export const BaseChoiceInput = ({ id={id} name={name} ref={ref} - required={required} title={title} type={type} value={value} diff --git a/packages/components/src/partials/BaseChoiceInput/BaseChoiceInput.types.ts b/packages/components/src/partials/BaseChoiceInput/BaseChoiceInput.types.ts index db406117..6ac3b1f7 100644 --- a/packages/components/src/partials/BaseChoiceInput/BaseChoiceInput.types.ts +++ b/packages/components/src/partials/BaseChoiceInput/BaseChoiceInput.types.ts @@ -20,6 +20,5 @@ export interface BaseChoiceInputProps extends BaseComponentAriaAttributes { id?: string; inputClassName?: string; ref?: Ref; - required?: boolean; value?: string; } diff --git a/packages/components/src/partials/BaseChoiceInputField/BaseChoiceInputField.tsx b/packages/components/src/partials/BaseChoiceInputField/BaseChoiceInputField.tsx index a0836a6c..a69cf4b9 100644 --- a/packages/components/src/partials/BaseChoiceInputField/BaseChoiceInputField.tsx +++ b/packages/components/src/partials/BaseChoiceInputField/BaseChoiceInputField.tsx @@ -8,6 +8,8 @@ import { BaseChoiceInputFieldProps } from './BaseChoiceInputField.types'; export const BaseChoiceInputField = ({ children, className = '', + disabled = false, + error = false, id, inputWrapperClassName = '', labelClassName = '', @@ -15,6 +17,8 @@ export const BaseChoiceInputField = ({ }: BaseChoiceInputFieldProps) => { const componentClassName = createCssClassNames({ 'ids-choice-input-field': true, + 'ids-choice-input-field--disabled': disabled, + 'ids-choice-input-field--error': error, [className]: true, }); const componentInputWrapperClassName = createCssClassNames({ diff --git a/packages/components/src/partials/BaseChoiceInputField/BaseChoiceInputField.types.ts b/packages/components/src/partials/BaseChoiceInputField/BaseChoiceInputField.types.ts index 9e5d6cc7..0d8877fd 100644 --- a/packages/components/src/partials/BaseChoiceInputField/BaseChoiceInputField.types.ts +++ b/packages/components/src/partials/BaseChoiceInputField/BaseChoiceInputField.types.ts @@ -2,6 +2,8 @@ import { BaseComponentAriaAttributes } from '@ids-types/general'; export interface BaseChoiceInputFieldProps extends BaseComponentAriaAttributes { children: React.ReactNode; + disabled?: boolean; + error?: boolean; id: string; inputWrapperClassName?: string; labelClassName?: string; diff --git a/packages/components/src/partials/BaseInput/BaseInput.types.ts b/packages/components/src/partials/BaseInput/BaseInput.types.ts index 5b20f0c1..f706d9a1 100644 --- a/packages/components/src/partials/BaseInput/BaseInput.types.ts +++ b/packages/components/src/partials/BaseInput/BaseInput.types.ts @@ -28,7 +28,7 @@ interface BaseInputPropsProps extends BaseComponentAttributes { } interface BaseInputVisibleProps extends BaseInputPropsProps { - required: boolean; + required?: boolean; type?: Exclude; extraInputAttrs?: Omit, keyof BaseInputVisibleProps>; }