news/plugins/admin/themes/grav/app/utils/selectize-required-fix.js

28 lines
978 B
JavaScript

/**
* This is a plugin to override the `.refreshValidityState` method of
* the Selectize library (https://selectize.github.io/selectize.js/).
* The library is not maintained anymore (as of 2017-09-13) and contains
* a bug which causes Microsoft Edge to not work with selectized [required]
* form fields. This plugin should be removed if
* https://github.com/selectize/selectize.js/pull/1320 is ever merged
* and a new version of Selectize gets released.
*/
import Selectize from 'selectize';
Selectize.define('required-fix', function(options) {
this.refreshValidityState = () => {
if (!this.isRequired) return false;
let invalid = !this.items.length;
this.isInvalid = invalid;
if (invalid) {
this.$control_input.attr('required', '');
this.$input.removeAttr('required');
} else {
this.$control_input.removeAttr('required');
this.$input.attr('required');
}
};
});