@seeqdev/qomponents 0.0.132 → 0.0.134

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 (156) hide show
  1. package/README.md +135 -135
  2. package/dist/Accordion/Accordion.js +8 -8
  3. package/dist/Accordion/Accordion.stories.js +114 -114
  4. package/dist/Accordion/Accordion.test.js +54 -54
  5. package/dist/Accordion/Accordion.types.js +1 -1
  6. package/dist/Accordion/index.js +1 -1
  7. package/dist/Alert/Alert.js +33 -33
  8. package/dist/Alert/Alert.stories.js +51 -51
  9. package/dist/Alert/Alert.test.js +50 -50
  10. package/dist/Alert/Alert.types.d.ts +1 -0
  11. package/dist/Alert/Alert.types.js +1 -1
  12. package/dist/Alert/index.js +1 -1
  13. package/dist/Button/Button.js +91 -91
  14. package/dist/Button/Button.stories.js +99 -99
  15. package/dist/Button/Button.test.js +48 -48
  16. package/dist/Button/Button.types.js +4 -4
  17. package/dist/Button/index.js +1 -1
  18. package/dist/ButtonGroup/ButtonGroup.js +32 -32
  19. package/dist/ButtonGroup/ButtonGroup.stories.js +384 -384
  20. package/dist/ButtonGroup/ButtonGroup.test.js +66 -66
  21. package/dist/ButtonGroup/ButtonGroup.types.d.ts +1 -0
  22. package/dist/ButtonGroup/ButtonGroup.types.js +1 -1
  23. package/dist/ButtonGroup/index.js +1 -1
  24. package/dist/ButtonWithDropdown/ButtonWithDropdown.js +59 -59
  25. package/dist/ButtonWithDropdown/ButtonWithDropdown.stories.js +142 -142
  26. package/dist/ButtonWithDropdown/ButtonWithDropdown.test.js +92 -92
  27. package/dist/ButtonWithDropdown/ButtonWithDropdown.types.d.ts +1 -0
  28. package/dist/ButtonWithDropdown/ButtonWithDropdown.types.js +1 -1
  29. package/dist/ButtonWithDropdown/index.js +1 -1
  30. package/dist/ButtonWithPopover/ButtonWithPopover.js +61 -61
  31. package/dist/ButtonWithPopover/ButtonWithPopover.stories.js +74 -74
  32. package/dist/ButtonWithPopover/ButtonWithPopover.test.js +81 -81
  33. package/dist/ButtonWithPopover/ButtonWithPopover.types.js +1 -1
  34. package/dist/ButtonWithPopover/index.js +1 -1
  35. package/dist/Carousel/Carousel.js +69 -66
  36. package/dist/Carousel/Carousel.js.map +1 -1
  37. package/dist/Carousel/Carousel.stories.js +114 -114
  38. package/dist/Carousel/Carousel.test.js +47 -47
  39. package/dist/Carousel/Carousel.types.d.ts +1 -0
  40. package/dist/Carousel/Carousel.types.js +1 -1
  41. package/dist/Carousel/index.js +1 -1
  42. package/dist/Checkbox/Checkbox.js +25 -25
  43. package/dist/Checkbox/Checkbox.stories.js +33 -33
  44. package/dist/Checkbox/Checkbox.test.js +93 -93
  45. package/dist/Checkbox/Checkbox.types.d.ts +1 -0
  46. package/dist/Checkbox/Checkbox.types.js +1 -1
  47. package/dist/Checkbox/index.js +1 -1
  48. package/dist/Collapse/Collapse.js +14 -17
  49. package/dist/Collapse/Collapse.js.map +1 -1
  50. package/dist/Collapse/Collapse.stories.js +36 -36
  51. package/dist/Collapse/Collapse.test.js +18 -18
  52. package/dist/Collapse/Collapse.types.d.ts +1 -0
  53. package/dist/Collapse/Collapse.types.js +1 -1
  54. package/dist/Collapse/index.js +1 -1
  55. package/dist/Icon/Icon.js +54 -54
  56. package/dist/Icon/Icon.stories.js +46 -46
  57. package/dist/Icon/Icon.test.js +54 -54
  58. package/dist/Icon/Icon.types.d.ts +1 -0
  59. package/dist/Icon/Icon.types.js +15 -15
  60. package/dist/Icon/index.js +1 -1
  61. package/dist/InputGroup/InputGroup.js +31 -31
  62. package/dist/InputGroup/InputGroup.stories.js +167 -167
  63. package/dist/InputGroup/InputGroup.test.js +42 -42
  64. package/dist/InputGroup/InputGroup.types.d.ts +1 -0
  65. package/dist/InputGroup/InputGroup.types.js +1 -1
  66. package/dist/InputGroup/index.js +1 -1
  67. package/dist/Modal/Modal.js +99 -99
  68. package/dist/Modal/Modal.js.map +1 -1
  69. package/dist/Modal/Modal.stories.js +126 -126
  70. package/dist/Modal/Modal.test.js +107 -107
  71. package/dist/Modal/Modal.types.js +1 -1
  72. package/dist/Modal/index.js +1 -1
  73. package/dist/ProgressBar/ProgressBar.js +49 -29
  74. package/dist/ProgressBar/ProgressBar.js.map +1 -1
  75. package/dist/ProgressBar/ProgressBar.stories.js +80 -72
  76. package/dist/ProgressBar/ProgressBar.stories.js.map +1 -1
  77. package/dist/ProgressBar/ProgressBar.test.js +43 -37
  78. package/dist/ProgressBar/ProgressBar.test.js.map +1 -1
  79. package/dist/ProgressBar/ProgressBar.types.d.ts +2 -0
  80. package/dist/ProgressBar/ProgressBar.types.js +1 -1
  81. package/dist/ProgressBar/index.js +1 -1
  82. package/dist/SeeqActionDropdown/SeeqActionDropdown.js +47 -47
  83. package/dist/SeeqActionDropdown/SeeqActionDropdown.stories.js +79 -79
  84. package/dist/SeeqActionDropdown/SeeqActionDropdown.test.js +72 -72
  85. package/dist/SeeqActionDropdown/SeeqActionDropdown.types.d.ts +1 -0
  86. package/dist/SeeqActionDropdown/SeeqActionDropdown.types.js +1 -1
  87. package/dist/SeeqActionDropdown/index.js +1 -1
  88. package/dist/SeeqActionDropdown/variants.js +22 -22
  89. package/dist/Select/Select.js +173 -173
  90. package/dist/Select/Select.stories.js +79 -79
  91. package/dist/Select/Select.test.js +181 -181
  92. package/dist/Select/Select.types.js +1 -1
  93. package/dist/Select/index.js +2 -2
  94. package/dist/Slider/Slider.js +12 -12
  95. package/dist/Slider/Slider.stories.js +57 -57
  96. package/dist/Slider/Slider.test.js +32 -32
  97. package/dist/Slider/Slider.types.d.ts +1 -0
  98. package/dist/Slider/Slider.types.js +1 -1
  99. package/dist/Slider/index.js +1 -1
  100. package/dist/Tabs/Tabs.js +21 -21
  101. package/dist/Tabs/Tabs.stories.js +90 -90
  102. package/dist/Tabs/Tabs.test.js +90 -90
  103. package/dist/Tabs/Tabs.types.d.ts +1 -0
  104. package/dist/Tabs/Tabs.types.js +1 -1
  105. package/dist/Tabs/index.js +1 -1
  106. package/dist/TextArea/TextArea.js +24 -24
  107. package/dist/TextArea/TextArea.stories.js +45 -45
  108. package/dist/TextArea/TextArea.test.js +67 -67
  109. package/dist/TextArea/TextArea.types.d.ts +1 -0
  110. package/dist/TextArea/TextArea.types.js +1 -1
  111. package/dist/TextArea/index.js +1 -1
  112. package/dist/TextField/TextField.js +78 -78
  113. package/dist/TextField/TextField.stories.js +69 -69
  114. package/dist/TextField/TextField.test.js +38 -38
  115. package/dist/TextField/TextField.types.d.ts +1 -0
  116. package/dist/TextField/TextField.types.js +1 -1
  117. package/dist/TextField/index.js +1 -1
  118. package/dist/ToolbarButton/ToolbarButton.js +74 -74
  119. package/dist/ToolbarButton/ToolbarButton.stories.js +93 -93
  120. package/dist/ToolbarButton/ToolbarButton.test.js +92 -92
  121. package/dist/ToolbarButton/ToolbarButton.types.js +1 -1
  122. package/dist/ToolbarButton/index.js +1 -1
  123. package/dist/Tooltip/QTip.stories.js +44 -44
  124. package/dist/Tooltip/QTip.types.js +1 -1
  125. package/dist/Tooltip/QTipPerformance.stories.js +29 -29
  126. package/dist/Tooltip/Qtip.js +167 -167
  127. package/dist/Tooltip/Tooltip.js +35 -35
  128. package/dist/Tooltip/Tooltip.stories.js +31 -31
  129. package/dist/Tooltip/Tooltip.types.d.ts +1 -0
  130. package/dist/Tooltip/Tooltip.types.js +2 -2
  131. package/dist/Tooltip/TooltipPerformance.stories.js +29 -29
  132. package/dist/Tooltip/index.js +2 -2
  133. package/dist/Tooltip/qTip.utilities.js +10 -10
  134. package/dist/example/.eslintrc.cjs +14 -14
  135. package/dist/example/README.md +33 -33
  136. package/dist/example/index.html +13 -13
  137. package/dist/example/package.json +30 -30
  138. package/dist/example/src/ComplexSelectExample.tsx +81 -81
  139. package/dist/example/src/Example.tsx +408 -408
  140. package/dist/example/src/index.css +102 -102
  141. package/dist/example/src/main.tsx +10 -10
  142. package/dist/example/src/vite-env.d.ts +1 -1
  143. package/dist/example/tsconfig.json +33 -33
  144. package/dist/example/tsconfig.node.json +12 -12
  145. package/dist/example/vite.config.ts +12 -12
  146. package/dist/index.esm.js +15266 -7869
  147. package/dist/index.esm.js.map +1 -1
  148. package/dist/index.js +15230 -7833
  149. package/dist/index.js.map +1 -1
  150. package/dist/styles.css +3714 -3709
  151. package/dist/types.js +1 -1
  152. package/dist/utils/browserId.js +28 -28
  153. package/dist/utils/svg.js +19 -19
  154. package/dist/utils/validateStyleDimension.js +13 -13
  155. package/dist/utils/validateStyleDimension.test.js +19 -19
  156. package/package.json +89 -86
