blob: 588b3c1d35275489f2a055e3b3bee18e860f4aa5 [file] [log] [blame]
/**
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
import React, { RefObject } from 'react';
import { styled } from '@superset-ui/core';
import ModalTrigger from 'src/components/ModalTrigger';
import FilterScope from 'src/dashboard/containers/FilterScope';
type FilterScopeModalProps = {
triggerNode: JSX.Element;
};
const FilterScopeModalBody = styled.div(({ theme: { gridUnit } }) => ({
padding: gridUnit * 2,
paddingBottom: gridUnit * 3,
}));
export default class FilterScopeModal extends React.PureComponent<
FilterScopeModalProps,
{}
> {
modal: RefObject<ModalTrigger>;
constructor(props: FilterScopeModalProps) {
super(props);
this.modal = React.createRef();
this.handleCloseModal = this.handleCloseModal.bind(this);
}
handleCloseModal(): void {
if (this.modal.current) {
this.modal.current.close();
}
}
render() {
const filterScopeProps = {
onCloseModal: this.handleCloseModal,
};
return (
<ModalTrigger
ref={this.modal}
triggerNode={this.props.triggerNode}
modalBody={
<FilterScopeModalBody>
<FilterScope {...filterScopeProps} />
</FilterScopeModalBody>
}
width="80%"
/>
);
}
}