@react5/ui 1.0.27 → 1.0.28

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 (186) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +2 -2
  3. package/package.json +38 -38
  4. package/packages/app/README.md +50 -50
  5. package/packages/app/eslint.config.js +28 -28
  6. package/packages/app/index.html +13 -13
  7. package/packages/app/jest.config.js +12 -12
  8. package/packages/app/package.json +36 -36
  9. package/packages/app/src/App.css +5 -5
  10. package/packages/app/src/App.tsx +35 -35
  11. package/packages/app/src/i18n/config.ts +21 -21
  12. package/packages/app/src/i18n/en/translation.json +4 -4
  13. package/packages/app/src/i18n/fr/translation.json +4 -4
  14. package/packages/app/src/i18n/index.ts +3 -3
  15. package/packages/app/src/main.tsx +16 -16
  16. package/packages/app/src/styles/1-reset.scss +72 -72
  17. package/packages/app/src/styles/2-colors.scss +11 -11
  18. package/packages/app/src/vite-env.d.ts +1 -1
  19. package/packages/app/tsconfig.app.json +26 -26
  20. package/packages/app/tsconfig.json +7 -7
  21. package/packages/app/tsconfig.node.json +24 -24
  22. package/packages/app/vite.config.ts +7 -7
  23. package/packages/lib/.babelrc +9 -9
  24. package/packages/lib/.storybook/main.js +50 -50
  25. package/packages/lib/.storybook/preview.js +13 -13
  26. package/packages/lib/declaration.d.ts +9 -9
  27. package/packages/lib/dist/esm/index.esm.js +1 -1
  28. package/packages/lib/dist/esm/index.esm.js.map +1 -1
  29. package/packages/lib/dist/esm/index.esm.scss +1401 -1401
  30. package/packages/lib/dist/index.js +1 -1
  31. package/packages/lib/dist/index.js.map +1 -1
  32. package/packages/lib/dist/index.scss +1401 -1401
  33. package/packages/lib/jest.config.js +19 -19
  34. package/packages/lib/package.json +100 -102
  35. package/packages/lib/plop/component/index.js +43 -43
  36. package/packages/lib/plop/index.js +3 -3
  37. package/packages/lib/plop/templates/component/component.hbs +19 -19
  38. package/packages/lib/plop/templates/component/index.hbs +1 -1
  39. package/packages/lib/plop/templates/component/stories.hbs +17 -17
  40. package/packages/lib/plop/templates/component/style.hbs +1 -1
  41. package/packages/lib/plop/templates/component/test.hbs +11 -11
  42. package/packages/lib/plopfile.js +1 -1
  43. package/packages/lib/rollup.config.mjs +64 -64
  44. package/packages/lib/src/components/Accordion/Accordion.scss +67 -67
  45. package/packages/lib/src/components/Accordion/Accordion.tsx +36 -36
  46. package/packages/lib/src/components/Button/Button.scss +60 -60
  47. package/packages/lib/src/components/Button/Button.stories.tsx +26 -26
  48. package/packages/lib/src/components/Button/Button.tsx +40 -40
  49. package/packages/lib/src/components/Button/index.tsx +1 -1
  50. package/packages/lib/src/components/ButtonsGroup/ButtonsGroup.scss +3 -3
  51. package/packages/lib/src/components/ButtonsGroup/ButtonsGroup.stories.tsx +17 -17
  52. package/packages/lib/src/components/ButtonsGroup/ButtonsGroup.test.tsx +11 -11
  53. package/packages/lib/src/components/ButtonsGroup/ButtonsGroup.tsx +17 -17
  54. package/packages/lib/src/components/ButtonsGroup/index.tsx +1 -1
  55. package/packages/lib/src/components/CheckBox/CheckBox.scss +63 -63
  56. package/packages/lib/src/components/CheckBox/CheckBox.stories.tsx +22 -22
  57. package/packages/lib/src/components/CheckBox/CheckBox.tsx +42 -42
  58. package/packages/lib/src/components/CheckBox/index.tsx +1 -1
  59. package/packages/lib/src/components/DialogPrompt/DialogPrompt.scss +6 -6
  60. package/packages/lib/src/components/DialogPrompt/DialogPrompt.stories.tsx +17 -17
  61. package/packages/lib/src/components/DialogPrompt/DialogPrompt.test.tsx +11 -11
  62. package/packages/lib/src/components/DialogPrompt/DialogPrompt.tsx +41 -41
  63. package/packages/lib/src/components/DialogPrompt/index.tsx +1 -1
  64. package/packages/lib/src/components/Divider/Divider.scss +22 -22
  65. package/packages/lib/src/components/Divider/Divider.tsx +20 -20
  66. package/packages/lib/src/components/DropDown/DropDown.scss +70 -70
  67. package/packages/lib/src/components/DropDown/DropDown.stories.tsx +45 -45
  68. package/packages/lib/src/components/DropDown/DropDown.tsx +61 -61
  69. package/packages/lib/src/components/DropDown/index.tsx +1 -1
  70. package/packages/lib/src/components/Form/Form.scss +3 -3
  71. package/packages/lib/src/components/Form/Form.stories.tsx +20 -20
  72. package/packages/lib/src/components/Form/Form.tsx +25 -25
  73. package/packages/lib/src/components/FormButtons/FormButtons.scss +5 -5
  74. package/packages/lib/src/components/FormButtons/FormButtons.tsx +18 -18
  75. package/packages/lib/src/components/HeaderButtons/HeaderButtons.scss +6 -6
  76. package/packages/lib/src/components/HeaderButtons/HeaderButtons.stories.tsx +17 -17
  77. package/packages/lib/src/components/HeaderButtons/HeaderButtons.test.tsx +11 -11
  78. package/packages/lib/src/components/HeaderButtons/HeaderButtons.tsx +28 -28
  79. package/packages/lib/src/components/HeaderButtons/index.tsx +1 -1
  80. package/packages/lib/src/components/IconButton/IconButton.scss +64 -64
  81. package/packages/lib/src/components/IconButton/IconButton.tsx +44 -44
  82. package/packages/lib/src/components/MenuItem/MenuItem.scss +13 -13
  83. package/packages/lib/src/components/MenuItem/MenuItem.tsx +36 -36
  84. package/packages/lib/src/components/Modal/Modal.scss +71 -71
  85. package/packages/lib/src/components/Modal/Modal.tsx +60 -60
  86. package/packages/lib/src/components/Navbar/Navbar.scss +52 -52
  87. package/packages/lib/src/components/Navbar/Navbar.stories.tsx +25 -25
  88. package/packages/lib/src/components/Navbar/Navbar.tsx +38 -38
  89. package/packages/lib/src/components/NavbarLink/NavbarLink.scss +15 -15
  90. package/packages/lib/src/components/NavbarLink/NavbarLink.tsx +34 -34
  91. package/packages/lib/src/components/NavbarMenu/NavbarMenu.scss +156 -156
  92. package/packages/lib/src/components/NavbarMenu/NavbarMenu.stories.tsx +24 -24
  93. package/packages/lib/src/components/NavbarMenu/NavbarMenu.tsx +72 -72
  94. package/packages/lib/src/components/Panel/Panel.scss +29 -29
  95. package/packages/lib/src/components/Panel/Panel.stories.tsx +32 -32
  96. package/packages/lib/src/components/Panel/Panel.test.tsx +11 -11
  97. package/packages/lib/src/components/Panel/Panel.tsx +29 -29
  98. package/packages/lib/src/components/Panel/index.tsx +1 -1
  99. package/packages/lib/src/components/Paper/Paper.scss +5 -5
  100. package/packages/lib/src/components/Paper/Paper.stories.tsx +18 -18
  101. package/packages/lib/src/components/Paper/Paper.tsx +18 -18
  102. package/packages/lib/src/components/Paper/index.tsx +1 -1
  103. package/packages/lib/src/components/RangeSlider/RangeSlider.scss +83 -83
  104. package/packages/lib/src/components/RangeSlider/RangeSlider.stories.tsx +24 -24
  105. package/packages/lib/src/components/RangeSlider/RangeSlider.tsx +150 -150
  106. package/packages/lib/src/components/ResponsiveBar/ResponsiveBar.scss +72 -72
  107. package/packages/lib/src/components/ResponsiveBar/ResponsiveBar.tsx +38 -38
  108. package/packages/lib/src/components/ScrollView/ScrollView.scss +20 -20
  109. package/packages/lib/src/components/ScrollView/ScrollView.stories.tsx +17 -17
  110. package/packages/lib/src/components/ScrollView/ScrollView.test.tsx +11 -11
  111. package/packages/lib/src/components/ScrollView/ScrollView.tsx +19 -19
  112. package/packages/lib/src/components/ScrollView/index.tsx +1 -1
  113. package/packages/lib/src/components/Section/Section.scss +17 -17
  114. package/packages/lib/src/components/Section/Section.tsx +26 -26
  115. package/packages/lib/src/components/SelectField/SelectField.scss +42 -42
  116. package/packages/lib/src/components/SelectField/SelectField.stories.tsx +14 -14
  117. package/packages/lib/src/components/SelectField/SelectField.tsx +54 -54
  118. package/packages/lib/src/components/SelectField/index.tsx +1 -1
  119. package/packages/lib/src/components/Spacer/Spacer.scss +2 -2
  120. package/packages/lib/src/components/Spacer/Spacer.tsx +6 -6
  121. package/packages/lib/src/components/StackPanel/StackPanel.scss +8 -8
  122. package/packages/lib/src/components/StackPanel/StackPanel.stories.tsx +17 -17
  123. package/packages/lib/src/components/StackPanel/StackPanel.test.tsx +11 -11
  124. package/packages/lib/src/components/StackPanel/StackPanel.tsx +31 -31
  125. package/packages/lib/src/components/StackPanel/index.tsx +1 -1
  126. package/packages/lib/src/components/Submenu/Submenu.scss +55 -55
  127. package/packages/lib/src/components/Submenu/Submenu.stories.tsx +45 -45
  128. package/packages/lib/src/components/Submenu/Submenu.tsx +59 -59
  129. package/packages/lib/src/components/Submenu/index.tsx +1 -1
  130. package/packages/lib/src/components/SuccessCongratulation/SuccessCongratulation.scss +75 -75
  131. package/packages/lib/src/components/SuccessCongratulation/SuccessCongratulation.stories.tsx +17 -17
  132. package/packages/lib/src/components/SuccessCongratulation/SuccessCongratulation.test.tsx +11 -11
  133. package/packages/lib/src/components/SuccessCongratulation/SuccessCongratulation.tsx +63 -63
  134. package/packages/lib/src/components/SuccessCongratulation/index.tsx +1 -1
  135. package/packages/lib/src/components/TextArea/TextArea.scss +41 -41
  136. package/packages/lib/src/components/TextArea/TextArea.stories.tsx +14 -14
  137. package/packages/lib/src/components/TextArea/TextArea.tsx +50 -50
  138. package/packages/lib/src/components/TextArea/index.tsx +1 -1
  139. package/packages/lib/src/components/TextField/TextField.scss +56 -56
  140. package/packages/lib/src/components/TextField/TextField.stories.tsx +14 -14
  141. package/packages/lib/src/components/TextField/TextField.tsx +89 -89
  142. package/packages/lib/src/components/TextField/index.tsx +1 -1
  143. package/packages/lib/src/components/TitleEdit/TitleEdit.scss +17 -17
  144. package/packages/lib/src/components/TitleEdit/TitleEdit.tsx +69 -69
  145. package/packages/lib/src/components/Toast/Toast.scss +32 -32
  146. package/packages/lib/src/components/Toast/Toast.tsx +29 -29
  147. package/packages/lib/src/components/ToggleButton/ToggleButton.scss +47 -47
  148. package/packages/lib/src/components/ToggleButton/ToggleButton.stories.tsx +22 -22
  149. package/packages/lib/src/components/ToggleButton/ToggleButton.tsx +41 -41
  150. package/packages/lib/src/components/ToggleButton/index.tsx +1 -1
  151. package/packages/lib/src/components/Toolbar/Toolbar.scss +16 -16
  152. package/packages/lib/src/components/Toolbar/Toolbar.stories.tsx +17 -17
  153. package/packages/lib/src/components/Toolbar/Toolbar.test.tsx +11 -11
  154. package/packages/lib/src/components/Toolbar/Toolbar.tsx +20 -20
  155. package/packages/lib/src/components/Toolbar/index.tsx +1 -1
  156. package/packages/lib/src/components/Typography/Typography.scss +51 -51
  157. package/packages/lib/src/components/Typography/Typography.stories.tsx +18 -18
  158. package/packages/lib/src/components/Typography/Typography.tsx +19 -19
  159. package/packages/lib/src/components/index.tsx +34 -34
  160. package/packages/lib/src/hooks/index.tsx +3 -3
  161. package/packages/lib/src/hooks/use-click-outside.tsx +19 -19
  162. package/packages/lib/src/hooks/use-form.tsx +107 -107
  163. package/packages/lib/src/hooks/use-keys-enteresc.tsx +25 -25
  164. package/packages/lib/src/hooks/use-set-startup-focus.tsx +8 -8
  165. package/packages/lib/src/i18n/config.ts +8 -8
  166. package/packages/lib/src/i18n/en/translation.json +11 -11
  167. package/packages/lib/src/i18n/fr/translation.json +11 -11
  168. package/packages/lib/src/i18n/index.ts +11 -11
  169. package/packages/lib/src/index.tsx +7 -7
  170. package/packages/lib/src/stories/Intrduction.mdx +171 -171
  171. package/packages/lib/src/stories/assets/github.svg +3 -3
  172. package/packages/lib/src/styles/1-color-vars.scss +51 -51
  173. package/packages/lib/src/styles/2-font-variables.scss +2 -2
  174. package/packages/lib/src/styles/variables.scss +1 -1
  175. package/packages/lib/src/test/i18n.ts +17 -17
  176. package/packages/lib/src/utils/bem.ts +4 -4
  177. package/packages/lib/src/utils/formatError.ts +5 -5
  178. package/packages/lib/src/utils/index.ts +1 -1
  179. package/packages/lib/src/utils/interfaces.ts +5 -5
  180. package/packages/lib/tsconfig.json +26 -25
  181. package/packages/lib/vite.config.js +18 -18
  182. package/packages/ui-test/package-lock.json +97 -97
  183. package/packages/ui-test/package.json +19 -19
  184. package/packages/ui-test/playwright.config.ts +80 -80
  185. package/packages/ui-test/tests/example.spec.ts +18 -18
  186. package/packages/ui-test/tests-examples/demo-todo-app.spec.ts +437 -437
