primevue
Version:
PrimeVue is an open source UI library for Vue featuring a rich set of 80+ components, a theme designer, various theme alternatives such as Material, Bootstrap, Tailwind, premium templates and professional support. In addition, it integrates with PrimeBloc
180 lines (171 loc) • 5.23 kB
JavaScript
var Badge = require('primevue/badge');
var SpinnerIcon = require('primevue/icons/spinner');
var Ripple = require('primevue/ripple');
var BaseComponent = require('primevue/basecomponent');
var ButtonStyle = require('primevue/button/style');
var vue = require('vue');
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
var Badge__default = /*#__PURE__*/_interopDefaultLegacy(Badge);
var SpinnerIcon__default = /*#__PURE__*/_interopDefaultLegacy(SpinnerIcon);
var Ripple__default = /*#__PURE__*/_interopDefaultLegacy(Ripple);
var BaseComponent__default = /*#__PURE__*/_interopDefaultLegacy(BaseComponent);
var ButtonStyle__default = /*#__PURE__*/_interopDefaultLegacy(ButtonStyle);
var script$1 = {
name: 'BaseButton',
"extends": BaseComponent__default["default"],
props: {
label: {
type: String,
"default": null
},
icon: {
type: String,
"default": null
},
iconPos: {
type: String,
"default": 'left'
},
iconClass: {
type: String,
"default": null
},
badge: {
type: String,
"default": null
},
badgeClass: {
type: String,
"default": null
},
badgeSeverity: {
type: String,
"default": null
},
loading: {
type: Boolean,
"default": false
},
loadingIcon: {
type: String,
"default": undefined
},
link: {
type: Boolean,
"default": false
},
severity: {
type: String,
"default": null
},
raised: {
type: Boolean,
"default": false
},
rounded: {
type: Boolean,
"default": false
},
text: {
type: Boolean,
"default": false
},
outlined: {
type: Boolean,
"default": false
},
size: {
type: String,
"default": null
},
plain: {
type: Boolean,
"default": false
}
},
style: ButtonStyle__default["default"],
provide: function provide() {
return {
$parentInstance: this
};
}
};
var script = {
name: 'Button',
"extends": script$1,
methods: {
getPTOptions: function getPTOptions(key) {
return this.ptm(key, {
context: {
disabled: this.disabled
}
});
}
},
computed: {
disabled: function disabled() {
return this.$attrs.disabled || this.$attrs.disabled === '' || this.loading;
},
defaultAriaLabel: function defaultAriaLabel() {
return this.label ? this.label + (this.badge ? ' ' + this.badge : '') : this.$attrs.ariaLabel;
},
hasIcon: function hasIcon() {
return this.icon || this.$slots.icon;
}
},
components: {
SpinnerIcon: SpinnerIcon__default["default"],
Badge: Badge__default["default"]
},
directives: {
ripple: Ripple__default["default"]
}
};
var _hoisted_1 = ["aria-label", "disabled", "data-pc-severity"];
function render(_ctx, _cache, $props, $setup, $data, $options) {
var _component_SpinnerIcon = vue.resolveComponent("SpinnerIcon");
var _component_Badge = vue.resolveComponent("Badge");
var _directive_ripple = vue.resolveDirective("ripple");
return vue.withDirectives((vue.openBlock(), vue.createElementBlock("button", vue.mergeProps({
"class": _ctx.cx('root'),
type: "button",
"aria-label": $options.defaultAriaLabel,
disabled: $options.disabled
}, $options.getPTOptions('root'), {
"data-pc-name": "button",
"data-pc-severity": _ctx.severity
}), [vue.renderSlot(_ctx.$slots, "default", {}, function () {
return [_ctx.loading ? vue.renderSlot(_ctx.$slots, "loadingicon", {
key: 0,
"class": vue.normalizeClass([_ctx.cx('loadingIcon'), _ctx.cx('icon')])
}, function () {
return [_ctx.loadingIcon ? (vue.openBlock(), vue.createElementBlock("span", vue.mergeProps({
key: 0,
"class": [_ctx.cx('loadingIcon'), _ctx.cx('icon'), _ctx.loadingIcon]
}, _ctx.ptm('loadingIcon')), null, 16)) : (vue.openBlock(), vue.createBlock(_component_SpinnerIcon, vue.mergeProps({
key: 1,
"class": [_ctx.cx('loadingIcon'), _ctx.cx('icon')],
spin: ""
}, _ctx.ptm('loadingIcon')), null, 16, ["class"]))];
}) : vue.renderSlot(_ctx.$slots, "icon", {
key: 1,
"class": vue.normalizeClass([_ctx.cx('icon')])
}, function () {
return [_ctx.icon ? (vue.openBlock(), vue.createElementBlock("span", vue.mergeProps({
key: 0,
"class": [_ctx.cx('icon'), _ctx.icon, _ctx.iconClass]
}, _ctx.ptm('icon')), null, 16)) : vue.createCommentVNode("", true)];
}), vue.createElementVNode("span", vue.mergeProps({
"class": _ctx.cx('label')
}, _ctx.ptm('label')), vue.toDisplayString(_ctx.label || ' '), 17), _ctx.badge ? (vue.openBlock(), vue.createBlock(_component_Badge, vue.mergeProps({
key: 2,
value: _ctx.badge,
"class": _ctx.badgeClass,
severity: _ctx.badgeSeverity,
unstyled: _ctx.unstyled
}, _ctx.ptm('badge')), null, 16, ["value", "class", "severity", "unstyled"])) : vue.createCommentVNode("", true)];
})], 16, _hoisted_1)), [[_directive_ripple]]);
}
script.render = render;
module.exports = script;
;