(core) Focusing the creator panel on the table wiget for charts and custom views

Summary:
When a chart page/section is added and the creator panel is already open, focus is set to a "table" tab.
When a custom view is added as a page/section, the same thing happens, but there is also a behavioral tooltip shown
for the custom URL.

Test Plan: Updated and added.

Reviewers: georgegevoian

Reviewed By: georgegevoian

Differential Revision: https://phab.getgrist.com/D3857
This commit is contained in:
Jarosław Sadziński
2023-04-14 12:09:50 +02:00
parent cc0e1154d0
commit 40ea6bb2bc
11 changed files with 134 additions and 7 deletions

View File

@@ -104,6 +104,7 @@ export class RightPanel extends Disposable {
this.autoDispose(commands.createGroup({
fieldTabOpen: () => this._openFieldTab(),
viewTabOpen: () => this._openViewTab(),
viewTabFocus: () => this._viewTabFocus(),
sortFilterTabOpen: () => this._openSortFilter(),
dataSelectionTabOpen: () => this._openDataSelection()
}, this, true));
@@ -117,6 +118,11 @@ export class RightPanel extends Disposable {
this._open('pageWidget', 'widget');
}
private _viewTabFocus() {
// If the view tab is already open, focus on the first input.
this._focus('pageWidget');
}
private _openSortFilter() {
this._open('pageWidget', 'sortAndFilter');
}
@@ -135,6 +141,14 @@ export class RightPanel extends Disposable {
});
}
private _focus(topTab: typeof TopTab.type) {
bundleChanges(() => {
if (!this._isOpen.get()) { return; }
this._isOpen.set(true);
this._topTab.set(topTab);
});
}
private _buildHeaderDom() {
return dom.domComputed((use) => {
if (!use(this._isOpen)) { return null; }