diff --git a/types/angulartics/angulartics-tests.ts b/types/angulartics/angulartics-tests.ts index 5a5660a3f8..a130ec64b2 100644 --- a/types/angulartics/angulartics-tests.ts +++ b/types/angulartics/angulartics-tests.ts @@ -1,5 +1,5 @@ import * as angular from 'angular'; -import { angulartics } from 'angulartics'; +import * as angulartics from 'angulartics'; namespace Analytics { angular.module("angulartics.app", ["angulartics"]) diff --git a/types/angulartics/index.d.ts b/types/angulartics/index.d.ts index 0d9ba1f17f..e1b36bc210 100644 --- a/types/angulartics/index.d.ts +++ b/types/angulartics/index.d.ts @@ -1,11 +1,14 @@ -// Type definitions for Angulartics 1.3 +// Type definitions for Angulartics 1.4 // Project: http://luisfarzati.github.io/angulartics/ // Definitions by: Steven Fan +// Bateast2 // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped // TypeScript Version: 2.3 import * as angular from 'angular'; +export = angulartics;//AMD/Require module support +export as namespace angulartics;//UMD module support declare namespace angulartics { interface IAngularticsStatic { @@ -13,41 +16,67 @@ declare namespace angulartics { } interface IAnalyticsService { - eventTrack(eventName: string, properties?: any): any; - getOptOut(): boolean; pageTrack(path: string, location?: angular.ILocationService): any; + eventTrack(eventName: string, properties?: any): any; + exceptionTrack(error: any, cause: string): any; + transactionTrack: any; setAlias(alias: string): any; - setOptOut(value: boolean): void; setUsername(username: string): any; - setUserProperties(properties: any): any; - setSuperProperties(properties: any): any; + setUserProperties(userProperties: any): any; + setUserPropertiesOnce(userProperties: any): any; + setSuperProperties(superProperties: any): any; + setSuperPropertiesOnce(superProperties: any): any; + incrementProperty(property: string, value?: any): any; + userTimings(properties: any): any; + clearCookies: any; + + getOptOut(): boolean; + setOptOut(value: boolean): void; } interface IAnalyticsServiceProvider extends angular.IServiceProvider { virtualPageviews(value: boolean): void; + trackStates(value: boolean): void; + trackRoutes(value: boolean): void; excludeRoutes(value: string[]): void; + queryKeysWhitelist(keys: string[]): void + queryKeysBlacklist(keys: string[]): void firstPageview(value: boolean): void; withBase(value: boolean): void; withAutoBase(value: boolean): void; - developerMode(value: boolean): void; trackExceptions(value: boolean): void; - trackRoutes(value: boolean): void; - trackStates(value: boolean): void; + developerMode(value: boolean): void; registerPageTrack(callback: (path: string, location?: angular.ILocationService) => any): void; registerEventTrack(callback: (eventName: string, properties?: any) => any): void; + registerTransactionTrack(callback: any): void; registerSetAlias(callback: (alias: string) => any): void; registerSetUsername(callback: (username: string) => any): void; registerSetUserProperties(callback: (userProperties: any) => any): void; + registerSetUserPropertiesOnce(callback: (userProperties: any) => any): void; registerSetSuperProperties(callback: (superProperties: any) => any): void; + registerSetSuperPropertiesOnce(callback: (superProperties: any) => any): void; + registerIncrementProperty(callback: (property: string, value?: any) => any): void; + registerUserTimings(callback: (properties: any) => any): void; + registerClearCookies(callback: any): void; settings: { pageTracking: { autoTrackingVirtualPages: boolean, autoTrackingFirstPage: boolean, + trackRelativePath: boolean, + trackRoutes: boolean, + trackStates: boolean, + autoBasePath: boolean, basePath: string, - autoBasePath: boolean + excludedRoutes: string[], + queryKeysWhitelisted: string[], + queryKeysBlacklisted: string[] }, + eventTracking: {}, + bufferFlushDelay: number, + trackExceptions: boolean, + optOut: boolean, developerMode: boolean }; } diff --git a/types/binary-parser/binary-parser-tests.ts b/types/binary-parser/binary-parser-tests.ts new file mode 100644 index 0000000000..d0d09e5ef7 --- /dev/null +++ b/types/binary-parser/binary-parser-tests.ts @@ -0,0 +1,95 @@ +import { Parser } from "binary-parser"; + +// Build an IP packet header Parser +const ipHeader = new Parser() + .endianess('big') + .bit4('version') + .bit4('headerLength') + .uint8('tos') + .uint16('packetLength') + .uint16('id') + .bit3('offset') + .bit13('fragOffset') + .uint8('ttl') + .uint8('protocol') + .uint16('checksum') + .array('src', { + type: 'uint8', + length: 4 + }) + .array('dst', { + type: 'uint8', + length: 4 + }); + +// Prepare buffer to parse. +const buf = new Buffer('450002c5939900002c06ef98adc24f6c850186d1', 'hex'); + +// Parse buffer and show result +ipHeader.parse(buf); + +const parser2 = new Parser() + // Signed 32-bit integer (little endian) + .int32le('a') + // Unsigned 8-bit integer + .uint8('b') + // Signed 16-bit integer (big endian) + .int16be('c'); + +const parser3 = new Parser() + // 32-bit floating value (big endian) + .floatbe('a') + // 64-bit floating value (little endian) + .doublele('b'); + +const parser4 = new Parser() + // Statically sized array + .array('data', { + type: 'int32', + length: 8 + }) + + // Dynamically sized array (references another variable) + .uint8('dataLength') + .array('data2', { + type: 'int32', + length: 'dataLength' + }) + + // Dynamically sized array (with some calculation) + .array('data3', { + type: 'int32', + length: () => 4 // other fields are available through this + }) + + // Statically sized array + .array('data4', { + type: 'int32', + lengthInBytes: 16 + }) + + // Dynamically sized array (references another variable) + .uint8('dataLengthInBytes') + .array('data5', { + type: 'int32', + lengthInBytes: 'dataLengthInBytes' + }) + + // Dynamically sized array (with some calculation) + .array('data6', { + type: 'int32', + lengthInBytes: () => 4, // other fields are available through this + }) + + // Dynamically sized array (with stop-check on parsed item) + .array('data7', { + type: 'int32', + readUntil: (item, buffer) => true // stop when specific item is parsed. buffer can be used to perform a read-ahead. + }); + +const parser5 = new Parser() + .array('ipv4', { + type: 'uint8', + length: '4', + formatter: (arr) => { } + }); diff --git a/types/binary-parser/index.d.ts b/types/binary-parser/index.d.ts new file mode 100644 index 0000000000..657996bd8d --- /dev/null +++ b/types/binary-parser/index.d.ts @@ -0,0 +1,147 @@ +// Type definitions for binary-parser 1.3 +// Project: https://github.com/keichi/binary-parser +// Definitions by: Benjamin Riggs , Dolan Miu +// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped + +/// + +export interface Parser { + parse(buffer: Buffer, callback?: (err?: Error, result?: any) => void): Parser.Parsed; + + create(constructorFunction: ObjectConstructor): Parser; + + int8(name: string, options?: Parser.Options): Parser; + uint8(name: string, options?: Parser.Options): Parser; + + int16(name: string, options?: Parser.Options): Parser; + uint16(name: string, options?: Parser.Options): Parser; + int16le(name: string, options?: Parser.Options): Parser; + int16be(name: string, options?: Parser.Options): Parser; + uint16le(name: string, options?: Parser.Options): Parser; + uint16be(name: string, options?: Parser.Options): Parser; + + int32(name: string, options?: Parser.Options): Parser; + uint32(name: string, options?: Parser.Options): Parser; + int32le(name: string, options?: Parser.Options): Parser; + int32be(name: string, options?: Parser.Options): Parser; + uint32le(name: string, options?: Parser.Options): Parser; + uint32be(name: string, options?: Parser.Options): Parser; + + bit1(name: string, options?: Parser.Options): Parser; + bit2(name: string, options?: Parser.Options): Parser; + bit3(name: string, options?: Parser.Options): Parser; + bit4(name: string, options?: Parser.Options): Parser; + bit5(name: string, options?: Parser.Options): Parser; + bit6(name: string, options?: Parser.Options): Parser; + bit7(name: string, options?: Parser.Options): Parser; + bit8(name: string, options?: Parser.Options): Parser; + bit9(name: string, options?: Parser.Options): Parser; + bit10(name: string, options?: Parser.Options): Parser; + bit11(name: string, options?: Parser.Options): Parser; + bit12(name: string, options?: Parser.Options): Parser; + bit13(name: string, options?: Parser.Options): Parser; + bit14(name: string, options?: Parser.Options): Parser; + bit15(name: string, options?: Parser.Options): Parser; + bit16(name: string, options?: Parser.Options): Parser; + bit17(name: string, options?: Parser.Options): Parser; + bit18(name: string, options?: Parser.Options): Parser; + bit19(name: string, options?: Parser.Options): Parser; + bit20(name: string, options?: Parser.Options): Parser; + bit21(name: string, options?: Parser.Options): Parser; + bit22(name: string, options?: Parser.Options): Parser; + bit23(name: string, options?: Parser.Options): Parser; + bit24(name: string, options?: Parser.Options): Parser; + bit25(name: string, options?: Parser.Options): Parser; + bit26(name: string, options?: Parser.Options): Parser; + bit27(name: string, options?: Parser.Options): Parser; + bit28(name: string, options?: Parser.Options): Parser; + bit29(name: string, options?: Parser.Options): Parser; + bit30(name: string, options?: Parser.Options): Parser; + bit31(name: string, options?: Parser.Options): Parser; + bit32(name: string, options?: Parser.Options): Parser; + + float(name: string, options?: Parser.Options): Parser; + floatle(name: string, options?: Parser.Options): Parser; + floatbe(name: string, options?: Parser.Options): Parser; + + double(name: string, options?: Parser.Options): Parser; + doublele(name: string, options?: Parser.Options): Parser; + doublebe(name: string, options?: Parser.Options): Parser; + + string(name: string, options?: Parser.StringOptions): Parser; + + buffer(name: string, options: Parser.BufferOptions): Parser; + + array(name: string, options: Parser.ArrayOptions): Parser; + + choice(name: string, options: Parser.ChoiceOptions): Parser; + + nest(name: string, options: Parser.NestOptions): Parser; + + skip(length: number): Parser; + + endianess(endianess: Parser.Endianness): Parser; /* [sic] */ + + namely(alias: string): Parser; + + compile(): void; + + getCode(): string; +} + +export interface ParserConstructor { + new(): Parser; +} + +export const Parser: ParserConstructor; + +export namespace Parser { + type Data = number | string | Array | Parsed | Buffer; + interface Parsed { + [name: string]: Data; + } + + interface Options { + formatter?: ((value: Data) => any); + assert?: string | number | ((value: Data) => boolean); + } + + interface StringOptions extends Options { + encoding?: string; + length?: number | string | ((this: Parsed) => number); + zeroTerminated?: boolean; + greedy?: boolean; + stripNull?: boolean; + } + + interface BufferOptions extends Options { + clone?: boolean; + length?: number | string | ((this: Parsed) => number); + readUntil?: string | ((item: number, buffer: Buffer) => boolean); + } + + interface ArrayOptions extends Options { + type: string | Parser; + length?: number | string | ((this: Parsed) => number); + lengthInBytes?: number | string | ((this: Parsed) => number); + readUntil?: string | ((item: number, buffer: Buffer) => boolean); + } + + interface ChoiceOptions extends Options { + tag: string | ((this: Parsed) => number); + choices: { [item: number]: Parser | string }; + defaultChoice?: Parser | string; + } + + interface NestOptions extends Options { + type: Parser | string; + } + + type Endianness = + 'little' | + 'big'; + + interface Context { + [name: string]: Parsed; + } +} diff --git a/types/binary-parser/tsconfig.json b/types/binary-parser/tsconfig.json new file mode 100644 index 0000000000..cb361f52c5 --- /dev/null +++ b/types/binary-parser/tsconfig.json @@ -0,0 +1,23 @@ +{ + "compilerOptions": { + "module": "commonjs", + "lib": [ + "es6" + ], + "noImplicitAny": true, + "noImplicitThis": true, + "strictNullChecks": true, + "strictFunctionTypes": true, + "baseUrl": "../", + "typeRoots": [ + "../" + ], + "types": [], + "noEmit": true, + "forceConsistentCasingInFileNames": true + }, + "files": [ + "index.d.ts", + "binary-parser-tests.ts" + ] +} diff --git a/types/binary-parser/tslint.json b/types/binary-parser/tslint.json new file mode 100644 index 0000000000..3db14f85ea --- /dev/null +++ b/types/binary-parser/tslint.json @@ -0,0 +1 @@ +{ "extends": "dtslint/dt.json" } diff --git a/types/cheerio/index.d.ts b/types/cheerio/index.d.ts index 2037e83c7a..93f30e8a9f 100644 --- a/types/cheerio/index.d.ts +++ b/types/cheerio/index.d.ts @@ -1,6 +1,6 @@ // Type definitions for Cheerio v0.22.0 // Project: https://github.com/cheeriojs/cheerio -// Definitions by: Bret Little , VILIC VANE , Wayne Maurer , Umar Nizamani +// Definitions by: Bret Little , VILIC VANE , Wayne Maurer , Umar Nizamani , LiJinyao // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped interface Cheerio { @@ -255,6 +255,7 @@ interface CheerioElement { children: CheerioElement[]; childNodes: CheerioElement[]; lastChild: CheerioElement; + firstChild: CheerioElement; next: CheerioElement; nextSibling: CheerioElement; prev: CheerioElement; diff --git a/types/chrome/index.d.ts b/types/chrome/index.d.ts index ca7b35bf0e..0b6e1fd6e4 100644 --- a/types/chrome/index.d.ts +++ b/types/chrome/index.d.ts @@ -1426,8 +1426,7 @@ declare namespace chrome.declarativeContent { ports?: (number | number[])[]; } - /** Matches the state of a web page by various criteria. */ - interface PageStateMatcher { + class PageStateMatcherProperties { /** Optional. Filters URLs for various criteria. See event filtering. All criteria are case sensitive. */ pageUrl?: PageStateUrlDetails; /** Optional. Matches if all of the CSS selectors in the array match displayed elements in a frame with the same origin as the page's main frame. All selectors in this array must be compound selectors to speed up matching. Note that listing hundreds of CSS selectors or CSS selectors that match hundreds of times per page can still slow down web sites. */ @@ -1439,6 +1438,19 @@ declare namespace chrome.declarativeContent { */ isBookmarked?: boolean; } + + /** Matches the state of a web page by various criteria. */ + class PageStateMatcher { + constructor(options: PageStateMatcherProperties); + } + + /** Declarative event action that shows the extension's page action while the corresponding conditions are met. */ + class ShowPageAction {} + + /** Provides the Declarative Event API consisting of addRules, removeRules, and getRules. */ + interface PageChangedEvent extends chrome.events.Event<() => void> {} + + var onPageChanged: PageChangedEvent; } //////////////////// @@ -5126,7 +5138,7 @@ declare namespace chrome.runtime { actions?: { type: string; }[]; - conditions?: chrome.declarativeContent.PageStateMatcher[] + conditions?: chrome.declarativeContent.PageStateMatcherProperties[] }[]; externally_connectable?: { ids?: string[]; diff --git a/types/ckeditor/ckeditor-tests.ts b/types/ckeditor/ckeditor-tests.ts index b6471ddab6..dd0ec92164 100644 --- a/types/ckeditor/ckeditor-tests.ts +++ b/types/ckeditor/ckeditor-tests.ts @@ -52,6 +52,23 @@ function test_config() { [ 'list', 'indent', 'blocks', 'align', 'bidi' ], ], }; + var config3: CKEDITOR.config = { + toolbarGroups: [ + { name: 'clipboard', groups: [ 'clipboard', 'undo' ] }, + { name: 'editing', groups: [ 'find', 'selection', 'spellchecker', 'editing' ] }, + { name: 'links', groups: [ 'links' ] }, + { name: 'insert', groups: [ 'insert' ] }, + { name: 'tools', groups: [ 'tools' ] }, + { name: 'document', groups: [ 'mode' ] }, + { name: 'about', groups: [ 'about' ] }, + '/', + { name: 'basicstyles', groups: [ 'basicstyles', 'cleanup' ] }, + { name: 'paragraph', groups: [ 'list', 'indent', 'blocks', 'align', 'paragraph' ] }, + '/', + { name: 'styles', groups: [ 'styles' ] }, + { name: 'colors', groups: [ 'colors' ] }, + ], + } } function test_dom_comment() { diff --git a/types/ckeditor/index.d.ts b/types/ckeditor/index.d.ts index 24ff341b38..c61dd9c467 100644 --- a/types/ckeditor/index.d.ts +++ b/types/ckeditor/index.d.ts @@ -1,6 +1,7 @@ // Type definitions for CKEditor // Project: http://ckeditor.com/ // Definitions by: Ondrej Sevcik +// Thomas Wittwer // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped // WORK-IN-PROGRESS: Any contribution support welcomed. @@ -814,7 +815,7 @@ declare namespace CKEDITOR { toolbar?: string | (string | string[])[]; toolbarCanCollapse?: boolean; toolbarGroupCycling?: boolean; - toolbarGroups?: toolbarGroups[]; + toolbarGroups?: (toolbarGroups | string)[]; toolbarLocation?: string; toolbarStartupExpanded?: boolean; diff --git a/types/croppie/index.d.ts b/types/croppie/index.d.ts index ec4626aa7f..e2e207db4c 100644 --- a/types/croppie/index.d.ts +++ b/types/croppie/index.d.ts @@ -2,6 +2,7 @@ // Project: https://github.com/Foliotek/Croppie // Definitions by: Connor Peet // dklmuc +// Sarun Intaralawan // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped export default class Croppie { @@ -15,10 +16,10 @@ export default class Croppie { useCanvas?: boolean, }): Promise; - result(options: ResultOptions & { type: 'base64' }): Promise; + result(options: ResultOptions & { type: 'base64' | 'canvas' }): Promise; result(options: ResultOptions & { type: 'html' }): Promise; result(options: ResultOptions & { type: 'blob' }): Promise; - result(options: ResultOptions & { type: 'canvas' }): Promise; + result(options: ResultOptions & { type: 'rawcanvas' }): Promise; result(options?: ResultOptions): Promise; rotate(degrees: 90 | 180 | 270 | -90 | -180 | -270): void; diff --git a/types/crossfilter/crossfilter-tests.ts b/types/crossfilter/crossfilter-tests.ts index 813ddae2b9..5d9981b6d1 100644 --- a/types/crossfilter/crossfilter-tests.ts +++ b/types/crossfilter/crossfilter-tests.ts @@ -118,10 +118,10 @@ var types = paymentCountByType.all(); paymentsByTotal.dispose(); crossfilter.bisect([], null, 0, 0); -var bisectBy = crossfilter.bisect.by(t => t); -bisectBy([], null, 0, 0); -bisectBy.left([], null, 0, 0); -bisectBy.right([], null, 0, 0); +var bisectBy = crossfilter.bisect.by<{value: string}, string>(t => t.value); +bisectBy([{value: 'a'}, {value: 'b'}], 'c', 0, 0); // 2 +bisectBy.left([], 'string', 0, 0); // 0 +bisectBy.right([], 'string', 0, 0); // 0 crossfilter.heap([], 0, 0); var heapBy = crossfilter.heap.by(t => t); diff --git a/types/crossfilter/index.d.ts b/types/crossfilter/index.d.ts index ed888f6959..a009e920dd 100644 --- a/types/crossfilter/index.d.ts +++ b/types/crossfilter/index.d.ts @@ -1,6 +1,6 @@ // Type definitions for CrossFilter // Project: https://github.com/square/crossfilter -// Definitions by: Schmulik Raskin , Izaak Baker +// Definitions by: Schmulik Raskin , Izaak Baker , Einar Norðfjörð // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped declare namespace CrossFilter { @@ -15,7 +15,7 @@ declare namespace CrossFilter { permute(array: T[], index: number[]): T[]; bisect: { (array: T[], value: T, lo: number, hi: number): number; - by(value: Selector): Bisector; + by(accessor: (x: T)=> U): Bisector; } heap: { (array: T[], lo: number, hi: number): T[]; @@ -36,13 +36,13 @@ declare namespace CrossFilter { } } - export interface Bisection { - (array: T[], value: T, lo: number, hi: number): number; + export interface Bisection { + (array: T[], value: U, lo: number, hi: number): number; } - export interface Bisector extends Bisection { - left: Bisection - right: Bisection + export interface Bisector extends Bisection { + left: Bisection + right: Bisection } export interface Heap { diff --git a/types/d3-zoom/d3-zoom-tests.ts b/types/d3-zoom/d3-zoom-tests.ts index 8ff3f566f5..669b4af8ff 100644 --- a/types/d3-zoom/d3-zoom-tests.ts +++ b/types/d3-zoom/d3-zoom-tests.ts @@ -121,6 +121,26 @@ let svgZoom: d3Zoom.ZoomBehavior; svgZoom = d3Zoom.zoom(); +// constrain() ------------------------------------------------------------- + +// chainable +svgZoom = svgZoom.constrain((transform, extent, translateExtent) => { + const t: d3Zoom.ZoomTransform = transform; + const ve: [[number, number], [number, number]] = extent; + const te: [[number, number], [number, number]] = translateExtent; + const dx0 = t.invertX(ve[0][0]) - te[0][0]; + const dx1 = t.invertX(ve[1][0]) - te[1][0]; + const dy0 = transform.invertY(ve[0][1]) - te[0][1]; + const dy1 = transform.invertY(ve[1][1]) - te[1][1]; + return t.translate( + dx1 > dx0 ? (dx0 + dx1) / 2 : Math.min(0, dx0) || Math.max(0, dx1), + dy1 > dy0 ? (dy0 + dy1) / 2 : Math.min(0, dy0) || Math.max(0, dy1) + ); +}); + +let constraintFn: (transform: d3Zoom.ZoomTransform, extent: [[number, number], [number, number]], translateExtent: [[number, number], [number, number]]) => d3Zoom.ZoomTransform; +constraintFn = svgZoom.constrain(); + // filter() ---------------------------------------------------------------- // chainable diff --git a/types/d3-zoom/index.d.ts b/types/d3-zoom/index.d.ts index 1ca39261a5..cf9b1ac89d 100644 --- a/types/d3-zoom/index.d.ts +++ b/types/d3-zoom/index.d.ts @@ -1,9 +1,9 @@ -// Type definitions for d3JS d3-zoom module 1.6 +// Type definitions for d3JS d3-zoom module 1.7 // Project: https://github.com/d3/d3-zoom/ // Definitions by: Tom Wanzek , Alex Ford , Boris Yankov // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped -// Last module patch version validated against: 1.6.0 +// Last module patch version validated against: 1.7.0 import { ArrayLike, Selection, TransitionLike, ValueFn } from 'd3-selection'; import { ZoomView, ZoomInterpolator } from 'd3-interpolate'; @@ -499,6 +499,19 @@ export interface ZoomBehavior, k: ValueFn): void; + /** + * Returns the current constraint function. + * The default implementation attempts to ensure that the viewport extent does not go outside the translate extent. + */ + constrain(): (transform: ZoomTransform, extent: [[number, number], [number, number]], translateExtent: [[number, number], [number, number]]) => ZoomTransform; + /** + * Sets the transform constraint function to the specified function and returns the zoom behavior. + * + * @param constraint A constraint function which returns a transform given the current transform, viewport extent and translate extent. + * The default implementation attempts to ensure that the viewport extent does not go outside the translate extent. + */ + constrain(constraint: ((transform: ZoomTransform, extent: [[number, number], [number, number]], translateExtent: [[number, number], [number, number]]) => ZoomTransform)): this; + /** * Returns the current filter function. */ @@ -647,7 +660,7 @@ export interface ZoomBehavior void) => { if (file.accepted) { diff --git a/types/dropzone/index.d.ts b/types/dropzone/index.d.ts index f809f84227..0295afbed2 100644 --- a/types/dropzone/index.d.ts +++ b/types/dropzone/index.d.ts @@ -26,6 +26,14 @@ declare namespace Dropzone { accepted: boolean; xhr?: XMLHttpRequest; } + + export interface DropzoneDictFileSizeUnits { + tb?: string; + gb?: string; + mb?: string; + kb?: string; + b?: string; + } export interface DropzoneOptions { url?: string; @@ -72,6 +80,7 @@ declare namespace Dropzone { dictRemoveFile?: string; dictRemoveFileConfirmation?: string; dictMaxFilesExceeded?: string; + dictFileSizeUnits?: DropzoneDictFileSizeUnits; accept?(file: DropzoneFile, done: (error?: string | Error) => void): void; init?(): void; diff --git a/types/easeljs/index.d.ts b/types/easeljs/index.d.ts index d47f631728..462c9f04cf 100644 --- a/types/easeljs/index.d.ts +++ b/types/easeljs/index.d.ts @@ -1,4 +1,4 @@ -// Type definitions for EaselJS 0.8.0 +// Type definitions for EaselJS 1.0.0 // Project: http://www.createjs.com/#!/EaselJS // Definitions by: Pedro Ferreira , Chris Smith // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped @@ -53,6 +53,22 @@ declare namespace createjs { clone(): Bitmap; } + export class BitmapCache { + constructor(); + + // properties + cacheID: number; + + // methods + static getFilterBounds(target: DisplayObject, output?: Rectangle): Rectangle; + toString(): string; + define(target: DisplayObject, x: number, y: number, width: number, height: number, scale?: number): void; + update(compositeOperation?: string): void; + release(): void; + getCacheDataURL(): string; + draw(ctx: CanvasRenderingContext2D): boolean; + } + export class ScaleBitmap extends DisplayObject { constructor(imageOrUrl: HTMLImageElement | HTMLCanvasElement | HTMLVideoElement | Object | string, scale9Grid: Rectangle); @@ -211,6 +227,7 @@ declare namespace createjs { // properties alpha: number; + bitmapCache: BitmapCache; cacheCanvas: HTMLCanvasElement | Object; cacheID: number; compositeOperation: string; @@ -924,6 +941,60 @@ declare namespace createjs { } + interface IStageGLOptions { + preserveBuffer?: boolean; + antialias?: boolean; + transparent?: boolean; + premultiply?: boolean; + autoPurge?: number; + } + + export class StageGL extends Stage { + constructor(canvas: HTMLCanvasElement | string | Object, options?: IStageGLOptions); + + // properties + static VERTEX_PROPERTY_COUNT: number; + static INDICIES_PER_CARD: number; + static DEFAULT_MAX_BATCH_SIZE: number; + static WEBGL_MAX_INDEX_NUM: number; + static UV_RECT: number; + static COVER_VERT: Float32Array; + static COVER_UV: Float32Array; + static COVER_UV_FLIP: Float32Array; + static REGULAR_VARYING_HEADER: string; + static REGULAR_VERTEX_HEADER: string; + static REGULAR_FRAGMENT_HEADER: string; + static REGULAR_VERTEX_BODY: string; + static REGULAR_FRAGMENT_BODY: string; + static REGULAR_FRAG_COLOR_NORMAL: string; + static REGULAR_FRAG_COLOR_PREMULTIPLY: string; + static PARTICLE_VERTEX_BODY: string; + static PARTICLE_FRAGMENT_BODY: string; + static COVER_VARYING_HEADER: string; + static COVER_VERTEX_HEADER: string; + static COVER_FRAGMENT_HEADER: string; + static COVER_VERTEX_BODY: string; + static COVER_FRAGMENT_BODY: string; + isWebGL: boolean; + autoPurge: number; + vocalDebug: boolean; + + // methods + static buildUVRects(spritesheet: SpriteSheet, target?: number, onlyTarget?: boolean): Object; + static isWebGLActive(ctx: CanvasRenderingContext2D): boolean; + cacheDraw(target: DisplayObject, filters: Filter[], manager: BitmapCache): boolean; + getBaseTexture(w?: number, h?: number): WebGLTexture | null; + getFilterShader(filter: Filter | Object): WebGLProgram; + getRenderBufferTexture (w: number, h: number): WebGLTexture; + getTargetRenderTexture (target: DisplayObject, w: number, h: number): Object; + protectTextureSlot(id: number, lock?: boolean): void; + purgeTextures(count?: number): void; + releaseTexture(item: DisplayObject | WebGLTexture | HTMLImageElement | HTMLCanvasElement): void; + setTextureParams(gl: WebGLRenderingContext, isPOT?: boolean): void; + updateSimultaneousTextureCount(count?: number): void; + updateViewport(width: number, height: number): void; + } + export class Text extends DisplayObject { constructor(text?: string, font?: string, color?: string); diff --git a/types/electron-json-storage/electron-json-storage-tests.ts b/types/electron-json-storage/electron-json-storage-tests.ts index 07d8461bed..2429f6a95f 100644 --- a/types/electron-json-storage/electron-json-storage-tests.ts +++ b/types/electron-json-storage/electron-json-storage-tests.ts @@ -2,8 +2,9 @@ import electron = require('electron'); import storage = require('electron-json-storage'); const DATA_PATH = '~/Downloads'; +const NEW_DATA_PATH = `${DATA_PATH}/new-data-path`; -console.log(storage.DEFAULT_DATA_PATH.length); +console.log(storage.getDefaultDataPath().length); storage.setDataPath(DATA_PATH); console.log(DATA_PATH.length); @@ -12,31 +13,59 @@ console.log(storage.getDataPath().length); storage.set('foo', { foo: 'bar' }, (err: any) => { }); storage.set('bar', { foo: 'bar' }, (err: any) => { }); +storage.set('baz', { foo: 'bar' }, {dataPath: NEW_DATA_PATH}, (err: any) => { }); storage.get('foo', (err: any, data: object) => { console.log(JSON.stringify(data)); }); +storage.get('baz', {dataPath: NEW_DATA_PATH}, (err: any, data: object) => { + console.log(JSON.stringify(data)); +}); + storage.getMany(['foo', 'bar'], (err: any, data: object) => { console.log(JSON.stringify(data)); }); +storage.getMany(['baz'], {dataPath: NEW_DATA_PATH}, (err: any, data: object) => { + console.log(JSON.stringify(data)); +}); storage.getAll((err: any, data: object) => { console.log(JSON.stringify(data)); }); +storage.getAll({dataPath: NEW_DATA_PATH}, (err: any, data: object) => { + console.log(JSON.stringify(data)); +}); + storage.has('foo', (err: any, hasKey: boolean) => { console.log("hasKey?: %s", hasKey); }); +storage.has('baz', {dataPath: NEW_DATA_PATH}, (err: any, hasKey: boolean) => { + console.log("hasKey?: %s", hasKey); +}); + storage.keys((err: any, keys: string[]) => { console.log(keys); }); +storage.keys({dataPath: NEW_DATA_PATH}, (err: any, keys: string[]) => { + console.log(keys); +}); + storage.remove("foo", (err: any) => { console.log(err); }); +storage.remove("baz", {dataPath: NEW_DATA_PATH}, (err: any) => { + console.log(err); +}); + storage.clear((err: any) => { console.log(err); }); + +storage.clear({dataPath: NEW_DATA_PATH}, (err: any) => { + console.log(err); +}); diff --git a/types/electron-json-storage/index.d.ts b/types/electron-json-storage/index.d.ts index cafa6c4171..75d6cf3983 100644 --- a/types/electron-json-storage/index.d.ts +++ b/types/electron-json-storage/index.d.ts @@ -1,18 +1,28 @@ -// Type definitions for electron-json-storage 3.1 +// Type definitions for electron-json-storage 4.0 // Project: https://github.com/electron-userland/electron-json-storage // Definitions by: Sam Saint-Pettersen , -// nrlquaker +// nrlquaker , +// John Woodruff // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped // TypeScript Version: 2.2 -export const DEFAULT_DATA_PATH: string; -export function setDataPath(directory: string): void; +export interface DataOptions { dataPath: string; } +export function getDefaultDataPath(): string; +export function setDataPath(directory?: string): void; export function getDataPath(): string; export function get(key: string, callback: (error: any, data: object) => void): void; +export function get(key: string, options: DataOptions, callback: (error: any, data: object) => void): void; export function getMany(keys: ReadonlyArray, callback: (error: any, data: object) => void): void; +export function getMany(keys: ReadonlyArray, options: DataOptions, callback: (error: any, data: object) => void): void; export function getAll(callback: (error: any, data: object) => void): void; +export function getAll(options: DataOptions, callback: (error: any, data: object) => void): void; export function set(key: string, json: object, callback: (error: any) => void): void; +export function set(key: string, json: object, options: DataOptions, callback: (error: any) => void): void; export function has(key: string, callback: (error: any, hasKey: boolean) => void): void; +export function has(key: string, options: DataOptions, callback: (error: any, hasKey: boolean) => void): void; export function keys(callback: (error: any, keys: string[]) => void): void; +export function keys(options: DataOptions, callback: (error: any, keys: string[]) => void): void; export function remove(key: string, callback: (error: any) => void): void; +export function remove(key: string, options: DataOptions, callback: (error: any) => void): void; export function clear(callback: (error: any) => void): void; +export function clear(options: DataOptions, callback: (error: any) => void): void; diff --git a/types/emscripten/emscripten-tests.ts b/types/emscripten/emscripten-tests.ts index 153ea6b5de..627efba590 100644 --- a/types/emscripten/emscripten-tests.ts +++ b/types/emscripten/emscripten-tests.ts @@ -18,6 +18,7 @@ function ModuleTest(): void { Module.print = function(text) { alert('stdout: ' + text) }; var int_sqrt = Module.cwrap('int_sqrt', 'number', ['number']) + int_sqrt = Module.cwrap('int_sqrt', null, ['number']) int_sqrt(12) int_sqrt(28) @@ -27,6 +28,7 @@ function ModuleTest(): void { var x = Module.getValue(buf, 'i32') + 123; Module.HEAPU8.set(myTypedArray, buf); Module.ccall('my_function', 'number', ['number'], [buf]); + Module.ccall('my_function', null, ['number'], [buf]); Module._free(buf); Module.destroy({}); } diff --git a/types/emscripten/index.d.ts b/types/emscripten/index.d.ts index 14260dd9d4..4db8ac4925 100644 --- a/types/emscripten/index.d.ts +++ b/types/emscripten/index.d.ts @@ -40,8 +40,8 @@ declare namespace Module { var Runtime: any; - function ccall(ident: string, returnType: string, argTypes: string[], args: any[]): any; - function cwrap(ident: string, returnType: string, argTypes: string[]): any; + function ccall(ident: string, returnType: string | null, argTypes: string[], args: any[]): any; + function cwrap(ident: string, returnType: string | null, argTypes: string[]): any; function setValue(ptr: number, value: any, type: string, noSafe?: boolean): void; function getValue(ptr: number, type: string, noSafe?: boolean): number; diff --git a/types/escape-string-regexp/index.d.ts b/types/escape-string-regexp/index.d.ts index 1ef18aedb1..7a52a312b1 100644 --- a/types/escape-string-regexp/index.d.ts +++ b/types/escape-string-regexp/index.d.ts @@ -1,10 +1,11 @@ // Type definitions for escape-string-regexp // Project: https://github.com/sindresorhus/escape-string-regexp // Definitions by: kruncher +// faergeek // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped -declare function escapeStringRegexp(str: string): string; +declare const escapeStringRegexp: (str: string) => string; export = escapeStringRegexp; diff --git a/types/google-cloud__datastore/index.d.ts b/types/google-cloud__datastore/index.d.ts index 6eee49ba50..a8e64839e6 100644 --- a/types/google-cloud__datastore/index.d.ts +++ b/types/google-cloud__datastore/index.d.ts @@ -223,7 +223,7 @@ declare module '@google-cloud/datastore/request' { runQuery(query: Query, options: QueryOptions, callback: QueryCallback): void; runQuery(query: Query, callback: QueryCallback): void; - runQuery(query: Query, options?: QueryOptions): QueryResult; + runQuery(query: Query, options?: QueryOptions): Promise; runQueryStream(query: Query, options?: QueryOptions): NodeJS.ReadableStream; diff --git a/types/google-cloud__pubsub/google-cloud__pubsub-tests.ts b/types/google-cloud__pubsub/google-cloud__pubsub-tests.ts new file mode 100644 index 0000000000..7a9b9905c2 --- /dev/null +++ b/types/google-cloud__pubsub/google-cloud__pubsub-tests.ts @@ -0,0 +1,578 @@ +import * as PubSub from '@google-cloud/pubsub'; + +// AUTHOR NOTES: We use the examples directly from the library documentation +// where possible. If there is a problem with a given example (e.g. undocumented +// feature or option), we make a note of it and provide an alternative example +// call instead. + +/////////////////////////////////////////////////////////////////////////////// +// PUBSUB +/////////////////////////////////////////////////////////////////////////////// +{ + let pubsub: PubSub.PubSub; + + // https://googlecloudplatform.github.io/google-cloud-node/#/docs/pubsub/0.14.1/pubsub?method=PubSub + // When running on Google Cloud Platform: + pubsub = PubSub(); + // When running elsewhere: + pubsub = PubSub({ + projectId: 'grape-spaceship-123', + keyFilename: '/path/to/keyfile.json', + }); + + // https://googlecloudplatform.github.io/google-cloud-node/#/docs/pubsub/0.14.1/pubsub?method=createSubscription + // Subscribe to a topic: + pubsub.createSubscription('messageCenter', 'newMessages', (err, subscription, apiResponse) => { }); + // Customize the subscription: + // NOTE: ackDeadline, as given in the example, is undocumented, so create a subscription only with the KNOWN options + pubsub.createSubscription('messageCenter', 'newMessages', { + retainAckedMessages: true, + }, (err, subscription, apiResponse) => { }); + // If the callback is omitted, we'll return a Promise. + pubsub.createSubscription('messageCenter', 'newMessages').then((data) => { + const subscription = data[0]; + const apiResponse = data[1]; + }); + + // https://googlecloudplatform.github.io/google-cloud-node/#/docs/pubsub/0.14.1/pubsub?method=createTopic + // Create topic with callback + pubsub.createTopic('my-new-topic', (err, topic, apiResponse) => { + if (!err) { + // The topic was created successfully. + } + }); + // If the callback is omitted, we'll return a Promise. + pubsub.createTopic('my-new-topic').then((data) => { + const topic = data[0]; + const apiResponse = data[1]; + }); + + // https://googlecloudplatform.github.io/google-cloud-node/#/docs/pubsub/0.14.1/pubsub?method=getSnapshots + // Get snapshots: + pubsub.getSnapshots((err, snapshots) => { + if (!err) { + // snapshots is an array of Snapshot objects. + } + }); + // If the callback is omitted, we'll return a Promise. + pubsub.getSnapshots().then((data) => { + const snapshots = data[0]; + }); + + // https://googlecloudplatform.github.io/google-cloud-node/#/docs/pubsub/0.14.1/pubsub?method=getSnapshotsStream + // Get snapshots stream + pubsub.getSnapshotsStream() + .on('error', console.error) + .on('data', (snapshot) => { + // snapshot is a Snapshot object. + }) + .on('end', () => { + // All snapshots retrieved. + }); + // If you anticipate many results, you can end a stream early to prevent unnecessary processing and API requests. + // NOTE: this had to be modified to work around the 'this' keyword as used in the example + { + const stream = pubsub.getSnapshotsStream(); + stream.on('data', (snapshot) => { + stream.end(); + }); + } + + // https://googlecloudplatform.github.io/google-cloud-node/#/docs/pubsub/0.14.1/pubsub?method=getSubscriptions + // Get subscriptions: + pubsub.getSubscriptions((err, subscriptions) => { + if (!err) { + // subscriptions is an array of Subscription objects. + } + }); + // If the callback is omitted, we'll return a Promise. + pubsub.getSubscriptions().then((data) => { + const subscriptions = data[0]; + }); + + // https://googlecloudplatform.github.io/google-cloud-node/#/docs/pubsub/0.14.1/pubsub?method=getSubscriptionsStream + // Get subscriptions stream + pubsub.getSubscriptionsStream() + .on('error', console.error) + .on('data', (subscription) => { + // subscription is a Subscription object. + }) + .on('end', () => { + // All subscriptions retrieved. + }); + // If you anticipate many results, you can end a stream early to prevent unnecessary processing and API requests. + // Note: this had to be modified to work around the 'this' keyword as used in the example. + { + const stream = pubsub.getSubscriptionsStream(); + stream.on('data', (subscription) => { + stream.end(); + }); + } + + // https://googlecloudplatform.github.io/google-cloud-node/#/docs/pubsub/0.14.1/pubsub?method=getTopics + // Get topics: + pubsub.getTopics((err, topics) => { + if (!err) { + // topics is an array of Topic objects. + } + }); + // Customize the query: + pubsub.getTopics({ + pageSize: 3 + }, (err, topics) => { }); + // If the callback is omitted, we'll return a Promise. + pubsub.getTopics().then((data) => { + const topics = data[0]; + }); + + // https://googlecloudplatform.github.io/google-cloud-node/#/docs/pubsub/0.14.1/pubsub?method=getTopicsStream + // Get topics stream: + pubsub.getTopicsStream() + .on('error', console.error) + .on('data', (topic) => { + // topic is a Topic object. + }) + .on('end', () => { + // All topics retrieved. + }); + // If you anticipate many results, you can end a stream early to prevent unnecessary processing and API requests. + // Note: this had to be modified to work around the 'this' keyword as used in the example. + { + const stream = pubsub.getTopicsStream(); + stream.on('data', (topic) => { + stream.end(); + }); + } + + // https://googlecloudplatform.github.io/google-cloud-node/#/docs/pubsub/0.14.1/pubsub?method=snapshot + // Snapshot: + { + const snapshot = pubsub.snapshot('my-snapshot'); + } + + // https://googlecloudplatform.github.io/google-cloud-node/#/docs/pubsub/0.14.1/pubsub?method=subscription + // Subscription: + { + const subscription = pubsub.subscription('my-subscription'); + + // Register a listener for `message` events. + subscription.on('message', (message) => { + // Called every time a message is received. + // message.id = ID of the message. + // message.ackId = ID used to acknowledge the message receival. + // message.data = Contents of the message. + // message.attributes = Attributes of the message. + // message.publishTime = Timestamp when Pub/Sub received the message. + }); + } + + // https://googlecloudplatform.github.io/google-cloud-node/#/docs/pubsub/0.14.1/pubsub?method=topic + // Topic: + { + const topic = pubsub.topic('my-topic'); + } +} + +/////////////////////////////////////////////////////////////////////////////// +// PUBLISHER +/////////////////////////////////////////////////////////////////////////////// +{ + const pubsub = PubSub(); + const topic = pubsub.topic('my-topic'); + const publisher = topic.publisher(); + + // https://googlecloudplatform.github.io/google-cloud-node/#/docs/pubsub/0.14.1/pubsub/publisher?method=publish + // Publish: + publisher.publish(new Buffer('Hello, world!'), (err, messageId) => { + if (err) { + // Error handling omitted. + } + }); + // Optionally you can provide an object containing attributes for the message. + publisher.publish(new Buffer('Hello, world!'), { key: 'value' }, (err, messageId) => { + if (err) { + // Error handling omitted. + } + }); +} + +/////////////////////////////////////////////////////////////////////////////// +// SNAPSHOT +/////////////////////////////////////////////////////////////////////////////// +{ + const pubsub = PubSub(); + const subscription = pubsub.subscription('my-subscription'); + + // There are two type of snapshots; the ones obtained from subscription.createSnapshot() have more functionality + const snapshot = pubsub.snapshot('my-snapshot'); + const snapshotFromSubscription = subscription.snapshot('my-snapshot'); + + // https://googlecloudplatform.github.io/google-cloud-node/#/docs/pubsub/0.14.1/pubsub/snapshot?method=create + // Note: Only available to snapshots created via methods of Subscription + // Create snapshot + snapshotFromSubscription.create('my-snapshot', (err, snapshot, apiResponse) => { + if (!err) { + // The snapshot was created successfully. + } + }); + // If the callback is omitted, we'll return a Promise. + snapshotFromSubscription.create('my-snapshot').then((data) => { + const snapshot = data[0]; + const apiResponse = data[1]; + }); + + // https://googlecloudplatform.github.io/google-cloud-node/#/docs/pubsub/0.14.1/pubsub/snapshot?method=delete + // Delete the snapshot + snapshot.delete((err, apiResponse) => { }); + // If the callback is omitted, we'll return a Promise. + snapshot.delete().then((data) => { + const apiResponse = data[0]; + }); + + // https://googlecloudplatform.github.io/google-cloud-node/#/docs/pubsub/0.14.1/pubsub/snapshot?method=seek + // Note: Only available to snapshots created via methods of Subscription + // Seek: + snapshotFromSubscription.seek((err, apiResponse) => { }); + // If the callback is omitted, we'll return a Promise. + snapshotFromSubscription.seek().then((data) => { + const apiResponse = data[0]; + }); +} + +/////////////////////////////////////////////////////////////////////////////// +// SUBSCRIPTION +/////////////////////////////////////////////////////////////////////////////// +{ + const pubsub = PubSub(); + const topic = pubsub.topic('my-topic'); + const subscription = topic.subscription('my-subscription'); + + // https://googlecloudplatform.github.io/google-cloud-node/#/docs/pubsub/0.14.1/pubsub/subscription?method=close + // Close: + subscription.close((err) => { + if (err) { + // Error handling omitted. + } + }); + // If the callback is omitted, we'll return a Promise. + subscription.close().then(() => { }); + + // https://googlecloudplatform.github.io/google-cloud-node/#/docs/pubsub/0.14.1/pubsub/subscription?method=createSnapshot + // Create snapshot: + subscription.createSnapshot('my-snapshot', (err, snapshot, apiResponse) => { + if (!err) { + // The snapshot was created successfully. + } + }); + // If the callback is omitted, we'll return a Promise. + subscription.createSnapshot('my-snapshot').then((data) => { + const snapshot = data[0]; + const apiResponse = data[1]; + }); + + // https://googlecloudplatform.github.io/google-cloud-node/#/docs/pubsub/0.14.1/pubsub/subscription?method=delete + // Delete: + subscription.delete((err, apiResponse) => { }); + // If the callback is omitted, we'll return a Promise. + subscription.delete().then((data) => { + const apiResponse = data[0]; + }); + + // https://googlecloudplatform.github.io/google-cloud-node/#/docs/pubsub/0.14.1/pubsub/subscription?method=exists + // Exists: + subscription.exists((err, exists) => { }); + // If the callback is omitted, we'll return a Promise. + subscription.exists().then((data) => { + const exists = data[0]; + }); + + // https://googlecloudplatform.github.io/google-cloud-node/#/docs/pubsub/0.14.1/pubsub/subscription?method=get + // Get: + subscription.get((err, subscription, apiResponse) => { + // The `subscription` data has been populated. + }); + // If the callback is omitted, we'll return a Promise. + subscription.get().then((data) => { + const subscription = data[0]; + const apiResponse = data[1]; + }); + + // https://googlecloudplatform.github.io/google-cloud-node/#/docs/pubsub/0.14.1/pubsub/subscription?method=getMetadata + // Get metadata: + subscription.getMetadata((err, apiResponse) => { + if (err) { + // Error handling omitted. + } + }); + // If the callback is omitted, we'll return a Promise. + subscription.getMetadata().then((data) => { + const apiResponse = data[0]; + }); + + // https://googlecloudplatform.github.io/google-cloud-node/#/docs/pubsub/0.14.1/pubsub/subscription?method=modifyPushConfig + // Modify push config: + // Note: Had to modify the code to force typings + { + const pushConfig: PubSub.Subscription.PushConfig = { + pushEndpoint: 'https://mydomain.com/push', + attributes: { + 'x-goog-version': 'v1', + } + }; + subscription.modifyPushConfig(pushConfig, (err, apiResponse) => { + if (err) { + // Error handling omitted. + } + }); + // If the callback is omitted, we'll return a Promise. + subscription.modifyPushConfig(pushConfig).then((data) => { + const apiResponse = data[0]; + }); + } + + // https://googlecloudplatform.github.io/google-cloud-node/#/docs/pubsub/0.14.1/pubsub/subscription?method=seek + // Seek: + { + const callback: PubSub.Subscription.SeekCallback = (err, resp) => { + if (!err) { + // Seek was successful. + } + }; + subscription.seek('my-snapshot', callback); + // Alternatively, to specify a certain point in time, you can provide a Date object. + subscription.seek(new Date('October 21 2015'), callback); + } + + // https://googlecloudplatform.github.io/google-cloud-node/#/docs/pubsub/0.14.1/pubsub/subscription?method=setMetadata + { + const metadata = { + key: 'value' + }; + + // Set metadata + subscription.setMetadata(metadata, (err, apiResponse) => { + if (err) { + // Error handling omitted. + } + }); + // If the callback is omitted, we'll return a Promise. + subscription.setMetadata(metadata).then((data) => { + const apiResponse = data[0]; + }); + } + + // https://googlecloudplatform.github.io/google-cloud-node/#/docs/pubsub/0.14.1/pubsub/subscription?method=snapshot + // Snapshot: + subscription.snapshot('my-snapshot'); +} + +/////////////////////////////////////////////////////////////////////////////// +// TOPIC +/////////////////////////////////////////////////////////////////////////////// +{ + const pubsub = PubSub(); + const topic = pubsub.topic('my-topic'); + + // https://googlecloudplatform.github.io/google-cloud-node/#/docs/pubsub/0.14.1/pubsub/topic?method=create + // Create: + topic.create((err, topic, apiResponse) => { + if (!err) { + // The topic was created successfully. + } + }); + // If the callback is omitted, we'll return a Promise. + topic.create().then((data) => { + const topic = data[0]; + const apiResponse = data[1]; + }); + + // https://googlecloudplatform.github.io/google-cloud-node/#/docs/pubsub/0.14.1/pubsub/topic?method=createSubscription + { + const callback: PubSub.Topic.CreateSubscriptionCallback = (err, subscription, apiResponse) => { }; + + // Without specifying any options. + topic.createSubscription('newMessages', callback); + + // With options. + // Note: ackDeadline not documented, so we use a different option + topic.createSubscription('newMessages', { + // ackDeadline: 90000 // 90 seconds + retainAckedMessages: true, + }, callback); + + // If the callback is omitted, we'll return a Promise. + topic.createSubscription('newMessages').then((data) => { + const subscription = data[0]; + const apiResponse = data[1]; + }); + } + + // https://googlecloudplatform.github.io/google-cloud-node/#/docs/pubsub/0.14.1/pubsub/topic?method=delete + // Delete: + topic.delete((err, apiResponse) => { }); + // If the callback is omitted, we'll return a Promise. + topic.delete().then((data) => { + const apiResponse = data[0]; + }); + + // https://googlecloudplatform.github.io/google-cloud-node/#/docs/pubsub/0.14.1/pubsub/topic?method=exists + // Exists: + topic.exists((err, exists) => { }); + // If the callback is omitted, we'll return a Promise. + topic.exists().then((data) => { + const exists = data[0]; + }); + + // https://googlecloudplatform.github.io/google-cloud-node/#/docs/pubsub/0.14.1/pubsub/topic?method=get + // Get: + topic.get((err, topic, apiResponse) => { + // The `topic` data has been populated. + }); + // If the callback is omitted, we'll return a Promise. + topic.get().then((data) => { + const topic = data[0]; + const apiResponse = data[1]; + }); + + // https://googlecloudplatform.github.io/google-cloud-node/#/docs/pubsub/0.14.1/pubsub/topic?method=getMetadata + // Get metadata + topic.getMetadata((err, apiResponse) => { }); + // If the callback is omitted, we'll return a Promise. + topic.getMetadata().then((data) => { + const apiResponse = data[0]; + }); + + // https://googlecloudplatform.github.io/google-cloud-node/#/docs/pubsub/0.14.1/pubsub/topic?method=getSubscriptions + // Get subscriptions: + // Note: Modified so that the callback is a constant + { + const callback: PubSub.Topic.GetSubscriptionsCallback = (err, subscriptions) => { + // subscriptions is an array of `Subscription` objects. + }; + + topic.getSubscriptions(callback); + + // Customize the query. + topic.getSubscriptions({ + pageSize: 3 + }, callback); + + // If the callback is omitted, we'll return a Promise. + topic.getSubscriptions().then((data) => { + const subscriptions = data[0]; + }); + } + + // https://googlecloudplatform.github.io/google-cloud-node/#/docs/pubsub/0.14.1/pubsub/topic?method=getSubscriptionsStream + // Get subscriptions stream: + topic.getSubscriptionsStream() + .on('error', console.error) + .on('data', (subscription) => { + // subscription is a Subscription object. + }) + .on('end', () => { + // All subscriptions retrieved. + }); + // If you anticipate many results, you can end a stream early to prevent unnecessary processing and API requests. + { + const stream = topic.getSubscriptionsStream(); + stream.on('data', (subscription) => { + stream.end(); + }); + } + + // https://googlecloudplatform.github.io/google-cloud-node/#/docs/pubsub/0.14.1/pubsub/topic?method=publisher + topic.publisher().publish(new Buffer('Hello, world!'), (err, messageId) => { + if (err) { + // Error handling omitted. + } + }); + + // https://googlecloudplatform.github.io/google-cloud-node/#/docs/pubsub/0.14.1/pubsub/topic?method=subscription + // Register a listener for `message` events. + topic.subscription('my-subscription').on('message', (message) => { + // Called every time a message is received. + // message.id = ID of the message. + // message.ackId = ID used to acknowledge the message receival. + // message.data = Contents of the message. + // message.attributes = Attributes of the message. + // message.publishTime = Timestamp when Pub/Sub received the message. + }); +} + +/////////////////////////////////////////////////////////////////////////////// +// IAM +/////////////////////////////////////////////////////////////////////////////// +{ + const pubsub = PubSub(); + const topic = pubsub.topic('my-topic'); + const subscription = topic.subscription('my-subscription'); + + // https://googlecloudplatform.github.io/google-cloud-node/#/docs/pubsub/0.14.1/pubsub/subscription?method=iam.getPolicy + // https://googlecloudplatform.github.io/google-cloud-node/#/docs/pubsub/0.14.1/pubsub/topic?method=iam.getPolicy + // Get policy: + topic.iam.getPolicy((err, policy, apiResponse) => { }); + subscription.iam.getPolicy((err, policy, apiResponse) => { }); + // If the callback is omitted, we'll return a Promise. + topic.iam.getPolicy().then((data) => { + const policy = data[0]; + const apiResponse = data[1]; + }); + + // https://googlecloudplatform.github.io/google-cloud-node/#/docs/pubsub/0.14.1/pubsub/subscription?method=iam.setPolicy + // https://googlecloudplatform.github.io/google-cloud-node/#/docs/pubsub/0.14.1/pubsub/topic?method=iam.setPolicy + { + const myPolicy = { + bindings: [ + { + role: 'roles/pubsub.subscriber', + members: ['serviceAccount:myotherproject@appspot.gserviceaccount.com'] + } + ] + }; + + // Set policy: + topic.iam.setPolicy(myPolicy, (err, policy, apiResponse) => { }); + subscription.iam.setPolicy(myPolicy, (err, policy, apiResponse) => { }); + + // If the callback is omitted, we'll return a Promise. + topic.iam.setPolicy(myPolicy).then((data) => { + const policy = data[0]; + const apiResponse = data[1]; + }); + } + + // https://googlecloudplatform.github.io/google-cloud-node/#/docs/pubsub/0.14.1/pubsub/subscription?method=iam.testPermissions + // https://googlecloudplatform.github.io/google-cloud-node/#/docs/pubsub/0.14.1/pubsub/topic?method=iam.testPermissions + { + const test = 'pubsub.topics.update'; + + // Test permission + topic.iam.testPermissions(test, (err, permissions, apiResponse) => { + console.log(permissions); + // { + // "pubsub.topics.update": true + // } + }); + + // Test several permissions at once. + const tests = [ + 'pubsub.subscriptions.consume', + 'pubsub.subscriptions.update' + ]; + + subscription.iam.testPermissions(tests, (err, permissions) => { + console.log(permissions); + // { + // "pubsub.subscriptions.consume": true, + // "pubsub.subscriptions.update": false + // } + }); + + // If the callback is omitted, we'll return a Promise. + topic.iam.testPermissions(test).then((data) => { + const permissions = data[0]; + const apiResponse = data[1]; + }); + } +} diff --git a/types/google-cloud__pubsub/index.d.ts b/types/google-cloud__pubsub/index.d.ts new file mode 100644 index 0000000000..7c9014b7d3 --- /dev/null +++ b/types/google-cloud__pubsub/index.d.ts @@ -0,0 +1,344 @@ +// Type definitions for @google-cloud/pubsub 0.14 +// Project: https://github.com/GoogleCloudPlatform/google-cloud-node/tree/master/packages/pubsub +// Definitions by: Paul Huynh +// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped +// TypeScript Version: 2.2 + +/// +import { EventEmitter } from "events"; +import { Duplex } from "stream"; + +declare namespace PubSub { + // TODO write definitions for the for v1 + // https://googlecloudplatform.github.io/google-cloud-node/#/docs/pubsub/0.14.1/pubsub/v1 + function v1(config?: GCloudConfiguration): any; + + interface GCloudConfiguration { + projectId?: string; + keyFilename?: string; + email?: string; + credentials?: { + client_email?: string; + private_key?: string + }; + autoRetry?: boolean; + maxRetries?: number; + promise?: any; + } + + interface PubSub { + createSubscription(topic: Topic | string, name: string, options?: PubSub.CreateSubscriptionOptions): Promise; + createSubscription(topic: Topic | string, name: string, callback: PubSub.CreateSubscriptionCallback): void; + createSubscription(topic: Topic | string, name: string, options: PubSub.CreateSubscriptionOptions, callback: PubSub.CreateSubscriptionCallback): void; + + createTopic(name: string, gaxOpts?: GAX.CallOptions): Promise; + createTopic(name: string, callback: PubSub.CreateTopicCallback): void; + createTopic(name: string, gaxOpts: GAX.CallOptions, callback: PubSub.CreateTopicCallback): void; + + getSnapshots(options?: PubSub.GetSnapshotsOptions): Promise; + getSnapshots(callback: PubSub.GetSnapshotsCallback): void; + getSnapshots(options: PubSub.GetSnapshotsOptions, callback: PubSub.GetSnapshotsCallback): void; + + getSnapshotsStream(options?: PubSub.GetSnapshotsOptions): Duplex; + + getSubscriptions(options?: PubSub.GetSubscriptionsOptions): Promise; + getSubscriptions(callback: PubSub.GetSubscriptionsCallback): void; + getSubscriptions(options: PubSub.GetSubscriptionsOptions, callback: PubSub.GetSubscriptionsCallback): void; + + getSubscriptionsStream(options?: PubSub.GetSubscriptionsOptions): Duplex; + + getTopics(query?: PubSub.GetTopicsQuery): Promise; + getTopics(callback: PubSub.GetTopicsCallback): void; + getTopics(query: PubSub.GetTopicsQuery, callback: PubSub.GetTopicsCallback): void; + + getTopicsStream(query?: PubSub.GetTopicsQuery): Duplex; + + snapshot(name: string): Snapshot; + + subscription(name: string, options?: PubSub.SubscriptionOptions): Subscription; + + topic(name: string): Topic; + } + namespace PubSub { + interface CreateSubscriptionOptions { + flowControl?: { + maxBytes?: number; + maxMessages?: number; + }; + gaxOpts?: GAX.CallOptions; + messageRetentionDuration?: number | Date; + pushEndpoint?: string; + retainAckedMessages?: boolean; + } + type CreateSubscriptionCallback = (err: Error | null, subscription: Subscription, apiResponse: object) => void; + + type CreateTopicCallback = (err: Error | null, topic: Topic, apiResponse: object) => void; + + interface GetSnapshotsOptions { + autoPaginate?: boolean; + gaxOpts?: GAX.CallOptions; + pageSize?: number; + pageToken?: string; + } + type GetSnapshotsCallback = (err: Error | null, snapshots: Snapshot[]) => void; + + interface GetSubscriptionsOptions { + autoPaginate?: boolean; + gaxOpts?: GAX.CallOptions; + pageSize?: number; + pageToken?: string; + topic?: Topic | string; + } + type GetSubscriptionsCallback = (err: Error | null, subscriptions: Subscription[], apiResponse: object) => void; + + interface GetTopicsQuery { + autoPaginate?: boolean; + gaxOpts?: GAX.CallOptions; + pageSize?: number; + pageToken?: string; + } + type GetTopicsCallback = (err: Error | null, topics: Topic[], apiResponse: object) => void; + + interface SubscriptionOptions { + flowControl?: { + maxBytes?: number; + maxMessages?: number; + }; + maxConnections?: number; + } + } + + interface Publisher { + publish(data: Buffer, callback: Publisher.PublishCallback): void; + publish(data: Buffer, attributes: object, callback: Publisher.PublishCallback): void; + publish(data: Buffer, attributes?: object): Promise; + } + namespace Publisher { + type PublishCallback = (error: Error | null, messageId: string) => void; + } + + interface Snapshot { + delete(): Promise; + delete(callback: Snapshot.DeleteCallback): void; + } + interface SnapshotFromSubscription extends Snapshot { + create(name: string): Promise; + create(name: string, callback: Snapshot.CreateCallback): void; + + seek(): Promise; + seek(callback: Snapshot.SeekCallback): void; + } + namespace Snapshot { + type DeleteCallback = (err: Error | null, apiResponse: object) => void; + + type CreateCallback = (err: Error | null, snapshot: Snapshot, apiResponse: object) => void; + + type SeekCallback = (err: Error | null, apiResponse: object) => void; + } + + interface Subscription extends EventEmitter { + close(): Promise; + close(callback: Subscription.CloseCallback): void; + + createSnapshot(name: string, gaxOpts?: GAX.CallOptions): Promise; + createSnapshot(name: string, callback: Subscription.CreateSnapshotCallback): void; + createSnapshot(name: string, gaxOpts: GAX.CallOptions, callback: Subscription.CreateSnapshotCallback): void; + + delete(gaxOpts?: GAX.CallOptions): Promise; + delete(callback: Subscription.DeleteCallback): void; + delete(gaxOpts: GAX.CallOptions, callback: Subscription.DeleteCallback): void; + + exists(): Promise; + exists(callback: Subscription.ExistsCallback): void; + + get(gaxOpts?: GAX.CallOptions): Promise; // TODO: only expose autoCreate + // NOTE: The following are not documented, but are possible signatures base on the source code + get(callback: Subscription.GetCallback): void; + get(gaxOpts: GAX.CallOptions, callback: Subscription.GetCallback): void; + + getMetadata(gaxOpts?: GAX.CallOptions): Promise; + getMetadata(callback: Subscription.GetMetadataCallback): void; + getMetadata(gaxOpts: GAX.CallOptions, callback: Subscription.GetMetadataCallback): void; + + iam: IAM; + + modifyPushConfig(config: Subscription.PushConfig, gaxOpts?: GAX.CallOptions): Promise; + modifyPushConfig(config: Subscription.PushConfig, callback: Subscription.ModifyPushConfigCallback): void; + modifyPushConfig(config: Subscription.PushConfig, gaxOpts: GAX.CallOptions, callback: Subscription.ModifyPushConfigCallback): void; + + seek(snapshot: string | Date, callback: Subscription.SeekCallback): void; + seek(snapshot: string | Date, gaxOpts: GAX.CallOptions, callback: Subscription.SeekCallback): void; + + setMetadata(metadata: object, gaxOpts?: GAX.CallOptions): Promise; + setMetadata(metadata: object, callback: Subscription.SetMetadataCallback): void; + setMetadata(metadata: object, gaxOpts: GAX.CallOptions, callback: Subscription.SetMetadataCallback): void; + + snapshot(name: string): SnapshotFromSubscription; + } + namespace Subscription { + type CloseCallback = (err: Error | null) => void; + + type CreateSnapshotCallback = (err: Error | null, snapshot: SnapshotFromSubscription, apiResponse: object) => void; + + type DeleteCallback = (err: Error | null, apiResponse: object) => void; + + type ExistsCallback = (err: Error | null, exists: boolean) => void; + + type GetCallback = (err: Error | null, subscription: Subscription, apiResponse: object) => void; + + type GetMetadataCallback = (err: Error | null, apiResponse: object) => void; + + interface PushConfig { + pushEndpoint?: string; + // https://cloud.google.com/pubsub/docs/reference/rest/v1/projects.subscriptions#pushconfig + attributes?: PushConfigAttributes; + } + interface PushConfigAttributes { + 'x-goog-version': 'v1beta' | 'v1' | 'v1beta2'; + } + type ModifyPushConfigCallback = (err: Error | null, apiResponse: object) => void; + + type SeekCallback = (err: Error | null, apiResponse: object) => void; + + type SetMetadataCallback = (err: Error | null, apiResponse: object) => void; + } + + interface Topic { + create(gaxOpts?: GAX.CallOptions): Promise; + create(callback: Topic.CreateCallback): void; + create(gaxOpts: GAX.CallOptions, callback: Topic.CreateCallback): void; + + createSubscription(nameOrOptions?: string | Topic.CreateSubscriptionOptions): Promise; + createSubscription(name: string, options: Topic.CreateSubscriptionOptions): Promise; + createSubscription(callback: Topic.CreateSubscriptionCallback): void; + createSubscription(nameOrOptions: string | Topic.CreateSubscriptionOptions, callback: Topic.CreateSubscriptionCallback): void; + createSubscription(name: string, options: Topic.CreateSubscriptionOptions, callback: Topic.CreateSubscriptionCallback): void; + + delete(gaxOpts?: GAX.CallOptions): Promise; + delete(callback: Topic.DeleteCallback): void; + delete(gaxOpts: GAX.CallOptions, callback: Topic.DeleteCallback): void; + + exists(): Promise; + exists(callback: Topic.ExistsCallback): void; + + // NOTE: The documentation in the link is incomplete; the function takes a callback + // as second argument (in the source): + // https://googlecloudplatform.github.io/google-cloud-node/#/docs/pubsub/0.14.1/pubsub/topic?method=get + get(gaxOpts?: GAX.CallOptions): Promise; + get(callback: Topic.GetCallback): void; + get(gaxOpts: GAX.CallOptions, callback: Topic.GetCallback): void; + + getMetadata(gaxOpts?: GAX.CallOptions): Promise; + getMetadata(callback: Topic.GetMetadataCallback): void; + getMetadata(gaxOpts: GAX.CallOptions, callback: Topic.GetMetadataCallback): void; + + getSubscriptions(options?: Topic.GetSubscriptionsOptions): Promise; + getSubscriptions(callback: Topic.GetSubscriptionsCallback): void; + getSubscriptions(options: Topic.GetSubscriptionsOptions, callback: Topic.GetSubscriptionsCallback): void; + + // Note: The documention lists the parameter as 'query', when it probably should be 'options'. + getSubscriptionsStream(options?: Topic.GetSubscriptionsOptions): Duplex; + + iam: IAM; + + publisher(options?: Topic.PublisherOptions): Publisher; + + subscription(name: string, options?: Topic.SubscriptionOptions): Subscription; + } + namespace Topic { + type CreateCallback = PubSub.CreateTopicCallback; + + type CreateSubscriptionOptions = PubSub.CreateSubscriptionOptions; + type CreateSubscriptionCallback = PubSub.CreateSubscriptionCallback; + + // Note: This is not fully documented in the link; browse the source code to find the callback parameters + // https://googlecloudplatform.github.io/google-cloud-node/#/docs/pubsub/0.14.1/pubsub/topic?method=delete + type DeleteCallback = (err: Error | null, apiResponse: object) => void; + + type ExistsCallback = (err: Error | null, exists: boolean) => void; + + // Note: This is not fully documented in the link; browse the source code to find the callback parameters + // https://googlecloudplatform.github.io/google-cloud-node/#/docs/pubsub/0.14.1/pubsub/topic?method=get + type GetCallback = (err: Error | null, topic: Topic, apiResponse: object) => void; + + type GetMetadataCallback = (err: Error | null, apiResponse: object) => void; + + // Options are SLIGHTLY different to PubSub.getSubscriptions(...), so we can't just reuse it + interface GetSubscriptionsOptions { + autoPaginate?: boolean; + gaxOpts?: GAX.CallOptions; + pageSize?: number; + pageToken?: string; + } + // Callback signature also slightly different to PubSub.getSubscriptions(callback), so we can't just reuse it + type GetSubscriptionsCallback = (err: Error | null, subscriptions: Subscription[]) => void; + + interface PublisherOptions { + batching?: { + maxBytes?: number; + maxMessages?: number; + maxMilliseconds?: number; + }; + } + + type SubscriptionOptions = PubSub.SubscriptionOptions; + } + + // Allow this interface to start with 'I', since it's an acronym! + // tslint:disable-next-line interface-name + interface IAM { + getPolicy(): Promise; + getPolicy(callback: IAM.GetPolicyCallback): void; + + setPolicy(policy: IAM.Policy): Promise; + setPolicy(policy: IAM.Policy, callback: IAM.SetPolicyCallback): void; + + testPermissions(permissions: string | string[]): Promise; + testPermissions(permissions: string | string[], callback: IAM.TestPermissionsCallback): void; + } + namespace IAM { + type GetPolicyCallback = (err: Error | null, policy: Policy, apiResponse: object) => void; + + type SetPolicyCallback = (err: Error | null, policy: Policy, apiResponse: object) => void; + + type TestPermissionsCallback = (err: Error | null, permissions: string | string[], apiResponse: object) => void; + + interface Policy { + bindings?: any[]; + rules?: object[]; + etag?: string; + } + } + + namespace GAX { + /** https://googleapis.github.io/gax-nodejs/global.html#CallOptions */ + interface CallOptions { + timeout?: number; + retry?: RetryOptions; + autoPaginate?: boolean; + pageToken?: object; + isBundling?: boolean; + longrunning?: BackoffSettings; + promise?: PromiseConstructor; // FIXME Unsure if this is the correct type; remove this comment if it is + } + + /** https://googleapis.github.io/gax-nodejs/global.html#RetryOptions */ + interface RetryOptions { + retryCodes: string[]; + backoffSettings: BackoffSettings; + } + + /** https://googleapis.github.io/gax-nodejs/global.html#BackoffSettings */ + interface BackoffSettings { + initialRetryDelayMillis: number; + retryDelayMultiplier: number; + maxRetryDelayMillis: number; + initialRpcTimeoutMillis: number; + maxRpcTimeoutMillis: number; + totalTimeoutMillis: number; + } + } +} + +declare function PubSub(config?: PubSub.GCloudConfiguration): PubSub.PubSub; +export = PubSub; diff --git a/types/google-cloud__pubsub/tsconfig.json b/types/google-cloud__pubsub/tsconfig.json new file mode 100644 index 0000000000..f71eb2a331 --- /dev/null +++ b/types/google-cloud__pubsub/tsconfig.json @@ -0,0 +1,28 @@ +{ + "compilerOptions": { + "module": "commonjs", + "lib": [ + "es6" + ], + "noImplicitAny": true, + "noImplicitThis": true, + "strictNullChecks": true, + "strictFunctionTypes": true, + "baseUrl": "../", + "typeRoots": [ + "../" + ], + "types": [], + "paths": { + "@google-cloud/pubsub": [ + "google-cloud__pubsub" + ] + }, + "noEmit": true, + "forceConsistentCasingInFileNames": true + }, + "files": [ + "index.d.ts", + "google-cloud__pubsub-tests.ts" + ] +} \ No newline at end of file diff --git a/types/google-cloud__pubsub/tslint.json b/types/google-cloud__pubsub/tslint.json new file mode 100644 index 0000000000..3db14f85ea --- /dev/null +++ b/types/google-cloud__pubsub/tslint.json @@ -0,0 +1 @@ +{ "extends": "dtslint/dt.json" } diff --git a/types/google.analytics/google.analytics-tests.ts b/types/google.analytics/google.analytics-tests.ts index 945f967dc9..5256f636c7 100644 --- a/types/google.analytics/google.analytics-tests.ts +++ b/types/google.analytics/google.analytics-tests.ts @@ -41,14 +41,39 @@ describe('UniversalAnalytics', () => { }); it('should excercise Tracker APIs', () => { const tracker: UniversalAnalytics.Tracker = ga.create('UA-65432-1', 'auto'); - const aString: string = tracker.get('aString'); - const aNumber: number = tracker.get('aNumber'); - const anObject: {} = tracker.get<{}>('anObject'); + + tracker.get('fieldName'); + + tracker.set('aString', 'aString'); + tracker.set('aNumber', 1); + tracker.set('anObject', {}); + tracker.set({ + several: 'values', + at: 'once' + }); + tracker.send('pageview'); + tracker.send('pageview', '/some-path'); tracker.send('pageview', {some: 'details'}); - tracker.set('aString', aString); - tracker.set('aNumber', aNumber); - tracker.set('anObject', anObject); + }); + + it('should exercise Model APIs', () => { + const tracker: UniversalAnalytics.Tracker = ga.create('UA-65432-1', 'auto'); + + tracker.set('sendHitTask', (gaHitModel: UniversalAnalytics.Model) => { + gaHitModel.get('hitPayload'); + + gaHitModel.set('hitCallback', () => console.log('hit sent'), true); + gaHitModel.set('hitCallback', () => console.log('hit sent')); + gaHitModel.set({ + hitPayload: 'a=1&b=2', + otherField: 3 + }); + gaHitModel.set({ + hitPayload: 'a=1&b=2', + otherField: 3 + }, null, false); + }); }); }); diff --git a/types/google.analytics/index.d.ts b/types/google.analytics/index.d.ts index c6d188d1cb..b0412a362f 100644 --- a/types/google.analytics/index.d.ts +++ b/types/google.analytics/index.d.ts @@ -1,6 +1,6 @@ // Type definitions for Google Analytics (Classic and Universal) // Project: https://developers.google.com/analytics/devguides/collection/gajs/, https://developers.google.com/analytics/devguides/collection/analyticsjs/method-reference -// Definitions by: Ronnie Haakon Hegelund , Pat Kujawa +// Definitions by: Ronnie Haakon Hegelund , Pat Kujawa , Tyler Murphy // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped declare class Tracker { @@ -620,12 +620,17 @@ declare namespace UniversalAnalytics { } interface Tracker { - get(fieldName: string): T; - send(hitType: string, opt_fieldObject?: {}): void; - set(fieldName: string, value: string): void; - set(fieldName: string, value: {}): void; - set(fieldName: string, value: number): void; - set(fieldName: string, value: boolean): void; + get(fieldName: string): any; + set(fieldName: string, fieldValue: any): void; + set(fieldsObject: {}): void; + send(hitType: string, ...fields: any[]): void; + send(hitType: string, fieldsObject: {}): void; + } + + interface Model { + get(fieldName: string): any; + set(fieldName: string, fieldValue: any, temporary?: boolean): void; + set(fields: {}, fieldValue?: null, temporary?: boolean): void; } } diff --git a/types/heremaps/heremaps-tests.ts b/types/heremaps/heremaps-tests.ts index 0856cd2616..9e92b92d72 100644 --- a/types/heremaps/heremaps-tests.ts +++ b/types/heremaps/heremaps-tests.ts @@ -179,3 +179,16 @@ pixelProjection.rescale(12); const point = pixelProjection.geoToPixel({ lat: 53, lng: 12 }); pixelProjection.xyToGeo(point.x, point.y); + +const engine = map.getEngine(); +engine.getAnimationDuration(); +engine.setAnimationDuration(1000); + +engine.getAnimationEase(); +engine.setAnimationEase(H.util.animation.ease.EASE_IN_QUAD); + +const engineListener = (e: Event) => { + console.log(e); +}; +engine.addEventListener('tap', engineListener); +engine.removeEventListener('tap', engineListener); diff --git a/types/heremaps/index.d.ts b/types/heremaps/index.d.ts index 0bda913919..8b68f11278 100644 --- a/types/heremaps/index.d.ts +++ b/types/heremaps/index.d.ts @@ -264,6 +264,12 @@ declare namespace H { * @param opt_scope {Object=} - An optional scope to call the callback in. */ addOnDisposeCallback(callback: () => void, opt_scope?: {}): void; + + /** + * This returns the map's render engine + * @return {H.map.render.p2d.RenderEngine} - map render engine + */ + getEngine(): H.map.render.p2d.RenderEngine; } namespace Map { @@ -3606,6 +3612,261 @@ declare namespace H { } } } + + namespace render { + /** + * This is an abstract class representing a render engine. Render engines are used to render the geographical position from a view model on the + * screen (viewport element). The rendered result may be different for different engines, because every engine uses its own capabilities and + * specific implementation to present the current view model data in best possible way. For example, 2D engines create a two-dimensional flat + * map composed of tiles, while 3D engines can generate panoramas displaying the same coordinates as a 'street view'. + */ + class RenderEngine extends H.util.EventTarget { + /** + * Constructor + * @param viewPort {H.map.ViewPort} - An object representing the map viewport + * @param viewModel {H.map.ViewModel} - An object representing a view of the map + * @param dataModel {H.map.DataModel} - An object encapsulating the data to be rendered on the map (layers and objects) + * @param options {H.map.render.RenderEngine.Options} - An object containing the render engine initialization options + */ + constructor(viewPort: H.map.ViewPort, viewModel: H.map.ViewModel, dataModel: H.map.DataModel, options: H.map.render.RenderEngine.Options); + + /** + * This method adds a listener for a specific event. + * Note that to prevent potential memory leaks, you must either call removeEventListener or dispose on the given object when you no longer need it. + * @param type {string} - The name of the event + * @param handler {!Function} - An event handler function + * @param opt_capture {boolean=} - true indicates that the method should listen in the capture phase (bubble otherwise) + * @param opt_scope {Object=} - An object defining the scope for the handler function + */ + addEventListener(type: string, handler: (evt: Event) => void, opt_capture?: boolean, opt_scope?: {}): void; + + /** + * This method removes a previously added listener from the EventTarget instance. + * @param type {string} - The name of the event + * @param handler {!Function} - A previously added event handler + * @param opt_capture {boolean=} - true indicates that the method should listen in the capture phase (bubble otherwise) + * @param opt_scope {Object=} - An object defining the scope for the handler function + */ + removeEventListener(type: string, handler: (evt: Event) => void, opt_capture?: boolean, opt_scope?: {}): void; + + /** + * This method dispatches an event on the EventTarget object. + * @param evt {H.util.Event|string} - An object representing the event or a string with the event name + */ + dispatchEvent(evt: H.util.Event | string): void; + + /** + * This method removes listeners from the given object. Classes that extend EventTarget may need to override this method in order to remove + * references to DOM Elements and additional listeners. + */ + dispose(): void; + + /** + * This method adds a callback which is triggered when the EventTarget object is being disposed. + * @param callback {!Function} - The callback function. + * @param opt_scope {Object=} - An optional scope for the callback function + */ + addOnDisposeCallback(callback: () => void, opt_scope?: {}): void; + } + + namespace RenderEngine { + /** + * An object containing the render engine initialization options + */ + interface Options { + [key: string]: string; + } + + /** + * This object defines the modifiers to use for H.map.ViewPort#startInteraction. + */ + enum InteractionModifiers { + /** changes zoom level during the interaction */ + ZOOM, + /** changes map center during the interaction */ + HEADING, + /** changes heading angle during the interaction */ + TILT, + /** changes tilt angle during the interaction */ + INCLINE, + /** changes incline angle during the interaction */ + COORD, + } + } + + /** + * The rendering states of the layer. + */ + enum RenderState { + /** + * Data loading/processing is still in progress, but there is nothing to render. In this state rendering engine might go to sleep mode after + * certain amount of time to prevent draining of battery on the user device. + */ + PENDING, + /** Data rendering or animation is in progress. */ + ACTIVE, + /** Data rendering or animation is done. */ + DONE, + } + + /** + * An object containing rendering parameters. + */ + interface RenderingParams { + /** + * The geographical area to render. Note that it is not the same as visible viewport. Specified bounds also include H.Map.Options#margin and + * optionally an additional margin in case of DOM node rendering for a better rendering experience. + * @type {H.geo.Rect} + */ + bounds: H.geo.Rect; + + /** + * The zoom level to render the data for. + * @type {number} + */ + zoom: number; + + /** + * The coordinates of the screen center in CSS pixels. + * @type {H.math.Point} + */ + screenCenter: H.math.Point; + + /** + * The coordinates relative to the screen center where the rendering has the highest priority. If the layer has to request and/or process data + * asynchronously, it's recommended to prioritize the rendering close to this center. + * @type {H.math.Point} + */ + priorityCenter: H.math.Point; + + /** + * The pixel projection to use to project geographical coordinates into screen coordinates and vice versa. + * @type {H.geo.PixelProjection} + */ + projection: H.geo.PixelProjection; + + /** + * Indicates whether only cached data should be considered. + * @type {boolean} + */ + cacheOnly: boolean; + + /** + * The size of the area to render. + * @type {H.math.Size} + */ + size: H.math.Size; + + /** + * The pixelRatio to use for over-sampling in cases of high-resolution displays. + * See https://developer.mozilla.org/en-US/docs/Web/API/Window/devicePixelRatio. + * @type {number} + */ + pixelRatio: number; + } + + /** + * Contains functionality specific to 2D map rendering. + */ + namespace p2d { + /** + * This class implements a map render engine. It presents a geographic location (camera data from a view model) and renders all map layers in + * the order in which they are provided in a single 2D canvas element. + */ + class RenderEngine extends H.map.render.RenderEngine { + /** + * Constructor + * @param viewPort {H.map.ViewPort} - An object representing the map viewport + * @param viewModel {H.map.ViewModel} - An object representing a view of the map + * @param dataModel {H.map.DataModel} - An object encapsulating the data to be rendered on the map (layers and objects) + * @param options {H.map.render.RenderEngine.Options} - An object containing the render engine initialization options + */ + constructor(viewPort: H.map.ViewPort, viewModel: H.map.ViewModel, dataModel: H.map.DataModel, options: H.map.render.RenderEngine.Options); + + /** + * This method sets the length (duration) for all animations run by the render engine in milliseconds. + * @param duration {number} - A value indicating the duration of animations in milliseconds + */ + setAnimationDuration(duration: number): void; + + /** + * This method retrieves the current setting indicating the length of animations (duration) run by the the render engine in milliseconds. + * @return {number} + */ + getAnimationDuration(): number; + + /** + * This method sets a value indicating the easing to apply to animations run by the render engine. + * @param easeFunction {Function(number)} - A function that alters the progress ratio of an animation. It receives an argument indicating + * animation progress as a numeric value in the range between 0 and 1 and must return a numeric value in the same range. + */ + setAnimationEase(easeFunction: (progress: number) => number): void; + + /** + * This method retrieves the current setting representing the easing to be applied to animations. + * @return {Function(number) => number} - A numeric value in the range 0 to 1 + */ + getAnimationEase(): (progress: number) => number; + + /** + * This method resets animation settings on the render engine to defaults. + * Duration is set to 300ms and easing to H.util.animation.ease.EASE_OUT_QUAD. + */ + resetAnimationDefaults(): void; + + /** + * This method adds a listener for a specific event. + * Note that to prevent potential memory leaks, you must either call removeEventListener or dispose on the given object when you no longer need it. + * @param type {string} - The name of the event + * @param handler {!Function} - An event handler function + * @param opt_capture {boolean=} - true indicates that the method should listen in the capture phase (bubble otherwise) + * @param opt_scope {Object=} - An object defining the scope for the handler function + */ + addEventListener(type: string, handler: (evt: Event) => void, opt_capture?: boolean, opt_scope?: {}): void; + + /** + * This method removes a previously added listener from the EventTarget instance. + * @param type {string} - The name of the event + * @param handler {!Function} - A previously added event handler + * @param opt_capture {boolean=} - true indicates that the method should listen in the capture phase (bubble otherwise) + * @param opt_scope {Object=} - An object defining the scope for the handler function + */ + removeEventListener(type: string, handler: (evt: Event) => void, opt_capture?: boolean, opt_scope?: {}): void; + + /** + * This method dispatches an event on the EventTarget object. + * @param evt {H.util.Event|string} - An object representing the event or a string with the event name + */ + dispatchEvent(evt: H.util.Event | string): void; + + /** + * This method removes listeners from the given object. Classes that extend EventTarget may need to override this method in order to remove + * references to DOM Elements and additional listeners. + */ + dispose(): void; + + /** + * This method adds a callback which is triggered when the EventTarget object is being disposed. + * @param callback {!Function} - The callback function. + * @param opt_scope {Object=} - An optional scope for the callback function + */ + addOnDisposeCallback(callback: () => void, opt_scope?: {}): void; + } + + namespace RenderEngine { + interface Options { + /** Object describes how many cached zoom levels should be used as a base map background while base map tiles are */ + renderBaseBackground?: {}; + + /** The pixelRatio to use for over-sampling in cases of high-resolution displays */ + pixelRatio: number; + + /** optional */ + enableSubpixelRendering?: boolean; + } + } + } + } } /***** mapevents *****/ diff --git a/types/meteor/server-render.d.ts b/types/meteor/server-render.d.ts index cbf814ed61..1695142ee4 100644 --- a/types/meteor/server-render.d.ts +++ b/types/meteor/server-render.d.ts @@ -7,10 +7,10 @@ declare module "meteor/server-render" { body?: string; htmlById?: { [key: string]: string }; maybeMadeChanges?: boolean; - appendToHead(html: string): void; - appendToBody(html: string): void; - appendToElementById(id: string, html: string): void; - renderIntoElementById(id: string, html: string): void; + appendToHead?(html: string): void; + appendToBody?(html: string): void; + appendToElementById?(id: string, html: string): void; + renderIntoElementById?(id: string, html: string): void; } function onPageLoad(sink: Sink): Promise | any; } diff --git a/types/moji/index.d.ts b/types/moji/index.d.ts new file mode 100644 index 0000000000..ae45f6ac26 --- /dev/null +++ b/types/moji/index.d.ts @@ -0,0 +1,32 @@ +// Type definitions for moji 0.5 +// Project: https://github.com/niwaringo/moji +// Definitions by: Yasunori Ohoka +// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped +// TypeScript Version: 2.4 + +declare namespace moji { + type Mojisyu = "ZE" | "HE" | "ZS" | "HS" | "HG" | "KK" | "ZK" | "HK"; + + interface MojisyuRange { + start: number; + end: number; + } + + interface MojisyuRegExp { + regexp: RegExp; + list: string[]; + } + + interface Moji { + convert(beforeType: Mojisyu, afterType: Mojisyu): Moji; + trim(): Moji; + filter(type: Mojisyu): Moji; + reject(type: Mojisyu): Moji; + toString(): string; + } + + function addMojisyu(type: string, mojisyu: MojisyuRange | MojisyuRegExp): void; +} + +declare function moji(moji: string): moji.Moji; +export = moji; diff --git a/types/moji/moji-tests.ts b/types/moji/moji-tests.ts new file mode 100644 index 0000000000..05be3e43c1 --- /dev/null +++ b/types/moji/moji-tests.ts @@ -0,0 +1,23 @@ +import moji = require('moji'); + +moji('ABCD01234').convert('ZE', 'HE').toString(); +moji('ABCD01234').convert('HE', 'ZE').toString(); +// tslint:disable-next-line:no-irregular-whitespace +moji(' ').convert('ZS', 'HS').toString(); +moji('あいうえお').convert('HG', 'KK').toString(); +moji('アイウエオ').convert('KK', 'HG').toString(); +moji('アイウエオ').convert('ZK', 'HK').toString(); +moji('アイウエオ').convert('HK', 'ZK').toString(); +moji('アイウエオ').convert('HK', 'ZK').convert('KK', 'HG').toString(); + +moji(' アイウエオ ').trim().toString(); + +moji('abcあいうアイウ123').filter('HG').toString(); + +moji('abcあいうアイウ123').reject('HG').toString(); + +moji.addMojisyu('ZE', { start: 0xff01, end: 0xff5e }); +moji.addMojisyu('HK', { + regexp: /([\uff66-\uff9c]\uff9e)|([\uff8a-\uff8e]\uff9f)|([\uff61-\uff9f])/g, + list: ["。", "「", "」"] +}); diff --git a/types/moji/tsconfig.json b/types/moji/tsconfig.json new file mode 100644 index 0000000000..a6b2e51f26 --- /dev/null +++ b/types/moji/tsconfig.json @@ -0,0 +1,24 @@ +{ + "compilerOptions": { + "module": "commonjs", + "target": "es6", + "lib": [ + "es6" + ], + "noImplicitAny": true, + "noImplicitThis": true, + "strictNullChecks": true, + "strictFunctionTypes": true, + "baseUrl": "../", + "typeRoots": [ + "../" + ], + "types": [], + "noEmit": true, + "forceConsistentCasingInFileNames": true + }, + "files": [ + "index.d.ts", + "moji-tests.ts" + ] +} diff --git a/types/moji/tslint.json b/types/moji/tslint.json new file mode 100644 index 0000000000..3db14f85ea --- /dev/null +++ b/types/moji/tslint.json @@ -0,0 +1 @@ +{ "extends": "dtslint/dt.json" } diff --git a/types/passport-jwt/index.d.ts b/types/passport-jwt/index.d.ts index f1c87c40ed..c300276fe2 100644 --- a/types/passport-jwt/index.d.ts +++ b/types/passport-jwt/index.d.ts @@ -1,8 +1,9 @@ -// Type definitions for passport-jwt 2.0 +// Type definitions for passport-jwt 3.0 // Project: https://github.com/themikenicholson/passport-jwt // Definitions by: TANAKA Koichi // Alex Young // David Ng +// Carlos Eduardo Scheffer // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped // TypeScript Version: 2.3 @@ -15,7 +16,8 @@ export declare class Strategy extends PassportStrategy { } export interface StrategyOptions { - secretOrKey: string | Buffer; + secretOrKey?: string | Buffer; + secretOrKeyProvider?: any; jwtFromRequest: JwtFromRequestFunction; issuer?: string; audience?: string; diff --git a/types/react-data-grid/index.d.ts b/types/react-data-grid/index.d.ts index d09784acb6..3e79703242 100644 --- a/types/react-data-grid/index.d.ts +++ b/types/react-data-grid/index.d.ts @@ -161,6 +161,13 @@ declare namespace AdazzleReactDataGrid { * @default false */ enableCellSelect?: boolean + + /** + * Enables cells to be dragged and dropped + * @default false + */ + enableDragAndDrop?: boolean + /** * Called when a cell is selected. * @param coordinates The row and column indices of the selected cell. @@ -198,6 +205,13 @@ declare namespace AdazzleReactDataGrid { * @param row object behind the row */ onRowClick?: (rowIdx : number, row : object) => void + + /** + * An event function called when a row is expanded with the toggle + * @param props OnRowExpandToggle object + */ + onRowExpandToggle?: (props: OnRowExpandToggle ) => void + /** * Responsible for returning an Array of values that can be used for filtering * a column that is column.filterable and using a column.filterRenderer that @@ -419,6 +433,24 @@ declare namespace AdazzleReactDataGrid { action: 'cellUpdate' | 'cellDrag' | 'columnFill' | 'copyPaste' } + /** + * Information about the row toggler + */ + interface OnRowExpandToggle { + /** + * The name of the column group the row is in + */ + columnGroupName: string + /** + * The name of the expanded row + */ + name: string + /** + * If it should expand or not + */ + shouldExpand: boolean + } + /** * Some filter to be applied to the grid's contents */ @@ -455,6 +487,7 @@ declare namespace AdazzleReactDataGrid { export import DragHandleDoubleClickEvent = AdazzleReactDataGrid.DragHandleDoubleClickEvent; export import CellCopyPasteEvent = AdazzleReactDataGrid.CellCopyPasteEvent; export import GridRowsUpdatedEvent = AdazzleReactDataGrid.GridRowsUpdatedEvent; + export import OnRowExpandToggle = AdazzleReactDataGrid.OnRowExpandToggle; // Actual classes exposed on module.exports /** diff --git a/types/react-data-grid/react-data-grid-tests.tsx b/types/react-data-grid/react-data-grid-tests.tsx index 6d5ff3b4da..1b42af7ae6 100644 --- a/types/react-data-grid/react-data-grid-tests.tsx +++ b/types/react-data-grid/react-data-grid-tests.tsx @@ -249,6 +249,13 @@ class Example extends React.Component { this.setState({rows: rows}); } + onRowExpandToggle = ({ columnGroupName, name, shouldExpand }:ReactDataGrid.OnRowExpandToggle ) => { + let expandedRows = Object.assign({}, this.state.expandedRows); + expandedRows[columnGroupName] = Object.assign({}, expandedRows[columnGroupName]); + expandedRows[columnGroupName][name] = {isExpanded: shouldExpand}; + this.setState({expandedRows: expandedRows}); + } + onRowClick(rowIdx:number, row: Object) { // Do nothing, just test that it accepts an event } @@ -300,10 +307,12 @@ class Example extends React.Component { } enableRowSelect={true} rowHeight={50} diff --git a/types/react-ga/index.d.ts b/types/react-ga/index.d.ts index 83d7a7218e..56d9715ed1 100644 --- a/types/react-ga/index.d.ts +++ b/types/react-ga/index.d.ts @@ -1,6 +1,6 @@ // Type definitions for react-ga 2.1 // Project: https://github.com/react-ga/react-ga -// Definitions by: Tim Aldridge +// Definitions by: Tim Aldridge , Vasya Aksyonov // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped export interface EventArgs { @@ -54,7 +54,8 @@ export interface OutboundLinkArgs { } export function initialize(trackingCode: string, options?: InitializeOptions): void; -export function ga(): any; +export function ga(): (...args: any[]) => any; +export function ga(...args: any[]): any; export function set(fieldsObject: FieldsObject): void; export function send(fieldsObject: FieldsObject): void; export function pageview(path: string): void; diff --git a/types/react-ga/react-ga-tests.ts b/types/react-ga/react-ga-tests.ts index dbc1d0970c..9e1ba7b23b 100644 --- a/types/react-ga/react-ga-tests.ts +++ b/types/react-ga/react-ga-tests.ts @@ -63,6 +63,12 @@ describe("Testing react-ga v2.1.2", () => { it("Able to make ga calls", () => { ga.ga(); }); + it("Able to make ga calls with any arguments", () => { + ga.ga("create", "UA-65432-1", "auto", "trackerName"); + }); + it("Able to make returned ga calls with any arguments", () => { + ga.ga()("create", "UA-65432-1", "auto", "trackerName"); + }); it("Able to make send calls", () => { const fieldObject: ga.FieldsObject = { page: '/users' diff --git a/types/react-mdl/index.d.ts b/types/react-mdl/index.d.ts index d157987929..33dccccd07 100644 --- a/types/react-mdl/index.d.ts +++ b/types/react-mdl/index.d.ts @@ -584,7 +584,7 @@ declare namespace __ReactMDL { class Tabs extends __MDLComponent { } - interface TextfieldProps extends MDLHTMLAttributes, React.DOMAttributes { + interface TextfieldProps extends MDLHTMLAttributes, React.DOMAttributes { label: string; disabled?: boolean; error?: React.ReactNode; @@ -594,7 +594,7 @@ declare namespace __ReactMDL { id?: string; inputClassName?: string; maxRows?: number; - onChange?: React.FormEventHandler; + onChange?: React.FormEventHandler; pattern?: string; required?: boolean; rows?: number; diff --git a/types/react-native/index.d.ts b/types/react-native/index.d.ts index 2dcec3f6eb..58af56a5ac 100644 --- a/types/react-native/index.d.ts +++ b/types/react-native/index.d.ts @@ -3743,6 +3743,18 @@ export interface SectionListProperties extends ScrollViewProperties { */ extraData?: any + /** + * `getItemLayout` is an optional optimization that lets us skip measurement of dynamic + * content if you know the height of items a priori. getItemLayout is the most efficient, + * and is easy to use if you have fixed height items, for example: + * ``` + * getItemLayout={(data, index) => ( + * {length: ITEM_HEIGHT, offset: ITEM_HEIGHT * index, index} + * )} + * ``` + */ + getItemLayout?: (data: SectionListData[] | null, index: number) => {length: number, offset: number, index: number} + /** * How many items to render in the initial batch */ diff --git a/types/react-redux/index.d.ts b/types/react-redux/index.d.ts index 203ce7f791..38c880ba3b 100644 --- a/types/react-redux/index.d.ts +++ b/types/react-redux/index.d.ts @@ -7,9 +7,17 @@ // Frank Tan // Nicholas Boll // Dibyo Majumdar +// Prashant Deva // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped // TypeScript Version: 2.4 - + +// Known Issue: +// There is a known issue in TypeScript, which doesn't allow decorators to change the signature of the classes +// they are decorating. Due to this, if you are using @connect() decorator in your code, +// you will see a bunch of errors from TypeScript. The current workaround is to use connect() as a function call on +// a separate line instead of as a decorator. Discussed in this github issue: +// https://github.com/DefinitelyTyped/DefinitelyTyped/issues/20796 + import * as React from 'react'; import * as Redux from 'redux'; diff --git a/types/react-router-dom/index.d.ts b/types/react-router-dom/index.d.ts index c9555834a9..bb8a010d8d 100644 --- a/types/react-router-dom/index.d.ts +++ b/types/react-router-dom/index.d.ts @@ -1,4 +1,4 @@ -// Type definitions for React Router 4.0 +// Type definitions for React Router 4.2 // Project: https://github.com/ReactTraining/react-router // Definitions by: Tanguy Krotoff // Huy Nguyen @@ -52,5 +52,6 @@ export interface NavLinkProps extends LinkProps { exact?: boolean; strict?: boolean; isActive?

(match: match

, location: H.Location): boolean; + location?: H.Location; } export class NavLink extends React.Component {} diff --git a/types/reactstrap/index.d.ts b/types/reactstrap/index.d.ts index 81d4cec5bd..f484e15c25 100644 --- a/types/reactstrap/index.d.ts +++ b/types/reactstrap/index.d.ts @@ -1,4 +1,4 @@ -// Type definitions for reactstrap 4.6 +// Type definitions for reactstrap 5.0 // Project: https://github.com/reactstrap/reactstrap#readme // Definitions by: Ali Hammad Baig , Marco Falkenberg , Danilo Barros , Fábio Paiva // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped diff --git a/types/reactstrap/lib/Button.d.ts b/types/reactstrap/lib/Button.d.ts index e6ec222c14..fc2f34e4bb 100644 --- a/types/reactstrap/lib/Button.d.ts +++ b/types/reactstrap/lib/Button.d.ts @@ -7,7 +7,7 @@ interface Props extends React.HTMLProps { color?: string; disabled?: boolean; tag?: React.ReactType; - getRef?: string | ((instance: HTMLButtonElement) => any); + innerRef?: string | ((instance: HTMLButtonElement) => any); onClick?: React.MouseEventHandler; size?: any; diff --git a/types/reactstrap/lib/CardLink.d.ts b/types/reactstrap/lib/CardLink.d.ts index 3edf6b24f8..8c722a0102 100644 --- a/types/reactstrap/lib/CardLink.d.ts +++ b/types/reactstrap/lib/CardLink.d.ts @@ -2,7 +2,7 @@ import { CSSModule } from '../index'; interface Props { tag?: React.ReactType; - getRef?: string | ((instance: HTMLButtonElement) => any); + innerRef?: string | ((instance: HTMLButtonElement) => any); className?: string; cssModule?: CSSModule; href?: string; diff --git a/types/reactstrap/lib/Form.d.ts b/types/reactstrap/lib/Form.d.ts index dd06a2f855..a3f872d413 100644 --- a/types/reactstrap/lib/Form.d.ts +++ b/types/reactstrap/lib/Form.d.ts @@ -3,7 +3,7 @@ import { CSSModule } from '../index'; interface Props extends React.HTMLProps { inline?: boolean; tag?: React.ReactType; - getRef?: string | ((instance: HTMLButtonElement) => any); + innerRef?: string | ((instance: HTMLButtonElement) => any); className?: string; cssModule?: CSSModule; } diff --git a/types/reactstrap/lib/Input.d.ts b/types/reactstrap/lib/Input.d.ts index 541016ca02..eb82296e39 100644 --- a/types/reactstrap/lib/Input.d.ts +++ b/types/reactstrap/lib/Input.d.ts @@ -39,7 +39,7 @@ interface InputProps extends Intermediate { state?: string; valid?: boolean; tag?: React.ReactType; - getRef?: string | ((instance: HTMLInputElement) => any); + innerRef?: string | ((instance: HTMLInputElement) => any); static?: boolean; addon?: boolean; className?: string; diff --git a/types/reactstrap/lib/NavLink.d.ts b/types/reactstrap/lib/NavLink.d.ts index 2871fad72e..a72ff56fdf 100644 --- a/types/reactstrap/lib/NavLink.d.ts +++ b/types/reactstrap/lib/NavLink.d.ts @@ -2,7 +2,7 @@ import { CSSModule } from '../index'; interface Props extends React.HTMLProps { tag?: React.ReactType; - getRef?: string | ((instance: HTMLButtonElement) => any); + innerRef?: string | ((instance: HTMLButtonElement) => any); disabled?: boolean; active?: boolean; className?: string; diff --git a/types/reactstrap/reactstrap-tests.tsx b/types/reactstrap/reactstrap-tests.tsx index b094d4d019..4886d712eb 100644 --- a/types/reactstrap/reactstrap-tests.tsx +++ b/types/reactstrap/reactstrap-tests.tsx @@ -3302,7 +3302,7 @@ class Example107 extends React.Component { private input: HTMLInputElement; render() { - return { this.input = input; }} />; + return { this.input = input; }} />; } } diff --git a/types/reactstrap/v4/index.d.ts b/types/reactstrap/v4/index.d.ts new file mode 100644 index 0000000000..81d4cec5bd --- /dev/null +++ b/types/reactstrap/v4/index.d.ts @@ -0,0 +1,87 @@ +// Type definitions for reactstrap 4.6 +// Project: https://github.com/reactstrap/reactstrap#readme +// Definitions by: Ali Hammad Baig , Marco Falkenberg , Danilo Barros , Fábio Paiva +// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped +// TypeScript Version: 2.3 + +export interface CSSModule { + [className: string]: string; +} + +export { default as Alert } from './lib/Alert'; +export { default as Badge } from './lib/Badge'; +export { default as Breadcrumb } from './lib/Breadcrumb'; +export { default as BreadcrumbItem } from './lib/BreadcrumbItem'; +export { default as Button } from './lib/Button'; +export { default as ButtonDropdown } from './lib/ButtonDropdown'; +export { default as ButtonGroup } from './lib/ButtonGroup'; +export { default as ButtonToolbar } from './lib/ButtonToolbar'; +export { default as Card } from './lib/Card'; +export { default as CardBody } from './lib/CardBody'; +export { default as CardBlock } from './lib/CardBlock'; +export { default as CardColumns } from './lib/CardColumns'; +export { default as CardDeck } from './lib/CardDeck'; +export { default as CardFooter } from './lib/CardFooter'; +export { default as CardGroup } from './lib/CardGroup'; +export { default as CardHeader } from './lib/CardHeader'; +export { default as CardImg } from './lib/CardImg'; +export { default as CardImgOverlay } from './lib/CardImgOverlay'; +export { default as CardLink } from './lib/CardLink'; +export { default as CardSubtitle } from './lib/CardSubtitle'; +export { default as CardText } from './lib/CardText'; +export { default as CardTitle } from './lib/CardTitle'; +export { default as Col } from './lib/Col'; +export { default as Collapse } from './lib/Collapse'; +export { default as Container } from './lib/Container'; +export { default as Dropdown } from './lib/Dropdown'; +export { default as DropdownItem } from './lib/DropdownItem'; +export { default as DropdownMenu } from './lib/DropdownMenu'; +export { default as DropdownToggle } from './lib/DropdownToggle'; +export { default as Fade } from './lib/Fade'; +export { default as Form } from './lib/Form'; +export { default as FormFeedback } from './lib/FormFeedback'; +export { default as FormGroup } from './lib/FormGroup'; +export { default as FormText } from './lib/FormText'; +export { default as Input } from './lib/Input'; +export { default as InputGroup } from './lib/InputGroup'; +export { default as InputGroupAddon } from './lib/InputGroupAddon'; +export { default as InputGroupButton } from './lib/InputGroupButton'; +export { default as Jumbotron } from './lib/Jumbotron'; +export { default as Label } from './lib/Label'; +export { default as ListGroup } from './lib/ListGroup'; +export { default as ListGroupItem } from './lib/ListGroupItem'; +export { default as ListGroupItemHeading } from './lib/ListGroupItemHeading'; +export { default as ListGroupItemText } from './lib/ListGroupItemText'; +export { default as Media } from './lib/Media'; +export { default as Modal } from './lib/Modal'; +export { default as ModalBody } from './lib/ModalBody'; +export { default as ModalFooter } from './lib/ModalFooter'; +export { default as ModalHeader } from './lib/ModalHeader'; +export { default as Nav } from './lib/Nav'; +export { default as Navbar } from './lib/Navbar'; +export { default as NavbarBrand } from './lib/NavbarBrand'; +export { default as NavbarToggler } from './lib/NavbarToggler'; +export { default as NavDropdown } from './lib/NavDropdown'; +export { default as NavItem } from './lib/NavItem'; +export { default as NavLink } from './lib/NavLink'; +export { default as Pagination } from './lib/Pagination'; +export { default as PaginationItem } from './lib/PaginationItem'; +export { default as PaginationLink } from './lib/PaginationLink'; +export { default as Popover } from './lib/Popover'; +export { default as PopoverContent } from './lib/PopoverContent'; +export { default as PopoverTitle } from './lib/PopoverTitle'; +export { default as Progress } from './lib/Progress'; +export { default as Row } from './lib/Row'; +export { default as TabContent } from './lib/TabContent'; +export { default as Table } from './lib/Table'; +export { default as TabPane } from './lib/TabPane'; +export { default as Tag } from './lib/Tag'; +export { default as TetherContent } from './lib/TetherContent'; +export { default as Tooltip } from './lib/Tooltip'; +export { + UncontrolledAlert, + UncontrolledButtonDropdown, + UncontrolledDropdown, + UncontrolledNavDropdown, + UncontrolledTooltip +} from './lib/Uncontrolled'; diff --git a/types/reactstrap/v4/lib/Alert.d.ts b/types/reactstrap/v4/lib/Alert.d.ts new file mode 100644 index 0000000000..e29d62cb0d --- /dev/null +++ b/types/reactstrap/v4/lib/Alert.d.ts @@ -0,0 +1,19 @@ +import { CSSModule } from '../index'; + +export interface UncontrolledProps { + className?: string; + cssModule?: CSSModule; + color?: string; + tag?: React.ReactType; + transitionAppearTimeout?: number; + transitionEnterTimeout?: number; + transitionLeaveTimeout?: number; +} + +interface Props extends UncontrolledProps { + isOpen?: boolean; + toggle?: () => void; +} + +declare var Alert: React.StatelessComponent; +export default Alert; diff --git a/types/reactstrap/v4/lib/Badge.d.ts b/types/reactstrap/v4/lib/Badge.d.ts new file mode 100644 index 0000000000..51f72e39d3 --- /dev/null +++ b/types/reactstrap/v4/lib/Badge.d.ts @@ -0,0 +1,12 @@ +import { CSSModule } from '../index'; + +interface Props { + color?: string; + pill?: boolean; + tag?: React.ReactType; + className?: string; + cssModule?: CSSModule; +} + +declare var Badge: React.StatelessComponent; +export default Badge; diff --git a/types/reactstrap/v4/lib/Breadcrumb.d.ts b/types/reactstrap/v4/lib/Breadcrumb.d.ts new file mode 100644 index 0000000000..54f581288c --- /dev/null +++ b/types/reactstrap/v4/lib/Breadcrumb.d.ts @@ -0,0 +1,10 @@ +import { CSSModule } from '../index'; + +interface Props { + tag?: string; + className?: string; + cssModule?: CSSModule; +} + +declare var Breadcrumb: React.StatelessComponent; +export default Breadcrumb; diff --git a/types/reactstrap/v4/lib/BreadcrumbItem.d.ts b/types/reactstrap/v4/lib/BreadcrumbItem.d.ts new file mode 100644 index 0000000000..0277305b21 --- /dev/null +++ b/types/reactstrap/v4/lib/BreadcrumbItem.d.ts @@ -0,0 +1,15 @@ +import { CSSModule } from '../index'; + +interface Props { + tag?: React.ReactType; + active?: boolean; + className?: string; + cssModule?: CSSModule; + // if a is passed as a string + // this could be href + [others: string]: any; +} + +declare var BreadcrumbItem: React.StatelessComponent; +export default BreadcrumbItem; + diff --git a/types/reactstrap/v4/lib/Button.d.ts b/types/reactstrap/v4/lib/Button.d.ts new file mode 100644 index 0000000000..e6ec222c14 --- /dev/null +++ b/types/reactstrap/v4/lib/Button.d.ts @@ -0,0 +1,21 @@ +import { CSSModule } from '../index'; + +interface Props extends React.HTMLProps { + outline?: boolean; + active?: boolean; + block?: boolean; + color?: string; + disabled?: boolean; + tag?: React.ReactType; + getRef?: string | ((instance: HTMLButtonElement) => any); + + onClick?: React.MouseEventHandler; + size?: any; + id?: string; + style?: React.CSSProperties; + + cssModule?: CSSModule; +} + +declare var Button: React.StatelessComponent; +export default Button; diff --git a/types/reactstrap/v4/lib/ButtonDropdown.d.ts b/types/reactstrap/v4/lib/ButtonDropdown.d.ts new file mode 100644 index 0000000000..9ab54c7502 --- /dev/null +++ b/types/reactstrap/v4/lib/ButtonDropdown.d.ts @@ -0,0 +1,12 @@ +import { + UncontrolledProps as DropdownUncontrolledProps, + Props as DropdownProps +} from './Dropdown'; + +// tslint:disable-next-line +export interface UncontrolledProps extends DropdownUncontrolledProps { } +// tslint:disable-next-line +interface Props extends DropdownProps { } + +declare var ButtonDropdown: React.StatelessComponent; +export default ButtonDropdown; \ No newline at end of file diff --git a/types/reactstrap/v4/lib/ButtonGroup.d.ts b/types/reactstrap/v4/lib/ButtonGroup.d.ts new file mode 100644 index 0000000000..d807ea33cf --- /dev/null +++ b/types/reactstrap/v4/lib/ButtonGroup.d.ts @@ -0,0 +1,14 @@ +import { CSSModule } from '../index'; + +interface Props { + tag?: React.ReactType; + 'aria-label'?: string; + className?: string; + cssModule?: CSSModule; + role?: string; + size?: string; + vertical?: boolean; +} + +declare var ButtonGroup: React.StatelessComponent; +export default ButtonGroup; diff --git a/types/reactstrap/v4/lib/ButtonToolbar.d.ts b/types/reactstrap/v4/lib/ButtonToolbar.d.ts new file mode 100644 index 0000000000..fea31dd5d5 --- /dev/null +++ b/types/reactstrap/v4/lib/ButtonToolbar.d.ts @@ -0,0 +1,12 @@ +import { CSSModule } from '../index'; + +interface Props { + tag?: React.ReactType; + 'aria-label'?: string; + className?: string; + cssModule?: CSSModule; + role?: string; +} + +declare var ButtonToolbar: React.StatelessComponent; +export default ButtonToolbar; diff --git a/types/reactstrap/v4/lib/Card.d.ts b/types/reactstrap/v4/lib/Card.d.ts new file mode 100644 index 0000000000..0dbde7f879 --- /dev/null +++ b/types/reactstrap/v4/lib/Card.d.ts @@ -0,0 +1,16 @@ +import { CSSModule } from '../index'; + +interface Props { + tag?: React.ReactType; + inverse?: boolean; + color?: string; + block?: boolean; + outline?: boolean; + className?: string; + cssModule?: CSSModule; + style?: React.CSSProperties; +} + +declare var Card: React.StatelessComponent; +export default Card; + diff --git a/types/reactstrap/v4/lib/CardBlock.d.ts b/types/reactstrap/v4/lib/CardBlock.d.ts new file mode 100644 index 0000000000..0aa31a63a7 --- /dev/null +++ b/types/reactstrap/v4/lib/CardBlock.d.ts @@ -0,0 +1,11 @@ +import { CSSModule } from '../index'; + +interface Props { + tag?: React.ReactType; + className?: string; + cssModule?: CSSModule; +} + +declare var CardBlock: React.StatelessComponent; +export default CardBlock; + diff --git a/types/reactstrap/v4/lib/CardBody.d.ts b/types/reactstrap/v4/lib/CardBody.d.ts new file mode 100644 index 0000000000..2b94e52ea8 --- /dev/null +++ b/types/reactstrap/v4/lib/CardBody.d.ts @@ -0,0 +1,10 @@ +import { CSSModule } from '../index'; + +interface Props { + tag?: React.ReactType; + className?: string; + cssModule?: CSSModule; +} + +declare var CardBody: React.StatelessComponent; +export default CardBody; diff --git a/types/reactstrap/v4/lib/CardColumns.d.ts b/types/reactstrap/v4/lib/CardColumns.d.ts new file mode 100644 index 0000000000..0cc1a80a1a --- /dev/null +++ b/types/reactstrap/v4/lib/CardColumns.d.ts @@ -0,0 +1,10 @@ +import { CSSModule } from '../index'; + +interface Props { + tag?: React.ReactType; + className?: string; + cssModule?: CSSModule; +} + +declare var CardColumns: React.StatelessComponent; +export default CardColumns; diff --git a/types/reactstrap/v4/lib/CardDeck.d.ts b/types/reactstrap/v4/lib/CardDeck.d.ts new file mode 100644 index 0000000000..1a5882aa54 --- /dev/null +++ b/types/reactstrap/v4/lib/CardDeck.d.ts @@ -0,0 +1,10 @@ +import { CSSModule } from '../index'; + +interface Props { + tag?: React.ReactType; + className?: string; + cssModule?: CSSModule; +} + +declare var CardDeck: React.StatelessComponent; +export default CardDeck; diff --git a/types/reactstrap/v4/lib/CardFooter.d.ts b/types/reactstrap/v4/lib/CardFooter.d.ts new file mode 100644 index 0000000000..0956cb06c9 --- /dev/null +++ b/types/reactstrap/v4/lib/CardFooter.d.ts @@ -0,0 +1,10 @@ +import { CSSModule } from '../index'; + +interface Props { + tag?: React.ReactType; + className?: string; + cssModule?: CSSModule; +} + +declare var CardFooter: React.StatelessComponent; +export default CardFooter; diff --git a/types/reactstrap/v4/lib/CardGroup.d.ts b/types/reactstrap/v4/lib/CardGroup.d.ts new file mode 100644 index 0000000000..5c0a0a1ab1 --- /dev/null +++ b/types/reactstrap/v4/lib/CardGroup.d.ts @@ -0,0 +1,10 @@ +import { CSSModule } from '../index'; + +interface Props { + tag?: React.ReactType; + className?: string; + cssModule?: CSSModule; +} + +declare var CardGroup: React.StatelessComponent; +export default CardGroup; diff --git a/types/reactstrap/v4/lib/CardHeader.d.ts b/types/reactstrap/v4/lib/CardHeader.d.ts new file mode 100644 index 0000000000..f063057c92 --- /dev/null +++ b/types/reactstrap/v4/lib/CardHeader.d.ts @@ -0,0 +1,10 @@ +import { CSSModule } from '../index'; + +interface Props { + tag?: React.ReactType; + className?: string; + cssModule?: CSSModule; +} + +declare var CardHeader: React.StatelessComponent; +export default CardHeader; diff --git a/types/reactstrap/v4/lib/CardImg.d.ts b/types/reactstrap/v4/lib/CardImg.d.ts new file mode 100644 index 0000000000..1c3fee274b --- /dev/null +++ b/types/reactstrap/v4/lib/CardImg.d.ts @@ -0,0 +1,16 @@ +import { CSSModule } from '../index'; + +interface Props { + tag?: React.ReactType; + top?: boolean; + bottom?: boolean; + className?: string; + cssModule?: CSSModule; + src?: string; + width?: string; + height?: string; + alt?: string; +} + +declare var CardImg: React.StatelessComponent; +export default CardImg; diff --git a/types/reactstrap/v4/lib/CardImgOverlay.d.ts b/types/reactstrap/v4/lib/CardImgOverlay.d.ts new file mode 100644 index 0000000000..05519847b2 --- /dev/null +++ b/types/reactstrap/v4/lib/CardImgOverlay.d.ts @@ -0,0 +1,10 @@ +import { CSSModule } from '../index'; + +interface Props { + tag?: React.ReactType; + className?: string; + cssModule?: CSSModule; +} + +declare var CardImgOverlay: React.StatelessComponent; +export default CardImgOverlay; diff --git a/types/reactstrap/v4/lib/CardLink.d.ts b/types/reactstrap/v4/lib/CardLink.d.ts new file mode 100644 index 0000000000..3edf6b24f8 --- /dev/null +++ b/types/reactstrap/v4/lib/CardLink.d.ts @@ -0,0 +1,12 @@ +import { CSSModule } from '../index'; + +interface Props { + tag?: React.ReactType; + getRef?: string | ((instance: HTMLButtonElement) => any); + className?: string; + cssModule?: CSSModule; + href?: string; +} + +declare var CardLink: React.StatelessComponent; +export default CardLink; diff --git a/types/reactstrap/v4/lib/CardSubtitle.d.ts b/types/reactstrap/v4/lib/CardSubtitle.d.ts new file mode 100644 index 0000000000..bfacd4e794 --- /dev/null +++ b/types/reactstrap/v4/lib/CardSubtitle.d.ts @@ -0,0 +1,10 @@ +import { CSSModule } from '../index'; + +interface Props { + tag?: React.ReactType; + className?: string; + cssModule?: CSSModule; +} + +declare var CardSubtitle: React.StatelessComponent; +export default CardSubtitle; diff --git a/types/reactstrap/v4/lib/CardText.d.ts b/types/reactstrap/v4/lib/CardText.d.ts new file mode 100644 index 0000000000..13177fba67 --- /dev/null +++ b/types/reactstrap/v4/lib/CardText.d.ts @@ -0,0 +1,10 @@ +import { CSSModule } from '../index'; + +interface Props { + tag?: React.ReactType; + className?: string; + cssModule?: CSSModule; +} + +declare var CardText: React.StatelessComponent; +export default CardText; diff --git a/types/reactstrap/v4/lib/CardTitle.d.ts b/types/reactstrap/v4/lib/CardTitle.d.ts new file mode 100644 index 0000000000..2843800a4e --- /dev/null +++ b/types/reactstrap/v4/lib/CardTitle.d.ts @@ -0,0 +1,10 @@ +import { CSSModule } from '../index'; + +interface Props { + tag?: React.ReactType; + className?: string; + cssModule?: CSSModule; +} + +declare var CardTitle: React.StatelessComponent; +export default CardTitle; diff --git a/types/reactstrap/v4/lib/Col.d.ts b/types/reactstrap/v4/lib/Col.d.ts new file mode 100644 index 0000000000..a2ea76d607 --- /dev/null +++ b/types/reactstrap/v4/lib/Col.d.ts @@ -0,0 +1,24 @@ +export type ColumnProps + = string + | boolean + | number + | { + size?: boolean | number | string + push?: string | number + pull?: string | number + offset?: string | number + }; + +interface Props extends React.HTMLProps { + xs?: ColumnProps; + sm?: ColumnProps; + md?: ColumnProps; + lg?: ColumnProps; + xl?: ColumnProps; + + //custom widths + widths?: string[]; +} + +declare var Col: React.StatelessComponent; +export default Col; diff --git a/types/reactstrap/v4/lib/Collapse.d.ts b/types/reactstrap/v4/lib/Collapse.d.ts new file mode 100644 index 0000000000..50160bbcf6 --- /dev/null +++ b/types/reactstrap/v4/lib/Collapse.d.ts @@ -0,0 +1,18 @@ +import { CSSModule } from '../index'; + +interface Props extends React.HTMLProps { + isOpen?: boolean; + classNames?: string; + cssModule?: CSSModule; + tag?: React.ReactType; + navbar?: boolean; + delay?: { + show: number + hide: number + }; + onOpened?: () => void; + onClosed?: () => void; +} + +declare var Collapse: React.StatelessComponent; +export default Collapse; diff --git a/types/reactstrap/v4/lib/Container.d.ts b/types/reactstrap/v4/lib/Container.d.ts new file mode 100644 index 0000000000..f49951ba26 --- /dev/null +++ b/types/reactstrap/v4/lib/Container.d.ts @@ -0,0 +1,11 @@ +import { CSSModule } from '../index'; + +interface Props { + tag?: React.ReactType; + fluid?: boolean; + className?: string; + cssModule?: CSSModule; +} + +declare var Container: React.StatelessComponent; +export default Container; diff --git a/types/reactstrap/v4/lib/Dropdown.d.ts b/types/reactstrap/v4/lib/Dropdown.d.ts new file mode 100644 index 0000000000..19d1500cbe --- /dev/null +++ b/types/reactstrap/v4/lib/Dropdown.d.ts @@ -0,0 +1,22 @@ +/// + +import { CSSModule } from '../index'; + +export interface UncontrolledProps { + isOpen?: boolean; + toggle?: () => void; + className?: string; + cssModule?: CSSModule; +} + +export interface Props extends UncontrolledProps { + disabled?: boolean; + dropup?: boolean; + group?: boolean; + size?: string; + tag?: React.ReactType; + tether?: boolean | Tether.ITetherOptions; +} + +declare var Dropdown: React.StatelessComponent; +export default Dropdown; diff --git a/types/reactstrap/v4/lib/DropdownItem.d.ts b/types/reactstrap/v4/lib/DropdownItem.d.ts new file mode 100644 index 0000000000..6fae837041 --- /dev/null +++ b/types/reactstrap/v4/lib/DropdownItem.d.ts @@ -0,0 +1,15 @@ +import { CSSModule } from '../index'; + +interface Props { + disabled?: boolean; + divider?: boolean; + tag?: React.ReactType; + header?: boolean; + onClick?: (event: React.MouseEvent) => void; + className?: string; + cssModule?: CSSModule; + href?: string; +} + +declare var DropdownItem: React.StatelessComponent; +export default DropdownItem; diff --git a/types/reactstrap/v4/lib/DropdownMenu.d.ts b/types/reactstrap/v4/lib/DropdownMenu.d.ts new file mode 100644 index 0000000000..7fae41b04b --- /dev/null +++ b/types/reactstrap/v4/lib/DropdownMenu.d.ts @@ -0,0 +1,11 @@ +import { CSSModule } from '../index'; + +interface Props { + tag?: React.ReactType; + right?: boolean; + className?: string; + cssModule?: CSSModule; +} + +declare var DropdownMenu: React.StatelessComponent; +export default DropdownMenu; diff --git a/types/reactstrap/v4/lib/DropdownToggle.d.ts b/types/reactstrap/v4/lib/DropdownToggle.d.ts new file mode 100644 index 0000000000..5ef49db71f --- /dev/null +++ b/types/reactstrap/v4/lib/DropdownToggle.d.ts @@ -0,0 +1,19 @@ +import { CSSModule } from '../index'; + +interface Props { + caret?: boolean; + className?: string; + cssModule?: CSSModule; + disabled?: boolean; + onClick?: React.MouseEventHandler; + 'data-toggle'?: string; + 'aria-haspopup'?: boolean; + split?: boolean; + tag?: React.ReactType; + nav?: boolean; + color?: string; + size?: string; +} + +declare var DropdownToggle: React.StatelessComponent; +export default DropdownToggle; diff --git a/types/reactstrap/v4/lib/Fade.d.ts b/types/reactstrap/v4/lib/Fade.d.ts new file mode 100644 index 0000000000..30862d2e17 --- /dev/null +++ b/types/reactstrap/v4/lib/Fade.d.ts @@ -0,0 +1,20 @@ +import { CSSModule } from '../index'; + +interface Props { + baseClass?: string; + baseClassIn?: string; + tag?: React.ReactType; + className?: string; + cssModule?: CSSModule; + transitionAppearTimeout?: number; + transitionEnterTimeout?: number; + transitionLeaveTimeout?: number; + transitionAppear?: boolean; + transitionEnter?: boolean; + transitionLeave?: boolean; + onLeave?: () => void; + onEnter?: () => void; +} + +declare var Fade: React.StatelessComponent; +export default Fade; diff --git a/types/reactstrap/v4/lib/Form.d.ts b/types/reactstrap/v4/lib/Form.d.ts new file mode 100644 index 0000000000..dd06a2f855 --- /dev/null +++ b/types/reactstrap/v4/lib/Form.d.ts @@ -0,0 +1,12 @@ +import { CSSModule } from '../index'; + +interface Props extends React.HTMLProps { + inline?: boolean; + tag?: React.ReactType; + getRef?: string | ((instance: HTMLButtonElement) => any); + className?: string; + cssModule?: CSSModule; +} + +declare var Form: React.StatelessComponent; +export default Form; diff --git a/types/reactstrap/v4/lib/FormFeedback.d.ts b/types/reactstrap/v4/lib/FormFeedback.d.ts new file mode 100644 index 0000000000..7fde21b062 --- /dev/null +++ b/types/reactstrap/v4/lib/FormFeedback.d.ts @@ -0,0 +1,10 @@ +import { CSSModule } from '../index'; + +interface Props { + tag?: string; + className?: string; + cssModule?: CSSModule; +} + +declare var FormFeedback: React.StatelessComponent; +export default FormFeedback; diff --git a/types/reactstrap/v4/lib/FormGroup.d.ts b/types/reactstrap/v4/lib/FormGroup.d.ts new file mode 100644 index 0000000000..6031ff2f75 --- /dev/null +++ b/types/reactstrap/v4/lib/FormGroup.d.ts @@ -0,0 +1,14 @@ +import { CSSModule } from '../index'; + +interface Props extends React.HTMLProps { + row?: boolean; + check?: boolean; + disabled?: boolean; + tag?: React.ReactType; + color?: string; + className?: string; + cssModule?: CSSModule; +} + +declare var FormGroup: React.StatelessComponent; +export default FormGroup; diff --git a/types/reactstrap/v4/lib/FormText.d.ts b/types/reactstrap/v4/lib/FormText.d.ts new file mode 100644 index 0000000000..3cfab3511e --- /dev/null +++ b/types/reactstrap/v4/lib/FormText.d.ts @@ -0,0 +1,12 @@ +import { CSSModule } from '../index'; + +interface Props { + inline?: boolean; + tag?: React.ReactType; + color?: string; + className?: string; + cssModule?: CSSModule; +} + +declare var FormText: React.StatelessComponent; +export default FormText; diff --git a/types/reactstrap/v4/lib/Input.d.ts b/types/reactstrap/v4/lib/Input.d.ts new file mode 100644 index 0000000000..541016ca02 --- /dev/null +++ b/types/reactstrap/v4/lib/Input.d.ts @@ -0,0 +1,52 @@ +import { CSSModule } from '../index'; + +type InputType = + | 'text' + | 'email' + | 'select' + | 'file' + | 'radio' + | 'checkbox' + | 'textarea' + | 'button' + | 'reset' + | 'submit' + | 'date' + | 'datetime-local' + | 'hidden' + | 'image' + | 'month' + | 'number' + | 'range' + | 'search' + | 'tel' + | 'url' + | 'week' + | 'password' + | 'datetime' + | 'time' + | 'color'; + +// Intermediate interface to "redefine" the type of size to string +// size:number => size:any => size:string +interface Intermediate extends React.InputHTMLAttributes { + size?: any; +} + +interface InputProps extends Intermediate { + type?: InputType; + size?: string; + state?: string; + valid?: boolean; + tag?: React.ReactType; + getRef?: string | ((instance: HTMLInputElement) => any); + static?: boolean; + addon?: boolean; + className?: string; + cssModule?: CSSModule; + // We don't have the property 'static' here because 'static' is a reserved keyword in TypeScript + // Maybe reactstrap will support an 'isStatic' alias in the future +} + +declare var Input: React.StatelessComponent; +export default Input; diff --git a/types/reactstrap/v4/lib/InputGroup.d.ts b/types/reactstrap/v4/lib/InputGroup.d.ts new file mode 100644 index 0000000000..2de95edc94 --- /dev/null +++ b/types/reactstrap/v4/lib/InputGroup.d.ts @@ -0,0 +1,11 @@ +import { CSSModule } from '../index'; + +interface Props { + tag?: React.ReactType; + size?: string; + className?: string; + cssModule?: CSSModule; +} + +declare var InputGroup: React.StatelessComponent; +export default InputGroup; diff --git a/types/reactstrap/v4/lib/InputGroupAddon.d.ts b/types/reactstrap/v4/lib/InputGroupAddon.d.ts new file mode 100644 index 0000000000..a98eb5d821 --- /dev/null +++ b/types/reactstrap/v4/lib/InputGroupAddon.d.ts @@ -0,0 +1,10 @@ +import { CSSModule } from '../index'; + +interface Props { + tag?: React.ReactType; + className?: string; + cssModule?: CSSModule; +} + +declare var InputGroupAddon: React.StatelessComponent; +export default InputGroupAddon; diff --git a/types/reactstrap/v4/lib/InputGroupButton.d.ts b/types/reactstrap/v4/lib/InputGroupButton.d.ts new file mode 100644 index 0000000000..fa7cb1995a --- /dev/null +++ b/types/reactstrap/v4/lib/InputGroupButton.d.ts @@ -0,0 +1,13 @@ +import { CSSModule } from '../index'; + +interface Props { + tag?: React.ReactType; + groupClassName?: string; + groupAttributes?: any; + className?: string; + cssModule?: CSSModule; + color?: string; +} + +declare var InputGroupButton: React.StatelessComponent; +export default InputGroupButton; diff --git a/types/reactstrap/v4/lib/Jumbotron.d.ts b/types/reactstrap/v4/lib/Jumbotron.d.ts new file mode 100644 index 0000000000..cc1f65c956 --- /dev/null +++ b/types/reactstrap/v4/lib/Jumbotron.d.ts @@ -0,0 +1,11 @@ +import { CSSModule } from '../index'; + +interface Props { + tag?: React.ReactType; + fluid?: boolean; + className?: string; + cssModule?: CSSModule; +} + +declare var Jumbotron: React.StatelessComponent; +export default Jumbotron; diff --git a/types/reactstrap/v4/lib/Label.d.ts b/types/reactstrap/v4/lib/Label.d.ts new file mode 100644 index 0000000000..eb496d90a3 --- /dev/null +++ b/types/reactstrap/v4/lib/Label.d.ts @@ -0,0 +1,26 @@ +import { CSSModule } from '../index'; +import { ColumnProps } from './Col'; + +interface Intermediate extends React.LabelHTMLAttributes { + size?: any; +} + +interface Props extends Intermediate { + hidden?: boolean; + check?: boolean; + inline?: boolean; + disabled?: boolean; + size?: string; + for?: string; + tag?: string; + className?: string; + cssModule?: CSSModule; + xs?: ColumnProps; + sm?: ColumnProps; + md?: ColumnProps; + lg?: ColumnProps; + xl?: ColumnProps; +} + +declare var Label: React.StatelessComponent; +export default Label; diff --git a/types/reactstrap/v4/lib/ListGroup.d.ts b/types/reactstrap/v4/lib/ListGroup.d.ts new file mode 100644 index 0000000000..861c7a1d06 --- /dev/null +++ b/types/reactstrap/v4/lib/ListGroup.d.ts @@ -0,0 +1,11 @@ +import { CSSModule } from '../index'; + +interface Props { + tag?: React.ReactType; + flush?: boolean; + className?: string; + cssModule?: CSSModule; +} + +declare var ListGroup: React.StatelessComponent; +export default ListGroup; diff --git a/types/reactstrap/v4/lib/ListGroupItem.d.ts b/types/reactstrap/v4/lib/ListGroupItem.d.ts new file mode 100644 index 0000000000..b2241998dc --- /dev/null +++ b/types/reactstrap/v4/lib/ListGroupItem.d.ts @@ -0,0 +1,17 @@ +import { CSSModule } from '../index'; + +interface Props { + tag?: React.ReactType; + active?: boolean; + disabled?: boolean; + color?: string; + action?: boolean; + className?: string; + cssModule?: CSSModule; + href?: string; + + onClick?: React.MouseEventHandler; +} + +declare var ListGroupItem: React.StatelessComponent; +export default ListGroupItem; diff --git a/types/reactstrap/v4/lib/ListGroupItemHeading.d.ts b/types/reactstrap/v4/lib/ListGroupItemHeading.d.ts new file mode 100644 index 0000000000..869a6b2708 --- /dev/null +++ b/types/reactstrap/v4/lib/ListGroupItemHeading.d.ts @@ -0,0 +1,10 @@ +import { CSSModule } from '../index'; + +interface Props { + tag?: React.ReactType; + className?: string; + cssModule?: CSSModule; +} + +declare var ListGroupItemHeading: React.StatelessComponent; +export default ListGroupItemHeading; diff --git a/types/reactstrap/v4/lib/ListGroupItemText.d.ts b/types/reactstrap/v4/lib/ListGroupItemText.d.ts new file mode 100644 index 0000000000..df263f30d8 --- /dev/null +++ b/types/reactstrap/v4/lib/ListGroupItemText.d.ts @@ -0,0 +1,10 @@ +import { CSSModule } from '../index'; + +interface Props { + tag?: React.ReactType; + className?: string; + cssModule?: CSSModule; +} + +declare var ListGroupItemText: React.StatelessComponent; +export default ListGroupItemText; diff --git a/types/reactstrap/v4/lib/Media.d.ts b/types/reactstrap/v4/lib/Media.d.ts new file mode 100644 index 0000000000..c5408d85d7 --- /dev/null +++ b/types/reactstrap/v4/lib/Media.d.ts @@ -0,0 +1,21 @@ +import { CSSModule } from '../index'; + +interface Props { + body?: boolean; + bottom?: boolean; + className?: string; + cssModule?: CSSModule; + heading?: boolean; + left?: boolean; + list?: boolean; + middle?: boolean; + object?: boolean; + right?: boolean; + tag?: React.ReactType; + top?: boolean; + href?: string; + alt?: string; +} + +declare var Media: React.StatelessComponent; +export default Media; diff --git a/types/reactstrap/v4/lib/Modal.d.ts b/types/reactstrap/v4/lib/Modal.d.ts new file mode 100644 index 0000000000..1e239fbe12 --- /dev/null +++ b/types/reactstrap/v4/lib/Modal.d.ts @@ -0,0 +1,23 @@ +import { CSSModule } from '../index'; + +interface Props { + isOpen?: boolean; + autoFocus?: boolean; + size?: string; + toggle?: () => void; + keyboard?: boolean; + backdrop?: boolean | 'static'; + onEnter?: () => void; + onExit?: () => void; + className?: string; + cssModule?: CSSModule; + wrapClassName?: string; + modalClassName?: string; + backdropClassName?: string; + contentClassName?: string; + zIndex?: number | string; + fade?: boolean; +} + +declare var Modal: React.StatelessComponent; +export default Modal; diff --git a/types/reactstrap/v4/lib/ModalBody.d.ts b/types/reactstrap/v4/lib/ModalBody.d.ts new file mode 100644 index 0000000000..98933b2fc2 --- /dev/null +++ b/types/reactstrap/v4/lib/ModalBody.d.ts @@ -0,0 +1,10 @@ +import { CSSModule } from '../index'; + +interface Props { + tag?: React.ReactType; + className?: string; + cssModule?: CSSModule; +} + +declare var ModalBody: React.StatelessComponent; +export default ModalBody; diff --git a/types/reactstrap/v4/lib/ModalFooter.d.ts b/types/reactstrap/v4/lib/ModalFooter.d.ts new file mode 100644 index 0000000000..84b3da7ec8 --- /dev/null +++ b/types/reactstrap/v4/lib/ModalFooter.d.ts @@ -0,0 +1,10 @@ +import { CSSModule } from '../index'; + +interface Props { + tag?: React.ReactType; + className?: string; + cssModule?: CSSModule; +} + +declare var ModalFooter: React.StatelessComponent; +export default ModalFooter; diff --git a/types/reactstrap/v4/lib/ModalHeader.d.ts b/types/reactstrap/v4/lib/ModalHeader.d.ts new file mode 100644 index 0000000000..494c9685a3 --- /dev/null +++ b/types/reactstrap/v4/lib/ModalHeader.d.ts @@ -0,0 +1,12 @@ +import { CSSModule } from '../index'; + +interface Props { + tag?: React.ReactType; + className?: string; + cssModule?: CSSModule; + wrapTag?: React.ReactType; + toggle?: () => void; +} + +declare var ModalHeader: React.StatelessComponent; +export default ModalHeader; diff --git a/types/reactstrap/v4/lib/Nav.d.ts b/types/reactstrap/v4/lib/Nav.d.ts new file mode 100644 index 0000000000..c646e94304 --- /dev/null +++ b/types/reactstrap/v4/lib/Nav.d.ts @@ -0,0 +1,17 @@ +import { CSSModule } from '../index'; + +interface Props extends React.HTMLProps { + inline?: boolean; + disabled?: boolean; + tabs?: boolean; + pills?: boolean; + stacked?: boolean; + navbar?: boolean; + tag?: React.ReactType; + className?: string; + cssModule?: CSSModule; + vertical?: boolean; +} + +declare var Nav: React.StatelessComponent; +export default Nav; diff --git a/types/reactstrap/v4/lib/NavDropdown.d.ts b/types/reactstrap/v4/lib/NavDropdown.d.ts new file mode 100644 index 0000000000..6b480d495a --- /dev/null +++ b/types/reactstrap/v4/lib/NavDropdown.d.ts @@ -0,0 +1,12 @@ +import { + UncontrolledProps as DropdownUncontrolledProps, + Props as DropdownProps +} from './Dropdown'; + +// tslint:disable-next-line +export interface UncontrolledProps extends DropdownUncontrolledProps { } +// tslint:disable-next-line +interface Props extends DropdownProps { } + +declare var NavDropdown: React.StatelessComponent; +export default NavDropdown; \ No newline at end of file diff --git a/types/reactstrap/v4/lib/NavItem.d.ts b/types/reactstrap/v4/lib/NavItem.d.ts new file mode 100644 index 0000000000..db19f92c56 --- /dev/null +++ b/types/reactstrap/v4/lib/NavItem.d.ts @@ -0,0 +1,10 @@ +import { CSSModule } from '../index'; + +interface Props { + tag?: React.ReactType; + className?: string; + cssModule?: CSSModule; +} + +declare var NavItem: React.StatelessComponent; +export default NavItem; diff --git a/types/reactstrap/v4/lib/NavLink.d.ts b/types/reactstrap/v4/lib/NavLink.d.ts new file mode 100644 index 0000000000..2871fad72e --- /dev/null +++ b/types/reactstrap/v4/lib/NavLink.d.ts @@ -0,0 +1,15 @@ +import { CSSModule } from '../index'; + +interface Props extends React.HTMLProps { + tag?: React.ReactType; + getRef?: string | ((instance: HTMLButtonElement) => any); + disabled?: boolean; + active?: boolean; + className?: string; + cssModule?: CSSModule; + onClick?: React.MouseEventHandler; + href?: string; +} + +declare var NavLink: React.StatelessComponent; +export default NavLink; diff --git a/types/reactstrap/v4/lib/Navbar.d.ts b/types/reactstrap/v4/lib/Navbar.d.ts new file mode 100644 index 0000000000..58f9235140 --- /dev/null +++ b/types/reactstrap/v4/lib/Navbar.d.ts @@ -0,0 +1,20 @@ +import { CSSModule } from '../index'; + +interface Props { + light?: boolean; + dark?: boolean; + inverse?: boolean; + full?: boolean; + fixed?: string; + sticky?: string; + color?: string; + role?: string; + tag?: React.ReactType; + className?: string; + cssModule?: CSSModule; + toggleable?: boolean | string; + expand?: boolean | string; +} + +declare var Navbar: React.StatelessComponent; +export default Navbar; diff --git a/types/reactstrap/v4/lib/NavbarBrand.d.ts b/types/reactstrap/v4/lib/NavbarBrand.d.ts new file mode 100644 index 0000000000..3748a2903f --- /dev/null +++ b/types/reactstrap/v4/lib/NavbarBrand.d.ts @@ -0,0 +1,10 @@ +import { CSSModule } from '../index'; + +interface Props extends React.HTMLProps { + tag?: React.ReactType; + className?: string; + cssModule?: CSSModule; +} + +declare var NavbarBrand: React.StatelessComponent; +export default NavbarBrand; diff --git a/types/reactstrap/v4/lib/NavbarToggler.d.ts b/types/reactstrap/v4/lib/NavbarToggler.d.ts new file mode 100644 index 0000000000..282eeaa672 --- /dev/null +++ b/types/reactstrap/v4/lib/NavbarToggler.d.ts @@ -0,0 +1,13 @@ +import { CSSModule } from '../index'; + +interface Props extends React.HTMLProps { + tag?: React.ReactType; + type?: string; + className?: string; + cssModule?: CSSModule; + right?: boolean; + left?: boolean; +} + +declare var NavbarToggler: React.StatelessComponent; +export default NavbarToggler; diff --git a/types/reactstrap/v4/lib/Pagination.d.ts b/types/reactstrap/v4/lib/Pagination.d.ts new file mode 100644 index 0000000000..a34401be35 --- /dev/null +++ b/types/reactstrap/v4/lib/Pagination.d.ts @@ -0,0 +1,10 @@ +import { CSSModule } from '../index'; + +interface Props { + className?: string; + cssModule?: CSSModule; + size?: string; +} + +declare var Pagination: React.StatelessComponent; +export default Pagination; diff --git a/types/reactstrap/v4/lib/PaginationItem.d.ts b/types/reactstrap/v4/lib/PaginationItem.d.ts new file mode 100644 index 0000000000..183a7e9d84 --- /dev/null +++ b/types/reactstrap/v4/lib/PaginationItem.d.ts @@ -0,0 +1,12 @@ +import { CSSModule } from '../index'; + +interface Props { + className?: string; + cssModule?: CSSModule; + active?: boolean; + disabled?: boolean; + tag?: React.ReactType; +} + +declare var PaginationItem: React.StatelessComponent; +export default PaginationItem; diff --git a/types/reactstrap/v4/lib/PaginationLink.d.ts b/types/reactstrap/v4/lib/PaginationLink.d.ts new file mode 100644 index 0000000000..16e194578d --- /dev/null +++ b/types/reactstrap/v4/lib/PaginationLink.d.ts @@ -0,0 +1,13 @@ +import { CSSModule } from '../index'; + +interface Props extends React.HTMLProps { + 'aria-label'?: string; + className?: string; + cssModule?: CSSModule; + next?: boolean; + previous?: boolean; + tag?: React.ReactType; +} + +declare var PaginationLink: React.StatelessComponent; +export default PaginationLink; diff --git a/types/reactstrap/v4/lib/Popover.d.ts b/types/reactstrap/v4/lib/Popover.d.ts new file mode 100644 index 0000000000..b779a33ede --- /dev/null +++ b/types/reactstrap/v4/lib/Popover.d.ts @@ -0,0 +1,34 @@ +/// + +import { CSSModule } from '../index'; + +type Placement + = 'top' + | 'bottom' + | 'left' + | 'right' + | 'top left' + | 'top center' + | 'top right' + | 'right top' + | 'right middle' + | 'right bottom' + | 'bottom right' + | 'bottom center' + | 'bottom left' + | 'left top' + | 'left middle' + | 'left bottom'; + +interface Props { + placement?: Placement; + target: string; + isOpen?: boolean; + tether?: Tether.ITetherOptions; + className?: string; + cssModule?: CSSModule; + toggle?: () => void; +} + +declare var Popover: React.StatelessComponent; +export default Popover; diff --git a/types/reactstrap/v4/lib/PopoverContent.d.ts b/types/reactstrap/v4/lib/PopoverContent.d.ts new file mode 100644 index 0000000000..cac45d14cb --- /dev/null +++ b/types/reactstrap/v4/lib/PopoverContent.d.ts @@ -0,0 +1,10 @@ +import { CSSModule } from '../index'; + +interface Props { + tag?: React.ReactType; + className?: string; + cssModule?: CSSModule; +} + +declare var PopoverContent: React.StatelessComponent; +export default PopoverContent; diff --git a/types/reactstrap/v4/lib/PopoverTitle.d.ts b/types/reactstrap/v4/lib/PopoverTitle.d.ts new file mode 100644 index 0000000000..796de02658 --- /dev/null +++ b/types/reactstrap/v4/lib/PopoverTitle.d.ts @@ -0,0 +1,10 @@ +import { CSSModule } from '../index'; + +interface Props { + tag?: React.ReactType; + className?: string; + cssModule?: CSSModule; +} + +declare var PopoverTitle: React.StatelessComponent; +export default PopoverTitle; diff --git a/types/reactstrap/v4/lib/Progress.d.ts b/types/reactstrap/v4/lib/Progress.d.ts new file mode 100644 index 0000000000..09c4304373 --- /dev/null +++ b/types/reactstrap/v4/lib/Progress.d.ts @@ -0,0 +1,18 @@ +import { CSSModule } from '../index'; + +interface Props { + bar?: boolean; + multi?: boolean; + tag?: string; + value?: string | number; + max?: string | number; + animated?: boolean; + striped?: boolean; + color?: string; + className?: string; + cssModule?: CSSModule; + barClassName?: string; +} + +declare var Progress: React.StatelessComponent; +export default Progress; diff --git a/types/reactstrap/v4/lib/Row.d.ts b/types/reactstrap/v4/lib/Row.d.ts new file mode 100644 index 0000000000..1ffbb9f7e6 --- /dev/null +++ b/types/reactstrap/v4/lib/Row.d.ts @@ -0,0 +1,11 @@ +import { CSSModule } from '../index'; + +interface Props extends React.HTMLProps< HTMLElement> { + className?: string; + cssModule?: CSSModule; + tag?: React.ReactType; + noGutters?: boolean; +} + +declare var Row: React.StatelessComponent; +export default Row; diff --git a/types/reactstrap/v4/lib/TabContent.d.ts b/types/reactstrap/v4/lib/TabContent.d.ts new file mode 100644 index 0000000000..af6feec078 --- /dev/null +++ b/types/reactstrap/v4/lib/TabContent.d.ts @@ -0,0 +1,11 @@ +import { CSSModule } from '../index'; + +interface Props { + tag?: React.ReactType; + activeTab?: number | string; + className?: string; + cssModule?: CSSModule; +} + +declare var TabContent: React.StatelessComponent; +export default TabContent; diff --git a/types/reactstrap/v4/lib/TabPane.d.ts b/types/reactstrap/v4/lib/TabPane.d.ts new file mode 100644 index 0000000000..9eead420be --- /dev/null +++ b/types/reactstrap/v4/lib/TabPane.d.ts @@ -0,0 +1,11 @@ +import { CSSModule } from '../index'; + +interface Props { + tag?: React.ReactType; + className?: string; + cssModule?: CSSModule; + tabId?: number | string; +} + +declare var TabPane: React.StatelessComponent; +export default TabPane; diff --git a/types/reactstrap/v4/lib/Table.d.ts b/types/reactstrap/v4/lib/Table.d.ts new file mode 100644 index 0000000000..ec8bfc43fd --- /dev/null +++ b/types/reactstrap/v4/lib/Table.d.ts @@ -0,0 +1,18 @@ +import { CSSModule } from '../index'; + +interface Props { + className?: string; + cssModule?: CSSModule; + size?: string; + bordered?: boolean; + striped?: boolean; + inverse?: boolean; + hover?: boolean; + reflow?: boolean; + responsive?: boolean; + tag?: React.ReactType; + responsiveTag?: React.ReactType; +} + +declare var Table: React.StatelessComponent; +export default Table; diff --git a/types/reactstrap/v4/lib/Tag.d.ts b/types/reactstrap/v4/lib/Tag.d.ts new file mode 100644 index 0000000000..7dce8876f2 --- /dev/null +++ b/types/reactstrap/v4/lib/Tag.d.ts @@ -0,0 +1,12 @@ +import { CSSModule } from '../index'; + +interface Props { + color?: string; + pill?: boolean; + tag?: React.ReactType; + className?: string; + cssModule?: CSSModule; +} + +declare var Tag: React.StatelessComponent; +export default Tag; diff --git a/types/reactstrap/v4/lib/TetherContent.d.ts b/types/reactstrap/v4/lib/TetherContent.d.ts new file mode 100644 index 0000000000..cbc22373e3 --- /dev/null +++ b/types/reactstrap/v4/lib/TetherContent.d.ts @@ -0,0 +1,18 @@ +/// + +import { CSSModule } from '../index'; + +interface Props { + className?: string; + cssModule?: CSSModule; + arrow?: string; + disabled?: boolean; + isOpen: boolean; + toggle: () => void; + tether: Tether.ITetherOptions; + tetherRef?: (tether: Tether) => void; + style?: React.CSSProperties; +} + +declare var TetherContent: React.StatelessComponent; +export default TetherContent; diff --git a/types/reactstrap/v4/lib/Tooltip.d.ts b/types/reactstrap/v4/lib/Tooltip.d.ts new file mode 100644 index 0000000000..9dba615084 --- /dev/null +++ b/types/reactstrap/v4/lib/Tooltip.d.ts @@ -0,0 +1,43 @@ +/// + +import { CSSModule } from '../index'; + +type Placement + = 'top' + | 'bottom' + | 'left' + | 'right' + | 'top left' + | 'top center' + | 'top right' + | 'right top' + | 'right middle' + | 'right bottom' + | 'bottom right' + | 'bottom center' + | 'bottom left' + | 'left top' + | 'left middle' + | 'left bottom'; + +export interface UncontrolledProps { + placement?: Placement; + target: string; + disabled?: boolean; + tether?: Tether.ITetherOptions; + tetherRef?: (tether: Tether) => void; + className?: string; + cssModule?: CSSModule; + autohide?: boolean; + delay?: number | { show: number, hide: number }; +} + +interface Props extends UncontrolledProps { + toggle?: () => void; + isOpen?: boolean; +} + + + +declare var Tooltip: React.StatelessComponent; +export default Tooltip; diff --git a/types/reactstrap/v4/lib/Uncontrolled.d.ts b/types/reactstrap/v4/lib/Uncontrolled.d.ts new file mode 100644 index 0000000000..151ee012d3 --- /dev/null +++ b/types/reactstrap/v4/lib/Uncontrolled.d.ts @@ -0,0 +1,29 @@ +import { + UncontrolledProps as AlertUncontrolledProps +} from './Alert'; +import { + UncontrolledProps as ButtonDropdownUncontrolledProps +} from './ButtonDropdown'; +import { + UncontrolledProps as DropdownUncontrolledProps +} from './Dropdown'; +import { + UncontrolledProps as NavDropdownUncontrolledProps +} from './NavDropdown'; +import { + UncontrolledProps as TooltipUncontrolledProps +} from './Tooltip'; + +declare var UncontrolledAlert: React.StatelessComponent; +declare var UncontrolledButtonDropdown: React.StatelessComponent; +declare var UncontrolledDropdown: React.StatelessComponent; +declare var UncontrolledNavDropdown: React.StatelessComponent; +declare var UncontrolledTooltip: React.StatelessComponent; + +export { + UncontrolledAlert, + UncontrolledButtonDropdown, + UncontrolledDropdown, + UncontrolledNavDropdown, + UncontrolledTooltip +} \ No newline at end of file diff --git a/types/reactstrap/v4/reactstrap-tests.tsx b/types/reactstrap/v4/reactstrap-tests.tsx new file mode 100644 index 0000000000..b094d4d019 --- /dev/null +++ b/types/reactstrap/v4/reactstrap-tests.tsx @@ -0,0 +1,3502 @@ +import * as React from 'react'; +import { + Alert, + UncontrolledAlert, + Badge, + Breadcrumb, + BreadcrumbItem, + Button, + ButtonDropdown, + ButtonGroup, + ButtonToolbar, + Dropdown, + DropdownItem, + DropdownMenu, + DropdownToggle, + Card, + CardBody, + CardBlock, + CardColumns, + CardDeck, + CardFooter, + CardGroup, + CardHeader, + CardImg, + CardImgOverlay, + CardLink, + CardSubtitle, + CardText, + CardTitle, + Row, + Col, + Container, + Collapse, + Fade, + Form, + FormFeedback, + FormGroup, + FormText, + Input, + InputGroup, + InputGroupAddon, + InputGroupButton, + Pagination, + Label, + ListGroup, + ListGroupItem, + ListGroupItemHeading, + ListGroupItemText, + ModalFooter, + Modal, + ModalBody, + ModalHeader, + Jumbotron, + Media, + Nav, + Navbar, + NavbarBrand, + NavbarToggler, + NavDropdown, + NavItem, + NavLink, + PaginationItem, + PaginationLink, + Popover, + PopoverContent, + PopoverTitle, + Progress, + TabPane, + UncontrolledButtonDropdown, + UncontrolledDropdown, + UncontrolledNavDropdown, + UncontrolledTooltip, + TabContent, + Table, + Tag, + TetherContent, + Tooltip +} from 'reactstrap'; + +// --------------- Alert +const Examplea = (props: any) => { + return ( +

