///
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;