@navikt/ds-react 4.4.2 → 4.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/_docs.json +325 -0
- package/cjs/alert/Alert.js +9 -3
- package/cjs/date/DateInput.js +9 -4
- package/cjs/date/hooks/useDatepicker.js +3 -0
- package/cjs/date/hooks/useMonthPicker.js +3 -0
- package/cjs/date/hooks/useRangeDatepicker.js +3 -0
- package/cjs/form/Fieldset/Fieldset.js +11 -4
- package/cjs/form/ReadOnlyIcon.js +15 -0
- package/cjs/form/Select.js +23 -3
- package/cjs/form/Switch.js +21 -8
- package/cjs/form/TextField.js +7 -3
- package/cjs/form/Textarea.js +7 -3
- package/cjs/form/checkbox/Checkbox.js +7 -2
- package/cjs/form/checkbox/CheckboxGroup.js +1 -1
- package/cjs/form/checkbox/useCheckbox.js +12 -2
- package/cjs/form/radio/Radio.js +3 -2
- package/cjs/form/radio/RadioGroup.js +2 -2
- package/cjs/form/radio/useRadio.js +12 -2
- package/cjs/form/search/Search.js +1 -1
- package/cjs/form/useFormField.js +11 -9
- package/esm/alert/Alert.d.ts +11 -0
- package/esm/alert/Alert.js +10 -4
- package/esm/alert/Alert.js.map +1 -1
- package/esm/date/DateInput.js +9 -4
- package/esm/date/DateInput.js.map +1 -1
- package/esm/date/hooks/useDatepicker.js +3 -0
- package/esm/date/hooks/useDatepicker.js.map +1 -1
- package/esm/date/hooks/useMonthPicker.js +3 -0
- package/esm/date/hooks/useMonthPicker.js.map +1 -1
- package/esm/date/hooks/useRangeDatepicker.js +3 -0
- package/esm/date/hooks/useRangeDatepicker.js.map +1 -1
- package/esm/form/ConfirmationPanel.d.ts +1 -1
- package/esm/form/Fieldset/Fieldset.d.ts +5 -0
- package/esm/form/Fieldset/Fieldset.js +11 -4
- package/esm/form/Fieldset/Fieldset.js.map +1 -1
- package/esm/form/Fieldset/useFieldset.d.ts +2 -1
- package/esm/form/ReadOnlyIcon.d.ts +5 -0
- package/esm/form/ReadOnlyIcon.js +9 -0
- package/esm/form/ReadOnlyIcon.js.map +1 -0
- package/esm/form/Select.js +23 -3
- package/esm/form/Select.js.map +1 -1
- package/esm/form/Switch.d.ts +1 -1
- package/esm/form/Switch.js +21 -8
- package/esm/form/Switch.js.map +1 -1
- package/esm/form/TextField.js +7 -3
- package/esm/form/TextField.js.map +1 -1
- package/esm/form/Textarea.js +7 -3
- package/esm/form/Textarea.js.map +1 -1
- package/esm/form/checkbox/Checkbox.js +7 -2
- package/esm/form/checkbox/Checkbox.js.map +1 -1
- package/esm/form/checkbox/CheckboxGroup.js +1 -1
- package/esm/form/checkbox/CheckboxGroup.js.map +1 -1
- package/esm/form/checkbox/useCheckbox.d.ts +5 -2
- package/esm/form/checkbox/useCheckbox.js +12 -2
- package/esm/form/checkbox/useCheckbox.js.map +1 -1
- package/esm/form/radio/Radio.d.ts +1 -1
- package/esm/form/radio/Radio.js +3 -2
- package/esm/form/radio/Radio.js.map +1 -1
- package/esm/form/radio/RadioGroup.js +2 -2
- package/esm/form/radio/RadioGroup.js.map +1 -1
- package/esm/form/radio/useRadio.d.ts +4 -2
- package/esm/form/radio/useRadio.js +12 -2
- package/esm/form/radio/useRadio.js.map +1 -1
- package/esm/form/search/Search.d.ts +1 -1
- package/esm/form/search/Search.js +1 -1
- package/esm/form/search/Search.js.map +1 -1
- package/esm/form/useFormField.d.ts +7 -2
- package/esm/form/useFormField.js +11 -9
- package/esm/form/useFormField.js.map +1 -1
- package/package.json +2 -2
- package/src/alert/Alert.tsx +49 -18
- package/src/alert/alert.stories.tsx +75 -22
- package/src/date/DateInput.tsx +8 -2
- package/src/date/datepicker/datepicker.stories.tsx +22 -0
- package/src/date/hooks/useDatepicker.tsx +3 -0
- package/src/date/hooks/useMonthPicker.tsx +3 -0
- package/src/date/hooks/useRangeDatepicker.tsx +3 -0
- package/src/form/ConfirmationPanel.tsx +1 -1
- package/src/form/Fieldset/Fieldset.tsx +15 -2
- package/src/form/ReadOnlyIcon.tsx +20 -0
- package/src/form/Select.tsx +28 -2
- package/src/form/Switch.tsx +20 -9
- package/src/form/TextField.tsx +5 -0
- package/src/form/Textarea.tsx +5 -0
- package/src/form/checkbox/Checkbox.tsx +7 -1
- package/src/form/checkbox/CheckboxGroup.tsx +1 -0
- package/src/form/checkbox/checkbox.stories.tsx +35 -1
- package/src/form/checkbox/useCheckbox.ts +13 -1
- package/src/form/radio/Radio.tsx +4 -3
- package/src/form/radio/RadioGroup.tsx +3 -0
- package/src/form/radio/radio.stories.tsx +27 -0
- package/src/form/radio/useRadio.ts +12 -1
- package/src/form/search/Search.tsx +2 -2
- package/src/form/stories/select.stories.tsx +17 -0
- package/src/form/stories/switch.stories.tsx +14 -0
- package/src/form/stories/text-field.stories.tsx +14 -0
- package/src/form/stories/textarea.stories.tsx +19 -0
- package/src/form/useFormField.ts +25 -3
package/src/form/useFormField.ts
CHANGED
|
@@ -29,6 +29,10 @@ export interface FormFieldProps {
|
|
|
29
29
|
* Override internal id
|
|
30
30
|
*/
|
|
31
31
|
id?: string;
|
|
32
|
+
/**
|
|
33
|
+
* Read only-state
|
|
34
|
+
*/
|
|
35
|
+
readOnly?: boolean;
|
|
32
36
|
}
|
|
33
37
|
|
|
34
38
|
/**
|
|
@@ -46,8 +50,24 @@ export const useFormField = (props: FormFieldProps, prefix: string) => {
|
|
|
46
50
|
const inputDescriptionId = `${prefix}-description-${genId}`;
|
|
47
51
|
|
|
48
52
|
const disabled = fieldset?.disabled || props.disabled;
|
|
49
|
-
const
|
|
50
|
-
|
|
53
|
+
const readOnly =
|
|
54
|
+
((fieldset?.readOnly || props.readOnly) && !disabled) || undefined;
|
|
55
|
+
|
|
56
|
+
const hasError: boolean =
|
|
57
|
+
!disabled && !readOnly && !!(error || fieldset?.error);
|
|
58
|
+
const showErrorMsg =
|
|
59
|
+
!disabled && !readOnly && !!error && typeof error !== "boolean";
|
|
60
|
+
|
|
61
|
+
const ariaInvalid = { ...(hasError ? { "aria-invalid": true } : {}) };
|
|
62
|
+
|
|
63
|
+
if ((props as any)?.required && process.env.NODE_ENV !== "production") {
|
|
64
|
+
console.warn(
|
|
65
|
+
"Aksel: Use of 'required' in form-elements is heavily discuouraged. Docs about why here:"
|
|
66
|
+
);
|
|
67
|
+
console.warn(
|
|
68
|
+
"https://aksel.nav.no/god-praksis/artikler/obligatoriske-og-valgfrie-skjemafelter#h3bfe00453471"
|
|
69
|
+
);
|
|
70
|
+
}
|
|
51
71
|
|
|
52
72
|
return {
|
|
53
73
|
showErrorMsg,
|
|
@@ -55,9 +75,10 @@ export const useFormField = (props: FormFieldProps, prefix: string) => {
|
|
|
55
75
|
errorId,
|
|
56
76
|
inputDescriptionId,
|
|
57
77
|
size: size ?? fieldset?.size ?? "medium",
|
|
78
|
+
readOnly,
|
|
58
79
|
inputProps: {
|
|
59
80
|
id,
|
|
60
|
-
|
|
81
|
+
...ariaInvalid,
|
|
61
82
|
"aria-describedby":
|
|
62
83
|
cl(props["aria-describedby"], {
|
|
63
84
|
[inputDescriptionId]:
|
|
@@ -65,6 +86,7 @@ export const useFormField = (props: FormFieldProps, prefix: string) => {
|
|
|
65
86
|
[errorId]: showErrorMsg,
|
|
66
87
|
[fieldset?.errorId ?? ""]: hasError && !!fieldset?.error,
|
|
67
88
|
}) || undefined,
|
|
89
|
+
|
|
68
90
|
disabled,
|
|
69
91
|
},
|
|
70
92
|
};
|