UNPKG

@smart-react-components/ui

Version:
43 lines (42 loc) 2.72 kB
"use strict"; 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;