@ccrpc/webmapgl 0.18.3 → 0.18.5
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/CHANGELOG.md +14 -0
- package/dist/cjs/gl-facet_5.cjs.entry.js +3 -3
- package/dist/cjs/gl-facet_5.cjs.entry.js.map +1 -1
- package/dist/cjs/gl-form.cjs.entry.js +6 -2
- package/dist/cjs/gl-form.cjs.entry.js.map +1 -1
- package/dist/collection/components/field/field.js +7 -5
- package/dist/collection/components/field/field.js.map +1 -1
- package/dist/collection/components/form/form.js +6 -2
- package/dist/collection/components/form/form.js.map +1 -1
- package/dist/esm/gl-facet_5.entry.js +3 -3
- package/dist/esm/gl-facet_5.entry.js.map +1 -1
- package/dist/esm/gl-form.entry.js +6 -2
- package/dist/esm/gl-form.entry.js.map +1 -1
- package/dist/webmapgl/p-67db75d6.entry.js +2 -0
- package/dist/webmapgl/p-67db75d6.entry.js.map +1 -0
- package/dist/webmapgl/{p-b7af8724.entry.js → p-c3a37f68.entry.js} +2 -2
- package/dist/webmapgl/p-c3a37f68.entry.js.map +1 -0
- package/dist/webmapgl/webmapgl.esm.js +1 -1
- package/package.json +1 -1
- package/dist/webmapgl/p-b7af8724.entry.js.map +0 -1
- package/dist/webmapgl/p-d27c0d4a.entry.js +0 -2
- package/dist/webmapgl/p-d27c0d4a.entry.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"file":"gl-form.entry.cjs.js","mappings":"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
|
|
1
|
+
{"file":"gl-form.entry.cjs.js","mappings":"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","names":["_t","h"],"sources":["src/components/form/form.tsx"],"sourcesContent":["import {\n h,\n Component,\n Element,\n Event,\n EventEmitter,\n Listen,\n Method,\n Prop,\n} from \"@stencil/core\";\nimport { _t } from \"../i18n/i18n\";\n\n@Component({\n tag: \"gl-form\",\n})\nexport class Form {\n private _schema: any;\n\n @Element() el: HTMLGlFormElement;\n\n /**\n * Emitted when the user cancels a form submission.\n */\n @Event() glFormCancel: EventEmitter;\n\n /**\n * Emitted when the feature properties are updated due to a field value\n * change.\n */\n @Event() glFormFeatureChanged: EventEmitter;\n\n /**\n * Emitted when the user submits the form.\n */\n @Event() glFormSubmit: EventEmitter;\n\n /**\n * Text for the cancel button.\n */\n @Prop() readonly cancelText: string;\n\n /**\n * The feature being modified by the form.\n * The form sets values in the 'properties' object of the feature.\n */\n @Prop() readonly feature: { properties: { [key: string]: any } };\n\n /**\n * ID of the form.\n */\n @Prop() readonly formId: string = `gl-form-${formId++}`;\n\n /**\n * The label displayed in the toolbar of the `gl-form-page`.\n */\n @Prop() readonly label: string;\n\n /**\n * The URL of the form schema JSON.\n */\n @Prop() readonly schema: string;\n\n /**\n * Text for the submit button.\n */\n @Prop() readonly submitText: string;\n\n /**\n * Treat labels in the form as i18n keys.\n */\n @Prop() readonly translateText: boolean = false;\n\n async componentWillLoad() {\n let res = await fetch(this.schema);\n this._schema = await res.json();\n }\n\n componentDidLoad() {\n let page = this.createFormPage(this.label);\n this.el.querySelector(\"ion-nav\").setRoot(page);\n }\n\n @Listen(\"glFieldValueChanged\")\n setValue(e: CustomEvent) {\n if (this.feature == undefined) return;\n this.feature.properties = this.feature.properties || {};\n this.feature.properties[e.detail.field.attribute] = e.detail.value;\n this.glFormFeatureChanged.emit({\n formId: this.formId,\n feature: this.feature,\n });\n }\n\n @Listen(\"glFormFacet\")\n handleFacet(e: CustomEvent) {\n let page = this.createFormPage(e.detail.label, e.detail.value);\n this.el.querySelector(\"ion-nav\").push(page);\n }\n\n /**\n * Cancels and closes the form\n */\n @Method()\n async cancel() {\n this.glFormCancel.emit({\n formId: this.formId,\n feature: this.feature,\n });\n }\n\n /**\n * Submits the form and passes the feature that has been edited along to glFormSubmit\n */\n @Method()\n async submit() {\n this.glFormSubmit.emit({\n formId: this.formId,\n feature: this.feature,\n });\n }\n\n private createFormPage(label?: string, formFacet?: string) {\n let page = document.createElement(\"gl-form-page\");\n page.formFacet = formFacet;\n page.facets = this.filter(this._schema.facets || [], formFacet);\n page.fields = this.filter(this._schema.fields || [], formFacet);\n page.root = formFacet != undefined;\n\n if (label != undefined) page.label = label;\n if (this.submitText != undefined) page.submitText = this.submitText;\n if (this.cancelText != undefined) page.cancelText = this.cancelText;\n\n return page;\n }\n\n private filter(items: any[], formFacet?: string) {\n return items\n .filter((item) => {\n let facets = item.facets || [];\n if (!facets.length && formFacet == undefined) return true;\n for (let facet of facets) {\n let escaped = facet.replace(/[.?+^$[\\]\\\\(){}|-]/g, \"\\\\$&\");\n let re = new RegExp(\"^\" + escaped.split(\"*\").join(\".*\") + \"$\");\n if (re.test(formFacet)) return true;\n }\n return false;\n })\n .map((item) => {\n let result = { ...item };\n if (this.translateText) {\n if (result.label) result.label = _t(item.label);\n if (result.placeholder) result.placeholder = _t(item.placeholder);\n }\n if (item.options) result.options = this.filter(item.options, formFacet);\n return result;\n });\n }\n\n render() {\n return <ion-nav></ion-nav>;\n }\n}\n\nlet formId = 0;\n"],"version":3}
|
|
@@ -7,8 +7,8 @@ export class Field {
|
|
|
7
7
|
this.message = undefined;
|
|
8
8
|
this.attribute = undefined;
|
|
9
9
|
this.image = undefined;
|
|
10
|
-
this.label =
|
|
11
|
-
this.placeholder =
|
|
10
|
+
this.label = "";
|
|
11
|
+
this.placeholder = "";
|
|
12
12
|
this.required = false;
|
|
13
13
|
this.type = undefined;
|
|
14
14
|
this.widget = undefined;
|
|
@@ -60,7 +60,7 @@ export class Field {
|
|
|
60
60
|
return (h("ion-item", null, h("ion-label", null, this.label), ",", h("ion-select", { onIonChange: this.onChange, value: this.getValue() }, h("slot", null))));
|
|
61
61
|
}
|
|
62
62
|
getTextareaField() {
|
|
63
|
-
return (h("ion-item", null, h("ion-label", { "text-wrap": true, position: "floating" }, this.label), h("ion-textarea", { onIonInput: this.onInput, placeholder: this.placeholder, value: this._getValue() || "", legacy: true })));
|
|
63
|
+
return (h("ion-item", null, this.label !== "" ? (h("ion-label", { "text-wrap": true, position: "floating" }, this.label)) : (""), h("ion-textarea", { onIonInput: this.onInput, placeholder: this.placeholder, value: this._getValue() || "", legacy: true })));
|
|
64
64
|
}
|
|
65
65
|
getInstructionsField() {
|
|
66
66
|
return (h("ion-item", null, h("ion-textarea", { readonly: true, value: this.label })));
|
|
@@ -137,7 +137,8 @@ export class Field {
|
|
|
137
137
|
"text": "Label text for the field item."
|
|
138
138
|
},
|
|
139
139
|
"attribute": "label",
|
|
140
|
-
"reflect": false
|
|
140
|
+
"reflect": false,
|
|
141
|
+
"defaultValue": "\"\""
|
|
141
142
|
},
|
|
142
143
|
"placeholder": {
|
|
143
144
|
"type": "string",
|
|
@@ -154,7 +155,8 @@ export class Field {
|
|
|
154
155
|
"text": "A placeholder prompt text to display to the user, valid only for textarea and input fields."
|
|
155
156
|
},
|
|
156
157
|
"attribute": "placeholder",
|
|
157
|
-
"reflect": false
|
|
158
|
+
"reflect": false,
|
|
159
|
+
"defaultValue": "\"\""
|
|
158
160
|
},
|
|
159
161
|
"required": {
|
|
160
162
|
"type": "boolean",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"field.js","sourceRoot":"","sources":["../../../src/components/field/field.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,CAAC,EACD,SAAS,EACT,OAAO,EACP,KAAK,EAEL,MAAM,EACN,MAAM,EACN,IAAI,EACJ,KAAK,EACL,IAAI,GACL,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAWlC,MAAM,OAAO,KAAK;;IAqGR,aAAQ,GAAG,CAAC,CAA4C,EAAE,EAAE,CAClE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAwBvB,YAAO,GAAG,CAAC,CAAyC,EAAE,EAAE,CAC9D,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC
|
|
1
|
+
{"version":3,"file":"field.js","sourceRoot":"","sources":["../../../src/components/field/field.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n h,\n Component,\n Element,\n Event,\n EventEmitter,\n Listen,\n Method,\n Prop,\n State,\n Host,\n} from \"@stencil/core\";\nimport { _t } from \"../i18n/i18n\";\nimport {\n InputCustomEvent,\n SelectCustomEvent,\n TextareaCustomEvent,\n RadioGroupCustomEvent,\n} from \"@ionic/core\";\n\n@Component({\n tag: \"gl-field\",\n})\nexport class Field {\n @Element() el: HTMLGlFieldElement;\n\n /**\n * Emitted when the field value is changed by the user.\n */\n @Event() glFieldValueChanged: EventEmitter;\n\n @State() message: string;\n\n /**\n * The feature property that corresponds to the form field.\n */\n @Prop() readonly attribute: string;\n\n /**\n * Image URL for the field item.\n */\n @Prop() readonly image: string;\n\n /**\n * Label text for the field item.\n */\n @Prop() readonly label: string = \"\";\n\n /**\n * A placeholder prompt text to display to the user, valid only for textarea and input fields.\n */\n @Prop() readonly placeholder: string = \"\";\n\n /**\n * The field must be filled out before the form can be submitted.\n */\n @Prop() readonly required: boolean = false;\n\n /**\n * Field type. It is not currently used.\n */\n @Prop() readonly type: any;\n\n /**\n * Widget used to render the field.\n */\n @Prop() readonly widget:\n | \"input\"\n | \"radio\"\n | \"select\"\n | \"textarea\"\n | \"instructions\";\n\n @Listen(\"glOptionChanged\")\n optionChanged(e) {\n this.changed(e.detail);\n }\n\n private _getValue() {\n const form = this.el.closest(\"gl-form\");\n if (form.feature == undefined || form.feature.properties == undefined)\n return;\n return form.feature.properties[this.attribute];\n }\n\n /**\n * Returns whether this field is valid\n * @returns\n */\n @Method()\n async isValid() {\n return this.validate() == null;\n }\n\n /**\n * Returns the value of the attribute of the feature this form is editing\n * @returns value of the attribute of the feature\n */\n @Method()\n async getValue() {\n return this._getValue();\n }\n\n /**\n * Checks whether the value is required and also present\n * If it is not returns an error text, if it is valid returns null\n * @returns\n */\n @Method()\n async validate() {\n const value = await this.getValue();\n if (this.required && (value == undefined || value === \"\"))\n return _t(\"webmapgl.field.required\", { field: this.label });\n\n return null;\n }\n\n private changed(value: any) {\n this.glFieldValueChanged.emit({\n field: this,\n value: value,\n });\n }\n\n private onChange = (e: SelectCustomEvent | RadioGroupCustomEvent) =>\n this.changed(e.detail.value);\n\n private getRadioField() {\n return (\n <Host>\n <ion-list-header>{this.label}</ion-list-header>\n <ion-radio-group onIonChange={this.onChange}>\n <slot />\n </ion-radio-group>\n </Host>\n );\n }\n\n private getSelectField() {\n return (\n <ion-item>\n <ion-label>{this.label}</ion-label>,\n <ion-select onIonChange={this.onChange} value={this.getValue()}>\n <slot />\n </ion-select>\n </ion-item>\n );\n }\n\n private onInput = (e: TextareaCustomEvent | InputCustomEvent) =>\n this.changed(e.detail.value);\n\n private getTextareaField() {\n return (\n <ion-item>\n {this.label !== \"\" ? (\n <ion-label text-wrap position=\"floating\">\n {this.label}\n </ion-label>\n ) : (\n \"\"\n )}\n <ion-textarea\n onIonInput={this.onInput}\n placeholder={this.placeholder}\n value={this._getValue() || \"\"}\n legacy={true} // We are opting for the legacy version of labels for textarea as there is no other way to text-wrap the label\n ></ion-textarea>\n </ion-item>\n );\n }\n\n private getInstructionsField() {\n return (\n <ion-item>\n <ion-textarea readonly={true} value={this.label}></ion-textarea>\n </ion-item>\n );\n }\n\n private getInputField() {\n return (\n <ion-item>\n <ion-label text-wrap position=\"floating\">\n {this.label}\n </ion-label>\n <ion-input\n onIonInput={this.onInput}\n type=\"text\"\n placeholder={this.placeholder}\n value={this._getValue()}\n ></ion-input>\n </ion-item>\n );\n }\n\n render() {\n if (this.widget === \"radio\") {\n return this.getRadioField();\n } else if (this.widget === \"select\") {\n return this.getSelectField();\n } else if (this.widget == \"textarea\") {\n return this.getTextareaField();\n } else if (this.widget == \"instructions\") {\n return this.getInstructionsField();\n } else {\n return this.getInputField();\n }\n }\n}\n"]}
|
|
@@ -80,8 +80,12 @@ export class Form {
|
|
|
80
80
|
})
|
|
81
81
|
.map((item) => {
|
|
82
82
|
let result = Object.assign({}, item);
|
|
83
|
-
if (this.translateText)
|
|
84
|
-
|
|
83
|
+
if (this.translateText) {
|
|
84
|
+
if (result.label)
|
|
85
|
+
result.label = _t(item.label);
|
|
86
|
+
if (result.placeholder)
|
|
87
|
+
result.placeholder = _t(item.placeholder);
|
|
88
|
+
}
|
|
85
89
|
if (item.options)
|
|
86
90
|
result.options = this.filter(item.options, formFacet);
|
|
87
91
|
return result;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"form.js","sourceRoot":"","sources":["../../../src/components/form/form.tsx"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"form.js","sourceRoot":"","sources":["../../../src/components/form/form.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n h,\n Component,\n Element,\n Event,\n EventEmitter,\n Listen,\n Method,\n Prop,\n} from \"@stencil/core\";\nimport { _t } from \"../i18n/i18n\";\n\n@Component({\n tag: \"gl-form\",\n})\nexport class Form {\n private _schema: any;\n\n @Element() el: HTMLGlFormElement;\n\n /**\n * Emitted when the user cancels a form submission.\n */\n @Event() glFormCancel: EventEmitter;\n\n /**\n * Emitted when the feature properties are updated due to a field value\n * change.\n */\n @Event() glFormFeatureChanged: EventEmitter;\n\n /**\n * Emitted when the user submits the form.\n */\n @Event() glFormSubmit: EventEmitter;\n\n /**\n * Text for the cancel button.\n */\n @Prop() readonly cancelText: string;\n\n /**\n * The feature being modified by the form.\n * The form sets values in the 'properties' object of the feature.\n */\n @Prop() readonly feature: { properties: { [key: string]: any } };\n\n /**\n * ID of the form.\n */\n @Prop() readonly formId: string = `gl-form-${formId++}`;\n\n /**\n * The label displayed in the toolbar of the `gl-form-page`.\n */\n @Prop() readonly label: string;\n\n /**\n * The URL of the form schema JSON.\n */\n @Prop() readonly schema: string;\n\n /**\n * Text for the submit button.\n */\n @Prop() readonly submitText: string;\n\n /**\n * Treat labels in the form as i18n keys.\n */\n @Prop() readonly translateText: boolean = false;\n\n async componentWillLoad() {\n let res = await fetch(this.schema);\n this._schema = await res.json();\n }\n\n componentDidLoad() {\n let page = this.createFormPage(this.label);\n this.el.querySelector(\"ion-nav\").setRoot(page);\n }\n\n @Listen(\"glFieldValueChanged\")\n setValue(e: CustomEvent) {\n if (this.feature == undefined) return;\n this.feature.properties = this.feature.properties || {};\n this.feature.properties[e.detail.field.attribute] = e.detail.value;\n this.glFormFeatureChanged.emit({\n formId: this.formId,\n feature: this.feature,\n });\n }\n\n @Listen(\"glFormFacet\")\n handleFacet(e: CustomEvent) {\n let page = this.createFormPage(e.detail.label, e.detail.value);\n this.el.querySelector(\"ion-nav\").push(page);\n }\n\n /**\n * Cancels and closes the form\n */\n @Method()\n async cancel() {\n this.glFormCancel.emit({\n formId: this.formId,\n feature: this.feature,\n });\n }\n\n /**\n * Submits the form and passes the feature that has been edited along to glFormSubmit\n */\n @Method()\n async submit() {\n this.glFormSubmit.emit({\n formId: this.formId,\n feature: this.feature,\n });\n }\n\n private createFormPage(label?: string, formFacet?: string) {\n let page = document.createElement(\"gl-form-page\");\n page.formFacet = formFacet;\n page.facets = this.filter(this._schema.facets || [], formFacet);\n page.fields = this.filter(this._schema.fields || [], formFacet);\n page.root = formFacet != undefined;\n\n if (label != undefined) page.label = label;\n if (this.submitText != undefined) page.submitText = this.submitText;\n if (this.cancelText != undefined) page.cancelText = this.cancelText;\n\n return page;\n }\n\n private filter(items: any[], formFacet?: string) {\n return items\n .filter((item) => {\n let facets = item.facets || [];\n if (!facets.length && formFacet == undefined) return true;\n for (let facet of facets) {\n let escaped = facet.replace(/[.?+^$[\\]\\\\(){}|-]/g, \"\\\\$&\");\n let re = new RegExp(\"^\" + escaped.split(\"*\").join(\".*\") + \"$\");\n if (re.test(formFacet)) return true;\n }\n return false;\n })\n .map((item) => {\n let result = { ...item };\n if (this.translateText) {\n if (result.label) result.label = _t(item.label);\n if (result.placeholder) result.placeholder = _t(item.placeholder);\n }\n if (item.options) result.options = this.filter(item.options, formFacet);\n return result;\n });\n }\n\n render() {\n return <ion-nav></ion-nav>;\n }\n}\n\nlet formId = 0;\n"]}
|
|
@@ -42,8 +42,8 @@ const Field = class {
|
|
|
42
42
|
this.message = undefined;
|
|
43
43
|
this.attribute = undefined;
|
|
44
44
|
this.image = undefined;
|
|
45
|
-
this.label =
|
|
46
|
-
this.placeholder =
|
|
45
|
+
this.label = "";
|
|
46
|
+
this.placeholder = "";
|
|
47
47
|
this.required = false;
|
|
48
48
|
this.type = undefined;
|
|
49
49
|
this.widget = undefined;
|
|
@@ -95,7 +95,7 @@ const Field = class {
|
|
|
95
95
|
return (h("ion-item", null, h("ion-label", null, this.label), ",", h("ion-select", { onIonChange: this.onChange, value: this.getValue() }, h("slot", null))));
|
|
96
96
|
}
|
|
97
97
|
getTextareaField() {
|
|
98
|
-
return (h("ion-item", null, h("ion-label", { "text-wrap": true, position: "floating" }, this.label), h("ion-textarea", { onIonInput: this.onInput, placeholder: this.placeholder, value: this._getValue() || "", legacy: true })));
|
|
98
|
+
return (h("ion-item", null, this.label !== "" ? (h("ion-label", { "text-wrap": true, position: "floating" }, this.label)) : (""), h("ion-textarea", { onIonInput: this.onInput, placeholder: this.placeholder, value: this._getValue() || "", legacy: true })));
|
|
99
99
|
}
|
|
100
100
|
getInstructionsField() {
|
|
101
101
|
return (h("ion-item", null, h("ion-textarea", { readonly: true, value: this.label })));
|