@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
30 lines • 2.02 kB
JavaScript
import { __rest } from "tslib";
// 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((_a, ref) => {
var { pressed, iconName: defaultIconName, pressedIconName, iconSvg: defaultIconSvg, pressedIconSvg, iconUrl: defaultIconUrl, pressedIconUrl, variant, onChange, className } = _a, rest = __rest(_a, ["pressed", "iconName", "pressedIconName", "iconSvg", "pressedIconSvg", "iconUrl", "pressedIconUrl", "variant", "onChange", "className"]);
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, Object.assign({ 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 })));
});
//# sourceMappingURL=internal.js.map