@smart-react-components/ui
Version:
SRC UI includes React and Styled components.
34 lines (33 loc) • 1.76 kB
JavaScript
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const useChangeEffect_1 = __importDefault(require("@smart-react-components/core/hooks/useChangeEffect"));
const react_1 = __importDefault(require("react"));
const types_1 = require("../types");
const useAddons = ({ Component, leftAddon, rightAddon, props }) => {
const generateAddonEl = (item, position) => {
var _a;
if (!item) {
return null;
}
if (((_a = item === null || item === void 0 ? void 0 : item.type) === null || _a === void 0 ? void 0 : _a.displayName) === 'SRCAddon') {
return react_1.default.cloneElement(item, Object.assign(Object.assign(Object.assign({}, props), item.props), { position }));
}
return (react_1.default.createElement(Component, Object.assign({}, props, { position: position }), item));
};
const [leftAddonEl, setLeftAddonEl] = react_1.default.useState(() => generateAddonEl(leftAddon, types_1.OrderPosition.LEFT));
const [rightAddonEl, setRightAddonEl] = react_1.default.useState(() => generateAddonEl(rightAddon, types_1.OrderPosition.RIGHT));
(0, useChangeEffect_1.default)(() => {
setLeftAddonEl(generateAddonEl(leftAddon, types_1.OrderPosition.LEFT));
}, [leftAddon, props.isDisabled, props.isFocused]);
(0, useChangeEffect_1.default)(() => {
setRightAddonEl(generateAddonEl(rightAddon, types_1.OrderPosition.RIGHT));
}, [rightAddon, props.isDisabled, props.isFocused]);
return {
leftAddon: leftAddonEl,
rightAddon: rightAddonEl,
};
};
exports.default = useAddons;
;