@bit.rhplus/ui2.module-dropdown-list 0.1.0 → 0.1.2
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 +0 -3
- package/dist/index.js +15 -11
- package/dist/index.js.map +1 -1
- package/dist/useModuleDropdownList.js +2 -2
- package/dist/useModuleDropdownList.js.map +1 -1
- package/index.jsx +30 -27
- package/package.json +4 -3
- package/useModuleDropdownList.js +2 -2
- /package/dist/{preview-1747511878690.js → preview-1748435330040.js} +0 -0
package/dist/index.d.ts
CHANGED
package/dist/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import React, { useEffect, useRef } from 'react';
|
|
2
|
+
import React, { useEffect, useRef, useCallback } from 'react';
|
|
3
3
|
import { Input, Select, Button } from 'antd';
|
|
4
4
|
import { SearchOutlined } from '@ant-design/icons';
|
|
5
5
|
import { AgGridReact } from 'ag-grid-react';
|
|
@@ -11,9 +11,6 @@ import { recentItemsAtomFamily } from './store/recentItemsStore';
|
|
|
11
11
|
import { useModuleDropdownList } from './useModuleDropdownList';
|
|
12
12
|
import './ModuleInput.css';
|
|
13
13
|
const { Option } = Select;
|
|
14
|
-
/**
|
|
15
|
-
* ModuleDropdownList komponenta pro výběr položek z různých modulů
|
|
16
|
-
*/
|
|
17
14
|
const ModuleDropdownList = (props) => {
|
|
18
15
|
const { value, onChange, placeholder = 'Vyberte...', disabled = false, readOnly = false, style = {}, width, maxRecentItems = 5, moduleDefinition, } = props;
|
|
19
16
|
// Interní stavy pro Select
|
|
@@ -28,8 +25,8 @@ const ModuleDropdownList = (props) => {
|
|
|
28
25
|
}
|
|
29
26
|
// Použití Jotai atom pro poslední vybrané položky daného typu modulu
|
|
30
27
|
const [recentItems, setRecentItems] = useAtom(recentItemsAtomFamily(moduleDefinition?.moduleName || ''));
|
|
31
|
-
// Přidání položky do seznamu nedávných položek
|
|
32
|
-
const addToRecentItems = (item) => {
|
|
28
|
+
// Přidání položky do seznamu nedávných položek - obaleno v useCallback
|
|
29
|
+
const addToRecentItems = useCallback((item) => {
|
|
33
30
|
if (!item || !moduleDefinition)
|
|
34
31
|
return;
|
|
35
32
|
// Vytvoření nového seznamu bez aktuální položky (pokud existuje)
|
|
@@ -38,7 +35,7 @@ const ModuleDropdownList = (props) => {
|
|
|
38
35
|
// Přidání nové položky na začátek a omezení počtu položek
|
|
39
36
|
const updatedItems = [item, ...filteredItems].slice(0, maxRecentItems);
|
|
40
37
|
setRecentItems(updatedItems);
|
|
41
|
-
};
|
|
38
|
+
}, [recentItems, moduleDefinition, maxRecentItems, setRecentItems]);
|
|
42
39
|
// Použití custom hooku pro veškerou logiku ModuleInput
|
|
43
40
|
const { modalOpen, searchQuery, rowData, isLoading, selectedItem, isDetailLoading, moduleDetailQuery, openModal, closeModal, handleSearchChange, handleItemSelect, clearSelection, getDisplayValue, } = useModuleDropdownList({ moduleDefinition, value });
|
|
44
41
|
const selectItem = (item) => {
|
|
@@ -91,6 +88,16 @@ const ModuleDropdownList = (props) => {
|
|
|
91
88
|
};
|
|
92
89
|
// Získání aktuální zobrazované hodnoty pro Select
|
|
93
90
|
const displayValueText = getDisplayValue();
|
|
91
|
+
// Funkce pro vykreslení obsahu Option při detailním načítání
|
|
92
|
+
const renderDetailOption = () => {
|
|
93
|
+
if (isDetailLoading) {
|
|
94
|
+
return 'Načítání...';
|
|
95
|
+
}
|
|
96
|
+
if (moduleDetailQuery?.data) {
|
|
97
|
+
return (_jsxs("div", { className: "option-item", children: [_jsx("div", { className: "option-avatar", children: displayValueText.charAt(0) }), _jsxs("div", { className: "option-content", children: [_jsx("div", { className: "option-name", children: displayValueText }), _jsx("div", { className: "option-email", children: moduleDetailQuery.data.email || '-' })] })] }));
|
|
98
|
+
}
|
|
99
|
+
return `${value} (nenačteno)`;
|
|
100
|
+
};
|
|
94
101
|
return (_jsxs("div", { className: "module-input-container", style: processedStyle, ref: containerRef, children: [_jsxs("div", { className: "simple-select-container", children: [_jsxs(Select, { value: value, onChange: handleSelectChange, className: "simple-select", placeholder: placeholder, disabled: disabled || readOnly, dropdownMatchSelectWidth: true, getPopupContainer: () => containerRef.current,
|
|
95
102
|
// Vlastní tučná šipka s rotací
|
|
96
103
|
suffixIcon: _jsx("svg", { className: "select-arrow-icon", width: "12", height: "12", viewBox: "0 0 12 12", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: _jsx("path", { d: "M2 4L6 8L10 4", stroke: "#bfbfbf", strokeWidth: "2.5", strokeLinecap: "round", strokeLinejoin: "round" }) }),
|
|
@@ -98,10 +105,7 @@ const ModuleDropdownList = (props) => {
|
|
|
98
105
|
optionLabelProp: "label", style: { fontSize: '13px' }, listItemHeight: 32, listHeight: 256, dropdownRender: (menu) => (_jsxs("div", { className: "select-dropdown-container", children: [_jsx("div", { className: "search-box", children: _jsx(Input, { placeholder: "Search", prefix: _jsx(SearchOutlined, {}), className: "dropdown-search-input" }) }), menu, _jsxs("div", { className: "new-customer-item", children: [_jsx("div", { className: "plus-icon", children: "+" }), _jsx("span", { children: "New Customer" })] })] })), children: [recentItemsOptions.map((option) => (_jsx(Option, { value: option.id,
|
|
99
106
|
// Zde přidáváme label pro zobrazení jen názvu při vybrání položky
|
|
100
107
|
label: option.name, children: _jsxs("div", { className: "option-item", children: [_jsx("div", { className: "option-avatar", children: option.name.charAt(0) }), _jsxs("div", { className: "option-content", children: [_jsx("div", { className: "option-name", children: option.name }), _jsx("div", { className: "option-email", children: option.fullItem.email || '-' })] })] }) }, option.id))), value &&
|
|
101
|
-
!recentItemsOptions.some((option) => option.id === value) && (_jsx(Option, { value: value, label: displayValueText, children:
|
|
102
|
-
? 'Načítání...'
|
|
103
|
-
: moduleDetailQuery?.data
|
|
104
|
-
? (_jsxs("div", { className: "option-item", children: [_jsx("div", { className: "option-avatar", children: displayValueText.charAt(0) }), _jsxs("div", { className: "option-content", children: [_jsx("div", { className: "option-name", children: displayValueText }), _jsx("div", { className: "option-email", children: moduleDetailQuery.data.email || '-' })] })] })) : (`${value} (nenačteno)`) }, value))] }), _jsx(Button, { icon: _jsx(SearchOutlined, {}), className: "search-button", onClick: openModal, type: "primary" })] }), _jsx("div", { id: "modal-root" }), _jsxs(DraggableModal, { width: moduleDefinition.modalWidth || 800, open: modalOpen, getContainer: () => document.getElementById('modal-root'), onCancel: closeModal, maskClosable: false, title: moduleDefinition.modalTitle ||
|
|
108
|
+
!recentItemsOptions.some((option) => option.id === value) && (_jsx(Option, { value: value, label: displayValueText, children: renderDetailOption() }, value))] }), _jsx(Button, { icon: _jsx(SearchOutlined, {}), className: "search-button", onClick: openModal, type: "primary" })] }), _jsx("div", { id: "modal-root" }), _jsxs(DraggableModal, { width: moduleDefinition.modalWidth || 800, open: modalOpen, getContainer: () => document.getElementById('modal-root'), onCancel: closeModal, maskClosable: false, title: moduleDefinition.modalTitle ||
|
|
105
109
|
`Vybrat z modulu: ${moduleDefinition.moduleName}`, footer: () => {
|
|
106
110
|
return [
|
|
107
111
|
_jsx(Button, { onClick: closeModal, style: { marginRight: '10px', width: 'auto' }, children: "Zav\u0159\u00EDt" }, "cancel"),
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.jsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.jsx"],"names":[],"mappings":"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"}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import { useState, useEffect, useCallback } from 'react';
|
|
3
3
|
import { useQuery } from '@tanstack/react-query';
|
|
4
4
|
import { message } from 'antd';
|
|
5
|
-
import
|
|
5
|
+
import useSecureData from '@bit.rhplus/data'; // Upravte cestu podle skutečného umístění
|
|
6
6
|
export const useModuleDropdownList = ({ moduleDefinition, value }) => {
|
|
7
7
|
// Základní stav
|
|
8
8
|
const [modalOpen, setModalOpen] = useState(false);
|
|
@@ -10,7 +10,7 @@ export const useModuleDropdownList = ({ moduleDefinition, value }) => {
|
|
|
10
10
|
const [selectedItem, setSelectedItem] = useState(null);
|
|
11
11
|
// const [moduleDefinition, setModuleDefinition] = useState(null);
|
|
12
12
|
// Získání fetchDataUIAsync z vašeho custom hooku
|
|
13
|
-
const { fetchDataUIAsync } =
|
|
13
|
+
const { fetchDataUIAsync } = useSecureData();
|
|
14
14
|
// Vytvoření stabilních verzí funkcí pro načítání dat pomocí useCallback
|
|
15
15
|
const fetchData = useCallback(async (query) => {
|
|
16
16
|
if (moduleDefinition?.fetchData) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useModuleDropdownList.js","sourceRoot":"","sources":["../useModuleDropdownList.js"],"names":[],"mappings":"AAAA,iCAAiC;AACjC,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AACzD,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAC/B,OAAO,
|
|
1
|
+
{"version":3,"file":"useModuleDropdownList.js","sourceRoot":"","sources":["../useModuleDropdownList.js"],"names":[],"mappings":"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"}
|
package/index.jsx
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import React, { useEffect, useRef } from 'react';
|
|
1
|
+
import React, { useEffect, useRef, useCallback } from 'react';
|
|
2
2
|
import { Input, Select, Button } from 'antd';
|
|
3
3
|
import { SearchOutlined } from '@ant-design/icons';
|
|
4
4
|
import { AgGridReact } from 'ag-grid-react';
|
|
@@ -11,10 +11,6 @@ import { useModuleDropdownList } from './useModuleDropdownList';
|
|
|
11
11
|
import './ModuleInput.css';
|
|
12
12
|
|
|
13
13
|
const { Option } = Select;
|
|
14
|
-
|
|
15
|
-
/**
|
|
16
|
-
* ModuleDropdownList komponenta pro výběr položek z různých modulů
|
|
17
|
-
*/
|
|
18
14
|
const ModuleDropdownList = (props) => {
|
|
19
15
|
const {
|
|
20
16
|
value,
|
|
@@ -46,8 +42,8 @@ const ModuleDropdownList = (props) => {
|
|
|
46
42
|
recentItemsAtomFamily(moduleDefinition?.moduleName || '')
|
|
47
43
|
);
|
|
48
44
|
|
|
49
|
-
// Přidání položky do seznamu nedávných položek
|
|
50
|
-
const addToRecentItems = (item) => {
|
|
45
|
+
// Přidání položky do seznamu nedávných položek - obaleno v useCallback
|
|
46
|
+
const addToRecentItems = useCallback((item) => {
|
|
51
47
|
if (!item || !moduleDefinition) return;
|
|
52
48
|
|
|
53
49
|
// Vytvoření nového seznamu bez aktuální položky (pokud existuje)
|
|
@@ -60,7 +56,7 @@ const ModuleDropdownList = (props) => {
|
|
|
60
56
|
// Přidání nové položky na začátek a omezení počtu položek
|
|
61
57
|
const updatedItems = [item, ...filteredItems].slice(0, maxRecentItems);
|
|
62
58
|
setRecentItems(updatedItems);
|
|
63
|
-
};
|
|
59
|
+
}, [recentItems, moduleDefinition, maxRecentItems, setRecentItems]);
|
|
64
60
|
|
|
65
61
|
// Použití custom hooku pro veškerou logiku ModuleInput
|
|
66
62
|
const {
|
|
@@ -140,6 +136,31 @@ const ModuleDropdownList = (props) => {
|
|
|
140
136
|
// Získání aktuální zobrazované hodnoty pro Select
|
|
141
137
|
const displayValueText = getDisplayValue();
|
|
142
138
|
|
|
139
|
+
// Funkce pro vykreslení obsahu Option při detailním načítání
|
|
140
|
+
const renderDetailOption = () => {
|
|
141
|
+
if (isDetailLoading) {
|
|
142
|
+
return 'Načítání...';
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
if (moduleDetailQuery?.data) {
|
|
146
|
+
return (
|
|
147
|
+
<div className="option-item">
|
|
148
|
+
<div className="option-avatar">
|
|
149
|
+
{displayValueText.charAt(0)}
|
|
150
|
+
</div>
|
|
151
|
+
<div className="option-content">
|
|
152
|
+
<div className="option-name">{displayValueText}</div>
|
|
153
|
+
<div className="option-email">
|
|
154
|
+
{moduleDetailQuery.data.email || '-'}
|
|
155
|
+
</div>
|
|
156
|
+
</div>
|
|
157
|
+
</div>
|
|
158
|
+
);
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
return `${value} (nenačteno)`;
|
|
162
|
+
};
|
|
163
|
+
|
|
143
164
|
return (
|
|
144
165
|
<div
|
|
145
166
|
className="module-input-container"
|
|
@@ -220,24 +241,7 @@ const ModuleDropdownList = (props) => {
|
|
|
220
241
|
{value &&
|
|
221
242
|
!recentItemsOptions.some((option) => option.id === value) && (
|
|
222
243
|
<Option key={value} value={value} label={displayValueText}>
|
|
223
|
-
{
|
|
224
|
-
? 'Načítání...'
|
|
225
|
-
: moduleDetailQuery?.data
|
|
226
|
-
? (
|
|
227
|
-
<div className="option-item">
|
|
228
|
-
<div className="option-avatar">
|
|
229
|
-
{displayValueText.charAt(0)}
|
|
230
|
-
</div>
|
|
231
|
-
<div className="option-content">
|
|
232
|
-
<div className="option-name">{displayValueText}</div>
|
|
233
|
-
<div className="option-email">
|
|
234
|
-
{moduleDetailQuery.data.email || '-'}
|
|
235
|
-
</div>
|
|
236
|
-
</div>
|
|
237
|
-
</div>
|
|
238
|
-
) : (
|
|
239
|
-
`${value} (nenačteno)`
|
|
240
|
-
)}
|
|
244
|
+
{renderDetailOption()}
|
|
241
245
|
</Option>
|
|
242
246
|
)}
|
|
243
247
|
</Select>
|
|
@@ -309,5 +313,4 @@ const ModuleDropdownList = (props) => {
|
|
|
309
313
|
);
|
|
310
314
|
};
|
|
311
315
|
|
|
312
|
-
|
|
313
316
|
export default ModuleDropdownList;
|
package/package.json
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bit.rhplus/ui2.module-dropdown-list",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.2",
|
|
4
|
+
"homepage": "https://bit.cloud/remote-scope/ui2/module-dropdown-list",
|
|
4
5
|
"main": "dist/index.js",
|
|
5
6
|
"componentId": {
|
|
7
|
+
"scope": "remote-scope",
|
|
6
8
|
"name": "ui2/module-dropdown-list",
|
|
7
|
-
"version": "0.1.
|
|
8
|
-
"scope": "remote-scope"
|
|
9
|
+
"version": "0.1.2"
|
|
9
10
|
},
|
|
10
11
|
"dependencies": {
|
|
11
12
|
"@ant-design/icons": "^5.4.0",
|
package/useModuleDropdownList.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import { useState, useEffect, useCallback } from 'react';
|
|
3
3
|
import { useQuery } from '@tanstack/react-query';
|
|
4
4
|
import { message } from 'antd';
|
|
5
|
-
import
|
|
5
|
+
import useSecureData from '@bit.rhplus/data'; // Upravte cestu podle skutečného umístění
|
|
6
6
|
|
|
7
7
|
export const useModuleDropdownList = ({ moduleDefinition, value }) => {
|
|
8
8
|
// Základní stav
|
|
@@ -11,7 +11,7 @@ export const useModuleDropdownList = ({ moduleDefinition, value }) => {
|
|
|
11
11
|
const [selectedItem, setSelectedItem] = useState(null);
|
|
12
12
|
// const [moduleDefinition, setModuleDefinition] = useState(null);
|
|
13
13
|
// Získání fetchDataUIAsync z vašeho custom hooku
|
|
14
|
-
const { fetchDataUIAsync } =
|
|
14
|
+
const { fetchDataUIAsync } = useSecureData();
|
|
15
15
|
|
|
16
16
|
// Vytvoření stabilních verzí funkcí pro načítání dat pomocí useCallback
|
|
17
17
|
const fetchData = useCallback(async (query) => {
|
|
File without changes
|