UNPKG

@fe6/water-pro

Version:

An enterprise-class UI design language and Vue-based implementation

420 lines (335 loc) 17.7 kB
"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;