UNPKG

@material/mwc-button

Version:
1 lines 9.67 kB
{"version":3,"file":"mwc-button-base.js","sourceRoot":"","sources":["mwc-button-base.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * @license\n * Copyright 2019 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\n// Style preference for leading underscores.\n// tslint:disable:strip-private-property-underscore\n\nimport '@material/mwc-icon/mwc-icon';\nimport '@material/mwc-ripple/mwc-ripple';\n\nimport {AriaHasPopup, ariaProperty} from '@material/mwc-base/aria-property';\nimport {Ripple} from '@material/mwc-ripple/mwc-ripple';\nimport {RippleHandlers} from '@material/mwc-ripple/ripple-handlers';\nimport {html, LitElement, TemplateResult} from 'lit';\nimport {eventOptions, property, query, queryAsync, state} from 'lit/decorators.js';\nimport {ClassInfo, classMap} from 'lit/directives/class-map.js';\nimport {ifDefined} from 'lit/directives/if-defined.js';\n\n/** @soyCompatible */\nexport class ButtonBase extends LitElement {\n static override shadowRootOptions:\n ShadowRootInit = {mode: 'open', delegatesFocus: true};\n\n /** @soyPrefixAttribute */\n @ariaProperty\n @property({type: String, attribute: 'aria-haspopup'})\n ariaHasPopup!: AriaHasPopup;\n\n @property({type: Boolean, reflect: true}) raised = false;\n\n @property({type: Boolean, reflect: true}) unelevated = false;\n\n @property({type: Boolean, reflect: true}) outlined = false;\n\n @property({type: Boolean}) dense = false;\n\n @property({type: Boolean, reflect: true}) disabled = false;\n\n @property({type: Boolean, attribute: 'trailingicon'}) trailingIcon = false;\n\n @property({type: Boolean, reflect: true}) fullwidth = false;\n\n @property({type: String}) icon = '';\n\n @property({type: String}) label = '';\n\n @property({type: Boolean}) expandContent = false;\n\n @query('#button') buttonElement!: HTMLElement;\n\n @queryAsync('mwc-ripple') ripple!: Promise<Ripple|null>;\n\n @state() protected shouldRenderRipple = false;\n\n protected rippleHandlers = new RippleHandlers(() => {\n this.shouldRenderRipple = true;\n return this.ripple;\n });\n\n /** @soyTemplate */\n protected renderOverlay(): TemplateResult {\n return html``;\n }\n\n /** @soyTemplate */\n protected renderRipple(): TemplateResult|string {\n const filled = this.raised || this.unelevated;\n return this.shouldRenderRipple ?\n html`<mwc-ripple class=\"ripple\" .primary=\"${!filled}\" .disabled=\"${\n this.disabled}\"></mwc-ripple>` :\n '';\n }\n\n override focus() {\n const buttonElement = this.buttonElement;\n if (buttonElement) {\n this.rippleHandlers.startFocus();\n buttonElement.focus();\n }\n }\n\n override blur() {\n const buttonElement = this.buttonElement;\n if (buttonElement) {\n this.rippleHandlers.endFocus();\n buttonElement.blur();\n }\n }\n\n /** @soyTemplate */\n protected getRenderClasses(): ClassInfo {\n return {\n 'mdc-button--raised': this.raised,\n 'mdc-button--unelevated': this.unelevated,\n 'mdc-button--outlined': this.outlined,\n 'mdc-button--dense': this.dense,\n };\n }\n\n /**\n * @soyTemplate\n * @soyAttributes buttonAttributes: #button\n * @soyClasses buttonClasses: #button\n */\n protected override render(): TemplateResult {\n return html`\n <button\n id=\"button\"\n class=\"mdc-button ${classMap(this.getRenderClasses())}\"\n ?disabled=\"${this.disabled}\"\n aria-label=\"${this.label || this.icon}\"\n aria-haspopup=\"${ifDefined(this.ariaHasPopup)}\"\n @focus=\"${this.handleRippleFocus}\"\n @blur=\"${this.handleRippleBlur}\"\n @mousedown=\"${this.handleRippleActivate}\"\n @mouseenter=\"${this.handleRippleMouseEnter}\"\n @mouseleave=\"${this.handleRippleMouseLeave}\"\n @touchstart=\"${this.handleRippleActivate}\"\n @touchend=\"${this.handleRippleDeactivate}\"\n @touchcancel=\"${this.handleRippleDeactivate}\">\n ${this.renderOverlay()}\n ${this.renderRipple()}\n <span class=\"leading-icon\">\n <slot name=\"icon\">\n ${this.icon && !this.trailingIcon ? this.renderIcon() : ''}\n </slot>\n </span>\n <span class=\"mdc-button__label\">${this.label}</span>\n <span class=\"slot-container ${classMap({\n flex: this.expandContent\n })}\">\n <slot></slot>\n </span>\n <span class=\"trailing-icon\">\n <slot name=\"trailingIcon\">\n ${this.icon && this.trailingIcon ? this.renderIcon() : ''}\n </slot>\n </span>\n </button>`;\n }\n\n /** @soyTemplate */\n protected renderIcon(): TemplateResult {\n return html`\n <mwc-icon class=\"mdc-button__icon\">\n ${this.icon}\n </mwc-icon>`;\n }\n\n @eventOptions({passive: true})\n protected handleRippleActivate(evt?: Event) {\n const onUp = () => {\n window.removeEventListener('mouseup', onUp);\n\n this.handleRippleDeactivate();\n };\n\n window.addEventListener('mouseup', onUp);\n this.rippleHandlers.startPress(evt);\n }\n\n protected handleRippleDeactivate() {\n this.rippleHandlers.endPress();\n }\n\n protected handleRippleMouseEnter() {\n this.rippleHandlers.startHover();\n }\n\n protected handleRippleMouseLeave() {\n this.rippleHandlers.endHover();\n }\n\n protected handleRippleFocus() {\n this.rippleHandlers.startFocus();\n }\n\n protected handleRippleBlur() {\n this.rippleHandlers.endFocus();\n }\n}\n"]}