hazo_collab_forms 1.9.0 → 1.9.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (157) hide show
  1. package/README.md +5 -5
  2. package/dist/components/_internal_form_set.d.ts +18 -15
  3. package/dist/components/_internal_form_set.d.ts.map +1 -1
  4. package/dist/components/_internal_form_set.js +14 -11
  5. package/dist/components/_internal_form_set.js.map +1 -1
  6. package/dist/components/collab_form_file_upload.d.ts +7 -8
  7. package/dist/components/collab_form_file_upload.d.ts.map +1 -1
  8. package/dist/components/collab_form_file_upload.js +31 -20
  9. package/dist/components/collab_form_file_upload.js.map +1 -1
  10. package/dist/components/hazo_add_field_dialog/components/pending_field_item.d.ts +1 -1
  11. package/dist/components/hazo_add_field_dialog/components/pending_field_item.js +2 -2
  12. package/dist/components/hazo_add_field_dialog/components/pending_field_item.js.map +1 -1
  13. package/dist/components/hazo_add_field_dialog/components/pending_field_list.d.ts +1 -1
  14. package/dist/components/hazo_add_field_dialog/hazo_add_field_dialog.js +7 -7
  15. package/dist/components/hazo_add_field_dialog/hazo_add_field_dialog.js.map +1 -1
  16. package/dist/components/hazo_add_field_dialog/types.d.ts +4 -4
  17. package/dist/components/hazo_add_field_dialog/types.d.ts.map +1 -1
  18. package/dist/components/hazo_add_field_dialog/utils/library_to_pending.js +2 -2
  19. package/dist/components/hazo_add_field_dialog/utils/library_to_pending.js.map +1 -1
  20. package/dist/components/hazo_add_group_dialog/hazo_add_group_dialog.js +6 -6
  21. package/dist/components/hazo_add_group_dialog/hazo_add_group_dialog.js.map +1 -1
  22. package/dist/components/hazo_collab_form_base.d.ts +11 -15
  23. package/dist/components/hazo_collab_form_base.d.ts.map +1 -1
  24. package/dist/components/hazo_collab_form_base.js +7 -7
  25. package/dist/components/hazo_collab_form_base.js.map +1 -1
  26. package/dist/components/hazo_collab_form_checkbox.d.ts +1 -24
  27. package/dist/components/hazo_collab_form_checkbox.d.ts.map +1 -1
  28. package/dist/components/hazo_collab_form_checkbox.js +15 -141
  29. package/dist/components/hazo_collab_form_checkbox.js.map +1 -1
  30. package/dist/components/hazo_collab_form_combo.d.ts +0 -44
  31. package/dist/components/hazo_collab_form_combo.d.ts.map +1 -1
  32. package/dist/components/hazo_collab_form_combo.js +24 -199
  33. package/dist/components/hazo_collab_form_combo.js.map +1 -1
  34. package/dist/components/hazo_collab_form_data_table.d.ts.map +1 -1
  35. package/dist/components/hazo_collab_form_data_table.js +2 -1
  36. package/dist/components/hazo_collab_form_data_table.js.map +1 -1
  37. package/dist/components/hazo_collab_form_date.d.ts +1 -59
  38. package/dist/components/hazo_collab_form_date.d.ts.map +1 -1
  39. package/dist/components/hazo_collab_form_date.js +34 -194
  40. package/dist/components/hazo_collab_form_date.js.map +1 -1
  41. package/dist/components/hazo_collab_form_doc.d.ts.map +1 -1
  42. package/dist/components/hazo_collab_form_doc.js +8 -7
  43. package/dist/components/hazo_collab_form_doc.js.map +1 -1
  44. package/dist/components/hazo_collab_form_group.js +5 -5
  45. package/dist/components/hazo_collab_form_group.js.map +1 -1
  46. package/dist/components/hazo_collab_form_inputbox.d.ts +0 -17
  47. package/dist/components/hazo_collab_form_inputbox.d.ts.map +1 -1
  48. package/dist/components/hazo_collab_form_inputbox.js +25 -148
  49. package/dist/components/hazo_collab_form_inputbox.js.map +1 -1
  50. package/dist/components/hazo_collab_form_radio.d.ts +1 -36
  51. package/dist/components/hazo_collab_form_radio.d.ts.map +1 -1
  52. package/dist/components/hazo_collab_form_radio.js +18 -143
  53. package/dist/components/hazo_collab_form_radio.js.map +1 -1
  54. package/dist/components/hazo_collab_form_textarea.d.ts +0 -17
  55. package/dist/components/hazo_collab_form_textarea.d.ts.map +1 -1
  56. package/dist/components/hazo_collab_form_textarea.js +14 -141
  57. package/dist/components/hazo_collab_form_textarea.js.map +1 -1
  58. package/dist/components/hazo_collab_form_view/hooks/use_view_callbacks.d.ts +36 -0
  59. package/dist/components/hazo_collab_form_view/hooks/use_view_callbacks.d.ts.map +1 -0
  60. package/dist/components/hazo_collab_form_view/hooks/use_view_callbacks.js +82 -0
  61. package/dist/components/hazo_collab_form_view/hooks/use_view_callbacks.js.map +1 -0
  62. package/dist/components/hazo_collab_form_view/types.d.ts +4 -3
  63. package/dist/components/hazo_collab_form_view/types.d.ts.map +1 -1
  64. package/dist/components/hazo_collab_form_view/views/edit_view.d.ts.map +1 -1
  65. package/dist/components/hazo_collab_form_view/views/edit_view.js +8 -80
  66. package/dist/components/hazo_collab_form_view/views/edit_view.js.map +1 -1
  67. package/dist/components/hazo_collab_form_view/views/summary_view.d.ts.map +1 -1
  68. package/dist/components/hazo_collab_form_view/views/summary_view.js +51 -271
  69. package/dist/components/hazo_collab_form_view/views/summary_view.js.map +1 -1
  70. package/dist/components/hazo_edit_field_dialog/hazo_edit_field_dialog.js +8 -8
  71. package/dist/components/hazo_edit_field_dialog/hazo_edit_field_dialog.js.map +1 -1
  72. package/dist/components/hazo_edit_field_dialog/types.d.ts +4 -4
  73. package/dist/components/hazo_edit_field_dialog/types.d.ts.map +1 -1
  74. package/dist/components/hazo_edit_group_dialog/hazo_edit_group_dialog.js +15 -15
  75. package/dist/components/hazo_edit_group_dialog/hazo_edit_group_dialog.js.map +1 -1
  76. package/dist/components/hazo_edit_group_dialog/types.d.ts +4 -4
  77. package/dist/components/hazo_edit_group_dialog/types.d.ts.map +1 -1
  78. package/dist/components/hazo_field_library/hooks/use_elements.d.ts.map +1 -1
  79. package/dist/components/hazo_field_library/hooks/use_elements.js +2 -1
  80. package/dist/components/hazo_field_library/hooks/use_elements.js.map +1 -1
  81. package/dist/components/hazo_field_selector_dialog/utils.d.ts.map +1 -1
  82. package/dist/components/hazo_field_selector_dialog/utils.js +2 -1
  83. package/dist/components/hazo_field_selector_dialog/utils.js.map +1 -1
  84. package/dist/components/hazo_template_generator/components/section_tree.js +1 -1
  85. package/dist/components/hazo_template_generator/components/section_tree.js.map +1 -1
  86. package/dist/components/hazo_template_generator/components/tabs/basic_tab.d.ts.map +1 -1
  87. package/dist/components/hazo_template_generator/components/tabs/basic_tab.js +6 -3
  88. package/dist/components/hazo_template_generator/components/tabs/basic_tab.js.map +1 -1
  89. package/dist/components/hazo_template_generator/components/tabs/section_tab.d.ts.map +1 -1
  90. package/dist/components/hazo_template_generator/components/tabs/section_tab.js +8 -4
  91. package/dist/components/hazo_template_generator/components/tabs/section_tab.js.map +1 -1
  92. package/dist/components/hazo_template_generator/types.d.ts.map +1 -1
  93. package/dist/components/hazo_template_generator/types.js +6 -3
  94. package/dist/components/hazo_template_generator/types.js.map +1 -1
  95. package/dist/components/hazo_template_generator/utils/validation.js +1 -1
  96. package/dist/components/hazo_template_generator/utils/validation.js.map +1 -1
  97. package/dist/components/shared/base_field_layout.d.ts +40 -0
  98. package/dist/components/shared/base_field_layout.d.ts.map +1 -0
  99. package/dist/components/shared/base_field_layout.js +34 -0
  100. package/dist/components/shared/base_field_layout.js.map +1 -0
  101. package/dist/components/shared/file_settings/file_settings_checkboxes.d.ts +13 -13
  102. package/dist/components/shared/file_settings/file_settings_checkboxes.d.ts.map +1 -1
  103. package/dist/components/shared/file_settings/file_settings_checkboxes.js +8 -25
  104. package/dist/components/shared/file_settings/file_settings_checkboxes.js.map +1 -1
  105. package/dist/components/shared/row_color_utils.d.ts +16 -0
  106. package/dist/components/shared/row_color_utils.d.ts.map +1 -0
  107. package/dist/components/shared/row_color_utils.js +21 -0
  108. package/dist/components/shared/row_color_utils.js.map +1 -0
  109. package/dist/components/shared/strip_base_props.d.ts +16 -0
  110. package/dist/components/shared/strip_base_props.d.ts.map +1 -0
  111. package/dist/components/shared/strip_base_props.js +91 -0
  112. package/dist/components/shared/strip_base_props.js.map +1 -0
  113. package/dist/components/shared/summary_utils/file_helpers.d.ts +11 -0
  114. package/dist/components/shared/summary_utils/file_helpers.d.ts.map +1 -0
  115. package/dist/components/shared/summary_utils/file_helpers.js +16 -0
  116. package/dist/components/shared/summary_utils/file_helpers.js.map +1 -0
  117. package/dist/components/shared/summary_utils/index.d.ts +1 -0
  118. package/dist/components/shared/summary_utils/index.d.ts.map +1 -1
  119. package/dist/components/shared/summary_utils/index.js +1 -0
  120. package/dist/components/shared/summary_utils/index.js.map +1 -1
  121. package/dist/components/shared/unified_field_controls/index.d.ts +1 -0
  122. package/dist/components/shared/unified_field_controls/index.d.ts.map +1 -1
  123. package/dist/components/shared/unified_field_controls/index.js +2 -1
  124. package/dist/components/shared/unified_field_controls/index.js.map +1 -1
  125. package/dist/components/shared/unified_field_controls/use_field_control_props.d.ts +68 -0
  126. package/dist/components/shared/unified_field_controls/use_field_control_props.d.ts.map +1 -0
  127. package/dist/components/shared/unified_field_controls/use_field_control_props.js +105 -0
  128. package/dist/components/shared/unified_field_controls/use_field_control_props.js.map +1 -0
  129. package/dist/components/shared/use_base_form_field.d.ts +190 -0
  130. package/dist/components/shared/use_base_form_field.d.ts.map +1 -0
  131. package/dist/components/shared/use_base_form_field.js +264 -0
  132. package/dist/components/shared/use_base_form_field.js.map +1 -0
  133. package/dist/config/api_endpoints.d.ts +19 -0
  134. package/dist/config/api_endpoints.d.ts.map +1 -0
  135. package/dist/config/api_endpoints.js +19 -0
  136. package/dist/config/api_endpoints.js.map +1 -0
  137. package/dist/config/defaults.d.ts +17 -0
  138. package/dist/config/defaults.d.ts.map +1 -0
  139. package/dist/config/defaults.js +17 -0
  140. package/dist/config/defaults.js.map +1 -0
  141. package/dist/config/index.d.ts +3 -0
  142. package/dist/config/index.d.ts.map +1 -0
  143. package/dist/config/index.js +3 -0
  144. package/dist/config/index.js.map +1 -0
  145. package/dist/utils/filter_dom_props.d.ts.map +1 -1
  146. package/dist/utils/filter_dom_props.js +2 -1
  147. package/dist/utils/filter_dom_props.js.map +1 -1
  148. package/dist/utils/use_chat_messages_check.d.ts.map +1 -1
  149. package/dist/utils/use_chat_messages_check.js +4 -2
  150. package/dist/utils/use_chat_messages_check.js.map +1 -1
  151. package/dist/utils/use_collab_chat.d.ts.map +1 -1
  152. package/dist/utils/use_collab_chat.js +2 -1
  153. package/dist/utils/use_collab_chat.js.map +1 -1
  154. package/dist/utils/use_field_chat_status.d.ts.map +1 -1
  155. package/dist/utils/use_field_chat_status.js +5 -3
  156. package/dist/utils/use_field_chat_status.js.map +1 -1
  157. package/package.json +1 -1
