@cloudscape-design/components-themeable 3.0.1340 → 3.0.1341
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/lib/internal/manifest.json +1 -1
- package/lib/internal/scss/input/styles.scss +231 -37
- package/lib/internal/scss/internal/components/chart-legend/styles.scss +1 -0
- package/lib/internal/scss/internal/generated/custom-css-properties/index.scss +1 -1
- package/lib/internal/template/button-dropdown/filter.d.ts +1 -1
- package/lib/internal/template/button-dropdown/filter.d.ts.map +1 -1
- package/lib/internal/template/button-dropdown/internal.d.ts.map +1 -1
- package/lib/internal/template/button-dropdown/internal.js +2 -2
- package/lib/internal/template/button-dropdown/internal.js.map +1 -1
- package/lib/internal/template/button-dropdown/utils/use-button-dropdown.d.ts +1 -0
- package/lib/internal/template/button-dropdown/utils/use-button-dropdown.d.ts.map +1 -1
- package/lib/internal/template/button-dropdown/utils/use-button-dropdown.js +9 -0
- package/lib/internal/template/button-dropdown/utils/use-button-dropdown.js.map +1 -1
- package/lib/internal/template/i18n/context.d.ts +16 -4
- package/lib/internal/template/i18n/context.d.ts.map +1 -1
- package/lib/internal/template/i18n/context.js +10 -4
- package/lib/internal/template/i18n/context.js.map +1 -1
- package/lib/internal/template/i18n/index.d.ts +2 -0
- package/lib/internal/template/i18n/index.d.ts.map +1 -1
- package/lib/internal/template/i18n/index.js +1 -0
- package/lib/internal/template/i18n/index.js.map +1 -1
- package/lib/internal/template/input/index.d.ts.map +1 -1
- package/lib/internal/template/input/index.js +4 -2
- package/lib/internal/template/input/index.js.map +1 -1
- package/lib/internal/template/input/interfaces.d.ts +9 -0
- package/lib/internal/template/input/interfaces.d.ts.map +1 -1
- package/lib/internal/template/input/interfaces.js.map +1 -1
- package/lib/internal/template/input/internal.d.ts +5 -5
- package/lib/internal/template/input/internal.d.ts.map +1 -1
- package/lib/internal/template/input/internal.js +60 -24
- package/lib/internal/template/input/internal.js.map +1 -1
- package/lib/internal/template/input/styles.css.js +28 -18
- package/lib/internal/template/input/styles.scoped.css +213 -52
- package/lib/internal/template/input/styles.selectors.js +28 -18
- package/lib/internal/template/input/utils.js +3 -3
- package/lib/internal/template/input/utils.js.map +1 -1
- package/lib/internal/template/internal/base-component/styles.scoped.css +1 -1
- package/lib/internal/template/internal/components/chart-legend/styles.css.js +6 -6
- package/lib/internal/template/internal/components/chart-legend/styles.scoped.css +16 -14
- package/lib/internal/template/internal/components/chart-legend/styles.selectors.js +6 -6
- package/lib/internal/template/internal/environment.js +2 -2
- package/lib/internal/template/internal/environment.json +2 -2
- package/lib/internal/template/multiselect/embedded.d.ts +1 -1
- package/lib/internal/template/select/parts/filter.d.ts +1 -1
- package/lib/internal/template/select/parts/filter.d.ts.map +1 -1
- package/lib/internal/template/status-indicator/interfaces.d.ts +1 -1
- package/lib/internal/template/status-indicator/interfaces.d.ts.map +1 -1
- package/lib/internal/template/status-indicator/interfaces.js.map +1 -1
- package/lib/internal/template/status-indicator/internal.d.ts +2 -6
- package/lib/internal/template/status-indicator/internal.d.ts.map +1 -1
- package/lib/internal/template/status-indicator/internal.js.map +1 -1
- package/lib/internal/template/steps/interfaces.d.ts +2 -2
- package/lib/internal/template/steps/interfaces.d.ts.map +1 -1
- package/lib/internal/template/steps/interfaces.js.map +1 -1
- package/lib/internal/template/test-utils/dom/input/index.d.ts +2 -0
- package/lib/internal/template/test-utils/dom/input/index.js +6 -0
- package/lib/internal/template/test-utils/dom/input/index.js.map +1 -1
- package/lib/internal/template/test-utils/selectors/input/index.d.ts +2 -0
- package/lib/internal/template/test-utils/selectors/input/index.js +6 -0
- package/lib/internal/template/test-utils/selectors/input/index.js.map +1 -1
- package/package.json +1 -1
- package/lib/internal/template/status-indicator/internal-interfaces.d.ts +0 -3
- package/lib/internal/template/status-indicator/internal-interfaces.d.ts.map +0 -1
- package/lib/internal/template/status-indicator/internal-interfaces.js +0 -2
- package/lib/internal/template/status-indicator/internal-interfaces.js.map +0 -1
|
@@ -28,6 +28,47 @@
|
|
|
28
28
|
}
|
|
29
29
|
}
|
|
30
30
|
|
|
31
|
+
%input-default-styles {
|
|
32
|
+
background-color: var(#{custom-props.$styleBackgroundDefault}, awsui.$color-background-input-default);
|
|
33
|
+
border-block: awsui.$border-width-field solid
|
|
34
|
+
var(#{custom-props.$styleBorderColorDefault}, awsui.$color-border-input-default);
|
|
35
|
+
border-inline: awsui.$border-width-field solid
|
|
36
|
+
var(#{custom-props.$styleBorderColorDefault}, awsui.$color-border-input-default);
|
|
37
|
+
box-shadow: var(#{custom-props.$styleBoxShadowDefault});
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
%input-hover-styles {
|
|
41
|
+
border-color: var(
|
|
42
|
+
#{custom-props.$styleBorderColorHover},
|
|
43
|
+
var(#{custom-props.$styleBorderColorDefault}, awsui.$color-border-input-default)
|
|
44
|
+
);
|
|
45
|
+
background-color: var(
|
|
46
|
+
#{custom-props.$styleBackgroundHover},
|
|
47
|
+
var(#{custom-props.$styleBackgroundDefault}, awsui.$color-background-input-default)
|
|
48
|
+
);
|
|
49
|
+
box-shadow: var(#{custom-props.$styleBoxShadowHover}, #{custom-props.$styleBoxShadowDefault});
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
%input-readonly-styles {
|
|
53
|
+
@include styles.form-readonly-element(
|
|
54
|
+
$background-color: var(
|
|
55
|
+
#{custom-props.$styleBackgroundReadonly},
|
|
56
|
+
var(#{custom-props.$styleBackgroundDefault}, awsui.$color-background-input-default)
|
|
57
|
+
),
|
|
58
|
+
$border-color: var(
|
|
59
|
+
#{custom-props.$styleBorderColorReadonly},
|
|
60
|
+
var(#{custom-props.$styleBorderColorDefault}, awsui.$color-border-input-disabled)
|
|
61
|
+
)
|
|
62
|
+
);
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
%input-focus-styles {
|
|
66
|
+
@include styles.form-focus-element(
|
|
67
|
+
$border-color: var(#{custom-props.$styleBorderColorFocus}, awsui.$color-border-input-focused),
|
|
68
|
+
$box-shadow: var(#{custom-props.$styleBoxShadowFocus}, foundation.$box-shadow-focused-light)
|
|
69
|
+
);
|
|
70
|
+
}
|
|
71
|
+
|
|
31
72
|
.root {
|
|
32
73
|
/* used in test-utils for component to distinguish input from other input-like components, for example autosuggest */
|
|
33
74
|
}
|
|
@@ -40,54 +81,31 @@
|
|
|
40
81
|
inline-size: 100%;
|
|
41
82
|
cursor: text;
|
|
42
83
|
box-sizing: border-box;
|
|
43
|
-
background-color: var(#{custom-props.$styleBackgroundDefault}, awsui.$color-background-input-default);
|
|
44
84
|
border-start-start-radius: styles.$control-border-radius;
|
|
45
85
|
border-start-end-radius: styles.$control-border-radius;
|
|
46
86
|
border-end-start-radius: styles.$control-border-radius;
|
|
47
87
|
border-end-end-radius: styles.$control-border-radius;
|
|
48
88
|
|
|
49
|
-
border-block: awsui.$border-width-field solid
|
|
50
|
-
var(#{custom-props.$styleBorderColorDefault}, awsui.$color-border-input-default);
|
|
51
|
-
border-inline: awsui.$border-width-field solid
|
|
52
|
-
var(#{custom-props.$styleBorderColorDefault}, awsui.$color-border-input-default);
|
|
53
|
-
|
|
54
|
-
box-shadow: var(#{custom-props.$styleBoxShadowDefault});
|
|
55
|
-
|
|
56
89
|
@include styles.font-body-m;
|
|
57
90
|
min-block-size: awsui.$size-vertical-input;
|
|
58
91
|
|
|
92
|
+
@extend %input-default-styles;
|
|
93
|
+
|
|
59
94
|
&:hover {
|
|
60
|
-
border-color: var(
|
|
61
|
-
#{custom-props.$styleBorderColorHover},
|
|
62
|
-
var(#{custom-props.$styleBorderColorDefault}, awsui.$color-border-input-default)
|
|
63
|
-
);
|
|
64
95
|
color: var(
|
|
65
96
|
#{custom-props.$styleColorHover},
|
|
66
97
|
var(#{custom-props.$styleBorderColorDefault}, awsui.$color-text-body-default)
|
|
67
98
|
);
|
|
68
|
-
|
|
69
|
-
#{custom-props.$styleBackgroundHover},
|
|
70
|
-
var(#{custom-props.$styleBackgroundDefault}, awsui.$color-background-input-default)
|
|
71
|
-
);
|
|
72
|
-
box-shadow: var(#{custom-props.$styleBoxShadowHover}, #{custom-props.$styleBoxShadowDefault});
|
|
99
|
+
@extend %input-hover-styles;
|
|
73
100
|
}
|
|
74
101
|
|
|
75
102
|
&.input-readonly {
|
|
76
|
-
@include styles.form-readonly-element(
|
|
77
|
-
$background-color: var(
|
|
78
|
-
#{custom-props.$styleBackgroundReadonly},
|
|
79
|
-
var(#{custom-props.$styleBackgroundDefault}, awsui.$color-background-input-default)
|
|
80
|
-
),
|
|
81
|
-
$border-color: var(
|
|
82
|
-
#{custom-props.$styleBorderColorReadonly},
|
|
83
|
-
var(#{custom-props.$styleBorderColorDefault}, awsui.$color-border-input-disabled)
|
|
84
|
-
)
|
|
85
|
-
);
|
|
86
103
|
color: var(
|
|
87
104
|
#{custom-props.$styleColorReadonly},
|
|
88
105
|
var(#{custom-props.$styleColorDefault}, awsui.$color-text-body-default)
|
|
89
106
|
);
|
|
90
107
|
box-shadow: var(#{custom-props.$styleBoxShadowReadonly});
|
|
108
|
+
@extend %input-readonly-styles;
|
|
91
109
|
}
|
|
92
110
|
|
|
93
111
|
@include placeholder {
|
|
@@ -100,12 +118,9 @@
|
|
|
100
118
|
}
|
|
101
119
|
|
|
102
120
|
&:focus {
|
|
103
|
-
@include styles.form-focus-element(
|
|
104
|
-
$border-color: var(#{custom-props.$styleBorderColorFocus}, awsui.$color-border-input-focused),
|
|
105
|
-
$box-shadow: var(#{custom-props.$styleBoxShadowFocus}, foundation.$box-shadow-focused-light)
|
|
106
|
-
);
|
|
107
121
|
color: var(#{custom-props.$styleColorFocus}, awsui.$color-text-body-default);
|
|
108
122
|
background-color: var(#{custom-props.$styleBackgroundFocus}, awsui.$color-background-input-default);
|
|
123
|
+
@extend %input-focus-styles;
|
|
109
124
|
}
|
|
110
125
|
|
|
111
126
|
&:disabled {
|
|
@@ -134,7 +149,7 @@
|
|
|
134
149
|
$border-color: var(#{custom-props.$styleBorderColorDefault}, awsui.$color-text-status-error),
|
|
135
150
|
$focus-box-shadow: var(#{custom-props.$styleBoxShadowFocus}, foundation.$box-shadow-focused-light-invalid)
|
|
136
151
|
);
|
|
137
|
-
&.input-has-icon-
|
|
152
|
+
&.input-has-icon-start {
|
|
138
153
|
padding-inline-start: calc(
|
|
139
154
|
#{styles.$control-icon-horizontal-padding} -
|
|
140
155
|
(#{styles.$invalid-control-left-border} - #{awsui.$border-width-field})
|
|
@@ -148,7 +163,7 @@
|
|
|
148
163
|
$border-color: var(#{custom-props.$styleBorderColorDefault}, awsui.$color-text-status-warning),
|
|
149
164
|
$focus-box-shadow: var(#{custom-props.$styleBoxShadowFocus}, foundation.$box-shadow-focused-light-invalid)
|
|
150
165
|
);
|
|
151
|
-
&.input-has-icon-
|
|
166
|
+
&.input-has-icon-start {
|
|
152
167
|
padding-inline-start: calc(
|
|
153
168
|
#{styles.$control-icon-horizontal-padding} -
|
|
154
169
|
(#{styles.$invalid-control-left-border} - #{awsui.$border-width-field})
|
|
@@ -169,10 +184,10 @@
|
|
|
169
184
|
display: none;
|
|
170
185
|
}
|
|
171
186
|
}
|
|
172
|
-
&.input-has-icon-
|
|
187
|
+
&.input-has-icon-start {
|
|
173
188
|
padding-inline-start: styles.$control-icon-horizontal-padding;
|
|
174
189
|
}
|
|
175
|
-
&.input-has-icon-
|
|
190
|
+
&.input-has-icon-end {
|
|
176
191
|
padding-inline-end: styles.$control-icon-horizontal-padding;
|
|
177
192
|
}
|
|
178
193
|
&.input-has-no-border-radius {
|
|
@@ -188,14 +203,14 @@
|
|
|
188
203
|
position: relative;
|
|
189
204
|
}
|
|
190
205
|
|
|
191
|
-
.input-icon-
|
|
206
|
+
.input-icon-start {
|
|
192
207
|
position: absolute;
|
|
193
208
|
pointer-events: none;
|
|
194
209
|
inset-inline-start: styles.$control-icon-horizontal-offset;
|
|
195
210
|
inset-block-start: styles.$control-icon-vertical-offset;
|
|
196
211
|
}
|
|
197
212
|
|
|
198
|
-
.input-icon-
|
|
213
|
+
.input-icon-end {
|
|
199
214
|
position: absolute;
|
|
200
215
|
inset-block-start: calc(#{styles.$control-icon-vertical-offset} - #{awsui.$space-xxxs});
|
|
201
216
|
inset-inline-end: calc(#{styles.$control-icon-horizontal-offset} - #{awsui.$space-xxs});
|
|
@@ -224,3 +239,182 @@
|
|
|
224
239
|
.inline-label {
|
|
225
240
|
@include forms.inline-label;
|
|
226
241
|
}
|
|
242
|
+
|
|
243
|
+
.input-adorned-container {
|
|
244
|
+
display: flex;
|
|
245
|
+
align-items: stretch;
|
|
246
|
+
inline-size: 100%;
|
|
247
|
+
box-sizing: border-box;
|
|
248
|
+
color: var(#{custom-props.$styleColorDefault}, awsui.$color-text-form-secondary);
|
|
249
|
+
border-start-start-radius: styles.$control-border-radius;
|
|
250
|
+
border-start-end-radius: styles.$control-border-radius;
|
|
251
|
+
border-end-start-radius: styles.$control-border-radius;
|
|
252
|
+
border-end-end-radius: styles.$control-border-radius;
|
|
253
|
+
min-block-size: awsui.$size-vertical-input;
|
|
254
|
+
|
|
255
|
+
@extend %input-default-styles;
|
|
256
|
+
|
|
257
|
+
&:hover {
|
|
258
|
+
@extend %input-hover-styles;
|
|
259
|
+
color: var(
|
|
260
|
+
#{custom-props.$styleColorHover},
|
|
261
|
+
var(#{custom-props.$styleColorDefault}, awsui.$color-text-form-secondary)
|
|
262
|
+
);
|
|
263
|
+
}
|
|
264
|
+
|
|
265
|
+
&.input-adorned-container-readonly {
|
|
266
|
+
@extend %input-readonly-styles;
|
|
267
|
+
color: var(
|
|
268
|
+
#{custom-props.$styleColorReadonly},
|
|
269
|
+
var(#{custom-props.$styleColorDefault}, awsui.$color-text-form-secondary)
|
|
270
|
+
);
|
|
271
|
+
}
|
|
272
|
+
|
|
273
|
+
&:focus-within {
|
|
274
|
+
@extend %input-focus-styles;
|
|
275
|
+
color: var(
|
|
276
|
+
#{custom-props.$styleColorFocus},
|
|
277
|
+
var(#{custom-props.$styleColorDefault}, awsui.$color-text-form-secondary)
|
|
278
|
+
);
|
|
279
|
+
}
|
|
280
|
+
|
|
281
|
+
&.input-adorned-container-invalid {
|
|
282
|
+
@include styles.form-invalid-control(
|
|
283
|
+
$color: var(#{custom-props.$styleColorDefault}, awsui.$color-text-status-error),
|
|
284
|
+
$border-color: var(#{custom-props.$styleBorderColorDefault}, awsui.$color-text-status-error),
|
|
285
|
+
$focus-box-shadow: var(#{custom-props.$styleBoxShadowFocus}, foundation.$box-shadow-focused-light-invalid)
|
|
286
|
+
) {
|
|
287
|
+
padding-inline-start: 0;
|
|
288
|
+
}
|
|
289
|
+
|
|
290
|
+
&:focus-within {
|
|
291
|
+
box-shadow: var(#{custom-props.$styleBoxShadowFocus}, foundation.$box-shadow-focused-light-invalid);
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
|
|
295
|
+
&.input-adorned-container-warning {
|
|
296
|
+
@include styles.form-warning-control(
|
|
297
|
+
$color: var(#{custom-props.$styleColorDefault}, awsui.$color-text-status-warning),
|
|
298
|
+
$border-color: var(#{custom-props.$styleBorderColorDefault}, awsui.$color-text-status-warning),
|
|
299
|
+
$focus-box-shadow: var(#{custom-props.$styleBoxShadowFocus}, foundation.$box-shadow-focused-light-invalid)
|
|
300
|
+
) {
|
|
301
|
+
padding-inline-start: 0;
|
|
302
|
+
}
|
|
303
|
+
|
|
304
|
+
&:focus-within {
|
|
305
|
+
box-shadow: var(#{custom-props.$styleBoxShadowFocus}, foundation.$box-shadow-focused-light-invalid);
|
|
306
|
+
}
|
|
307
|
+
}
|
|
308
|
+
|
|
309
|
+
&.input-adorned-container-disabled {
|
|
310
|
+
@include styles.form-disabled-element(
|
|
311
|
+
$background-color: var(#{custom-props.$styleBackgroundDisabled}, awsui.$color-background-input-disabled),
|
|
312
|
+
$border-color: var(#{custom-props.$styleBorderColorDisabled}, awsui.$color-border-input-disabled),
|
|
313
|
+
$color: var(#{custom-props.$styleColorDisabled}, awsui.$color-text-input-disabled),
|
|
314
|
+
$cursor: default
|
|
315
|
+
);
|
|
316
|
+
box-shadow: var(#{custom-props.$styleBoxShadowDisabled});
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
|
|
320
|
+
.input-prefix,
|
|
321
|
+
.input-suffix {
|
|
322
|
+
display: flex;
|
|
323
|
+
align-items: center;
|
|
324
|
+
flex-shrink: 1;
|
|
325
|
+
max-inline-size: max(0px, calc((100% - 12rem) / 2));
|
|
326
|
+
min-inline-size: 0;
|
|
327
|
+
padding-block: styles.$control-padding-vertical;
|
|
328
|
+
padding-inline: styles.$control-padding-horizontal;
|
|
329
|
+
color: inherit;
|
|
330
|
+
@include styles.font-body-m;
|
|
331
|
+
}
|
|
332
|
+
|
|
333
|
+
.input-adornment-content {
|
|
334
|
+
display: block;
|
|
335
|
+
flex: 1;
|
|
336
|
+
min-inline-size: 0;
|
|
337
|
+
overflow: hidden;
|
|
338
|
+
text-overflow: ellipsis;
|
|
339
|
+
white-space: nowrap;
|
|
340
|
+
}
|
|
341
|
+
|
|
342
|
+
.input-adornment-divider {
|
|
343
|
+
display: block;
|
|
344
|
+
flex-shrink: 0;
|
|
345
|
+
inline-size: awsui.$border-width-field;
|
|
346
|
+
background-color: awsui.$color-border-divider-default;
|
|
347
|
+
align-self: stretch;
|
|
348
|
+
}
|
|
349
|
+
|
|
350
|
+
.input-adorned {
|
|
351
|
+
flex: 1;
|
|
352
|
+
min-inline-size: 0;
|
|
353
|
+
border-block: none;
|
|
354
|
+
border-inline: none;
|
|
355
|
+
border-start-start-radius: 0;
|
|
356
|
+
border-start-end-radius: 0;
|
|
357
|
+
border-end-start-radius: 0;
|
|
358
|
+
border-end-end-radius: 0;
|
|
359
|
+
background-color: transparent;
|
|
360
|
+
box-shadow: none;
|
|
361
|
+
min-block-size: unset;
|
|
362
|
+
|
|
363
|
+
&.input:focus {
|
|
364
|
+
border-block: 0;
|
|
365
|
+
border-inline: 0;
|
|
366
|
+
box-shadow: none;
|
|
367
|
+
outline: none;
|
|
368
|
+
}
|
|
369
|
+
|
|
370
|
+
&:hover {
|
|
371
|
+
border-color: transparent;
|
|
372
|
+
background-color: transparent;
|
|
373
|
+
}
|
|
374
|
+
|
|
375
|
+
&:disabled {
|
|
376
|
+
background-color: transparent;
|
|
377
|
+
border-color: transparent;
|
|
378
|
+
border-block: 0;
|
|
379
|
+
border-inline: 0;
|
|
380
|
+
}
|
|
381
|
+
|
|
382
|
+
&.input-readonly {
|
|
383
|
+
background-color: transparent;
|
|
384
|
+
border-color: transparent;
|
|
385
|
+
border-block: 0;
|
|
386
|
+
border-inline: 0;
|
|
387
|
+
}
|
|
388
|
+
|
|
389
|
+
&.input-invalid,
|
|
390
|
+
&.input-warning {
|
|
391
|
+
padding-inline-start: styles.$control-padding-horizontal;
|
|
392
|
+
border-block: 0;
|
|
393
|
+
border-inline: 0;
|
|
394
|
+
border-inline-start-width: 0;
|
|
395
|
+
box-shadow: none;
|
|
396
|
+
|
|
397
|
+
&:focus {
|
|
398
|
+
border-block: 0;
|
|
399
|
+
border-inline: 0;
|
|
400
|
+
box-shadow: none;
|
|
401
|
+
outline: none;
|
|
402
|
+
}
|
|
403
|
+
}
|
|
404
|
+
}
|
|
405
|
+
|
|
406
|
+
.input-adorned-container-invalid,
|
|
407
|
+
.input-adorned-container-warning {
|
|
408
|
+
> .input-prefix,
|
|
409
|
+
> .input-adorned:first-child {
|
|
410
|
+
padding-inline-start: styles.$invalid-control-left-padding;
|
|
411
|
+
}
|
|
412
|
+
|
|
413
|
+
> .input-prefix,
|
|
414
|
+
> .input-suffix {
|
|
415
|
+
max-inline-size: max(
|
|
416
|
+
0px,
|
|
417
|
+
calc((100% - 12rem + #{styles.$invalid-control-left-border} - #{awsui.$border-width-field}) / 2)
|
|
418
|
+
);
|
|
419
|
+
}
|
|
420
|
+
}
|
|
@@ -3,6 +3,6 @@ import { InternalInputProps } from '../input/internal';
|
|
|
3
3
|
export interface ButtonDropdownFilterProps extends Omit<InternalInputProps, 'type'> {
|
|
4
4
|
ref?: React.Ref<HTMLInputElement>;
|
|
5
5
|
}
|
|
6
|
-
declare const ButtonDropdownFilter: React.ForwardRefExoticComponent<Pick<ButtonDropdownFilterProps, "style" | "disabled" | "className" | "id" | "name" | "onFocus" | "onBlur" | "onChange" | "onKeyDown" | "onKeyUp" | "placeholder" | "inputMode" | "autoFocus" | "value" | "autoComplete" | "readOnly" | "step" | "invalid" | "ariaLabel" | "ariaDescribedby" | "__internalRootRef" | "warning" | "ariaLabelledby" | "
|
|
6
|
+
declare const ButtonDropdownFilter: React.ForwardRefExoticComponent<Pick<ButtonDropdownFilterProps, "style" | "disabled" | "className" | "id" | "name" | "onFocus" | "onBlur" | "onChange" | "onKeyDown" | "onKeyUp" | "placeholder" | "prefix" | "inputMode" | "autoFocus" | "value" | "autoComplete" | "readOnly" | "step" | "invalid" | "ariaLabel" | "ariaDescribedby" | "__internalRootRef" | "warning" | "ariaLabelledby" | "__injectAnalyticsComponentMetadata" | "__skipNativeAttributesWarnings" | "ariaRequired" | "controlId" | "suffix" | "nativeInputAttributes" | "disableBrowserAutocorrect" | "spellcheck" | "clearAriaLabel" | "__startIcon" | "__startIconVariant" | "__onStartIconClick" | "__endIcon" | "__onEndIconClick" | "__noBorderRadius" | "__onDelayedInput" | "__onBlurWithDetail" | "__inheritFormFieldProps" | "__inlineLabelText" | "__fullWidth"> & React.RefAttributes<HTMLInputElement>>;
|
|
7
7
|
export default ButtonDropdownFilter;
|
|
8
8
|
//# sourceMappingURL=filter.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filter.d.ts","sourceRoot":"","sources":["../../../src/button-dropdown/filter.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAsB,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAItE,MAAM,WAAW,yBAA0B,SAAQ,IAAI,CAAC,kBAAkB,EAAE,MAAM,CAAC;IACjF,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;CACnC;AAED,QAAA,MAAM,oBAAoB,
|
|
1
|
+
{"version":3,"file":"filter.d.ts","sourceRoot":"","sources":["../../../src/button-dropdown/filter.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAsB,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAItE,MAAM,WAAW,yBAA0B,SAAQ,IAAI,CAAC,kBAAkB,EAAE,MAAM,CAAC;IACjF,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;CACnC;AAED,QAAA,MAAM,oBAAoB,y1BAuBxB,CAAC;AAEH,eAAe,oBAAoB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"internal.d.ts","sourceRoot":"","sources":["../../../src/button-dropdown/internal.tsx"],"names":[],"mappings":"AAEA,OAAO,KAA0D,MAAM,OAAO,CAAC;AA2B/E,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,2BAA2B,EAAgB,MAAM,uBAAuB,CAAC;AASlF,QAAA,MAAM,sBAAsB,
|
|
1
|
+
{"version":3,"file":"internal.d.ts","sourceRoot":"","sources":["../../../src/button-dropdown/internal.tsx"],"names":[],"mappings":"AAEA,OAAO,KAA0D,MAAM,OAAO,CAAC;AA2B/E,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,2BAA2B,EAAgB,MAAM,uBAAuB,CAAC;AASlF,QAAA,MAAM,sBAAsB,6GAif3B,CAAC;AAEF,eAAe,sBAAsB,CAAC"}
|
|
@@ -51,7 +51,7 @@ const InternalButtonDropdown = React.forwardRef(({ items, variant = 'normal', lo
|
|
|
51
51
|
const hasMainAction = mainAction && (variant === 'primary' || variant === 'normal');
|
|
52
52
|
const isVisualRefresh = useVisualRefresh();
|
|
53
53
|
const isOneTheme = isThemeActive(Theme.OneTheme);
|
|
54
|
-
const { isOpen, targetItem, isHighlighted, isKeyboardHighlight, isExpanded, highlightItem, onKeyDown, onKeyUp, onItemActivate, onGroupToggle, onDropdownFocusLeave, toggleDropdown, closeDropdown, setIsUsingMouse, filteringValue, setFilteringValue, filteredItems, showExpandableGroups, } = useButtonDropdown({
|
|
54
|
+
const { isOpen, targetItem, isHighlighted, isKeyboardHighlight, isExpanded, highlightItem, onKeyDown, onKeyUp, onItemActivate, onGroupToggle, onDropdownFocusLeave, onDropdownBlur, toggleDropdown, closeDropdown, setIsUsingMouse, filteringValue, setFilteringValue, filteredItems, showExpandableGroups, } = useButtonDropdown({
|
|
55
55
|
items,
|
|
56
56
|
onItemClick,
|
|
57
57
|
onItemFollow,
|
|
@@ -234,7 +234,7 @@ const InternalButtonDropdown = React.forwardRef(({ items, variant = 'normal', lo
|
|
|
234
234
|
}
|
|
235
235
|
}, [loading, loadingButtonCount]);
|
|
236
236
|
return (React.createElement("div", { ...baseProps, onKeyDown: onKeyDown, onKeyUp: onKeyUp, onMouseDown: handleMouseEvent, onMouseMove: handleMouseEvent, className: clsx(styles['button-dropdown'], styles[`variant-${variant}`], canBeFullWidth && styles['full-width'], baseProps.className), "aria-owns": expandToViewport && isOpen ? dropdownId : undefined, ref: __internalRootRef },
|
|
237
|
-
React.createElement(Dropdown, { open: canBeOpened && isOpen, stretchTriggerHeight: variant === 'navigation', minWidth: expandToViewport ? undefined : 'trigger', hideBlockBorder: false, expandToViewport: expandToViewport, preferredAlignment: preferCenter ? 'center' : 'start', onOutsideClick: () => toggleDropdown(), onFocusLeave: onDropdownFocusLeave, trigger: trigger, dropdownId: dropdownId, header: filterElement, ariaRole: hasFiltering ? 'dialog' : undefined, ariaLabel: hasFiltering ? ariaLabel : undefined, footer: dropdownStatus.content ? (React.createElement(DropdownFooter, { content: isOpen ? dropdownStatus.content : null, id: footerId, hasItems: !isNoMatch })) : null, content: React.createElement(React.Fragment, null,
|
|
237
|
+
React.createElement(Dropdown, { open: canBeOpened && isOpen, stretchTriggerHeight: variant === 'navigation', minWidth: expandToViewport ? undefined : 'trigger', hideBlockBorder: false, expandToViewport: expandToViewport, preferredAlignment: preferCenter ? 'center' : 'start', onOutsideClick: () => toggleDropdown(), onFocusLeave: onDropdownFocusLeave, onBlur: onDropdownBlur, trigger: trigger, dropdownId: dropdownId, header: filterElement, ariaRole: hasFiltering ? 'dialog' : undefined, ariaLabel: hasFiltering ? ariaLabel : undefined, footer: dropdownStatus.content ? (React.createElement(DropdownFooter, { content: isOpen ? dropdownStatus.content : null, id: footerId, hasItems: !isNoMatch })) : null, content: React.createElement(React.Fragment, null,
|
|
238
238
|
hasHeader && (React.createElement("div", { className: styles.header, id: headerId },
|
|
239
239
|
title && (React.createElement("div", { className: styles.title },
|
|
240
240
|
React.createElement(InternalBox, { fontSize: "heading-s", fontWeight: "bold", color: "inherit", tagOverride: "h2", margin: { vertical: 'n', horizontal: 'n' } }, title))),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"internal.js","sourceRoot":"","sources":["../../../src/button-dropdown/internal.tsx"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,sCAAsC;AACtC,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,mBAAmB,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAC/E,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,+CAA+C,CAAC;AAC5G,OAAO,EAAE,6BAA6B,EAAE,MAAM,kEAAkE,CAAC;AAEjH,OAAO,WAAW,MAAM,iBAAiB,CAAC;AAE1C,OAAO,EAAE,cAAc,EAAuB,MAAM,oBAAoB,CAAC;AACzE,OAAO,QAAQ,MAAM,sBAAsB,CAAC;AAE5C,OAAO,EAAE,SAAS,EAAE,MAAM,2CAA2C,CAAC;AACtE,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,cAAc,MAAM,wCAAwC,CAAC;AACpE,OAAO,EAAE,iBAAiB,EAAE,MAAM,wCAAwC,CAAC;AAC3E,OAAO,WAAW,MAAM,qCAAqC,CAAC;AAC9D,OAAO,oBAAoB,MAAM,0CAA0C,CAAC;AAC5E,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,4CAA4C,CAAC;AAC9E,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAKhE,OAAO,oBAAoB,MAAM,UAAU,CAAC;AAG5C,OAAO,SAAS,MAAM,cAAc,CAAC;AACrC,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,OAAO,kBAAkB,MAAM,oCAAoC,CAAC;AACpE,OAAO,MAAM,MAAM,iBAAiB,CAAC;AAErC,MAAM,sBAAsB,GAAG,KAAK,CAAC,UAAU,CAC7C,CACE,EACE,KAAK,EACL,OAAO,GAAG,QAAQ,EAClB,OAAO,GAAG,KAAK,EACf,WAAW,EACX,QAAQ,GAAG,KAAK,EAChB,cAAc,EACd,gBAAgB,GAAG,KAAK,EACxB,QAAQ,EACR,WAAW,EACX,YAAY,EACZ,oBAAoB,EACpB,gBAAgB,EAChB,SAAS,EACT,QAAQ,EACR,OAAO,EACP,OAAO,EACP,OAAO,EACP,KAAK,EACL,WAAW,EACX,YAAY,EACZ,UAAU,EACV,kBAAkB,EAClB,iBAAiB,EACjB,4BAA4B,EAC5B,SAAS,EACT,SAAS,EACT,QAAQ,EACR,0BAA0B,EAC1B,uBAAuB,EACvB,UAAU,EACV,aAAa,EACb,oBAAoB,EACpB,kBAAkB,EAClB,uBAAuB,EACvB,oBAAoB,EACpB,OAAO,EACP,WAAW,EACX,cAAc,EACd,eAAe,EACf,GAAG,KAAK,EACoB,EAC9B,GAAuC,EACvC,EAAE;;IACF,MAAM,kBAAkB,GAAG,SAAS,EAAE,CAAC;IACvC,MAAM,UAAU,GAAG,WAAW,CAAC,UAAU,CAAC,CAAC;IAC3C,MAAM,MAAM,GAAG,WAAW,CAAC,sBAAsB,CAAC,CAAC;IACnD,MAAM,YAAY,GAAG,aAAa,KAAK,MAAM,CAAC;IAC9C,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YACrB,YAAY,CAAC,gBAAgB,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5C,CAAC;IACH,CAAC;IACD,IAAI,UAAU,EAAE,CAAC;QACf,YAAY,CAAC,gBAAgB,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC;IAClD,CAAC;IAED,MAAM,oBAAoB,GAAG,CAAC,CAAC,CAAC,QAAQ,IAAI,OAAO,IAAI,OAAO,CAAC,CAAC;IAEhE,IAAI,aAAa,EAAE,CAAC;QAClB,IAAI,UAAU,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;YAChE,QAAQ,CAAC,gBAAgB,EAAE,6EAA6E,CAAC,CAAC;QAC5G,CAAC;QACD,IAAI,oBAAoB,IAAI,OAAO,KAAK,MAAM,IAAI,OAAO,KAAK,aAAa,EAAE,CAAC;YAC5E,QAAQ,CAAC,gBAAgB,EAAE,+EAA+E,CAAC,CAAC;QAC9G,CAAC;IACH,CAAC;IACD,MAAM,aAAa,GAAG,UAAU,IAAI,CAAC,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,QAAQ,CAAC,CAAC;IACpF,MAAM,eAAe,GAAG,gBAAgB,EAAE,CAAC;IAC3C,MAAM,UAAU,GAAG,aAAa,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAEjD,MAAM,EACJ,MAAM,EACN,UAAU,EACV,aAAa,EACb,mBAAmB,EACnB,UAAU,EACV,aAAa,EACb,SAAS,EACT,OAAO,EACP,cAAc,EACd,aAAa,EACb,oBAAoB,EACpB,cAAc,EACd,aAAa,EACb,eAAe,EACf,cAAc,EACd,iBAAiB,EACjB,aAAa,EACb,oBAAoB,GACrB,GAAG,iBAAiB,CAAC;QACpB,KAAK;QACL,WAAW;QACX,YAAY;QACZ,wEAAwE;QACxE,aAAa,EAAE,GAAG,EAAE,WAAC,OAAA,MAAA,UAAU,CAAC,OAAO,0CAAE,KAAK,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAA,EAAA;QACvE,gBAAgB;QAChB,mBAAmB,EAAE,gBAAgB;QACrC,kBAAkB;QAClB,YAAY;KACb,CAAC,CAAC;IAEH,MAAM,SAAS,GAAG,MAAM,CAAmB,IAAI,CAAC,CAAC;IAEjD,SAAS,CAAC,GAAG,EAAE;;QACb,wCAAwC;QACxC,IAAI,MAAM,IAAI,YAAY,EAAE,CAAC;YAC3B,MAAA,SAAS,CAAC,OAAO,0CAAE,KAAK,EAAE,CAAC;QAC7B,CAAC;IACH,CAAC,EAAE,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC;IAE3B,MAAM,gBAAgB,GAAG,GAAG,EAAE;QAC5B,eAAe,CAAC,IAAI,CAAC,CAAC;IACxB,CAAC,CAAC;IAEF,MAAM,SAAS,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;IAEtC,MAAM,aAAa,GAAG,MAAM,CAAc,IAAI,CAAC,CAAC;IAChD,MAAM,UAAU,GAAG,MAAM,CAAc,IAAI,CAAC,CAAC;IAE7C,mBAAmB,CACjB,GAAG,EACH,GAAG,EAAE,CAAC,CAAC;QACL,KAAK,CAAC,GAAG,IAAI;;YACX,MAAA,CAAC,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,OAAO,0CAAE,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;QACvE,CAAC;QACD,oBAAoB,CAAC,GAAG,IAAI;;YAC1B,MAAA,UAAU,CAAC,OAAO,0CAAE,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;QACrC,CAAC;KACF,CAAC,EACF,CAAC,aAAa,EAAE,UAAU,EAAE,aAAa,CAAC,CAC3C,CAAC;IAEF,MAAM,YAAY,GAAG,GAAG,EAAE;QACxB,IAAI,CAAC,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC1B,uFAAuF;YACvF,cAAc,CAAC,EAAE,mBAAmB,EAAE,CAAC,kBAAkB,EAAE,CAAC,CAAC;QAC/D,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,WAAW,GAAG,CAAC,OAAO,IAAI,CAAC,QAAQ,CAAC;IAE1C,MAAM,cAAc,GAAG,CAAC,CAAC,SAAS,IAAI,CAAC,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,QAAQ,CAAC,CAAC;IAEtF,MAAM,cAAc,GAAG,OAAO,KAAK,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,KAAK,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC;IAClH,MAAM,SAAS,GACb,OAAO,KAAK,MAAM,IAAI,OAAO,KAAK,aAAa;QAC7C,CAAC,CAAC;YACE,QAAQ,EAAE,oBAAoB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU;YACtD,OAAO;YACP,OAAO;YACP,OAAO;SACR;QACH,CAAC,CAAC;YACE,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,mBAAmB;YACzD,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ;YAC7C,SAAS,EAAE,OAAO;YAClB,WAAW,EAAE,YAAY,CAAC,MAAM,EAAE,QAAQ,EAAE,WAAW,IAAI,MAAM,CAAC;SACnE,CAAC;IAER,MAAM,gBAAgB,GAAwB;QAC5C,SAAS,EAAE,IAAI,CACb,MAAM,CAAC,gBAAgB,CAAC,EACxB,MAAM,CAAC,2BAA2B,CAAC,EACnC,kBAAkB,CAAC,eAAe,CAAC,CACpC;QACD,GAAG,SAAS;QACZ,OAAO,EAAE,cAAc;QACvB,OAAO;QACP,WAAW;QACX,QAAQ;QACR,cAAc;QACd,OAAO,EAAE,CAAC,KAAY,EAAE,EAAE;YACxB,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,YAAY,EAAE,CAAC;QACjB,CAAC;QACD,SAAS;QACT,YAAY,EAAE,WAAW,IAAI,MAAM;QACnC,eAAe;QACf,UAAU,EAAE,MAAM;QAClB,YAAY,EAAE,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI;QAC5C,sBAAsB,EAAE,uBAAuB;KAChD,CAAC;IAEF,MAAM,SAAS,GAAG,WAAW,CAAC,gCAAgC,CAAC,CAAC;IAEhE,MAAM,eAAe,GAAG,GAAG,EAAE;QAC3B,MAAM,QAAQ,GAAwC,OAAO,CAAC;QAC9D,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YACrC,IAAI,QAAQ,IAAI,IAAI,EAAE,CAAC;gBACrB,OAAO,IAAI,CAAC,KAAK,CAAC;YACpB,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC,CAAC,CAAC;QAEH,MAAM,QAAQ,GAAuB,OAAO,CAAC;QAC7C,OAAO,CACL,OAAO,KAAK,MAAM;YAClB,CAAC,CAAC,CAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,IAAI,CAAC,IAAI,CAAC,EAAE;gBACvB,IAAI,QAAQ,IAAI,IAAI,EAAE,CAAC;oBACrB,OAAQ,IAAqB,CAAC,KAAK,CAAC;gBACtC,CAAC;YACH,CAAC,CAAC,CAAA,CACH,CAAC;IACJ,CAAC,CAAC;IAEF,IAAI,OAAO,GAAoB,IAAI,CAAC;IAEpC,MAAM,iBAAiB,GAGK,QAAQ;QAClC,CAAC,CAAC,EAAE;QACJ,CAAC,CAAC;YACE,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU;YACvC,MAAM,EAAE;gBACN,KAAK,EAAE,IAAI,kBAAkB,CAAC,eAAe,CAAC,EAAE;aACjD;SACF,CAAC;IAEN,IAAI,oBAAoB,EAAE,CAAC;QACzB,OAAO,GAAG,CACR,6BAAK,SAAS,EAAE,MAAM,CAAC,kBAAkB,CAAC,KAAM,6BAA6B,CAAC,iBAAiB,CAAC,IAC7F,oBAAoB,CAAC;YACpB,cAAc,EAAE,MAAM,CAAC,2BAA2B,CAAC;YACnD,YAAY,EAAE,WAAW,IAAI,MAAM;YACnC,OAAO,EAAE,YAAY;YACrB,UAAU;YACV,SAAS;YACT,QAAQ;YACR,cAAc;YACd,MAAM;SACP,CAAC,CACE,CACP,CAAC;IACJ,CAAC;SAAM,IAAI,aAAa,EAAE,CAAC;QACzB,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,qBAAqB,EAAE,GAAG,eAAe,EAAE,GACtG,UAAU,CAAC;QACb,MAAM,mBAAmB,GAAG,QAAQ;YAClC,CAAC,CAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,qBAAqB,EAAY;YACvG,CAAC,CAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAY,CAAC;QACvD,MAAM,mBAAmB,GAAG,qBAAqB;YAC/C,CAAC,CAAC,GAAG,MAAA,UAAU,CAAC,SAAS,mCAAI,UAAU,CAAC,IAAI,IAAI,UAAU,CAAC,qBAAqB,EAAE;YAClF,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC;QACzB,MAAM,SAAS,GAAG,CAAC,IAAI,CAAC;QACxB,MAAM,gBAAgB,GAAG,CACvB,oBAAC,cAAc,IACb,GAAG,EAAE,aAAa,KACd,eAAe,KACf,mBAAmB,EACvB,SAAS,EAAE,cAAc,EACzB,SAAS,EAAE,IAAI,CACb,MAAM,CAAC,gBAAgB,CAAC,EACxB,SAAS,IAAI,MAAM,CAAC,aAAa,CAAC,EAClC,eAAe,IAAI,MAAM,CAAC,gBAAgB,CAAC,EAC3C,cAAc,IAAI,MAAM,CAAC,wBAAwB,CAAC,CACnD,EACD,OAAO,EAAE,OAAO,EAChB,SAAS,EAAE,mBAAmB,EAC9B,UAAU,EAAC,MAAM,EACjB,sBAAsB,EAAE,0BAA0B,aAA1B,0BAA0B,uBAA1B,0BAA0B,CAAE,MAAM,EAC1D,sBAAsB,EAAE,0BAA0B,aAA1B,0BAA0B,uBAA1B,0BAA0B,CAAE,MAAM,IAEzD,IAAI,CACU,CAClB,CAAC;QACF,OAAO,GAAG,CACR,6BAAK,IAAI,EAAC,OAAO,gBAAa,SAAS,EAAE,SAAS,EAAE,MAAM,CAAC,uBAAuB,CAAC;YACjF,6BACE,SAAS,EAAE,IAAI,CACb,MAAM,CAAC,cAAc,CAAC,EACtB,MAAM,CAAC,eAAe,CAAC,EACvB,MAAM,CAAC,WAAW,OAAO,EAAE,CAAC,EAC5B,eAAe,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,CAC1C;gBACD,mEAAmE;gBACnE,OAAO,EAAE,aAAa;gBACtB,2EAA2E;gBAC3E,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,eAAe,EAAE,EACnC,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,eAAe,EAAE,KAC7B,6BAA6B,CAAC;oBAChC,MAAM,EAAE,OAAO;oBACf,MAAM,EAAE;wBACN,KAAK,EAAE,IAAI,kBAAkB,CAAC,mBAAmB,CAAC,EAAE;qBACrD;iBACF,CAAC,IAED,gBAAgB,CACb;YACL,CAAC,kBAAkB,IAAI,CACtB,6BACE,SAAS,EAAE,IAAI,CACb,MAAM,CAAC,cAAc,CAAC,EACtB,MAAM,CAAC,kBAAkB,CAAC,EAC1B,eAAe,IAAI,MAAM,CAAC,gBAAgB,CAAC,EAC3C,CAAC,CAAC,QAAQ,IAAI,MAAM,CAAC,kBAAkB,CAAC,EACxC,MAAM,CAAC,WAAW,OAAO,EAAE,CAAC,EAC5B,gBAAgB,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,CAC3C,KACG,6BAA6B,CAAC,iBAAiB,CAAC;gBAEpD,oBAAC,cAAc,IACb,GAAG,EAAE,UAAU,KACX,gBAAgB,EACpB,SAAS,EAAE,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE;wBAC1C,CAAC,MAAM,CAAC,gCAAgC,CAAC,CAAC,EAAE,cAAc;qBAC3D,CAAC,EACF,sBAAsB,EAAE,KAAK,IAE5B,QAAQ,CACM,CACb,CACP,CACG,CACP,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,OAAO,GAAG,CACR,6BAAK,SAAS,EAAE,MAAM,CAAC,kBAAkB,CAAC,KAAM,6BAA6B,CAAC,iBAAiB,CAAC;YAC9F,oBAAC,cAAc,IACb,GAAG,EAAE,UAAU,EACf,EAAE,EAAE,SAAS,KACT,gBAAgB,EACpB,SAAS,EAAE,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE;oBAC1C,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,EAAE,cAAc;oBACtC,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,cAAc,IAAI,CAAC,CAAC,OAAO;iBAC9C,CAAC,EACF,SAAS,EAAE,cAAc,EACzB,KAAK,EAAE,eAAe,EAAE,EACxB,SAAS,EAAE,SAAS,IAEnB,QAAQ,CACM,CACb,CACP,CAAC;IACJ,CAAC;IAED,MAAM,SAAS,GAAG,KAAK,IAAI,WAAW,CAAC;IACvC,MAAM,QAAQ,GAAG,WAAW,CAAC,+BAA+B,CAAC,CAAC;IAC9D,MAAM,QAAQ,GAAG,WAAW,CAAC,+BAA+B,CAAC,CAAC;IAE9D,MAAM,SAAS,GAAG,YAAY,IAAI,CAAC,CAAC,cAAc,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,CAAC;IACjF,MAAM,UAAU,GAAG,YAAY,IAAI,CAAC,CAAC,cAAc,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC;IAEhF,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IACjE,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,cAAc,CAAC,aAAa,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC;IACnF,MAAM,YAAY,GAAG,UAAU,CAAC,CAAC,CAAC,oBAAoB,aAApB,oBAAoB,uBAApB,oBAAoB,CAAG,YAAY,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAE/F,MAAM,cAAc,GAAG,iBAAiB,CAAC;QACvC,UAAU,EAAE,UAAU;QACtB,SAAS;QACT,OAAO;QACP,oBAAoB,EAAE,YAAY;KACnC,CAAC,CAAC;IAEH,+EAA+E;IAC/E,sCAAsC;IACtC,MAAM,wBAAwB,GAAG,YAAY,CAAC,CAAC,CAAC,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,4BAA4B,CAAC,CAAC,CAAC,SAAS,CAAC;IACtG,MAAM,EAAE,aAAa,EAAE,sBAAsB,EAAE,aAAa,EAAE,sBAAsB,EAAE,GAAG,oBAAoB,CAC3G,YAAY,CAAC,CAAC,CAAC,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,4BAA4B,CAAC,CAAC,CAAC,SAAS,CACrE,CAAC;IAEF,MAAM,sBAAsB,GAAG,CAAC,SAAS,IAAI,CAAC,UAAU,IAAI,OAAO,KAAK,MAAM,IAAI,OAAO,KAAK,aAAa,CAAC;IAE5G,MAAM,iBAAiB,GAAG,UAAU,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI,UAAU,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;IAEjG,MAAM,aAAa,GAAG,YAAY,CAAC,CAAC,CAAC,CACnC,oBAAC,oBAAoB,IACnB,GAAG,EAAE,SAAS,EACd,KAAK,EAAE,cAAc,EACrB,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,EACxD,WAAW,EAAE,oBAAoB,EACjC,SAAS,EAAE,kBAAkB,EAC7B,cAAc,EAAE,uBAAuB,EACvC,qBAAqB,EAAE;YACrB,uBAAuB,EAAE,iBAAiB,aAAjB,iBAAiB,cAAjB,iBAAiB,GAAI,EAAE;YAChD,WAAW,EAAE,MAAM;YACnB,eAAe,EAAE,MAAM;SACxB,GACD,CACH,CAAC,CAAC,CAAC,IAAI,CAAC;IAET,MAAM,EAAE,kBAAkB,EAAE,GAAG,SAAS,EAAE,CAAC;IAC3C,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,OAAO,EAAE,CAAC;YACZ,kBAAkB,CAAC,OAAO,EAAE,CAAC;YAC7B,OAAO,GAAG,EAAE;gBACV,uDAAuD;gBACvD,kBAAkB,CAAC,OAAO,EAAE,CAAC;YAC/B,CAAC,CAAC;QACJ,CAAC;IACH,CAAC,EAAE,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC,CAAC;IAElC,OAAO,CACL,gCACM,SAAS,EACb,SAAS,EAAE,SAAS,EACpB,OAAO,EAAE,OAAO,EAChB,WAAW,EAAE,gBAAgB,EAC7B,WAAW,EAAE,gBAAgB,EAC7B,SAAS,EAAE,IAAI,CACb,MAAM,CAAC,iBAAiB,CAAC,EACzB,MAAM,CAAC,WAAW,OAAO,EAAE,CAAC,EAC5B,cAAc,IAAI,MAAM,CAAC,YAAY,CAAC,EACtC,SAAS,CAAC,SAAS,CACpB,eACU,gBAAgB,IAAI,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,EAC9D,GAAG,EAAE,iBAAiB;QAEtB,oBAAC,QAAQ,IACP,IAAI,EAAE,WAAW,IAAI,MAAM,EAC3B,oBAAoB,EAAE,OAAO,KAAK,YAAY,EAC9C,QAAQ,EAAE,gBAAgB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,EAClD,eAAe,EAAE,KAAK,EACtB,gBAAgB,EAAE,gBAAgB,EAClC,kBAAkB,EAAE,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,EACrD,cAAc,EAAE,GAAG,EAAE,CAAC,cAAc,EAAE,EACtC,YAAY,EAAE,oBAAoB,EAClC,OAAO,EAAE,OAAO,EAChB,UAAU,EAAE,UAAU,EACtB,MAAM,EAAE,aAAa,EACrB,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,EAC7C,SAAS,EAAE,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,EAC/C,MAAM,EACJ,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,CACvB,oBAAC,cAAc,IAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,SAAS,GAAI,CACxG,CAAC,CAAC,CAAC,IAAI,EAEV,OAAO,EACL;gBACG,SAAS,IAAI,CACZ,6BAAK,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,EAAE,EAAE,QAAQ;oBACxC,KAAK,IAAI,CACR,6BAAK,SAAS,EAAE,MAAM,CAAC,KAAK;wBAC1B,oBAAC,WAAW,IACV,QAAQ,EAAC,WAAW,EACpB,UAAU,EAAC,MAAM,EACjB,KAAK,EAAC,SAAS,EACf,WAAW,EAAC,IAAI,EAChB,MAAM,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE,IAEzC,KAAK,CACM,CACV,CACP;oBACA,WAAW,IAAI,CACd,oBAAC,WAAW,IAAC,QAAQ,EAAC,QAAQ;wBAC5B,8BAAM,SAAS,EAAE,MAAM,CAAC,WAAW,IAAG,WAAW,CAAQ,CAC7C,CACf,CACG,CACP;gBACD,oBAAC,WAAW,IACV,IAAI,EAAE,WAAW,IAAI,MAAM,EAC3B,QAAQ,EAAC,QAAQ,EACjB,IAAI,EAAC,MAAM,EACX,gBAAgB,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,EAChC,WAAW,EAAC,IAAI,EAChB,mBAAmB,EAAE,IAAI,EACzB,SAAS,EAAE,SAAS,EACpB,cAAc,EAAE,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,EACrF,eAAe,EAAE,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,EAC9D,UAAU,EAAC,UAAU;oBAErB,oBAAC,SAAS,IACR,KAAK,EAAE,aAAa,EACpB,cAAc,EAAE,cAAc,EAC9B,aAAa,EAAE,aAAa,EAC5B,mBAAmB,EAAE,oBAAoB,EACzC,UAAU,EAAE,UAAU,EACtB,aAAa,EAAE,aAAa,EAC5B,mBAAmB,EAAE,mBAAmB,EACxC,UAAU,EAAE,UAAU,EACtB,cAAc,EAAE,IAAI,EACpB,aAAa,EAAE,aAAa,EAC5B,gBAAgB,EAAE,gBAAgB,EAClC,OAAO,EAAE,OAAO,EAChB,4BAA4B,EAAE,4BAA4B,EAC1D,SAAS,EAAE,SAAS,EACpB,QAAQ,EAAE,QAAQ,EAClB,UAAU,EAAE,UAAU,EACtB,aAAa,EAAE,cAAc,EAC7B,gBAAgB,EAAE,YAAY,EAC9B,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,EACzC,sBAAsB,EAAE,wBAAwB,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,SAAS,GACrF,CACU;gBACb,sBAAsB,CACtB,GAEL,CACE,CACP,CAAC;AACJ,CAAC,CACF,CAAC;AAEF,eAAe,sBAAsB,CAAC","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React, { useEffect, useImperativeHandle, useMemo, useRef } from 'react';\nimport clsx from 'clsx';\n\nimport { isThemeActive, Theme, useUniqueId, warnOnce } from '@cloudscape-design/component-toolkit/internal';\nimport { getAnalyticsMetadataAttribute } from '@cloudscape-design/component-toolkit/internal/analytics-metadata';\n\nimport InternalBox from '../box/internal';\nimport { ButtonProps } from '../button/interfaces';\nimport { InternalButton, InternalButtonProps } from '../button/internal';\nimport Dropdown from '../dropdown/internal';\nimport { IconProps } from '../icon/interfaces';\nimport { useFunnel } from '../internal/analytics/hooks/use-funnel.js';\nimport { getBaseProps } from '../internal/base-component';\nimport DropdownFooter from '../internal/components/dropdown-footer';\nimport { useDropdownStatus } from '../internal/components/dropdown-status';\nimport OptionsList from '../internal/components/options-list';\nimport useHiddenDescription from '../internal/hooks/use-hidden-description';\nimport { useMobile } from '../internal/hooks/use-mobile';\nimport { useVisualRefresh } from '../internal/hooks/use-visual-mode/index.js';\nimport { isDevelopment } from '../internal/is-development';\nimport { spinWhenOpen } from '../internal/styles/motion/utils';\nimport { checkSafeUrl } from '../internal/utils/check-safe-url';\nimport {\n GeneratedAnalyticsMetadataButtonDropdownCollapse,\n GeneratedAnalyticsMetadataButtonDropdownExpand,\n} from './analytics-metadata/interfaces.js';\nimport ButtonDropdownFilter from './filter';\nimport { ButtonDropdownProps } from './interfaces';\nimport { InternalButtonDropdownProps, InternalItem } from './internal-interfaces';\nimport ItemsList from './items-list';\nimport { countLeafItems } from './utils/filter-items';\nimport { useButtonDropdown } from './utils/use-button-dropdown';\nimport { isLinkItem } from './utils/utils.js';\n\nimport analyticsSelectors from './analytics-metadata/styles.css.js';\nimport styles from './styles.css.js';\n\nconst InternalButtonDropdown = React.forwardRef(\n (\n {\n items,\n variant = 'normal',\n loading = false,\n loadingText,\n disabled = false,\n disabledReason,\n expandableGroups = false,\n children,\n onItemClick,\n onItemFollow,\n customTriggerBuilder,\n expandToViewport,\n ariaLabel,\n iconName,\n iconAlt,\n iconUrl,\n iconSvg,\n title,\n description,\n preferCenter,\n mainAction,\n showMainActionOnly,\n __internalRootRef,\n analyticsMetadataTransformer,\n linkStyle,\n fullWidth,\n position,\n nativeMainActionAttributes,\n nativeTriggerAttributes,\n renderItem,\n filteringType,\n filteringPlaceholder,\n filteringAriaLabel,\n filteringClearAriaLabel,\n filteringResultsText,\n noMatch,\n i18nStrings,\n compactTrigger,\n ariaDescribedby,\n ...props\n }: InternalButtonDropdownProps,\n ref: React.Ref<ButtonDropdownProps.Ref>\n ) => {\n const isInRestrictedView = useMobile();\n const dropdownId = useUniqueId('dropdown');\n const menuId = useUniqueId('button-dropdown-menu');\n const hasFiltering = filteringType === 'auto';\n for (const item of items) {\n if (isLinkItem(item)) {\n checkSafeUrl('ButtonDropdown', item.href);\n }\n }\n if (mainAction) {\n checkSafeUrl('ButtonDropdown', mainAction.href);\n }\n\n const hasCustomTriggerIcon = !!(iconName || iconUrl || iconSvg);\n\n if (isDevelopment) {\n if (mainAction && variant !== 'primary' && variant !== 'normal') {\n warnOnce('ButtonDropdown', 'Main action is only supported for \"primary\" and \"normal\" component variant.');\n }\n if (hasCustomTriggerIcon && variant !== 'icon' && variant !== 'inline-icon') {\n warnOnce('ButtonDropdown', 'Custom icon is only supported for \"icon\" and \"inline-icon\" component variant.');\n }\n }\n const hasMainAction = mainAction && (variant === 'primary' || variant === 'normal');\n const isVisualRefresh = useVisualRefresh();\n const isOneTheme = isThemeActive(Theme.OneTheme);\n\n const {\n isOpen,\n targetItem,\n isHighlighted,\n isKeyboardHighlight,\n isExpanded,\n highlightItem,\n onKeyDown,\n onKeyUp,\n onItemActivate,\n onGroupToggle,\n onDropdownFocusLeave,\n toggleDropdown,\n closeDropdown,\n setIsUsingMouse,\n filteringValue,\n setFilteringValue,\n filteredItems,\n showExpandableGroups,\n } = useButtonDropdown({\n items,\n onItemClick,\n onItemFollow,\n // Scroll is unnecessary when moving focus back to the dropdown trigger.\n onReturnFocus: () => triggerRef.current?.focus({ preventScroll: true }),\n expandToViewport,\n hasExpandableGroups: expandableGroups,\n isInRestrictedView,\n hasFiltering,\n });\n\n const filterRef = useRef<HTMLInputElement>(null);\n\n useEffect(() => {\n // Focus the filter input when it opens.\n if (isOpen && hasFiltering) {\n filterRef.current?.focus();\n }\n }, [isOpen, hasFiltering]);\n\n const handleMouseEvent = () => {\n setIsUsingMouse(true);\n };\n\n const baseProps = getBaseProps(props);\n\n const mainActionRef = useRef<HTMLElement>(null);\n const triggerRef = useRef<HTMLElement>(null);\n\n useImperativeHandle(\n ref,\n () => ({\n focus(...args) {\n (hasMainAction ? mainActionRef : triggerRef).current?.focus(...args);\n },\n focusDropdownTrigger(...args) {\n triggerRef.current?.focus(...args);\n },\n }),\n [mainActionRef, triggerRef, hasMainAction]\n );\n\n const clickHandler = () => {\n if (!loading && !disabled) {\n // Prevent moving highlight on mobiles to avoid disabled state reason popup if defined.\n toggleDropdown({ moveHighlightOnOpen: !isInRestrictedView });\n }\n };\n\n const canBeOpened = !loading && !disabled;\n\n const canBeFullWidth = !!fullWidth && (variant === 'primary' || variant === 'normal');\n\n const triggerVariant = variant === 'navigation' ? undefined : variant === 'inline-icon' ? 'inline-icon' : variant;\n const iconProps: Partial<ButtonProps & { __iconClass?: string; __iconSize?: IconProps.Size }> =\n variant === 'icon' || variant === 'inline-icon'\n ? {\n iconName: hasCustomTriggerIcon ? iconName : 'ellipsis',\n iconAlt,\n iconUrl,\n iconSvg,\n }\n : {\n iconName: isOneTheme ? 'angle-down' : 'caret-down-filled',\n __iconSize: isOneTheme ? 'x-small' : 'normal',\n iconAlign: 'right',\n __iconClass: spinWhenOpen(styles, 'rotate', canBeOpened && isOpen),\n };\n\n const baseTriggerProps: InternalButtonProps = {\n className: clsx(\n styles['trigger-button'],\n styles['test-utils-button-trigger'],\n analyticsSelectors['trigger-label']\n ),\n ...iconProps,\n variant: triggerVariant,\n loading,\n loadingText,\n disabled,\n disabledReason,\n onClick: (event: Event) => {\n event.preventDefault();\n clickHandler();\n },\n ariaLabel,\n ariaExpanded: canBeOpened && isOpen,\n ariaDescribedby,\n formAction: 'none',\n ariaHaspopup: hasFiltering ? 'dialog' : true,\n nativeButtonAttributes: nativeTriggerAttributes,\n };\n\n const triggerId = useUniqueId('awsui-button-dropdown__trigger');\n\n const triggerHasBadge = () => {\n const groupKey: keyof ButtonDropdownProps.ItemGroup = 'items';\n const flatItems = items.flatMap(item => {\n if (groupKey in item) {\n return item.items;\n }\n return item;\n });\n\n const badgeKey: keyof InternalItem = 'badge';\n return (\n variant === 'icon' &&\n !!flatItems?.find(item => {\n if (badgeKey in item) {\n return (item as InternalItem).badge;\n }\n })\n );\n };\n\n let trigger: React.ReactNode = null;\n\n const analyticsMetadata:\n | GeneratedAnalyticsMetadataButtonDropdownExpand\n | GeneratedAnalyticsMetadataButtonDropdownCollapse\n | Record<string, never> = disabled\n ? {}\n : {\n action: !isOpen ? 'expand' : 'collapse',\n detail: {\n label: `.${analyticsSelectors['trigger-label']}`,\n },\n };\n\n if (customTriggerBuilder) {\n trigger = (\n <div className={styles['dropdown-trigger']} {...getAnalyticsMetadataAttribute(analyticsMetadata)}>\n {customTriggerBuilder({\n testUtilsClass: styles['test-utils-button-trigger'],\n ariaExpanded: canBeOpened && isOpen,\n onClick: clickHandler,\n triggerRef,\n ariaLabel,\n disabled,\n disabledReason,\n isOpen,\n })}\n </div>\n );\n } else if (hasMainAction) {\n const { text, iconName, iconAlt, iconSvg, iconUrl, external, externalIconAriaLabel, ...mainActionProps } =\n mainAction;\n const mainActionIconProps = external\n ? ({ iconName: 'external', iconAlign: 'right', target: '_blank', rel: 'noopener noreferrer' } as const)\n : ({ iconName, iconAlt, iconSvg, iconUrl } as const);\n const mainActionAriaLabel = externalIconAriaLabel\n ? `${mainAction.ariaLabel ?? mainAction.text} ${mainAction.externalIconAriaLabel}`\n : mainAction.ariaLabel;\n const hasNoText = !text;\n const mainActionButton = (\n <InternalButton\n ref={mainActionRef}\n {...mainActionProps}\n {...mainActionIconProps}\n fullWidth={canBeFullWidth}\n className={clsx(\n styles['trigger-button'],\n hasNoText && styles['has-no-text'],\n isVisualRefresh && styles['visual-refresh'],\n canBeFullWidth && styles['main-action-full-width']\n )}\n variant={variant}\n ariaLabel={mainActionAriaLabel}\n formAction=\"none\"\n nativeAnchorAttributes={nativeMainActionAttributes?.anchor}\n nativeButtonAttributes={nativeMainActionAttributes?.button}\n >\n {text}\n </InternalButton>\n );\n trigger = (\n <div role=\"group\" aria-label={ariaLabel} className={styles['split-trigger-wrapper']}>\n <div\n className={clsx(\n styles['trigger-item'],\n styles['split-trigger'],\n styles[`variant-${variant}`],\n mainActionProps.loading && styles.loading\n )}\n // Close dropdown upon main action click unless event is cancelled.\n onClick={closeDropdown}\n // Prevent keyboard events from propagation to the button dropdown handler.\n onKeyDown={e => e.stopPropagation()}\n onKeyUp={e => e.stopPropagation()}\n {...getAnalyticsMetadataAttribute({\n action: 'click',\n detail: {\n label: `.${analyticsSelectors['main-action-label']}`,\n },\n })}\n >\n {mainActionButton}\n </div>\n {!showMainActionOnly && (\n <div\n className={clsx(\n styles['trigger-item'],\n styles['dropdown-trigger'],\n isVisualRefresh && styles['visual-refresh'],\n !!children && styles['has-trigger-text'],\n styles[`variant-${variant}`],\n baseTriggerProps.loading && styles.loading\n )}\n {...getAnalyticsMetadataAttribute(analyticsMetadata)}\n >\n <InternalButton\n ref={triggerRef}\n {...baseTriggerProps}\n className={clsx(baseTriggerProps.className, {\n [styles['main-action-trigger-full-width']]: canBeFullWidth,\n })}\n __emitPerformanceMarks={false}\n >\n {children}\n </InternalButton>\n </div>\n )}\n </div>\n );\n } else {\n trigger = (\n <div className={styles['dropdown-trigger']} {...getAnalyticsMetadataAttribute(analyticsMetadata)}>\n <InternalButton\n ref={triggerRef}\n id={triggerId}\n {...baseTriggerProps}\n className={clsx(baseTriggerProps.className, {\n [styles['full-width']]: canBeFullWidth,\n [styles.loading]: canBeFullWidth && !!loading,\n })}\n __compact={compactTrigger}\n badge={triggerHasBadge()}\n fullWidth={fullWidth}\n >\n {children}\n </InternalButton>\n </div>\n );\n }\n\n const hasHeader = title || description;\n const headerId = useUniqueId('awsui-button-dropdown__header');\n const footerId = useUniqueId('awsui-button-dropdown__footer');\n\n const isNoMatch = hasFiltering && !!filteringValue && filteredItems.length === 0;\n const isFiltered = hasFiltering && !!filteringValue && filteredItems.length > 0;\n\n const totalCount = useMemo(() => countLeafItems(items), [items]);\n const matchesCount = useMemo(() => countLeafItems(filteredItems), [filteredItems]);\n const filteredText = isFiltered ? filteringResultsText?.(matchesCount, totalCount) : undefined;\n\n const dropdownStatus = useDropdownStatus({\n statusType: 'finished',\n isNoMatch,\n noMatch,\n filteringResultsText: filteredText,\n });\n\n // Only create a filteringDescription element if filtering is actually enabled,\n // not just if the string is provided.\n const filteringItemDescription = hasFiltering ? i18nStrings?.filteringItemAriaDescription : undefined;\n const { descriptionEl: filteringDescriptionEl, descriptionId: filteringDescriptionId } = useHiddenDescription(\n hasFiltering ? i18nStrings?.filteringItemAriaDescription : undefined\n );\n\n const shouldLabelWithTrigger = !ariaLabel && !mainAction && variant !== 'icon' && variant !== 'inline-icon';\n\n const highlightedItemId = targetItem && targetItem.id ? `${menuId}-${targetItem.id}` : undefined;\n\n const filterElement = hasFiltering ? (\n <ButtonDropdownFilter\n ref={filterRef}\n value={filteringValue}\n onChange={event => setFilteringValue(event.detail.value)}\n placeholder={filteringPlaceholder}\n ariaLabel={filteringAriaLabel}\n clearAriaLabel={filteringClearAriaLabel}\n nativeInputAttributes={{\n 'aria-activedescendant': highlightedItemId ?? '',\n 'aria-owns': menuId,\n 'aria-controls': menuId,\n }}\n />\n ) : null;\n\n const { loadingButtonCount } = useFunnel();\n useEffect(() => {\n if (loading) {\n loadingButtonCount.current++;\n return () => {\n // eslint-disable-next-line react-hooks/exhaustive-deps\n loadingButtonCount.current--;\n };\n }\n }, [loading, loadingButtonCount]);\n\n return (\n <div\n {...baseProps}\n onKeyDown={onKeyDown}\n onKeyUp={onKeyUp}\n onMouseDown={handleMouseEvent}\n onMouseMove={handleMouseEvent}\n className={clsx(\n styles['button-dropdown'],\n styles[`variant-${variant}`],\n canBeFullWidth && styles['full-width'],\n baseProps.className\n )}\n aria-owns={expandToViewport && isOpen ? dropdownId : undefined}\n ref={__internalRootRef}\n >\n <Dropdown\n open={canBeOpened && isOpen}\n stretchTriggerHeight={variant === 'navigation'}\n minWidth={expandToViewport ? undefined : 'trigger'}\n hideBlockBorder={false}\n expandToViewport={expandToViewport}\n preferredAlignment={preferCenter ? 'center' : 'start'}\n onOutsideClick={() => toggleDropdown()}\n onFocusLeave={onDropdownFocusLeave}\n trigger={trigger}\n dropdownId={dropdownId}\n header={filterElement}\n ariaRole={hasFiltering ? 'dialog' : undefined}\n ariaLabel={hasFiltering ? ariaLabel : undefined}\n footer={\n dropdownStatus.content ? (\n <DropdownFooter content={isOpen ? dropdownStatus.content : null} id={footerId} hasItems={!isNoMatch} />\n ) : null\n }\n content={\n <>\n {hasHeader && (\n <div className={styles.header} id={headerId}>\n {title && (\n <div className={styles.title}>\n <InternalBox\n fontSize=\"heading-s\"\n fontWeight=\"bold\"\n color=\"inherit\"\n tagOverride=\"h2\"\n margin={{ vertical: 'n', horizontal: 'n' }}\n >\n {title}\n </InternalBox>\n </div>\n )}\n {description && (\n <InternalBox fontSize=\"body-s\">\n <span className={styles.description}>{description}</span>\n </InternalBox>\n )}\n </div>\n )}\n <OptionsList\n open={canBeOpened && isOpen}\n position=\"static\"\n role=\"menu\"\n nativeAttributes={{ id: menuId }}\n tagOverride=\"ul\"\n decreaseBlockMargin={true}\n ariaLabel={ariaLabel}\n ariaLabelledby={hasHeader ? headerId : shouldLabelWithTrigger ? triggerId : undefined}\n ariaDescribedby={dropdownStatus.content ? footerId : undefined}\n statusType=\"finished\"\n >\n <ItemsList\n items={filteredItems}\n onItemActivate={onItemActivate}\n onGroupToggle={onGroupToggle}\n hasExpandableGroups={showExpandableGroups}\n targetItem={targetItem}\n isHighlighted={isHighlighted}\n isKeyboardHighlight={isKeyboardHighlight}\n isExpanded={isExpanded}\n lastInDropdown={true}\n highlightItem={highlightItem}\n expandToViewport={expandToViewport}\n variant={variant}\n analyticsMetadataTransformer={analyticsMetadataTransformer}\n linkStyle={linkStyle}\n position={position}\n renderItem={renderItem}\n filteringText={filteringValue}\n filteringEnabled={hasFiltering}\n menuId={hasFiltering ? menuId : undefined}\n filteringDescriptionId={filteringItemDescription ? filteringDescriptionId : undefined}\n />\n </OptionsList>\n {filteringDescriptionEl}\n </>\n }\n />\n </div>\n );\n }\n);\n\nexport default InternalButtonDropdown;\n"]}
|
|
1
|
+
{"version":3,"file":"internal.js","sourceRoot":"","sources":["../../../src/button-dropdown/internal.tsx"],"names":[],"mappings":"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","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React, { useEffect, useImperativeHandle, useMemo, useRef } from 'react';\nimport clsx from 'clsx';\n\nimport { isThemeActive, Theme, useUniqueId, warnOnce } from '@cloudscape-design/component-toolkit/internal';\nimport { getAnalyticsMetadataAttribute } from '@cloudscape-design/component-toolkit/internal/analytics-metadata';\n\nimport InternalBox from '../box/internal';\nimport { ButtonProps } from '../button/interfaces';\nimport { InternalButton, InternalButtonProps } from '../button/internal';\nimport Dropdown from '../dropdown/internal';\nimport { IconProps } from '../icon/interfaces';\nimport { useFunnel } from '../internal/analytics/hooks/use-funnel.js';\nimport { getBaseProps } from '../internal/base-component';\nimport DropdownFooter from '../internal/components/dropdown-footer';\nimport { useDropdownStatus } from '../internal/components/dropdown-status';\nimport OptionsList from '../internal/components/options-list';\nimport useHiddenDescription from '../internal/hooks/use-hidden-description';\nimport { useMobile } from '../internal/hooks/use-mobile';\nimport { useVisualRefresh } from '../internal/hooks/use-visual-mode/index.js';\nimport { isDevelopment } from '../internal/is-development';\nimport { spinWhenOpen } from '../internal/styles/motion/utils';\nimport { checkSafeUrl } from '../internal/utils/check-safe-url';\nimport {\n GeneratedAnalyticsMetadataButtonDropdownCollapse,\n GeneratedAnalyticsMetadataButtonDropdownExpand,\n} from './analytics-metadata/interfaces.js';\nimport ButtonDropdownFilter from './filter';\nimport { ButtonDropdownProps } from './interfaces';\nimport { InternalButtonDropdownProps, InternalItem } from './internal-interfaces';\nimport ItemsList from './items-list';\nimport { countLeafItems } from './utils/filter-items';\nimport { useButtonDropdown } from './utils/use-button-dropdown';\nimport { isLinkItem } from './utils/utils.js';\n\nimport analyticsSelectors from './analytics-metadata/styles.css.js';\nimport styles from './styles.css.js';\n\nconst InternalButtonDropdown = React.forwardRef(\n (\n {\n items,\n variant = 'normal',\n loading = false,\n loadingText,\n disabled = false,\n disabledReason,\n expandableGroups = false,\n children,\n onItemClick,\n onItemFollow,\n customTriggerBuilder,\n expandToViewport,\n ariaLabel,\n iconName,\n iconAlt,\n iconUrl,\n iconSvg,\n title,\n description,\n preferCenter,\n mainAction,\n showMainActionOnly,\n __internalRootRef,\n analyticsMetadataTransformer,\n linkStyle,\n fullWidth,\n position,\n nativeMainActionAttributes,\n nativeTriggerAttributes,\n renderItem,\n filteringType,\n filteringPlaceholder,\n filteringAriaLabel,\n filteringClearAriaLabel,\n filteringResultsText,\n noMatch,\n i18nStrings,\n compactTrigger,\n ariaDescribedby,\n ...props\n }: InternalButtonDropdownProps,\n ref: React.Ref<ButtonDropdownProps.Ref>\n ) => {\n const isInRestrictedView = useMobile();\n const dropdownId = useUniqueId('dropdown');\n const menuId = useUniqueId('button-dropdown-menu');\n const hasFiltering = filteringType === 'auto';\n for (const item of items) {\n if (isLinkItem(item)) {\n checkSafeUrl('ButtonDropdown', item.href);\n }\n }\n if (mainAction) {\n checkSafeUrl('ButtonDropdown', mainAction.href);\n }\n\n const hasCustomTriggerIcon = !!(iconName || iconUrl || iconSvg);\n\n if (isDevelopment) {\n if (mainAction && variant !== 'primary' && variant !== 'normal') {\n warnOnce('ButtonDropdown', 'Main action is only supported for \"primary\" and \"normal\" component variant.');\n }\n if (hasCustomTriggerIcon && variant !== 'icon' && variant !== 'inline-icon') {\n warnOnce('ButtonDropdown', 'Custom icon is only supported for \"icon\" and \"inline-icon\" component variant.');\n }\n }\n const hasMainAction = mainAction && (variant === 'primary' || variant === 'normal');\n const isVisualRefresh = useVisualRefresh();\n const isOneTheme = isThemeActive(Theme.OneTheme);\n\n const {\n isOpen,\n targetItem,\n isHighlighted,\n isKeyboardHighlight,\n isExpanded,\n highlightItem,\n onKeyDown,\n onKeyUp,\n onItemActivate,\n onGroupToggle,\n onDropdownFocusLeave,\n onDropdownBlur,\n toggleDropdown,\n closeDropdown,\n setIsUsingMouse,\n filteringValue,\n setFilteringValue,\n filteredItems,\n showExpandableGroups,\n } = useButtonDropdown({\n items,\n onItemClick,\n onItemFollow,\n // Scroll is unnecessary when moving focus back to the dropdown trigger.\n onReturnFocus: () => triggerRef.current?.focus({ preventScroll: true }),\n expandToViewport,\n hasExpandableGroups: expandableGroups,\n isInRestrictedView,\n hasFiltering,\n });\n\n const filterRef = useRef<HTMLInputElement>(null);\n\n useEffect(() => {\n // Focus the filter input when it opens.\n if (isOpen && hasFiltering) {\n filterRef.current?.focus();\n }\n }, [isOpen, hasFiltering]);\n\n const handleMouseEvent = () => {\n setIsUsingMouse(true);\n };\n\n const baseProps = getBaseProps(props);\n\n const mainActionRef = useRef<HTMLElement>(null);\n const triggerRef = useRef<HTMLElement>(null);\n\n useImperativeHandle(\n ref,\n () => ({\n focus(...args) {\n (hasMainAction ? mainActionRef : triggerRef).current?.focus(...args);\n },\n focusDropdownTrigger(...args) {\n triggerRef.current?.focus(...args);\n },\n }),\n [mainActionRef, triggerRef, hasMainAction]\n );\n\n const clickHandler = () => {\n if (!loading && !disabled) {\n // Prevent moving highlight on mobiles to avoid disabled state reason popup if defined.\n toggleDropdown({ moveHighlightOnOpen: !isInRestrictedView });\n }\n };\n\n const canBeOpened = !loading && !disabled;\n\n const canBeFullWidth = !!fullWidth && (variant === 'primary' || variant === 'normal');\n\n const triggerVariant = variant === 'navigation' ? undefined : variant === 'inline-icon' ? 'inline-icon' : variant;\n const iconProps: Partial<ButtonProps & { __iconClass?: string; __iconSize?: IconProps.Size }> =\n variant === 'icon' || variant === 'inline-icon'\n ? {\n iconName: hasCustomTriggerIcon ? iconName : 'ellipsis',\n iconAlt,\n iconUrl,\n iconSvg,\n }\n : {\n iconName: isOneTheme ? 'angle-down' : 'caret-down-filled',\n __iconSize: isOneTheme ? 'x-small' : 'normal',\n iconAlign: 'right',\n __iconClass: spinWhenOpen(styles, 'rotate', canBeOpened && isOpen),\n };\n\n const baseTriggerProps: InternalButtonProps = {\n className: clsx(\n styles['trigger-button'],\n styles['test-utils-button-trigger'],\n analyticsSelectors['trigger-label']\n ),\n ...iconProps,\n variant: triggerVariant,\n loading,\n loadingText,\n disabled,\n disabledReason,\n onClick: (event: Event) => {\n event.preventDefault();\n clickHandler();\n },\n ariaLabel,\n ariaExpanded: canBeOpened && isOpen,\n ariaDescribedby,\n formAction: 'none',\n ariaHaspopup: hasFiltering ? 'dialog' : true,\n nativeButtonAttributes: nativeTriggerAttributes,\n };\n\n const triggerId = useUniqueId('awsui-button-dropdown__trigger');\n\n const triggerHasBadge = () => {\n const groupKey: keyof ButtonDropdownProps.ItemGroup = 'items';\n const flatItems = items.flatMap(item => {\n if (groupKey in item) {\n return item.items;\n }\n return item;\n });\n\n const badgeKey: keyof InternalItem = 'badge';\n return (\n variant === 'icon' &&\n !!flatItems?.find(item => {\n if (badgeKey in item) {\n return (item as InternalItem).badge;\n }\n })\n );\n };\n\n let trigger: React.ReactNode = null;\n\n const analyticsMetadata:\n | GeneratedAnalyticsMetadataButtonDropdownExpand\n | GeneratedAnalyticsMetadataButtonDropdownCollapse\n | Record<string, never> = disabled\n ? {}\n : {\n action: !isOpen ? 'expand' : 'collapse',\n detail: {\n label: `.${analyticsSelectors['trigger-label']}`,\n },\n };\n\n if (customTriggerBuilder) {\n trigger = (\n <div className={styles['dropdown-trigger']} {...getAnalyticsMetadataAttribute(analyticsMetadata)}>\n {customTriggerBuilder({\n testUtilsClass: styles['test-utils-button-trigger'],\n ariaExpanded: canBeOpened && isOpen,\n onClick: clickHandler,\n triggerRef,\n ariaLabel,\n disabled,\n disabledReason,\n isOpen,\n })}\n </div>\n );\n } else if (hasMainAction) {\n const { text, iconName, iconAlt, iconSvg, iconUrl, external, externalIconAriaLabel, ...mainActionProps } =\n mainAction;\n const mainActionIconProps = external\n ? ({ iconName: 'external', iconAlign: 'right', target: '_blank', rel: 'noopener noreferrer' } as const)\n : ({ iconName, iconAlt, iconSvg, iconUrl } as const);\n const mainActionAriaLabel = externalIconAriaLabel\n ? `${mainAction.ariaLabel ?? mainAction.text} ${mainAction.externalIconAriaLabel}`\n : mainAction.ariaLabel;\n const hasNoText = !text;\n const mainActionButton = (\n <InternalButton\n ref={mainActionRef}\n {...mainActionProps}\n {...mainActionIconProps}\n fullWidth={canBeFullWidth}\n className={clsx(\n styles['trigger-button'],\n hasNoText && styles['has-no-text'],\n isVisualRefresh && styles['visual-refresh'],\n canBeFullWidth && styles['main-action-full-width']\n )}\n variant={variant}\n ariaLabel={mainActionAriaLabel}\n formAction=\"none\"\n nativeAnchorAttributes={nativeMainActionAttributes?.anchor}\n nativeButtonAttributes={nativeMainActionAttributes?.button}\n >\n {text}\n </InternalButton>\n );\n trigger = (\n <div role=\"group\" aria-label={ariaLabel} className={styles['split-trigger-wrapper']}>\n <div\n className={clsx(\n styles['trigger-item'],\n styles['split-trigger'],\n styles[`variant-${variant}`],\n mainActionProps.loading && styles.loading\n )}\n // Close dropdown upon main action click unless event is cancelled.\n onClick={closeDropdown}\n // Prevent keyboard events from propagation to the button dropdown handler.\n onKeyDown={e => e.stopPropagation()}\n onKeyUp={e => e.stopPropagation()}\n {...getAnalyticsMetadataAttribute({\n action: 'click',\n detail: {\n label: `.${analyticsSelectors['main-action-label']}`,\n },\n })}\n >\n {mainActionButton}\n </div>\n {!showMainActionOnly && (\n <div\n className={clsx(\n styles['trigger-item'],\n styles['dropdown-trigger'],\n isVisualRefresh && styles['visual-refresh'],\n !!children && styles['has-trigger-text'],\n styles[`variant-${variant}`],\n baseTriggerProps.loading && styles.loading\n )}\n {...getAnalyticsMetadataAttribute(analyticsMetadata)}\n >\n <InternalButton\n ref={triggerRef}\n {...baseTriggerProps}\n className={clsx(baseTriggerProps.className, {\n [styles['main-action-trigger-full-width']]: canBeFullWidth,\n })}\n __emitPerformanceMarks={false}\n >\n {children}\n </InternalButton>\n </div>\n )}\n </div>\n );\n } else {\n trigger = (\n <div className={styles['dropdown-trigger']} {...getAnalyticsMetadataAttribute(analyticsMetadata)}>\n <InternalButton\n ref={triggerRef}\n id={triggerId}\n {...baseTriggerProps}\n className={clsx(baseTriggerProps.className, {\n [styles['full-width']]: canBeFullWidth,\n [styles.loading]: canBeFullWidth && !!loading,\n })}\n __compact={compactTrigger}\n badge={triggerHasBadge()}\n fullWidth={fullWidth}\n >\n {children}\n </InternalButton>\n </div>\n );\n }\n\n const hasHeader = title || description;\n const headerId = useUniqueId('awsui-button-dropdown__header');\n const footerId = useUniqueId('awsui-button-dropdown__footer');\n\n const isNoMatch = hasFiltering && !!filteringValue && filteredItems.length === 0;\n const isFiltered = hasFiltering && !!filteringValue && filteredItems.length > 0;\n\n const totalCount = useMemo(() => countLeafItems(items), [items]);\n const matchesCount = useMemo(() => countLeafItems(filteredItems), [filteredItems]);\n const filteredText = isFiltered ? filteringResultsText?.(matchesCount, totalCount) : undefined;\n\n const dropdownStatus = useDropdownStatus({\n statusType: 'finished',\n isNoMatch,\n noMatch,\n filteringResultsText: filteredText,\n });\n\n // Only create a filteringDescription element if filtering is actually enabled,\n // not just if the string is provided.\n const filteringItemDescription = hasFiltering ? i18nStrings?.filteringItemAriaDescription : undefined;\n const { descriptionEl: filteringDescriptionEl, descriptionId: filteringDescriptionId } = useHiddenDescription(\n hasFiltering ? i18nStrings?.filteringItemAriaDescription : undefined\n );\n\n const shouldLabelWithTrigger = !ariaLabel && !mainAction && variant !== 'icon' && variant !== 'inline-icon';\n\n const highlightedItemId = targetItem && targetItem.id ? `${menuId}-${targetItem.id}` : undefined;\n\n const filterElement = hasFiltering ? (\n <ButtonDropdownFilter\n ref={filterRef}\n value={filteringValue}\n onChange={event => setFilteringValue(event.detail.value)}\n placeholder={filteringPlaceholder}\n ariaLabel={filteringAriaLabel}\n clearAriaLabel={filteringClearAriaLabel}\n nativeInputAttributes={{\n 'aria-activedescendant': highlightedItemId ?? '',\n 'aria-owns': menuId,\n 'aria-controls': menuId,\n }}\n />\n ) : null;\n\n const { loadingButtonCount } = useFunnel();\n useEffect(() => {\n if (loading) {\n loadingButtonCount.current++;\n return () => {\n // eslint-disable-next-line react-hooks/exhaustive-deps\n loadingButtonCount.current--;\n };\n }\n }, [loading, loadingButtonCount]);\n\n return (\n <div\n {...baseProps}\n onKeyDown={onKeyDown}\n onKeyUp={onKeyUp}\n onMouseDown={handleMouseEvent}\n onMouseMove={handleMouseEvent}\n className={clsx(\n styles['button-dropdown'],\n styles[`variant-${variant}`],\n canBeFullWidth && styles['full-width'],\n baseProps.className\n )}\n aria-owns={expandToViewport && isOpen ? dropdownId : undefined}\n ref={__internalRootRef}\n >\n <Dropdown\n open={canBeOpened && isOpen}\n stretchTriggerHeight={variant === 'navigation'}\n minWidth={expandToViewport ? undefined : 'trigger'}\n hideBlockBorder={false}\n expandToViewport={expandToViewport}\n preferredAlignment={preferCenter ? 'center' : 'start'}\n onOutsideClick={() => toggleDropdown()}\n onFocusLeave={onDropdownFocusLeave}\n onBlur={onDropdownBlur}\n trigger={trigger}\n dropdownId={dropdownId}\n header={filterElement}\n ariaRole={hasFiltering ? 'dialog' : undefined}\n ariaLabel={hasFiltering ? ariaLabel : undefined}\n footer={\n dropdownStatus.content ? (\n <DropdownFooter content={isOpen ? dropdownStatus.content : null} id={footerId} hasItems={!isNoMatch} />\n ) : null\n }\n content={\n <>\n {hasHeader && (\n <div className={styles.header} id={headerId}>\n {title && (\n <div className={styles.title}>\n <InternalBox\n fontSize=\"heading-s\"\n fontWeight=\"bold\"\n color=\"inherit\"\n tagOverride=\"h2\"\n margin={{ vertical: 'n', horizontal: 'n' }}\n >\n {title}\n </InternalBox>\n </div>\n )}\n {description && (\n <InternalBox fontSize=\"body-s\">\n <span className={styles.description}>{description}</span>\n </InternalBox>\n )}\n </div>\n )}\n <OptionsList\n open={canBeOpened && isOpen}\n position=\"static\"\n role=\"menu\"\n nativeAttributes={{ id: menuId }}\n tagOverride=\"ul\"\n decreaseBlockMargin={true}\n ariaLabel={ariaLabel}\n ariaLabelledby={hasHeader ? headerId : shouldLabelWithTrigger ? triggerId : undefined}\n ariaDescribedby={dropdownStatus.content ? footerId : undefined}\n statusType=\"finished\"\n >\n <ItemsList\n items={filteredItems}\n onItemActivate={onItemActivate}\n onGroupToggle={onGroupToggle}\n hasExpandableGroups={showExpandableGroups}\n targetItem={targetItem}\n isHighlighted={isHighlighted}\n isKeyboardHighlight={isKeyboardHighlight}\n isExpanded={isExpanded}\n lastInDropdown={true}\n highlightItem={highlightItem}\n expandToViewport={expandToViewport}\n variant={variant}\n analyticsMetadataTransformer={analyticsMetadataTransformer}\n linkStyle={linkStyle}\n position={position}\n renderItem={renderItem}\n filteringText={filteringValue}\n filteringEnabled={hasFiltering}\n menuId={hasFiltering ? menuId : undefined}\n filteringDescriptionId={filteringItemDescription ? filteringDescriptionId : undefined}\n />\n </OptionsList>\n {filteringDescriptionEl}\n </>\n }\n />\n </div>\n );\n }\n);\n\nexport default InternalButtonDropdown;\n"]}
|
|
@@ -16,6 +16,7 @@ interface UseButtonDropdownApi extends HighlightProps {
|
|
|
16
16
|
onItemActivate: ItemActivate;
|
|
17
17
|
onGroupToggle: GroupToggle;
|
|
18
18
|
onDropdownFocusLeave: () => void;
|
|
19
|
+
onDropdownBlur: () => void;
|
|
19
20
|
toggleDropdown: (options?: {
|
|
20
21
|
moveHighlightOnOpen?: boolean;
|
|
21
22
|
}) => void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-button-dropdown.d.ts","sourceRoot":"","sources":["../../../../src/button-dropdown/utils/use-button-dropdown.ts"],"names":[],"mappings":"AAEA,OAAO,KAA+C,MAAM,OAAO,CAAC;AAKpE,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,WAAW,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAKvH,UAAU,wBAAyB,SAAQ,sBAAsB;IAC/D,KAAK,EAAE,mBAAmB,CAAC,KAAK,CAAC;IACjC,WAAW,CAAC,EAAE,sBAAsB,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,CAAC;IAC3E,YAAY,CAAC,EAAE,sBAAsB,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,CAAC;IAC5E,aAAa,EAAE,MAAM,IAAI,CAAC;IAC1B,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,YAAY,EAAE,OAAO,CAAC;CACvB;AAED,UAAU,oBAAqB,SAAQ,cAAc;IACnD,MAAM,EAAE,OAAO,CAAC;IAChB,SAAS,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,aAAa,KAAK,IAAI,CAAC;IAChD,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,aAAa,KAAK,IAAI,CAAC;IAC9C,cAAc,EAAE,YAAY,CAAC;IAC7B,aAAa,EAAE,WAAW,CAAC;IAC3B,oBAAoB,EAAE,MAAM,IAAI,CAAC;IACjC,cAAc,EAAE,CAAC,OAAO,CAAC,EAAE;QAAE,mBAAmB,CAAC,EAAE,OAAO,CAAA;KAAE,KAAK,IAAI,CAAC;IACtE,aAAa,EAAE,MAAM,IAAI,CAAC;IAC1B,eAAe,EAAE,CAAC,YAAY,EAAE,OAAO,KAAK,IAAI,CAAC;IACjD,cAAc,EAAE,MAAM,CAAC;IACvB,iBAAiB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3C,aAAa,EAAE,mBAAmB,CAAC,KAAK,CAAC;IACzC,oBAAoB,EAAE,OAAO,CAAC;CAC/B;AAED,wBAAgB,iBAAiB,CAAC,EAChC,KAAK,EACL,WAAW,EACX,YAAY,EACZ,aAAa,EACb,mBAAmB,EACnB,kBAA0B,EAC1B,gBAAwB,EACxB,YAAY,GACb,EAAE,wBAAwB,GAAG,oBAAoB,
|
|
1
|
+
{"version":3,"file":"use-button-dropdown.d.ts","sourceRoot":"","sources":["../../../../src/button-dropdown/utils/use-button-dropdown.ts"],"names":[],"mappings":"AAEA,OAAO,KAA+C,MAAM,OAAO,CAAC;AAKpE,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,WAAW,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAKvH,UAAU,wBAAyB,SAAQ,sBAAsB;IAC/D,KAAK,EAAE,mBAAmB,CAAC,KAAK,CAAC;IACjC,WAAW,CAAC,EAAE,sBAAsB,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,CAAC;IAC3E,YAAY,CAAC,EAAE,sBAAsB,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,CAAC;IAC5E,aAAa,EAAE,MAAM,IAAI,CAAC;IAC1B,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,YAAY,EAAE,OAAO,CAAC;CACvB;AAED,UAAU,oBAAqB,SAAQ,cAAc;IACnD,MAAM,EAAE,OAAO,CAAC;IAChB,SAAS,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,aAAa,KAAK,IAAI,CAAC;IAChD,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,aAAa,KAAK,IAAI,CAAC;IAC9C,cAAc,EAAE,YAAY,CAAC;IAC7B,aAAa,EAAE,WAAW,CAAC;IAC3B,oBAAoB,EAAE,MAAM,IAAI,CAAC;IACjC,cAAc,EAAE,MAAM,IAAI,CAAC;IAC3B,cAAc,EAAE,CAAC,OAAO,CAAC,EAAE;QAAE,mBAAmB,CAAC,EAAE,OAAO,CAAA;KAAE,KAAK,IAAI,CAAC;IACtE,aAAa,EAAE,MAAM,IAAI,CAAC;IAC1B,eAAe,EAAE,CAAC,YAAY,EAAE,OAAO,KAAK,IAAI,CAAC;IACjD,cAAc,EAAE,MAAM,CAAC;IACvB,iBAAiB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3C,aAAa,EAAE,mBAAmB,CAAC,KAAK,CAAC;IACzC,oBAAoB,EAAE,OAAO,CAAC;CAC/B;AAED,wBAAgB,iBAAiB,CAAC,EAChC,KAAK,EACL,WAAW,EACX,YAAY,EACZ,aAAa,EACb,mBAAmB,EACnB,kBAA0B,EAC1B,gBAAwB,EACxB,YAAY,GACb,EAAE,wBAAwB,GAAG,oBAAoB,CA4PjD"}
|
|
@@ -51,6 +51,14 @@ export function useButtonDropdown({ items, onItemClick, onItemFollow, onReturnFo
|
|
|
51
51
|
closeDropdown();
|
|
52
52
|
}
|
|
53
53
|
};
|
|
54
|
+
// Close when focus leaves the entire widget (trigger and menu), for example when focus
|
|
55
|
+
// moves to an app layout drawer or an element in a different frame. The filtering variant
|
|
56
|
+
// keeps focus inside the dropdown content and closes via onDropdownFocusLeave instead.
|
|
57
|
+
const onDropdownBlur = () => {
|
|
58
|
+
if (isOpen && !hasFiltering) {
|
|
59
|
+
closeDropdown();
|
|
60
|
+
}
|
|
61
|
+
};
|
|
54
62
|
const onGroupToggle = item => (!isExpanded(item) ? expandGroup(item) : collapseGroup());
|
|
55
63
|
const onItemActivate = (item, event) => {
|
|
56
64
|
const isCheckbox = isCheckboxItem(item);
|
|
@@ -216,6 +224,7 @@ export function useButtonDropdown({ items, onItemClick, onItemFollow, onReturnFo
|
|
|
216
224
|
onItemActivate,
|
|
217
225
|
onGroupToggle,
|
|
218
226
|
onDropdownFocusLeave,
|
|
227
|
+
onDropdownBlur,
|
|
219
228
|
toggleDropdown,
|
|
220
229
|
closeDropdown,
|
|
221
230
|
setIsUsingMouse,
|