UNPKG

@mui/x-data-grid-pro

Version:

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

77 lines 3.16 kB
import * as React from 'react'; import { useRtl } from '@mui/system/RtlProvider'; import PropTypes from 'prop-types'; import { GridPinnedColumnPosition } from '@mui/x-data-grid'; import { useGridApiContext } from "../hooks/utils/useGridApiContext.js"; import { useGridRootProps } from "../hooks/utils/useGridRootProps.js"; 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__*/_jsx(rootProps.slots.baseMenuItem, { onClick: pinColumn(GridPinnedColumnPosition.LEFT), iconStart: /*#__PURE__*/_jsx(rootProps.slots.columnMenuPinLeftIcon, { fontSize: "small" }), children: apiRef.current.getLocaleText('pinToLeft') }); const pinToRightMenuItem = /*#__PURE__*/_jsx(rootProps.slots.baseMenuItem, { onClick: pinColumn(GridPinnedColumnPosition.RIGHT), iconStart: /*#__PURE__*/_jsx(rootProps.slots.columnMenuPinRightIcon, { fontSize: "small" }), 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__*/_jsx(rootProps.slots.baseMenuItem, { onClick: pinColumn(otherSide), iconStart: /*#__PURE__*/_jsx(Icon, { fontSize: "small" }), children: apiRef.current.getLocaleText(label) }), /*#__PURE__*/_jsx(rootProps.slots.baseMenuItem, { onClick: unpinColumn, iconStart: "", 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 };