@@ -7,160 +7,35 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
7
7
  import React from 'react';
8
8
  import { cn } from '../utils/cn.js';
9
9
  import { get_dom_safe_props } from '../utils/filter_dom_props.js';
10
- import { use_collab_form_field, CollabFormFieldContainer, CollabFormFieldLabel, CollabFormFieldError, CollabFormFieldReferenceTag, CollabFormFileUploadSection, CollabFormAddEntryIcon, CollabFormDeleteEntryIcon, } from './hazo_collab_form_base.js';
10
+ import { CollabFormFieldContainer, CollabFormFieldLabel, CollabFormFieldError, CollabFormFieldReferenceTag, CollabFormFileUploadSection, CollabFormAddEntryIcon, CollabFormDeleteEntryIcon, } from './hazo_collab_form_base.js';
11
11
  import { UnifiedFieldControls } from './shared/unified_field_controls/index.js';
12
+ import { use_base_form_field } from './shared/use_base_form_field.js';
13
+ import { strip_base_props } from './shared/strip_base_props.js';
12
14
  /**
13
15
  * Collaboration form radio component
14
- * Displays a labeled radio button group with error message, data OK checkbox, and chat icon
16
+ * Has a unique layout: label + controls header row, radio options below
15
17
  */
16
18
  export const HazoCollabFormRadio = React.forwardRef((props, ref) => {
17
- // Create internal ref for component reference (for file_processor)
18
- const component_ref = React.useRef(null);
19
- const [internal_files, set_internal_files] = React.useState([]);
20
- // Internal validation error state
21
- const [validation_error, set_validation_error] = React.useState(null);
22
- // Use controlled files if provided, otherwise use internal state
23
- const current_files = props.files !== undefined ? props.files : internal_files;
24
- // Expose get_file_data method and forward ref to input element
25
- React.useImperativeHandle(ref, () => {
26
- return {
27
- ...component_ref.current,
28
- get_file_data: () => current_files,
29
- };
30
- }, [current_files]);
31
- const { label, tooltip, error, field_id, field_data_id, field_name, options, value, onChange, additional_context, on_chat_click, chat_status, is_chat_active, chat_background_color = 'bg-muted', is_data_ok_default, container_class_name, label_class_name, label_actions, radio_wrapper_class_name, radio_option_wrapper_class_name, error_class_name, required, layout = 'vertical', multi_state_radio, data_ok_checked, on_data_ok_change, data_ok_mode, data_ok_value, on_data_ok_value_change, data_ok_default, data_ok_hidden_states, data_ok_editable, disable_data_ok, disable_chat, accept_files, files_dir, max_size, min_files, max_files, file_accept, file_processor, file_validator, field_validator, files: controlled_files, on_files_change,
32
- // Notes props
33
- enable_notes, disable_notes, notes, on_notes_change, has_notes, is_notes_active, notes_panel_style, notes_background_color, notes_save_mode, current_user, className, id, disabled,
34
- // HazoChat props
35
- hazo_chat_group_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,
36
- // Reference tag props
37
- reference_value, reference_label, reference_tag_background_color,
38
- // Visibility toggle props
39
- enable_visibility_toggle, disable_visibility_toggle, visibility = 'visible', on_visibility_change, user_role = 'responder',
40
- // Additional entry props
41
- additional_entry, max_additional_entries, entry_index, entry_count, on_add_entry, on_delete_entry, is_additional_entry,
42
- // Delete field props
43
- enable_delete, disable_delete, on_delete,
44
- // Lock field props
45
- enable_lock, disable_lock, locked = false, on_lock_change,
46
- // Skip/N/A field props
47
- enable_skip, disable_skip, skipped = false, on_skip_change,
48
- // Edit actions display mode
49
- edit_actions_display,
50
- // Action buttons styling
51
- action_buttons_borderless,
52
- // File visibility props
53
- enable_file_visibility, private_files_permission, private_files, on_private_files_change,
54
- // Consolidated dropdown props
55
- include_chat_in_dropdown, include_notes_in_dropdown, extract_active_chat, extract_active_notes,
56
- // HazoChat read-only mode
57
- hazo_chat_read_only, icons_behaviour, active_role, ...radio_props } = props;
58
- const { field_id_final, handle_chat_icon_click, handle_chat_close, chat_is_open, is_chat_disabled } = use_collab_form_field({
59
- label,
60
- field_id,
61
- id,
62
- field_data_id,
63
- field_name,
64
- on_chat_click,
65
- hazo_chat_group_id,
66
- hazo_chat_on_open_change,
67
- hazo_chat_is_open,
68
- hazo_chat_on_close,
69
- });
70
- // Check visibility - responders cannot see hidden fields
71
- const is_hidden = visibility === 'hidden';
72
- if (is_hidden && user_role === 'responder') {
19
+ const base = use_base_form_field(props, ref);
20
+ if (base.should_hide)
73
21
  return null;
74
- }
75
- // Determine if field should be disabled when chat is active
76
- // Use is_chat_active if provided, otherwise use chat_is_open
77
- const is_chat_field_disabled = is_chat_active !== undefined ? is_chat_active : chat_is_open;
78
- // Field is disabled if chat is active OR if field is locked
79
- const is_field_disabled = disabled || is_chat_field_disabled || locked || skipped;
80
- // Chat is disabled when field is hidden (for authors viewing hidden fields)
81
- const is_chat_effectively_disabled = is_chat_disabled || is_hidden;
82
- // Determine if this field should show add entry button
83
- const show_add_entry = additional_entry && on_add_entry && (entry_count === undefined || entry_index === entry_count - 1) && (entry_count === undefined || entry_count < (max_additional_entries ?? 10));
84
- // Combined error: external error takes priority over validation error
85
- const display_error = error || validation_error || undefined;
86
- // Handler to adapt data OK changes for both checkbox and multi-state modes
87
- const handle_data_ok_unified_change = React.useCallback((value) => {
88
- if (typeof value === 'boolean') {
89
- on_data_ok_change?.(value);
90
- }
91
- else {
92
- on_data_ok_value_change?.(value);
93
- }
94
- }, [on_data_ok_change, on_data_ok_value_change]);
95
- /**
96
- * Handle radio change event with validation
97
- */
22
+ const { options, value, onChange, field_validator, layout = 'vertical', radio_wrapper_class_name, radio_option_wrapper_class_name, } = props;
98
23
  const handle_change = React.useCallback((e) => {
99
24
  const new_value = e.target.value;
100
- // Run field validator if provided
101
25
  if (field_validator) {
102
- const error_result = field_validator(new_value);
103
- set_validation_error(error_result);
26
+ base.set_validation_error(field_validator(new_value));
104
27
  }
105
28
  onChange(new_value);
106
- }, [field_validator, onChange]);
107
- return (_jsxs(CollabFormFieldContainer, { chat_status: chat_status, 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_group_id: hazo_chat_group_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: handle_chat_close, 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: [_jsxs("div", { className: cn('cls_collab_radio_label_actions_wrapper flex items-center justify-between gap-2', is_hidden && user_role === 'author' && 'opacity-50'), children: [_jsx(CollabFormFieldLabel, { field_id_final: field_id_final, label: label, tooltip: tooltip, label_class_name: label_class_name, required: required, visibility: visibility, locked: locked, label_actions: label_actions }), _jsxs("div", { className: "cls_collab_radio_actions flex items-center gap-2 flex-shrink-0", suppressHydrationWarning: true, children: [show_add_entry && (_jsx(CollabFormAddEntryIcon, { label: label, field_id: field_data_id || field_id_final, on_add_entry: on_add_entry, borderless: action_buttons_borderless })), is_additional_entry && on_delete_entry && (_jsx(CollabFormDeleteEntryIcon, { label: label, field_id: field_data_id || field_id_final, on_delete_entry: on_delete_entry })), _jsx(UnifiedFieldControls, { field_id: field_data_id || field_id_final, icons_behaviour: icons_behaviour, active_role: active_role, metadata: {
108
- data_ok: data_ok_value ?? data_ok_checked,
109
- skipped,
110
- locked,
111
- deleted: false,
112
- visibility,
113
- notes,
114
- chat_status,
115
- }, callbacks: {
116
- on_data_ok_change: handle_data_ok_unified_change,
117
- on_skip_change,
118
- on_notes_change: on_notes_change,
119
- on_chat_click: handle_chat_icon_click,
120
- on_visibility_change,
121
- on_lock_change,
122
- on_delete: on_delete ? () => on_delete(field_data_id || field_id_final) : undefined,
123
- }, config: {
124
- data_ok_mode: data_ok_mode === 'multi_state' ? 'multi_state' : 'checkbox',
125
- data_ok_hidden_states,
126
- chat_group_id: hazo_chat_group_id,
127
- current_user,
128
- field_data_id: field_data_id || field_id_final,
129
- label,
130
- chat_api_base_url: hazo_chat_api_base_url,
131
- chat_timezone: hazo_chat_timezone,
132
- chat_read_only: hazo_chat_read_only,
133
- notes_panel_style,
134
- notes_background_color,
135
- notes_save_mode,
136
- }, fallback_visibility: {
137
- data_ok: !disable_data_ok,
138
- skip: enable_skip && !disable_skip,
139
- notes: enable_notes && !disable_notes,
140
- chat: !disable_chat && !!hazo_chat_group_id,
141
- visibility: enable_visibility_toggle && !disable_visibility_toggle,
142
- lock: enable_lock && !disable_lock,
143
- delete: enable_delete && !disable_delete,
144
- }, fallback_enabled: {
145
- data_ok: data_ok_editable !== false,
146
- skip: !disable_skip,
147
- notes: !disable_notes,
148
- chat: !is_chat_effectively_disabled,
149
- visibility: !disable_visibility_toggle,
150
- lock: !disable_lock,
151
- delete: !disable_delete,
152
- } })] })] }), _jsx("div", { className: cn('cls_collab_radio_wrapper', layout === 'horizontal' && 'flex flex-row items-center gap-4', layout === 'vertical' && 'flex flex-col gap-4', locked && 'bg-slate-100 rounded-md p-2', skipped && 'bg-slate-100 opacity-60 rounded-md p-2', radio_wrapper_class_name), children: options.map((option, index) => {
153
- const option_id = `${field_id_final}-${option.value}`;
154
- const is_checked = value === option.value;
155
- return (_jsxs("div", { className: cn('cls_collab_radio_option_wrapper flex items-center gap-2', radio_option_wrapper_class_name), children: [_jsx("input", { ref: index === 0 ? component_ref : undefined, id: option_id, type: "radio", name: field_id_final, value: option.value, checked: is_checked, onChange: handle_change, disabled: is_field_disabled || option.disabled, className: cn('cls_collab_radio h-4 w-4 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', display_error && 'border-destructive focus-visible:ring-destructive', className), "aria-invalid": display_error ? 'true' : 'false', "aria-describedby": display_error ? `${field_id_final}-error` : undefined, ...get_dom_safe_props(radio_props) }), _jsx("label", { htmlFor: option_id, className: cn('cls_collab_radio_label text-sm font-medium leading-none cursor-pointer peer-disabled:cursor-not-allowed peer-disabled:opacity-70', display_error && 'text-destructive'), children: option.label })] }, option.value));
156
- }) }), _jsx(CollabFormFieldReferenceTag, { reference_value: reference_value, reference_label: reference_label, reference_tag_background_color: reference_tag_background_color }), _jsx(CollabFormFieldError, { field_id_final: field_id_final, error: display_error, error_class_name: error_class_name }), _jsx(CollabFormFileUploadSection, { field_id_final: field_id_final, accept_files: accept_files && !locked, files_dir: files_dir, max_size: max_size, min_files: min_files, max_files: max_files, file_accept: file_accept, file_processor: file_processor, file_validator: file_validator, files: current_files, on_files_change: (new_files) => {
157
- if (controlled_files === undefined) {
158
- set_internal_files(new_files);
159
- }
160
- if (on_files_change) {
161
- on_files_change(new_files);
162
- }
163
- }, component_ref: component_ref, enable_file_visibility: enable_file_visibility, private_files_permission: private_files_permission, private_files: private_files, on_private_files_change: on_private_files_change })] }));
29
+ }, [field_validator, onChange, base.set_validation_error]);
30
+ // Strip base props for DOM rest attributes
31
+ const rest_props = strip_base_props(props);
32
+ delete rest_props.options;
33
+ delete rest_props.value;
34
+ delete rest_props.onChange;
35
+ return (_jsxs(CollabFormFieldContainer, { ...base.container_props, children: [_jsxs("div", { className: cn('cls_collab_radio_label_actions_wrapper flex items-center justify-between gap-2', base.is_hidden && base.user_role === 'author' && 'opacity-50'), children: [_jsx(CollabFormFieldLabel, { ...base.label_props }), _jsxs("div", { className: "cls_collab_radio_actions flex items-center gap-2 flex-shrink-0", suppressHydrationWarning: true, children: [base.entry_props.show_add_entry && (_jsx(CollabFormAddEntryIcon, { label: base.entry_props.label, field_id: base.entry_props.field_id, on_add_entry: base.entry_props.on_add_entry, borderless: base.entry_props.action_buttons_borderless })), base.entry_props.is_additional_entry && base.entry_props.on_delete_entry && (_jsx(CollabFormDeleteEntryIcon, { label: base.entry_props.label, field_id: base.entry_props.field_id, on_delete_entry: base.entry_props.on_delete_entry })), _jsx(UnifiedFieldControls, { ...base.controls_props })] })] }), _jsx("div", { className: cn('cls_collab_radio_wrapper', layout === 'horizontal' && 'flex flex-row items-center gap-4', layout === 'vertical' && 'flex flex-col gap-4', base.locked && 'bg-slate-100 rounded-md p-2', base.skipped && 'bg-slate-100 opacity-60 rounded-md p-2', radio_wrapper_class_name), children: options.map((option, index) => {
36
+ const option_id = `${base.field_id_final}-${option.value}`;
37
+ return (_jsxs("div", { className: cn('cls_collab_radio_option_wrapper flex items-center gap-2', radio_option_wrapper_class_name), children: [_jsx("input", { ref: index === 0 ? base.component_ref : undefined, id: option_id, type: "radio", name: base.field_id_final, value: option.value, checked: value === option.value, onChange: handle_change, disabled: base.is_field_disabled || option.disabled, className: cn('cls_collab_radio h-4 w-4 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', base.display_error && 'border-destructive focus-visible:ring-destructive', base.className), "aria-invalid": base.display_error ? 'true' : 'false', "aria-describedby": base.display_error ? `${base.field_id_final}-error` : undefined, ...get_dom_safe_props(rest_props) }), _jsx("label", { htmlFor: option_id, className: cn('cls_collab_radio_label text-sm font-medium leading-none cursor-pointer peer-disabled:cursor-not-allowed peer-disabled:opacity-70', base.display_error && 'text-destructive'), children: option.label })] }, option.value));
38
+ }) }), _jsx(CollabFormFieldReferenceTag, { ...base.reference_tag_props }), _jsx(CollabFormFieldError, { ...base.error_props }), _jsx(CollabFormFileUploadSection, { ...base.file_upload_props })] }));
164
39
  });
