mirror of
https://github.com/gristlabs/grist-core.git
synced 2024-10-27 20:44:07 +00:00
8056bb0069
Summary: - close sort&filter menu when clicking Save/Revert buttons - also closes when clicking Apply/Cancel from a nested filter menu Test Plan: - updated existing test to match new spec - added new test to cover new behaviour Reviewers: paulfitz Reviewed By: paulfitz Differential Revision: https://phab.getgrist.com/D2799
329 lines
12 KiB
TypeScript
329 lines
12 KiB
TypeScript
declare module "app/client/components/AceEditor";
|
|
declare module "app/client/components/Clipboard";
|
|
declare module "app/client/components/CodeEditorPanel";
|
|
declare module "app/client/components/DetailView";
|
|
declare module "app/client/components/DocConfigTab";
|
|
declare module "app/client/components/GridView";
|
|
declare module "app/client/components/Layout";
|
|
declare module "app/client/components/LayoutEditor";
|
|
declare module "app/client/components/REPLTab";
|
|
declare module "app/client/components/commandList";
|
|
declare module "app/client/lib/Mousetrap";
|
|
declare module "app/client/lib/browserGlobals";
|
|
declare module "app/client/lib/dom";
|
|
declare module "app/client/lib/koDom";
|
|
declare module "app/client/lib/koForm";
|
|
declare module "app/client/lib/koSession";
|
|
declare module "app/client/widgets/UserType";
|
|
declare module "app/client/widgets/UserTypeImpl";
|
|
|
|
// tslint:disable:max-classes-per-file
|
|
|
|
declare module "app/client/components/Base" {
|
|
import {GristDoc} from 'app/client/components/GristDoc';
|
|
|
|
namespace Base { }
|
|
class Base {
|
|
public static setBaseFor(ctor: any): void;
|
|
constructor(gristDoc: GristDoc);
|
|
}
|
|
export = Base;
|
|
}
|
|
|
|
declare module "app/client/components/BaseView" {
|
|
|
|
import {Cursor, CursorPos} from 'app/client/components/Cursor';
|
|
import {GristDoc} from 'app/client/components/GristDoc';
|
|
import {Disposable} from 'app/client/lib/dispose';
|
|
import * as BaseRowModel from "app/client/models/BaseRowModel";
|
|
import {DataRowModel} from 'app/client/models/DataRowModel';
|
|
import {LazyArrayModel} from "app/client/models/DataTableModel";
|
|
import * as DataTableModel from "app/client/models/DataTableModel";
|
|
import {ViewFieldRec, ViewSectionRec} from "app/client/models/DocModel";
|
|
import {SortedRowSet} from 'app/client/models/rowset';
|
|
import {FieldBuilder} from "app/client/widgets/FieldBuilder";
|
|
import {DomArg} from 'grainjs';
|
|
import {IOpenController} from 'popweasel';
|
|
|
|
namespace BaseView {}
|
|
class BaseView extends Disposable {
|
|
public viewSection: ViewSectionRec;
|
|
public viewPane: any;
|
|
public viewData: LazyArrayModel<BaseRowModel>;
|
|
public gristDoc: GristDoc;
|
|
public cursor: Cursor;
|
|
public sortedRows: SortedRowSet;
|
|
public activeFieldBuilder: ko.Computed<FieldBuilder>;
|
|
public disableEditing: ko.Computed<boolean>;
|
|
public isTruncated: ko.Observable<boolean>;
|
|
protected tableModel: DataTableModel;
|
|
|
|
constructor(gristDoc: GristDoc, viewSectionModel: any);
|
|
public setCursorPos(cursorPos: CursorPos): void;
|
|
public createFilterMenu(ctl: IOpenController, field: ViewFieldRec, onClose?: () => void): HTMLElement;
|
|
public buildTitleControls(): DomArg;
|
|
public getLoadingDonePromise(): Promise<void>;
|
|
public onResize(): void;
|
|
public prepareToPrint(onOff: boolean): void;
|
|
public moveEditRowToCursor(): DataRowModel;
|
|
}
|
|
export = BaseView;
|
|
}
|
|
|
|
declare module "app/client/components/RefSelect" {
|
|
import {Disposable} from 'app/client/lib/dispose';
|
|
import {ColumnRec} from "app/client/models/DocModel";
|
|
import {DocModel} from "app/client/models/DocModel";
|
|
import {FieldBuilder} from "app/client/widgets/FieldBuilder";
|
|
|
|
namespace RefSelect {}
|
|
class RefSelect extends Disposable {
|
|
public isForeignRefCol: ko.Computed<boolean>;
|
|
|
|
constructor(options: {
|
|
docModel: DocModel,
|
|
origColumn: ColumnRec,
|
|
fieldBuilder: ko.Computed<FieldBuilder|null>,
|
|
});
|
|
public buildDom(): HTMLElement;
|
|
}
|
|
export = RefSelect;
|
|
}
|
|
|
|
declare module "app/client/components/ViewConfigTab" {
|
|
import {GristDoc, TabContent} from 'app/client/components/GristDoc';
|
|
import {Disposable} from 'app/client/lib/dispose';
|
|
import {KoArray} from "app/client/lib/koArray";
|
|
import {ColumnRec, ViewRec, ViewSectionRec} from "app/client/models/DocModel";
|
|
import {DomArg} from 'grainjs';
|
|
|
|
namespace ViewConfigTab {
|
|
interface ViewSectionData {
|
|
section: ViewSectionRec;
|
|
hiddenFields: KoArray<ColumnRec>;
|
|
}
|
|
}
|
|
|
|
class ViewConfigTab extends Disposable {
|
|
constructor(options: {gristDoc: GristDoc, viewModel: ViewRec, skipDomBuild?: boolean});
|
|
public buildConfigDomObj(): TabContent[];
|
|
public buildSortDom(): DomArg;
|
|
// TODO: these should be made private or renamed.
|
|
public _buildSectionFieldsConfig(): DomArg;
|
|
public _buildNameDom(): DomArg;
|
|
public _buildSectionNameDom(): DomArg;
|
|
public _buildAdvancedSettingsDom(): DomArg;
|
|
public _buildDetailTypeDom(): DomArg;
|
|
public _buildFilterDom(): DomArg;
|
|
public _buildThemeDom(): DomArg;
|
|
public _buildGridStyleDom(): DomArg;
|
|
public _buildChartConfigDom(): DomArg;
|
|
public _buildLayoutDom(): DomArg;
|
|
public _buildLinkDom(): DomArg;
|
|
public _buildCustomTypeItems(): DomArg;
|
|
}
|
|
export = ViewConfigTab;
|
|
}
|
|
|
|
declare module "app/client/components/commands" {
|
|
export class Command {
|
|
public name: string;
|
|
public desc: string;
|
|
public humanKeys: string[];
|
|
public keys: string[];
|
|
public run: () => any;
|
|
}
|
|
|
|
export type CommandsGroup = any;
|
|
export const init: any;
|
|
export const allCommands: any;
|
|
export const createGroup: any;
|
|
}
|
|
|
|
declare module "app/client/lib/tableUtil" {
|
|
|
|
import {KoArray} from 'app/client/lib/koArray';
|
|
import {ViewFieldRec} from 'app/client/models/DocModel';
|
|
|
|
function insertPositions(lowerPos: number|null, upperPos: number|null, numInserts: number): number[];
|
|
function fieldInsertPositions(viewFields: KoArray<ViewFieldRec>, index: number, numInserts: number): number[];
|
|
}
|
|
|
|
declare module "app/client/models/BaseRowModel" {
|
|
import {Disposable} from 'app/client/lib/dispose';
|
|
import * as TableModel from 'app/client/models/TableModel';
|
|
import {ColValues} from 'app/common/DocActions';
|
|
|
|
namespace BaseRowModel {}
|
|
class BaseRowModel extends Disposable {
|
|
public id: ko.Computed<number>;
|
|
public _index: ko.Observable<number|null>;
|
|
public _table: TableModel;
|
|
protected _rowId: number | 'new' | null;
|
|
protected _fields: string[];
|
|
public getRowId(): number;
|
|
public updateColValues(colValues: ColValues): Promise<void>;
|
|
}
|
|
export = BaseRowModel;
|
|
}
|
|
|
|
declare module "app/client/models/MetaRowModel" {
|
|
import * as BaseRowModel from "app/client/models/BaseRowModel";
|
|
namespace MetaRowModel {}
|
|
class MetaRowModel extends BaseRowModel {
|
|
public _isDeleted: ko.Observable<boolean>;
|
|
public events: { trigger: (key: string) => void };
|
|
}
|
|
export = MetaRowModel;
|
|
}
|
|
|
|
declare module "app/client/models/modelUtil" {
|
|
interface SaveInterface<T> {
|
|
saveOnly(value: T): Promise<void>;
|
|
save(): Promise<void>;
|
|
setAndSave(value: T): Promise<void>;
|
|
}
|
|
|
|
type KoSaveableObservable<T> = ko.Observable<T> & SaveInterface<T>;
|
|
type KoSaveableComputed<T> = ko.Computed<T> & SaveInterface<T>;
|
|
|
|
interface CustomComputed<T> extends KoSaveableComputed<T> {
|
|
isSaved: ko.Computed<boolean>;
|
|
revert(): void;
|
|
}
|
|
|
|
function addSaveInterface<T>(
|
|
obs: ko.Observable<T>|ko.Computed<T>,
|
|
saveFunc: (value: T) => Promise<void>): KoSaveableObservable<T>;
|
|
|
|
interface ObjObservable<T> extends ko.Observable<T> {
|
|
update(obj: T): void;
|
|
prop(propName: string): ko.Observable<any>;
|
|
}
|
|
|
|
interface SaveableObjObservable<T> extends ko.Observable<T>, SaveInterface<T> {
|
|
update(obj: T): void;
|
|
prop(propName: string): KoSaveableObservable<any>;
|
|
}
|
|
|
|
function objObservable<T>(obs: ko.Observable<T>): ObjObservable<T>;
|
|
function jsonObservable(obs: KoSaveableObservable<string>,
|
|
modifierFunc?: any, optContext?: any): SaveableObjObservable<any>;
|
|
function jsonObservable(obs: ko.Observable<string>|ko.Computed<string>,
|
|
modifierFunc?: any, optContext?: any): ObjObservable<any>;
|
|
|
|
function fieldWithDefault<T>(fieldObs: KoSaveableObservable<T>, defaultOrFunc: T | (() => T)):
|
|
KoSaveableObservable<T>;
|
|
|
|
function customValue<T>(obs: KoSaveableObservable<T>): CustomComputed<T>;
|
|
|
|
function savingComputed<T>(options: {
|
|
read: () => T,
|
|
write: (setter: (obs: ko.Observable<T>, val: T) => void, val: T) => void;
|
|
}): KoSaveableObservable<T>;
|
|
|
|
function customComputed<T>(options: {
|
|
read: () => T,
|
|
save?: (val: T) => Promise<void>;
|
|
}): CustomComputed<T>;
|
|
|
|
function setSaveValue<T>(obs: KoSaveableObservable<T>, val: T): Promise<void>;
|
|
}
|
|
|
|
declare module "app/client/models/TableModel" {
|
|
import {DocModel} from "app/client/models/DocModel";
|
|
import {RowGrouping, RowSource} from "app/client/models/rowset";
|
|
import {TableData} from "app/client/models/TableData";
|
|
import {CellValue, UserAction} from "app/common/DocActions";
|
|
|
|
namespace TableModel {}
|
|
class TableModel extends RowSource {
|
|
public docModel: DocModel;
|
|
public tableData: TableData;
|
|
public isLoaded: ko.Observable<boolean>;
|
|
|
|
constructor(docModel: DocModel, tableData: TableData);
|
|
public fetch(force?: boolean): Promise<void>;
|
|
public getAllRows(): ReadonlyArray<number>;
|
|
public getNumRows(): number;
|
|
public getRowGrouping(groupByCol: string): RowGrouping<CellValue>;
|
|
public sendTableActions(actions: UserAction[], optDesc?: string): Promise<any[]>;
|
|
public sendTableAction(action: UserAction, optDesc?: string): Promise<any> | undefined;
|
|
}
|
|
export = TableModel;
|
|
}
|
|
|
|
declare module "app/client/models/MetaTableModel" {
|
|
import {KoArray} from "app/client/lib/koArray";
|
|
import {DocModel} from "app/client/models/DocModel";
|
|
import * as MetaRowModel from "app/client/models/MetaRowModel";
|
|
import {RowSource} from "app/client/models/rowset";
|
|
import {TableData} from "app/client/models/TableData";
|
|
import * as TableModel from "app/client/models/TableModel";
|
|
import {CellValue} from "app/common/DocActions";
|
|
|
|
namespace MetaTableModel {}
|
|
class MetaTableModel<RowModel extends MetaRowModel> extends TableModel {
|
|
public rowModels: RowModel[];
|
|
|
|
constructor(docModel: DocModel, tableData: TableData, fields: string[], rowConstructor: (dm: DocModel) => void);
|
|
public loadData(): void;
|
|
public getRowModel(rowId: number, dependOnVersion?: boolean): RowModel;
|
|
public getEmptyRowModel(): RowModel;
|
|
public createFloatingRowModel(rowIdObs: ko.Observable<number>|ko.Computed<number>): RowModel;
|
|
public createRowGroupModel(groupValue: CellValue, options: {groupBy: string, sortBy: string}): KoArray<RowModel>;
|
|
public createAllRowsModel(sortColId: string): KoArray<RowModel>;
|
|
public _createRowSetModel(rowSource: RowSource, sortColId: string): KoArray<RowModel>;
|
|
}
|
|
export = MetaTableModel;
|
|
}
|
|
|
|
declare module "app/client/models/DataTableModel" {
|
|
import {KoArray} from "app/client/lib/koArray";
|
|
import * as BaseRowModel from "app/client/models/BaseRowModel";
|
|
import {DocModel, TableRec} from "app/client/models/DocModel";
|
|
import {TableQuerySets} from 'app/client/models/QuerySet';
|
|
import {SortedRowSet} from "app/client/models/rowset";
|
|
import {TableData} from "app/client/models/TableData";
|
|
import * as TableModel from "app/client/models/TableModel";
|
|
|
|
namespace DataTableModel {
|
|
interface LazyArrayModel<T> extends KoArray<T | null> {
|
|
getRowId(index: number): number;
|
|
getRowIndex(index: number): number;
|
|
getRowIndexWithSub(rowId: number): number;
|
|
getRowModel(rowId: number): T|undefined;
|
|
}
|
|
}
|
|
|
|
class DataTableModel extends TableModel {
|
|
public tableMetaRow: TableRec;
|
|
public tableQuerySets: TableQuerySets;
|
|
|
|
constructor(docModel: DocModel, tableData: TableData, tableMetaRow: TableRec);
|
|
public createLazyRowsModel(sortedRowSet: SortedRowSet, optRowModelClass: any):
|
|
DataTableModel.LazyArrayModel<BaseRowModel>;
|
|
public createFloatingRowModel(optRowModelClass: any): BaseRowModel;
|
|
}
|
|
export = DataTableModel;
|
|
}
|
|
|
|
declare module "app/client/lib/koUtil" {
|
|
export interface ComputedWithKoUtils<T> extends ko.Computed<T> {
|
|
onlyNotifyUnequal(): this;
|
|
}
|
|
export interface ObservableWithKoUtils<T> extends ko.Observable<T> {
|
|
assign(value: unknown): this;
|
|
}
|
|
export function withKoUtils<T>(computed: ko.Computed<T>): ComputedWithKoUtils<T>;
|
|
export function withKoUtils<T>(computed: ko.Observable<T>): ObservableWithKoUtils<T>;
|
|
export function computedBuilder(callback: any, optContext: any): any;
|
|
export function observableWithDefault(obs: any, defaultOrFunc: any, optContext?: any): any;
|
|
export function computedAutoDispose(optionsOrReadFunc: any, target: any, options: any): any;
|
|
}
|
|
|
|
// Used in browser check. Bowser does in fact have types, but not the bundled version
|
|
// with polyfills for old browsers.
|
|
declare module "bowser/bundled";
|
|
declare module "randomcolor";
|