@mui/x-data-grid 9.2.0 → 9.4.0

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.
Files changed (58) hide show
  1. package/CHANGELOG.md +314 -0
  2. package/components/GridRow.js +11 -3
  3. package/components/GridRow.mjs +11 -3
  4. package/components/GridScrollbarFillerCell.js +1 -1
  5. package/components/GridScrollbarFillerCell.mjs +1 -1
  6. package/components/cell/GridActionsCellItem.js +1 -1
  7. package/components/cell/GridActionsCellItem.mjs +1 -1
  8. package/components/cell/GridCell.js +1 -1
  9. package/components/cell/GridCell.mjs +1 -1
  10. package/components/cell/GridSkeletonCell.d.mts +2 -1
  11. package/components/cell/GridSkeletonCell.d.ts +2 -1
  12. package/components/cell/GridSkeletonCell.js +8 -3
  13. package/components/cell/GridSkeletonCell.mjs +8 -3
  14. package/components/columnHeaders/GridBaseColumnHeaders.js +1 -1
  15. package/components/columnHeaders/GridBaseColumnHeaders.mjs +1 -1
  16. package/components/columnHeaders/GridGenericColumnHeaderItem.js +2 -2
  17. package/components/columnHeaders/GridGenericColumnHeaderItem.mjs +2 -2
  18. package/components/containers/GridRoot.js +1 -1
  19. package/components/containers/GridRoot.mjs +1 -1
  20. package/components/virtualization/GridBottomContainer.js +1 -1
  21. package/components/virtualization/GridBottomContainer.mjs +1 -1
  22. package/components/virtualization/GridMainContainer.js +1 -1
  23. package/components/virtualization/GridMainContainer.mjs +1 -1
  24. package/components/virtualization/GridTopContainer.js +1 -1
  25. package/components/virtualization/GridTopContainer.mjs +1 -1
  26. package/components/virtualization/GridVirtualScroller.js +3 -11
  27. package/components/virtualization/GridVirtualScroller.mjs +3 -11
  28. package/components/virtualization/GridVirtualScrollerFiller.js +1 -1
  29. package/components/virtualization/GridVirtualScrollerFiller.mjs +1 -1
  30. package/hooks/core/strategyProcessing/gridStrategyProcessingApi.d.mts +17 -1
  31. package/hooks/core/strategyProcessing/gridStrategyProcessingApi.d.ts +17 -1
  32. package/hooks/core/strategyProcessing/useGridStrategyProcessing.js +2 -1
  33. package/hooks/core/strategyProcessing/useGridStrategyProcessing.mjs +2 -1
  34. package/hooks/core/useGridVirtualizer.d.mts +10 -10
  35. package/hooks/core/useGridVirtualizer.d.ts +10 -10
  36. package/hooks/features/columnHeaders/useGridColumnHeaders.js +2 -2
  37. package/hooks/features/columnHeaders/useGridColumnHeaders.mjs +2 -2
  38. package/hooks/features/dataSource/models.d.mts +1 -1
  39. package/hooks/features/dataSource/models.d.ts +1 -1
  40. package/hooks/features/dataSource/useGridDataSourceBase.d.mts +2 -2
  41. package/hooks/features/dataSource/useGridDataSourceBase.d.ts +2 -2
  42. package/hooks/features/dataSource/useGridDataSourceBase.js +29 -17
  43. package/hooks/features/dataSource/useGridDataSourceBase.mjs +29 -17
  44. package/hooks/features/dataSource/utils.d.mts +1 -0
  45. package/hooks/features/dataSource/utils.d.ts +1 -0
  46. package/hooks/features/dataSource/utils.js +1 -0
  47. package/hooks/features/dataSource/utils.mjs +1 -0
  48. package/hooks/features/virtualization/gridVirtualizationSelectors.d.mts +1 -1
  49. package/hooks/features/virtualization/gridVirtualizationSelectors.d.ts +1 -1
  50. package/index.js +1 -1
  51. package/index.mjs +1 -1
  52. package/locales/svSE.js +116 -129
  53. package/locales/svSE.mjs +116 -129
  54. package/models/gridDataSource.d.mts +6 -0
  55. package/models/gridDataSource.d.ts +6 -0
  56. package/models/gridRows.d.mts +0 -1
  57. package/models/gridRows.d.ts +0 -1
  58. package/package.json +4 -4
@@ -2,7 +2,7 @@
2
2
 
