@uxf/core 1.10.2 → 2.0.2
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/README.md +173 -18
- package/Validators/FormValidator.js +2 -1
- package/Validators/Validator.js +2 -1
- package/constants/classes.d.ts +14 -0
- package/constants/classes.js +18 -0
- package/cookie/index.js +6 -5
- package/hooks/_useSimulatedButton.d.ts +15 -0
- package/hooks/_useSimulatedButton.js +51 -0
- package/hooks/useAnchorProps.d.ts +8 -0
- package/hooks/useAnchorProps.js +79 -0
- package/hooks/useBodyScrollLock.d.ts +4 -1
- package/hooks/useBodyScrollLock.js +23 -31
- package/hooks/useButtonProps.d.ts +6 -0
- package/hooks/useButtonProps.js +91 -0
- package/hooks/useClickableProps.d.ts +8 -0
- package/hooks/useClickableProps.js +75 -0
- package/hooks/useFocusReturn.d.ts +1 -0
- package/hooks/useFocusReturn.js +38 -0
- package/hooks/useFocusTrap.d.ts +1 -0
- package/hooks/useFocusTrap.js +149 -0
- package/hooks/useInputFocus.d.ts +7 -0
- package/hooks/useInputFocus.js +44 -0
- package/hooks/useIsMounted.js +4 -5
- package/hooks/useIsomorphicLayoutEffect.js +2 -1
- package/hooks/useKey.d.ts +9 -2
- package/hooks/useKey.js +20 -20
- package/hooks/useMinWindowWidth.js +10 -10
- package/hooks/useMouseDragToScroll.d.ts +2 -0
- package/hooks/useMouseDragToScroll.js +67 -0
- package/hooks/usePagination.js +7 -3
- package/hooks/useRafState.d.ts +1 -1
- package/hooks/useRafState.js +6 -7
- package/hooks/useTabs.d.ts +15 -0
- package/hooks/useTabs.js +59 -0
- package/hooks/useUnmount.js +5 -4
- package/hooks/useUpdateEffect.d.ts +2 -1
- package/hooks/useUpdateEffect.js +11 -10
- package/hooks/useWindowScroll.js +18 -18
- package/hooks/useWindowSize.js +15 -15
- package/index.js +13 -6
- package/next/index.js +6 -3
- package/package.json +18 -18
- package/utils/camelCaseToDash.js +2 -1
- package/utils/composeRefs.d.ts +2 -1
- package/utils/composeRefs.js +10 -9
- package/utils/cx.d.ts +3 -0
- package/utils/cx.js +59 -0
- package/utils/isBrowser.js +3 -1
- package/utils/isServer.js +4 -2
- package/utils/pagination.js +15 -8
- package/utils/pagination.test.js +2 -2
- package/utils/slugify.js +2 -1
- package/utils/trimTrailingZeros.js +2 -1
- package/hooks/useKeydownToMouseClick.d.ts +0 -3
- package/hooks/useKeydownToMouseClick.js +0 -24
package/README.md
CHANGED
|
@@ -1,5 +1,20 @@
|
|
|
1
1
|
# UXF Core
|
|
2
2
|
|
|
3
|
+
## Constants
|
|
4
|
+
|
|
5
|
+
- common modifier classnames for interactive elements (eg. `CLASSES.IS_HOVERABLE` for is-hoverable classname)
|
|
6
|
+
- `focus-visible`
|
|
7
|
+
- `is-active`
|
|
8
|
+
- `is-busy`
|
|
9
|
+
- `is-disabled`
|
|
10
|
+
- `is-focused`
|
|
11
|
+
- `is-hovered`
|
|
12
|
+
- `is-hoverable`
|
|
13
|
+
- `is-invalid`
|
|
14
|
+
- `is-readonly`
|
|
15
|
+
- `is-selected`
|
|
16
|
+
- `is-not-hoverable`
|
|
17
|
+
|
|
3
18
|
## Cookie
|
|
4
19
|
|
|
5
20
|
- Cookie options
|
|
@@ -26,13 +41,18 @@ cookie.delete("cookie-name", /* options (optional) */);
|
|
|
26
41
|
|
|
27
42
|
```tsx
|
|
28
43
|
import { useBodyScrollLock } from "@uxf/core/hooks/useBodyScrollLock";
|
|
44
|
+
import { useState } from "react";
|
|
29
45
|
|
|
30
46
|
const innerRef = useRef<HTMLDivElement>(null);
|
|
31
47
|
const [isOpen, setIsOpen] = useState<boolean>();
|
|
32
48
|
|
|
33
|
-
const clearAllOnclose = false;
|
|
49
|
+
const clearAllOnclose = false;
|
|
34
50
|
|
|
35
|
-
useBodyScrollLock<HTMLDivElement>(innerRef, isOpen,
|
|
51
|
+
useBodyScrollLock<HTMLDivElement>(innerRef, isOpen, {
|
|
52
|
+
allowTouchMove: undefined, // https://github.com/willmcpo/body-scroll-lock#allowtouchmove
|
|
53
|
+
clearAllOnClose: false, // optionally call clearAllBodyScrollLocks method on unmount
|
|
54
|
+
reserveScrollBarGap: undefined, // https://github.com/willmcpo/body-scroll-lock#reservescrollbargap
|
|
55
|
+
});
|
|
36
56
|
|
|
37
57
|
<div ref={innerRef}>Element which activates scroll lock on its parent elements.</div>
|
|
38
58
|
```
|
|
@@ -49,24 +69,18 @@ useIsomorphicLayoutEffect(() => {/* code */}, [/* deps */]);
|
|
|
49
69
|
|
|
50
70
|
```tsx
|
|
51
71
|
import { useKey } from "@uxf/core/hooks/useKey";
|
|
52
|
-
import {
|
|
72
|
+
import { useRef } from "react";
|
|
53
73
|
|
|
54
|
-
const
|
|
74
|
+
const targetRef = useRef<HTMLDivElement>(null);
|
|
55
75
|
const disabled = false; // eg. for passing disabled state
|
|
56
76
|
|
|
57
|
-
useKey<HTMLDivElement>(
|
|
77
|
+
useKey<HTMLDivElement>("Enter", () => console.log("callback"), {
|
|
78
|
+
disabled,
|
|
79
|
+
targetRef, // if not provided, then `document` will be used
|
|
80
|
+
type: "keydown"
|
|
81
|
+
});
|
|
58
82
|
|
|
59
|
-
<div ref={
|
|
60
|
-
```
|
|
61
|
-
```tsx
|
|
62
|
-
import { useKeydownToMouseClick } from "@uxf/core/hooks/useKeydownToMouseClick";
|
|
63
|
-
|
|
64
|
-
const innerRef = useRef<HTMLDivElement>(null);
|
|
65
|
-
const disabled = false; // eg. for passing disabled state
|
|
66
|
-
|
|
67
|
-
useKeydownToMouseClick<HTMLDivElement>(innerRef, (e: KeyboardEvent) => e.key === "Enter", disabled);
|
|
68
|
-
|
|
69
|
-
<div onClick={() => console.log("success")} ref={innerRef}>Element with onClick triggerable both by mouse click and enter key.</div>
|
|
83
|
+
<div ref={targetRef} tabIndex={0}>Element with callback triggerable by enter key.</div>
|
|
70
84
|
```
|
|
71
85
|
```tsx
|
|
72
86
|
import { useMinWindowWidth } from "@uxf/core/hooks/useMinWindowWidth";
|
|
@@ -113,6 +127,141 @@ const windowSize = useWindowSize();
|
|
|
113
127
|
|
|
114
128
|
const example = windowSize && windowSize.width > 1200 ? "desktop" : "tablet";
|
|
115
129
|
```
|
|
130
|
+
```tsx
|
|
131
|
+
import { useFocusTrap } from "@uxf/core/hooks/useFocusTrap";
|
|
132
|
+
import { useState } from "react";
|
|
133
|
+
|
|
134
|
+
const [active, setActive] = useState<boolean>();
|
|
135
|
+
|
|
136
|
+
const focusTrapRef = useFocusTrap(active);
|
|
137
|
+
|
|
138
|
+
<div ref={focusTrapRef}>Element which trap focus inside if `active` is truthy.</div>
|
|
139
|
+
```
|
|
140
|
+
```tsx
|
|
141
|
+
import { useFocusReturn } from "@uxf/core/hooks/useFocusReturn";
|
|
142
|
+
import { useState } from "react";
|
|
143
|
+
|
|
144
|
+
const [active, setActive] = useState<boolean>();
|
|
145
|
+
|
|
146
|
+
// Returns focus to last active element, e.g. in Modal or Popover
|
|
147
|
+
useFocusReturn(active);
|
|
148
|
+
```
|
|
149
|
+
```tsx
|
|
150
|
+
import { useAnchorProps } from "@uxf/core/hooks/useAnchorProps";
|
|
151
|
+
import { AnchorHTMLAttributes } from "react";
|
|
152
|
+
|
|
153
|
+
// extends <a /> by `analyticsCallback`, `disabled`, `loading`, `submit` props
|
|
154
|
+
const anchorProps = useAnchorProps<AnchorHTMLAttributes<HTMLAnchorElement>>({
|
|
155
|
+
analyticsCallback: () => console.log("analytics"),
|
|
156
|
+
disabled: false,
|
|
157
|
+
href: "https://www.google.com/",
|
|
158
|
+
loading: false,
|
|
159
|
+
onClick: () => console.log("success"),
|
|
160
|
+
submit: true, // simulate <button type="submit" /> function
|
|
161
|
+
});
|
|
162
|
+
|
|
163
|
+
<a {...anchorProps}>Click me</a>
|
|
164
|
+
|
|
165
|
+
// example with generics
|
|
166
|
+
import { UseAnchorProps, useAnchorProps } from "@uxf/core/hooks/useAnchorProps";
|
|
167
|
+
import { AnchorHTMLAttributes } from "react";
|
|
168
|
+
|
|
169
|
+
interface Props extends UseAnchorProps, AnchorHTMLAttributes<HTMLAnchorElement> {
|
|
170
|
+
customProp?: boolean;
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
const anchorProps = useAnchorProps<Props>({
|
|
174
|
+
customProp: true,
|
|
175
|
+
loading: false,
|
|
176
|
+
href: "https://www.google.com/",
|
|
177
|
+
});
|
|
178
|
+
|
|
179
|
+
<a {...anchorProps}>Click me</a>
|
|
180
|
+
|
|
181
|
+
```
|
|
182
|
+
```tsx
|
|
183
|
+
import { useButtonProps } from "@uxf/core/hooks/useButtonProps";
|
|
184
|
+
import { ButtonHTMLAttributes } from "react";
|
|
185
|
+
|
|
186
|
+
// extends <button /> by `analyticsCallback` and `loading` props
|
|
187
|
+
const buttonProps = useButtonProps<ButtonHTMLAttributes<HTMLButtonElement>>({
|
|
188
|
+
analyticsCallback: () => console.log("analytics"),
|
|
189
|
+
disabled: false,
|
|
190
|
+
loading: false,
|
|
191
|
+
onClick: () => console.log("success"),
|
|
192
|
+
type: "submit",
|
|
193
|
+
});
|
|
194
|
+
|
|
195
|
+
<button {...buttonProps}>Click me</button>
|
|
196
|
+
|
|
197
|
+
// example with generics
|
|
198
|
+
import { UseButtonProps, useButtonProps } from "@uxf/core/hooks/useButtonProps";
|
|
199
|
+
import { ButtonHTMLAttributes } from "react";
|
|
200
|
+
|
|
201
|
+
interface Props extends UseButtonProps, ButtonHTMLAttributes<HTMLButtonElement> {
|
|
202
|
+
customProp?: boolean;
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
const buttonProps = useButtonProps<Props>({
|
|
206
|
+
customProp: true,
|
|
207
|
+
loading: false,
|
|
208
|
+
type: "submit",
|
|
209
|
+
});
|
|
210
|
+
|
|
211
|
+
<button {...buttonProps}>Click me</button>
|
|
212
|
+
```
|
|
213
|
+
```tsx
|
|
214
|
+
import { useClickableProps } from "@uxf/core/hooks/useClickableProps";
|
|
215
|
+
import { HTMLAttributes } from "react";
|
|
216
|
+
|
|
217
|
+
// extends any HTML element by `analyticsCallback`, `disabled`, `loading`, `submit` props
|
|
218
|
+
const clickableProps = useClickableProps<HTMLAttributes<HTMLDivElement>>({
|
|
219
|
+
analyticsCallback: () => console.log("analytics"),
|
|
220
|
+
disabled: false,
|
|
221
|
+
loading: false,
|
|
222
|
+
onClick: () => console.log("success"),
|
|
223
|
+
submit: true, // simulate <button type="submit" /> function
|
|
224
|
+
});
|
|
225
|
+
|
|
226
|
+
<div {...clickableProps}>Click me</div>
|
|
227
|
+
|
|
228
|
+
// example with generics
|
|
229
|
+
import { UseClickableProps, useClickableProps } from "@uxf/core/hooks/useClickableProps";
|
|
230
|
+
import { HTMLAttributes } from "react";
|
|
231
|
+
|
|
232
|
+
interface Props extends UseClickableProps, HTMLAttributes<HTMLDivElement> {
|
|
233
|
+
customProp?: boolean;
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
const buttonProps = useClickableProps<Props>({
|
|
237
|
+
customProp: true,
|
|
238
|
+
hidden: false,
|
|
239
|
+
loading: false,
|
|
240
|
+
});
|
|
241
|
+
|
|
242
|
+
<button {...buttonProps}>Click me</button>
|
|
243
|
+
```
|
|
244
|
+
```tsx
|
|
245
|
+
import { useMouseDragToScroll } from "@uxf/core/hooks/useMouseDragToScroll";
|
|
246
|
+
|
|
247
|
+
const targetRef = useRef<HTMLDivElement>(null);
|
|
248
|
+
|
|
249
|
+
const style = useMouseDragToScroll(scrollRef);
|
|
250
|
+
|
|
251
|
+
<div style={style}>Drag to scroll</div>
|
|
252
|
+
```
|
|
253
|
+
```tsx
|
|
254
|
+
import { useInputFocus } from "@uxf/core/hooks/useInputFocus";
|
|
255
|
+
|
|
256
|
+
const focusRef = useRef<HTMLInputElement>(null); // or HTMLTextAreaElement
|
|
257
|
+
const { onBlur, onFocus } = props;
|
|
258
|
+
|
|
259
|
+
const input = useInputFocus(focusRef, onBlur, onFocus);
|
|
260
|
+
|
|
261
|
+
<div>Input is {input.focused}</div>
|
|
262
|
+
<button onClick={input.focus}>Focus input</button>
|
|
263
|
+
<input onBlur={input.onBlur} onFocus={input.onFocus} ref={focusRef} />
|
|
264
|
+
```
|
|
116
265
|
|
|
117
266
|
## Next
|
|
118
267
|
```tsx
|
|
@@ -137,11 +286,17 @@ const secondRef = useRef<HTMLDivElement>(null);
|
|
|
137
286
|
const example = <div ref={composeRefs(firstRef, secondRef)} />;
|
|
138
287
|
```
|
|
139
288
|
```tsx
|
|
289
|
+
import { cx } from "@uxf/core/utils/cx";
|
|
290
|
+
|
|
291
|
+
/* fork of https://github.com/lukeed/clsx */
|
|
292
|
+
const example = cx("foo", true && "bar", "baz", false && "bam", undefined) /* returns "foo bar baz" */
|
|
293
|
+
```
|
|
294
|
+
```tsx
|
|
140
295
|
import { isBrowser } from "@uxf/core/utils/isBrowser";
|
|
141
296
|
import { isServer } from "@uxf/core/utils/isServer";
|
|
142
297
|
|
|
143
|
-
const browserExample = isBrowser /* returns true if DOM is available */
|
|
144
|
-
const serverExample = isServer /* returns true if DOM is NOT available */
|
|
298
|
+
const browserExample = isBrowser; /* returns true if DOM is available */
|
|
299
|
+
const serverExample = isServer; /* returns true if DOM is NOT available */
|
|
145
300
|
```
|
|
146
301
|
```tsx
|
|
147
302
|
import { slugify } from "@uxf/core/utils/slugify";
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.FormValidator = void 0;
|
|
3
4
|
var Validator_1 = require("./Validator");
|
|
4
5
|
var emptyValue = function (value) { return value === null || value === undefined || value === ""; };
|
|
5
6
|
// required
|
|
@@ -54,4 +55,4 @@ exports.FormValidator = {
|
|
|
54
55
|
isPhone: isPhone,
|
|
55
56
|
required: required,
|
|
56
57
|
};
|
|
57
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
58
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRm9ybVZhbGlkYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9WYWxpZGF0b3JzL0Zvcm1WYWxpZGF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEseUNBQXdDO0FBRXhDLElBQU0sVUFBVSxHQUFHLFVBQUMsS0FBVSxJQUFLLE9BQUEsS0FBSyxLQUFLLElBQUksSUFBSSxLQUFLLEtBQUssU0FBUyxJQUFJLEtBQUssS0FBSyxFQUFFLEVBQXJELENBQXFELENBQUM7QUFFekYsV0FBVztBQUNYLElBQU0sUUFBUSxHQUFHLFVBQUMsWUFBcUIsSUFBSyxPQUFBLFVBQUMsS0FBVTtJQUNuRCxPQUFBLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxJQUFJLFVBQVUsQ0FBQyxDQUFDLENBQUMsU0FBUztBQUExRCxDQUEwRCxFQURsQixDQUNrQixDQUFDO0FBRS9ELFFBQVE7QUFDUixJQUFNLE9BQU8sR0FBRyxVQUFDLFlBQXFCLElBQUssT0FBQSxVQUFDLEtBQWE7SUFDckQsT0FBQSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLHFCQUFTLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLElBQUkscUJBQXFCLENBQUMsQ0FBQyxDQUFDLFNBQVM7QUFBbkcsQ0FBbUcsRUFENUQsQ0FDNEQsQ0FBQztBQUV4RyxRQUFRO0FBQ1IsSUFBTSxPQUFPLEdBQUcsVUFBQyxZQUFxQixJQUFLLE9BQUEsVUFBQyxLQUFhO0lBQ3JELE9BQUEsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxxQkFBUyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxJQUFJLHNCQUFzQixDQUFDLENBQUMsQ0FBQyxTQUFTO0FBQXBHLENBQW9HLEVBRDdELENBQzZELENBQUM7QUFFekcsSUFBTSxVQUFVLEdBQUcsVUFBQyxRQUFnQixFQUFFLFlBQXFCLElBQUssT0FBQSxVQUFDLEtBQWE7SUFDMUUsSUFBSSxLQUFLLEtBQUssRUFBRSxFQUFFO1FBQ2QsT0FBTyxTQUFTLENBQUM7S0FDcEI7SUFDRCxJQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzdDLE9BQU8sV0FBVyxJQUFJLFFBQVEsQ0FBQyxDQUFDLENBQUMsWUFBWSxJQUFJLHFDQUFxQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7QUFDdkcsQ0FBQyxFQU4rRCxDQU0vRCxDQUFDO0FBRUYsZ0JBQWdCO0FBQ2hCLElBQU0saUJBQWlCLEdBQUcsVUFBQyxRQUFnQixFQUFFLFlBQXFCLElBQUssT0FBQSxVQUFDLEtBQWE7SUFDakYsSUFBSSxLQUFLLEtBQUssRUFBRSxFQUFFO1FBQ2QsT0FBTyxTQUFTLENBQUM7S0FDcEI7SUFDRCxJQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzdDLE9BQU8sV0FBVyxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsWUFBWSxJQUFJLHFDQUFxQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7QUFDdEcsQ0FBQyxFQU5zRSxDQU10RSxDQUFDO0FBRUYsVUFBVTtBQUNWLElBQU0sYUFBYSxHQUFHLFVBQUMsUUFBZ0IsRUFBRSxZQUFxQixJQUFLLE9BQUEsVUFBQyxLQUFhO0lBQzdFLElBQUksVUFBVSxDQUFDLEtBQUssQ0FBQyxFQUFFO1FBQ25CLE9BQU8sU0FBUyxDQUFDO0tBQ3BCO0lBQ0QsSUFBTSxXQUFXLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM3QyxPQUFPLFdBQVcsSUFBSSxRQUFRLENBQUMsQ0FBQyxDQUFDLFlBQVksSUFBSSxxQ0FBcUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0FBQ3ZHLENBQUMsRUFOa0UsQ0FNbEUsQ0FBQztBQUVGLG1CQUFtQjtBQUNuQixJQUFNLG9CQUFvQixHQUFHLFVBQUMsUUFBZ0IsRUFBRSxZQUFxQixJQUFLLE9BQUEsVUFBQyxLQUFhO0lBQ3BGLElBQUksVUFBVSxDQUFDLEtBQUssQ0FBQyxFQUFFO1FBQ25CLE9BQU8sU0FBUyxDQUFDO0tBQ3BCO0lBQ0QsSUFBTSxXQUFXLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM3QyxPQUFPLFdBQVcsR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLFlBQVksSUFBSSxxQ0FBcUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0FBQ3RHLENBQUMsRUFOeUUsQ0FNekUsQ0FBQztBQUVXLFFBQUEsYUFBYSxHQUFHO0lBQ3pCLE9BQU8sU0FBQTtJQUNQLG9CQUFvQixzQkFBQTtJQUNwQixhQUFhLGVBQUE7SUFDYixpQkFBaUIsbUJBQUE7SUFDakIsVUFBVSxZQUFBO0lBQ1YsT0FBTyxTQUFBO0lBQ1AsUUFBUSxVQUFBO0NBQ1gsQ0FBQyJ9
|
package/Validators/Validator.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Validator = void 0;
|
|
3
4
|
// Email
|
|
4
5
|
var EMAIL_REGEXP = /^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
|
|
5
6
|
var isEmail = function (email) { return EMAIL_REGEXP.test(email); };
|
|
@@ -10,4 +11,4 @@ exports.Validator = {
|
|
|
10
11
|
isEmail: isEmail,
|
|
11
12
|
isPhone: isPhone,
|
|
12
13
|
};
|
|
13
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
14
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVmFsaWRhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL1ZhbGlkYXRvcnMvVmFsaWRhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLFFBQVE7QUFDUixJQUFNLFlBQVksR0FBRyx1SkFBdUosQ0FBQztBQUM3SyxJQUFNLE9BQU8sR0FBRyxVQUFDLEtBQWEsSUFBYyxPQUFBLFlBQVksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQXhCLENBQXdCLENBQUM7QUFFckUsUUFBUTtBQUNSLElBQU0sWUFBWSxHQUFHLDZEQUE2RCxDQUFDO0FBQ25GLElBQU0sT0FBTyxHQUFHLFVBQUMsS0FBYSxJQUFjLE9BQUEsWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBeEIsQ0FBd0IsQ0FBQztBQUV4RCxRQUFBLFNBQVMsR0FBRztJQUNyQixPQUFPLFNBQUE7SUFDUCxPQUFPLFNBQUE7Q0FDVixDQUFDIn0=
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/** @description Classnames for interactive elements. */
|
|
2
|
+
export declare const CLASSES: {
|
|
3
|
+
readonly FOCUS_VISIBLE: "focus-visible";
|
|
4
|
+
readonly IS_ACTIVE: "is-active";
|
|
5
|
+
readonly IS_BUSY: "is-busy";
|
|
6
|
+
readonly IS_DISABLED: "is-disabled";
|
|
7
|
+
readonly IS_FOCUSED: "is-focused";
|
|
8
|
+
readonly IS_HOVERED: "is-hovered";
|
|
9
|
+
readonly IS_HOVERABLE: "is-hoverable";
|
|
10
|
+
readonly IS_INVALID: "is-invalid";
|
|
11
|
+
readonly IS_READONLY: "is-readonly";
|
|
12
|
+
readonly IS_SELECTED: "is-selected";
|
|
13
|
+
readonly IS_NOT_HOVERABLE: "is-not-hoverable";
|
|
14
|
+
};
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CLASSES = void 0;
|
|
4
|
+
/** @description Classnames for interactive elements. */
|
|
5
|
+
exports.CLASSES = {
|
|
6
|
+
FOCUS_VISIBLE: "focus-visible",
|
|
7
|
+
IS_ACTIVE: "is-active",
|
|
8
|
+
IS_BUSY: "is-busy",
|
|
9
|
+
IS_DISABLED: "is-disabled",
|
|
10
|
+
IS_FOCUSED: "is-focused",
|
|
11
|
+
IS_HOVERED: "is-hovered",
|
|
12
|
+
IS_HOVERABLE: "is-hoverable",
|
|
13
|
+
IS_INVALID: "is-invalid",
|
|
14
|
+
IS_READONLY: "is-readonly",
|
|
15
|
+
IS_SELECTED: "is-selected",
|
|
16
|
+
IS_NOT_HOVERABLE: "is-not-hoverable",
|
|
17
|
+
};
|
|
18
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3Nlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb25zdGFudHMvY2xhc3Nlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSx3REFBd0Q7QUFDM0MsUUFBQSxPQUFPLEdBQUc7SUFDbkIsYUFBYSxFQUFFLGVBQWU7SUFDOUIsU0FBUyxFQUFFLFdBQVc7SUFDdEIsT0FBTyxFQUFFLFNBQVM7SUFDbEIsV0FBVyxFQUFFLGFBQWE7SUFDMUIsVUFBVSxFQUFFLFlBQVk7SUFDeEIsVUFBVSxFQUFFLFlBQVk7SUFDeEIsWUFBWSxFQUFFLGNBQWM7SUFDNUIsVUFBVSxFQUFFLFlBQVk7SUFDeEIsV0FBVyxFQUFFLGFBQWE7SUFDMUIsV0FBVyxFQUFFLGFBQWE7SUFDMUIsZ0JBQWdCLEVBQUUsa0JBQWtCO0NBQzlCLENBQUMifQ==
|
package/cookie/index.js
CHANGED
|
@@ -11,6 +11,7 @@ var __values = (this && this.__values) || function(o) {
|
|
|
11
11
|
throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
|
|
12
12
|
};
|
|
13
13
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
|
+
exports.Cookie = void 0;
|
|
14
15
|
var Cookie = /** @class */ (function () {
|
|
15
16
|
function Cookie(ctx) {
|
|
16
17
|
if (ctx === void 0) { ctx = null; }
|
|
@@ -28,14 +29,14 @@ var Cookie = /** @class */ (function () {
|
|
|
28
29
|
if (options === void 0) { options = {}; }
|
|
29
30
|
var date = new Date();
|
|
30
31
|
date.setTime(date.getTime() + ttl * 1000);
|
|
31
|
-
var cookieParts = [name
|
|
32
|
+
var cookieParts = ["".concat(name, "=").concat(encodeURIComponent(value)), "expires=".concat(date.toUTCString())];
|
|
32
33
|
if (options.httpOnly) {
|
|
33
34
|
cookieParts.push("httponly");
|
|
34
35
|
}
|
|
35
36
|
if (options.secure) {
|
|
36
37
|
cookieParts.push("secure");
|
|
37
38
|
}
|
|
38
|
-
cookieParts.push("path="
|
|
39
|
+
cookieParts.push("path=".concat(options.path || "/"));
|
|
39
40
|
var cookie = cookieParts.join("; ");
|
|
40
41
|
if (typeof document !== "undefined") {
|
|
41
42
|
document.cookie = cookie;
|
|
@@ -58,11 +59,11 @@ var Cookie = /** @class */ (function () {
|
|
|
58
59
|
try {
|
|
59
60
|
for (var cookies_1 = __values(cookies), cookies_1_1 = cookies_1.next(); !cookies_1_1.done; cookies_1_1 = cookies_1.next()) {
|
|
60
61
|
var cookie = cookies_1_1.value;
|
|
61
|
-
//
|
|
62
|
+
// eslint-disable-next-line eqeqeq
|
|
62
63
|
while (cookie.charAt(0) == " ") {
|
|
63
64
|
cookie = cookie.substring(1);
|
|
64
65
|
}
|
|
65
|
-
//
|
|
66
|
+
// eslint-disable-next-line eqeqeq
|
|
66
67
|
if (cookie.indexOf(name) == 0) {
|
|
67
68
|
return cookie.substring(name.length, cookie.length);
|
|
68
69
|
}
|
|
@@ -85,4 +86,4 @@ var Cookie = /** @class */ (function () {
|
|
|
85
86
|
return Cookie;
|
|
86
87
|
}());
|
|
87
88
|
exports.Cookie = Cookie;
|
|
88
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
89
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29va2llL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7O0FBTUE7SUFHSSxnQkFBWSxHQUFzQjtRQUF0QixvQkFBQSxFQUFBLFVBQXNCO1FBQzlCLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO0lBQ25CLENBQUM7SUFFYSxhQUFNLEdBQXBCLFVBQXFCLEdBQWU7UUFBZixvQkFBQSxFQUFBLFVBQWU7UUFDaEMsT0FBTyxJQUFJLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMzQixDQUFDO0lBRU0sb0JBQUcsR0FBVixVQUFXLElBQVk7UUFDbkIsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM1QixDQUFDO0lBRU0sb0JBQUcsR0FBVixVQUFXLElBQVksRUFBRSxLQUFhLEVBQUUsR0FBVSxFQUFFLE9BQTJCO1FBQXZDLG9CQUFBLEVBQUEsVUFBVTtRQUFFLHdCQUFBLEVBQUEsWUFBMkI7UUFDM0UsSUFBTSxJQUFJLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLENBQUM7UUFFMUMsSUFBTSxXQUFXLEdBQUcsQ0FBQyxVQUFHLElBQUksY0FBSSxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsQ0FBRSxFQUFFLGtCQUFXLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBRSxDQUFDLENBQUM7UUFDOUYsSUFBSSxPQUFPLENBQUMsUUFBUSxFQUFFO1lBQ2xCLFdBQVcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7U0FDaEM7UUFDRCxJQUFJLE9BQU8sQ0FBQyxNQUFNLEVBQUU7WUFDaEIsV0FBVyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztTQUM5QjtRQUNELFdBQVcsQ0FBQyxJQUFJLENBQUMsZUFBUSxPQUFPLENBQUMsSUFBSSxJQUFJLEdBQUcsQ0FBRSxDQUFDLENBQUM7UUFDaEQsSUFBTSxNQUFNLEdBQUcsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUV0QyxJQUFJLE9BQU8sUUFBUSxLQUFLLFdBQVcsRUFBRTtZQUNqQyxRQUFRLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztTQUM1QjthQUFNO1lBQ0gsSUFBTSxhQUFhLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzVFLGFBQWEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDM0IsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLFlBQVksRUFBRSxhQUFhLENBQUMsQ0FBQztTQUN2RDtRQUVELE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFTSxvQkFBRyxHQUFWLFVBQVcsVUFBa0I7OztRQUN6QixJQUFNLGFBQWEsR0FDZixPQUFPLFFBQVEsS0FBSyxXQUFXO1lBQzNCLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDO1lBQ3JDLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxNQUFBLE1BQUEsTUFBQSxNQUFBLElBQUksQ0FBQyxHQUFHLDBDQUFFLEdBQUcsMENBQUUsT0FBTywwQ0FBRSxNQUFNLG1DQUFJLEVBQUUsQ0FBQyxDQUFDO1FBRW5FLElBQU0sSUFBSSxHQUFHLFVBQVUsR0FBRyxHQUFHLENBQUM7UUFDOUIsSUFBTSxPQUFPLEdBQUcsYUFBYSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQzs7WUFDekMsS0FBbUIsSUFBQSxZQUFBLFNBQUEsT0FBTyxDQUFBLGdDQUFBLHFEQUFFO2dCQUF2QixJQUFJLE1BQU0sb0JBQUE7Z0JBQ1gsa0NBQWtDO2dCQUNsQyxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxFQUFFO29CQUM1QixNQUFNLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztpQkFDaEM7Z0JBQ0Qsa0NBQWtDO2dCQUNsQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFO29CQUMzQixPQUFPLE1BQU0sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7aUJBQ3ZEO2FBQ0o7Ozs7Ozs7OztRQUVELE9BQU8sRUFBRSxDQUFDO0lBQ2QsQ0FBQztJQUVNLHVCQUFNLEdBQWIsVUFBYyxJQUFZLEVBQUUsT0FBMkI7UUFBM0Isd0JBQUEsRUFBQSxZQUEyQjtRQUNuRCxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDaEMsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUNMLGFBQUM7QUFBRCxDQUFDLEFBbEVELElBa0VDO0FBbEVZLHdCQUFNIn0=
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { KeyboardEventHandler, MouseEventHandler } from "react";
|
|
2
|
+
interface Props<T extends HTMLElement> {
|
|
3
|
+
analyticsCallback?: () => void;
|
|
4
|
+
isClickable: boolean;
|
|
5
|
+
onClick?: MouseEventHandler<T>;
|
|
6
|
+
onKeyDown?: KeyboardEventHandler<T>;
|
|
7
|
+
onKeyUp?: KeyboardEventHandler<T>;
|
|
8
|
+
submit?: boolean;
|
|
9
|
+
}
|
|
10
|
+
export declare function _useSimulatedButton<T extends HTMLElement>({ analyticsCallback, isClickable, onClick, onKeyDown, onKeyUp, submit, }: Props<T>): {
|
|
11
|
+
onClick: MouseEventHandler<T>;
|
|
12
|
+
onKeyDown: KeyboardEventHandler<T>;
|
|
13
|
+
onKeyUp: KeyboardEventHandler<T>;
|
|
14
|
+
};
|
|
15
|
+
export {};
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports._useSimulatedButton = void 0;
|
|
4
|
+
var react_1 = require("react");
|
|
5
|
+
function _useSimulatedButton(_a) {
|
|
6
|
+
var analyticsCallback = _a.analyticsCallback, isClickable = _a.isClickable, onClick = _a.onClick, onKeyDown = _a.onKeyDown, onKeyUp = _a.onKeyUp, submit = _a.submit;
|
|
7
|
+
var _onClick = (0, react_1.useCallback)(function (e) {
|
|
8
|
+
var _a;
|
|
9
|
+
if (isClickable) {
|
|
10
|
+
if (analyticsCallback) {
|
|
11
|
+
analyticsCallback();
|
|
12
|
+
}
|
|
13
|
+
if (submit) {
|
|
14
|
+
var closestForm = (_a = document.activeElement) === null || _a === void 0 ? void 0 : _a.closest("form");
|
|
15
|
+
if (closestForm) {
|
|
16
|
+
closestForm.dispatchEvent(new Event("submit", { bubbles: true, cancelable: true }));
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
if (onClick) {
|
|
20
|
+
onClick(e);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
else {
|
|
24
|
+
e.preventDefault();
|
|
25
|
+
}
|
|
26
|
+
}, [analyticsCallback, isClickable, onClick, submit]);
|
|
27
|
+
var _onKeyUp = (0, react_1.useCallback)(function (e) {
|
|
28
|
+
if (isClickable && (e.key === "Enter" || e.key === " ")) {
|
|
29
|
+
e.target.dispatchEvent(new MouseEvent("click", {
|
|
30
|
+
bubbles: true,
|
|
31
|
+
buttons: 1,
|
|
32
|
+
cancelable: true,
|
|
33
|
+
view: window,
|
|
34
|
+
}));
|
|
35
|
+
if (onKeyUp) {
|
|
36
|
+
onKeyUp(e);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
}, [isClickable, onKeyUp]);
|
|
40
|
+
var _onKeyDown = (0, react_1.useCallback)(function (e) {
|
|
41
|
+
if (isClickable && e.key === " ") {
|
|
42
|
+
e.preventDefault();
|
|
43
|
+
if (onKeyDown) {
|
|
44
|
+
onKeyDown(e);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
}, [isClickable, onKeyDown]);
|
|
48
|
+
return { onClick: _onClick, onKeyDown: _onKeyDown, onKeyUp: _onKeyUp };
|
|
49
|
+
}
|
|
50
|
+
exports._useSimulatedButton = _useSimulatedButton;
|
|
51
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiX3VzZVNpbXVsYXRlZEJ1dHRvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ob29rcy9fdXNlU2ltdWxhdGVkQnV0dG9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLCtCQUE2RTtBQVc3RSxTQUFnQixtQkFBbUIsQ0FBd0IsRUFPaEQ7UUFOUCxpQkFBaUIsdUJBQUEsRUFDakIsV0FBVyxpQkFBQSxFQUNYLE9BQU8sYUFBQSxFQUNQLFNBQVMsZUFBQSxFQUNULE9BQU8sYUFBQSxFQUNQLE1BQU0sWUFBQTtJQUVOLElBQU0sUUFBUSxHQUFHLElBQUEsbUJBQVcsRUFDeEIsVUFBQSxDQUFDOztRQUNHLElBQUksV0FBVyxFQUFFO1lBQ2IsSUFBSSxpQkFBaUIsRUFBRTtnQkFDbkIsaUJBQWlCLEVBQUUsQ0FBQzthQUN2QjtZQUNELElBQUksTUFBTSxFQUFFO2dCQUNSLElBQU0sV0FBVyxHQUFHLE1BQUEsUUFBUSxDQUFDLGFBQWEsMENBQUUsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUM1RCxJQUFJLFdBQVcsRUFBRTtvQkFDYixXQUFXLENBQUMsYUFBYSxDQUFDLElBQUksS0FBSyxDQUFDLFFBQVEsRUFBRSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztpQkFDdkY7YUFDSjtZQUNELElBQUksT0FBTyxFQUFFO2dCQUNULE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUNkO1NBQ0o7YUFBTTtZQUNILENBQUMsQ0FBQyxjQUFjLEVBQUUsQ0FBQztTQUN0QjtJQUNMLENBQUMsRUFDRCxDQUFDLGlCQUFpQixFQUFFLFdBQVcsRUFBRSxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQ3BELENBQUM7SUFFRixJQUFNLFFBQVEsR0FBRyxJQUFBLG1CQUFXLEVBQ3hCLFVBQUEsQ0FBQztRQUNHLElBQUksV0FBVyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxPQUFPLElBQUksQ0FBQyxDQUFDLEdBQUcsS0FBSyxHQUFHLENBQUMsRUFBRTtZQUNyRCxDQUFDLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FDbEIsSUFBSSxVQUFVLENBQUMsT0FBTyxFQUFFO2dCQUNwQixPQUFPLEVBQUUsSUFBSTtnQkFDYixPQUFPLEVBQUUsQ0FBQztnQkFDVixVQUFVLEVBQUUsSUFBSTtnQkFDaEIsSUFBSSxFQUFFLE1BQU07YUFDZixDQUFDLENBQ0wsQ0FBQztZQUVGLElBQUksT0FBTyxFQUFFO2dCQUNULE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUNkO1NBQ0o7SUFDTCxDQUFDLEVBQ0QsQ0FBQyxXQUFXLEVBQUUsT0FBTyxDQUFDLENBQ3pCLENBQUM7SUFFRixJQUFNLFVBQVUsR0FBRyxJQUFBLG1CQUFXLEVBQzFCLFVBQUEsQ0FBQztRQUNHLElBQUksV0FBVyxJQUFJLENBQUMsQ0FBQyxHQUFHLEtBQUssR0FBRyxFQUFFO1lBQzlCLENBQUMsQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUVuQixJQUFJLFNBQVMsRUFBRTtnQkFDWCxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDaEI7U0FDSjtJQUNMLENBQUMsRUFDRCxDQUFDLFdBQVcsRUFBRSxTQUFTLENBQUMsQ0FDM0IsQ0FBQztJQUVGLE9BQU8sRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxDQUFDO0FBQzNFLENBQUM7QUFoRUQsa0RBZ0VDIn0=
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { AnchorHTMLAttributes } from "react";
|
|
2
|
+
export interface UseAnchorProps {
|
|
3
|
+
analyticsCallback?: () => void;
|
|
4
|
+
disabled?: boolean;
|
|
5
|
+
loading?: boolean;
|
|
6
|
+
submit?: boolean;
|
|
7
|
+
}
|
|
8
|
+
export declare function useAnchorProps<T extends AnchorHTMLAttributes<HTMLAnchorElement>>({ ["aria-busy"]: ariaBusy, ["aria-disabled"]: ariaDisabled, analyticsCallback, className, disabled, download, href, hrefLang, loading, media, onClick, onKeyDown, onKeyUp, ping, referrerPolicy, rel, role, submit, tabIndex, target, type, ...restProps }: UseAnchorProps & T): T;
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __assign = (this && this.__assign) || function () {
|
|
3
|
+
__assign = Object.assign || function(t) {
|
|
4
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
5
|
+
s = arguments[i];
|
|
6
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
7
|
+
t[p] = s[p];
|
|
8
|
+
}
|
|
9
|
+
return t;
|
|
10
|
+
};
|
|
11
|
+
return __assign.apply(this, arguments);
|
|
12
|
+
};
|
|
13
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
|
14
|
+
var t = {};
|
|
15
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
16
|
+
t[p] = s[p];
|
|
17
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
18
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
19
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
20
|
+
t[p[i]] = s[p[i]];
|
|
21
|
+
}
|
|
22
|
+
return t;
|
|
23
|
+
};
|
|
24
|
+
var __read = (this && this.__read) || function (o, n) {
|
|
25
|
+
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
|
26
|
+
if (!m) return o;
|
|
27
|
+
var i = m.call(o), r, ar = [], e;
|
|
28
|
+
try {
|
|
29
|
+
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
|
|
30
|
+
}
|
|
31
|
+
catch (error) { e = { error: error }; }
|
|
32
|
+
finally {
|
|
33
|
+
try {
|
|
34
|
+
if (r && !r.done && (m = i["return"])) m.call(i);
|
|
35
|
+
}
|
|
36
|
+
finally { if (e) throw e.error; }
|
|
37
|
+
}
|
|
38
|
+
return ar;
|
|
39
|
+
};
|
|
40
|
+
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
41
|
+
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
42
|
+
if (ar || !(i in from)) {
|
|
43
|
+
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
44
|
+
ar[i] = from[i];
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
return to.concat(ar || Array.prototype.slice.call(from));
|
|
48
|
+
};
|
|
49
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
50
|
+
exports.useAnchorProps = void 0;
|
|
51
|
+
var classes_1 = require("../constants/classes");
|
|
52
|
+
var cx_1 = require("../utils/cx");
|
|
53
|
+
var _useSimulatedButton_1 = require("./_useSimulatedButton");
|
|
54
|
+
function useAnchorProps(_a) {
|
|
55
|
+
var ariaBusy = _a["aria-busy"], ariaDisabled = _a["aria-disabled"], analyticsCallback = _a.analyticsCallback, className = _a.className, disabled = _a.disabled, download = _a.download, href = _a.href, hrefLang = _a.hrefLang, loading = _a.loading, media = _a.media, onClick = _a.onClick, onKeyDown = _a.onKeyDown, onKeyUp = _a.onKeyUp, ping = _a.ping, referrerPolicy = _a.referrerPolicy, rel = _a.rel, role = _a.role, submit = _a.submit, tabIndex = _a.tabIndex, target = _a.target, type = _a.type, restProps = __rest(_a, ["aria-busy", "aria-disabled", "analyticsCallback", "className", "disabled", "download", "href", "hrefLang", "loading", "media", "onClick", "onKeyDown", "onKeyUp", "ping", "referrerPolicy", "rel", "role", "submit", "tabIndex", "target", "type"]);
|
|
56
|
+
var isBusy = loading ? loading : Boolean(ariaBusy);
|
|
57
|
+
var isDisabled = disabled ? disabled : Boolean(ariaDisabled);
|
|
58
|
+
var isBusyOrDisabled = isBusy || isDisabled;
|
|
59
|
+
var isButton = submit || !!onClick;
|
|
60
|
+
var tabIndexInteractive = isBusyOrDisabled ? -1 : tabIndex;
|
|
61
|
+
var _className = [isBusy && classes_1.CLASSES.IS_BUSY, isDisabled && classes_1.CLASSES.IS_DISABLED, className];
|
|
62
|
+
var simulatedButton = (0, _useSimulatedButton_1._useSimulatedButton)({
|
|
63
|
+
analyticsCallback: analyticsCallback,
|
|
64
|
+
isClickable: !isBusyOrDisabled || isButton,
|
|
65
|
+
onClick: onClick,
|
|
66
|
+
onKeyDown: onKeyDown,
|
|
67
|
+
onKeyUp: onKeyUp,
|
|
68
|
+
submit: submit,
|
|
69
|
+
});
|
|
70
|
+
if (href) {
|
|
71
|
+
return __assign({ "aria-busy": isBusy, "aria-disabled": isDisabled, className: cx_1.cx.apply(void 0, __spreadArray([classes_1.CLASSES.IS_HOVERABLE], __read(_className), false)), download: download, href: href, hrefLang: hrefLang, media: media, onClick: simulatedButton.onClick, onKeyDown: simulatedButton.onKeyDown, onKeyUp: simulatedButton.onKeyUp, ping: ping, referrerPolicy: referrerPolicy, rel: target === "_blank" ? (rel ? "noopener noreferrer ".concat(role) : "noopener noreferrer") : rel, role: role || (isButton ? "button" : undefined), tabIndex: tabIndexInteractive, target: target, type: type }, restProps);
|
|
72
|
+
}
|
|
73
|
+
if (isButton) {
|
|
74
|
+
return __assign({ "aria-busy": isBusy, "aria-disabled": isDisabled, className: cx_1.cx.apply(void 0, __spreadArray([classes_1.CLASSES.IS_HOVERABLE], __read(_className), false)), onClick: simulatedButton.onClick, onKeyDown: simulatedButton.onKeyDown, onKeyUp: simulatedButton.onKeyUp, rel: rel, role: role || "button", tabIndex: tabIndexInteractive !== null && tabIndexInteractive !== void 0 ? tabIndexInteractive : 0 }, restProps);
|
|
75
|
+
}
|
|
76
|
+
return __assign({ className: cx_1.cx.apply(void 0, __spreadArray([], __read(_className), false)), role: role || "none", tabIndex: tabIndex }, restProps);
|
|
77
|
+
}
|
|
78
|
+
exports.useAnchorProps = useAnchorProps;
|
|
79
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlQW5jaG9yUHJvcHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaG9va3MvdXNlQW5jaG9yUHJvcHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDQSxnREFBK0M7QUFDL0Msa0NBQWlDO0FBQ2pDLDZEQUE0RDtBQVM1RCxTQUFnQixjQUFjLENBQW9ELEVBdUI3RDtJQXRCakIsSUFBZSxRQUFRLGtCQUFBLEVBQ0osWUFBWSxzQkFBQSxFQUMvQixpQkFBaUIsdUJBQUEsRUFDakIsU0FBUyxlQUFBLEVBQ1QsUUFBUSxjQUFBLEVBQ1IsUUFBUSxjQUFBLEVBQ1IsSUFBSSxVQUFBLEVBQ0osUUFBUSxjQUFBLEVBQ1IsT0FBTyxhQUFBLEVBQ1AsS0FBSyxXQUFBLEVBQ0wsT0FBTyxhQUFBLEVBQ1AsU0FBUyxlQUFBLEVBQ1QsT0FBTyxhQUFBLEVBQ1AsSUFBSSxVQUFBLEVBQ0osY0FBYyxvQkFBQSxFQUNkLEdBQUcsU0FBQSxFQUNILElBQUksVUFBQSxFQUNKLE1BQU0sWUFBQSxFQUNOLFFBQVEsY0FBQSxFQUNSLE1BQU0sWUFBQSxFQUNOLElBQUksVUFBQSxFQUNELFNBQVMsY0F0QmtFLG9QQXVCakYsQ0FEZTtJQUVaLElBQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDckQsSUFBTSxVQUFVLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUMvRCxJQUFNLGdCQUFnQixHQUFHLE1BQU0sSUFBSSxVQUFVLENBQUM7SUFDOUMsSUFBTSxRQUFRLEdBQUcsTUFBTSxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUM7SUFDckMsSUFBTSxtQkFBbUIsR0FBRyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQztJQUM3RCxJQUFNLFVBQVUsR0FBRyxDQUFDLE1BQU0sSUFBSSxpQkFBTyxDQUFDLE9BQU8sRUFBRSxVQUFVLElBQUksaUJBQU8sQ0FBQyxXQUFXLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFFN0YsSUFBTSxlQUFlLEdBQUcsSUFBQSx5Q0FBbUIsRUFBQztRQUN4QyxpQkFBaUIsbUJBQUE7UUFDakIsV0FBVyxFQUFFLENBQUMsZ0JBQWdCLElBQUksUUFBUTtRQUMxQyxPQUFPLFNBQUE7UUFDUCxTQUFTLFdBQUE7UUFDVCxPQUFPLFNBQUE7UUFDUCxNQUFNLFFBQUE7S0FDVCxDQUFDLENBQUM7SUFFSCxJQUFJLElBQUksRUFBRTtRQUNOLE9BQU8sV0FDSCxXQUFXLEVBQUUsTUFBTSxFQUNuQixlQUFlLEVBQUUsVUFBVSxFQUMzQixTQUFTLEVBQUUsT0FBRSw4QkFBQyxpQkFBTyxDQUFDLFlBQVksVUFBSyxVQUFVLFlBQ2pELFFBQVEsVUFBQSxFQUNSLElBQUksTUFBQSxFQUNKLFFBQVEsVUFBQSxFQUNSLEtBQUssT0FBQSxFQUNMLE9BQU8sRUFBRSxlQUFlLENBQUMsT0FBTyxFQUNoQyxTQUFTLEVBQUUsZUFBZSxDQUFDLFNBQVMsRUFDcEMsT0FBTyxFQUFFLGVBQWUsQ0FBQyxPQUFPLEVBQ2hDLElBQUksTUFBQSxFQUNKLGNBQWMsZ0JBQUEsRUFDZCxHQUFHLEVBQUUsTUFBTSxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLDhCQUF1QixJQUFJLENBQUUsQ0FBQyxDQUFDLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUM5RixJQUFJLEVBQUUsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUMvQyxRQUFRLEVBQUUsbUJBQW1CLEVBQzdCLE1BQU0sUUFBQSxFQUNOLElBQUksTUFBQSxJQUNELFNBQVMsQ0FDVixDQUFDO0tBQ1Y7SUFFRCxJQUFJLFFBQVEsRUFBRTtRQUNWLE9BQU8sV0FDSCxXQUFXLEVBQUUsTUFBTSxFQUNuQixlQUFlLEVBQUUsVUFBVSxFQUMzQixTQUFTLEVBQUUsT0FBRSw4QkFBQyxpQkFBTyxDQUFDLFlBQVksVUFBSyxVQUFVLFlBQ2pELE9BQU8sRUFBRSxlQUFlLENBQUMsT0FBTyxFQUNoQyxTQUFTLEVBQUUsZUFBZSxDQUFDLFNBQVMsRUFDcEMsT0FBTyxFQUFFLGVBQWUsQ0FBQyxPQUFPLEVBQ2hDLEdBQUcsS0FBQSxFQUNILElBQUksRUFBRSxJQUFJLElBQUksUUFBUSxFQUN0QixRQUFRLEVBQUUsbUJBQW1CLGFBQW5CLG1CQUFtQixjQUFuQixtQkFBbUIsR0FBSSxDQUFDLElBQy9CLFNBQVMsQ0FDVixDQUFDO0tBQ1Y7SUFFRCxPQUFPLFdBQ0gsU0FBUyxFQUFFLE9BQUUsd0NBQUksVUFBVSxZQUMzQixJQUFJLEVBQUUsSUFBSSxJQUFJLE1BQU0sRUFDcEIsUUFBUSxVQUFBLElBQ0wsU0FBUyxDQUNWLENBQUM7QUFDWCxDQUFDO0FBcEZELHdDQW9GQyJ9
|
|
@@ -1,3 +1,6 @@
|
|
|
1
1
|
import { BodyScrollOptions } from "body-scroll-lock";
|
|
2
2
|
import { RefObject } from "react";
|
|
3
|
-
export
|
|
3
|
+
export interface UseBodyScrollLockOptions extends BodyScrollOptions {
|
|
4
|
+
clearAllOnClose?: boolean;
|
|
5
|
+
}
|
|
6
|
+
export declare function useBodyScrollLock<T extends HTMLElement>(containerRef: RefObject<T>, isOpen: boolean, { allowTouchMove, clearAllOnClose, reserveScrollBarGap }?: Partial<UseBodyScrollLockOptions>): void;
|
|
@@ -1,25 +1,16 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __assign = (this && this.__assign) || function () {
|
|
3
|
-
__assign = Object.assign || function(t) {
|
|
4
|
-
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
5
|
-
s = arguments[i];
|
|
6
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
7
|
-
t[p] = s[p];
|
|
8
|
-
}
|
|
9
|
-
return t;
|
|
10
|
-
};
|
|
11
|
-
return __assign.apply(this, arguments);
|
|
12
|
-
};
|
|
13
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.useBodyScrollLock = void 0;
|
|
14
4
|
var body_scroll_lock_1 = require("body-scroll-lock");
|
|
15
5
|
var react_1 = require("react");
|
|
16
|
-
function useBodyScrollLock(
|
|
17
|
-
|
|
18
|
-
react_1.useEffect(function () {
|
|
19
|
-
var
|
|
20
|
-
if (
|
|
21
|
-
|
|
22
|
-
|
|
6
|
+
function useBodyScrollLock(containerRef, isOpen, _a) {
|
|
7
|
+
var _b = _a === void 0 ? {} : _a, allowTouchMove = _b.allowTouchMove, clearAllOnClose = _b.clearAllOnClose, reserveScrollBarGap = _b.reserveScrollBarGap;
|
|
8
|
+
(0, react_1.useEffect)(function () {
|
|
9
|
+
var node = containerRef.current;
|
|
10
|
+
if (isOpen && node) {
|
|
11
|
+
(0, body_scroll_lock_1.disableBodyScroll)(node, {
|
|
12
|
+
allowTouchMove: allowTouchMove ||
|
|
13
|
+
(function (element) {
|
|
23
14
|
var _a;
|
|
24
15
|
while (element !== document.body) {
|
|
25
16
|
if (element.getAttribute("data-body-scroll-lock-ignore") !== null) {
|
|
@@ -27,19 +18,20 @@ function useBodyScrollLock(ref, isOpen, clearAllOnClose, options) {
|
|
|
27
18
|
}
|
|
28
19
|
element = (_a = element.parentElement) !== null && _a !== void 0 ? _a : element;
|
|
29
20
|
}
|
|
30
|
-
return;
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
body_scroll_lock_1.enableBodyScroll(targetNode);
|
|
35
|
-
};
|
|
36
|
-
}
|
|
37
|
-
else if (clearAllOnClose) {
|
|
38
|
-
return function () {
|
|
39
|
-
body_scroll_lock_1.clearAllBodyScrollLocks();
|
|
40
|
-
};
|
|
21
|
+
return false;
|
|
22
|
+
}),
|
|
23
|
+
reserveScrollBarGap: reserveScrollBarGap,
|
|
24
|
+
});
|
|
41
25
|
}
|
|
42
|
-
|
|
26
|
+
return function () {
|
|
27
|
+
if (node) {
|
|
28
|
+
(0, body_scroll_lock_1.enableBodyScroll)(node);
|
|
29
|
+
}
|
|
30
|
+
if (clearAllOnClose) {
|
|
31
|
+
(0, body_scroll_lock_1.clearAllBodyScrollLocks)();
|
|
32
|
+
}
|
|
33
|
+
};
|
|
34
|
+
}, [allowTouchMove, clearAllOnClose, containerRef, isOpen, reserveScrollBarGap]);
|
|
43
35
|
}
|
|
44
36
|
exports.useBodyScrollLock = useBodyScrollLock;
|
|
45
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
37
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlQm9keVNjcm9sbExvY2suanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaG9va3MvdXNlQm9keVNjcm9sbExvY2sudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEscURBQW1IO0FBQ25ILCtCQUE2QztBQU03QyxTQUFnQixpQkFBaUIsQ0FDN0IsWUFBMEIsRUFDMUIsTUFBZSxFQUNmLEVBQWdHO1FBQWhHLHFCQUE4RixFQUFFLEtBQUEsRUFBOUYsY0FBYyxvQkFBQSxFQUFFLGVBQWUscUJBQUEsRUFBRSxtQkFBbUIseUJBQUE7SUFFdEQsSUFBQSxpQkFBUyxFQUFDO1FBQ04sSUFBTSxJQUFJLEdBQUcsWUFBWSxDQUFDLE9BQU8sQ0FBQztRQUNsQyxJQUFJLE1BQU0sSUFBSSxJQUFJLEVBQUU7WUFDaEIsSUFBQSxvQ0FBaUIsRUFBQyxJQUFJLEVBQUU7Z0JBQ3BCLGNBQWMsRUFDVixjQUFjO29CQUNkLENBQUMsVUFBQSxPQUFPOzt3QkFDSixPQUFPLE9BQU8sS0FBSyxRQUFRLENBQUMsSUFBSSxFQUFFOzRCQUM5QixJQUFJLE9BQU8sQ0FBQyxZQUFZLENBQUMsOEJBQThCLENBQUMsS0FBSyxJQUFJLEVBQUU7Z0NBQy9ELE9BQU8sSUFBSSxDQUFDOzZCQUNmOzRCQUNELE9BQU8sR0FBRyxNQUFBLE9BQU8sQ0FBQyxhQUFhLG1DQUFJLE9BQU8sQ0FBQzt5QkFDOUM7d0JBQ0QsT0FBTyxLQUFLLENBQUM7b0JBQ2pCLENBQUMsQ0FBQztnQkFDTixtQkFBbUIscUJBQUE7YUFDdEIsQ0FBQyxDQUFDO1NBQ047UUFDRCxPQUFPO1lBQ0gsSUFBSSxJQUFJLEVBQUU7Z0JBQ04sSUFBQSxtQ0FBZ0IsRUFBQyxJQUFJLENBQUMsQ0FBQzthQUMxQjtZQUNELElBQUksZUFBZSxFQUFFO2dCQUNqQixJQUFBLDBDQUF1QixHQUFFLENBQUM7YUFDN0I7UUFDTCxDQUFDLENBQUM7SUFDTixDQUFDLEVBQUUsQ0FBQyxjQUFjLEVBQUUsZUFBZSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsbUJBQW1CLENBQUMsQ0FBQyxDQUFDO0FBQ3JGLENBQUM7QUFoQ0QsOENBZ0NDIn0=
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { ButtonHTMLAttributes } from "react";
|
|
2
|
+
export interface UseButtonProps {
|
|
3
|
+
analyticsCallback?: () => void;
|
|
4
|
+
loading?: boolean;
|
|
5
|
+
}
|
|
6
|
+
export declare function useButtonProps<T extends ButtonHTMLAttributes<HTMLButtonElement>>({ ["aria-busy"]: ariaBusy, ["aria-disabled"]: ariaDisabled, autoFocus, analyticsCallback, className, disabled, formAction, formEncType, formMethod, formNoValidate, formTarget, loading, name, onClick, role, tabIndex, type, value, ...restProps }: UseButtonProps & T): T;
|