@scoped-vaadin/login
Version:
vaadin-login
82 lines (74 loc) • 2.7 kB
JavaScript
/**
* @license
* Copyright (c) 2018 - 2024 Vaadin Ltd.
* This program is available under Apache License Version 2.0, available at https://vaadin.com/license/
*/
import './vaadin-lit-login-form.js';
import './vaadin-lit-login-overlay-wrapper.js';
import { html, LitElement } from 'lit';
import { ifDefined } from 'lit/directives/if-defined.js';
import { defineCustomElement } from '@scoped-vaadin/component-base/src/define.js';
import { ElementMixin } from '@scoped-vaadin/component-base/src/element-mixin.js';
import { PolylitMixin } from '@scoped-vaadin/component-base/src/polylit-mixin.js';
import { ThemableMixin } from '@scoped-vaadin/vaadin-themable-mixin/vaadin-themable-mixin.js';
import { LoginOverlayMixin } from './vaadin-login-overlay-mixin.js';
/**
* LitElement based version of `<vaadin24-login-overlay>` web component.
*
* ## Disclaimer
*
* This component is an experiment and not yet a part of Vaadin platform.
* There is no ETA regarding specific Vaadin version where it'll land.
* Feel free to try this code in your apps as per Apache 2.0 license.
*/
class LoginOverlay extends LoginOverlayMixin(ElementMixin(ThemableMixin(PolylitMixin(LitElement)))) {
static get is() {
return 'vaadin24-login-overlay';
}
/** @protected */
render() {
return html`
<vaadin24-login-overlay-wrapper
id="vaadinLoginOverlayWrapper"
.opened="${this.opened}"
.title="${this.title}"
.description="${this.description}"
role="dialog"
focus-trap
with-backdrop
theme="${ifDefined(this._theme)}"
@vaadin-overlay-escape-press="${this._preventClosingLogin}"
@vaadin-overlay-outside-click="${this._preventClosingLogin}"
@opened-changed="${this._onOpenedChanged}"
>
<vaadin24-login-form
theme="with-overlay"
id="vaadinLoginForm"
.action="${this.action}"
.disabled="${this.disabled}"
.error="${this.error}"
.noAutofocus="${this.noAutofocus}"
.noForgotPassword="${this.noForgotPassword}"
.i18n="${this.i18n}"
@login="${this._retargetEvent}"
@forgot-password="${this._retargetEvent}"
@disabled-changed="${this._onDisabledChanged}"
></vaadin24-login-form>
</vaadin24-login-overlay-wrapper>
<div hidden>
<slot name="custom-form-area"></slot>
<slot name="footer"></slot>
</div>
`;
}
/** @private */
_onOpenedChanged(event) {
this.opened = event.detail.value;
}
/** @private */
_onDisabledChanged(event) {
this.disabled = event.detail.value;
}
}
defineCustomElement(LoginOverlay);
export { LoginOverlay };