@@ -55,6 +55,7 @@ import {
5555 buildOrReturnStateWithPinnedCopy ,
5656 buildOrReturnStateWithUnresolvedImportedPins ,
5757 canCreateNewPins ,
58+ cardRangeSelectionEnabled ,
5859 createPluginDataWithLoadable ,
5960 createRunToLoadState ,
6061 generateNextCardStepIndex ,
@@ -1372,46 +1373,58 @@ const reducer = createReducer(
13721373 singleSelectionHeaders : enabledNewHeaders . concat ( disabledNewHeaders ) ,
13731374 } ;
13741375 } ) ,
1375- on ( actions . dataTableColumnToggled , ( state , { dataTableMode, headerType} ) => {
1376- const targetedHeaders =
1377- dataTableMode === DataTableMode . RANGE
1376+ on (
1377+ actions . dataTableColumnToggled ,
1378+ ( state , { dataTableMode, headerType, cardId} ) => {
1379+ const { cardStateMap, rangeSelectionEnabled, linkedTimeEnabled} = state ;
1380+ const rangeEnabled = cardId
1381+ ? cardRangeSelectionEnabled (
1382+ cardStateMap ,
1383+ rangeSelectionEnabled ,
1384+ linkedTimeEnabled ,
1385+ cardId
1386+ )
1387+ : dataTableMode === DataTableMode . RANGE ;
1388+
1389+ const targetedHeaders = rangeEnabled
13781390 ? state . rangeSelectionHeaders
13791391 : state . singleSelectionHeaders ;
13801392
1381- const currentToggledHeaderIndex = targetedHeaders . findIndex (
1382- ( element ) => element . type === headerType
1383- ) ;
1393+ const currentToggledHeaderIndex = targetedHeaders . findIndex (
1394+ ( element ) => element . type === headerType
1395+ ) ;
13841396
1385- // If the header is being enabled it goes at the bottom of the currently
1386- // enabled headers. If it is being disabled it goes to the top of the
1387- // currently disabled headers.
1388- let newToggledHeaderIndex = getEnabledCount ( targetedHeaders ) ;
1389- if ( targetedHeaders [ currentToggledHeaderIndex ] . enabled ) {
1390- newToggledHeaderIndex -- ;
1391- }
1392- const newHeaders = moveHeader (
1393- currentToggledHeaderIndex ,
1394- newToggledHeaderIndex ,
1395- targetedHeaders
1396- ) ;
1397+ // If the header is being enabled it goes at the bottom of the currently
1398+ // enabled headers. If it is being disabled it goes to the top of the
1399+ // currently disabled headers.
1400+ let newToggledHeaderIndex = getEnabledCount ( targetedHeaders ) ;
1401+ if ( targetedHeaders [ currentToggledHeaderIndex ] . enabled ) {
1402+ newToggledHeaderIndex -- ;
1403+ }
1404+ const newHeaders = moveHeader (
1405+ currentToggledHeaderIndex ,
1406+ newToggledHeaderIndex ,
1407+ targetedHeaders
1408+ ) ;
13971409
1398- newHeaders [ newToggledHeaderIndex ] = {
1399- ...newHeaders [ newToggledHeaderIndex ] ,
1400- enabled : ! newHeaders [ newToggledHeaderIndex ] . enabled ,
1401- } ;
1410+ newHeaders [ newToggledHeaderIndex ] = {
1411+ ...newHeaders [ newToggledHeaderIndex ] ,
1412+ enabled : ! newHeaders [ newToggledHeaderIndex ] . enabled ,
1413+ } ;
1414+
1415+ if ( rangeEnabled ) {
1416+ return {
1417+ ...state ,
1418+ rangeSelectionHeaders : newHeaders ,
1419+ } ;
1420+ }
14021421
1403- if ( dataTableMode === DataTableMode . RANGE ) {
14041422 return {
14051423 ...state ,
1406- rangeSelectionHeaders : newHeaders ,
1424+ singleSelectionHeaders : newHeaders ,
14071425 } ;
14081426 }
1409-
1410- return {
1411- ...state ,
1412- singleSelectionHeaders : newHeaders ,
1413- } ;
1414- } ) ,
1427+ ) ,
14151428 on ( actions . metricsToggleVisiblePlugin , ( state , { plugin} ) => {
14161429 let nextFilteredPluginTypes = new Set ( state . filteredPluginTypes ) ;
14171430 if ( nextFilteredPluginTypes . has ( plugin ) ) {
0 commit comments