@awsui/components-react
Version:
On July 19th, 2022, we launched [Cloudscape Design System](https://cloudscape.design). Cloudscape is an evolution of AWS-UI. It consists of user interface guidelines, front-end components, design resources, and development tools for building intuitive, en
28 lines • 1.94 kB
JavaScript
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
// SPDX-License-Identifier: Apache-2.0
import React from 'react';
import clsx from 'clsx';
import { warnOnce } from '@awsui/component-toolkit/internal';
import InternalButton from '../button/internal';
import { fireNonCancelableEvent } from '../internal/events';
import { isDevelopment } from '../internal/is-development';
import { getToggleIcon } from './util';
import styles from './styles.css.js';
export const InternalToggleButton = React.forwardRef(({ pressed, iconName: defaultIconName, pressedIconName, iconSvg: defaultIconSvg, pressedIconSvg, iconUrl: defaultIconUrl, pressedIconUrl, variant, nativeButtonAttributes, onChange, className, analyticsAction = 'click', ...rest }, ref) => {
if (isDevelopment) {
if (defaultIconName && !pressedIconName) {
warnOnce('ToggleButton', '`pressedIconName` must be provided for `pressed` state.');
}
if (defaultIconSvg && !pressedIconSvg) {
warnOnce('ToggleButton', '`pressedIconSvg` must be provided for `pressed` state.');
}
if (defaultIconUrl && !pressedIconUrl) {
warnOnce('ToggleButton', '`pressedIconUrl` must be provided for `pressed` state.');
}
}
return (React.createElement(InternalButton, { className: clsx(className, styles[`variant-${variant}`], { [styles.pressed]: pressed }), variant: variant, formAction: "none", iconName: getToggleIcon(pressed, defaultIconName, pressedIconName), iconUrl: getToggleIcon(pressed, defaultIconUrl, pressedIconUrl), iconSvg: getToggleIcon(pressed, defaultIconSvg, pressedIconSvg), "aria-pressed": pressed, onClick: event => {
event.preventDefault();
fireNonCancelableEvent(onChange, { pressed: !pressed });
}, ...rest, ref: ref, nativeButtonAttributes: nativeButtonAttributes, analyticsAction: analyticsAction }));
});
//# sourceMappingURL=internal.js.map