@kompasid/lit-web-components 0.9.47 → 0.9.49

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.
Files changed (42) hide show
  1. package/demo/header.html +21 -5
  2. package/demo/paywall.html +3 -2
  3. package/dist/src/components/kompasid-header-account/KompasHeaderAccount.d.ts +1 -0
  4. package/dist/src/components/kompasid-header-account/KompasHeaderAccount.js +8 -0
  5. package/dist/src/components/kompasid-header-account/KompasHeaderAccount.js.map +1 -1
  6. package/dist/src/components/kompasid-header-account-menu/KompasHeaderAccountMenu.d.ts +1 -0
  7. package/dist/src/components/kompasid-header-account-menu/KompasHeaderAccountMenu.js +23 -6
  8. package/dist/src/components/kompasid-header-account-menu/KompasHeaderAccountMenu.js.map +1 -1
  9. package/dist/src/components/kompasid-header-account-profile/KompasHeaderAccountProfile.d.ts +3 -0
  10. package/dist/src/components/kompasid-header-account-profile/KompasHeaderAccountProfile.js +83 -6
  11. package/dist/src/components/kompasid-header-account-profile/KompasHeaderAccountProfile.js.map +1 -1
  12. package/dist/src/components/kompasid-paywall/KompasPaywall.js +0 -3
  13. package/dist/src/components/kompasid-paywall/KompasPaywall.js.map +1 -1
  14. package/dist/src/components/kompasid-paywall/types.d.ts +1 -0
  15. package/dist/src/components/kompasid-paywall/types.js.map +1 -1
  16. package/dist/src/components/kompasid-paywall-body/KompasPaywallBody.d.ts +1 -0
  17. package/dist/src/components/kompasid-paywall-body/KompasPaywallBody.js +22 -1
  18. package/dist/src/components/kompasid-paywall-body/KompasPaywallBody.js.map +1 -1
  19. package/dist/src/components/kompasid-paywall-modal-register/KompasPaywallModalRegister.d.ts +36 -0
  20. package/dist/src/components/kompasid-paywall-modal-register/KompasPaywallModalRegister.js +589 -0
  21. package/dist/src/components/kompasid-paywall-modal-register/KompasPaywallModalRegister.js.map +1 -0
  22. package/dist/src/components/kompasid-paywall-modal-register/types.d.ts +33 -0
  23. package/dist/src/components/kompasid-paywall-modal-register/types.js +2 -0
  24. package/dist/src/components/kompasid-paywall-modal-register/types.js.map +1 -0
  25. package/dist/src/index.d.ts +1 -0
  26. package/dist/src/index.js +1 -0
  27. package/dist/src/index.js.map +1 -1
  28. package/dist/tailwind/tailwind.js +160 -5
  29. package/dist/tailwind/tailwind.js.map +1 -1
  30. package/dist/tsconfig.tsbuildinfo +1 -1
  31. package/package.json +1 -1
  32. package/src/components/kompasid-header-account/KompasHeaderAccount.ts +5 -0
  33. package/src/components/kompasid-header-account-menu/KompasHeaderAccountMenu.ts +25 -8
  34. package/src/components/kompasid-header-account-profile/KompasHeaderAccountProfile.ts +78 -6
  35. package/src/components/kompasid-paywall/KompasPaywall.ts +0 -4
  36. package/src/components/kompasid-paywall/types.ts +1 -0
  37. package/src/components/kompasid-paywall-body/KompasPaywallBody.ts +22 -1
  38. package/src/components/kompasid-paywall-modal-register/KompasPaywallModalRegister.ts +613 -0
  39. package/src/components/kompasid-paywall-modal-register/types.ts +39 -0
  40. package/src/index.ts +1 -0
  41. package/tailwind/tailwind.css +160 -5
  42. package/tailwind/tailwind.ts +160 -5
