@bit.rhplus/ui2.module-dropdown-list 0.0.1 → 0.1.1
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.js +15 -8
- package/dist/index.js.map +1 -1
- package/dist/useModuleDropdownList.js +2 -2
- package/dist/useModuleDropdownList.js.map +1 -1
- package/index.jsx +30 -22
- package/package.json +5 -4
- package/useModuleDropdownList.js +2 -2
- /package/dist/{preview-1747484073029.js → preview-1748431761753.js} +0 -0
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';
|
|
@@ -28,8 +28,8 @@ const ModuleDropdownList = (props) => {
|
|
|
28
28
|
}
|
|
29
29
|
// Použití Jotai atom pro poslední vybrané položky daného typu modulu
|
|
30
30
|
const [recentItems, setRecentItems] = useAtom(recentItemsAtomFamily(moduleDefinition?.moduleName || ''));
|
|
31
|
-
// Přidání položky do seznamu nedávných položek
|
|
32
|
-
const addToRecentItems = (item) => {
|
|
31
|
+
// Přidání položky do seznamu nedávných položek - obaleno v useCallback
|
|
32
|
+
const addToRecentItems = useCallback((item) => {
|
|
33
33
|
if (!item || !moduleDefinition)
|
|
34
34
|
return;
|
|
35
35
|
// Vytvoření nového seznamu bez aktuální položky (pokud existuje)
|
|
@@ -38,7 +38,7 @@ const ModuleDropdownList = (props) => {
|
|
|
38
38
|
// Přidání nové položky na začátek a omezení počtu položek
|
|
39
39
|
const updatedItems = [item, ...filteredItems].slice(0, maxRecentItems);
|
|
40
40
|
setRecentItems(updatedItems);
|
|
41
|
-
};
|
|
41
|
+
}, [recentItems, moduleDefinition, maxRecentItems, setRecentItems]);
|
|
42
42
|
// Použití custom hooku pro veškerou logiku ModuleInput
|
|
43
43
|
const { modalOpen, searchQuery, rowData, isLoading, selectedItem, isDetailLoading, moduleDetailQuery, openModal, closeModal, handleSearchChange, handleItemSelect, clearSelection, getDisplayValue, } = useModuleDropdownList({ moduleDefinition, value });
|
|
44
44
|
const selectItem = (item) => {
|
|
@@ -91,6 +91,16 @@ const ModuleDropdownList = (props) => {
|
|
|
91
91
|
};
|
|
92
92
|
// Získání aktuální zobrazované hodnoty pro Select
|
|
93
93
|
const displayValueText = getDisplayValue();
|
|
94
|
+
// Funkce pro vykreslení obsahu Option při detailním načítání
|
|
95
|
+
const renderDetailOption = () => {
|
|
96
|
+
if (isDetailLoading) {
|
|
97
|
+
return 'Načítání...';
|
|
98
|
+
}
|
|
99
|
+
if (moduleDetailQuery?.data) {
|
|
100
|
+
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 || '-' })] })] }));
|
|
101
|
+
}
|
|
102
|
+
return `${value} (nenačteno)`;
|
|
103
|
+
};
|
|
94
104
|
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
105
|
// Vlastní tučná šipka s rotací
|
|
96
106
|
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 +108,7 @@ const ModuleDropdownList = (props) => {
|
|
|
98
108
|
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
109
|
// Zde přidáváme label pro zobrazení jen názvu při vybrání položky
|
|
100
110
|
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 ||
|
|
111
|
+
!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
112
|
`Vybrat z modulu: ${moduleDefinition.moduleName}`, footer: () => {
|
|
106
113
|
return [
|
|
107
114
|
_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';
|
|
@@ -46,8 +46,8 @@ const ModuleDropdownList = (props) => {
|
|
|
46
46
|
recentItemsAtomFamily(moduleDefinition?.moduleName || '')
|
|
47
47
|
);
|
|
48
48
|
|
|
49
|
-
// Přidání položky do seznamu nedávných položek
|
|
50
|
-
const addToRecentItems = (item) => {
|
|
49
|
+
// Přidání položky do seznamu nedávných položek - obaleno v useCallback
|
|
50
|
+
const addToRecentItems = useCallback((item) => {
|
|
51
51
|
if (!item || !moduleDefinition) return;
|
|
52
52
|
|
|
53
53
|
// Vytvoření nového seznamu bez aktuální položky (pokud existuje)
|
|
@@ -60,7 +60,7 @@ const ModuleDropdownList = (props) => {
|
|
|
60
60
|
// Přidání nové položky na začátek a omezení počtu položek
|
|
61
61
|
const updatedItems = [item, ...filteredItems].slice(0, maxRecentItems);
|
|
62
62
|
setRecentItems(updatedItems);
|
|
63
|
-
};
|
|
63
|
+
}, [recentItems, moduleDefinition, maxRecentItems, setRecentItems]);
|
|
64
64
|
|
|
65
65
|
// Použití custom hooku pro veškerou logiku ModuleInput
|
|
66
66
|
const {
|
|
@@ -140,6 +140,31 @@ const ModuleDropdownList = (props) => {
|
|
|
140
140
|
// Získání aktuální zobrazované hodnoty pro Select
|
|
141
141
|
const displayValueText = getDisplayValue();
|
|
142
142
|
|
|
143
|
+
// Funkce pro vykreslení obsahu Option při detailním načítání
|
|
144
|
+
const renderDetailOption = () => {
|
|
145
|
+
if (isDetailLoading) {
|
|
146
|
+
return 'Načítání...';
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
if (moduleDetailQuery?.data) {
|
|
150
|
+
return (
|
|
151
|
+
<div className="option-item">
|
|
152
|
+
<div className="option-avatar">
|
|
153
|
+
{displayValueText.charAt(0)}
|
|
154
|
+
</div>
|
|
155
|
+
<div className="option-content">
|
|
156
|
+
<div className="option-name">{displayValueText}</div>
|
|
157
|
+
<div className="option-email">
|
|
158
|
+
{moduleDetailQuery.data.email || '-'}
|
|
159
|
+
</div>
|
|
160
|
+
</div>
|
|
161
|
+
</div>
|
|
162
|
+
);
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
return `${value} (nenačteno)`;
|
|
166
|
+
};
|
|
167
|
+
|
|
143
168
|
return (
|
|
144
169
|
<div
|
|
145
170
|
className="module-input-container"
|
|
@@ -220,24 +245,7 @@ const ModuleDropdownList = (props) => {
|
|
|
220
245
|
{value &&
|
|
221
246
|
!recentItemsOptions.some((option) => option.id === value) && (
|
|
222
247
|
<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
|
-
)}
|
|
248
|
+
{renderDetailOption()}
|
|
241
249
|
</Option>
|
|
242
250
|
)}
|
|
243
251
|
</Select>
|
package/package.json
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bit.rhplus/ui2.module-dropdown-list",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.1.1",
|
|
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.
|
|
8
|
-
"scope": "remote-scope"
|
|
9
|
+
"version": "0.1.1"
|
|
9
10
|
},
|
|
10
11
|
"dependencies": {
|
|
11
12
|
"@ant-design/icons": "^5.4.0",
|
|
@@ -15,7 +16,7 @@
|
|
|
15
16
|
"jotai": "^2.11.1",
|
|
16
17
|
"@tanstack/react-query": "^5.66.9",
|
|
17
18
|
"@bit.rhplus/draggable-modal": "0.0.4",
|
|
18
|
-
"@bit.rhplus/data": "0.0.
|
|
19
|
+
"@bit.rhplus/data": "0.0.10"
|
|
19
20
|
},
|
|
20
21
|
"devDependencies": {
|
|
21
22
|
"@teambit/react.react-env": "1.0.129"
|
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
|