UNPKG

4.92 kBJavaScriptView Raw
1"use strict";
2'use client';
3
4var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
5var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
6Object.defineProperty(exports, "__esModule", {
7 value: true
8});
9exports.default = void 0;
10var React = _interopRequireWildcard(require("react"));
11var _propTypes = _interopRequireDefault(require("prop-types"));
12var _clsx = _interopRequireDefault(require("clsx"));
13var _composeClasses = _interopRequireDefault(require("@mui/utils/composeClasses"));
14var _TableContext = _interopRequireDefault(require("./TableContext"));
15var _zeroStyled = require("../zero-styled");
16var _memoTheme = _interopRequireDefault(require("../utils/memoTheme"));
17var _DefaultPropsProvider = require("../DefaultPropsProvider");
18var _tableClasses = require("./tableClasses");
19var _jsxRuntime = require("react/jsx-runtime");
20const useUtilityClasses = ownerState => {
21 const {
22 classes,
23 stickyHeader
24 } = ownerState;
25 const slots = {
26 root: ['root', stickyHeader && 'stickyHeader']
27 };
28 return (0, _composeClasses.default)(slots, _tableClasses.getTableUtilityClass, classes);
29};
30const TableRoot = (0, _zeroStyled.styled)('table', {
31 name: 'MuiTable',
32 slot: 'Root',
33 overridesResolver: (props, styles) => {
34 const {
35 ownerState
36 } = props;
37 return [styles.root, ownerState.stickyHeader && styles.stickyHeader];
38 }
39})((0, _memoTheme.default)(({
40 theme
41}) => ({
42 display: 'table',
43 width: '100%',
44 borderCollapse: 'collapse',
45 borderSpacing: 0,
46 '& caption': {
47 ...theme.typography.body2,
48 padding: theme.spacing(2),
49 color: (theme.vars || theme).palette.text.secondary,
50 textAlign: 'left',
51 captionSide: 'bottom'
52 },
53 variants: [{
54 props: ({
55 ownerState
56 }) => ownerState.stickyHeader,
57 style: {
58 borderCollapse: 'separate'
59 }
60 }]
61})));
62const defaultComponent = 'table';
63const Table = /*#__PURE__*/React.forwardRef(function Table(inProps, ref) {
64 const props = (0, _DefaultPropsProvider.useDefaultProps)({
65 props: inProps,
66 name: 'MuiTable'
67 });
68 const {
69 className,
70 component = defaultComponent,
71 padding = 'normal',
72 size = 'medium',
73 stickyHeader = false,
74 ...other
75 } = props;
76 const ownerState = {
77 ...props,
78 component,
79 padding,
80 size,
81 stickyHeader
82 };
83 const classes = useUtilityClasses(ownerState);
84 const table = React.useMemo(() => ({
85 padding,
86 size,
87 stickyHeader
88 }), [padding, size, stickyHeader]);
89 return /*#__PURE__*/(0, _jsxRuntime.jsx)(_TableContext.default.Provider, {
90 value: table,
91 children: /*#__PURE__*/(0, _jsxRuntime.jsx)(TableRoot, {
92 as: component,
93 role: component === defaultComponent ? null : 'table',
94 ref: ref,
95 className: (0, _clsx.default)(classes.root, className),
96 ownerState: ownerState,
97 ...other
98 })
99 });
100});
101process.env.NODE_ENV !== "production" ? Table.propTypes /* remove-proptypes */ = {
102 // ┌────────────────────────────── Warning ──────────────────────────────┐
103 // │ These PropTypes are generated from the TypeScript type definitions. │
104 // │ To update them, edit the d.ts file and run `pnpm proptypes`. │
105 // └─────────────────────────────────────────────────────────────────────┘
106 /**
107 * The content of the table, normally `TableHead` and `TableBody`.
108 */
109 children: _propTypes.default.node,
110 /**
111 * Override or extend the styles applied to the component.
112 */
113 classes: _propTypes.default.object,
114 /**
115 * @ignore
116 */
117 className: _propTypes.default.string,
118 /**
119 * The component used for the root node.
120 * Either a string to use a HTML element or a component.
121 */
122 component: _propTypes.default.elementType,
123 /**
124 * Allows TableCells to inherit padding of the Table.
125 * @default 'normal'
126 */
127 padding: _propTypes.default.oneOf(['checkbox', 'none', 'normal']),
128 /**
129 * Allows TableCells to inherit size of the Table.
130 * @default 'medium'
131 */
132 size: _propTypes.default /* @typescript-to-proptypes-ignore */.oneOfType([_propTypes.default.oneOf(['medium', 'small']), _propTypes.default.string]),
133 /**
134 * Set the header sticky.
135 * @default false
136 */
137 stickyHeader: _propTypes.default.bool,
138 /**
139 * The system prop that allows defining system overrides as well as additional CSS styles.
140 */
141 sx: _propTypes.default.oneOfType([_propTypes.default.arrayOf(_propTypes.default.oneOfType([_propTypes.default.func, _propTypes.default.object, _propTypes.default.bool])), _propTypes.default.func, _propTypes.default.object])
142} : void 0;
143var _default = exports.default = Table;
\No newline at end of file