UNPKG

test-nut-ui

Version:

<p align="center"> <img alt="logo" src="https://img11.360buyimg.com/imagetools/jfs/t1/211965/25/7152/22022/61b16785E433119bb/aa41d7a9f7e823f3.png" width="150" style="margin-bottom: 10px;"> </p>

129 lines (128 loc) 6.05 kB
import _slicedToArray from "@babel/runtime/helpers/slicedToArray"; import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties"; import _defineProperty from "@babel/runtime/helpers/defineProperty"; var _excluded = ["children", "className", "style", "columns", "data", "bordered", "summary", "striped", "noData", "sorterIcon", "showHeader", "onSort"]; function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); 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 = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), true).forEach(function(key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function(key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; } import React__default, { useState, useEffect } from "react"; import classNames from "classnames"; import { DownArrow } from "@nutui/icons-react"; import { useConfig } from "./ConfigProvider.js"; import { C as ComponentDefaults } from "./typings.js"; var defaultProps = _objectSpread(_objectSpread({}, ComponentDefaults), {}, { columns: [], data: [], bordered: true, striped: false, noData: "", sorterIcon: null, showHeader: true }); var Table = function Table2(props) { var _useConfig = useConfig(), locale = _useConfig.locale; defaultProps.noData = locale.noData; var _defaultProps$props = _objectSpread(_objectSpread({}, defaultProps), props), children = _defaultProps$props.children, className = _defaultProps$props.className, style = _defaultProps$props.style, columns = _defaultProps$props.columns, data = _defaultProps$props.data, bordered = _defaultProps$props.bordered, summary = _defaultProps$props.summary, striped = _defaultProps$props.striped, noData = _defaultProps$props.noData, sorterIcon = _defaultProps$props.sorterIcon, showHeader = _defaultProps$props.showHeader, onSort = _defaultProps$props.onSort, rest = _objectWithoutProperties(_defaultProps$props, _excluded); var _useState = useState(data), _useState2 = _slicedToArray(_useState, 2), curData = _useState2[0], setCurData = _useState2[1]; useEffect(function() { if (data && String(data) !== String(curData)) { setCurData(data); } }, [data]); var classPrefix = "nut-table"; var headerClassPrefix = "".concat(classPrefix, "__main__head__tr"); var bodyClassPrefix = "".concat(classPrefix, "__main__body__tr"); var cls = classNames(classPrefix, className); var handleSorterClick = function handleSorterClick2(item) { if (item.sorter) { onSort && onSort(item, curData); if (typeof item.sorter === "function") { setCurData(curData.sort(item.sorter)); } else { setCurData(item.sorter === "default" ? curData.sort() : curData); } } }; var cellClasses = function cellClasses2(item) { var _ref; return _ref = {}, _defineProperty(_ref, "".concat(headerClassPrefix, "--border"), props.bordered), _defineProperty(_ref, "".concat(headerClassPrefix, "--align").concat(item.align ? item.align : ""), true), _ref; }; var getColumnItem = function getColumnItem2(value) { return columns.filter(function(item) { return item.key === value; })[0]; }; var renderHeadCells = function renderHeadCells2() { return columns.map(function(item, index) { return React__default.createElement("span", { className: classNames("".concat(headerClassPrefix, "__th"), cellClasses(item)), key: item.key, onClick: function onClick() { return handleSorterClick(item); } }, item.title, " ", item.sorter && (sorterIcon || React__default.createElement(DownArrow, { width: "12px", height: "12px" }))); }); }; var sortDataItem = function sortDataItem2() { return columns.map(function(columns2) { return [columns2.key, columns2.render]; }); }; var renderBodyTds = function renderBodyTds2(item) { return sortDataItem().map(function(_ref2, index) { var _ref3 = _slicedToArray(_ref2, 2), value = _ref3[0], render = _ref3[1]; return React__default.createElement("span", { className: classNames("".concat(bodyClassPrefix, "__td"), cellClasses(getColumnItem(value))), key: value }, typeof item[value] === "function" || typeof render === "function" ? React__default.createElement("div", null, render ? render(item) : item[value](item)) : item[value]); }); }; var renderBoyTrs = function renderBoyTrs2() { return curData.map(function(item, index) { return React__default.createElement("div", { className: bodyClassPrefix, key: index }, renderBodyTds(item)); }); }; return React__default.createElement("div", _objectSpread({ className: cls, style }, rest), React__default.createElement("div", { className: classNames("".concat(classPrefix, "__main"), _defineProperty({}, "".concat(classPrefix, "__main--striped"), striped)) }, showHeader && React__default.createElement("div", { className: "".concat(classPrefix, "__main__head") }, React__default.createElement("div", { className: headerClassPrefix }, renderHeadCells())), React__default.createElement("div", { className: "".concat(classPrefix, "__main__body") }, renderBoyTrs())), (summary || curData.length === 0) && React__default.createElement("div", { className: "".concat(classPrefix, "__summary") }, summary || noData)); }; Table.defaultProps = defaultProps; Table.displayName = "NutTable"; export { Table as default };