diff --git a/gldatepicker/gldatepicker-tests.ts b/gldatepicker/gldatepicker-tests.ts new file mode 100644 index 000000000..885ec53ea --- /dev/null +++ b/gldatepicker/gldatepicker-tests.ts @@ -0,0 +1,89 @@ +/// +/// + +$('input').glDatePicker(); +$('#example2').glDatePicker( +{ + showAlways: true, + allowMonthSelect: false, + allowYearSelect: false, + prevArrow: '', + nextArrow: '', + selectedDate: new Date(2013, 8, 5), + selectableDateRange: [ + { + from: new Date(2013, 8, 1), + to: new Date(2013, 8, 10) + }, + { + from: new Date(2013, 8, 19), + to: new Date(2013, 8, 22) + }, + ], + selectableDates: [ + { date: new Date(2013, 8, 24) }, + { date: new Date(2013, 8, 30) } + ] +}); + +$('#example3').glDatePicker( +{ + showAlways: true, + cssName: 'darkneon', + selectedDate: new Date(2013, 0, 5), + specialDates: [ + { + date: new Date(2013, 0, 8), + data: { message: 'Meeting every day 8 of the month' }, + repeatMonth: true + }, + { + date: new Date(0, 0, 1), + data: { message: 'Happy New Year!' }, + repeatYear: true + }, + ], + onClick: function (target, cell, date, data) { + target.val(date.getFullYear() + ' - ' + + date.getMonth() + ' - ' + + date.getDate()); + + if (data != null) { + alert(data.message + '\n' + date); + } + } +}); + +$('#example4').glDatePicker( +{ + showAlways: true, + selectedDate: new Date(2013, 8, 5), + dowOffset: 3, + selectableYears: [2012, 2013, 2014], + selectableMonths: [8, 11], + selectableDOW: [1, 4, 6] +}); + +// Doing it in a single pass +var myDatePicker = $('#example1').glDatePicker( +{ + showAlways: true, + selectableDOW: [0, 2, 3] +}).glDatePicker(true); + +// Or you can do it with multiple calls +$('example1').glDatePicker( +{ + showAlways: true, + selectableDOW: [0, 2, 3] +}); + +// This example updates some options (calling render will re-generate the calendar) +$.extend(myDatePicker.options, +{ + cssName: 'darkneon', + allowMonthSelect: false, + allowYearSelect: false +}); +myDatePicker.render(); +myDatePicker.show(); diff --git a/gldatepicker/gldatepicker.d.ts b/gldatepicker/gldatepicker.d.ts new file mode 100644 index 000000000..232d30c78 --- /dev/null +++ b/gldatepicker/gldatepicker.d.ts @@ -0,0 +1,69 @@ +// Type definitions for glDatePicker 2.0 +// Project: http://glad.github.com/glDatePicker/ +// Definitions by: Dániel Tar https://github.com/qcz +// Definitions: https://github.com/borisyankov/DefinitelyTyped + +/// + +interface GlDatePickerOffset { + x: number; + y: number; +} + +interface GlDatePickerDate { + date: Date; + repeatMonth?: bool; + repeatYear?: bool; +} + +interface GlDatePickerDateRange { + from: Date; + to?: Date; + repeatYear?: bool; +} + +interface GlDatePickerSpecialDate extends GlDatePickerDate { + data?: any; + cssClass?: string; +} + +interface GlDatePickerOptions { + cssName?: string; + zIndex?: number; + borderSize?: number; + calendarOffset?: GlDatePickerOffset; + showAlways?: bool; + hideOnClick?: bool; + allowMonthSelect?: bool; + allowYearSelect?: bool; + todayDate?: Date; + selectedDate?: Date; + prevArrow?: string; + nextArrow?: string; + selectableDates?: GlDatePickerDate[]; + selectableDateRange?: GlDatePickerDateRange[]; + specialDates?: GlDatePickerSpecialDate[]; + selectableMonths?: number[]; + selectableYears?: number[]; + selectableDOW?: number[]; + monthNames?: string[]; + dowNames?: string[]; + dowOffset?: number; + onClick?: (inputElement: JQuery, cell: JQuery, date: Date, data: any) => void; + onHover?: (inputElement: JQuery, cell: JQuery, date: Date, data: any) => void; + onShow?: (calendar: JQuery) => void; + onHide?: (calendar: JQuery) => void; +} + +interface GlDatePicker { + options: GlDatePickerOptions; + + show(): void; + hide(): void; + render(renderCallback?: () => void): void; +} + +interface JQuery { + glDatePicker(options?: GlDatePickerOptions): JQuery; + glDatePicker(ret: bool): GlDatePicker; +} \ No newline at end of file diff --git a/jqrangeslider/jqrangeslider-tests.ts b/jqrangeslider/jqrangeslider-tests.ts new file mode 100644 index 000000000..37ffeb8ef --- /dev/null +++ b/jqrangeslider/jqrangeslider-tests.ts @@ -0,0 +1,157 @@ +/// +/// + +// Arrows +$("#arrowsExample").rangeSlider({ arrows: false }); +$("#arrowsExample").editRangeSlider({ arrows: false }); +$("#arrowsExample").dateRangeSlider({ arrows: false }); +// Bounds +$("#boundsExample").rangeSlider({ bounds: { min: 10, max: 90 } }); +$("#boundsExample").editRangeSlider({ bounds: { min: 10, max: 90 } }); +$("#boundsExample").dateRangeSlider({ + bounds: { + min: new Date(2012, 0, 1), + max: new Date(2012, 11, 31) + } +}); +// Default values +$("#defaultValuesExample").rangeSlider({ defaultValues: { min: 10, max: 90 } }); +$("#defaultValuesExample").editRangeSlider({ defaultValues: { min: 10, max: 90 } }); +$("#defaultValuesExample").dateRangeSlider({ + defaultValues: { + min: new Date(2012, 0, 1), + max: new Date(2012, 11, 31) + } +}); +// Delay out +$("#delayExample").rangeSlider({ + valueLabels: "change", + delayOut: 4000 +}); +$("#delayExample").editRangeSlider({ + valueLabels: "change", + delayOut: 4000 +}); +$("#delayExample").dateRangeSlider({ + valueLabels: "change", + delayOut: 4000 +}); +// Duration in/out +$("#durationExample").rangeSlider({ + valueLabels: "change", + durationIn: 1000, + durationOut: 1000 +}); +$("#defaultValuesExample").editRangeSlider({ + valueLabels: "change", + durationIn: 1000, + durationOut: 1000 +}); +$("#defaultValuesExample").dateRangeSlider({ + valueLabels: "change", + durationIn: 1000, + durationOut: 1000 +}); +// Formatter - JS-way +$("#formatterExample").rangeSlider({ + formatter: function (val) { + var value = Math.round(val * 5) / 5, + decimal = value - Math.round(val); + return decimal == 0 ? value.toString() + ".0" : value.toString(); + } +}); +$("#formatterExample").editRangeSlider({ + formatter: function (val) { + var value = Math.round(val * 5) / 5, + decimal = value - Math.round(val); + return decimal == 0 ? value.toString() + ".0" : value.toString(); + } +}); +$("#formatterExample").dateRangeSlider({ + formatter: function (val) { + var days = val.getDay(), + month = val.getMonth() + 1, + year = val.getYear(); + return days + "/" + month + "/" + year; + } +}); +// Formatter - TS-way +$("#formatterExample").rangeSlider({ + formatter: (val: number) => { + var value = Math.round(val * 5) / 5, + decimal = value - Math.round(val); + return decimal == 0 ? value.toString() + ".0" : value.toString(); + } +}); +$("#formatterExample").editRangeSlider({ + formatter: (val: number) => { + var value = Math.round(val * 5) / 5, + decimal = value - Math.round(val); + return decimal == 0 ? value.toString() + ".0" : value.toString(); + } +}); +$("#formatterExample").dateRangeSlider({ + formatter: (val: Date) => { + var days = val.getDay(), + month = val.getMonth() + 1, + year = val.getYear(); + return days + "/" + month + "/" + year; + } +}); +// Range +$("#rangeExample").rangeSlider({range: {min: 10, max: 40}}); +$("#rangeExample").editRangeSlider({range: {min: 10, max: 40}}); +$("#rangeExample").dateRangeSlider({ + range: { + min: { days: 2 }, + max: { days: 7 } + } +}); +$("#rangeExample").rangeSlider({range: {min: 10}}); +$("#rangeExample").rangeSlider({range: {min: 10, max: false}}); +$("#rangeExample").rangeSlider({range: false}); +$("#rangeExample").rangeSlider({range: {min: false, max: false}}); +$("#rangeExample").rangeSlider({range: {min: false}}); +// Step +$("#stepExample").rangeSlider({step: 10}); +$("#rangeExample").dateRangeSlider({ + step: { + days: 2 + } +}); +// Value labels +$("#valueLabelsExample").rangeSlider({valueLabels: "change"}); +$("#valueLabelsExample").dateRangeSlider({valueLabels: "change"}); +// Wheel mode +$("#wheelModeExample").rangeSlider({wheelMode: "zoom"}); +$("#wheelModeExample").rangeSlider({wheelMode: null}); +// Wheel speed +$("#wheelSpeedExample").rangeSlider({wheelMode: "scroll", wheelSpeed: 30}); +$("#wheelSpeedExample").dateRangeSlider({wheelMode: "scroll", wheelSpeed: 30}); + +// Get bounds +var basicSliderBounds: JQRangeSliderNumericRange = $("#slider").rangeSlider("bounds"); +console.log(basicSliderBounds.min + " " + basicSliderBounds.max); +var editSliderBounds: JQRangeSliderNumericRange = $("#editSlider").editRangeSlider("bounds"); +console.log(editSliderBounds.min + " " + editSliderBounds.max); +var dateSliderBounds: JQRangeSliderDateRange = $("#dateSlider").dateRangeSlider("bounds"); +console.log(dateSliderBounds.min.toString() + " " + dateSliderBounds.max.toString()); + +// Set bounds +$("#slider").rangeSlider("bounds", 10, 20); +$("#editSlider").editRangeSlider("bounds", 20, 100); +$("#dateSlider").dateRangeSlider("bounds", new Date(2012, 0, 1), new Date(2012, 0, 31)); + +// Get min/max +var basicSliderMin: number = $("#slider").rangeSlider("min"); +console.log(basicSliderMin); +var editSliderMin: number = $("#editSlider").editRangeSlider("min"); +console.log(editSliderMin); +var dateSliderMax: Date = $("#dateSlider").dateRangeSlider("max"); +console.log(dateSliderMax.toString()); + +// Set min/max +$("#slider").rangeSlider("min", 10); +$("#editSlider").editRangeSlider("min", 20); +$("#dateSlider").dateRangeSlider("max", new Date(2012, 1, 1)); + diff --git a/jqrangeslider/jqrangeslider.d.ts b/jqrangeslider/jqrangeslider.d.ts new file mode 100644 index 000000000..988b97fb6 --- /dev/null +++ b/jqrangeslider/jqrangeslider.d.ts @@ -0,0 +1,74 @@ +// Type definitions for jQRangeSlider 4.2.8 +// Project: http://ghusse.github.com/jQRangeSlider +// Definitions by: Dániel Tar https://github.com/qcz +// Definitions: https://github.com/borisyankov/DefinitelyTyped + +/// +/// + +interface JQRangeSliderNumericRange { + min?: number; + max?: number; +} + +interface JQRangeSliderDateRange { + min?: Date; + max?: Date; +} + +interface JQRangeSliderRangeLength { + min?: any; + max?: any; +} + +interface JQRangeSliderDateSteps { + years?: number; + months?: number; + weeks?: number; + days?: number; + hours?: number; + minutes?: number; + seconds?: number; +} + +interface JQRangeSliderOptions { + wheelMode?: string; // function of the wheel, "zoom", "scroll" or null + wheelSpeed?: number; // speed of the wheel scrolling + arrows?: bool; // hide the arrows or not + valueLabels?: string; // when to show value labels: "show" (always), "hide" (never) and "change" (only if slider changed) + durationIn?: number; // fade in length when displaying value labels (only when valueLabels = "change") + durationOut?: number; // fade out length when displaying value labels (only when valueLabels = "change") + delayOut?: number; // duration labels are shown after the user changed its values (only when valueLabels = "change") + range?: JQRangeSliderRangeLength; // lets you specify minimum and/or maximum range length +} + +interface JQNumericRangeSliderOptions extends JQRangeSliderOptions { + bounds?: JQRangeSliderNumericRange; // min and max values of the slider + defaultValues?: JQRangeSliderNumericRange; // values selected by default on construction + formatter?: (integer) => string; // customize displayed label text + step?: number; // allows to customize values rounding, and graphically render this rounding +} + +interface JQDateRangeSliderOptions extends JQRangeSliderOptions { + bounds?: JQRangeSliderDateRange; // min and max values of the slider + defaultValues?: JQRangeSliderDateRange; // values selected by default on construction + formatter?: (Date) => string; // customize displayed label text + step?: JQRangeSliderDateSteps; // allows to customize values rounding, and graphically render this rounding +} + +interface JQuery { + rangeSlider(options?: JQNumericRangeSliderOptions): JQuery; + rangeSlider(method: string): any; + rangeSlider(method: string, value: number): JQuery; + rangeSlider(method: string, min: number, max: number): JQuery; + + editRangeSlider(options?: JQNumericRangeSliderOptions): JQuery; + editRangeSlider(method: string): any; + editRangeSlider(method: string, value: number): JQuery; + editRangeSlider(method: string, min: number, max: number): JQuery; + + dateRangeSlider(options?: JQRangeSliderOptions): JQuery; + dateRangeSlider(method: string): any; + dateRangeSlider(method: string, value: Date): JQuery; + dateRangeSlider(method: string, min: Date, max: Date): JQuery; +} diff --git a/mousetrap/mousetrap-tests.ts b/mousetrap/mousetrap-tests.ts new file mode 100644 index 000000000..3eac1eef1 --- /dev/null +++ b/mousetrap/mousetrap-tests.ts @@ -0,0 +1,43 @@ +/// +/// + +Mousetrap.bind('4', function() { console.log('4'); }); +Mousetrap.bind("?", function() { console.log('show shortcuts!'); }); +Mousetrap.bind('esc', function() { console.log('escape'); }, 'keyup'); + +// combinations +Mousetrap.bind('command+shift+K', function() { console.log('command shift k'); }); + +// map multiple combinations to the same callback +Mousetrap.bind(['command+k', 'ctrl+k'], function() { + console.log('command k or control k'); + + // return false to prevent default browser behavior + // and stop event from bubbling + return false; +}); + +// gmail style sequences +Mousetrap.bind('g i', function() { console.log('go to inbox'); }); +Mousetrap.bind('* a', function() { console.log('select all'); }); + +// konami code! +Mousetrap.bind('up up down down left right left right b a enter', function() { + console.log('konami code'); +}); + +Mousetrap.bind(['ctrl+s', 'meta+s'], (e, combo) => { + if (e.preventDefault) { + e.preventDefault(); + } else { + // internet explorer + e.returnValue = false; + } +}); + +Mousetrap.unbind('?'); + +Mousetrap.trigger('esc'); +Mousetrap.trigger('esc', 'keyup'); + +Mousetrap.reset(); diff --git a/mousetrap/mousetrap.d.ts b/mousetrap/mousetrap.d.ts new file mode 100644 index 000000000..a81854c4f --- /dev/null +++ b/mousetrap/mousetrap.d.ts @@ -0,0 +1,21 @@ +// Type definitions for Mousetrap 1.2.2 +// Project: http://craig.is/killing/mice +// Definitions by: Dániel Tar https://github.com/qcz +// Definitions: https://github.com/borisyankov/DefinitelyTyped + +interface ExtendedKeyboardEvent extends KeyboardEvent { + returnValue: bool; // IE returnValue +} + +interface MousetrapStatic { + stopCallback: (e: ExtendedKeyboardEvent, element: Element, combo: string) => bool; + + bind(keys: string, callback: (e: ExtendedKeyboardEvent, combo: string) => any, action?: string): void; + bind(keyArray: string[], callback: (e: ExtendedKeyboardEvent, combo: string) => any, action?: string): void; + unbind(keys: string, action?: string): void; + unbind(keyArray: string[], action?: string): void; + trigger(keys: string, action?: string): void; + reset(): void; +} + +var Mousetrap: MousetrapStatic;