UNPKG

@sysdoc/sharepoint-utils

Version:

Sysdoc's core Sharepoint utilities

103 lines (102 loc) 5.25 kB
/*! * Copyright Sysdoc @ 2019 */ /// <reference types="sharepoint" /> import { IListItemFormUpdateValue } from "@pnp/sp-commonjs"; import { IListFormData, IWeb } from "@pnp/sp-commonjs/presets/all"; import { FormFieldModel } from "@sysdoc/forms"; import { Dictionary, ILogger } from "@sysdoc/utilities"; import { ExecutorFn } from "../util/executor"; import { IPnPField } from "./IPnPField"; import { ISPFieldDecorator } from "./ISPFieldDecorator"; import { ISPFieldsFilterStrategy } from "./ISPFieldsFilterStrategy"; import { ISPListItem } from "./ISPListItem"; import { ISPListItemSerializer } from "./ISPListItemSerializer"; import { ISPListProvider } from "./ISPListProvider"; import { ISPListProviderDelegate } from "./ISPListProviderDelegate"; export interface ISPFieldSerializer<T> { fromJson(json: T, value: any): any; toJson(item: SP.ListItem, value: any): any; } declare type DecoratorMapping<T> = { [P in keyof T]?: ISPFieldDecorator<T, T[P]>; }; declare type SerializerMapping<T> = { [P in keyof T]?: ISPFieldSerializer<T>; }; export declare const DefaultReadOnlyFields: string[]; export declare type ItemCreationStrategy<T> = (obj: T, folderStrategy?: FolderCreationStrategy<T>) => Promise<SP.ListItemCreationInformation>; export declare type FolderCreationStrategy<T> = (obj: T) => Promise<SP.Folder | string>; export interface ISPListProviderConfig<T> { listTitle?: string; listId?: string; webUrl?: string; webId?: string; itemCreationStrategy?: ItemCreationStrategy<T>; folderCreationStrategy?: FolderCreationStrategy<T>; baseContentType?: string; fieldsDecorators?: DecoratorMapping<T>; fieldsSerializers?: SerializerMapping<T>; includeFields?: string[]; readonlyFields?: string[]; fields?: Dictionary<string>; logger: ILogger; fieldsFilterStrategy?: ISPFieldsFilterStrategy; supportsAttachments?: boolean; isOnPrem?: boolean; } export declare function getSPValue(def: IPnPField, item: SP.ListItem, value: any, ctx: SP.ClientContext, list: SP.List): any; export declare class SPListProvider<T extends ISPListItem> implements ISPListProvider<number, T>, ISPListItemSerializer<T> { loadedWeb: any; $pnpList: IListFormData & { ParentWebUrl?: string; }; $pnpWeb: IWeb; readonlyFields: string[]; supportsAttachments: boolean; webId: string; fieldSerializers: SerializerMapping<T>; _ready: Promise<any>; listTitle: string; listId: string; logger: ILogger; includeFields: string[]; webUrl: string; fields: Dictionary<string>; schema: Dictionary<IPnPField>; baseContentType: string; itemCreationStrategy?: ItemCreationStrategy<T>; folderCreationStrategy?: FolderCreationStrategy<T>; fieldDecorators: DecoratorMapping<T>; filterStrategy: ISPFieldsFilterStrategy; isOnPrem: boolean; constructor(cfg: ISPListProviderConfig<T>); createSchemaFromFields(fields: IPnPField[]): any; getObjectFromFields(fields: FormFieldModel<any>[]): T; getObjectFromFieldsOnline(fields: FormFieldModel<any>[]): T; getFormValuesFromFields(fields: FormFieldModel<any>[]): any[]; itemToJson(item: SP.ListItem<any>): Partial<T>; serializeItem(json: T): Dictionary<string>; serializeItemFormValues(json: T): SP.ListItemFormUpdateValue[]; jsonToItem(json: T, item: SP.ListItem<any>): SP.ListItem<any>; whenReady(): Promise<any>; onAddAttachment(item: SP.ListItem, file: File): Promise<unknown>; onAddAttachments(item: SP.ListItem, files: File[]): Promise<unknown[]>; getSchema(): Promise<Dictionary<IPnPField>>; setSchema(schema: Dictionary<IPnPField>): void; getItemVersion(id: number, exec: ExecutorFn): Promise<unknown>; updateAndIncreaseVersion(obj: T, exec?: ExecutorFn, delegate?: ISPListProviderDelegate<T>): Promise<Partial<T>>; update(obj: any, exec?: ExecutorFn, delegate?: ISPListProviderDelegate<T>): Promise<Partial<T>>; create(obj: T, exec?: ExecutorFn, delegate?: ISPListProviderDelegate<T>): Promise<Partial<T>>; createWithInclude(obj: T, include: string, exec?: ExecutorFn, delegate?: ISPListProviderDelegate<T>): Promise<Partial<T>>; save(obj: T, exec?: ExecutorFn): Promise<T>; getByQuery(query: SP.CamlQuery, exec?: ExecutorFn, delegate?: ISPListProviderDelegate<T>): Promise<Partial<T>[]>; getByQueryWithInclude(query: SP.CamlQuery, include: string[], exec?: ExecutorFn, delegate?: ISPListProviderDelegate<T>): Promise<Partial<T>[]>; getById(itemId: number, include: string[], exec?: ExecutorFn, delegate?: ISPListProviderDelegate<T>): Promise<Partial<T>>; get(key: number, exec?: ExecutorFn, delegate?: ISPListProviderDelegate<T>): Promise<Partial<T>>; getWithInclude(key: number, include: string, exec?: ExecutorFn, delegate?: ISPListProviderDelegate<T>): Promise<Partial<T>>; updateAndValidateField(id: number, fieldName: string, fieldValue: string): Promise<IListItemFormUpdateValue[]>; delete(key: number, exec?: ExecutorFn, delegate?: ISPListProviderDelegate<T>): Promise<void>; getDecorator<Value>(key: string): ISPFieldDecorator<Value, T>; } export {};