import BaseFormControl from "./baseFormControl"; //import Checkbox from './checkbox' //import File from './file' //import Radio from './radio' //import Switch from './switch' //import Text from './text' //import Textarea from './textarea' import Util from "./util"; const Select = ($ => { /** * ------------------------------------------------------------------------ * Constants * ------------------------------------------------------------------------ */ const NAME = "select"; const DATA_KEY = `bmd.${NAME}`; const JQUERY_NAME = `bmd${NAME.charAt(0).toUpperCase() + NAME.slice(1)}`; const JQUERY_NO_CONFLICT = $.fn[JQUERY_NAME]; const Default = { requiredClasses: ["form-control||custom-select"] }; /** * ------------------------------------------------------------------------ * Class Definition * ------------------------------------------------------------------------ */ class Select extends BaseFormControl { constructor($element, config) { super( $element, $.extend( true, //{invalidComponentMatches: [Checkbox, File, Radio, Switch, Text, Textarea]}, Default, config ) ); // floating labels will cover the options, so trigger them to be above (if used) this.addIsFilled(); } dispose() { super.dispose(DATA_KEY); } static matches($element) { if ($element.prop("tagName") === "select") { return true; } return false; } static rejectMatch(component, $element) { Util.assert( this.$element, this.matches($element), `${component} component element ${Util.describe( $element )} is invalid for