| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240 |
- /**
- * @license
- * Copyright 2020 Google Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
- import { EventType, SpecificEventListener } from '@material/base/types';
- import { Thumb, TickMark } from './types';
- /**
- * Defines the shape of the adapter expected by the foundation.
- * Implement this adapter for your framework of choice to delegate updates to
- * the component in your framework of choice. See architecture documentation
- * for more details.
- * https://github.com/material-components/material-components-web/blob/master/docs/code/architecture.md
- */
- export interface MDCSliderAdapter {
- /**
- * @return Returns true if the slider root element has the given class.
- */
- hasClass(className: string): boolean;
- /**
- * Adds the given class to the slider root element.
- */
- addClass(className: string): void;
- /**
- * Removes the given class from the slider root element.
- */
- removeClass(className: string): void;
- /**
- * @return Returns the given attribute value on the slider root element.
- */
- getAttribute(attribute: string): string | null;
- /**
- * Adds the class to the given thumb element.
- */
- addThumbClass(className: string, thumb: Thumb): void;
- /**
- * Removes the class from the given thumb element.
- */
- removeThumbClass(className: string, thumb: Thumb): void;
- /**
- * - If thumb is `Thumb.START`, returns the value property on the start input
- * (for range slider variant).
- * - If thumb is `Thumb.END`, returns the value property on the end input (or
- * only input for single point slider).
- */
- getInputValue(thumb: Thumb): string;
- /**
- * - If thumb is `Thumb.START`, sets the value property on the start input
- * (for range slider variant).
- * - If thumb is `Thumb.END`, sets the value property on the end input (or
- * only input for single point slider).
- */
- setInputValue(value: string, thumb: Thumb): void;
- /**
- * - If thumb is `Thumb.START`, returns the attribute value on the start input
- * (for range slider variant).
- * - If thumb is `Thumb.END`, returns the attribute value on the end input (or
- * only input for single point slider).
- */
- getInputAttribute(attribute: string, thumb: Thumb): string | null;
- /**
- * - If thumb is `Thumb.START`, sets the attribute on the start input
- * (for range slider variant).
- * - If thumb is `Thumb.END`, sets the attribute on the end input (or
- * only input for single point slider).
- */
- setInputAttribute(attribute: string, value: string, thumb: Thumb): void;
- /**
- * - If thumb is `Thumb.START`, removes the attribute on the start input
- * (for range slider variant).
- * - If thumb is `Thumb.END`, removes the attribute on the end input (or
- * only input for single point slider).
- */
- removeInputAttribute(attribute: string, thumb: Thumb): void;
- /**
- * - If thumb is `Thumb.START`, focuses start input (range slider variant).
- * - If thumb is `Thumb.END`, focuses end input (or only input for single
- * point slider).
- */
- focusInput(thumb: Thumb): void;
- /**
- * @return Returns true if the given input is focused.
- */
- isInputFocused(thumb: Thumb): boolean;
- /**
- * @return Returns true if focus styles should be hidden for pointer events.
- */
- shouldHideFocusStylesForPointerEvents?(): boolean;
- /**
- * @return Returns the width of the given thumb knob.
- */
- getThumbKnobWidth(thumb: Thumb): number;
- /**
- * @return Returns the bounding client rect of the given thumb.
- */
- getThumbBoundingClientRect(thumb: Thumb): DOMRect;
- /**
- * @return Returns the bounding client rect for the slider root element.
- */
- getBoundingClientRect(): DOMRect;
- /**
- * @return Returns the width of the given value indicator container.
- */
- getValueIndicatorContainerWidth(thumb: Thumb): number;
- /**
- * @return Returns true if the root element is RTL, otherwise false
- */
- isRTL(): boolean;
- /**
- * Sets a style property of the thumb element to the passed value.
- * - If thumb is `Thumb.START`, sets style on the start thumb (for
- * range slider variant).
- * - If thumb is `Thumb.END`, sets style on the end thumb (or only thumb
- * for single point slider).
- */
- setThumbStyleProperty(propertyName: string, value: string, thumb: Thumb): void;
- /**
- * Removes the given style property from the thumb element.
- * - If thumb is `Thumb.START`, removes style from the start thumb (for
- * range slider variant).
- * - If thumb is `Thumb.END`, removes style from the end thumb (or only thumb
- * for single point slider).
- */
- removeThumbStyleProperty(propertyName: string, thumb: Thumb): void;
- /**
- * Sets a style property of the active track element to the passed value.
- */
- setTrackActiveStyleProperty(propertyName: string, value: string): void;
- /**
- * Removes the given style property from the active track element.
- */
- removeTrackActiveStyleProperty(propertyName: string): void;
- /**
- * Sets value indicator text based on the given value.
- * - If thumb is `Thumb.START`, updates value indicator on start thumb
- * (for range slider variant).
- * - If thumb is `Thumb.END`, updates value indicator on end thumb (or
- * only thumb for single point slider).
- */
- setValueIndicatorText(value: number, thumb: Thumb): void;
- /**
- * Returns a function that maps the slider value to the value of the
- * `aria-valuetext` attribute on the thumb element. If null, the
- * `aria-valuetext` attribute is unchanged when the value changes.
- */
- getValueToAriaValueTextFn(): ((value: number, thumb: Thumb) => string) | null;
- /**
- * Updates tick marks container element with tick mark elements and their
- * active/inactive classes, based on the given mappings:
- * - TickMark.ACTIVE => `cssClasses.TICK_MARK_ACTIVE`
- * - TickMark.INACTIVE => `cssClasses.TICK_MARK_INACTIVE`
- */
- updateTickMarks(tickMarks: TickMark[]): void;
- /**
- * Sets pointer capture on the slider root.
- * https://developer.mozilla.org/en-US/docs/Web/API/Element/setPointerCapture
- */
- setPointerCapture(pointerId: number): void;
- /**
- * Emits a `change` event from the slider root, indicating that the value
- * has been changed and committed on the given thumb, from a user event.
- * Mirrors the native `change` event:
- * https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/change_event
- */
- emitChangeEvent(value: number, thumb: Thumb): void;
- /**
- * Emits an `input` event from the slider root, indicating that the value
- * has been changed on the given thumb, from a user event.
- * Mirrors the native `input` event:
- * https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/input_event
- */
- emitInputEvent(value: number, thumb: Thumb): void;
- /**
- * Emits an event on drag start, containing the current value on the
- * thumb being dragged.
- */
- emitDragStartEvent(value: number, thumb: Thumb): void;
- /**
- * Emits an event on drag end, containing the final value on the
- * thumb that was dragged.
- */
- emitDragEndEvent(value: number, thumb: Thumb): void;
- /**
- * Registers an event listener on the root element.
- */
- registerEventHandler<K extends EventType>(evtType: K, handler: SpecificEventListener<K>): void;
- /**
- * Deregisters an event listener on the root element.
- */
- deregisterEventHandler<K extends EventType>(evtType: K, handler: SpecificEventListener<K>): void;
- /**
- * Registers an event listener on the given thumb element.
- */
- registerThumbEventHandler<K extends EventType>(thumb: Thumb, evtType: K, handler: SpecificEventListener<K>): void;
- /**
- * Deregisters an event listener on the given thumb element.
- */
- deregisterThumbEventHandler<K extends EventType>(thumb: Thumb, evtType: K, handler: SpecificEventListener<K>): void;
- /**
- * Registers an event listener on the given input element.
- */
- registerInputEventHandler<K extends EventType>(thumb: Thumb, evtType: K, handler: SpecificEventListener<K>): void;
- /**
- * Deregisters an event listener on the given input element.
- */
- deregisterInputEventHandler<K extends EventType>(thumb: Thumb, evtType: K, handler: SpecificEventListener<K>): void;
- /**
- * Registers an event listener on the body element.
- */
- registerBodyEventHandler<K extends EventType>(evtType: K, handler: SpecificEventListener<K>): void;
- /**
- * Deregisters an event listener on the body element.
- */
- deregisterBodyEventHandler<K extends EventType>(evtType: K, handler: SpecificEventListener<K>): void;
- /**
- * Registers an event listener on the window.
- */
- registerWindowEventHandler<K extends EventType>(evtType: K, handler: SpecificEventListener<K>): void;
- /**
- * Deregisters an event listener on the window.
- */
- deregisterWindowEventHandler<K extends EventType>(evtType: K, handler: SpecificEventListener<K>): void;
- }
|