/// import ConstraintsView from "./ConstraintsView"; import FieldView from "./FieldView"; import SettingsSectionFields from "./SettingsSectionFields"; declare let ajaxyFormsBuilder: { constraints: { [x: string]: any }; }; class Settings extends Backbone.View { fieldView: FieldView; field: any; onRemove: any; index: number; data: any; constructor(fieldView, index, field, data, onRemove) { super(); this.fieldView = fieldView; this.field = field; this.data = data; this.onRemove = onRemove; this.index = index; } createBasicSettings() { let basicSettings = jQuery("
").addClass("basic-settings"); let basicInnerSection = jQuery("
").addClass("section-inner"); basicInnerSection.append(new SettingsSectionFields(this.fieldView, `fields[${this.index}]`, this.field.properties.basic.fields, this.data).render().el); basicSettings.append(basicInnerSection); return basicSettings; } createSettings(data, type) { let settings = jQuery("
").addClass(["expand-settings", "expand-settings-" + type]); if (data.expanded) { settings.addClass("active"); } let heading = jQuery("

").html(`${data.label}`); let toggle = jQuery("").attr("href", "#").addClass("item-toggle").html(` `); toggle.on("click", (e) => { e.preventDefault(); settings.toggleClass("active"); }); heading.append(toggle); settings.append(heading); let toggleInnerSection = jQuery("
").addClass("section-toggle"); let innerSection = jQuery("
").addClass("section-inner"); innerSection.append(new SettingsSectionFields(this.fieldView, `fields[${this.index}]`, data.fields, this.data).render().el); toggleInnerSection.append(innerSection); settings.append(toggleInnerSection); return settings; } createConstraintsSettings(data) { let settings = jQuery("
").addClass(["expand-settings"]); if (data.expanded) { settings.addClass("active"); } let heading = jQuery("

").html(`${data.label}`); let toggle = jQuery("").attr("href", "#").addClass("item-toggle").html(` `); toggle.on("click", (e) => { e.preventDefault(); settings.toggleClass("active"); }); heading.append(toggle); settings.append(heading); let toggleInnerSection = jQuery("
").addClass("section-toggle"); let innerSection = jQuery("
").addClass("section-inner"); innerSection.append(new ConstraintsView(this.fieldView, `fields[${this.index}]`, this.data.constraints || []).render().el); toggleInnerSection.append(innerSection); settings.append(toggleInnerSection); return settings; } render() { this.el.classList.add("wrap-settings", "wp-clearfix"); let innerSettings = jQuery("
").addClass("settings-inner"); if (this.field.properties.basic && this.field.properties.basic.fields.length) { innerSettings.append(this.createSettings(this.field.properties.basic, "basic")); } if (this.field.properties.advanced && this.field.properties.advanced.fields.length) { innerSettings.append(this.createSettings(this.field.properties.advanced, "advanced")); } if (!this.field.disable_constraints) { innerSettings.append( this.createConstraintsSettings({ label: "Validation", constraints: ajaxyFormsBuilder.constraints, }) ); } innerSettings.append(jQuery("
")); let settingsActions = jQuery("
").addClass(["af-item-actions", "description-wide", "submitbox"]); let settingsAction = jQuery("") .html("Remove") .addClass(["item-delete", "submitdelete", "deletion"]) .attr("href", "#") .on("click", (e) => { e.preventDefault(); this.onRemove(); }); settingsActions.append(settingsAction); innerSettings.append(settingsActions); this.$el.append(innerSettings); return this; } toggle() { this.el.classList.toggle("active"); } } export default Settings;