@olenbetong/appframe-ds 1.0.3 → 1.2.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 (173) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/package.json +8 -7
  3. package/scripts/copyAssets.mjs +27 -55
  4. package/src/AfLookup/Lookup.css +129 -125
  5. package/src/AfLookup/Lookup.tsx +184 -162
  6. package/src/AfLookup/LookupCombobox.css +78 -78
  7. package/src/AfLookup/LookupCombobox.tsx +237 -237
  8. package/src/AfLookup/LookupEdit.tsx +130 -130
  9. package/src/AfLookup/LookupGrid.tsx +124 -124
  10. package/src/AfLookup/index.ts +5 -5
  11. package/src/autocomplete/Autocomplete.css +256 -256
  12. package/src/autocomplete/Autocomplete.tsx +320 -320
  13. package/src/autocomplete/AutocompleteFrame.tsx +168 -168
  14. package/src/autocomplete/Combobox.tsx +286 -286
  15. package/src/autocomplete/index.ts +4 -4
  16. package/src/autocomplete/types.ts +204 -204
  17. package/src/autocomplete/utils.ts +183 -183
  18. package/src/binding/BoundNumericTextField.tsx +102 -102
  19. package/src/binding/BoundTextField.tsx +49 -49
  20. package/src/binding/CancelButton.tsx +30 -30
  21. package/src/binding/CancelIconButton.tsx +30 -30
  22. package/src/binding/DataEditToolbar.tsx +92 -92
  23. package/src/binding/DeleteButton.tsx +35 -35
  24. package/src/binding/DeleteIconButton.tsx +35 -35
  25. package/src/binding/RefreshButton.tsx +31 -31
  26. package/src/binding/RefreshIconButton.tsx +33 -33
  27. package/src/binding/RefreshRowIconButton.tsx +33 -33
  28. package/src/binding/SaveButton.tsx +37 -37
  29. package/src/binding/SaveIconButton.tsx +38 -38
  30. package/src/container/Container.tsx +49 -49
  31. package/src/container/index.ts +1 -1
  32. package/src/cutoff/CutOffPicker.css +12 -0
  33. package/src/cutoff/CutOffPicker.tsx +165 -0
  34. package/src/cutoff/context.tsx +194 -0
  35. package/src/cutoff/dsCutOffDates.ts +21 -0
  36. package/src/cutoff/index.ts +4 -0
  37. package/src/cutoff/utils.test.ts +59 -0
  38. package/src/cutoff/utils.ts +276 -0
  39. package/src/filter/ChipListInput.tsx +79 -79
  40. package/src/filter/FieldFilterPanel.css +150 -150
  41. package/src/filter/FieldFilterPanel.tsx +309 -309
  42. package/src/filter/FilterBuilder.css +152 -152
  43. package/src/filter/FilterBuilder.test.tsx +153 -153
  44. package/src/filter/FilterBuilder.tsx +435 -435
  45. package/src/filter/FilterEditor.css +231 -231
  46. package/src/filter/FilterEditor.test.tsx +259 -259
  47. package/src/filter/FilterEditor.tsx +75 -74
  48. package/src/filter/FilterGroupEditor.tsx +160 -160
  49. package/src/filter/FilterNameDialog.css +22 -22
  50. package/src/filter/FilterNameDialog.tsx +81 -81
  51. package/src/filter/FilterRow.tsx +117 -117
  52. package/src/filter/FilterShareDialog.css +28 -28
  53. package/src/filter/FilterShareDialog.tsx +201 -201
  54. package/src/filter/FilterStringField.tsx +78 -77
  55. package/src/filter/FilterValueEditor.tsx +220 -220
  56. package/src/filter/SavedFilterTree.css +107 -107
  57. package/src/filter/SavedFilterTree.test.tsx +94 -94
  58. package/src/filter/SavedFilterTree.tsx +218 -222
  59. package/src/filter/fieldFilter.test.ts +158 -158
  60. package/src/filter/fieldFilter.ts +139 -139
  61. package/src/filter/index.ts +27 -27
  62. package/src/filter/types.ts +38 -38
  63. package/src/filter/useDistinctValues.test.ts +102 -102
  64. package/src/filter/useDistinctValues.ts +230 -230
  65. package/src/global.d.ts +11 -11
  66. package/src/grid/AfGridColumnsPanel.tsx +118 -118
  67. package/src/grid/AfGridContext.tsx +51 -51
  68. package/src/grid/AfGridError.tsx +46 -46
  69. package/src/grid/AfHeaderFilterCell.tsx +147 -151
  70. package/src/grid/AfHeaderFilterPanel.tsx +111 -111
  71. package/src/grid/GridEditLookup.css +12 -0
  72. package/src/grid/GridEditLookup.tsx +121 -0
  73. package/src/grid/Toolbar.tsx +233 -233
  74. package/src/grid/editing.ts +100 -100
  75. package/src/grid/filter.ts +78 -78
  76. package/src/grid/formatters.ts +48 -48
  77. package/src/grid/index.css +245 -245
  78. package/src/grid/index.tsx +489 -484
  79. package/src/grid/license.ts +48 -48
  80. package/src/grid/localization.ts +369 -369
  81. package/src/grid/slots/index.tsx +307 -307
  82. package/src/grid/slots/slots.css +64 -64
  83. package/src/grid/theme.tsx +138 -138
  84. package/src/grid/useAfColumns.tsx +371 -371
  85. package/src/grid/useAfCurrentIndex.ts +63 -63
  86. package/src/grid/useAfData.ts +20 -20
  87. package/src/grid/useAfFilter.ts +160 -160
  88. package/src/grid/useAfFilterFields.ts +55 -55
  89. package/src/grid/useAfGridApi.ts +71 -71
  90. package/src/grid/useAfKeyBindings.ts +36 -36
  91. package/src/grid/useAfNewItemRow.ts +258 -258
  92. package/src/grid/useAfPagination.ts +53 -53
  93. package/src/grid/useAfPersistedState.ts +230 -230
  94. package/src/grid/useAfRowEditModel.ts +145 -145
  95. package/src/grid/useAfRowGrouping.ts +47 -47
  96. package/src/grid/useAfServerAggregation.ts +145 -145
  97. package/src/grid/useAfSortModel.ts +84 -84
  98. package/src/i18n.ts +13 -0
  99. package/src/index.ts +14 -12
  100. package/src/input/InputAdornments.css +75 -75
  101. package/src/input/InputAdornments.tsx +102 -102
  102. package/src/input/index.ts +1 -1
  103. package/src/layout/AppMenu.tsx +74 -75
  104. package/src/layout/AppMenuDrawer.css +70 -70
  105. package/src/layout/AppMenuDrawer.tsx +122 -122
  106. package/src/layout/ErrorBoundary.tsx +162 -162
  107. package/src/layout/ResponsiveDialog.css +86 -0
  108. package/src/layout/ResponsiveDialog.tsx +55 -0
  109. package/src/layout/index.tsx +69 -68
  110. package/src/link/Link.tsx +23 -0
  111. package/src/link/index.ts +1 -0
  112. package/src/mdi/Mdi.css +138 -138
  113. package/src/mdi/Mdi.test.tsx +91 -87
  114. package/src/mdi/Mdi.tsx +141 -141
  115. package/src/mdi/MdiConfirmCloseDialog.tsx +47 -47
  116. package/src/mdi/MdiContext.tsx +59 -59
  117. package/src/mdi/MdiDocumentContext.tsx +60 -60
  118. package/src/mdi/MdiPanel.tsx +61 -61
  119. package/src/mdi/MdiRestore.test.tsx +86 -82
  120. package/src/mdi/MdiTab.tsx +30 -30
  121. package/src/mdi/controller.test.ts +382 -382
  122. package/src/mdi/controller.ts +656 -656
  123. package/src/mdi/dockviewHost.ts +132 -132
  124. package/src/mdi/fakeHost.ts +200 -200
  125. package/src/mdi/host.ts +44 -44
  126. package/src/mdi/ids.test.ts +20 -20
  127. package/src/mdi/ids.ts +18 -18
  128. package/src/mdi/index.ts +31 -31
  129. package/src/mdi/layoutRestore.test.ts +156 -156
  130. package/src/mdi/layoutRestore.ts +311 -311
  131. package/src/mdi/layoutSpec.test.ts +143 -143
  132. package/src/mdi/layoutSpec.ts +214 -214
  133. package/src/mdi/layoutStore.test.ts +93 -93
  134. package/src/mdi/layoutStore.ts +99 -99
  135. package/src/mdi/memorySettingsStore.ts +21 -21
  136. package/src/mdi/registry.ts +34 -34
  137. package/src/mdi/testTypes.ts +37 -37
  138. package/src/mdi/theme.ts +22 -22
  139. package/src/mdi/types.ts +214 -214
  140. package/src/page/Page.css +53 -53
  141. package/src/page/PageBlock.css +64 -64
  142. package/src/page/PageBlock.tsx +92 -92
  143. package/src/page/PageHeader.css +88 -88
  144. package/src/page/PageHeader.tsx +115 -116
  145. package/src/page/PageTitle.css +5 -0
  146. package/src/page/PageTitle.tsx +21 -0
  147. package/src/page/index.ts +4 -3
  148. package/src/paper/Paper.tsx +52 -52
  149. package/src/progress/LinearProgress.css +93 -93
  150. package/src/progress/LinearProgress.tsx +104 -104
  151. package/src/progress/index.ts +1 -1
  152. package/src/report-downloader/ReportDownloader.css +67 -67
  153. package/src/report-downloader/components/StatusItem.tsx +87 -86
  154. package/src/report-downloader/components/StatusList.tsx +28 -28
  155. package/src/report-downloader/index.ts +41 -41
  156. package/src/report-downloader/status.tsx +92 -92
  157. package/src/sortable/DropIndicator.css +51 -51
  158. package/src/sortable/DropIndicator.tsx +27 -27
  159. package/src/sortable/SortableItemList.css +21 -21
  160. package/src/sortable/SortableItemList.tsx +264 -264
  161. package/src/sortable/index.ts +8 -8
  162. package/src/sortable/reorderSortOrder.ts +126 -126
  163. package/src/sortable/sortOrder.ts +101 -101
  164. package/src/sortable/types.ts +9 -9
  165. package/src/sortable/useSortableContainer.ts +53 -53
  166. package/src/sortable/useSortableItem.ts +95 -95
  167. package/src/sortable/useSortableList.ts +117 -117
  168. package/src/test/happy-dom-document-class.ts +24 -24
  169. package/src/test/setup.ts +12 -12
  170. package/src/theme/useDsColorScheme.ts +53 -53
  171. package/tsconfig.build.json +9 -9
  172. package/tsconfig.json +8 -8
  173. package/vitest.config.ts +10 -10
