@stubber/form-fields 1.7.10 → 2.0.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/dist/{fields2 → form-fields}/sub/currency-field.svelte +2 -3
- package/dist/{fields2 → form-fields}/sub/select-field.svelte +6 -3
- package/dist/{fields2 → form-fields}/utils.d.ts +1 -0
- package/dist/{fields2 → form-fields}/utils.js +9 -1
- package/dist/utils/input_regex_mask.d.ts +3 -0
- package/dist/utils/input_regex_mask.js +25 -0
- package/package.json +4 -8
- package/dist/Field.svelte +0 -36
- package/dist/Field.svelte.d.ts +0 -33
- package/dist/Form.svelte +0 -34
- package/dist/Form.svelte.d.ts +0 -31
- package/dist/NullFieldWrapper.svelte +0 -6
- package/dist/NullFieldWrapper.svelte.d.ts +0 -27
- package/dist/fields/component_parts/arraybuilder/FieldWrapper.svelte +0 -74
- package/dist/fields/component_parts/arraybuilder/FieldWrapper.svelte.d.ts +0 -31
- package/dist/fields/component_parts/fieldbuilder/FieldWrapper.svelte +0 -8
- package/dist/fields/component_parts/fieldbuilder/FieldWrapper.svelte.d.ts +0 -27
- package/dist/fields/components/AgGrid.svelte +0 -46
- package/dist/fields/components/AgGrid.svelte.d.ts +0 -20
- package/dist/fields/components/Arraybuilder.svelte +0 -98
- package/dist/fields/components/Arraybuilder.svelte.d.ts +0 -27
- package/dist/fields/components/Checkbox.svelte +0 -89
- package/dist/fields/components/Checkbox.svelte.d.ts +0 -25
- package/dist/fields/components/CheckboxAutocomplete.svelte +0 -95
- package/dist/fields/components/CheckboxAutocomplete.svelte.d.ts +0 -25
- package/dist/fields/components/Code.svelte +0 -133
- package/dist/fields/components/Code.svelte.d.ts +0 -18
- package/dist/fields/components/Contactselector.svelte +0 -71
- package/dist/fields/components/Contactselector.svelte.d.ts +0 -27
- package/dist/fields/components/Currency.svelte +0 -264
- package/dist/fields/components/Currency.svelte.d.ts +0 -25
- package/dist/fields/components/Dataindication.svelte +0 -31
- package/dist/fields/components/Dataindication.svelte.d.ts +0 -25
- package/dist/fields/components/Date.svelte +0 -97
- package/dist/fields/components/Date.svelte.d.ts +0 -25
- package/dist/fields/components/Datetime.svelte +0 -97
- package/dist/fields/components/Datetime.svelte.d.ts +0 -25
- package/dist/fields/components/Email.svelte +0 -125
- package/dist/fields/components/Email.svelte.d.ts +0 -25
- package/dist/fields/components/Fieldbuilder.svelte +0 -343
- package/dist/fields/components/Fieldbuilder.svelte.d.ts +0 -27
- package/dist/fields/components/Fieldsbuilder.svelte +0 -122
- package/dist/fields/components/Fieldsbuilder.svelte.d.ts +0 -27
- package/dist/fields/components/File.svelte +0 -231
- package/dist/fields/components/File.svelte.d.ts +0 -27
- package/dist/fields/components/Heading.svelte +0 -17
- package/dist/fields/components/Heading.svelte.d.ts +0 -25
- package/dist/fields/components/Hidden.svelte +0 -7
- package/dist/fields/components/Hidden.svelte.d.ts +0 -25
- package/dist/fields/components/Hiddenlocation.svelte +0 -28
- package/dist/fields/components/Hiddenlocation.svelte.d.ts +0 -25
- package/dist/fields/components/Html.svelte +0 -13
- package/dist/fields/components/Html.svelte.d.ts +0 -25
- package/dist/fields/components/Jsoneditor.svelte +0 -133
- package/dist/fields/components/Jsoneditor.svelte.d.ts +0 -25
- package/dist/fields/components/Map.svelte +0 -192
- package/dist/fields/components/Map.svelte.d.ts +0 -27
- package/dist/fields/components/Multicheckbox.svelte +0 -77
- package/dist/fields/components/Multicheckbox.svelte.d.ts +0 -25
- package/dist/fields/components/Multistep.svelte +0 -86
- package/dist/fields/components/Multistep.svelte.d.ts +0 -27
- package/dist/fields/components/Note.svelte +0 -92
- package/dist/fields/components/Note.svelte.d.ts +0 -25
- package/dist/fields/components/Number.svelte +0 -119
- package/dist/fields/components/Number.svelte.d.ts +0 -25
- package/dist/fields/components/Objectbuilder.svelte +0 -154
- package/dist/fields/components/Objectbuilder.svelte.d.ts +0 -27
- package/dist/fields/components/Qrcodescanner.svelte +0 -196
- package/dist/fields/components/Qrcodescanner.svelte.d.ts +0 -25
- package/dist/fields/components/Radio.svelte +0 -117
- package/dist/fields/components/Radio.svelte.d.ts +0 -25
- package/dist/fields/components/Renderfield.svelte +0 -58
- package/dist/fields/components/Renderfield.svelte.d.ts +0 -27
- package/dist/fields/components/Screenrecorder.svelte +0 -276
- package/dist/fields/components/Screenrecorder.svelte.d.ts +0 -27
- package/dist/fields/components/Screenshot.svelte +0 -269
- package/dist/fields/components/Screenshot.svelte.d.ts +0 -27
- package/dist/fields/components/Scrollandreaddisplay.svelte +0 -122
- package/dist/fields/components/Scrollandreaddisplay.svelte.d.ts +0 -25
- package/dist/fields/components/Section.svelte +0 -87
- package/dist/fields/components/Section.svelte.d.ts +0 -27
- package/dist/fields/components/Select.svelte +0 -161
- package/dist/fields/components/Select.svelte.d.ts +0 -31
- package/dist/fields/components/Selectresource.svelte +0 -57
- package/dist/fields/components/Selectresource.svelte.d.ts +0 -27
- package/dist/fields/components/Signature.svelte +0 -152
- package/dist/fields/components/Signature.svelte.d.ts +0 -27
- package/dist/fields/components/Slider.svelte +0 -101
- package/dist/fields/components/Slider.svelte.d.ts +0 -25
- package/dist/fields/components/SmartText.svelte +0 -351
- package/dist/fields/components/SmartText.svelte.d.ts +0 -25
- package/dist/fields/components/Telephone.svelte +0 -156
- package/dist/fields/components/Telephone.svelte.d.ts +0 -25
- package/dist/fields/components/Text.svelte +0 -107
- package/dist/fields/components/Text.svelte.d.ts +0 -25
- package/dist/fields/components/Voicenote.svelte +0 -267
- package/dist/fields/components/Voicenote.svelte.d.ts +0 -27
- package/dist/fields/components/index.d.ts +0 -84
- package/dist/fields/components/index.js +0 -85
- package/dist/fields/definitions/all.json +0 -38
- package/dist/fields/definitions/arraybuilder.json +0 -39
- package/dist/fields/definitions/checkbox.json +0 -44
- package/dist/fields/definitions/code.json +0 -15
- package/dist/fields/definitions/contactselector.json +0 -15
- package/dist/fields/definitions/currency.json +0 -42
- package/dist/fields/definitions/dataindication.json +0 -16
- package/dist/fields/definitions/date.json +0 -16
- package/dist/fields/definitions/datetime.json +0 -15
- package/dist/fields/definitions/email.json +0 -16
- package/dist/fields/definitions/fieldbuilder.json +0 -64
- package/dist/fields/definitions/fieldsbuilder.json +0 -38
- package/dist/fields/definitions/file.json +0 -42
- package/dist/fields/definitions/grid.json +0 -47
- package/dist/fields/definitions/heading.json +0 -38
- package/dist/fields/definitions/hidden.json +0 -89
- package/dist/fields/definitions/hiddenlocation.json +0 -15
- package/dist/fields/definitions/html.json +0 -34
- package/dist/fields/definitions/index.d.ts +0 -90
- package/dist/fields/definitions/index.js +0 -99
- package/dist/fields/definitions/jsoneditor.json +0 -33
- package/dist/fields/definitions/map.json +0 -36
- package/dist/fields/definitions/multicheckbox.json +0 -47
- package/dist/fields/definitions/multistep.json +0 -35
- package/dist/fields/definitions/note.json +0 -16
- package/dist/fields/definitions/number.json +0 -42
- package/dist/fields/definitions/objectbuilder.json +0 -39
- package/dist/fields/definitions/placeholder.json +0 -15
- package/dist/fields/definitions/qrcodescanner.json +0 -16
- package/dist/fields/definitions/radio.json +0 -47
- package/dist/fields/definitions/renderfield.json +0 -36
- package/dist/fields/definitions/richtext.json +0 -16
- package/dist/fields/definitions/screenrecorder.json +0 -42
- package/dist/fields/definitions/screenshot.json +0 -42
- package/dist/fields/definitions/scrollandreaddisplay.json +0 -49
- package/dist/fields/definitions/section.json +0 -50
- package/dist/fields/definitions/select.json +0 -47
- package/dist/fields/definitions/selectresource.json +0 -48
- package/dist/fields/definitions/signature.json +0 -16
- package/dist/fields/definitions/slider.json +0 -78
- package/dist/fields/definitions/smarttext.json +0 -101
- package/dist/fields/definitions/telephone.json +0 -16
- package/dist/fields/definitions/text.json +0 -35
- package/dist/fields/definitions/validfieldtype.json +0 -220
- package/dist/fields/definitions/voicenote.json +0 -43
- package/dist/index.d.ts +0 -2
- package/dist/index.js +0 -3
- package/dist/thirdparty/mapbox/GeoCoder.svelte +0 -10
- package/dist/thirdparty/mapbox/GeoCoder.svelte.d.ts +0 -27
- package/dist/thirdparty/mapbox/Map.svelte +0 -30
- package/dist/thirdparty/mapbox/Map.svelte.d.ts +0 -22
- package/dist/thirdparty/mapbox/MapMarker.svelte +0 -13
- package/dist/thirdparty/mapbox/MapMarker.svelte.d.ts +0 -33
- package/dist/utils/createField.d.ts +0 -6
- package/dist/utils/createField.js +0 -33
- package/dist/utils/createForm.d.ts +0 -1
- package/dist/utils/createForm.js +0 -501
- package/dist/utils/index.d.ts +0 -18
- package/dist/utils/index.js +0 -126
- package/dist/utils/syncing.d.ts +0 -11
- package/dist/utils/syncing.js +0 -134
- /package/dist/{fields2 → form-fields}/FieldExprToggle.svelte +0 -0
- /package/dist/{fields2 → form-fields}/FieldExprToggle.svelte.d.ts +0 -0
- /package/dist/{fields2 → form-fields}/FieldLabel.svelte +0 -0
- /package/dist/{fields2 → form-fields}/FieldLabel.svelte.d.ts +0 -0
- /package/dist/{fields2 → form-fields}/FieldMessage.svelte +0 -0
- /package/dist/{fields2 → form-fields}/FieldMessage.svelte.d.ts +0 -0
- /package/dist/{fields2 → form-fields}/Form.svelte +0 -0
- /package/dist/{fields2 → form-fields}/Form.svelte.d.ts +0 -0
- /package/dist/{fields2 → form-fields}/fileserver.d.ts +0 -0
- /package/dist/{fields2 → form-fields}/fileserver.js +0 -0
- /package/dist/{fields2 → form-fields}/form-field.svelte +0 -0
- /package/dist/{fields2 → form-fields}/form-field.svelte.d.ts +0 -0
- /package/dist/{fields2 → form-fields}/index.d.ts +0 -0
- /package/dist/{fields2 → form-fields}/index.js +0 -0
- /package/dist/{fields2 → form-fields}/interfaces.d.ts +0 -0
- /package/dist/{fields2 → form-fields}/interfaces.js +0 -0
- /package/dist/{fields2 → form-fields}/sub/array-builder-field.svelte +0 -0
- /package/dist/{fields2 → form-fields}/sub/array-builder-field.svelte.d.ts +0 -0
- /package/dist/{fields2 → form-fields}/sub/checkbox-autocomplete.svelte +0 -0
- /package/dist/{fields2 → form-fields}/sub/checkbox-autocomplete.svelte.d.ts +0 -0
- /package/dist/{fields2 → form-fields}/sub/checkbox-field.svelte +0 -0
- /package/dist/{fields2 → form-fields}/sub/checkbox-field.svelte.d.ts +0 -0
- /package/dist/{fields2 → form-fields}/sub/code-field.svelte +0 -0
- /package/dist/{fields2 → form-fields}/sub/code-field.svelte.d.ts +0 -0
- /package/dist/{fields2 → form-fields}/sub/contact-selector-field.svelte +0 -0
- /package/dist/{fields2 → form-fields}/sub/contact-selector-field.svelte.d.ts +0 -0
- /package/dist/{fields2 → form-fields}/sub/currency-field.svelte.d.ts +0 -0
- /package/dist/{fields2 → form-fields}/sub/data-indication-field.svelte +0 -0
- /package/dist/{fields2 → form-fields}/sub/data-indication-field.svelte.d.ts +0 -0
- /package/dist/{fields2 → form-fields}/sub/date-field.svelte +0 -0
- /package/dist/{fields2 → form-fields}/sub/date-field.svelte.d.ts +0 -0
- /package/dist/{fields2 → form-fields}/sub/date-time-field.svelte +0 -0
- /package/dist/{fields2 → form-fields}/sub/date-time-field.svelte.d.ts +0 -0
- /package/dist/{fields2 → form-fields}/sub/email-field.svelte +0 -0
- /package/dist/{fields2 → form-fields}/sub/email-field.svelte.d.ts +0 -0
- /package/dist/{fields2 → form-fields}/sub/field-builder-field.svelte +0 -0
- /package/dist/{fields2 → form-fields}/sub/field-builder-field.svelte.d.ts +0 -0
- /package/dist/{fields2 → form-fields}/sub/file-field.svelte +0 -0
- /package/dist/{fields2 → form-fields}/sub/file-field.svelte.d.ts +0 -0
- /package/dist/{fields2 → form-fields}/sub/grid-field.svelte +0 -0
- /package/dist/{fields2 → form-fields}/sub/grid-field.svelte.d.ts +0 -0
- /package/dist/{fields2 → form-fields}/sub/heading-field.svelte +0 -0
- /package/dist/{fields2 → form-fields}/sub/heading-field.svelte.d.ts +0 -0
- /package/dist/{fields2 → form-fields}/sub/hidden-field.svelte +0 -0
- /package/dist/{fields2 → form-fields}/sub/hidden-field.svelte.d.ts +0 -0
- /package/dist/{fields2 → form-fields}/sub/hidden-location-field.svelte +0 -0
- /package/dist/{fields2 → form-fields}/sub/hidden-location-field.svelte.d.ts +0 -0
- /package/dist/{fields2 → form-fields}/sub/html-field.svelte +0 -0
- /package/dist/{fields2 → form-fields}/sub/html-field.svelte.d.ts +0 -0
- /package/dist/{fields2 → form-fields}/sub/json-editor-bound.svelte +0 -0
- /package/dist/{fields2 → form-fields}/sub/json-editor-bound.svelte.d.ts +0 -0
- /package/dist/{fields2 → form-fields}/sub/jsoneditor-field.svelte +0 -0
- /package/dist/{fields2 → form-fields}/sub/jsoneditor-field.svelte.d.ts +0 -0
- /package/dist/{fields2 → form-fields}/sub/map-field.svelte +0 -0
- /package/dist/{fields2 → form-fields}/sub/map-field.svelte.d.ts +0 -0
- /package/dist/{fields2 → form-fields}/sub/multi-checkbox-field.svelte +0 -0
- /package/dist/{fields2 → form-fields}/sub/multi-checkbox-field.svelte.d.ts +0 -0
- /package/dist/{fields2 → form-fields}/sub/multistep-field.svelte +0 -0
- /package/dist/{fields2 → form-fields}/sub/multistep-field.svelte.d.ts +0 -0
- /package/dist/{fields2 → form-fields}/sub/note-field.svelte +0 -0
- /package/dist/{fields2 → form-fields}/sub/note-field.svelte.d.ts +0 -0
- /package/dist/{fields2 → form-fields}/sub/number-field.svelte +0 -0
- /package/dist/{fields2 → form-fields}/sub/number-field.svelte.d.ts +0 -0
- /package/dist/{fields2 → form-fields}/sub/object-builder-field.svelte +0 -0
- /package/dist/{fields2 → form-fields}/sub/object-builder-field.svelte.d.ts +0 -0
- /package/dist/{fields2 → form-fields}/sub/qr-code-scanner-field.svelte +0 -0
- /package/dist/{fields2 → form-fields}/sub/qr-code-scanner-field.svelte.d.ts +0 -0
- /package/dist/{fields2 → form-fields}/sub/radio-field.svelte +0 -0
- /package/dist/{fields2 → form-fields}/sub/radio-field.svelte.d.ts +0 -0
- /package/dist/{fields2 → form-fields}/sub/screenrecorder-field.svelte +0 -0
- /package/dist/{fields2 → form-fields}/sub/screenrecorder-field.svelte.d.ts +0 -0
- /package/dist/{fields2 → form-fields}/sub/screenshot-field.svelte +0 -0
- /package/dist/{fields2 → form-fields}/sub/screenshot-field.svelte.d.ts +0 -0
- /package/dist/{fields2 → form-fields}/sub/scroll-and-read-display-field.svelte +0 -0
- /package/dist/{fields2 → form-fields}/sub/scroll-and-read-display-field.svelte.d.ts +0 -0
- /package/dist/{fields2 → form-fields}/sub/section-field.svelte +0 -0
- /package/dist/{fields2 → form-fields}/sub/section-field.svelte.d.ts +0 -0
- /package/dist/{fields2 → form-fields}/sub/select-field.svelte.d.ts +0 -0
- /package/dist/{fields2 → form-fields}/sub/selectresource-field.svelte +0 -0
- /package/dist/{fields2 → form-fields}/sub/selectresource-field.svelte.d.ts +0 -0
- /package/dist/{fields2 → form-fields}/sub/signature-field.svelte +0 -0
- /package/dist/{fields2 → form-fields}/sub/signature-field.svelte.d.ts +0 -0
- /package/dist/{fields2 → form-fields}/sub/slider-field.svelte +0 -0
- /package/dist/{fields2 → form-fields}/sub/slider-field.svelte.d.ts +0 -0
- /package/dist/{fields2 → form-fields}/sub/smart-text-field.svelte +0 -0
- /package/dist/{fields2 → form-fields}/sub/smart-text-field.svelte.d.ts +0 -0
- /package/dist/{fields2 → form-fields}/sub/telephone-field.svelte +0 -0
- /package/dist/{fields2 → form-fields}/sub/telephone-field.svelte.d.ts +0 -0
- /package/dist/{fields2 → form-fields}/sub/text-field.svelte +0 -0
- /package/dist/{fields2 → form-fields}/sub/text-field.svelte.d.ts +0 -0
- /package/dist/{fields2 → form-fields}/sub/voicenote-field.svelte +0 -0
- /package/dist/{fields2 → form-fields}/sub/voicenote-field.svelte.d.ts +0 -0
- /package/dist/{fields2 → form-fields}/validations/validate_field.d.ts +0 -0
- /package/dist/{fields2 → form-fields}/validations/validate_field.js +0 -0
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
/** @typedef {typeof __propDef.props} NumberProps */
|
|
2
|
-
/** @typedef {typeof __propDef.events} NumberEvents */
|
|
3
|
-
/** @typedef {typeof __propDef.slots} NumberSlots */
|
|
4
|
-
export default class Number extends SvelteComponent<{
|
|
5
|
-
field: any;
|
|
6
|
-
}, {
|
|
7
|
-
[evt: string]: CustomEvent<any>;
|
|
8
|
-
}, {}> {
|
|
9
|
-
}
|
|
10
|
-
export type NumberProps = typeof __propDef.props;
|
|
11
|
-
export type NumberEvents = typeof __propDef.events;
|
|
12
|
-
export type NumberSlots = typeof __propDef.slots;
|
|
13
|
-
import { SvelteComponent } from "svelte";
|
|
14
|
-
declare const __propDef: {
|
|
15
|
-
props: {
|
|
16
|
-
field: any;
|
|
17
|
-
};
|
|
18
|
-
events: {
|
|
19
|
-
[evt: string]: CustomEvent<any>;
|
|
20
|
-
};
|
|
21
|
-
slots: {};
|
|
22
|
-
exports?: undefined;
|
|
23
|
-
bindings?: undefined;
|
|
24
|
-
};
|
|
25
|
-
export {};
|
|
@@ -1,154 +0,0 @@
|
|
|
1
|
-
<script>
|
|
2
|
-
import { Form } from "../..";
|
|
3
|
-
import _ from "lodash-es";
|
|
4
|
-
import { syncStoreToStore } from "../../utils/syncing";
|
|
5
|
-
import { writable } from "svelte/store";
|
|
6
|
-
import { onMount } from "svelte";
|
|
7
|
-
import { deepEqual } from "fast-equals";
|
|
8
|
-
|
|
9
|
-
import { Label } from "@stubber/ui/label";
|
|
10
|
-
|
|
11
|
-
export let form;
|
|
12
|
-
export let field;
|
|
13
|
-
|
|
14
|
-
let dependencies = form.dependencies;
|
|
15
|
-
|
|
16
|
-
$: state_key = $field.state?.state_key;
|
|
17
|
-
$: label = $field.spec?.title;
|
|
18
|
-
$: hide_label = $field.spec?.hide_label;
|
|
19
|
-
$: with_order = $field.spec?.params?.with_order;
|
|
20
|
-
$: key_field_spec = $field.spec?.params?.key_field_spec || {};
|
|
21
|
-
$: value_field_spec = $field.spec?.params?.value_field_spec || {};
|
|
22
|
-
$: isValid = !$field.state?.validation || $field.state?.validation?.valid;
|
|
23
|
-
$: validationMessage = $field.state?.validation?.message;
|
|
24
|
-
|
|
25
|
-
let initial_form;
|
|
26
|
-
let settings_form = writable();
|
|
27
|
-
onMount(() => {
|
|
28
|
-
// set field values that aren't set yet
|
|
29
|
-
let f = _.cloneDeep($field);
|
|
30
|
-
let initial_value = f?.data?.base ?? {};
|
|
31
|
-
let initial_data = _.merge(
|
|
32
|
-
{
|
|
33
|
-
base: initial_value,
|
|
34
|
-
},
|
|
35
|
-
f?.data
|
|
36
|
-
);
|
|
37
|
-
_.set(f, "data", initial_data);
|
|
38
|
-
if (!deepEqual(f, $field)) $field = f;
|
|
39
|
-
|
|
40
|
-
initial_form = {
|
|
41
|
-
spec: {
|
|
42
|
-
fields: {
|
|
43
|
-
entries: {
|
|
44
|
-
fieldtype: "arraybuilder",
|
|
45
|
-
hide_label: true,
|
|
46
|
-
params: {
|
|
47
|
-
new_entry_field: {
|
|
48
|
-
fieldtype: "section",
|
|
49
|
-
fields: {
|
|
50
|
-
key: _.merge({}, { title: "Key" }, key_field_spec),
|
|
51
|
-
value: _.merge({}, { title: "Value" }, value_field_spec),
|
|
52
|
-
},
|
|
53
|
-
},
|
|
54
|
-
},
|
|
55
|
-
},
|
|
56
|
-
},
|
|
57
|
-
},
|
|
58
|
-
data: {
|
|
59
|
-
entries: _.cloneDeep(
|
|
60
|
-
Object.entries(initial_value ?? {})
|
|
61
|
-
.sort((a, b) => {
|
|
62
|
-
let a_order = a[1]?.__order ?? 0;
|
|
63
|
-
let b_order = b[1]?.__order ?? 0;
|
|
64
|
-
return a_order - b_order;
|
|
65
|
-
})
|
|
66
|
-
.map((e) => {
|
|
67
|
-
return {
|
|
68
|
-
value: e[1],
|
|
69
|
-
key: e[0],
|
|
70
|
-
};
|
|
71
|
-
})
|
|
72
|
-
),
|
|
73
|
-
},
|
|
74
|
-
};
|
|
75
|
-
|
|
76
|
-
syncStoreToStore(
|
|
77
|
-
field,
|
|
78
|
-
settings_form,
|
|
79
|
-
(a, b) => {
|
|
80
|
-
let _clone = _.cloneDeep(b) || {};
|
|
81
|
-
|
|
82
|
-
let internal_entries = _.cloneDeep(a?.state?.internal || []);
|
|
83
|
-
let entries = Object.entries(a?.data?.base || {})
|
|
84
|
-
.sort((a, b) => {
|
|
85
|
-
let a_order = a[1]?.__order ?? 0;
|
|
86
|
-
let b_order = b[1]?.__order ?? 0;
|
|
87
|
-
return a_order - b_order;
|
|
88
|
-
})
|
|
89
|
-
.map((e, index) => {
|
|
90
|
-
let internal_state = internal_entries[index] || {};
|
|
91
|
-
return {
|
|
92
|
-
...internal_state,
|
|
93
|
-
value: e[1],
|
|
94
|
-
key: e[0],
|
|
95
|
-
};
|
|
96
|
-
});
|
|
97
|
-
|
|
98
|
-
_.set(_clone, "data.entries", entries);
|
|
99
|
-
|
|
100
|
-
if (!deepEqual(entries, a?.state?.internal)) {
|
|
101
|
-
$field.state.internal = _.cloneDeep(entries);
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
return _clone;
|
|
105
|
-
},
|
|
106
|
-
(a, b) => {
|
|
107
|
-
let _clone = _.cloneDeep(a) || {};
|
|
108
|
-
|
|
109
|
-
let uentries = _.cloneDeep(b.data.entries || []);
|
|
110
|
-
let entries = [];
|
|
111
|
-
uentries.forEach((curr, index) => {
|
|
112
|
-
let key = curr.key ?? "";
|
|
113
|
-
if (_.isObject(key)) key = JSON.stringify(key);
|
|
114
|
-
key = key.toString().trim();
|
|
115
|
-
let value = curr.value ?? null;
|
|
116
|
-
if (_.isObject(value) && with_order) {
|
|
117
|
-
value.__order = index;
|
|
118
|
-
}
|
|
119
|
-
let key_exists = entries.find((e) => e.key === key);
|
|
120
|
-
if (key_exists) key = key + " (copy)";
|
|
121
|
-
entries.push({ ...curr, key, value });
|
|
122
|
-
});
|
|
123
|
-
|
|
124
|
-
if (!deepEqual(entries, b.data.entries)) {
|
|
125
|
-
$settings_form.data.entries = _.cloneDeep(entries);
|
|
126
|
-
}
|
|
127
|
-
|
|
128
|
-
let base = entries.reduce((acc, curr) => {
|
|
129
|
-
acc[curr.key] = curr.value;
|
|
130
|
-
return acc;
|
|
131
|
-
}, {});
|
|
132
|
-
|
|
133
|
-
_.set(_clone, "data.base", _.cloneDeep(base));
|
|
134
|
-
_.set(_clone, "state.internal", _.cloneDeep(entries));
|
|
135
|
-
|
|
136
|
-
return _clone;
|
|
137
|
-
}
|
|
138
|
-
);
|
|
139
|
-
});
|
|
140
|
-
</script>
|
|
141
|
-
|
|
142
|
-
<div class="flex flex-col w-full text-surface-900 my-2">
|
|
143
|
-
<Label for="input_{state_key}" class="block {hide_label ? 'hidden' : ''}">
|
|
144
|
-
{label}
|
|
145
|
-
</Label>
|
|
146
|
-
{#if initial_form}
|
|
147
|
-
<Form bind:form={settings_form} {initial_form} {dependencies} />
|
|
148
|
-
{/if}
|
|
149
|
-
{#if validationMessage}
|
|
150
|
-
<Label class=" {!isValid ? `text-danger-500` : `text-success-500`}">
|
|
151
|
-
{validationMessage}
|
|
152
|
-
</Label>
|
|
153
|
-
{/if}
|
|
154
|
-
</div>
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
/** @typedef {typeof __propDef.props} ObjectbuilderProps */
|
|
2
|
-
/** @typedef {typeof __propDef.events} ObjectbuilderEvents */
|
|
3
|
-
/** @typedef {typeof __propDef.slots} ObjectbuilderSlots */
|
|
4
|
-
export default class Objectbuilder extends SvelteComponent<{
|
|
5
|
-
form: any;
|
|
6
|
-
field: any;
|
|
7
|
-
}, {
|
|
8
|
-
[evt: string]: CustomEvent<any>;
|
|
9
|
-
}, {}> {
|
|
10
|
-
}
|
|
11
|
-
export type ObjectbuilderProps = typeof __propDef.props;
|
|
12
|
-
export type ObjectbuilderEvents = typeof __propDef.events;
|
|
13
|
-
export type ObjectbuilderSlots = typeof __propDef.slots;
|
|
14
|
-
import { SvelteComponent } from "svelte";
|
|
15
|
-
declare const __propDef: {
|
|
16
|
-
props: {
|
|
17
|
-
form: any;
|
|
18
|
-
field: any;
|
|
19
|
-
};
|
|
20
|
-
events: {
|
|
21
|
-
[evt: string]: CustomEvent<any>;
|
|
22
|
-
};
|
|
23
|
-
slots: {};
|
|
24
|
-
exports?: undefined;
|
|
25
|
-
bindings?: undefined;
|
|
26
|
-
};
|
|
27
|
-
export {};
|
|
@@ -1,196 +0,0 @@
|
|
|
1
|
-
<script>
|
|
2
|
-
import { syncStoreToStore } from "../../utils/syncing";
|
|
3
|
-
import { deepEqual } from "fast-equals";
|
|
4
|
-
import _ from "lodash-es";
|
|
5
|
-
import { onMount } from "svelte";
|
|
6
|
-
import { writable } from "svelte/store";
|
|
7
|
-
import { fade } from "svelte/transition";
|
|
8
|
-
import { Html5Qrcode } from "html5-qrcode";
|
|
9
|
-
import { Button } from "@stubber/ui/button";
|
|
10
|
-
import { Input } from "@stubber/ui/input";
|
|
11
|
-
import { Label } from "@stubber/ui/label";
|
|
12
|
-
|
|
13
|
-
export let field;
|
|
14
|
-
|
|
15
|
-
const internal = writable();
|
|
16
|
-
let html5Qrcode;
|
|
17
|
-
let isScannerModalOpen = false;
|
|
18
|
-
let isCameraAvailable = false;
|
|
19
|
-
let scansuccess = false;
|
|
20
|
-
let scannedResult = "";
|
|
21
|
-
|
|
22
|
-
async function openScannerModal() {
|
|
23
|
-
if (isScannerModalOpen == false) {
|
|
24
|
-
isScannerModalOpen = true;
|
|
25
|
-
scannedResult = "";
|
|
26
|
-
scansuccess = false;
|
|
27
|
-
let cameras = await Html5Qrcode.getCameras();
|
|
28
|
-
if (!cameras) {
|
|
29
|
-
isCameraAvailable = false;
|
|
30
|
-
return;
|
|
31
|
-
}
|
|
32
|
-
isCameraAvailable = true;
|
|
33
|
-
let cameraId = cameras[0].id;
|
|
34
|
-
html5Qrcode = new Html5Qrcode("reader");
|
|
35
|
-
html5Qrcode.start(cameraId, { fps: 2 }, onScanSuccess, onScanFailure);
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
function closeScannerModal() {
|
|
40
|
-
isScannerModalOpen = false;
|
|
41
|
-
html5Qrcode.stop();
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
function onScanSuccess(decodedText, decodedResult) {
|
|
45
|
-
scannedResult = decodedText;
|
|
46
|
-
scansuccess = true;
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
function onScanFailure(error) {
|
|
50
|
-
// handle scan failure, usually better to ignore and keep scanning.
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
$: state_key = $field.state?.state_key;
|
|
54
|
-
$: label = $field.spec?.title;
|
|
55
|
-
$: hide_label = $field.spec?.hide_label;
|
|
56
|
-
$: isValid = !$field.state?.validation || $field.state?.validation?.valid;
|
|
57
|
-
$: validationMessage = $field.state?.validation?.message;
|
|
58
|
-
|
|
59
|
-
function confirmScan() {
|
|
60
|
-
closeScannerModal();
|
|
61
|
-
$internal.raw = scannedResult;
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
onMount(() => {
|
|
65
|
-
// set field values that aren't set yet
|
|
66
|
-
let f = _.cloneDeep($field);
|
|
67
|
-
let initial_value = f?.data?.base ?? "";
|
|
68
|
-
let initial_data = {
|
|
69
|
-
...f?.data,
|
|
70
|
-
base: initial_value,
|
|
71
|
-
};
|
|
72
|
-
let initial_state_internal = {
|
|
73
|
-
...f?.state?.internal,
|
|
74
|
-
raw: initial_value,
|
|
75
|
-
};
|
|
76
|
-
_.set(f, "data", initial_data);
|
|
77
|
-
_.set(f, "state.internal", initial_state_internal);
|
|
78
|
-
if (!deepEqual(f, $field)) $field = f;
|
|
79
|
-
|
|
80
|
-
syncStoreToStore(
|
|
81
|
-
field,
|
|
82
|
-
internal,
|
|
83
|
-
(a, b) => {
|
|
84
|
-
let _clone = _.cloneDeep(a.state?.internal) || {};
|
|
85
|
-
|
|
86
|
-
// get parts from data
|
|
87
|
-
_clone.raw = a?.data?.base;
|
|
88
|
-
|
|
89
|
-
// set field state if changed
|
|
90
|
-
if (!deepEqual(a?.state?.internal, _clone)) {
|
|
91
|
-
$field.state.internal = _clone;
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
return _clone;
|
|
95
|
-
},
|
|
96
|
-
(a, b) => {
|
|
97
|
-
let _clone = _.cloneDeep(a) || {};
|
|
98
|
-
// update the state
|
|
99
|
-
_.set(_clone, "state.internal", _.cloneDeep(b));
|
|
100
|
-
// update the data
|
|
101
|
-
_.set(_clone, "data.base", b?.raw);
|
|
102
|
-
return _clone;
|
|
103
|
-
}
|
|
104
|
-
);
|
|
105
|
-
});
|
|
106
|
-
</script>
|
|
107
|
-
|
|
108
|
-
{#if $internal}
|
|
109
|
-
{#if isScannerModalOpen}
|
|
110
|
-
<div class="fixed inset-0 w-screen h-screen bg-black/50 z-30">
|
|
111
|
-
<!-- svelte-ignore a11y-click-events-have-key-events -->
|
|
112
|
-
<!-- svelte-ignore a11y-no-static-element-interactions -->
|
|
113
|
-
<div
|
|
114
|
-
in:fade|global
|
|
115
|
-
out:fade|global={{ duration: 100 }}
|
|
116
|
-
on:click|self={() => {
|
|
117
|
-
closeScannerModal();
|
|
118
|
-
}}
|
|
119
|
-
class="fixed inset-0 flex justify-center items-center z-30 my-6"
|
|
120
|
-
>
|
|
121
|
-
<div
|
|
122
|
-
class="max-w-full max-h-full overflow-auto bg-surface-0 p-6 pt-4 rounded-2xl border shadow-2xl"
|
|
123
|
-
>
|
|
124
|
-
<button
|
|
125
|
-
type="button"
|
|
126
|
-
class="block ml-auto text-surface-700 font-bold text-lg"
|
|
127
|
-
on:click={closeScannerModal}
|
|
128
|
-
>
|
|
129
|
-
<i class="fa-regular fa-xmark" />
|
|
130
|
-
</button>
|
|
131
|
-
<div class="px-2 space-y-3">
|
|
132
|
-
<h4
|
|
133
|
-
class="text-start text-surface-900 text-heading-6 font-medium border-b border-surface-200"
|
|
134
|
-
>
|
|
135
|
-
Scan code
|
|
136
|
-
</h4>
|
|
137
|
-
<div id="reader" class="w-[250px] sm:w-[310px] flex flex-col items-center" />
|
|
138
|
-
{#if isCameraAvailable}
|
|
139
|
-
{#if scansuccess}
|
|
140
|
-
<div class="flex items-center space-x-2">
|
|
141
|
-
<i class="fas fa-circle text-success-400 fa-2xs" />
|
|
142
|
-
<p class="text-label text-surface-800">{scannedResult}</p>
|
|
143
|
-
</div>
|
|
144
|
-
{:else}
|
|
145
|
-
<div class="flex items-center space-x-2">
|
|
146
|
-
<i class="fas fa-circle text-surface-200 fa-2xs" />
|
|
147
|
-
<p class="text-label text-surface-800">Searching for code ...</p>
|
|
148
|
-
</div>
|
|
149
|
-
{/if}
|
|
150
|
-
<div class="flex">
|
|
151
|
-
<div class="flex ml-auto">
|
|
152
|
-
<Button disabled={!scansuccess} on:click={confirmScan}>Confirm</Button>
|
|
153
|
-
</div>
|
|
154
|
-
</div>
|
|
155
|
-
{:else}
|
|
156
|
-
<div class="w-[250px] sm:w-[310px] aspect-square flex items-center justify-center">
|
|
157
|
-
<p class="text-surface-800 text-label">No camera found</p>
|
|
158
|
-
</div>
|
|
159
|
-
{/if}
|
|
160
|
-
</div>
|
|
161
|
-
</div>
|
|
162
|
-
</div>
|
|
163
|
-
</div>
|
|
164
|
-
{/if}
|
|
165
|
-
|
|
166
|
-
<div class="flex flex-col w-full text-surface-900">
|
|
167
|
-
<Label for="input_{state_key}" class="block {hide_label ? 'hidden' : ''}">
|
|
168
|
-
{label}
|
|
169
|
-
</Label>
|
|
170
|
-
<div class="relative mt-2 rounded-md">
|
|
171
|
-
<div class="flex items-center space-x-3">
|
|
172
|
-
{#if $internal.raw}
|
|
173
|
-
<Input
|
|
174
|
-
readonly
|
|
175
|
-
type="text"
|
|
176
|
-
id="input_{state_key}"
|
|
177
|
-
placeholder={label}
|
|
178
|
-
name={state_key}
|
|
179
|
-
value={$internal.raw}
|
|
180
|
-
/>
|
|
181
|
-
{/if}
|
|
182
|
-
<div class="shrink-0">
|
|
183
|
-
<Button on:click={openScannerModal}>
|
|
184
|
-
<i class="fa-solid fa-qrcode" />
|
|
185
|
-
Scan Code
|
|
186
|
-
</Button>
|
|
187
|
-
</div>
|
|
188
|
-
</div>
|
|
189
|
-
</div>
|
|
190
|
-
{#if validationMessage}
|
|
191
|
-
<p class="text-label {!isValid ? `text-danger-500` : `text-success-500`}">
|
|
192
|
-
{validationMessage}
|
|
193
|
-
</p>
|
|
194
|
-
{/if}
|
|
195
|
-
</div>
|
|
196
|
-
{/if}
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
/** @typedef {typeof __propDef.props} QrcodescannerProps */
|
|
2
|
-
/** @typedef {typeof __propDef.events} QrcodescannerEvents */
|
|
3
|
-
/** @typedef {typeof __propDef.slots} QrcodescannerSlots */
|
|
4
|
-
export default class Qrcodescanner extends SvelteComponent<{
|
|
5
|
-
field: any;
|
|
6
|
-
}, {
|
|
7
|
-
[evt: string]: CustomEvent<any>;
|
|
8
|
-
}, {}> {
|
|
9
|
-
}
|
|
10
|
-
export type QrcodescannerProps = typeof __propDef.props;
|
|
11
|
-
export type QrcodescannerEvents = typeof __propDef.events;
|
|
12
|
-
export type QrcodescannerSlots = typeof __propDef.slots;
|
|
13
|
-
import { SvelteComponent } from "svelte";
|
|
14
|
-
declare const __propDef: {
|
|
15
|
-
props: {
|
|
16
|
-
field: any;
|
|
17
|
-
};
|
|
18
|
-
events: {
|
|
19
|
-
[evt: string]: CustomEvent<any>;
|
|
20
|
-
};
|
|
21
|
-
slots: {};
|
|
22
|
-
exports?: undefined;
|
|
23
|
-
bindings?: undefined;
|
|
24
|
-
};
|
|
25
|
-
export {};
|
|
@@ -1,117 +0,0 @@
|
|
|
1
|
-
<script>
|
|
2
|
-
import { syncStoreToStore } from "../../utils/syncing";
|
|
3
|
-
import { deepEqual } from "fast-equals";
|
|
4
|
-
import _ from "lodash-es";
|
|
5
|
-
import { onMount } from "svelte";
|
|
6
|
-
import { writable } from "svelte/store";
|
|
7
|
-
|
|
8
|
-
import * as RadioGroup from "@stubber/ui/radio-group";
|
|
9
|
-
import { Label } from "@stubber/ui/label";
|
|
10
|
-
|
|
11
|
-
export let field;
|
|
12
|
-
|
|
13
|
-
const internal = writable();
|
|
14
|
-
|
|
15
|
-
$: state_key = $field.state?.state_key;
|
|
16
|
-
$: label = $field.spec?.title;
|
|
17
|
-
$: hide_label = $field.spec?.hide_label;
|
|
18
|
-
$: isValid = !$field.state?.validation || $field.state?.validation?.valid;
|
|
19
|
-
$: validationMessage = $field.state?.validation?.message;
|
|
20
|
-
$: items = _.isArray($field.spec?.params?.options)
|
|
21
|
-
? $field.spec?.params?.options?.map((o, index) => {
|
|
22
|
-
let { label, value } = o || {};
|
|
23
|
-
let _value = value !== undefined ? value : label;
|
|
24
|
-
let _label = label ?? value;
|
|
25
|
-
let _key = `${state_key}${label}${index}`;
|
|
26
|
-
return { _key, _label, _value };
|
|
27
|
-
})
|
|
28
|
-
: [];
|
|
29
|
-
|
|
30
|
-
onMount(() => {
|
|
31
|
-
// set field values that aren't set yet
|
|
32
|
-
let f = _.cloneDeep($field);
|
|
33
|
-
let initial_item = items?.find((i) => deepEqual($field.data.base, i._value));
|
|
34
|
-
if (!initial_item) initial_item = items[0];
|
|
35
|
-
let initial_data = {
|
|
36
|
-
...f?.data,
|
|
37
|
-
base: initial_item?._value,
|
|
38
|
-
};
|
|
39
|
-
if (!f?.spec?.without_value_details) initial_data.base_label = initial_item?._label;
|
|
40
|
-
let initial_state_internal = {
|
|
41
|
-
...f?.state?.internal,
|
|
42
|
-
selected_item_key: initial_item?._key,
|
|
43
|
-
};
|
|
44
|
-
_.set(f, "data", initial_data);
|
|
45
|
-
_.set(f, "state.internal", initial_state_internal);
|
|
46
|
-
if (!deepEqual(f, $field)) $field = f;
|
|
47
|
-
|
|
48
|
-
syncStoreToStore(
|
|
49
|
-
field,
|
|
50
|
-
internal,
|
|
51
|
-
(a, b) => {
|
|
52
|
-
let _clone = _.cloneDeep(a.state?.internal) || {};
|
|
53
|
-
|
|
54
|
-
// get parts from data
|
|
55
|
-
let item = items.find((i) => i._value === a?.data?.base);
|
|
56
|
-
if (!item) item = items[0];
|
|
57
|
-
if (item) {
|
|
58
|
-
_clone.selected_item_key = item?._key;
|
|
59
|
-
|
|
60
|
-
// set field_label if changed
|
|
61
|
-
if (!deepEqual(a?.data?.base_label, item?._label) && !a?.spec?.without_value_details) {
|
|
62
|
-
$field.data.base_label = item?._label;
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
// set field state if changed
|
|
66
|
-
if (!deepEqual(a?.state?.internal, _clone)) {
|
|
67
|
-
$field.state.internal = _clone;
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
return _clone;
|
|
72
|
-
},
|
|
73
|
-
(a, b) => {
|
|
74
|
-
let _clone = _.cloneDeep(a) || {};
|
|
75
|
-
// update the state
|
|
76
|
-
_.set(_clone, "state.internal", _.cloneDeep(b));
|
|
77
|
-
// update the data
|
|
78
|
-
let item = items.find((i) => i._key === b?.selected_item_key);
|
|
79
|
-
_.set(_clone, "data.base", item?._value);
|
|
80
|
-
if (!a?.spec?.without_value_details) _.set(_clone, "data.base_label", item?._label);
|
|
81
|
-
return _clone;
|
|
82
|
-
}
|
|
83
|
-
);
|
|
84
|
-
});
|
|
85
|
-
</script>
|
|
86
|
-
|
|
87
|
-
{#if $internal}
|
|
88
|
-
<div class="flex flex-col w-full text-surface-900 my-2">
|
|
89
|
-
<Label for="input_{state_key}" class=" block py-2 {hide_label ? 'hidden' : ''}">
|
|
90
|
-
{label}
|
|
91
|
-
</Label>
|
|
92
|
-
{#if items?.length}
|
|
93
|
-
<fieldset
|
|
94
|
-
class="flex flex-col border {!isValid
|
|
95
|
-
? 'border-warning-500'
|
|
96
|
-
: 'border-surface-100'} rounded-md px-2 py-1"
|
|
97
|
-
id="input_{state_key}"
|
|
98
|
-
>
|
|
99
|
-
{#each items as item}
|
|
100
|
-
<div class="py-1">
|
|
101
|
-
<RadioGroup.Root bind:value={$internal.selected_item_key} name={state_key}>
|
|
102
|
-
<div class="flex items-center space-x-2">
|
|
103
|
-
<RadioGroup.Item value={item._key} id="input_{item._key}" />
|
|
104
|
-
<Label for="input_{item._key}">{item._label}</Label>
|
|
105
|
-
</div>
|
|
106
|
-
|
|
107
|
-
<RadioGroup.Input name={state_key} />
|
|
108
|
-
</RadioGroup.Root>
|
|
109
|
-
</div>
|
|
110
|
-
{/each}
|
|
111
|
-
</fieldset>
|
|
112
|
-
{/if}
|
|
113
|
-
{#if validationMessage}
|
|
114
|
-
<Label class={!isValid ? `text-danger-500` : `text-success-500`}>{validationMessage}</Label>
|
|
115
|
-
{/if}
|
|
116
|
-
</div>
|
|
117
|
-
{/if}
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
/** @typedef {typeof __propDef.props} RadioProps */
|
|
2
|
-
/** @typedef {typeof __propDef.events} RadioEvents */
|
|
3
|
-
/** @typedef {typeof __propDef.slots} RadioSlots */
|
|
4
|
-
export default class Radio extends SvelteComponent<{
|
|
5
|
-
field: any;
|
|
6
|
-
}, {
|
|
7
|
-
[evt: string]: CustomEvent<any>;
|
|
8
|
-
}, {}> {
|
|
9
|
-
}
|
|
10
|
-
export type RadioProps = typeof __propDef.props;
|
|
11
|
-
export type RadioEvents = typeof __propDef.events;
|
|
12
|
-
export type RadioSlots = typeof __propDef.slots;
|
|
13
|
-
import { SvelteComponent } from "svelte";
|
|
14
|
-
declare const __propDef: {
|
|
15
|
-
props: {
|
|
16
|
-
field: any;
|
|
17
|
-
};
|
|
18
|
-
events: {
|
|
19
|
-
[evt: string]: CustomEvent<any>;
|
|
20
|
-
};
|
|
21
|
-
slots: {};
|
|
22
|
-
exports?: undefined;
|
|
23
|
-
bindings?: undefined;
|
|
24
|
-
};
|
|
25
|
-
export {};
|
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
<script>
|
|
2
|
-
import { syncStoreToStore } from "../../utils/syncing";
|
|
3
|
-
import { deepEqual } from "fast-equals";
|
|
4
|
-
import _ from "lodash-es";
|
|
5
|
-
import { onMount } from "svelte";
|
|
6
|
-
import { writable } from "svelte/store";
|
|
7
|
-
import { Form } from "../..";
|
|
8
|
-
|
|
9
|
-
export let form;
|
|
10
|
-
export let field;
|
|
11
|
-
|
|
12
|
-
let render_form = writable();
|
|
13
|
-
let dependencies = form.dependencies;
|
|
14
|
-
|
|
15
|
-
let initial_form;
|
|
16
|
-
$: updateInitForm($field?.state?.dynamic_fieldspec);
|
|
17
|
-
function updateInitForm(rf) {
|
|
18
|
-
let name = rf?.name ?? "rendered_field";
|
|
19
|
-
let f = _.cloneDeep(rf);
|
|
20
|
-
_.set(f, "details.keyname", "rendered_field");
|
|
21
|
-
let current_f = _.get(initial_form, `spec.fields.${name}`);
|
|
22
|
-
if (deepEqual(current_f, f)) return;
|
|
23
|
-
initial_form = _.cloneDeep({
|
|
24
|
-
spec: {
|
|
25
|
-
fields: {
|
|
26
|
-
[name]: f,
|
|
27
|
-
},
|
|
28
|
-
},
|
|
29
|
-
data: {
|
|
30
|
-
rendered_field: $field?.data?.base,
|
|
31
|
-
},
|
|
32
|
-
});
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
onMount(() => {
|
|
36
|
-
// set field values that aren't set yet
|
|
37
|
-
|
|
38
|
-
syncStoreToStore(
|
|
39
|
-
field,
|
|
40
|
-
render_form,
|
|
41
|
-
(a, b) => {
|
|
42
|
-
// return field internal state
|
|
43
|
-
let _clone = _.cloneDeep(b) || {};
|
|
44
|
-
_.set(_clone, "data.rendered_field", a?.data?.base);
|
|
45
|
-
return _clone;
|
|
46
|
-
},
|
|
47
|
-
(a, b) => {
|
|
48
|
-
let _clone = _.cloneDeep(a) || {};
|
|
49
|
-
_.set(_clone, "data.base", b?.data?.rendered_field ?? a?.data?.base);
|
|
50
|
-
return _clone;
|
|
51
|
-
}
|
|
52
|
-
);
|
|
53
|
-
});
|
|
54
|
-
</script>
|
|
55
|
-
|
|
56
|
-
{#if initial_form}
|
|
57
|
-
<Form bind:form={render_form} {initial_form} {dependencies} />
|
|
58
|
-
{/if}
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
/** @typedef {typeof __propDef.props} RenderfieldProps */
|
|
2
|
-
/** @typedef {typeof __propDef.events} RenderfieldEvents */
|
|
3
|
-
/** @typedef {typeof __propDef.slots} RenderfieldSlots */
|
|
4
|
-
export default class Renderfield extends SvelteComponent<{
|
|
5
|
-
form: any;
|
|
6
|
-
field: any;
|
|
7
|
-
}, {
|
|
8
|
-
[evt: string]: CustomEvent<any>;
|
|
9
|
-
}, {}> {
|
|
10
|
-
}
|
|
11
|
-
export type RenderfieldProps = typeof __propDef.props;
|
|
12
|
-
export type RenderfieldEvents = typeof __propDef.events;
|
|
13
|
-
export type RenderfieldSlots = typeof __propDef.slots;
|
|
14
|
-
import { SvelteComponent } from "svelte";
|
|
15
|
-
declare const __propDef: {
|
|
16
|
-
props: {
|
|
17
|
-
form: any;
|
|
18
|
-
field: any;
|
|
19
|
-
};
|
|
20
|
-
events: {
|
|
21
|
-
[evt: string]: CustomEvent<any>;
|
|
22
|
-
};
|
|
23
|
-
slots: {};
|
|
24
|
-
exports?: undefined;
|
|
25
|
-
bindings?: undefined;
|
|
26
|
-
};
|
|
27
|
-
export {};
|