UNPKG

@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

45 lines 2.01 kB
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 { getBaseProps } from '../internal/base-component'; import useBaseComponent from '../internal/hooks/use-base-component'; import { applyDisplayName } from '../internal/utils/apply-display-name'; import { getExternalProps } from '../internal/utils/external-props'; import InternalButtonGroup from './internal'; const ButtonGroup = React.forwardRef((_a, ref) => { var { variant, dropdownExpandToViewport = false } = _a, rest = __rest(_a, ["variant", "dropdownExpandToViewport"]); const baseProps = getBaseProps(rest); const itemCounts = getItemCounts(rest.items); const baseComponentProps = useBaseComponent('ButtonGroup', { props: { variant, dropdownExpandToViewport, }, metadata: { iconButtonsCount: itemCounts['icon-button'], iconToggleButtonsCount: itemCounts['icon-toggle-button'], iconFileInputsCount: itemCounts['icon-file-input'], menuDropdownsCount: itemCounts['menu-dropdown'], groupsCount: itemCounts.group, }, }); const externalProps = getExternalProps(rest); return (React.createElement(InternalButtonGroup, Object.assign({}, baseProps, baseComponentProps, externalProps, { ref: ref, variant: variant, dropdownExpandToViewport: dropdownExpandToViewport }))); }); function getItemCounts(allItems = []) { const counters = { 'icon-button': 0, 'icon-toggle-button': 0, 'icon-file-input': 0, 'menu-dropdown': 0, group: 0 }; function count(items) { for (const item of items) { counters[item.type] += 1; if (item.type === 'group') { count(item.items); } } } count(allItems); return counters; } applyDisplayName(ButtonGroup, 'ButtonGroup'); export default ButtonGroup; //# sourceMappingURL=index.js.map