@@ -0,0 +1,589 @@
1
+ import { __decorate } from "tslib";
2
+ import { LitElement, html, css, nothing } from 'lit';
3
+ import { customElement, state, property } from 'lit/decorators.js';
4
+ import { unsafeSVG } from 'lit/directives/unsafe-svg.js';
5
+ import { addGoogleFonts } from '../../utils/googleFont.js';
6
+ import { getFontAwesomeIcon } from '../../utils/fontawesome-setup.js';
7
+ import { TWStyles } from '../../../tailwind/tailwind.js';
8
+ import { deviceType } from '../../utils/deviceType.js';
9
+ let KompasPaywallModalRegister = class KompasPaywallModalRegister extends LitElement {
10
+ constructor() {
11
+ super(...arguments);
12
+ /**
13
+ * Properties
14
+ */
15
+ this.subscriptionStatus = '';
16
+ this.userGuid = '';
17
+ this.isModalOpen = false;
18
+ this.confirmation = false;
19
+ this.dataModalRegister = {};
20
+ this.showModalRegister = false;
21
+ this.showMobileBenefit = false;
22
+ this.formData = {
23
+ nameUser: '',
24
+ email: '',
25
+ nomor: '',
26
+ nameCompany: '',
27
+ };
28
+ this.formErrors = {
29
+ nameUser: '',
30
+ email: '',
31
+ nomor: '',
32
+ nameCompany: '',
33
+ };
34
+ this.formTouched = {
35
+ nameUser: false,
36
+ email: false,
37
+ nomor: false,
38
+ nameCompany: false,
39
+ };
40
+ this.formSubmitted = false;
41
+ this.templateForm = () => html `
42
+ <div class="text-white text-center font-sans py-6 px-4 md:px-20 md:py-16">
43
+ <h1 class="font-lora text-xl md:text-2xl font-bold">
44
+ Akses Penuh Media Intelligence dengan Paket Langganan Korporasi
45
+ </h1>
46
+ <div class="text-grey-200 text-sm md:text-base mt-4">
47
+ Lengkapi formulir ini untuk dapatkan konsultasi paket korporasi Kompas
48
+ Professional dan penawaran harga terbaik bagi organisasi Anda.
49
+ </div>
50
+ <div>
51
+ <form
52
+ @submit="${this.handleSubmit}"
53
+ action=""
54
+ class="mt-8 gap-6 flex flex-col"
55
+ >
56
+ <div class="flex flex-col gap-2">
57
+ <label for="nameUser" class="font-bold flex flex-row">
58
+ Nama Lengkap
59
+ <span class="text-[#F57A7A] flex items-start">*</span>
60
+ </label>
61
+ <input
62
+ id="nameUser"
63
+ name="nameUser"
64
+ type="text"
65
+ placeholder=""
66
+ class="p-2 bg-grey-500 rounded border border-grey-400"
67
+ .value="${this.formData.nameUser}"
68
+ @input="${this.handleInput}"
69
+ @blur="${this.handleBlur}"
70
+ aria-invalid="${!!this.formErrors.nameUser}"
71
+ />
72
+ ${(this.formTouched.nameUser || this.formSubmitted) &&
73
+ this.formErrors.nameUser
74
+ ? html `
75
+ <div
76
+ class="text-sm text-[#F57A7A] flex flex-row items-center"
77
+ >
78
+ <div class="h-4 w-4 flex items-center justify-center mr-2">
79
+ ${unsafeSVG(getFontAwesomeIcon('fas', 'exclamation-circle', 10, 10))}
80
+ </div>
81
+ ${this.formErrors.nameUser}
82
+ </div>
83
+ `
84
+ : ''}
85
+ </div>
86
+ <div class="flex flex-col gap-2">
87
+ <label for="email" class="font-bold flex flex-row">
88
+ Email
89
+ <span class="text-[#F57A7A] flex items-start">*</span>
90
+ </label>
91
+ <input
92
+ autocomplete="off"
93
+ id="email"
94
+ name="email"
95
+ type="email"
96
+ placeholder=""
97
+ class="p-2 bg-grey-500 rounded border border-grey-400"
98
+ .value="${this.formData.email}"
99
+ @input="${this.handleInput}"
100
+ @blur="${this.handleBlur}"
101
+ aria-invalid="${!!this.formErrors.email}"
102
+ />
103
+ ${(this.formTouched.email || this.formSubmitted) &&
104
+ this.formErrors.email
105
+ ? html `
106
+ <div
107
+ class="text-sm text-[#F57A7A] flex flex-row items-center"
108
+ >
109
+ <div class="h-4 w-4 flex items-center justify-center mr-2">
110
+ ${unsafeSVG(getFontAwesomeIcon('fas', 'exclamation-circle', 10, 10))}
111
+ </div>
112
+ ${this.formErrors.email}
113
+ </div>
114
+ `
115
+ : ''}
116
+ </div>
117
+ <div class="flex flex-col gap-2">
118
+ <label for="nomor" class="font-bold flex flex-row">
119
+ Nomor Kontak (WhatsApp/Ponsel)
120
+ <span class="text-[#F57A7A] flex items-start">*</span>
121
+ </label>
122
+ <input
123
+ autocomplete="off"
124
+ id="nomor"
125
+ name="nomor"
126
+ type="tel"
127
+ placeholder=""
128
+ class="p-2 bg-grey-500 rounded border border-grey-400"
129
+ .value="${this.formData.nomor}"
130
+ @input="${this.handleInput}"
131
+ @blur="${this.handleBlur}"
132
+ aria-invalid="${!!this.formErrors.nomor}"
133
+ />
134
+ ${(this.formTouched.nomor || this.formSubmitted) &&
135
+ this.formErrors.nomor
136
+ ? html `
137
+ <div
138
+ class="text-sm text-[#F57A7A] flex flex-row items-center"
139
+ >
140
+ <div class="h-4 w-4 flex items-center justify-center mr-2">
141
+ ${unsafeSVG(getFontAwesomeIcon('fas', 'exclamation-circle', 10, 10))}
142
+ </div>
143
+ ${this.formErrors.nomor}
144
+ </div>
145
+ `
146
+ : ''}
147
+ </div>
148
+ <div class="flex flex-col gap-2">
149
+ <label for="name_company" class="font-bold flex flex-row">
150
+ Nama Perusahaan/Asosiasi
151
+ <span class="text-[#F57A7A] flex items-start">*</span>
152
+ </label>
153
+ <input
154
+ id="name_company"
155
+ name="nameCompany"
156
+ type="text"
157
+ placeholder=""
158
+ class="p-2 bg-grey-500 rounded border border-grey-400"
159
+ .value="${this.formData.nameCompany}"
160
+ @input="${this.handleInput}"
161
+ @blur="${this.handleBlur}"
162
+ aria-invalid="${!!this.formErrors.nameCompany}"
163
+ />
164
+ ${(this.formTouched.nameCompany || this.formSubmitted) &&
165
+ this.formErrors.nameCompany
166
+ ? html `
167
+ <div
168
+ class="text-sm text-[#F57A7A] flex flex-row items-center"
169
+ >
170
+ <div class="h-4 w-4 flex items-center justify-center mr-2">
171
+ ${unsafeSVG(getFontAwesomeIcon('fas', 'exclamation-circle', 10, 10))}
172
+ </div>
173
+ ${this.formErrors.nameCompany}
174
+ </div>
175
+ `
176
+ : ''}
177
+ </div>
178
+ <button
179
+ type="submit"
180
+ class="bg-yellow-500 text-center h-10 rounded text-grey-600 mt-2 w-full font-bold"
181
+ >
182
+ Kirim
183
+ </button>
184
+ </form>
185
+ </div>
186
+ </div>
187
+ `;
188
+ }
189
+ /**
190
+ * Lifecycle
191
+ */
192
+ connectedCallback() {
193
+ super.connectedCallback();
194
+ addGoogleFonts(['pt-sans', 'lora', 'roboto-condensed']);
195
+ this.getRegisterProData();
196
+ }
197
+ async getRegisterProData() {
198
+ try {
199
+ const response = await fetch('https://cdn-www.kompas.id/web-component/form-b2b-kompas-pro.json');
200
+ const data = await response.json();
201
+ this.dataModalRegister = data;
202
+ }
203
+ catch (error) {
204
+ if (error instanceof Error) {
205
+ console.log(error.message);
206
+ }
207
+ }
208
+ finally {
209
+ this.showModalRegister = true;
210
+ }
211
+ }
212
+ openModal() {
213
+ this.isModalOpen = true;
214
+ }
215
+ closeModal() {
216
+ this.isModalOpen = false;
217
+ this.confirmation = false;
218
+ }
219
+ toggleMobileBenefit() {
220
+ this.showMobileBenefit = !this.showMobileBenefit;
221
+ }
222
+ handleInput(e) {
223
+ const target = e.target;
224
+ const name = target.name;
225
+ this.formData = {
226
+ ...this.formData,
227
+ [name]: target.value,
228
+ };
229
+ if (this.formTouched[name] || this.formSubmitted) {
230
+ this.validateField(name);
231
+ }
232
+ }
233
+ handleBlur(e) {
234
+ const target = e.target;
235
+ const name = target.name;
236
+ this.formTouched = {
237
+ ...this.formTouched,
238
+ [name]: true,
239
+ };
240
+ this.validateField(name);
241
+ }
242
+ validateField(field) {
243
+ const value = this.formData[field].trim();
244
+ let error = '';
245
+ if (!value) {
246
+ switch (field) {
247
+ case 'nameUser':
248
+ error = 'Nama lengkap harus diisi.';
249
+ break;
250
+ case 'email':
251
+ error = 'Email harus diisi.';
252
+ break;
253
+ case 'nomor':
254
+ error = 'Nomor kontak harus diisi.';
255
+ break;
256
+ case 'nameCompany':
257
+ error = 'Nama perusahaan/asosiasi harus diisi.';
258
+ break;
259
+ default:
260
+ error = '';
261
+ break;
262
+ }
263
+ }
264
+ else if (field === 'email' && !/^\S+@\S+\.\S+$/.test(value)) {
265
+ error = 'Masukan email yang valid.';
266
+ }
267
+ else if (field === 'nomor' && !/^[0-9+\-\s()]{6,20}$/.test(value)) {
268
+ error = 'Masukan nomor kontak yang valid.';
269
+ }
270
+ this.formErrors = {
271
+ ...this.formErrors,
272
+ [field]: error,
273
+ };
274
+ }
275
+ validateForm() {
276
+ this.validateField('nameUser');
277
+ this.validateField('email');
278
+ this.validateField('nomor');
279
+ this.validateField('nameCompany');
280
+ return (Object.values(this.formErrors).every(error => !error) &&
281
+ Object.values(this.formData).every(value => value.trim() !== ''));
282
+ }
283
+ async handleSubmit(e) {
284
+ e.preventDefault();
285
+ this.formSubmitted = true;
286
+ const isValid = this.validateForm();
287
+ if (!isValid) {
288
+ return;
289
+ }
290
+ const formResult = {
291
+ name: this.formData.nameUser,
292
+ email: this.formData.email,
293
+ phone: this.formData.nomor,
294
+ company: this.formData.nameCompany,
295
+ };
296
+ this.confirmation = true;
297
+ // Send form data to Zapier
298
+ try {
299
+ const formBody = new URLSearchParams(formResult);
300
+ await fetch('https://hooks.zapier.com/hooks/catch/14222434/uedqovx/', {
301
+ method: 'POST',
302
+ body: formBody,
303
+ });
304
+ }
305
+ catch (err) {
306
+ console.error('Form submission error:', err);
307
+ }
308
+ }
309
+ customerServiceClicked() {
310
+ this.redirectToHelpdesk();
311
+ }
312
+ redirectToHelpdesk() {
313
+ this.sendDataLayeronHelpDesk();
314
+ window.open('https://api.whatsapp.com/send/?phone=6281290050800&text=Halo,%20saya%20perlu%20informasi%20mengenai%20kompas.id');
315
+ }
316
+ sendDataLayeronHelpDesk() {
317
+ window.dataLayer.push({
318
+ event: 'helpOfferClick',
319
+ userType: this.subscriptionStatus,
320
+ GUID: this.userGuid,
321
+ interface: deviceType(),
322
+ });
323
+ }
324
+ render() {
325
+ return this.showModalRegister
326
+ ? html `<div
327
+ class="px-4 font-sans flex flex-wrap items-center justify-between rounded-lg md:mx-0 w-full min-h-[68px] bg-white relative"
328
+ >
329
+ <div class="flex flex-col gap-1">
330
+ <span class="text-xs leading-tight text-grey-500">
331
+ ${this.dataModalRegister.card.labelPackage}
332
+ </span>
333
+ <div class="flex items-baseline">
334
+ <h5 class="text-base font-bold text-orange-400 leading-none">
335
+ ${this.dataModalRegister.card.textInvitation}
336
+ </h5>
337
+ </div>
338
+ </div>
339
+ <button
340
+ @click="${this.openModal}"
341
+ class="h-8 rounded ${this.dataModalRegister.card.isButtonSolid
342
+ ? 'bg-green-500 text-white'
343
+ : 'bg-white border border-green-500 text-green-500'} flex items-center"
344
+ >
345
+ <h6 class="text-xs md:text-sm font-bold py-2 px-4">
346
+ ${this.dataModalRegister.card.textButton}
347
+ </h6>
348
+ </button>
349
+ </div>
350
+
351
+ ${this.isModalOpen && !this.confirmation
352
+ ? html `
353
+ <div
354
+ class="modal-overlay p-4"
355
+ @click="${this.closeModal}"
356
+ @keydown=${() => this.closeModal()}
357
+ >
358
+ <div
359
+ class="modal-content max-w-7xl w-full flex flex-col lg:flex-row max-h-full overflow-auto"
360
+ @click="${(e) => e.stopPropagation()}"
361
+ @keydown=${(e) => e.stopPropagation()}
362
+ >
363
+ <button class="close-button" @click="${this.closeModal}">
364
+ ${unsafeSVG(getFontAwesomeIcon('fa', 'times', 20, 20))}
365
+ </button>
366
+ <div
367
+ class="bg-grey-600 lg:max-w-[515px] w-full p-4 md:p-16 justify-between items-center flex flex-col relative"
368
+ >
369
+ <div class="items-center flex flex-col">
370
+ ${this.dataModalRegister.modal.registerPopUp.logo
371
+ ? html `
372
+ <img
373
+ class=" max-w-[214px] md:max-w-[321px] pt-2 md:pt-0"
374
+ src="${this.dataModalRegister.modal
375
+ .registerPopUp.logo}"
376
+ alt="logo kompas pro mining"
377
+ />
378
+ `
379
+ : nothing}
380
+ <div
381
+ class="flex flex-col mt-6 md:mt-10 gap-2 text-left overflow-hidden ${this
382
+ .showMobileBenefit
383
+ ? 'max-h-fit'
384
+ : 'max-h-[150px] md:max-h-fit'}"
385
+ >
386
+ ${this.dataModalRegister.modal.registerPopUp
387
+ .benefits &&
388
+ this.dataModalRegister.modal.registerPopUp.benefits
389
+ .length
390
+ ? this.dataModalRegister.modal.registerPopUp.benefits.map(item => html `
391
+ <div
392
+ class="flex items-baseline text-left text-white"
393
+ >
394
+ <div
395
+ class="text-green-400 h-5 w-5 md:h-6 md:w-6 flex shrink-0 items-center justify-center"
396
+ >
397
+ ${unsafeSVG(getFontAwesomeIcon('fas', 'check', 16, 16))}
398
+ </div>
399
+ <h6
400
+ class="text-sm md:text-lg font-sans ml-1 leading-6"
401
+ >
402
+ ${item}
403
+ </h6>
404
+ </div>
405
+ `)
406
+ : nothing}
407
+ </div>
408
+ </div>
409
+ <button
410
+ @click="${this.toggleMobileBenefit}"
411
+ class="bg-grey-600 absolute text-grey-100 py-6 w-full bottom-0 left-0 text-center md:hidden"
412
+ >
413
+ <div
414
+ class="h-12 transparent-linear-dark -mt-[72px] z-0 w-full absolute ${this
415
+ .showMobileBenefit
416
+ ? 'hidden'
417
+ : ''}"
418
+ ></div>
419
+ <div
420
+ class="flex flex-row items-center justify-center gap-4"
421
+ >
422
+ ${this.showMobileBenefit
423
+ ? 'Sembunyikan'
424
+ : 'Lihat keuntungan lainnnya'}
425
+ ${unsafeSVG(getFontAwesomeIcon('fas', this.showMobileBenefit
426
+ ? 'chevron-up'
427
+ : 'chevron-down'))}
428
+ </div>
429
+ </button>
430
+ <div
431
+ class="hidden md:block text-grey-300 pt-10 border-t border-grey-500 w-full text-center"
432
+ >
433
+ Butuh bantuan? Hubungi
434
+ <button
435
+ @click=${this.customerServiceClicked}
436
+ class="font-bold underline"
437
+ >
438
+ Layanan Pelanggan.
439
+ </button>
440
+ </div>
441
+ </div>
442
+ <div class="w-full h-full">${this.templateForm()}</div>
443
+ </div>
444
+ </div>
445
+ `
446
+ : ''}
447
+ ${this.isModalOpen && this.confirmation
448
+ ? html ` <div
449
+ class="modal-overlay px-4"
450
+ @click="${this.closeModal}"
451
+ @keydown=${() => this.closeModal()}
452
+ >
453
+ <div
454
+ class="modal-content max-w-[624px] max-h-[577px] items-end flex flex-col justify-end h-full w-full p-4 md:p-10"
455
+ @click="${(e) => e.stopPropagation()}"
456
+ @keydown=${(e) => e.stopPropagation()}
457
+ >
458
+ <button class="close-button" @click="${this.closeModal}">
459
+ ${unsafeSVG(getFontAwesomeIcon('fa', 'times', 20, 20))}
460
+ </button>
461
+ ${this.dataModalRegister.modal.successPopUp.logo
462
+ ? html `
463
+ <img
464
+ class="w-full max-w-[242px] mx-auto"
465
+ src="${this.dataModalRegister.modal.successPopUp
466
+ .logo}"
467
+ alt="konfirmasi"
468
+ />
469
+ `
470
+ : nothing}
471
+ <div class="text-grey-300 text-center mt-8">
472
+ <h1 class="text-lg md:text-xl font-bold ">
473
+ ${this.dataModalRegister.modal.successPopUp.title}
474
+ </h1>
475
+ <p
476
+ class="text-sm md:text-base mt-4 bold-yellow"
477
+ .innerHTML="${this.dataModalRegister.modal.successPopUp
478
+ .description}"
479
+ ></p>
480
+ <button
481
+ @click="${this.closeModal}"
482
+ class="bg-yellow-500 text-center h-10 rounded text-grey-600 mt-6 w-full font-bold"
483
+ >
484
+ Oke
485
+ </button>
486
+ </div>
487
+ </div>
488
+ </div>`
489
+ : ''} `
490
+ : nothing;
491
+ }
492
+ };
493
+ KompasPaywallModalRegister.styles = [
494
+ css `
495
+ :host {
496
+ display: block;
497
+ }
498
+
499
+ .bold-yellow b {
500
+ color: #dbaa00;
501
+ }
502
+
503
+ .modal-overlay {
504
+ position: fixed;
505
+ top: 0;
506
+ left: 0;
507
+ width: 100%;
508
+ height: 100%;
509
+ background-color: rgba(0, 0, 0, 0.5);
510
+ display: flex;
511
+ justify-content: center;
512
+ align-items: center;
513
+ z-index: 1000;
514
+ }
515
+
516
+ .modal-content {
517
+ background-color: #222222;
518
+ border-radius: 12px;
519
+ overflow: hidden;
520
+ position: relative;
521
+ }
522
+
523
+ .close-button {
524
+ position: absolute;
525
+ top: 10px;
526
+ right: 10px;
527
+ background: none;
528
+ border: none;
529
+ font-size: 1.5em;
530
+ color: #999999;
531
+ cursor: pointer;
532
+ z-index: 1;
533
+ }
534
+
535
+ .transparent-linear-dark {
536
+ background-image: -webkit-gradient(
537
+ linear,
538
+ left top,
539
+ left bottom,
540
+ from(hsla(0, 0%, 18%, 0)),
541
+ to(#333333)
542
+ );
543
+ background-image: linear-gradient(180deg, hsla(0, 0%, 18%, 0), #333333);
544
+ }
545
+
546
+ .font-lora {
547
+ font-family: 'Lora', 'Georgia', 'serif';
548
+ }
549
+ `,
550
+ TWStyles,
551
+ ];
552
+ __decorate([
553
+ property({ type: String })
554
+ ], KompasPaywallModalRegister.prototype, "subscriptionStatus", void 0);
555
+ __decorate([
556
+ property({ type: String })
557
+ ], KompasPaywallModalRegister.prototype, "userGuid", void 0);
558
+ __decorate([
559
+ state()
560
+ ], KompasPaywallModalRegister.prototype, "isModalOpen", void 0);
561
+ __decorate([
562
+ state()
563
+ ], KompasPaywallModalRegister.prototype, "confirmation", void 0);
564
+ __decorate([
565
+ state()
566
+ ], KompasPaywallModalRegister.prototype, "dataModalRegister", void 0);
567
+ __decorate([
568
+ state()
569
+ ], KompasPaywallModalRegister.prototype, "showModalRegister", void 0);
570
+ __decorate([
571
+ state()
572
+ ], KompasPaywallModalRegister.prototype, "showMobileBenefit", void 0);
573
+ __decorate([
574
+ state()
575
+ ], KompasPaywallModalRegister.prototype, "formData", void 0);
576
+ __decorate([
577
+ state()
578
+ ], KompasPaywallModalRegister.prototype, "formErrors", void 0);
579
+ __decorate([
580
+ state()
581
+ ], KompasPaywallModalRegister.prototype, "formTouched", void 0);
582
+ __decorate([
583
+ state()
584
+ ], KompasPaywallModalRegister.prototype, "formSubmitted", void 0);
585
+ KompasPaywallModalRegister = __decorate([
586
+ customElement('kompasid-paywall-modal-register')
587
+ ], KompasPaywallModalRegister);
588
+ export { KompasPaywallModalRegister };
589
+ //# sourceMappingURL=KompasPaywallModalRegister.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"KompasPaywallModalRegister.js","sourceRoot":"","sources":["../../../../src/components/kompasid-paywall-modal-register/KompasPaywallModalRegister.ts"],"names":[],"mappings":"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","sourcesContent":["import { LitElement, html, css, nothing } from 'lit'\nimport { customElement, state, property } from 'lit/decorators.js'\nimport { unsafeSVG } from 'lit/directives/unsafe-svg.js'\nimport { addGoogleFonts } from '../../utils/googleFont.js'\nimport { getFontAwesomeIcon } from '../../utils/fontawesome-setup.js'\nimport { TWStyles } from '../../../tailwind/tailwind.js'\nimport { deviceType } from '../../utils/deviceType.js'\nimport { ModalRegister } from './types.js'\n\n@customElement('kompasid-paywall-modal-register')\nexport class KompasPaywallModalRegister extends LitElement {\n static styles = [\n css`\n :host {\n display: block;\n }\n\n .bold-yellow b {\n color: #dbaa00;\n }\n\n .modal-overlay {\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n background-color: rgba(0, 0, 0, 0.5);\n display: flex;\n justify-content: center;\n align-items: center;\n z-index: 1000;\n }\n\n .modal-content {\n background-color: #222222;\n border-radius: 12px;\n overflow: hidden;\n position: relative;\n }\n\n .close-button {\n position: absolute;\n top: 10px;\n right: 10px;\n background: none;\n border: none;\n font-size: 1.5em;\n color: #999999;\n cursor: pointer;\n z-index: 1;\n }\n\n .transparent-linear-dark {\n background-image: -webkit-gradient(\n linear,\n left top,\n left bottom,\n from(hsla(0, 0%, 18%, 0)),\n to(#333333)\n );\n background-image: linear-gradient(180deg, hsla(0, 0%, 18%, 0), #333333);\n }\n\n .font-lora {\n font-family: 'Lora', 'Georgia', 'serif';\n }\n `,\n TWStyles,\n ]\n\n /**\n * Properties\n */\n @property({ type: String }) subscriptionStatus = ''\n @property({ type: String }) userGuid = ''\n\n @state() private isModalOpen = false\n @state() private confirmation = false\n @state() private dataModalRegister: ModalRegister = {} as ModalRegister\n @state() private showModalRegister = false\n\n /**\n * Lifecycle\n */\n override connectedCallback() {\n super.connectedCallback()\n addGoogleFonts(['pt-sans', 'lora', 'roboto-condensed'])\n this.getRegisterProData()\n }\n\n async getRegisterProData() {\n try {\n const response = await fetch(\n 'https://cdn-www.kompas.id/web-component/form-b2b-kompas-pro.json'\n )\n const data = await response.json()\n this.dataModalRegister = data\n } catch (error) {\n if (error instanceof Error) {\n console.log(error.message)\n }\n } finally {\n this.showModalRegister = true\n }\n }\n\n openModal() {\n this.isModalOpen = true\n }\n\n closeModal() {\n this.isModalOpen = false\n this.confirmation = false\n }\n\n @state()\n private showMobileBenefit = false\n\n @state()\n private formData = {\n nameUser: '',\n email: '',\n nomor: '',\n nameCompany: '',\n }\n\n @state()\n private formErrors = {\n nameUser: '',\n email: '',\n nomor: '',\n nameCompany: '',\n }\n\n @state()\n private formTouched = {\n nameUser: false,\n email: false,\n nomor: false,\n nameCompany: false,\n }\n\n @state()\n private formSubmitted = false\n\n private toggleMobileBenefit() {\n this.showMobileBenefit = !this.showMobileBenefit\n }\n\n private handleInput(e: InputEvent) {\n const target = e.target as HTMLInputElement\n const name = target.name as keyof typeof this.formData\n this.formData = {\n ...this.formData,\n [name]: target.value,\n }\n\n if (this.formTouched[name] || this.formSubmitted) {\n this.validateField(name)\n }\n }\n\n private handleBlur(e: FocusEvent) {\n const target = e.target as HTMLInputElement\n const name = target.name as keyof typeof this.formData\n this.formTouched = {\n ...this.formTouched,\n [name]: true,\n }\n this.validateField(name)\n }\n\n private validateField(field: keyof typeof this.formData) {\n const value = this.formData[field].trim()\n let error = ''\n\n if (!value) {\n switch (field) {\n case 'nameUser':\n error = 'Nama lengkap harus diisi.'\n break\n case 'email':\n error = 'Email harus diisi.'\n break\n case 'nomor':\n error = 'Nomor kontak harus diisi.'\n break\n case 'nameCompany':\n error = 'Nama perusahaan/asosiasi harus diisi.'\n break\n default:\n error = ''\n break\n }\n } else if (field === 'email' && !/^\\S+@\\S+\\.\\S+$/.test(value)) {\n error = 'Masukan email yang valid.'\n } else if (field === 'nomor' && !/^[0-9+\\-\\s()]{6,20}$/.test(value)) {\n error = 'Masukan nomor kontak yang valid.'\n }\n\n this.formErrors = {\n ...this.formErrors,\n [field]: error,\n }\n }\n\n private validateForm() {\n this.validateField('nameUser')\n this.validateField('email')\n this.validateField('nomor')\n this.validateField('nameCompany')\n\n return (\n Object.values(this.formErrors).every(error => !error) &&\n Object.values(this.formData).every(value => value.trim() !== '')\n )\n }\n\n private async handleSubmit(e: Event) {\n e.preventDefault()\n this.formSubmitted = true\n\n const isValid = this.validateForm()\n if (!isValid) {\n return\n }\n\n const formResult = {\n name: this.formData.nameUser,\n email: this.formData.email,\n phone: this.formData.nomor,\n company: this.formData.nameCompany,\n }\n\n this.confirmation = true\n\n // Send form data to Zapier\n try {\n const formBody = new URLSearchParams(formResult)\n await fetch('https://hooks.zapier.com/hooks/catch/14222434/uedqovx/', {\n method: 'POST',\n body: formBody,\n })\n } catch (err) {\n console.error('Form submission error:', err)\n }\n }\n\n private customerServiceClicked() {\n this.redirectToHelpdesk()\n }\n\n private redirectToHelpdesk(): void {\n this.sendDataLayeronHelpDesk()\n window.open(\n 'https://api.whatsapp.com/send/?phone=6281290050800&text=Halo,%20saya%20perlu%20informasi%20mengenai%20kompas.id'\n )\n }\n\n private sendDataLayeronHelpDesk(): void {\n window.dataLayer.push({\n event: 'helpOfferClick',\n userType: this.subscriptionStatus,\n GUID: this.userGuid,\n interface: deviceType(),\n })\n }\n\n private templateForm = () => html`\n <div class=\"text-white text-center font-sans py-6 px-4 md:px-20 md:py-16\">\n <h1 class=\"font-lora text-xl md:text-2xl font-bold\">\n Akses Penuh Media Intelligence dengan Paket Langganan Korporasi\n </h1>\n <div class=\"text-grey-200 text-sm md:text-base mt-4\">\n Lengkapi formulir ini untuk dapatkan konsultasi paket korporasi Kompas\n Professional dan penawaran harga terbaik bagi organisasi Anda.\n </div>\n <div>\n <form\n @submit=\"${this.handleSubmit}\"\n action=\"\"\n class=\"mt-8 gap-6 flex flex-col\"\n >\n <div class=\"flex flex-col gap-2\">\n <label for=\"nameUser\" class=\"font-bold flex flex-row\">\n Nama Lengkap\n <span class=\"text-[#F57A7A] flex items-start\">*</span>\n </label>\n <input\n id=\"nameUser\"\n name=\"nameUser\"\n type=\"text\"\n placeholder=\"\"\n class=\"p-2 bg-grey-500 rounded border border-grey-400\"\n .value=\"${this.formData.nameUser}\"\n @input=\"${this.handleInput}\"\n @blur=\"${this.handleBlur}\"\n aria-invalid=\"${!!this.formErrors.nameUser}\"\n />\n ${(this.formTouched.nameUser || this.formSubmitted) &&\n this.formErrors.nameUser\n ? html`\n <div\n class=\"text-sm text-[#F57A7A] flex flex-row items-center\"\n >\n <div class=\"h-4 w-4 flex items-center justify-center mr-2\">\n ${unsafeSVG(\n getFontAwesomeIcon('fas', 'exclamation-circle', 10, 10)\n )}\n </div>\n ${this.formErrors.nameUser}\n </div>\n `\n : ''}\n </div>\n <div class=\"flex flex-col gap-2\">\n <label for=\"email\" class=\"font-bold flex flex-row\">\n Email\n <span class=\"text-[#F57A7A] flex items-start\">*</span>\n </label>\n <input\n autocomplete=\"off\"\n id=\"email\"\n name=\"email\"\n type=\"email\"\n placeholder=\"\"\n class=\"p-2 bg-grey-500 rounded border border-grey-400\"\n .value=\"${this.formData.email}\"\n @input=\"${this.handleInput}\"\n @blur=\"${this.handleBlur}\"\n aria-invalid=\"${!!this.formErrors.email}\"\n />\n ${(this.formTouched.email || this.formSubmitted) &&\n this.formErrors.email\n ? html`\n <div\n class=\"text-sm text-[#F57A7A] flex flex-row items-center\"\n >\n <div class=\"h-4 w-4 flex items-center justify-center mr-2\">\n ${unsafeSVG(\n getFontAwesomeIcon('fas', 'exclamation-circle', 10, 10)\n )}\n </div>\n ${this.formErrors.email}\n </div>\n `\n : ''}\n </div>\n <div class=\"flex flex-col gap-2\">\n <label for=\"nomor\" class=\"font-bold flex flex-row\">\n Nomor Kontak (WhatsApp/Ponsel)\n <span class=\"text-[#F57A7A] flex items-start\">*</span>\n </label>\n <input\n autocomplete=\"off\"\n id=\"nomor\"\n name=\"nomor\"\n type=\"tel\"\n placeholder=\"\"\n class=\"p-2 bg-grey-500 rounded border border-grey-400\"\n .value=\"${this.formData.nomor}\"\n @input=\"${this.handleInput}\"\n @blur=\"${this.handleBlur}\"\n aria-invalid=\"${!!this.formErrors.nomor}\"\n />\n ${(this.formTouched.nomor || this.formSubmitted) &&\n this.formErrors.nomor\n ? html`\n <div\n class=\"text-sm text-[#F57A7A] flex flex-row items-center\"\n >\n <div class=\"h-4 w-4 flex items-center justify-center mr-2\">\n ${unsafeSVG(\n getFontAwesomeIcon('fas', 'exclamation-circle', 10, 10)\n )}\n </div>\n ${this.formErrors.nomor}\n </div>\n `\n : ''}\n </div>\n <div class=\"flex flex-col gap-2\">\n <label for=\"name_company\" class=\"font-bold flex flex-row\">\n Nama Perusahaan/Asosiasi\n <span class=\"text-[#F57A7A] flex items-start\">*</span>\n </label>\n <input\n id=\"name_company\"\n name=\"nameCompany\"\n type=\"text\"\n placeholder=\"\"\n class=\"p-2 bg-grey-500 rounded border border-grey-400\"\n .value=\"${this.formData.nameCompany}\"\n @input=\"${this.handleInput}\"\n @blur=\"${this.handleBlur}\"\n aria-invalid=\"${!!this.formErrors.nameCompany}\"\n />\n ${(this.formTouched.nameCompany || this.formSubmitted) &&\n this.formErrors.nameCompany\n ? html`\n <div\n class=\"text-sm text-[#F57A7A] flex flex-row items-center\"\n >\n <div class=\"h-4 w-4 flex items-center justify-center mr-2\">\n ${unsafeSVG(\n getFontAwesomeIcon('fas', 'exclamation-circle', 10, 10)\n )}\n </div>\n ${this.formErrors.nameCompany}\n </div>\n `\n : ''}\n </div>\n <button\n type=\"submit\"\n class=\"bg-yellow-500 text-center h-10 rounded text-grey-600 mt-2 w-full font-bold\"\n >\n Kirim\n </button>\n </form>\n </div>\n </div>\n `\n\n render() {\n return this.showModalRegister\n ? html`<div\n class=\"px-4 font-sans flex flex-wrap items-center justify-between rounded-lg md:mx-0 w-full min-h-[68px] bg-white relative\"\n >\n <div class=\"flex flex-col gap-1\">\n <span class=\"text-xs leading-tight text-grey-500\">\n ${this.dataModalRegister.card.labelPackage}\n </span>\n <div class=\"flex items-baseline\">\n <h5 class=\"text-base font-bold text-orange-400 leading-none\">\n ${this.dataModalRegister.card.textInvitation}\n </h5>\n </div>\n </div>\n <button\n @click=\"${this.openModal}\"\n class=\"h-8 rounded ${this.dataModalRegister.card.isButtonSolid\n ? 'bg-green-500 text-white'\n : 'bg-white border border-green-500 text-green-500'} flex items-center\"\n >\n <h6 class=\"text-xs md:text-sm font-bold py-2 px-4\">\n ${this.dataModalRegister.card.textButton}\n </h6>\n </button>\n </div>\n\n ${this.isModalOpen && !this.confirmation\n ? html`\n <div\n class=\"modal-overlay p-4\"\n @click=\"${this.closeModal}\"\n @keydown=${() => this.closeModal()}\n >\n <div\n class=\"modal-content max-w-7xl w-full flex flex-col lg:flex-row max-h-full overflow-auto\"\n @click=\"${(e: { stopPropagation: () => any }) =>\n e.stopPropagation()}\"\n @keydown=${(e: { stopPropagation: () => any }) =>\n e.stopPropagation()}\n >\n <button class=\"close-button\" @click=\"${this.closeModal}\">\n ${unsafeSVG(getFontAwesomeIcon('fa', 'times', 20, 20))}\n </button>\n <div\n class=\"bg-grey-600 lg:max-w-[515px] w-full p-4 md:p-16 justify-between items-center flex flex-col relative\"\n >\n <div class=\"items-center flex flex-col\">\n ${this.dataModalRegister.modal.registerPopUp.logo\n ? html`\n <img\n class=\" max-w-[214px] md:max-w-[321px] pt-2 md:pt-0\"\n src=\"${this.dataModalRegister.modal\n .registerPopUp.logo}\"\n alt=\"logo kompas pro mining\"\n />\n `\n : nothing}\n <div\n class=\"flex flex-col mt-6 md:mt-10 gap-2 text-left overflow-hidden ${this\n .showMobileBenefit\n ? 'max-h-fit'\n : 'max-h-[150px] md:max-h-fit'}\"\n >\n ${this.dataModalRegister.modal.registerPopUp\n .benefits &&\n this.dataModalRegister.modal.registerPopUp.benefits\n .length\n ? this.dataModalRegister.modal.registerPopUp.benefits.map(\n item =>\n html`\n <div\n class=\"flex items-baseline text-left text-white\"\n >\n <div\n class=\"text-green-400 h-5 w-5 md:h-6 md:w-6 flex shrink-0 items-center justify-center\"\n >\n ${unsafeSVG(\n getFontAwesomeIcon(\n 'fas',\n 'check',\n 16,\n 16\n )\n )}\n </div>\n <h6\n class=\"text-sm md:text-lg font-sans ml-1 leading-6\"\n >\n ${item}\n </h6>\n </div>\n `\n )\n : nothing}\n </div>\n </div>\n <button\n @click=\"${this.toggleMobileBenefit}\"\n class=\"bg-grey-600 absolute text-grey-100 py-6 w-full bottom-0 left-0 text-center md:hidden\"\n >\n <div\n class=\"h-12 transparent-linear-dark -mt-[72px] z-0 w-full absolute ${this\n .showMobileBenefit\n ? 'hidden'\n : ''}\"\n ></div>\n <div\n class=\"flex flex-row items-center justify-center gap-4\"\n >\n ${this.showMobileBenefit\n ? 'Sembunyikan'\n : 'Lihat keuntungan lainnnya'}\n ${unsafeSVG(\n getFontAwesomeIcon(\n 'fas',\n this.showMobileBenefit\n ? 'chevron-up'\n : 'chevron-down'\n )\n )}\n </div>\n </button>\n <div\n class=\"hidden md:block text-grey-300 pt-10 border-t border-grey-500 w-full text-center\"\n >\n Butuh bantuan? Hubungi\n <button\n @click=${this.customerServiceClicked}\n class=\"font-bold underline\"\n >\n Layanan Pelanggan.\n </button>\n </div>\n </div>\n <div class=\"w-full h-full\">${this.templateForm()}</div>\n </div>\n </div>\n `\n : ''}\n ${this.isModalOpen && this.confirmation\n ? html` <div\n class=\"modal-overlay px-4\"\n @click=\"${this.closeModal}\"\n @keydown=${() => this.closeModal()}\n >\n <div\n class=\"modal-content max-w-[624px] max-h-[577px] items-end flex flex-col justify-end h-full w-full p-4 md:p-10\"\n @click=\"${(e: { stopPropagation: () => any }) =>\n e.stopPropagation()}\"\n @keydown=${(e: { stopPropagation: () => any }) =>\n e.stopPropagation()}\n >\n <button class=\"close-button\" @click=\"${this.closeModal}\">\n ${unsafeSVG(getFontAwesomeIcon('fa', 'times', 20, 20))}\n </button>\n ${this.dataModalRegister.modal.successPopUp.logo\n ? html`\n <img\n class=\"w-full max-w-[242px] mx-auto\"\n src=\"${this.dataModalRegister.modal.successPopUp\n .logo}\"\n alt=\"konfirmasi\"\n />\n `\n : nothing}\n <div class=\"text-grey-300 text-center mt-8\">\n <h1 class=\"text-lg md:text-xl font-bold \">\n ${this.dataModalRegister.modal.successPopUp.title}\n </h1>\n <p\n class=\"text-sm md:text-base mt-4 bold-yellow\"\n .innerHTML=\"${this.dataModalRegister.modal.successPopUp\n .description}\"\n ></p>\n <button\n @click=\"${this.closeModal}\"\n class=\"bg-yellow-500 text-center h-10 rounded text-grey-600 mt-6 w-full font-bold\"\n >\n Oke\n </button>\n </div>\n </div>\n </div>`\n : ''} `\n : nothing\n }\n}\n"]}