@@ -1,2 +1,2 @@
1
- export { default } from './Accordion';
1
+ export { default } from './Accordion';
2
2
  //# sourceMappingURL=index.js.map
@@ -1,34 +1,34 @@
1
- import React from 'react';
2
- import '../styles.css';
3
- import Icon from '../Icon';
4
- const baseClasses = 'tw-mx-auto tw-p-4 tw-leading-normal tw-outline-none tw-py-2 tw-px-3 tw-rounded-sm tw-w-full tw-relative' +
5
- ' tw-border-solid tw-border tw-text-sm tw-flex tw-flex-col tw-justify-center tw-items-center';
6
- const darkTheme = 'dark:tw-bg-sq-colored-hover-dark dark:tw-text-sq-dark-text';
7
- const lightTheme = 'tw-text-sq-text-color tw-bg-sq-colored-hover';
8
- const errorClasses = 'tw-border-sq-danger-color';
9
- const borderColorClasses = 'tw-border-sq-color-dark';
10
- /**
11
- * Alert.
12
- */
13
- export const Alert = ({ children, dismissible = true, onClose, show = true, variant, testId = 'alert-id', id, extraClassNames, ...tooltipProps }) => {
14
- const appliedTheme = {
15
- theme: `${lightTheme} ${darkTheme}`,
16
- danger: 'tw-text-sq-text-color tw-bg-sq-danger-color',
17
- warning: 'tw-bg-sq-bg-warning-color tw-text-sq-text-color',
18
- gray: 'tw-bg-sq-light-gray tw-text-sq-text-color dark:tw-bg-sq-dark-disabled-gray dark:tw-text-sq-dark-text',
19
- };
20
- const appliedBorderTheme = {
21
- theme: borderColorClasses,
22
- danger: errorClasses,
23
- warning: 'tw-border-none',
24
- gray: 'tw-border-sq-darkish-gray',
25
- };
26
- const appliedClasses = `${baseClasses} ${appliedTheme[variant]} ${extraClassNames} ${appliedBorderTheme[variant]}`;
27
- if (!show) {
28
- return React.createElement("div", null);
29
- }
30
- return (React.createElement("div", { "data-testid": testId, id: id, className: appliedClasses },
31
- children,
32
- dismissible && (React.createElement(Icon, { icon: "fc-delete", type: variant.match(/danger|warning/) ? 'color' : 'theme', color: variant.match(/danger|warning/) ? 'inherit' : undefined, extraClassNames: `tw-self-end tw-text-[11px] tw-cursor-pointer tw-absolute tw-right-[10px] tw-top-[10px] ${variant.match(/danger|warning|gray/) ? 'tw-text-sq-text-color dark:tw-text-sq-dark-text' : ''}`, testId: `${testId}-close-btn`, onClick: onClose, ...tooltipProps }))));
33
- };
1
+ import React from 'react';
2
+ import '../styles.css';
3
+ import Icon from '../Icon';
4
+ const baseClasses = 'tw-mx-auto tw-p-4 tw-leading-normal tw-outline-none tw-py-2 tw-px-3 tw-rounded-sm tw-w-full tw-relative' +
5
+ ' tw-border-solid tw-border tw-text-sm tw-flex tw-flex-col tw-justify-center tw-items-center';
6
+ const darkTheme = 'dark:tw-bg-sq-colored-hover-dark dark:tw-text-sq-dark-text';
7
+ const lightTheme = 'tw-text-sq-text-color tw-bg-sq-colored-hover';
8
+ const errorClasses = 'tw-border-sq-danger-color';
9
+ const borderColorClasses = 'tw-border-sq-color-dark';
10
+ /**
11
+ * Alert.
12
+ */
13
+ export const Alert = ({ children, dismissible = true, onClose, show = true, variant, testId = 'alert-id', id, extraClassNames, ...tooltipProps }) => {
14
+ const appliedTheme = {
15
+ theme: `${lightTheme} ${darkTheme}`,
16
+ danger: 'tw-text-sq-text-color tw-bg-sq-danger-color',
17
+ warning: 'tw-bg-sq-bg-warning-color tw-text-sq-text-color',
18
+ gray: 'tw-bg-sq-light-gray tw-text-sq-text-color dark:tw-bg-sq-dark-disabled-gray dark:tw-text-sq-dark-text',
19
+ };
20
+ const appliedBorderTheme = {
21
+ theme: borderColorClasses,
22
+ danger: errorClasses,
23
+ warning: 'tw-border-none',
24
+ gray: 'tw-border-sq-darkish-gray',
25
+ };
26
+ const appliedClasses = `${baseClasses} ${appliedTheme[variant]} ${extraClassNames} ${appliedBorderTheme[variant]}`;
27
+ if (!show) {
28
+ return React.createElement("div", null);
29
+ }
30
+ return (React.createElement("div", { "data-testid": testId, id: id, className: appliedClasses },
31
+ children,
32
+ dismissible && (React.createElement(Icon, { icon: "fc-delete", type: variant.match(/danger|warning/) ? 'color' : 'theme', color: variant.match(/danger|warning/) ? 'inherit' : undefined, extraClassNames: `tw-self-end tw-text-[11px] tw-cursor-pointer tw-absolute tw-right-[10px] tw-top-[10px] ${variant.match(/danger|warning|gray/) ? 'tw-text-sq-text-color dark:tw-text-sq-dark-text' : ''}`, testId: `${testId}-close-btn`, onClick: onClose, ...tooltipProps }))));
33
+ };
34
34
  //# sourceMappingURL=Alert.js.map
