@bit.rhplus/ui2.filter-panel 0.0.6 → 0.0.8

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.
@@ -0,0 +1,6 @@
1
+ export function buildValueLabelsMap(filterConfigs: Object): Object;
2
+ export function buildFieldLabelsMap(filterConfigs: Object): Object;
3
+ export function formatFilterValue(value: any, fieldName: string, valueLabelsMap?: Object, moduleLabels?: Object, fieldKey?: string): string;
4
+ export function normalizeFilterValueForBackend(value: any): any;
5
+ export function throttle(func: Function, wait: number): Function;
6
+ export function debounce(func: Function, wait: number): Function;
@@ -0,0 +1,184 @@
1
+ /* eslint-disable */
2
+ /**
3
+ * Sdílené utility funkce pro práci s filtry v Master komponentách
4
+ *
5
+ * Tyto funkce jsou memoizovány a používány jak v Desktop tak Mobile verzích
6
+ * pro zajištění konzistentního chování a lepšího výkonu.
7
+ */
8
+ /**
9
+ * Vytvoří mapu hodnot pro převod value → label z filterConfigs
10
+ * @param {Object} filterConfigs - Konfigurace filtrů
11
+ * @returns {Object} Mapa ve formátu { field: { value: label } }
12
+ */
13
+ export const buildValueLabelsMap = (filterConfigs) => {
14
+ if (!filterConfigs)
15
+ return {};
16
+ const map = {};
17
+ Object.values(filterConfigs).forEach(config => {
18
+ config.fields.forEach(field => {
19
+ if (field.type === 'select' && field.options) {
20
+ map[field.field] = {};
21
+ field.options.forEach(option => {
22
+ map[field.field][option.value] = option.label;
23
+ });
24
+ }
25
+ });
26
+ });
27
+ return map;
28
+ };
29
+ /**
30
+ * Vytvoří mapu labelů pro fieldy z filterConfigs
31
+ * @param {Object} filterConfigs - Konfigurace filtrů
32
+ * @returns {Object} Mapa ve formátu { field: label }
33
+ */
34
+ export const buildFieldLabelsMap = (filterConfigs) => {
35
+ if (!filterConfigs)
36
+ return {};
37
+ const labels = {};
38
+ Object.values(filterConfigs).forEach(config => {
39
+ config.fields.forEach(field => {
40
+ labels[field.field] = field.label;
41
+ });
42
+ });
43
+ return labels;
44
+ };
45
+ /**
46
+ * Formátuje hodnotu filtru pro zobrazení uživateli
47
+ * @param {*} value - Hodnota k formátování
48
+ * @param {string} fieldName - Název pole
49
+ * @param {Object} valueLabelsMap - Mapa hodnot na labely
50
+ * @param {Object} moduleLabels - Dodatečné modulo labely
51
+ * @param {string} fieldKey - Klíč pro moduleLabels lookup
52
+ * @returns {string} Zformátovaná hodnota
53
+ */
54
+ export const formatFilterValue = (value, fieldName, valueLabelsMap = {}, moduleLabels = {}, fieldKey = null) => {
55
+ // Array hodnoty
56
+ if (Array.isArray(value)) {
57
+ if (valueLabelsMap[fieldName]) {
58
+ return value.map(v => valueLabelsMap[fieldName][v] || v).join(', ');
59
+ }
60
+ return value.join(', ');
61
+ }
62
+ // Boolean hodnoty
63
+ if (typeof value === 'boolean') {
64
+ return value ? 'Ano' : 'Ne';
65
+ }
66
+ // Null/undefined
67
+ if (value === null || value === undefined) {
68
+ return '';
69
+ }
70
+ // Module labels (priorita)
71
+ if (fieldKey && moduleLabels[fieldKey]) {
72
+ return moduleLabels[fieldKey];
73
+ }
74
+ // Value labels map
75
+ if (valueLabelsMap[fieldName] && valueLabelsMap[fieldName][value]) {
76
+ return valueLabelsMap[fieldName][value];
77
+ }
78
+ // Datumové hodnoty
79
+ if (value instanceof Date || (typeof value === 'string' && /^\d{4}-\d{2}-\d{2}/.test(value))) {
80
+ try {
81
+ const date = new Date(value);
82
+ return date.toLocaleDateString('cs-CZ');
83
+ }
84
+ catch {
85
+ return String(value);
86
+ }
87
+ }
88
+ return String(value);
89
+ };
90
+ /**
91
+ * Normalizuje hodnotu filtru pro backend (hlavně datumové formáty)
92
+ * @param {*} value - Hodnota k normalizaci
93
+ * @returns {*} Normalizovaná hodnota
94
+ */
95
+ export const normalizeFilterValueForBackend = (value) => {
96
+ if (value === null || value === undefined) {
97
+ return value;
98
+ }
99
+ // Pokud je už Date objekt, převeď na ISO string
100
+ if (value instanceof Date) {
101
+ return value.toISOString();
102
+ }
103
+ // Pokud je string, zkus ho parsovat jako datum
104
+ if (typeof value === 'string') {
105
+ let cleanedValue = value.trim();
106
+ // Odstraň duplicitní časové části (bug fix z původního kódu)
107
+ if (/^\d{2}\/\d{2}\/\d{4} \d{2}:\d{2}:\d{2}/.test(cleanedValue)) {
108
+ cleanedValue = cleanedValue.replace(/(\d{2}:\d{2}:\d{2})\s+\d{2}:\d{2}:\d{2}$/, '$1');
109
+ }
110
+ // Formát: DD/MM/YYYY HH:MM:SS
111
+ const ddmmyyyyWithTime = cleanedValue.match(/^(\d{2})\/(\d{2})\/(\d{4})\s+(\d{2}):(\d{2}):(\d{2})/);
112
+ if (ddmmyyyyWithTime) {
113
+ const [, day, month, year, hours, minutes, seconds] = ddmmyyyyWithTime;
114
+ const date = new Date(year, month - 1, day, hours, minutes, seconds);
115
+ if (!isNaN(date.getTime())) {
116
+ return date.toISOString();
117
+ }
118
+ }
119
+ // Formát: DD/MM/YYYY
120
+ const ddmmyyyy = cleanedValue.match(/^(\d{2})\/(\d{2})\/(\d{4})$/);
121
+ if (ddmmyyyy) {
122
+ const [, day, month, year] = ddmmyyyy;
123
+ const date = new Date(year, month - 1, day);
124
+ if (!isNaN(date.getTime())) {
125
+ return date.toISOString();
126
+ }
127
+ }
128
+ // ISO formát: YYYY-MM-DD
129
+ if (/^\d{4}-\d{2}-\d{2}/.test(cleanedValue)) {
130
+ try {
131
+ const date = new Date(cleanedValue);
132
+ if (!isNaN(date.getTime())) {
133
+ return date.toISOString();
134
+ }
135
+ }
136
+ catch {
137
+ return value;
138
+ }
139
+ }
140
+ }
141
+ return value;
142
+ };
143
+ /**
144
+ * Vytvoří throttle funkci pro omezení frekvence volání
145
+ * @param {Function} func - Funkce k throttle
146
+ * @param {number} wait - Čekací doba v ms
147
+ * @returns {Function} Throttled funkce
148
+ */
149
+ export const throttle = (func, wait) => {
150
+ let timeout = null;
151
+ let lastRan = null;
152
+ return function throttled(...args) {
153
+ const now = Date.now();
154
+ if (lastRan && now - lastRan < wait) {
155
+ // Pokud jsme volali příliš brzy, naplánuj volání na později
156
+ clearTimeout(timeout);
157
+ timeout = setTimeout(() => {
158
+ lastRan = now;
159
+ func.apply(this, args);
160
+ }, wait - (now - lastRan));
161
+ }
162
+ else {
163
+ // První volání nebo už uplynul čas
164
+ lastRan = now;
165
+ func.apply(this, args);
166
+ }
167
+ };
168
+ };
169
+ /**
170
+ * Vytvoří debounce funkci pro odložení volání
171
+ * @param {Function} func - Funkce k debounce
172
+ * @param {number} wait - Čekací doba v ms
173
+ * @returns {Function} Debounced funkce
174
+ */
175
+ export const debounce = (func, wait) => {
176
+ let timeout = null;
177
+ return function debounced(...args) {
178
+ clearTimeout(timeout);
179
+ timeout = setTimeout(() => {
180
+ func.apply(this, args);
181
+ }, wait);
182
+ };
183
+ };
184
+ //# sourceMappingURL=filterHelpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filterHelpers.js","sourceRoot":"","sources":["../filterHelpers.js"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,5 +1,4 @@
1
- export default FilterPanel;
2
- declare function FilterPanel({ filters, onRemoveFilter, onClearAll, onRefresh, fieldLabels, valueLabelsMap, alwaysVisible, isLoading, current, pageSize, total, pageSizeOptions, onPageChange, onPageSizeChange, showPagination, filterFields, onApplyFilters, initialFilterValues, accessToken, }: {
1
+ declare const _default: React.MemoExoticComponent<({ filters, onRemoveFilter, onClearAll, onRefresh, fieldLabels, valueLabelsMap, alwaysVisible, isLoading, current, pageSize, total, pageSizeOptions, onPageChange, onPageSizeChange, showPagination, filterFields, onApplyFilters, initialFilterValues, accessToken, }: {
3
2
  filters?: any[] | undefined;
4
3
  onRemoveFilter: any;
5
4
  onClearAll: any;
@@ -19,4 +18,9 @@ declare function FilterPanel({ filters, onRemoveFilter, onClearAll, onRefresh, f
19
18
  onApplyFilters: any;
20
19
  initialFilterValues?: {} | undefined;
21
20
  accessToken: any;
22
- }): import("react/jsx-runtime").JSX.Element | null;
21
+ }) => import("react/jsx-runtime").JSX.Element | null>;
22
+ export default _default;
23
+ export { formatFilterValue };
24
+ import React from 'react';
25
+ import { formatFilterValue } from './filterHelpers';
26
+ export { buildValueLabelsMap, buildFieldLabelsMap, normalizeFilterValueForBackend, throttle, debounce } from "./filterHelpers";
package/dist/index.js CHANGED
@@ -1,9 +1,11 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  /* eslint-disable */
3
- import React, { useState, useCallback } from 'react';
3
+ import React, { useState, useCallback, useMemo } from 'react';
4
4
  import { Tag, Space, Button, Spin, Pagination, Row, Col, Input, Select, Radio } from 'antd';
5
5
  import { CloseOutlined, FilterOutlined, LoadingOutlined, ReloadOutlined, DownOutlined, FilterFilled } from '@ant-design/icons';
6
6
  import { filterCondition } from '@bit.rhplus/ui2.filter';
7
+ import { formatFilterValue } from './filterHelpers';
8
+ // Konstanty extrahované mimo komponentu pro stabilní references
7
9
  const conditionLabels = {
8
10
  [filterCondition.equals]: 'je',
9
11
  [filterCondition.notEquals]: 'není',
@@ -19,36 +21,19 @@ const conditionLabels = {
19
21
  [filterCondition.in]: 'obsahuje',
20
22
  [filterCondition.notIn]: 'neobsahuje',
21
23
  };
22
- const formatValue = (value, fieldName, valueLabelsMap, moduleLabels = {}, fieldKey = null) => {
23
- if (Array.isArray(value)) {
24
- if (valueLabelsMap[fieldName]) {
25
- return value.map(v => valueLabelsMap[fieldName][v] || v).join(', ');
26
- }
27
- return value.join(', ');
28
- }
29
- if (typeof value === 'boolean') {
30
- return value ? 'Ano' : 'Ne';
31
- }
32
- if (value === null || value === undefined) {
33
- return '';
34
- }
35
- if (fieldKey && moduleLabels[fieldKey]) {
36
- return moduleLabels[fieldKey];
37
- }
38
- if (valueLabelsMap[fieldName] && valueLabelsMap[fieldName][value]) {
39
- return valueLabelsMap[fieldName][value];
40
- }
41
- return String(value);
42
- };
24
+ // Konstantní loading ikona
25
+ const LOADING_ICON = _jsx(LoadingOutlined, { style: { fontSize: 18, color: '#1890ff', fontWeight: 900, strokeWidth: 4 }, spin: true });
43
26
  const FilterPanel = ({ filters = [], onRemoveFilter, onClearAll, onRefresh, fieldLabels = {}, valueLabelsMap = {}, alwaysVisible = false, isLoading = false, current = 1, pageSize = 100, total = 0, pageSizeOptions = ['100', '200', '300', '500', '1000'], onPageChange, onPageSizeChange, showPagination = true, filterFields = [], onApplyFilters, initialFilterValues = {}, accessToken, }) => {
44
27
  const [expanded, setExpanded] = useState(false);
45
28
  const [filterValues, setFilterValues] = useState(initialFilterValues);
46
29
  const [moduleLabels, setModuleLabels] = useState({});
47
- if (!alwaysVisible && (!filters || filters.length === 0)) {
30
+ // Memoizované hodnoty pro optimalizaci
31
+ const hasFilters = useMemo(() => filters && filters.length > 0, [filters]);
32
+ const hasFilterFields = useMemo(() => filterFields && filterFields.length > 0, [filterFields]);
33
+ // Early return pokud není co zobrazit
34
+ if (!alwaysVisible && !hasFilters) {
48
35
  return null;
49
36
  }
50
- const hasFilters = filters && filters.length > 0;
51
- const loadingIcon = _jsx(LoadingOutlined, { style: { fontSize: 18, color: '#1890ff', fontWeight: 900, strokeWidth: 4 }, spin: true });
52
37
  const handleFieldChange = useCallback((fieldKey, value, displayValue) => {
53
38
  setFilterValues(prev => ({
54
39
  ...prev,
@@ -117,8 +102,7 @@ const FilterPanel = ({ filters = [], onRemoveFilter, onClearAll, onRefresh, fiel
117
102
  }, placeholder: `Vyber ${field.label}`, accessToken: accessToken }));
118
103
  }
119
104
  return (_jsx(Input, { placeholder: `Zadej ${field.label}`, allowClear: true, value: filterValues[fieldKey] || '', onChange: (e) => handleFieldChange(fieldKey, e.target.value) }));
120
- }, [filterValues, handleFieldChange]);
121
- const hasFilterFields = filterFields && filterFields.length > 0;
105
+ }, [filterValues, handleFieldChange, accessToken]);
122
106
  return (_jsxs("div", { style: { position: 'relative', zIndex: 10 }, children: [_jsxs("div", { style: {
123
107
  display: 'flex',
124
108
  justifyContent: 'space-between',
@@ -135,7 +119,7 @@ const FilterPanel = ({ filters = [], onRemoveFilter, onClearAll, onRefresh, fiel
135
119
  padding: '0 4px',
136
120
  height: '22px',
137
121
  minWidth: '22px'
138
- } })), _jsx(Button, { type: "text", size: "small", icon: isLoading ? _jsx(Spin, { indicator: loadingIcon }) : (expanded ? _jsx(FilterFilled, {}) : _jsx(ReloadOutlined, {})), onClick: handleRefreshOrFilter, disabled: isLoading, style: {
122
+ } })), _jsx(Button, { type: "text", size: "small", icon: isLoading ? _jsx(Spin, { indicator: LOADING_ICON }) : (expanded ? _jsx(FilterFilled, {}) : _jsx(ReloadOutlined, {})), onClick: handleRefreshOrFilter, disabled: isLoading, style: {
139
123
  color: '#1890ff',
140
124
  padding: '0 4px',
141
125
  height: '22px',
@@ -144,7 +128,7 @@ const FilterPanel = ({ filters = [], onRemoveFilter, onClearAll, onRefresh, fiel
144
128
  const fieldLabel = filter.label || fieldLabels[filter.field] || filter.field;
145
129
  const conditionLabel = conditionLabels[filter.condition] || 'filtr';
146
130
  const fieldKey = `${filter.field}_${filter.condition}`;
147
- const valueLabel = formatValue(filter.value, filter.field, valueLabelsMap, moduleLabels, fieldKey);
131
+ const valueLabel = formatFilterValue(filter.value, filter.field, valueLabelsMap, moduleLabels, fieldKey);
148
132
  const displayText = filter.text || (valueLabel
149
133
  ? `${fieldLabel} ${conditionLabel} (${valueLabel})`
150
134
  : `${fieldLabel} ${conditionLabel}`);
@@ -194,5 +178,31 @@ const FilterPanel = ({ filters = [], onRemoveFilter, onClearAll, onRefresh, fiel
194
178
  }, children: [field.label, ":"] }), _jsx("div", { style: { width: '175px' }, children: renderField(field) })] }, fieldKey));
195
179
  }) }) }) })] }));