@@ -1,369 +1,369 @@
1
- import type { GridLocaleText } from "@mui/x-data-grid-premium";
2
- import { getLocalizedString, localize } from "@olenbetong/appframe-core";
3
-
4
- export type AfGridLocaleTextExt = GridLocaleText & {
5
- filterOperatorNotContains: string;
6
- filterOperatorNotEquals: string;
7
- filterOperatorLike: string;
8
- filterOperatorNotLike: string;
9
- filterOperatorIsNoneOf: string;
10
- headerFilterOperatorNotContains: string;
11
- headerFilterOperatorNotEquals: string;
12
- headerFilterOperatorLike: string;
13
- headerFilterOperatorNotLike: string;
14
- headerFilterOperatorIsNoneOf: string;
15
- };
16
-
17
- export const AF_GRID_LOCALE_TEXT: AfGridLocaleTextExt = {
18
- // Root
19
- noRowsLabel: getLocalizedString("No rows"),
20
- noResultsOverlayLabel: getLocalizedString("No results found."),
21
- noColumnsOverlayLabel: getLocalizedString("No columns"),
22
- noColumnsOverlayManageColumns: getLocalizedString("Manage columns"),
23
- emptyPivotOverlayLabel: getLocalizedString("Add fields to rows, columns, and values to create a pivot table"),
24
-
25
- // Density selector toolbar button text
26
- toolbarDensity: getLocalizedString("Density"),
27
- toolbarDensityLabel: getLocalizedString("Density"),
28
- toolbarDensityCompact: getLocalizedString("Compact"),
29
- toolbarDensityStandard: getLocalizedString("Standard"),
30
- toolbarDensityComfortable: getLocalizedString("Comfortable"),
31
-
32
- // Undo/redo toolbar button text
33
- toolbarUndo: getLocalizedString("Undo"),
34
- toolbarRedo: getLocalizedString("Redo"),
35
-
36
- // Columns selector toolbar button text
37
- toolbarColumns: getLocalizedString("Columns"),
38
- toolbarColumnsLabel: getLocalizedString("Select columns"),
39
-
40
- // Filters toolbar button text
41
- toolbarFilters: getLocalizedString("Filters"),
42
- toolbarFiltersLabel: getLocalizedString("Show filters"),
43
- toolbarFiltersTooltipHide: getLocalizedString("Hide filters"),
44
- toolbarFiltersTooltipShow: getLocalizedString("Show filters"),
45
- toolbarFiltersTooltipActive: (count) =>
46
- count !== 1
47
- ? getLocalizedString(`$count active filters`).replace("$count", String(count))
48
- : getLocalizedString(`$count active filter`).replace("$count", String(count)),
49
-
50
- // Quick filter toolbar field
51
- toolbarQuickFilterPlaceholder: getLocalizedString("Search…"),
52
- toolbarQuickFilterLabel: getLocalizedString("Search"),
53
- toolbarQuickFilterDeleteIconLabel: getLocalizedString("Clear"),
54
-
55
- // Export selector toolbar button text
56
- toolbarExport: getLocalizedString("Export"),
57
- toolbarExportLabel: getLocalizedString("Export"),
58
- toolbarExportCSV: getLocalizedString("Download as CSV"),
59
- toolbarExportPrint: getLocalizedString("Print"),
60
- toolbarExportExcel: getLocalizedString("Download as Excel"),
61
-
62
- // Toolbar pivot button
63
- toolbarPivot: getLocalizedString("Pivot"),
64
-
65
- // Toolbar charts button
66
- toolbarCharts: getLocalizedString("Charts"),
67
-
68
- // Toolbar AI Assistant button
69
- toolbarAssistant: getLocalizedString("AI Assistant"),
70
-
71
- // Columns management text
72
- columnsManagementSearchTitle: getLocalizedString("Search"),
73
- columnsManagementNoColumns: getLocalizedString("No columns"),
74
- columnsManagementShowHideAllText: getLocalizedString("Show/Hide All"),
75
- columnsManagementReset: getLocalizedString("Reset"),
76
- columnsManagementDeleteIconLabel: getLocalizedString("Clear"),
77
-
78
- // Filter panel text
79
- filterPanelAddFilter: getLocalizedString("Add filter"),
80
- filterPanelDeleteIconLabel: getLocalizedString("Delete"),
81
- filterPanelLogicOperator: getLocalizedString("Logic operator"),
82
- filterPanelOperator: getLocalizedString("Operator"),
83
- filterPanelOperatorAnd: getLocalizedString("And"),
84
- filterPanelOperatorOr: getLocalizedString("Or"),
85
- filterPanelColumns: getLocalizedString("Columns"),
86
- filterPanelInputLabel: getLocalizedString("Value"),
87
- filterPanelInputPlaceholder: getLocalizedString("Filter value"),
88
- filterPanelRemoveAll: getLocalizedString("Remove all"),
89
-
90
- // Filter operators text
91
- filterOperatorContains: getLocalizedString("contains"),
92
- filterOperatorDoesNotContain: getLocalizedString("does not contain"),
93
- filterOperatorEquals: getLocalizedString("equals"),
94
- filterOperatorDoesNotEqual: getLocalizedString("does not equal"),
95
- filterOperatorStartsWith: getLocalizedString("starts with"),
96
- filterOperatorEndsWith: getLocalizedString("ends with"),
97
- filterOperatorIs: getLocalizedString("is"),
98
- filterOperatorNot: getLocalizedString("is not"),
99
- filterOperatorAfter: getLocalizedString("is after"),
100
- filterOperatorOnOrAfter: getLocalizedString("is on or after"),
101
- filterOperatorBefore: getLocalizedString("is before"),
102
- filterOperatorOnOrBefore: getLocalizedString("is on or before"),
103
- filterOperatorIsEmpty: getLocalizedString("is empty"),
104
- filterOperatorIsNotEmpty: getLocalizedString("is not empty"),
105
- filterOperatorIsAnyOf: getLocalizedString("is any of"),
106
- "filterOperator=": "=",
107
- "filterOperator!=": "!=",
108
- "filterOperator>": ">",
109
- "filterOperator>=": ">=",
110
- "filterOperator<": "<",
111
- "filterOperator<=": "<=",
112
-
113
- // Header filter operators text
114
- headerFilterOperatorContains: getLocalizedString("Contains"),
115
- headerFilterOperatorDoesNotContain: getLocalizedString("Does not contain"),
116
- headerFilterOperatorEquals: getLocalizedString("Equals"),
117
- headerFilterOperatorDoesNotEqual: getLocalizedString("Does not equal"),
118
- headerFilterOperatorStartsWith: getLocalizedString("Starts with"),
119
- headerFilterOperatorEndsWith: getLocalizedString("Ends with"),
120
- headerFilterOperatorIs: getLocalizedString("Is"),
121
- headerFilterOperatorNot: getLocalizedString("Is not"),
122
- headerFilterOperatorAfter: getLocalizedString("Is after"),
123
- headerFilterOperatorOnOrAfter: getLocalizedString("Is on or after"),
124
- headerFilterOperatorBefore: getLocalizedString("Is before"),
125
- headerFilterOperatorOnOrBefore: getLocalizedString("Is on or before"),
126
- headerFilterOperatorIsEmpty: getLocalizedString("Is empty"),
127
- headerFilterOperatorIsNotEmpty: getLocalizedString("Is not empty"),
128
- headerFilterOperatorIsAnyOf: getLocalizedString("Is any of"),
129
- "headerFilterOperator=": getLocalizedString("Equals"),
130
- "headerFilterOperator!=": getLocalizedString("Not equals"),
131
- "headerFilterOperator>": getLocalizedString("greater than"),
132
- "headerFilterOperator>=": getLocalizedString("greater than or equal to"),
133
- "headerFilterOperator<": getLocalizedString("less than"),
134
- "headerFilterOperator<=": getLocalizedString("less than or equal to"),
135
- headerFilterClear: getLocalizedString("Clear filter"),
136
-
137
- // Filter values text
138
- filterValueAny: getLocalizedString("any"),
139
- filterValueTrue: getLocalizedString("true"),
140
- filterValueFalse: getLocalizedString("false"),
141
-
142
- // Column menu text
143
- columnMenuLabel: getLocalizedString("Menu"),
144
- columnMenuAriaLabel: (columnName: string) => localize`${columnName} column menu`,
145
- columnMenuShowColumns: getLocalizedString("Show columns"),
146
- columnMenuFilter: getLocalizedString("Filter"),
147
- columnMenuHideColumn: getLocalizedString("Hide"),
148
- columnMenuUnsort: getLocalizedString("Unsort"),
149
- columnMenuSortAsc: getLocalizedString("Sort by ASC"),
150
- columnMenuSortDesc: getLocalizedString("Sort by DESC"),
151
- columnMenuManageColumns: getLocalizedString("Manage columns"),
152
- columnMenuManagePivot: getLocalizedString("Manage pivot"),
153
- columnMenuManageCharts: getLocalizedString("Manage charts"),
154
-
155
- // Column header text
156
- columnHeaderFiltersTooltipActive: (count) =>
157
- count !== 1
158
- ? getLocalizedString(`$count active filters`).replace("$count", String(count))
159
- : getLocalizedString(`$count active filter`).replace("$count", String(count)),
160
- columnHeaderFiltersLabel: getLocalizedString("Show filters"),
161
- columnHeaderSortIconLabel: getLocalizedString("Sort"),
162
-
163
- // Rows selected footer text
164
- footerRowSelected: (count) =>
165
- count !== 1
166
- ? getLocalizedString(`$count rows selected`).replace("$count", count.toLocaleString())
167
- : getLocalizedString(`$count row selected`).replace("$count", count.toLocaleString()),
168
-
169
- // Total row amount footer text
170
- footerTotalRows: getLocalizedString("Total Rows:"),
171
-
172
- // Total visible row amount footer text
173
- footerTotalVisibleRows: (visibleCount, totalCount) =>
174
- getLocalizedString(`$count of $total`)
175
- .replace("$count", visibleCount.toLocaleString())
176
- .replace("$total", totalCount.toLocaleString()),
177
-
178
- // Checkbox selection text
179
- checkboxSelectionHeaderName: getLocalizedString("Checkbox selection"),
180
- checkboxSelectionSelectAllRows: getLocalizedString("Select all rows"),
181
- checkboxSelectionUnselectAllRows: getLocalizedString("Unselect all rows"),
182
- checkboxSelectionSelectRow: getLocalizedString("Select row"),
183
- checkboxSelectionUnselectRow: getLocalizedString("Unselect row"),
184
-
185
- // Boolean cell text
186
- booleanCellTrueLabel: getLocalizedString("yes"),
187
- booleanCellFalseLabel: getLocalizedString("no"),
188
-
189
- // Long text cell
190
- longTextCellExpandLabel: getLocalizedString("Expand"),
191
- longTextCellCollapseLabel: getLocalizedString("Collapse"),
192
-
193
- // Actions cell more text
194
- actionsCellMore: getLocalizedString("more"),
195
-
196
- // Column pinning text
197
- pinToLeft: getLocalizedString("Pin to left"),
198
- pinToRight: getLocalizedString("Pin to right"),
199
- unpin: getLocalizedString("Unpin"),
200
-
201
- // Tree Data
202
- treeDataGroupingHeaderName: getLocalizedString("Group"),
203
- treeDataExpand: getLocalizedString("see children"),
204
- treeDataCollapse: getLocalizedString("hide children"),
205
-
206
- // Grouping columns
207
- groupingColumnHeaderName: getLocalizedString("Group"),
208
- groupColumn: (name) => getLocalizedString("Group by $name").replace("$name", name),
209
- unGroupColumn: (name) => getLocalizedString("Stop grouping by $name").replace("$name", name),
210
-
211
- // Master/detail
212
- detailPanelToggle: getLocalizedString("Detail panel toggle"),
213
- expandDetailPanel: getLocalizedString("Expand"),
214
- collapseDetailPanel: getLocalizedString("Collapse"),
215
-
216
- // Pagination
217
- paginationRowsPerPage: getLocalizedString("Rows per page:"),
218
- paginationDisplayedRows: ({ from, to, count, estimated }) => {
219
- if (!estimated) {
220
- return localize`${from}–${to} of ${count !== -1 ? count : `more than ${to}`}`;
221
- }
222
- const estimatedLabel = estimated && estimated > to ? localize`around ${estimated}` : `more than ${to}`;
223
- return localize`${from}–${to} of ${count !== -1 ? count : estimatedLabel}`;
224
- },
225
- paginationItemAriaLabel: (type) => {
226
- if (type === "first") {
227
- return getLocalizedString("Go to first page");
228
- }
229
- if (type === "last") {
230
- return getLocalizedString("Go to last page");
231
- }
232
- if (type === "next") {
233
- return getLocalizedString("Go to next page");
234
- }
235
- // if (type === 'previous') {
236
- return getLocalizedString("Go to previous page");
237
- },
238
-
239
- // Row reordering text
240
- rowReorderingHeaderName: getLocalizedString("Row reordering"),
241
-
242
- // Aggregation
243
- aggregationMenuItemHeader: getLocalizedString("Aggregation"),
244
- aggregationFunctionLabelNone: getLocalizedString("none"),
245
- aggregationFunctionLabelSum: getLocalizedString("sum"),
246
- aggregationFunctionLabelAvg: getLocalizedString("avg"),
247
- aggregationFunctionLabelMin: getLocalizedString("min"),
248
- aggregationFunctionLabelMax: getLocalizedString("max"),
249
- aggregationFunctionLabelSize: getLocalizedString("size"),
250
-
251
- // Pivot panel
252
- pivotToggleLabel: getLocalizedString("Pivot"),
253
- pivotRows: getLocalizedString("Rows"),
254
- pivotColumns: getLocalizedString("Columns"),
255
- pivotValues: getLocalizedString("Values"),
256
- pivotCloseButton: getLocalizedString("Close pivot settings"),
257
- pivotSearchButton: getLocalizedString("Search fields"),
258
- pivotSearchControlPlaceholder: getLocalizedString("Search fields"),
259
- pivotSearchControlLabel: getLocalizedString("Search fields"),
260
- pivotSearchControlClear: getLocalizedString("Clear search"),
261
- pivotNoFields: getLocalizedString("No fields"),
262
- pivotMenuMoveUp: getLocalizedString("Move up"),
263
- pivotMenuMoveDown: getLocalizedString("Move down"),
264
- pivotMenuMoveToTop: getLocalizedString("Move to top"),
265
- pivotMenuMoveToBottom: getLocalizedString("Move to bottom"),
266
- pivotMenuRows: getLocalizedString("Rows"),
267
- pivotMenuColumns: getLocalizedString("Columns"),
268
- pivotMenuValues: getLocalizedString("Values"),
269
- pivotMenuOptions: getLocalizedString("Field options"),
270
- pivotMenuAddToRows: getLocalizedString("Add to Rows"),
271
- pivotMenuAddToColumns: getLocalizedString("Add to Columns"),
272
- pivotMenuAddToValues: getLocalizedString("Add to Values"),
273
- pivotMenuRemove: getLocalizedString("Remove"),
274
- pivotDragToRows: getLocalizedString("Drag here to create rows"),
275
- pivotDragToColumns: getLocalizedString("Drag here to create columns"),
276
- pivotDragToValues: getLocalizedString("Drag here to create values"),
277
- pivotYearColumnHeaderName: getLocalizedString("(Year)"),
278
- pivotQuarterColumnHeaderName: getLocalizedString("(Quarter)"),
279
-
280
- // Charts configuration panel
281
- chartsNoCharts: getLocalizedString("There are no charts available"),
282
- chartsChartNotSelected: getLocalizedString("Select a chart type to configure its options"),
283
- chartsTabChart: getLocalizedString("Chart"),
284
- chartsTabFields: getLocalizedString("Fields"),
285
- chartsTabCustomize: getLocalizedString("Customize"),
286
- chartsCloseButton: getLocalizedString("Close charts configuration"),
287
- chartsSyncButtonLabel: getLocalizedString("Sync chart"),
288
- chartsSearchPlaceholder: getLocalizedString("Search fields"),
289
- chartsSearchLabel: getLocalizedString("Search fields"),
290
- chartsSearchClear: getLocalizedString("Clear search"),
291
- chartsNoFields: getLocalizedString("No fields"),
292
- chartsFieldBlocked: getLocalizedString("This field cannot be added to any section"),
293
- chartsCategories: getLocalizedString("Categories"),
294
- chartsSeries: getLocalizedString("Series"),
295
- chartsMenuAddToDimensions: (dimensionLabel: string) => localize`Add to ${dimensionLabel}`,
296
- chartsMenuAddToValues: (valuesLabel: string) => localize`Add to ${valuesLabel}`,
297
- chartsMenuMoveUp: getLocalizedString("Move up"),
298
- chartsMenuMoveDown: getLocalizedString("Move down"),
299
- chartsMenuMoveToTop: getLocalizedString("Move to top"),
300
- chartsMenuMoveToBottom: getLocalizedString("Move to bottom"),
301
- chartsMenuOptions: getLocalizedString("Field options"),
302
- chartsMenuRemove: getLocalizedString("Remove"),
303
- chartsDragToDimensions: (dimensionLabel: string) => localize`Drag here to use column as ${dimensionLabel}`,
304
- chartsDragToValues: (valuesLabel: string) => localize`Drag here to use column as ${valuesLabel}`,
305
-
306
- // AI Assistant panel
307
- aiAssistantPanelTitle: getLocalizedString("AI Assistant"),
308
- aiAssistantPanelClose: getLocalizedString("Close AI Assistant"),
309
- aiAssistantPanelNewConversation: getLocalizedString("New conversation"),
310
- aiAssistantPanelConversationHistory: getLocalizedString("Conversation history"),
311
- aiAssistantPanelEmptyConversation: getLocalizedString("No prompt history"),
312
- aiAssistantSuggestions: getLocalizedString("Suggestions"),
313
-
314
- // Prompt field
315
- promptFieldLabel: getLocalizedString("Prompt"),
316
- promptFieldPlaceholder: getLocalizedString("Type a prompt…"),
317
- promptFieldPlaceholderWithRecording: getLocalizedString("Type or record a prompt…"),
318
- promptFieldPlaceholderListening: getLocalizedString("Listening for prompt…"),
319
- promptFieldSpeechRecognitionNotSupported: getLocalizedString("Speech recognition is not supported in this browser"),
320
- promptFieldSend: getLocalizedString("Send"),
321
- promptFieldRecord: getLocalizedString("Record"),
322
- promptFieldStopRecording: getLocalizedString("Stop recording"),
323
-
324
- // Prompt
325
- promptRerun: getLocalizedString("Run again"),
326
- promptProcessing: getLocalizedString("Processing…"),
327
- promptAppliedChanges: getLocalizedString("Applied changes"),
328
-
329
- // Prompt changes
330
- promptChangeGroupDescription: (column: string) => localize`Group by ${column}`,
331
- promptChangeAggregationLabel: (column: string, aggregation: string) => localize`${column} (${aggregation})`,
332
- promptChangeAggregationDescription: (column: string, aggregation: string) =>
333
- localize`Aggregate ${column} (${aggregation})`,
334
- promptChangeFilterLabel: (column: string, operator: string, value: string) => {
335
- if (operator === "is any of") {
336
- return localize`${column} is any of: ${value}`;
337
- }
338
- return localize`${column} ${operator} ${value}`;
339
- },
340
- promptChangeFilterDescription: (column: string, operator: string, value: string) => {
341
- if (operator === "is any of") {
342
- return localize`Filter where ${column} is any of: ${value}`;
343
- }
344
- return localize`Filter where ${column} ${operator} ${value}`;
345
- },
346
- promptChangeSortDescription: (column: string, direction: string) => localize`Sort by ${column} (${direction})`,
347
- promptChangePivotEnableLabel: getLocalizedString("Pivot"),
348
- promptChangePivotEnableDescription: getLocalizedString("Enable pivot"),
349
- promptChangePivotColumnsLabel: (count: number) => localize`Columns (${count})`,
350
- promptChangePivotColumnsDescription: (column: string, direction: string) =>
351
- localize`${column}${direction ? ` (${direction})` : ""}`,
352
- promptChangePivotRowsLabel: (count: number) => localize`Rows (${count})`,
353
- promptChangePivotValuesLabel: (count: number) => localize`Values (${count})`,
354
- promptChangePivotValuesDescription: (column: string, aggregation: string) => localize`${column} (${aggregation})`,
355
- promptChangeChartsLabel: (dimensionsCount: number, valuesCount: number) =>
356
- localize`Dimensions (${dimensionsCount}), Values (${valuesCount})`,
357
-
358
- // Custom AF filters
359
- filterOperatorNotContains: getLocalizedString("not contains"),
360
- filterOperatorNotEquals: getLocalizedString("not equals"),
361
- filterOperatorLike: getLocalizedString("like"),
362
- filterOperatorNotLike: getLocalizedString("not like"),
363
- filterOperatorIsNoneOf: getLocalizedString("is none of"),
364
- headerFilterOperatorNotContains: getLocalizedString("Not contains??"),
365
- headerFilterOperatorNotEquals: getLocalizedString("Not equals"),
366
- headerFilterOperatorLike: getLocalizedString("Like"),
367
- headerFilterOperatorNotLike: getLocalizedString("Not like"),
368
- headerFilterOperatorIsNoneOf: getLocalizedString("Is none of"),
369
- };
1
+ import type { GridLocaleText } from "@mui/x-data-grid-premium";
2
+ import { getLocalizedString, localize } from "../i18n.js";
3
+
4
+ export type AfGridLocaleTextExt = GridLocaleText & {
5
+ filterOperatorNotContains: string;
6
+ filterOperatorNotEquals: string;
7
+ filterOperatorLike: string;
8
+ filterOperatorNotLike: string;
9
+ filterOperatorIsNoneOf: string;
10
+ headerFilterOperatorNotContains: string;
11
+ headerFilterOperatorNotEquals: string;
12
+ headerFilterOperatorLike: string;
13
+ headerFilterOperatorNotLike: string;
14
+ headerFilterOperatorIsNoneOf: string;
15
+ };
16
+
17
+ export const AF_GRID_LOCALE_TEXT: AfGridLocaleTextExt = {
18
+ // Root
19
+ noRowsLabel: getLocalizedString("No rows"),
20
+ noResultsOverlayLabel: getLocalizedString("No results found."),
21
+ noColumnsOverlayLabel: getLocalizedString("No columns"),
22
+ noColumnsOverlayManageColumns: getLocalizedString("Manage columns"),
23
+ emptyPivotOverlayLabel: getLocalizedString("Add fields to rows, columns, and values to create a pivot table"),
24
+
25
+ // Density selector toolbar button text
26
+ toolbarDensity: getLocalizedString("Density"),
27
+ toolbarDensityLabel: getLocalizedString("Density"),
28
+ toolbarDensityCompact: getLocalizedString("Compact"),
29
+ toolbarDensityStandard: getLocalizedString("Standard"),
30
+ toolbarDensityComfortable: getLocalizedString("Comfortable"),
31
+
32
+ // Undo/redo toolbar button text
33
+ toolbarUndo: getLocalizedString("Undo"),
34
+ toolbarRedo: getLocalizedString("Redo"),
35
+
36
+ // Columns selector toolbar button text
37
+ toolbarColumns: getLocalizedString("Columns"),
38
+ toolbarColumnsLabel: getLocalizedString("Select columns"),
39
+
40
+ // Filters toolbar button text
41
+ toolbarFilters: getLocalizedString("Filters"),
42
+ toolbarFiltersLabel: getLocalizedString("Show filters"),
43
+ toolbarFiltersTooltipHide: getLocalizedString("Hide filters"),
44
+ toolbarFiltersTooltipShow: getLocalizedString("Show filters"),
45
+ toolbarFiltersTooltipActive: (count) =>
46
+ count !== 1
47
+ ? getLocalizedString(`$count active filters`).replace("$count", String(count))
48
+ : getLocalizedString(`$count active filter`).replace("$count", String(count)),
49
+
50
+ // Quick filter toolbar field
51
+ toolbarQuickFilterPlaceholder: getLocalizedString("Search…"),
52
+ toolbarQuickFilterLabel: getLocalizedString("Search"),
53
+ toolbarQuickFilterDeleteIconLabel: getLocalizedString("Clear"),
54
+
55
+ // Export selector toolbar button text
56
+ toolbarExport: getLocalizedString("Export"),
57
+ toolbarExportLabel: getLocalizedString("Export"),
58
+ toolbarExportCSV: getLocalizedString("Download as CSV"),
59
+ toolbarExportPrint: getLocalizedString("Print"),
60
+ toolbarExportExcel: getLocalizedString("Download as Excel"),
61
+
62
+ // Toolbar pivot button
63
+ toolbarPivot: getLocalizedString("Pivot"),
64
+
65
+ // Toolbar charts button
66
+ toolbarCharts: getLocalizedString("Charts"),
67
+
68
+ // Toolbar AI Assistant button
69
+ toolbarAssistant: getLocalizedString("AI Assistant"),
70
+
71
+ // Columns management text
72
+ columnsManagementSearchTitle: getLocalizedString("Search"),
73
+ columnsManagementNoColumns: getLocalizedString("No columns"),
74
+ columnsManagementShowHideAllText: getLocalizedString("Show/Hide All"),
75
+ columnsManagementReset: getLocalizedString("Reset"),
76
+ columnsManagementDeleteIconLabel: getLocalizedString("Clear"),
77
+
78
+ // Filter panel text
79
+ filterPanelAddFilter: getLocalizedString("Add filter"),
80
+ filterPanelDeleteIconLabel: getLocalizedString("Delete"),
81
+ filterPanelLogicOperator: getLocalizedString("Logic operator"),
82
+ filterPanelOperator: getLocalizedString("Operator"),
83
+ filterPanelOperatorAnd: getLocalizedString("And"),
84
+ filterPanelOperatorOr: getLocalizedString("Or"),
85
+ filterPanelColumns: getLocalizedString("Columns"),
86
+ filterPanelInputLabel: getLocalizedString("Value"),
87
+ filterPanelInputPlaceholder: getLocalizedString("Filter value"),
88
+ filterPanelRemoveAll: getLocalizedString("Remove all"),
89
+
90
+ // Filter operators text
91
+ filterOperatorContains: getLocalizedString("contains"),
92
+ filterOperatorDoesNotContain: getLocalizedString("does not contain"),
93
+ filterOperatorEquals: getLocalizedString("equals"),
94
+ filterOperatorDoesNotEqual: getLocalizedString("does not equal"),
95
+ filterOperatorStartsWith: getLocalizedString("starts with"),
96
+ filterOperatorEndsWith: getLocalizedString("ends with"),
97
+ filterOperatorIs: getLocalizedString("is"),
98
+ filterOperatorNot: getLocalizedString("is not"),
99
+ filterOperatorAfter: getLocalizedString("is after"),
100
+ filterOperatorOnOrAfter: getLocalizedString("is on or after"),
101
+ filterOperatorBefore: getLocalizedString("is before"),
102
+ filterOperatorOnOrBefore: getLocalizedString("is on or before"),
103
+ filterOperatorIsEmpty: getLocalizedString("is empty"),
104
+ filterOperatorIsNotEmpty: getLocalizedString("is not empty"),
105
+ filterOperatorIsAnyOf: getLocalizedString("is any of"),
106
+ "filterOperator=": "=",
107
+ "filterOperator!=": "!=",
108
+ "filterOperator>": ">",
109
+ "filterOperator>=": ">=",
110
+ "filterOperator<": "<",
111
+ "filterOperator<=": "<=",
112
+
113
+ // Header filter operators text
114
+ headerFilterOperatorContains: getLocalizedString("Contains"),
115
+ headerFilterOperatorDoesNotContain: getLocalizedString("Does not contain"),
116
+ headerFilterOperatorEquals: getLocalizedString("Equals"),
117
+ headerFilterOperatorDoesNotEqual: getLocalizedString("Does not equal"),
118
+ headerFilterOperatorStartsWith: getLocalizedString("Starts with"),
119
+ headerFilterOperatorEndsWith: getLocalizedString("Ends with"),
120
+ headerFilterOperatorIs: getLocalizedString("Is"),
121
+ headerFilterOperatorNot: getLocalizedString("Is not"),
122
+ headerFilterOperatorAfter: getLocalizedString("Is after"),
123
+ headerFilterOperatorOnOrAfter: getLocalizedString("Is on or after"),
124
+ headerFilterOperatorBefore: getLocalizedString("Is before"),
125
+ headerFilterOperatorOnOrBefore: getLocalizedString("Is on or before"),
126
+ headerFilterOperatorIsEmpty: getLocalizedString("Is empty"),
127
+ headerFilterOperatorIsNotEmpty: getLocalizedString("Is not empty"),
128
+ headerFilterOperatorIsAnyOf: getLocalizedString("Is any of"),
129
+ "headerFilterOperator=": getLocalizedString("Equals"),
130
+ "headerFilterOperator!=": getLocalizedString("Not equals"),
131
+ "headerFilterOperator>": getLocalizedString("greater than"),
132
+ "headerFilterOperator>=": getLocalizedString("greater than or equal to"),
133
+ "headerFilterOperator<": getLocalizedString("less than"),
134
+ "headerFilterOperator<=": getLocalizedString("less than or equal to"),
135
+ headerFilterClear: getLocalizedString("Clear filter"),
136
+
137
+ // Filter values text
138
+ filterValueAny: getLocalizedString("any"),
139
+ filterValueTrue: getLocalizedString("true"),
140
+ filterValueFalse: getLocalizedString("false"),
141
+
142
+ // Column menu text
143
+ columnMenuLabel: getLocalizedString("Menu"),
144
+ columnMenuAriaLabel: (columnName: string) => localize`${columnName} column menu`,
145
+ columnMenuShowColumns: getLocalizedString("Show columns"),
146
+ columnMenuFilter: getLocalizedString("Filter"),
147
+ columnMenuHideColumn: getLocalizedString("Hide"),
148
+ columnMenuUnsort: getLocalizedString("Unsort"),
149
+ columnMenuSortAsc: getLocalizedString("Sort by ASC"),
150
+ columnMenuSortDesc: getLocalizedString("Sort by DESC"),
151
+ columnMenuManageColumns: getLocalizedString("Manage columns"),
152
+ columnMenuManagePivot: getLocalizedString("Manage pivot"),
153
+ columnMenuManageCharts: getLocalizedString("Manage charts"),
154
+
155
+ // Column header text
156
+ columnHeaderFiltersTooltipActive: (count) =>
157
+ count !== 1
158
+ ? getLocalizedString(`$count active filters`).replace("$count", String(count))
159
+ : getLocalizedString(`$count active filter`).replace("$count", String(count)),
160
+ columnHeaderFiltersLabel: getLocalizedString("Show filters"),
161
+ columnHeaderSortIconLabel: getLocalizedString("Sort"),
162
+
163
+ // Rows selected footer text
164
+ footerRowSelected: (count) =>
165
+ count !== 1
166
+ ? getLocalizedString(`$count rows selected`).replace("$count", count.toLocaleString())
167
+ : getLocalizedString(`$count row selected`).replace("$count", count.toLocaleString()),
168
+
169
+ // Total row amount footer text
170
+ footerTotalRows: getLocalizedString("Total Rows:"),
171
+
172
+ // Total visible row amount footer text
173
+ footerTotalVisibleRows: (visibleCount, totalCount) =>
174
+ getLocalizedString(`$count of $total`)
175
+ .replace("$count", visibleCount.toLocaleString())
176
+ .replace("$total", totalCount.toLocaleString()),
177
+
178
+ // Checkbox selection text
179
+ checkboxSelectionHeaderName: getLocalizedString("Checkbox selection"),
180
+ checkboxSelectionSelectAllRows: getLocalizedString("Select all rows"),
181
+ checkboxSelectionUnselectAllRows: getLocalizedString("Unselect all rows"),
182
+ checkboxSelectionSelectRow: getLocalizedString("Select row"),
183
+ checkboxSelectionUnselectRow: getLocalizedString("Unselect row"),
184
+
185
+ // Boolean cell text
186
+ booleanCellTrueLabel: getLocalizedString("yes"),
187
+ booleanCellFalseLabel: getLocalizedString("no"),
188
+
189
+ // Long text cell
190
+ longTextCellExpandLabel: getLocalizedString("Expand"),
191
+ longTextCellCollapseLabel: getLocalizedString("Collapse"),
192
+
193
+ // Actions cell more text
194
+ actionsCellMore: getLocalizedString("more"),
195
+
196
+ // Column pinning text
197
+ pinToLeft: getLocalizedString("Pin to left"),
198
+ pinToRight: getLocalizedString("Pin to right"),
199
+ unpin: getLocalizedString("Unpin"),
200
+
201
+ // Tree Data
202
+ treeDataGroupingHeaderName: getLocalizedString("Group"),
203
+ treeDataExpand: getLocalizedString("see children"),
204
+ treeDataCollapse: getLocalizedString("hide children"),
205
+
206
+ // Grouping columns
207
+ groupingColumnHeaderName: getLocalizedString("Group"),
208
+ groupColumn: (name) => getLocalizedString("Group by $name").replace("$name", name),
209
+ unGroupColumn: (name) => getLocalizedString("Stop grouping by $name").replace("$name", name),
210
+
211
+ // Master/detail
212
+ detailPanelToggle: getLocalizedString("Detail panel toggle"),
213
+ expandDetailPanel: getLocalizedString("Expand"),
214
+ collapseDetailPanel: getLocalizedString("Collapse"),
215
+
216
+ // Pagination
217
+ paginationRowsPerPage: getLocalizedString("Rows per page:"),
218
+ paginationDisplayedRows: ({ from, to, count, estimated }) => {
219
+ if (!estimated) {
220
+ return localize`${from}–${to} of ${count !== -1 ? count : `more than ${to}`}`;
221
+ }
222
+ const estimatedLabel = estimated && estimated > to ? localize`around ${estimated}` : `more than ${to}`;
223
+ return localize`${from}–${to} of ${count !== -1 ? count : estimatedLabel}`;
224
+ },
225
+ paginationItemAriaLabel: (type) => {
226
+ if (type === "first") {
227
+ return getLocalizedString("Go to first page");
228
+ }
229
+ if (type === "last") {
230
+ return getLocalizedString("Go to last page");
231
+ }
232
+ if (type === "next") {
233
+ return getLocalizedString("Go to next page");
234
+ }
235
+ // if (type === 'previous') {
236
+ return getLocalizedString("Go to previous page");
237
+ },
238
+
239
+ // Row reordering text
240
+ rowReorderingHeaderName: getLocalizedString("Row reordering"),
241
+
242
+ // Aggregation
243
+ aggregationMenuItemHeader: getLocalizedString("Aggregation"),
244
+ aggregationFunctionLabelNone: getLocalizedString("none"),
245
+ aggregationFunctionLabelSum: getLocalizedString("sum"),
246
+ aggregationFunctionLabelAvg: getLocalizedString("avg"),
247
+ aggregationFunctionLabelMin: getLocalizedString("min"),
248
+ aggregationFunctionLabelMax: getLocalizedString("max"),
249
+ aggregationFunctionLabelSize: getLocalizedString("size"),
250
+
251
+ // Pivot panel
252
+ pivotToggleLabel: getLocalizedString("Pivot"),
253
+ pivotRows: getLocalizedString("Rows"),
254
+ pivotColumns: getLocalizedString("Columns"),
255
+ pivotValues: getLocalizedString("Values"),
256
+ pivotCloseButton: getLocalizedString("Close pivot settings"),
257
+ pivotSearchButton: getLocalizedString("Search fields"),
258
+ pivotSearchControlPlaceholder: getLocalizedString("Search fields"),
259
+ pivotSearchControlLabel: getLocalizedString("Search fields"),
260
+ pivotSearchControlClear: getLocalizedString("Clear search"),
261
+ pivotNoFields: getLocalizedString("No fields"),
262
+ pivotMenuMoveUp: getLocalizedString("Move up"),
263
+ pivotMenuMoveDown: getLocalizedString("Move down"),
264
+ pivotMenuMoveToTop: getLocalizedString("Move to top"),
265
+ pivotMenuMoveToBottom: getLocalizedString("Move to bottom"),
266
+ pivotMenuRows: getLocalizedString("Rows"),
267
+ pivotMenuColumns: getLocalizedString("Columns"),
268
+ pivotMenuValues: getLocalizedString("Values"),
269
+ pivotMenuOptions: getLocalizedString("Field options"),
270
+ pivotMenuAddToRows: getLocalizedString("Add to Rows"),
271
+ pivotMenuAddToColumns: getLocalizedString("Add to Columns"),
272
+ pivotMenuAddToValues: getLocalizedString("Add to Values"),
273
+ pivotMenuRemove: getLocalizedString("Remove"),
274
+ pivotDragToRows: getLocalizedString("Drag here to create rows"),
275
+ pivotDragToColumns: getLocalizedString("Drag here to create columns"),
276
+ pivotDragToValues: getLocalizedString("Drag here to create values"),
277
+ pivotYearColumnHeaderName: getLocalizedString("(Year)"),
278
+ pivotQuarterColumnHeaderName: getLocalizedString("(Quarter)"),
279
+
280
+ // Charts configuration panel
281
+ chartsNoCharts: getLocalizedString("There are no charts available"),
282
+ chartsChartNotSelected: getLocalizedString("Select a chart type to configure its options"),
283
+ chartsTabChart: getLocalizedString("Chart"),
284
+ chartsTabFields: getLocalizedString("Fields"),
285
+ chartsTabCustomize: getLocalizedString("Customize"),
286
+ chartsCloseButton: getLocalizedString("Close charts configuration"),
287
+ chartsSyncButtonLabel: getLocalizedString("Sync chart"),
288
+ chartsSearchPlaceholder: getLocalizedString("Search fields"),
289
+ chartsSearchLabel: getLocalizedString("Search fields"),
290
+ chartsSearchClear: getLocalizedString("Clear search"),
291
+ chartsNoFields: getLocalizedString("No fields"),
292
+ chartsFieldBlocked: getLocalizedString("This field cannot be added to any section"),
293
+ chartsCategories: getLocalizedString("Categories"),
294
+ chartsSeries: getLocalizedString("Series"),
295
+ chartsMenuAddToDimensions: (dimensionLabel: string) => localize`Add to ${dimensionLabel}`,
296
+ chartsMenuAddToValues: (valuesLabel: string) => localize`Add to ${valuesLabel}`,
297
+ chartsMenuMoveUp: getLocalizedString("Move up"),
298
+ chartsMenuMoveDown: getLocalizedString("Move down"),
299
+ chartsMenuMoveToTop: getLocalizedString("Move to top"),
300
+ chartsMenuMoveToBottom: getLocalizedString("Move to bottom"),
301
+ chartsMenuOptions: getLocalizedString("Field options"),
302
+ chartsMenuRemove: getLocalizedString("Remove"),
303
+ chartsDragToDimensions: (dimensionLabel: string) => localize`Drag here to use column as ${dimensionLabel}`,
304
+ chartsDragToValues: (valuesLabel: string) => localize`Drag here to use column as ${valuesLabel}`,
305
+
306
+ // AI Assistant panel
307
+ aiAssistantPanelTitle: getLocalizedString("AI Assistant"),
308
+ aiAssistantPanelClose: getLocalizedString("Close AI Assistant"),
309
+ aiAssistantPanelNewConversation: getLocalizedString("New conversation"),
310
+ aiAssistantPanelConversationHistory: getLocalizedString("Conversation history"),
311
+ aiAssistantPanelEmptyConversation: getLocalizedString("No prompt history"),
312
+ aiAssistantSuggestions: getLocalizedString("Suggestions"),
313
+
314
+ // Prompt field
315
+ promptFieldLabel: getLocalizedString("Prompt"),
316
+ promptFieldPlaceholder: getLocalizedString("Type a prompt…"),
317
+ promptFieldPlaceholderWithRecording: getLocalizedString("Type or record a prompt…"),
318
+ promptFieldPlaceholderListening: getLocalizedString("Listening for prompt…"),
319
+ promptFieldSpeechRecognitionNotSupported: getLocalizedString("Speech recognition is not supported in this browser"),
320
+ promptFieldSend: getLocalizedString("Send"),
321
+ promptFieldRecord: getLocalizedString("Record"),
322
+ promptFieldStopRecording: getLocalizedString("Stop recording"),
323
+
324
+ // Prompt
325
+ promptRerun: getLocalizedString("Run again"),
326
+ promptProcessing: getLocalizedString("Processing…"),
327
+ promptAppliedChanges: getLocalizedString("Applied changes"),
328
+
329
+ // Prompt changes
330
+ promptChangeGroupDescription: (column: string) => localize`Group by ${column}`,
331
+ promptChangeAggregationLabel: (column: string, aggregation: string) => localize`${column} (${aggregation})`,
332
+ promptChangeAggregationDescription: (column: string, aggregation: string) =>
333
+ localize`Aggregate ${column} (${aggregation})`,
334
+ promptChangeFilterLabel: (column: string, operator: string, value: string) => {
335
+ if (operator === "is any of") {
336
+ return localize`${column} is any of: ${value}`;
337
+ }
338
+ return localize`${column} ${operator} ${value}`;
339
+ },
340
+ promptChangeFilterDescription: (column: string, operator: string, value: string) => {
341
+ if (operator === "is any of") {
342
+ return localize`Filter where ${column} is any of: ${value}`;
343
+ }
344
+ return localize`Filter where ${column} ${operator} ${value}`;
345
+ },
346
+ promptChangeSortDescription: (column: string, direction: string) => localize`Sort by ${column} (${direction})`,
347
+ promptChangePivotEnableLabel: getLocalizedString("Pivot"),
348
+ promptChangePivotEnableDescription: getLocalizedString("Enable pivot"),
349
+ promptChangePivotColumnsLabel: (count: number) => localize`Columns (${count})`,
350
+ promptChangePivotColumnsDescription: (column: string, direction: string) =>
351
+ localize`${column}${direction ? ` (${direction})` : ""}`,
352
+ promptChangePivotRowsLabel: (count: number) => localize`Rows (${count})`,
353
+ promptChangePivotValuesLabel: (count: number) => localize`Values (${count})`,
354
+ promptChangePivotValuesDescription: (column: string, aggregation: string) => localize`${column} (${aggregation})`,
355
+ promptChangeChartsLabel: (dimensionsCount: number, valuesCount: number) =>
356
+ localize`Dimensions (${dimensionsCount}), Values (${valuesCount})`,
357
+
358
+ // Custom AF filters
359
+ filterOperatorNotContains: getLocalizedString("not contains"),
360
+ filterOperatorNotEquals: getLocalizedString("not equals"),
361
+ filterOperatorLike: getLocalizedString("like"),
362
+ filterOperatorNotLike: getLocalizedString("not like"),
363
+ filterOperatorIsNoneOf: getLocalizedString("is none of"),
364
+ headerFilterOperatorNotContains: getLocalizedString("Not contains??"),
365
+ headerFilterOperatorNotEquals: getLocalizedString("Not equals"),
366
+ headerFilterOperatorLike: getLocalizedString("Like"),
367
+ headerFilterOperatorNotLike: getLocalizedString("Not like"),
368
+ headerFilterOperatorIsNoneOf: getLocalizedString("Is none of"),
369
+ };