@fluido/ui-containers
Version:
A framework for create front-end easy and fast
87 lines (86 loc) • 3.03 kB
JavaScript
var __rest = (this && this.__rest) || function (s, e) {
var t = {};
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
t[p] = s[p];
if (s != null && typeof Object.getOwnPropertySymbols === "function")
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
t[p[i]] = s[p[i]];
}
return t;
};
import React from 'react';
import { Flui, tryParseColor } from '@fluido/ui';
import { Box_ } from './styled';
const watchedProps = [
'm',
'mt',
'mr',
'mb',
'ml',
'mx',
'my',
'mil',
'mis',
'mie',
'mbl',
'mbs',
'mbe',
'margin',
'marginTop',
'marginRight',
'marginBottom',
'marginLeft',
'marginInline',
'marginInlineStart',
'marginInlineEnd',
'marginBlock',
'marginBlockStart',
'marginBlockEnd',
'marginInline',
'marginInlineStart',
'marginInlineEnd',
'radius',
];
export const Box = Flui((_a, ref) => {
var { bg, background, bgColor, backgroundColor, children, className, color, fillColor, gradient, srOnly, strokeColor } = _a, props = __rest(_a, ["bg", "background", "bgColor", "backgroundColor", "children", "className", "color", "fillColor", "gradient", "srOnly", "strokeColor"]);
const classes = [];
const wProps = props;
className && classes.push(className);
srOnly && classes.push(' sr-only');
for (const k in wProps) {
if (watchedProps.includes(k)) {
switch (wProps[k]) {
case 'full':
wProps[k] = '100%';
break;
case 'half':
wProps[k] = '50%';
break;
case 'third':
wProps[k] = '33.3333%';
break;
case 'quarter':
wProps[k] = '25%';
break;
}
}
}
wProps.bg = bg && tryParseColor(bg, 'bg');
wProps.background = background && tryParseColor(background, 'bg');
wProps.bgColor = bgColor && tryParseColor(bgColor, 'bgColor');
wProps.backgroundColor =
backgroundColor && tryParseColor(backgroundColor, 'bgColor');
wProps.color = color && tryParseColor(color, 'color');
wProps.fillColor = fillColor && tryParseColor(fillColor, 'fill');
wProps.strokeColor = strokeColor && tryParseColor(strokeColor, 'stroke');
if (Array.isArray(gradient) && gradient.length >= 2) {
wProps.gradient = gradient
.map((color) => tryParseColor(color || 'transparent', 'gradient'))
.join(',');
}
else if (typeof gradient === 'string') {
wProps.gradient = gradient;
}
return (React.createElement(Box_, Object.assign({ className: classes.join(' '), ref: ref }, wProps), children));
});