@startinblox/core 0.17.22 → 0.17.23

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 (262) hide show
  1. package/dist/_snowpack/env.js +3 -0
  2. package/dist/_snowpack/pkg/autolinker.js +4281 -0
  3. package/dist/_snowpack/pkg/autolinker.js.map +1 -0
  4. package/dist/_snowpack/pkg/autolinker.js.map.proxy.js +1 -0
  5. package/dist/_snowpack/pkg/common/_baseUnary-217dffb2.js +377 -0
  6. package/dist/_snowpack/pkg/common/_baseUnary-217dffb2.js.map +1 -0
  7. package/dist/_snowpack/pkg/common/_baseUnary-217dffb2.js.map.proxy.js +1 -0
  8. package/dist/_snowpack/pkg/common/_commonjsHelpers-8c19dec8.js +22 -0
  9. package/dist/_snowpack/pkg/common/_commonjsHelpers-8c19dec8.js.map +1 -0
  10. package/dist/_snowpack/pkg/common/_commonjsHelpers-8c19dec8.js.map.proxy.js +1 -0
  11. package/dist/_snowpack/pkg/common/decode-a4c334cf.js +216 -0
  12. package/dist/_snowpack/pkg/common/decode-a4c334cf.js.map +1 -0
  13. package/dist/_snowpack/pkg/common/decode-a4c334cf.js.map.proxy.js +1 -0
  14. package/dist/_snowpack/pkg/common/lit-html-babd44cd.js +1119 -0
  15. package/dist/_snowpack/pkg/common/lit-html-babd44cd.js.map +1 -0
  16. package/dist/_snowpack/pkg/common/lit-html-babd44cd.js.map.proxy.js +1 -0
  17. package/dist/_snowpack/pkg/delta-markdown-for-quill.js +25677 -0
  18. package/dist/_snowpack/pkg/delta-markdown-for-quill.js.map +1 -0
  19. package/dist/_snowpack/pkg/delta-markdown-for-quill.js.map.proxy.js +1 -0
  20. package/dist/_snowpack/pkg/dialog-polyfill.js +859 -0
  21. package/dist/_snowpack/pkg/dialog-polyfill.js.map +1 -0
  22. package/dist/_snowpack/pkg/dialog-polyfill.js.map.proxy.js +1 -0
  23. package/dist/_snowpack/pkg/fusejs.js +1783 -0
  24. package/dist/_snowpack/pkg/fusejs.js.map +1 -0
  25. package/dist/_snowpack/pkg/fusejs.js.map.proxy.js +1 -0
  26. package/dist/_snowpack/pkg/import-map.json +25 -0
  27. package/dist/_snowpack/pkg/jsonld-context-parser.js +804 -0
  28. package/dist/_snowpack/pkg/jsonld-context-parser.js.map +1 -0
  29. package/dist/_snowpack/pkg/jsonld-context-parser.js.map.proxy.js +1 -0
  30. package/dist/_snowpack/pkg/leaflet/dist/leaflet.css +640 -0
  31. package/dist/_snowpack/pkg/leaflet/dist/leaflet.css.proxy.js +10 -0
  32. package/dist/_snowpack/pkg/leaflet.js +14066 -0
  33. package/dist/_snowpack/pkg/leaflet.js.map +1 -0
  34. package/dist/_snowpack/pkg/leaflet.js.map.proxy.js +1 -0
  35. package/dist/_snowpack/pkg/leaflet.markercluster/dist/MarkerCluster.Default.css +60 -0
  36. package/dist/_snowpack/pkg/leaflet.markercluster/dist/MarkerCluster.Default.css.proxy.js +10 -0
  37. package/dist/_snowpack/pkg/leaflet.markercluster/dist/MarkerCluster.css +14 -0
  38. package/dist/_snowpack/pkg/leaflet.markercluster/dist/MarkerCluster.css.proxy.js +10 -0
  39. package/dist/_snowpack/pkg/leaflet.markercluster.js +2697 -0
  40. package/dist/_snowpack/pkg/leaflet.markercluster.js.map +1 -0
  41. package/dist/_snowpack/pkg/leaflet.markercluster.js.map.proxy.js +1 -0
  42. package/dist/_snowpack/pkg/lit-html/directives/if-defined.js +40 -0
  43. package/dist/_snowpack/pkg/lit-html/directives/if-defined.js.map +1 -0
  44. package/dist/_snowpack/pkg/lit-html/directives/if-defined.js.map.proxy.js +1 -0
  45. package/dist/_snowpack/pkg/lit-html/directives/unsafe-html.js +46 -0
  46. package/dist/_snowpack/pkg/lit-html/directives/unsafe-html.js.map +1 -0
  47. package/dist/_snowpack/pkg/lit-html/directives/unsafe-html.js.map.proxy.js +1 -0
  48. package/dist/_snowpack/pkg/lit-html/directives/until.js +88 -0
  49. package/dist/_snowpack/pkg/lit-html/directives/until.js.map +1 -0
  50. package/dist/_snowpack/pkg/lit-html/directives/until.js.map.proxy.js +1 -0
  51. package/dist/_snowpack/pkg/lit-html.js +92 -0
  52. package/dist/_snowpack/pkg/lit-html.js.map +1 -0
  53. package/dist/_snowpack/pkg/lit-html.js.map.proxy.js +1 -0
  54. package/dist/_snowpack/pkg/markdown-it.js +11860 -0
  55. package/dist/_snowpack/pkg/markdown-it.js.map +1 -0
  56. package/dist/_snowpack/pkg/markdown-it.js.map.proxy.js +1 -0
  57. package/dist/_snowpack/pkg/quill/dist/quill.snow.css +945 -0
  58. package/dist/_snowpack/pkg/quill/dist/quill.snow.css.proxy.js +10 -0
  59. package/dist/_snowpack/pkg/quill-delta-to-markdown.js +1029 -0
  60. package/dist/_snowpack/pkg/quill-delta-to-markdown.js.map +1 -0
  61. package/dist/_snowpack/pkg/quill-delta-to-markdown.js.map.proxy.js +1 -0
  62. package/dist/_snowpack/pkg/quill.js +13382 -0
  63. package/dist/_snowpack/pkg/quill.js.map +1 -0
  64. package/dist/_snowpack/pkg/quill.js.map.proxy.js +1 -0
  65. package/dist/_snowpack/pkg/slim-select.js +4 -0
  66. package/dist/_snowpack/pkg/slim-select.js.map +1 -0
  67. package/dist/_snowpack/pkg/slim-select.js.map.proxy.js +1 -0
  68. package/dist/_snowpack/pkg/tui-calendar/dist/tui-calendar.css +1164 -0
  69. package/dist/_snowpack/pkg/tui-calendar/dist/tui-calendar.css.proxy.js +10 -0
  70. package/dist/_snowpack/pkg/tui-calendar.js +42285 -0
  71. package/dist/_snowpack/pkg/tui-calendar.js.map +1 -0
  72. package/dist/_snowpack/pkg/tui-calendar.js.map.proxy.js +1 -0
  73. package/dist/components/solid-ac-checker.js +58 -0
  74. package/dist/components/solid-ac-checker.js.map +1 -0
  75. package/dist/components/solid-calendar.js +87 -0
  76. package/dist/components/solid-calendar.js.map +1 -0
  77. package/dist/components/solid-delete.js +111 -0
  78. package/dist/components/solid-delete.js.map +1 -0
  79. package/dist/components/solid-display.js +194 -0
  80. package/dist/components/solid-display.js.map +1 -0
  81. package/dist/components/solid-form-search.js +226 -0
  82. package/dist/components/solid-form-search.js.map +1 -0
  83. package/dist/components/solid-form.js +354 -0
  84. package/dist/components/solid-form.js.map +1 -0
  85. package/dist/components/solid-lang.js +46 -0
  86. package/dist/components/solid-lang.js.map +1 -0
  87. package/dist/components/solid-map.js +242 -0
  88. package/dist/components/solid-map.js.map +1 -0
  89. package/dist/components/solid-table.js +263 -0
  90. package/dist/components/solid-table.js.map +1 -0
  91. package/dist/components/solid-widget.js +94 -0
  92. package/dist/components/solid-widget.js.map +1 -0
  93. package/dist/import.css +4 -0
  94. package/dist/index.js +43 -0
  95. package/dist/index.js.map +1 -0
  96. package/dist/libs/Component.js +19 -0
  97. package/dist/libs/Component.js.map +1 -0
  98. package/dist/libs/ComponentFactory.js +196 -0
  99. package/dist/libs/ComponentFactory.js.map +1 -0
  100. package/dist/libs/Compositor.js +103 -0
  101. package/dist/libs/Compositor.js.map +1 -0
  102. package/dist/libs/Sib.js +58 -0
  103. package/dist/libs/Sib.js.map +1 -0
  104. package/dist/libs/helpers.js +219 -0
  105. package/dist/libs/helpers.js.map +1 -0
  106. package/dist/libs/interfaces.js +6 -0
  107. package/dist/libs/interfaces.js.map +1 -0
  108. package/dist/libs/lit-helpers.js +169 -0
  109. package/dist/libs/lit-helpers.js.map +1 -0
  110. package/dist/libs/polyfills.js +40 -0
  111. package/dist/libs/polyfills.js.map +1 -0
  112. package/dist/libs/store/store.js +802 -0
  113. package/dist/libs/store/store.js.map +1 -0
  114. package/dist/locales/en.json +10 -0
  115. package/dist/locales/en.json.proxy.js +2 -0
  116. package/dist/locales/fr.json +10 -0
  117. package/dist/locales/fr.json.proxy.js +2 -0
  118. package/dist/mixins/attributeBinderMixin.js +124 -0
  119. package/dist/mixins/attributeBinderMixin.js.map +1 -0
  120. package/dist/mixins/contextMixin.js +28 -0
  121. package/dist/mixins/contextMixin.js.map +1 -0
  122. package/dist/mixins/counterMixin.js +75 -0
  123. package/dist/mixins/counterMixin.js.map +1 -0
  124. package/dist/mixins/federationMixin.js +63 -0
  125. package/dist/mixins/federationMixin.js.map +1 -0
  126. package/dist/mixins/filterMixin.js +195 -0
  127. package/dist/mixins/filterMixin.js.map +1 -0
  128. package/dist/mixins/grouperMixin.js +80 -0
  129. package/dist/mixins/grouperMixin.js.map +1 -0
  130. package/dist/mixins/highlighterMixin.js +42 -0
  131. package/dist/mixins/highlighterMixin.js.map +1 -0
  132. package/dist/mixins/interfaces.js +8 -0
  133. package/dist/mixins/interfaces.js.map +1 -0
  134. package/dist/mixins/listMixin.js +136 -0
  135. package/dist/mixins/listMixin.js.map +1 -0
  136. package/dist/mixins/nextMixin.js +26 -0
  137. package/dist/mixins/nextMixin.js.map +1 -0
  138. package/dist/mixins/paginateMixin.js +110 -0
  139. package/dist/mixins/paginateMixin.js.map +1 -0
  140. package/dist/mixins/requiredMixin.js +34 -0
  141. package/dist/mixins/requiredMixin.js.map +1 -0
  142. package/dist/mixins/sorterMixin.js +149 -0
  143. package/dist/mixins/sorterMixin.js.map +1 -0
  144. package/dist/mixins/storeMixin.js +102 -0
  145. package/dist/mixins/storeMixin.js.map +1 -0
  146. package/dist/mixins/translationMixin.js +68 -0
  147. package/dist/mixins/translationMixin.js.map +1 -0
  148. package/dist/mixins/validationMixin.js +113 -0
  149. package/dist/mixins/validationMixin.js.map +1 -0
  150. package/dist/mixins/widgetMixin.js +447 -0
  151. package/dist/mixins/widgetMixin.js.map +1 -0
  152. package/dist/new-widgets/attributeMixins/actionMixin.js +14 -0
  153. package/dist/new-widgets/attributeMixins/actionMixin.js.map +1 -0
  154. package/dist/new-widgets/attributeMixins/blankMixin.js +10 -0
  155. package/dist/new-widgets/attributeMixins/blankMixin.js.map +1 -0
  156. package/dist/new-widgets/attributeMixins/booleanMixin.js +10 -0
  157. package/dist/new-widgets/attributeMixins/booleanMixin.js.map +1 -0
  158. package/dist/new-widgets/attributeMixins/index.js +20 -0
  159. package/dist/new-widgets/attributeMixins/index.js.map +1 -0
  160. package/dist/new-widgets/attributeMixins/mailtoMixin.js +10 -0
  161. package/dist/new-widgets/attributeMixins/mailtoMixin.js.map +1 -0
  162. package/dist/new-widgets/attributeMixins/multipleMixin.js +28 -0
  163. package/dist/new-widgets/attributeMixins/multipleMixin.js.map +1 -0
  164. package/dist/new-widgets/attributeMixins/numberMixin.js +10 -0
  165. package/dist/new-widgets/attributeMixins/numberMixin.js.map +1 -0
  166. package/dist/new-widgets/attributeMixins/placeholderMixin.js +19 -0
  167. package/dist/new-widgets/attributeMixins/placeholderMixin.js.map +1 -0
  168. package/dist/new-widgets/attributeMixins/telMixin.js +10 -0
  169. package/dist/new-widgets/attributeMixins/telMixin.js.map +1 -0
  170. package/dist/new-widgets/baseWidgetMixin.js +122 -0
  171. package/dist/new-widgets/baseWidgetMixin.js.map +1 -0
  172. package/dist/new-widgets/callbackMixins/autocompletionMixin.js +104 -0
  173. package/dist/new-widgets/callbackMixins/autocompletionMixin.js.map +1 -0
  174. package/dist/new-widgets/callbackMixins/index.js +8 -0
  175. package/dist/new-widgets/callbackMixins/index.js.map +1 -0
  176. package/dist/new-widgets/callbackMixins/richtextMixin.js +42 -0
  177. package/dist/new-widgets/callbackMixins/richtextMixin.js.map +1 -0
  178. package/dist/new-widgets/callbackMixins/slimselect.css +2 -0
  179. package/dist/new-widgets/callbackMixins/slimselect.css.proxy.js +10 -0
  180. package/dist/new-widgets/new-widget-factory.js +96 -0
  181. package/dist/new-widgets/new-widget-factory.js.map +1 -0
  182. package/dist/new-widgets/templateAdditionMixins/addableMixin.js +41 -0
  183. package/dist/new-widgets/templateAdditionMixins/addableMixin.js.map +1 -0
  184. package/dist/new-widgets/templateAdditionMixins/index.js +14 -0
  185. package/dist/new-widgets/templateAdditionMixins/index.js.map +1 -0
  186. package/dist/new-widgets/templateAdditionMixins/labelLastMixin.js +29 -0
  187. package/dist/new-widgets/templateAdditionMixins/labelLastMixin.js.map +1 -0
  188. package/dist/new-widgets/templateAdditionMixins/labelMixin.js +31 -0
  189. package/dist/new-widgets/templateAdditionMixins/labelMixin.js.map +1 -0
  190. package/dist/new-widgets/templates/defaultTemplatesDirectory.js +35 -0
  191. package/dist/new-widgets/templates/defaultTemplatesDirectory.js.map +1 -0
  192. package/dist/new-widgets/templates/displayTemplatesDirectory.js +89 -0
  193. package/dist/new-widgets/templates/displayTemplatesDirectory.js.map +1 -0
  194. package/dist/new-widgets/templates/formTemplatesDirectory.js +397 -0
  195. package/dist/new-widgets/templates/formTemplatesDirectory.js.map +1 -0
  196. package/dist/new-widgets/templates/groupTemplatesDirectory.js +21 -0
  197. package/dist/new-widgets/templates/groupTemplatesDirectory.js.map +1 -0
  198. package/dist/new-widgets/templates/index.js +7 -0
  199. package/dist/new-widgets/templates/index.js.map +1 -0
  200. package/dist/new-widgets/templates/setTemplatesDirectory.js +49 -0
  201. package/dist/new-widgets/templates/setTemplatesDirectory.js.map +1 -0
  202. package/dist/new-widgets/templatesDependencies/altMixin.js +13 -0
  203. package/dist/new-widgets/templatesDependencies/altMixin.js.map +1 -0
  204. package/dist/new-widgets/templatesDependencies/editableMixin.js +77 -0
  205. package/dist/new-widgets/templatesDependencies/editableMixin.js.map +1 -0
  206. package/dist/new-widgets/templatesDependencies/filterRangeFormMixin.js +38 -0
  207. package/dist/new-widgets/templatesDependencies/filterRangeFormMixin.js.map +1 -0
  208. package/dist/new-widgets/templatesDependencies/formCheckboxMixin.js +14 -0
  209. package/dist/new-widgets/templatesDependencies/formCheckboxMixin.js.map +1 -0
  210. package/dist/new-widgets/templatesDependencies/formCheckboxesMixin.js +51 -0
  211. package/dist/new-widgets/templatesDependencies/formCheckboxesMixin.js.map +1 -0
  212. package/dist/new-widgets/templatesDependencies/formDropdownMixin.js +66 -0
  213. package/dist/new-widgets/templatesDependencies/formDropdownMixin.js.map +1 -0
  214. package/dist/new-widgets/templatesDependencies/formFileMixin.js +81 -0
  215. package/dist/new-widgets/templatesDependencies/formFileMixin.js.map +1 -0
  216. package/dist/new-widgets/templatesDependencies/formLengthMixin.js +19 -0
  217. package/dist/new-widgets/templatesDependencies/formLengthMixin.js.map +1 -0
  218. package/dist/new-widgets/templatesDependencies/formMinMaxMixin.js +19 -0
  219. package/dist/new-widgets/templatesDependencies/formMinMaxMixin.js.map +1 -0
  220. package/dist/new-widgets/templatesDependencies/formMixin.js +66 -0
  221. package/dist/new-widgets/templatesDependencies/formMixin.js.map +1 -0
  222. package/dist/new-widgets/templatesDependencies/formNumberMixin.js +14 -0
  223. package/dist/new-widgets/templatesDependencies/formNumberMixin.js.map +1 -0
  224. package/dist/new-widgets/templatesDependencies/formRadioMixin.js +16 -0
  225. package/dist/new-widgets/templatesDependencies/formRadioMixin.js.map +1 -0
  226. package/dist/new-widgets/templatesDependencies/formStepMixin.js +13 -0
  227. package/dist/new-widgets/templatesDependencies/formStepMixin.js.map +1 -0
  228. package/dist/new-widgets/templatesDependencies/multipleFormMixin.js +107 -0
  229. package/dist/new-widgets/templatesDependencies/multipleFormMixin.js.map +1 -0
  230. package/dist/new-widgets/templatesDependencies/multipleselectFormMixin.js +74 -0
  231. package/dist/new-widgets/templatesDependencies/multipleselectFormMixin.js.map +1 -0
  232. package/dist/new-widgets/templatesDependencies/patternMixin.js +19 -0
  233. package/dist/new-widgets/templatesDependencies/patternMixin.js.map +1 -0
  234. package/dist/new-widgets/templatesDependencies/rangeMixin.js +110 -0
  235. package/dist/new-widgets/templatesDependencies/rangeMixin.js.map +1 -0
  236. package/dist/new-widgets/templatesDependencies/setMixin.js +12 -0
  237. package/dist/new-widgets/templatesDependencies/setMixin.js.map +1 -0
  238. package/dist/new-widgets/templatesDependencies/valueRichtextMixin.js +12 -0
  239. package/dist/new-widgets/templatesDependencies/valueRichtextMixin.js.map +1 -0
  240. package/dist/new-widgets/valueTransformationMixins/autolinkMixin.js +18 -0
  241. package/dist/new-widgets/valueTransformationMixins/autolinkMixin.js.map +1 -0
  242. package/dist/new-widgets/valueTransformationMixins/dateMixin.js +35 -0
  243. package/dist/new-widgets/valueTransformationMixins/dateMixin.js.map +1 -0
  244. package/dist/new-widgets/valueTransformationMixins/dateTimeMixin.js +16 -0
  245. package/dist/new-widgets/valueTransformationMixins/dateTimeMixin.js.map +1 -0
  246. package/dist/new-widgets/valueTransformationMixins/index.js +16 -0
  247. package/dist/new-widgets/valueTransformationMixins/index.js.map +1 -0
  248. package/dist/new-widgets/valueTransformationMixins/markdownMixin.js +25 -0
  249. package/dist/new-widgets/valueTransformationMixins/markdownMixin.js.map +1 -0
  250. package/dist/new-widgets/valueTransformationMixins/multilineMixin.js +17 -0
  251. package/dist/new-widgets/valueTransformationMixins/multilineMixin.js.map +1 -0
  252. package/dist/new-widgets/valueTransformationMixins/oembedMixin.js +27 -0
  253. package/dist/new-widgets/valueTransformationMixins/oembedMixin.js.map +1 -0
  254. package/dist/solid-template-element.js +164 -0
  255. package/dist/solid-template-element.js.map +1 -0
  256. package/dist/style/default-theme.css +24 -0
  257. package/dist/style/default-theme.css.proxy.js +10 -0
  258. package/dist/widgets/baseWidget.js +332 -0
  259. package/dist/widgets/baseWidget.js.map +1 -0
  260. package/dist/widgets/widget-factory.js +24 -0
  261. package/dist/widgets/widget-factory.js.map +1 -0
  262. package/package.json +1 -1
