@gpa-gemstone/react-table
Version:
Table for GPA web applications
69 lines (68 loc) • 3.66 kB
JavaScript
;
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")));
}