diff --git a/CHANGELOG.md b/CHANGELOG.md index 069226f570c..7e054d1d960 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -36,8 +36,8 @@ * **text-field:** Helper text must now be nested within `mdc-text-field-helper-line` element. Wrappers must account for the new `character-counter` sub-component. See the Text Field documentation for examples and more information. * **menu:** Replaced menu's foundation methods `handleClick` and `handleSelection` with `handleItemAction` to handle list item action (i.e., list's custom event `MDCList:action`) -* **list:** Introduced new adapter method `getAttributeForElementIndex` to determine if target list item has `href` attribute and removed `followHref` adapter API. -* **chips:** Adds 3 new chips adapter methods: hasLeadingIcon, getRootBoundingClientRect, and getCheckmarkBoundingClientRect. Also adds a new foundation method: getDimensions. +* **list:** Removed adapter method `followHref` and used native anchor element behaviour to follow href on Enter & click. Components that use MDC List should use its new custom event. +* **chips:** Adds 3 new chips adapter methods: `hasLeadingIcon`, `getRootBoundingClientRect`, and `getCheckmarkBoundingClientRect`. Also adds a new foundation method: `getDimensions`. @@ -76,8 +76,8 @@ * **list:** Introduced new adapter `isFocusInsideList` for MDC List for improved accessibility. * **snackbar:** Snackbar's DOM and APIs have changed to match the latest design guidelines. See the Snackbar documentation for more information. -* **button:** We recommend placing each button's text label within a mdc-button__label element. This does not immediately break existing MDC Button usage, but updating is recommended to future-proof against potential upcoming changes. -* **tab:** MDCTabBar#getIndexOfTab(tab: MDCTab): boolean is now MDCTabBar#getIndexOfTabByID(id: string): boolean +* **button:** We recommend placing each button's text label within a `mdc-button__label` element. This does not immediately break existing MDC Button usage, but updating is recommended to future-proof against potential upcoming changes. +* **tab:** `MDCTabBar#getIndexOfTab(tab: MDCTab): number` is now `MDCTabBar#getIndexOfTabById(id: string): number` @@ -134,8 +134,8 @@ ### BREAKING CHANGES * **notched-outline:** The notched outline has been changed from using an SVG for the outline to using 3 div elements. This approach resolves initial rendering issues as well as inconsistencies between the different types of outlines. Please refer to the [Readme](./packages/mdc-notched-outline/README.md) or the [screenshot test pages](./test/screenshot/spec/mdc-textfield/classes) for details and examples. -* **checkbox:** The component is now responsible for calling MDCCheckboxFoundation#handleChange when the checked and indeterminate properties change. -* **list:** Replaced toggleCheckbox adapter method with setCheckedCheckboxOrRadioAtIndex and added 3 more new adapter methods for improved accessibility. +* **checkbox:** The component is now responsible for calling `MDCCheckboxFoundation#handleChange` when the checked and indeterminate properties change. +* **list:** Replaced toggleCheckbox adapter method with `setCheckedCheckboxOrRadioAtIndex` and added 3 more new adapter methods for improved accessibility. * **fab:** Fab now has 2 separate mixins - `mdc-fab-shape-radius` for regular / mini Fab variants & `mdc-fab-extended-shape-radius` for Extended FAB variant. diff --git a/docs/framework-wrappers.md b/docs/framework-wrappers.md index bb5c8f81511..5171d6dee13 100644 --- a/docs/framework-wrappers.md +++ b/docs/framework-wrappers.md @@ -6,7 +6,7 @@ Material Components for the web are architected to be adaptable to various major - [Material Web Components](https://github.com/material-components/material-components-web-components): MDC Web integration for Web Components (using [vanilla components](./integrating-into-frameworks.md#the-simple-approach-wrapping-mdc-web-vanilla-components)) - Additional third-party integrations - [Preact Material Components](https://github.com/prateekbh/preact-material-components) - - [RMWC: React Material Web Components](https://github.com/jamesmfriedman/rmwc) + - [RMWC: React Material Web Components](https://github.com/jamesmfriedman/rmwc) (using [foundations/adapters](./integrating-into-frameworks.md#the-advanced-approach-using-foundations-and-adapters).) - [Angular MDC](https://github.com/trimox/angular-mdc-web) - [Blox Material](https://blox.src.zone/material): Angular Integration Library. - [Vue MDC Adapter](https://github.com/stasson/vue-mdc-adapter): MDC Web Integration for Vue.js (using [foundations/adapters](./integrating-into-frameworks.md#the-advanced-approach-using-foundations-and-adapters).) diff --git a/packages/mdc-base/component.ts b/packages/mdc-base/component.ts index 5fadb3cc080..d39a498f570 100644 --- a/packages/mdc-base/component.ts +++ b/packages/mdc-base/component.ts @@ -51,6 +51,7 @@ class MDCComponent { this.initialSyncWithDOM(); } + /* istanbul ignore next: method param only exists for typing purposes; it does not need to be unit tested */ // tslint:disable-next-line:no-any a component can pass in anything it needs to initialize initialize(..._args: any[]) { // Subclasses can override this to do any additional setup work that would be considered part of a diff --git a/packages/mdc-button/_mixins.scss b/packages/mdc-button/_mixins.scss index 98112789c17..5d0583e2521 100644 --- a/packages/mdc-button/_mixins.scss +++ b/packages/mdc-button/_mixins.scss @@ -171,16 +171,18 @@ } @mixin mdc-button-shape-radius($radius, $rtl-reflexive: false, $query: mdc-feature-all()) { - $feat-structure: mdc-feature-create-target($query, structure); - - @include mdc-feature-targets($feat-structure) { - @include mdc-shape-radius(mdc-shape-resolve-percentage-radius($mdc-button-height, $radius), $rtl-reflexive); - } + @include mdc-shape-radius( + mdc-shape-resolve-percentage-radius($mdc-button-height, $radius), + $rtl-reflexive, + $query: $query + ); &.mdc-button--dense { - @include mdc-feature-targets($feat-structure) { - @include mdc-shape-radius(mdc-shape-resolve-percentage-radius($mdc-dense-button-height, $radius), $rtl-reflexive); - } + @include mdc-shape-radius( + mdc-shape-resolve-percentage-radius($mdc-dense-button-height, $radius), + $rtl-reflexive, + $query: $query + ); } } diff --git a/packages/mdc-card/_mixins.scss b/packages/mdc-card/_mixins.scss index 2265b26ca71..8d9b1b6b89b 100644 --- a/packages/mdc-card/_mixins.scss +++ b/packages/mdc-card/_mixins.scss @@ -291,11 +291,7 @@ } @mixin mdc-card-shape-radius($radius, $rtl-reflexive: false, $query: mdc-feature-all()) { - $feat-structure: mdc-feature-create-target($query, structure); - - @include mdc-feature-targets($feat-structure) { - @include mdc-shape-radius($radius, $rtl-reflexive); - } + @include mdc-shape-radius($radius, $rtl-reflexive, $query: $query); } @mixin mdc-card-media-aspect-ratio($x, $y, $query: mdc-feature-all()) { diff --git a/packages/mdc-card/package.json b/packages/mdc-card/package.json index 137ae6de4d1..384fa127679 100644 --- a/packages/mdc-card/package.json +++ b/packages/mdc-card/package.json @@ -14,6 +14,7 @@ }, "dependencies": { "@material/elevation": "^0.44.0", + "@material/feature-targeting": "^0.44.0", "@material/ripple": "^0.44.0", "@material/rtl": "^0.42.0", "@material/shape": "^0.43.0", diff --git a/packages/mdc-checkbox/foundation.ts b/packages/mdc-checkbox/foundation.ts index 8b2245af849..f99d745e833 100644 --- a/packages/mdc-checkbox/foundation.ts +++ b/packages/mdc-checkbox/foundation.ts @@ -58,8 +58,8 @@ class MDCCheckboxFoundation extends MDCFoundation { private animEndLatchTimer_ = 0; private enableAnimationEndHandler_ = false; - constructor(adapter: MDCCheckboxAdapter) { - super(Object.assign(MDCCheckboxFoundation.defaultAdapter, adapter)); + constructor(adapter?: Partial) { + super({...MDCCheckboxFoundation.defaultAdapter, ...adapter}); } init() { diff --git a/packages/mdc-checkbox/index.ts b/packages/mdc-checkbox/index.ts index 17635809cf0..61d378e0d6e 100644 --- a/packages/mdc-checkbox/index.ts +++ b/packages/mdc-checkbox/index.ts @@ -24,11 +24,11 @@ import {getCorrectEventName} from '@material/animation/index'; import {MDCComponent} from '@material/base/component'; import {EventType, SpecificEventListener} from '@material/base/index'; -import {MDCRipple, MDCRippleFoundation, RippleCapableSurface, util} from '@material/ripple/index'; +import {ponyfill} from '@material/dom/index'; +import {MDCRipple, MDCRippleFoundation, RippleCapableSurface} from '@material/ripple/index'; import {MDCSelectionControl} from '@material/selection-control/index'; import {MDCCheckboxFoundation} from './foundation'; -const {getMatchesProperty} = util; const CB_PROTO_PROPS = ['checked', 'indeterminate']; class MDCCheckbox extends MDCComponent implements MDCSelectionControl, RippleCapableSurface { @@ -87,18 +87,15 @@ class MDCCheckbox extends MDCComponent implements MDCSele } private initRipple_(): MDCRipple { - const MATCHES = getMatchesProperty(HTMLElement.prototype); - const adapter = Object.assign(MDCRipple.createAdapter(this), { - deregisterInteractionHandler: - (type: K, handler: SpecificEventListener) => - this.nativeCb_.removeEventListener(type, handler), - isSurfaceActive: () => this.nativeCb_[MATCHES as 'matches'](':active'), + const foundation = new MDCRippleFoundation({ + ...MDCRipple.createAdapter(this), + deregisterInteractionHandler: (evtType: K, handler: SpecificEventListener) => + this.nativeCb_.removeEventListener(evtType, handler), + isSurfaceActive: () => ponyfill.matches(this.nativeCb_, ':active'), isUnbounded: () => true, - registerInteractionHandler: - (type: K, handler: SpecificEventListener) => - this.nativeCb_.addEventListener(type, handler), + registerInteractionHandler: (evtType: K, handler: SpecificEventListener) => + this.nativeCb_.addEventListener(evtType, handler), }); - const foundation = new MDCRippleFoundation(adapter); return new MDCRipple(this.root_, foundation); } diff --git a/packages/mdc-checkbox/package.json b/packages/mdc-checkbox/package.json index 863edfa04cb..87e2ed16d4c 100644 --- a/packages/mdc-checkbox/package.json +++ b/packages/mdc-checkbox/package.json @@ -16,6 +16,8 @@ "dependencies": { "@material/animation": "^0.41.0", "@material/base": "^0.41.0", + "@material/dom": "^0.41.0", + "@material/feature-targeting": "^0.44.0", "@material/ripple": "^0.44.0", "@material/rtl": "^0.42.0", "@material/selection-control": "^0.44.0", diff --git a/packages/mdc-chips/_mixins.scss b/packages/mdc-chips/_mixins.scss index 4081bb82fea..8ccfe68c793 100644 --- a/packages/mdc-chips/_mixins.scss +++ b/packages/mdc-chips/_mixins.scss @@ -22,6 +22,7 @@ @import "@material/elevation/mixins"; @import "@material/ripple/mixins"; +@import "@material/rtl/mixins"; @import "@material/theme/functions"; @import "@material/theme/mixins"; @import "@material/shape/mixins"; @@ -174,7 +175,10 @@ $left: $mdc-chip-leading-icon-margin-left) { &.mdc-chip--selected .mdc-chip__checkmark, .mdc-chip__icon--leading:not(.mdc-chip__icon--leading-hidden) { - margin: $top $right $bottom $left; + @include mdc-rtl-reflexive-property(margin, $left, $right); + + margin-top: $top; + margin-bottom: $bottom; } } diff --git a/packages/mdc-chips/chip-set/foundation.ts b/packages/mdc-chips/chip-set/foundation.ts index aa833fa1321..b0106e386a9 100644 --- a/packages/mdc-chips/chip-set/foundation.ts +++ b/packages/mdc-chips/chip-set/foundation.ts @@ -47,8 +47,8 @@ class MDCChipSetFoundation extends MDCFoundation { */ private selectedChipIds_: string[] = []; - constructor(adapter: MDCChipSetAdapter) { - super(Object.assign(MDCChipSetFoundation.defaultAdapter, adapter)); + constructor(adapter?: Partial) { + super({...MDCChipSetFoundation.defaultAdapter, ...adapter}); } /** diff --git a/packages/mdc-chips/chip/foundation.ts b/packages/mdc-chips/chip/foundation.ts index 4808be5f83d..6d4e2e905c8 100644 --- a/packages/mdc-chips/chip/foundation.ts +++ b/packages/mdc-chips/chip/foundation.ts @@ -68,8 +68,8 @@ class MDCChipFoundation extends MDCFoundation { */ private shouldRemoveOnTrailingIconClick_ = true; - constructor(adapter: MDCChipAdapter) { - super(Object.assign(MDCChipFoundation.defaultAdapter, adapter)); + constructor(adapter?: Partial) { + super({...MDCChipFoundation.defaultAdapter, ...adapter}); } isSelected() { @@ -103,7 +103,7 @@ class MDCChipFoundation extends MDCFoundation { // The checkmark's width is initially set to 0, so use the checkmark's height as a proxy since the checkmark // should always be square. const width = rootRect.width + checkmarkRect.height; - return Object.assign({}, rootRect, {width}); + return {...rootRect, width}; } else { return rootRect; } @@ -172,7 +172,6 @@ class MDCChipFoundation extends MDCFoundation { /** * Handles an interaction event on the trailing icon element. This is used to * prevent the ripple from activating on interaction with the trailing icon. - * @param {!Event} evt */ handleTrailingIconInteraction(evt: MouseEvent | KeyboardEvent) { const isEnter = (evt as KeyboardEvent).key === 'Enter' || (evt as KeyboardEvent).keyCode === 13; diff --git a/packages/mdc-chips/chip/index.ts b/packages/mdc-chips/chip/index.ts index e4b2195e27f..26239c5c258 100644 --- a/packages/mdc-chips/chip/index.ts +++ b/packages/mdc-chips/chip/index.ts @@ -95,10 +95,10 @@ class MDCChip extends MDCComponent implements RippleCapableSu this.trailingIcon_ = this.root_.querySelector(strings.TRAILING_ICON_SELECTOR); this.checkmark_ = this.root_.querySelector(strings.CHECKMARK_SELECTOR); - const adapter = Object.assign(MDCRipple.createAdapter(this), { + this.ripple_ = rippleFactory(this.root_, new MDCRippleFoundation({ + ...MDCRipple.createAdapter(this), computeBoundingRect: () => this.foundation_.getDimensions(), - }); - this.ripple_ = rippleFactory(this.root_, new MDCRippleFoundation(adapter)); + })); } initialSyncWithDOM() { diff --git a/packages/mdc-dialog/adapter.ts b/packages/mdc-dialog/adapter.ts index a407c912fc3..fcb5be36963 100644 --- a/packages/mdc-dialog/adapter.ts +++ b/packages/mdc-dialog/adapter.ts @@ -38,7 +38,7 @@ interface MDCDialogAdapter { isContentScrollable(): boolean; areButtonsStacked(): boolean; - getActionFromEvent(event: Event): string | null; + getActionFromEvent(evt: Event): string | null; trapFocus(): void; releaseFocus(): void; diff --git a/packages/mdc-dialog/foundation.ts b/packages/mdc-dialog/foundation.ts index 6cc0c790b3a..db36b5e5765 100644 --- a/packages/mdc-dialog/foundation.ts +++ b/packages/mdc-dialog/foundation.ts @@ -69,8 +69,8 @@ class MDCDialogFoundation extends MDCFoundation { private autoStackButtons_ = true; private areButtonsStacked_ = false; - constructor(adapter: MDCDialogAdapter) { - super(Object.assign(MDCDialogFoundation.defaultAdapter, adapter)); + constructor(adapter?: Partial) { + super({...MDCDialogFoundation.defaultAdapter, ...adapter}); } init() { diff --git a/packages/mdc-dialog/index.ts b/packages/mdc-dialog/index.ts index ce36644600e..9bc52b289cd 100644 --- a/packages/mdc-dialog/index.ts +++ b/packages/mdc-dialog/index.ts @@ -110,11 +110,11 @@ class MDCDialog extends MDCComponent { const LAYOUT_EVENTS = ['resize', 'orientationchange']; this.handleOpening_ = () => { - LAYOUT_EVENTS.forEach((type) => window.addEventListener(type, this.handleLayout_)); + LAYOUT_EVENTS.forEach((evtType) => window.addEventListener(evtType, this.handleLayout_)); document.addEventListener('keydown', this.handleDocumentKeydown_); }; this.handleClosing_ = () => { - LAYOUT_EVENTS.forEach((type) => window.removeEventListener(type, this.handleLayout_)); + LAYOUT_EVENTS.forEach((evtType) => window.removeEventListener(evtType, this.handleLayout_)); document.removeEventListener('keydown', this.handleDocumentKeydown_); }; @@ -154,11 +154,11 @@ class MDCDialog extends MDCComponent { areButtonsStacked: () => util.areTopsMisaligned(this.buttons_), clickDefaultButton: () => this.defaultButton_ && this.defaultButton_.click(), eventTargetMatches: (target, selector) => target ? matches(target as Element, selector) : false, - getActionFromEvent: (event: Event) => { - if (!event.target) { + getActionFromEvent: (evt: Event) => { + if (!evt.target) { return ''; } - const element = closest(event.target as Element, `[${strings.ACTION_ATTRIBUTE}]`); + const element = closest(evt.target as Element, `[${strings.ACTION_ATTRIBUTE}]`); return element && element.getAttribute(strings.ACTION_ATTRIBUTE); }, hasClass: (className) => this.root_.classList.contains(className), diff --git a/packages/mdc-elevation/package.json b/packages/mdc-elevation/package.json index 3e2c18d01c9..081709b159e 100644 --- a/packages/mdc-elevation/package.json +++ b/packages/mdc-elevation/package.json @@ -14,6 +14,7 @@ }, "dependencies": { "@material/animation": "^0.41.0", + "@material/feature-targeting": "^0.44.0", "@material/theme": "^0.43.0" } } diff --git a/packages/mdc-floating-label/adapter.ts b/packages/mdc-floating-label/adapter.ts index 5203820b780..06427d70a8a 100644 --- a/packages/mdc-floating-label/adapter.ts +++ b/packages/mdc-floating-label/adapter.ts @@ -21,7 +21,7 @@ * THE SOFTWARE. */ -import {EventType, SpecificEventListener} from '@material/base'; +import {EventType, SpecificEventListener} from '@material/base/index'; /** * Defines the shape of the adapter expected by the foundation. @@ -49,12 +49,12 @@ interface MDCFloatingLabelAdapter { /** * Registers an event listener on the root element for a given event. */ - registerInteractionHandler(evtType: E, handler: SpecificEventListener): void; + registerInteractionHandler(evtType: K, handler: SpecificEventListener): void; /** * Deregisters an event listener on the root element for a given event. */ - deregisterInteractionHandler(evtType: E, handler: SpecificEventListener): void; + deregisterInteractionHandler(evtType: K, handler: SpecificEventListener): void; } export {MDCFloatingLabelAdapter as default, MDCFloatingLabelAdapter}; diff --git a/packages/mdc-floating-label/foundation.ts b/packages/mdc-floating-label/foundation.ts index 0450c136b1c..e6782d8d853 100644 --- a/packages/mdc-floating-label/foundation.ts +++ b/packages/mdc-floating-label/foundation.ts @@ -21,8 +21,8 @@ * THE SOFTWARE. */ -import {SpecificEventListener} from '@material/base'; import {MDCFoundation} from '@material/base/foundation'; +import {SpecificEventListener} from '@material/base/index'; import {MDCFloatingLabelAdapter} from './adapter'; import {cssClasses} from './constants'; @@ -48,7 +48,7 @@ class MDCFloatingLabelFoundation extends MDCFoundation private readonly shakeAnimationEndHandler_: SpecificEventListener<'animationend'>; - constructor(adapter: Partial = {}) { + constructor(adapter?: Partial) { super({...MDCFloatingLabelFoundation.defaultAdapter, ...adapter}); this.shakeAnimationEndHandler_ = () => this.handleShakeAnimationEnd_(); diff --git a/packages/mdc-form-field/adapter.ts b/packages/mdc-form-field/adapter.ts index a62c5e8947f..fa47c6908fd 100644 --- a/packages/mdc-form-field/adapter.ts +++ b/packages/mdc-form-field/adapter.ts @@ -21,11 +21,10 @@ * THE SOFTWARE. */ +import {EventType, SpecificEventListener} from '@material/base/index'; + /** - * Adapter for MDC Form Field. Provides an interface for managing - * - event handlers - * - ripple activation - * + * 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. @@ -34,12 +33,8 @@ interface MDCFormFieldAdapter { activateInputRipple(): void; deactivateInputRipple(): void; - deregisterInteractionHandler( - type: K, handler: (evt: GlobalEventHandlersEventMap[K], - ) => void): void; - registerInteractionHandler( - type: K, handler: (evt: GlobalEventHandlersEventMap[K], - ) => void): void; + deregisterInteractionHandler(evtType: K, handler: SpecificEventListener): void; + registerInteractionHandler(evtType: K, handler: SpecificEventListener): void; } export {MDCFormFieldAdapter as default, MDCFormFieldAdapter}; diff --git a/packages/mdc-form-field/foundation.ts b/packages/mdc-form-field/foundation.ts index bdd6cd3c5ea..5ebe2553c29 100644 --- a/packages/mdc-form-field/foundation.ts +++ b/packages/mdc-form-field/foundation.ts @@ -43,12 +43,11 @@ class MDCFormFieldFoundation extends MDCFoundation { }; } - private clickHandler_: () => void; + private readonly clickHandler_: () => void; - constructor(adapter: MDCFormFieldAdapter) { - super(Object.assign(MDCFormFieldFoundation.defaultAdapter, adapter)); + constructor(adapter?: Partial) { + super({...MDCFormFieldFoundation.defaultAdapter, ...adapter}); - /** @private {!EventListener} */ this.clickHandler_ = () => this.handleClick_(); } diff --git a/packages/mdc-form-field/index.ts b/packages/mdc-form-field/index.ts index e558c1b3ee9..b64e2366ace 100644 --- a/packages/mdc-form-field/index.ts +++ b/packages/mdc-form-field/index.ts @@ -57,8 +57,16 @@ class MDCFormField extends MDCComponent { this.input_.ripple.deactivate(); } }, - deregisterInteractionHandler: (type, handler) => this.label_ && this.label_.removeEventListener(type, handler), - registerInteractionHandler: (type, handler) => this.label_ && this.label_.addEventListener(type, handler), + deregisterInteractionHandler: (evtType, handler) => { + if (this.label_) { + this.label_.removeEventListener(evtType, handler); + } + }, + registerInteractionHandler: (evtType, handler) => { + if (this.label_) { + this.label_.addEventListener(evtType, handler); + } + }, }); } } diff --git a/packages/mdc-grid-list/foundation.ts b/packages/mdc-grid-list/foundation.ts index 0b512a64fc7..c76cf37b1e6 100644 --- a/packages/mdc-grid-list/foundation.ts +++ b/packages/mdc-grid-list/foundation.ts @@ -44,8 +44,10 @@ class MDCGridListFoundation extends MDCFoundation { private readonly resizeHandler_: EventListener; private resizeFrame_ = 0; - constructor(adapter: MDCGridListAdapter) { - super(Object.assign(MDCGridListFoundation.defaultAdapter, adapter)); + /* istanbul ignore next: optional argument is not a branch statement */ + constructor(adapter?: Partial) { + super({...MDCGridListFoundation.defaultAdapter, ...adapter}); + this.resizeHandler_ = this.alignCenter.bind(this); } diff --git a/packages/mdc-icon-button/foundation.ts b/packages/mdc-icon-button/foundation.ts index 9f4a39996f5..10d2de9aac3 100644 --- a/packages/mdc-icon-button/foundation.ts +++ b/packages/mdc-icon-button/foundation.ts @@ -44,8 +44,8 @@ class MDCIconButtonToggleFoundation extends MDCFoundation) { + super({...MDCIconButtonToggleFoundation.defaultAdapter, ...adapter}); } init() { diff --git a/packages/mdc-line-ripple/adapter.ts b/packages/mdc-line-ripple/adapter.ts index cf462a4f8d0..fad35980e40 100644 --- a/packages/mdc-line-ripple/adapter.ts +++ b/packages/mdc-line-ripple/adapter.ts @@ -51,12 +51,12 @@ interface MDCLineRippleAdapter { /** * Registers an event listener on the line ripple element for a given event. */ - registerEventHandler(evtType: E, handler: SpecificEventListener): void; + registerEventHandler(evtType: K, handler: SpecificEventListener): void; /** * Deregisters an event listener on the line ripple element for a given event. */ - deregisterEventHandler(evtType: E, handler: SpecificEventListener): void; + deregisterEventHandler(evtType: K, handler: SpecificEventListener): void; } export {MDCLineRippleAdapter as default, MDCLineRippleAdapter}; diff --git a/packages/mdc-line-ripple/foundation.ts b/packages/mdc-line-ripple/foundation.ts index 8e9c0de1961..c9430d4a268 100644 --- a/packages/mdc-line-ripple/foundation.ts +++ b/packages/mdc-line-ripple/foundation.ts @@ -21,8 +21,8 @@ * THE SOFTWARE. */ -import {SpecificEventListener} from '@material/base'; import {MDCFoundation} from '@material/base/foundation'; +import {SpecificEventListener} from '@material/base/index'; import {MDCLineRippleAdapter} from './adapter'; import {cssClasses} from './constants'; @@ -49,7 +49,7 @@ class MDCLineRippleFoundation extends MDCFoundation { private readonly transitionEndHandler_: SpecificEventListener<'transitionend'>; - constructor(adapter: Partial = {}) { + constructor(adapter?: Partial) { super({...MDCLineRippleFoundation.defaultAdapter, ...adapter}); this.transitionEndHandler_ = (evt) => this.handleTransitionEnd(evt); diff --git a/packages/mdc-list/_mixins.scss b/packages/mdc-list/_mixins.scss index e50ba040890..69c6b7db185 100644 --- a/packages/mdc-list/_mixins.scss +++ b/packages/mdc-list/_mixins.scss @@ -25,6 +25,8 @@ @import "@material/theme/functions"; @import "@material/typography/mixins"; @import "@material/typography/variables"; +@import "@material/feature-targeting/functions"; +@import "@material/feature-targeting/mixins"; @import "./variables"; // @@ -275,8 +277,7 @@ .mdc-list-group__subheader { $mdc-list-subheader-virtual-height: 3rem; $mdc-list-subheader-leading: map-get(map-get($mdc-typography-styles, body1), line-height); - $mdc-list-subheader-margin: - ($mdc-list-subheader-virtual-height - $mdc-list-subheader-leading) / 2; + $mdc-list-subheader-margin: ($mdc-list-subheader-virtual-height - $mdc-list-subheader-leading) / 2; @include mdc-typography(subtitle1, $query); @@ -335,12 +336,8 @@ } @mixin mdc-list-item-shape-radius($radius, $rtl-reflexive: false, $query: mdc-feature-all()) { - $feat-structure: mdc-feature-create-target($query, structure); - .mdc-list-item { - @include mdc-feature-targets($feat-structure) { - @include mdc-shape-radius($radius, $rtl-reflexive); - } + @include mdc-shape-radius($radius, $rtl-reflexive, $query: $query); } } diff --git a/packages/mdc-list/foundation.ts b/packages/mdc-list/foundation.ts index 81e8ec1a52b..3b4f4f7d37e 100644 --- a/packages/mdc-list/foundation.ts +++ b/packages/mdc-list/foundation.ts @@ -69,8 +69,8 @@ class MDCListFoundation extends MDCFoundation { private isCheckboxList_ = false; private isRadioList_ = false; - constructor(adapter: MDCListAdapter) { - super(Object.assign(MDCListFoundation.defaultAdapter, adapter)); + constructor(adapter?: Partial) { + super({...MDCListFoundation.defaultAdapter, ...adapter}); } layout() { diff --git a/packages/mdc-list/index.ts b/packages/mdc-list/index.ts index e5035b99143..cf2379589fd 100644 --- a/packages/mdc-list/index.ts +++ b/packages/mdc-list/index.ts @@ -23,7 +23,7 @@ import {MDCComponent} from '@material/base/component'; import {SpecificEventListener} from '@material/base/index'; -import * as ponyfill from '@material/dom/ponyfill'; +import {ponyfill} from '@material/dom/index'; import {cssClasses, strings} from './constants'; import {MDCListFoundation} from './foundation'; import {ListActionEventDetail, ListIndex} from './types'; diff --git a/packages/mdc-list/package.json b/packages/mdc-list/package.json index 9ae5c7609a9..cc0cd94904a 100644 --- a/packages/mdc-list/package.json +++ b/packages/mdc-list/package.json @@ -16,6 +16,7 @@ "dependencies": { "@material/base": "^0.41.0", "@material/dom": "^0.41.0", + "@material/feature-targeting": "^0.44.0", "@material/ripple": "^0.44.0", "@material/rtl": "^0.42.0", "@material/shape": "^0.43.0", diff --git a/packages/mdc-menu-surface/_mixins.scss b/packages/mdc-menu-surface/_mixins.scss index 72bc2262a26..9a43a4b534e 100644 --- a/packages/mdc-menu-surface/_mixins.scss +++ b/packages/mdc-menu-surface/_mixins.scss @@ -81,11 +81,7 @@ } @mixin mdc-menu-surface-shape-radius($radius, $rtl-reflexive: false, $query: mdc-feature-all()) { - $feat-structure: mdc-feature-create-target($query, structure); - - @include mdc-feature-targets($feat-structure) { - @include mdc-shape-radius($radius, $rtl-reflexive); - } + @include mdc-shape-radius($radius, $rtl-reflexive, $query: $query); } // @@ -112,6 +108,12 @@ z-index: $mdc-menu-surface-z-index; } + @include mdc-feature-targets($feat-animation) { + transition: + opacity $mdc-menu-surface-fade-in-duration linear, + transform $mdc-menu-surface-scale-duration $mdc-animation-deceleration-curve-timing-function; + } + &:focus { @include mdc-feature-targets($feat-structure) { outline: none; @@ -133,12 +135,6 @@ transform: scale(.8); opacity: 0; } - - @include mdc-feature-targets($feat-animation) { - transition: - opacity $mdc-menu-surface-fade-in-duration linear, - transform $mdc-menu-surface-scale-duration $mdc-animation-deceleration-curve-timing-function; - } } &--animating-closed { diff --git a/packages/mdc-menu-surface/foundation.ts b/packages/mdc-menu-surface/foundation.ts index 6198ec39b32..e6f7f727a8d 100644 --- a/packages/mdc-menu-surface/foundation.ts +++ b/packages/mdc-menu-surface/foundation.ts @@ -105,8 +105,8 @@ class MDCMenuSurfaceFoundation extends MDCFoundation { private dimensions_!: MenuDimensions; // assigned in open() private measurements_!: AutoLayoutMeasurements; // assigned in open() - constructor(adapter: MDCMenuSurfaceAdapter) { - super(Object.assign(MDCMenuSurfaceFoundation.defaultAdapter, adapter)); + constructor(adapter?: Partial) { + super({...MDCMenuSurfaceFoundation.defaultAdapter, ...adapter}); } init() { diff --git a/packages/mdc-menu-surface/index.ts b/packages/mdc-menu-surface/index.ts index 720ee444e3b..b9c3771b592 100644 --- a/packages/mdc-menu-surface/index.ts +++ b/packages/mdc-menu-surface/index.ts @@ -132,7 +132,9 @@ class MDCMenuSurface extends MDCComponent { this.setIsHoisted(true); } - /** @param corner Default anchor corner alignment of top-left surface corner. */ + /** + * @param corner Default anchor corner alignment of top-left surface corner. + */ setAnchorCorner(corner: Corner) { this.foundation_.setAnchorCorner(corner); } diff --git a/packages/mdc-menu-surface/package.json b/packages/mdc-menu-surface/package.json index 63ec903a781..ecf282a57b2 100644 --- a/packages/mdc-menu-surface/package.json +++ b/packages/mdc-menu-surface/package.json @@ -17,6 +17,7 @@ "@material/animation": "^0.41.0", "@material/base": "^0.41.0", "@material/elevation": "^0.44.0", + "@material/feature-targeting": "^0.44.0", "@material/rtl": "^0.42.0", "@material/shape": "^0.43.0", "@material/theme": "^0.43.0" diff --git a/packages/mdc-menu/foundation.ts b/packages/mdc-menu/foundation.ts index 3349a9c9a52..41443ef1ae2 100644 --- a/packages/mdc-menu/foundation.ts +++ b/packages/mdc-menu/foundation.ts @@ -58,8 +58,8 @@ class MDCMenuFoundation extends MDCFoundation { // tslint:enable:object-literal-sort-keys } - constructor(adapter: MDCMenuAdapter) { - super(Object.assign(MDCMenuFoundation.defaultAdapter, adapter)); + constructor(adapter?: Partial) { + super({...MDCMenuFoundation.defaultAdapter, ...adapter}); } destroy() { diff --git a/packages/mdc-menu/package.json b/packages/mdc-menu/package.json index 31d2b9c6ea6..d147c6cc54c 100644 --- a/packages/mdc-menu/package.json +++ b/packages/mdc-menu/package.json @@ -15,6 +15,7 @@ }, "dependencies": { "@material/base": "^0.41.0", + "@material/feature-targeting": "^0.44.0", "@material/list": "^0.44.0", "@material/menu-surface": "^0.44.0", "@material/ripple": "^0.44.0", diff --git a/packages/mdc-notched-outline/foundation.ts b/packages/mdc-notched-outline/foundation.ts index c345a993c2a..e8793e4a3c4 100644 --- a/packages/mdc-notched-outline/foundation.ts +++ b/packages/mdc-notched-outline/foundation.ts @@ -52,7 +52,7 @@ class MDCNotchedOutlineFoundation extends MDCFoundation = {}) { + constructor(adapter?: Partial) { super({...MDCNotchedOutlineFoundation.defaultAdapter, ...adapter}); } diff --git a/packages/mdc-radio/index.ts b/packages/mdc-radio/index.ts index 6b78b0aa908..280ad4508a5 100644 --- a/packages/mdc-radio/index.ts +++ b/packages/mdc-radio/index.ts @@ -23,8 +23,7 @@ import {MDCComponent} from '@material/base/component'; import {EventType, SpecificEventListener} from '@material/base/index'; -import {RippleCapableSurface} from '@material/ripple/index'; -import {MDCRipple, MDCRippleFoundation} from '@material/ripple/index'; +import {MDCRipple, MDCRippleFoundation, RippleCapableSurface} from '@material/ripple/index'; import {MDCSelectionControl} from '@material/selection-control/index'; import {MDCRadioFoundation} from './foundation'; @@ -81,18 +80,17 @@ class MDCRadio extends MDCComponent implements RippleCapable } private initRipple_(): MDCRipple { - const adapter = Object.assign(MDCRipple.createAdapter(this), { - deregisterInteractionHandler: - (type: K, handler: SpecificEventListener) => - this.nativeControl_.removeEventListener(type, handler), + const foundation = new MDCRippleFoundation({ + ...MDCRipple.createAdapter(this), + deregisterInteractionHandler: (evtType: K, handler: SpecificEventListener) => + this.nativeControl_.removeEventListener(evtType, handler), // Radio buttons technically go "active" whenever there is *any* keyboard interaction. This is not the // UI we desire. isSurfaceActive: () => false, isUnbounded: () => true, - registerInteractionHandler: (type: K, handler: SpecificEventListener) => - this.nativeControl_.addEventListener(type, handler), + registerInteractionHandler: (evtType: K, handler: SpecificEventListener) => + this.nativeControl_.addEventListener(evtType, handler), }); - const foundation = new MDCRippleFoundation(adapter); return new MDCRipple(this.root_, foundation); } diff --git a/packages/mdc-radio/package.json b/packages/mdc-radio/package.json index a825c8ad6f0..90f47fee033 100644 --- a/packages/mdc-radio/package.json +++ b/packages/mdc-radio/package.json @@ -16,6 +16,7 @@ "dependencies": { "@material/animation": "^0.41.0", "@material/base": "^0.41.0", + "@material/feature-targeting": "^0.44.0", "@material/ripple": "^0.44.0", "@material/selection-control": "^0.44.0", "@material/theme": "^0.43.0" diff --git a/packages/mdc-ripple/foundation.ts b/packages/mdc-ripple/foundation.ts index 7aca9313e64..e855ee4010d 100644 --- a/packages/mdc-ripple/foundation.ts +++ b/packages/mdc-ripple/foundation.ts @@ -60,7 +60,7 @@ const POINTER_DEACTIVATION_EVENT_TYPES: DeactivationEventType[] = [ ]; // simultaneous nested activations -let activatedTargets: Array = []; +let activatedTargets: Array = []; class MDCRippleFoundation extends MDCFoundation { static get cssClasses(): {[key: string]: string} { @@ -75,11 +75,11 @@ class MDCRippleFoundation extends MDCFoundation { return numbers; } - static get defaultAdapter() { + static get defaultAdapter(): MDCRippleAdapter { return { addClass: () => undefined, browserSupportsCssVars: () => true, - computeBoundingRect: () => undefined, + computeBoundingRect: () => ({top: 0, right: 0, bottom: 0, left: 0, width: 0, height: 0}), containsEventTarget: () => true, deregisterDocumentInteractionHandler: () => undefined, deregisterInteractionHandler: () => undefined, @@ -96,53 +96,40 @@ class MDCRippleFoundation extends MDCFoundation { }; } - private layoutFrame_: number; - private frame_: { - width: number, - height: number, - }; + private activationAnimationHasEnded_ = false; private activationState_: ActivationStateType; - private initialSize_: number; - private maxRadius_: number; - private activateHandler_: EventHandlerNonNull; - private deactivateHandler_: EventHandlerNonNull; - private focusHandler_: EventHandlerNonNull; - private blurHandler_: EventHandlerNonNull; - private resizeHandler_: EventHandlerNonNull; - - private unboundedCoords_: Coordinates; - private fgScale_: string; - private activationTimer_: number; - private fgDeactivationRemovalTimer_: number; - private activationAnimationHasEnded_: boolean; - private activationTimerCallback_: () => void; + private activationTimer_ = 0; + private fgDeactivationRemovalTimer_ = 0; + private fgScale_ = '0'; + private frame_ = {width: 0, height: 0}; + private initialSize_ = 0; + private layoutFrame_ = 0; + private maxRadius_ = 0; + private unboundedCoords_: Coordinates = {left: 0, top: 0}; + + private readonly activationTimerCallback_: () => void; + private readonly activateHandler_: EventHandlerNonNull; + private readonly deactivateHandler_: EventHandlerNonNull; + private readonly focusHandler_: EventHandlerNonNull; + private readonly blurHandler_: EventHandlerNonNull; + private readonly resizeHandler_: EventHandlerNonNull; + private previousActivationEvent_?: Event; - constructor(adapter: MDCRippleAdapter) { - super(Object.assign(MDCRippleFoundation.defaultAdapter, adapter)); + constructor(adapter?: Partial) { + super({...MDCRippleFoundation.defaultAdapter, ...adapter}); - this.layoutFrame_ = 0; - this.frame_ = ({width: 0, height: 0}); this.activationState_ = this.defaultActivationState_(); - this.initialSize_ = 0; - this.maxRadius_ = 0; + + this.activationTimerCallback_ = () => { + this.activationAnimationHasEnded_ = true; + this.runDeactivationUXLogicIfReady_(); + }; this.activateHandler_ = (e) => this.activate_(e); this.deactivateHandler_ = () => this.deactivate_(); this.focusHandler_ = () => this.handleFocus(); this.blurHandler_ = () => this.handleBlur(); this.resizeHandler_ = () => this.layout(); - this.unboundedCoords_ = { - left: 0, - top: 0, - }; - this.fgScale_ = '0'; - this.activationTimer_ = 0; - this.fgDeactivationRemovalTimer_ = 0; - this.activationAnimationHasEnded_ = false; - this.activationTimerCallback_ = () => { - this.activationAnimationHasEnded_ = true; - this.runDeactivationUXLogicIfReady_(); - }; } init() { @@ -163,7 +150,6 @@ class MDCRippleFoundation extends MDCFoundation { } } - /** @override */ destroy() { if (this.supportsPressRipple_()) { if (this.activationTimer_) { @@ -189,11 +175,12 @@ class MDCRippleFoundation extends MDCFoundation { this.deregisterRootHandlers_(); this.deregisterDeactivationHandlers_(); } + /** - * event Optional event containing position information. + * @param evt Optional event containing position information. */ - activate(event?: Event): void { - this.activate_(event); + activate(evt?: Event): void { + this.activate_(evt); } deactivate(): void { @@ -255,8 +242,8 @@ class MDCRippleFoundation extends MDCFoundation { */ private registerRootHandlers_(supportsPressRipple: boolean) { if (supportsPressRipple) { - ACTIVATION_EVENT_TYPES.forEach((type) => { - this.adapter_.registerInteractionHandler(type, this.activateHandler_); + ACTIVATION_EVENT_TYPES.forEach((evtType) => { + this.adapter_.registerInteractionHandler(evtType, this.activateHandler_); }); if (this.adapter_.isUnbounded()) { this.adapter_.registerResizeHandler(this.resizeHandler_); @@ -267,19 +254,19 @@ class MDCRippleFoundation extends MDCFoundation { this.adapter_.registerInteractionHandler('blur', this.blurHandler_); } - private registerDeactivationHandlers_(e: Event) { - if (e.type === 'keydown') { + private registerDeactivationHandlers_(evt: Event) { + if (evt.type === 'keydown') { this.adapter_.registerInteractionHandler('keyup', this.deactivateHandler_); } else { - POINTER_DEACTIVATION_EVENT_TYPES.forEach((type) => { - this.adapter_.registerDocumentInteractionHandler(type, this.deactivateHandler_); + POINTER_DEACTIVATION_EVENT_TYPES.forEach((evtType) => { + this.adapter_.registerDocumentInteractionHandler(evtType, this.deactivateHandler_); }); } } private deregisterRootHandlers_() { - ACTIVATION_EVENT_TYPES.forEach((type) => { - this.adapter_.deregisterInteractionHandler(type, this.activateHandler_); + ACTIVATION_EVENT_TYPES.forEach((evtType) => { + this.adapter_.deregisterInteractionHandler(evtType, this.activateHandler_); }); this.adapter_.deregisterInteractionHandler('focus', this.focusHandler_); this.adapter_.deregisterInteractionHandler('blur', this.blurHandler_); @@ -291,21 +278,21 @@ class MDCRippleFoundation extends MDCFoundation { private deregisterDeactivationHandlers_() { this.adapter_.deregisterInteractionHandler('keyup', this.deactivateHandler_); - POINTER_DEACTIVATION_EVENT_TYPES.forEach((type) => { - this.adapter_.deregisterDocumentInteractionHandler(type, this.deactivateHandler_); + POINTER_DEACTIVATION_EVENT_TYPES.forEach((evtType) => { + this.adapter_.deregisterDocumentInteractionHandler(evtType, this.deactivateHandler_); }); } private removeCssVars_() { const rippleStrings = MDCRippleFoundation.strings; - Object.keys(rippleStrings).forEach((k) => { - if (k.indexOf('VAR_') === 0) { - this.adapter_.updateCssVariable(rippleStrings[k], null); + Object.keys(rippleStrings).forEach((key) => { + if (key.indexOf('VAR_') === 0) { + this.adapter_.updateCssVariable(rippleStrings[key], null); } }); } - private activate_(e?: Event) { + private activate_(evt?: Event) { if (this.adapter_.isSurfaceDisabled()) { return; } @@ -317,19 +304,19 @@ class MDCRippleFoundation extends MDCFoundation { // Avoid reacting to follow-on events fired by touch device after an already-processed user interaction const previousActivationEvent = this.previousActivationEvent_; - const isSameInteraction = previousActivationEvent && e !== undefined && previousActivationEvent.type !== e.type; + const isSameInteraction = previousActivationEvent && evt !== undefined && previousActivationEvent.type !== evt.type; if (isSameInteraction) { return; } activationState.isActivated = true; - activationState.isProgrammatic = e === undefined; - activationState.activationEvent = e; - activationState.wasActivatedByPointer = activationState.isProgrammatic ? false : e !== undefined && ( - e.type === 'mousedown' || e.type === 'touchstart' || e.type === 'pointerdown' + activationState.isProgrammatic = evt === undefined; + activationState.activationEvent = evt; + activationState.wasActivatedByPointer = activationState.isProgrammatic ? false : evt !== undefined && ( + evt.type === 'mousedown' || evt.type === 'touchstart' || evt.type === 'pointerdown' ); - const hasActivatedChild = e !== undefined && activatedTargets.length > 0 && activatedTargets.some( + const hasActivatedChild = evt !== undefined && activatedTargets.length > 0 && activatedTargets.some( (target) => this.adapter_.containsEventTarget(target)); if (hasActivatedChild) { // Immediately reset activation state, while preserving logic that prevents touch follow-on events @@ -337,12 +324,12 @@ class MDCRippleFoundation extends MDCFoundation { return; } - if (e !== undefined) { - activatedTargets.push(e.target); - this.registerDeactivationHandlers_(e); + if (evt !== undefined) { + activatedTargets.push(evt.target); + this.registerDeactivationHandlers_(evt); } - activationState.wasElementMadeActive = this.checkElementMadeActive_(e); + activationState.wasElementMadeActive = this.checkElementMadeActive_(evt); if (activationState.wasElementMadeActive) { this.animateActivation_(); } @@ -352,15 +339,15 @@ class MDCRippleFoundation extends MDCFoundation { activatedTargets = []; if (!activationState.wasElementMadeActive - && e !== undefined - && ((e as KeyboardEvent).key === ' ' || (e as KeyboardEvent).keyCode === 32)) { + && evt !== undefined + && ((evt as KeyboardEvent).key === ' ' || (evt as KeyboardEvent).keyCode === 32)) { // If space was pressed, try again within an rAF call to detect :active, because different UAs report // active states inconsistently when they're called within event handling code: // - https://bugs.chromium.org/p/chromium/issues/detail?id=635971 // - https://bugzilla.mozilla.org/show_bug.cgi?id=1293741 // We try first outside rAF to support Edge, which does not exhibit this problem, but will crash if a CSS // variable is set within a rAF callback for a submit button interaction (#2241). - activationState.wasElementMadeActive = this.checkElementMadeActive_(e); + activationState.wasElementMadeActive = this.checkElementMadeActive_(evt); if (activationState.wasElementMadeActive) { this.animateActivation_(); } @@ -373,8 +360,8 @@ class MDCRippleFoundation extends MDCFoundation { }); } - private checkElementMadeActive_(e?: Event) { - return (e !== undefined && e.type === 'keydown') ? this.adapter_.isSurfaceActive() : true; + private checkElementMadeActive_(evt?: Event) { + return (evt !== undefined && evt.type === 'keydown') ? this.adapter_.isSurfaceActive() : true; } private animateActivation_() { @@ -475,7 +462,7 @@ class MDCRippleFoundation extends MDCFoundation { return; } - const state = /** @type {!ActivationStateType} */ (Object.assign({}, activationState)); + const state: ActivationStateType = {...activationState}; if (activationState.isProgrammatic) { requestAnimationFrame(() => this.animateDeactivation_(state)); diff --git a/packages/mdc-ripple/index.ts b/packages/mdc-ripple/index.ts index 84bd962dc73..d0c51d010f8 100644 --- a/packages/mdc-ripple/index.ts +++ b/packages/mdc-ripple/index.ts @@ -22,6 +22,7 @@ */ import {MDCComponent} from '@material/base/component'; +import {ponyfill} from '@material/dom/index'; import {MDCRippleAdapter} from './adapter'; import {MDCRippleFoundation} from './foundation'; import {RippleAttachOpts, RippleCapableSurface} from './types'; @@ -38,8 +39,6 @@ class MDCRipple extends MDCComponent implements RippleCapab } static createAdapter(instance: RippleCapableSurface): MDCRippleAdapter { - const MATCHES = util.getMatchesProperty(HTMLElement.prototype); - return { addClass: (className) => instance.root_.classList.add(className), browserSupportsCssVars: () => util.supportsCssVariables(window), @@ -51,10 +50,7 @@ class MDCRipple extends MDCComponent implements RippleCapab instance.root_.removeEventListener(evtType, handler, util.applyPassive()), deregisterResizeHandler: (handler) => window.removeEventListener('resize', handler), getWindowPageOffset: () => ({x: window.pageXOffset, y: window.pageYOffset}), - isSurfaceActive: () => { - const root = instance.root_; - return root[MATCHES as 'matches'](':active'); - }, + isSurfaceActive: () => ponyfill.matches(instance.root_, ':active'), isSurfaceDisabled: () => Boolean(instance.disabled), isUnbounded: () => Boolean(instance.unbounded), registerDocumentInteractionHandler: (evtType, handler) => @@ -67,12 +63,11 @@ class MDCRipple extends MDCComponent implements RippleCapab }; } + // Public visibility for this property is required by RippleCapableSurface. + root_!: Element; // assigned in MDCComponent constructor + disabled = false; - /** - * this line may seem redundent, but without this the TS compiler does not - * think that `this` is of type RippleCapableSurface - */ - root_!: Element; + private unbounded_?: boolean; get unbounded(): boolean { @@ -114,7 +109,6 @@ class MDCRipple extends MDCComponent implements RippleCapab private setUnbounded_() { this.foundation_.setUnbounded(Boolean(this.unbounded_)); } - } export {MDCRipple as default, MDCRipple, util}; diff --git a/packages/mdc-ripple/package.json b/packages/mdc-ripple/package.json index d6c1e5b34d5..a560887b24e 100644 --- a/packages/mdc-ripple/package.json +++ b/packages/mdc-ripple/package.json @@ -16,6 +16,7 @@ "dependencies": { "@material/animation": "^0.41.0", "@material/base": "^0.41.0", + "@material/dom": "^0.41.0", "@material/feature-targeting": "^0.44.0", "@material/theme": "^0.43.0" } diff --git a/packages/mdc-ripple/util.ts b/packages/mdc-ripple/util.ts index dcf88d08af5..279e25f7abd 100644 --- a/packages/mdc-ripple/util.ts +++ b/packages/mdc-ripple/util.ts @@ -111,11 +111,8 @@ export type VendorMatchesFunctionName = 'webkitMatchesSelector' | 'msMatchesSele export type MatchesFunctionName = VendorMatchesFunctionName | 'matches'; export function getMatchesProperty(htmlElementPrototype: {}): MatchesFunctionName { - /** - * Order is important because we return the first existing method we find. - * Do not change the order of the items in the below array. - */ - + // Order is important because we return the first existing method we find. + // Do not change the order of the items in the below array. const matchesMethods: MatchesFunctionName[] = ['matches', 'webkitMatchesSelector', 'msMatchesSelector']; let method: MatchesFunctionName = 'matches'; for (const matchesMethod of matchesMethods) { @@ -128,9 +125,8 @@ export function getMatchesProperty(htmlElementPrototype: {}): MatchesFunctionNam return method; } -export function getNormalizedEventCoords( - ev: Event | undefined, pageOffset: Point, clientRect: ClientRect): Point { - if (!ev) { +export function getNormalizedEventCoords(evt: Event | undefined, pageOffset: Point, clientRect: ClientRect): Point { + if (!evt) { return {x: 0, y: 0}; } const {x, y} = pageOffset; @@ -140,12 +136,12 @@ export function getNormalizedEventCoords( let normalizedX; let normalizedY; // Determine touch point relative to the ripple container. - if (ev.type === 'touchstart') { - const touchEvent = ev as TouchEvent; + if (evt.type === 'touchstart') { + const touchEvent = evt as TouchEvent; normalizedX = touchEvent.changedTouches[0].pageX - documentX; normalizedY = touchEvent.changedTouches[0].pageY - documentY; } else { - const mouseEvent = ev as MouseEvent; + const mouseEvent = evt as MouseEvent; normalizedX = mouseEvent.pageX - documentX; normalizedY = mouseEvent.pageY - documentY; } diff --git a/packages/mdc-shape/_mixins.scss b/packages/mdc-shape/_mixins.scss index 89a1ac3e9a8..d21b7dfc55f 100644 --- a/packages/mdc-shape/_mixins.scss +++ b/packages/mdc-shape/_mixins.scss @@ -20,23 +20,29 @@ // THE SOFTWARE. // +@import "@material/feature-targeting/functions"; +@import "@material/feature-targeting/mixins"; @import "./variables"; @import "./functions"; -@mixin mdc-shape-radius($radius, $rtl-reflexive: false) { - // Even if $rtl-reflexive is true, only emit RTL styles if we can't easily tell that the given radius is symmetrical - $needs-flip: $rtl-reflexive and length($radius) > 1; +@mixin mdc-shape-radius($radius, $rtl-reflexive: false, $query: mdc-feature-all()) { + $feat-structure: mdc-feature-create-target($query, structure); - @if ($needs-flip) { - /* @noflip */ - } - - border-radius: mdc-shape-prop-value($radius); + @include mdc-feature-targets($feat-structure) { + // Even if $rtl-reflexive is true, only emit RTL styles if we can't easily tell that the given radius is symmetrical + $needs-flip: $rtl-reflexive and length($radius) > 1; - @if ($needs-flip) { - @include mdc-rtl { + @if ($needs-flip) { /* @noflip */ - border-radius: mdc-shape-flip-radius(mdc-shape-prop-value($radius)); + } + + border-radius: mdc-shape-prop-value($radius); + + @if ($needs-flip) { + @include mdc-rtl { + /* @noflip */ + border-radius: mdc-shape-flip-radius(mdc-shape-prop-value($radius)); + } } } } diff --git a/packages/mdc-shape/package.json b/packages/mdc-shape/package.json index 3a62fd2fd58..0db4f81ab04 100644 --- a/packages/mdc-shape/package.json +++ b/packages/mdc-shape/package.json @@ -14,5 +14,8 @@ }, "publishConfig": { "access": "public" + }, + "dependencies": { + "@material/feature-targeting": "^0.44.0" } } diff --git a/packages/mdc-slider/adapter.ts b/packages/mdc-slider/adapter.ts index 5d95ec7f3a7..797abef5ad8 100644 --- a/packages/mdc-slider/adapter.ts +++ b/packages/mdc-slider/adapter.ts @@ -21,7 +21,7 @@ * THE SOFTWARE. */ -import {EventType, SpecificEventListener} from '@material/base'; +import {EventType, SpecificEventListener} from '@material/base/index'; /** * Defines the shape of the adapter expected by the foundation. @@ -74,32 +74,32 @@ interface MDCSliderAdapter { /** * Registers an event handler on the root element for a given event. */ - registerInteractionHandler(type: E, handler: SpecificEventListener): void; + registerInteractionHandler(evtType: K, handler: SpecificEventListener): void; /** * Deregisters an event handler on the root element for a given event. */ - deregisterInteractionHandler(type: E, handler: SpecificEventListener): void; + deregisterInteractionHandler(evtType: K, handler: SpecificEventListener): void; /** * Registers an event handler on the thumb container element for a given event. */ - registerThumbContainerInteractionHandler(type: E, handler: SpecificEventListener): void; + registerThumbContainerInteractionHandler(evtType: K, handler: SpecificEventListener): void; /** * Deregisters an event handler on the thumb container element for a given event. */ - deregisterThumbContainerInteractionHandler(type: E, handler: SpecificEventListener): void; + deregisterThumbContainerInteractionHandler(evtType: K, handler: SpecificEventListener): void; /** * Registers an event handler on the body for a given event. */ - registerBodyInteractionHandler(type: E, handler: SpecificEventListener): void; + registerBodyInteractionHandler(evtType: K, handler: SpecificEventListener): void; /** * Deregisters an event handler on the body for a given event. */ - deregisterBodyInteractionHandler(type: E, handler: SpecificEventListener): void; + deregisterBodyInteractionHandler(evtType: K, handler: SpecificEventListener): void; /** * Registers an event handler for the window resize event diff --git a/packages/mdc-slider/foundation.ts b/packages/mdc-slider/foundation.ts index 29e98cedab5..85509fa064d 100644 --- a/packages/mdc-slider/foundation.ts +++ b/packages/mdc-slider/foundation.ts @@ -128,7 +128,7 @@ class MDCSliderFoundation extends MDCFoundation { private readonly blurHandler_: SpecificEventListener<'blur'>; private readonly resizeHandler_: SpecificEventListener<'resize'>; - constructor(adapter: Partial = {}) { + constructor(adapter?: Partial) { super({...MDCSliderFoundation.defaultAdapter, ...adapter}); this.thumbContainerPointerHandler_ = () => this.handlingThumbTargetEvt_ = true; diff --git a/packages/mdc-slider/index.ts b/packages/mdc-slider/index.ts index 3fbf3ab2644..f991880180a 100644 --- a/packages/mdc-slider/index.ts +++ b/packages/mdc-slider/index.ts @@ -95,16 +95,16 @@ class MDCSlider extends MDCComponent { removeAttribute: (name) => this.root_.removeAttribute(name), computeBoundingRect: () => this.root_.getBoundingClientRect(), getTabIndex: () => this.root_.tabIndex, - registerInteractionHandler: (type, handler) => this.root_.addEventListener(type, handler), - deregisterInteractionHandler: (type, handler) => this.root_.removeEventListener(type, handler), - registerThumbContainerInteractionHandler: (type, handler) => { - this.thumbContainer_.addEventListener(type, handler); + registerInteractionHandler: (evtType, handler) => this.root_.addEventListener(evtType, handler), + deregisterInteractionHandler: (evtType, handler) => this.root_.removeEventListener(evtType, handler), + registerThumbContainerInteractionHandler: (evtType, handler) => { + this.thumbContainer_.addEventListener(evtType, handler); }, - deregisterThumbContainerInteractionHandler: (type, handler) => { - this.thumbContainer_.removeEventListener(type, handler); + deregisterThumbContainerInteractionHandler: (evtType, handler) => { + this.thumbContainer_.removeEventListener(evtType, handler); }, - registerBodyInteractionHandler: (type, handler) => document.body.addEventListener(type, handler), - deregisterBodyInteractionHandler: (type, handler) => document.body.removeEventListener(type, handler), + registerBodyInteractionHandler: (evtType, handler) => document.body.addEventListener(evtType, handler), + deregisterBodyInteractionHandler: (evtType, handler) => document.body.removeEventListener(evtType, handler), registerResizeHandler: (handler) => window.addEventListener('resize', handler), deregisterResizeHandler: (handler) => window.removeEventListener('resize', handler), notifyInput: () => this.emit(strings.INPUT_EVENT, this), diff --git a/packages/mdc-snackbar/foundation.ts b/packages/mdc-snackbar/foundation.ts index adf3c7cff12..e2d9931ce5c 100644 --- a/packages/mdc-snackbar/foundation.ts +++ b/packages/mdc-snackbar/foundation.ts @@ -60,8 +60,8 @@ class MDCSnackbarFoundation extends MDCFoundation { private autoDismissTimeoutMs_ = numbers.DEFAULT_AUTO_DISMISS_TIMEOUT_MS; private closeOnEscape_ = true; - constructor(adapter?: MDCSnackbarAdapter) { - super(Object.assign(MDCSnackbarFoundation.defaultAdapter, adapter)); + constructor(adapter?: Partial) { + super({...MDCSnackbarFoundation.defaultAdapter, ...adapter}); } destroy() { diff --git a/packages/mdc-snackbar/index.ts b/packages/mdc-snackbar/index.ts index 204ab5b9041..78875bea30c 100644 --- a/packages/mdc-snackbar/index.ts +++ b/packages/mdc-snackbar/index.ts @@ -21,9 +21,9 @@ * THE SOFTWARE. */ -import {SpecificEventListener} from '@material/base'; import {MDCComponent} from '@material/base/component'; -import * as ponyfill from '@material/dom/ponyfill'; +import {SpecificEventListener} from '@material/base/index'; +import {ponyfill} from '@material/dom/index'; import {strings} from './constants'; import {MDCSnackbarFoundation} from './foundation'; import {Announcer, AnnouncerFactory} from './types'; diff --git a/packages/mdc-switch/foundation.ts b/packages/mdc-switch/foundation.ts index c46e9e4b856..19bdd92e842 100644 --- a/packages/mdc-switch/foundation.ts +++ b/packages/mdc-switch/foundation.ts @@ -52,8 +52,8 @@ class MDCSwitchFoundation extends MDCFoundation { }; } - constructor(adapter: MDCSwitchAdapter) { - super(Object.assign(MDCSwitchFoundation.defaultAdapter, adapter)); + constructor(adapter?: Partial) { + super({...MDCSwitchFoundation.defaultAdapter, ...adapter}); } /** Sets the checked state of the switch. */ diff --git a/packages/mdc-switch/index.ts b/packages/mdc-switch/index.ts index a0627d2cd9d..593a666b2d1 100644 --- a/packages/mdc-switch/index.ts +++ b/packages/mdc-switch/index.ts @@ -22,8 +22,9 @@ */ import {MDCComponent} from '@material/base/component'; +import {EventType} from '@material/base/index'; +import {ponyfill} from '@material/dom/index'; import {MDCRipple, MDCRippleFoundation, RippleCapableSurface} from '@material/ripple/index'; -import {getMatchesProperty} from '@material/ripple/util'; import {MDCSelectionControl} from '@material/selection-control/index'; import {MDCSwitchFoundation} from './foundation'; @@ -33,13 +34,12 @@ import {MDCSwitchFoundation} from './foundation'; * https://material.io/design/components/selection-controls.html#switches */ class MDCSwitch extends MDCComponent implements MDCSelectionControl, RippleCapableSurface { - /** Creates an instance of MDCSwitch bound to the given root element. */ static attachTo(root: HTMLElement) { return new MDCSwitch(root); } - // Initialized in super class constructor, re-declared as public to fulfill to the `RippleCapableSurface` interface. - root_!: Element; + // Public visibility for this property is required by RippleCapableSurface. + root_!: Element; // assigned in MDCComponent constructor private ripple_ = this.initRipple_(); @@ -62,7 +62,6 @@ class MDCSwitch extends MDCComponent implements MDCSelectio this.checked = this.checked; } - /** Gets the default Foundation for this switch. */ getDefaultFoundation() { return new MDCSwitchFoundation({ addClass: (className: string) => this.root_.classList.add(className), @@ -72,23 +71,22 @@ class MDCSwitch extends MDCComponent implements MDCSelectio }); } - /** The MDCRipple associated with this switch. */ get ripple() { return this.ripple_; } - /** The checked state of this switch. */ get checked() { return this.nativeControl_.checked; } + set checked(checked) { this.foundation_.setChecked(checked); } - /** The disabled state of this switch. */ get disabled() { return this.nativeControl_.disabled; } + set disabled(disabled) { this.foundation_.setDisabled(disabled); } @@ -97,25 +95,25 @@ class MDCSwitch extends MDCComponent implements MDCSelectio const {RIPPLE_SURFACE_SELECTOR} = MDCSwitchFoundation.strings; const rippleSurface = this.root_.querySelector(RIPPLE_SURFACE_SELECTOR) as HTMLElement; - const MATCHES = getMatchesProperty(HTMLElement.prototype); - const adapter = Object.assign(MDCRipple.createAdapter(this), { + return new MDCRipple(this.root_, new MDCRippleFoundation({ + ...MDCRipple.createAdapter(this), addClass: (className: string) => rippleSurface.classList.add(className), computeBoundingRect: () => rippleSurface.getBoundingClientRect(), - deregisterInteractionHandler: (type: string, handler: EventListener) => - this.nativeControl_.removeEventListener(type, handler), - isSurfaceActive: () => this.nativeControl_[MATCHES]!(':active'), + deregisterInteractionHandler: (evtType: EventType, handler: EventListener) => { + this.nativeControl_.removeEventListener(evtType, handler); + }, + isSurfaceActive: () => ponyfill.matches(this.nativeControl_, ':active'), isUnbounded: () => true, - registerInteractionHandler: (type: string, handler: EventListener) => - this.nativeControl_.addEventListener(type, handler), + registerInteractionHandler: (evtType: EventType, handler: EventListener) => { + this.nativeControl_.addEventListener(evtType, handler); + }, removeClass: (className: string) => rippleSurface.classList.remove(className), - updateCssVariable: (varName: string, value: string) => - rippleSurface.style.setProperty(varName, value), - }); - const foundation = new MDCRippleFoundation(adapter); - return new MDCRipple(this.root_, foundation); + updateCssVariable: (varName: string, value: string) => { + rippleSurface.style.setProperty(varName, value); + }, + })); } - /** Returns the state of the native control element. */ private get nativeControl_() { const {NATIVE_CONTROL_SELECTOR} = MDCSwitchFoundation.strings; return this.root_.querySelector(NATIVE_CONTROL_SELECTOR) as HTMLInputElement; diff --git a/packages/mdc-switch/package.json b/packages/mdc-switch/package.json index 4f1fa6a2ce7..87045e1e1e3 100644 --- a/packages/mdc-switch/package.json +++ b/packages/mdc-switch/package.json @@ -16,7 +16,9 @@ "dependencies": { "@material/animation": "^0.41.0", "@material/base": "^0.41.0", + "@material/dom": "^0.41.0", "@material/elevation": "^0.44.0", + "@material/feature-targeting": "^0.44.0", "@material/ripple": "^0.44.0", "@material/rtl": "^0.42.0", "@material/selection-control": "^0.44.0", diff --git a/packages/mdc-textfield/README.md b/packages/mdc-textfield/README.md index 81983048228..5797228e527 100644 --- a/packages/mdc-textfield/README.md +++ b/packages/mdc-textfield/README.md @@ -182,7 +182,7 @@ which is immediate sibling of `.mdc-text-field`. See [here](helper-text/) for mo ### Text Field with Character Counter Character counter is used if there is a character limit. It displays the ratio of characters used and the total character limit. -Helper text should be rendered inside `.mdc-text-field-helper-line` element which is immediate sibling of `.mdc-text-field`. +Character counter should be rendered inside `.mdc-text-field-helper-line` element which is immediate sibling of `.mdc-text-field`. See [here](character-counter/) for more information on using character counter. ```html diff --git a/packages/mdc-textfield/mdc-text-field.scss b/packages/mdc-textfield/mdc-text-field.scss index 82ba7e1b5db..ad4339afddf 100644 --- a/packages/mdc-textfield/mdc-text-field.scss +++ b/packages/mdc-textfield/mdc-text-field.scss @@ -101,7 +101,8 @@ color: $mdc-text-field-placeholder-ink-color !important; } - // Always show placeholder for text field without label and show only on focused state when label is present. + // Always show placeholder for text fields that has no label and show only on focused state when label is present. + .mdc-text-field--fullwidth &::placeholder, .mdc-text-field--no-label &::placeholder, .mdc-text-field--focused &::placeholder { transition-delay: 40ms; diff --git a/packages/mdc-typography/package.json b/packages/mdc-typography/package.json index 3127a991403..b891959c5a2 100644 --- a/packages/mdc-typography/package.json +++ b/packages/mdc-typography/package.json @@ -12,5 +12,8 @@ "repository": { "type": "git", "url": "https://github.com/material-components/material-components-web.git" + }, + "dependencies": { + "@material/feature-targeting": "^0.44.0" } } diff --git a/test/screenshot/golden.json b/test/screenshot/golden.json index 1892712fe88..5f58bbb7786 100644 --- a/test/screenshot/golden.json +++ b/test/screenshot/golden.json @@ -64,10 +64,10 @@ } }, "spec/mdc-button/classes/dense-link-with-icons.html": { - "public_url": "https://storage.googleapis.com/mdc-web-screenshot-tests/travis/2018/12/10/17_38_00_089/spec/mdc-button/classes/dense-link-with-icons.html?utm_source=golden_json", + "public_url": "https://storage.googleapis.com/mdc-web-screenshot-tests/advorak/2019/02/11/21_55_33_374/spec/mdc-button/classes/dense-link-with-icons.html?utm_source=golden_json", "screenshots": { "desktop_windows_chrome@latest": "https://storage.googleapis.com/mdc-web-screenshot-tests/travis/2018/12/10/17_38_00_089/spec/mdc-button/classes/dense-link-with-icons.html.windows_chrome_71.png", - "desktop_windows_firefox@latest": "https://storage.googleapis.com/mdc-web-screenshot-tests/travis/2018/12/10/17_38_00_089/spec/mdc-button/classes/dense-link-with-icons.html.windows_firefox_63.png", + "desktop_windows_firefox@latest": "https://storage.googleapis.com/mdc-web-screenshot-tests/advorak/2019/02/11/21_55_33_374/spec/mdc-button/classes/dense-link-with-icons.html.windows_firefox_65.png", "desktop_windows_ie@11": "https://storage.googleapis.com/mdc-web-screenshot-tests/travis/2018/12/10/17_38_00_089/spec/mdc-button/classes/dense-link-with-icons.html.windows_ie_11.png" } }, @@ -128,10 +128,10 @@ } }, "spec/mdc-button/mixins/shape-radius.html": { - "public_url": "https://storage.googleapis.com/mdc-web-screenshot-tests/abhiomkar/2018/09/17/20_33_17_975/spec/mdc-button/mixins/shape-radius.html?utm_source=golden_json", + "public_url": "https://storage.googleapis.com/mdc-web-screenshot-tests/advorak/2019/02/11/21_55_33_374/spec/mdc-button/mixins/shape-radius.html?utm_source=golden_json", "screenshots": { "desktop_windows_chrome@latest": "https://storage.googleapis.com/mdc-web-screenshot-tests/abhiomkar/2018/09/17/20_33_17_975/spec/mdc-button/mixins/shape-radius.html.windows_chrome_69.png", - "desktop_windows_firefox@latest": "https://storage.googleapis.com/mdc-web-screenshot-tests/abhiomkar/2018/09/17/20_33_17_975/spec/mdc-button/mixins/shape-radius.html.windows_firefox_62.png", + "desktop_windows_firefox@latest": "https://storage.googleapis.com/mdc-web-screenshot-tests/advorak/2019/02/11/21_55_33_374/spec/mdc-button/mixins/shape-radius.html.windows_firefox_65.png", "desktop_windows_ie@11": "https://storage.googleapis.com/mdc-web-screenshot-tests/abhiomkar/2018/09/17/20_33_17_975/spec/mdc-button/mixins/shape-radius.html.windows_ie_11.png" } }, @@ -144,10 +144,10 @@ } }, "spec/mdc-button/mixins/stroke-width.html": { - "public_url": "https://storage.googleapis.com/mdc-web-screenshot-tests/travis/2018/12/10/17_38_00_089/spec/mdc-button/mixins/stroke-width.html?utm_source=golden_json", + "public_url": "https://storage.googleapis.com/mdc-web-screenshot-tests/advorak/2019/02/11/21_55_33_374/spec/mdc-button/mixins/stroke-width.html?utm_source=golden_json", "screenshots": { "desktop_windows_chrome@latest": "https://storage.googleapis.com/mdc-web-screenshot-tests/travis/2018/12/10/17_38_00_089/spec/mdc-button/mixins/stroke-width.html.windows_chrome_71.png", - "desktop_windows_firefox@latest": "https://storage.googleapis.com/mdc-web-screenshot-tests/travis/2018/12/10/17_38_00_089/spec/mdc-button/mixins/stroke-width.html.windows_firefox_63.png", + "desktop_windows_firefox@latest": "https://storage.googleapis.com/mdc-web-screenshot-tests/advorak/2019/02/11/21_55_33_374/spec/mdc-button/mixins/stroke-width.html.windows_firefox_65.png", "desktop_windows_ie@11": "https://storage.googleapis.com/mdc-web-screenshot-tests/travis/2018/12/10/17_38_00_089/spec/mdc-button/mixins/stroke-width.html.windows_ie_11.png" } }, @@ -312,10 +312,10 @@ } }, "spec/mdc-chips/mixins/outline.html": { - "public_url": "https://storage.googleapis.com/mdc-web-screenshot-tests/travis/2018/10/19/20_00_07_456/spec/mdc-chips/mixins/outline.html?utm_source=golden_json", + "public_url": "https://storage.googleapis.com/mdc-web-screenshot-tests/advorak/2019/02/11/21_55_33_374/spec/mdc-chips/mixins/outline.html?utm_source=golden_json", "screenshots": { "desktop_windows_chrome@latest": "https://storage.googleapis.com/mdc-web-screenshot-tests/travis/2018/10/19/20_00_07_456/spec/mdc-chips/mixins/outline.html.windows_chrome_69.png", - "desktop_windows_firefox@latest": "https://storage.googleapis.com/mdc-web-screenshot-tests/rlfriedman/2018/09/13/20_54_11_470/spec/mdc-chips/mixins/outline.html.windows_firefox_62.png", + "desktop_windows_firefox@latest": "https://storage.googleapis.com/mdc-web-screenshot-tests/advorak/2019/02/11/21_55_33_374/spec/mdc-chips/mixins/outline.html.windows_firefox_65.png", "desktop_windows_ie@11": "https://storage.googleapis.com/mdc-web-screenshot-tests/rlfriedman/2018/09/13/20_54_11_470/spec/mdc-chips/mixins/outline.html.windows_ie_11.png" } }, @@ -408,26 +408,26 @@ } }, "spec/mdc-dialog/classes/overflow-accessible-font-size.html": { - "public_url": "https://storage.googleapis.com/mdc-web-screenshot-tests/travis/2018/11/20/22_18_39_902/spec/mdc-dialog/classes/overflow-accessible-font-size.html?utm_source=golden_json", + "public_url": "https://storage.googleapis.com/mdc-web-screenshot-tests/advorak/2019/02/11/22_13_08_557/spec/mdc-dialog/classes/overflow-accessible-font-size.html?utm_source=golden_json", "screenshots": { - "desktop_windows_chrome@latest": "https://storage.googleapis.com/mdc-web-screenshot-tests/travis/2018/10/19/20_00_07_456/spec/mdc-dialog/classes/overflow-accessible-font-size.html.windows_chrome_69.png", - "desktop_windows_firefox@latest": "https://storage.googleapis.com/mdc-web-screenshot-tests/travis/2018/11/20/22_18_39_902/spec/mdc-dialog/classes/overflow-accessible-font-size.html.windows_firefox_63.png", + "desktop_windows_chrome@latest": "https://storage.googleapis.com/mdc-web-screenshot-tests/advorak/2019/02/11/22_13_08_557/spec/mdc-dialog/classes/overflow-accessible-font-size.html.windows_chrome_72.png", + "desktop_windows_firefox@latest": "https://storage.googleapis.com/mdc-web-screenshot-tests/advorak/2019/02/11/21_55_33_374/spec/mdc-dialog/classes/overflow-accessible-font-size.html.windows_firefox_65.png", "desktop_windows_ie@11": "https://storage.googleapis.com/mdc-web-screenshot-tests/advorak/2018/09/21/16_50_45_748/spec/mdc-dialog/classes/overflow-accessible-font-size.html.windows_ie_11.png" } }, "spec/mdc-dialog/classes/overflow-bottom.html": { - "public_url": "https://storage.googleapis.com/mdc-web-screenshot-tests/travis/2018/11/20/22_18_39_902/spec/mdc-dialog/classes/overflow-bottom.html?utm_source=golden_json", + "public_url": "https://storage.googleapis.com/mdc-web-screenshot-tests/advorak/2019/02/11/22_13_08_557/spec/mdc-dialog/classes/overflow-bottom.html?utm_source=golden_json", "screenshots": { - "desktop_windows_chrome@latest": "https://storage.googleapis.com/mdc-web-screenshot-tests/travis/2018/10/19/20_00_07_456/spec/mdc-dialog/classes/overflow-bottom.html.windows_chrome_69.png", - "desktop_windows_firefox@latest": "https://storage.googleapis.com/mdc-web-screenshot-tests/travis/2018/11/20/22_18_39_902/spec/mdc-dialog/classes/overflow-bottom.html.windows_firefox_63.png", + "desktop_windows_chrome@latest": "https://storage.googleapis.com/mdc-web-screenshot-tests/advorak/2019/02/11/22_13_08_557/spec/mdc-dialog/classes/overflow-bottom.html.windows_chrome_72.png", + "desktop_windows_firefox@latest": "https://storage.googleapis.com/mdc-web-screenshot-tests/advorak/2019/02/11/21_55_33_374/spec/mdc-dialog/classes/overflow-bottom.html.windows_firefox_65.png", "desktop_windows_ie@11": "https://storage.googleapis.com/mdc-web-screenshot-tests/advorak/2018/09/21/16_50_45_748/spec/mdc-dialog/classes/overflow-bottom.html.windows_ie_11.png" } }, "spec/mdc-dialog/classes/overflow-top.html": { - "public_url": "https://storage.googleapis.com/mdc-web-screenshot-tests/travis/2018/11/20/22_18_39_902/spec/mdc-dialog/classes/overflow-top.html?utm_source=golden_json", + "public_url": "https://storage.googleapis.com/mdc-web-screenshot-tests/advorak/2019/02/11/22_13_08_557/spec/mdc-dialog/classes/overflow-top.html?utm_source=golden_json", "screenshots": { - "desktop_windows_chrome@latest": "https://storage.googleapis.com/mdc-web-screenshot-tests/travis/2018/10/19/20_00_07_456/spec/mdc-dialog/classes/overflow-top.html.windows_chrome_69.png", - "desktop_windows_firefox@latest": "https://storage.googleapis.com/mdc-web-screenshot-tests/travis/2018/11/20/22_18_39_902/spec/mdc-dialog/classes/overflow-top.html.windows_firefox_63.png", + "desktop_windows_chrome@latest": "https://storage.googleapis.com/mdc-web-screenshot-tests/advorak/2019/02/11/22_13_08_557/spec/mdc-dialog/classes/overflow-top.html.windows_chrome_72.png", + "desktop_windows_firefox@latest": "https://storage.googleapis.com/mdc-web-screenshot-tests/advorak/2019/02/11/21_55_33_374/spec/mdc-dialog/classes/overflow-top.html.windows_firefox_65.png", "desktop_windows_ie@11": "https://storage.googleapis.com/mdc-web-screenshot-tests/advorak/2018/09/21/16_50_45_748/spec/mdc-dialog/classes/overflow-top.html.windows_ie_11.png" } }, @@ -456,18 +456,18 @@ } }, "spec/mdc-dialog/mixins/max-height.html": { - "public_url": "https://storage.googleapis.com/mdc-web-screenshot-tests/travis/2018/11/20/22_18_39_902/spec/mdc-dialog/mixins/max-height.html?utm_source=golden_json", + "public_url": "https://storage.googleapis.com/mdc-web-screenshot-tests/advorak/2019/02/11/22_13_08_557/spec/mdc-dialog/mixins/max-height.html?utm_source=golden_json", "screenshots": { - "desktop_windows_chrome@latest": "https://storage.googleapis.com/mdc-web-screenshot-tests/travis/2018/10/19/20_00_07_456/spec/mdc-dialog/mixins/max-height.html.windows_chrome_69.png", + "desktop_windows_chrome@latest": "https://storage.googleapis.com/mdc-web-screenshot-tests/advorak/2019/02/11/22_13_08_557/spec/mdc-dialog/mixins/max-height.html.windows_chrome_72.png", "desktop_windows_firefox@latest": "https://storage.googleapis.com/mdc-web-screenshot-tests/travis/2018/11/20/22_18_39_902/spec/mdc-dialog/mixins/max-height.html.windows_firefox_63.png", "desktop_windows_ie@11": "https://storage.googleapis.com/mdc-web-screenshot-tests/advorak/2018/09/21/16_50_45_748/spec/mdc-dialog/mixins/max-height.html.windows_ie_11.png" } }, "spec/mdc-dialog/mixins/max-width.html": { - "public_url": "https://storage.googleapis.com/mdc-web-screenshot-tests/travis/2018/11/20/22_18_39_902/spec/mdc-dialog/mixins/max-width.html?utm_source=golden_json", + "public_url": "https://storage.googleapis.com/mdc-web-screenshot-tests/advorak/2019/02/11/22_13_08_557/spec/mdc-dialog/mixins/max-width.html?utm_source=golden_json", "screenshots": { - "desktop_windows_chrome@latest": "https://storage.googleapis.com/mdc-web-screenshot-tests/travis/2018/10/19/20_00_07_456/spec/mdc-dialog/mixins/max-width.html.windows_chrome_69.png", - "desktop_windows_firefox@latest": "https://storage.googleapis.com/mdc-web-screenshot-tests/travis/2018/11/20/22_18_39_902/spec/mdc-dialog/mixins/max-width.html.windows_firefox_63.png", + "desktop_windows_chrome@latest": "https://storage.googleapis.com/mdc-web-screenshot-tests/advorak/2019/02/11/22_13_08_557/spec/mdc-dialog/mixins/max-width.html.windows_chrome_72.png", + "desktop_windows_firefox@latest": "https://storage.googleapis.com/mdc-web-screenshot-tests/advorak/2019/02/11/21_55_33_374/spec/mdc-dialog/mixins/max-width.html.windows_firefox_65.png", "desktop_windows_ie@11": "https://storage.googleapis.com/mdc-web-screenshot-tests/advorak/2018/09/21/16_50_45_748/spec/mdc-dialog/mixins/max-width.html.windows_ie_11.png" } }, @@ -488,10 +488,10 @@ } }, "spec/mdc-dialog/mixins/scroll-divider-color.html": { - "public_url": "https://storage.googleapis.com/mdc-web-screenshot-tests/advorak/2018/09/21/23_10_20_654/spec/mdc-dialog/mixins/scroll-divider-color.html?utm_source=golden_json", + "public_url": "https://storage.googleapis.com/mdc-web-screenshot-tests/advorak/2019/02/11/21_55_33_374/spec/mdc-dialog/mixins/scroll-divider-color.html?utm_source=golden_json", "screenshots": { "desktop_windows_chrome@latest": "https://storage.googleapis.com/mdc-web-screenshot-tests/advorak/2018/09/21/16_50_45_748/spec/mdc-dialog/mixins/scroll-divider-color.html.windows_chrome_69.png", - "desktop_windows_firefox@latest": "https://storage.googleapis.com/mdc-web-screenshot-tests/advorak/2018/09/21/16_50_45_748/spec/mdc-dialog/mixins/scroll-divider-color.html.windows_firefox_62.png", + "desktop_windows_firefox@latest": "https://storage.googleapis.com/mdc-web-screenshot-tests/advorak/2019/02/11/21_55_33_374/spec/mdc-dialog/mixins/scroll-divider-color.html.windows_firefox_65.png", "desktop_windows_ie@11": "https://storage.googleapis.com/mdc-web-screenshot-tests/advorak/2018/09/21/16_50_45_748/spec/mdc-dialog/mixins/scroll-divider-color.html.windows_ie_11.png" } }, @@ -608,10 +608,10 @@ } }, "spec/mdc-fab/classes/mini.html": { - "public_url": "https://storage.googleapis.com/mdc-web-screenshot-tests/travis/2018/11/20/22_18_39_902/spec/mdc-fab/classes/mini.html?utm_source=golden_json", + "public_url": "https://storage.googleapis.com/mdc-web-screenshot-tests/advorak/2019/02/11/21_55_33_374/spec/mdc-fab/classes/mini.html?utm_source=golden_json", "screenshots": { "desktop_windows_chrome@latest": "https://storage.googleapis.com/mdc-web-screenshot-tests/advorak/2018/07/17/22_50_36_536/spec/mdc-fab/classes/mini.html.windows_chrome_67.png", - "desktop_windows_firefox@latest": "https://storage.googleapis.com/mdc-web-screenshot-tests/travis/2018/11/20/22_18_39_902/spec/mdc-fab/classes/mini.html.windows_firefox_63.png", + "desktop_windows_firefox@latest": "https://storage.googleapis.com/mdc-web-screenshot-tests/advorak/2019/02/11/21_55_33_374/spec/mdc-fab/classes/mini.html.windows_firefox_65.png", "desktop_windows_ie@11": "https://storage.googleapis.com/mdc-web-screenshot-tests/advorak/2018/07/17/22_50_36_536/spec/mdc-fab/classes/mini.html.windows_ie_11.png" } }, @@ -672,34 +672,34 @@ } }, "spec/mdc-image-list/classes/standard-with-text-protection.html": { - "public_url": "https://storage.googleapis.com/mdc-web-screenshot-tests/advorak/2018/09/26/06_08_27_877/spec/mdc-image-list/classes/standard-with-text-protection.html?utm_source=golden_json", + "public_url": "https://storage.googleapis.com/mdc-web-screenshot-tests/advorak/2019/02/11/21_55_33_374/spec/mdc-image-list/classes/standard-with-text-protection.html?utm_source=golden_json", "screenshots": { "desktop_windows_chrome@latest": "https://storage.googleapis.com/mdc-web-screenshot-tests/advorak/2018/09/26/06_08_27_877/spec/mdc-image-list/classes/standard-with-text-protection.html.windows_chrome_69.png", - "desktop_windows_firefox@latest": "https://storage.googleapis.com/mdc-web-screenshot-tests/advorak/2018/09/26/06_08_27_877/spec/mdc-image-list/classes/standard-with-text-protection.html.windows_firefox_62.png", + "desktop_windows_firefox@latest": "https://storage.googleapis.com/mdc-web-screenshot-tests/advorak/2019/02/11/21_55_33_374/spec/mdc-image-list/classes/standard-with-text-protection.html.windows_firefox_65.png", "desktop_windows_ie@11": "https://storage.googleapis.com/mdc-web-screenshot-tests/advorak/2018/09/26/06_08_27_877/spec/mdc-image-list/classes/standard-with-text-protection.html.windows_ie_11.png" } }, "spec/mdc-image-list/classes/standard.html": { - "public_url": "https://storage.googleapis.com/mdc-web-screenshot-tests/advorak/2018/09/26/06_08_27_877/spec/mdc-image-list/classes/standard.html?utm_source=golden_json", + "public_url": "https://storage.googleapis.com/mdc-web-screenshot-tests/advorak/2019/02/11/21_55_33_374/spec/mdc-image-list/classes/standard.html?utm_source=golden_json", "screenshots": { "desktop_windows_chrome@latest": "https://storage.googleapis.com/mdc-web-screenshot-tests/advorak/2018/09/26/06_08_27_877/spec/mdc-image-list/classes/standard.html.windows_chrome_69.png", - "desktop_windows_firefox@latest": "https://storage.googleapis.com/mdc-web-screenshot-tests/advorak/2018/09/26/06_08_27_877/spec/mdc-image-list/classes/standard.html.windows_firefox_62.png", + "desktop_windows_firefox@latest": "https://storage.googleapis.com/mdc-web-screenshot-tests/advorak/2019/02/11/21_55_33_374/spec/mdc-image-list/classes/standard.html.windows_firefox_65.png", "desktop_windows_ie@11": "https://storage.googleapis.com/mdc-web-screenshot-tests/advorak/2018/09/26/06_08_27_877/spec/mdc-image-list/classes/standard.html.windows_ie_11.png" } }, "spec/mdc-image-list/mixins/standard-shape-radius.html": { - "public_url": "https://storage.googleapis.com/mdc-web-screenshot-tests/advorak/2018/09/26/06_08_27_877/spec/mdc-image-list/mixins/standard-shape-radius.html?utm_source=golden_json", + "public_url": "https://storage.googleapis.com/mdc-web-screenshot-tests/advorak/2019/02/11/21_55_33_374/spec/mdc-image-list/mixins/standard-shape-radius.html?utm_source=golden_json", "screenshots": { "desktop_windows_chrome@latest": "https://storage.googleapis.com/mdc-web-screenshot-tests/advorak/2018/09/26/06_08_27_877/spec/mdc-image-list/mixins/standard-shape-radius.html.windows_chrome_69.png", - "desktop_windows_firefox@latest": "https://storage.googleapis.com/mdc-web-screenshot-tests/advorak/2018/09/26/06_08_27_877/spec/mdc-image-list/mixins/standard-shape-radius.html.windows_firefox_62.png", + "desktop_windows_firefox@latest": "https://storage.googleapis.com/mdc-web-screenshot-tests/advorak/2019/02/11/21_55_33_374/spec/mdc-image-list/mixins/standard-shape-radius.html.windows_firefox_65.png", "desktop_windows_ie@11": "https://storage.googleapis.com/mdc-web-screenshot-tests/advorak/2018/09/26/06_08_27_877/spec/mdc-image-list/mixins/standard-shape-radius.html.windows_ie_11.png" } }, "spec/mdc-image-list/mixins/standard-with-text-protection-shape-radius.html": { - "public_url": "https://storage.googleapis.com/mdc-web-screenshot-tests/advorak/2018/09/26/06_08_27_877/spec/mdc-image-list/mixins/standard-with-text-protection-shape-radius.html?utm_source=golden_json", + "public_url": "https://storage.googleapis.com/mdc-web-screenshot-tests/advorak/2019/02/11/21_55_33_374/spec/mdc-image-list/mixins/standard-with-text-protection-shape-radius.html?utm_source=golden_json", "screenshots": { "desktop_windows_chrome@latest": "https://storage.googleapis.com/mdc-web-screenshot-tests/advorak/2018/09/26/06_08_27_877/spec/mdc-image-list/mixins/standard-with-text-protection-shape-radius.html.windows_chrome_69.png", - "desktop_windows_firefox@latest": "https://storage.googleapis.com/mdc-web-screenshot-tests/advorak/2018/09/26/06_08_27_877/spec/mdc-image-list/mixins/standard-with-text-protection-shape-radius.html.windows_firefox_62.png", + "desktop_windows_firefox@latest": "https://storage.googleapis.com/mdc-web-screenshot-tests/advorak/2019/02/11/21_55_33_374/spec/mdc-image-list/mixins/standard-with-text-protection-shape-radius.html.windows_firefox_65.png", "desktop_windows_ie@11": "https://storage.googleapis.com/mdc-web-screenshot-tests/advorak/2018/09/26/06_08_27_877/spec/mdc-image-list/mixins/standard-with-text-protection-shape-radius.html.windows_ie_11.png" } }, @@ -768,10 +768,10 @@ } }, "spec/mdc-menu/classes/menu-selection-group.html": { - "public_url": "https://storage.googleapis.com/mdc-web-screenshot-tests/travis/2019/01/31/16_07_46_502/spec/mdc-menu/classes/menu-selection-group.html?utm_source=golden_json", + "public_url": "https://storage.googleapis.com/mdc-web-screenshot-tests/advorak/2019/02/11/21_55_33_374/spec/mdc-menu/classes/menu-selection-group.html?utm_source=golden_json", "screenshots": { "desktop_windows_chrome@latest": "https://storage.googleapis.com/mdc-web-screenshot-tests/travis/2019/01/31/16_07_46_502/spec/mdc-menu/classes/menu-selection-group.html.windows_chrome_71.png", - "desktop_windows_firefox@latest": "https://storage.googleapis.com/mdc-web-screenshot-tests/travis/2019/01/31/16_07_46_502/spec/mdc-menu/classes/menu-selection-group.html.windows_firefox_64.png", + "desktop_windows_firefox@latest": "https://storage.googleapis.com/mdc-web-screenshot-tests/advorak/2019/02/11/21_55_33_374/spec/mdc-menu/classes/menu-selection-group.html.windows_firefox_65.png", "desktop_windows_ie@11": "https://storage.googleapis.com/mdc-web-screenshot-tests/travis/2019/01/31/16_07_46_502/spec/mdc-menu/classes/menu-selection-group.html.windows_ie_11.png" } }, @@ -800,18 +800,18 @@ } }, "spec/mdc-select/classes/baseline-no-js.html": { - "public_url": "https://storage.googleapis.com/mdc-web-screenshot-tests/travis/2018/11/21/19_18_38_795/spec/mdc-select/classes/baseline-no-js.html?utm_source=golden_json", + "public_url": "https://storage.googleapis.com/mdc-web-screenshot-tests/advorak/2019/02/11/21_55_33_374/spec/mdc-select/classes/baseline-no-js.html?utm_source=golden_json", "screenshots": { "desktop_windows_chrome@latest": "https://storage.googleapis.com/mdc-web-screenshot-tests/travis/2018/11/21/19_18_38_795/spec/mdc-select/classes/baseline-no-js.html.windows_chrome_70.png", - "desktop_windows_firefox@latest": "https://storage.googleapis.com/mdc-web-screenshot-tests/travis/2018/11/21/19_18_38_795/spec/mdc-select/classes/baseline-no-js.html.windows_firefox_63.png", + "desktop_windows_firefox@latest": "https://storage.googleapis.com/mdc-web-screenshot-tests/advorak/2019/02/11/21_55_33_374/spec/mdc-select/classes/baseline-no-js.html.windows_firefox_65.png", "desktop_windows_ie@11": "https://storage.googleapis.com/mdc-web-screenshot-tests/travis/2018/11/21/19_18_38_795/spec/mdc-select/classes/baseline-no-js.html.windows_ie_11.png" } }, "spec/mdc-select/classes/baseline.html": { - "public_url": "https://storage.googleapis.com/mdc-web-screenshot-tests/travis/2018/11/21/19_18_38_795/spec/mdc-select/classes/baseline.html?utm_source=golden_json", + "public_url": "https://storage.googleapis.com/mdc-web-screenshot-tests/advorak/2019/02/11/21_55_33_374/spec/mdc-select/classes/baseline.html?utm_source=golden_json", "screenshots": { "desktop_windows_chrome@latest": "https://storage.googleapis.com/mdc-web-screenshot-tests/travis/2018/11/21/19_18_38_795/spec/mdc-select/classes/baseline.html.windows_chrome_70.png", - "desktop_windows_firefox@latest": "https://storage.googleapis.com/mdc-web-screenshot-tests/travis/2018/11/21/19_18_38_795/spec/mdc-select/classes/baseline.html.windows_firefox_63.png", + "desktop_windows_firefox@latest": "https://storage.googleapis.com/mdc-web-screenshot-tests/advorak/2019/02/11/21_55_33_374/spec/mdc-select/classes/baseline.html.windows_firefox_65.png", "desktop_windows_ie@11": "https://storage.googleapis.com/mdc-web-screenshot-tests/travis/2018/11/21/19_18_38_795/spec/mdc-select/classes/baseline.html.windows_ie_11.png" } }, @@ -824,18 +824,18 @@ } }, "spec/mdc-select/classes/enhanced-baseline-no-js.html": { - "public_url": "https://storage.googleapis.com/mdc-web-screenshot-tests/travis/2018/11/21/19_18_38_795/spec/mdc-select/classes/enhanced-baseline-no-js.html?utm_source=golden_json", + "public_url": "https://storage.googleapis.com/mdc-web-screenshot-tests/advorak/2019/02/11/21_55_33_374/spec/mdc-select/classes/enhanced-baseline-no-js.html?utm_source=golden_json", "screenshots": { "desktop_windows_chrome@latest": "https://storage.googleapis.com/mdc-web-screenshot-tests/travis/2018/11/21/19_18_38_795/spec/mdc-select/classes/enhanced-baseline-no-js.html.windows_chrome_70.png", - "desktop_windows_firefox@latest": "https://storage.googleapis.com/mdc-web-screenshot-tests/travis/2018/11/21/19_18_38_795/spec/mdc-select/classes/enhanced-baseline-no-js.html.windows_firefox_63.png", + "desktop_windows_firefox@latest": "https://storage.googleapis.com/mdc-web-screenshot-tests/advorak/2019/02/11/21_55_33_374/spec/mdc-select/classes/enhanced-baseline-no-js.html.windows_firefox_65.png", "desktop_windows_ie@11": "https://storage.googleapis.com/mdc-web-screenshot-tests/travis/2018/11/21/19_18_38_795/spec/mdc-select/classes/enhanced-baseline-no-js.html.windows_ie_11.png" } }, "spec/mdc-select/classes/enhanced-baseline.html": { - "public_url": "https://storage.googleapis.com/mdc-web-screenshot-tests/travis/2018/11/21/19_18_38_795/spec/mdc-select/classes/enhanced-baseline.html?utm_source=golden_json", + "public_url": "https://storage.googleapis.com/mdc-web-screenshot-tests/advorak/2019/02/11/21_55_33_374/spec/mdc-select/classes/enhanced-baseline.html?utm_source=golden_json", "screenshots": { "desktop_windows_chrome@latest": "https://storage.googleapis.com/mdc-web-screenshot-tests/travis/2018/11/21/19_18_38_795/spec/mdc-select/classes/enhanced-baseline.html.windows_chrome_70.png", - "desktop_windows_firefox@latest": "https://storage.googleapis.com/mdc-web-screenshot-tests/travis/2018/11/21/19_18_38_795/spec/mdc-select/classes/enhanced-baseline.html.windows_firefox_63.png", + "desktop_windows_firefox@latest": "https://storage.googleapis.com/mdc-web-screenshot-tests/advorak/2019/02/11/21_55_33_374/spec/mdc-select/classes/enhanced-baseline.html.windows_firefox_65.png", "desktop_windows_ie@11": "https://storage.googleapis.com/mdc-web-screenshot-tests/travis/2018/11/21/19_18_38_795/spec/mdc-select/classes/enhanced-baseline.html.windows_ie_11.png" } }, @@ -848,130 +848,130 @@ } }, "spec/mdc-select/classes/enhanced-helper-text-persistent.html": { - "public_url": "https://storage.googleapis.com/mdc-web-screenshot-tests/travis/2018/11/21/19_18_38_795/spec/mdc-select/classes/enhanced-helper-text-persistent.html?utm_source=golden_json", + "public_url": "https://storage.googleapis.com/mdc-web-screenshot-tests/advorak/2019/02/11/21_55_33_374/spec/mdc-select/classes/enhanced-helper-text-persistent.html?utm_source=golden_json", "screenshots": { "desktop_windows_chrome@latest": "https://storage.googleapis.com/mdc-web-screenshot-tests/travis/2018/11/21/19_18_38_795/spec/mdc-select/classes/enhanced-helper-text-persistent.html.windows_chrome_70.png", - "desktop_windows_firefox@latest": "https://storage.googleapis.com/mdc-web-screenshot-tests/travis/2018/11/21/19_18_38_795/spec/mdc-select/classes/enhanced-helper-text-persistent.html.windows_firefox_63.png", + "desktop_windows_firefox@latest": "https://storage.googleapis.com/mdc-web-screenshot-tests/advorak/2019/02/11/21_55_33_374/spec/mdc-select/classes/enhanced-helper-text-persistent.html.windows_firefox_65.png", "desktop_windows_ie@11": "https://storage.googleapis.com/mdc-web-screenshot-tests/travis/2018/11/21/19_18_38_795/spec/mdc-select/classes/enhanced-helper-text-persistent.html.windows_ie_11.png" } }, "spec/mdc-select/classes/enhanced-helper-text.html": { - "public_url": "https://storage.googleapis.com/mdc-web-screenshot-tests/travis/2018/11/21/19_18_38_795/spec/mdc-select/classes/enhanced-helper-text.html?utm_source=golden_json", + "public_url": "https://storage.googleapis.com/mdc-web-screenshot-tests/advorak/2019/02/11/21_55_33_374/spec/mdc-select/classes/enhanced-helper-text.html?utm_source=golden_json", "screenshots": { "desktop_windows_chrome@latest": "https://storage.googleapis.com/mdc-web-screenshot-tests/travis/2018/11/21/19_18_38_795/spec/mdc-select/classes/enhanced-helper-text.html.windows_chrome_70.png", - "desktop_windows_firefox@latest": "https://storage.googleapis.com/mdc-web-screenshot-tests/travis/2018/11/21/19_18_38_795/spec/mdc-select/classes/enhanced-helper-text.html.windows_firefox_63.png", + "desktop_windows_firefox@latest": "https://storage.googleapis.com/mdc-web-screenshot-tests/advorak/2019/02/11/21_55_33_374/spec/mdc-select/classes/enhanced-helper-text.html.windows_firefox_65.png", "desktop_windows_ie@11": "https://storage.googleapis.com/mdc-web-screenshot-tests/travis/2018/11/21/19_18_38_795/spec/mdc-select/classes/enhanced-helper-text.html.windows_ie_11.png" } }, "spec/mdc-select/classes/enhanced-invalid-helper-text-persistent-validation-msg.html": { - "public_url": "https://storage.googleapis.com/mdc-web-screenshot-tests/travis/2018/11/21/19_18_38_795/spec/mdc-select/classes/enhanced-invalid-helper-text-persistent-validation-msg.html?utm_source=golden_json", + "public_url": "https://storage.googleapis.com/mdc-web-screenshot-tests/advorak/2019/02/11/21_55_33_374/spec/mdc-select/classes/enhanced-invalid-helper-text-persistent-validation-msg.html?utm_source=golden_json", "screenshots": { "desktop_windows_chrome@latest": "https://storage.googleapis.com/mdc-web-screenshot-tests/travis/2018/11/21/19_18_38_795/spec/mdc-select/classes/enhanced-invalid-helper-text-persistent-validation-msg.html.windows_chrome_70.png", - "desktop_windows_firefox@latest": "https://storage.googleapis.com/mdc-web-screenshot-tests/travis/2018/11/21/19_18_38_795/spec/mdc-select/classes/enhanced-invalid-helper-text-persistent-validation-msg.html.windows_firefox_63.png", + "desktop_windows_firefox@latest": "https://storage.googleapis.com/mdc-web-screenshot-tests/advorak/2019/02/11/21_55_33_374/spec/mdc-select/classes/enhanced-invalid-helper-text-persistent-validation-msg.html.windows_firefox_65.png", "desktop_windows_ie@11": "https://storage.googleapis.com/mdc-web-screenshot-tests/travis/2018/11/21/19_18_38_795/spec/mdc-select/classes/enhanced-invalid-helper-text-persistent-validation-msg.html.windows_ie_11.png" } }, "spec/mdc-select/classes/enhanced-invalid-helper-text-persistent.html": { - "public_url": "https://storage.googleapis.com/mdc-web-screenshot-tests/travis/2018/11/21/19_18_38_795/spec/mdc-select/classes/enhanced-invalid-helper-text-persistent.html?utm_source=golden_json", + "public_url": "https://storage.googleapis.com/mdc-web-screenshot-tests/advorak/2019/02/11/21_55_33_374/spec/mdc-select/classes/enhanced-invalid-helper-text-persistent.html?utm_source=golden_json", "screenshots": { "desktop_windows_chrome@latest": "https://storage.googleapis.com/mdc-web-screenshot-tests/travis/2018/11/21/19_18_38_795/spec/mdc-select/classes/enhanced-invalid-helper-text-persistent.html.windows_chrome_70.png", - "desktop_windows_firefox@latest": "https://storage.googleapis.com/mdc-web-screenshot-tests/travis/2018/11/21/19_18_38_795/spec/mdc-select/classes/enhanced-invalid-helper-text-persistent.html.windows_firefox_63.png", + "desktop_windows_firefox@latest": "https://storage.googleapis.com/mdc-web-screenshot-tests/advorak/2019/02/11/21_55_33_374/spec/mdc-select/classes/enhanced-invalid-helper-text-persistent.html.windows_firefox_65.png", "desktop_windows_ie@11": "https://storage.googleapis.com/mdc-web-screenshot-tests/travis/2018/11/21/19_18_38_795/spec/mdc-select/classes/enhanced-invalid-helper-text-persistent.html.windows_ie_11.png" } }, "spec/mdc-select/classes/enhanced-invalid-helper-text.html": { - "public_url": "https://storage.googleapis.com/mdc-web-screenshot-tests/travis/2018/11/21/19_18_38_795/spec/mdc-select/classes/enhanced-invalid-helper-text.html?utm_source=golden_json", + "public_url": "https://storage.googleapis.com/mdc-web-screenshot-tests/advorak/2019/02/11/21_55_33_374/spec/mdc-select/classes/enhanced-invalid-helper-text.html?utm_source=golden_json", "screenshots": { "desktop_windows_chrome@latest": "https://storage.googleapis.com/mdc-web-screenshot-tests/travis/2018/11/21/19_18_38_795/spec/mdc-select/classes/enhanced-invalid-helper-text.html.windows_chrome_70.png", - "desktop_windows_firefox@latest": "https://storage.googleapis.com/mdc-web-screenshot-tests/travis/2018/11/21/19_18_38_795/spec/mdc-select/classes/enhanced-invalid-helper-text.html.windows_firefox_63.png", + "desktop_windows_firefox@latest": "https://storage.googleapis.com/mdc-web-screenshot-tests/advorak/2019/02/11/21_55_33_374/spec/mdc-select/classes/enhanced-invalid-helper-text.html.windows_firefox_65.png", "desktop_windows_ie@11": "https://storage.googleapis.com/mdc-web-screenshot-tests/travis/2018/11/21/19_18_38_795/spec/mdc-select/classes/enhanced-invalid-helper-text.html.windows_ie_11.png" } }, "spec/mdc-select/classes/enhanced-invalid.html": { - "public_url": "https://storage.googleapis.com/mdc-web-screenshot-tests/travis/2018/11/21/19_18_38_795/spec/mdc-select/classes/enhanced-invalid.html?utm_source=golden_json", + "public_url": "https://storage.googleapis.com/mdc-web-screenshot-tests/advorak/2019/02/11/21_55_33_374/spec/mdc-select/classes/enhanced-invalid.html?utm_source=golden_json", "screenshots": { "desktop_windows_chrome@latest": "https://storage.googleapis.com/mdc-web-screenshot-tests/travis/2018/11/21/19_18_38_795/spec/mdc-select/classes/enhanced-invalid.html.windows_chrome_70.png", - "desktop_windows_firefox@latest": "https://storage.googleapis.com/mdc-web-screenshot-tests/travis/2018/11/21/19_18_38_795/spec/mdc-select/classes/enhanced-invalid.html.windows_firefox_63.png", + "desktop_windows_firefox@latest": "https://storage.googleapis.com/mdc-web-screenshot-tests/advorak/2019/02/11/21_55_33_374/spec/mdc-select/classes/enhanced-invalid.html.windows_firefox_65.png", "desktop_windows_ie@11": "https://storage.googleapis.com/mdc-web-screenshot-tests/travis/2018/11/21/19_18_38_795/spec/mdc-select/classes/enhanced-invalid.html.windows_ie_11.png" } }, "spec/mdc-select/classes/enhanced-leading-icon-svg.html": { - "public_url": "https://storage.googleapis.com/mdc-web-screenshot-tests/travis/2018/11/21/19_18_38_795/spec/mdc-select/classes/enhanced-leading-icon-svg.html?utm_source=golden_json", + "public_url": "https://storage.googleapis.com/mdc-web-screenshot-tests/advorak/2019/02/11/21_55_33_374/spec/mdc-select/classes/enhanced-leading-icon-svg.html?utm_source=golden_json", "screenshots": { "desktop_windows_chrome@latest": "https://storage.googleapis.com/mdc-web-screenshot-tests/travis/2018/11/21/19_18_38_795/spec/mdc-select/classes/enhanced-leading-icon-svg.html.windows_chrome_70.png", - "desktop_windows_firefox@latest": "https://storage.googleapis.com/mdc-web-screenshot-tests/travis/2018/11/21/19_18_38_795/spec/mdc-select/classes/enhanced-leading-icon-svg.html.windows_firefox_63.png", + "desktop_windows_firefox@latest": "https://storage.googleapis.com/mdc-web-screenshot-tests/advorak/2019/02/11/21_55_33_374/spec/mdc-select/classes/enhanced-leading-icon-svg.html.windows_firefox_65.png", "desktop_windows_ie@11": "https://storage.googleapis.com/mdc-web-screenshot-tests/travis/2018/11/21/19_18_38_795/spec/mdc-select/classes/enhanced-leading-icon-svg.html.windows_ie_11.png" } }, "spec/mdc-select/classes/enhanced-leading-icon.html": { - "public_url": "https://storage.googleapis.com/mdc-web-screenshot-tests/travis/2018/11/21/19_18_38_795/spec/mdc-select/classes/enhanced-leading-icon.html?utm_source=golden_json", + "public_url": "https://storage.googleapis.com/mdc-web-screenshot-tests/advorak/2019/02/11/21_55_33_374/spec/mdc-select/classes/enhanced-leading-icon.html?utm_source=golden_json", "screenshots": { "desktop_windows_chrome@latest": "https://storage.googleapis.com/mdc-web-screenshot-tests/travis/2018/11/21/19_18_38_795/spec/mdc-select/classes/enhanced-leading-icon.html.windows_chrome_70.png", - "desktop_windows_firefox@latest": "https://storage.googleapis.com/mdc-web-screenshot-tests/travis/2018/11/21/19_18_38_795/spec/mdc-select/classes/enhanced-leading-icon.html.windows_firefox_63.png", + "desktop_windows_firefox@latest": "https://storage.googleapis.com/mdc-web-screenshot-tests/advorak/2019/02/11/21_55_33_374/spec/mdc-select/classes/enhanced-leading-icon.html.windows_firefox_65.png", "desktop_windows_ie@11": "https://storage.googleapis.com/mdc-web-screenshot-tests/travis/2018/11/21/19_18_38_795/spec/mdc-select/classes/enhanced-leading-icon.html.windows_ie_11.png" } }, "spec/mdc-select/classes/helper-text-persistent.html": { - "public_url": "https://storage.googleapis.com/mdc-web-screenshot-tests/travis/2018/11/30/05_20_17_198/spec/mdc-select/classes/helper-text-persistent.html?utm_source=golden_json", + "public_url": "https://storage.googleapis.com/mdc-web-screenshot-tests/advorak/2019/02/11/21_55_33_374/spec/mdc-select/classes/helper-text-persistent.html?utm_source=golden_json", "screenshots": { "desktop_windows_chrome@latest": "https://storage.googleapis.com/mdc-web-screenshot-tests/travis/2018/11/21/19_18_38_795/spec/mdc-select/classes/helper-text-persistent.html.windows_chrome_70.png", - "desktop_windows_firefox@latest": "https://storage.googleapis.com/mdc-web-screenshot-tests/travis/2018/11/21/19_18_38_795/spec/mdc-select/classes/helper-text-persistent.html.windows_firefox_63.png", + "desktop_windows_firefox@latest": "https://storage.googleapis.com/mdc-web-screenshot-tests/advorak/2019/02/11/21_55_33_374/spec/mdc-select/classes/helper-text-persistent.html.windows_firefox_65.png", "desktop_windows_ie@11": "https://storage.googleapis.com/mdc-web-screenshot-tests/travis/2018/11/30/05_20_17_198/spec/mdc-select/classes/helper-text-persistent.html.windows_ie_11.png" } }, "spec/mdc-select/classes/helper-text.html": { - "public_url": "https://storage.googleapis.com/mdc-web-screenshot-tests/travis/2018/11/21/19_18_38_795/spec/mdc-select/classes/helper-text.html?utm_source=golden_json", + "public_url": "https://storage.googleapis.com/mdc-web-screenshot-tests/advorak/2019/02/11/21_55_33_374/spec/mdc-select/classes/helper-text.html?utm_source=golden_json", "screenshots": { "desktop_windows_chrome@latest": "https://storage.googleapis.com/mdc-web-screenshot-tests/travis/2018/11/21/19_18_38_795/spec/mdc-select/classes/helper-text.html.windows_chrome_70.png", - "desktop_windows_firefox@latest": "https://storage.googleapis.com/mdc-web-screenshot-tests/travis/2018/11/21/19_18_38_795/spec/mdc-select/classes/helper-text.html.windows_firefox_63.png", + "desktop_windows_firefox@latest": "https://storage.googleapis.com/mdc-web-screenshot-tests/advorak/2019/02/11/21_55_33_374/spec/mdc-select/classes/helper-text.html.windows_firefox_65.png", "desktop_windows_ie@11": "https://storage.googleapis.com/mdc-web-screenshot-tests/travis/2018/11/21/19_18_38_795/spec/mdc-select/classes/helper-text.html.windows_ie_11.png" } }, "spec/mdc-select/classes/invalid.html": { - "public_url": "https://storage.googleapis.com/mdc-web-screenshot-tests/travis/2018/11/21/19_18_38_795/spec/mdc-select/classes/invalid.html?utm_source=golden_json", + "public_url": "https://storage.googleapis.com/mdc-web-screenshot-tests/advorak/2019/02/11/21_55_33_374/spec/mdc-select/classes/invalid.html?utm_source=golden_json", "screenshots": { "desktop_windows_chrome@latest": "https://storage.googleapis.com/mdc-web-screenshot-tests/travis/2018/11/21/19_18_38_795/spec/mdc-select/classes/invalid.html.windows_chrome_70.png", - "desktop_windows_firefox@latest": "https://storage.googleapis.com/mdc-web-screenshot-tests/travis/2018/11/21/19_18_38_795/spec/mdc-select/classes/invalid.html.windows_firefox_63.png", + "desktop_windows_firefox@latest": "https://storage.googleapis.com/mdc-web-screenshot-tests/advorak/2019/02/11/21_55_33_374/spec/mdc-select/classes/invalid.html.windows_firefox_65.png", "desktop_windows_ie@11": "https://storage.googleapis.com/mdc-web-screenshot-tests/travis/2018/11/21/19_18_38_795/spec/mdc-select/classes/invalid.html.windows_ie_11.png" } }, "spec/mdc-select/classes/leading-icon-svg.html": { - "public_url": "https://storage.googleapis.com/mdc-web-screenshot-tests/travis/2018/11/21/19_18_38_795/spec/mdc-select/classes/leading-icon-svg.html?utm_source=golden_json", + "public_url": "https://storage.googleapis.com/mdc-web-screenshot-tests/advorak/2019/02/11/21_55_33_374/spec/mdc-select/classes/leading-icon-svg.html?utm_source=golden_json", "screenshots": { "desktop_windows_chrome@latest": "https://storage.googleapis.com/mdc-web-screenshot-tests/travis/2018/11/21/19_18_38_795/spec/mdc-select/classes/leading-icon-svg.html.windows_chrome_70.png", - "desktop_windows_firefox@latest": "https://storage.googleapis.com/mdc-web-screenshot-tests/travis/2018/11/21/19_18_38_795/spec/mdc-select/classes/leading-icon-svg.html.windows_firefox_63.png", + "desktop_windows_firefox@latest": "https://storage.googleapis.com/mdc-web-screenshot-tests/advorak/2019/02/11/21_55_33_374/spec/mdc-select/classes/leading-icon-svg.html.windows_firefox_65.png", "desktop_windows_ie@11": "https://storage.googleapis.com/mdc-web-screenshot-tests/travis/2018/11/21/19_18_38_795/spec/mdc-select/classes/leading-icon-svg.html.windows_ie_11.png" } }, "spec/mdc-select/classes/leading-icon.html": { - "public_url": "https://storage.googleapis.com/mdc-web-screenshot-tests/travis/2018/11/21/19_18_38_795/spec/mdc-select/classes/leading-icon.html?utm_source=golden_json", + "public_url": "https://storage.googleapis.com/mdc-web-screenshot-tests/advorak/2019/02/11/21_55_33_374/spec/mdc-select/classes/leading-icon.html?utm_source=golden_json", "screenshots": { "desktop_windows_chrome@latest": "https://storage.googleapis.com/mdc-web-screenshot-tests/travis/2018/11/21/19_18_38_795/spec/mdc-select/classes/leading-icon.html.windows_chrome_70.png", - "desktop_windows_firefox@latest": "https://storage.googleapis.com/mdc-web-screenshot-tests/travis/2018/11/21/19_18_38_795/spec/mdc-select/classes/leading-icon.html.windows_firefox_63.png", + "desktop_windows_firefox@latest": "https://storage.googleapis.com/mdc-web-screenshot-tests/advorak/2019/02/11/21_55_33_374/spec/mdc-select/classes/leading-icon.html.windows_firefox_65.png", "desktop_windows_ie@11": "https://storage.googleapis.com/mdc-web-screenshot-tests/travis/2018/11/21/19_18_38_795/spec/mdc-select/classes/leading-icon.html.windows_ie_11.png" } }, "spec/mdc-select/classes/required.html": { - "public_url": "https://storage.googleapis.com/mdc-web-screenshot-tests/travis/2018/11/21/19_18_38_795/spec/mdc-select/classes/required.html?utm_source=golden_json", + "public_url": "https://storage.googleapis.com/mdc-web-screenshot-tests/advorak/2019/02/11/21_55_33_374/spec/mdc-select/classes/required.html?utm_source=golden_json", "screenshots": { "desktop_windows_chrome@latest": "https://storage.googleapis.com/mdc-web-screenshot-tests/travis/2018/11/21/19_18_38_795/spec/mdc-select/classes/required.html.windows_chrome_70.png", - "desktop_windows_firefox@latest": "https://storage.googleapis.com/mdc-web-screenshot-tests/travis/2018/11/21/19_18_38_795/spec/mdc-select/classes/required.html.windows_firefox_63.png", + "desktop_windows_firefox@latest": "https://storage.googleapis.com/mdc-web-screenshot-tests/advorak/2019/02/11/21_55_33_374/spec/mdc-select/classes/required.html.windows_firefox_65.png", "desktop_windows_ie@11": "https://storage.googleapis.com/mdc-web-screenshot-tests/travis/2018/11/21/19_18_38_795/spec/mdc-select/classes/required.html.windows_ie_11.png" } }, "spec/mdc-select/issues/3230-3496.html": { - "public_url": "https://storage.googleapis.com/mdc-web-screenshot-tests/travis/2018/11/21/19_18_38_795/spec/mdc-select/issues/3230-3496.html?utm_source=golden_json", + "public_url": "https://storage.googleapis.com/mdc-web-screenshot-tests/advorak/2019/02/11/21_55_33_374/spec/mdc-select/issues/3230-3496.html?utm_source=golden_json", "screenshots": { "desktop_windows_chrome@latest": "https://storage.googleapis.com/mdc-web-screenshot-tests/travis/2018/11/21/19_18_38_795/spec/mdc-select/issues/3230-3496.html.windows_chrome_70.png", - "desktop_windows_firefox@latest": "https://storage.googleapis.com/mdc-web-screenshot-tests/travis/2018/11/21/19_18_38_795/spec/mdc-select/issues/3230-3496.html.windows_firefox_63.png", + "desktop_windows_firefox@latest": "https://storage.googleapis.com/mdc-web-screenshot-tests/advorak/2019/02/11/21_55_33_374/spec/mdc-select/issues/3230-3496.html.windows_firefox_65.png", "desktop_windows_ie@11": "https://storage.googleapis.com/mdc-web-screenshot-tests/travis/2018/11/21/19_18_38_795/spec/mdc-select/issues/3230-3496.html.windows_ie_11.png" } }, "spec/mdc-select/mixins/bottom-line-color.html": { - "public_url": "https://storage.googleapis.com/mdc-web-screenshot-tests/travis/2018/11/21/19_18_38_795/spec/mdc-select/mixins/bottom-line-color.html?utm_source=golden_json", + "public_url": "https://storage.googleapis.com/mdc-web-screenshot-tests/advorak/2019/02/11/21_55_33_374/spec/mdc-select/mixins/bottom-line-color.html?utm_source=golden_json", "screenshots": { "desktop_windows_chrome@latest": "https://storage.googleapis.com/mdc-web-screenshot-tests/travis/2018/11/21/19_18_38_795/spec/mdc-select/mixins/bottom-line-color.html.windows_chrome_70.png", - "desktop_windows_firefox@latest": "https://storage.googleapis.com/mdc-web-screenshot-tests/travis/2018/11/21/19_18_38_795/spec/mdc-select/mixins/bottom-line-color.html.windows_firefox_63.png", + "desktop_windows_firefox@latest": "https://storage.googleapis.com/mdc-web-screenshot-tests/advorak/2019/02/11/21_55_33_374/spec/mdc-select/mixins/bottom-line-color.html.windows_firefox_65.png", "desktop_windows_ie@11": "https://storage.googleapis.com/mdc-web-screenshot-tests/travis/2018/11/21/19_18_38_795/spec/mdc-select/mixins/bottom-line-color.html.windows_ie_11.png" } }, @@ -984,90 +984,90 @@ } }, "spec/mdc-select/mixins/enhanced-bottom-line-color.html": { - "public_url": "https://storage.googleapis.com/mdc-web-screenshot-tests/travis/2018/11/21/19_18_38_795/spec/mdc-select/mixins/enhanced-bottom-line-color.html?utm_source=golden_json", + "public_url": "https://storage.googleapis.com/mdc-web-screenshot-tests/advorak/2019/02/11/21_55_33_374/spec/mdc-select/mixins/enhanced-bottom-line-color.html?utm_source=golden_json", "screenshots": { "desktop_windows_chrome@latest": "https://storage.googleapis.com/mdc-web-screenshot-tests/travis/2018/11/21/19_18_38_795/spec/mdc-select/mixins/enhanced-bottom-line-color.html.windows_chrome_70.png", - "desktop_windows_firefox@latest": "https://storage.googleapis.com/mdc-web-screenshot-tests/travis/2018/10/12/14_43_26_041/spec/mdc-select/mixins/enhanced-bottom-line-color.html.windows_firefox_62.png", + "desktop_windows_firefox@latest": "https://storage.googleapis.com/mdc-web-screenshot-tests/advorak/2019/02/11/21_55_33_374/spec/mdc-select/mixins/enhanced-bottom-line-color.html.windows_firefox_65.png", "desktop_windows_ie@11": "https://storage.googleapis.com/mdc-web-screenshot-tests/travis/2018/11/21/19_18_38_795/spec/mdc-select/mixins/enhanced-bottom-line-color.html.windows_ie_11.png" } }, "spec/mdc-select/mixins/enhanced-container-fill-color.html": { - "public_url": "https://storage.googleapis.com/mdc-web-screenshot-tests/travis/2018/11/21/19_18_38_795/spec/mdc-select/mixins/enhanced-container-fill-color.html?utm_source=golden_json", + "public_url": "https://storage.googleapis.com/mdc-web-screenshot-tests/advorak/2019/02/11/21_55_33_374/spec/mdc-select/mixins/enhanced-container-fill-color.html?utm_source=golden_json", "screenshots": { - "desktop_windows_chrome@latest": "https://storage.googleapis.com/mdc-web-screenshot-tests/travis/2018/10/12/14_43_26_041/spec/mdc-select/mixins/enhanced-container-fill-color.html.windows_chrome_69.png", + "desktop_windows_chrome@latest": "https://storage.googleapis.com/mdc-web-screenshot-tests/advorak/2019/02/11/21_55_33_374/spec/mdc-select/mixins/enhanced-container-fill-color.html.windows_chrome_72.png", "desktop_windows_firefox@latest": "https://storage.googleapis.com/mdc-web-screenshot-tests/travis/2018/10/12/14_43_26_041/spec/mdc-select/mixins/enhanced-container-fill-color.html.windows_firefox_62.png", "desktop_windows_ie@11": "https://storage.googleapis.com/mdc-web-screenshot-tests/travis/2018/11/21/19_18_38_795/spec/mdc-select/mixins/enhanced-container-fill-color.html.windows_ie_11.png" } }, "spec/mdc-select/mixins/enhanced-ink-color.html": { - "public_url": "https://storage.googleapis.com/mdc-web-screenshot-tests/travis/2018/11/21/19_18_38_795/spec/mdc-select/mixins/enhanced-ink-color.html?utm_source=golden_json", + "public_url": "https://storage.googleapis.com/mdc-web-screenshot-tests/advorak/2019/02/11/21_55_33_374/spec/mdc-select/mixins/enhanced-ink-color.html?utm_source=golden_json", "screenshots": { "desktop_windows_chrome@latest": "https://storage.googleapis.com/mdc-web-screenshot-tests/travis/2018/11/21/19_18_38_795/spec/mdc-select/mixins/enhanced-ink-color.html.windows_chrome_70.png", - "desktop_windows_firefox@latest": "https://storage.googleapis.com/mdc-web-screenshot-tests/travis/2018/11/21/19_18_38_795/spec/mdc-select/mixins/enhanced-ink-color.html.windows_firefox_63.png", + "desktop_windows_firefox@latest": "https://storage.googleapis.com/mdc-web-screenshot-tests/advorak/2019/02/11/21_55_33_374/spec/mdc-select/mixins/enhanced-ink-color.html.windows_firefox_65.png", "desktop_windows_ie@11": "https://storage.googleapis.com/mdc-web-screenshot-tests/travis/2018/11/21/19_18_38_795/spec/mdc-select/mixins/enhanced-ink-color.html.windows_ie_11.png" } }, "spec/mdc-select/mixins/enhanced-label-color.html": { - "public_url": "https://storage.googleapis.com/mdc-web-screenshot-tests/travis/2018/11/21/19_18_38_795/spec/mdc-select/mixins/enhanced-label-color.html?utm_source=golden_json", + "public_url": "https://storage.googleapis.com/mdc-web-screenshot-tests/advorak/2019/02/11/21_55_33_374/spec/mdc-select/mixins/enhanced-label-color.html?utm_source=golden_json", "screenshots": { "desktop_windows_chrome@latest": "https://storage.googleapis.com/mdc-web-screenshot-tests/travis/2018/11/21/19_18_38_795/spec/mdc-select/mixins/enhanced-label-color.html.windows_chrome_70.png", - "desktop_windows_firefox@latest": "https://storage.googleapis.com/mdc-web-screenshot-tests/travis/2018/11/21/19_18_38_795/spec/mdc-select/mixins/enhanced-label-color.html.windows_firefox_63.png", + "desktop_windows_firefox@latest": "https://storage.googleapis.com/mdc-web-screenshot-tests/advorak/2019/02/11/21_55_33_374/spec/mdc-select/mixins/enhanced-label-color.html.windows_firefox_65.png", "desktop_windows_ie@11": "https://storage.googleapis.com/mdc-web-screenshot-tests/travis/2018/11/21/19_18_38_795/spec/mdc-select/mixins/enhanced-label-color.html.windows_ie_11.png" } }, "spec/mdc-select/mixins/enhanced-outline-color.html": { - "public_url": "https://storage.googleapis.com/mdc-web-screenshot-tests/travis/2018/11/21/19_18_38_795/spec/mdc-select/mixins/enhanced-outline-color.html?utm_source=golden_json", + "public_url": "https://storage.googleapis.com/mdc-web-screenshot-tests/advorak/2019/02/11/21_55_33_374/spec/mdc-select/mixins/enhanced-outline-color.html?utm_source=golden_json", "screenshots": { "desktop_windows_chrome@latest": "https://storage.googleapis.com/mdc-web-screenshot-tests/travis/2018/11/21/19_18_38_795/spec/mdc-select/mixins/enhanced-outline-color.html.windows_chrome_70.png", - "desktop_windows_firefox@latest": "https://storage.googleapis.com/mdc-web-screenshot-tests/travis/2018/11/21/19_18_38_795/spec/mdc-select/mixins/enhanced-outline-color.html.windows_firefox_63.png", + "desktop_windows_firefox@latest": "https://storage.googleapis.com/mdc-web-screenshot-tests/advorak/2019/02/11/21_55_33_374/spec/mdc-select/mixins/enhanced-outline-color.html.windows_firefox_65.png", "desktop_windows_ie@11": "https://storage.googleapis.com/mdc-web-screenshot-tests/travis/2018/11/21/19_18_38_795/spec/mdc-select/mixins/enhanced-outline-color.html.windows_ie_11.png" } }, "spec/mdc-select/mixins/enhanced-shape-radius.html": { - "public_url": "https://storage.googleapis.com/mdc-web-screenshot-tests/travis/2018/11/21/19_18_38_795/spec/mdc-select/mixins/enhanced-shape-radius.html?utm_source=golden_json", + "public_url": "https://storage.googleapis.com/mdc-web-screenshot-tests/advorak/2019/02/11/21_55_33_374/spec/mdc-select/mixins/enhanced-shape-radius.html?utm_source=golden_json", "screenshots": { "desktop_windows_chrome@latest": "https://storage.googleapis.com/mdc-web-screenshot-tests/travis/2018/11/21/19_18_38_795/spec/mdc-select/mixins/enhanced-shape-radius.html.windows_chrome_70.png", - "desktop_windows_firefox@latest": "https://storage.googleapis.com/mdc-web-screenshot-tests/travis/2018/11/21/19_18_38_795/spec/mdc-select/mixins/enhanced-shape-radius.html.windows_firefox_63.png", + "desktop_windows_firefox@latest": "https://storage.googleapis.com/mdc-web-screenshot-tests/advorak/2019/02/11/21_55_33_374/spec/mdc-select/mixins/enhanced-shape-radius.html.windows_firefox_65.png", "desktop_windows_ie@11": "https://storage.googleapis.com/mdc-web-screenshot-tests/travis/2018/11/21/19_18_38_795/spec/mdc-select/mixins/enhanced-shape-radius.html.windows_ie_11.png" } }, "spec/mdc-select/mixins/ink-color.html": { - "public_url": "https://storage.googleapis.com/mdc-web-screenshot-tests/travis/2018/11/21/19_18_38_795/spec/mdc-select/mixins/ink-color.html?utm_source=golden_json", + "public_url": "https://storage.googleapis.com/mdc-web-screenshot-tests/advorak/2019/02/11/21_55_33_374/spec/mdc-select/mixins/ink-color.html?utm_source=golden_json", "screenshots": { "desktop_windows_chrome@latest": "https://storage.googleapis.com/mdc-web-screenshot-tests/travis/2018/11/21/19_18_38_795/spec/mdc-select/mixins/ink-color.html.windows_chrome_70.png", - "desktop_windows_firefox@latest": "https://storage.googleapis.com/mdc-web-screenshot-tests/travis/2018/11/21/19_18_38_795/spec/mdc-select/mixins/ink-color.html.windows_firefox_63.png", + "desktop_windows_firefox@latest": "https://storage.googleapis.com/mdc-web-screenshot-tests/advorak/2019/02/11/21_55_33_374/spec/mdc-select/mixins/ink-color.html.windows_firefox_65.png", "desktop_windows_ie@11": "https://storage.googleapis.com/mdc-web-screenshot-tests/travis/2018/11/21/19_18_38_795/spec/mdc-select/mixins/ink-color.html.windows_ie_11.png" } }, "spec/mdc-select/mixins/label-color.html": { - "public_url": "https://storage.googleapis.com/mdc-web-screenshot-tests/travis/2018/11/21/19_18_38_795/spec/mdc-select/mixins/label-color.html?utm_source=golden_json", + "public_url": "https://storage.googleapis.com/mdc-web-screenshot-tests/advorak/2019/02/11/21_55_33_374/spec/mdc-select/mixins/label-color.html?utm_source=golden_json", "screenshots": { "desktop_windows_chrome@latest": "https://storage.googleapis.com/mdc-web-screenshot-tests/travis/2018/11/21/19_18_38_795/spec/mdc-select/mixins/label-color.html.windows_chrome_70.png", - "desktop_windows_firefox@latest": "https://storage.googleapis.com/mdc-web-screenshot-tests/travis/2018/11/21/19_18_38_795/spec/mdc-select/mixins/label-color.html.windows_firefox_63.png", + "desktop_windows_firefox@latest": "https://storage.googleapis.com/mdc-web-screenshot-tests/advorak/2019/02/11/21_55_33_374/spec/mdc-select/mixins/label-color.html.windows_firefox_65.png", "desktop_windows_ie@11": "https://storage.googleapis.com/mdc-web-screenshot-tests/travis/2018/11/21/19_18_38_795/spec/mdc-select/mixins/label-color.html.windows_ie_11.png" } }, "spec/mdc-select/mixins/outline-color.html": { - "public_url": "https://storage.googleapis.com/mdc-web-screenshot-tests/travis/2018/11/21/19_18_38_795/spec/mdc-select/mixins/outline-color.html?utm_source=golden_json", + "public_url": "https://storage.googleapis.com/mdc-web-screenshot-tests/advorak/2019/02/11/21_55_33_374/spec/mdc-select/mixins/outline-color.html?utm_source=golden_json", "screenshots": { "desktop_windows_chrome@latest": "https://storage.googleapis.com/mdc-web-screenshot-tests/travis/2018/11/21/19_18_38_795/spec/mdc-select/mixins/outline-color.html.windows_chrome_70.png", - "desktop_windows_firefox@latest": "https://storage.googleapis.com/mdc-web-screenshot-tests/travis/2018/11/21/19_18_38_795/spec/mdc-select/mixins/outline-color.html.windows_firefox_63.png", + "desktop_windows_firefox@latest": "https://storage.googleapis.com/mdc-web-screenshot-tests/advorak/2019/02/11/21_55_33_374/spec/mdc-select/mixins/outline-color.html.windows_firefox_65.png", "desktop_windows_ie@11": "https://storage.googleapis.com/mdc-web-screenshot-tests/travis/2018/11/21/19_18_38_795/spec/mdc-select/mixins/outline-color.html.windows_ie_11.png" } }, "spec/mdc-select/mixins/shape-radius.html": { - "public_url": "https://storage.googleapis.com/mdc-web-screenshot-tests/travis/2018/11/21/19_18_38_795/spec/mdc-select/mixins/shape-radius.html?utm_source=golden_json", + "public_url": "https://storage.googleapis.com/mdc-web-screenshot-tests/advorak/2019/02/11/21_55_33_374/spec/mdc-select/mixins/shape-radius.html?utm_source=golden_json", "screenshots": { "desktop_windows_chrome@latest": "https://storage.googleapis.com/mdc-web-screenshot-tests/travis/2018/11/21/19_18_38_795/spec/mdc-select/mixins/shape-radius.html.windows_chrome_70.png", - "desktop_windows_firefox@latest": "https://storage.googleapis.com/mdc-web-screenshot-tests/travis/2018/11/21/19_18_38_795/spec/mdc-select/mixins/shape-radius.html.windows_firefox_63.png", + "desktop_windows_firefox@latest": "https://storage.googleapis.com/mdc-web-screenshot-tests/advorak/2019/02/11/21_55_33_374/spec/mdc-select/mixins/shape-radius.html.windows_firefox_65.png", "desktop_windows_ie@11": "https://storage.googleapis.com/mdc-web-screenshot-tests/travis/2018/11/21/19_18_38_795/spec/mdc-select/mixins/shape-radius.html.windows_ie_11.png" } }, "spec/mdc-snackbar/classes/baseline-with-action.html": { - "public_url": "https://storage.googleapis.com/mdc-web-screenshot-tests/advorak/2018/12/05/21_03_57_990/spec/mdc-snackbar/classes/baseline-with-action.html?utm_source=golden_json", + "public_url": "https://storage.googleapis.com/mdc-web-screenshot-tests/advorak/2019/02/11/21_55_33_374/spec/mdc-snackbar/classes/baseline-with-action.html?utm_source=golden_json", "screenshots": { "desktop_windows_chrome@latest": "https://storage.googleapis.com/mdc-web-screenshot-tests/advorak/2018/11/13/01_26_33_478/spec/mdc-snackbar/classes/baseline-with-action.html.windows_chrome_69.png", - "desktop_windows_firefox@latest": "https://storage.googleapis.com/mdc-web-screenshot-tests/advorak/2018/12/05/21_03_57_990/spec/mdc-snackbar/classes/baseline-with-action.html.windows_firefox_63.png", + "desktop_windows_firefox@latest": "https://storage.googleapis.com/mdc-web-screenshot-tests/advorak/2019/02/11/21_55_33_374/spec/mdc-snackbar/classes/baseline-with-action.html.windows_firefox_65.png", "desktop_windows_ie@11": "https://storage.googleapis.com/mdc-web-screenshot-tests/advorak/2018/11/13/01_26_33_478/spec/mdc-snackbar/classes/baseline-with-action.html.windows_ie_11.png" } }, @@ -1096,42 +1096,42 @@ } }, "spec/mdc-snackbar/mixins/elevation.html": { - "public_url": "https://storage.googleapis.com/mdc-web-screenshot-tests/advorak/2018/12/05/21_03_57_990/spec/mdc-snackbar/mixins/elevation.html?utm_source=golden_json", + "public_url": "https://storage.googleapis.com/mdc-web-screenshot-tests/advorak/2019/02/11/21_55_33_374/spec/mdc-snackbar/mixins/elevation.html?utm_source=golden_json", "screenshots": { "desktop_windows_chrome@latest": "https://storage.googleapis.com/mdc-web-screenshot-tests/advorak/2018/11/13/01_26_33_478/spec/mdc-snackbar/mixins/elevation.html.windows_chrome_69.png", - "desktop_windows_firefox@latest": "https://storage.googleapis.com/mdc-web-screenshot-tests/advorak/2018/12/05/21_03_57_990/spec/mdc-snackbar/mixins/elevation.html.windows_firefox_63.png", + "desktop_windows_firefox@latest": "https://storage.googleapis.com/mdc-web-screenshot-tests/advorak/2019/02/11/21_55_33_374/spec/mdc-snackbar/mixins/elevation.html.windows_firefox_65.png", "desktop_windows_ie@11": "https://storage.googleapis.com/mdc-web-screenshot-tests/advorak/2018/11/13/01_26_33_478/spec/mdc-snackbar/mixins/elevation.html.windows_ie_11.png" } }, "spec/mdc-snackbar/mixins/fill-color.html": { - "public_url": "https://storage.googleapis.com/mdc-web-screenshot-tests/advorak/2018/12/05/21_03_57_990/spec/mdc-snackbar/mixins/fill-color.html?utm_source=golden_json", + "public_url": "https://storage.googleapis.com/mdc-web-screenshot-tests/advorak/2019/02/11/21_55_33_374/spec/mdc-snackbar/mixins/fill-color.html?utm_source=golden_json", "screenshots": { "desktop_windows_chrome@latest": "https://storage.googleapis.com/mdc-web-screenshot-tests/advorak/2018/11/13/01_26_33_478/spec/mdc-snackbar/mixins/fill-color.html.windows_chrome_69.png", - "desktop_windows_firefox@latest": "https://storage.googleapis.com/mdc-web-screenshot-tests/advorak/2018/12/05/21_03_57_990/spec/mdc-snackbar/mixins/fill-color.html.windows_firefox_63.png", + "desktop_windows_firefox@latest": "https://storage.googleapis.com/mdc-web-screenshot-tests/advorak/2019/02/11/21_55_33_374/spec/mdc-snackbar/mixins/fill-color.html.windows_firefox_65.png", "desktop_windows_ie@11": "https://storage.googleapis.com/mdc-web-screenshot-tests/advorak/2018/11/13/01_26_33_478/spec/mdc-snackbar/mixins/fill-color.html.windows_ie_11.png" } }, "spec/mdc-snackbar/mixins/label-ink-color.html": { - "public_url": "https://storage.googleapis.com/mdc-web-screenshot-tests/advorak/2018/12/05/21_03_57_990/spec/mdc-snackbar/mixins/label-ink-color.html?utm_source=golden_json", + "public_url": "https://storage.googleapis.com/mdc-web-screenshot-tests/advorak/2019/02/11/21_55_33_374/spec/mdc-snackbar/mixins/label-ink-color.html?utm_source=golden_json", "screenshots": { "desktop_windows_chrome@latest": "https://storage.googleapis.com/mdc-web-screenshot-tests/advorak/2018/11/13/01_26_33_478/spec/mdc-snackbar/mixins/label-ink-color.html.windows_chrome_69.png", - "desktop_windows_firefox@latest": "https://storage.googleapis.com/mdc-web-screenshot-tests/advorak/2018/12/05/21_03_57_990/spec/mdc-snackbar/mixins/label-ink-color.html.windows_firefox_63.png", + "desktop_windows_firefox@latest": "https://storage.googleapis.com/mdc-web-screenshot-tests/advorak/2019/02/11/21_55_33_374/spec/mdc-snackbar/mixins/label-ink-color.html.windows_firefox_65.png", "desktop_windows_ie@11": "https://storage.googleapis.com/mdc-web-screenshot-tests/advorak/2018/11/13/01_26_33_478/spec/mdc-snackbar/mixins/label-ink-color.html.windows_ie_11.png" } }, "spec/mdc-snackbar/mixins/max-width.html": { - "public_url": "https://storage.googleapis.com/mdc-web-screenshot-tests/advorak/2018/12/05/21_03_57_990/spec/mdc-snackbar/mixins/max-width.html?utm_source=golden_json", + "public_url": "https://storage.googleapis.com/mdc-web-screenshot-tests/advorak/2019/02/11/21_55_33_374/spec/mdc-snackbar/mixins/max-width.html?utm_source=golden_json", "screenshots": { "desktop_windows_chrome@latest": "https://storage.googleapis.com/mdc-web-screenshot-tests/advorak/2018/11/13/01_26_33_478/spec/mdc-snackbar/mixins/max-width.html.windows_chrome_69.png", - "desktop_windows_firefox@latest": "https://storage.googleapis.com/mdc-web-screenshot-tests/advorak/2018/12/05/21_03_57_990/spec/mdc-snackbar/mixins/max-width.html.windows_firefox_63.png", + "desktop_windows_firefox@latest": "https://storage.googleapis.com/mdc-web-screenshot-tests/advorak/2019/02/11/21_55_33_374/spec/mdc-snackbar/mixins/max-width.html.windows_firefox_65.png", "desktop_windows_ie@11": "https://storage.googleapis.com/mdc-web-screenshot-tests/advorak/2018/11/13/01_26_33_478/spec/mdc-snackbar/mixins/max-width.html.windows_ie_11.png" } }, "spec/mdc-snackbar/mixins/min-width.html": { - "public_url": "https://storage.googleapis.com/mdc-web-screenshot-tests/advorak/2018/12/05/21_03_57_990/spec/mdc-snackbar/mixins/min-width.html?utm_source=golden_json", + "public_url": "https://storage.googleapis.com/mdc-web-screenshot-tests/advorak/2019/02/11/21_55_33_374/spec/mdc-snackbar/mixins/min-width.html?utm_source=golden_json", "screenshots": { "desktop_windows_chrome@latest": "https://storage.googleapis.com/mdc-web-screenshot-tests/advorak/2018/11/13/01_26_33_478/spec/mdc-snackbar/mixins/min-width.html.windows_chrome_69.png", - "desktop_windows_firefox@latest": "https://storage.googleapis.com/mdc-web-screenshot-tests/advorak/2018/12/05/21_03_57_990/spec/mdc-snackbar/mixins/min-width.html.windows_firefox_63.png", + "desktop_windows_firefox@latest": "https://storage.googleapis.com/mdc-web-screenshot-tests/advorak/2019/02/11/21_55_33_374/spec/mdc-snackbar/mixins/min-width.html.windows_firefox_65.png", "desktop_windows_ie@11": "https://storage.googleapis.com/mdc-web-screenshot-tests/advorak/2018/11/13/01_26_33_478/spec/mdc-snackbar/mixins/min-width.html.windows_ie_11.png" } }, @@ -1183,6 +1183,14 @@ "desktop_windows_ie@11": "https://storage.googleapis.com/mdc-web-screenshot-tests/travis/2019/01/22/20_34_34_568/spec/mdc-textfield/classes/baseline-character-counter.html.windows_ie_11.png" } }, + "spec/mdc-textfield/classes/baseline-fullwidth.html": { + "public_url": "https://storage.googleapis.com/mdc-web-screenshot-tests/travis/2019/02/08/19_22_02_713/spec/mdc-textfield/classes/baseline-fullwidth.html?utm_source=golden_json", + "screenshots": { + "desktop_windows_chrome@latest": "https://storage.googleapis.com/mdc-web-screenshot-tests/travis/2019/02/08/19_22_02_713/spec/mdc-textfield/classes/baseline-fullwidth.html.windows_chrome_71.png", + "desktop_windows_firefox@latest": "https://storage.googleapis.com/mdc-web-screenshot-tests/travis/2019/02/08/19_22_02_713/spec/mdc-textfield/classes/baseline-fullwidth.html.windows_firefox_64.png", + "desktop_windows_ie@11": "https://storage.googleapis.com/mdc-web-screenshot-tests/travis/2019/02/08/19_22_02_713/spec/mdc-textfield/classes/baseline-fullwidth.html.windows_ie_11.png" + } + }, "spec/mdc-textfield/classes/baseline-helper-text-persistent-character-counter.html": { "public_url": "https://storage.googleapis.com/mdc-web-screenshot-tests/travis/2019/01/22/20_34_34_568/spec/mdc-textfield/classes/baseline-helper-text-persistent-character-counter.html?utm_source=golden_json", "screenshots": { @@ -1552,9 +1560,9 @@ } }, "spec/mdc-textfield/classes/textarea-character-counter.html": { - "public_url": "https://storage.googleapis.com/mdc-web-screenshot-tests/travis/2019/01/31/18_07_04_819/spec/mdc-textfield/classes/textarea-character-counter.html?utm_source=golden_json", + "public_url": "https://storage.googleapis.com/mdc-web-screenshot-tests/advorak/2019/02/11/21_55_33_374/spec/mdc-textfield/classes/textarea-character-counter.html?utm_source=golden_json", "screenshots": { - "desktop_windows_chrome@latest": "https://storage.googleapis.com/mdc-web-screenshot-tests/travis/2019/01/31/18_07_04_819/spec/mdc-textfield/classes/textarea-character-counter.html.windows_chrome_71.png", + "desktop_windows_chrome@latest": "https://storage.googleapis.com/mdc-web-screenshot-tests/advorak/2019/02/11/21_55_33_374/spec/mdc-textfield/classes/textarea-character-counter.html.windows_chrome_72.png", "desktop_windows_firefox@latest": "https://storage.googleapis.com/mdc-web-screenshot-tests/travis/2019/01/31/18_07_04_819/spec/mdc-textfield/classes/textarea-character-counter.html.windows_firefox_64.png", "desktop_windows_ie@11": "https://storage.googleapis.com/mdc-web-screenshot-tests/travis/2019/01/31/18_07_04_819/spec/mdc-textfield/classes/textarea-character-counter.html.windows_ie_11.png" } diff --git a/test/screenshot/spec/mdc-textfield/classes/baseline-fullwidth.html b/test/screenshot/spec/mdc-textfield/classes/baseline-fullwidth.html new file mode 100644 index 00000000000..93c65583f52 --- /dev/null +++ b/test/screenshot/spec/mdc-textfield/classes/baseline-fullwidth.html @@ -0,0 +1,67 @@ + + + + + + Baseline Full Width Text Field Element - MDC Web Screenshot Test + + + + + + + + + + + + +
+
+
+
+ + + +
+
+
+
+ + + + + + + + + + diff --git a/test/scss/feature-targeting.scss b/test/scss/feature-targeting.scss index fbfb4d72f42..24447b5a378 100644 --- a/test/scss/feature-targeting.scss +++ b/test/scss/feature-targeting.scss @@ -1,15 +1,16 @@ @import "@material/button/mixins"; @import "@material/card/mixins"; -@import "@material/menu-surface/mixins"; @import "@material/checkbox/mixins"; @import "@material/elevation/mixins"; @import "@material/feature-targeting/functions"; +@import "@material/list/mixins"; +@import "@material/menu-surface/mixins"; @import "@material/menu/mixins"; @import "@material/radio/mixins"; @import "@material/ripple/mixins"; -@import "@material/typography/mixins"; +@import "@material/shape/mixins"; @import "@material/switch/mixins"; -@import "@material/list/mixins"; +@import "@material/typography/mixins"; .mdc-test { // Button @@ -80,6 +81,9 @@ @include mdc-ripple-radius-bounded($query: mdc-feature-any()); @include mdc-ripple-radius-unbounded($query: mdc-feature-any()); + // Shape + @include mdc-shape-radius(1px 2px, true, $query: mdc-feature-any()); + // Switch @include mdc-switch($query: mdc-feature-any()); @include mdc-switch-toggled-on-color(on-surface, $query: mdc-feature-any()); diff --git a/test/unit/mdc-checkbox/mdc-checkbox.test.js b/test/unit/mdc-checkbox/mdc-checkbox.test.js index 0e8c33ff7bc..cc5cf206a99 100644 --- a/test/unit/mdc-checkbox/mdc-checkbox.test.js +++ b/test/unit/mdc-checkbox/mdc-checkbox.test.js @@ -31,7 +31,7 @@ import {supportsCssVariables} from '../../../packages/mdc-ripple/util'; import {MDCCheckbox, MDCCheckboxFoundation} from '../../../packages/mdc-checkbox/index'; import {MDCRipple} from '../../../packages/mdc-ripple/index'; import {strings} from '../../../packages/mdc-checkbox/constants'; -import {getMatchesProperty} from '../../../packages/mdc-ripple/util'; +import {ponyfill} from '../../../packages/mdc-dom/index'; function getFixture() { return bel` @@ -95,15 +95,20 @@ if (supportsCssVariables(window)) { const input = root.querySelector('input'); clock.runToFrame(); + const realMatches = ponyfill.matches; const fakeMatches = td.func('.matches'); - td.when(fakeMatches(':active')).thenReturn(true); - input[getMatchesProperty(HTMLElement.prototype)] = fakeMatches; - - assert.isTrue(root.classList.contains('mdc-ripple-upgraded')); - domEvents.emit(input, 'keydown'); - clock.runToFrame(); - - assert.isTrue(root.classList.contains('mdc-ripple-upgraded--foreground-activation')); + td.when(fakeMatches(td.matchers.isA(Element), ':active')).thenReturn(true); + ponyfill.matches = fakeMatches; + + try { + assert.isTrue(root.classList.contains('mdc-ripple-upgraded')); + domEvents.emit(input, 'keydown'); + clock.runToFrame(); + + assert.isTrue(root.classList.contains('mdc-ripple-upgraded--foreground-activation')); + } finally { + ponyfill.matches = realMatches; + } }); } diff --git a/test/unit/mdc-ripple/mdc-ripple.test.js b/test/unit/mdc-ripple/mdc-ripple.test.js index e8d32b6f967..8bb6d157e5d 100644 --- a/test/unit/mdc-ripple/mdc-ripple.test.js +++ b/test/unit/mdc-ripple/mdc-ripple.test.js @@ -30,6 +30,7 @@ import {MDCRipple} from '../../../packages/mdc-ripple/index'; import {cssClasses} from '../../../packages/mdc-ripple/constants'; import * as util from '../../../packages/mdc-ripple/util'; import {install as installClock} from '../helpers/clock'; +import {ponyfill} from '../../../packages/mdc-dom/index'; suite('MDCRipple'); @@ -114,16 +115,21 @@ test('adapter#browserSupportsCssVars delegates to util', () => { test('adapter#isUnbounded delegates to unbounded getter', () => { const {component} = setupTest(); component.unbounded = true; - assert.isOk(component.getDefaultFoundation().adapter_.isUnbounded()); + assert.isTrue(component.getDefaultFoundation().adapter_.isUnbounded()); }); test('adapter#isSurfaceActive calls the correct :matches API method on the root element', () => { - const {root, component} = setupTest(); - const MATCHES = util.getMatchesProperty(HTMLElement.prototype); - const matches = td.func('root.'); - td.when(matches(':active')).thenReturn(true); - root[MATCHES] = matches; - assert.isOk(component.getDefaultFoundation().adapter_.isSurfaceActive()); + const {component} = setupTest(); + const realMatches = ponyfill.matches; + const fakeMatches = td.func('.matches'); + td.when(fakeMatches(td.matchers.isA(Element), ':active')).thenReturn(true); + ponyfill.matches = fakeMatches; + + try { + assert.isTrue(component.getDefaultFoundation().adapter_.isSurfaceActive()); + } finally { + ponyfill.matches = realMatches; + } }); test('adapter#isSurfaceDisabled delegates to component\'s disabled getter', () => { @@ -135,14 +141,14 @@ test('adapter#isSurfaceDisabled delegates to component\'s disabled getter', () = test('adapter#addClass adds a class to the root', () => { const {root, component} = setupTest(); component.getDefaultFoundation().adapter_.addClass('foo'); - assert.isOk(root.classList.contains('foo')); + assert.isTrue(root.classList.contains('foo')); }); test('adapter#removeClass removes a class from the root', () => { const {root, component} = setupTest(); root.classList.add('foo'); component.getDefaultFoundation().adapter_.removeClass('foo'); - assert.isNotOk(root.classList.contains('foo')); + assert.isFalse(root.classList.contains('foo')); }); test('adapter#containsEventTarget returns true if the passed element is a descendant of the root element', () => {