{"version":3,"file":"spryker-ajax-form.mjs","sources":["../../../../libs/ajax-form/src/lib/ajax-form/tokens.ts","../../../../libs/ajax-form/src/lib/ajax-form/ajax-form.component.ts","../../../../libs/ajax-form/src/lib/ajax-form/ajax-form.component.html","../../../../libs/ajax-form/src/lib/ajax-form.module.ts","../../../../libs/ajax-form/src/spryker-ajax-form.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\nimport { DataSerializer } from '@spryker/data-serializer';\n\nexport const AjaxFormRequestToken = new InjectionToken<DataSerializer<FormData>>('AjaxFormRequest');\n","import { HttpClient } from '@angular/common/http';\nimport {\n    ChangeDetectionStrategy,\n    ChangeDetectorRef,\n    Component,\n    Injector,\n    Input,\n    OnChanges,\n    OnDestroy,\n    SimpleChanges,\n    ViewChild,\n    ViewContainerRef,\n    ViewEncapsulation,\n    inject,\n} from '@angular/core';\nimport { AjaxActionService } from '@spryker/ajax-action';\nimport { DataSerializerService } from '@spryker/data-serializer';\nimport { HtmlRendererComponent } from '@spryker/html-renderer';\nimport { Subscription } from 'rxjs';\n\nimport { AjaxFormResponse } from '../types';\nimport { AjaxFormRequestToken } from './tokens';\n\nexport interface SubmitEvent extends Event {\n    // See https://developer.mozilla.org/en-US/docs/Web/API/SubmitEvent/submitter\n    // See https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#dom-submitevent-submitter\n    submitter: HTMLElement | null;\n}\n\n@Component({\n    standalone: false,\n    selector: 'spy-ajax-form',\n    templateUrl: './ajax-form.component.html',\n    styleUrls: ['./ajax-form.component.less'],\n    encapsulation: ViewEncapsulation.None,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    host: {\n        class: 'spy-ajax-form',\n    },\n})\nexport class AjaxFormComponent implements OnDestroy, OnChanges {\n    protected ajaxActionService = inject(AjaxActionService);\n    protected http = inject(HttpClient);\n    protected cdr = inject(ChangeDetectorRef);\n    protected injector = inject(Injector);\n    protected dataSerializerService = inject(DataSerializerService);\n\n    @ViewChild(HtmlRendererComponent, { read: ViewContainerRef })\n    htmlRendererVcr?: ViewContainerRef;\n\n    @Input() action?: string;\n    @Input() method = 'POST';\n\n    subscription?: Subscription;\n    submitSubscription?: Subscription;\n    ajaxFormResponse?: AjaxFormResponse;\n    isLoading = false;\n    form?: string;\n    formAction?: string;\n    formMethod?: string;\n\n    ngOnChanges(changes: SimpleChanges): void {\n        if ('action' in changes) {\n            this.fetchForm();\n        }\n    }\n\n    refreshForm(): void {\n        this.fetchForm();\n    }\n\n    private fetchForm(): void {\n        if (this.action) {\n            this.isLoading = true;\n            this.subscription = this.http.get<AjaxFormResponse>(this.action).subscribe({\n                next: (response) => this.responseHandler(response),\n                error: (response) => this.responseHandler(response),\n            });\n        }\n    }\n\n    ngOnDestroy(): void {\n        this.subscription?.unsubscribe();\n        this.submitSubscription?.unsubscribe();\n    }\n\n    submitHandler(form: HTMLFormElement, event: SubmitEvent): void {\n        event.preventDefault();\n\n        const submitElem = event.submitter;\n        const submitForm = new FormData(form);\n\n        if (submitElem) {\n            const submitName = submitElem.getAttribute('name');\n            const submitValue = submitElem.getAttribute('value') ?? '';\n\n            if (submitName) {\n                submitForm.append(submitName, submitValue);\n            }\n        }\n\n        this.isLoading = true;\n\n        if (this.action) {\n            this.submitSubscription?.unsubscribe();\n            this.submitSubscription = this.http\n                .request<AjaxFormResponse>((this.formMethod ?? this.method) || 'POST', this.formAction ?? this.action, {\n                    body: this.dataSerializerService.serialize(AjaxFormRequestToken, submitForm),\n                })\n                .subscribe({\n                    next: (response) => this.responseHandler(response),\n                    error: (response) => this.responseHandler(response),\n                });\n        }\n    }\n\n    private responseHandler(response: AjaxFormResponse): void {\n        this.ajaxFormResponse = response;\n\n        if (response.form) {\n            this.form = response.form;\n        }\n\n        this.formAction = response.action;\n        this.formMethod = response.method;\n\n        this.isLoading = false;\n        this.ajaxActionService.handle(response, this.htmlRendererVcr?.injector ?? this.injector);\n        // TODO: investigate ExpressionChangedAfterItHasBeenCheckedError\n        this.cdr.markForCheck();\n    }\n}\n","<div class=\"spy-ajax-form-container\" [class.spy-ajax-form-container--loading]=\"isLoading\">\n    <form #submitForm (submit)=\"submitHandler(submitForm, $event)\" spyUnsavedChangesFormMonitor>\n        @if (form) {\n            <spy-html-renderer [html]=\"form\"></spy-html-renderer>\n        }\n    </form>\n</div>\n\n@if (isLoading) {\n    <nz-spin class=\"spy-ajax-form-empty-state\"></nz-spin>\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { AjaxFormComponent } from './ajax-form/ajax-form.component';\nimport { StaticHtmlRendererModule } from '@spryker/html-renderer';\nimport { NzSpinModule } from 'ng-zorro-antd/spin';\nimport { UnsavedChangesFormMonitorModule } from '@spryker/unsaved-changes.monitor.form';\n\n@NgModule({\n    imports: [CommonModule, StaticHtmlRendererModule, NzSpinModule, UnsavedChangesFormMonitorModule],\n    declarations: [AjaxFormComponent],\n    exports: [AjaxFormComponent],\n})\nexport class AjaxFormModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}