@wow-two-beta/ui 0.0.30 → 0.0.31
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/actions/button/Button.d.ts +14 -40
- package/dist/actions/button/Button.d.ts.map +1 -1
- package/dist/actions/index.js +2 -2
- package/dist/{chunk-VZNIJCMD.js → chunk-3IEGN2OO.js} +155 -117
- package/dist/chunk-3IEGN2OO.js.map +1 -0
- package/dist/{chunk-HECIUFDS.js → chunk-7OJ7VH6V.js} +4 -4
- package/dist/{chunk-HECIUFDS.js.map → chunk-7OJ7VH6V.js.map} +1 -1
- package/dist/{chunk-NXVK3VSQ.js → chunk-JCXJPSI2.js} +4 -4
- package/dist/{chunk-NXVK3VSQ.js.map → chunk-JCXJPSI2.js.map} +1 -1
- package/dist/{chunk-XSTHHOAN.js → chunk-JIAK2T6Y.js} +4 -4
- package/dist/{chunk-XSTHHOAN.js.map → chunk-JIAK2T6Y.js.map} +1 -1
- package/dist/{chunk-ZJMDHG7B.js → chunk-LBQIZGYH.js} +52 -3
- package/dist/chunk-LBQIZGYH.js.map +1 -0
- package/dist/{chunk-FFOGR3WH.js → chunk-NBCWQCKQ.js} +4 -4
- package/dist/{chunk-FFOGR3WH.js.map → chunk-NBCWQCKQ.js.map} +1 -1
- package/dist/{chunk-NJDUGXFL.js → chunk-PA6ZIE44.js} +5 -5
- package/dist/{chunk-NJDUGXFL.js.map → chunk-PA6ZIE44.js.map} +1 -1
- package/dist/{chunk-DWWF7QPK.js → chunk-RWUOXGQI.js} +3 -3
- package/dist/{chunk-DWWF7QPK.js.map → chunk-RWUOXGQI.js.map} +1 -1
- package/dist/{chunk-G7K64TW2.js → chunk-XCJMUYYR.js} +3 -3
- package/dist/{chunk-G7K64TW2.js.map → chunk-XCJMUYYR.js.map} +1 -1
- package/dist/{chunk-CKFM2H7O.js → chunk-YHRQSVLB.js} +3 -3
- package/dist/{chunk-CKFM2H7O.js.map → chunk-YHRQSVLB.js.map} +1 -1
- package/dist/display/index.js +3 -3
- package/dist/feedback/index.js +3 -3
- package/dist/forms/index.js +4 -4
- package/dist/icons/index.js +1 -1
- package/dist/index.js +10 -10
- package/dist/layout/index.js +3 -3
- package/dist/nav/index.js +3 -3
- package/dist/overlays/index.js +1 -1
- package/dist/utils/HtmlExtensions.d.ts +14 -0
- package/dist/utils/HtmlExtensions.d.ts.map +1 -0
- package/dist/utils/KeyboardExtensions.d.ts +18 -0
- package/dist/utils/KeyboardExtensions.d.ts.map +1 -0
- package/dist/utils/PressExtensions.d.ts +17 -0
- package/dist/utils/PressExtensions.d.ts.map +1 -0
- package/dist/utils/index.d.ts +3 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +1 -1
- package/package.json +1 -1
- package/dist/chunk-VZNIJCMD.js.map +0 -1
- package/dist/chunk-ZJMDHG7B.js.map +0 -1
|
@@ -1,54 +1,28 @@
|
|
|
1
|
-
import { type ButtonHTMLAttributes, type
|
|
2
|
-
import { type PaddingProp, type RadiusProp, type SizeValue } from '../../utils';
|
|
1
|
+
import { type ButtonHTMLAttributes, type PointerEvent, type ReactNode } from 'react';
|
|
2
|
+
import { ButtonType, type PaddingProp, type PressEvent, type RadiusProp, type SizeValue } from '../../utils';
|
|
3
3
|
import { type ButtonVariants } from './Button.variants';
|
|
4
|
-
export
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
trailing?: ReactNode;
|
|
10
|
-
/** Action-loading: replaces leading w/ spinner, sets aria-busy, blocks clicks. */
|
|
11
|
-
loading?: boolean;
|
|
12
|
-
/** Replaces children when loading. No default — consumer supplies (i18n). */
|
|
4
|
+
export interface ButtonProps extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, 'type' | 'disabled'>, ButtonVariants {
|
|
5
|
+
leadingSlot?: ReactNode;
|
|
6
|
+
trailingSlot?: ReactNode;
|
|
7
|
+
loadingSlot?: ReactNode;
|
|
8
|
+
isLoading?: boolean;
|
|
13
9
|
loadingText?: string;
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
skeleton?: boolean;
|
|
19
|
-
/** Render as the single child element via Slot. */
|
|
10
|
+
isSkeleton?: boolean;
|
|
11
|
+
isDisabled?: boolean;
|
|
12
|
+
isFullWidth?: boolean;
|
|
13
|
+
isMultiline?: boolean;
|
|
20
14
|
asChild?: boolean;
|
|
21
|
-
/** Independent padding override (preset or `{x, y}` object). */
|
|
22
15
|
padding?: PaddingProp;
|
|
23
|
-
/** Independent radius override (preset or raw value). */
|
|
24
16
|
radius?: RadiusProp;
|
|
25
|
-
/** Explicit width override. Number = px; string = any CSS unit. */
|
|
26
17
|
width?: SizeValue;
|
|
27
|
-
/** Explicit height override. Number = px; string = any CSS unit. */
|
|
28
18
|
height?: SizeValue;
|
|
29
|
-
/**
|
|
30
|
-
* Reserve a minimum width so the button doesn't reflow when its label
|
|
31
|
-
* changes (e.g. "Save" → "Saving…" → "Saved"). Number = px; string = any
|
|
32
|
-
* CSS unit. Content stays centered via the base `justify-center`.
|
|
33
|
-
*/
|
|
34
19
|
minWidth?: SizeValue;
|
|
35
|
-
/** Reserve a minimum height — symmetric with `minWidth`. */
|
|
36
20
|
minHeight?: SizeValue;
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
onPressStart?: (event: PressEvent) => void;
|
|
41
|
-
/** Fires on pointer-up/cancel OR Space/Enter keyup. */
|
|
42
|
-
onPressEnd?: (event: PressEvent) => void;
|
|
43
|
-
/** Fires when the pointer is held for `longPressDelay` ms. Suppresses the next click. */
|
|
21
|
+
type?: ButtonType;
|
|
22
|
+
onPressStart?: (event: PressEvent<HTMLButtonElement>) => void;
|
|
23
|
+
onPressEnd?: (event: PressEvent<HTMLButtonElement>) => void;
|
|
44
24
|
onLongPress?: (event: PointerEvent<HTMLButtonElement>) => void;
|
|
45
|
-
/** Long-press duration in ms. Default 500. */
|
|
46
25
|
longPressDelay?: number;
|
|
47
|
-
/**
|
|
48
|
-
* Throttle clicks within `debounceMs`: first click fires, subsequent within
|
|
49
|
-
* the window are swallowed (functionally a throttle — kept the `debounce*`
|
|
50
|
-
* naming for consumer familiarity). Skipped when `loading` or `skeleton`.
|
|
51
|
-
*/
|
|
52
26
|
debounceMs?: number;
|
|
53
27
|
}
|
|
54
28
|
export declare const Button: import("react").ForwardRefExoticComponent<ButtonProps & import("react").RefAttributes<HTMLButtonElement>>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Button.d.ts","sourceRoot":"","sources":["../../../src/actions/button/Button.tsx"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,oBAAoB,
|
|
1
|
+
{"version":3,"file":"Button.d.ts","sourceRoot":"","sources":["../../../src/actions/button/Button.tsx"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,oBAAoB,EAMzB,KAAK,YAAY,EAEjB,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AACf,OAAO,EAGL,UAAU,EAMV,KAAK,WAAW,EAChB,KAAK,UAAU,EACf,KAAK,UAAU,EACf,KAAK,SAAS,EACf,MAAM,aAAa,CAAC;AAIrB,OAAO,EAAkB,KAAK,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAYxE,MAAM,WAAW,WACf,SAAQ,IAAI,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,EAAE,MAAM,GAAG,UAAU,CAAC,EACxE,cAAc;IAEhB,WAAW,CAAC,EAAE,SAAS,CAAC;IAGxB,YAAY,CAAC,EAAE,SAAS,CAAC;IAGzB,WAAW,CAAC,EAAE,SAAS,CAAC;IAGxB,SAAS,CAAC,EAAE,OAAO,CAAC;IAGpB,WAAW,CAAC,EAAE,MAAM,CAAC;IAGrB,UAAU,CAAC,EAAE,OAAO,CAAC;IAGrB,UAAU,CAAC,EAAE,OAAO,CAAC;IAGrB,WAAW,CAAC,EAAE,OAAO,CAAC;IAGtB,WAAW,CAAC,EAAE,OAAO,CAAC;IAGtB,OAAO,CAAC,EAAE,OAAO,CAAC;IAGlB,OAAO,CAAC,EAAE,WAAW,CAAC;IAGtB,MAAM,CAAC,EAAE,UAAU,CAAC;IAGpB,KAAK,CAAC,EAAE,SAAS,CAAC;IAGlB,MAAM,CAAC,EAAE,SAAS,CAAC;IAGnB,QAAQ,CAAC,EAAE,SAAS,CAAC;IAGrB,SAAS,CAAC,EAAE,SAAS,CAAC;IAGtB,IAAI,CAAC,EAAE,UAAU,CAAC;IAGlB,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,CAAC,iBAAiB,CAAC,KAAK,IAAI,CAAC;IAG9D,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,CAAC,iBAAiB,CAAC,KAAK,IAAI,CAAC;IAG5D,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,YAAY,CAAC,iBAAiB,CAAC,KAAK,IAAI,CAAC;IAG/D,cAAc,CAAC,EAAE,MAAM,CAAC;IAGxB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AA4HD,eAAO,MAAM,MAAM,2GA6IlB,CAAC"}
|
package/dist/actions/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
export { BackToTopButton, Button, ButtonGroup, CopyButton, DisclosureButton, FAB, IconButton, Link, OverlayButton, SegmentedControl, SpeedDial, SpeedDialAction, SpeedDialTrigger, ToggleButton, ToggleButtonGroup, Toolbar, ToolbarButton, ToolbarLink, ToolbarSeparator, buttonVariants, fabVariants, iconButtonVariants, linkVariants, toggleButtonVariants } from '../chunk-
|
|
1
|
+
export { BackToTopButton, Button, ButtonGroup, CopyButton, DisclosureButton, FAB, IconButton, Link, OverlayButton, SegmentedControl, SpeedDial, SpeedDialAction, SpeedDialTrigger, ToggleButton, ToggleButtonGroup, Toolbar, ToolbarButton, ToolbarLink, ToolbarSeparator, buttonVariants, fabVariants, iconButtonVariants, linkVariants, toggleButtonVariants } from '../chunk-3IEGN2OO.js';
|
|
2
2
|
import '../chunk-NUMFGKPY.js';
|
|
3
3
|
import '../chunk-GWIFNLGS.js';
|
|
4
|
-
import '../chunk-
|
|
4
|
+
import '../chunk-LBQIZGYH.js';
|
|
5
5
|
import '../chunk-BMABNEZX.js';
|
|
6
6
|
import '../chunk-KDXJQNB6.js';
|
|
7
7
|
import '../chunk-LDRFQG44.js';
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { useControlled, useClipboard, useDebounceHandler, useEscape, useOutsideClick } from './chunk-NUMFGKPY.js';
|
|
2
2
|
import { Icon, Spinner } from './chunk-GWIFNLGS.js';
|
|
3
|
-
import { tv, CssExtensions,
|
|
3
|
+
import { tv, PressExtensions, HtmlElement, CssExtensions, ButtonType, OptionalExtensions, dataAttr, composeEventHandlers, Key } from './chunk-LBQIZGYH.js';
|
|
4
4
|
import { Slot, RovingFocusGroup, useRovingFocusItem } from './chunk-BMABNEZX.js';
|
|
5
5
|
import { cn, composeRefs } from './chunk-LDRFQG44.js';
|
|
6
|
-
import { forwardRef,
|
|
6
|
+
import { forwardRef, Children, isValidElement, cloneElement, createContext, useState, useEffect, useRef, useContext, useMemo } from 'react';
|
|
7
7
|
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
8
8
|
import { Check, Copy, ChevronDown, X, Plus, ArrowUp } from 'lucide-react';
|
|
9
9
|
|
|
@@ -115,9 +115,97 @@ var buttonVariants = tv({
|
|
|
115
115
|
wrap: false
|
|
116
116
|
}
|
|
117
117
|
});
|
|
118
|
-
var
|
|
119
|
-
var
|
|
120
|
-
|
|
118
|
+
var COMPONENT_NAME = "Button";
|
|
119
|
+
var ButtonDataState = {
|
|
120
|
+
Loading: "loading",
|
|
121
|
+
Skeleton: "skeleton",
|
|
122
|
+
Disabled: "disabled"
|
|
123
|
+
};
|
|
124
|
+
function useButtonInteractivity(opts) {
|
|
125
|
+
const isPressingRef = useRef(false);
|
|
126
|
+
const longPressTimerRef = useRef(void 0);
|
|
127
|
+
const longPressFiredRef = useRef(false);
|
|
128
|
+
useEffect(
|
|
129
|
+
() => () => {
|
|
130
|
+
if (longPressTimerRef.current !== void 0) {
|
|
131
|
+
clearTimeout(longPressTimerRef.current);
|
|
132
|
+
}
|
|
133
|
+
},
|
|
134
|
+
[]
|
|
135
|
+
);
|
|
136
|
+
const cancelLongPress = () => {
|
|
137
|
+
if (longPressTimerRef.current !== void 0) {
|
|
138
|
+
clearTimeout(longPressTimerRef.current);
|
|
139
|
+
longPressTimerRef.current = void 0;
|
|
140
|
+
}
|
|
141
|
+
};
|
|
142
|
+
const endPress = (e) => {
|
|
143
|
+
if (isPressingRef.current) {
|
|
144
|
+
isPressingRef.current = false;
|
|
145
|
+
opts.onPressEnd?.(e);
|
|
146
|
+
}
|
|
147
|
+
};
|
|
148
|
+
const handlePointerDown = (e) => {
|
|
149
|
+
if (opts.isInactive) return;
|
|
150
|
+
if (!isPressingRef.current) {
|
|
151
|
+
isPressingRef.current = true;
|
|
152
|
+
longPressFiredRef.current = false;
|
|
153
|
+
opts.onPressStart?.(e);
|
|
154
|
+
}
|
|
155
|
+
if (opts.onLongPress) {
|
|
156
|
+
longPressTimerRef.current = setTimeout(() => {
|
|
157
|
+
longPressFiredRef.current = true;
|
|
158
|
+
opts.onLongPress?.(e);
|
|
159
|
+
longPressTimerRef.current = void 0;
|
|
160
|
+
}, opts.longPressDelay);
|
|
161
|
+
}
|
|
162
|
+
};
|
|
163
|
+
const handlePointerUp = (e) => {
|
|
164
|
+
cancelLongPress();
|
|
165
|
+
endPress(e);
|
|
166
|
+
};
|
|
167
|
+
const handlePointerCancel = (e) => {
|
|
168
|
+
cancelLongPress();
|
|
169
|
+
endPress(e);
|
|
170
|
+
};
|
|
171
|
+
const handlePointerLeave = () => {
|
|
172
|
+
cancelLongPress();
|
|
173
|
+
};
|
|
174
|
+
const isActivationKey = (e) => e.key === Key.Space || e.key === Key.Enter;
|
|
175
|
+
const handleKeyDown = (e) => {
|
|
176
|
+
if (opts.isInactive) return;
|
|
177
|
+
if (isActivationKey(e) && !e.repeat && !isPressingRef.current) {
|
|
178
|
+
isPressingRef.current = true;
|
|
179
|
+
longPressFiredRef.current = false;
|
|
180
|
+
opts.onPressStart?.(e);
|
|
181
|
+
}
|
|
182
|
+
};
|
|
183
|
+
const handleKeyUp = (e) => {
|
|
184
|
+
if (isActivationKey(e) && isPressingRef.current) {
|
|
185
|
+
isPressingRef.current = false;
|
|
186
|
+
opts.onPressEnd?.(e);
|
|
187
|
+
}
|
|
188
|
+
};
|
|
189
|
+
const debouncedOnClick = useDebounceHandler(opts.onClick, opts.debounceMs);
|
|
190
|
+
const handleClick = (e) => {
|
|
191
|
+
if (opts.isLoading || opts.isSkeleton) return;
|
|
192
|
+
if (longPressFiredRef.current) {
|
|
193
|
+
longPressFiredRef.current = false;
|
|
194
|
+
e.preventDefault();
|
|
195
|
+
return;
|
|
196
|
+
}
|
|
197
|
+
debouncedOnClick(e);
|
|
198
|
+
};
|
|
199
|
+
return {
|
|
200
|
+
onClick: handleClick,
|
|
201
|
+
onPointerDown: composeEventHandlers(opts.onPointerDown, handlePointerDown),
|
|
202
|
+
onPointerUp: composeEventHandlers(opts.onPointerUp, handlePointerUp),
|
|
203
|
+
onPointerCancel: composeEventHandlers(opts.onPointerCancel, handlePointerCancel),
|
|
204
|
+
onPointerLeave: composeEventHandlers(opts.onPointerLeave, handlePointerLeave),
|
|
205
|
+
onKeyDown: composeEventHandlers(opts.onKeyDown, handleKeyDown),
|
|
206
|
+
onKeyUp: composeEventHandlers(opts.onKeyUp, handleKeyUp)
|
|
207
|
+
};
|
|
208
|
+
}
|
|
121
209
|
var Button = forwardRef(
|
|
122
210
|
({
|
|
123
211
|
className,
|
|
@@ -126,28 +214,29 @@ var Button = forwardRef(
|
|
|
126
214
|
tone,
|
|
127
215
|
size,
|
|
128
216
|
shape,
|
|
129
|
-
|
|
130
|
-
|
|
217
|
+
isFullWidth,
|
|
218
|
+
isMultiline,
|
|
131
219
|
padding,
|
|
132
220
|
radius,
|
|
133
221
|
width,
|
|
134
222
|
height,
|
|
135
223
|
minWidth,
|
|
136
224
|
minHeight,
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
225
|
+
leadingSlot,
|
|
226
|
+
trailingSlot,
|
|
227
|
+
loadingSlot,
|
|
228
|
+
isLoading,
|
|
140
229
|
loadingText,
|
|
141
|
-
|
|
230
|
+
isSkeleton,
|
|
231
|
+
isDisabled,
|
|
142
232
|
asChild,
|
|
143
|
-
type =
|
|
144
|
-
disabled,
|
|
233
|
+
type = ButtonType.Button,
|
|
145
234
|
children,
|
|
146
235
|
onClick,
|
|
147
236
|
onPressStart,
|
|
148
237
|
onPressEnd,
|
|
149
238
|
onLongPress,
|
|
150
|
-
longPressDelay =
|
|
239
|
+
longPressDelay = PressExtensions.longPressDelay.default,
|
|
151
240
|
debounceMs,
|
|
152
241
|
onPointerDown,
|
|
153
242
|
onPointerUp,
|
|
@@ -157,19 +246,23 @@ var Button = forwardRef(
|
|
|
157
246
|
onKeyUp,
|
|
158
247
|
...rest
|
|
159
248
|
}, ref) => {
|
|
160
|
-
if (
|
|
249
|
+
if (isLoading && isSkeleton) {
|
|
161
250
|
console.warn(
|
|
162
|
-
|
|
251
|
+
`[${COMPONENT_NAME}] \`isLoading\` and \`isSkeleton\` are mutually exclusive \u2014 \`isSkeleton\` takes precedence.`
|
|
163
252
|
);
|
|
164
253
|
}
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
const
|
|
254
|
+
let safeLongPressDelay = longPressDelay;
|
|
255
|
+
if (longPressDelay < PressExtensions.longPressDelay.min || longPressDelay > PressExtensions.longPressDelay.max) {
|
|
256
|
+
console.warn(
|
|
257
|
+
`[${COMPONENT_NAME}] longPressDelay=${longPressDelay}ms is outside reasonable range (${PressExtensions.longPressDelay.min}\u2013${PressExtensions.longPressDelay.max}ms). Falling back to ${PressExtensions.longPressDelay.default}ms.`
|
|
258
|
+
);
|
|
259
|
+
safeLongPressDelay = PressExtensions.longPressDelay.default;
|
|
260
|
+
}
|
|
261
|
+
const skeletonActive = !!isSkeleton;
|
|
262
|
+
const loadingActive = !skeletonActive && !!isLoading;
|
|
263
|
+
const isInactive = loadingActive || skeletonActive || !!isDisabled;
|
|
264
|
+
const dataState = skeletonActive ? ButtonDataState.Skeleton : loadingActive ? ButtonDataState.Loading : isDisabled ? ButtonDataState.Disabled : void 0;
|
|
265
|
+
const Comp = asChild ? Slot : HtmlElement.Button;
|
|
173
266
|
const overrideStyle = (() => {
|
|
174
267
|
const padStyle = CssExtensions.resolvePadding(padding);
|
|
175
268
|
const radStyle = CssExtensions.resolveRadius(radius);
|
|
@@ -177,87 +270,31 @@ var Button = forwardRef(
|
|
|
177
270
|
if (!padStyle && !radStyle && !boxStyle && !style) return void 0;
|
|
178
271
|
return { ...padStyle, ...radStyle, ...boxStyle, ...style };
|
|
179
272
|
})();
|
|
180
|
-
const
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
};
|
|
197
|
-
const
|
|
198
|
-
|
|
199
|
-
if (!isPressingRef.current) {
|
|
200
|
-
isPressingRef.current = true;
|
|
201
|
-
longPressFiredRef.current = false;
|
|
202
|
-
onPressStart?.(e);
|
|
203
|
-
}
|
|
204
|
-
if (onLongPress) {
|
|
205
|
-
longPressTimerRef.current = setTimeout(() => {
|
|
206
|
-
longPressFiredRef.current = true;
|
|
207
|
-
onLongPress(e);
|
|
208
|
-
longPressTimerRef.current = void 0;
|
|
209
|
-
}, safeLongPressDelay);
|
|
210
|
-
}
|
|
211
|
-
};
|
|
212
|
-
const handlePointerUp = (e) => {
|
|
213
|
-
cancelLongPress();
|
|
214
|
-
if (isPressingRef.current) {
|
|
215
|
-
isPressingRef.current = false;
|
|
216
|
-
onPressEnd?.(e);
|
|
217
|
-
}
|
|
218
|
-
};
|
|
219
|
-
const handlePointerCancel = (e) => {
|
|
220
|
-
cancelLongPress();
|
|
221
|
-
if (isPressingRef.current) {
|
|
222
|
-
isPressingRef.current = false;
|
|
223
|
-
onPressEnd?.(e);
|
|
224
|
-
}
|
|
225
|
-
};
|
|
226
|
-
const handlePointerLeave = () => {
|
|
227
|
-
cancelLongPress();
|
|
228
|
-
};
|
|
229
|
-
const handleKeyDown = (e) => {
|
|
230
|
-
if (isInactive) return;
|
|
231
|
-
if ((e.key === " " || e.key === "Enter") && !e.repeat && !isPressingRef.current) {
|
|
232
|
-
isPressingRef.current = true;
|
|
233
|
-
longPressFiredRef.current = false;
|
|
234
|
-
onPressStart?.(e);
|
|
235
|
-
}
|
|
236
|
-
};
|
|
237
|
-
const handleKeyUp = (e) => {
|
|
238
|
-
if ((e.key === " " || e.key === "Enter") && isPressingRef.current) {
|
|
239
|
-
isPressingRef.current = false;
|
|
240
|
-
onPressEnd?.(e);
|
|
241
|
-
}
|
|
242
|
-
};
|
|
243
|
-
const debouncedOnClick = useDebounceHandler(onClick, debounceMs);
|
|
244
|
-
const handleClick = (e) => {
|
|
245
|
-
if (isLoading || isSkeleton) return;
|
|
246
|
-
if (longPressFiredRef.current) {
|
|
247
|
-
longPressFiredRef.current = false;
|
|
248
|
-
e.preventDefault();
|
|
249
|
-
return;
|
|
250
|
-
}
|
|
251
|
-
debouncedOnClick(e);
|
|
252
|
-
};
|
|
253
|
-
const content = isLoading ? /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
254
|
-
/* @__PURE__ */ jsx(Spinner, {}),
|
|
273
|
+
const eventHandlers = useButtonInteractivity({
|
|
274
|
+
isInactive,
|
|
275
|
+
isLoading: loadingActive,
|
|
276
|
+
isSkeleton: skeletonActive,
|
|
277
|
+
longPressDelay: safeLongPressDelay,
|
|
278
|
+
debounceMs,
|
|
279
|
+
onClick,
|
|
280
|
+
onPressStart,
|
|
281
|
+
onPressEnd,
|
|
282
|
+
onLongPress,
|
|
283
|
+
onPointerDown,
|
|
284
|
+
onPointerUp,
|
|
285
|
+
onPointerCancel,
|
|
286
|
+
onPointerLeave,
|
|
287
|
+
onKeyDown,
|
|
288
|
+
onKeyUp
|
|
289
|
+
});
|
|
290
|
+
const content = loadingActive ? /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
291
|
+
loadingSlot ?? /* @__PURE__ */ jsx(Spinner, {}),
|
|
255
292
|
loadingText !== void 0 ? /* @__PURE__ */ jsx("span", { children: loadingText }) : children,
|
|
256
|
-
|
|
293
|
+
trailingSlot
|
|
257
294
|
] }) : /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
258
|
-
|
|
295
|
+
leadingSlot,
|
|
259
296
|
children,
|
|
260
|
-
|
|
297
|
+
trailingSlot
|
|
261
298
|
] });
|
|
262
299
|
return /* @__PURE__ */ jsx(
|
|
263
300
|
Comp,
|
|
@@ -265,28 +302,29 @@ var Button = forwardRef(
|
|
|
265
302
|
ref,
|
|
266
303
|
type: asChild ? void 0 : type,
|
|
267
304
|
className: cn(
|
|
268
|
-
buttonVariants({
|
|
305
|
+
buttonVariants({
|
|
306
|
+
variant,
|
|
307
|
+
tone,
|
|
308
|
+
size,
|
|
309
|
+
shape,
|
|
310
|
+
fullWidth: isFullWidth,
|
|
311
|
+
wrap: isMultiline
|
|
312
|
+
}),
|
|
269
313
|
className
|
|
270
314
|
),
|
|
271
315
|
style: overrideStyle,
|
|
272
|
-
disabled: OptionalExtensions.from(
|
|
273
|
-
"aria-busy": OptionalExtensions.from(
|
|
274
|
-
tabIndex: OptionalExtensions.from(
|
|
316
|
+
disabled: OptionalExtensions.from(isDisabled, true),
|
|
317
|
+
"aria-busy": OptionalExtensions.from(loadingActive || skeletonActive, true),
|
|
318
|
+
tabIndex: OptionalExtensions.from(skeletonActive, -1),
|
|
275
319
|
"data-state": dataState,
|
|
276
|
-
|
|
277
|
-
onPointerDown: composeEventHandlers(onPointerDown, handlePointerDown),
|
|
278
|
-
onPointerUp: composeEventHandlers(onPointerUp, handlePointerUp),
|
|
279
|
-
onPointerCancel: composeEventHandlers(onPointerCancel, handlePointerCancel),
|
|
280
|
-
onPointerLeave: composeEventHandlers(onPointerLeave, handlePointerLeave),
|
|
281
|
-
onKeyDown: composeEventHandlers(onKeyDown, handleKeyDown),
|
|
282
|
-
onKeyUp: composeEventHandlers(onKeyUp, handleKeyUp),
|
|
320
|
+
...eventHandlers,
|
|
283
321
|
...rest,
|
|
284
322
|
children: content
|
|
285
323
|
}
|
|
286
324
|
);
|
|
287
325
|
}
|
|
288
326
|
);
|
|
289
|
-
Button.displayName =
|
|
327
|
+
Button.displayName = COMPONENT_NAME;
|
|
290
328
|
|
|
291
329
|
// src/actions/iconButton/IconButton.variants.ts
|
|
292
330
|
var iconButtonVariants = tv({
|
|
@@ -994,5 +1032,5 @@ var BackToTopButton = forwardRef(
|
|
|
994
1032
|
BackToTopButton.displayName = "BackToTopButton";
|
|
995
1033
|
|
|
996
1034
|
export { BackToTopButton, Button, ButtonGroup, CopyButton, DisclosureButton, FAB, IconButton, Link, OverlayButton, SegmentedControl, SpeedDial, SpeedDialAction, SpeedDialTrigger, ToggleButton, ToggleButtonGroup, Toolbar, ToolbarButton, ToolbarLink, ToolbarSeparator, buttonVariants, fabVariants, iconButtonVariants, linkVariants, toggleButtonVariants };
|
|
997
|
-
//# sourceMappingURL=chunk-
|
|
998
|
-
//# sourceMappingURL=chunk-
|
|
1035
|
+
//# sourceMappingURL=chunk-3IEGN2OO.js.map
|
|
1036
|
+
//# sourceMappingURL=chunk-3IEGN2OO.js.map
|