hazo_collab_forms 1.9.0 → 1.9.2

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 (195) hide show
  1. package/CHANGE_LOG.md +25 -0
  2. package/README.md +157 -44
  3. package/dist/components/_internal_form_set.d.ts +30 -30
  4. package/dist/components/_internal_form_set.d.ts.map +1 -1
  5. package/dist/components/_internal_form_set.js +31 -12
  6. package/dist/components/_internal_form_set.js.map +1 -1
  7. package/dist/components/collab_form_file_upload.d.ts +40 -74
  8. package/dist/components/collab_form_file_upload.d.ts.map +1 -1
  9. package/dist/components/collab_form_file_upload.js +191 -275
  10. package/dist/components/collab_form_file_upload.js.map +1 -1
  11. package/dist/components/hazo_add_field_dialog/components/pending_field_item.d.ts +1 -1
  12. package/dist/components/hazo_add_field_dialog/components/pending_field_item.js +2 -2
  13. package/dist/components/hazo_add_field_dialog/components/pending_field_item.js.map +1 -1
  14. package/dist/components/hazo_add_field_dialog/components/pending_field_list.d.ts +1 -1
  15. package/dist/components/hazo_add_field_dialog/hazo_add_field_dialog.js +7 -7
  16. package/dist/components/hazo_add_field_dialog/hazo_add_field_dialog.js.map +1 -1
  17. package/dist/components/hazo_add_field_dialog/types.d.ts +4 -4
  18. package/dist/components/hazo_add_field_dialog/types.d.ts.map +1 -1
  19. package/dist/components/hazo_add_field_dialog/utils/library_to_pending.js +2 -2
  20. package/dist/components/hazo_add_field_dialog/utils/library_to_pending.js.map +1 -1
  21. package/dist/components/hazo_add_group_dialog/hazo_add_group_dialog.js +6 -6
  22. package/dist/components/hazo_add_group_dialog/hazo_add_group_dialog.js.map +1 -1
  23. package/dist/components/hazo_collab_form_base.d.ts +26 -20
  24. package/dist/components/hazo_collab_form_base.d.ts.map +1 -1
  25. package/dist/components/hazo_collab_form_base.js +22 -13
  26. package/dist/components/hazo_collab_form_base.js.map +1 -1
  27. package/dist/components/hazo_collab_form_checkbox.d.ts +1 -24
  28. package/dist/components/hazo_collab_form_checkbox.d.ts.map +1 -1
  29. package/dist/components/hazo_collab_form_checkbox.js +15 -141
  30. package/dist/components/hazo_collab_form_checkbox.js.map +1 -1
  31. package/dist/components/hazo_collab_form_combo.d.ts +0 -44
  32. package/dist/components/hazo_collab_form_combo.d.ts.map +1 -1
  33. package/dist/components/hazo_collab_form_combo.js +24 -199
  34. package/dist/components/hazo_collab_form_combo.js.map +1 -1
  35. package/dist/components/hazo_collab_form_data_table.d.ts.map +1 -1
  36. package/dist/components/hazo_collab_form_data_table.js +2 -1
  37. package/dist/components/hazo_collab_form_data_table.js.map +1 -1
  38. package/dist/components/hazo_collab_form_date.d.ts +1 -59
  39. package/dist/components/hazo_collab_form_date.d.ts.map +1 -1
  40. package/dist/components/hazo_collab_form_date.js +34 -194
  41. package/dist/components/hazo_collab_form_date.js.map +1 -1
  42. package/dist/components/hazo_collab_form_doc.d.ts +8 -11
  43. package/dist/components/hazo_collab_form_doc.d.ts.map +1 -1
  44. package/dist/components/hazo_collab_form_doc.js +15 -12
  45. package/dist/components/hazo_collab_form_doc.js.map +1 -1
  46. package/dist/components/hazo_collab_form_group.d.ts +4 -3
  47. package/dist/components/hazo_collab_form_group.d.ts.map +1 -1
  48. package/dist/components/hazo_collab_form_group.js +5 -5
  49. package/dist/components/hazo_collab_form_group.js.map +1 -1
  50. package/dist/components/hazo_collab_form_inputbox.d.ts +0 -17
  51. package/dist/components/hazo_collab_form_inputbox.d.ts.map +1 -1
  52. package/dist/components/hazo_collab_form_inputbox.js +25 -148
  53. package/dist/components/hazo_collab_form_inputbox.js.map +1 -1
  54. package/dist/components/hazo_collab_form_radio.d.ts +1 -36
  55. package/dist/components/hazo_collab_form_radio.d.ts.map +1 -1
  56. package/dist/components/hazo_collab_form_radio.js +18 -143
  57. package/dist/components/hazo_collab_form_radio.js.map +1 -1
  58. package/dist/components/hazo_collab_form_textarea.d.ts +0 -17
  59. package/dist/components/hazo_collab_form_textarea.d.ts.map +1 -1
  60. package/dist/components/hazo_collab_form_textarea.js +14 -141
  61. package/dist/components/hazo_collab_form_textarea.js.map +1 -1
  62. package/dist/components/hazo_collab_form_view/context.d.ts.map +1 -1
  63. package/dist/components/hazo_collab_form_view/context.js +4 -0
  64. package/dist/components/hazo_collab_form_view/context.js.map +1 -1
  65. package/dist/components/hazo_collab_form_view/hooks/use_view_callbacks.d.ts +36 -0
  66. package/dist/components/hazo_collab_form_view/hooks/use_view_callbacks.d.ts.map +1 -0
  67. package/dist/components/hazo_collab_form_view/hooks/use_view_callbacks.js +82 -0
  68. package/dist/components/hazo_collab_form_view/hooks/use_view_callbacks.js.map +1 -0
  69. package/dist/components/hazo_collab_form_view/index.d.ts +1 -1
  70. package/dist/components/hazo_collab_form_view/index.d.ts.map +1 -1
  71. package/dist/components/hazo_collab_form_view/index.js.map +1 -1
  72. package/dist/components/hazo_collab_form_view/types.d.ts +18 -12
  73. package/dist/components/hazo_collab_form_view/types.d.ts.map +1 -1
  74. package/dist/components/hazo_collab_form_view/views/edit_view.d.ts.map +1 -1
  75. package/dist/components/hazo_collab_form_view/views/edit_view.js +11 -81
  76. package/dist/components/hazo_collab_form_view/views/edit_view.js.map +1 -1
  77. package/dist/components/hazo_collab_form_view/views/summary_view.d.ts.map +1 -1
  78. package/dist/components/hazo_collab_form_view/views/summary_view.js +58 -278
  79. package/dist/components/hazo_collab_form_view/views/summary_view.js.map +1 -1
  80. package/dist/components/hazo_edit_field_dialog/hazo_edit_field_dialog.js +8 -8
  81. package/dist/components/hazo_edit_field_dialog/hazo_edit_field_dialog.js.map +1 -1
  82. package/dist/components/hazo_edit_field_dialog/types.d.ts +4 -4
  83. package/dist/components/hazo_edit_field_dialog/types.d.ts.map +1 -1
  84. package/dist/components/hazo_edit_group_dialog/hazo_edit_group_dialog.js +15 -15
  85. package/dist/components/hazo_edit_group_dialog/hazo_edit_group_dialog.js.map +1 -1
  86. package/dist/components/hazo_edit_group_dialog/types.d.ts +4 -4
  87. package/dist/components/hazo_edit_group_dialog/types.d.ts.map +1 -1
  88. package/dist/components/hazo_field_library/hooks/use_elements.d.ts.map +1 -1
  89. package/dist/components/hazo_field_library/hooks/use_elements.js +2 -1
  90. package/dist/components/hazo_field_library/hooks/use_elements.js.map +1 -1
  91. package/dist/components/hazo_field_selector_dialog/utils.d.ts.map +1 -1
  92. package/dist/components/hazo_field_selector_dialog/utils.js +2 -1
  93. package/dist/components/hazo_field_selector_dialog/utils.js.map +1 -1
  94. package/dist/components/hazo_template_generator/components/section_tree.js +1 -1
  95. package/dist/components/hazo_template_generator/components/section_tree.js.map +1 -1
  96. package/dist/components/hazo_template_generator/components/tabs/basic_tab.d.ts.map +1 -1
  97. package/dist/components/hazo_template_generator/components/tabs/basic_tab.js +6 -3
  98. package/dist/components/hazo_template_generator/components/tabs/basic_tab.js.map +1 -1
  99. package/dist/components/hazo_template_generator/components/tabs/section_tab.d.ts.map +1 -1
  100. package/dist/components/hazo_template_generator/components/tabs/section_tab.js +8 -4
  101. package/dist/components/hazo_template_generator/components/tabs/section_tab.js.map +1 -1
  102. package/dist/components/hazo_template_generator/types.d.ts.map +1 -1
  103. package/dist/components/hazo_template_generator/types.js +6 -3
  104. package/dist/components/hazo_template_generator/types.js.map +1 -1
  105. package/dist/components/hazo_template_generator/utils/validation.js +1 -1
  106. package/dist/components/hazo_template_generator/utils/validation.js.map +1 -1
  107. package/dist/components/index.d.ts +4 -0
  108. package/dist/components/index.d.ts.map +1 -1
  109. package/dist/components/index.js +2 -0
  110. package/dist/components/index.js.map +1 -1
  111. package/dist/components/shared/base_field_layout.d.ts +40 -0
  112. package/dist/components/shared/base_field_layout.d.ts.map +1 -0
  113. package/dist/components/shared/base_field_layout.js +34 -0
  114. package/dist/components/shared/base_field_layout.js.map +1 -0
  115. package/dist/components/shared/file_settings/file_settings_checkboxes.d.ts +13 -13
  116. package/dist/components/shared/file_settings/file_settings_checkboxes.d.ts.map +1 -1
  117. package/dist/components/shared/file_settings/file_settings_checkboxes.js +8 -25
  118. package/dist/components/shared/file_settings/file_settings_checkboxes.js.map +1 -1
  119. package/dist/components/shared/row_color_utils.d.ts +16 -0
  120. package/dist/components/shared/row_color_utils.d.ts.map +1 -0
  121. package/dist/components/shared/row_color_utils.js +21 -0
  122. package/dist/components/shared/row_color_utils.js.map +1 -0
  123. package/dist/components/shared/strip_base_props.d.ts +16 -0
  124. package/dist/components/shared/strip_base_props.d.ts.map +1 -0
  125. package/dist/components/shared/strip_base_props.js +91 -0
  126. package/dist/components/shared/strip_base_props.js.map +1 -0
  127. package/dist/components/shared/summary_files/summary_files.d.ts +10 -5
  128. package/dist/components/shared/summary_files/summary_files.d.ts.map +1 -1
  129. package/dist/components/shared/summary_files/summary_files.js +35 -14
  130. package/dist/components/shared/summary_files/summary_files.js.map +1 -1
  131. package/dist/components/shared/summary_utils/file_helpers.d.ts +16 -0
  132. package/dist/components/shared/summary_utils/file_helpers.d.ts.map +1 -0
  133. package/dist/components/shared/summary_utils/file_helpers.js +26 -0
  134. package/dist/components/shared/summary_utils/file_helpers.js.map +1 -0
  135. package/dist/components/shared/summary_utils/index.d.ts +1 -0
  136. package/dist/components/shared/summary_utils/index.d.ts.map +1 -1
  137. package/dist/components/shared/summary_utils/index.js +1 -0
  138. package/dist/components/shared/summary_utils/index.js.map +1 -1
  139. package/dist/components/shared/unified_field_controls/index.d.ts +1 -0
  140. package/dist/components/shared/unified_field_controls/index.d.ts.map +1 -1
  141. package/dist/components/shared/unified_field_controls/index.js +2 -1
  142. package/dist/components/shared/unified_field_controls/index.js.map +1 -1
  143. package/dist/components/shared/unified_field_controls/use_field_control_props.d.ts +68 -0
  144. package/dist/components/shared/unified_field_controls/use_field_control_props.d.ts.map +1 -0
  145. package/dist/components/shared/unified_field_controls/use_field_control_props.js +105 -0
  146. package/dist/components/shared/unified_field_controls/use_field_control_props.js.map +1 -0
  147. package/dist/components/shared/use_base_form_field.d.ts +193 -0
  148. package/dist/components/shared/use_base_form_field.d.ts.map +1 -0
  149. package/dist/components/shared/use_base_form_field.js +265 -0
  150. package/dist/components/shared/use_base_form_field.js.map +1 -0
  151. package/dist/config/api_endpoints.d.ts +19 -0
  152. package/dist/config/api_endpoints.d.ts.map +1 -0
  153. package/dist/config/api_endpoints.js +19 -0
  154. package/dist/config/api_endpoints.js.map +1 -0
  155. package/dist/config/defaults.d.ts +17 -0
  156. package/dist/config/defaults.d.ts.map +1 -0
  157. package/dist/config/defaults.js +17 -0
  158. package/dist/config/defaults.js.map +1 -0
  159. package/dist/config/index.d.ts +3 -0
  160. package/dist/config/index.d.ts.map +1 -0
  161. package/dist/config/index.js +3 -0
  162. package/dist/config/index.js.map +1 -0
  163. package/dist/types/file_attachment.d.ts +55 -0
  164. package/dist/types/file_attachment.d.ts.map +1 -0
  165. package/dist/types/file_attachment.js +54 -0
  166. package/dist/types/file_attachment.js.map +1 -0
  167. package/dist/types/file_manager.d.ts +60 -0
  168. package/dist/types/file_manager.d.ts.map +1 -0
  169. package/dist/types/file_manager.js +8 -0
  170. package/dist/types/file_manager.js.map +1 -0
  171. package/dist/types/index.d.ts +3 -0
  172. package/dist/types/index.d.ts.map +1 -1
  173. package/dist/types/index.js +1 -0
  174. package/dist/types/index.js.map +1 -1
  175. package/dist/utils/filter_dom_props.d.ts.map +1 -1
  176. package/dist/utils/filter_dom_props.js +2 -1
  177. package/dist/utils/filter_dom_props.js.map +1 -1
  178. package/dist/utils/index.d.ts +2 -0
  179. package/dist/utils/index.d.ts.map +1 -1
  180. package/dist/utils/index.js +1 -0
  181. package/dist/utils/index.js.map +1 -1
  182. package/dist/utils/use_chat_messages_check.d.ts.map +1 -1
  183. package/dist/utils/use_chat_messages_check.js +4 -2
  184. package/dist/utils/use_chat_messages_check.js.map +1 -1
  185. package/dist/utils/use_collab_chat.d.ts.map +1 -1
  186. package/dist/utils/use_collab_chat.js +2 -1
  187. package/dist/utils/use_collab_chat.js.map +1 -1
  188. package/dist/utils/use_field_chat_status.d.ts.map +1 -1
  189. package/dist/utils/use_field_chat_status.js +5 -3
  190. package/dist/utils/use_field_chat_status.js.map +1 -1
  191. package/dist/utils/use_file_status.d.ts +29 -0
  192. package/dist/utils/use_file_status.d.ts.map +1 -0
  193. package/dist/utils/use_file_status.js +68 -0
  194. package/dist/utils/use_file_status.js.map +1 -0
  195. package/package.json +4 -1
