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
@@ -0,0 +1,91 @@
1
+ /**
2
+ * Utility to strip CollabFormFieldBaseProps keys from a props object,
3
+ * leaving only DOM-safe rest props for spreading onto native elements.
4
+ *
5
+ * This replaces the massive destructuring block in each form component
6
+ * where every base prop is assigned to an unused `_` variable just to
7
+ * get the `...rest` for the underlying input element.
8
+ */
9
+ /** All known prop keys from CollabFormFieldBaseProps and common form component props */
10
+ const BASE_PROP_KEYS = new Set([
11
+ // CollabFormFieldBaseProps
12
+ 'label', 'tooltip', 'error', 'field_id', 'field_data_id', 'field_name',
13
+ 'on_chat_click', 'has_chat_messages', 'chat_status', 'is_chat_active',
14
+ 'chat_background_color', 'is_data_ok_default', 'data_ok_checked',
15
+ 'on_data_ok_change', 'data_ok_mode', 'data_ok_value', 'on_data_ok_value_change',
16
+ 'container_class_name', 'row_background_color', 'label_class_name', 'label_actions',
17
+ 'field_wrapper_class_name', 'error_class_name', 'field_width_class_name',
18
+ 'required', 'multi_state_radio',
19
+ // hazo_chat props
20
+ 'hazo_chat_group_id', 'hazo_chat_reference_id', 'hazo_chat_reference_type',
21
+ 'hazo_chat_api_base_url', 'hazo_chat_timezone', 'hazo_chat_title',
22
+ 'hazo_chat_subtitle', 'hazo_chat_realtime_mode', 'hazo_chat_polling_interval',
23
+ 'hazo_chat_messages_per_page', 'hazo_chat_class_name', 'hazo_chat_on_close',
24
+ 'hazo_chat_is_open', 'hazo_chat_on_open_change', 'hazo_chat_show_sidebar_toggle',
25
+ 'hazo_chat_show_delete_button', 'hazo_chat_bubble_radius', 'hazo_chat_read_only',
26
+ 'hazo_chat_hide_references', 'hazo_chat_hide_sidebar', 'hazo_chat_hide_preview',
27
+ 'hazo_chat_display_mode', 'hazo_chat_container_element', 'hazo_chat_log_polling',
28
+ // data_ok props
29
+ 'disable_data_ok', 'disable_chat', 'data_ok_editable', 'data_ok_default',
30
+ 'data_ok_hidden_states',
31
+ // file props
32
+ 'accept_files_public', 'accept_files_private', 'files_dir', 'max_size', 'min_files', 'max_files',
33
+ 'file_accept', 'file_processor', 'files', 'on_files_change', 'file_validator',
34
+ 'field_validator',
35
+ 'private_files_permission', 'can_access_private_files',
36
+ 'private_files', 'on_private_files_change',
37
+ // notes props
38
+ 'enable_notes', 'disable_notes', 'notes', 'on_notes_change',
39
+ 'has_notes', 'is_notes_active', 'notes_panel_style', 'notes_background_color',
40
+ 'notes_save_mode', 'current_user',
41
+ // reference tag props
42
+ 'reference_value', 'reference_label', 'reference_tag_background_color',
43
+ // visibility props
44
+ 'enable_visibility_toggle', 'disable_visibility_toggle', 'visibility',
45
+ 'on_visibility_change', 'user_role',
46
+ // additional entry props
47
+ 'additional_entry', 'max_additional_entries', 'entry_index', 'entry_count',
48
+ 'on_add_entry', 'on_delete_entry', 'is_additional_entry',
49
+ // delete props
50
+ 'enable_delete', 'disable_delete', 'on_delete',
51
+ // lock props
52
+ 'enable_lock', 'disable_lock', 'locked', 'on_lock_change',
53
+ // skip props
54
+ 'enable_skip', 'disable_skip', 'skipped', 'on_skip_change',
55
+ // display props
56
+ 'edit_actions_display', 'action_buttons_borderless',
57
+ // dropdown consolidation
58
+ 'include_chat_in_dropdown', 'include_notes_in_dropdown',
59
+ 'extract_active_chat', 'extract_active_notes',
60
+ // icons_behaviour
61
+ 'icons_behaviour', 'active_role',
62
+ // common component-specific props that should be stripped
63
+ 'additional_context',
64
+ // these are handled by the component itself, not the DOM
65
+ 'input_wrapper_class_name', 'textarea_wrapper_class_name',
66
+ 'checkbox_wrapper_class_name', 'checkbox_label_class_name', 'checkbox_label',
67
+ 'radio_wrapper_class_name', 'radio_option_wrapper_class_name', 'layout',
68
+ 'combo_wrapper_class_name', 'button_class_name', 'enable_search',
69
+ 'search_placeholder', 'empty_message', 'placeholder', 'options',
70
+ 'date_wrapper_class_name', 'date_mode', 'min_date', 'max_date',
71
+ 'disabled_dates', 'caption_layout', 'start_month', 'end_month', 'date_format',
72
+ 'dropzone_class_name', 'dropzone_wrapper_class_name', 'upload_endpoint',
73
+ ]);
74
+ /**
75
+ * Strip all known base/internal props from the props object,
76
+ * returning only DOM-safe attributes for spreading onto native elements.
77
+ *
78
+ * Also strips hazo_chat_* and hazo_notes_* prefixed props as a safety net.
79
+ */
80
+ export function strip_base_props(props) {
81
+ const result = {};
82
+ for (const key of Object.keys(props)) {
83
+ if (BASE_PROP_KEYS.has(key))
84
+ continue;
85
+ if (key.startsWith('hazo_chat_') || key.startsWith('hazo_notes_'))
86
+ continue;
87
+ result[key] = props[key];
88
+ }
89
+ return result;
90
+ }
91
+ //# sourceMappingURL=strip_base_props.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"strip_base_props.js","sourceRoot":"","sources":["../../../src/components/shared/strip_base_props.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,wFAAwF;AACxF,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC;IAC7B,2BAA2B;IAC3B,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,YAAY;IACtE,eAAe,EAAE,mBAAmB,EAAE,aAAa,EAAE,gBAAgB;IACrE,uBAAuB,EAAE,oBAAoB,EAAE,iBAAiB;IAChE,mBAAmB,EAAE,cAAc,EAAE,eAAe,EAAE,yBAAyB;IAC/E,sBAAsB,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,eAAe;IACnF,0BAA0B,EAAE,kBAAkB,EAAE,wBAAwB;IACxE,UAAU,EAAE,mBAAmB;IAC/B,kBAAkB;IAClB,oBAAoB,EAAE,wBAAwB,EAAE,0BAA0B;IAC1E,wBAAwB,EAAE,oBAAoB,EAAE,iBAAiB;IACjE,oBAAoB,EAAE,yBAAyB,EAAE,4BAA4B;IAC7E,6BAA6B,EAAE,sBAAsB,EAAE,oBAAoB;IAC3E,mBAAmB,EAAE,0BAA0B,EAAE,+BAA+B;IAChF,8BAA8B,EAAE,yBAAyB,EAAE,qBAAqB;IAChF,2BAA2B,EAAE,wBAAwB,EAAE,wBAAwB;IAC/E,wBAAwB,EAAE,6BAA6B,EAAE,uBAAuB;IAChF,gBAAgB;IAChB,iBAAiB,EAAE,cAAc,EAAE,kBAAkB,EAAE,iBAAiB;IACxE,uBAAuB;IACvB,aAAa;IACb,qBAAqB,EAAE,sBAAsB,EAAE,WAAW,EAAE,UAAU,EAAE,WAAW,EAAE,WAAW;IAChG,aAAa,EAAE,gBAAgB,EAAE,OAAO,EAAE,iBAAiB,EAAE,gBAAgB;IAC7E,iBAAiB;IACjB,0BAA0B,EAAE,0BAA0B;IACtD,eAAe,EAAE,yBAAyB;IAC1C,cAAc;IACd,cAAc,EAAE,eAAe,EAAE,OAAO,EAAE,iBAAiB;IAC3D,WAAW,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,wBAAwB;IAC7E,iBAAiB,EAAE,cAAc;IACjC,sBAAsB;IACtB,iBAAiB,EAAE,iBAAiB,EAAE,gCAAgC;IACtE,mBAAmB;IACnB,0BAA0B,EAAE,2BAA2B,EAAE,YAAY;IACrE,sBAAsB,EAAE,WAAW;IACnC,yBAAyB;IACzB,kBAAkB,EAAE,wBAAwB,EAAE,aAAa,EAAE,aAAa;IAC1E,cAAc,EAAE,iBAAiB,EAAE,qBAAqB;IACxD,eAAe;IACf,eAAe,EAAE,gBAAgB,EAAE,WAAW;IAC9C,aAAa;IACb,aAAa,EAAE,cAAc,EAAE,QAAQ,EAAE,gBAAgB;IACzD,aAAa;IACb,aAAa,EAAE,cAAc,EAAE,SAAS,EAAE,gBAAgB;IAC1D,gBAAgB;IAChB,sBAAsB,EAAE,2BAA2B;IACnD,yBAAyB;IACzB,0BAA0B,EAAE,2BAA2B;IACvD,qBAAqB,EAAE,sBAAsB;IAC7C,kBAAkB;IAClB,iBAAiB,EAAE,aAAa;IAChC,0DAA0D;IAC1D,oBAAoB;IACpB,yDAAyD;IACzD,0BAA0B,EAAE,6BAA6B;IACzD,6BAA6B,EAAE,2BAA2B,EAAE,gBAAgB;IAC5E,0BAA0B,EAAE,iCAAiC,EAAE,QAAQ;IACvE,0BAA0B,EAAE,mBAAmB,EAAE,eAAe;IAChE,oBAAoB,EAAE,eAAe,EAAE,aAAa,EAAE,SAAS;IAC/D,yBAAyB,EAAE,WAAW,EAAE,UAAU,EAAE,UAAU;IAC9D,gBAAgB,EAAE,gBAAgB,EAAE,aAAa,EAAE,WAAW,EAAE,aAAa;IAC7E,qBAAqB,EAAE,6BAA6B,EAAE,iBAAiB;CACxE,CAAC,CAAC;AAEH;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAAgC,KAAQ;IACtE,MAAM,MAAM,GAAwB,EAAE,CAAC;IACvC,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACrC,IAAI,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,SAAS;QACtC,IAAI,GAAG,CAAC,UAAU,CAAC,YAAY,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,aAAa,CAAC;YAAE,SAAS;QAC5E,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;IAC3B,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Shared file extraction helpers for reading field-level files from form_data.
3
+ * Used by summary_view, print_view, approval_view, and any other view that
4
+ * reads files stored at __files_${field_id} / __private_files_${field_id}.
5
+ */
6
+ import type { FileData } from '../../hazo_collab_form_base.js';
7
+ /** Extract public files for a field from form_data */
8
+ export declare function get_field_files(form_data: Record<string, unknown>, field_id: string): FileData[];
9
+ /** Extract private files for a field from form_data */
10
+ export declare function get_field_private_files(form_data: Record<string, unknown>, field_id: string): FileData[];
11
+ //# sourceMappingURL=file_helpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file_helpers.d.ts","sourceRoot":"","sources":["../../../../src/components/shared/summary_utils/file_helpers.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AAE/D,sDAAsD;AACtD,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,QAAQ,EAAE,MAAM,GAAG,QAAQ,EAAE,CAGhG;AAED,uDAAuD;AACvD,wBAAgB,uBAAuB,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,QAAQ,EAAE,MAAM,GAAG,QAAQ,EAAE,CAGxG"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Shared file extraction helpers for reading field-level files from form_data.
3
+ * Used by summary_view, print_view, approval_view, and any other view that
4
+ * reads files stored at __files_${field_id} / __private_files_${field_id}.
5
+ */
6
+ /** Extract public files for a field from form_data */
7
+ export function get_field_files(form_data, field_id) {
8
+ const files = form_data[`__files_${field_id}`];
9
+ return Array.isArray(files) ? files : [];
10
+ }
11
+ /** Extract private files for a field from form_data */
12
+ export function get_field_private_files(form_data, field_id) {
13
+ const files = form_data[`__private_files_${field_id}`];
14
+ return Array.isArray(files) ? files : [];
15
+ }
16
+ //# sourceMappingURL=file_helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file_helpers.js","sourceRoot":"","sources":["../../../../src/components/shared/summary_utils/file_helpers.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,sDAAsD;AACtD,MAAM,UAAU,eAAe,CAAC,SAAkC,EAAE,QAAgB;IAClF,MAAM,KAAK,GAAG,SAAS,CAAC,WAAW,QAAQ,EAAE,CAAC,CAAC;IAC/C,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAmB,CAAC,CAAC,CAAC,EAAE,CAAC;AACzD,CAAC;AAED,uDAAuD;AACvD,MAAM,UAAU,uBAAuB,CAAC,SAAkC,EAAE,QAAgB;IAC1F,MAAM,KAAK,GAAG,SAAS,CAAC,mBAAmB,QAAQ,EAAE,CAAC,CAAC;IACvD,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAmB,CAAC,CAAC,CAAC,EAAE,CAAC;AACzD,CAAC"}
@@ -1,2 +1,3 @@
1
1
  export { format_date_value, get_display_label } from './summary_utils.js';
