[semantic-ui-shape] Add type definitions. (#16973)

This commit is contained in:
Leonard Thieu
2017-06-05 16:31:22 -07:00
committed by Mohamed Hegazy
parent f61658bca2
commit 447f5c2ddd
5 changed files with 378 additions and 0 deletions
+260
View File
@@ -0,0 +1,260 @@
interface JQuery {
shape: SemanticUI.Shape;
}
declare namespace SemanticUI {
interface Shape {
settings: ShapeSettings;
/**
* Flips the shape upward
*/
(behavior: 'flip up'): JQuery;
/**
* Flips the shape downward
*/
(behavior: 'flip down'): JQuery;
/**
* Flips the shape right
*/
(behavior: 'flip right'): JQuery;
/**
* Flips the shape left
*/
(behavior: 'flip left'): JQuery;
/**
* Flips the shape over clock-wise
*/
(behavior: 'flip over'): JQuery;
/**
* Flips the shape over counter-clockwise
*/
(behavior: 'flip back'): JQuery;
/**
* Set the next side to a specific selector
*/
(behavior: 'set next side', selector: string | JQuery): JQuery;
/**
* Returns whether shape is currently animating
*/
(behavior: 'is animating'): boolean;
/**
* Removes all inline styles
*/
(behavior: 'reset'): JQuery;
/**
* Queues an animation until after current animation
*/
(behavior: 'queue', animation: string): JQuery;
/**
* Forces a reflow on element
*/
(behavior: 'repaint'): JQuery;
/**
* Set the next side to next sibling to active element
*/
(behavior: 'set default side'): JQuery;
/**
* Sets shape to the content size of the next side
*/
(behavior: 'set stage size'): JQuery;
/**
* Refreshes the selector cache for element sides
*/
(behavior: 'refresh'): JQuery;
/**
* Returns translation for next side staged below
*/
(behavior: 'get transform down'): Shape.Translation;
/**
* Returns translation for next side staged left
*/
(behavior: 'get transform left'): Shape.Translation;
/**
* Returns translation for next side staged right
*/
(behavior: 'get transform right'): Shape.Translation;
/**
* Returns translation for next side staged up
*/
(behavior: 'get transform up'): Shape.Translation;
/**
* Returns translation for next side staged down
*/
(behavior: 'get transform down'): Shape.Translation;
(behavior: 'destroy'): JQuery;
<K extends keyof ShapeSettings>(behavior: 'setting', name: K, value?: undefined): ShapeSettings[K];
<K extends keyof ShapeSettings>(behavior: 'setting', name: K, value: ShapeSettings[K]): JQuery;
(behavior: 'setting', value: ShapeSettings.Param): JQuery;
(settings?: ShapeSettings.Param): JQuery;
}
/**
* @see {@link http://semantic-ui.com/modules/shape.html#/settings}
*/
interface ShapeSettings extends Pick<ShapeSettings._Impl, keyof ShapeSettings._Impl> { }
namespace ShapeSettings {
type Param = ShapeSettings | object;
interface _Impl {
// region Shape Settings
/**
* Duration of side change animation
*
* @default 700
*/
duration: number;
/**
* When set to next will use the width of the next side during the shape's animation.
* When set to initial it will use the width of the shape at initialization.
* When set to a specific pixel height, will force the width to that height.
*
* @default 'initial'
* @since 2.2
*/
width: 'next' | 'initial' | number;
/**
* When set to next will use the height of the next side during the shape's animation.
* When set to initial it will use the height of the shape at initialization.
* When set to a specific pixel height, will force the height to that height.
*
* @default 'initial'
* @since 2.2
*/
height: 'next' | 'initial' | number;
// endregion
// region Callbacks
/**
* Is called before side change
*/
beforeChange(this: JQuery): void;
/**
* Is called after visible side change
*/
onChange(this: JQuery): void;
// endregion
// region DOM Settings
selector: Shape.SelectorSettings;
className: Shape.ClassNameSettings;
// endregion
// region Debug Settings
error: Shape.ErrorSettings;
// endregion
// region Component Settings
// region DOM Settings
/**
* Event namespace. Makes sure module teardown does not effect other events attached to an element.
*/
namespace: string;
// endregion
// region Debug Settings
/**
* Name used in log statements
*/
name: string;
/**
* Silences all console output including error messages, regardless of other debug settings.
*/
silent: boolean;
/**
* Debug output to console
*/
debug: boolean;
/**
* Show console.table output with performance metrics
*/
performance: boolean;
/**
* Debug output includes all internal behaviors
*/
verbose: boolean;
// endregion
// endregion
}
}
namespace Shape {
interface Translation {
transform: string;
}
interface SelectorSettings extends Pick<SelectorSettings._Impl, keyof SelectorSettings._Impl> { }
namespace SelectorSettings {
type Param = SelectorSettings | object;
interface _Impl {
/**
* @default '.sides'
*/
sides: string;
/**
* @default '.side'
*/
side: string;
}
}
interface ClassNameSettings extends Pick<ClassNameSettings._Impl, keyof ClassNameSettings._Impl> { }
namespace ClassNameSettings {
type Param = ClassNameSettings | object;
interface _Impl {
/**
* @default 'animating'
*/
animating: string;
/**
* @default 'hidden'
*/
hidden: string;
/**
* @default 'loading'
*/
loading: string;
/**
* @default 'active'
*/
active: string;
}
}
interface ErrorSettings extends Pick<ErrorSettings._Impl, keyof ErrorSettings._Impl> { }
namespace ErrorSettings {
type Param = ErrorSettings | object;
interface _Impl {
/**
* @default 'You tried to switch to a side that does not exist.'
*/
side: string;
/**
* @default 'The method you called is not defined'
*/
method: string;
}
}
}
}
+11
View File
@@ -0,0 +1,11 @@
// Type definitions for semantic-ui-shape 2.2
// Project: http://www.semantic-ui.com
// Definitions by: Leonard Thieu <https://github.com/leonard-thieu>
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
// TypeScript Version: 2.2
/// <reference types="jquery" />
/// <reference path="global.d.ts" />
declare const shape: SemanticUI.Shape;
export = shape;
@@ -0,0 +1,76 @@
function test_shape_static() {
$.fn.shape.settings.error.method = 'method';
$.fn.shape.settings.namespace = 'namespace';
$.fn.shape.settings.name = 'name';
$.fn.shape.settings.silent = false;
$.fn.shape.settings.debug = true;
$.fn.shape.settings.performance = true;
$.fn.shape.settings.verbose = true;
}
function test_shape() {
const selector = '.ui.shape';
$(selector).shape('flip up') === $();
$(selector).shape('flip down') === $();
$(selector).shape('flip right') === $();
$(selector).shape('flip left') === $();
$(selector).shape('flip over') === $();
$(selector).shape('flip back') === $();
$(selector).shape('set next side', $()) === $();
$(selector).shape('is animating') === false;
$(selector).shape('reset') === $();
$(selector).shape('queue', 'animation') === $();
$(selector).shape('repaint') === $();
$(selector).shape('set default side') === $();
$(selector).shape('set stage size') === $();
$(selector).shape('refresh') === $();
$(selector).shape('get transform down') === { transform: 'transform' };
$(selector).shape('get transform left') === { transform: 'transform' };
$(selector).shape('get transform right') === { transform: 'transform' };
$(selector).shape('get transform up') === { transform: 'transform' };
$(selector).shape('get transform down') === { transform: 'transform' };
$(selector).shape('destroy') === $();
$(selector).shape('setting', 'debug', undefined) === false;
$(selector).shape('setting', 'debug') === false;
$(selector).shape('setting', 'debug', true) === $();
$(selector).shape('setting', {
namespace: 'namespace',
name: 'name',
silent: false,
debug: true,
performance: true,
verbose: true
}) === $();
$(selector).shape({
duration: 700,
width: 'next',
height: 200,
beforeChange() {
this === $();
},
onChange() {
this === $();
},
selector: {
sides: 'sides',
side: 'side'
},
className: {
animating: 'animating',
hidden: 'hidden',
loading: 'loading',
active: 'active'
},
error: {
side: 'side',
method: 'method'
}
}) === $();
$(selector).shape() === $();
}
import shape = require('semantic-ui-shape');
function test_module() {
$.fn.shape = shape;
}
+24
View File
@@ -0,0 +1,24 @@
{
"compilerOptions": {
"module": "commonjs",
"lib": [
"es6",
"dom"
],
"noImplicitAny": true,
"noImplicitThis": true,
"strictNullChecks": true,
"baseUrl": "../",
"typeRoots": [
"../"
],
"types": [],
"noEmit": true,
"forceConsistentCasingInFileNames": true
},
"files": [
"index.d.ts",
"global.d.ts",
"semantic-ui-shape-tests.ts"
]
}
+7
View File
@@ -0,0 +1,7 @@
{
"extends": "dtslint/dt.json",
"rules": {
"no-empty-interface": false,
"unified-signatures": false
}
}