@uxf/core 1.10.0 → 2.0.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.
Files changed (58) hide show
  1. package/README.md +182 -21
  2. package/Validators/FormValidator.js +2 -1
  3. package/Validators/Validator.js +2 -1
  4. package/constants/classes.d.ts +14 -0
  5. package/constants/classes.js +18 -0
  6. package/cookie/index.js +6 -5
  7. package/hooks/_useSimulatedButton.d.ts +15 -0
  8. package/hooks/_useSimulatedButton.js +51 -0
  9. package/hooks/useAnchorProps.d.ts +8 -0
  10. package/hooks/useAnchorProps.js +79 -0
  11. package/hooks/useBodyScrollLock.d.ts +4 -1
  12. package/hooks/useBodyScrollLock.js +23 -31
  13. package/hooks/useButtonProps.d.ts +6 -0
  14. package/hooks/useButtonProps.js +91 -0
  15. package/hooks/useClickableProps.d.ts +8 -0
  16. package/hooks/useClickableProps.js +75 -0
  17. package/hooks/useFocusReturn.d.ts +1 -0
  18. package/hooks/useFocusReturn.js +38 -0
  19. package/hooks/useFocusTrap.d.ts +1 -0
  20. package/hooks/useFocusTrap.js +149 -0
  21. package/hooks/useInputFocus.d.ts +7 -0
  22. package/hooks/useInputFocus.js +44 -0
  23. package/hooks/useIsMounted.js +4 -5
  24. package/hooks/useIsomorphicLayoutEffect.js +2 -1
  25. package/hooks/useKey.d.ts +9 -2
  26. package/hooks/useKey.js +20 -20
  27. package/hooks/useMinWindowWidth.d.ts +1 -1
  28. package/hooks/useMinWindowWidth.js +13 -19
  29. package/hooks/useMouseDragToScroll.d.ts +2 -0
  30. package/hooks/useMouseDragToScroll.js +67 -0
  31. package/hooks/usePagination.js +7 -3
  32. package/hooks/useRafState.d.ts +1 -1
  33. package/hooks/useRafState.js +6 -7
  34. package/hooks/useTabs.d.ts +15 -0
  35. package/hooks/useTabs.js +59 -0
  36. package/hooks/useUnmount.js +5 -4
  37. package/hooks/useUpdateEffect.d.ts +2 -1
  38. package/hooks/useUpdateEffect.js +11 -10
  39. package/hooks/useWindowScroll.d.ts +1 -1
  40. package/hooks/useWindowScroll.js +19 -21
  41. package/hooks/useWindowSize.d.ts +2 -2
  42. package/hooks/useWindowSize.js +17 -21
  43. package/index.js +13 -6
  44. package/next/index.js +6 -3
  45. package/package.json +21 -21
  46. package/utils/camelCaseToDash.js +2 -1
  47. package/utils/composeRefs.d.ts +2 -1
  48. package/utils/composeRefs.js +10 -9
  49. package/utils/cx.d.ts +3 -0
  50. package/utils/cx.js +59 -0
  51. package/utils/isBrowser.js +3 -1
  52. package/utils/isServer.js +4 -2
  53. package/utils/pagination.js +15 -8
  54. package/utils/pagination.test.js +2 -2
  55. package/utils/slugify.js +2 -1
  56. package/utils/trimTrailingZeros.js +2 -1
  57. package/hooks/useKeydownToMouseClick.d.ts +0 -3
  58. 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; /* optionally call clearAllBodyScrollLocks methot on unmount */
49
+ const clearAllOnclose = false;
34
50
 
35
- useBodyScrollLock<HTMLDivElement>(innerRef, isOpen, clearAllOnclose, { /* options from "body-scroll-lock" npm package */ });
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,29 +69,25 @@ useIsomorphicLayoutEffect(() => {/* code */}, [/* deps */]);
49
69
 
