// Type definitions for materialize-css 1.0 // Project: http://materializecss.com/ // Definitions by: 胡玮文 // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped // TypeScript Version: 2.4 /// export = M; declare global { namespace M { class Autocomplete extends Component { /** * Get Instance */ static getInstance(elem: Element): Autocomplete; /** * Select a specific autocomplete options. * @param el Element of the autocomplete option. */ selectOption(el: Element): void; /** * Update autocomplete options data. * @param data Autocomplete options data object. */ updateData(data: AutocompleteData): void; /** * If the autocomplete is open. */ isOpen: boolean; /** * Number of matching autocomplete options. */ count: number; /** * Index of the current selected option. */ activeIndex: number; } interface AutocompleteData { [key: string]: string | null; } interface AutocompleteOptions { /** * Data object defining autocomplete options with optional icon strings. */ data: AutocompleteData; /** * Limit of results the autocomplete shows. * @default infinity */ limit: number; /** * Callback for when autocompleted. */ onAutocomplete: (this: Autocomplete, text: string) => void; /** * Minimum number of characters before autocomplete starts. * @default 1 */ minLength: number; /** * Sort function that defines the order of the list of autocomplete options. */ sortFunction: (a: string, b: string, inputText: string) => number; } class DatePicker extends Component implements Openable { /** * Get Instance */ static getInstance(elem: Element): DatePicker; /** * If the picker is open. */ isOpen: boolean; /** * The selected Date. */ date: Date; /** * Open datepicker */ open(): void; /** * Close datepicker */ close(): void; /** * Gets a string representation of the selected date */ toString(): string; /** * Set a date on the datepicker * @param date Date to set on the datepicker. */ setDate(date?: Date): void; /** * Change date view to a specific date on the datepicker * @param date Date to show on the datepicker. */ gotoDate(date: Date): void; } interface DatePickerOptions { /** * The date output format for the input field value. * @default 'mmm dd, yyyy' */ format: string; /** * Used to create date object from current input string. */ parse: (value: string, format: string) => Date; /** * The initial date to view when first opened. */ defaultDate: Date; /** * Make the `defaultDate` the initial selected value * @default false */ setDefaultDate: boolean; /** * Prevent selection of any date on the weekend. * @default false */ disableWeekends: boolean; /** * Custom function to disable certain days. */ disableDayFn: (day: Date) => boolean; /** * First day of week (0: Sunday, 1: Monday etc). * @default 0 */ firstDay: number; /** * The earliest date that can be selected. */ minDate: Date; /** * The latest date that can be selected. */ maxDate: Date; /** * Number of years either side, or array of upper/lower range. * @default 10 */ yearRange: number | number[]; /** * Changes Datepicker to RTL. * @default false */ isRTL: boolean; /** * Show month after year in Datepicker title. * @default false */ showMonthAfterYear: boolean; /** * Render days of the calendar grid that fall in the next or previous month. * @default false */ showDaysInNextAndPreviousMonths: boolean; /** * Specify a selector for a DOM element to render the calendar in, by default it will be placed before the input. */ container: string; /** * An array of string returned by `Date.toDateString()`, indicating there are events in the specified days. * @default [] */ events: string[]; /** * Callback function when date is selected, first parameter is the newly selected date. */ onSelect: (this: DatePicker, selectedDate: Date) => void; /** * Callback function when Datepicker is opened */ onOpen: (this: DatePicker) => void; /** * Callback function when Datepicker is closed */ onClose: (this: DatePicker) => void; /** * Callback function when Datepicker HTML is refreshed */ onDraw: (this: DatePicker) => void; } class FloatingActionButton extends Component implements Openable { /** * Get Instance */ static getInstance(elem: Element): FloatingActionButton; /** * Open FAB */ open(): void; /** * Close FAB */ close(): void; /** * Describes open/close state of FAB. */ isOpen: boolean; } interface FloatingActionButtonOptions { /** * Direction FAB menu opens * @default "top" */ direction: "top" | "right" | "buttom" | "left"; /** * true: FAB menu appears on hover, false: FAB menu appears on click * @default true */ hoverEnabled: boolean; /** * Enable transit the FAB into a toolbar on click * @default false */ toolbarEnabled: boolean; } class Sidenav extends Component implements Openable { /** * Get Instance */ static getInstance(elem: Element): Sidenav; /** * Opens Sidenav */ open(): void; /** * Closes Sidenav */ close(): void; /** * Describes open/close state of Sidenav */ isOpen: boolean; /** * Describes if sidenav is fixed */ isFixed: boolean; /** * Describes if Sidenav is being dragged */ isDragged: boolean; } /** * Options for the Sidenav */ interface SidenavOptions { /** * Side of screen on which Sidenav appears * @default 'left' */ edge: 'left' | 'right'; /** * Allow swipe gestures to open/close Sidenav * @default true */ draggable: boolean; /** * Length in ms of enter transition * @default 250 */ inDuration: number; /** * Length in ms of exit transition * @default 200 */ outDuration: number; /** * Function called when sidenav starts entering */ onOpenStart: (this: Sidenav, elem: Element) => void; /** * Function called when sidenav finishes entering */ onOpenEnd: (this: Sidenav, elem: Element) => void; /** * Function called when sidenav starts exiting */ onCloseStart: (this: Sidenav, elem: Element) => void; /** * Function called when sidenav finishes exiting */ onCloseEnd: (this: Sidenav, elem: Element) => void; } class Tabs extends Component { /** * Get Instance */ static getInstance(elem: Element): Tabs; /** * Show tab content that corresponds to the tab with the id * @param tabId The id of the tab that you want to switch to */ select(tabId: string): void; /** * The index of tab that is currently shown */ index: number; } /** * Options for the Tabs */ interface TabsOptions { /** * Transition duration in milliseconds. * @default 300 */ duration: number; /** * Callback for when a new tab content is shown */ onShow: (this: Tabs, newContent: Element) => void; /** * Set to true to enable swipeable tabs. This also uses the responsiveThreshold option * @default false */ swipeable: boolean; /** * The maximum width of the screen, in pixels, where the swipeable functionality initializes. * @default infinity */ responsiveThreshold: number; } class TimePicker extends Component { /** * Get Instance */ static getInstance(elem: Element): TimePicker; /** * If the picker is open. */ isOpen: boolean; /** * The selected time. */ time: string; /** * Open timepicker */ open(): void; /** * Close timepicker */ close(): void; /** * Show hours or minutes view on timepicker * @param view The name of the view you want to switch to, 'hours' or 'minutes'. */ showView(view: "hours" | "minutes"): void; } interface TimePickerOptions { /** * Duration of the transition from/to the hours/minutes view. * @default 350 */ duration: number; /** * Specify a selector for a DOM element to render the calendar in, by default it will be placed before the input. */ container: string; /** * Default time to set on the timepicker 'now' or '13:14' * @default 'now'; */ defaultTime: string; /** * Millisecond offset from the defaultTime. * @default 0 */ fromnow: number; /** * Done button text. * @default 'Ok' */ doneText: string; /** * Clear button text. * @default 'Clear' */ clearText: string; /** * Cancel button text. * @default 'Cancel' */ cancelText: string; /** * Automatically close picker when minute is selected. * @default false; */ autoClose: boolean; /** * Use 12 hour AM/PM clock instead of 24 hour clock. * @default true */ twelveHour: boolean; /** * Vibrate device when dragging clock hand. * @default true */ vibrate: boolean; } class Modal extends Component implements Openable { /** * Get Instance */ static getInstance(elem: Element): Modal; /** * Open modal */ open(): void; /** * Close modal */ close(): void; /** * If the modal is open. */ isOpen: boolean; /** * ID of the modal element */ id: string; } /** * Options for the Modal */ interface ModalOptions { /** * Opacity of the modal overlay. * @default 0.5 */ opacity: number; /** * Transition in duration in milliseconds. * @default 250 */ inDuration: number; /** * Transition out duration in milliseconds. * @default 250 */ outDuration: number; /** * Callback function called when modal is finished entering. */ ready: (this: Modal, elem: Element, openingTrigger: Element) => void; /** * Callback function called when modal is finished exiting. */ complete: (this: Modal, elem: Element) => void; /** * Allow modal to be dismissed by keyboard or overlay click. * @default true */ dismissible: boolean; /** * Starting top offset * @default '4%' */ startingTop: string; /** * Ending top offset * @default '10%' */ endingTop: string; } class Toast extends ComponentBase { /** * Get Instance */ static getInstance(elem: Element): Toast; /** * Describes the current pan state of the Toast. */ panning: boolean; /** * The remaining amount of time in ms that the toast will stay before dismissal. */ timeRemaining: number; /** * remove a specific toast */ dismiss(): void; /** * dismiss all toasts */ static dismissAll(): void; } interface ToastOptions { /** * The HTML content of the Toast. */ html: string; /** * Length in ms the Toast stays before dismissal. * @default 4000 */ displayLength: number; /** * Transition in duration in milliseconds. * @default 300 */ inDuration: number; /** * Transition out duration in milliseconds. * @default 375 */ outDuration: number; /** * Classes to be added to the toast element. */ classes: string; /** * Callback function called when toast is dismissed. */ completeCallback: () => void; /** * The percentage of the toast's width it takes for a drag to dismiss a Toast. * @default 0.8 */ activationPercent: number; } /** * Create a toast */ function toast(options: Partial): Toast; class Tooltip extends Component implements Openable { /** * Get Instance */ static getInstance(elem: Element): Tooltip; /** * Show tooltip. */ open(): void; /** * Hide tooltip. */ close(): void; /** * If tooltip is open. */ isOpen: boolean; /** * If tooltip is hovered. */ isHovered: boolean; } interface TooltipOptions { /** * Delay time before tooltip disappears. * @default 0 */ exitDelay: number; /** * Delay time before tooltip appears. * @default 200 */ enterDelay: number; /** * Can take regular text or HTML strings. * @default null */ html: string | null; /** * Set distance tooltip appears away from its activator excluding transitionMovement. * @default 5 */ margin: number; /** * Enter transition duration. * @default 300 */ inDuration: number; /** * Exit transition duration. * @default 250 */ outDuration: number; /** * Set the direction of the tooltip. * @default 'bottom' */ position: 'top' | 'right' | 'bottom' | 'left'; /** * Amount in px that the tooltip moves during its transition. * @default 10 */ transitionMovement: number; } function updateTextFields(): void; class CharacterCounter extends Component { /** * Get Instance */ static getInstance(elem: Element): CharacterCounter; } abstract class Component extends ComponentBase { /** * Construct component instance and set everything up */ constructor(elem: Element, options?: Partial); /** * Destroy plugin instance and teardown */ destroy(): void; } abstract class ComponentBase { constructor(options?: Partial); /** * The DOM element the plugin was initialized with */ el: Element; /** * The options the instance was initialized with */ options: TOptions; } interface Openable { isOpen: boolean; open(): void; close(): void; } } interface JQuery { // Pick to check methods exist. autocomplete(method: keyof Pick): JQuery; autocomplete(method: keyof Pick, el: Element): JQuery; autocomplete(method: keyof Pick, data: M.AutocompleteData): JQuery; autocomplete(options?: Partial): JQuery; datepicker(method: keyof Pick): JQuery; datepicker(method: keyof Pick, date?: Date): JQuery; datepicker(method: keyof Pick, date: Date): JQuery; datepicker(options?: Partial): JQuery; floatingActionButton(method: keyof Pick): JQuery; floatingActionButton(options?: Partial): JQuery; sidenav(method: keyof Pick): JQuery; sidenav(options?: Partial): JQuery; tabs(method: keyof Pick): JQuery; tabs(method: keyof Pick, tabId: string): JQuery; tabs(options?: Partial): JQuery; timepicker(method: keyof Pick): JQuery; timepicker(method: keyof Pick, view: "hours" | "minutes"): JQuery; timepicker(options?: Partial): JQuery; // Toast can not be invoked using jQuery. tooltip(method: keyof Pick): JQuery; tooltip(options?: Partial): JQuery; modal(method: keyof Pick): JQuery; modal(options?: Partial): JQuery; // tslint:disable-next-line unified-signatures characterCounter(method: keyof Pick): JQuery; characterCounter(): JQuery; } }