@react-spectrum/button 3.12.3 → 3.13.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/import.mjs CHANGED
@@ -2,10 +2,12 @@ import "./main.css";
2
2
  import {useSlotProps as $d7FTw$useSlotProps, useFocusableRef as $d7FTw$useFocusableRef, useStyleProps as $d7FTw$useStyleProps, useHasChild as $d7FTw$useHasChild, classNames as $d7FTw$classNames, SlotProvider as $d7FTw$SlotProvider} from "@react-spectrum/utils";
3
3
  import {FocusRing as $d7FTw$FocusRing} from "@react-aria/focus";
4
4
  import {mergeProps as $d7FTw$mergeProps} from "@react-aria/utils";
5
- import $d7FTw$react from "react";
5
+ import {ProgressCircle as $d7FTw$ProgressCircle} from "@react-spectrum/progress";
6
+ import $d7FTw$react, {useState as $d7FTw$useState, useEffect as $d7FTw$useEffect} from "react";
6
7
  import {Text as $d7FTw$Text} from "@react-spectrum/text";
7
8
  import {useButton as $d7FTw$useButton, useToggleButton as $d7FTw$useToggleButton} from "@react-aria/button";
8
9
  import {useHover as $d7FTw$useHover} from "@react-aria/interactions";
10
+ import {useLocalizedStringFormatter as $d7FTw$useLocalizedStringFormatter} from "@react-aria/i18n";
9
11
  import {useProviderProps as $d7FTw$useProviderProps} from "@react-spectrum/provider";
10
12
  import $d7FTw$spectrumiconsuiCornerTriangle from "@spectrum-icons/ui/CornerTriangle";
11
13
  import $d7FTw$spectrumiconsuiCrossSmall from "@spectrum-icons/ui/CrossSmall";
