/// import FieldView from "./FieldView"; import RepeaterField from "./RepeaterField"; import SelectField from "./SelectField"; import TextAreaField from "./TextAreaField"; import TextField from "./TextField"; class SettingsSectionFields extends Backbone.View { fields: any; basename: any; data: any; fieldView: FieldView; constructor(fieldView, basename: string, fields, data: any) { super(); this.fieldView = fieldView; this.fields = fields; this.basename = basename; this.data = data; } render() { if (!this.fields || this.fields.length === 0) return this; let fieldMap = Object.keys(this.fields).map((key) => { let _field = this.fields[key]; switch (_field.type) { case "repeater": return new RepeaterField(this.basename, _field, this.data ? this.data[_field.name] || [] : []); case "select": return new SelectField(this.basename, _field, this.data ? this.data[_field.name] || "" : ""); case "textarea": return new TextAreaField(this.basename, _field, this.data ? this.data[_field.name] || "" : ""); default: let textField = new TextField(this.basename, _field, this.data ? this.data[_field.name] || "" : ""); if(_field.name == 'label'){ textField.$el.on("blur", "input", (e) => { let value = jQuery(e.target).val(); if (!value || value === "") { this.fieldView.setTitle(""); return; } this.fieldView.setTitle(value); }); this.fieldView.setTitle(this.data[_field.name] || ""); } return textField; } }); fieldMap.forEach((field) => { this.$el.append(field.render().el); }); return this; } } export default SettingsSectionFields;