@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
35 lines • 2.47 kB
JavaScript
import { __rest } from "tslib";
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
// SPDX-License-Identifier: Apache-2.0
import React, { memo, useCallback } from 'react';
import clsx from 'clsx';
import InternalFormField from '../../../form-field/internal';
import { useInternalI18n } from '../../../i18n/context';
import InternalMultiselect from '../../../multiselect/internal';
import { getBaseProps } from '../../base-component';
import SeriesMarker from '../chart-series-marker';
import styles from './styles.css.js';
export default memo(ChartFilter);
function ChartFilter(_a) {
var { series, i18nStrings, selectedSeries, onChange } = _a, restProps = __rest(_a, ["series", "i18nStrings", "selectedSeries", "onChange"]);
const baseProps = getBaseProps(restProps);
const className = clsx(baseProps.className, styles.root);
const i18n = useInternalI18n('[charts]');
const defaultOptions = series.map((d, i) => ({
label: d.label,
value: '' + i,
datum: d.datum,
__customIcon: (React.createElement("span", { className: styles['custom-icon-wrapper'] },
React.createElement(SeriesMarker, { color: d.color, type: d.type }))),
}));
const selectedOptions = defaultOptions.filter(option => (selectedSeries === null || selectedSeries === void 0 ? void 0 : selectedSeries.indexOf(option.datum)) !== -1);
const updateSelection = useCallback(({ detail: { selectedOptions } }) => {
const selectedSeries = defaultOptions
.filter(option => selectedOptions.indexOf(option) !== -1)
.map(option => option.datum);
onChange(selectedSeries);
}, [onChange, defaultOptions]);
return (React.createElement(InternalFormField, Object.assign({}, baseProps, { label: i18n('i18nStrings.filterLabel', i18nStrings === null || i18nStrings === void 0 ? void 0 : i18nStrings.filterLabel), className: className }),
React.createElement(InternalMultiselect, { placeholder: i18n('i18nStrings.filterPlaceholder', i18nStrings === null || i18nStrings === void 0 ? void 0 : i18nStrings.filterPlaceholder), options: defaultOptions, selectedOptions: selectedOptions, onChange: updateSelection, className: styles['chart-filter'], selectedAriaLabel: i18nStrings === null || i18nStrings === void 0 ? void 0 : i18nStrings.filterSelectedAriaLabel, filteringType: "none", statusType: "finished", keepOpen: true, hideTokens: true })));
}
//# sourceMappingURL=index.js.map