@mui/x-data-grid-pro 7.1.0 โ†’ 7.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -3,6 +3,107 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ ## 7.1.1
7
+
8
+ _Apr 5, 2024_
9
+
10
+ We'd like to offer a big thanks to the 19 contributors who made this release possible. Here are some highlights โœจ:
11
+
12
+ - ๐Ÿš€ Add `setItemExpansion` Tree View API method (#12595) @flaviendelangle
13
+ - ๐ŸŒ Improve Persian (fa-IR), Portuguese (pt-BR), and Spanish (es-ES) locale on the Data Grid
14
+ - ๐ŸŒ Improve Persian (fa-IR), Portuguese (pt-BR), and Ukrainian (uk-UA) locale on the Pickers
15
+ - ๐Ÿž Bugfixes
16
+ - ๐Ÿ“š Documentation improvements
17
+
18
+ ### Data Grid
19
+
20
+ #### `@mui/x-data-grid@7.1.1`
21
+
22
+ - [DataGrid] Allow higher packages' props to be used in MIT (#12365) @MBilalShafi
23
+ - [DataGrid] Fix RTL mode (#12583) @romgrk
24
+ - [DataGrid] Fix `ColDefChangesGridNoSnap` demo crash (#12663) @MBilalShafi
25
+ - [DataGrid] Fix server-side filter demo not working (#12662) @MBilalShafi
26
+ - [DataGrid] Log error if `rowCount` is used with client-side pagination (#12448) @michelengelen
27
+ - [DataGrid] Remove `GridFormatterParams` completely (#12660) @romgrk
28
+ - [DataGrid] Restore main slot (#12657) @romgrk
29
+ - [l10n] Improve Persian (fa-IR) locale (#12630) @amirhosseinzf
30
+ - [l10n] Improve Portuguese (pt-BR) locale (#12618) @hugoalkimim
31
+ - [l10n] Improve Spanish (es-ES) locale (#12606) @aitor40
32
+
33
+ #### `@mui/x-data-grid-pro@7.1.1` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan')
34
+
35
+ Same changes as in `@mui/x-data-grid@7.1.1`.
36
+
37
+ #### `@mui/x-data-grid-premium@7.1.1` [![premium](https://mui.com/r/x-premium-svg)](https://mui.com/r/x-premium-svg-link 'Premium plan')
38
+
39
+ Same changes as in `@mui/x-data-grid-pro@7.1.1`.
40
+
41
+ ### Date and Time Pickers
42
+
43
+ #### `@mui/x-date-pickers@7.1.1`
44
+
45
+ - [fields] Fix `readOnly` behavior (#12609) @LukasTy
46
+ - [l10n] Improve Persian (fa-IR) locale (#12632) @misafari
47
+ - [l10n] Improve Portuguese (pt-BR) locale (#12613) @cnHealth
48
+ - [l10n] Improve Ukrainian (uk-UA) locale (#12627) @alexkobylansky
49
+
50
+ #### `@mui/x-date-pickers-pro@7.1.1` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan')
51
+
52
+ Same changes as in `@mui/x-date-pickers@7.1.1`, plus:
53
+
54
+ - [DateTimeRangePicker] Fix selection on same day (#12604) @LukasTy
55
+
56
+ ### Charts
57
+
58
+ #### `@mui/x-charts@7.1.1`
59
+
60
+ - [charts] Fix `tickInterval` usage for y-axis (#12592) @alexfauquette
61
+ - [charts] Fix Scatter series highlight when `id` is a `number` (#12677) @JCQuintas
62
+ - [charts] Fix TS error when using `sx` property on `ChartsTooltip` (#12659) @JCQuintas
63
+
64
+ ### Tree View
65
+
66
+ #### `@mui/x-tree-view@7.1.1`
67
+
68
+ - [TreeView] Add JSDoc to all `publicAPI` methods (#12649) @flaviendelangle
69
+ - [TreeView] Create `RichTreeViewPro` component (not released yet) (#12610) @flaviendelangle
70
+ - [TreeView] Create pro package (not released yet) (#12240) @flaviendelangle
71
+ - [TreeView] Fix typo in errors (#12623) @alissa-tung
72
+ - [TreeView] New API method: `setItemExpansion` (#12595) @flaviendelangle
73
+
74
+ ### Docs
75
+
76
+ - [docs] Add a recipe for the `checkboxSelectionVisibleOnly` prop (#12646) @michelengelen
77
+ - [docs] Explain the use of `_action: 'delete'` in `processRowUpdate` (#12670) @michelengelen
78
+ - [docs] Fix formatting and typo on migration guide @oliviertassinari
79
+ - [docs] Fix formatting in changelog @oliviertassinari
80
+ - [docs] Fix grammar in TreeView migration doc (#12615) @joshkel
81
+ - [docs] Fix missing closing props in `PieShapeNoSnap` demo (#12636) @alp-ex
82
+ - [docs] Fix type arguments in Custom Field page (#12619) @Juneezee
83
+ - [docs] Fix typo in `getItemId` prop description (#12637) @flaviendelangle
84
+ - [docs] Make the Charts `margin` usage more visible (#12591) @alexfauquette
85
+ - [docs] Match IE 11 spacing with Material UI @oliviertassinari
86
+ - [docs] Move data grid interfaces to standard API page layout (#12016) @alexfauquette
87
+ - [docs] Remove ` around @default values (#12158) @alexfauquette
88
+ - [docs] Remove `day` from the default `dayOfWeekFormatter` function params (#12644) @LukasTy
89
+ - [docs] Use `TreeItem2` for icon expansion example on `RichTreeView` (#12563) @flaviendelangle
90
+
91
+ ### Core
92
+
93
+ - [core] Add cherry-pick `master` to `v6` action (#12648) @LukasTy
94
+ - [core] Fix typo in `@mui/x-tree-view-pro/themeAugmentation` (#12674) @flaviendelangle
95
+ - [core] Introduce `describeTreeView` to run test on `SimpleTreeView` and `RichTreeView`, using `TreeItem` and `TreeItem2` + migrate expansion tests (#12428) @flaviendelangle
96
+ - [core] Limit `test-types` CI step allowed memory (#12651) @LukasTy
97
+ - [core] Remove explicit `express` package (#12602) @LukasTy
98
+ - [core] Update to new embedded translations in the docs package (#12232) @Janpot
99
+ - [core] Use PR labels to identify the package a `l10n` PR belongs to (#12639) @LukasTy
100
+ - [core] Use `describeTreeView` for selection tests (#12647) @flaviendelangle
101
+ - [docs-infra] Adjust the links to search for issues (#11995) @michelengelen
102
+ - [infra] Polish support survey experience (#12624) @oliviertassinari
103
+ - [support-infra] Replace author association with a permission check in survey action (#12068) @michelengelen
104
+ - [support-infra] Fix user permission check (#12669) @michelengelen
105
+ - [test] Fix Tree View test import (#12668) @LukasTy
106
+
6
107
  ## 7.1.0
7
108
 
8
109
  _Mar 28, 2024_
@@ -74,7 +175,7 @@ Same changes as in `@mui/x-date-pickers@7.1.0`, plus:
74
175
  - [core] Include `DateTimeRangePicker` tag in `releaseChangelog` (#12526) @LukasTy
75
176
  - [core] Upgrade monorepo (#12536) @cherniavskii
76
177
 
77
- ## v7.0.0
178
+ ## 7.0.0
78
179
 
79
180
  _Mar 22, 2024_
80
181
 
@@ -530,13 +631,13 @@ We'd like to offer a big thanks to the 10 contributors who made this release pos
530
631
 
531
632
  - ๐ŸŽ Introduce a new DOM structure for the field components that provides a better accessibility
532
633
  - ๐Ÿš€ Simplify Data Grid DOM structure for improved performance (#12013) @romgrk
533
- - ๐Ÿ•ฅ The support for IE11 has been removed (#12151) @flaviendelangle
634
+ - ๐Ÿ•ฅ The support for IEย 11 has been removed (#12151) @flaviendelangle
534
635
  - ๐Ÿž Bugfixes
535
636
  - ๐Ÿ“š Documentation improvements
536
637
 
537
638
  ### Breaking changes
538
639
 
539
- - The support for IE11 has been removed from all MUIย X packages. The `legacy` bundle that used to support old browsers like IE11 is no longer included.
640
+ - The support for IEย 11 has been removed from all MUIย X packages. The `legacy` bundle that used to support old browsers like IEย 11 is no longer included.
540
641
 
541
642
  ### Data Grid
542
643
 
@@ -641,7 +742,7 @@ These components are no longer exported from `@mui/x-charts`:
641
742
 
642
743
  ### Tree View / `@mui/x-tree-view@7.0.0-beta.4`
643
744
 
644
- - [TreeView] Stop using custom `findIndex` to support IE11 (#12129) @flaviendelangle
745
+ - [TreeView] Stop using custom `findIndex` to support IEย 11 (#12129) @flaviendelangle
645
746
 
646
747
  ### Docs
647
748
 
@@ -2871,6 +2972,76 @@ Here is an example of the renaming for the `<ChartsTooltip />` component.
2871
2972
  - [core] Update release instructions as per v7 configuration (#10962) @MBilalShafi
2872
2973
  - [license] Correctly throw errors (#10924) @oliviertassinari
2873
2974
 
2975
+ ## 6.19.9
2976
+
2977
+ _Apr 5, 2024_
2978
+
2979
+ We'd like to offer a big thanks to the 3 contributors who made this release possible. Here are some highlights โœจ:
2980
+
2981
+ - ๐Ÿž Bugfixes
2982
+ - ๐Ÿ“š Documentation improvements
2983
+
2984
+ ### Data Grid
2985
+
2986
+ #### `@mui/x-data-grid@6.19.9`
2987
+
2988
+ - [DataGrid] Remove legacy editing API event: `rowEditCommit` (#12087) @MBilalShafi
2989
+
2990
+ #### `@mui/x-data-grid-pro@6.19.9` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan')
2991
+
2992
+ Same changes as in `@mui/x-data-grid@6.19.9`.
2993
+
2994
+ #### `@mui/x-data-grid-premium@6.19.9` [![premium](https://mui.com/r/x-premium-svg)](https://mui.com/r/x-premium-svg-link 'Premium plan')
2995
+
2996
+ Same changes as in `@mui/x-data-grid-pro@6.19.9`.
2997
+
2998
+ ### Date Pickers
2999
+
3000
+ #### `@mui/x-date-pickers@6.19.9`
3001
+
3002
+ No changes.
3003
+
3004
+ #### `@mui/x-date-pickers-pro@6.19.9` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan')
3005
+
3006
+ - [DateRangePicker] Fix selection behavior with single input field when `readOnly` (#12605) @LukasTy
3007
+
3008
+ ### Docs
3009
+
3010
+ - [docs] Add a recipe for the `checkboxSelectionVisibleOnly` prop (#12667) @michelengelen
3011
+ - [docs] Explain the use of `_action: 'delete'` in `processRowUpdate` (#12673) @michelengelen
3012
+
3013
+ ### Core
3014
+
3015
+ - [core] Use Circle CI context (#12607) @cherniavskii
3016
+
3017
+ ## 6.19.8
3018
+
3019
+ _Mar 20, 2024_
3020
+
3021
+ We'd like to offer a big thanks to the 3 contributors who made this release possible.
3022
+
3023
+ ### Data Grid
3024
+
3025
+ #### `@mui/x-data-grid@6.19.8`
3026
+
3027
+ - [DataGrid] Fix `ElementType` usage (#12505) @cherniavskii
3028
+ - [DataGrid] Fix cell value formatting on copy (#12483) @sai6855
3029
+ - [DataGrid] Fix checkbox selection when filtering (#12485) @g1mishra
3030
+
3031
+ #### `@mui/x-data-grid-pro@6.19.8` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan')
3032
+
3033
+ Same changes as in `@mui/x-data-grid@6.19.8`.
3034
+
3035
+ #### `@mui/x-data-grid-premium@6.19.8` [![premium](https://mui.com/r/x-premium-svg)](https://mui.com/r/x-premium-svg-link 'Premium plan')
3036
+
3037
+ Same changes as in `@mui/x-data-grid-pro@6.19.8`, plus:
3038
+
3039
+ - [DataGridPremium] Add support for confirmation before clipboard paste (#12466) @cherniavskii
3040
+
3041
+ ### Docs
3042
+
3043
+ - [docs] Update links to v7 (#12495) @cherniavskii
3044
+
2874
3045
  ## 6.19.7
2875
3046
 
2876
3047
  _Mar 14, 2024_
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # MUIย X Data Grid Pro
2
2
 
3
- This package is the Pro plan edition of the data grid component.
3
+ This package is the Pro plan edition of the Data Grid component.
4
4
  It's part of [MUIย X](https://mui.com/x/), an open-core extension of MUIย Core, with advanced components.
5
5
 
6
6
  ## Installation
@@ -1,2 +1,2 @@
1
- import { propValidatorsDataGrid } from '@mui/x-data-grid/internals';
2
- export const propValidatorsDataGridPro = [...propValidatorsDataGrid, props => props.pagination && props.hideFooterRowCount && 'MUI X: The `hideFooterRowCount` prop has no effect when the pagination is enabled.' || undefined, props => props.treeData && props.filterMode === 'server' && 'MUI X: The `filterMode="server"` prop is not available when the `treeData` is enabled.' || undefined, props => !props.pagination && props.checkboxSelectionVisibleOnly && 'MUI X: The `checkboxSelectionVisibleOnly` prop has no effect when the pagination is not enabled.' || undefined];
1
+ import { GridSignature, isNumber, propValidatorsDataGrid } from '@mui/x-data-grid/internals';
2
+ export const propValidatorsDataGridPro = [...propValidatorsDataGrid, props => props.pagination && props.hideFooterRowCount && 'MUI X: The `hideFooterRowCount` prop has no effect when the pagination is enabled.' || undefined, props => props.treeData && props.filterMode === 'server' && 'MUI X: The `filterMode="server"` prop is not available when the `treeData` is enabled.' || undefined, props => !props.pagination && props.checkboxSelectionVisibleOnly && 'MUI X: The `checkboxSelectionVisibleOnly` prop has no effect when the pagination is not enabled.' || undefined, props => props.signature !== GridSignature.DataGrid && props.paginationMode === 'client' && props.rowsLoadingMode !== 'server' && isNumber(props.rowCount) && 'MUI X: Usage of the `rowCount` prop with client side pagination (`paginationMode="client"`) has no effect. `rowCount` is only meant to be used with `paginationMode="server"`.' || undefined];
@@ -1,6 +1,6 @@
1
1
  import { ponyfillGlobal } from '@mui/utils';
2
2
  export const getReleaseInfo = () => {
3
- const releaseInfo = "MTcxMTU4MDQwMDAwMA==";
3
+ const releaseInfo = "MTcxMjI2NDQwMDAwMA==";
4
4
  if (process.env.NODE_ENV !== 'production') {
5
5
  // A simple hack to set the value in the test environment (has no build step).
6
6
  // eslint-disable-next-line no-useless-concat
package/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @mui/x-data-grid-pro v7.1.0
2
+ * @mui/x-data-grid-pro v7.1.1
3
3
  *
4
4
  * @license MUI X Commercial
5
5
  * This source code is licensed under the commercial license found in the
@@ -5,4 +5,4 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.propValidatorsDataGridPro = void 0;
7
7
  var _internals = require("@mui/x-data-grid/internals");
8
- const propValidatorsDataGridPro = exports.propValidatorsDataGridPro = [..._internals.propValidatorsDataGrid, props => props.pagination && props.hideFooterRowCount && 'MUI X: The `hideFooterRowCount` prop has no effect when the pagination is enabled.' || undefined, props => props.treeData && props.filterMode === 'server' && 'MUI X: The `filterMode="server"` prop is not available when the `treeData` is enabled.' || undefined, props => !props.pagination && props.checkboxSelectionVisibleOnly && 'MUI X: The `checkboxSelectionVisibleOnly` prop has no effect when the pagination is not enabled.' || undefined];
8
+ const propValidatorsDataGridPro = exports.propValidatorsDataGridPro = [..._internals.propValidatorsDataGrid, props => props.pagination && props.hideFooterRowCount && 'MUI X: The `hideFooterRowCount` prop has no effect when the pagination is enabled.' || undefined, props => props.treeData && props.filterMode === 'server' && 'MUI X: The `filterMode="server"` prop is not available when the `treeData` is enabled.' || undefined, props => !props.pagination && props.checkboxSelectionVisibleOnly && 'MUI X: The `checkboxSelectionVisibleOnly` prop has no effect when the pagination is not enabled.' || undefined, props => props.signature !== _internals.GridSignature.DataGrid && props.paginationMode === 'client' && props.rowsLoadingMode !== 'server' && (0, _internals.isNumber)(props.rowCount) && 'MUI X: Usage of the `rowCount` prop with client side pagination (`paginationMode="client"`) has no effect. `rowCount` is only meant to be used with `paginationMode="server"`.' || undefined];
@@ -1,6 +1,6 @@
1
1
  import * as React from 'react';
2
2
  import { GridEventListener, GridCallbackDetails, GridRowParams, GridRowId, GridValidRowModel, GridGroupNode, GridFeatureMode } from '@mui/x-data-grid';
3
- import { GridExperimentalFeatures, DataGridPropsWithoutDefaultValue, DataGridPropsWithDefaultValues, DataGridPropsWithComplexDefaultValueAfterProcessing, DataGridPropsWithComplexDefaultValueBeforeProcessing, GridPinnedColumnFields } from '@mui/x-data-grid/internals';
3
+ import { GridExperimentalFeatures, DataGridPropsWithoutDefaultValue, DataGridPropsWithDefaultValues, DataGridPropsWithComplexDefaultValueAfterProcessing, DataGridPropsWithComplexDefaultValueBeforeProcessing, GridPinnedColumnFields, DataGridProSharedPropsWithDefaultValue } from '@mui/x-data-grid/internals';
4
4
  import type { GridPinnedRowsProp } from '../hooks/features/rowPinning';
5
5
  import { GridApiPro } from './gridApiPro';
6
6
  import { GridGroupingColDefOverride, GridGroupingColDefOverrideParams } from './gridGroupingColDefOverride';
@@ -34,7 +34,7 @@ export type DataGridProForcedPropsKey = 'signature';
34
34
  * None of the entry of this interface should be optional, they all have default values and `DataGridProps` already applies a `Partial<DataGridSimpleOptions>` for the public interface
35
35
  * The controlled model do not have a default value at the prop processing level, so they must be defined in `DataGridOtherProps`
36
36
  */
37
- export interface DataGridProPropsWithDefaultValue<R extends GridValidRowModel = any> extends DataGridPropsWithDefaultValues<R> {
37
+ export interface DataGridProPropsWithDefaultValue<R extends GridValidRowModel = any> extends DataGridPropsWithDefaultValues<R>, DataGridProSharedPropsWithDefaultValue {
38
38
  /**
39
39
  * Set the area in `px` at the bottom of the grid viewport where onRowsScrollEnd is called.
40
40
  * @default 80
@@ -98,11 +98,6 @@ export interface DataGridProPropsWithDefaultValue<R extends GridValidRowModel =
98
98
  * @default false
99
99
  */
100
100
  keepColumnPositionIfDraggedOutside: boolean;
101
- /**
102
- * If `true`, enables the data grid filtering on header feature.
103
- * @default false
104
- */
105
- headerFilters: boolean;
106
101
  }
107
102
  export interface DataGridProPropsWithoutDefaultValue<R extends GridValidRowModel = any> extends Omit<DataGridPropsWithoutDefaultValue<R>, 'initialState' | 'componentsProps' | 'slotProps'> {
108
103
  /**
package/modern/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @mui/x-data-grid-pro v7.1.0
2
+ * @mui/x-data-grid-pro v7.1.1
3
3
  *
4
4
  * @license MUI X Commercial
5
5
  * This source code is licensed under the commercial license found in the
@@ -1,2 +1,2 @@
1
- import { propValidatorsDataGrid } from '@mui/x-data-grid/internals';
2
- export const propValidatorsDataGridPro = [...propValidatorsDataGrid, props => props.pagination && props.hideFooterRowCount && 'MUI X: The `hideFooterRowCount` prop has no effect when the pagination is enabled.' || undefined, props => props.treeData && props.filterMode === 'server' && 'MUI X: The `filterMode="server"` prop is not available when the `treeData` is enabled.' || undefined, props => !props.pagination && props.checkboxSelectionVisibleOnly && 'MUI X: The `checkboxSelectionVisibleOnly` prop has no effect when the pagination is not enabled.' || undefined];
1
+ import { GridSignature, isNumber, propValidatorsDataGrid } from '@mui/x-data-grid/internals';
2
+ export const propValidatorsDataGridPro = [...propValidatorsDataGrid, props => props.pagination && props.hideFooterRowCount && 'MUI X: The `hideFooterRowCount` prop has no effect when the pagination is enabled.' || undefined, props => props.treeData && props.filterMode === 'server' && 'MUI X: The `filterMode="server"` prop is not available when the `treeData` is enabled.' || undefined, props => !props.pagination && props.checkboxSelectionVisibleOnly && 'MUI X: The `checkboxSelectionVisibleOnly` prop has no effect when the pagination is not enabled.' || undefined, props => props.signature !== GridSignature.DataGrid && props.paginationMode === 'client' && props.rowsLoadingMode !== 'server' && isNumber(props.rowCount) && 'MUI X: Usage of the `rowCount` prop with client side pagination (`paginationMode="client"`) has no effect. `rowCount` is only meant to be used with `paginationMode="server"`.' || undefined];
@@ -1,6 +1,6 @@
1
1
  import { ponyfillGlobal } from '@mui/utils';
2
2
  export const getReleaseInfo = () => {
3
- const releaseInfo = "MTcxMTU4MDQwMDAwMA==";
3
+ const releaseInfo = "MTcxMjI2NDQwMDAwMA==";
4
4
  if (process.env.NODE_ENV !== 'production') {
5
5
  // A simple hack to set the value in the test environment (has no build step).
6
6
  // eslint-disable-next-line no-useless-concat
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@mui/x-data-grid-pro",
3
- "version": "7.1.0",
4
- "description": "The Pro plan edition of the data grid component (MUI X).",
3
+ "version": "7.1.1",
4
+ "description": "The Pro plan edition of the Data Grid components (MUI X).",
5
5
  "author": "MUI Team",
6
6
  "main": "./index.js",
7
7
  "license": "SEE LICENSE IN LICENSE",
@@ -35,8 +35,8 @@
35
35
  "@babel/runtime": "^7.24.0",
36
36
  "@mui/system": "^5.15.14",
37
37
  "@mui/utils": "^5.15.14",
38
- "@mui/x-data-grid": "7.1.0",
39
- "@mui/x-license": "7.0.0",
38
+ "@mui/x-data-grid": "7.1.1",
39
+ "@mui/x-license": "7.1.1",
40
40
  "@types/format-util": "^1.0.4",
41
41
  "clsx": "^2.1.0",
42
42
  "prop-types": "^15.8.1",
@@ -6,7 +6,7 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.getReleaseInfo = void 0;
7
7
  var _utils = require("@mui/utils");
8
8
  const getReleaseInfo = () => {
9
- const releaseInfo = "MTcxMTU4MDQwMDAwMA==";
9
+ const releaseInfo = "MTcxMjI2NDQwMDAwMA==";
10
10
  if (process.env.NODE_ENV !== 'production') {
11
11
  // A simple hack to set the value in the test environment (has no build step).
12
12
  // eslint-disable-next-line no-useless-concat