3
3
  import _extends from "@babel/runtime/helpers/esm/extends";
4
4
  import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
5
- const _excluded = ["skipCache", "keepChildrenExpanded"];
5
+ const _excluded = ["skipCache", "keepChildrenExpanded", "showChildrenLoading"];
6
6
  import * as React from 'react';
7
7
  import useLazyRef from '@mui/utils/useLazyRef';
8
8
  import useEventCallback from '@mui/utils/useEventCallback';
@@ -57,22 +57,26 @@ export const useGridDataSourceBase = (apiRef, props, options = {}) => {
57
57
  if (!getRows) {
58
58
  return;
59
59
  }
60
- if (parentId && parentId !== GRID_ROOT_GROUP_ID && props.signature !== 'DataGrid') {
61
- options.fetchRowChildren?.([parentId]);
62
- return;
63
- }
64
- options.clearDataSourceState?.();
65
60
  const _ref = params || {},
66
61
  {
67
62
  skipCache,
68
- keepChildrenExpanded
63
+ keepChildrenExpanded,
64
+ showChildrenLoading
69
65
  } = _ref,
70
66
  getRowsParams = _objectWithoutPropertiesLoose(_ref, _excluded);
71
67
  const fetchParams = _extends({}, gridGetRowsParamsSelector(apiRef), apiRef.current.unstable_applyPipeProcessors('getRowsParams', {}), getRowsParams);
68
+ if (parentId && parentId !== GRID_ROOT_GROUP_ID && props.signature !== 'DataGrid') {
69
+ options.fetchRowChildren?.([parentId], [fetchParams], showChildrenLoading);
70
+ return;
71
+ }
72
+ options.clearDataSourceState?.();
72
73
  const cacheKeys = cacheChunkManager.getCacheKeys(fetchParams);
73
74
  const responses = cacheKeys.map(cacheKey => cache.get(cacheKey));
74
75
  if (!skipCache && responses.every(response => response !== undefined)) {
75
- apiRef.current.applyStrategyProcessor('dataSourceRowsUpdate', {
76
+ // Bump the request id so any cache-miss request still in flight is treated as
77
+ // stale and won't override the cached data we're about to apply.
78
+ lastRequestId.current += 1;
79
+ apiRef.current.applyStrategyProcessor('dataSourceRootRowsUpdate', {
76
80
  response: CacheChunkManager.mergeResponses(responses),
77
81
  fetchParams,
78
82
  options: {
@@ -80,6 +84,9 @@ export const useGridDataSourceBase = (apiRef, props, options = {}) => {
80
84
  keepChildrenExpanded
81
85
  }
82
86
  });
87
+ if (standardRowsUpdateStrategyActive) {
88
+ apiRef.current.setLoading(false);
89
+ }
83
90
  return;
84
91
  }
85
92
 
@@ -94,7 +101,7 @@ export const useGridDataSourceBase = (apiRef, props, options = {}) => {
94
101
  const cacheResponses = cacheChunkManager.splitResponse(fetchParams, getRowsResponse);
95
102
  cacheResponses.forEach((response, key) => cache.set(key, response));
96
103
  if (lastRequestId.current === requestId) {
97
- apiRef.current.applyStrategyProcessor('dataSourceRowsUpdate', {
104
+ apiRef.current.applyStrategyProcessor('dataSourceRootRowsUpdate', {
98
105
  response: getRowsResponse,
99
106
  fetchParams,
100
107
  options: {
@@ -105,7 +112,7 @@ export const useGridDataSourceBase = (apiRef, props, options = {}) => {
105
112
  }
106
113
  } catch (originalError) {
107
114
  if (lastRequestId.current === requestId) {
108
- apiRef.current.applyStrategyProcessor('dataSourceRowsUpdate', {
115
+ apiRef.current.applyStrategyProcessor('dataSourceRootRowsUpdate', {
109
116
  error: originalError,
110
117
  fetchParams,
111
118
  options: {
@@ -152,9 +159,7 @@ export const useGridDataSourceBase = (apiRef, props, options = {}) => {
152
159
  return acc;
153
160
  }, []);
154
161
  if (expandedGroupIds.length > 0) {
155
- fetchRowChildrenOption(expandedGroupIds, {
156
- showChildrenLoading: false
157
- });
162
+ fetchRowChildrenOption(expandedGroupIds, [], false);
158
163
  }
159
164
  };
160
165
  const fetchParams = _extends({}, gridGetRowsParamsSelector(apiRef), apiRef.current.unstable_applyPipeProcessors('getRowsParams', {}));
@@ -172,7 +177,7 @@ export const useGridDataSourceBase = (apiRef, props, options = {}) => {
172
177
  }
173
178
  const cacheResponses = cacheChunkManager.splitResponse(fetchParams, response);
174
179
  cacheResponses.forEach((cacheResponse, key) => cache.set(key, cacheResponse));
175
- apiRef.current.applyStrategyProcessor('dataSourceRowsUpdate', {
180
+ apiRef.current.applyStrategyProcessor('dataSourceRootRowsUpdate', {
176
181
  response,
177
182
  fetchParams,
178
183
  options: {}
@@ -253,10 +258,17 @@ export const useGridDataSourceBase = (apiRef, props, options = {}) => {
253
258
  };
254
259
  const debouncedFetchRows = React.useMemo(() => debounce(fetchRows, 0), [fetchRows]);
255
260
  const handleFetchRowsOnParamsChange = React.useCallback(() => {
261
+ // Clear the rows first and immediately mark the grid as loading so the overlay
262
+ // selector never observes the intermediate `rows=[] && loading=false` state that
263
+ // would otherwise pick `noRowsOverlay`. Order matters: `setRows([])` rebuilds
264
+ // `state.rows` from `props.loading`, so the `setLoading(true)` call must come after
265
+ // it to survive the rebuild. This handler is only wired up when a standard strategy
266
+ // is active via the `runIf` guards on the returned `events` object.
256
267
  apiRef.current.setRows([]);
268
+ apiRef.current.setLoading(true);
257
269
  stopPolling();
258
270
  debouncedFetchRows();
259
- }, [stopPolling, debouncedFetchRows, apiRef]);
271
+ }, [apiRef, stopPolling, debouncedFetchRows]);
260
272
  const isFirstRender = React.useRef(true);
261
273
  React.useEffect(() => {
262
274
  if (isFirstRender.current) {
@@ -283,7 +295,7 @@ export const useGridDataSourceBase = (apiRef, props, options = {}) => {
283
295
  React.useEffect(() => {
284
296
  // Return early if the proper strategy isn't set yet
285
297
  // Context: https://github.com/mui/mui-x/issues/19650
286
- if (currentStrategy !== DataSourceRowsUpdateStrategy.Default && currentStrategy !== DataSourceRowsUpdateStrategy.LazyLoading && currentStrategy !== DataSourceRowsUpdateStrategy.GroupedData) {
298
+ if (currentStrategy !== DataSourceRowsUpdateStrategy.Default && currentStrategy !== DataSourceRowsUpdateStrategy.LazyLoading && currentStrategy !== DataSourceRowsUpdateStrategy.GroupedData && currentStrategy !== DataSourceRowsUpdateStrategy.LazyLoadedGroupedData) {
287
299
  return undefined;
288
300
  }
289
301
  if (props.dataSource) {
@@ -304,7 +316,7 @@ export const useGridDataSourceBase = (apiRef, props, options = {}) => {
304
316
  debouncedFetchRows,
305
317
  strategyProcessor: {
306
318
  strategyName: DataSourceRowsUpdateStrategy.Default,
307
- group: 'dataSourceRowsUpdate',
319
+ group: 'dataSourceRootRowsUpdate',
308
320
  processor: handleDataUpdate
309
321
  },
310
322
  setStrategyAvailability,
@@ -3,6 +3,7 @@ export declare enum DataSourceRowsUpdateStrategy {
3
3
  Default = "set-flat-rows",
4
4
  LazyLoading = "replace-row-range",
5
5
  GroupedData = "set-grouped-rows",
6
+ LazyLoadedGroupedData = "replace-grouped-row-range",
6
7
  }
7
8
  /**
8
9
  * Provides better cache hit rate by:
@@ -3,6 +3,7 @@ export declare enum DataSourceRowsUpdateStrategy {
3
3
  Default = "set-flat-rows",
4
4
  LazyLoading = "replace-row-range",
5
5
  GroupedData = "set-grouped-rows",
6
+ LazyLoadedGroupedData = "replace-grouped-row-range",
6
7
  }
7
8
  /**
8
9
  * Provides better cache hit rate by:
@@ -10,6 +10,7 @@ let DataSourceRowsUpdateStrategy = exports.DataSourceRowsUpdateStrategy = /*#__P
10
10
  DataSourceRowsUpdateStrategy["Default"] = "set-flat-rows";
11
11
  DataSourceRowsUpdateStrategy["LazyLoading"] = "replace-row-range";
12
12
  DataSourceRowsUpdateStrategy["GroupedData"] = "set-grouped-rows";
13
+ DataSourceRowsUpdateStrategy["LazyLoadedGroupedData"] = "replace-grouped-row-range";
13
14
  return DataSourceRowsUpdateStrategy;
14
15
  }({});
15
16
  /**
@@ -3,6 +3,7 @@ export let DataSourceRowsUpdateStrategy = /*#__PURE__*/function (DataSourceRowsU
3
3
  DataSourceRowsUpdateStrategy["Default"] = "set-flat-rows";
4
4
  DataSourceRowsUpdateStrategy["LazyLoading"] = "replace-row-range";
5
5
  DataSourceRowsUpdateStrategy["GroupedData"] = "set-grouped-rows";
6
+ DataSourceRowsUpdateStrategy["LazyLoadedGroupedData"] = "replace-grouped-row-range";
6
7
  return DataSourceRowsUpdateStrategy;
7
8
  }({});
8
9
 
@@ -42,7 +42,7 @@ export declare const gridVirtualizationLayoutModeSelector: (args_0: import("reac
42
42
  */
43
43
  export declare const gridRenderContextSelector: (args_0: import("react").RefObject<{
44
44
  state: GridStateCommunity;
45
- } | null>) => import("@mui/x-virtualizer/models").RenderContext;
45
+ } | null>) => import("@mui/x-virtualizer").RenderContext;
46
46
  /**
47
47
  * Get the render context, with only columns filled in.
48
48
  * This is cached, so it can be used to only re-render when the column interval changes.
@@ -42,7 +42,7 @@ export declare const gridVirtualizationLayoutModeSelector: (args_0: import("reac
42
42
  */
43
43
  export declare const gridRenderContextSelector: (args_0: import("react").RefObject<{
44
44
  state: GridStateCommunity;
45
- } | null>) => import("@mui/x-virtualizer/models").RenderContext;
45
+ } | null>) => import("@mui/x-virtualizer").RenderContext;
46
46
  /**
47
47
  * Get the render context, with only columns filled in.
48
48
  * This is cached, so it can be used to only re-render when the column interval changes.
package/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @mui/x-data-grid v9.2.0
2
+ * @mui/x-data-grid v9.4.0
3
3
  *
4
4
  * @license MIT
5
5
  * This source code is licensed under the MIT license found in the
package/index.mjs CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @mui/x-data-grid v9.2.0
2
+ * @mui/x-data-grid v9.4.0
3
3
  *
4
4
  * @license MIT
5
5
  * This source code is licensed under the MIT license found in the
package/locales/svSE.js CHANGED
@@ -11,8 +11,7 @@ const svSEGrid = {
11
11
  noResultsOverlayLabel: 'Inga resultat funna.',
12
12
  noColumnsOverlayLabel: 'Inga kolumner',
13
13
  noColumnsOverlayManageColumns: 'Hantera kolumner',
14
- // emptyPivotOverlayLabel: 'Add fields to rows, columns, and values to create a pivot table',
15
-
14
+ emptyPivotOverlayLabel: 'Lägg till fält i rader, kolumner och värden för att skapa en pivottabell',
16
15
  // Density selector toolbar button text
17
16
  toolbarDensity: 'Densitet',
18
17
  toolbarDensityLabel: 'Densitet',
@@ -42,21 +41,17 @@ const svSEGrid = {
42
41
  toolbarExportPrint: 'Skriv ut',
43
42
  toolbarExportExcel: 'Ladda ner som Excel',
44
43
  // Toolbar pivot button
45
- // toolbarPivot: 'Pivot',
46
-
44
+ toolbarPivot: 'Pivot',
47
45
  // Toolbar charts button
48
- // toolbarCharts: 'Charts',
49
-
46
+ toolbarCharts: 'Diagram',
50
47
  // Toolbar AI Assistant button
51
- // toolbarAssistant: 'AI Assistant',
52
-
48
+ toolbarAssistant: 'AI assistent',
53
49
  // Columns management text
54
50
  columnsManagementSearchTitle: 'Sök',
55
51
  columnsManagementNoColumns: 'Inga kolumner',
56
52
  columnsManagementShowHideAllText: 'Visa/Dölj alla',
57
53
  columnsManagementReset: 'Återställ',
58
- // columnsManagementDeleteIconLabel: 'Clear',
59
-
54
+ columnsManagementDeleteIconLabel: 'Rensa',
60
55
  // Filter panel text
61
56
  filterPanelAddFilter: 'Lägg till filter',
62
57
  filterPanelRemoveAll: 'Ta bort alla',
@@ -112,15 +107,14 @@ const svSEGrid = {
112
107
  'headerFilterOperator>=': 'Större eller lika med',
113
108
  'headerFilterOperator<': 'Mindre än',
114
109
  'headerFilterOperator<=': 'Mindre eller lika med',
115
- // headerFilterClear: 'Clear filter',
116
-
110
+ headerFilterClear: 'Rensa filter',
117
111
  // Filter values text
118
112
  filterValueAny: 'något',
119
113
  filterValueTrue: 'sant',
120
114
  filterValueFalse: 'falskt',
121
115
  // Column menu text
122
116
  columnMenuLabel: 'Meny',
123
- // columnMenuAriaLabel: (columnName: string) => `${columnName} column menu`,
117
+ columnMenuAriaLabel: columnName => `${columnName} kolumnmeny`,
124
118
  columnMenuShowColumns: 'Visa kolumner',
125
119
  columnMenuManageColumns: 'Hantera kolumner',
126
120
  columnMenuFilter: 'Filtrera',
@@ -128,9 +122,8 @@ const svSEGrid = {
128
122
  columnMenuUnsort: 'Ta bort sortering',
129
123
  columnMenuSortAsc: 'Sortera stigande',
130
124
  columnMenuSortDesc: 'Sortera fallande',
131
- // columnMenuManagePivot: 'Manage pivot',
132
- // columnMenuManageCharts: 'Manage charts',
133
-
125
+ columnMenuManagePivot: 'Hantera pivot',
126
+ columnMenuManageCharts: 'Hantera diagram',
134
127
  // Column header text
135
128
  columnHeaderFiltersTooltipActive: count => count !== 1 ? `${count} aktiva filter` : `${count} aktivt filter`,
136
129
  columnHeaderFiltersLabel: 'Visa filter',
@@ -173,19 +166,19 @@ const svSEGrid = {
173
166
  collapseDetailPanel: 'Kollapsa',
174
167
  // Pagination
175
168
  paginationRowsPerPage: 'Rader per sida:',
176
- // paginationDisplayedRows: ({
177
- // from,
178
- // to,
179
- // count,
180
- // estimated
181
- // }) => {
182
- // const unknownRowCount = count == null || count === -1;
183
- // if (!estimated) {
184
- // return `${formatNumber(from)}–${formatNumber(to)} of ${!unknownRowCount ? formatNumber(count) : `more than ${formatNumber(to)}`}`;
185
- // }
186
- // const estimatedLabel = estimated && estimated > to ? `around ${formatNumber(estimated)}` : `more than ${formatNumber(to)}`;
187
- // return `${formatNumber(from)}–${formatNumber(to)} of ${!unknownRowCount ? formatNumber(count) : estimatedLabel}`;
188
- // },
169
+ paginationDisplayedRows: ({
170
+ from,
171
+ to,
172
+ count,
173
+ estimated
174
+ }) => {
175
+ const unknownRowCount = count == null || count === -1;
176
+ if (!estimated) {
177
+ return `${from}–${to} av ${!unknownRowCount ? count : `fler än ${to}`}`;
178
+ }
179
+ const estimatedLabel = estimated && estimated > to ? `ungefär ${estimated}` : `fler än ${to}`;
180
+ return `${from}–${to} av ${!unknownRowCount ? count : estimatedLabel}`;
181
+ },
189
182
  paginationItemAriaLabel: type => {
190
183
  if (type === 'first') {
191
184
  return 'Gå till första sidan';
@@ -203,115 +196,109 @@ const svSEGrid = {
203
196
  rowReorderingHeaderName: 'Ordna om rader',
204
197
  // Aggregation
205
198
  aggregationMenuItemHeader: 'Aggregering',
206
- // aggregationFunctionLabelNone: 'none',
199
+ aggregationFunctionLabelNone: 'ingen',
207
200
  aggregationFunctionLabelSum: 'summa',
208
201
  aggregationFunctionLabelAvg: 'medel',
209
202
  aggregationFunctionLabelMin: 'min',
210
203
  aggregationFunctionLabelMax: 'max',
211
- aggregationFunctionLabelSize: 'antal'
212
-
204
+ aggregationFunctionLabelSize: 'antal',
213
205
  // Pivot panel
214
- // pivotToggleLabel: 'Pivot',
215
- // pivotRows: 'Rows',
216
- // pivotColumns: 'Columns',
217
- // pivotValues: 'Values',
218
- // pivotCloseButton: 'Close pivot settings',
219
- // pivotSearchButton: 'Search fields',
220
- // pivotSearchControlPlaceholder: 'Search fields',
221
- // pivotSearchControlLabel: 'Search fields',
222
- // pivotSearchControlClear: 'Clear search',
223
- // pivotNoFields: 'No fields',
224
- // pivotMenuMoveUp: 'Move up',
225
- // pivotMenuMoveDown: 'Move down',
226
- // pivotMenuMoveToTop: 'Move to top',
227
- // pivotMenuMoveToBottom: 'Move to bottom',
228
- // pivotMenuRows: 'Rows',
229
- // pivotMenuColumns: 'Columns',
230
- // pivotMenuValues: 'Values',
231
- // pivotMenuOptions: 'Field options',
232
- // pivotMenuAddToRows: 'Add to Rows',
233
- // pivotMenuAddToColumns: 'Add to Columns',
234
- // pivotMenuAddToValues: 'Add to Values',
235
- // pivotMenuRemove: 'Remove',
236
- // pivotDragToRows: 'Drag here to create rows',
237
- // pivotDragToColumns: 'Drag here to create columns',
238
- // pivotDragToValues: 'Drag here to create values',
239
- // pivotYearColumnHeaderName: '(Year)',
240
- // pivotQuarterColumnHeaderName: '(Quarter)',
241
-
206
+ pivotToggleLabel: 'Pivot',
207
+ pivotRows: 'Rader',
208
+ pivotColumns: 'Kolumner',
209
+ pivotValues: 'Värden',
210
+ pivotCloseButton: 'Stäng pivotinställningar',
211
+ pivotSearchButton: 'Sökfält',
212
+ pivotSearchControlPlaceholder: 'Sökfält',
213
+ pivotSearchControlLabel: 'Sökfält',
214
+ pivotSearchControlClear: 'Rensa sökfält',
215
+ pivotNoFields: 'Inga fält',
216
+ pivotMenuMoveUp: 'Flytta upp',
217
+ pivotMenuMoveDown: 'Flytta ned',
218
+ pivotMenuMoveToTop: 'Flytta till toppen',
219
+ pivotMenuMoveToBottom: 'Flytta till botten',
220
+ pivotMenuRows: 'Rader',
221
+ pivotMenuColumns: 'Kolumner',
222
+ pivotMenuValues: 'Värden',
223
+ pivotMenuOptions: 'Fältalternativ',
224
+ pivotMenuAddToRows: 'Lägg till i rader',
225
+ pivotMenuAddToColumns: 'Lägg till i kolumner',
226
+ pivotMenuAddToValues: 'Lägg till i värden',
227
+ pivotMenuRemove: 'Ta bort',
228
+ pivotDragToRows: 'Dra hit för att skapa rader',
229
+ pivotDragToColumns: 'Dra hit för att skapa kolumner',
230
+ pivotDragToValues: 'Dra hit för att skapa värden',
231
+ pivotYearColumnHeaderName: '(År)',
232
+ pivotQuarterColumnHeaderName: '(Kvartal)',
242
233
  // Charts configuration panel
243
- // chartsNoCharts: 'There are no charts available',
244
- // chartsChartNotSelected: 'Select a chart type to configure its options',
245
- // chartsTabChart: 'Chart',
246
- // chartsTabFields: 'Fields',
247
- // chartsTabCustomize: 'Customize',
248
- // chartsCloseButton: 'Close charts configuration',
249
- // chartsSyncButtonLabel: 'Sync chart',
250
- // chartsSearchPlaceholder: 'Search fields',
251
- // chartsSearchLabel: 'Search fields',
252
- // chartsSearchClear: 'Clear search',
253
- // chartsNoFields: 'No fields',
254
- // chartsFieldBlocked: 'This field cannot be added to any section',
255
- // chartsCategories: 'Categories',
256
- // chartsSeries: 'Series',
257
- // chartsMenuAddToDimensions: (dimensionLabel: string) => `Add to ${dimensionLabel}`,
258
- // chartsMenuAddToValues: (valuesLabel: string) => `Add to ${valuesLabel}`,
259
- // chartsMenuMoveUp: 'Move up',
260
- // chartsMenuMoveDown: 'Move down',
261
- // chartsMenuMoveToTop: 'Move to top',
262
- // chartsMenuMoveToBottom: 'Move to bottom',
263
- // chartsMenuOptions: 'Field options',
264
- // chartsMenuRemove: 'Remove',
265
- // chartsDragToDimensions: (dimensionLabel: string) => `Drag here to use column as ${dimensionLabel}`,
266
- // chartsDragToValues: (valuesLabel: string) => `Drag here to use column as ${valuesLabel}`,
267
-
234
+ chartsNoCharts: 'Det finns inga diagram tillgängliga',
235
+ chartsChartNotSelected: 'Välj en diagramtyp för att konfigurera alternativ',
236
+ chartsTabChart: 'Diagram',
237
+ chartsTabFields: 'Fält',
238
+ chartsTabCustomize: 'Anpassa',
239
+ chartsCloseButton: 'Stäng diagramkonfiguration',
240
+ chartsSyncButtonLabel: 'Synkronisera diagram',
241
+ chartsSearchPlaceholder: 'Sök fält',
242
+ chartsSearchLabel: 'Sök fält',
243
+ chartsSearchClear: 'Rensa sökning',
244
+ chartsNoFields: 'Inga fält',
245
+ chartsFieldBlocked: 'Det här fältet kan inte läggas till i någon sektion',
246
+ chartsCategories: 'Kategorier',
247
+ chartsSeries: 'Serie',
248
+ chartsMenuAddToDimensions: dimensionLabel => `Lägg till ${dimensionLabel}`,
249
+ chartsMenuAddToValues: valuesLabel => `Lägg till ${valuesLabel}`,
250
+ chartsMenuMoveUp: 'Flytta upp',
251
+ chartsMenuMoveDown: 'Flytta ned',
252
+ chartsMenuMoveToTop: 'Flytta till toppen',
253
+ chartsMenuMoveToBottom: 'Flytta till botten',
254
+ chartsMenuOptions: 'Fältalternativ',
255
+ chartsMenuRemove: 'Ta bort',
256
+ chartsDragToDimensions: dimensionLabel => `Dra hit för att använda kolumnen som ${dimensionLabel}`,
257
+ chartsDragToValues: valuesLabel => `Dra hit för att använda kolumnen som ${valuesLabel}`,
268
258
  // AI Assistant panel
269
- // aiAssistantPanelTitle: 'AI Assistant',
270
- // aiAssistantPanelClose: 'Close AI Assistant',
271
- // aiAssistantPanelNewConversation: 'New conversation',
272
- // aiAssistantPanelConversationHistory: 'Conversation history',
273
- // aiAssistantPanelEmptyConversation: 'No prompt history',
274
- // aiAssistantSuggestions: 'Suggestions',
275
-
259
+ aiAssistantPanelTitle: 'AI assistent',
260
+ aiAssistantPanelClose: 'Stäng AI assistent',
261
+ aiAssistantPanelNewConversation: 'Ny konversation',
262
+ aiAssistantPanelConversationHistory: 'Konversationshistorik',
263
+ aiAssistantPanelEmptyConversation: 'Ingen prompthistorik',
264
+ aiAssistantSuggestions: 'Förslag',
276
265
  // Prompt field
277
- // promptFieldLabel: 'Prompt',
278
- // promptFieldPlaceholder: 'Type a prompt…',
279
- // promptFieldPlaceholderWithRecording: 'Type or record a prompt…',
280
- // promptFieldPlaceholderListening: 'Listening for prompt…',
281
- // promptFieldSpeechRecognitionNotSupported: 'Speech recognition is not supported in this browser',
282
- // promptFieldSend: 'Send',
283
- // promptFieldRecord: 'Record',
284
- // promptFieldStopRecording: 'Stop recording',
285
-
266
+ promptFieldLabel: 'Prompt',
267
+ promptFieldPlaceholder: 'Skriv en prompt…',
268
+ promptFieldPlaceholderWithRecording: 'Skriv eller spela in en prompt…',
269
+ promptFieldPlaceholderListening: 'Lyssnar efter prompt…',
270
+ promptFieldSpeechRecognitionNotSupported: 'Taligenkänning stöds inte av webbläsaren',
271
+ promptFieldSend: 'Skicka',
272
+ promptFieldRecord: 'Spela in',
273
+ promptFieldStopRecording: 'Stoppa inspelning',
286
274
  // Prompt
287
- // promptRerun: 'Run again',
288
- // promptProcessing: 'Processing…',
289
- // promptAppliedChanges: 'Applied changes',
290
-
275
+ promptRerun: 'Kör igen',
276
+ promptProcessing: 'Bearbetar…',
277
+ promptAppliedChanges: 'Tillämpade ändringar',
291
278
  // Prompt changes
292
- // promptChangeGroupDescription: (column: string) => `Group by ${column}`,
293
- // promptChangeAggregationLabel: (column: string, aggregation: string) => `${column} (${aggregation})`,
294
- // promptChangeAggregationDescription: (column: string, aggregation: string) => `Aggregate ${column} (${aggregation})`,
295
- // promptChangeFilterLabel: (column: string, operator: string, value: string) => {
296
- // if (operator === 'is any of') {
297
- // return `${column} is any of: ${value}`;
298
- // }
299
- // return `${column} ${operator} ${value}`;
300
- // },
301
- // promptChangeFilterDescription: (column: string, operator: string, value: string) => {
302
- // if (operator === 'is any of') {
303
- // return `Filter where ${column} is any of: ${value}`;
304
- // }
305
- // return `Filter where ${column} ${operator} ${value}`;
306
- // },
307
- // promptChangeSortDescription: (column: string, direction: string) => `Sort by ${column} (${direction})`,
308
- // promptChangePivotEnableLabel: 'Pivot',
309
- // promptChangePivotEnableDescription: 'Enable pivot',
310
- // promptChangePivotColumnsLabel: (count: number) => `Columns (${count})`,
311
- // promptChangePivotColumnsDescription: (column: string, direction: string) => `${column}${direction ? ` (${direction})` : ''}`,
312
- // promptChangePivotRowsLabel: (count: number) => `Rows (${count})`,
313
- // promptChangePivotValuesLabel: (count: number) => `Values (${count})`,
314
- // promptChangePivotValuesDescription: (column: string, aggregation: string) => `${column} (${aggregation})`,
315
- // promptChangeChartsLabel: (dimensionsCount: number, valuesCount: number) => `Dimensions (${dimensionsCount}), Values (${valuesCount})`,
279
+ promptChangeGroupDescription: column => `Gruppera efter ${column}`,
280
+ promptChangeAggregationLabel: (column, aggregation) => `${column} (${aggregation})`,
281
+ promptChangeAggregationDescription: (column, aggregation) => `Aggregering ${column} (${aggregation})`,
282
+ promptChangeFilterLabel: (column, operator, value) => {
283
+ if (operator === 'is any of') {
284
+ return `${column} är någon av: ${value}`;
285
+ }
286
+ return `${column} ${operator} ${value}`;
287
+ },
288
+ promptChangeFilterDescription: (column, operator, value) => {
289
+ if (operator === 'is any of') {
290
+ return `Filtrera där ${column} är någon av: ${value}`;
291
+ }
292
+ return `Filtrera där ${column} ${operator} ${value}`;
293
+ },
294
+ promptChangeSortDescription: (column, direction) => `Sortera ${column} (${direction})`,
295
+ promptChangePivotEnableLabel: 'Pivot',
296
+ promptChangePivotEnableDescription: 'Aktivera pivot',
297
+ promptChangePivotColumnsLabel: count => `Kolumner (${count})`,
298
+ promptChangePivotColumnsDescription: (column, direction) => `${column}${direction ? ` (${direction})` : ''}`,
299
+ promptChangePivotRowsLabel: count => `Rader (${count})`,
300
+ promptChangePivotValuesLabel: count => `Värden (${count})`,
301
+ promptChangePivotValuesDescription: (column, aggregation) => `${column} (${aggregation})`,
302
+ promptChangeChartsLabel: (dimensionsCount, valuesCount) => `Dimensioner (${dimensionsCount}), Värden (${valuesCount})`
316
303
  };
317
304
  const svSE = exports.svSE = (0, _getGridLocalization.getGridLocalization)(svSEGrid);