1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- import { isDef, createNamespace } from '../utils';
- import { isNumeric } from '../utils/validate/number';
- var _createNamespace = createNamespace('badge'),
- createComponent = _createNamespace[0],
- bem = _createNamespace[1];
- export default createComponent({
- props: {
- dot: Boolean,
- max: [Number, String],
- color: String,
- content: [Number, String],
- tag: {
- type: String,
- default: 'div'
- }
- },
- methods: {
- hasContent: function hasContent() {
- return !!(this.$scopedSlots.content || isDef(this.content) && this.content !== '');
- },
- renderContent: function renderContent() {
- var dot = this.dot,
- max = this.max,
- content = this.content;
- if (!dot && this.hasContent()) {
- if (this.$scopedSlots.content) {
- return this.$scopedSlots.content();
- }
- if (isDef(max) && isNumeric(content) && +content > max) {
- return max + "+";
- }
- return content;
- }
- },
- renderBadge: function renderBadge() {
- var h = this.$createElement;
- if (this.hasContent() || this.dot) {
- return h("div", {
- "class": bem({
- dot: this.dot,
- fixed: !!this.$scopedSlots.default
- }),
- "style": {
- background: this.color
- }
- }, [this.renderContent()]);
- }
- }
- },
- render: function render() {
- var h = arguments[0];
- if (this.$scopedSlots.default) {
- var tag = this.tag;
- return h(tag, {
- "class": bem('wrapper')
- }, [this.$scopedSlots.default(), this.renderBadge()]);
- }
- return this.renderBadge();
- }
- });
|