@ng-supabase/primeng
Version:
ng-supabase is a component library and helper utilities for integrating Supabase in your angular application.
1 lines • 60.7 kB
Source Map (JSON)
{"version":3,"file":"ng-supabase-primeng.mjs","sources":["../../../../libs/primeng/src/lib/messages/messages.component.ts","../../../../libs/primeng/src/lib/messages/messages.component.html","../../../../libs/primeng/src/lib/socials-grid/socials-grid.component.ts","../../../../libs/primeng/src/lib/socials-grid/socials-grid.component.html","../../../../libs/primeng/src/lib/wait-message/wait-message.component.ts","../../../../libs/primeng/src/lib/wait-message/wait-message.component.html","../../../../libs/primeng/src/lib/reset-password/reset-password.component.ts","../../../../libs/primeng/src/lib/reset-password/reset-password.component.html","../../../../libs/primeng/src/lib/loading-overlay/loading-overlay.component.ts","../../../../libs/primeng/src/lib/loading-overlay/loading-overlay.component.html","../../../../libs/primeng/src/lib/sign-in/sign-in.component.ts","../../../../libs/primeng/src/lib/sign-in/sign-in.component.html","../../../../libs/primeng/src/lib/set-password/set-password.component.ts","../../../../libs/primeng/src/lib/set-password/set-password.component.html","../../../../libs/primeng/src/lib/register/register.component.ts","../../../../libs/primeng/src/lib/register/register.component.html","../../../../libs/primeng/src/lib/register-or-sign-in/register-or-sign-in.component.ts","../../../../libs/primeng/src/lib/register-or-sign-in/register-or-sign-in.component.html","../../../../libs/primeng/src/lib/user-avatar/user-avatar.component.ts","../../../../libs/primeng/src/lib/user-avatar/user-avatar.component.html","../../../../libs/primeng/src/lib/user-avatar-button/user-avatar-button.component.ts","../../../../libs/primeng/src/lib/user-avatar-button/user-avatar-button.component.html","../../../../libs/primeng/src/lib/active-user-avatar-button/active-user-avatar-button.component.ts","../../../../libs/primeng/src/lib/active-user-avatar-button/active-user-avatar-button.component.html","../../../../libs/primeng/src/lib/notify.service.ts","../../../../libs/primeng/src/lib/provide-supabase.ts","../../../../libs/primeng/src/ng-supabase-primeng.ts"],"sourcesContent":["// Angular.\nimport { Component, ChangeDetectionStrategy, input } from '@angular/core';\n\n// 3rd party.\nimport { MessageModule } from 'primeng/message';\n\n// Local.\nimport { Message } from './message';\n\n@Component({\n selector: 'supabase-messages',\n standalone: true,\n imports: [MessageModule],\n templateUrl: './messages.component.html',\n styleUrl: './messages.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MessagesComponent {\n messages = input<Message[]>([]);\n}\n","@for(message of messages(); track message){\n<p-message\n [severity]=\"message.severity\"\n [closable]=\"true\"\n [icon]=\"message.icon\"\n [text]=\"message.text\"\n>\n</p-message>\n}\n","// Angular.\nimport { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n Output,\n inject,\n} from '@angular/core';\n\n// 3rd party.\nimport { ButtonModule } from 'primeng/button';\nimport { DividerModule } from 'primeng/divider';\nimport { Provider } from '@supabase/supabase-js';\n\n// ng-supabase.\nimport {\n LogService,\n SocialSignIn,\n SupabaseConfig,\n SupabaseService,\n SocialSignInItem,\n} from '@ng-supabase/core';\n\n@Component({\n selector: 'supabase-socials-grid',\n standalone: true,\n imports: [CommonModule, DividerModule, ButtonModule],\n templateUrl: './socials-grid.component.html',\n styleUrl: './socials-grid.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SocialsGridComponent {\n @Input() subtitle = 'or sign in with';\n @Output() errorMessage = new EventEmitter<string>();\n socialItems: SocialSignInItem[] = [];\n\n get hasSocials(): boolean {\n return this.socialItems.length > 0;\n }\n\n get hasNoSocials(): boolean {\n return this.socialItems.length === 0;\n }\n\n protected readonly log = inject(LogService);\n protected readonly config = inject(SupabaseConfig);\n protected readonly supabase = inject(SupabaseService);\n\n constructor() {\n const { signIn } = inject(SupabaseConfig);\n this.socialItems = signIn.socialSignInItems;\n }\n\n async signInWithSocial(social: SocialSignIn): Promise<void> {\n const result = this.config.signIn.onSocialSignIn?.(social);\n if (result === false) {\n return;\n }\n\n const { error } = await this.supabase.client.auth.signInWithOAuth({\n provider: social as Provider,\n });\n\n if (error) {\n this.log.debug(\n `Unable to sign in with social '${social}'. ${error.message}`\n );\n this.errorMessage.emit(error.message);\n return;\n }\n }\n}\n","@if(hasSocials){\n<p-divider align=\"center\">\n <span class=\"divider-txt\">{{ subtitle }}</span>\n</p-divider>\n\n<section class=\"grid\">\n @for(social of socialItems; track social){\n <div class=\"col text-center\">\n <p-button\n styleClass=\"w-full\"\n severity=\"secondary\"\n [outlined]=\"true\"\n [label]=\"social.title\"\n (click)=\"signInWithSocial(social.value)\"\n >\n @if(social.icon){\n <img [src]=\"social.icon\" label=\"Logo\" class=\"mr-2 idp-icon\" />\n }\n </p-button>\n </div>\n }\n</section>\n}\n","// Angular.\nimport { FormsModule } from '@angular/forms';\nimport { CommonModule } from '@angular/common';\nimport {\n Input,\n inject,\n Output,\n Component,\n EventEmitter,\n ChangeDetectionStrategy,\n} from '@angular/core';\n\n// 3rd party.\nimport { DividerModule } from 'primeng/divider';\nimport { FieldsetModule } from 'primeng/fieldset';\nimport { ProgressSpinnerModule } from 'primeng/progressspinner';\nimport { InputOtpChangeEvent, InputOtpModule } from 'primeng/inputotp';\n\n// @ng-supabase\nimport { WaitMessage, SupabaseConfig } from '@ng-supabase/core';\n\n@Component({\n selector: 'supabase-wait-message',\n standalone: true,\n imports: [\n FormsModule,\n CommonModule,\n DividerModule,\n FieldsetModule,\n InputOtpModule,\n ProgressSpinnerModule,\n ],\n templateUrl: './wait-message.component.html',\n styleUrl: './wait-message.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class WaitMessageComponent {\n @Input({ required: true }) message!: WaitMessage | null | undefined;\n @Input() mainTitle = `Didn't receive it?`;\n @Input() sendAgainLabel = `send again`;\n @Input() cancelLabel = `cancel`;\n @Input() showSendAgain = true;\n @Input() showCancel = true;\n @Input() subTitle = '';\n @Input() otpMessage = 'Enter the code from your email';\n @Input() loading = false;\n\n @Output() cancel = new EventEmitter<void>();\n @Output() sendAgain = new EventEmitter<void>();\n @Output() verifyOtp = new EventEmitter<string>();\n\n readonly config = inject(SupabaseConfig);\n otp = '';\n\n checkOtpValue(event: InputOtpChangeEvent): void {\n const digits = (event.value || '').length;\n const doOtpCheck = digits === this.config.signIn.otpLength;\n if (doOtpCheck) {\n this.verifyOtp.emit(event.value);\n }\n }\n}\n","@if(message){\n<p-fieldset>\n <ng-template pTemplate=\"header\">\n <div class=\"flex items-center gap-2 px-2\">\n <i [ngClass]=\"message.icon\"></i>\n <span class=\"font-bold\">{{ message.title }}</span>\n </div>\n </ng-template>\n <div class=\"p-3\">\n <p class=\"m-0\" [innerHTML]=\"message.message\"></p>\n\n @if(message.enableOtp){\n <p-divider align=\"center\" type=\"dotted\">\n @if(loading){\n <p-progress-spinner\n ariaLabel=\"loading\"\n [style]=\"{ width: '35px', height: '35px' }\"\n />\n }@else{\n <b class=\"text-500\">Or</b>\n }\n </p-divider>\n\n <div class=\"flex flex-column items-center\">\n <div class=\"flex items-center\">\n <strong class=\"pb-3\">{{ otpMessage }}</strong>\n </div>\n <p-inputotp\n [autofocus]=\"true\"\n [(ngModel)]=\"otp\"\n [length]=\"config.signIn.otpLength\"\n [disabled]=\"loading\"\n [integerOnly]=\"true\"\n (onChange)=\"checkOtpValue($event)\"\n />\n </div>\n }\n\n <p class=\"mt-4 text-right\">\n <small\n >{{ mainTitle }}\n @if(showSendAgain){\n <a href=\"\" (click)=\"sendAgain.emit(); $event.preventDefault()\">{{\n sendAgainLabel\n }}</a>\n } @if(showSendAgain && showCancel){ | } @if (showCancel){\n <a href=\"\" (click)=\"cancel.emit(); $event.preventDefault()\">{{\n cancelLabel\n }}</a>\n }\n </small>\n </p>\n </div>\n</p-fieldset>\n} @if(subTitle){\n<h4 class=\"text-500 text-center\">{{ subTitle }}</h4>\n}\n","// Angular.\nimport { CommonModule } from '@angular/common';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { ChangeDetectionStrategy, Component, signal } from '@angular/core';\n\n// 3rd party.\nimport { ButtonModule } from 'primeng/button';\nimport { AuthError } from '@supabase/supabase-js';\nimport { InputTextModule } from 'primeng/inputtext';\nimport { IconFieldModule } from 'primeng/iconfield';\nimport { InputIconModule } from 'primeng/inputicon';\n\n// @ng-supabase.\nimport { ResetPasswordComponent as CoreResetPasswordComponent } from '@ng-supabase/core';\n\n// Local.\nimport { Message } from '../messages/message';\nimport { MessagesComponent } from '../messages/messages.component';\nimport { WaitMessageComponent } from '../wait-message/wait-message.component';\n\n@Component({\n selector: 'supabase-reset-password',\n standalone: true,\n imports: [\n CommonModule,\n ButtonModule,\n InputTextModule,\n IconFieldModule,\n InputIconModule,\n MessagesComponent,\n ReactiveFormsModule,\n WaitMessageComponent,\n ],\n templateUrl: './reset-password.component.html',\n styleUrl: './reset-password.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ResetPasswordComponent extends CoreResetPasswordComponent {\n messages = signal<Message[]>([]);\n\n override onError(error: AuthError): void {\n super.onError(error);\n this.messages.set([\n {\n severity: 'error',\n closable: true,\n text: error.message,\n },\n ]);\n }\n}\n","@if(title){\n<h1>{{ title }}</h1>\n}\n\n<!-- Wait -->\n@if(wait()){\n<supabase-wait-message\n [message]=\"wait()\"\n [showCancel]=\"false\"\n subTitle=\"You can close this window\"\n (sendAgain)=\"resetPassword()\"\n></supabase-wait-message>\n\n} @else {\n<!-- Form -->\n<form [formGroup]=\"form\" (ngSubmit)=\"resetPassword()\">\n <section class=\"mt-4\">\n <span class=\"flex flex-column gap-2 p-input-icon-left\">\n <label for=\"email\">Email address</label>\n\n <p-iconfield iconPosition=\"left\">\n <p-inputicon styleClass=\"pi pi-envelope\" />\n <input\n id=\"email\"\n type=\"email\"\n pInputText\n class=\"w-full\"\n autocomplete=\"off\"\n formControlName=\"email\"\n (keydown.enter)=\"resetPassword()\"\n />\n </p-iconfield>\n </span>\n </section>\n\n <!-- Action button -->\n <div class=\"w-full mt-4\">\n <p-button\n styleClass=\"w-full\"\n label=\"Reset Password\"\n [disabled]=\"form.invalid || form.disabled\"\n [loading]=\"sendingReset()\"\n (click)=\"resetPassword()\"\n ></p-button>\n </div>\n\n <!-- Error message -->\n <supabase-messages class=\"mt-4\" [messages]=\"messages()\"></supabase-messages>\n</form>\n}\n","// Angular.\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component } from '@angular/core';\n\n// 3rd party.\nimport { ProgressSpinnerModule } from 'primeng/progressspinner';\n\n@Component({\n selector: 'supabase-loading-overlay',\n standalone: true,\n imports: [CommonModule, ProgressSpinnerModule],\n templateUrl: './loading-overlay.component.html',\n styleUrl: './loading-overlay.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class LoadingOverlayComponent {}\n","<p-progressSpinner></p-progressSpinner>\n<ng-content></ng-content>\n","// Angular.\nimport { CommonModule } from '@angular/common';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { Component, ChangeDetectionStrategy, computed } from '@angular/core';\n\n// 3rd party.\nimport { MenuItem } from 'primeng/api';\nimport { MenuModule } from 'primeng/menu';\nimport { ButtonModule } from 'primeng/button';\nimport { CheckboxModule } from 'primeng/checkbox';\nimport { PasswordModule } from 'primeng/password';\nimport { InputTextModule } from 'primeng/inputtext';\nimport { IconFieldModule } from 'primeng/iconfield';\nimport { InputIconModule } from 'primeng/inputicon';\n\n// ng-supabase.\nimport { SignInComponent as CoreSignInComponent } from '@ng-supabase/core';\n\n// Local.\nimport { Message } from '../messages/message';\nimport { MessagesComponent } from '../messages/messages.component';\nimport { SocialsGridComponent } from '../socials-grid/socials-grid.component';\nimport { WaitMessageComponent } from '../wait-message/wait-message.component';\nimport { ResetPasswordComponent } from '../reset-password/reset-password.component';\nimport { LoadingOverlayComponent } from '../loading-overlay/loading-overlay.component';\n\nlet id = 0;\n\n@Component({\n selector: 'supabase-sign-in',\n standalone: true,\n imports: [\n MenuModule,\n CommonModule,\n ButtonModule,\n CheckboxModule,\n PasswordModule,\n IconFieldModule,\n InputIconModule,\n InputTextModule,\n MessagesComponent,\n ReactiveFormsModule,\n WaitMessageComponent,\n SocialsGridComponent,\n ResetPasswordComponent,\n LoadingOverlayComponent,\n ],\n templateUrl: './sign-in.component.html',\n styleUrl: './sign-in.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SignInComponent extends CoreSignInComponent {\n menuItems: MenuItem[] = [\n {\n label: 'Sign in with email',\n icon: 'pi pi-envelope',\n command: () => this.showSignInWithEmail(),\n },\n ];\n\n readonly id = `ng-sign-in_${id++}`;\n readonly messages = computed<Message[]>(() => {\n const text = this.errorMessage() || '';\n const message: Message = {\n severity: 'error',\n text,\n };\n\n return text ? [message] : [];\n });\n}\n","@if(title){\n<h1>{{ title }}</h1>\n}\n\n<!-- Loading overlay. -->\n@if(signingIn | async){\n<supabase-loading-overlay>\n <h4>Logging in. Please wait...</h4>\n</supabase-loading-overlay>\n}\n\n<!-- Wait -->\n@if(wait()){\n<supabase-wait-message\n [message]=\"wait()\"\n [showCancel]=\"true\"\n subTitle=\"You can close this window\"\n [loading]=\"verifyingOtp()\"\n (sendAgain)=\"signIn()\"\n (verifyOtp)=\"verifyOtp($event)\"\n (cancel)=\"wait.set(null)\"\n></supabase-wait-message>\n} @else if(forgotPassword) {\n<supabase-reset-password\n [email]=\"form.value.email || ''\"\n></supabase-reset-password>\n} @else {\n<!-- Sign in form -->\n<form [formGroup]=\"form\" (ngSubmit)=\"signIn()\">\n <section class=\"mt-4\">\n <span class=\"flex flex-column gap-2 p-input-icon-left\">\n <label [for]=\"id + '_email'\">Email address</label>\n\n <p-iconfield iconPosition=\"left\">\n <p-inputicon styleClass=\"pi pi-envelope\" />\n <input\n [id]=\"id + '_email'\"\n type=\"email\"\n pInputText\n class=\"w-full\"\n autocomplete=\"off\"\n formControlName=\"email\"\n (keydown.enter)=\"signIn()\"\n />\n </p-iconfield>\n </span>\n\n @if(form.value.usePassword){\n <span class=\"flex flex-column gap-2 p-input-icon-left mt-2\">\n <label for=\"id + '_pass'\">Password</label>\n\n <p-iconfield iconPosition=\"left\">\n <p-inputicon styleClass=\"pi pi-lock\" />\n <input\n id=\"id + '_pass'\"\n type=\"password\"\n class=\"w-full\"\n autocomplete=\"off\"\n pInputText\n formControlName=\"password\"\n (keydown.enter)=\"signIn()\"\n />\n </p-iconfield>\n </span>\n }\n </section>\n\n <section class=\"flex mt-4\">\n <span class=\"flex items-center\">\n <p-checkbox\n [inputId]=\"id + '_rem'\"\n formControlName=\"rememberMe\"\n [binary]=\"true\"\n />\n <label [for]=\"id + '_rem'\" class=\"ml-2\">Remember me</label>\n </span>\n\n <span class=\"flex-auto\"></span>\n\n <div class=\"flex items-center\">\n @if(form.value.usePassword){\n <a href=\"\" (click)=\"showForgotPassword($event)\">Forgot password?</a>\n <p-button\n icon=\"pi pi-ellipsis-v\"\n severity=\"secondary\"\n [rounded]=\"true\"\n [text]=\"true\"\n (click)=\"menu.toggle($event)\"\n ></p-button>\n\n <p-menu #menu appendTo=\"body\" [model]=\"menuItems\" [popup]=\"true\"></p-menu>\n }@else{\n <a href=\"\" (click)=\"showSignInWithPassword($event)\"\n >Sign in with password</a\n >\n }\n </div>\n </section>\n\n <!-- Sign in button -->\n <div class=\"w-full mt-4\">\n <p-button\n styleClass=\"w-full\"\n [label]=\"form.value.usePassword ? 'Sign In' : 'Continue'\"\n [disabled]=\"form.invalid || form.disabled\"\n (click)=\"signIn()\"\n ></p-button>\n </div>\n\n <!-- Error message -->\n <supabase-messages class=\"mt-4\" [messages]=\"messages()\"></supabase-messages>\n\n <!-- Socials -->\n <supabase-socials-grid\n (errorMessage)=\"errorMessage.set($event)\"\n ></supabase-socials-grid>\n</form>\n}\n","// Angular.\nimport { CommonModule } from '@angular/common';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { signal, Component, ChangeDetectionStrategy } from '@angular/core';\n\n// 3rd party.\nimport { ButtonModule } from 'primeng/button';\nimport { DividerModule } from 'primeng/divider';\nimport { AuthError } from '@supabase/supabase-js';\nimport { PasswordModule } from 'primeng/password';\nimport { FloatLabelModule } from 'primeng/floatlabel';\n\n// @ng-supabase.\nimport { SetPasswordComponent as CoreSetPasswordComponent } from '@ng-supabase/core';\nimport { MessagesComponent } from '../messages/messages.component';\nimport { Message } from '../messages/message';\n\n@Component({\n selector: 'supabase-set-password',\n standalone: true,\n imports: [\n CommonModule,\n ButtonModule,\n DividerModule,\n PasswordModule,\n FloatLabelModule,\n MessagesComponent,\n ReactiveFormsModule,\n ],\n templateUrl: './set-password.component.html',\n styleUrl: './set-password.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SetPasswordComponent extends CoreSetPasswordComponent {\n messages = signal<Message[]>([]);\n\n override onError(error: AuthError): void {\n super.onError(error);\n this.messages.set([\n {\n severity: 'error',\n closable: true,\n text: error.message,\n },\n ]);\n }\n}\n","@if(title){\n<h1>{{ title }}</h1>\n}\n\n<form\n class=\"mt-4 flex\"\n [formGroup]=\"form\"\n (ngSubmit)=\"submit()\"\n (keydown.enter)=\"submit()\"\n>\n <p-floatlabel>\n <p-password\n formControlName=\"password\"\n [feedback]=\"true\"\n [toggleMask]=\"true\"\n ></p-password>\n <label for=\"password\">New password</label>\n </p-floatlabel>\n\n @if(confirmPassword){\n <p-floatlabel class=\"ml-3\">\n <p-password\n formControlName=\"confirm\"\n [feedback]=\"false\"\n [toggleMask]=\"true\"\n ></p-password>\n <label for=\"password\">Confirm new password</label>\n </p-floatlabel>\n } @else {\n <p-button\n label=\"Set password\"\n styleClass=\"ml-3\"\n [disabled]=\"form.invalid\"\n (click)=\"submit()\"\n ></p-button>\n }\n</form>\n\n<supabase-messages class=\"mt-4\" [messages]=\"messages()\"></supabase-messages>\n\n<!-- Bottom. -->\n@if(confirmPassword){\n<p-divider align=\"center\">\n @if(confirmMisMatch()){\n <span class=\"text-invalid\">\n <i class=\"pi pi-exclamation-triangle\"></i>\n Passwords do not match\n </span>\n }\n</p-divider>\n\n<p-button\n styleClass=\"w-full\"\n icon=\"pi pi-check\"\n [label]=\"saving() ? savingLabel : saveLabel\"\n [disabled]=\"form.invalid\"\n [loading]=\"saving()\"\n (click)=\"submit()\"\n></p-button>\n}\n","// Angular.\nimport { CommonModule } from '@angular/common';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { ChangeDetectionStrategy, Component, signal } from '@angular/core';\n\n// 3rd party.\nimport { ButtonModule } from 'primeng/button';\nimport { AuthError } from '@supabase/supabase-js';\nimport { CheckboxModule } from 'primeng/checkbox';\nimport { InputTextModule } from 'primeng/inputtext';\nimport { IconFieldModule } from 'primeng/iconfield';\nimport { InputIconModule } from 'primeng/inputicon';\n\n// @ng-supabase.\nimport { RegisterComponent as CoreRegisterComponent } from '@ng-supabase/core';\n\n// Local.\nimport { Message } from '../messages/message';\nimport { MessagesComponent } from '../messages/messages.component';\nimport { WaitMessageComponent } from '../wait-message/wait-message.component';\nimport { SocialsGridComponent } from '../socials-grid/socials-grid.component';\n\n@Component({\n selector: 'supabase-register',\n standalone: true,\n imports: [\n CommonModule,\n ButtonModule,\n CheckboxModule,\n InputTextModule,\n IconFieldModule,\n InputIconModule,\n MessagesComponent,\n ReactiveFormsModule,\n WaitMessageComponent,\n SocialsGridComponent,\n ],\n templateUrl: './register.component.html',\n styleUrl: './register.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class RegisterComponent extends CoreRegisterComponent {\n messages = signal<Message[]>([]);\n\n override onError(error: AuthError | string): void {\n super.onError(error);\n const detail = (error as AuthError)?.message || (error as string);\n this.messages.set([\n {\n severity: 'error',\n closable: true,\n text: detail,\n },\n ]);\n }\n}\n","@if(title){\n<h1>{{ title }}</h1>\n}\n\n<!-- Wait -->\n@if(wait()){\n<supabase-wait-message\n [message]=\"wait()\"\n [showCancel]=\"false\"\n subTitle=\"You can close this window\"\n [loading]=\"verifyingOtp()\"\n (sendAgain)=\"register()\"\n (verifyOtp)=\"verifyOtp($event)\"\n></supabase-wait-message>\n} @else {\n<!-- Form -->\n<form [formGroup]=\"form\" (ngSubmit)=\"register()\">\n <section class=\"mt-4\">\n <span class=\"flex flex-column gap-2 p-input-icon-left\">\n <label for=\"email\">Email address</label>\n\n <p-iconfield iconPosition=\"left\">\n <p-inputicon styleClass=\"pi pi-envelope\" />\n <input\n id=\"email\"\n type=\"email\"\n pInputText\n class=\"w-full\"\n autocomplete=\"off\"\n formControlName=\"email\"\n (keydown.enter)=\"register()\"\n />\n </p-iconfield>\n </span>\n </section>\n\n @if(config.register.metadata.length){\n <ng-container formGroupName=\"metadata\">\n @for(meta of config.register.metadata; track $index){\n <section class=\"mt-2\">\n <div class=\"flex flex-column gap-2\">\n <label [for]=\"'user-meta-' + meta.field\">{{ meta.label }}</label>\n <input\n pInputText\n [id]=\"'user-meta-' + meta.field\"\n [type]=\"meta.type || 'text'\"\n [formControlName]=\"meta.field\"\n />\n </div>\n </section>\n }\n </ng-container>\n }\n\n <!-- Action button -->\n <div class=\"w-full mt-4\">\n <p-button\n styleClass=\"w-full\"\n label=\"Sign up\"\n [disabled]=\"form.invalid || form.disabled\"\n [loading]=\"working()\"\n (click)=\"register()\"\n ></p-button>\n </div>\n\n <!-- Error message -->\n <supabase-messages [messages]=\"messages()\"></supabase-messages>\n\n <!-- Socials -->\n <supabase-socials-grid\n subtitle=\"or sign up with\"\n (errorMessage)=\"onError($event)\"\n ></supabase-socials-grid>\n</form>\n}\n","// Angular.\nimport { FormsModule } from '@angular/forms';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\n// 3rd party.\nimport { SelectButtonModule } from 'primeng/selectbutton';\n\n// @ng-supabase.\nimport { SignInComponent } from '../sign-in/sign-in.component';\nimport { RegisterComponent } from '../register/register.component';\nimport { RegisterOrSignInComponent as CoreRegisterOrSignInComponent } from '@ng-supabase/core';\n\ninterface OptionItem {\n label: string;\n value: string;\n icon?: string;\n}\n\n@Component({\n selector: 'supabase-register-or-sign-in',\n standalone: true,\n imports: [\n FormsModule,\n CommonModule,\n SignInComponent,\n RegisterComponent,\n SelectButtonModule,\n ],\n templateUrl: './register-or-sign-in.component.html',\n styleUrl: './register-or-sign-in.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class RegisterOrSignInComponent extends CoreRegisterOrSignInComponent {\n @Input() type: 'register' | 'sign-in' = 'register';\n\n stateOptions: OptionItem[] = [\n { label: 'Sign up', value: 'register', icon: 'pi pi-user-plus' },\n { label: 'Log in', value: 'sign-in', icon: 'pi pi-sign-in' },\n ];\n}\n","<p-selectButton\n [options]=\"stateOptions\"\n [(ngModel)]=\"type\"\n optionLabel=\"label\"\n optionValue=\"value\"\n></p-selectButton>\n\n@if(type === 'register'){\n<supabase-register></supabase-register>\n} @else {\n<supabase-sign-in></supabase-sign-in>\n}\n","// Angular.\nimport { CommonModule } from '@angular/common';\nimport { Input, Component, ChangeDetectionStrategy } from '@angular/core';\n\n// 3rd party.\nimport { AvatarModule } from 'primeng/avatar';\nimport { SkeletonModule } from 'primeng/skeleton';\n\n@Component({\n selector: 'supabase-user-avatar',\n standalone: true,\n imports: [CommonModule, AvatarModule, SkeletonModule],\n templateUrl: './user-avatar.component.html',\n styleUrl: './user-avatar.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class UserAvatarComponent {\n @Input() initials = '';\n @Input() title = '';\n @Input() subtitle = '';\n @Input() image: string | null | undefined = '';\n @Input() loading: boolean | null | undefined = false;\n}\n","<p-avatar\n [label]=\"loading || image ? '' : initials\"\n [icon]=\"loading ? 'pi pi-spin pi-spinner' : ''\"\n [image]=\"image || undefined\"\n shape=\"circle\"\n styleClass=\"mr-2\"\n></p-avatar>\n\n<span class=\"flex flex-column\">\n <span class=\"title text-sm\">\n @if(loading){\n <p-skeleton width=\"5rem\"></p-skeleton>\n } @else{\n {{ title }}\n }\n </span>\n <span class=\"subtitle text-sm\">\n @if(loading){\n <p-skeleton width=\"3rem\" height=\".5rem\" styleClass=\"mt-1\"></p-skeleton>\n } @else{\n {{ subtitle }}\n }\n </span>\n</span>\n","// Angular.\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\n// 3rd party.\nimport { MenuItem } from 'primeng/api';\nimport { MenuModule } from 'primeng/menu';\n\n// ng-supabase.\nimport { UserAvatarButtonComponent as CoreUserAvatarButtonComponent } from '@ng-supabase/core';\n\n// Local.\nimport { UserAvatarComponent } from '../user-avatar/user-avatar.component';\n\n@Component({\n selector: 'supabase-user-avatar-button',\n standalone: true,\n imports: [CommonModule, MenuModule, UserAvatarComponent],\n templateUrl: './user-avatar-button.component.html',\n styleUrl: './user-avatar-button.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class UserAvatarButtonComponent extends CoreUserAvatarButtonComponent {\n @Input() items: MenuItem[] = [];\n @Input() initials = '';\n @Input() title = '';\n @Input() subtitle = '';\n @Input() image: string | null | undefined = '';\n @Input() loading: boolean | null | undefined = false;\n}\n","<a href=\"\" (click)=\"menu.toggle($event); $event.preventDefault()\">\n <supabase-user-avatar\n [loading]=\"loading\"\n [initials]=\"initials\"\n [title]=\"title\"\n [subtitle]=\"subtitle\"\n [image]=\"image\"\n ></supabase-user-avatar>\n\n @if(!loading){\n <i class=\"pi pi-angle-down ml-2\"></i>\n }\n</a>\n\n<p-menu #menu [model]=\"items\" [popup]=\"true\"></p-menu>\n","// Angular.\nimport { RouterLink } from '@angular/router';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\n// 3rd party.\nimport { MenuItem } from 'primeng/api';\nimport { ButtonModule } from 'primeng/button';\n\n// ng-supabase.\nimport { UserAvatarButtonComponent } from '../user-avatar-button/user-avatar-button.component';\nimport {\n InitialsPipe,\n ActiveUserAvatarButtonComponent as CoreActiveUserAvatarButtonComponent,\n} from '@ng-supabase/core';\n\n@Component({\n selector: 'supabase-active-user-avatar-button',\n standalone: true,\n imports: [\n RouterLink,\n CommonModule,\n ButtonModule,\n InitialsPipe,\n UserAvatarButtonComponent,\n ],\n templateUrl: './active-user-avatar-button.component.html',\n styleUrl: './active-user-avatar-button.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ActiveUserAvatarButtonComponent extends CoreActiveUserAvatarButtonComponent {\n @Input() items: MenuItem[] = [\n {\n label: 'Sign out',\n icon: 'pi pi-power-off',\n command: () => this.signOut(),\n },\n ];\n}\n","@if(loading() || (supabase.signedIn | async)){\n<supabase-user-avatar-button\n [loading]=\"loading()\"\n [items]=\"items\"\n [initials]=\"supabase.userDisplayName | async | initials\"\n [title]=\"(supabase.userDisplayName | async) || ''\"\n [subtitle]=\"(supabase.userSubheading | async) || ''\"\n [image]=\"supabase.userAvatar | async\"\n></supabase-user-avatar-button>\n} @else {\n<p-button\n label=\"Log in\"\n icon=\"pi pi-sign-in\"\n [text]=\"true\"\n [routerLink]=\"[config.routes.signIn]\"\n></p-button>\n<p-button\n label=\"Sign up\"\n icon=\"pi pi-user-plus\"\n [routerLink]=\"[config.routes.register]\"\n></p-button>\n}\n","// Angular.\nimport { Injectable } from '@angular/core';\n\n// 3rd party.\nimport { MessageService } from 'primeng/api';\n\n// ng-supabase.\nimport {\n Message,\n MessageRequest,\n NotifyService as CoreNotifyService,\n} from '@ng-supabase/core';\n\n@Injectable({ providedIn: 'root' })\nexport class NotifyService extends CoreNotifyService {\n constructor(private readonly messageService: MessageService) {\n super();\n }\n\n protected override showNotify(message: Message): void {\n this.messageService.add({\n ...message,\n summary: message.title,\n detail: message.message,\n });\n }\n\n override showFatal(target: MessageRequest): Message {\n return this.show({ ...target, severity: 'error' });\n }\n}\n","// Angular.\nimport { EnvironmentProviders, makeEnvironmentProviders } from '@angular/core';\n\n// @ng-supabase.\nimport { ToastModule } from 'primeng/toast';\nimport {\n NotifyService as CoreNotifyService,\n SupabaseConfig,\n SupabaseConfigProperties,\n} from '@ng-supabase/core';\n\n// Local.\nimport { NotifyService } from './notify.service';\nimport { MessageService } from 'primeng/api';\n\nexport function provideSupabase(\n config: SupabaseConfigProperties\n): EnvironmentProviders {\n return makeEnvironmentProviders([\n ToastModule,\n MessageService,\n {\n provide: SupabaseConfig,\n useValue: new SupabaseConfig(config),\n },\n {\n provide: CoreNotifyService,\n useClass: NotifyService,\n },\n ]);\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i2","i1","i3","i5","CoreResetPasswordComponent","i4","CoreSignInComponent","i6","i7","i8","CoreSetPasswordComponent","CoreRegisterComponent","CoreRegisterOrSignInComponent","CoreUserAvatarButtonComponent","CoreActiveUserAvatarButtonComponent","CoreNotifyService"],"mappings":"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