@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,264 +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 currency from "currency.js";
8
- import getSymbolFromCurrency from "currency-symbol-map";
9
- import * as utils from "../../utils/index.js";
10
-
11
- import { Button } from "@stubber/ui/button";
12
- import { Label } from "@stubber/ui/label";
13
-
14
- export let field;
15
-
16
- let { clickOutside, inputRegexMask } = utils;
17
-
18
- const currencyRegex = /^([0-9]+(\.?[0-9]?[0-9]?)?)$/;
19
- const currencyName = new Intl.DisplayNames("en-US", {
20
- type: "currency",
21
- });
22
-
23
- const internal = writable();
24
- let show_currency_list;
25
-
26
- function toggleCurrencySelectorPopout() {
27
- show_currency_list = !show_currency_list;
28
- }
29
-
30
- function handleFocusOut(e) {
31
- let targetIsOption = e.relatedTarget?.classList?.contains("selectitem");
32
- if (!targetIsOption) {
33
- show_currency_list = false;
34
- }
35
- }
36
-
37
- $: state_key = $field.state?.state_key;
38
- $: label = $field.spec?.title;
39
- $: hide_label = $field.spec?.hide_label;
40
- $: isValid = !$field.state?.validation || $field.state?.validation?.valid;
41
- $: validationMessage = $field.state?.validation?.message;
42
- $: currencyFixed = $field.spec?.params?.currency;
43
- $: currencyWhitelist = $field.spec?.params?.currency_whitelist ?? [];
44
- $: currencyBlacklist = $field.spec?.params?.currency_blacklist ?? [];
45
- $: currencyList =
46
- currencyWhitelist.length > 0
47
- ? currencyWhitelist.filter(Boolean).map((c) => {
48
- let name;
49
- try {
50
- name = currencyName.of(c);
51
- } catch (err) {
52
- console.warn(err);
53
- }
54
- return {
55
- value: c,
56
- symbol: getSymbolFromCurrency(c),
57
- name,
58
- };
59
- })
60
- : Intl.supportedValuesOf("currency")
61
- .filter((c) => {
62
- return !currencyBlacklist.includes(c);
63
- })
64
- .map((c) => {
65
- return {
66
- value: c,
67
- symbol: getSymbolFromCurrency(c),
68
- name: currencyName.of(c),
69
- };
70
- });
71
-
72
- function setSelectedCurrency(c) {
73
- let _clone = _.cloneDeep($internal) || {};
74
- _.set(_clone, "currencycode", c?.value);
75
- _.set(_clone, "currencysymbol", c?.symbol);
76
- $internal = _clone;
77
- show_currency_list = false;
78
- }
79
-
80
- $: onRawChange($internal?.raw);
81
- function onRawChange(val) {
82
- if (!$internal) return;
83
- let _clone = _.cloneDeep($internal) || {};
84
- _clone.cents = currency(val).intValue;
85
- _clone.amount = currency(val).value;
86
- if (!deepEqual(_clone, $internal)) $internal = _clone;
87
- }
88
-
89
- onMount(() => {
90
- // set field values that aren't set yet
91
- let f = _.cloneDeep($field);
92
- let data_currencycode =
93
- f?.data?.base_details?.currencycode &&
94
- currencyList.find((c) => c.value === f?.data?.base_details?.currencycode)
95
- ? f?.data?.base_details?.currencycode
96
- : null;
97
- let fixed_currencycode = currencyList.find((c) => c.value === currencyFixed)
98
- ? currencyFixed
99
- : null;
100
- let currencycode = data_currencycode || fixed_currencycode || currencyList?.[0]?.value || "USD";
101
- let currencysymbol = getSymbolFromCurrency(currencycode);
102
- let cents = currency(f?.data?.base).intValue;
103
- let amount = currency(f?.data?.base).value;
104
- let initial_value = amount?.toFixed(2).toString() ?? "0.00";
105
- let initial_data = {
106
- ...f?.data,
107
- base: initial_value,
108
- };
109
- if (!f?.spec?.without_value_details) {
110
- initial_data.base_details = {
111
- currencycode,
112
- currencysymbol,
113
- cents,
114
- amount,
115
- };
116
- }
117
-
118
- let initial_state_internal = {
119
- ...f?.state?.internal,
120
- currencycode,
121
- currencysymbol,
122
- cents,
123
- amount,
124
- raw: initial_value,
125
- };
126
-
127
- _.set(f, "data", initial_data);
128
- _.set(f, "state.internal", initial_state_internal);
129
- if (!deepEqual(f, $field)) $field = f;
130
-
131
- syncStoreToStore(
132
- field,
133
- internal,
134
- (a, b) => {
135
- let _clone = _.cloneDeep(a.state?.internal) || {};
136
-
137
- // get parts from data
138
- _clone.raw = a?.data?.base;
139
- if (!a?.spec?.without_value_details) {
140
- _clone.cents = a?.data?.base_details?.cents;
141
- _clone.amount = a?.data?.base_details?.amount;
142
- _clone.currencycode = a?.data?.base_details?.currencycode;
143
- _clone.currencysymbol = a?.data?.base_details?.currencysymbol;
144
- }
145
-
146
- // set field state if changed
147
- if (!deepEqual(a?.state?.internal, _clone)) {
148
- $field.state.internal = _clone;
149
- }
150
-
151
- return _clone;
152
- },
153
- (a, b) => {
154
- let _clone = _.cloneDeep(a) || {};
155
- // update the state
156
- _.set(_clone, "state.internal", _.cloneDeep(b));
157
- // update the data
158
- _.set(_clone, "data.base", b?.raw);
159
- if (!a?.spec?.without_value_details) {
160
- _.set(_clone, "data.base_details.amount", b?.amount);
161
- _.set(_clone, "data.base_details.cents", b?.cents);
162
- _.set(_clone, "data.base_details.currencycode", b?.currencycode);
163
- _.set(_clone, "data.base_details.currencysymbol", b?.currencysymbol);
164
- }
165
- return _clone;
166
- },
167
- null,
168
- 300
169
- );
170
- });
171
- </script>
172
-
173
- {#if $internal}
174
- <div
175
- use:clickOutside={() => {
176
- if (show_currency_list) {
177
- show_currency_list = false;
178
- }
179
- }}
180
- class="flex flex-col w-full text-surface-900"
181
- >
182
- <Label for="input_{state_key}" class="block py-2{hide_label ? 'hidden' : ''}">
183
- {label}
184
- </Label>
185
- <div
186
- class="w-full flex items-center gap-2 border-input bg-white bg-opacity-[15] ring-offset-background placeholder:text-muted-foreground focus-within:ring-ring h-10 rounded-md border px-3 py-2 text-sm file:border-0 file:bg-transparent file:text-sm file:font-medium focus-within:outline-none focus-within:ring-2 focus-within:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 {!isValid
187
- ? 'focus-within:ring-danger-500'
188
- : 'ring-surface-300'}"
189
- style="box-shadow: inset 0px 16px 16px -16px rgba(0, 0, 0, 0.1333);"
190
- >
191
- <div class="pointer-events-none flex items-center pl-2">
192
- <span class="text-sm text-surface-600">
193
- {getSymbolFromCurrency($internal?.currencycode)}
194
- </span>
195
- </div>
196
- <input
197
- on:keydown={(e) => {
198
- if (e.key === "Enter") {
199
- e.preventDefault();
200
- }
201
- }}
202
- class="w-full focus-within:outline-none"
203
- use:inputRegexMask={currencyRegex}
204
- id="input_{state_key}"
205
- placeholder={label}
206
- name={state_key}
207
- inputmode="decimal"
208
- bind:value={$internal.raw}
209
- on:focus={(e) => e.target.select()}
210
- />
211
- <!-- Here be selector stuff -->
212
- {#if currencyList && !currencyFixed}
213
- <Button
214
- variant="ghost"
215
- type="button"
216
- on:click={toggleCurrencySelectorPopout}
217
- class="w-20 pl-3 space-x-2 flex items-center"
218
- >
219
- <span class="text-field text-surface-700">{$internal?.currencycode}</span>
220
- <i
221
- class="text-surface-700 fa fa-solid fa-xs fa-caret-{show_currency_list ? 'up' : 'down'}"
222
- />
223
- </Button>
224
- {/if}
225
- {#if show_currency_list && currencyList}
226
- <div class="z-10 absolute inset-y-[42px] right-0">
227
- <ul
228
- class="items block max-h-[250px] overflow-y-auto w-[250px] md:w-[450px] bg-popover text-popover-foreground relative z-50 min-w-[8rem] overflow-hidden rounded border shadow-md outline-none p-1"
229
- >
230
- {#each currencyList as item}
231
- <!-- {#if currencyWhitelist.contains(item.value) && !currencyBlacklist.contains(item.value)} -->
232
- <li
233
- class="{item.value == $internal?.currencycode
234
- ? 'selecteditem'
235
- : ''} group relative flex w-full cursor-default select-none items-center rounded-sm py-1 pl-8 pr-2 text-sm outline-none
236
- hover:bg-accent hover:text-accent-foreground"
237
- >
238
- <span class="absolute left-2 flex h-3.5 w-3.5 items-center justify-center">
239
- {#if item.value == $internal?.currencycode}
240
- <i class="fa-regular fa-check h-4 w-4" />
241
- {/if}
242
- </span>
243
- <button
244
- on:click|preventDefault={() => setSelectedCurrency(item)}
245
- on:focusout={(e) => handleFocusOut(e)}
246
- class=" w-full flex items-center space-x-3 selectitem focus:outline-none"
247
- >
248
- <span class="text-surface-900 text-field">{item.value}</span>
249
- <span class="text-surface-700 text-field">{item.symbol}</span>
250
- <span class="text-surface-500 text-field">{item.name}</span>
251
- </button>
252
- </li>
253
- <!-- {/if} -->
254
- {/each}
255
- </ul>
256
- </div>
257
- {/if}
258
- <!-- Here end selector stuff -->
259
- </div>
260
- {#if validationMessage}
261
- <Label class={!isValid ? `text-danger-500` : `text-success-500`}>{validationMessage}</Label>
262
- {/if}
263
- </div>
264
- {/if}
@@ -1,25 +0,0 @@
1
- /** @typedef {typeof __propDef.props} CurrencyProps */
2
- /** @typedef {typeof __propDef.events} CurrencyEvents */
3
- /** @typedef {typeof __propDef.slots} CurrencySlots */
4
- export default class Currency extends SvelteComponent<{
5
- field: any;
6
- }, {
7
- [evt: string]: CustomEvent<any>;
8
- }, {}> {
9
- }
10
- export type CurrencyProps = typeof __propDef.props;
11
- export type CurrencyEvents = typeof __propDef.events;
12
- export type CurrencySlots = 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,31 +0,0 @@
1
- <script>
2
- import _ from "lodash-es";
3
-
4
- import { Label } from "@stubber/ui/label";
5
- import { Input } from "@stubber/ui/input";
6
-
7
- export let field;
8
-
9
- $: state_key = $field.state?.state_key;
10
- $: label = $field.spec?.title;
11
- $: hide_label = $field.spec?.hide_label;
12
- $: isValid = !$field.state?.validation || $field.state?.validation?.valid;
13
- $: validationMessage = $field.state?.validation?.message;
14
- $: value_is_string = _.isString($field.data?.base);
15
- $: value = !value_is_string ? JSON.stringify($field.data?.base, null, 2) : $field.data?.base;
16
- </script>
17
-
18
- <div class="flex flex-col w-full text-surface-900 my-2">
19
- <Label for="input_{state_key}" class="block {hide_label ? 'hidden' : ''}">
20
- {label}
21
- </Label>
22
- <div class="relative mt-2 rounded-md bg-surface-100 p-2">
23
- <pre class="rounded-md">{value}</pre>
24
- </div>
25
-
26
- {#if validationMessage}
27
- <Label class=" {!isValid ? `text-danger-500` : `text-success-500`}">
28
- {validationMessage}
29
- </Label>
30
- {/if}
31
- </div>
@@ -1,25 +0,0 @@
1
- /** @typedef {typeof __propDef.props} DataindicationProps */
2
- /** @typedef {typeof __propDef.events} DataindicationEvents */
3
- /** @typedef {typeof __propDef.slots} DataindicationSlots */
4
- export default class Dataindication extends SvelteComponent<{
5
- field: any;
6
- }, {
7
- [evt: string]: CustomEvent<any>;
8
- }, {}> {
9
- }
10
- export type DataindicationProps = typeof __propDef.props;
11
- export type DataindicationEvents = typeof __propDef.events;
12
- export type DataindicationSlots = 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,97 +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
-
10
- export let field;
11
-
12
- const internal = writable();
13
-
14
- $: state_key = $field.state?.state_key;
15
- $: label = $field.spec?.title;
16
- $: hide_label = $field.spec?.hide_label;
17
- $: isValid = !$field.state?.validation || $field.state?.validation?.valid;
18
- $: validationMessage = $field.state?.validation?.message;
19
-
20
- onMount(() => {
21
- // set field values that aren't set yet
22
- let f = _.cloneDeep($field);
23
- let initial_value = f?.data?.base ?? "";
24
- let initial_data = {
25
- ...f?.data,
26
- base: initial_value,
27
- };
28
- let initial_state_internal = _.merge(
29
- {
30
- raw: initial_value,
31
- },
32
- f?.state?.internal
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="block {hide_label ? 'hidden' : ''}">
71
- {label}
72
- </Label>
73
- <div class="relative mt-2 rounded-md">
74
- <input
75
- on:keydown={(e) => {
76
- if (e.key === "Enter") {
77
- e.preventDefault();
78
- }
79
- }}
80
- type="date"
81
- id="input_{state_key}"
82
- placeholder={label}
83
- class="block w-full border-input bg-white bg-opacity-[15] ring-0 ring-offset-background focus-visible:ring-ring h-10 rounded-md border px-3 py-2 text-sm file:border-0 file:bg-transparent file:text-sm file:font-medium focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50
84
- {!isValid ? 'ring-danger-500' : 'ring-surface-300'}
85
- {$internal?.raw ? 'text-surface-900' : 'text-muted-foreground'}"
86
- style="box-shadow: inset 0px 16px 16px -16px rgba(0, 0, 0, 0.1333);"
87
- name={state_key}
88
- bind:value={$internal.raw}
89
- />
90
- </div>
91
- {#if validationMessage}
92
- <Label class="text-label {!isValid ? `text-danger-500` : `text-success-500`}">
93
- {validationMessage}
94
- </Label>
95
- {/if}
96
- </div>
97
- {/if}
@@ -1,25 +0,0 @@
1
- /** @typedef {typeof __propDef.props} DateProps */
2
- /** @typedef {typeof __propDef.events} DateEvents */
3
- /** @typedef {typeof __propDef.slots} DateSlots */
4
- export default class Date extends SvelteComponent<{
5
- field: any;
6
- }, {
7
- [evt: string]: CustomEvent<any>;
8
- }, {}> {
9
- }
10
- export type DateProps = typeof __propDef.props;
11
- export type DateEvents = typeof __propDef.events;
12
- export type DateSlots = 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,97 +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
-
10
- export let field;
11
-
12
- const internal = writable();
13
-
14
- $: state_key = $field.state?.state_key;
15
- $: label = $field.spec?.title;
16
- $: hide_label = $field.spec?.hide_label;
17
- $: isValid = !$field.state?.validation || $field.state?.validation?.valid;
18
- $: validationMessage = $field.state?.validation?.message;
19
-
20
- onMount(() => {
21
- // set field values that aren't set yet
22
- let f = _.cloneDeep($field);
23
- let initial_value = f?.data?.base ?? "";
24
- let initial_data = {
25
- ...f?.data,
26
- base: initial_value,
27
- };
28
- let initial_state_internal = _.merge(
29
- {
30
- raw: initial_value,
31
- },
32
- f?.state?.internal
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="block {hide_label ? 'hidden' : ''}">
71
- {label}
72
- </Label>
73
- <div class="relative mt-2 rounded-md">
74
- <input
75
- on:keydown={(e) => {
76
- if (e.key === "Enter") {
77
- e.preventDefault();
78
- }
79
- }}
80
- type="datetime-local"
81
- id="input_{state_key}"
82
- placeholder={label}
83
- class="block w-full border-input bg-white bg-opacity-[15] ring-0 ring-offset-background focus-visible:ring-ring h-10 rounded-md border px-3 py-2 text-sm file:border-0 file:bg-transparent file:text-sm file:font-medium focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50
84
- {!isValid ? 'ring-danger-500' : 'ring-surface-300'}
85
- {$internal?.raw ? 'text-surface-900' : 'text-muted-foreground'}"
86
- style="box-shadow: inset 0px 16px 16px -16px rgba(0, 0, 0, 0.1333);"
87
- name={state_key}
88
- bind:value={$internal.raw}
89
- />
90
- </div>
91
- {#if validationMessage}
92
- <Label class={!isValid ? `text-danger-500` : `text-success-500`}>
93
- {validationMessage}
94
- </Label>
95
- {/if}
96
- </div>
97
- {/if}
@@ -1,25 +0,0 @@
1
- /** @typedef {typeof __propDef.props} DatetimeProps */
2
- /** @typedef {typeof __propDef.events} DatetimeEvents */
3
- /** @typedef {typeof __propDef.slots} DatetimeSlots */
4
- export default class Datetime extends SvelteComponent<{
5
- field: any;
6
- }, {
7
- [evt: string]: CustomEvent<any>;
8
- }, {}> {
9
- }
10
- export type DatetimeProps = typeof __propDef.props;
11
- export type DatetimeEvents = typeof __propDef.events;
12
- export type DatetimeSlots = 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 {};