diff options
| author | schneefux <schneefux+commit@schneefux.xyz> | 2017-03-22 19:19:26 +0100 |
|---|---|---|
| committer | schneefux <schneefux+commit@schneefux.xyz> | 2017-03-22 19:19:26 +0100 |
| commit | d42c8b528eb595101954f478e0024e3f079f6fbf (patch) | |
| tree | 61a528cf94f1f6941f4683ae8736a4a0135c035e /templates/assets/bootstrap-material-design/js/checkbox.js | |
| download | minionlivesmatter-d42c8b528eb595101954f478e0024e3f079f6fbf.tar.gz minionlivesmatter-d42c8b528eb595101954f478e0024e3f079f6fbf.zip | |
first implementation of fun stats site
Diffstat (limited to 'templates/assets/bootstrap-material-design/js/checkbox.js')
| -rw-r--r-- | templates/assets/bootstrap-material-design/js/checkbox.js | 94 |
1 files changed, 94 insertions, 0 deletions
diff --git a/templates/assets/bootstrap-material-design/js/checkbox.js b/templates/assets/bootstrap-material-design/js/checkbox.js new file mode 100644 index 0000000..9b93f40 --- /dev/null +++ b/templates/assets/bootstrap-material-design/js/checkbox.js @@ -0,0 +1,94 @@ +import BaseSelection from './baseSelection' +//import Text from './text' +//import File from './file' +//import Radio from './radio' +//import Textarea from './textarea' +//import Select from './select' +import Util from './util' + +const Checkbox = (($) => { + + /** + * ------------------------------------------------------------------------ + * Constants + * ------------------------------------------------------------------------ + */ + const NAME = 'checkbox' + 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 = { + template: `<span class='checkbox-decorator'><span class='check'></span></span>` + } + + /** + * ------------------------------------------------------------------------ + * Class Definition + * ------------------------------------------------------------------------ + */ + class Checkbox extends BaseSelection { + + constructor($element, config, properties = {inputType: NAME, outerClass: NAME}) { + super($element, $.extend(true, + //{invalidComponentMatches: [File, Radio, Text, Textarea, Select]}, + Default, config), properties) + } + + dispose(dataKey = DATA_KEY) { + super.dispose(dataKey) + } + + static matches($element) { + // '.checkbox > label > input[type=checkbox]' + if ($element.attr('type') === 'checkbox') { + return true + } + return false + } + + static rejectMatch(component, $element) { + Util.assert(this.$element, this.matches($element), `${component} component element ${Util.describe($element)} is invalid for type='checkbox'.`) + } + + // ------------------------------------------------------------------------ + // protected + + // ------------------------------------------------------------------------ + // protected + + // ------------------------------------------------------------------------ + // private + + // ------------------------------------------------------------------------ + // static + static _jQueryInterface(config) { + return this.each(function () { + let $element = $(this) + let data = $element.data(DATA_KEY) + + if (!data) { + data = new Checkbox($element, config) + $element.data(DATA_KEY, data) + } + }) + } + } + + /** + * ------------------------------------------------------------------------ + * jQuery + * ------------------------------------------------------------------------ + */ + $.fn[JQUERY_NAME] = Checkbox._jQueryInterface + $.fn[JQUERY_NAME].Constructor = Checkbox + $.fn[JQUERY_NAME].noConflict = () => { + $.fn[JQUERY_NAME] = JQUERY_NO_CONFLICT + return Checkbox._jQueryInterface + } + + return Checkbox + +})(jQuery) + +export default Checkbox |
