Source

FormFieldCollection.js

import { FormField } from "./FormField";
import { Collection } from "./Collection";
import { CallbackType, RequestHelper } from "./helper/module";

/**
 * @extends {Collection<FormField>}
 */
export class FormFieldCollection extends Collection {
    /**
     * Wrapper für TXTextControl.FormFieldCollection
     * @param {any} txFormFieldCollection 
     */
    constructor(txFormFieldCollection) {
        super(txFormFieldCollection, (/** @type {FormField} */ txFormField) => new FormField(txFormField));
        this.#bindCallbacks();
    }

    /**
     * binding callback functions
     */
    #bindCallbacks() {
        this._txCollection.getItem = this._txCollection.getItem.bind(this._txCollection);
        this._txCollection.remove = this._txCollection.remove.bind(this._txCollection);
    }

    /**
     * Gets the form field at the current text input position or the form field with the specified id
     * @param {number=} id
     * @returns {Promise<FormField>}
     */
    async getItem(id) {
        var txFormField = await RequestHelper.Promise(this._txCollection.getItem,
            CallbackType.RequestFormFieldCallback,
            CallbackType.ErrorCallback,
            id);
        return new FormField(txFormField);
    }

    /**
     *  Removes the form field from the Text Control document
     * @param {FormField} formField
     * @returns {Promise<boolean>}
     */
    async remove(formField) {
        return RequestHelper.Promise(this._txCollection.remove,
            formField.txFormField,
            CallbackType.RequestBooleanCallback,
            CallbackType.ErrorCallback);
    }
}