@@ -1,52 +1,52 @@
1
- import React from 'react';
2
- import { Alert } from './Alert';
3
- import { QTip } from '../Tooltip';
4
- export default {
5
- title: 'Alert',
6
- };
7
- const colors = ['topic', 'analysis', 'datalab', 'vantage'];
8
- const renderAlert = ({ text, dismissable, variant, }) => (React.createElement("div", { className: "tw-text-sq-color-gray dark:tw-text-sq-white" },
9
- React.createElement("p", { className: "tw-mb-5 tw-text-[15px] tw-leading-normal" }),
10
- React.createElement(Alert, { variant: variant, dismissible: dismissable, show: true, extraClassNames: "tw-h-[200px]", tooltip: "This is a small close alert icon", tooltipDelay: 0, tooltipPlacement: "top", isHtmlTooltip: false }, text)));
11
- export const AllAlertsVariants = () => {
12
- const renderAllVariations = (color) => (React.createElement("div", { key: color + '_wrapper' },
13
- React.createElement("div", { className: "tw-p-4" }, renderAlert({
14
- text: 'This is a dismissible alert, it looks very pleasing and is very useful for showing alerts to the user',
15
- dismissable: true,
16
- variant: 'theme',
17
- })),
18
- React.createElement("div", { className: "tw-p-4" }, renderAlert({
19
- text: 'This is a non dismissable alert, it looks very pleasing and is very useful for showing alerts to the user',
20
- dismissable: false,
21
- variant: 'theme',
22
- })),
23
- React.createElement("div", { className: "tw-p-4" }, renderAlert({
24
- text: 'This is a warning alert, it is used to display a warning',
25
- dismissable: false,
26
- variant: 'warning',
27
- })),
28
- React.createElement("div", { className: "tw-p-4" }, renderAlert({
29
- text: 'This is an error alert, it is used to display an error',
30
- dismissable: false,
31
- variant: 'danger',
32
- })),
33
- React.createElement("div", { className: "tw-p-4" }, renderAlert({
34
- text: 'This is a gray alert, it is used to display a neutral alert',
35
- dismissable: true,
36
- variant: 'gray',
37
- })),
38
- React.createElement("div", { className: "tw-p-4" }, renderAlert({
39
- text: 'This is an error alert that is dismissible, it is used to display an error',
40
- dismissable: true,
41
- variant: 'danger',
42
- }))));
43
- return (React.createElement("div", null,
44
- React.createElement(QTip, null),
45
- React.createElement("div", { className: "tw-grid tw-grid-cols-4 tw-gap-4" }, colors.map((color) => {
46
- return React.createElement("div", { className: `color_${color}` }, renderAllVariations(color));
47
- })),
48
- React.createElement("div", { className: "tw-dark tw-bg-sq-dark-background tw-grid tw-grid-cols-4 tw-gap-4" }, colors.map((color) => {
49
- return React.createElement("div", { className: `color_${color}` }, renderAllVariations(color));
50
- }))));
51
- };
1
+ import React from 'react';
2
+ import { Alert } from './Alert';
3
+ import { QTip } from '../Tooltip';
4
+ export default {
5
+ title: 'Alert',
6
+ };
7
+ const colors = ['topic', 'analysis', 'datalab', 'vantage'];
8
+ const renderAlert = ({ text, dismissable, variant, }) => (React.createElement("div", { className: "tw-text-sq-color-gray dark:tw-text-sq-white" },
9
+ React.createElement("p", { className: "tw-mb-5 tw-text-[15px] tw-leading-normal" }),
10
+ React.createElement(Alert, { variant: variant, dismissible: dismissable, show: true, extraClassNames: "tw-h-[200px]", tooltip: "This is a small close alert icon", tooltipDelay: 0, tooltipPlacement: "top", isHtmlTooltip: false }, text)));
11
+ export const AllAlertsVariants = () => {
12
+ const renderAllVariations = (color) => (React.createElement("div", { key: color + '_wrapper' },
13
+ React.createElement("div", { className: "tw-p-4" }, renderAlert({
14
+ text: 'This is a dismissible alert, it looks very pleasing and is very useful for showing alerts to the user',
15
+ dismissable: true,
16
+ variant: 'theme',
17
+ })),
18
+ React.createElement("div", { className: "tw-p-4" }, renderAlert({
19
+ text: 'This is a non dismissable alert, it looks very pleasing and is very useful for showing alerts to the user',
20
+ dismissable: false,
21
+ variant: 'theme',
22
+ })),
23
+ React.createElement("div", { className: "tw-p-4" }, renderAlert({
24
+ text: 'This is a warning alert, it is used to display a warning',
25
+ dismissable: false,
26
+ variant: 'warning',
27
+ })),
28
+ React.createElement("div", { className: "tw-p-4" }, renderAlert({
29
+ text: 'This is an error alert, it is used to display an error',
30
+ dismissable: false,
31
+ variant: 'danger',
32
+ })),
33
+ React.createElement("div", { className: "tw-p-4" }, renderAlert({
34
+ text: 'This is a gray alert, it is used to display a neutral alert',
35
+ dismissable: true,
36
+ variant: 'gray',
37
+ })),
38
+ React.createElement("div", { className: "tw-p-4" }, renderAlert({
39
+ text: 'This is an error alert that is dismissible, it is used to display an error',
40
+ dismissable: true,
41
+ variant: 'danger',
42
+ }))));
43
+ return (React.createElement("div", null,
44
+ React.createElement(QTip, null),
45
+ React.createElement("div", { className: "tw-grid tw-grid-cols-4 tw-gap-4" }, colors.map((color) => {
46
+ return React.createElement("div", { className: `color_${color}` }, renderAllVariations(color));
47
+ })),
48
+ React.createElement("div", { className: "tw-dark tw-bg-sq-dark-background tw-grid tw-grid-cols-4 tw-gap-4" }, colors.map((color) => {
49
+ return React.createElement("div", { className: `color_${color}` }, renderAllVariations(color));
50
+ }))));
51
+ };
52
52
  //# sourceMappingURL=Alert.stories.js.map
