Skip to content
This repository has been archived by the owner on Jan 13, 2025. It is now read-only.

feat: Convert packages to TypeScript #4451

Merged
merged 74 commits into from
Feb 27, 2019
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
74 commits
Select commit Hold shift + click to select a range
8bcf546
feat(infrastructure): add tsconfig, tslint, and build setup (#4241)
Jan 18, 2019
1600b54
docs: Update closure-compiler.md to reflect TypeScript conversion (#4…
kfranqueiro Jan 18, 2019
66c8d81
feat(dom): Convert JS to TypeScript (#4269)
acdvorak Jan 19, 2019
87a5e8e
feat(animation): Convert JS to TypeScript (#4271)
acdvorak Jan 23, 2019
8addf4d
Merge remote-tracking branch 'origin' into feat/typescript
acdvorak Jan 23, 2019
6b958de
feat(linear-progress): Convert JS to TypeScript (#4272)
acdvorak Jan 23, 2019
c649de5
fix: add strict true to tsconfig (#4286)
Jan 24, 2019
47a9c38
feat(ripple): convert to ts (#4300)
Jan 29, 2019
54d25c1
Merge remote-tracking branch 'origin/master' into feat/typescript
Jan 31, 2019
aeb3f87
feat(form-field): ts convert (#4327)
Jan 31, 2019
8abbb53
Merge remote-tracking branch 'origin/master' into feat/typescript
acdvorak Jan 31, 2019
13d169d
feat(switch): Convert JS to TypeScript (#4320)
mmalerba Jan 31, 2019
869e44c
refactor(animation): Replace enums with string literal type aliases (…
acdvorak Jan 31, 2019
a2ac8bc
feat(menu-surface): Convert JS to TypeScript (#4273)
acdvorak Feb 5, 2019
0f8a271
Merge remote-tracking branch 'origin/master' into feat/typescript
acdvorak Feb 5, 2019
2befa88
feat(checkbox): typescript conversion (#4319)
Feb 5, 2019
90f5f05
feat(radio): ts conversion (#4329)
Feb 6, 2019
0f354ae
feat(base): Add generic type signatures to listen/unlisten/emit (#4358)
acdvorak Feb 6, 2019
f595a99
feat(icon-button): Convert to TypeScript (#4325)
abhiomkar Feb 6, 2019
0b28992
feat(list): ts conversion (#4334)
Feb 6, 2019
dc4e92c
feat(menu): Convert JS to TypeScript (#4342)
acdvorak Feb 6, 2019
33e26d7
feat(dialog): ts conversion (#4333)
Feb 7, 2019
3279cc9
style: Make TS import and export syntax consistent (#4360)
acdvorak Feb 7, 2019
1c7335b
feat(chips): ts conversion (#4332)
Feb 7, 2019
ed7f8d7
feat(grid-list): ts conversion (#4337)
Feb 7, 2019
d4250ca
docs: update best coding practices with typescript lessons learned (#…
Feb 7, 2019
9936f01
feat(ripple): updated ripple ts rewrite to remove extraneous code/typ…
Feb 7, 2019
77e8bab
Merge remote-tracking branch 'origin/master' into feat/typescript
acdvorak Feb 7, 2019
5407ada
feat(floating-label): Convert JS to TypeScript (#4374)
acdvorak Feb 8, 2019
50eb8c7
feat(line-ripple): Convert JS to TypeScript (#4373)
acdvorak Feb 8, 2019
197f7fe
feat(notched-outline): Convert JS to TypeScript (#4375)
acdvorak Feb 8, 2019
08fb283
feat(slider): Convert JS to TypeScript (#4378)
acdvorak Feb 8, 2019
e95ff8a
feat(snackbar): Convert JS to TypeScript (#4363)
acdvorak Feb 9, 2019
b859440
chore: Remove Object.assign from TS files (#4389)
acdvorak Feb 11, 2019
e8c947c
Merge branch 'master' into feat/typescript
acdvorak Feb 11, 2019
6fce645
Merge remote-tracking branch 'origin/master' into feat/typescript
acdvorak Feb 11, 2019
9526da2
Merge branch 'feat/typescript' of github.com:material-components/mate…
acdvorak Feb 11, 2019
667aeee
feat(tab-scroller): Convert JS to TypeScript (#4392)
acdvorak Feb 12, 2019
5f50d60
feat(tab-indicator): Convert JS to TypeScript (#4391)
acdvorak Feb 12, 2019
ab9879d
feat(tab): Convert JS to TypeScript (#4393)
acdvorak Feb 12, 2019
b2fa9a5
feat(tab-bar): Convert JS to TypeScript (#4394)
acdvorak Feb 12, 2019
976352c
feat(text-field): Convert JS to TypeScript (#4377)
acdvorak Feb 13, 2019
5052ada
feat(select): Convert JS to TypeScript (#4386)
acdvorak Feb 13, 2019
f8ba48f
feat(drawer): Convert JS to TypeScript (#4390)
acdvorak Feb 14, 2019
b8b1988
feat(top-app-bar): Convert JS to TypeScript (#4397)
acdvorak Feb 14, 2019
4675c95
feat(auto-init): Convert JS to TypeScript (#4395)
acdvorak Feb 14, 2019
6136db3
feat(toolbar): Convert JS to TypeScript (#4410)
acdvorak Feb 14, 2019
db6fc6d
Merge remote-tracking branch 'origin/master' into feat/typescript
acdvorak Feb 14, 2019
6d6bff8
WIP: Fix borked merge
acdvorak Feb 14, 2019
ebefb78
feat(package): Convert JS to TypeScript (#4396)
acdvorak Feb 14, 2019
ff5ad6a
chore: Fix broken TypeScript rewrite script (#4398)
acdvorak Feb 14, 2019
96afbb1
WIP: Remove `icon-toggle` from `npm run test:dependency`
acdvorak Feb 14, 2019
36ce7b9
WIP: Fix GitHub authentication issue for screenshot tests on Travis CI
acdvorak Feb 15, 2019
03b791d
fix(chips): Reference ripple/index in types for consistency (#4417)
kfranqueiro Feb 15, 2019
409a6a6
feat(tabs): Convert JS to TypeScript (#4412)
acdvorak Feb 15, 2019
1ec12b6
chore: remove icon-toggle (#4415)
Feb 15, 2019
72e8b66
refactor: Make TS easier to wrap (#4407)
acdvorak Feb 21, 2019
c487445
WIP: Add comment
acdvorak Feb 22, 2019
f441f8f
Merge remote-tracking branch 'origin/master' into feat/typescript
acdvorak Feb 22, 2019
cabeabc
chore(package): Remove need for selection-control (#4442)
kfranqueiro Feb 22, 2019
b6b6983
chore: Fix internal tslint errors (#4440)
acdvorak Feb 22, 2019
6faaabe
chore: Fix regression in `MDCChipFoundation.getDimensions()` (#4443)
acdvorak Feb 23, 2019
2bbcfea
WIP: Fix internal tslint error
acdvorak Feb 23, 2019
c6b609c
feat(infrastructure): add esmodules support for treeshaking (#4409)
Feb 26, 2019
ad96947
style: Add explanations to `tslint:disable` comments (#4448)
acdvorak Feb 26, 2019
21b2403
WIP: Update `.ts` file paths in READMEs
acdvorak Feb 26, 2019
c54310c
WIP: Export `MDCComponentClass` in `mdc-auto-init`
acdvorak Feb 26, 2019
cbb0fe6
WIP: Change `any` to `unknown` and remove `tslint:disable` comment
acdvorak Feb 26, 2019
f3a09a1
Merge remote-tracking branch 'origin/master' into feat/typescript
acdvorak Feb 26, 2019
216d975
WIP: Revert changes to logging
acdvorak Feb 20, 2019
d349fea
style: grammar mistakes on script comments (#4452)
Feb 26, 2019
8cd8b26
WIP autoinit: MDCComponentClass -> MDCAttachable
Feb 27, 2019
60c9498
WIP Remove object-assign polyfill
Feb 27, 2019
2abfb30
WIP Revert "WIP Remove object-assign polyfill"
Feb 27, 2019
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
style: Add explanations to tslint:disable comments (#4448)
All `tslint:disable:object-literal-sort-keys` comments now include a description that explains why the linter rule needs to be disabled. For the most part, it's to ensure consistent ordering of methods between adapter interfaces and their implementations in the foundation and component.

This PR also reorders a few properties in `MDCCheckbox` and `MDCRadio` for consistency.

Refs #4225
  • Loading branch information
acdvorak authored Feb 26, 2019
commit ad9694777f43e47ec9a8a45c77209410d5ab130f
108 changes: 52 additions & 56 deletions packages/mdc-checkbox/component.ts
Original file line number Diff line number Diff line change
Expand Up @@ -33,24 +33,47 @@ import {MDCCheckboxFoundation} from './foundation';
*/
type PropertyDescriptorGetter = (() => any) | undefined; // tslint:disable-line:no-any
acdvorak marked this conversation as resolved.
Show resolved Hide resolved

const {NATIVE_CONTROL_SELECTOR} = MDCCheckboxFoundation.strings;

const CB_PROTO_PROPS = ['checked', 'indeterminate'];

export class MDCCheckbox extends MDCComponent<MDCCheckboxFoundation> implements MDCRippleCapableSurface {
static attachTo(root: Element) {
return new MDCCheckbox(root);
}

/**
* Returns the state of the native control element, or null if the native control element is not present.
*/
get nativeCb_(): HTMLInputElement {
const cbEl = this.root_.querySelector<HTMLInputElement>(NATIVE_CONTROL_SELECTOR);
if (!cbEl) {
throw new Error(`Checkbox requires a ${NATIVE_CONTROL_SELECTOR} element`);
}
return cbEl;
get ripple(): MDCRipple {
return this.ripple_;
}

get checked(): boolean {
return this.nativeControl_.checked;
}

set checked(checked: boolean) {
this.nativeControl_.checked = checked;
}

get indeterminate(): boolean {
return this.nativeControl_.indeterminate;
}

set indeterminate(indeterminate: boolean) {
this.nativeControl_.indeterminate = indeterminate;
}

get disabled(): boolean {
return this.nativeControl_.disabled;
}

set disabled(disabled: boolean) {
this.foundation_.setDisabled(disabled);
}

get value(): string {
return this.nativeControl_.value;
}

set value(value: string) {
this.nativeControl_.value = value;
}

// Public visibility for this property is required by MDCRippleCapableSurface.
Expand All @@ -63,14 +86,14 @@ export class MDCCheckbox extends MDCComponent<MDCCheckboxFoundation> implements
initialSyncWithDOM() {
this.handleChange_ = () => this.foundation_.handleChange();
this.handleAnimationEnd_ = () => this.foundation_.handleAnimationEnd();
this.nativeCb_.addEventListener('change', this.handleChange_);
this.nativeControl_.addEventListener('change', this.handleChange_);
this.listen(getCorrectEventName(window, 'animationend'), this.handleAnimationEnd_);
this.installPropertyChangeHooks_();
}

destroy() {
this.ripple_.destroy();
this.nativeCb_.removeEventListener('change', this.handleChange_);
this.nativeControl_.removeEventListener('change', this.handleChange_);
this.unlisten(getCorrectEventName(window, 'animationend'), this.handleAnimationEnd_);
this.uninstallPropertyChangeHooks_();
super.destroy();
Expand All @@ -82,14 +105,14 @@ export class MDCCheckbox extends MDCComponent<MDCCheckboxFoundation> implements
const adapter: MDCCheckboxAdapter = {
addClass: (className) => this.root_.classList.add(className),
forceLayout: () => (this.root_ as HTMLElement).offsetWidth,
hasNativeControl: () => !!this.nativeCb_,
hasNativeControl: () => !!this.nativeControl_,
isAttachedToDOM: () => Boolean(this.root_.parentNode),
isChecked: () => this.checked,
isIndeterminate: () => this.indeterminate,
removeClass: (className) => this.root_.classList.remove(className),
removeNativeControlAttr: (attr) => this.nativeCb_.removeAttribute(attr),
setNativeControlAttr: (attr, value) => this.nativeCb_.setAttribute(attr, value),
setNativeControlDisabled: (disabled) => this.nativeCb_.disabled = disabled,
removeNativeControlAttr: (attr) => this.nativeControl_.removeAttribute(attr),
setNativeControlAttr: (attr, value) => this.nativeControl_.setAttribute(attr, value),
setNativeControlDisabled: (disabled) => this.nativeControl_.disabled = disabled,
};
return new MDCCheckboxFoundation(adapter);
}
Expand All @@ -99,16 +122,16 @@ export class MDCCheckbox extends MDCComponent<MDCCheckboxFoundation> implements
// To ensure we don't accidentally omit any methods, we need a separate, strongly typed adapter variable.
const adapter: MDCRippleAdapter = {
...MDCRipple.createAdapter(this),
deregisterInteractionHandler: (evtType, handler) => this.nativeCb_.removeEventListener(evtType, handler),
isSurfaceActive: () => ponyfill.matches(this.nativeCb_, ':active'),
deregisterInteractionHandler: (evtType, handler) => this.nativeControl_.removeEventListener(evtType, handler),
isSurfaceActive: () => ponyfill.matches(this.nativeControl_, ':active'),
isUnbounded: () => true,
registerInteractionHandler: (evtType, handler) => this.nativeCb_.addEventListener(evtType, handler),
registerInteractionHandler: (evtType, handler) => this.nativeControl_.addEventListener(evtType, handler),
};
return new MDCRipple(this.root_, new MDCRippleFoundation(adapter));
}

private installPropertyChangeHooks_() {
const nativeCb = this.nativeCb_;
const nativeCb = this.nativeControl_;
const cbProto = Object.getPrototypeOf(nativeCb);

CB_PROTO_PROPS.forEach((controlState) => {
Expand Down Expand Up @@ -136,7 +159,7 @@ export class MDCCheckbox extends MDCComponent<MDCCheckboxFoundation> implements
}

private uninstallPropertyChangeHooks_() {
const nativeCb = this.nativeCb_;
const nativeCb = this.nativeControl_;
const cbProto = Object.getPrototypeOf(nativeCb);

CB_PROTO_PROPS.forEach((controlState) => {
Expand All @@ -148,40 +171,13 @@ export class MDCCheckbox extends MDCComponent<MDCCheckboxFoundation> implements
});
}

get ripple(): MDCRipple {
return this.ripple_;
}

get checked(): boolean {
return this.nativeCb_.checked;
}

set checked(checked: boolean) {
this.nativeCb_.checked = checked;
}

get indeterminate(): boolean {
return this.nativeCb_.indeterminate;
}

set indeterminate(indeterminate: boolean) {
this.nativeCb_.indeterminate = indeterminate;
}

get disabled(): boolean {
return this.nativeCb_.disabled;
}

set disabled(disabled: boolean) {
this.foundation_.setDisabled(disabled);
}

get value(): string {
return this.nativeCb_.value;
}

set value(value: string) {
this.nativeCb_.value = value;
private get nativeControl_(): HTMLInputElement {
const {NATIVE_CONTROL_SELECTOR} = MDCCheckboxFoundation.strings;
const el = this.root_.querySelector<HTMLInputElement>(NATIVE_CONTROL_SELECTOR);
if (!el) {
throw new Error(`Checkbox component requires a ${NATIVE_CONTROL_SELECTOR} element`);
}
return el;
}
}

Expand Down
2 changes: 1 addition & 1 deletion packages/mdc-drawer/component.ts
Original file line number Diff line number Diff line change
Expand Up @@ -118,7 +118,7 @@ export class MDCDrawer extends MDCComponent<MDCDismissibleDrawerFoundation> {
getDefaultFoundation() {
// DO NOT INLINE this variable. For backward compatibility, foundations take a Partial<MDCFooAdapter>.
// To ensure we don't accidentally omit any methods, we need a separate, strongly typed adapter variable.
// tslint:disable:object-literal-sort-keys
// tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface.
const adapter: MDCDrawerAdapter = {
addClass: (className) => this.root_.classList.add(className),
removeClass: (className) => this.root_.classList.remove(className),
Expand Down
2 changes: 1 addition & 1 deletion packages/mdc-drawer/dismissible/foundation.ts
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ export class MDCDismissibleDrawerFoundation extends MDCFoundation<MDCDrawerAdapt
}

static get defaultAdapter(): MDCDrawerAdapter {
// tslint:disable:object-literal-sort-keys
// tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface.
return {
addClass: () => undefined,
removeClass: () => undefined,
Expand Down
2 changes: 1 addition & 1 deletion packages/mdc-floating-label/component.ts
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ export class MDCFloatingLabel extends MDCComponent<MDCFloatingLabelFoundation> {
getDefaultFoundation() {
// DO NOT INLINE this variable. For backward compatibility, foundations take a Partial<MDCFooAdapter>.
// To ensure we don't accidentally omit any methods, we need a separate, strongly typed adapter variable.
// tslint:disable:object-literal-sort-keys
// tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface.
const adapter: MDCFloatingLabelAdapter = {
addClass: (className) => this.root_.classList.add(className),
removeClass: (className) => this.root_.classList.remove(className),
Expand Down
2 changes: 1 addition & 1 deletion packages/mdc-floating-label/foundation.ts
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ export class MDCFloatingLabelFoundation extends MDCFoundation<MDCFloatingLabelAd
* See {@link MDCFloatingLabelAdapter} for typing information on parameters and return types.
*/
static get defaultAdapter(): MDCFloatingLabelAdapter {
// tslint:disable:object-literal-sort-keys
// tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface.
return {
addClass: () => undefined,
removeClass: () => undefined,
Expand Down
2 changes: 1 addition & 1 deletion packages/mdc-line-ripple/component.ts
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ export class MDCLineRipple extends MDCComponent<MDCLineRippleFoundation> {
getDefaultFoundation() {
// DO NOT INLINE this variable. For backward compatibility, foundations take a Partial<MDCFooAdapter>.
// To ensure we don't accidentally omit any methods, we need a separate, strongly typed adapter variable.
// tslint:disable:object-literal-sort-keys
// tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface.
const adapter: MDCLineRippleAdapter = {
addClass: (className) => this.root_.classList.add(className),
removeClass: (className) => this.root_.classList.remove(className),
Expand Down
2 changes: 1 addition & 1 deletion packages/mdc-line-ripple/foundation.ts
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ export class MDCLineRippleFoundation extends MDCFoundation<MDCLineRippleAdapter>
* See {@link MDCLineRippleAdapter} for typing information on parameters and return types.
*/
static get defaultAdapter(): MDCLineRippleAdapter {
// tslint:disable:object-literal-sort-keys
// tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface.
return {
addClass: () => undefined,
removeClass: () => undefined,
Expand Down
2 changes: 1 addition & 1 deletion packages/mdc-menu-surface/component.ts
Original file line number Diff line number Diff line change
Expand Up @@ -149,7 +149,7 @@ export class MDCMenuSurface extends MDCComponent<MDCMenuSurfaceFoundation> {
getDefaultFoundation() {
// DO NOT INLINE this variable. For backward compatibility, foundations take a Partial<MDCFooAdapter>.
// To ensure we don't accidentally omit any methods, we need a separate, strongly typed adapter variable.
// tslint:disable:object-literal-sort-keys
// tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface.
const adapter: MDCMenuSurfaceAdapter = {
addClass: (className) => this.root_.classList.add(className),
removeClass: (className) => this.root_.classList.remove(className),
Expand Down
10 changes: 5 additions & 5 deletions packages/mdc-menu-surface/foundation.ts
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ export class MDCMenuSurfaceFoundation extends MDCFoundation<MDCMenuSurfaceAdapte
* @see {@link MDCMenuSurfaceAdapter} for typing information on parameters and return types.
*/
static get defaultAdapter(): MDCMenuSurfaceAdapter {
// tslint:disable:object-literal-sort-keys
// tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface.
return {
addClass: () => undefined,
removeClass: () => undefined,
Expand Down Expand Up @@ -292,9 +292,8 @@ export class MDCMenuSurfaceFoundation extends MDCFoundation<MDCMenuSurfaceAdapte
const viewportSize = this.adapter_.getWindowDimensions();
const windowScroll = this.adapter_.getWindowScroll();

// tslint:disable:object-literal-sort-keys

if (!anchorRect) {
// tslint:disable:object-literal-sort-keys Positional properties are more readable when they're grouped together
anchorRect = {
top: this.position_.y,
right: this.position_.x,
Expand All @@ -303,23 +302,24 @@ export class MDCMenuSurfaceFoundation extends MDCFoundation<MDCMenuSurfaceAdapte
width: 0,
height: 0,
};
// tslint:enable:object-literal-sort-keys
}

return {
anchorSize: anchorRect,
bodySize,
surfaceSize: this.dimensions_,
viewportDistance: {
// tslint:disable:object-literal-sort-keys Positional properties are more readable when they're grouped together
top: anchorRect.top,
right: viewportSize.width - anchorRect.right,
bottom: viewportSize.height - anchorRect.bottom,
left: anchorRect.left,
// tslint:enable:object-literal-sort-keys
},
viewportSize,
windowScroll,
};

// tslint:enable:object-literal-sort-keys
}

/**
Expand Down
2 changes: 1 addition & 1 deletion packages/mdc-menu/component.ts
Original file line number Diff line number Diff line change
Expand Up @@ -176,7 +176,7 @@ export class MDCMenu extends MDCComponent<MDCMenuFoundation> {
getDefaultFoundation() {
// DO NOT INLINE this variable. For backward compatibility, foundations take a Partial<MDCFooAdapter>.
// To ensure we don't accidentally omit any methods, we need a separate, strongly typed adapter variable.
// tslint:disable:object-literal-sort-keys
// tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface.
const adapter: MDCMenuAdapter = {
addClassToElementAtIndex: (index, className) => {
const list = this.items;
Expand Down
2 changes: 1 addition & 1 deletion packages/mdc-menu/foundation.ts
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ export class MDCMenuFoundation extends MDCFoundation<MDCMenuAdapter> {
* @see {@link MDCMenuAdapter} for typing information on parameters and return types.
*/
static get defaultAdapter(): MDCMenuAdapter {
// tslint:disable:object-literal-sort-keys
// tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface.
return {
addClassToElementAtIndex: () => undefined,
removeClassFromElementAtIndex: () => undefined,
Expand Down
2 changes: 1 addition & 1 deletion packages/mdc-notched-outline/component.ts
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@ export class MDCNotchedOutline extends MDCComponent<MDCNotchedOutlineFoundation>
getDefaultFoundation() {
// DO NOT INLINE this variable. For backward compatibility, foundations take a Partial<MDCFooAdapter>.
// To ensure we don't accidentally omit any methods, we need a separate, strongly typed adapter variable.
// tslint:disable:object-literal-sort-keys
// tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface.
const adapter: MDCNotchedOutlineAdapter = {
addClass: (className) => this.root_.classList.add(className),
removeClass: (className) => this.root_.classList.remove(className),
Expand Down
2 changes: 1 addition & 1 deletion packages/mdc-notched-outline/foundation.ts
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ export class MDCNotchedOutlineFoundation extends MDCFoundation<MDCNotchedOutline
* See {@link MDCNotchedOutlineAdapter} for typing information on parameters and return types.
*/
static get defaultAdapter(): MDCNotchedOutlineAdapter {
// tslint:disable:object-literal-sort-keys
// tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface.
return {
addClass: () => undefined,
removeClass: () => undefined,
Expand Down
15 changes: 6 additions & 9 deletions packages/mdc-radio/component.ts
Original file line number Diff line number Diff line change
Expand Up @@ -31,11 +31,6 @@ export class MDCRadio extends MDCComponent<MDCRadioFoundation> implements MDCRip
return new MDCRadio(root);
}

// Public visibility for this property is required by MDCRippleCapableSurface.
root_!: Element; // assigned in MDCComponent constructor

private readonly ripple_: MDCRipple = this.createRipple_();

get checked(): boolean {
return this.nativeControl_.checked;
}
Expand Down Expand Up @@ -64,6 +59,11 @@ export class MDCRadio extends MDCComponent<MDCRadioFoundation> implements MDCRip
return this.ripple_;
}

// Public visibility for this property is required by MDCRippleCapableSurface.
root_!: Element; // assigned in MDCComponent constructor

private readonly ripple_: MDCRipple = this.createRipple_();

destroy() {
this.ripple_.destroy();
super.destroy();
Expand All @@ -83,7 +83,7 @@ export class MDCRadio extends MDCComponent<MDCRadioFoundation> implements MDCRip
private createRipple_(): MDCRipple {
// DO NOT INLINE this variable. For backward compatibility, foundations take a Partial<MDCFooAdapter>.
// To ensure we don't accidentally omit any methods, we need a separate, strongly typed adapter variable.
// tslint:disable:object-literal-sort-keys
// tslint:disable:object-literal-sort-keys Methods should be in the same order as the adapter interface.
const adapter: MDCRippleAdapter = {
...MDCRipple.createAdapter(this),
registerInteractionHandler: (evtType, handler) => this.nativeControl_.addEventListener(evtType, handler),
Expand All @@ -97,9 +97,6 @@ export class MDCRadio extends MDCComponent<MDCRadioFoundation> implements MDCRip
return new MDCRipple(this.root_, new MDCRippleFoundation(adapter));
}

/**
* Returns the state of the native control element, or null if the native control element is not present.
*/
private get nativeControl_(): HTMLInputElement {
const {NATIVE_CONTROL_SELECTOR} = MDCRadioFoundation.strings;
const el = this.root_.querySelector<HTMLInputElement>(NATIVE_CONTROL_SELECTOR);
Expand Down
Loading