@smart-react-components/ui
Version:
SRC UI includes React and Styled components.
70 lines (69 loc) • 3.61 kB
JavaScript
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.Position = void 0;
const element_props_1 = __importDefault(require("@smart-react-components/core/element-props"));
const intrinsic_styled_core_props_1 = __importDefault(require("@smart-react-components/core/element-props/intrinsic-styled-core-props"));
const react_1 = __importDefault(require("react"));
const FormInlineLabel_1 = __importDefault(require("../components/Form/FormInlineLabel"));
const HiddenInput_1 = __importDefault(require("../components/Form/HiddenInput"));
const types_1 = require("../types");
const CheckboxElement_1 = __importDefault(require("../components/Checkbox/CheckboxElement"));
var types_2 = require("../types");
Object.defineProperty(exports, "Position", { enumerable: true, get: function () { return types_2.OrderPosition; } });
const Checkbox = react_1.default.forwardRef((props, forwardRef) => {
const isChecked = react_1.default.useMemo(() => {
if (props.setChecked) {
return props.isChecked;
}
if (props.setActive) {
return typeof props.active.find(v => v === props.value) !== 'undefined';
}
return false;
}, [props.active, props.isChecked]);
const handleOnChange = () => {
if (!props.isDisabled) {
if (props.setChecked) {
props.setChecked(!props.isChecked);
}
else if (props.setActive) {
if (!props.active.includes(props.value)) {
props.setActive([...props.active, props.value]);
}
else {
props.setActive(props.active.filter(item => item !== props.value));
}
}
}
};
const input = (react_1.default.createElement(HiddenInput_1.default, Object.assign({ checked: isChecked, onChange: handleOnChange, ref: forwardRef, type: "checkbox" }, (props.isDisabled && { disabled: true }), (props.isRequired && { required: true }), (props.name && { name: props.name }))));
return (react_1.default.createElement(FormInlineLabel_1.default, Object.assign({ formSize: props.size, formSizeSm: props.sizeSm, formSizeMd: props.sizeMd, formSizeLg: props.sizeLg, formSizeXl: props.sizeXl, isBlock: props.isBlock, isDisabled: props.isDisabled, labelPosition: props.position, palette: props.palette }, (0, element_props_1.default)(props, [intrinsic_styled_core_props_1.default])),
react_1.default.cloneElement(props.template, {
checkboxSize: props.size,
checkboxSizeSm: props.sizeSm,
checkboxSizeMd: props.sizeMd,
checkboxSizeLg: props.sizeLg,
checkboxSizeXl: props.sizeXl,
children: (react_1.default.createElement(react_1.default.Fragment, null,
input,
props.template.props.children)),
isChecked,
isDisabled: props.isDisabled,
isIndeterminate: props.isIndeterminate,
isOutline: props.isOutline,
isSoft: props.isSoft,
palette: props.palette,
shape: props.shape,
}),
props.label && react_1.default.createElement("span", null, props.label)));
});
Checkbox.defaultProps = {
palette: 'primary',
position: types_1.OrderPosition.RIGHT,
shape: 'rectangle',
size: 'medium',
template: react_1.default.createElement(CheckboxElement_1.default, null),
};
exports.default = Checkbox;