UNPKG

@gechiui/block-editor

Version:
105 lines (89 loc) 3.32 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.default = BorderRadiusControl; var _element = require("@gechiui/element"); var _components = require("@gechiui/components"); var _i18n = require("@gechiui/i18n"); var _allInputControl = _interopRequireDefault(require("./all-input-control")); var _inputControls = _interopRequireDefault(require("./input-controls")); var _linkedButton = _interopRequireDefault(require("./linked-button")); var _useSetting = _interopRequireDefault(require("../use-setting")); var _utils = require("./utils"); /** * GeChiUI dependencies */ /** * Internal dependencies */ const DEFAULT_VALUES = { topLeft: null, topRight: null, bottomLeft: null, bottomRight: null }; const MIN_BORDER_RADIUS_VALUE = 0; const MAX_BORDER_RADIUS_VALUES = { px: 100, em: 20, rem: 20 }; /** * Control to display border radius options. * * @param {Object} props Component props. * @param {Function} props.onChange Callback to handle onChange. * @param {Object} props.values Border radius values. * * @return {GCElement} Custom border radius control. */ function BorderRadiusControl(_ref) { let { onChange, values } = _ref; const [isLinked, setIsLinked] = (0, _element.useState)(!(0, _utils.hasDefinedValues)(values) || !(0, _utils.hasMixedValues)(values)); const units = (0, _components.__experimentalUseCustomUnits)({ availableUnits: (0, _useSetting.default)('spacing.units') || ['px', 'em', 'rem'] }); const unit = (0, _utils.getAllUnit)(values); const unitConfig = units && units.find(item => item.value === unit); const step = (unitConfig === null || unitConfig === void 0 ? void 0 : unitConfig.step) || 1; const [allValue] = (0, _components.__experimentalParseUnit)((0, _utils.getAllValue)(values)); const toggleLinked = () => setIsLinked(!isLinked); const handleSliderChange = next => { onChange(next !== undefined ? `${next}${unit}` : undefined); }; return (0, _element.createElement)("fieldset", { className: "components-border-radius-control" }, (0, _element.createElement)("legend", null, (0, _i18n.__)('等比例')), (0, _element.createElement)("div", { className: "components-border-radius-control__wrapper" }, isLinked ? (0, _element.createElement)(_element.Fragment, null, (0, _element.createElement)(_allInputControl.default, { className: "components-border-radius-control__unit-control", values: values, min: MIN_BORDER_RADIUS_VALUE, onChange: onChange, unit: unit, units: units }), (0, _element.createElement)(_components.RangeControl, { className: "components-border-radius-control__range-control", value: allValue, min: MIN_BORDER_RADIUS_VALUE, max: MAX_BORDER_RADIUS_VALUES[unit], initialPosition: 0, withInputField: false, onChange: handleSliderChange, step: step })) : (0, _element.createElement)(_inputControls.default, { min: MIN_BORDER_RADIUS_VALUE, onChange: onChange, values: values || DEFAULT_VALUES, units: units }), (0, _element.createElement)(_linkedButton.default, { onClick: toggleLinked, isLinked: isLinked }))); } //# sourceMappingURL=index.js.map