@centreon/ui 23.10.32 → 23.10.34-MON-19940-Add-testIds-cloud-notifications.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.
Files changed (90) hide show
  1. package/package.json +12 -2
  2. package/src/Dashboard/DashboardLayout.stories.tsx +3 -5
  3. package/src/Dashboard/Layout.tsx +4 -4
  4. package/src/Dashboard/utils.ts +28 -28
  5. package/src/Dialog/index.tsx +20 -1
  6. package/src/ThemeProvider/index.tsx +6 -5
  7. package/src/ThemeProvider/palettes.ts +389 -215
  8. package/src/api/TestQueryProvider.tsx +2 -1
  9. package/src/api/useFetchQuery/index.ts +8 -7
  10. package/src/api/useMutationQuery/index.ts +11 -10
  11. package/src/base/tokens/README.md +3 -0
  12. package/src/base/tokens/source/$metadata.json +5 -0
  13. package/src/base/tokens/source/base.json +142 -0
  14. package/src/base/tokens/themes/base.tokens.d.ts +38 -0
  15. package/src/base/tokens/themes/base.tokens.json +695 -0
  16. package/src/base/tokens/themes/base.tokens.ts +38 -0
  17. package/src/base/tokens/themes/ui-dark.tokens.d.ts +38 -0
  18. package/src/base/tokens/themes/ui-dark.tokens.json +695 -0
  19. package/src/base/tokens/themes/ui-dark.tokens.ts +38 -0
  20. package/src/base/tokens/themes/ui-light.tokens.d.ts +38 -0
  21. package/src/base/tokens/themes/ui-light.tokens.json +695 -0
  22. package/src/base/tokens/themes/ui-light.tokens.ts +38 -0
  23. package/src/components/Button/Button.styles.ts +17 -3
  24. package/src/components/Button/Button.tsx +6 -3
  25. package/src/components/Button/Icon/IconButton.styles.ts +9 -2
  26. package/src/components/DataTable/DataTable.stories.tsx +9 -0
  27. package/src/components/DataTable/DataTable.styles.ts +5 -0
  28. package/src/components/DataTable/DataTable.tsx +8 -6
  29. package/src/components/DataTable/EmptyState/DataTableEmptyState.tsx +4 -1
  30. package/src/components/DataTable/Item/DataTableItem.styles.ts +5 -2
  31. package/src/components/DataTable/Item/DataTableItem.tsx +36 -18
  32. package/src/components/Header/Header.styles.ts +0 -27
  33. package/src/components/Header/PageHeader/PageHeader.stories.tsx +88 -0
  34. package/src/components/Header/PageHeader/PageHeader.styles.ts +99 -0
  35. package/src/components/Header/PageHeader/PageHeader.tsx +15 -0
  36. package/src/components/Header/PageHeader/PageHeaderActions.tsx +17 -0
  37. package/src/components/Header/PageHeader/PageHeaderMain.tsx +15 -0
  38. package/src/components/Header/PageHeader/PageHeaderMenu.tsx +15 -0
  39. package/src/components/Header/PageHeader/PageHeaderTitle.tsx +47 -0
  40. package/src/components/Header/PageHeader/index.ts +12 -0
  41. package/src/components/Header/index.ts +1 -1
  42. package/src/components/Layout/AreaIndicator.styles.ts +33 -0
  43. package/src/components/Layout/AreaIndicator.tsx +35 -0
  44. package/src/components/Layout/PageLayout/PageLayout.stories.tsx +81 -0
  45. package/src/components/Layout/PageLayout/PageLayout.styles.ts +40 -0
  46. package/src/components/Layout/PageLayout/PageLayout.tsx +21 -0
  47. package/src/components/Layout/PageLayout/PageLayoutActions.tsx +15 -0
  48. package/src/components/Layout/PageLayout/PageLayoutBody.tsx +24 -0
  49. package/src/components/Layout/PageLayout/PageLayoutHeader.tsx +15 -0
  50. package/src/components/Layout/PageLayout/index.ts +10 -0
  51. package/src/components/Layout/index.ts +1 -0
  52. package/src/components/Menu/Button/MenuButton.stories.tsx +16 -0
  53. package/src/components/Menu/Button/MenuButton.styles.ts +27 -0
  54. package/src/components/Menu/Button/MenuButton.tsx +62 -0
  55. package/src/components/Menu/Button/index.ts +1 -0
  56. package/src/components/Menu/Menu.stories.tsx +71 -0
  57. package/src/components/Menu/Menu.styles.ts +70 -0
  58. package/src/components/Menu/Menu.tsx +25 -0
  59. package/src/components/Menu/MenuDivider.tsx +13 -0
  60. package/src/components/Menu/MenuItem.tsx +36 -0
  61. package/src/components/Menu/MenuItems.tsx +35 -0
  62. package/src/components/Menu/index.ts +12 -0
  63. package/src/components/Menu/useMenu.tsx +79 -0
  64. package/src/components/Modal/index.ts +2 -0
  65. package/src/components/Tooltip/TextOverflowTooltip/TextOverflowTooltip.stories.tsx +70 -0
  66. package/src/components/Tooltip/TextOverflowTooltip/TextOverflowTooltip.styles.ts +5 -0
  67. package/src/components/Tooltip/TextOverflowTooltip/TextOverflowTooltip.tsx +115 -0
  68. package/src/components/Tooltip/TextOverflowTooltip/index.tsx +1 -0
  69. package/src/components/Tooltip/Tooltip.stories.tsx +41 -0
  70. package/src/components/Tooltip/Tooltip.styles.ts +5 -0
  71. package/src/components/Tooltip/Tooltip.tsx +46 -0
  72. package/src/components/Tooltip/index.ts +1 -0
  73. package/src/components/index.ts +3 -0
  74. package/src/index.ts +0 -2
  75. package/src/screens/dashboard/DashboardsDetail.stories.tsx +108 -0
  76. package/src/screens/dashboard/DashboardsOverview.stories.tsx +110 -102
  77. package/src/styles/tokens/themes/_ui-dark.tokens.json +695 -0
  78. package/src/styles/tokens/themes/_ui-light.tokens.json +695 -0
  79. package/src/utils/index.ts +1 -1
  80. package/src/utils/sanitizedHTML.ts +1 -1
  81. package/src/utils/useResizeObserver.ts +6 -0
  82. package/test/setupTests.js +1 -1
  83. package/src/components/Header/Header.stories.tsx +0 -27
  84. package/src/components/Header/Header.tsx +0 -23
  85. package/src/layout/TiledListingPage/TiledListingActions.tsx +0 -15
  86. package/src/layout/TiledListingPage/TiledListingContent.tsx +0 -21
  87. package/src/layout/TiledListingPage/TiledListingList.tsx +0 -11
  88. package/src/layout/TiledListingPage/TiledListingPage.styles.ts +0 -16
  89. package/src/layout/TiledListingPage/TiledListingPage.tsx +0 -15
  90. package/src/layout/TiledListingPage/index.ts +0 -4
