@salesforcedevs/dw-components 1.3.151-canary.1 → 1.3.155

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.
@@ -1,61 +0,0 @@
1
- export const stepSequenceData = {
2
- animateTransitions: "true",
3
- stepsData: [
4
- {
5
- bodyHtml:
6
- '<p class="dx-text-display-7">Register for Journey to Salesforce and you\'ll be on your way to becoming a Salesforce Developer.</p><ul class="dx-text-display-8"><li>Step 1: Log in or sign up for a free Trailblazer.me account</li><li>Step 2: Confirm your program registration</li><li>Step 3: Begin your journey!</li></ul>',
7
- primaryAction: {
8
- text: "Get Started"
9
- },
10
- showStepNumber: "true",
11
- stepTitle: "Get started now."
12
- },
13
- {
14
- bodyHtml:
15
- '<p class="dx-text-display-7">You\'re almost done! Please review your information and agree to the Journey to Salesforce program terms and conditions.</p>',
16
- formData: {
17
- countriesWithReferralInput: ["IN"],
18
- countriesWithRequiredJobRole: ["CA"],
19
- formId: "j2s-form",
20
- j2sTerms:
21
- 'I agree to the Journey to Salesforce Program Terms, subject to the <a href="http://www.google.com">Salesforce Program Agreement</a>.',
22
- notAvailableAlertInfo: {
23
- title: "Not Available",
24
- body:
25
- 'The Journey to Salesforce program is not currently available in your country. See the <a href="https://www.google.com/">program FAQs</a> for a list of participating countries.'
26
- },
27
- participatingCountryCodes: ["US", "CA", "IN"]
28
- },
29
- primaryAction: {
30
- text: "Complete Registration"
31
- },
32
- secondaryActionHtml:
33
- '<span class="required-notice">* Required to participate in Journey to Salesforce</span>',
34
- showStepNumber: "true",
35
- stepTitle: "Complete your registration."
36
- },
37
- {
38
- bodyHtml:
39
- '<div class="dx-text-display-8"><p>Welcome to Journey to Salesforce! Congratulations on taking this step in your journey towards becoming a Salesforce Developer. Through this program you\'ll gain the knowledge, experience, and skills to help you excel in the Salesforce ecosystem.</p><p>To get started, click the button below to join the Journey to Salesforce community, and make sure to check your email for links to bookmark!</p></div>',
40
- headerData: {
41
- backgroundColor: "green-vibrant-95",
42
- iconSymbol: "check-circle",
43
- iconSprite: "general",
44
- iconColor: "green-vibrant-65",
45
- textColor: "indigo-vibrant-20"
46
- },
47
- primaryAction: {
48
- iconSprite: "utility",
49
- iconSymbol: "new_window",
50
- link:
51
- "https://salesforce-external.slack.com/archives/C05HJK4PGJV",
52
- text: "Join Slack",
53
- variant: "custom"
54
- },
55
- secondaryActionHtml:
56
- '<span class="dx-text-display-7">Ready to jump in?</span>',
57
- showStepNumber: "true",
58
- stepTitle: "Your Registration is Confirmed"
59
- }
60
- ]
61
- };
@@ -1,47 +0,0 @@
1
- @import "dxHelpers/reset";
2
- @import "dxHelpers/text";
3
- @import "dxHelpers/card";
4
-
5
- /* Special styling for the final step's actions if they are shown */
6
- dx-card-step.final-card-with-action::part(footer-container) {
7
- background-color: var(--dx-g-indigo-vibrant-95);
8
- border-radius: 8px;
9
- margin: 0 30px 30px 30px;
10
- }
11
-
12
- [slot="secondary-action-section"] {
13
- color: var(--dx-g-red-vibrant-50);
14
- position: relative;
15
- font-size: var(--dx-g-text-xs, 12px);
16
- font-family: var(--dx-g-font-sans);
17
- line-height: 18px;
18
- text-align: left;
19
- }
20
-
21
- .body-container li {
22
- line-height: var(--dx-g-text-2xl);
23
- }
24
-
25
- .body-container p:not(:last-child) {
26
- padding-bottom: 20px;
27
- }
28
-
29
- .body-markup {
30
- display: block;
31
- }
32
-
33
- .final-email-address {
34
- display: block;
35
- margin-top: 20px;
36
- line-height: 24px;
37
- color: var(--dx-g-blue-vibrant-50);
38
- }
39
-
40
- .referral-email-field {
41
- --dx-c-input-width: 100%;
42
- }
43
-
44
- .spinner-container {
45
- min-height: 200px;
46
- position: relative;
47
- }
@@ -1,59 +0,0 @@
1
- <template>
2
- <dx-card-step
3
- class={stepClassName}
4
- header-icon-symbol={stepDatum.headerData.iconSymbol}
5
- header-icon-sprite={stepDatum.headerData.iconSprite}
6
- header-icon-color={stepDatum.headerData.iconColor}
7
- header-background-color={stepDatum.headerData.backgroundColor}
8
- header-text-color={stepDatum.headerData.textColor}
9
- show-step-number={stepDatum.showStepNumber}
10
- step-count={stepTotalCount}
11
- step-index={stepIndex}
12
- step-title={stepDatum.stepTitle}
13
- >
14
- <div slot="card-body" class="body-container">
15
- <template if:true={isLoading}>
16
- <div class="spinner-container">
17
- <dx-spinner size="large" variant="brand"></dx-spinner>
18
- </div>
19
- </template>
20
- <template if:false={isLoading}>
21
- <span lwc:dom="manual" class="body-markup"></span>
22
- <template if:true={stepDatum.formData}>
23
- <dw-j2s-form
24
- id={stepDatum.formData.formId}
25
- countries={countryOptions}
26
- form-metadata={stepDatum.formData}
27
- incoming-user-info={userInfo}
28
- onformvaliditychange={handleFormValidityChange}
29
- recaptcha-token={recaptchaToken}
30
- >
31
- <div slot="form-captcha-slot">
32
- <slot name="card-step-captcha-slot"></slot>
33
- </div>
34
- </dw-j2s-form>
35
- </template>
36
- </template>
37
- </div>
38
- <div slot="secondary-action-section">
39
- <span lwc:dom="manual" class="secondary-action-markup"></span>
40
- </div>
41
- <div slot="primary-action-section">
42
- <dx-button
43
- if:true={showPrimaryAction}
44
- class="primary-action"
45
- disabled={isJ2sFormInvalid}
46
- href={primaryActionLink}
47
- icon-sprite={stepDatum.primaryAction.iconSprite}
48
- icon-symbol={stepDatum.primaryAction.iconSymbol}
49
- loading={isLoading}
50
- onclick={handlePrimaryAction}
51
- size="large"
52
- target={primaryActionLinkTarget}
53
- variant={primaryActionVariant}
54
- >
55
- {primaryActionText}
56
- </dx-button>
57
- </div>
58
- </dx-card-step>
59
- </template>
@@ -1,152 +0,0 @@
1
- import { api, LightningElement } from "lwc";
2
- import { DrmFormData, StepDatum } from "dw/j2sCardSequence";
3
- import { track } from "dxUtils/analytics";
4
- import J2sForm from "dw/j2sForm";
5
-
6
- export default class J2sCardSequenceStep extends LightningElement {
7
- @api countryOptions: any[] = [];
8
- @api isLoading = false;
9
- @api recaptchaToken = "";
10
- @api selectedCountry = "";
11
- @api stepDatum!: StepDatum;
12
- @api stepIndex = 0;
13
- @api stepTotalCount = 0;
14
- @api userInfo: any = {};
15
-
16
- @api
17
- public notifyFormSubmitFailure(formFailureData: Partial<DrmFormData>) {
18
- (
19
- this.template.querySelector("dw-j2s-form") as unknown as J2sForm
20
- )?.notifySubmitFailure(formFailureData);
21
- }
22
-
23
- private _isJ2sFormInvalid = false;
24
-
25
- private get stepClassName() {
26
- return this.stepIndex === 2 && this.selectedCountry === "IN"
27
- ? "final-card-with-action"
28
- : "";
29
- }
30
-
31
- private get isJ2sFormInvalid() {
32
- return this.stepIndex === 1 && this._isJ2sFormInvalid;
33
- }
34
- private set isJ2sFormInvalid(value: boolean) {
35
- this._isJ2sFormInvalid = value;
36
- }
37
-
38
- private get primaryActionLink() {
39
- const { link } = this.stepDatum.primaryAction;
40
- return typeof link === "string"
41
- ? link
42
- : link?.[this.selectedCountry] || link?.default;
43
- }
44
-
45
- private get primaryActionText() {
46
- const { text } = this.stepDatum.primaryAction;
47
- return typeof text === "string"
48
- ? text
49
- : text[this.selectedCountry] || text.default;
50
- }
51
-
52
- private get primaryActionVariant() {
53
- if (this.stepIndex === 1 && this.isJ2sFormInvalid) {
54
- return "custom"; // override for disabled button styling
55
- }
56
- return this.stepDatum.primaryAction.variant;
57
- }
58
-
59
- private get primaryActionLinkTarget() {
60
- return this.stepDatum.primaryAction.linkTarget || "_blank";
61
- }
62
-
63
- private get showPrimaryAction() {
64
- return this.stepIndex !== 2 || this.selectedCountry === "IN";
65
- }
66
-
67
- private get showSecondaryAction() {
68
- return this.showPrimaryAction; // same requirement as above for now
69
- }
70
-
71
- renderedCallback() {
72
- this.updateStaticInnerHtml();
73
- }
74
-
75
- handleFormValidityChange({ detail }: CustomEvent) {
76
- this.isJ2sFormInvalid = !detail.isValid;
77
- }
78
-
79
- handlePrimaryAction(evt: Event) {
80
- this.track(evt);
81
-
82
- if (this.stepIndex === 0) {
83
- this.dispatchEvent(new CustomEvent("getstarted"));
84
- } else if (this.stepIndex === 1 && !this.isJ2sFormInvalid) {
85
- const j2sFormEl = this.template.querySelector(
86
- "dw-j2s-form"
87
- ) as unknown as J2sForm;
88
- const formData = j2sFormEl.formDataForDrm;
89
-
90
- // For some countries, explicit approvals will be present; for others, it is implicitly assumed
91
- if (typeof formData.Opt_In__c !== "boolean") {
92
- formData.Opt_In__c = true;
93
- }
94
- if (typeof formData.Privacy_Statement__c !== "boolean") {
95
- formData.Privacy_Statement__c = true;
96
- }
97
-
98
- this.dispatchEvent(
99
- new CustomEvent("formsubmit", {
100
- detail: formData
101
- })
102
- );
103
- }
104
- }
105
-
106
- private updateStaticInnerHtml() {
107
- const { bodyHtml, secondaryActionHtml } = this.stepDatum;
108
- const bodyMarkupContainer =
109
- this.template.querySelector("span.body-markup");
110
- const secondaryActionMarkupContainer = this.template.querySelector(
111
- "span.secondary-action-markup"
112
- );
113
-
114
- if (bodyMarkupContainer) {
115
- let markup =
116
- typeof bodyHtml === "string"
117
- ? bodyHtml
118
- : bodyHtml?.[this.selectedCountry] || bodyHtml?.default;
119
-
120
- if (this.stepIndex === 2) {
121
- // User's email is supposed to show on final step
122
- markup = `${markup}${
123
- !this.userInfo.Email
124
- ? ""
125
- : `<span class="final-email-address">${this.userInfo.Email}</span>`
126
- }`;
127
- }
128
-
129
- bodyMarkupContainer.innerHTML = markup || "";
130
- }
131
-
132
- if (secondaryActionMarkupContainer) {
133
- // new special exception on step 2 to only show secondary action for IN
134
- secondaryActionMarkupContainer.innerHTML =
135
- secondaryActionHtml && this.showSecondaryAction
136
- ? secondaryActionHtml
137
- : "";
138
- }
139
- }
140
-
141
- private track(evt: Event) {
142
- const target = evt.target as HTMLButtonElement;
143
-
144
- track(target, "custEv_ctaButtonClick", {
145
- click_text: target.textContent,
146
- element_title: this.stepDatum.stepTitle,
147
- click_url: this.stepDatum.primaryAction.link || "",
148
- element_type: "button",
149
- content_category: "cta"
150
- });
151
- }
152
- }
@@ -1,56 +0,0 @@
1
- .hidden {
2
- display: none;
3
- }
4
-
5
- .form-row {
6
- display: flex;
7
- justify-content: space-between;
8
- padding-bottom: var(--dx-g-spacing-md);
9
- }
10
-
11
- .form-row > * {
12
- --dx-c-input-width: 100%;
13
-
14
- font-family: var(--dx-g-font-sans);
15
- width: calc(50% - 20px);
16
- }
17
-
18
- .form-row > :only-child {
19
- max-width: 100%;
20
- width: 100%;
21
- }
22
-
23
- .form-row .terms {
24
- --dx-c-checkbox-text-line-height: var(--dx-g-text-lg);
25
- --dx-c-checkbox-font-size: var(--dx-g-text-sm);
26
-
27
- font-family: var(--dx-g-font-sans);
28
- font-size: var(--dx-c-checkbox-font-size);
29
- font-weight: var(--dx-g-font-normal);
30
- }
31
-
32
- .form-row .legal-terms-learn-more:not(.hidden) {
33
- display: block;
34
- padding-top: var(--dx-g-spacing-md);
35
- }
36
-
37
- .form-row .legal-terms.no-checkbox {
38
- font-family: var(--dx-g-font-sans);
39
- font-size: var(--dx-g-text-xs);
40
- font-weight: var(--dx-g-font-normal);
41
- margin-left: 28px;
42
- }
43
-
44
- .form-terms-container {
45
- padding-top: var(--dx-g-spacing-sm);
46
- }
47
-
48
- .form-captcha-slot {
49
- align-items: center;
50
- display: flex;
51
- justify-content: center;
52
- }
53
-
54
- dx-input[disabled] {
55
- --dx-c-input-background: revert;
56
- }
@@ -1,162 +0,0 @@
1
- <template>
2
- <!-- For the names of the form fields, see: https://salesforce.quip.com/daInAFETbPGm -->
3
- <form class="j2s-form">
4
- <div class="form-row">
5
- <dx-input
6
- class="first-name-field"
7
- label="First Name"
8
- missing-error-message="Enter your first name"
9
- name="FirstName"
10
- placeholder="Your first name"
11
- required
12
- validity-on-blur
13
- onchange={handleFormFieldChange}
14
- value={state.FirstName}
15
- ></dx-input>
16
- <dx-input
17
- class="last-name-field"
18
- label="Last Name"
19
- missing-error-message="Enter your last name"
20
- name="LastName"
21
- placeholder="Your last name"
22
- required
23
- validity-on-blur
24
- onchange={handleFormFieldChange}
25
- value={state.LastName}
26
- ></dx-input>
27
- </div>
28
- <div class="form-row">
29
- <dx-input
30
- class="company-name-field"
31
- label="Company Name"
32
- missing-error-message="Enter your company name"
33
- name="Company__c"
34
- placeholder="Your company name"
35
- required
36
- validity-on-blur
37
- value={state.Company__c}
38
- onchange={handleFormFieldChange}
39
- ></dx-input>
40
- <dx-select
41
- class="job-role-field"
42
- label="Job Role"
43
- message-when-value-missing="Select your job role"
44
- name="DRM_Role__c"
45
- options={jobRoles}
46
- placeholder="Select Job Role"
47
- required
48
- value={state.DRM_Role__c}
49
- onchange={handleFormFieldChange}
50
- ></dx-select>
51
- </div>
52
- <div class="form-row">
53
- <dx-input
54
- name="Email"
55
- type="email"
56
- placeholder="Your email address"
57
- label="Email"
58
- missing-error-message="Enter your email address"
59
- validity-on-blur="true"
60
- disabled
61
- readonly="true"
62
- required
63
- value={state.Email}
64
- ></dx-input>
65
- <dx-select
66
- label="Country/Region"
67
- message-when-value-missing="Select your country/region"
68
- name="MailingCountry"
69
- options={countries}
70
- placeholder="Select Country/Region"
71
- required
72
- value={state.MailingCountry}
73
- onchange={handleFormFieldChange}
74
- ></dx-select>
75
- </div>
76
- <div class="form-row" if:true={isCountryWithReferralInput}>
77
- <dx-input
78
- name="Referral_Email__c"
79
- class="referral-email-field full-width"
80
- label="If anyone has referred you, please share their Email ID below, with their consent."
81
- validity-on-blur="true"
82
- type="email"
83
- value={state.Referral_Email__c}
84
- onchange={handleFormFieldChange}
85
- ></dx-input>
86
- </div>
87
- <div class="form-row" if:true={isNotParticipatingCountry}>
88
- <dx-alert
89
- alert-info={notAvailableAlertInfo}
90
- class="full-width"
91
- type="danger"
92
- variant="accented"
93
- ></dx-alert>
94
- </div>
95
- <div class="form-row" if:true={showSubmitFailureAlert}>
96
- <dx-alert
97
- alert-info={formSubmitFailureAlertInfo}
98
- class="full-width"
99
- type="danger"
100
- variant="accented"
101
- ></dx-alert>
102
- </div>
103
- <div class="form-terms-container">
104
- <div class="form-row" if:true={state.showMarketingText}>
105
- <dx-checkbox
106
- value="marketing-terms"
107
- name="Opt_In__c"
108
- required
109
- class="terms"
110
- onchange={handleFormFieldChange}
111
- disabled={isNotParticipatingCountry}
112
- >
113
- <span lwc:dom="manual" class="marketing-terms"></span>
114
- </dx-checkbox>
115
- </div>
116
- <div class="form-row">
117
- <dx-checkbox
118
- value="j2s-terms"
119
- name="j2s_terms"
120
- required
121
- class="terms"
122
- onchange={handleFormFieldChange}
123
- disabled={isNotParticipatingCountry}
124
- >
125
- <span lwc:dom="manual" class="j2s-terms"></span>
126
- </dx-checkbox>
127
- </div>
128
- <div class="form-row">
129
- <dx-checkbox
130
- if:true={state.showLegalCheckbox}
131
- value="legal-terms"
132
- name="Privacy_Statement__c"
133
- required
134
- class="terms"
135
- onchange={handleFormFieldChange}
136
- disabled={isNotParticipatingCountry}
137
- >
138
- <span lwc:dom="manual" class="legal-terms"></span>
139
- <template if:true={state.learnMore}>
140
- &nbsp;
141
- <dx-button
142
- variant="inline-inherit"
143
- onclick={handleLearnMore}
144
- >
145
- Learn more.
146
- </dx-button>
147
- <span
148
- lwc:dom="manual"
149
- class="legal-terms-learn-more hidden"
150
- ></span>
151
- </template>
152
- </dx-checkbox>
153
- <span
154
- if:false={state.showLegalCheckbox}
155
- lwc:dom="manual"
156
- class="legal-terms no-checkbox"
157
- ></span>
158
- </div>
159
- <slot class="form-captcha-slot" name="form-captcha-slot"></slot>
160
- </div>
161
- </form>
162
- </template>