+ + Well done! You successfully read this important alert message. + + + Heads up! This alert needs your attention, but it's not super important. + + + Warning! Better check yourself, you're not looking too good. + + + Oh snap! Change a few things up and try submitting again. + +
+ ); +}; + +class AlertExample extends React.Component { + constructor(props: any) { + super(props); + + this.state = { + visible: true + }; + } + + onDismiss = () => { + this.setState({ visible: false }); + } + + render() { + return ( + + I am an alert and I can be dismissed! + + ); + } +} + +function AlertExample1() { + return ( + + I am an alert and I can be dismissed! + + ); +} + +// --------------- Badge +class Example2 extends React.Component { + render() { + return ( +
+

Heading New

+

Heading New

+

Heading New

+

Heading New

+
Heading New
+
Heading New
+
+ ); + } +} + +export class Example3 extends React.Component { + render() { + return ( +
+ default + primary + success + info + warning + danger +
+ ); + } +} + +class Example4 extends React.Component { + render() { + return ( +
+ default{' '} + primary{' '} + success{' '} + info{' '} + warning{' '} + danger +
+ ); + } +} + +// ------------- Breadcrumbs +const Example5 = (props: any) => { + return ( +
+ + Home + + + Home + Library + + + Home + Library + Data + +
+ ); +}; + +const Example6 = (props: any) => { + return ( +
+ + Home + Library + Data + Bootstrap + +
+ ); +}; + +// ------------- Buttons +class Example7 extends React.Component { + render() { + return ( +
+ {' '} + {' '} + {' '} + {' '} + {' '} + {' '} + +
+ ); + } +} + +class Example8 extends React.Component { + render() { + return ( +
+ {' '} + {' '} + {' '} + {' '} + {' '} + +
+ ); + } +} + +const Example9 = ( +
+ {' '} + +
+); + +const Example10 = ( +
+ {' '} + +
+); + +const Example11 = ( +
+ + +
+); + +const Example12 = ( +
+ {' '} + +
+); + +const Example13 = ( +
+ {' '} + +
+); + +class Example14 extends React.Component { + constructor(props: any) { + super(props); + + this.state = { cSelected: [] }; + + this.onRadioBtnClick = this.onRadioBtnClick.bind(this); + this.onCheckboxBtnClick = this.onCheckboxBtnClick.bind(this); + } + + onRadioBtnClick(rSelected: number) { + this.setState({ rSelected }); + } + + onCheckboxBtnClick(selected: number) { + const index = this.state.cSelected.indexOf(selected); + if (index < 0) { + this.state.cSelected.push(selected); + } else { + this.state.cSelected.splice(index, 1); + } + this.setState({ cSelected: [...this.state.cSelected] }); + } + + render() { + return ( +
+
Radio Buttons
+ + + + + +

Selected: {this.state.rSelected}

+ +
Checkbox Buttons
+ + + + + +

Selected: {JSON.stringify(this.state.cSelected)}

+
+ ); + } +} + +// ------------- Button Dropdown +class Example15 extends React.Component { + constructor(props: any) { + super(props); + + this.toggle = this.toggle.bind(this); + this.state = { + dropdownOpen: false + }; + } + + toggle() { + this.setState({ + dropdownOpen: !this.state.dropdownOpen + }); + } + + render() { + return ( + + + Button Dropdown + + + Header + Action + Another Action + + { + // something happens here + }}>Another Action + + + ); + } +} + +const Example16 = ( + true}> + + Text + + + Header + Action + Another Action + + Another Action + + +); + +const Example17 = (props: any) => ( + true}> + + + + Header + Action + Another Action + + Another Action + + +); + +const Example18 = ( +
+ true}> + + Large Button + + + Another Action + Another Action + + + + true}> + + Small Button + + + Another Action + Another Action + + +
+); + +const Example19 = ( + true} dropup> + + Dropup + + + Another Action + Another Action + + +); + +// --------------- ButtonGroup +class Example20 extends React.Component { + render() { + return ( + + {' '} + {' '} + + + ); + } +} + +class Example21 extends React.Component { + render() { + return ( + + + + + + + + + + + + + + + + + ); + } +} + +const Example22 = (props: any) => ( +
+ + + + + + + + + + + + + + + + + +
+); + +const Example23 = (props: any) => ( + + + + true}> + + Dropdown + + + Dropdown Link + Dropdown Link + + + +); + +const Example24 = (props: any) => ( + + + + true}> + + Dropdown + + + Dropdown Link + Dropdown Link + + + +); + +// ------------------ Cards +const Example25 = (props: any) => { + return ( +
+ + + + Card title + Card subtitle + Some quick example text to build on the card title and make up the bulk of the card's content. + + + +
+ ); +}; + +const Example26 = (props: any) => { + return ( +
+ + + Card title + Card subtitle + + Card image cap + + Some quick example text to build on the card title and make up the bulk of the card's content. + Card Link + Another Link + + +
+ ); +}; + +const Example27 = (props: any) => { + return ( + + + + Special Title Treatment + With supporting text below as a natural lead-in to additional content. + + + + + + Special Title Treatment + With supporting text below as a natural lead-in to additional content. + + + + + ); +}; + +const Example28 = (props: any) => { + return ( +
+ + Special Title Treatment + With supporting text below as a natural lead-in to additional content. + + + + Special Title Treatment + With supporting text below as a natural lead-in to additional content. + + + + Special Title Treatment + With supporting text below as a natural lead-in to additional content. + + +
+ ); +}; + +const Example29 = (props: any) => { + return ( +
+ + Header + + Special Title Treatment + With supporting text below as a natural lead-in to additional content. + + + Footer + + + + Featured + + Special Title Treatment + With supporting text below as a natural lead-in to additional content. + + + Footer + +
+ ); +}; + +const Example30 = (props: any) => { + return ( +
+ + + + Card Title + This is a wider card with supporting text below as a natural lead-in to additional content. This content is a little bit longer. + + Last updated 3 mins ago + + + + + + Card Title + This is a wider card with supporting text below as a natural lead-in to additional content. This content is a little bit longer. + + Last updated 3 mins ago + + + + +
+ ); +}; + +const Example31 = (props: any) => { + return ( +
+ + + + Card Title + This is a wider card with supporting text below as a natural lead-in to additional content. This content is a little bit longer. + + Last updated 3 mins ago + + + +
+ ); +}; + +const Example32 = (props: any) => { + return ( +
+ + Special Title Treatment + With supporting text below as a natural lead-in to additional content. + + + + Special Title Treatment + With supporting text below as a natural lead-in to additional content. + + + + Special Title Treatment + With supporting text below as a natural lead-in to additional content. + + + + Special Title Treatment + With supporting text below as a natural lead-in to additional content. + + + + Special Title Treatment + With supporting text below as a natural lead-in to additional content. + + + + Special Title Treatment + With supporting text below as a natural lead-in to additional content. + + +
+ ); +}; + +const Example33 = (props: any) => { + return ( +
+ + Special Title Treatment + With supporting text below as a natural lead-in to additional content. + + + + Special Title Treatment + With supporting text below as a natural lead-in to additional content. + + + + Special Title Treatment + With supporting text below as a natural lead-in to additional content. + + + + Special Title Treatment + With supporting text below as a natural lead-in to additional content. + + + + Special Title Treatment + With supporting text below as a natural lead-in to additional content. + + + + Special Title Treatment + With supporting text below as a natural lead-in to additional content. + + +
+ ); +}; + +const Example34 = (props: any) => { + return ( + + + + + Card title + Card subtitle + This is a wider card with supporting text below as a natural lead-in to additional content. This content is a little bit longer. + + + + + + + Card title + Card subtitle + This card has supporting text below as a natural lead-in to additional content. + + + + + + + Card title + Card subtitle + + This is a wider card with supporting text below as a natural lead-in to additional content. This + card has even longer content than the first to show that equal height action. + + + + + + ); +}; + +const Example35 = (props: any) => { + return ( + + + + + Card title + Card subtitle + This is a wider card with supporting text below as a natural lead-in to additional content. This content is a little bit longer. + + + + + + + Card title + Card subtitle + This card has supporting text below as a natural lead-in to additional content. + + + + + + + Card title + Card subtitle + + This is a wider card with supporting text below as a natural lead-in to additional content. This card has + even longer content than the first to show that equal height action. + + + + + + ); +}; + +const Example36 = (props: any) => { + return ( + + + + + Card title + Card subtitle + This is a wider card with supporting text below as a natural lead-in to additional content. This content is a little bit longer. + + + + + + + + + Card title + Card subtitle + This card has supporting text below as a natural lead-in to additional content. + + + + + Special Title Treatment + With supporting text below as a natural lead-in to additional content. + + + + + + Card title + Card subtitle + + This is a wider card with supporting text below as a natural lead-in to additional content. This card + has even longer content than the first to show that equal height action. + + + + + + Special Title Treatment + With supporting text below as a natural lead-in to additional content. + + + + ); +}; + +// ------------------ Collapse + +class Example37 extends React.Component { + constructor(props: any) { + super(props); + this.toggle = this.toggle.bind(this); + this.state = { collapse: false }; + } + + toggle() { + this.setState({ collapse: !this.state.collapse }); + } + + render() { + return ( +
+ + + + + Anim pariatur cliche reprehenderit, + enim eiusmod high life accusamus terry richardson ad squid. Nihil + anim keffiyeh helvetica, craft beer labore wes anderson cred + nesciunt sapiente ea proident. + + + +
+ ); + } +} + +class Example38 extends React.Component { + constructor(props: any) { + super(props); + this.onOpened = this.onOpened.bind(this); + this.onClosed = this.onClosed.bind(this); + this.toggle = this.toggle.bind(this); + this.state = { collapse: false, status: 'Closed' }; + } + + onOpened() { + this.setState({ ...this.state, status: 'Opened' }); + } + + onClosed() { + this.setState({ ...this.state, status: 'Closed' }); + } + + toggle() { + const status = !this.state.collapse ? 'Opening...' : 'Closing...'; + this.setState({ collapse: !this.state.collapse, status }); + } + + render() { + return ( +
+ +
Current state: {this.state.status}
+ + + + Anim pariatur cliche reprehenderit, + enim eiusmod high life accusamus terry richardson ad squid. Nihil + anim keffiyeh helvetica, craft beer labore wes anderson cred + nesciunt sapiente ea proident. + + + +
+ ); + } +} + +// ------- Dropdown + +class Example39 extends React.Component { + constructor(props: any) { + super(props); + + this.toggle = this.toggle.bind(this); + this.state = { + dropdownOpen: false + }; + } + + toggle() { + this.setState({ + dropdownOpen: !this.state.dropdownOpen + }); + } + + render() { + return ( + + + Dropdown + + + Header + Action + Another Action + + Another Action + + + ); + } +} + +const Example40 = (props: any) => ( + false}> + + Dropdown + + + Header + Action + Another Action + + Another Action + + +); + +const Example41 = (props: any) => ( + Header +); + +const Example42 = (props: any) => ( +
+ + Action + Action + true}> + asdfasd + sadfas + + + true}> + sadfasd + sadf + + + true}> + asdf + sasdfsdf + + +
+); + +class Example43 extends React.Component { + constructor(props: any) { + super(props); + + this.toggle = this.toggle.bind(this); + this.state = { + dropdownOpen: false + }; + } + + toggle() { + this.setState({ + dropdownOpen: !this.state.dropdownOpen + }); + } + + render() { + return ( + + + Custom Dropdown Content + + +
Custom dropdown item
+
Custom dropdown item
+
Custom dropdown item
+
Custom dropdown item
+
+
+ ); + } +} + +function Example44() { + return ( + + + Dropdown + + + Header + Action + Another Action + + Another Action + + + ); +} + +// ------------------ Form +class Example45 extends React.Component { + render() { + return ( +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + This is some placeholder block-level help text for the above input. + It's a bit lighter and easily wraps to a new line. + + + + Radio Buttons + + + + + + + + + + + + + + +
+ ); + } +} + +class Example46 extends React.Component { + render() { + return ( +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + This is some placeholder block-level help text for the above input. + It's a bit lighter and easily wraps to a new line. + + + + + Radio Buttons + + + + + + + + + + + + + + + + + + + + + + + + + +
+ ); + } +} + +class Example47 extends React.Component { + render() { + return ( +
+ + {' '} + + + {' '} + + {' '} + + + {' '} + +
+ ); + } +} + +class Example48 extends React.Component { + render() { + return ( +
+ + + + Success! You did it! + Example help text that remains unchanged. + + + + + Whoops, check your formatting and try again. + Example help text that remains unchanged. + + + + + Oh noes! that name is already taken + Example help text that remains unchanged. + +
+ ); + } +} + +class Example49 extends React.Component { + render() { + return ( +
+ + + Some static value + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + This is some placeholder block-level help text for the above input. + It's a bit lighter and easily wraps to a new line. + + + + + + + + +
+ ); + } +} + +class Example50 extends React.Component { + render() { + return ( +
+ + + + + + + + + + + + +
+ ); + } +} + +class Example51 extends React.Component { + render() { + return ( +
+ + + + + {' '} + + + + + {' '} + +
+ ); + } +} + +const Example52 = (props: any) => { + return ( +
+ + @ + + +
+ + + + + + +
+ + + @example.com + +
+ + $ + $ + + $ + $ + +
+ + $ + + .00 + +
+ ); +}; + +const Example53 = (props: any) => { + return ( +
+ + To the Left! + + +
+ + + To the Right! + +
+ + To the Left! + + To the Right! + +
+ ); +}; + +const Example54 = (props: any) => { + return ( +
+ + @lg + + +
+ + @normal + + +
+ + @sm + + +
+ ); +}; + +const Example55 = (props: any) => { + return ( +
+ + + + +
+ + + + +
+ + + + + +
+ ); +}; + +const Example56 = (props: any) => { + return ( +
+ + @lg + + +
+ + @normal + + +
+ + @sm + + +
+ ); +}; + +const Example57 = (props: any) => { + return ( +
+ + + + +
+ + + + +
+ + + + + +
+ ); +}; + +const Example58 = (props: any) => { + return ( +
+ + To the Left! + + +
+ + + To the Right! + +
+ + To the Left! + + To the Right! + +
+ ); +}; + +const Example59 = (props: any) => { + return ( +
+ +

Hello, world!

+

This is a simple hero unit, a simple Jumbotron-style component for calling extra attention to featured content or information.

+
+

It uses utility classes for typgraphy and spacing to space content out within the larger container.

+

+ +

+
+
+ ); +}; + +const Example60 = (props: any) => { + return ( +
+ + +

Fluid jumbotron

+

This is a modified jumbotron that occupies the entire horizontal space of its parent.

+
+
+
+ ); +}; + +class Example61 extends React.Component { + render() { + return ( + + + .col + + + .col + .col + .col + .col + + + .col-3 + .col-auto - variable width content + .col-3 + + + .col-6 + .col-6 + + + .col-6 .col-sm-4 + .col-6 .col-sm-4 + .col .col-sm-4 + + + .col .col-sm-6 .col-sm-push-2 .col-sm-pull-2 .col-sm-offset-2 + + + .col .col-sm-12 .col-md-6 .col-md-offset-3 + + + .col .col-sm .col-sm-offset-1 + .col .col-sm .col-sm-offset-1 + + + ); + } +} + +class Example62 extends React.Component { + render() { + return ( + + Cras justo odio + Dapibus ac facilisis in + Morbi leo risus + Porta ac consectetur ac + Vestibulum at eros + + ); + } +} + +class Example63 extends React.Component { + render() { + return ( + + Cras justo odio 14 + Dapibus ac facilisis in 2 + Morbi leo risus 1 + + ); + } +} + +class Example64 extends React.Component { + render() { + return ( + + Cras justo odio + Dapibus ac facilisis in + Morbi leo risus + Porta ac consectetur ac + Vestibulum at eros + + ); + } +} + +class Example65 extends React.Component { + render() { + return ( +
+

Anchors

+

Be sure to not use the standard .btn classes here.

+ + Cras justo odio + Dapibus ac facilisis in + Morbi leo risus + Porta ac consectetur ac + Vestibulum at eros + +

+

Buttons

+ + Cras justo odio + Dapibus ac facilisis in + Morbi leo risus + Porta ac consectetur ac + Vestibulum at eros + +
+ ); + } +} + +class Example66 extends React.Component { + render() { + return ( + + Cras justo odio + Dapibus ac facilisis in + Morbi leo risus + Porta ac consectetur ac + + ); + } +} + +class Example67 extends React.Component { + render() { + return ( + + + List group item heading + + Donec id elit non mi porta gravida at eget metus. Maecenas sed diam eget risus varius blandit. + + + + List group item heading + + Donec id elit non mi porta gravida at eget metus. Maecenas sed diam eget risus varius blandit. + + + + List group item heading + + Donec id elit non mi porta gravida at eget metus. Maecenas sed diam eget risus varius blandit. + + + + ); + } +} + +// ------------- Media +const Example68 = () => { + return ( + + + + + + + Media heading + + Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin commodo. Cras purus + odio, vestibulum in vulputate at, tempus viverra turpis. Fusce condimentum nunc ac nisi vulputate fringilla. + Donec lacinia congue felis in faucibus. + + + ); +}; + +const Example69 = () => { + return ( + + + + + + + Media heading + + Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin commodo. Cras purus + odio, vestibulum in vulputate at, tempus viverra turpis. Fusce condimentum nunc ac nisi vulputate fringilla. + Donec lacinia congue felis in faucibus. + + + + + + + Nested media heading + + Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin commodo. Cras + purus odio, vestibulum in vulputate at, tempus viverra turpis. Fusce condimentum nunc ac nisi vulputate + fringilla. Donec lacinia congue felis in faucibus. + + + + + ); +}; + +const Example70 = () => { + return ( +
+ + + + + + + Top aligned media + + Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin commodo. Cras + purus odio, vestibulum in vulputate at, tempus viverra turpis. Fusce condimentum nunc ac nisi vulputate + fringilla. Donec lacinia congue felis in faucibus. + + + + + + + + + Middle aligned media + + Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin commodo. Cras + purus odio, vestibulum in vulputate at, tempus viverra turpis. Fusce condimentum nunc ac nisi vulputate + fringilla. Donec lacinia congue felis in faucibus. + + + + + + + + + Bottom aligned media + + Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin commodo. Cras + purus odio, vestibulum in vulputate at, tempus viverra turpis. Fusce condimentum nunc ac nisi vulputate + fringilla. Donec lacinia congue felis in faucibus. + + +
+ ); +}; + +const Example71 = () => { + return ( + + + + + + + + Media heading + + Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin commodo. Cras + purus odio, vestibulum in vulputate at, tempus viverra turpis. Fusce condimentum nunc ac nisi vulputate + fringilla. Donec lacinia congue felis in faucibus. + + + + + + + Nested media heading + + Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin commodo. + Cras purus odio, vestibulum in vulputate at, tempus viverra turpis. Fusce condimentum nunc ac nisi + vulputate fringilla. Donec lacinia congue felis in faucibus. + + + + + + + Nested media heading + + Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin commodo. + Cras purus odio, vestibulum in vulputate at, tempus viverra turpis. Fusce condimentum nunc ac nisi + vulputate fringilla. Donec lacinia congue felis in faucibus. + + + + + + + + + + + Nested media heading + + Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin commodo. Cras + purus odio, vestibulum in vulputate at, tempus viverra turpis. Fusce condimentum nunc ac nisi vulputate + fringilla. Donec lacinia congue felis in faucibus. + + + + + + + + Media heading + + Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin commodo. Cras + purus odio, vestibulum in vulputate at, tempus viverra turpis. Fusce condimentum nunc ac nisi vulputate + fringilla. Donec lacinia congue felis in faucibus. + + + + + + + ); +}; + +// --------------- Modal +class ModalExample72 extends React.Component { + constructor(props: any) { + super(props); + this.state = { + modal: false + }; + + this.toggle = this.toggle.bind(this); + } + + toggle() { + this.setState({ + modal: !this.state.modal + }); + } + + render() { + return ( +
+ + + Modal title + + Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et + dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex + ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat + nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit + anim id est laborum. + + + {' '} + + + +
+ ); + } +} + +class ModalExample73 extends React.Component { + constructor(props: any) { + super(props); + this.state = { + modal: false, + backdrop: true + }; + + this.toggle = this.toggle.bind(this); + this.changeBackdrop = this.changeBackdrop.bind(this); + } + + toggle() { + this.setState({ + modal: !this.state.modal + }); + } + + changeBackdrop(e: React.ChangeEvent) { + let value = e.target.value; + if (value !== 'static') { + value = JSON.parse(value); + } + this.setState({ backdrop: value }); + } + + render() { + return ( +
+
e.preventDefault()}> + + {' '} + + + + + + + {' '} + +
+ + Modal title + + Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et + dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip + ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu + fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt + mollit anim id est laborum. + + + {' '} + + + +
+ ); + } +} + +class ModalExample74 extends React.Component { + constructor(props: any) { + super(props); + this.state = { + modal: false, + nestedModal: false, + }; + + this.toggle = this.toggle.bind(this); + this.toggleNested = this.toggleNested.bind(this); + } + + toggle() { + this.setState({ + modal: !this.state.modal + }); + } + + toggleNested() { + this.setState({ + nestedModal: !this.state.nestedModal + }); + } + + render() { + return ( +
+ + + Modal title + + Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et + dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex + ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu + fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt + mollit anim id est laborum. +
+ + + Nested Modal title + Stuff and things + + {' '} + + + +
+ + {' '} + + +
+
+ ); + } +} + +class Example75 extends React.Component { + constructor(props: any) { + super(props); + + this.toggle = this.toggle.bind(this); + this.state = { + isOpen: false + }; + } + toggle() { + this.setState({ + isOpen: !this.state.isOpen + }); + } + render() { + return ( +
+ + + reactstrap + + + + +
+ ); + } +} + +class Example76 extends React.Component { + constructor(props: any) { + super(props); + + this.toggleNavbar = this.toggleNavbar.bind(this); + this.state = { + collapsed: true + }; + } + + toggleNavbar() { + this.setState({ + collapsed: !this.state.collapsed + }); + } + render() { + return ( +
+ + + + reactstrap + + + +
+ ); + } +} + +class Example77 extends React.Component { + render() { + return ( +
+

List Based

+ +
+

Link Based

+ +
+ ); + } +} + +class Example78 extends React.Component { + render() { + return ( +
+

List Based

+ +
+

Link based

+ +
+ ); + } +} + +class Example79 extends React.Component { + constructor(props: any) { + super(props); + + this.toggle = this.toggle.bind(this); + this.state = { + dropdownOpen: false + }; + } + + toggle() { + this.setState({ + dropdownOpen: !this.state.dropdownOpen + }); + } + + render() { + return ( +
+ +
+ ); + } +} + +class Example80 extends React.Component { + constructor(props: any) { + super(props); + + this.toggle = this.toggle.bind(this); + this.state = { + dropdownOpen: false + }; + } + + toggle() { + this.setState({ + dropdownOpen: !this.state.dropdownOpen + }); + } + + render() { + return ( +
+ +
+ ); + } +} + +// ----------- Pagination +class Example81 extends React.Component { + render() { + return ( + + + + + + + 1 + + + + + 2 + + + + + 3 + + + + + 4 + + + + + 5 + + + + + + + ); + } +} + +class Example82 extends React.Component { + render() { + return ( + + + + + + + 1 + + + + + 2 + + + + + 3 + + + + + 4 + + + + + 5 + + + + + + + ); + } +} + +class Example83 extends React.Component { + render() { + return ( + + + + + + + 1 + + + + + 2 + + + + + 3 + + + + + + + ); + } +} + +class Example84 extends React.Component { + render() { + return ( + + + + + + + 1 + + + + + 2 + + + + + 3 + + + + + + + ); + } +} + +// ------------------------- Popover +class Example85 extends React.Component { + constructor(props: any) { + super(props); + + this.toggle = this.toggle.bind(this); + this.state = { + popoverOpen: false + }; + } + + toggle() { + this.setState({ + popoverOpen: !this.state.popoverOpen + }); + } + + render() { + return ( +
+ + + Popover Title + Sed posuere consectetur est at lobortis. Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis vestibulum. + +
+ ); + } +} + +class PopoverItem extends React.Component { + constructor(props: any) { + super(props); + + this.toggle = this.toggle.bind(this); + this.state = { + popoverOpen: false + }; + } + + toggle() { + this.setState({ + popoverOpen: !this.state.popoverOpen + }); + } + + render() { + return ( + + + + Popover Title + Sed posuere consectetur est at lobortis. Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis vestibulum. + + + ); + } +} + +class PopoverExampleMulti extends React.Component}> { + constructor(props: any) { + super(props); + + this.state = { + popovers: [ + { + placement: 'top', + text: 'Top' + }, + { + placement: 'bottom', + text: 'Bottom' + }, + { + placement: 'left', + text: 'Left' + }, + { + placement: 'right', + text: 'Right' + } + ] + }; + } + + render() { + return ( +
+ {this.state.popovers.map((popover, i) => { + return ; + })} +
+ ); + } +} + +// ------------------------- Progress + +const Example86 = (props: any) => { + return ( +
+
0%
+ +
25%
+ +
50%
+ +
75%
+ +
100%
+ +
Multiple bars
+ + + + + + + +
+ ); +}; + +const Example87 = (props: any) => { + return ( +
+ + + + + +
+ ); +}; + +const Example88 = (props: any) => { + return ( +
+ 25% + 1/2 + You're almost there! + You did it! + + Meh + Wow! + Cool + 20% + !! + +
+ ); +}; + +const Example89 = (props: any) => { + return ( +
+ + + + + + + + + + + +
+ ); +}; + +const Example90 = (props: any) => { + return ( +
+ + + + + + + + + + + +
+ ); +}; + +const Example91 = (props: any) => { + return ( +
+
Plain
+ + + + + + + +
With Labels
+ + Meh + Wow! + 25% + LOOK OUT!! + +
Stripes and Animations
+ + Stripes + Animated Stripes + Plain + +
+ ); +}; + +const Example92 = (props: any) => { + return ( +
+
1 of 5
+ +
50 of 135
+ +
75 of 111
+ +
463 of 500
+ + +
Various (40) of 55
+ + 5 + 15 + 10 + 10 + +
+ ); +}; + +// --------------- Table +class Example93 extends React.Component { + render() { + return ( + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#First NameLast NameUsername
1MarkOtto@mdo
2JacobThornton@fat
3Larrythe Bird@twitter
+ ); + } +} + +class Example94 extends React.Component { + render() { + return ( + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#First NameLast NameUsername
1MarkOtto@mdo
2JacobThornton@fat
3Larrythe Bird@twitter
+ ); + } +} + +class Example95 extends React.Component { + render() { + return ( + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#First NameLast NameUsername
1MarkOtto@mdo
2JacobThornton@fat
3Larrythe Bird@twitter
+ ); + } +} + +class Example96 extends React.Component { + render() { + return ( + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#First NameLast NameUsername
1MarkOtto@mdo
2JacobThornton@fat
3Larrythe Bird@twitter
+ ); + } +} + +class Example97 extends React.Component { + render() { + return ( + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#First NameLast NameUsername
1MarkOtto@mdo
2JacobThornton@fat
3Larrythe Bird@twitter
+ ); + } +} + +class Example98 extends React.Component { + render() { + return ( + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#First NameLast NameUsername
1MarkOtto@mdo
2JacobThornton@fat
3Larrythe Bird@twitter
+ ); + } +} + +class Example99 extends React.Component { + render() { + return ( + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#Table headingTable headingTable headingTable headingTable headingTable heading
1Table cellTable cellTable cellTable cellTable cellTable cell
2Table cellTable cellTable cellTable cellTable cellTable cell
3Table cellTable cellTable cellTable cellTable cellTable cell
+ ); + } +} + +class Example100 extends React.Component { + render() { + return ( + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#Table headingTable headingTable headingTable headingTable headingTable heading
1Table cellTable cellTable cellTable cellTable cellTable cell
2Table cellTable cellTable cellTable cellTable cellTable cell
3Table cellTable cellTable cellTable cellTable cellTable cell
+ ); + } +} + +class Example101 extends React.Component { + constructor(props: any) { + super(props); + + this.toggle = this.toggle.bind(this); + this.state = { + activeTab: '1' + }; + } + + toggle(tab: string) { + if (this.state.activeTab !== tab) { + this.setState({ + activeTab: tab + }); + } + } + render() { + return ( +
+ + + + + +

Tab 1 Contents

+ +
+
+ + + + + Special Title Treatment + With supporting text below as a natural lead-in to additional content. + + + + + + Special Title Treatment + With supporting text below as a natural lead-in to additional content. + + + + + +
+
+ ); + } +} + +class Example102 extends React.Component { + constructor(props: any) { + super(props); + + this.toggle = this.toggle.bind(this); + this.state = { + tooltipOpen: false + }; + } + + toggle() { + this.setState({ + tooltipOpen: !this.state.tooltipOpen + }); + } + + render() { + return ( +
+

Somewhere in here is a tooltip.

+ + Hello world! + +
+ ); + } +} + +class Example103 extends React.Component { + constructor(props: any) { + super(props); + + this.toggle = this.toggle.bind(this); + this.state = { + tooltipOpen: false + }; + } + + toggle() { + this.setState({ + tooltipOpen: !this.state.tooltipOpen + }); + } + + render() { + return ( +
+

Sometimes you need to allow users to select text within a tooltip.

+ + Try to select this text! + +
+ ); + } +} + +class TooltipItem extends React.Component { + constructor(props: any) { + super(props); + + this.toggle = this.toggle.bind(this); + this.state = { + tooltipOpen: false + }; + } + + toggle() { + this.setState({ + tooltipOpen: !this.state.tooltipOpen + }); + } + + render() { + return ( + + + + Tooltip Content! + + + ); + } +} + +class TooltipExampleMulti extends React.Component { + constructor(props: any) { + super(props); + + this.state = { + tooltips: [ + { + placement: 'top', + text: 'Top' + }, + { + placement: 'bottom', + text: 'Bottom' + }, + { + placement: 'left', + text: 'Left' + }, + { + placement: 'right', + text: 'Right' + } + ] + }; + } + + render() { + return ( +
+ {this.state.tooltips.map((tooltip: {placement: string; text: string; }, i: number) => { + return ; + })} +
+ ); + } +} + +function Example() { + return ( +
+

Somewhere in here is a tooltip.

+ + Hello world! + +
+ ); +} + +function Example104() { + const props = { + className: 'my-input', + style: { + borderColor: 'black', + } + }; + + return ( + + + + + + + + ); +} + +function Example105() { + return ( + + + + +
+ Item +
+
+
+ ); +} + +function Example106() { + return ( + + ); +} + +const CSSModuleExample = (props: any) => { + const cssModule = { + btn: 'hash' + }; + + return ( + + ); +}; + +class Example107 extends React.Component { + private input: HTMLInputElement; + + render() { + return { this.input = input; }} />; + } +} + +class Example108 extends React.Component { + constructor(props: any) { + super(props); + + this.toggle = this.toggle.bind(this); + this.state = { + isOpen: false + }; + } + toggle() { + this.setState({ + isOpen: !this.state.isOpen + }); + } + render() { + return ( +
+ + + reactstrap + + + + +
+ ); + } +} + +class Example109 extends React.Component { + constructor(props: any) { + super(props); + + this.toggle = this.toggle.bind(this); + this.state = { + isOpen: false + }; + } + toggle() { + this.setState({ + isOpen: !this.state.isOpen + }); + } + render() { + return ( +
+ + + reactstrap + + + + +
+ ); + } +} + +class Example110 extends React.Component { + constructor(props: any) { + super(props); + + this.toggle = this.toggle.bind(this); + this.state = { + isOpen: false + }; + } + toggle() { + this.setState({ + isOpen: !this.state.isOpen + }); + } + render() { + return ( +
+ + + reactstrap + + + + +
+ ); + } +} + +class Example111 extends React.Component { + constructor(props: any) { + super(props); + + this.toggle = this.toggle.bind(this); + this.state = { + isOpen: false + }; + } + toggle() { + this.setState({ + isOpen: !this.state.isOpen + }); + } + render() { + return ( +
+ + + reactstrap + + + + +
+ ); + } +} + +class Example112 extends React.Component { + constructor(props: any) { + super(props); + + this.toggle = this.toggle.bind(this); + this.state = { + isOpen: false + }; + } + toggle() { + this.setState({ + isOpen: !this.state.isOpen + }); + } + render() { + return ( +
+ + + reactstrap + + + + +
+ ); + } +} + +const Example113 = (props: any) => { + return ( +
+ + + Anim pariatur cliche reprehenderit, + enim eiusmod high life accusamus terry richardson ad squid. Nihil + anim keffiyeh helvetica, craft beer labore wes anderson cred + nesciunt sapiente ea proident. + + +
+ ); + }; diff --git a/types/reactstrap/v4/tsconfig.json b/types/reactstrap/v4/tsconfig.json new file mode 100644 index 0000000000..73578a9178 --- /dev/null +++ b/types/reactstrap/v4/tsconfig.json @@ -0,0 +1,28 @@ +{ + "compilerOptions": { + "module": "commonjs", + "lib": [ + "es6", + "dom" + ], + "noImplicitAny": true, + "noImplicitThis": true, + "strictNullChecks": true, + "strictFunctionTypes": true, + "jsx": "react", + "baseUrl": "../../", + "typeRoots": [ + "../../" + ], + "paths": { + "reactstrap": ["reactstrap/v4"] + }, + "types": [], + "noEmit": true, + "forceConsistentCasingInFileNames": true + }, + "files": [ + "index.d.ts", + "reactstrap-tests.tsx" + ] +} \ No newline at end of file diff --git a/types/reactstrap/v4/tslint.json b/types/reactstrap/v4/tslint.json new file mode 100644 index 0000000000..3db14f85ea --- /dev/null +++ b/types/reactstrap/v4/tslint.json @@ -0,0 +1 @@ +{ "extends": "dtslint/dt.json" } diff --git a/types/redis/index.d.ts b/types/redis/index.d.ts index 13b7cbeb45..5f7e1d1e10 100644 --- a/types/redis/index.d.ts +++ b/types/redis/index.d.ts @@ -41,7 +41,7 @@ export interface ClientOpts { retry_unfulfilled_commands?: boolean; auth_pass?: string; password?: string; - db?: string; + db?: string | number; family?: string; rename_commands?: { [command: string]: string }; tls?: any; diff --git a/types/redux-form/lib/Field.d.ts b/types/redux-form/lib/Field.d.ts index 8020763db4..9acba639c6 100644 --- a/types/redux-form/lib/Field.d.ts +++ b/types/redux-form/lib/Field.d.ts @@ -16,15 +16,15 @@ export type Formatter = (value: any, name: string) => any; export type Parser = (value: any, name: string) => any; export type Validator = (value: any, allValues?: any, props?: any) => any; -interface EventHandler { +export interface EventHandler { (event: Event): void; } -interface EventOrValueHandler extends EventHandler { +export interface EventOrValueHandler extends EventHandler { (value: any): void; } -interface CommonFieldProps { +export interface CommonFieldProps { name: string; onBlur: EventOrValueHandler>; onChange: EventOrValueHandler>; @@ -33,7 +33,7 @@ interface CommonFieldProps { onFocus: EventHandler>; } -interface BaseFieldProps

extends Partial { +export interface BaseFieldProps

extends Partial { name: string; component?: ComponentType

| "input" | "select" | "textarea", format?: Formatter | null; @@ -53,7 +53,10 @@ export interface GenericField

extends Component & P> { getRenderedComponent(): Component; } -type GenericFieldHTMLAttributes = InputHTMLAttributes | SelectHTMLAttributes | TextareaHTMLAttributes; +export type GenericFieldHTMLAttributes = + InputHTMLAttributes | + SelectHTMLAttributes | + TextareaHTMLAttributes; export class Field

extends Component & P> implements GenericField

{ dirty: boolean; diff --git a/types/redux-form/redux-form-tests.tsx b/types/redux-form/redux-form-tests.tsx index dba9b95633..cde07c264c 100644 --- a/types/redux-form/redux-form-tests.tsx +++ b/types/redux-form/redux-form-tests.tsx @@ -14,6 +14,7 @@ import { WrappedFieldProps, Fields, GenericFields, + BaseFieldProps, WrappedFieldsProps, FieldArray, GenericFieldArray, diff --git a/types/underscore/index.d.ts b/types/underscore/index.d.ts index 2803c89b96..8ef77dff02 100644 --- a/types/underscore/index.d.ts +++ b/types/underscore/index.d.ts @@ -1,6 +1,6 @@ // Type definitions for Underscore 1.8 // Project: http://underscorejs.org/ -// Definitions by: Boris Yankov , Josh Baldwin , Christopher Currens +// Definitions by: Boris Yankov , Josh Baldwin , Christopher Currens , Cassey Lottman // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped declare var _: _.UnderscoreStatic; @@ -920,7 +920,7 @@ declare module _ { **/ uniq( array: _.List, - iterator?: _.ListIterator, + iterator?: _.ListIterator | _.IterateePropertyShorthand, context?: any): T[]; /** @@ -937,7 +937,7 @@ declare module _ { unique( array: _.List, isSorted?: boolean, - iterator?: _.ListIterator, + iterator?: _.ListIterator | _.IterateePropertyShorthand, context?: any): T[]; @@ -4512,7 +4512,7 @@ declare module _ { * Wrapped type `any[]`. * @see _.uniq **/ - uniq(isSorted?: boolean, iterator?: _.ListIterator): T[]; + uniq(isSorted?: boolean, iterator?: _.ListIterator | _.IterateePropertyShorthand): T[]; /** * Wrapped type `any[]`. @@ -5472,23 +5472,23 @@ declare module _ { * Wrapped type `any[]`. * @see _.uniq **/ - uniq(isSorted?: boolean, iterator?: _.ListIterator): _Chain; + uniq(isSorted?: boolean, iterator?: _.ListIterator | _.IterateePropertyShorthand): _Chain; /** * Wrapped type `any[]`. * @see _.uniq **/ - uniq(iterator?: _.ListIterator, context?: any): _Chain; + uniq(iterator?: _.ListIterator | _.IterateePropertyShorthand, context?: any): _Chain; /** * @see _.uniq **/ - unique(isSorted?: boolean, iterator?: _.ListIterator): _Chain; + unique(isSorted?: boolean, iterator?: _.ListIterator | _.IterateePropertyShorthand): _Chain; /** * @see _.uniq **/ - unique(iterator?: _.ListIterator, context?: any): _Chain; + unique(iterator?: _.ListIterator | _.IterateePropertyShorthand, context?: any): _Chain; /** * Wrapped type `any[][]`.