UNPKG

3.49 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3exports.ToolbarFilter = void 0;
4const tslib_1 = require("tslib");
5const React = tslib_1.__importStar(require("react"));
6const ReactDOM = tslib_1.__importStar(require("react-dom"));
7const ToolbarItem_1 = require("./ToolbarItem");
8const ChipGroup_1 = require("../ChipGroup");
9const Chip_1 = require("../Chip");
10const ToolbarUtils_1 = require("./ToolbarUtils");
11class ToolbarFilter extends React.Component {
12 constructor(props) {
13 super(props);
14 this.state = {
15 isMounted: false
16 };
17 }
18 componentDidMount() {
19 const { categoryName, chips } = this.props;
20 this.context.updateNumberFilters(typeof categoryName !== 'string' && categoryName.hasOwnProperty('key')
21 ? categoryName.key
22 : categoryName.toString(), chips.length);
23 this.setState({ isMounted: true });
24 }
25 componentDidUpdate() {
26 const { categoryName, chips } = this.props;
27 this.context.updateNumberFilters(typeof categoryName !== 'string' && categoryName.hasOwnProperty('key')
28 ? categoryName.key
29 : categoryName.toString(), chips.length);
30 }
31 render() {
32 const _a = this.props, { children, chips, deleteChipGroup, deleteChip, chipGroupExpandedText, chipGroupCollapsedText, categoryName, showToolbarItem } = _a, props = tslib_1.__rest(_a, ["children", "chips", "deleteChipGroup", "deleteChip", "chipGroupExpandedText", "chipGroupCollapsedText", "categoryName", "showToolbarItem"]);
33 const { isExpanded, chipGroupContentRef } = this.context;
34 const categoryKey = typeof categoryName !== 'string' && categoryName.hasOwnProperty('key')
35 ? categoryName.key
36 : categoryName.toString();
37 const chipGroup = chips.length ? (React.createElement(ToolbarItem_1.ToolbarItem, { variant: "chip-group" },
38 React.createElement(ChipGroup_1.ChipGroup, { key: categoryKey, categoryName: typeof categoryName === 'string' ? categoryName : categoryName.name, isClosable: deleteChipGroup !== undefined, onClick: () => deleteChipGroup(categoryName), collapsedText: chipGroupCollapsedText, expandedText: chipGroupExpandedText }, chips.map(chip => typeof chip === 'string' ? (React.createElement(Chip_1.Chip, { key: chip, onClick: () => deleteChip(categoryKey, chip) }, chip)) : (React.createElement(Chip_1.Chip, { key: chip.key, onClick: () => deleteChip(categoryKey, chip) }, chip.node)))))) : null;
39 if (!isExpanded && this.state.isMounted) {
40 return (React.createElement(React.Fragment, null,
41 showToolbarItem && React.createElement(ToolbarItem_1.ToolbarItem, Object.assign({}, props), children),
42 ReactDOM.createPortal(chipGroup, chipGroupContentRef.current.firstElementChild)));
43 }
44 return (React.createElement(ToolbarUtils_1.ToolbarContentContext.Consumer, null, ({ chipContainerRef }) => (React.createElement(React.Fragment, null,
45 showToolbarItem && React.createElement(ToolbarItem_1.ToolbarItem, Object.assign({}, props), children),
46 chipContainerRef.current && ReactDOM.createPortal(chipGroup, chipContainerRef.current)))));
47 }
48}
49exports.ToolbarFilter = ToolbarFilter;
50ToolbarFilter.displayName = 'ToolbarFilter';
51ToolbarFilter.contextType = ToolbarUtils_1.ToolbarContext;
52ToolbarFilter.defaultProps = {
53 chips: [],
54 showToolbarItem: true
55};
56//# sourceMappingURL=ToolbarFilter.js.map
\No newline at end of file