@@ -1,6 +1,7 @@
1
1
  /**
2
2
  * SummaryFiles component
3
- * Renders a list of files with download links
3
+ * Renders a list of files with download links.
4
+ * Supports both FormFileAttachment (new) and FileData (legacy) shapes.
4
5
  */
5
6
  'use client';
6
7
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
@@ -16,8 +17,8 @@ function get_file_extension(filename) {
16
17
  /**
17
18
  * Get file type category for icon display
18
19
  */
19
- function get_file_type_category(file_type, filename) {
20
- const mime = file_type.toLowerCase();
20
+ function get_file_type_category(mime_type, filename) {
21
+ const mime = mime_type.toLowerCase();
21
22
  const ext = get_file_extension(filename);
22
23
  if (mime.startsWith('image/'))
23
24
  return 'image';
@@ -39,7 +40,6 @@ function get_file_type_category(file_type, filename) {
39
40
  }
40
41
  /**
41
42
  * Format file size for display
42
- * Returns human-readable string like "1.5 MB"
43
43
  */
44
44
  function format_file_size(bytes) {
45
45
  if (bytes === 0)
@@ -52,8 +52,8 @@ function format_file_size(bytes) {
52
52
  /**
53
53
  * Get icon component for file type
54
54
  */
55
- function get_file_icon(file) {
56
- const category = get_file_type_category(file.file_type, file.file_name);
55
+ function get_file_icon(attachment) {
56
+ const category = get_file_type_category(attachment.mime_type, attachment.file_name);
57
57
  const icon_class = 'h-5 w-5';
58
58
  switch (category) {
59
59
  case 'image':
@@ -70,27 +70,48 @@ function get_file_icon(file) {
70
70
  return _jsx(IoDocument, { className: cn(icon_class, 'text-muted-foreground') });
71
71
  }
72
72
  }
73
+ /**
74
+ * Status badge for non-active files
75
+ */
76
+ function StatusBadge({ status }) {
77
+ if (!status || status === 'active')
78
+ return null;
79
+ const config = {
80
+ missing: { label: 'Missing', className: 'bg-yellow-100 text-yellow-800 dark:bg-yellow-900/30 dark:text-yellow-300' },
81
+ soft_deleted: { label: 'Deleted', className: 'bg-red-100 text-red-800 dark:bg-red-900/30 dark:text-red-300' },
82
+ orphaned: { label: 'Orphaned', className: 'bg-orange-100 text-orange-800 dark:bg-orange-900/30 dark:text-orange-300' },
83
+ };
84
+ const cfg = config[status];
85
+ if (!cfg)
86
+ return null;
87
+ return (_jsx("span", { className: cn('text-[10px] px-1 py-0.5 rounded font-medium', cfg.className), children: cfg.label }));
88
+ }
73
89
  /**
74
90
  * Single file item component
75
91
  */
76
- function FileItem({ file, is_private, }) {
77
- // Build download URL
78
- const download_url = is_private
79
- ? `/api/collab-forms/private-files/${encodeURIComponent(file.file_path)}`
80
- : `/api/collab-forms/files/${encodeURIComponent(file.file_path)}`;
81
- return (_jsxs("a", { href: download_url, target: "_blank", rel: "noopener noreferrer", className: "cls_summary_file_item flex items-center gap-3 p-2 rounded-md hover:bg-muted transition-colors group", title: `Download ${file.file_name}`, children: [_jsx("div", { className: "cls_summary_file_icon flex-shrink-0", children: get_file_icon(file) }), _jsxs("div", { className: "cls_summary_file_info flex-1 min-w-0", children: [_jsx("div", { className: "cls_summary_file_name text-sm font-medium truncate", children: file.file_name }), _jsx("div", { className: "cls_summary_file_size text-xs text-muted-foreground", children: format_file_size(file.file_size) })] }), is_private && (_jsx("div", { className: "cls_summary_file_private flex-shrink-0", title: "Private file", children: _jsx(IoLockClosed, { className: "h-4 w-4 text-yellow-600" }) })), _jsx("div", { className: "cls_summary_file_download flex-shrink-0 opacity-0 group-hover:opacity-100 transition-opacity", children: _jsx(IoDownload, { className: "h-4 w-4 text-muted-foreground" }) })] }));
92
+ function FileItem({ attachment, is_private, get_download_url, show_file_status, }) {
93
+ // Build download URL — prefer callback, fall back to file_path
94
+ const download_url = get_download_url
95
+ ? get_download_url(attachment.file_id, is_private ? 'private' : 'public')
96
+ : attachment.file_path
97
+ ? (is_private
98
+ ? `/api/collab-forms/private-files/${encodeURIComponent(attachment.file_path)}`
99
+ : `/api/collab-forms/files/${encodeURIComponent(attachment.file_path)}`)
100
+ : '#';
101
+ const is_missing = attachment.status === 'missing';
102
+ return (_jsxs("a", { href: download_url, target: "_blank", rel: "noopener noreferrer", className: cn("cls_summary_file_item flex items-center gap-3 p-2 rounded-md hover:bg-muted transition-colors group", is_missing && "opacity-60"), title: `Download ${attachment.file_name}`, children: [_jsx("div", { className: "cls_summary_file_icon flex-shrink-0", children: get_file_icon(attachment) }), _jsxs("div", { className: "cls_summary_file_info flex-1 min-w-0", children: [_jsxs("div", { className: "cls_summary_file_name text-sm font-medium truncate flex items-center gap-1.5", children: [attachment.file_name, show_file_status && _jsx(StatusBadge, { status: attachment.status })] }), _jsx("div", { className: "cls_summary_file_size text-xs text-muted-foreground", children: format_file_size(attachment.file_size) })] }), is_private && (_jsx("div", { className: "cls_summary_file_private flex-shrink-0", title: "Private file", children: _jsx(IoLockClosed, { className: "h-4 w-4 text-yellow-600" }) })), _jsx("div", { className: "cls_summary_file_download flex-shrink-0 opacity-0 group-hover:opacity-100 transition-opacity", children: _jsx(IoDownload, { className: "h-4 w-4 text-muted-foreground" }) })] }));
82
103
  }
83
104
  /**
84
105
  * SummaryFiles component
85
106
  * Renders public and private files in separate sections
86
107
  */
87
- export function SummaryFiles({ files, private_files, field_id, class_name, }) {
108
+ export function SummaryFiles({ files, private_files, field_id, class_name, get_download_url, show_file_status, }) {
88
109
  const has_public_files = files && files.length > 0;
89
110
  const has_private_files = private_files && private_files.length > 0;
90
111
  if (!has_public_files && !has_private_files) {
91
112
  return null;
92
113
  }
93
- return (_jsxs("div", { className: cn('cls_summary_files', class_name), "data-field-id": field_id, children: [has_public_files && (_jsxs("div", { className: "cls_summary_files_public", children: [has_private_files && (_jsx("div", { className: "cls_summary_files_section_header text-xs font-medium text-muted-foreground uppercase tracking-wider mb-1", children: "Public Files" })), _jsx("div", { className: "cls_summary_files_list space-y-1", children: files.map((file, index) => (_jsx(FileItem, { file: file }, file.file_id || index))) })] })), has_private_files && (_jsxs("div", { className: cn('cls_summary_files_private', has_public_files && 'mt-3'), children: [_jsxs("div", { className: "cls_summary_files_section_header text-xs font-medium text-muted-foreground uppercase tracking-wider mb-1 flex items-center gap-1", children: [_jsx(IoLockClosed, { className: "h-3 w-3" }), "Private Files"] }), _jsx("div", { className: "cls_summary_files_list space-y-1", children: private_files.map((file, index) => (_jsx(FileItem, { file: file, is_private: true }, file.file_id || index))) })] }))] }));
114
+ return (_jsxs("div", { className: cn('cls_summary_files', class_name), "data-field-id": field_id, children: [has_public_files && (_jsxs("div", { className: "cls_summary_files_public", children: [has_private_files && (_jsx("div", { className: "cls_summary_files_section_header text-xs font-medium text-muted-foreground uppercase tracking-wider mb-1", children: "Public Files" })), _jsx("div", { className: "cls_summary_files_list space-y-1", children: files.map((attachment, index) => (_jsx(FileItem, { attachment: attachment, get_download_url: get_download_url, show_file_status: show_file_status }, attachment.file_id || index))) })] })), has_private_files && (_jsxs("div", { className: cn('cls_summary_files_private', has_public_files && 'mt-3'), children: [_jsxs("div", { className: "cls_summary_files_section_header text-xs font-medium text-muted-foreground uppercase tracking-wider mb-1 flex items-center gap-1", children: [_jsx(IoLockClosed, { className: "h-3 w-3" }), "Private Files"] }), _jsx("div", { className: "cls_summary_files_list space-y-1", children: private_files.map((attachment, index) => (_jsx(FileItem, { attachment: attachment, is_private: true, get_download_url: get_download_url, show_file_status: show_file_status }, attachment.file_id || index))) })] }))] }));
94
115
  }
95
116
  export default SummaryFiles;
96
117
  //# sourceMappingURL=summary_files.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"summary_files.js","sourceRoot":"","sources":["../../../../src/components/shared/summary_files/summary_files.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"summary_files.js","sourceRoot":"","sources":["../../../../src/components/shared/summary_files/summary_files.tsx"],"names":[],"mappings":"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"}
@@ -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
+ import type { FileData } from '../../hazo_collab_form_base.js';
7
+ import type { FormFileAttachment } from '../../../types/file_attachment.js';
8
+ /** Extract public files for a field from form_data (legacy FileData shape) */
9
+ export declare function get_field_files(form_data: Record<string, unknown>, field_id: string): FileData[];
10
+ /** Extract private files for a field from form_data (legacy FileData shape) */
11
+ export declare function get_field_private_files(form_data: Record<string, unknown>, field_id: string): FileData[];
12
+ /** Extract public attachments for a field from form_data (FormFileAttachment shape) */
13
+ export declare function get_field_attachments(form_data: Record<string, unknown>, field_id: string): FormFileAttachment[];
14
+ /** Extract private attachments for a field from form_data (FormFileAttachment shape) */
15
+ export declare function get_field_private_attachments(form_data: Record<string, unknown>, field_id: string): FormFileAttachment[];
16
+ //# 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;AAC/D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AAE5E,8EAA8E;AAC9E,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,QAAQ,EAAE,MAAM,GAAG,QAAQ,EAAE,CAGhG;AAED,+EAA+E;AAC/E,wBAAgB,uBAAuB,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,QAAQ,EAAE,MAAM,GAAG,QAAQ,EAAE,CAGxG;AAED,uFAAuF;AACvF,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,QAAQ,EAAE,MAAM,GAAG,kBAAkB,EAAE,CAGhH;AAED,wFAAwF;AACxF,wBAAgB,6BAA6B,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,QAAQ,EAAE,MAAM,GAAG,kBAAkB,EAAE,CAGxH"}
@@ -0,0 +1,26 @@
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 (legacy FileData shape) */
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 (legacy FileData shape) */
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
+ /** Extract public attachments for a field from form_data (FormFileAttachment shape) */
17
+ export function get_field_attachments(form_data, field_id) {
18
+ const files = form_data[`__files_${field_id}`];
19
+ return Array.isArray(files) ? files : [];
20
+ }
21
+ /** Extract private attachments for a field from form_data (FormFileAttachment shape) */
22
+ export function get_field_private_attachments(form_data, field_id) {
23
+ const files = form_data[`__private_files_${field_id}`];
24
+ return Array.isArray(files) ? files : [];
25
+ }
26
+ //# 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;AAKH,8EAA8E;AAC9E,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,+EAA+E;AAC/E,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;AAED,uFAAuF;AACvF,MAAM,UAAU,qBAAqB,CAAC,SAAkC,EAAE,QAAgB;IACxF,MAAM,KAAK,GAAG,SAAS,CAAC,WAAW,QAAQ,EAAE,CAAC,CAAC;IAC/C,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAA6B,CAAC,CAAC,CAAC,EAAE,CAAC;AACnE,CAAC;AAED,wFAAwF;AACxF,MAAM,UAAU,6BAA6B,CAAC,SAAkC,EAAE,QAAgB;IAChG,MAAM,KAAK,GAAG,SAAS,CAAC,mBAAmB,QAAQ,EAAE,CAAC,CAAC;IACvD,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAA6B,CAAC,CAAC,CAAC,EAAE,CAAC;AACnE,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, get_field_attachments, get_field_private_attachments } 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,qBAAqB,EAAE,6BAA6B,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, get_field_attachments, get_field_private_attachments } 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,qBAAqB,EAAE,6BAA6B,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,193 @@
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 NoteEntry } from '../hazo_collab_form_base.js';
13
+ import type { FormFileAttachment } from '../../types/file_attachment.js';
14
+ import type { FileManagerCallbacks } from '../../types/file_manager.js';
15
+ import type { DataOkState } from '../data_ok_multi_state.js';
16
+ /** Props type for CollabFormFieldContainer (excluding children) */
17
+ type ContainerPropsType = Omit<Parameters<typeof CollabFormFieldContainer>[0], 'children'>;
18
+ /**
19
+ * Result returned by use_base_form_field
20
+ */
21
+ export interface BaseFormFieldResult {
22
+ /** Ref for the underlying DOM element (input, textarea, button, etc.) */
23
+ component_ref: React.RefObject<any>;
24
+ /** Current files (controlled or internal) */
25
+ current_files: FormFileAttachment[];
26
+ /** Internal file setter (for controlled/uncontrolled file state) */
27
+ set_internal_files: React.Dispatch<React.SetStateAction<FormFileAttachment[]>>;
28
+ /** Combined display error (external error || validation error) */
29
+ display_error: string | undefined;
30
+ /** Setter for internal validation error */
31
+ set_validation_error: React.Dispatch<React.SetStateAction<string | null>>;
32
+ /** Whether the field should be disabled (chat active || locked || skipped) */
33
+ is_field_disabled: boolean;
34
+ /** Whether visibility === 'hidden' */
35
+ is_hidden: boolean;
36
+ /** Whether to return null (responder + hidden) */
37
+ should_hide: boolean;
38
+ /** Whether to show the add entry button */
39
+ show_add_entry: boolean;
40
+ /** Unified handler for data_ok changes (both checkbox and multi-state) */
41
+ handle_data_ok_unified_change: (value: boolean | DataOkState) => void;
42
+ /** Stable callback for files change (handles internal/controlled state) */
43
+ handle_files_change: (new_files: FormFileAttachment[]) => void;
44
+ /** Final computed field ID */
45
+ field_id_final: string;
46
+ /** Chat icon click handler */
47
+ handle_chat_icon_click: () => void;
48
+ /** Chat close handler */
49
+ handle_chat_close: () => void;
50
+ /** Whether chat is currently open */
51
+ chat_is_open: boolean;
52
+ /** Whether chat is effectively disabled (hidden field, etc.) */
53
+ is_chat_effectively_disabled: boolean;
54
+ /** Container props for CollabFormFieldContainer */
55
+ container_props: ContainerPropsType;
56
+ /** Label props for CollabFormFieldLabel */
57
+ label_props: {
58
+ field_id_final: string;
59
+ label: string;
60
+ tooltip: any;
61
+ label_class_name?: string;
62
+ required?: boolean;
63
+ visibility?: 'visible' | 'hidden';
64
+ locked?: boolean;
65
+ label_actions?: React.ReactNode;
66
+ };
67
+ /** Controls props for UnifiedFieldControls */
68
+ controls_props: {
69
+ field_id: string;
70
+ icons_behaviour: any;
71
+ active_role: any;
72
+ metadata: {
73
+ data_ok: any;
74
+ skipped: boolean;
75
+ locked: boolean;
76
+ deleted: boolean;
77
+ visibility: 'visible' | 'hidden';
78
+ notes: NoteEntry[] | undefined;
79
+ chat_status: any;
80
+ };
81
+ callbacks: {
82
+ on_data_ok_change: (value: boolean | DataOkState) => void;
83
+ on_skip_change: ((skipped: boolean) => void) | undefined;
84
+ on_notes_change: ((notes: NoteEntry[]) => void) | undefined;
85
+ on_chat_click: () => void;
86
+ on_visibility_change: ((visibility: 'visible' | 'hidden') => void) | undefined;
87
+ on_lock_change: ((locked: boolean) => void) | undefined;
88
+ on_delete: (() => void) | undefined;
89
+ };
90
+ config: {
91
+ data_ok_mode: 'checkbox' | 'multi_state';
92
+ data_ok_hidden_states: DataOkState[] | undefined;
93
+ chat_group_id: string | undefined;
94
+ current_user: any;
95
+ field_data_id: string;
96
+ label: string;
97
+ chat_api_base_url: string | undefined;
98
+ chat_timezone: string | undefined;
99
+ chat_read_only: boolean | undefined;
100
+ notes_panel_style: any;
101
+ notes_background_color: string | undefined;
102
+ notes_save_mode: any;
103
+ };
104
+ fallback_visibility: {
105
+ data_ok: boolean;
106
+ skip: boolean;
107
+ notes: boolean;
108
+ chat: boolean;
109
+ visibility: boolean;
110
+ lock: boolean;
111
+ delete: boolean;
112
+ };
113
+ fallback_enabled: {
114
+ data_ok: boolean;
115
+ skip: boolean;
116
+ notes: boolean;
117
+ chat: boolean;
118
+ visibility: boolean;
119
+ lock: boolean;
120
+ delete: boolean;
121
+ };
122
+ };
123
+ /** File upload section props */
124
+ file_upload_props: {
125
+ field_id_final: string;
126
+ accept_files_public: boolean;
127
+ accept_files_private: boolean;
128
+ files_dir?: string;
129
+ max_size?: number;
130
+ min_files?: number;
131
+ max_files?: number;
132
+ file_accept?: string;
133
+ file_processor?: any;
134
+ file_validator?: any;
135
+ file_manager?: FileManagerCallbacks;
136
+ files: FormFileAttachment[];
137
+ on_files_change: (new_files: FormFileAttachment[]) => void;
138
+ component_ref: React.RefObject<any>;
139
+ private_files_permission?: string;
140
+ can_access_private_files?: boolean;
141
+ private_files?: FormFileAttachment[];
142
+ on_private_files_change?: (files: FormFileAttachment[]) => void;
143
+ };
144
+ /** Reference tag props */
145
+ reference_tag_props: {
146
+ reference_value: any;
147
+ reference_label: string | undefined;
148
+ reference_tag_background_color: string | undefined;
149
+ };
150
+ /** Error display props */
151
+ error_props: {
152
+ field_id_final: string;
153
+ error: string | undefined;
154
+ error_class_name: string | undefined;
155
+ };
156
+ /** Additional entry props */
157
+ entry_props: {
158
+ show_add_entry: boolean;
159
+ label: string;
160
+ field_id: string;
161
+ on_add_entry: ((field_id: string) => void) | undefined;
162
+ is_additional_entry: boolean | undefined;
163
+ on_delete_entry: ((field_id: string) => void) | undefined;
164
+ action_buttons_borderless: boolean | undefined;
165
+ };
166
+ /** User role */
167
+ user_role: 'author' | 'responder';
168
+ /** Width class name for field container */
169
+ field_width_class_name: string | undefined;
170
+ /** Whether field is locked */
171
+ locked: boolean;
172
+ /** Whether field is skipped */
173
+ skipped: boolean;
174
+ /** Class name */
175
+ className: string | undefined;
176
+ }
177
+ /**
178
+ * Hook that consolidates all common form field component setup.
179
+ *
180
+ * @param props - The full component props (extends CollabFormFieldBaseProps)
181
+ * @param ref - The forwarded ref
182
+ * @param element_type_name - Used for display name / typing context only
183
+ */
184
+ export declare function use_base_form_field<TRef>(props: CollabFormFieldBaseProps & {
185
+ disabled?: boolean;
186
+ className?: string;
187
+ id?: string;
188
+ files?: FormFileAttachment[];
189
+ on_files_change?: (files: FormFileAttachment[]) => void;
190
+ [key: string]: any;
191
+ }, ref: React.ForwardedRef<TRef>): BaseFormFieldResult;
192
+ export {};
193
+ //# 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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"}