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

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.
package/dist/index.d.ts CHANGED
@@ -1,8 +1,9 @@
1
1
  export default FilterPanel;
2
- declare function FilterPanel({ filters, onRemoveFilter, onClearAll, fieldLabels, valueLabelsMap, alwaysVisible, isLoading, current, pageSize, total, pageSizeOptions, onPageChange, onPageSizeChange, showPagination, }: {
2
+ declare function FilterPanel({ filters, onRemoveFilter, onClearAll, onRefresh, fieldLabels, valueLabelsMap, alwaysVisible, isLoading, current, pageSize, total, pageSizeOptions, onPageChange, onPageSizeChange, showPagination, filterFields, onApplyFilters, initialFilterValues, accessToken, }: {
3
3
  filters?: any[] | undefined;
4
4
  onRemoveFilter: any;
5
5
  onClearAll: any;
6
+ onRefresh: any;
6
7
  fieldLabels?: {} | undefined;
7
8
  valueLabelsMap?: {} | undefined;
8
9
  alwaysVisible?: boolean | undefined;
@@ -14,4 +15,8 @@ declare function FilterPanel({ filters, onRemoveFilter, onClearAll, fieldLabels,
14
15
  onPageChange: any;
15
16
  onPageSizeChange: any;
16
17
  showPagination?: boolean | undefined;
18
+ filterFields?: any[] | undefined;
19
+ onApplyFilters: any;
20
+ initialFilterValues?: {} | undefined;
21
+ accessToken: any;
17
22
  }): import("react/jsx-runtime").JSX.Element | null;
package/dist/index.js CHANGED
@@ -1,8 +1,8 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  /* eslint-disable */
3
- import React from 'react';
4
- import { Tag, Space, Button, Spin, Pagination } from 'antd';
5
- import { CloseOutlined, FilterOutlined, LoadingOutlined } from '@ant-design/icons';
3
+ import React, { useState, useCallback } from 'react';
4
+ import { Tag, Space, Button, Spin, Pagination, Row, Col, Input, Select, Radio } from 'antd';
5
+ import { CloseOutlined, FilterOutlined, LoadingOutlined, ReloadOutlined, DownOutlined, FilterFilled } from '@ant-design/icons';
6
6
  import { filterCondition } from '@bit.rhplus/ui2.filter';
7
7
  const conditionLabels = {
8
8
  [filterCondition.equals]: 'je',
@@ -19,7 +19,7 @@ const conditionLabels = {
19
19
  [filterCondition.in]: 'obsahuje',
20
20
  [filterCondition.notIn]: 'neobsahuje',
21
21
  };
22
- const formatValue = (value, fieldName, valueLabelsMap) => {
22
+ const formatValue = (value, fieldName, valueLabelsMap, moduleLabels = {}, fieldKey = null) => {
23
23
  if (Array.isArray(value)) {
24
24
  if (valueLabelsMap[fieldName]) {
25
25
  return value.map(v => valueLabelsMap[fieldName][v] || v).join(', ');
@@ -32,50 +32,167 @@ const formatValue = (value, fieldName, valueLabelsMap) => {
32
32
  if (value === null || value === undefined) {
33
33
  return '';
34
34
  }
35
+ if (fieldKey && moduleLabels[fieldKey]) {
36
+ return moduleLabels[fieldKey];
37
+ }
35
38
  if (valueLabelsMap[fieldName] && valueLabelsMap[fieldName][value]) {
36
39
  return valueLabelsMap[fieldName][value];
37
40
  }
38
41
  return String(value);
39
42
  };
40
- const FilterPanel = ({ filters = [], onRemoveFilter, onClearAll, fieldLabels = {}, valueLabelsMap = {}, alwaysVisible = false, isLoading = false, current = 1, pageSize = 100, total = 0, pageSizeOptions = ['100', '200', '300', '500', '1000'], onPageChange, onPageSizeChange, showPagination = true, }) => {
43
+ 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
+ const [expanded, setExpanded] = useState(false);
45
+ const [filterValues, setFilterValues] = useState(initialFilterValues);
46
+ const [moduleLabels, setModuleLabels] = useState({});
41
47
  if (!alwaysVisible && (!filters || filters.length === 0)) {
42
48
  return null;
43
49
  }
44
50
  const hasFilters = filters && filters.length > 0;
45
51
  const loadingIcon = _jsx(LoadingOutlined, { style: { fontSize: 18, color: '#1890ff', fontWeight: 900, strokeWidth: 4 }, spin: true });
46
- return (_jsxs("div", { style: {
47
- display: 'flex',
48
- justifyContent: 'space-between',
49
- alignItems: 'center',
50
- padding: '7px 0px 7px 7px',
51
- borderRadius: '4px',
52
- backgroundColor: '#fafafa',
53
- borderTop: '1px solid #f0f0f0',
54
- }, children: [_jsxs(Space, { style: { lineHeight: 'normal', flexWrap: 'wrap' }, size: [8, 8], children: [isLoading ? (_jsx(Spin, { indicator: loadingIcon })) : (_jsx(FilterOutlined, { style: { color: hasFilters ? '#1890ff' : '#d9d9d9', fontSize: '14px' } })), hasFilters ? (filters.map((filter, index) => {
55
- const fieldLabel = filter.label || fieldLabels[filter.field] || filter.field;
56
- const conditionLabel = conditionLabels[filter.condition] || 'filtr';
57
- const valueLabel = formatValue(filter.value, filter.field, valueLabelsMap);
58
- const displayText = valueLabel
59
- ? `${fieldLabel} ${conditionLabel} (${valueLabel})`
60
- : `${fieldLabel} ${conditionLabel}`;
61
- return (_jsx(Tag, { closable: true, onClose: (e) => {
62
- e.preventDefault();
63
- if (onRemoveFilter) {
64
- onRemoveFilter(index);
65
- }
66
- }, style: {
67
- backgroundColor: '#e6f7ff',
68
- borderColor: '#91d5ff',
69
- color: '#0050b3',
70
- fontSize: '13px',
71
- padding: '2px 8px',
72
- margin: 0,
73
- }, children: displayText }, `${filter.field}-${index}`));
74
- })) : (_jsx("span", { style: { color: '#999', fontSize: '13px' }, children: "\u017D\u00E1dn\u00E9 aktivn\u00ED filtry" }))] }), _jsxs(Space, { style: { lineHeight: 'normal', paddingRight: '7px' }, size: [16, 8], children: [hasFilters && onClearAll && (_jsx(Button, { type: "link", size: "small", onClick: onClearAll, style: { color: '#999' }, children: "Vymazat v\u0161e" })), showPagination && (_jsx(Pagination, { size: "small", current: current, pageSize: pageSize, total: total, pageSizeOptions: pageSizeOptions, showSizeChanger: true, showQuickJumper: true, showTotal: (total, range) => `${range[0]}-${range[1]} z ${total}`, onChange: onPageChange, onShowSizeChange: (current, size) => {
75
- if (onPageSizeChange) {
76
- onPageSizeChange(current, size);
77
- }
78
- }, style: { marginBottom: 0 } }))] })] }));
52
+ const handleFieldChange = useCallback((fieldKey, value, displayValue) => {
53
+ setFilterValues(prev => ({
54
+ ...prev,
55
+ [fieldKey]: value
56
+ }));
57
+ if (displayValue !== undefined) {
58
+ setModuleLabels(prev => ({
59
+ ...prev,
60
+ [fieldKey]: displayValue
61
+ }));
62
+ }
63
+ }, []);
64
+ const handleApplyFilters = useCallback(() => {
65
+ const appliedFilters = filterFields
66
+ .filter(field => {
67
+ const fieldKey = `${field.field}_${field.condition}`;
68
+ const value = filterValues[fieldKey];
69
+ if (Array.isArray(value)) {
70
+ return value.length > 0;
71
+ }
72
+ return value !== undefined && value !== '' && value !== null;
73
+ })
74
+ .map(field => {
75
+ const fieldKey = `${field.field}_${field.condition}`;
76
+ const value = filterValues[fieldKey];
77
+ return {
78
+ field: field.field,
79
+ condition: field.condition,
80
+ value: value,
81
+ label: field.label
82
+ };
83
+ });
84
+ if (onApplyFilters) {
85
+ onApplyFilters(appliedFilters);
86
+ }
87
+ setExpanded(false);
88
+ }, [filterFields, filterValues, onApplyFilters]);
89
+ const handleRefreshOrFilter = useCallback(() => {
90
+ if (expanded) {
91
+ handleApplyFilters();
92
+ }
93
+ else {
94
+ onRefresh();
95
+ }
96
+ }, [expanded, handleApplyFilters, onRefresh]);
97
+ const renderField = useCallback((field) => {
98
+ const fieldKey = `${field.field}_${field.condition}`;
99
+ if (field.type === 'select') {
100
+ return (_jsx(Select, { placeholder: `Vyber ${field.label}`, allowClear: true, value: filterValues[fieldKey], onChange: (value) => handleFieldChange(fieldKey, value), options: field.options, style: { width: '100%' }, getPopupContainer: () => document.body, dropdownStyle: { zIndex: 9999 } }));
101
+ }
102
+ if (field.type === 'date') {
103
+ return (_jsx(Input, { type: "date", placeholder: field.label, value: filterValues[fieldKey] || '', onChange: (e) => handleFieldChange(fieldKey, e.target.value) }));
104
+ }
105
+ if (field.type === 'radio') {
106
+ return (_jsx(Radio.Group, { value: filterValues[fieldKey], onChange: (e) => handleFieldChange(fieldKey, e.target.value), options: field.options }));
107
+ }
108
+ if (field.type === 'module' && field.component) {
109
+ const ModuleComponent = field.component;
110
+ return (_jsx(ModuleComponent, { value: filterValues[fieldKey], onChange: (value, selectedItem) => {
111
+ let displayValue = value;
112
+ if (selectedItem && field.moduleDefinition) {
113
+ const labelField = field.moduleDefinition.labelField || 'name';
114
+ displayValue = selectedItem[labelField] || field.moduleDefinition.getDisplayValue?.(selectedItem) || value;
115
+ }
116
+ handleFieldChange(fieldKey, value, displayValue);
117
+ }, placeholder: `Vyber ${field.label}`, accessToken: accessToken }));
118
+ }
119
+ 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;
122
+ return (_jsxs("div", { style: { position: 'relative', zIndex: 10 }, children: [_jsxs("div", { style: {
123
+ display: 'flex',
124
+ justifyContent: 'space-between',
125
+ alignItems: 'center',
126
+ padding: '7px 0px 7px 7px',
127
+ borderRadius: '4px',
128
+ backgroundColor: '#fafafa',
129
+ borderTop: '1px solid #f0f0f0',
130
+ }, children: [_jsxs(Space, { style: { lineHeight: 'normal', flexWrap: 'wrap' }, size: [8, 8], children: [hasFilterFields && (_jsx(Button, { type: "text", size: "small", icon: _jsx(DownOutlined, { style: {
131
+ transform: expanded ? 'rotate(180deg)' : 'rotate(0deg)',
132
+ transition: 'transform 0.3s ease'
133
+ } }), onClick: () => setExpanded(!expanded), style: {
134
+ color: '#1890ff',
135
+ padding: '0 4px',
136
+ height: '22px',
137
+ 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: {
139
+ color: '#1890ff',
140
+ padding: '0 4px',
141
+ height: '22px',
142
+ minWidth: '22px'
143
+ } }), hasFilters ? (filters.map((filter, index) => {
144
+ const fieldLabel = filter.label || fieldLabels[filter.field] || filter.field;
145
+ const conditionLabel = conditionLabels[filter.condition] || 'filtr';
146
+ const fieldKey = `${filter.field}_${filter.condition}`;
147
+ const valueLabel = formatValue(filter.value, filter.field, valueLabelsMap, moduleLabels, fieldKey);
148
+ const displayText = filter.text || (valueLabel
149
+ ? `${fieldLabel} ${conditionLabel} (${valueLabel})`
150
+ : `${fieldLabel} ${conditionLabel}`);
151
+ return (_jsx(Tag, { closable: true, onClose: (e) => {
152
+ e.preventDefault();
153
+ if (onRemoveFilter) {
154
+ onRemoveFilter(index);
155
+ }
156
+ }, style: {
157
+ backgroundColor: '#e6f7ff',
158
+ borderColor: '#91d5ff',
159
+ color: '#0050b3',
160
+ fontSize: '13px',
161
+ padding: '2px 8px',
162
+ margin: 0,
163
+ }, children: displayText }, `${filter.field}-${index}`));
164
+ })) : (_jsx("span", { style: { color: '#999', fontSize: '13px' }, children: "\u017D\u00E1dn\u00E9 aktivn\u00ED filtry" }))] }), _jsxs(Space, { style: { lineHeight: 'normal', paddingRight: '7px' }, size: [16, 8], children: [hasFilters && onClearAll && (_jsx(Button, { type: "link", size: "small", onClick: onClearAll, style: { color: '#999' }, children: "Vymazat v\u0161e" })), showPagination && (_jsx(Pagination, { size: "small", current: current, pageSize: pageSize, total: total, pageSizeOptions: pageSizeOptions, showSizeChanger: true, showQuickJumper: true, showTotal: (total, range) => `${range[0]}-${range[1]} z ${total}`, onChange: onPageChange, onShowSizeChange: (current, size) => {
165
+ if (onPageSizeChange) {
166
+ onPageSizeChange(current, size);
167
+ }
168
+ }, style: { marginBottom: 0 } }))] })] }), _jsx("div", { style: {
169
+ maxHeight: expanded ? '500px' : '0px',
170
+ overflow: 'hidden',
171
+ transition: 'max-height 0.3s ease-in-out',
172
+ position: 'relative',
173
+ zIndex: 100,
174
+ }, children: _jsx("div", { style: {
175
+ padding: '16px',
176
+ backgroundColor: '#f5f5f5',
177
+ borderTop: '1px solid #f0f0f0',
178
+ borderBottom: '1px solid #f0f0f0',
179
+ }, children: _jsx("div", { style: {
180
+ display: 'flex',
181
+ flexDirection: 'row',
182
+ flexWrap: 'wrap',
183
+ gap: '16px',
184
+ alignItems: 'flex-start'
185
+ }, children: filterFields.map((field) => {
186
+ const fieldKey = `${field.field}_${field.condition}`;
187
+ return (_jsxs("div", { style: { display: 'flex', alignItems: 'center', gap: '12px', width: '287px' }, children: [_jsxs("div", { style: {
188
+ width: '100px',
189
+ fontWeight: '500',
190
+ fontSize: '13px',
191
+ color: '#333',
192
+ textAlign: 'right',
193
+ flexShrink: 0
194
+ }, children: [field.label, ":"] }), _jsx("div", { style: { width: '175px' }, children: renderField(field) })] }, fieldKey));
195
+ }) }) }) })] }));
79
196
  };
80
197
  export default FilterPanel;
81
198
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.jsx"],"names":[],"mappings":";AAAA,oBAAoB;AACpB,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACnF,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAEzD,MAAM,eAAe,GAAG;IACtB,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE,IAAI;IAC9B,CAAC,eAAe,CAAC,SAAS,CAAC,EAAE,MAAM;IACnC,CAAC,eAAe,CAAC,WAAW,CAAC,EAAE,OAAO;IACtC,CAAC,eAAe,CAAC,kBAAkB,CAAC,EAAE,kBAAkB;IACxD,CAAC,eAAe,CAAC,QAAQ,CAAC,EAAE,OAAO;IACnC,CAAC,eAAe,CAAC,eAAe,CAAC,EAAE,kBAAkB;IACrD,CAAC,eAAe,CAAC,QAAQ,CAAC,EAAE,UAAU;IACtC,CAAC,eAAe,CAAC,UAAU,CAAC,EAAE,WAAW;IACzC,CAAC,eAAe,CAAC,QAAQ,CAAC,EAAE,UAAU;IACtC,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE,YAAY;IACtC,CAAC,eAAe,CAAC,SAAS,CAAC,EAAE,cAAc;IAC3C,CAAC,eAAe,CAAC,EAAE,CAAC,EAAE,UAAU;IAChC,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE,YAAY;CACtC,CAAC;AAEF,MAAM,WAAW,GAAG,CAAC,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,EAAE;IACvD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,IAAI,cAAc,CAAC,SAAS,CAAC,EAAE,CAAC;YAC9B,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtE,CAAC;QACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,SAAS,EAAE,CAAC;QAC/B,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;IAC9B,CAAC;IACD,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QAC1C,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,IAAI,cAAc,CAAC,SAAS,CAAC,IAAI,cAAc,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;QAClE,OAAO,cAAc,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,CAAC;IAC1C,CAAC;IAED,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC,CAAC;AAEF,MAAM,WAAW,GAAG,CAAC,EACnB,OAAO,GAAG,EAAE,EACZ,cAAc,EACd,UAAU,EACV,WAAW,GAAG,EAAE,EAChB,cAAc,GAAG,EAAE,EACnB,aAAa,GAAG,KAAK,EACrB,SAAS,GAAG,KAAK,EACjB,OAAO,GAAG,CAAC,EACX,QAAQ,GAAG,GAAG,EACd,KAAK,GAAG,CAAC,EACT,eAAe,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,EACtD,YAAY,EACZ,gBAAgB,EAChB,cAAc,GAAG,IAAI,GACtB,EAAE,EAAE;IACH,IAAI,CAAC,aAAa,IAAI,CAAC,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,EAAE,CAAC;QACzD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,UAAU,GAAG,OAAO,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;IAEjD,MAAM,WAAW,GAAG,KAAC,eAAe,IAAC,KAAK,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,GAAG,EAAE,WAAW,EAAE,CAAC,EAAE,EAAE,IAAI,SAAG,CAAC;IAEzH,OAAO,CACL,eACE,KAAK,EAAE;YACL,OAAO,EAAE,MAAM;YACf,cAAc,EAAE,eAAe;YAC/B,UAAU,EAAE,QAAQ;YACpB,OAAO,EAAE,iBAAiB;YAC1B,YAAY,EAAE,KAAK;YACnB,eAAe,EAAE,SAAS;YAC1B,SAAS,EAAE,mBAAmB;SAC/B,aAED,MAAC,KAAK,IAAC,KAAK,EAAE,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,aACnE,SAAS,CAAC,CAAC,CAAC,CACX,KAAC,IAAI,IAAC,SAAS,EAAE,WAAW,GAAI,CACjC,CAAC,CAAC,CAAC,CACF,KAAC,cAAc,IAAC,KAAK,EAAE,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAI,CAC3F,EACA,UAAU,CAAC,CAAC,CAAC,CACZ,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;wBAC9B,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,IAAI,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC;wBAC7E,MAAM,cAAc,GAAG,eAAe,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,OAAO,CAAC;wBACpE,MAAM,UAAU,GAAG,WAAW,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC;wBAE3E,MAAM,WAAW,GAAG,UAAU;4BAC5B,CAAC,CAAC,GAAG,UAAU,IAAI,cAAc,KAAK,UAAU,GAAG;4BACnD,CAAC,CAAC,GAAG,UAAU,IAAI,cAAc,EAAE,CAAC;wBAEtC,OAAO,CACL,KAAC,GAAG,IAEF,QAAQ,QACR,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE;gCACb,CAAC,CAAC,cAAc,EAAE,CAAC;gCACnB,IAAI,cAAc,EAAE,CAAC;oCACnB,cAAc,CAAC,KAAK,CAAC,CAAC;gCACxB,CAAC;4BACH,CAAC,EACD,KAAK,EAAE;gCACL,eAAe,EAAE,SAAS;gCAC1B,WAAW,EAAE,SAAS;gCACtB,KAAK,EAAE,SAAS;gCAChB,QAAQ,EAAE,MAAM;gCAChB,OAAO,EAAE,SAAS;gCAClB,MAAM,EAAE,CAAC;6BACV,YAEA,WAAW,IAjBP,GAAG,MAAM,CAAC,KAAK,IAAI,KAAK,EAAE,CAkB3B,CACP,CAAC;oBACJ,CAAC,CAAC,CACD,CAAC,CAAC,CAAC,CACF,eAAM,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,yDAA6B,CAC9E,IACK,EAER,MAAC,KAAK,IAAC,KAAK,EAAE,EAAE,UAAU,EAAE,QAAQ,EAAE,YAAY,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,aACvE,UAAU,IAAI,UAAU,IAAI,CAC3B,KAAC,MAAM,IACL,IAAI,EAAC,MAAM,EACX,IAAI,EAAC,OAAO,EACZ,OAAO,EAAE,UAAU,EACnB,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,iCAGjB,CACV,EACA,cAAc,IAAI,CACjB,KAAC,UAAU,IACT,IAAI,EAAC,OAAO,EACZ,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE,KAAK,EACZ,eAAe,EAAE,eAAe,EAChC,eAAe,QACf,eAAe,QACf,SAAS,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,MAAM,KAAK,EAAE,EACjE,QAAQ,EAAE,YAAY,EACtB,gBAAgB,EAAE,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE;4BAClC,IAAI,gBAAgB,EAAE,CAAC;gCACrB,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;4BAClC,CAAC;wBACH,CAAC,EACD,KAAK,EAAE,EAAE,YAAY,EAAE,CAAC,EAAE,GAC1B,CACH,IACK,IACJ,CACP,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,WAAW,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.jsx"],"names":[],"mappings":"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"}
package/index.jsx CHANGED
@@ -1,7 +1,7 @@
1
1
  /* eslint-disable */
2
- import React from 'react';
3
- import { Tag, Space, Button, Spin, Pagination } from 'antd';
4
- import { CloseOutlined, FilterOutlined, LoadingOutlined } from '@ant-design/icons';
2
+ import React, { useState, useCallback } from 'react';
3
+ import { Tag, Space, Button, Spin, Pagination, Row, Col, Input, Select, Radio } from 'antd';
4
+ import { CloseOutlined, FilterOutlined, LoadingOutlined, ReloadOutlined, DownOutlined, FilterFilled } from '@ant-design/icons';
5
5
  import { filterCondition } from '@bit.rhplus/ui2.filter';
6
6
 
7
7
  const conditionLabels = {
@@ -20,7 +20,7 @@ const conditionLabels = {
20
20
  [filterCondition.notIn]: 'neobsahuje',
21
21
  };
22
22
 
23
- const formatValue = (value, fieldName, valueLabelsMap) => {
23
+ const formatValue = (value, fieldName, valueLabelsMap, moduleLabels = {}, fieldKey = null) => {
24
24
  if (Array.isArray(value)) {
25
25
  if (valueLabelsMap[fieldName]) {
26
26
  return value.map(v => valueLabelsMap[fieldName][v] || v).join(', ');
@@ -34,6 +34,10 @@ const formatValue = (value, fieldName, valueLabelsMap) => {
34
34
  return '';
35
35
  }
36
36
 
37
+ if (fieldKey && moduleLabels[fieldKey]) {
38
+ return moduleLabels[fieldKey];
39
+ }
40
+
37
41
  if (valueLabelsMap[fieldName] && valueLabelsMap[fieldName][value]) {
38
42
  return valueLabelsMap[fieldName][value];
39
43
  }
@@ -45,6 +49,7 @@ const FilterPanel = ({
45
49
  filters = [],
46
50
  onRemoveFilter,
47
51
  onClearAll,
52
+ onRefresh,
48
53
  fieldLabels = {},
49
54
  valueLabelsMap = {},
50
55
  alwaysVisible = false,
@@ -56,7 +61,14 @@ const FilterPanel = ({
56
61
  onPageChange,
57
62
  onPageSizeChange,
58
63
  showPagination = true,
64
+ filterFields = [],
65
+ onApplyFilters,
66
+ initialFilterValues = {},
67
+ accessToken,
59
68
  }) => {
69
+ const [expanded, setExpanded] = useState(false);
70
+ const [filterValues, setFilterValues] = useState(initialFilterValues);
71
+ const [moduleLabels, setModuleLabels] = useState({});
60
72
  if (!alwaysVisible && (!filters || filters.length === 0)) {
61
73
  return null;
62
74
  }
@@ -65,33 +77,184 @@ const FilterPanel = ({
65
77
 
66
78
  const loadingIcon = <LoadingOutlined style={{ fontSize: 18, color: '#1890ff', fontWeight: 900, strokeWidth: 4 }} spin />;
67
79
 
80
+ const handleFieldChange = useCallback((fieldKey, value, displayValue) => {
81
+ setFilterValues(prev => ({
82
+ ...prev,
83
+ [fieldKey]: value
84
+ }));
85
+
86
+ if (displayValue !== undefined) {
87
+ setModuleLabels(prev => ({
88
+ ...prev,
89
+ [fieldKey]: displayValue
90
+ }));
91
+ }
92
+ }, []);
93
+
94
+ const handleApplyFilters = useCallback(() => {
95
+ const appliedFilters = filterFields
96
+ .filter(field => {
97
+ const fieldKey = `${field.field}_${field.condition}`;
98
+ const value = filterValues[fieldKey];
99
+ if (Array.isArray(value)) {
100
+ return value.length > 0;
101
+ }
102
+ return value !== undefined && value !== '' && value !== null;
103
+ })
104
+ .map(field => {
105
+ const fieldKey = `${field.field}_${field.condition}`;
106
+ const value = filterValues[fieldKey];
107
+ return {
108
+ field: field.field,
109
+ condition: field.condition,
110
+ value: value,
111
+ label: field.label
112
+ };
113
+ });
114
+
115
+ if (onApplyFilters) {
116
+ onApplyFilters(appliedFilters);
117
+ }
118
+
119
+ setExpanded(false);
120
+ }, [filterFields, filterValues, onApplyFilters]);
121
+
122
+ const handleRefreshOrFilter = useCallback(() => {
123
+ if (expanded) {
124
+ handleApplyFilters();
125
+ } else {
126
+ onRefresh();
127
+ }
128
+ }, [expanded, handleApplyFilters, onRefresh]);
129
+
130
+ const renderField = useCallback((field) => {
131
+ const fieldKey = `${field.field}_${field.condition}`;
132
+
133
+ if (field.type === 'select') {
134
+ return (
135
+ <Select
136
+ placeholder={`Vyber ${field.label}`}
137
+ allowClear
138
+ value={filterValues[fieldKey]}
139
+ onChange={(value) => handleFieldChange(fieldKey, value)}
140
+ options={field.options}
141
+ style={{ width: '100%' }}
142
+ getPopupContainer={() => document.body}
143
+ dropdownStyle={{ zIndex: 9999 }}
144
+ />
145
+ );
146
+ }
147
+
148
+ if (field.type === 'date') {
149
+ return (
150
+ <Input
151
+ type="date"
152
+ placeholder={field.label}
153
+ value={filterValues[fieldKey] || ''}
154
+ onChange={(e) => handleFieldChange(fieldKey, e.target.value)}
155
+ />
156
+ );
157
+ }
158
+
159
+ if (field.type === 'radio') {
160
+ return (
161
+ <Radio.Group
162
+ value={filterValues[fieldKey]}
163
+ onChange={(e) => handleFieldChange(fieldKey, e.target.value)}
164
+ options={field.options}
165
+ />
166
+ );
167
+ }
168
+
169
+ if (field.type === 'module' && field.component) {
170
+ const ModuleComponent = field.component;
171
+ return (
172
+ <ModuleComponent
173
+ value={filterValues[fieldKey]}
174
+ onChange={(value, selectedItem) => {
175
+ let displayValue = value;
176
+ if (selectedItem && field.moduleDefinition) {
177
+ const labelField = field.moduleDefinition.labelField || 'name';
178
+ displayValue = selectedItem[labelField] || field.moduleDefinition.getDisplayValue?.(selectedItem) || value;
179
+ }
180
+ handleFieldChange(fieldKey, value, displayValue);
181
+ }}
182
+ placeholder={`Vyber ${field.label}`}
183
+ accessToken={accessToken}
184
+ />
185
+ );
186
+ }
187
+
188
+ return (
189
+ <Input
190
+ placeholder={`Zadej ${field.label}`}
191
+ allowClear
192
+ value={filterValues[fieldKey] || ''}
193
+ onChange={(e) => handleFieldChange(fieldKey, e.target.value)}
194
+ />
195
+ );
196
+ }, [filterValues, handleFieldChange]);
197
+
198
+ const hasFilterFields = filterFields && filterFields.length > 0;
199
+
68
200
  return (
69
- <div
70
- style={{
71
- display: 'flex',
72
- justifyContent: 'space-between',
73
- alignItems: 'center',
74
- padding: '7px 0px 7px 7px',
75
- borderRadius: '4px',
76
- backgroundColor: '#fafafa',
77
- borderTop: '1px solid #f0f0f0',
78
- }}
79
- >
80
- <Space style={{ lineHeight: 'normal', flexWrap: 'wrap' }} size={[8, 8]}>
81
- {isLoading ? (
82
- <Spin indicator={loadingIcon} />
83
- ) : (
84
- <FilterOutlined style={{ color: hasFilters ? '#1890ff' : '#d9d9d9', fontSize: '14px' }} />
85
- )}
201
+ <div style={{ position: 'relative', zIndex: 10 }}>
202
+ <div
203
+ style={{
204
+ display: 'flex',
205
+ justifyContent: 'space-between',
206
+ alignItems: 'center',
207
+ padding: '7px 0px 7px 7px',
208
+ borderRadius: '4px',
209
+ backgroundColor: '#fafafa',
210
+ borderTop: '1px solid #f0f0f0',
211
+ }}
212
+ >
213
+ <Space style={{ lineHeight: 'normal', flexWrap: 'wrap' }} size={[8, 8]}>
214
+ {hasFilterFields && (
215
+ <Button
216
+ type="text"
217
+ size="small"
218
+ icon={
219
+ <DownOutlined
220
+ style={{
221
+ transform: expanded ? 'rotate(180deg)' : 'rotate(0deg)',
222
+ transition: 'transform 0.3s ease'
223
+ }}
224
+ />
225
+ }
226
+ onClick={() => setExpanded(!expanded)}
227
+ style={{
228
+ color: '#1890ff',
229
+ padding: '0 4px',
230
+ height: '22px',
231
+ minWidth: '22px'
232
+ }}
233
+ />
234
+ )}
235
+ <Button
236
+ type="text"
237
+ size="small"
238
+ icon={isLoading ? <Spin indicator={loadingIcon} /> : (expanded ? <FilterFilled /> : <ReloadOutlined />)}
239
+ onClick={handleRefreshOrFilter}
240
+ disabled={isLoading}
241
+ style={{
242
+ color: '#1890ff',
243
+ padding: '0 4px',
244
+ height: '22px',
245
+ minWidth: '22px'
246
+ }}
247
+ />
86
248
  {hasFilters ? (
87
249
  filters.map((filter, index) => {
88
250
  const fieldLabel = filter.label || fieldLabels[filter.field] || filter.field;
89
251
  const conditionLabel = conditionLabels[filter.condition] || 'filtr';
90
- const valueLabel = formatValue(filter.value, filter.field, valueLabelsMap);
252
+ const fieldKey = `${filter.field}_${filter.condition}`;
253
+ const valueLabel = formatValue(filter.value, filter.field, valueLabelsMap, moduleLabels, fieldKey);
91
254
 
92
- const displayText = valueLabel
255
+ const displayText = filter.text || (valueLabel
93
256
  ? `${fieldLabel} ${conditionLabel} (${valueLabel})`
94
- : `${fieldLabel} ${conditionLabel}`;
257
+ : `${fieldLabel} ${conditionLabel}`);
95
258
 
96
259
  return (
97
260
  <Tag
@@ -152,6 +315,55 @@ const FilterPanel = ({
152
315
  />
153
316
  )}
154
317
  </Space>
318
+ </div>
319
+
320
+ <div
321
+ style={{
322
+ maxHeight: expanded ? '500px' : '0px',
323
+ overflow: 'hidden',
324
+ transition: 'max-height 0.3s ease-in-out',
325
+ position: 'relative',
326
+ zIndex: 100,
327
+ }}
328
+ >
329
+ <div
330
+ style={{
331
+ padding: '16px',
332
+ backgroundColor: '#f5f5f5',
333
+ borderTop: '1px solid #f0f0f0',
334
+ borderBottom: '1px solid #f0f0f0',
335
+ }}
336
+ >
337
+ <div style={{
338
+ display: 'flex',
339
+ flexDirection: 'row',
340
+ flexWrap: 'wrap',
341
+ gap: '16px',
342
+ alignItems: 'flex-start'
343
+ }}>
344
+ {filterFields.map((field) => {
345
+ const fieldKey = `${field.field}_${field.condition}`;
346
+ return (
347
+ <div key={fieldKey} style={{ display: 'flex', alignItems: 'center', gap: '12px', width: '287px' }}>
348
+ <div style={{
349
+ width: '100px',
350
+ fontWeight: '500',
351
+ fontSize: '13px',
352
+ color: '#333',
353
+ textAlign: 'right',
354
+ flexShrink: 0
355
+ }}>
356
+ {field.label}:
357
+ </div>
358
+ <div style={{ width: '175px' }}>
359
+ {renderField(field)}
360
+ </div>
361
+ </div>
362
+ );
363
+ })}
364
+ </div>
365
+ </div>
366
+ </div>
155
367
  </div>
156
368
  );
157
369
  };
package/package.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@bit.rhplus/ui2.filter-panel",
3
- "version": "0.0.4",
3
+ "version": "0.0.6",
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.4"
9
+ "version": "0.0.6"
10
10
  },
11
11
  "dependencies": {
12
12
  "@ant-design/icons": "^5.4.0",