@@ -1,51 +1,51 @@
1
- import React from 'react';
2
- import { fireEvent, render, screen } from '@testing-library/react';
3
- import '@testing-library/jest-dom/extend-expect';
4
- import { Alert } from './Alert';
5
- describe('Alert Component', () => {
6
- const defaultProps = {
7
- children: 'Test Alert',
8
- dismissible: true,
9
- onClose: jest.fn(),
10
- show: true,
11
- variant: 'theme',
12
- testId: 'alert-test-id',
13
- id: 'alert-id',
14
- extraClassNames: '',
15
- };
16
- it('should render the Alert component', () => {
17
- render(React.createElement(Alert, { ...defaultProps }));
18
- const alertElement = screen.getByTestId('alert-test-id');
19
- expect(alertElement).toBeInTheDocument();
20
- });
21
- it('should render children correctly', () => {
22
- render(React.createElement(Alert, { ...defaultProps }));
23
- const alertElement = screen.getByTestId('alert-test-id');
24
- expect(alertElement).toHaveTextContent('Test Alert');
25
- });
26
- it('should apply the correct classes based on variant', () => {
27
- const { rerender } = render(React.createElement(Alert, { ...defaultProps, variant: "danger" }));
28
- let alertElement = screen.getByTestId('alert-test-id');
29
- expect(alertElement).toHaveClass('tw-text-sq-text-color tw-bg-sq-danger-color');
30
- rerender(React.createElement(Alert, { ...defaultProps, variant: "warning" }));
31
- alertElement = screen.getByTestId('alert-test-id');
32
- expect(alertElement).toHaveClass('tw-bg-sq-bg-warning-color tw-text-sq-text-color');
33
- });
34
- it('should call onClose when dismissible icon is clicked', () => {
35
- render(React.createElement(Alert, { ...defaultProps }));
36
- const closeButton = screen.getByTestId('alert-test-id-close-btn');
37
- fireEvent.click(closeButton);
38
- expect(defaultProps.onClose).toHaveBeenCalled();
39
- });
40
- it('should not render when show is false', () => {
41
- render(React.createElement(Alert, { ...defaultProps, show: false }));
42
- const alertElement = screen.queryByTestId('alert-test-id');
43
- expect(alertElement).not.toBeInTheDocument();
44
- });
45
- it('should apply extra class names', () => {
46
- render(React.createElement(Alert, { ...defaultProps, extraClassNames: "extra-class" }));
47
- const alertElement = screen.getByTestId('alert-test-id');
48
- expect(alertElement).toHaveClass('extra-class');
49
- });
50
- });
1
+ import React from 'react';
2
+ import { fireEvent, render, screen } from '@testing-library/react';
3
+ import '@testing-library/jest-dom/extend-expect';
4
+ import { Alert } from './Alert';
5
+ describe('Alert Component', () => {
6
+ const defaultProps = {
7
+ children: 'Test Alert',
8
+ dismissible: true,
9
+ onClose: jest.fn(),
10
+ show: true,
11
+ variant: 'theme',
12
+ testId: 'alert-test-id',
13
+ id: 'alert-id',
14
+ extraClassNames: '',
15
+ };
16
+ it('should render the Alert component', () => {
17
+ render(React.createElement(Alert, { ...defaultProps }));
18
+ const alertElement = screen.getByTestId('alert-test-id');
19
+ expect(alertElement).toBeInTheDocument();
20
+ });
21
+ it('should render children correctly', () => {
22
+ render(React.createElement(Alert, { ...defaultProps }));
23
+ const alertElement = screen.getByTestId('alert-test-id');
24
+ expect(alertElement).toHaveTextContent('Test Alert');
25
+ });
26
+ it('should apply the correct classes based on variant', () => {
27
+ const { rerender } = render(React.createElement(Alert, { ...defaultProps, variant: "danger" }));
28
+ let alertElement = screen.getByTestId('alert-test-id');
29
+ expect(alertElement).toHaveClass('tw-text-sq-text-color tw-bg-sq-danger-color');
30
+ rerender(React.createElement(Alert, { ...defaultProps, variant: "warning" }));
31
+ alertElement = screen.getByTestId('alert-test-id');
32
+ expect(alertElement).toHaveClass('tw-bg-sq-bg-warning-color tw-text-sq-text-color');
33
+ });
34
+ it('should call onClose when dismissible icon is clicked', () => {
35
+ render(React.createElement(Alert, { ...defaultProps }));
36
+ const closeButton = screen.getByTestId('alert-test-id-close-btn');
37
+ fireEvent.click(closeButton);
38
+ expect(defaultProps.onClose).toHaveBeenCalled();
39
+ });
40
+ it('should not render when show is false', () => {
41
+ render(React.createElement(Alert, { ...defaultProps, show: false }));
42
+ const alertElement = screen.queryByTestId('alert-test-id');
43
+ expect(alertElement).not.toBeInTheDocument();
44
+ });
45
+ it('should apply extra class names', () => {
46
+ render(React.createElement(Alert, { ...defaultProps, extraClassNames: "extra-class" }));
47
+ const alertElement = screen.getByTestId('alert-test-id');
48
+ expect(alertElement).toHaveClass('extra-class');
49
+ });
50
+ });
51
51
  //# sourceMappingURL=Alert.test.js.map
