diff --git a/app/javascript/src/apps/mydb/elements/details/reactions/ReactionDetails.js b/app/javascript/src/apps/mydb/elements/details/reactions/ReactionDetails.js index ad88fb54df..ce864d7a57 100644 --- a/app/javascript/src/apps/mydb/elements/details/reactions/ReactionDetails.js +++ b/app/javascript/src/apps/mydb/elements/details/reactions/ReactionDetails.js @@ -15,6 +15,9 @@ import ElementActions from 'src/stores/alt/actions/ElementActions'; import DetailActions from 'src/stores/alt/actions/DetailActions'; import LoadingActions from 'src/stores/alt/actions/LoadingActions'; import ReactionVariations from 'src/apps/mydb/elements/details/reactions/variationsTab/ReactionVariations'; +import { + REACTION_VARIATIONS_TAB_KEY +} from 'src/apps/mydb/elements/details/reactions/variationsTab/ReactionVariationsUtils'; import DetailsTabLiteratures from 'src/apps/mydb/elements/details/literature/DetailsTabLiteratures'; import ReactionDetailsContainers from 'src/apps/mydb/elements/details/reactions/analysesTab/ReactionDetailsContainers'; import SampleDetailsContainers from 'src/apps/mydb/elements/details/samples/analysesTab/SampleDetailsContainers'; @@ -585,10 +588,16 @@ export default class ReactionDetails extends Component { ), variations: ( - + ) diff --git a/app/javascript/src/apps/mydb/elements/details/reactions/variationsTab/ReactionVariations.js b/app/javascript/src/apps/mydb/elements/details/reactions/variationsTab/ReactionVariations.js index 92be244a1d..1293603f9e 100644 --- a/app/javascript/src/apps/mydb/elements/details/reactions/variationsTab/ReactionVariations.js +++ b/app/javascript/src/apps/mydb/elements/details/reactions/variationsTab/ReactionVariations.js @@ -1,7 +1,7 @@ /* eslint-disable react/display-name */ import { AgGridReact } from 'ag-grid-react'; import React, { - useRef, useState, useCallback, useReducer + useRef, useState, useCallback, useReducer, useEffect } from 'react'; import { Button, OverlayTrigger, Tooltip, Alert, @@ -33,7 +33,7 @@ import { } from 'src/apps/mydb/elements/details/reactions/variationsTab/ReactionVariationsReducers'; import GasPhaseReactionStore from 'src/stores/alt/stores/GasPhaseReactionStore'; -export default function ReactionVariations({ reaction, onReactionChange }) { +export default function ReactionVariations({ reaction, onReactionChange, isActive }) { const gridRef = useRef(null); const reactionVariations = reaction.variations; const reactionHasPolymers = reaction.hasPolymers(); @@ -154,6 +154,13 @@ export default function ReactionVariations({ reaction, onReactionChange }) { resizable: false, }; + useEffect(() => { + // Auto-size columns when the parent tab is (re-)entered. + if (isActive && gridRef.current?.api) { + gridRef.current.api.autoSizeAllColumns(); + } + }, [isActive]); + const setReactionVariations = (updatedReactionVariations) => { reaction.variations = updatedReactionVariations; onReactionChange(reaction); @@ -421,7 +428,6 @@ export default function ReactionVariations({ reaction, onReactionChange }) { */ readOnlyEdit onCellEditRequest={updateRow} - onFirstDataRendered={() => gridRef.current.api.autoSizeAllColumns()} onCellValueChanged={(event) => fitColumnToContent(event)} onColumnHeaderClicked={(event) => fitColumnToContent(event)} /> @@ -433,4 +439,5 @@ export default function ReactionVariations({ reaction, onReactionChange }) { ReactionVariations.propTypes = { reaction: PropTypes.instanceOf(Reaction).isRequired, onReactionChange: PropTypes.func.isRequired, + isActive: PropTypes.bool.isRequired, }; diff --git a/app/javascript/src/apps/mydb/elements/details/reactions/variationsTab/ReactionVariationsUtils.js b/app/javascript/src/apps/mydb/elements/details/reactions/variationsTab/ReactionVariationsUtils.js index cf2bbe74e2..5cfa5118ce 100644 --- a/app/javascript/src/apps/mydb/elements/details/reactions/variationsTab/ReactionVariationsUtils.js +++ b/app/javascript/src/apps/mydb/elements/details/reactions/variationsTab/ReactionVariationsUtils.js @@ -5,6 +5,7 @@ import { updateVariationsRowOnReferenceMaterialChange, getMaterialData } from 'src/apps/mydb/elements/details/reactions/variationsTab/ReactionVariationsMaterials'; +const REACTION_VARIATIONS_TAB_KEY = 'reactionVariationsTab'; const temperatureUnits = ['°C', 'K', '°F']; const durationUnits = ['Second(s)', 'Minute(s)', 'Hour(s)', 'Day(s)', 'Week(s)']; const massUnits = ['g', 'mg', 'μg']; @@ -247,4 +248,5 @@ export { getCellDataType, getUserFacingUnit, getStandardValue, + REACTION_VARIATIONS_TAB_KEY };