196
180
  };
197
- export default FilterPanel;
181
+ // Custom comparison funkce pro React.memo
182
+ const areEqual = (prevProps, nextProps) => {
183
+ return (prevProps.filters === nextProps.filters &&
184
+ prevProps.isLoading === nextProps.isLoading &&
185
+ prevProps.current === nextProps.current &&
186
+ prevProps.pageSize === nextProps.pageSize &&
187
+ prevProps.total === nextProps.total &&
188
+ prevProps.alwaysVisible === nextProps.alwaysVisible &&
189
+ prevProps.showPagination === nextProps.showPagination &&
190
+ prevProps.fieldLabels === nextProps.fieldLabels &&
191
+ prevProps.valueLabelsMap === nextProps.valueLabelsMap &&
192
+ prevProps.filterFields === nextProps.filterFields &&
193
+ prevProps.initialFilterValues === nextProps.initialFilterValues &&
194
+ prevProps.pageSizeOptions === nextProps.pageSizeOptions &&
195
+ prevProps.accessToken === nextProps.accessToken &&
196
+ // Callback props
197
+ prevProps.onRemoveFilter === nextProps.onRemoveFilter &&
198
+ prevProps.onClearAll === nextProps.onClearAll &&
199
+ prevProps.onRefresh === nextProps.onRefresh &&
200
+ prevProps.onPageChange === nextProps.onPageChange &&
201
+ prevProps.onPageSizeChange === nextProps.onPageSizeChange &&
202
+ prevProps.onApplyFilters === nextProps.onApplyFilters);
203
+ };
204
+ // Export s React.memo pro optimalizaci re-renderů
205
+ export default React.memo(FilterPanel, areEqual);
206
+ export { buildValueLabelsMap, buildFieldLabelsMap, normalizeFilterValueForBackend, throttle, debounce } from './filterHelpers';
207
+ export { formatFilterValue };
198
208
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.jsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.jsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,205 @@
1
+ /* eslint-disable */
2
+
3
+ /**
4
+ * Sdílené utility funkce pro práci s filtry v Master komponentách
5
+ *
6
+ * Tyto funkce jsou memoizovány a používány jak v Desktop tak Mobile verzích
7
+ * pro zajištění konzistentního chování a lepšího výkonu.
8
+ */
9
+
10
+ /**
11
+ * Vytvoří mapu hodnot pro převod value → label z filterConfigs
12
+ * @param {Object} filterConfigs - Konfigurace filtrů
13
+ * @returns {Object} Mapa ve formátu { field: { value: label } }
14
+ */
15
+ export const buildValueLabelsMap = (filterConfigs) => {
16
+ if (!filterConfigs) return {};
17
+ const map = {};
18
+
19
+ Object.values(filterConfigs).forEach(config => {
20
+ config.fields.forEach(field => {
21
+ if (field.type === 'select' && field.options) {
22
+ map[field.field] = {};
23
+ field.options.forEach(option => {
24
+ map[field.field][option.value] = option.label;
25
+ });
26
+ }
27
+ });
28
+ });
29
+
30
+ return map;
31
+ };
32
+
33
+ /**
34
+ * Vytvoří mapu labelů pro fieldy z filterConfigs
35
+ * @param {Object} filterConfigs - Konfigurace filtrů
36
+ * @returns {Object} Mapa ve formátu { field: label }
37
+ */
38
+ export const buildFieldLabelsMap = (filterConfigs) => {
39
+ if (!filterConfigs) return {};
40
+ const labels = {};
41
+
42
+ Object.values(filterConfigs).forEach(config => {
43
+ config.fields.forEach(field => {
44
+ labels[field.field] = field.label;
45
+ });
46
+ });
47
+
48
+ return labels;
49
+ };
50
+
51
+ /**
52
+ * Formátuje hodnotu filtru pro zobrazení uživateli
53
+ * @param {*} value - Hodnota k formátování
54
+ * @param {string} fieldName - Název pole
55
+ * @param {Object} valueLabelsMap - Mapa hodnot na labely
56
+ * @param {Object} moduleLabels - Dodatečné modulo labely
57
+ * @param {string} fieldKey - Klíč pro moduleLabels lookup
58
+ * @returns {string} Zformátovaná hodnota
59
+ */
60
+ export const formatFilterValue = (value, fieldName, valueLabelsMap = {}, moduleLabels = {}, fieldKey = null) => {
61
+ // Array hodnoty
62
+ if (Array.isArray(value)) {
63
+ if (valueLabelsMap[fieldName]) {
64
+ return value.map(v => valueLabelsMap[fieldName][v] || v).join(', ');
65
+ }
66
+ return value.join(', ');
67
+ }
68
+
69
+ // Boolean hodnoty
70
+ if (typeof value === 'boolean') {
71
+ return value ? 'Ano' : 'Ne';
72
+ }
73
+
74
+ // Null/undefined
75
+ if (value === null || value === undefined) {
76
+ return '';
77
+ }
78
+
79
+ // Module labels (priorita)
80
+ if (fieldKey && moduleLabels[fieldKey]) {
81
+ return moduleLabels[fieldKey];
82
+ }
83
+
84
+ // Value labels map
85
+ if (valueLabelsMap[fieldName] && valueLabelsMap[fieldName][value]) {
86
+ return valueLabelsMap[fieldName][value];
87
+ }
88
+
89
+ // Datumové hodnoty
90
+ if (value instanceof Date || (typeof value === 'string' && /^\d{4}-\d{2}-\d{2}/.test(value))) {
91
+ try {
92
+ const date = new Date(value);
93
+ return date.toLocaleDateString('cs-CZ');
94
+ } catch {
95
+ return String(value);
96
+ }
97
+ }
98
+
99
+ return String(value);
100
+ };
101
+
102
+ /**
103
+ * Normalizuje hodnotu filtru pro backend (hlavně datumové formáty)
104
+ * @param {*} value - Hodnota k normalizaci
105
+ * @returns {*} Normalizovaná hodnota
106
+ */
107
+ export const normalizeFilterValueForBackend = (value) => {
108
+ if (value === null || value === undefined) {
109
+ return value;
110
+ }
111
+
112
+ // Pokud je už Date objekt, převeď na ISO string
113
+ if (value instanceof Date) {
114
+ return value.toISOString();
115
+ }
116
+
117
+ // Pokud je string, zkus ho parsovat jako datum
118
+ if (typeof value === 'string') {
119
+ let cleanedValue = value.trim();
120
+
121
+ // Odstraň duplicitní časové části (bug fix z původního kódu)
122
+ if (/^\d{2}\/\d{2}\/\d{4} \d{2}:\d{2}:\d{2}/.test(cleanedValue)) {
123
+ cleanedValue = cleanedValue.replace(/(\d{2}:\d{2}:\d{2})\s+\d{2}:\d{2}:\d{2}$/, '$1');
124
+ }
125
+
126
+ // Formát: DD/MM/YYYY HH:MM:SS
127
+ const ddmmyyyyWithTime = cleanedValue.match(/^(\d{2})\/(\d{2})\/(\d{4})\s+(\d{2}):(\d{2}):(\d{2})/);
128
+ if (ddmmyyyyWithTime) {
129
+ const [, day, month, year, hours, minutes, seconds] = ddmmyyyyWithTime;
130
+ const date = new Date(year, month - 1, day, hours, minutes, seconds);
131
+ if (!isNaN(date.getTime())) {
132
+ return date.toISOString();
133
+ }
134
+ }
135
+
136
+ // Formát: DD/MM/YYYY
137
+ const ddmmyyyy = cleanedValue.match(/^(\d{2})\/(\d{2})\/(\d{4})$/);
138
+ if (ddmmyyyy) {
139
+ const [, day, month, year] = ddmmyyyy;
140
+ const date = new Date(year, month - 1, day);
141
+ if (!isNaN(date.getTime())) {
142
+ return date.toISOString();
143
+ }
144
+ }
145
+
146
+ // ISO formát: YYYY-MM-DD
147
+ if (/^\d{4}-\d{2}-\d{2}/.test(cleanedValue)) {
148
+ try {
149
+ const date = new Date(cleanedValue);
150
+ if (!isNaN(date.getTime())) {
151
+ return date.toISOString();
152
+ }
153
+ } catch {
154
+ return value;
155
+ }
156
+ }
157
+ }
158
+
159
+ return value;
160
+ };
161
+
162
+ /**
163
+ * Vytvoří throttle funkci pro omezení frekvence volání
164
+ * @param {Function} func - Funkce k throttle
165
+ * @param {number} wait - Čekací doba v ms
166
+ * @returns {Function} Throttled funkce
167
+ */
168
+ export const throttle = (func, wait) => {
169
+ let timeout = null;
170
+ let lastRan = null;
171
+
172
+ return function throttled(...args) {
173
+ const now = Date.now();
174
+
175
+ if (lastRan && now - lastRan < wait) {
176
+ // Pokud jsme volali příliš brzy, naplánuj volání na později
177
+ clearTimeout(timeout);
178
+ timeout = setTimeout(() => {
179
+ lastRan = now;
180
+ func.apply(this, args);
181
+ }, wait - (now - lastRan));
182
+ } else {
183
+ // První volání nebo už uplynul čas
184
+ lastRan = now;
185
+ func.apply(this, args);
186
+ }
187
+ };
188
+ };
189
+
190
+ /**
191
+ * Vytvoří debounce funkci pro odložení volání
192
+ * @param {Function} func - Funkce k debounce
193
+ * @param {number} wait - Čekací doba v ms
194
+ * @returns {Function} Debounced funkce
195
+ */
196
+ export const debounce = (func, wait) => {
197
+ let timeout = null;
198
+
199
+ return function debounced(...args) {
200
+ clearTimeout(timeout);
201
+ timeout = setTimeout(() => {
202
+ func.apply(this, args);
203
+ }, wait);
204
+ };
205
+ };
package/index.jsx CHANGED
@@ -1,9 +1,11 @@
1
1
  /* eslint-disable */
