dhre-component-lib 0.1.7 → 0.1.8

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 (158) hide show
  1. package/{src/components/Badge → dist}/Badge.module.scss +0 -1
  2. package/{src/components/BreadCrumb → dist}/Breadcrumb.module.scss +0 -3
  3. package/{src/components/Button → dist}/Button.module.scss +3 -16
  4. package/{src/components/CircularProgress → dist}/CircularProgress.module.scss +0 -1
  5. package/dist/assets/output-4Fi7j5sB.css +247 -0
  6. package/dist/components/Badge/index.d.ts +0 -1
  7. package/dist/components/BreadCrumb/index.d.ts +0 -1
  8. package/dist/components/Button/index.d.ts +0 -1
  9. package/dist/components/CircularProgress/index.d.ts +0 -1
  10. package/dist/components/Map/index.d.ts +0 -1
  11. package/dist/components/Modal/index.d.ts +0 -1
  12. package/dist/components/Notification/index.d.ts +0 -1
  13. package/dist/components/OtpInput/index.d.ts +0 -1
  14. package/dist/components/PdfView/index.d.ts +0 -1
  15. package/dist/components/Tooltip/index.d.ts +0 -1
  16. package/dist/dist/styles.css +2 -0
  17. package/dist/dist/styles.css.map +1 -0
  18. package/dist/index.d.ts +15 -1
  19. package/dist/index.esm.js +9323 -0
  20. package/dist/index.esm.js.map +1 -0
  21. package/dist/index.js +9359 -1
  22. package/dist/index.js.map +1 -0
  23. package/package.json +8 -7
  24. package/dist/components/Avatar/Avatar.js +0 -6
  25. package/dist/components/Avatar/Avatar.test.js +0 -39
  26. package/dist/components/Avatar/index.js +0 -1
  27. package/dist/components/Badge/Badge.js +0 -6
  28. package/dist/components/Badge/Badge.test.js +0 -44
  29. package/dist/components/Badge/index.js +0 -2
  30. package/dist/components/BreadCrumb/BreadCrumb.js +0 -8
  31. package/dist/components/BreadCrumb/BreadCrumb.test.js +0 -55
  32. package/dist/components/BreadCrumb/index.js +0 -2
  33. package/dist/components/Button/Button.js +0 -6
  34. package/dist/components/Button/Button.test.js +0 -36
  35. package/dist/components/Button/index.js +0 -2
  36. package/dist/components/Checkbox/Checkbox.js +0 -7
  37. package/dist/components/Checkbox/Checkbox.test.js +0 -59
  38. package/dist/components/Checkbox/index.js +0 -1
  39. package/dist/components/CircularProgress/CircularProgress.js +0 -15
  40. package/dist/components/CircularProgress/CircularProgress.test.js +0 -31
  41. package/dist/components/CircularProgress/index.js +0 -2
  42. package/dist/components/Divider/Divider.js +0 -7
  43. package/dist/components/Divider/Divider.test.js +0 -30
  44. package/dist/components/Divider/index.js +0 -1
  45. package/dist/components/Enum.js +0 -17
  46. package/dist/components/InputTextField/InputTextField.js +0 -9
  47. package/dist/components/InputTextField/InputTextField.test.js +0 -98
  48. package/dist/components/InputTextField/index.js +0 -1
  49. package/dist/components/Link/Link.js +0 -6
  50. package/dist/components/Link/Link.test.js +0 -47
  51. package/dist/components/Link/index.js +0 -1
  52. package/dist/components/Map/Directions.js +0 -9
  53. package/dist/components/Map/GoogleMap.js +0 -104
  54. package/dist/components/Map/GoogleMapsLoader.js +0 -10
  55. package/dist/components/Map/index.js +0 -3
  56. package/dist/components/Modal/Modal.js +0 -14
  57. package/dist/components/Modal/Modal.test.js +0 -52
  58. package/dist/components/Modal/index.js +0 -2
  59. package/dist/components/Notification/Notification.js +0 -21
  60. package/dist/components/Notification/Notification.test.js +0 -40
  61. package/dist/components/Notification/index.js +0 -2
  62. package/dist/components/OtpInput/OtpInput.js +0 -68
  63. package/dist/components/OtpInput/OtpInput.test.js +0 -36
  64. package/dist/components/OtpInput/index.js +0 -2
  65. package/dist/components/PdfView/PdfView.js +0 -59
  66. package/dist/components/PdfView/PdfView.test.js +0 -41
  67. package/dist/components/PdfView/index.js +0 -2
  68. package/dist/components/Progress/Progress.js +0 -9
  69. package/dist/components/Progress/Progress.test.js +0 -34
  70. package/dist/components/Progress/index.js +0 -1
  71. package/dist/components/RadioButton/RadioButton.js +0 -7
  72. package/dist/components/RadioButton/RadioButton.test.js +0 -29
  73. package/dist/components/RadioButton/index.js +0 -1
  74. package/dist/components/Switch/Switch.js +0 -10
  75. package/dist/components/Switch/Switch.test.js +0 -45
  76. package/dist/components/Switch/index.js +0 -1
  77. package/dist/components/Tag/Tag.js +0 -6
  78. package/dist/components/Tag/Tag.test.js +0 -43
  79. package/dist/components/Tag/index.js +0 -1
  80. package/dist/components/Tooltip/Tooltip.js +0 -11
  81. package/dist/components/Tooltip/Tooltip.test.js +0 -48
  82. package/dist/components/Tooltip/index.js +0 -2
  83. package/dist/components/index.d.ts +0 -15
  84. package/dist/components/index.js +0 -15
  85. package/dist/theme/colors.js +0 -2
  86. package/src/__mocks__/styleMock.js +0 -1
  87. package/src/components/Avatar/Avatar.test.tsx +0 -53
  88. package/src/components/Avatar/Avatar.tsx +0 -28
  89. package/src/components/Avatar/index.ts +0 -1
  90. package/src/components/Badge/Badge.test.tsx +0 -59
  91. package/src/components/Badge/Badge.tsx +0 -25
  92. package/src/components/Badge/index.ts +0 -2
  93. package/src/components/BreadCrumb/BreadCrumb.test.tsx +0 -90
  94. package/src/components/BreadCrumb/BreadCrumb.tsx +0 -45
  95. package/src/components/BreadCrumb/index.ts +0 -2
  96. package/src/components/Button/Button.test.tsx +0 -49
  97. package/src/components/Button/Button.tsx +0 -29
  98. package/src/components/Button/index.ts +0 -2
  99. package/src/components/Checkbox/Checkbox.test.tsx +0 -93
  100. package/src/components/Checkbox/Checkbox.tsx +0 -35
  101. package/src/components/Checkbox/index.ts +0 -1
  102. package/src/components/CircularProgress/CircularProgress.test.tsx +0 -39
  103. package/src/components/CircularProgress/CircularProgress.tsx +0 -37
  104. package/src/components/CircularProgress/index.ts +0 -2
  105. package/src/components/Divider/Divider.test.tsx +0 -44
  106. package/src/components/Divider/Divider.tsx +0 -24
  107. package/src/components/Divider/index.ts +0 -1
  108. package/src/components/Enum.ts +0 -19
  109. package/src/components/InputTextField/InputTextField.test.tsx +0 -118
  110. package/src/components/InputTextField/InputTextField.tsx +0 -48
  111. package/src/components/InputTextField/index.ts +0 -1
  112. package/src/components/Link/Link.test.tsx +0 -55
  113. package/src/components/Link/Link.tsx +0 -33
  114. package/src/components/Link/index.ts +0 -1
  115. package/src/components/Map/Directions.tsx +0 -36
  116. package/src/components/Map/GoogleMap.tsx +0 -186
  117. package/src/components/Map/GoogleMapsLoader.tsx +0 -12
  118. package/src/components/Map/index.ts +0 -3
  119. package/src/components/Modal/Modal.test.tsx +0 -74
  120. package/src/components/Modal/Modal.tsx +0 -39
  121. package/src/components/Modal/index.ts +0 -2
  122. package/src/components/Notification/Notification.test.tsx +0 -53
  123. package/src/components/Notification/Notification.tsx +0 -42
  124. package/src/components/Notification/index.ts +0 -2
  125. package/src/components/OtpInput/OtpInput.test.tsx +0 -53
  126. package/src/components/OtpInput/OtpInput.tsx +0 -137
  127. package/src/components/OtpInput/index.ts +0 -2
  128. package/src/components/PdfView/PdfView.test.tsx +0 -52
  129. package/src/components/PdfView/PdfView.tsx +0 -116
  130. package/src/components/PdfView/index.ts +0 -2
  131. package/src/components/Progress/Progress.test.tsx +0 -43
  132. package/src/components/Progress/Progress.tsx +0 -35
  133. package/src/components/Progress/index.ts +0 -1
  134. package/src/components/RadioButton/RadioButton.test.tsx +0 -56
  135. package/src/components/RadioButton/RadioButton.tsx +0 -43
  136. package/src/components/RadioButton/index.ts +0 -1
  137. package/src/components/Switch/Switch.test.tsx +0 -83
  138. package/src/components/Switch/Switch.tsx +0 -38
  139. package/src/components/Switch/index.ts +0 -1
  140. package/src/components/Tag/Tag.css +0 -14
  141. package/src/components/Tag/Tag.test.tsx +0 -61
  142. package/src/components/Tag/Tag.tsx +0 -19
  143. package/src/components/Tag/index.ts +0 -1
  144. package/src/components/Tooltip/Tooltip.test.tsx +0 -68
  145. package/src/components/Tooltip/Tooltip.tsx +0 -38
  146. package/src/components/Tooltip/index.ts +0 -2
  147. package/src/components/index.ts +0 -15
  148. package/src/index.ts +0 -1
  149. package/src/theme/colors.ts +0 -3
  150. package/src/typings.d.ts +0 -1
  151. /package/{src/components/Map → dist}/GoogleMap.module.scss +0 -0
  152. /package/{src/components/Modal → dist}/Modal.module.scss +0 -0
  153. /package/{src/components/Notification → dist}/Notification.module.scss +0 -0
  154. /package/{src/components/OtpInput → dist}/OtpInput.module.scss +0 -0
  155. /package/{src/components/PdfView → dist}/PdfView.module.scss +0 -0
  156. /package/{src/components/Tooltip → dist}/Tooltip.module.scss +0 -0
  157. /package/{src/theme/colors → dist}/colors.scss +0 -0
  158. /package/{src/theme/Typography → dist}/typography.scss +0 -0