50
70
  ```tsx
51
71
  import { useKey } from "@uxf/core/hooks/useKey";
52
- import { useCallback } from "react";
53
-
54
- const innerRef = useRef<HTMLDivElement>(null);
55
- const disabled = false; // eg. for passing disabled state
56
-
57
- useKey<HTMLDivElement>(innerRef, "Enter", () => console.log("callback"), "keydown", disabled);
58
-
59
- <div ref={innerRef} tabIndex={0}>Element with callback triggerable by enter key.</div>
60
- ```
61
- ```tsx
62
- import { useKeydownToMouseClick } from "@uxf/core/hooks/useKeydownToMouseClick";
72
+ import { useRef } from "react";
63
73
 
64
- const innerRef = useRef<HTMLDivElement>(null);
74
+ const targetRef = useRef<HTMLDivElement>(null);
65
75
  const disabled = false; // eg. for passing disabled state
66
76
 
67
- useKeydownToMouseClick<HTMLDivElement>(innerRef, (e: KeyboardEvent) => e.key === "Enter", disabled);
77
+ useKey<HTMLDivElement>("Enter", () => console.log("callback"), {
78
+ disabled,
79
+ targetRef, // if not provided, then `document` will be used
80
+ type: "keydown"
81
+ });
68
82
 
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";
73
87
 
74
- const isDesktop = useMinWindowWidth(992 /* desired min window width */, 1280 /* initial window width (optional) */);
88
+ const isDesktop = useMinWindowWidth(1200);
89
+
90
+ const example = isDesktop ? "desktop" : "tablet";
75
91
  ```
76
92
 
77
93
  ```ts
@@ -100,12 +116,151 @@ useUpdateEffect(() => {/* code */}, [/* deps */]);
100
116
  ```tsx
101
117
  import { useWindowScroll } from "@uxf/core/hooks/useWindowScroll";
102
118
 
103
- const { x, y } = useWindowScroll();
119
+ const windowScroll = useWindowScroll();
120
+
121
+ const example = windowScroll && windowScroll.y > 100 ? "scroled" : "on top";
104
122
  ```
105
123
  ```tsx
106
124
  import { useWindowSize } from "@uxf/core/hooks/useWindowSize";
107
125
 
108
- const { width, height } = useWindowSize(1280 /* initial window width (optional) */, 800 /* initial window height (optional) */);
126
+ const windowSize = useWindowSize();
127
+
128
+ const example = windowSize && windowSize.width > 1200 ? "desktop" : "tablet";
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} />
109
264
  ```
110
265
 
111
266
  ## Next
@@ -131,11 +286,17 @@ const secondRef = useRef<HTMLDivElement>(null);
131
286
  const example = <div ref={composeRefs(firstRef, secondRef)} />;
132
287
  ```
133
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
134
295
  import { isBrowser } from "@uxf/core/utils/isBrowser";
135
296
  import { isServer } from "@uxf/core/utils/isServer";
136
297
 
137
- const browserExample = isBrowser /* returns true if DOM is available */
138
- 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 */
139
300
  ```
140
301
  ```tsx
