@centreon/ui 23.10.112 → 24.4.1-MON-add-chromatic-nightly.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/package.json +1 -1
- package/src/Listing/index.stories.tsx +12 -1
- package/src/components/DataTable/Item/DataTableItem.tsx +2 -2
- package/src/components/Form/AccessRights/__fixtures__/contactAccessRight.mock.ts +2 -0
- package/src/screens/dashboard/DashboardsDetail.stories.tsx +0 -108
- package/src/screens/dashboard/DashboardsOverview.stories.tsx +0 -281
package/package.json
CHANGED
|
@@ -366,6 +366,16 @@ const columnsWithSubItems = [
|
|
|
366
366
|
}
|
|
367
367
|
];
|
|
368
368
|
|
|
369
|
+
const TemplateSubItems = (args): JSX.Element => {
|
|
370
|
+
const { classes } = useStyles();
|
|
371
|
+
|
|
372
|
+
return (
|
|
373
|
+
<div className={classes.listing}>
|
|
374
|
+
<Listing {...args} />
|
|
375
|
+
</div>
|
|
376
|
+
);
|
|
377
|
+
};
|
|
378
|
+
|
|
369
379
|
export const ListingWithSubItems = {
|
|
370
380
|
args: {
|
|
371
381
|
checkable: true,
|
|
@@ -382,5 +392,6 @@ export const ListingWithSubItems = {
|
|
|
382
392
|
rowProperty: 'subItems'
|
|
383
393
|
},
|
|
384
394
|
totalRows: 10
|
|
385
|
-
}
|
|
395
|
+
},
|
|
396
|
+
render: TemplateSubItems
|
|
386
397
|
};
|
|
@@ -22,7 +22,7 @@ export interface DataTableItemProps {
|
|
|
22
22
|
description?: string;
|
|
23
23
|
hasActions?: boolean;
|
|
24
24
|
hasCardAction?: boolean;
|
|
25
|
-
labelsDelete
|
|
25
|
+
labelsDelete?: {
|
|
26
26
|
cancel: string;
|
|
27
27
|
confirm: {
|
|
28
28
|
label: string;
|
|
@@ -76,7 +76,7 @@ const DataTableItem = forwardRef(
|
|
|
76
76
|
{hasActions && (
|
|
77
77
|
<MuiCardActions>
|
|
78
78
|
<span>
|
|
79
|
-
{onDelete && (
|
|
79
|
+
{onDelete && labelsDelete && (
|
|
80
80
|
<ConfirmationTooltip
|
|
81
81
|
confirmVariant="error"
|
|
82
82
|
labels={labelsDelete}
|
|
@@ -1,108 +0,0 @@
|
|
|
1
|
-
/* eslint-disable @typescript-eslint/no-non-null-assertion */
|
|
2
|
-
import React, { ReactElement } from 'react';
|
|
3
|
-
|
|
4
|
-
import { Meta } from '@storybook/react';
|
|
5
|
-
|
|
6
|
-
import {
|
|
7
|
-
Add as AddIcon,
|
|
8
|
-
Settings as SettingsIcon,
|
|
9
|
-
Share as ShareIcon
|
|
10
|
-
} from '@mui/icons-material';
|
|
11
|
-
|
|
12
|
-
import {
|
|
13
|
-
Button,
|
|
14
|
-
IconButton,
|
|
15
|
-
Menu,
|
|
16
|
-
PageHeader,
|
|
17
|
-
PageLayout
|
|
18
|
-
} from '../../components';
|
|
19
|
-
|
|
20
|
-
const meta: Meta = {
|
|
21
|
-
args: {
|
|
22
|
-
actions: {}
|
|
23
|
-
},
|
|
24
|
-
parameters: {
|
|
25
|
-
layout: 'fullscreen'
|
|
26
|
-
},
|
|
27
|
-
title: 'screens/Dashboards detail'
|
|
28
|
-
};
|
|
29
|
-
|
|
30
|
-
export default meta;
|
|
31
|
-
|
|
32
|
-
const DefaultView = (args): ReactElement => {
|
|
33
|
-
const { data } = args;
|
|
34
|
-
|
|
35
|
-
return (
|
|
36
|
-
<PageLayout>
|
|
37
|
-
<PageLayout.Header>
|
|
38
|
-
<PageHeader>
|
|
39
|
-
<PageHeader.Main>
|
|
40
|
-
<PageHeader.Menu>
|
|
41
|
-
<Menu>
|
|
42
|
-
<Menu.Button />
|
|
43
|
-
<Menu.Items>
|
|
44
|
-
<Menu.Item>Menu Item</Menu.Item>
|
|
45
|
-
<Menu.Item>Menu Item</Menu.Item>
|
|
46
|
-
<Menu.Item>Menu Item</Menu.Item>
|
|
47
|
-
<Menu.Divider />
|
|
48
|
-
<Menu.Item>
|
|
49
|
-
<Button
|
|
50
|
-
icon={<AddIcon />}
|
|
51
|
-
iconVariant="start"
|
|
52
|
-
variant="ghost"
|
|
53
|
-
>
|
|
54
|
-
Add item
|
|
55
|
-
</Button>
|
|
56
|
-
</Menu.Item>
|
|
57
|
-
</Menu.Items>
|
|
58
|
-
</Menu>
|
|
59
|
-
</PageHeader.Menu>
|
|
60
|
-
<PageHeader.Title
|
|
61
|
-
description={data.dashboard.description}
|
|
62
|
-
title={data.dashboard.name}
|
|
63
|
-
/>
|
|
64
|
-
</PageHeader.Main>
|
|
65
|
-
</PageHeader>
|
|
66
|
-
</PageLayout.Header>
|
|
67
|
-
<PageLayout.Body>
|
|
68
|
-
<PageLayout.Actions>
|
|
69
|
-
<IconButton
|
|
70
|
-
aria-label="edit"
|
|
71
|
-
data-testid="edit"
|
|
72
|
-
icon={<SettingsIcon />}
|
|
73
|
-
size="small"
|
|
74
|
-
variant="ghost"
|
|
75
|
-
/>
|
|
76
|
-
<IconButton
|
|
77
|
-
aria-label="share"
|
|
78
|
-
data-testid="share"
|
|
79
|
-
icon={<ShareIcon />}
|
|
80
|
-
size="small"
|
|
81
|
-
variant="ghost"
|
|
82
|
-
/>
|
|
83
|
-
</PageLayout.Actions>
|
|
84
|
-
</PageLayout.Body>
|
|
85
|
-
</PageLayout>
|
|
86
|
-
);
|
|
87
|
-
};
|
|
88
|
-
|
|
89
|
-
export const Default = {
|
|
90
|
-
args: {
|
|
91
|
-
data: {
|
|
92
|
-
dashboard: {
|
|
93
|
-
description:
|
|
94
|
-
'Description et culpa sit commodo ea enim excepteur elit. Velit irure velit tempor culpa commodo eu adipisicing eu proident ullamco.',
|
|
95
|
-
id: 1,
|
|
96
|
-
name: 'Dashboard 1'
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
},
|
|
100
|
-
render: DefaultView
|
|
101
|
-
};
|
|
102
|
-
|
|
103
|
-
export const AsEditLayoutState = {
|
|
104
|
-
args: {
|
|
105
|
-
...Default.args
|
|
106
|
-
},
|
|
107
|
-
render: DefaultView
|
|
108
|
-
};
|
|
@@ -1,281 +0,0 @@
|
|
|
1
|
-
/* eslint-disable @typescript-eslint/no-non-null-assertion */
|
|
2
|
-
import { useEffect } from 'react';
|
|
3
|
-
|
|
4
|
-
import { Meta } from '@storybook/react';
|
|
5
|
-
import { atom, useAtom } from 'jotai';
|
|
6
|
-
|
|
7
|
-
import { Add as AddIcon } from '@mui/icons-material';
|
|
8
|
-
|
|
9
|
-
import {
|
|
10
|
-
Button,
|
|
11
|
-
DashboardForm,
|
|
12
|
-
DashboardFormProps,
|
|
13
|
-
DataTable,
|
|
14
|
-
Modal,
|
|
15
|
-
PageHeader,
|
|
16
|
-
PageLayout
|
|
17
|
-
} from '../../components';
|
|
18
|
-
import { Default as DashboardFormDefaultStory } from '../../components/Form/Dashboard/DashboardForm.stories';
|
|
19
|
-
|
|
20
|
-
const meta: Meta = {
|
|
21
|
-
args: {
|
|
22
|
-
actions: {
|
|
23
|
-
create: {
|
|
24
|
-
label: 'Create a dashboard'
|
|
25
|
-
}
|
|
26
|
-
},
|
|
27
|
-
deleteConfirmation: {
|
|
28
|
-
labels: {
|
|
29
|
-
actions: {
|
|
30
|
-
cancel: 'Cancel',
|
|
31
|
-
confirm: 'Delete'
|
|
32
|
-
},
|
|
33
|
-
description: (name) => (
|
|
34
|
-
<>
|
|
35
|
-
Are you sure you want to delete <strong>{name}</strong> ?
|
|
36
|
-
</>
|
|
37
|
-
),
|
|
38
|
-
title: 'Delete dashboard'
|
|
39
|
-
}
|
|
40
|
-
},
|
|
41
|
-
form: {
|
|
42
|
-
labels: {
|
|
43
|
-
...DashboardFormDefaultStory.args!.labels,
|
|
44
|
-
title: {
|
|
45
|
-
create: 'Create dashboard',
|
|
46
|
-
update: 'Update dashboard'
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
},
|
|
50
|
-
list: {
|
|
51
|
-
emptyState: {
|
|
52
|
-
labels: {
|
|
53
|
-
actions: {
|
|
54
|
-
create: 'Create dashboard'
|
|
55
|
-
},
|
|
56
|
-
title: 'No dashboards found'
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
},
|
|
60
|
-
title: 'Dashboards overview'
|
|
61
|
-
},
|
|
62
|
-
parameters: {
|
|
63
|
-
layout: 'fullscreen'
|
|
64
|
-
},
|
|
65
|
-
title: 'screens/Dashboards overview'
|
|
66
|
-
};
|
|
67
|
-
|
|
68
|
-
export default meta;
|
|
69
|
-
|
|
70
|
-
interface dashboardItem {
|
|
71
|
-
description: string;
|
|
72
|
-
id: number;
|
|
73
|
-
name: string;
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
const dialogStateAtom = atom<{
|
|
77
|
-
item: dashboardItem | null;
|
|
78
|
-
open: boolean;
|
|
79
|
-
variant: DashboardFormProps['variant'];
|
|
80
|
-
}>({
|
|
81
|
-
item: null,
|
|
82
|
-
open: false,
|
|
83
|
-
variant: 'create'
|
|
84
|
-
});
|
|
85
|
-
|
|
86
|
-
const deleteDialogStateAtom = atom<{
|
|
87
|
-
item: dashboardItem | null;
|
|
88
|
-
open: boolean;
|
|
89
|
-
}>({
|
|
90
|
-
item: null,
|
|
91
|
-
open: false
|
|
92
|
-
});
|
|
93
|
-
|
|
94
|
-
const dataDashboardsAtom = atom<Array<dashboardItem>>([]);
|
|
95
|
-
|
|
96
|
-
const DefaultView = (args): JSX.Element => {
|
|
97
|
-
const { data, title, actions, list, form, deleteConfirmation } = args;
|
|
98
|
-
const [dialogState, setDialogState] = useAtom(dialogStateAtom);
|
|
99
|
-
const [deleteDialogState, setDeleteDialogState] = useAtom(
|
|
100
|
-
deleteDialogStateAtom
|
|
101
|
-
);
|
|
102
|
-
const [dataDashboards, setDataDashboards] = useAtom(dataDashboardsAtom);
|
|
103
|
-
|
|
104
|
-
useEffect(() => {
|
|
105
|
-
setDataDashboards(data.dashboards);
|
|
106
|
-
}, [data.dashboards]);
|
|
107
|
-
|
|
108
|
-
const createDashboard = (d): void => {
|
|
109
|
-
const dashboard = { ...d };
|
|
110
|
-
dashboard.id = dataDashboards.length
|
|
111
|
-
? Math.max(...dataDashboards.map((db) => db.id)) + 1
|
|
112
|
-
: 0;
|
|
113
|
-
setDataDashboards((prev) =>
|
|
114
|
-
[...prev, dashboard].sort((a, b) => a.name.localeCompare(b.name))
|
|
115
|
-
);
|
|
116
|
-
setDialogState({ item: null, open: false, variant: 'create' });
|
|
117
|
-
};
|
|
118
|
-
|
|
119
|
-
const updateDashboard = (d): void => {
|
|
120
|
-
setDataDashboards((prev) =>
|
|
121
|
-
prev
|
|
122
|
-
.map((dashboard) => (dashboard.id === d.id ? d : dashboard))
|
|
123
|
-
.sort((a, b) => a.name.localeCompare(b.name))
|
|
124
|
-
);
|
|
125
|
-
setDialogState({ item: null, open: false, variant: 'update' });
|
|
126
|
-
};
|
|
127
|
-
|
|
128
|
-
const deleteDashboard = (id): void => {
|
|
129
|
-
setDataDashboards((prev) =>
|
|
130
|
-
prev.filter((dashboard) => dashboard.id !== id)
|
|
131
|
-
);
|
|
132
|
-
};
|
|
133
|
-
|
|
134
|
-
return (
|
|
135
|
-
<PageLayout>
|
|
136
|
-
<PageLayout.Header>
|
|
137
|
-
<PageHeader>
|
|
138
|
-
<PageHeader.Main>
|
|
139
|
-
<PageHeader.Title title={title} />
|
|
140
|
-
</PageHeader.Main>
|
|
141
|
-
</PageHeader>
|
|
142
|
-
</PageLayout.Header>
|
|
143
|
-
<PageLayout.Body>
|
|
144
|
-
<PageLayout.Actions>
|
|
145
|
-
{dataDashboards.length !== 0 && (
|
|
146
|
-
<Button
|
|
147
|
-
aria-label="add"
|
|
148
|
-
icon={<AddIcon />}
|
|
149
|
-
iconVariant="start"
|
|
150
|
-
onClick={() =>
|
|
151
|
-
setDialogState({ item: null, open: true, variant: 'create' })
|
|
152
|
-
}
|
|
153
|
-
>
|
|
154
|
-
{actions.create.label}
|
|
155
|
-
</Button>
|
|
156
|
-
)}
|
|
157
|
-
</PageLayout.Actions>
|
|
158
|
-
|
|
159
|
-
<DataTable isEmpty={dataDashboards.length === 0}>
|
|
160
|
-
{dataDashboards.length === 0 ? (
|
|
161
|
-
<DataTable.EmptyState
|
|
162
|
-
labels={list.emptyState.labels}
|
|
163
|
-
onCreate={() =>
|
|
164
|
-
setDialogState({
|
|
165
|
-
item: null,
|
|
166
|
-
open: true,
|
|
167
|
-
variant: 'create'
|
|
168
|
-
})
|
|
169
|
-
}
|
|
170
|
-
/>
|
|
171
|
-
) : (
|
|
172
|
-
dataDashboards.map((dashboard) => (
|
|
173
|
-
<DataTable.Item
|
|
174
|
-
hasActions
|
|
175
|
-
hasCardAction
|
|
176
|
-
description={dashboard.description}
|
|
177
|
-
key={dashboard.id}
|
|
178
|
-
title={dashboard.name}
|
|
179
|
-
onDelete={() =>
|
|
180
|
-
setDeleteDialogState({ item: dashboard, open: true })
|
|
181
|
-
}
|
|
182
|
-
onEdit={() =>
|
|
183
|
-
setDialogState({
|
|
184
|
-
item: dashboard,
|
|
185
|
-
open: true,
|
|
186
|
-
variant: 'update'
|
|
187
|
-
})
|
|
188
|
-
}
|
|
189
|
-
/>
|
|
190
|
-
))
|
|
191
|
-
)}
|
|
192
|
-
</DataTable>
|
|
193
|
-
</PageLayout.Body>
|
|
194
|
-
|
|
195
|
-
<Modal
|
|
196
|
-
open={dialogState.open}
|
|
197
|
-
onClose={() =>
|
|
198
|
-
setDialogState({
|
|
199
|
-
item: null,
|
|
200
|
-
open: false,
|
|
201
|
-
variant: dialogState.variant
|
|
202
|
-
})
|
|
203
|
-
}
|
|
204
|
-
>
|
|
205
|
-
<Modal.Header>
|
|
206
|
-
{form.labels.title[dialogState.variant ?? 'create']}
|
|
207
|
-
</Modal.Header>
|
|
208
|
-
<Modal.Body>
|
|
209
|
-
<DashboardForm
|
|
210
|
-
labels={DashboardFormDefaultStory!.args!.labels!}
|
|
211
|
-
resource={dialogState.item || undefined}
|
|
212
|
-
variant={dialogState.variant}
|
|
213
|
-
onCancel={() =>
|
|
214
|
-
setDialogState({
|
|
215
|
-
item: null,
|
|
216
|
-
open: false,
|
|
217
|
-
variant: dialogState.variant
|
|
218
|
-
})
|
|
219
|
-
}
|
|
220
|
-
onSubmit={(values) =>
|
|
221
|
-
dialogState.variant === 'create'
|
|
222
|
-
? createDashboard(values)
|
|
223
|
-
: updateDashboard(values)
|
|
224
|
-
}
|
|
225
|
-
/>
|
|
226
|
-
</Modal.Body>
|
|
227
|
-
</Modal>
|
|
228
|
-
<Modal
|
|
229
|
-
open={deleteDialogState.open}
|
|
230
|
-
onClose={() =>
|
|
231
|
-
setDeleteDialogState({
|
|
232
|
-
...deleteDialogState,
|
|
233
|
-
open: false
|
|
234
|
-
})
|
|
235
|
-
}
|
|
236
|
-
>
|
|
237
|
-
<Modal.Header>{deleteConfirmation.labels.title}</Modal.Header>
|
|
238
|
-
<Modal.Body>
|
|
239
|
-
<p>
|
|
240
|
-
{deleteConfirmation.labels.description(
|
|
241
|
-
deleteDialogState.item?.name
|
|
242
|
-
)}
|
|
243
|
-
</p>
|
|
244
|
-
</Modal.Body>
|
|
245
|
-
<Modal.Actions
|
|
246
|
-
isDanger
|
|
247
|
-
labels={deleteConfirmation.labels.actions}
|
|
248
|
-
onCancel={() => setDeleteDialogState({ item: null, open: false })}
|
|
249
|
-
onConfirm={() => {
|
|
250
|
-
deleteDashboard(deleteDialogState.item?.id);
|
|
251
|
-
setDeleteDialogState({ item: null, open: false });
|
|
252
|
-
}}
|
|
253
|
-
/>
|
|
254
|
-
</Modal>
|
|
255
|
-
</PageLayout>
|
|
256
|
-
);
|
|
257
|
-
};
|
|
258
|
-
|
|
259
|
-
export const Default = {
|
|
260
|
-
args: {
|
|
261
|
-
data: {
|
|
262
|
-
dashboards: [
|
|
263
|
-
{ description: 'Dashboard 1 description', id: 1, name: 'Dashboard 1' },
|
|
264
|
-
{ description: 'Dashboard 2 description', id: 2, name: 'Dashboard 2' },
|
|
265
|
-
{ description: 'Dashboard 3 description', id: 3, name: 'Dashboard 3' },
|
|
266
|
-
{ description: 'Dashboard 4 description', id: 4, name: 'Dashboard 4' },
|
|
267
|
-
{ description: 'Dashboard 5 description', id: 5, name: 'Dashboard 5' }
|
|
268
|
-
]
|
|
269
|
-
}
|
|
270
|
-
},
|
|
271
|
-
render: DefaultView
|
|
272
|
-
};
|
|
273
|
-
|
|
274
|
-
export const AsInitialState = {
|
|
275
|
-
args: {
|
|
276
|
-
data: {
|
|
277
|
-
dashboards: []
|
|
278
|
-
}
|
|
279
|
-
},
|
|
280
|
-
render: DefaultView
|
|
281
|
-
};
|