@material/web 1.0.1 → 1.0.2-nightly.6a1fb38.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/all.d.ts +2 -0
- package/all.js +2 -0
- package/all.js.map +1 -1
- package/button/elevated-button.js +5 -1
- package/button/elevated-button.js.map +1 -1
- package/button/internal/_elevation.scss +32 -32
- package/button/internal/_icon.scss +22 -23
- package/button/internal/_outlined-button.scss +21 -19
- package/button/internal/_shared.scss +84 -77
- package/button/internal/_touch-target.scss +4 -0
- package/button/internal/button.d.ts +7 -11
- package/button/internal/button.js +52 -38
- package/button/internal/button.js.map +1 -1
- package/button/internal/elevated-button.d.ts +1 -1
- package/button/internal/elevated-button.js +1 -1
- package/button/internal/elevated-button.js.map +1 -1
- package/button/internal/filled-button.d.ts +1 -1
- package/button/internal/filled-button.js +1 -1
- package/button/internal/filled-button.js.map +1 -1
- package/button/internal/filled-tonal-button.d.ts +1 -1
- package/button/internal/filled-tonal-button.js +1 -1
- package/button/internal/filled-tonal-button.js.map +1 -1
- package/button/internal/outlined-button.d.ts +1 -1
- package/button/internal/outlined-button.js +2 -2
- package/button/internal/outlined-button.js.map +1 -1
- package/button/internal/outlined-styles.css.js +1 -1
- package/button/internal/outlined-styles.css.js.map +1 -1
- package/button/internal/shared-elevation-styles.css.js +1 -1
- package/button/internal/shared-elevation-styles.css.js.map +1 -1
- package/button/internal/shared-styles.css.js +1 -1
- package/button/internal/shared-styles.css.js.map +1 -1
- package/checkbox/internal/checkbox.d.ts +16 -23
- package/checkbox/internal/checkbox.js +38 -52
- package/checkbox/internal/checkbox.js.map +1 -1
- package/chips/filter-chip.js +5 -1
- package/chips/filter-chip.js.map +1 -1
- package/chips/harness.js.map +1 -1
- package/chips/input-chip.js +6 -1
- package/chips/input-chip.js.map +1 -1
- package/chips/internal/assist-chip.js +8 -4
- package/chips/internal/assist-chip.js.map +1 -1
- package/chips/internal/chip-set.js +6 -4
- package/chips/internal/chip-set.js.map +1 -1
- package/chips/internal/chip.d.ts +3 -0
- package/chips/internal/chip.js +7 -5
- package/chips/internal/chip.js.map +1 -1
- package/chips/internal/filter-chip.d.ts +2 -0
- package/chips/internal/filter-chip.js +11 -5
- package/chips/internal/filter-chip.js.map +1 -1
- package/chips/internal/input-chip.d.ts +2 -0
- package/chips/internal/input-chip.js +10 -4
- package/chips/internal/input-chip.js.map +1 -1
- package/chips/internal/multi-action-chip.js.map +1 -1
- package/chips/internal/trailing-icons.d.ts +1 -1
- package/chips/internal/trailing-icons.js +6 -5
- package/chips/internal/trailing-icons.js.map +1 -1
- package/common.d.ts +2 -0
- package/common.js +2 -0
- package/common.js.map +1 -1
- package/dialog/harness.js +1 -2
- package/dialog/harness.js.map +1 -1
- package/dialog/internal/_dialog.scss +1 -1
- package/dialog/internal/animations.js +14 -12
- package/dialog/internal/animations.js.map +1 -1
- package/dialog/internal/dialog-styles.css.js +1 -1
- package/dialog/internal/dialog-styles.css.js.map +1 -1
- package/dialog/internal/dialog.d.ts +6 -6
- package/dialog/internal/dialog.js +24 -24
- package/dialog/internal/dialog.js.map +1 -1
- package/fab/harness.js.map +1 -1
- package/fab/internal/fab.js.map +1 -1
- package/fab/internal/shared.js +10 -11
- package/fab/internal/shared.js.map +1 -1
- package/field/harness.js.map +1 -1
- package/field/internal/_content.scss +185 -174
- package/field/internal/_filled-field.scss +147 -136
- package/field/internal/_label.scss +83 -72
- package/field/internal/_outlined-field.scss +276 -262
- package/field/internal/_supporting-text.scss +53 -42
- package/field/internal/field.js +26 -22
- package/field/internal/field.js.map +1 -1
- package/field/internal/filled-styles.css.js +1 -1
- package/field/internal/filled-styles.css.js.map +1 -1
- package/field/internal/outlined-styles.css.js +1 -1
- package/field/internal/outlined-styles.css.js.map +1 -1
- package/field/internal/shared-styles.css.js +1 -1
- package/field/internal/shared-styles.css.js.map +1 -1
- package/focus/internal/focus-ring.d.ts +2 -0
- package/focus/internal/focus-ring.js +3 -3
- package/focus/internal/focus-ring.js.map +1 -1
- package/icon/internal/_icon.scss +7 -4
- package/icon/internal/icon-styles.css.js +1 -1
- package/icon/internal/icon-styles.css.js.map +1 -1
- package/iconbutton/internal/icon-button.d.ts +9 -4
- package/iconbutton/internal/icon-button.js +35 -22
- package/iconbutton/internal/icon-button.js.map +1 -1
- package/internal/aria/aria.d.ts +4 -26
- package/internal/aria/aria.js +10 -28
- package/internal/aria/aria.js.map +1 -1
- package/internal/aria/delegate.js +2 -2
- package/internal/aria/delegate.js.map +1 -1
- package/internal/controller/attachable-controller.js +3 -5
- package/internal/controller/attachable-controller.js.map +1 -1
- package/internal/controller/form-submitter.d.ts +3 -5
- package/internal/controller/form-submitter.js +5 -7
- package/internal/controller/form-submitter.js.map +1 -1
- package/internal/controller/is-rtl.js +2 -2
- package/internal/controller/is-rtl.js.map +1 -1
- package/internal/controller/string-converter.js +1 -1
- package/internal/controller/string-converter.js.map +1 -1
- package/internal/motion/animation.js.map +1 -1
- package/labs/behaviors/element-internals.d.ts +45 -0
- package/labs/behaviors/element-internals.js +50 -0
- package/labs/behaviors/element-internals.js.map +1 -0
- package/labs/behaviors/focusable.d.ts +39 -0
- package/labs/behaviors/focusable.js +82 -0
- package/labs/behaviors/focusable.js.map +1 -0
- package/labs/behaviors/form-associated.d.ts +199 -0
- package/labs/behaviors/form-associated.js +155 -0
- package/labs/behaviors/form-associated.js.map +1 -0
- package/labs/behaviors/mixin.d.ts +54 -0
- package/labs/behaviors/mixin.js +7 -0
- package/labs/behaviors/mixin.js.map +1 -0
- package/labs/card/_elevated-card.scss +6 -0
- package/labs/card/_filled-card.scss +6 -0
- package/labs/card/_outlined-card.scss +6 -0
- package/labs/card/elevated-card.d.ts +18 -0
- package/labs/card/elevated-card.js +21 -0
- package/labs/card/elevated-card.js.map +1 -0
- package/labs/card/filled-card.d.ts +18 -0
- package/labs/card/filled-card.js +21 -0
- package/labs/card/filled-card.js.map +1 -0
- package/labs/card/internal/_elevated-card.scss +35 -0
- package/labs/card/internal/_filled-card.scss +35 -0
- package/labs/card/internal/_outlined-card.scss +39 -0
- package/labs/card/internal/_shared.scss +40 -0
- package/labs/card/internal/card.d.ts +13 -0
- package/labs/card/internal/card.js +20 -0
- package/labs/card/internal/card.js.map +1 -0
- package/labs/card/internal/elevated-styles.css.js +9 -0
- package/labs/card/internal/elevated-styles.css.js.map +1 -0
- package/labs/card/internal/elevated-styles.scss +10 -0
- package/labs/card/internal/filled-styles.css.js +9 -0
- package/labs/card/internal/filled-styles.css.js.map +1 -0
- package/labs/card/internal/filled-styles.scss +10 -0
- package/labs/card/internal/outlined-styles.css.js +9 -0
- package/labs/card/internal/outlined-styles.css.js.map +1 -0
- package/labs/card/internal/outlined-styles.scss +10 -0
- package/labs/card/internal/shared-styles.css.js +9 -0
- package/labs/card/internal/shared-styles.css.js.map +1 -0
- package/labs/card/internal/shared-styles.scss +10 -0
- package/labs/card/outlined-card.d.ts +18 -0
- package/labs/card/outlined-card.js +21 -0
- package/labs/card/outlined-card.js.map +1 -0
- package/labs/item/internal/item.js +8 -8
- package/labs/item/internal/item.js.map +1 -1
- package/labs/navigationbar/internal/constants.js.map +1 -1
- package/labs/navigationbar/internal/navigation-bar.d.ts +3 -0
- package/labs/navigationbar/internal/navigation-bar.js +18 -11
- package/labs/navigationbar/internal/navigation-bar.js.map +1 -1
- package/labs/navigationdrawer/internal/navigation-drawer-modal.d.ts +3 -0
- package/labs/navigationdrawer/internal/navigation-drawer-modal.js +10 -3
- package/labs/navigationdrawer/internal/navigation-drawer-modal.js.map +1 -1
- package/labs/navigationdrawer/internal/navigation-drawer.d.ts +3 -0
- package/labs/navigationdrawer/internal/navigation-drawer.js +8 -1
- package/labs/navigationdrawer/internal/navigation-drawer.js.map +1 -1
- package/labs/navigationtab/harness.js.map +1 -1
- package/labs/navigationtab/internal/navigation-tab.d.ts +6 -0
- package/labs/navigationtab/internal/navigation-tab.js +43 -27
- package/labs/navigationtab/internal/navigation-tab.js.map +1 -1
- package/labs/navigationtab/internal/state.js.map +1 -1
- package/labs/segmentedbutton/internal/segmented-button.d.ts +3 -0
- package/labs/segmentedbutton/internal/segmented-button.js +26 -12
- package/labs/segmentedbutton/internal/segmented-button.js.map +1 -1
- package/labs/segmentedbuttonset/internal/segmented-button-set.d.ts +5 -0
- package/labs/segmentedbuttonset/internal/segmented-button-set.js +14 -9
- package/labs/segmentedbuttonset/internal/segmented-button-set.js.map +1 -1
- package/list/harness.d.ts +1 -1
- package/list/harness.js.map +1 -1
- package/list/internal/list-controller.d.ts +1 -1
- package/list/internal/list-controller.js +7 -3
- package/list/internal/list-controller.js.map +1 -1
- package/list/internal/list-navigation-helpers.js.map +1 -1
- package/list/internal/list.d.ts +2 -2
- package/list/internal/list.js +8 -6
- package/list/internal/list.js.map +1 -1
- package/list/internal/listitem/harness.d.ts +1 -1
- package/list/internal/listitem/harness.js.map +1 -1
- package/list/internal/listitem/list-item.d.ts +3 -2
- package/list/internal/listitem/list-item.js +19 -20
- package/list/internal/listitem/list-item.js.map +1 -1
- package/list/list-item.d.ts +4 -12
- package/list/list-item.js +4 -12
- package/list/list-item.js.map +1 -1
- package/menu/harness.js.map +1 -1
- package/menu/internal/_menu.scss +12 -1
- package/menu/internal/controllers/menuItemController.js +9 -4
- package/menu/internal/controllers/menuItemController.js.map +1 -1
- package/menu/internal/controllers/shared.d.ts +9 -1
- package/menu/internal/controllers/shared.js +4 -4
- package/menu/internal/controllers/shared.js.map +1 -1
- package/menu/internal/controllers/surfacePositionController.d.ts +15 -2
- package/menu/internal/controllers/surfacePositionController.js +124 -54
- package/menu/internal/controllers/surfacePositionController.js.map +1 -1
- package/menu/internal/controllers/typeaheadController.js +19 -14
- package/menu/internal/controllers/typeaheadController.js.map +1 -1
- package/menu/internal/menu-styles.css.js +1 -1
- package/menu/internal/menu-styles.css.js.map +1 -1
- package/menu/internal/menu.d.ts +43 -12
- package/menu/internal/menu.js +124 -57
- package/menu/internal/menu.js.map +1 -1
- package/menu/internal/menuitem/harness.js.map +1 -1
- package/menu/internal/menuitem/menu-item.d.ts +3 -2
- package/menu/internal/menuitem/menu-item.js +18 -19
- package/menu/internal/menuitem/menu-item.js.map +1 -1
- package/menu/internal/submenu/sub-menu.d.ts +8 -8
- package/menu/internal/submenu/sub-menu.js +31 -22
- package/menu/internal/submenu/sub-menu.js.map +1 -1
- package/menu/internal/types.js.map +1 -1
- package/package.json +1 -1
- package/progress/internal/_circular-progress.scss +2 -2
- package/progress/internal/_linear-progress.scss +1 -1
- package/progress/internal/circular-progress-styles.css.js +1 -1
- package/progress/internal/circular-progress-styles.css.js.map +1 -1
- package/progress/internal/circular-progress.js +11 -10
- package/progress/internal/circular-progress.js.map +1 -1
- package/progress/internal/linear-progress-styles.css.js +1 -1
- package/progress/internal/linear-progress-styles.css.js.map +1 -1
- package/progress/internal/linear-progress.d.ts +1 -1
- package/progress/internal/linear-progress.js +3 -3
- package/progress/internal/linear-progress.js.map +1 -1
- package/progress/internal/progress.js +4 -2
- package/progress/internal/progress.js.map +1 -1
- package/radio/internal/radio.d.ts +11 -27
- package/radio/internal/radio.js +30 -54
- package/radio/internal/radio.js.map +1 -1
- package/radio/internal/single-selection-controller.js +1 -1
- package/radio/internal/single-selection-controller.js.map +1 -1
- package/ripple/internal/ripple.js +14 -9
- package/ripple/internal/ripple.js.map +1 -1
- package/select/filled-select.js +1 -2
- package/select/filled-select.js.map +1 -1
- package/select/harness.js +1 -1
- package/select/harness.js.map +1 -1
- package/select/internal/select.d.ts +25 -34
- package/select/internal/select.js +101 -91
- package/select/internal/select.js.map +1 -1
- package/select/internal/selectoption/select-option.d.ts +8 -6
- package/select/internal/selectoption/select-option.js +23 -22
- package/select/internal/selectoption/select-option.js.map +1 -1
- package/select/internal/selectoption/selectOptionController.js +1 -1
- package/select/internal/selectoption/selectOptionController.js.map +1 -1
- package/select/outlined-select.js +1 -2
- package/select/outlined-select.js.map +1 -1
- package/slider/harness.js +5 -5
- package/slider/harness.js.map +1 -1
- package/slider/internal/slider.d.ts +16 -25
- package/slider/internal/slider.js +110 -114
- package/slider/internal/slider.js.map +1 -1
- package/switch/internal/switch.d.ts +9 -25
- package/switch/internal/switch.js +31 -57
- package/switch/internal/switch.js.map +1 -1
- package/tabs/harness.js +3 -3
- package/tabs/harness.js.map +1 -1
- package/tabs/internal/_tab.scss +27 -35
- package/tabs/internal/primary-tab.d.ts +0 -2
- package/tabs/internal/tab-styles.css.js +1 -1
- package/tabs/internal/tab-styles.css.js.map +1 -1
- package/tabs/internal/tab.d.ts +4 -5
- package/tabs/internal/tab.js +34 -22
- package/tabs/internal/tab.js.map +1 -1
- package/tabs/internal/tabs.d.ts +6 -2
- package/tabs/internal/tabs.js +18 -11
- package/tabs/internal/tabs.js.map +1 -1
- package/textfield/filled-text-field.js +1 -2
- package/textfield/filled-text-field.js.map +1 -1
- package/textfield/harness.js +3 -2
- package/textfield/harness.js.map +1 -1
- package/textfield/internal/text-field.d.ts +26 -18
- package/textfield/internal/text-field.js +81 -58
- package/textfield/internal/text-field.js.map +1 -1
- package/textfield/outlined-text-field.js +1 -2
- package/textfield/outlined-text-field.js.map +1 -1
- package/tokens/_index.scss +3 -0
- package/tokens/_md-comp-elevated-card.scss +63 -0
- package/tokens/_md-comp-filled-card.scss +63 -0
- package/tokens/_md-comp-icon.scss +2 -0
- package/tokens/_md-comp-outlined-card.scss +69 -0
- package/tokens/_md-comp-test-table.scss +1 -0
- package/internal/controller/element-internals.d.ts +0 -35
- package/internal/controller/element-internals.js +0 -24
- package/internal/controller/element-internals.js.map +0 -1
- package/select/internal/filled-forced-colors-styles.css.js +0 -9
- package/select/internal/filled-forced-colors-styles.css.js.map +0 -1
- package/select/internal/filled-forced-colors-styles.scss +0 -29
- package/select/internal/outlined-forced-colors-styles.css.js +0 -9
- package/select/internal/outlined-forced-colors-styles.css.js.map +0 -1
- package/select/internal/outlined-forced-colors-styles.scss +0 -29
- package/textfield/internal/filled-forced-colors-styles.css.js +0 -9
- package/textfield/internal/filled-forced-colors-styles.css.js.map +0 -1
- package/textfield/internal/filled-forced-colors-styles.scss +0 -29
- package/textfield/internal/outlined-forced-colors-styles.css.js +0 -9
- package/textfield/internal/outlined-forced-colors-styles.css.js.map +0 -1
- package/textfield/internal/outlined-forced-colors-styles.scss +0 -29
- /package/{select/internal/filled-forced-colors-styles.css.d.ts → labs/card/internal/elevated-styles.css.d.ts} +0 -0
- /package/{select/internal/outlined-forced-colors-styles.css.d.ts → labs/card/internal/filled-styles.css.d.ts} +0 -0
- /package/{textfield/internal/filled-forced-colors-styles.css.d.ts → labs/card/internal/outlined-styles.css.d.ts} +0 -0
- /package/{textfield/internal/outlined-forced-colors-styles.css.d.ts → labs/card/internal/shared-styles.css.d.ts} +0 -0
|
@@ -7,18 +7,22 @@ import '../../elevation/elevation.js';
|
|
|
7
7
|
import '../../focus/md-focus-ring.js';
|
|
8
8
|
import '../../ripple/ripple.js';
|
|
9
9
|
import { LitElement, PropertyValues } from 'lit';
|
|
10
|
+
import { getFormValue } from '../../labs/behaviors/form-associated.js';
|
|
11
|
+
declare const sliderBaseClass: import("../../labs/behaviors/mixin.js").MixinReturn<(abstract new (...args: any[]) => import("../../labs/behaviors/element-internals.js").WithElementInternals) & typeof LitElement & import("../../labs/behaviors/form-associated.js").FormAssociatedConstructor, import("../../labs/behaviors/form-associated.js").FormAssociated>;
|
|
10
12
|
/**
|
|
11
13
|
* Slider component.
|
|
14
|
+
*
|
|
15
|
+
*
|
|
16
|
+
* @fires change {Event} The native `change` event on
|
|
17
|
+
* [`<input>`](https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/change_event)
|
|
18
|
+
* --bubbles
|
|
19
|
+
* @fires input {InputEvent} The native `input` event on
|
|
20
|
+
* [`<input>`](https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/input_event)
|
|
21
|
+
* --bubbles --composed
|
|
12
22
|
*/
|
|
13
|
-
export declare class Slider extends
|
|
23
|
+
export declare class Slider extends sliderBaseClass {
|
|
14
24
|
/** @nocollapse */
|
|
15
25
|
static shadowRootOptions: ShadowRootInit;
|
|
16
|
-
/** @nocollapse */
|
|
17
|
-
static readonly formAssociated = true;
|
|
18
|
-
/**
|
|
19
|
-
* Whether or not the slider is disabled.
|
|
20
|
-
*/
|
|
21
|
-
disabled: boolean;
|
|
22
26
|
/**
|
|
23
27
|
* The slider minimum value
|
|
24
28
|
*/
|
|
@@ -92,11 +96,6 @@ export declare class Slider extends LitElement {
|
|
|
92
96
|
* slideable handles for the valueStart and valueEnd properties.
|
|
93
97
|
*/
|
|
94
98
|
range: boolean;
|
|
95
|
-
/**
|
|
96
|
-
* The HTML name to use in form submission.
|
|
97
|
-
*/
|
|
98
|
-
get name(): string;
|
|
99
|
-
set name(name: string);
|
|
100
99
|
/**
|
|
101
100
|
* The HTML name to use in form submission for a range slider's starting
|
|
102
101
|
* value. Use `name` instead if both the start and end values should use the
|
|
@@ -111,14 +110,6 @@ export declare class Slider extends LitElement {
|
|
|
111
110
|
*/
|
|
112
111
|
get nameEnd(): string;
|
|
113
112
|
set nameEnd(name: string);
|
|
114
|
-
/**
|
|
115
|
-
* The associated form element with which this element's value will submit.
|
|
116
|
-
*/
|
|
117
|
-
get form(): HTMLFormElement;
|
|
118
|
-
/**
|
|
119
|
-
* The labels this element is associated with.
|
|
120
|
-
*/
|
|
121
|
-
get labels(): NodeList;
|
|
122
113
|
private readonly inputStart;
|
|
123
114
|
private readonly handleStart;
|
|
124
115
|
private readonly rippleStart;
|
|
@@ -136,13 +127,11 @@ export declare class Slider extends LitElement {
|
|
|
136
127
|
private get renderAriaLabelEnd();
|
|
137
128
|
private get renderAriaValueTextEnd();
|
|
138
129
|
private ripplePointerId;
|
|
139
|
-
private
|
|
130
|
+
private isRedispatchingEvent;
|
|
140
131
|
private action?;
|
|
141
|
-
private readonly internals;
|
|
142
132
|
constructor();
|
|
143
133
|
focus(): void;
|
|
144
134
|
protected willUpdate(changed: PropertyValues): void;
|
|
145
|
-
protected update(changed: PropertyValues<Slider>): void;
|
|
146
135
|
protected updated(changed: PropertyValues): void;
|
|
147
136
|
protected render(): import("lit-html").TemplateResult<1>;
|
|
148
137
|
private renderTrack;
|
|
@@ -180,8 +169,10 @@ export declare class Slider extends LitElement {
|
|
|
180
169
|
private clampAction;
|
|
181
170
|
private handleInput;
|
|
182
171
|
private handleChange;
|
|
183
|
-
|
|
172
|
+
disabled: boolean;
|
|
173
|
+
name: string;
|
|
174
|
+
[getFormValue](): string | FormData;
|
|
184
175
|
formResetCallback(): void;
|
|
185
|
-
/** @private */
|
|
186
176
|
formStateRestoreCallback(state: string | Array<[string, string]> | null): void;
|
|
187
177
|
}
|
|
178
|
+
export {};
|
|
@@ -13,22 +13,25 @@ import { classMap } from 'lit/directives/class-map.js';
|
|
|
13
13
|
import { styleMap } from 'lit/directives/style-map.js';
|
|
14
14
|
import { when } from 'lit/directives/when.js';
|
|
15
15
|
import { requestUpdateOnAriaChange } from '../../internal/aria/delegate.js';
|
|
16
|
-
import { dispatchActivationClick, isActivationClick, redispatchEvent } from '../../internal/controller/events.js';
|
|
16
|
+
import { dispatchActivationClick, isActivationClick, redispatchEvent, } from '../../internal/controller/events.js';
|
|
17
|
+
import { mixinElementInternals } from '../../labs/behaviors/element-internals.js';
|
|
18
|
+
import { getFormValue, mixinFormAssociated, } from '../../labs/behaviors/form-associated.js';
|
|
17
19
|
// Disable warning for classMap with destructuring
|
|
18
20
|
// tslint:disable:no-implicit-dictionary-conversion
|
|
21
|
+
// Separate variable needed for closure.
|
|
22
|
+
const sliderBaseClass = mixinFormAssociated(mixinElementInternals(LitElement));
|
|
19
23
|
/**
|
|
20
24
|
* Slider component.
|
|
25
|
+
*
|
|
26
|
+
*
|
|
27
|
+
* @fires change {Event} The native `change` event on
|
|
28
|
+
* [`<input>`](https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/change_event)
|
|
29
|
+
* --bubbles
|
|
30
|
+
* @fires input {InputEvent} The native `input` event on
|
|
31
|
+
* [`<input>`](https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/input_event)
|
|
32
|
+
* --bubbles --composed
|
|
21
33
|
*/
|
|
22
|
-
export class Slider extends
|
|
23
|
-
/**
|
|
24
|
-
* The HTML name to use in form submission.
|
|
25
|
-
*/
|
|
26
|
-
get name() {
|
|
27
|
-
return this.getAttribute('name') ?? '';
|
|
28
|
-
}
|
|
29
|
-
set name(name) {
|
|
30
|
-
this.setAttribute('name', name);
|
|
31
|
-
}
|
|
34
|
+
export class Slider extends sliderBaseClass {
|
|
32
35
|
/**
|
|
33
36
|
* The HTML name to use in form submission for a range slider's starting
|
|
34
37
|
* value. Use `name` instead if both the start and end values should use the
|
|
@@ -51,29 +54,18 @@ export class Slider extends LitElement {
|
|
|
51
54
|
set nameEnd(name) {
|
|
52
55
|
this.setAttribute('name-end', name);
|
|
53
56
|
}
|
|
54
|
-
/**
|
|
55
|
-
* The associated form element with which this element's value will submit.
|
|
56
|
-
*/
|
|
57
|
-
get form() {
|
|
58
|
-
return this.internals.form;
|
|
59
|
-
}
|
|
60
|
-
/**
|
|
61
|
-
* The labels this element is associated with.
|
|
62
|
-
*/
|
|
63
|
-
get labels() {
|
|
64
|
-
return this.internals.labels;
|
|
65
|
-
}
|
|
66
57
|
// Note: start aria-* properties are only applied when range=true, which is
|
|
67
58
|
// why they do not need to handle both cases.
|
|
68
59
|
get renderAriaLabelStart() {
|
|
69
60
|
// Needed for closure conformance
|
|
70
61
|
const { ariaLabel } = this;
|
|
71
|
-
return this.ariaLabelStart ||
|
|
72
|
-
|
|
62
|
+
return (this.ariaLabelStart ||
|
|
63
|
+
(ariaLabel && `${ariaLabel} start`) ||
|
|
64
|
+
this.valueLabelStart ||
|
|
65
|
+
String(this.valueStart));
|
|
73
66
|
}
|
|
74
67
|
get renderAriaValueTextStart() {
|
|
75
|
-
return this.ariaValueTextStart || this.valueLabelStart ||
|
|
76
|
-
String(this.valueStart);
|
|
68
|
+
return (this.ariaValueTextStart || this.valueLabelStart || String(this.valueStart));
|
|
77
69
|
}
|
|
78
70
|
// Note: end aria-* properties are applied for single and range sliders, which
|
|
79
71
|
// is why it needs to handle `this.range` (while start aria-* properties do
|
|
@@ -82,15 +74,16 @@ export class Slider extends LitElement {
|
|
|
82
74
|
// Needed for closure conformance
|
|
83
75
|
const { ariaLabel } = this;
|
|
84
76
|
if (this.range) {
|
|
85
|
-
return this.ariaLabelEnd ||
|
|
86
|
-
|
|
77
|
+
return (this.ariaLabelEnd ||
|
|
78
|
+
(ariaLabel && `${ariaLabel} end`) ||
|
|
79
|
+
this.valueLabelEnd ||
|
|
80
|
+
String(this.valueEnd));
|
|
87
81
|
}
|
|
88
82
|
return ariaLabel || this.valueLabel || String(this.value);
|
|
89
83
|
}
|
|
90
84
|
get renderAriaValueTextEnd() {
|
|
91
85
|
if (this.range) {
|
|
92
|
-
return this.ariaValueTextEnd || this.valueLabelEnd ||
|
|
93
|
-
String(this.valueEnd);
|
|
86
|
+
return (this.ariaValueTextEnd || this.valueLabelEnd || String(this.valueEnd));
|
|
94
87
|
}
|
|
95
88
|
// Needed for conformance
|
|
96
89
|
const { ariaValueText } = this;
|
|
@@ -98,10 +91,6 @@ export class Slider extends LitElement {
|
|
|
98
91
|
}
|
|
99
92
|
constructor() {
|
|
100
93
|
super();
|
|
101
|
-
/**
|
|
102
|
-
* Whether or not the slider is disabled.
|
|
103
|
-
*/
|
|
104
|
-
this.disabled = false;
|
|
105
94
|
/**
|
|
106
95
|
* The slider minimum value
|
|
107
96
|
*/
|
|
@@ -172,9 +161,8 @@ export class Slider extends LitElement {
|
|
|
172
161
|
this.handlesOverlapping = false;
|
|
173
162
|
// used in synthetic events generated to control ripple hover state.
|
|
174
163
|
this.ripplePointerId = 1;
|
|
175
|
-
// flag to
|
|
176
|
-
this.
|
|
177
|
-
this.internals = this /* needed for closure */.attachInternals();
|
|
164
|
+
// flag to prevent processing of re-dispatched input event.
|
|
165
|
+
this.isRedispatchingEvent = false;
|
|
178
166
|
if (!isServer) {
|
|
179
167
|
this.addEventListener('click', (event) => {
|
|
180
168
|
if (!isActivationClick(event) || !this.inputEnd) {
|
|
@@ -189,13 +177,15 @@ export class Slider extends LitElement {
|
|
|
189
177
|
this.inputEnd?.focus();
|
|
190
178
|
}
|
|
191
179
|
willUpdate(changed) {
|
|
192
|
-
this.renderValueStart = changed.has('valueStart')
|
|
193
|
-
this.valueStart
|
|
194
|
-
this.inputStart?.valueAsNumber;
|
|
180
|
+
this.renderValueStart = changed.has('valueStart')
|
|
181
|
+
? this.valueStart
|
|
182
|
+
: this.inputStart?.valueAsNumber;
|
|
195
183
|
const endValueChanged = (changed.has('valueEnd') && this.range) || changed.has('value');
|
|
196
|
-
this.renderValueEnd = endValueChanged
|
|
197
|
-
|
|
198
|
-
|
|
184
|
+
this.renderValueEnd = endValueChanged
|
|
185
|
+
? this.range
|
|
186
|
+
? this.valueEnd
|
|
187
|
+
: this.value
|
|
188
|
+
: this.inputEnd?.valueAsNumber;
|
|
199
189
|
// manually handle ripple hover state since the handle is pointer events
|
|
200
190
|
// none.
|
|
201
191
|
if (changed.get('handleStartHover') !== undefined) {
|
|
@@ -205,21 +195,6 @@ export class Slider extends LitElement {
|
|
|
205
195
|
this.toggleRippleHover(this.rippleEnd, this.handleEndHover);
|
|
206
196
|
}
|
|
207
197
|
}
|
|
208
|
-
update(changed) {
|
|
209
|
-
if (changed.has('value') || changed.has('range') ||
|
|
210
|
-
changed.has('valueStart') || changed.has('valueEnd')) {
|
|
211
|
-
if (this.range) {
|
|
212
|
-
const data = new FormData();
|
|
213
|
-
data.append(this.nameStart, String(this.valueStart));
|
|
214
|
-
data.append(this.nameEnd, String(this.valueEnd));
|
|
215
|
-
this.internals.setFormValue(data);
|
|
216
|
-
}
|
|
217
|
-
else {
|
|
218
|
-
this.internals.setFormValue(String(this.value));
|
|
219
|
-
}
|
|
220
|
-
}
|
|
221
|
-
super.update(changed);
|
|
222
|
-
}
|
|
223
198
|
updated(changed) {
|
|
224
199
|
// Validate input rendered value and re-render if necessary. This ensures
|
|
225
200
|
// the rendred handle stays in sync with the input thumb which is used for
|
|
@@ -250,8 +225,10 @@ export class Slider extends LitElement {
|
|
|
250
225
|
else {
|
|
251
226
|
this.value ?? (this.value = this.renderValueEnd);
|
|
252
227
|
}
|
|
253
|
-
if (changed.has('range') ||
|
|
254
|
-
changed.has('
|
|
228
|
+
if (changed.has('range') ||
|
|
229
|
+
changed.has('renderValueStart') ||
|
|
230
|
+
changed.has('renderValueEnd') ||
|
|
231
|
+
this.isUpdatePending) {
|
|
255
232
|
// Only check if the handle nubs are overlapping, as the ripple touch
|
|
256
233
|
// target extends subtantially beyond the boundary of the handle nub.
|
|
257
234
|
const startNub = this.handleStart?.querySelector('.handleNub');
|
|
@@ -265,9 +242,9 @@ export class Slider extends LitElement {
|
|
|
265
242
|
render() {
|
|
266
243
|
const step = this.step === 0 ? 1 : this.step;
|
|
267
244
|
const range = Math.max(this.max - this.min, step);
|
|
268
|
-
const startFraction = this.range
|
|
269
|
-
((
|
|
270
|
-
0;
|
|
245
|
+
const startFraction = this.range
|
|
246
|
+
? ((this.renderValueStart ?? this.min) - this.min) / range
|
|
247
|
+
: 0;
|
|
271
248
|
const endFraction = ((this.renderValueEnd ?? this.min) - this.min) / range;
|
|
272
249
|
const containerStyles = {
|
|
273
250
|
// for clipping inputs and active track.
|
|
@@ -300,70 +277,72 @@ export class Slider extends LitElement {
|
|
|
300
277
|
const handleStartProps = {
|
|
301
278
|
start: true,
|
|
302
279
|
hover: this.handleStartHover,
|
|
303
|
-
label: labelStart
|
|
280
|
+
label: labelStart,
|
|
304
281
|
};
|
|
305
282
|
const handleEndProps = {
|
|
306
283
|
start: false,
|
|
307
284
|
hover: this.handleEndHover,
|
|
308
|
-
label: labelEnd
|
|
285
|
+
label: labelEnd,
|
|
309
286
|
};
|
|
310
287
|
const handleContainerClasses = {
|
|
311
|
-
hover: this.handleStartHover || this.handleEndHover
|
|
288
|
+
hover: this.handleStartHover || this.handleEndHover,
|
|
312
289
|
};
|
|
313
|
-
return html `
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
<div class="handleContainer ${classMap(handleContainerClasses)}">
|
|
324
|
-
${when(this.range, () => this.renderHandle(handleStartProps))}
|
|
325
|
-
${this.renderHandle(handleEndProps)}
|
|
326
|
-
</div>
|
|
290
|
+
return html ` <div
|
|
291
|
+
class="container ${classMap(containerClasses)}"
|
|
292
|
+
style=${styleMap(containerStyles)}>
|
|
293
|
+
${when(this.range, () => this.renderInput(inputStartProps))}
|
|
294
|
+
${this.renderInput(inputEndProps)} ${this.renderTrack()}
|
|
295
|
+
<div class="handleContainerPadded">
|
|
296
|
+
<div class="handleContainerBlock">
|
|
297
|
+
<div class="handleContainer ${classMap(handleContainerClasses)}">
|
|
298
|
+
${when(this.range, () => this.renderHandle(handleStartProps))}
|
|
299
|
+
${this.renderHandle(handleEndProps)}
|
|
327
300
|
</div>
|
|
328
301
|
</div>
|
|
329
|
-
</div
|
|
302
|
+
</div>
|
|
303
|
+
</div>`;
|
|
330
304
|
}
|
|
331
305
|
renderTrack() {
|
|
332
306
|
return html `
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
307
|
+
<div class="track"></div>
|
|
308
|
+
${this.ticks ? html `<div class="tickmarks"></div>` : nothing}
|
|
309
|
+
`;
|
|
336
310
|
}
|
|
337
311
|
renderLabel(value) {
|
|
338
312
|
return html `<div class="label" aria-hidden="true">
|
|
339
|
-
|
|
340
|
-
|
|
313
|
+
<span class="labelContent" part="label">${value}</span>
|
|
314
|
+
</div>`;
|
|
341
315
|
}
|
|
342
|
-
renderHandle({ start, hover, label }) {
|
|
316
|
+
renderHandle({ start, hover, label, }) {
|
|
343
317
|
const onTop = !this.disabled && start === this.startOnTop;
|
|
344
318
|
const isOverlapping = !this.disabled && this.handlesOverlapping;
|
|
345
319
|
const name = start ? 'start' : 'end';
|
|
346
|
-
return html `<div
|
|
320
|
+
return html `<div
|
|
321
|
+
class="handle ${classMap({
|
|
347
322
|
[name]: true,
|
|
348
323
|
hover,
|
|
349
324
|
onTop,
|
|
350
|
-
isOverlapping
|
|
325
|
+
isOverlapping,
|
|
351
326
|
})}">
|
|
352
327
|
<div class="handleNub"><md-elevation></md-elevation></div>
|
|
353
328
|
${when(this.labeled, () => this.renderLabel(label))}
|
|
354
329
|
<md-focus-ring part="focus-ring" for=${name}></md-focus-ring>
|
|
355
|
-
<md-ripple
|
|
330
|
+
<md-ripple
|
|
331
|
+
for=${name}
|
|
332
|
+
class=${name}
|
|
333
|
+
?disabled=${this.disabled}></md-ripple>
|
|
356
334
|
</div>`;
|
|
357
335
|
}
|
|
358
|
-
renderInput({ start, value, ariaLabel, ariaValueText, ariaMin, ariaMax }) {
|
|
336
|
+
renderInput({ start, value, ariaLabel, ariaValueText, ariaMin, ariaMax, }) {
|
|
359
337
|
// Slider requires min/max set to the overall min/max for both inputs.
|
|
360
338
|
// This is reported to screen readers, which is why we need aria-valuemin
|
|
361
339
|
// and aria-valuemax.
|
|
362
340
|
const name = start ? `start` : `end`;
|
|
363
|
-
return html `<input
|
|
341
|
+
return html `<input
|
|
342
|
+
type="range"
|
|
364
343
|
class="${classMap({
|
|
365
344
|
start,
|
|
366
|
-
end: !start
|
|
345
|
+
end: !start,
|
|
367
346
|
})}"
|
|
368
347
|
@focus=${this.handleFocus}
|
|
369
348
|
@pointerdown=${this.handleDown}
|
|
@@ -385,7 +364,7 @@ export class Slider extends LitElement {
|
|
|
385
364
|
.value=${String(value)}
|
|
386
365
|
.tabIndex=${start ? 1 : 0}
|
|
387
366
|
aria-label=${ariaLabel || nothing}
|
|
388
|
-
aria-valuetext=${ariaValueText}
|
|
367
|
+
aria-valuetext=${ariaValueText} />`;
|
|
389
368
|
}
|
|
390
369
|
async toggleRippleHover(ripple, hovering) {
|
|
391
370
|
const rippleEl = await ripple;
|
|
@@ -394,10 +373,16 @@ export class Slider extends LitElement {
|
|
|
394
373
|
}
|
|
395
374
|
// TODO(b/269799771): improve slider ripple connection
|
|
396
375
|
if (hovering) {
|
|
397
|
-
rippleEl.handlePointerenter(new PointerEvent('pointerenter', {
|
|
376
|
+
rippleEl.handlePointerenter(new PointerEvent('pointerenter', {
|
|
377
|
+
isPrimary: true,
|
|
378
|
+
pointerId: this.ripplePointerId,
|
|
379
|
+
}));
|
|
398
380
|
}
|
|
399
381
|
else {
|
|
400
|
-
rippleEl.handlePointerleave(new PointerEvent('pointerleave', {
|
|
382
|
+
rippleEl.handlePointerleave(new PointerEvent('pointerleave', {
|
|
383
|
+
isPrimary: true,
|
|
384
|
+
pointerId: this.ripplePointerId,
|
|
385
|
+
}));
|
|
401
386
|
}
|
|
402
387
|
}
|
|
403
388
|
handleFocus(event) {
|
|
@@ -405,13 +390,16 @@ export class Slider extends LitElement {
|
|
|
405
390
|
}
|
|
406
391
|
startAction(event) {
|
|
407
392
|
const target = event.target;
|
|
408
|
-
const fixed =
|
|
393
|
+
const fixed = target === this.inputStart ? this.inputEnd : this.inputStart;
|
|
409
394
|
this.action = {
|
|
410
395
|
canFlip: event.type === 'pointerdown',
|
|
411
396
|
flipped: false,
|
|
412
397
|
target,
|
|
413
398
|
fixed,
|
|
414
|
-
values: new Map([
|
|
399
|
+
values: new Map([
|
|
400
|
+
[target, target.valueAsNumber],
|
|
401
|
+
[fixed, fixed?.valueAsNumber],
|
|
402
|
+
]),
|
|
415
403
|
};
|
|
416
404
|
}
|
|
417
405
|
finishAction(event) {
|
|
@@ -486,8 +474,9 @@ export class Slider extends LitElement {
|
|
|
486
474
|
}
|
|
487
475
|
const { target, fixed } = this.action;
|
|
488
476
|
const isStart = target === this.inputStart;
|
|
489
|
-
return isStart
|
|
490
|
-
target.valueAsNumber
|
|
477
|
+
return isStart
|
|
478
|
+
? target.valueAsNumber > fixed.valueAsNumber
|
|
479
|
+
: target.valueAsNumber < fixed.valueAsNumber;
|
|
491
480
|
}
|
|
492
481
|
// if start/end start coincident and the first drag input would e.g. move
|
|
493
482
|
// start > end, avoid clamping and "flip" to use the other input
|
|
@@ -532,7 +521,7 @@ export class Slider extends LitElement {
|
|
|
532
521
|
}
|
|
533
522
|
handleInput(event) {
|
|
534
523
|
// avoid processing a re-dispatched event
|
|
535
|
-
if (this.
|
|
524
|
+
if (this.isRedispatchingEvent) {
|
|
536
525
|
return;
|
|
537
526
|
}
|
|
538
527
|
let stopPropagation = false;
|
|
@@ -563,9 +552,9 @@ export class Slider extends LitElement {
|
|
|
563
552
|
}
|
|
564
553
|
// ensure event path is correct when flipped.
|
|
565
554
|
if (redispatch) {
|
|
566
|
-
this.
|
|
555
|
+
this.isRedispatchingEvent = true;
|
|
567
556
|
redispatchEvent(target, event);
|
|
568
|
-
this.
|
|
557
|
+
this.isRedispatchingEvent = false;
|
|
569
558
|
}
|
|
570
559
|
}
|
|
571
560
|
handleChange(event) {
|
|
@@ -573,14 +562,22 @@ export class Slider extends LitElement {
|
|
|
573
562
|
// clamped values; note, this only occurs for keyboard
|
|
574
563
|
const changeTarget = event.target;
|
|
575
564
|
const { target, values } = this.action ?? {};
|
|
576
|
-
const squelch =
|
|
565
|
+
const squelch = target && target.valueAsNumber === values.get(changeTarget);
|
|
577
566
|
if (!squelch) {
|
|
578
567
|
redispatchEvent(this, event);
|
|
579
568
|
}
|
|
580
569
|
// ensure keyboard triggered change clears action.
|
|
581
570
|
this.finishAction(event);
|
|
582
571
|
}
|
|
583
|
-
|
|
572
|
+
[getFormValue]() {
|
|
573
|
+
if (this.range) {
|
|
574
|
+
const data = new FormData();
|
|
575
|
+
data.append(this.nameStart, String(this.valueStart));
|
|
576
|
+
data.append(this.nameEnd, String(this.valueEnd));
|
|
577
|
+
return data;
|
|
578
|
+
}
|
|
579
|
+
return String(this.value);
|
|
580
|
+
}
|
|
584
581
|
formResetCallback() {
|
|
585
582
|
if (this.range) {
|
|
586
583
|
const valueStart = this.getAttribute('value-start');
|
|
@@ -592,7 +589,6 @@ export class Slider extends LitElement {
|
|
|
592
589
|
const value = this.getAttribute('value');
|
|
593
590
|
this.value = value !== null ? Number(value) : undefined;
|
|
594
591
|
}
|
|
595
|
-
/** @private */
|
|
596
592
|
formStateRestoreCallback(state) {
|
|
597
593
|
if (Array.isArray(state)) {
|
|
598
594
|
const [[, valueStart], [, valueEnd]] = state;
|
|
@@ -609,12 +605,10 @@ export class Slider extends LitElement {
|
|
|
609
605
|
requestUpdateOnAriaChange(Slider);
|
|
610
606
|
})();
|
|
611
607
|
/** @nocollapse */
|
|
612
|
-
Slider.shadowRootOptions = {
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
property({ type: Boolean, reflect: true })
|
|
617
|
-
], Slider.prototype, "disabled", void 0);
|
|
608
|
+
Slider.shadowRootOptions = {
|
|
609
|
+
...LitElement.shadowRootOptions,
|
|
610
|
+
delegatesFocus: true,
|
|
611
|
+
};
|
|
618
612
|
__decorate([
|
|
619
613
|
property({ type: Number })
|
|
620
614
|
], Slider.prototype, "min", void 0);
|
|
@@ -712,7 +706,9 @@ function isOverlapping(elA, elB) {
|
|
|
712
706
|
}
|
|
713
707
|
const a = elA.getBoundingClientRect();
|
|
714
708
|
const b = elB.getBoundingClientRect();
|
|
715
|
-
return !(a.top > b.bottom ||
|
|
709
|
+
return !(a.top > b.bottom ||
|
|
710
|
+
a.right < b.left ||
|
|
711
|
+
a.bottom < b.top ||
|
|
716
712
|
a.left > b.right);
|
|
717
713
|
}
|
|
718
714
|
//# sourceMappingURL=slider.js.map
|