@@ -55,6 +55,7 @@ import {
55
55
buildOrReturnStateWithPinnedCopy ,
56
56
buildOrReturnStateWithUnresolvedImportedPins ,
57
57
canCreateNewPins ,
58
+ cardRangeSelectionEnabled ,
58
59
createPluginDataWithLoadable ,
59
60
createRunToLoadState ,
60
61
generateNextCardStepIndex ,
@@ -1372,46 +1373,58 @@ const reducer = createReducer(
1372
1373
singleSelectionHeaders : enabledNewHeaders . concat ( disabledNewHeaders ) ,
1373
1374
} ;
1374
1375
} ) ,
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
1378
1390
? state . rangeSelectionHeaders
1379
1391
: state . singleSelectionHeaders ;
1380
1392
1381
- const currentToggledHeaderIndex = targetedHeaders . findIndex (
1382
- ( element ) => element . type === headerType
1383
- ) ;
1393
+ const currentToggledHeaderIndex = targetedHeaders . findIndex (
1394
+ ( element ) => element . type === headerType
1395
+ ) ;
1384
1396
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
+ ) ;
1397
1409
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
+ }
1402
1421
1403
- if ( dataTableMode === DataTableMode . RANGE ) {
1404
1422
return {
1405
1423
...state ,
1406
- rangeSelectionHeaders : newHeaders ,
1424
+ singleSelectionHeaders : newHeaders ,
1407
1425
} ;
1408
1426
}
1409
-
1410
- return {
1411
- ...state ,
1412
- singleSelectionHeaders : newHeaders ,
1413
- } ;
1414
- } ) ,
1427
+ ) ,
1415
1428
on ( actions . metricsToggleVisiblePlugin , ( state , { plugin} ) => {
1416
1429
let nextFilteredPluginTypes = new Set ( state . filteredPluginTypes ) ;
1417
1430
if ( nextFilteredPluginTypes . has ( plugin ) ) {
0 commit comments