bootstrap-vue
Version:
BootstrapVue, with over 40 plugins and more than 75 custom components, provides one of the most comprehensive implementations of Bootstrap v4 components and grid system for Vue.js. With extensive and automated WAI-ARIA accessibility markup.
150 lines (127 loc) • 4.43 kB
JavaScript
"use strict";
exports.__esModule = true;
exports.default = exports.BFormCheckbox = void 0;
var _vue = _interopRequireDefault(require("../../utils/vue"));
var _looseEqual = _interopRequireDefault(require("../../utils/loose-equal"));
var _looseIndexOf = _interopRequireDefault(require("../../utils/loose-index-of"));
var _inspect = require("../../utils/inspect");
var _form = _interopRequireDefault(require("../../mixins/form"));
var _formRadioCheck = _interopRequireDefault(require("../../mixins/form-radio-check"));
var _formSize = _interopRequireDefault(require("../../mixins/form-size"));
var _formState = _interopRequireDefault(require("../../mixins/form-state"));
var _id = _interopRequireDefault(require("../../mixins/id"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
// @vue/component
var BFormCheckbox =
/*#__PURE__*/
_vue.default.extend({
name: 'BFormCheckbox',
mixins: [_formRadioCheck.default, // Includes shared render function
_id.default, _form.default, _formSize.default, _formState.default],
inject: {
bvGroup: {
from: 'bvCheckGroup',
default: false
}
},
props: {
value: {
// type: [Object, Boolean],
default: true
},
uncheckedValue: {
// type: [Object, Boolean],
// Not applicable in multi-check mode
default: false
},
indeterminate: {
// Not applicable in multi-check mode
type: Boolean,
default: false
},
switch: {
// Custom switch styling
type: Boolean,
default: false
},
checked: {
// v-model
type: [String, Number, Object, Array, Boolean],
default: null
}
},
computed: {
isChecked: function isChecked() {
var checked = this.computedLocalChecked;
var value = this.value;
if ((0, _inspect.isArray)(checked)) {
return (0, _looseIndexOf.default)(checked, value) > -1;
} else {
return (0, _looseEqual.default)(checked, value);
}
},
isRadio: function isRadio() {
return false;
},
isCheck: function isCheck() {
return true;
}
},
watch: {
computedLocalChecked: function computedLocalChecked(newVal, oldVal) {
this.$emit('input', newVal);
if (this.$refs && this.$refs.input) {
this.$emit('update:indeterminate', this.$refs.input.indeterminate);
}
},
indeterminate: function indeterminate(newVal, oldVal) {
this.setIndeterminate(newVal);
}
},
mounted: function mounted() {
// Set initial indeterminate state
this.setIndeterminate(this.indeterminate);
},
methods: {
handleChange: function handleChange(_ref) {
var _ref$target = _ref.target,
checked = _ref$target.checked,
indeterminate = _ref$target.indeterminate;
var localChecked = this.computedLocalChecked;
var value = this.value;
var isArr = (0, _inspect.isArray)(localChecked);
var uncheckedValue = isArr ? null : this.uncheckedValue; // Update computedLocalChecked
if (isArr) {
var idx = (0, _looseIndexOf.default)(localChecked, value);
if (checked && idx < 0) {
// Add value to array
localChecked = localChecked.concat(value);
} else if (!checked && idx > -1) {
// Remove value from array
localChecked = localChecked.slice(0, idx).concat(localChecked.slice(idx + 1));
}
} else {
localChecked = checked ? value : uncheckedValue;
}
this.computedLocalChecked = localChecked; // Change is only emitted on user interaction
this.$emit('change', checked ? value : uncheckedValue); // If this is a child of form-checkbox-group, we emit a change event on it as well
if (this.isGroup) {
this.bvGroup.$emit('change', localChecked);
}
this.$emit('update:indeterminate', indeterminate);
},
setIndeterminate: function setIndeterminate(state) {
// Indeterminate only supported in single checkbox mode
if ((0, _inspect.isArray)(this.computedLocalChecked)) {
state = false;
}
if (this.$refs && this.$refs.input) {
this.$refs.input.indeterminate = state; // Emit update event to prop
this.$emit('update:indeterminate', state);
}
}
}
});
exports.BFormCheckbox = BFormCheckbox;
var _default = BFormCheckbox;
exports.default = _default;