xv-webcomponents 1.3.28 → 1.3.30

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -24,7 +24,7 @@ export class XvLoginModal {
24
24
  body: formData,
25
25
  credentials: 'include',
26
26
  });
27
- if (response.ok) {
27
+ if (response.ok || response.redirected) {
28
28
  window.location.reload();
29
29
  }
30
30
  }
@@ -1 +1 @@
1
- {"version":3,"file":"xv-login-modal.js","sourceRoot":"","sources":["../../../src/components/xv-login-modal/xv-login-modal.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,KAAK,EAAgB,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAc/E,MAAM,OAAO,YAAY;IALzB;QAMU,YAAO,GAAY,KAAK,CAAC;QAExB,mBAAc,GAAoB,EAAE,CAAC;QACrC,YAAO,GAAY,KAAK,CAAC;QACzB,cAAS,GAAW,GAAG,CAAC;QACxB,yBAAoB,GAAY,IAAI,CAAC;QACrC,sBAAiB,GAAY,IAAI,CAAC;QAClC,gCAA2B,GAAY,IAAI,CAAC;QAC5C,sBAAiB,GAAW,IAAI,CAAC;QACjC,oBAAe,GAAW,IAAI,CAAC;QAC/B,eAAU,GAAW,0DAA0D,CAAC;QAmCxE,gBAAW,GAAG,GAAG,EAAE;YAClC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QACpB,CAAC,CAAC;QA8Ee,iBAAY,GAAG,KAAK,EAAE,CAAQ,EAAE,EAAE;YACjD,CAAC,CAAC,cAAc,EAAE,CAAC;YACnB,MAAM,IAAI,GAAG,CAAC,CAAC,MAAyB,CAAC;YACzC,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC;YAEpC,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE;oBACxC,MAAM,EAAE,MAAM;oBACd,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,SAAS;iBACvB,CAAC,CAAC;gBAEH,IAAI,QAAQ,CAAC,EAAE,EAAE,CAAC;oBAChB,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;gBAC3B,CAAC;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,KAAK,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;YACxC,CAAC;QACH,CAAC,CAAC;KAgGH;IAlOC,iBAAiB;QACf,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,IAAI,CAAC,iBAAiB,EAAE,CAAC;IAC3B,CAAC;IAEO,YAAY;QAClB,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAC3D,IAAI,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;QAC1D,IAAI,GAAG,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC;YAChD,GAAG,GAAG,GAAG,CAAC;QACZ,CAAC;QACD,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC;IACvB,CAAC;IAEO,iBAAiB;;QACvB,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC;QAEtF,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAO;QAE1B,IAAI,CAAC;YACH,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC;YAChC,IAAI,CAAC,oBAAoB,GAAG,CAAC,CAAC,UAAU,CAAC,oBAAoB,CAAC;YAC9D,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC,UAAU,CAAC,iBAAiB,CAAC;YACxD,IAAI,CAAC,2BAA2B,GAAG,CAAC,CAAC,UAAU,CAAC,2BAA2B,CAAC;YAC5E,IAAI,CAAC,iBAAiB,GAAG,UAAU,CAAC,iBAAiB,CAAC;YACtD,IAAI,CAAC,eAAe,GAAG,UAAU,CAAC,eAAe,CAAC;YAClD,IAAI,CAAC,UAAU,GAAG,MAAA,UAAU,CAAC,UAAU,mCAAI,GAAG,IAAI,CAAC,UAAU,EAAE,oBAAoB,CAAC;QACtF,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,CAAC,IAAI,CAAC,iCAAiC,EAAE,CAAC,CAAC,CAAC;QACrD,CAAC;IACH,CAAC;IAMO,mBAAmB;QACzB,IAAI,CAAC,IAAI,CAAC,oBAAoB;YAAE,OAAO,IAAI,CAAC;QAC5C,OAAO,CACL,aAAO,KAAK,EAAC,mBAAmB;YAC9B,SAAG,IAAI,EAAE,GAAG,IAAI,CAAC,UAAU,EAAE,4CAA4C,0BAErE,CACE,CACT,CAAC;IACJ,CAAC;IAEO,oBAAoB;QAE1B,OAAO,CACL,WAAK,KAAK,EAAC,KAAK;YACd,WAAK,KAAK,EAAC,WAAW;gBACpB,WAAK,KAAK,EAAC,WAAW;oBACpB,WAAK,KAAK,EAAC,0BAA0B;wBACnC,WAAK,KAAK,EAAC,UAAU;4BAAC,aAAM,CAAM;wBAClC,WAAK,KAAK,EAAC,kCAAkC,WAAW;wBACxD,WAAK,KAAK,EAAC,UAAU;4BAAC,aAAM,CAAM;wBAClC,WAAK,KAAK,EAAC,WAAW;4BACpB,yCAAmC,CAC/B,CACF,CACF;gBACN,WAAK,KAAK,EAAC,WAAW;oBACpB,WAAK,KAAK,EAAC,4BAA4B;wBACrC,YACE,MAAM,EAAC,MAAM,EACb,MAAM,EAAE,GAAG,IAAI,CAAC,UAAU,EAAE,6CAA6C;4BAEzE,WAAK,KAAK,EAAC,KAAK;gCAEZ,WAAK,KAAK,EAAC,iEAAiE;oCAC1E,cACE,IAAI,EAAC,QAAQ,EACb,KAAK,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,EAC5B,IAAI,EAAC,UAAU,EACf,KAAK,EAAE,qFAAqF,EAC5F,KAAK,EAAE,QAAQ,EACf,KAAK,EAAE,qBAAqB;wCAE5B,SAAG,KAAK,EAAE,yBAAyB,GAAM;wCACzC,YAAM,KAAK,EAAE,EAAE,UAAU,EAAE,MAAM,EAAC,aAAe,CAC1C,CACL,CACJ;4BACN,aAAO,IAAI,EAAC,QAAQ,EAAC,IAAI,EAAC,SAAS,EAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,GAAI,CACjE,CACH,CACF;gBACN,WAAK,KAAK,EAAC,WAAW;oBAAC,aAAM,CAAM;gBACnC,WAAK,KAAK,EAAC,qBAAqB;oBAC9B,WAAK,KAAK,EAAC,EAAE;;wBAAc,SAAG,IAAI,EAAE,GAAG,IAAI,CAAC,UAAU,EAAE,wCAAwC,oCAAmC,CAAM,CACrI,CACF,CACF,CACP,CAAC;IACJ,CAAC;IAEO,YAAY;QAClB,OAAO,CACL,WAAK,KAAK,EAAC,cAAc;YACvB,WAAK,KAAK,EAAC,qBAAqB;gBAC5B;oBACE,WAAK,KAAK,EAAC,QAAQ,2EAAsE;oBACzF;wBACE,SAAG,IAAI,EAAE,IAAI,CAAC,UAAU,2BAA0B;wDAC9C,CACF,CACJ,CACF,CACP,CAAC;IACJ,CAAC;IAsBO,UAAU;QAChB,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAE1C,IAAI,QAAQ,CAAC,QAAQ,CAAC,gCAAgC,CAAC,EAAE,CAAC;YACxD,OAAO,6BAA6B,CAAC;QACvC,CAAC;aAAM,IAAI,QAAQ,CAAC,QAAQ,CAAC,sBAAsB,CAAC,EAAE,CAAC;YACrD,OAAO,iCAAiC,CAAC;QAC3C,CAAC;aAAM,IAAI,QAAQ,CAAC,QAAQ,CAAC,qCAAqC,CAAC,EAAE,CAAC;YACpE,OAAO,kCAAkC,CAAC;QAC5C,CAAC;aAAM,CAAC;YACN,yCAAyC;YACzC,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IAED,MAAM;QACJ,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAO,IAAI,CAAC;QAC/B,OAAO,CACL,WAAK,KAAK,EAAC,YAAY,EAAC,KAAK,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,EAAC,aAAa,EAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,IAAI,EAAC,QAAQ;YAC/F,WAAK,KAAK,EAAC,cAAc,EAAC,IAAI,EAAC,UAAU;gBACvC,WAAK,KAAK,EAAC,eAAe;oBACxB,WAAK,KAAK,EAAC,cAAc;wBACvB,WAAK,KAAK,EAAC,KAAK;4BACd,WAAK,KAAK,EAAC,WAAW;gCACpB,WAAK,KAAK,EAAC,WAAW;oCACpB,UAAI,KAAK,EAAC,aAAa,iBAAgB,CACnC,CACF;4BACN,WAAK,KAAK,EAAC,qBAAqB;gCAC9B,cAAQ,OAAO,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,EAAC,QAAQ,EAAC,KAAK,EAAC,OAAO;oCAC5D,2BAAkB,MAAM,aAAe,CAChC,CACL,CACF,CACF;oBACN,WAAK,KAAK,EAAC,YAAY;wBACrB,WAAK,KAAK,EAAC,KAAK;4BACd,WAAK,KAAK,EAAC,WAAW;gCACpB,YACE,YAAY,EAAC,KAAK,EAClB,EAAE,EAAC,kBAAkB,EACrB,MAAM,EAAE,GAAG,IAAI,CAAC,UAAU,EAAE,iDAAiD,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,EACjH,MAAM,EAAC,MAAM,EACb,KAAK,EAAC,QAAQ,EACd,QAAQ,EAAE,IAAI,CAAC,YAAY;oCAE3B,aAAO,IAAI,EAAC,QAAQ,EAAC,IAAI,EAAC,WAAW,EAAC,KAAK,EAAE,IAAI,CAAC,SAAS,GAAI;oCAC/D,WAAK,KAAK,EAAC,0BAA0B;wCACnC,WAAK,KAAK,EAAC,yBAAyB;4CAClC,aAAO,OAAO,EAAC,qBAAqB,aAAe;4CACnD,cAAQ,KAAK,EAAC,aAAa,QAAW,CAClC;wCACN,WAAK,KAAK,EAAC,WAAW;4CACpB,aAAO,KAAK,EAAC,cAAc,EAAC,EAAE,EAAC,UAAU,EAAC,IAAI,EAAC,UAAU,EAAC,IAAI,EAAC,MAAM,EAAC,QAAQ,EAAE,CAAC,GAAI,CACjF,CACF;oCACN,WAAK,KAAK,EAAC,mBAAmB;wCAC5B,WAAK,KAAK,EAAC,wBAAwB;4CACjC,aAAO,KAAK,EAAC,QAAQ,EAAC,OAAO,EAAC,qBAAqB,eAAiB;4CACpE,cAAQ,KAAK,EAAC,oBAAoB,QAAW,CACzC;wCACN,WAAK,KAAK,EAAC,UAAU,IAClB,IAAI,CAAC,mBAAmB,EAAE,CACvB;wCACN,WAAK,KAAK,EAAC,WAAW;4CACpB,aAAO,KAAK,EAAC,cAAc,EAAC,EAAE,EAAC,UAAU,EAAC,IAAI,EAAC,UAAU,EAAC,IAAI,EAAC,UAAU,EAAC,QAAQ,EAAE,CAAC,GAAI,CACrF,CACF;oCACN,WAAK,KAAK,EAAC,mBAAmB;wCAC5B,WAAK,KAAK,EAAC,WAAW;4CACpB,cAAQ,KAAK,EAAC,yCAAyC,EAAC,IAAI,EAAC,QAAQ,EAAC,QAAQ,EAAE,CAAC,eAExE,CACL,CACF;oCACN,WAAK,KAAK,EAAC,YAAY;wCACrB,WAAK,KAAK,EAAC,oBAAoB;4CAC7B,aAAO,OAAO,EAAC,YAAY;gDACzB,aAAO,EAAE,EAAC,YAAY,EAAC,IAAI,EAAC,YAAY,EAAC,IAAI,EAAC,UAAU,EAAC,KAAK,EAAC,MAAM,GAAG;sEAElE,CACJ,CACF,CACD,CACH,CACF;wBACL,IAAI,CAAC,oBAAoB,EAAE,CACxB;oBACL,IAAI,CAAC,YAAY,EAAE,CAChB,CACF,CACF,CACP,CAAC;IACJ,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CACF","sourcesContent":["import { Component, Event, EventEmitter, h, Prop, State } from '@stencil/core';\n\ntype OAuthProvider = {\n displayName: string;\n providerName: string;\n icon: string;\n buttonClass: string;\n};\n\n@Component({\n tag: 'xv-login-modal',\n styleUrl: 'xv-login-modal.scss',\n shadow: true,\n})\nexport class XvLoginModal {\n @Prop() visible: boolean = false;\n @Event() close: EventEmitter<void>;\n @State() oauthProviders: OAuthProvider[] = [];\n @State() bookNow: boolean = false;\n @State() returnUrl: string = '/';\n @State() passwordLoginEnabled: boolean = true;\n @State() oauthLoginEnabled: boolean = true;\n @State() passwordRegistrationEnabled: boolean = true;\n @State() configurationName: string = 'Xv';\n @State() xvMvcConfigName: string = 'Xv';\n @State() contactUrl: string = 'https://sitefinity-qa.crossvertise.com/ueber-uns/kontakt';\n metaNav: any;\n\n componentWillLoad() {\n this.setReturnUrl();\n this.readMetaNavCookie();\n }\n\n private setReturnUrl() {\n const params = new URLSearchParams(window.location.search);\n let url = params.get('returnUrl') || window.location.href;\n if (url.toLowerCase().includes('resetpassword')) {\n url = '/';\n }\n this.returnUrl = url;\n }\n\n private readMetaNavCookie() {\n if (!this.metaNav) this.metaNav = JSON.parse(localStorage.getItem('metaNav') || '{}');\n\n if (!this.metaNav) return;\n\n try {\n const metaNavObj = this.metaNav;\n this.passwordLoginEnabled = !!metaNavObj.PasswordLoginEnabled;\n this.oauthLoginEnabled = !!metaNavObj.oauthLoginEnabled;\n this.passwordRegistrationEnabled = !!metaNavObj.PasswordRegistrationEnabled;\n this.configurationName = metaNavObj.ConfigurationName;\n this.xvMvcConfigName = metaNavObj.XvMvcConfigName;\n this.contactUrl = metaNavObj.ContactUrl ?? `${this.getBaseUrl()}/ueber-uns/kontakt`;\n } catch (e) {\n console.warn('Could not parse metaNav cookie:', e);\n }\n }\n\n private readonly handleClose = () => {\n this.close.emit();\n };\n\n private renderPasswordLogin() {\n if (!this.passwordLoginEnabled) return null;\n return (\n <label class=\"pull-right spacer\">\n <a href={`${this.getBaseUrl()}/de-de/mycrossvertise/account/lostpassword`}>\n Passwort vergessen?\n </a>\n </label>\n );\n }\n\n private renderOAuthProviders() {\n \n return (\n <div class=\"row\">\n <div class=\"col-xs-12\">\n <div class=\"col-xs-12\">\n <div class=\"row spacer spacer-bottom\">\n <div class=\"col-xs-5\"><hr /></div>\n <div class=\"col-xs-2 text-center placeholder\">oder</div>\n <div class=\"col-xs-5\"><hr /></div>\n <div class=\"col-xs-12\">\n <span>Alternative Anmeldung:</span>\n </div>\n </div>\n </div>\n <div class=\"col-sm-12\">\n <div class=\"col-xs-12 no-padding-right\">\n <form\n method=\"POST\"\n action={`${this.getBaseUrl()}/de-de/mycrossvertise/account/externallogin`}\n >\n <div class=\"row\">\n \n <div class=\"col-xs-6 col-sm-3 no-padding-left padding-bottom-10 center-cell\">\n <button\n type=\"submit\"\n style={{ maxWidth: '125px' }}\n name=\"provider\"\n class={`cell-content btn btn-primary btn btn-block btn-google-primary btn-primary btn-block`}\n value={\"Google\"}\n title={`Mit Google anmelden`}\n >\n <i class={`fab fa-google pull-left`}></i>\n <span style={{ marginLeft :'5px;'}}>Google</span>\n </button>\n </div>\n </div>\n <input type=\"hidden\" name=\"BookNow\" value={this.bookNow.toString()} />\n </form>\n </div>\n </div>\n <div class=\"col-xs-12\"><hr /></div>\n <div class=\"col-sm-12 text-left\">\n <div class=\"\">Neuer Kunde? <a href={`${this.getBaseUrl()}/de-de/mycrossvertise/account/register`}>Jetzt kostenlos registrieren!</a></div>\n </div>\n </div>\n </div>\n );\n }\n\n private renderFooter() {\n return (\n <div class=\"modal-footer\">\n <div class=\"col-sm-12 text-left\">\n <div>\n <div class=\"spacer\">Sie sind bereits registriert, können sich aber nicht einloggen?</div>\n <div>\n <a href={this.contactUrl}>Kontaktieren Sie uns</a>, wir kümmern uns darum.\n </div>\n </div>\n </div>\n </div>\n );\n }\n\n private readonly handleSubmit = async (e: Event) => {\n e.preventDefault();\n const form = e.target as HTMLFormElement;\n const formData = new FormData(form);\n \n try {\n const response = await fetch(form.action, {\n method: 'POST',\n body: formData,\n credentials: 'include',\n });\n \n if (response.ok) {\n window.location.reload();\n }\n } catch (error) {\n console.error('Login failed:', error);\n }\n };\n\n private getBaseUrl(): string {\n const hostname = window.location.hostname;\n \n if (hostname.includes('sitefinity-qa.crossvertise.com')) {\n return 'https://qa.crossvertise.com';\n } else if (hostname.includes('www.crossvertise.com')) {\n return 'https://market.crossvertise.com';\n } else if (hostname.includes('sitefinity-staging.crossvertise.com')) {\n return 'https://staging.crossvertise.com';\n } else {\n // fallback for local dev or default prod\n return '';\n }\n }\n\n render() {\n if (!this.visible) return null;\n return (\n <div class=\"modal show\" style={{ display: 'block' }} id=\"login-modal\" tabIndex={-1} role=\"dialog\">\n <div class=\"modal-dialog\" role=\"document\">\n <div class=\"modal-content\">\n <div class=\"modal-header\">\n <div class=\"row\">\n <div class=\"col-sm-10\">\n <div class=\"col-xs-12\">\n <h4 class=\"modal-title\">Logindaten</h4>\n </div>\n </div>\n <div class=\"col-xs-1 pull-right\">\n <button onClick={this.handleClose} type=\"button\" class=\"close\">\n <span aria-hidden=\"true\">&times;</span>\n </button>\n </div>\n </div>\n </div>\n <div class=\"modal-body\">\n <div class=\"row\">\n <div class=\"col-sm-12\">\n <form\n autoComplete=\"off\"\n id=\"logon-modal-form\"\n action={`${this.getBaseUrl()}/de-de/mycrossvertise/account/logon?returnUrl=${encodeURIComponent(this.returnUrl)}`}\n method=\"post\"\n class=\"spacer\"\n onSubmit={this.handleSubmit}\n >\n <input type=\"hidden\" name=\"returnUrl\" value={this.returnUrl} />\n <div class=\"form-group spacer-bottom\">\n <div class=\"control-label col-xs-12\">\n <label htmlFor=\"LoginPopup.UserName\">E-Mail</label>\n <strong class=\"text-danger\">*</strong>\n </div>\n <div class=\"col-xs-12\">\n <input class=\"form-control\" id=\"userName\" name=\"UserName\" type=\"text\" tabIndex={1} />\n </div>\n </div>\n <div class=\"form-group spacer\">\n <div class=\"control-label col-xs-6\">\n <label class=\"spacer\" htmlFor=\"LoginPopup.Password\">Passwort</label>\n <strong class=\"text-danger spacer\">*</strong>\n </div>\n <div class=\"col-xs-6\">\n {this.renderPasswordLogin()}\n </div>\n <div class=\"col-xs-12\">\n <input class=\"form-control\" id=\"password\" name=\"Password\" type=\"password\" tabIndex={2} />\n </div>\n </div>\n <div class=\"form-group spacer\">\n <div class=\"col-xs-12\">\n <button class=\"btn btn-primary btn-lg btn-block spacer\" type=\"submit\" tabIndex={3}>\n Anmelden\n </button>\n </div>\n </div>\n <div class=\"form-group\">\n <div class=\"checkbox col-xs-12\">\n <label htmlFor=\"RememberMe\">\n <input id=\"RememberMe\" name=\"RememberMe\" type=\"checkbox\" value=\"true\" />\n Angemeldet bleiben?\n </label>\n </div>\n </div>\n </form>\n </div>\n </div>\n {this.renderOAuthProviders()}\n </div>\n {this.renderFooter()}\n </div>\n </div>\n </div>\n );\n }\n}\n"]}
1
+ {"version":3,"file":"xv-login-modal.js","sourceRoot":"","sources":["../../../src/components/xv-login-modal/xv-login-modal.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, Event, EventEmitter, h, Prop, State } from '@stencil/core';\n\ntype OAuthProvider = {\n displayName: string;\n providerName: string;\n icon: string;\n buttonClass: string;\n};\n\n@Component({\n tag: 'xv-login-modal',\n styleUrl: 'xv-login-modal.scss',\n shadow: true,\n})\nexport class XvLoginModal {\n @Prop() visible: boolean = false;\n @Event() close: EventEmitter<void>;\n @State() oauthProviders: OAuthProvider[] = [];\n @State() bookNow: boolean = false;\n @State() returnUrl: string = '/';\n @State() passwordLoginEnabled: boolean = true;\n @State() oauthLoginEnabled: boolean = true;\n @State() passwordRegistrationEnabled: boolean = true;\n @State() configurationName: string = 'Xv';\n @State() xvMvcConfigName: string = 'Xv';\n @State() contactUrl: string = 'https://sitefinity-qa.crossvertise.com/ueber-uns/kontakt';\n metaNav: any;\n\n componentWillLoad() {\n this.setReturnUrl();\n this.readMetaNavCookie();\n }\n\n private setReturnUrl() {\n const params = new URLSearchParams(window.location.search);\n let url = params.get('returnUrl') || window.location.href;\n if (url.toLowerCase().includes('resetpassword')) {\n url = '/';\n }\n this.returnUrl = url;\n }\n\n private readMetaNavCookie() {\n if (!this.metaNav) this.metaNav = JSON.parse(localStorage.getItem('metaNav') || '{}');\n\n if (!this.metaNav) return;\n\n try {\n const metaNavObj = this.metaNav;\n this.passwordLoginEnabled = !!metaNavObj.PasswordLoginEnabled;\n this.oauthLoginEnabled = !!metaNavObj.oauthLoginEnabled;\n this.passwordRegistrationEnabled = !!metaNavObj.PasswordRegistrationEnabled;\n this.configurationName = metaNavObj.ConfigurationName;\n this.xvMvcConfigName = metaNavObj.XvMvcConfigName;\n this.contactUrl = metaNavObj.ContactUrl ?? `${this.getBaseUrl()}/ueber-uns/kontakt`;\n } catch (e) {\n console.warn('Could not parse metaNav cookie:', e);\n }\n }\n\n private readonly handleClose = () => {\n this.close.emit();\n };\n\n private renderPasswordLogin() {\n if (!this.passwordLoginEnabled) return null;\n return (\n <label class=\"pull-right spacer\">\n <a href={`${this.getBaseUrl()}/de-de/mycrossvertise/account/lostpassword`}>\n Passwort vergessen?\n </a>\n </label>\n );\n }\n\n private renderOAuthProviders() {\n \n return (\n <div class=\"row\">\n <div class=\"col-xs-12\">\n <div class=\"col-xs-12\">\n <div class=\"row spacer spacer-bottom\">\n <div class=\"col-xs-5\"><hr /></div>\n <div class=\"col-xs-2 text-center placeholder\">oder</div>\n <div class=\"col-xs-5\"><hr /></div>\n <div class=\"col-xs-12\">\n <span>Alternative Anmeldung:</span>\n </div>\n </div>\n </div>\n <div class=\"col-sm-12\">\n <div class=\"col-xs-12 no-padding-right\">\n <form\n method=\"POST\"\n action={`${this.getBaseUrl()}/de-de/mycrossvertise/account/externallogin`}\n >\n <div class=\"row\">\n \n <div class=\"col-xs-6 col-sm-3 no-padding-left padding-bottom-10 center-cell\">\n <button\n type=\"submit\"\n style={{ maxWidth: '125px' }}\n name=\"provider\"\n class={`cell-content btn btn-primary btn btn-block btn-google-primary btn-primary btn-block`}\n value={\"Google\"}\n title={`Mit Google anmelden`}\n >\n <i class={`fab fa-google pull-left`}></i>\n <span style={{ marginLeft :'5px;'}}>Google</span>\n </button>\n </div>\n </div>\n <input type=\"hidden\" name=\"BookNow\" value={this.bookNow.toString()} />\n </form>\n </div>\n </div>\n <div class=\"col-xs-12\"><hr /></div>\n <div class=\"col-sm-12 text-left\">\n <div class=\"\">Neuer Kunde? <a href={`${this.getBaseUrl()}/de-de/mycrossvertise/account/register`}>Jetzt kostenlos registrieren!</a></div>\n </div>\n </div>\n </div>\n );\n }\n\n private renderFooter() {\n return (\n <div class=\"modal-footer\">\n <div class=\"col-sm-12 text-left\">\n <div>\n <div class=\"spacer\">Sie sind bereits registriert, können sich aber nicht einloggen?</div>\n <div>\n <a href={this.contactUrl}>Kontaktieren Sie uns</a>, wir kümmern uns darum.\n </div>\n </div>\n </div>\n </div>\n );\n }\n\n private readonly handleSubmit = async (e: Event) => {\n e.preventDefault();\n const form = e.target as HTMLFormElement;\n const formData = new FormData(form);\n \n try {\n const response = await fetch(form.action, {\n method: 'POST',\n body: formData,\n credentials: 'include',\n });\n \n if (response.ok || response.redirected) {\n window.location.reload();\n }\n } catch (error) {\n console.error('Login failed:', error);\n }\n };\n\n private getBaseUrl(): string {\n const hostname = window.location.hostname;\n \n if (hostname.includes('sitefinity-qa.crossvertise.com')) {\n return 'https://qa.crossvertise.com';\n } else if (hostname.includes('www.crossvertise.com')) {\n return 'https://market.crossvertise.com';\n } else if (hostname.includes('sitefinity-staging.crossvertise.com')) {\n return 'https://staging.crossvertise.com';\n } else {\n // fallback for local dev or default prod\n return '';\n }\n }\n\n render() {\n if (!this.visible) return null;\n return (\n <div class=\"modal show\" style={{ display: 'block' }} id=\"login-modal\" tabIndex={-1} role=\"dialog\">\n <div class=\"modal-dialog\" role=\"document\">\n <div class=\"modal-content\">\n <div class=\"modal-header\">\n <div class=\"row\">\n <div class=\"col-sm-10\">\n <div class=\"col-xs-12\">\n <h4 class=\"modal-title\">Logindaten</h4>\n </div>\n </div>\n <div class=\"col-xs-1 pull-right\">\n <button onClick={this.handleClose} type=\"button\" class=\"close\">\n <span aria-hidden=\"true\">&times;</span>\n </button>\n </div>\n </div>\n </div>\n <div class=\"modal-body\">\n <div class=\"row\">\n <div class=\"col-sm-12\">\n <form\n autoComplete=\"off\"\n id=\"logon-modal-form\"\n action={`${this.getBaseUrl()}/de-de/mycrossvertise/account/logon?returnUrl=${encodeURIComponent(this.returnUrl)}`}\n method=\"post\"\n class=\"spacer\"\n onSubmit={this.handleSubmit}\n >\n <input type=\"hidden\" name=\"returnUrl\" value={this.returnUrl} />\n <div class=\"form-group spacer-bottom\">\n <div class=\"control-label col-xs-12\">\n <label htmlFor=\"LoginPopup.UserName\">E-Mail</label>\n <strong class=\"text-danger\">*</strong>\n </div>\n <div class=\"col-xs-12\">\n <input class=\"form-control\" id=\"userName\" name=\"UserName\" type=\"text\" tabIndex={1} />\n </div>\n </div>\n <div class=\"form-group spacer\">\n <div class=\"control-label col-xs-6\">\n <label class=\"spacer\" htmlFor=\"LoginPopup.Password\">Passwort</label>\n <strong class=\"text-danger spacer\">*</strong>\n </div>\n <div class=\"col-xs-6\">\n {this.renderPasswordLogin()}\n </div>\n <div class=\"col-xs-12\">\n <input class=\"form-control\" id=\"password\" name=\"Password\" type=\"password\" tabIndex={2} />\n </div>\n </div>\n <div class=\"form-group spacer\">\n <div class=\"col-xs-12\">\n <button class=\"btn btn-primary btn-lg btn-block spacer\" type=\"submit\" tabIndex={3}>\n Anmelden\n </button>\n </div>\n </div>\n <div class=\"form-group\">\n <div class=\"checkbox col-xs-12\">\n <label htmlFor=\"RememberMe\">\n <input id=\"RememberMe\" name=\"RememberMe\" type=\"checkbox\" value=\"true\" />\n Angemeldet bleiben?\n </label>\n </div>\n </div>\n </form>\n </div>\n </div>\n {this.renderOAuthProviders()}\n </div>\n {this.renderFooter()}\n </div>\n </div>\n </div>\n );\n }\n}\n"]}
@@ -78437,7 +78437,7 @@ const XvLoginModal = class {
78437
78437
  body: formData,
78438
78438
  credentials: 'include',
78439
78439
  });
78440
- if (response.ok) {
78440
+ if (response.ok || response.redirected) {
78441
78441
  window.location.reload();
78442
78442
  }
78443
78443
  }