@fe6/water-pro
Version:
An enterprise-class UI design language and Vue-based implementation
420 lines (335 loc) • 17.7 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _vue = require("vue");
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
var _tslib = require("tslib");
var _lodashEs = require("lodash");
var _shared = require("@fe6/shared");
var _table = _interopRequireDefault(require("../../table"));
var _formPro = require("../../form-pro");
var _useConfigInject2 = _interopRequireDefault(require("../../_util/hooks/useConfigInject"));
var _useSortable2 = require("../../_util/hooks/use-sortable");
var _usePagination2 = require("./hooks/use-pagination");
var _useColumns2 = require("./hooks/use-columns");
var _useDataSource2 = require("./hooks/use-data-source");
var _useLoading2 = require("./hooks/use-loading");
var _useRowSelection2 = require("./hooks/use-row-selection");
var _useTableScroll2 = require("./hooks/use-table-scroll");
var _useCustomRow2 = require("./hooks/use-custom-row");
var _useTableStyle2 = require("./hooks/use-table-style");
var _useTableHeader2 = require("./hooks/use-table-header");
var _useTableContext = require("./hooks/use-table-context");
var _useTableFooter2 = require("./hooks/use-table-footer");
var _useTableForm2 = require("./hooks/use-table-form");
var _useExpose = require("./hooks/use-expose");
var _props = require("./props");
var _expandIcon = _interopRequireDefault(require("./components/expand-icon"));
var _headerCell = _interopRequireDefault(require("./components/header-cell"));
var _card = _interopRequireDefault(require("../../card"));
var _components;
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function 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; }
function _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; }
function _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); }
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
function _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; }
var _default2 = (0, _vue.defineComponent)({
name: 'ATablePro',
components: (_components = {
Table: _table.default
}, _defineProperty(_components, _formPro.FormPro.name, _formPro.FormPro), _defineProperty(_components, "HeaderCell", _headerCell.default), _components),
props: _props.basicProps,
emits: ['fetch-success', 'fetch-error', 'fetch-finally', 'selection-change', 'register', 'row-click', 'row-dbClick', 'row-contextmenu', 'row-mouseenter', 'row-mouseleave', 'edit-end', 'edit-cancel', 'edit-row-end', 'edit-change', 'drag-end'],
setup: function setup(props, _ref) {
var _this = this;
var attrs = _ref.attrs,
emit = _ref.emit,
slots = _ref.slots;
var _useConfigInject = (0, _useConfigInject2.default)('table-pro', props),
prefixClsNew = _useConfigInject.prefixCls;
var tableElRef = (0, _vue.ref)(null);
var tableData = (0, _vue.ref)([]);
var wrapRef = (0, _vue.ref)(null);
var innerPropsRef = (0, _vue.ref)();
var _useForm = (0, _formPro.useForm)(),
_useForm2 = _slicedToArray(_useForm, 2),
registerForm = _useForm2[0],
formActions = _useForm2[1];
var getProps = (0, _vue.computed)(function () {
return _extends(_extends({}, props), (0, _vue.unref)(innerPropsRef));
});
var _useLoading = (0, _useLoading2.useLoading)(getProps),
getLoading = _useLoading.getLoading,
setLoading = _useLoading.setLoading;
var _usePagination = (0, _usePagination2.usePagination)(getProps),
getPaginationInfo = _usePagination.getPaginationInfo,
getPagination = _usePagination.getPagination,
setPagination = _usePagination.setPagination,
setShowPagination = _usePagination.setShowPagination,
getShowPagination = _usePagination.getShowPagination;
var _useRowSelection = (0, _useRowSelection2.useRowSelection)(getProps, tableData, emit),
getRowSelection = _useRowSelection.getRowSelection,
getRowSelectionRef = _useRowSelection.getRowSelectionRef,
getSelectRows = _useRowSelection.getSelectRows,
clearSelectedRowKeys = _useRowSelection.clearSelectedRowKeys,
getSelectRowKeys = _useRowSelection.getSelectRowKeys,
deleteSelectRowByKey = _useRowSelection.deleteSelectRowByKey,
setSelectedRowKeys = _useRowSelection.setSelectedRowKeys;
var _useDataSource = (0, _useDataSource2.useDataSource)(getProps, {
tableData: tableData,
getPaginationInfo: getPaginationInfo,
setLoading: setLoading,
setPagination: setPagination,
getFieldsValue: formActions.getFieldsValue,
clearSelectedRowKeys: clearSelectedRowKeys
}, emit),
handleTableChange = _useDataSource.handleTableChange,
getDataSourceRef = _useDataSource.getDataSourceRef,
getDataSource = _useDataSource.getDataSource,
setTableData = _useDataSource.setTableData,
fetch = _useDataSource.fetch,
getRowKey = _useDataSource.getRowKey,
reload = _useDataSource.reload,
getAutoCreateKey = _useDataSource.getAutoCreateKey,
updateTableData = _useDataSource.updateTableData;
var _useColumns = (0, _useColumns2.useColumns)(getProps, getPaginationInfo),
getViewColumns = _useColumns.getViewColumns,
getColumns = _useColumns.getColumns,
setCacheColumnsByField = _useColumns.setCacheColumnsByField,
setColumns = _useColumns.setColumns,
getColumnsRef = _useColumns.getColumnsRef,
getCacheColumns = _useColumns.getCacheColumns;
var _useTableScroll = (0, _useTableScroll2.useTableScroll)(getProps, tableElRef, getColumnsRef, getRowSelectionRef, getDataSourceRef),
getScrollRef = _useTableScroll.getScrollRef,
redoHeight = _useTableScroll.redoHeight;
var _useCustomRow = (0, _useCustomRow2.useCustomRow)(getProps, {
setSelectedRowKeys: setSelectedRowKeys,
getSelectRowKeys: getSelectRowKeys,
clearSelectedRowKeys: clearSelectedRowKeys,
getAutoCreateKey: getAutoCreateKey,
emit: emit
}),
customRow = _useCustomRow.customRow;
var _useTableStyle = (0, _useTableStyle2.useTableStyle)(getProps, prefixClsNew.value),
getRowClassName = _useTableStyle.getRowClassName;
var _useTableHeader = (0, _useTableHeader2.useTableHeader)(getProps, slots),
getHeaderProps = _useTableHeader.getHeaderProps;
var _useTableFooter = (0, _useTableFooter2.useTableFooter)(getProps, getScrollRef, tableElRef, getDataSourceRef),
getFooterProps = _useTableFooter.getFooterProps;
var _useTableForm = (0, _useTableForm2.useTableForm)(getProps, slots, fetch),
getFormProps = _useTableForm.getFormProps,
replaceFormSlotKey = _useTableForm.replaceFormSlotKey,
getFormSlotKeys = _useTableForm.getFormSlotKeys,
handleSearchInfoChange = _useTableForm.handleSearchInfoChange;
var getBindValues = (0, _vue.computed)(function () {
var propsData = _extends(_extends(_extends(_extends(_extends({
size: 'middle'
}, attrs), {
customRow: customRow,
expandIcon: (0, _expandIcon.default)()
}), (0, _vue.unref)(getProps)), (0, _vue.unref)(getHeaderProps)), {
scroll: (0, _vue.unref)(getScrollRef),
loading: (0, _vue.unref)(getLoading),
tableLayout: 'fixed',
rowSelection: (0, _vue.unref)(getRowSelectionRef),
rowKey: (0, _vue.unref)(getRowKey),
columns: (0, _vue.unref)(getViewColumns),
pagination: (0, _vue.unref)(getPaginationInfo),
dataSource: (0, _vue.unref)(getDataSourceRef),
footer: (0, _vue.unref)(getFooterProps)
});
if (slots.expandedRowRender) {
propsData = (0, _lodashEs.omit)(propsData, 'scroll');
}
propsData = (0, _lodashEs.omit)(propsData, 'class');
return propsData;
});
var getEmptyDataIsShowTable = (0, _vue.computed)(function () {
var _unref = (0, _vue.unref)(getProps),
emptyDataIsShowTable = _unref.emptyDataIsShowTable,
useSearchForm = _unref.useSearchForm;
if (emptyDataIsShowTable || !useSearchForm) {
return true;
}
return !!(0, _vue.unref)(getDataSourceRef).length;
});
var initDragTable = function initDragTable() {
return (0, _tslib.__awaiter)(_this, void 0, void 0, /*#__PURE__*/_regenerator.default.mark(function _callee() {
var columnListEl, _useSortable, initSortable;
return _regenerator.default.wrap(function _callee$(_context) {
while (1) {
switch (_context.prev = _context.next) {
case 0:
_context.next = 2;
return (0, _vue.nextTick)();
case 2:
columnListEl = (0, _vue.unref)(tableElRef).$el;
if (columnListEl) {
_context.next = 5;
break;
}
return _context.abrupt("return");
case 5:
_useSortable = (0, _useSortable2.useSortable)(columnListEl.querySelector('.ant-table-tbody'), _extends({
onEnd: function onEnd(evt) {
var oldIndex = evt.oldIndex,
newIndex = evt.newIndex;
if ((0, _shared.isUndefined)(oldIndex) && (0, _shared.isNull)(oldIndex) || (0, _shared.isUndefined)(newIndex) && (0, _shared.isNull)(newIndex) || oldIndex === newIndex) {
return;
} // Sort column
// Sort column
var oldIndexNumber = oldIndex;
var newIndexNumber = newIndex;
emit('drag-end', oldIndexNumber, newIndexNumber, evt);
}
}, (0, _vue.unref)(getProps).dragOtions)), initSortable = _useSortable.initSortable;
initSortable();
case 7:
case "end":
return _context.stop();
}
}
}, _callee);
}));
};
function setProps(props) {
innerPropsRef.value = _extends(_extends({}, (0, _vue.unref)(innerPropsRef)), props);
if (innerPropsRef.value.draggable) {
initDragTable();
}
}
var tableAction = {
reload: reload,
getSelectRows: getSelectRows,
clearSelectedRowKeys: clearSelectedRowKeys,
getSelectRowKeys: getSelectRowKeys,
deleteSelectRowByKey: deleteSelectRowByKey,
setPagination: setPagination,
setTableData: setTableData,
redoHeight: redoHeight,
setSelectedRowKeys: setSelectedRowKeys,
setColumns: setColumns,
setLoading: setLoading,
getLoading: (0, _vue.unref)(getLoading),
getDataSource: getDataSource,
setProps: setProps,
getRowSelection: getRowSelection,
getPaginationRef: getPagination,
getColumns: getColumns,
getCacheColumns: getCacheColumns,
emit: emit,
updateTableData: updateTableData,
setShowPagination: setShowPagination,
getShowPagination: getShowPagination,
setCacheColumnsByField: setCacheColumnsByField,
getSize: function getSize() {
return (0, _vue.unref)(getBindValues).size;
}
};
(0, _useTableContext.createTableContext)(_extends(_extends({}, tableAction), {
wrapRef: wrapRef,
getBindValues: getBindValues
}));
(0, _useExpose.useExpose)(tableAction);
emit('register', tableAction, formActions);
(0, _vue.onMounted)(function () {
if (props.draggable) {
initDragTable();
}
});
return {
tableElRef: tableElRef,
getBindValues: getBindValues,
getLoading: getLoading,
registerForm: registerForm,
handleSearchInfoChange: handleSearchInfoChange,
getEmptyDataIsShowTable: getEmptyDataIsShowTable,
handleTableChange: handleTableChange,
getRowClassName: getRowClassName,
clearSelectedRowKeys: clearSelectedRowKeys,
wrapRef: wrapRef,
tableAction: tableAction,
redoHeight: redoHeight,
getFormProps: getFormProps,
replaceFormSlotKey: replaceFormSlotKey,
getFormSlotKeys: getFormSlotKeys,
prefixClsNew: prefixClsNew,
columns: getViewColumns
};
},
methods: {
moreDisplayCancelSelect: function moreDisplayCancelSelect() {
this.clearSelectedRowKeys();
}
},
render: function render() {
var _ref2;
var formNode = null;
if (this.getBindValues.useSearchForm) {
formNode = (0, _vue.createVNode)(_formPro.FormPro, _objectSpread(_objectSpread({
"submit-on-reset": true
}, this.getFormProps), {}, {
"submit-button-options": {
loading: this.getLoading
},
"reset-button-options": {
loading: this.getLoading
},
"table-action": this.tableAction,
"label-align": this.formLabelALigin,
"label-col": this.formLabelCol,
"wrapper-col": this.formWrapperCol,
"onRegister": this.registerForm,
"onSubmit": this.handleSearchInfoChange,
"onAdvancedChange": this.redoHeight
}), this.$slots);
}
var tableSlots = _extends({}, this.$slots);
this.columns.forEach(function (column) {
tableSlots["header-".concat(column.dataIndex)] = function () {
return [(0, _vue.createVNode)(_headerCell.default, {
"column": column
}, null)];
};
});
var tableNode = (0, _vue.withDirectives)((0, _vue.createVNode)(_table.default, _objectSpread(_objectSpread({
"ref": "tableElRef"
}, this.getBindValues), {}, {
"row-class-name": this.getRowClassName,
"onChange": this.handleTableChange,
"onMoreDisplayCancelSelect": this.moreDisplayCancelSelect
}), tableSlots), [[_vue.vShow, this.getEmptyDataIsShowTable]]);
if (this.cardable) {
var slotsCard = (0, _lodashEs.omit)(this.$slots, ['cardTitle']);
var cardProps = {};
if (this.cardTitle) {
cardProps.title = this.cardTitle;
}
if ((0, _lodashEs.isFunction)(this.$slots.cardTitle)) {
slotsCard.title = this.$slots.cardTitle;
delete cardProps.title;
}
var _tableNode = function () {
return tableNode;
}();
tableNode = (0, _vue.createVNode)(_card.default, cardProps, _objectSpread({
default: function _default() {
return [_tableNode];
}
}, slotsCard));
}
return (0, _vue.createVNode)("div", {
"ref": "wrapRef",
"class": [this.prefixClsNew, this.$attrs.class, (_ref2 = {}, _defineProperty(_ref2, "".concat(this.prefixClsNew, "-cardable"), this.cardable), _defineProperty(_ref2, "".concat(this.prefixClsNew, "-form-container"), this.getBindValues.useSearchForm), _defineProperty(_ref2, "".concat(this.prefixClsNew, "--inset"), this.getBindValues.inset), _defineProperty(_ref2, "".concat(this.prefixClsNew, "--drag"), this.getBindValues.draggable), _ref2)]
}, [formNode, tableNode]);
}
});
exports.default = _default2;