@pautena/react-design-system 0.0.1 → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.prettierignore +2 -1
- package/babel.config.js +10 -0
- package/dist/cjs/index.js +28 -28
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/types/components/app-bar/app-bar.types.d.ts +2 -1
- package/dist/cjs/types/components/content/content.d.ts +2 -0
- package/dist/cjs/types/components/content/content.types.d.ts +4 -0
- package/dist/cjs/types/components/content/index.d.ts +2 -0
- package/dist/cjs/types/components/header/header.d.ts +2 -61
- package/dist/cjs/types/components/header/header.types.d.ts +55 -0
- package/dist/cjs/types/components/header/index.d.ts +1 -0
- package/dist/cjs/types/components/index.d.ts +1 -0
- package/dist/cjs/types/components/tab/index.d.ts +0 -1
- package/dist/cjs/types/components/tab/tab-card/tab-card.d.ts +1 -2
- package/dist/cjs/types/components/table-list/table-list.d.ts +4 -7
- package/dist/cjs/types/generators/generators.mock.d.ts +22 -1
- package/dist/cjs/types/generators/generators.model.d.ts +5 -1
- package/dist/cjs/types/generators/model-form/model-form.d.ts +5 -5
- package/dist/cjs/types/generators/model-router/model-router.d.ts +4 -35
- package/dist/cjs/types/generators/model-router/model-router.types.d.ts +8 -0
- package/dist/cjs/types/generators/model-router/screens/add-screen.d.ts +16 -2
- package/dist/cjs/types/generators/model-router/screens/details-screen.d.ts +20 -2
- package/dist/cjs/types/generators/model-router/screens/list-screen.d.ts +30 -2
- package/dist/cjs/types/generators/model-router/screens/screens.types.d.ts +11 -0
- package/dist/cjs/types/generators/model-router/screens/update-screen.d.ts +29 -2
- package/dist/cjs/types/generators/model-router/stories/templates.d.ts +23 -0
- package/dist/cjs/types/generators/object-details/object-details.d.ts +4 -4
- package/dist/cjs/types/layouts/app-bar-with-drawer-layout/app-bar-with-drawer-layout.d.ts +5 -8
- package/dist/cjs/types/layouts/header-layout/header-layout.d.ts +4 -5
- package/dist/cjs/types/layouts/index.d.ts +1 -6
- package/dist/cjs/types/providers/index.d.ts +1 -0
- package/dist/cjs/types/providers/notification-center/index.d.ts +1 -0
- package/dist/cjs/types/providers/tab-provider/index.d.ts +2 -0
- package/dist/cjs/types/providers/tab-provider/tab-provider.context.d.ts +4 -0
- package/dist/cjs/types/providers/tab-provider/tab-provider.provider.d.ts +6 -0
- package/dist/cjs/types/utils/theme.d.ts +7 -4
- package/dist/esm/index.js +28 -28
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/types/components/app-bar/app-bar.types.d.ts +2 -1
- package/dist/esm/types/components/content/content.d.ts +2 -0
- package/dist/esm/types/components/content/content.types.d.ts +4 -0
- package/dist/esm/types/components/content/index.d.ts +2 -0
- package/dist/esm/types/components/header/header.d.ts +2 -61
- package/dist/esm/types/components/header/header.types.d.ts +55 -0
- package/dist/esm/types/components/header/index.d.ts +1 -0
- package/dist/esm/types/components/index.d.ts +1 -0
- package/dist/esm/types/components/tab/index.d.ts +0 -1
- package/dist/esm/types/components/tab/tab-card/tab-card.d.ts +1 -2
- package/dist/esm/types/components/table-list/table-list.d.ts +4 -7
- package/dist/esm/types/generators/generators.mock.d.ts +22 -1
- package/dist/esm/types/generators/generators.model.d.ts +5 -1
- package/dist/esm/types/generators/model-form/model-form.d.ts +5 -5
- package/dist/esm/types/generators/model-router/model-router.d.ts +4 -35
- package/dist/esm/types/generators/model-router/model-router.types.d.ts +8 -0
- package/dist/esm/types/generators/model-router/screens/add-screen.d.ts +16 -2
- package/dist/esm/types/generators/model-router/screens/details-screen.d.ts +20 -2
- package/dist/esm/types/generators/model-router/screens/list-screen.d.ts +30 -2
- package/dist/esm/types/generators/model-router/screens/screens.types.d.ts +11 -0
- package/dist/esm/types/generators/model-router/screens/update-screen.d.ts +29 -2
- package/dist/esm/types/generators/model-router/stories/templates.d.ts +23 -0
- package/dist/esm/types/generators/object-details/object-details.d.ts +4 -4
- package/dist/esm/types/layouts/app-bar-with-drawer-layout/app-bar-with-drawer-layout.d.ts +5 -8
- package/dist/esm/types/layouts/header-layout/header-layout.d.ts +4 -5
- package/dist/esm/types/layouts/index.d.ts +1 -6
- package/dist/esm/types/providers/index.d.ts +1 -0
- package/dist/esm/types/providers/notification-center/index.d.ts +1 -0
- package/dist/esm/types/providers/tab-provider/index.d.ts +2 -0
- package/dist/esm/types/providers/tab-provider/tab-provider.context.d.ts +4 -0
- package/dist/esm/types/providers/tab-provider/tab-provider.provider.d.ts +6 -0
- package/dist/esm/types/utils/theme.d.ts +7 -4
- package/dist/index.d.ts +146 -122
- package/jest.config.js +3 -0
- package/package.json +3 -1
- package/rollup.config.js +12 -0
- package/src/components/app-bar/app-bar.types.ts +2 -1
- package/src/components/content/content.stories.tsx +23 -0
- package/src/components/content/content.test.tsx +26 -0
- package/src/components/content/content.tsx +11 -0
- package/src/components/content/content.types.ts +5 -0
- package/src/components/content/index.ts +2 -0
- package/src/components/drawer-item/drawer-item.tsx +2 -0
- package/src/components/header/header.test.tsx +18 -16
- package/src/components/header/header.tsx +5 -69
- package/src/components/header/header.types.ts +61 -0
- package/src/components/header/index.ts +1 -0
- package/src/components/index.ts +1 -0
- package/src/components/tab/index.ts +0 -1
- package/src/components/tab/tab-card/tab-card.dummy.tsx +14 -11
- package/src/components/tab/tab-card/tab-card.test.tsx +2 -2
- package/src/components/tab/tab-card/tab-card.tsx +11 -14
- package/src/components/tab/tab-panel/tab-panel.test.tsx +4 -4
- package/src/components/tab/tab-panel/tab-panel.tsx +2 -2
- package/src/components/table/enhanced-table/enhanced-table.tsx +2 -2
- package/src/components/table-list/table-list.test.tsx +3 -2
- package/src/components/table-list/table-list.tsx +4 -8
- package/src/components/value-displays/group-value-card/group-value-card.tsx +2 -4
- package/src/generators/generators.mock.ts +25 -2
- package/src/generators/generators.model.ts +6 -1
- package/src/generators/model-form/model-form.test.tsx +5 -3
- package/src/generators/model-form/model-form.tsx +15 -15
- package/src/generators/model-router/model-router.test.tsx +72 -39
- package/src/generators/model-router/model-router.tsx +16 -41
- package/src/generators/model-router/model-router.types.ts +14 -0
- package/src/generators/model-router/screens/add-screen.tsx +53 -36
- package/src/generators/model-router/screens/details-screen.tsx +52 -43
- package/src/generators/model-router/screens/list-screen.tsx +89 -60
- package/src/generators/model-router/screens/screens.types.ts +13 -0
- package/src/generators/model-router/screens/update-screen.tsx +76 -42
- package/src/generators/model-router/stories/details-screen.stories.tsx +38 -0
- package/src/generators/model-router/stories/list-screen.stories.tsx +45 -0
- package/src/generators/model-router/stories/model-router.stories.tsx +164 -0
- package/src/generators/model-router/stories/templates.tsx +39 -0
- package/src/generators/object-details/object-details.tsx +18 -12
- package/src/layouts/app-bar-with-drawer-layout/app-bar-with-drawer-layout.stories.tsx +7 -8
- package/src/layouts/app-bar-with-drawer-layout/app-bar-with-drawer-layout.test.tsx +30 -0
- package/src/layouts/app-bar-with-drawer-layout/app-bar-with-drawer-layout.tsx +10 -7
- package/src/layouts/header-layout/header-layout.stories.tsx +158 -22
- package/src/layouts/header-layout/header-layout.test.tsx +37 -0
- package/src/layouts/header-layout/header-layout.tsx +12 -13
- package/src/layouts/index.ts +1 -6
- package/src/providers/index.ts +1 -0
- package/src/providers/notification-center/index.ts +1 -0
- package/src/providers/tab-provider/index.ts +2 -0
- package/src/providers/tab-provider/tab-provider.context.ts +8 -0
- package/src/providers/tab-provider/tab-provider.provider.tsx +13 -0
- package/src/storybook.tsx +41 -7
- package/src/tests/assertions.ts +4 -0
- package/src/tests/components.tsx +1 -1
- package/src/utils/theme.ts +7 -2
- package/tsconfig.json +8 -10
- package/tsconfig.rollup.json +2 -0
- package/dist/cjs/types/components/tab/tab.context.d.ts +0 -4
- package/dist/cjs/types/layouts/data-table-layout/data-table-layout.d.ts +0 -12
- package/dist/cjs/types/layouts/data-table-layout/index.d.ts +0 -1
- package/dist/cjs/types/layouts/details-layout/details-layout.d.ts +0 -12
- package/dist/cjs/types/layouts/details-layout/index.d.ts +0 -1
- package/dist/cjs/types/layouts/form-layout/form-layout.d.ts +0 -8
- package/dist/cjs/types/layouts/form-layout/index.d.ts +0 -1
- package/dist/cjs/types/layouts/list-layout/index.d.ts +0 -1
- package/dist/cjs/types/layouts/list-layout/list-layout.d.ts +0 -8
- package/dist/cjs/types/layouts/tab-layout/index.d.ts +0 -1
- package/dist/cjs/types/layouts/tab-layout/tab-layout.d.ts +0 -7
- package/dist/esm/types/components/tab/tab.context.d.ts +0 -4
- package/dist/esm/types/layouts/data-table-layout/data-table-layout.d.ts +0 -12
- package/dist/esm/types/layouts/data-table-layout/index.d.ts +0 -1
- package/dist/esm/types/layouts/details-layout/details-layout.d.ts +0 -12
- package/dist/esm/types/layouts/details-layout/index.d.ts +0 -1
- package/dist/esm/types/layouts/form-layout/form-layout.d.ts +0 -8
- package/dist/esm/types/layouts/form-layout/index.d.ts +0 -1
- package/dist/esm/types/layouts/list-layout/index.d.ts +0 -1
- package/dist/esm/types/layouts/list-layout/list-layout.d.ts +0 -8
- package/dist/esm/types/layouts/tab-layout/index.d.ts +0 -1
- package/dist/esm/types/layouts/tab-layout/tab-layout.d.ts +0 -7
- package/src/components/tab/tab.context.ts +0 -5
- package/src/generators/model-router/model-router.stories.tsx +0 -160
- package/src/layouts/data-table-layout/data-table-layout.stories.tsx +0 -94
- package/src/layouts/data-table-layout/data-table-layout.tsx +0 -30
- package/src/layouts/data-table-layout/index.ts +0 -1
- package/src/layouts/details-layout/details-layout.stories.tsx +0 -81
- package/src/layouts/details-layout/details-layout.tsx +0 -33
- package/src/layouts/details-layout/index.ts +0 -1
- package/src/layouts/form-layout/form-layout.stories.tsx +0 -65
- package/src/layouts/form-layout/form-layout.tsx +0 -18
- package/src/layouts/form-layout/index.ts +0 -1
- package/src/layouts/list-layout/index.ts +0 -1
- package/src/layouts/list-layout/list-layout.stories.tsx +0 -102
- package/src/layouts/list-layout/list-layout.tsx +0 -36
- package/src/layouts/tab-layout/index.ts +0 -1
- package/src/layouts/tab-layout/tab-layout.stories.tsx +0 -88
- package/src/layouts/tab-layout/tab-layout.tsx +0 -11
package/dist/index.d.ts
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
2
|
import * as _mui_material from '@mui/material';
|
|
3
|
-
import { PropTypes, LinkProps as LinkProps$1, AppBarProps as AppBarProps$1, DrawerProps as DrawerProps$1, SxProps, Theme, GridProps } from '@mui/material';
|
|
4
|
-
import * as _mui_material_OverridableComponent from '@mui/material/OverridableComponent';
|
|
3
|
+
import { PropTypes, LinkProps as LinkProps$1, AppBarProps as AppBarProps$1, DrawerProps as DrawerProps$1, SxProps, Theme, GridProps, Color } from '@mui/material';
|
|
5
4
|
import * as React from 'react';
|
|
6
|
-
import React__default, {
|
|
5
|
+
import React__default, { FunctionComponent, ReactElement, PropsWithChildren, ReactNode } from 'react';
|
|
6
|
+
import * as _mui_material_OverridableComponent from '@mui/material/OverridableComponent';
|
|
7
7
|
import { LinkProps } from 'react-router-dom';
|
|
8
8
|
import * as _emotion_styled from '@emotion/styled';
|
|
9
9
|
import * as _mui_system from '@mui/system';
|
|
10
|
-
import {
|
|
10
|
+
import { BasicModelInstance as BasicModelInstance$1 } from '~/generators';
|
|
11
11
|
|
|
12
12
|
declare type HeaderPreset = PropTypes.Color | "transparent";
|
|
13
13
|
declare type HeaderActionVariant = "text" | "outlined" | "contained";
|
|
@@ -40,7 +40,7 @@ declare type HeaderProps = {
|
|
|
40
40
|
/**
|
|
41
41
|
* Color palete used to render the component
|
|
42
42
|
*/
|
|
43
|
-
preset
|
|
43
|
+
preset?: HeaderPreset;
|
|
44
44
|
/**
|
|
45
45
|
* List of breadcumbs to represent the path to reach
|
|
46
46
|
* the page that we are
|
|
@@ -59,20 +59,15 @@ declare type HeaderProps = {
|
|
|
59
59
|
* If is set, a list of tabs is dispayed at the bottom
|
|
60
60
|
*/
|
|
61
61
|
tabs?: HeaderTab[];
|
|
62
|
-
/**
|
|
63
|
-
* Tab that has to be marked as selected
|
|
64
|
-
*/
|
|
65
|
-
selectedTab?: number;
|
|
66
|
-
/**
|
|
67
|
-
* Callback executed when the user click a tab
|
|
68
|
-
*/
|
|
69
|
-
onChangeTab?: (tab: HeaderTab, index: number) => void;
|
|
70
62
|
};
|
|
63
|
+
declare type HeaderComponent = FunctionComponent<HeaderProps>;
|
|
64
|
+
declare type HeaderElement = ReactElement<HeaderProps, HeaderComponent>;
|
|
65
|
+
|
|
71
66
|
/**
|
|
72
67
|
* Section used to explain give basic information about the page
|
|
73
68
|
* and put the main actions
|
|
74
69
|
*/
|
|
75
|
-
declare const Header:
|
|
70
|
+
declare const Header: HeaderComponent;
|
|
76
71
|
|
|
77
72
|
declare const LinkBehaviour: React__default.ForwardRefExoticComponent<Omit<LinkProps, "to"> & {
|
|
78
73
|
href: LinkProps["to"];
|
|
@@ -118,14 +113,14 @@ declare type QueryContainerProps = PropsWithChildren<{
|
|
|
118
113
|
*/
|
|
119
114
|
declare function QueryContainer({ isFetching, error, success, children }: QueryContainerProps): JSX.Element;
|
|
120
115
|
|
|
121
|
-
interface Props$
|
|
116
|
+
interface Props$5 {
|
|
122
117
|
title: string;
|
|
123
118
|
subtitle: string;
|
|
124
119
|
error?: Error;
|
|
125
120
|
loading?: boolean;
|
|
126
121
|
onSubmitSignIn: (email: string, password: string) => void;
|
|
127
122
|
}
|
|
128
|
-
declare function SignIn({ title, subtitle, loading, error, onSubmitSignIn }: Props$
|
|
123
|
+
declare function SignIn({ title, subtitle, loading, error, onSubmitSignIn }: Props$5): JSX.Element;
|
|
129
124
|
|
|
130
125
|
interface TabPanelProps {
|
|
131
126
|
children?: React__default.ReactNode;
|
|
@@ -133,15 +128,10 @@ interface TabPanelProps {
|
|
|
133
128
|
}
|
|
134
129
|
declare function TabPanel({ children, index }: TabPanelProps): JSX.Element;
|
|
135
130
|
|
|
136
|
-
interface Props$
|
|
131
|
+
interface Props$4 {
|
|
137
132
|
tabs: string[];
|
|
138
|
-
initialTab?: number;
|
|
139
133
|
}
|
|
140
|
-
declare const TabCard: ({ children, tabs
|
|
141
|
-
|
|
142
|
-
declare const TabContext: React.Context<number>;
|
|
143
|
-
declare const TabContextProvider: React.Provider<number>;
|
|
144
|
-
declare const useTab: () => number;
|
|
134
|
+
declare const TabCard: ({ children, tabs }: PropsWithChildren<Props$4>) => JSX.Element;
|
|
145
135
|
|
|
146
136
|
declare type Order = "asc" | "desc";
|
|
147
137
|
interface HeadCell {
|
|
@@ -151,15 +141,15 @@ interface HeadCell {
|
|
|
151
141
|
numeric: boolean;
|
|
152
142
|
sort: boolean;
|
|
153
143
|
}
|
|
154
|
-
interface Props$
|
|
144
|
+
interface Props$3 {
|
|
155
145
|
onRequestSort: (property: string) => void;
|
|
156
146
|
order: Order;
|
|
157
147
|
orderBy: string;
|
|
158
148
|
headCells: HeadCell[];
|
|
159
149
|
}
|
|
160
|
-
declare function EnhancedTableHead({ order, orderBy, headCells, onRequestSort }: Props$
|
|
150
|
+
declare function EnhancedTableHead({ order, orderBy, headCells, onRequestSort }: Props$3): JSX.Element;
|
|
161
151
|
|
|
162
|
-
interface Props$
|
|
152
|
+
interface Props$2<T> {
|
|
163
153
|
readonly data: T[];
|
|
164
154
|
search?: boolean;
|
|
165
155
|
defaultSort: string;
|
|
@@ -169,13 +159,13 @@ interface Props$6<T> {
|
|
|
169
159
|
children: (data: T[]) => ReactNode;
|
|
170
160
|
}
|
|
171
161
|
declare const EnhancedTable: {
|
|
172
|
-
<T>({ children, data, search, columns, defaultSort, defaultOrder, loading, }: Props$
|
|
162
|
+
<T>({ children, data, search, columns, defaultSort, defaultOrder, loading, }: Props$2<T>): JSX.Element;
|
|
173
163
|
defaultProps: {
|
|
174
164
|
defaultOrder: string;
|
|
175
165
|
};
|
|
176
166
|
};
|
|
177
167
|
|
|
178
|
-
interface Props$
|
|
168
|
+
interface Props$1<T> {
|
|
179
169
|
data: T[];
|
|
180
170
|
loading: boolean;
|
|
181
171
|
defaultSort: string;
|
|
@@ -184,7 +174,7 @@ interface Props$5<T> {
|
|
|
184
174
|
children: (data: T, index: number) => ReactNode;
|
|
185
175
|
onRequestSort: (col: string, orderBy: "asc" | "desc") => void;
|
|
186
176
|
}
|
|
187
|
-
declare const EnhancedRemoteTable: <T>({ children, data, loading, columns, defaultSort, defaultOrder, onRequestSort, }: Props$
|
|
177
|
+
declare const EnhancedRemoteTable: <T>({ children, data, loading, columns, defaultSort, defaultOrder, onRequestSort, }: Props$1<T>) => JSX.Element;
|
|
188
178
|
|
|
189
179
|
interface AppBarProfile {
|
|
190
180
|
name: string;
|
|
@@ -197,6 +187,7 @@ interface AppBarProps extends AppBarProps$1 {
|
|
|
197
187
|
onClickSignOut: () => void;
|
|
198
188
|
}
|
|
199
189
|
declare type AppBarComponent = FunctionComponent<AppBarProps>;
|
|
190
|
+
declare type AppBarElement = ReactElement<AppBarProps, AppBarComponent>;
|
|
200
191
|
|
|
201
192
|
declare const MiniAppBar: AppBarComponent;
|
|
202
193
|
|
|
@@ -279,10 +270,10 @@ declare const Drawer: DrawerComponent;
|
|
|
279
270
|
|
|
280
271
|
declare const MiniDrawer: _emotion_styled.StyledComponent<DrawerProps & _mui_system.MUIStyledCommonProps<_mui_material.Theme>, {}, {}>;
|
|
281
272
|
|
|
282
|
-
declare type Props
|
|
273
|
+
declare type Props = PropsWithChildren<{
|
|
283
274
|
initialOpen?: boolean;
|
|
284
275
|
}>;
|
|
285
|
-
declare const DrawerProvider: ({ children, initialOpen }: Props
|
|
276
|
+
declare const DrawerProvider: ({ children, initialOpen }: Props) => JSX.Element;
|
|
286
277
|
|
|
287
278
|
interface DrawerContextProps {
|
|
288
279
|
isOpen: boolean;
|
|
@@ -293,16 +284,12 @@ declare const DrawerContext: React.Context<DrawerContextProps | undefined>;
|
|
|
293
284
|
declare const UndefinedProvider: Error;
|
|
294
285
|
declare const useDrawer: () => DrawerContextProps;
|
|
295
286
|
|
|
296
|
-
interface
|
|
297
|
-
id: string;
|
|
298
|
-
[key: string]: any;
|
|
299
|
-
}
|
|
300
|
-
interface TableRowOption<T extends BasicData> {
|
|
287
|
+
interface TableRowOption<T extends BasicModelInstance$1> {
|
|
301
288
|
id: string;
|
|
302
289
|
label: string;
|
|
303
290
|
onClick: (item: T) => void;
|
|
304
291
|
}
|
|
305
|
-
interface TableListProps<T extends
|
|
292
|
+
interface TableListProps<T extends BasicModelInstance$1> {
|
|
306
293
|
columns: HeadCell[];
|
|
307
294
|
data: T[];
|
|
308
295
|
search?: boolean;
|
|
@@ -312,7 +299,7 @@ interface TableListProps<T extends BasicData> {
|
|
|
312
299
|
options?: TableRowOption<T>[];
|
|
313
300
|
onClick?: (d: T) => void;
|
|
314
301
|
}
|
|
315
|
-
declare const TableList: <T extends
|
|
302
|
+
declare const TableList: <T extends BasicModelInstance$1>({ columns: columnsProp, options, data, onClick, search, defaultSort, defaultOrder, loading, }: TableListProps<T>) => JSX.Element;
|
|
316
303
|
|
|
317
304
|
declare type IconColor = "inherit" | "action" | "disabled" | "primary" | "secondary" | "error" | "info" | "success" | "warning";
|
|
318
305
|
interface PlaceholderAction {
|
|
@@ -445,51 +432,33 @@ interface GroupValueCardProps {
|
|
|
445
432
|
}
|
|
446
433
|
declare const GroupValueCard: ({ title, subtitle, children }: GroupValueCardProps) => JSX.Element;
|
|
447
434
|
|
|
435
|
+
declare type ContentProps = PropsWithChildren;
|
|
436
|
+
declare type ContentComponent = FunctionComponent<ContentProps>;
|
|
437
|
+
declare type ContentElement = ReactElement<ContentElement, ContentComponent>;
|
|
438
|
+
|
|
439
|
+
declare const Content: ({ children }: ContentProps) => JSX.Element;
|
|
440
|
+
|
|
448
441
|
declare const newArrayWithSize: <T>(size: number, fillValue: T) => any[];
|
|
449
442
|
declare const getRandomItem: <T>(items: T[]) => {
|
|
450
443
|
index: number;
|
|
451
444
|
item: T;
|
|
452
445
|
};
|
|
453
446
|
|
|
454
|
-
declare const useGetDefaultThemeColor: ({ lightWeight, darkWeight }?: {
|
|
455
|
-
lightWeight?:
|
|
456
|
-
darkWeight?:
|
|
457
|
-
}) =>
|
|
458
|
-
|
|
459
|
-
interface Props$3 {
|
|
460
|
-
loading?: boolean;
|
|
461
|
-
headerProps: HeaderProps;
|
|
462
|
-
emptyPlaceholderProps: PlaceholderProps;
|
|
463
|
-
dataGridProps: DataGridProps & {
|
|
464
|
-
height: number;
|
|
465
|
-
};
|
|
466
|
-
}
|
|
467
|
-
declare const DataTableLayout: ({ loading, headerProps, emptyPlaceholderProps, dataGridProps: { height, rows, ...restDataGridProps }, }: Props$3) => JSX.Element;
|
|
468
|
-
|
|
469
|
-
interface Props$2 {
|
|
470
|
-
loading?: boolean;
|
|
471
|
-
headerProps: HeaderProps;
|
|
472
|
-
}
|
|
473
|
-
declare const HeaderLayout: ({ loading, headerProps, children }: PropsWithChildren<Props$2>) => JSX.Element;
|
|
447
|
+
declare const useGetDefaultThemeColor: ({ lightWeight, darkWeight, }?: {
|
|
448
|
+
lightWeight?: keyof Color | undefined;
|
|
449
|
+
darkWeight?: keyof Color | undefined;
|
|
450
|
+
}) => string;
|
|
474
451
|
|
|
475
|
-
interface
|
|
476
|
-
|
|
452
|
+
interface AppBarWithDrawerLayoutProps {
|
|
453
|
+
children: [DrawerElement, AppBarElement, ReactNode];
|
|
477
454
|
}
|
|
478
|
-
declare const
|
|
455
|
+
declare const AppBarWithDrawerLayout: ({ children: childrenProps, }: AppBarWithDrawerLayoutProps) => JSX.Element;
|
|
479
456
|
|
|
480
|
-
interface
|
|
457
|
+
interface HeaderLayoutProps {
|
|
481
458
|
loading?: boolean;
|
|
482
|
-
|
|
483
|
-
listProps: TableListProps<T>;
|
|
484
|
-
emptyPlaceholderProps: PlaceholderProps;
|
|
459
|
+
children: [HeaderElement, ContentElement];
|
|
485
460
|
}
|
|
486
|
-
declare const
|
|
487
|
-
|
|
488
|
-
interface Props {
|
|
489
|
-
drawer: DrawerElement;
|
|
490
|
-
appBar: ReactElement<AppBarProps$1, AppBarComponent>;
|
|
491
|
-
}
|
|
492
|
-
declare const AppBarWithDrawerLayout: ({ drawer, appBar, children }: PropsWithChildren<Props>) => JSX.Element;
|
|
461
|
+
declare const HeaderLayout: ({ loading, children }: HeaderLayoutProps) => JSX.Element;
|
|
493
462
|
|
|
494
463
|
declare type Base = {
|
|
495
464
|
id: string;
|
|
@@ -517,18 +486,22 @@ declare type SingleFields = StringField | NumberField | BooleanField;
|
|
|
517
486
|
declare type GroupField = {
|
|
518
487
|
type: "group";
|
|
519
488
|
value: (Base & Breakpoints & SingleFields)[];
|
|
520
|
-
};
|
|
489
|
+
} & Base;
|
|
521
490
|
declare type Fields = SingleFields | GroupField;
|
|
522
491
|
declare type ModelField = Base & Breakpoints & Fields;
|
|
523
492
|
declare type Model = {
|
|
524
493
|
fields: ModelField[];
|
|
525
494
|
};
|
|
495
|
+
interface BasicModelInstance {
|
|
496
|
+
id: string;
|
|
497
|
+
[key: string]: any;
|
|
498
|
+
}
|
|
526
499
|
|
|
527
|
-
interface ObjectDetailsProps {
|
|
500
|
+
interface ObjectDetailsProps<T extends BasicModelInstance> {
|
|
528
501
|
model: Model;
|
|
529
|
-
instance:
|
|
502
|
+
instance: T;
|
|
530
503
|
}
|
|
531
|
-
declare const ObjectDetails: ({ model, instance }: ObjectDetailsProps) => JSX.Element;
|
|
504
|
+
declare const ObjectDetails: <T extends BasicModelInstance>({ model, instance, }: ObjectDetailsProps<T>) => JSX.Element;
|
|
532
505
|
|
|
533
506
|
interface RequestState {
|
|
534
507
|
idle?: boolean;
|
|
@@ -536,59 +509,110 @@ interface RequestState {
|
|
|
536
509
|
error?: string;
|
|
537
510
|
success?: boolean;
|
|
538
511
|
}
|
|
539
|
-
|
|
512
|
+
|
|
513
|
+
interface BaseScreenProps {
|
|
514
|
+
/**
|
|
515
|
+
* UI-friendly string that represents the model
|
|
516
|
+
*/
|
|
540
517
|
modelName: string;
|
|
518
|
+
/**
|
|
519
|
+
* Structure that represents the fields of the model
|
|
520
|
+
*/
|
|
541
521
|
model: Model;
|
|
542
|
-
requestList?: () => void;
|
|
543
|
-
list: {
|
|
544
|
-
data: any[];
|
|
545
|
-
onClickRemoveItem: (item: any) => void;
|
|
546
|
-
listRequest: RequestState;
|
|
547
|
-
requestDelete: RequestState;
|
|
548
|
-
};
|
|
549
|
-
add: {
|
|
550
|
-
onSubmit: (obj: object) => void;
|
|
551
|
-
request: RequestState;
|
|
552
|
-
};
|
|
553
|
-
detail: {
|
|
554
|
-
onScreenMount?: (id: string) => void;
|
|
555
|
-
request: RequestState;
|
|
556
|
-
instance?: any;
|
|
557
|
-
};
|
|
558
|
-
update: {
|
|
559
|
-
onSubmit: (obj: object) => void;
|
|
560
|
-
request: RequestState;
|
|
561
|
-
requestInstance: RequestState;
|
|
562
|
-
onRequestInstance: (id: string) => void;
|
|
563
|
-
instance?: any;
|
|
564
|
-
};
|
|
565
522
|
}
|
|
566
|
-
declare const ModelRouter: (props: ModelRouterProps) => JSX.Element;
|
|
567
523
|
|
|
568
|
-
interface
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
524
|
+
interface UpdateScreenProps<T extends BasicModelInstance$1> extends BaseScreenProps {
|
|
525
|
+
/**
|
|
526
|
+
* Callback executed when the user wants to update
|
|
527
|
+
* an item
|
|
528
|
+
*/
|
|
529
|
+
onSubmitUpdateItem: (obj: T) => void;
|
|
530
|
+
/**
|
|
531
|
+
* Current status of the request to update an item
|
|
532
|
+
*/
|
|
533
|
+
submitUpdateItemRequest: RequestState;
|
|
534
|
+
/**
|
|
535
|
+
* Current status of the request to retrieve
|
|
536
|
+
* the item to be updated
|
|
537
|
+
*/
|
|
538
|
+
updateItemRequest: RequestState;
|
|
539
|
+
/**
|
|
540
|
+
* Callback executed to retrive the item that
|
|
541
|
+
* has to going tobe updated
|
|
542
|
+
*/
|
|
543
|
+
onRequestUpdateItem: (id: string) => void;
|
|
544
|
+
/**
|
|
545
|
+
* Item that is going to be updated
|
|
546
|
+
*/
|
|
547
|
+
updateItem?: T;
|
|
573
548
|
}
|
|
574
|
-
declare const ModelForm: ({ model, saveButtonText, onSubmit, initialValues, }: ModelFormProps) => JSX.Element;
|
|
575
549
|
|
|
576
|
-
interface
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
550
|
+
interface ListScreenProps<T extends BasicModelInstance$1> extends BaseScreenProps {
|
|
551
|
+
/**
|
|
552
|
+
* Callback executed each time the list screen
|
|
553
|
+
* requests for a data update
|
|
554
|
+
*/
|
|
555
|
+
onRequestList: () => void;
|
|
556
|
+
/**
|
|
557
|
+
* List of items to be displayed in the list screen
|
|
558
|
+
*/
|
|
559
|
+
listData: T[];
|
|
560
|
+
/**
|
|
561
|
+
* Callback executed when the user clicks an option
|
|
562
|
+
* to delete an item
|
|
563
|
+
*/
|
|
564
|
+
onClickDeleteItem: (item: T) => void;
|
|
565
|
+
/**
|
|
566
|
+
* Current status of the request to retrieve
|
|
567
|
+
* the list items
|
|
568
|
+
*/
|
|
569
|
+
listRequest: RequestState;
|
|
570
|
+
/**
|
|
571
|
+
* Current status of the request to delete
|
|
572
|
+
* an item
|
|
573
|
+
*/
|
|
574
|
+
deleteRequest: RequestState;
|
|
584
575
|
}
|
|
585
|
-
declare const DetailsLayout: ({ loading, headerProps, notFoundPlaceholderProps, objectDetailsProps: { model, instance }, }: DetailsLayoutProps) => JSX.Element;
|
|
586
576
|
|
|
587
|
-
interface
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
577
|
+
interface AddScreenProps<T extends BasicModelInstance$1> extends BaseScreenProps {
|
|
578
|
+
/**
|
|
579
|
+
* Callback executed when the user wants to
|
|
580
|
+
* add a new item
|
|
581
|
+
*/
|
|
582
|
+
onSubmitNewItem: (obj: T) => void;
|
|
583
|
+
/**
|
|
584
|
+
* Current status of the request to retrieve
|
|
585
|
+
* add a new item
|
|
586
|
+
*/
|
|
587
|
+
newItemRequest: RequestState;
|
|
588
|
+
}
|
|
589
|
+
|
|
590
|
+
interface DetailsScreenProps<T extends BasicModelInstance$1> extends BaseScreenProps {
|
|
591
|
+
/**
|
|
592
|
+
* Callback executed each time we want
|
|
593
|
+
* the details information of an item
|
|
594
|
+
*/
|
|
595
|
+
onRequestItem: (id: string) => void;
|
|
596
|
+
/**
|
|
597
|
+
* Current status of the request to retrieve
|
|
598
|
+
* an item
|
|
599
|
+
*/
|
|
600
|
+
itemRequest: RequestState;
|
|
601
|
+
/**
|
|
602
|
+
* Item to be displayed
|
|
603
|
+
*/
|
|
604
|
+
detailsItem?: T;
|
|
605
|
+
}
|
|
606
|
+
|
|
607
|
+
declare type ModelRouterProps<T extends BasicModelInstance> = DetailsScreenProps<T> & ListScreenProps<T> & AddScreenProps<T> & UpdateScreenProps<T>;
|
|
608
|
+
declare const ModelRouter: <T extends BasicModelInstance>(props: ModelRouterProps<T>) => JSX.Element;
|
|
609
|
+
|
|
610
|
+
interface ModelFormProps<T extends BasicModelInstance> {
|
|
611
|
+
model: Model;
|
|
612
|
+
initialValues?: T;
|
|
613
|
+
saveButtonText: string;
|
|
614
|
+
onSubmit: (values: T) => void;
|
|
591
615
|
}
|
|
592
|
-
declare const
|
|
616
|
+
declare const ModelForm: <T extends BasicModelInstance>({ model, saveButtonText, onSubmit, initialValues, }: ModelFormProps<T>) => JSX.Element;
|
|
593
617
|
|
|
594
|
-
export { AppBarComponent, AppBarProfile, AppBarProps, AppBarWithDrawerLayout,
|
|
618
|
+
export { AppBarComponent, AppBarElement, AppBarProfile, AppBarProps, AppBarWithDrawerLayout, AppBarWithDrawerLayoutProps, BasicModelInstance, Bullet, BulletProps, BulletVariant, CenterContainer, CenterContainerProps, Content, ContentComponent, ContentElement, ContentProps, Drawer, DrawerComponent, DrawerContent, DrawerContentComponent, DrawerContentElement, DrawerContentProps, DrawerContext, DrawerContextProps, DrawerElement, DrawerItem, DrawerItemProps, DrawerProps, DrawerProvider, DrawerSection, DrawerSectionProps, EnhancedRemoteTable, EnhancedTable, EnhancedTableHead, GroupField, GroupValueCard, GroupValueCardProps, GroupValueItem, GroupValueItemComponent, GroupValueItemElement, GroupValueItemProps, HeadCell, Header, HeaderAction, HeaderActionVariant, HeaderBreadcrumb, HeaderComponent, HeaderElement, HeaderLayout, HeaderPreset, HeaderProps, HeaderTab, Label, LabelProps, LabelVariant, Link, LinkBehaviour, MiniAppBar, MiniDrawer, Model, ModelField, ModelForm, ModelFormProps, ModelRouter, ModelRouterProps, Nav, NavItem, NavItemAvatar, NavItemBullet, NavItemLabel, NavSection, ObjectDetails, ObjectDetailsProps, Order, Placeholder, PlaceholderAction, PlaceholderIconArgs, PlaceholderProps, QueryContainer, QueryContainerError, QueryContainerProps, QueryContainerSuccess, SignIn, TabCard, TabPanel, TableList, TableListProps, TableRowOption, UndefinedProvider, ValueBoolean, ValueBooleanProps, ValueCard, ValueCardProps, ValueText, ValueTextProps, bulletClasses, getRandomItem, groupValueItemClasses, labelClasses, newArrayWithSize, useDrawer, useGetDefaultThemeColor };
|
package/jest.config.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pautena/react-design-system",
|
|
3
|
-
"version": "0.0
|
|
3
|
+
"version": "0.1.0",
|
|
4
4
|
"description": "My custom design system on top of MUI",
|
|
5
5
|
"main": "dist/cjs/index.js",
|
|
6
6
|
"module": "dist/esm/index.js",
|
|
@@ -44,6 +44,7 @@
|
|
|
44
44
|
"@babel/preset-react": "^7.18.6",
|
|
45
45
|
"@faker-js/faker": "^7.3.0",
|
|
46
46
|
"@mui/x-data-grid-generator": "^5.13.0",
|
|
47
|
+
"@rollup/plugin-alias": "^3.1.9",
|
|
47
48
|
"@rollup/plugin-commonjs": "^22.0.1",
|
|
48
49
|
"@rollup/plugin-node-resolve": "^13.3.0",
|
|
49
50
|
"@rollup/plugin-typescript": "^8.3.3",
|
|
@@ -66,6 +67,7 @@
|
|
|
66
67
|
"@typescript-eslint/parser": "^5.30.6",
|
|
67
68
|
"babel-jest": "^28.1.3",
|
|
68
69
|
"babel-loader": "^8.2.5",
|
|
70
|
+
"babel-plugin-module-resolver": "^4.1.0",
|
|
69
71
|
"eslint": "^8.19.0",
|
|
70
72
|
"eslint-config-prettier": "^8.5.0",
|
|
71
73
|
"eslint-plugin-prettier": "^4.2.1",
|
package/rollup.config.js
CHANGED
|
@@ -1,11 +1,15 @@
|
|
|
1
1
|
import resolve from "@rollup/plugin-node-resolve";
|
|
2
2
|
import commonjs from "@rollup/plugin-commonjs";
|
|
3
3
|
import typescript from "@rollup/plugin-typescript";
|
|
4
|
+
import alias from "@rollup/plugin-alias";
|
|
4
5
|
import dts from "rollup-plugin-dts";
|
|
6
|
+
import path from "path";
|
|
5
7
|
import { terser } from "rollup-plugin-terser";
|
|
6
8
|
import peerDepsExternal from "rollup-plugin-peer-deps-external";
|
|
7
9
|
import packageJson from "./package.json";
|
|
8
10
|
|
|
11
|
+
const projectRootDir = path.resolve(__dirname);
|
|
12
|
+
|
|
9
13
|
export default [
|
|
10
14
|
{
|
|
11
15
|
input: "src/index.ts",
|
|
@@ -29,6 +33,14 @@ export default [
|
|
|
29
33
|
tsconfig: "./tsconfig.rollup.json",
|
|
30
34
|
}),
|
|
31
35
|
terser(),
|
|
36
|
+
alias({
|
|
37
|
+
entries: [
|
|
38
|
+
{
|
|
39
|
+
find: "~",
|
|
40
|
+
replacement: path.resolve(projectRootDir, "src"),
|
|
41
|
+
},
|
|
42
|
+
],
|
|
43
|
+
}),
|
|
32
44
|
],
|
|
33
45
|
external: ["react", "react-dom"],
|
|
34
46
|
},
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { FunctionComponent } from "react";
|
|
1
|
+
import { FunctionComponent, ReactElement } from "react";
|
|
2
2
|
import { AppBarProps as MuiAppBarProps } from "@mui/material";
|
|
3
3
|
|
|
4
4
|
export interface AppBarProfile {
|
|
@@ -14,3 +14,4 @@ export interface AppBarProps extends MuiAppBarProps {
|
|
|
14
14
|
}
|
|
15
15
|
|
|
16
16
|
export type AppBarComponent = FunctionComponent<AppBarProps>;
|
|
17
|
+
export type AppBarElement = ReactElement<AppBarProps, AppBarComponent>;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { ComponentMeta } from "@storybook/react";
|
|
3
|
+
import { createTemplate } from "../../storybook";
|
|
4
|
+
import { Content } from "./content";
|
|
5
|
+
import { SkeletonGrid } from "../../tests";
|
|
6
|
+
|
|
7
|
+
export default {
|
|
8
|
+
title: "Sections/Content",
|
|
9
|
+
component: Content,
|
|
10
|
+
parameters: {
|
|
11
|
+
layout: "fullscreen",
|
|
12
|
+
},
|
|
13
|
+
} as ComponentMeta<typeof Content>;
|
|
14
|
+
|
|
15
|
+
const Template = createTemplate(() => {
|
|
16
|
+
return (
|
|
17
|
+
<Content>
|
|
18
|
+
<SkeletonGrid />
|
|
19
|
+
</Content>
|
|
20
|
+
);
|
|
21
|
+
});
|
|
22
|
+
|
|
23
|
+
export const Default = Template.bind({});
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { Content } from "./content";
|
|
3
|
+
import { render, screen } from "../../tests";
|
|
4
|
+
import { Typography } from "@mui/material";
|
|
5
|
+
|
|
6
|
+
describe("Content", () => {
|
|
7
|
+
const renderComponent = () => {
|
|
8
|
+
return render(
|
|
9
|
+
<Content>
|
|
10
|
+
<Typography>Children content</Typography>
|
|
11
|
+
</Content>,
|
|
12
|
+
);
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
it("would render a children", () => {
|
|
16
|
+
renderComponent();
|
|
17
|
+
|
|
18
|
+
expect(screen.getByText(/children content/i)).toBeInTheDocument();
|
|
19
|
+
});
|
|
20
|
+
|
|
21
|
+
it("would render a main element", () => {
|
|
22
|
+
renderComponent();
|
|
23
|
+
|
|
24
|
+
expect(screen.getByRole("main")).toBeInTheDocument();
|
|
25
|
+
});
|
|
26
|
+
});
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { Container } from "@mui/material";
|
|
3
|
+
import { ContentProps } from "./content.types";
|
|
4
|
+
|
|
5
|
+
export const Content = ({ children }: ContentProps) => {
|
|
6
|
+
return (
|
|
7
|
+
<Container component="main" sx={{ py: 3, flexGrow: 1 }}>
|
|
8
|
+
{children}
|
|
9
|
+
</Container>
|
|
10
|
+
);
|
|
11
|
+
};
|
|
@@ -1,15 +1,16 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
import { render, screen } from "../../tests";
|
|
3
3
|
import userEvent from "@testing-library/user-event";
|
|
4
|
+
import { Header } from "./header";
|
|
4
5
|
import {
|
|
5
|
-
Header,
|
|
6
6
|
HeaderAction,
|
|
7
7
|
HeaderActionVariant,
|
|
8
8
|
HeaderBreadcrumb,
|
|
9
9
|
HeaderPreset,
|
|
10
10
|
HeaderTab,
|
|
11
|
-
} from "./header";
|
|
11
|
+
} from "./header.types";
|
|
12
12
|
import { breadcrumbs, actions as actionsData, tabs } from "./header.dummy";
|
|
13
|
+
import { TabProvider } from "../../providers";
|
|
13
14
|
|
|
14
15
|
const actions = actionsData.map((a) => ({ ...a, onClick: a.onClick && jest.fn() }));
|
|
15
16
|
|
|
@@ -35,17 +36,17 @@ function renderInstance({
|
|
|
35
36
|
const onChangeTab = jest.fn();
|
|
36
37
|
|
|
37
38
|
const instance = render(
|
|
38
|
-
<
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
39
|
+
<TabProvider initialValue={selectedTab}>
|
|
40
|
+
<Header
|
|
41
|
+
title={title}
|
|
42
|
+
subtitle={subtitle}
|
|
43
|
+
preset={preset}
|
|
44
|
+
breadcrumbs={breadcrumbs}
|
|
45
|
+
actions={actions}
|
|
46
|
+
actionsVariant={actionsVariant}
|
|
47
|
+
tabs={tabs}
|
|
48
|
+
/>
|
|
49
|
+
</TabProvider>,
|
|
49
50
|
);
|
|
50
51
|
|
|
51
52
|
return { ...instance, onChangeTab };
|
|
@@ -147,13 +148,14 @@ describe("Header", () => {
|
|
|
147
148
|
expect(screen.getByRole("tab", { name: /tab 2/i })).toBeDisabled();
|
|
148
149
|
});
|
|
149
150
|
|
|
150
|
-
it("would
|
|
151
|
+
it("would change the selected tab when a tab is clicked", async () => {
|
|
151
152
|
const { onChangeTab } = renderInstance({ tabs, selectedTab: 0 });
|
|
152
153
|
|
|
153
154
|
await userEvent.click(screen.getByRole("tab", { name: /tab 3/i }));
|
|
154
155
|
|
|
155
|
-
expect(
|
|
156
|
-
expect(
|
|
156
|
+
expect(screen.getByRole("tab", { name: /tab 1/i, selected: false })).toBeInTheDocument();
|
|
157
|
+
expect(screen.getByRole("tab", { name: /tab 2/i, selected: false })).toBeInTheDocument();
|
|
158
|
+
expect(screen.getByRole("tab", { name: /tab 3/i, selected: true })).toBeInTheDocument();
|
|
157
159
|
});
|
|
158
160
|
|
|
159
161
|
it("wouldn't call onChangeTab when the clicked tab is the selectedTab", async () => {
|