@descope/web-components-ui 1.0.184 → 1.0.186
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.
- package/dist/cjs/index.cjs.js +22 -20
- package/dist/cjs/index.cjs.js.map +1 -1
- package/dist/index.esm.js +22 -20
- package/dist/index.esm.js.map +1 -1
- package/dist/umd/descope-recaptcha-index-js.js +1 -1
- package/dist/umd/descope-upload-file-index-js.js +1 -1
- package/package.json +1 -1
- package/src/components/descope-recaptcha/RecaptchaClass.js +21 -19
- package/src/components/descope-upload-file/UploadFileClass.js +1 -1
@@ -1 +1 @@
|
|
1
|
-
"use strict";(self.webpackChunkDescopeUI=self.webpackChunkDescopeUI||[]).push([[964],{8164:(t,
|
1
|
+
"use strict";(self.webpackChunkDescopeUI=self.webpackChunkDescopeUI||[]).push([[964],{8164:(e,t,a)=>{a.r(t),a.d(t,{RecaptchaClass:()=>p});var c=a(1e3),n=a(3874),s=a(2061);const i=(0,a(4567).iY)("recaptcha"),r=["enabled","site-key","action","enterprise"],o=(0,n.s)({componentName:i,baseSelector:":host > div"}),p=(0,s.qC)(c.e4)(class extends o{static get observedAttributes(){return r.concat(o.observedAttributes||[])}attributeChangedCallback(e,t,a){super.attributeChangedCallback?.(e,t,a),"enabled"===e&&this.#e("true"===a)}renderRecaptcha(e){e?(this.recaptchaEle.style.display="",this.mockRecaptchaEle.style.display="none"):(this.recaptchaEle.style.display="none",this.mockRecaptchaEle.style.display="")}constructor(){super(),this.attachShadow({mode:"open"}).innerHTML='\n\t\t<style>\n :host {\n display: inline-flex;\n }\n :host > div {\n display: flex;\n }\n :host #recaptcha {\n\t\t\t\twidth: 100%;\n height: 100%;\n\t\t\t}\n :host img {\n width: 256px;\n }\n\t\t</style>\n <div>\n <span id="recaptcha"></span>\n <img src="https://imgs.descope.com/connectors/templates/recaptcha/recaptcha-big.png" alt="recaptcha"/>\n </div>\n\t',this.recaptchaEle=this.baseElement.querySelector("#recaptcha"),this.mockRecaptchaEle=this.baseElement.querySelector("img")}get enterprise(){return"true"===this.getAttribute("enterprise")}get siteKey(){return this.getAttribute("site-key")}get action(){return this.getAttribute("action")||"load"}get enabled(){return"true"===this.getAttribute("enabled")}get scriptURL(){const e=new URL("https://www.google.com/recaptcha/");return e.pathname+=(this.enterprise?"enterprise":"api")+".js",e.searchParams.append("onload","onRecaptchaLoadCallback"),e.searchParams.append("render","explicit"),e.toString()}#e(e){this.renderRecaptcha(e),e&&(this.#t(),this.#a())}#t(){if(document.getElementById("recaptcha-script"))window.onRecaptchaLoadCallback();else{const e=document.createElement("script");e.src=this.scriptURL,e.async=!0,e.id="recaptcha-script",e.defer=!0,document.body.appendChild(e)}}#a(){window.onRecaptchaLoadCallback||(window.onRecaptchaLoadCallback=()=>{const e=this.recaptchaEle;if(e.hasChildNodes())return;const t=this.enterprise?window.grecaptcha?.enterprise:window.grecaptcha;t&&setTimeout((()=>{const a=t.render(e,{sitekey:this.siteKey,badge:"inline",size:"invisible"});t.ready((()=>{const c=e.querySelector("#g-recaptcha-response")?.cloneNode();c&&(c.style.display="none",document.body.appendChild(c)),this.siteKey&&t?.execute(a,{action:this.action}).then((e=>{this.updateComponentsContext({risktoken:e,riskaction:this.action})}))}))}),0)})}connectedCallback(){super.connectedCallback?.(),this.#e(this.enabled)}});customElements.define(i,p)}}]);
|
@@ -1 +1 @@
|
|
1
|
-
"use strict";(self.webpackChunkDescopeUI=self.webpackChunkDescopeUI||[]).push([[5874],{6667:(t,e,i)=>{i.r(e),i.d(e,{UploadFileClass:()=>g});var n=i(1e3),o=i(2061),r=i(4567),s=i(3878);const a=(0,r.iY)("upload-file"),p=["title","description","button-label","accept","readonly","button-mode","button-variant","required","size","icon"],u=(0,s.P)({componentName:a,baseSelector:":host > div"}),{host:d,wrapper:l,icon:c,title:h,description:b,requiredIndicator:y}={host:{selector:()=>":host"},wrapper:{selector:()=>":host > div"},icon:{selector:()=>"
|
1
|
+
"use strict";(self.webpackChunkDescopeUI=self.webpackChunkDescopeUI||[]).push([[5874],{6667:(t,e,i)=>{i.r(e),i.d(e,{UploadFileClass:()=>g});var n=i(1e3),o=i(2061),r=i(4567),s=i(3878);const a=(0,r.iY)("upload-file"),p=["title","description","button-label","accept","readonly","button-mode","button-variant","required","size","icon"],u=(0,s.P)({componentName:a,baseSelector:":host > div"}),{host:d,wrapper:l,icon:c,title:h,description:b,requiredIndicator:y}={host:{selector:()=>":host"},wrapper:{selector:()=>":host > div"},icon:{selector:()=>"::slotted(*)"},title:{selector:()=>".title"},description:{selector:()=>".description"},requiredIndicator:{selector:()=>".title::after"}},g=(0,o.qC)((0,n.yk)({componentNameOverride:(0,r.iY)("input-wrapper")}),(0,n.yk)({mappings:{fontSize:{},fontFamily:{},borderColor:{},borderWidth:{},borderStyle:{},borderRadius:{},hostHeight:{...d,property:"height"},hostWidth:{...d,property:"width"},hostPadding:{property:"padding"},gap:{...l},lineHeight:{...l,property:"line-height"},titleFontSize:{...h,property:"font-size"},titleFontWeight:{...h,property:"font-weight"},descriptionFontSize:{...b,property:"font-size"},labelTextColor:[{...h,property:"color"},{...b,property:"color"}],iconSize:{...c,property:"width"},requiredIndicator:{...y,property:"content"}}}),n.e4,n.Ae)(class extends u{static get observedAttributes(){return p.concat(u.observedAttributes||[])}constructor(){super(),this.attachShadow({mode:"open"}).innerHTML='\n\t\t\t<style>\n\t\t\t:host {\n\t\t\t\tdisplay: flex;\n\t\t\t}\n\t\t\t:host > div {\n\t\t\t\tdisplay: flex;\n\t\t\t\talign-items: center;\n\t\t\t\tjustify-content: center;\n\t\t\t\ttext-align: center;\n\t\t\t\tflex-direction: column;\n\t\t\t\twidth: 100%;\n\t\t\t}\n\t\t\t.button-wrapper {\n\t\t\t\tposition: relative;\n\t\t\t\twidth: fit-content;\n\t\t\t}\n\t\t\tinput {\n\t\t\t\tposition: absolute;\n\t\t\t\twidth: 100%;\n\t\t\t\theight: 100%;\n\t\t\t\topacity: 0;\n\t\t\t}\n\t\t\t</style>\n\t\t\t<div>\n <slot name="icon"></slot>\n\t\t\t\t<div class="title">\n\t\t\t\t\t<span class="title-text"></span>\n\t\t\t\t</div>\n\t\t\t\t<div class="description"></div>\n\t\t\t\t<div class="button-wrapper">\n\t\t\t\t\t<input type="file" tabindex="-1" />\n\t\t\t\t\t<descope-button></descope-button>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t',this.wrapperEle=this.shadowRoot.querySelector(".wrapper"),this.inputElement=this.shadowRoot.querySelector("input"),this.button.onclick=()=>this.inputElement.click(),this.inputElement.onchange=async t=>{const e=t.target.files;var i;e.length&&(this.value=await(i=e[0],new Promise((t=>{const e=new FileReader;e.onload=e=>t(e.target.result),e.readAsDataURL(i)}))),this.updateDescription((t=>t.name.replace(/^.*\\/,""))(e[0])))},this.oninvalid=()=>{this.setAttribute("invalid","true")}}getValidity(){return this.isRequired&&!this.value?{valueMissing:!0}:{}}initInputs(){this.rootElement.querySelector("descope-button").onclick=()=>this.inputElement.click()}attributeChangedCallback(t,e,i){super.attributeChangedCallback?.(t,e,i),e!==i&&("title"===t?this.updateTitle(i):"description"===t?this.updateDescription(i):"button-label"===t?this.updateButtonLabel(i):"button-mode"===t?this.updateButtonMode(i):"button-variant"===t?this.updateButtonVariant(i):"size"===t?this.updateButtonSize(i):"accept"===t?this.updateInputAccept(i):"readonly"===t&&this.updateReadOnly(i))}get button(){return this.shadowRoot.querySelector("descope-button")}get input(){return this.shadowRoot.querySelector("input")}get title(){return this.shadowRoot.querySelector(".title-text")}get description(){return this.shadowRoot.querySelector(".description")}get icon(){return this.shadowRoot.querySelector(".icon")}updateTitle(t){this.title.innerHTML=t}updateDescription(t){this.description.innerHTML=t}updateButtonLabel(t){this.button.innerHTML=t}updateButtonSize(t){this.button.setAttribute("size",t)}updateButtonMode(t){this.button.setAttribute("mode",t)}updateButtonVariant(t){this.button.setAttribute("variant",t)}updateInputAccept(t){this.input.setAttribute("accept",t)}updateReadOnly(t){"true"===t?this.input.setAttribute("disabled","true"):this.input.removeAttribute("disabled")}});i(2018),customElements.define(a,g)}}]);
|
package/package.json
CHANGED
@@ -5,7 +5,7 @@ import { getComponentName } from '../../helpers/componentHelpers';
|
|
5
5
|
|
6
6
|
export const componentName = getComponentName('recaptcha');
|
7
7
|
|
8
|
-
const observedAttributes = ['
|
8
|
+
const observedAttributes = ['enabled', 'site-key', 'action', 'enterprise'];
|
9
9
|
|
10
10
|
const BaseClass = createBaseClass({
|
11
11
|
componentName,
|
@@ -18,18 +18,18 @@ class RawRecaptcha extends BaseClass {
|
|
18
18
|
|
19
19
|
attributeChangedCallback(attrName, oldValue, newValue) {
|
20
20
|
super.attributeChangedCallback?.(attrName, oldValue, newValue);
|
21
|
-
if (attrName === '
|
21
|
+
if (attrName === 'enabled') {
|
22
22
|
this.#toggleRecaptcha(newValue === 'true');
|
23
23
|
}
|
24
24
|
}
|
25
25
|
|
26
|
-
renderRecaptcha(
|
27
|
-
if (
|
28
|
-
this.recaptchaEle.style.display = 'none';
|
29
|
-
this.mockRecaptchaEle.style.display = '';
|
30
|
-
} else {
|
26
|
+
renderRecaptcha(enabled) {
|
27
|
+
if (enabled) {
|
31
28
|
this.recaptchaEle.style.display = '';
|
32
29
|
this.mockRecaptchaEle.style.display = 'none';
|
30
|
+
} else {
|
31
|
+
this.recaptchaEle.style.display = 'none';
|
32
|
+
this.mockRecaptchaEle.style.display = '';
|
33
33
|
}
|
34
34
|
}
|
35
35
|
|
@@ -38,16 +38,19 @@ class RawRecaptcha extends BaseClass {
|
|
38
38
|
|
39
39
|
this.attachShadow({ mode: 'open' }).innerHTML = `
|
40
40
|
<style>
|
41
|
-
|
41
|
+
:host {
|
42
|
+
display: inline-flex;
|
43
|
+
}
|
44
|
+
:host > div {
|
45
|
+
display: flex;
|
46
|
+
}
|
47
|
+
:host #recaptcha {
|
42
48
|
width: 100%;
|
43
|
-
|
49
|
+
height: 100%;
|
44
50
|
}
|
45
51
|
:host img {
|
46
52
|
width: 256px;
|
47
53
|
}
|
48
|
-
:host {
|
49
|
-
display: inline-flex;
|
50
|
-
}
|
51
54
|
</style>
|
52
55
|
<div>
|
53
56
|
<span id="recaptcha"></span>
|
@@ -71,8 +74,8 @@ class RawRecaptcha extends BaseClass {
|
|
71
74
|
return this.getAttribute('action') || 'load';
|
72
75
|
}
|
73
76
|
|
74
|
-
get
|
75
|
-
return this.getAttribute('
|
77
|
+
get enabled() {
|
78
|
+
return this.getAttribute('enabled') === 'true';
|
76
79
|
}
|
77
80
|
|
78
81
|
get scriptURL() {
|
@@ -83,9 +86,9 @@ class RawRecaptcha extends BaseClass {
|
|
83
86
|
return url.toString();
|
84
87
|
}
|
85
88
|
|
86
|
-
#toggleRecaptcha(
|
87
|
-
this.renderRecaptcha(
|
88
|
-
if (
|
89
|
+
#toggleRecaptcha(enabled) {
|
90
|
+
this.renderRecaptcha(enabled);
|
91
|
+
if (enabled) {
|
89
92
|
this.#loadRecaptchaScript();
|
90
93
|
this.#createOnLoadScript();
|
91
94
|
}
|
@@ -151,8 +154,7 @@ class RawRecaptcha extends BaseClass {
|
|
151
154
|
|
152
155
|
connectedCallback() {
|
153
156
|
super.connectedCallback?.();
|
154
|
-
|
155
|
-
this.#toggleRecaptcha(this.disabled);
|
157
|
+
this.#toggleRecaptcha(this.enabled);
|
156
158
|
}
|
157
159
|
}
|
158
160
|
|
@@ -184,7 +184,7 @@ class RawUploadFile extends BaseInputClass {
|
|
184
184
|
const { host, wrapper, icon, title, description, requiredIndicator } = {
|
185
185
|
host: { selector: () => ':host' },
|
186
186
|
wrapper: { selector: () => ':host > div' },
|
187
|
-
icon: { selector: () => '
|
187
|
+
icon: { selector: () => '::slotted(*)' },
|
188
188
|
title: { selector: () => '.title' },
|
189
189
|
description: { selector: () => '.description' },
|
190
190
|
requiredIndicator: { selector: () => '.title::after' },
|