@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
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 { 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