@nice-digital/nds-button 3.0.2 → 4.0.1-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/es/Button.d.ts ADDED
@@ -0,0 +1,30 @@
1
+ import * as React from "react";
2
+ import "../scss/button.scss";
3
+ interface ButtonProps extends React.HTMLProps<HTMLButtonElement | HTMLAnchorElement> {
4
+ [prop: string]: unknown;
5
+ /** The destination URL if this is an anchor */
6
+ to?: string;
7
+ variant?: "primary" | "cta" | "secondary" | "inverse";
8
+ buttonType?: "button" | "submit" | "reset";
9
+ /** A custom element type to be rendered as the tag, useful for custom routing */
10
+ elementType?: React.ElementType;
11
+ /** Additional classes e.g. margin modifiers like "mt--0" */
12
+ className?: string;
13
+ children: React.ReactNode;
14
+ method?: string;
15
+ }
16
+ export declare const Button: {
17
+ (props: ButtonProps): JSX.Element;
18
+ types: {
19
+ button: string;
20
+ submit: string;
21
+ reset: string;
22
+ };
23
+ variants: {
24
+ cta: string;
25
+ primary: string;
26
+ secondary: string;
27
+ inverse: string;
28
+ };
29
+ };
30
+ export {};
package/es/Button.js CHANGED
@@ -1,63 +1,53 @@
1
- import _extends from "@babel/runtime/helpers/esm/extends";
2
- import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
3
- var _excluded = ["variant", "to", "elementType", "children", "buttonType", "className", "method"];
4
- import * as React from "react";
5
- import PropTypes from "prop-types";
6
- import classnames from "classnames";
7
- import "../scss/button.scss";
8
- export var Button = function Button(props) {
9
- var _classnames;
10
-
11
- var _props$variant = props.variant,
12
- variant = _props$variant === void 0 ? "primary" : _props$variant,
13
- to = props.to,
14
- elementType = props.elementType,
15
- children = props.children,
16
- buttonType = props.buttonType,
17
- className = props.className,
18
- method = props.method,
19
- attributes = _objectWithoutPropertiesLoose(props, _excluded);
20
-
21
- var possibleVariants = Object.keys(Button.variants);
22
-
23
- if (variant && !possibleVariants.some(function (m) {
24
- return m === variant;
25
- })) {
26
- throw new Error("Expected variant to be one of '" + possibleVariants.join("', '") + "' but found '" + variant + "'");
27
- }
28
-
29
- var ButtonTagType = elementType || (to ? "a" : "button");
30
- var buttonProps = {};
31
-
32
- if (to) {
33
- buttonProps[method || ButtonTagType === "a" && "href" || "to"] = to;
34
- } else if (ButtonTagType === "button") {
35
- buttonProps.type = buttonType || Button.types.button;
36
- }
37
-
38
- buttonProps.className = classnames((_classnames = {
39
- btn: true
40
- }, _classnames["btn--" + variant] = variant !== Button.variants.primary, _classnames[className] = !!className, _classnames));
41
- return /*#__PURE__*/React.createElement(ButtonTagType, _extends({}, buttonProps, attributes), children);
42
- };
43
- Button.types = {
44
- button: "button",
45
- submit: "submit",
46
- reset: "reset"
47
- };
48
- Button.variants = {
49
- cta: "cta",
50
- primary: "primary",
51
- secondary: "secondary",
52
- inverse: "inverse"
53
- };
54
- Button.propTypes = {
55
- to: PropTypes.string,
56
- variant: PropTypes.oneOf([Button.variants.primary, Button.variants.cta, Button.variants.secondary, Button.variants.inverse]),
57
- buttonType: PropTypes.oneOf([Button.types.button, Button.types.submit, Button.types.reset]),
58
- elementType: PropTypes.elementType,
59
- className: PropTypes.string,
60
- children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]).isRequired,
61
- method: PropTypes.string
62
- };
63
- //# sourceMappingURL=Button.js.map
1
+ "use strict";
2
+ var __rest = (this && this.__rest) || function (s, e) {
3
+ var t = {};
4
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
5
+ t[p] = s[p];
6
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
7
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
8
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
9
+ t[p[i]] = s[p[i]];
10
+ }
11
+ return t;
12
+ };
13
+ var __importDefault = (this && this.__importDefault) || function (mod) {
14
+ return (mod && mod.__esModule) ? mod : { "default": mod };
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.Button = void 0;
18
+ const jsx_runtime_1 = require("react/jsx-runtime");
19
+ const classnames_1 = __importDefault(require("classnames"));
20
+ require("../scss/button.scss");
21
+ const Button = (props) => {
22
+ const { variant = "primary", to, elementType, children, buttonType, className, method } = props, attributes = __rest(props, ["variant", "to", "elementType", "children", "buttonType", "className", "method"]);
23
+ const possibleVariants = Object.keys(exports.Button.variants);
24
+ if (variant && !possibleVariants.some((m) => m === variant)) {
25
+ throw new Error(`Expected variant to be one of '${possibleVariants.join("', '")}' but found '${variant}'`);
26
+ }
27
+ const ButtonTagType = elementType || (to ? "a" : "button");
28
+ const buttonProps = {};
29
+ if (to) {
30
+ buttonProps[method || (ButtonTagType === "a" && "href") || "to"] = to;
31
+ }
32
+ else if (ButtonTagType === "button") {
33
+ buttonProps.type = buttonType || exports.Button.types.button;
34
+ }
35
+ buttonProps.className = (0, classnames_1.default)({
36
+ btn: true,
37
+ [`btn--${variant}`]: variant !== exports.Button.variants.primary,
38
+ [`${className}`]: !!className
39
+ });
40
+ return ((0, jsx_runtime_1.jsx)(ButtonTagType, Object.assign({}, buttonProps, attributes, { children: children })));
41
+ };
42
+ exports.Button = Button;
43
+ exports.Button.types = {
44
+ button: "button",
45
+ submit: "submit",
46
+ reset: "reset"
47
+ };
48
+ exports.Button.variants = {
49
+ cta: "cta",
50
+ primary: "primary",
51
+ secondary: "secondary",
52
+ inverse: "inverse"
53
+ };
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,108 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ const jsx_runtime_1 = require("react/jsx-runtime");
16
+ const react_1 = require("@testing-library/react");
17
+ const user_event_1 = __importDefault(require("@testing-library/user-event"));
18
+ const Button_1 = require("./Button");
19
+ describe("@nice-digital/nds-button", () => {
20
+ it("should render a button tag", () => {
21
+ const wrapper = (0, react_1.render)((0, jsx_runtime_1.jsx)(Button_1.Button, { children: "Example" }));
22
+ expect(wrapper.getByRole("button")).toBeInTheDocument();
23
+ });
24
+ it("should match snapshot", () => {
25
+ const wrapper = (0, react_1.render)((0, jsx_runtime_1.jsx)(Button_1.Button, { children: "Example" }));
26
+ expect(wrapper).toMatchSnapshot();
27
+ });
28
+ describe("contents", () => {
29
+ it("should render children prop into button contents", () => {
30
+ const wrapper = (0, react_1.render)((0, jsx_runtime_1.jsx)(Button_1.Button, { children: "Test contents" }));
31
+ expect(wrapper.getByRole("button", { name: "Test contents" })).toBeInTheDocument();
32
+ });
33
+ it("should render multiple children as content", () => {
34
+ const wrapper = (0, react_1.render)((0, jsx_runtime_1.jsxs)(Button_1.Button, { children: [(0, jsx_runtime_1.jsx)("span", { children: "1" }), (0, jsx_runtime_1.jsx)("span", { children: "2" })] }));
35
+ expect(wrapper.getByRole("button").querySelectorAll("span").length).toBe(2);
36
+ });
37
+ });
38
+ describe("button types", () => {
39
+ it("should pass buttonType prop into type attribute on rendered button", () => {
40
+ const wrapper = (0, react_1.render)((0, jsx_runtime_1.jsx)(Button_1.Button, Object.assign({ buttonType: "submit" }, { children: "Test contents" })));
41
+ expect(wrapper.getByRole("button").getAttribute("type")).toBe("submit");
42
+ });
43
+ });
44
+ describe("variants", () => {
45
+ it("should just use btn class for primary variant", () => {
46
+ const wrapper = (0, react_1.render)((0, jsx_runtime_1.jsx)(Button_1.Button, Object.assign({ variant: "primary" }, { children: "Primary" })));
47
+ expect(wrapper.getByRole("button")).toHaveClass("btn");
48
+ });
49
+ it("should append cta modifier class for cta variant", () => {
50
+ const wrapper = (0, react_1.render)((0, jsx_runtime_1.jsx)(Button_1.Button, Object.assign({ variant: "cta" }, { children: "CTA" })));
51
+ expect(wrapper.getByRole("button")).toHaveClass("btn btn--cta");
52
+ });
53
+ it("should append secondary modifier class for secondary variant", () => {
54
+ const wrapper = (0, react_1.render)((0, jsx_runtime_1.jsx)(Button_1.Button, Object.assign({ variant: "secondary" }, { children: "Secondary" })));
55
+ expect(wrapper.getByRole("button")).toHaveClass("btn btn--secondary");
56
+ });
57
+ it("should append inverse modifier class for inverse variant", () => {
58
+ const wrapper = (0, react_1.render)((0, jsx_runtime_1.jsx)(Button_1.Button, Object.assign({ variant: "inverse" }, { children: "Inverse" })));
59
+ expect(wrapper.getByRole("button")).toHaveClass("btn btn--inverse");
60
+ });
61
+ });
62
+ describe("anchors", () => {
63
+ it("should render an anchor when to prop is passed", () => {
64
+ const wrapper = (0, react_1.render)((0, jsx_runtime_1.jsx)(Button_1.Button, Object.assign({ to: "/test" }, { children: "Test" })));
65
+ expect(wrapper.getByRole("link")).toBeInTheDocument();
66
+ });
67
+ it("should render an href attribute with value from to prop", () => {
68
+ const wrapper = (0, react_1.render)((0, jsx_runtime_1.jsx)(Button_1.Button, Object.assign({ type: "anchor", to: "/test" }, { children: "Test" })));
69
+ expect(wrapper.getByRole("link").getAttribute("href")).toBe("/test");
70
+ });
71
+ });
72
+ describe("props", () => {
73
+ it("should pass props as attributes on rendered element", () => {
74
+ const wrapper = (0, react_1.render)((0, jsx_runtime_1.jsx)(Button_1.Button, Object.assign({ type: "submit", disabled: true, variant: "cta" }, { children: "txt" })));
75
+ const button = wrapper.getByRole("button", {
76
+ name: "txt"
77
+ });
78
+ expect(button).toHaveClass("btn btn--cta");
79
+ expect(button.getAttribute("type")).toBe("submit");
80
+ expect(button.disabled).toBe(true);
81
+ });
82
+ it("should append given className prop to rendered className attribute", () => {
83
+ const wrapper = (0, react_1.render)((0, jsx_runtime_1.jsx)(Button_1.Button, Object.assign({ className: "mt--0", to: "/test" }, { children: "txt" })));
84
+ expect(wrapper.getByRole("link", { name: "txt" }).getAttribute("href")).toBe("/test");
85
+ expect(wrapper.getByRole("link", { name: "txt" })).toHaveClass("btn mt--0");
86
+ });
87
+ it("should call onClick handler", () => __awaiter(void 0, void 0, void 0, function* () {
88
+ const clickHandler = jest.fn();
89
+ const wrapper = (0, react_1.render)((0, jsx_runtime_1.jsx)(Button_1.Button, Object.assign({ onClick: clickHandler }, { children: "Test" })));
90
+ const button = wrapper.getByRole("button");
91
+ user_event_1.default.click(button);
92
+ yield (0, react_1.waitFor)(() => {
93
+ expect(clickHandler).toHaveBeenCalled();
94
+ });
95
+ }));
96
+ });
97
+ describe("should render the appropriate link method for the supplied elementType and method", () => {
98
+ it("should use any supplied method", () => {
99
+ var _a;
100
+ const { container } = (0, react_1.render)((0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: (0, jsx_runtime_1.jsx)(Button_1.Button, Object.assign({ method: "pigeon", to: "/one", className: "one" }, { children: "One" })) }));
101
+ expect((_a = container.querySelector(".one")) === null || _a === void 0 ? void 0 : _a.getAttribute("pigeon")).toBe("/one");
102
+ });
103
+ it("should use href if elementType is anchor", () => {
104
+ const wrapper = (0, react_1.render)((0, jsx_runtime_1.jsx)(Button_1.Button, Object.assign({ elementType: "a", to: "/two", className: "two" }, { children: "Two" })));
105
+ expect(wrapper.getByRole("link", { name: "Two" }).getAttribute("href")).toBe("/two");
106
+ });
107
+ });
108
+ });
package/package.json CHANGED
@@ -1,20 +1,13 @@
1
1
  {
2
2
  "name": "@nice-digital/nds-button",
3
- "version": "3.0.2",
3
+ "version": "4.0.1-alpha.0",
4
4
  "description": "Button component for the NICE Design System",
5
5
  "author": "Ian Routledge <ian.routledge@nice.org.uk>",
6
6
  "homepage": "https://design-system.nice.org.uk/",
7
7
  "license": "MIT",
8
- "main": "lib/Button.js",
9
- "module": "es/Button.js",
8
+ "main": "es/Button.js",
10
9
  "style": "scss/button.scss",
11
- "types": "nds-button.d.ts",
12
- "directories": {
13
- "lib": "lib",
14
- "test": "__tests__"
15
- },
16
10
  "files": [
17
- "lib",
18
11
  "es",
19
12
  "scss",
20
13
  "*.d.ts"
@@ -34,16 +27,20 @@
34
27
  "url": "https://github.com/nice-digital/nice-design-system/issues"
35
28
  },
36
29
  "dependencies": {
37
- "@nice-digital/nds-core": "^3.0.2",
38
- "classnames": "^2.2.6",
39
- "prop-types": "^15.7.2"
30
+ "@nice-digital/nds-core": "^4.0.0-alpha.0",
31
+ "classnames": "^2.2.6"
40
32
  },
41
33
  "peerDependencies": {
42
34
  "react": "^16 || ^17 || ^18",
43
35
  "react-dom": "^16 || ^17 || ^18"
44
36
  },
45
37
  "devDependencies": {
46
- "@babel/cli": "^7.5.0"
47
- },
48
- "gitHead": "88329347c4985509b2347ecc27daec0a33aef607"
38
+ "@testing-library/jest-dom": "^5.16.5",
39
+ "@testing-library/react": "^13.4.0",
40
+ "@testing-library/user-event": "^14.4.3",
41
+ "@types/jest": "^29.2.2",
42
+ "@types/node": "^18.11.9",
43
+ "typescript": "^4.8.4"
44
+ },
45
+ "gitHead": "6034773a4db9117882e4355dcf0358a363c50b75"
49
46
  }