141
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRm9ybVZhbGlkYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9WYWxpZGF0b3JzL0Zvcm1WYWxpZGF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSx5Q0FBd0M7QUFFeEMsSUFBTSxVQUFVLEdBQUcsVUFBQyxLQUFVLElBQUssT0FBQSxLQUFLLEtBQUssSUFBSSxJQUFJLEtBQUssS0FBSyxTQUFTLElBQUksS0FBSyxLQUFLLEVBQUUsRUFBckQsQ0FBcUQsQ0FBQztBQUV6RixXQUFXO0FBQ1gsSUFBTSxRQUFRLEdBQUcsVUFBQyxZQUFxQixJQUFLLE9BQUEsVUFBQyxLQUFVO0lBQ25ELE9BQUEsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLElBQUksVUFBVSxDQUFDLENBQUMsQ0FBQyxTQUFTO0FBQTFELENBQTBELEVBRGxCLENBQ2tCLENBQUM7QUFFL0QsUUFBUTtBQUNSLElBQU0sT0FBTyxHQUFHLFVBQUMsWUFBcUIsSUFBSyxPQUFBLFVBQUMsS0FBYTtJQUNyRCxPQUFBLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMscUJBQVMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksSUFBSSxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsU0FBUztBQUFuRyxDQUFtRyxFQUQ1RCxDQUM0RCxDQUFDO0FBRXhHLFFBQVE7QUFDUixJQUFNLE9BQU8sR0FBRyxVQUFDLFlBQXFCLElBQUssT0FBQSxVQUFDLEtBQWE7SUFDckQsT0FBQSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLHFCQUFTLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLElBQUksc0JBQXNCLENBQUMsQ0FBQyxDQUFDLFNBQVM7QUFBcEcsQ0FBb0csRUFEN0QsQ0FDNkQsQ0FBQztBQUV6RyxJQUFNLFVBQVUsR0FBRyxVQUFDLFFBQWdCLEVBQUUsWUFBcUIsSUFBSyxPQUFBLFVBQUMsS0FBYTtJQUMxRSxJQUFJLEtBQUssS0FBSyxFQUFFLEVBQUU7UUFDZCxPQUFPLFNBQVMsQ0FBQztLQUNwQjtJQUNELElBQU0sV0FBVyxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDN0MsT0FBTyxXQUFXLElBQUksUUFBUSxDQUFDLENBQUMsQ0FBQyxZQUFZLElBQUkscUNBQXFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztBQUN2RyxDQUFDLEVBTitELENBTS9ELENBQUM7QUFFRixnQkFBZ0I7QUFDaEIsSUFBTSxpQkFBaUIsR0FBRyxVQUFDLFFBQWdCLEVBQUUsWUFBcUIsSUFBSyxPQUFBLFVBQUMsS0FBYTtJQUNqRixJQUFJLEtBQUssS0FBSyxFQUFFLEVBQUU7UUFDZCxPQUFPLFNBQVMsQ0FBQztLQUNwQjtJQUNELElBQU0sV0FBVyxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDN0MsT0FBTyxXQUFXLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxZQUFZLElBQUkscUNBQXFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztBQUN0RyxDQUFDLEVBTnNFLENBTXRFLENBQUM7QUFFRixVQUFVO0FBQ1YsSUFBTSxhQUFhLEdBQUcsVUFBQyxRQUFnQixFQUFFLFlBQXFCLElBQUssT0FBQSxVQUFDLEtBQWE7SUFDN0UsSUFBSSxVQUFVLENBQUMsS0FBSyxDQUFDLEVBQUU7UUFDbkIsT0FBTyxTQUFTLENBQUM7S0FDcEI7SUFDRCxJQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzdDLE9BQU8sV0FBVyxJQUFJLFFBQVEsQ0FBQyxDQUFDLENBQUMsWUFBWSxJQUFJLHFDQUFxQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7QUFDdkcsQ0FBQyxFQU5rRSxDQU1sRSxDQUFDO0FBRUYsbUJBQW1CO0FBQ25CLElBQU0sb0JBQW9CLEdBQUcsVUFBQyxRQUFnQixFQUFFLFlBQXFCLElBQUssT0FBQSxVQUFDLEtBQWE7SUFDcEYsSUFBSSxVQUFVLENBQUMsS0FBSyxDQUFDLEVBQUU7UUFDbkIsT0FBTyxTQUFTLENBQUM7S0FDcEI7SUFDRCxJQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzdDLE9BQU8sV0FBVyxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsWUFBWSxJQUFJLHFDQUFxQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7QUFDdEcsQ0FBQyxFQU55RSxDQU16RSxDQUFDO0FBRVcsUUFBQSxhQUFhLEdBQUc7SUFDekIsT0FBTyxTQUFBO0lBQ1Asb0JBQW9CLHNCQUFBO0lBQ3BCLGFBQWEsZUFBQTtJQUNiLGlCQUFpQixtQkFBQTtJQUNqQixVQUFVLFlBQUE7SUFDVixPQUFPLFNBQUE7SUFDUCxRQUFRLFVBQUE7Q0FDWCxDQUFDIn0=
58
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRm9ybVZhbGlkYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9WYWxpZGF0b3JzL0Zvcm1WYWxpZGF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEseUNBQXdDO0FBRXhDLElBQU0sVUFBVSxHQUFHLFVBQUMsS0FBVSxJQUFLLE9BQUEsS0FBSyxLQUFLLElBQUksSUFBSSxLQUFLLEtBQUssU0FBUyxJQUFJLEtBQUssS0FBSyxFQUFFLEVBQXJELENBQXFELENBQUM7QUFFekYsV0FBVztBQUNYLElBQU0sUUFBUSxHQUFHLFVBQUMsWUFBcUIsSUFBSyxPQUFBLFVBQUMsS0FBVTtJQUNuRCxPQUFBLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxJQUFJLFVBQVUsQ0FBQyxDQUFDLENBQUMsU0FBUztBQUExRCxDQUEwRCxFQURsQixDQUNrQixDQUFDO0FBRS9ELFFBQVE7QUFDUixJQUFNLE9BQU8sR0FBRyxVQUFDLFlBQXFCLElBQUssT0FBQSxVQUFDLEtBQWE7SUFDckQsT0FBQSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLHFCQUFTLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLElBQUkscUJBQXFCLENBQUMsQ0FBQyxDQUFDLFNBQVM7QUFBbkcsQ0FBbUcsRUFENUQsQ0FDNEQsQ0FBQztBQUV4RyxRQUFRO0FBQ1IsSUFBTSxPQUFPLEdBQUcsVUFBQyxZQUFxQixJQUFLLE9BQUEsVUFBQyxLQUFhO0lBQ3JELE9BQUEsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxxQkFBUyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxJQUFJLHNCQUFzQixDQUFDLENBQUMsQ0FBQyxTQUFTO0FBQXBHLENBQW9HLEVBRDdELENBQzZELENBQUM7QUFFekcsSUFBTSxVQUFVLEdBQUcsVUFBQyxRQUFnQixFQUFFLFlBQXFCLElBQUssT0FBQSxVQUFDLEtBQWE7SUFDMUUsSUFBSSxLQUFLLEtBQUssRUFBRSxFQUFFO1FBQ2QsT0FBTyxTQUFTLENBQUM7S0FDcEI7SUFDRCxJQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzdDLE9BQU8sV0FBVyxJQUFJLFFBQVEsQ0FBQyxDQUFDLENBQUMsWUFBWSxJQUFJLHFDQUFxQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7QUFDdkcsQ0FBQyxFQU4rRCxDQU0vRCxDQUFDO0FBRUYsZ0JBQWdCO0FBQ2hCLElBQU0saUJBQWlCLEdBQUcsVUFBQyxRQUFnQixFQUFFLFlBQXFCLElBQUssT0FBQSxVQUFDLEtBQWE7SUFDakYsSUFBSSxLQUFLLEtBQUssRUFBRSxFQUFFO1FBQ2QsT0FBTyxTQUFTLENBQUM7S0FDcEI7SUFDRCxJQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzdDLE9BQU8sV0FBVyxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsWUFBWSxJQUFJLHFDQUFxQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7QUFDdEcsQ0FBQyxFQU5zRSxDQU10RSxDQUFDO0FBRUYsVUFBVTtBQUNWLElBQU0sYUFBYSxHQUFHLFVBQUMsUUFBZ0IsRUFBRSxZQUFxQixJQUFLLE9BQUEsVUFBQyxLQUFhO0lBQzdFLElBQUksVUFBVSxDQUFDLEtBQUssQ0FBQyxFQUFFO1FBQ25CLE9BQU8sU0FBUyxDQUFDO0tBQ3BCO0lBQ0QsSUFBTSxXQUFXLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM3QyxPQUFPLFdBQVcsSUFBSSxRQUFRLENBQUMsQ0FBQyxDQUFDLFlBQVksSUFBSSxxQ0FBcUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0FBQ3ZHLENBQUMsRUFOa0UsQ0FNbEUsQ0FBQztBQUVGLG1CQUFtQjtBQUNuQixJQUFNLG9CQUFvQixHQUFHLFVBQUMsUUFBZ0IsRUFBRSxZQUFxQixJQUFLLE9BQUEsVUFBQyxLQUFhO0lBQ3BGLElBQUksVUFBVSxDQUFDLEtBQUssQ0FBQyxFQUFFO1FBQ25CLE9BQU8sU0FBUyxDQUFDO0tBQ3BCO0lBQ0QsSUFBTSxXQUFXLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM3QyxPQUFPLFdBQVcsR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLFlBQVksSUFBSSxxQ0FBcUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0FBQ3RHLENBQUMsRUFOeUUsQ0FNekUsQ0FBQztBQUVXLFFBQUEsYUFBYSxHQUFHO0lBQ3pCLE9BQU8sU0FBQTtJQUNQLG9CQUFvQixzQkFBQTtJQUNwQixhQUFhLGVBQUE7SUFDYixpQkFBaUIsbUJBQUE7SUFDakIsVUFBVSxZQUFBO0lBQ1YsT0FBTyxTQUFBO0lBQ1AsUUFBUSxVQUFBO0NBQ1gsQ0FBQyJ9
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVmFsaWRhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL1ZhbGlkYXRvcnMvVmFsaWRhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsUUFBUTtBQUNSLElBQU0sWUFBWSxHQUFHLHVKQUF1SixDQUFDO0FBQzdLLElBQU0sT0FBTyxHQUFHLFVBQUMsS0FBYSxJQUFjLE9BQUEsWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBeEIsQ0FBd0IsQ0FBQztBQUVyRSxRQUFRO0FBQ1IsSUFBTSxZQUFZLEdBQUcsNkRBQTZELENBQUM7QUFDbkYsSUFBTSxPQUFPLEdBQUcsVUFBQyxLQUFhLElBQWMsT0FBQSxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUF4QixDQUF3QixDQUFDO0FBRXhELFFBQUEsU0FBUyxHQUFHO0lBQ3JCLE9BQU8sU0FBQTtJQUNQLE9BQU8sU0FBQTtDQUNWLENBQUMifQ==
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 + "=" + encodeURIComponent(value), "expires=" + date.toUTCString()];
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=" + (options.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
- // tslint:disable-next-line:triple-equals
62
+ // eslint-disable-next-line eqeqeq
62
63
  while (cookie.charAt(0) == " ") {
63
64
  cookie = cookie.substring(1);
64
65
  }
