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

44 lines 2.36 kB
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 'use client'; import React from 'react'; import { getAnalyticsMetadataAttribute } from '@awsui/component-toolkit/internal/analytics-metadata'; import useBaseComponent from '../internal/hooks/use-base-component'; import { applyDisplayName } from '../internal/utils/apply-display-name'; import InternalMultiselect from './internal'; import buttonTriggerAnalyticsSelectors from '../internal/components/button-trigger/analytics-metadata/styles.css.js'; const Multiselect = React.forwardRef(({ options = [], filteringType = 'none', statusType = 'finished', selectedOptions = [], keepOpen = true, hideTokens = false, ...restProps }, ref) => { const baseComponentProps = useBaseComponent('Multiselect', { props: { inlineTokens: restProps.inlineTokens, autoFocus: restProps.autoFocus, expandToViewport: restProps.expandToViewport, filteringType, hideTokens, keepOpen, tokenLimit: restProps.tokenLimit, virtualScroll: restProps.virtualScroll, readOnly: restProps.readOnly, enableSelectAll: restProps.enableSelectAll, }, metadata: { hasInlineLabel: Boolean(restProps.inlineLabelText), hasDisabledReasons: options.some(option => Boolean(option.disabledReason)), }, }); const componentAnalyticsMetadata = { name: 'awsui.Multiselect', label: `.${buttonTriggerAnalyticsSelectors['button-trigger']}`, properties: { disabled: `${!!restProps.disabled}`, selectedOptionsCount: `${selectedOptions.length}`, selectedOptionsValues: selectedOptions .filter(option => option.value !== undefined) .map(option => `${option.value}`), }, }; return (React.createElement(InternalMultiselect, { options: options, filteringType: filteringType, statusType: statusType, selectedOptions: selectedOptions, keepOpen: keepOpen, hideTokens: hideTokens, ...restProps, ...baseComponentProps, ref: ref, ...getAnalyticsMetadataAttribute({ component: componentAnalyticsMetadata }) })); }); applyDisplayName(Multiselect, 'Multiselect'); export default Multiselect; //# sourceMappingURL=index.js.map