@@ -40,6 +42,250 @@ function $parcel$export(e, n, v, s) {
40
42
  * governing permissions and limitations under the License.
41
43
  */
42
44
 
45
+ var $94fed84ca44dbd5b$exports = {};
46
+ var $3d5058299051dde5$exports = {};
47
+ $3d5058299051dde5$exports = {
48
+ "loading": `جارٍ التحميل...`
49
+ };
50
+
51
+
52
+ var $b09fec806b7b8f22$exports = {};
53
+ $b09fec806b7b8f22$exports = {
54
+ "loading": `Зареждане...`
55
+ };
56
+
57
+
58
+ var $ca0549dfb1669363$exports = {};
59
+ $ca0549dfb1669363$exports = {
60
+ "loading": `Načítání...`
61
+ };
62
+
63
+
64
+ var $98f2907c0694c5b6$exports = {};
65
+ $98f2907c0694c5b6$exports = {
66
+ "loading": `Indlæser ...`
67
+ };
68
+
69
+
70
+ var $9d6fce77106482c8$exports = {};
71
+ $9d6fce77106482c8$exports = {
72
+ "loading": `Wird geladen …`
73
+ };
74
+
75
+
76
+ var $db5c63cb8d95d7a4$exports = {};
77
+ $db5c63cb8d95d7a4$exports = {
78
+ "loading": `Φόρτωση…`
79
+ };
80
+
81
+
82
+ var $94e4262f3b79d866$exports = {};
83
+ $94e4262f3b79d866$exports = {
84
+ "loading": `Loading…`
85
+ };
86
+
87
+
88
+ var $16cf2bb6affc1ca9$exports = {};
89
+ $16cf2bb6affc1ca9$exports = {
90
+ "loading": `Cargando…`
91
+ };
92
+
93
+
94
+ var $d2a4cd1ccd3b9660$exports = {};
95
+ $d2a4cd1ccd3b9660$exports = {
96
+ "loading": `Laadimine...`
97
+ };
98
+
99
+
100
+ var $0aa3ceafb597db1b$exports = {};
101
+ $0aa3ceafb597db1b$exports = {
102
+ "loading": `Ladataan…`
103
+ };
104
+
105
+
106
+ var $5779b104f19b7b1a$exports = {};
107
+ $5779b104f19b7b1a$exports = {
108
+ "loading": `Chargement en cours…`
109
+ };
110
+
111
+
112
+ var $33aba885fd306c4d$exports = {};
113
+ $33aba885fd306c4d$exports = {
114
+ "loading": `טוען...`
115
+ };
116
+
117
+
118
+ var $30a099a3f19b59af$exports = {};
119
+ $30a099a3f19b59af$exports = {
120
+ "loading": `Učitavam...`
121
+ };
122
+
123
+
124
+ var $f257504b02c6b23f$exports = {};
125
+ $f257504b02c6b23f$exports = {
126
+ "loading": `Betöltés folyamatban…`
127
+ };
128
+
129
+
130
+ var $b6e12833733478ab$exports = {};
131
+ $b6e12833733478ab$exports = {
132
+ "loading": `Caricamento...`
133
+ };
134
+
135
+
136
+ var $e69fac8c5f9d6043$exports = {};
137
+ $e69fac8c5f9d6043$exports = {
138
+ "loading": `読み込み中...`
139
+ };
140
+
141
+
142
+ var $a9b740b7d23548d0$exports = {};
143
+ $a9b740b7d23548d0$exports = {
144
+ "loading": `로드 중…`
145
+ };
146
+
147
+
148
+ var $4d8ca888adc67de0$exports = {};
149
+ $4d8ca888adc67de0$exports = {
150
+ "loading": `Įkeliama…`
151
+ };
152
+
153
+
154
+ var $5d3a845adaaa328a$exports = {};
155
+ $5d3a845adaaa328a$exports = {
156
+ "loading": `Notiek ielāde…`
157
+ };
158
+
159
+
160
+ var $20112446b2d06d6e$exports = {};
161
+ $20112446b2d06d6e$exports = {
162
+ "loading": `Laster inn ...`
163
+ };
164
+
165
+
166
+ var $168501f8ff8ad607$exports = {};
167
+ $168501f8ff8ad607$exports = {
168
+ "loading": `Laden...`
169
+ };
170
+
171
+
172
+ var $7d885e2935e9ed01$exports = {};
173
+ $7d885e2935e9ed01$exports = {
174
+ "loading": `Wczytywanie...`
175
+ };
176
+
177
+
178
+ var $ece77a10c9739c65$exports = {};
179
+ $ece77a10c9739c65$exports = {
180
+ "loading": `Carregando...`
181
+ };
182
+
183
+
184
+ var $8dbae7e3487e6fc7$exports = {};
185
+ $8dbae7e3487e6fc7$exports = {
186
+ "loading": `A carregar...`
187
+ };
188
+
189
+
190
+ var $4ab371254445a3f4$exports = {};
191
+ $4ab371254445a3f4$exports = {
192
+ "loading": `Se încarcă...`
193
+ };
194
+
195
+
196
+ var $c5ac7ec630c67dba$exports = {};
197
+ $c5ac7ec630c67dba$exports = {
198
+ "loading": `Загрузка...`
199
+ };
200
+
201
+
202
+ var $846eaea7e21f7fbf$exports = {};
203
+ $846eaea7e21f7fbf$exports = {
204
+ "loading": `Načítava sa...`
205
+ };
206
+
207
+
208
+ var $dde062d6acd4e43a$exports = {};
209
+ $dde062d6acd4e43a$exports = {
210
+ "loading": `Nalaganje ...`
211
+ };
212
+
213
+
214
+ var $579b7ae9c5494112$exports = {};
215
+ $579b7ae9c5494112$exports = {
216
+ "loading": `Učitavam...`
217
+ };
218
+
219
+
220
+ var $3b62c0bcc6cf3c98$exports = {};
221
+ $3b62c0bcc6cf3c98$exports = {
222
+ "loading": `Läser in...`
223
+ };
224
+
225
+
226
+ var $31f966e58b99834b$exports = {};
227
+ $31f966e58b99834b$exports = {
228
+ "loading": `Yükleniyor...`
229
+ };
230
+
231
+
232
+ var $a3d99ea5d46a3d12$exports = {};
233
+ $a3d99ea5d46a3d12$exports = {
234
+ "loading": `Завантаження…`
235
+ };
236
+
237
+
238
+ var $6e4b63af77288b7a$exports = {};
239
+ $6e4b63af77288b7a$exports = {
240
+ "loading": `正在加载...`
241
+ };
242
+
243
+
244
+ var $be993a68bccef72a$exports = {};
245
+ $be993a68bccef72a$exports = {
246
+ "loading": `載入中…`
247
+ };
248
+
249
+
250
+ $94fed84ca44dbd5b$exports = {
251
+ "ar-AE": $3d5058299051dde5$exports,
252
+ "bg-BG": $b09fec806b7b8f22$exports,
253
+ "cs-CZ": $ca0549dfb1669363$exports,
254
+ "da-DK": $98f2907c0694c5b6$exports,
255
+ "de-DE": $9d6fce77106482c8$exports,
256
+ "el-GR": $db5c63cb8d95d7a4$exports,
257
+ "en-US": $94e4262f3b79d866$exports,
258
+ "es-ES": $16cf2bb6affc1ca9$exports,
259
+ "et-EE": $d2a4cd1ccd3b9660$exports,
260
+ "fi-FI": $0aa3ceafb597db1b$exports,
261
+ "fr-FR": $5779b104f19b7b1a$exports,
262
+ "he-IL": $33aba885fd306c4d$exports,
263
+ "hr-HR": $30a099a3f19b59af$exports,
264
+ "hu-HU": $f257504b02c6b23f$exports,
265
+ "it-IT": $b6e12833733478ab$exports,
266
+ "ja-JP": $e69fac8c5f9d6043$exports,
267
+ "ko-KR": $a9b740b7d23548d0$exports,
268
+ "lt-LT": $4d8ca888adc67de0$exports,
269
+ "lv-LV": $5d3a845adaaa328a$exports,
270
+ "nb-NO": $20112446b2d06d6e$exports,
271
+ "nl-NL": $168501f8ff8ad607$exports,
272
+ "pl-PL": $7d885e2935e9ed01$exports,
273
+ "pt-BR": $ece77a10c9739c65$exports,
274
+ "pt-PT": $8dbae7e3487e6fc7$exports,
275
+ "ro-RO": $4ab371254445a3f4$exports,
276
+ "ru-RU": $c5ac7ec630c67dba$exports,
277
+ "sk-SK": $846eaea7e21f7fbf$exports,
278
+ "sl-SI": $dde062d6acd4e43a$exports,
279
+ "sr-SP": $579b7ae9c5494112$exports,
280
+ "sv-SE": $3b62c0bcc6cf3c98$exports,
281
+ "tr-TR": $31f966e58b99834b$exports,
282
+ "uk-UA": $a3d99ea5d46a3d12$exports,
283
+ "zh-CN": $6e4b63af77288b7a$exports,
284
+ "zh-TW": $be993a68bccef72a$exports
285
+ };
286
+
287
+
288
+
43
289
 
44
290
 
45
291
  var $086e93d2352a4536$exports = {};
@@ -55,6 +301,8 @@ $parcel$export($086e93d2352a4536$exports, "spectrum-Icon", () => $086e93d2352a45
55
301
  $parcel$export($086e93d2352a4536$exports, "is-hovered", () => $086e93d2352a4536$export$b8813cd5d7824ce7, (v) => $086e93d2352a4536$export$b8813cd5d7824ce7 = v);
56
302
  $parcel$export($086e93d2352a4536$exports, "spectrum-Button-label", () => $086e93d2352a4536$export$c081ba562e204942, (v) => $086e93d2352a4536$export$c081ba562e204942 = v);
57
303
  $parcel$export($086e93d2352a4536$exports, "spectrum-Button--iconOnly", () => $086e93d2352a4536$export$c1d306ec0fae3838, (v) => $086e93d2352a4536$export$c1d306ec0fae3838 = v);
304
+ $parcel$export($086e93d2352a4536$exports, "spectrum-Button--pending", () => $086e93d2352a4536$export$54592d0984f245d5, (v) => $086e93d2352a4536$export$54592d0984f245d5 = v);
305
+ $parcel$export($086e93d2352a4536$exports, "spectrum-Button-circleLoader", () => $086e93d2352a4536$export$76d4531f0342bbe0, (v) => $086e93d2352a4536$export$76d4531f0342bbe0 = v);
58
306
  $parcel$export($086e93d2352a4536$exports, "spectrum-ActionButton-label", () => $086e93d2352a4536$export$ebb4635c66bacdb9, (v) => $086e93d2352a4536$export$ebb4635c66bacdb9 = v);
59
307
  $parcel$export($086e93d2352a4536$exports, "spectrum-ActionButton-hold", () => $086e93d2352a4536$export$4a4f01c443eff992, (v) => $086e93d2352a4536$export$4a4f01c443eff992 = v);
60
308
  $parcel$export($086e93d2352a4536$exports, "spectrum-ActionButton--quiet", () => $086e93d2352a4536$export$40e1f009544bacf3, (v) => $086e93d2352a4536$export$40e1f009544bacf3 = v);
@@ -85,6 +333,8 @@ var $086e93d2352a4536$export$d374b04f30360026;
85
333
  var $086e93d2352a4536$export$b8813cd5d7824ce7;
86
334
  var $086e93d2352a4536$export$c081ba562e204942;
87
335
  var $086e93d2352a4536$export$c1d306ec0fae3838;
336
+ var $086e93d2352a4536$export$54592d0984f245d5;
337
+ var $086e93d2352a4536$export$76d4531f0342bbe0;
88
338
  var $086e93d2352a4536$export$ebb4635c66bacdb9;
89
339
  var $086e93d2352a4536$export$4a4f01c443eff992;
90
340
  var $086e93d2352a4536$export$40e1f009544bacf3;
@@ -115,6 +365,8 @@ $086e93d2352a4536$export$d374b04f30360026 = "spectrum-Icon_e2d99e";
115
365
  $086e93d2352a4536$export$b8813cd5d7824ce7 = "is-hovered_e2d99e";
116
366
  $086e93d2352a4536$export$c081ba562e204942 = "spectrum-Button-label_e2d99e";
117
367
  $086e93d2352a4536$export$c1d306ec0fae3838 = "spectrum-Button--iconOnly_e2d99e";
368
+ $086e93d2352a4536$export$54592d0984f245d5 = "spectrum-Button--pending_e2d99e";
369
+ $086e93d2352a4536$export$76d4531f0342bbe0 = "spectrum-Button-circleLoader_e2d99e";
118
370
  $086e93d2352a4536$export$ebb4635c66bacdb9 = "spectrum-ActionButton-label_e2d99e";
119
371
  $086e93d2352a4536$export$4a4f01c443eff992 = "spectrum-ActionButton-hold_e2d99e";
120
372
  $086e93d2352a4536$export$40e1f009544bacf3 = "spectrum-ActionButton--quiet_e2d99e";
@@ -140,18 +392,52 @@ $086e93d2352a4536$export$5cda1128f9112d2e = "spectrum-Button--overBackground_e2d
140
392
 
141
393
 
142
394
 
395
+
396
+ function $b865a6f0049e2d66$var$disablePendingProps(props) {
397
+ // Don't allow interaction while UNSTABLE_isPending is true
398
+ if (props.UNSTABLE_isPending) {
399
+ props.onPress = undefined;
400
+ props.onPressStart = undefined;
401
+ props.onPressEnd = undefined;
402
+ props.onPressChange = undefined;
403
+ props.onPressUp = undefined;
404
+ props.onKeyDown = undefined;
405
+ props.onKeyUp = undefined;
406
+ props.onClick = undefined;
407
+ props.href = undefined;
408
+ }
409
+ return props;
410
+ }
143
411
  function $b865a6f0049e2d66$var$Button(props, ref) {
144
412
  props = (0, $d7FTw$useProviderProps)(props);
145
413
  props = (0, $d7FTw$useSlotProps)(props, "button");
146
- let { elementType: ElementType = "button" , children: children , variant: variant , style: style = variant === "accent" || variant === "cta" ? "fill" : "outline" , staticColor: staticColor , isDisabled: isDisabled , autoFocus: autoFocus , ...otherProps } = props;
414
+ props = $b865a6f0049e2d66$var$disablePendingProps(props);
415
+ let { elementType: ElementType = "button" , children: children , variant: variant , style: style = variant === "accent" || variant === "cta" ? "fill" : "outline" , staticColor: staticColor , isDisabled: isDisabled , UNSTABLE_isPending: UNSTABLE_isPending , autoFocus: autoFocus , ...otherProps } = props;
147
416
  let domRef = (0, $d7FTw$useFocusableRef)(ref);
148
417
  let { buttonProps: buttonProps , isPressed: isPressed } = (0, $d7FTw$useButton)(props, domRef);
149
418
  let { hoverProps: hoverProps , isHovered: isHovered } = (0, $d7FTw$useHover)({
150
419
  isDisabled: isDisabled
151
420
  });
421
+ let stringFormatter = (0, $d7FTw$useLocalizedStringFormatter)((0, (/*@__PURE__*/$parcel$interopDefault($94fed84ca44dbd5b$exports))));
152
422
  let { styleProps: styleProps } = (0, $d7FTw$useStyleProps)(otherProps);
153
423
  let hasLabel = (0, $d7FTw$useHasChild)(`.${(0, (/*@__PURE__*/$parcel$interopDefault($086e93d2352a4536$exports)))["spectrum-Button-label"]}`, domRef);
154
424
  let hasIcon = (0, $d7FTw$useHasChild)(`.${(0, (/*@__PURE__*/$parcel$interopDefault($086e93d2352a4536$exports)))["spectrum-Icon"]}`, domRef);
425
+ let [isProgressVisible, setIsProgressVisible] = (0, $d7FTw$useState)(false);
426
+ (0, $d7FTw$useEffect)(()=>{
427
+ let timeout;
428
+ if (UNSTABLE_isPending) // Start timer when UNSTABLE_isPending is set to true.
429
+ timeout = setTimeout(()=>{
430
+ setIsProgressVisible(true);
431
+ }, 1000);
432
+ else // Exit loading state when UNSTABLE_isPending is set to false. */
433
+ setIsProgressVisible(false);
434
+ return ()=>{
435
+ // Clean up on unmount or when user removes UNSTABLE_isPending prop before entering loading state.
436
+ clearTimeout(timeout);
437
+ };
438
+ }, [
439
+ UNSTABLE_isPending
440
+ ]);
155
441
  if (variant === "cta") variant = "accent";
156
442
  else if (variant === "overBackground") {
157
443
  variant = "primary";
@@ -167,11 +453,14 @@ function $b865a6f0049e2d66$var$Button(props, ref) {
167
453
  "data-variant": variant,
168
454
  "data-style": style,
169
455
  "data-static-color": staticColor || undefined,
456
+ "aria-disabled": UNSTABLE_isPending || undefined,
457
+ "aria-live": UNSTABLE_isPending ? "polite" : undefined,
170
458
  className: (0, $d7FTw$classNames)((0, (/*@__PURE__*/$parcel$interopDefault($086e93d2352a4536$exports))), "spectrum-Button", {
171
459
  "spectrum-Button--iconOnly": hasIcon && !hasLabel,
172
- "is-disabled": isDisabled,
460
+ "is-disabled": isDisabled || isProgressVisible,
173
461
  "is-active": isPressed,
174
- "is-hovered": isHovered
462
+ "is-hovered": isHovered,
463
+ "spectrum-Button--pending": isProgressVisible
175
464
  }, styleProps.className)
176
465
  }, /*#__PURE__*/ (0, $d7FTw$react).createElement((0, $d7FTw$SlotProvider), {
177
466
  slots: {
@@ -183,7 +472,13 @@ function $b865a6f0049e2d66$var$Button(props, ref) {
183
472
  UNSAFE_className: (0, $d7FTw$classNames)((0, (/*@__PURE__*/$parcel$interopDefault($086e93d2352a4536$exports))), "spectrum-Button-label")
184
473
  }
185
474
  }
186
- }, typeof children === "string" ? /*#__PURE__*/ (0, $d7FTw$react).createElement((0, $d7FTw$Text), null, children) : children)));
475
+ }, isProgressVisible && /*#__PURE__*/ (0, $d7FTw$react).createElement((0, $d7FTw$ProgressCircle), {
476
+ "aria-label": stringFormatter.format("loading"),
477
+ isIndeterminate: true,
478
+ size: "S",
479
+ UNSAFE_className: (0, $d7FTw$classNames)((0, (/*@__PURE__*/$parcel$interopDefault($086e93d2352a4536$exports))), "spectrum-Button-circleLoader"),
480
+ variant: staticColor ? "overBackground" : undefined
481
+ }), typeof children === "string" ? /*#__PURE__*/ (0, $d7FTw$react).createElement((0, $d7FTw$Text), null, children) : children)));
187
482
  }
