UNPKG

@wordpress/components

Version:
72 lines (67 loc) 2.04 kB
import { createElement } from "@wordpress/element"; /** * External dependencies */ import classnames from 'classnames'; import { noop } from 'lodash'; /** * WordPress dependencies */ import { useInstanceId } from '@wordpress/compose'; import { __, sprintf } from '@wordpress/i18n'; import { closeSmall } from '@wordpress/icons'; /** * Internal dependencies */ import Button from '../button'; import VisuallyHidden from '../visually-hidden'; export default function Token({ value, status, title, displayTransform, isBorderless = false, disabled = false, onClickRemove = noop, onMouseEnter, onMouseLeave, messages, termPosition, termsCount }) { const instanceId = useInstanceId(Token); const tokenClasses = classnames('components-form-token-field__token', { 'is-error': 'error' === status, 'is-success': 'success' === status, 'is-validating': 'validating' === status, 'is-borderless': isBorderless, 'is-disabled': disabled }); const onClick = () => onClickRemove({ value }); const transformedValue = displayTransform(value); const termPositionAndCount = sprintf( /* translators: 1: term name, 2: term position in a set of terms, 3: total term set count. */ __('%1$s (%2$s of %3$s)'), transformedValue, termPosition, termsCount); return createElement("span", { className: tokenClasses, onMouseEnter: onMouseEnter, onMouseLeave: onMouseLeave, title: title }, createElement("span", { className: "components-form-token-field__token-text", id: `components-form-token-field__token-text-${instanceId}` }, createElement(VisuallyHidden, { as: "span" }, termPositionAndCount), createElement("span", { "aria-hidden": "true" }, transformedValue)), createElement(Button, { className: "components-form-token-field__remove-token", icon: closeSmall, onClick: !disabled && onClick, label: messages.remove, "aria-describedby": `components-form-token-field__token-text-${instanceId}` })); } //# sourceMappingURL=token.js.map