You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
135 lines
3.2 KiB
135 lines
3.2 KiB
"use strict";
|
|
|
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
|
|
exports.__esModule = true;
|
|
exports.default = void 0;
|
|
|
|
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
|
|
var _babelHelperVueJsxMergeProps = _interopRequireDefault(require("@vue/babel-helper-vue-jsx-merge-props"));
|
|
|
|
var _utils = require("../utils");
|
|
|
|
var _functional = require("../utils/functional");
|
|
|
|
var _router = require("../utils/router");
|
|
|
|
var _shared = require("./shared");
|
|
|
|
var _icon = _interopRequireDefault(require("../icon"));
|
|
|
|
// Utils
|
|
// Components
|
|
var _createNamespace = (0, _utils.createNamespace)('cell'),
|
|
createComponent = _createNamespace[0],
|
|
bem = _createNamespace[1];
|
|
|
|
function Cell(h, props, slots, ctx) {
|
|
var icon = props.icon,
|
|
size = props.size,
|
|
title = props.title,
|
|
label = props.label,
|
|
value = props.value,
|
|
isLink = props.isLink;
|
|
var showTitle = slots.title || (0, _utils.isDef)(title);
|
|
|
|
function Label() {
|
|
var showLabel = slots.label || (0, _utils.isDef)(label);
|
|
|
|
if (showLabel) {
|
|
return h("div", {
|
|
"class": [bem('label'), props.labelClass]
|
|
}, [slots.label ? slots.label() : label]);
|
|
}
|
|
}
|
|
|
|
function Title() {
|
|
if (showTitle) {
|
|
return h("div", {
|
|
"class": [bem('title'), props.titleClass],
|
|
"style": props.titleStyle
|
|
}, [slots.title ? slots.title() : h("span", [title]), Label()]);
|
|
}
|
|
}
|
|
|
|
function Value() {
|
|
var showValue = slots.default || (0, _utils.isDef)(value);
|
|
|
|
if (showValue) {
|
|
return h("div", {
|
|
"class": [bem('value', {
|
|
alone: !showTitle
|
|
}), props.valueClass]
|
|
}, [slots.default ? slots.default() : h("span", [value])]);
|
|
}
|
|
}
|
|
|
|
function LeftIcon() {
|
|
if (slots.icon) {
|
|
return slots.icon();
|
|
}
|
|
|
|
if (icon) {
|
|
return h(_icon.default, {
|
|
"class": bem('left-icon'),
|
|
"attrs": {
|
|
"name": icon,
|
|
"classPrefix": props.iconPrefix
|
|
}
|
|
});
|
|
}
|
|
}
|
|
|
|
function RightIcon() {
|
|
var rightIconSlot = slots['right-icon'];
|
|
|
|
if (rightIconSlot) {
|
|
return rightIconSlot();
|
|
}
|
|
|
|
if (isLink) {
|
|
var arrowDirection = props.arrowDirection;
|
|
return h(_icon.default, {
|
|
"class": bem('right-icon'),
|
|
"attrs": {
|
|
"name": arrowDirection ? "arrow-" + arrowDirection : 'arrow'
|
|
}
|
|
});
|
|
}
|
|
}
|
|
|
|
function onClick(event) {
|
|
(0, _functional.emit)(ctx, 'click', event);
|
|
(0, _router.functionalRoute)(ctx);
|
|
}
|
|
|
|
var clickable = isLink || props.clickable;
|
|
var classes = {
|
|
clickable: clickable,
|
|
center: props.center,
|
|
required: props.required,
|
|
borderless: !props.border
|
|
};
|
|
|
|
if (size) {
|
|
classes[size] = size;
|
|
}
|
|
|
|
return h("div", (0, _babelHelperVueJsxMergeProps.default)([{
|
|
"class": bem(classes),
|
|
"attrs": {
|
|
"role": clickable ? 'button' : null,
|
|
"tabindex": clickable ? 0 : null
|
|
},
|
|
"on": {
|
|
"click": onClick
|
|
}
|
|
}, (0, _functional.inherit)(ctx)]), [LeftIcon(), Title(), Value(), RightIcon(), slots.extra == null ? void 0 : slots.extra()]);
|
|
}
|
|
|
|
Cell.props = (0, _extends2.default)({}, _shared.cellProps, _router.routeProps);
|
|
|
|
var _default = createComponent(Cell);
|
|
|
|
exports.default = _default; |