diff --git a/api/js/etemplate/Et2Textbox/Et2Textbox.ts b/api/js/etemplate/Et2Textbox/Et2Textbox.ts
index 2add3f2433..d53c1912d7 100644
--- a/api/js/etemplate/Et2Textbox/Et2Textbox.ts
+++ b/api/js/etemplate/Et2Textbox/Et2Textbox.ts
@@ -9,16 +9,12 @@
*/
-import {css, html, nothing, PropertyValues} from "lit";
-import {customElement} from "lit/decorators/custom-element.js";
-import {property} from "lit/decorators/property.js";
+import {css, PropertyValues} from "lit";
import {Regex} from "../Validators/Regex";
+import {SlInput} from "@shoelace-style/shoelace";
import shoelace from "../Styles/shoelace";
import {Et2InputWidget} from "../Et2InputWidget/Et2InputWidget";
-import IMask, {InputMask} from "imask";
-import {SlInput} from "@shoelace-style/shoelace";
-@customElement("et2-textbox")
export class Et2Textbox extends Et2InputWidget(SlInput)
{
@@ -46,37 +42,19 @@ export class Et2Textbox extends Et2InputWidget(SlInput)
];
}
- @property()
- value = "";
-
- /**
- * Placeholder text to show as a hint when the input is empty.
- */
- @property()
- placeholder;
-
- /**
- * Mask the input to enforce format. The mask is enforced as the user types, preventing invalid input.
- */
- @property()
- mask;
-
- /**
- * Disables the input. It is still visible.
- * @type {boolean}
- */
- @property({type: Boolean})
- disabled = false;
-
- @property({type: Function})
- onkeypress;
-
- private __validator : any;
- private _mask : InputMask;
- protected _value : string = "";
-
- inputMode = "text";
-
+ static get properties()
+ {
+ return {
+ ...super.properties,
+ /**
+ * Perl regular expression eg. '/^[0-9][a-f]{4}$/i'
+ *
+ * Not to be confused with this.validators, which is a list of validators for this widget
+ */
+ validator: String,
+ onkeypress: Function,
+ }
+ }
static get translate()
{
@@ -95,20 +73,6 @@ export class Et2Textbox extends Et2InputWidget(SlInput)
super.connectedCallback();
}
- disconnectedCallback()
- {
- super.disconnectedCallback();
- this.removeEventListener("focus", this.handleFocus);
- }
-
- firstUpdated()
- {
- if(this.maskOptions.mask)
- {
- this.updateMask();
- }
- }
-
/** @param changedProperties */
updated(changedProperties : PropertyValues)
{
@@ -119,13 +83,8 @@ export class Et2Textbox extends Et2InputWidget(SlInput)
this.validators = (this.validators || []).filter((validator) => !(validator instanceof Regex))
this.validators.push(new Regex(this.validator));
}
- if(changedProperties.has('mask'))
- {
- this.updateMask();
- }
}
- @property()
get validator()
{
return this.__validator;
@@ -153,114 +112,7 @@ export class Et2Textbox extends Et2InputWidget(SlInput)
this.requestUpdate("validator");
}
}
-
- /**
- * Get the options for masking.
- * Can be overridden by subclass for additional options.
- *
- * @see https://imask.js.org/guide.html#masked
- */
- protected get maskOptions()
- {
- return {
- mask: this.mask,
- lazy: this.placeholder ? true : false,
- autofix: true,
- eager: "append",
- overwrite: "shift"
- }
- }
-
- protected updateMask()
- {
- const input = this.shadowRoot.querySelector("input")
- if(!this._mask)
- {
- this._mask = IMask(input, this.maskOptions);
- this.addEventListener("focus", this.handleFocus)
- window.setTimeout(() =>
- {
- this._mask.updateControl();
- }, 1);
- }
- else
- {
- this._mask.updateOptions(this.maskOptions);
- }
-
- if(this._mask)
- {
- this.updateMaskValue();
- }
- }
-
- protected updateMaskValue()
- {
- this._mask.unmaskedValue = "" + this.value;
- this._mask.updateValue();
- this.updateComplete.then(() =>
- {
- this._mask.updateControl();
- });
- }
-
- protected handleFocus(event)
- {
- if(this._mask)
- {
- // this._mask.updateValue();
- }
- }
-
- protected _inputTemplate()
- {
- return html`
-