@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.
Files changed (254) hide show
  1. package/dist/{fields2 → form-fields}/sub/currency-field.svelte +2 -3
  2. package/dist/{fields2 → form-fields}/sub/select-field.svelte +6 -3
  3. package/dist/{fields2 → form-fields}/utils.d.ts +1 -0
  4. package/dist/{fields2 → form-fields}/utils.js +9 -1
  5. package/dist/utils/input_regex_mask.d.ts +3 -0
  6. package/dist/utils/input_regex_mask.js +25 -0
  7. package/package.json +4 -8
  8. package/dist/Field.svelte +0 -36
  9. package/dist/Field.svelte.d.ts +0 -33
  10. package/dist/Form.svelte +0 -34
  11. package/dist/Form.svelte.d.ts +0 -31
  12. package/dist/NullFieldWrapper.svelte +0 -6
  13. package/dist/NullFieldWrapper.svelte.d.ts +0 -27
  14. package/dist/fields/component_parts/arraybuilder/FieldWrapper.svelte +0 -74
  15. package/dist/fields/component_parts/arraybuilder/FieldWrapper.svelte.d.ts +0 -31
  16. package/dist/fields/component_parts/fieldbuilder/FieldWrapper.svelte +0 -8
  17. package/dist/fields/component_parts/fieldbuilder/FieldWrapper.svelte.d.ts +0 -27
  18. package/dist/fields/components/AgGrid.svelte +0 -46
  19. package/dist/fields/components/AgGrid.svelte.d.ts +0 -20
  20. package/dist/fields/components/Arraybuilder.svelte +0 -98
  21. package/dist/fields/components/Arraybuilder.svelte.d.ts +0 -27
  22. package/dist/fields/components/Checkbox.svelte +0 -89
  23. package/dist/fields/components/Checkbox.svelte.d.ts +0 -25
  24. package/dist/fields/components/CheckboxAutocomplete.svelte +0 -95
  25. package/dist/fields/components/CheckboxAutocomplete.svelte.d.ts +0 -25
  26. package/dist/fields/components/Code.svelte +0 -133
  27. package/dist/fields/components/Code.svelte.d.ts +0 -18
  28. package/dist/fields/components/Contactselector.svelte +0 -71
  29. package/dist/fields/components/Contactselector.svelte.d.ts +0 -27
  30. package/dist/fields/components/Currency.svelte +0 -264
  31. package/dist/fields/components/Currency.svelte.d.ts +0 -25
  32. package/dist/fields/components/Dataindication.svelte +0 -31
  33. package/dist/fields/components/Dataindication.svelte.d.ts +0 -25
  34. package/dist/fields/components/Date.svelte +0 -97
  35. package/dist/fields/components/Date.svelte.d.ts +0 -25
  36. package/dist/fields/components/Datetime.svelte +0 -97
  37. package/dist/fields/components/Datetime.svelte.d.ts +0 -25
  38. package/dist/fields/components/Email.svelte +0 -125
  39. package/dist/fields/components/Email.svelte.d.ts +0 -25
  40. package/dist/fields/components/Fieldbuilder.svelte +0 -343
  41. package/dist/fields/components/Fieldbuilder.svelte.d.ts +0 -27
  42. package/dist/fields/components/Fieldsbuilder.svelte +0 -122
  43. package/dist/fields/components/Fieldsbuilder.svelte.d.ts +0 -27
  44. package/dist/fields/components/File.svelte +0 -231
  45. package/dist/fields/components/File.svelte.d.ts +0 -27
  46. package/dist/fields/components/Heading.svelte +0 -17
  47. package/dist/fields/components/Heading.svelte.d.ts +0 -25
  48. package/dist/fields/components/Hidden.svelte +0 -7
  49. package/dist/fields/components/Hidden.svelte.d.ts +0 -25
  50. package/dist/fields/components/Hiddenlocation.svelte +0 -28
  51. package/dist/fields/components/Hiddenlocation.svelte.d.ts +0 -25
  52. package/dist/fields/components/Html.svelte +0 -13
  53. package/dist/fields/components/Html.svelte.d.ts +0 -25
  54. package/dist/fields/components/Jsoneditor.svelte +0 -133
  55. package/dist/fields/components/Jsoneditor.svelte.d.ts +0 -25
  56. package/dist/fields/components/Map.svelte +0 -192
  57. package/dist/fields/components/Map.svelte.d.ts +0 -27
  58. package/dist/fields/components/Multicheckbox.svelte +0 -77
  59. package/dist/fields/components/Multicheckbox.svelte.d.ts +0 -25
  60. package/dist/fields/components/Multistep.svelte +0 -86
  61. package/dist/fields/components/Multistep.svelte.d.ts +0 -27
  62. package/dist/fields/components/Note.svelte +0 -92
  63. package/dist/fields/components/Note.svelte.d.ts +0 -25
  64. package/dist/fields/components/Number.svelte +0 -119
  65. package/dist/fields/components/Number.svelte.d.ts +0 -25
  66. package/dist/fields/components/Objectbuilder.svelte +0 -154
  67. package/dist/fields/components/Objectbuilder.svelte.d.ts +0 -27
  68. package/dist/fields/components/Qrcodescanner.svelte +0 -196
  69. package/dist/fields/components/Qrcodescanner.svelte.d.ts +0 -25
  70. package/dist/fields/components/Radio.svelte +0 -117
  71. package/dist/fields/components/Radio.svelte.d.ts +0 -25
  72. package/dist/fields/components/Renderfield.svelte +0 -58
  73. package/dist/fields/components/Renderfield.svelte.d.ts +0 -27
  74. package/dist/fields/components/Screenrecorder.svelte +0 -276
  75. package/dist/fields/components/Screenrecorder.svelte.d.ts +0 -27
  76. package/dist/fields/components/Screenshot.svelte +0 -269
  77. package/dist/fields/components/Screenshot.svelte.d.ts +0 -27
  78. package/dist/fields/components/Scrollandreaddisplay.svelte +0 -122
  79. package/dist/fields/components/Scrollandreaddisplay.svelte.d.ts +0 -25
  80. package/dist/fields/components/Section.svelte +0 -87
  81. package/dist/fields/components/Section.svelte.d.ts +0 -27
  82. package/dist/fields/components/Select.svelte +0 -161
  83. package/dist/fields/components/Select.svelte.d.ts +0 -31
  84. package/dist/fields/components/Selectresource.svelte +0 -57
  85. package/dist/fields/components/Selectresource.svelte.d.ts +0 -27
  86. package/dist/fields/components/Signature.svelte +0 -152
  87. package/dist/fields/components/Signature.svelte.d.ts +0 -27
  88. package/dist/fields/components/Slider.svelte +0 -101
  89. package/dist/fields/components/Slider.svelte.d.ts +0 -25
  90. package/dist/fields/components/SmartText.svelte +0 -351
  91. package/dist/fields/components/SmartText.svelte.d.ts +0 -25
  92. package/dist/fields/components/Telephone.svelte +0 -156
  93. package/dist/fields/components/Telephone.svelte.d.ts +0 -25
  94. package/dist/fields/components/Text.svelte +0 -107
  95. package/dist/fields/components/Text.svelte.d.ts +0 -25
  96. package/dist/fields/components/Voicenote.svelte +0 -267
  97. package/dist/fields/components/Voicenote.svelte.d.ts +0 -27
  98. package/dist/fields/components/index.d.ts +0 -84
  99. package/dist/fields/components/index.js +0 -85
  100. package/dist/fields/definitions/all.json +0 -38
  101. package/dist/fields/definitions/arraybuilder.json +0 -39
  102. package/dist/fields/definitions/checkbox.json +0 -44
  103. package/dist/fields/definitions/code.json +0 -15
  104. package/dist/fields/definitions/contactselector.json +0 -15
  105. package/dist/fields/definitions/currency.json +0 -42
  106. package/dist/fields/definitions/dataindication.json +0 -16
  107. package/dist/fields/definitions/date.json +0 -16
  108. package/dist/fields/definitions/datetime.json +0 -15
  109. package/dist/fields/definitions/email.json +0 -16
  110. package/dist/fields/definitions/fieldbuilder.json +0 -64
  111. package/dist/fields/definitions/fieldsbuilder.json +0 -38
  112. package/dist/fields/definitions/file.json +0 -42
  113. package/dist/fields/definitions/grid.json +0 -47
  114. package/dist/fields/definitions/heading.json +0 -38
  115. package/dist/fields/definitions/hidden.json +0 -89
  116. package/dist/fields/definitions/hiddenlocation.json +0 -15
  117. package/dist/fields/definitions/html.json +0 -34
  118. package/dist/fields/definitions/index.d.ts +0 -90
  119. package/dist/fields/definitions/index.js +0 -99
  120. package/dist/fields/definitions/jsoneditor.json +0 -33
  121. package/dist/fields/definitions/map.json +0 -36
  122. package/dist/fields/definitions/multicheckbox.json +0 -47
  123. package/dist/fields/definitions/multistep.json +0 -35
  124. package/dist/fields/definitions/note.json +0 -16
  125. package/dist/fields/definitions/number.json +0 -42
  126. package/dist/fields/definitions/objectbuilder.json +0 -39
  127. package/dist/fields/definitions/placeholder.json +0 -15
  128. package/dist/fields/definitions/qrcodescanner.json +0 -16
  129. package/dist/fields/definitions/radio.json +0 -47
  130. package/dist/fields/definitions/renderfield.json +0 -36
  131. package/dist/fields/definitions/richtext.json +0 -16
  132. package/dist/fields/definitions/screenrecorder.json +0 -42
  133. package/dist/fields/definitions/screenshot.json +0 -42
  134. package/dist/fields/definitions/scrollandreaddisplay.json +0 -49
  135. package/dist/fields/definitions/section.json +0 -50
  136. package/dist/fields/definitions/select.json +0 -47
  137. package/dist/fields/definitions/selectresource.json +0 -48
  138. package/dist/fields/definitions/signature.json +0 -16
  139. package/dist/fields/definitions/slider.json +0 -78
  140. package/dist/fields/definitions/smarttext.json +0 -101
  141. package/dist/fields/definitions/telephone.json +0 -16
  142. package/dist/fields/definitions/text.json +0 -35
  143. package/dist/fields/definitions/validfieldtype.json +0 -220
  144. package/dist/fields/definitions/voicenote.json +0 -43
  145. package/dist/index.d.ts +0 -2
  146. package/dist/index.js +0 -3
  147. package/dist/thirdparty/mapbox/GeoCoder.svelte +0 -10
  148. package/dist/thirdparty/mapbox/GeoCoder.svelte.d.ts +0 -27
  149. package/dist/thirdparty/mapbox/Map.svelte +0 -30
  150. package/dist/thirdparty/mapbox/Map.svelte.d.ts +0 -22
  151. package/dist/thirdparty/mapbox/MapMarker.svelte +0 -13
  152. package/dist/thirdparty/mapbox/MapMarker.svelte.d.ts +0 -33
  153. package/dist/utils/createField.d.ts +0 -6
  154. package/dist/utils/createField.js +0 -33
  155. package/dist/utils/createForm.d.ts +0 -1
  156. package/dist/utils/createForm.js +0 -501
  157. package/dist/utils/index.d.ts +0 -18
  158. package/dist/utils/index.js +0 -126
  159. package/dist/utils/syncing.d.ts +0 -11
  160. package/dist/utils/syncing.js +0 -134
  161. /package/dist/{fields2 → form-fields}/FieldExprToggle.svelte +0 -0
  162. /package/dist/{fields2 → form-fields}/FieldExprToggle.svelte.d.ts +0 -0
  163. /package/dist/{fields2 → form-fields}/FieldLabel.svelte +0 -0
  164. /package/dist/{fields2 → form-fields}/FieldLabel.svelte.d.ts +0 -0
  165. /package/dist/{fields2 → form-fields}/FieldMessage.svelte +0 -0
  166. /package/dist/{fields2 → form-fields}/FieldMessage.svelte.d.ts +0 -0
  167. /package/dist/{fields2 → form-fields}/Form.svelte +0 -0
  168. /package/dist/{fields2 → form-fields}/Form.svelte.d.ts +0 -0
  169. /package/dist/{fields2 → form-fields}/fileserver.d.ts +0 -0
  170. /package/dist/{fields2 → form-fields}/fileserver.js +0 -0
  171. /package/dist/{fields2 → form-fields}/form-field.svelte +0 -0
  172. /package/dist/{fields2 → form-fields}/form-field.svelte.d.ts +0 -0
  173. /package/dist/{fields2 → form-fields}/index.d.ts +0 -0
  174. /package/dist/{fields2 → form-fields}/index.js +0 -0
  175. /package/dist/{fields2 → form-fields}/interfaces.d.ts +0 -0
  176. /package/dist/{fields2 → form-fields}/interfaces.js +0 -0
  177. /package/dist/{fields2 → form-fields}/sub/array-builder-field.svelte +0 -0
  178. /package/dist/{fields2 → form-fields}/sub/array-builder-field.svelte.d.ts +0 -0
  179. /package/dist/{fields2 → form-fields}/sub/checkbox-autocomplete.svelte +0 -0
  180. /package/dist/{fields2 → form-fields}/sub/checkbox-autocomplete.svelte.d.ts +0 -0
  181. /package/dist/{fields2 → form-fields}/sub/checkbox-field.svelte +0 -0
  182. /package/dist/{fields2 → form-fields}/sub/checkbox-field.svelte.d.ts +0 -0
  183. /package/dist/{fields2 → form-fields}/sub/code-field.svelte +0 -0
  184. /package/dist/{fields2 → form-fields}/sub/code-field.svelte.d.ts +0 -0
  185. /package/dist/{fields2 → form-fields}/sub/contact-selector-field.svelte +0 -0
  186. /package/dist/{fields2 → form-fields}/sub/contact-selector-field.svelte.d.ts +0 -0
  187. /package/dist/{fields2 → form-fields}/sub/currency-field.svelte.d.ts +0 -0
  188. /package/dist/{fields2 → form-fields}/sub/data-indication-field.svelte +0 -0
  189. /package/dist/{fields2 → form-fields}/sub/data-indication-field.svelte.d.ts +0 -0
  190. /package/dist/{fields2 → form-fields}/sub/date-field.svelte +0 -0
  191. /package/dist/{fields2 → form-fields}/sub/date-field.svelte.d.ts +0 -0
  192. /package/dist/{fields2 → form-fields}/sub/date-time-field.svelte +0 -0
  193. /package/dist/{fields2 → form-fields}/sub/date-time-field.svelte.d.ts +0 -0
  194. /package/dist/{fields2 → form-fields}/sub/email-field.svelte +0 -0
  195. /package/dist/{fields2 → form-fields}/sub/email-field.svelte.d.ts +0 -0
  196. /package/dist/{fields2 → form-fields}/sub/field-builder-field.svelte +0 -0
  197. /package/dist/{fields2 → form-fields}/sub/field-builder-field.svelte.d.ts +0 -0
  198. /package/dist/{fields2 → form-fields}/sub/file-field.svelte +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 {};