@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.
- package/dist/_snowpack/env.js +3 -0
- package/dist/_snowpack/pkg/autolinker.js +4281 -0
- package/dist/_snowpack/pkg/autolinker.js.map +1 -0
- package/dist/_snowpack/pkg/autolinker.js.map.proxy.js +1 -0
- package/dist/_snowpack/pkg/common/_baseUnary-217dffb2.js +377 -0
- package/dist/_snowpack/pkg/common/_baseUnary-217dffb2.js.map +1 -0
- package/dist/_snowpack/pkg/common/_baseUnary-217dffb2.js.map.proxy.js +1 -0
- package/dist/_snowpack/pkg/common/_commonjsHelpers-8c19dec8.js +22 -0
- package/dist/_snowpack/pkg/common/_commonjsHelpers-8c19dec8.js.map +1 -0
- package/dist/_snowpack/pkg/common/_commonjsHelpers-8c19dec8.js.map.proxy.js +1 -0
- package/dist/_snowpack/pkg/common/decode-a4c334cf.js +216 -0
- package/dist/_snowpack/pkg/common/decode-a4c334cf.js.map +1 -0
- package/dist/_snowpack/pkg/common/decode-a4c334cf.js.map.proxy.js +1 -0
- package/dist/_snowpack/pkg/common/lit-html-babd44cd.js +1119 -0
- package/dist/_snowpack/pkg/common/lit-html-babd44cd.js.map +1 -0
- package/dist/_snowpack/pkg/common/lit-html-babd44cd.js.map.proxy.js +1 -0
- package/dist/_snowpack/pkg/delta-markdown-for-quill.js +25677 -0
- package/dist/_snowpack/pkg/delta-markdown-for-quill.js.map +1 -0
- package/dist/_snowpack/pkg/delta-markdown-for-quill.js.map.proxy.js +1 -0
- package/dist/_snowpack/pkg/dialog-polyfill.js +859 -0
- package/dist/_snowpack/pkg/dialog-polyfill.js.map +1 -0
- package/dist/_snowpack/pkg/dialog-polyfill.js.map.proxy.js +1 -0
- package/dist/_snowpack/pkg/fusejs.js +1783 -0
- package/dist/_snowpack/pkg/fusejs.js.map +1 -0
- package/dist/_snowpack/pkg/fusejs.js.map.proxy.js +1 -0
- package/dist/_snowpack/pkg/import-map.json +25 -0
- package/dist/_snowpack/pkg/jsonld-context-parser.js +804 -0
- package/dist/_snowpack/pkg/jsonld-context-parser.js.map +1 -0
- package/dist/_snowpack/pkg/jsonld-context-parser.js.map.proxy.js +1 -0
- package/dist/_snowpack/pkg/leaflet/dist/leaflet.css +640 -0
- package/dist/_snowpack/pkg/leaflet/dist/leaflet.css.proxy.js +10 -0
- package/dist/_snowpack/pkg/leaflet.js +14066 -0
- package/dist/_snowpack/pkg/leaflet.js.map +1 -0
- package/dist/_snowpack/pkg/leaflet.js.map.proxy.js +1 -0
- package/dist/_snowpack/pkg/leaflet.markercluster/dist/MarkerCluster.Default.css +60 -0
- package/dist/_snowpack/pkg/leaflet.markercluster/dist/MarkerCluster.Default.css.proxy.js +10 -0
- package/dist/_snowpack/pkg/leaflet.markercluster/dist/MarkerCluster.css +14 -0
- package/dist/_snowpack/pkg/leaflet.markercluster/dist/MarkerCluster.css.proxy.js +10 -0
- package/dist/_snowpack/pkg/leaflet.markercluster.js +2697 -0
- package/dist/_snowpack/pkg/leaflet.markercluster.js.map +1 -0
- package/dist/_snowpack/pkg/leaflet.markercluster.js.map.proxy.js +1 -0
- package/dist/_snowpack/pkg/lit-html/directives/if-defined.js +40 -0
- package/dist/_snowpack/pkg/lit-html/directives/if-defined.js.map +1 -0
- package/dist/_snowpack/pkg/lit-html/directives/if-defined.js.map.proxy.js +1 -0
- package/dist/_snowpack/pkg/lit-html/directives/unsafe-html.js +46 -0
- package/dist/_snowpack/pkg/lit-html/directives/unsafe-html.js.map +1 -0
- package/dist/_snowpack/pkg/lit-html/directives/unsafe-html.js.map.proxy.js +1 -0
- package/dist/_snowpack/pkg/lit-html/directives/until.js +88 -0
- package/dist/_snowpack/pkg/lit-html/directives/until.js.map +1 -0
- package/dist/_snowpack/pkg/lit-html/directives/until.js.map.proxy.js +1 -0
- package/dist/_snowpack/pkg/lit-html.js +92 -0
- package/dist/_snowpack/pkg/lit-html.js.map +1 -0
- package/dist/_snowpack/pkg/lit-html.js.map.proxy.js +1 -0
- package/dist/_snowpack/pkg/markdown-it.js +11860 -0
- package/dist/_snowpack/pkg/markdown-it.js.map +1 -0
- package/dist/_snowpack/pkg/markdown-it.js.map.proxy.js +1 -0
- package/dist/_snowpack/pkg/quill/dist/quill.snow.css +945 -0
- package/dist/_snowpack/pkg/quill/dist/quill.snow.css.proxy.js +10 -0
- package/dist/_snowpack/pkg/quill-delta-to-markdown.js +1029 -0
- package/dist/_snowpack/pkg/quill-delta-to-markdown.js.map +1 -0
- package/dist/_snowpack/pkg/quill-delta-to-markdown.js.map.proxy.js +1 -0
- package/dist/_snowpack/pkg/quill.js +13382 -0
- package/dist/_snowpack/pkg/quill.js.map +1 -0
- package/dist/_snowpack/pkg/quill.js.map.proxy.js +1 -0
- package/dist/_snowpack/pkg/slim-select.js +4 -0
- package/dist/_snowpack/pkg/slim-select.js.map +1 -0
- package/dist/_snowpack/pkg/slim-select.js.map.proxy.js +1 -0
- package/dist/_snowpack/pkg/tui-calendar/dist/tui-calendar.css +1164 -0
- package/dist/_snowpack/pkg/tui-calendar/dist/tui-calendar.css.proxy.js +10 -0
- package/dist/_snowpack/pkg/tui-calendar.js +42285 -0
- package/dist/_snowpack/pkg/tui-calendar.js.map +1 -0
- package/dist/_snowpack/pkg/tui-calendar.js.map.proxy.js +1 -0
- package/dist/components/solid-ac-checker.js +58 -0
- package/dist/components/solid-ac-checker.js.map +1 -0
- package/dist/components/solid-calendar.js +87 -0
- package/dist/components/solid-calendar.js.map +1 -0
- package/dist/components/solid-delete.js +111 -0
- package/dist/components/solid-delete.js.map +1 -0
- package/dist/components/solid-display.js +194 -0
- package/dist/components/solid-display.js.map +1 -0
- package/dist/components/solid-form-search.js +226 -0
- package/dist/components/solid-form-search.js.map +1 -0
- package/dist/components/solid-form.js +354 -0
- package/dist/components/solid-form.js.map +1 -0
- package/dist/components/solid-lang.js +46 -0
- package/dist/components/solid-lang.js.map +1 -0
- package/dist/components/solid-map.js +242 -0
- package/dist/components/solid-map.js.map +1 -0
- package/dist/components/solid-table.js +263 -0
- package/dist/components/solid-table.js.map +1 -0
- package/dist/components/solid-widget.js +94 -0
- package/dist/components/solid-widget.js.map +1 -0
- package/dist/import.css +4 -0
- package/dist/index.js +43 -0
- package/dist/index.js.map +1 -0
- package/dist/libs/Component.js +19 -0
- package/dist/libs/Component.js.map +1 -0
- package/dist/libs/ComponentFactory.js +196 -0
- package/dist/libs/ComponentFactory.js.map +1 -0
- package/dist/libs/Compositor.js +103 -0
- package/dist/libs/Compositor.js.map +1 -0
- package/dist/libs/Sib.js +58 -0
- package/dist/libs/Sib.js.map +1 -0
- package/dist/libs/helpers.js +219 -0
- package/dist/libs/helpers.js.map +1 -0
- package/dist/libs/interfaces.js +6 -0
- package/dist/libs/interfaces.js.map +1 -0
- package/dist/libs/lit-helpers.js +169 -0
- package/dist/libs/lit-helpers.js.map +1 -0
- package/dist/libs/polyfills.js +40 -0
- package/dist/libs/polyfills.js.map +1 -0
- package/dist/libs/store/store.js +802 -0
- package/dist/libs/store/store.js.map +1 -0
- package/dist/locales/en.json +10 -0
- package/dist/locales/en.json.proxy.js +2 -0
- package/dist/locales/fr.json +10 -0
- package/dist/locales/fr.json.proxy.js +2 -0
- package/dist/mixins/attributeBinderMixin.js +124 -0
- package/dist/mixins/attributeBinderMixin.js.map +1 -0
- package/dist/mixins/contextMixin.js +28 -0
- package/dist/mixins/contextMixin.js.map +1 -0
- package/dist/mixins/counterMixin.js +75 -0
- package/dist/mixins/counterMixin.js.map +1 -0
- package/dist/mixins/federationMixin.js +63 -0
- package/dist/mixins/federationMixin.js.map +1 -0
- package/dist/mixins/filterMixin.js +195 -0
- package/dist/mixins/filterMixin.js.map +1 -0
- package/dist/mixins/grouperMixin.js +80 -0
- package/dist/mixins/grouperMixin.js.map +1 -0
- package/dist/mixins/highlighterMixin.js +42 -0
- package/dist/mixins/highlighterMixin.js.map +1 -0
- package/dist/mixins/interfaces.js +8 -0
- package/dist/mixins/interfaces.js.map +1 -0
- package/dist/mixins/listMixin.js +136 -0
- package/dist/mixins/listMixin.js.map +1 -0
- package/dist/mixins/nextMixin.js +26 -0
- package/dist/mixins/nextMixin.js.map +1 -0
- package/dist/mixins/paginateMixin.js +110 -0
- package/dist/mixins/paginateMixin.js.map +1 -0
- package/dist/mixins/requiredMixin.js +34 -0
- package/dist/mixins/requiredMixin.js.map +1 -0
- package/dist/mixins/sorterMixin.js +149 -0
- package/dist/mixins/sorterMixin.js.map +1 -0
- package/dist/mixins/storeMixin.js +102 -0
- package/dist/mixins/storeMixin.js.map +1 -0
- package/dist/mixins/translationMixin.js +68 -0
- package/dist/mixins/translationMixin.js.map +1 -0
- package/dist/mixins/validationMixin.js +113 -0
- package/dist/mixins/validationMixin.js.map +1 -0
- package/dist/mixins/widgetMixin.js +447 -0
- package/dist/mixins/widgetMixin.js.map +1 -0
- package/dist/new-widgets/attributeMixins/actionMixin.js +14 -0
- package/dist/new-widgets/attributeMixins/actionMixin.js.map +1 -0
- package/dist/new-widgets/attributeMixins/blankMixin.js +10 -0
- package/dist/new-widgets/attributeMixins/blankMixin.js.map +1 -0
- package/dist/new-widgets/attributeMixins/booleanMixin.js +10 -0
- package/dist/new-widgets/attributeMixins/booleanMixin.js.map +1 -0
- package/dist/new-widgets/attributeMixins/index.js +20 -0
- package/dist/new-widgets/attributeMixins/index.js.map +1 -0
- package/dist/new-widgets/attributeMixins/mailtoMixin.js +10 -0
- package/dist/new-widgets/attributeMixins/mailtoMixin.js.map +1 -0
- package/dist/new-widgets/attributeMixins/multipleMixin.js +28 -0
- package/dist/new-widgets/attributeMixins/multipleMixin.js.map +1 -0
- package/dist/new-widgets/attributeMixins/numberMixin.js +10 -0
- package/dist/new-widgets/attributeMixins/numberMixin.js.map +1 -0
- package/dist/new-widgets/attributeMixins/placeholderMixin.js +19 -0
- package/dist/new-widgets/attributeMixins/placeholderMixin.js.map +1 -0
- package/dist/new-widgets/attributeMixins/telMixin.js +10 -0
- package/dist/new-widgets/attributeMixins/telMixin.js.map +1 -0
- package/dist/new-widgets/baseWidgetMixin.js +122 -0
- package/dist/new-widgets/baseWidgetMixin.js.map +1 -0
- package/dist/new-widgets/callbackMixins/autocompletionMixin.js +104 -0
- package/dist/new-widgets/callbackMixins/autocompletionMixin.js.map +1 -0
- package/dist/new-widgets/callbackMixins/index.js +8 -0
- package/dist/new-widgets/callbackMixins/index.js.map +1 -0
- package/dist/new-widgets/callbackMixins/richtextMixin.js +42 -0
- package/dist/new-widgets/callbackMixins/richtextMixin.js.map +1 -0
- package/dist/new-widgets/callbackMixins/slimselect.css +2 -0
- package/dist/new-widgets/callbackMixins/slimselect.css.proxy.js +10 -0
- package/dist/new-widgets/new-widget-factory.js +96 -0
- package/dist/new-widgets/new-widget-factory.js.map +1 -0
- package/dist/new-widgets/templateAdditionMixins/addableMixin.js +41 -0
- package/dist/new-widgets/templateAdditionMixins/addableMixin.js.map +1 -0
- package/dist/new-widgets/templateAdditionMixins/index.js +14 -0
- package/dist/new-widgets/templateAdditionMixins/index.js.map +1 -0
- package/dist/new-widgets/templateAdditionMixins/labelLastMixin.js +29 -0
- package/dist/new-widgets/templateAdditionMixins/labelLastMixin.js.map +1 -0
- package/dist/new-widgets/templateAdditionMixins/labelMixin.js +31 -0
- package/dist/new-widgets/templateAdditionMixins/labelMixin.js.map +1 -0
- package/dist/new-widgets/templates/defaultTemplatesDirectory.js +35 -0
- package/dist/new-widgets/templates/defaultTemplatesDirectory.js.map +1 -0
- package/dist/new-widgets/templates/displayTemplatesDirectory.js +89 -0
- package/dist/new-widgets/templates/displayTemplatesDirectory.js.map +1 -0
- package/dist/new-widgets/templates/formTemplatesDirectory.js +397 -0
- package/dist/new-widgets/templates/formTemplatesDirectory.js.map +1 -0
- package/dist/new-widgets/templates/groupTemplatesDirectory.js +21 -0
- package/dist/new-widgets/templates/groupTemplatesDirectory.js.map +1 -0
- package/dist/new-widgets/templates/index.js +7 -0
- package/dist/new-widgets/templates/index.js.map +1 -0
- package/dist/new-widgets/templates/setTemplatesDirectory.js +49 -0
- package/dist/new-widgets/templates/setTemplatesDirectory.js.map +1 -0
- package/dist/new-widgets/templatesDependencies/altMixin.js +13 -0
- package/dist/new-widgets/templatesDependencies/altMixin.js.map +1 -0
- package/dist/new-widgets/templatesDependencies/editableMixin.js +77 -0
- package/dist/new-widgets/templatesDependencies/editableMixin.js.map +1 -0
- package/dist/new-widgets/templatesDependencies/filterRangeFormMixin.js +38 -0
- package/dist/new-widgets/templatesDependencies/filterRangeFormMixin.js.map +1 -0
- package/dist/new-widgets/templatesDependencies/formCheckboxMixin.js +14 -0
- package/dist/new-widgets/templatesDependencies/formCheckboxMixin.js.map +1 -0
- package/dist/new-widgets/templatesDependencies/formCheckboxesMixin.js +51 -0
- package/dist/new-widgets/templatesDependencies/formCheckboxesMixin.js.map +1 -0
- package/dist/new-widgets/templatesDependencies/formDropdownMixin.js +66 -0
- package/dist/new-widgets/templatesDependencies/formDropdownMixin.js.map +1 -0
- package/dist/new-widgets/templatesDependencies/formFileMixin.js +81 -0
- package/dist/new-widgets/templatesDependencies/formFileMixin.js.map +1 -0
- package/dist/new-widgets/templatesDependencies/formLengthMixin.js +19 -0
- package/dist/new-widgets/templatesDependencies/formLengthMixin.js.map +1 -0
- package/dist/new-widgets/templatesDependencies/formMinMaxMixin.js +19 -0
- package/dist/new-widgets/templatesDependencies/formMinMaxMixin.js.map +1 -0
- package/dist/new-widgets/templatesDependencies/formMixin.js +66 -0
- package/dist/new-widgets/templatesDependencies/formMixin.js.map +1 -0
- package/dist/new-widgets/templatesDependencies/formNumberMixin.js +14 -0
- package/dist/new-widgets/templatesDependencies/formNumberMixin.js.map +1 -0
- package/dist/new-widgets/templatesDependencies/formRadioMixin.js +16 -0
- package/dist/new-widgets/templatesDependencies/formRadioMixin.js.map +1 -0
- package/dist/new-widgets/templatesDependencies/formStepMixin.js +13 -0
- package/dist/new-widgets/templatesDependencies/formStepMixin.js.map +1 -0
- package/dist/new-widgets/templatesDependencies/multipleFormMixin.js +107 -0
- package/dist/new-widgets/templatesDependencies/multipleFormMixin.js.map +1 -0
- package/dist/new-widgets/templatesDependencies/multipleselectFormMixin.js +74 -0
- package/dist/new-widgets/templatesDependencies/multipleselectFormMixin.js.map +1 -0
- package/dist/new-widgets/templatesDependencies/patternMixin.js +19 -0
- package/dist/new-widgets/templatesDependencies/patternMixin.js.map +1 -0
- package/dist/new-widgets/templatesDependencies/rangeMixin.js +110 -0
- package/dist/new-widgets/templatesDependencies/rangeMixin.js.map +1 -0
- package/dist/new-widgets/templatesDependencies/setMixin.js +12 -0
- package/dist/new-widgets/templatesDependencies/setMixin.js.map +1 -0
- package/dist/new-widgets/templatesDependencies/valueRichtextMixin.js +12 -0
- package/dist/new-widgets/templatesDependencies/valueRichtextMixin.js.map +1 -0
- package/dist/new-widgets/valueTransformationMixins/autolinkMixin.js +18 -0
- package/dist/new-widgets/valueTransformationMixins/autolinkMixin.js.map +1 -0
- package/dist/new-widgets/valueTransformationMixins/dateMixin.js +35 -0
- package/dist/new-widgets/valueTransformationMixins/dateMixin.js.map +1 -0
- package/dist/new-widgets/valueTransformationMixins/dateTimeMixin.js +16 -0
- package/dist/new-widgets/valueTransformationMixins/dateTimeMixin.js.map +1 -0
- package/dist/new-widgets/valueTransformationMixins/index.js +16 -0
- package/dist/new-widgets/valueTransformationMixins/index.js.map +1 -0
- package/dist/new-widgets/valueTransformationMixins/markdownMixin.js +25 -0
- package/dist/new-widgets/valueTransformationMixins/markdownMixin.js.map +1 -0
- package/dist/new-widgets/valueTransformationMixins/multilineMixin.js +17 -0
- package/dist/new-widgets/valueTransformationMixins/multilineMixin.js.map +1 -0
- package/dist/new-widgets/valueTransformationMixins/oembedMixin.js +27 -0
- package/dist/new-widgets/valueTransformationMixins/oembedMixin.js.map +1 -0
- package/dist/solid-template-element.js +164 -0
- package/dist/solid-template-element.js.map +1 -0
- package/dist/style/default-theme.css +24 -0
- package/dist/style/default-theme.css.proxy.js +10 -0
- package/dist/widgets/baseWidget.js +332 -0
- package/dist/widgets/baseWidget.js.map +1 -0
- package/dist/widgets/widget-factory.js +24 -0
- package/dist/widgets/widget-factory.js.map +1 -0
- 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);"]}
|