@@ -1,3 +1,4 @@
1
+ /// <reference types="react" />
1
2
  import { TooltipComponentProps } from '../Tooltip/Tooltip.types';
2
3
  interface Props {
3
4
  children: React.ReactNode;
@@ -1,2 +1,2 @@
1
- export {};
1
+ export {};
2
2
  //# sourceMappingURL=Alert.types.js.map
@@ -1,2 +1,2 @@
1
- export { Alert as default } from './Alert';
1
+ export { Alert as default } from './Alert';
2
2
  //# sourceMappingURL=index.js.map
@@ -1,92 +1,92 @@
1
- import React from 'react';
2
- import '../styles.css';
3
- import { browserIsFirefox } from '../utils/browserId';
4
- import Icon from '../Icon';
5
- import { DEFAULT_TOOL_TIP_DELAY } from '../Tooltip/Tooltip.types';
6
- /**
7
- * All-in-one Button:
8
- * - use "variant" to achieve the desired style
9
- * - include tooltips and/or icons
10
- */
11
- const Button = ({ onClick, label, variant = 'outline', type = 'button', size = 'sm', disabled, extraClassNames, id, testId, stopPropagation = true, tooltip, tooltipOptions, iconStyle = 'text', icon, iconColor, iconPosition = 'left', iconPrefix = undefined, preventBlur = false, isHtmlTooltip = false, tooltipTestId, }) => {
12
- const baseClasses = 'tw-py-1 tw-px-2.5 tw-rounded-sm focus:tw-ring-0 focus-visible:tw-outline-none disabled:tw-pointer-events-none';
13
- const baseClassesByVariant = {
14
- 'outline': 'disabled:tw-opacity-50 tw-border-solid tw-border',
15
- 'theme': 'disabled:tw-opacity-50 tw-border-solid tw-border',
16
- 'danger': 'tw-bg-sq-danger-color hover:tw-bg-sq-danger-color-hover disabled:tw-opacity-50 tw-border-solid tw-border ' +
17
- 'tw-border-sq-danger-color hover:tw-border-sq-danger-color-hover',
18
- 'theme-light': 'disabled:tw-opacity-50 tw-border-solid tw-border',
19
- 'no-border': 'disabled:tw-opacity-50',
20
- 'warning': 'tw-bg-sq-warning-color tw-border-solid tw-border tw-border-sq-warning-color',
21
- };
22
- const textClassesByVariantLightTheme = {
23
- 'outline': 'tw-text-sq-text-color',
24
- 'theme': 'tw-text-white',
25
- 'theme-light': 'tw-text-white',
26
- 'danger': 'tw-text-white',
27
- 'no-border': 'tw-text-sq-text-color',
28
- 'warning': 'tw-text-white',
29
- };
30
- const textClassesByVariantDarkTheme = {
31
- 'outline': 'dark:tw-text-sq-dark-text',
32
- 'theme': 'dark:tw-text-white',
33
- 'theme-light': 'dark:tw-text-white',
34
- 'danger': 'dark:tw-text-white',
35
- 'no-border': 'dark:tw-text-sq-dark-text',
36
- 'warning': 'dark:tw-text-white',
37
- };
38
- const classesByVariantLightTheme = {
39
- 'outline': 'tw-bg-white dark:tw-bg-sq-dark-background tw-border-sq-disabled-gray hover:tw-bg-sq-light-gray' +
40
- ' focus:tw-bg-sq-dark-gray active:tw-bg-sq-dark-gray focus:tw-border-sq-color-dark active:tw-border-sq-color-dark',
41
- 'theme': 'tw-bg-sq-color-dark hover:tw-bg-sq-color-highlight tw-border-sq-color-dark' +
42
- ' hover:tw-border-sq-color-highlight',
43
- 'danger': '',
44
- 'theme-light': 'tw-bg-sq-icon hover:tw-bg-sq-link tw-border-sq-icon hover:tw-border-sq-link',
45
- 'no-border': '',
46
- 'warning': '',
47
- };
48
- const classesByVariantDarkTheme = {
49
- 'outline': 'dark:tw-border-sq-dark-disabled-gray dark:hover:tw-bg-sq-highlight-color-dark' +
50
- ' dark:focus:tw-bg-sq-multi-gray-dark dark:active:tw-bg-sq-multi-gray-dark dark:focus:tw-border-sq-color-dark' +
51
- ' dark:active:tw-border-sq-color-dark',
52
- 'theme': 'dark:tw-bg-sq-color-dark dark:hover:tw-bg-sq-color-highlight dark:tw-border-sq-color-dark' +
53
- ' dark:hover:tw-border-sq-color-highlight',
54
- 'danger': '',
55
- 'theme-light': 'dark:tw-bg-sq-icon-dark dark:hover:tw-bg-sq-link-dark dark:tw-border-sq-icon-dark' +
56
- ' dark:hover:tw-border-sq-link-dark',
57
- 'no-border': '',
58
- 'warning': '',
59
- };
60
- const sizeClasses = {
61
- sm: 'tw-text-sm',
62
- lg: 'tw-text-xl',
63
- };
64
- const appliedClasses = `${baseClasses} ${baseClassesByVariant[variant]} ${sizeClasses[size]} ${classesByVariantLightTheme[variant]} ${classesByVariantDarkTheme[variant]} ${textClassesByVariantLightTheme[variant]} ${textClassesByVariantDarkTheme[variant]} ${extraClassNames}`;
65
- let tooltipData = undefined;
66
- if (tooltip) {
67
- tooltipData = {
68
- 'data-qtip-text': tooltip,
69
- 'data-qtip-placement': tooltipOptions?.position,
70
- 'data-qtip-is-html': isHtmlTooltip,
71
- 'data-qtip-testid': tooltipTestId,
72
- 'data-qtip-delay': tooltipOptions?.delay ?? DEFAULT_TOOL_TIP_DELAY,
73
- };
74
- }
75
- const iconClass = iconPosition === 'left' ? 'tw-mr-1' : 'tw-ml-1';
76
- const iconElement = icon && (React.createElement(Icon, { icon: icon, iconPrefix: iconPrefix, type: iconStyle, color: iconColor, extraClassNames: label
77
- ? `${iconClass} ${textClassesByVariantLightTheme[variant]} ${textClassesByVariantDarkTheme[variant]}`
78
- : '', testId: `${id}_spinner` }));
79
- return (React.createElement("button", { id: id, ...tooltipData, disabled: disabled, "data-testid": testId, type: type === 'link' || (type === 'submit' && browserIsFirefox) ? 'button' : type, onClick: (e) => {
80
- stopPropagation && e.stopPropagation();
81
- onClick && onClick(e);
82
- }, onMouseDown: (e) => {
83
- if (preventBlur) {
84
- e.preventDefault();
85
- }
86
- }, className: appliedClasses },
87
- iconPosition === 'left' && iconElement,
88
- label,
89
- iconPosition === 'right' && iconElement));
90
- };
91
- export default Button;
1
+ import React from 'react';
2
+ import '../styles.css';
3
+ import { browserIsFirefox } from '../utils/browserId';
4
+ import Icon from '../Icon';
5
+ import { DEFAULT_TOOL_TIP_DELAY } from '../Tooltip/Tooltip.types';
6
+ /**
7
+ * All-in-one Button:
8
+ * - use "variant" to achieve the desired style
9
+ * - include tooltips and/or icons
10
+ */
11
+ const Button = ({ onClick, label, variant = 'outline', type = 'button', size = 'sm', disabled, extraClassNames, id, testId, stopPropagation = true, tooltip, tooltipOptions, iconStyle = 'text', icon, iconColor, iconPosition = 'left', iconPrefix = undefined, preventBlur = false, isHtmlTooltip = false, tooltipTestId, }) => {
12
+ const baseClasses = 'tw-py-1 tw-px-2.5 tw-rounded-sm focus:tw-ring-0 focus-visible:tw-outline-none disabled:tw-pointer-events-none';
13
+ const baseClassesByVariant = {
14
+ 'outline': 'disabled:tw-opacity-50 tw-border-solid tw-border',
15
+ 'theme': 'disabled:tw-opacity-50 tw-border-solid tw-border',
16
+ 'danger': 'tw-bg-sq-danger-color hover:tw-bg-sq-danger-color-hover disabled:tw-opacity-50 tw-border-solid tw-border ' +
17
+ 'tw-border-sq-danger-color hover:tw-border-sq-danger-color-hover',
18
+ 'theme-light': 'disabled:tw-opacity-50 tw-border-solid tw-border',
19
+ 'no-border': 'disabled:tw-opacity-50',
20
+ 'warning': 'tw-bg-sq-warning-color tw-border-solid tw-border tw-border-sq-warning-color',
21
+ };
22
+ const textClassesByVariantLightTheme = {
23
+ 'outline': 'tw-text-sq-text-color',
24
+ 'theme': 'tw-text-white',
25
+ 'theme-light': 'tw-text-white',
26
+ 'danger': 'tw-text-white',
27
+ 'no-border': 'tw-text-sq-text-color',
28
+ 'warning': 'tw-text-white',
29
+ };
30
+ const textClassesByVariantDarkTheme = {
31
+ 'outline': 'dark:tw-text-sq-dark-text',
32
+ 'theme': 'dark:tw-text-white',
33
+ 'theme-light': 'dark:tw-text-white',
34
+ 'danger': 'dark:tw-text-white',
35
+ 'no-border': 'dark:tw-text-sq-dark-text',
36
+ 'warning': 'dark:tw-text-white',
37
+ };
38
+ const classesByVariantLightTheme = {
39
+ 'outline': 'tw-bg-white dark:tw-bg-sq-dark-background tw-border-sq-disabled-gray hover:tw-bg-sq-light-gray' +
40
+ ' focus:tw-bg-sq-dark-gray active:tw-bg-sq-dark-gray focus:tw-border-sq-color-dark active:tw-border-sq-color-dark',
41
+ 'theme': 'tw-bg-sq-color-dark hover:tw-bg-sq-color-highlight tw-border-sq-color-dark' +
42
+ ' hover:tw-border-sq-color-highlight',
43
+ 'danger': '',
44
+ 'theme-light': 'tw-bg-sq-icon hover:tw-bg-sq-link tw-border-sq-icon hover:tw-border-sq-link',
45
+ 'no-border': '',
46
+ 'warning': '',
47
+ };
48
+ const classesByVariantDarkTheme = {
49
+ 'outline': 'dark:tw-border-sq-dark-disabled-gray dark:hover:tw-bg-sq-highlight-color-dark' +
50
+ ' dark:focus:tw-bg-sq-multi-gray-dark dark:active:tw-bg-sq-multi-gray-dark dark:focus:tw-border-sq-color-dark' +
51
+ ' dark:active:tw-border-sq-color-dark',
52
+ 'theme': 'dark:tw-bg-sq-color-dark dark:hover:tw-bg-sq-color-highlight dark:tw-border-sq-color-dark' +
53
+ ' dark:hover:tw-border-sq-color-highlight',
54
+ 'danger': '',
55
+ 'theme-light': 'dark:tw-bg-sq-icon-dark dark:hover:tw-bg-sq-link-dark dark:tw-border-sq-icon-dark' +
56
+ ' dark:hover:tw-border-sq-link-dark',
57
+ 'no-border': '',
58
+ 'warning': '',
59
+ };
60
+ const sizeClasses = {
61
+ sm: 'tw-text-sm',
62
+ lg: 'tw-text-xl',
63
+ };
64
+ const appliedClasses = `${baseClasses} ${baseClassesByVariant[variant]} ${sizeClasses[size]} ${classesByVariantLightTheme[variant]} ${classesByVariantDarkTheme[variant]} ${textClassesByVariantLightTheme[variant]} ${textClassesByVariantDarkTheme[variant]} ${extraClassNames}`;
65
+ let tooltipData = undefined;
66
+ if (tooltip) {
67
+ tooltipData = {
68
+ 'data-qtip-text': tooltip,
69
+ 'data-qtip-placement': tooltipOptions?.position,
70
+ 'data-qtip-is-html': isHtmlTooltip,
71
+ 'data-qtip-testid': tooltipTestId,
72
+ 'data-qtip-delay': tooltipOptions?.delay ?? DEFAULT_TOOL_TIP_DELAY,
73
+ };
74
+ }
75
+ const iconClass = iconPosition === 'left' ? 'tw-mr-1' : 'tw-ml-1';
76
+ const iconElement = icon && (React.createElement(Icon, { icon: icon, iconPrefix: iconPrefix, type: iconStyle, color: iconColor, extraClassNames: label
77
+ ? `${iconClass} ${textClassesByVariantLightTheme[variant]} ${textClassesByVariantDarkTheme[variant]}`
78
+ : '', testId: `${id}_spinner` }));
79
+ return (React.createElement("button", { id: id, ...tooltipData, disabled: disabled, "data-testid": testId, type: type === 'link' || (type === 'submit' && browserIsFirefox) ? 'button' : type, onClick: (e) => {
80
+ stopPropagation && e.stopPropagation();
81
+ onClick && onClick(e);
82
+ }, onMouseDown: (e) => {
83
+ if (preventBlur) {
84
+ e.preventDefault();
85
+ }
86
+ }, className: appliedClasses },
87
+ iconPosition === 'left' && iconElement,
88
+ label,
89
+ iconPosition === 'right' && iconElement));
90
+ };
91
+ export default Button;
92
92
  //# sourceMappingURL=Button.js.map