@bit.rhplus/ui.f7.detail-item 0.0.2 → 0.0.3
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/components/Category.jsx +167 -0
- package/components/Contact.jsx +105 -0
- package/components/Custom.jsx +209 -4
- package/components/Download.jsx +32 -7
- package/components/Grid.jsx +230 -0
- package/components/InputNumber.jsx +17 -2
- package/components/InputText.jsx +17 -2
- package/components/List.jsx +305 -0
- package/components/Select.jsx +199 -0
- package/components/Switch.jsx +12 -1
- package/components/Text.jsx +36 -3
- package/components/index.jsx +6 -1
- package/dist/components/Category.d.ts +13 -0
- package/dist/components/Category.js +86 -0
- package/dist/components/Category.js.map +1 -0
- package/dist/components/Contact.d.ts +10 -0
- package/dist/components/Contact.js +60 -0
- package/dist/components/Contact.js.map +1 -0
- package/dist/components/Custom.d.ts +19 -2
- package/dist/components/Custom.js +114 -5
- package/dist/components/Custom.js.map +1 -1
- package/dist/components/Download.d.ts +5 -1
- package/dist/components/Download.js +19 -3
- package/dist/components/Download.js.map +1 -1
- package/dist/components/Grid.d.ts +19 -0
- package/dist/components/Grid.js +144 -0
- package/dist/components/Grid.js.map +1 -0
- package/dist/components/InputNumber.d.ts +3 -1
- package/dist/components/InputNumber.js +16 -2
- package/dist/components/InputNumber.js.map +1 -1
- package/dist/components/InputText.d.ts +3 -1
- package/dist/components/InputText.js +16 -2
- package/dist/components/InputText.js.map +1 -1
- package/dist/components/List.d.ts +20 -0
- package/dist/components/List.js +173 -0
- package/dist/components/List.js.map +1 -0
- package/dist/components/Select.d.ts +13 -0
- package/dist/components/Select.js +89 -0
- package/dist/components/Select.js.map +1 -0
- package/dist/components/Switch.d.ts +3 -1
- package/dist/components/Switch.js +11 -2
- package/dist/components/Switch.js.map +1 -1
- package/dist/components/Text.d.ts +8 -1
- package/dist/components/Text.js +25 -3
- package/dist/components/Text.js.map +1 -1
- package/dist/components/index.d.ts +5 -0
- package/dist/components/index.js +5 -0
- package/dist/components/index.js.map +1 -1
- package/dist/index.d.ts +3 -2
- package/dist/index.js +18 -11
- package/dist/index.js.map +1 -1
- package/index.jsx +109 -62
- package/package.json +6 -3
- /package/dist/{preview-1756999926762.js → preview-1757077532569.js} +0 -0
|
@@ -0,0 +1,199 @@
|
|
|
1
|
+
/* eslint-disable */
|
|
2
|
+
import React, { useState, useEffect } from 'react';
|
|
3
|
+
import {
|
|
4
|
+
Link,
|
|
5
|
+
Icon,
|
|
6
|
+
Popup,
|
|
7
|
+
Navbar,
|
|
8
|
+
NavLeft,
|
|
9
|
+
NavTitle,
|
|
10
|
+
NavTitleLarge,
|
|
11
|
+
NavRight,
|
|
12
|
+
Page,
|
|
13
|
+
Block,
|
|
14
|
+
List,
|
|
15
|
+
ListInput,
|
|
16
|
+
Button,
|
|
17
|
+
ListItem
|
|
18
|
+
} from 'framework7-react';
|
|
19
|
+
import { ChevronDown } from 'lucide-react';
|
|
20
|
+
|
|
21
|
+
// Select komponenta s modální editací - zobrazuje výběr jedné položky ze seznamu
|
|
22
|
+
export const Select = ({
|
|
23
|
+
children,
|
|
24
|
+
value,
|
|
25
|
+
onSave,
|
|
26
|
+
onChange, // Přidáno pro Form.Item kompatibilitu
|
|
27
|
+
title = 'Editace výběru',
|
|
28
|
+
placeholder = 'Vyberte položku',
|
|
29
|
+
color = '#6887d3',
|
|
30
|
+
size = 16,
|
|
31
|
+
lucideIcon, // Lucide React ikona (např. ChevronDown)
|
|
32
|
+
icon, // Jakákoliv React komponenta ikony
|
|
33
|
+
options = [] // Array možností ve formátu [{ id, name, description?, color? }]
|
|
34
|
+
}) => {
|
|
35
|
+
const [popupOpened, setPopupOpened] = useState(false);
|
|
36
|
+
const [selectedOption, setSelectedOption] = useState(value || null);
|
|
37
|
+
|
|
38
|
+
// Aktualizuj selectedOption když se změní value prop (pro Form.Item kompatibilitu)
|
|
39
|
+
useEffect(() => {
|
|
40
|
+
if (value !== undefined) {
|
|
41
|
+
setSelectedOption(value || null);
|
|
42
|
+
}
|
|
43
|
+
}, [value]);
|
|
44
|
+
|
|
45
|
+
const linkStyle = {
|
|
46
|
+
color,
|
|
47
|
+
cursor: 'pointer',
|
|
48
|
+
display: 'flex',
|
|
49
|
+
alignItems: 'center',
|
|
50
|
+
gap: '6px'
|
|
51
|
+
};
|
|
52
|
+
|
|
53
|
+
const handleCancel = () => {
|
|
54
|
+
setSelectedOption(value || null);
|
|
55
|
+
setPopupOpened(false);
|
|
56
|
+
};
|
|
57
|
+
|
|
58
|
+
const selectOption = (option) => {
|
|
59
|
+
// Automaticky ulož a zavři popup
|
|
60
|
+
setSelectedOption(option);
|
|
61
|
+
|
|
62
|
+
// Preferuj onChange pro Form.Item kompatibilitu, jinak použij onSave
|
|
63
|
+
if (onChange) {
|
|
64
|
+
onChange(option);
|
|
65
|
+
} else if (onSave) {
|
|
66
|
+
onSave(option);
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
setPopupOpened(false);
|
|
70
|
+
};
|
|
71
|
+
|
|
72
|
+
// Určí jakou ikonu použít - priorita: icon > lucideIcon > výchozí ChevronDown
|
|
73
|
+
const renderIcon = () => {
|
|
74
|
+
if (icon) {
|
|
75
|
+
return React.cloneElement(icon, { size, color, ...icon.props });
|
|
76
|
+
}
|
|
77
|
+
if (lucideIcon) {
|
|
78
|
+
const LucideIcon = lucideIcon;
|
|
79
|
+
return <LucideIcon size={size} color={color} />;
|
|
80
|
+
}
|
|
81
|
+
return <ChevronDown size={size} color={color} />;
|
|
82
|
+
};
|
|
83
|
+
|
|
84
|
+
// Zobrazí název vybrané položky nebo placeholder
|
|
85
|
+
const renderDisplayText = () => {
|
|
86
|
+
if (selectedOption && selectedOption.name) {
|
|
87
|
+
return selectedOption.name;
|
|
88
|
+
}
|
|
89
|
+
return placeholder;
|
|
90
|
+
};
|
|
91
|
+
|
|
92
|
+
return (
|
|
93
|
+
<>
|
|
94
|
+
<Link onClick={() => setPopupOpened(true)} className="link" style={linkStyle}>
|
|
95
|
+
{renderIcon()}
|
|
96
|
+
{renderDisplayText()}
|
|
97
|
+
</Link>
|
|
98
|
+
|
|
99
|
+
<Popup
|
|
100
|
+
opened={popupOpened}
|
|
101
|
+
onPopupClosed={() => setPopupOpened(false)}
|
|
102
|
+
animate
|
|
103
|
+
backdrop
|
|
104
|
+
push={false}
|
|
105
|
+
className="f7-parallax select-popup"
|
|
106
|
+
style={{
|
|
107
|
+
'--f7-popup-tablet-width': '90vw',
|
|
108
|
+
'--f7-popup-tablet-height': '90vh'
|
|
109
|
+
}}
|
|
110
|
+
>
|
|
111
|
+
<div className="view view-init">
|
|
112
|
+
<div className="page page-with-navbar-large">
|
|
113
|
+
<Navbar large className="navbar-transparent">
|
|
114
|
+
<NavLeft>
|
|
115
|
+
<Link onClick={handleCancel}>
|
|
116
|
+
<Icon f7="arrow_left" style={{ fontWeight: 'bold' }} />
|
|
117
|
+
</Link>
|
|
118
|
+
</NavLeft>
|
|
119
|
+
<NavTitle>Výběr</NavTitle>
|
|
120
|
+
<NavTitleLarge>Vyberte položku</NavTitleLarge>
|
|
121
|
+
</Navbar>
|
|
122
|
+
|
|
123
|
+
<div className="page-content">
|
|
124
|
+
{/* Seznam dostupných možností */}
|
|
125
|
+
<Block>
|
|
126
|
+
<List noHairlines>
|
|
127
|
+
{options.map((option) => {
|
|
128
|
+
const isSelected = selectedOption && selectedOption.id === option.id;
|
|
129
|
+
return (
|
|
130
|
+
<ListItem
|
|
131
|
+
key={option.id}
|
|
132
|
+
title={option.name}
|
|
133
|
+
subtitle={option.description}
|
|
134
|
+
onClick={() => selectOption(option)}
|
|
135
|
+
style={{
|
|
136
|
+
backgroundColor: isSelected ? '#f0f9ff' : 'transparent',
|
|
137
|
+
borderLeft: isSelected ? `4px solid ${option.color || '#6887d3'}` : '4px solid transparent',
|
|
138
|
+
transition: 'all 0.2s ease'
|
|
139
|
+
}}
|
|
140
|
+
>
|
|
141
|
+
{isSelected && (
|
|
142
|
+
<Icon
|
|
143
|
+
slot="after"
|
|
144
|
+
f7="checkmark"
|
|
145
|
+
style={{
|
|
146
|
+
color: option.color || '#6887d3',
|
|
147
|
+
fontSize: '18px',
|
|
148
|
+
fontWeight: 'bold'
|
|
149
|
+
}}
|
|
150
|
+
/>
|
|
151
|
+
)}
|
|
152
|
+
{option.color && (
|
|
153
|
+
<div
|
|
154
|
+
slot="media"
|
|
155
|
+
style={{
|
|
156
|
+
width: '12px',
|
|
157
|
+
height: '12px',
|
|
158
|
+
borderRadius: '50%',
|
|
159
|
+
backgroundColor: option.color,
|
|
160
|
+
marginRight: '8px'
|
|
161
|
+
}}
|
|
162
|
+
/>
|
|
163
|
+
)}
|
|
164
|
+
</ListItem>
|
|
165
|
+
);
|
|
166
|
+
})}
|
|
167
|
+
|
|
168
|
+
{/* Možnost zrušit výběr */}
|
|
169
|
+
{selectedOption && (
|
|
170
|
+
<>
|
|
171
|
+
<ListItem divider>Další možnosti</ListItem>
|
|
172
|
+
<ListItem
|
|
173
|
+
title="Zrušit výběr"
|
|
174
|
+
onClick={() => selectOption(null)}
|
|
175
|
+
style={{
|
|
176
|
+
color: '#999',
|
|
177
|
+
fontStyle: 'italic'
|
|
178
|
+
}}
|
|
179
|
+
>
|
|
180
|
+
<Icon
|
|
181
|
+
slot="media"
|
|
182
|
+
f7="xmark"
|
|
183
|
+
style={{
|
|
184
|
+
color: '#999',
|
|
185
|
+
fontSize: '16px'
|
|
186
|
+
}}
|
|
187
|
+
/>
|
|
188
|
+
</ListItem>
|
|
189
|
+
</>
|
|
190
|
+
)}
|
|
191
|
+
</List>
|
|
192
|
+
</Block>
|
|
193
|
+
</div>
|
|
194
|
+
</div>
|
|
195
|
+
</div>
|
|
196
|
+
</Popup>
|
|
197
|
+
</>
|
|
198
|
+
);
|
|
199
|
+
};
|
package/components/Switch.jsx
CHANGED
|
@@ -9,15 +9,26 @@ export const Switch = ({
|
|
|
9
9
|
disabled,
|
|
10
10
|
// Ant Design Form props
|
|
11
11
|
value,
|
|
12
|
+
// Ikona props - Switch nemá vizuální ikonu, ale zachováme konzistenci
|
|
13
|
+
lucideIcon,
|
|
14
|
+
icon,
|
|
12
15
|
...restProps
|
|
13
16
|
}) => {
|
|
14
17
|
// Pro Form.Item kompatibilitu - preferuj value před checked
|
|
15
18
|
const isChecked = value !== undefined ? value : checked;
|
|
16
19
|
|
|
20
|
+
// Framework7 Toggle předává event, ale Form.Item očekává boolean hodnotu
|
|
21
|
+
const handleChange = (event) => {
|
|
22
|
+
if (onChange) {
|
|
23
|
+
// Pro Form.Item předáme boolean hodnotu
|
|
24
|
+
onChange(event.target.checked);
|
|
25
|
+
}
|
|
26
|
+
};
|
|
27
|
+
|
|
17
28
|
return (
|
|
18
29
|
<Toggle
|
|
19
30
|
checked={isChecked}
|
|
20
|
-
onChange={
|
|
31
|
+
onChange={handleChange}
|
|
21
32
|
disabled={disabled}
|
|
22
33
|
{...restProps}
|
|
23
34
|
/>
|
package/components/Text.jsx
CHANGED
|
@@ -1,10 +1,43 @@
|
|
|
1
1
|
/* eslint-disable */
|
|
2
2
|
import React from 'react';
|
|
3
3
|
|
|
4
|
-
export const Text = ({
|
|
4
|
+
export const Text = ({
|
|
5
|
+
children,
|
|
6
|
+
value,
|
|
7
|
+
color,
|
|
8
|
+
style,
|
|
9
|
+
lucideIcon, // Lucide React ikona
|
|
10
|
+
icon, // Jakákoliv React komponenta ikony
|
|
11
|
+
iconSize = 16,
|
|
12
|
+
...restProps
|
|
13
|
+
}) => {
|
|
14
|
+
// Pro Form.Item kompatibilitu - zobraz value pokud je poskytnut, jinak children
|
|
15
|
+
const displayText = value !== undefined ? value : children;
|
|
16
|
+
|
|
17
|
+
const textStyle = {
|
|
18
|
+
...(color && { color }),
|
|
19
|
+
...style,
|
|
20
|
+
display: 'flex',
|
|
21
|
+
alignItems: 'center',
|
|
22
|
+
gap: '6px'
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
// Určí jakou ikonu použít - priorita: icon > lucideIcon > žádná ikona
|
|
26
|
+
const renderIcon = () => {
|
|
27
|
+
if (icon) {
|
|
28
|
+
return React.cloneElement(icon, { size: iconSize, color, ...icon.props });
|
|
29
|
+
}
|
|
30
|
+
if (lucideIcon) {
|
|
31
|
+
const LucideIcon = lucideIcon;
|
|
32
|
+
return <LucideIcon size={iconSize} color={color} />;
|
|
33
|
+
}
|
|
34
|
+
return null;
|
|
35
|
+
};
|
|
36
|
+
|
|
5
37
|
return (
|
|
6
|
-
<span>
|
|
7
|
-
{
|
|
38
|
+
<span style={textStyle} {...restProps}>
|
|
39
|
+
{renderIcon()}
|
|
40
|
+
{displayText}
|
|
8
41
|
</span>
|
|
9
42
|
);
|
|
10
43
|
};
|
package/components/index.jsx
CHANGED
|
@@ -4,4 +4,9 @@ export {Download} from './Download';
|
|
|
4
4
|
export {InputText} from './InputText';
|
|
5
5
|
export {InputNumber} from './InputNumber';
|
|
6
6
|
export {Switch} from './Switch';
|
|
7
|
-
export {Custom} from './Custom';
|
|
7
|
+
export {Custom} from './Custom';
|
|
8
|
+
export {Contact} from './Contact';
|
|
9
|
+
export {Category} from './Category';
|
|
10
|
+
export {Select} from './Select';
|
|
11
|
+
export {Grid} from './Grid';
|
|
12
|
+
export {List} from './List';
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export function Category({ children, value, onSave, onChange, title, placeholder, color, size, lucideIcon, icon, categories }: {
|
|
2
|
+
children: any;
|
|
3
|
+
value: any;
|
|
4
|
+
onSave: any;
|
|
5
|
+
onChange: any;
|
|
6
|
+
title?: string | undefined;
|
|
7
|
+
placeholder?: string | undefined;
|
|
8
|
+
color?: string | undefined;
|
|
9
|
+
size?: number | undefined;
|
|
10
|
+
lucideIcon: any;
|
|
11
|
+
icon: any;
|
|
12
|
+
categories?: any[] | undefined;
|
|
13
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
/* eslint-disable */
|
|
3
|
+
import React, { useState, useEffect } from 'react';
|
|
4
|
+
import { Link, Icon, Popup, Navbar, NavLeft, NavTitle, NavTitleLarge, NavRight, Page, Block, List, ListInput, Button } from 'framework7-react';
|
|
5
|
+
import { Tag } from 'lucide-react';
|
|
6
|
+
import CircleButton from '@bit.rhplus/ui.circle-button';
|
|
7
|
+
// Category komponenta s modální editací - zobrazuje výběr jedné kategorie jako avatar
|
|
8
|
+
export const Category = ({ children, value, onSave, onChange, // Přidáno pro Form.Item kompatibilitu
|
|
9
|
+
title = 'Vyber', placeholder = 'Vyber kategorii', color = '#6887d3', size = 16, lucideIcon, // Lucide React ikona (např. Tag)
|
|
10
|
+
icon, // Jakákoliv React komponenta ikony
|
|
11
|
+
categories = [] // Array kategorií ve formátu [{ id, name, icon, color }]
|
|
12
|
+
}) => {
|
|
13
|
+
const [popupOpened, setPopupOpened] = useState(false);
|
|
14
|
+
const [selectedCategory, setSelectedCategory] = useState(value || null);
|
|
15
|
+
// Aktualizuj selectedCategory když se změní value prop (pro Form.Item kompatibilitu)
|
|
16
|
+
useEffect(() => {
|
|
17
|
+
if (value !== undefined) {
|
|
18
|
+
setSelectedCategory(value || null);
|
|
19
|
+
}
|
|
20
|
+
}, [value]);
|
|
21
|
+
const linkStyle = {
|
|
22
|
+
color,
|
|
23
|
+
cursor: 'pointer',
|
|
24
|
+
display: 'flex',
|
|
25
|
+
alignItems: 'center',
|
|
26
|
+
gap: '6px'
|
|
27
|
+
};
|
|
28
|
+
const handleCancel = () => {
|
|
29
|
+
setSelectedCategory(value || null);
|
|
30
|
+
setPopupOpened(false);
|
|
31
|
+
};
|
|
32
|
+
const selectCategory = (category) => {
|
|
33
|
+
// Automaticky ulož a zavři popup
|
|
34
|
+
setSelectedCategory(category);
|
|
35
|
+
// Preferuj onChange pro Form.Item kompatibilitu, jinak použij onSave
|
|
36
|
+
if (onChange) {
|
|
37
|
+
onChange(category);
|
|
38
|
+
}
|
|
39
|
+
else if (onSave) {
|
|
40
|
+
onSave(category);
|
|
41
|
+
}
|
|
42
|
+
setPopupOpened(false);
|
|
43
|
+
};
|
|
44
|
+
// Určí jakou ikonu použít - priorita: icon > lucideIcon > výchozí Tag
|
|
45
|
+
const renderIcon = () => {
|
|
46
|
+
if (icon) {
|
|
47
|
+
return React.cloneElement(icon, { size, color, ...icon.props });
|
|
48
|
+
}
|
|
49
|
+
if (lucideIcon) {
|
|
50
|
+
const LucideIcon = lucideIcon;
|
|
51
|
+
return _jsx(LucideIcon, { size: size, color: color });
|
|
52
|
+
}
|
|
53
|
+
return _jsx(Tag, { size: size, color: color });
|
|
54
|
+
};
|
|
55
|
+
// Zobrazí název vybrané kategorie nebo placeholder
|
|
56
|
+
const renderDisplayText = () => {
|
|
57
|
+
if (selectedCategory && selectedCategory.name) {
|
|
58
|
+
return selectedCategory.name;
|
|
59
|
+
}
|
|
60
|
+
return placeholder;
|
|
61
|
+
};
|
|
62
|
+
return (_jsxs(_Fragment, { children: [_jsxs(Link, { onClick: () => setPopupOpened(true), className: "link", style: linkStyle, children: [renderIcon(), renderDisplayText()] }), _jsx(Popup, { opened: popupOpened, onPopupClosed: () => setPopupOpened(false), animate: true, backdrop: true, push: false, className: "f7-parallax category-popup", style: {
|
|
63
|
+
'--f7-popup-tablet-width': '90vw',
|
|
64
|
+
'--f7-popup-tablet-height': '90vh'
|
|
65
|
+
}, children: _jsx("div", { className: "view view-init", children: _jsxs("div", { className: "page page-with-navbar-large", children: [_jsxs(Navbar, { large: true, className: "navbar-transparent", children: [_jsx(NavLeft, { children: _jsx(Link, { onClick: handleCancel, children: _jsx(Icon, { f7: "arrow_left", style: { fontWeight: 'bold' } }) }) }), _jsx(NavTitle, { children: title }), _jsx(NavTitleLarge, { children: title })] }), _jsx("div", { className: "page-content", children: _jsx(Block, { children: _jsx("div", { style: {
|
|
66
|
+
display: 'grid',
|
|
67
|
+
gridTemplateColumns: 'repeat(auto-fit, minmax(80px, 1fr))',
|
|
68
|
+
gap: '15px',
|
|
69
|
+
marginTop: '15px',
|
|
70
|
+
padding: '10px 5px'
|
|
71
|
+
}, children: categories.map((category) => {
|
|
72
|
+
const isSelected = selectedCategory && selectedCategory.id === category.id;
|
|
73
|
+
return (_jsx("div", { style: {
|
|
74
|
+
display: 'flex',
|
|
75
|
+
justifyContent: 'center',
|
|
76
|
+
minWidth: '80px'
|
|
77
|
+
}, children: _jsx(CircleButton, { icon: category.icon || 'tag', name: category.name, bgColor: isSelected ? '#28a745' : (category.color || '#6887d3'), iconColor: "white", textColor: "#333", onClick: () => selectCategory(category), style: {
|
|
78
|
+
opacity: isSelected ? 1 : 0.7,
|
|
79
|
+
transform: isSelected ? 'scale(1.05)' : 'scale(1)',
|
|
80
|
+
transition: 'all 0.2s ease',
|
|
81
|
+
width: '100%',
|
|
82
|
+
maxWidth: '100px'
|
|
83
|
+
} }) }, category.id));
|
|
84
|
+
}) }) }) })] }) }) })] }));
|
|
85
|
+
};
|
|
86
|
+
//# sourceMappingURL=Category.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Category.js","sourceRoot":"","sources":["../../components/Category.jsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export function Contact({ value, onSave, onChange, title, placeholder, color, size, ...restProps }: {
|
|
2
|
+
[x: string]: any;
|
|
3
|
+
value: any;
|
|
4
|
+
onSave: any;
|
|
5
|
+
onChange: any;
|
|
6
|
+
title?: string | undefined;
|
|
7
|
+
placeholder?: string | undefined;
|
|
8
|
+
color?: string | undefined;
|
|
9
|
+
size?: number | undefined;
|
|
10
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { jsx as _jsx, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
/* eslint-disable */
|
|
3
|
+
import React from 'react';
|
|
4
|
+
import { ListInput } from 'framework7-react';
|
|
5
|
+
import { UserCheck } from 'lucide-react';
|
|
6
|
+
import { Custom } from './Custom';
|
|
7
|
+
// Renderer pro Contact formulář
|
|
8
|
+
const ContactRenderer = ({ fields, formData, onChange }) => {
|
|
9
|
+
const handleInputChange = (fieldKey, event) => {
|
|
10
|
+
const newValue = event.target.value;
|
|
11
|
+
onChange(fieldKey, newValue);
|
|
12
|
+
};
|
|
13
|
+
return (_jsx(_Fragment, { children: fields.map((field, index) => (_jsx(ListInput, { type: field.type || 'text', label: field.label, placeholder: field.placeholder, value: formData[field.key] || '', onInput: (e) => handleInputChange(field.key, e), clearButton: true, style: { fontSize: '18px' }, ...(field.type === 'email' && {
|
|
14
|
+
inputMode: 'email',
|
|
15
|
+
autoComplete: 'email'
|
|
16
|
+
}), ...(field.type === 'tel' && {
|
|
17
|
+
inputMode: 'tel',
|
|
18
|
+
autoComplete: 'tel'
|
|
19
|
+
}) }, field.key || index))) }));
|
|
20
|
+
};
|
|
21
|
+
// Externí PM komponenta s předdefinovanými poli
|
|
22
|
+
export const Contact = ({ value, onSave, onChange, title = 'Kontakt', placeholder = 'Zadej kontakt', color = '#6887d3', size = 16, ...restProps }) => {
|
|
23
|
+
// Předdefinovaná pole pro Externí PM
|
|
24
|
+
const pmFields = [
|
|
25
|
+
{
|
|
26
|
+
key: 'firstName',
|
|
27
|
+
label: 'Jméno',
|
|
28
|
+
type: 'text',
|
|
29
|
+
placeholder: 'Zadejte jméno'
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
key: 'lastName',
|
|
33
|
+
label: 'Příjmení',
|
|
34
|
+
type: 'text',
|
|
35
|
+
placeholder: 'Zadejte příjmení'
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
key: 'email',
|
|
39
|
+
label: 'Email',
|
|
40
|
+
type: 'email',
|
|
41
|
+
placeholder: 'Zadejte email'
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
key: 'phone',
|
|
45
|
+
label: 'Telefon',
|
|
46
|
+
type: 'tel',
|
|
47
|
+
placeholder: 'Zadejte telefon'
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
key: 'position',
|
|
51
|
+
label: 'Pozice',
|
|
52
|
+
type: 'text',
|
|
53
|
+
placeholder: 'Zadejte pozici'
|
|
54
|
+
}
|
|
55
|
+
];
|
|
56
|
+
// Pole pro zobrazení v linku - jméno, příjmení a pozice
|
|
57
|
+
const displayFields = ['firstName', 'lastName', 'position'];
|
|
58
|
+
return (_jsx(Custom, { value: value, onSave: onSave, onChange: onChange, title: title, placeholder: placeholder, color: color, size: size, lucideIcon: UserCheck, FormRenderer: ContactRenderer, fields: pmFields, displayFields: displayFields, ...restProps }));
|
|
59
|
+
};
|
|
60
|
+
//# sourceMappingURL=Contact.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Contact.js","sourceRoot":"","sources":["../../components/Contact.jsx"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,20 @@
|
|
|
1
|
-
export function Custom({
|
|
2
|
-
|
|
1
|
+
export function Custom({ value, onSave, onChange, title, placeholder, color, size, lucideIcon, icon, FormRenderer, fields, displayFields, ...restProps }: {
|
|
2
|
+
[x: string]: any;
|
|
3
|
+
value: any;
|
|
4
|
+
onSave: any;
|
|
5
|
+
onChange: any;
|
|
6
|
+
title?: string | undefined;
|
|
7
|
+
placeholder?: string | undefined;
|
|
8
|
+
color?: string | undefined;
|
|
9
|
+
size?: number | undefined;
|
|
10
|
+
lucideIcon: any;
|
|
11
|
+
icon: any;
|
|
12
|
+
FormRenderer: any;
|
|
13
|
+
fields?: {
|
|
14
|
+
key: string;
|
|
15
|
+
label: string;
|
|
16
|
+
type: string;
|
|
17
|
+
placeholder: string;
|
|
18
|
+
}[] | undefined;
|
|
19
|
+
displayFields?: string[] | undefined;
|
|
3
20
|
}): import("react/jsx-runtime").JSX.Element;
|
|
@@ -1,8 +1,117 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
/* eslint-disable */
|
|
3
|
-
import React from 'react';
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
3
|
+
import React, { useState, useEffect } from 'react';
|
|
4
|
+
import { Link, Icon, Popup, Navbar, NavLeft, NavTitle, NavTitleLarge, Page, Block, List, ListInput } from 'framework7-react';
|
|
5
|
+
import { User } from 'lucide-react';
|
|
6
|
+
import SaveButton from '@bit.rhplus/ui.f7.save-button';
|
|
7
|
+
// External Contact komponenta - formulář pro zadání externího kontaktu
|
|
8
|
+
export const Custom = ({ value, onSave, onChange, title = 'Externí kontakt', placeholder = 'Zadejte kontakt', color = '#6887d3', size = 16, lucideIcon, icon, FormRenderer, // Custom komponenta pro renderování formuláře
|
|
9
|
+
fields = [
|
|
10
|
+
{ key: 'firstName', label: 'Jméno', type: 'text', placeholder: 'Zadejte jméno' },
|
|
11
|
+
{ key: 'lastName', label: 'Příjmení', type: 'text', placeholder: 'Zadejte příjmení' },
|
|
12
|
+
{ key: 'phone', label: 'Telefon', type: 'tel', placeholder: 'Zadejte telefon' },
|
|
13
|
+
{ key: 'email', label: 'Email', type: 'email', placeholder: 'Zadejte email' },
|
|
14
|
+
{ key: 'position', label: 'Pozice', type: 'text', placeholder: 'Zadejte pozici' }
|
|
15
|
+
], displayFields = ['firstName', 'lastName', 'position'], // Pole pro zobrazení v linku
|
|
16
|
+
...restProps }) => {
|
|
17
|
+
const [popupOpened, setPopupOpened] = useState(false);
|
|
18
|
+
// Dynamicky inicializuj formData na základě fields
|
|
19
|
+
const getInitialFormData = () => {
|
|
20
|
+
const initialData = {};
|
|
21
|
+
fields.forEach(field => {
|
|
22
|
+
initialData[field.key] = '';
|
|
23
|
+
});
|
|
24
|
+
return initialData;
|
|
25
|
+
};
|
|
26
|
+
const [formData, setFormData] = useState(getInitialFormData());
|
|
27
|
+
// Aktualizuj formData když se změní value prop nebo fields (ale ne když je popup otevřený)
|
|
28
|
+
useEffect(() => {
|
|
29
|
+
if (popupOpened)
|
|
30
|
+
return; // Neaktualizuj formData když je popup otevřený
|
|
31
|
+
const newFormData = {};
|
|
32
|
+
fields.forEach(field => {
|
|
33
|
+
newFormData[field.key] = '';
|
|
34
|
+
});
|
|
35
|
+
if (value && typeof value === 'object') {
|
|
36
|
+
fields.forEach(field => {
|
|
37
|
+
newFormData[field.key] = value[field.key] || '';
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
setFormData(newFormData);
|
|
41
|
+
}, [value, fields, popupOpened]);
|
|
42
|
+
const linkStyle = {
|
|
43
|
+
color,
|
|
44
|
+
cursor: 'pointer',
|
|
45
|
+
display: 'flex',
|
|
46
|
+
alignItems: 'center',
|
|
47
|
+
gap: '6px'
|
|
48
|
+
};
|
|
49
|
+
const handleSave = () => {
|
|
50
|
+
const result = { ...formData };
|
|
51
|
+
if (onChange) {
|
|
52
|
+
onChange(result);
|
|
53
|
+
}
|
|
54
|
+
else if (onSave) {
|
|
55
|
+
onSave(result);
|
|
56
|
+
}
|
|
57
|
+
setPopupOpened(false);
|
|
58
|
+
};
|
|
59
|
+
const handleCancel = () => {
|
|
60
|
+
const newFormData = {};
|
|
61
|
+
fields.forEach(field => {
|
|
62
|
+
newFormData[field.key] = '';
|
|
63
|
+
});
|
|
64
|
+
if (value && typeof value === 'object') {
|
|
65
|
+
fields.forEach(field => {
|
|
66
|
+
newFormData[field.key] = value[field.key] || '';
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
setFormData(newFormData);
|
|
70
|
+
setPopupOpened(false);
|
|
71
|
+
};
|
|
72
|
+
const handleInputChange = (field, newValue) => {
|
|
73
|
+
setFormData(prev => ({
|
|
74
|
+
...prev,
|
|
75
|
+
[field]: newValue
|
|
76
|
+
}));
|
|
77
|
+
};
|
|
78
|
+
const handleOpenPopup = () => {
|
|
79
|
+
// Před otevřením popupu nastav aktuální hodnoty do formData
|
|
80
|
+
const newFormData = {};
|
|
81
|
+
fields.forEach(field => {
|
|
82
|
+
newFormData[field.key] = '';
|
|
83
|
+
});
|
|
84
|
+
if (value && typeof value === 'object') {
|
|
85
|
+
fields.forEach(field => {
|
|
86
|
+
newFormData[field.key] = value[field.key] || '';
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
setFormData(newFormData);
|
|
90
|
+
setPopupOpened(true);
|
|
91
|
+
};
|
|
92
|
+
// Určí jakou ikonu použít - priorita: icon > lucideIcon > výchozí User
|
|
93
|
+
const renderIcon = () => {
|
|
94
|
+
if (icon) {
|
|
95
|
+
return React.cloneElement(icon, { size, color, ...icon.props });
|
|
96
|
+
}
|
|
97
|
+
if (lucideIcon) {
|
|
98
|
+
const LucideIcon = lucideIcon;
|
|
99
|
+
return _jsx(LucideIcon, { size: size, color: color });
|
|
100
|
+
}
|
|
101
|
+
return _jsx(User, { size: size, color: color });
|
|
102
|
+
};
|
|
103
|
+
// Zobrazí text v linku podle vyplněných dat
|
|
104
|
+
const getDisplayText = () => {
|
|
105
|
+
if (value && typeof value === 'object') {
|
|
106
|
+
const displayValues = displayFields
|
|
107
|
+
.map(fieldKey => value[fieldKey])
|
|
108
|
+
.filter(Boolean);
|
|
109
|
+
if (displayValues.length > 0) {
|
|
110
|
+
return displayValues.join(' - ');
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
return placeholder;
|
|
114
|
+
};
|
|
115
|
+
return (_jsxs("div", { ...restProps, children: [_jsxs(Link, { onClick: handleOpenPopup, className: "link", style: linkStyle, children: [renderIcon(), getDisplayText()] }), _jsx(Popup, { opened: popupOpened, onPopupClosed: () => setPopupOpened(false), animate: true, backdrop: true, className: "f7-parallax", children: _jsxs(Page, { children: [_jsxs(Navbar, { large: true, children: [_jsx(NavLeft, { children: _jsx(Link, { onClick: handleCancel, children: _jsx(Icon, { f7: "arrow_left", style: { fontWeight: 'bold' } }) }) }), _jsx(NavTitle, { children: title }), _jsx(NavTitleLarge, { children: title })] }), _jsx(Block, { style: { marginTop: '20px' }, children: _jsx(List, { children: FormRenderer ? (_jsx(FormRenderer, { fields: fields, formData: formData, onChange: handleInputChange })) : (fields.map((field, index) => (_jsx(ListInput, { type: field.type || 'text', label: field.label, placeholder: field.placeholder, value: formData[field.key], onInput: (e) => handleInputChange(field.key, e.target.value), clearButton: true, style: { fontSize: '18px' } }, field.key || index)))) }) }), _jsx(SaveButton, { onClick: handleSave, variant: "black" })] }) })] }));
|
|
7
116
|
};
|
|
8
117
|
//# sourceMappingURL=Custom.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Custom.js","sourceRoot":"","sources":["../../components/Custom.jsx"],"names":[],"mappings":";AAAA,oBAAoB;AACpB,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,
|
|
1
|
+
{"version":3,"file":"Custom.js","sourceRoot":"","sources":["../../components/Custom.jsx"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,11 @@
|
|
|
1
|
-
export function Download({ children, href, onClick, color, size }: {
|
|
1
|
+
export function Download({ children, href, onClick, color, size, value, lucideIcon, icon, ...restProps }: {
|
|
2
|
+
[x: string]: any;
|
|
2
3
|
children: any;
|
|
3
4
|
href: any;
|
|
4
5
|
onClick: any;
|
|
5
6
|
color?: string | undefined;
|
|
6
7
|
size?: number | undefined;
|
|
8
|
+
value: any;
|
|
9
|
+
lucideIcon: any;
|
|
10
|
+
icon: any;
|
|
7
11
|
}): import("react/jsx-runtime").JSX.Element;
|