165
40
  HazoCollabFormRadio.displayName = 'HazoCollabFormRadio';
166
41
  //# sourceMappingURL=hazo_collab_form_radio.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"hazo_collab_form_radio.js","sourceRoot":"","sources":["../../src/components/hazo_collab_form_radio.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"hazo_collab_form_radio.js","sourceRoot":"","sources":["../../src/components/hazo_collab_form_radio.tsx"],"names":[],"mappings":"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"}
@@ -8,36 +8,19 @@ import { type CollabFormFieldBaseProps, type FileData } from './hazo_collab_form
8
8
  * Props for the HazoCollabFormTextArea component
9
9
  */
10
10
  export interface HazoCollabFormTextAreaProps extends Omit<React.TextareaHTMLAttributes<HTMLTextAreaElement>, 'value' | 'onChange'>, CollabFormFieldBaseProps {
11
- /**
12
- * Current value of the textarea
13
- */
14
11
  value: string;
15
- /**
16
- * Callback when textarea value changes
17
- */
18
12
  onChange: (value: string) => void;
19
- /**
20
- * Additional context data for chat functionality
21
- */
22
13
  additional_context?: Record<string, unknown>;
23
- /**
24
- * Custom className for the textarea wrapper
25
- */
26
14
  textarea_wrapper_class_name?: string;
27
15
  }
