@wordpress/components
Version:
UI components for WordPress.
72 lines (67 loc) • 2.04 kB
JavaScript
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