JezK
Edit File: sc-password-nag.entry.js.map
{"file":"sc-password-nag.entry.js","mappings":";;;;;;AAAA,MAAM,gBAAgB,GAAG,sBAAsB,CAAC;AAChD,4BAAe,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8EC+CE,UAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8EA8BF,UAAE;;;;;;gGASL,UAAE,2BACrB,UAAE;;qDAMwB,UAAE,6WAKH,UAAE,mLAGrB,UAAE,2KAMQ,UAAE,sNAQN,UAAE,oGASR,UAAE,2CAEE,UAAE,kOAGJ,UAAE,gHAGF,UAAE;;;;;;;;;;","names":[],"sources":["src/components/controllers/dashboard/sc-password-nag/sc-password-nag.css?tag=sc-password-nag&encapsulation=shadow","src/components/controllers/dashboard/sc-password-nag/sc-password-nag.tsx"],"sourcesContent":[":host {\n display: block;\n}\n","import { Component, Fragment, h, Prop, State, Watch, Host } from '@stencil/core';\nimport apiFetch from '../../../../functions/fetch';\nimport { __ } from '@wordpress/i18n';\n\n@Component({\n tag: 'sc-password-nag',\n styleUrl: 'sc-password-nag.css',\n shadow: true,\n})\nexport class ScPasswordNag {\n private input: HTMLScPasswordElement;\n @Prop({ mutable: true }) open: boolean = true;\n /** The type of alert. */\n @Prop({ reflect: true }) type: 'primary' | 'success' | 'info' | 'warning' | 'danger' = 'primary';\n /** The success url. */\n @Prop() successUrl: string;\n /** Set a new password */\n @State() set: boolean;\n @State() loading: boolean;\n @State() error: string;\n @State() success: boolean;\n\n /** Ensures strong password validation. */\n @Prop({ reflect: true }) enableValidation = true;\n\n @Watch('set')\n handleSetChange() {\n setTimeout(() => {\n this.input && this.input.triggerFocus();\n }, 50);\n }\n\n /** Dismiss the form. */\n async dismiss() {\n this.loading = true;\n this.error = '';\n try {\n await apiFetch({\n path: `wp/v2/users/me`,\n method: 'PATCH',\n data: {\n meta: {\n default_password_nag: false,\n },\n },\n });\n this.open = false;\n } catch (e) {\n this.error = e?.message || __('Something went wrong', 'surecart');\n this.loading = false;\n }\n }\n\n validatePassword(password: string) {\n const regex = new RegExp('^(?=.*?[#?!@$%^&*-]).{6,}$');\n if (regex.test(password)) return true;\n return false;\n }\n\n /** Handle password submit. */\n async handleSubmit(e) {\n this.loading = true;\n this.error = '';\n try {\n const { password } = await e.target.getFormJson();\n await apiFetch({\n path: `wp/v2/users/me`,\n method: 'PATCH',\n data: {\n password,\n meta: {\n default_password_nag: false,\n },\n },\n });\n this.dismiss();\n this.success = true;\n } catch (e) {\n this.error = e?.message || __('Something went wrong', 'surecart');\n this.loading = false;\n }\n }\n\n render() {\n if (this.success) {\n return (\n <sc-alert type=\"success\" open>\n <span slot=\"title\">{__('Success!', 'surecart')}</span>\n {__('You have successfully set your password.', 'surecart')}\n </sc-alert>\n );\n }\n\n return (\n <Host tabindex={0} aria-label={__('You have not yet set a password. Please set a password for your account.', 'surecart')}>\n <sc-alert type={this.type} open={this.open} exportparts=\"base, icon, text, title, message, close-icon\" style={{ position: 'relative' }}>\n {!!this.error && this.error}\n {this.set ? (\n <sc-dashboard-module class=\"customer-details\">\n <span slot=\"heading\">{__('Set A Password', 'surecart')} </span>\n <sc-button type=\"text\" size=\"small\" slot=\"end\" onClick={() => (this.set = false)}>\n <sc-icon name=\"x\" slot=\"prefix\" />\n {__('Cancel', 'surecart')}\n </sc-button>\n <sc-card>\n <sc-form onScFormSubmit={e => this.handleSubmit(e)}>\n <sc-password\n enableValidation={this.enableValidation}\n label={__('New Password', 'surecart')}\n name=\"password\"\n confirmation={true}\n ref={el => (this.input = el as HTMLScPasswordElement)}\n required\n />\n <div>\n <sc-button type=\"primary\" full submit busy={this.loading}>\n {__('Set Password', 'surecart')}\n </sc-button>\n </div>\n </sc-form>\n </sc-card>\n </sc-dashboard-module>\n ) : (\n <Fragment>\n <slot name=\"title\" slot=\"title\">\n {__('Reminder', 'surecart')}\n </slot>\n <slot>{__('You have not yet set a password. Please set a password for your account.', 'surecart')}</slot>\n <sc-flex justify-content=\"flex-start\">\n <sc-button size=\"small\" type=\"primary\" onClick={() => (this.set = true)}>\n {__('Set A Password', 'surecart')}\n </sc-button>\n <sc-button size=\"small\" type=\"text\" onClick={() => this.dismiss()}>\n {__('Dismiss', 'surecart')}\n </sc-button>\n </sc-flex>\n </Fragment>\n )}\n {this.loading && <sc-block-ui spinner></sc-block-ui>}\n </sc-alert>\n </Host>\n );\n }\n}\n"],"version":3}