@tedi-design-system/react 19.2.0-rc.7 → 19.2.0-rc.8
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/bundle-stats.html +1 -1
- package/component.manifest.json +8 -8
- package/index.css +1 -1
- package/package.json +1 -1
- package/src/community/components/map-components/map-layer/map-layer.cjs.js +1 -1
- package/src/community/components/map-components/map-layer/map-layer.es.js +1 -1
- package/src/tedi/components/form/checkbox/checkbox-group/checkbox-group-context.cjs.js +1 -0
- package/src/tedi/components/form/checkbox/checkbox-group/checkbox-group-context.d.ts +20 -0
- package/src/tedi/components/form/checkbox/checkbox-group/checkbox-group-context.es.js +5 -0
- package/src/tedi/components/form/checkbox/checkbox-group/checkbox-group.cjs.js +1 -0
- package/src/tedi/components/form/checkbox/checkbox-group/checkbox-group.d.ts +72 -0
- package/src/tedi/components/form/checkbox/checkbox-group/checkbox-group.es.js +124 -0
- package/src/tedi/components/form/checkbox/checkbox-group/checkbox-group.module.scss.cjs.js +1 -0
- package/src/tedi/components/form/checkbox/checkbox-group/checkbox-group.module.scss.es.js +13 -0
- package/src/tedi/components/form/checkbox/checkbox.cjs.js +1 -1
- package/src/tedi/components/form/checkbox/checkbox.d.ts +8 -2
- package/src/tedi/components/form/checkbox/checkbox.es.js +146 -110
- package/src/tedi/components/form/checkbox/checkbox.module.scss.cjs.js +1 -1
- package/src/tedi/components/form/checkbox/checkbox.module.scss.es.js +11 -3
- package/src/tedi/components/form/checkbox/index.cjs.js +1 -0
- package/src/tedi/components/form/checkbox/index.d.ts +11 -0
- package/src/tedi/components/form/checkbox/index.es.js +7 -0
- package/src/tedi/components/form/choice-group/choice-group.d.ts +11 -0
- package/src/tedi/components/form/choice-group/components/choice-group-item/choice-group-item.cjs.js +1 -1
- package/src/tedi/components/form/choice-group/components/choice-group-item/choice-group-item.es.js +15 -15
- package/src/tedi/components/form/choice-input.types.d.ts +41 -10
- package/src/tedi/components/form/radio/index.cjs.js +1 -0
- package/src/tedi/components/form/radio/index.d.ts +11 -0
- package/src/tedi/components/form/radio/index.es.js +7 -0
- package/src/tedi/components/form/radio/radio-group/radio-group-context.cjs.js +1 -0
- package/src/tedi/components/form/radio/radio-group/radio-group-context.d.ts +21 -0
- package/src/tedi/components/form/radio/radio-group/radio-group-context.es.js +5 -0
- package/src/tedi/components/form/radio/radio-group/radio-group.cjs.js +1 -0
- package/src/tedi/components/form/radio/radio-group/radio-group.d.ts +56 -0
- package/src/tedi/components/form/radio/radio-group/radio-group.es.js +78 -0
- package/src/tedi/components/form/radio/radio-group/radio-group.module.scss.cjs.js +1 -0
- package/src/tedi/components/form/radio/radio-group/radio-group.module.scss.es.js +13 -0
- package/src/tedi/components/form/radio/radio.cjs.js +1 -1
- package/src/tedi/components/form/radio/radio.d.ts +7 -2
- package/src/tedi/components/form/radio/radio.es.js +116 -78
- package/src/tedi/components/form/radio/radio.module.scss.cjs.js +1 -1
- package/src/tedi/components/form/radio/radio.module.scss.es.js +11 -3
- package/src/tedi/components/navigation/table-of-contents/components/table-of-contents-row/table-of-contents-row.cjs.js +1 -1
- package/src/tedi/components/navigation/table-of-contents/components/table-of-contents-row/table-of-contents-row.d.ts +12 -0
- package/src/tedi/components/navigation/table-of-contents/components/table-of-contents-row/table-of-contents-row.es.js +57 -27
- package/src/tedi/components/navigation/table-of-contents/table-of-contents.cjs.js +1 -1
- package/src/tedi/components/navigation/table-of-contents/table-of-contents.d.ts +17 -0
- package/src/tedi/components/navigation/table-of-contents/table-of-contents.es.js +65 -51
- package/src/tedi/index.d.ts +2 -2
- package/src/tedi/providers/label-provider/labels-map.cjs.js +1 -1
- package/src/tedi/providers/label-provider/labels-map.d.ts +14 -0
- package/src/tedi/providers/label-provider/labels-map.es.js +25 -11
- package/tedi.cjs.js +1 -1
- package/tedi.es.js +298 -294
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const
|
|
1
|
+
const c = {
|
|
2
2
|
"tedi-checkbox": "tedi-checkbox-0294a114",
|
|
3
3
|
"tedi-checkbox--disabled": "tedi-checkbox--disabled-e22bbaf4",
|
|
4
4
|
"tedi-checkbox__input": "tedi-checkbox__input-2ecab369",
|
|
@@ -12,9 +12,17 @@ const e = {
|
|
|
12
12
|
"tedi-checkbox__tooltip-icon": "tedi-checkbox__tooltip-icon-46223bb7",
|
|
13
13
|
"tedi-checkbox__indicator--size-default": "tedi-checkbox__indicator--size-default-00511279",
|
|
14
14
|
"tedi-checkbox__indicator--size-large": "tedi-checkbox__indicator--size-large-b64ce54c",
|
|
15
|
+
"tedi-checkbox__indicator--invalid": "tedi-checkbox__indicator--invalid-019a355d",
|
|
15
16
|
"tedi-checkbox__indicator--hover": "tedi-checkbox__indicator--hover-436b8cb1",
|
|
16
|
-
"tedi-
|
|
17
|
+
"tedi-checkbox--card": "tedi-checkbox--card-d1faeb0e",
|
|
18
|
+
"tedi-checkbox__card-control": "tedi-checkbox__card-control-ea88c4f4",
|
|
19
|
+
"tedi-checkbox__card-label": "tedi-checkbox__card-label-4c136337",
|
|
20
|
+
"tedi-checkbox__card-icon": "tedi-checkbox__card-icon-a4d72e5a",
|
|
21
|
+
"tedi-checkbox__card-description": "tedi-checkbox__card-description-fa672631",
|
|
22
|
+
"tedi-checkbox--card-with-icon": "tedi-checkbox--card-with-icon-2636b953",
|
|
23
|
+
"tedi-checkbox--card-primary": "tedi-checkbox--card-primary-b7da557f",
|
|
24
|
+
"tedi-checkbox--card-secondary": "tedi-checkbox--card-secondary-179169ca"
|
|
17
25
|
};
|
|
18
26
|
export {
|
|
19
|
-
|
|
27
|
+
c as default
|
|
20
28
|
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("./checkbox.cjs.js"),e=require("./checkbox-group/checkbox-group.cjs.js"),c=Object.assign(o.Checkbox,{Group:e.CheckboxGroup});exports.CheckboxGroup=e.CheckboxGroup;exports.Checkbox=c;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { CheckboxProps } from './checkbox';
|
|
2
|
+
import { default as CheckboxGroup } from './checkbox-group/checkbox-group';
|
|
3
|
+
declare const Checkbox: {
|
|
4
|
+
(props: CheckboxProps): JSX.Element;
|
|
5
|
+
displayName?: string;
|
|
6
|
+
Group: typeof CheckboxGroup;
|
|
7
|
+
};
|
|
8
|
+
export { Checkbox, CheckboxGroup };
|
|
9
|
+
export type { CheckboxBaseProps, CheckboxProps } from './checkbox';
|
|
10
|
+
export type { CheckboxGroupProps } from './checkbox-group/checkbox-group';
|
|
11
|
+
export default Checkbox;
|
|
@@ -28,8 +28,19 @@ interface ChoiceGroupAllProps extends Omit<FormLabelProps, 'id' | 'label'> {
|
|
|
28
28
|
indented?: boolean;
|
|
29
29
|
} & Partial<Omit<CheckboxProps, 'indeterminate' | 'checked' | 'onChange' | 'defaultChecked' | 'label'>>;
|
|
30
30
|
}
|
|
31
|
+
/**
|
|
32
|
+
* @deprecated Use the compound `Radio.Group` / `Checkbox.Group` (with composable
|
|
33
|
+
* `Radio` / `Checkbox` children, including `variant="card"`) instead. `ChoiceGroup`
|
|
34
|
+
* remains for backwards compatibility and will be removed in a future major version.
|
|
35
|
+
*/
|
|
31
36
|
export interface ChoiceGroupProps extends BreakpointSupport<ChoiceGroupAllProps> {
|
|
32
37
|
}
|
|
38
|
+
/**
|
|
39
|
+
* @deprecated Use the compound `Radio.Group` / `Checkbox.Group` instead — e.g.
|
|
40
|
+
* `<Radio.Group label="…"><Radio value="a" label="A" /></Radio.Group>`, with
|
|
41
|
+
* `variant="card"` for the card layout. `ChoiceGroup` stays for backwards
|
|
42
|
+
* compatibility and will be removed in a future major version.
|
|
43
|
+
*/
|
|
33
44
|
export declare const ChoiceGroup: {
|
|
34
45
|
(props: ChoiceGroupProps): React.ReactElement;
|
|
35
46
|
Item: (props: ExtendedChoiceGroupItemProps) => React.ReactElement;
|
package/src/tedi/components/form/choice-group/components/choice-group-item/choice-group-item.cjs.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const t=require("react/jsx-runtime"),n=require("../../../../../../../external/classnames/index.cjs.js"),R=require("react"),S=require("../../../checkbox/checkbox.cjs.js"),A=require("../../../feedback-text/feedback-text.cjs.js"),H=require("../../../radio/radio.cjs.js"),L=require("../../choice-group-context.cjs.js"),e=require("./choice-group-item.module.scss.cjs.js"),O=require("../../../../../helpers/hooks/use-breakpoint-props.cjs.js"),V=require("../../../../layout/grid/col.cjs.js"),v=u=>{const{getCurrentBreakpointProps:_}=O.useBreakpointProps(u.defaultServerBreakpoint),{id:
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const t=require("react/jsx-runtime"),n=require("../../../../../../../external/classnames/index.cjs.js"),R=require("react"),S=require("../../../checkbox/checkbox.cjs.js"),A=require("../../../feedback-text/feedback-text.cjs.js"),H=require("../../../radio/radio.cjs.js"),L=require("../../choice-group-context.cjs.js"),e=require("./choice-group-item.module.scss.cjs.js"),O=require("../../../../../helpers/hooks/use-breakpoint-props.cjs.js"),V=require("../../../../layout/grid/col.cjs.js"),v=u=>{const{getCurrentBreakpointProps:_}=O.useBreakpointProps(u.defaultServerBreakpoint),{id:i,label:C,value:a,className:q,direction:h,disabled:d,colProps:N=h==="column"?{width:12}:{width:"auto"},onChange:m,hideLabel:$,helper:o,tooltip:B,type:p="radio",variant:l="default",color:G="primary",layout:I,showIndicator:k,justifyContent:x="start"}=_(u),{currentValue:r,name:b,onChange:f,inputType:P}=R.useContext(L.ChoiceGroupContext),s=Array.isArray(r)?r.includes(a):a===r,M=r===void 0?u.defaultChecked:s,y=(c,g)=>{f==null||f(c,g),m==null||m(c,g)},T=n.default(e.default[`tedi-choice-group-item--${I==="separated"?"separated":"segmented"}`],h&&e.default[`tedi-choice-group-item--${h}`]),w=n.default(e.default["tedi-choice-group-item"],e.default[`tedi-choice-group-item--${l}`],e.default[`tedi-choice-group-item--${l}-${G}`],k&&e.default["tedi-choice-group-item--indicator"],p&&e.default[`tedi-choice-group-item--${p}`],{[e.default["tedi-choice-group-item--disabled"]]:d},{[e.default["tedi-choice-group-item--checked"]]:s},{[`justify-content-${x}`]:x}),E=p==="radio"?H.Radio:S.Checkbox,F=c=>{var j;d||l!=="card"||c.target.closest("input, label")||i&&((j=document.getElementById(i))==null||j.click())};return t.jsx(V.Col,{...N,className:T,children:t.jsx("div",{className:w,onClick:F,"aria-disabled":d||void 0,children:l==="default"||k?t.jsx(E,{id:i,label:C,value:a,name:b,className:n.default(e.default["tedi-choice-group-item__indicator"],q),disabled:d,checked:s,defaultChecked:M,onChange:y,hideLabel:$,helper:o?{...o,className:n.default(e.default["tedi-choice-group-item__feedback-text"],o.className)}:void 0,tooltip:B,"data-testid":"choice-group-item-indicator"}):t.jsxs(t.Fragment,{children:[t.jsx("input",{id:i,value:a,name:b,type:P,disabled:d,checked:s,defaultChecked:r===void 0?u.defaultChecked:void 0,onChange:c=>{y(a,c.target.checked)},className:"visually-hidden"}),t.jsxs("label",{htmlFor:i,className:e.default["tedi-choice-group-item__label"],children:[C,o&&t.jsx(A.FeedbackText,{...o,id:o.id??`${i}-helper`,className:e.default["tedi-choice-group-item__feedback-text"]})]})]})})})};exports.ChoiceGroupItem=v;exports.default=v;
|
package/src/tedi/components/form/choice-group/components/choice-group-item/choice-group-item.es.js
CHANGED
|
@@ -10,7 +10,7 @@ import { useBreakpointProps as V } from "../../../../../helpers/hooks/use-breakp
|
|
|
10
10
|
import { Col as q } from "../../../../layout/grid/col.es.js";
|
|
11
11
|
const te = (n) => {
|
|
12
12
|
const { getCurrentBreakpointProps: x } = V(n.defaultServerBreakpoint), {
|
|
13
|
-
id:
|
|
13
|
+
id: t,
|
|
14
14
|
label: C,
|
|
15
15
|
value: c,
|
|
16
16
|
className: $,
|
|
@@ -19,7 +19,7 @@ const te = (n) => {
|
|
|
19
19
|
colProps: B = u === "column" ? { width: 12 } : { width: "auto" },
|
|
20
20
|
onChange: p,
|
|
21
21
|
hideLabel: I,
|
|
22
|
-
helper:
|
|
22
|
+
helper: i,
|
|
23
23
|
tooltip: j,
|
|
24
24
|
type: h = "radio",
|
|
25
25
|
variant: l = "default",
|
|
@@ -27,8 +27,8 @@ const te = (n) => {
|
|
|
27
27
|
layout: E,
|
|
28
28
|
showIndicator: k,
|
|
29
29
|
justifyContent: b = "start"
|
|
30
|
-
} = x(n), { currentValue: a, name: y, onChange: f, inputType: F } = R.useContext(S), s = Array.isArray(a) ? a.includes(c) : c === a, G = a === void 0 ? n.defaultChecked : s, N = (
|
|
31
|
-
f == null || f(
|
|
30
|
+
} = x(n), { currentValue: a, name: y, onChange: f, inputType: F } = R.useContext(S), s = Array.isArray(a) ? a.includes(c) : c === a, G = a === void 0 ? n.defaultChecked : s, N = (o, g) => {
|
|
31
|
+
f == null || f(o, g), p == null || p(o, g);
|
|
32
32
|
}, P = m(
|
|
33
33
|
e[`tedi-choice-group-item--${E === "separated" ? "separated" : "segmented"}`],
|
|
34
34
|
u && e[`tedi-choice-group-item--${u}`]
|
|
@@ -42,13 +42,13 @@ const te = (n) => {
|
|
|
42
42
|
{ [e["tedi-choice-group-item--checked"]]: s },
|
|
43
43
|
{ [`justify-content-${b}`]: b }
|
|
44
44
|
);
|
|
45
|
-
return /* @__PURE__ */ d(q, { ...B, className: P, children: /* @__PURE__ */ d("div", { className: A, onClick: (
|
|
45
|
+
return /* @__PURE__ */ d(q, { ...B, className: P, children: /* @__PURE__ */ d("div", { className: A, onClick: (o) => {
|
|
46
46
|
var _;
|
|
47
|
-
r || l !== "card" ||
|
|
47
|
+
r || l !== "card" || o.target.closest("input, label") || t && ((_ = document.getElementById(t)) == null || _.click());
|
|
48
48
|
}, "aria-disabled": r || void 0, children: l === "default" || k ? /* @__PURE__ */ d(
|
|
49
49
|
h === "radio" ? L : T,
|
|
50
50
|
{
|
|
51
|
-
id:
|
|
51
|
+
id: t,
|
|
52
52
|
label: C,
|
|
53
53
|
value: c,
|
|
54
54
|
name: y,
|
|
@@ -58,7 +58,7 @@ const te = (n) => {
|
|
|
58
58
|
defaultChecked: G,
|
|
59
59
|
onChange: N,
|
|
60
60
|
hideLabel: I,
|
|
61
|
-
helper:
|
|
61
|
+
helper: i ? { ...i, className: m(e["tedi-choice-group-item__feedback-text"], i.className) } : void 0,
|
|
62
62
|
tooltip: j,
|
|
63
63
|
"data-testid": "choice-group-item-indicator"
|
|
64
64
|
}
|
|
@@ -66,26 +66,26 @@ const te = (n) => {
|
|
|
66
66
|
/* @__PURE__ */ d(
|
|
67
67
|
"input",
|
|
68
68
|
{
|
|
69
|
-
id:
|
|
69
|
+
id: t,
|
|
70
70
|
value: c,
|
|
71
71
|
name: y,
|
|
72
72
|
type: F,
|
|
73
73
|
disabled: r,
|
|
74
74
|
checked: s,
|
|
75
75
|
defaultChecked: a === void 0 ? n.defaultChecked : void 0,
|
|
76
|
-
onChange: (
|
|
77
|
-
N(c,
|
|
76
|
+
onChange: (o) => {
|
|
77
|
+
N(c, o.target.checked);
|
|
78
78
|
},
|
|
79
79
|
className: "visually-hidden"
|
|
80
80
|
}
|
|
81
81
|
),
|
|
82
|
-
/* @__PURE__ */ v("label", { htmlFor:
|
|
82
|
+
/* @__PURE__ */ v("label", { htmlFor: t, className: e["tedi-choice-group-item__label"], children: [
|
|
83
83
|
C,
|
|
84
|
-
|
|
84
|
+
i && /* @__PURE__ */ d(
|
|
85
85
|
H,
|
|
86
86
|
{
|
|
87
|
-
...
|
|
88
|
-
id:
|
|
87
|
+
...i,
|
|
88
|
+
id: i.id ?? `${t}-helper`,
|
|
89
89
|
className: e["tedi-choice-group-item__feedback-text"]
|
|
90
90
|
}
|
|
91
91
|
)
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import { FeedbackTextProps } from './feedback-text/feedback-text';
|
|
2
2
|
import { FormLabelProps } from './form-label/form-label';
|
|
3
|
-
export
|
|
3
|
+
export type ChoiceInputVariant = 'default' | 'card';
|
|
4
|
+
export type ChoiceInputCardVariant = 'primary' | 'secondary';
|
|
5
|
+
interface ChoiceInputBaseProps {
|
|
4
6
|
/**
|
|
5
|
-
* ID property
|
|
7
|
+
* ID property. When omitted a stable id is generated (useful inside `Radio.Group` / `Checkbox.Group`).
|
|
6
8
|
*/
|
|
7
|
-
id
|
|
9
|
+
id?: string;
|
|
8
10
|
/**
|
|
9
11
|
* Label text
|
|
10
12
|
*/
|
|
@@ -18,9 +20,22 @@ export interface ChoiceInputProps {
|
|
|
18
20
|
*/
|
|
19
21
|
value: string;
|
|
20
22
|
/**
|
|
21
|
-
* name of the input
|
|
23
|
+
* name of the input. Provided automatically when rendered inside `Radio.Group` / `Checkbox.Group`.
|
|
22
24
|
*/
|
|
23
|
-
name
|
|
25
|
+
name?: string;
|
|
26
|
+
/**
|
|
27
|
+
* Card colour variant. Only applies when `variant="card"`.
|
|
28
|
+
* @default primary
|
|
29
|
+
*/
|
|
30
|
+
cardVariant?: ChoiceInputCardVariant;
|
|
31
|
+
/**
|
|
32
|
+
* Secondary description text shown under the label. Primarily used with `variant="card"`.
|
|
33
|
+
*/
|
|
34
|
+
description?: React.ReactNode;
|
|
35
|
+
/**
|
|
36
|
+
* Leading icon (Material icon name) shown before the label. Primarily used with `variant="card"`.
|
|
37
|
+
*/
|
|
38
|
+
icon?: string;
|
|
24
39
|
/**
|
|
25
40
|
* is the label hidden
|
|
26
41
|
*/
|
|
@@ -49,11 +64,6 @@ export interface ChoiceInputProps {
|
|
|
49
64
|
* If the item should be in hover state
|
|
50
65
|
*/
|
|
51
66
|
hover?: boolean;
|
|
52
|
-
/**
|
|
53
|
-
* Provide content for tooltip. Accepts rich content (e.g. bold text, links),
|
|
54
|
-
* not just a plain string.
|
|
55
|
-
*/
|
|
56
|
-
tooltip?: React.ReactNode;
|
|
57
67
|
/**
|
|
58
68
|
* Additional props forwarded to the underlying `Label` component.
|
|
59
69
|
* Use `modifiers` to control how the label text wraps or breaks
|
|
@@ -73,3 +83,24 @@ export interface ChoiceInputProps {
|
|
|
73
83
|
*/
|
|
74
84
|
required?: boolean;
|
|
75
85
|
}
|
|
86
|
+
export interface ChoiceInputProps extends ChoiceInputBaseProps {
|
|
87
|
+
/**
|
|
88
|
+
* Visual variant.
|
|
89
|
+
* - `default` — standard indicator + label.
|
|
90
|
+
* - `card` — the whole control renders as a selectable card (indicator, label, optional icon/description).
|
|
91
|
+
* @default default
|
|
92
|
+
*/
|
|
93
|
+
variant?: ChoiceInputVariant;
|
|
94
|
+
/**
|
|
95
|
+
* Provide content for tooltip. Accepts rich content (e.g. bold text, links),
|
|
96
|
+
* not just a plain string.
|
|
97
|
+
*
|
|
98
|
+
* Mutually exclusive with `variant="card"` — the card carries supplementary
|
|
99
|
+
* content through its `description` slot instead. Passing both logs a dev-time
|
|
100
|
+
* warning and the tooltip is ignored. (This is enforced at runtime rather than
|
|
101
|
+
* in the types: a discriminated union would reject the dynamic prop-spreading
|
|
102
|
+
* that `Checkbox.Group` / `Radio.Group` / `Table` rely on.)
|
|
103
|
+
*/
|
|
104
|
+
tooltip?: React.ReactNode;
|
|
105
|
+
}
|
|
106
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("./radio.cjs.js"),o=require("./radio-group/radio-group.cjs.js"),i=Object.assign(r.Radio,{Group:o.RadioGroup});exports.RadioGroup=o.RadioGroup;exports.Radio=i;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { RadioProps } from './radio';
|
|
2
|
+
import { default as RadioGroup } from './radio-group/radio-group';
|
|
3
|
+
declare const Radio: {
|
|
4
|
+
(props: RadioProps): JSX.Element;
|
|
5
|
+
displayName?: string;
|
|
6
|
+
Group: typeof RadioGroup;
|
|
7
|
+
};
|
|
8
|
+
export { Radio, RadioGroup };
|
|
9
|
+
export type { RadioProps } from './radio';
|
|
10
|
+
export type { RadioGroupProps } from './radio-group/radio-group';
|
|
11
|
+
export default Radio;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("react"),e=t.createContext(null);exports.RadioGroupContext=e;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { default as React } from 'react';
|
|
2
|
+
import { ChoiceInputCardVariant, ChoiceInputVariant } from '../../choice-input.types';
|
|
3
|
+
export interface RadioGroupContextValue {
|
|
4
|
+
/** Shared `name` for all radios in the group. */
|
|
5
|
+
name: string;
|
|
6
|
+
/** Currently selected value (`null` when nothing is selected). */
|
|
7
|
+
value: string | null;
|
|
8
|
+
/** Called by a `Radio` when it is selected. */
|
|
9
|
+
onValueChange: (value: string) => void;
|
|
10
|
+
disabled?: boolean;
|
|
11
|
+
invalid?: boolean;
|
|
12
|
+
required?: boolean;
|
|
13
|
+
size?: 'default' | 'large';
|
|
14
|
+
variant?: ChoiceInputVariant;
|
|
15
|
+
cardVariant?: ChoiceInputCardVariant;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Provided by `Radio.Group`. When present, a `Radio` reads its selection,
|
|
19
|
+
* `name`, and shared visual props from here instead of managing its own state.
|
|
20
|
+
*/
|
|
21
|
+
export declare const RadioGroupContext: React.Context<RadioGroupContextValue | null>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const a=require("react/jsx-runtime"),V=require("../../../../../../external/classnames/index.cjs.js"),r=require("react"),z=require("../../feedback-text/feedback-text.cjs.js"),e=require("./radio-group.module.scss.cjs.js"),F=require("./radio-group-context.cjs.js"),L=require("../../../../helpers/hooks/use-breakpoint-props.cjs.js"),c=p=>{const{getCurrentBreakpointProps:k}=L.useBreakpointProps(p.defaultServerBreakpoint),{id:I,name:C,label:l,hideLabel:G=!1,helper:d,className:R,value:g,defaultValue:P=null,onChange:t,disabled:u,invalid:s,required:i,size:m,variant:o="default",cardVariant:f="primary",direction:v=o==="card"?"row":"column",layout:b="separated",children:B}=k(p),S=r.useId(),h=I??S,M=r.useId(),x=C??M,n=g!==void 0,[T,$]=r.useState(P),q=n?g??null:T,_=d?d.id??`${h}-helper`:void 0,j=`${h}-legend`,y=r.useCallback(N=>{n||$(N),t==null||t(N)},[n,t]),w=r.useMemo(()=>({name:x,value:q,onValueChange:y,disabled:u,invalid:s,required:i,size:m,variant:o,cardVariant:f}),[x,q,y,u,s,i,m,o,f]);return a.jsxs("fieldset",{className:V.default(e.default["tedi-radio-group"],e.default[`tedi-radio-group--${v}`],{[e.default["tedi-radio-group--card"]]:o==="card"},{[e.default["tedi-radio-group--segmented"]]:b==="segmented"},R),role:"radiogroup","aria-labelledby":l?j:void 0,disabled:u,"aria-invalid":s||void 0,"aria-required":i||void 0,"aria-describedby":_,children:[l&&a.jsxs("legend",{id:j,className:V.default(e.default["tedi-radio-group__legend"],{"sr-only":G}),children:[l,i&&a.jsx("span",{"aria-hidden":"true",className:e.default["tedi-radio-group__required"],children:"*"})]}),a.jsx(F.RadioGroupContext.Provider,{value:w,children:a.jsx("div",{className:e.default["tedi-radio-group__items"],"data-layout":b,"data-direction":v,children:B})}),d&&a.jsx(z.FeedbackText,{id:_,...d})]})};c.displayName="Radio.Group";exports.RadioGroup=c;exports.default=c;
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { default as React } from 'react';
|
|
2
|
+
import { BreakpointSupport } from '../../../../helpers';
|
|
3
|
+
import { ChoiceInputCardVariant, ChoiceInputVariant } from '../../choice-input.types';
|
|
4
|
+
import { FeedbackTextProps } from '../../feedback-text/feedback-text';
|
|
5
|
+
interface RadioGroupBreakpointProps {
|
|
6
|
+
/** Group id. When omitted a stable id is generated. */
|
|
7
|
+
id?: string;
|
|
8
|
+
/**
|
|
9
|
+
* Shared `name` for the radios. When omitted a stable name is generated so the
|
|
10
|
+
* group still behaves as a single native radio group.
|
|
11
|
+
*/
|
|
12
|
+
name?: string;
|
|
13
|
+
/** Group label, rendered as the fieldset legend. */
|
|
14
|
+
label: React.ReactNode;
|
|
15
|
+
/** Visually hide the legend while keeping it available to screen readers. */
|
|
16
|
+
hideLabel?: boolean;
|
|
17
|
+
/** Helper / feedback text rendered below the group. */
|
|
18
|
+
helper?: FeedbackTextProps;
|
|
19
|
+
/** Additional class name(s) applied to the fieldset. */
|
|
20
|
+
className?: string;
|
|
21
|
+
/** Controlled selected value. Pair with `onChange`. */
|
|
22
|
+
value?: string | null;
|
|
23
|
+
/** Uncontrolled initial selected value. */
|
|
24
|
+
defaultValue?: string | null;
|
|
25
|
+
/** Fires with the newly selected value. */
|
|
26
|
+
onChange?: (value: string) => void;
|
|
27
|
+
/** Disables the whole group and every radio within it. */
|
|
28
|
+
disabled?: boolean;
|
|
29
|
+
/** Marks the group as invalid, forwarding the error state to each radio. */
|
|
30
|
+
invalid?: boolean;
|
|
31
|
+
/** Marks the group as required, adding a required indicator to the legend. */
|
|
32
|
+
required?: boolean;
|
|
33
|
+
/** Size forwarded to every radio. @default 'default' */
|
|
34
|
+
size?: 'default' | 'large';
|
|
35
|
+
/** Visual variant forwarded to every radio. @default 'default' */
|
|
36
|
+
variant?: ChoiceInputVariant;
|
|
37
|
+
/** Card colour variant forwarded to every radio (only applies to `variant="card"`). @default 'primary' */
|
|
38
|
+
cardVariant?: ChoiceInputCardVariant;
|
|
39
|
+
/** Layout direction of the radios. Defaults to `row` for cards, `column` otherwise. */
|
|
40
|
+
direction?: 'row' | 'column';
|
|
41
|
+
/**
|
|
42
|
+
* Card layout. `separated` = individual cards with a gap; `segmented` = joined
|
|
43
|
+
* cards with shared borders and only the group's outer corners rounded (a
|
|
44
|
+
* button-group style). Only applies to `variant="card"`.
|
|
45
|
+
* @default separated
|
|
46
|
+
*/
|
|
47
|
+
layout?: 'separated' | 'segmented';
|
|
48
|
+
/** The `Radio` items that make up the group. */
|
|
49
|
+
children: React.ReactNode;
|
|
50
|
+
}
|
|
51
|
+
export type RadioGroupProps = BreakpointSupport<RadioGroupBreakpointProps>;
|
|
52
|
+
export declare const RadioGroup: {
|
|
53
|
+
(props: RadioGroupProps): JSX.Element;
|
|
54
|
+
displayName: string;
|
|
55
|
+
};
|
|
56
|
+
export default RadioGroup;
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { jsxs as k, jsx as t } from "react/jsx-runtime";
|
|
2
|
+
import x from "../../../../../../external/classnames/index.es.js";
|
|
3
|
+
import a from "react";
|
|
4
|
+
import { FeedbackText as L } from "../../feedback-text/feedback-text.es.js";
|
|
5
|
+
import e from "./radio-group.module.scss.es.js";
|
|
6
|
+
import { RadioGroupContext as M } from "./radio-group-context.es.js";
|
|
7
|
+
import { useBreakpointProps as T } from "../../../../helpers/hooks/use-breakpoint-props.es.js";
|
|
8
|
+
const A = (c) => {
|
|
9
|
+
const { getCurrentBreakpointProps: C } = T(c.defaultServerBreakpoint), {
|
|
10
|
+
id: R,
|
|
11
|
+
name: q,
|
|
12
|
+
label: l,
|
|
13
|
+
hideLabel: B = !1,
|
|
14
|
+
helper: r,
|
|
15
|
+
className: G,
|
|
16
|
+
value: m,
|
|
17
|
+
defaultValue: P = null,
|
|
18
|
+
onChange: d,
|
|
19
|
+
disabled: s,
|
|
20
|
+
invalid: n,
|
|
21
|
+
required: o,
|
|
22
|
+
size: p,
|
|
23
|
+
variant: i = "default",
|
|
24
|
+
cardVariant: g = "primary",
|
|
25
|
+
direction: v = i === "card" ? "row" : "column",
|
|
26
|
+
layout: f = "separated",
|
|
27
|
+
children: $
|
|
28
|
+
} = C(c), j = a.useId(), h = R ?? j, S = a.useId(), b = q ?? S, u = m !== void 0, [w, z] = a.useState(P), N = u ? m ?? null : w, y = r ? r.id ?? `${h}-helper` : void 0, V = `${h}-legend`, _ = a.useCallback(
|
|
29
|
+
(I) => {
|
|
30
|
+
u || z(I), d == null || d(I);
|
|
31
|
+
},
|
|
32
|
+
[u, d]
|
|
33
|
+
), F = a.useMemo(
|
|
34
|
+
() => ({
|
|
35
|
+
name: b,
|
|
36
|
+
value: N,
|
|
37
|
+
onValueChange: _,
|
|
38
|
+
disabled: s,
|
|
39
|
+
invalid: n,
|
|
40
|
+
required: o,
|
|
41
|
+
size: p,
|
|
42
|
+
variant: i,
|
|
43
|
+
cardVariant: g
|
|
44
|
+
}),
|
|
45
|
+
[b, N, _, s, n, o, p, i, g]
|
|
46
|
+
);
|
|
47
|
+
return /* @__PURE__ */ k(
|
|
48
|
+
"fieldset",
|
|
49
|
+
{
|
|
50
|
+
className: x(
|
|
51
|
+
e["tedi-radio-group"],
|
|
52
|
+
e[`tedi-radio-group--${v}`],
|
|
53
|
+
{ [e["tedi-radio-group--card"]]: i === "card" },
|
|
54
|
+
{ [e["tedi-radio-group--segmented"]]: f === "segmented" },
|
|
55
|
+
G
|
|
56
|
+
),
|
|
57
|
+
role: "radiogroup",
|
|
58
|
+
"aria-labelledby": l ? V : void 0,
|
|
59
|
+
disabled: s,
|
|
60
|
+
"aria-invalid": n || void 0,
|
|
61
|
+
"aria-required": o || void 0,
|
|
62
|
+
"aria-describedby": y,
|
|
63
|
+
children: [
|
|
64
|
+
l && /* @__PURE__ */ k("legend", { id: V, className: x(e["tedi-radio-group__legend"], { "sr-only": B }), children: [
|
|
65
|
+
l,
|
|
66
|
+
o && /* @__PURE__ */ t("span", { "aria-hidden": "true", className: e["tedi-radio-group__required"], children: "*" })
|
|
67
|
+
] }),
|
|
68
|
+
/* @__PURE__ */ t(M.Provider, { value: F, children: /* @__PURE__ */ t("div", { className: e["tedi-radio-group__items"], "data-layout": f, "data-direction": v, children: $ }) }),
|
|
69
|
+
r && /* @__PURE__ */ t(L, { id: y, ...r })
|
|
70
|
+
]
|
|
71
|
+
}
|
|
72
|
+
);
|
|
73
|
+
};
|
|
74
|
+
A.displayName = "Radio.Group";
|
|
75
|
+
export {
|
|
76
|
+
A as RadioGroup,
|
|
77
|
+
A as default
|
|
78
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const d={"tedi-radio-group":"tedi-radio-group-9afc9d2d","tedi-radio-group__legend":"tedi-radio-group__legend-b05d4880","tedi-radio-group__required":"tedi-radio-group__required-d42646cf","tedi-radio-group__items":"tedi-radio-group__items-aa5bd239","tedi-radio-group--column":"tedi-radio-group--column-45aad530","tedi-radio-group--row":"tedi-radio-group--row-c3eb1dfe","tedi-radio-group--card":"tedi-radio-group--card-5828dd1c","tedi-radio-group--segmented":"tedi-radio-group--segmented-2b67e0c6"};exports.default=d;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
const d = {
|
|
2
|
+
"tedi-radio-group": "tedi-radio-group-9afc9d2d",
|
|
3
|
+
"tedi-radio-group__legend": "tedi-radio-group__legend-b05d4880",
|
|
4
|
+
"tedi-radio-group__required": "tedi-radio-group__required-d42646cf",
|
|
5
|
+
"tedi-radio-group__items": "tedi-radio-group__items-aa5bd239",
|
|
6
|
+
"tedi-radio-group--column": "tedi-radio-group--column-45aad530",
|
|
7
|
+
"tedi-radio-group--row": "tedi-radio-group--row-c3eb1dfe",
|
|
8
|
+
"tedi-radio-group--card": "tedi-radio-group--card-5828dd1c",
|
|
9
|
+
"tedi-radio-group--segmented": "tedi-radio-group--segmented-2b67e0c6"
|
|
10
|
+
};
|
|
11
|
+
export {
|
|
12
|
+
d as default
|
|
13
|
+
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const d=require("react/jsx-runtime"),r=require("../../../../../external/classnames/index.cjs.js"),s=require("react"),ee=require("../../base/icon/icon.cjs.js"),R=require("../feedback-text/feedback-text.cjs.js"),ae=require("../form-label/form-label.cjs.js"),a=require("./radio.module.scss.cjs.js"),de=require("./radio-group/radio-group-context.cjs.js"),ie=require("../../../helpers/hooks/use-breakpoint-props.cjs.js"),te=require("../../layout/grid/row.cjs.js"),z=require("../../layout/grid/col.cjs.js"),N=j=>{const e=s.useContext(de.RadioGroupContext),{getCurrentBreakpointProps:$}=ie.useBreakpointProps(j.defaultServerBreakpoint),{id:L,label:c,value:o,className:q,onChange:l,hideLabel:v,helper:t,checked:u,defaultChecked:V,hover:M,name:S,tooltip:k,description:b,icon:h,labelProps:T,size:E,variant:F,cardVariant:G,disabled:D,invalid:H,required:y,...C}=$(j),p=E??(e==null?void 0:e.size)??"default",P=F??(e==null?void 0:e.variant)??"default",O=G??(e==null?void 0:e.cardVariant)??"primary",f=D??(e==null?void 0:e.disabled)??!1,U=H??(e==null?void 0:e.invalid),A=y??(e==null?void 0:e.required);P==="card"&&k&&console.warn('Radio: `tooltip` is not supported with `variant="card"` and will be ignored. Use `description`.');const J=s.useId(),n=L??J,K=S??(e==null?void 0:e.name),[w,Q]=s.useState(V||!1),_=e!==null,W=s.useMemo(()=>_?(e==null?void 0:e.value)===o:l&&typeof u<"u"?u:w,[_,e,o,l,u,w]),X=i=>{_?e==null||e.onValueChange(o):typeof u>"u"&&Q(i==null?void 0:i.target.checked),l==null||l(o,i==null?void 0:i.target.checked)},m=t?t.id??`${n}-helper`:void 0,Y=m,B=d.jsx("input",{id:n,value:o,name:K,type:"radio",disabled:f,checked:W,required:A,onChange:X,className:a.default["tedi-radio__input"],"aria-describedby":Y}),x=d.jsx("span",{"aria-hidden":"true",className:r.default(a.default["tedi-radio__indicator"],{[a.default["tedi-radio__indicator--hover"]]:M},{[a.default[`tedi-radio__indicator--size-${p}`]]:p},{[a.default["tedi-radio__indicator--invalid"]]:U}),"data-testid":"radio-indicator"});if(P==="card"){const i=`${n}-label`,I=b?`${n}-description`:void 0,g=[I,m].filter(Boolean).join(" ")||void 0;return d.jsxs("label",{"data-name":"radio",className:r.default(a.default["tedi-radio"],a.default["tedi-radio--card"],a.default[`tedi-radio--card-${O}`],{[a.default["tedi-radio--card-with-icon"]]:!!h},{[a.default["tedi-radio--disabled"]]:f},q),...C,children:[d.jsxs("span",{className:a.default["tedi-radio__card-control"],children:[s.cloneElement(B,{"aria-labelledby":c?i:void 0,"aria-describedby":g}),x,h&&d.jsx(ee.Icon,{name:h,size:p==="default"?18:24,className:a.default["tedi-radio__card-icon"]}),d.jsx("span",{id:i,className:r.default(a.default["tedi-radio__card-label"],{"sr-only":v}),children:c})]}),b&&d.jsx("span",{id:I,className:a.default["tedi-radio__card-description"],children:b}),t&&d.jsx(R.FeedbackText,{id:m,...t,className:r.default(a.default["tedi-radio__helper"],t.className)})]})}const Z=r.default(a.default["tedi-radio__label"],{[a.default["tedi-radio--disabled"]]:f});return d.jsxs("div",{className:r.default(a.default["tedi-radio"],{[a.default["tedi-radio--disabled"]]:f}),"data-name":"radio",...C,children:[d.jsxs(te.Row,{gutter:0,children:[d.jsx(z.Col,{width:"auto",children:d.jsxs("div",{className:a.default["tedi-radio__outer-indicator-wrapper"],children:[B,s.cloneElement(x,{className:r.default(x.props.className,q)})]})}),c&&d.jsx(z.Col,{children:d.jsx(ae.FormLabel,{className:Z,id:n,"data-testid":"radio-label",hideLabel:v,label:c,tooltip:k,required:y,labelProps:T})})]}),t&&d.jsx(R.FeedbackText,{id:m,...t,className:r.default(a.default["tedi-radio__helper"],t.className)})]})};N.displayName="Radio";exports.Radio=N;exports.default=N;
|
|
@@ -1,4 +1,9 @@
|
|
|
1
|
+
import { BreakpointSupport } from '../../../helpers';
|
|
1
2
|
import { ChoiceInputProps } from '../choice-input.types';
|
|
2
|
-
export type RadioProps = ChoiceInputProps
|
|
3
|
-
|
|
3
|
+
export type RadioProps = BreakpointSupport<ChoiceInputProps>;
|
|
4
|
+
interface RadioComponent {
|
|
5
|
+
(props: RadioProps): JSX.Element;
|
|
6
|
+
displayName?: string;
|
|
7
|
+
}
|
|
8
|
+
export declare const Radio: RadioComponent;
|
|
4
9
|
export default Radio;
|