28
16
  /**
29
17
  * Exposed methods for HazoCollabFormTextArea
30
18
  */
31
19
  export interface HazoCollabFormTextAreaRef {
32
- /**
33
- * Get the current files data
34
- * Returns array of FileData objects
35
- */
36
20
  get_file_data: () => FileData[];
37
21
  }
38
22
  /**
39
23
  * Collaboration form textarea component
40
- * Displays a labeled textarea field with error message and chat icon
41
24
  */
42
25
  export declare const HazoCollabFormTextArea: React.ForwardRefExoticComponent<HazoCollabFormTextAreaProps & React.RefAttributes<HTMLTextAreaElement & HazoCollabFormTextAreaRef>>;
43
26
  //# sourceMappingURL=hazo_collab_form_textarea.d.ts.map
@@ -1 +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;AAG1B,OAAO,EASL,KAAK,wBAAwB,EAC7B,KAAK,QAAQ,EAGd,MAAM,4BAA4B,CAAC;AAIpC;;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,qIAoZjC,CAAC"}
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;AAG1B,OAAO,EACL,KAAK,wBAAwB,EAC7B,KAAK,QAAQ,EACd,MAAM,4BAA4B,CAAC;AAKpC;;GAEG;AACH,MAAM,WAAW,2BACf,SAAQ,IAAI,CAAC,KAAK,CAAC,sBAAsB,CAAC,mBAAmB,CAAC,EAAE,OAAO,GAAG,UAAU,CAAC,EACnF,wBAAwB;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,kBAAkB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC7C,2BAA2B,CAAC,EAAE,MAAM,CAAC;CACtC;AAED;;GAEG;AACH,MAAM,WAAW,yBAAyB;IACxC,aAAa,EAAE,MAAM,QAAQ,EAAE,CAAC;CACjC;AAED;;GAEG;AACH,eAAO,MAAM,sBAAsB,qIA+CjC,CAAC"}
@@ -3,160 +3,33 @@
3
3
  * Provides a reusable textarea field with label, error message, and chat icon functionality
