UNPKG

@ozen-ui/kit

Version:

React component library

45 lines (44 loc) 2.93 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Segment = exports.cnSegment = void 0; var tslib_1 = require("tslib"); require("./Segment.css"); var react_1 = tslib_1.__importStar(require("react")); var useControlled_1 = require("../../hooks/useControlled"); var useThemeProps_1 = require("../../hooks/useThemeProps"); var classname_1 = require("../../utils/classname"); var getIconSizeToFormElement_1 = require("../../utils/getIconSizeToFormElement"); var constants_1 = require("./constants"); var SegmentContext_1 = require("./SegmentContext"); exports.cnSegment = (0, classname_1.cn)('Segment'); exports.Segment = (0, react_1.forwardRef)(function (inProps, ref) { var _a = (0, useThemeProps_1.useThemeProps)({ name: 'Segment', props: inProps }), _b = _a.size, size = _b === void 0 ? constants_1.SEGMENT_DEFAULT_SIZE : _b, _c = _a.variant, variant = _c === void 0 ? constants_1.SEGMENT_DEFAULT_VARIANT : _c, _d = _a.selectedColor, selectedColor = _d === void 0 ? constants_1.SEGMENT_DEFAULT_SELECTED_COLOR : _d, _e = _a.fullWidth, fullWidth = _e === void 0 ? constants_1.SEGMENT_DEFAULT_FULL_WIDTH : _e, _f = _a.disabled, disabled = _f === void 0 ? constants_1.SEGMENT_DEFAULT_DISABLED : _f, valueProp = _a.value, name = _a.name, defaultValue = _a.defaultValue, onChange = _a.onChange, className = _a.className, children = _a.children, other = tslib_1.__rest(_a, ["size", "variant", "selectedColor", "fullWidth", "disabled", "value", "name", "defaultValue", "onChange", "className", "children"]); var _g = tslib_1.__read((0, useControlled_1.useControlled)({ name: 'Segment', value: valueProp, defaultValue: defaultValue, state: 'value', }), 2), valueState = _g[0], setValueState = _g[1]; var handleChange = (0, react_1.useCallback)(function (e) { setValueState(e.target.value); onChange === null || onChange === void 0 ? void 0 : onChange(e); }, [onChange]); var iconSize = (0, react_1.useMemo)(function () { return (0, getIconSizeToFormElement_1.getIconSizeToFormElement)(size); }, [size]); var contextState = (0, react_1.useMemo)(function () { return ({ name: name, disabled: disabled, iconSize: iconSize, selectedColor: selectedColor, selected: valueState, onChange: handleChange, }); }, [name, disabled, iconSize, selectedColor, valueState, handleChange]); return (react_1.default.createElement("fieldset", tslib_1.__assign({ ref: ref, disabled: disabled, className: (0, exports.cnSegment)({ size: size, variant: variant, disabled: disabled, selectedColor: selectedColor, fullWidth: fullWidth, }, [className]) }, other), react_1.default.createElement(SegmentContext_1.SegmentContext.Provider, { value: contextState }, children))); }); exports.Segment.displayName = 'Segment';