@simplybusiness/mobius 3.6.2 → 3.7.1

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 (38) hide show
  1. package/CHANGELOG.md +9 -0
  2. package/dist/cjs/components/Button/Button.d.ts +3 -2
  3. package/dist/cjs/components/Button/Button.js +9 -14
  4. package/dist/cjs/components/Button/Button.js.map +1 -1
  5. package/dist/cjs/components/DatePicker/DatePicker.js.map +1 -1
  6. package/dist/cjs/hooks/index.d.ts +1 -0
  7. package/dist/cjs/hooks/index.js +1 -0
  8. package/dist/cjs/hooks/index.js.map +1 -1
  9. package/dist/cjs/hooks/useButton/index.d.ts +1 -0
  10. package/dist/cjs/hooks/useButton/index.js +18 -0
  11. package/dist/cjs/hooks/useButton/index.js.map +1 -0
  12. package/dist/cjs/hooks/useButton/useButton.d.ts +35 -0
  13. package/dist/cjs/hooks/useButton/useButton.js +32 -0
  14. package/dist/cjs/hooks/useButton/useButton.js.map +1 -0
  15. package/dist/cjs/hooks/useButton/useButton.test.d.ts +1 -0
  16. package/dist/cjs/hooks/useButton/useButton.test.js +143 -0
  17. package/dist/cjs/hooks/useButton/useButton.test.js.map +1 -0
  18. package/dist/cjs/tsconfig.tsbuildinfo +1 -1
  19. package/dist/esm/components/Button/Button.js +10 -15
  20. package/dist/esm/components/Button/Button.js.map +1 -1
  21. package/dist/esm/components/DatePicker/DatePicker.js.map +1 -1
  22. package/dist/esm/hooks/index.js +1 -0
  23. package/dist/esm/hooks/index.js.map +1 -1
  24. package/dist/esm/hooks/useButton/index.js +2 -0
  25. package/dist/esm/hooks/useButton/index.js.map +1 -0
  26. package/dist/esm/hooks/useButton/useButton.js +28 -0
  27. package/dist/esm/hooks/useButton/useButton.js.map +1 -0
  28. package/dist/esm/hooks/useButton/useButton.test.js +141 -0
  29. package/dist/esm/hooks/useButton/useButton.test.js.map +1 -0
  30. package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
  31. package/dist/mobius.d.ts +39 -2
  32. package/package.json +1 -1
  33. package/src/components/Button/Button.tsx +10 -34
  34. package/src/components/DatePicker/DatePicker.tsx +1 -0
  35. package/src/hooks/index.tsx +1 -0
  36. package/src/hooks/useButton/index.tsx +1 -0
  37. package/src/hooks/useButton/useButton.test.tsx +183 -0
  38. package/src/hooks/useButton/useButton.tsx +75 -0
package/CHANGELOG.md CHANGED
@@ -5,6 +5,13 @@ All notable changes to this project will be documented in this file, or link in
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [3.7.0] - 2023-07-31
9
+
10
+ ### Added
11
+
12
+ - New simpler `useButton` hook implemenation, to work correctly with
13
+ shadow DOM
14
+
8
15
  ## [3.6.2] - 2023-07-26
9
16
 
10
17
  ### Fixed
@@ -271,6 +278,8 @@ Additionally, mobius and themes are available on the public NPM registry and can
271
278
 
272
279
  ## Github Links
273
280
 
281
+ [3.7.1]: https://github.com/simplybusiness/mobius/releases/tag/v3.7.1
282
+ [3.7.0]: https://github.com/simplybusiness/mobius/releases/tag/v3.7.0
274
283
  [3.6.2]: https://github.com/simplybusiness/mobius/releases/tag/v3.6.2
275
284
  [3.6.1]: https://github.com/simplybusiness/mobius/releases/tag/v3.6.1
276
285
  [3.6.0]: https://github.com/simplybusiness/mobius/releases/tag/v3.6.0
@@ -1,12 +1,13 @@
1
1
  import { Ref, RefAttributes, ReactNode } from "react";
2
- import type { AriaButtonProps } from "@react-types/button";
3
2
  import { DOMProps } from "@react-types/shared";
3
+ import { AriaFocusRingProps } from "@react-aria/focus";
4
4
  import type { IconName } from "@simplybusiness/icons";
5
5
  import { ForwardedRefComponent } from "../../types/components";
6
+ import { UseButtonProps } from "../../hooks/useButton";
6
7
  export type ButtonElementType = HTMLButtonElement;
7
8
  export type Variant = "primary" | "secondary" | "ghost" | "inverse" | "inverse-ghost" | "basic";
8
9
  export type Size = "small" | "medium" | "large";
