hazo_collab_forms 1.1.0
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/README.md +114 -0
- package/dist/components/collab_form_file_upload.d.ts +65 -0
- package/dist/components/collab_form_file_upload.d.ts.map +1 -0
- package/dist/components/collab_form_file_upload.js +339 -0
- package/dist/components/collab_form_file_upload.js.map +1 -0
- package/dist/components/data_ok_checkbox.d.ts +36 -0
- package/dist/components/data_ok_checkbox.d.ts.map +1 -0
- package/dist/components/data_ok_checkbox.js +26 -0
- package/dist/components/data_ok_checkbox.js.map +1 -0
- package/dist/components/hazo_collab_form_base.d.ts +398 -0
- package/dist/components/hazo_collab_form_base.d.ts.map +1 -0
- package/dist/components/hazo_collab_form_base.js +206 -0
- package/dist/components/hazo_collab_form_base.js.map +1 -0
- package/dist/components/hazo_collab_form_checkbox.d.ts +52 -0
- package/dist/components/hazo_collab_form_checkbox.d.ts.map +1 -0
- package/dist/components/hazo_collab_form_checkbox.js +65 -0
- package/dist/components/hazo_collab_form_checkbox.js.map +1 -0
- package/dist/components/hazo_collab_form_combo.d.ts +91 -0
- package/dist/components/hazo_collab_form_combo.d.ts.map +1 -0
- package/dist/components/hazo_collab_form_combo.js +192 -0
- package/dist/components/hazo_collab_form_combo.js.map +1 -0
- package/dist/components/hazo_collab_form_date.d.ts +71 -0
- package/dist/components/hazo_collab_form_date.d.ts.map +1 -0
- package/dist/components/hazo_collab_form_date.js +251 -0
- package/dist/components/hazo_collab_form_date.js.map +1 -0
- package/dist/components/hazo_collab_form_group.d.ts +40 -0
- package/dist/components/hazo_collab_form_group.d.ts.map +1 -0
- package/dist/components/hazo_collab_form_group.js +151 -0
- package/dist/components/hazo_collab_form_group.js.map +1 -0
- package/dist/components/hazo_collab_form_inputbox.d.ts +44 -0
- package/dist/components/hazo_collab_form_inputbox.d.ts.map +1 -0
- package/dist/components/hazo_collab_form_inputbox.js +64 -0
- package/dist/components/hazo_collab_form_inputbox.js.map +1 -0
- package/dist/components/hazo_collab_form_radio.d.ts +73 -0
- package/dist/components/hazo_collab_form_radio.d.ts.map +1 -0
- package/dist/components/hazo_collab_form_radio.js +65 -0
- package/dist/components/hazo_collab_form_radio.js.map +1 -0
- package/dist/components/hazo_collab_form_set.d.ts +181 -0
- package/dist/components/hazo_collab_form_set.d.ts.map +1 -0
- package/dist/components/hazo_collab_form_set.js +425 -0
- package/dist/components/hazo_collab_form_set.js.map +1 -0
- package/dist/components/hazo_collab_form_textarea.d.ts +43 -0
- package/dist/components/hazo_collab_form_textarea.d.ts.map +1 -0
- package/dist/components/hazo_collab_form_textarea.js +61 -0
- package/dist/components/hazo_collab_form_textarea.js.map +1 -0
- package/dist/components/index.d.ts +23 -0
- package/dist/components/index.d.ts.map +1 -0
- package/dist/components/index.js +14 -0
- package/dist/components/index.js.map +1 -0
- package/dist/index.client.d.ts +7 -0
- package/dist/index.client.d.ts.map +1 -0
- package/dist/index.client.js +7 -0
- package/dist/index.client.js.map +1 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +8 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/config.d.ts +15 -0
- package/dist/lib/config.d.ts.map +1 -0
- package/dist/lib/config.js +62 -0
- package/dist/lib/config.js.map +1 -0
- package/dist/lib/index.d.ts +5 -0
- package/dist/lib/index.d.ts.map +1 -0
- package/dist/lib/index.js +5 -0
- package/dist/lib/index.js.map +1 -0
- package/dist/utils/cn.d.ts +12 -0
- package/dist/utils/cn.d.ts.map +1 -0
- package/dist/utils/cn.js +15 -0
- package/dist/utils/cn.js.map +1 -0
- package/dist/utils/index.d.ts +9 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +7 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/use_chat_messages_check.d.ts +40 -0
- package/dist/utils/use_chat_messages_check.d.ts.map +1 -0
- package/dist/utils/use_chat_messages_check.js +80 -0
- package/dist/utils/use_chat_messages_check.js.map +1 -0
- package/dist/utils/use_collab_chat.d.ts +21 -0
- package/dist/utils/use_collab_chat.d.ts.map +1 -0
- package/dist/utils/use_collab_chat.js +49 -0
- package/dist/utils/use_collab_chat.js.map +1 -0
- package/package.json +78 -0
|
@@ -0,0 +1,425 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Collaboration form set component
|
|
3
|
+
* Dynamically generates forms from JSON configuration
|
|
4
|
+
* Supports nested groups, field dependencies, and all HazoCollabForm component types
|
|
5
|
+
*/
|
|
6
|
+
'use client';
|
|
7
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
8
|
+
import React from 'react';
|
|
9
|
+
import { HazoCollabFormInputbox, HazoCollabFormTextArea, HazoCollabFormCheckbox, HazoCollabFormCombo, HazoCollabFormRadio, HazoCollabFormGroup, } from './index.js';
|
|
10
|
+
/**
|
|
11
|
+
* Component type mapping
|
|
12
|
+
*/
|
|
13
|
+
const COMPONENT_MAP = {
|
|
14
|
+
HazoCollabFormInputbox,
|
|
15
|
+
HazoCollabFormTextArea,
|
|
16
|
+
HazoCollabFormCheckbox,
|
|
17
|
+
HazoCollabFormCombo,
|
|
18
|
+
HazoCollabFormRadio,
|
|
19
|
+
};
|
|
20
|
+
/**
|
|
21
|
+
* Parse dependency string (e.g., "field_id:value")
|
|
22
|
+
* Returns { field_id, value } or null if invalid
|
|
23
|
+
*/
|
|
24
|
+
function parse_dependency(dependency) {
|
|
25
|
+
const parts = dependency.split(':');
|
|
26
|
+
if (parts.length !== 2) {
|
|
27
|
+
return null;
|
|
28
|
+
}
|
|
29
|
+
return {
|
|
30
|
+
field_id: parts[0].trim(),
|
|
31
|
+
value: parts[1].trim(),
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Check if a field should be visible based on its dependency
|
|
36
|
+
*/
|
|
37
|
+
function check_dependency(dependency, form_data) {
|
|
38
|
+
if (!dependency) {
|
|
39
|
+
return true; // No dependency, always show
|
|
40
|
+
}
|
|
41
|
+
const parsed = parse_dependency(dependency);
|
|
42
|
+
if (!parsed) {
|
|
43
|
+
return true; // Invalid dependency format, show by default
|
|
44
|
+
}
|
|
45
|
+
const dependency_value = form_data[parsed.field_id];
|
|
46
|
+
return String(dependency_value) === parsed.value;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Initialize form data from field configuration
|
|
50
|
+
*/
|
|
51
|
+
function initialize_form_data(field_list) {
|
|
52
|
+
const data = {};
|
|
53
|
+
const process_field = (field) => {
|
|
54
|
+
data[field.id] = field.value;
|
|
55
|
+
if (field.field_type === 'group' && field.sub_fields) {
|
|
56
|
+
field.sub_fields.forEach(process_field);
|
|
57
|
+
}
|
|
58
|
+
};
|
|
59
|
+
field_list.forEach(process_field);
|
|
60
|
+
return data;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Collaboration form set component
|
|
64
|
+
* Dynamically generates forms from JSON configuration
|
|
65
|
+
*/
|
|
66
|
+
export const HazoCollabFormSet = React.forwardRef((props, ref) => {
|
|
67
|
+
const { fields_set, recipient_id: recipient_id_prop, on_field_change, on_form_data_change, initial_data } = props;
|
|
68
|
+
// State for default recipient_id from config
|
|
69
|
+
const [default_recipient_id, set_default_recipient_id] = React.useState(undefined);
|
|
70
|
+
// Fetch default recipient_id from config if recipient_id prop is not provided
|
|
71
|
+
React.useEffect(() => {
|
|
72
|
+
// Only fetch if recipient_id prop is not provided
|
|
73
|
+
if (!recipient_id_prop) {
|
|
74
|
+
const fetch_default_recipient_id = async () => {
|
|
75
|
+
try {
|
|
76
|
+
// First, get the current user from hazo_auth
|
|
77
|
+
const auth_response = await fetch('/api/hazo_auth/me');
|
|
78
|
+
if (!auth_response.ok) {
|
|
79
|
+
console.debug('[HazoCollabFormSet] Auth API not available or user not authenticated');
|
|
80
|
+
return; // User not authenticated or API route doesn't exist
|
|
81
|
+
}
|
|
82
|
+
const auth_data = await auth_response.json();
|
|
83
|
+
if (!auth_data.authenticated || !auth_data.user_id) {
|
|
84
|
+
console.debug('[HazoCollabFormSet] User not authenticated');
|
|
85
|
+
return; // User not authenticated
|
|
86
|
+
}
|
|
87
|
+
const current_user_id = auth_data.user_id;
|
|
88
|
+
console.log('[HazoCollabFormSet] Current user ID:', current_user_id);
|
|
89
|
+
console.log('[HazoCollabFormSet] Auth data:', auth_data);
|
|
90
|
+
// Fetch the config array
|
|
91
|
+
const config_response = await fetch(`/api/config?section=${encodeURIComponent('chat')}&key=${encodeURIComponent('default_testing_recipient_id')}`);
|
|
92
|
+
if (config_response.ok) {
|
|
93
|
+
const config_data = await config_response.json();
|
|
94
|
+
console.log('[HazoCollabFormSet] Config API response:', config_data);
|
|
95
|
+
if (config_data.value) {
|
|
96
|
+
try {
|
|
97
|
+
// Parse the JSON array
|
|
98
|
+
const recipient_mappings = JSON.parse(config_data.value);
|
|
99
|
+
console.log('[HazoCollabFormSet] Recipient mappings:', recipient_mappings);
|
|
100
|
+
console.log('[HazoCollabFormSet] Looking for current user:', current_user_id);
|
|
101
|
+
// Find the matching entry for the current user
|
|
102
|
+
const mapping = recipient_mappings.find((m) => m.current_user === current_user_id);
|
|
103
|
+
if (mapping && mapping.recipient_user) {
|
|
104
|
+
console.log('[HazoCollabFormSet] Found recipient mapping:', mapping.recipient_user);
|
|
105
|
+
set_default_recipient_id(mapping.recipient_user);
|
|
106
|
+
}
|
|
107
|
+
else {
|
|
108
|
+
console.warn('[HazoCollabFormSet] No recipient mapping found for current user:', current_user_id);
|
|
109
|
+
console.log('[HazoCollabFormSet] Available mappings:', recipient_mappings.map(m => m.current_user));
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
catch (parse_error) {
|
|
113
|
+
// Invalid JSON format
|
|
114
|
+
console.error('[HazoCollabFormSet] Could not parse default_testing_recipient_id config:', parse_error);
|
|
115
|
+
console.error('[HazoCollabFormSet] Config value:', config_data.value);
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
else {
|
|
119
|
+
console.warn('[HazoCollabFormSet] Config value is empty or null. Full response:', config_data);
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
else {
|
|
123
|
+
console.error('[HazoCollabFormSet] Config API not available or returned error:', config_response.status);
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
catch (error) {
|
|
127
|
+
// Log error but allow component to work even if API route doesn't exist
|
|
128
|
+
console.error('[HazoCollabFormSet] Could not fetch default_testing_recipient_id from config:', error);
|
|
129
|
+
}
|
|
130
|
+
};
|
|
131
|
+
fetch_default_recipient_id();
|
|
132
|
+
}
|
|
133
|
+
}, [recipient_id_prop]);
|
|
134
|
+
// Use recipient_id prop if provided, otherwise use default from config
|
|
135
|
+
const recipient_id = recipient_id_prop || default_recipient_id;
|
|
136
|
+
// State for current user ID
|
|
137
|
+
const [current_user_id, set_current_user_id] = React.useState(undefined);
|
|
138
|
+
// State for mapping of field_id to has_chat_messages
|
|
139
|
+
const [field_chat_messages, set_field_chat_messages] = React.useState({});
|
|
140
|
+
// Get current user ID
|
|
141
|
+
React.useEffect(() => {
|
|
142
|
+
const fetch_current_user = async () => {
|
|
143
|
+
try {
|
|
144
|
+
const auth_response = await fetch('/api/hazo_auth/me');
|
|
145
|
+
if (auth_response.ok) {
|
|
146
|
+
const auth_data = await auth_response.json();
|
|
147
|
+
if (auth_data.authenticated && auth_data.user_id) {
|
|
148
|
+
set_current_user_id(auth_data.user_id);
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
catch (error) {
|
|
153
|
+
console.error('[HazoCollabFormSet] Could not fetch current user:', error);
|
|
154
|
+
}
|
|
155
|
+
};
|
|
156
|
+
fetch_current_user();
|
|
157
|
+
}, []);
|
|
158
|
+
// Check for unread messages and create mapping of reference_id to has_chat_messages
|
|
159
|
+
React.useEffect(() => {
|
|
160
|
+
if (!current_user_id || !recipient_id) {
|
|
161
|
+
console.log('[HazoCollabFormSet] Skipping unread check - missing:', { current_user_id, recipient_id });
|
|
162
|
+
return;
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* Check hazo_chat table for records where:
|
|
166
|
+
* - receiver_user_id = current_user_id (current user is the receiver)
|
|
167
|
+
* - read_at IS NULL (unread messages)
|
|
168
|
+
* Get unique reference_id values and match with field_id
|
|
169
|
+
*/
|
|
170
|
+
const check_unread_messages = async () => {
|
|
171
|
+
try {
|
|
172
|
+
// Collect all field IDs (which are used as reference_id in chat)
|
|
173
|
+
const all_field_ids = [];
|
|
174
|
+
const process_fields_for_ids = (field_list) => {
|
|
175
|
+
field_list.forEach((field) => {
|
|
176
|
+
all_field_ids.push(field.id);
|
|
177
|
+
if (field.field_type === 'group' && field.sub_fields) {
|
|
178
|
+
process_fields_for_ids(field.sub_fields);
|
|
179
|
+
}
|
|
180
|
+
});
|
|
181
|
+
};
|
|
182
|
+
process_fields_for_ids(fields_set.field_list);
|
|
183
|
+
// Check each field for unread messages
|
|
184
|
+
// We need to query each reference_id individually since the API requires it
|
|
185
|
+
const unread_reference_ids = new Set();
|
|
186
|
+
console.log('[HazoCollabFormSet] Checking unread messages for fields:', all_field_ids);
|
|
187
|
+
console.log('[HazoCollabFormSet] Current user ID for unread check:', current_user_id);
|
|
188
|
+
console.log('[HazoCollabFormSet] Recipient ID:', recipient_id);
|
|
189
|
+
// Query all fields in parallel
|
|
190
|
+
// The API returns messages for a conversation between the current user and the recipient
|
|
191
|
+
// We need to check if the current user has unread messages (where current user is the receiver)
|
|
192
|
+
const check_promises = all_field_ids.map(async (field_id) => {
|
|
193
|
+
try {
|
|
194
|
+
// Query messages for this reference_id with the recipient
|
|
195
|
+
// The API will return all messages in the conversation
|
|
196
|
+
const params = new URLSearchParams({
|
|
197
|
+
receiver_user_id: recipient_id || '',
|
|
198
|
+
reference_id: field_id,
|
|
199
|
+
});
|
|
200
|
+
console.log(`[HazoCollabFormSet] Checking field ${field_id} with params:`, params.toString());
|
|
201
|
+
const response = await fetch(`/api/hazo_chat/messages?${params.toString()}`);
|
|
202
|
+
if (response.ok) {
|
|
203
|
+
const data = await response.json();
|
|
204
|
+
const messages = data.messages || [];
|
|
205
|
+
const api_current_user_id = data.current_user_id;
|
|
206
|
+
console.log(`[HazoCollabFormSet] Field ${field_id} - API response:`, {
|
|
207
|
+
messages_count: messages.length,
|
|
208
|
+
api_current_user_id,
|
|
209
|
+
local_current_user_id: current_user_id,
|
|
210
|
+
messages: messages.map((m) => ({
|
|
211
|
+
id: m.id,
|
|
212
|
+
sender_user_id: m.sender_user_id,
|
|
213
|
+
receiver_user_id: m.receiver_user_id,
|
|
214
|
+
read_at: m.read_at,
|
|
215
|
+
}))
|
|
216
|
+
});
|
|
217
|
+
// Filter for unread messages where the current user is the RECEIVER
|
|
218
|
+
// (messages sent TO the current user that haven't been read)
|
|
219
|
+
// Use api_current_user_id if available, otherwise fall back to local current_user_id
|
|
220
|
+
const effective_current_user_id = api_current_user_id || current_user_id;
|
|
221
|
+
const has_unread = Array.isArray(messages) && messages.some((msg) => {
|
|
222
|
+
const is_unread = msg.read_at === null || msg.read_at === undefined;
|
|
223
|
+
const is_receiver = msg.receiver_user_id === effective_current_user_id;
|
|
224
|
+
console.log(`[HazoCollabFormSet] Message check:`, {
|
|
225
|
+
message_id: msg.id,
|
|
226
|
+
is_unread,
|
|
227
|
+
is_receiver,
|
|
228
|
+
receiver_user_id: msg.receiver_user_id,
|
|
229
|
+
effective_current_user_id,
|
|
230
|
+
read_at: msg.read_at,
|
|
231
|
+
});
|
|
232
|
+
return is_unread && is_receiver;
|
|
233
|
+
});
|
|
234
|
+
console.log(`[HazoCollabFormSet] Field ${field_id} has_unread:`, has_unread);
|
|
235
|
+
if (has_unread) {
|
|
236
|
+
unread_reference_ids.add(field_id);
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
else {
|
|
240
|
+
console.error(`[HazoCollabFormSet] Field ${field_id} - API error:`, response.status);
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
catch (error) {
|
|
244
|
+
console.error(`[HazoCollabFormSet] Error checking field ${field_id}:`, error);
|
|
245
|
+
}
|
|
246
|
+
});
|
|
247
|
+
await Promise.all(check_promises);
|
|
248
|
+
// Create mapping of field_id -> has_chat_messages
|
|
249
|
+
const chat_messages_map = {};
|
|
250
|
+
const process_fields_for_mapping = (field_list) => {
|
|
251
|
+
field_list.forEach((field) => {
|
|
252
|
+
// field.id is used as field_data_id, which is used as reference_id in chat
|
|
253
|
+
chat_messages_map[field.id] = unread_reference_ids.has(field.id);
|
|
254
|
+
// Process sub_fields if it's a group
|
|
255
|
+
if (field.field_type === 'group' && field.sub_fields) {
|
|
256
|
+
process_fields_for_mapping(field.sub_fields);
|
|
257
|
+
}
|
|
258
|
+
});
|
|
259
|
+
};
|
|
260
|
+
process_fields_for_mapping(fields_set.field_list);
|
|
261
|
+
console.log('[HazoCollabFormSet] Unread reference IDs:', Array.from(unread_reference_ids));
|
|
262
|
+
console.log('[HazoCollabFormSet] Chat messages map:', chat_messages_map);
|
|
263
|
+
set_field_chat_messages(chat_messages_map);
|
|
264
|
+
}
|
|
265
|
+
catch (error) {
|
|
266
|
+
console.error('[HazoCollabFormSet] Error checking unread messages:', error);
|
|
267
|
+
set_field_chat_messages({});
|
|
268
|
+
}
|
|
269
|
+
};
|
|
270
|
+
check_unread_messages();
|
|
271
|
+
// Set up polling to check for unread messages every 5 seconds
|
|
272
|
+
const interval_id = setInterval(check_unread_messages, 5000);
|
|
273
|
+
return () => {
|
|
274
|
+
clearInterval(interval_id);
|
|
275
|
+
};
|
|
276
|
+
}, [current_user_id, recipient_id, fields_set.field_list]);
|
|
277
|
+
// Initialize form data from field config or initial_data
|
|
278
|
+
const initial_form_data = React.useMemo(() => {
|
|
279
|
+
if (initial_data) {
|
|
280
|
+
return { ...initialize_form_data(fields_set.field_list), ...initial_data };
|
|
281
|
+
}
|
|
282
|
+
return initialize_form_data(fields_set.field_list);
|
|
283
|
+
}, [fields_set.field_list, initial_data]);
|
|
284
|
+
const [form_data, set_form_data_state] = React.useState(initial_form_data);
|
|
285
|
+
// Expose ref methods
|
|
286
|
+
React.useImperativeHandle(ref, () => ({
|
|
287
|
+
get_form_data: () => form_data,
|
|
288
|
+
set_form_data: (data) => {
|
|
289
|
+
set_form_data_state(data);
|
|
290
|
+
if (on_form_data_change) {
|
|
291
|
+
on_form_data_change(data);
|
|
292
|
+
}
|
|
293
|
+
},
|
|
294
|
+
reset_form: () => {
|
|
295
|
+
set_form_data_state(initial_form_data);
|
|
296
|
+
if (on_form_data_change) {
|
|
297
|
+
on_form_data_change(initial_form_data);
|
|
298
|
+
}
|
|
299
|
+
},
|
|
300
|
+
}), [form_data, initial_form_data, on_form_data_change]);
|
|
301
|
+
/**
|
|
302
|
+
* Handle field value change
|
|
303
|
+
*/
|
|
304
|
+
const handle_field_change = React.useCallback((field_id, value) => {
|
|
305
|
+
set_form_data_state((prev) => {
|
|
306
|
+
const new_data = { ...prev, [field_id]: value };
|
|
307
|
+
if (on_field_change) {
|
|
308
|
+
on_field_change(field_id, value);
|
|
309
|
+
}
|
|
310
|
+
if (on_form_data_change) {
|
|
311
|
+
on_form_data_change(new_data);
|
|
312
|
+
}
|
|
313
|
+
return new_data;
|
|
314
|
+
});
|
|
315
|
+
}, [on_field_change, on_form_data_change]);
|
|
316
|
+
/**
|
|
317
|
+
* Map input format to component props
|
|
318
|
+
*/
|
|
319
|
+
const map_input_format_to_props = (input_format) => {
|
|
320
|
+
if (!input_format) {
|
|
321
|
+
return {};
|
|
322
|
+
}
|
|
323
|
+
const props = {};
|
|
324
|
+
if (input_format.format_guide !== undefined) {
|
|
325
|
+
props.format_guide = input_format.format_guide;
|
|
326
|
+
props.format_guide_info = true; // Default to true if format_guide exists
|
|
327
|
+
}
|
|
328
|
+
if (input_format.text_min_len !== undefined) {
|
|
329
|
+
props.text_len_min = input_format.text_min_len;
|
|
330
|
+
}
|
|
331
|
+
if (input_format.text_max_len !== undefined) {
|
|
332
|
+
props.text_len_max = input_format.text_max_len;
|
|
333
|
+
}
|
|
334
|
+
if (input_format.num_min !== undefined) {
|
|
335
|
+
props.num_min = input_format.num_min;
|
|
336
|
+
}
|
|
337
|
+
if (input_format.num_max !== undefined) {
|
|
338
|
+
props.num_max = input_format.num_max;
|
|
339
|
+
}
|
|
340
|
+
if (input_format.regex !== undefined) {
|
|
341
|
+
props.regex = input_format.regex;
|
|
342
|
+
}
|
|
343
|
+
if (input_format.num_decimals !== undefined) {
|
|
344
|
+
props.num_decimals = input_format.num_decimals;
|
|
345
|
+
}
|
|
346
|
+
return props;
|
|
347
|
+
};
|
|
348
|
+
/**
|
|
349
|
+
* Render a single field
|
|
350
|
+
*/
|
|
351
|
+
const render_field = (field) => {
|
|
352
|
+
// Check dependency
|
|
353
|
+
const dependency_satisfied = check_dependency(field.dependency, form_data);
|
|
354
|
+
if (!dependency_satisfied) {
|
|
355
|
+
return null;
|
|
356
|
+
}
|
|
357
|
+
// Handle group fields
|
|
358
|
+
if (field.field_type === 'group') {
|
|
359
|
+
if (!field.sub_fields || field.sub_fields.length === 0) {
|
|
360
|
+
return null;
|
|
361
|
+
}
|
|
362
|
+
return (_jsx(HazoCollabFormGroup, { label: field.label, field_data_id: field.id, field_name: field.label, accept_files: field.accept_files ?? fields_set.accept_files, recipient_user_id: recipient_id, hazo_chat_receiver_user_id: recipient_id, has_chat_messages: field_chat_messages[field.id] || false, children: field.sub_fields.map(render_field) }, field.id));
|
|
363
|
+
}
|
|
364
|
+
// Handle regular fields
|
|
365
|
+
if (!field.component_type) {
|
|
366
|
+
return null;
|
|
367
|
+
}
|
|
368
|
+
const Component = COMPONENT_MAP[field.component_type];
|
|
369
|
+
if (!Component) {
|
|
370
|
+
console.warn(`Unknown component type: ${field.component_type}`);
|
|
371
|
+
return null;
|
|
372
|
+
}
|
|
373
|
+
// Map input_width to field_width_class_name
|
|
374
|
+
let field_width_class_name;
|
|
375
|
+
if (field.input_width === 'auto') {
|
|
376
|
+
field_width_class_name = 'w-auto';
|
|
377
|
+
}
|
|
378
|
+
else if (field.input_width === 'full') {
|
|
379
|
+
field_width_class_name = 'flex-1';
|
|
380
|
+
}
|
|
381
|
+
// Determine if field should be required
|
|
382
|
+
// If dependency is not satisfied, field is not required even if required: true in JSON
|
|
383
|
+
// If dependency is satisfied or no dependency, use the required value from JSON
|
|
384
|
+
const is_required = dependency_satisfied && field.required === true;
|
|
385
|
+
// Base props for all components (key is passed separately)
|
|
386
|
+
const base_props = {
|
|
387
|
+
label: field.label,
|
|
388
|
+
field_data_id: field.id,
|
|
389
|
+
field_name: field.label,
|
|
390
|
+
recipient_user_id: recipient_id,
|
|
391
|
+
hazo_chat_receiver_user_id: recipient_id,
|
|
392
|
+
accept_files: field.accept_files ?? fields_set.accept_files,
|
|
393
|
+
field_width_class_name,
|
|
394
|
+
required: is_required,
|
|
395
|
+
has_chat_messages: field_chat_messages[field.id] || false,
|
|
396
|
+
};
|
|
397
|
+
// Component-specific props
|
|
398
|
+
const current_value = form_data[field.id] ?? field.value;
|
|
399
|
+
if (field.component_type === 'HazoCollabFormInputbox') {
|
|
400
|
+
return (_jsx(Component, { ...base_props, value: String(current_value), onChange: (value) => handle_field_change(field.id, value), input_type: field.input_type, ...map_input_format_to_props(field.input_format) }, field.id));
|
|
401
|
+
}
|
|
402
|
+
if (field.component_type === 'HazoCollabFormTextArea') {
|
|
403
|
+
return (_jsx(Component, { ...base_props, value: String(current_value), onChange: (value) => handle_field_change(field.id, value) }, field.id));
|
|
404
|
+
}
|
|
405
|
+
if (field.component_type === 'HazoCollabFormCheckbox') {
|
|
406
|
+
// Checkbox uses checked boolean
|
|
407
|
+
const checked = typeof current_value === 'boolean'
|
|
408
|
+
? current_value
|
|
409
|
+
: current_value === 'true' || current_value === true || String(current_value).toLowerCase() === 'true';
|
|
410
|
+
return (_jsx(Component, { ...base_props, checked: checked, onChange: (checked) => handle_field_change(field.id, checked) }, field.id));
|
|
411
|
+
}
|
|
412
|
+
if (field.component_type === 'HazoCollabFormRadio' || field.component_type === 'HazoCollabFormCombo') {
|
|
413
|
+
// Convert input_options to component options format
|
|
414
|
+
const options = (field.input_options || []).map(opt => ({
|
|
415
|
+
label: opt.label,
|
|
416
|
+
value: opt.value,
|
|
417
|
+
}));
|
|
418
|
+
return (_jsx(Component, { ...base_props, value: String(current_value), onChange: (value) => handle_field_change(field.id, value), options: options }, field.id));
|
|
419
|
+
}
|
|
420
|
+
return null;
|
|
421
|
+
};
|
|
422
|
+
return (_jsxs("div", { className: "cls_collab_form_set_container space-y-4", children: [_jsx("h2", { className: "cls_collab_form_set_title text-2xl font-semibold mb-4", children: fields_set.group_name }), _jsx("div", { className: "cls_collab_form_set_fields space-y-4", children: fields_set.field_list.map(render_field) })] }));
|
|
423
|
+
});
|
|
424
|
+
HazoCollabFormSet.displayName = 'HazoCollabFormSet';
|
|
425
|
+
//# sourceMappingURL=hazo_collab_form_set.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hazo_collab_form_set.js","sourceRoot":"","sources":["../../src/components/hazo_collab_form_set.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,YAAY,CAAC;;AAEb,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EACL,sBAAsB,EACtB,sBAAsB,EACtB,sBAAsB,EACtB,mBAAmB,EACnB,mBAAmB,EACnB,mBAAmB,GAGpB,MAAM,YAAY,CAAC;AA6MpB;;GAEG;AACH,MAAM,aAAa,GAA6C;IAC9D,sBAAsB;IACtB,sBAAsB;IACtB,sBAAsB;IACtB,mBAAmB;IACnB,mBAAmB;CACpB,CAAC;AAEF;;;GAGG;AACH,SAAS,gBAAgB,CAAC,UAAkB;IAC1C,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACpC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO;QACL,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;QACzB,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;KACvB,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAS,gBAAgB,CACvB,UAA8B,EAC9B,SAA8B;IAE9B,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO,IAAI,CAAC,CAAC,6BAA6B;IAC5C,CAAC;IAED,MAAM,MAAM,GAAG,gBAAgB,CAAC,UAAU,CAAC,CAAC;IAC5C,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,IAAI,CAAC,CAAC,6CAA6C;IAC5D,CAAC;IAED,MAAM,gBAAgB,GAAG,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACpD,OAAO,MAAM,CAAC,gBAAgB,CAAC,KAAK,MAAM,CAAC,KAAK,CAAC;AACnD,CAAC;AAED;;GAEG;AACH,SAAS,oBAAoB,CAAC,UAAyB;IACrD,MAAM,IAAI,GAAwB,EAAE,CAAC;IAErC,MAAM,aAAa,GAAG,CAAC,KAAkB,EAAE,EAAE;QAC3C,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC;QAE7B,IAAI,KAAK,CAAC,UAAU,KAAK,OAAO,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;YACrD,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC,CAAC;IAEF,UAAU,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;IAClC,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,KAAK,CAAC,UAAU,CAG/C,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;IACf,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,iBAAiB,EAAE,eAAe,EAAE,mBAAmB,EAAE,YAAY,EAAE,GAAG,KAAK,CAAC;IAElH,6CAA6C;IAC7C,MAAM,CAAC,oBAAoB,EAAE,wBAAwB,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAqB,SAAS,CAAC,CAAC;IAEvG,8EAA8E;IAC9E,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,kDAAkD;QAClD,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACvB,MAAM,0BAA0B,GAAG,KAAK,IAAI,EAAE;gBAC5C,IAAI,CAAC;oBACH,6CAA6C;oBAC7C,MAAM,aAAa,GAAG,MAAM,KAAK,CAAC,mBAAmB,CAAC,CAAC;oBACvD,IAAI,CAAC,aAAa,CAAC,EAAE,EAAE,CAAC;wBACtB,OAAO,CAAC,KAAK,CAAC,sEAAsE,CAAC,CAAC;wBACtF,OAAO,CAAC,oDAAoD;oBAC9D,CAAC;oBAED,MAAM,SAAS,GAAG,MAAM,aAAa,CAAC,IAAI,EAAE,CAAC;oBAC7C,IAAI,CAAC,SAAS,CAAC,aAAa,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;wBACnD,OAAO,CAAC,KAAK,CAAC,4CAA4C,CAAC,CAAC;wBAC5D,OAAO,CAAC,yBAAyB;oBACnC,CAAC;oBAED,MAAM,eAAe,GAAG,SAAS,CAAC,OAAO,CAAC;oBAC1C,OAAO,CAAC,GAAG,CAAC,sCAAsC,EAAE,eAAe,CAAC,CAAC;oBACrE,OAAO,CAAC,GAAG,CAAC,gCAAgC,EAAE,SAAS,CAAC,CAAC;oBAEzD,yBAAyB;oBACzB,MAAM,eAAe,GAAG,MAAM,KAAK,CACjC,uBAAuB,kBAAkB,CAAC,MAAM,CAAC,QAAQ,kBAAkB,CAAC,8BAA8B,CAAC,EAAE,CAC9G,CAAC;oBAEF,IAAI,eAAe,CAAC,EAAE,EAAE,CAAC;wBACvB,MAAM,WAAW,GAAG,MAAM,eAAe,CAAC,IAAI,EAAE,CAAC;wBACjD,OAAO,CAAC,GAAG,CAAC,0CAA0C,EAAE,WAAW,CAAC,CAAC;wBAErE,IAAI,WAAW,CAAC,KAAK,EAAE,CAAC;4BACtB,IAAI,CAAC;gCACH,uBAAuB;gCACvB,MAAM,kBAAkB,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,CAGrD,CAAC;gCAEH,OAAO,CAAC,GAAG,CAAC,yCAAyC,EAAE,kBAAkB,CAAC,CAAC;gCAC3E,OAAO,CAAC,GAAG,CAAC,+CAA+C,EAAE,eAAe,CAAC,CAAC;gCAE9E,+CAA+C;gCAC/C,MAAM,OAAO,GAAG,kBAAkB,CAAC,IAAI,CACrC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,KAAK,eAAe,CAC1C,CAAC;gCAEF,IAAI,OAAO,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;oCACtC,OAAO,CAAC,GAAG,CAAC,8CAA8C,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC;oCACpF,wBAAwB,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;gCACnD,CAAC;qCAAM,CAAC;oCACN,OAAO,CAAC,IAAI,CAAC,kEAAkE,EAAE,eAAe,CAAC,CAAC;oCAClG,OAAO,CAAC,GAAG,CAAC,yCAAyC,EAAE,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC;gCACtG,CAAC;4BACH,CAAC;4BAAC,OAAO,WAAW,EAAE,CAAC;gCACrB,sBAAsB;gCACtB,OAAO,CAAC,KAAK,CAAC,0EAA0E,EAAE,WAAW,CAAC,CAAC;gCACvG,OAAO,CAAC,KAAK,CAAC,mCAAmC,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC;4BACxE,CAAC;wBACH,CAAC;6BAAM,CAAC;4BACN,OAAO,CAAC,IAAI,CAAC,mEAAmE,EAAE,WAAW,CAAC,CAAC;wBACjG,CAAC;oBACH,CAAC;yBAAM,CAAC;wBACN,OAAO,CAAC,KAAK,CAAC,iEAAiE,EAAE,eAAe,CAAC,MAAM,CAAC,CAAC;oBAC3G,CAAC;gBACH,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,wEAAwE;oBACxE,OAAO,CAAC,KAAK,CAAC,+EAA+E,EAAE,KAAK,CAAC,CAAC;gBACxG,CAAC;YACH,CAAC,CAAC;YAEF,0BAA0B,EAAE,CAAC;QAC/B,CAAC;IACH,CAAC,EAAE,CAAC,iBAAiB,CAAC,CAAC,CAAC;IAExB,uEAAuE;IACvE,MAAM,YAAY,GAAG,iBAAiB,IAAI,oBAAoB,CAAC;IAE/D,4BAA4B;IAC5B,MAAM,CAAC,eAAe,EAAE,mBAAmB,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAqB,SAAS,CAAC,CAAC;IAE7F,qDAAqD;IACrD,MAAM,CAAC,mBAAmB,EAAE,uBAAuB,CAAC,GAAG,KAAK,CAAC,QAAQ,CAA0B,EAAE,CAAC,CAAC;IAEnG,sBAAsB;IACtB,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,MAAM,kBAAkB,GAAG,KAAK,IAAI,EAAE;YACpC,IAAI,CAAC;gBACH,MAAM,aAAa,GAAG,MAAM,KAAK,CAAC,mBAAmB,CAAC,CAAC;gBACvD,IAAI,aAAa,CAAC,EAAE,EAAE,CAAC;oBACrB,MAAM,SAAS,GAAG,MAAM,aAAa,CAAC,IAAI,EAAE,CAAC;oBAC7C,IAAI,SAAS,CAAC,aAAa,IAAI,SAAS,CAAC,OAAO,EAAE,CAAC;wBACjD,mBAAmB,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;oBACzC,CAAC;gBACH,CAAC;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,KAAK,CAAC,mDAAmD,EAAE,KAAK,CAAC,CAAC;YAC5E,CAAC;QACH,CAAC,CAAC;QAEF,kBAAkB,EAAE,CAAC;IACvB,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,oFAAoF;IACpF,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,IAAI,CAAC,eAAe,IAAI,CAAC,YAAY,EAAE,CAAC;YACtC,OAAO,CAAC,GAAG,CAAC,sDAAsD,EAAE,EAAE,eAAe,EAAE,YAAY,EAAE,CAAC,CAAC;YACvG,OAAO;QACT,CAAC;QAED;;;;;WAKG;QACH,MAAM,qBAAqB,GAAG,KAAK,IAAI,EAAE;YACvC,IAAI,CAAC;gBACH,iEAAiE;gBACjE,MAAM,aAAa,GAAa,EAAE,CAAC;gBACnC,MAAM,sBAAsB,GAAG,CAAC,UAAyB,EAAE,EAAE;oBAC3D,UAAU,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;wBAC3B,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;wBAC7B,IAAI,KAAK,CAAC,UAAU,KAAK,OAAO,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;4BACrD,sBAAsB,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;wBAC3C,CAAC;oBACH,CAAC,CAAC,CAAC;gBACL,CAAC,CAAC;gBACF,sBAAsB,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;gBAE9C,uCAAuC;gBACvC,4EAA4E;gBAC5E,MAAM,oBAAoB,GAAG,IAAI,GAAG,EAAU,CAAC;gBAE/C,OAAO,CAAC,GAAG,CAAC,0DAA0D,EAAE,aAAa,CAAC,CAAC;gBACvF,OAAO,CAAC,GAAG,CAAC,uDAAuD,EAAE,eAAe,CAAC,CAAC;gBACtF,OAAO,CAAC,GAAG,CAAC,mCAAmC,EAAE,YAAY,CAAC,CAAC;gBAE/D,+BAA+B;gBAC/B,yFAAyF;gBACzF,gGAAgG;gBAChG,MAAM,cAAc,GAAG,aAAa,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE;oBAC1D,IAAI,CAAC;wBACH,0DAA0D;wBAC1D,uDAAuD;wBACvD,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC;4BACjC,gBAAgB,EAAE,YAAY,IAAI,EAAE;4BACpC,YAAY,EAAE,QAAQ;yBACvB,CAAC,CAAC;wBAEH,OAAO,CAAC,GAAG,CAAC,sCAAsC,QAAQ,eAAe,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;wBAE9F,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,2BAA2B,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;wBAE7E,IAAI,QAAQ,CAAC,EAAE,EAAE,CAAC;4BAChB,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;4BACnC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC;4BACrC,MAAM,mBAAmB,GAAG,IAAI,CAAC,eAAe,CAAC;4BAEjD,OAAO,CAAC,GAAG,CAAC,6BAA6B,QAAQ,kBAAkB,EAAE;gCACnE,cAAc,EAAE,QAAQ,CAAC,MAAM;gCAC/B,mBAAmB;gCACnB,qBAAqB,EAAE,eAAe;gCACtC,QAAQ,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC;oCAClC,EAAE,EAAE,CAAC,CAAC,EAAE;oCACR,cAAc,EAAE,CAAC,CAAC,cAAc;oCAChC,gBAAgB,EAAE,CAAC,CAAC,gBAAgB;oCACpC,OAAO,EAAE,CAAC,CAAC,OAAO;iCACnB,CAAC,CAAC;6BACJ,CAAC,CAAC;4BAEH,oEAAoE;4BACpE,6DAA6D;4BAC7D,qFAAqF;4BACrF,MAAM,yBAAyB,GAAG,mBAAmB,IAAI,eAAe,CAAC;4BAEzE,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAQ,EAAE,EAAE;gCACvE,MAAM,SAAS,GAAG,GAAG,CAAC,OAAO,KAAK,IAAI,IAAI,GAAG,CAAC,OAAO,KAAK,SAAS,CAAC;gCACpE,MAAM,WAAW,GAAG,GAAG,CAAC,gBAAgB,KAAK,yBAAyB,CAAC;gCACvE,OAAO,CAAC,GAAG,CAAC,oCAAoC,EAAE;oCAChD,UAAU,EAAE,GAAG,CAAC,EAAE;oCAClB,SAAS;oCACT,WAAW;oCACX,gBAAgB,EAAE,GAAG,CAAC,gBAAgB;oCACtC,yBAAyB;oCACzB,OAAO,EAAE,GAAG,CAAC,OAAO;iCACrB,CAAC,CAAC;gCACH,OAAO,SAAS,IAAI,WAAW,CAAC;4BAClC,CAAC,CAAC,CAAC;4BAEH,OAAO,CAAC,GAAG,CAAC,6BAA6B,QAAQ,cAAc,EAAE,UAAU,CAAC,CAAC;4BAE7E,IAAI,UAAU,EAAE,CAAC;gCACf,oBAAoB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;4BACrC,CAAC;wBACH,CAAC;6BAAM,CAAC;4BACN,OAAO,CAAC,KAAK,CAAC,6BAA6B,QAAQ,eAAe,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;wBACvF,CAAC;oBACH,CAAC;oBAAC,OAAO,KAAK,EAAE,CAAC;wBACf,OAAO,CAAC,KAAK,CAAC,4CAA4C,QAAQ,GAAG,EAAE,KAAK,CAAC,CAAC;oBAChF,CAAC;gBACH,CAAC,CAAC,CAAC;gBAEH,MAAM,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;gBAElC,kDAAkD;gBAClD,MAAM,iBAAiB,GAA4B,EAAE,CAAC;gBACtD,MAAM,0BAA0B,GAAG,CAAC,UAAyB,EAAE,EAAE;oBAC/D,UAAU,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;wBAC3B,2EAA2E;wBAC3E,iBAAiB,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,oBAAoB,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;wBAEjE,qCAAqC;wBACrC,IAAI,KAAK,CAAC,UAAU,KAAK,OAAO,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;4BACrD,0BAA0B,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;wBAC/C,CAAC;oBACH,CAAC,CAAC,CAAC;gBACL,CAAC,CAAC;gBAEF,0BAA0B,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;gBAElD,OAAO,CAAC,GAAG,CAAC,2CAA2C,EAAE,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC;gBAC3F,OAAO,CAAC,GAAG,CAAC,wCAAwC,EAAE,iBAAiB,CAAC,CAAC;gBAEzE,uBAAuB,CAAC,iBAAiB,CAAC,CAAC;YAC7C,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,KAAK,CAAC,qDAAqD,EAAE,KAAK,CAAC,CAAC;gBAC5E,uBAAuB,CAAC,EAAE,CAAC,CAAC;YAC9B,CAAC;QACH,CAAC,CAAC;QAEF,qBAAqB,EAAE,CAAC;QAExB,8DAA8D;QAC9D,MAAM,WAAW,GAAG,WAAW,CAAC,qBAAqB,EAAE,IAAI,CAAC,CAAC;QAE7D,OAAO,GAAG,EAAE;YACV,aAAa,CAAC,WAAW,CAAC,CAAC;QAC7B,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,eAAe,EAAE,YAAY,EAAE,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC;IAE3D,yDAAyD;IACzD,MAAM,iBAAiB,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE;QAC3C,IAAI,YAAY,EAAE,CAAC;YACjB,OAAO,EAAE,GAAG,oBAAoB,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,GAAG,YAAY,EAAE,CAAC;QAC7E,CAAC;QACD,OAAO,oBAAoB,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;IACrD,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC,CAAC;IAE1C,MAAM,CAAC,SAAS,EAAE,mBAAmB,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAsB,iBAAiB,CAAC,CAAC;IAEhG,qBAAqB;IACrB,KAAK,CAAC,mBAAmB,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;QACpC,aAAa,EAAE,GAAG,EAAE,CAAC,SAAS;QAC9B,aAAa,EAAE,CAAC,IAAyB,EAAE,EAAE;YAC3C,mBAAmB,CAAC,IAAI,CAAC,CAAC;YAC1B,IAAI,mBAAmB,EAAE,CAAC;gBACxB,mBAAmB,CAAC,IAAI,CAAC,CAAC;YAC5B,CAAC;QACH,CAAC;QACD,UAAU,EAAE,GAAG,EAAE;YACf,mBAAmB,CAAC,iBAAiB,CAAC,CAAC;YACvC,IAAI,mBAAmB,EAAE,CAAC;gBACxB,mBAAmB,CAAC,iBAAiB,CAAC,CAAC;YACzC,CAAC;QACH,CAAC;KACF,CAAC,EAAE,CAAC,SAAS,EAAE,iBAAiB,EAAE,mBAAmB,CAAC,CAAC,CAAC;IAEzD;;OAEG;IACH,MAAM,mBAAmB,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC,QAAgB,EAAE,KAAU,EAAE,EAAE;QAC7E,mBAAmB,CAAC,CAAC,IAAI,EAAE,EAAE;YAC3B,MAAM,QAAQ,GAAG,EAAE,GAAG,IAAI,EAAE,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC;YAChD,IAAI,eAAe,EAAE,CAAC;gBACpB,eAAe,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;YACnC,CAAC;YACD,IAAI,mBAAmB,EAAE,CAAC;gBACxB,mBAAmB,CAAC,QAAQ,CAAC,CAAC;YAChC,CAAC;YACD,OAAO,QAAQ,CAAC;QAClB,CAAC,CAAC,CAAC;IACL,CAAC,EAAE,CAAC,eAAe,EAAE,mBAAmB,CAAC,CAAC,CAAC;IAE3C;;OAEG;IACH,MAAM,yBAAyB,GAAG,CAAC,YAA0B,EAAuB,EAAE;QACpF,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,KAAK,GAAwB,EAAE,CAAC;QAEtC,IAAI,YAAY,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;YAC5C,KAAK,CAAC,YAAY,GAAG,YAAY,CAAC,YAAY,CAAC;YAC/C,KAAK,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAAC,yCAAyC;QAC3E,CAAC;QACD,IAAI,YAAY,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;YAC5C,KAAK,CAAC,YAAY,GAAG,YAAY,CAAC,YAAY,CAAC;QACjD,CAAC;QACD,IAAI,YAAY,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;YAC5C,KAAK,CAAC,YAAY,GAAG,YAAY,CAAC,YAAY,CAAC;QACjD,CAAC;QACD,IAAI,YAAY,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;YACvC,KAAK,CAAC,OAAO,GAAG,YAAY,CAAC,OAAO,CAAC;QACvC,CAAC;QACD,IAAI,YAAY,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;YACvC,KAAK,CAAC,OAAO,GAAG,YAAY,CAAC,OAAO,CAAC;QACvC,CAAC;QACD,IAAI,YAAY,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YACrC,KAAK,CAAC,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC;QACnC,CAAC;QACD,IAAI,YAAY,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;YAC5C,KAAK,CAAC,YAAY,GAAG,YAAY,CAAC,YAAY,CAAC;QACjD,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC,CAAC;IAEF;;OAEG;IACH,MAAM,YAAY,GAAG,CAAC,KAAkB,EAAmB,EAAE;QAC3D,mBAAmB;QACnB,MAAM,oBAAoB,GAAG,gBAAgB,CAAC,KAAK,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;QAC3E,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAC1B,OAAO,IAAI,CAAC;QACd,CAAC;QAED,sBAAsB;QACtB,IAAI,KAAK,CAAC,UAAU,KAAK,OAAO,EAAE,CAAC;YACjC,IAAI,CAAC,KAAK,CAAC,UAAU,IAAI,KAAK,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACvD,OAAO,IAAI,CAAC;YACd,CAAC;YAED,OAAO,CACL,KAAC,mBAAmB,IAElB,KAAK,EAAE,KAAK,CAAC,KAAK,EAClB,aAAa,EAAE,KAAK,CAAC,EAAE,EACvB,UAAU,EAAE,KAAK,CAAC,KAAK,EACvB,YAAY,EAAE,KAAK,CAAC,YAAY,IAAI,UAAU,CAAC,YAAY,EAC3D,iBAAiB,EAAE,YAAY,EAC/B,0BAA0B,EAAE,YAAY,EACxC,iBAAiB,EAAE,mBAAmB,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,KAAK,YAExD,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,YAAY,CAAC,IAT9B,KAAK,CAAC,EAAE,CAUO,CACvB,CAAC;QACJ,CAAC;QAED,wBAAwB;QACxB,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC;YAC1B,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,SAAS,GAAG,aAAa,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;QACtD,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,OAAO,CAAC,IAAI,CAAC,2BAA2B,KAAK,CAAC,cAAc,EAAE,CAAC,CAAC;YAChE,OAAO,IAAI,CAAC;QACd,CAAC;QAED,4CAA4C;QAC5C,IAAI,sBAA0C,CAAC;QAC/C,IAAI,KAAK,CAAC,WAAW,KAAK,MAAM,EAAE,CAAC;YACjC,sBAAsB,GAAG,QAAQ,CAAC;QACpC,CAAC;aAAM,IAAI,KAAK,CAAC,WAAW,KAAK,MAAM,EAAE,CAAC;YACxC,sBAAsB,GAAG,QAAQ,CAAC;QACpC,CAAC;QAED,wCAAwC;QACxC,uFAAuF;QACvF,gFAAgF;QAChF,MAAM,WAAW,GAAG,oBAAoB,IAAI,KAAK,CAAC,QAAQ,KAAK,IAAI,CAAC;QAEpE,2DAA2D;QAC3D,MAAM,UAAU,GAAwB;YACtC,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,aAAa,EAAE,KAAK,CAAC,EAAE;YACvB,UAAU,EAAE,KAAK,CAAC,KAAK;YACvB,iBAAiB,EAAE,YAAY;YAC/B,0BAA0B,EAAE,YAAY;YACxC,YAAY,EAAE,KAAK,CAAC,YAAY,IAAI,UAAU,CAAC,YAAY;YAC3D,sBAAsB;YACtB,QAAQ,EAAE,WAAW;YACrB,iBAAiB,EAAE,mBAAmB,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,KAAK;SAC1D,CAAC;QAEF,2BAA2B;QAC3B,MAAM,aAAa,GAAG,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC;QAEzD,IAAI,KAAK,CAAC,cAAc,KAAK,wBAAwB,EAAE,CAAC;YACtD,OAAO,CACL,KAAC,SAAS,OAEJ,UAAU,EACd,KAAK,EAAE,MAAM,CAAC,aAAa,CAAC,EAC5B,QAAQ,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,mBAAmB,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,EACjE,UAAU,EAAE,KAAK,CAAC,UAAU,KACxB,yBAAyB,CAAC,KAAK,CAAC,YAAY,CAAC,IAL5C,KAAK,CAAC,EAAE,CAMb,CACH,CAAC;QACJ,CAAC;QAED,IAAI,KAAK,CAAC,cAAc,KAAK,wBAAwB,EAAE,CAAC;YACtD,OAAO,CACL,KAAC,SAAS,OAEJ,UAAU,EACd,KAAK,EAAE,MAAM,CAAC,aAAa,CAAC,EAC5B,QAAQ,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,mBAAmB,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,IAH5D,KAAK,CAAC,EAAE,CAIb,CACH,CAAC;QACJ,CAAC;QAED,IAAI,KAAK,CAAC,cAAc,KAAK,wBAAwB,EAAE,CAAC;YACtD,gCAAgC;YAChC,MAAM,OAAO,GAAG,OAAO,aAAa,KAAK,SAAS;gBAChD,CAAC,CAAC,aAAa;gBACf,CAAC,CAAC,aAAa,KAAK,MAAM,IAAI,aAAa,KAAK,IAAI,IAAI,MAAM,CAAC,aAAa,CAAC,CAAC,WAAW,EAAE,KAAK,MAAM,CAAC;YAEzG,OAAO,CACL,KAAC,SAAS,OAEJ,UAAU,EACd,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,CAAC,OAAgB,EAAE,EAAE,CAAC,mBAAmB,CAAC,KAAK,CAAC,EAAE,EAAE,OAAO,CAAC,IAHjE,KAAK,CAAC,EAAE,CAIb,CACH,CAAC;QACJ,CAAC;QAED,IAAI,KAAK,CAAC,cAAc,KAAK,qBAAqB,IAAI,KAAK,CAAC,cAAc,KAAK,qBAAqB,EAAE,CAAC;YACrG,oDAAoD;YACpD,MAAM,OAAO,GAAqC,CAAC,KAAK,CAAC,aAAa,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBACxF,KAAK,EAAE,GAAG,CAAC,KAAK;gBAChB,KAAK,EAAE,GAAG,CAAC,KAAK;aACjB,CAAC,CAAC,CAAC;YAEJ,OAAO,CACL,KAAC,SAAS,OAEJ,UAAU,EACd,KAAK,EAAE,MAAM,CAAC,aAAa,CAAC,EAC5B,QAAQ,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,mBAAmB,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,EACjE,OAAO,EAAE,OAAO,IAJX,KAAK,CAAC,EAAE,CAKb,CACH,CAAC;QACJ,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC,CAAC;IAEF,OAAO,CACL,eAAK,SAAS,EAAC,yCAAyC,aACtD,aAAI,SAAS,EAAC,uDAAuD,YAClE,UAAU,CAAC,UAAU,GACnB,EACL,cAAK,SAAS,EAAC,sCAAsC,YAClD,UAAU,CAAC,UAAU,CAAC,GAAG,CAAC,YAAY,CAAC,GACpC,IACF,CACP,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,iBAAiB,CAAC,WAAW,GAAG,mBAAmB,CAAC"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Collaboration form textarea component
|
|
3
|
+
* Provides a reusable textarea field with label, error message, and chat icon functionality
|
|
4
|
+
*/
|
|
5
|
+
import React from 'react';
|
|
6
|
+
import { type CollabFormFieldBaseProps, type FileData } from './hazo_collab_form_base.js';
|
|
7
|
+
/**
|
|
8
|
+
* Props for the HazoCollabFormTextArea component
|
|
9
|
+
*/
|
|
10
|
+
export interface HazoCollabFormTextAreaProps extends Omit<React.TextareaHTMLAttributes<HTMLTextAreaElement>, 'value' | 'onChange'>, CollabFormFieldBaseProps {
|
|
11
|
+
/**
|
|
12
|
+
* Current value of the textarea
|
|
13
|
+
*/
|
|
14
|
+
value: string;
|
|
15
|
+
/**
|
|
16
|
+
* Callback when textarea value changes
|
|
17
|
+
*/
|
|
18
|
+
onChange: (value: string) => void;
|
|
19
|
+
/**
|
|
20
|
+
* Additional context data for chat functionality
|
|
21
|
+
*/
|
|
22
|
+
additional_context?: Record<string, unknown>;
|
|
23
|
+
/**
|
|
24
|
+
* Custom className for the textarea wrapper
|
|
25
|
+
*/
|
|
26
|
+
textarea_wrapper_class_name?: string;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Exposed methods for HazoCollabFormTextArea
|
|
30
|
+
*/
|
|
31
|
+
export interface HazoCollabFormTextAreaRef {
|
|
32
|
+
/**
|
|
33
|
+
* Get the current files data
|
|
34
|
+
* Returns array of FileData objects
|
|
35
|
+
*/
|
|
36
|
+
get_file_data: () => FileData[];
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Collaboration form textarea component
|
|
40
|
+
* Displays a labeled textarea field with error message and chat icon
|
|
41
|
+
*/
|
|
42
|
+
export declare const HazoCollabFormTextArea: React.ForwardRefExoticComponent<HazoCollabFormTextAreaProps & React.RefAttributes<HTMLTextAreaElement & HazoCollabFormTextAreaRef>>;
|
|
43
|
+
//# sourceMappingURL=hazo_collab_form_textarea.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hazo_collab_form_textarea.d.ts","sourceRoot":"","sources":["../../src/components/hazo_collab_form_textarea.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAQL,KAAK,wBAAwB,EAC7B,KAAK,QAAQ,EACd,MAAM,4BAA4B,CAAC;AAEpC;;GAEG;AACH,MAAM,WAAW,2BACf,SAAQ,IAAI,CAAC,KAAK,CAAC,sBAAsB,CAAC,mBAAmB,CAAC,EAAE,OAAO,GAAG,UAAU,CAAC,EACnF,wBAAwB;IAC1B;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IAEd;;OAEG;IACH,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAElC;;OAEG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAE7C;;OAEG;IACH,2BAA2B,CAAC,EAAE,MAAM,CAAC;CACtC;AAED;;GAEG;AACH,MAAM,WAAW,yBAAyB;IACxC;;;OAGG;IACH,aAAa,EAAE,MAAM,QAAQ,EAAE,CAAC;CACjC;AAED;;;GAGG;AACH,eAAO,MAAM,sBAAsB,qIAiOjC,CAAC"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Collaboration form textarea component
|
|
3
|
+
* Provides a reusable textarea field with label, error message, and chat icon functionality
|
|
4
|
+
*/
|
|
5
|
+
'use client';
|
|
6
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
7
|
+
import React from 'react';
|
|
8
|
+
import { cn } from '../utils/cn.js';
|
|
9
|
+
import { use_collab_form_field, CollabFormFieldContainer, CollabFormFieldLabel, CollabFormChatIcon, CollabFormFieldError, CollabFormDataOkCheckbox, CollabFormFileUploadSection, } from './hazo_collab_form_base.js';
|
|
10
|
+
/**
|
|
11
|
+
* Collaboration form textarea component
|
|
12
|
+
* Displays a labeled textarea field with error message and chat icon
|
|
13
|
+
*/
|
|
14
|
+
export const HazoCollabFormTextArea = React.forwardRef((props, ref) => {
|
|
15
|
+
// Create internal ref for component reference (for file_processor)
|
|
16
|
+
const component_ref = React.useRef(null);
|
|
17
|
+
const [internal_files, set_internal_files] = React.useState([]);
|
|
18
|
+
// Use controlled files if provided, otherwise use internal state
|
|
19
|
+
const current_files = props.files !== undefined ? props.files : internal_files;
|
|
20
|
+
// Expose get_file_data method and forward ref to textarea element
|
|
21
|
+
React.useImperativeHandle(ref, () => {
|
|
22
|
+
return {
|
|
23
|
+
...component_ref.current,
|
|
24
|
+
get_file_data: () => current_files,
|
|
25
|
+
};
|
|
26
|
+
}, [current_files]);
|
|
27
|
+
const { label, error, field_id, field_data_id, field_name, value, onChange, additional_context, on_chat_click, has_chat_messages, is_chat_active, chat_background_color = 'bg-muted', is_data_ok_default, container_class_name, label_class_name, textarea_wrapper_class_name, error_class_name, field_width_class_name, required, multi_state_radio, data_ok_checked, on_data_ok_change, data_ok_editable, disable_data_ok, disable_chat, accept_files, files_dir, max_size, min_files, max_files, file_accept, file_processor, files: controlled_files_prop, on_files_change, className, id,
|
|
28
|
+
// HazoChat props
|
|
29
|
+
hazo_chat_receiver_user_id, recipient_user_id, hazo_chat_reference_id, hazo_chat_reference_type, hazo_chat_api_base_url, hazo_chat_timezone, hazo_chat_title, hazo_chat_subtitle, hazo_chat_realtime_mode, hazo_chat_polling_interval, hazo_chat_messages_per_page, hazo_chat_class_name, hazo_chat_on_close, hazo_chat_is_open, hazo_chat_on_open_change, hazo_chat_show_sidebar_toggle, hazo_chat_show_delete_button, hazo_chat_bubble_radius, ...textarea_props } = props;
|
|
30
|
+
const { field_id_final, handle_chat_icon_click, chat_is_open, is_chat_disabled } = use_collab_form_field({
|
|
31
|
+
label,
|
|
32
|
+
field_id,
|
|
33
|
+
id,
|
|
34
|
+
field_data_id,
|
|
35
|
+
field_name,
|
|
36
|
+
on_chat_click,
|
|
37
|
+
hazo_chat_receiver_user_id,
|
|
38
|
+
recipient_user_id,
|
|
39
|
+
hazo_chat_on_open_change,
|
|
40
|
+
hazo_chat_is_open,
|
|
41
|
+
});
|
|
42
|
+
// Determine if field should be disabled when chat is active
|
|
43
|
+
// Use is_chat_active if provided, otherwise use chat_is_open
|
|
44
|
+
const is_field_disabled = is_chat_active !== undefined ? is_chat_active : chat_is_open;
|
|
45
|
+
/**
|
|
46
|
+
* Handle textarea change event
|
|
47
|
+
*/
|
|
48
|
+
const handle_change = (e) => {
|
|
49
|
+
onChange(e.target.value);
|
|
50
|
+
};
|
|
51
|
+
return (_jsxs(CollabFormFieldContainer, { has_chat_messages: has_chat_messages, is_chat_active: is_chat_active, chat_background_color: chat_background_color, is_data_ok_default: is_data_ok_default, container_class_name: container_class_name, hazo_chat_is_open: chat_is_open, hazo_chat_receiver_user_id: hazo_chat_receiver_user_id, recipient_user_id: recipient_user_id, hazo_chat_reference_id: hazo_chat_reference_id, hazo_chat_reference_type: hazo_chat_reference_type, hazo_chat_api_base_url: hazo_chat_api_base_url, hazo_chat_timezone: hazo_chat_timezone, hazo_chat_title: hazo_chat_title, hazo_chat_subtitle: hazo_chat_subtitle, hazo_chat_realtime_mode: hazo_chat_realtime_mode, hazo_chat_polling_interval: hazo_chat_polling_interval, hazo_chat_messages_per_page: hazo_chat_messages_per_page, hazo_chat_class_name: hazo_chat_class_name, hazo_chat_on_close: hazo_chat_on_close, hazo_chat_on_open_change: hazo_chat_on_open_change, hazo_chat_show_sidebar_toggle: hazo_chat_show_sidebar_toggle, hazo_chat_show_delete_button: hazo_chat_show_delete_button, hazo_chat_bubble_radius: hazo_chat_bubble_radius, field_data_id: field_data_id, field_name: field_name, label: label, files: current_files, children: [_jsx(CollabFormFieldLabel, { field_id_final: field_id_final, label: label, label_class_name: label_class_name, required: required }), _jsxs("div", { className: cn('cls_collab_textarea_wrapper flex items-start gap-2', textarea_wrapper_class_name), children: [_jsx("div", { className: cn(field_width_class_name || 'flex-1', field_width_class_name && 'flex-shrink-0'), children: _jsx("textarea", { ref: component_ref, id: field_id_final, value: value, onChange: handle_change, disabled: is_field_disabled, className: cn('cls_collab_textarea w-full min-h-[100px] rounded-md border border-input bg-transparent px-3 py-2 text-base shadow-sm transition-colors placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 md:text-sm resize-y', error && 'border-destructive focus-visible:ring-destructive', className), "aria-invalid": error ? 'true' : 'false', "aria-describedby": error ? `${field_id_final}-error` : undefined, ...textarea_props }) }), _jsxs("div", { className: "cls_collab_textarea_actions flex items-start gap-2 flex-shrink-0 pt-1", suppressHydrationWarning: true, children: [!disable_data_ok && (_jsx(CollabFormDataOkCheckbox, { label: label, data_ok_checked: data_ok_checked, on_data_ok_change: on_data_ok_change, editable: data_ok_editable })), !disable_chat && (_jsx(CollabFormChatIcon, { label: label, error: error, on_click: handle_chat_icon_click, multi_state_radio: multi_state_radio, has_chat_messages: has_chat_messages, disabled: disable_chat, button_disabled: is_chat_disabled }))] })] }), _jsx(CollabFormFieldError, { field_id_final: field_id_final, error: error, error_class_name: error_class_name }), _jsx(CollabFormFileUploadSection, { field_id_final: field_id_final, accept_files: accept_files, files_dir: files_dir, max_size: max_size, min_files: min_files, max_files: max_files, file_accept: file_accept, file_processor: file_processor, files: current_files, on_files_change: (new_files) => {
|
|
52
|
+
if (controlled_files_prop === undefined) {
|
|
53
|
+
set_internal_files(new_files);
|
|
54
|
+
}
|
|
55
|
+
if (on_files_change) {
|
|
56
|
+
on_files_change(new_files);
|
|
57
|
+
}
|
|
58
|
+
}, component_ref: component_ref })] }));
|
|
59
|
+
});
|
|
60
|
+
HazoCollabFormTextArea.displayName = 'HazoCollabFormTextArea';
|
|
61
|
+
//# sourceMappingURL=hazo_collab_form_textarea.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hazo_collab_form_textarea.js","sourceRoot":"","sources":["../../src/components/hazo_collab_form_textarea.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* React components for collaboration forms
|
|
3
|
+
*/
|
|
4
|
+
export { HazoCollabFormInputbox } from './hazo_collab_form_inputbox.js';
|
|
5
|
+
export type { HazoCollabFormInputboxProps, HazoCollabFormInputboxRef } from './hazo_collab_form_inputbox.js';
|
|
6
|
+
export { HazoCollabFormTextArea } from './hazo_collab_form_textarea.js';
|
|
7
|
+
export type { HazoCollabFormTextAreaProps, HazoCollabFormTextAreaRef } from './hazo_collab_form_textarea.js';
|
|
8
|
+
export { HazoCollabFormCheckbox } from './hazo_collab_form_checkbox.js';
|
|
9
|
+
export type { HazoCollabFormCheckboxProps, HazoCollabFormCheckboxRef } from './hazo_collab_form_checkbox.js';
|
|
10
|
+
export { HazoCollabFormCombo } from './hazo_collab_form_combo.js';
|
|
11
|
+
export type { HazoCollabFormComboProps, HazoCollabFormComboRef, ComboboxOption } from './hazo_collab_form_combo.js';
|
|
12
|
+
export { HazoCollabFormRadio } from './hazo_collab_form_radio.js';
|
|
13
|
+
export type { HazoCollabFormRadioProps, HazoCollabFormRadioRef, RadioOption } from './hazo_collab_form_radio.js';
|
|
14
|
+
export { HazoCollabFormGroup } from './hazo_collab_form_group.js';
|
|
15
|
+
export type { HazoCollabFormGroupProps, HazoCollabFormGroupRef } from './hazo_collab_form_group.js';
|
|
16
|
+
export { DataOkCheckbox } from './data_ok_checkbox.js';
|
|
17
|
+
export type { DataOkCheckboxProps } from './data_ok_checkbox.js';
|
|
18
|
+
export { CollabFormDataOkCheckbox } from './hazo_collab_form_base.js';
|
|
19
|
+
export { HazoCollabFormSet } from './hazo_collab_form_set.js';
|
|
20
|
+
export type { HazoCollabFormSetProps, HazoCollabFormSetRef, FieldsSet, FieldConfig, InputFormat, InputOption, } from './hazo_collab_form_set.js';
|
|
21
|
+
export { HazoCollabFormDate } from './hazo_collab_form_date.js';
|
|
22
|
+
export type { HazoCollabFormDateProps, HazoCollabFormDateRef, DateRangeValue } from './hazo_collab_form_date.js';
|
|
23
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AACxE,YAAY,EAAE,2BAA2B,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAE7G,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AACxE,YAAY,EAAE,2BAA2B,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAE7G,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AACxE,YAAY,EAAE,2BAA2B,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAE7G,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAClE,YAAY,EAAE,wBAAwB,EAAE,sBAAsB,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAEpH,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAClE,YAAY,EAAE,wBAAwB,EAAE,sBAAsB,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAEjH,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAClE,YAAY,EAAE,wBAAwB,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAEpG,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,YAAY,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAEjE,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AAEtE,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,YAAY,EACV,sBAAsB,EACtB,oBAAoB,EACpB,SAAS,EACT,WAAW,EACX,WAAW,EACX,WAAW,GACZ,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,YAAY,EAAE,uBAAuB,EAAE,qBAAqB,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* React components for collaboration forms
|
|
3
|
+
*/
|
|
4
|
+
export { HazoCollabFormInputbox } from './hazo_collab_form_inputbox.js';
|
|
5
|
+
export { HazoCollabFormTextArea } from './hazo_collab_form_textarea.js';
|
|
6
|
+
export { HazoCollabFormCheckbox } from './hazo_collab_form_checkbox.js';
|
|
7
|
+
export { HazoCollabFormCombo } from './hazo_collab_form_combo.js';
|
|
8
|
+
export { HazoCollabFormRadio } from './hazo_collab_form_radio.js';
|
|
9
|
+
export { HazoCollabFormGroup } from './hazo_collab_form_group.js';
|
|
10
|
+
export { DataOkCheckbox } from './data_ok_checkbox.js';
|
|
11
|
+
export { CollabFormDataOkCheckbox } from './hazo_collab_form_base.js';
|
|
12
|
+
export { HazoCollabFormSet } from './hazo_collab_form_set.js';
|
|
13
|
+
export { HazoCollabFormDate } from './hazo_collab_form_date.js';
|
|
14
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AAGxE,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AAGxE,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AAGxE,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAGlE,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAGlE,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAGlE,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAGvD,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AAEtE,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAU9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Client-side entry point for hazo_collab_forms package
|
|
3
|
+
* Exports only client-safe components and utilities (excludes server-only lib)
|
|
4
|
+
*/
|
|
5
|
+
export * from './components/index.js';
|
|
6
|
+
export * from './utils/index.js';
|
|
7
|
+
//# sourceMappingURL=index.client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.client.d.ts","sourceRoot":"","sources":["../src/index.client.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,cAAc,uBAAuB,CAAC;AACtC,cAAc,kBAAkB,CAAC"}
|