From d3b517ad0054b8d12ca7bc27e19ad40db987ba4b Mon Sep 17 00:00:00 2001 From: Daniel Freedman Date: Mon, 9 Jan 2023 11:50:55 -0800 Subject: [PATCH] fix(button)!: remove icon property from Button, require slotted icons BREAKING CHANGE: Remove icon property from Button, require slotted icons PiperOrigin-RevId: 500770988 --- button/lib/_icon.scss | 17 +++++------------ button/lib/button.ts | 35 +++++------------------------------ 2 files changed, 10 insertions(+), 42 deletions(-) diff --git a/button/lib/_icon.scss b/button/lib/_icon.scss index 0aaab7346a..3bbfba6069 100644 --- a/button/lib/_icon.scss +++ b/button/lib/_icon.scss @@ -13,8 +13,7 @@ .md3-button__icon-slot-container { display: inline-flex; - ::slotted([slot='icon']), - .md3-button__icon { + ::slotted([slot='icon']) { display: inline-flex; position: relative; writing-mode: horizontal-tb; @@ -41,17 +40,11 @@ } } - .md3-button__icon--leading { - ::slotted([slot='icon']), - .md3-button__icon { - margin-inline-end: 8px; - } + .md3-button__icon--leading ::slotted([slot='icon']) { + margin-inline-end: 8px; } - .md3-button__icon--trailing { - ::slotted([slot='icon']), - .md3-button__icon { - margin-inline-start: 8px; - } + .md3-button__icon--trailing ::slotted([slot='icon']) { + margin-inline-start: 8px; } } diff --git a/button/lib/button.ts b/button/lib/button.ts index 98d9d18d20..553dc69af7 100644 --- a/button/lib/button.ts +++ b/button/lib/button.ts @@ -9,16 +9,13 @@ // This is required for @ariaProperty // tslint:disable:no-new-decorators -import '../../icon/icon.js'; import '../../focus/focus-ring.js'; import '../../ripple/ripple.js'; -import {html, LitElement, TemplateResult} from 'lit'; +import {html, LitElement, nothing, TemplateResult} from 'lit'; import {property, query, queryAssignedElements, queryAsync, state} from 'lit/decorators.js'; import {ClassInfo, classMap} from 'lit/directives/class-map.js'; -import {ifDefined} from 'lit/directives/if-defined.js'; import {when} from 'lit/directives/when.js'; -import {html as staticHtml, literal} from 'lit/static-html.js'; import {dispatchActivationClick, isActivationClick} from '../../controller/events.js'; import {ariaProperty} from '../../decorators/aria-property.js'; @@ -34,8 +31,6 @@ export abstract class Button extends LitElement implements ButtonState { static override shadowRootOptions: ShadowRootInit = {mode: 'open', delegatesFocus: true}; - protected readonly iconTag = literal`md-icon`; - @property({type: String, attribute: 'data-aria-has-popup', noAccessor: true}) @ariaProperty override ariaHasPopup!: ARIAHasPopup; @@ -57,13 +52,6 @@ export abstract class Button extends LitElement implements ButtonState { */ @property({type: Boolean, attribute: 'trailingicon'}) trailingIcon = false; - /** - * The label of the icon to render. - * - * See md-icon's documentation for usage. - */ - @property({type: String}) icon = ''; - /** * The button's visible label. */ @@ -90,7 +78,7 @@ export abstract class Button extends LitElement implements ButtonState { @state() protected showRipple = false; @queryAssignedElements({slot: 'icon', flatten: true}) - protected iconElement!: HTMLElement[]|null; + protected assignedIcons!: HTMLElement[]; constructor() { super(); @@ -124,8 +112,8 @@ export abstract class Button extends LitElement implements ButtonState {