@univerjs/sheets-table-ui 1.0.0-rc.0 → 1.0.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.
- package/lib/cjs/index.js +629 -206
- package/lib/cjs/locale/ar-SA.js +11 -1
- package/lib/cjs/locale/ca-ES.js +11 -1
- package/lib/cjs/locale/de-DE.js +11 -1
- package/lib/cjs/locale/en-US.js +11 -1
- package/lib/cjs/locale/es-ES.js +11 -1
- package/lib/cjs/locale/fa-IR.js +11 -1
- package/lib/cjs/locale/fr-FR.js +11 -1
- package/lib/cjs/locale/id-ID.js +11 -1
- package/lib/cjs/locale/it-IT.js +11 -1
- package/lib/cjs/locale/ja-JP.js +11 -1
- package/lib/cjs/locale/ko-KR.js +11 -1
- package/lib/cjs/locale/pl-PL.js +11 -1
- package/lib/cjs/locale/pt-BR.js +11 -1
- package/lib/cjs/locale/ru-RU.js +11 -1
- package/lib/cjs/locale/sk-SK.js +11 -1
- package/lib/cjs/locale/vi-VN.js +11 -1
- package/lib/cjs/locale/zh-CN.js +11 -1
- package/lib/cjs/locale/zh-HK.js +11 -1
- package/lib/cjs/locale/zh-TW.js +11 -1
- package/lib/es/index.js +633 -210
- package/lib/es/locale/ar-SA.js +11 -0
- package/lib/es/locale/ca-ES.js +11 -0
- package/lib/es/locale/de-DE.js +11 -0
- package/lib/es/locale/en-US.js +11 -0
- package/lib/es/locale/es-ES.js +11 -0
- package/lib/es/locale/fa-IR.js +11 -0
- package/lib/es/locale/fr-FR.js +11 -0
- package/lib/es/locale/id-ID.js +11 -0
- package/lib/es/locale/it-IT.js +11 -0
- package/lib/es/locale/ja-JP.js +11 -0
- package/lib/es/locale/ko-KR.js +11 -0
- package/lib/es/locale/pl-PL.js +11 -0
- package/lib/es/locale/pt-BR.js +11 -0
- package/lib/es/locale/ru-RU.js +11 -0
- package/lib/es/locale/sk-SK.js +11 -0
- package/lib/es/locale/vi-VN.js +11 -0
- package/lib/es/locale/zh-CN.js +11 -0
- package/lib/es/locale/zh-HK.js +11 -0
- package/lib/es/locale/zh-TW.js +11 -0
- package/lib/index.css +9 -0
- package/lib/index.js +633 -210
- package/lib/locale/ar-SA.js +11 -0
- package/lib/locale/ca-ES.js +11 -0
- package/lib/locale/de-DE.js +11 -0
- package/lib/locale/en-US.js +11 -0
- package/lib/locale/es-ES.js +11 -0
- package/lib/locale/fa-IR.js +11 -0
- package/lib/locale/fr-FR.js +11 -0
- package/lib/locale/id-ID.js +11 -0
- package/lib/locale/it-IT.js +11 -0
- package/lib/locale/ja-JP.js +11 -0
- package/lib/locale/ko-KR.js +11 -0
- package/lib/locale/pl-PL.js +11 -0
- package/lib/locale/pt-BR.js +11 -0
- package/lib/locale/ru-RU.js +11 -0
- package/lib/locale/sk-SK.js +11 -0
- package/lib/locale/vi-VN.js +11 -0
- package/lib/locale/zh-CN.js +11 -0
- package/lib/locale/zh-HK.js +11 -0
- package/lib/locale/zh-TW.js +11 -0
- package/lib/types/commands/operations/mobile/open-table-filter-dialog.operation.d.ts +18 -0
- package/lib/types/const.d.ts +2 -0
- package/lib/types/controllers/sheet-table-controls-render.controller.d.ts +2 -0
- package/lib/types/locale/en-US.d.ts +11 -0
- package/lib/types/menu/mobile-schema.d.ts +17 -0
- package/lib/types/menu/mobile-sheet-table-menu.controller.d.ts +20 -0
- package/lib/types/services/sheets-table-ui.service.d.ts +3 -1
- package/lib/types/types.d.ts +3 -0
- package/lib/types/views/components/MobileSheetTableItemsFilterPanel.d.ts +2 -0
- package/lib/types/views/components/MobileSheetTableSettingsDialog.d.ts +17 -0
- package/lib/types/views/components/SheetTableCalculatedColumn.d.ts +21 -0
- package/lib/types/views/components/SheetTableItemsFilterPanel.d.ts +2 -0
- package/lib/types/views/components/SheetTableMenu.d.ts +1 -1
- package/lib/types/views/components/SheetTableSettingsDialog.d.ts +23 -0
- package/lib/umd/index.js +2 -2
- package/lib/umd/locale/ar-SA.js +1 -1
- package/lib/umd/locale/ca-ES.js +1 -1
- package/lib/umd/locale/de-DE.js +1 -1
- package/lib/umd/locale/en-US.js +1 -1
- package/lib/umd/locale/es-ES.js +1 -1
- package/lib/umd/locale/fa-IR.js +1 -1
- package/lib/umd/locale/fr-FR.js +1 -1
- package/lib/umd/locale/id-ID.js +1 -1
- package/lib/umd/locale/it-IT.js +1 -1
- package/lib/umd/locale/ja-JP.js +1 -1
- package/lib/umd/locale/ko-KR.js +1 -1
- package/lib/umd/locale/pl-PL.js +1 -1
- package/lib/umd/locale/pt-BR.js +1 -1
- package/lib/umd/locale/ru-RU.js +1 -1
- package/lib/umd/locale/sk-SK.js +1 -1
- package/lib/umd/locale/vi-VN.js +1 -1
- package/lib/umd/locale/zh-CN.js +1 -1
- package/lib/umd/locale/zh-HK.js +1 -1
- package/lib/umd/locale/zh-TW.js +1 -1
- package/package.json +15 -15
package/lib/cjs/index.js
CHANGED
|
@@ -37,6 +37,8 @@ const UNIVER_SHEET_TABLE_FILTER_PANEL_ID = "UNIVER_SHEET_Table_FILTER_PANEL_ID";
|
|
|
37
37
|
const TABLE_SELECTOR_DIALOG = "TABLE_SELECTOR_DIALOG";
|
|
38
38
|
const SHEET_TABLE_RENAME_DIALOG = "SHEET_TABLE_RENAME_DIALOG";
|
|
39
39
|
const SHEET_TABLE_RENAME_DIALOG_ID = "SHEET_TABLE_RENAME_DIALOG_ID";
|
|
40
|
+
const SHEET_TABLE_SETTINGS_DIALOG = "SHEET_TABLE_SETTINGS_DIALOG";
|
|
41
|
+
const SHEET_TABLE_SETTINGS_DIALOG_ID = "SHEET_TABLE_SETTINGS_DIALOG_ID";
|
|
40
42
|
const SHEET_TABLE_THEME_PANEL_ID = "SHEET_TABLE_THEME_PANEL_ID";
|
|
41
43
|
const SHEET_TABLE_THEME_PANEL = "SHEET_TABLE_THEME_PANEL";
|
|
42
44
|
const SHEET_TABLE_MENU = "SHEET_TABLE_MENU";
|
|
@@ -185,7 +187,8 @@ function getSheetTableRowColOperationHidden$(accessor) {
|
|
|
185
187
|
return sheetsSelectionsService.selectionMoveEnd$.pipe((0, rxjs.startWith)(sheetsSelectionsService.getCurrentSelections()), (0, rxjs.switchMap)((selections) => {
|
|
186
188
|
if (!selections.length || selections.length > 1) return (0, rxjs.of)(true);
|
|
187
189
|
const range = selections[0].range;
|
|
188
|
-
|
|
190
|
+
const isInTable = accessor.get(_univerjs_sheets_table.SheetsTableController).getContainerTableWithRange(workbook.getUnitId(), sheet.getSheetId(), range);
|
|
191
|
+
return (0, rxjs.of)(!isInTable);
|
|
189
192
|
}));
|
|
190
193
|
}));
|
|
191
194
|
}));
|
|
@@ -251,10 +254,10 @@ const menuSchema = {
|
|
|
251
254
|
//#endregion
|
|
252
255
|
//#region package.json
|
|
253
256
|
var name = "@univerjs/sheets-table-ui";
|
|
254
|
-
var version = "1.0.0
|
|
257
|
+
var version = "1.0.0";
|
|
255
258
|
|
|
256
259
|
//#endregion
|
|
257
|
-
//#region \0@oxc-project+runtime@0.
|
|
260
|
+
//#region \0@oxc-project+runtime@0.149.0/helpers/esm/typeof.js
|
|
258
261
|
function _typeof(o) {
|
|
259
262
|
"@babel/helpers - typeof";
|
|
260
263
|
return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o) {
|
|
@@ -265,7 +268,7 @@ function _typeof(o) {
|
|
|
265
268
|
}
|
|
266
269
|
|
|
267
270
|
//#endregion
|
|
268
|
-
//#region \0@oxc-project+runtime@0.
|
|
271
|
+
//#region \0@oxc-project+runtime@0.149.0/helpers/esm/toPrimitive.js
|
|
269
272
|
function toPrimitive(t, r) {
|
|
270
273
|
if ("object" != _typeof(t) || !t) return t;
|
|
271
274
|
var e = t[Symbol.toPrimitive];
|
|
@@ -278,14 +281,14 @@ function toPrimitive(t, r) {
|
|
|
278
281
|
}
|
|
279
282
|
|
|
280
283
|
//#endregion
|
|
281
|
-
//#region \0@oxc-project+runtime@0.
|
|
284
|
+
//#region \0@oxc-project+runtime@0.149.0/helpers/esm/toPropertyKey.js
|
|
282
285
|
function toPropertyKey(t) {
|
|
283
286
|
var i = toPrimitive(t, "string");
|
|
284
287
|
return "symbol" == _typeof(i) ? i : i + "";
|
|
285
288
|
}
|
|
286
289
|
|
|
287
290
|
//#endregion
|
|
288
|
-
//#region \0@oxc-project+runtime@0.
|
|
291
|
+
//#region \0@oxc-project+runtime@0.149.0/helpers/esm/defineProperty.js
|
|
289
292
|
function _defineProperty(e, r, t) {
|
|
290
293
|
return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, {
|
|
291
294
|
value: t,
|
|
@@ -296,7 +299,7 @@ function _defineProperty(e, r, t) {
|
|
|
296
299
|
}
|
|
297
300
|
|
|
298
301
|
//#endregion
|
|
299
|
-
//#region \0@oxc-project+runtime@0.
|
|
302
|
+
//#region \0@oxc-project+runtime@0.149.0/helpers/esm/decorateParam.js
|
|
300
303
|
function __decorateParam(paramIndex, decorator) {
|
|
301
304
|
return function(target, key) {
|
|
302
305
|
decorator(target, key, paramIndex);
|
|
@@ -304,7 +307,7 @@ function __decorateParam(paramIndex, decorator) {
|
|
|
304
307
|
}
|
|
305
308
|
|
|
306
309
|
//#endregion
|
|
307
|
-
//#region \0@oxc-project+runtime@0.
|
|
310
|
+
//#region \0@oxc-project+runtime@0.149.0/helpers/esm/decorate.js
|
|
308
311
|
function __decorate(decorators, target, key, desc) {
|
|
309
312
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
310
313
|
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
@@ -390,6 +393,37 @@ SheetsTableComponentController = __decorate([
|
|
|
390
393
|
__decorateParam(2, (0, _univerjs_core.Inject)(_univerjs_ui.IDialogService))
|
|
391
394
|
], SheetsTableComponentController);
|
|
392
395
|
|
|
396
|
+
//#endregion
|
|
397
|
+
//#region src/controllers/mobile/sheet-table-component.controller.ts
|
|
398
|
+
/**
|
|
399
|
+
* Copyright 2023-present DreamNum Co., Ltd.
|
|
400
|
+
*
|
|
401
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
402
|
+
* you may not use this file except in compliance with the License.
|
|
403
|
+
* You may obtain a copy of the License at
|
|
404
|
+
*
|
|
405
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
406
|
+
*
|
|
407
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
408
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
409
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
410
|
+
* See the License for the specific language governing permissions and
|
|
411
|
+
* limitations under the License.
|
|
412
|
+
*/
|
|
413
|
+
var SheetsTableMobileComponentController = class extends SheetsTableComponentController {
|
|
414
|
+
_openFilterPopup() {
|
|
415
|
+
if (!this.getCurrentTableFilterInfo()) throw new Error("[SheetsFilterUIController]: no filter model when opening filter popup!");
|
|
416
|
+
this._dialogService.open({
|
|
417
|
+
id: UNIVER_SHEET_TABLE_FILTER_PANEL_ID,
|
|
418
|
+
title: { title: "sheets-table-ui.filter.title" },
|
|
419
|
+
children: { label: SHEETS_TABLE_FILTER_PANEL_OPENED_KEY },
|
|
420
|
+
onClose: () => {
|
|
421
|
+
this._contextService.setContextValue(SHEETS_TABLE_FILTER_PANEL_OPENED_KEY, false);
|
|
422
|
+
}
|
|
423
|
+
});
|
|
424
|
+
}
|
|
425
|
+
};
|
|
426
|
+
|
|
393
427
|
//#endregion
|
|
394
428
|
//#region src/commands/operations/open-table-filter-dialog.opration.ts
|
|
395
429
|
const OpenTableFilterPanelOperation = {
|
|
@@ -412,6 +446,28 @@ const OpenTableFilterPanelOperation = {
|
|
|
412
446
|
}
|
|
413
447
|
};
|
|
414
448
|
|
|
449
|
+
//#endregion
|
|
450
|
+
//#region src/commands/operations/mobile/open-table-filter-dialog.operation.ts
|
|
451
|
+
const OpenTableFilterPanelMobileOperation = {
|
|
452
|
+
type: _univerjs_core.CommandType.OPERATION,
|
|
453
|
+
id: OpenTableFilterPanelOperation.id,
|
|
454
|
+
async handler(accessor, params) {
|
|
455
|
+
if (!params) return false;
|
|
456
|
+
const { row, col, unitId, subUnitId, tableId } = params;
|
|
457
|
+
const tableManager = accessor.get(_univerjs_sheets_table.TableManager);
|
|
458
|
+
const componentController = accessor.get(SheetsTableMobileComponentController);
|
|
459
|
+
if (!tableManager.getTable(unitId, tableId)) return false;
|
|
460
|
+
componentController.openOrToggleFilterPanel({
|
|
461
|
+
unitId,
|
|
462
|
+
subUnitId,
|
|
463
|
+
row,
|
|
464
|
+
tableId,
|
|
465
|
+
column: col
|
|
466
|
+
});
|
|
467
|
+
return true;
|
|
468
|
+
}
|
|
469
|
+
};
|
|
470
|
+
|
|
415
471
|
//#endregion
|
|
416
472
|
//#region src/config/config.ts
|
|
417
473
|
const SHEETS_TABLE_UI_PLUGIN_CONFIG_KEY = "sheets-table-ui.config";
|
|
@@ -435,7 +491,7 @@ let SheetsTableUiService = class SheetsTableUiService extends _univerjs_core.Dis
|
|
|
435
491
|
this._registerTableFilterChangeEvent();
|
|
436
492
|
}
|
|
437
493
|
_registerTableFilterChangeEvent() {
|
|
438
|
-
this._commandService.onCommandExecuted((command) => {
|
|
494
|
+
this.disposeWithMe(this._commandService.onCommandExecuted((command) => {
|
|
439
495
|
if (command.id === _univerjs_sheets.SetRangeValuesMutation.id) {
|
|
440
496
|
const { unitId, subUnitId, cellValue } = command.params;
|
|
441
497
|
const tables = this._tableManager.getTablesBySubunitId(unitId, subUnitId);
|
|
@@ -448,20 +504,19 @@ let SheetsTableUiService = class SheetsTableUiService extends _univerjs_core.Dis
|
|
|
448
504
|
});
|
|
449
505
|
if (overlapTable) {
|
|
450
506
|
const colIndex = col - overlapTable.getRange().startColumn;
|
|
451
|
-
this._itemsCache.delete(overlapTable.getId()
|
|
507
|
+
this._itemsCache.delete(this._getItemsCacheKey(unitId, overlapTable.getId(), colIndex));
|
|
452
508
|
}
|
|
453
509
|
});
|
|
454
|
-
} else if (command.id === _univerjs_sheets_table.
|
|
510
|
+
} else if (command.id === _univerjs_sheets_table.SetSheetTableFilterMutation.id) {
|
|
455
511
|
const { unitId, tableId } = command.params;
|
|
456
512
|
const table = this._tableManager.getTable(unitId, tableId);
|
|
457
513
|
if (!table) return;
|
|
458
514
|
const subUnitId = table.getSubunitId();
|
|
459
515
|
this._tableManager.getTablesBySubunitId(unitId, subUnitId).forEach((table) => {
|
|
460
|
-
|
|
461
|
-
for (let i = range.startColumn; i <= range.endColumn; i++) this._itemsCache.delete(table.getId() + i);
|
|
516
|
+
for (let columnIndex = 0; columnIndex < table.getColumnsCount(); columnIndex++) this._itemsCache.delete(this._getItemsCacheKey(unitId, table.getId(), columnIndex));
|
|
462
517
|
});
|
|
463
518
|
}
|
|
464
|
-
});
|
|
519
|
+
}));
|
|
465
520
|
}
|
|
466
521
|
getTableFilterPanelInitProps(unitId, subUnitId, tableId, column) {
|
|
467
522
|
const table = this._tableManager.getTable(unitId, tableId);
|
|
@@ -481,10 +536,43 @@ let SheetsTableUiService = class SheetsTableUiService extends _univerjs_core.Dis
|
|
|
481
536
|
const checkedItems = [];
|
|
482
537
|
if (table) {
|
|
483
538
|
const filter = table.getTableFilterColumn(columnIndex);
|
|
484
|
-
if (
|
|
539
|
+
if ((0, _univerjs_sheets_table.isManualTableFilter)(filter)) checkedItems.push(...filter.values.map((value) => value === _univerjs_sheets_table.TABLE_FILTER_EMPTY_VALUE ? this._localeService.t("sheets-table-ui.condition.empty") : value));
|
|
540
|
+
else if ((0, _univerjs_sheets_table.isRecordTableFilter)(filter)) {
|
|
541
|
+
const accepts = (0, _univerjs_sheets_table.compileTableRecordFilter)(filter);
|
|
542
|
+
const items = this.getTableFilterItems(unitId, table.getSubunitId(), tableId, columnIndex);
|
|
543
|
+
checkedItems.push(...items.data.filter((item) => item.recordValue && accepts(item.recordValue)).map((item) => item.valueKey));
|
|
544
|
+
}
|
|
485
545
|
}
|
|
486
546
|
return checkedItems;
|
|
487
547
|
}
|
|
548
|
+
createItemFilter(unitId, tableId, columnIndex, items, checkedItemSet, selectAllRequested) {
|
|
549
|
+
const table = this._tableManager.getTable(unitId, tableId);
|
|
550
|
+
const currentFilter = table === null || table === void 0 ? void 0 : table.getTableFilterColumn(columnIndex);
|
|
551
|
+
if (selectAllRequested) return;
|
|
552
|
+
if (!(0, _univerjs_sheets_table.isRecordTableFilter)(currentFilter)) {
|
|
553
|
+
const emptyLabel = this._localeService.t("sheets-table-ui.condition.empty");
|
|
554
|
+
const values = items.data.filter((item) => checkedItemSet.has(item.valueKey ?? item.title)).map((item) => item.title === emptyLabel ? _univerjs_sheets_table.TABLE_FILTER_EMPTY_VALUE : item.title);
|
|
555
|
+
return values.length === items.data.length ? void 0 : {
|
|
556
|
+
filterType: _univerjs_sheets_table.TableColumnFilterTypeEnum.manual,
|
|
557
|
+
values
|
|
558
|
+
};
|
|
559
|
+
}
|
|
560
|
+
const accepts = (0, _univerjs_sheets_table.compileTableRecordFilter)(currentFilter);
|
|
561
|
+
const recordItems = items.data.filter((item) => item.valueKey && item.recordValue);
|
|
562
|
+
if (recordItems.every((item) => checkedItemSet.has(item.valueKey) === accepts(item.recordValue))) return currentFilter;
|
|
563
|
+
const candidateKeys = new Set(recordItems.map((item) => item.valueKey));
|
|
564
|
+
const values = currentFilter.values.filter((value) => !candidateKeys.has((0, _univerjs_sheets_table.getTableRecordValueKey)(value))).map((value) => value.type === _univerjs_core.RecordValueType.Blank ? { type: _univerjs_core.RecordValueType.Blank } : { ...value });
|
|
565
|
+
recordItems.forEach((item) => {
|
|
566
|
+
const selected = checkedItemSet.has(item.valueKey);
|
|
567
|
+
if (currentFilter.mode === _univerjs_core.FilterSelectionMode.Include === selected) values.push(item.recordValue);
|
|
568
|
+
});
|
|
569
|
+
if (currentFilter.mode === _univerjs_core.FilterSelectionMode.Exclude && values.length === 0) return;
|
|
570
|
+
return {
|
|
571
|
+
filterType: _univerjs_sheets_table.TableColumnFilterTypeEnum.record,
|
|
572
|
+
mode: currentFilter.mode,
|
|
573
|
+
values
|
|
574
|
+
};
|
|
575
|
+
}
|
|
488
576
|
async setTableFilter(unitId, tableId, columnIndex, tableFilter) {
|
|
489
577
|
if (!this._tableManager.getTable(unitId, tableId)) return false;
|
|
490
578
|
const setTableFilterParams = {
|
|
@@ -536,13 +624,14 @@ let SheetsTableUiService = class SheetsTableUiService extends _univerjs_core.Dis
|
|
|
536
624
|
}
|
|
537
625
|
getTableFilterItems(unitId, subUnitId, tableId, columnIndex) {
|
|
538
626
|
var _this$_univerInstance2;
|
|
539
|
-
|
|
627
|
+
const table = this._tableManager.getTable(unitId, tableId);
|
|
628
|
+
if (!table) return {
|
|
540
629
|
data: [],
|
|
541
630
|
itemsCountMap: /* @__PURE__ */ new Map(),
|
|
542
631
|
allItemsCount: 0
|
|
543
632
|
};
|
|
544
|
-
const
|
|
545
|
-
if (
|
|
633
|
+
const cacheKey = this._getItemsCacheKey(unitId, tableId, columnIndex);
|
|
634
|
+
if (this._itemsCache.has(cacheKey)) return this._itemsCache.get(cacheKey) || {
|
|
546
635
|
data: [],
|
|
547
636
|
itemsCountMap: /* @__PURE__ */ new Map(),
|
|
548
637
|
allItemsCount: 0
|
|
@@ -557,21 +646,29 @@ let SheetsTableUiService = class SheetsTableUiService extends _univerjs_core.Dis
|
|
|
557
646
|
};
|
|
558
647
|
const data = [];
|
|
559
648
|
const map = /* @__PURE__ */ new Map();
|
|
649
|
+
const currentFilter = table.getTableFilterColumn(columnIndex);
|
|
650
|
+
const useRecordValues = (0, _univerjs_sheets_table.isRecordTableFilter)(currentFilter);
|
|
560
651
|
const filteredRowsByOtherColumns = this._getFilteredRowsByOtherColumns(worksheet, tableId, unitId, columnIndex);
|
|
561
652
|
let allItemsCount = 0;
|
|
562
653
|
for (let row = startRow; row <= endRow; row++) {
|
|
563
654
|
if (filteredRowsByOtherColumns.has(row)) continue;
|
|
564
655
|
let stringItem = this._sheetTableService.getCellValueWithConditionType(worksheet, row, column);
|
|
565
656
|
if (stringItem == null) stringItem = this._localeService.t("sheets-table-ui.condition.empty");
|
|
566
|
-
if (
|
|
657
|
+
if (useRecordValues && typeof stringItem !== "string") stringItem = String(stringItem);
|
|
658
|
+
const recordValue = useRecordValues ? (0, _univerjs_sheets_table.getTableRecordValue)(worksheet, row, column) : void 0;
|
|
659
|
+
const valueKey = recordValue ? (0, _univerjs_sheets_table.getTableRecordValueKey)(recordValue) : void 0;
|
|
660
|
+
const itemKey = valueKey ?? stringItem;
|
|
661
|
+
if (!map.has(itemKey)) data.push({
|
|
567
662
|
title: stringItem,
|
|
568
|
-
key: `${column}_${row}`,
|
|
569
|
-
leaf: true
|
|
663
|
+
key: valueKey ?? `${column}_${row}`,
|
|
664
|
+
leaf: true,
|
|
665
|
+
valueKey,
|
|
666
|
+
recordValue
|
|
570
667
|
});
|
|
571
668
|
allItemsCount++;
|
|
572
|
-
map.set(
|
|
669
|
+
map.set(itemKey, (map.get(itemKey) || 0) + 1);
|
|
573
670
|
}
|
|
574
|
-
this._itemsCache.set(
|
|
671
|
+
this._itemsCache.set(cacheKey, {
|
|
575
672
|
data,
|
|
576
673
|
itemsCountMap: map,
|
|
577
674
|
allItemsCount
|
|
@@ -582,6 +679,15 @@ let SheetsTableUiService = class SheetsTableUiService extends _univerjs_core.Dis
|
|
|
582
679
|
allItemsCount
|
|
583
680
|
};
|
|
584
681
|
}
|
|
682
|
+
_getItemsCacheKey(unitId, tableId, columnIndex) {
|
|
683
|
+
var _this$_tableManager$g;
|
|
684
|
+
const columnId = (_this$_tableManager$g = this._tableManager.getTable(unitId, tableId)) === null || _this$_tableManager$g === void 0 || (_this$_tableManager$g = _this$_tableManager$g.getTableColumnByIndex(columnIndex)) === null || _this$_tableManager$g === void 0 ? void 0 : _this$_tableManager$g.id;
|
|
685
|
+
return JSON.stringify([
|
|
686
|
+
unitId,
|
|
687
|
+
tableId,
|
|
688
|
+
columnId ?? columnIndex
|
|
689
|
+
]);
|
|
690
|
+
}
|
|
585
691
|
_getFilteredRowsByOtherColumns(worksheet, tableId, unitId, columnIndex) {
|
|
586
692
|
const filteredRows = /* @__PURE__ */ new Set();
|
|
587
693
|
const table = this._tableManager.getTable(unitId, tableId);
|
|
@@ -946,9 +1052,10 @@ const datePickerSet = /* @__PURE__ */ new Set([
|
|
|
946
1052
|
function getSubComponentType(type, compare) {
|
|
947
1053
|
if (!compare) return "None";
|
|
948
1054
|
if (type === _univerjs_sheets_table.TableConditionTypeEnum.String) return "Input";
|
|
949
|
-
else if (type === _univerjs_sheets_table.TableConditionTypeEnum.Number)
|
|
950
|
-
|
|
951
|
-
|
|
1055
|
+
else if (type === _univerjs_sheets_table.TableConditionTypeEnum.Number) {
|
|
1056
|
+
if (compare === _univerjs_sheets_table.TableNumberCompareTypeEnum.Between || compare === _univerjs_sheets_table.TableNumberCompareTypeEnum.NotBetween) return "Inputs";
|
|
1057
|
+
else return "Input";
|
|
1058
|
+
} else if (type === _univerjs_sheets_table.TableConditionTypeEnum.Date) {
|
|
952
1059
|
if (compare === _univerjs_sheets_table.TableDateCompareTypeEnum.Between || compare === _univerjs_sheets_table.TableDateCompareTypeEnum.NotBetween) return "DateRange";
|
|
953
1060
|
else if (compare === _univerjs_sheets_table.TableDateCompareTypeEnum.Quarter || compare === _univerjs_sheets_table.TableDateCompareTypeEnum.Month) return "Select";
|
|
954
1061
|
else if (datePickerSet.has(compare)) return "DatePicker";
|
|
@@ -964,56 +1071,58 @@ function getInitConditionInfo(tableFilter) {
|
|
|
964
1071
|
};
|
|
965
1072
|
const filterInfo = tableFilter.filterInfo;
|
|
966
1073
|
const { conditionType, compareType } = filterInfo;
|
|
967
|
-
if (conditionType === _univerjs_sheets_table.TableConditionTypeEnum.Date)
|
|
968
|
-
|
|
969
|
-
|
|
970
|
-
|
|
1074
|
+
if (conditionType === _univerjs_sheets_table.TableConditionTypeEnum.Date) {
|
|
1075
|
+
if (compareType === _univerjs_sheets_table.TableDateCompareTypeEnum.Between || compareType === _univerjs_sheets_table.TableDateCompareTypeEnum.NotBetween) {
|
|
1076
|
+
let dateRange;
|
|
1077
|
+
if (Array.isArray(filterInfo.expectedValue)) dateRange = filterInfo.expectedValue.map((i) => typeof i === "string" ? new Date(i) : i);
|
|
1078
|
+
return {
|
|
1079
|
+
type: conditionType,
|
|
1080
|
+
compare: compareType,
|
|
1081
|
+
info: { dateRange }
|
|
1082
|
+
};
|
|
1083
|
+
} else if (compareType === _univerjs_sheets_table.TableDateCompareTypeEnum.Today || compareType === _univerjs_sheets_table.TableDateCompareTypeEnum.Yesterday || compareType === _univerjs_sheets_table.TableDateCompareTypeEnum.Tomorrow || compareType === _univerjs_sheets_table.TableDateCompareTypeEnum.ThisWeek || compareType === _univerjs_sheets_table.TableDateCompareTypeEnum.LastWeek || compareType === _univerjs_sheets_table.TableDateCompareTypeEnum.NextWeek || compareType === _univerjs_sheets_table.TableDateCompareTypeEnum.ThisMonth || compareType === _univerjs_sheets_table.TableDateCompareTypeEnum.LastMonth || compareType === _univerjs_sheets_table.TableDateCompareTypeEnum.NextMonth || compareType === _univerjs_sheets_table.TableDateCompareTypeEnum.ThisYear || compareType === _univerjs_sheets_table.TableDateCompareTypeEnum.LastYear || compareType === _univerjs_sheets_table.TableDateCompareTypeEnum.NextYear) return {
|
|
971
1084
|
type: conditionType,
|
|
972
1085
|
compare: compareType,
|
|
973
|
-
info: {
|
|
1086
|
+
info: {}
|
|
974
1087
|
};
|
|
975
|
-
|
|
976
|
-
|
|
977
|
-
|
|
978
|
-
|
|
979
|
-
|
|
980
|
-
|
|
981
|
-
|
|
982
|
-
|
|
983
|
-
|
|
984
|
-
|
|
985
|
-
|
|
986
|
-
|
|
1088
|
+
else if (datePickerSet.has(compareType)) {
|
|
1089
|
+
let date;
|
|
1090
|
+
if (typeof filterInfo.expectedValue === "string") date = new Date(filterInfo.expectedValue);
|
|
1091
|
+
else if (Array.isArray(filterInfo.expectedValue)) {
|
|
1092
|
+
for (let i = 0; i < filterInfo.expectedValue.length; i++) if (typeof filterInfo.expectedValue[i] === "string") filterInfo.expectedValue[i] = new Date(filterInfo.expectedValue[i]);
|
|
1093
|
+
}
|
|
1094
|
+
return {
|
|
1095
|
+
type: conditionType,
|
|
1096
|
+
compare: compareType,
|
|
1097
|
+
info: { date }
|
|
1098
|
+
};
|
|
1099
|
+
} else if ((/* @__PURE__ */ new Set([
|
|
1100
|
+
_univerjs_sheets_table.TableDateCompareTypeEnum.Q1,
|
|
1101
|
+
_univerjs_sheets_table.TableDateCompareTypeEnum.Q2,
|
|
1102
|
+
_univerjs_sheets_table.TableDateCompareTypeEnum.Q3,
|
|
1103
|
+
_univerjs_sheets_table.TableDateCompareTypeEnum.Q4
|
|
1104
|
+
])).has(compareType)) return {
|
|
1105
|
+
type: conditionType,
|
|
1106
|
+
compare: _univerjs_sheets_table.TableDateCompareTypeEnum.Quarter,
|
|
1107
|
+
info: { dateSelect: filterInfo.compareType }
|
|
1108
|
+
};
|
|
1109
|
+
else return {
|
|
1110
|
+
type: conditionType,
|
|
1111
|
+
compare: _univerjs_sheets_table.TableDateCompareTypeEnum.Month,
|
|
1112
|
+
info: { dateSelect: filterInfo.compareType }
|
|
1113
|
+
};
|
|
1114
|
+
} else if (conditionType === _univerjs_sheets_table.TableConditionTypeEnum.Number) {
|
|
1115
|
+
if (compareType === _univerjs_sheets_table.TableNumberCompareTypeEnum.Between || compareType === _univerjs_sheets_table.TableNumberCompareTypeEnum.NotBetween) return {
|
|
987
1116
|
type: conditionType,
|
|
988
1117
|
compare: compareType,
|
|
989
|
-
info: {
|
|
1118
|
+
info: { numberRange: filterInfo.expectedValue }
|
|
990
1119
|
};
|
|
991
|
-
|
|
992
|
-
|
|
993
|
-
|
|
994
|
-
|
|
995
|
-
|
|
996
|
-
|
|
997
|
-
type: conditionType,
|
|
998
|
-
compare: _univerjs_sheets_table.TableDateCompareTypeEnum.Quarter,
|
|
999
|
-
info: { dateSelect: filterInfo.compareType }
|
|
1000
|
-
};
|
|
1001
|
-
else return {
|
|
1002
|
-
type: conditionType,
|
|
1003
|
-
compare: _univerjs_sheets_table.TableDateCompareTypeEnum.Month,
|
|
1004
|
-
info: { dateSelect: filterInfo.compareType }
|
|
1005
|
-
};
|
|
1006
|
-
else if (conditionType === _univerjs_sheets_table.TableConditionTypeEnum.Number) if (compareType === _univerjs_sheets_table.TableNumberCompareTypeEnum.Between || compareType === _univerjs_sheets_table.TableNumberCompareTypeEnum.NotBetween) return {
|
|
1007
|
-
type: conditionType,
|
|
1008
|
-
compare: compareType,
|
|
1009
|
-
info: { numberRange: filterInfo.expectedValue }
|
|
1010
|
-
};
|
|
1011
|
-
else return {
|
|
1012
|
-
type: conditionType,
|
|
1013
|
-
compare: compareType,
|
|
1014
|
-
info: { number: filterInfo.expectedValue }
|
|
1015
|
-
};
|
|
1016
|
-
else if (conditionType === _univerjs_sheets_table.TableConditionTypeEnum.String) return {
|
|
1120
|
+
else return {
|
|
1121
|
+
type: conditionType,
|
|
1122
|
+
compare: compareType,
|
|
1123
|
+
info: { number: filterInfo.expectedValue }
|
|
1124
|
+
};
|
|
1125
|
+
} else if (conditionType === _univerjs_sheets_table.TableConditionTypeEnum.String) return {
|
|
1017
1126
|
type: conditionType,
|
|
1018
1127
|
compare: compareType,
|
|
1019
1128
|
info: { string: filterInfo.expectedValue }
|
|
@@ -1047,11 +1156,12 @@ function MobileSheetTableConditionPanel(props) {
|
|
|
1047
1156
|
const compare = value[1];
|
|
1048
1157
|
if (compare) setConditionVisible(false);
|
|
1049
1158
|
const info = {};
|
|
1050
|
-
if (type === _univerjs_sheets_table.TableConditionTypeEnum.Date)
|
|
1051
|
-
|
|
1052
|
-
|
|
1053
|
-
|
|
1054
|
-
|
|
1159
|
+
if (type === _univerjs_sheets_table.TableConditionTypeEnum.Date) {
|
|
1160
|
+
if (compare === _univerjs_sheets_table.TableDateCompareTypeEnum.Quarter) info.dateSelect = _univerjs_sheets_table.TableDateCompareTypeEnum.Q1;
|
|
1161
|
+
else if (compare === _univerjs_sheets_table.TableDateCompareTypeEnum.Month) info.dateSelect = _univerjs_sheets_table.TableDateCompareTypeEnum.M1;
|
|
1162
|
+
else if (datePickerSet.has(compare)) info.date = /* @__PURE__ */ new Date();
|
|
1163
|
+
else info.dateRange = [/* @__PURE__ */ new Date(), /* @__PURE__ */ new Date()];
|
|
1164
|
+
} else if (type === _univerjs_sheets_table.TableConditionTypeEnum.Number) info.number = 0;
|
|
1055
1165
|
else if (type === _univerjs_sheets_table.TableConditionTypeEnum.String) info.string = "";
|
|
1056
1166
|
handleConditionInfo(info, type, compare ?? _univerjs_sheets_table.TableStringCompareTypeEnum.Equal);
|
|
1057
1167
|
}
|
|
@@ -1146,28 +1256,33 @@ function MobileSheetTableConditionPanel(props) {
|
|
|
1146
1256
|
//#endregion
|
|
1147
1257
|
//#region src/views/components/MobileSheetTableItemsFilterPanel.tsx
|
|
1148
1258
|
function MobileSheetTableItemsFilterPanel(props) {
|
|
1149
|
-
const { items, checkedItemSet, setCheckedItemSet } = props;
|
|
1259
|
+
const { items, checkedItemSet, setCheckedItemSet, onSelectAllChange, onItemChange } = props;
|
|
1150
1260
|
const localeService = (0, _univerjs_ui.useDependency)(_univerjs_core.LocaleService);
|
|
1151
1261
|
const [searchText, setSearchText] = (0, react.useState)("");
|
|
1152
1262
|
const displayItems = (0, react.useMemo)(() => {
|
|
1153
1263
|
const normalizedSearchText = searchText.toLowerCase();
|
|
1154
1264
|
return normalizedSearchText ? items.data.filter((item) => String(item.title).toLowerCase().includes(normalizedSearchText)) : items.data;
|
|
1155
1265
|
}, [items.data, searchText]);
|
|
1156
|
-
const allDisplayedChecked = displayItems.length > 0 && displayItems.every((item) => checkedItemSet.has(item.title));
|
|
1157
|
-
const someDisplayedChecked = displayItems.some((item) => checkedItemSet.has(item.title));
|
|
1266
|
+
const allDisplayedChecked = displayItems.length > 0 && displayItems.every((item) => checkedItemSet.has(item.valueKey ?? item.title));
|
|
1267
|
+
const someDisplayedChecked = displayItems.some((item) => checkedItemSet.has(item.valueKey ?? item.title));
|
|
1158
1268
|
function toggleAllDisplayed() {
|
|
1159
1269
|
setCheckedItemSet((current) => {
|
|
1160
1270
|
const next = new Set(current);
|
|
1161
|
-
for (const item of displayItems)
|
|
1162
|
-
|
|
1271
|
+
for (const item of displayItems) {
|
|
1272
|
+
const itemKey = item.valueKey ?? item.title;
|
|
1273
|
+
if (allDisplayedChecked) next.delete(itemKey);
|
|
1274
|
+
else next.add(itemKey);
|
|
1275
|
+
}
|
|
1163
1276
|
return next;
|
|
1164
1277
|
});
|
|
1278
|
+
onSelectAllChange === null || onSelectAllChange === void 0 || onSelectAllChange(!allDisplayedChecked && searchText === "");
|
|
1165
1279
|
}
|
|
1166
|
-
function toggleItem(
|
|
1280
|
+
function toggleItem(itemKey) {
|
|
1281
|
+
onItemChange === null || onItemChange === void 0 || onItemChange();
|
|
1167
1282
|
setCheckedItemSet((current) => {
|
|
1168
1283
|
const next = new Set(current);
|
|
1169
|
-
if (next.has(
|
|
1170
|
-
else next.add(
|
|
1284
|
+
if (next.has(itemKey)) next.delete(itemKey);
|
|
1285
|
+
else next.add(itemKey);
|
|
1171
1286
|
return next;
|
|
1172
1287
|
});
|
|
1173
1288
|
}
|
|
@@ -1190,24 +1305,27 @@ function MobileSheetTableItemsFilterPanel(props) {
|
|
|
1190
1305
|
onChange: toggleAllDisplayed,
|
|
1191
1306
|
children: localeService.t("sheets-table-ui.filter.select-all")
|
|
1192
1307
|
})
|
|
1193
|
-
}), displayItems.map((item) =>
|
|
1194
|
-
|
|
1195
|
-
|
|
1196
|
-
className: "univer-
|
|
1197
|
-
|
|
1198
|
-
|
|
1199
|
-
|
|
1200
|
-
|
|
1201
|
-
children:
|
|
1202
|
-
className: "univer-min-w-0 univer-flex-1 univer-
|
|
1203
|
-
children:
|
|
1204
|
-
|
|
1205
|
-
|
|
1206
|
-
|
|
1207
|
-
|
|
1308
|
+
}), displayItems.map((item) => {
|
|
1309
|
+
const itemKey = item.valueKey ?? item.title;
|
|
1310
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
1311
|
+
className: "univer-border-0 univer-border-b univer-border-solid univer-border-gray-200 univer-px-4 last:univer-border-b-0 dark:!univer-border-gray-700",
|
|
1312
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_univerjs_design.Checkbox, {
|
|
1313
|
+
className: "univer-flex univer-min-h-12 univer-items-center",
|
|
1314
|
+
checked: checkedItemSet.has(itemKey),
|
|
1315
|
+
onChange: () => toggleItem(itemKey),
|
|
1316
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
|
|
1317
|
+
className: "univer-flex univer-min-w-0 univer-flex-1 univer-items-center univer-gap-2",
|
|
1318
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
1319
|
+
className: "univer-min-w-0 univer-flex-1 univer-truncate",
|
|
1320
|
+
children: item.title
|
|
1321
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
1322
|
+
className: "univer-shrink-0 univer-text-gray-400",
|
|
1323
|
+
children: `(${items.itemsCountMap.get(itemKey) ?? 0})`
|
|
1324
|
+
})]
|
|
1325
|
+
})
|
|
1208
1326
|
})
|
|
1209
|
-
})
|
|
1210
|
-
}
|
|
1327
|
+
}, item.key);
|
|
1328
|
+
})]
|
|
1211
1329
|
})]
|
|
1212
1330
|
});
|
|
1213
1331
|
}
|
|
@@ -1229,7 +1347,7 @@ const FILTER_BY_OPTIONS$1 = [
|
|
|
1229
1347
|
}
|
|
1230
1348
|
];
|
|
1231
1349
|
function MobileSheetTableFilterPanel() {
|
|
1232
|
-
const tableFilterPanelInfo = (0, _univerjs_ui.useDependency)(
|
|
1350
|
+
const tableFilterPanelInfo = (0, _univerjs_ui.useDependency)(SheetsTableMobileComponentController).getCurrentTableFilterInfo();
|
|
1233
1351
|
if (!tableFilterPanelInfo) return null;
|
|
1234
1352
|
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(MobileSheetTableFilterPanelContent, { tableFilterPanelInfo });
|
|
1235
1353
|
}
|
|
@@ -1242,7 +1360,7 @@ function MobileSheetTableFilterPanelContent(props) {
|
|
|
1242
1360
|
const commandService = (0, _univerjs_ui.useDependency)(_univerjs_core.ICommandService);
|
|
1243
1361
|
const permissionService = (0, _univerjs_ui.useDependency)(_univerjs_core.IPermissionService);
|
|
1244
1362
|
const undoRedoService = (0, _univerjs_ui.useDependency)(_univerjs_core.IUndoRedoService);
|
|
1245
|
-
const sheetsTableComponentController = (0, _univerjs_ui.useDependency)(
|
|
1363
|
+
const sheetsTableComponentController = (0, _univerjs_ui.useDependency)(SheetsTableMobileComponentController);
|
|
1246
1364
|
const [detailFilterBy, setDetailFilterBy] = (0, react.useState)(null);
|
|
1247
1365
|
const [drawerSnap, setDrawerSnap] = (0, react.useState)("expanded");
|
|
1248
1366
|
const layerRef = (0, react.useRef)(null);
|
|
@@ -1250,7 +1368,8 @@ function MobileSheetTableFilterPanelContent(props) {
|
|
|
1250
1368
|
const currentTable = tableManager.getTable(unitId, tableId);
|
|
1251
1369
|
const items = tableUiService.getTableFilterItems(unitId, subUnitId, tableId, columnIndex);
|
|
1252
1370
|
const checkedItems = tableUiService.getTableFilterCheckedItems(unitId, tableId, columnIndex);
|
|
1253
|
-
const [checkedItemSet, setCheckedItemSet] = (0, react.useState)(() => new Set((tableFilter === null || tableFilter === void 0 ? void 0 : tableFilter.filterType) === _univerjs_sheets_table.TableColumnFilterTypeEnum.manual ? checkedItems : items.data.map((item) => item.title)));
|
|
1371
|
+
const [checkedItemSet, setCheckedItemSet] = (0, react.useState)(() => new Set((tableFilter === null || tableFilter === void 0 ? void 0 : tableFilter.filterType) === _univerjs_sheets_table.TableColumnFilterTypeEnum.manual || (tableFilter === null || tableFilter === void 0 ? void 0 : tableFilter.filterType) === _univerjs_sheets_table.TableColumnFilterTypeEnum.record ? checkedItems : items.data.map((item) => item.valueKey ?? item.title)));
|
|
1372
|
+
const [selectAllRequested, setSelectAllRequested] = (0, react.useState)(false);
|
|
1254
1373
|
const [conditionInfo, setConditionInfo] = (0, react.useState)(() => getInitConditionInfo(tableFilter));
|
|
1255
1374
|
const [colors, setColors] = (0, react.useState)(() => tableUiService.getTableFilterColors(unitId, subUnitId, tableId, columnIndex));
|
|
1256
1375
|
const tableRange = currentTable.getRange();
|
|
@@ -1307,14 +1426,8 @@ function MobileSheetTableFilterPanelContent(props) {
|
|
|
1307
1426
|
}
|
|
1308
1427
|
async function applyFilter() {
|
|
1309
1428
|
let filter;
|
|
1310
|
-
if (detailFilterBy === "items")
|
|
1311
|
-
|
|
1312
|
-
const values = items.data.filter((item) => checkedItemSet.has(item.title)).map((item) => item.title === emptyLabel ? _univerjs_sheets_table.TABLE_FILTER_EMPTY_VALUE : item.title);
|
|
1313
|
-
filter = values.length === items.data.length ? void 0 : {
|
|
1314
|
-
filterType: _univerjs_sheets_table.TableColumnFilterTypeEnum.manual,
|
|
1315
|
-
values
|
|
1316
|
-
};
|
|
1317
|
-
} else if (detailFilterBy === "color") {
|
|
1429
|
+
if (detailFilterBy === "items") filter = tableUiService.createItemFilter(unitId, tableId, columnIndex, items, checkedItemSet, selectAllRequested);
|
|
1430
|
+
else if (detailFilterBy === "color") {
|
|
1318
1431
|
const cellFillColors = colors.cellFillColors.filter((item) => item.checked).map((item) => item.color);
|
|
1319
1432
|
const cellTextColors = colors.cellTextColors.filter((item) => item.checked).map((item) => item.color);
|
|
1320
1433
|
if (cellFillColors.length) filter = {
|
|
@@ -1342,8 +1455,10 @@ function MobileSheetTableFilterPanelContent(props) {
|
|
|
1342
1455
|
if (await tableUiService.setTableFilter(unitId, tableId, columnIndex, void 0)) closePanel();
|
|
1343
1456
|
}
|
|
1344
1457
|
function openDetail(filterBy) {
|
|
1345
|
-
if (filterBy === "items")
|
|
1346
|
-
|
|
1458
|
+
if (filterBy === "items") {
|
|
1459
|
+
setCheckedItemSet(new Set((tableFilter === null || tableFilter === void 0 ? void 0 : tableFilter.filterType) === _univerjs_sheets_table.TableColumnFilterTypeEnum.manual || (tableFilter === null || tableFilter === void 0 ? void 0 : tableFilter.filterType) === _univerjs_sheets_table.TableColumnFilterTypeEnum.record ? checkedItems : items.data.map((item) => item.valueKey ?? item.title)));
|
|
1460
|
+
setSelectAllRequested(false);
|
|
1461
|
+
} else if (filterBy === "color") setColors(tableUiService.getTableFilterColors(unitId, subUnitId, tableId, columnIndex));
|
|
1347
1462
|
else if (filterBy === "condition") setConditionInfo(getInitConditionInfo(tableFilter));
|
|
1348
1463
|
setDetailFilterBy(filterBy);
|
|
1349
1464
|
setDrawerSnap("expanded");
|
|
@@ -1400,7 +1515,9 @@ function MobileSheetTableFilterPanelContent(props) {
|
|
|
1400
1515
|
detailFilterBy === "items" && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(MobileSheetTableItemsFilterPanel, {
|
|
1401
1516
|
items,
|
|
1402
1517
|
checkedItemSet,
|
|
1403
|
-
setCheckedItemSet
|
|
1518
|
+
setCheckedItemSet,
|
|
1519
|
+
onSelectAllChange: setSelectAllRequested,
|
|
1520
|
+
onItemChange: () => setSelectAllRequested(false)
|
|
1404
1521
|
}),
|
|
1405
1522
|
detailFilterBy === "color" && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(MobileSheetTableColorFilterPanel, {
|
|
1406
1523
|
colors,
|
|
@@ -1476,6 +1593,7 @@ const ACTIONS = [
|
|
|
1476
1593
|
"rename",
|
|
1477
1594
|
"update-range",
|
|
1478
1595
|
"set-theme",
|
|
1596
|
+
"settings",
|
|
1479
1597
|
"delete"
|
|
1480
1598
|
];
|
|
1481
1599
|
function MobileSheetTableMenu({ menu }) {
|
|
@@ -1683,6 +1801,198 @@ function MobileSheetTableSelector(props) {
|
|
|
1683
1801
|
});
|
|
1684
1802
|
}
|
|
1685
1803
|
|
|
1804
|
+
//#endregion
|
|
1805
|
+
//#region src/views/components/SheetTableCalculatedColumn.tsx
|
|
1806
|
+
function SheetTableCalculatedColumn({ unitId, tableId }) {
|
|
1807
|
+
var _columns$, _columns$2, _table$getColumn2;
|
|
1808
|
+
const localeService = (0, _univerjs_ui.useDependency)(_univerjs_core.LocaleService);
|
|
1809
|
+
const commands = (0, _univerjs_ui.useDependency)(_univerjs_core.ICommandService);
|
|
1810
|
+
const table = (0, _univerjs_ui.useDependency)(_univerjs_sheets_table.TableManager).getTableById(unitId, tableId);
|
|
1811
|
+
const columns = (table === null || table === void 0 ? void 0 : table.getTableInfo().columns) ?? [];
|
|
1812
|
+
const [columnId, setColumnId] = (0, react.useState)(((_columns$ = columns[0]) === null || _columns$ === void 0 ? void 0 : _columns$.id) ?? "");
|
|
1813
|
+
const [formula, setFormula] = (0, react.useState)(((_columns$2 = columns[0]) === null || _columns$2 === void 0 ? void 0 : _columns$2.formula) ?? "");
|
|
1814
|
+
const [result, setResult] = (0, react.useState)();
|
|
1815
|
+
const range = table === null || table === void 0 ? void 0 : table.getTableFilterRange();
|
|
1816
|
+
const apply = (value) => {
|
|
1817
|
+
try {
|
|
1818
|
+
const success = commands.syncExecuteCommand(_univerjs_sheets_table.SetSheetTableCommand.id, {
|
|
1819
|
+
unitId,
|
|
1820
|
+
tableId,
|
|
1821
|
+
calculatedColumn: {
|
|
1822
|
+
columnId,
|
|
1823
|
+
formula: value
|
|
1824
|
+
}
|
|
1825
|
+
});
|
|
1826
|
+
setResult(success);
|
|
1827
|
+
if (success) setFormula(value);
|
|
1828
|
+
} catch {
|
|
1829
|
+
setResult(false);
|
|
1830
|
+
}
|
|
1831
|
+
};
|
|
1832
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("fieldset", {
|
|
1833
|
+
className: "univer-m-0 univer-min-w-0 univer-border-0 univer-p-0",
|
|
1834
|
+
disabled: !table,
|
|
1835
|
+
children: [
|
|
1836
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("legend", {
|
|
1837
|
+
className: "univer-mb-2 univer-text-sm",
|
|
1838
|
+
children: localeService.t("sheets-table-ui.calculatedColumn")
|
|
1839
|
+
}),
|
|
1840
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_univerjs_design.Select, {
|
|
1841
|
+
className: "univer-w-full",
|
|
1842
|
+
options: columns.map((column) => ({
|
|
1843
|
+
value: column.id,
|
|
1844
|
+
label: column.displayName
|
|
1845
|
+
})),
|
|
1846
|
+
value: columnId,
|
|
1847
|
+
onChange: (id) => {
|
|
1848
|
+
var _table$getColumn;
|
|
1849
|
+
setColumnId(id);
|
|
1850
|
+
setFormula((table === null || table === void 0 || (_table$getColumn = table.getColumn(id)) === null || _table$getColumn === void 0 ? void 0 : _table$getColumn.formula) ?? "");
|
|
1851
|
+
setResult(void 0);
|
|
1852
|
+
}
|
|
1853
|
+
}),
|
|
1854
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_univerjs_design.FormLayout, {
|
|
1855
|
+
label: localeService.t("sheets-table-ui.columnFormula"),
|
|
1856
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_univerjs_design.Input, {
|
|
1857
|
+
value: formula,
|
|
1858
|
+
onChange: (value) => {
|
|
1859
|
+
setFormula(value);
|
|
1860
|
+
setResult(void 0);
|
|
1861
|
+
}
|
|
1862
|
+
})
|
|
1863
|
+
}),
|
|
1864
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
|
|
1865
|
+
className: "univer-text-sm univer-text-gray-500",
|
|
1866
|
+
children: localeService.t("sheets-table-ui.columnFormulaHint", String(Math.max(0, ((range === null || range === void 0 ? void 0 : range.endRow) ?? -1) - ((range === null || range === void 0 ? void 0 : range.startRow) ?? 0) + 1)))
|
|
1867
|
+
}),
|
|
1868
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
1869
|
+
className: "univer-flex univer-flex-wrap univer-gap-2",
|
|
1870
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_univerjs_design.Button, {
|
|
1871
|
+
disabled: !columnId || !formula.trim(),
|
|
1872
|
+
onClick: () => apply(formula),
|
|
1873
|
+
children: localeService.t("sheets-table-ui.applyColumnFormula")
|
|
1874
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_univerjs_design.Button, {
|
|
1875
|
+
disabled: !(table === null || table === void 0 || (_table$getColumn2 = table.getColumn(columnId)) === null || _table$getColumn2 === void 0 ? void 0 : _table$getColumn2.formula),
|
|
1876
|
+
onClick: () => apply(""),
|
|
1877
|
+
children: localeService.t("sheets-table-ui.stopColumnFormula")
|
|
1878
|
+
})]
|
|
1879
|
+
}),
|
|
1880
|
+
result !== void 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
|
|
1881
|
+
role: result ? "status" : "alert",
|
|
1882
|
+
className: "univer-text-sm",
|
|
1883
|
+
children: localeService.t(result ? "sheets-table-ui.columnFormulaApplied" : "sheets-table-ui.settingsError")
|
|
1884
|
+
})
|
|
1885
|
+
]
|
|
1886
|
+
});
|
|
1887
|
+
}
|
|
1888
|
+
|
|
1889
|
+
//#endregion
|
|
1890
|
+
//#region src/views/components/SheetTableSettingsDialog.tsx
|
|
1891
|
+
function SheetTableSettingsDialog(props) {
|
|
1892
|
+
const { unitId, tableId, onClose, ActionRowComponent = _univerjs_design.ActionRow } = props;
|
|
1893
|
+
const localeService = (0, _univerjs_ui.useDependency)(_univerjs_core.LocaleService);
|
|
1894
|
+
const commandService = (0, _univerjs_ui.useDependency)(_univerjs_core.ICommandService);
|
|
1895
|
+
const tableManager = (0, _univerjs_ui.useDependency)(_univerjs_sheets_table.TableManager);
|
|
1896
|
+
const [initial] = (0, react.useState)(() => {
|
|
1897
|
+
var _tableManager$getTabl;
|
|
1898
|
+
return (_tableManager$getTabl = tableManager.getTableById(unitId, tableId)) === null || _tableManager$getTabl === void 0 ? void 0 : _tableManager$getTabl.getTableInfo();
|
|
1899
|
+
});
|
|
1900
|
+
const [showAutoFilter, setShowAutoFilter] = (0, react.useState)((initial === null || initial === void 0 ? void 0 : initial.showAutoFilter) ?? true);
|
|
1901
|
+
const [columns, setColumns] = (0, react.useState)(() => Object.fromEntries(((initial === null || initial === void 0 ? void 0 : initial.columns) ?? []).map((column) => [column.id, column.showFilterButton !== false])));
|
|
1902
|
+
const [saving, setSaving] = (0, react.useState)(false);
|
|
1903
|
+
const [error, setError] = (0, react.useState)(false);
|
|
1904
|
+
const handleConfirm = async () => {
|
|
1905
|
+
if (!initial || saving) return;
|
|
1906
|
+
const changedColumns = Object.fromEntries(initial.columns.filter((column) => columns[column.id] !== (column.showFilterButton !== false)).map((column) => [column.id, columns[column.id]]));
|
|
1907
|
+
if (showAutoFilter === initial.showAutoFilter && Object.keys(changedColumns).length === 0) {
|
|
1908
|
+
onClose();
|
|
1909
|
+
return;
|
|
1910
|
+
}
|
|
1911
|
+
setSaving(true);
|
|
1912
|
+
setError(false);
|
|
1913
|
+
try {
|
|
1914
|
+
if (await commandService.executeCommand(_univerjs_sheets_table.SetSheetTableCommand.id, {
|
|
1915
|
+
unitId,
|
|
1916
|
+
tableId,
|
|
1917
|
+
filterButtons: {
|
|
1918
|
+
...showAutoFilter === initial.showAutoFilter ? {} : { showAutoFilter },
|
|
1919
|
+
columns: changedColumns
|
|
1920
|
+
}
|
|
1921
|
+
})) onClose();
|
|
1922
|
+
else setError(true);
|
|
1923
|
+
} catch {
|
|
1924
|
+
setError(true);
|
|
1925
|
+
} finally {
|
|
1926
|
+
setSaving(false);
|
|
1927
|
+
}
|
|
1928
|
+
};
|
|
1929
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
1930
|
+
className: "univer-flex univer-flex-col univer-gap-4 univer-py-2",
|
|
1931
|
+
children: [
|
|
1932
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_univerjs_design.Checkbox, {
|
|
1933
|
+
checked: showAutoFilter,
|
|
1934
|
+
disabled: saving || !initial,
|
|
1935
|
+
onChange: (value) => setShowAutoFilter(Boolean(value)),
|
|
1936
|
+
children: localeService.t("sheets-table-ui.showFilterButtons")
|
|
1937
|
+
}),
|
|
1938
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
|
|
1939
|
+
className: "univer-m-0 univer-text-sm univer-text-gray-500",
|
|
1940
|
+
children: localeService.t("sheets-table-ui.filterButtonsHint")
|
|
1941
|
+
}),
|
|
1942
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("fieldset", {
|
|
1943
|
+
className: "univer-m-0 univer-min-w-0 univer-border-0 univer-p-0",
|
|
1944
|
+
disabled: !showAutoFilter || saving,
|
|
1945
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("legend", {
|
|
1946
|
+
className: "univer-mb-2 univer-text-sm",
|
|
1947
|
+
children: localeService.t("sheets-table-ui.columnFilterButtons")
|
|
1948
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
1949
|
+
className: "univer-flex univer-max-h-64 univer-flex-col univer-gap-2 univer-overflow-y-auto",
|
|
1950
|
+
children: initial === null || initial === void 0 ? void 0 : initial.columns.map((column) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_univerjs_design.Checkbox, {
|
|
1951
|
+
checked: columns[column.id],
|
|
1952
|
+
disabled: !showAutoFilter || saving,
|
|
1953
|
+
onChange: (value) => setColumns((previous) => ({
|
|
1954
|
+
...previous,
|
|
1955
|
+
[column.id]: Boolean(value)
|
|
1956
|
+
})),
|
|
1957
|
+
children: column.displayName
|
|
1958
|
+
}, column.id))
|
|
1959
|
+
})]
|
|
1960
|
+
}),
|
|
1961
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(SheetTableCalculatedColumn, {
|
|
1962
|
+
unitId,
|
|
1963
|
+
tableId
|
|
1964
|
+
}),
|
|
1965
|
+
error && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
1966
|
+
role: "alert",
|
|
1967
|
+
className: "univer-text-sm univer-text-red-500",
|
|
1968
|
+
children: localeService.t("sheets-table-ui.settingsError")
|
|
1969
|
+
}),
|
|
1970
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)(ActionRowComponent, {
|
|
1971
|
+
className: "univer-flex univer-justify-end univer-gap-2",
|
|
1972
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_univerjs_design.Button, {
|
|
1973
|
+
disabled: saving,
|
|
1974
|
+
onClick: onClose,
|
|
1975
|
+
children: localeService.t("sheets-table-ui.cancel")
|
|
1976
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_univerjs_design.Button, {
|
|
1977
|
+
variant: "primary",
|
|
1978
|
+
disabled: saving || !initial,
|
|
1979
|
+
onClick: handleConfirm,
|
|
1980
|
+
children: localeService.t("sheets-table-ui.confirm")
|
|
1981
|
+
})]
|
|
1982
|
+
})
|
|
1983
|
+
]
|
|
1984
|
+
});
|
|
1985
|
+
}
|
|
1986
|
+
|
|
1987
|
+
//#endregion
|
|
1988
|
+
//#region src/views/components/MobileSheetTableSettingsDialog.tsx
|
|
1989
|
+
function MobileSheetTableSettingsDialog(props) {
|
|
1990
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(SheetTableSettingsDialog, {
|
|
1991
|
+
...props,
|
|
1992
|
+
ActionRowComponent: _univerjs_design.MobileActionRowGroup
|
|
1993
|
+
});
|
|
1994
|
+
}
|
|
1995
|
+
|
|
1686
1996
|
//#endregion
|
|
1687
1997
|
//#region src/controllers/sheet-table-theme-ui.controller.ts
|
|
1688
1998
|
let SheetTableThemeUIController = class SheetTableThemeUIController extends _univerjs_core.Disposable {
|
|
@@ -1751,7 +2061,10 @@ const SheetTableThemePanel = (props) => {
|
|
|
1751
2061
|
}
|
|
1752
2062
|
const lastCustomTheme = customRangeThemes[customRangeThemes.length - 1];
|
|
1753
2063
|
let newThemeName = `${TABLE_CUSTOM_NAME_PREFIX}1`;
|
|
1754
|
-
if (lastCustomTheme)
|
|
2064
|
+
if (lastCustomTheme) {
|
|
2065
|
+
const index = Number(lastCustomTheme.split("-")[2]);
|
|
2066
|
+
newThemeName = `${TABLE_CUSTOM_NAME_PREFIX}${index + 1}`;
|
|
2067
|
+
}
|
|
1755
2068
|
const newTheme = new _univerjs_sheets.RangeThemeStyle(newThemeName, { ..._univerjs_sheets_table.customEmptyThemeWithBorderStyle });
|
|
1756
2069
|
commandService.executeCommand(_univerjs_sheets_table.AddTableThemeCommand.id, {
|
|
1757
2070
|
unitId,
|
|
@@ -2004,6 +2317,7 @@ let MobileComponentsController = class MobileComponentsController extends _unive
|
|
|
2004
2317
|
[SHEETS_TABLE_FILTER_PANEL_OPENED_KEY, MobileSheetTableFilterPanel],
|
|
2005
2318
|
[SHEET_TABLE_MOBILE_MENU, MobileSheetTableMenu],
|
|
2006
2319
|
[SHEET_TABLE_RENAME_DIALOG, MobileSheetTableRenameDialog],
|
|
2320
|
+
[SHEET_TABLE_SETTINGS_DIALOG, MobileSheetTableSettingsDialog],
|
|
2007
2321
|
[TABLE_SELECTOR_DIALOG, MobileSheetTableSelector],
|
|
2008
2322
|
[SHEET_TABLE_THEME_PANEL, MobileSheetTableThemePanel]
|
|
2009
2323
|
].forEach(([key, component]) => {
|
|
@@ -2014,37 +2328,6 @@ let MobileComponentsController = class MobileComponentsController extends _unive
|
|
|
2014
2328
|
};
|
|
2015
2329
|
MobileComponentsController = __decorate([__decorateParam(0, (0, _univerjs_core.Inject)(_univerjs_ui.ComponentManager)), __decorateParam(1, (0, _univerjs_core.Inject)(_univerjs_ui.IconManager))], MobileComponentsController);
|
|
2016
2330
|
|
|
2017
|
-
//#endregion
|
|
2018
|
-
//#region src/controllers/mobile/sheet-table-component.controller.ts
|
|
2019
|
-
/**
|
|
2020
|
-
* Copyright 2023-present DreamNum Co., Ltd.
|
|
2021
|
-
*
|
|
2022
|
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
2023
|
-
* you may not use this file except in compliance with the License.
|
|
2024
|
-
* You may obtain a copy of the License at
|
|
2025
|
-
*
|
|
2026
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
2027
|
-
*
|
|
2028
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
2029
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
2030
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
2031
|
-
* See the License for the specific language governing permissions and
|
|
2032
|
-
* limitations under the License.
|
|
2033
|
-
*/
|
|
2034
|
-
var SheetsTableMobileComponentController = class extends SheetsTableComponentController {
|
|
2035
|
-
_openFilterPopup() {
|
|
2036
|
-
if (!this.getCurrentTableFilterInfo()) throw new Error("[SheetsFilterUIController]: no filter model when opening filter popup!");
|
|
2037
|
-
this._dialogService.open({
|
|
2038
|
-
id: UNIVER_SHEET_TABLE_FILTER_PANEL_ID,
|
|
2039
|
-
title: { title: "sheets-table-ui.filter.title" },
|
|
2040
|
-
children: { label: SHEETS_TABLE_FILTER_PANEL_OPENED_KEY },
|
|
2041
|
-
onClose: () => {
|
|
2042
|
-
this._contextService.setContextValue(SHEETS_TABLE_FILTER_PANEL_OPENED_KEY, false);
|
|
2043
|
-
}
|
|
2044
|
-
});
|
|
2045
|
-
}
|
|
2046
|
-
};
|
|
2047
|
-
|
|
2048
2331
|
//#endregion
|
|
2049
2332
|
//#region src/views/widgets/table-controls-util.ts
|
|
2050
2333
|
function isPointInTableControlRegion(region, x, y) {
|
|
@@ -2162,7 +2445,7 @@ var SheetTableControlsShape = class extends _univerjs_engine_render.Shape {
|
|
|
2162
2445
|
const left = position.startX;
|
|
2163
2446
|
const rawTop = position.startY - 28 - ANCHOR_OFFSET_Y;
|
|
2164
2447
|
const top = Math.max(0, rawTop);
|
|
2165
|
-
const width = Math.max(ANCHOR_MIN_WIDTH, Math.min(ANCHOR_MAX_WIDTH, item.tableName.length * 8.5 +
|
|
2448
|
+
const width = Math.max(ANCHOR_MIN_WIDTH, Math.min(ANCHOR_MAX_WIDTH, item.tableName.length * 8.5 + 24 + ANCHOR_TOGGLE_WIDTH));
|
|
2166
2449
|
const toggleRegion = {
|
|
2167
2450
|
type: "anchor-menu-toggle",
|
|
2168
2451
|
tableId: item.tableId,
|
|
@@ -2314,6 +2597,7 @@ let SheetTableControlsRenderController = class SheetTableControlsRenderControlle
|
|
|
2314
2597
|
_defineProperty(this, "_shape", void 0);
|
|
2315
2598
|
_defineProperty(this, "_topGapBaseBySkeleton", /* @__PURE__ */ new WeakMap());
|
|
2316
2599
|
_defineProperty(this, "_menuPopup", null);
|
|
2600
|
+
_defineProperty(this, "_settingsDialog", null);
|
|
2317
2601
|
this._shape = new SheetTableControlsShape("SheetTableControlsShape", () => this._sheetSkeletonManagerService.getCurrentSkeleton() || null);
|
|
2318
2602
|
this._initShape();
|
|
2319
2603
|
this._initRefresh();
|
|
@@ -2323,7 +2607,10 @@ let SheetTableControlsRenderController = class SheetTableControlsRenderControlle
|
|
|
2323
2607
|
var _this$_context$compon;
|
|
2324
2608
|
this._context.scene.addObjects([this._shape], TABLE_CONTROLS_LAYER_INDEX);
|
|
2325
2609
|
this.disposeWithMe((0, _univerjs_core.toDisposable)(() => {
|
|
2610
|
+
var _this$_settingsDialog;
|
|
2326
2611
|
this._closeFloatingControls();
|
|
2612
|
+
(_this$_settingsDialog = this._settingsDialog) === null || _this$_settingsDialog === void 0 || _this$_settingsDialog.dispose();
|
|
2613
|
+
this._settingsDialog = null;
|
|
2327
2614
|
this._context.scene.removeObjects([this._shape]);
|
|
2328
2615
|
}));
|
|
2329
2616
|
this.disposeWithMe(this._shape.onPointerMove$.subscribeEvent((evt, state) => {
|
|
@@ -2476,6 +2763,7 @@ let SheetTableControlsRenderController = class SheetTableControlsRenderControlle
|
|
|
2476
2763
|
rename: this._localeService.t("sheets-table-ui.rename"),
|
|
2477
2764
|
"update-range": this._localeService.t("sheets-table-ui.updateRange"),
|
|
2478
2765
|
"set-theme": this._localeService.t("sheets-table-ui.setTheme"),
|
|
2766
|
+
settings: this._localeService.t("sheets-table-ui.settings"),
|
|
2479
2767
|
delete: this._localeService.t("sheets-table-ui.removeTable")
|
|
2480
2768
|
},
|
|
2481
2769
|
onSelect: (action) => this._handleTableMenuAction(action, unitId, subUnitId, tableId),
|
|
@@ -2501,6 +2789,9 @@ let SheetTableControlsRenderController = class SheetTableControlsRenderControlle
|
|
|
2501
2789
|
_handleTableMenuAction(action, unitId, subUnitId, tableId) {
|
|
2502
2790
|
this._closeFloatingControls();
|
|
2503
2791
|
switch (action) {
|
|
2792
|
+
case "settings":
|
|
2793
|
+
this._openSettingsDialog(unitId, tableId);
|
|
2794
|
+
break;
|
|
2504
2795
|
case "rename":
|
|
2505
2796
|
this._openRenameDialog(unitId, tableId);
|
|
2506
2797
|
break;
|
|
@@ -2508,15 +2799,34 @@ let SheetTableControlsRenderController = class SheetTableControlsRenderControlle
|
|
|
2508
2799
|
case "set-theme":
|
|
2509
2800
|
this._openThemePanel(unitId, subUnitId, tableId);
|
|
2510
2801
|
break;
|
|
2511
|
-
case "delete":
|
|
2512
|
-
|
|
2513
|
-
|
|
2514
|
-
|
|
2515
|
-
|
|
2516
|
-
});
|
|
2517
|
-
break;
|
|
2802
|
+
case "delete": this._commandService.executeCommand(_univerjs_sheets_table.DeleteSheetTableCommand.id, {
|
|
2803
|
+
tableId,
|
|
2804
|
+
subUnitId,
|
|
2805
|
+
unitId
|
|
2806
|
+
});
|
|
2518
2807
|
}
|
|
2519
2808
|
}
|
|
2809
|
+
_openSettingsDialog(unitId, tableId) {
|
|
2810
|
+
var _this$_settingsDialog2;
|
|
2811
|
+
(_this$_settingsDialog2 = this._settingsDialog) === null || _this$_settingsDialog2 === void 0 || _this$_settingsDialog2.dispose();
|
|
2812
|
+
this._dialogService.open({
|
|
2813
|
+
id: SHEET_TABLE_SETTINGS_DIALOG_ID,
|
|
2814
|
+
title: { title: this._localeService.t("sheets-table-ui.settings") },
|
|
2815
|
+
draggable: true,
|
|
2816
|
+
mask: true,
|
|
2817
|
+
children: { label: {
|
|
2818
|
+
name: SHEET_TABLE_SETTINGS_DIALOG,
|
|
2819
|
+
props: {
|
|
2820
|
+
unitId,
|
|
2821
|
+
tableId,
|
|
2822
|
+
onClose: () => this._dialogService.close(SHEET_TABLE_SETTINGS_DIALOG_ID)
|
|
2823
|
+
}
|
|
2824
|
+
} },
|
|
2825
|
+
width: 400,
|
|
2826
|
+
onClose: () => this._dialogService.close(SHEET_TABLE_SETTINGS_DIALOG_ID)
|
|
2827
|
+
});
|
|
2828
|
+
this._settingsDialog = (0, _univerjs_core.toDisposable)(() => this._dialogService.close(SHEET_TABLE_SETTINGS_DIALOG_ID));
|
|
2829
|
+
}
|
|
2520
2830
|
_openRenameDialog(unitId, tableId) {
|
|
2521
2831
|
this._dialogService.open({
|
|
2522
2832
|
id: SHEET_TABLE_RENAME_DIALOG_ID,
|
|
@@ -2695,6 +3005,7 @@ var SheetTableControlsMobileRenderController = class extends SheetTableControlsR
|
|
|
2695
3005
|
rename: this._localeService.t("sheets-table-ui.rename"),
|
|
2696
3006
|
"update-range": this._localeService.t("sheets-table-ui.updateRange"),
|
|
2697
3007
|
"set-theme": this._localeService.t("sheets-table-ui.setTheme"),
|
|
3008
|
+
settings: this._localeService.t("sheets-table-ui.settings"),
|
|
2698
3009
|
delete: this._localeService.t("sheets-table-ui.removeTable")
|
|
2699
3010
|
},
|
|
2700
3011
|
onSelect: (action) => this._handleTableMenuAction(action, unitId, subUnitId, tableId),
|
|
@@ -2769,16 +3080,15 @@ let SheetsTableFilterButtonShape = class SheetsTableFilterButtonShape extends _u
|
|
|
2769
3080
|
}
|
|
2770
3081
|
_drawChevron(ctx, color) {
|
|
2771
3082
|
const centerX = 16 / 2;
|
|
2772
|
-
const centerY = 16 / 2;
|
|
2773
3083
|
ctx.save();
|
|
2774
3084
|
ctx.beginPath();
|
|
2775
3085
|
ctx.strokeStyle = color;
|
|
2776
3086
|
ctx.lineWidth = 1.8;
|
|
2777
3087
|
ctx.lineCap = "round";
|
|
2778
3088
|
ctx.lineJoin = "round";
|
|
2779
|
-
ctx.moveTo(
|
|
3089
|
+
ctx.moveTo(3.5, 5.5);
|
|
2780
3090
|
ctx.lineTo(centerX, 10);
|
|
2781
|
-
ctx.lineTo(12.5,
|
|
3091
|
+
ctx.lineTo(12.5, 5.5);
|
|
2782
3092
|
ctx.stroke();
|
|
2783
3093
|
ctx.restore();
|
|
2784
3094
|
}
|
|
@@ -2861,7 +3171,12 @@ let SheetsTableFilterButtonRenderController = class SheetsTableFilterButtonRende
|
|
|
2861
3171
|
_initCommandExecuted() {
|
|
2862
3172
|
this.disposeWithMe(this._commandService.onCommandExecuted((command) => {
|
|
2863
3173
|
var _workbook$getActiveSh2;
|
|
2864
|
-
if (command.id !== _univerjs_sheets.SetVerticalTextAlignCommand.id) return;
|
|
3174
|
+
if (command.id !== _univerjs_sheets.SetVerticalTextAlignCommand.id && command.id !== _univerjs_sheets_table.SetSheetTableMutation.id) return;
|
|
3175
|
+
if (command.id === _univerjs_sheets_table.SetSheetTableMutation.id) {
|
|
3176
|
+
var _this$_context$unit$g;
|
|
3177
|
+
const params = command.params;
|
|
3178
|
+
if (!(params === null || params === void 0 ? void 0 : params.config.filterButtons) || params.unitId !== this._context.unitId || params.subUnitId !== ((_this$_context$unit$g = this._context.unit.getActiveSheet()) === null || _this$_context$unit$g === void 0 ? void 0 : _this$_context$unit$g.getSheetId())) return;
|
|
3179
|
+
}
|
|
2865
3180
|
const { unit: workbook, unitId } = this._context;
|
|
2866
3181
|
const worksheetId = ((_workbook$getActiveSh2 = workbook.getActiveSheet()) === null || _workbook$getActiveSh2 === void 0 ? void 0 : _workbook$getActiveSh2.getSheetId()) || "";
|
|
2867
3182
|
const skeleton = this._sheetSkeletonManagerService.getCurrentSkeleton();
|
|
@@ -2889,8 +3204,14 @@ let SheetsTableFilterButtonRenderController = class SheetsTableFilterButtonRende
|
|
|
2889
3204
|
const headerStyle = table ? (_this$_rangeThemeMode = this._rangeThemeModel.getRangeThemeStyle(unitId, table.getTableStyleId())) === null || _this$_rangeThemeMode === void 0 ? void 0 : _this$_rangeThemeMode.getHeaderRowStyle() : null;
|
|
2890
3205
|
const iconColor = (headerStyle === null || headerStyle === void 0 || (_headerStyle$cl = headerStyle.cl) === null || _headerStyle$cl === void 0 ? void 0 : _headerStyle$cl.rgb) ?? "#fff";
|
|
2891
3206
|
const hoverIconColor = (headerStyle === null || headerStyle === void 0 || (_headerStyle$bg = headerStyle.bg) === null || _headerStyle$bg === void 0 ? void 0 : _headerStyle$bg.rgb) ?? "#202124";
|
|
2892
|
-
|
|
3207
|
+
const visibleColumns = /* @__PURE__ */ new Set();
|
|
3208
|
+
for (let col = startColumn; col <= endColumn; col++) {
|
|
3209
|
+
var _table$getTableColumn;
|
|
3210
|
+
if ((table === null || table === void 0 || (_table$getTableColumn = table.getTableColumnByIndex(col - startColumn)) === null || _table$getTableColumn === void 0 ? void 0 : _table$getTableColumn.isShowFilterButton()) !== false) visibleColumns.add(col);
|
|
3211
|
+
}
|
|
3212
|
+
this._interceptCellContent(unitId, worksheetId, range, visibleColumns);
|
|
2893
3213
|
for (let col = startColumn; col <= endColumn; col++) {
|
|
3214
|
+
if (!visibleColumns.has(col)) continue;
|
|
2894
3215
|
const key = `sheets-table-filter-button-${startRow}-${col}`;
|
|
2895
3216
|
const startPosition = (0, _univerjs_sheets_ui.getCoordByCell)(startRow, col, scene, skeleton);
|
|
2896
3217
|
const cellStyle = worksheet.getCellStyle(startRow, col);
|
|
@@ -2927,13 +3248,13 @@ let SheetsTableFilterButtonRenderController = class SheetsTableFilterButtonRende
|
|
|
2927
3248
|
scene.addObjects(this._tableFilterButtonShapes);
|
|
2928
3249
|
scene.makeDirty();
|
|
2929
3250
|
}
|
|
2930
|
-
_interceptCellContent(workbookId, worksheetId, range) {
|
|
3251
|
+
_interceptCellContent(workbookId, worksheetId, range, visibleColumns) {
|
|
2931
3252
|
const { startRow, startColumn, endColumn } = range;
|
|
2932
3253
|
this._buttonRenderDisposable = this._sheetInterceptorService.intercept(_univerjs_sheets.INTERCEPTOR_POINT.CELL_CONTENT, {
|
|
2933
3254
|
effect: _univerjs_core.InterceptorEffectEnum.Style,
|
|
2934
3255
|
handler: (cell, pos, next) => {
|
|
2935
3256
|
const { row, col, unitId, subUnitId } = pos;
|
|
2936
|
-
if (unitId !== workbookId || subUnitId !== worksheetId || row !== startRow || col < startColumn || col > endColumn) return next(cell);
|
|
3257
|
+
if (unitId !== workbookId || subUnitId !== worksheetId || row !== startRow || col < startColumn || col > endColumn || !visibleColumns.has(col)) return next(cell);
|
|
2937
3258
|
if (!cell || cell === pos.rawData) cell = { ...pos.rawData };
|
|
2938
3259
|
cell.fontRenderExtension = {
|
|
2939
3260
|
...cell === null || cell === void 0 ? void 0 : cell.fontRenderExtension,
|
|
@@ -3076,7 +3397,42 @@ SheetTableSelectionController = __decorate([
|
|
|
3076
3397
|
], SheetTableSelectionController);
|
|
3077
3398
|
|
|
3078
3399
|
//#endregion
|
|
3079
|
-
//#region src/menu/
|
|
3400
|
+
//#region src/menu/mobile-schema.ts
|
|
3401
|
+
const mobileMenuSchema = {
|
|
3402
|
+
[_univerjs_ui.RibbonDataGroup.ORGANIZATION]: { [OpenTableSelectorOperation.id]: {
|
|
3403
|
+
order: 0,
|
|
3404
|
+
menuItemFactory: sheetTableToolbarInsertMenuFactory
|
|
3405
|
+
} },
|
|
3406
|
+
[_univerjs_ui.ContextMenuPosition.MAIN_AREA]: { [_univerjs_ui.ContextMenuGroup.LAYOUT]: {
|
|
3407
|
+
[SHEET_TABLE_CONTEXT_INSERT_MENU_ID]: {
|
|
3408
|
+
order: 5,
|
|
3409
|
+
menuItemFactory: SheetTableInsertContextMenuFactory,
|
|
3410
|
+
[_univerjs_sheets_table.SheetTableInsertRowCommand.id]: {
|
|
3411
|
+
order: 1,
|
|
3412
|
+
menuItemFactory: SheetTableInsertRowMenuFactory
|
|
3413
|
+
},
|
|
3414
|
+
[_univerjs_sheets_table.SheetTableInsertColCommand.id]: {
|
|
3415
|
+
order: 2,
|
|
3416
|
+
menuItemFactory: SheetTableInsertColMenuFactory
|
|
3417
|
+
}
|
|
3418
|
+
},
|
|
3419
|
+
[SHEET_TABLE_CONTEXT_REMOVE_MENU_ID]: {
|
|
3420
|
+
order: 6,
|
|
3421
|
+
menuItemFactory: SheetTableRemoveContextMenuFactory,
|
|
3422
|
+
[_univerjs_sheets_table.SheetTableRemoveRowCommand.id]: {
|
|
3423
|
+
order: 1,
|
|
3424
|
+
menuItemFactory: SheetTableRemoveRowMenuFactory
|
|
3425
|
+
},
|
|
3426
|
+
[_univerjs_sheets_table.SheetTableRemoveColCommand.id]: {
|
|
3427
|
+
order: 2,
|
|
3428
|
+
menuItemFactory: SheetTableRemoveColMenuFactory
|
|
3429
|
+
}
|
|
3430
|
+
}
|
|
3431
|
+
} }
|
|
3432
|
+
};
|
|
3433
|
+
|
|
3434
|
+
//#endregion
|
|
3435
|
+
//#region src/menu/mobile-sheet-table-menu.controller.ts
|
|
3080
3436
|
/**
|
|
3081
3437
|
* Copyright 2023-present DreamNum Co., Ltd.
|
|
3082
3438
|
*
|
|
@@ -3092,17 +3448,13 @@ SheetTableSelectionController = __decorate([
|
|
|
3092
3448
|
* See the License for the specific language governing permissions and
|
|
3093
3449
|
* limitations under the License.
|
|
3094
3450
|
*/
|
|
3095
|
-
let
|
|
3096
|
-
constructor(
|
|
3451
|
+
let MobileSheetTableMenuController = class MobileSheetTableMenuController extends _univerjs_core.Disposable {
|
|
3452
|
+
constructor(menuManagerService) {
|
|
3097
3453
|
super();
|
|
3098
|
-
|
|
3099
|
-
this._initMenu();
|
|
3100
|
-
}
|
|
3101
|
-
_initMenu() {
|
|
3102
|
-
this._menuManagerService.mergeMenu(menuSchema);
|
|
3454
|
+
menuManagerService.mergeMenu(mobileMenuSchema);
|
|
3103
3455
|
}
|
|
3104
3456
|
};
|
|
3105
|
-
|
|
3457
|
+
MobileSheetTableMenuController = __decorate([__decorateParam(0, _univerjs_ui.IMenuManagerService)], MobileSheetTableMenuController);
|
|
3106
3458
|
|
|
3107
3459
|
//#endregion
|
|
3108
3460
|
//#region src/mobile-plugin.ts
|
|
@@ -3124,9 +3476,8 @@ let UniverSheetsTableMobileUIPlugin = class UniverSheetsTableMobileUIPlugin exte
|
|
|
3124
3476
|
this._injector.get(MobileComponentsController);
|
|
3125
3477
|
(0, _univerjs_core.registerDependencies)(this._injector, [
|
|
3126
3478
|
[SheetsTableMobileComponentController],
|
|
3127
|
-
[SheetsTableComponentController, { useExisting: SheetsTableMobileComponentController }],
|
|
3128
3479
|
[SheetsTableUiService],
|
|
3129
|
-
[
|
|
3480
|
+
[MobileSheetTableMenuController],
|
|
3130
3481
|
[SheetTableThemeUIController],
|
|
3131
3482
|
[SheetTableSelectionController]
|
|
3132
3483
|
]);
|
|
@@ -3135,7 +3486,7 @@ let UniverSheetsTableMobileUIPlugin = class UniverSheetsTableMobileUIPlugin exte
|
|
|
3135
3486
|
(0, _univerjs_core.touchDependencies)(this._injector, [
|
|
3136
3487
|
[SheetsTableMobileComponentController],
|
|
3137
3488
|
[SheetsTableUiService],
|
|
3138
|
-
[
|
|
3489
|
+
[MobileSheetTableMenuController],
|
|
3139
3490
|
[SheetTableThemeUIController],
|
|
3140
3491
|
[SheetTableSelectionController]
|
|
3141
3492
|
]);
|
|
@@ -3152,7 +3503,7 @@ let UniverSheetsTableMobileUIPlugin = class UniverSheetsTableMobileUIPlugin exte
|
|
|
3152
3503
|
});
|
|
3153
3504
|
}
|
|
3154
3505
|
_initRegisterCommand() {
|
|
3155
|
-
[
|
|
3506
|
+
[OpenTableFilterPanelMobileOperation, OpenTableSelectorOperation].forEach((command) => this.disposeWithMe(this._commandService.registerCommand(command)));
|
|
3156
3507
|
}
|
|
3157
3508
|
};
|
|
3158
3509
|
_defineProperty(UniverSheetsTableMobileUIPlugin, "pluginName", PLUGIN_NAME);
|
|
@@ -3264,11 +3615,12 @@ const SheetTableConditionPanel = (props) => {
|
|
|
3264
3615
|
const compare = value[1];
|
|
3265
3616
|
if (compare) setConditionVisible(false);
|
|
3266
3617
|
const info = {};
|
|
3267
|
-
if (type === _univerjs_sheets_table.TableConditionTypeEnum.Date)
|
|
3268
|
-
|
|
3269
|
-
|
|
3270
|
-
|
|
3271
|
-
|
|
3618
|
+
if (type === _univerjs_sheets_table.TableConditionTypeEnum.Date) {
|
|
3619
|
+
if (compare === _univerjs_sheets_table.TableDateCompareTypeEnum.Quarter) info.dateSelect = _univerjs_sheets_table.TableDateCompareTypeEnum.Q1;
|
|
3620
|
+
else if (compare === _univerjs_sheets_table.TableDateCompareTypeEnum.Month) info.dateSelect = _univerjs_sheets_table.TableDateCompareTypeEnum.M1;
|
|
3621
|
+
else if (datePickerSet.has(compare)) info.date = /* @__PURE__ */ new Date();
|
|
3622
|
+
else info.dateRange = [/* @__PURE__ */ new Date(), /* @__PURE__ */ new Date()];
|
|
3623
|
+
} else if (type === _univerjs_sheets_table.TableConditionTypeEnum.Number) info.number = 0;
|
|
3272
3624
|
else if (type === _univerjs_sheets_table.TableConditionTypeEnum.String) info.string = "";
|
|
3273
3625
|
handleConditionInfo(info, value[0], value[1] ?? _univerjs_sheets_table.TableStringCompareTypeEnum.Equal);
|
|
3274
3626
|
};
|
|
@@ -3375,7 +3727,7 @@ const getCheckedItemCount = (map, checkedItemSet) => {
|
|
|
3375
3727
|
return count;
|
|
3376
3728
|
};
|
|
3377
3729
|
function SheetTableItemsFilterPanel(props) {
|
|
3378
|
-
const { unitId, tableId, subUnitId, columnIndex, checkedItemSet, setCheckedItemSet, tableFilter } = props;
|
|
3730
|
+
const { unitId, tableId, subUnitId, columnIndex, checkedItemSet, setCheckedItemSet, tableFilter, onSelectAllChange, onItemChange } = props;
|
|
3379
3731
|
const localeService = (0, _univerjs_ui.useDependency)(_univerjs_core.LocaleService);
|
|
3380
3732
|
const { data: items, itemsCountMap, allItemsCount } = (0, _univerjs_ui.useDependency)(SheetsTableUiService).getTableFilterItems(unitId, subUnitId, tableId, columnIndex);
|
|
3381
3733
|
const [allChecked, setAllChecked] = (0, react.useState)(tableFilter === void 0 ? true : checkedItemSet.size === itemsCountMap.size);
|
|
@@ -3387,38 +3739,75 @@ function SheetTableItemsFilterPanel(props) {
|
|
|
3387
3739
|
return String(item.title).toLowerCase().includes(searchText.toLowerCase());
|
|
3388
3740
|
}) : items;
|
|
3389
3741
|
}, [searchText, items]);
|
|
3390
|
-
const
|
|
3742
|
+
const recordFilter = (0, _univerjs_sheets_table.isRecordTableFilter)(tableFilter);
|
|
3743
|
+
const allDisplayedChecked = displayItems.length > 0 && displayItems.every((item) => checkedItemSet.has(item.valueKey ?? item.title));
|
|
3744
|
+
const someDisplayedChecked = displayItems.some((item) => checkedItemSet.has(item.valueKey ?? item.title));
|
|
3745
|
+
const displayedAllChecked = recordFilter ? allDisplayedChecked : allChecked;
|
|
3746
|
+
const displayedIndeterminate = recordFilter ? !allDisplayedChecked && someDisplayedChecked : indeterminate;
|
|
3747
|
+
const onCheckAllToggled = () => {
|
|
3748
|
+
if (recordFilter) {
|
|
3749
|
+
const next = new Set(checkedItemSet);
|
|
3750
|
+
displayItems.forEach((item) => {
|
|
3751
|
+
const itemKey = item.valueKey ?? item.title;
|
|
3752
|
+
if (allDisplayedChecked) next.delete(itemKey);
|
|
3753
|
+
else next.add(itemKey);
|
|
3754
|
+
});
|
|
3755
|
+
setCheckedItemSet(next);
|
|
3756
|
+
setCheckedCount(getCheckedItemCount(itemsCountMap, next));
|
|
3757
|
+
onSelectAllChange === null || onSelectAllChange === void 0 || onSelectAllChange(!allDisplayedChecked && searchText === "");
|
|
3758
|
+
return;
|
|
3759
|
+
}
|
|
3391
3760
|
if (allChecked) {
|
|
3392
3761
|
checkedItemSet.clear();
|
|
3393
3762
|
setCheckedItemSet(new Set(checkedItemSet));
|
|
3394
3763
|
setAllChecked(false);
|
|
3764
|
+
onSelectAllChange === null || onSelectAllChange === void 0 || onSelectAllChange(false);
|
|
3395
3765
|
} else {
|
|
3396
3766
|
displayItems.forEach((item) => {
|
|
3397
|
-
checkedItemSet.add(item.title);
|
|
3767
|
+
checkedItemSet.add(item.valueKey ?? item.title);
|
|
3398
3768
|
});
|
|
3399
3769
|
setCheckedItemSet(new Set(checkedItemSet));
|
|
3400
3770
|
setAllChecked(true);
|
|
3771
|
+
onSelectAllChange === null || onSelectAllChange === void 0 || onSelectAllChange(items.every((item) => checkedItemSet.has(item.valueKey ?? item.title)));
|
|
3772
|
+
}
|
|
3773
|
+
};
|
|
3774
|
+
const onSearchValueChange = (str) => {
|
|
3775
|
+
if (recordFilter) {
|
|
3776
|
+
setSearchText(str);
|
|
3777
|
+
return;
|
|
3401
3778
|
}
|
|
3402
|
-
}, [allChecked]);
|
|
3403
|
-
const onSearchValueChange = (0, react.useCallback)((str) => {
|
|
3404
3779
|
if (str === "") {
|
|
3405
3780
|
setAllChecked(true);
|
|
3406
3781
|
items.forEach((item) => {
|
|
3407
|
-
checkedItemSet.add(item.title);
|
|
3782
|
+
checkedItemSet.add(item.valueKey ?? item.title);
|
|
3408
3783
|
});
|
|
3409
3784
|
setCheckedCount(allItemsCount);
|
|
3785
|
+
onSelectAllChange === null || onSelectAllChange === void 0 || onSelectAllChange(true);
|
|
3410
3786
|
} else {
|
|
3411
3787
|
checkedItemSet.clear();
|
|
3412
3788
|
setAllChecked(false);
|
|
3413
3789
|
setCheckedCount(0);
|
|
3790
|
+
onSelectAllChange === null || onSelectAllChange === void 0 || onSelectAllChange(false);
|
|
3414
3791
|
}
|
|
3415
3792
|
setSearchText(str);
|
|
3416
|
-
}
|
|
3793
|
+
};
|
|
3417
3794
|
const onCheckItemToggled = (key) => {
|
|
3795
|
+
onItemChange === null || onItemChange === void 0 || onItemChange();
|
|
3796
|
+
if (recordFilter) {
|
|
3797
|
+
const next = new Set(checkedItemSet);
|
|
3798
|
+
if (next.has(key)) next.delete(key);
|
|
3799
|
+
else next.add(key);
|
|
3800
|
+
setCheckedCount(getCheckedItemCount(itemsCountMap, next));
|
|
3801
|
+
setCheckedItemSet(next);
|
|
3802
|
+
return;
|
|
3803
|
+
}
|
|
3418
3804
|
if (allChecked) {
|
|
3419
3805
|
setAllChecked(false);
|
|
3420
3806
|
const newSet = /* @__PURE__ */ new Set();
|
|
3421
|
-
for (const
|
|
3807
|
+
for (const item of items) {
|
|
3808
|
+
const itemKey = item.valueKey ?? item.title;
|
|
3809
|
+
if (key !== itemKey) newSet.add(itemKey);
|
|
3810
|
+
}
|
|
3422
3811
|
setCheckedCount(allItemsCount - itemsCountMap.get(key));
|
|
3423
3812
|
setCheckedItemSet(newSet);
|
|
3424
3813
|
} else {
|
|
@@ -3450,9 +3839,9 @@ function SheetTableItemsFilterPanel(props) {
|
|
|
3450
3839
|
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_univerjs_design.Checkbox, {
|
|
3451
3840
|
className: "univer-min-w-0 univer-flex-1",
|
|
3452
3841
|
contentClassName: "univer-flex-1 univer-min-w-0",
|
|
3453
|
-
indeterminate,
|
|
3842
|
+
indeterminate: displayedIndeterminate,
|
|
3454
3843
|
disabled: items.length === 0,
|
|
3455
|
-
checked:
|
|
3844
|
+
checked: displayedAllChecked,
|
|
3456
3845
|
onChange: onCheckAllToggled,
|
|
3457
3846
|
children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
3458
3847
|
className: "univer-flex univer-h-5 univer-flex-1 univer-items-center univer-text-sm",
|
|
@@ -3466,14 +3855,15 @@ function SheetTableItemsFilterPanel(props) {
|
|
|
3466
3855
|
})
|
|
3467
3856
|
})
|
|
3468
3857
|
}), displayItems.map((item) => {
|
|
3858
|
+
const itemKey = item.valueKey ?? item.title;
|
|
3469
3859
|
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
3470
3860
|
className: "univer-flex univer-items-center univer-px-2 univer-py-1",
|
|
3471
3861
|
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_univerjs_design.Checkbox, {
|
|
3472
3862
|
className: "univer-min-w-0 univer-flex-1",
|
|
3473
3863
|
contentClassName: "univer-flex-1 univer-min-w-0",
|
|
3474
|
-
checked:
|
|
3864
|
+
checked: displayedAllChecked || checkedItemSet.has(itemKey),
|
|
3475
3865
|
onChange: () => {
|
|
3476
|
-
onCheckItemToggled(
|
|
3866
|
+
onCheckItemToggled(itemKey);
|
|
3477
3867
|
},
|
|
3478
3868
|
children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
|
|
3479
3869
|
className: "univer-flex univer-h-5 univer-flex-1 univer-items-center univer-text-sm",
|
|
@@ -3482,7 +3872,7 @@ function SheetTableItemsFilterPanel(props) {
|
|
|
3482
3872
|
children: item.title
|
|
3483
3873
|
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
3484
3874
|
className: "univer-ml-1 univer-inline-flex univer-h-full univer-items-center univer-text-gray-400",
|
|
3485
|
-
children: `(${itemsCountMap.get(
|
|
3875
|
+
children: `(${itemsCountMap.get(itemKey) || 0})`
|
|
3486
3876
|
})]
|
|
3487
3877
|
})
|
|
3488
3878
|
})
|
|
@@ -3528,7 +3918,8 @@ function SheetTableFilterPanel() {
|
|
|
3528
3918
|
const { unitId, subUnitId, tableId, tableFilter, currentFilterBy, columnIndex } = panelProps;
|
|
3529
3919
|
const { data } = tableUiService.getTableFilterItems(unitId, subUnitId, tableId, columnIndex);
|
|
3530
3920
|
const checkedItems = tableUiService.getTableFilterCheckedItems(unitId, tableId, columnIndex);
|
|
3531
|
-
const [checkedItemSet, setCheckedItemSet] = (0, react.useState)(() => new Set((0
|
|
3921
|
+
const [checkedItemSet, setCheckedItemSet] = (0, react.useState)(() => new Set((tableFilter === null || tableFilter === void 0 ? void 0 : tableFilter.filterType) === _univerjs_sheets_table.TableColumnFilterTypeEnum.manual || (tableFilter === null || tableFilter === void 0 ? void 0 : tableFilter.filterType) === _univerjs_sheets_table.TableColumnFilterTypeEnum.record ? checkedItems : data.map((item) => item.valueKey ?? item.title)));
|
|
3922
|
+
const [selectAllRequested, setSelectAllRequested] = (0, react.useState)(false);
|
|
3532
3923
|
const [filterBy, setFilterBy] = (0, react.useState)(currentFilterBy || "items");
|
|
3533
3924
|
const [conditionInfo, setConditionInfo] = (0, react.useState)(() => {
|
|
3534
3925
|
const tableFilter = panelProps.tableFilter;
|
|
@@ -3594,23 +3985,17 @@ function SheetTableFilterPanel() {
|
|
|
3594
3985
|
const onApply = async () => {
|
|
3595
3986
|
let filter;
|
|
3596
3987
|
if (filterBy === "items") {
|
|
3597
|
-
|
|
3598
|
-
const emptyLabel = localeService.t("sheets-table-ui.condition.empty");
|
|
3599
|
-
for (const itemInfo of data) if (checkedItemSet.has(itemInfo.title)) filteredItems.push(itemInfo.title === emptyLabel ? _univerjs_sheets_table.TABLE_FILTER_EMPTY_VALUE : itemInfo.title);
|
|
3988
|
+
filter = tableUiService.createItemFilter(unitId, tableId, columnIndex, tableUiService.getTableFilterItems(unitId, subUnitId, tableId, columnIndex), checkedItemSet, selectAllRequested);
|
|
3600
3989
|
const originFilter = table.getTableFilterColumn(columnIndex);
|
|
3601
|
-
if ((0, _univerjs_sheets_table.isManualTableFilter)(originFilter)) {
|
|
3602
|
-
if (originFilter.values.join(",") ===
|
|
3990
|
+
if ((0, _univerjs_sheets_table.isManualTableFilter)(originFilter) && (0, _univerjs_sheets_table.isManualTableFilter)(filter)) {
|
|
3991
|
+
if (originFilter.values.join(",") === filter.values.join(",")) {
|
|
3603
3992
|
closeDialog();
|
|
3604
3993
|
return;
|
|
3605
3994
|
}
|
|
3606
|
-
} else if (
|
|
3995
|
+
} else if (!filter && !originFilter) {
|
|
3607
3996
|
closeDialog();
|
|
3608
3997
|
return;
|
|
3609
3998
|
}
|
|
3610
|
-
filter = filteredItems.length === data.length ? void 0 : {
|
|
3611
|
-
filterType: _univerjs_sheets_table.TableColumnFilterTypeEnum.manual,
|
|
3612
|
-
values: filteredItems
|
|
3613
|
-
};
|
|
3614
3999
|
} else if (filterBy === "color") {
|
|
3615
4000
|
const cellFillColors = colors.cellFillColors.filter((item) => item.checked).map((item) => item.color);
|
|
3616
4001
|
const cellTextColors = colors.cellTextColors.filter((item) => item.checked).map((item) => item.color);
|
|
@@ -3644,10 +4029,11 @@ function SheetTableFilterPanel() {
|
|
|
3644
4029
|
if (await tableUiService.setTableFilter(unitId, tableId, columnIndex, void 0)) closeDialog();
|
|
3645
4030
|
};
|
|
3646
4031
|
const workbookEditableId = new _univerjs_sheets.WorkbookEditablePermission(unitId).id;
|
|
4032
|
+
const editable = (_permissionService$ge = permissionService.getPermissionPoint(workbookEditableId)) === null || _permissionService$ge === void 0 ? void 0 : _permissionService$ge.value;
|
|
3647
4033
|
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
3648
4034
|
className: "univer-box-border univer-flex univer-w-[400px] univer-flex-col univer-rounded-[10px] univer-bg-gray-0 univer-p-4 univer-shadow-lg dark:!univer-border-gray-600 dark:!univer-bg-gray-700",
|
|
3649
4035
|
children: [
|
|
3650
|
-
|
|
4036
|
+
editable && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
3651
4037
|
className: "-univer-mx-4 -univer-mt-2 univer-mb-3 univer-border-0 univer-border-b univer-border-solid univer-border-gray-200 univer-py-1",
|
|
3652
4038
|
children: [
|
|
3653
4039
|
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("button", {
|
|
@@ -3714,7 +4100,9 @@ function SheetTableFilterPanel() {
|
|
|
3714
4100
|
tableId,
|
|
3715
4101
|
columnIndex,
|
|
3716
4102
|
checkedItemSet,
|
|
3717
|
-
setCheckedItemSet
|
|
4103
|
+
setCheckedItemSet,
|
|
4104
|
+
onSelectAllChange: setSelectAllRequested,
|
|
4105
|
+
onItemChange: () => setSelectAllRequested(false)
|
|
3718
4106
|
}),
|
|
3719
4107
|
filterBy === "color" && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(SheetTableColorFilterPanel, {
|
|
3720
4108
|
colors,
|
|
@@ -3778,6 +4166,11 @@ function SheetTableMenu({ popup }) {
|
|
|
3778
4166
|
children: menu.labels["set-theme"],
|
|
3779
4167
|
onSelect: () => menu.onSelect("set-theme")
|
|
3780
4168
|
},
|
|
4169
|
+
{
|
|
4170
|
+
type: "item",
|
|
4171
|
+
children: menu.labels.settings,
|
|
4172
|
+
onSelect: () => menu.onSelect("settings")
|
|
4173
|
+
},
|
|
3781
4174
|
{
|
|
3782
4175
|
type: "item",
|
|
3783
4176
|
children: menu.labels.delete,
|
|
@@ -3829,7 +4222,8 @@ let ComponentsController = class ComponentsController extends _univerjs_core.Dis
|
|
|
3829
4222
|
[
|
|
3830
4223
|
[SHEETS_TABLE_FILTER_PANEL_OPENED_KEY, SheetTableFilterPanel],
|
|
3831
4224
|
[SHEET_TABLE_MENU, SheetTableMenu],
|
|
3832
|
-
[SHEET_TABLE_RENAME_DIALOG, SheetTableRenameDialog]
|
|
4225
|
+
[SHEET_TABLE_RENAME_DIALOG, SheetTableRenameDialog],
|
|
4226
|
+
[SHEET_TABLE_SETTINGS_DIALOG, SheetTableSettingsDialog]
|
|
3833
4227
|
].forEach(([key, comp]) => {
|
|
3834
4228
|
this.disposeWithMe(this._componentManager.register(key, comp));
|
|
3835
4229
|
});
|
|
@@ -3843,6 +4237,35 @@ let ComponentsController = class ComponentsController extends _univerjs_core.Dis
|
|
|
3843
4237
|
};
|
|
3844
4238
|
ComponentsController = __decorate([__decorateParam(0, (0, _univerjs_core.Inject)(_univerjs_ui.ComponentManager)), __decorateParam(1, (0, _univerjs_core.Inject)(_univerjs_ui.IconManager))], ComponentsController);
|
|
3845
4239
|
|
|
4240
|
+
//#endregion
|
|
4241
|
+
//#region src/menu/sheet-table-menu.controller.ts
|
|
4242
|
+
/**
|
|
4243
|
+
* Copyright 2023-present DreamNum Co., Ltd.
|
|
4244
|
+
*
|
|
4245
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
4246
|
+
* you may not use this file except in compliance with the License.
|
|
4247
|
+
* You may obtain a copy of the License at
|
|
4248
|
+
*
|
|
4249
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
4250
|
+
*
|
|
4251
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
4252
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
4253
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
4254
|
+
* See the License for the specific language governing permissions and
|
|
4255
|
+
* limitations under the License.
|
|
4256
|
+
*/
|
|
4257
|
+
let SheetTableMenuController = class SheetTableMenuController extends _univerjs_core.Disposable {
|
|
4258
|
+
constructor(_menuManagerService) {
|
|
4259
|
+
super();
|
|
4260
|
+
this._menuManagerService = _menuManagerService;
|
|
4261
|
+
this._initMenu();
|
|
4262
|
+
}
|
|
4263
|
+
_initMenu() {
|
|
4264
|
+
this._menuManagerService.mergeMenu(menuSchema);
|
|
4265
|
+
}
|
|
4266
|
+
};
|
|
4267
|
+
SheetTableMenuController = __decorate([__decorateParam(0, (0, _univerjs_core.Inject)(_univerjs_ui.IMenuManagerService))], SheetTableMenuController);
|
|
4268
|
+
|
|
3846
4269
|
//#endregion
|
|
3847
4270
|
//#region src/plugin.ts
|
|
3848
4271
|
let UniverSheetsTableUIPlugin = class UniverSheetsTableUIPlugin extends _univerjs_core.Plugin {
|