@centreon/ui 24.4.1-MON-21278-Delete-a-basic-token.11 → 24.4.1-MON-33898.15

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 (68) hide show
  1. package/package.json +1 -1
  2. package/src/Button/Icon/index.stories.tsx +1 -1
  3. package/src/Button/Icon/index.tsx +1 -1
  4. package/src/Dialog/Confirm/index.tsx +2 -10
  5. package/src/Dialog/index.tsx +1 -8
  6. package/src/InputField/Select/IconPopover/index.tsx +1 -1
  7. package/src/Listing/ActionBar/index.tsx +1 -2
  8. package/src/Panel/index.tsx +1 -1
  9. package/src/TimePeriods/CustomTimePeriod/CompactCustomTimePeriod.styles.ts +7 -6
  10. package/src/TimePeriods/ResolutionTimePeriod.cypress.spec.tsx +9 -12
  11. package/src/components/Form/{AccessRightsV2 → AccessRights}/AccessRights.cypress.spec.tsx +23 -0
  12. package/src/components/Form/{AccessRightsV2 → AccessRights}/ShareInput/ContactSwitch.tsx +9 -1
  13. package/src/components/Form/{AccessRightsV2 → AccessRights}/ShareInput/ShareInput.styles.ts +8 -0
  14. package/src/components/Form/{AccessRightsV2 → AccessRights}/ShareInput/useShareInput.tsx +4 -0
  15. package/src/components/Form/{AccessRightsV2 → AccessRights}/models.ts +1 -0
  16. package/src/components/Form/{AccessRightsV2 → AccessRights}/storiesData.ts +1 -0
  17. package/src/components/Form/index.ts +2 -2
  18. package/src/components/Form/AccessRights/AccessRights.resource.ts +0 -45
  19. package/src/components/Form/AccessRights/AccessRightsForm.stories.tsx +0 -59
  20. package/src/components/Form/AccessRights/AccessRightsForm.styles.ts +0 -21
  21. package/src/components/Form/AccessRights/AccessRightsForm.tsx +0 -67
  22. package/src/components/Form/AccessRights/AccessRightsFormActions.tsx +0 -80
  23. package/src/components/Form/AccessRights/Input/AddAction.tsx +0 -31
  24. package/src/components/Form/AccessRights/Input/ContactAccessRightInput.stories.tsx +0 -54
  25. package/src/components/Form/AccessRights/Input/ContactAccessRightInput.tsx +0 -72
  26. package/src/components/Form/AccessRights/Input/ContactAccessRightsInput.styles.ts +0 -22
  27. package/src/components/Form/AccessRights/Input/ContactInputField.tsx +0 -105
  28. package/src/components/Form/AccessRights/Input/RoleInputField.tsx +0 -29
  29. package/src/components/Form/AccessRights/List/ContactAccessRightsList.stories.tsx +0 -97
  30. package/src/components/Form/AccessRights/List/ContactAccessRightsList.styles.ts +0 -71
  31. package/src/components/Form/AccessRights/List/ContactAccessRightsList.tsx +0 -51
  32. package/src/components/Form/AccessRights/List/ContactAccessRightsListItem.stories.tsx +0 -116
  33. package/src/components/Form/AccessRights/List/ContactAccessRightsListItem.tsx +0 -118
  34. package/src/components/Form/AccessRights/List/ContactAccessRightsListItemSkeleton.tsx +0 -26
  35. package/src/components/Form/AccessRights/List/ContactAccessRightsListSkeleton.tsx +0 -28
  36. package/src/components/Form/AccessRights/Stats/AccessRightsStats.styles.ts +0 -18
  37. package/src/components/Form/AccessRights/Stats/AccessRightsStats.tsx +0 -41
  38. package/src/components/Form/AccessRights/__fixtures__/contactAccessRight.mock.ts +0 -54
  39. package/src/components/Form/AccessRights/common/GroupLabel.styles.ts +0 -18
  40. package/src/components/Form/AccessRights/common/GroupLabel.tsx +0 -15
  41. package/src/components/Form/AccessRights/common/Input.styles.ts +0 -48
  42. package/src/components/Form/AccessRights/common/RoleInputSelect.styles.ts +0 -11
  43. package/src/components/Form/AccessRights/common/RoleInputSelect.tsx +0 -57
  44. package/src/components/Form/AccessRights/index.ts +0 -3
  45. package/src/components/Form/AccessRights/useAccessRightsForm.test.tsx +0 -531
  46. package/src/components/Form/AccessRights/useAccessRightsForm.tsx +0 -282
  47. package/src/components/Form/AccessRights/useAccessRightsForm.utils.ts +0 -41
  48. /package/src/components/Form/{AccessRightsV2 → AccessRights}/AccessRights.stories.tsx +0 -0
  49. /package/src/components/Form/{AccessRightsV2 → AccessRights}/AccessRights.styles.ts +0 -0
  50. /package/src/components/Form/{AccessRightsV2 → AccessRights}/AccessRights.tsx +0 -0
  51. /package/src/components/Form/{AccessRightsV2 → AccessRights}/Actions/Actions.styles.ts +0 -0
  52. /package/src/components/Form/{AccessRightsV2 → AccessRights}/Actions/Actions.tsx +0 -0
  53. /package/src/components/Form/{AccessRightsV2 → AccessRights}/Actions/useActions.ts +0 -0
  54. /package/src/components/Form/{AccessRightsV2 → AccessRights}/List/Item.tsx +0 -0
  55. /package/src/components/Form/{AccessRightsV2 → AccessRights}/List/List.styles.tsx +0 -0
  56. /package/src/components/Form/{AccessRightsV2 → AccessRights}/List/List.tsx +0 -0
  57. /package/src/components/Form/{AccessRightsV2 → AccessRights}/List/ListItemSkeleton.tsx +0 -0
  58. /package/src/components/Form/{AccessRightsV2 → AccessRights}/List/ListSkeleton.tsx +0 -0
  59. /package/src/components/Form/{AccessRightsV2 → AccessRights}/List/RemoveAccessRight.tsx +0 -0
  60. /package/src/components/Form/{AccessRightsV2 → AccessRights}/List/StateChip.tsx +0 -0
  61. /package/src/components/Form/{AccessRightsV2 → AccessRights}/List/useItem.ts +0 -0
  62. /package/src/components/Form/{AccessRightsV2 → AccessRights}/Provider.tsx +0 -0
  63. /package/src/components/Form/{AccessRightsV2 → AccessRights}/ShareInput/ShareInput.tsx +0 -0
  64. /package/src/components/Form/{AccessRightsV2 → AccessRights}/Stats/Stats.tsx +0 -0
  65. /package/src/components/Form/{AccessRightsV2 → AccessRights}/atoms.ts +0 -0
  66. /package/src/components/Form/{AccessRightsV2 → AccessRights}/common/RoleSelectField.styles.tsx +0 -0
  67. /package/src/components/Form/{AccessRightsV2 → AccessRights}/common/RoleSelectField.tsx +0 -0
  68. /package/src/components/Form/{AccessRightsV2 → AccessRights}/useAccessRightsInitValues.ts +0 -0
