@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,192 +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 GeoCoder from "../../thirdparty/mapbox/GeoCoder.svelte";
8
- import Map from "../../thirdparty/mapbox/Map.svelte";
9
- import MapMarker from "../../thirdparty/mapbox/MapMarker.svelte";
10
- import { controls } from "@beyonk/svelte-mapbox";
11
-
12
- export let form;
13
- export let field;
14
-
15
- const { GeolocateControl } = controls;
16
-
17
- const internal = writable();
18
- let dependencies = form?.dependencies;
19
- let mapboxAccessToken = dependencies?.map?.mapboxAccessToken;
20
- let mapboxStylesheetUrl = dependencies?.map?.mapboxStylesheetUrl;
21
- let geocoderResult;
22
- let browserLocation;
23
- let center;
24
- let mapComponent;
25
-
26
- $: state_key = $field.state?.state_key;
27
- $: label = $field.spec?.title;
28
- $: hide_label = $field.spec?.hide_label;
29
- $: isValid = !$field.state?.validation || $field.state?.validation?.valid;
30
- $: validationMessage = $field.state?.validation?.message;
31
- $: geolocateDisabled = $field.spec?.params?.hide_geolocate_button;
32
- $: auto_set_location = $field.spec?.params?.auto_set_location;
33
-
34
- function setValueCoords(lat, lng) {
35
- if (lat && lng) {
36
- let _clone = _.cloneDeep($internal) || {};
37
- _.set(_clone, "lat", lat);
38
- _.set(_clone, "lng", lng);
39
- $internal = _clone;
40
- }
41
- }
42
-
43
- function handleMapClick(e) {
44
- setValueCoords(e?.detail?.lat, e?.detail?.lng);
45
- }
46
-
47
- function setCurrentPosition(o) {
48
- let { latitude, longitude } = o?.coords || {};
49
- if (!latitude || !longitude) return;
50
- browserLocation = {
51
- lat: latitude,
52
- lng: longitude,
53
- };
54
-
55
- setValueCoords(latitude, longitude);
56
- mapComponent.flyTo({ center: [longitude, latitude] });
57
- center = [longitude, latitude];
58
- }
59
-
60
- function resetValues() {
61
- let _clone = _.cloneDeep($internal) || {};
62
- _.set(_clone, "lat", _clone?.initial_value?.lat ?? null);
63
- _.set(_clone, "lng", _clone?.initial_value?.lng ?? null);
64
- $internal = _clone;
65
- center = [$internal.initial_value?.lng ?? 18.5, $internal.initial_value?.lat ?? -34.0];
66
- mapComponent.flyTo({ center });
67
- }
68
-
69
- function handleGeolocate(o) {
70
- let { latitude, longitude } = o?.detail?.coords || {};
71
- setValueCoords(latitude, longitude);
72
- }
73
-
74
- onMount(() => {
75
- // set field values that aren't set yet
76
- let f = _.cloneDeep($field);
77
- let initial_value = f?.data?.base ?? null;
78
- let initial_data = {
79
- ...f?.data,
80
- base: initial_value,
81
- };
82
- let initial_state_internal = {
83
- ...f?.state?.internal,
84
- lat: initial_value?.lat ?? null,
85
- lng: initial_value?.lng ?? null,
86
- initial_value: _.cloneDeep(initial_value),
87
- };
88
- _.set(f, "data", initial_data);
89
- _.set(f, "state.internal", initial_state_internal);
90
- if (!deepEqual(f, $field)) $field = f;
91
-
92
- syncStoreToStore(
93
- field,
94
- internal,
95
- (a, b) => {
96
- let _clone = _.cloneDeep(a.state?.internal) || {};
97
-
98
- // get parts from data
99
- _clone.lat = a?.data?.base?.lat;
100
- _clone.lng = a?.data?.base?.lng;
101
-
102
- // set field state if changed
103
- if (!deepEqual(a?.state?.internal, _clone)) {
104
- $field.state.internal = _clone;
105
- }
106
-
107
- return _clone;
108
- },
109
- (a, b) => {
110
- let _clone = _.cloneDeep(a) || {};
111
- // update the state
112
- _.set(_clone, "state.internal", _.cloneDeep(b));
113
- // update the data
114
- _.set(_clone, "data.base.lat", b?.lat);
115
- _.set(_clone, "data.base.lng", b?.lng);
116
- _.set(_clone, "data.base.latlng", `${b?.lat},${b?.lng}`);
117
- return _clone;
118
- }
119
- );
120
-
121
- if (auto_set_location) {
122
- navigator.geolocation.getCurrentPosition(setCurrentPosition);
123
- } else {
124
- setTimeout(resetValues, 0);
125
- }
126
- });
127
- </script>
128
-
129
- {#if $internal}
130
- <div class="flex flex-col w-full text-surface-900 my-2">
131
- <label for="input_{state_key}" class="block text-label {hide_label ? 'hidden' : ''}">
132
- {label}
133
- </label>
134
- <div>
135
- <button
136
- type="button"
137
- on:click={resetValues}
138
- class="text-sm text-surface-300 hover:underline hover:text-surface-500"
139
- >
140
- <i class="fa-regular fa-undo" /> Reset
141
- </button>
142
- </div>
143
- <div class="relative mt-2 rounded-md">
144
- <div class="w-full h-72">
145
- <Map
146
- {center}
147
- zoom={14}
148
- on:click={handleMapClick}
149
- {geocoderResult}
150
- {mapboxAccessToken}
151
- {mapboxStylesheetUrl}
152
- bind:mapComponent
153
- >
154
- <div class="absolute left-2 top-2">
155
- <GeoCoder onResult={(r) => (geocoderResult = r)} {mapboxAccessToken} />
156
- </div>
157
- {#if !geolocateDisabled}
158
- <GeolocateControl position="top-right" on:geolocate={(o) => handleGeolocate(o)} />
159
- {/if}
160
- {#if browserLocation}
161
- <MapMarker lat={browserLocation.lat} lng={browserLocation.lng}>
162
- <div class="relative w-0">
163
- <div
164
- class="bg-surface-0 p-4 rounded-xl rounded-bl-none shadow-2xl border absolute bottom-0 whitespace-nowrap"
165
- >
166
- <i class="fa-solid fa-user text-4xl" />
167
- </div>
168
- </div>
169
- </MapMarker>
170
- {/if}
171
- {#if $internal?.lat && $internal?.lng}
172
- <MapMarker lat={$internal?.lat} lng={$internal?.lng}>
173
- <div class="relative w-0">
174
- <div
175
- class="bg-surface-0 p-4 rounded-xl rounded-bl-none shadow-2xl border absolute bottom-0 whitespace-nowrap"
176
- >
177
- lat: {$internal?.lat?.toString()?.substring(0, 6)} <br />
178
- lng: {$internal?.lng?.toString()?.substring(0, 6)}
179
- </div>
180
- </div>
181
- </MapMarker>
182
- {/if}
183
- </Map>
184
- </div>
185
- </div>
186
- {#if validationMessage}
187
- <p class="text-label {!isValid ? `text-danger-500` : `text-success-500`}">
188
- {validationMessage}
189
- </p>
190
- {/if}
191
- </div>
192
- {/if}
@@ -1,27 +0,0 @@
1
- /** @typedef {typeof __propDef.props} MapProps */
2
- /** @typedef {typeof __propDef.events} MapEvents */
3
- /** @typedef {typeof __propDef.slots} MapSlots */
4
- export default class Map extends SvelteComponent<{
5
- form: any;
6
- field: any;
7
- }, {
8
- [evt: string]: CustomEvent<any>;
9
- }, {}> {
10
- }
11
- export type MapProps = typeof __propDef.props;
12
- export type MapEvents = typeof __propDef.events;
13
- export type MapSlots = 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,77 +0,0 @@
1
- <script>
2
- import { merge, startCase } from "lodash-es";
3
- import { onMount } from "svelte";
4
-
5
- import { Checkbox } from "@stubber/ui/checkbox";
6
- import { Label } from "@stubber/ui/label";
7
-
8
- export let field;
9
-
10
- $: state_key = $field.state?.state_key;
11
- $: label = $field.spec?.title;
12
- $: hide_label = $field.spec?.hide_label;
13
- $: isValid = !$field.state?.validation || $field.state?.validation?.valid;
14
- $: validationMessage = $field.state?.validation?.message;
15
- $: options = $field.spec?.params?.options; // options is an object with a label property, value property (optional) and checked property
16
-
17
- // $: console.log("field", $field);
18
-
19
- // $: console.log("options", options);
20
- onMount(() => {
21
- /// merge all options into data.base
22
- field.update((f) => {
23
- if (!f.data) {
24
- f.data = {};
25
- }
26
- if (!f.data.base) {
27
- f.data.base = {};
28
- }
29
-
30
- const merged_base = merge({}, options, f.data.base);
31
- // ensure all options have a checked property
32
-
33
- Object.entries(merged_base).forEach(([key, item]) => {
34
- if (typeof item === "object" && item.checked === undefined) {
35
- item.checked = false;
36
- }
37
- });
38
-
39
- f.data.base = merged_base;
40
- return f;
41
- });
42
- });
43
-
44
- //: boolean | "indeterminate" | undefined
45
- const on_change = (new_value, key) => {
46
- field.update((f) => {
47
- if (!f.data.base[key]) {
48
- f.data.base[key] = {};
49
- }
50
- f.data.base[key].checked = new_value;
51
- return f;
52
- });
53
- };
54
- </script>
55
-
56
- <div class="flex flex-col w-full {!isValid ? `text-danger-500` : `text-surface-900`}">
57
- <Label class="block pb-2 {hide_label ? 'hidden' : ''}">
58
- {label}
59
- </Label>
60
- {#each Object.entries(options) as [key, item] (key)}
61
- <div class="flex space-x-3 relative mt-2">
62
- <Checkbox
63
- id="input_{state_key}_{key}"
64
- name={key}
65
- checked={$field.data?.base?.[key]?.checked || false}
66
- onCheckedChange={(new_value) => on_change(new_value, key)}
67
- />
68
-
69
- <Label for="input_{state_key}_${key}" class=" {hide_label ? 'hidden' : ''}">
70
- {item.label || startCase(key)}
71
- </Label>
72
- </div>
73
- {/each}
74
- {#if validationMessage}
75
- <Label class={!isValid ? `text-danger-500` : `text-success-500`}>{validationMessage}</Label>
76
- {/if}
77
- </div>
@@ -1,25 +0,0 @@
1
- /** @typedef {typeof __propDef.props} MulticheckboxProps */
2
- /** @typedef {typeof __propDef.events} MulticheckboxEvents */
3
- /** @typedef {typeof __propDef.slots} MulticheckboxSlots */
4
- export default class Multicheckbox extends SvelteComponent<{
5
- field: any;
6
- }, {
7
- [evt: string]: CustomEvent<any>;
8
- }, {}> {
9
- }
10
- export type MulticheckboxProps = typeof __propDef.props;
11
- export type MulticheckboxEvents = typeof __propDef.events;
12
- export type MulticheckboxSlots = 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,86 +0,0 @@
1
- <script>
2
- import * as utils from "../../utils/index.js";
3
- import Field from "../../Field.svelte";
4
-
5
- export let form;
6
- export let field;
7
-
8
- let current_page_index = 0;
9
-
10
- $: state_key = $field.state?.state_key;
11
- $: fields = utils.getFieldsToRender($field.spec?.fields);
12
- $: isValid = !$field.state?.validation || $field.state?.validation?.valid;
13
- $: validationMessage = $field.state?.validation?.message;
14
- $: allChildrenConditionsChecked = Object.values($form?.state || {})
15
- ?.filter((s) => s.parent_field_state_key === state_key)
16
- ?.reduce((acc, child_state) => {
17
- if (!child_state?.conditions_checked) acc = false;
18
- return acc;
19
- }, true);
20
- </script>
21
-
22
- {#if fields?.length}
23
- <div class={!allChildrenConditionsChecked ? "invisible absolute" : ""}>
24
- <div class="border border-surface-200">
25
- <div class="p-2 py-3 overflow-x-auto whitespace-nowrap">
26
- <div class="flex items-center">
27
- {#each fields as p, i}
28
- <button
29
- type="button"
30
- on:click={() => (current_page_index = i)}
31
- class="flex items-center mr-4 {current_page_index === i
32
- ? 'text-surface-900'
33
- : 'text-surface-500'}"
34
- >
35
- <span
36
- class="mr-1 flex items-center justify-center w-6 h-6 rounded-full {current_page_index ===
37
- i
38
- ? 'bg-primary-500 text-surface-0'
39
- : 'bg-surface-100 text-surface-700'}"
40
- >
41
- {i + 1}
42
- </span>
43
- </button>
44
- {/each}
45
- </div>
46
- </div>
47
- {#if fields}
48
- {#each fields as initial_field_spec, index (initial_field_spec.__key)}
49
- <div
50
- class="p-6 border-y border-surface-200 {current_page_index !== index
51
- ? 'invisible absolute'
52
- : ''}"
53
- >
54
- <Field {form} {initial_field_spec} parent_field={field} />
55
- </div>
56
- {/each}
57
- {/if}
58
- <div class="flex items-center justify-between text-sm p-2">
59
- <button
60
- type="button"
61
- class="bg-surface-300 px-4 py-1 rounded text-surface-0 {current_page_index === 0
62
- ? 'invisible'
63
- : ''}"
64
- on:click={() => (current_page_index = current_page_index - 1)}
65
- >
66
- Back
67
- </button>
68
- <button
69
- type="button"
70
- class="bg-surface-300 px-4 py-1 rounded text-surface-0 {current_page_index >=
71
- fields.length - 1
72
- ? 'invisible'
73
- : ''}"
74
- on:click={() => (current_page_index = current_page_index + 1)}
75
- >
76
- Next
77
- </button>
78
- </div>
79
- </div>
80
- {#if validationMessage}
81
- <p class="text-label {!isValid ? `text-danger-500` : `text-success-500`}">
82
- {validationMessage}
83
- </p>
84
- {/if}
85
- </div>
86
- {/if}
@@ -1,27 +0,0 @@
1
- /** @typedef {typeof __propDef.props} MultistepProps */
2
- /** @typedef {typeof __propDef.events} MultistepEvents */
3
- /** @typedef {typeof __propDef.slots} MultistepSlots */
4
- export default class Multistep extends SvelteComponent<{
5
- form: any;
6
- field: any;
7
- }, {
8
- [evt: string]: CustomEvent<any>;
9
- }, {}> {
10
- }
11
- export type MultistepProps = typeof __propDef.props;
12
- export type MultistepEvents = typeof __propDef.events;
13
- export type MultistepSlots = 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,92 +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 { Textarea } from "@stubber/ui/textarea";
9
- import { Label } from "@stubber/ui/label";
10
- import { Button } from "@stubber/ui/button";
11
-
12
- export let field;
13
-
14
- const internal = writable();
15
-
16
- $: state_key = $field.state?.state_key;
17
- $: label = $field.spec?.title;
18
- $: hide_label = $field.spec?.hide_label;
19
- $: isValid = !$field.state?.validation || $field.state?.validation?.valid;
20
- $: validationMessage = $field.state?.validation?.message;
21
-
22
- onMount(() => {
23
- // set field values that aren't set yet
24
- let f = _.cloneDeep($field);
25
- let initial_value = f?.data?.base ?? "";
26
- let initial_data = {
27
- ...f?.data,
28
- base: initial_value,
29
- };
30
- let initial_state_internal = {
31
- ...f?.state?.internal,
32
- raw: initial_value,
33
- };
34
- _.set(f, "data", initial_data);
35
- _.set(f, "state.internal", initial_state_internal);
36
- if (!deepEqual(f, $field)) $field = f;
37
-
38
- syncStoreToStore(
39
- field,
40
- internal,
41
- (a, b) => {
42
- let _clone = _.cloneDeep(a.state?.internal) || {};
43
-
44
- // get parts from data
45
- _clone.raw = a?.data?.base;
46
-
47
- // set field state if changed
48
- if (!deepEqual(a?.state?.internal, _clone)) {
49
- $field.state.internal = _clone;
50
- }
51
-
52
- return _clone;
53
- },
54
- (a, b) => {
55
- let _clone = _.cloneDeep(a) || {};
56
- // update the state
57
- _.set(_clone, "state.internal", _.cloneDeep(b));
58
- // update the data
59
- _.set(_clone, "data.base", b?.raw);
60
- return _clone;
61
- },
62
- null,
63
- 300
64
- );
65
- });
66
- </script>
67
-
68
- {#if $internal}
69
- <div class="flex flex-col w-full text-surface-900 my-2">
70
- <Label for="input_{state_key}" class=" {hide_label ? 'hidden' : ''}">
71
- {label}
72
- </Label>
73
- <div class="relative mt-2">
74
- <Textarea
75
- on:keydown={(e) => {
76
- if (e.key === "Enter") {
77
- e.stopPropagation();
78
- }
79
- }}
80
- rows="3"
81
- id="input_{state_key}"
82
- placeholder={label}
83
- class="block w-full {!isValid ? 'ring-danger-500' : 'ring-surface-300 '} "
84
- name={state_key}
85
- bind:value={$internal.raw}
86
- />
87
- </div>
88
- {#if validationMessage}
89
- <Label class={!isValid ? `text-danger-500` : `text-success-500`}>{validationMessage}</Label>
90
- {/if}
91
- </div>
92
- {/if}
@@ -1,25 +0,0 @@
1
- /** @typedef {typeof __propDef.props} NoteProps */
2
- /** @typedef {typeof __propDef.events} NoteEvents */
3
- /** @typedef {typeof __propDef.slots} NoteSlots */
4
- export default class Note extends SvelteComponent<{
5
- field: any;
6
- }, {
7
- [evt: string]: CustomEvent<any>;
8
- }, {}> {
9
- }
10
- export type NoteProps = typeof __propDef.props;
11
- export type NoteEvents = typeof __propDef.events;
12
- export type NoteSlots = 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,119 +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 { Label } from "@stubber/ui/label";
9
- import { Input } from "@stubber/ui/input";
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
- $: min_setting = $field.spec.params.min ?? false;
21
- $: max_setting = $field.spec.params.max ?? false;
22
- $: step_setting = $field.spec.params.step ?? 1;
23
- $: has_step = $field.spec.params.step ?? false;
24
-
25
- onMount(() => {
26
- // set field values that aren't set yet
27
- let f = _.cloneDeep($field);
28
- let initial_value = f?.data?.base ?? "";
29
- let initial_data = {
30
- ...f?.data,
31
- base: initial_value,
32
- };
33
- let initial_state_internal = {
34
- ...f?.state?.internal,
35
- raw: initial_value,
36
- };
37
- _.set(f, "data", initial_data);
38
- _.set(f, "state.internal", initial_state_internal);
39
- if (!deepEqual(f, $field)) $field = f;
40
-
41
- syncStoreToStore(
42
- field,
43
- internal,
44
- (a, b) => {
45
- let _clone = _.cloneDeep(a.state?.internal) || {};
46
-
47
- // get parts from data
48
- _clone.raw = a?.data?.base;
49
-
50
- // set field state if changed
51
- if (!deepEqual(a?.state?.internal, _clone)) {
52
- $field.state.internal = _clone;
53
- }
54
-
55
- return _clone;
56
- },
57
- (a, b) => {
58
- let _clone = _.cloneDeep(a) || {};
59
-
60
- let raw = b.raw;
61
-
62
- // check if raw is valid
63
- if (max_setting != false && raw > max_setting) {
64
- raw = max_setting;
65
- }
66
- if (min_setting != false && raw < min_setting) {
67
- raw = min_setting;
68
- }
69
- if (has_step) {
70
- raw = Math.round(raw / step_setting) * step_setting;
71
- }
72
-
73
- // if raw is different to b.raw, update internal
74
- if (raw !== b.raw) $internal.raw = raw;
75
-
76
- b.raw = raw;
77
-
78
- // update the state
79
- _.set(_clone, "state.internal", _.cloneDeep(b));
80
- // update the data
81
- _.set(_clone, "data.base", raw);
82
- return _clone;
83
- },
84
- null,
85
- 300
86
- );
87
- });
88
- </script>
89
-
90
- {#if $internal}
91
- <div class="flex flex-col w-full text-surface-900 my-2">
92
- <Label for="input_{state_key}" class="block py-2{hide_label ? 'hidden' : ''}">
93
- {label}
94
- </Label>
95
- <div class="relative rounded-md">
96
- <Input
97
- on:keydown={(e) => {
98
- if (e.key === "Enter") {
99
- e.preventDefault();
100
- }
101
- }}
102
- type="number"
103
- id="input_{state_key}"
104
- placeholder={label}
105
- class="block w-full {!isValid
106
- ? 'ring-danger-500'
107
- : 'ring-surface-300 focus:ring-primary-400'} "
108
- name={state_key}
109
- min={min_setting}
110
- max={max_setting}
111
- step={step_setting}
112
- bind:value={$internal.raw}
113
- />
114
- </div>
115
- {#if validationMessage}
116
- <Label class={!isValid ? `text-danger-500` : `text-success-500`}>{validationMessage}</Label>
117
- {/if}
118
- </div>
119
- {/if}