UNPKG

@mui/x-data-grid-pro

Version:

The Pro plan edition of the Data Grid components (MUI X).

90 lines 3.65 kB
import * as React from 'react'; import { useRtl } from '@mui/system/RtlProvider'; import PropTypes from 'prop-types'; import MenuItem from '@mui/material/MenuItem'; import ListItemIcon from '@mui/material/ListItemIcon'; import ListItemText from '@mui/material/ListItemText'; import { GridPinnedColumnPosition } from '@mui/x-data-grid'; import { useGridApiContext } from '../hooks/utils/useGridApiContext'; import { useGridRootProps } from '../hooks/utils/useGridRootProps'; import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime"; function GridColumnMenuPinningItem(props) { const { colDef, onClick } = props; const apiRef = useGridApiContext(); const rootProps = useGridRootProps(); const isRtl = useRtl(); const pinColumn = React.useCallback(side => event => { apiRef.current.pinColumn(colDef.field, side); onClick(event); }, [apiRef, colDef.field, onClick]); const unpinColumn = event => { apiRef.current.unpinColumn(colDef.field); onClick(event); }; const pinToLeftMenuItem = /*#__PURE__*/_jsxs(MenuItem, { onClick: pinColumn(GridPinnedColumnPosition.LEFT), children: [/*#__PURE__*/_jsx(ListItemIcon, { children: /*#__PURE__*/_jsx(rootProps.slots.columnMenuPinLeftIcon, { fontSize: "small" }) }), /*#__PURE__*/_jsx(ListItemText, { children: apiRef.current.getLocaleText('pinToLeft') })] }); const pinToRightMenuItem = /*#__PURE__*/_jsxs(MenuItem, { onClick: pinColumn(GridPinnedColumnPosition.RIGHT), children: [/*#__PURE__*/_jsx(ListItemIcon, { children: /*#__PURE__*/_jsx(rootProps.slots.columnMenuPinRightIcon, { fontSize: "small" }) }), /*#__PURE__*/_jsx(ListItemText, { children: apiRef.current.getLocaleText('pinToRight') })] }); if (!colDef) { return null; } const side = apiRef.current.isColumnPinned(colDef.field); if (side) { const otherSide = side === GridPinnedColumnPosition.RIGHT ? GridPinnedColumnPosition.LEFT : GridPinnedColumnPosition.RIGHT; const label = otherSide === GridPinnedColumnPosition.RIGHT ? 'pinToRight' : 'pinToLeft'; const Icon = side === GridPinnedColumnPosition.RIGHT ? rootProps.slots.columnMenuPinLeftIcon : rootProps.slots.columnMenuPinRightIcon; return /*#__PURE__*/_jsxs(React.Fragment, { children: [/*#__PURE__*/_jsxs(MenuItem, { onClick: pinColumn(otherSide), children: [/*#__PURE__*/_jsx(ListItemIcon, { children: /*#__PURE__*/_jsx(Icon, { fontSize: "small" }) }), /*#__PURE__*/_jsx(ListItemText, { children: apiRef.current.getLocaleText(label) })] }), /*#__PURE__*/_jsxs(MenuItem, { onClick: unpinColumn, children: [/*#__PURE__*/_jsx(ListItemIcon, {}), /*#__PURE__*/_jsx(ListItemText, { children: apiRef.current.getLocaleText('unpin') })] })] }); } if (isRtl) { return /*#__PURE__*/_jsxs(React.Fragment, { children: [pinToRightMenuItem, pinToLeftMenuItem] }); } return /*#__PURE__*/_jsxs(React.Fragment, { children: [pinToLeftMenuItem, pinToRightMenuItem] }); } process.env.NODE_ENV !== "production" ? GridColumnMenuPinningItem.propTypes = { // ----------------------------- Warning -------------------------------- // | These PropTypes are generated from the TypeScript type definitions | // | To update them edit the TypeScript types and run "pnpm proptypes" | // ---------------------------------------------------------------------- colDef: PropTypes.object.isRequired, onClick: PropTypes.func.isRequired } : void 0; export { GridColumnMenuPinningItem };