UNPKG

@wordpress/components

Version:
81 lines (66 loc) 2.11 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _element = require("@wordpress/element"); var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")); var _compose = require("@wordpress/compose"); var _baseControl = _interopRequireDefault(require("../base-control")); /** * WordPress dependencies */ /** * Internal dependencies */ /** * @typedef OwnProps * @property {string} label Label for the control. * @property {boolean} [hideLabelFromVision] Whether to accessibly hide the label. * @property {string} value Value of the input. * @property {string} [help] Optional help text for the control. * @property {string} [className] Classname passed to BaseControl wrapper * @property {(value: string) => void} onChange Handle changes. * @property {string} [type='text'] Type of the input. */ /** @typedef {OwnProps & import('react').ComponentProps<'input'>} Props */ /** * * @param {Props} props Props * @param {import('react').Ref<HTMLInputElement>} [ref] */ function TextControl({ label, hideLabelFromVision, value, help, className, onChange, type = 'text', ...props }, ref) { const instanceId = (0, _compose.useInstanceId)(TextControl); const id = `inspector-text-control-${instanceId}`; const onChangeValue = /** @type {import('react').ChangeEvent<HTMLInputElement>} */ event => onChange(event.target.value); return (0, _element.createElement)(_baseControl.default, { label: label, hideLabelFromVision: hideLabelFromVision, id: id, help: help, className: className }, (0, _element.createElement)("input", (0, _extends2.default)({ className: "components-text-control__input", type: type, id: id, value: value, onChange: onChangeValue, "aria-describedby": !!help ? id + '__help' : undefined, ref: ref }, props))); } var _default = (0, _element.forwardRef)(TextControl); exports.default = _default; //# sourceMappingURL=index.js.map