@startinblox/core 0.17.27 → 0.17.29
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.
|
@@ -1 +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);"]}
|
|
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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,SAASA,GAAT,QAAoB,aAApB;AACA,SAASC,WAAT,QAA4B,uBAA5B;AACA,SAASC,UAAT,QAA2B,sBAA3B;AACA,SAASC,SAAT,QAA0B,qBAA1B;AACA,SAASC,eAAT,QAAgC,2BAAhC;AACA,SAASC,KAAT,QAAsB,qBAAtB;AACA,SAASC,eAAT,EAA0BC,yBAA1B,QAA2D,iBAA3D;AAGA,SAASC,IAAT,EAAeC,MAAf,QAA6B,UAA7B;AACA,SAASC,SAAT,QAA0B,gCAA1B;AAEA,OAAO,MAAMC,SAAS,GAAG;AACvBC,EAAAA,IAAI,EAAE,YADiB;AAEvBC,EAAAA,GAAG,EAAE,CAACZ,WAAD,EAAcC,UAAd,EAA0BC,SAA1B,EAAqCC,eAArC,CAFkB;AAGvBU,EAAAA,UAAU,EAAE;AACVC,IAAAA,aAAa,EAAE;AACbC,MAAAA,IAAI,EAAEC,MADO;AAEbC,MAAAA,OAAO,EAAE;AAFI,KADL;AAKVC,IAAAA,KAAK,EAAE;AACLH,MAAAA,IAAI,EAAEC,MADD;AAELC,MAAAA,OAAO,EAAE;AAFJ,KALG;AASVE,IAAAA,YAAY,EAAE;AACZJ,MAAAA,IAAI,EAAEC,MADM;AAEZC,MAAAA,OAAO,EAAEG,SAFG;AAGZC,MAAAA,QAAQ,EAAE,UAAUC,QAAV,EAA4BC,QAA5B,EAA8C;AACtD,YAAI,KAAKC,QAAL,IAAiB,IAAjB,IAAyBF,QAAQ,KAAKC,QAA1C,EAAoD,KAAKE,QAAL;AACrD;AALW,KATJ;AAgBVC,IAAAA,YAAY,EAAE;AACZX,MAAAA,IAAI,EAAEC,MADM;AAEZC,MAAAA,OAAO,EAAE;AAFG,KAhBJ;AAoBVU,IAAAA,iBAAiB,EAAE;AACjBZ,MAAAA,IAAI,EAAEC,MADW;AAEjBC,MAAAA,OAAO,EAAEG;AAFQ,KApBT;AAwBVQ,IAAAA,OAAO,EAAE;AACPb,MAAAA,IAAI,EAAEc,OADC;AAEPZ,MAAAA,OAAO,EAAE;AAFF,KAxBC;AA4BVa,IAAAA,QAAQ,EAAE;AACRf,MAAAA,IAAI,EAAEc,OADE;AAERZ,MAAAA,OAAO,EAAE;AAFD;AA5BA,GAHW;AAoCvBc,EAAAA,YAAY,EAAE;AACZC,IAAAA,KAAK,EAAE;AADK,GApCS;;AAuCvB,MAAIC,qBAAJ,GAAoC;AAClC,WAAO,qBAAP;AACD,GAzCsB;;AA0CvB,MAAIC,gBAAJ,GAA+B;AAC7B,WAAO,mBAAP;AACD,GA5CsB;;AA6CvB,MAAIC,KAAJ,GAAoB;AAClB,UAAMC,MAAM,GAAG,EAAf;AACA,SAAKC,OAAL,CAAaC,OAAb,CAAsBC,MAAD,IAAY;AAC/B,YAAM5B,IAAI,GAAG,CAAC4B,MAAM,CAACC,SAAP,IAAoBD,MAArB,EAA6B5B,IAA1C;AACA,UAAIA,IAAI,IAAI,IAAZ,EAAkB;AAClB,UAAIwB,KAAK,GAAGI,MAAM,CAACC,SAAP,GAAmBD,MAAM,CAACC,SAAP,CAAiBC,QAAjB,EAAnB,GAAiDF,MAAM,CAACJ,KAApE;;AACA,UAAI;AACFA,QAAAA,KAAK,GAAGO,IAAI,CAACC,KAAL,CAAWR,KAAX,CAAR;AACD,OAFD,CAEE,OAAOS,CAAP,EAAU,CAAE;;AACdvC,MAAAA,eAAe,CAAC+B,MAAD,EAASzB,IAAI,CAACkC,KAAL,CAAW,GAAX,CAAT,EAA0BV,KAA1B,CAAf;AACD,KARD,EAFkB,CAWlB;;AACA,QAAI,KAAKW,QAAL,IAAiB,CAAC,KAAKA,QAAL,CAAcC,WAAd,EAAtB,EAAmDX,MAAM,CAAC,KAAD,CAAN,GAAgB,KAAKY,UAArB;AACnD,WAAOZ,MAAP;AACD,GA3DsB;;AA4DvB,MAAIa,OAAJ,GAAuB;AACrB,WAAO,KAAKC,OAAL,CAAaC,YAAb,CAA0B,OAA1B,CAAP;AACD,GA9DsB;;AA+DvB,MAAIC,qBAAJ,GAAqC;AACnC,WAAO,KAAKtB,QAAL,KAAkB,IAAzB;AACD,GAjEsB;;AAkEvBuB,EAAAA,cAAc,CAACC,SAAD,EAA6B;AACzC,WAAO,EAAE,SAASA,SAAX,CAAP;AACD,GApEsB;;AAqEvB,QAAMC,YAAN,GAAqB;AACnB,QAAIpB,KAAK,GAAG,KAAKA,KAAjB;;AACA,QAAI,KAAKW,QAAL,IAAiB,CAAC,KAAKA,QAAL,CAAcC,WAAd,EAAtB,EAAmD;AACjD,WAAK,IAAIS,SAAT,IAAsBC,MAAM,CAACC,IAAP,CAAY,KAAKvB,KAAjB,CAAtB,EAA+C;AAAE;AAC/C,cAAMwB,MAAM,GAAG,MAAM,KAAKb,QAAL,CAAcU,SAAd,CAArB;AACA,YAAIG,MAAM,IAAIA,MAAM,CAAC,KAAD,CAAhB,IAA2B,CAACxB,KAAK,CAACqB,SAAD,CAAL,CAAiB,KAAjB,CAAhC,EAAyDrB,KAAK,CAACqB,SAAD,CAAL,CAAiB,KAAjB,IAA0BG,MAAM,CAAC,KAAD,CAAhC;AAC1D;AACF;;AACD,WAAOrD,yBAAyB,CAAC6B,KAAD,CAAhC;AACD,GA9EsB;;AA+EvByB,EAAAA,SAAS,CAACC,KAAD,EAAgBC,KAAc,GAAG,KAAjC,EAAyD;AAChE,QAAIC,OAAO,GAAG,EAAd;AACA,UAAMC,eAAe,GAAG,KAAKd,OAAL,CAAae,YAAb,CAA0B,YAAYJ,KAAtC,CAAxB,CAFgE,CAIhE;;AACA,QAAI,CAACG,eAAD,IAAoB,KAAKd,OAAL,CAAaC,YAAb,CAA0B,gBAAgBU,KAA1C,CAAxB,EAA0E;AACxEE,MAAAA,OAAO,GAAG,iBAAV;AACD,KAFD,MAEO,IAAI,CAACC,eAAD,KAAqB,KAAKd,OAAL,CAAaC,YAAb,CAA0B,WAAWU,KAArC,KAA+C,KAAKX,OAAL,CAAaC,YAAb,CAA0B,UAAUU,KAApC,CAApE,CAAJ,EAAqH;AAC1HE,MAAAA,OAAO,GAAG,qBAAV;AACD,KAFM,MAEA;AACLA,MAAAA,OAAO,GAAGC,eAAe,KAAK,CAACF,KAAD,GAAS,KAAKhD,aAAd,GAA8B,KAAKoB,gBAAxC,CAAzB;AACD,KAX+D,CAYhE;;;AACA,WAAO,KAAKgC,iBAAL,CAAuBH,OAAvB,CAAP;AACD,GA7FsB;;AA8FvBI,EAAAA,MAAM,CAACrB,QAAD,EAAyB;AAC7B,SAAKI,OAAL,CAAakB,aAAb,CACE,IAAIC,WAAJ,CAAgB,YAAhB,EAA8B;AAC5BC,MAAAA,OAAO,EAAE,IADmB;AAE5BC,MAAAA,MAAM,EAAE;AAAEzB,QAAAA;AAAF;AAFoB,KAA9B,CADF;AAMD,GArGsB;;AAsGvB,QAAM0B,IAAN,GAA8B;AAC5B,SAAKC,kBAAL,CAAwB,KAAxB;AACA,SAAKC,SAAL;AACA,UAAM5B,QAAQ,GAAG,MAAM,KAAKS,YAAL,EAAvB;AACAT,IAAAA,QAAQ,CAAC,UAAD,CAAR,GAAuB,KAAK6B,OAA5B;AACA,QAAIC,KAAJ;;AACA,QAAI;AACF,UAAI,KAAKhD,OAAL,IAAgB,IAApB,EAA0B;AACxBgD,QAAAA,KAAK,GAAG9B,QAAQ,CAAC,KAAD,CAAR,GACN,MAAM1C,KAAK,CAACyE,GAAN,CAAU/B,QAAV,EAAoB,KAAKE,UAAzB,CADA,GAEN,MAAM5C,KAAK,CAAC0E,IAAN,CAAWhC,QAAX,EAAqB,KAAKE,UAA1B,CAFR;AAGD,OAJD,MAIO;AACL4B,QAAAA,KAAK,GAAG,MAAMxE,KAAK,CAAC2E,KAAN,CAAYjC,QAAZ,EAAsB,KAAKE,UAA3B,CAAd;AACD;AACF,KARD,CAQE,OAAOJ,CAAP,EAAe;AACf,WAAK6B,kBAAL,CAAwB,IAAxB;;AACA,UAAI7B,CAAJ,EAAO;AAAE;AACPA,QAAAA,CAAC,CAACoC,IAAF,GAASC,IAAT,CAAcjD,KAAK,IAAI,KAAKkD,SAAL,CAAelD,KAAf,CAAvB;AACA,cAAMY,CAAN;AACD,OALc,CAKb;;AACH;;AACD,SAAKM,OAAL,CAAakB,aAAb,CACE,IAAIC,WAAJ,CAAgB,MAAhB,EAAwB;AACtBC,MAAAA,OAAO,EAAE,IADa;AAEtBC,MAAAA,MAAM,EAAE;AACNzB,QAAAA,QAAQ,EAAEA,QADJ;AAENqC,QAAAA,EAAE,EAAEP,KAAK,IAAI;AAFP;AAFc,KAAxB,CADF;AASA,SAAKH,kBAAL,CAAwB,IAAxB;AACA,WAAOG,KAAP;AACD,GAtIsB;;AAuIvB,QAAMQ,UAAN,GAAkC;AAChC,QAAID,EAAJ;;AACA,QAAI;AACFA,MAAAA,EAAE,GAAG,OAAM,KAAKX,IAAL,EAAN,KAAqB,KAAKjB,YAAL,GAAoB,KAApB,CAA1B;AACD,KAFD,CAEE,OAAOX,CAAP,EAAU;AAAE;AAAS;;AACvB,SAAKyC,KAAL;AACA,SAAKC,QAAL,CAAc;AAAC,aAAOH;AAAR,KAAd;AACD,GA9IsB;;AA+IvB,QAAMI,OAAN,GAA+B;AAC7B,UAAMjC,SAAS,GAAG,MAAM,KAAKC,YAAL,EAAxB;AACA,SAAKY,MAAL,CAAYb,SAAZ;AACD,GAlJsB;;AAmJvB,QAAMkC,QAAN,GAAgC;AAC9B,UAAMlC,SAAS,GAAG,MAAM,KAAKC,YAAL,EAAxB;AACA,QAAI,CAAC,KAAKF,cAAL,CAAoBC,SAApB,CAAD,IAAmC,KAAKF,qBAA5C,EACE,KAAKgC,UAAL,GAH4B,CAGT;AACtB,GAvJsB;;AAwJvBK,EAAAA,gBAAgB,CAACC,MAAD,EAA0BC,aAAqB,GAAG,EAAlD,EAAsD;AACpE,QAAIC,WAAqB,GAAG,EAA5B;AACAF,IAAAA,MAAM,CAACpD,OAAP,CAAgBuD,MAAD,IAA2B;AACxC,UAAIC,aAAqB,GAAGrC,MAAM,CAACrB,MAAP,CAAcyD,MAAd,EAAsB,CAAtB,CAA5B;AACA,UAAIE,YAAY,GAAIJ,aAAa,KAAK,EAAlB,GAAuBG,aAAvB,GAAuCH,aAAa,CAACK,MAAd,CAAqB,KAArB,EAA4BF,aAA5B,CAA3D;;AACA,UAAIG,KAAK,CAACC,OAAN,CAAczC,MAAM,CAACrB,MAAP,CAAcyD,MAAd,EAAsB,CAAtB,CAAd,MAA4C,IAAhD,EAAsD;AACpD,YAAIM,YAAsB,GAAG1C,MAAM,CAACrB,MAAP,CAAcyD,MAAd,EAAsB,CAAtB,CAA7B;AACA,YAAIO,WAAW,GAAGL,YAAY,CAACC,MAAb,CAAoB,IAApB,EAA0BG,YAAY,CAACE,IAAb,CAAkB,IAAlB,CAA1B,CAAlB;AACAT,QAAAA,WAAW,CAACU,IAAZ,CAAiBF,WAAjB;AACD,OAJD,MAIO;AACL,YAAIG,YAAY,GAAG9C,MAAM,CAACrB,MAAP,CAAcyD,MAAd,EAAsB,CAAtB,CAAnB;AACA,YAAIW,SAAS,GAAG/C,MAAM,CAACgD,OAAP,CAAeF,YAAf,CAAhB;AACAX,QAAAA,WAAW,GAAG,CAAC,GAAGA,WAAJ,EAAiB,GAAG,KAAKH,gBAAL,CAAsBe,SAAtB,EAAiCT,YAAjC,CAApB,CAAd;AACD;AACF,KAZD;AAaA,WAAOH,WAAP;AACD,GAxKsB;;AAyKvBc,EAAAA,KAAK,GAAS,CAAE,CAzKO;;AA0KvBxB,EAAAA,SAAS,CAACtC,CAAD,EAAY;AACnB,QAAI8C,MAAM,GAAGjC,MAAM,CAACgD,OAAP,CAAe7D,CAAf,EAAkB+D,MAAlB,CAAyB9C,KAAK,IAAI,CAACA,KAAK,CAAC,CAAD,CAAL,CAAS+C,UAAT,CAAoB,UAApB,CAAnC,CAAb;AAEA,UAAMC,aAAa,GAAGtG,IAAH,oBAGb,KAAKkF,gBAAL,CAAsBC,MAAtB,EAA8BoB,GAA9B,CAAkCjD,KAAK,IAAItD,IAAJ,qBAClCsD,KADkC,CAAvC,CAHa,CAAnB,CAHmB,CAWnB;AACA;AACA;AAEA;;AACA,UAAMkD,aAAa,GAAG,KAAK7D,OAAL,CAAa8D,aAAb,CAA2B,iBAA3B,CAAtB;AACA,QAAID,aAAJ,EAAmBvG,MAAM,CAACqG,aAAD,EAAgBE,aAAhB,CAAN;AACpB,GA5LsB;;AA6LvBrC,EAAAA,SAAS,GAAG;AACV,UAAMqC,aAAa,GAAG,KAAK7D,OAAL,CAAa8D,aAAb,CAA2B,iBAA3B,CAAtB;AACA,QAAID,aAAJ,EAAmBvG,MAAM,CAAC,EAAD,EAAKuG,aAAL,CAAN;AACpB,GAhMsB;;AAiMvB1B,EAAAA,KAAK,GAAG;AACN,QAAI,CAAC,KAAKpC,OAAV,EAAmB,KAAKC,OAAL,CAAa8D,aAAb,CAA2B,MAA3B,EAAmC3B,KAAnC;AACpB,GAnMsB;;AAoMvB4B,EAAAA,QAAQ,CAACC,KAAD,EAAe;AACrB,QAAI,CAAC,KAAKjE,OAAV,EAAmB;AACjBiE,MAAAA,KAAK,CAACC,cAAN;AACA,WAAKC,aAAL,GAFiB,CAEK;AACvB;AACF,GAzMsB;;AA0MvBC,EAAAA,aAAa,GAAG;AAAE;AAChB,WAAO,KAAKjC,UAAL,EAAP;AACD,GA5MsB;;AA6MvBkC,EAAAA,OAAO,GAAG;AACR,QAAI,CAAC,KAAKrE,OAAV,EAAmBsE,UAAU,CAAC,MAAM,KAAKhC,OAAL,EAAP,CAAV;AACpB,GA/MsB;;AAgNvBiC,EAAAA,iBAAiB,GAAG;AAClB,WAAOjH,IAAP,qBACeE,SAAS,CAAC,KAAKkB,iBAAN,CADxB,EAEM,KAAKD,YAAL,KAAsB,QAAtB,GAAiCnB,IAAjC,qBACwB,KAAKY,YAAL,IAAqB,KAAKsG,CAAL,CAAO,0BAAP,CAD7C,IAEElH,IAFF,qBAG6B,KAAKY,YAAL,IAAqB,KAAKsG,CAAL,CAAO,0BAAP,CAHlD,CAFN;AASD,GA1NsB;;AA2NvB,QAAMhG,QAAN,GAAgC;AAC9B,SAAKyB,OAAL,CAAawE,OAAb,GAAuB,MAAM,KAAKnC,OAAL,EAA7B,CAD8B,CACe;;;AAC7C,SAAKrC,OAAL,CAAayE,QAAb,GAAwB,MAAM,KAAKnC,QAAL,EAA9B;;AACA,UAAMoC,MAAM,GAAG,MAAM,KAAKC,SAAL,EAArB;AACA,UAAMC,eAAe,GAAG,MAAMC,OAAO,CAACC,GAAR,CAAYJ,MAAM,CAACd,GAAP,CAAYjD,KAAD,IAAmB,KAAKoE,oBAAL,CAA0BpE,KAA1B,CAA9B,CAAZ,CAA9B;AACA,UAAMqE,QAAQ,GAAG3H,IAAH,qBAEV,CAAC,KAAK0C,OAAN,GAAgB1C,IAAhB,qBAEY,KAAK0G,QAAL,CAAckB,IAAd,CAAmB,IAAnB,CAFZ,EAGW,KAAKb,OAAL,CAAaa,IAAb,CAAkB,IAAlB,CAHX,EAKIL,eALJ,EAMI,CAAC,KAAK1E,qBAAN,GAA8B,KAAKoE,iBAAL,EAA9B,GAAyD,EAN7D,EAOI,KAAKtE,OAAL,CAAaC,YAAb,CAA0B,OAA1B,IACE5C,IADF,uBACiC,EARrC,IAUEA,IAVF,qBAWEuH,eAXF,CAFU,EAgBV,KAAKM,cAAL,EAhBU,CAAd;AAkBA5H,IAAAA,MAAM,CAAC0H,QAAD,EAAW,KAAKhF,OAAhB,CAAN;AACD;;AAnPsB,CAAlB;AAsPPnD,GAAG,CAACsI,QAAJ,CAAa3H,SAAb","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: any) {\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);"]}
|
|
@@ -20,6 +20,8 @@ const FormFileMixin = {
|
|
|
20
20
|
|
|
21
21
|
attached() {
|
|
22
22
|
document.addEventListener('reset', e => {
|
|
23
|
+
console.log("reset", e.target, this.element);
|
|
24
|
+
|
|
23
25
|
if (e.target && e.target.contains(this.element)) {
|
|
24
26
|
this.value = this.initialValue;
|
|
25
27
|
this.listAttributes['resetButtonHidden'] = true;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["formFileMixin.ts"],"names":["store","FormFileMixin","name","attributes","uploadUrl","type","String","default","initialState","initialValue","created","listAttributes","selectFile","bind","resetFile","attached","document","addEventListener","e","
|
|
1
|
+
{"version":3,"sources":["formFileMixin.ts"],"names":["store","FormFileMixin","name","attributes","uploadUrl","type","String","default","initialState","initialValue","created","listAttributes","selectFile","bind","resetFile","attached","document","addEventListener","e","console","log","target","element","contains","value","planRender","filePicker","querySelector","files","length","file","formData","FormData","append","fetchAuthn","method","body","then","response","location","headers","get","catch","error","event","preventDefault"],"mappings":"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","sourcesContent":["import { store } from \"../../libs/store/store\";\n\nconst FormFileMixin = {\n name: 'form-file-mixin',\n attributes: {\n uploadUrl: {\n type: String,\n default: ''\n },\n },\n initialState: {\n initialValue: ''\n },\n created() {\n this.listAttributes['output'] = '';\n this.listAttributes['resetButtonHidden'] = true;\n this.listAttributes['selectFile'] = this.selectFile.bind(this);\n this.listAttributes['resetFile'] = this.resetFile.bind(this);\n },\n attached() {\n document.addEventListener('reset', (e) => {\n console.log(\"reset\", e.target, this.element);\n if (e.target && (e.target as HTMLElement).contains(this.element)) {\n this.value = this.initialValue;\n this.listAttributes['resetButtonHidden'] = true;\n this.planRender();\n }\n })\n },\n selectFile() {\n if (this.uploadUrl === null) return;\n\n if (this.initialValue === '') {\n this.initialValue = this.value;\n }\n\n const filePicker = this.element.querySelector('input[type=\"file\"]');\n if (filePicker.files!.length < 1) return;\n\n this.listAttributes['output'] = '⏳';\n this.planRender();\n\n const file = filePicker.files![0];\n const formData = new FormData();\n formData.append('file', file);\n store.fetchAuthn(this.uploadUrl, {\n method: 'POST',\n body: formData,\n })\n .then(response => {\n const location = response.headers.get('location');\n if (location == null) {\n this.listAttributes['output'] = 'header location not found!';\n } else {\n this.value = location;\n this.listAttributes['output'] = '';\n this.listAttributes['resetButtonHidden'] = false;\n this.planRender();\n }\n })\n .catch(error => {\n this.listAttributes['fileValue'] = '';\n this.listAttributes['output'] = 'upload error';\n this.planRender();\n console.error(error);\n });\n },\n resetFile(event) {\n event.preventDefault();\n this.value = '';\n const filePicker = this.element.querySelector('input[type=\"file\"]');\n if (filePicker) filePicker.value = '';\n this.listAttributes['fileValue'] = '';\n this.listAttributes['output'] = '';\n this.listAttributes['resetButtonHidden'] = true;\n // this.input.dispatchEvent(new Event('change'));\n this.planRender();\n }\n}\n\nexport {\n FormFileMixin\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@startinblox/core",
|
|
3
|
-
"version": "0.17.
|
|
3
|
+
"version": "0.17.29",
|
|
4
4
|
"description": "This is a series of web component respecting both the web components standards and the Linked Data Platform convention.",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"module": "./dist/index.js",
|