2
+ export { get_field_files, get_field_private_files } from './file_helpers.js';
2
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/shared/summary_utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/shared/summary_utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAC1E,OAAO,EAAE,eAAe,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC"}
@@ -1,2 +1,3 @@
1
1
  export { format_date_value, get_display_label } from './summary_utils.js';
2
+ export { get_field_files, get_field_private_files } from './file_helpers.js';
2
3
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/shared/summary_utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/shared/summary_utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAC1E,OAAO,EAAE,eAAe,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC"}
@@ -40,6 +40,7 @@
40
40
  export { UnifiedFieldControls } from './unified_field_controls.js';
41
41
  export { KebabMenu } from './kebab_menu.js';
42
42
  export { use_control_resolution } from './use_control_resolution.js';
43
+ export { use_field_control_props, type UseFieldControlPropsInput } from './use_field_control_props.js';
43
44
  export { resolve_field_controls, controls_to_fallback_visibility, type ControlEnableSettings, type ResolvedControlSettings, } from './resolve_field_controls.js';
44
45
  export { build_control_props, type FieldControlConfig, type FormControlContext, type FormControlCallbacks, } from './build_control_props.js';
45
46
  export type { UnifiedFieldControlsProps, ControlMetadata, ControlCallbacks, ControlConfig, FallbackSettings, DataOkAutoActions, ResolvedControlState, ControlResolutionResult, KebabMenuProps, IconsBehaviour, ControlName, DataOkState, ChatStatus, NoteEntry, } from './types.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/shared/unified_field_controls/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AAGH,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAGnE,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAG5C,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAGrE,OAAO,EACL,sBAAsB,EACtB,+BAA+B,EAC/B,KAAK,qBAAqB,EAC1B,KAAK,uBAAuB,GAC7B,MAAM,6BAA6B,CAAC;AAGrC,OAAO,EACL,mBAAmB,EACnB,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,EACvB,KAAK,oBAAoB,GAC1B,MAAM,0BAA0B,CAAC;AAGlC,YAAY,EACV,yBAAyB,EACzB,eAAe,EACf,gBAAgB,EAChB,aAAa,EACb,gBAAgB,EAChB,iBAAiB,EACjB,oBAAoB,EACpB,uBAAuB,EACvB,cAAc,EACd,cAAc,EACd,WAAW,EACX,WAAW,EACX,UAAU,EACV,SAAS,GACV,MAAM,YAAY,CAAC;AAGpB,OAAO,EACL,YAAY,EACZ,eAAe,EACf,2BAA2B,EAC3B,wBAAwB,EACxB,uBAAuB,EACvB,mBAAmB,EACnB,sBAAsB,GACvB,MAAM,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/shared/unified_field_controls/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AAGH,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAGnE,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAG5C,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,uBAAuB,EAAE,KAAK,yBAAyB,EAAE,MAAM,8BAA8B,CAAC;AAGvG,OAAO,EACL,sBAAsB,EACtB,+BAA+B,EAC/B,KAAK,qBAAqB,EAC1B,KAAK,uBAAuB,GAC7B,MAAM,6BAA6B,CAAC;AAGrC,OAAO,EACL,mBAAmB,EACnB,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,EACvB,KAAK,oBAAoB,GAC1B,MAAM,0BAA0B,CAAC;AAGlC,YAAY,EACV,yBAAyB,EACzB,eAAe,EACf,gBAAgB,EAChB,aAAa,EACb,gBAAgB,EAChB,iBAAiB,EACjB,oBAAoB,EACpB,uBAAuB,EACvB,cAAc,EACd,cAAc,EACd,WAAW,EACX,WAAW,EACX,UAAU,EACV,SAAS,GACV,MAAM,YAAY,CAAC;AAGpB,OAAO,EACL,YAAY,EACZ,eAAe,EACf,2BAA2B,EAC3B,wBAAwB,EACxB,uBAAuB,EACvB,mBAAmB,EACnB,sBAAsB,GACvB,MAAM,gBAAgB,CAAC"}