@@ -1,73 +1,73 @@
1
- import { ReactNode, Children, useEffect, useState, useRef } from "react"
2
- import './NavbarMenu.scss'
3
- import clsx from "clsx";
4
- import { MenuItem } from "../MenuItem";
5
- import { bem } from '../../utils/bem';
6
-
7
- export interface IMenuItem {
8
- title?: string
9
- to?: string
10
- onClick?: (e?: React.FormEvent<HTMLButtonElement>) => void
11
- disabled?: boolean,
12
- component?: ReactNode
13
- }
14
- export interface INavbarMenuProps {
15
- className?: string
16
- menuTitle: string
17
- header?: string
18
- direction?: "up" | "down"
19
- items: IMenuItem[],
20
- variant?: "primary" | "secondary"
21
- }
22
- const b = bem("navbar-menu");
23
- export const NavbarMenu = ({items, className, menuTitle, header, direction = "down", variant = "primary"}: INavbarMenuProps) => {
24
- const [isOpen, setIsOpen] = useState(false);
25
- const dropdownRef: any = useRef(null);
26
-
27
- useEffect(() => {
28
- const handleClickOutside = (event: MouseEvent) => {
29
- if (dropdownRef.current && !dropdownRef.current.contains(event.target)) {
30
- setIsOpen(false);
31
- }
32
- };
33
- document.addEventListener('mousedown', handleClickOutside);
34
- return () => {
35
- document.removeEventListener('mousedown', handleClickOutside);
36
- };
37
- }, []);
38
-
39
- const handleMenuClick = (onClick?: (e?: React.FormEvent<HTMLButtonElement>) => void
40
- ) => (e?: React.FormEvent<HTMLButtonElement>) => {
41
- setIsOpen(false);
42
- if(onClick) onClick(e);
43
- }
44
-
45
- const toggleDropdown = () => setIsOpen((prevIsOpen: boolean) => !prevIsOpen);
46
- const containerClass = `${b("container")} ${b("container", direction)}`;
47
-
48
- return (<div className={clsx(b(), className)} ref={dropdownRef}>
49
- <button className={b("button")} onClick={toggleDropdown}>
50
- {menuTitle}
51
- </button>
52
- <button className={b("toggle-button")} onClick={toggleDropdown}>
53
- <span className={clsx(b("indicator"), b(`indicator-${variant}`), isOpen && b("indicator", "open"))}></span>
54
- </button>
55
-
56
- <div className={clsx(containerClass, isOpen && b("container", "open"))}>
57
- <span className={b("drop-header")}>{header}</span>
58
- <ul className={b("list")}>
59
- {
60
- items.map((c, i) => (
61
- <li key={i} className={b("item")}>
62
- {
63
- <MenuItem className={b("menu-item")}
64
- component={c.component} to={c.to} onClick={handleMenuClick(c.onClick)}>{c.title}</MenuItem>
65
- }
66
- </li>
67
- ))
68
- }
69
- </ul>
70
- </div>
71
- </div>
72
- )
1
+ import { ReactNode, Children, useEffect, useState, useRef } from "react"
2
+ import './NavbarMenu.scss'
3
+ import clsx from "clsx";
4
+ import { MenuItem } from "../MenuItem";
5
+ import { bem } from '../../utils/bem';
6
+
7
+ export interface IMenuItem {
8
+ title?: string
9
+ to?: string
10
+ onClick?: (e?: React.FormEvent<HTMLButtonElement>) => void
11
+ disabled?: boolean,
12
+ component?: ReactNode
13
+ }
14
+ export interface INavbarMenuProps {
15
+ className?: string
16
+ menuTitle: string
17
+ header?: string
18
+ direction?: "up" | "down"
19
+ items: IMenuItem[],
20
+ variant?: "primary" | "secondary"
21
+ }
22
+ const b = bem("navbar-menu");
23
+ export const NavbarMenu = ({items, className, menuTitle, header, direction = "down", variant = "primary"}: INavbarMenuProps) => {
24
+ const [isOpen, setIsOpen] = useState(false);
25
+ const dropdownRef: any = useRef(null);
26
+
27
+ useEffect(() => {
28
+ const handleClickOutside = (event: MouseEvent) => {
29
+ if (dropdownRef.current && !dropdownRef.current.contains(event.target)) {
30
+ setIsOpen(false);
31
+ }
32
+ };
33
+ document.addEventListener('mousedown', handleClickOutside);
34
+ return () => {
35
+ document.removeEventListener('mousedown', handleClickOutside);
36
+ };
37
+ }, []);
38
+
39
+ const handleMenuClick = (onClick?: (e?: React.FormEvent<HTMLButtonElement>) => void
40
+ ) => (e?: React.FormEvent<HTMLButtonElement>) => {
41
+ setIsOpen(false);
42
+ if(onClick) onClick(e);
43
+ }
44
+
45
+ const toggleDropdown = () => setIsOpen((prevIsOpen: boolean) => !prevIsOpen);
46
+ const containerClass = `${b("container")} ${b("container", direction)}`;
47
+
48
+ return (<div className={clsx(b(), className)} ref={dropdownRef}>
49
+ <button className={b("button")} onClick={toggleDropdown}>
50
+ {menuTitle}
51
+ </button>
52
+ <button className={b("toggle-button")} onClick={toggleDropdown}>
53
+ <span className={clsx(b("indicator"), b(`indicator-${variant}`), isOpen && b("indicator", "open"))}></span>
54
+ </button>
55
+
56
+ <div className={clsx(containerClass, isOpen && b("container", "open"))}>
57
+ <span className={b("drop-header")}>{header}</span>
58
+ <ul className={b("list")}>
59
+ {
60
+ items.map((c, i) => (
61
+ <li key={i} className={b("item")}>
62
+ {
63
+ <MenuItem className={b("menu-item")}
64
+ component={c.component} to={c.to} onClick={handleMenuClick(c.onClick)}>{c.title}</MenuItem>
65
+ }
66
+ </li>
67
+ ))
68
+ }
69
+ </ul>
70
+ </div>
71
+ </div>
72
+ )
73
73
  }
@@ -1,30 +1,30 @@
1
- .r5ui-panel {
2
- max-width: 768px;
3
- width: 100%;
4
- margin: 1rem;
5
- display: flex;
6
- flex-direction: column;
7
-
8
- &__header {
9
- text-align: center;
10
- background-color: $secondary_bg_color;
11
- color: $secondary_text_color;
12
- border: $border_size solid $primary_border_color;
13
- border-radius: $border_radius $border_radius 0 0;
14
- border-bottom: 0;
15
- padding: 0.5rem;
16
- font-weight: 500;
17
- font-size: 1.2em;
18
- position: relative;
19
- }
20
- &__content {
21
- display: flex;
22
- flex-direction: column;
23
- flex: 1;
24
- align-content: center;
25
- justify-content: center;
26
- background-color: $page_bg_color;
27
- color: $page_text_color;
28
- border: $border_size solid $primary_border_color;
29
- }
1
+ .r5ui-panel {
2
+ max-width: 768px;
3
+ width: 100%;
4
+ margin: 1rem;
5
+ display: flex;
6
+ flex-direction: column;
7
+
8
+ &__header {
9
+ text-align: center;
10
+ background-color: $secondary_bg_color;
11
+ color: $secondary_text_color;
12
+ border: $border_size solid $primary_border_color;
13
+ border-radius: $border_radius $border_radius 0 0;
14
+ border-bottom: 0;
15
+ padding: 0.5rem;
16
+ font-weight: 500;
17
+ font-size: 1.2em;
18
+ position: relative;
19
+ }
20
+ &__content {
21
+ display: flex;
22
+ flex-direction: column;
23
+ flex: 1;
24
+ align-content: center;
25
+ justify-content: center;
26
+ background-color: $page_bg_color;
27
+ color: $page_text_color;
28
+ border: $border_size solid $primary_border_color;
29
+ }
30
30
  }
@@ -1,33 +1,33 @@
1
- import type { Meta, StoryObj } from '@storybook/react';
2
- import { Panel } from './Panel';
3
-
4
- const meta: Meta<typeof Panel> = {
5
- title: 'Example/Panel',
6
- component: Panel,
7
- argTypes: {
8
- backgroundColor: { control: 'color' },
9
- },
10
- } as Meta;
11
- export default meta;
12
-
13
- type Story = StoryObj<typeof Panel>;
14
-
15
- export const TextPanel: Story = {
16
- render: () => <Panel>Test</Panel>,
17
- };
18
-
19
- export const PanelWithHeader: Story = {
20
- render: () => <Panel title="the header">Test</Panel>,
21
- };
22
-
23
- export const PanelWithHeaderAndClose: Story = {
24
- render: () => <Panel title="the header" onClose={() => {}}>Test</Panel>,
25
- };
26
-
27
- export const PanelWithHeaderAndEdit: Story = {
28
- render: () => <Panel title="the header" onEdit={() => {}}>Test</Panel>,
29
- };
30
-
31
- export const PanelWithHeaderAndCloseAndEdit: Story = {
32
- render: () => <Panel title="the header" onClose={() => {}} onEdit={() => {}}>Test</Panel>,
1
+ import type { Meta, StoryObj } from '@storybook/react';
2
+ import { Panel } from './Panel';
3
+
4
+ const meta: Meta<typeof Panel> = {
5
+ title: 'Example/Panel',
6
+ component: Panel,
7
+ argTypes: {
8
+ backgroundColor: { control: 'color' },
9
+ },
10
+ } as Meta;
11
+ export default meta;
12
+
13
+ type Story = StoryObj<typeof Panel>;
14
+
15
+ export const TextPanel: Story = {
16
+ render: () => <Panel>Test</Panel>,
17
+ };
18
+
19
+ export const PanelWithHeader: Story = {
20
+ render: () => <Panel title="the header">Test</Panel>,
21
+ };
22
+
23
+ export const PanelWithHeaderAndClose: Story = {
24
+ render: () => <Panel title="the header" onClose={() => {}}>Test</Panel>,
25
+ };
26
+
27
+ export const PanelWithHeaderAndEdit: Story = {
28
+ render: () => <Panel title="the header" onEdit={() => {}}>Test</Panel>,
29
+ };
30
+
31
+ export const PanelWithHeaderAndCloseAndEdit: Story = {
32
+ render: () => <Panel title="the header" onClose={() => {}} onEdit={() => {}}>Test</Panel>,
33
33
  };
@@ -1,12 +1,12 @@
1
- import React from 'react';
2
- import { render, screen, fireEvent } from '@testing-library/react';
3
- import '@testing-library/jest-dom';
4
- import { Panel } from './Panel';
5
-
6
- describe('Panel Component', () => {
7
- test('renders the button with the correct label', () => {
8
- render(<Panel>test</Panel>);
9
- const div = screen.getByRole('Panel', { name: /click me/i });
10
- expect(div).toBeInTheDocument();
11
- });
1
+ import React from 'react';
2
+ import { render, screen, fireEvent } from '@testing-library/react';
3
+ import '@testing-library/jest-dom';
4
+ import { Panel } from './Panel';
5
+
6
+ describe('Panel Component', () => {
7
+ test('renders the button with the correct label', () => {
8
+ render(<Panel>test</Panel>);
9
+ const div = screen.getByRole('Panel', { name: /click me/i });
10
+ expect(div).toBeInTheDocument();
11
+ });
12
12
  });
@@ -1,30 +1,30 @@
1
- import { ReactNode } from 'react';
2
- import './Panel.scss'
3
- import clsx from 'clsx';
4
- import { bem } from '../../utils/bem';
5
- import { HeaderButtons } from '../HeaderButtons';
6
-
7
- interface PanelProps {
8
- disabled?: boolean;
9
- className?: string;
10
- title?: string;
11
- onClose?: () => void;
12
- onEdit?: () => void;
13
- children: ReactNode;
14
- }
15
- const b = bem("panel");
16
- export const Panel = ({children, className, title, onClose, onEdit}: PanelProps) => {
17
- return (
18
- <div className={clsx(b(), className)}>
19
- {title &&
20
- <div className={b('header')}>
21
- {title}
22
- <HeaderButtons onClose={onClose} onEdit={onEdit}/>
23
- </div>}
24
- <div className={b('content')}>
25
- {children}
26
- </div>
27
- </div>
28
- )
29
- }
1
+ import { ReactNode } from 'react';
2
+ import './Panel.scss'
3
+ import clsx from 'clsx';
4
+ import { bem } from '../../utils/bem';
5
+ import { HeaderButtons } from '../HeaderButtons';
6
+
7
+ interface PanelProps {
8
+ disabled?: boolean;
9
+ className?: string;
10
+ title?: string;
11
+ onClose?: () => void;
12
+ onEdit?: () => void;
13
+ children: ReactNode;
14
+ }
15
+ const b = bem("panel");
16
+ export const Panel = ({children, className, title, onClose, onEdit}: PanelProps) => {
17
+ return (
18
+ <div className={clsx(b(), className)}>
19
+ {title &&
20
+ <div className={b('header')}>
21
+ {title}
22
+ <HeaderButtons onClose={onClose} onEdit={onEdit}/>
23
+ </div>}
24
+ <div className={b('content')}>
25
+ {children}
26
+ </div>
27
+ </div>
28
+ )
29
+ }
30
30
  export default Panel
@@ -1 +1 @@
1
- export * from "./Panel";
1
+ export * from "./Panel";
@@ -1,6 +1,6 @@
1
- .r5ui-paper {
2
- //border: $border_size solid $primary_border_color;
3
- border-radius: $border_radius;
4
- padding: .5em;
5
- margin: .5em;
1
+ .r5ui-paper {
2
+ //border: $border_size solid $primary_border_color;
3
+ border-radius: $border_radius;
4
+ padding: .5em;
5
+ margin: .5em;
6
6
  }
@@ -1,18 +1,18 @@
1
- import type { Meta, StoryObj } from '@storybook/react';
2
-
3
- import { Paper } from './Paper';
4
-
5
- const meta: Meta<typeof Paper> = {
6
- component: Paper,
7
- };
8
-
9
- export default meta;
10
- type Story = StoryObj<typeof Paper>;
11
-
12
- export const Primary: Story = {
13
- render: () => (
14
- <div style={{ backgroundColor: '#333' }}>
15
- <Paper>Text</Paper>
16
- </div>
17
- ),
18
- };
1
+ import type { Meta, StoryObj } from '@storybook/react';
2
+
3
+ import { Paper } from './Paper';
4
+
5
+ const meta: Meta<typeof Paper> = {
6
+ component: Paper,
7
+ };
8
+
9
+ export default meta;
10
+ type Story = StoryObj<typeof Paper>;
11
+
12
+ export const Primary: Story = {
13
+ render: () => (
14
+ <div style={{ backgroundColor: '#333' }}>
15
+ <Paper>Text</Paper>
16
+ </div>
17
+ ),
18
+ };
@@ -1,18 +1,18 @@
1
- import clsx from "clsx";
2
- import "./Paper.scss";
3
- import type { ReactNode } from "react";
4
- import { bem } from '../../utils/bem';
5
-
6
- export interface IPaperProps {
7
- className?: string;
8
- children: ReactNode;
9
- }
10
-
11
- const b = bem("paper");
12
- export const Paper = ({children, className}: IPaperProps) => {
13
- return (<div className={clsx(b(), className)}>
14
- {children}
15
- </div>)
16
- }
17
-
18
- export default Paper
1
+ import clsx from "clsx";
2
+ import "./Paper.scss";
3
+ import type { ReactNode } from "react";
4
+ import { bem } from '../../utils/bem';
5
+
6
+ export interface IPaperProps {
7
+ className?: string;
8
+ children: ReactNode;
9
+ }
10
+
11
+ const b = bem("paper");
12
+ export const Paper = ({children, className}: IPaperProps) => {
13
+ return (<div className={clsx(b(), className)}>
14
+ {children}
15
+ </div>)
16
+ }
17
+
18
+ export default Paper
@@ -1 +1 @@
1
- export * from "./Paper"
1
+ export * from "./Paper"
@@ -1,84 +1,84 @@
1
- .r5ui-range-slider {
2
- display: flex;
3
- width: 100%;
4
- padding: 0 1em;
5
- align-items: center;
6
- flex-direction: column;
7
-
8
- &__track {
9
- position: relative;
10
- width: 100%;
11
- height: 6px;
12
- background-color: $primary_border_color;
13
- border-radius: 3px;
14
- cursor: pointer;
15
- margin: 0 10px;
16
- }
17
-
18
- &__range {
19
- position: absolute;
20
- height: 100%;
21
- background-color: $primary_bg_color_highlight;
22
- border-radius: 3px;
23
- }
24
-
25
- &__thumb {
26
- position: absolute;
27
- top: 200%;
28
- transform: translate(-50%, 0);
29
- width: 20px;
30
- height: 20px;
31
- background-color: $secondary_color;
32
- border-radius: 3px;
33
- border: $border_size solid $primary_border_color;
34
- cursor: pointer;
35
-
36
- &::before {
37
- content: '';
38
- position: absolute;
39
- top: -7px; // Position the tip above the rectangle
40
- left: 50%;
41
- transform: translateX(-50%);
42
- border-left: 7px solid transparent;
43
- border-right: 7px solid transparent;
44
- border-bottom: 7px solid $secondary_color;
45
- }
46
-
47
- &:hover {
48
- background-color: $primary_text_color_highlight;
49
- &::before {
50
- border-bottom-color: $primary_text_color_highlight;
51
- }
52
- }
53
-
54
- &--min {
55
- z-index: 1;
56
- }
57
-
58
- &--max {
59
- z-index: 2;
60
- }
61
- }
62
-
63
- &__values {
64
- display: flex;
65
- justify-content: space-between;
66
- width: 100%;
67
- margin-top: 25px;
68
- }
69
-
70
- &__value-field {
71
- width: 8em;
72
- margin: 0 4px;
73
- }
74
- &__value {
75
- display: flex;
76
- flex-direction: row;
77
- font-size: 1rem;
78
- color: $primary_text_color;
79
- align-items: center;
80
- }
81
- &__pick-button {
82
- margin-right: 0;
83
- }
1
+ .r5ui-range-slider {
2
+ display: flex;
3
+ width: 100%;
4
+ padding: 0 1em;
5
+ align-items: center;
6
+ flex-direction: column;
7
+
8
+ &__track {
9
+ position: relative;
10
+ width: 100%;
11
+ height: 6px;
12
+ background-color: $primary_border_color;
13
+ border-radius: 3px;
14
+ cursor: pointer;
15
+ margin: 0 10px;
16
+ }
17
+
18
+ &__range {
19
+ position: absolute;
20
+ height: 100%;
21
+ background-color: $primary_bg_color_highlight;
22
+ border-radius: 3px;
23
+ }
24
+
25
+ &__thumb {
26
+ position: absolute;
27
+ top: 200%;
28
+ transform: translate(-50%, 0);
29
+ width: 20px;
30
+ height: 20px;
31
+ background-color: $secondary_color;
32
+ border-radius: 3px;
33
+ border: $border_size solid $primary_border_color;
34
+ cursor: pointer;
35
+
36
+ &::before {
37
+ content: '';
38
+ position: absolute;
39
+ top: -7px; // Position the tip above the rectangle
40
+ left: 50%;
41
+ transform: translateX(-50%);
42
+ border-left: 7px solid transparent;
43
+ border-right: 7px solid transparent;
44
+ border-bottom: 7px solid $secondary_color;
45
+ }
46
+
47
+ &:hover {
48
+ background-color: $primary_text_color_highlight;
49
+ &::before {
50
+ border-bottom-color: $primary_text_color_highlight;
51
+ }
52
+ }
53
+
54
+ &--min {
55
+ z-index: 1;
56
+ }
57
+
58
+ &--max {
59
+ z-index: 2;
60
+ }
61
+ }
62
+
63
+ &__values {
64
+ display: flex;
65
+ justify-content: space-between;
66
+ width: 100%;
67
+ margin-top: 25px;
68
+ }
69
+
70
+ &__value-field {
71
+ width: 8em;
72
+ margin: 0 4px;
73
+ }
74
+ &__value {
75
+ display: flex;
76
+ flex-direction: row;
77
+ font-size: 1rem;
78
+ color: $primary_text_color;
79
+ align-items: center;
80
+ }
81
+ &__pick-button {
82
+ margin-right: 0;
83
+ }
84
84
  }
@@ -1,24 +1,24 @@
1
- import type { Meta, StoryObj } from '@storybook/react';
2
-
3
- import { RangeSlider } from './RangeSlider';
4
-
5
- const meta: Meta<typeof RangeSlider> = {
6
- component: RangeSlider,
7
- };
8
-
9
- export default meta;
10
- type Story = StoryObj<typeof RangeSlider>;
11
-
12
- /*
13
- *👇 Render functions are a framework specific feature to allow you control on how the component renders.
14
- * See https://storybook.js.org/docs/react/api/csf
15
- * to learn how to use render functions.
16
- */
17
- const menuItems = [{ to: '/about', title: 'About' }];
18
- export const Primary: Story = {
19
- render: () => (
20
- <div style={{ backgroundColor: '#ccc' }}>
21
- <RangeSlider onChange={(v) => console.log(v)}></RangeSlider>
22
- </div>
23
- ),
24
- };
1
+ import type { Meta, StoryObj } from '@storybook/react';
2
+
3
+ import { RangeSlider } from './RangeSlider';
4
+
5
+ const meta: Meta<typeof RangeSlider> = {
6
+ component: RangeSlider,
7
+ };
8
+
9
+ export default meta;
10
+ type Story = StoryObj<typeof RangeSlider>;
11
+
12
+ /*
13
+ *👇 Render functions are a framework specific feature to allow you control on how the component renders.
14
+ * See https://storybook.js.org/docs/react/api/csf
15
+ * to learn how to use render functions.
16
+ */
17
+ const menuItems = [{ to: '/about', title: 'About' }];
18
+ export const Primary: Story = {
19
+ render: () => (
20
+ <div style={{ backgroundColor: '#ccc' }}>
21
+ <RangeSlider onChange={(v) => console.log(v)}></RangeSlider>
22
+ </div>
23
+ ),
24
+ };