@salesforcedevs/dw-components 1.3.105-alpha.0 → 1.3.119
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/package.json +2 -2
- package/src/modules/dw/codeSamplesGrid/codeSamplesGrid.ts +0 -1
- package/src/modules/dw/deSignupForm/deSignupForm.css +1 -3
- package/src/modules/dw/deSignupForm/deSignupForm.html +15 -24
- package/src/modules/dw/deSignupForm/deSignupForm.ts +52 -87
- package/src/modules/dw/deSignupForm/submitForm.ts +1 -0
- package/src/modules/dw/docsGrid/docsGrid.ts +0 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@salesforcedevs/dw-components",
|
|
3
|
-
"version": "1.3.
|
|
3
|
+
"version": "1.3.119",
|
|
4
4
|
"description": "Lightning web components for https://developer.salesforce.com",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"engines": {
|
|
@@ -24,5 +24,5 @@
|
|
|
24
24
|
"@types/setimmediate": "^1.0.2",
|
|
25
25
|
"setimmediate": "^1.0.5"
|
|
26
26
|
},
|
|
27
|
-
"gitHead": "
|
|
27
|
+
"gitHead": "a04d7ab5bb8a1686d1d0784dedb688b7f16b5635"
|
|
28
28
|
}
|
|
@@ -118,7 +118,6 @@ export default class CodeSamplesGrid extends LightningElement {
|
|
|
118
118
|
this.selectedProductFilter?.forEach((filter) => {
|
|
119
119
|
track(document, "custEv_filterAbandoned", {
|
|
120
120
|
click_text: filter,
|
|
121
|
-
click_url: filter,
|
|
122
121
|
element_title: "CodeSamplesGrid",
|
|
123
122
|
element_type: "filter abandoned",
|
|
124
123
|
content_category: "filter"
|
|
@@ -52,7 +52,7 @@
|
|
|
52
52
|
placeholder="Select Country/Region"
|
|
53
53
|
required
|
|
54
54
|
value=""
|
|
55
|
-
onchange={
|
|
55
|
+
onchange={handleCountryChange}
|
|
56
56
|
></dx-select>
|
|
57
57
|
<dx-input
|
|
58
58
|
label="Postal Code"
|
|
@@ -80,33 +80,24 @@
|
|
|
80
80
|
<dx-checkbox required name="eula" value="accepted">
|
|
81
81
|
<span lwc:dom="manual" class="legal-terms"></span>
|
|
82
82
|
</dx-checkbox>
|
|
83
|
-
|
|
84
|
-
|
|
83
|
+
<dx-checkbox
|
|
84
|
+
if:true={showMarketingCheckbox}
|
|
85
|
+
name="opt_in"
|
|
86
|
+
value="False"
|
|
87
|
+
>
|
|
85
88
|
<span lwc:dom="manual" class="marketing-terms"></span>
|
|
86
|
-
</
|
|
87
|
-
<template if:true={showMarketingCheckbox}>
|
|
88
|
-
<dx-checkbox
|
|
89
|
-
name="marketingCheckbox"
|
|
90
|
-
class="marketing-terms"
|
|
91
|
-
value="false"
|
|
92
|
-
onchange={handleMarketingCheckbox}
|
|
93
|
-
>
|
|
94
|
-
<span>{marketingText}</span>
|
|
95
|
-
</dx-checkbox>
|
|
96
|
-
</template>
|
|
97
|
-
|
|
98
|
-
<template if:false={showLegalCheckbox}>
|
|
99
|
-
<span lwc:dom="manual" class="legal-checkbox privacy-terms"></span>
|
|
100
|
-
</template>
|
|
89
|
+
</dx-checkbox>
|
|
101
90
|
<dx-checkbox
|
|
102
|
-
if:true={
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
91
|
+
if:true={showPrivacyCheckbox}
|
|
92
|
+
required
|
|
93
|
+
name="privacy"
|
|
94
|
+
value="privacy_accepted"
|
|
106
95
|
>
|
|
107
|
-
<span lwc:dom="manual" class="
|
|
96
|
+
<span lwc:dom="manual" class="privacy-terms"></span>
|
|
108
97
|
</dx-checkbox>
|
|
109
|
-
|
|
98
|
+
<template if:false={showPrivacyCheckbox}>
|
|
99
|
+
<span lwc:dom="manual" class="privacy-terms privacy-notice"></span>
|
|
100
|
+
</template>
|
|
110
101
|
<dx-button
|
|
111
102
|
class="submit-button"
|
|
112
103
|
disabled={disableSubmit}
|
|
@@ -2,7 +2,6 @@ import { LightningElement, api, track } from "lwc";
|
|
|
2
2
|
import { toJson } from "dxUtils/normalizers";
|
|
3
3
|
import { track as trackGtm } from "dxUtils/analytics";
|
|
4
4
|
import { submitForm, ErrorCode, SignupForm, UserData } from "./submitForm";
|
|
5
|
-
import { CountryOptions } from "typings/custom";
|
|
6
5
|
|
|
7
6
|
type SelectOption = { value: string; label: string };
|
|
8
7
|
type Country = SelectOption & {
|
|
@@ -35,21 +34,16 @@ export default class DeSignupForm extends LightningElement {
|
|
|
35
34
|
this._roles = toJson(value);
|
|
36
35
|
}
|
|
37
36
|
|
|
37
|
+
@api marketingText: string = "";
|
|
38
|
+
@api privacyText: string = "";
|
|
38
39
|
@api legalText: string = "";
|
|
39
|
-
@api drmDomain: string = "https://drm.my.salesforce-sites.com";
|
|
40
40
|
|
|
41
41
|
private country: Country = null;
|
|
42
42
|
private disableSubmit = false;
|
|
43
43
|
private username = "";
|
|
44
|
-
private
|
|
44
|
+
private updateCheckboxLabels = true;
|
|
45
|
+
private _countries: Array<Country>;
|
|
45
46
|
private _roles: Array<SelectOption>;
|
|
46
|
-
private showMarketingCheckbox: boolean = false;
|
|
47
|
-
private marketingCheckbox: boolean = false;
|
|
48
|
-
private marketingText: string = "";
|
|
49
|
-
private showLegalCheckbox: boolean = false;
|
|
50
|
-
private privacyText: string = "";
|
|
51
|
-
private hasRendered = false;
|
|
52
|
-
|
|
53
47
|
@track knownDuplicateUsers = [];
|
|
54
48
|
|
|
55
49
|
get usernameError(): string {
|
|
@@ -62,6 +56,10 @@ export default class DeSignupForm extends LightningElement {
|
|
|
62
56
|
return !this.knownDuplicateUsers.includes(this.username);
|
|
63
57
|
}
|
|
64
58
|
|
|
59
|
+
get showMarketingCheckbox(): boolean {
|
|
60
|
+
return this.country && this.country.showMarketingCheckbox;
|
|
61
|
+
}
|
|
62
|
+
|
|
65
63
|
get showPrivacyCheckbox(): boolean {
|
|
66
64
|
return this.country && !!this.country.privacyOptIn;
|
|
67
65
|
}
|
|
@@ -70,18 +68,22 @@ export default class DeSignupForm extends LightningElement {
|
|
|
70
68
|
return this.disableSubmit ? "Beep boop processing" : SIGN_UP_LABEL;
|
|
71
69
|
}
|
|
72
70
|
|
|
73
|
-
connectedCallback(): void {
|
|
74
|
-
this.getCountryList();
|
|
75
|
-
}
|
|
76
|
-
|
|
77
71
|
renderedCallback(): void {
|
|
78
|
-
if (!this.
|
|
79
|
-
this.hasRendered = true;
|
|
72
|
+
if (!this.updateCheckboxLabels) {
|
|
80
73
|
return;
|
|
81
74
|
}
|
|
82
|
-
|
|
83
|
-
this.
|
|
84
|
-
|
|
75
|
+
|
|
76
|
+
this.updateCheckboxLabels =
|
|
77
|
+
this.updateInnerHtml("span.legal-terms", this.legalText) ||
|
|
78
|
+
this.updateInnerHtml(
|
|
79
|
+
"span.marketing-terms",
|
|
80
|
+
this.marketingText,
|
|
81
|
+
this.showMarketingCheckbox
|
|
82
|
+
) ||
|
|
83
|
+
this.updateInnerHtml(
|
|
84
|
+
"span.privacy-terms",
|
|
85
|
+
this.country?.privacyText || this.privacyText
|
|
86
|
+
);
|
|
85
87
|
}
|
|
86
88
|
|
|
87
89
|
handleSubmit(event: Event): void {
|
|
@@ -139,6 +141,13 @@ export default class DeSignupForm extends LightningElement {
|
|
|
139
141
|
this.username = event.detail;
|
|
140
142
|
}
|
|
141
143
|
|
|
144
|
+
handleCountryChange(event: CustomEvent<{ value: string }>): void {
|
|
145
|
+
this.country = this.countries.find(
|
|
146
|
+
({ value }) => value === event.detail.value
|
|
147
|
+
);
|
|
148
|
+
this.updateCheckboxLabels = true;
|
|
149
|
+
}
|
|
150
|
+
|
|
142
151
|
private prepareUserData(): SignupForm | null {
|
|
143
152
|
const fields = Array.from(
|
|
144
153
|
this.template.querySelectorAll<HTMLFormElement>(
|
|
@@ -150,7 +159,9 @@ export default class DeSignupForm extends LightningElement {
|
|
|
150
159
|
value: element.value
|
|
151
160
|
}));
|
|
152
161
|
|
|
153
|
-
|
|
162
|
+
const checkboxes = this.getCheckboxesResult();
|
|
163
|
+
|
|
164
|
+
if (fields.some((field) => !field.valid) || !checkboxes.valid) {
|
|
154
165
|
return null;
|
|
155
166
|
}
|
|
156
167
|
|
|
@@ -159,15 +170,17 @@ export default class DeSignupForm extends LightningElement {
|
|
|
159
170
|
userData[field.name] = field.value;
|
|
160
171
|
});
|
|
161
172
|
|
|
162
|
-
(userData as UserData).consent = this.showMarketingCheckbox
|
|
173
|
+
(userData as UserData).consent = this.country.showMarketingCheckbox
|
|
163
174
|
? "Explicit"
|
|
164
|
-
: "Implied";
|
|
175
|
+
: "Implied ";
|
|
165
176
|
const InfoEmail =
|
|
166
|
-
this.showMarketingCheckbox && !
|
|
177
|
+
this.country.showMarketingCheckbox && !checkboxes.values.opt_in
|
|
167
178
|
? "False"
|
|
168
179
|
: "True";
|
|
180
|
+
|
|
169
181
|
const formData: SignupForm = {
|
|
170
182
|
user: userData as UserData,
|
|
183
|
+
eula: checkboxes.values.eula,
|
|
171
184
|
default_driver: DEFAULT_DRIVER,
|
|
172
185
|
info_email: InfoEmail
|
|
173
186
|
};
|
|
@@ -175,72 +188,24 @@ export default class DeSignupForm extends LightningElement {
|
|
|
175
188
|
return formData;
|
|
176
189
|
}
|
|
177
190
|
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
handleMarketingCheckbox(marketingCheckbox: any) {
|
|
188
|
-
this.marketingCheckbox = marketingCheckbox.target.checked;
|
|
189
|
-
}
|
|
190
|
-
|
|
191
|
-
setLegalAndMarketingData(countryOptions: CountryOptions) {
|
|
192
|
-
// Set the checkbox text
|
|
193
|
-
this.setCheckboxTextSet(
|
|
194
|
-
countryOptions.marketingText,
|
|
195
|
-
countryOptions.learnMore
|
|
196
|
-
? `${countryOptions.legalText} </br> ${countryOptions.learnMore}`
|
|
197
|
-
: countryOptions.legalText
|
|
198
|
-
);
|
|
199
|
-
|
|
200
|
-
// Toggle visibility of legal/marketing data
|
|
201
|
-
this.toggleLegalAndMarketingVisibility(
|
|
202
|
-
countryOptions.showMarketingText,
|
|
203
|
-
countryOptions.showLegalCheckbox
|
|
204
|
-
);
|
|
205
|
-
}
|
|
206
|
-
|
|
207
|
-
setCheckboxTextSet(marketingText: string, privacyText: string) {
|
|
208
|
-
this.marketingText = marketingText;
|
|
209
|
-
this.privacyText = privacyText;
|
|
210
|
-
}
|
|
211
|
-
|
|
212
|
-
toggleLegalAndMarketingVisibility(
|
|
213
|
-
showMarketingCheckbox: boolean,
|
|
214
|
-
showLegalCheckbox: boolean
|
|
215
|
-
) {
|
|
216
|
-
this.showMarketingCheckbox = showMarketingCheckbox;
|
|
217
|
-
this.showLegalCheckbox = showLegalCheckbox;
|
|
218
|
-
}
|
|
219
|
-
|
|
220
|
-
setInnerHtml(element: HTMLElement, value: string) {
|
|
221
|
-
// disable lwc warning because text received from json has HTML
|
|
222
|
-
// eslint-disable-next-line @lwc/lwc/no-inner-html
|
|
223
|
-
element.innerHTML = value;
|
|
224
|
-
}
|
|
225
|
-
|
|
226
|
-
async getCountryList() {
|
|
227
|
-
const errorMsg = "Error while getting county list";
|
|
228
|
-
|
|
229
|
-
try {
|
|
230
|
-
const res = await fetch(
|
|
231
|
-
`${this.drmDomain}/utilities/services/apexrest/countries`
|
|
232
|
-
);
|
|
191
|
+
private getCheckboxesResult(): {
|
|
192
|
+
valid: boolean;
|
|
193
|
+
values: { eula: string; opt_in: "true" | "false" };
|
|
194
|
+
} {
|
|
195
|
+
let valid = true;
|
|
196
|
+
const values: { eula: string; opt_in: "true" | "false" } = {
|
|
197
|
+
eula: "",
|
|
198
|
+
opt_in: "false"
|
|
199
|
+
};
|
|
233
200
|
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
201
|
+
Array.from(
|
|
202
|
+
this.template.querySelectorAll<HTMLInputElement>("dx-checkbox")
|
|
203
|
+
).forEach((checkbox) => {
|
|
204
|
+
valid = valid && checkbox.reportValidity();
|
|
205
|
+
values[checkbox.name] = checkbox.checked;
|
|
206
|
+
});
|
|
237
207
|
|
|
238
|
-
|
|
239
|
-
// eslint-disable-next-line @lwc/lwc/no-api-reassignments
|
|
240
|
-
this._countries = JSON.stringify(data);
|
|
241
|
-
} catch (error) {
|
|
242
|
-
console.error(error);
|
|
243
|
-
}
|
|
208
|
+
return { valid, values };
|
|
244
209
|
}
|
|
245
210
|
|
|
246
211
|
private updateInnerHtml(
|
|
@@ -548,7 +548,6 @@ export default abstract class DocsGrid extends LightningElement {
|
|
|
548
548
|
this.selectedProductFilters?.forEach((filter) => {
|
|
549
549
|
track(document, "custEv_filterAbandoned", {
|
|
550
550
|
click_text: filter,
|
|
551
|
-
click_url: filter,
|
|
552
551
|
element_title: "docs grid",
|
|
553
552
|
element_type: "filter abandoned",
|
|
554
553
|
content_category: "filter"
|