import { ValidationErrors } from '@angular/forms'; import { MatFormFieldAppearance } from '@angular/material/form-field'; import { Observable, Subject } from 'rxjs'; import { ActivatedRouteSnapshot } from '@angular/router'; import { ComponentType } from '@angular/cdk/portal'; import { Injector } from '@angular/core'; import { FormlyTemplateOptions, FormlyFieldConfig } from '@ngx-formly/core'; import { Store } from '@ngxs/store'; import { RestService } from '../../public-api'; import { ScGoogleMapSearchConfig, ScSearchConfig } from './generic-form.model'; declare type ScFormFieldTypes = 'datepicker' | 'textarea' | 'input' | 'select' | 'multiselect' | 'image-upload' | 'checkbox' | 'info' | 'number' | 'slide-toggle' | 'radio' | 'autocomplete' | 'toggle' | 'search' | 'location'; export declare class ScBaseFormField { type: ScFormFieldTypes; field: string; name: string; required?: boolean; validators?: ValidationErrors[]; default?: any; appearance?: MatFormFieldAppearance; hint?: string; prefix?: string; suffix?: string; step?: number; } export declare class ScInfoFormField { type: 'info'; content: string; } export declare class ScCheckboxFormField extends ScBaseFormField { type: 'checkbox'; options: { truthy: string; falsy: string; }; } export declare class ScRadioField extends ScBaseFormField { type: 'radio'; options: any[]; } export declare class ScSlideToggleField extends ScBaseFormField { type: 'slide-toggle'; options: { truthy: string; falsy: string; position?: 'left' | 'right'; }; } export declare class ScAutocompleteField extends ScBaseFormField { type: 'autocomplete'; options: { fields: Observable<{ id: string; name: any; }[]>; }; } export declare class ScSearchFormField extends ScBaseFormField { type: 'search'; options: { config: ScSearchConfig; uppercase: boolean; }; } export declare class ScLocationFormField extends ScBaseFormField { type: 'location'; options: { config: ScGoogleMapSearchConfig; }; } export declare class ScBaseSelectField extends ScBaseFormField { type: 'select'; options: ScSelectOptions; } declare class ScSelectFormField extends ScBaseSelectField { } export declare type ScFormField = ScBaseFormField | ScInfoFormField | ScSelectFormField | ScCheckboxFormField | ScRadioField | ScSlideToggleField | ScAutocompleteField | ScLocationFormField | ScSearchFormField; export interface ScGridContent { desc: string; linkSrc: string; blobSrc: string; } declare class ScOptionField { id: string | number; name: string | number; } declare class ScBaseSelectOption { type: 'internal' | 'external'; } export declare class ScInternalOption extends ScBaseSelectOption { type: 'internal'; fields: ScOptionField[]; } export declare class ScSelectFetchOptions { prop: ScColPropFunction | string; itemId: string; endpoint: string; filters?: any[]; } export declare class ExternalOption extends ScBaseSelectOption { type: 'external'; fetchOptions: ScSelectFetchOptions; } export declare type ScSelectOptions = ScInternalOption | ExternalOption; export declare class ScSelectField { type: 'select'; options: ScSelectOptions; } export declare enum ScTableAction { Create = 0, Edit = 1, Delete = 2, Link = 3, View = 4, Duplicate = 5, TextInfo = 6, RowActionBtn = 7, Select = 8, ColSelect = 9, Upload = 10, Navigate = 11, Confirm = 12, Cancel = 13 } declare class ScTableButtonAction { actionType: ScTableAction; name: string; key?: string; icon: string; } declare type ScColumnType = 'text' | 'date' | 'checkbox' | 'link' | 'routelink' | 'externallink' | 'action' | 'button' | 'task' | 'icon' | 'datepicker'; export interface ScTableSummary { label: string; result: any; type?: 'currency' | string; } export declare class ScBaseTableColumn { name: string; type?: ScColumnType; class?: string[] | ScColClassFunction; summary?: (data: any[]) => ScTableSummary[]; searchable?: boolean; currency?: string; translate?: string; sort?: boolean; sortCompare?: ScColSortCompare; isDefaultSort?: boolean; startSortDirection?: 'asc' | 'desc'; sortKey?: string; hide?: ScColPropFunction; } export declare type ScColSortCompare = (a: number | string, b: number | string, isAsc: boolean) => boolean; export declare type ScColPropFunction = (row: any) => any; export declare type ScColClassFunction = (row: any) => string[]; export declare class ScDefaultTableColumn extends ScBaseTableColumn { prop: string | ScColPropFunction; } export declare class ScIconTableColumn extends ScDefaultTableColumn { type: 'icon'; hint?: string; } export declare class ScRouteLinkColumn extends ScBaseTableColumn { type: 'routelink'; prop?: string | ScColPropFunction; options?: any; } export declare class ScActionColumn extends ScDefaultTableColumn { type: 'action'; items: ScTableButtonAction[]; } export declare class ScButtonColumn extends ScDefaultTableColumn { type: 'button'; value: string; color: 'primary' | 'accent' | 'warn'; } export declare type ScTableColumn = ScDefaultTableColumn | ScRouteLinkColumn | ScButtonColumn | ScActionColumn; export declare const DEFAULT_TABLE_ACTIONS: ScActionColumn; export declare class ScEndpointFilter { prop: string; comparison: 'equals' | 'not' | 'contains' | 'notContains'; value: any; constructor(filter: ScEndpointFilter); } export declare type ScFormFieldsFunction = () => ScFormField[] | ScFieldConfig[] | Observable; export interface ScEndpointReqScope { routeSnapshot: ActivatedRouteSnapshot; injector: Injector; rest: RestService; store: Store; _unsubscribe$?: Subject; } export declare class ScEndpointConfig { endpoint: string; filters?: ScEndpointFilter[]; beforeRequest?: (data: any) => any; afterRequest?: (data: any) => any; beforeLoad?: () => Observable | ScEndpointFilter[]; filter?: () => Observable; constructor(config: Partial); destroy(): void; } export declare type ScTemplateOtp = (rest: RestService) => Observable; export interface ScTemplateOptions extends FormlyTemplateOptions { options?: any[] | Observable | ScTemplateOtp | any; } export interface ScFieldConfig extends FormlyFieldConfig { templateOptions?: ScTemplateOptions; } export declare class ScCrudConfiguration { load: Partial; get?: Partial; create?: Partial; update?: Partial; remove?: Partial; formFields?: ScFormField[] | ScFieldConfig[] | ScFormFieldsFunction; formComponent?: ComponentType; itemId?: string; isForTesting?: boolean; isForFormly?: boolean; constructor(config: Partial); } export declare class ScCrudRules { canEdit: boolean; canDelete: boolean; canCreate: boolean; constructor(rules?: ScCrudRules); } export declare enum ScSelectionType { single = "single", multi = "multi", multiClick = "multiClick", cell = "cell", checkbox = "checkbox" } export declare const DEFAULT_VIEW_TOGGLE_ACTIONS: { name: string; type: string; icon: string; tooltip: string; }[]; declare class ScTableViewToggleAction { name: string; icon: string; tooltip: string; type: string; } export declare class ScGridActions extends ScActionColumn { } export declare type ScGridItems = [ScGridContent, ScGridActions]; export declare class ScBaseTableViewConfig { config: Partial; title: string; compact: boolean; key: string; fullHeight: boolean; crud: ScCrudConfiguration; filters: ScTableViewFilter[]; gridItems: ScGridItems | []; columns: ScTableColumn[]; toggleActions: ScTableViewToggleAction[]; summary: boolean; constructor(config: Partial); setLoadFilters(filters: ScEndpointFilter[]): ScBaseTableViewConfig; destroy(): void; private _setColumns; } export declare type ScTableViewConfig = Partial; declare type ScFromFilterTypes = 'toggle' | 'input' | 'datepicker' | 'select'; export declare class ScBaseViewFilter { type: ScFromFilterTypes; field: string; name: string; } export interface ScTableViewFilter { field: any; filter: any; } export interface ScTableActionSelection { type: ScTableAction; data: any; colProp?: string; colValue?: any; col?: any; } export declare enum ScRowAction { Add = 0, Update = 1, Delete = 2 } export interface ScRowUpdate { row: any; type: ScRowAction; } export {}; //# sourceMappingURL=table.model.d.ts.map