UNPKG

@itwin/itwinui-react

Version:

A react component library for iTwinUI

122 lines (121 loc) 3.41 kB
'use strict'; Object.defineProperty(exports, '__esModule', { value: true, }); Object.defineProperty(exports, 'Surface', { enumerable: true, get: function () { return Surface; }, }); const _interop_require_default = require('@swc/helpers/_/_interop_require_default'); const _interop_require_wildcard = require('@swc/helpers/_/_interop_require_wildcard'); const _react = /*#__PURE__*/ _interop_require_wildcard._(require('react')); const _classnames = /*#__PURE__*/ _interop_require_default._( require('classnames'), ); const _index = require('../../utils/index.js'); const getSurfaceElevationValue = (elevation) => { switch (elevation) { case 0: return 'none'; case 1: return 'var(--iui-shadow-1)'; case 2: return 'var(--iui-shadow-2)'; case 3: return 'var(--iui-shadow-3)'; case 4: return 'var(--iui-shadow-4)'; case 5: return 'var(--iui-shadow-5)'; default: return; } }; const getBorderValue = (border) => { if ('string' == typeof border) return border; if (false === border) return 'none'; }; const SurfaceHeader = _react.forwardRef((props, ref) => { let { children, className, ...rest } = props; let { setHasLayout } = (0, _index.useSafeContext)(SurfaceContext); _react.useEffect(() => { if (!(0, _index.supportsHas)()) setHasLayout(true); }, [setHasLayout]); return _react.createElement( _index.Box, { className: (0, _classnames.default)('iui-surface-header', className), ref: ref, ...rest, }, children, ); }); if ('development' === process.env.NODE_ENV) SurfaceHeader.displayName = 'Surface.Header'; const SurfaceBody = _react.forwardRef((props, ref) => { let { children, className, isPadded = false, ...rest } = props; let { setHasLayout } = (0, _index.useSafeContext)(SurfaceContext); _react.useEffect(() => { if (!(0, _index.supportsHas)()) setHasLayout(true); }, [setHasLayout]); return _react.createElement( _index.Box, { className: (0, _classnames.default)('iui-surface-body', className), ref: ref, 'data-iui-padded': isPadded ? 'true' : void 0, ...rest, }, children, ); }); if ('development' === process.env.NODE_ENV) SurfaceBody.displayName = 'Surface.Body'; const Surface = Object.assign( _react.forwardRef((props, ref) => { let { elevation, border = true, className, style, children, ...rest } = props; let [hasLayout, setHasLayout] = _react.useState(false); let _style = { '--iui-surface-elevation': getSurfaceElevationValue(elevation), '--iui-surface-border': getBorderValue(border), ...style, }; return _react.createElement( _index.Box, { className: (0, _classnames.default)('iui-surface', className), style: _style, ref: ref, 'data-iui-layout': hasLayout ? 'true' : void 0, ...rest, }, _react.createElement( SurfaceContext.Provider, { value: { setHasLayout, }, }, children, ), ); }), { Header: SurfaceHeader, Body: SurfaceBody, }, ); if ('development' === process.env.NODE_ENV) Surface.displayName = 'Surface'; const SurfaceContext = _react.createContext(void 0); if ('development' === process.env.NODE_ENV) SurfaceContext.displayName = 'SurfaceContext';