@skhemata/skhemata-crowdfunding-campaign
Version:
Skhemata Crowdfunding Campaign Web Component. This web component provides crowdfunding campaign functionality (reward/donation based) for a website.
85 lines (73 loc) • 2.3 kB
text/typescript
/* eslint-disable import/no-extraneous-dependencies */
import '@power-elements/stripe-elements';
import { CSSResult, html, css, LitElement } from 'lit';
import { property } from 'lit/decorators.js';
import { Bulma } from '@skhemata/skhemata-css';
import { loginRequest } from '../utils/requests';
import { GlobalStyles } from '../styles/global';
export class LoginContribution extends LitElement {
static styles = <CSSResult[]>[
Bulma,
GlobalStyles,
css`
.formWrapper div {
width: 100%;
}
`,
];
submitDisabled = false;
authState: boolean | undefined;
handleAuthStateChange!: () => void;
// firstUpdated() {}
handleLogin = async () => {
if (this.shadowRoot) {
const email = this.shadowRoot?.querySelector(
'input[type="email"]'
) as HTMLInputElement;
const password = this.shadowRoot?.querySelector(
'input[type="password"]'
) as HTMLInputElement;
if (email.value && password.value) {
const info = {
email: email.value,
password: password.value,
};
const res = await loginRequest('/authenticate', 'POST', info);
const data = await res.json();
console.log('User Info: ', data);
if (data.auth_token !== undefined) {
window.localStorage.setItem('skhemataToken', data.auth_token);
}
this.handleAuthStateChange();
this.requestUpdate();
}
}
};
render() {
return html`
<div
class="field formWrapper is-flex is-flex-direction-column is-align-items-flex-end is-flex-gap-4"
>
<div class="is-flex is-flex-gap-4">
<div class="control">
<input class="input is-size-5" type="email" placeholder="Email" />
</div>
<div class="control">
<input
class="input is-size-5"
type="password"
placeholder="Password"
/>
</div>
</div>
<button
class="button btnRadius has-background-success has-text-white is-size-5 py-0 px-6"
="${this.handleLogin}"
>
Login
</button>
</div>
`;
}
}