Server IP : 80.87.202.40 / Your IP : 216.73.216.169 Web Server : Apache System : Linux rospirotorg.ru 5.14.0-539.el9.x86_64 #1 SMP PREEMPT_DYNAMIC Thu Dec 5 22:26:13 UTC 2024 x86_64 User : bitrix ( 600) PHP Version : 8.2.27 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /home/bitrix/ext_www/rospirotorg.ru/bitrix/js/rest/form-constructor/src/fields/ |
Upload File : |
import { Type, Text, Dom, Tag } from 'main.core'; import type { FieldConfig } from '../types'; import { EventEmitter } from 'main.core.events'; export class BaseField extends EventEmitter { options: FieldConfig; readySave: boolean; value: any; #errorBlock: HTMLElement; constructor(options: FieldConfig) { super(); this.setEventNamespace('BX.Rest.EInvoice.Field'); this.options = options; this.value = this.options.value ?? null; this.readySave = !(Type.isNil(this.value) || this.value === ''); this.options.id = Type.isStringFilled(this.options.id) ? this.options.id : Text.getRandom(8); } getId(): string { return this.options.id; } getName(): string { return this.options.name; } getContent(): HTMLElement { const wrapper = Tag.render` <div class="container"></div> `; Dom.append(this.renderFieldContainer(), wrapper); Dom.append(this.renderErrorsContainer(), wrapper); Dom.hide(this.renderErrorsContainer()); this.subscribe('error', (event) => { const messages = event.data.messages; this.renderErrorsContainer().innerHTML = Type.isArray(messages) ? messages.join('<br>') : messages; Dom.show(this.renderErrorsContainer()); if (!Dom.hasClass(wrapper, 'ui-ctl-warning')) { Dom.addClass(wrapper, 'ui-ctl-warning'); } }); return wrapper; } renderFieldContainer(): HTMLElement { throw new Error('Must be implemented in a child class'); } isReadySave(): boolean { return this.readySave; } renderErrorsContainer(): HTMLElement { if (!this.#errorBlock) { this.#errorBlock = Tag.render` <div class="ui-ctl-bottom bitrix-einvoice-error-block"></div> `; } return this.#errorBlock; } getValue(): any { return this.value; } }