@@ -1,215 +1,389 @@
1
- import { equals } from 'ramda';
2
-
3
- import { alpha, PaletteOptions } from '@mui/material';
4
-
5
- import { ThemeMode } from '@centreon/ui-context';
6
-
7
- declare module '@mui/material/styles/createPalette' {
8
- interface TypeAction {
9
- acknowledged: string;
10
- acknowledgedBackground: string;
11
- inDowntime: string;
12
- inDowntimeBackground: string;
13
- }
14
- }
15
-
16
- declare module '@mui/material/styles' {
17
- interface Palette {
18
- background: {
19
- default: string;
20
- listingHeader: string;
21
- panel: string;
22
- panelGroups: string;
23
- paper: string;
24
- tooltip: string;
25
- };
26
- pending: {
27
- contrastText: string;
28
- main: string;
29
- };
30
- statusBackground: StatusBackground;
31
- }
32
- interface StatusBackground {
33
- error: string;
34
- none: string;
35
- pending: string;
36
- success: string;
37
- unknown: string;
38
- warning: string;
39
- }
40
- interface PaletteOptions {
41
- pending: {
42
- contrastText: string;
43
- main: string;
44
- };
45
- statusBackground: StatusBackground;
46
- }
47
-
48
- interface TypeBackground {
49
- default: string;
50
- listingHeader: string;
51
- panel: string;
52
- panelGroups: string;
53
- paper: string;
54
- tooltip: string;
55
- }
56
- }
57
-
58
- declare module '@mui/material/Button' {
59
- interface ButtonPropsColorOverrides {
60
- pending: true;
61
- }
62
- }
63
-
64
- declare module '@mui/material/Badge' {
65
- interface BadgePropsColorOverrides {
66
- pending: true;
67
- }
68
- }
69
-
70
- export const lightPalette: PaletteOptions = {
71
- action: {
72
- acknowledged: '#67532C',
73
- acknowledgedBackground: '#F5F1E9',
74
- activatedOpacity: 0.12,
75
- active: '#666666',
76
- disabled: '#999999',
77
- disabledBackground: 'rgba(0, 0, 0, 0.12)',
78
- focus: 'rgba(0, 0, 0, 0.12)',
79
- focusOpacity: 0.12,
80
- hover: 'rgba(0, 0, 0, 0.06)',
81
- hoverOpacity: 0.06,
82
- inDowntime: '#4B2352',
83
- inDowntimeBackground: '#F0E9F8',
84
- selected: 'rgba(102, 102, 102, 0.3)',
85
- selectedOpacity: 0.3
86
- },
87
- background: {
88
- default: '#F4F4F4',
89
- listingHeader: '#666666',
90
- panel: '#EDEDED',
91
- panelGroups: '#F5F5F5',
92
- paper: '#FFFFFF',
93
- tooltip: '#434E5B'
94
- },
95
- divider: '#E3E3E3',
96
- error: {
97
- contrastText: '#000',
98
- main: '#FF4A4A'
99
- },
100
- info: {
101
- contrastText: '#000',
102
- main: '#1588D1'
103
- },
104
- mode: ThemeMode.light,
105
- pending: {
106
- contrastText: '#000',
107
- main: '#1EBEB3'
108
- },
109
- primary: {
110
- contrastText: '#fff',
111
- dark: '#255891',
112
- light: '#cde7fc',
113
- main: '#2E68AA'
114
- },
115
- secondary: {
116
- contrastText: '#fff',
117
- main: '#C772D6'
118
- },
119
- statusBackground: {
120
- error: '#FF6666',
121
- none: alpha('#2E68AA', 0.1),
122
- pending: '#1EBEB3',
123
- success: '#88B922',
124
- unknown: '#E3E3E3',
125
- warning: '#FD9B27'
126
- },
127
- success: {
128
- contrastText: '#000',
129
- main: '#88B922'
130
- },
131
- text: {
132
- disabled: '#999999',
133
- primary: '#000000',
134
- secondary: '#666666'
135
- },
136
- warning: {
137
- contrastText: '#000',
138
- main: '#FD9B27'
139
- }
140
- };
141
-
142
- export const darkPalette: PaletteOptions = {
143
- action: {
144
- acknowledged: '#67532C',
145
- acknowledgedBackground: '#67532C',
146
- activatedOpacity: 0.3,
147
- active: '#B5B5B5',
148
- disabled: '#999999',
149
- disabledBackground: '#555555',
150
- focus: 'rgba(255, 255, 255, 0.30)',
151
- focusOpacity: 0.3,
152
- hover: 'rgba(255, 255, 255, 0.16)',
153
- hoverOpacity: 0.16,
154
- inDowntime: '#4B2352',
155
- inDowntimeBackground: '#4B2352',
156
- selected: 'rgba(255, 255, 255, 0.5)',
157
- selectedOpacity: 0.5
158
- },
159
- background: {
160
- default: '#4a4a4a',
161
- listingHeader: '#666666',
162
- panel: '#4a4a4a',
163
- panelGroups: '#252525',
164
- paper: '#212121',
165
- tooltip: '#AAB4C0'
166
- },
167
- divider: '#666666',
168
- error: {
169
- contrastText: '#fff',
170
- main: '#D60101'
171
- },
172
- info: {
173
- contrastText: '#fff',
174
- main: '#1CA9F4'
175
- },
176
- mode: ThemeMode.dark,
177
- pending: {
178
- contrastText: '#fff',
179
- main: '#118077'
180
- },
181
- primary: {
182
- contrastText: '#000',
183
- dark: '#4974A5',
184
- light: '#8bbff9',
185
- main: '#6eaff8'
186
- },
187
- secondary: {
188
- contrastText: '#fff',
189
- main: '#7C1FA2'
190
- },
191
- statusBackground: {
192
- error: '#D60101',
193
- none: alpha('#2E68AA', 0.1),
194
- pending: '#118077',
195
- success: '#5F8118',
196
- unknown: '#666666',
197
- warning: '#C55400'
198
- },
199
- success: {
200
- contrastText: '#fff',
201
- main: '#5F8118'
202
- },
203
- text: {
204
- disabled: '#666666',
205
- primary: '#FFFFFF',
206
- secondary: '#CCCCCC'
207
- },
208
- warning: {
209
- contrastText: '#fff',
210
- main: '#C55400'
211
- }
212
- };
213
-
214
- export const getPalette = (mode: ThemeMode): PaletteOptions =>
215
- equals(mode, ThemeMode.dark) ? darkPalette : lightPalette;
1
+ import { equals } from 'ramda';
2
+
3
+ import { alpha, PaletteOptions } from '@mui/material';
4
+
5
+ import { ThemeMode } from '@centreon/ui-context';
6
+
7
+ import * as BaseTokens from '../base/tokens/themes/base.tokens';
8
+
9
+ declare module '@mui/material/styles/createPalette' {
10
+ interface TypeAction {
11
+ acknowledged: string;
12
+ acknowledgedBackground: string;
13
+ inDowntime: string;
14
+ inDowntimeBackground: string;
15
+ }
16
+ }
17
+
18
+ declare module '@mui/material/styles' {
19
+ interface Palette {
20
+ background: TypeBackground;
21
+ header: TypeHeader;
22
+ layout: TypeLayout;
23
+ menu: TypeMenu;
24
+ pending: {
25
+ contrastText: string;
26
+ main: string;
27
+ };
28
+ statusBackground: StatusBackground;
29
+ }
30
+ interface StatusBackground {
31
+ error: string;
32
+ none: string;
33
+ pending: string;
34
+ success: string;
35
+ unknown: string;
36
+ warning: string;
37
+ }
38
+ interface PaletteOptions {
39
+ header: TypeHeader;
40
+ layout: TypeLayout;
41
+ menu: TypeMenu;
42
+ pending: {
43
+ contrastText: string;
44
+ main: string;
45
+ };
46
+ statusBackground: StatusBackground;
47
+ }
48
+
49
+ interface TypeBackground {
50
+ default: string;
51
+ listingHeader: string;
52
+ panel: string;
53
+ panelGroups: string;
54
+ paper: string;
55
+ tooltip: string;
56
+ }
57
+
58
+ interface TypeLayout {
59
+ body: {
60
+ background: string;
61
+ };
62
+ header: {
63
+ background: string;
64
+ border: string;
65
+ };
66
+ }
67
+
68
+ interface TypeHeader {
69
+ page: {
70
+ action: {
71
+ background: {
72
+ active: string;
73
+ default: string;
74
+ };
75
+ color: {
76
+ active: string;
77
+ default: string;
78
+ };
79
+ };
80
+ border: string;
81
+ description: string;
82
+ title: string;
83
+ };
84
+ }
85
+
86
+ interface TypeMenu {
87
+ background: string;
88
+ button: {
89
+ background: {
90
+ active: string;
91
+ default: string;
92
+ hover: string;
93
+ };
94
+ color: {
95
+ active: string;
96
+ default: string;
97
+ hover: string;
98
+ };
99
+ };
100
+ divider: {
101
+ border: string;
102
+ };
103
+ item: {
104
+ background: {
105
+ active: string;
106
+ default: string;
107
+ hover: string;
108
+ };
109
+ color: {
110
+ active: string;
111
+ default: string;
112
+ hover: string;
113
+ };
114
+ };
115
+ }
116
+ }
117
+
118
+ declare module '@mui/material/Button' {
119
+ interface ButtonPropsColorOverrides {
120
+ pending: true;
121
+ }
122
+ }
123
+
124
+ declare module '@mui/material/Badge' {
125
+ interface BadgePropsColorOverrides {
126
+ pending: true;
127
+ }
128
+ }
129
+
130
+ export const lightPalette: PaletteOptions = {
131
+ action: {
132
+ acknowledged: '#67532C',
133
+ acknowledgedBackground: '#F5F1E9',
134
+ activatedOpacity: 0.12,
135
+ active: '#666666',
136
+ disabled: '#999999',
137
+ disabledBackground: 'rgba(0, 0, 0, 0.12)',
138
+ focus: 'rgba(0, 0, 0, 0.12)',
139
+ focusOpacity: 0.12,
140
+ hover: 'rgba(0, 0, 0, 0.06)',
141
+ hoverOpacity: 0.06,
142
+ inDowntime: '#4B2352',
143
+ inDowntimeBackground: '#F0E9F8',
144
+ selected: 'rgba(102, 102, 102, 0.3)',
145
+ selectedOpacity: 0.3
146
+ },
147
+ background: {
148
+ default: '#F4F4F4',
149
+ listingHeader: '#666666',
150
+ panel: '#EDEDED',
151
+ panelGroups: '#F5F5F5',
152
+ paper: '#FFFFFF',
153
+ tooltip: '#434E5B'
154
+ },
155
+ divider: '#E3E3E3',
156
+ error: {
157
+ contrastText: '#000',
158
+ main: '#FF4A4A'
159
+ },
160
+ header: {
161
+ page: {
162
+ action: {
163
+ background: {
164
+ active: '#1975D10F',
165
+ default: '#FFFFFF00'
166
+ },
167
+ color: {
168
+ active: '#1976D2',
169
+ default: '#696969'
170
+ }
171
+ },
172
+ border: '#4A4A4A',
173
+ description: '#4A4A4A',
174
+ title: '#000000'
175
+ }
176
+ },
177
+ info: {
178
+ contrastText: '#000',
179
+ main: '#1588D1'
180
+ },
181
+ layout: {
182
+ body: {
183
+ background: '#F6F6F6'
184
+ },
185
+ header: {
186
+ background: '#FFFFFF',
187
+ border: '#E3E3E3'
188
+ }
189
+ },
190
+ menu: {
191
+ background: '#FFFFFF',
192
+ button: {
193
+ background: {
194
+ active: BaseTokens.colorBlue50,
195
+ default: 'transparent',
196
+ hover: BaseTokens.colorGrey50
197
+ },
198
+ color: {
199
+ active: BaseTokens.colorBlue400,
200
+ default: BaseTokens.colorGrey400,
201
+ hover: BaseTokens.colorGrey500
202
+ }
203
+ },
204
+ divider: {
205
+ border: BaseTokens.colorGrey200
206
+ },
207
+ item: {
208
+ background: {
209
+ active: BaseTokens.colorBlue50,
210
+ default: 'transparent',
211
+ hover: BaseTokens.colorGrey50
212
+ },
213
+ color: {
214
+ active: BaseTokens.colorBlue400,
215
+ default: BaseTokens.colorGrey900,
216
+ hover: BaseTokens.colorGrey950
217
+ }
218
+ }
219
+ },
220
+ mode: ThemeMode.light,
221
+ pending: {
222
+ contrastText: '#000',
223
+ main: '#1EBEB3'
224
+ },
225
+ primary: {
226
+ contrastText: '#fff',
227
+ dark: '#255891',
228
+ light: '#cde7fc',
229
+ main: '#2E68AA'
230
+ },
231
+ secondary: {
232
+ contrastText: '#fff',
233
+ dark: '#ac28c1',
234
+ light: '#e5a5f0',
235
+ main: '#C772D6'
236
+ },
237
+ statusBackground: {
238
+ error: '#FF6666',
239
+ none: alpha('#2E68AA', 0.1),
240
+ pending: '#1EBEB3',
241
+ success: '#88B922',
242
+ unknown: '#E3E3E3',
243
+ warning: '#FD9B27'
244
+ },
245
+ success: {
246
+ contrastText: '#000',
247
+ main: '#88B922'
248
+ },
249
+ text: {
250
+ disabled: '#999999',
251
+ primary: '#000000',
252
+ secondary: '#666666'
253
+ },
254
+ warning: {
255
+ contrastText: '#000',
256
+ main: '#FD9B27'
257
+ }
258
+ };
259
+
260
+ export const darkPalette: PaletteOptions = {
261
+ action: {
262
+ acknowledged: '#67532C',
263
+ acknowledgedBackground: '#67532C',
264
+ activatedOpacity: 0.3,
265
+ active: '#B5B5B5',
266
+ disabled: '#999999',
267
+ disabledBackground: '#555555',
268
+ focus: 'rgba(255, 255, 255, 0.30)',
269
+ focusOpacity: 0.3,
270
+ hover: 'rgba(255, 255, 255, 0.16)',
271
+ hoverOpacity: 0.16,
272
+ inDowntime: '#4B2352',
273
+ inDowntimeBackground: '#4B2352',
274
+ selected: 'rgba(255, 255, 255, 0.5)',
275
+ selectedOpacity: 0.5
276
+ },
277
+ background: {
278
+ default: '#4a4a4a',
279
+ listingHeader: '#666666',
280
+ panel: '#4a4a4a',
281
+ panelGroups: '#252525',
282
+ paper: '#212121',
283
+ tooltip: '#AAB4C0'
284
+ },
285
+ divider: '#666666',
286
+ error: {
287
+ contrastText: '#fff',
288
+ main: '#D60101'
289
+ },
290
+ header: {
291
+ page: {
292
+ action: {
293
+ background: {
294
+ active: '#1975D10F',
295
+ default: '#FFFFFF00'
296
+ },
297
+ color: {
298
+ active: '#1976D2',
299
+ default: '#696969'
300
+ }
301
+ },
302
+ border: '#bdbdbd',
303
+ description: '#bdbdbd',
304
+ title: '#fff'
305
+ }
306
+ },
307
+ info: {
308
+ contrastText: '#fff',
309
+ main: '#1CA9F4'
310
+ },
311
+ layout: {
312
+ body: {
313
+ background: '#F6F6F6'
314
+ },
315
+ header: {
316
+ background: '#FFFFFF',
317
+ border: '#E3E3E3'
318
+ }
319
+ },
320
+ menu: {
321
+ background: BaseTokens.colorGrey950,
322
+ button: {
323
+ background: {
324
+ active: BaseTokens.colorBlue950,
325
+ default: 'transparent',
326
+ hover: BaseTokens.colorGrey950
327
+ },
328
+ color: {
329
+ active: BaseTokens.colorBlue600,
330
+ default: BaseTokens.colorGrey600,
331
+ hover: BaseTokens.colorGrey500
332
+ }
333
+ },
334
+ divider: {
335
+ border: BaseTokens.colorGrey800
336
+ },
337
+ item: {
338
+ background: {
339
+ active: BaseTokens.colorBlue950,
340
+ default: 'transparent',
341
+ hover: BaseTokens.colorGrey950
342
+ },
343
+ color: {
344
+ active: BaseTokens.colorBlue400,
345
+ default: BaseTokens.colorGrey50,
346
+ hover: '#fff'
347
+ }
348
+ }
349
+ },
350
+ mode: ThemeMode.dark,
351
+ pending: {
352
+ contrastText: '#fff',
353
+ main: '#118077'
354
+ },
355
+ primary: {
356
+ contrastText: '#000',
357
+ dark: '#4974A5',
358
+ light: '#8bbff9',
359
+ main: '#6eaff8'
360
+ },
361
+ secondary: {
362
+ contrastText: '#fff',
363
+ main: '#7C1FA2'
364
+ },
365
+ statusBackground: {
366
+ error: '#D60101',
367
+ none: alpha('#2E68AA', 0.1),
368
+ pending: '#118077',
369
+ success: '#5F8118',
370
+ unknown: '#666666',
371
+ warning: '#C55400'
372
+ },
373
+ success: {
374
+ contrastText: '#fff',
375
+ main: '#5F8118'
376
+ },
377
+ text: {
378
+ disabled: '#666666',
379
+ primary: '#FFFFFF',
380
+ secondary: '#CCCCCC'
381
+ },
382
+ warning: {
383
+ contrastText: '#fff',
384
+ main: '#C55400'
385
+ }
386
+ };
387
+
388
+ export const getPalette = (mode: ThemeMode): PaletteOptions =>
389
+ equals(mode, ThemeMode.dark) ? darkPalette : lightPalette;
@@ -5,7 +5,8 @@ import { QueryClient, QueryClientProvider } from '@tanstack/react-query';
5
5
  const client = new QueryClient({
6
6
  defaultOptions: {
7
7
  queries: {
8
- cacheTime: 0
8
+ cacheTime: 0,
9
+ retry: false
9
10
  }
10
11
  }
11
12
  });