65
- // tslint:disable-next-line:triple-equals
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29va2llL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7QUFNQTtJQUdJLGdCQUFZLEdBQXNCO1FBQXRCLG9CQUFBLEVBQUEsVUFBc0I7UUFDOUIsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUM7SUFDbkIsQ0FBQztJQUVhLGFBQU0sR0FBcEIsVUFBcUIsR0FBZTtRQUFmLG9CQUFBLEVBQUEsVUFBZTtRQUNoQyxPQUFPLElBQUksTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzNCLENBQUM7SUFFTSxvQkFBRyxHQUFWLFVBQVcsSUFBWTtRQUNuQixPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzVCLENBQUM7SUFFTSxvQkFBRyxHQUFWLFVBQVcsSUFBWSxFQUFFLEtBQWEsRUFBRSxHQUFrQixFQUFFLE9BQTJCO1FBQS9DLG9CQUFBLEVBQUEsVUFBa0I7UUFBRSx3QkFBQSxFQUFBLFlBQTJCO1FBQ25GLElBQU0sSUFBSSxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxDQUFDO1FBRTFDLElBQU0sV0FBVyxHQUFHLENBQUksSUFBSSxTQUFJLGtCQUFrQixDQUFDLEtBQUssQ0FBRyxFQUFFLGFBQVcsSUFBSSxDQUFDLFdBQVcsRUFBSSxDQUFDLENBQUM7UUFDOUYsSUFBSSxPQUFPLENBQUMsUUFBUSxFQUFFO1lBQ2xCLFdBQVcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7U0FDaEM7UUFDRCxJQUFJLE9BQU8sQ0FBQyxNQUFNLEVBQUU7WUFDaEIsV0FBVyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztTQUM5QjtRQUNELFdBQVcsQ0FBQyxJQUFJLENBQUMsV0FBUSxPQUFPLENBQUMsSUFBSSxJQUFJLEdBQUcsQ0FBRSxDQUFDLENBQUM7UUFDaEQsSUFBTSxNQUFNLEdBQUcsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUV0QyxJQUFJLE9BQU8sUUFBUSxLQUFLLFdBQVcsRUFBRTtZQUNqQyxRQUFRLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztTQUM1QjthQUFNO1lBQ0gsSUFBTSxhQUFhLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzVFLGFBQWEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDM0IsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLFlBQVksRUFBRSxhQUFhLENBQUMsQ0FBQztTQUN2RDtRQUVELE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFTSxvQkFBRyxHQUFWLFVBQVcsVUFBa0I7OztRQUN6QixJQUFNLGFBQWEsR0FDZixPQUFPLFFBQVEsS0FBSyxXQUFXO1lBQzNCLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDO1lBQ3JDLENBQUMsQ0FBQyxrQkFBa0IseUJBQUMsSUFBSSxDQUFDLEdBQUcsMENBQUUsR0FBRywwQ0FBRSxPQUFPLDBDQUFFLE1BQU0sbUNBQUksRUFBRSxDQUFDLENBQUM7UUFFbkUsSUFBTSxJQUFJLEdBQUcsVUFBVSxHQUFHLEdBQUcsQ0FBQztRQUM5QixJQUFNLE9BQU8sR0FBRyxhQUFhLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDOztZQUN6QyxLQUFtQixJQUFBLFlBQUEsU0FBQSxPQUFPLENBQUEsZ0NBQUEscURBQUU7Z0JBQXZCLElBQUksTUFBTSxvQkFBQTtnQkFDWCx5Q0FBeUM7Z0JBQ3pDLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFHLEVBQUU7b0JBQzVCLE1BQU0sR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO2lCQUNoQztnQkFDRCx5Q0FBeUM7Z0JBQ3pDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUU7b0JBQzNCLE9BQU8sTUFBTSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztpQkFDdkQ7YUFDSjs7Ozs7Ozs7O1FBRUQsT0FBTyxFQUFFLENBQUM7SUFDZCxDQUFDO0lBRU0sdUJBQU0sR0FBYixVQUFjLElBQVksRUFBRSxPQUEyQjtRQUEzQix3QkFBQSxFQUFBLFlBQTJCO1FBQ25ELElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUNoQyxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBQ0wsYUFBQztBQUFELENBQUMsQUFsRUQsSUFrRUM7QUFsRVksd0JBQU0ifQ==
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
+ else 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiX3VzZVNpbXVsYXRlZEJ1dHRvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ob29rcy9fdXNlU2ltdWxhdGVkQnV0dG9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLCtCQUE2RTtBQVc3RSxTQUFnQixtQkFBbUIsQ0FBd0IsRUFPaEQ7UUFOUCxpQkFBaUIsdUJBQUEsRUFDakIsV0FBVyxpQkFBQSxFQUNYLE9BQU8sYUFBQSxFQUNQLFNBQVMsZUFBQSxFQUNULE9BQU8sYUFBQSxFQUNQLE1BQU0sWUFBQTtJQUVOLElBQU0sUUFBUSxHQUFHLElBQUEsbUJBQVcsRUFDeEIsVUFBQSxDQUFDOztRQUNHLElBQUksV0FBVyxFQUFFO1lBQ2IsSUFBSSxpQkFBaUIsRUFBRTtnQkFDbkIsaUJBQWlCLEVBQUUsQ0FBQzthQUN2QjtZQUNELElBQUksTUFBTSxFQUFFO2dCQUNSLElBQU0sV0FBVyxHQUFHLE1BQUEsUUFBUSxDQUFDLGFBQWEsMENBQUUsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUM1RCxJQUFJLFdBQVcsRUFBRTtvQkFDYixXQUFXLENBQUMsYUFBYSxDQUFDLElBQUksS0FBSyxDQUFDLFFBQVEsRUFBRSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztpQkFDdkY7YUFDSjtpQkFBTSxJQUFJLE9BQU8sRUFBRTtnQkFDaEIsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ2Q7U0FDSjthQUFNO1lBQ0gsQ0FBQyxDQUFDLGNBQWMsRUFBRSxDQUFDO1NBQ3RCO0lBQ0wsQ0FBQyxFQUNELENBQUMsaUJBQWlCLEVBQUUsV0FBVyxFQUFFLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FDcEQsQ0FBQztJQUVGLElBQU0sUUFBUSxHQUFHLElBQUEsbUJBQVcsRUFDeEIsVUFBQSxDQUFDO1FBQ0csSUFBSSxXQUFXLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLE9BQU8sSUFBSSxDQUFDLENBQUMsR0FBRyxLQUFLLEdBQUcsQ0FBQyxFQUFFO1lBQ3JELENBQUMsQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUNsQixJQUFJLFVBQVUsQ0FBQyxPQUFPLEVBQUU7Z0JBQ3BCLE9BQU8sRUFBRSxJQUFJO2dCQUNiLE9BQU8sRUFBRSxDQUFDO2dCQUNWLFVBQVUsRUFBRSxJQUFJO2dCQUNoQixJQUFJLEVBQUUsTUFBTTthQUNmLENBQUMsQ0FDTCxDQUFDO1lBRUYsSUFBSSxPQUFPLEVBQUU7Z0JBQ1QsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ2Q7U0FDSjtJQUNMLENBQUMsRUFDRCxDQUFDLFdBQVcsRUFBRSxPQUFPLENBQUMsQ0FDekIsQ0FBQztJQUVGLElBQU0sVUFBVSxHQUFHLElBQUEsbUJBQVcsRUFDMUIsVUFBQSxDQUFDO1FBQ0csSUFBSSxXQUFXLElBQUksQ0FBQyxDQUFDLEdBQUcsS0FBSyxHQUFHLEVBQUU7WUFDOUIsQ0FBQyxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBRW5CLElBQUksU0FBUyxFQUFFO2dCQUNYLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUNoQjtTQUNKO0lBQ0wsQ0FBQyxFQUNELENBQUMsV0FBVyxFQUFFLFNBQVMsQ0FBQyxDQUMzQixDQUFDO0lBRUYsT0FBTyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLENBQUM7QUFDM0UsQ0FBQztBQS9ERCxrREErREMifQ==
@@ -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 declare function useBodyScrollLock<T extends HTMLElement>(ref: RefObject<T>, isOpen: boolean, clearAllOnClose?: boolean, options?: Partial<BodyScrollOptions>): void;
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(ref, isOpen, clearAllOnClose, options) {
17
- if (clearAllOnClose === void 0) { clearAllOnClose = false; }
18
- react_1.useEffect(function () {
19
- var targetNode = ref.current;
20
- if (targetNode) {
21
- if (isOpen) {
22
- body_scroll_lock_1.disableBodyScroll(targetNode, __assign({ allowTouchMove: function (element) {
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
- } }, (options || {})));
32
- }
33
- return function () {
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
- }, [clearAllOnClose, isOpen, options, ref]);
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlQm9keVNjcm9sbExvY2suanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaG9va3MvdXNlQm9keVNjcm9sbExvY2sudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OztBQUFBLHFEQUFtSDtBQUNuSCwrQkFBNkM7QUFFN0MsU0FBZ0IsaUJBQWlCLENBQzdCLEdBQWlCLEVBQ2pCLE1BQWUsRUFDZixlQUF1QixFQUN2QixPQUFvQztJQURwQyxnQ0FBQSxFQUFBLHVCQUF1QjtJQUd2QixpQkFBUyxDQUFDO1FBQ04sSUFBTSxVQUFVLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQztRQUMvQixJQUFJLFVBQVUsRUFBRTtZQUNaLElBQUksTUFBTSxFQUFFO2dCQUNSLG9DQUFpQixDQUFDLFVBQVUsYUFDeEIsY0FBYyxFQUFFLFVBQUEsT0FBTzs7d0JBQ25CLE9BQU8sT0FBTyxLQUFLLFFBQVEsQ0FBQyxJQUFJLEVBQUU7NEJBQzlCLElBQUksT0FBTyxDQUFDLFlBQVksQ0FBQyw4QkFBOEIsQ0FBQyxLQUFLLElBQUksRUFBRTtnQ0FDL0QsT0FBTyxJQUFJLENBQUM7NkJBQ2Y7NEJBQ0QsT0FBTyxTQUFHLE9BQU8sQ0FBQyxhQUFhLG1DQUFJLE9BQU8sQ0FBQzt5QkFDOUM7d0JBQ0QsT0FBTztvQkFDWCxDQUFDLElBQ0UsQ0FBQyxPQUFPLElBQUksRUFBRSxDQUFDLEVBQ3BCLENBQUM7YUFDTjtZQUNELE9BQU87Z0JBQ0gsbUNBQWdCLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDakMsQ0FBQyxDQUFDO1NBQ0w7YUFBTSxJQUFJLGVBQWUsRUFBRTtZQUN4QixPQUFPO2dCQUNILDBDQUF1QixFQUFFLENBQUM7WUFDOUIsQ0FBQyxDQUFDO1NBQ0w7SUFDTCxDQUFDLEVBQUUsQ0FBQyxlQUFlLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ2hELENBQUM7QUFoQ0QsOENBZ0NDIn0=
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;