@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,125 +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
-
21
- $: onRawChange($internal?.raw);
22
- function onRawChange(r) {
23
- let _clone = _.cloneDeep($internal) || {};
24
- let formatted = r?.toLowerCase()?.trim();
25
-
26
- // use regex to check valid email address and to get the username and domain parts
27
- let regex =
28
- /^(([^<>()[\]\.,;:\s@\"]+(\.[^<>()[\]\.,;:\s@\"]+)*)|(\".+\"))@(([^<>()[\]\.,;:\s@\"]+\.)+[^<>()[\]\.,;:\s@\"]{2,})$/i;
29
- let is_valid_email = regex.test(formatted);
30
- let username = is_valid_email ? formatted.split("@")[0] : null;
31
- let domain = is_valid_email ? formatted.split("@")[1] : null;
32
- _.set(_clone, "formatted", formatted);
33
- _.set(_clone, "is_valid_email", is_valid_email);
34
- _.set(_clone, "username", username);
35
- _.set(_clone, "domain", domain);
36
- $internal = _clone;
37
- }
38
-
39
- onMount(() => {
40
- // set field values that aren't set yet
41
- let f = _.cloneDeep($field);
42
- let raw = f?.data?.base ?? "";
43
- let formatted = raw?.toLowerCase()?.trim();
44
- let initial_data = {
45
- ...f?.data,
46
- base: formatted,
47
- };
48
- let initial_state_internal = {
49
- ...f?.state?.internal,
50
- raw,
51
- formatted,
52
- };
53
- _.set(f, "data", initial_data);
54
- _.set(f, "state.internal", initial_state_internal);
55
- if (!deepEqual(f, $field)) $field = f;
56
-
57
- syncStoreToStore(
58
- field,
59
- internal,
60
- (a, b) => {
61
- let _clone = _.cloneDeep(a.state?.internal) || {};
62
-
63
- // get parts from data
64
- _clone.formatted = a?.data?.base;
65
- _clone.raw = _clone.formatted;
66
- if (!a?.spec?.without_value_details) {
67
- _clone.is_valid_email = a?.data?.base_details?.is_valid_email ?? _clone?.is_valid_email;
68
- _clone.username = a?.data?.base_details?.username ?? _clone?.username;
69
- _clone.domain = a?.data?.base_details?.domain ?? _clone?.domain;
70
- }
71
-
72
- // set field state if changed
73
- if (!deepEqual(a?.state?.internal, _clone)) {
74
- $field.state.internal = _clone;
75
- }
76
-
77
- return _clone;
78
- },
79
- (a, b) => {
80
- let _clone = _.cloneDeep(a) || {};
81
- // update the state
82
- _.set(_clone, "state.internal", _.cloneDeep(b));
83
- // update the data
84
- _.set(_clone, "data.base", b?.formatted);
85
- if (!a?.spec?.without_value_details) {
86
- _.set(_clone, "data.base_details.is_valid_email", b?.is_valid_email);
87
- _.set(_clone, "data.base_details.domain", b?.domain);
88
- _.set(_clone, "data.base_details.username", b?.username);
89
- _.set(_clone, "data.base_details.raw", b?.raw);
90
- }
91
- return _clone;
92
- },
93
- null,
94
- 300
95
- );
96
- });
97
- </script>
98
-
99
- {#if $internal}
100
- <div class="flex flex-col w-full text-surface-900 my-2">
101
- <Label for="input_{state_key}" class="block py-2 {hide_label ? 'hidden' : ''}">
102
- {label}
103
- </Label>
104
- <div class="relative rounded-md">
105
- <Input
106
- on:keydown={(e) => {
107
- if (e.key === "Enter") {
108
- e.preventDefault();
109
- }
110
- }}
111
- type="text"
112
- id="input_{state_key}"
113
- placeholder={label}
114
- class="block w-full {!isValid ? 'ring-danger-500' : 'ring-surface-300'}"
115
- name={state_key}
116
- bind:value={$internal.raw}
117
- />
118
- </div>
119
- {#if validationMessage}
120
- <Label class=" {!isValid ? `text-danger-500` : `text-success-500`}">
121
- {validationMessage}
122
- </Label>
123
- {/if}
124
- </div>
125
- {/if}
@@ -1,25 +0,0 @@
1
- /** @typedef {typeof __propDef.props} EmailProps */
2
- /** @typedef {typeof __propDef.events} EmailEvents */
3
- /** @typedef {typeof __propDef.slots} EmailSlots */
4
- export default class Email extends SvelteComponent<{
5
- field: any;
6
- }, {
7
- [evt: string]: CustomEvent<any>;
8
- }, {}> {
9
- }
10
- export type EmailProps = typeof __propDef.props;
11
- export type EmailEvents = typeof __propDef.events;
12
- export type EmailSlots = 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,343 +0,0 @@
1
- <script>
2
- import { Form } from "../..";
3
- import _ from "lodash-es";
4
- import { selectableFieldtypes, definitions } from "../definitions/index.js";
5
- import { syncStoreToStore } from "../../utils/syncing";
6
- import { writable } from "svelte/store";
7
- import { onMount, getContext } from "svelte";
8
- import { deepEqual } from "fast-equals";
9
- import FieldWrapper from "../component_parts/fieldbuilder/FieldWrapper.svelte";
10
- import * as utils from "../../utils/index.js";
11
-
12
- import { Checkbox } from "@stubber/ui/checkbox";
13
- import { Label } from "@stubber/ui/label";
14
- import { Button } from "@stubber/ui/button";
15
- import * as Accordion from "@stubber/ui/accordion";
16
-
17
- export let form;
18
- export let field;
19
-
20
- $: state_key = $field.state?.state_key;
21
- $: label = $field.spec?.title;
22
- $: hide_label = $field.spec?.hide_label;
23
- $: isValid = !$field.state?.validation || $field.state?.validation?.valid;
24
- $: validationMessage = $field.state?.validation?.message;
25
- $: spec_fieldtype_editable = $field.spec?.params?.spec_fieldtype_editable ?? true;
26
- $: spec_name_editable = $field.spec?.params?.spec_name_editable ?? true;
27
- $: spec_fieldtype = $field.spec?.params?.spec_fieldtype;
28
- $: spec_name = $field.spec?.params?.spec_name;
29
-
30
- let views = {
31
- demo: !$field.spec?.params?.hide_demo && !$field.spec?.params?.demo_collapsed,
32
- settings: true,
33
- };
34
- let dependencies = form.dependencies;
35
- let default_field_wrapper = getContext("stubber-form-fields-default-wrapper");
36
-
37
- let all_form = writable();
38
- let initial_all_form;
39
- $: updateInitialAllForm(spec_fieldtype, spec_name, spec_fieldtype_editable, spec_name_editable);
40
- function updateInitialAllForm(ft, n, fte, ne) {
41
- let update_all_form = _.cloneDeep(initial_all_form || {});
42
- _.set(update_all_form, "spec.fields.name", {
43
- fieldtype: "dataindication",
44
- });
45
- _.set(update_all_form, "spec.fields.fieldtype", {
46
- fieldtype: "dataindication",
47
- });
48
- if (ne) {
49
- _.set(update_all_form, "spec.fields.name.fieldtype", "text");
50
- }
51
- if (fte) {
52
- _.set(update_all_form, "spec.fields.fieldtype.fieldtype", "select");
53
- _.set(update_all_form, "spec.fields.fieldtype.params.options", selectableFieldtypes);
54
- }
55
- if (!deepEqual(initial_all_form, update_all_form)) {
56
- let fieldtype = $field?.data?.base?.fieldtype ?? ft;
57
- if (!fte) fieldtype = ft ?? fieldtype ?? "text";
58
- let name = $field?.data?.base?.name ?? n;
59
- if (!ne) name = n ?? name ?? "field";
60
- _.set(update_all_form, "data.name", name);
61
- _.set(update_all_form, "data.fieldtype", fieldtype);
62
- initial_all_form = _.cloneDeep(update_all_form);
63
- }
64
- }
65
-
66
- let settings_form = writable();
67
- let initial_settings_form;
68
- $: updateInitialSettingsForm($all_form);
69
- function updateInitialSettingsForm(af) {
70
- let fieldtype = af?.data?.fieldtype;
71
- let name = af?.data?.name;
72
- if (!definitions[fieldtype]?.settings_form) return;
73
-
74
- let update_settings_form = _.cloneDeep(initial_settings_form || {});
75
-
76
- let settings_form_spec = _.cloneDeep(definitions[fieldtype]?.settings_form);
77
- let valid_fieldtype_settings_form = _.cloneDeep(definitions?._valid_fieldtype?.settings_form);
78
- let spec = _.merge({}, settings_form_spec, valid_fieldtype_settings_form);
79
- _.set(update_settings_form, "spec", spec);
80
-
81
- if (!deepEqual(initial_settings_form, update_settings_form)) {
82
- let data = _.cloneDeep(_.cloneDeep($settings_form?.data));
83
- _.set(data, "spec.fieldtype", fieldtype);
84
- _.set(data, "spec.name", name);
85
- _.set(update_settings_form, "data", data);
86
- initial_settings_form = _.cloneDeep(update_settings_form);
87
- }
88
- }
89
-
90
- let advanced_form = writable();
91
- let initial_advanced_form = {
92
- spec: {
93
- fields: {
94
- spec: {
95
- fieldtype: "jsoneditor",
96
- },
97
- },
98
- },
99
- data: {
100
- spec: $field?.data?.base,
101
- },
102
- };
103
-
104
- let demo_data_form = writable();
105
- let demo_form = writable();
106
- let initial_demo_form;
107
- $: debounceUpdateInitialDemoForm($settings_form?.data?.spec);
108
- const debounceUpdateInitialDemoForm = utils.debounce(updateInitialDemoForm, 100);
109
- function updateInitialDemoForm(s) {
110
- let fieldname = s?.name ?? "";
111
- let spec = _.cloneDeep(s);
112
- _.unset(spec, "conditions");
113
- let update = {
114
- spec: {
115
- fields: {
116
- [fieldname]: spec,
117
- },
118
- },
119
- };
120
-
121
- if (!deepEqual(initial_demo_form, update)) initial_demo_form = update;
122
- }
123
-
124
- onMount(() => {
125
- // set field values that aren't set yet
126
- let f = _.cloneDeep($field);
127
- let initial_value = !_.isObject(f?.data?.base) ? {} : f?.data?.base;
128
- let initial_data = {
129
- ...f?.data,
130
- base: initial_value,
131
- };
132
- _.set(f, "data", initial_data);
133
- if (!deepEqual(f, $field)) $field = f;
134
-
135
- syncStoreToStore(
136
- field,
137
- all_form,
138
- (a, b) => {
139
- let _clone = _.cloneDeep(b) || {};
140
- let spec = _.cloneDeep(a?.data?.base);
141
-
142
- // lowercase and remove all whitespace and replace with _
143
- let name = a?.data?.base?.name?.toLowerCase().replace(/\s/g, "_");
144
- let fieldtype = a?.data?.base?.fieldtype?.toLowerCase().replace(/\s/g, "_");
145
- if (name !== a?.data?.base?.name) $field.data.base.name = name;
146
- if (fieldtype !== a?.data?.base?.fieldtype) $field.data.base.fieldtype = fieldtype;
147
-
148
- _.set(_clone, "data.name", name);
149
- _.set(_clone, "data.fieldtype", fieldtype);
150
- return _clone;
151
- },
152
- (a, b) => {
153
- let _clone = _.cloneDeep(a) || {};
154
- _.set(_clone, "data.base.name", b?.data?.name);
155
- _.set(_clone, "data.base.fieldtype", b?.data?.fieldtype);
156
- return _clone;
157
- }
158
- );
159
-
160
- syncStoreToStore(
161
- field,
162
- settings_form,
163
- (a, b) => {
164
- let _clone = _.cloneDeep(b) || {};
165
- let spec = _.cloneDeep(a?.data?.base);
166
- spec.__key = spec.name;
167
- _.set(_clone, "data.spec", spec);
168
- return _clone;
169
- },
170
- (a, b) => {
171
- let _clone = _.cloneDeep(a) || {};
172
- let spec = _.cloneDeep(b?.data?.spec);
173
- spec.__key = spec.name;
174
- _.set(_clone, "data.base", spec);
175
- return _clone;
176
- }
177
- );
178
-
179
- syncStoreToStore(
180
- field,
181
- advanced_form,
182
- (a, b) => {
183
- let _clone = _.cloneDeep(b) || {};
184
- let spec = _.cloneDeep(a?.data?.base);
185
- spec.__key = spec.name;
186
- _.set(_clone, "data.spec", spec);
187
- return _clone;
188
- },
189
- (a, b) => {
190
- let _clone = _.cloneDeep(a) || {};
191
- let spec = _.cloneDeep(b?.data?.spec);
192
- spec.__key = spec.name;
193
- if (spec.__key !== b?.data?.spec?.__key) {
194
- $advanced_form.data.spec.__key = spec.__key;
195
- }
196
- _.set(_clone, "data.base", spec);
197
- return _clone;
198
- }
199
- );
200
-
201
- syncStoreToStore(
202
- demo_form,
203
- demo_data_form,
204
- (a, b) => {
205
- let _clone = _.cloneDeep(b) || {};
206
- _.set(_clone, "data.data", a?.data);
207
- return _clone;
208
- },
209
- (a, b) => {
210
- return a;
211
- }
212
- );
213
- });
214
- </script>
215
-
216
- <div class="flex flex-col w-full text-surface-900 my-2">
217
- <Label for="input_{state_key}" class="block text-label {hide_label ? 'hidden' : ''}">
218
- {label}
219
- </Label>
220
- <div class>
221
- <div class="bg-white">
222
- {#if $field?.data?.base?.name}
223
- <div class="text-xs text-surface-700 p-1 border-b">
224
- {$field.data.base.name}
225
- </div>
226
- {/if}
227
- <div class="flex items-center justify-start">
228
- {#if !$field?.spec?.params?.hide_demo}
229
- <button type="button" on:click={() => (views.demo = !views.demo)}>
230
- <div class="p-2 hover:bg-surface-100 rounded-sm">
231
- <div class="text-sm italic text-surface-500 flex justify-between items-center">
232
- <i class="fa-regular fa-input-pipe {views.demo ? 'text-primary-500' : ''}" />
233
- </div>
234
- </div>
235
- </button>
236
- {/if}
237
- <button type="button" on:click={() => (views.settings = !views.settings)}>
238
- <div class="p-2 hover:bg-surface-100 rounded-sm">
239
- <div class="text-sm italic text-surface-500 flex justify-between items-center">
240
- <i class="fa-regular fa-gear {views.settings ? 'text-primary-500' : ''}" />
241
- </div>
242
- </div>
243
- </button>
244
- <button type="button" on:click={() => (views.demo_data = !views.demo_data)}>
245
- <div class="p-2 hover:bg-surface-100 rounded-sm">
246
- <div class="text-sm italic text-surface-500 flex justify-between items-center">
247
- <i class="fa-regular fa-database {views.demo_data ? 'text-primary-500' : ''}" />
248
- </div>
249
- </div>
250
- </button>
251
- <button type="button" on:click={() => (views.advanced = !views.advanced)}>
252
- <div class="p-2 hover:bg-surface-100 rounded-sm">
253
- <div class="text-sm italic text-surface-500 flex justify-between items-center">
254
- <i class="fa-regular fa-brackets-curly {views.advanced ? 'text-primary-500' : ''}" />
255
- </div>
256
- </div>
257
- </button>
258
- </div>
259
- </div>
260
- {#if initial_demo_form}
261
- <div
262
- class="{views.demo && !$field.spec?.params?.hide_demo
263
- ? 'p-2'
264
- : 'invisible absolute'} min-h-[100px]"
265
- >
266
- {#if !$settings_form?.data?.spec?.name || !$settings_form?.data?.spec?.fieldtype}
267
- <div class="text-surface-500 text-xs italic">
268
- Cannot show field without a field name and field type
269
- </div>
270
- {:else}
271
- <div class="p-2">
272
- <Form
273
- bind:form={demo_form}
274
- initial_form={initial_demo_form}
275
- {dependencies}
276
- field_wrapper={default_field_wrapper}
277
- />
278
- </div>
279
- {/if}
280
- </div>
281
- {:else}
282
- <div class="p-2 text-sm text-surface-500 italic min-h-[100px]">Initializing...</div>
283
- {/if}
284
- <div class={views.settings ? "border-t p-2" : "invisible absolute"}>
285
- <div class="text-surface-500 text-xs pb-2 italic">
286
- <button type="button" on:click={() => (views.settings = false)}
287
- ><i class="fa-regular fa-circle-xmark text-sm" /></button
288
- > Field Settings
289
- </div>
290
- <div class="p-2">
291
- {#if initial_all_form}
292
- <Form
293
- bind:form={all_form}
294
- initial_form={initial_all_form}
295
- {dependencies}
296
- field_wrapper={FieldWrapper}
297
- />
298
- {/if}
299
- {#if initial_settings_form}
300
- <Form
301
- bind:form={settings_form}
302
- initial_form={initial_settings_form}
303
- {dependencies}
304
- field_wrapper={FieldWrapper}
305
- />
306
- {/if}
307
- </div>
308
- </div>
309
- <div class={views.demo_data ? "border-t p-2" : "invisible absolute"}>
310
- <div class="text-surface-500 text-xs pb-2 italic">
311
- <button type="button" on:click={() => (views.demo_data = false)}
312
- ><i class="fa-regular fa-circle-xmark text-sm" /></button
313
- > Demo Field Data
314
- </div>
315
- {#if initial_demo_form}
316
- <Form
317
- bind:form={demo_data_form}
318
- initial_form={{
319
- spec: {
320
- fields: {
321
- data: { fieldtype: "jsoneditor", hide_label: true, params: { readonly: true } },
322
- },
323
- },
324
- }}
325
- {dependencies}
326
- />
327
- {/if}
328
- </div>
329
- <div class={views.advanced ? "border-t p-2" : "invisible absolute"}>
330
- <div class="text-surface-500 text-xs pb-2 italic">
331
- <button type="button" on:click={() => (views.advanced = false)}
332
- ><i class="fa-regular fa-circle-xmark text-sm" /></button
333
- > Advanced Field Settings
334
- </div>
335
- {#if initial_advanced_form}
336
- <Form bind:form={advanced_form} initial_form={initial_advanced_form} {dependencies} />
337
- {/if}
338
- </div>
339
- </div>
340
- {#if validationMessage}
341
- <Label class={!isValid ? `text-danger-500` : `text-success-500`}>{validationMessage}</Label>
342
- {/if}
343
- </div>
@@ -1,27 +0,0 @@
1
- /** @typedef {typeof __propDef.props} FieldbuilderProps */
2
- /** @typedef {typeof __propDef.events} FieldbuilderEvents */
3
- /** @typedef {typeof __propDef.slots} FieldbuilderSlots */
4
- export default class Fieldbuilder extends SvelteComponent<{
5
- form: any;
6
- field: any;
7
- }, {
8
- [evt: string]: CustomEvent<any>;
9
- }, {}> {
10
- }
11
- export type FieldbuilderProps = typeof __propDef.props;
12
- export type FieldbuilderEvents = typeof __propDef.events;
13
- export type FieldbuilderSlots = 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,122 +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
- $: isValid = !$field.state?.validation || $field.state?.validation?.valid;
20
- $: validationMessage = $field.state?.validation?.message;
21
-
22
- let settings_form = writable();
23
-
24
- let initial_form;
25
-
26
- onMount(() => {
27
- // set field values that aren't set yet
28
- let f = _.cloneDeep($field);
29
- let initial_value = f?.data?.base ?? {};
30
- let initial_data = _.merge(
31
- {
32
- base: initial_value,
33
- },
34
- f?.data
35
- );
36
- _.set(f, "data", initial_data);
37
- if (!deepEqual(f, $field)) $field = f;
38
-
39
- initial_form = {
40
- spec: {
41
- fields: {
42
- fields: {
43
- fieldtype: "arraybuilder",
44
- hide_label: true,
45
- params: {
46
- new_entry_field: {
47
- fieldtype: "fieldbuilder",
48
- params: {
49
- spec_fieldtype_editable: true,
50
- spec_name_editable: true,
51
- hide_demo: f.spec?.params?.hide_demo,
52
- demo_collapsed: f.spec?.params?.demo_collapsed,
53
- },
54
- },
55
- },
56
- },
57
- },
58
- },
59
- data: {
60
- fields: _.cloneDeep(
61
- Object.entries(initial_value)
62
- .sort((a, b) => a[1]?.__order - b[1]?.__order)
63
- .map((e) => {
64
- return {
65
- ...e[1],
66
- name: e[0],
67
- __key: e[0],
68
- };
69
- })
70
- ),
71
- },
72
- };
73
-
74
- syncStoreToStore(
75
- field,
76
- settings_form,
77
- (a, b) => {
78
- let _clone = _.cloneDeep(b) || {};
79
-
80
- let fields = Object.entries(a?.data?.base)
81
- .sort((a, b) => a[1]?.__order - b[1]?.__order)
82
- .map((e) => {
83
- return {
84
- ...e[1],
85
- name: e[0],
86
- __key: e[0],
87
- };
88
- });
89
-
90
- _.set(_clone, "data.fields", fields);
91
-
92
- return _clone;
93
- },
94
- (a, b) => {
95
- let _clone = _.cloneDeep(a) || {};
96
-
97
- let base = b.data.fields.reduce((acc, curr, index) => {
98
- acc[curr.name] = {
99
- ...curr,
100
- __order: index,
101
- };
102
- return acc;
103
- }, {});
104
-
105
- _.set(_clone, "data.base", base);
106
- return _clone;
107
- }
108
- );
109
- });
110
- </script>
111
-
112
- <div class="flex flex-col w-full text-surface-900 my-2">
113
- <Label for="input_{state_key}" class="block {hide_label ? 'hidden' : ''}">
114
- {label}
115
- </Label>
116
- {#if initial_form}
117
- <Form bind:form={settings_form} {initial_form} {dependencies} />
118
- {/if}
119
- {#if validationMessage}
120
- <Label class={!isValid ? `text-danger-500` : `text-success-500`}>{validationMessage}</Label>
121
- {/if}
122
- </div>
@@ -1,27 +0,0 @@
1
- /** @typedef {typeof __propDef.props} FieldsbuilderProps */
2
- /** @typedef {typeof __propDef.events} FieldsbuilderEvents */
3
- /** @typedef {typeof __propDef.slots} FieldsbuilderSlots */
4
- export default class Fieldsbuilder extends SvelteComponent<{
5
- form: any;
6
- field: any;
7
- }, {
8
- [evt: string]: CustomEvent<any>;
9
- }, {}> {
10
- }
11
- export type FieldsbuilderProps = typeof __propDef.props;
12
- export type FieldsbuilderEvents = typeof __propDef.events;
13
- export type FieldsbuilderSlots = 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 {};