@kwiz/common
Version:
KWIZ common utilities and helpers for M365 platform
1,467 lines (1,405 loc) • 43.8 kB
text/typescript
/** types for known OOB SharePoint objects - do not import */
//todo: Kevin - make a disctinction between this file and the utils.types file
//keep full SP objects here, move the ones our API created to the utils types
//have a consistent naming convention, usually I[]Info refers to our objects, but iList is our API object and IListInfo seems to be the full object
export interface IFieldJsonSchema {
Attributes: {
ID?: string;
Name?: string;
StaticName?: string;
[key: string]: string;
};
Customizations: { [PropertyName: string]: string; };
Choices?: string[];
}
export interface IFieldJsonSchemaLookup extends IFieldJsonSchema {
Attributes: {
Mult?: "TRUE" | "FALSE";
WebId?: string;
List?: string;
ShowField?: string;
};
}
// eslint-disable-next-line no-shadow
export enum PageType {
Invalid = -1,
DefaultView = 0,
NormalView = 1,
DialogView = 2,
View = 3,
DisplayForm = 4,
DisplayFormDialog = 5,
EditForm = 6,
EditFormDialog = 7,
NewForm = 8,
NewFormDialog = 9,
SolutionForm = 10,
PAGE_MAXITEMS = 11
}
export interface IContentTypeInfo {
Description: string;
DisplayFormTemplateName: string;
DisplayFormUrl: string;
DocumentTemplate: string;
DocumentTemplateUrl: string;
EditFormTemplateName: string;
EditFormUrl: string;
Group: string;
Hidden: boolean;
Id: {
StringValue: string;
};
JSLink: string;
MobileDisplayFormUrl: string;
MobileEditFormUrl: string;
MobileNewFormUrl: string;
Name: string;
NewFormTemplateName: string;
NewFormUrl: string;
ReadOnly: boolean;
SchemaXml: string;
Scope: string;
Sealed: boolean;
StringId: string;
}
// eslint-disable-next-line no-shadow
export enum ChoiceFieldFormatType {
Dropdown = 0,
RadioButtons = 1
}
export interface IFieldInfo {
DefaultFormula: string | null;
DefaultValue: string | null;
Description: string;
//Direction: string;
EnforceUniqueValues: boolean;
//EntityPropertyName: string;
FieldTypeKind: FieldTypes;
//Filterable: boolean;
//FromBaseType: boolean;
Group: string;
Hidden: boolean;
Id: string;
Indexed: boolean;
//IndexStatus: number;
InternalName: string;
JSLink: string;
//PinnedToFiltersPane: boolean;
ReadOnlyField: boolean;
Required: boolean;
SchemaXml: string;
//Scope: string;
//Sealed: boolean;
//ShowInFiltersPane: number;
//Sortable: boolean;
StaticName: string;
Title: string;
TypeAsString: string | FieldTypeAsString;
ClientSideComponentProperties?: string;
ClientSideComponentId?: string;
//TypeDisplayName: string;
//TypeShortDescription: string;
//ValidationFormula: string | null;
//ValidationMessage: string | null;
}
// eslint-disable-next-line no-shadow
export enum DateTimeFieldFormatType {
DateOnly = 0,
DateTime = 1
}
// eslint-disable-next-line no-shadow
export enum DateTimeFieldFriendlyFormatType {
// Undefined. The default rendering will be used.
Unspecified = 0,
// The standard absolute representation will be used.
Disabled = 1,
// The standard friendly relative representation will be used (for example, "today at 3:00 PM").
Relative = 2
}
// eslint-disable-next-line no-shadow
export enum UrlFieldFormatType {
Hyperlink = 0,
Image = 1
}
// eslint-disable-next-line no-shadow
export enum FieldTypes {
Invalid = 0,
Integer = 1,
Text = 2,
Note = 3,
DateTime = 4,
Counter = 5,
Choice = 6,
Lookup = 7,
Boolean = 8,
Number = 9,
Currency = 10,
URL = 11,
Computed = 12,
Threading = 13,
Guid = 14,
MultiChoice = 15,
GridChoice = 16,
Calculated = 17,
File = 18,
Attachments = 19,
User = 20,
Recurrence = 21,
CrossProjectLink = 22,
ModStat = 23,
Error = 24,
ContentTypeId = 25,
PageSeparator = 26,
ThreadIndex = 27,
WorkflowStatus = 28,
AllDayEvent = 29,
WorkflowEventType = 30,
Geolocation = 31,
Location = 33
}
// eslint-disable-next-line no-shadow
export enum ListTemplateTypes {
AccessRequest = 160,
AdminTasks = 1200,
Agenda = 201,
Announcements = 104,
AppDataCatalog = 125,
CallTrack = 404,
Categories = 303,
Circulation = 405,
Comments = 302,
Contacts = 105,
CustomGrid = 120,
DataConnectionLibrary = 130,
DataSources = 110,
Decision = 204,
DesignCatalog = 124,
DeveloperSiteDraftApps = 1230,
DiscussionBoard = 108,
DocumentLibrary = 101,
Events = 106,
ExternalList = 600,
Facility = 402,
GanttTasks = 150,
GenericList = 100,
HealthReports = 1221,
HealthRules = 1220,
HelpLibrary = 151,
Holidays = 421,
HomePageLibrary = 212,
IMEDic = 499,
InvalidType = -1,
IssueTracking = 1100,
Links = 103,
ListTemplateCatalog = 114,
MaintenanceLogs = 175,
MasterPageCatalog = 116,
MeetingObjective = 207,
Meetings = 200,
MeetingUser = 202,
MySiteDocumentLibrary = 700,
NoCodePublic = 122,
NoCodeWorkflows = 117,
NoListTemplate = 0,
PictureLibrary = 109,
Posts = 301,
SolutionCatalog = 121,
Survey = 102,
Tasks = 107,
TasksWithTimelineAndHierarchy = 171,
TextBox = 210,
ThemeCatalog = 123,
ThingsToBring = 211,
Timecard = 420,
UserInformation = 112,
WebPageLibrary = 119,
WebPartCatalog = 113,
WebTemplateCatalog = 111,
Whereabouts = 403,
WorkflowHistory = 140,
WorkflowProcess = 118,
XMLForm = 115
}
// eslint-disable-next-line no-shadow
export enum BaseTypes {
DiscussionBoard = 3,
DocumentLibrary = 1,
GenericList = 0,
Issue = 5,
Survey = 4,
UnspecifiedBaseType = -1,
Unused = 2
}
export interface ISiteUserProps {
/**
* Contains Site user email
*
*/
Email: string;
/**
* Contains Site user Id
*
*/
Id: number;
/**
* Site user IsHiddenInUI
*
*/
IsHiddenInUI: boolean;
/**
* Site user IsShareByEmailGuestUser
*
*/
IsShareByEmailGuestUser: boolean;
/**
* Describes if Site user Is Site Admin
*
*/
IsSiteAdmin: boolean;
/**
* Site user LoginName
*
*/
LoginName: string;
/**
* Site user Principal type
*
*/
PrincipalType: number | PrincipalType;
/**
* Site user Title
*
*/
Title: string;
}
export interface ISiteUserInfo extends ISiteUserProps {
Expiration: string;
IsEmailAuthenticationGuestUser: boolean;
UserId: {
NameId: string;
NameIdIssuer: string;
};
UserPrincipalName: string | null;
}
export interface IAttachmentInfo {
//EntityTypeName: string;
FileName: string;
FileNameAsPath: {
DecodedUrl: string;
};
ServerRelativePath: {
DecodedUrl: string;
};
ServerRelativeUrl: string;
}
export interface IWebInfo {
AlternateCssUrl: string;
AppInstanceId: string;
ClassicWelcomePage: string | null;
Configuration: number;
Created: string;
CurrentChangeToken: {
StringValue: string;
};
CustomMasterUrl: string;
Description: string;
DesignPackageId: string;
DocumentLibraryCalloutOfficeWebAppPreviewersDisabled: boolean;
EnableMinimalDownload: boolean;
FooterEmphasis: number;
FooterEnabled: boolean;
FooterLayout: number;
HeaderEmphasis: number;
HeaderLayout: number;
HorizontalQuickLaunch: boolean;
Id: string;
IsHomepageModernized: boolean;
IsMultilingual: boolean;
IsRevertHomepageLinkHidden: boolean;
Language: number;
LastItemModifiedDate: string;
LastItemUserModifiedDate: string;
MasterUrl: string;
MegaMenuEnabled: boolean;
NavAudienceTargetingEnabled: boolean;
NoCrawl: boolean;
ObjectCacheEnabled: boolean;
OverwriteTranslationsOnChange: boolean;
QuickLaunchEnabled: boolean;
RecycleBinEnabled: boolean;
ResourcePath: {
DecodedUrl: string;
};
SearchScope: number;
ServerRelativeUrl: string;
SiteLogoUrl: string | null;
SyndicationEnabled: boolean;
TenantAdminMembersCanShare: number;
Title: string;
TreeViewEnabled: boolean;
UIVersion: number;
UIVersionConfigurationEnabled: boolean;
Url: string;
/**STS, APP, WIKI, MPS, APPCATALOG, DEV, PWA, PWS, SPS, GROUP or other... */
WebTemplate: "STS" | "APP" | "WIKI" | "MPS" | "APPCATALOG" | "DEV" | "PWA" | "PWS" | "SPS" | "GROUP" | string;
WelcomePage: string;
}
export interface ISiteGroupInfo {
AllowMembersEditMembership: boolean;
AllowRequestToJoinLeave: boolean;
AutoAcceptRequestToJoinLeave: boolean;
Description: string;
Id: number;
IsHiddenInUI: boolean;
LoginName: string;
OnlyAllowMembersViewMembership: boolean;
OwnerTitle: string;
PrincipalType: PrincipalType.SharePointGroup;
RequestToJoinLeaveEmailSetting: string | null;
Title: string;
}
export interface IContentTypeInfo {
Description: string;
DisplayFormTemplateName: string;
DisplayFormUrl: string;
DocumentTemplate: string;
DocumentTemplateUrl: string;
EditFormTemplateName: string;
EditFormUrl: string;
Group: string;
Hidden: boolean;
Id: {
StringValue: string;
};
JSLink: string;
MobileDisplayFormUrl: string;
MobileEditFormUrl: string;
MobileNewFormUrl: string;
Name: string;
NewFormTemplateName: string;
NewFormUrl: string;
ReadOnly: boolean;
SchemaXml: string;
Scope: string;
Sealed: boolean;
StringId: string;
}
// eslint-disable-next-line no-shadow
export enum ViewScope {
DefaultValue = 0,
Recursive = 1,
RecursiveAll = 2,
FilesOnly = 3
}
export interface IViewInfo {
EditorModified: boolean;
Formats: string | null;
Hidden: boolean;
HtmlSchemaXml: string;
Id: string;
ImageUrl: string;
IncludeRootFolder: boolean;
JSLink: string;
ListViewXml: string;
Method: string | null;
MobileDefaultView: boolean;
MobileView: boolean;
ModerationType: string | null;
NewDocumentTemplates: string;
OrderedView: boolean;
Paged: boolean;
PersonalView: boolean;
ReadOnlyView: boolean;
RequiresClientIntegration: boolean;
RowLimit: number;
Scope: ViewScope;
ServerRelativePath: {
DecodedUrl: string;
};
ServerRelativeUrl: string;
StyleId: string | null;
TabularView: boolean;
Threaded: boolean;
Title: string;
Toolbar: string;
ToolbarTemplateName: string | null;
ViewData: string | null;
ViewJoins: string | null;
ViewProjectedFields: {
SchemaXml: string;
} | null;
ViewQuery: string;
ViewType: string;
VisualizationInfo: any | null;
DefaultView?: boolean;
}
export interface ICamlQuery {
/**
* Gets or sets a value that indicates whether the query returns dates in Coordinated Universal Time (UTC) format.
*/
DatesInUtc?: boolean;
/**
* Gets or sets a value that specifies the server relative URL of a list folder from which results will be returned.
*/
FolderServerRelativeUrl?: string;
/**
* Gets or sets a value that specifies the information required to get the next page of data for the list view.
*/
ListItemCollectionPosition?: IListItemCollectionPosition;
/**
* Gets or sets value that specifies the XML schema that defines the list view.
*/
ViewXml?: string;
}
/**
* Specifies the information required to get the next page of data for a list view.
*/
export interface IListItemCollectionPosition {
/**
* Gets or sets a value that specifies information, as name-value pairs, required to get the next page of data for a list view.
*/
PagingInfo: string;
}
export interface IListInfo {
AllowContentTypes: boolean;
AllowDeletion: boolean;
BaseTemplate: ListTemplateTypes;
BaseType: BaseTypes;
BrowserFileHandling: any;
ContentTypes: any[];
ContentTypesEnabled: boolean;
CrawlNonDefaultViews: boolean;
CreatablesInfo: any;
Created: string;
CurrentChangeToken: any;
CustomActionElements: any[];
DataSource: any;
DefaultContentApprovalWorkflowId: string;
DefaultDisplayFormUrl: string;
DefaultEditFormUrl: string;
DefaultNewFormUrl: string;
DefaultView: any;
DefaultViewPath: any;
DefaultViewUrl: string;
Description: string;
DescriptionResource: any;
Direction: string;
DocumentTemplateUrl: string;
DraftVersionVisibility: any;
EffectiveBasePermissions: IBasePermissions;
EffectiveBasePermissionsForUI: IBasePermissions;
EnableAssignToEmail: boolean;
EnableAttachments: boolean;
EnableFolderCreation: boolean;
EnableMinorVersions: boolean;
EnableModeration: boolean;
EnableRequestSignOff: boolean;
EnableVersioning: boolean;
EntityTypeName: string;
EventReceivers: any[];
ExcludeFromOfflineClient: boolean;
ExemptFromBlockDownloadOfNonViewableFiles: boolean;
Fields: Partial<IFieldInfo>[];
FileSavePostProcessingEnabled: boolean;
ForceCheckout: boolean;
Forms: IFormInfo[];
HasExternalDataSource: boolean;
Hidden: boolean;
Id: string;
ImagePath: {
DecodedUrl: string;
};
ImageUrl: string;
InformationRightsManagementSettings: any[];
IrmEnabled: boolean;
IrmExpire: boolean;
IrmReject: boolean;
IsApplicationList: boolean;
IsCatalog: boolean;
IsPrivate: boolean;
IsSiteAssetsLibrary: boolean;
IsSystemList: boolean;
ItemCount: number;
LastItemDeletedDate: string;
LastItemModifiedDate: string;
LastItemUserModifiedDate: string;
ListExperienceOptions: number;
ListItemEntityTypeFullName: string;
MajorVersionLimit: number;
MajorWithMinorVersionsLimit: number;
MultipleDataList: boolean;
NoCrawl: boolean;
OnQuickLaunch: boolean;
ParentWebPath: {
DecodedUrl: string;
};
ParentWebUrl: string;
ParserDisabled: boolean;
ReadSecurity: number;
RootFolder: IFolderInfo;
SchemaXml: string;
ServerTemplateCanCreateFolders: boolean;
TemplateFeatureId: string;
Title: string;
UserCustomActions: IUserCustomActionInfo[];
ValidationFormula: string;
ValidationMessage: string;
Views: IViewInfo[];
WorkflowAssociations: any[];
WriteSecurity: number;
}
export interface IBasePermissions {
Low: number;
High: number;
}
export interface IFormInfo {
FormType: PageType;
Id: string;
ResourcePath: {
DecodedUrl: string;
};
DecodedUrl: string;
ServerRelativeUrl: string;
}
export interface IFolderBasicInfo {
Name: string;
ServerRelativeUrl: string;
}
export interface IFolderInfo extends IFolderBasicInfo {
readonly "odata.id": string;
Exists: boolean;
IsWOPIEnabled: boolean;
ItemCount: number;
ProgID: string | null;
TimeCreated: string;
TimeLastModified: string;
UniqueId: string;
WelcomePage: string;
Folders?: IFolderInfo[]
}
// eslint-disable-next-line no-shadow
export enum UserCustomActionRegistrationType {
None = 0,
List = 1,
ContentType = 2,
ProgId = 3,
FileType = 4
}
// eslint-disable-next-line no-shadow
export enum UserCustomActionScope {
Unknown = 0,
Site = 2,
Web = 3,
List = 4
}
export interface IUserCustomActionInfo {
CommandUIExtension: string;
Description: string;
Group: string;
Id: string;
ImageUrl: string;
Location: string;
Name: string;
RegistrationId: string;
RegistrationType: UserCustomActionRegistrationType;
Rights: IBasePermissions;
Scope: UserCustomActionScope;
ScriptBlock: string;
ScriptSrc: string;
Sequence: number;
Title: string;
Url: string;
VersionOfUserCustomAction: string;
}
/**
* Specifies the type of a principal. Use $PrincipalType when isolatedModules is true
*/
// eslint-disable-next-line no-shadow
export enum PrincipalType {
/**
* Enumeration whose value specifies no principal type.
*/
None = 0,
/**
* Enumeration whose value specifies a user as the principal type.
*/
User = 1,
/**
* Enumeration whose value specifies a distribution list as the principal type.
*/
DistributionList = 2,
/**
* Enumeration whose value specifies a security group as the principal type.
*/
SecurityGroup = 4,
/**
* Enumeration whose value specifies a group as the principal type.
*/
SharePointGroup = 8,
/**
* Enumeration whose value specifies all principal types.
*/
All = 15
}
/** PrincipalType enum values for projects that can't use enums (when isolatedModules is true)
* @deprecated use PrincipalType
*/
export const $PrincipalType = {
/**
* Enumeration whose value specifies no principal type.
*/
None: PrincipalType.None,
/**
* Enumeration whose value specifies a user as the principal type.
*/
User: PrincipalType.User,
/**
* Enumeration whose value specifies a distribution list as the principal type.
*/
DistributionList: PrincipalType.DistributionList,
/**
* Enumeration whose value specifies a security group as the principal type.
*/
SecurityGroup: PrincipalType.SecurityGroup,
/**
* Enumeration whose value specifies a group as the principal type.
*/
SharePointGroup: PrincipalType.SharePointGroup,
/**
* Enumeration whose value specifies all principal types.
*/
All: PrincipalType.All
}
// eslint-disable-next-line no-shadow
export enum SPBasePermissionKind {
/**
* Has no permissions on the Site. Not available through the user interface.
*/
EmptyMask = 0,
/**
* View items in lists, documents in document libraries, and Web discussion comments.
*/
ViewListItems = 1,
/**
* Add items to lists, documents to document libraries, and Web discussion comments.
*/
AddListItems = 2,
/**
* Edit items in lists, edit documents in document libraries, edit Web discussion comments
* in documents, and customize Web Part Pages in document libraries.
*/
EditListItems = 3,
/**
* Delete items from a list, documents from a document library, and Web discussion
* comments in documents.
*/
DeleteListItems = 4,
/**
* Approve a minor version of a list item or document.
*/
ApproveItems = 5,
/**
* View the source of documents with server-side file handlers.
*/
OpenItems = 6,
/**
* View past versions of a list item or document.
*/
ViewVersions = 7,
/**
* Delete past versions of a list item or document.
*/
DeleteVersions = 8,
/**
* Discard or check in a document which is checked out to another user.
*/
CancelCheckout = 9,
/**
* Create, change, and delete personal views of lists.
*/
ManagePersonalViews = 10,
/**
* Create and delete lists, add or remove columns in a list, and add or remove public views of a list.
*/
ManageLists = 12,
/**
* View forms, views, and application pages, and enumerate lists.
*/
ViewFormPages = 13,
/**
* Make content of a list or document library retrieveable for anonymous users through SharePoint search.
* The list permissions in the site do not change.
*/
AnonymousSearchAccessList = 14,
/**
* Allow users to open a Site, list, or folder to access items inside that container.
*/
Open = 17,
/**
* View pages in a Site.
*/
ViewPages = 18,
/**
* Add, change, or delete HTML pages or Web Part Pages, and edit the Site using
* a Windows SharePoint Services compatible editor.
*/
AddAndCustomizePages = 19,
/**
* Apply a theme or borders to the entire Site.
*/
ApplyThemeAndBorder = 20,
/**
* Apply a style sheet (.css file) to the Site.
*/
ApplyStyleSheets = 21,
/**
* View reports on Site usage.
*/
ViewUsageData = 22,
/**
* Create a Site using Self-Service Site Creation.
*/
CreateSSCSite = 23,
/**
* Create subsites such as team sites, Meeting Workspace sites, and Document Workspace sites.
*/
ManageSubwebs = 24,
/**
* Create a group of users that can be used anywhere within the site collection.
*/
CreateGroups = 25,
/**
* Create and change permission levels on the Site and assign permissions to users
* and groups.
*/
ManagePermissions = 26,
/**
* Enumerate files and folders in a Site using Microsoft Office SharePoint Designer
* and WebDAV interfaces.
*/
BrowseDirectories = 27,
/**
* View information about users of the Site.
*/
BrowseUserInfo = 28,
/**
* Add or remove personal Web Parts on a Web Part Page.
*/
AddDelPrivateWebParts = 29,
/**
* Update Web Parts to display personalized information.
*/
UpdatePersonalWebParts = 30,
/**
* Grant the ability to perform all administration tasks for the Site as well as
* manage content, activate, deactivate, or edit properties of Site scoped Features
* through the object model or through the user interface (UI). When granted on the
* root Site of a Site Collection, activate, deactivate, or edit properties of
* site collection scoped Features through the object model. To browse to the Site
* Collection Features page and activate or deactivate Site Collection scoped Features
* through the UI, you must be a Site Collection administrator.
*/
ManageWeb = 31,
/**
* Content of lists and document libraries in the Web site will be retrieveable for anonymous users through
* SharePoint search if the list or document library has AnonymousSearchAccessList set.
*/
AnonymousSearchAccessWebLists = 32,
/**
* Use features that launch client applications. Otherwise, users must work on documents
* locally and upload changes.
*/
UseClientIntegration = 37,
/**
* Use SOAP, WebDAV, or Microsoft Office SharePoint Designer interfaces to access the Site.
*/
UseRemoteAPIs = 38,
/**
* Manage alerts for all users of the Site.
*/
ManageAlerts = 39,
/**
* Create e-mail alerts.
*/
CreateAlerts = 40,
/**
* Allows a user to change his or her user information, such as adding a picture.
*/
EditMyUserInfo = 41,
/**
* Enumerate permissions on Site, list, folder, document, or list item.
*/
EnumeratePermissions = 63,
/**
* Has all permissions on the Site. Not available through the user interface.
*/
FullMask = 65
}
export const SPBasePermissionMask = {
EmptyMask: { High: 0x0, Low: 0x0 },
ViewListItems: { High: 0x0, Low: 0x1 },
AddListItems: { High: 0x0, Low: 0x2 },
EditListItems: { High: 0x0, Low: 0x4 },
DeleteListItems: { High: 0x0, Low: 0x8 },
ApproveItems: { High: 0x0, Low: 0x10 },
OpenItems: { High: 0x0, Low: 0x20 },
ViewVersions: { High: 0x0, Low: 0x40 },
DeleteVersions: { High: 0x0, Low: 0x80 },
CancelCheckout: { High: 0x0, Low: 0x100 },
ManagePersonalViews: { High: 0x0, Low: 0x200 },
ManageLists: { High: 0x0, Low: 0x800 },
ViewFormPages: { High: 0x0, Low: 0x1000 },
Open: { High: 0x0, Low: 0x20000 },
ViewPages: { High: 0x0, Low: 0x20000 },
LayoutsPage: { High: 0x0, Low: 0x21000 },
AddAndCustomizePages: { High: 0x0, Low: 0x40000 },
ApplyThemeAndBorder: { High: 0x0, Low: 0x80000 },
ApplyStyleSheets: { High: 0x0, Low: 0x100000 },
ViewUsageData: { High: 0x0, Low: 0x200000 },
CreateSSCSite: { High: 0x0, Low: 0x400000 },
ManageSubwebs: { High: 0x0, Low: 0x800000 },
CreateGroups: { High: 0x0, Low: 0x1000000 },
ManagePermissions: { High: 0x0, Low: 0x2000000 },
BrowseDirectories: { High: 0x0, Low: 0x4000000 },
BrowserUserInfo: { High: 0x0, Low: 0x8000000 },
AddDelPrivateWebParts: { High: 0x0, Low: 0x10000000 },
UpdatePersonalWebParts: { High: 0x0, Low: 0x20000000 },
ManageWeb: { High: 0x0, Low: 0x40000000 },
UseClientIntegration: { High: 0x10, Low: 0x0 },
UseRemoteAPIs: { High: 0x20, Low: 0x0 },
ManageAlerts: { High: 0x40, Low: 0x0 },
CreateAlerts: { High: 0x80, Low: 0x0 },
EditMyUserInfo: { High: 0x100, Low: 0x0 },
EnumeratePermissions: { High: 0x40000000, Low: 0x0 },
FullMask: { High: 0x7FFFFFFF, Low: 0xFFFFFFFF }
};
// eslint-disable-next-line no-shadow
export enum PersonSelectionMode {
Users = 0,
UsersAndGroups = 1
}
// eslint-disable-next-line no-shadow
export enum ItemFormDialogResult {
Closed = 0,
Created = 1,
Saved = 2
}
// eslint-disable-next-line no-shadow
export enum FileSystemObjectTypes {
ListItemOrFile = 0,
Folder = 1
}
// eslint-disable-next-line no-shadow
export enum SPFileSystemObjectType {
invalid,
file,
folder,
web,
}
export interface ISpfxBaseComponentContext {
pageContext: {
user: { email: string; };
list: {
title: string;
id: { toString: () => string; };
};
web: {
serverRelativeUrl: string;
//used by taxonomy picker spfx pnp react
absoluteUrl: string;
//used by taxonomy picker spfx pnp react issue 8129
language: number;
id: { toString: () => string; };
};
//used by taxonomy picker spfx pnp react issue 886
cultureInfo: {
currentCultureName: string;
currentUICultureName: string;
isRightToLeft: boolean;
};
};
//used by taxonomy picker spfx pnp react
spHttpClient: {
post: (url: string,
configuration: any,
postOptions: {
body?: BodyInit;
headers?: HeadersInit;
}) => Promise<{ json: () => Promise<any>; }>;
get: (url: string,
configuration: any,
postOptions: {
body?: BodyInit;
headers?: HeadersInit;
}) => Promise<{ json: () => Promise<any>; }>;
};
}
export interface ISettingsFormContext {
webUrl: string;
/** if we are configuring a specific list, this will have the list ID */
listId?: string;
/** context as we get it from the SPFx control */
spfx: ISpfxBaseComponentContext;
}
// eslint-disable-next-line no-shadow
export enum MissingOptionsType {
/** No missing options */
None = 0,
/** Optional missing options, can render and load them later */
MissingOptional = 1,
/** Required missing options, cannot render until these options are loaded */
MissingRequired = 2
}
export interface IItemFormContext {
pageType: PageType;
/** specify web ID, in case of working on a different web */
webId?: string;
listId: string;
itemId?: number;
/** optional, additional items to update */
otherItems?: number[];
/** optional, content type ID for a new item */
contentTypeId?: string;
/** optional, root folder to save the new item in */
rootFolder?: string;
context: ISpfxBaseComponentContext;
/** optional, if a custom action was clicked */
isInfoPane?: boolean;
/** optional, form is open in side panel */
isSidePanel?: boolean;
actionId?: string;
}
/** Calculated - a calculated column created by the user. Computed - a system column, such as content type, edit menu, select column */
export type FieldTypeAsString = "Text" | "Note" | "Choice" | "MultiChoice" |
"Boolean" | "DateTime" | "User" | "UserMulti" | "Lookup" |
"LookupMulti" | "URL" | "Number" | "Currency" |
"TaxonomyFieldType" | "TaxonomyFieldTypeMulti" |
"Attachments" | "File" | "Calculated" | "Counter" | "Computed" |
"Geolocation" | "Recurrence" | "CrossProjectLink" | "AllDayEvent" | "Integer" |
/** OutcomeChoice from workflow task outcome modified PercentComplete and Stauts fields */
"OutcomeChoice" |
/** Thumbnail is an image field, see issue 7553 */
"Thumbnail"
|
/** Location field */
"Location";
export interface IFieldInfoEX extends IFieldInfo {
TypeAsString: FieldTypeAsString;
SchemaJson: IFieldJsonSchema;
OutputTypeAsString: FieldTypeAsString;
}
export interface IFieldInfoExHash { [InternalName: string]: IFieldInfoEX; }
export interface IFieldContentType extends IFieldInfoEX {
Options: IContentTypeInfo[];
}
export interface IFieldNoteInfo extends IFieldInfoEX {
RichText: boolean;
NumberOfLines: number;
AppendOnly: boolean;
}
export interface IFieldUrlInfo extends IFieldInfoEX {
DisplayFormat: UrlFieldFormatType;
}
export interface IFieldLookupInfo extends IFieldInfoEX {
AllowMultipleValues: boolean;
LookupField: string;
LookupList: string;
LookupWebId: string;
}
export interface IFieldUserInfo extends IFieldInfoEX {
AllowMultipleValues: boolean;
Presence: boolean;
SelectionMode: PersonSelectionMode;
SelectionGroup: number;
}
export interface IFieldDateTimeInfo extends IFieldInfoEX {
DisplayFormat: DateTimeFieldFormatType;
FriendlyDisplayFormat: DateTimeFieldFriendlyFormatType;
}
export interface IFieldTaxonomyInfo extends IFieldLookupInfo {
CreateValuesInEditForm: boolean;
IsAnchorValid: boolean;
IsKeyword: boolean;
IsPathRendered: boolean;
IsTermSetValid: boolean;
Open: boolean;
SspId: string;
TermSetId: string;
AnchorId: string;
/** The hidden text field id used to update multi value.
* Warning: Issue 7585 do not use this.
* Instead use UpdateMultiTaxonomyValue endpoint
*/
TextField: string;
UserCreated: boolean;
/** The hidden text field internal name used to update multi value.
* Warning: Issue 7585 do not use this.
* Instead use UpdateMultiTaxonomyValue endpoint
*/
HiddenMultiValueFieldName: string;
}
export interface IFieldNumberInfo extends IFieldInfoEX {
/** number of decimals to show. -1 for automatic. */
DisplayFormat: number;
ShowAsPercentage: boolean;
MinimumValue: number;
MaximumValue: number;
}
export interface IFieldCurrencyInfo extends IFieldNumberInfo {
CurrencyLocaleId: number;
}
export interface IFieldChoiceInfo extends IFieldInfoEX {
Choices: string[];
FillInChoice: boolean;
EditFormat: ChoiceFieldFormatType;
}
export interface IFieldCalculatedInfo extends IFieldInfoEX {
OutputType: FieldTypes.Boolean | FieldTypes.Currency | FieldTypes.DateTime | FieldTypes.Number | FieldTypes.Text;
DateFormat?: DateTimeFieldFormatType;
ShowAsPercentage?: boolean;
}
export type UrlValueType = { Url: string; Description?: string; };
export type TaxonomyValueType = { Label?: string; TermGuid?: string; WssId: number; };
export type ThumbnailValueType = {
type?: "thumbnail";
fileName: string;
fieldName?: string;
serverUrl: string;//example: "https://kwizcom.sharepoint.com"
serverRelativeUrl: string;//"/sites/n2/dvp/SiteAssets/Lists/6fb9e25a-a709-4ecd-aba1-e61efd8ec8e6/gas-chainsaw-20.jpg",
id: string;//guid, like "6698ff8d-8f08-4c58-a917-ed65a6cf53d0"
};
export type RententionLabelFieldValueType = {
TagId: string;
TagName: string;
};
// eslint-disable-next-line no-shadow
export enum RoleType {
none,
guest,
reader,
contributor,
webDesigner,
administrator,
editor
}
// eslint-disable-next-line no-shadow
export enum SPEventReceiverTypes {
invalidReceiver = -1,
itemAdding = 1,
itemUpdating = 2,
itemDeleting = 3,
itemCheckingIn = 4,
itemCheckingOut = 5,
itemUncheckingOut = 6,
itemAttachmentAdding = 7,
itemAttachmentDeleting = 8,
itemFileMoving = 9,
itemVersionDeleting = 11,
fieldAdding = 101,
fieldUpdating = 102,
fieldDeleting = 103,
listAdding = 104,
listDeleting = 105,
siteDeleting = 201,
webDeleting = 202,
webMoving = 203,
webAdding = 204,
siteMovingFromGeoLocation = 206,
groupAdding = 301,
groupUpdating = 302,
groupDeleting = 303,
groupUserAdding = 304,
groupUserDeleting = 305,
roleDefinitionAdding = 306,
roleDefinitionUpdating = 307,
roleDefinitionDeleting = 308,
roleAssignmentAdding = 309,
roleAssignmentDeleting = 310,
inheritanceBreaking = 311,
inheritanceResetting = 312,
workflowStarting = 501,
itemAdded = 10001,
itemUpdated = 10002,
itemDeleted = 10003,
itemCheckedIn = 10004,
itemCheckedOut = 10005,
itemUncheckedOut = 10006,
itemAttachmentAdded = 10007,
itemAttachmentDeleted = 10008,
itemFileMoved = 10009,
itemFileConverted = 10010,
itemVersionDeleted = 10011,
fieldAdded = 10101,
fieldUpdated = 10102,
fieldDeleted = 10103,
listAdded = 10104,
listDeleted = 10105,
siteDeleted = 10201,
webDeleted = 10202,
webRestored = 10205,
webMoved = 10203,
webProvisioned = 10204,
groupAdded = 10301,
groupUpdated = 10302,
groupDeleted = 10303,
groupUserAdded = 10304,
groupUserDeleted = 10305,
roleDefinitionAdded = 10306,
roleDefinitionUpdated = 10307,
roleDefinitionDeleted = 10308,
roleAssignmentAdded = 10309,
roleAssignmentDeleted = 10310,
inheritanceBroken = 10311,
inheritanceReset = 10312,
workflowStarted = 10501,
workflowPostponed = 10502,
workflowCompleted = 10503,
entityInstanceAdded = 10601,
entityInstanceUpdated = 10602,
entityInstanceDeleted = 10603,
appInstalled = 10701,
appUpgraded = 10702,
appUninstalling = 10703,
emailReceived = 20000,
contextEvent = 32766
}
export interface ISPEventReceiver {
EventType: SPEventReceiverTypes;
ReceiverAssembly: string;
ReceiverClass: string;
ReceiverId: string;
ReceiverName: string;
ReceiverUrl: string;
SequenceNumber: number;
Synchronization: number;
}
export interface IContextWebInformation {
FormDigestTimeoutSeconds: number;
FormDigestValue: string;
LibraryVersion: string;
SiteFullUrl: string;
WebFullUrl: string;
}
// eslint-disable-next-line no-shadow
export enum SPFxDisplayMode {
Read = 1,
Edit = 2,
}
/** SharePoint calendar list item EventType */
// eslint-disable-next-line no-shadow
export enum SPCalendarEventType {
SingleEvent = 0,
RecurringEvent = 1,
/** A recurrence instance that was deleted */
RecurrenceDeleted = 3,
/** A recurrence instance that was modified */
RecurrenceException = 4
}
// eslint-disable-next-line no-shadow
export enum SPDateTimeDisplayFormat {
DateOnly,
DateTime,
TimeOnly
}
// eslint-disable-next-line no-shadow
export enum SPDateTimeCalendarType {
None,
Gregorian,
Japan,
Taiwan,
Korea,
Hijri,
Thai,
Hebrew,
GregorianMEFrench,
GregorianArabic,
GregorianXLITEnglish,
GregorianXLITFrench,
KoreaJapanLunar,
ChineseLunar,
SakaEra,
UmAlQura
}
// eslint-disable-next-line no-shadow
export enum SPJsGridEditMode {
ReadOnly, // 0,
ReadWrite, // 1,
ReadOnlyDefer, // 2,
ReadWriteDefer, // 3,
Defer // 4
}
//full name is SP.JsGrid.JsGridControl
export interface ISPJsGridControl {
GetColumns(optPaneId?: string): {
/** Column title */
name: string;
/** Column identifier */
columnKey: string;
/** this is used when you need to make some of the cells in the column readonly, but at the same time keep others editable */
fnGetCellEditMode: (record: any, fieldKey: string) => SPJsGridEditMode;
}[];
/** Hide the specified column from grid */
HideColumn(columnKey: string): void;
/** Show a previously hidden column at a specified position.
If atIdx is not defined, column will be shown at it's previous position. */
ShowColumn(columnKey: string, atIdx?: number): void;
}
// eslint-disable-next-line no-shadow
export enum UserProfileBuiltinProperty {
Department = "Department",
DisplayName = "DisplayName",
Email = "Email",
FirstName = "FirstName",
HireDate = "HireDate",
JobTitle = "JobTitle",
Manager = "Manager",
MobilePhone = "MobilePhone",
Office = "Office",
Phone = "Phone",
WorkEmail = "WorkEmail",
WorkPhone = "WorkPhone"
}
// eslint-disable-next-line no-shadow
export enum BuiltInFields {
Attachments = "Attachments",
AttachmentFiles = "AttachmentFiles"
}
export type AttachmentFilesRESTValue = {
results: {
FileName: string;
ServerRelativeUrl: string;
}[];
};
interface _spPageContextInfo {
aadTenantId: string; // Tennatn ID
portalUrl: string;
alertsEnabled: boolean; // true
allowSilverlightPrompt: string; // "True"
blockDownloadsExperienceEnabled: boolean; // true
canUserCreateMicrosoftForm: boolean; // true
cdnPrefix: string; // "static.sharepointonline.com/bld"
clientServerTimeDelta: number; // -182
CorrelationId: string; // "6161f99d-10e5-4000-ad30-1016270fe31d"
crossDomainPhotosEnabled: boolean; // true
currentCultureName: string; // "ru-RU"
currentLanguage: number; // 1049
currentUICultureName: string; // "ru-RU"
disableAppViews: boolean; // true
disableFlows: boolean; // true
env: string; // "prod"
farmLabel: string; // "US_4_Content"
formDigestValue: string; // "0x5F3FE84E7EE9089C7D11DCDAFFB9E69CF8241E68B9EF071FA92CD419E878AC4F7C16E34696EFA667EFD0712FC1DF4945DDC0D09B5D23153A698A727AF076B5DE,07 Jun 2017 18:55:22 -0000"
formDigestTimeoutSeconds: number; // 1800
groupColor: string; // "#d40ac7"
groupHasHomepage: boolean; // true
groupId: string; //
guestsEnabled: boolean; // true
hasManageWebPermissions: boolean; // true
isAnonymousGuestUser: boolean; // true
isAppWeb: boolean; // true
isExternalGuestUser: boolean; // true
isNoScriptEnabled: boolean; // true
isSiteAdmin: boolean; // true
isSPO: boolean; // true
isTenantDevSite: boolean; // true
isWebWelcomePage: boolean; // true
layoutsUrl: string; // "_layouts/15"
listBaseTemplate: number; // 119
listId: string; // "{06ee6d96-f27f-4160-b6bb-c18f187b18a7}"
listPermsMask: { High: number; Low: number };
listTitle: string; // "Site Pages"
listUrl: string; // "/sites/site/list"
maximumFileSize: number; // 15360
openInClient: boolean; // true
pageListId: string; // "{06ee6d96-f27f-4160-b6bb-c18f187b18a7}"
pageItemId: number;
pagePermsMask: { High: number; Low: number };
pagePersonalizationScope: string; // 1
PreviewFeaturesEnabled: boolean; // true
preferUserTimeZone: boolean; // false
ProfileUrl: string; // "https://tenant-my.sharepoint.com/person.aspx"
PublishingFeatureOn: boolean; // true
RecycleBinItemCount: number; // -1
serverRedirectedUrl: string;
serverRequestPath: string; // "/SPTypeScript/Lists/ConditionalFormattingTasksList/AllItems.aspx"
serverTime: string; // "2017-06-07T18:55:22.3499459Z"
siteAbsoluteUrl: string; // "https:// gandjustas-7b20d3715e8ed4.sharepoint.com"
siteClassification: string; //
siteClientTag: string; // "0$$15.0.4454.1021"
siteColor: string; // "#d40ac7"
siteId: string; // "{3e09a056-f68f-44a3-8e0f-ff2c123b82cb}"
sitePagesEnabled: boolean; // true
siteServerRelativeUrl: string; // "/"
siteSubscriptionId: string; // 4eedf5f3-f71f-4e73-82ee-e19081363c8c
supportPoundStorePath: boolean; // true
supportPercentStorePath: boolean; // true
systemUserKey: string; // "i:0h.f|membership|10033fff84e7cb2b@live.com"
tenantAppVersion: string; // "0"
themeCacheToken: string; // "/sites/site::0:16.0.6525.1206"
themedCssFolderUrl: string;
themedImageFileNames: string;
updateFormDigestPageLoaded: string; // "2017-06-07T18:55:25.821Z"
userDisplayName: string; // "John Doe"
userEmail: string; // "john.doe@fabrikam.onmicrosoft.com"
userId: number; // 12
userLoginName: string; // "john.doe@fabrikam.onmicrosoft.com"
userPrincipalName: string;
viewOnlyExperienceEnabled: boolean; // true
viewId: string; // "{06ee6d96-f27f-4160-b6bb-c18f187b18a7}"
webAbsoluteUrl: string; // "https:// gandjustas-7b20d3715e8ed4.sharepoint.com/SPTypeScript"
webDescription: string; // "Some description"
webId: string; // "{06ee6d96-f27f-4160-b6bb-c18f187b18a7}"
webLanguage: number; // 1049
webLogoUrl: string; // "/_layouts/15/images/siteIcon.png?rev=23"
webPermMasks: { High: number; Low: number };
webServerRelativeUrl: string; // "/SPTypeScript"
webTemplate: string; // "17"
webTitle: string; // "SPTypeScript"
webUIVersion: number; // 15
}
declare global {
var _spPageContextInfo: _spPageContextInfo;
}
export enum SPClientControlMode {
Invalid,
DisplayForm,
EditForm,
NewForm,
View
}
export type IRententionLabel = {
AcceptMessagesOnlyFromSendersOrMembers: boolean;
AccessType: string;
AllowAccessFromUnmanagedDevice: string;
AutoDelete: boolean;
BlockDelete: boolean;
BlockEdit: boolean;
ComplianceFlags: number;
ContainsSiteLabel: boolean;
DisplayName: string;
EncryptionRMSTemplateId: string;
HasRetentionAction: boolean;
IsEventTag: boolean;
MultiStageReviewerEmail: string;
NextStageComplianceTag: string;
Notes: string;
RequireSenderAuthenticationEnabled: boolean;
ReviewerEmail: string;
SharingCapabilities: string;
SuperLock: boolean;
TagDuration: number;
TagId: string;
TagName: string;
TagRetentionBasedOn: string;
UnlockedAsDefault: boolean;
}
export type spNavLinkLocation = "quicklaunch" | "topnavigationbar" | "none";
export interface INavLinkInfo {
Id: number;
IsDocLib: boolean;
IsExternal: boolean;
IsVisible: boolean;
Title: string;
Url: string;
Location: spNavLinkLocation;
}