188
483
  /**
189
484
  * Buttons allow users to perform an action or to navigate to another page.
@@ -280,7 +575,7 @@ function $042ad0b3a4a55b33$var$ActionButton(props, ref) {
280
575
  // @private
281
576
  function $b43bd559b476d0c4$var$FieldButton(props, ref) {
282
577
  props = (0, $d7FTw$useSlotProps)(props, "button");
283
- let { isQuiet: isQuiet , isDisabled: isDisabled , validationState: validationState , children: children , autoFocus: autoFocus , isActive: isActive , focusRingClass: focusRingClass , ...otherProps } = props;
578
+ let { isQuiet: isQuiet , isDisabled: isDisabled , validationState: validationState , isInvalid: isInvalid , children: children , autoFocus: autoFocus , isActive: isActive , focusRingClass: focusRingClass , ...otherProps } = props;
284
579
  let domRef = (0, $d7FTw$useFocusableRef)(ref);
285
580
  let { buttonProps: buttonProps , isPressed: isPressed } = (0, $d7FTw$useButton)(props, domRef);
286
581
  let { hoverProps: hoverProps , isHovered: isHovered } = (0, $d7FTw$useHover)({
@@ -297,7 +592,7 @@ function $b43bd559b476d0c4$var$FieldButton(props, ref) {
297
592
  "spectrum-FieldButton--quiet": isQuiet,
298
593
  "is-active": isActive || isPressed,
299
594
  "is-disabled": isDisabled,
300
- "spectrum-FieldButton--invalid": validationState === "invalid",
595
+ "spectrum-FieldButton--invalid": isInvalid || validationState === "invalid",
301
596
  "is-hovered": isHovered
302
597
  }, styleProps.className)
303
598
  }, /*#__PURE__*/ (0, $d7FTw$react).createElement((0, $d7FTw$SlotProvider), {