@pautena/react-design-system 0.0.1 → 0.1.2

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 (279) hide show
  1. package/dist/cjs/index.js +28 -28
  2. package/dist/cjs/index.js.map +1 -1
  3. package/dist/cjs/types/components/app-bar/app-bar.types.d.ts +2 -1
  4. package/dist/cjs/types/components/content/content.d.ts +2 -0
  5. package/dist/cjs/types/components/content/content.types.d.ts +4 -0
  6. package/dist/cjs/types/components/content/index.d.ts +2 -0
  7. package/dist/cjs/types/components/header/header.d.ts +2 -61
  8. package/dist/cjs/types/components/header/header.types.d.ts +55 -0
  9. package/dist/cjs/types/components/header/index.d.ts +1 -0
  10. package/dist/cjs/types/components/index.d.ts +1 -0
  11. package/dist/cjs/types/components/tab/index.d.ts +0 -1
  12. package/dist/cjs/types/components/tab/tab-card/tab-card.d.ts +1 -2
  13. package/dist/cjs/types/components/table-list/table-list.d.ts +4 -7
  14. package/dist/cjs/types/generators/generators.mock.d.ts +22 -1
  15. package/dist/cjs/types/generators/generators.model.d.ts +5 -1
  16. package/dist/cjs/types/generators/model-form/model-form.d.ts +5 -5
  17. package/dist/cjs/types/generators/model-router/model-router.d.ts +4 -35
  18. package/dist/cjs/types/generators/model-router/model-router.types.d.ts +8 -0
  19. package/dist/cjs/types/generators/model-router/screens/add-screen.d.ts +16 -2
  20. package/dist/cjs/types/generators/model-router/screens/details-screen.d.ts +20 -2
  21. package/dist/cjs/types/generators/model-router/screens/list-screen.d.ts +30 -2
  22. package/dist/cjs/types/generators/model-router/screens/screens.types.d.ts +11 -0
  23. package/dist/cjs/types/generators/model-router/screens/update-screen.d.ts +29 -2
  24. package/dist/cjs/types/generators/model-router/stories/templates.d.ts +23 -0
  25. package/dist/cjs/types/generators/object-details/object-details.d.ts +4 -4
  26. package/dist/cjs/types/layouts/app-bar-with-drawer-layout/app-bar-with-drawer-layout.d.ts +5 -8
  27. package/dist/cjs/types/layouts/header-layout/header-layout.d.ts +4 -5
  28. package/dist/cjs/types/layouts/index.d.ts +1 -6
  29. package/dist/cjs/types/providers/index.d.ts +1 -0
  30. package/dist/cjs/types/providers/notification-center/index.d.ts +1 -0
  31. package/dist/cjs/types/providers/tab-provider/index.d.ts +2 -0
  32. package/dist/cjs/types/providers/tab-provider/tab-provider.context.d.ts +4 -0
  33. package/dist/cjs/types/providers/tab-provider/tab-provider.provider.d.ts +6 -0
  34. package/dist/cjs/types/utils/theme.d.ts +7 -4
  35. package/dist/esm/index.js +28 -28
  36. package/dist/esm/index.js.map +1 -1
  37. package/dist/esm/types/components/app-bar/app-bar.types.d.ts +2 -1
  38. package/dist/esm/types/components/content/content.d.ts +2 -0
  39. package/dist/esm/types/components/content/content.types.d.ts +4 -0
  40. package/dist/esm/types/components/content/index.d.ts +2 -0
  41. package/dist/esm/types/components/header/header.d.ts +2 -61
  42. package/dist/esm/types/components/header/header.types.d.ts +55 -0
  43. package/dist/esm/types/components/header/index.d.ts +1 -0
  44. package/dist/esm/types/components/index.d.ts +1 -0
  45. package/dist/esm/types/components/tab/index.d.ts +0 -1
  46. package/dist/esm/types/components/tab/tab-card/tab-card.d.ts +1 -2
  47. package/dist/esm/types/components/table-list/table-list.d.ts +4 -7
  48. package/dist/esm/types/generators/generators.mock.d.ts +22 -1
  49. package/dist/esm/types/generators/generators.model.d.ts +5 -1
  50. package/dist/esm/types/generators/model-form/model-form.d.ts +5 -5
  51. package/dist/esm/types/generators/model-router/model-router.d.ts +4 -35
  52. package/dist/esm/types/generators/model-router/model-router.types.d.ts +8 -0
  53. package/dist/esm/types/generators/model-router/screens/add-screen.d.ts +16 -2
  54. package/dist/esm/types/generators/model-router/screens/details-screen.d.ts +20 -2
  55. package/dist/esm/types/generators/model-router/screens/list-screen.d.ts +30 -2
  56. package/dist/esm/types/generators/model-router/screens/screens.types.d.ts +11 -0
  57. package/dist/esm/types/generators/model-router/screens/update-screen.d.ts +29 -2
  58. package/dist/esm/types/generators/model-router/stories/templates.d.ts +23 -0
  59. package/dist/esm/types/generators/object-details/object-details.d.ts +4 -4
  60. package/dist/esm/types/layouts/app-bar-with-drawer-layout/app-bar-with-drawer-layout.d.ts +5 -8
  61. package/dist/esm/types/layouts/header-layout/header-layout.d.ts +4 -5
  62. package/dist/esm/types/layouts/index.d.ts +1 -6
  63. package/dist/esm/types/providers/index.d.ts +1 -0
  64. package/dist/esm/types/providers/notification-center/index.d.ts +1 -0
  65. package/dist/esm/types/providers/tab-provider/index.d.ts +2 -0
  66. package/dist/esm/types/providers/tab-provider/tab-provider.context.d.ts +4 -0
  67. package/dist/esm/types/providers/tab-provider/tab-provider.provider.d.ts +6 -0
  68. package/dist/esm/types/utils/theme.d.ts +7 -4
  69. package/dist/index.d.ts +146 -122
  70. package/package.json +4 -1
  71. package/.eslintrc.js +0 -26
  72. package/.github/workflows/ci.yml +0 -23
  73. package/.github/workflows/deploy-storybook.yaml +0 -23
  74. package/.github/workflows/publish.yml +0 -31
  75. package/.husky/pre-commit +0 -5
  76. package/.prettierignore +0 -4
  77. package/.storybook/main.js +0 -10
  78. package/.storybook/preview.js +0 -36
  79. package/babel.config.js +0 -3
  80. package/dist/cjs/types/components/tab/tab.context.d.ts +0 -4
  81. package/dist/cjs/types/layouts/data-table-layout/data-table-layout.d.ts +0 -12
  82. package/dist/cjs/types/layouts/data-table-layout/index.d.ts +0 -1
  83. package/dist/cjs/types/layouts/details-layout/details-layout.d.ts +0 -12
  84. package/dist/cjs/types/layouts/details-layout/index.d.ts +0 -1
  85. package/dist/cjs/types/layouts/form-layout/form-layout.d.ts +0 -8
  86. package/dist/cjs/types/layouts/form-layout/index.d.ts +0 -1
  87. package/dist/cjs/types/layouts/list-layout/index.d.ts +0 -1
  88. package/dist/cjs/types/layouts/list-layout/list-layout.d.ts +0 -8
  89. package/dist/cjs/types/layouts/tab-layout/index.d.ts +0 -1
  90. package/dist/cjs/types/layouts/tab-layout/tab-layout.d.ts +0 -7
  91. package/dist/esm/types/components/tab/tab.context.d.ts +0 -4
  92. package/dist/esm/types/layouts/data-table-layout/data-table-layout.d.ts +0 -12
  93. package/dist/esm/types/layouts/data-table-layout/index.d.ts +0 -1
  94. package/dist/esm/types/layouts/details-layout/details-layout.d.ts +0 -12
  95. package/dist/esm/types/layouts/details-layout/index.d.ts +0 -1
  96. package/dist/esm/types/layouts/form-layout/form-layout.d.ts +0 -8
  97. package/dist/esm/types/layouts/form-layout/index.d.ts +0 -1
  98. package/dist/esm/types/layouts/list-layout/index.d.ts +0 -1
  99. package/dist/esm/types/layouts/list-layout/list-layout.d.ts +0 -8
  100. package/dist/esm/types/layouts/tab-layout/index.d.ts +0 -1
  101. package/dist/esm/types/layouts/tab-layout/tab-layout.d.ts +0 -7
  102. package/jest.config.js +0 -14
  103. package/jest.setup.ts +0 -5
  104. package/rollup.config.js +0 -40
  105. package/src/components/app-bar/app-bar.stories.tsx +0 -54
  106. package/src/components/app-bar/app-bar.test.tsx +0 -142
  107. package/src/components/app-bar/app-bar.tsx +0 -150
  108. package/src/components/app-bar/app-bar.types.ts +0 -16
  109. package/src/components/app-bar/index.ts +0 -3
  110. package/src/components/app-bar/mini-app-bar/index.ts +0 -1
  111. package/src/components/app-bar/mini-app-bar/mini-app-bar.tsx +0 -31
  112. package/src/components/bullet/bullet.stories.tsx +0 -43
  113. package/src/components/bullet/bullet.test.tsx +0 -24
  114. package/src/components/bullet/bullet.tsx +0 -30
  115. package/src/components/bullet/index.ts +0 -1
  116. package/src/components/center-container/center-container.stories.tsx +0 -50
  117. package/src/components/center-container/center-container.test.tsx +0 -16
  118. package/src/components/center-container/center-container.tsx +0 -32
  119. package/src/components/center-container/index.ts +0 -1
  120. package/src/components/drawer/__snapshots__/drawer.test.tsx.snap +0 -20
  121. package/src/components/drawer/drawer.context.ts +0 -20
  122. package/src/components/drawer/drawer.mixins.ts +0 -24
  123. package/src/components/drawer/drawer.mock.tsx +0 -100
  124. package/src/components/drawer/drawer.provider.tsx +0 -23
  125. package/src/components/drawer/drawer.test.tsx +0 -97
  126. package/src/components/drawer/drawer.tsx +0 -30
  127. package/src/components/drawer/drawer.types.ts +0 -53
  128. package/src/components/drawer/index.ts +0 -5
  129. package/src/components/drawer/mini-drawer/index.ts +0 -1
  130. package/src/components/drawer/mini-drawer/mini-drawer.stories.tsx +0 -34
  131. package/src/components/drawer/mini-drawer/mini-drawer.tsx +0 -67
  132. package/src/components/drawer-content/drawer-content.stories.tsx +0 -29
  133. package/src/components/drawer-content/drawer-content.test.tsx +0 -34
  134. package/src/components/drawer-content/drawer-content.tsx +0 -18
  135. package/src/components/drawer-content/index.ts +0 -1
  136. package/src/components/drawer-item/drawer-item.stories.tsx +0 -62
  137. package/src/components/drawer-item/drawer-item.test.tsx +0 -119
  138. package/src/components/drawer-item/drawer-item.tsx +0 -69
  139. package/src/components/drawer-item/index.ts +0 -1
  140. package/src/components/drawer-section/drawer-section.mock.tsx +0 -39
  141. package/src/components/drawer-section/drawer-section.stories.tsx +0 -28
  142. package/src/components/drawer-section/drawer-section.test.tsx +0 -44
  143. package/src/components/drawer-section/drawer-section.tsx +0 -40
  144. package/src/components/drawer-section/index.ts +0 -1
  145. package/src/components/header/header.dummy.ts +0 -55
  146. package/src/components/header/header.stories.tsx +0 -116
  147. package/src/components/header/header.test.tsx +0 -167
  148. package/src/components/header/header.tsx +0 -185
  149. package/src/components/header/index.ts +0 -1
  150. package/src/components/index.ts +0 -17
  151. package/src/components/label/index.ts +0 -1
  152. package/src/components/label/label.stories.tsx +0 -49
  153. package/src/components/label/label.test.tsx +0 -30
  154. package/src/components/label/label.tsx +0 -60
  155. package/src/components/link/index.ts +0 -1
  156. package/src/components/link/link.tsx +0 -17
  157. package/src/components/loading-area/index.ts +0 -1
  158. package/src/components/loading-area/loading-area.stories.tsx +0 -17
  159. package/src/components/loading-area/loading-area.test.tsx +0 -11
  160. package/src/components/loading-area/loading-area.tsx +0 -13
  161. package/src/components/placeholder/index.ts +0 -1
  162. package/src/components/placeholder/placeholder.mock.ts +0 -15
  163. package/src/components/placeholder/placeholder.stories.tsx +0 -44
  164. package/src/components/placeholder/placeholder.test.tsx +0 -76
  165. package/src/components/placeholder/placeholder.tsx +0 -75
  166. package/src/components/query-container/index.ts +0 -1
  167. package/src/components/query-container/query-container.stories.tsx +0 -68
  168. package/src/components/query-container/query-container.test.tsx +0 -95
  169. package/src/components/query-container/query-container.tsx +0 -71
  170. package/src/components/sign-in/index.ts +0 -1
  171. package/src/components/sign-in/sign-in.stories.tsx +0 -36
  172. package/src/components/sign-in/sign-in.test.tsx +0 -95
  173. package/src/components/sign-in/sign-in.tsx +0 -97
  174. package/src/components/tab/index.ts +0 -3
  175. package/src/components/tab/tab-card/index.ts +0 -1
  176. package/src/components/tab/tab-card/tab-card.dummy.tsx +0 -27
  177. package/src/components/tab/tab-card/tab-card.stories.tsx +0 -22
  178. package/src/components/tab/tab-card/tab-card.test.tsx +0 -53
  179. package/src/components/tab/tab-card/tab-card.tsx +0 -30
  180. package/src/components/tab/tab-panel/index.ts +0 -1
  181. package/src/components/tab/tab-panel/tab-panel.test.tsx +0 -26
  182. package/src/components/tab/tab-panel/tab-panel.tsx +0 -27
  183. package/src/components/tab/tab.context.ts +0 -5
  184. package/src/components/table/enhanced-remote-table/enhanced-remote-table.mock.tsx +0 -27
  185. package/src/components/table/enhanced-remote-table/enhanced-remote-table.stories.tsx +0 -24
  186. package/src/components/table/enhanced-remote-table/enhanced-remote-table.test.tsx +0 -77
  187. package/src/components/table/enhanced-remote-table/enhanced-remote-table.tsx +0 -74
  188. package/src/components/table/enhanced-remote-table/index.ts +0 -1
  189. package/src/components/table/enhanced-table/enhanced-table-head.tsx +0 -58
  190. package/src/components/table/enhanced-table/enhanced-table.mock.tsx +0 -93
  191. package/src/components/table/enhanced-table/enhanced-table.stories.tsx +0 -21
  192. package/src/components/table/enhanced-table/enhanced-table.test.tsx +0 -107
  193. package/src/components/table/enhanced-table/enhanced-table.tsx +0 -136
  194. package/src/components/table/enhanced-table/index.ts +0 -2
  195. package/src/components/table/index.ts +0 -2
  196. package/src/components/table-list/index.ts +0 -1
  197. package/src/components/table-list/table-list.stories.tsx +0 -75
  198. package/src/components/table-list/table-list.test.tsx +0 -283
  199. package/src/components/table-list/table-list.tsx +0 -131
  200. package/src/components/value-displays/group-value-card/group-value-card.mock.tsx +0 -35
  201. package/src/components/value-displays/group-value-card/group-value-card.stories.tsx +0 -26
  202. package/src/components/value-displays/group-value-card/group-value-card.test.tsx +0 -58
  203. package/src/components/value-displays/group-value-card/group-value-card.tsx +0 -65
  204. package/src/components/value-displays/group-value-card/index.ts +0 -1
  205. package/src/components/value-displays/index.ts +0 -4
  206. package/src/components/value-displays/value-boolean/index.ts +0 -1
  207. package/src/components/value-displays/value-boolean/value-boolean.stories.tsx +0 -25
  208. package/src/components/value-displays/value-boolean/value-boolean.test.tsx +0 -27
  209. package/src/components/value-displays/value-boolean/value-boolean.tsx +0 -33
  210. package/src/components/value-displays/value-card/index.ts +0 -1
  211. package/src/components/value-displays/value-card/value-card.stories.tsx +0 -22
  212. package/src/components/value-displays/value-card/value-card.test.tsx +0 -18
  213. package/src/components/value-displays/value-card/value-card.tsx +0 -12
  214. package/src/components/value-displays/value-text/index.ts +0 -1
  215. package/src/components/value-displays/value-text/value-test.test.tsx +0 -21
  216. package/src/components/value-displays/value-text/value-text.stories.tsx +0 -26
  217. package/src/components/value-displays/value-text/value-text.tsx +0 -32
  218. package/src/generators/generators.mock.ts +0 -215
  219. package/src/generators/generators.model.ts +0 -41
  220. package/src/generators/index.ts +0 -4
  221. package/src/generators/model-form/index.ts +0 -1
  222. package/src/generators/model-form/model-form.stories.tsx +0 -30
  223. package/src/generators/model-form/model-form.test.tsx +0 -98
  224. package/src/generators/model-form/model-form.tsx +0 -97
  225. package/src/generators/model-router/index.ts +0 -1
  226. package/src/generators/model-router/model-router.stories.tsx +0 -160
  227. package/src/generators/model-router/model-router.test.tsx +0 -633
  228. package/src/generators/model-router/model-router.tsx +0 -54
  229. package/src/generators/model-router/screens/add-screen.tsx +0 -52
  230. package/src/generators/model-router/screens/details-screen.tsx +0 -53
  231. package/src/generators/model-router/screens/index.ts +0 -4
  232. package/src/generators/model-router/screens/list-screen.tsx +0 -81
  233. package/src/generators/model-router/screens/update-screen.tsx +0 -62
  234. package/src/generators/object-details/index.ts +0 -1
  235. package/src/generators/object-details/object-details.stories.tsx +0 -20
  236. package/src/generators/object-details/object-details.test.tsx +0 -21
  237. package/src/generators/object-details/object-details.tsx +0 -70
  238. package/src/index.ts +0 -4
  239. package/src/layouts/app-bar-with-drawer-layout/app-bar-with-drawer-layout.stories.tsx +0 -29
  240. package/src/layouts/app-bar-with-drawer-layout/app-bar-with-drawer-layout.tsx +0 -34
  241. package/src/layouts/app-bar-with-drawer-layout/index.ts +0 -1
  242. package/src/layouts/data-table-layout/data-table-layout.stories.tsx +0 -94
  243. package/src/layouts/data-table-layout/data-table-layout.tsx +0 -30
  244. package/src/layouts/data-table-layout/index.ts +0 -1
  245. package/src/layouts/details-layout/details-layout.stories.tsx +0 -81
  246. package/src/layouts/details-layout/details-layout.tsx +0 -33
  247. package/src/layouts/details-layout/index.ts +0 -1
  248. package/src/layouts/form-layout/form-layout.stories.tsx +0 -65
  249. package/src/layouts/form-layout/form-layout.tsx +0 -18
  250. package/src/layouts/form-layout/index.ts +0 -1
  251. package/src/layouts/header-layout/header-layout.stories.tsx +0 -68
  252. package/src/layouts/header-layout/header-layout.tsx +0 -24
  253. package/src/layouts/header-layout/index.ts +0 -1
  254. package/src/layouts/index.ts +0 -7
  255. package/src/layouts/list-layout/index.ts +0 -1
  256. package/src/layouts/list-layout/list-layout.stories.tsx +0 -102
  257. package/src/layouts/list-layout/list-layout.tsx +0 -36
  258. package/src/layouts/tab-layout/index.ts +0 -1
  259. package/src/layouts/tab-layout/tab-layout.stories.tsx +0 -88
  260. package/src/layouts/tab-layout/tab-layout.tsx +0 -11
  261. package/src/providers/index.ts +0 -1
  262. package/src/providers/notification-center/index.ts +0 -1
  263. package/src/providers/notification-center/notification-center.context.ts +0 -37
  264. package/src/providers/notification-center/notification-center.provider.tsx +0 -51
  265. package/src/providers/notification-center/notification-center.stories.tsx +0 -52
  266. package/src/providers/notification-center/notification-center.test.tsx +0 -112
  267. package/src/storybook.tsx +0 -56
  268. package/src/tests/assertions.ts +0 -72
  269. package/src/tests/components.tsx +0 -60
  270. package/src/tests/content-placeholder.stories.tsx +0 -16
  271. package/src/tests/index.ts +0 -3
  272. package/src/tests/skeleton-card.stories.tsx +0 -18
  273. package/src/tests/testing-library.tsx +0 -65
  274. package/src/utils/arrays.test.ts +0 -9
  275. package/src/utils/arrays.ts +0 -7
  276. package/src/utils/index.ts +0 -2
  277. package/src/utils/theme.ts +0 -6
  278. package/tsconfig.json +0 -27
  279. package/tsconfig.rollup.json +0 -26
