@stubber/form-fields 1.7.8 → 1.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (254) hide show
  1. package/dist/{fields2 → form-fields}/sub/currency-field.svelte +2 -3
  2. package/dist/{fields2 → form-fields}/sub/file-field.svelte +17 -25
  3. package/dist/{fields2 → form-fields}/sub/select-field.svelte +6 -3
  4. package/dist/{fields2 → form-fields}/utils.d.ts +1 -0
  5. package/dist/{fields2 → form-fields}/utils.js +9 -1
  6. package/dist/utils/input_regex_mask.d.ts +3 -0
  7. package/dist/utils/input_regex_mask.js +25 -0
  8. package/package.json +4 -8
  9. package/dist/Field.svelte +0 -36
  10. package/dist/Field.svelte.d.ts +0 -33
  11. package/dist/Form.svelte +0 -34
  12. package/dist/Form.svelte.d.ts +0 -31
  13. package/dist/NullFieldWrapper.svelte +0 -6
  14. package/dist/NullFieldWrapper.svelte.d.ts +0 -27
  15. package/dist/fields/component_parts/arraybuilder/FieldWrapper.svelte +0 -74
  16. package/dist/fields/component_parts/arraybuilder/FieldWrapper.svelte.d.ts +0 -31
  17. package/dist/fields/component_parts/fieldbuilder/FieldWrapper.svelte +0 -8
  18. package/dist/fields/component_parts/fieldbuilder/FieldWrapper.svelte.d.ts +0 -27
  19. package/dist/fields/components/AgGrid.svelte +0 -46
  20. package/dist/fields/components/AgGrid.svelte.d.ts +0 -20
  21. package/dist/fields/components/Arraybuilder.svelte +0 -98
  22. package/dist/fields/components/Arraybuilder.svelte.d.ts +0 -27
  23. package/dist/fields/components/Checkbox.svelte +0 -89
  24. package/dist/fields/components/Checkbox.svelte.d.ts +0 -25
  25. package/dist/fields/components/CheckboxAutocomplete.svelte +0 -95
  26. package/dist/fields/components/CheckboxAutocomplete.svelte.d.ts +0 -25
  27. package/dist/fields/components/Code.svelte +0 -133
  28. package/dist/fields/components/Code.svelte.d.ts +0 -18
  29. package/dist/fields/components/Contactselector.svelte +0 -71
  30. package/dist/fields/components/Contactselector.svelte.d.ts +0 -27
  31. package/dist/fields/components/Currency.svelte +0 -264
  32. package/dist/fields/components/Currency.svelte.d.ts +0 -25
  33. package/dist/fields/components/Dataindication.svelte +0 -31
  34. package/dist/fields/components/Dataindication.svelte.d.ts +0 -25
  35. package/dist/fields/components/Date.svelte +0 -97
  36. package/dist/fields/components/Date.svelte.d.ts +0 -25
  37. package/dist/fields/components/Datetime.svelte +0 -97
  38. package/dist/fields/components/Datetime.svelte.d.ts +0 -25
  39. package/dist/fields/components/Email.svelte +0 -125
  40. package/dist/fields/components/Email.svelte.d.ts +0 -25
  41. package/dist/fields/components/Fieldbuilder.svelte +0 -343
  42. package/dist/fields/components/Fieldbuilder.svelte.d.ts +0 -27
  43. package/dist/fields/components/Fieldsbuilder.svelte +0 -122
  44. package/dist/fields/components/Fieldsbuilder.svelte.d.ts +0 -27
  45. package/dist/fields/components/File.svelte +0 -231
  46. package/dist/fields/components/File.svelte.d.ts +0 -27
  47. package/dist/fields/components/Heading.svelte +0 -17
  48. package/dist/fields/components/Heading.svelte.d.ts +0 -25
  49. package/dist/fields/components/Hidden.svelte +0 -7
  50. package/dist/fields/components/Hidden.svelte.d.ts +0 -25
  51. package/dist/fields/components/Hiddenlocation.svelte +0 -28
  52. package/dist/fields/components/Hiddenlocation.svelte.d.ts +0 -25
  53. package/dist/fields/components/Html.svelte +0 -13
  54. package/dist/fields/components/Html.svelte.d.ts +0 -25
  55. package/dist/fields/components/Jsoneditor.svelte +0 -133
  56. package/dist/fields/components/Jsoneditor.svelte.d.ts +0 -25
  57. package/dist/fields/components/Map.svelte +0 -192
  58. package/dist/fields/components/Map.svelte.d.ts +0 -27
  59. package/dist/fields/components/Multicheckbox.svelte +0 -77
  60. package/dist/fields/components/Multicheckbox.svelte.d.ts +0 -25
  61. package/dist/fields/components/Multistep.svelte +0 -86
  62. package/dist/fields/components/Multistep.svelte.d.ts +0 -27
  63. package/dist/fields/components/Note.svelte +0 -92
  64. package/dist/fields/components/Note.svelte.d.ts +0 -25
  65. package/dist/fields/components/Number.svelte +0 -119
  66. package/dist/fields/components/Number.svelte.d.ts +0 -25
  67. package/dist/fields/components/Objectbuilder.svelte +0 -154
  68. package/dist/fields/components/Objectbuilder.svelte.d.ts +0 -27
  69. package/dist/fields/components/Qrcodescanner.svelte +0 -196
  70. package/dist/fields/components/Qrcodescanner.svelte.d.ts +0 -25
  71. package/dist/fields/components/Radio.svelte +0 -117
  72. package/dist/fields/components/Radio.svelte.d.ts +0 -25
  73. package/dist/fields/components/Renderfield.svelte +0 -58
  74. package/dist/fields/components/Renderfield.svelte.d.ts +0 -27
  75. package/dist/fields/components/Screenrecorder.svelte +0 -276
  76. package/dist/fields/components/Screenrecorder.svelte.d.ts +0 -27
  77. package/dist/fields/components/Screenshot.svelte +0 -269
  78. package/dist/fields/components/Screenshot.svelte.d.ts +0 -27
  79. package/dist/fields/components/Scrollandreaddisplay.svelte +0 -122
  80. package/dist/fields/components/Scrollandreaddisplay.svelte.d.ts +0 -25
  81. package/dist/fields/components/Section.svelte +0 -87
  82. package/dist/fields/components/Section.svelte.d.ts +0 -27
  83. package/dist/fields/components/Select.svelte +0 -161
  84. package/dist/fields/components/Select.svelte.d.ts +0 -31
  85. package/dist/fields/components/Selectresource.svelte +0 -57
  86. package/dist/fields/components/Selectresource.svelte.d.ts +0 -27
  87. package/dist/fields/components/Signature.svelte +0 -152
  88. package/dist/fields/components/Signature.svelte.d.ts +0 -27
  89. package/dist/fields/components/Slider.svelte +0 -101
  90. package/dist/fields/components/Slider.svelte.d.ts +0 -25
  91. package/dist/fields/components/SmartText.svelte +0 -351
  92. package/dist/fields/components/SmartText.svelte.d.ts +0 -25
  93. package/dist/fields/components/Telephone.svelte +0 -156
  94. package/dist/fields/components/Telephone.svelte.d.ts +0 -25
  95. package/dist/fields/components/Text.svelte +0 -107
  96. package/dist/fields/components/Text.svelte.d.ts +0 -25
  97. package/dist/fields/components/Voicenote.svelte +0 -267
  98. package/dist/fields/components/Voicenote.svelte.d.ts +0 -27
  99. package/dist/fields/components/index.d.ts +0 -84
  100. package/dist/fields/components/index.js +0 -85
  101. package/dist/fields/definitions/all.json +0 -38
  102. package/dist/fields/definitions/arraybuilder.json +0 -39
  103. package/dist/fields/definitions/checkbox.json +0 -44
  104. package/dist/fields/definitions/code.json +0 -15
  105. package/dist/fields/definitions/contactselector.json +0 -15
  106. package/dist/fields/definitions/currency.json +0 -42
  107. package/dist/fields/definitions/dataindication.json +0 -16
  108. package/dist/fields/definitions/date.json +0 -16
  109. package/dist/fields/definitions/datetime.json +0 -15
  110. package/dist/fields/definitions/email.json +0 -16
  111. package/dist/fields/definitions/fieldbuilder.json +0 -64
  112. package/dist/fields/definitions/fieldsbuilder.json +0 -38
  113. package/dist/fields/definitions/file.json +0 -42
  114. package/dist/fields/definitions/grid.json +0 -47
  115. package/dist/fields/definitions/heading.json +0 -38
  116. package/dist/fields/definitions/hidden.json +0 -89
  117. package/dist/fields/definitions/hiddenlocation.json +0 -15
  118. package/dist/fields/definitions/html.json +0 -34
  119. package/dist/fields/definitions/index.d.ts +0 -90
  120. package/dist/fields/definitions/index.js +0 -99
  121. package/dist/fields/definitions/jsoneditor.json +0 -33
  122. package/dist/fields/definitions/map.json +0 -36
  123. package/dist/fields/definitions/multicheckbox.json +0 -47
  124. package/dist/fields/definitions/multistep.json +0 -35
  125. package/dist/fields/definitions/note.json +0 -16
  126. package/dist/fields/definitions/number.json +0 -42
  127. package/dist/fields/definitions/objectbuilder.json +0 -39
  128. package/dist/fields/definitions/placeholder.json +0 -15
  129. package/dist/fields/definitions/qrcodescanner.json +0 -16
  130. package/dist/fields/definitions/radio.json +0 -47
  131. package/dist/fields/definitions/renderfield.json +0 -36
  132. package/dist/fields/definitions/richtext.json +0 -16
  133. package/dist/fields/definitions/screenrecorder.json +0 -42
  134. package/dist/fields/definitions/screenshot.json +0 -42
  135. package/dist/fields/definitions/scrollandreaddisplay.json +0 -49
  136. package/dist/fields/definitions/section.json +0 -50
  137. package/dist/fields/definitions/select.json +0 -47
  138. package/dist/fields/definitions/selectresource.json +0 -48
  139. package/dist/fields/definitions/signature.json +0 -16
  140. package/dist/fields/definitions/slider.json +0 -78
  141. package/dist/fields/definitions/smarttext.json +0 -101
  142. package/dist/fields/definitions/telephone.json +0 -16
  143. package/dist/fields/definitions/text.json +0 -35
  144. package/dist/fields/definitions/validfieldtype.json +0 -220
  145. package/dist/fields/definitions/voicenote.json +0 -43
  146. package/dist/index.d.ts +0 -2
  147. package/dist/index.js +0 -3
  148. package/dist/thirdparty/mapbox/GeoCoder.svelte +0 -10
  149. package/dist/thirdparty/mapbox/GeoCoder.svelte.d.ts +0 -27
  150. package/dist/thirdparty/mapbox/Map.svelte +0 -30
  151. package/dist/thirdparty/mapbox/Map.svelte.d.ts +0 -22
  152. package/dist/thirdparty/mapbox/MapMarker.svelte +0 -13
  153. package/dist/thirdparty/mapbox/MapMarker.svelte.d.ts +0 -33
  154. package/dist/utils/createField.d.ts +0 -6
  155. package/dist/utils/createField.js +0 -33
  156. package/dist/utils/createForm.d.ts +0 -1
  157. package/dist/utils/createForm.js +0 -501
  158. package/dist/utils/index.d.ts +0 -18
  159. package/dist/utils/index.js +0 -126
  160. package/dist/utils/syncing.d.ts +0 -11
  161. package/dist/utils/syncing.js +0 -134
  162. /package/dist/{fields2 → form-fields}/FieldExprToggle.svelte +0 -0
  163. /package/dist/{fields2 → form-fields}/FieldExprToggle.svelte.d.ts +0 -0
  164. /package/dist/{fields2 → form-fields}/FieldLabel.svelte +0 -0
  165. /package/dist/{fields2 → form-fields}/FieldLabel.svelte.d.ts +0 -0
  166. /package/dist/{fields2 → form-fields}/FieldMessage.svelte +0 -0
  167. /package/dist/{fields2 → form-fields}/FieldMessage.svelte.d.ts +0 -0
  168. /package/dist/{fields2 → form-fields}/Form.svelte +0 -0
  169. /package/dist/{fields2 → form-fields}/Form.svelte.d.ts +0 -0
  170. /package/dist/{fields2 → form-fields}/fileserver.d.ts +0 -0
  171. /package/dist/{fields2 → form-fields}/fileserver.js +0 -0
  172. /package/dist/{fields2 → form-fields}/form-field.svelte +0 -0
  173. /package/dist/{fields2 → form-fields}/form-field.svelte.d.ts +0 -0
  174. /package/dist/{fields2 → form-fields}/index.d.ts +0 -0
  175. /package/dist/{fields2 → form-fields}/index.js +0 -0
  176. /package/dist/{fields2 → form-fields}/interfaces.d.ts +0 -0
  177. /package/dist/{fields2 → form-fields}/interfaces.js +0 -0
  178. /package/dist/{fields2 → form-fields}/sub/array-builder-field.svelte +0 -0
  179. /package/dist/{fields2 → form-fields}/sub/array-builder-field.svelte.d.ts +0 -0
  180. /package/dist/{fields2 → form-fields}/sub/checkbox-autocomplete.svelte +0 -0
  181. /package/dist/{fields2 → form-fields}/sub/checkbox-autocomplete.svelte.d.ts +0 -0
  182. /package/dist/{fields2 → form-fields}/sub/checkbox-field.svelte +0 -0
  183. /package/dist/{fields2 → form-fields}/sub/checkbox-field.svelte.d.ts +0 -0
  184. /package/dist/{fields2 → form-fields}/sub/code-field.svelte +0 -0
  185. /package/dist/{fields2 → form-fields}/sub/code-field.svelte.d.ts +0 -0
  186. /package/dist/{fields2 → form-fields}/sub/contact-selector-field.svelte +0 -0
  187. /package/dist/{fields2 → form-fields}/sub/contact-selector-field.svelte.d.ts +0 -0
  188. /package/dist/{fields2 → form-fields}/sub/currency-field.svelte.d.ts +0 -0
  189. /package/dist/{fields2 → form-fields}/sub/data-indication-field.svelte +0 -0
  190. /package/dist/{fields2 → form-fields}/sub/data-indication-field.svelte.d.ts +0 -0
  191. /package/dist/{fields2 → form-fields}/sub/date-field.svelte +0 -0
  192. /package/dist/{fields2 → form-fields}/sub/date-field.svelte.d.ts +0 -0
  193. /package/dist/{fields2 → form-fields}/sub/date-time-field.svelte +0 -0
  194. /package/dist/{fields2 → form-fields}/sub/date-time-field.svelte.d.ts +0 -0
  195. /package/dist/{fields2 → form-fields}/sub/email-field.svelte +0 -0
  196. /package/dist/{fields2 → form-fields}/sub/email-field.svelte.d.ts +0 -0
  197. /package/dist/{fields2 → form-fields}/sub/field-builder-field.svelte +0 -0
  198. /package/dist/{fields2 → form-fields}/sub/field-builder-field.svelte.d.ts +0 -0
  199. /package/dist/{fields2 → form-fields}/sub/file-field.svelte.d.ts +0 -0
  200. /package/dist/{fields2 → form-fields}/sub/grid-field.svelte +0 -0
  201. /package/dist/{fields2 → form-fields}/sub/grid-field.svelte.d.ts +0 -0
  202. /package/dist/{fields2 → form-fields}/sub/heading-field.svelte +0 -0
  203. /package/dist/{fields2 → form-fields}/sub/heading-field.svelte.d.ts +0 -0
  204. /package/dist/{fields2 → form-fields}/sub/hidden-field.svelte +0 -0
  205. /package/dist/{fields2 → form-fields}/sub/hidden-field.svelte.d.ts +0 -0
  206. /package/dist/{fields2 → form-fields}/sub/hidden-location-field.svelte +0 -0
  207. /package/dist/{fields2 → form-fields}/sub/hidden-location-field.svelte.d.ts +0 -0
  208. /package/dist/{fields2 → form-fields}/sub/html-field.svelte +0 -0
  209. /package/dist/{fields2 → form-fields}/sub/html-field.svelte.d.ts +0 -0
  210. /package/dist/{fields2 → form-fields}/sub/json-editor-bound.svelte +0 -0
  211. /package/dist/{fields2 → form-fields}/sub/json-editor-bound.svelte.d.ts +0 -0
  212. /package/dist/{fields2 → form-fields}/sub/jsoneditor-field.svelte +0 -0
  213. /package/dist/{fields2 → form-fields}/sub/jsoneditor-field.svelte.d.ts +0 -0
  214. /package/dist/{fields2 → form-fields}/sub/map-field.svelte +0 -0
  215. /package/dist/{fields2 → form-fields}/sub/map-field.svelte.d.ts +0 -0
  216. /package/dist/{fields2 → form-fields}/sub/multi-checkbox-field.svelte +0 -0
  217. /package/dist/{fields2 → form-fields}/sub/multi-checkbox-field.svelte.d.ts +0 -0
  218. /package/dist/{fields2 → form-fields}/sub/multistep-field.svelte +0 -0
  219. /package/dist/{fields2 → form-fields}/sub/multistep-field.svelte.d.ts +0 -0
  220. /package/dist/{fields2 → form-fields}/sub/note-field.svelte +0 -0
  221. /package/dist/{fields2 → form-fields}/sub/note-field.svelte.d.ts +0 -0
  222. /package/dist/{fields2 → form-fields}/sub/number-field.svelte +0 -0
  223. /package/dist/{fields2 → form-fields}/sub/number-field.svelte.d.ts +0 -0
  224. /package/dist/{fields2 → form-fields}/sub/object-builder-field.svelte +0 -0
  225. /package/dist/{fields2 → form-fields}/sub/object-builder-field.svelte.d.ts +0 -0
  226. /package/dist/{fields2 → form-fields}/sub/qr-code-scanner-field.svelte +0 -0
  227. /package/dist/{fields2 → form-fields}/sub/qr-code-scanner-field.svelte.d.ts +0 -0
  228. /package/dist/{fields2 → form-fields}/sub/radio-field.svelte +0 -0
  229. /package/dist/{fields2 → form-fields}/sub/radio-field.svelte.d.ts +0 -0
  230. /package/dist/{fields2 → form-fields}/sub/screenrecorder-field.svelte +0 -0
  231. /package/dist/{fields2 → form-fields}/sub/screenrecorder-field.svelte.d.ts +0 -0
  232. /package/dist/{fields2 → form-fields}/sub/screenshot-field.svelte +0 -0
  233. /package/dist/{fields2 → form-fields}/sub/screenshot-field.svelte.d.ts +0 -0
  234. /package/dist/{fields2 → form-fields}/sub/scroll-and-read-display-field.svelte +0 -0
  235. /package/dist/{fields2 → form-fields}/sub/scroll-and-read-display-field.svelte.d.ts +0 -0
  236. /package/dist/{fields2 → form-fields}/sub/section-field.svelte +0 -0
  237. /package/dist/{fields2 → form-fields}/sub/section-field.svelte.d.ts +0 -0
  238. /package/dist/{fields2 → form-fields}/sub/select-field.svelte.d.ts +0 -0
  239. /package/dist/{fields2 → form-fields}/sub/selectresource-field.svelte +0 -0
  240. /package/dist/{fields2 → form-fields}/sub/selectresource-field.svelte.d.ts +0 -0
  241. /package/dist/{fields2 → form-fields}/sub/signature-field.svelte +0 -0
  242. /package/dist/{fields2 → form-fields}/sub/signature-field.svelte.d.ts +0 -0
  243. /package/dist/{fields2 → form-fields}/sub/slider-field.svelte +0 -0
  244. /package/dist/{fields2 → form-fields}/sub/slider-field.svelte.d.ts +0 -0
  245. /package/dist/{fields2 → form-fields}/sub/smart-text-field.svelte +0 -0
  246. /package/dist/{fields2 → form-fields}/sub/smart-text-field.svelte.d.ts +0 -0
  247. /package/dist/{fields2 → form-fields}/sub/telephone-field.svelte +0 -0
  248. /package/dist/{fields2 → form-fields}/sub/telephone-field.svelte.d.ts +0 -0
  249. /package/dist/{fields2 → form-fields}/sub/text-field.svelte +0 -0
  250. /package/dist/{fields2 → form-fields}/sub/text-field.svelte.d.ts +0 -0
  251. /package/dist/{fields2 → form-fields}/sub/voicenote-field.svelte +0 -0
  252. /package/dist/{fields2 → form-fields}/sub/voicenote-field.svelte.d.ts +0 -0
  253. /package/dist/{fields2 → form-fields}/validations/validate_field.d.ts +0 -0
  254. /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 {};