@centreon/ui 24.4.46 → 24.4.48

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 (139) hide show
  1. package/package.json +14 -23
  2. package/public/mockServiceWorker.js +1 -1
  3. package/src/Button/Icon/index.tsx +1 -1
  4. package/src/Button/Save/StartIcon.tsx +3 -3
  5. package/src/Button/Save/index.tsx +5 -9
  6. package/src/Checkbox/Checkbox.tsx +2 -2
  7. package/src/Checkbox/CheckboxGroup/index.tsx +2 -2
  8. package/src/Dashboard/Item.tsx +1 -1
  9. package/src/Dashboard/Layout.tsx +2 -2
  10. package/src/Dialog/index.tsx +1 -1
  11. package/src/FallbackPage/FallbackPage.tsx +3 -3
  12. package/src/FileDropZone/index.tsx +1 -3
  13. package/src/Form/Inputs/CheckboxGroup.tsx +4 -1
  14. package/src/Form/Inputs/index.tsx +1 -3
  15. package/src/Form/Inputs/models.ts +1 -9
  16. package/src/Graph/Gauge/Gauge.tsx +1 -1
  17. package/src/Graph/HeatMap/HeatMap.stories.tsx +25 -0
  18. package/src/Graph/HeatMap/ResponsiveHeatMap.tsx +2 -8
  19. package/src/Graph/LineChart/BasicComponents/Lines/Threshold/Circle.tsx +2 -2
  20. package/src/Graph/LineChart/BasicComponents/Lines/Threshold/index.tsx +4 -5
  21. package/src/Graph/LineChart/BasicComponents/Thresholds.tsx +2 -2
  22. package/src/Graph/LineChart/BasicComponents/useFilterLines.ts +1 -1
  23. package/src/Graph/LineChart/InteractiveComponents/AnchorPoint/GuidingLines.tsx +2 -2
  24. package/src/Graph/LineChart/InteractiveComponents/Annotations/Annotation/index.tsx +3 -2
  25. package/src/Graph/LineChart/InteractiveComponents/Annotations/EventAnnotations.tsx +1 -1
  26. package/src/Graph/LineChart/Legend/Legend.styles.ts +1 -1
  27. package/src/Graph/LineChart/Legend/LegendHeader.tsx +1 -1
  28. package/src/Graph/LineChart/Legend/useInteractiveValues.ts +2 -2
  29. package/src/Graph/LineChart/Legend/useLegend.ts +3 -3
  30. package/src/Graph/LineChart/helpers/doc.ts +13 -16
  31. package/src/Graph/LineChart/helpers/index.ts +1 -1
  32. package/src/Graph/LineChart/index.stories.tsx +2 -4
  33. package/src/Graph/LineChart/index.tsx +1 -1
  34. package/src/Graph/SingleBar/Thresholds.tsx +2 -2
  35. package/src/Graph/Text/Text.stories.tsx +4 -60
  36. package/src/Graph/Text/Text.tsx +1 -1
  37. package/src/Graph/common/timeSeries/index.ts +14 -22
  38. package/src/Graph/common/utils.ts +0 -19
  39. package/src/Graph/index.ts +0 -3
  40. package/src/InputField/Select/Autocomplete/Connected/index.tsx +7 -10
  41. package/src/InputField/Select/Autocomplete/Draggable/SortableList.tsx +1 -1
  42. package/src/InputField/Select/Autocomplete/Draggable/SortableListContent.tsx +1 -1
  43. package/src/InputField/Select/Autocomplete/Draggable/index.tsx +1 -1
  44. package/src/InputField/Select/Autocomplete/index.tsx +115 -121
  45. package/src/InputField/Select/IconPopover/index.tsx +2 -2
  46. package/src/InputField/Select/index.tsx +1 -1
  47. package/src/InputField/Text/index.tsx +2 -2
  48. package/src/Listing/ActionBar/index.tsx +8 -9
  49. package/src/Listing/Cell/DataCell.styles.ts +0 -3
  50. package/src/Listing/Cell/DataCell.tsx +5 -23
  51. package/src/Listing/Header/ListingHeader.tsx +1 -1
  52. package/src/Listing/Listing.cypress.spec.tsx +4 -80
  53. package/src/Listing/Listing.styles.ts +7 -4
  54. package/src/Listing/index.stories.tsx +3 -37
  55. package/src/Listing/index.test.tsx +1 -1
  56. package/src/Listing/index.tsx +3 -4
  57. package/src/Listing/models.ts +0 -1
  58. package/src/Module/index.tsx +4 -2
  59. package/src/RichTextEditor/RichTextEditor.tsx +1 -12
  60. package/src/SortableItems/index.tsx +7 -2
  61. package/src/ThemeProvider/index.tsx +0 -24
  62. package/src/TimePeriods/CustomTimePeriod/CompactCustomTimePeriod.styles.ts +7 -6
  63. package/src/TimePeriods/CustomTimePeriod/PopoverCustomTimePeriod/PickersStartEndDate.tsx +3 -8
  64. package/src/TimePeriods/CustomTimePeriod/PopoverCustomTimePeriod/models.ts +2 -0
  65. package/src/TimePeriods/DateTimePickerInput.tsx +19 -56
  66. package/src/TimePeriods/ResolutionTimePeriod.cypress.spec.tsx +9 -12
  67. package/src/TimePeriods/TimePeriods.cypress.spec.tsx +33 -9
  68. package/src/TimePeriods/helpers/index.ts +1 -1
  69. package/src/TimePeriods/index.stories.tsx +4 -12
  70. package/src/TimePeriods/index.tsx +2 -2
  71. package/src/api/QueryProvider.tsx +1 -1
  72. package/src/api/TestQueryProvider.tsx +1 -1
  73. package/src/api/useFetchQuery/index.ts +23 -27
  74. package/src/api/useMutationQuery/index.test.ts +4 -4
  75. package/src/api/useMutationQuery/index.ts +25 -60
  76. package/src/components/Button/Icon/IconButton.tsx +2 -6
  77. package/src/components/DataTable/DataTable.stories.tsx +0 -40
  78. package/src/components/DataTable/DataTable.styles.ts +0 -3
  79. package/src/components/DataTable/DataTable.tsx +3 -3
  80. package/src/components/DataTable/Item/DataTableItem.styles.ts +2 -7
  81. package/src/components/DataTable/Item/DataTableItem.tsx +4 -4
  82. package/src/components/DataTable/index.ts +1 -3
  83. package/src/components/Form/AccessRights/ShareInput/ContactSwitch.tsx +3 -3
  84. package/src/components/Form/AccessRights/ShareInput/ShareInput.tsx +0 -1
  85. package/src/components/Form/Dashboard/DashboardForm.tsx +12 -15
  86. package/src/components/Layout/PageLayout/PageLayout.tsx +1 -1
  87. package/src/components/Layout/PageLayout/PageLayoutActions.tsx +0 -1
  88. package/src/components/Layout/PageLayout/PageLayoutBody.tsx +0 -1
  89. package/src/components/Layout/PageLayout/PageLayoutHeader.tsx +1 -5
  90. package/src/components/Layout/PageLayout/index.ts +1 -3
  91. package/src/components/Modal/Modal.styles.ts +1 -1
  92. package/src/components/Tooltip/ConfirmationTooltip/ConfirmationTooltip.stories.tsx +3 -3
  93. package/src/components/Tooltip/ConfirmationTooltip/ConfirmationTooltip.tsx +1 -1
  94. package/src/components/Tooltip/ConfirmationTooltip/models.ts +1 -1
  95. package/src/index.ts +2 -2
  96. package/src/queryParameters/url/index.ts +1 -5
  97. package/src/screens/dashboard/DashboardsDetail.stories.tsx +108 -0
  98. package/src/screens/dashboard/DashboardsOverview.stories.tsx +281 -0
  99. package/src/utils/index.ts +1 -1
  100. package/src/utils/useDateTimePickerAdapter.ts +309 -0
  101. package/src/utils/useFullscreen/useFullscreenListener.ts +7 -10
  102. package/src/utils/{useLicenseExpirationWarning.test.tsx → useLicenseExpirationWarning.cypress.spec.tsx} +37 -48
  103. package/src/utils/useLicenseExpirationWarning.ts +18 -18
  104. package/src/Form/Form.cypress.spec.tsx +0 -133
  105. package/src/Form/Inputs/List/Content.tsx +0 -62
  106. package/src/Form/Inputs/List/List.styles.ts +0 -29
  107. package/src/Form/Inputs/List/List.tsx +0 -58
  108. package/src/Form/Inputs/List/useList.ts +0 -81
  109. package/src/Graph/BarStack/BarStack.cypress.spec.tsx +0 -154
  110. package/src/Graph/BarStack/BarStack.stories.tsx +0 -123
  111. package/src/Graph/BarStack/BarStack.styles.ts +0 -36
  112. package/src/Graph/BarStack/BarStack.tsx +0 -14
  113. package/src/Graph/BarStack/ResponsiveBarStack.tsx +0 -208
  114. package/src/Graph/BarStack/index.ts +0 -1
  115. package/src/Graph/BarStack/models.ts +0 -19
  116. package/src/Graph/BarStack/useResponsiveBarStack.ts +0 -139
  117. package/src/Graph/Gauge/Gauge.cypress.spec.tsx +0 -102
  118. package/src/Graph/HeatMap/HeatMap.cypress.spec.tsx +0 -145
  119. package/src/Graph/Legend/Legend.tsx +0 -21
  120. package/src/Graph/Legend/index.ts +0 -1
  121. package/src/Graph/Legend/models.ts +0 -11
  122. package/src/Graph/PieChart/PieChart.cypress.spec.tsx +0 -169
  123. package/src/Graph/PieChart/PieChart.stories.tsx +0 -194
  124. package/src/Graph/PieChart/PieChart.styles.ts +0 -39
  125. package/src/Graph/PieChart/PieChart.tsx +0 -14
  126. package/src/Graph/PieChart/ResponsivePie.tsx +0 -251
  127. package/src/Graph/PieChart/index.ts +0 -1
  128. package/src/Graph/PieChart/models.ts +0 -19
  129. package/src/Graph/PieChart/useResponsivePie.ts +0 -86
  130. package/src/Graph/SingleBar/SingleBar.cypress.spec.tsx +0 -121
  131. package/src/Graph/Text/Text.cypress.spec.tsx +0 -101
  132. package/src/Graph/common/testUtils.ts +0 -71
  133. package/src/Graph/translatedLabels.ts +0 -1
  134. package/src/Module/Module.cypress.spec.tsx +0 -129
  135. package/src/components/DataTable/DataListing.tsx +0 -6
  136. package/src/components/DataTable/DataTable.cypress.spec.tsx +0 -193
  137. package/src/components/Layout/PageLayout/PageQuickAccess.tsx +0 -76
  138. package/src/components/Layout/PageLayout.cypress.spec.tsx +0 -66
  139. package/src/utils/usePluralizedTranslation.ts +0 -21