@@ -41,8 +41,9 @@
41
41
  export { UnifiedFieldControls } from './unified_field_controls.js';
42
42
  // Sub-components
43
43
  export { KebabMenu } from './kebab_menu.js';
44
- // Hook
44
+ // Hooks
45
45
  export { use_control_resolution } from './use_control_resolution.js';
46
+ export { use_field_control_props } from './use_field_control_props.js';
46
47
  // Field-level control resolution
47
48
  export { resolve_field_controls, controls_to_fallback_visibility, } from './resolve_field_controls.js';
48
49
  // Prop building utilities
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/shared/unified_field_controls/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AAEH,iBAAiB;AACjB,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAEnE,iBAAiB;AACjB,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,OAAO;AACP,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAErE,iCAAiC;AACjC,OAAO,EACL,sBAAsB,EACtB,+BAA+B,GAGhC,MAAM,6BAA6B,CAAC;AAErC,0BAA0B;AAC1B,OAAO,EACL,mBAAmB,GAIpB,MAAM,0BAA0B,CAAC;AAoBlC,YAAY;AACZ,OAAO,EACL,YAAY,EACZ,eAAe,EACf,2BAA2B,EAC3B,wBAAwB,EACxB,uBAAuB,EACvB,mBAAmB,EACnB,sBAAsB,GACvB,MAAM,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/shared/unified_field_controls/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AAEH,iBAAiB;AACjB,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAEnE,iBAAiB;AACjB,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,QAAQ;AACR,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,uBAAuB,EAAkC,MAAM,8BAA8B,CAAC;AAEvG,iCAAiC;AACjC,OAAO,EACL,sBAAsB,EACtB,+BAA+B,GAGhC,MAAM,6BAA6B,CAAC;AAErC,0BAA0B;AAC1B,OAAO,EACL,mBAAmB,GAIpB,MAAM,0BAA0B,CAAC;AAoBlC,YAAY;AACZ,OAAO,EACL,YAAY,EACZ,eAAe,EACf,2BAA2B,EAC3B,wBAAwB,EACxB,uBAAuB,EACvB,mBAAmB,EACnB,sBAAsB,GACvB,MAAM,gBAAgB,CAAC"}
@@ -0,0 +1,68 @@
1
+ /**
2
+ * Shared hook for building UnifiedFieldControls props.
3
+ *
4
+ * Summary view duplicates these 6 useMemo blocks identically in both
5
+ * SummaryGroup and SummaryField. This hook consolidates them into one call.
6
+ */
7
+ import type { ControlMetadata, ControlCallbacks, ControlConfig, FallbackSettings } from './types.js';
8
+ import type { FieldMetadataInput } from '../field_state/types.js';
9
+ /** Inputs for the hook */
10
+ export interface UseFieldControlPropsInput {
11
+ /** Whether show_icons is enabled for this field/group */
12
+ has_controls: boolean;
13
+ /** Field ID */
14
+ field_id: string;
15
+ /** Field label (used in control_config) */
16
+ field_label: string;
17
+ /** Entity type: 'group' | 'field' */
18
+ entity_type: 'group' | 'field';
19
+ /** icons_behaviour from context */
20
+ icons_behaviour: any;
21
+ /** Active role from settings */
22
+ active_role: string | undefined;
23
+ /** Field metadata from context */
24
+ metadata: FieldMetadataInput | undefined;
25
+ /** Settings from context */
26
+ settings: {
27
+ data_ok_mode?: 'checkbox' | 'multi_state';
28
+ data_ok_hidden_states?: any[];
29
+ notes_panel_style?: any;
30
+ notes_background_color?: string;
31
+ notes_save_mode?: any;
32
+ notes_mode?: 'controlled' | 'api';
33
+ on_data_ok_hidden?: any;
34
+ on_data_ok_protected?: any;
35
+ };
36
+ /** Chat config from context */
37
+ chat_config: {
38
+ group_id?: string;
39
+ api_base_url?: string;
40
+ timezone?: string;
41
+ read_only?: boolean;
42
+ log_polling?: boolean;
43
+ } | undefined;
44
+ /** Current user from context */
45
+ current_user: any;
46
+ /** Callbacks from context */
47
+ callbacks: {
48
+ on_data_ok_change?: (field_id: string, value: any) => void;
49
+ on_notes_change?: (field_id: string, notes: any) => void;
50
+ on_visibility_change?: (field_id: string, visibility: 'visible' | 'hidden') => void;
51
+ on_lock_change?: (field_id: string, locked: boolean) => void;
52
+ on_delete?: (field_id: string) => void;
53
+ on_skip_change?: (field_id: string, skipped: boolean) => void;
54
+ on_edit_elements?: (field_id: string, entity_type: 'field' | 'group') => void;
55
+ };
56
+ }
57
+ /**
58
+ * Build all props needed by UnifiedFieldControls for a field or group.
59
+ */
60
+ export declare function use_field_control_props(input: UseFieldControlPropsInput): {
61
+ role_controls: Record<import("./types.js").ControlName, import("../../hazo_template_generator/types.js").RoleControlBehaviour> | null;
62
+ fallback_visibility: FallbackSettings;
63
+ fallback_enabled: FallbackSettings;
64
+ control_metadata: ControlMetadata;
65
+ control_callbacks: ControlCallbacks;
66
+ control_config: ControlConfig;
67
+ };
68
+ //# sourceMappingURL=use_field_control_props.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use_field_control_props.d.ts","sourceRoot":"","sources":["../../../../src/components/shared/unified_field_controls/use_field_control_props.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AACrG,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAElE,0BAA0B;AAC1B,MAAM,WAAW,yBAAyB;IACxC,yDAAyD;IACzD,YAAY,EAAE,OAAO,CAAC;IACtB,eAAe;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,2CAA2C;IAC3C,WAAW,EAAE,MAAM,CAAC;IACpB,qCAAqC;IACrC,WAAW,EAAE,OAAO,GAAG,OAAO,CAAC;IAC/B,mCAAmC;IACnC,eAAe,EAAE,GAAG,CAAC;IACrB,gCAAgC;IAChC,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,kCAAkC;IAClC,QAAQ,EAAE,kBAAkB,GAAG,SAAS,CAAC;IACzC,4BAA4B;IAC5B,QAAQ,EAAE;QACR,YAAY,CAAC,EAAE,UAAU,GAAG,aAAa,CAAC;QAC1C,qBAAqB,CAAC,EAAE,GAAG,EAAE,CAAC;QAC9B,iBAAiB,CAAC,EAAE,GAAG,CAAC;QACxB,sBAAsB,CAAC,EAAE,MAAM,CAAC;QAChC,eAAe,CAAC,EAAE,GAAG,CAAC;QACtB,UAAU,CAAC,EAAE,YAAY,GAAG,KAAK,CAAC;QAClC,iBAAiB,CAAC,EAAE,GAAG,CAAC;QACxB,oBAAoB,CAAC,EAAE,GAAG,CAAC;KAC5B,CAAC;IACF,+BAA+B;IAC/B,WAAW,EAAE;QACX,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,SAAS,CAAC,EAAE,OAAO,CAAC;QACpB,WAAW,CAAC,EAAE,OAAO,CAAC;KACvB,GAAG,SAAS,CAAC;IACd,gCAAgC;IAChC,YAAY,EAAE,GAAG,CAAC;IAClB,6BAA6B;IAC7B,SAAS,EAAE;QACT,iBAAiB,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,IAAI,CAAC;QAC3D,eAAe,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,IAAI,CAAC;QACzD,oBAAoB,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,GAAG,QAAQ,KAAK,IAAI,CAAC;QACpF,cAAc,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;QAC7D,SAAS,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;QACvC,cAAc,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;QAC9D,gBAAgB,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,GAAG,OAAO,KAAK,IAAI,CAAC;KAC/E,CAAC;CACH;AAaD;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,yBAAyB;;;;;;;EAyFvE"}
@@ -0,0 +1,105 @@
1
+ /**
2
+ * Shared hook for building UnifiedFieldControls props.
3
+ *
4
+ * Summary view duplicates these 6 useMemo blocks identically in both
5
+ * SummaryGroup and SummaryField. This hook consolidates them into one call.
6
+ */
7
+ 'use client';
8
+ import { useMemo } from 'react';
9
+ import { resolve_role_controls } from '../role_utils/index.js';
10
+ /** The empty fallback settings (all false) */
11
+ const EMPTY_FALLBACK = {
12
+ data_ok: false,
13
+ skip: false,
14
+ notes: false,
15
+ chat: false,
16
+ visibility: false,
17
+ lock: false,
18
+ delete: false,
19
+ };
20
+ /**
21
+ * Build all props needed by UnifiedFieldControls for a field or group.
22
+ */
23
+ export function use_field_control_props(input) {
24
+ const { has_controls, field_id, field_label, entity_type, icons_behaviour, active_role, metadata, settings, chat_config, current_user, callbacks, } = input;
25
+ const role_controls = useMemo(() => {
26
+ if (!has_controls)
27
+ return null;
28
+ return resolve_role_controls(icons_behaviour, active_role);
29
+ }, [has_controls, icons_behaviour, active_role]);
30
+ const fallback_visibility = useMemo(() => {
31
+ if (!role_controls)
32
+ return EMPTY_FALLBACK;
33
+ return {
34
+ data_ok: role_controls.control_data_ok.visible,
35
+ skip: role_controls.control_skip.visible,
36
+ notes: role_controls.control_notes.visible,
37
+ chat: role_controls.control_chat.visible,
38
+ visibility: role_controls.control_visibility.visible,
39
+ lock: role_controls.control_lock.visible,
40
+ delete: role_controls.control_delete.visible,
41
+ };
42
+ }, [role_controls]);
43
+ const fallback_enabled = useMemo(() => {
44
+ if (!role_controls)
45
+ return EMPTY_FALLBACK;
46
+ return {
47
+ data_ok: role_controls.control_data_ok.enabled,
48
+ skip: role_controls.control_skip.enabled,
49
+ notes: role_controls.control_notes.enabled,
50
+ chat: role_controls.control_chat.enabled,
51
+ visibility: role_controls.control_visibility.enabled,
52
+ lock: role_controls.control_lock.enabled,
53
+ delete: role_controls.control_delete.enabled,
54
+ };
55
+ }, [role_controls]);
56
+ const control_metadata = useMemo(() => ({
57
+ data_ok: metadata?.data_ok,
58
+ locked: metadata?.locked,
59
+ deleted: metadata?.deleted,
60
+ visibility: metadata?.visibility,
61
+ skipped: metadata?.skipped,
62
+ notes: metadata?.notes,
63
+ has_chat_messages: metadata?.has_chat_messages,
64
+ chat_status: metadata?.chat_status,
65
+ }), [metadata]);
66
+ const control_callbacks = useMemo(() => ({
67
+ on_data_ok_change: (value) => callbacks.on_data_ok_change?.(field_id, value),
68
+ on_notes_change: (notes) => callbacks.on_notes_change?.(field_id, notes),
69
+ on_chat_click: () => { },
70
+ on_visibility_change: (visibility) => callbacks.on_visibility_change?.(field_id, visibility),
71
+ on_lock_change: (locked) => callbacks.on_lock_change?.(field_id, locked),
72
+ on_delete: () => callbacks.on_delete?.(field_id),
73
+ on_skip_change: (skipped) => callbacks.on_skip_change?.(field_id, skipped),
74
+ on_edit_elements: () => callbacks.on_edit_elements?.(field_id, entity_type),
75
+ }), [field_id, entity_type, callbacks]);
76
+ const control_config = useMemo(() => ({
77
+ data_ok_mode: settings.data_ok_mode,
78
+ data_ok_hidden_states: settings.data_ok_hidden_states,
79
+ chat_group_id: chat_config?.group_id,
80
+ chat_api_base_url: chat_config?.api_base_url,
81
+ chat_timezone: chat_config?.timezone,
82
+ chat_read_only: chat_config?.read_only,
83
+ chat_log_polling: chat_config?.log_polling,
84
+ current_user: current_user,
85
+ field_data_id: field_id,
86
+ label: field_label || field_id,
87
+ notes_panel_style: settings.notes_panel_style,
88
+ notes_background_color: settings.notes_background_color,
89
+ notes_save_mode: settings.notes_save_mode,
90
+ notes_mode: settings.notes_mode,
91
+ auto_actions: {
92
+ on_data_ok_hidden: settings.on_data_ok_hidden,
93
+ on_data_ok_protected: settings.on_data_ok_protected,
94
+ },
95
+ }), [settings, chat_config, current_user, field_id, field_label]);
96
+ return {
97
+ role_controls,
98
+ fallback_visibility,
99
+ fallback_enabled,
100
+ control_metadata,
101
+ control_callbacks,
102
+ control_config,
103
+ };
104
+ }
105
+ //# sourceMappingURL=use_field_control_props.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use_field_control_props.js","sourceRoot":"","sources":["../../../../src/components/shared/unified_field_controls/use_field_control_props.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,190 @@
1
+ /**
2
+ * Shared hook that extracts ALL common setup logic from form field components.
3
+ *
4
+ * Every form component (inputbox, textarea, checkbox, combo, radio, date)
5
+ * duplicates ~200 lines of identical setup: file state, validation,
6
+ * chat hook, visibility check, disabled state, additional entry logic,
7
+ * error merging, data_ok handler, and imperative handle.
8
+ *
9
+ * This hook consolidates all of that into a single reusable hook.
10
+ */
11
+ import React from 'react';
12
+ import { CollabFormFieldContainer, type CollabFormFieldBaseProps, type FileData, type NoteEntry } from '../hazo_collab_form_base.js';
13
+ import type { DataOkState } from '../data_ok_multi_state.js';
14
+ /** Props type for CollabFormFieldContainer (excluding children) */
15
+ type ContainerPropsType = Omit<Parameters<typeof CollabFormFieldContainer>[0], 'children'>;
16
+ /**
17
+ * Result returned by use_base_form_field
18
+ */
19
+ export interface BaseFormFieldResult {
20
+ /** Ref for the underlying DOM element (input, textarea, button, etc.) */
21
+ component_ref: React.RefObject<any>;
22
+ /** Current files (controlled or internal) */
23
+ current_files: FileData[];
24
+ /** Internal file setter (for controlled/uncontrolled file state) */
25
+ set_internal_files: React.Dispatch<React.SetStateAction<FileData[]>>;
26
+ /** Combined display error (external error || validation error) */
27
+ display_error: string | undefined;
28
+ /** Setter for internal validation error */
29
+ set_validation_error: React.Dispatch<React.SetStateAction<string | null>>;
30
+ /** Whether the field should be disabled (chat active || locked || skipped) */
31
+ is_field_disabled: boolean;
32
+ /** Whether visibility === 'hidden' */
33
+ is_hidden: boolean;
34
+ /** Whether to return null (responder + hidden) */
35
+ should_hide: boolean;
36
+ /** Whether to show the add entry button */
37
+ show_add_entry: boolean;
38
+ /** Unified handler for data_ok changes (both checkbox and multi-state) */
39
+ handle_data_ok_unified_change: (value: boolean | DataOkState) => void;
40
+ /** Stable callback for files change (handles internal/controlled state) */
41
+ handle_files_change: (new_files: FileData[]) => void;
42
+ /** Final computed field ID */
43
+ field_id_final: string;
44
+ /** Chat icon click handler */
45
+ handle_chat_icon_click: () => void;
46
+ /** Chat close handler */
47
+ handle_chat_close: () => void;
48
+ /** Whether chat is currently open */
49
+ chat_is_open: boolean;
50
+ /** Whether chat is effectively disabled (hidden field, etc.) */
51
+ is_chat_effectively_disabled: boolean;
52
+ /** Container props for CollabFormFieldContainer */
53
+ container_props: ContainerPropsType;
54
+ /** Label props for CollabFormFieldLabel */
55
+ label_props: {
56
+ field_id_final: string;
57
+ label: string;
58
+ tooltip: any;
59
+ label_class_name?: string;
60
+ required?: boolean;
61
+ visibility?: 'visible' | 'hidden';
62
+ locked?: boolean;
63
+ label_actions?: React.ReactNode;
64
+ };
65
+ /** Controls props for UnifiedFieldControls */
66
+ controls_props: {
67
+ field_id: string;
68
+ icons_behaviour: any;
69
+ active_role: any;
70
+ metadata: {
71
+ data_ok: any;
72
+ skipped: boolean;
73
+ locked: boolean;
74
+ deleted: boolean;
75
+ visibility: 'visible' | 'hidden';
76
+ notes: NoteEntry[] | undefined;
77
+ chat_status: any;
78
+ };
79
+ callbacks: {
80
+ on_data_ok_change: (value: boolean | DataOkState) => void;
81
+ on_skip_change: ((skipped: boolean) => void) | undefined;
82
+ on_notes_change: ((notes: NoteEntry[]) => void) | undefined;
83
+ on_chat_click: () => void;
84
+ on_visibility_change: ((visibility: 'visible' | 'hidden') => void) | undefined;
85
+ on_lock_change: ((locked: boolean) => void) | undefined;
86
+ on_delete: (() => void) | undefined;
87
+ };
88
+ config: {
89
+ data_ok_mode: 'checkbox' | 'multi_state';
90
+ data_ok_hidden_states: DataOkState[] | undefined;
91
+ chat_group_id: string | undefined;
92
+ current_user: any;
93
+ field_data_id: string;
94
+ label: string;
95
+ chat_api_base_url: string | undefined;
96
+ chat_timezone: string | undefined;
97
+ chat_read_only: boolean | undefined;
98
+ notes_panel_style: any;
99
+ notes_background_color: string | undefined;
100
+ notes_save_mode: any;
101
+ };
102
+ fallback_visibility: {
103
+ data_ok: boolean;
104
+ skip: boolean;
105
+ notes: boolean;
106
+ chat: boolean;
107
+ visibility: boolean;
108
+ lock: boolean;
109
+ delete: boolean;
110
+ };
111
+ fallback_enabled: {
112
+ data_ok: boolean;
113
+ skip: boolean;
114
+ notes: boolean;
115
+ chat: boolean;
116
+ visibility: boolean;
117
+ lock: boolean;
118
+ delete: boolean;
119
+ };
120
+ };
121
+ /** File upload section props */
122
+ file_upload_props: {
123
+ field_id_final: string;
124
+ accept_files_public: boolean;
125
+ accept_files_private: boolean;
126
+ files_dir?: string;
127
+ max_size?: number;
128
+ min_files?: number;
129
+ max_files?: number;
130
+ file_accept?: string;
131
+ file_processor?: any;
132
+ file_validator?: any;
133
+ files: FileData[];
134
+ on_files_change: (new_files: FileData[]) => void;
135
+ component_ref: React.RefObject<any>;
136
+ private_files_permission?: string;
137
+ can_access_private_files?: boolean;
138
+ private_files?: FileData[];
139
+ on_private_files_change?: (files: FileData[]) => void;
140
+ };
141
+ /** Reference tag props */
142
+ reference_tag_props: {
143
+ reference_value: any;
144
+ reference_label: string | undefined;
145
+ reference_tag_background_color: string | undefined;
146
+ };
147
+ /** Error display props */
148
+ error_props: {
149
+ field_id_final: string;
150
+ error: string | undefined;
151
+ error_class_name: string | undefined;
152
+ };
153
+ /** Additional entry props */
154
+ entry_props: {
155
+ show_add_entry: boolean;
156
+ label: string;
157
+ field_id: string;
158
+ on_add_entry: ((field_id: string) => void) | undefined;
159
+ is_additional_entry: boolean | undefined;
160
+ on_delete_entry: ((field_id: string) => void) | undefined;
161
+ action_buttons_borderless: boolean | undefined;
162
+ };
163
+ /** User role */
164
+ user_role: 'author' | 'responder';
165
+ /** Width class name for field container */
166
+ field_width_class_name: string | undefined;
167
+ /** Whether field is locked */
168
+ locked: boolean;
169
+ /** Whether field is skipped */
170
+ skipped: boolean;
171
+ /** Class name */
172
+ className: string | undefined;
173
+ }
174
+ /**
175
+ * Hook that consolidates all common form field component setup.
176
+ *
177
+ * @param props - The full component props (extends CollabFormFieldBaseProps)
178
+ * @param ref - The forwarded ref
179
+ * @param element_type_name - Used for display name / typing context only
180
+ */
181
+ export declare function use_base_form_field<TRef>(props: CollabFormFieldBaseProps & {
182
+ disabled?: boolean;
183
+ className?: string;
184
+ id?: string;
185
+ files?: FileData[];
186
+ on_files_change?: (files: FileData[]) => void;
187
+ [key: string]: any;
188
+ }, ref: React.ForwardedRef<TRef>): BaseFormFieldResult;
189
+ export {};
190
+ //# sourceMappingURL=use_base_form_field.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use_base_form_field.d.ts","sourceRoot":"","sources":["../../../src/components/shared/use_base_form_field.ts"],"names":[],"mappings":"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"}