UNPKG

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
"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;