2
- import React, { useState, useCallback } from 'react';
2
+ import React, { useState, useCallback, useMemo } from 'react';
3
3
  import { Tag, Space, Button, Spin, Pagination, Row, Col, Input, Select, Radio } from 'antd';
4
4
  import { CloseOutlined, FilterOutlined, LoadingOutlined, ReloadOutlined, DownOutlined, FilterFilled } from '@ant-design/icons';
5
5
  import { filterCondition } from '@bit.rhplus/ui2.filter';
6
+ import { formatFilterValue } from './filterHelpers';
6
7
 
8
+ // Konstanty extrahované mimo komponentu pro stabilní references
7
9
  const conditionLabels = {
8
10
  [filterCondition.equals]: 'je',
9
11
  [filterCondition.notEquals]: 'není',
@@ -20,33 +22,11 @@ const conditionLabels = {
20
22
  [filterCondition.notIn]: 'neobsahuje',
21
23
  };
22
24
 
23
- const formatValue = (value, fieldName, valueLabelsMap, moduleLabels = {}, fieldKey = null) => {
24
- if (Array.isArray(value)) {
25
- if (valueLabelsMap[fieldName]) {
26
- return value.map(v => valueLabelsMap[fieldName][v] || v).join(', ');
27
- }
28
- return value.join(', ');
29
- }
30
- if (typeof value === 'boolean') {
31
- return value ? 'Ano' : 'Ne';
32
- }
33
- if (value === null || value === undefined) {
34
- return '';
35
- }
36
-
37
- if (fieldKey && moduleLabels[fieldKey]) {
38
- return moduleLabels[fieldKey];
39
- }
40
-
41
- if (valueLabelsMap[fieldName] && valueLabelsMap[fieldName][value]) {
42
- return valueLabelsMap[fieldName][value];
43
- }
44
-
45
- return String(value);
46
- };
25
+ // Konstantní loading ikona
26
+ const LOADING_ICON = <LoadingOutlined style={{ fontSize: 18, color: '#1890ff', fontWeight: 900, strokeWidth: 4 }} spin />;
47
27
 
48
- const FilterPanel = ({
49
- filters = [],
28
+ const FilterPanel = ({
29
+ filters = [],
50
30
  onRemoveFilter,
51
31
  onClearAll,
52
32
  onRefresh,
@@ -69,20 +49,22 @@ const FilterPanel = ({
69
49
  const [expanded, setExpanded] = useState(false);
70
50
  const [filterValues, setFilterValues] = useState(initialFilterValues);
71
51
  const [moduleLabels, setModuleLabels] = useState({});
72
- if (!alwaysVisible && (!filters || filters.length === 0)) {
52
+
53
+ // Memoizované hodnoty pro optimalizaci
54
+ const hasFilters = useMemo(() => filters && filters.length > 0, [filters]);
55
+ const hasFilterFields = useMemo(() => filterFields && filterFields.length > 0, [filterFields]);
56
+
57
+ // Early return pokud není co zobrazit
58
+ if (!alwaysVisible && !hasFilters) {
73
59
  return null;
74
60
  }
75
61
 
76
- const hasFilters = filters && filters.length > 0;
77
-
78
- const loadingIcon = <LoadingOutlined style={{ fontSize: 18, color: '#1890ff', fontWeight: 900, strokeWidth: 4 }} spin />;
79
-
80
62
  const handleFieldChange = useCallback((fieldKey, value, displayValue) => {
81
63
  setFilterValues(prev => ({
82
64
  ...prev,
83
65
  [fieldKey]: value
84
66
  }));
85
-
67
+
86
68
  if (displayValue !== undefined) {
87
69
  setModuleLabels(prev => ({
88
70
  ...prev,
@@ -115,7 +97,7 @@ const FilterPanel = ({
115
97
  if (onApplyFilters) {
116
98
  onApplyFilters(appliedFilters);
117
99
  }
118
-
100
+
119
101
  setExpanded(false);
120
102
  }, [filterFields, filterValues, onApplyFilters]);
121
103
 
@@ -129,7 +111,7 @@ const FilterPanel = ({
129
111
 
130
112
  const renderField = useCallback((field) => {
131
113
  const fieldKey = `${field.field}_${field.condition}`;
132
-
114
+
133
115
  if (field.type === 'select') {
134
116
  return (
135
117
  <Select
@@ -144,7 +126,7 @@ const FilterPanel = ({
144
126
  />
145
127
  );
146
128
  }
147
-
129
+
148
130
  if (field.type === 'date') {
149
131
  return (
150
132
  <Input
@@ -193,9 +175,7 @@ const FilterPanel = ({
193
175
  onChange={(e) => handleFieldChange(fieldKey, e.target.value)}
194
176
  />
195
177
  );
196
- }, [filterValues, handleFieldChange]);
197
-
198
- const hasFilterFields = filterFields && filterFields.length > 0;
178
+ }, [filterValues, handleFieldChange, accessToken]);
199
179
 
200
180
  return (
201
181
  <div style={{ position: 'relative', zIndex: 10 }}>
@@ -216,15 +196,15 @@ const FilterPanel = ({
216
196
  type="text"
217
197
  size="small"
218
198
  icon={
219
- <DownOutlined
220
- style={{
199
+ <DownOutlined
200
+ style={{
221
201
  transform: expanded ? 'rotate(180deg)' : 'rotate(0deg)',
222
202
  transition: 'transform 0.3s ease'
223
- }}
203
+ }}
224
204
  />
225
205
  }
226
206
  onClick={() => setExpanded(!expanded)}
227
- style={{
207
+ style={{
228
208
  color: '#1890ff',
229
209
  padding: '0 4px',
230
210
  height: '22px',
@@ -235,10 +215,10 @@ const FilterPanel = ({
235
215
  <Button
236
216
  type="text"
237
217
  size="small"
238
- icon={isLoading ? <Spin indicator={loadingIcon} /> : (expanded ? <FilterFilled /> : <ReloadOutlined />)}
218
+ icon={isLoading ? <Spin indicator={LOADING_ICON} /> : (expanded ? <FilterFilled /> : <ReloadOutlined />)}
239
219
  onClick={handleRefreshOrFilter}
240
220
  disabled={isLoading}
241
- style={{
221
+ style={{
242
222
  color: '#1890ff',
243
223
  padding: '0 4px',
244
224
  height: '22px',
@@ -250,9 +230,9 @@ const FilterPanel = ({
250
230
  const fieldLabel = filter.label || fieldLabels[filter.field] || filter.field;
251
231
  const conditionLabel = conditionLabels[filter.condition] || 'filtr';
252
232
  const fieldKey = `${filter.field}_${filter.condition}`;
253
- const valueLabel = formatValue(filter.value, filter.field, valueLabelsMap, moduleLabels, fieldKey);
254
-
255
- const displayText = filter.text || (valueLabel
233
+ const valueLabel = formatFilterValue(filter.value, filter.field, valueLabelsMap, moduleLabels, fieldKey);
234
+
235
+ const displayText = filter.text || (valueLabel
256
236
  ? `${fieldLabel} ${conditionLabel} (${valueLabel})`
257
237
  : `${fieldLabel} ${conditionLabel}`);
258
238
 
@@ -283,7 +263,7 @@ const FilterPanel = ({
283
263
  <span style={{ color: '#999', fontSize: '13px' }}>Žádné aktivní filtry</span>
284
264
  )}
285
265
  </Space>
286
-
266
+
287
267
  <Space style={{ lineHeight: 'normal', paddingRight: '7px' }} size={[16, 8]}>
288
268
  {hasFilters && onClearAll && (
289
269
  <Button
@@ -316,7 +296,7 @@ const FilterPanel = ({
316
296
  )}
317
297
  </Space>
318
298
  </div>
319
-
299
+
320
300
  <div
321
301
  style={{
322
302
  maxHeight: expanded ? '500px' : '0px',
@@ -334,9 +314,9 @@ const FilterPanel = ({
334
314
  borderBottom: '1px solid #f0f0f0',
335
315
  }}
336
316
  >
337
- <div style={{
338
- display: 'flex',
339
- flexDirection: 'row',
317
+ <div style={{
318
+ display: 'flex',
319
+ flexDirection: 'row',
340
320
  flexWrap: 'wrap',
341
321
  gap: '16px',
342
322
  alignItems: 'flex-start'
@@ -345,7 +325,7 @@ const FilterPanel = ({
345
325
  const fieldKey = `${field.field}_${field.condition}`;
346
326
  return (
347
327
  <div key={fieldKey} style={{ display: 'flex', alignItems: 'center', gap: '12px', width: '287px' }}>
348
- <div style={{
328
+ <div style={{
349
329
  width: '100px',
350
330
  fontWeight: '500',
351
331
  fontSize: '13px',
@@ -368,4 +348,40 @@ const FilterPanel = ({
368
348
  );
369
349
  };
370
350
 
371
- export default FilterPanel;
351
+ // Custom comparison funkce pro React.memo
352
+ const areEqual = (prevProps, nextProps) => {
353
+ return (
354
+ prevProps.filters === nextProps.filters &&
355
+ prevProps.isLoading === nextProps.isLoading &&
356
+ prevProps.current === nextProps.current &&
357
+ prevProps.pageSize === nextProps.pageSize &&
358
+ prevProps.total === nextProps.total &&
359
+ prevProps.alwaysVisible === nextProps.alwaysVisible &&
360
+ prevProps.showPagination === nextProps.showPagination &&
361
+ prevProps.fieldLabels === nextProps.fieldLabels &&
362
+ prevProps.valueLabelsMap === nextProps.valueLabelsMap &&
363
+ prevProps.filterFields === nextProps.filterFields &&
364
+ prevProps.initialFilterValues === nextProps.initialFilterValues &&
365
+ prevProps.pageSizeOptions === nextProps.pageSizeOptions &&
366
+ prevProps.accessToken === nextProps.accessToken &&
367
+ // Callback props
368
+ prevProps.onRemoveFilter === nextProps.onRemoveFilter &&
369
+ prevProps.onClearAll === nextProps.onClearAll &&
370
+ prevProps.onRefresh === nextProps.onRefresh &&
371
+ prevProps.onPageChange === nextProps.onPageChange &&
372
+ prevProps.onPageSizeChange === nextProps.onPageSizeChange &&
373
+ prevProps.onApplyFilters === nextProps.onApplyFilters
374
+ );
375
+ };
376
+
377
+ // Export s React.memo pro optimalizaci re-renderů
378
+ export default React.memo(FilterPanel, areEqual);
379
+ export {
380
+ buildValueLabelsMap,
381
+ buildFieldLabelsMap,
382
+ normalizeFilterValueForBackend,
383
+ throttle,
384
+ debounce
385
+ } from './filterHelpers';
386
+
387
+ export {formatFilterValue};
package/package.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@bit.rhplus/ui2.filter-panel",
3
- "version": "0.0.6",
3
+ "version": "0.0.8",
4
4
  "homepage": "https://bit.cloud/remote-scope/ui2/filter-panel",
5
5
  "main": "dist/index.js",
6
6
  "componentId": {
7
7
  "scope": "remote-scope",
8
8
  "name": "ui2/filter-panel",
9
- "version": "0.0.6"
9
+ "version": "0.0.8"
10
10
  },
11
11
  "dependencies": {
12
12
  "@ant-design/icons": "^5.4.0",