4
4
  */
5
5
  'use client';
6
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
6
+ import { jsx as _jsx } from "react/jsx-runtime";
7
7
  import React from 'react';
8
8
  import { cn } from '../utils/cn.js';
9
9
  import { get_dom_safe_props } from '../utils/filter_dom_props.js';
10
- import { use_collab_form_field, CollabFormFieldContainer, CollabFormFieldLabel, CollabFormFieldError, CollabFormFieldReferenceTag, CollabFormFileUploadSection, CollabFormAddEntryIcon, CollabFormDeleteEntryIcon, } from './hazo_collab_form_base.js';
11
- import { UnifiedFieldControls } from './shared/unified_field_controls/index.js';
10
+ import { use_base_form_field } from './shared/use_base_form_field.js';
11
+ import { BaseFieldLayout } from './shared/base_field_layout.js';
12
+ import { strip_base_props } from './shared/strip_base_props.js';
12
13
  /**
13
14
  * Collaboration form textarea component
14
- * Displays a labeled textarea field with error message and chat icon
15
15
  */
16
16
  export const HazoCollabFormTextArea = React.forwardRef((props, ref) => {
17
- // Create internal ref for component reference (for file_processor)
18
- const component_ref = React.useRef(null);
19
- const [internal_files, set_internal_files] = React.useState([]);
20
- // Internal validation error state
21
- const [validation_error, set_validation_error] = React.useState(null);
22
- // Use controlled files if provided, otherwise use internal state
23
- const current_files = props.files !== undefined ? props.files : internal_files;
24
- // Expose get_file_data method and forward ref to textarea element
25
- React.useImperativeHandle(ref, () => {
26
- return {
27
- ...component_ref.current,
28
- get_file_data: () => current_files,
29
- };
30
- }, [current_files]);
31
- const { label, tooltip, error, field_id, field_data_id, field_name, value, onChange, additional_context, on_chat_click, chat_status, is_chat_active, chat_background_color = 'bg-muted', is_data_ok_default, container_class_name, label_class_name, label_actions, textarea_wrapper_class_name, error_class_name, field_width_class_name, required, multi_state_radio, data_ok_checked, on_data_ok_change, data_ok_mode, data_ok_value, on_data_ok_value_change, data_ok_default, data_ok_hidden_states, data_ok_editable, disable_data_ok, disable_chat, accept_files, files_dir, max_size, min_files, max_files, file_accept, file_processor, file_validator, field_validator, files: controlled_files_prop, on_files_change,
32
- // Notes props
33
- enable_notes, disable_notes, notes, on_notes_change, has_notes, is_notes_active, notes_panel_style, notes_background_color, notes_save_mode, current_user, className, id,
34
- // HazoChat props
35
- hazo_chat_group_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,
36
- // Reference tag props
37
- reference_value, reference_label, reference_tag_background_color,
38
- // Visibility toggle props
39
- enable_visibility_toggle, disable_visibility_toggle, visibility = 'visible', on_visibility_change, user_role = 'responder',
40
- // Additional entry props
41
- additional_entry, max_additional_entries, entry_index, entry_count, on_add_entry, on_delete_entry, is_additional_entry,
42
- // Delete field props
43
- enable_delete, disable_delete, on_delete,
44
- // Lock field props
45
- enable_lock, disable_lock, locked = false, on_lock_change,
46
- // Skip/N/A field props
47
- enable_skip, disable_skip, skipped = false, on_skip_change,
48
- // Edit actions display mode
49
- edit_actions_display,
50
- // Action buttons styling
51
- action_buttons_borderless,
52
- // File visibility props
53
- enable_file_visibility, private_files_permission, private_files, on_private_files_change,
54
- // Consolidated dropdown props
55
- include_chat_in_dropdown, include_notes_in_dropdown, extract_active_chat, extract_active_notes,
56
- // HazoChat read-only mode
57
- hazo_chat_read_only, icons_behaviour, active_role, ...textarea_props } = props;
58
- const { field_id_final, handle_chat_icon_click, handle_chat_close, chat_is_open, is_chat_disabled } = use_collab_form_field({
59
- label,
60
- field_id,
61
- id,
62
- field_data_id,
63
- field_name,
64
- on_chat_click,
65
- hazo_chat_group_id,
66
- hazo_chat_on_open_change,
67
- hazo_chat_is_open,
68
- hazo_chat_on_close,
69
- });
70
- // Check visibility - responders cannot see hidden fields
71
- const is_hidden = visibility === 'hidden';
72
- if (is_hidden && user_role === 'responder') {
17
+ const base = use_base_form_field(props, ref);
18
+ if (base.should_hide)
73
19
  return null;
74
- }
75
- // Determine if field should be disabled when chat is active
76
- // Use is_chat_active if provided, otherwise use chat_is_open
77
- const is_chat_field_disabled = is_chat_active !== undefined ? is_chat_active : chat_is_open;
78
- // Field is disabled if chat is active OR if field is locked
79
- const is_field_disabled = is_chat_field_disabled || locked || skipped;
80
- // Chat is disabled when field is hidden (for authors viewing hidden fields)
81
- const is_chat_effectively_disabled = is_chat_disabled || is_hidden;
82
- // Determine if this field should show add entry button
83
- const show_add_entry = additional_entry && on_add_entry && (entry_count === undefined || entry_index === entry_count - 1) && (entry_count === undefined || entry_count < (max_additional_entries ?? 10));
84
- // Combined error: external error takes priority over validation error
85
- const display_error = error || validation_error || undefined;
86
- // Handler to adapt data OK changes for both checkbox and multi-state modes
87
- const handle_data_ok_unified_change = React.useCallback((value) => {
88
- if (typeof value === 'boolean') {
89
- on_data_ok_change?.(value);
90
- }
91
- else {
92
- on_data_ok_value_change?.(value);
93
- }
94
- }, [on_data_ok_change, on_data_ok_value_change]);
95
- /**
96
- * Handle textarea change event with validation
97
- */
20
+ const { value, onChange, field_validator, textarea_wrapper_class_name } = props;
98
21
  const handle_change = React.useCallback((e) => {
99
22
  const new_value = e.target.value;
100
- // Run field validator if provided
101
23
  if (field_validator) {
102
- const error_result = field_validator(new_value);
103
- set_validation_error(error_result);
24
+ base.set_validation_error(field_validator(new_value));
104
25
  }
105
26
  onChange(new_value);
106
- }, [field_validator, onChange]);
107
- return (_jsxs(CollabFormFieldContainer, { chat_status: chat_status, 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_group_id: hazo_chat_group_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: handle_chat_close, 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, tooltip: tooltip, label_class_name: label_class_name, required: required, visibility: visibility, locked: locked, label_actions: label_actions }), _jsxs("div", { className: cn('cls_collab_textarea_wrapper flex items-start gap-2', textarea_wrapper_class_name, is_hidden && user_role === 'author' && 'opacity-50'), 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', display_error && 'border-destructive focus-visible:ring-destructive', locked && 'bg-slate-100', skipped && 'bg-slate-100 opacity-60', className), "aria-invalid": display_error ? 'true' : 'false', "aria-describedby": display_error ? `${field_id_final}-error` : undefined, ...get_dom_safe_props(textarea_props) }) }), _jsx(UnifiedFieldControls, { field_id: field_data_id || field_id_final, icons_behaviour: icons_behaviour, active_role: active_role, metadata: {
108
- data_ok: data_ok_value ?? data_ok_checked,
109
- skipped,
110
- locked,
111
- deleted: false,
112
- visibility,
113
- notes,
114
- chat_status,
115
- }, callbacks: {
116
- on_data_ok_change: handle_data_ok_unified_change,
117
- on_skip_change,
118
- on_notes_change: on_notes_change,
119
- on_chat_click: handle_chat_icon_click,
120
- on_visibility_change,
121
- on_lock_change,
122
- on_delete: on_delete ? () => on_delete(field_data_id || field_id_final) : undefined,
123
- }, config: {
124
- data_ok_mode: data_ok_mode === 'multi_state' ? 'multi_state' : 'checkbox',
125
- data_ok_hidden_states,
126
- chat_group_id: hazo_chat_group_id,
127
- current_user,
128
- field_data_id: field_data_id || field_id_final,
129
- label,
130
- chat_api_base_url: hazo_chat_api_base_url,
131
- chat_timezone: hazo_chat_timezone,
132
- chat_read_only: hazo_chat_read_only,
133
- notes_panel_style,
134
- notes_background_color,
135
- notes_save_mode,
136
- }, fallback_visibility: {
137
- data_ok: !disable_data_ok,
138
- skip: enable_skip && !disable_skip,
139
- notes: enable_notes && !disable_notes,
140
- chat: !disable_chat && !!hazo_chat_group_id,
141
- visibility: enable_visibility_toggle && !disable_visibility_toggle,
142
- lock: enable_lock && !disable_lock,
143
- delete: enable_delete && !disable_delete,
144
- }, fallback_enabled: {
145
- data_ok: data_ok_editable !== false,
146
- skip: !disable_skip,
147
- notes: !disable_notes,
148
- chat: !is_chat_effectively_disabled,
149
- visibility: !disable_visibility_toggle,
150
- lock: !disable_lock,
151
- delete: !disable_delete,
152
- } })] }), show_add_entry && (_jsx(CollabFormAddEntryIcon, { label: label, field_id: field_data_id || field_id_final, on_add_entry: on_add_entry, borderless: action_buttons_borderless })), is_additional_entry && on_delete_entry && (_jsx(CollabFormDeleteEntryIcon, { label: label, field_id: field_data_id || field_id_final, on_delete_entry: on_delete_entry })), _jsx(CollabFormFieldReferenceTag, { reference_value: reference_value, reference_label: reference_label, reference_tag_background_color: reference_tag_background_color }), _jsx(CollabFormFieldError, { field_id_final: field_id_final, error: display_error, error_class_name: error_class_name }), _jsx(CollabFormFileUploadSection, { field_id_final: field_id_final, accept_files: accept_files && !locked, files_dir: files_dir, max_size: max_size, min_files: min_files, max_files: max_files, file_accept: file_accept, file_processor: file_processor, file_validator: file_validator, files: current_files, on_files_change: (new_files) => {
153
- if (controlled_files_prop === 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, enable_file_visibility: enable_file_visibility, private_files_permission: private_files_permission, private_files: private_files, on_private_files_change: on_private_files_change })] }));
27
+ }, [field_validator, onChange, base.set_validation_error]);
28
+ // Strip base props to get only DOM-safe attributes
29
+ const rest_props = strip_base_props(props);
30
+ delete rest_props.value;
31
+ delete rest_props.onChange;
32
+ return (_jsx(BaseFieldLayout, { base: base, wrapper_class_name: "cls_collab_textarea_wrapper", wrapper_extra_class_name: textarea_wrapper_class_name, children: _jsx("textarea", { ref: base.component_ref, id: base.field_id_final, value: value, onChange: handle_change, disabled: base.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', base.display_error && 'border-destructive focus-visible:ring-destructive', base.locked && 'bg-slate-100', base.skipped && 'bg-slate-100 opacity-60', base.className), "aria-invalid": base.display_error ? 'true' : 'false', "aria-describedby": base.display_error ? `${base.field_id_final}-error` : undefined, ...get_dom_safe_props(rest_props) }) }));
160
33
  });
161
34
  HazoCollabFormTextArea.displayName = 'HazoCollabFormTextArea';
162
35
  //# sourceMappingURL=hazo_collab_form_textarea.js.map
@@ -1 +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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"}
1
+ {"version":3,"file":"hazo_collab_form_textarea.js","sourceRoot":"","sources":["../../src/components/hazo_collab_form_textarea.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,YAAY,CAAC;;AAEb,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,EAAE,EAAE,MAAM,gBAAgB,CAAC;AACpC,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAKlE,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AACtE,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAqBhE;;GAEG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,KAAK,CAAC,UAAU,CAGpD,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;IACf,MAAM,IAAI,GAAG,mBAAmB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAC7C,IAAI,IAAI,CAAC,WAAW;QAAE,OAAO,IAAI,CAAC;IAElC,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,eAAe,EAAE,2BAA2B,EAAE,GAAG,KAAK,CAAC;IAEhF,MAAM,aAAa,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC,CAAyC,EAAE,EAAE;QACpF,MAAM,SAAS,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;QACjC,IAAI,eAAe,EAAE,CAAC;YACpB,IAAI,CAAC,oBAAoB,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,CAAC;QACxD,CAAC;QACD,QAAQ,CAAC,SAAS,CAAC,CAAC;IACtB,CAAC,EAAE,CAAC,eAAe,EAAE,QAAQ,EAAE,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC;IAE3D,mDAAmD;IACnD,MAAM,UAAU,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;IAC3C,OAAO,UAAU,CAAC,KAAK,CAAC;IACxB,OAAO,UAAU,CAAC,QAAQ,CAAC;IAE3B,OAAO,CACL,KAAC,eAAe,IACd,IAAI,EAAE,IAAI,EACV,kBAAkB,EAAC,6BAA6B,EAChD,wBAAwB,EAAE,2BAA2B,YAErD,mBACE,GAAG,EAAE,IAAI,CAAC,aAAa,EACvB,EAAE,EAAE,IAAI,CAAC,cAAc,EACvB,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,aAAa,EACvB,QAAQ,EAAE,IAAI,CAAC,iBAAiB,EAChC,SAAS,EAAE,EAAE,CACX,sTAAsT,EACtT,IAAI,CAAC,aAAa,IAAI,mDAAmD,EACzE,IAAI,CAAC,MAAM,IAAI,cAAc,EAC7B,IAAI,CAAC,OAAO,IAAI,yBAAyB,EACzC,IAAI,CAAC,SAAS,CACf,kBACa,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,sBACjC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,cAAc,QAAQ,CAAC,CAAC,CAAC,SAAS,KAC7E,kBAAkB,CAAC,UAAU,CAAC,GAClC,GACc,CACnB,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,sBAAsB,CAAC,WAAW,GAAG,wBAAwB,CAAC"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Shared hook that wraps ViewCallbacks into stable useCallback references.
3
+ *
4
+ * EditView creates ~12 useCallback wrappers that simply forward calls
5
+ * to the `callbacks` object from context. This hook consolidates them.
6
+ */
7
+ import type { ViewCallbacks, FileData } from '../types.js';
8
+ import type { FieldMetadataChange as FormSetMetadataChange } from '../../_internal_form_set.js';
9
+ /**
10
+ * Creates stable callback wrappers around ViewCallbacks from context.
11
+ * Each callback is memoized with [callbacks] as the only dependency.
12
+ */
13
+ export declare function use_view_callbacks(callbacks: ViewCallbacks): {
14
+ handle_field_change: (field_id: string, value: unknown) => void;
15
+ handle_form_data_change: (data: Record<string, unknown>) => void;
16
+ handle_metadata_change: (change: FormSetMetadataChange) => void;
17
+ handle_data_ok_change: (field_id: string, value: boolean | "ok" | "not_ok" | "pending") => void;
18
+ handle_notes_change: (field_id: string, notes: Array<{
19
+ userid: string;
20
+ note_text: string;
21
+ user_name: string;
22
+ user_email: string;
23
+ created_at: string;
24
+ }>) => void;
25
+ handle_visibility_change: (field_id: string, visibility: "visible" | "hidden") => void;
26
+ handle_lock_change: (field_id: string, locked: boolean) => void;
27
+ handle_delete: (field_id: string) => void;
28
+ handle_skip_change: (field_id: string, skipped: boolean) => void;
29
+ handle_add_field_config: (after_field_id: string, field_config: unknown) => void;
30
+ handle_add_group_config: (position_id: string, group_config: unknown) => void;
31
+ handle_edit_field_config: (field_id: string, current_config: unknown) => void;
32
+ handle_delete_field: (field_id: string) => void;
33
+ handle_files_change: (field_id: string, files: FileData[]) => void;
34
+ handle_private_files_change: (field_id: string, files: FileData[]) => void;
35
+ };
36
+ //# sourceMappingURL=use_view_callbacks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use_view_callbacks.d.ts","sourceRoot":"","sources":["../../../../src/components/hazo_collab_form_view/hooks/use_view_callbacks.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,KAAK,EAAE,aAAa,EAAwC,QAAQ,EAAE,MAAM,aAAa,CAAC;AACjG,OAAO,KAAK,EAAE,mBAAmB,IAAI,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AAEhG;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,aAAa;oCAE5C,MAAM,SAAS,OAAO;oCAO1B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;qCAOrB,qBAAqB;sCAYnB,MAAM,SAAS,OAAO,GAAG,IAAI,GAAG,QAAQ,GAAG,SAAS;oCAOpD,MAAM,SAAS,KAAK,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC;yCAOtH,MAAM,cAAc,SAAS,GAAG,QAAQ;mCAOxC,MAAM,UAAU,OAAO;8BAOvB,MAAM;mCAON,MAAM,WAAW,OAAO;8CAOlB,MAAM,gBAAgB,OAAO;2CAOhC,MAAM,gBAAgB,OAAO;yCAOhC,MAAM,kBAAkB,OAAO;oCAO/B,MAAM;oCAON,MAAM,SAAS,QAAQ,EAAE;4CAOzB,MAAM,SAAS,QAAQ,EAAE;EAuBvC"}
@@ -0,0 +1,82 @@
1
+ /**
2
+ * Shared hook that wraps ViewCallbacks into stable useCallback references.
3
+ *
4
+ * EditView creates ~12 useCallback wrappers that simply forward calls
5
+ * to the `callbacks` object from context. This hook consolidates them.
6
+ */
7
+ 'use client';
8
+ import { useCallback } from 'react';
9
+ /**
10
+ * Creates stable callback wrappers around ViewCallbacks from context.
11
+ * Each callback is memoized with [callbacks] as the only dependency.
12
+ */
13
+ export function use_view_callbacks(callbacks) {
14
+ const handle_field_change = useCallback((field_id, value) => {
15
+ callbacks.on_field_change?.(field_id, value);
16
+ }, [callbacks]);
17
+ const handle_form_data_change = useCallback((data) => {
18
+ callbacks.on_form_data_change?.(data);
19
+ }, [callbacks]);
20
+ const handle_metadata_change = useCallback((change) => {
21
+ const { field_id, ...rest } = change;
22
+ const context_change = {
23
+ field_id,
24
+ changes: rest,
25
+ };
26
+ callbacks.on_metadata_change?.(context_change);
27
+ }, [callbacks]);
28
+ const handle_data_ok_change = useCallback((field_id, value) => {
29
+ callbacks.on_data_ok_change?.(field_id, value);
30
+ }, [callbacks]);
31
+ const handle_notes_change = useCallback((field_id, notes) => {
32
+ callbacks.on_notes_change?.(field_id, notes);
33
+ }, [callbacks]);
34
+ const handle_visibility_change = useCallback((field_id, visibility) => {
35
+ callbacks.on_visibility_change?.(field_id, visibility);
36
+ }, [callbacks]);
37
+ const handle_lock_change = useCallback((field_id, locked) => {
38
+ callbacks.on_lock_change?.(field_id, locked);
39
+ }, [callbacks]);
40
+ const handle_delete = useCallback((field_id) => {
41
+ callbacks.on_delete?.(field_id);
42
+ }, [callbacks]);
43
+ const handle_skip_change = useCallback((field_id, skipped) => {
44
+ callbacks.on_skip_change?.(field_id, skipped);
45
+ }, [callbacks]);
46
+ const handle_add_field_config = useCallback((after_field_id, field_config) => {
47
+ callbacks.on_add_field?.(after_field_id, field_config);
48
+ }, [callbacks]);
49
+ const handle_add_group_config = useCallback((position_id, group_config) => {
50
+ callbacks.on_add_group_config?.(position_id, group_config);
51
+ }, [callbacks]);
52
+ const handle_edit_field_config = useCallback((field_id, current_config) => {
53
+ callbacks.on_edit_field_config?.(field_id, current_config);
54
+ }, [callbacks]);
55
+ const handle_delete_field = useCallback((field_id) => {
56
+ callbacks.on_delete_field?.(field_id);
57
+ }, [callbacks]);
58
+ const handle_files_change = useCallback((field_id, files) => {
59
+ callbacks.on_field_files_change?.(field_id, files);
60
+ }, [callbacks]);
61
+ const handle_private_files_change = useCallback((field_id, files) => {
62
+ callbacks.on_field_private_files_change?.(field_id, files);
63
+ }, [callbacks]);
64
+ return {
65
+ handle_field_change,
66
+ handle_form_data_change,
67
+ handle_metadata_change,
68
+ handle_data_ok_change,
69
+ handle_notes_change,
70
+ handle_visibility_change,
71
+ handle_lock_change,
72
+ handle_delete,
73
+ handle_skip_change,
74
+ handle_add_field_config,
75
+ handle_add_group_config,
76
+ handle_edit_field_config,
77
+ handle_delete_field,
78
+ handle_files_change,
79
+ handle_private_files_change,
80
+ };
81
+ }
82
+ //# sourceMappingURL=use_view_callbacks.js.map