UNPKG

@gpa-gemstone/react-table

Version:
69 lines (68 loc) 3.66 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.BooleanFilter = BooleanFilter; // ****************************************************************************************************** // BooleanFilter.tsx - Gbtc // // Copyright © 2022, Grid Protection Alliance. All Rights Reserved. // // Licensed to the Grid Protection Alliance (GPA) under one or more contributor license agreements. See // the NOTICE file distributed with this work for additional information regarding copyright ownership. // The GPA licenses this file to you under the MIT License (MIT), the "License"; you may not use this // file except in compliance with the License. You may obtain a copy of the License at: // // http://opensource.org/licenses/MIT // // Unless agreed to in writing, the subject software distributed under the License is distributed on an // "AS-IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. Refer to the // License for the specific language governing permissions and limitations. // // Code Modification History: // ---------------------------------------------------------------------------------------------------- // 03/02/2022 - C. Lackner // Generated original version of source code. // ****************************************************************************************************** const React = require("react"); /** * Component to handle boolean filtering based on provided filter props. * @param {IFilterProps<T>} props - Props passed to the BooleanFilter component. * @returns JSX element representing the BooleanFilter component. */ function BooleanFilter(props) { const [selected, setSelected] = React.useState(false); const [notSelected, setNotSelected] = React.useState(false); React.useEffect(() => { if (props.Filter.length === 0) { setSelected(true); setNotSelected(true); return; } setSelected(props.Filter[0].SearchText === '1'); setNotSelected(props.Filter[0].SearchText !== '1'); }, [props.Filter]); React.useEffect(() => { if (!selected && !notSelected) { setSelected(true); setNotSelected(true); } }, [selected, notSelected]); React.useEffect(() => { if (selected && !notSelected && (props.Filter.length === 0 || props.Filter[0].SearchText !== '1')) { props.SetFilter([{ FieldName: props.FieldName, IsPivotColumn: false, SearchText: '1', Operator: '=', Type: 'boolean' }]); } if (!selected && notSelected && (props.Filter.length === 0 || props.Filter[0].SearchText !== '0')) { props.SetFilter([{ FieldName: props.FieldName, IsPivotColumn: false, SearchText: '0', Operator: '=', Type: 'boolean' }]); } if (selected && notSelected && props.Filter.length > 0) props.SetFilter([]); }, [selected, notSelected]); return React.createElement(React.Fragment, null, React.createElement("tr", { onClick: (evt) => { evt.preventDefault(); setSelected((s) => !s); } }, React.createElement("td", null, React.createElement("input", { type: "checkbox", checked: selected, onChange: () => null })), React.createElement("td", null, "Selected")), React.createElement("tr", { onClick: (evt) => { evt.preventDefault(); setNotSelected((v) => !v); } }, React.createElement("td", null, React.createElement("input", { type: "checkbox", checked: notSelected, onChange: () => null })), React.createElement("td", null, "Not Selected"))); }