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,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Collaboration form checkbox component
|
|
3
|
+
* Provides a reusable checkbox 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 HazoCollabFormCheckbox component
|
|
9
|
+
*/
|
|
10
|
+
export interface HazoCollabFormCheckboxProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'value' | 'onChange' | 'type'>, CollabFormFieldBaseProps {
|
|
11
|
+
/**
|
|
12
|
+
* Current checked state of the checkbox
|
|
13
|
+
*/
|
|
14
|
+
checked: boolean;
|
|
15
|
+
/**
|
|
16
|
+
* Callback when checkbox state changes
|
|
17
|
+
*/
|
|
18
|
+
onChange: (checked: boolean) => void;
|
|
19
|
+
/**
|
|
20
|
+
* Label text that appears next to the checkbox
|
|
21
|
+
* If not provided, falls back to the base label prop
|
|
22
|
+
*/
|
|
23
|
+
checkbox_label?: string;
|
|
24
|
+
/**
|
|
25
|
+
* Additional context data for chat functionality
|
|
26
|
+
*/
|
|
27
|
+
additional_context?: Record<string, unknown>;
|
|
28
|
+
/**
|
|
29
|
+
* Custom className for the checkbox wrapper
|
|
30
|
+
*/
|
|
31
|
+
checkbox_wrapper_class_name?: string;
|
|
32
|
+
/**
|
|
33
|
+
* Custom className for the checkbox-specific label (next to checkbox)
|
|
34
|
+
*/
|
|
35
|
+
checkbox_label_class_name?: string;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Exposed methods for HazoCollabFormCheckbox
|
|
39
|
+
*/
|
|
40
|
+
export interface HazoCollabFormCheckboxRef {
|
|
41
|
+
/**
|
|
42
|
+
* Get the current files data
|
|
43
|
+
* Returns array of FileData objects
|
|
44
|
+
*/
|
|
45
|
+
get_file_data: () => FileData[];
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Collaboration form checkbox component
|
|
49
|
+
* Displays a labeled checkbox field with error message and chat icon
|
|
50
|
+
*/
|
|
51
|
+
export declare const HazoCollabFormCheckbox: React.ForwardRefExoticComponent<HazoCollabFormCheckboxProps & React.RefAttributes<HTMLInputElement & HazoCollabFormCheckboxRef>>;
|
|
52
|
+
//# sourceMappingURL=hazo_collab_form_checkbox.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hazo_collab_form_checkbox.d.ts","sourceRoot":"","sources":["../../src/components/hazo_collab_form_checkbox.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,mBAAmB,CAAC,gBAAgB,CAAC,EAAE,OAAO,GAAG,UAAU,GAAG,MAAM,CAAC,EACtF,wBAAwB;IAC1B;;OAEG;IACH,OAAO,EAAE,OAAO,CAAC;IAEjB;;OAEG;IACH,QAAQ,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IAErC;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB;;OAEG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAE7C;;OAEG;IACH,2BAA2B,CAAC,EAAE,MAAM,CAAC;IAErC;;OAEG;IACH,yBAAyB,CAAC,EAAE,MAAM,CAAC;CACpC;AAED;;GAEG;AACH,MAAM,WAAW,yBAAyB;IACxC;;;OAGG;IACH,aAAa,EAAE,MAAM,QAAQ,EAAE,CAAC;CACjC;AAED;;;GAGG;AACH,eAAO,MAAM,sBAAsB,kIA6OjC,CAAC"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Collaboration form checkbox component
|
|
3
|
+
* Provides a reusable checkbox 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 checkbox component
|
|
12
|
+
* Displays a labeled checkbox field with error message and chat icon
|
|
13
|
+
*/
|
|
14
|
+
export const HazoCollabFormCheckbox = 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 checkbox 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, checked, onChange, checkbox_label, 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, checkbox_wrapper_class_name, checkbox_label_class_name, error_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, 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, ...checkbox_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_chat_active_disabled = is_chat_active !== undefined ? is_chat_active : chat_is_open;
|
|
45
|
+
// Combine with existing disabled prop from checkbox_props if it exists
|
|
46
|
+
const is_field_disabled = (checkbox_props?.disabled) || is_chat_active_disabled;
|
|
47
|
+
/**
|
|
48
|
+
* Handle checkbox change event
|
|
49
|
+
*/
|
|
50
|
+
const handle_change = (e) => {
|
|
51
|
+
onChange(e.target.checked);
|
|
52
|
+
};
|
|
53
|
+
// Use checkbox_label if provided, otherwise fall back to label
|
|
54
|
+
const checkbox_label_text = checkbox_label ?? label;
|
|
55
|
+
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_checkbox_wrapper flex items-center gap-2', checkbox_wrapper_class_name), suppressHydrationWarning: true, children: [_jsx("input", { ref: component_ref, id: field_id_final, type: "checkbox", checked: checked, onChange: handle_change, disabled: is_field_disabled, className: cn('cls_collab_checkbox h-4 w-4 rounded border border-input bg-transparent text-primary shadow-sm transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50', error && 'border-destructive focus-visible:ring-destructive', className), "aria-invalid": error ? 'true' : 'false', "aria-describedby": error ? `${field_id_final}-error` : undefined, ...checkbox_props }), _jsx("label", { htmlFor: field_id_final, className: cn('cls_collab_checkbox_label text-sm font-medium leading-none cursor-pointer peer-disabled:cursor-not-allowed peer-disabled:opacity-70 flex-1', checkbox_label_class_name), children: checkbox_label_text }), _jsxs("div", { className: "cls_collab_checkbox_actions flex items-center gap-2 flex-shrink-0", 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) => {
|
|
56
|
+
if (controlled_files === undefined) {
|
|
57
|
+
set_internal_files(new_files);
|
|
58
|
+
}
|
|
59
|
+
if (on_files_change) {
|
|
60
|
+
on_files_change(new_files);
|
|
61
|
+
}
|
|
62
|
+
}, component_ref: component_ref })] }));
|
|
63
|
+
});
|
|
64
|
+
HazoCollabFormCheckbox.displayName = 'HazoCollabFormCheckbox';
|
|
65
|
+
//# sourceMappingURL=hazo_collab_form_checkbox.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hazo_collab_form_checkbox.js","sourceRoot":"","sources":["../../src/components/hazo_collab_form_checkbox.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Collaboration form combobox component
|
|
3
|
+
* Provides a reusable combobox field with label, error message, and chat icon functionality
|
|
4
|
+
*
|
|
5
|
+
* NOTE: This component requires shadcn/ui Popover and Command components to be installed
|
|
6
|
+
* in the consuming application. Install them with:
|
|
7
|
+
* npx shadcn@latest add popover command
|
|
8
|
+
*
|
|
9
|
+
* Also requires lucide-react for icons (Check, ChevronsUpDown)
|
|
10
|
+
*/
|
|
11
|
+
import React from 'react';
|
|
12
|
+
import { type CollabFormFieldBaseProps, type FileData } from './hazo_collab_form_base.js';
|
|
13
|
+
/**
|
|
14
|
+
* Option type for combobox
|
|
15
|
+
*/
|
|
16
|
+
export interface ComboboxOption {
|
|
17
|
+
/**
|
|
18
|
+
* Value of the option
|
|
19
|
+
*/
|
|
20
|
+
value: string;
|
|
21
|
+
/**
|
|
22
|
+
* Label to display for the option
|
|
23
|
+
*/
|
|
24
|
+
label: string;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Props for the HazoCollabFormCombo component
|
|
28
|
+
*/
|
|
29
|
+
export interface HazoCollabFormComboProps extends CollabFormFieldBaseProps {
|
|
30
|
+
/**
|
|
31
|
+
* Array of options to display in the combobox
|
|
32
|
+
*/
|
|
33
|
+
options: ComboboxOption[];
|
|
34
|
+
/**
|
|
35
|
+
* Current selected value
|
|
36
|
+
*/
|
|
37
|
+
value: string;
|
|
38
|
+
/**
|
|
39
|
+
* Callback when selection changes
|
|
40
|
+
*/
|
|
41
|
+
onChange: (value: string) => void;
|
|
42
|
+
/**
|
|
43
|
+
* Placeholder text when no option is selected
|
|
44
|
+
*/
|
|
45
|
+
placeholder?: string;
|
|
46
|
+
/**
|
|
47
|
+
* Placeholder text for the search input
|
|
48
|
+
*/
|
|
49
|
+
search_placeholder?: string;
|
|
50
|
+
/**
|
|
51
|
+
* Message to show when no options are found
|
|
52
|
+
*/
|
|
53
|
+
empty_message?: string;
|
|
54
|
+
/**
|
|
55
|
+
* Whether to enable the search input bar
|
|
56
|
+
* Default: false (search bar hidden)
|
|
57
|
+
*/
|
|
58
|
+
enable_search?: boolean;
|
|
59
|
+
/**
|
|
60
|
+
* Additional context data for chat functionality
|
|
61
|
+
*/
|
|
62
|
+
additional_context?: Record<string, unknown>;
|
|
63
|
+
/**
|
|
64
|
+
* Custom className for the combobox wrapper
|
|
65
|
+
*/
|
|
66
|
+
combo_wrapper_class_name?: string;
|
|
67
|
+
/**
|
|
68
|
+
* Custom className for the button trigger
|
|
69
|
+
*/
|
|
70
|
+
button_class_name?: string;
|
|
71
|
+
/**
|
|
72
|
+
* Whether the combobox is disabled
|
|
73
|
+
*/
|
|
74
|
+
disabled?: boolean;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Exposed methods for HazoCollabFormCombo
|
|
78
|
+
*/
|
|
79
|
+
export interface HazoCollabFormComboRef {
|
|
80
|
+
/**
|
|
81
|
+
* Get the current files data
|
|
82
|
+
* Returns array of FileData objects
|
|
83
|
+
*/
|
|
84
|
+
get_file_data: () => FileData[];
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Collaboration form combobox component
|
|
88
|
+
* Displays a labeled combobox field with error message and chat icon
|
|
89
|
+
*/
|
|
90
|
+
export declare const HazoCollabFormCombo: React.ForwardRefExoticComponent<HazoCollabFormComboProps & React.RefAttributes<HTMLButtonElement & HazoCollabFormComboRef>>;
|
|
91
|
+
//# sourceMappingURL=hazo_collab_form_combo.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hazo_collab_form_combo.d.ts","sourceRoot":"","sources":["../../src/components/hazo_collab_form_combo.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,OAAO,KAA8B,MAAM,OAAO,CAAC;AAEnD,OAAO,EAQL,KAAK,wBAAwB,EAC7B,KAAK,QAAQ,EACd,MAAM,4BAA4B,CAAC;AAEpC;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IAEd;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,MAAM,WAAW,wBAAyB,SAAQ,wBAAwB;IACxE;;OAEG;IACH,OAAO,EAAE,cAAc,EAAE,CAAC;IAE1B;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IAEd;;OAEG;IACH,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAElC;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;OAEG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAE5B;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB;;OAEG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAE7C;;OAEG;IACH,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAElC;;OAEG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAE3B;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC;;;OAGG;IACH,aAAa,EAAE,MAAM,QAAQ,EAAE,CAAC;CACjC;AAED;;;GAGG;AACH,eAAO,MAAM,mBAAmB,6HAwhB9B,CAAC"}
|
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Collaboration form combobox component
|
|
3
|
+
* Provides a reusable combobox field with label, error message, and chat icon functionality
|
|
4
|
+
*
|
|
5
|
+
* NOTE: This component requires shadcn/ui Popover and Command components to be installed
|
|
6
|
+
* in the consuming application. Install them with:
|
|
7
|
+
* npx shadcn@latest add popover command
|
|
8
|
+
*
|
|
9
|
+
* Also requires lucide-react for icons (Check, ChevronsUpDown)
|
|
10
|
+
*/
|
|
11
|
+
'use client';
|
|
12
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
13
|
+
import React, { useState, useEffect } from 'react';
|
|
14
|
+
import { cn } from '../utils/cn.js';
|
|
15
|
+
import { use_collab_form_field, CollabFormFieldContainer, CollabFormFieldLabel, CollabFormChatIcon, CollabFormFieldError, CollabFormDataOkCheckbox, CollabFormFileUploadSection, } from './hazo_collab_form_base.js';
|
|
16
|
+
/**
|
|
17
|
+
* Collaboration form combobox component
|
|
18
|
+
* Displays a labeled combobox field with error message and chat icon
|
|
19
|
+
*/
|
|
20
|
+
export const HazoCollabFormCombo = React.forwardRef((props, ref) => {
|
|
21
|
+
// Create internal ref for component reference (for file_processor)
|
|
22
|
+
const component_ref = React.useRef(null);
|
|
23
|
+
const [internal_files, set_internal_files] = React.useState([]);
|
|
24
|
+
// Use controlled files if provided, otherwise use internal state
|
|
25
|
+
const current_files = props.files !== undefined ? props.files : internal_files;
|
|
26
|
+
// Expose get_file_data method and forward ref to button element
|
|
27
|
+
React.useImperativeHandle(ref, () => {
|
|
28
|
+
return {
|
|
29
|
+
...component_ref.current,
|
|
30
|
+
get_file_data: () => current_files,
|
|
31
|
+
};
|
|
32
|
+
}, [current_files]);
|
|
33
|
+
const { label, error, field_id, field_data_id, field_name, options, value, onChange, placeholder = 'Select an option...', search_placeholder = 'Search...', empty_message = 'No option found.', enable_search = false, 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, combo_wrapper_class_name, button_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, on_files_change, disabled, id,
|
|
34
|
+
// HazoChat props
|
|
35
|
+
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, } = props;
|
|
36
|
+
const [open, set_open] = useState(false);
|
|
37
|
+
const { field_id_final, handle_chat_icon_click, chat_is_open, is_chat_disabled } = use_collab_form_field({
|
|
38
|
+
label,
|
|
39
|
+
field_id,
|
|
40
|
+
id,
|
|
41
|
+
field_data_id,
|
|
42
|
+
field_name,
|
|
43
|
+
on_chat_click,
|
|
44
|
+
hazo_chat_receiver_user_id,
|
|
45
|
+
recipient_user_id,
|
|
46
|
+
hazo_chat_on_open_change,
|
|
47
|
+
hazo_chat_is_open,
|
|
48
|
+
});
|
|
49
|
+
// Determine if field should be disabled when chat is active
|
|
50
|
+
// Use is_chat_active if provided, otherwise use chat_is_open
|
|
51
|
+
const is_chat_active_disabled = is_chat_active !== undefined ? is_chat_active : chat_is_open;
|
|
52
|
+
// Combine with existing disabled prop
|
|
53
|
+
const is_field_disabled = disabled || is_chat_active_disabled;
|
|
54
|
+
// Helper object for chat props to pass to CollabFormFieldContainer
|
|
55
|
+
const chat_container_props = {
|
|
56
|
+
hazo_chat_is_open: chat_is_open,
|
|
57
|
+
hazo_chat_receiver_user_id,
|
|
58
|
+
recipient_user_id,
|
|
59
|
+
hazo_chat_reference_id,
|
|
60
|
+
hazo_chat_reference_type,
|
|
61
|
+
hazo_chat_api_base_url,
|
|
62
|
+
hazo_chat_timezone,
|
|
63
|
+
hazo_chat_title,
|
|
64
|
+
hazo_chat_subtitle,
|
|
65
|
+
hazo_chat_realtime_mode,
|
|
66
|
+
hazo_chat_polling_interval,
|
|
67
|
+
hazo_chat_messages_per_page,
|
|
68
|
+
hazo_chat_class_name,
|
|
69
|
+
hazo_chat_on_close,
|
|
70
|
+
hazo_chat_on_open_change,
|
|
71
|
+
hazo_chat_show_sidebar_toggle,
|
|
72
|
+
hazo_chat_show_delete_button,
|
|
73
|
+
hazo_chat_bubble_radius,
|
|
74
|
+
field_data_id,
|
|
75
|
+
field_name,
|
|
76
|
+
label,
|
|
77
|
+
files: current_files,
|
|
78
|
+
};
|
|
79
|
+
/**
|
|
80
|
+
* Get the label for the selected value
|
|
81
|
+
*/
|
|
82
|
+
const selected_label = value
|
|
83
|
+
? options.find((option) => option.value === value)?.label || placeholder
|
|
84
|
+
: placeholder;
|
|
85
|
+
// Dynamic imports for shadcn components
|
|
86
|
+
// These will be resolved by the consuming application's bundler
|
|
87
|
+
const [Components, setComponents] = React.useState(null);
|
|
88
|
+
const [is_loading, set_is_loading] = React.useState(true);
|
|
89
|
+
useEffect(() => {
|
|
90
|
+
const loadComponents = async () => {
|
|
91
|
+
try {
|
|
92
|
+
set_is_loading(true);
|
|
93
|
+
// Try to import from consuming app's components directory
|
|
94
|
+
// This path will be resolved by Next.js/webpack in the consuming app
|
|
95
|
+
// @ts-expect-error - These modules are provided by the consuming application
|
|
96
|
+
const popoverModule = await import('@/components/ui/popover').catch(() => null);
|
|
97
|
+
// @ts-expect-error - These modules are provided by the consuming application
|
|
98
|
+
const commandModule = await import('@/components/ui/command').catch(() => null);
|
|
99
|
+
const lucideModule = await import('lucide-react').catch(() => null);
|
|
100
|
+
if (popoverModule && commandModule && lucideModule) {
|
|
101
|
+
setComponents({
|
|
102
|
+
Popover: popoverModule.Popover,
|
|
103
|
+
PopoverTrigger: popoverModule.PopoverTrigger,
|
|
104
|
+
PopoverContent: popoverModule.PopoverContent,
|
|
105
|
+
Command: commandModule.Command,
|
|
106
|
+
CommandInput: commandModule.CommandInput,
|
|
107
|
+
CommandList: commandModule.CommandList,
|
|
108
|
+
CommandEmpty: commandModule.CommandEmpty,
|
|
109
|
+
CommandGroup: commandModule.CommandGroup,
|
|
110
|
+
CommandItem: commandModule.CommandItem,
|
|
111
|
+
Check: lucideModule.Check,
|
|
112
|
+
ChevronsUpDown: lucideModule.ChevronsUpDown,
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
else {
|
|
116
|
+
console.warn('[HazoCollabFormCombo] shadcn Popover, Command, or lucide-react not found. ' +
|
|
117
|
+
'Please install them: npx shadcn@latest add popover command && npm install lucide-react');
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
catch (error) {
|
|
121
|
+
console.warn('[HazoCollabFormCombo] Error loading components:', error);
|
|
122
|
+
}
|
|
123
|
+
finally {
|
|
124
|
+
set_is_loading(false);
|
|
125
|
+
}
|
|
126
|
+
};
|
|
127
|
+
loadComponents();
|
|
128
|
+
}, []);
|
|
129
|
+
/**
|
|
130
|
+
* Handle option selection by value
|
|
131
|
+
* When an option is selected, call onChange with the option value
|
|
132
|
+
* If the same option is selected again, deselect it (empty value)
|
|
133
|
+
*/
|
|
134
|
+
const handle_select_by_value = React.useCallback((selected_value) => {
|
|
135
|
+
const new_value = selected_value === value ? '' : selected_value;
|
|
136
|
+
onChange(new_value);
|
|
137
|
+
set_open(false);
|
|
138
|
+
}, [value, onChange]);
|
|
139
|
+
/**
|
|
140
|
+
* Handle option selection by label (fallback)
|
|
141
|
+
* Used when CommandItem value is set to option.label for search
|
|
142
|
+
*/
|
|
143
|
+
const handle_select_by_label = React.useCallback((selected_label) => {
|
|
144
|
+
// Find the option by label (since CommandItem value is set to option.label for better search)
|
|
145
|
+
const matching_option = options.find((opt) => opt.label === selected_label);
|
|
146
|
+
if (matching_option) {
|
|
147
|
+
handle_select_by_value(matching_option.value);
|
|
148
|
+
}
|
|
149
|
+
}, [options, handle_select_by_value]);
|
|
150
|
+
// Show loading state while components are loading (prevents flash of error message)
|
|
151
|
+
if (is_loading) {
|
|
152
|
+
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, ...chat_container_props, 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_combo_wrapper flex items-center gap-2', combo_wrapper_class_name), suppressHydrationWarning: true, children: [_jsx("div", { className: cn(field_width_class_name || 'flex-1', field_width_class_name && 'flex-shrink-0'), children: _jsx("div", { className: cn('w-full h-9 rounded-md border border-input bg-transparent px-3 py-2 text-base shadow-sm md:text-sm flex items-center', error && 'border-destructive', button_class_name), children: _jsx("span", { className: cn('truncate text-muted-foreground'), children: placeholder }) }) }), !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) => {
|
|
153
|
+
if (controlled_files === undefined) {
|
|
154
|
+
set_internal_files(new_files);
|
|
155
|
+
}
|
|
156
|
+
if (on_files_change) {
|
|
157
|
+
on_files_change(new_files);
|
|
158
|
+
}
|
|
159
|
+
}, component_ref: component_ref })] }));
|
|
160
|
+
}
|
|
161
|
+
// Fallback UI if components failed to load
|
|
162
|
+
if (!Components) {
|
|
163
|
+
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, ...chat_container_props, 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_combo_wrapper flex items-center gap-2', combo_wrapper_class_name), suppressHydrationWarning: true, children: [_jsx("div", { className: cn(field_width_class_name || 'flex-1', field_width_class_name && 'flex-shrink-0'), children: _jsx("div", { className: "w-full h-9 rounded-md border border-destructive bg-transparent px-3 py-2 text-sm text-destructive", children: "shadcn Popover and Command components required. Install with: npx shadcn@latest add popover command" }) }), _jsx(CollabFormDataOkCheckbox, { label: label, data_ok_checked: data_ok_checked, on_data_ok_change: on_data_ok_change }), _jsx(CollabFormChatIcon, { label: label, error: error, on_click: handle_chat_icon_click, multi_state_radio: multi_state_radio, has_chat_messages: has_chat_messages, 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) => {
|
|
164
|
+
if (controlled_files === undefined) {
|
|
165
|
+
set_internal_files(new_files);
|
|
166
|
+
}
|
|
167
|
+
if (on_files_change) {
|
|
168
|
+
on_files_change(new_files);
|
|
169
|
+
}
|
|
170
|
+
}, component_ref: component_ref })] }));
|
|
171
|
+
}
|
|
172
|
+
const { Popover, PopoverTrigger, PopoverContent, Command, CommandInput, CommandList, CommandEmpty, CommandGroup, CommandItem, Check, ChevronsUpDown, } = Components;
|
|
173
|
+
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, ...chat_container_props, 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_combo_wrapper flex items-center gap-2', combo_wrapper_class_name), suppressHydrationWarning: true, children: [_jsx("div", { className: cn(field_width_class_name || 'flex-1', field_width_class_name && 'flex-shrink-0'), children: _jsxs(Popover, { open: open, onOpenChange: set_open, children: [_jsx(PopoverTrigger, { asChild: true, children: _jsxs("button", { ref: component_ref, type: "button", role: "combobox", "aria-expanded": open, "aria-controls": `${field_id_final}-combobox`, disabled: is_field_disabled, className: cn('cls_collab_combo_button w-full h-9 justify-between 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 flex items-center', error && 'border-destructive focus-visible:ring-destructive', button_class_name), "aria-invalid": error ? 'true' : 'false', "aria-describedby": error ? `${field_id_final}-error` : undefined, children: [_jsx("span", { className: cn('truncate', !value && 'text-muted-foreground'), children: selected_label }), _jsx(ChevronsUpDown, { className: "ml-2 h-4 w-4 shrink-0 opacity-50" })] }) }), _jsx(PopoverContent, { className: "w-[var(--radix-popover-trigger-width)] p-0", align: "start", id: `${field_id_final}-combobox`, children: _jsxs(Command, { children: [enable_search && (_jsx(CommandInput, { placeholder: search_placeholder, className: "h-9" })), _jsxs(CommandList, { children: [_jsx(CommandEmpty, { children: empty_message }), _jsx(CommandGroup, { children: options.map((option) => (_jsxs(CommandItem, { value: option.value, keywords: [option.label], onSelect: (currentValue) => {
|
|
174
|
+
console.log('[HazoCollabFormCombo] onSelect called with:', currentValue);
|
|
175
|
+
handle_select_by_value(currentValue);
|
|
176
|
+
}, onClick: (e) => {
|
|
177
|
+
// Fallback click handler
|
|
178
|
+
e.preventDefault();
|
|
179
|
+
e.stopPropagation();
|
|
180
|
+
console.log('[HazoCollabFormCombo] onClick called for:', option.value);
|
|
181
|
+
handle_select_by_value(option.value);
|
|
182
|
+
}, className: "cursor-pointer", style: { pointerEvents: 'auto', cursor: 'pointer' }, children: [_jsx(Check, { className: cn('mr-2 h-4 w-4', value === option.value ? 'opacity-100' : 'opacity-0') }), option.label] }, option.value))) })] })] }) })] }) }), !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) => {
|
|
183
|
+
if (controlled_files === undefined) {
|
|
184
|
+
set_internal_files(new_files);
|
|
185
|
+
}
|
|
186
|
+
if (on_files_change) {
|
|
187
|
+
on_files_change(new_files);
|
|
188
|
+
}
|
|
189
|
+
}, component_ref: component_ref })] }));
|
|
190
|
+
});
|
|
191
|
+
HazoCollabFormCombo.displayName = 'HazoCollabFormCombo';
|
|
192
|
+
//# sourceMappingURL=hazo_collab_form_combo.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hazo_collab_form_combo.js","sourceRoot":"","sources":["../../src/components/hazo_collab_form_combo.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,YAAY,CAAC;;AAEb,OAAO,KAAK,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACnD,OAAO,EAAE,EAAE,EAAE,MAAM,gBAAgB,CAAC;AACpC,OAAO,EACL,qBAAqB,EACrB,wBAAwB,EACxB,oBAAoB,EACpB,kBAAkB,EAClB,oBAAoB,EACpB,wBAAwB,EACxB,2BAA2B,GAG5B,MAAM,4BAA4B,CAAC;AAyFpC;;;GAGG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,KAAK,CAAC,UAAU,CAGjD,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;IACf,mEAAmE;IACnE,MAAM,aAAa,GAAG,KAAK,CAAC,MAAM,CAAoB,IAAI,CAAC,CAAC;IAC5D,MAAM,CAAC,cAAc,EAAE,kBAAkB,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAa,EAAE,CAAC,CAAC;IAE5E,iEAAiE;IACjE,MAAM,aAAa,GAAG,KAAK,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,cAAc,CAAC;IAE/E,gEAAgE;IAChE,KAAK,CAAC,mBAAmB,CACvB,GAAG,EACH,GAAG,EAAE;QACH,OAAO;YACL,GAAI,aAAa,CAAC,OAA6B;YAC/C,aAAa,EAAE,GAAG,EAAE,CAAC,aAAa;SACW,CAAC;IAClD,CAAC,EACD,CAAC,aAAa,CAAC,CAChB,CAAC;IAEI,MAAM,EACJ,KAAK,EACL,KAAK,EACL,QAAQ,EACR,aAAa,EACb,UAAU,EACV,OAAO,EACP,KAAK,EACL,QAAQ,EACR,WAAW,GAAG,qBAAqB,EACnC,kBAAkB,GAAG,WAAW,EAChC,aAAa,GAAG,kBAAkB,EAClC,aAAa,GAAG,KAAK,EACrB,kBAAkB,EAClB,aAAa,EACb,iBAAiB,EACjB,cAAc,EACd,qBAAqB,GAAG,UAAU,EAClC,kBAAkB,EAClB,oBAAoB,EACpB,gBAAgB,EAChB,wBAAwB,EACxB,iBAAiB,EACjB,gBAAgB,EAChB,sBAAsB,EACtB,QAAQ,EACR,iBAAiB,EACjB,eAAe,EACf,iBAAiB,EACjB,gBAAgB,EAChB,eAAe,EACf,YAAY,EACZ,YAAY,EACZ,SAAS,EACT,QAAQ,EACR,SAAS,EACT,SAAS,EACT,WAAW,EACX,cAAc,EACd,KAAK,EAAE,gBAAgB,EACvB,eAAe,EACf,QAAQ,EACR,EAAE;IACF,iBAAiB;IACjB,0BAA0B,EAC1B,iBAAiB,EACjB,sBAAsB,EACtB,wBAAwB,EACxB,sBAAsB,EACtB,kBAAkB,EAClB,eAAe,EACf,kBAAkB,EAClB,uBAAuB,EACvB,0BAA0B,EAC1B,2BAA2B,EAC3B,oBAAoB,EACpB,kBAAkB,EAClB,iBAAiB,EACjB,wBAAwB,EACxB,6BAA6B,EAC7B,4BAA4B,EAC5B,uBAAuB,GACxB,GAAG,KAAK,CAAC;IAEhB,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAEzC,MAAM,EAAE,cAAc,EAAE,sBAAsB,EAAE,YAAY,EAAE,gBAAgB,EAAE,GAAG,qBAAqB,CAAC;QACvG,KAAK;QACL,QAAQ;QACR,EAAE;QACF,aAAa;QACb,UAAU;QACV,aAAa;QACb,0BAA0B;QAC1B,iBAAiB;QACjB,wBAAwB;QACxB,iBAAiB;KAClB,CAAC,CAAC;IAEH,4DAA4D;IAC5D,6DAA6D;IAC7D,MAAM,uBAAuB,GAAG,cAAc,KAAK,SAAS,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,YAAY,CAAC;IAC7F,sCAAsC;IACtC,MAAM,iBAAiB,GAAG,QAAQ,IAAI,uBAAuB,CAAC;IAE9D,mEAAmE;IACnE,MAAM,oBAAoB,GAAG;QAC3B,iBAAiB,EAAE,YAAY;QAC/B,0BAA0B;QAC1B,iBAAiB;QACjB,sBAAsB;QACtB,wBAAwB;QACxB,sBAAsB;QACtB,kBAAkB;QAClB,eAAe;QACf,kBAAkB;QAClB,uBAAuB;QACvB,0BAA0B;QAC1B,2BAA2B;QAC3B,oBAAoB;QACpB,kBAAkB;QAClB,wBAAwB;QACxB,6BAA6B;QAC7B,4BAA4B;QAC5B,uBAAuB;QACvB,aAAa;QACb,UAAU;QACV,KAAK;QACL,KAAK,EAAE,aAAa;KACrB,CAAC;IAEF;;OAEG;IACH,MAAM,cAAc,GAAG,KAAK;QAC1B,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,KAAK,KAAK,CAAC,EAAE,KAAK,IAAI,WAAW;QACxE,CAAC,CAAC,WAAW,CAAC;IAEhB,wCAAwC;IACxC,gEAAgE;IAChE,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,KAAK,CAAC,QAAQ,CAYxC,IAAI,CAAC,CAAC;IAChB,MAAM,CAAC,UAAU,EAAE,cAAc,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAE1D,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,cAAc,GAAG,KAAK,IAAI,EAAE;YAChC,IAAI,CAAC;gBACH,cAAc,CAAC,IAAI,CAAC,CAAC;gBACrB,0DAA0D;gBAC1D,qEAAqE;gBACrE,6EAA6E;gBAC7E,MAAM,aAAa,GAAG,MAAM,MAAM,CAAC,yBAAyB,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;gBAChF,6EAA6E;gBAC7E,MAAM,aAAa,GAAG,MAAM,MAAM,CAAC,yBAAyB,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;gBAChF,MAAM,YAAY,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;gBAEpE,IAAI,aAAa,IAAI,aAAa,IAAI,YAAY,EAAE,CAAC;oBACnD,aAAa,CAAC;wBACZ,OAAO,EAAE,aAAa,CAAC,OAAO;wBAC9B,cAAc,EAAE,aAAa,CAAC,cAAc;wBAC5C,cAAc,EAAE,aAAa,CAAC,cAAc;wBAC5C,OAAO,EAAE,aAAa,CAAC,OAAO;wBAC9B,YAAY,EAAE,aAAa,CAAC,YAAY;wBACxC,WAAW,EAAE,aAAa,CAAC,WAAW;wBACtC,YAAY,EAAE,aAAa,CAAC,YAAY;wBACxC,YAAY,EAAE,aAAa,CAAC,YAAY;wBACxC,WAAW,EAAE,aAAa,CAAC,WAAW;wBACtC,KAAK,EAAE,YAAY,CAAC,KAAK;wBACzB,cAAc,EAAE,YAAY,CAAC,cAAc;qBAC5C,CAAC,CAAC;gBACL,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,IAAI,CACV,4EAA4E;wBAC5E,wFAAwF,CACzF,CAAC;gBACJ,CAAC;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,IAAI,CAAC,iDAAiD,EAAE,KAAK,CAAC,CAAC;YACzE,CAAC;oBAAS,CAAC;gBACT,cAAc,CAAC,KAAK,CAAC,CAAC;YACxB,CAAC;QACH,CAAC,CAAC;QAEF,cAAc,EAAE,CAAC;IACnB,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP;;;;OAIG;IACH,MAAM,sBAAsB,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC,cAAsB,EAAE,EAAE;QAC1E,MAAM,SAAS,GAAG,cAAc,KAAK,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC;QACjE,QAAQ,CAAC,SAAS,CAAC,CAAC;QACpB,QAAQ,CAAC,KAAK,CAAC,CAAC;IAClB,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC;IAEtB;;;OAGG;IACH,MAAM,sBAAsB,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC,cAAsB,EAAE,EAAE;QAC1E,8FAA8F;QAC9F,MAAM,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,KAAK,cAAc,CAAC,CAAC;QAC5E,IAAI,eAAe,EAAE,CAAC;YACpB,sBAAsB,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QAChD,CAAC;IACH,CAAC,EAAE,CAAC,OAAO,EAAE,sBAAsB,CAAC,CAAC,CAAC;IAEtC,oFAAoF;IACpF,IAAI,UAAU,EAAE,CAAC;QACf,OAAO,CACL,MAAC,wBAAwB,IACvB,iBAAiB,EAAE,iBAAiB,EACpC,cAAc,EAAE,cAAc,EAC9B,qBAAqB,EAAE,qBAAqB,EAC5C,kBAAkB,EAAE,kBAAkB,EACtC,oBAAoB,EAAE,oBAAoB,KACtC,oBAAoB,aAExB,KAAC,oBAAoB,IACnB,cAAc,EAAE,cAAc,EAC9B,KAAK,EAAE,KAAK,EACZ,gBAAgB,EAAE,gBAAgB,EAClC,QAAQ,EAAE,QAAQ,GAClB,EACF,eAAK,SAAS,EAAE,EAAE,CAAC,kDAAkD,EAAE,wBAAwB,CAAC,EAAE,wBAAwB,mBACxH,cAAK,SAAS,EAAE,EAAE,CAChB,sBAAsB,IAAI,QAAQ,EAClC,sBAAsB,IAAI,eAAe,CAC1C,YACC,cAAK,SAAS,EAAE,EAAE,CAChB,qHAAqH,EACrH,KAAK,IAAI,oBAAoB,EAC7B,iBAAiB,CAClB,YACC,eAAM,SAAS,EAAE,EAAE,CAAC,gCAAgC,CAAC,YAClD,WAAW,GACP,GACH,GACF,EACL,CAAC,eAAe,IAAI,CACnB,KAAC,wBAAwB,IACvB,KAAK,EAAE,KAAK,EACZ,eAAe,EAAE,eAAe,EAChC,iBAAiB,EAAE,iBAAiB,EACpC,QAAQ,EAAE,gBAAgB,GAC1B,CACH,EACA,CAAC,YAAY,IAAI,CAChB,KAAC,kBAAkB,IACjB,KAAK,EAAE,KAAK,EACZ,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,sBAAsB,EAChC,iBAAiB,EAAE,iBAAiB,EACpC,iBAAiB,EAAE,iBAAiB,EACpC,QAAQ,EAAE,YAAY,EACtB,eAAe,EAAE,gBAAgB,GACjC,CACH,IACG,EACN,KAAC,oBAAoB,IACnB,cAAc,EAAE,cAAc,EAC9B,KAAK,EAAE,KAAK,EACZ,gBAAgB,EAAE,gBAAgB,GAClC,EACF,KAAC,2BAA2B,IAC1B,cAAc,EAAE,cAAc,EAC9B,YAAY,EAAE,YAAY,EAC1B,SAAS,EAAE,SAAS,EACpB,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,SAAS,EACpB,SAAS,EAAE,SAAS,EACpB,WAAW,EAAE,WAAW,EACxB,cAAc,EAAE,cAAc,EAC9B,KAAK,EAAE,aAAa,EACpB,eAAe,EAAE,CAAC,SAAS,EAAE,EAAE;wBAC7B,IAAI,gBAAgB,KAAK,SAAS,EAAE,CAAC;4BACnC,kBAAkB,CAAC,SAAS,CAAC,CAAC;wBAChC,CAAC;wBACD,IAAI,eAAe,EAAE,CAAC;4BACpB,eAAe,CAAC,SAAS,CAAC,CAAC;wBAC7B,CAAC;oBACH,CAAC,EACD,aAAa,EAAE,aAAa,GAC5B,IACuB,CAC5B,CAAC;IACJ,CAAC;IAED,2CAA2C;IAC3C,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO,CACL,MAAC,wBAAwB,IACvB,iBAAiB,EAAE,iBAAiB,EACpC,cAAc,EAAE,cAAc,EAC9B,qBAAqB,EAAE,qBAAqB,EAC5C,kBAAkB,EAAE,kBAAkB,EACtC,oBAAoB,EAAE,oBAAoB,KACtC,oBAAoB,aAExB,KAAC,oBAAoB,IACnB,cAAc,EAAE,cAAc,EAC9B,KAAK,EAAE,KAAK,EACZ,gBAAgB,EAAE,gBAAgB,EAClC,QAAQ,EAAE,QAAQ,GAClB,EACF,eAAK,SAAS,EAAE,EAAE,CAAC,kDAAkD,EAAE,wBAAwB,CAAC,EAAE,wBAAwB,mBACxH,cAAK,SAAS,EAAE,EAAE,CAChB,sBAAsB,IAAI,QAAQ,EAClC,sBAAsB,IAAI,eAAe,CAC1C,YACC,cAAK,SAAS,EAAC,mGAAmG,oHAE5G,GACF,EACN,KAAC,wBAAwB,IACvB,KAAK,EAAE,KAAK,EACZ,eAAe,EAAE,eAAe,EAChC,iBAAiB,EAAE,iBAAiB,GACpC,EACF,KAAC,kBAAkB,IACjB,KAAK,EAAE,KAAK,EACZ,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,sBAAsB,EAChC,iBAAiB,EAAE,iBAAiB,EACpC,iBAAiB,EAAE,iBAAiB,EACpC,eAAe,EAAE,gBAAgB,GACjC,IACE,EACN,KAAC,oBAAoB,IACnB,cAAc,EAAE,cAAc,EAC9B,KAAK,EAAE,KAAK,EACZ,gBAAgB,EAAE,gBAAgB,GAClC,EACF,KAAC,2BAA2B,IAC1B,cAAc,EAAE,cAAc,EAC9B,YAAY,EAAE,YAAY,EAC1B,SAAS,EAAE,SAAS,EACpB,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,SAAS,EACpB,SAAS,EAAE,SAAS,EACpB,WAAW,EAAE,WAAW,EACxB,cAAc,EAAE,cAAc,EAC9B,KAAK,EAAE,aAAa,EACpB,eAAe,EAAE,CAAC,SAAS,EAAE,EAAE;wBAC7B,IAAI,gBAAgB,KAAK,SAAS,EAAE,CAAC;4BACnC,kBAAkB,CAAC,SAAS,CAAC,CAAC;wBAChC,CAAC;wBACD,IAAI,eAAe,EAAE,CAAC;4BACpB,eAAe,CAAC,SAAS,CAAC,CAAC;wBAC7B,CAAC;oBACH,CAAC,EACD,aAAa,EAAE,aAAa,GAC5B,IACuB,CAC5B,CAAC;IACJ,CAAC;IAED,MAAM,EACJ,OAAO,EACP,cAAc,EACd,cAAc,EACd,OAAO,EACP,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,WAAW,EACX,KAAK,EACL,cAAc,GACf,GAAG,UAAU,CAAC;IAEf,OAAO,CACL,MAAC,wBAAwB,IACvB,iBAAiB,EAAE,iBAAiB,EACpC,cAAc,EAAE,cAAc,EAC9B,qBAAqB,EAAE,qBAAqB,EAC5C,kBAAkB,EAAE,kBAAkB,EACtC,oBAAoB,EAAE,oBAAoB,KACtC,oBAAoB,aAGxB,KAAC,oBAAoB,IACnB,cAAc,EAAE,cAAc,EAC9B,KAAK,EAAE,KAAK,EACZ,gBAAgB,EAAE,gBAAgB,EAClC,QAAQ,EAAE,QAAQ,GAClB,EAGF,eAAK,SAAS,EAAE,EAAE,CAAC,kDAAkD,EAAE,wBAAwB,CAAC,EAAE,wBAAwB,mBAExH,cAAK,SAAS,EAAE,EAAE,CAChB,sBAAsB,IAAI,QAAQ,EAClC,sBAAsB,IAAI,eAAe,CAC1C,YACC,MAAC,OAAO,IAAC,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE,QAAQ,aACzC,KAAC,cAAc,IAAC,OAAO,kBACrB,kBACE,GAAG,EAAE,aAAa,EAClB,IAAI,EAAC,QAAQ,EACb,IAAI,EAAC,UAAU,mBACA,IAAI,mBACJ,GAAG,cAAc,WAAW,EAC3C,QAAQ,EAAE,iBAAiB,EAC3B,SAAS,EAAE,EAAE,CACX,yUAAyU,EACzU,KAAK,IAAI,mDAAmD,EAC5D,iBAAiB,CAClB,kBACa,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,sBACpB,KAAK,CAAC,CAAC,CAAC,GAAG,cAAc,QAAQ,CAAC,CAAC,CAAC,SAAS,aAE/D,eAAM,SAAS,EAAE,EAAE,CAAC,UAAU,EAAE,CAAC,KAAK,IAAI,uBAAuB,CAAC,YAC/D,cAAc,GACV,EACP,KAAC,cAAc,IAAC,SAAS,EAAC,kCAAkC,GAAG,IACxD,GACM,EACnB,KAAC,cAAc,IACb,SAAS,EAAC,4CAA4C,EACtD,KAAK,EAAC,OAAO,EACb,EAAE,EAAE,GAAG,cAAc,WAAW,YAEhC,MAAC,OAAO,eACL,aAAa,IAAI,CAChB,KAAC,YAAY,IACX,WAAW,EAAE,kBAAkB,EAC/B,SAAS,EAAC,KAAK,GACf,CACH,EACD,MAAC,WAAW,eACV,KAAC,YAAY,cAAE,aAAa,GAAgB,EAC5C,KAAC,YAAY,cACV,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CACvB,MAAC,WAAW,IAEV,KAAK,EAAE,MAAM,CAAC,KAAK,EACnB,QAAQ,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,EACxB,QAAQ,EAAE,CAAC,YAAoB,EAAE,EAAE;gEACjC,OAAO,CAAC,GAAG,CAAC,6CAA6C,EAAE,YAAY,CAAC,CAAC;gEACzE,sBAAsB,CAAC,YAAY,CAAC,CAAC;4DACvC,CAAC,EACD,OAAO,EAAE,CAAC,CAAmB,EAAE,EAAE;gEAC/B,yBAAyB;gEACzB,CAAC,CAAC,cAAc,EAAE,CAAC;gEACnB,CAAC,CAAC,eAAe,EAAE,CAAC;gEACpB,OAAO,CAAC,GAAG,CAAC,2CAA2C,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;gEACvE,sBAAsB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;4DACvC,CAAC,EACD,SAAS,EAAC,gBAAgB,EAC1B,KAAK,EAAE,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,aAEnD,KAAC,KAAK,IACJ,SAAS,EAAE,EAAE,CACX,cAAc,EACd,KAAK,KAAK,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,WAAW,CACrD,GACD,EACD,MAAM,CAAC,KAAK,KAvBR,MAAM,CAAC,KAAK,CAwBL,CACf,CAAC,GACW,IACH,IACN,GACK,IACT,GACJ,EAGL,CAAC,eAAe,IAAI,CACnB,KAAC,wBAAwB,IACvB,KAAK,EAAE,KAAK,EACZ,eAAe,EAAE,eAAe,EAChC,iBAAiB,EAAE,iBAAiB,EACpC,QAAQ,EAAE,gBAAgB,GAC1B,CACH,EAGA,CAAC,YAAY,IAAI,CAChB,KAAC,kBAAkB,IACjB,KAAK,EAAE,KAAK,EACZ,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,sBAAsB,EAChC,iBAAiB,EAAE,iBAAiB,EACpC,iBAAiB,EAAE,iBAAiB,EACpC,QAAQ,EAAE,YAAY,EACtB,eAAe,EAAE,gBAAgB,GACjC,CACH,IACG,EAGN,KAAC,oBAAoB,IACnB,cAAc,EAAE,cAAc,EAC9B,KAAK,EAAE,KAAK,EACZ,gBAAgB,EAAE,gBAAgB,GAClC,EACF,KAAC,2BAA2B,IAC1B,cAAc,EAAE,cAAc,EAC9B,YAAY,EAAE,YAAY,EAC1B,SAAS,EAAE,SAAS,EACpB,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,SAAS,EACpB,SAAS,EAAE,SAAS,EACpB,WAAW,EAAE,WAAW,EACxB,cAAc,EAAE,cAAc,EAC5B,KAAK,EAAE,aAAa,EACtB,eAAe,EAAE,CAAC,SAAS,EAAE,EAAE;oBAC7B,IAAI,gBAAgB,KAAK,SAAS,EAAE,CAAC;wBACnC,kBAAkB,CAAC,SAAS,CAAC,CAAC;oBAChC,CAAC;oBACD,IAAI,eAAe,EAAE,CAAC;wBACpB,eAAe,CAAC,SAAS,CAAC,CAAC;oBAC7B,CAAC;gBACH,CAAC,EACD,aAAa,EAAE,aAAa,GAC5B,IACuB,CAC5B,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,mBAAmB,CAAC,WAAW,GAAG,qBAAqB,CAAC"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Collaboration form date picker component
|
|
3
|
+
* Provides a reusable date picker 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
|
+
* Date range value type
|
|
9
|
+
*/
|
|
10
|
+
export interface DateRangeValue {
|
|
11
|
+
from: string;
|
|
12
|
+
to: string;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Props for the HazoCollabFormDate component
|
|
16
|
+
*/
|
|
17
|
+
export interface HazoCollabFormDateProps extends CollabFormFieldBaseProps {
|
|
18
|
+
/**
|
|
19
|
+
* Current value of the date picker
|
|
20
|
+
* For single date mode: ISO date string (YYYY-MM-DD) or empty string
|
|
21
|
+
* For range mode: DateRangeValue object with from and to ISO date strings
|
|
22
|
+
*/
|
|
23
|
+
value: string | DateRangeValue | undefined;
|
|
24
|
+
/**
|
|
25
|
+
* Callback when date value changes
|
|
26
|
+
* For single date mode: receives ISO date string (YYYY-MM-DD) or empty string
|
|
27
|
+
* For range mode: receives DateRangeValue object
|
|
28
|
+
*/
|
|
29
|
+
onChange: (value: string | DateRangeValue) => void;
|
|
30
|
+
/**
|
|
31
|
+
* Date picker mode: 'single' for single date selection, 'range' for date range selection
|
|
32
|
+
* Default: 'single'
|
|
33
|
+
*/
|
|
34
|
+
date_mode?: 'single' | 'range';
|
|
35
|
+
/**
|
|
36
|
+
* Minimum selectable date (ISO date string YYYY-MM-DD)
|
|
37
|
+
*/
|
|
38
|
+
min_date?: string;
|
|
39
|
+
/**
|
|
40
|
+
* Maximum selectable date (ISO date string YYYY-MM-DD)
|
|
41
|
+
*/
|
|
42
|
+
max_date?: string;
|
|
43
|
+
/**
|
|
44
|
+
* Array of disabled dates (ISO date strings YYYY-MM-DD)
|
|
45
|
+
*/
|
|
46
|
+
disabled_dates?: string[];
|
|
47
|
+
/**
|
|
48
|
+
* Custom className for the date picker wrapper
|
|
49
|
+
*/
|
|
50
|
+
date_wrapper_class_name?: string;
|
|
51
|
+
/**
|
|
52
|
+
* Placeholder text for the date picker button
|
|
53
|
+
*/
|
|
54
|
+
placeholder?: string;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Exposed methods for HazoCollabFormDate
|
|
58
|
+
*/
|
|
59
|
+
export interface HazoCollabFormDateRef {
|
|
60
|
+
/**
|
|
61
|
+
* Get the current files data
|
|
62
|
+
* Returns array of FileData objects
|
|
63
|
+
*/
|
|
64
|
+
get_file_data: () => FileData[];
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Collaboration form date picker component
|
|
68
|
+
* Displays a labeled date picker field with error message and chat icon
|
|
69
|
+
*/
|
|
70
|
+
export declare const HazoCollabFormDate: React.ForwardRefExoticComponent<HazoCollabFormDateProps & React.RefAttributes<HTMLButtonElement & HazoCollabFormDateRef>>;
|
|
71
|
+
//# sourceMappingURL=hazo_collab_form_date.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hazo_collab_form_date.d.ts","sourceRoot":"","sources":["../../src/components/hazo_collab_form_date.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,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;CACZ;AAED;;GAEG;AACH,MAAM,WAAW,uBAAwB,SAAQ,wBAAwB;IACvE;;;;OAIG;IACH,KAAK,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS,CAAC;IAE3C;;;;OAIG;IACH,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,cAAc,KAAK,IAAI,CAAC;IAEnD;;;OAGG;IACH,SAAS,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC;IAE/B;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAE1B;;OAEG;IACH,uBAAuB,CAAC,EAAE,MAAM,CAAC;IAEjC;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC;;;OAGG;IACH,aAAa,EAAE,MAAM,QAAQ,EAAE,CAAC;CACjC;AAgCD;;;GAGG;AACH,eAAO,MAAM,kBAAkB,2HA4f7B,CAAC"}
|