@@ -0,0 +1,226 @@
1
+ function _templateObject4() {
2
+ const data = _taggedTemplateLiteral(["\n <form>\n ", "\n ", "\n </form>\n "]);
3
+
4
+ _templateObject4 = function () {
5
+ return data;
6
+ };
7
+
8
+ return data;
9
+ }
10
+
11
+ function _templateObject3() {
12
+ const data = _taggedTemplateLiteral(["\n <input type=\"submit\" value=", ">\n "]);
13
+
14
+ _templateObject3 = function () {
15
+ return data;
16
+ };
17
+
18
+ return data;
19
+ }
20
+
21
+ function _templateObject2() {
22
+ const data = _taggedTemplateLiteral(["\n <button type=\"submit\">", "</button>\n "]);
23
+
24
+ _templateObject2 = function () {
25
+ return data;
26
+ };
27
+
28
+ return data;
29
+ }
30
+
31
+ function _templateObject() {
32
+ const data = _taggedTemplateLiteral(["\n <div class=", ">\n ", "\n </div>\n "]);
33
+
34
+ _templateObject = function () {
35
+ return data;
36
+ };
37
+
38
+ return data;
39
+ }
40
+
41
+ function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
42
+
43
+ import { Sib } from '../libs/Sib.js';
44
+ import { WidgetMixin } from '../mixins/widgetMixin.js';
45
+ import { AttributeBinderMixin } from '../mixins/attributeBinderMixin.js';
46
+ import { ContextMixin } from '../mixins/contextMixin.js';
47
+ import { newWidgetFactory } from '../new-widgets/new-widget-factory.js';
48
+ import { html, render } from '../_snowpack/pkg/lit-html.js';
49
+ import { ifDefined } from '../_snowpack/pkg/lit-html/directives/if-defined.js';
50
+ import { uniqID } from '../libs/helpers.js';
51
+ export const SolidFormSearch = {
52
+ name: 'solid-form-search',
53
+ use: [WidgetMixin, AttributeBinderMixin, ContextMixin],
54
+ attributes: {
55
+ defaultWidget: {
56
+ type: String,
57
+ default: 'solid-form-label-text'
58
+ },
59
+ submitButton: {
60
+ type: String,
61
+ default: null,
62
+ callback: function (newValue, oldValue) {
63
+ if (this.noRender == null && newValue !== oldValue) this.populate();
64
+ }
65
+ },
66
+ submitWidget: {
67
+ type: String,
68
+ default: undefined
69
+ },
70
+ classSubmitButton: {
71
+ type: String,
72
+ default: undefined
73
+ },
74
+ noRender: {
75
+ type: String,
76
+ default: null,
77
+ callback: function (value) {
78
+ if (value === null) this.populate();
79
+ }
80
+ }
81
+ },
82
+ initialState: {
83
+ error: ''
84
+ },
85
+
86
+ created() {
87
+ if (this.element.closest('[no-render]')) this.noRender = ''; // if embedded in no-render, apply no-render to himself
88
+
89
+ this.autoRangeValues = {};
90
+ this.rangeId = uniqID();
91
+ this.attachedElements = new Set();
92
+ },
93
+
94
+ get defaultMultipleWidget() {
95
+ return 'solid-multiple-form';
96
+ },
97
+
98
+ get defaultSetWidget() {
99
+ return 'solid-set-default';
100
+ },
101
+
102
+ get value() {
103
+ const values = {};
104
+ this.widgets.forEach(widget => {
105
+ const name = (widget.component || widget).name;
106
+ if (name == null) return;
107
+ let value = widget.component ? widget.component.getValue() : widget.value;
108
+
109
+ try {
110
+ value = JSON.parse(value);
111
+ } catch {}
112
+
113
+ value = {
114
+ type: widget.component.type,
115
+ list: !!widget.component.multiple,
116
+ value: value
117
+ };
118
+ values[name] = value;
119
+ });
120
+ return values;
121
+ },
122
+
123
+ getWidget(field, isSet = false) {
124
+ let tagName = ''; // If auto-range-[field] exists, create range-[field] and sets its value
125
+
126
+ if (this.element.hasAttribute('auto-range-' + field) && !this.element.hasAttribute('range-' + field)) {
127
+ const idField = "".concat(this.rangeId, "_").concat(field);
128
+ this.element.setAttribute('range-' + field, 'store://local.' + idField);
129
+ this.populate();
130
+ }
131
+
132
+ const widgetAttribute = this.element.getAttribute('widget-' + field); // Choose widget
133
+
134
+ if (!widgetAttribute && (this.element.hasAttribute('range-' + field) || this.element.hasAttribute('enum-' + field))) {
135
+ tagName = 'solid-form-dropdown';
136
+ } else {
137
+ tagName = widgetAttribute || (!isSet ? this.defaultWidget : this.defaultSetWidget);
138
+ } // Create widget
139
+
140
+
141
+ if (!customElements.get(tagName)) {
142
+ // component does not exist
143
+ if (tagName.startsWith('solid')) newWidgetFactory(tagName); // solid- -> create it
144
+ }
145
+
146
+ return this.widgetFromTagName(tagName);
147
+ },
148
+
149
+ async attach(elm) {
150
+ if (this.attachedElements.has(elm)) return;
151
+ this.attachedElements.add(elm);
152
+ await this.updateAutoRanges();
153
+ },
154
+
155
+ async detach(elm) {
156
+ if (!this.attachedElements.has(elm)) return;
157
+ this.attachedElements.delete(elm);
158
+ await this.updateAutoRanges();
159
+ },
160
+
161
+ async updateAutoRanges() {
162
+ for (const attr of this.element.attributes) {
163
+ if (!attr['name'].startsWith('auto-range-')) continue;
164
+ const field = attr['name'].replace('auto-range-', '');
165
+ const autoRangeValues = new Set();
166
+
167
+ for (const elm of this.attachedElements) {
168
+ for (const value of await elm.getValuesOfField(field)) {
169
+ autoRangeValues.add(value);
170
+ }
171
+ }
172
+
173
+ const idField = "".concat(this.rangeId, "_").concat(field);
174
+ const id = "store://local.".concat(idField);
175
+ const ldpContains = Array.from(autoRangeValues).map(id => ({
176
+ '@id': id
177
+ }));
178
+ const data = {
179
+ "@type": "ldp:Container",
180
+ "@context": this.context,
181
+ "ldp:contains": ldpContains
182
+ };
183
+ sibStore.setLocalData(data, id);
184
+ }
185
+ },
186
+
187
+ change(resource) {
188
+ this.element.dispatchEvent(new CustomEvent('formChange', {
189
+ bubbles: true,
190
+ detail: {
191
+ resource
192
+ }
193
+ }));
194
+ },
195
+
196
+ async inputChange() {
197
+ this.change(this.value);
198
+ },
199
+
200
+ getSubmitTemplate() {
201
+ return html(_templateObject(), ifDefined(this.classSubmitButton), this.submitWidget === 'button' ? html(_templateObject2(), this.submitButton || '') : html(_templateObject3(), ifDefined(this.submitButton || undefined)));
202
+ },
203
+
204
+ empty() {},
205
+
206
+ async populate() {
207
+ await this.replaceAttributesData();
208
+
209
+ if (this.submitButton == null) {
210
+ this.element.addEventListener('input', () => this.inputChange());
211
+ } else {
212
+ this.element.addEventListener('submit', e => {
213
+ e.preventDefault();
214
+ this.inputChange();
215
+ });
216
+ }
217
+
218
+ const fields = await this.getFields();
219
+ const widgetTemplates = await Promise.all(fields.map(field => this.createWidgetTemplate(field)));
220
+ const template = html(_templateObject4(), widgetTemplates, this.submitButton == null ? '' : this.getSubmitTemplate());
221
+ render(template, this.element);
222
+ }
223
+
224
+ };
225
+ Sib.register(SolidFormSearch);
226
+ //# sourceMappingURL=solid-form-search.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["solid-form-search.ts"],"names":["Sib","WidgetMixin","AttributeBinderMixin","ContextMixin","newWidgetFactory","html","render","ifDefined","uniqID","SolidFormSearch","name","use","attributes","defaultWidget","type","String","default","submitButton","callback","newValue","oldValue","noRender","populate","submitWidget","undefined","classSubmitButton","value","initialState","error","created","element","closest","autoRangeValues","rangeId","attachedElements","Set","defaultMultipleWidget","defaultSetWidget","values","widgets","forEach","widget","component","getValue","JSON","parse","list","multiple","getWidget","field","isSet","tagName","hasAttribute","idField","setAttribute","widgetAttribute","getAttribute","customElements","get","startsWith","widgetFromTagName","attach","elm","has","add","updateAutoRanges","detach","delete","attr","replace","getValuesOfField","id","ldpContains","Array","from","map","data","context","sibStore","setLocalData","change","resource","dispatchEvent","CustomEvent","bubbles","detail","inputChange","getSubmitTemplate","empty","replaceAttributesData","addEventListener","e","preventDefault","fields","getFields","widgetTemplates","Promise","all","createWidgetTemplate","template","register"],"mappings":"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","sourcesContent":["import { Sib } from '../libs/Sib';\nimport { WidgetMixin } from '../mixins/widgetMixin';\nimport { AttributeBinderMixin } from '../mixins/attributeBinderMixin';\nimport { ContextMixin } from '../mixins/contextMixin';\nimport type { WidgetInterface } from '../mixins/interfaces';\nimport { newWidgetFactory } from '../new-widgets/new-widget-factory';\n\nimport { html, render } from 'lit-html';\nimport { ifDefined } from 'lit-html/directives/if-defined';\nimport { uniqID } from '../libs/helpers';\n\nexport const SolidFormSearch = {\n name: 'solid-form-search',\n use: [WidgetMixin, AttributeBinderMixin, ContextMixin],\n attributes: {\n defaultWidget: {\n type: String,\n default: 'solid-form-label-text',\n },\n submitButton: {\n type: String,\n default: null,\n callback: function (newValue: string, oldValue: string) {\n if (this.noRender == null && newValue !== oldValue) this.populate();\n },\n },\n submitWidget: {\n type: String,\n default: undefined\n },\n classSubmitButton: {\n type: String,\n default: undefined,\n },\n noRender: {\n type: String,\n default: null,\n callback: function (value: boolean) {\n if (value === null) this.populate()\n }\n },\n },\n initialState: {\n error: '',\n },\n created() {\n if (this.element.closest('[no-render]')) this.noRender = ''; // if embedded in no-render, apply no-render to himself\n this.autoRangeValues = {};\n this.rangeId = uniqID();\n this.attachedElements = new Set();\n },\n get defaultMultipleWidget(): string {\n return 'solid-multiple-form';\n },\n get defaultSetWidget(): string {\n return 'solid-set-default';\n },\n\n get value(): object {\n const values = {};\n this.widgets.forEach((widget) => {\n const name = (widget.component || widget).name;\n if (name == null) return;\n let value = widget.component ? widget.component.getValue() : widget.value;\n try {\n value = JSON.parse(value);\n } catch {}\n value = {\n type: widget.component.type,\n list: !!widget.component.multiple,\n value: value,\n }\n values[name] = value;\n });\n return values;\n },\n getWidget(field: string, isSet: boolean = false): WidgetInterface {\n let tagName = '';\n // If auto-range-[field] exists, create range-[field] and sets its value\n if(this.element.hasAttribute('auto-range-' + field) && !this.element.hasAttribute('range-' + field)) {\n const idField = `${this.rangeId}_${field}`;\n this.element.setAttribute('range-' + field, 'store://local.' + idField);\n this.populate();\n }\n \n const widgetAttribute = this.element.getAttribute('widget-' + field);\n // Choose widget\n if (!widgetAttribute && (this.element.hasAttribute('range-' + field) || this.element.hasAttribute('enum-' + field))) {\n tagName = 'solid-form-dropdown'\n } else {\n tagName = widgetAttribute || (!isSet ? this.defaultWidget : this.defaultSetWidget);\n }\n // Create widget\n if (!customElements.get(tagName)) { // component does not exist\n if (tagName.startsWith('solid')) newWidgetFactory(tagName); // solid- -> create it\n }\n\n return this.widgetFromTagName(tagName);\n },\n async attach(elm: any) {\n if(this.attachedElements.has(elm)) return;\n this.attachedElements.add(elm);\n await this.updateAutoRanges();\n },\n async detach(elm: any) {\n if(!this.attachedElements.has(elm)) return;\n this.attachedElements.delete(elm);\n await this.updateAutoRanges();\n },\n async updateAutoRanges() {\n for(const attr of (this.element as Element).attributes) {\n if(!attr['name'].startsWith('auto-range-')) continue;\n const field = attr['name'].replace('auto-range-', '');\n const autoRangeValues = new Set();\n for(const elm of this.attachedElements) {\n for(const value of await elm.getValuesOfField(field)) {\n autoRangeValues.add(value);\n }\n }\n const idField = `${this.rangeId}_${field}`;\n const id = `store://local.${idField}`;\n const ldpContains = Array.from(autoRangeValues).map(id => ({'@id' : id}));\n const data = {\n \"@type\": \"ldp:Container\",\n \"@context\": this.context,\n \"ldp:contains\" : ldpContains,\n };\n sibStore.setLocalData(data, id);\n }\n },\n change(resource: object): void {\n this.element.dispatchEvent(\n new CustomEvent('formChange', {\n bubbles: true,\n detail: { resource },\n }),\n );\n },\n async inputChange(): Promise<void> {\n this.change(this.value);\n },\n getSubmitTemplate() {\n return html`\n <div class=${ifDefined(this.classSubmitButton)}>\n ${this.submitWidget === 'button' ? html`\n <button type=\"submit\">${this.submitButton || ''}</button>\n ` : html`\n <input type=\"submit\" value=${ifDefined(this.submitButton || undefined)}>\n `}\n </div>\n ` \n },\n empty(): void {},\n async populate(): Promise<void> {\n await this.replaceAttributesData();\n if(this.submitButton == null) {\n this.element.addEventListener('input', () => this.inputChange());\n } else {\n this.element.addEventListener('submit', (e: Event) => {\n e.preventDefault();\n this.inputChange();\n });\n }\n const fields = await this.getFields();\n const widgetTemplates = await Promise.all(fields.map((field: string) => this.createWidgetTemplate(field)));\n const template = html`\n <form>\n ${widgetTemplates}\n ${this.submitButton == null ? '' : this.getSubmitTemplate()}\n </form>\n `;\n render(template, this.element);\n }\n};\n\nSib.register(SolidFormSearch);"]}
@@ -0,0 +1,354 @@
1
+ function _templateObject9() {
2
+ const data = _taggedTemplateLiteral(["\n ", "\n "]);
3
+
4
+ _templateObject9 = function () {
5
+ return data;
6
+ };
7
+
8
+ return data;
9
+ }
10
+
11
+ function _templateObject8() {
12
+ const data = _taggedTemplateLiteral(["<input type=\"reset\" />"]);
13
+
14
+ _templateObject8 = function () {
15
+ return data;
16
+ };
17
+
18
+ return data;
19
+ }
20
+
21
+ function _templateObject7() {
22
+ const data = _taggedTemplateLiteral(["\n <form\n @submit=", "\n @reset=", "\n >\n ", "\n ", "\n ", "\n </form>\n "]);
23
+
24
+ _templateObject7 = function () {
25
+ return data;
26
+ };
27
+
28
+ return data;
29
+ }
30
+
31
+ function _templateObject6() {
32
+ const data = _taggedTemplateLiteral(["\n <div data-id=\"error\"></div>\n ", "\n ", "\n "]);
33
+
34
+ _templateObject6 = function () {
35
+ return data;
36
+ };
37
+
38
+ return data;
39
+ }
40
+
41
+ function _templateObject5() {
42
+ const data = _taggedTemplateLiteral(["\n <input type=\"submit\" value=", ">\n "]);
43
+
44
+ _templateObject5 = function () {
45
+ return data;
46
+ };
47
+
48
+ return data;
49
+ }
50
+
51
+ function _templateObject4() {
52
+ const data = _taggedTemplateLiteral(["\n <button type=\"submit\">", "</button>\n "]);
53
+
54
+ _templateObject4 = function () {
55
+ return data;
56
+ };
57
+
58
+ return data;
59
+ }
60
+
61
+ function _templateObject3() {
62
+ const data = _taggedTemplateLiteral(["\n <div class=", ">\n ", "\n </div>\n "]);
63
+
64
+ _templateObject3 = function () {
65
+ return data;
66
+ };
67
+
68
+ return data;
69
+ }
70
+
71
+ function _templateObject2() {
72
+ const data = _taggedTemplateLiteral(["\n <li>", "</li>\n "]);
73
+
74
+ _templateObject2 = function () {
75
+ return data;
76
+ };
77
+
78
+ return data;
79
+ }
80
+
81
+ function _templateObject() {
82
+ const data = _taggedTemplateLiteral(["\n <p>A validation error occurred.</p>\n <ul>\n ", "\n </ul>\n "]);
83
+
84
+ _templateObject = function () {
85
+ return data;
86
+ };
87
+
88
+ return data;
89
+ }
90
+
91
+ function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
92
+
93
+ import { Sib } from '../libs/Sib.js';
94
+ import { WidgetMixin } from '../mixins/widgetMixin.js';
95
+ import { StoreMixin } from '../mixins/storeMixin.js';
96
+ import { NextMixin } from '../mixins/nextMixin.js';
97
+ import { ValidationMixin } from '../mixins/validationMixin.js';
98
+ import { store } from '../libs/store/store.js';
99
+ import { setDeepProperty, transformArrayToContainer } from '../libs/helpers.js';
100
+ import { html, render } from '../_snowpack/pkg/lit-html.js';
101
+ import { ifDefined } from '../_snowpack/pkg/lit-html/directives/if-defined.js';
102
+ export const SolidForm = {
103
+ name: 'solid-form',
104
+ use: [WidgetMixin, StoreMixin, NextMixin, ValidationMixin],
105
+ attributes: {
106
+ defaultWidget: {
107
+ type: String,
108
+ default: 'solid-form-label-text'
109
+ },
110
+ naked: {
111
+ type: String,
112
+ default: null
113
+ },
114
+ submitButton: {
115
+ type: String,
116
+ default: undefined,
117
+ callback: function (newValue, oldValue) {
118
+ if (this.noRender == null && newValue !== oldValue) this.populate();
119
+ }
120
+ },
121
+ submitWidget: {
122
+ type: String,
123
+ default: null
124
+ },
125
+ classSubmitButton: {
126
+ type: String,
127
+ default: undefined
128
+ },
129
+ partial: {
130
+ type: Boolean,
131
+ default: null
132
+ },
133
+ autosave: {
134
+ type: Boolean,
135
+ default: null
136
+ }
137
+ },
138
+ initialState: {
139
+ error: ''
140
+ },
141
+
142
+ get defaultMultipleWidget() {
143
+ return 'solid-multiple-form';
144
+ },
145
+
146
+ get defaultSetWidget() {
147
+ return 'solid-set-default';
148
+ },
149
+
150
+ get value() {
151
+ const values = {};
152
+ this.widgets.forEach(widget => {
153
+ const name = (widget.component || widget).name;
154
+ if (name == null) return;
155
+ let value = widget.component ? widget.component.getValue() : widget.value;
156
+
157
+ try {
158
+ value = JSON.parse(value);
159
+ } catch (e) {}
160
+
161
+ setDeepProperty(values, name.split('.'), value);
162
+ }); // add @id if edition
163
+
164
+ if (this.resource && !this.resource.isContainer()) values['@id'] = this.resourceId;
165
+ return values;
166
+ },
167
+
168
+ get isNaked() {
169
+ return this.element.hasAttribute('naked');
170
+ },
171
+
172
+ get isSavingAutomatically() {
173
+ return this.autosave !== null;
174
+ },
175
+
176
+ isCreationForm(formValue) {
177
+ return !('@id' in formValue);
178
+ },
179
+
180
+ async getFormValue() {
181
+ let value = this.value;
182
+
183
+ if (this.resource && !this.resource.isContainer()) {
184
+ for (let predicate of Object.keys(this.value)) {
185
+ // add @id for nested resources
186
+ const object = await this.resource[predicate];
187
+ if (object && object['@id'] && !value[predicate]['@id']) value[predicate]['@id'] = object['@id'];
188
+ }
189
+ }
190
+
191
+ return transformArrayToContainer(value);
192
+ },
193
+
194
+ getWidget(field, isSet = false) {
195
+ let tagName = '';
196
+ const widgetAttribute = this.element.getAttribute('widget-' + field); // Choose widget
197
+
198
+ if (!widgetAttribute && this.element.hasAttribute('upload-url-' + field)) {
199
+ tagName = 'solid-form-file';
200
+ } else if (!widgetAttribute && (this.element.hasAttribute('range-' + field) || this.element.hasAttribute('enum-' + field))) {
201
+ tagName = 'solid-form-dropdown';
202
+ } else {
203
+ tagName = widgetAttribute || (!isSet ? this.defaultWidget : this.defaultSetWidget);
204
+ } // Create widget
205
+
206
+
207
+ return this.widgetFromTagName(tagName);
208
+ },
209
+
210
+ change(resource) {
211
+ this.element.dispatchEvent(new CustomEvent('formChange', {
212
+ bubbles: true,
213
+ detail: {
214
+ resource
215
+ }
216
+ }));
217
+ },
218
+
219
+ async save() {
220
+ this.toggleLoaderHidden(false);
221
+ this.hideError();
222
+ const resource = await this.getFormValue();
223
+ resource['@context'] = this.context;
224
+ let saved;
225
+
226
+ try {
227
+ if (this.partial == null) {
228
+ saved = resource['@id'] ? await store.put(resource, this.resourceId) : await store.post(resource, this.resourceId);
229
+ } else {
230
+ saved = await store.patch(resource, this.resourceId);
231
+ }
232
+ } catch (e) {
233
+ this.toggleLoaderHidden(true);
234
+
235
+ if (e) {
236
+ // if server error
237
+ e.json().then(error => this.showError(error));
238
+ throw e;
239
+ } // else, ldpframework error, we continue
240
+
241
+ }
242
+
243
+ this.element.dispatchEvent(new CustomEvent('save', {
244
+ bubbles: true,
245
+ detail: {
246
+ resource: resource,
247
+ id: saved || null
248
+ }
249
+ }));
250
+ this.toggleLoaderHidden(true);
251
+ return saved;
252
+ },
253
+
254
+ async submitForm() {
255
+ let id;
256
+
257
+ try {
258
+ id = (await this.save()) || this.getFormValue()['@id'];
259
+ } catch (e) {
260
+ return;
261
+ }
262
+
263
+ this.reset();
264
+ this.goToNext({
265
+ '@id': id
266
+ });
267
+ },
268
+
269
+ async onInput() {
270
+ const formValue = await this.getFormValue();
271
+ this.change(formValue);
272
+ },
273
+
274
+ async onChange() {
275
+ const formValue = await this.getFormValue();
276
+ if (!this.isCreationForm(formValue) && this.isSavingAutomatically) this.submitForm(); // if autosave, submitForm
277
+ },
278
+
279
+ findErrorMessage(errors, errorFullName = '') {
280
+ let errorsArray = [];
281
+ errors.forEach(member => {
282
+ let errorNextName = Object.values(member)[0];
283
+ let errorAddName = errorFullName === "" ? errorNextName : errorFullName.concat(' - ', errorNextName);
284
+
285
+ if (Array.isArray(Object.values(member)[1]) === true) {
286
+ let errorMessage = Object.values(member)[1];
287
+ let errorGlobal = errorAddName.concat(': ', errorMessage.join(', '));
288
+ errorsArray.push(errorGlobal);
289
+ } else {
290
+ let objectErrors = Object.values(member)[1];
291
+ let subErrors = Object.entries(objectErrors);
292
+ errorsArray = [...errorsArray, ...this.findErrorMessage(subErrors, errorAddName)];
293
+ }
294
+ });
295
+ return errorsArray;
296
+ },
297
+
298
+ empty() {},
299
+
300
+ showError(e) {
301
+ let errors = Object.entries(e).filter(field => !field[0].startsWith('@context'));
302
+ const errorTemplate = html(_templateObject(), this.findErrorMessage(errors).map(field => html(_templateObject2(), field))); // If field exists pick its label (unsure if that's easily possible)
303
+ // In this.getFields() map with each field and get label
304
+ // If it does not just add a notice as we do that it's missing that field
305
+ // Validation message in english ?
306
+
307
+ const parentElement = this.element.querySelector('[data-id=error]');
308
+ if (parentElement) render(errorTemplate, parentElement);
309
+ },
310
+
311
+ hideError() {
312
+ const parentElement = this.element.querySelector('[data-id=error]');
313
+ if (parentElement) render('', parentElement);
314
+ },
315
+
316
+ reset() {
317
+ if (!this.isNaked) this.element.querySelector('form').reset();
318
+ },
319
+
320
+ onSubmit(event) {
321
+ if (!this.isNaked) {
322
+ event.preventDefault();
323
+ this.performAction(); // In validationMixin, method defining what to do according to the present attributes
324
+ }
325
+ },
326
+
327
+ validateModal() {
328
+ //send method to validationMixin, used by the dialog modal and performAction method
329
+ return this.submitForm();
330
+ },
331
+
332
+ onReset() {
333
+ if (!this.isNaked) setTimeout(() => this.onInput());
334
+ },
335
+
336
+ getSubmitTemplate() {
337
+ return html(_templateObject3(), ifDefined(this.classSubmitButton), this.submitWidget === 'button' ? html(_templateObject4(), this.submitButton || this.t("solid-form.submit-button")) : html(_templateObject5(), this.submitButton || this.t("solid-form.submit-button")));
338
+ },
339
+
340
+ async populate() {
341
+ this.element.oninput = () => this.onInput(); // prevent from firing change multiple times
342
+
343
+
344
+ this.element.onchange = () => this.onChange();
345
+
346
+ const fields = await this.getFields();
347
+ const widgetTemplates = await Promise.all(fields.map(field => this.createWidgetTemplate(field)));
348
+ const template = html(_templateObject6(), !this.isNaked ? html(_templateObject7(), this.onSubmit.bind(this), this.onReset.bind(this), widgetTemplates, !this.isSavingAutomatically ? this.getSubmitTemplate() : '', this.element.hasAttribute('reset') ? html(_templateObject8()) : '') : html(_templateObject9(), widgetTemplates), this.getModalDialog());
349
+ render(template, this.element);
350
+ }
351
+
352
+ };
353
+ Sib.register(SolidForm);
354
+ //# sourceMappingURL=solid-form.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["solid-form.ts"],"names":["Sib","WidgetMixin","StoreMixin","NextMixin","ValidationMixin","store","setDeepProperty","transformArrayToContainer","html","render","ifDefined","SolidForm","name","use","attributes","defaultWidget","type","String","default","naked","submitButton","undefined","callback","newValue","oldValue","noRender","populate","submitWidget","classSubmitButton","partial","Boolean","autosave","initialState","error","defaultMultipleWidget","defaultSetWidget","value","values","widgets","forEach","widget","component","getValue","JSON","parse","e","split","resource","isContainer","resourceId","isNaked","element","hasAttribute","isSavingAutomatically","isCreationForm","formValue","getFormValue","predicate","Object","keys","object","getWidget","field","isSet","tagName","widgetAttribute","getAttribute","widgetFromTagName","change","dispatchEvent","CustomEvent","bubbles","detail","save","toggleLoaderHidden","hideError","context","saved","put","post","patch","json","then","showError","id","submitForm","reset","goToNext","onInput","onChange","findErrorMessage","errors","errorFullName","errorsArray","member","errorNextName","errorAddName","concat","Array","isArray","errorMessage","errorGlobal","join","push","objectErrors","subErrors","entries","empty","filter","startsWith","errorTemplate","map","parentElement","querySelector","onSubmit","event","preventDefault","performAction","validateModal","onReset","setTimeout","getSubmitTemplate","t","oninput","onchange","fields","getFields","widgetTemplates","Promise","all","createWidgetTemplate","template","bind","getModalDialog","register"],"mappings":"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","sourcesContent":["import { Sib } from '../libs/Sib';\nimport { WidgetMixin } from '../mixins/widgetMixin';\nimport { StoreMixin } from '../mixins/storeMixin';\nimport { NextMixin } from '../mixins/nextMixin';\nimport { ValidationMixin } from '../mixins/validationMixin';\nimport { store } from '../libs/store/store';\nimport { setDeepProperty, transformArrayToContainer } from '../libs/helpers';\nimport type { WidgetInterface } from '../mixins/interfaces';\n\nimport { html, render } from 'lit-html';\nimport { ifDefined } from 'lit-html/directives/if-defined';\n\nexport const SolidForm = {\n name: 'solid-form',\n use: [WidgetMixin, StoreMixin, NextMixin, ValidationMixin],\n attributes: {\n defaultWidget: {\n type: String,\n default: 'solid-form-label-text'\n },\n naked: {\n type: String,\n default: null\n },\n submitButton: {\n type: String,\n default: undefined,\n callback: function (newValue: string, oldValue: string) {\n if (this.noRender == null && newValue !== oldValue) this.populate();\n },\n },\n submitWidget: {\n type: String,\n default: null\n },\n classSubmitButton: {\n type: String,\n default: undefined,\n },\n partial: {\n type: Boolean,\n default: null\n },\n autosave: {\n type: Boolean,\n default: null\n },\n },\n initialState: {\n error: ''\n },\n get defaultMultipleWidget(): string {\n return 'solid-multiple-form';\n },\n get defaultSetWidget(): string {\n return 'solid-set-default';\n },\n get value(): object {\n const values = {};\n this.widgets.forEach((widget) => {\n const name = (widget.component || widget).name;\n if (name == null) return;\n let value = widget.component ? widget.component.getValue() : widget.value;\n try {\n value = JSON.parse(value);\n } catch (e) {}\n setDeepProperty(values, name.split('.'), value);\n });\n // add @id if edition\n if (this.resource && !this.resource.isContainer()) values['@id'] = this.resourceId;\n return values;\n },\n get isNaked(): boolean {\n return this.element.hasAttribute('naked');\n },\n get isSavingAutomatically(): boolean {\n return this.autosave !== null;\n },\n isCreationForm(formValue: object): boolean {\n return !('@id' in formValue);\n },\n async getFormValue() {\n let value = this.value;\n if (this.resource && !this.resource.isContainer()) {\n for (let predicate of Object.keys(this.value)) { // add @id for nested resources\n const object = await this.resource[predicate];\n if (object && object['@id'] && !value[predicate]['@id']) value[predicate]['@id'] = object['@id'];\n }\n }\n return transformArrayToContainer(value);\n },\n getWidget(field: string, isSet: boolean = false): WidgetInterface {\n let tagName = '';\n const widgetAttribute = this.element.getAttribute('widget-' + field);\n\n // Choose widget\n if (!widgetAttribute && this.element.hasAttribute('upload-url-' + field)) {\n tagName = 'solid-form-file'\n } else if (!widgetAttribute && (this.element.hasAttribute('range-' + field) || this.element.hasAttribute('enum-' + field))) {\n tagName = 'solid-form-dropdown'\n } else {\n tagName = widgetAttribute || (!isSet ? this.defaultWidget : this.defaultSetWidget);\n }\n // Create widget\n return this.widgetFromTagName(tagName);\n },\n change(resource: object): void {\n this.element.dispatchEvent(\n new CustomEvent('formChange', {\n bubbles: true,\n detail: { resource },\n }),\n );\n },\n async save(): Promise<object> {\n this.toggleLoaderHidden(false);\n this.hideError();\n const resource = await this.getFormValue();\n resource['@context'] = this.context;\n let saved;\n try {\n if (this.partial == null) {\n saved = resource['@id'] ?\n await store.put(resource, this.resourceId) :\n await store.post(resource, this.resourceId);\n } else {\n saved = await store.patch(resource, this.resourceId);\n }\n } catch (e) {\n this.toggleLoaderHidden(true);\n if (e) { // if server error\n e.json().then(error => this.showError(error));\n throw e;\n } // else, ldpframework error, we continue\n }\n this.element.dispatchEvent(\n new CustomEvent('save', {\n bubbles: true,\n detail: {\n resource: resource,\n id: saved || null\n },\n }),\n );\n this.toggleLoaderHidden(true);\n return saved;\n },\n async submitForm(): Promise<void> {\n let id: string;\n try {\n id = await this.save() || this.getFormValue()['@id'];\n } catch (e) { return; }\n this.reset();\n this.goToNext({'@id': id})\n },\n async onInput(): Promise<void> {\n const formValue = await this.getFormValue();\n this.change(formValue);\n },\n async onChange(): Promise<void> {\n const formValue = await this.getFormValue();\n if (!this.isCreationForm(formValue) && this.isSavingAutomatically)\n this.submitForm(); // if autosave, submitForm\n },\n findErrorMessage(errors: [string, any][], errorFullName: string = '') {\n let errorsArray: string[] = [];\n errors.forEach((member: [string, any]) => {\n let errorNextName: string = Object.values(member)[0];\n let errorAddName = (errorFullName === \"\" ? errorNextName : errorFullName.concat(' - ', errorNextName));\n if (Array.isArray(Object.values(member)[1]) === true) {\n let errorMessage: string[] = Object.values(member)[1];\n let errorGlobal = errorAddName.concat(': ', errorMessage.join(', '));\n errorsArray.push(errorGlobal);\n } else {\n let objectErrors = Object.values(member)[1];\n let subErrors = Object.entries(objectErrors);\n errorsArray = [...errorsArray, ...this.findErrorMessage(subErrors, errorAddName)];\n }\n });\n return errorsArray;\n },\n empty(): void {},\n showError(e: object) {\n let errors = Object.entries(e).filter(field => !field[0].startsWith('@context'));\n\n const errorTemplate = html`\n <p>A validation error occurred.</p>\n <ul>\n ${this.findErrorMessage(errors).map(field => html`\n <li>${field}</li>\n `)}\n </ul>\n `;\n // If field exists pick its label (unsure if that's easily possible)\n // In this.getFields() map with each field and get label\n // If it does not just add a notice as we do that it's missing that field\n\n // Validation message in english ?\n const parentElement = this.element.querySelector('[data-id=error]');\n if (parentElement) render(errorTemplate, parentElement);\n },\n hideError() {\n const parentElement = this.element.querySelector('[data-id=error]');\n if (parentElement) render('', parentElement);\n },\n reset() {\n if (!this.isNaked) this.element.querySelector('form').reset();\n },\n onSubmit(event: Event) {\n if (!this.isNaked) {\n event.preventDefault();\n this.performAction(); // In validationMixin, method defining what to do according to the present attributes\n }\n },\n validateModal() { //send method to validationMixin, used by the dialog modal and performAction method\n return this.submitForm();\n },\n onReset() {\n if (!this.isNaked) setTimeout(() => this.onInput())\n },\n getSubmitTemplate() {\n return html`\n <div class=${ifDefined(this.classSubmitButton)}>\n ${this.submitWidget === 'button' ? html`\n <button type=\"submit\">${this.submitButton || this.t(\"solid-form.submit-button\")}</button>\n ` : html`\n <input type=\"submit\" value=${this.submitButton || this.t(\"solid-form.submit-button\")}>\n `}\n </div>\n `\n },\n async populate(): Promise<void> {\n this.element.oninput = () => this.onInput(); // prevent from firing change multiple times\n this.element.onchange = () => this.onChange();\n const fields = await this.getFields();\n const widgetTemplates = await Promise.all(fields.map((field: string) => this.createWidgetTemplate(field)));\n const template = html`\n <div data-id=\"error\"></div>\n ${!this.isNaked ? html`\n <form\n @submit=${this.onSubmit.bind(this)}\n @reset=${this.onReset.bind(this)}\n >\n ${widgetTemplates}\n ${!this.isSavingAutomatically ? this.getSubmitTemplate() : ''}\n ${this.element.hasAttribute('reset')\n ? html`<input type=\"reset\" />` : ''}\n </form>\n ` : html`\n ${widgetTemplates}\n `\n }\n ${this.getModalDialog()}\n `;\n render(template, this.element);\n }\n};\n\nSib.register(SolidForm);"]}