package/es/Button.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"Button.js","names":["React","PropTypes","classnames","Button","props","variant","to","elementType","children","buttonType","className","method","attributes","possibleVariants","Object","keys","variants","some","m","Error","join","ButtonTagType","buttonProps","type","types","button","btn","primary","submit","reset","cta","secondary","inverse","propTypes","string","oneOf","oneOfType","arrayOf","node","isRequired"],"sources":["../src/Button.js"],"sourcesContent":["import * as React from \"react\";\nimport PropTypes from \"prop-types\";\nimport classnames from \"classnames\";\n\nimport \"../scss/button.scss\";\n\nexport const Button = (props) => {\n\tconst {\n\t\tvariant = \"primary\",\n\t\tto,\n\t\telementType,\n\t\tchildren,\n\t\tbuttonType,\n\t\tclassName,\n\t\tmethod,\n\t\t...attributes\n\t} = props;\n\n\tconst possibleVariants = Object.keys(Button.variants);\n\tif (variant && !possibleVariants.some((m) => m === variant)) {\n\t\tthrow new Error(\n\t\t\t`Expected variant to be one of '${possibleVariants.join(\n\t\t\t\t\"', '\"\n\t\t\t)}' but found '${variant}'`\n\t\t);\n\t}\n\n\tconst ButtonTagType = elementType || (to ? \"a\" : \"button\");\n\tconst buttonProps = {};\n\n\tif (to) {\n\t\tbuttonProps[method || (ButtonTagType === \"a\" && \"href\") || \"to\"] = to;\n\t} else if (ButtonTagType === \"button\") {\n\t\tbuttonProps.type = buttonType || Button.types.button;\n\t}\n\n\tbuttonProps.className = classnames({\n\t\tbtn: true,\n\t\t[`btn--${variant}`]: variant !== Button.variants.primary,\n\t\t[className]: !!className\n\t});\n\n\treturn (\n\t\t<ButtonTagType {...buttonProps} {...attributes}>\n\t\t\t{children}\n\t\t</ButtonTagType>\n\t);\n};\n\nButton.types = {\n\tbutton: \"button\",\n\tsubmit: \"submit\",\n\treset: \"reset\"\n};\n\nButton.variants = {\n\tcta: \"cta\",\n\tprimary: \"primary\",\n\tsecondary: \"secondary\",\n\tinverse: \"inverse\"\n};\n\nButton.propTypes = {\n\tto: PropTypes.string,\n\tvariant: PropTypes.oneOf([\n\t\tButton.variants.primary,\n\t\tButton.variants.cta,\n\t\tButton.variants.secondary,\n\t\tButton.variants.inverse\n\t]),\n\tbuttonType: PropTypes.oneOf([\n\t\tButton.types.button,\n\t\tButton.types.submit,\n\t\tButton.types.reset\n\t]),\n\telementType: PropTypes.elementType,\n\tclassName: PropTypes.string,\n\tchildren: PropTypes.oneOfType([\n\t\tPropTypes.arrayOf(PropTypes.node),\n\t\tPropTypes.node\n\t]).isRequired,\n\tmethod: PropTypes.string\n};\n"],"mappings":"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"}
package/lib/Button.js DELETED
@@ -1,92 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
- exports.__esModule = true;
6
- exports.Button = void 0;
7
-
8
- var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
9
-
10
- var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
11
-
12
- var React = _interopRequireWildcard(require("react"));
13
-
14
- var _propTypes = _interopRequireDefault(require("prop-types"));
15
-
16
- var _classnames2 = _interopRequireDefault(require("classnames"));
17
-
18
- require("../scss/button.scss");
19
-
20
- var _excluded = ["variant", "to", "elementType", "children", "buttonType", "className", "method"];
21
-
22
- var _jsxFileName = "C:\\dev\\nice-design-system\\components\\nds-button\\src\\Button.js",
23
- _this = void 0;
24
-
25
- function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
26
-
27
- function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
28
-
29
- var Button = function Button(props) {
30
- var _classnames;
31
-
32
- var _props$variant = props.variant,
33
- variant = _props$variant === void 0 ? "primary" : _props$variant,
34
- to = props.to,
35
- elementType = props.elementType,
36
- children = props.children,
37
- buttonType = props.buttonType,
38
- className = props.className,
39
- method = props.method,
40
- attributes = (0, _objectWithoutPropertiesLoose2["default"])(props, _excluded);
41
- var possibleVariants = Object.keys(Button.variants);
42
-
43
- if (variant && !possibleVariants.some(function (m) {
44
- return m === variant;
45
- })) {
46
- throw new Error("Expected variant to be one of '" + possibleVariants.join("', '") + "' but found '" + variant + "'");
47
- }
48
-
49
- var ButtonTagType = elementType || (to ? "a" : "button");
50
- var buttonProps = {};
51
-
52
- if (to) {
53
- buttonProps[method || ButtonTagType === "a" && "href" || "to"] = to;
54
- } else if (ButtonTagType === "button") {
55
- buttonProps.type = buttonType || Button.types.button;
56
- }
57
-
58
- buttonProps.className = (0, _classnames2["default"])((_classnames = {
59
- btn: true
60
- }, _classnames["btn--" + variant] = variant !== Button.variants.primary, _classnames[className] = !!className, _classnames));
61
- return /*#__PURE__*/React.createElement(ButtonTagType, (0, _extends2["default"])({}, buttonProps, attributes, {
62
- __self: _this,
63
- __source: {
64
- fileName: _jsxFileName,
65
- lineNumber: 44,
66
- columnNumber: 3
67
- }
68
- }), children);
69
- };
70
-
71
- exports.Button = Button;
72
- Button.types = {
73
- button: "button",
74
- submit: "submit",
75
- reset: "reset"
76
- };
77
- Button.variants = {
78
- cta: "cta",
79
- primary: "primary",
80
- secondary: "secondary",
81
- inverse: "inverse"
82
- };
83
- Button.propTypes = {
84
- to: _propTypes["default"].string,
85
- variant: _propTypes["default"].oneOf([Button.variants.primary, Button.variants.cta, Button.variants.secondary, Button.variants.inverse]),
86
- buttonType: _propTypes["default"].oneOf([Button.types.button, Button.types.submit, Button.types.reset]),
87
- elementType: _propTypes["default"].elementType,
88
- className: _propTypes["default"].string,
89
- children: _propTypes["default"].oneOfType([_propTypes["default"].arrayOf(_propTypes["default"].node), _propTypes["default"].node]).isRequired,
90
- method: _propTypes["default"].string
91
- };
92
- //# sourceMappingURL=Button.js.map
package/lib/Button.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"Button.js","names":["Button","props","variant","to","elementType","children","buttonType","className","method","attributes","possibleVariants","Object","keys","variants","some","m","Error","join","ButtonTagType","buttonProps","type","types","button","classnames","btn","primary","submit","reset","cta","secondary","inverse","propTypes","PropTypes","string","oneOf","oneOfType","arrayOf","node","isRequired"],"sources":["../src/Button.js"],"sourcesContent":["import * as React from \"react\";\nimport PropTypes from \"prop-types\";\nimport classnames from \"classnames\";\n\nimport \"../scss/button.scss\";\n\nexport const Button = (props) => {\n\tconst {\n\t\tvariant = \"primary\",\n\t\tto,\n\t\telementType,\n\t\tchildren,\n\t\tbuttonType,\n\t\tclassName,\n\t\tmethod,\n\t\t...attributes\n\t} = props;\n\n\tconst possibleVariants = Object.keys(Button.variants);\n\tif (variant && !possibleVariants.some((m) => m === variant)) {\n\t\tthrow new Error(\n\t\t\t`Expected variant to be one of '${possibleVariants.join(\n\t\t\t\t\"', '\"\n\t\t\t)}' but found '${variant}'`\n\t\t);\n\t}\n\n\tconst ButtonTagType = elementType || (to ? \"a\" : \"button\");\n\tconst buttonProps = {};\n\n\tif (to) {\n\t\tbuttonProps[method || (ButtonTagType === \"a\" && \"href\") || \"to\"] = to;\n\t} else if (ButtonTagType === \"button\") {\n\t\tbuttonProps.type = buttonType || Button.types.button;\n\t}\n\n\tbuttonProps.className = classnames({\n\t\tbtn: true,\n\t\t[`btn--${variant}`]: variant !== Button.variants.primary,\n\t\t[className]: !!className\n\t});\n\n\treturn (\n\t\t<ButtonTagType {...buttonProps} {...attributes}>\n\t\t\t{children}\n\t\t</ButtonTagType>\n\t);\n};\n\nButton.types = {\n\tbutton: \"button\",\n\tsubmit: \"submit\",\n\treset: \"reset\"\n};\n\nButton.variants = {\n\tcta: \"cta\",\n\tprimary: \"primary\",\n\tsecondary: \"secondary\",\n\tinverse: \"inverse\"\n};\n\nButton.propTypes = {\n\tto: PropTypes.string,\n\tvariant: PropTypes.oneOf([\n\t\tButton.variants.primary,\n\t\tButton.variants.cta,\n\t\tButton.variants.secondary,\n\t\tButton.variants.inverse\n\t]),\n\tbuttonType: PropTypes.oneOf([\n\t\tButton.types.button,\n\t\tButton.types.submit,\n\t\tButton.types.reset\n\t]),\n\telementType: PropTypes.elementType,\n\tclassName: PropTypes.string,\n\tchildren: PropTypes.oneOfType([\n\t\tPropTypes.arrayOf(PropTypes.node),\n\t\tPropTypes.node\n\t]).isRequired,\n\tmethod: PropTypes.string\n};\n"],"mappings":"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"}
package/nds-button.d.ts DELETED
@@ -1,34 +0,0 @@
1
- declare module "@nice-digital/nds-button" {
2
- import React = require("react");
3
-
4
- interface ButtonProps
5
- extends React.HTMLProps<HTMLButtonElement | HTMLAnchorElement> {
6
- [prop: string]: unknown;
7
- /** The destination URL if this is an anchor */
8
- to?: string;
9
- variant?: "primary" | "cta" | "secondary" | "inverse";
10
- buttonType?: "button" | "submit" | "reset";
11
- /** A custom element type to be rendered as the tag, useful for custom routing */
12
- elementType?: React.ElementType;
13
- /** Additional classes e.g. margin modifiers like "mt--0" */
14
- className?: string;
15
- children: React.ReactNode;
16
- method?: string;
17
- }
18
-
19
- interface ButtonComponent extends React.FC<ButtonProps> {
20
- types: {
21
- button: "button";
22
- submit: "submit";
23
- reset: "reset";
24
- };
25
- variants: {
26
- cta: "cta";
27
- primary: "primary";
28
- secondary: "secondary";
29
- inverse: "inverse";
30
- };
31
- }
32
-
33
- export const Button: ButtonComponent;
34
- }