hazo_collab_forms 1.7.0 → 1.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +276 -3
- package/dist/components/hazo_add_field_dialog/components/field_type_combobox.d.ts +34 -0
- package/dist/components/hazo_add_field_dialog/components/field_type_combobox.d.ts.map +1 -0
- package/dist/components/hazo_add_field_dialog/components/field_type_combobox.js +51 -0
- package/dist/components/hazo_add_field_dialog/components/field_type_combobox.js.map +1 -0
- package/dist/components/hazo_add_field_dialog/components/index.d.ts +8 -0
- package/dist/components/hazo_add_field_dialog/components/index.d.ts.map +1 -0
- package/dist/components/hazo_add_field_dialog/components/index.js +8 -0
- package/dist/components/hazo_add_field_dialog/components/index.js.map +1 -0
- package/dist/components/hazo_add_field_dialog/components/pending_field_item.d.ts +56 -0
- package/dist/components/hazo_add_field_dialog/components/pending_field_item.d.ts.map +1 -0
- package/dist/components/hazo_add_field_dialog/components/pending_field_item.js +44 -0
- package/dist/components/hazo_add_field_dialog/components/pending_field_item.js.map +1 -0
- package/dist/components/hazo_add_field_dialog/components/pending_field_list.d.ts +60 -0
- package/dist/components/hazo_add_field_dialog/components/pending_field_list.d.ts.map +1 -0
- package/dist/components/hazo_add_field_dialog/components/pending_field_list.js +30 -0
- package/dist/components/hazo_add_field_dialog/components/pending_field_list.js.map +1 -0
- package/dist/components/hazo_add_field_dialog/components/question_input.d.ts +43 -0
- package/dist/components/hazo_add_field_dialog/components/question_input.d.ts.map +1 -0
- package/dist/components/hazo_add_field_dialog/components/question_input.js +35 -0
- package/dist/components/hazo_add_field_dialog/components/question_input.js.map +1 -0
- package/dist/components/hazo_add_field_dialog/hazo_add_field_dialog.d.ts +19 -0
- package/dist/components/hazo_add_field_dialog/hazo_add_field_dialog.d.ts.map +1 -0
- package/dist/components/hazo_add_field_dialog/hazo_add_field_dialog.js +177 -0
- package/dist/components/hazo_add_field_dialog/hazo_add_field_dialog.js.map +1 -0
- package/dist/components/hazo_add_field_dialog/index.d.ts +11 -0
- package/dist/components/hazo_add_field_dialog/index.d.ts.map +1 -0
- package/dist/components/hazo_add_field_dialog/index.js +9 -0
- package/dist/components/hazo_add_field_dialog/index.js.map +1 -0
- package/dist/components/hazo_add_field_dialog/options/checkbox_options.d.ts +18 -0
- package/dist/components/hazo_add_field_dialog/options/checkbox_options.d.ts.map +1 -0
- package/dist/components/hazo_add_field_dialog/options/checkbox_options.js +16 -0
- package/dist/components/hazo_add_field_dialog/options/checkbox_options.js.map +1 -0
- package/dist/components/hazo_add_field_dialog/options/date_options.d.ts +18 -0
- package/dist/components/hazo_add_field_dialog/options/date_options.d.ts.map +1 -0
- package/dist/components/hazo_add_field_dialog/options/date_options.js +11 -0
- package/dist/components/hazo_add_field_dialog/options/date_options.js.map +1 -0
- package/dist/components/hazo_add_field_dialog/options/index.d.ts +7 -0
- package/dist/components/hazo_add_field_dialog/options/index.d.ts.map +1 -0
- package/dist/components/hazo_add_field_dialog/options/index.js +7 -0
- package/dist/components/hazo_add_field_dialog/options/index.js.map +1 -0
- package/dist/components/hazo_add_field_dialog/options/options_list_editor.d.ts +39 -0
- package/dist/components/hazo_add_field_dialog/options/options_list_editor.d.ts.map +1 -0
- package/dist/components/hazo_add_field_dialog/options/options_list_editor.js +68 -0
- package/dist/components/hazo_add_field_dialog/options/options_list_editor.js.map +1 -0
- package/dist/components/hazo_add_field_dialog/types.d.ts +245 -0
- package/dist/components/hazo_add_field_dialog/types.d.ts.map +1 -0
- package/dist/components/hazo_add_field_dialog/types.js +88 -0
- package/dist/components/hazo_add_field_dialog/types.js.map +1 -0
- package/dist/components/hazo_add_group_dialog/hazo_add_group_dialog.d.ts +18 -0
- package/dist/components/hazo_add_group_dialog/hazo_add_group_dialog.d.ts.map +1 -0
- package/dist/components/hazo_add_group_dialog/hazo_add_group_dialog.js +193 -0
- package/dist/components/hazo_add_group_dialog/hazo_add_group_dialog.js.map +1 -0
- package/dist/components/hazo_add_group_dialog/index.d.ts +6 -0
- package/dist/components/hazo_add_group_dialog/index.d.ts.map +1 -0
- package/dist/components/hazo_add_group_dialog/index.js +5 -0
- package/dist/components/hazo_add_group_dialog/index.js.map +1 -0
- package/dist/components/hazo_add_group_dialog/types.d.ts +67 -0
- package/dist/components/hazo_add_group_dialog/types.d.ts.map +1 -0
- package/dist/components/hazo_add_group_dialog/types.js +5 -0
- package/dist/components/hazo_add_group_dialog/types.js.map +1 -0
- package/dist/components/hazo_collab_form_base.d.ts +101 -0
- package/dist/components/hazo_collab_form_base.d.ts.map +1 -1
- package/dist/components/hazo_collab_form_base.js +75 -1
- package/dist/components/hazo_collab_form_base.js.map +1 -1
- package/dist/components/hazo_collab_form_checkbox.d.ts.map +1 -1
- package/dist/components/hazo_collab_form_checkbox.js +8 -2
- package/dist/components/hazo_collab_form_checkbox.js.map +1 -1
- package/dist/components/hazo_collab_form_combo.d.ts.map +1 -1
- package/dist/components/hazo_collab_form_combo.js +8 -2
- package/dist/components/hazo_collab_form_combo.js.map +1 -1
- package/dist/components/hazo_collab_form_date.d.ts.map +1 -1
- package/dist/components/hazo_collab_form_date.js +8 -2
- package/dist/components/hazo_collab_form_date.js.map +1 -1
- package/dist/components/hazo_collab_form_doc.d.ts +95 -0
- package/dist/components/hazo_collab_form_doc.d.ts.map +1 -0
- package/dist/components/hazo_collab_form_doc.js +597 -0
- package/dist/components/hazo_collab_form_doc.js.map +1 -0
- package/dist/components/hazo_collab_form_group.d.ts.map +1 -1
- package/dist/components/hazo_collab_form_group.js +11 -1
- package/dist/components/hazo_collab_form_group.js.map +1 -1
- package/dist/components/hazo_collab_form_inputbox.d.ts.map +1 -1
- package/dist/components/hazo_collab_form_inputbox.js +9 -3
- package/dist/components/hazo_collab_form_inputbox.js.map +1 -1
- package/dist/components/hazo_collab_form_radio.d.ts.map +1 -1
- package/dist/components/hazo_collab_form_radio.js +8 -2
- package/dist/components/hazo_collab_form_radio.js.map +1 -1
- package/dist/components/hazo_collab_form_set.d.ts +124 -1
- package/dist/components/hazo_collab_form_set.d.ts.map +1 -1
- package/dist/components/hazo_collab_form_set.js +229 -17
- package/dist/components/hazo_collab_form_set.js.map +1 -1
- package/dist/components/hazo_collab_form_summary/field_controls_inline.d.ts.map +1 -1
- package/dist/components/hazo_collab_form_summary/field_controls_inline.js +4 -0
- package/dist/components/hazo_collab_form_summary/field_controls_inline.js.map +1 -1
- package/dist/components/hazo_collab_form_summary/field_controls_popover.d.ts.map +1 -1
- package/dist/components/hazo_collab_form_summary/field_controls_popover.js +4 -0
- package/dist/components/hazo_collab_form_summary/field_controls_popover.js.map +1 -1
- package/dist/components/hazo_collab_form_summary/index.d.ts.map +1 -1
- package/dist/components/hazo_collab_form_summary/index.js +60 -9
- package/dist/components/hazo_collab_form_summary/index.js.map +1 -1
- package/dist/components/hazo_collab_form_summary/role_utils.d.ts +5 -0
- package/dist/components/hazo_collab_form_summary/role_utils.d.ts.map +1 -1
- package/dist/components/hazo_collab_form_summary/role_utils.js +20 -1
- package/dist/components/hazo_collab_form_summary/role_utils.js.map +1 -1
- package/dist/components/hazo_collab_form_summary/summary_field.d.ts.map +1 -1
- package/dist/components/hazo_collab_form_summary/summary_field.js +19 -7
- package/dist/components/hazo_collab_form_summary/summary_field.js.map +1 -1
- package/dist/components/hazo_collab_form_summary/summary_group.d.ts.map +1 -1
- package/dist/components/hazo_collab_form_summary/summary_group.js +24 -17
- package/dist/components/hazo_collab_form_summary/summary_group.js.map +1 -1
- package/dist/components/hazo_collab_form_summary/types.d.ts +57 -1
- package/dist/components/hazo_collab_form_summary/types.d.ts.map +1 -1
- package/dist/components/hazo_collab_form_summary/types.js.map +1 -1
- package/dist/components/hazo_collab_form_summary/utils.d.ts +3 -13
- package/dist/components/hazo_collab_form_summary/utils.d.ts.map +1 -1
- package/dist/components/hazo_collab_form_summary/utils.js +17 -29
- package/dist/components/hazo_collab_form_summary/utils.js.map +1 -1
- package/dist/components/hazo_collab_form_textarea.d.ts.map +1 -1
- package/dist/components/hazo_collab_form_textarea.js +8 -2
- package/dist/components/hazo_collab_form_textarea.js.map +1 -1
- package/dist/components/hazo_collab_form_view/context.d.ts +35 -0
- package/dist/components/hazo_collab_form_view/context.d.ts.map +1 -0
- package/dist/components/hazo_collab_form_view/context.js +297 -0
- package/dist/components/hazo_collab_form_view/context.js.map +1 -0
- package/dist/components/hazo_collab_form_view/index.d.ts +66 -0
- package/dist/components/hazo_collab_form_view/index.d.ts.map +1 -0
- package/dist/components/hazo_collab_form_view/index.js +143 -0
- package/dist/components/hazo_collab_form_view/index.js.map +1 -0
- package/dist/components/hazo_collab_form_view/types.d.ts +391 -0
- package/dist/components/hazo_collab_form_view/types.d.ts.map +1 -0
- package/dist/components/hazo_collab_form_view/types.js +11 -0
- package/dist/components/hazo_collab_form_view/types.js.map +1 -0
- package/dist/components/hazo_collab_form_view/use_form_view.d.ts +98 -0
- package/dist/components/hazo_collab_form_view/use_form_view.d.ts.map +1 -0
- package/dist/components/hazo_collab_form_view/use_form_view.js +226 -0
- package/dist/components/hazo_collab_form_view/use_form_view.js.map +1 -0
- package/dist/components/hazo_collab_form_view/views/approval_view.d.ts +32 -0
- package/dist/components/hazo_collab_form_view/views/approval_view.d.ts.map +1 -0
- package/dist/components/hazo_collab_form_view/views/approval_view.js +166 -0
- package/dist/components/hazo_collab_form_view/views/approval_view.js.map +1 -0
- package/dist/components/hazo_collab_form_view/views/edit_view.d.ts +14 -0
- package/dist/components/hazo_collab_form_view/views/edit_view.d.ts.map +1 -0
- package/dist/components/hazo_collab_form_view/views/edit_view.js +113 -0
- package/dist/components/hazo_collab_form_view/views/edit_view.js.map +1 -0
- package/dist/components/hazo_collab_form_view/views/print_view.d.ts +37 -0
- package/dist/components/hazo_collab_form_view/views/print_view.d.ts.map +1 -0
- package/dist/components/hazo_collab_form_view/views/print_view.js +109 -0
- package/dist/components/hazo_collab_form_view/views/print_view.js.map +1 -0
- package/dist/components/hazo_collab_form_view/views/summary_view.d.ts +11 -0
- package/dist/components/hazo_collab_form_view/views/summary_view.d.ts.map +1 -0
- package/dist/components/hazo_collab_form_view/views/summary_view.js +316 -0
- package/dist/components/hazo_collab_form_view/views/summary_view.js.map +1 -0
- package/dist/components/hazo_edit_field_dialog/hazo_edit_field_dialog.d.ts +17 -0
- package/dist/components/hazo_edit_field_dialog/hazo_edit_field_dialog.d.ts.map +1 -0
- package/dist/components/hazo_edit_field_dialog/hazo_edit_field_dialog.js +106 -0
- package/dist/components/hazo_edit_field_dialog/hazo_edit_field_dialog.js.map +1 -0
- package/dist/components/hazo_edit_field_dialog/index.d.ts +6 -0
- package/dist/components/hazo_edit_field_dialog/index.d.ts.map +1 -0
- package/dist/components/hazo_edit_field_dialog/index.js +5 -0
- package/dist/components/hazo_edit_field_dialog/index.js.map +1 -0
- package/dist/components/hazo_edit_field_dialog/types.d.ts +92 -0
- package/dist/components/hazo_edit_field_dialog/types.d.ts.map +1 -0
- package/dist/components/hazo_edit_field_dialog/types.js +5 -0
- package/dist/components/hazo_edit_field_dialog/types.js.map +1 -0
- package/dist/components/hazo_field_selector_dialog/components/field_autocomplete.d.ts +9 -0
- package/dist/components/hazo_field_selector_dialog/components/field_autocomplete.d.ts.map +1 -0
- package/dist/components/hazo_field_selector_dialog/components/field_autocomplete.js +133 -0
- package/dist/components/hazo_field_selector_dialog/components/field_autocomplete.js.map +1 -0
- package/dist/components/hazo_field_selector_dialog/components/section_sidebar.d.ts +9 -0
- package/dist/components/hazo_field_selector_dialog/components/section_sidebar.d.ts.map +1 -0
- package/dist/components/hazo_field_selector_dialog/components/section_sidebar.js +26 -0
- package/dist/components/hazo_field_selector_dialog/components/section_sidebar.js.map +1 -0
- package/dist/components/hazo_field_selector_dialog/components/selected_fields_panel.d.ts +9 -0
- package/dist/components/hazo_field_selector_dialog/components/selected_fields_panel.d.ts.map +1 -0
- package/dist/components/hazo_field_selector_dialog/components/selected_fields_panel.js +45 -0
- package/dist/components/hazo_field_selector_dialog/components/selected_fields_panel.js.map +1 -0
- package/dist/components/hazo_field_selector_dialog/components/sortable_field_item.d.ts +9 -0
- package/dist/components/hazo_field_selector_dialog/components/sortable_field_item.d.ts.map +1 -0
- package/dist/components/hazo_field_selector_dialog/components/sortable_field_item.js +64 -0
- package/dist/components/hazo_field_selector_dialog/components/sortable_field_item.js.map +1 -0
- package/dist/components/hazo_field_selector_dialog/components/sortable_field_list.d.ts +9 -0
- package/dist/components/hazo_field_selector_dialog/components/sortable_field_list.d.ts.map +1 -0
- package/dist/components/hazo_field_selector_dialog/components/sortable_field_list.js +43 -0
- package/dist/components/hazo_field_selector_dialog/components/sortable_field_list.js.map +1 -0
- package/dist/components/hazo_field_selector_dialog/hazo_field_selector_dialog.d.ts +15 -0
- package/dist/components/hazo_field_selector_dialog/hazo_field_selector_dialog.d.ts.map +1 -0
- package/dist/components/hazo_field_selector_dialog/hazo_field_selector_dialog.js +146 -0
- package/dist/components/hazo_field_selector_dialog/hazo_field_selector_dialog.js.map +1 -0
- package/dist/components/hazo_field_selector_dialog/index.d.ts +12 -0
- package/dist/components/hazo_field_selector_dialog/index.d.ts.map +1 -0
- package/dist/components/hazo_field_selector_dialog/index.js +14 -0
- package/dist/components/hazo_field_selector_dialog/index.js.map +1 -0
- package/dist/components/hazo_field_selector_dialog/types.d.ts +182 -0
- package/dist/components/hazo_field_selector_dialog/types.d.ts.map +1 -0
- package/dist/components/hazo_field_selector_dialog/types.js +5 -0
- package/dist/components/hazo_field_selector_dialog/types.js.map +1 -0
- package/dist/components/hazo_field_selector_dialog/utils.d.ts +45 -0
- package/dist/components/hazo_field_selector_dialog/utils.d.ts.map +1 -0
- package/dist/components/hazo_field_selector_dialog/utils.js +271 -0
- package/dist/components/hazo_field_selector_dialog/utils.js.map +1 -0
- package/dist/components/hazo_template_generator/components/field_editor.d.ts.map +1 -1
- package/dist/components/hazo_template_generator/components/field_editor.js +46 -17
- package/dist/components/hazo_template_generator/components/field_editor.js.map +1 -1
- package/dist/components/hazo_template_generator/components/preview_dialog.d.ts.map +1 -1
- package/dist/components/hazo_template_generator/components/preview_dialog.js +16 -16
- package/dist/components/hazo_template_generator/components/preview_dialog.js.map +1 -1
- package/dist/components/hazo_template_generator/components/preview_panel.d.ts.map +1 -1
- package/dist/components/hazo_template_generator/components/preview_panel.js +32 -13
- package/dist/components/hazo_template_generator/components/preview_panel.js.map +1 -1
- package/dist/components/hazo_template_generator/components/section_tree.d.ts.map +1 -1
- package/dist/components/hazo_template_generator/components/section_tree.js +61 -27
- package/dist/components/hazo_template_generator/components/section_tree.js.map +1 -1
- package/dist/components/hazo_template_generator/components/tabs/conditional_tab.js +5 -5
- package/dist/components/hazo_template_generator/components/tabs/icons_behaviour_tab.d.ts.map +1 -1
- package/dist/components/hazo_template_generator/components/tabs/icons_behaviour_tab.js +4 -2
- package/dist/components/hazo_template_generator/components/tabs/icons_behaviour_tab.js.map +1 -1
- package/dist/components/hazo_template_generator/components/tabs/section_tab.d.ts +10 -0
- package/dist/components/hazo_template_generator/components/tabs/section_tab.d.ts.map +1 -0
- package/dist/components/hazo_template_generator/components/tabs/section_tab.js +22 -0
- package/dist/components/hazo_template_generator/components/tabs/section_tab.js.map +1 -0
- package/dist/components/hazo_template_generator/components/toolbar.d.ts +2 -2
- package/dist/components/hazo_template_generator/components/toolbar.d.ts.map +1 -1
- package/dist/components/hazo_template_generator/components/toolbar.js +76 -26
- package/dist/components/hazo_template_generator/components/toolbar.js.map +1 -1
- package/dist/components/hazo_template_generator/components/ui/resizable.d.ts +2 -3
- package/dist/components/hazo_template_generator/components/ui/resizable.d.ts.map +1 -1
- package/dist/components/hazo_template_generator/components/ui/resizable.js +3 -3
- package/dist/components/hazo_template_generator/components/ui/resizable.js.map +1 -1
- package/dist/components/hazo_template_generator/context.d.ts +5 -3
- package/dist/components/hazo_template_generator/context.d.ts.map +1 -1
- package/dist/components/hazo_template_generator/context.js +282 -102
- package/dist/components/hazo_template_generator/context.js.map +1 -1
- package/dist/components/hazo_template_generator/index.d.ts +4 -3
- package/dist/components/hazo_template_generator/index.d.ts.map +1 -1
- package/dist/components/hazo_template_generator/index.js +2 -2
- package/dist/components/hazo_template_generator/index.js.map +1 -1
- package/dist/components/hazo_template_generator/template_generator.d.ts.map +1 -1
- package/dist/components/hazo_template_generator/template_generator.js +8 -2
- package/dist/components/hazo_template_generator/template_generator.js.map +1 -1
- package/dist/components/hazo_template_generator/types.d.ts +41 -10
- package/dist/components/hazo_template_generator/types.d.ts.map +1 -1
- package/dist/components/hazo_template_generator/types.js +32 -1
- package/dist/components/hazo_template_generator/types.js.map +1 -1
- package/dist/components/hazo_template_generator/utils/template_utils.d.ts +73 -26
- package/dist/components/hazo_template_generator/utils/template_utils.d.ts.map +1 -1
- package/dist/components/hazo_template_generator/utils/template_utils.js +297 -110
- package/dist/components/hazo_template_generator/utils/template_utils.js.map +1 -1
- package/dist/components/hazo_template_generator/utils/validation.d.ts +4 -4
- package/dist/components/hazo_template_generator/utils/validation.d.ts.map +1 -1
- package/dist/components/hazo_template_generator/utils/validation.js +42 -17
- package/dist/components/hazo_template_generator/utils/validation.js.map +1 -1
- package/dist/components/index.d.ts +25 -4
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/index.js +22 -2
- package/dist/components/index.js.map +1 -1
- package/dist/components/shared/dependency/check_dependency.d.ts +36 -0
- package/dist/components/shared/dependency/check_dependency.d.ts.map +1 -0
- package/dist/components/shared/dependency/check_dependency.js +47 -0
- package/dist/components/shared/dependency/check_dependency.js.map +1 -0
- package/dist/components/shared/dependency/index.d.ts +22 -0
- package/dist/components/shared/dependency/index.d.ts.map +1 -0
- package/dist/components/shared/dependency/index.js +22 -0
- package/dist/components/shared/dependency/index.js.map +1 -0
- package/dist/components/shared/dependency/parse_dependency.d.ts +33 -0
- package/dist/components/shared/dependency/parse_dependency.d.ts.map +1 -0
- package/dist/components/shared/dependency/parse_dependency.js +35 -0
- package/dist/components/shared/dependency/parse_dependency.js.map +1 -0
- package/dist/components/shared/dialog/dialog.d.ts +35 -0
- package/dist/components/shared/dialog/dialog.d.ts.map +1 -0
- package/dist/components/shared/dialog/dialog.js +51 -0
- package/dist/components/shared/dialog/dialog.js.map +1 -0
- package/dist/components/shared/dialog/index.d.ts +5 -0
- package/dist/components/shared/dialog/index.d.ts.map +1 -0
- package/dist/components/shared/dialog/index.js +5 -0
- package/dist/components/shared/dialog/index.js.map +1 -0
- package/dist/components/shared/field_state/index.d.ts +31 -0
- package/dist/components/shared/field_state/index.d.ts.map +1 -0
- package/dist/components/shared/field_state/index.js +31 -0
- package/dist/components/shared/field_state/index.js.map +1 -0
- package/dist/components/shared/field_state/normalize.d.ts +53 -0
- package/dist/components/shared/field_state/normalize.d.ts.map +1 -0
- package/dist/components/shared/field_state/normalize.js +103 -0
- package/dist/components/shared/field_state/normalize.js.map +1 -0
- package/dist/components/shared/field_state/types.d.ts +137 -0
- package/dist/components/shared/field_state/types.d.ts.map +1 -0
- package/dist/components/shared/field_state/types.js +9 -0
- package/dist/components/shared/field_state/types.js.map +1 -0
- package/dist/components/shared/field_utils/collect_field_ids.d.ts +71 -0
- package/dist/components/shared/field_utils/collect_field_ids.d.ts.map +1 -0
- package/dist/components/shared/field_utils/collect_field_ids.js +88 -0
- package/dist/components/shared/field_utils/collect_field_ids.js.map +1 -0
- package/dist/components/shared/field_utils/index.d.ts +36 -0
- package/dist/components/shared/field_utils/index.d.ts.map +1 -0
- package/dist/components/shared/field_utils/index.js +38 -0
- package/dist/components/shared/field_utils/index.js.map +1 -0
- package/dist/components/shared/field_utils/should_render_field.d.ts +64 -0
- package/dist/components/shared/field_utils/should_render_field.d.ts.map +1 -0
- package/dist/components/shared/field_utils/should_render_field.js +111 -0
- package/dist/components/shared/field_utils/should_render_field.js.map +1 -0
- package/dist/components/shared/field_utils/traverse_fields.d.ts +51 -0
- package/dist/components/shared/field_utils/traverse_fields.d.ts.map +1 -0
- package/dist/components/shared/field_utils/traverse_fields.js +72 -0
- package/dist/components/shared/field_utils/traverse_fields.js.map +1 -0
- package/dist/components/shared/field_utils/types.d.ts +67 -0
- package/dist/components/shared/field_utils/types.d.ts.map +1 -0
- package/dist/components/shared/field_utils/types.js +5 -0
- package/dist/components/shared/field_utils/types.js.map +1 -0
- package/dist/components/shared/unified_field_controls/build_control_props.d.ts +107 -0
- package/dist/components/shared/unified_field_controls/build_control_props.d.ts.map +1 -0
- package/dist/components/shared/unified_field_controls/build_control_props.js +121 -0
- package/dist/components/shared/unified_field_controls/build_control_props.js.map +1 -0
- package/dist/components/shared/unified_field_controls/constants.d.ts.map +1 -1
- package/dist/components/shared/unified_field_controls/constants.js +12 -0
- package/dist/components/shared/unified_field_controls/constants.js.map +1 -1
- package/dist/components/shared/unified_field_controls/index.d.ts +2 -0
- package/dist/components/shared/unified_field_controls/index.d.ts.map +1 -1
- package/dist/components/shared/unified_field_controls/index.js +4 -0
- package/dist/components/shared/unified_field_controls/index.js.map +1 -1
- package/dist/components/shared/unified_field_controls/kebab_menu.d.ts.map +1 -1
- package/dist/components/shared/unified_field_controls/kebab_menu.js +27 -3
- package/dist/components/shared/unified_field_controls/kebab_menu.js.map +1 -1
- package/dist/components/shared/unified_field_controls/resolve_field_controls.d.ts +80 -0
- package/dist/components/shared/unified_field_controls/resolve_field_controls.d.ts.map +1 -0
- package/dist/components/shared/unified_field_controls/resolve_field_controls.js +91 -0
- package/dist/components/shared/unified_field_controls/resolve_field_controls.js.map +1 -0
- package/dist/components/shared/unified_field_controls/types.d.ts +14 -0
- package/dist/components/shared/unified_field_controls/types.d.ts.map +1 -1
- package/dist/components/shared/unified_field_controls/unified_field_controls.d.ts.map +1 -1
- package/dist/components/shared/unified_field_controls/unified_field_controls.js +29 -5
- package/dist/components/shared/unified_field_controls/unified_field_controls.js.map +1 -1
- package/dist/components/shared/unified_field_controls/use_control_resolution.d.ts.map +1 -1
- package/dist/components/shared/unified_field_controls/use_control_resolution.js +8 -3
- package/dist/components/shared/unified_field_controls/use_control_resolution.js.map +1 -1
- package/dist/types/icons_behaviour.d.ts +7 -1
- package/dist/types/icons_behaviour.d.ts.map +1 -1
- package/dist/types/icons_behaviour.js +6 -1
- package/dist/types/icons_behaviour.js.map +1 -1
- package/dist/utils/field_definition_to_config.d.ts +99 -0
- package/dist/utils/field_definition_to_config.d.ts.map +1 -0
- package/dist/utils/field_definition_to_config.js +297 -0
- package/dist/utils/field_definition_to_config.js.map +1 -0
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +1 -0
- package/dist/utils/index.js.map +1 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -8,15 +8,19 @@ React form components with integrated chat collaboration, built for Next.js with
|
|
|
8
8
|
## Features
|
|
9
9
|
|
|
10
10
|
- **Integrated Chat Collaboration**: Each form field supports real-time chat discussions via HazoChat
|
|
11
|
+
- **Unified Form View**: Multi-mode form display (Edit, Summary, Print, Approval) with shared context
|
|
11
12
|
- **Read-Only Summary Views**: Display form data in summary format with HazoCollabFormSummary component
|
|
12
13
|
- **Advanced Field Controls**: Visibility toggle, lock/unlock, field duplication, soft delete, and notes
|
|
13
14
|
- **Notes Integration**: Database-backed notes on fields via hazo_notes package (optional)
|
|
14
15
|
- **Field Tooltips**: Help tooltips with hover cards for field labels and data table columns
|
|
15
16
|
- **Template Generator**: Visual drag-and-drop builder for creating form configurations (HazoTemplateGenerator)
|
|
17
|
+
- **Dynamic Field Management**: Add, edit, and delete fields at runtime with dialog components
|
|
18
|
+
- **Field Selector**: Search and select fields from templates with HazoFieldSelectorDialog
|
|
16
19
|
- **Role-Based Icon Controls**: Configure control visibility and behavior per role with icons_behaviour system
|
|
17
20
|
- **Unified Field Controls**: Consistent icon controls across form and summary views with automatic kebab consolidation
|
|
18
21
|
- **Prop-Based Controls**: Enable/disable features via `enable_*` props for full control
|
|
19
22
|
- **File Upload with Validation**: Built-in file upload with custom validation callbacks
|
|
23
|
+
- **Document Fields**: File-only fields with HazoCollabFormDoc component
|
|
20
24
|
- **Mandatory File Indicator**: Visual indicators (red asterisk) for required file uploads
|
|
21
25
|
- **Custom File Validators**: Implement custom validation logic before file upload
|
|
22
26
|
- **Form Sets**: JSON-based dynamic form generation with full file upload support
|
|
@@ -140,7 +144,7 @@ npm install hazo_collab_forms react react-dom react-icons sonner lucide-react \
|
|
|
140
144
|
### One-Line shadcn Install (All Components)
|
|
141
145
|
|
|
142
146
|
```bash
|
|
143
|
-
npx shadcn@latest add button label dialog tooltip sonner popover command calendar accordion tabs resizable hover-card separator card sheet
|
|
147
|
+
npx shadcn@latest add button label dialog tooltip sonner popover command calendar accordion tabs resizable hover-card separator card sheet scroll-area checkbox select
|
|
144
148
|
```
|
|
145
149
|
|
|
146
150
|
---
|
|
@@ -772,10 +776,148 @@ interface TemplateOutput {
|
|
|
772
776
|
|
|
773
777
|
Install with: `npx shadcn@latest add resizable tabs`
|
|
774
778
|
|
|
779
|
+
### Unified Form View (HazoCollabFormView)
|
|
780
|
+
|
|
781
|
+
A unified component that combines edit, summary, print, and approval views with shared context. Switch between view modes without remounting, preserving state and field metadata.
|
|
782
|
+
|
|
783
|
+
**Basic Usage:**
|
|
784
|
+
|
|
785
|
+
```typescript
|
|
786
|
+
'use client';
|
|
787
|
+
|
|
788
|
+
import { HazoCollabFormView, type ViewMode } from 'hazo_collab_forms';
|
|
789
|
+
import { useState } from 'react';
|
|
790
|
+
|
|
791
|
+
export default function UnifiedFormPage() {
|
|
792
|
+
const [viewMode, setViewMode] = useState<ViewMode>('edit');
|
|
793
|
+
const [formData, setFormData] = useState<Record<string, unknown>>({});
|
|
794
|
+
|
|
795
|
+
return (
|
|
796
|
+
<div>
|
|
797
|
+
{/* View mode switcher */}
|
|
798
|
+
<div className="flex gap-2 mb-4">
|
|
799
|
+
<button onClick={() => setViewMode('edit')}>Edit</button>
|
|
800
|
+
<button onClick={() => setViewMode('summary')}>Summary</button>
|
|
801
|
+
<button onClick={() => setViewMode('print')}>Print</button>
|
|
802
|
+
<button onClick={() => setViewMode('approval')}>Approval</button>
|
|
803
|
+
</div>
|
|
804
|
+
|
|
805
|
+
<HazoCollabFormView
|
|
806
|
+
sections={sections}
|
|
807
|
+
view_mode={viewMode}
|
|
808
|
+
form_data={formData}
|
|
809
|
+
on_form_data_change={setFormData}
|
|
810
|
+
icons_behaviour={iconsBehaviour}
|
|
811
|
+
active_role="tax_agent"
|
|
812
|
+
enable_chat={true}
|
|
813
|
+
chat_group_id="form-session-123"
|
|
814
|
+
/>
|
|
815
|
+
</div>
|
|
816
|
+
);
|
|
817
|
+
}
|
|
818
|
+
```
|
|
819
|
+
|
|
820
|
+
**View Modes:**
|
|
821
|
+
|
|
822
|
+
| Mode | Description |
|
|
823
|
+
|------|-------------|
|
|
824
|
+
| `edit` | Full form editing with all field controls |
|
|
825
|
+
| `summary` | Read-only summary view for review |
|
|
826
|
+
| `print` | Print-optimized layout |
|
|
827
|
+
| `approval` | Review with data_ok approval workflow |
|
|
828
|
+
|
|
829
|
+
**Key Props:**
|
|
830
|
+
|
|
831
|
+
| Prop | Type | Description |
|
|
832
|
+
|------|------|-------------|
|
|
833
|
+
| `sections` | ViewSection[] | Form sections (same as HazoCollabFormSet) |
|
|
834
|
+
| `view_mode` | ViewMode | Current view mode |
|
|
835
|
+
| `form_data` | Record<string, unknown> | Form values |
|
|
836
|
+
| `on_form_data_change` | callback | Called when form data changes |
|
|
837
|
+
| `field_metadata` | Record<string, FieldMetadata> | Field metadata (visibility, lock, etc.) |
|
|
838
|
+
| `on_field_metadata_change` | callback | Called when metadata changes |
|
|
839
|
+
| `icons_behaviour` | IconsBehaviour | Role-based control configuration |
|
|
840
|
+
| `active_role` | string | Current user's role |
|
|
841
|
+
|
|
842
|
+
**Context Hooks:**
|
|
843
|
+
|
|
844
|
+
Access form state from nested components using hooks:
|
|
845
|
+
|
|
846
|
+
```typescript
|
|
847
|
+
import {
|
|
848
|
+
useFormViewContext,
|
|
849
|
+
useViewMode,
|
|
850
|
+
useFormData,
|
|
851
|
+
useFieldMetadata,
|
|
852
|
+
useFieldValue,
|
|
853
|
+
useFieldMeta,
|
|
854
|
+
useApprovalStats,
|
|
855
|
+
} from 'hazo_collab_forms';
|
|
856
|
+
|
|
857
|
+
function FieldComponent({ fieldId }) {
|
|
858
|
+
const viewMode = useViewMode();
|
|
859
|
+
const value = useFieldValue(fieldId);
|
|
860
|
+
const { data_ok, locked, visibility } = useFieldMeta(fieldId);
|
|
861
|
+
const { total, approved, pending } = useApprovalStats();
|
|
862
|
+
|
|
863
|
+
// Render based on view mode and field state
|
|
864
|
+
}
|
|
865
|
+
```
|
|
866
|
+
|
|
775
867
|
### Role-Based Icon Controls (icons_behaviour)
|
|
776
868
|
|
|
777
869
|
Configure which control icons are visible and enabled based on user roles. Supports automatic consolidation into kebab (3-dots) menus and extraction of active controls.
|
|
778
870
|
|
|
871
|
+
**JSON Configuration Options:**
|
|
872
|
+
|
|
873
|
+
You can configure icons_behaviour in two ways:
|
|
874
|
+
|
|
875
|
+
1. **Embedded** (original): Include icons_behaviour directly in the form JSON file
|
|
876
|
+
2. **Separate file** (recommended): Store icons_behaviour in a dedicated JSON file for reuse across forms
|
|
877
|
+
|
|
878
|
+
**Separate File Approach (v1.7.0+):**
|
|
879
|
+
|
|
880
|
+
```
|
|
881
|
+
public/data/form-sets/
|
|
882
|
+
tax_form_individual_full.json # Sections only
|
|
883
|
+
icon_behaviour.json # Icons behaviour config (reusable)
|
|
884
|
+
```
|
|
885
|
+
|
|
886
|
+
Load both files and pass icons_behaviour as a prop:
|
|
887
|
+
|
|
888
|
+
```typescript
|
|
889
|
+
// Load form configuration
|
|
890
|
+
const sectionsResponse = await fetch('/data/form-sets/tax_form_individual_full.json');
|
|
891
|
+
const { sections } = await sectionsResponse.json();
|
|
892
|
+
|
|
893
|
+
const behaviourResponse = await fetch('/data/form-sets/icon_behaviour.json');
|
|
894
|
+
const icons_behaviour = await behaviourResponse.json();
|
|
895
|
+
|
|
896
|
+
// Pass to HazoCollabFormSet
|
|
897
|
+
<HazoCollabFormSet
|
|
898
|
+
section={section}
|
|
899
|
+
icons_behaviour={icons_behaviour}
|
|
900
|
+
active_role="tax_agent"
|
|
901
|
+
/>
|
|
902
|
+
|
|
903
|
+
// Pass to HazoCollabFormSummary
|
|
904
|
+
<HazoCollabFormSummary
|
|
905
|
+
sections={sections}
|
|
906
|
+
icons_behaviour={icons_behaviour}
|
|
907
|
+
active_role="tax_agent"
|
|
908
|
+
form_data={formData}
|
|
909
|
+
/>
|
|
910
|
+
```
|
|
911
|
+
|
|
912
|
+
**Prop Priority:**
|
|
913
|
+
1. `icons_behaviour` prop (if provided)
|
|
914
|
+
2. `section.icons_behaviour` or `sections[0]?.icons_behaviour` (backward compatible)
|
|
915
|
+
|
|
916
|
+
This separation allows:
|
|
917
|
+
- Reusing the same icon behavior across multiple forms
|
|
918
|
+
- Changing roles without modifying form structure
|
|
919
|
+
- Easier maintenance of large form configurations
|
|
920
|
+
|
|
779
921
|
**Configuration Structure:**
|
|
780
922
|
|
|
781
923
|
```typescript
|
|
@@ -902,8 +1044,118 @@ const fields: FieldConfig[] = [
|
|
|
902
1044
|
- Easy role switching without code changes
|
|
903
1045
|
- Visual editor in Template Generator
|
|
904
1046
|
|
|
1047
|
+
### Dynamic Field Dialogs
|
|
1048
|
+
|
|
1049
|
+
Add, edit, and manage form fields at runtime using dialog components.
|
|
1050
|
+
|
|
1051
|
+
**HazoAddFieldDialog:**
|
|
1052
|
+
|
|
1053
|
+
Add new fields or groups to your form dynamically:
|
|
1054
|
+
|
|
1055
|
+
```typescript
|
|
1056
|
+
import { HazoAddFieldDialog, type NewFieldDefinition } from 'hazo_collab_forms';
|
|
1057
|
+
import { useState } from 'react';
|
|
1058
|
+
|
|
1059
|
+
export default function DynamicForm() {
|
|
1060
|
+
const [isOpen, setIsOpen] = useState(false);
|
|
1061
|
+
|
|
1062
|
+
const handleAddField = (field: NewFieldDefinition) => {
|
|
1063
|
+
console.log('New field:', field);
|
|
1064
|
+
// Add field to your form sections
|
|
1065
|
+
};
|
|
1066
|
+
|
|
1067
|
+
return (
|
|
1068
|
+
<>
|
|
1069
|
+
<button onClick={() => setIsOpen(true)}>Add Field</button>
|
|
1070
|
+
<HazoAddFieldDialog
|
|
1071
|
+
open={isOpen}
|
|
1072
|
+
on_open_change={setIsOpen}
|
|
1073
|
+
on_add={handleAddField}
|
|
1074
|
+
parent_type="group" // 'section' | 'group'
|
|
1075
|
+
parent_id="personal_info"
|
|
1076
|
+
/>
|
|
1077
|
+
</>
|
|
1078
|
+
);
|
|
1079
|
+
}
|
|
1080
|
+
```
|
|
1081
|
+
|
|
1082
|
+
**HazoEditFieldDialog:**
|
|
1083
|
+
|
|
1084
|
+
Edit existing field configurations:
|
|
1085
|
+
|
|
1086
|
+
```typescript
|
|
1087
|
+
import { HazoEditFieldDialog } from 'hazo_collab_forms';
|
|
1088
|
+
|
|
1089
|
+
<HazoEditFieldDialog
|
|
1090
|
+
open={isEditOpen}
|
|
1091
|
+
on_open_change={setIsEditOpen}
|
|
1092
|
+
field={selectedField}
|
|
1093
|
+
on_save={(updated) => updateField(updated)}
|
|
1094
|
+
/>
|
|
1095
|
+
```
|
|
1096
|
+
|
|
1097
|
+
**HazoFieldSelectorDialog:**
|
|
1098
|
+
|
|
1099
|
+
Search and select fields from a template:
|
|
1100
|
+
|
|
1101
|
+
```typescript
|
|
1102
|
+
import { HazoFieldSelectorDialog } from 'hazo_collab_forms';
|
|
1103
|
+
|
|
1104
|
+
<HazoFieldSelectorDialog
|
|
1105
|
+
open={isSelectorOpen}
|
|
1106
|
+
on_open_change={setIsSelectorOpen}
|
|
1107
|
+
template={formTemplate}
|
|
1108
|
+
on_select={(selection) => {
|
|
1109
|
+
// Handle selected fields
|
|
1110
|
+
console.log('Selected:', selection);
|
|
1111
|
+
}}
|
|
1112
|
+
/>
|
|
1113
|
+
```
|
|
1114
|
+
|
|
1115
|
+
### Shared Utilities
|
|
1116
|
+
|
|
1117
|
+
The package exports utility functions for working with form structures:
|
|
1118
|
+
|
|
1119
|
+
```typescript
|
|
1120
|
+
import {
|
|
1121
|
+
// Field traversal
|
|
1122
|
+
traverse_fields,
|
|
1123
|
+
traverse_sections,
|
|
1124
|
+
collect_field_ids,
|
|
1125
|
+
collect_leaf_field_ids,
|
|
1126
|
+
should_render_field,
|
|
1127
|
+
is_field_empty,
|
|
1128
|
+
get_field_value,
|
|
1129
|
+
|
|
1130
|
+
// Dependency checking
|
|
1131
|
+
parse_dependency,
|
|
1132
|
+
check_dependency,
|
|
1133
|
+
|
|
1134
|
+
// Field metadata normalization
|
|
1135
|
+
normalize_field_metadata,
|
|
1136
|
+
normalize_field_metadata_input,
|
|
1137
|
+
} from 'hazo_collab_forms';
|
|
1138
|
+
|
|
1139
|
+
// Traverse all fields in sections
|
|
1140
|
+
traverse_sections(sections, (field, path) => {
|
|
1141
|
+
console.log(`Field: ${field.id} at path: ${path.join('/')}`);
|
|
1142
|
+
});
|
|
1143
|
+
|
|
1144
|
+
// Check if field should render based on dependencies
|
|
1145
|
+
const shouldRender = should_render_field(field, formData, {
|
|
1146
|
+
check_dependencies: true,
|
|
1147
|
+
show_empty_fields: false,
|
|
1148
|
+
});
|
|
1149
|
+
|
|
1150
|
+
// Parse and check field dependencies
|
|
1151
|
+
const dependency = parse_dependency(field.depends_on);
|
|
1152
|
+
const isActive = check_dependency(dependency, formData);
|
|
1153
|
+
```
|
|
1154
|
+
|
|
905
1155
|
## Components
|
|
906
1156
|
|
|
1157
|
+
### Form Field Components
|
|
1158
|
+
|
|
907
1159
|
| Component | Description | Required shadcn |
|
|
908
1160
|
|-----------|-------------|-----------------|
|
|
909
1161
|
| `HazoCollabFormInputbox` | Text input with validation | button, label, dialog, tooltip |
|
|
@@ -912,13 +1164,34 @@ const fields: FieldConfig[] = [
|
|
|
912
1164
|
| `HazoCollabFormCombo` | Dropdown select with search | + popover, command |
|
|
913
1165
|
| `HazoCollabFormRadio` | Radio button group | button, label, dialog, tooltip |
|
|
914
1166
|
| `HazoCollabFormDate` | Date or date-range picker | + calendar |
|
|
1167
|
+
| `HazoCollabFormDoc` | Document/file-only field | button, label, dialog, tooltip, accordion |
|
|
915
1168
|
| `HazoCollabFormGroup` | Field grouping container | button, label, dialog, tooltip |
|
|
916
1169
|
| `HazoCollabFormDataTable` | Editable data table with aggregations | button, label, dialog, tooltip |
|
|
1170
|
+
|
|
1171
|
+
### Form Container Components
|
|
1172
|
+
|
|
1173
|
+
| Component | Description | Required shadcn |
|
|
1174
|
+
|-----------|-------------|-----------------|
|
|
917
1175
|
| `HazoCollabFormSet` | Complete form with field arrays | all components |
|
|
918
1176
|
| `HazoCollabFormSummary` | Read-only summary view | button, label, popover |
|
|
1177
|
+
| `HazoCollabFormView` | Unified multi-mode view (Edit/Summary/Print/Approval) | all components |
|
|
1178
|
+
|
|
1179
|
+
### Builder & Dialog Components
|
|
1180
|
+
|
|
1181
|
+
| Component | Description | Required shadcn |
|
|
1182
|
+
|-----------|-------------|-----------------|
|
|
919
1183
|
| `HazoTemplateGenerator` | Visual form builder | button, label, dialog, tooltip, tabs, resizable |
|
|
920
|
-
|
|
|
921
|
-
|
|
|
1184
|
+
| `HazoAddFieldDialog` | Add new fields dynamically | dialog, popover, command |
|
|
1185
|
+
| `HazoAddGroupDialog` | Add new groups dynamically | dialog |
|
|
1186
|
+
| `HazoEditFieldDialog` | Edit field configurations | dialog, popover, command |
|
|
1187
|
+
| `HazoFieldSelectorDialog` | Search and select fields | dialog, command |
|
|
1188
|
+
|
|
1189
|
+
### Optional Features
|
|
1190
|
+
|
|
1191
|
+
| Feature | Required shadcn |
|
|
1192
|
+
|---------|-----------------|
|
|
1193
|
+
| File Upload (`accept_files` prop) | + **accordion** (required) |
|
|
1194
|
+
| Field Tooltips (`tooltip` prop) | + **hover-card** (optional) |
|
|
922
1195
|
|
|
923
1196
|
## Import Paths
|
|
924
1197
|
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Field type combobox with icons for type selection
|
|
3
|
+
*/
|
|
4
|
+
import React from 'react';
|
|
5
|
+
import type { AddFieldType, AddFieldTypeMeta, ComboboxComponents } from '../types.js';
|
|
6
|
+
export interface FieldTypeComboboxProps {
|
|
7
|
+
/**
|
|
8
|
+
* Currently selected field type
|
|
9
|
+
*/
|
|
10
|
+
value: AddFieldType;
|
|
11
|
+
/**
|
|
12
|
+
* Available field type options
|
|
13
|
+
*/
|
|
14
|
+
available_types: AddFieldTypeMeta[];
|
|
15
|
+
/**
|
|
16
|
+
* Callback when type changes
|
|
17
|
+
*/
|
|
18
|
+
on_change: (type: AddFieldType) => void;
|
|
19
|
+
/**
|
|
20
|
+
* Unique ID for this combobox (for multiple comboboxes in list)
|
|
21
|
+
*/
|
|
22
|
+
id?: string;
|
|
23
|
+
/**
|
|
24
|
+
* Optional shadcn Popover and Command components
|
|
25
|
+
* If provided, uses these instead of trying dynamic import
|
|
26
|
+
*/
|
|
27
|
+
combobox_components?: ComboboxComponents;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* FieldTypeCombobox - Combobox with icons for selecting field type
|
|
31
|
+
* Uses shadcn Popover/Command components from props, falls back to native select
|
|
32
|
+
*/
|
|
33
|
+
export declare function FieldTypeCombobox({ value, available_types, on_change, id, combobox_components, }: FieldTypeComboboxProps): React.ReactElement;
|
|
34
|
+
//# sourceMappingURL=field_type_combobox.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"field_type_combobox.d.ts","sourceRoot":"","sources":["../../../../src/components/hazo_add_field_dialog/components/field_type_combobox.tsx"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,KAAgC,MAAM,OAAO,CAAC;AAcrD,OAAO,KAAK,EAAE,YAAY,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAgBtF,MAAM,WAAW,sBAAsB;IACrC;;OAEG;IACH,KAAK,EAAE,YAAY,CAAC;IACpB;;OAEG;IACH,eAAe,EAAE,gBAAgB,EAAE,CAAC;IACpC;;OAEG;IACH,SAAS,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,IAAI,CAAC;IACxC;;OAEG;IACH,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ;;;OAGG;IACH,mBAAmB,CAAC,EAAE,kBAAkB,CAAC;CAC1C;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,EAChC,KAAK,EACL,eAAe,EACf,SAAS,EACT,EAAE,EACF,mBAAmB,GACpB,EAAE,sBAAsB,GAAG,KAAK,CAAC,YAAY,CA0G7C"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Field type combobox with icons for type selection
|
|
3
|
+
*/
|
|
4
|
+
'use client';
|
|
5
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
6
|
+
import { useState, useCallback } from 'react';
|
|
7
|
+
import { IoTextOutline, IoDocumentTextOutline, IoCheckboxOutline, IoRadioButtonOnOutline, IoChevronDownCircleOutline, IoCalendarOutline, IoCloudUploadOutline, IoLayersOutline, IoChevronDown, IoCheckmark, } from 'react-icons/io5';
|
|
8
|
+
import { cn } from '../../../utils/cn.js';
|
|
9
|
+
/**
|
|
10
|
+
* Icon mapping for field types
|
|
11
|
+
*/
|
|
12
|
+
const FIELD_TYPE_ICONS = {
|
|
13
|
+
IoTextOutline,
|
|
14
|
+
IoDocumentTextOutline,
|
|
15
|
+
IoCheckboxOutline,
|
|
16
|
+
IoRadioButtonOnOutline,
|
|
17
|
+
IoChevronDownCircleOutline,
|
|
18
|
+
IoCalendarOutline,
|
|
19
|
+
IoCloudUploadOutline,
|
|
20
|
+
IoLayersOutline,
|
|
21
|
+
};
|
|
22
|
+
/**
|
|
23
|
+
* FieldTypeCombobox - Combobox with icons for selecting field type
|
|
24
|
+
* Uses shadcn Popover/Command components from props, falls back to native select
|
|
25
|
+
*/
|
|
26
|
+
export function FieldTypeCombobox({ value, available_types, on_change, id, combobox_components, }) {
|
|
27
|
+
const [open, set_open] = useState(false);
|
|
28
|
+
// Get icon component for a field type
|
|
29
|
+
const get_icon = (icon_name) => {
|
|
30
|
+
return FIELD_TYPE_ICONS[icon_name] || null;
|
|
31
|
+
};
|
|
32
|
+
// Get selected type metadata
|
|
33
|
+
const selected_meta = available_types.find(t => t.type === value);
|
|
34
|
+
const SelectedIcon = selected_meta ? get_icon(selected_meta.icon) : null;
|
|
35
|
+
// Handle selection
|
|
36
|
+
const handle_select = useCallback((type) => {
|
|
37
|
+
on_change(type);
|
|
38
|
+
set_open(false);
|
|
39
|
+
}, [on_change]);
|
|
40
|
+
// Fallback to native select if shadcn components not available
|
|
41
|
+
if (!combobox_components) {
|
|
42
|
+
return (_jsx("select", { value: value, onChange: e => on_change(e.target.value), className: "cls_field_type_select h-8 rounded-md border border-input bg-background px-2 py-1 text-xs ring-offset-background focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2", "aria-label": "Select field type", children: available_types.map(meta => (_jsx("option", { value: meta.type, children: meta.label }, meta.type))) }));
|
|
43
|
+
}
|
|
44
|
+
const { Popover, PopoverTrigger, PopoverContent, Command, CommandList, CommandEmpty, CommandGroup, CommandItem, } = combobox_components;
|
|
45
|
+
return (_jsxs(Popover, { open: open, onOpenChange: set_open, modal: true, children: [_jsx(PopoverTrigger, { asChild: true, children: _jsxs("button", { type: "button", role: "combobox", "aria-expanded": open, "aria-label": "Select field type", className: cn('cls_field_type_trigger inline-flex items-center justify-between gap-1 h-8 px-2 py-1 rounded-md border border-input bg-background text-xs', 'hover:bg-accent hover:text-accent-foreground', 'focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2', 'min-w-[100px]'), children: [_jsxs("span", { className: "flex items-center gap-1.5 truncate", children: [SelectedIcon && _jsx(SelectedIcon, { className: "h-3.5 w-3.5 flex-shrink-0" }), _jsx("span", { className: "truncate", children: selected_meta?.label || 'Select' })] }), _jsx(IoChevronDown, { className: "h-3 w-3 opacity-50 flex-shrink-0" })] }) }), _jsx(PopoverContent, { className: "w-[180px] p-0", align: "start", onOpenAutoFocus: (e) => e.preventDefault(), onCloseAutoFocus: (e) => e.preventDefault(), children: _jsx(Command, { children: _jsxs(CommandList, { children: [_jsx(CommandEmpty, { children: "No field type found." }), _jsx(CommandGroup, { children: available_types.map(meta => {
|
|
46
|
+
const IconComponent = get_icon(meta.icon);
|
|
47
|
+
const is_selected = value === meta.type;
|
|
48
|
+
return (_jsxs(CommandItem, { value: meta.type, onSelect: () => handle_select(meta.type), className: "flex items-center gap-2 cursor-pointer", children: [IconComponent && (_jsx(IconComponent, { className: "h-4 w-4 flex-shrink-0" })), _jsx("span", { className: "flex-1 truncate", children: meta.label }), is_selected && (_jsx(IoCheckmark, { className: "h-4 w-4 flex-shrink-0 text-primary" }))] }, meta.type));
|
|
49
|
+
}) })] }) }) })] }));
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=field_type_combobox.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"field_type_combobox.js","sourceRoot":"","sources":["../../../../src/components/hazo_add_field_dialog/components/field_type_combobox.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* HazoAddFieldDialog sub-components
|
|
3
|
+
*/
|
|
4
|
+
export { QuestionInput, type QuestionInputProps } from './question_input.js';
|
|
5
|
+
export { FieldTypeCombobox, type FieldTypeComboboxProps } from './field_type_combobox.js';
|
|
6
|
+
export { PendingFieldItem, type PendingFieldItemProps } from './pending_field_item.js';
|
|
7
|
+
export { PendingFieldList, type PendingFieldListProps } from './pending_field_list.js';
|
|
8
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/hazo_add_field_dialog/components/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,aAAa,EAAE,KAAK,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAC7E,OAAO,EAAE,iBAAiB,EAAE,KAAK,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAC1F,OAAO,EAAE,gBAAgB,EAAE,KAAK,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AACvF,OAAO,EAAE,gBAAgB,EAAE,KAAK,qBAAqB,EAAE,MAAM,yBAAyB,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* HazoAddFieldDialog sub-components
|
|
3
|
+
*/
|
|
4
|
+
export { QuestionInput } from './question_input.js';
|
|
5
|
+
export { FieldTypeCombobox } from './field_type_combobox.js';
|
|
6
|
+
export { PendingFieldItem } from './pending_field_item.js';
|
|
7
|
+
export { PendingFieldList } from './pending_field_list.js';
|
|
8
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/hazo_add_field_dialog/components/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,aAAa,EAA2B,MAAM,qBAAqB,CAAC;AAC7E,OAAO,EAAE,iBAAiB,EAA+B,MAAM,0BAA0B,CAAC;AAC1F,OAAO,EAAE,gBAAgB,EAA8B,MAAM,yBAAyB,CAAC;AACvF,OAAO,EAAE,gBAAgB,EAA8B,MAAM,yBAAyB,CAAC"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Sortable pending field item with accordion for options
|
|
3
|
+
*/
|
|
4
|
+
import React from 'react';
|
|
5
|
+
import type { PendingFieldEntry, AddFieldType, AddFieldTypeMeta, FieldOption, DateConfig, CheckboxConfig, ComboboxComponents } from '../types.js';
|
|
6
|
+
export interface PendingFieldItemProps {
|
|
7
|
+
/**
|
|
8
|
+
* The pending field entry
|
|
9
|
+
*/
|
|
10
|
+
item: PendingFieldEntry;
|
|
11
|
+
/**
|
|
12
|
+
* Available field types for the combobox
|
|
13
|
+
*/
|
|
14
|
+
available_types: AddFieldTypeMeta[];
|
|
15
|
+
/**
|
|
16
|
+
* Callback when type changes
|
|
17
|
+
*/
|
|
18
|
+
on_type_change: (id: string, type: AddFieldType) => void;
|
|
19
|
+
/**
|
|
20
|
+
* Callback when item is removed
|
|
21
|
+
*/
|
|
22
|
+
on_remove: (id: string) => void;
|
|
23
|
+
/**
|
|
24
|
+
* Callback when accordion is toggled
|
|
25
|
+
*/
|
|
26
|
+
on_toggle_expand: (id: string) => void;
|
|
27
|
+
/**
|
|
28
|
+
* Callback when required changes
|
|
29
|
+
*/
|
|
30
|
+
on_required_change: (id: string, value: boolean) => void;
|
|
31
|
+
/**
|
|
32
|
+
* Callback when accept_files changes
|
|
33
|
+
*/
|
|
34
|
+
on_accept_files_change: (id: string, value: boolean) => void;
|
|
35
|
+
/**
|
|
36
|
+
* Callback when options change (for Radio/Combo)
|
|
37
|
+
*/
|
|
38
|
+
on_options_change: (id: string, options: FieldOption[]) => void;
|
|
39
|
+
/**
|
|
40
|
+
* Callback when date config changes
|
|
41
|
+
*/
|
|
42
|
+
on_date_config_change: (id: string, config: DateConfig) => void;
|
|
43
|
+
/**
|
|
44
|
+
* Callback when checkbox config changes
|
|
45
|
+
*/
|
|
46
|
+
on_checkbox_config_change: (id: string, config: CheckboxConfig) => void;
|
|
47
|
+
/**
|
|
48
|
+
* Optional shadcn combobox components for field type selector
|
|
49
|
+
*/
|
|
50
|
+
combobox_components?: ComboboxComponents;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* PendingFieldItem - Sortable item with drag handle, type selector, and expandable options
|
|
54
|
+
*/
|
|
55
|
+
export declare function PendingFieldItem({ item, available_types, on_type_change, on_remove, on_toggle_expand, on_required_change, on_accept_files_change, on_options_change, on_date_config_change, on_checkbox_config_change, combobox_components, }: PendingFieldItemProps): React.ReactElement;
|
|
56
|
+
//# sourceMappingURL=pending_field_item.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pending_field_item.d.ts","sourceRoot":"","sources":["../../../../src/components/hazo_add_field_dialog/components/pending_field_item.tsx"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,KAAkB,MAAM,OAAO,CAAC;AASvC,OAAO,KAAK,EACV,iBAAiB,EACjB,YAAY,EACZ,gBAAgB,EAChB,WAAW,EACX,UAAU,EACV,cAAc,EACd,kBAAkB,EACnB,MAAM,aAAa,CAAC;AAErB,MAAM,WAAW,qBAAqB;IACpC;;OAEG;IACH,IAAI,EAAE,iBAAiB,CAAC;IACxB;;OAEG;IACH,eAAe,EAAE,gBAAgB,EAAE,CAAC;IACpC;;OAEG;IACH,cAAc,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,KAAK,IAAI,CAAC;IACzD;;OAEG;IACH,SAAS,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC;;OAEG;IACH,gBAAgB,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC;;OAEG;IACH,kBAAkB,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IACzD;;OAEG;IACH,sBAAsB,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IAC7D;;OAEG;IACH,iBAAiB,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,KAAK,IAAI,CAAC;IAChE;;OAEG;IACH,qBAAqB,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,KAAK,IAAI,CAAC;IAChE;;OAEG;IACH,yBAAyB,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,KAAK,IAAI,CAAC;IACxE;;OAEG;IACH,mBAAmB,CAAC,EAAE,kBAAkB,CAAC;CAC1C;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,EAC/B,IAAI,EACJ,eAAe,EACf,cAAc,EACd,SAAS,EACT,gBAAgB,EAChB,kBAAkB,EAClB,sBAAsB,EACtB,iBAAiB,EACjB,qBAAqB,EACrB,yBAAyB,EACzB,mBAAmB,GACpB,EAAE,qBAAqB,GAAG,KAAK,CAAC,YAAY,CA0M5C"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Sortable pending field item with accordion for options
|
|
3
|
+
*/
|
|
4
|
+
'use client';
|
|
5
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
6
|
+
import { useMemo } from 'react';
|
|
7
|
+
import { useSortable } from '@dnd-kit/sortable';
|
|
8
|
+
import { CSS } from '@dnd-kit/utilities';
|
|
9
|
+
import { HiX, HiChevronDown, HiChevronRight } from 'react-icons/hi';
|
|
10
|
+
import { RxDragHandleDots2 } from 'react-icons/rx';
|
|
11
|
+
import { cn } from '../../../utils/cn.js';
|
|
12
|
+
import { FieldTypeCombobox } from './field_type_combobox.js';
|
|
13
|
+
import { OptionsListEditor } from '../options/options_list_editor.js';
|
|
14
|
+
import { DateOptions } from '../options/date_options.js';
|
|
15
|
+
/**
|
|
16
|
+
* PendingFieldItem - Sortable item with drag handle, type selector, and expandable options
|
|
17
|
+
*/
|
|
18
|
+
export function PendingFieldItem({ item, available_types, on_type_change, on_remove, on_toggle_expand, on_required_change, on_accept_files_change, on_options_change, on_date_config_change, on_checkbox_config_change, combobox_components, }) {
|
|
19
|
+
const { attributes, listeners, setNodeRef, transform, transition, isDragging, } = useSortable({ id: item.id });
|
|
20
|
+
const style = {
|
|
21
|
+
transform: CSS.Transform.toString(transform),
|
|
22
|
+
transition,
|
|
23
|
+
opacity: isDragging ? 0.5 : 1,
|
|
24
|
+
};
|
|
25
|
+
// Determine which type-specific options to show
|
|
26
|
+
const shows_options_list = useMemo(() => ['HazoCollabFormRadio', 'HazoCollabFormCombo'].includes(item.field_type), [item.field_type]);
|
|
27
|
+
const shows_date_options = item.field_type === 'HazoCollabFormDate';
|
|
28
|
+
const shows_checkbox_options = item.field_type === 'HazoCollabFormCheckbox';
|
|
29
|
+
// Document upload doesn't need "allow file attachment" since it IS the file upload
|
|
30
|
+
// Groups also don't show accept_files
|
|
31
|
+
const shows_accept_files = item.field_type !== 'HazoCollabFormDoc' && item.field_type !== 'Group';
|
|
32
|
+
// Groups don't have "required" option
|
|
33
|
+
const shows_required = item.field_type !== 'Group';
|
|
34
|
+
// Check if there are any options to show in the accordion
|
|
35
|
+
const has_options = shows_required || shows_accept_files || shows_options_list || shows_date_options || shows_checkbox_options;
|
|
36
|
+
return (_jsxs("div", { ref: setNodeRef, style: style, className: cn('cls_pending_field_item rounded-md border bg-background', isDragging ? 'border-primary shadow-lg' : 'border-border', 'hover:border-muted-foreground/50 transition-colors'), children: [_jsxs("div", { className: "flex items-center gap-2 px-3 py-2", children: [_jsx("button", { ...attributes, ...listeners, className: "cursor-grab active:cursor-grabbing p-1 hover:bg-muted rounded flex-shrink-0", "aria-label": "Drag to reorder", children: _jsx(RxDragHandleDots2, { className: "h-4 w-4 text-muted-foreground" }) }), has_options && (_jsx("button", { onClick: () => on_toggle_expand(item.id), className: "p-1 hover:bg-muted rounded flex-shrink-0", "aria-label": item.is_expanded ? 'Collapse options' : 'Expand options', children: item.is_expanded ? (_jsx(HiChevronDown, { className: "h-4 w-4 text-muted-foreground" })) : (_jsx(HiChevronRight, { className: "h-4 w-4 text-muted-foreground" })) })), _jsx("div", { className: "flex-1 min-w-0", children: _jsx("span", { className: "text-sm truncate block", children: item.label }) }), _jsx(FieldTypeCombobox, { value: item.field_type, available_types: available_types, on_change: (type) => on_type_change(item.id, type), id: item.id, combobox_components: combobox_components }), _jsx("button", { onClick: () => on_remove(item.id), className: "p-1 hover:bg-destructive/10 rounded text-muted-foreground hover:text-destructive transition-colors flex-shrink-0", "aria-label": `Remove "${item.label}"`, children: _jsx(HiX, { className: "h-4 w-4" }) })] }), item.is_expanded && has_options && (_jsxs("div", { className: "border-t px-3 py-3 space-y-3 bg-muted/30", children: [(shows_required || shows_accept_files) && (_jsxs("div", { className: "flex flex-wrap items-center gap-6", children: [shows_required && (_jsxs("div", { className: "flex items-center space-x-2", children: [_jsx("input", { id: `${item.id}-required`, type: "checkbox", checked: item.required, onChange: e => on_required_change(item.id, e.target.checked), className: "cls_pending_field_checkbox h-4 w-4 rounded border-gray-300 text-primary focus:ring-primary" }), _jsx("label", { htmlFor: `${item.id}-required`, className: "text-sm font-medium leading-none cursor-pointer", children: "Required field" })] })), shows_accept_files && (_jsxs("div", { className: "flex items-center space-x-2", children: [_jsx("input", { id: `${item.id}-accept-files`, type: "checkbox", checked: item.accept_files, onChange: e => on_accept_files_change(item.id, e.target.checked), className: "cls_pending_field_checkbox h-4 w-4 rounded border-gray-300 text-primary focus:ring-primary" }), _jsx("label", { htmlFor: `${item.id}-accept-files`, className: "text-sm font-medium leading-none cursor-pointer", children: "Allow file attachment" })] }))] })), shows_options_list && (_jsx(OptionsListEditor, { options: item.options || [{ label: 'Option 1', value: 'option_1' }], on_options_change: (options) => on_options_change(item.id, options), label: item.field_type === 'HazoCollabFormRadio' ? 'Radio Options' : 'Dropdown Options' })), shows_date_options && (_jsx(DateOptions, { config: item.date_config || { date_mode: 'single' }, on_config_change: (config) => on_date_config_change(item.id, config) })), shows_checkbox_options && (_jsxs("div", { className: "space-y-3", children: [_jsx("label", { className: "text-sm font-medium leading-none", children: "Checkbox Labels (optional)" }), _jsxs("div", { className: "grid grid-cols-2 gap-3", children: [_jsxs("div", { className: "space-y-1", children: [_jsx("label", { htmlFor: `${item.id}-checked-label`, className: "text-xs text-muted-foreground", children: "When checked" }), _jsx("input", { id: `${item.id}-checked-label`, type: "text", value: item.checkbox_config?.checked_label || '', onChange: e => on_checkbox_config_change(item.id, {
|
|
37
|
+
...item.checkbox_config,
|
|
38
|
+
checked_label: e.target.value || undefined,
|
|
39
|
+
}), placeholder: "Yes", className: "flex h-9 w-full rounded-md border border-input bg-background px-3 py-1 text-sm ring-offset-background placeholder:text-muted-foreground focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2" })] }), _jsxs("div", { className: "space-y-1", children: [_jsx("label", { htmlFor: `${item.id}-unchecked-label`, className: "text-xs text-muted-foreground", children: "When unchecked" }), _jsx("input", { id: `${item.id}-unchecked-label`, type: "text", value: item.checkbox_config?.unchecked_label || '', onChange: e => on_checkbox_config_change(item.id, {
|
|
40
|
+
...item.checkbox_config,
|
|
41
|
+
unchecked_label: e.target.value || undefined,
|
|
42
|
+
}), placeholder: "No", className: "flex h-9 w-full rounded-md border border-input bg-background px-3 py-1 text-sm ring-offset-background placeholder:text-muted-foreground focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2" })] })] })] }))] }))] }));
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=pending_field_item.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pending_field_item.js","sourceRoot":"","sources":["../../../../src/components/hazo_add_field_dialog/components/pending_field_item.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Sortable pending field list with drag and drop reordering
|
|
3
|
+
*/
|
|
4
|
+
import React from 'react';
|
|
5
|
+
import type { PendingFieldEntry, AddFieldType, AddFieldTypeMeta, FieldOption, DateConfig, CheckboxConfig, ComboboxComponents } from '../types.js';
|
|
6
|
+
export interface PendingFieldListProps {
|
|
7
|
+
/**
|
|
8
|
+
* List of pending field entries
|
|
9
|
+
*/
|
|
10
|
+
items: PendingFieldEntry[];
|
|
11
|
+
/**
|
|
12
|
+
* Available field types for the combobox
|
|
13
|
+
*/
|
|
14
|
+
available_types: AddFieldTypeMeta[];
|
|
15
|
+
/**
|
|
16
|
+
* Callback when items are reordered
|
|
17
|
+
*/
|
|
18
|
+
on_reorder: (items: PendingFieldEntry[]) => void;
|
|
19
|
+
/**
|
|
20
|
+
* Callback when type changes
|
|
21
|
+
*/
|
|
22
|
+
on_type_change: (id: string, type: AddFieldType) => void;
|
|
23
|
+
/**
|
|
24
|
+
* Callback when an item is removed
|
|
25
|
+
*/
|
|
26
|
+
on_remove: (id: string) => void;
|
|
27
|
+
/**
|
|
28
|
+
* Callback when accordion is toggled
|
|
29
|
+
*/
|
|
30
|
+
on_toggle_expand: (id: string) => void;
|
|
31
|
+
/**
|
|
32
|
+
* Callback when required changes
|
|
33
|
+
*/
|
|
34
|
+
on_required_change: (id: string, value: boolean) => void;
|
|
35
|
+
/**
|
|
36
|
+
* Callback when accept_files changes
|
|
37
|
+
*/
|
|
38
|
+
on_accept_files_change: (id: string, value: boolean) => void;
|
|
39
|
+
/**
|
|
40
|
+
* Callback when options change (for Radio/Combo)
|
|
41
|
+
*/
|
|
42
|
+
on_options_change: (id: string, options: FieldOption[]) => void;
|
|
43
|
+
/**
|
|
44
|
+
* Callback when date config changes
|
|
45
|
+
*/
|
|
46
|
+
on_date_config_change: (id: string, config: DateConfig) => void;
|
|
47
|
+
/**
|
|
48
|
+
* Callback when checkbox config changes
|
|
49
|
+
*/
|
|
50
|
+
on_checkbox_config_change: (id: string, config: CheckboxConfig) => void;
|
|
51
|
+
/**
|
|
52
|
+
* Optional shadcn combobox components for field type selector
|
|
53
|
+
*/
|
|
54
|
+
combobox_components?: ComboboxComponents;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* PendingFieldList - DndContext wrapper for sortable pending fields
|
|
58
|
+
*/
|
|
59
|
+
export declare function PendingFieldList({ items, available_types, on_reorder, on_type_change, on_remove, on_toggle_expand, on_required_change, on_accept_files_change, on_options_change, on_date_config_change, on_checkbox_config_change, combobox_components, }: PendingFieldListProps): React.ReactElement;
|
|
60
|
+
//# sourceMappingURL=pending_field_list.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pending_field_list.d.ts","sourceRoot":"","sources":["../../../../src/components/hazo_add_field_dialog/components/pending_field_list.tsx"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,KAAK,MAAM,OAAO,CAAC;AAiB1B,OAAO,KAAK,EACV,iBAAiB,EACjB,YAAY,EACZ,gBAAgB,EAChB,WAAW,EACX,UAAU,EACV,cAAc,EACd,kBAAkB,EACnB,MAAM,aAAa,CAAC;AAErB,MAAM,WAAW,qBAAqB;IACpC;;OAEG;IACH,KAAK,EAAE,iBAAiB,EAAE,CAAC;IAC3B;;OAEG;IACH,eAAe,EAAE,gBAAgB,EAAE,CAAC;IACpC;;OAEG;IACH,UAAU,EAAE,CAAC,KAAK,EAAE,iBAAiB,EAAE,KAAK,IAAI,CAAC;IACjD;;OAEG;IACH,cAAc,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,KAAK,IAAI,CAAC;IACzD;;OAEG;IACH,SAAS,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC;;OAEG;IACH,gBAAgB,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC;;OAEG;IACH,kBAAkB,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IACzD;;OAEG;IACH,sBAAsB,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IAC7D;;OAEG;IACH,iBAAiB,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,KAAK,IAAI,CAAC;IAChE;;OAEG;IACH,qBAAqB,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,KAAK,IAAI,CAAC;IAChE;;OAEG;IACH,yBAAyB,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,KAAK,IAAI,CAAC;IACxE;;OAEG;IACH,mBAAmB,CAAC,EAAE,kBAAkB,CAAC;CAC1C;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,EAC/B,KAAK,EACL,eAAe,EACf,UAAU,EACV,cAAc,EACd,SAAS,EACT,gBAAgB,EAChB,kBAAkB,EAClB,sBAAsB,EACtB,iBAAiB,EACjB,qBAAqB,EACrB,yBAAyB,EACzB,mBAAmB,GACpB,EAAE,qBAAqB,GAAG,KAAK,CAAC,YAAY,CAkD5C"}
|