@smart-react-components/ui
Version:
SRC UI includes React and Styled components.
43 lines (42 loc) • 2.72 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.isItemClickable = exports.getReverseOrderPosition = exports.applyResponsiveStyledProps = exports.applyResponsiveStyledProp = void 0;
const types_1 = require("../types");
/**
* Apply the given prop to each breakpoint which has a corresponding size prop.
*
* @param sizeProps - Object that holds size props.
* @param sizePropKey - Name of the size prop.
* @param responsivePropKey - Name of the applied prop.
* @param valueCallback - It is invoked with the given size prop value to return the responsive prop value.
*/
const applyResponsiveStyledProp = (sizeProps, sizePropKey, responsivePropKey, valueCallback) => (Object.assign(Object.assign(Object.assign(Object.assign({ [responsivePropKey]: valueCallback(sizeProps[sizePropKey]) }, (sizeProps[`${sizePropKey}Sm`] && { [`${responsivePropKey}Sm`]: valueCallback(sizeProps[`${sizePropKey}Sm`]) })), (sizeProps[`${sizePropKey}Md`] && { [`${responsivePropKey}Md`]: valueCallback(sizeProps[`${sizePropKey}Md`]) })), (sizeProps[`${sizePropKey}Lg`] && { [`${responsivePropKey}Lg`]: valueCallback(sizeProps[`${sizePropKey}Lg`]) })), (sizeProps[`${sizePropKey}Xl`] && { [`${responsivePropKey}Xl`]: valueCallback(sizeProps[`${sizePropKey}Xl`]) })));
exports.applyResponsiveStyledProp = applyResponsiveStyledProp;
/**
* Apply the given props to each breakpoint which has a corresponding size prop.
*
* @param sizeProps - Object that holds size props.
* @param sizePropKey - Name of the size prop.
* @param responsiveProps - Object key indicates name of the applied prop, and its value is invoked with the given size prop value to return the responsive prop value.
*/
const applyResponsiveStyledProps = (sizeProps, sizePropKey, responsiveProps) => {
let result = {};
Object.keys(responsiveProps).forEach(key => {
result = Object.assign(Object.assign({}, result), (0, exports.applyResponsiveStyledProp)(sizeProps, sizePropKey, key, responsiveProps[key]));
});
return result;
};
exports.applyResponsiveStyledProps = applyResponsiveStyledProps;
/**
* Returns reverse value of the order position.
* If value is left, returns right.
* If value is right, returns left.
*/
const getReverseOrderPosition = (value) => value ^ (types_1.OrderPosition.LEFT | types_1.OrderPosition.RIGHT);
exports.getReverseOrderPosition = getReverseOrderPosition;
/**
* Checks if the item is clickable.
* If onClick, onMouseDown, or onMouseUp are defined; isDisabled and isReadOnly are not, returns true.
*/
const isItemClickable = props => (props.onClick || props.onMouseDown || props.onMouseUp) && !props.isDisabled && !props.isReadOnly;
exports.isItemClickable = isItemClickable;
;