mirror of
https://github.com/getgrav/grav-plugin-admin.git
synced 2025-11-10 15:26:06 +01:00
100 lines
2.7 KiB
JavaScript
100 lines
2.7 KiB
JavaScript
(function () {
|
|
var root = window || {};
|
|
root = root.GravJS = root.GravJS || {};
|
|
root = root.FormFields = root.FormFields || {};
|
|
|
|
var CheckboxesField = function (el, form) {
|
|
el = $(el);
|
|
this.el = el.is('[' + form.fieldIndicator + ']') ? el : el.closest('[' + form.fieldIndicator + ']');
|
|
|
|
this.keys = this.el.data('grav-keys') || false;
|
|
|
|
this._disabled = this.el.data('grav-disabled') || false;
|
|
this._default = this.el.data('grav-default') || '';
|
|
};
|
|
|
|
CheckboxesField.getName = function () {
|
|
return 'checkboxes';
|
|
};
|
|
|
|
CheckboxesField.getTypes = function () {
|
|
return [ 'checkboxes' ];
|
|
};
|
|
|
|
CheckboxesField.prototype.valid = function() {
|
|
return true;
|
|
};
|
|
|
|
CheckboxesField.prototype.disabled = function(state) {
|
|
if (typeof state !== 'undefined') {
|
|
this._disabled = state ? true : false;
|
|
}
|
|
|
|
return this._disabled;
|
|
};
|
|
|
|
CheckboxesField.prototype.name = function(name) {
|
|
if (name) {
|
|
this.el.data('grav-field-name', name);
|
|
return name;
|
|
}
|
|
|
|
return this.el.data('grav-field-name')
|
|
};
|
|
|
|
CheckboxesField.prototype.value = function(val) {
|
|
var useKeys = this.keys,
|
|
values = useKeys ? {} : [];
|
|
|
|
if (typeof val !== 'undefined') {
|
|
this.el.find('input').each(function () {
|
|
var checked = false;
|
|
|
|
if (useKeys && typeof val[$(this).attr('name')] !== 'undefined') {
|
|
checked = val[$(this).attr('name')];
|
|
} else if (!useKeys && val.indexOf($(this).val()) !== -1) {
|
|
checked = true;
|
|
}
|
|
|
|
$(this).prop('checked', checked);
|
|
});
|
|
|
|
return val;
|
|
}
|
|
|
|
this.el.find('input').each(function () {
|
|
if (useKeys) {
|
|
values[$(this).attr('name')] = $(this).is(':checked');
|
|
} else if ($(this).is(':checked')) {
|
|
values.push($(this).val());
|
|
}
|
|
});
|
|
|
|
return values;
|
|
};
|
|
|
|
CheckboxesField.prototype.reset = function() {
|
|
this.value(this._default);
|
|
};
|
|
|
|
CheckboxesField.prototype.formValues = function() {
|
|
var values = this.value(),
|
|
name = this.name(),
|
|
formValues = {};
|
|
|
|
for (var key in values) { if (values.hasOwnProperty(key)) {
|
|
formValues[name + '[' + key + ']'] = values[key] ? '1' : '0';
|
|
}
|
|
}
|
|
|
|
return formValues;
|
|
};
|
|
|
|
CheckboxesField.prototype.onChange = function(eh) {
|
|
var self = this;
|
|
this.el.find('input').on('change', function () { eh.call(self, self.value()); });
|
|
};
|
|
|
|
root.Checkboxes = CheckboxesField;
|
|
})();
|