@@ -1,54 +0,0 @@
1
- import { ReactElement, ReactNode } from 'react';
2
-
3
- import { Meta, StoryObj } from '@storybook/react';
4
-
5
- import {
6
- AccessRightsFormProvider,
7
- AccessRightsFormProviderProps
8
- } from '../useAccessRightsForm';
9
- import { contactsAndGroupsMock } from '../__fixtures__/contactAccessRight.mock';
10
-
11
- import { ContactAccessRightInput } from './ContactAccessRightInput';
12
-
13
- const meta: Meta<typeof ContactAccessRightInput> = {
14
- component: ContactAccessRightInput,
15
- title: 'components/Form/AccessRights/ContactAccessRightInput'
16
- };
17
-
18
- export default meta;
19
- type Story = StoryObj<typeof ContactAccessRightInput>;
20
-
21
- const Wrapper = ({ children }: { children: ReactNode }): ReactElement => {
22
- const options: AccessRightsFormProviderProps['options'] = {
23
- contacts: contactsAndGroupsMock(25),
24
- roles: [{ role: 'viewer' }, { role: 'editor' }]
25
- };
26
-
27
- return (
28
- <AccessRightsFormProvider options={options}>
29
- {children}
30
- </AccessRightsFormProvider>
31
- );
32
- };
33
-
34
- export const Default: Story = {
35
- args: {
36
- labels: {
37
- actions: {
38
- add: 'Add'
39
- },
40
- fields: {
41
- contact: {
42
- group: 'group',
43
- noOptionsText: 'No contacts found',
44
- placeholder: 'Add Contact...'
45
- }
46
- }
47
- }
48
- },
49
- render: (args) => (
50
- <Wrapper>
51
- <ContactAccessRightInput labels={args.labels} />
52
- </Wrapper>
53
- )
54
- };
@@ -1,72 +0,0 @@
1
- import { ReactElement } from 'react';
2
-
3
- import { FormikProvider, useFormik } from 'formik';
4
- import { mixed, object } from 'yup';
5
-
6
- import { useAccessRightsForm } from '../useAccessRightsForm';
7
- import { ContactAccessRightResource } from '../AccessRights.resource';
8
-
9
- import { useStyles } from './ContactAccessRightsInput.styles';
10
- import { ContactInputField, ContactInputFieldProps } from './ContactInputField';
11
- import { AddAction } from './AddAction';
12
- import { RoleInputField } from './RoleInputField';
13
-
14
- export type ContactAccessRightInputProps = {
15
- labels: ContactAccessRightInputLabels;
16
- onAddContactAccessRight?: (value: ContactAccessRightResource) => void;
17
- };
18
-
19
- type ContactAccessRightInputLabels = {
20
- actions?: {
21
- add: string;
22
- };
23
- fields: {
24
- contact: ContactInputFieldProps['labels'];
25
- role?: {
26
- label: string;
27
- };
28
- };
29
- };
30
-
31
- const ContactAccessRightInput = ({
32
- labels,
33
- onAddContactAccessRight
34
- }: ContactAccessRightInputProps): ReactElement => {
35
- const { classes } = useStyles();
36
- const { addContactAccessRight, options } = useAccessRightsForm();
37
-
38
- const formik = useFormik<ContactAccessRightResource>({
39
- initialValues: { contact: null, role: 'viewer' },
40
- onSubmit: (values, { resetForm }) => {
41
- addContactAccessRight(values);
42
- onAddContactAccessRight?.(values);
43
- resetForm();
44
- },
45
- validationSchema: object({
46
- contact: mixed()
47
- .test(
48
- 'is-available-contact',
49
- (d) => `${d.path} is not a contact available from the list`,
50
- (value) => !!options.contacts?.find((c) => c.id === value?.id)
51
- )
52
- .required(),
53
- role: mixed().oneOf(['viewer', 'editor']).required()
54
- })
55
- });
56
-
57
- return (
58
- <div className={classes.contactAccessRightsInput}>
59
- <FormikProvider value={formik}>
60
- <ContactInputField
61
- id="contact"
62
- labels={labels.fields.contact}
63
- name="contact"
64
- />
65
- <RoleInputField id="role" name="role" {...labels?.fields?.role} />
66
- <AddAction />
67
- </FormikProvider>
68
- </div>
69
- );
70
- };
71
-
72
- export { ContactAccessRightInput };
@@ -1,22 +0,0 @@
1
- import { makeStyles } from 'tss-react/mui';
2
-
3
- const useStyles = makeStyles()((theme) => ({
4
- contactAccessRightsInput: {
5
- alignItems: 'center',
6
- display: 'flex',
7
- flexGrow: 1,
8
- gap: theme.spacing(2),
9
- maxWidth: '520px',
10
-
11
- width: '100%'
12
- },
13
- contactInput: {
14
- '& .MuiOutlinedInput-root, & .MuiInputBase-input.MuiOutlinedInput-input': {
15
- height: 'unset',
16
- lineHeight: '1.5'
17
- },
18
- flexGrow: 1
19
- }
20
- }));
21
-
22
- export { useStyles };
@@ -1,105 +0,0 @@
1
- import { ReactElement, useCallback, useEffect, useState } from 'react';
2
-
3
- import { useField } from 'formik';
4
-
5
- import {
6
- Autocomplete as MuiAutocomplete,
7
- MenuItem as MuiMenuItem,
8
- TextField as MuiTextField
9
- } from '@mui/material';
10
-
11
- import { useAccessRightsForm } from '../useAccessRightsForm';
12
- import {
13
- ContactGroupResource,
14
- ContactResource,
15
- isContactGroupResource
16
- } from '../AccessRights.resource';
17
- import { useInputStyles } from '../common/Input.styles';
18
- import { GroupLabel } from '../common/GroupLabel';
19
-
20
- import { useStyles } from './ContactAccessRightsInput.styles';
21
-
22
- export type ContactInputFieldProps = {
23
- id: string;
24
- labels: ContactInputFieldLabels;
25
- name: string;
26
- };
27
-
28
- type ContactInputFieldLabels = {
29
- group: string;
30
- noOptionsText: string;
31
- placeholder: string;
32
- };
33
-
34
- const ContactInputField = ({
35
- labels,
36
- ...props
37
- }: ContactInputFieldProps): ReactElement => {
38
- const { classes } = useStyles();
39
- const { classes: inputClasses } = useInputStyles();
40
-
41
- const {
42
- options: { contacts }
43
- } = useAccessRightsForm();
44
-
45
- const [field, meta, helpers] = useField(props);
46
-
47
- const [value, setValue] = useState<
48
- ContactResource | ContactGroupResource | null
49
- >(meta.initialValue ?? null);
50
-
51
- const onInputChange = useCallback(
52
- (_, _value) => {
53
- helpers.setValue(_value);
54
- },
55
- [helpers]
56
- );
57
-
58
- const renderInput = useCallback(
59
- (params) => (
60
- <MuiTextField
61
- {...props}
62
- {...params}
63
- placeholder={labels.placeholder}
64
- size="small"
65
- />
66
- ),
67
- [labels, props]
68
- );
69
-
70
- useEffect(() => {
71
- setValue(field.value ?? null);
72
- }, [field.value]);
73
-
74
- return (
75
- <MuiAutocomplete<ContactResource | ContactGroupResource, false, false, true>
76
- autoComplete
77
- autoHighlight
78
- openOnFocus
79
- className={classes.contactInput}
80
- componentsProps={{
81
- popper: {
82
- className: inputClasses.inputDropdown
83
- }
84
- }}
85
- getOptionLabel={(option) =>
86
- typeof option === 'string' ? option : option.name
87
- }
88
- noOptionsText={labels.noOptionsText}
89
- options={contacts}
90
- renderInput={renderInput}
91
- renderOption={(attr, option) => (
92
- <MuiMenuItem {...attr} key={`${option.type}--${option.name}`}>
93
- {option.name}{' '}
94
- {isContactGroupResource(option) && (
95
- <GroupLabel label={labels.group} />
96
- )}
97
- </MuiMenuItem>
98
- )}
99
- value={value}
100
- onChange={onInputChange}
101
- />
102
- );
103
- };
104
-
105
- export { ContactInputField };
@@ -1,29 +0,0 @@
1
- import { ReactElement, useCallback } from 'react';
2
-
3
- import { useField } from 'formik';
4
-
5
- import { RoleInputSelect } from '../common/RoleInputSelect';
6
-
7
- type RoleFieldProps = {
8
- id: string;
9
- label?: string;
10
- name: string;
11
- };
12
-
13
- const RoleInputField = ({ label, ...props }: RoleFieldProps): ReactElement => {
14
- const [field, meta] = useField(props);
15
-
16
- const onInputChange = useCallback((e) => field.onChange(e), [field]);
17
-
18
- return (
19
- <RoleInputSelect
20
- defaultValue={meta.initialValue}
21
- {...field}
22
- {...props}
23
- {...(label && { label })}
24
- onChange={onInputChange}
25
- />
26
- );
27
- };
28
-
29
- export { RoleInputField };
@@ -1,97 +0,0 @@
1
- import { ReactElement, ReactNode } from 'react';
2
-
3
- import { Meta, StoryObj } from '@storybook/react';
4
-
5
- import {
6
- AccessRightsFormProvider,
7
- AccessRightsFormProviderProps
8
- } from '../useAccessRightsForm';
9
- import { contactAccessRightsMock } from '../__fixtures__/contactAccessRight.mock';
10
-
11
- import { ContactAccessRightsList } from './ContactAccessRightsList';
12
-
13
- const meta: Meta<typeof ContactAccessRightsList> = {
14
- component: ContactAccessRightsList,
15
- title: 'components/Form/AccessRights/ContactAccessRightsList'
16
- };
17
-
18
- export default meta;
19
- type Story = StoryObj<typeof ContactAccessRightsList>;
20
-
21
- const Wrapper = ({
22
- children,
23
- amountOfContacts = 12
24
- }: {
25
- amountOfContacts?: number;
26
- children: ReactNode;
27
- }): ReactElement => {
28
- const options: AccessRightsFormProviderProps['options'] = {
29
- contacts: [],
30
- roles: [{ role: 'viewer' }, { role: 'editor' }]
31
- };
32
-
33
- const initialValues: AccessRightsFormProviderProps['initialValues'] =
34
- contactAccessRightsMock(amountOfContacts);
35
-
36
- return (
37
- <AccessRightsFormProvider initialValues={initialValues} options={options}>
38
- {children}
39
- </AccessRightsFormProvider>
40
- );
41
- };
42
-
43
- export const Default: Story = {
44
- args: {
45
- labels: {
46
- emptyState: 'No Contacts with access rights',
47
- item: {
48
- group: 'Group',
49
- state: {
50
- added: 'Add',
51
- removed: 'Remove',
52
- updated: 'Update'
53
- }
54
- }
55
- }
56
- },
57
- render: (args) => (
58
- <Wrapper>
59
- <ContactAccessRightsList {...args} />
60
- </Wrapper>
61
- )
62
- };
63
-
64
- export const AsEmptyState: Story = {
65
- args: Default.args,
66
- render: (args) => (
67
- <Wrapper amountOfContacts={0}>
68
- <ContactAccessRightsList {...args} />
69
- </Wrapper>
70
- )
71
- };
72
-
73
- const LoadingWrapper = ({
74
- children
75
- }: {
76
- children: ReactNode;
77
- }): ReactElement => {
78
- const options: AccessRightsFormProviderProps['options'] = {
79
- contacts: [],
80
- roles: [{ role: 'viewer' }, { role: 'editor' }]
81
- };
82
-
83
- return (
84
- <AccessRightsFormProvider loadingStatus="loading" options={options}>
85
- {children}
86
- </AccessRightsFormProvider>
87
- );
88
- };
89
-
90
- export const AsLoadingState: Story = {
91
- args: Default.args,
92
- render: (args) => (
93
- <LoadingWrapper>
94
- <ContactAccessRightsList {...args} />
95
- </LoadingWrapper>
96
- )
97
- };
@@ -1,71 +0,0 @@
1
- import { makeStyles } from 'tss-react/mui';
2
-
3
- const useStyles = makeStyles()((theme) => ({
4
- contactAccessRightsList: {
5
- borderBottom: `1px solid ${theme.palette.divider}`,
6
- borderTop: `1px solid ${theme.palette.divider}`,
7
- maxHeight: '29.5rem',
8
- maxWidth: '520px',
9
- overflowY: 'auto'
10
- },
11
- contactAccessRightsListEmpty: {
12
- alignItems: 'center',
13
- color: theme.palette.text.secondary,
14
- fontSize: '0.75rem',
15
- padding: theme.spacing(2, 8),
16
- textAlign: 'center'
17
- },
18
- contactAccessRightsListItem: {
19
- '& .MuiChip-root': {
20
- '& .MuiChip-label': {
21
- lineHeight: 'unset',
22
- padding: theme.spacing(0, 0.75),
23
- textOverflow: 'unset'
24
- },
25
- '&[data-state="added"]': {
26
- borderColor: theme.palette.chip.color.success,
27
- color: theme.palette.chip.color.success
28
- },
29
- '&[data-state="removed"]': {
30
- borderColor: theme.palette.chip.color.error,
31
- color: theme.palette.chip.color.error
32
- },
33
- '&[data-state="updated"]': {
34
- borderColor: theme.palette.chip.color.info,
35
- color: theme.palette.chip.color.info
36
- },
37
- borderRadius: '0.625rem',
38
- flexBasis: '3.5rem',
39
- flexShrink: 0,
40
- fontSize: '0.6875rem',
41
-
42
- fontWeight: 500,
43
- height: 'auto',
44
- lineHeight: '1.125rem',
45
- minHeight: 'unset',
46
- textTransform: 'lowercase'
47
- },
48
- '& .MuiListItemSecondaryAction-root': {
49
- paddingRight: theme.spacing(0.625)
50
- },
51
- '& > span:first-of-type': {
52
- alignItems: 'center',
53
- display: 'flex',
54
- flexGrow: 1,
55
- gap: theme.spacing(2),
56
- overflow: 'hidden'
57
- },
58
- '&[data-is-removed="true"]': {
59
- '& > span:first-of-type': {
60
- opacity: 0.3
61
- }
62
- },
63
- gap: theme.spacing(3),
64
- justifyContent: 'space-between',
65
-
66
- maxWidth: '520px',
67
- paddingRight: theme.spacing(7)
68
- }
69
- }));
70
-
71
- export { useStyles };
@@ -1,51 +0,0 @@
1
- import { ReactElement } from 'react';
2
-
3
- import { List } from '../../../List';
4
- import { useAccessRightsForm } from '../useAccessRightsForm';
5
-
6
- import {
7
- ContactAccessRightsListItem,
8
- ContactAccessRightsListItemProps
9
- } from './ContactAccessRightsListItem';
10
- import { useStyles } from './ContactAccessRightsList.styles';
11
- import { ContactAccessRightsListSkeleton } from './ContactAccessRightsListSkeleton';
12
-
13
- export type ContactAccessRightsListProps = {
14
- labels: ContactAccessRightsListLabels;
15
- };
16
-
17
- type ContactAccessRightsListLabels = {
18
- emptyState: string;
19
- item: ContactAccessRightsListItemProps['labels'];
20
- };
21
-
22
- const ContactAccessRightsList = ({
23
- labels
24
- }: ContactAccessRightsListProps): ReactElement => {
25
- const { classes } = useStyles();
26
- const { contactAccessRights, isLoading } = useAccessRightsForm();
27
-
28
- return isLoading ? (
29
- <ContactAccessRightsListSkeleton length={3} />
30
- ) : (
31
- <div className={classes.contactAccessRightsList}>
32
- {contactAccessRights.length === 0 ? (
33
- <div className={classes.contactAccessRightsListEmpty}>
34
- {labels.emptyState}
35
- </div>
36
- ) : (
37
- <List>
38
- {contactAccessRights.map((resource) => (
39
- <ContactAccessRightsListItem
40
- key={resource.contactAccessRight.contact?.id}
41
- labels={labels.item}
42
- resource={resource}
43
- />
44
- ))}
45
- </List>
46
- )}
47
- </div>
48
- );
49
- };
50
-
51
- export { ContactAccessRightsList };
@@ -1,116 +0,0 @@
1
- import { ReactElement, ReactNode } from 'react';
2
-
3
- import { Meta, StoryObj } from '@storybook/react';
4
-
5
- import {
6
- AccessRightsFormProvider,
7
- AccessRightsFormProviderProps
8
- } from '../useAccessRightsForm';
9
- import { ContactAccessRightResource } from '../AccessRights.resource';
10
-
11
- import { ContactAccessRightsListItem } from './ContactAccessRightsListItem';
12
- import { ContactAccessRightsListItemSkeleton } from './ContactAccessRightsListItemSkeleton';
13
-
14
- const meta: Meta<typeof ContactAccessRightsListItem> = {
15
- component: ContactAccessRightsListItem,
16
- title: 'components/Form/AccessRights/ContactAccessRightsListItem'
17
- };
18
-
19
- export default meta;
20
- type Story = StoryObj<typeof ContactAccessRightsListItem>;
21
-
22
- const Wrapper = ({ children }: { children: ReactNode }): ReactElement => {
23
- const options: AccessRightsFormProviderProps['options'] = {
24
- contacts: [],
25
- roles: [{ role: 'viewer' }, { role: 'editor' }]
26
- };
27
-
28
- return (
29
- <AccessRightsFormProvider options={options}>
30
- {children}
31
- </AccessRightsFormProvider>
32
- );
33
- };
34
-
35
- export const Default: Story = {
36
- args: {
37
- labels: {
38
- group: 'Group',
39
- state: {
40
- added: 'Add',
41
- removed: 'Remove',
42
- updated: 'Update'
43
- }
44
- },
45
- resource: {
46
- contactAccessRight: {
47
- contact: {
48
- email: 'user@company.com',
49
- id: '1',
50
- name: 'User Name',
51
- type: 'contact'
52
- },
53
- role: 'viewer'
54
- },
55
- state: 'unchanged',
56
- stateHistory: []
57
- }
58
- },
59
- render: (args) => (
60
- <Wrapper>
61
- <ContactAccessRightsListItem {...args} />
62
- </Wrapper>
63
- )
64
- };
65
-
66
- export const AsContactGroup: Story = {
67
- args: {
68
- labels: Default.args?.labels,
69
- resource: {
70
- contactAccessRight: {
71
- contact: {
72
- id: '1',
73
- name: 'Team Name',
74
- type: 'contact_group'
75
- },
76
- role: 'editor'
77
- },
78
- state: 'unchanged',
79
- stateHistory: []
80
- }
81
- },
82
- render: Default.render
83
- };
84
-
85
- export const WithAddedState: Story = {
86
- args: {
87
- labels: Default.args?.labels,
88
- resource: {
89
- contactAccessRight: {
90
- ...Default.args?.resource?.contactAccessRight
91
- } as ContactAccessRightResource,
92
- state: 'added',
93
- stateHistory: []
94
- }
95
- },
96
- render: Default.render
97
- };
98
-
99
- export const WithRemovedState: Story = {
100
- args: {
101
- labels: Default.args?.labels,
102
- resource: {
103
- contactAccessRight: {
104
- ...Default.args?.resource?.contactAccessRight
105
- } as ContactAccessRightResource,
106
- state: 'removed',
107
- stateHistory: []
108
- }
109
- },
110
- render: Default.render
111
- };
112
-
113
- export const AsLoadingState: Story = {
114
- args: {},
115
- render: () => <ContactAccessRightsListItemSkeleton />
116
- };