feat(grid): keep filter editor expanded
This commit is contained in:
19 files changed
+157
-45
No files matched your search
@@ -110,6 +110,7 @@ describe("EDITOR_SETTINGS_DRAFT_KEYS", () => {
|
||||
|
||||
it("includes the data grid filter view", () => {
|
||||
expect(EDITOR_SETTINGS_DRAFT_KEYS).toContain("dataGridFilterEditorView");
|
||||
expect(EDITOR_SETTINGS_DRAFT_KEYS).toContain("dataGridKeepFilterEditorExpanded");
|
||||
expect(EDITOR_SETTINGS_DRAFT_KEYS).toContain("dataGridTextFilterPanelHeight");
|
||||
});
|
||||
|
||||
@@ -196,9 +197,10 @@ describe("editorSettingsDraftFromSettings", () => {
|
||||
expect(editorSettingsDraftFromSettings(makeSettings({ colorizeDataGridCellTypes: false })).colorizeDataGridCellTypes).toBe(false);
|
||||
});
|
||||
|
||||
it("maps the data grid filter view from settings", () => {
|
||||
const draft = editorSettingsDraftFromSettings(makeSettings({ dataGridFilterEditorView: "text", dataGridTextFilterPanelHeight: 224 }));
|
||||
it("maps the data grid filter view and persistent expansion from settings", () => {
|
||||
const draft = editorSettingsDraftFromSettings(makeSettings({ dataGridFilterEditorView: "text", dataGridKeepFilterEditorExpanded: true, dataGridTextFilterPanelHeight: 224 }));
|
||||
expect(draft.dataGridFilterEditorView).toBe("text");
|
||||
expect(draft.dataGridKeepFilterEditorExpanded).toBe(true);
|
||||
expect(draft.dataGridTextFilterPanelHeight).toBe(224);
|
||||
});
|
||||
|
||||
|
||||
@@ -137,6 +137,25 @@ describe("settingsTransfer", () => {
|
||||
expect(result.value.categories).toEqual(["appearance"]);
|
||||
});
|
||||
|
||||
it("round-trips persistent filter editor expansion as a data setting", () => {
|
||||
const result = parseSettingsTransferFile(fileWith({ dataGridKeepFilterEditorExpanded: true }));
|
||||
expect(result.ok).toBe(true);
|
||||
if (!result.ok) return;
|
||||
expect(result.value.editorSettings.dataGridKeepFilterEditorExpanded).toBe(true);
|
||||
expect(result.value.categories).toEqual(["data"]);
|
||||
expect(transferCategoryForKey("dataGridKeepFilterEditorExpanded")).toBe("data");
|
||||
});
|
||||
|
||||
it("migrates the legacy auto-hide filter preference from older exports", () => {
|
||||
const expanded = parseSettingsTransferFile(fileWith({ dataGridAutoHideFilterBuilder: false }));
|
||||
expect(expanded.ok).toBe(true);
|
||||
if (expanded.ok) expect(expanded.value.editorSettings.dataGridKeepFilterEditorExpanded).toBe(true);
|
||||
|
||||
const collapsed = parseSettingsTransferFile(fileWith({ dataGridAutoHideFilterBuilder: true }));
|
||||
expect(collapsed.ok).toBe(true);
|
||||
if (collapsed.ok) expect(collapsed.value.editorSettings.dataGridKeepFilterEditorExpanded).toBe(false);
|
||||
});
|
||||
|
||||
it("ignores unknown fields instead of importing them", () => {
|
||||
const result = parseSettingsTransferFile(
|
||||
fileWith({
|
||||
|
||||
@@ -50,7 +50,7 @@ export const EDITOR_SETTINGS_DRAFT_KEYS = [
|
||||
"compactColumnHeaderActions",
|
||||
"dataGridQuickEntry",
|
||||
"dataGridFilterEditorView",
|
||||
"dataGridAutoHideFilterBuilder",
|
||||
"dataGridKeepFilterEditorExpanded",
|
||||
"dataGridTextFilterPanelHeight",
|
||||
"multiStatementDefaultView",
|
||||
"dataGridAutoTransposeSingleRow",
|
||||
|
||||
@@ -141,7 +141,7 @@ const SETTINGS_TRANSFER_CATEGORY_KEYS: Record<SettingsTransferCategoryId, readon
|
||||
"compactColumnHeaderActions",
|
||||
"dataGridQuickEntry",
|
||||
"dataGridFilterEditorView",
|
||||
"dataGridAutoHideFilterBuilder",
|
||||
"dataGridKeepFilterEditorExpanded",
|
||||
"dataGridTextFilterPanelHeight",
|
||||
"multiStatementDefaultView",
|
||||
"dataGridAutoTransposeSingleRow",
|
||||
@@ -468,6 +468,13 @@ export function parseSettingsTransferFile(text: string): { ok: true; value: Pars
|
||||
const editor = settings.editor;
|
||||
if (!isPlainObject(editor)) return { ok: false, error: { code: "empty-settings" } };
|
||||
|
||||
// Old exports used the inverse `dataGridAutoHideFilterBuilder` flag. Keep
|
||||
// accepting it, but normalize it into the single current preference before
|
||||
// applying the strict whitelist below.
|
||||
if (!("dataGridKeepFilterEditorExpanded" in editor) && typeof editor.dataGridAutoHideFilterBuilder === "boolean") {
|
||||
editor.dataGridKeepFilterEditorExpanded = !editor.dataGridAutoHideFilterBuilder;
|
||||
}
|
||||
|
||||
const presentKeys = EDITOR_SETTINGS_DRAFT_KEYS.filter((key) => key in editor);
|
||||
if (presentKeys.length === 0) return { ok: false, error: { code: "empty-settings" } };
|
||||
|
||||
|
||||
Reference in new issue
Block a user