venice-ui 3.0.42 → 3.0.43

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.
@@ -61,17 +61,26 @@ const Filters = ({ theme, themeVariant = 'default', size = 'md', labels = {
61
61
  const resolvedTheme = resolvedThemeData.resolvedTheme;
62
62
  const { componentsConfig } = resolvedThemeData;
63
63
  const filterConfig = componentsConfig.filters;
64
- const normalizeDateValue = (0, react_1.useCallback)((rawValue) => {
65
- if (rawValue === undefined || rawValue === null || rawValue === '') {
66
- return undefined;
67
- }
68
- const numericValue = typeof rawValue === 'number' ? rawValue : Number(rawValue);
69
- if (!Number.isNaN(numericValue)) {
70
- return numericValue;
71
- }
72
- const parsed = new Date(rawValue);
73
- return Number.isNaN(parsed.getTime()) ? undefined : parsed.getTime();
74
- }, []);
64
+ console.log('fullElements', fullElements);
65
+ // const normalizeDateValue = useCallback(
66
+ // (rawValue: any): number | undefined => {
67
+ // if (rawValue === undefined || rawValue === null || rawValue === '') {
68
+ // return undefined
69
+ // }
70
+ // const numericValue =
71
+ // typeof rawValue === 'number' ? rawValue : Number(rawValue)
72
+ // if (!Number.isNaN(numericValue)) {
73
+ // return numericValue
74
+ // }
75
+ // const parsed = new Date(rawValue)
76
+ // return Number.isNaN(parsed.getTime()) ? undefined : parsed.getTime()
77
+ // },
78
+ // [],
79
+ // )
80
+ const [source, setSource] = (0, react_1.useState)(fullElements || []);
81
+ (0, react_1.useEffect)(() => {
82
+ setSource(fullElements || []);
83
+ }, [fullElements]);
75
84
  const filtersConfig = (0, react_1.useMemo)(() => {
76
85
  const uniq = (arr) => Array.from(new Set(arr.filter((v) => v !== undefined && v !== null)));
77
86
  if (filters && filters.length) {
@@ -92,7 +101,7 @@ const Filters = ({ theme, themeVariant = 'default', size = 'md', labels = {
92
101
  .map((h) => {
93
102
  const type = h.filterType || 'select';
94
103
  const key = h.valueSource || h.name;
95
- const values = (fullElements || [])
104
+ const values = (source || [])
96
105
  .map((it) => it?.[key])
97
106
  .filter((v) => v !== undefined && v !== null);
98
107
  if (type === 'select' && h.scope && h.scope.length) {
@@ -108,12 +117,8 @@ const Filters = ({ theme, themeVariant = 'default', size = 'md', labels = {
108
117
  const dates = values
109
118
  .map((v) => (v ? new Date(v).getTime() : NaN))
110
119
  .filter((d) => !Number.isNaN(d));
111
- const min = dates.length
112
- ? Math.min(...dates)
113
- : undefined;
114
- const max = dates.length
115
- ? Math.max(...dates)
116
- : undefined;
120
+ const min = dates.length ? Math.min(...dates) : undefined;
121
+ const max = dates.length ? Math.max(...dates) : undefined;
117
122
  return {
118
123
  label: h.name,
119
124
  name: key,
@@ -147,7 +152,7 @@ const Filters = ({ theme, themeVariant = 'default', size = 'md', labels = {
147
152
  collapsible: true,
148
153
  };
149
154
  });
150
- }, [filters, headers, elements, fullElements]);
155
+ }, [filters, headers, elements, source]);
151
156
  const generateStateObj = (0, react_1.useCallback)(() => {
152
157
  const obj = {};
153
158
  filtersConfig.forEach((filter) => {
@@ -166,7 +171,7 @@ const Filters = ({ theme, themeVariant = 'default', size = 'md', labels = {
166
171
  };
167
172
  });
168
173
  return obj;
169
- }, [filtersConfig, fullElements]);
174
+ }, [filtersConfig, source]);
170
175
  const [openFilters, setOpenFilters] = (0, react_1.useState)(false);
171
176
  const [activeFilters, setActiveFilters] = (0, react_1.useState)(generateStateObj());
172
177
  const [collapsedFilters, setCollapsedFilters] = (0, react_1.useState)({});
@@ -250,7 +255,6 @@ const Filters = ({ theme, themeVariant = 'default', size = 'md', labels = {
250
255
  }, []);
251
256
  const setRangeFilter = (0, react_1.useCallback)((name, value) => {
252
257
  const [filterName, filterParam] = String(name).split('__');
253
- console.log(filterName, filterParam);
254
258
  setActiveFilters((prev) => ({
255
259
  ...prev,
256
260
  [filterName]: { ...prev[filterName], [filterParam]: value },
@@ -354,13 +358,13 @@ const Filters = ({ theme, themeVariant = 'default', size = 'md', labels = {
354
358
  const cleared = clearAll();
355
359
  setActiveFilters(cleared);
356
360
  handleSubmitFilters &&
357
- handleSubmitFilters((fullElements && fullElements.length ? fullElements : elements) || []);
361
+ handleSubmitFilters((source && source.length ? source : elements) || []);
358
362
  }
359
363
  }, [
360
364
  externalClearSignal,
361
365
  clearAll,
362
366
  handleSubmitFilters,
363
- fullElements,
367
+ source,
364
368
  elements,
365
369
  ]);
366
370
  const mapListItems = (0, react_1.useCallback)((filterName, allowValues) => {
@@ -401,25 +405,29 @@ const Filters = ({ theme, themeVariant = 'default', size = 'md', labels = {
401
405
  case 'range':
402
406
  return (react_1.default.createElement(Aligment_1.Aligment, { wrap: "nowrap", direction: "row", align: "flex-start", justify: "flex-start", gap: 8 },
403
407
  react_1.default.createElement(Filters_styles_1.FilterGrid, null,
404
- react_1.default.createElement(Numerical_1.Numerical, { type: "number", name: `${filter.name}__min`, value: activeFilters[filter.name]?.min ?? '', handleChange: setRangeFilter, componentWidth: '100%' }),
405
- react_1.default.createElement(Numerical_1.Numerical, { type: "number", name: `${filter.name}__max`, value: activeFilters[filter.name]?.max ?? '', handleChange: setRangeFilter, componentWidth: '100%' }))));
408
+ react_1.default.createElement(Numerical_1.Numerical, { type: "number", name: `${filter.name}__min`, value: activeFilters[filter.name]?.min ?? '', handleChange: setRangeFilter, componentWidth: "100%" }),
409
+ react_1.default.createElement(Numerical_1.Numerical, { type: "number", name: `${filter.name}__max`, value: activeFilters[filter.name]?.max ?? '', handleChange: setRangeFilter, componentWidth: "100%" }))));
406
410
  case 'date':
407
- const minValue = activeFilters[filter.name]?.min !== '' ? activeFilters[filter.name]?.min : activeFilters[filter.name]?.rangeMin;
408
- const maxValue = activeFilters[filter.name]?.max !== '' ? activeFilters[filter.name]?.max : activeFilters[filter.name]?.rangeMax;
411
+ const minValue = activeFilters[filter.name]?.min !== ''
412
+ ? activeFilters[filter.name]?.min
413
+ : activeFilters[filter.name]?.rangeMin;
414
+ const maxValue = activeFilters[filter.name]?.max !== ''
415
+ ? activeFilters[filter.name]?.max
416
+ : activeFilters[filter.name]?.rangeMax;
409
417
  return (react_1.default.createElement(Aligment_1.Aligment, { wrap: "nowrap", direction: "row", align: "flex-start", justify: "flex-start", gap: 8 },
410
418
  react_1.default.createElement(Filters_styles_1.FilterGrid, null,
411
- react_1.default.createElement(DatePicker_1.DatePicker, { name: `${filter.name}__min`, value: minValue, isAdvance: false, autoConfirm: true, handleChange: setRangeFilter, componentWidth: '100%', labels: calendarLabels, localeLabels: calendarLocaleLabels, zIndex: filterConfig.size.zIndex, placeholder: calendarLabels?.placeholder, withoutClearIcon: true }),
412
- react_1.default.createElement(DatePicker_1.DatePicker, { name: `${filter.name}__max`, value: maxValue, isAdvance: false, autoConfirm: true, handleChange: setRangeFilter, componentWidth: '100%', labels: calendarLabels, localeLabels: calendarLocaleLabels, zIndex: filterConfig.size.zIndex, placeholder: calendarLabels?.placeholder, withoutClearIcon: true }))));
419
+ react_1.default.createElement(DatePicker_1.DatePicker, { name: `${filter.name}__min`, value: minValue, isAdvance: false, autoConfirm: true, handleChange: setRangeFilter, componentWidth: "100%", labels: calendarLabels, localeLabels: calendarLocaleLabels, zIndex: filterConfig.size.zIndex, placeholder: calendarLabels?.placeholder, withoutClearIcon: true }),
420
+ react_1.default.createElement(DatePicker_1.DatePicker, { name: `${filter.name}__max`, value: maxValue, isAdvance: false, autoConfirm: true, handleChange: setRangeFilter, componentWidth: "100%", labels: calendarLabels, localeLabels: calendarLocaleLabels, zIndex: filterConfig.size.zIndex, placeholder: calendarLabels?.placeholder, withoutClearIcon: true }))));
413
421
  case 'text':
414
422
  return (react_1.default.createElement(Aligment_1.Aligment, { wrap: "nowrap", direction: "row", align: "flex-start", justify: "flex-start", gap: 8 },
415
- react_1.default.createElement(Input_1.Input, { type: "text", name: `${filter.name}__query`, value: activeFilters[filter.name]?.value?.[0] ?? '', handleChange: setTextFilter, componentWidth: '100%', width: '100%' })));
423
+ react_1.default.createElement(Input_1.Input, { type: "text", name: `${filter.name}__query`, value: activeFilters[filter.name]?.value?.[0] ?? '', handleChange: setTextFilter, componentWidth: "100%", width: "100%" })));
416
424
  default:
417
425
  return null;
418
426
  }
419
427
  }, [
420
428
  activeFilters,
421
429
  mapListItems,
422
- normalizeDateValue,
430
+ // normalizeDateValue,
423
431
  setRangeFilter,
424
432
  setTextFilter,
425
433
  ]);
@@ -25,17 +25,26 @@ export const Filters = ({ theme, themeVariant = 'default', size = 'md', labels =
25
25
  const resolvedTheme = resolvedThemeData.resolvedTheme;
26
26
  const { componentsConfig } = resolvedThemeData;
27
27
  const filterConfig = componentsConfig.filters;
28
- const normalizeDateValue = useCallback((rawValue) => {
29
- if (rawValue === undefined || rawValue === null || rawValue === '') {
30
- return undefined;
31
- }
32
- const numericValue = typeof rawValue === 'number' ? rawValue : Number(rawValue);
33
- if (!Number.isNaN(numericValue)) {
34
- return numericValue;
35
- }
36
- const parsed = new Date(rawValue);
37
- return Number.isNaN(parsed.getTime()) ? undefined : parsed.getTime();
38
- }, []);
28
+ console.log('fullElements', fullElements);
29
+ // const normalizeDateValue = useCallback(
30
+ // (rawValue: any): number | undefined => {
31
+ // if (rawValue === undefined || rawValue === null || rawValue === '') {
32
+ // return undefined
33
+ // }
34
+ // const numericValue =
35
+ // typeof rawValue === 'number' ? rawValue : Number(rawValue)
36
+ // if (!Number.isNaN(numericValue)) {
37
+ // return numericValue
38
+ // }
39
+ // const parsed = new Date(rawValue)
40
+ // return Number.isNaN(parsed.getTime()) ? undefined : parsed.getTime()
41
+ // },
42
+ // [],
43
+ // )
44
+ const [source, setSource] = useState(fullElements || []);
45
+ useEffect(() => {
46
+ setSource(fullElements || []);
47
+ }, [fullElements]);
39
48
  const filtersConfig = useMemo(() => {
40
49
  const uniq = (arr) => Array.from(new Set(arr.filter((v) => v !== undefined && v !== null)));
41
50
  if (filters && filters.length) {
@@ -56,7 +65,7 @@ export const Filters = ({ theme, themeVariant = 'default', size = 'md', labels =
56
65
  .map((h) => {
57
66
  const type = h.filterType || 'select';
58
67
  const key = h.valueSource || h.name;
59
- const values = (fullElements || [])
68
+ const values = (source || [])
60
69
  .map((it) => it?.[key])
61
70
  .filter((v) => v !== undefined && v !== null);
62
71
  if (type === 'select' && h.scope && h.scope.length) {
@@ -72,12 +81,8 @@ export const Filters = ({ theme, themeVariant = 'default', size = 'md', labels =
72
81
  const dates = values
73
82
  .map((v) => (v ? new Date(v).getTime() : NaN))
74
83
  .filter((d) => !Number.isNaN(d));
75
- const min = dates.length
76
- ? Math.min(...dates)
77
- : undefined;
78
- const max = dates.length
79
- ? Math.max(...dates)
80
- : undefined;
84
+ const min = dates.length ? Math.min(...dates) : undefined;
85
+ const max = dates.length ? Math.max(...dates) : undefined;
81
86
  return {
82
87
  label: h.name,
83
88
  name: key,
@@ -111,7 +116,7 @@ export const Filters = ({ theme, themeVariant = 'default', size = 'md', labels =
111
116
  collapsible: true,
112
117
  };
113
118
  });
114
- }, [filters, headers, elements, fullElements]);
119
+ }, [filters, headers, elements, source]);
115
120
  const generateStateObj = useCallback(() => {
116
121
  const obj = {};
117
122
  filtersConfig.forEach((filter) => {
@@ -130,7 +135,7 @@ export const Filters = ({ theme, themeVariant = 'default', size = 'md', labels =
130
135
  };
131
136
  });
132
137
  return obj;
133
- }, [filtersConfig, fullElements]);
138
+ }, [filtersConfig, source]);
134
139
  const [openFilters, setOpenFilters] = useState(false);
135
140
  const [activeFilters, setActiveFilters] = useState(generateStateObj());
136
141
  const [collapsedFilters, setCollapsedFilters] = useState({});
@@ -214,7 +219,6 @@ export const Filters = ({ theme, themeVariant = 'default', size = 'md', labels =
214
219
  }, []);
215
220
  const setRangeFilter = useCallback((name, value) => {
216
221
  const [filterName, filterParam] = String(name).split('__');
217
- console.log(filterName, filterParam);
218
222
  setActiveFilters((prev) => ({
219
223
  ...prev,
220
224
  [filterName]: { ...prev[filterName], [filterParam]: value },
@@ -318,13 +322,13 @@ export const Filters = ({ theme, themeVariant = 'default', size = 'md', labels =
318
322
  const cleared = clearAll();
319
323
  setActiveFilters(cleared);
320
324
  handleSubmitFilters &&
321
- handleSubmitFilters((fullElements && fullElements.length ? fullElements : elements) || []);
325
+ handleSubmitFilters((source && source.length ? source : elements) || []);
322
326
  }
323
327
  }, [
324
328
  externalClearSignal,
325
329
  clearAll,
326
330
  handleSubmitFilters,
327
- fullElements,
331
+ source,
328
332
  elements,
329
333
  ]);
330
334
  const mapListItems = useCallback((filterName, allowValues) => {
@@ -365,25 +369,29 @@ export const Filters = ({ theme, themeVariant = 'default', size = 'md', labels =
365
369
  case 'range':
366
370
  return (React.createElement(Aligment, { wrap: "nowrap", direction: "row", align: "flex-start", justify: "flex-start", gap: 8 },
367
371
  React.createElement(FilterGrid, null,
368
- React.createElement(Numerical, { type: "number", name: `${filter.name}__min`, value: activeFilters[filter.name]?.min ?? '', handleChange: setRangeFilter, componentWidth: '100%' }),
369
- React.createElement(Numerical, { type: "number", name: `${filter.name}__max`, value: activeFilters[filter.name]?.max ?? '', handleChange: setRangeFilter, componentWidth: '100%' }))));
372
+ React.createElement(Numerical, { type: "number", name: `${filter.name}__min`, value: activeFilters[filter.name]?.min ?? '', handleChange: setRangeFilter, componentWidth: "100%" }),
373
+ React.createElement(Numerical, { type: "number", name: `${filter.name}__max`, value: activeFilters[filter.name]?.max ?? '', handleChange: setRangeFilter, componentWidth: "100%" }))));
370
374
  case 'date':
371
- const minValue = activeFilters[filter.name]?.min !== '' ? activeFilters[filter.name]?.min : activeFilters[filter.name]?.rangeMin;
372
- const maxValue = activeFilters[filter.name]?.max !== '' ? activeFilters[filter.name]?.max : activeFilters[filter.name]?.rangeMax;
375
+ const minValue = activeFilters[filter.name]?.min !== ''
376
+ ? activeFilters[filter.name]?.min
377
+ : activeFilters[filter.name]?.rangeMin;
378
+ const maxValue = activeFilters[filter.name]?.max !== ''
379
+ ? activeFilters[filter.name]?.max
380
+ : activeFilters[filter.name]?.rangeMax;
373
381
  return (React.createElement(Aligment, { wrap: "nowrap", direction: "row", align: "flex-start", justify: "flex-start", gap: 8 },
374
382
  React.createElement(FilterGrid, null,
375
- React.createElement(DatePicker, { name: `${filter.name}__min`, value: minValue, isAdvance: false, autoConfirm: true, handleChange: setRangeFilter, componentWidth: '100%', labels: calendarLabels, localeLabels: calendarLocaleLabels, zIndex: filterConfig.size.zIndex, placeholder: calendarLabels?.placeholder, withoutClearIcon: true }),
376
- React.createElement(DatePicker, { name: `${filter.name}__max`, value: maxValue, isAdvance: false, autoConfirm: true, handleChange: setRangeFilter, componentWidth: '100%', labels: calendarLabels, localeLabels: calendarLocaleLabels, zIndex: filterConfig.size.zIndex, placeholder: calendarLabels?.placeholder, withoutClearIcon: true }))));
383
+ React.createElement(DatePicker, { name: `${filter.name}__min`, value: minValue, isAdvance: false, autoConfirm: true, handleChange: setRangeFilter, componentWidth: "100%", labels: calendarLabels, localeLabels: calendarLocaleLabels, zIndex: filterConfig.size.zIndex, placeholder: calendarLabels?.placeholder, withoutClearIcon: true }),
384
+ React.createElement(DatePicker, { name: `${filter.name}__max`, value: maxValue, isAdvance: false, autoConfirm: true, handleChange: setRangeFilter, componentWidth: "100%", labels: calendarLabels, localeLabels: calendarLocaleLabels, zIndex: filterConfig.size.zIndex, placeholder: calendarLabels?.placeholder, withoutClearIcon: true }))));
377
385
  case 'text':
378
386
  return (React.createElement(Aligment, { wrap: "nowrap", direction: "row", align: "flex-start", justify: "flex-start", gap: 8 },
379
- React.createElement(Input, { type: "text", name: `${filter.name}__query`, value: activeFilters[filter.name]?.value?.[0] ?? '', handleChange: setTextFilter, componentWidth: '100%', width: '100%' })));
387
+ React.createElement(Input, { type: "text", name: `${filter.name}__query`, value: activeFilters[filter.name]?.value?.[0] ?? '', handleChange: setTextFilter, componentWidth: "100%", width: "100%" })));
380
388
  default:
381
389
  return null;
382
390
  }
383
391
  }, [
384
392
  activeFilters,
385
393
  mapListItems,
386
- normalizeDateValue,
394
+ // normalizeDateValue,
387
395
  setRangeFilter,
388
396
  setTextFilter,
389
397
  ]);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "venice-ui",
3
- "version": "3.0.42",
3
+ "version": "3.0.43",
4
4
  "description": "Component library",
5
5
  "main": "index.js",
6
6
  "module": "./dist/esm/index.js",