@wordpress/components
Version:
UI components for WordPress.
8 lines (7 loc) • 11.1 kB
Source Map (JSON)
{
"version": 3,
"sources": ["../../src/button/index.tsx"],
"sourcesContent": ["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n/**\n * WordPress dependencies\n */\nimport deprecated from '@wordpress/deprecated';\nimport { forwardRef } from '@wordpress/element';\nimport { useInstanceId } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport Tooltip from '../tooltip';\nimport Icon from '../icon';\nimport { VisuallyHidden } from '../visually-hidden';\nimport { positionToPlacement } from '../popover/utils';\nimport { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from \"react/jsx-runtime\";\nconst disabledEventsOnDisabledButton = ['onMouseDown', 'onClick'];\nfunction useDeprecatedProps({\n __experimentalIsFocusable,\n isDefault,\n isPrimary,\n isSecondary,\n isTertiary,\n isLink,\n isPressed,\n isSmall,\n size,\n variant,\n describedBy,\n ...otherProps\n}) {\n let computedSize = size;\n let computedVariant = variant;\n const newProps = {\n accessibleWhenDisabled: __experimentalIsFocusable,\n // @todo Mark `isPressed` as deprecated\n 'aria-pressed': isPressed,\n description: describedBy\n };\n if (isSmall) {\n computedSize ??= 'small';\n }\n if (isPrimary) {\n computedVariant ??= 'primary';\n }\n if (isTertiary) {\n computedVariant ??= 'tertiary';\n }\n if (isSecondary) {\n computedVariant ??= 'secondary';\n }\n if (isDefault) {\n deprecated('wp.components.Button `isDefault` prop', {\n since: '5.4',\n alternative: 'variant=\"secondary\"'\n });\n computedVariant ??= 'secondary';\n }\n if (isLink) {\n computedVariant ??= 'link';\n }\n return {\n ...newProps,\n ...otherProps,\n size: computedSize,\n variant: computedVariant\n };\n}\n\n/**\n * Lets users take actions and make choices with a single click or tap.\n *\n * ```jsx\n * import { Button } from '@wordpress/components';\n * const Mybutton = () => (\n * <Button\n * variant=\"primary\"\n * onClick={ handleClick }\n * >\n * Click here\n * </Button>\n * );\n * ```\n */\nexport function UnforwardedButton(props, ref) {\n const {\n __next40pxDefaultSize,\n accessibleWhenDisabled,\n isBusy,\n isDestructive,\n className,\n disabled,\n icon,\n iconPosition = 'left',\n iconSize,\n showTooltip,\n tooltipPosition,\n shortcut,\n label,\n children,\n size = 'default',\n text,\n variant,\n description,\n ...buttonOrAnchorProps\n } = useDeprecatedProps(props);\n const {\n href,\n target,\n 'aria-checked': ariaChecked,\n 'aria-pressed': ariaPressed,\n 'aria-selected': ariaSelected,\n ...additionalProps\n } = 'href' in buttonOrAnchorProps ? buttonOrAnchorProps : {\n href: undefined,\n target: undefined,\n ...buttonOrAnchorProps\n };\n const instanceId = useInstanceId(Button, 'components-button__description');\n const hasChildren = 'string' === typeof children && !!children || Array.isArray(children) && children?.[0] && children[0] !== null &&\n // Tooltip should not considered as a child\n children?.[0]?.props?.className !== 'components-tooltip';\n const truthyAriaPressedValues = [true, 'true', 'mixed'];\n const classes = clsx('components-button', className, {\n 'is-next-40px-default-size': __next40pxDefaultSize,\n 'is-secondary': variant === 'secondary',\n 'is-primary': variant === 'primary',\n 'is-small': size === 'small',\n 'is-compact': size === 'compact',\n 'is-tertiary': variant === 'tertiary',\n 'is-pressed': truthyAriaPressedValues.includes(ariaPressed),\n 'is-pressed-mixed': ariaPressed === 'mixed',\n 'is-busy': isBusy,\n 'is-link': variant === 'link',\n 'is-destructive': isDestructive,\n 'has-text': !!icon && (hasChildren || text),\n 'has-icon': !!icon,\n 'has-icon-right': iconPosition === 'right'\n });\n const trulyDisabled = disabled && !accessibleWhenDisabled;\n const Tag = href !== undefined && !disabled ? 'a' : 'button';\n const buttonProps = Tag === 'button' ? {\n type: 'button',\n disabled: trulyDisabled,\n 'aria-checked': ariaChecked,\n 'aria-pressed': ariaPressed,\n 'aria-selected': ariaSelected\n } : {};\n const anchorProps = Tag === 'a' ? {\n href,\n target\n } : {};\n const disableEventProps = {};\n if (disabled && accessibleWhenDisabled) {\n // In this case, the button will be disabled, but still focusable and\n // perceivable by screen reader users.\n buttonProps['aria-disabled'] = true;\n anchorProps['aria-disabled'] = true;\n for (const disabledEvent of disabledEventsOnDisabledButton) {\n disableEventProps[disabledEvent] = event => {\n if (event) {\n event.stopPropagation();\n event.preventDefault();\n }\n };\n }\n }\n\n // Should show the tooltip if...\n const shouldShowTooltip = !trulyDisabled && (\n // An explicit tooltip is passed or...\n showTooltip && !!label ||\n // There's a shortcut or...\n !!shortcut ||\n // There's a label and...\n !!label &&\n // The children are empty and...\n !children?.length &&\n // The tooltip is not explicitly disabled.\n false !== showTooltip);\n const descriptionId = description ? instanceId : undefined;\n const describedById = additionalProps['aria-describedby'] || descriptionId;\n const commonProps = {\n className: classes,\n 'aria-label': additionalProps['aria-label'] || label,\n 'aria-describedby': describedById,\n ref\n };\n const elementChildren = /*#__PURE__*/_jsxs(_Fragment, {\n children: [icon && iconPosition === 'left' && /*#__PURE__*/_jsx(Icon, {\n icon: icon,\n size: iconSize\n }), text && /*#__PURE__*/_jsx(_Fragment, {\n children: text\n }), children, icon && iconPosition === 'right' && /*#__PURE__*/_jsx(Icon, {\n icon: icon,\n size: iconSize\n })]\n });\n const element = Tag === 'a' ? /*#__PURE__*/_jsx(\"a\", {\n ...anchorProps,\n ...additionalProps,\n ...disableEventProps,\n ...commonProps,\n children: elementChildren\n }) : /*#__PURE__*/_jsx(\"button\", {\n ...buttonProps,\n ...additionalProps,\n ...disableEventProps,\n ...commonProps,\n children: elementChildren\n });\n\n // In order to avoid some React reconciliation issues, we are always rendering\n // the `Tooltip` component even when `shouldShowTooltip` is `false`.\n // In order to make sure that the tooltip doesn't show when it shouldn't,\n // we don't pass the props to the `Tooltip` component.\n const tooltipProps = shouldShowTooltip ? {\n text: children?.length && description ? description : label,\n shortcut,\n placement: tooltipPosition &&\n // Convert legacy `position` values to be used with the new `placement` prop\n positionToPlacement(tooltipPosition)\n } : {};\n return /*#__PURE__*/_jsxs(_Fragment, {\n children: [/*#__PURE__*/_jsx(Tooltip, {\n ...tooltipProps,\n children: element\n }), description && /*#__PURE__*/_jsx(VisuallyHidden, {\n children: /*#__PURE__*/_jsx(\"span\", {\n id: descriptionId,\n children: description\n })\n })]\n });\n}\nexport const Button = forwardRef(UnforwardedButton);\nButton.displayName = 'Button';\nexport default Button;"],
"mappings": "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",
"names": ["deprecated", "clsx", "_jsxs", "_Fragment", "_jsx", "Icon", "Tooltip"]
}