import React from 'react'; import { Field } from '@progress/kendo-react-form'; import { Button } from '@progress/kendo-react-buttons'; import { Error } from '@progress/kendo-react-labels'; import { Grid, GridColumn, GridToolbar } from '@progress/kendo-react-grid'; import { FormComboBox, FormInput, FormNumericTextBox } from './form-component'; import { requiredValidator } from './validators'; import { ERCCA } from 'apps/ERCCA/constants'; const ParentFieldContext = React.createContext(''); const FORM_DATA_INDEX = 'formDataIndex'; class FormGridD2EstablishTeam extends React.Component { constructor(props) { super(props); this.onAdd = this.onAdd.bind(this); this.onRemove = this.onRemove.bind(this); } componentDidMount() { this._isMounted = true; helpers.debounce(`FormGridD2EstablishTeam-initialize`, async () => { this.initialize(); }); } componentWillUnmount() { this._isMounted = false; } initialize = async () => { let [enumValuesString] = await Promise.all([ERCCA.API.getUserAccessList({}, {}, {})]); let enumValuesArray = enumValuesString.at(0).ENUM_VALUES.split(','); let formattedEnumValues = enumValuesArray.map((value) => value.replace(/'/g, '')); // Add disabled options for "MRB Chairman" and "System Admin" const disabledOptions = ['MRB Chairman', 'System Admin']; // Filter out disabled options from the enum values const filteredEnumValues = formattedEnumValues.filter((value) => !disabledOptions.includes(value)); let enumValues = filteredEnumValues.map((value, index) => ({ label: value, value: value, disabled: false, // Set disabled to false by default })); // Set disabled to true for the disabled options disabledOptions.forEach((option) => { const index = enumValues.findIndex((value) => value.value === option); if (index !== -1) { enumValues[index].disabled = true; } }); this._isMounted && this.setState({ userAccessLists: [...enumValues.flat(), { label: 'Others', value: 'Others' }] }); }; onAdd(e) { e.preventDefault(); this.props.onUnshift({ value: { staffId: '', staffName: '', responsibility: [], email: '', }, }); } onRemove(cellProps) { this.props.onRemove({ index: cellProps.dataItem[FORM_DATA_INDEX], }); } nameCell = (props) => { const parentField = React.useContext(ParentFieldContext); return {props.field === 'responsibility' ? : }; }; commandCell = (onRemove) => (props) => { const onClick = React.useCallback( (e) => { e.preventDefault(); onRemove(props); }, [props] ); return ( ); } } export default FormGridD2EstablishTeam;