ontimize-web-ngx
Version:
Ontimize Web framework using Angular 15
136 lines • 14.5 kB
JavaScript
import { BooleanConverter } from '../decorators/input-converter';
import { OTranslateService } from '../services/translate/o-translate.service';
import { PermissionsUtils } from '../util/permissions';
import { Util } from '../util/util';
export class OBaseComponent {
constructor(injector) {
this.injector = injector;
this._enabled = true;
this._orequired = false;
this._tooltipPosition = 'below';
this._tooltipShowDelay = 500;
this._tooltipHideDelay = 0;
if (this.injector) {
this.translateService = this.injector.get(OTranslateService);
}
}
initialize() {
if (!Util.isDefined(this._olabel)) {
this._olabel = this.oattr;
}
if (Util.isDefined(this.oplaceholder) && this.oplaceholder.length > 0) {
this.oplaceholder = this.translateService.get(this.oplaceholder);
}
}
getAttribute() {
if (this.oattr) {
return this.oattr;
}
return undefined;
}
setEnabled(value) {
if (!PermissionsUtils.checkEnabledPermission(this.permissions)) {
return;
}
const parsedValue = BooleanConverter(value);
this._enabled = parsedValue;
}
get placeHolder() {
return this.oplaceholder;
}
set placeHolder(value) {
this.oplaceholder = value;
}
get tooltipClass() {
return this.getTooltipClass();
}
getTooltipClass() {
return `o-tooltip ${this.tooltipPosition}`;
}
getTooltipText() {
if (Util.isDefined(this._tooltip) && this.translateService) {
return this.translateService.get(this._tooltip);
}
return this._tooltip;
}
get tooltip() {
return this.getTooltipText();
}
set tooltip(value) {
this._tooltip = value;
}
get tooltipPosition() {
return this._tooltipPosition;
}
set tooltipPosition(value) {
this._tooltipPosition = value;
}
get tooltipShowDelay() {
return this._tooltipShowDelay;
}
set tooltipShowDelay(value) {
this._tooltipShowDelay = value;
}
get tooltipHideDelay() {
return this._tooltipHideDelay;
}
set tooltipHideDelay(value) {
this._tooltipHideDelay = value;
}
get isReadOnly() {
return this._isReadOnly;
}
set isReadOnly(value) {
this.setIsReadOnly(value);
}
setIsReadOnly(value) {
if (Util.isDefined(this.readOnly)) {
return;
}
if (!this.enabled) {
this._isReadOnly = false;
return;
}
if (!PermissionsUtils.checkEnabledPermission(this.permissions)) {
return;
}
this._isReadOnly = value;
}
get readOnly() {
return this._readOnly;
}
set readOnly(value) {
if (!PermissionsUtils.checkEnabledPermission(this.permissions)) {
return;
}
const parsedValue = BooleanConverter(value);
this._readOnly = parsedValue;
this._isReadOnly = parsedValue;
}
set orequired(val) {
this._orequired = BooleanConverter(val);
}
get orequired() {
return this._orequired;
}
get isRequired() {
return this.orequired;
}
set required(value) {
this.orequired = value;
}
get enabled() {
return this._enabled;
}
set enabled(value) {
const parsedValue = BooleanConverter(value);
this.setEnabled(parsedValue);
}
get olabel() {
return this._olabel;
}
set olabel(value) {
this._olabel = value;
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby1jb21wb25lbnQuY2xhc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9vbnRpbWl6ZS13ZWItbmd4L3NyYy9saWIvY29tcG9uZW50cy9vLWNvbXBvbmVudC5jbGFzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUVqRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUU5RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRXBDLE1BQU0sT0FBTyxjQUFjO0lBb0J6QixZQUFzQixRQUFrQjtRQUFsQixhQUFRLEdBQVIsUUFBUSxDQUFVO1FBZDlCLGFBQVEsR0FBWSxJQUFJLENBQUM7UUFFekIsZUFBVSxHQUFZLEtBQUssQ0FBQztRQU81QixxQkFBZ0IsR0FBVyxPQUFPLENBQUM7UUFDbkMsc0JBQWlCLEdBQVcsR0FBRyxDQUFDO1FBQ2hDLHNCQUFpQixHQUFXLENBQUMsQ0FBQztRQUl0QyxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDakIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFvQixpQkFBaUIsQ0FBQyxDQUFDO1NBQ2pGO0lBQ0gsQ0FBQztJQUVNLFVBQVU7UUFDZixJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUU7WUFDakMsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1NBQzNCO1FBQ0QsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDckUsSUFB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QUVGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgQm9vbGVhbkNvbnZlcnRlciB9IGZyb20gJy4uL2RlY29yYXRvcnMvaW5wdXQtY29udmVydGVyJztcbmltcG9ydCB7IElDb21wb25lbnQgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2NvbXBvbmVudC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgT1RyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy90cmFuc2xhdGUvby10cmFuc2xhdGUuc2VydmljZSc7XG5pbXBvcnQgeyBPUGVybWlzc2lvbnMgfSBmcm9tICcuLi90eXBlcy9vLXBlcm1pc3Npb25zLnR5cGUnO1xuaW1wb3J0IHsgUGVybWlzc2lvbnNVdGlscyB9IGZyb20gJy4uL3V0aWwvcGVybWlzc2lvbnMnO1xuaW1wb3J0IHsgVXRpbCB9IGZyb20gJy4uL3V0aWwvdXRpbCc7XG5cbmV4cG9ydCBjbGFzcyBPQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIElDb21wb25lbnQge1xuXG4gIC8qIElucHV0cyAqL1xuICBwcm90ZWN0ZWQgb2F0dHI6IHN0cmluZztcbiAgcHJvdGVjdGVkIF9vbGFiZWw6IHN0cmluZztcbiAgcHJvdGVjdGVkIG9wbGFjZWhvbGRlcjogc3RyaW5nO1xuICBwcm90ZWN0ZWQgX2VuYWJsZWQ6IGJvb2xlYW4gPSB0cnVlO1xuICBwcm90ZWN0ZWQgX3JlYWRPbmx5OiBib29sZWFuO1xuICBwcm90ZWN0ZWQgX29yZXF1aXJlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qIEludGVybmFsIHZhcmlhYmxlcyAqL1xuICBwcm90ZWN0ZWQgdHJhbnNsYXRlU2VydmljZTogT1RyYW5zbGF0ZVNlcnZpY2U7XG5cbiAgcHJvdGVjdGVkIF9pc1JlYWRPbmx5OiBib29sZWFuO1xuICBwcm90ZWN0ZWQgX3Rvb2x0aXA6IHN0cmluZztcbiAgcHJvdGVjdGVkIF90b29sdGlwUG9zaXRpb246IHN0cmluZyA9ICdiZWxvdyc7XG4gIHByb3RlY3RlZCBfdG9vbHRpcFNob3dEZWxheTogbnVtYmVyID0gNTAwO1xuICBwcm90ZWN0ZWQgX3Rvb2x0aXBIaWRlRGVsYXk6IG51bWJlciA9IDA7XG4gIHByb3RlY3RlZCBwZXJtaXNzaW9uczogT1Blcm1pc3Npb25zO1xuXG4gIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBpbmplY3RvcjogSW5qZWN0b3IpIHtcbiAgICBpZiAodGhpcy5pbmplY3Rvcikge1xuICAgICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlID0gdGhpcy5pbmplY3Rvci5nZXQ8T1RyYW5zbGF0ZVNlcnZpY2U+KE9UcmFuc2xhdGVTZXJ2aWNlKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgaW5pdGlhbGl6ZSgpOiB2b2lkIHtcbiAgICBpZiAoIVV0aWwuaXNEZWZpbmVkKHRoaXMuX29sYWJlbCkpIHtcbiAgICAgIHRoaXMuX29sYWJlbCA9IHRoaXMub2F0dHI7XG4gICAgfVxuICAgIGlmIChVdGlsLmlzRGVmaW5lZCh0aGlzLm9wbGFjZWhvbGRlcikgJiYgdGhpcy5vcGxhY2Vob2xkZXIubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5vcGxhY2Vob2xkZXIgPSB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuZ2V0KHRoaXMub3BsYWNlaG9sZGVyKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0QXR0cmlidXRlKCk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMub2F0dHIpIHtcbiAgICAgIHJldHVybiB0aGlzLm9hdHRyO1xuICAgIH1cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgcHVibGljIHNldEVuYWJsZWQodmFsdWU6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBpZiAoIVBlcm1pc3Npb25zVXRpbHMuY2hlY2tFbmFibGVkUGVybWlzc2lvbih0aGlzLnBlcm1pc3Npb25zKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBwYXJzZWRWYWx1ZSA9IEJvb2xlYW5Db252ZXJ0ZXIodmFsdWUpO1xuICAgIHRoaXMuX2VuYWJsZWQgPSBwYXJzZWRWYWx1ZTtcbiAgfVxuXG4gIGdldCBwbGFjZUhvbGRlcigpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLm9wbGFjZWhvbGRlcjtcbiAgfVxuXG4gIHNldCBwbGFjZUhvbGRlcih2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5vcGxhY2Vob2xkZXIgPSB2YWx1ZTtcbiAgfVxuXG4gIGdldCB0b29sdGlwQ2xhc3MoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5nZXRUb29sdGlwQ2xhc3MoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXRUb29sdGlwQ2xhc3MoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYG8tdG9vbHRpcCAke3RoaXMudG9vbHRpcFBvc2l0aW9ufWA7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0VG9vbHRpcFRleHQoKTogc3RyaW5nIHtcbiAgICBpZiAoVXRpbC5pc0RlZmluZWQodGhpcy5fdG9vbHRpcCkgJiYgdGhpcy50cmFuc2xhdGVTZXJ2aWNlKSB7XG4gICAgICByZXR1cm4gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmdldCh0aGlzLl90b29sdGlwKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX3Rvb2x0aXA7XG4gIH1cblxuICBnZXQgdG9vbHRpcCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmdldFRvb2x0aXBUZXh0KCk7XG4gIH1cblxuICBzZXQgdG9vbHRpcCh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5fdG9vbHRpcCA9IHZhbHVlO1xuICB9XG5cbiAgZ2V0IHRvb2x0aXBQb3NpdGlvbigpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl90b29sdGlwUG9zaXRpb247XG4gIH1cblxuICBzZXQgdG9vbHRpcFBvc2l0aW9uKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl90b29sdGlwUG9zaXRpb24gPSB2YWx1ZTtcbiAgfVxuXG4gIGdldCB0b29sdGlwU2hvd0RlbGF5KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX3Rvb2x0aXBTaG93RGVsYXk7XG4gIH1cblxuICBzZXQgdG9vbHRpcFNob3dEZWxheSh2YWx1ZTogbnVtYmVyKSB7XG4gICAgdGhpcy5fdG9vbHRpcFNob3dEZWxheSA9IHZhbHVlO1xuICB9XG5cbiAgZ2V0IHRvb2x0aXBIaWRlRGVsYXkoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fdG9vbHRpcEhpZGVEZWxheTtcbiAgfVxuXG4gIHNldCB0b29sdGlwSGlkZURlbGF5KHZhbHVlOiBudW1iZXIpIHtcbiAgICB0aGlzLl90b29sdGlwSGlkZURlbGF5ID0gdmFsdWU7XG4gIH1cblxuICBnZXQgaXNSZWFkT25seSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5faXNSZWFkT25seTtcbiAgfVxuXG4gIHNldCBpc1JlYWRPbmx5KHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5zZXRJc1JlYWRPbmx5KHZhbHVlKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBzZXRJc1JlYWRPbmx5KHZhbHVlOiBib29sZWFuKTogdm9pZCB7XG4gICAgLy8gb25seSBtb2RpZml5bmcgcmVhZCBvbmx5IHN0YXRlIGlmIHRoZSBjb21wb25lbnQgaGFzIG5vdCBpdHMgb3duIHJlYWQtb25seSBpbnB1dFxuICAgIGlmIChVdGlsLmlzRGVmaW5lZCh0aGlzLnJlYWRPbmx5KSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoIXRoaXMuZW5hYmxlZCkge1xuICAgICAgdGhpcy5faXNSZWFkT25seSA9IGZhbHNlO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoIVBlcm1pc3Npb25zVXRpbHMuY2hlY2tFbmFibGVkUGVybWlzc2lvbih0aGlzLnBlcm1pc3Npb25zKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLl9pc1JlYWRPbmx5ID0gdmFsdWU7XG4gIH1cblxuICBnZXQgcmVhZE9ubHkoKTogYW55IHtcbiAgICByZXR1cm4gdGhpcy5fcmVhZE9ubHk7XG4gIH1cblxuICBzZXQgcmVhZE9ubHkodmFsdWU6IGFueSkge1xuICAgIGlmICghUGVybWlzc2lvbnNVdGlscy5jaGVja0VuYWJsZWRQZXJtaXNzaW9uKHRoaXMucGVybWlzc2lvbnMpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IHBhcnNlZFZhbHVlID0gQm9vbGVhbkNvbnZlcnRlcih2YWx1ZSk7XG4gICAgdGhpcy5fcmVhZE9ubHkgPSBwYXJzZWRWYWx1ZTtcbiAgICB0aGlzLl9pc1JlYWRPbmx5ID0gcGFyc2VkVmFsdWU7XG4gIH1cblxuICBzZXQgb3JlcXVpcmVkKHZhbDogYm9vbGVhbikge1xuICAgIHRoaXMuX29yZXF1aXJlZCA9IEJvb2xlYW5Db252ZXJ0ZXIodmFsKTtcbiAgfVxuXG4gIGdldCBvcmVxdWlyZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX29yZXF1aXJlZDtcbiAgfVxuXG4gIGdldCBpc1JlcXVpcmVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLm9yZXF1aXJlZDtcbiAgfVxuXG4gIHNldCByZXF1aXJlZCh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMub3JlcXVpcmVkID0gdmFsdWU7XG4gIH1cblxuICBnZXQgZW5hYmxlZCgpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLl9lbmFibGVkO1xuICB9XG5cbiAgc2V0IGVuYWJsZWQodmFsdWU6IGFueSkge1xuICAgIGNvbnN0IHBhcnNlZFZhbHVlID0gQm9vbGVhbkNvbnZlcnRlcih2YWx1ZSk7XG4gICAgdGhpcy5zZXRFbmFibGVkKHBhcnNlZFZhbHVlKTtcbiAgfVxuXG4gIGdldCBvbGFiZWwoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fb2xhYmVsO1xuICB9XG5cbiAgc2V0IG9sYWJlbCh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5fb2xhYmVsID0gdmFsdWU7XG4gIH1cblxufVxuIl19