@@ -1,4 +1,4 @@
1
- import { useEffect } from 'react';
1
+ import { useEffect, useMemo } from 'react';
2
2
 
3
3
  import 'ulog';
4
4
  import {
@@ -30,14 +30,13 @@ export interface UseFetchQueryProps<T> {
30
30
  >;
31
31
  }
32
32
 
33
- export interface UseFetchQueryState<T>
34
- extends Omit<QueryObserverBaseResult, 'data'> {
33
+ export type UseFetchQueryState<T> = {
35
34
  data?: T;
36
35
  fetchQuery: () => Promise<T | ResponseError>;
37
36
  prefetchNextPage: ({ page, getPrefetchQueryKey }) => void;
38
37
  prefetchPreviousPage: ({ page, getPrefetchQueryKey }) => void;
39
38
  prefetchQuery: ({ endpointParams, queryKey }) => void;
40
- }
39
+ } & Omit<QueryObserverBaseResult, 'data'>;
41
40
 
42
41
  export interface PrefetchEndpointParams {
43
42
  page: number;
@@ -155,9 +154,11 @@ const useFetchQuery = <T extends object>({
155
154
  );
156
155
  };
157
156
 
158
- const data = not(has('isError', queryData.data))
159
- ? (queryData.data as T)
160
- : undefined;
157
+ const data = useMemo(
158
+ () =>
159
+ not(has('isError', queryData.data)) ? (queryData.data as T) : undefined,
160
+ [queryData.data]
161
+ );
161
162
 
162
163
  const errorData = queryData.data as ResponseError | undefined;
163
164