@sysdoc/sharepoint-utils
Version:
Sysdoc's core Sharepoint utilities
103 lines (102 loc) • 5.25 kB
TypeScript
/*!
* 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 {};