@@ -1,30 +0,0 @@
1
- import { Badge } from "@mui/material";
2
- import React from "react";
3
-
4
- export type BulletVariant = "primary" | "secondary" | "default" | "info" | "warning" | "error";
5
-
6
- export const bulletClasses = {
7
- root: "RdsBullet-root",
8
- };
9
-
10
- export interface BulletProps {
11
- /**
12
- * Color palette used to draw the component
13
- */
14
- variant?: BulletVariant;
15
- }
16
-
17
- /**
18
- * Dot to attract the user attention
19
- */
20
- export const Bullet = ({ variant = "primary" }: BulletProps) => {
21
- return (
22
- <Badge
23
- color={variant}
24
- variant="dot"
25
- className={bulletClasses.root}
26
- role="bullet"
27
- aria-describedby={variant}
28
- />
29
- );
30
- };
@@ -1 +0,0 @@
1
- export * from "./bullet";
@@ -1,50 +0,0 @@
1
- import React from "react";
2
- import { ComponentMeta } from "@storybook/react";
3
- import { CenterContainer, CenterContainerProps } from "./center-container";
4
- import { Label } from "../label";
5
- import { createTemplate, withContainer } from "../../storybook";
6
-
7
- export default {
8
- title: "Containers/CenterContainer",
9
- component: CenterContainer,
10
- decorators: [withContainer({ height: 500, bordered: true })],
11
- parameters: {
12
- layout: "fullscreen",
13
- },
14
- } as ComponentMeta<typeof CenterContainer>;
15
-
16
- const Template = createTemplate((args: CenterContainerProps) => {
17
- return (
18
- <CenterContainer {...args}>
19
- <Label text="Lorem ipsum" />
20
- </CenterContainer>
21
- );
22
- });
23
-
24
- export const Default = Template.bind({});
25
- Default.args = {
26
- centerVertical: true,
27
- centerHorizontal: true,
28
- };
29
-
30
- export const VerticalCentered = Template.bind({});
31
- VerticalCentered.args = {
32
- centerVertical: true,
33
- centerHorizontal: false,
34
- };
35
-
36
- export const HorizontallyCentered = Template.bind({});
37
- HorizontallyCentered.args = {
38
- centerVertical: false,
39
- centerHorizontal: true,
40
- };
41
-
42
- export const CustomStyles = Template.bind({});
43
- CustomStyles.args = {
44
- centerVertical: false,
45
- centerHorizontal: false,
46
- sx: {
47
- px: 3,
48
- py: 2,
49
- },
50
- };
@@ -1,16 +0,0 @@
1
- import React from "react";
2
- import { Typography } from "@mui/material";
3
- import { render, screen } from "../../tests";
4
- import { CenterContainer } from "./center-container";
5
-
6
- describe("CenterContainer", () => {
7
- it("would render the children", () => {
8
- render(
9
- <CenterContainer>
10
- <Typography>Content</Typography>
11
- </CenterContainer>,
12
- );
13
-
14
- expect(screen.getByText(/content/i)).toBeInTheDocument();
15
- });
16
- });
@@ -1,32 +0,0 @@
1
- import React, { ReactNode } from "react";
2
- import { Box, SxProps, Theme } from "@mui/material";
3
-
4
- export interface CenterContainerProps {
5
- children: ReactNode | undefined;
6
- centerVertical?: boolean;
7
- centerHorizontal?: boolean;
8
- sx?: SxProps<Theme>;
9
- }
10
-
11
- export function CenterContainer({
12
- children,
13
- centerVertical = true,
14
- centerHorizontal = true,
15
- sx,
16
- }: CenterContainerProps) {
17
- return (
18
- <Box
19
- width={1}
20
- height={1}
21
- sx={{
22
- ...sx,
23
- display: "flex",
24
- flexDirection: "column",
25
- justifyContent: centerVertical ? "center" : "flex-start",
26
- alignItems: centerHorizontal ? "center" : "flex-start",
27
- }}
28
- >
29
- {children}
30
- </Box>
31
- );
32
- }
@@ -1 +0,0 @@
1
- export * from "./center-container";
@@ -1,20 +0,0 @@
1
- // Jest Snapshot v1, https://goo.gl/fbAQLP
2
-
3
- exports[`mixins closedMixin would match a snapshot 1`] = `
4
- Object {
5
- "@media (min-width:600px)": Object {
6
- "width": "calc(64px + 1px)",
7
- },
8
- "overflowX": "hidden",
9
- "transition": "width 195ms cubic-bezier(0.4, 0, 0.6, 1) 0ms",
10
- "width": "calc(56px + 1px)",
11
- }
12
- `;
13
-
14
- exports[`mixins openedMixin would match a snapshot 1`] = `
15
- Object {
16
- "overflowX": "hidden",
17
- "transition": "width 225ms cubic-bezier(0.4, 0, 0.6, 1) 0ms",
18
- "width": 240,
19
- }
20
- `;
@@ -1,20 +0,0 @@
1
- import { useContext, createContext } from "react";
2
-
3
- export interface DrawerContextProps {
4
- isOpen: boolean;
5
- close(): void;
6
- open(): void;
7
- }
8
-
9
- export const DrawerContext = createContext<DrawerContextProps | undefined>(undefined);
10
- export const UndefinedProvider = new Error("DrawerContext.Provider is required and was undefined");
11
-
12
- export const useDrawer = () => {
13
- const context = useContext(DrawerContext);
14
-
15
- if (context === undefined) {
16
- throw UndefinedProvider;
17
- }
18
-
19
- return context;
20
- };
@@ -1,24 +0,0 @@
1
- import { Theme, CSSObject } from "@mui/material/styles";
2
-
3
- export const drawerWidth = 240;
4
-
5
- export const openedMixin = (theme: Theme): CSSObject => ({
6
- width: drawerWidth,
7
- transition: theme.transitions.create("width", {
8
- easing: theme.transitions.easing.sharp,
9
- duration: theme.transitions.duration.enteringScreen,
10
- }),
11
- overflowX: "hidden",
12
- });
13
-
14
- export const closedMixin = (theme: Theme): CSSObject => ({
15
- transition: theme.transitions.create("width", {
16
- easing: theme.transitions.easing.sharp,
17
- duration: theme.transitions.duration.leavingScreen,
18
- }),
19
- overflowX: "hidden",
20
- width: `calc(${theme.spacing(7)} + 1px)`,
21
- [theme.breakpoints.up("sm")]: {
22
- width: `calc(${theme.spacing(8)} + 1px)`,
23
- },
24
- });
@@ -1,100 +0,0 @@
1
- import React from "react";
2
- import { DrawerContentComponent, Nav } from "./drawer.types";
3
- import DiamondIcon from "@mui/icons-material/Diamond";
4
- import MenuBookIcon from "@mui/icons-material/MenuBook";
5
- import { Box, Typography } from "@mui/material";
6
-
7
- export const mockNav: Nav = {
8
- items: [
9
- {
10
- items: [
11
- {
12
- id: "item1.1",
13
- text: "Item 1.1",
14
- icon: <DiamondIcon />,
15
- href: "/items/1-1",
16
- },
17
- {
18
- id: "item1.2",
19
- text: "Item 1.2",
20
- href: "/items/1-2",
21
- icon: <DiamondIcon />,
22
- },
23
- {
24
- id: "item1.3",
25
- text: "Item 1.3",
26
- href: "/items/1-3",
27
- icon: <DiamondIcon />,
28
- bullet: {
29
- variant: "secondary",
30
- },
31
- },
32
- {
33
- id: "item1.4",
34
- text: "Item 1.4",
35
- href: "/items/1-4",
36
- icon: <DiamondIcon />,
37
- bullet: {
38
- variant: "error",
39
- },
40
- },
41
- ],
42
- },
43
- {
44
- title: "Section 2",
45
- items: [
46
- {
47
- id: "item2.1",
48
- text: "Item 2.1",
49
- href: "/items/2-1",
50
- icon: <DiamondIcon />,
51
- label: {
52
- text: "10",
53
- variant: "error",
54
- },
55
- },
56
- {
57
- id: "item2.2",
58
- text: "Item 2.2",
59
- href: "/items/2-2",
60
- icon: <MenuBookIcon />,
61
- label: {
62
- text: "new",
63
- variant: "info",
64
- },
65
- },
66
- ],
67
- },
68
- {
69
- title: "Section avatar",
70
- items: [
71
- {
72
- id: "item.a.1",
73
- text: "Avatar 1",
74
- href: "/items/a-1",
75
- avatar: {
76
- src: "https://c.pxhere.com/images/f6/e0/022ab77c391925931fe227c97ab4-1447675.jpg!d",
77
- alt: "Avatar 1",
78
- },
79
- },
80
- {
81
- id: "item.a.2",
82
- text: "Avatar 2",
83
- href: "/items/a-2",
84
- avatar: {
85
- src: "https://www.publicdomainpictures.net/pictures/270000/velka/avatar-people-person-business-u-15354603894rE.jpg",
86
- alt: "Avatar 2",
87
- },
88
- },
89
- ],
90
- },
91
- ],
92
- };
93
-
94
- export const DummyDrawerContent: DrawerContentComponent = () => {
95
- return (
96
- <Box>
97
- <Typography variant="h6">Dummy Drawer Content</Typography>
98
- </Box>
99
- );
100
- };
@@ -1,23 +0,0 @@
1
- import { useState } from "react";
2
- import React, { PropsWithChildren } from "react";
3
- import { DrawerContext } from "./drawer.context";
4
-
5
- type Props = PropsWithChildren<{
6
- initialOpen?: boolean;
7
- }>;
8
-
9
- export const DrawerProvider = ({ children, initialOpen = false }: Props) => {
10
- const [open, setOpen] = useState(initialOpen);
11
-
12
- return (
13
- <DrawerContext.Provider
14
- value={{
15
- isOpen: open,
16
- close: () => setOpen(false),
17
- open: () => setOpen(true),
18
- }}
19
- >
20
- {children}
21
- </DrawerContext.Provider>
22
- );
23
- };
@@ -1,97 +0,0 @@
1
- import React from "react";
2
- import { Drawer } from "./drawer";
3
- import { render, screen } from "../../tests";
4
- import { DrawerProvider } from "./drawer.provider";
5
- import { DummyDrawerContent, mockNav } from "./drawer.mock";
6
- import { Box, Button, createTheme } from "@mui/material";
7
- import { UndefinedProvider, useDrawer } from "./drawer.context";
8
- import userEvent from "@testing-library/user-event";
9
- import { openedMixin, closedMixin } from "./drawer.mixins";
10
-
11
- const TestContent = () => {
12
- const { open, close } = useDrawer();
13
-
14
- return (
15
- <Box>
16
- <Button onClick={close}>close</Button>
17
- <Button onClick={open}>open</Button>
18
- </Box>
19
- );
20
- };
21
-
22
- describe("Drawer", () => {
23
- const renderComponent = ({ initialOpen = undefined }: { initialOpen?: boolean } = {}) => {
24
- return render(
25
- <DrawerProvider initialOpen={initialOpen}>
26
- <Box>
27
- <Drawer>
28
- <DummyDrawerContent nav={mockNav} />
29
- </Drawer>
30
- <TestContent />
31
- </Box>
32
- </DrawerProvider>,
33
- );
34
- };
35
-
36
- it("would render closed by default", () => {
37
- renderComponent();
38
-
39
- expect(screen.queryByRole("menu", { hidden: true })).not.toBeInTheDocument();
40
- });
41
-
42
- it("would render opened if initialOpen is true", () => {
43
- renderComponent({ initialOpen: true });
44
-
45
- expect(screen.getByRole("menu", { hidden: false })).toBeInTheDocument();
46
- });
47
-
48
- it("would open if the user click the open button", async () => {
49
- renderComponent();
50
-
51
- await userEvent.click(screen.getByText(/open/i));
52
-
53
- expect(screen.getByRole("menu", { hidden: false })).toBeInTheDocument();
54
- });
55
-
56
- it("would close if the user click the close button and the drawer was opened", async () => {
57
- renderComponent({ initialOpen: true });
58
-
59
- await userEvent.click(screen.getByText(/close/i));
60
-
61
- expect(screen.queryByRole("menu", { hidden: true })).not.toBeInTheDocument();
62
- });
63
- });
64
-
65
- describe("DrawerContext", () => {
66
- it("would throw an error if no Provider is defined", () => {
67
- try {
68
- render(
69
- <Box>
70
- <Drawer>
71
- <DummyDrawerContent nav={mockNav} />
72
- </Drawer>
73
- <TestContent />
74
- </Box>,
75
- );
76
- fail("No error has been thrown");
77
- } catch (e) {
78
- expect(e).toStrictEqual(UndefinedProvider);
79
- }
80
- });
81
- });
82
-
83
- describe("mixins", () => {
84
- describe("openedMixin", () => {
85
- it("would match a snapshot", () => {
86
- const theme = createTheme();
87
- expect(openedMixin(theme)).toMatchSnapshot();
88
- });
89
- });
90
-
91
- describe("closedMixin", () => {
92
- it("would match a snapshot", () => {
93
- const theme = createTheme();
94
- expect(closedMixin(theme)).toMatchSnapshot();
95
- });
96
- });
97
- });
@@ -1,30 +0,0 @@
1
- import React from "react";
2
- import { styled } from "@mui/material/styles";
3
- import { Drawer as MuiDrawer, Divider, IconButton } from "@mui/material";
4
- import ChevronLeftIcon from "@mui/icons-material/ChevronLeft";
5
- import { DrawerComponent, DrawerProps } from "./drawer.types";
6
- import { useDrawer } from "./drawer.context";
7
-
8
- const DrawerHeader = styled("div")(({ theme }) => ({
9
- display: "flex",
10
- alignItems: "center",
11
- justifyContent: "flex-end",
12
- padding: theme.spacing(0, 1),
13
- ...theme.mixins.toolbar,
14
- }));
15
-
16
- export const Drawer: DrawerComponent = ({ children, ...rest }: DrawerProps) => {
17
- const { isOpen, close } = useDrawer();
18
-
19
- return (
20
- <MuiDrawer open={isOpen} role="menu" aria-hidden={!isOpen} {...rest}>
21
- <DrawerHeader>
22
- <IconButton onClick={close}>
23
- <ChevronLeftIcon />
24
- </IconButton>
25
- </DrawerHeader>
26
- <Divider />
27
- {children}
28
- </MuiDrawer>
29
- );
30
- };
@@ -1,53 +0,0 @@
1
- import { FunctionComponent, ReactElement } from "react";
2
- import { BulletVariant } from "../bullet";
3
- import { LabelVariant } from "../label";
4
- import { DrawerProps as MuiDrawerProps } from "@mui/material";
5
-
6
- export interface NavItemAvatar {
7
- src: string;
8
- alt: string;
9
- }
10
-
11
- export interface NavItemLabel {
12
- text: string;
13
- variant: LabelVariant;
14
- }
15
-
16
- export interface NavItemBullet {
17
- variant: BulletVariant;
18
- }
19
-
20
- export interface NavItem {
21
- id: string;
22
- text: string;
23
- href: string;
24
- icon?: ReactElement;
25
- avatar?: NavItemAvatar;
26
- label?: NavItemLabel;
27
- bullet?: NavItemBullet;
28
- }
29
-
30
- export interface NavSection {
31
- title?: string;
32
- items: NavItem[];
33
- }
34
-
35
- export interface Nav {
36
- items: NavSection[];
37
- }
38
-
39
- export interface DrawerContentProps {
40
- /**
41
- * Object with the content that has to be rendered
42
- */
43
- nav: Nav;
44
- }
45
- export type DrawerContentComponent = FunctionComponent<DrawerContentProps>;
46
- export type DrawerContentElement = ReactElement<DrawerContentProps, DrawerContentComponent>;
47
-
48
- export interface DrawerProps extends MuiDrawerProps {
49
- children: DrawerContentElement;
50
- }
51
-
52
- export type DrawerComponent = FunctionComponent<DrawerProps>;
53
- export type DrawerElement = ReactElement<DrawerProps, DrawerComponent>;
@@ -1,5 +0,0 @@
1
- export * from "./drawer";
2
- export * from "./drawer.types";
3
- export * from "./mini-drawer";
4
- export * from "./drawer.provider";
5
- export * from "./drawer.context";
@@ -1 +0,0 @@
1
- export * from "./mini-drawer";
@@ -1,34 +0,0 @@
1
- import React from "react";
2
- import { ComponentMeta } from "@storybook/react";
3
- import { withRouter } from "storybook-addon-react-router-v6";
4
- import { MiniDrawer } from "../mini-drawer";
5
- import { mockNav } from "../drawer.mock";
6
- import { DrawerContent } from "../../drawer-content";
7
- import { DrawerProvider } from "../drawer.provider";
8
- import { Nav } from "../drawer.types";
9
-
10
- export default {
11
- title: "Drawers/MiniDrawer",
12
- component: MiniDrawer,
13
- decorators: [withRouter],
14
- parameters: {
15
- layout: "fullscreen",
16
- },
17
- } as ComponentMeta<typeof MiniDrawer>;
18
-
19
- interface Props {
20
- open: boolean;
21
- nav: Nav;
22
- }
23
-
24
- export const Default = ({ nav, open }: Props) => (
25
- <DrawerProvider initialOpen={open}>
26
- <MiniDrawer>
27
- <DrawerContent nav={nav} />
28
- </MiniDrawer>
29
- </DrawerProvider>
30
- );
31
- Default.args = {
32
- nav: mockNav,
33
- open: true,
34
- };
@@ -1,67 +0,0 @@
1
- import { Drawer } from "../drawer";
2
- import { styled } from "@mui/material/styles";
3
- import { drawerWidth, openedMixin, closedMixin } from "../drawer.mixins";
4
- import { useDrawer } from "../drawer.context";
5
- import {
6
- listItemButtonClasses,
7
- listItemIconClasses,
8
- listItemTextClasses,
9
- listSubheaderClasses,
10
- } from "@mui/material";
11
- import { labelClasses } from "../../label";
12
- import { bulletClasses } from "../../bullet";
13
-
14
- export const MiniDrawer = styled(Drawer)(({ theme }) => {
15
- const { isOpen } = useDrawer();
16
-
17
- const hideIfClosed = !isOpen && {
18
- display: "none",
19
- };
20
-
21
- return {
22
- width: drawerWidth,
23
- flexShrink: 0,
24
- whiteSpace: "nowrap",
25
- boxSizing: "border-box",
26
- [`& .${listItemIconClasses.root}`]: {
27
- minWidth: 0,
28
- justifyContent: "center",
29
- ...(isOpen
30
- ? {
31
- marginRight: theme.spacing(3),
32
- }
33
- : {
34
- marginRight: "auto",
35
- }),
36
- },
37
- [`& .${listItemButtonClasses.root}`]: {
38
- minHeight: 48,
39
- paddingHorizontal: theme.spacing(2.5),
40
- ...(isOpen
41
- ? {
42
- justifyContent: "initial",
43
- }
44
- : {
45
- justifyContent: "center",
46
- }),
47
- },
48
- [`& .${labelClasses.root}`]: hideIfClosed,
49
- [`& .${bulletClasses.root}`]: hideIfClosed,
50
- [`& .${listSubheaderClasses.root}`]: hideIfClosed,
51
- [`& .${listItemTextClasses.root}`]: {
52
- opacity: isOpen ? 1 : 0,
53
- },
54
- ...(isOpen && {
55
- ...openedMixin(theme),
56
- "& .MuiDrawer-paper": openedMixin(theme),
57
- }),
58
- ...(!isOpen && {
59
- ...closedMixin(theme),
60
- "& .MuiDrawer-paper": closedMixin(theme),
61
- }),
62
- };
63
- });
64
-
65
- MiniDrawer.defaultProps = {
66
- variant: "permanent",
67
- };
@@ -1,29 +0,0 @@
1
- import React from "react";
2
- import { ComponentMeta } from "@storybook/react";
3
- import { createTemplate } from "../../storybook";
4
- import { DrawerContent } from "./drawer-content";
5
- import { mockNav } from "../drawer/drawer.mock";
6
- import { Box } from "@mui/material";
7
- import { withRouter } from "storybook-addon-react-router-v6";
8
-
9
- export default {
10
- title: "Drawers/DrawerContent",
11
- component: DrawerContent,
12
- decorators: [
13
- withRouter,
14
- (Story) => {
15
- return <Box maxWidth={300}>{<Story />}</Box>;
16
- },
17
- ],
18
- parameters: {
19
- layout: "fullscreen",
20
- },
21
- } as ComponentMeta<typeof DrawerContent>;
22
-
23
- const Template = createTemplate(DrawerContent);
24
-
25
- export const Default = Template.bind({});
26
- Default.args = {
27
- nav: mockNav,
28
- open: true,
29
- };
@@ -1,34 +0,0 @@
1
- import React from "react";
2
- import { render, screen } from "../../tests";
3
- import { mockNav } from "../drawer/drawer.mock";
4
- import { DrawerContent } from "./drawer-content";
5
-
6
- describe("DrawerContent", () => {
7
- const renderComponent = () => {
8
- return render(<DrawerContent nav={mockNav} />);
9
- };
10
-
11
- it.each([[/section 2/i], [/section avatar/i]])(
12
- "would render the title section %s",
13
- (sectionTitle: RegExp) => {
14
- renderComponent();
15
-
16
- expect(screen.getByRole("heading", { name: sectionTitle })).toBeInTheDocument();
17
- },
18
- );
19
-
20
- it.each([
21
- [/item 1.1/i],
22
- [/item 1.2/i],
23
- [/item 1.3/i],
24
- [/item 1.4/i],
25
- [/item 2.1/i],
26
- [/item 2.2/i],
27
- [/avatar 1/i],
28
- [/avatar 2/i],
29
- ])("would render the item %s", (itemText: RegExp) => {
30
- renderComponent();
31
-
32
- expect(screen.getByRole("link", { name: itemText })).toBeInTheDocument();
33
- });
34
- });