Fix/remove email validator and implement trailing_slash attribute

This commit is contained in:
ralf 2022-03-10 14:26:06 +02:00
parent ebaebf65ca
commit 782958d7fc

View File

@ -15,7 +15,7 @@ import {Et2Textbox} from "../Et2Textbox/Et2Textbox";
/** /**
* @customElement et2-url * @customElement et2-url
* *
* @ToDo: implement allow_path and trailing_slash attributes * @ToDo: implement allow_path attributes
*/ */
export class Et2Url extends Et2InvokerMixin(Et2Textbox) export class Et2Url extends Et2InvokerMixin(Et2Textbox)
{ {
@ -42,7 +42,6 @@ export class Et2Url extends Et2InvokerMixin(Et2Textbox)
constructor() constructor()
{ {
super(); super();
this.defaultValidators.push(new IsEmail());
this._invokerLabel = '⎆'; this._invokerLabel = '⎆';
this._invokerTitle = 'Open'; this._invokerTitle = 'Open';
this._invokerAction = () => { this._invokerAction = () => {
@ -52,11 +51,36 @@ export class Et2Url extends Et2InvokerMixin(Et2Textbox)
this.trailing_slash = undefined; this.trailing_slash = undefined;
} }
/**
* Change handler calling custom handler set via onchange attribute
*
* Reimplemented to add/remove trailing slash depending on trailing_slash attribute
*
* @param _ev
* @returns
*/
_oldChange(_ev: Event): boolean
{
const value = this.modelValue;
if (typeof this.trailing_slash !== 'undefined' && value && this.trailing_slash !== (value.substr(-1)==='/'))
{
if (!this.trailing_slash)
{
this.modelValue = value.replace(/\/+$/, '');
}
else
{
this.modelValue += '/';
}
}
return super._oldChange(_ev);
}
static action(value) static action(value)
{ {
if (!value) return; if (!value) return;
// implicit add http:// if no protocol given // implicit add http:// if no protocol given
if(value.indexOf("://") == -1) value = "http://"+value; if(value.indexOf("://") === -1) value = "http://"+value;
egw.open_link(value, '_blank'); egw.open_link(value, '_blank');
} }
} }