@@ -1,43 +0,0 @@
1
- import React from 'react';
2
- import { render, screen, fireEvent } from '@testing-library/react';
3
- import '@testing-library/jest-dom';
4
- import Tag from './Tag';
5
- describe('Tag Component', () => {
6
- let handleClick;
7
- beforeEach(() => {
8
- handleClick = jest.fn(); // Reset the mock function before each test
9
- });
10
- // Function to generate default props for each test
11
- const getDefaultProps = () => ({
12
- content: 'Sample Tag',
13
- tagClassName: 'tag-class',
14
- handleClick,
15
- });
16
- it('renders the tag with the correct content', () => {
17
- render(React.createElement(Tag, { ...getDefaultProps() }));
18
- const tagElement = screen.getByText('Sample Tag');
19
- expect(tagElement).toBeInTheDocument();
20
- });
21
- it('applies the correct className to the tag', () => {
22
- render(React.createElement(Tag, { ...getDefaultProps() }));
23
- const tagElement = screen.getByText('Sample Tag');
24
- expect(tagElement).toHaveClass('tag-class');
25
- });
26
- it('calls the handleClick function when the tag is clicked', () => {
27
- render(React.createElement(Tag, { ...getDefaultProps() }));
28
- const tagElement = screen.getByText('Sample Tag');
29
- fireEvent.click(tagElement);
30
- expect(handleClick).toHaveBeenCalledTimes(1);
31
- });
32
- it('does not call handleClick when the tag is not clicked', () => {
33
- render(React.createElement(Tag, { ...getDefaultProps() }));
34
- expect(handleClick).not.toHaveBeenCalled();
35
- });
36
- it('renders correctly with different content', () => {
37
- const newContent = 'New Tag Content';
38
- render(React.createElement(Tag, { ...getDefaultProps(), content: newContent }));
39
- const tagElement = screen.getByText(newContent);
40
- expect(tagElement).toBeInTheDocument();
41
- expect(tagElement).toHaveTextContent(newContent);
42
- });
43
- });
@@ -1 +0,0 @@
1
- export { default } from "./Tag";
@@ -1,11 +0,0 @@
1
- import React, { useState } from "react";
2
- import styles from './Tooltip.module.scss';
3
- const Tooltip = ({ content, tooltipClassName, children, containerClassName = "", }) => {
4
- const [visible, setVisible] = useState(false);
5
- const showTooltip = () => setVisible(true);
6
- const hideTooltip = () => setVisible(false);
7
- return (React.createElement("div", { className: `${styles.tooltipWrapper} ${containerClassName}`, onMouseEnter: showTooltip, onMouseLeave: hideTooltip },
8
- children,
9
- visible && (React.createElement("div", { className: `${styles.customTooltipClass} ${tooltipClassName}` }, content))));
10
- };
11
- export default Tooltip;
@@ -1,48 +0,0 @@
1
- import React from "react";
2
- import { render, screen, fireEvent } from "@testing-library/react";
3
- import "@testing-library/jest-dom";
4
- import Tooltip from "./Tooltip";
5
- describe("Tooltip Component", () => {
6
- const defaultProps = {
7
- content: "Tooltip content",
8
- tooltipClassName: "tooltip-class",
9
- children: React.createElement("button", null, "Hover me"),
10
- };
11
- it("renders the children correctly", () => {
12
- render(React.createElement(Tooltip, { ...defaultProps }));
13
- const childElement = screen.getByText("Hover me");
14
- expect(childElement).toBeInTheDocument();
15
- });
16
- it("does not show tooltip content by default", () => {
17
- render(React.createElement(Tooltip, { ...defaultProps }));
18
- const tooltipElement = screen.queryByText(defaultProps.content);
19
- expect(tooltipElement).not.toBeInTheDocument();
20
- });
21
- it("shows tooltip content on mouse enter and hides it on mouse leave", () => {
22
- render(React.createElement(Tooltip, { ...defaultProps }));
23
- const childElement = screen.getByText("Hover me");
24
- // Trigger mouse enter
25
- fireEvent.mouseEnter(childElement);
26
- let tooltipElement = screen.queryByText(defaultProps.content);
27
- expect(tooltipElement).toBeInTheDocument();
28
- expect(tooltipElement).toHaveClass(defaultProps.tooltipClassName);
29
- // Trigger mouse leave
30
- fireEvent.mouseLeave(childElement);
31
- tooltipElement = screen.queryByText(defaultProps.content);
32
- // Ensure tooltipElement is null if it was not found
33
- expect(tooltipElement).toBeNull();
34
- });
35
- it("applies the correct container className", () => {
36
- const customClassName = "custom-container-class";
37
- render(React.createElement(Tooltip, { ...defaultProps, containerClassName: customClassName }));
38
- const containerElement = screen.getByText("Hover me").parentElement;
39
- expect(containerElement).toHaveClass(customClassName);
40
- });
41
- it("handles tooltip visibility correctly", () => {
42
- render(React.createElement(Tooltip, { ...defaultProps }));
43
- const childElement = screen.getByText("Hover me");
44
- fireEvent.mouseEnter(childElement);
45
- const tooltipElement = screen.queryByText(defaultProps.content);
46
- expect(tooltipElement).toBeInTheDocument();
47
- });
48
- });
@@ -1,2 +0,0 @@
1
- export { default } from "./Tooltip";
2
- import "./Tooltip.module.scss";
@@ -1,15 +0,0 @@
1
- export { default as Button } from "./Button";
2
- export { default as Avatar } from "./Avatar";
3
- export { default as Badge } from "./Badge";
4
- export { default as BreadCrumb } from "./BreadCrumb";
5
- export { default as Checkbox } from "./Checkbox";
6
- export { default as CircularProgress } from "./CircularProgress";
7
- export { default as Divider } from "./Divider";
8
- export { default as Link } from "./Link";
9
- export { default as Progress } from "./Progress";
10
- export { default as RadioButton } from "./RadioButton";
11
- export { default as InputTextField } from "./InputTextField";
12
- export { default } from "./PdfView";
13
- export { default as Directions } from "./Map/Directions";
14
- export { default as GoogleMap } from "./Map/GoogleMap";
15
- export { default as OtpInput } from "./OtpInput/OtpInput";
@@ -1,15 +0,0 @@
1
- export { default as Button } from "./Button";
2
- export { default as Avatar } from "./Avatar";
3
- export { default as Badge } from "./Badge";
4
- export { default as BreadCrumb } from "./BreadCrumb";
5
- export { default as Checkbox } from "./Checkbox";
6
- export { default as CircularProgress } from "./CircularProgress";
7
- export { default as Divider } from "./Divider";
8
- export { default as Link } from "./Link";
9
- export { default as Progress } from "./Progress";
10
- export { default as RadioButton } from "./RadioButton";
11
- export { default as InputTextField } from "./InputTextField";
12
- export { default } from "./PdfView";
13
- export { default as Directions } from "./Map/Directions";
14
- export { default as GoogleMap } from "./Map/GoogleMap";
15
- export { default as OtpInput } from "./OtpInput/OtpInput";
@@ -1,2 +0,0 @@
1
- // format: Color name: BRAND_800
2
- export const COLORS = {};
@@ -1 +0,0 @@
1
- module.exports = {};
@@ -1,53 +0,0 @@
1
- import React from 'react';
2
- import { render, screen, fireEvent } from '@testing-library/react';
3
- import '@testing-library/jest-dom';
4
- import Avatar, { AvatarProps } from './Avatar';
5
-
6
- describe('Avatar Component', () => {
7
- const defaultProps: AvatarProps = {
8
- src: 'test-image.jpg',
9
- alt: 'Test Avatar',
10
- imgClassName: 'avatar-class',
11
- };
12
-
13
- it('renders the image with the provided src and alt attributes', () => {
14
- render(<Avatar {...defaultProps} />);
15
-
16
- const imgElement = screen.getByAltText(defaultProps.alt);
17
-
18
- expect(imgElement).toHaveAttribute('src', defaultProps.src);
19
- expect(imgElement).toHaveAttribute('alt', defaultProps.alt);
20
- });
21
-
22
- it('applies the correct className to the image', () => {
23
- render(<Avatar {...defaultProps} />);
24
-
25
- const imgElement = screen.getByAltText(defaultProps.alt);
26
-
27
- expect(imgElement).toHaveClass(defaultProps.imgClassName);
28
- });
29
-
30
- it('handles the onClick event correctly', () => {
31
- const handleClick = jest.fn();
32
- render(<Avatar {...defaultProps} handleClick={handleClick} />);
33
-
34
- const imgElement = screen.getByAltText(defaultProps.alt);
35
- fireEvent.click(imgElement);
36
-
37
- expect(handleClick).toHaveBeenCalledTimes(1);
38
- });
39
-
40
- it('does not crash without handleClick prop', () => {
41
- render(<Avatar {...defaultProps} />);
42
-
43
- const imgElement = screen.getByAltText(defaultProps.alt);
44
- expect(() => fireEvent.click(imgElement)).not.toThrow();
45
- });
46
-
47
- it('renders correctly without crashing', () => {
48
- render(<Avatar {...defaultProps} />);
49
-
50
- const imgElement = screen.getByAltText(defaultProps.alt);
51
- expect(imgElement).toBeInTheDocument();
52
- });
53
- });
@@ -1,28 +0,0 @@
1
- import React from "react";
2
-
3
- export interface AvatarProps {
4
- src: string;
5
- alt: string;
6
- imgClassName: string;
7
- handleClick?: () => void;
8
- }
9
-
10
- const Avatar: React.FC<AvatarProps> = ({
11
- src,
12
- alt,
13
- imgClassName,
14
- handleClick,
15
- }) => {
16
- return (
17
- <button onClick={handleClick}>
18
- <img
19
- src={src}
20
- alt={alt}
21
-
22
- className={imgClassName}
23
- />
24
- </button>
25
- );
26
- };
27
-
28
- export default Avatar;
@@ -1 +0,0 @@
1
- export { default } from "./Avatar";
@@ -1,59 +0,0 @@
1
- import React from 'react';
2
- import { render, screen, fireEvent } from '@testing-library/react';
3
- import '@testing-library/jest-dom';
4
- import Badge, { BadgeProps } from './Badge';
5
-
6
- describe('Badge Component', () => {
7
- const defaultProps: BadgeProps = {
8
- content: 'Test Badge',
9
- badgeClassName: 'badge-class',
10
- };
11
-
12
- it('renders the badge with the provided content', () => {
13
- render(<Badge {...defaultProps} />);
14
-
15
- const badgeElement = screen.getByText(defaultProps.content as string);
16
-
17
- expect(badgeElement).toBeInTheDocument();
18
- });
19
-
20
- it('handles the onClick event correctly', () => {
21
- const handleClick = jest.fn();
22
- render(<Badge {...defaultProps} handleClick={handleClick} />);
23
-
24
- const badgeElement = screen.getByText(defaultProps.content as string);
25
- fireEvent.click(badgeElement);
26
-
27
- expect(handleClick).toHaveBeenCalledTimes(1);
28
- });
29
-
30
- it('does not crash without handleClick prop', () => {
31
- render(<Badge {...defaultProps} />);
32
-
33
- const badgeElement = screen.getByText(defaultProps.content as string);
34
- expect(() => fireEvent.click(badgeElement)).not.toThrow();
35
- });
36
-
37
- it('renders correctly with numeric content', () => {
38
- const numericProps: BadgeProps = {
39
- ...defaultProps,
40
- content: 99,
41
- };
42
- render(<Badge {...numericProps} />);
43
-
44
- const badgeElement = screen.getByText(numericProps.content.toString());
45
-
46
- expect(badgeElement).toBeInTheDocument();
47
- expect(badgeElement).toHaveTextContent('99');
48
- });
49
-
50
- it('renders correctly with different content', () => {
51
- const newContent = 'Updated Badge';
52
- render(<Badge {...defaultProps} content={newContent} />);
53
-
54
- const badgeElement = screen.getByText(newContent);
55
-
56
- expect(badgeElement).toBeInTheDocument();
57
- expect(badgeElement).toHaveTextContent(newContent);
58
- });
59
- });
@@ -1,25 +0,0 @@
1
- import React from "react";
2
- import styles from './Badge.module.scss';
3
-
4
- export interface BadgeProps {
5
- content: string | number;
6
- badgeClassName?: string;
7
- handleClick?: () => void;
8
- }
9
-
10
- const Badge: React.FC<BadgeProps> = ({
11
- content,
12
- badgeClassName,
13
- handleClick,
14
- }) => {
15
- return (
16
- <button
17
- onClick={handleClick}
18
- className={`${styles.badge} ${badgeClassName}`}
19
- >
20
- {content}
21
- </button>
22
- );
23
- };
24
-
25
- export default Badge;
@@ -1,2 +0,0 @@
1
- export { default } from "./Badge";
2
- import "./Badge.module.scss"
@@ -1,90 +0,0 @@
1
- import React from 'react';
2
- import { render, screen, fireEvent } from '@testing-library/react';
3
- import '@testing-library/jest-dom';
4
- import Breadcrumb from './BreadCrumb';
5
-
6
- describe('Breadcrumb', () => {
7
- it('should render with given props', () => {
8
- const items = [
9
- { label: 'Home', handleClick: () => {} },
10
- { label: 'Library' },
11
- { label: 'Data' },
12
- ];
13
-
14
- render(
15
- <Breadcrumb
16
- items={items}
17
- breadcrumbClassName="breadcrumb-class"
18
- itemClassName="item-class"
19
- separator=">"
20
- separatorClassName="separator-class"
21
- />
22
- );
23
-
24
- // Check if breadcrumb container is rendered
25
- const breadcrumb = screen.getByRole('navigation');
26
- expect(breadcrumb).toBeInTheDocument();
27
- expect(breadcrumb).toHaveClass('breadcrumb-class');
28
-
29
- // Check if breadcrumb items are rendered
30
- items.forEach((item) => {
31
- const itemElement = screen.getByText(item.label);
32
- expect(itemElement).toBeInTheDocument();
33
- expect(itemElement).toHaveClass('item-class');
34
- });
35
-
36
- // Check if separators are rendered
37
- const separators = screen.getAllByText('>');
38
- expect(separators.length).toBe(items.length - 1);
39
- separators.forEach(separator => expect(separator).toHaveClass('separator-class'));
40
- });
41
-
42
- it('should call handleClick when a breadcrumb item is clicked', () => {
43
- const handleClick = jest.fn();
44
- const items = [
45
- { label: 'Home', handleClick },
46
- { label: 'Library' },
47
- ];
48
-
49
- render(
50
- <Breadcrumb
51
- items={items}
52
- breadcrumbClassName="breadcrumb-class"
53
- itemClassName="item-class"
54
- separator=">"
55
- separatorClassName="separator-class"
56
- />
57
- );
58
-
59
- const homeItem = screen.getByText('Home');
60
- fireEvent.click(homeItem);
61
-
62
- expect(handleClick).toHaveBeenCalled();
63
- });
64
-
65
- it('should render without separators if none are provided', () => {
66
- const items = [
67
- { label: 'Home' },
68
- { label: 'Library' },
69
- ];
70
-
71
- render(
72
- <Breadcrumb
73
- items={items}
74
- breadcrumbClassName="breadcrumb-class"
75
- itemClassName="item-class"
76
- separator="" // Pass an empty string for separator
77
- />
78
- );
79
-
80
- // Check if breadcrumb items are rendered
81
- items.forEach((item) => {
82
- const itemElement = screen.getByText(item.label);
83
- expect(itemElement).toBeInTheDocument();
84
- });
85
-
86
- // Check that no separators are present by querying with the separator class name
87
- const separators = screen.queryAllByRole('presentation');
88
- expect(separators.length).toBe(0);
89
- });
90
- });
@@ -1,45 +0,0 @@
1
- import React from "react";
2
- import styles from './Breadcrumb.module.scss';
3
-
4
- export interface BreadcrumbItem {
5
- label: string;
6
- handleClick?: () => void;
7
- }
8
-
9
- export interface BreadcrumbProps {
10
- items: BreadcrumbItem[];
11
- breadcrumbClassName: string;
12
- itemClassName?: string;
13
- separator?: string;
14
- separatorClassName?: string;
15
- }
16
-
17
- const Breadcrumb: React.FC<BreadcrumbProps> = ({
18
- items,
19
- breadcrumbClassName,
20
- itemClassName,
21
- separator = "/",
22
- separatorClassName,
23
- }) => {
24
- return (
25
- <nav className={`${styles.breadcrumb} ${breadcrumbClassName}`}>
26
- {items.map((item, index) => (
27
- <React.Fragment key={index}>
28
- <button
29
- className={`${styles.breadcrumbItem} ${itemClassName}`}
30
- onClick={item.handleClick}
31
- >
32
- {item.label}
33
- </button>
34
- {index < items.length - 1 && (
35
- <span className={`${styles.separator} ${separatorClassName}`}>
36
- {separator}
37
- </span>
38
- )}
39
- </React.Fragment>
40
- ))}
41
- </nav>
42
- );
43
- };
44
-
45
- export default Breadcrumb;
@@ -1,2 +0,0 @@
1
- export { default } from "./BreadCrumb";
2
- import "./Breadcrumb.module.scss";
@@ -1,49 +0,0 @@
1
- import React from 'react';
2
- import { render, screen, fireEvent } from '@testing-library/react';
3
- import '@testing-library/jest-dom';
4
- import Button, { ButtonProps } from './Button';
5
-
6
- describe('Button Component', () => {
7
- let handleClick: jest.Mock;
8
-
9
- beforeEach(() => {
10
- handleClick = jest.fn(); // Initialize the mock function before each test
11
- });
12
-
13
- const renderButton = (props: Partial<ButtonProps> = {}) => {
14
- const defaultProps: ButtonProps = {
15
- label: 'Click Me',
16
- variant: 'contained',
17
- color: 'primary',
18
- size: 'small',
19
- handleClick: handleClick
20
- };
21
-
22
- return render(<Button {...defaultProps} />);
23
- };
24
-
25
- it('renders the button with the correct label', () => {
26
- renderButton();
27
-
28
- const buttonElement = screen.getByText('Click Me');
29
-
30
- expect(buttonElement).toBeInTheDocument();
31
- expect(buttonElement.tagName).toBe('BUTTON');
32
- });
33
-
34
- it('calls the handleClick function when the button is clicked', () => {
35
- renderButton();
36
-
37
- const buttonElement = screen.getByText('Click Me');
38
-
39
- fireEvent.click(buttonElement);
40
-
41
- expect(handleClick).toHaveBeenCalledTimes(1); // Ensure the mock function is called once
42
- });
43
-
44
- it('does not call handleClick when the button is not clicked', () => {
45
- renderButton();
46
-
47
- expect(handleClick).not.toHaveBeenCalled();
48
- });
49
- });
@@ -1,29 +0,0 @@
1
- import React from "react";
2
- import styles from './Button.module.scss';
3
-
4
- export interface ButtonProps {
5
- label: string;
6
- variant: 'text' | 'outlined' | 'contained';
7
- color: 'primary' | 'secondary' | 'success' | 'error' | 'warning' | 'info';
8
- size: 'small' | 'medium' | 'large';
9
- handleClick: () => void;
10
- }
11
-
12
- const Button: React.FC<ButtonProps> = ({
13
- label,
14
- variant,
15
- color,
16
- size,
17
- handleClick,
18
- }) => {
19
- return (
20
- <button
21
- onClick={handleClick}
22
- className={`${styles.button} ${styles[variant]} ${styles[color]} ${styles[size]}`}
23
- >
24
- {label}
25
- </button>
26
- );
27
- };
28
-
29
- export default Button;
@@ -1,2 +0,0 @@
1
- export { default } from "./Button";
2
- import "./Button.module.scss"
@@ -1,93 +0,0 @@
1
- import React from 'react';
2
- import { render, screen, fireEvent } from '@testing-library/react';
3
- import '@testing-library/jest-dom';
4
- import CustomCheckbox from './Checkbox';
5
-
6
- interface CustomCheckboxProps {
7
- label?: string;
8
- checked?: boolean;
9
- onChange?: React.ChangeEventHandler<HTMLInputElement>;
10
- className?: string;
11
- checkboxClassName?: string;
12
- labelClassName?: string;
13
- }
14
-
15
- describe('CustomCheckbox Component', () => {
16
- let handleChange: jest.Mock;
17
-
18
- // Function to generate default props for each test
19
- const getDefaultProps = (): CustomCheckboxProps => ({
20
- label: 'Accept Terms',
21
- checked: false,
22
- onChange: handleChange,
23
- className: 'custom-container',
24
- checkboxClassName: 'custom-checkbox',
25
- labelClassName: 'custom-label',
26
- });
27
-
28
- beforeEach(() => {
29
- handleChange = jest.fn(); // Reset the mock function before each test
30
- });
31
-
32
- it('renders the checkbox with a label', () => {
33
- render(<CustomCheckbox {...getDefaultProps()} />);
34
-
35
- const checkboxElement = screen.getByRole('checkbox');
36
- const labelElement = screen.getByText('Accept Terms');
37
-
38
- expect(checkboxElement).toBeInTheDocument();
39
- expect(labelElement).toBeInTheDocument();
40
- });
41
-
42
- it('applies the correct className to the checkbox container', () => {
43
- render(<CustomCheckbox {...getDefaultProps()} />);
44
-
45
- const container = screen.getByRole('checkbox').parentElement;
46
-
47
- expect(container).toHaveClass('custom-container');
48
- });
49
-
50
- it('applies the correct className to the checkbox', () => {
51
- render(<CustomCheckbox {...getDefaultProps()} />);
52
-
53
- const checkboxElement = screen.getByRole('checkbox');
54
-
55
- expect(checkboxElement).toHaveClass('custom-checkbox');
56
- });
57
-
58
- it('applies the correct className to the label', () => {
59
- render(<CustomCheckbox {...getDefaultProps()} />);
60
-
61
- const labelElement = screen.getByText('Accept Terms');
62
-
63
- expect(labelElement).toHaveClass('custom-label');
64
- });
65
-
66
- it('checks the checkbox based on the checked prop', () => {
67
- render(<CustomCheckbox {...getDefaultProps()} checked={true} />);
68
-
69
- const checkboxElement = screen.getByRole('checkbox');
70
-
71
- expect(checkboxElement).toBeChecked();
72
- });
73
-
74
- it('calls the onChange function when the checkbox state changes', () => {
75
- render(<CustomCheckbox {...getDefaultProps()} checked={false} />);
76
-
77
- const checkboxElement = screen.getByRole('checkbox');
78
-
79
- fireEvent.click(checkboxElement); // Toggle the checkbox
80
-
81
- expect(handleChange).toHaveBeenCalledTimes(1);
82
- });
83
-
84
- it('renders correctly with different label', () => {
85
- const newLabel = 'Agree to Privacy Policy';
86
- render(<CustomCheckbox {...getDefaultProps()} label={newLabel} />);
87
-
88
- const labelElement = screen.getByText(newLabel);
89
-
90
- expect(labelElement).toBeInTheDocument();
91
- expect(labelElement).toHaveTextContent(newLabel);
92
- });
93
- });