@itwin/itwinui-react
Version:
A react component library for iTwinUI
122 lines (121 loc) • 3.41 kB
JavaScript
;
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';