@fieldia/designer 0.26.0 → 0.27.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 +75 -0
- package/package.json +4 -4
- package/src/lib/answer-picker.d.mts +22 -0
- package/src/lib/answer-picker.d.ts +22 -0
- package/src/lib/answer-picker.js +104 -0
- package/src/lib/answer-picker.js.map +1 -0
- package/src/lib/answer-picker.mjs +99 -0
- package/src/lib/answer-picker.mjs.map +1 -0
- package/src/lib/canvas-form.js +2 -1
- package/src/lib/canvas-form.js.map +1 -1
- package/src/lib/canvas-form.mjs +2 -1
- package/src/lib/canvas-form.mjs.map +1 -1
- package/src/lib/chrome.js +15 -4
- package/src/lib/chrome.js.map +1 -1
- package/src/lib/chrome.mjs +15 -4
- package/src/lib/chrome.mjs.map +1 -1
- package/src/lib/clipboard-names.d.mts +1 -1
- package/src/lib/clipboard-names.d.ts +1 -1
- package/src/lib/clipboard-names.js +25 -4
- package/src/lib/clipboard-names.js.map +1 -1
- package/src/lib/clipboard-names.mjs +25 -4
- package/src/lib/clipboard-names.mjs.map +1 -1
- package/src/lib/columns-editor.d.mts +5 -2
- package/src/lib/columns-editor.d.ts +5 -2
- package/src/lib/columns-editor.js +144 -3
- package/src/lib/columns-editor.js.map +1 -1
- package/src/lib/columns-editor.mjs +144 -3
- package/src/lib/columns-editor.mjs.map +1 -1
- package/src/lib/condition-editor.d.mts +5 -1
- package/src/lib/condition-editor.d.ts +5 -1
- package/src/lib/condition-editor.js +5 -2
- package/src/lib/condition-editor.js.map +1 -1
- package/src/lib/condition-editor.mjs +5 -2
- package/src/lib/condition-editor.mjs.map +1 -1
- package/src/lib/conditions.d.mts +6 -2
- package/src/lib/conditions.d.ts +6 -2
- package/src/lib/conditions.js +9 -3
- package/src/lib/conditions.js.map +1 -1
- package/src/lib/conditions.mjs +9 -3
- package/src/lib/conditions.mjs.map +1 -1
- package/src/lib/designer.d.mts +43 -2
- package/src/lib/designer.d.ts +43 -2
- package/src/lib/designer.js +111 -14
- package/src/lib/designer.js.map +1 -1
- package/src/lib/designer.mjs +113 -16
- package/src/lib/designer.mjs.map +1 -1
- package/src/lib/endings-commands.d.mts +27 -0
- package/src/lib/endings-commands.d.ts +27 -0
- package/src/lib/endings-commands.js +58 -0
- package/src/lib/endings-commands.js.map +1 -0
- package/src/lib/endings-commands.mjs +55 -0
- package/src/lib/endings-commands.mjs.map +1 -0
- package/src/lib/endings-editor.d.mts +14 -0
- package/src/lib/endings-editor.d.ts +14 -0
- package/src/lib/endings-editor.js +131 -0
- package/src/lib/endings-editor.js.map +1 -0
- package/src/lib/endings-editor.mjs +128 -0
- package/src/lib/endings-editor.mjs.map +1 -0
- package/src/lib/head-parts.js +1 -1
- package/src/lib/head-parts.js.map +1 -1
- package/src/lib/head-parts.mjs +2 -2
- package/src/lib/head-parts.mjs.map +1 -1
- package/src/lib/json-checks.d.mts +2 -1
- package/src/lib/json-checks.d.ts +2 -1
- package/src/lib/json-checks.js +3 -3
- package/src/lib/json-checks.js.map +1 -1
- package/src/lib/json-checks.mjs +3 -3
- package/src/lib/json-checks.mjs.map +1 -1
- package/src/lib/json-view.js +1 -1
- package/src/lib/json-view.js.map +1 -1
- package/src/lib/json-view.mjs +1 -1
- package/src/lib/json-view.mjs.map +1 -1
- package/src/lib/kind-commands.d.mts +4 -0
- package/src/lib/kind-commands.d.ts +4 -0
- package/src/lib/kind-commands.js +19 -0
- package/src/lib/kind-commands.js.map +1 -1
- package/src/lib/kind-commands.mjs +19 -0
- package/src/lib/kind-commands.mjs.map +1 -1
- package/src/lib/kind-settings-structures.js +50 -3
- package/src/lib/kind-settings-structures.js.map +1 -1
- package/src/lib/kind-settings-structures.mjs +50 -3
- package/src/lib/kind-settings-structures.mjs.map +1 -1
- package/src/lib/kind-settings.js +48 -0
- package/src/lib/kind-settings.js.map +1 -1
- package/src/lib/kind-settings.mjs +48 -0
- package/src/lib/kind-settings.mjs.map +1 -1
- package/src/lib/kinds.d.mts +3 -2
- package/src/lib/kinds.d.ts +3 -2
- package/src/lib/kinds.js +3 -1
- package/src/lib/kinds.js.map +1 -1
- package/src/lib/kinds.mjs +3 -1
- package/src/lib/kinds.mjs.map +1 -1
- package/src/lib/limits-settings.d.mts +14 -0
- package/src/lib/limits-settings.d.ts +14 -0
- package/src/lib/limits-settings.js +66 -0
- package/src/lib/limits-settings.js.map +1 -0
- package/src/lib/limits-settings.mjs +63 -0
- package/src/lib/limits-settings.mjs.map +1 -0
- package/src/lib/list-commands.d.mts +21 -3
- package/src/lib/list-commands.d.ts +21 -3
- package/src/lib/list-commands.js +61 -9
- package/src/lib/list-commands.js.map +1 -1
- package/src/lib/list-commands.mjs +60 -8
- package/src/lib/list-commands.mjs.map +1 -1
- package/src/lib/list-properties.js +51 -4
- package/src/lib/list-properties.js.map +1 -1
- package/src/lib/list-properties.mjs +53 -6
- package/src/lib/list-properties.mjs.map +1 -1
- package/src/lib/list-rows-settings.js +1 -1
- package/src/lib/list-rows-settings.js.map +1 -1
- package/src/lib/list-rows-settings.mjs +1 -1
- package/src/lib/list-rows-settings.mjs.map +1 -1
- package/src/lib/list-source.d.mts +2 -2
- package/src/lib/list-source.d.ts +2 -2
- package/src/lib/list-source.js +55 -9
- package/src/lib/list-source.js.map +1 -1
- package/src/lib/list-source.mjs +55 -9
- package/src/lib/list-source.mjs.map +1 -1
- package/src/lib/locales/ar/changes.js +2 -0
- package/src/lib/locales/ar/changes.js.map +1 -1
- package/src/lib/locales/ar/changes.mjs +2 -0
- package/src/lib/locales/ar/changes.mjs.map +1 -1
- package/src/lib/locales/ar/checks.js +1 -0
- package/src/lib/locales/ar/checks.js.map +1 -1
- package/src/lib/locales/ar/checks.mjs +1 -0
- package/src/lib/locales/ar/checks.mjs.map +1 -1
- package/src/lib/locales/ar/endings.d.mts +3 -0
- package/src/lib/locales/ar/endings.d.ts +3 -0
- package/src/lib/locales/ar/endings.js +40 -0
- package/src/lib/locales/ar/endings.js.map +1 -0
- package/src/lib/locales/ar/endings.mjs +37 -0
- package/src/lib/locales/ar/endings.mjs.map +1 -0
- package/src/lib/locales/ar/index.js +2 -1
- package/src/lib/locales/ar/index.js.map +1 -1
- package/src/lib/locales/ar/index.mjs +2 -1
- package/src/lib/locales/ar/index.mjs.map +1 -1
- package/src/lib/locales/ar/list.js +9 -1
- package/src/lib/locales/ar/list.js.map +1 -1
- package/src/lib/locales/ar/list.mjs +9 -1
- package/src/lib/locales/ar/list.mjs.map +1 -1
- package/src/lib/locales/ar/options.js +4 -0
- package/src/lib/locales/ar/options.js.map +1 -1
- package/src/lib/locales/ar/options.mjs +4 -0
- package/src/lib/locales/ar/options.mjs.map +1 -1
- package/src/lib/locales/ar/panel.js +20 -0
- package/src/lib/locales/ar/panel.js.map +1 -1
- package/src/lib/locales/ar/panel.mjs +20 -0
- package/src/lib/locales/ar/panel.mjs.map +1 -1
- package/src/lib/locales/ar/questions.js +24 -1
- package/src/lib/locales/ar/questions.js.map +1 -1
- package/src/lib/locales/ar/questions.mjs +24 -1
- package/src/lib/locales/ar/questions.mjs.map +1 -1
- package/src/lib/locales/ar/refusals.js +15 -2
- package/src/lib/locales/ar/refusals.js.map +1 -1
- package/src/lib/locales/ar/refusals.mjs +15 -2
- package/src/lib/locales/ar/refusals.mjs.map +1 -1
- package/src/lib/locales/ar/rules-ui.js +21 -1
- package/src/lib/locales/ar/rules-ui.js.map +1 -1
- package/src/lib/locales/ar/rules-ui.mjs +21 -1
- package/src/lib/locales/ar/rules-ui.mjs.map +1 -1
- package/src/lib/locales/ar/rules.js +4 -0
- package/src/lib/locales/ar/rules.js.map +1 -1
- package/src/lib/locales/ar/rules.mjs +4 -0
- package/src/lib/locales/ar/rules.mjs.map +1 -1
- package/src/lib/locales/en/changes.d.mts +2 -0
- package/src/lib/locales/en/changes.d.ts +2 -0
- package/src/lib/locales/en/changes.js +2 -0
- package/src/lib/locales/en/changes.js.map +1 -1
- package/src/lib/locales/en/changes.mjs +2 -0
- package/src/lib/locales/en/changes.mjs.map +1 -1
- package/src/lib/locales/en/checks.d.mts +2 -0
- package/src/lib/locales/en/checks.d.ts +2 -0
- package/src/lib/locales/en/checks.js +2 -0
- package/src/lib/locales/en/checks.js.map +1 -1
- package/src/lib/locales/en/checks.mjs +2 -0
- package/src/lib/locales/en/checks.mjs.map +1 -1
- package/src/lib/locales/en/endings.d.mts +38 -0
- package/src/lib/locales/en/endings.d.ts +38 -0
- package/src/lib/locales/en/endings.js +44 -0
- package/src/lib/locales/en/endings.js.map +1 -0
- package/src/lib/locales/en/endings.mjs +41 -0
- package/src/lib/locales/en/endings.mjs.map +1 -0
- package/src/lib/locales/en/index.d.mts +127 -1
- package/src/lib/locales/en/index.d.ts +127 -1
- package/src/lib/locales/en/index.js +2 -1
- package/src/lib/locales/en/index.js.map +1 -1
- package/src/lib/locales/en/index.mjs +2 -1
- package/src/lib/locales/en/index.mjs.map +1 -1
- package/src/lib/locales/en/list.d.mts +8 -0
- package/src/lib/locales/en/list.d.ts +8 -0
- package/src/lib/locales/en/list.js +9 -1
- package/src/lib/locales/en/list.js.map +1 -1
- package/src/lib/locales/en/list.mjs +9 -1
- package/src/lib/locales/en/list.mjs.map +1 -1
- package/src/lib/locales/en/options.d.mts +6 -0
- package/src/lib/locales/en/options.d.ts +6 -0
- package/src/lib/locales/en/options.js +6 -0
- package/src/lib/locales/en/options.js.map +1 -1
- package/src/lib/locales/en/options.mjs +6 -0
- package/src/lib/locales/en/options.mjs.map +1 -1
- package/src/lib/locales/en/panel.d.mts +13 -0
- package/src/lib/locales/en/panel.d.ts +13 -0
- package/src/lib/locales/en/panel.js +13 -0
- package/src/lib/locales/en/panel.js.map +1 -1
- package/src/lib/locales/en/panel.mjs +13 -0
- package/src/lib/locales/en/panel.mjs.map +1 -1
- package/src/lib/locales/en/questions.d.mts +25 -0
- package/src/lib/locales/en/questions.d.ts +25 -0
- package/src/lib/locales/en/questions.js +25 -1
- package/src/lib/locales/en/questions.js.map +1 -1
- package/src/lib/locales/en/questions.mjs +25 -1
- package/src/lib/locales/en/questions.mjs.map +1 -1
- package/src/lib/locales/en/refusals.d.mts +13 -0
- package/src/lib/locales/en/refusals.d.ts +13 -0
- package/src/lib/locales/en/refusals.js +15 -2
- package/src/lib/locales/en/refusals.js.map +1 -1
- package/src/lib/locales/en/refusals.mjs +15 -2
- package/src/lib/locales/en/refusals.mjs.map +1 -1
- package/src/lib/locales/en/rules-ui.d.mts +29 -1
- package/src/lib/locales/en/rules-ui.d.ts +29 -1
- package/src/lib/locales/en/rules-ui.js +23 -1
- package/src/lib/locales/en/rules-ui.js.map +1 -1
- package/src/lib/locales/en/rules-ui.mjs +23 -1
- package/src/lib/locales/en/rules-ui.mjs.map +1 -1
- package/src/lib/locales/en/rules.d.mts +3 -0
- package/src/lib/locales/en/rules.d.ts +3 -0
- package/src/lib/locales/en/rules.js +4 -0
- package/src/lib/locales/en/rules.js.map +1 -1
- package/src/lib/locales/en/rules.mjs +4 -0
- package/src/lib/locales/en/rules.mjs.map +1 -1
- package/src/lib/option-when.d.mts +32 -0
- package/src/lib/option-when.d.ts +32 -0
- package/src/lib/option-when.js +110 -0
- package/src/lib/option-when.js.map +1 -0
- package/src/lib/option-when.mjs +106 -0
- package/src/lib/option-when.mjs.map +1 -0
- package/src/lib/page-checks.d.mts +2 -1
- package/src/lib/page-checks.d.ts +2 -1
- package/src/lib/page-checks.js +14 -2
- package/src/lib/page-checks.js.map +1 -1
- package/src/lib/page-checks.mjs +15 -3
- package/src/lib/page-checks.mjs.map +1 -1
- package/src/lib/page-json.d.mts +5 -3
- package/src/lib/page-json.d.ts +5 -3
- package/src/lib/page-json.js +4 -4
- package/src/lib/page-json.js.map +1 -1
- package/src/lib/page-json.mjs +4 -4
- package/src/lib/page-json.mjs.map +1 -1
- package/src/lib/page-tree.js +3 -3
- package/src/lib/page-tree.js.map +1 -1
- package/src/lib/page-tree.mjs +4 -4
- package/src/lib/page-tree.mjs.map +1 -1
- package/src/lib/panel-block.js +3 -1
- package/src/lib/panel-block.js.map +1 -1
- package/src/lib/panel-block.mjs +3 -1
- package/src/lib/panel-block.mjs.map +1 -1
- package/src/lib/panel-field.js +4 -1
- package/src/lib/panel-field.js.map +1 -1
- package/src/lib/panel-field.mjs +4 -1
- package/src/lib/panel-field.mjs.map +1 -1
- package/src/lib/panel-page.js +16 -2
- package/src/lib/panel-page.js.map +1 -1
- package/src/lib/panel-page.mjs +16 -2
- package/src/lib/panel-page.mjs.map +1 -1
- package/src/lib/placeholder-when.js +2 -2
- package/src/lib/placeholder-when.js.map +1 -1
- package/src/lib/placeholder-when.mjs +2 -2
- package/src/lib/placeholder-when.mjs.map +1 -1
- package/src/lib/rules-answers.js +10 -4
- package/src/lib/rules-answers.js.map +1 -1
- package/src/lib/rules-answers.mjs +11 -5
- package/src/lib/rules-answers.mjs.map +1 -1
- package/src/lib/rules-checks.d.mts +2 -2
- package/src/lib/rules-checks.d.ts +2 -2
- package/src/lib/rules-checks.js +23 -3
- package/src/lib/rules-checks.js.map +1 -1
- package/src/lib/rules-checks.mjs +24 -4
- package/src/lib/rules-checks.mjs.map +1 -1
- package/src/lib/rules-commands.d.mts +5 -3
- package/src/lib/rules-commands.d.ts +5 -3
- package/src/lib/rules-commands.js +17 -17
- package/src/lib/rules-commands.js.map +1 -1
- package/src/lib/rules-commands.mjs +17 -17
- package/src/lib/rules-commands.mjs.map +1 -1
- package/src/lib/rules-defaults.js +3 -1
- package/src/lib/rules-defaults.js.map +1 -1
- package/src/lib/rules-defaults.mjs +3 -1
- package/src/lib/rules-defaults.mjs.map +1 -1
- package/src/lib/rules-formula-box.d.mts +4 -2
- package/src/lib/rules-formula-box.d.ts +4 -2
- package/src/lib/rules-formula-box.js +3 -1
- package/src/lib/rules-formula-box.js.map +1 -1
- package/src/lib/rules-formula-box.mjs +3 -1
- package/src/lib/rules-formula-box.mjs.map +1 -1
- package/src/lib/rules-formula.d.mts +13 -6
- package/src/lib/rules-formula.d.ts +13 -6
- package/src/lib/rules-formula.js +65 -24
- package/src/lib/rules-formula.js.map +1 -1
- package/src/lib/rules-formula.mjs +65 -25
- package/src/lib/rules-formula.mjs.map +1 -1
- package/src/lib/rules-sample.d.mts +4 -2
- package/src/lib/rules-sample.d.ts +4 -2
- package/src/lib/rules-sample.js +5 -4
- package/src/lib/rules-sample.js.map +1 -1
- package/src/lib/rules-sample.mjs +5 -4
- package/src/lib/rules-sample.mjs.map +1 -1
- package/src/lib/rules-worked-out.js +72 -17
- package/src/lib/rules-worked-out.js.map +1 -1
- package/src/lib/rules-worked-out.mjs +73 -18
- package/src/lib/rules-worked-out.mjs.map +1 -1
- package/src/lib/screen-canvas.js +3 -1
- package/src/lib/screen-canvas.js.map +1 -1
- package/src/lib/screen-canvas.mjs +3 -1
- package/src/lib/screen-canvas.mjs.map +1 -1
- package/src/lib/steps-commands.d.mts +5 -3
- package/src/lib/steps-commands.d.ts +5 -3
- package/src/lib/steps-commands.js +5 -5
- package/src/lib/steps-commands.js.map +1 -1
- package/src/lib/steps-commands.mjs +5 -5
- package/src/lib/steps-commands.mjs.map +1 -1
- package/src/lib/steps-editor.js +3 -2
- package/src/lib/steps-editor.js.map +1 -1
- package/src/lib/steps-editor.mjs +3 -2
- package/src/lib/steps-editor.mjs.map +1 -1
- package/src/lib/steps-map.d.mts +3 -1
- package/src/lib/steps-map.d.ts +3 -1
- package/src/lib/steps-map.js +1 -1
- package/src/lib/steps-map.js.map +1 -1
- package/src/lib/steps-map.mjs +1 -1
- package/src/lib/steps-map.mjs.map +1 -1
- package/src/lib/steps-settings.d.mts +3 -1
- package/src/lib/steps-settings.d.ts +3 -1
- package/src/lib/steps-settings.js +5 -2
- package/src/lib/steps-settings.js.map +1 -1
- package/src/lib/steps-settings.mjs +5 -2
- package/src/lib/steps-settings.mjs.map +1 -1
- package/src/lib/styles-endings.d.mts +6 -0
- package/src/lib/styles-endings.d.ts +6 -0
- package/src/lib/styles-endings.js +42 -0
- package/src/lib/styles-endings.js.map +1 -0
- package/src/lib/styles-endings.mjs +39 -0
- package/src/lib/styles-endings.mjs.map +1 -0
- package/src/lib/styles-kinds.d.mts +1 -1
- package/src/lib/styles-kinds.d.ts +1 -1
- package/src/lib/styles-kinds.js +1 -0
- package/src/lib/styles-kinds.js.map +1 -1
- package/src/lib/styles-kinds.mjs +1 -0
- package/src/lib/styles-kinds.mjs.map +1 -1
- package/src/lib/styles-rules.d.mts +1 -1
- package/src/lib/styles-rules.d.ts +1 -1
- package/src/lib/styles-rules.js +6 -1
- package/src/lib/styles-rules.js.map +1 -1
- package/src/lib/styles-rules.mjs +6 -1
- package/src/lib/styles-rules.mjs.map +1 -1
- package/src/lib/styles.d.mts +1 -1
- package/src/lib/styles.d.ts +1 -1
- package/src/lib/styles.js +18 -2
- package/src/lib/styles.js.map +1 -1
- package/src/lib/styles.mjs +18 -2
- package/src/lib/styles.mjs.map +1 -1
- package/src/lib/survey-editor.js +14 -4
- package/src/lib/survey-editor.js.map +1 -1
- package/src/lib/survey-editor.mjs +14 -4
- package/src/lib/survey-editor.mjs.map +1 -1
- package/src/lib/table-commands.d.mts +4 -2
- package/src/lib/table-commands.d.ts +4 -2
- package/src/lib/table-commands.js +4 -3
- package/src/lib/table-commands.js.map +1 -1
- package/src/lib/table-commands.mjs +4 -3
- package/src/lib/table-commands.mjs.map +1 -1
- package/src/lib/try-it.js +2 -0
- package/src/lib/try-it.js.map +1 -1
- package/src/lib/try-it.mjs +2 -0
- package/src/lib/try-it.mjs.map +1 -1
- package/src/lib/uncalled.d.mts +7 -0
- package/src/lib/uncalled.d.ts +7 -0
- package/src/lib/uncalled.js +21 -0
- package/src/lib/uncalled.js.map +1 -0
- package/src/lib/uncalled.mjs +18 -0
- package/src/lib/uncalled.mjs.map +1 -0
- package/src/lib/validate-edit.d.mts +3 -2
- package/src/lib/validate-edit.d.ts +3 -2
- package/src/lib/validate-edit.js +4 -3
- package/src/lib/validate-edit.js.map +1 -1
- package/src/lib/validate-edit.mjs +4 -3
- package/src/lib/validate-edit.mjs.map +1 -1
package/README.md
CHANGED
|
@@ -89,6 +89,37 @@ customers"). `designer.setRecords({ one, other, a })` sets the records' words,
|
|
|
89
89
|
`null` takes them away, and one word without the other is refused in words;
|
|
90
90
|
`designer.setLowerLabels(on)` sets the labels' case.
|
|
91
91
|
|
|
92
|
+
## What a form says once it is sent, and answers in its words
|
|
93
|
+
|
|
94
|
+
A form of responses lists its endings — on the screen's panel with nothing
|
|
95
|
+
picked (**Once it is sent**), and under a survey's pages — each with when it is
|
|
96
|
+
shown (rules on the answers, as a question's are), its title, its words and its
|
|
97
|
+
button to start again or **No button**; the last is **Shown otherwise**, and
|
|
98
|
+
**Add an ending** puts a new one before it, shown by the first question it can
|
|
99
|
+
test (or says why none can be added: no choice or yes-or-no to choose it by).
|
|
100
|
+
Beside every box where a page's words are typed — a field's label and help, a
|
|
101
|
+
button's words, a survey's question and page title, an ending's title and words —
|
|
102
|
+
a choice's option, a **{ }** button puts an answer in at the caret, `{branch}`,
|
|
103
|
+
which the form shows as it reads ("How was your visit to Zamalek?"), with what
|
|
104
|
+
to say while it is empty if **When empty** says it (`{branch|this branch}`); an
|
|
105
|
+
ending's offers the reference the app gives the response, `{id}`, too. `designer.setEnding(index, patch)` and
|
|
106
|
+
`designer.moveEnding(from, to)` edit them, one undo step each (a run of typing in
|
|
107
|
+
one box, one); what the page check refuses — a `{name}` that is no field, one
|
|
108
|
+
after the ending shown otherwise — is refused in words.
|
|
109
|
+
|
|
110
|
+
## When a form takes answers, and how many
|
|
111
|
+
|
|
112
|
+
With nothing picked, a form of responses' Rules tab offers **Opens on** and
|
|
113
|
+
**Closes on** — typed in the designer's own date box, on the page's time zone —
|
|
114
|
+
**Most responses**, **One response per person**, and once one of them is set,
|
|
115
|
+
**Words while it takes none**; and, on any screen people type in, **Continue
|
|
116
|
+
later**. A choice's settings offer **Limit places**: a box for each option's
|
|
117
|
+
places, emptied to take one away. `designer.setPageLimits({ opens, closes,
|
|
118
|
+
maxResponses, onePerPerson, message })` sets them (`null` takes one away; a
|
|
119
|
+
close before the open, or limits on a record's screen, are refused in words),
|
|
120
|
+
`designer.setContinueLater(on)` and `designer.setOptionDetails(id, index, {
|
|
121
|
+
seats })` the rest; Publish lists each change.
|
|
122
|
+
|
|
92
123
|
## Trying a field's rules
|
|
93
124
|
|
|
94
125
|
Under a field's answer rules — on the panel's Rules tab, and in a survey
|
|
@@ -186,6 +217,39 @@ page (Undo brings them back). A look of your own carries each kind's look.
|
|
|
186
217
|
|
|
187
218
|
## What an app adds
|
|
188
219
|
|
|
220
|
+
### Functions of its own
|
|
221
|
+
|
|
222
|
+
`functions` gives the designer your app's functions, as the viewer is given them
|
|
223
|
+
(see `@fieldia/core`) — or only what is known of each (`takes`, `values`, `gives`,
|
|
224
|
+
`tip`), without its call. A formula's box offers them after Fieldia's, each with its
|
|
225
|
+
tip, and checks a formula calling one as it checks Fieldia's: how many values, and of
|
|
226
|
+
what kind. Nothing calls them while a page is designed — a formula's made-up values
|
|
227
|
+
give nothing for one — but Try it calls those it has calls for. A name no page may
|
|
228
|
+
call is refused as the designer is made.
|
|
229
|
+
|
|
230
|
+
```ts
|
|
231
|
+
createDesigner({ page, functions: { districtPrice: { takes: [1, 1], values: ['text'], gives: 'number', tip: 'The district’s average per m²: districtPrice(district)' } } });
|
|
232
|
+
```
|
|
233
|
+
|
|
234
|
+
Every formula box lists Fieldia's functions by what they work on — Numbers, Dates,
|
|
235
|
+
Words, Choosing — each with its words. A function there is not, or given too many or
|
|
236
|
+
too few values, is refused as a formula is typed; a value of a kind a function does not
|
|
237
|
+
take is said and kept — "“age” takes a date: Notes is text", in the box's result and as
|
|
238
|
+
a "should fix" check, never stopping an edit or a publish.
|
|
239
|
+
|
|
240
|
+
### Options that follow the answers
|
|
241
|
+
|
|
242
|
+
Each option of a choice has **Show when…** in its row: a condition on another
|
|
243
|
+
question's answer, drawn under the row, its rules taken away to show it always — kept
|
|
244
|
+
as the option's `invisible` (`designer.setOptionDetails(id, index, { invisible })`,
|
|
245
|
+
the one command an option's details go through: its picture, points, places and
|
|
246
|
+
condition). A table's Choice column has the same **Show when…** in each of its
|
|
247
|
+
options' rows, its condition on the line's other columns or — said "… (the record)"
|
|
248
|
+
— the record's fields (`parent.`), kept as the line option's `invisible`
|
|
249
|
+
(`designer.setColumnOptionWhen(id, column, index, invisible)`). A choice's **Choices** may be **Picked in another
|
|
250
|
+
question**: which question, and the answers picked there or those not
|
|
251
|
+
(`optionsFrom: { field, picked }`); its own options follow them.
|
|
252
|
+
|
|
189
253
|
### Kinds of its own
|
|
190
254
|
|
|
191
255
|
An app adds kinds of field beside Fieldia's: each is the field a new one starts
|
|
@@ -260,6 +324,17 @@ const assistant: DesignerAssistant = {
|
|
|
260
324
|
createDesigner({ page, assistant }); // or mountSurveyEditor(host, { designer, assistant })
|
|
261
325
|
```
|
|
262
326
|
|
|
327
|
+
### A table's columns
|
|
328
|
+
|
|
329
|
+
A table of lines' panel lists its columns — a label and a kind each: text, a
|
|
330
|
+
number, a date, yes or no, or a choice. A choice column's choices sit under its
|
|
331
|
+
row: written there, an option each (Add option, ×), or one of the app's lists
|
|
332
|
+
(`lists` given to the designer, a box for a name without), with the line's other
|
|
333
|
+
columns and the record's fields (“Workspace (the record)”, `parent.workspace`) it
|
|
334
|
+
changes with — `designer.setColumnChoices(id, column, { labels })`, `{ from: {
|
|
335
|
+
list, dependsOn } }`, `{ from: null }`. A column of a kind it does not offer, such
|
|
336
|
+
as a link, keeps its type.
|
|
337
|
+
|
|
263
338
|
### Saved forms placed in a page
|
|
264
339
|
|
|
265
340
|
A store that lists its saved forms — `PageStore.list()`, optional, giving
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fieldia/designer",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.27.0",
|
|
4
4
|
"description": "Build Fieldia pages without writing JSON: an editing model with undo and versions, a survey editor, and a canvas.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"homepage": "https://fieldia.dev",
|
|
@@ -44,9 +44,9 @@
|
|
|
44
44
|
"./package.json": "./package.json"
|
|
45
45
|
},
|
|
46
46
|
"dependencies": {
|
|
47
|
-
"@fieldia/core": "0.
|
|
48
|
-
"@fieldia/viewer": "0.
|
|
49
|
-
"@fieldia/widgets": "0.
|
|
47
|
+
"@fieldia/core": "0.27.0",
|
|
48
|
+
"@fieldia/viewer": "0.27.0",
|
|
49
|
+
"@fieldia/widgets": "0.27.0",
|
|
50
50
|
"tslib": "^2.8.1"
|
|
51
51
|
},
|
|
52
52
|
"peerDependencies": {
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { Field, Page } from '@fieldia/core';
|
|
2
|
+
import type { ElementFactory } from './chrome.mjs';
|
|
3
|
+
import type { Designer } from './designer.mjs';
|
|
4
|
+
/** The page's fields an answer can be put in words from, in the page's order. */
|
|
5
|
+
export declare function answerFields(page: Page): [string, Field][];
|
|
6
|
+
/**
|
|
7
|
+
* A box where a page's words are typed — a label, a help, a step's title, a button's words, an ending — with a button
|
|
8
|
+
* beside it that puts an answer in them (`answerButton`).
|
|
9
|
+
*/
|
|
10
|
+
export declare function withAnswers(el: ElementFactory, designer: Designer, box: HTMLInputElement | HTMLTextAreaElement, options?: {
|
|
11
|
+
sent?: boolean;
|
|
12
|
+
}): HTMLElement;
|
|
13
|
+
/**
|
|
14
|
+
* The button that puts an answer in a box of words: a list of the page's questions, the one picked going in at the
|
|
15
|
+
* caret as `{name}`, which the form shows as that answer reads ("How was your visit to {branch}?"), and an optional
|
|
16
|
+
* "When empty" box, its words said while the answer is empty (`{branch|this branch}`). An ending's words (`sent`) may
|
|
17
|
+
* say the reference the app gives the response, `{id}`, too. The box is told of it as typing tells it. Arrows move
|
|
18
|
+
* between the answers, Escape gives the focus back, a press elsewhere closes it.
|
|
19
|
+
*/
|
|
20
|
+
export declare function answerButton(el: ElementFactory, designer: Designer, box: HTMLInputElement | HTMLTextAreaElement, options?: {
|
|
21
|
+
sent?: boolean;
|
|
22
|
+
}): HTMLButtonElement;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { Field, Page } from '@fieldia/core';
|
|
2
|
+
import type { ElementFactory } from './chrome';
|
|
3
|
+
import type { Designer } from './designer';
|
|
4
|
+
/** The page's fields an answer can be put in words from, in the page's order. */
|
|
5
|
+
export declare function answerFields(page: Page): [string, Field][];
|
|
6
|
+
/**
|
|
7
|
+
* A box where a page's words are typed — a label, a help, a step's title, a button's words, an ending — with a button
|
|
8
|
+
* beside it that puts an answer in them (`answerButton`).
|
|
9
|
+
*/
|
|
10
|
+
export declare function withAnswers(el: ElementFactory, designer: Designer, box: HTMLInputElement | HTMLTextAreaElement, options?: {
|
|
11
|
+
sent?: boolean;
|
|
12
|
+
}): HTMLElement;
|
|
13
|
+
/**
|
|
14
|
+
* The button that puts an answer in a box of words: a list of the page's questions, the one picked going in at the
|
|
15
|
+
* caret as `{name}`, which the form shows as that answer reads ("How was your visit to {branch}?"), and an optional
|
|
16
|
+
* "When empty" box, its words said while the answer is empty (`{branch|this branch}`). An ending's words (`sent`) may
|
|
17
|
+
* say the reference the app gives the response, `{id}`, too. The box is told of it as typing tells it. Arrows move
|
|
18
|
+
* between the answers, Escape gives the focus back, a press elsewhere closes it.
|
|
19
|
+
*/
|
|
20
|
+
export declare function answerButton(el: ElementFactory, designer: Designer, box: HTMLInputElement | HTMLTextAreaElement, options?: {
|
|
21
|
+
sent?: boolean;
|
|
22
|
+
}): HTMLButtonElement;
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.answerFields = answerFields;
|
|
4
|
+
exports.withAnswers = withAnswers;
|
|
5
|
+
exports.answerButton = answerButton;
|
|
6
|
+
const chrome_language_1 = require("./chrome-language");
|
|
7
|
+
/** The kinds whose value reads as words inside a sentence: what an answer put in words may be. */
|
|
8
|
+
const SAID = new Set(['char', 'text', 'html', 'integer', 'float', 'monetary', 'boolean', 'date', 'datetime', 'selection', 'many2one', 'many2many', 'reference']);
|
|
9
|
+
/** The page's fields an answer can be put in words from, in the page's order. */
|
|
10
|
+
function answerFields(page) {
|
|
11
|
+
return Object.entries(page.fields).filter(([, def]) => SAID.has(def.type));
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* A box where a page's words are typed — a label, a help, a step's title, a button's words, an ending — with a button
|
|
15
|
+
* beside it that puts an answer in them (`answerButton`).
|
|
16
|
+
*/
|
|
17
|
+
function withAnswers(el, designer, box, options = {}) {
|
|
18
|
+
return el('span', { class: 'fd-words-box' }, box, answerButton(el, designer, box, options));
|
|
19
|
+
}
|
|
20
|
+
/** The one list of answers open, if one is: opening another closes it. */
|
|
21
|
+
let open = null;
|
|
22
|
+
/**
|
|
23
|
+
* The button that puts an answer in a box of words: a list of the page's questions, the one picked going in at the
|
|
24
|
+
* caret as `{name}`, which the form shows as that answer reads ("How was your visit to {branch}?"), and an optional
|
|
25
|
+
* "When empty" box, its words said while the answer is empty (`{branch|this branch}`). An ending's words (`sent`) may
|
|
26
|
+
* say the reference the app gives the response, `{id}`, too. The box is told of it as typing tells it. Arrows move
|
|
27
|
+
* between the answers, Escape gives the focus back, a press elsewhere closes it.
|
|
28
|
+
*/
|
|
29
|
+
function answerButton(el, designer, box, options = {}) {
|
|
30
|
+
const w = designer.words.endings;
|
|
31
|
+
const button = el('button', { type: 'button', class: 'fd-button fd-answer-picker', 'aria-label': w.insertAnswerIn(box.getAttribute('aria-label') ?? ''), title: w.insertAnswer, 'aria-haspopup': 'dialog', 'aria-expanded': 'false' }, '{ }');
|
|
32
|
+
button.addEventListener('click', () => (button.getAttribute('aria-expanded') === 'true' ? open?.() : show()));
|
|
33
|
+
function show() {
|
|
34
|
+
open?.();
|
|
35
|
+
const doc = button.ownerDocument;
|
|
36
|
+
const page = designer.getPage();
|
|
37
|
+
const answers = answerFields(page).map(([name, def]) => [name, def.label || name]);
|
|
38
|
+
if (options.sent && !page.fields['id'])
|
|
39
|
+
answers.unshift(['id', w.reference]);
|
|
40
|
+
const empty = el('input', { class: 'fd-input fd-answer-empty', 'aria-label': w.whenEmpty, placeholder: w.whenEmptyHint, autocomplete: 'off' });
|
|
41
|
+
const picks = answers.map(([name, label]) => {
|
|
42
|
+
const pick = el('button', { type: 'button', class: 'fd-menu-item', 'data-answer': name }, label);
|
|
43
|
+
pick.addEventListener('click', () => {
|
|
44
|
+
close(false);
|
|
45
|
+
put(name, empty.value.replace(/[{}]/g, '').trim());
|
|
46
|
+
});
|
|
47
|
+
return pick;
|
|
48
|
+
});
|
|
49
|
+
const pop = el('div', { class: 'fd-menu fd-answer-menu', role: 'dialog', 'aria-label': w.answersTitle }, el('div', { class: 'fd-menu-title', 'aria-hidden': 'true' }, w.answersTitle), ...(picks.length ? [el('div', { class: 'fd-answer-list', role: 'group', 'aria-label': w.answersTitle }, ...picks)] : [el('p', { class: 'fd-menu-note' }, w.noAnswers)]), el('label', { class: 'fd-answer-empty-row' }, el('span', { class: 'fd-menu-heading' }, w.whenEmpty), empty));
|
|
50
|
+
pop.addEventListener('keydown', (event) => {
|
|
51
|
+
const at = picks.indexOf(doc.activeElement);
|
|
52
|
+
if ((event.key === 'ArrowDown' || event.key === 'ArrowUp') && at !== -1) {
|
|
53
|
+
event.preventDefault();
|
|
54
|
+
picks[(at + (event.key === 'ArrowDown' ? 1 : -1) + picks.length) % picks.length]?.focus();
|
|
55
|
+
}
|
|
56
|
+
else if (event.key === 'Escape') {
|
|
57
|
+
event.preventDefault();
|
|
58
|
+
event.stopPropagation();
|
|
59
|
+
close(true);
|
|
60
|
+
}
|
|
61
|
+
});
|
|
62
|
+
const outside = (event) => {
|
|
63
|
+
if (!pop.contains(event.target) && !button.contains(event.target))
|
|
64
|
+
close(false);
|
|
65
|
+
};
|
|
66
|
+
doc.addEventListener('pointerdown', outside, true);
|
|
67
|
+
function close(refocus) {
|
|
68
|
+
if (!pop.isConnected)
|
|
69
|
+
return;
|
|
70
|
+
pop.remove();
|
|
71
|
+
doc.removeEventListener('pointerdown', outside, true);
|
|
72
|
+
button.setAttribute('aria-expanded', 'false');
|
|
73
|
+
if (open === shut)
|
|
74
|
+
open = null;
|
|
75
|
+
if (refocus)
|
|
76
|
+
button.focus();
|
|
77
|
+
}
|
|
78
|
+
const shut = () => close(false);
|
|
79
|
+
open = shut;
|
|
80
|
+
(button.closest('.fd-form') ?? doc.body).append((0, chrome_language_1.speakLike)(pop, button));
|
|
81
|
+
button.setAttribute('aria-expanded', 'true');
|
|
82
|
+
// Under the button, kept in the window.
|
|
83
|
+
const r = button.getBoundingClientRect();
|
|
84
|
+
const view = doc.defaultView;
|
|
85
|
+
const width = pop.offsetWidth || 240;
|
|
86
|
+
const height = pop.offsetHeight || 0;
|
|
87
|
+
const below = r.bottom + 6;
|
|
88
|
+
Object.assign(pop.style, {
|
|
89
|
+
left: `${Math.max(8, Math.min(r.right - width, (view?.innerWidth ?? 1024) - width - 8))}px`,
|
|
90
|
+
top: `${view && below + height > view.innerHeight - 8 && r.top - height - 6 > 8 ? r.top - height - 6 : below}px`,
|
|
91
|
+
});
|
|
92
|
+
(picks[0] ?? empty).focus();
|
|
93
|
+
}
|
|
94
|
+
/** `{name}`, or `{name|words}` with words while empty, where the caret was left — over the words chosen — the caret after it. */
|
|
95
|
+
function put(name, empty) {
|
|
96
|
+
const start = box.selectionStart ?? box.value.length;
|
|
97
|
+
const end = box.selectionEnd ?? start;
|
|
98
|
+
box.focus();
|
|
99
|
+
box.setRangeText(empty ? `{${name}|${empty}}` : `{${name}}`, start, end, 'end');
|
|
100
|
+
box.dispatchEvent(new Event('input', { bubbles: true }));
|
|
101
|
+
}
|
|
102
|
+
return button;
|
|
103
|
+
}
|
|
104
|
+
//# sourceMappingURL=answer-picker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"answer-picker.js","sourceRoot":"","sources":["../../../../../libs/designer/src/lib/answer-picker.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
import { speakLike } from './chrome-language.mjs';
|
|
2
|
+
/** The kinds whose value reads as words inside a sentence: what an answer put in words may be. */
|
|
3
|
+
const SAID = new Set(['char', 'text', 'html', 'integer', 'float', 'monetary', 'boolean', 'date', 'datetime', 'selection', 'many2one', 'many2many', 'reference']);
|
|
4
|
+
/** The page's fields an answer can be put in words from, in the page's order. */
|
|
5
|
+
export function answerFields(page) {
|
|
6
|
+
return Object.entries(page.fields).filter(([, def]) => SAID.has(def.type));
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* A box where a page's words are typed — a label, a help, a step's title, a button's words, an ending — with a button
|
|
10
|
+
* beside it that puts an answer in them (`answerButton`).
|
|
11
|
+
*/
|
|
12
|
+
export function withAnswers(el, designer, box, options = {}) {
|
|
13
|
+
return el('span', { class: 'fd-words-box' }, box, answerButton(el, designer, box, options));
|
|
14
|
+
}
|
|
15
|
+
/** The one list of answers open, if one is: opening another closes it. */
|
|
16
|
+
let open = null;
|
|
17
|
+
/**
|
|
18
|
+
* The button that puts an answer in a box of words: a list of the page's questions, the one picked going in at the
|
|
19
|
+
* caret as `{name}`, which the form shows as that answer reads ("How was your visit to {branch}?"), and an optional
|
|
20
|
+
* "When empty" box, its words said while the answer is empty (`{branch|this branch}`). An ending's words (`sent`) may
|
|
21
|
+
* say the reference the app gives the response, `{id}`, too. The box is told of it as typing tells it. Arrows move
|
|
22
|
+
* between the answers, Escape gives the focus back, a press elsewhere closes it.
|
|
23
|
+
*/
|
|
24
|
+
export function answerButton(el, designer, box, options = {}) {
|
|
25
|
+
const w = designer.words.endings;
|
|
26
|
+
const button = el('button', { type: 'button', class: 'fd-button fd-answer-picker', 'aria-label': w.insertAnswerIn(box.getAttribute('aria-label') ?? ''), title: w.insertAnswer, 'aria-haspopup': 'dialog', 'aria-expanded': 'false' }, '{ }');
|
|
27
|
+
button.addEventListener('click', () => (button.getAttribute('aria-expanded') === 'true' ? open?.() : show()));
|
|
28
|
+
function show() {
|
|
29
|
+
open?.();
|
|
30
|
+
const doc = button.ownerDocument;
|
|
31
|
+
const page = designer.getPage();
|
|
32
|
+
const answers = answerFields(page).map(([name, def]) => [name, def.label || name]);
|
|
33
|
+
if (options.sent && !page.fields['id'])
|
|
34
|
+
answers.unshift(['id', w.reference]);
|
|
35
|
+
const empty = el('input', { class: 'fd-input fd-answer-empty', 'aria-label': w.whenEmpty, placeholder: w.whenEmptyHint, autocomplete: 'off' });
|
|
36
|
+
const picks = answers.map(([name, label]) => {
|
|
37
|
+
const pick = el('button', { type: 'button', class: 'fd-menu-item', 'data-answer': name }, label);
|
|
38
|
+
pick.addEventListener('click', () => {
|
|
39
|
+
close(false);
|
|
40
|
+
put(name, empty.value.replace(/[{}]/g, '').trim());
|
|
41
|
+
});
|
|
42
|
+
return pick;
|
|
43
|
+
});
|
|
44
|
+
const pop = el('div', { class: 'fd-menu fd-answer-menu', role: 'dialog', 'aria-label': w.answersTitle }, el('div', { class: 'fd-menu-title', 'aria-hidden': 'true' }, w.answersTitle), ...(picks.length ? [el('div', { class: 'fd-answer-list', role: 'group', 'aria-label': w.answersTitle }, ...picks)] : [el('p', { class: 'fd-menu-note' }, w.noAnswers)]), el('label', { class: 'fd-answer-empty-row' }, el('span', { class: 'fd-menu-heading' }, w.whenEmpty), empty));
|
|
45
|
+
pop.addEventListener('keydown', (event) => {
|
|
46
|
+
const at = picks.indexOf(doc.activeElement);
|
|
47
|
+
if ((event.key === 'ArrowDown' || event.key === 'ArrowUp') && at !== -1) {
|
|
48
|
+
event.preventDefault();
|
|
49
|
+
picks[(at + (event.key === 'ArrowDown' ? 1 : -1) + picks.length) % picks.length]?.focus();
|
|
50
|
+
}
|
|
51
|
+
else if (event.key === 'Escape') {
|
|
52
|
+
event.preventDefault();
|
|
53
|
+
event.stopPropagation();
|
|
54
|
+
close(true);
|
|
55
|
+
}
|
|
56
|
+
});
|
|
57
|
+
const outside = (event) => {
|
|
58
|
+
if (!pop.contains(event.target) && !button.contains(event.target))
|
|
59
|
+
close(false);
|
|
60
|
+
};
|
|
61
|
+
doc.addEventListener('pointerdown', outside, true);
|
|
62
|
+
function close(refocus) {
|
|
63
|
+
if (!pop.isConnected)
|
|
64
|
+
return;
|
|
65
|
+
pop.remove();
|
|
66
|
+
doc.removeEventListener('pointerdown', outside, true);
|
|
67
|
+
button.setAttribute('aria-expanded', 'false');
|
|
68
|
+
if (open === shut)
|
|
69
|
+
open = null;
|
|
70
|
+
if (refocus)
|
|
71
|
+
button.focus();
|
|
72
|
+
}
|
|
73
|
+
const shut = () => close(false);
|
|
74
|
+
open = shut;
|
|
75
|
+
(button.closest('.fd-form') ?? doc.body).append(speakLike(pop, button));
|
|
76
|
+
button.setAttribute('aria-expanded', 'true');
|
|
77
|
+
// Under the button, kept in the window.
|
|
78
|
+
const r = button.getBoundingClientRect();
|
|
79
|
+
const view = doc.defaultView;
|
|
80
|
+
const width = pop.offsetWidth || 240;
|
|
81
|
+
const height = pop.offsetHeight || 0;
|
|
82
|
+
const below = r.bottom + 6;
|
|
83
|
+
Object.assign(pop.style, {
|
|
84
|
+
left: `${Math.max(8, Math.min(r.right - width, (view?.innerWidth ?? 1024) - width - 8))}px`,
|
|
85
|
+
top: `${view && below + height > view.innerHeight - 8 && r.top - height - 6 > 8 ? r.top - height - 6 : below}px`,
|
|
86
|
+
});
|
|
87
|
+
(picks[0] ?? empty).focus();
|
|
88
|
+
}
|
|
89
|
+
/** `{name}`, or `{name|words}` with words while empty, where the caret was left — over the words chosen — the caret after it. */
|
|
90
|
+
function put(name, empty) {
|
|
91
|
+
const start = box.selectionStart ?? box.value.length;
|
|
92
|
+
const end = box.selectionEnd ?? start;
|
|
93
|
+
box.focus();
|
|
94
|
+
box.setRangeText(empty ? `{${name}|${empty}}` : `{${name}}`, start, end, 'end');
|
|
95
|
+
box.dispatchEvent(new Event('input', { bubbles: true }));
|
|
96
|
+
}
|
|
97
|
+
return button;
|
|
98
|
+
}
|
|
99
|
+
//# sourceMappingURL=answer-picker.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"answer-picker.mjs","sourceRoot":"","sources":["../../../../../libs/designer/src/lib/answer-picker.ts"],"names":[],"mappings":"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"}
|
package/src/lib/canvas-form.js
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.formViews = formViews;
|
|
4
4
|
const core_1 = require("@fieldia/core");
|
|
5
|
+
const uncalled_1 = require("./uncalled");
|
|
5
6
|
const viewer_1 = require("@fieldia/viewer");
|
|
6
7
|
const icons_1 = require("./icons");
|
|
7
8
|
const saved_forms_1 = require("./saved-forms");
|
|
@@ -98,7 +99,7 @@ function formViews(options) {
|
|
|
98
99
|
unmount(view);
|
|
99
100
|
view.body.replaceChildren();
|
|
100
101
|
try {
|
|
101
|
-
view.viewer = (0, viewer_1.mountViewer)(view.body, { page: placing(node, look, language), showActions: false, skin: (options.skin ?? 'outlined'), widgets: options.widgets, pages });
|
|
102
|
+
view.viewer = (0, viewer_1.mountViewer)(view.body, { page: placing(node, look, language), showActions: false, skin: (options.skin ?? 'outlined'), widgets: options.widgets, pages, functions: (0, uncalled_1.uncalled)(designer.functions()) });
|
|
102
103
|
// Parts the viewer draws later — a tab when first shown, a saved form inside when its page comes — are kept apart too.
|
|
103
104
|
const Watch = doc.defaultView?.MutationObserver;
|
|
104
105
|
const drawn = view;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"canvas-form.js","sourceRoot":"","sources":["../../../../../libs/designer/src/lib/canvas-form.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"canvas-form.js","sourceRoot":"","sources":["../../../../../libs/designer/src/lib/canvas-form.ts"],"names":[],"mappings":";;AA8DA,8BA0GC;AAxKD,wCAAoF;AACpF,yCAAsC;AACtC,4CAAmF;AAInF,mCAAuC;AACvC,+CAA2C;AAC3C,qCAA8C;AAoC9C,yIAAyI;AACzI,SAAS,OAAO,CAAC,IAAc,EAAE,IAAkB,EAAE,QAA4B;IAC/E,OAAO;QACL,OAAO,EAAE,qBAAc;QACvB,EAAE,EAAE,0BAA0B;QAC9B,2GAA2G;QAC3G,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACjC,IAAI,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE;QAC3B,MAAM,EAAE,EAAE;QACV,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACzB,MAAM,EAAE;YACN,IAAI,EAAE,UAAU;YAChB,EAAE,EAAE,SAAS;YACb,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC;SACjN;KACF,CAAC;AACJ,CAAC;AAED,SAAgB,SAAS,CAAC,OAA0H;IAClJ,MAAM,EAAE,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC;IACtC,MAAM,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,UAAU,CAAC;IACpC,MAAM,KAAK,GAAG,IAAI,GAAG,EAAgB,CAAC;IAEtC,8FAA8F;IAC9F,MAAM,KAAK,GAAG,CAAC,OAAoB,EAAsC,EAAE;QACzE,IAAI,CAAC,CAAC,IAAI,IAAI,OAAO,CAAC;YAAE,OAAO,IAAI,CAAC;QACpC,MAAM,KAAK,GAAG,QAAQ,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;QAC9D,IAAI,KAAK,KAAK,SAAS;YAAE,OAAO,KAAK,EAAE,IAAI,IAAI,IAAI,CAAC;QACpD,OAAO,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE,IAAI,IAAI,IAAI,CAAC,CAAC;IACtH,CAAC,CAAC;IAEF,SAAS,IAAI,CAAC,EAAU;QACtB,MAAM,GAAG,GAAG,EAAE,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE,CAAC,CAAC;QACxD,MAAM,IAAI,GAAG,EAAE,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,8CAA8C,EAAE,EAAE,CAAC,CAAC,MAAM,CAAsB,CAAC;QACpI,MAAM,IAAI,GAAG,EAAE,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,CAAC,CAAC;QACvD,yGAAyG;QACzG,MAAM,IAAI,GAAG,EAAE,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;QACpE,MAAM,IAAI,GAAG,EAAE,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,EAAE,IAAA,oBAAY,EAAC,GAAG,EAAE,YAAY,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;QACrG,MAAM,OAAO,GAAG,EAAE,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,gCAAgC,EAAE,WAAW,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QAC1G,MAAM,IAAI,GAAS,EAAE,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;QAC7F,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;QACrE,OAAO,IAAI,CAAC;IACd,CAAC;IAED,SAAS,OAAO,CAAC,IAAU;QACzB,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC;QACvB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACnB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,OAAO,EAAE,UAAU,EAAE,CAAC;QAC3B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;IACtB,CAAC;IAED,sIAAsI;IACtI,SAAS,KAAK,CAAC,IAAU;QACvB,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,EAAE,CAAC;YAC7D,IAAI,CAAC,YAAY,CAAC,iBAAiB,EAAE,IAAI,CAAC,YAAY,CAAC,WAAW,CAAW,CAAC,CAAC;YAC/E,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;QACpC,CAAC;IACH,CAAC;IAED,OAAO;QACL,IAAI,CAAC,IAAI,EAAE,MAAM;YACf,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC9B,IAAI,CAAC,IAAI;gBAAE,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YACtD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC;YACxB,MAAM,KAAK,GAAG,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;YAC1D,MAAM,KAAK,GAAG,KAAK,EAAE,IAAI,IAAI,IAAI,CAAC;YAClC,wGAAwG;YACxG,MAAM,IAAI,GAAG,IAAA,wBAAU,EAAC,KAAK,EAAE,QAAQ,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC;YACzE,IAAA,gBAAO,EAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;YAC7C,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YACpC,IAAA,kBAAS,EAAC,IAAI,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC;YAC9C,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,oBAAoB,EAAE,MAAM,CAAC,CAAC;YAC5D,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,qBAAqB,EAAE,IAAI,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC;YACnF,IAAI,IAAI,CAAC,OAAO;gBAAE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,WAAW,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;;gBAC/E,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;YAEpD,MAAM,OAAO,GAAG,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,IAAI,KAAK,CAAC,QAAQ,KAAK,MAAM,CAAC,CAAC;YAClI,MAAM,KAAK,GAAG,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;YACvF,IAAA,gBAAO,EAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YAC1B,IAAA,kBAAS,EAAC,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC;YAC7B,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,wBAAwB,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;YAChE,IAAI,CAAC,KAAK,IAAI,OAAO,EAAE,CAAC;gBACtB,OAAO,CAAC,IAAI,CAAC,CAAC;gBACd,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;gBAC5B,OAAO,IAAI,CAAC,OAAO,CAAC;YACtB,CAAC;YACD,6GAA6G;YAC7G,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,QAAQ,CAAC,OAAO,EAAE,CAAC;YAC9C,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,IAAI,IAAI,EAAE,IAAI,CAAC,KAAK,IAAI,IAAI,EAAE,IAAI,IAAI,IAAI,EAAE,QAAQ,IAAI,IAAI,CAAC,CAAC,CAAC;YAClH,IAAI,IAAI,CAAC,KAAK,EAAE,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,EAAE,CAAC;gBACzD,OAAO,CAAC,IAAI,CAAC,CAAC;gBACd,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;gBAC5B,IAAI,CAAC;oBACH,IAAI,CAAC,MAAM,GAAG,IAAA,oBAAW,EAAC,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,CAAC,EAAE,WAAW,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,OAAO,CAAC,IAAI,IAAI,UAAU,CAAS,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,IAAA,mBAAQ,EAAC,QAAQ,CAAC,SAAS,EAAE,CAAC,EAAE,CAAC,CAAC;oBAC1N,uHAAuH;oBACvH,MAAM,KAAK,GAAG,GAAG,CAAC,WAAW,EAAE,gBAAgB,CAAC;oBAChD,MAAM,KAAK,GAAG,IAAI,CAAC;oBACnB,IAAI,KAAK,EAAE,CAAC;wBACV,KAAK,CAAC,OAAO,GAAG,IAAI,KAAK,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;wBAC9C,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;oBACxE,CAAC;gBACH,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,IAAA,gBAAO,EAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,UAAU,CAAC,IAAI,EAAG,KAAe,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBAChF,IAAA,kBAAS,EAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;gBAC9B,CAAC;gBACD,IAAI,CAAC,KAAK,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;YACpC,CAAC;YACD,KAAK,CAAC,IAAI,CAAC,CAAC;YACZ,OAAO,IAAI,CAAC,OAAO,CAAC;QACtB,CAAC;QACD,IAAI,CAAC,GAAG;YACN,KAAK,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,KAAK,EAAE,CAAC;gBAC/B,IAAI,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;oBAAE,SAAS;gBAC1B,OAAO,CAAC,IAAI,CAAC,CAAC;gBACd,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;gBACtB,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YACnB,CAAC;QACH,CAAC;QACD,OAAO;YACL,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,MAAM,EAAE;gBAAE,OAAO,CAAC,IAAI,CAAC,CAAC;YACjD,KAAK,CAAC,KAAK,EAAE,CAAC;QAChB,CAAC;KACF,CAAC;AACJ,CAAC"}
|
package/src/lib/canvas-form.mjs
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { FORMAT_VERSION } from '@fieldia/core';
|
|
2
|
+
import { uncalled } from './uncalled.mjs';
|
|
2
3
|
import { mountViewer } from '@fieldia/viewer';
|
|
3
4
|
import { designerIcon } from './icons.mjs';
|
|
4
5
|
import { shownTitle } from './saved-forms.mjs';
|
|
@@ -95,7 +96,7 @@ export function formViews(options) {
|
|
|
95
96
|
unmount(view);
|
|
96
97
|
view.body.replaceChildren();
|
|
97
98
|
try {
|
|
98
|
-
view.viewer = mountViewer(view.body, { page: placing(node, look, language), showActions: false, skin: (options.skin ?? 'outlined'), widgets: options.widgets, pages });
|
|
99
|
+
view.viewer = mountViewer(view.body, { page: placing(node, look, language), showActions: false, skin: (options.skin ?? 'outlined'), widgets: options.widgets, pages, functions: uncalled(designer.functions()) });
|
|
99
100
|
// Parts the viewer draws later — a tab when first shown, a saved form inside when its page comes — are kept apart too.
|
|
100
101
|
const Watch = doc.defaultView?.MutationObserver;
|
|
101
102
|
const drawn = view;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"canvas-form.mjs","sourceRoot":"","sources":["../../../../../libs/designer/src/lib/canvas-form.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAuC,MAAM,eAAe,CAAC;AACpF,OAAO,EAAE,WAAW,EAAuC,MAAM,iBAAiB,CAAC;AAInF,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAoC9C,yIAAyI;AACzI,SAAS,OAAO,CAAC,IAAc,EAAE,IAAkB,EAAE,QAA4B;IAC/E,OAAO;QACL,OAAO,EAAE,cAAc;QACvB,EAAE,EAAE,0BAA0B;QAC9B,2GAA2G;QAC3G,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACjC,IAAI,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE;QAC3B,MAAM,EAAE,EAAE;QACV,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACzB,MAAM,EAAE;YACN,IAAI,EAAE,UAAU;YAChB,EAAE,EAAE,SAAS;YACb,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC;SACjN;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,OAA0H;IAClJ,MAAM,EAAE,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC;IACtC,MAAM,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,UAAU,CAAC;IACpC,MAAM,KAAK,GAAG,IAAI,GAAG,EAAgB,CAAC;IAEtC,8FAA8F;IAC9F,MAAM,KAAK,GAAG,CAAC,OAAoB,EAAsC,EAAE;QACzE,IAAI,CAAC,CAAC,IAAI,IAAI,OAAO,CAAC;YAAE,OAAO,IAAI,CAAC;QACpC,MAAM,KAAK,GAAG,QAAQ,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;QAC9D,IAAI,KAAK,KAAK,SAAS;YAAE,OAAO,KAAK,EAAE,IAAI,IAAI,IAAI,CAAC;QACpD,OAAO,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE,IAAI,IAAI,IAAI,CAAC,CAAC;IACtH,CAAC,CAAC;IAEF,SAAS,IAAI,CAAC,EAAU;QACtB,MAAM,GAAG,GAAG,EAAE,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE,CAAC,CAAC;QACxD,MAAM,IAAI,GAAG,EAAE,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,8CAA8C,EAAE,EAAE,CAAC,CAAC,MAAM,CAAsB,CAAC;QACpI,MAAM,IAAI,GAAG,EAAE,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,CAAC,CAAC;QACvD,yGAAyG;QACzG,MAAM,IAAI,GAAG,EAAE,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;QACpE,MAAM,IAAI,GAAG,EAAE,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,EAAE,YAAY,CAAC,GAAG,EAAE,YAAY,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;QACrG,MAAM,OAAO,GAAG,EAAE,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,gCAAgC,EAAE,WAAW,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QAC1G,MAAM,IAAI,GAAS,EAAE,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;QAC7F,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;QACrE,OAAO,IAAI,CAAC;IACd,CAAC;IAED,SAAS,OAAO,CAAC,IAAU;QACzB,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC;QACvB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACnB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,OAAO,EAAE,UAAU,EAAE,CAAC;QAC3B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;IACtB,CAAC;IAED,sIAAsI;IACtI,SAAS,KAAK,CAAC,IAAU;QACvB,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,EAAE,CAAC;YAC7D,IAAI,CAAC,YAAY,CAAC,iBAAiB,EAAE,IAAI,CAAC,YAAY,CAAC,WAAW,CAAW,CAAC,CAAC;YAC/E,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;QACpC,CAAC;IACH,CAAC;IAED,OAAO;QACL,IAAI,CAAC,IAAI,EAAE,MAAM;YACf,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC9B,IAAI,CAAC,IAAI;gBAAE,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YACtD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC;YACxB,MAAM,KAAK,GAAG,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;YAC1D,MAAM,KAAK,GAAG,KAAK,EAAE,IAAI,IAAI,IAAI,CAAC;YAClC,wGAAwG;YACxG,MAAM,IAAI,GAAG,UAAU,CAAC,KAAK,EAAE,QAAQ,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC;YACzE,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;YAC7C,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YACpC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC;YAC9C,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,oBAAoB,EAAE,MAAM,CAAC,CAAC;YAC5D,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,qBAAqB,EAAE,IAAI,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC;YACnF,IAAI,IAAI,CAAC,OAAO;gBAAE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,WAAW,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;;gBAC/E,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;YAEpD,MAAM,OAAO,GAAG,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,IAAI,KAAK,CAAC,QAAQ,KAAK,MAAM,CAAC,CAAC;YAClI,MAAM,KAAK,GAAG,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;YACvF,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YAC1B,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC;YAC7B,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,wBAAwB,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;YAChE,IAAI,CAAC,KAAK,IAAI,OAAO,EAAE,CAAC;gBACtB,OAAO,CAAC,IAAI,CAAC,CAAC;gBACd,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;gBAC5B,OAAO,IAAI,CAAC,OAAO,CAAC;YACtB,CAAC;YACD,6GAA6G;YAC7G,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,QAAQ,CAAC,OAAO,EAAE,CAAC;YAC9C,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,IAAI,IAAI,EAAE,IAAI,CAAC,KAAK,IAAI,IAAI,EAAE,IAAI,IAAI,IAAI,EAAE,QAAQ,IAAI,IAAI,CAAC,CAAC,CAAC;YAClH,IAAI,IAAI,CAAC,KAAK,EAAE,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,EAAE,CAAC;gBACzD,OAAO,CAAC,IAAI,CAAC,CAAC;gBACd,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;gBAC5B,IAAI,CAAC;oBACH,IAAI,CAAC,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,CAAC,EAAE,WAAW,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,OAAO,CAAC,IAAI,IAAI,UAAU,CAAS,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"canvas-form.mjs","sourceRoot":"","sources":["../../../../../libs/designer/src/lib/canvas-form.ts"],"names":[],"mappings":"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"}
|
package/src/lib/chrome.js
CHANGED
|
@@ -8,9 +8,11 @@ exports.optionsEditor = optionsEditor;
|
|
|
8
8
|
const find_anything_1 = require("./find-anything");
|
|
9
9
|
const kinds_1 = require("./kinds");
|
|
10
10
|
const list_source_1 = require("./list-source");
|
|
11
|
+
const option_when_1 = require("./option-when");
|
|
11
12
|
const icons_1 = require("./icons");
|
|
12
13
|
const publish_ui_1 = require("./publish-ui");
|
|
13
14
|
const writes_1 = require("./writes");
|
|
15
|
+
const answer_picker_1 = require("./answer-picker");
|
|
14
16
|
function elementFactory(doc) {
|
|
15
17
|
return (tag, attrs = {}, ...children) => {
|
|
16
18
|
const node = doc.createElement(tag);
|
|
@@ -192,7 +194,9 @@ function optionsEditor(el, designer, nodeId) {
|
|
|
192
194
|
const addRow = el('div', { class: 'fd-q-add-row' }, add, or, addOther);
|
|
193
195
|
const source = (0, list_source_1.listSource)(el, designer, nodeId);
|
|
194
196
|
const element = el('div', { class: 'fd-q-option-box' }, source.element, list, otherRow, addRow, source.list);
|
|
195
|
-
const inputs = () => [...list.querySelectorAll('input')];
|
|
197
|
+
const inputs = () => [...list.querySelectorAll(':scope > li > input')];
|
|
198
|
+
/** Each option's condition, by its box. */
|
|
199
|
+
const whens = new WeakMap();
|
|
196
200
|
const labels = () => inputs().map((i) => i.value);
|
|
197
201
|
const focused = (node) => node.ownerDocument.activeElement === node;
|
|
198
202
|
const focusAt = (index, atEnd = false) => {
|
|
@@ -402,17 +406,24 @@ function optionsEditor(el, designer, nodeId) {
|
|
|
402
406
|
const grip = el('span', { class: 'fd-q-option-grip', 'aria-hidden': 'true', title: w.grip }, (0, icons_1.designerIcon)(list.ownerDocument, 'grip'));
|
|
403
407
|
grip.addEventListener('pointerdown', (event) => drag(grip, event));
|
|
404
408
|
const alone = el('span', { class: 'fd-q-alone', hidden: '' }, w.alone);
|
|
405
|
-
|
|
409
|
+
// An option's words may show an answer given before it: "Yes, call me at {branch}" (answer-picker.ts); shown by
|
|
410
|
+
// another question's answer: "Garden" only for a villa.
|
|
411
|
+
const when = (0, option_when_1.optionWhen)(el, designer);
|
|
412
|
+
whens.set(input, when);
|
|
413
|
+
list.append(el('li', { class: 'fd-q-option' }, grip, el('span', { class: 'fd-q-bullet', 'aria-hidden': 'true' }, multiple ? '☐' : '◯'), input, (0, answer_picker_1.answerButton)(el, designer, input), alone, remove, when.button, when.box));
|
|
406
414
|
}
|
|
407
415
|
choices.forEach((option, i) => {
|
|
408
416
|
const row = list.children[i];
|
|
409
417
|
const input = row.querySelector('input');
|
|
410
418
|
if (!focused(input))
|
|
411
419
|
input.value = option.label;
|
|
412
|
-
const remove = row.querySelector('button');
|
|
420
|
+
const remove = row.querySelector(':scope > .fd-icon-button');
|
|
413
421
|
remove.setAttribute('aria-label', w.removeNamed(option.label));
|
|
414
|
-
|
|
422
|
+
// Options carried from another question may be followed by none of its own.
|
|
423
|
+
remove.hidden = choices.length === 1 && !(field.type === 'selection' && field.optionsFrom);
|
|
415
424
|
row.querySelector('.fd-q-alone').hidden = !option.exclusive;
|
|
425
|
+
// A page's own choice's row (a table's Choice column's rows have their own: columns-editor.ts).
|
|
426
|
+
whens.get(input)?.update(designer.getPage(), nodeId, i);
|
|
416
427
|
row.querySelector('.fd-q-option-grip').hidden = choices.length === 1;
|
|
417
428
|
row.querySelector('.fd-q-bullet').textContent = kind === 'dropdown' ? `${i + 1}.` : multiple ? '☐' : '◯';
|
|
418
429
|
});
|