UNPKG

@ohayojp.com/components

Version:

Common business components of ohayojp.

234 lines (233 loc) 9.03 kB
import { CdkVirtualScrollViewport } from '@angular/cdk/scrolling'; import { AfterViewInit, ChangeDetectorRef, ElementRef, EventEmitter, OnChanges, OnDestroy, SimpleChange, SimpleChanges, TemplateRef, TrackByFunction } from '@angular/core'; import { Router } from '@angular/router'; import { OhayoI18NService, OhayoLocaleService, DrawerHelper, LocaleData, ModalHelper } from '@ohayojp.com/theme'; import { OhayoConfigService, BooleanInput, NumberInput } from '@ohayojp.com/util'; import { NzSafeAny } from 'ng-zorro-antd/core/types'; import { NzResizeEvent } from 'ng-zorro-antd/resizable'; import { NzTableComponent, NzTableData } from 'ng-zorro-antd/table'; import { Observable } from 'rxjs'; import { STColumnSource } from './st-column-source'; import { STDataSource } from './st-data-source'; import { STExport } from './st-export'; import { STChange, STColumn, STColumnButton, STColumnFilterMenu, STColumnSelection, STData, STError, STExportOptions, STLoadOptions, STPage, STReq, STRes, STResetColumnsOption, STResizable, STRowClassName, STSingleSort, STStatisticalResults, STWidthMode } from './st.interfaces'; import { _STColumn } from './st.types'; export declare class STComponent implements AfterViewInit, OnChanges, OnDestroy { private cdr; private router; private el; private exportSrv; private modalHelper; private drawerHelper; private doc; private columnSource; private dataSource; private ohayoI18n; static ngAcceptInputType_ps: NumberInput; static ngAcceptInputType_pi: NumberInput; static ngAcceptInputType_total: NumberInput; static ngAcceptInputType_loadingDelay: NumberInput; static ngAcceptInputType_bordered: BooleanInput; static ngAcceptInputType_expandRowByClick: BooleanInput; static ngAcceptInputType_expandAccordion: BooleanInput; static ngAcceptInputType_rowClickTime: NumberInput; static ngAcceptInputType_responsive: BooleanInput; static ngAcceptInputType_responsiveHideHeaderFooter: BooleanInput; static ngAcceptInputType_virtualScroll: BooleanInput; static ngAcceptInputType_virtualItemSize: NumberInput; static ngAcceptInputType_virtualMaxBufferPx: NumberInput; static ngAcceptInputType_virtualMinBufferPx: NumberInput; private unsubscribe$; private data$; private totalTpl; private cog; private rowClickCount; private _req; private _res; private _page; private _widthMode; private customWidthConfig; _widthConfig: string[]; locale: LocaleData; _loading: boolean; _data: STData[]; _statistical: STStatisticalResults; _isPagination: boolean; _allChecked: boolean; _allCheckedDisabled: boolean; _indeterminate: boolean; _headers: STColumn[][]; _columns: _STColumn[]; readonly orgTable: NzTableComponent; get req(): STReq; set req(value: STReq); /** 返回体配置 */ get res(): STRes; set res(value: STRes); get page(): STPage; set page(value: STPage); data: string | STData[] | Observable<STData[]>; columns: STColumn[]; ps: number; pi: number; total: number; loading: boolean | null; loadingDelay: number; loadingIndicator: TemplateRef<void>; bordered: boolean; size: 'small' | 'middle' | 'default'; scroll: { y?: string; x?: string; }; singleSort: STSingleSort; private _multiSort?; get multiSort(): NzSafeAny; set multiSort(value: NzSafeAny); rowClassName: STRowClassName; set widthMode(value: STWidthMode); get widthMode(): STWidthMode; set widthConfig(val: string[]); private _resizable; set resizable(val: STResizable | boolean); header: string | TemplateRef<void>; footer: string | TemplateRef<void>; bodyHeader: TemplateRef<STStatisticalResults>; body: TemplateRef<STStatisticalResults>; expandRowByClick: boolean; expandAccordion: boolean; expand: TemplateRef<{ $implicit: {}; column: STColumn; }>; noResult: string | TemplateRef<void>; rowClickTime: number; responsive: boolean; responsiveHideHeaderFooter: boolean; readonly error: EventEmitter<STError>; readonly change: EventEmitter<STChange>; virtualScroll: boolean; virtualItemSize: number; virtualMaxBufferPx: number; virtualMinBufferPx: number; virtualForTrackBy: TrackByFunction<NzTableData>; /** * Get the number of the current page */ get count(): number; /** * Get the data of the current page */ get list(): STData[]; private get routerState(); constructor(i18nSrv: OhayoI18NService, cdr: ChangeDetectorRef, router: Router, el: ElementRef, exportSrv: STExport, modalHelper: ModalHelper, drawerHelper: DrawerHelper, doc: any, columnSource: STColumnSource, dataSource: STDataSource, ohayoI18n: OhayoLocaleService, configSrv: OhayoConfigService); private setCog; cd(): this; renderTotal(total: string, range: string[]): string; private changeEmit; /** * 获取过滤后所有数据 * - 本地数据:包含排序、过滤后不分页数据 * - 远程数据:不传递 `pi`、`ps` 两个参数 */ get filteredData(): Promise<STData[]>; private updateTotalTpl; private setLoading; private loadData; private loadPageData; /** 清空所有数据 */ clear(cleanStatus?: boolean): this; /** 清空所有状态 */ clearStatus(): this; /** * 根据页码重新加载数据 * * @param pi 指定当前页码,默认:`1` * @param extraParams 重新指定 `extraParams` 值 * @param options 选项 */ load(pi?: number, extraParams?: {}, options?: STLoadOptions): this; /** * 重新刷新当前页 * @param extraParams 重新指定 `extraParams` 值 */ reload(extraParams?: {}, options?: STLoadOptions): this; /** * 重置且重新设置 `pi` 为 `1`,包含以下值: * - `check` 数据 * - `radio` 数据 * - `sort` 数据 * - `fileter` 数据 * * @param extraParams 重新指定 `extraParams` 值 */ reset(extraParams?: {}, options?: STLoadOptions): this; private _toTop; _change(type: 'pi' | 'ps', options?: STLoadOptions): void; _click(e: Event, item: STData, col: STColumn): boolean; private closeOtherExpand; _rowClick(e: Event, item: STData, index: number): void; _expandChange(item: STData, expand: boolean): void; /** * Remove a row in the table, like this: * * ``` * this.st.removeRow(0) * this.st.removeRow(stDataItem) * ``` */ removeRow(data: STData | STData[] | number): this; /** * Sets the row value for the `index` in the table, like this: * * - `optinos.refreshSchema` Whether to refresh of st schemas * - `optinos.emitReload` Whether to trigger a reload http request when data is url * * ``` * this.st.setRow(0, { price: 100 }) * this.st.setRow(0, { price: 100, name: 'asdf' }) * ``` */ setRow(index: number, item: STData, options?: { refreshSchema?: boolean; emitReload?: boolean; }): this; sort(col: _STColumn, idx: number, value: any): void; clearSort(): this; private handleFilter; _filterConfirm(col: _STColumn): void; _filterRadio(col: _STColumn, item: STColumnFilterMenu, checked: boolean): void; _filterClear(col: _STColumn): void; clearFilter(): this; _filterClick($event: MouseEvent): void; /** 清除所有 `checkbox` */ clearCheck(): this; private _refCheck; _checkAll(checked?: boolean): this; _checkSelection(i: STData, value: boolean): this; _rowSelection(row: STColumnSelection): this; _checkNotify(): this; /** 清除所有 `radio` */ clearRadio(): this; _refRadio(checked: boolean, item: STData): this; _btnClick(record: STData, btn: STColumnButton, e?: Event): void; private btnCallback; _btnText(record: STData, btn: STColumnButton): string; _validBtns(btns: STColumnButton[], item: STData, col: STColumn): STColumnButton[]; /** * 导出当前页,确保已经注册 `XlsxModule` * @param newData 重新指定数据;若为 `true` 表示使用 `filteredData` 数据 * @param opt 额外参数 */ export(newData?: STData[] | true, opt?: STExportOptions): void; colResize({ width }: NzResizeEvent, column: _STColumn): void; get cdkVirtualScrollViewport(): CdkVirtualScrollViewport; resetColumns(options?: STResetColumnsOption): Promise<this>; private refreshColumns; private optimizeData; ngAfterViewInit(): void; ngOnChanges(changes: { [P in keyof this]?: SimpleChange; } & SimpleChanges): void; ngOnDestroy(): void; }