9
- export interface ButtonProps extends Omit<AriaButtonProps<"button" | "a" | "span">, "aria-haspopup" | "aria-expanded">, DOMProps, RefAttributes<ButtonElementType> {
10
+ export interface ButtonProps extends UseButtonProps, AriaFocusRingProps, DOMProps, RefAttributes<ButtonElementType> {
10
11
  /** Custom class name for setting specific CSS */
11
12
  className?: string;
12
13
  /** Shortlist of styles */
@@ -18,25 +18,20 @@ Object.defineProperty(exports, "__esModule", { value: true });
18
18
  exports.Button = void 0;
19
19
  const jsx_runtime_1 = require("react/jsx-runtime");
20
20
  const react_1 = require("react");
21
- const button_1 = require("@react-aria/button");
22
21
  const interactions_1 = require("@react-aria/interactions");
23
22
  const clsx_1 = __importDefault(require("clsx"));
24
23
  const focus_1 = require("@react-aria/focus");
25
24
  const Loading_1 = require("./Loading");
26
25
  const Icon_1 = require("../Icon");
26
+ const useButton_1 = require("../../hooks/useButton");
27
27
  const Button = (0, react_1.forwardRef)((props, ref) => {
28
- const { children, elementType: Component = "button", isDisabled, isLoading, isSuccess, variant = "primary", size = "medium", icon, iconPosition = "left", onPress, onPressChange, onPressEnd, onPressStart, onPressUp, onClick } = props, otherProps = __rest(props, ["children", "elementType", "isDisabled", "isLoading", "isSuccess", "variant", "size", "icon", "iconPosition", "onPress", "onPressChange", "onPressEnd", "onPressStart", "onPressUp", "onClick"]);
29
- const refObj = (0, react_1.useRef)(null);
30
- const { hoverProps, isHovered } = (0, interactions_1.useHover)(Object.assign(Object.assign({}, props), { isDisabled }));
31
- const { buttonProps } = (0, button_1.useButton)({
32
- onPress,
33
- onPressChange,
34
- onPressEnd,
35
- onPressStart,
36
- onPressUp,
37
- isDisabled,
38
- }, refObj);
39
- const mergedButtonProps = Object.assign(Object.assign({}, buttonProps), { onClick: (event) => { var _a; return (onClick === null || onClick === void 0 ? void 0 : onClick(event)) || ((_a = buttonProps.onClick) === null || _a === void 0 ? void 0 : _a.call(buttonProps, event)); } });
28
+ const { children, elementType: Component = "button", isDisabled, isLoading, isSuccess, variant = "primary", size = "medium", icon, iconPosition = "left",
29
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
30
+ onPress,
31
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
32
+ onClick } = props, otherProps = __rest(props, ["children", "elementType", "isDisabled", "isLoading", "isSuccess", "variant", "size", "icon", "iconPosition", "onPress", "onClick"]);
33
+ const { hoverProps, isHovered } = (0, interactions_1.useHover)(props);
34
+ const { buttonProps } = (0, useButton_1.useButton)(props);
40
35
  const { focusProps, isFocusVisible } = (0, focus_1.useFocusRing)(props);
41
36
  // Reshape class name and apply to outer element
42
37
  const classes = (0, clsx_1.default)("mobius", "mobius/Button", `--variant-${variant}`, `--size-${size}`, {
@@ -52,7 +47,7 @@ const Button = (0, react_1.forwardRef)((props, ref) => {
52
47
  "hide-children": isLoading || isSuccess,
53
48
  });
54
49
  const hasIcon = icon && !isLoading && !isSuccess;
55
- return ((0, jsx_runtime_1.jsxs)(Component, Object.assign({ ref: ref }, mergedButtonProps, hoverProps, focusProps, otherProps, { children: [isLoading && (0, jsx_runtime_1.jsx)(Loading_1.Loading, {}), hasIcon && iconPosition === "left" && (0, jsx_runtime_1.jsx)(Icon_1.Icon, { name: icon }), children && (0, jsx_runtime_1.jsx)("span", Object.assign({ className: spanClasses }, { children: children })), hasIcon && iconPosition === "right" && (0, jsx_runtime_1.jsx)(Icon_1.Icon, { name: icon })] })));
50
+ return ((0, jsx_runtime_1.jsxs)(Component, Object.assign({ ref: ref }, buttonProps, hoverProps, focusProps, otherProps, { children: [isLoading && (0, jsx_runtime_1.jsx)(Loading_1.Loading, {}), hasIcon && iconPosition === "left" && (0, jsx_runtime_1.jsx)(Icon_1.Icon, { name: icon }), children && (0, jsx_runtime_1.jsx)("span", Object.assign({ className: spanClasses }, { children: children })), hasIcon && iconPosition === "right" && (0, jsx_runtime_1.jsx)(Icon_1.Icon, { name: icon })] })));
56
51
  });
57
52
  exports.Button = Button;
58
53
  Button.displayName = "Button";
@@ -1 +1 @@
1
- {"version":3,"file":"Button.js","sourceRoot":"","sources":["../../../../src/components/Button/Button.tsx"],"names":[],"mappings":";AAAA,YAAY,CAAC;;;;;;;;;;;;;;;;;;AAEb,iCAA0E;AAC1E,+CAA+C;AAC/C,2DAAoD;AAGpD,gDAAwB;AACxB,6CAAiD;AAGjD,uCAAoC;AACpC,kCAA+B;AAsC/B,MAAM,MAAM,GACV,IAAA,kBAAU,EAAC,CAAC,KAAkB,EAAE,GAAc,EAAE,EAAE;IAChD,MAAM,EACJ,QAAQ,EACR,WAAW,EAAE,SAAS,GAAG,QAAQ,EACjC,UAAU,EACV,SAAS,EACT,SAAS,EACT,OAAO,GAAG,SAAS,EACnB,IAAI,GAAG,QAAQ,EACf,IAAI,EACJ,YAAY,GAAG,MAAM,EACrB,OAAO,EACP,aAAa,EACb,UAAU,EACV,YAAY,EACZ,SAAS,EACT,OAAO,KAEL,KAAK,EADJ,UAAU,UACX,KAAK,EAjBH,gMAiBL,CAAQ,CAAC;IACV,MAAM,MAAM,GAAG,IAAA,cAAM,EAAC,IAAI,CAAC,CAAC;IAC5B,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,GAAG,IAAA,uBAAQ,kCACrC,KAAK,KACR,UAAU,IACV,CAAC;IACH,MAAM,EAAE,WAAW,EAAE,GAAG,IAAA,kBAAS,EAC/B;QACE,OAAO;QACP,aAAa;QACb,UAAU;QACV,YAAY;QACZ,SAAS;QACT,UAAU;KACX,EACD,MAAM,CACP,CAAC;IACF,MAAM,iBAAiB,mCAClB,WAAW,KACd,OAAO,EAAE,CAAC,KAA0C,EAAE,EAAE,WACtD,OAAA,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAG,KAAK,CAAC,MAAI,MAAA,WAAW,CAAC,OAAO,4DAAG,KAAK,CAAC,CAAA,CAAA,EAAA,GACnD,CAAC;IAEF,MAAM,EAAE,UAAU,EAAE,cAAc,EAAE,GAAG,IAAA,oBAAY,EAAC,KAAK,CAAC,CAAC;IAE3D,gDAAgD;IAChD,MAAM,OAAO,GAAG,IAAA,cAAI,EAClB,QAAQ,EACR,eAAe,EACf,aAAa,OAAO,EAAE,EACtB,UAAU,IAAI,EAAE,EAChB;QACE,eAAe,EAAE,UAAU;QAC3B,cAAc,EAAE,SAAS;QACzB,cAAc,EAAE,SAAS;QACzB,cAAc,EAAE,SAAS,IAAI,CAAC,SAAS;QACvC,oBAAoB,EAAE,cAAc;QACpC,YAAY,EAAE,IAAI;KACnB,EACD,UAAU,CAAC,SAAS,CACrB,CAAC;IACF,UAAU,CAAC,SAAS,GAAG,OAAO,CAAC;IAE/B,MAAM,WAAW,GAAG,IAAA,cAAI,EAAC;QACvB,eAAe,EAAE,SAAS,IAAI,SAAS;KACxC,CAAC,CAAC;IACH,MAAM,OAAO,GAAG,IAAI,IAAI,CAAC,SAAS,IAAI,CAAC,SAAS,CAAC;IAEjD,OAAO,CACL,wBAAC,SAAS,kBACR,GAAG,EAAE,GAAG,IACJ,iBAAiB,EACjB,UAAU,EACV,UAAU,EACV,UAAU,eAEb,SAAS,IAAI,uBAAC,iBAAO,KAAG,EACxB,OAAO,IAAI,YAAY,KAAK,MAAM,IAAI,uBAAC,WAAI,IAAC,IAAI,EAAE,IAAI,GAAI,EAC1D,QAAQ,IAAI,+CAAM,SAAS,EAAE,WAAW,gBAAG,QAAQ,IAAQ,EAC3D,OAAO,IAAI,YAAY,KAAK,OAAO,IAAI,uBAAC,WAAI,IAAC,IAAI,EAAE,IAAI,GAAI,KAClD,CACb,CAAC;AACJ,CAAC,CAAC,CAAC;AAGI,wBAAM;AADf,MAAM,CAAC,WAAW,GAAG,QAAQ,CAAC"}
1
+ {"version":3,"file":"Button.js","sourceRoot":"","sources":["../../../../src/components/Button/Button.tsx"],"names":[],"mappings":";AAAA,YAAY,CAAC;;;;;;;;;;;;;;;;;;AAEb,iCAAkE;AAClE,2DAAoD;AAEpD,gDAAwB;AACxB,6CAAqE;AAGrE,uCAAoC;AACpC,kCAA+B;AAC/B,qDAAkE;AAoClE,MAAM,MAAM,GACV,IAAA,kBAAU,EAAC,CAAC,KAAkB,EAAE,GAAc,EAAE,EAAE;IAChD,MAAM,EACJ,QAAQ,EACR,WAAW,EAAE,SAAS,GAAG,QAAQ,EACjC,UAAU,EACV,SAAS,EACT,SAAS,EACT,OAAO,GAAG,SAAS,EACnB,IAAI,GAAG,QAAQ,EACf,IAAI,EACJ,YAAY,GAAG,MAAM;IACrB,6DAA6D;IAC7D,OAAO;IACP,6DAA6D;IAC7D,OAAO,KAEL,KAAK,EADJ,UAAU,UACX,KAAK,EAfH,oIAeL,CAAQ,CAAC;IACV,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,GAAG,IAAA,uBAAQ,EAAC,KAAK,CAAC,CAAC;IAClD,MAAM,EAAE,WAAW,EAAE,GAAG,IAAA,qBAAS,EAAC,KAAK,CAAC,CAAC;IAEzC,MAAM,EAAE,UAAU,EAAE,cAAc,EAAE,GAAG,IAAA,oBAAY,EAAC,KAAK,CAAC,CAAC;IAE3D,gDAAgD;IAChD,MAAM,OAAO,GAAG,IAAA,cAAI,EAClB,QAAQ,EACR,eAAe,EACf,aAAa,OAAO,EAAE,EACtB,UAAU,IAAI,EAAE,EAChB;QACE,eAAe,EAAE,UAAU;QAC3B,cAAc,EAAE,SAAS;QACzB,cAAc,EAAE,SAAS;QACzB,cAAc,EAAE,SAAS,IAAI,CAAC,SAAS;QACvC,oBAAoB,EAAE,cAAc;QACpC,YAAY,EAAE,IAAI;KACnB,EACD,UAAU,CAAC,SAAS,CACrB,CAAC;IACF,UAAU,CAAC,SAAS,GAAG,OAAO,CAAC;IAE/B,MAAM,WAAW,GAAG,IAAA,cAAI,EAAC;QACvB,eAAe,EAAE,SAAS,IAAI,SAAS;KACxC,CAAC,CAAC;IACH,MAAM,OAAO,GAAG,IAAI,IAAI,CAAC,SAAS,IAAI,CAAC,SAAS,CAAC;IAEjD,OAAO,CACL,wBAAC,SAAS,kBACR,GAAG,EAAE,GAAG,IACJ,WAAW,EACX,UAAU,EACV,UAAU,EACV,UAAU,eAEb,SAAS,IAAI,uBAAC,iBAAO,KAAG,EACxB,OAAO,IAAI,YAAY,KAAK,MAAM,IAAI,uBAAC,WAAI,IAAC,IAAI,EAAE,IAAI,GAAI,EAC1D,QAAQ,IAAI,+CAAM,SAAS,EAAE,WAAW,gBAAG,QAAQ,IAAQ,EAC3D,OAAO,IAAI,YAAY,KAAK,OAAO,IAAI,uBAAC,WAAI,IAAC,IAAI,EAAE,IAAI,GAAI,KAClD,CACb,CAAC;AACJ,CAAC,CAAC,CAAC;AAGI,wBAAM;AADf,MAAM,CAAC,WAAW,GAAG,QAAQ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"DatePicker.js","sourceRoot":"","sources":["../../../../src/components/DatePicker/DatePicker.tsx"],"names":[],"mappings":";AAAA,YAAY,CAAC;;;;;;;AAEb,0DAGmC;AACnC,uDAA4E;AAC5E,iCAA+B;AAC/B,mDAAqD;AAErD,2DAAoD;AACpD,6CAAiD;AACjD,gDAAwB;AACxB,iEAA6D;AAC7D,2CAAwC;AACxC,sCAAmC;AACnC,uCAAoC;AACpC,yCAAsC;AACtC,oCAAiC;AAQjC,SAAgB,UAAU,CAAC,KAAsB;IAC/C,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,KAAK,CAAC;IACpC,MAAM,KAAK,GAAG,IAAA,+BAAkB,EAAC,KAAK,CAAC,CAAC;IACxC,MAAM,GAAG,GAAG,IAAA,cAAM,EAAwB,IAAI,CAAC,CAAC;IAChD,MAAM,EACJ,UAAU,EACV,UAAU,EACV,UAAU,EACV,WAAW,EACX,WAAW,EACX,aAAa,GACd,GAAG,IAAA,0BAAa,EAAC,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;IAErC,MAAM,OAAO,GAAG,IAAA,cAAI,EAAC,mBAAmB,EAAE;QACxC,YAAY,EAAE,KAAK,CAAC,eAAe,KAAK,OAAO;QAC/C,cAAc,EAAE,KAAK,CAAC,eAAe,KAAK,SAAS;QACnD,eAAe,EAAE,OAAO,UAAU,KAAK,SAAS,IAAI,UAAU;QAC9D,eAAe,EAAE,OAAO,UAAU,KAAK,SAAS,IAAI,CAAC,UAAU;KAChE,CAAC,CAAC;IAEH,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,GAAG,IAAA,uBAAQ,oBACrC,KAAK,EACR,CAAC;IAEH,MAAM,EAAE,UAAU,EAAE,cAAc,EAAE,GAAG,IAAA,oBAAY,EAAC,KAAK,CAAC,CAAC;IAE3D,MAAM,qBAAqB,GAAG,IAAA,cAAI,EAAC,uBAAuB,EAAE;QAC1D,cAAc,EAAE,SAAS;QACzB,cAAc,EAAE,cAAc;KAC/B,CAAC,CAAC;IAEH,MAAM,gBAAgB,GAAG,IAAA,cAAI,EAAC,kBAAkB,EAAE;QAChD,cAAc,EAAE,SAAS;QACzB,cAAc,EAAE,cAAc;KAC/B,CAAC,CAAC;IAEH,MAAM,aAAa,GAAG,IAAA,cAAI,EAAC,wBAAwB,EAAE;QACnD,cAAc,EAAE,SAAS;QACzB,cAAc,EAAE,cAAc;KAC/B,CAAC,CAAC;IAEH,OAAO,CACL,uBAAC,wBAAa,cACZ,+CAAK,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,iBACtD,uBAAC,aAAK,oBAAK,UAAU,cAAG,KAAK,IAAS,EACtC,iDACM,UAAU,EACV,UAAU,EACV,UAAU,IACd,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,qBAAqB,iBAEhC,uBAAC,qBAAS,oBAAK,UAAU,IAAE,SAAS,EAAE,gBAAgB,IAAI,EAC1D,uBAAC,eAAM,kBACL,OAAO,EAAC,WAAW,IACf,WAAW,IACf,SAAS,EAAE,aAAa,gBAExB,uBAAC,gCAAc,4BAA2B,IACnC,KACL,EACL,KAAK,CAAC,MAAM,IAAI;gBACf,sBAAsB;gBACtB,uBAAC,iBAAO,oBACF,WAAW,IACf,MAAM,EAAE,KAAK,CAAC,MAAM,EACpB,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,gBAEnC,uBAAC,mBAAQ,oBAAK,aAAa,EAAI,IACvB,CACX,KACG,GACQ,CACjB,CAAC;AACJ,CAAC;AA1ED,gCA0EC"}
1
+ {"version":3,"file":"DatePicker.js","sourceRoot":"","sources":["../../../../src/components/DatePicker/DatePicker.tsx"],"names":[],"mappings":";AAAA,YAAY,CAAC;;;;;;;AAEb,0DAGmC;AACnC,uDAA4E;AAC5E,iCAA+B;AAC/B,mDAAqD;AAErD,2DAAoD;AACpD,6CAAiD;AACjD,gDAAwB;AACxB,iEAA6D;AAC7D,2CAAwC;AACxC,sCAAmC;AACnC,uCAAoC;AACpC,yCAAsC;AACtC,oCAAiC;AAQjC,SAAgB,UAAU,CAAC,KAAsB;IAC/C,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,KAAK,CAAC;IACpC,MAAM,KAAK,GAAG,IAAA,+BAAkB,EAAC,KAAK,CAAC,CAAC;IACxC,MAAM,GAAG,GAAG,IAAA,cAAM,EAAwB,IAAI,CAAC,CAAC;IAChD,MAAM,EACJ,UAAU,EACV,UAAU,EACV,UAAU,EACV,WAAW,EACX,WAAW,EACX,aAAa,GACd,GAAG,IAAA,0BAAa,EAAC,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;IAErC,MAAM,OAAO,GAAG,IAAA,cAAI,EAAC,mBAAmB,EAAE;QACxC,YAAY,EAAE,KAAK,CAAC,eAAe,KAAK,OAAO;QAC/C,cAAc,EAAE,KAAK,CAAC,eAAe,KAAK,SAAS;QACnD,eAAe,EAAE,OAAO,UAAU,KAAK,SAAS,IAAI,UAAU;QAC9D,eAAe,EAAE,OAAO,UAAU,KAAK,SAAS,IAAI,CAAC,UAAU;KAChE,CAAC,CAAC;IAEH,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,GAAG,IAAA,uBAAQ,oBACrC,KAAK,EACR,CAAC;IAEH,MAAM,EAAE,UAAU,EAAE,cAAc,EAAE,GAAG,IAAA,oBAAY,EAAC,KAAK,CAAC,CAAC;IAE3D,MAAM,qBAAqB,GAAG,IAAA,cAAI,EAAC,uBAAuB,EAAE;QAC1D,cAAc,EAAE,SAAS;QACzB,cAAc,EAAE,cAAc;KAC/B,CAAC,CAAC;IAEH,MAAM,gBAAgB,GAAG,IAAA,cAAI,EAAC,kBAAkB,EAAE;QAChD,cAAc,EAAE,SAAS;QACzB,cAAc,EAAE,cAAc;KAC/B,CAAC,CAAC;IAEH,MAAM,aAAa,GAAG,IAAA,cAAI,EAAC,wBAAwB,EAAE;QACnD,cAAc,EAAE,SAAS;QACzB,cAAc,EAAE,cAAc;KAC/B,CAAC,CAAC;IAEH,OAAO,CACL,uBAAC,wBAAa,cACZ,+CAAK,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,iBACtD,uBAAC,aAAK,oBAAK,UAAU,cAAG,KAAK,IAAS,EACtC,iDACM,UAAU,EACV,UAAU,EACV,UAAU,IACd,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,qBAAqB,iBAEhC,uBAAC,qBAAS,oBAAK,UAAU,IAAE,SAAS,EAAE,gBAAgB,IAAI,EAE1D,uBAAC,eAAM,kBACL,OAAO,EAAC,WAAW,IACf,WAAW,IACf,SAAS,EAAE,aAAa,gBAExB,uBAAC,gCAAc,4BAA2B,IACnC,KACL,EACL,KAAK,CAAC,MAAM,IAAI;gBACf,sBAAsB;gBACtB,uBAAC,iBAAO,oBACF,WAAW,IACf,MAAM,EAAE,KAAK,CAAC,MAAM,EACpB,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,gBAEnC,uBAAC,mBAAQ,oBAAK,aAAa,EAAI,IACvB,CACX,KACG,GACQ,CACjB,CAAC;AACJ,CAAC;AA3ED,gCA2EC"}
@@ -1,2 +1,3 @@
1
1
  export * from "./useBreakpoint";
2
2
  export * from "./useHideColumns";
3
+ export * from "./useButton";
@@ -16,4 +16,5 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./useBreakpoint"), exports);
18
18
  __exportStar(require("./useHideColumns"), exports);
19
+ __exportStar(require("./useButton"), exports);
19
20
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/hooks/index.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,kDAAgC;AAChC,mDAAiC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/hooks/index.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,kDAAgC;AAChC,mDAAiC;AACjC,8CAA4B"}
@@ -0,0 +1 @@
1
+ export * from "./useButton";
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./useButton"), exports);
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/hooks/useButton/index.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,8CAA4B"}
@@ -0,0 +1,35 @@
1
+ import { JSXElementConstructor } from "react";
2
+ export interface UseButtonProps {
3
+ elementType?: "button" | "a" | "span" | "input" | JSXElementConstructor<any> | undefined;
4
+ type?: "button" | "submit" | "reset";
5
+ isDisabled?: boolean;
6
+ onClick?: (event: React.MouseEvent<HTMLButtonElement>) => void;
7
+ onPress?: (event: React.MouseEvent<HTMLButtonElement>) => void;
8
+ href?: string;
9
+ target?: string;
10
+ rel?: string;
11
+ role?: string;
12
+ }
13
+ export declare function useButton({ elementType, type, isDisabled, href, target, rel, role, onClick, onPress, }: UseButtonProps): {
14
+ buttonProps: {
15
+ onClick: (event: React.MouseEvent<HTMLButtonElement>) => void;
16
+ type: "button" | "reset" | "submit";
17
+ role?: undefined;
18
+ href: string | undefined;
19
+ target: string | undefined;
20
+ rel: string | undefined;
21
+ tabIndex: number;
22
+ disabled: true | undefined;
23
+ "aria-disabled": true | undefined;
24
+ } | {
25
+ onClick: (event: React.MouseEvent<HTMLButtonElement>) => void;
26
+ role: string | undefined;
27
+ type?: undefined;
28
+ href: string | undefined;
29
+ target: string | undefined;
30
+ rel: string | undefined;
31
+ tabIndex: number;
32
+ disabled: true | undefined;
33
+ "aria-disabled": true | undefined;
34
+ };
35
+ };
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useButton = void 0;
4
+ const react_1 = require("react");
5
+ function useButton({ elementType = "button", type = "button", isDisabled = false, href, target, rel, role, onClick, onPress, }) {
6
+ const realOnClick = (0, react_1.useCallback)((event) => {
7
+ if (isDisabled) {
8
+ return;
9
+ }
10
+ onClick === null || onClick === void 0 ? void 0 : onClick(event);
11
+ onPress === null || onPress === void 0 ? void 0 : onPress(event);
12
+ }, [isDisabled, onClick, onPress]);
13
+ function getRole() {
14
+ if (role) {
15
+ return role;
16
+ }
17
+ if (elementType === "a") {
18
+ return undefined;
19
+ }
20
+ return "button";
21
+ }
22
+ const extraProps = elementType === "button"
23
+ ? { type }
24
+ : {
25
+ role: getRole(),
26
+ };
27
+ return {
28
+ buttonProps: Object.assign(Object.assign({ href: elementType === "a" ? href : undefined, target: elementType === "a" ? target : undefined, rel: elementType === "a" ? rel : undefined, tabIndex: isDisabled ? -1 : 0, disabled: isDisabled || undefined, "aria-disabled": isDisabled || undefined }, extraProps), { onClick: realOnClick }),
29
+ };
30
+ }
31
+ exports.useButton = useButton;
32
+ //# sourceMappingURL=useButton.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useButton.js","sourceRoot":"","sources":["../../../../src/hooks/useButton/useButton.tsx"],"names":[],"mappings":";;;AAAA,iCAA2D;AAoB3D,SAAgB,SAAS,CAAC,EACxB,WAAW,GAAG,QAAQ,EACtB,IAAI,GAAG,QAAQ,EACf,UAAU,GAAG,KAAK,EAClB,IAAI,EACJ,MAAM,EACN,GAAG,EACH,IAAI,EACJ,OAAO,EACP,OAAO,GACQ;IACf,MAAM,WAAW,GAAG,IAAA,mBAAW,EAC7B,CAAC,KAA0C,EAAE,EAAE;QAC7C,IAAI,UAAU,EAAE;YACd,OAAO;SACR;QAED,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAG,KAAK,CAAC,CAAC;QACjB,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAG,KAAK,CAAC,CAAC;IACnB,CAAC,EACD,CAAC,UAAU,EAAE,OAAO,EAAE,OAAO,CAAC,CAC/B,CAAC;IAEF,SAAS,OAAO;QACd,IAAI,IAAI,EAAE;YACR,OAAO,IAAI,CAAC;SACb;QAED,IAAI,WAAW,KAAK,GAAG,EAAE;YACvB,OAAO,SAAS,CAAC;SAClB;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,MAAM,UAAU,GACd,WAAW,KAAK,QAAQ;QACtB,CAAC,CAAC,EAAE,IAAI,EAAE;QACV,CAAC,CAAC;YACE,IAAI,EAAE,OAAO,EAAE;SAChB,CAAC;IAER,OAAO;QACL,WAAW,gCACT,IAAI,EAAE,WAAW,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,EAC5C,MAAM,EAAE,WAAW,KAAK,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,EAChD,GAAG,EAAE,WAAW,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,EAC1C,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAC7B,QAAQ,EAAE,UAAU,IAAI,SAAS,EACjC,eAAe,EAAE,UAAU,IAAI,SAAS,IACrC,UAAU,KACb,OAAO,EAAE,WAAW,GACrB;KACF,CAAC;AACJ,CAAC;AAtDD,8BAsDC"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,143 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const react_1 = require("@testing-library/react");
4
+ const useButton_1 = require("./useButton");
5
+ describe("useButton", () => {
6
+ it("should return an object", () => {
7
+ const { result } = (0, react_1.renderHook)(() => (0, useButton_1.useButton)({}));
8
+ expect(result.current).toBeInstanceOf(Object);
9
+ });
10
+ it("should return an object with buttonProps", () => {
11
+ const { result } = (0, react_1.renderHook)(() => (0, useButton_1.useButton)({}));
12
+ expect(result.current).toHaveProperty("buttonProps");
13
+ });
14
+ describe("type", () => {
15
+ it("should return an object with buttonProps with type property", () => {
16
+ const { result } = (0, react_1.renderHook)(() => (0, useButton_1.useButton)({}));
17
+ expect(result.current.buttonProps).toHaveProperty("type");
18
+ });
19
+ it("should return an object with buttonProps with type set to button when elementType is button", () => {
20
+ const { result } = (0, react_1.renderHook)(() => (0, useButton_1.useButton)({ elementType: "button" }));
21
+ expect(result.current.buttonProps).toHaveProperty("type", "button");
22
+ });
23
+ it("should return an object with buttonProps with type set to passed in type when elementType is button", () => {
24
+ const { result } = (0, react_1.renderHook)(() => (0, useButton_1.useButton)({ type: "submit" }));
25
+ expect(result.current.buttonProps).toHaveProperty("type", "submit");
26
+ });
27
+ it("should return an object without buttonProps with type property when elementType is not button", () => {
28
+ const { result } = (0, react_1.renderHook)(() => (0, useButton_1.useButton)({ elementType: "a" }));
29
+ expect(result.current.buttonProps).not.toHaveProperty("type");
30
+ });
31
+ });
32
+ describe("isDisabled", () => {
33
+ it("should return an object with buttonProps with disabled property set to undefined", () => {
34
+ const { result } = (0, react_1.renderHook)(() => (0, useButton_1.useButton)({}));
35
+ expect(result.current.buttonProps).toHaveProperty("disabled", undefined);
36
+ });
37
+ it("should return an object with buttonProps with disabled set to true when isDisabled is set to true", () => {
38
+ const { result } = (0, react_1.renderHook)(() => (0, useButton_1.useButton)({ isDisabled: true }));
39
+ expect(result.current.buttonProps).toHaveProperty("disabled", true);
40
+ });
41
+ it("should return an object with buttonProps with aria-disabled property set to undefined", () => {
42
+ const { result } = (0, react_1.renderHook)(() => (0, useButton_1.useButton)({}));
43
+ expect(result.current.buttonProps).toHaveProperty("aria-disabled", undefined);
44
+ });
45
+ it("should return an object with buttonProps with aria-disabled property set to true when isDisabled is set to true", () => {
46
+ const { result } = (0, react_1.renderHook)(() => (0, useButton_1.useButton)({ isDisabled: true }));
47
+ expect(result.current.buttonProps).toHaveProperty("aria-disabled", true);
48
+ });
49
+ });
50
+ describe("href", () => {
51
+ describe("when elementType is a", () => {
52
+ it("should return an object with buttonProps with href property set to undefined", () => {
53
+ const { result } = (0, react_1.renderHook)(() => (0, useButton_1.useButton)({}));
54
+ expect(result.current.buttonProps).toHaveProperty("href", undefined);
55
+ });
56
+ it("should return an object with buttonProps with href property set to passed in href", () => {
57
+ const { result } = (0, react_1.renderHook)(() => (0, useButton_1.useButton)({ elementType: "a", href: "test" }));
58
+ expect(result.current.buttonProps).toHaveProperty("href", "test");
59
+ });
60
+ });
61
+ describe("when elementType is not a", () => {
62
+ it("should return an object with buttonProps with href property set to undefined", () => {
63
+ const { result } = (0, react_1.renderHook)(() => (0, useButton_1.useButton)({ elementType: "button" }));
64
+ expect(result.current.buttonProps).toHaveProperty("href", undefined);
65
+ });
66
+ });
67
+ });
68
+ describe("target", () => {
69
+ describe("when elementType is a", () => {
70
+ it("should return an object with buttonProps with target property set to undefined", () => {
71
+ const { result } = (0, react_1.renderHook)(() => (0, useButton_1.useButton)({}));
72
+ expect(result.current.buttonProps).toHaveProperty("target", undefined);
73
+ });
74
+ it("should return an object with buttonProps with target property set to passed in target", () => {
75
+ const { result } = (0, react_1.renderHook)(() => (0, useButton_1.useButton)({ elementType: "a", target: "test" }));
76
+ expect(result.current.buttonProps).toHaveProperty("target", "test");
77
+ });
78
+ });
79
+ describe("when elementType is not a", () => {
80
+ it("should return an object with buttonProps with target property set to undefined", () => {
81
+ const { result } = (0, react_1.renderHook)(() => (0, useButton_1.useButton)({ elementType: "button" }));
82
+ expect(result.current.buttonProps).toHaveProperty("target", undefined);
83
+ });
84
+ });
85
+ });
86
+ describe("rel", () => {
87
+ describe("when elementType is a", () => {
88
+ it("should return an object with buttonProps with rel property set to undefined", () => {
89
+ const { result } = (0, react_1.renderHook)(() => (0, useButton_1.useButton)({}));
90
+ expect(result.current.buttonProps).toHaveProperty("rel", undefined);
91
+ });
92
+ it("should return an object with buttonProps with rel property set to passed in rel", () => {
93
+ const { result } = (0, react_1.renderHook)(() => (0, useButton_1.useButton)({ elementType: "a", rel: "test" }));
94
+ expect(result.current.buttonProps).toHaveProperty("rel", "test");
95
+ });
96
+ });
97
+ describe("when elementType is not a", () => {
98
+ it("should return an object with buttonProps with rel property set to undefined", () => {
99
+ const { result } = (0, react_1.renderHook)(() => (0, useButton_1.useButton)({ elementType: "button" }));
100
+ expect(result.current.buttonProps).toHaveProperty("rel", undefined);
101
+ });
102
+ });
103
+ });
104
+ describe("events", () => {
105
+ it("should return an object with buttonProps with onClick property", () => {
106
+ const { result } = (0, react_1.renderHook)(() => (0, useButton_1.useButton)({}));
107
+ expect(result.current.buttonProps).toHaveProperty("onClick");
108
+ });
109
+ describe("onClick", () => {
110
+ it("should call onClick when buttonProps onClick is called", () => {
111
+ const onClick = jest.fn();
112
+ const { result } = (0, react_1.renderHook)(() => (0, useButton_1.useButton)({ onClick }));
113
+ // @ts-expect-error - We don't care about the event argument
114
+ result.current.buttonProps.onClick();
115
+ expect(onClick).toHaveBeenCalled();
116
+ });
117
+ it("should not call onClick when buttonProps onClick is called and isDisabled is true", () => {
118
+ const onClick = jest.fn();
119
+ const { result } = (0, react_1.renderHook)(() => (0, useButton_1.useButton)({ onClick, isDisabled: true }));
120
+ // @ts-expect-error - We don't care about the event argument
121
+ result.current.buttonProps.onClick();
122
+ expect(onClick).not.toHaveBeenCalled();
123
+ });
124
+ });
125
+ describe("onPress", () => {
126
+ it("should call onPress when buttonProps onClick is called", () => {
127
+ const onPress = jest.fn();
128
+ const { result } = (0, react_1.renderHook)(() => (0, useButton_1.useButton)({ onPress }));
129
+ // @ts-expect-error - We don't care about the event argument
130
+ result.current.buttonProps.onClick();
131
+ expect(onPress).toHaveBeenCalled();
132
+ });
133
+ it("should not call onPress when buttonProps onClick is called and isDisabled is true", () => {
134
+ const onPress = jest.fn();
135
+ const { result } = (0, react_1.renderHook)(() => (0, useButton_1.useButton)({ onPress, isDisabled: true }));
136
+ // @ts-expect-error - We don't care about the event argument
137
+ result.current.buttonProps.onClick();
138
+ expect(onPress).not.toHaveBeenCalled();
139
+ });
140
+ });
141
+ });
142
+ });
143
+ //# sourceMappingURL=useButton.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useButton.test.js","sourceRoot":"","sources":["../../../../src/hooks/useButton/useButton.test.tsx"],"names":[],"mappings":"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"}