@@ -1,9 +1,5 @@
1
1
  import { Meta, StoryObj } from '@storybook/react';
2
2
 
3
- import { Box } from '@mui/material';
4
-
5
- import { ColumnType } from '../../Listing/models';
6
-
7
3
  import { DataTable } from './index';
8
4
 
9
5
  const meta: Meta<typeof DataTable> = {
@@ -53,39 +49,3 @@ export const withFixedHeightContainer: Story = {
53
49
  </div>
54
50
  )
55
51
  };
56
-
57
- const ListingTemplate = (args): JSX.Element => (
58
- <Box sx={{ height: '80vh' }}>
59
- <DataTable {...args} />
60
- </Box>
61
- );
62
-
63
- export const listing: Story = {
64
- args: {
65
- children: (
66
- <DataTable.Listing
67
- columns={[
68
- {
69
- getFormattedString: (row) => row.title,
70
- id: 'title',
71
- label: 'Title',
72
- type: ColumnType.string
73
- },
74
- {
75
- getFormattedString: (row) => row.description,
76
- id: 'description',
77
- label: 'Description',
78
- type: ColumnType.string
79
- }
80
- ]}
81
- rows={[...Array(5)].map((_, i) => ({
82
- description: `Item description ${i}`,
83
- id: i,
84
- title: `Item ${i}`
85
- }))}
86
- />
87
- ),
88
- variant: 'listing'
89
- },
90
- render: ListingTemplate
91
- };
@@ -10,9 +10,6 @@ const useStyles = makeStyles()((theme) => ({
10
10
  gridGap: theme.spacing(2.5),
11
11
  gridTemplateColumns: `repeat(auto-fill, ${theme.spacing(45)})`
12
12
  },
13
- '&[data-variant="listing"]': {
14
- height: '100%'
15
- },
16
13
  '&[data-variant][data-is-empty="true"]': {
17
14
  display: 'flex',
18
15
  justifyContent: 'center',
@@ -1,11 +1,11 @@
1
- import { ReactElement, ReactNode } from 'react';
1
+ import React, { ReactElement, ReactNode } from 'react';
2
2
 
3
3
  import { useStyles } from './DataTable.styles';
4
4
 
5
5
  type DataTableProps = {
6
- children?: ReactNode | Array<ReactNode>;
6
+ children: ReactNode | Array<ReactNode>;
7
7
  isEmpty?: boolean;
8
- variant: 'grid' | 'listing';
8
+ variant?: 'grid';
9
9
  };
10
10
 
11
11
  /** *
@@ -1,18 +1,13 @@
1
1
  import { makeStyles } from 'tss-react/mui';
2
2
 
3
3
  const useStyles = makeStyles()((theme) => ({
4
- actions: {
5
- display: 'flex',
6
- flexDirection: 'row',
7
- justifyContent: 'space-between'
8
- },
9
4
  dataTableItem: {
10
5
  '& .MuiCardActionArea-root': {
11
6
  alignItems: 'flex-start',
12
7
  display: 'flex',
13
8
  flexDirection: 'column',
14
9
  height: '100%',
15
- justifyContent: 'flex-start'
10
+ justifyContent: 'space-between'
16
11
  },
17
12
  '& .MuiCardActions-root': {
18
13
  '& > span': {
@@ -20,13 +15,13 @@ const useStyles = makeStyles()((theme) => ({
20
15
  gap: theme.spacing(1)
21
16
  },
22
17
  display: 'flex',
18
+
23
19
  justifyContent: 'space-between'
24
20
  },
25
21
  borderRadius: theme.shape.borderRadius,
26
22
  display: 'flex',
27
23
  flexDirection: 'column',
28
24
  height: '186px',
29
- justifyContent: 'space-between',
30
25
  p: {
31
26
  color: theme.palette.text.secondary,
32
27
  letterSpacing: '0',
@@ -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,20 +76,20 @@ const DataTableItem = forwardRef(
76
76
  {hasActions && (
77
77
  <MuiCardActions>
78
78
  <span>
79
- {onDelete && labelsDelete && (
79
+ {onDelete && (
80
80
  <ConfirmationTooltip
81
81
  confirmVariant="error"
82
82
  labels={labelsDelete}
83
83
  onConfirm={onDelete}
84
84
  >
85
- {({ toggleTooltip }) => (
85
+ {(openTooltip) => (
86
86
  <IconButton
87
87
  aria-label="delete"
88
88
  data-testid="delete"
89
89
  icon={<DeleteIcon />}
90
90
  size="small"
91
91
  variant="ghost"
92
- onClick={toggleTooltip}
92
+ onClick={openTooltip}
93
93
  />
94
94
  )}
95
95
  </ConfirmationTooltip>
@@ -2,11 +2,9 @@ import { DataTable as DataTableRoot } from './DataTable';
2
2
  import { DataTableItem } from './Item/DataTableItem';
3
3
  import { DataTableItemSkeleton } from './Item/DataTableItemSkeleton';
4
4
  import { DataTableEmptyState } from './EmptyState/DataTableEmptyState';
5
- import { DataListing } from './DataListing';
6
5
 
7
6
  export const DataTable = Object.assign(DataTableRoot, {
8
7
  EmptyState: DataTableEmptyState,
9
8
  Item: DataTableItem,
10
- ItemSkeleton: DataTableItemSkeleton,
11
- Listing: DataListing
9
+ ItemSkeleton: DataTableItemSkeleton
12
10
  });
@@ -1,4 +1,4 @@
1
- import { useAtom } from 'jotai';
1
+ import { useSetAtom } from 'jotai';
2
2
  import { useTranslation } from 'react-i18next';
3
3
 
4
4
  import { FormControlLabel, Radio, RadioGroup } from '@mui/material';
@@ -17,7 +17,7 @@ const ContactSwitch = ({ labels }: Props): JSX.Element => {
17
17
  const { classes } = useContactSwitchStyles();
18
18
  const { t } = useTranslation();
19
19
 
20
- const [contactType, setContactType] = useAtom(contactTypeAtom);
20
+ const setContactType = useSetAtom(contactTypeAtom);
21
21
 
22
22
  const change = (event: React.ChangeEvent<HTMLInputElement>): void => {
23
23
  setContactType(event.target.value as ContactType);
@@ -29,7 +29,7 @@ const ContactSwitch = ({ labels }: Props): JSX.Element => {
29
29
  <RadioGroup
30
30
  row
31
31
  className={classes.inputs}
32
- value={contactType}
32
+ defaultValue={ContactType.Contact}
33
33
  onChange={change}
34
34
  >
35
35
  <FormControlLabel
@@ -52,7 +52,6 @@ const ShareInput = ({ labels, endpoints, roles }: Props): JSX.Element => {
52
52
  ? t(labels.autocompleteContactGroup)
53
53
  : t(labels.autocompleteContact)
54
54
  )}
55
- queryKey={isContactGroup ? labels.contactGroup : labels.contact}
56
55
  renderOption={renderOption}
57
56
  value={selectedContact}
58
57
  onChange={selectContact}
@@ -1,8 +1,7 @@
1
1
  import { ReactElement, useCallback, useMemo } from 'react';
2
2
 
3
- import { string, number, object } from 'yup';
3
+ import * as Yup from 'yup';
4
4
  import { useTranslation } from 'react-i18next';
5
- import { equals } from 'ramda';
6
5
 
7
6
  import { InputType } from '../../../Form/Inputs/models';
8
7
  import { Form, FormProps } from '../../../Form';
@@ -85,8 +84,8 @@ const DashboardForm = ({
85
84
  }
86
85
  ],
87
86
  submit: (values, bag) => onSubmit?.(values, bag),
88
- validationSchema: object({
89
- description: string()
87
+ validationSchema: Yup.object().shape({
88
+ description: Yup.string()
90
89
  .label(labels?.entity?.description || '')
91
90
  .max(
92
91
  180,
@@ -94,19 +93,17 @@ const DashboardForm = ({
94
93
  `${p.label} ${t(labelMustBeMost)} ${p.max} ${t(labelCharacters)}`
95
94
  )
96
95
  .nullable(),
97
- globalRefreshInterval: object({
98
- interval: number().when('type', ([type], schema) => {
99
- if (equals(type, 'manual')) {
100
- schema
101
- .min(1, ({ min }) => t(labelMustBeAtLeast, { min }))
102
- .required(t(labelRequired) as string);
103
- }
104
-
105
- return schema.nullable();
96
+ globalRefreshInterval: Yup.object().shape({
97
+ interval: Yup.number().when('type', {
98
+ is: 'global',
99
+ otherwise: Yup.number().nullable(),
100
+ then: Yup.number()
101
+ .min(1, ({ min }) => t(labelMustBeAtLeast, { min }))
102
+ .required(t(labelRequired) as string)
106
103
  }),
107
- type: string()
104
+ type: Yup.string()
108
105
  }),
109
- name: string()
106
+ name: Yup.string()
110
107
  .label(labels?.entity?.name)
111
108
  .min(3, ({ min, label }) => t(labelMustBeAtLeast, { label, min }))
112
109
  .max(50, ({ max, label }) => t(labelMustBeMost, { label, max }))
@@ -14,7 +14,7 @@ export const PageLayout = ({
14
14
  const { classes } = useStyles();
15
15
 
16
16
  return (
17
- <section className={classes.pageLayout} data-variant={variant} id="page">
17
+ <section className={classes.pageLayout} data-variant={variant}>
18
18
  {children}
19
19
  </section>
20
20
  );
@@ -17,7 +17,6 @@ export const PageLayoutActions = ({
17
17
  <section
18
18
  className={classes.pageLayoutActions}
19
19
  data-row-reverse={rowReverse}
20
- id="actions"
21
20
  >
22
21
  {children}
23
22
  </section>
@@ -17,7 +17,6 @@ export const PageLayoutBody = ({
17
17
  <section
18
18
  className={classes.pageLayoutBody}
19
19
  data-has-background={hasBackground}
20
- id="page-body"
21
20
  >
22
21
  {children}
23
22
  </section>
@@ -11,9 +11,5 @@ export const PageLayoutHeader = ({
11
11
  }: PageLayoutHeaderProps): JSX.Element => {
12
12
  const { classes } = useStyles();
13
13
 
14
- return (
15
- <header className={classes.pageLayoutHeader} id="header">
16
- {children}
17
- </header>
18
- );
14
+ return <header className={classes.pageLayoutHeader}>{children}</header>;
19
15
  };
@@ -2,11 +2,9 @@ import { PageLayout as PageLayoutRoot } from './PageLayout';
2
2
  import { PageLayoutHeader } from './PageLayoutHeader';
3
3
  import { PageLayoutBody } from './PageLayoutBody';
4
4
  import { PageLayoutActions } from './PageLayoutActions';
5
- import { PageQuickAccess } from './PageQuickAccess';
6
5
 
7
6
  export const PageLayout = Object.assign(PageLayoutRoot, {
8
7
  Actions: PageLayoutActions,
9
8
  Body: PageLayoutBody,
10
- Header: PageLayoutHeader,
11
- QuickAccess: PageQuickAccess
9
+ Header: PageLayoutHeader
12
10
  });
@@ -57,7 +57,7 @@ const useStyles = makeStyles<{
57
57
  flexDirection: 'row',
58
58
  gap: theme.spacing(2),
59
59
  justifyContent: 'flex-end',
60
- right: theme.spacing(2.5)
60
+ right: theme.spacing(2)
61
61
  },
62
62
  modalBody: {
63
63
  '& > p': {
@@ -15,7 +15,7 @@ type Story = StoryObj<typeof ConfirmationTooltip>;
15
15
 
16
16
  export const Default: Story = {
17
17
  args: {
18
- children: ({ toggleTooltip }) => (
18
+ children: (toggleTooltip) => (
19
19
  <IconButton icon={<SaveIcon />} onClick={toggleTooltip} />
20
20
  ),
21
21
  labels: {
@@ -30,7 +30,7 @@ export const Default: Story = {
30
30
 
31
31
  export const WithConfirmVariant: Story = {
32
32
  args: {
33
- children: ({ toggleTooltip }) => (
33
+ children: (toggleTooltip) => (
34
34
  <IconButton icon={<DeleteIcon color="error" />} onClick={toggleTooltip} />
35
35
  ),
36
36
  confirmVariant: 'error',
@@ -46,7 +46,7 @@ export const WithConfirmVariant: Story = {
46
46
 
47
47
  export const WithSecondaryLabel: Story = {
48
48
  args: {
49
- children: ({ toggleTooltip }) => (
49
+ children: (toggleTooltip) => (
50
50
  <IconButton icon={<DeleteIcon color="error" />} onClick={toggleTooltip} />
51
51
  ),
52
52
  confirmVariant: 'error',
@@ -49,7 +49,7 @@ export const ConfirmationTooltip = ({
49
49
  return (
50
50
  <ClickAwayListener onClickAway={close}>
51
51
  <div>
52
- {children({ isOpen, toggleTooltip: isOpen ? close : open })}
52
+ {children(isOpen ? close : open)}
53
53
  <Popper
54
54
  anchorEl={anchorElement}
55
55
  className={classes.popper}
@@ -11,7 +11,7 @@ interface Labels {
11
11
  }
12
12
 
13
13
  export interface Props {
14
- children: ({ toggleTooltip, isOpen }) => ReactElement;
14
+ children: (toggleTooltip) => ReactElement;
15
15
  confirmVariant?: ActionVariants;
16
16
  labels: Labels;
17
17
  onConfirm: () => void;
package/src/index.ts CHANGED
@@ -163,8 +163,8 @@ export * from './Graph/common/timeSeries';
163
163
 
164
164
  export { default as TimePeriods } from './TimePeriods';
165
165
  export { default as SimpleCustomTimePeriod } from './TimePeriods/CustomTimePeriod/SimpleCustomTimePeriod';
166
- export { default as DateTimePickerInput } from './TimePeriods/DateTimePickerInput';
167
166
  export * from './ParentSize';
168
- export { default as Subtitle } from './Typography/Subtitle';
167
+
169
168
  export { default as TablePagination } from './Listing/ActionBar/Pagination';
170
169
  export { default as PaginationActions } from './Listing/ActionBar/PaginationActions';
170
+ export { default as Subtitle } from './Typography/Subtitle';
@@ -1,4 +1,4 @@
1
- import { fromPairs, startsWith } from 'ramda';
1
+ import { fromPairs } from 'ramda';
2
2
 
3
3
  import { QueryParameter } from '../models';
4
4
 
@@ -25,10 +25,6 @@ const getUrlQueryParameters = <
25
25
 
26
26
  const entries = [...urlParams.entries()].map<[string, string]>(
27
27
  ([key, value]) => {
28
- if (startsWith('/', value)) {
29
- return [key, value];
30
- }
31
-
32
28
  return [key, JSON.parse(value)];
33
29
  }
34
30
  );
@@ -0,0 +1,108 @@
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
+ };