@nice-digital/nds-alphabet 2.0.2 → 3.0.0-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.
@@ -0,0 +1,26 @@
1
+ import React from "react";
2
+ import "../scss/alphabet.scss";
3
+ export interface AlphabetProps {
4
+ id?: string;
5
+ children: React.ReactElement<LetterProps>[];
6
+ chunky?: boolean;
7
+ className?: string;
8
+ [key: string]: unknown;
9
+ }
10
+ export interface LetterProps {
11
+ children: React.ReactNode;
12
+ label?: string;
13
+ chunky?: boolean;
14
+ elementType?: React.ElementType;
15
+ to?: string | false;
16
+ [key: string]: unknown;
17
+ }
18
+ export interface LinkProps {
19
+ text: React.ReactNode;
20
+ destination: string;
21
+ elementType?: React.ElementType;
22
+ method?: string;
23
+ ariaLabel: string;
24
+ }
25
+ export declare const Alphabet: React.FC<AlphabetProps>;
26
+ export declare const Letter: React.FC<LetterProps>;
package/es/Alphabet.js CHANGED
@@ -1,101 +1,58 @@
1
- import _extends from "@babel/runtime/helpers/esm/extends";
2
- import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
3
- var _excluded = ["children", "className", "id", "chunky"],
4
- _excluded2 = ["children", "label", "to", "chunky", "elementType"];
5
- import React, { Children, isValidElement, cloneElement } from "react";
6
- import PropTypes from "prop-types";
7
- import "../scss/alphabet.scss";
8
- export var Alphabet = function Alphabet(props) {
9
- var children = props.children,
10
- className = props.className,
11
- id = props.id,
12
- chunky = props.chunky,
13
- attrs = _objectWithoutPropertiesLoose(props, _excluded);
14
-
15
- var chunkyChild = function chunkyChild(child) {
16
- return /*#__PURE__*/isValidElement(child) ? /*#__PURE__*/cloneElement(child, {
17
- chunky: true
18
- }) : child;
19
- };
20
-
21
- return /*#__PURE__*/React.createElement("ol", _extends({
22
- className: ["alphabet " + (chunky ? "alphabet--chunky" : ""), className].join(" "),
23
- id: id || "a-to-z"
24
- }, attrs), chunky ? Children.map(children, function (child) {
25
- return chunkyChild(child);
26
- }) : children);
27
- };
28
- Alphabet.propTypes = {
29
- id: PropTypes.string,
30
- children: PropTypes.node.isRequired,
31
- chunky: PropTypes.bool,
32
- className: PropTypes.string
33
- };
34
- export var Letter = function Letter(props) {
35
- var children = props.children,
36
- label = props.label,
37
- to = props.to,
38
- chunky = props.chunky,
39
- elementType = props.elementType,
40
- attrs = _objectWithoutPropertiesLoose(props, _excluded2);
41
-
42
- var body;
43
-
44
- if (!to) {
45
- // No link
46
- body = /*#__PURE__*/React.createElement("span", {
47
- "aria-label": label
48
- }, children);
49
- } else if (to[0] === "#") {
50
- // Link to an id on the same page
51
- body = /*#__PURE__*/React.createElement("a", {
52
- href: to,
53
- "aria-label": label
54
- }, children);
55
- } else {
56
- // Link to somewhere else!
57
- body = /*#__PURE__*/React.createElement(Link, {
58
- elementType: elementType,
59
- ariaLabel: label,
60
- destination: to,
61
- text: children
62
- });
63
- }
64
-
65
- return /*#__PURE__*/React.createElement("li", _extends({
66
- className: "alphabet__letter " + (chunky ? "alphabet__letter--chunky" : "")
67
- }, attrs), body);
68
- };
69
- Letter.propTypes = {
70
- children: PropTypes.node.isRequired,
71
- chunky: PropTypes.bool,
72
- label: PropTypes.string,
73
- to: PropTypes.oneOfType([PropTypes.string, PropTypes.bool]),
74
- elementType: PropTypes.elementType
75
- };
76
-
77
- var Link = function Link(_ref) {
78
- var _linkProps;
79
-
80
- var text = _ref.text,
81
- destination = _ref.destination,
82
- _ref$elementType = _ref.elementType,
83
- ElementType = _ref$elementType === void 0 ? "a" : _ref$elementType,
84
- method = _ref.method,
85
- ariaLabel = _ref.ariaLabel;
86
- var linkProps = (_linkProps = {
87
- className: "alphabet__link"
88
- }, _linkProps[method || ElementType === "a" && "href" || "to"] = destination, _linkProps);
89
- return /*#__PURE__*/React.createElement(ElementType, _extends({
90
- "aria-label": ariaLabel
91
- }, linkProps), text);
92
- };
93
-
94
- Link.propTypes = {
95
- text: PropTypes.string,
96
- destination: PropTypes.string,
97
- elementType: PropTypes.elementType,
98
- method: PropTypes.string,
99
- ariaLabel: PropTypes.string
100
- };
101
- //# sourceMappingURL=Alphabet.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
+ Object.defineProperty(exports, "__esModule", { value: true });
14
+ exports.Letter = exports.Alphabet = void 0;
15
+ const jsx_runtime_1 = require("react/jsx-runtime");
16
+ const react_1 = require("react");
17
+ require("../scss/alphabet.scss");
18
+ const Alphabet = (props) => {
19
+ const { children, className, id, chunky } = props, attrs = __rest(props, ["children", "className", "id", "chunky"]);
20
+ const chunkyChild = (child) => {
21
+ return (0, react_1.isValidElement)(child)
22
+ ? (0, react_1.cloneElement)(child, { chunky: true })
23
+ : child;
24
+ };
25
+ return ((0, jsx_runtime_1.jsx)("ol", Object.assign({ className: [
26
+ `alphabet ${chunky ? "alphabet--chunky" : ""}`,
27
+ className
28
+ ].join(" "), id: id || "a-to-z" }, attrs, { children: chunky
29
+ ? react_1.Children.map(children, (child) => chunkyChild(child))
30
+ : children })));
31
+ };
32
+ exports.Alphabet = Alphabet;
33
+ const Letter = (props) => {
34
+ const { children, label, to, chunky, elementType } = props, attrs = __rest(props, ["children", "label", "to", "chunky", "elementType"]);
35
+ let body;
36
+ if (!to) {
37
+ // No link
38
+ body = (0, jsx_runtime_1.jsx)("span", Object.assign({ "aria-label": label }, { children: children }));
39
+ }
40
+ else if (to[0] === "#") {
41
+ // Link to an id on the same page
42
+ body = ((0, jsx_runtime_1.jsx)("a", Object.assign({ href: to, "aria-label": label }, { children: children })));
43
+ }
44
+ else {
45
+ // Link to somewhere else!
46
+ const linkLabel = label || "";
47
+ body = ((0, jsx_runtime_1.jsx)(Link, { elementType: elementType, ariaLabel: linkLabel, destination: to, text: children }));
48
+ }
49
+ return ((0, jsx_runtime_1.jsx)("li", Object.assign({ className: `alphabet__letter ${chunky ? "alphabet__letter--chunky" : ""}` }, attrs, { children: body })));
50
+ };
51
+ exports.Letter = Letter;
52
+ const Link = ({ text, destination, elementType: ElementType = "a", method, ariaLabel }) => {
53
+ let linkProps = {
54
+ className: "alphabet__link",
55
+ [method || (ElementType === "a" && "href") || "to"]: destination
56
+ };
57
+ return ((0, jsx_runtime_1.jsx)(ElementType, Object.assign({ "aria-label": ariaLabel }, linkProps, { children: text })));
58
+ };
@@ -1 +1 @@
1
- {"version":3,"file":"Alphabet.js","names":["React","Children","isValidElement","cloneElement","PropTypes","Alphabet","props","children","className","id","chunky","attrs","chunkyChild","child","join","map","propTypes","string","node","isRequired","bool","Letter","label","to","elementType","body","oneOfType","Link","text","destination","ElementType","method","ariaLabel","linkProps"],"sources":["../src/Alphabet.js"],"sourcesContent":["import React, { Children, isValidElement, cloneElement } from \"react\";\nimport PropTypes from \"prop-types\";\nimport \"../scss/alphabet.scss\";\n\nexport const Alphabet = (props) => {\n\tconst { children, className, id, chunky, ...attrs } = props;\n\n\tconst chunkyChild = (child) => {\n\t\treturn isValidElement(child)\n\t\t\t? cloneElement(child, { chunky: true })\n\t\t\t: child;\n\t};\n\n\treturn (\n\t\t<ol\n\t\t\tclassName={[\n\t\t\t\t`alphabet ${chunky ? \"alphabet--chunky\" : \"\"}`,\n\t\t\t\tclassName\n\t\t\t].join(\" \")}\n\t\t\tid={id || \"a-to-z\"}\n\t\t\t{...attrs}\n\t\t>\n\t\t\t{chunky\n\t\t\t\t? Children.map(children, (child) => chunkyChild(child))\n\t\t\t\t: children}\n\t\t</ol>\n\t);\n};\n\nAlphabet.propTypes = {\n\tid: PropTypes.string,\n\tchildren: PropTypes.node.isRequired,\n\tchunky: PropTypes.bool,\n\tclassName: PropTypes.string\n};\n\nexport const Letter = (props) => {\n\tconst { children, label, to, chunky, elementType, ...attrs } = props;\n\n\tlet body;\n\n\tif (!to) {\n\t\t// No link\n\t\tbody = <span aria-label={label}>{children}</span>;\n\t} else if (to[0] === \"#\") {\n\t\t// Link to an id on the same page\n\t\tbody = (\n\t\t\t<a href={to} aria-label={label}>\n\t\t\t\t{children}\n\t\t\t</a>\n\t\t);\n\t} else {\n\t\t// Link to somewhere else!\n\t\tbody = (\n\t\t\t<Link\n\t\t\t\telementType={elementType}\n\t\t\t\tariaLabel={label}\n\t\t\t\tdestination={to}\n\t\t\t\ttext={children}\n\t\t\t/>\n\t\t);\n\t}\n\n\treturn (\n\t\t<li\n\t\t\tclassName={`alphabet__letter ${chunky ? \"alphabet__letter--chunky\" : \"\"}`}\n\t\t\t{...attrs}\n\t\t>\n\t\t\t{body}\n\t\t</li>\n\t);\n};\n\nLetter.propTypes = {\n\tchildren: PropTypes.node.isRequired,\n\tchunky: PropTypes.bool,\n\tlabel: PropTypes.string,\n\tto: PropTypes.oneOfType([PropTypes.string, PropTypes.bool]),\n\telementType: PropTypes.elementType\n};\n\nconst Link = ({\n\ttext,\n\tdestination,\n\telementType: ElementType = \"a\",\n\tmethod,\n\tariaLabel\n}) => {\n\tlet linkProps = {\n\t\tclassName: \"alphabet__link\",\n\t\t[method || (ElementType === \"a\" && \"href\") || \"to\"]: destination\n\t};\n\n\treturn (\n\t\t<ElementType aria-label={ariaLabel} {...linkProps}>\n\t\t\t{text}\n\t\t</ElementType>\n\t);\n};\n\nLink.propTypes = {\n\ttext: PropTypes.string,\n\tdestination: PropTypes.string,\n\telementType: PropTypes.elementType,\n\tmethod: PropTypes.string,\n\tariaLabel: PropTypes.string\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"Alphabet.js","names":["React","Children","isValidElement","cloneElement","PropTypes","Alphabet","props","children","className","id","chunky","attrs","chunkyChild","child","join","map","propTypes","string","node","isRequired","bool","Letter","label","to","elementType","body","oneOfType","Link","text","destination","ElementType","method","ariaLabel","linkProps"],"sources":["../src/Alphabet.js"],"sourcesContent":["import React, { Children, isValidElement, cloneElement } from \"react\";\nimport PropTypes from \"prop-types\";\nimport \"../scss/alphabet.scss\";\n\nexport const Alphabet = (props) => {\n\tconst { children, className, id, chunky, ...attrs } = props;\n\n\tconst chunkyChild = (child) => {\n\t\treturn isValidElement(child)\n\t\t\t? cloneElement(child, { chunky: true })\n\t\t\t: child;\n\t};\n\n\treturn (\n\t\t<ol\n\t\t\tclassName={[\n\t\t\t\t`alphabet ${chunky ? \"alphabet--chunky\" : \"\"}`,\n\t\t\t\tclassName\n\t\t\t].join(\" \")}\n\t\t\tid={id || \"a-to-z\"}\n\t\t\t{...attrs}\n\t\t>\n\t\t\t{chunky\n\t\t\t\t? Children.map(children, (child) => chunkyChild(child))\n\t\t\t\t: children}\n\t\t</ol>\n\t);\n};\n\nAlphabet.propTypes = {\n\tid: PropTypes.string,\n\tchildren: PropTypes.node.isRequired,\n\tchunky: PropTypes.bool,\n\tclassName: PropTypes.string\n};\n\nexport const Letter = (props) => {\n\tconst { children, label, to, chunky, elementType, ...attrs } = props;\n\n\tlet body;\n\n\tif (!to) {\n\t\t// No link\n\t\tbody = <span aria-label={label}>{children}</span>;\n\t} else if (to[0] === \"#\") {\n\t\t// Link to an id on the same page\n\t\tbody = (\n\t\t\t<a href={to} aria-label={label}>\n\t\t\t\t{children}\n\t\t\t</a>\n\t\t);\n\t} else {\n\t\t// Link to somewhere else!\n\t\tbody = (\n\t\t\t<Link\n\t\t\t\telementType={elementType}\n\t\t\t\tariaLabel={label}\n\t\t\t\tdestination={to}\n\t\t\t\ttext={children}\n\t\t\t/>\n\t\t);\n\t}\n\n\treturn (\n\t\t<li\n\t\t\tclassName={`alphabet__letter ${chunky ? \"alphabet__letter--chunky\" : \"\"}`}\n\t\t\t{...attrs}\n\t\t>\n\t\t\t{body}\n\t\t</li>\n\t);\n};\n\nLetter.propTypes = {\n\tchildren: PropTypes.node.isRequired,\n\tchunky: PropTypes.bool,\n\tlabel: PropTypes.string,\n\tto: PropTypes.oneOfType([PropTypes.string, PropTypes.bool]),\n\telementType: PropTypes.elementType\n};\n\nconst Link = ({\n\ttext,\n\tdestination,\n\telementType: ElementType = \"a\",\n\tmethod,\n\tariaLabel\n}) => {\n\tlet linkProps = {\n\t\tclassName: \"alphabet__link\",\n\t\t[method || (ElementType === \"a\" && \"href\") || \"to\"]: destination\n\t};\n\n\treturn (\n\t\t<ElementType aria-label={ariaLabel} {...linkProps}>\n\t\t\t{text}\n\t\t</ElementType>\n\t);\n};\n\nLink.propTypes = {\n\ttext: PropTypes.string,\n\tdestination: PropTypes.string,\n\telementType: PropTypes.elementType,\n\tmethod: PropTypes.string,\n\tariaLabel: PropTypes.string\n};\n"],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const jsx_runtime_1 = require("react/jsx-runtime");
4
+ const react_1 = require("@testing-library/react");
5
+ const Alphabet_1 = require("./Alphabet");
6
+ describe("Alphabet", () => {
7
+ const allLetters = "abcdefghijklmnopqrstuvwxyz".split("");
8
+ const letterElements = allLetters.map((letter) => ((0, jsx_runtime_1.jsx)(Alphabet_1.Letter, Object.assign({ to: `#${letter}`, label: `Letter ${letter}` }, { children: letter.toUpperCase() }), letter)));
9
+ it("should match snapshot", () => {
10
+ const wrapper = (0, react_1.render)((0, jsx_runtime_1.jsx)(Alphabet_1.Alphabet, { children: letterElements }));
11
+ expect(wrapper).toMatchSnapshot();
12
+ });
13
+ it("should add a class of 'alphabet' to the default variant", () => {
14
+ const wrapper = (0, react_1.render)((0, jsx_runtime_1.jsx)(Alphabet_1.Alphabet, { children: letterElements }));
15
+ expect(wrapper.getByRole("list")).toHaveClass("alphabet");
16
+ });
17
+ it("should add a custom class when one is specified", () => {
18
+ const wrapper = (0, react_1.render)((0, jsx_runtime_1.jsx)(Alphabet_1.Alphabet, Object.assign({ className: "test-class" }, { children: letterElements })));
19
+ expect(wrapper.getByRole("list")).toHaveClass("test-class");
20
+ });
21
+ it("should add a class of 'alphabet--chunky' to the chunky variant", () => {
22
+ const wrapper = (0, react_1.render)((0, jsx_runtime_1.jsx)(Alphabet_1.Alphabet, Object.assign({ chunky: true }, { children: letterElements })));
23
+ expect(wrapper.getByRole("list")).toHaveClass("alphabet--chunky");
24
+ });
25
+ it("should render a child component for each letter of the alphabet", () => {
26
+ const wrapper = (0, react_1.render)((0, jsx_runtime_1.jsx)(Alphabet_1.Alphabet, { children: letterElements }));
27
+ expect(wrapper.getByRole("list").children.length).toBe(allLetters.length);
28
+ });
29
+ it("should render chunky child components when the chunky variant is specified on the parent", () => {
30
+ const wrapper = (0, react_1.render)((0, jsx_runtime_1.jsx)(Alphabet_1.Alphabet, Object.assign({ chunky: true }, { children: letterElements })));
31
+ expect(wrapper.getAllByRole("listitem")[0]).toHaveClass("alphabet__letter alphabet__letter--chunky");
32
+ });
33
+ it("should append className prop to rendered class attribute", () => {
34
+ const wrapper = (0, react_1.render)((0, jsx_runtime_1.jsx)(Alphabet_1.Alphabet, Object.assign({ className: "test" }, { children: letterElements })));
35
+ expect(wrapper.getByRole("list")).toHaveClass("test");
36
+ });
37
+ it("should render additional props as attributes", () => {
38
+ const wrapper = (0, react_1.render)((0, jsx_runtime_1.jsx)(Alphabet_1.Alphabet, Object.assign({ "aria-label": "hello" }, { children: letterElements })));
39
+ expect(wrapper.getByRole("list").getAttribute("aria-label")).toBe("hello");
40
+ });
41
+ });
@@ -1 +1 @@
1
- {"version":3,"file":"nds-alphabet.test.js","names":["React","shallow","Alphabet","Letter","describe","allLetters","split","letterElements","map","letter","toUpperCase","it","wrapper","expect","toHaveLength","hasClass","toEqual","children","length","childAt","render","prop"],"sources":["../../src/__tests__/nds-alphabet.test.js"],"sourcesContent":["\"use strict\";\n\nimport React from \"react\";\nimport { shallow } from \"enzyme\";\nimport { Alphabet, Letter } from \"../Alphabet\";\n\ndescribe(\"Alphabet\", () => {\n\tconst allLetters = \"abcdefghijklmnopqrstuvwxyz\".split(\"\");\n\tconst letterElements = allLetters.map((letter) => (\n\t\t<Letter key={letter} to={`#${letter}`} label={`Letter ${letter}`}>\n\t\t\t{letter.toUpperCase()}\n\t\t</Letter>\n\t));\n\n\tit(\"should render without crashing\", () => {\n\t\tconst wrapper = shallow(<Alphabet>{letterElements}</Alphabet>);\n\t\texpect(wrapper).toHaveLength(1);\n\t});\n\n\tit(\"should add a class of 'alphabet' to the default variant\", () => {\n\t\tconst wrapper = shallow(<Alphabet>{letterElements}</Alphabet>);\n\t\texpect(wrapper.hasClass(\"alphabet\")).toEqual(true);\n\t});\n\n\tit(\"should add a custom class when one is specified\", () => {\n\t\tconst wrapper = shallow(\n\t\t\t<Alphabet className=\"test-class\">{letterElements}</Alphabet>\n\t\t);\n\t\texpect(wrapper.hasClass(\"test-class\")).toEqual(true);\n\t});\n\n\tit(\"should add a class of 'alphabet--chunky' to the chunky variant\", () => {\n\t\tconst wrapper = shallow(<Alphabet chunky>{letterElements}</Alphabet>);\n\t\texpect(wrapper.hasClass(\"alphabet--chunky\")).toEqual(true);\n\t});\n\n\tit(\"should render a child component for each letter of the alphabet\", () => {\n\t\tconst wrapper = shallow(<Alphabet>{letterElements}</Alphabet>);\n\t\texpect(wrapper.children()).toHaveLength(allLetters.length);\n\t});\n\n\tit(\"should render chunky child components when the chunky variant is specified on the parent\", () => {\n\t\tconst wrapper = shallow(<Alphabet chunky>{letterElements}</Alphabet>);\n\t\texpect(\n\t\t\twrapper\n\t\t\t\t.childAt(0)\n\t\t\t\t.render() // Used here due to this issue: https://github.com/enzymejs/enzyme/issues/1177#issuecomment-332717606\n\t\t\t\t.hasClass(\"alphabet__letter alphabet__letter--chunky\")\n\t\t).toEqual(true);\n\t});\n\n\tit(\"should append className prop to rendered class attribute\", () => {\n\t\tconst wrapper = shallow(\n\t\t\t<Alphabet className=\"test\">{letterElements}</Alphabet>\n\t\t);\n\t\texpect(wrapper.hasClass(\"test\")).toEqual(true);\n\t});\n\n\tit(\"should render additional props as attributes\", () => {\n\t\tconst wrapper = shallow(\n\t\t\t<Alphabet aria-label=\"hello\">{letterElements}</Alphabet>\n\t\t);\n\t\texpect(wrapper.prop(\"aria-label\")).toEqual(\"hello\");\n\t});\n});\n"],"mappings":"AAAA;;AAEA,OAAOA,KAAP,MAAkB,OAAlB;AACA,SAASC,OAAT,QAAwB,QAAxB;AACA,SAASC,QAAT,EAAmBC,MAAnB,QAAiC,aAAjC;AAEAC,QAAQ,CAAC,UAAD,EAAa,YAAM;EAC1B,IAAMC,UAAU,GAAG,6BAA6BC,KAA7B,CAAmC,EAAnC,CAAnB;EACA,IAAMC,cAAc,GAAGF,UAAU,CAACG,GAAX,CAAe,UAACC,MAAD;IAAA,oBACrC,oBAAC,MAAD;MAAQ,GAAG,EAAEA,MAAb;MAAqB,EAAE,QAAMA,MAA7B;MAAuC,KAAK,cAAYA;IAAxD,GACEA,MAAM,CAACC,WAAP,EADF,CADqC;EAAA,CAAf,CAAvB;EAMAC,EAAE,CAAC,gCAAD,EAAmC,YAAM;IAC1C,IAAMC,OAAO,GAAGX,OAAO,eAAC,oBAAC,QAAD,QAAWM,cAAX,CAAD,CAAvB;IACAM,MAAM,CAACD,OAAD,CAAN,CAAgBE,YAAhB,CAA6B,CAA7B;EACA,CAHC,CAAF;EAKAH,EAAE,CAAC,yDAAD,EAA4D,YAAM;IACnE,IAAMC,OAAO,GAAGX,OAAO,eAAC,oBAAC,QAAD,QAAWM,cAAX,CAAD,CAAvB;IACAM,MAAM,CAACD,OAAO,CAACG,QAAR,CAAiB,UAAjB,CAAD,CAAN,CAAqCC,OAArC,CAA6C,IAA7C;EACA,CAHC,CAAF;EAKAL,EAAE,CAAC,iDAAD,EAAoD,YAAM;IAC3D,IAAMC,OAAO,GAAGX,OAAO,eACtB,oBAAC,QAAD;MAAU,SAAS,EAAC;IAApB,GAAkCM,cAAlC,CADsB,CAAvB;IAGAM,MAAM,CAACD,OAAO,CAACG,QAAR,CAAiB,YAAjB,CAAD,CAAN,CAAuCC,OAAvC,CAA+C,IAA/C;EACA,CALC,CAAF;EAOAL,EAAE,CAAC,gEAAD,EAAmE,YAAM;IAC1E,IAAMC,OAAO,GAAGX,OAAO,eAAC,oBAAC,QAAD;MAAU,MAAM;IAAhB,GAAkBM,cAAlB,CAAD,CAAvB;IACAM,MAAM,CAACD,OAAO,CAACG,QAAR,CAAiB,kBAAjB,CAAD,CAAN,CAA6CC,OAA7C,CAAqD,IAArD;EACA,CAHC,CAAF;EAKAL,EAAE,CAAC,iEAAD,EAAoE,YAAM;IAC3E,IAAMC,OAAO,GAAGX,OAAO,eAAC,oBAAC,QAAD,QAAWM,cAAX,CAAD,CAAvB;IACAM,MAAM,CAACD,OAAO,CAACK,QAAR,EAAD,CAAN,CAA2BH,YAA3B,CAAwCT,UAAU,CAACa,MAAnD;EACA,CAHC,CAAF;EAKAP,EAAE,CAAC,0FAAD,EAA6F,YAAM;IACpG,IAAMC,OAAO,GAAGX,OAAO,eAAC,oBAAC,QAAD;MAAU,MAAM;IAAhB,GAAkBM,cAAlB,CAAD,CAAvB;IACAM,MAAM,CACLD,OAAO,CACLO,OADF,CACU,CADV,EAEEC,MAFF,GAEW;IAFX,CAGEL,QAHF,CAGW,2CAHX,CADK,CAAN,CAKEC,OALF,CAKU,IALV;EAMA,CARC,CAAF;EAUAL,EAAE,CAAC,0DAAD,EAA6D,YAAM;IACpE,IAAMC,OAAO,GAAGX,OAAO,eACtB,oBAAC,QAAD;MAAU,SAAS,EAAC;IAApB,GAA4BM,cAA5B,CADsB,CAAvB;IAGAM,MAAM,CAACD,OAAO,CAACG,QAAR,CAAiB,MAAjB,CAAD,CAAN,CAAiCC,OAAjC,CAAyC,IAAzC;EACA,CALC,CAAF;EAOAL,EAAE,CAAC,8CAAD,EAAiD,YAAM;IACxD,IAAMC,OAAO,GAAGX,OAAO,eACtB,oBAAC,QAAD;MAAU,cAAW;IAArB,GAA8BM,cAA9B,CADsB,CAAvB;IAGAM,MAAM,CAACD,OAAO,CAACS,IAAR,CAAa,YAAb,CAAD,CAAN,CAAmCL,OAAnC,CAA2C,OAA3C;EACA,CALC,CAAF;AAMA,CA1DO,CAAR"}
1
+ {"version":3,"file":"nds-alphabet.test.js","names":["React","shallow","Alphabet","Letter","describe","allLetters","split","letterElements","map","letter","toUpperCase","it","wrapper","expect","toHaveLength","hasClass","toEqual","children","length","childAt","render","prop"],"sources":["../../src/__tests__/nds-alphabet.test.js"],"sourcesContent":["\"use strict\";\n\nimport React from \"react\";\nimport { shallow } from \"enzyme\";\nimport { Alphabet, Letter } from \"../Alphabet\";\n\ndescribe(\"Alphabet\", () => {\n\tconst allLetters = \"abcdefghijklmnopqrstuvwxyz\".split(\"\");\n\tconst letterElements = allLetters.map((letter) => (\n\t\t<Letter key={letter} to={`#${letter}`} label={`Letter ${letter}`}>\n\t\t\t{letter.toUpperCase()}\n\t\t</Letter>\n\t));\n\n\tit(\"should render without crashing\", () => {\n\t\tconst wrapper = shallow(<Alphabet>{letterElements}</Alphabet>);\n\t\texpect(wrapper).toHaveLength(1);\n\t});\n\n\tit(\"should add a class of 'alphabet' to the default variant\", () => {\n\t\tconst wrapper = shallow(<Alphabet>{letterElements}</Alphabet>);\n\t\texpect(wrapper.hasClass(\"alphabet\")).toEqual(true);\n\t});\n\n\tit(\"should add a custom class when one is specified\", () => {\n\t\tconst wrapper = shallow(\n\t\t\t<Alphabet className=\"test-class\">{letterElements}</Alphabet>\n\t\t);\n\t\texpect(wrapper.hasClass(\"test-class\")).toEqual(true);\n\t});\n\n\tit(\"should add a class of 'alphabet--chunky' to the chunky variant\", () => {\n\t\tconst wrapper = shallow(<Alphabet chunky>{letterElements}</Alphabet>);\n\t\texpect(wrapper.hasClass(\"alphabet--chunky\")).toEqual(true);\n\t});\n\n\tit(\"should render a child component for each letter of the alphabet\", () => {\n\t\tconst wrapper = shallow(<Alphabet>{letterElements}</Alphabet>);\n\t\texpect(wrapper.children()).toHaveLength(allLetters.length);\n\t});\n\n\tit(\"should render chunky child components when the chunky variant is specified on the parent\", () => {\n\t\tconst wrapper = shallow(<Alphabet chunky>{letterElements}</Alphabet>);\n\t\texpect(\n\t\t\twrapper\n\t\t\t\t.childAt(0)\n\t\t\t\t.render() // Used here due to this issue: https://github.com/enzymejs/enzyme/issues/1177#issuecomment-332717606\n\t\t\t\t.hasClass(\"alphabet__letter alphabet__letter--chunky\")\n\t\t).toEqual(true);\n\t});\n\n\tit(\"should append className prop to rendered class attribute\", () => {\n\t\tconst wrapper = shallow(\n\t\t\t<Alphabet className=\"test\">{letterElements}</Alphabet>\n\t\t);\n\t\texpect(wrapper.hasClass(\"test\")).toEqual(true);\n\t});\n\n\tit(\"should render additional props as attributes\", () => {\n\t\tconst wrapper = shallow(\n\t\t\t<Alphabet aria-label=\"hello\">{letterElements}</Alphabet>\n\t\t);\n\t\texpect(wrapper.prop(\"aria-label\")).toEqual(\"hello\");\n\t});\n});\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,41 +1,45 @@
1
1
  {
2
- "name": "@nice-digital/nds-alphabet",
3
- "version": "2.0.2",
4
- "description": "Alphabet component for the NICE Design System",
5
- "main": "lib/Alphabet.js",
6
- "module": "es/Alphabet.js",
7
- "style": "scss/alphabet.js",
8
- "types": "nds-alphabet.d.ts",
9
- "files": [
10
- "lib",
11
- "es",
12
- "scss",
13
- "*.d.ts"
14
- ],
15
- "publishConfig": {
16
- "registry": "https://registry.npmjs.org/",
17
- "access": "public"
18
- },
19
- "repository": {
20
- "type": "git",
21
- "url": "git+https://github.com/nice-digital/nice-design-system.git"
22
- },
23
- "scripts": {
24
- "test": "echo \"Error: run tests from root\" && exit 1"
25
- },
26
- "bugs": {
27
- "url": "https://github.com/nice-digital/nice-design-system/issues"
28
- },
29
- "keywords": [
30
- "alphabet",
31
- "a to z"
32
- ],
33
- "author": "Chris Barker <chris.barker@nice.org.uk>",
34
- "homepage": "https://design-system.nice.org.uk/",
35
- "license": "MIT",
36
- "dependencies": {
37
- "@nice-digital/nds-core": "^3.0.2",
38
- "prop-types": "^15.8.1"
39
- },
40
- "gitHead": "88329347c4985509b2347ecc27daec0a33aef607"
2
+ "name": "@nice-digital/nds-alphabet",
3
+ "version": "3.0.0-alpha.0",
4
+ "description": "Alphabet component for the NICE Design System",
5
+ "main": "es/Alphabet.js",
6
+ "style": "scss/alphabet.js",
7
+ "files": [
8
+ "es",
9
+ "scss",
10
+ "*.d.ts"
11
+ ],
12
+ "publishConfig": {
13
+ "registry": "https://registry.npmjs.org/",
14
+ "access": "public"
15
+ },
16
+ "repository": {
17
+ "type": "git",
18
+ "url": "git+https://github.com/nice-digital/nice-design-system.git"
19
+ },
20
+ "scripts": {
21
+ "test": "echo \"Error: run tests from root\" && exit 1"
22
+ },
23
+ "bugs": {
24
+ "url": "https://github.com/nice-digital/nice-design-system/issues"
25
+ },
26
+ "keywords": [
27
+ "alphabet",
28
+ "a to z"
29
+ ],
30
+ "author": "Chris Barker <chris.barker@nice.org.uk>",
31
+ "homepage": "https://design-system.nice.org.uk/",
32
+ "license": "MIT",
33
+ "dependencies": {
34
+ "@nice-digital/nds-core": "^4.0.0-alpha.0"
35
+ },
36
+ "devDependencies": {
37
+ "@testing-library/jest-dom": "^5.16.5",
38
+ "@testing-library/react": "^13.4.0",
39
+ "@testing-library/user-event": "^14.4.3",
40
+ "@types/jest": "^29.2.2",
41
+ "@types/node": "^18.11.9",
42
+ "typescript": "^4.8.4"
43
+ },
44
+ "gitHead": "e225e0b15723013fb3df7309d197590a09cc2ea7"
41
45
  }
package/lib/Alphabet.js DELETED
@@ -1,164 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
- exports.__esModule = true;
6
- exports.Letter = exports.Alphabet = 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
- require("../scss/alphabet.scss");
17
-
18
- var _excluded = ["children", "className", "id", "chunky"],
19
- _excluded2 = ["children", "label", "to", "chunky", "elementType"];
20
-
21
- var _jsxFileName = "C:\\dev\\nice-design-system\\components\\nds-alphabet\\src\\Alphabet.js",
22
- _this = void 0;
23
-
24
- 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); }
25
-
26
- 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; }
27
-
28
- var Alphabet = function Alphabet(props) {
29
- var children = props.children,
30
- className = props.className,
31
- id = props.id,
32
- chunky = props.chunky,
33
- attrs = (0, _objectWithoutPropertiesLoose2["default"])(props, _excluded);
34
-
35
- var chunkyChild = function chunkyChild(child) {
36
- return /*#__PURE__*/(0, _react.isValidElement)(child) ? /*#__PURE__*/(0, _react.cloneElement)(child, {
37
- chunky: true
38
- }) : child;
39
- };
40
-
41
- return /*#__PURE__*/_react["default"].createElement("ol", (0, _extends2["default"])({
42
- className: ["alphabet " + (chunky ? "alphabet--chunky" : ""), className].join(" "),
43
- id: id || "a-to-z"
44
- }, attrs, {
45
- __self: _this,
46
- __source: {
47
- fileName: _jsxFileName,
48
- lineNumber: 15,
49
- columnNumber: 3
50
- }
51
- }), chunky ? _react.Children.map(children, function (child) {
52
- return chunkyChild(child);
53
- }) : children);
54
- };
55
-
56
- exports.Alphabet = Alphabet;
57
- Alphabet.propTypes = {
58
- id: _propTypes["default"].string,
59
- children: _propTypes["default"].node.isRequired,
60
- chunky: _propTypes["default"].bool,
61
- className: _propTypes["default"].string
62
- };
63
-
64
- var Letter = function Letter(props) {
65
- var children = props.children,
66
- label = props.label,
67
- to = props.to,
68
- chunky = props.chunky,
69
- elementType = props.elementType,
70
- attrs = (0, _objectWithoutPropertiesLoose2["default"])(props, _excluded2);
71
- var body;
72
-
73
- if (!to) {
74
- // No link
75
- body = /*#__PURE__*/_react["default"].createElement("span", {
76
- "aria-label": label,
77
- __self: _this,
78
- __source: {
79
- fileName: _jsxFileName,
80
- lineNumber: 44,
81
- columnNumber: 10
82
- }
83
- }, children);
84
- } else if (to[0] === "#") {
85
- // Link to an id on the same page
86
- body = /*#__PURE__*/_react["default"].createElement("a", {
87
- href: to,
88
- "aria-label": label,
89
- __self: _this,
90
- __source: {
91
- fileName: _jsxFileName,
92
- lineNumber: 48,
93
- columnNumber: 4
94
- }
95
- }, children);
96
- } else {
97
- // Link to somewhere else!
98
- body = /*#__PURE__*/_react["default"].createElement(Link, {
99
- elementType: elementType,
100
- ariaLabel: label,
101
- destination: to,
102
- text: children,
103
- __self: _this,
104
- __source: {
105
- fileName: _jsxFileName,
106
- lineNumber: 55,
107
- columnNumber: 4
108
- }
109
- });
110
- }
111
-
112
- return /*#__PURE__*/_react["default"].createElement("li", (0, _extends2["default"])({
113
- className: "alphabet__letter " + (chunky ? "alphabet__letter--chunky" : "")
114
- }, attrs, {
115
- __self: _this,
116
- __source: {
117
- fileName: _jsxFileName,
118
- lineNumber: 65,
119
- columnNumber: 3
120
- }
121
- }), body);
122
- };
123
-
124
- exports.Letter = Letter;
125
- Letter.propTypes = {
126
- children: _propTypes["default"].node.isRequired,
127
- chunky: _propTypes["default"].bool,
128
- label: _propTypes["default"].string,
129
- to: _propTypes["default"].oneOfType([_propTypes["default"].string, _propTypes["default"].bool]),
130
- elementType: _propTypes["default"].elementType
131
- };
132
-
133
- var Link = function Link(_ref) {
134
- var _linkProps;
135
-
136
- var text = _ref.text,
137
- destination = _ref.destination,
138
- _ref$elementType = _ref.elementType,
139
- ElementType = _ref$elementType === void 0 ? "a" : _ref$elementType,
140
- method = _ref.method,
141
- ariaLabel = _ref.ariaLabel;
142
- var linkProps = (_linkProps = {
143
- className: "alphabet__link"
144
- }, _linkProps[method || ElementType === "a" && "href" || "to"] = destination, _linkProps);
145
- return /*#__PURE__*/_react["default"].createElement(ElementType, (0, _extends2["default"])({
146
- "aria-label": ariaLabel
147
- }, linkProps, {
148
- __self: _this,
149
- __source: {
150
- fileName: _jsxFileName,
151
- lineNumber: 95,
152
- columnNumber: 3
153
- }
154
- }), text);
155
- };
156
-
157
- Link.propTypes = {
158
- text: _propTypes["default"].string,
159
- destination: _propTypes["default"].string,
160
- elementType: _propTypes["default"].elementType,
161
- method: _propTypes["default"].string,
162
- ariaLabel: _propTypes["default"].string
163
- };
164
- //# sourceMappingURL=Alphabet.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Alphabet.js","names":["Alphabet","props","children","className","id","chunky","attrs","chunkyChild","child","isValidElement","cloneElement","join","Children","map","propTypes","PropTypes","string","node","isRequired","bool","Letter","label","to","elementType","body","oneOfType","Link","text","destination","ElementType","method","ariaLabel","linkProps"],"sources":["../src/Alphabet.js"],"sourcesContent":["import React, { Children, isValidElement, cloneElement } from \"react\";\nimport PropTypes from \"prop-types\";\nimport \"../scss/alphabet.scss\";\n\nexport const Alphabet = (props) => {\n\tconst { children, className, id, chunky, ...attrs } = props;\n\n\tconst chunkyChild = (child) => {\n\t\treturn isValidElement(child)\n\t\t\t? cloneElement(child, { chunky: true })\n\t\t\t: child;\n\t};\n\n\treturn (\n\t\t<ol\n\t\t\tclassName={[\n\t\t\t\t`alphabet ${chunky ? \"alphabet--chunky\" : \"\"}`,\n\t\t\t\tclassName\n\t\t\t].join(\" \")}\n\t\t\tid={id || \"a-to-z\"}\n\t\t\t{...attrs}\n\t\t>\n\t\t\t{chunky\n\t\t\t\t? Children.map(children, (child) => chunkyChild(child))\n\t\t\t\t: children}\n\t\t</ol>\n\t);\n};\n\nAlphabet.propTypes = {\n\tid: PropTypes.string,\n\tchildren: PropTypes.node.isRequired,\n\tchunky: PropTypes.bool,\n\tclassName: PropTypes.string\n};\n\nexport const Letter = (props) => {\n\tconst { children, label, to, chunky, elementType, ...attrs } = props;\n\n\tlet body;\n\n\tif (!to) {\n\t\t// No link\n\t\tbody = <span aria-label={label}>{children}</span>;\n\t} else if (to[0] === \"#\") {\n\t\t// Link to an id on the same page\n\t\tbody = (\n\t\t\t<a href={to} aria-label={label}>\n\t\t\t\t{children}\n\t\t\t</a>\n\t\t);\n\t} else {\n\t\t// Link to somewhere else!\n\t\tbody = (\n\t\t\t<Link\n\t\t\t\telementType={elementType}\n\t\t\t\tariaLabel={label}\n\t\t\t\tdestination={to}\n\t\t\t\ttext={children}\n\t\t\t/>\n\t\t);\n\t}\n\n\treturn (\n\t\t<li\n\t\t\tclassName={`alphabet__letter ${chunky ? \"alphabet__letter--chunky\" : \"\"}`}\n\t\t\t{...attrs}\n\t\t>\n\t\t\t{body}\n\t\t</li>\n\t);\n};\n\nLetter.propTypes = {\n\tchildren: PropTypes.node.isRequired,\n\tchunky: PropTypes.bool,\n\tlabel: PropTypes.string,\n\tto: PropTypes.oneOfType([PropTypes.string, PropTypes.bool]),\n\telementType: PropTypes.elementType\n};\n\nconst Link = ({\n\ttext,\n\tdestination,\n\telementType: ElementType = \"a\",\n\tmethod,\n\tariaLabel\n}) => {\n\tlet linkProps = {\n\t\tclassName: \"alphabet__link\",\n\t\t[method || (ElementType === \"a\" && \"href\") || \"to\"]: destination\n\t};\n\n\treturn (\n\t\t<ElementType aria-label={ariaLabel} {...linkProps}>\n\t\t\t{text}\n\t\t</ElementType>\n\t);\n};\n\nLink.propTypes = {\n\ttext: PropTypes.string,\n\tdestination: PropTypes.string,\n\telementType: PropTypes.elementType,\n\tmethod: PropTypes.string,\n\tariaLabel: PropTypes.string\n};\n"],"mappings":"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"}
@@ -1,124 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
- var _react = _interopRequireDefault(require("react"));
6
-
7
- var _enzyme = require("enzyme");
8
-
9
- var _Alphabet = require("../Alphabet");
10
-
11
- var _jsxFileName = "C:\\dev\\nice-design-system\\components\\nds-alphabet\\src\\__tests__\\nds-alphabet.test.js",
12
- _this = void 0;
13
-
14
- describe("Alphabet", function () {
15
- var allLetters = "abcdefghijklmnopqrstuvwxyz".split("");
16
- var letterElements = allLetters.map(function (letter) {
17
- return /*#__PURE__*/_react["default"].createElement(_Alphabet.Letter, {
18
- key: letter,
19
- to: "#" + letter,
20
- label: "Letter " + letter,
21
- __self: _this,
22
- __source: {
23
- fileName: _jsxFileName,
24
- lineNumber: 10,
25
- columnNumber: 3
26
- }
27
- }, letter.toUpperCase());
28
- });
29
- it("should render without crashing", function () {
30
- var wrapper = (0, _enzyme.shallow)( /*#__PURE__*/_react["default"].createElement(_Alphabet.Alphabet, {
31
- __self: _this,
32
- __source: {
33
- fileName: _jsxFileName,
34
- lineNumber: 16,
35
- columnNumber: 27
36
- }
37
- }, letterElements));
38
- expect(wrapper).toHaveLength(1);
39
- });
40
- it("should add a class of 'alphabet' to the default variant", function () {
41
- var wrapper = (0, _enzyme.shallow)( /*#__PURE__*/_react["default"].createElement(_Alphabet.Alphabet, {
42
- __self: _this,
43
- __source: {
44
- fileName: _jsxFileName,
45
- lineNumber: 21,
46
- columnNumber: 27
47
- }
48
- }, letterElements));
49
- expect(wrapper.hasClass("alphabet")).toEqual(true);
50
- });
51
- it("should add a custom class when one is specified", function () {
52
- var wrapper = (0, _enzyme.shallow)( /*#__PURE__*/_react["default"].createElement(_Alphabet.Alphabet, {
53
- className: "test-class",
54
- __self: _this,
55
- __source: {
56
- fileName: _jsxFileName,
57
- lineNumber: 27,
58
- columnNumber: 4
59
- }
60
- }, letterElements));
61
- expect(wrapper.hasClass("test-class")).toEqual(true);
62
- });
63
- it("should add a class of 'alphabet--chunky' to the chunky variant", function () {
64
- var wrapper = (0, _enzyme.shallow)( /*#__PURE__*/_react["default"].createElement(_Alphabet.Alphabet, {
65
- chunky: true,
66
- __self: _this,
67
- __source: {
68
- fileName: _jsxFileName,
69
- lineNumber: 33,
70
- columnNumber: 27
71
- }
72
- }, letterElements));
73
- expect(wrapper.hasClass("alphabet--chunky")).toEqual(true);
74
- });
75
- it("should render a child component for each letter of the alphabet", function () {
76
- var wrapper = (0, _enzyme.shallow)( /*#__PURE__*/_react["default"].createElement(_Alphabet.Alphabet, {
77
- __self: _this,
78
- __source: {
79
- fileName: _jsxFileName,
80
- lineNumber: 38,
81
- columnNumber: 27
82
- }
83
- }, letterElements));
84
- expect(wrapper.children()).toHaveLength(allLetters.length);
85
- });
86
- it("should render chunky child components when the chunky variant is specified on the parent", function () {
87
- var wrapper = (0, _enzyme.shallow)( /*#__PURE__*/_react["default"].createElement(_Alphabet.Alphabet, {
88
- chunky: true,
89
- __self: _this,
90
- __source: {
91
- fileName: _jsxFileName,
92
- lineNumber: 43,
93
- columnNumber: 27
94
- }
95
- }, letterElements));
96
- expect(wrapper.childAt(0).render() // Used here due to this issue: https://github.com/enzymejs/enzyme/issues/1177#issuecomment-332717606
97
- .hasClass("alphabet__letter alphabet__letter--chunky")).toEqual(true);
98
- });
99
- it("should append className prop to rendered class attribute", function () {
100
- var wrapper = (0, _enzyme.shallow)( /*#__PURE__*/_react["default"].createElement(_Alphabet.Alphabet, {
101
- className: "test",
102
- __self: _this,
103
- __source: {
104
- fileName: _jsxFileName,
105
- lineNumber: 54,
106
- columnNumber: 4
107
- }
108
- }, letterElements));
109
- expect(wrapper.hasClass("test")).toEqual(true);
110
- });
111
- it("should render additional props as attributes", function () {
112
- var wrapper = (0, _enzyme.shallow)( /*#__PURE__*/_react["default"].createElement(_Alphabet.Alphabet, {
113
- "aria-label": "hello",
114
- __self: _this,
115
- __source: {
116
- fileName: _jsxFileName,
117
- lineNumber: 61,
118
- columnNumber: 4
119
- }
120
- }, letterElements));
121
- expect(wrapper.prop("aria-label")).toEqual("hello");
122
- });
123
- });
124
- //# sourceMappingURL=nds-alphabet.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"nds-alphabet.test.js","names":["describe","allLetters","split","letterElements","map","letter","toUpperCase","it","wrapper","shallow","expect","toHaveLength","hasClass","toEqual","children","length","childAt","render","prop"],"sources":["../../src/__tests__/nds-alphabet.test.js"],"sourcesContent":["\"use strict\";\n\nimport React from \"react\";\nimport { shallow } from \"enzyme\";\nimport { Alphabet, Letter } from \"../Alphabet\";\n\ndescribe(\"Alphabet\", () => {\n\tconst allLetters = \"abcdefghijklmnopqrstuvwxyz\".split(\"\");\n\tconst letterElements = allLetters.map((letter) => (\n\t\t<Letter key={letter} to={`#${letter}`} label={`Letter ${letter}`}>\n\t\t\t{letter.toUpperCase()}\n\t\t</Letter>\n\t));\n\n\tit(\"should render without crashing\", () => {\n\t\tconst wrapper = shallow(<Alphabet>{letterElements}</Alphabet>);\n\t\texpect(wrapper).toHaveLength(1);\n\t});\n\n\tit(\"should add a class of 'alphabet' to the default variant\", () => {\n\t\tconst wrapper = shallow(<Alphabet>{letterElements}</Alphabet>);\n\t\texpect(wrapper.hasClass(\"alphabet\")).toEqual(true);\n\t});\n\n\tit(\"should add a custom class when one is specified\", () => {\n\t\tconst wrapper = shallow(\n\t\t\t<Alphabet className=\"test-class\">{letterElements}</Alphabet>\n\t\t);\n\t\texpect(wrapper.hasClass(\"test-class\")).toEqual(true);\n\t});\n\n\tit(\"should add a class of 'alphabet--chunky' to the chunky variant\", () => {\n\t\tconst wrapper = shallow(<Alphabet chunky>{letterElements}</Alphabet>);\n\t\texpect(wrapper.hasClass(\"alphabet--chunky\")).toEqual(true);\n\t});\n\n\tit(\"should render a child component for each letter of the alphabet\", () => {\n\t\tconst wrapper = shallow(<Alphabet>{letterElements}</Alphabet>);\n\t\texpect(wrapper.children()).toHaveLength(allLetters.length);\n\t});\n\n\tit(\"should render chunky child components when the chunky variant is specified on the parent\", () => {\n\t\tconst wrapper = shallow(<Alphabet chunky>{letterElements}</Alphabet>);\n\t\texpect(\n\t\t\twrapper\n\t\t\t\t.childAt(0)\n\t\t\t\t.render() // Used here due to this issue: https://github.com/enzymejs/enzyme/issues/1177#issuecomment-332717606\n\t\t\t\t.hasClass(\"alphabet__letter alphabet__letter--chunky\")\n\t\t).toEqual(true);\n\t});\n\n\tit(\"should append className prop to rendered class attribute\", () => {\n\t\tconst wrapper = shallow(\n\t\t\t<Alphabet className=\"test\">{letterElements}</Alphabet>\n\t\t);\n\t\texpect(wrapper.hasClass(\"test\")).toEqual(true);\n\t});\n\n\tit(\"should render additional props as attributes\", () => {\n\t\tconst wrapper = shallow(\n\t\t\t<Alphabet aria-label=\"hello\">{letterElements}</Alphabet>\n\t\t);\n\t\texpect(wrapper.prop(\"aria-label\")).toEqual(\"hello\");\n\t});\n});\n"],"mappings":"AAAA;;;;AAEA;;AACA;;AACA;;;;;AAEAA,QAAQ,CAAC,UAAD,EAAa,YAAM;EAC1B,IAAMC,UAAU,GAAG,6BAA6BC,KAA7B,CAAmC,EAAnC,CAAnB;EACA,IAAMC,cAAc,GAAGF,UAAU,CAACG,GAAX,CAAe,UAACC,MAAD;IAAA,oBACrC,gCAAC,gBAAD;MAAQ,GAAG,EAAEA,MAAb;MAAqB,EAAE,QAAMA,MAA7B;MAAuC,KAAK,cAAYA,MAAxD;MAAA;MAAA;QAAA;QAAA;QAAA;MAAA;IAAA,GACEA,MAAM,CAACC,WAAP,EADF,CADqC;EAAA,CAAf,CAAvB;EAMAC,EAAE,CAAC,gCAAD,EAAmC,YAAM;IAC1C,IAAMC,OAAO,GAAG,IAAAC,eAAA,gBAAQ,gCAAC,kBAAD;MAAA;MAAA;QAAA;QAAA;QAAA;MAAA;IAAA,GAAWN,cAAX,CAAR,CAAhB;IACAO,MAAM,CAACF,OAAD,CAAN,CAAgBG,YAAhB,CAA6B,CAA7B;EACA,CAHC,CAAF;EAKAJ,EAAE,CAAC,yDAAD,EAA4D,YAAM;IACnE,IAAMC,OAAO,GAAG,IAAAC,eAAA,gBAAQ,gCAAC,kBAAD;MAAA;MAAA;QAAA;QAAA;QAAA;MAAA;IAAA,GAAWN,cAAX,CAAR,CAAhB;IACAO,MAAM,CAACF,OAAO,CAACI,QAAR,CAAiB,UAAjB,CAAD,CAAN,CAAqCC,OAArC,CAA6C,IAA7C;EACA,CAHC,CAAF;EAKAN,EAAE,CAAC,iDAAD,EAAoD,YAAM;IAC3D,IAAMC,OAAO,GAAG,IAAAC,eAAA,gBACf,gCAAC,kBAAD;MAAU,SAAS,EAAC,YAApB;MAAA;MAAA;QAAA;QAAA;QAAA;MAAA;IAAA,GAAkCN,cAAlC,CADe,CAAhB;IAGAO,MAAM,CAACF,OAAO,CAACI,QAAR,CAAiB,YAAjB,CAAD,CAAN,CAAuCC,OAAvC,CAA+C,IAA/C;EACA,CALC,CAAF;EAOAN,EAAE,CAAC,gEAAD,EAAmE,YAAM;IAC1E,IAAMC,OAAO,GAAG,IAAAC,eAAA,gBAAQ,gCAAC,kBAAD;MAAU,MAAM,MAAhB;MAAA;MAAA;QAAA;QAAA;QAAA;MAAA;IAAA,GAAkBN,cAAlB,CAAR,CAAhB;IACAO,MAAM,CAACF,OAAO,CAACI,QAAR,CAAiB,kBAAjB,CAAD,CAAN,CAA6CC,OAA7C,CAAqD,IAArD;EACA,CAHC,CAAF;EAKAN,EAAE,CAAC,iEAAD,EAAoE,YAAM;IAC3E,IAAMC,OAAO,GAAG,IAAAC,eAAA,gBAAQ,gCAAC,kBAAD;MAAA;MAAA;QAAA;QAAA;QAAA;MAAA;IAAA,GAAWN,cAAX,CAAR,CAAhB;IACAO,MAAM,CAACF,OAAO,CAACM,QAAR,EAAD,CAAN,CAA2BH,YAA3B,CAAwCV,UAAU,CAACc,MAAnD;EACA,CAHC,CAAF;EAKAR,EAAE,CAAC,0FAAD,EAA6F,YAAM;IACpG,IAAMC,OAAO,GAAG,IAAAC,eAAA,gBAAQ,gCAAC,kBAAD;MAAU,MAAM,MAAhB;MAAA;MAAA;QAAA;QAAA;QAAA;MAAA;IAAA,GAAkBN,cAAlB,CAAR,CAAhB;IACAO,MAAM,CACLF,OAAO,CACLQ,OADF,CACU,CADV,EAEEC,MAFF,GAEW;IAFX,CAGEL,QAHF,CAGW,2CAHX,CADK,CAAN,CAKEC,OALF,CAKU,IALV;EAMA,CARC,CAAF;EAUAN,EAAE,CAAC,0DAAD,EAA6D,YAAM;IACpE,IAAMC,OAAO,GAAG,IAAAC,eAAA,gBACf,gCAAC,kBAAD;MAAU,SAAS,EAAC,MAApB;MAAA;MAAA;QAAA;QAAA;QAAA;MAAA;IAAA,GAA4BN,cAA5B,CADe,CAAhB;IAGAO,MAAM,CAACF,OAAO,CAACI,QAAR,CAAiB,MAAjB,CAAD,CAAN,CAAiCC,OAAjC,CAAyC,IAAzC;EACA,CALC,CAAF;EAOAN,EAAE,CAAC,8CAAD,EAAiD,YAAM;IACxD,IAAMC,OAAO,GAAG,IAAAC,eAAA,gBACf,gCAAC,kBAAD;MAAU,cAAW,OAArB;MAAA;MAAA;QAAA;QAAA;QAAA;MAAA;IAAA,GAA8BN,cAA9B,CADe,CAAhB;IAGAO,MAAM,CAACF,OAAO,CAACU,IAAR,CAAa,YAAb,CAAD,CAAN,CAAmCL,OAAnC,CAA2C,OAA3C;EACA,CALC,CAAF;AAMA,CA1DO,CAAR"}
package/nds-alphabet.d.ts DELETED
@@ -1,21 +0,0 @@
1
- declare module "@nice-digital/nds-alphabet" {
2
- import React = require("react");
3
-
4
- export interface AlphabetProps {
5
- id?: string;
6
- children: React.ReactElement<LetterProps>[];
7
- chunky?: boolean;
8
- [key: string]: unknown;
9
- }
10
-
11
- export interface LetterProps {
12
- children: React.ReactNode;
13
- label?: string;
14
- chunky?: boolean;
15
- to?: string | false;
16
- [key: string]: unknown;
17
- }
18
-
19
- export const Alphabet: React.FC<AlphabetProps>;
20
- export const Letter: React.FC<LetterProps>;
21
- }