UNPKG

4.17 kBJavaScriptView Raw
1"use strict";
2
3Object.defineProperty(exports, "__esModule", {
4 value: true
5});
6exports.default = createBodyRow;
7
8var _vue = require("vue");
9
10var _vueTypes = _interopRequireDefault(require("../_util/vue-types"));
11
12var _createStore = require("./createStore");
13
14var _propsUtil = require("../_util/props-util");
15
16var _omit = _interopRequireDefault(require("omit.js"));
17
18function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
19
20function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
21
22function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
23
24function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
25
26function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
27
28function _isSlot(s) {
29 return typeof s === 'function' || Object.prototype.toString.call(s) === '[object Object]' && !(0, _vue.isVNode)(s);
30}
31
32var BodyRowProps = {
33 store: _createStore.Store,
34 rowKey: _vueTypes.default.oneOfType([_vueTypes.default.string, _vueTypes.default.number]),
35 prefixCls: _vueTypes.default.string
36};
37
38function createBodyRow() {
39 var Component = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'tr';
40 var BodyRow = (0, _vue.defineComponent)({
41 name: 'BodyRow',
42 inheritAttrs: false,
43 props: BodyRowProps,
44 setup: function setup() {
45 return {
46 unsubscribe: null
47 };
48 },
49 data: function data() {
50 var _this$store$getState = this.store.getState(),
51 selectedRowKeys = _this$store$getState.selectedRowKeys;
52
53 return {
54 selected: selectedRowKeys.indexOf(this.rowKey) >= 0
55 };
56 },
57 mounted: function mounted() {
58 this.subscribe();
59 },
60 beforeUnmount: function beforeUnmount() {
61 if (this.unsubscribe) {
62 this.unsubscribe();
63 }
64 },
65 methods: {
66 subscribe: function subscribe() {
67 var _this = this;
68
69 var store = this.store,
70 rowKey = this.rowKey;
71 this.unsubscribe = store.subscribe(function () {
72 var _this$store$getState2 = _this.store.getState(),
73 selectedRowKeys = _this$store$getState2.selectedRowKeys;
74
75 var selected = selectedRowKeys.indexOf(rowKey) >= 0;
76
77 if (selected !== _this.selected) {
78 _this.selected = selected;
79 }
80 });
81 }
82 },
83 render: function render() {
84 var _slot;
85
86 var _className;
87
88 var rowProps = (0, _omit.default)(_extends(_extends({}, this.$props), this.$attrs), ['prefixCls', 'rowKey', 'store', 'class']);
89 var className = (_className = {}, _defineProperty(_className, "".concat(this.prefixCls, "-row-selected"), this.selected), _defineProperty(_className, this.$attrs.class, !!this.$attrs.class), _className);
90 return (0, _vue.createVNode)(Component, _objectSpread({
91 "class": className
92 }, rowProps), _isSlot(_slot = (0, _propsUtil.getSlot)(this)) ? _slot : {
93 default: function _default() {
94 return [_slot];
95 }
96 });
97 }
98 });
99 return BodyRow;
100}
\No newline at end of file