@tedi-design-system/react 19.1.2-rc.3 → 19.2.0-rc.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.
- package/bundle-stats.html +1 -1
- package/index.css +1 -1
- package/package.json +1 -1
- package/src/tedi/components/form/multi-value-field/multi-value-field.cjs.js +1 -1
- package/src/tedi/components/form/multi-value-field/multi-value-field.d.ts +6 -0
- package/src/tedi/components/form/multi-value-field/multi-value-field.es.js +126 -117
- package/src/tedi/components/form/multi-value-field/multi-value-field.module.scss.cjs.js +1 -1
- package/src/tedi/components/form/multi-value-field/multi-value-field.module.scss.es.js +2 -0
- package/src/tedi/components/form/select/components/select-clear-indicator.cjs.js +1 -1
- package/src/tedi/components/form/select/components/select-clear-indicator.es.js +21 -10
- package/src/tedi/components/form/select/select.cjs.js +1 -1
- package/src/tedi/components/form/select/select.d.ts +6 -0
- package/src/tedi/components/form/select/select.es.js +173 -171
- package/src/tedi/components/form/select/select.module.scss.cjs.js +1 -1
- package/src/tedi/components/form/select/select.module.scss.es.js +2 -1
- package/src/tedi/components/form/textarea/textarea.d.ts +1 -1
- package/src/tedi/components/form/textfield/textfield.cjs.js +1 -1
- package/src/tedi/components/form/textfield/textfield.d.ts +6 -0
- package/src/tedi/components/form/textfield/textfield.es.js +86 -84
- package/src/tedi/components/form/textfield/textfield.module.scss.cjs.js +1 -1
- package/src/tedi/components/form/textfield/textfield.module.scss.es.js +2 -0
- package/src/tedi/components/navigation/breadcrumbs/breadcrumbs.cjs.js +1 -1
- package/src/tedi/components/navigation/breadcrumbs/breadcrumbs.es.js +19 -10
- package/src/tedi/components/navigation/breadcrumbs/breadcrumbs.module.scss.cjs.js +1 -1
- package/src/tedi/components/navigation/breadcrumbs/breadcrumbs.module.scss.es.js +2 -1
- package/src/tedi/components/overlays/dropdown/dropdown-context.d.ts +8 -0
- package/src/tedi/components/overlays/dropdown/dropdown-item/dropdown-item.cjs.js +1 -1
- package/src/tedi/components/overlays/dropdown/dropdown-item/dropdown-item.es.js +46 -46
- package/src/tedi/components/overlays/dropdown/dropdown-trigger/dropdown-trigger.cjs.js +1 -1
- package/src/tedi/components/overlays/dropdown/dropdown-trigger/dropdown-trigger.es.js +7 -6
- package/src/tedi/components/overlays/dropdown/dropdown.cjs.js +1 -1
- package/src/tedi/components/overlays/dropdown/dropdown.d.ts +8 -0
- package/src/tedi/components/overlays/dropdown/dropdown.es.js +95 -87
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tedi-design-system/react",
|
|
3
|
-
"version": "19.
|
|
3
|
+
"version": "19.2.0-rc.1",
|
|
4
4
|
"description": "TEDI Design System React component library — accessible, reusable UI components. Docs & live examples: https://storybook.tedi.ee/react/rc/",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"sideEffects": false,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const l=require("react/jsx-runtime"),
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const l=require("react/jsx-runtime"),_=require("../../../../../external/classnames/index.cjs.js"),i=require("react"),O=require("../../base/icon/icon.cjs.js"),ee=require("../../buttons/closing-button/closing-button.cjs.js"),te=require("../../misc/separator/separator.cjs.js"),T=require("../../tags/tag/tag.cjs.js"),le=require("../form-label/form-label.cjs.js"),s=require("./multi-value-field.module.scss.cjs.js"),ie=require("../../../providers/label-provider/use-labels.cjs.js"),j=4,ne=44,N=i.forwardRef((z,F)=>{const{id:A,label:w,name:C,values:q,onChange:b,tagColor:y="primary",tagsDirection:P="stack",className:$,icon:o,onIconClick:V,iconButtonProps:m,isClearable:G=!0,showClearOnInteraction:X,required:S,disabled:p}=z,{getLabel:M}=ie.useLabels(),[B,D]=i.useState(q??[]),E=i.useRef(null),I=i.useRef(null);i.useImperativeHandle(F,()=>({input:I.current,wrapper:E.current}),[]);const a=q??B,r=P==="row",[f,H]=i.useState(null),J=i.useCallback(e=>H(e),[]),x=i.useRef(0),[d,g]=i.useState(null);i.useEffect(()=>{r&&g(null)},[a.length,r]),i.useEffect(()=>{if(!r||!f||typeof ResizeObserver>"u")return;const e=new ResizeObserver(t=>{var c;const n=((c=t[0])==null?void 0:c.contentRect.width)??0;n>0&&n!==x.current&&g(null)});return e.observe(f),()=>e.disconnect()},[r,f]),i.useLayoutEffect(()=>{if(!r||d!==null)return;const e=f;if(!e)return;const t=e.clientWidth;if(t===0)return;const n=e.querySelectorAll("[data-tedi-tag-index]");if(n.length===0)return;let c=0;for(let u=0;u<n.length;u++)c+=n[u].offsetWidth+(u>0?j:0);if(c<=t){x.current=t,g(n.length);return}let k=0,h=0;for(let u=0;u<n.length;u++){const Y=n[u].offsetWidth,Z=u<n.length-1?ne+j:0,L=k+Y+(h>0?j:0);if(L+Z<=t)k=L,h++;else break}h===0&&(h=1),x.current=t,g(h)},[r,d,a,f]);const W=e=>{D(e),b==null||b(e)},U=e=>{const t=a.filter((n,c)=>c!==e);W(t)},v=!p&&G&&a.length>0,K=()=>{W([])},R=r&&d!==null?Math.max(0,a.length-d):0,Q=()=>{if(!o)return null;const e=typeof o=="string"?{name:o}:o;return V?l.jsx("button",{...m,className:_.default(s.default["tedi-multi-value-field__icon-wrapper"],m==null?void 0:m.className),onClick:V,type:"button",children:l.jsx(O.Icon,{...e,size:18})}):l.jsx("div",{className:s.default["tedi-multi-value-field__icon-wrapper"],children:l.jsx(O.Icon,{...e,size:18})})};return l.jsxs("div",{className:_.default(s.default["tedi-multi-value-field"],$,{[s.default["tedi-multi-value-field--clear-on-interaction"]]:v&&X}),children:[w&&l.jsx(le.FormLabel,{id:A,label:w,required:S}),l.jsxs("div",{ref:E,className:_.default(s.default["tedi-multi-value-field__inner"],{[s.default["tedi-multi-value-field__inner--row"]]:r}),children:[a.length>0&&l.jsxs("div",{ref:J,className:_.default(s.default["tedi-multi-value-field__tags"],{[s.default["tedi-multi-value-field__tags--row"]]:r}),children:[a.map((e,t)=>r&&d!==null&&t>=d?null:l.jsx(T.Tag,{color:y,"data-tedi-tag-index":t,onClose:p?void 0:()=>U(t),children:e},`${e}-${t}`)),R>0&&l.jsxs(T.Tag,{color:y,className:s.default["tedi-multi-value-field__overflow-tag"],"aria-label":M("multi-value-field.hidden-count",R),children:["+",R]})]}),(v||o)&&l.jsxs("div",{className:s.default["tedi-multi-value-field__right-area"],children:[v&&l.jsx(ee.ClosingButton,{onClick:K,title:M("clear"),className:s.default["tedi-multi-value-field__clear-button"],iconSize:18}),v&&o&&l.jsx(te.Separator,{color:"primary",axis:"vertical",height:1.5,spacing:.25}),o&&Q()]})]}),C&&l.jsx("input",{ref:I,type:"hidden",name:C,value:a.length?JSON.stringify(a):"",required:S,disabled:p})]})});N.displayName="MultiValueField";exports.MultiValueField=N;exports.default=N;
|
|
@@ -63,6 +63,12 @@ export interface MultiValueFieldProps {
|
|
|
63
63
|
* @default true
|
|
64
64
|
*/
|
|
65
65
|
isClearable?: boolean;
|
|
66
|
+
/**
|
|
67
|
+
* Show the clear (×) button only while the field is hovered or focused, instead of whenever values
|
|
68
|
+
* exist. Requires `isClearable`.
|
|
69
|
+
* @default false
|
|
70
|
+
*/
|
|
71
|
+
showClearOnInteraction?: boolean;
|
|
66
72
|
/**
|
|
67
73
|
* Marks the field as required.
|
|
68
74
|
* Adds required indicator to label and applies native required validation to the hidden input.
|
|
@@ -1,162 +1,171 @@
|
|
|
1
1
|
import { jsxs as m, jsx as a } from "react/jsx-runtime";
|
|
2
|
-
import
|
|
3
|
-
import { forwardRef as
|
|
2
|
+
import g from "../../../../../external/classnames/index.es.js";
|
|
3
|
+
import { forwardRef as le, useState as C, useRef as R, useImperativeHandle as ie, useCallback as re, useEffect as T, useLayoutEffect as ne } from "react";
|
|
4
4
|
import { Icon as F } from "../../base/icon/icon.es.js";
|
|
5
|
-
import { ClosingButton as
|
|
6
|
-
import { Separator as
|
|
5
|
+
import { ClosingButton as se } from "../../buttons/closing-button/closing-button.es.js";
|
|
6
|
+
import { Separator as ae } from "../../misc/separator/separator.es.js";
|
|
7
7
|
import { Tag as P } from "../../tags/tag/tag.es.js";
|
|
8
|
-
import { FormLabel as
|
|
9
|
-
import
|
|
10
|
-
import { useLabels as
|
|
11
|
-
const y = 4, ue = 44,
|
|
8
|
+
import { FormLabel as oe } from "../form-label/form-label.es.js";
|
|
9
|
+
import i from "./multi-value-field.module.scss.es.js";
|
|
10
|
+
import { useLabels as ce } from "../../../providers/label-provider/use-labels.es.js";
|
|
11
|
+
const y = 4, ue = 44, de = le((j, q) => {
|
|
12
12
|
const {
|
|
13
13
|
id: G,
|
|
14
14
|
label: V,
|
|
15
15
|
name: W,
|
|
16
16
|
values: E,
|
|
17
|
-
onChange:
|
|
18
|
-
tagColor:
|
|
17
|
+
onChange: _,
|
|
18
|
+
tagColor: I = "primary",
|
|
19
19
|
tagsDirection: X = "stack",
|
|
20
20
|
className: $,
|
|
21
21
|
icon: o,
|
|
22
|
-
onIconClick:
|
|
22
|
+
onIconClick: k,
|
|
23
23
|
iconButtonProps: h,
|
|
24
24
|
isClearable: D = !0,
|
|
25
|
+
showClearOnInteraction: H,
|
|
25
26
|
required: M,
|
|
26
|
-
disabled:
|
|
27
|
-
} = j, { getLabel: S } =
|
|
28
|
-
|
|
29
|
-
const n = E ??
|
|
27
|
+
disabled: b
|
|
28
|
+
} = j, { getLabel: S } = ce(), [J, U] = C(E ?? []), x = R(null), z = R(null);
|
|
29
|
+
ie(q, () => ({ input: z.current, wrapper: x.current }), []);
|
|
30
|
+
const n = E ?? J, r = X === "row", [d, B] = C(null), K = re((e) => B(e), []), N = R(0), [u, p] = C(null);
|
|
30
31
|
T(() => {
|
|
31
|
-
|
|
32
|
-
}, [n.length,
|
|
33
|
-
if (!
|
|
32
|
+
r && p(null);
|
|
33
|
+
}, [n.length, r]), T(() => {
|
|
34
|
+
if (!r || !d || typeof ResizeObserver > "u") return;
|
|
34
35
|
const e = new ResizeObserver((t) => {
|
|
35
|
-
var
|
|
36
|
-
const l = ((
|
|
37
|
-
l > 0 && l !==
|
|
36
|
+
var c;
|
|
37
|
+
const l = ((c = t[0]) == null ? void 0 : c.contentRect.width) ?? 0;
|
|
38
|
+
l > 0 && l !== N.current && p(null);
|
|
38
39
|
});
|
|
39
40
|
return e.observe(d), () => e.disconnect();
|
|
40
|
-
}, [
|
|
41
|
-
if (!
|
|
41
|
+
}, [r, d]), ne(() => {
|
|
42
|
+
if (!r || u !== null) return;
|
|
42
43
|
const e = d;
|
|
43
44
|
if (!e) return;
|
|
44
45
|
const t = e.clientWidth;
|
|
45
46
|
if (t === 0) return;
|
|
46
47
|
const l = e.querySelectorAll("[data-tedi-tag-index]");
|
|
47
48
|
if (l.length === 0) return;
|
|
48
|
-
let
|
|
49
|
+
let c = 0;
|
|
49
50
|
for (let s = 0; s < l.length; s++)
|
|
50
|
-
|
|
51
|
-
if (
|
|
52
|
-
|
|
51
|
+
c += l[s].offsetWidth + (s > 0 ? y : 0);
|
|
52
|
+
if (c <= t) {
|
|
53
|
+
N.current = t, p(l.length);
|
|
53
54
|
return;
|
|
54
55
|
}
|
|
55
|
-
let
|
|
56
|
+
let A = 0, f = 0;
|
|
56
57
|
for (let s = 0; s < l.length; s++) {
|
|
57
|
-
const
|
|
58
|
-
if (
|
|
59
|
-
|
|
58
|
+
const ee = l[s].offsetWidth, te = s < l.length - 1 ? ue + y : 0, L = A + ee + (f > 0 ? y : 0);
|
|
59
|
+
if (L + te <= t)
|
|
60
|
+
A = L, f++;
|
|
60
61
|
else
|
|
61
62
|
break;
|
|
62
63
|
}
|
|
63
|
-
f === 0 && (f = 1),
|
|
64
|
-
}, [
|
|
65
|
-
const
|
|
66
|
-
|
|
67
|
-
},
|
|
68
|
-
const t = n.filter((l,
|
|
69
|
-
|
|
70
|
-
},
|
|
71
|
-
|
|
72
|
-
}, w =
|
|
64
|
+
f === 0 && (f = 1), N.current = t, p(f);
|
|
65
|
+
}, [r, u, n, d]);
|
|
66
|
+
const O = (e) => {
|
|
67
|
+
U(e), _ == null || _(e);
|
|
68
|
+
}, Q = (e) => {
|
|
69
|
+
const t = n.filter((l, c) => c !== e);
|
|
70
|
+
O(t);
|
|
71
|
+
}, v = !b && D && n.length > 0, Y = () => {
|
|
72
|
+
O([]);
|
|
73
|
+
}, w = r && u !== null ? Math.max(0, n.length - u) : 0, Z = () => {
|
|
73
74
|
if (!o) return null;
|
|
74
75
|
const e = typeof o == "string" ? { name: o } : o;
|
|
75
|
-
return
|
|
76
|
+
return k ? /* @__PURE__ */ a(
|
|
76
77
|
"button",
|
|
77
78
|
{
|
|
78
79
|
...h,
|
|
79
|
-
className:
|
|
80
|
-
onClick:
|
|
80
|
+
className: g(i["tedi-multi-value-field__icon-wrapper"], h == null ? void 0 : h.className),
|
|
81
|
+
onClick: k,
|
|
81
82
|
type: "button",
|
|
82
83
|
children: /* @__PURE__ */ a(F, { ...e, size: 18 })
|
|
83
84
|
}
|
|
84
|
-
) : /* @__PURE__ */ a("div", { className:
|
|
85
|
+
) : /* @__PURE__ */ a("div", { className: i["tedi-multi-value-field__icon-wrapper"], children: /* @__PURE__ */ a(F, { ...e, size: 18 }) });
|
|
85
86
|
};
|
|
86
|
-
return /* @__PURE__ */ m(
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
"
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
{
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
{
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
87
|
+
return /* @__PURE__ */ m(
|
|
88
|
+
"div",
|
|
89
|
+
{
|
|
90
|
+
className: g(i["tedi-multi-value-field"], $, {
|
|
91
|
+
[i["tedi-multi-value-field--clear-on-interaction"]]: v && H
|
|
92
|
+
}),
|
|
93
|
+
children: [
|
|
94
|
+
V && /* @__PURE__ */ a(oe, { id: G, label: V, required: M }),
|
|
95
|
+
/* @__PURE__ */ m(
|
|
96
|
+
"div",
|
|
97
|
+
{
|
|
98
|
+
ref: x,
|
|
99
|
+
className: g(i["tedi-multi-value-field__inner"], {
|
|
100
|
+
[i["tedi-multi-value-field__inner--row"]]: r
|
|
101
|
+
}),
|
|
102
|
+
children: [
|
|
103
|
+
n.length > 0 && /* @__PURE__ */ m(
|
|
104
|
+
"div",
|
|
105
|
+
{
|
|
106
|
+
ref: K,
|
|
107
|
+
className: g(i["tedi-multi-value-field__tags"], {
|
|
108
|
+
[i["tedi-multi-value-field__tags--row"]]: r
|
|
109
|
+
}),
|
|
110
|
+
children: [
|
|
111
|
+
n.map((e, t) => r && u !== null && t >= u ? null : /* @__PURE__ */ a(
|
|
112
|
+
P,
|
|
113
|
+
{
|
|
114
|
+
color: I,
|
|
115
|
+
"data-tedi-tag-index": t,
|
|
116
|
+
onClose: b ? void 0 : () => Q(t),
|
|
117
|
+
children: e
|
|
118
|
+
},
|
|
119
|
+
`${e}-${t}`
|
|
120
|
+
)),
|
|
121
|
+
w > 0 && /* @__PURE__ */ m(
|
|
122
|
+
P,
|
|
123
|
+
{
|
|
124
|
+
color: I,
|
|
125
|
+
className: i["tedi-multi-value-field__overflow-tag"],
|
|
126
|
+
"aria-label": S("multi-value-field.hidden-count", w),
|
|
127
|
+
children: [
|
|
128
|
+
"+",
|
|
129
|
+
w
|
|
130
|
+
]
|
|
131
|
+
}
|
|
132
|
+
)
|
|
133
|
+
]
|
|
134
|
+
}
|
|
135
|
+
),
|
|
136
|
+
(v || o) && /* @__PURE__ */ m("div", { className: i["tedi-multi-value-field__right-area"], children: [
|
|
137
|
+
v && /* @__PURE__ */ a(
|
|
138
|
+
se,
|
|
116
139
|
{
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
"+",
|
|
122
|
-
w
|
|
123
|
-
]
|
|
140
|
+
onClick: Y,
|
|
141
|
+
title: S("clear"),
|
|
142
|
+
className: i["tedi-multi-value-field__clear-button"],
|
|
143
|
+
iconSize: 18
|
|
124
144
|
}
|
|
125
|
-
)
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
),
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
"input",
|
|
147
|
-
{
|
|
148
|
-
ref: z,
|
|
149
|
-
type: "hidden",
|
|
150
|
-
name: W,
|
|
151
|
-
value: n.length ? JSON.stringify(n) : "",
|
|
152
|
-
required: M,
|
|
153
|
-
disabled: _
|
|
154
|
-
}
|
|
155
|
-
)
|
|
156
|
-
] });
|
|
145
|
+
),
|
|
146
|
+
v && o && /* @__PURE__ */ a(ae, { color: "primary", axis: "vertical", height: 1.5, spacing: 0.25 }),
|
|
147
|
+
o && Z()
|
|
148
|
+
] })
|
|
149
|
+
]
|
|
150
|
+
}
|
|
151
|
+
),
|
|
152
|
+
W && /* @__PURE__ */ a(
|
|
153
|
+
"input",
|
|
154
|
+
{
|
|
155
|
+
ref: z,
|
|
156
|
+
type: "hidden",
|
|
157
|
+
name: W,
|
|
158
|
+
value: n.length ? JSON.stringify(n) : "",
|
|
159
|
+
required: M,
|
|
160
|
+
disabled: b
|
|
161
|
+
}
|
|
162
|
+
)
|
|
163
|
+
]
|
|
164
|
+
}
|
|
165
|
+
);
|
|
157
166
|
});
|
|
158
|
-
|
|
167
|
+
de.displayName = "MultiValueField";
|
|
159
168
|
export {
|
|
160
|
-
|
|
161
|
-
|
|
169
|
+
de as MultiValueField,
|
|
170
|
+
de as default
|
|
162
171
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e={"tedi-multi-value-field__inner":"tedi-multi-value-field__inner-d00be7fe","tedi-multi-value-field__inner--row":"tedi-multi-value-field__inner--row-50af96e5","tedi-multi-value-field__tags":"tedi-multi-value-field__tags-4f52450e","tedi-multi-value-field__tags--row":"tedi-multi-value-field__tags--row-fa16b6db","tedi-multi-value-field__overflow-tag":"tedi-multi-value-field__overflow-tag-e6aa972a","tedi-multi-value-field__right-area":"tedi-multi-value-field__right-area-2d533551","tedi-multi-value-field__icon-wrapper":"tedi-multi-value-field__icon-wrapper-d73d0e44"};exports.default=e;
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e={"tedi-multi-value-field__inner":"tedi-multi-value-field__inner-d00be7fe","tedi-multi-value-field--clear-on-interaction":"tedi-multi-value-field--clear-on-interaction-6c3d0181","tedi-multi-value-field__clear-button":"tedi-multi-value-field__clear-button-1a689cce","tedi-multi-value-field__inner--row":"tedi-multi-value-field__inner--row-50af96e5","tedi-multi-value-field__tags":"tedi-multi-value-field__tags-4f52450e","tedi-multi-value-field__tags--row":"tedi-multi-value-field__tags--row-fa16b6db","tedi-multi-value-field__overflow-tag":"tedi-multi-value-field__overflow-tag-e6aa972a","tedi-multi-value-field__right-area":"tedi-multi-value-field__right-area-2d533551","tedi-multi-value-field__icon-wrapper":"tedi-multi-value-field__icon-wrapper-d73d0e44"};exports.default=e;
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
const e = {
|
|
2
2
|
"tedi-multi-value-field__inner": "tedi-multi-value-field__inner-d00be7fe",
|
|
3
|
+
"tedi-multi-value-field--clear-on-interaction": "tedi-multi-value-field--clear-on-interaction-6c3d0181",
|
|
4
|
+
"tedi-multi-value-field__clear-button": "tedi-multi-value-field__clear-button-1a689cce",
|
|
3
5
|
"tedi-multi-value-field__inner--row": "tedi-multi-value-field__inner--row-50af96e5",
|
|
4
6
|
"tedi-multi-value-field__tags": "tedi-multi-value-field__tags-4f52450e",
|
|
5
7
|
"tedi-multi-value-field__tags--row": "tedi-multi-value-field__tags--row-fa16b6db",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),c=require("../../../../../../external/classnames/index.cjs.js"),i=require("../../../buttons/closing-button/closing-button.cjs.js"),n=require("../../../misc/separator/separator.cjs.js"),r=require("../select.module.scss.cjs.js"),o=require("../../../../providers/label-provider/use-labels.cjs.js"),u=({isClearIndicatorVisible:a,innerProps:{ref:s,...t}})=>{const{getLabel:l}=o.useLabels();return a?e.jsxs(e.Fragment,{children:[e.jsx(i.ClosingButton,{tabIndex:0,ref:s,iconSize:18,...t,className:c.default(r.default["tedi-select__clear-indicator"],t.className),children:l("clear")}),e.jsx(n.Separator,{color:"primary",axis:"vertical",className:r.default["tedi-select__separator"]})]}):null};exports.SelectClearIndicator=u;
|
|
@@ -1,16 +1,27 @@
|
|
|
1
|
-
import { jsxs as i, Fragment as
|
|
2
|
-
import
|
|
1
|
+
import { jsxs as i, Fragment as l, jsx as e } from "react/jsx-runtime";
|
|
2
|
+
import c from "../../../../../../external/classnames/index.es.js";
|
|
3
|
+
import { ClosingButton as m } from "../../../buttons/closing-button/closing-button.es.js";
|
|
3
4
|
import { Separator as n } from "../../../misc/separator/separator.es.js";
|
|
4
|
-
import
|
|
5
|
-
import { useLabels as
|
|
5
|
+
import t from "../select.module.scss.es.js";
|
|
6
|
+
import { useLabels as p } from "../../../../providers/label-provider/use-labels.es.js";
|
|
6
7
|
const b = ({
|
|
7
|
-
isClearIndicatorVisible:
|
|
8
|
-
innerProps: { ref: o, ...
|
|
8
|
+
isClearIndicatorVisible: a,
|
|
9
|
+
innerProps: { ref: o, ...r }
|
|
9
10
|
}) => {
|
|
10
|
-
const { getLabel:
|
|
11
|
-
return
|
|
12
|
-
/* @__PURE__ */
|
|
13
|
-
|
|
11
|
+
const { getLabel: s } = p();
|
|
12
|
+
return a ? /* @__PURE__ */ i(l, { children: [
|
|
13
|
+
/* @__PURE__ */ e(
|
|
14
|
+
m,
|
|
15
|
+
{
|
|
16
|
+
tabIndex: 0,
|
|
17
|
+
ref: o,
|
|
18
|
+
iconSize: 18,
|
|
19
|
+
...r,
|
|
20
|
+
className: c(t["tedi-select__clear-indicator"], r.className),
|
|
21
|
+
children: s("clear")
|
|
22
|
+
}
|
|
23
|
+
),
|
|
24
|
+
/* @__PURE__ */ e(n, { color: "primary", axis: "vertical", className: t["tedi-select__separator"] })
|
|
14
25
|
] }) : null;
|
|
15
26
|
};
|
|
16
27
|
export {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const M=require("react/jsx-runtime"),
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const M=require("react/jsx-runtime"),Y=require("../../../../../external/classnames/index.cjs.js"),a=require("react"),nt=require("../../../../../external/react-select/dist/react-select.esm.cjs.js"),lt=require("../../../../../external/react-select/async/dist/react-select-async.esm.cjs.js"),ot=require("../feedback-text/feedback-text.cjs.js"),st=require("../form-label/form-label.cjs.js"),T=require("../input-group/input-group.cjs.js"),at=require("../input-group/input-group.module.scss.cjs.js"),i=require("./components/select-bulk-helpers.cjs.js"),rt=require("./components/select-clear-indicator.cjs.js"),it=require("./components/select-control.cjs.js"),ct=require("./components/select-dropdown-indicator.cjs.js"),ut=require("./components/select-group.cjs.js"),dt=require("./components/select-group-heading.cjs.js"),pt=require("./components/select-indicators-container.cjs.js"),ft=require("./components/select-input.cjs.js"),St=require("./components/select-loading-indicator.cjs.js"),gt=require("./components/select-menu.cjs.js"),bt=require("./components/select-menu-list.cjs.js"),mt=require("./components/select-menu-portal.cjs.js"),yt=require("./components/select-multi-value.cjs.js"),Lt=require("./components/select-multi-value-remove.cjs.js"),Mt=require("./components/select-option.cjs.js"),vt=require("./components/select-single-value.cjs.js"),It=require("./components/select-value-container.cjs.js"),p=require("./select.module.scss.cjs.js"),ht=require("../../../providers/label-provider/use-labels.cjs.js"),Z=a.forwardRef((k,ee)=>{var Q;const{options:u,defaultOptions:te,name:ne,iconName:le="arrow_drop_down",label:oe,required:R,value:x,defaultValue:D,tagsDirection:V="stack",onChange:_,onInputChange:se,inputValue:ae,loadOptions:re,isLoading:ie,openMenuOnFocus:ce=!1,openMenuOnClick:ue=!0,tabSelectsValue:de=!1,disabled:P=!1,className:pe,hideLabel:fe=!1,helper:c,placeholder:Se,invalid:ge,valid:be,size:q,async:me=!1,renderOption:ye,renderMessageListFooter:F,noOptionsMessage:Le,loadingMessage:Me,multiple:v=!1,showSelectAll:G=!1,selectableGroups:N=!1,dropdownType:ve="menu",renderValue:Ie,closeMenuOnSelect:he=!v,blurInputOnSelect:j=!1,autoFocus:Ce=!1,isClearable:Oe=!0,isClearIndicatorVisible:H=!1,showClearOnInteraction:Ae=!1,isSearchable:C=!0,openKeyboardOnTouch:U=!0,menuIsOpen:Ve,onMenuClose:_e,onMenuOpen:qe,onBlur:E,inputIsHidden:Ee,isTagRemovable:we=!1,tagsEllipsis:Te=!1,backspaceRemovesValue:ke=!1,optionGroupHeadingText:Re={modifiers:"small",color:"tertiary"},cacheOptions:xe=!0,showRadioButtons:De=!1,renderWithoutLabel:Pe,tooltip:Fe,classNames:K}=k,d=(Q=T.useOptionalInputGroup)==null?void 0:Q.call(T),Ge=a.useId(),w=d==null?void 0:d.hasExternalLabel,g=k.id??(d==null?void 0:d.inputId)??Ge,Ne=w?(d==null?void 0:d.inputId)??g:`${g}-input`,je=w?`${g}-container`:g,B=c?(c==null?void 0:c.id)??`${g}-helper`:void 0,I=a.useRef(null),{getLabel:O}=ht.useLabels();a.useImperativeHandle(ee,()=>I.current);const[He,$]=a.useState(!1),Ue=t=>{var e,n;if(U||!C||t.pointerType!=="touch"&&t.pointerType!=="pen")return;const o=t.target;if(!((e=o.closest)!=null&&e.call(o,`.${p.default["tedi-select__control"]}`)))return;const l=(n=I.current)==null?void 0:n.inputRef,r=!!l&&(t.target===l||l.contains(o));$(!r)},Ke=()=>{$(!1),E==null||E()},m=!!G&&v,[Be,$e]=a.useState(D??null),z=x!==void 0,b=z?x:Be,f=a.useMemo(()=>Array.isArray(b)?b:b?[b]:[],[b]),A=a.useMemo(()=>({value:i.SELECT_ALL_VALUE,label:O("select.select-all")}),[O]),y=!!N&&!!v,{groupFlattenedOptions:W,groupSentinelMap:h}=a.useMemo(()=>{const t=new Map;if(!y||!u||u.length===0)return{groupFlattenedOptions:null,groupSentinelMap:t};if(!u.some(e=>e&&Array.isArray(e.options)))return{groupFlattenedOptions:null,groupSentinelMap:t};const l=[],r=new Map;for(const e of u)if(e&&Array.isArray(e.options)){const n=e,s=`${i.GROUP_OPTION_PREFIX}${n.label??""}`,S=n.options.filter(L=>!L.isDisabled);r.set(s,{enabled:S}),l.push({value:s,label:n.label??""});for(const L of n.options)l.push({...L,customData:{...L.customData??{},__tediInGroup:!0}})}else l.push(e);return{groupFlattenedOptions:l,groupSentinelMap:r}},[u,y]),ze=a.useMemo(()=>{let t=W??u;return m&&t&&t.length>0&&(t=[A,...t]),t},[u,W,m,A]),We=a.useMemo(()=>{const t=[];if(y&&h.size>0)for(const[o,l]of h)l.enabled.length>0&&i.areAllSelected(f,l.enabled)&&t.push({value:o,label:""});if(m){const o=i.getEnabledOptions(u??[]);o.length>0&&i.areAllSelected(f,o)&&t.push(A)}return t.length===0?b:[...f,...t]},[b,f,u,y,h,m,A]),Xe=(t,o)=>{let l=t;const r=o.option;if(y&&r&&h.has(r.value)){const e=h.get(r.value).enabled;if(o.action==="select-option"){const n=[...f];for(const s of e)n.some(S=>S.value===s.value)||n.push(s);l=n}else o.action==="deselect-option"&&(l=f.filter(n=>!e.some(s=>s.value===n.value)))}else if(m){const e=i.getEnabledOptions(u??[]),n=(r==null?void 0:r.value)===i.SELECT_ALL_VALUE;n&&o.action==="select-option"?l=[...f.filter(S=>S.value!==i.SELECT_ALL_VALUE&&!e.some(L=>L.value===S.value)),...e]:n&&o.action==="deselect-option"&&(l=f.filter(s=>s.value!==i.SELECT_ALL_VALUE&&!e.some(S=>S.value===s.value)))}Array.isArray(l)&&(l=l.filter(e=>e.value!==i.SELECT_ALL_VALUE&&!i.isGroupSentinel(e))),z||$e(l),_==null||_(l),!j&&I.current&&setTimeout(()=>{var e,n;return(n=(e=I.current)==null?void 0:e.inputRef)==null?void 0:n.focus()},0)},Je=a.useCallback((t,o)=>t.data.value===i.SELECT_ALL_VALUE||i.isGroupSentinel(t.data)||!o?!0:String(t.label).toLowerCase().includes(o.toLowerCase()),[]),[X,J]=a.useState(!1),Qe=t=>{(t.key==="ArrowUp"||t.key==="ArrowDown"||t.key==="Home"||t.key==="End"||t.key==="PageUp"||t.key==="PageDown"||t.key==="Tab")&&(X||J(!0))},Ye=a.useCallback(()=>{J(t=>t&&!1)},[]),Ze=a.useCallback(t=>M.jsx(bt.SelectMenuList,{...t,renderMessageListFooter:F}),[F]),et=()=>{const t={ClearIndicator:e=>rt.SelectClearIndicator({isClearIndicatorVisible:H,...e}),DropdownIndicator:()=>ct.SelectDropDownIndicator({iconName:le}),IndicatorSeparator:()=>null,MenuPortal:mt.SelectMenuPortal,Menu:gt.SelectMenu,MenuList:Ze,Option:e=>Mt.SelectOption({renderOption:ye,multiple:v,showRadioButtons:De,...e}),Control:it.SelectControl,Input:ft.SelectInput,MultiValue:e=>yt.SelectMultiValue({isTagRemovable:we,tagsEllipsis:Te,...e}),MultiValueRemove:Lt.SelectMultiValueRemove,SingleValue:vt.SelectSingleValue,Group:ut.SelectGroup,GroupHeading:e=>dt.SelectGroupHeading({optionGroupHeadingText:Re,...e}),IndicatorsContainer:pt.SelectIndicatorsContainer,ValueContainer:It.SelectValueContainer,LoadingIndicator:St.SelectLoadingIndicator},o=me?lt.default:nt.default,l=()=>O("select.no-options"),r=()=>O("select.loading");return M.jsx(o,{tagsDirection:V,showSelectAll:G,selectableGroups:N,dropdownType:ve,renderValue:Ie,keyboardMode:X,exitKeyboardMode:Ye,onKeyDown:Qe,id:je,"aria-describedby":B,autoFocus:Ce,ref:I,instanceId:g,className:"tedi-select__wrapper",name:ne,options:ze,defaultOptions:te,value:We,defaultValue:D,cacheOptions:xe,onChange:Xe,filterOption:m||y?Je:void 0,onInputChange:se,onBlur:Ke,softKeyboardSuppressed:!U&&C&&He,inputValue:ae,inputId:Ne,loadOptions:re,isLoading:ie,noOptionsMessage:Le||l,loadingMessage:Me||r,classNamePrefix:"select",components:t,isDisabled:P,isSearchable:C,menuIsOpen:Ve,openMenuOnFocus:ce,openMenuOnClick:ue,tabSelectsValue:de,onMenuClose:_e,onMenuOpen:qe,placeholder:Se||"",isClearable:Oe,backspaceRemovesValue:ke,menuShouldScrollIntoView:!0,isMulti:v,hideSelectedOptions:!1,closeMenuOnSelect:he,blurInputOnSelect:j,menuPlacement:"auto",inputIsHidden:Ee,required:R,menuPortalTarget:document.body,menuPosition:"absolute",classNames:(()=>{const e={};if(K)for(const[n,s]of Object.entries(K))e[n]=typeof s=="string"?()=>s:s;if(d){const n=e.control;e.control=s=>Y.default(n==null?void 0:n(s),at.default["tedi-input-group__input"])}return Object.keys(e).length>0?e:void 0})(),theme:e=>({...e,colors:{...e.colors,primary:"var(--tedi-blue-600)",danger:"var(--tedi-red-600)",dangerLight:"var(--tedi-red-200)"}}),styles:{input:e=>({...e,gridTemplateColumns:"0fr"})}})},tt=Y.default(p.default["tedi-select"],pe,{[p.default["tedi-select--invalid"]]:ge||(c==null?void 0:c.type)==="error"},{[p.default["tedi-select--valid"]]:be||(c==null?void 0:c.type)==="valid"},{[p.default[`tedi-select--${q}`]]:q},{[p.default[`tedi-select--tags-${V}`]]:V},{[p.default["tedi-select--searchable"]]:C},{[p.default["tedi-select--clear-on-interaction"]]:H&&Ae},{[p.default["tedi-select--disabled"]]:P});return M.jsxs("div",{"data-name":"select",className:tt,onPointerDownCapture:Ue,children:[M.jsxs("div",{className:p.default["tedi-select__inner"],children:[!w&&M.jsx(st.FormLabel,{id:`${g}-input`,label:oe,required:R,hideLabel:fe,size:q,renderWithoutLabel:Pe,tooltip:Fe}),et()]}),c&&M.jsx(ot.FeedbackText,{...c,id:B})]})});Z.displayName="Select";exports.Select=Z;
|
|
@@ -246,6 +246,12 @@ export interface SelectProps extends Omit<FormLabelProps, 'id' | 'label'> {
|
|
|
246
246
|
* leave this prop unset.
|
|
247
247
|
*/
|
|
248
248
|
isClearIndicatorVisible?: boolean;
|
|
249
|
+
/**
|
|
250
|
+
* Show the clear (×) button only while the control is hovered or focused, instead of whenever a
|
|
251
|
+
* value is selected. Requires `isClearIndicatorVisible`.
|
|
252
|
+
* @default false
|
|
253
|
+
*/
|
|
254
|
+
showClearOnInteraction?: boolean;
|
|
249
255
|
/**
|
|
250
256
|
* Allow filtering the option list by typing. Set to `false` for a pure
|
|
251
257
|
* dropdown with no search input (e.g. color/icon pickers).
|