first
This commit is contained in:
152
node_modules/vant/lib/mixins/checkbox.js
generated
vendored
Normal file
152
node_modules/vant/lib/mixins/checkbox.js
generated
vendored
Normal file
@ -0,0 +1,152 @@
|
||||
"use strict";
|
||||
|
||||
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
||||
|
||||
exports.__esModule = true;
|
||||
exports.CheckboxMixin = void 0;
|
||||
|
||||
var _icon = _interopRequireDefault(require("../icon"));
|
||||
|
||||
var _field = require("./field");
|
||||
|
||||
var _relation = require("./relation");
|
||||
|
||||
var _utils = require("../utils");
|
||||
|
||||
/**
|
||||
* Common part of Checkbox & Radio
|
||||
*/
|
||||
var CheckboxMixin = function CheckboxMixin(_ref) {
|
||||
var parent = _ref.parent,
|
||||
bem = _ref.bem,
|
||||
role = _ref.role;
|
||||
return {
|
||||
mixins: [(0, _relation.ChildrenMixin)(parent), _field.FieldMixin],
|
||||
props: {
|
||||
name: null,
|
||||
value: null,
|
||||
disabled: Boolean,
|
||||
iconSize: [Number, String],
|
||||
checkedColor: String,
|
||||
labelPosition: String,
|
||||
labelDisabled: Boolean,
|
||||
shape: {
|
||||
type: String,
|
||||
default: 'round'
|
||||
},
|
||||
bindGroup: {
|
||||
type: Boolean,
|
||||
default: true
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
disableBindRelation: function disableBindRelation() {
|
||||
return !this.bindGroup;
|
||||
},
|
||||
isDisabled: function isDisabled() {
|
||||
return this.parent && this.parent.disabled || this.disabled;
|
||||
},
|
||||
direction: function direction() {
|
||||
return this.parent && this.parent.direction || null;
|
||||
},
|
||||
iconStyle: function iconStyle() {
|
||||
var checkedColor = this.checkedColor || this.parent && this.parent.checkedColor;
|
||||
|
||||
if (checkedColor && this.checked && !this.isDisabled) {
|
||||
return {
|
||||
borderColor: checkedColor,
|
||||
backgroundColor: checkedColor
|
||||
};
|
||||
}
|
||||
},
|
||||
tabindex: function tabindex() {
|
||||
if (this.isDisabled || role === 'radio' && !this.checked) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
onClick: function onClick(event) {
|
||||
var _this = this;
|
||||
|
||||
var target = event.target;
|
||||
var icon = this.$refs.icon;
|
||||
var iconClicked = icon === target || (icon == null ? void 0 : icon.contains(target));
|
||||
|
||||
if (!this.isDisabled && (iconClicked || !this.labelDisabled)) {
|
||||
this.toggle(); // wait for toggle method to complete
|
||||
// so we can get the changed value in the click event listener
|
||||
|
||||
setTimeout(function () {
|
||||
_this.$emit('click', event);
|
||||
});
|
||||
} else {
|
||||
this.$emit('click', event);
|
||||
}
|
||||
},
|
||||
genIcon: function genIcon() {
|
||||
var h = this.$createElement;
|
||||
var checked = this.checked;
|
||||
var iconSize = this.iconSize || this.parent && this.parent.iconSize;
|
||||
return h("div", {
|
||||
"ref": "icon",
|
||||
"class": bem('icon', [this.shape, {
|
||||
disabled: this.isDisabled,
|
||||
checked: checked
|
||||
}]),
|
||||
"style": {
|
||||
fontSize: (0, _utils.addUnit)(iconSize)
|
||||
}
|
||||
}, [this.slots('icon', {
|
||||
checked: checked
|
||||
}) || h(_icon.default, {
|
||||
"attrs": {
|
||||
"name": "success"
|
||||
},
|
||||
"style": this.iconStyle
|
||||
})]);
|
||||
},
|
||||
genLabel: function genLabel() {
|
||||
var h = this.$createElement;
|
||||
var slot = this.slots();
|
||||
|
||||
if (slot) {
|
||||
return h("span", {
|
||||
"class": bem('label', [this.labelPosition, {
|
||||
disabled: this.isDisabled
|
||||
}])
|
||||
}, [slot]);
|
||||
}
|
||||
}
|
||||
},
|
||||
render: function render() {
|
||||
var h = arguments[0];
|
||||
var Children = [this.genIcon()];
|
||||
|
||||
if (this.labelPosition === 'left') {
|
||||
Children.unshift(this.genLabel());
|
||||
} else {
|
||||
Children.push(this.genLabel());
|
||||
}
|
||||
|
||||
return h("div", {
|
||||
"attrs": {
|
||||
"role": role,
|
||||
"tabindex": this.tabindex,
|
||||
"aria-checked": String(this.checked)
|
||||
},
|
||||
"class": bem([{
|
||||
disabled: this.isDisabled,
|
||||
'label-disabled': this.labelDisabled
|
||||
}, this.direction]),
|
||||
"on": {
|
||||
"click": this.onClick
|
||||
}
|
||||
}, [Children]);
|
||||
}
|
||||
};
|
||||
};
|
||||
|
||||
exports.CheckboxMixin = CheckboxMixin;
|
Reference in New Issue
Block a user