@yoobic/yobi 8.3.0-45 → 8.3.0-48

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 (43) hide show
  1. package/dist/cjs/design-system.cjs.js +1 -1
  2. package/dist/cjs/loader.cjs.js +1 -1
  3. package/dist/cjs/yoo-card-feed.cjs.entry.js +2 -2
  4. package/dist/cjs/yoo-detail-bar.cjs.entry.js +1 -1
  5. package/dist/cjs/yoo-form-dynamic.cjs.entry.js +11 -10
  6. package/dist/cjs/yoo-form-input-container.cjs.entry.js +1 -1
  7. package/dist/cjs/yoo-form-swipe-cards.cjs.entry.js +199 -135
  8. package/dist/cjs/yoo-form-todo-task-list.cjs.entry.js +1 -2
  9. package/dist/cjs/yoo-login.cjs.entry.js +54 -63
  10. package/dist/collection/components/form/form-dynamic/form-dynamic.js +11 -10
  11. package/dist/collection/components/form/form-input-container/form-input-container.css +7 -0
  12. package/dist/collection/components/form/form-swipe-cards/form-swipe-cards.css +169 -179
  13. package/dist/collection/components/form/form-swipe-cards/form-swipe-cards.js +233 -169
  14. package/dist/collection/components/form/form-todo-task-list/form-todo-task-list.js +1 -2
  15. package/dist/collection/feature-communicate/feed/card-feed/components/sub-cards.js +2 -2
  16. package/dist/collection/feature-operate/campaign/detail-bar/detail-bar.js +3 -3
  17. package/dist/collection/feature-platform/login/login/login.css +119 -46
  18. package/dist/collection/feature-platform/login/login/login.js +25 -30
  19. package/dist/collection/feature-platform/login/login/parts/Header.js +15 -16
  20. package/dist/collection/feature-platform/login/login/parts/LoginForm.js +15 -18
  21. package/dist/collection/feature-platform/login/login/parts/LoginOptions.js +2 -2
  22. package/dist/design-system/design-system.esm.js +1 -1
  23. package/dist/design-system/yoo-card-feed.entry.js +3 -3
  24. package/dist/design-system/yoo-detail-bar.entry.js +1 -1
  25. package/dist/design-system/yoo-form-dynamic.entry.js +11 -10
  26. package/dist/design-system/yoo-form-input-container.entry.js +1 -1
  27. package/dist/design-system/yoo-form-swipe-cards.entry.js +201 -137
  28. package/dist/design-system/yoo-form-todo-task-list.entry.js +1 -2
  29. package/dist/design-system/yoo-login.entry.js +55 -64
  30. package/dist/esm/design-system.js +1 -1
  31. package/dist/esm/loader.js +1 -1
  32. package/dist/esm/yoo-card-feed.entry.js +3 -3
  33. package/dist/esm/yoo-detail-bar.entry.js +1 -1
  34. package/dist/esm/yoo-form-dynamic.entry.js +11 -10
  35. package/dist/esm/yoo-form-input-container.entry.js +1 -1
  36. package/dist/esm/yoo-form-swipe-cards.entry.js +201 -137
  37. package/dist/esm/yoo-form-todo-task-list.entry.js +1 -2
  38. package/dist/esm/yoo-login.entry.js +55 -64
  39. package/dist/types/components/form/form-swipe-cards/form-swipe-cards.d.ts +20 -13
  40. package/dist/types/feature-platform/login/login/parts/LoginForm.d.ts +0 -1
  41. package/dist/types/feature-platform/login/login/parts/LoginOptions.d.ts +0 -1
  42. package/dist/types/home/runner/work/yoobic-ng-6/yoobic-ng-6/design-system/stencil/.stencil/shared/interfaces/src/entities/form-field/form-field.interface.d.ts +1 -0
  43. package/package.json +1 -1
@@ -96,9 +96,8 @@ export class YooFormTodoTaskListComponent {
96
96
  return updated;
97
97
  }
98
98
  async deleteTask(index, withConfirmation = true) {
99
- var _a, _b;
100
99
  const result = withConfirmation
101
- ? await showAlert(translate('DELETETASK'), [translate('CANCEL'), { cssClass: 'danger', text: translate('DELETE') }], translate('CONFIRMDELETETASK', { title: ((_b = (_a = this.value.values[index]) === null || _a === void 0 ? void 0 : _a.text) === null || _b === void 0 ? void 0 : _b.value) || '' }))
100
+ ? await showAlert(translate('DELETETASK'), [translate('CANCEL'), { cssClass: 'danger', text: translate('DELETE') }], translate('CONFIRMDELETETASK'))
102
101
  : true;
103
102
  if (result) {
104
103
  this.updateValue({ ...this.value, values: [...this.value.values.slice(0, index), ...this.value.values.slice(index + 1)] });
@@ -48,14 +48,14 @@ export const CardEvent = ({ configs }) => {
48
48
  h("span", { class: "heading" },
49
49
  h("yoo-icon", { size: "small", color: "text-color", name: isPublic ? 'feed' : 'email' }),
50
50
  translate(`${isPublic ? 'PUBLICEVENT' : 'PRIVATEEVENT'}`)),
51
- h("span", { class: "title" }, configs.title),
51
+ h("span", { class: "title" }, translateMulti(configs.title)),
52
52
  h("span", { class: "date dark" }, `${dateFormat(startDate, format)}${!isSameDay || !configs.allDay ? (` ${translate('YOOBICTO').toLowerCase()} ${dateFormat(endDate, endformat)}`) : ''}`),
53
53
  configs.location && (h("div", { class: "preview-container" },
54
54
  h("yoo-avatar", { imgSrc: configs.location.imageData, iconText: configs.location.title, size: "extra-small" }),
55
55
  h("span", null, configs.location.title))),
56
56
  configs.address && h("span", { class: "address" }, configs.address),
57
57
  configs.virtualRoomUrl && h("yoo-truncate", { class: "url", innerHTML: replaceAllLinks(configs.virtualRoomUrl) }),
58
- configs.description && h("yoo-truncate", { class: "card-feeds", maxLength: 10, byWords: true, showEllipsisButton: true, content: replaceAllLinks(configs.description) }),
58
+ configs.description && h("yoo-truncate", { class: "card-feeds", maxLength: 10, byWords: true, showEllipsisButton: true, content: replaceAllLinks(translateMulti(configs.description)) }),
59
59
  ((_a = configs.tags) === null || _a === void 0 ? void 0 : _a.length) > 0 && (h("div", { class: "feed-hashtags" }, configs.tags.map((a) => (a === null || a === void 0 ? void 0 : a.toLowerCase) && h("span", { class: "hashtag", innerHTML: `#${translateMulti(a.toUpperCase()).toLowerCase()} ` })))),
60
60
  configs.type && h("span", { class: "dark flex" },
61
61
  `${translate('YOOBICCATEGORY')}: `,
@@ -188,10 +188,10 @@ export class YooDetailBarComponent {
188
188
  translate('STATUS'),
189
189
  ":"),
190
190
  h("yoo-tag", { color: "text-color-10" }, this.status))),
191
- this.renderContent('ACTIVE', isBoolean(this.isActive) ? (this.isActive ? 'YES' : 'NO') : '-'),
191
+ this.renderContent('ACTIVE', isBoolean(this.isActive) ? (this.isActive ? 'YOOBICYES' : 'YOOBICNO') : '-'),
192
192
  this.period && this.period !== '-' && this.renderContent('PERIOD', this.period),
193
- this.isFeatured !== null && this.renderContent('FEATURED', this.isFeatured ? 'YES' : 'NO'),
194
- this.progressiveLessons != null && this.renderContent('PROGRESSIVELESSONS', this.progressiveLessons ? 'Yes' : 'No'),
193
+ this.isFeatured !== null && this.renderContent('FEATUREDCOURSE', this.isFeatured ? 'YOOBICYES' : 'YOOBICNO'),
194
+ this.progressiveLessons != null && this.renderContent('PROGRESSIVELESSONS', this.progressiveLessons ? 'YOOBICYES' : 'YOOBICNO'),
195
195
  this.category && this.renderContent('CATEGORY', this.category),
196
196
  havePoints &&
197
197
  this.renderContent('POINTS', h("yoo-tag", { color: "app-color" },
@@ -254,35 +254,42 @@ null: CSS defaults to use the ltr css, and adds [dir=rtl] selectors to override
254
254
  }
255
255
 
256
256
  @media screen and (max-height: 699px) {
257
- .outer-login-container.keyboard-closed .content-container {
257
+ .outer-login-container:not(.emulated).keyboard-closed .content-container {
258
258
  padding-top: 0;
259
259
  }
260
260
  }
261
261
  @media screen and (min-width: 750px) {
262
- .outer-login-container {
262
+ .outer-login-container:not(.emulated) {
263
263
  --header-footer-border-color: var(--stable-light, #f1f1f1);
264
264
  }
265
- .outer-login-container .content-container {
265
+ .outer-login-container:not(.emulated) .content-container {
266
266
  padding-top: var(--spacing-96, 6rem);
267
267
  }
268
- .outer-login-container:not([is-whitelabel]) .content-container {
268
+ .outer-login-container:not(.emulated):not([is-whitelabel]):not(.emulated) .content-container {
269
269
  padding-top: 0;
270
270
  }
271
- .outer-login-container.keyboard-open {
271
+ .outer-login-container:not(.emulated).keyboard-open {
272
272
  justify-content: flex-end;
273
273
  padding-bottom: 20%;
274
274
  }
275
275
  }
276
276
  @media screen and (min-width: 1000px) and (max-height: 500px) {
277
- .outer-login-container.keyboard-open {
277
+ .outer-login-container:not(.emulated).keyboard-open {
278
278
  padding-bottom: var(--spacing-16, 1rem);
279
279
  }
280
280
  }
281
281
  @media screen and (min-width: 1000px) and (orientation: landscape) {
282
- .outer-login-container.tablet.ios.keyboard-transitioning .content-container, .outer-login-container.tablet.ios.keyboard-open .content-container {
282
+ .outer-login-container.tablet.ios:not(.emulated).keyboard-transitioning .content-container, .outer-login-container.tablet.ios:not(.emulated).keyboard-open .content-container {
283
283
  transform: translateY(-20%);
284
284
  }
285
285
  }
286
+ .outer-login-container.emulated:not([is-whitelabel]) .content-container {
287
+ padding-top: 9rem;
288
+ }
289
+ .outer-login-container.emulated[is-whitelabel] .content-container {
290
+ padding-top: 8rem;
291
+ }
292
+
286
293
  .outer-login-container .background-overlay {
287
294
  position: absolute;
288
295
  z-index: 1;
@@ -325,7 +332,7 @@ null: CSS defaults to use the ltr css, and adds [dir=rtl] selectors to override
325
332
  }
326
333
 
327
334
  @media screen and (min-width: 900px) {
328
- .outer-login-container #divider {
335
+ .outer-login-container:not(.emulated) #divider {
329
336
  margin: var(--spacing-32, 2rem) 0;
330
337
  }
331
338
  }
@@ -355,18 +362,18 @@ null: CSS defaults to use the ltr css, and adds [dir=rtl] selectors to override
355
362
  }
356
363
 
357
364
  @media screen and (min-width: 900px) {
358
- .outer-login-container footer {
365
+ .outer-login-container:not(.emulated) footer {
359
366
  width: 41.5rem;
360
367
  margin: 0 calc((100% - 41.5rem) / 2);
361
368
  border-top: var(--header-footer-border-color) 0.0675rem solid;
362
369
  }
363
- .outer-login-container footer * {
370
+ .outer-login-container:not(.emulated) footer * {
364
371
  margin: var(--spacing-24, 1.5rem) 0 1.875rem 0;
365
372
  line-height: 1.125rem;
366
373
  }
367
374
  }
368
375
  @media screen and (max-height: 550px) {
369
- .outer-login-container footer {
376
+ .outer-login-container:not(.emulated) footer {
370
377
  display: none;
371
378
  }
372
379
  }
@@ -452,47 +459,47 @@ null: CSS defaults to use the ltr css, and adds [dir=rtl] selectors to override
452
459
  }
453
460
 
454
461
  @media screen and (min-width: 750px) {
455
- .outer-login-container .header img {
462
+ .outer-login-container:not(.emulated) .header img {
456
463
  height: 4rem;
457
464
  max-height: 4rem;
458
465
  }
459
- .outer-login-container[logo-shape=square] .header img {
466
+ .outer-login-container:not(.emulated)[logo-shape=square] .header img {
460
467
  height: 6rem;
461
468
  max-height: 6rem;
462
469
  }
463
470
  }
464
471
  @media screen and (min-width: 1000px) {
465
- .outer-login-container .header img {
472
+ .outer-login-container:not(.emulated) .header img {
466
473
  height: 4rem;
467
474
  max-height: 4rem;
468
475
  }
469
- .outer-login-container .header {
476
+ .outer-login-container:not(.emulated) .header {
470
477
  width: 41.5rem;
471
478
  margin: 0 calc((100% - 41.5rem) / 2);
472
479
  border-bottom: var(--header-footer-border-color) 0.0675rem solid;
473
480
  }
474
- .outer-login-container .header img {
481
+ .outer-login-container:not(.emulated) .header img {
475
482
  margin: 2rem 0;
476
483
  }
477
- .outer-login-container .header h1 {
484
+ .outer-login-container:not(.emulated) .header h1 {
478
485
  display: none;
479
486
  }
480
- .outer-login-container #error-alert {
487
+ .outer-login-container:not(.emulated) #error-alert {
481
488
  top: 7.5rem;
482
489
  width: 41.5rem;
483
490
  margin: 0 calc((100% - 41.5rem) / 2);
484
491
  }
485
- .outer-login-container[is-whitelabel] #error-alert {
492
+ .outer-login-container:not(.emulated)[is-whitelabel] #error-alert {
486
493
  top: 9rem;
487
494
  }
488
- .outer-login-container[logo-shape=square] .header img {
495
+ .outer-login-container:not(.emulated)[logo-shape=square] .header img {
489
496
  height: 6rem;
490
497
  max-height: 6rem;
491
498
  }
492
- .outer-login-container[logo-shape=square] #error-alert {
499
+ .outer-login-container:not(.emulated)[logo-shape=square] #error-alert {
493
500
  top: 11rem;
494
501
  }
495
- .outer-login-container.tablet #error-alert {
502
+ .outer-login-container:not(.emulated).tablet #error-alert {
496
503
  position: absolute;
497
504
  top: 0;
498
505
  z-index: 10;
@@ -501,44 +508,74 @@ null: CSS defaults to use the ltr css, and adds [dir=rtl] selectors to override
501
508
  }
502
509
  }
503
510
  @media screen and (max-width: 750px) {
504
- .outer-login-container[is-whitelabel] .header img {
511
+ .outer-login-container[is-whitelabel]:not(.emulated) .header img {
505
512
  height: 4rem;
506
513
  max-height: 4rem;
507
514
  }
508
- .outer-login-container[is-whitelabel] header h1 {
515
+ .outer-login-container[is-whitelabel]:not(.emulated) header h1 {
509
516
  display: none;
510
517
  }
511
- .outer-login-container[is-whitelabel] header img {
518
+ .outer-login-container[is-whitelabel]:not(.emulated) header img {
512
519
  max-width: 90%;
513
520
  margin-top: var(--spacing-48, 3rem);
514
521
  }
515
- .outer-login-container[is-whitelabel][logo-shape=square] .header img {
522
+ .outer-login-container[is-whitelabel]:not(.emulated)[logo-shape=square] .header img {
516
523
  height: 6rem;
517
524
  max-height: 6rem;
518
525
  }
519
- .outer-login-container[is-whitelabel][logo-shape=square] .header img {
526
+ .outer-login-container[is-whitelabel]:not(.emulated)[logo-shape=square] .header img {
520
527
  margin-top: var(--spacing-64, 4rem);
521
528
  }
522
529
  }
530
+ .outer-login-container[is-whitelabel].emulated .header img {
531
+ height: 4rem;
532
+ max-height: 4rem;
533
+ }
534
+ .outer-login-container[is-whitelabel].emulated header h1 {
535
+ display: none;
536
+ }
537
+ .outer-login-container[is-whitelabel].emulated header img {
538
+ max-width: 90%;
539
+ margin-top: var(--spacing-48, 3rem);
540
+ }
541
+ .outer-login-container[is-whitelabel].emulated[logo-shape=square] .header img {
542
+ height: 6rem;
543
+ max-height: 6rem;
544
+ }
545
+ .outer-login-container[is-whitelabel].emulated[logo-shape=square] .header img {
546
+ margin-top: var(--spacing-64, 4rem);
547
+ }
548
+ .outer-login-container[is-whitelabel].emulated:not(.hide-advanced-login):not(.hide-google-login)[logo-shape=square] .header img {
549
+ height: 6rem;
550
+ max-height: 6rem;
551
+ }
552
+ .outer-login-container[is-whitelabel].emulated:not(.hide-advanced-login):not(.hide-google-login)[logo-shape=square] .header img {
553
+ margin-top: var(--spacing-48, 3rem);
554
+ }
555
+
556
+ .outer-login-container:not([is-whitelabel]).emulated:not(.hide-advanced-login):not(.hide-google-login) .header img {
557
+ margin-top: var(--spacing-24, 1.5rem);
558
+ }
559
+
523
560
  @media screen and (min-width: 900px) and (max-width: 1300px) {
524
- .outer-login-container .header {
561
+ .outer-login-container:not(.emulated) .header {
525
562
  margin-bottom: var(--spacing-32, 2rem);
526
563
  }
527
- .outer-login-container .header img {
564
+ .outer-login-container:not(.emulated) .header img {
528
565
  margin: var(--spacing-16, 1rem) 0;
529
566
  }
530
- .outer-login-container #error-alert {
567
+ .outer-login-container:not(.emulated) #error-alert {
531
568
  top: 6.5rem;
532
569
  width: 41.5rem;
533
570
  margin: 0 calc((100% - 41.5rem) / 2);
534
571
  }
535
- .outer-login-container[is-whitelabel] #error-alert {
572
+ .outer-login-container:not(.emulated)[is-whitelabel] #error-alert {
536
573
  top: 7rem;
537
574
  }
538
- .outer-login-container[logo-shape=square] #error-alert {
575
+ .outer-login-container:not(.emulated)[logo-shape=square] #error-alert {
539
576
  top: 9rem;
540
577
  }
541
- .outer-login-container.tablet #error-alert {
578
+ .outer-login-container:not(.emulated).tablet #error-alert {
542
579
  position: absolute;
543
580
  top: 0;
544
581
  z-index: 10;
@@ -547,22 +584,23 @@ null: CSS defaults to use the ltr css, and adds [dir=rtl] selectors to override
547
584
  }
548
585
  }
549
586
  @media screen and (max-height: 799px) {
550
- .outer-login-container:not([is-whitelabel]).keyboard-closed .header img {
587
+ .outer-login-container:not([is-whitelabel]).keyboard-closed:not(.emulated) .header img {
551
588
  margin-top: var(--spacing-32, 2rem);
552
589
  }
553
590
  }
554
591
  @media screen and (max-height: 699px) {
555
- .outer-login-container:not([is-whitelabel]).keyboard-closed .header h1 {
592
+ .outer-login-container:not([is-whitelabel]).keyboard-closed:not(.emulated) .header h1 {
556
593
  display: none;
557
594
  }
558
595
  }
559
596
  @media screen and (max-height: 665px) {
560
- .outer-login-container.keyboard-closed .header {
597
+ .outer-login-container.keyboard-closed:not(.emulated) .header h1,
598
+ .outer-login-container.keyboard-closed:not(.emulated) .header img {
561
599
  display: none;
562
600
  }
563
601
  }
564
602
  @media screen and (max-height: 500px) {
565
- .outer-login-container.keyboard-open .header {
603
+ .outer-login-container.keyboard-open:not(.emulated) .header {
566
604
  display: none;
567
605
  }
568
606
  }
@@ -577,6 +615,10 @@ null: CSS defaults to use the ltr css, and adds [dir=rtl] selectors to override
577
615
  margin-bottom: var(--spacing-24, 1.5rem);
578
616
  }
579
617
 
618
+ .outer-login-container.emulated #error-alert {
619
+ padding-top: var(--spacing-24, 1.5rem);
620
+ }
621
+
580
622
  .outer-login-container {
581
623
  --disabled-color: var(--stable-light, #f1f1f1);
582
624
  --hover-color: var(--stable-light, #f1f1f1);
@@ -609,13 +651,13 @@ null: CSS defaults to use the ltr css, and adds [dir=rtl] selectors to override
609
651
  height: 1.5rem;
610
652
  margin: -0.5rem 0 0 0;
611
653
  }
612
- .outer-login-container .help-buttons.mobile {
654
+ .outer-login-container .help-buttons.mobile, .outer-login-container .help-buttons.emulated {
613
655
  justify-content: flex-end;
614
656
  }
615
- .outer-login-container .help-buttons:not(.mobile) yoo-button#help-button {
657
+ .outer-login-container .help-buttons:not(.mobile):not(.emulated) yoo-button#help-button {
616
658
  margin: -0.25rem -0.5rem 0 0;
617
659
  }
618
- .outer-login-container .help-buttons:not(.mobile) yoo-button#magic-button {
660
+ .outer-login-container .help-buttons:not(.mobile):not(.emulated) yoo-button#magic-button {
619
661
  margin: -0.25rem 0 0 -0.5rem;
620
662
  }
621
663
  .outer-login-container #default-login-button {
@@ -642,7 +684,8 @@ null: CSS defaults to use the ltr css, and adds [dir=rtl] selectors to override
642
684
  height: 2rem;
643
685
  font-size: var(--font-size-14, 0.875rem);
644
686
  }
645
- .outer-login-container #default-login-button.medium.mobile {
687
+ .outer-login-container #default-login-button.medium.mobile,
688
+ .outer-login-container #default-login-button.medium.emulated {
646
689
  font-size: var(--font-size-16, 1rem);
647
690
  }
648
691
  .outer-login-container #default-login-button.large {
@@ -716,10 +759,29 @@ null: CSS defaults to use the ltr css, and adds [dir=rtl] selectors to override
716
759
  }
717
760
  }
718
761
  @media screen and (min-width: 900px) {
719
- .outer-login-container .login-options .google-logo {
762
+ .outer-login-container:not(.emulated) .login-options .google-logo {
720
763
  height: 1rem;
721
764
  }
722
765
  }
766
+ .outer-login-container.emulated .login-options.hide-google-login:not(.hide-advanced-login) #google-login-button {
767
+ display: none;
768
+ }
769
+ .outer-login-container.emulated .login-options.hide-google-login:not(.hide-advanced-login) #sso-login-button {
770
+ transform: translateY(0);
771
+ }
772
+ .outer-login-container.emulated .login-options.hide-advanced-login:not(.hide-google-login) #sso-login-button {
773
+ display: none;
774
+ }
775
+ .outer-login-container.emulated .login-options.hide-advanced-login:not(.hide-google-login) #google-login-button {
776
+ transform: translateY(0);
777
+ }
778
+ .outer-login-container.emulated .login-options.hide-advanced-login.hide-google-login #sso-login-button {
779
+ display: none;
780
+ }
781
+ .outer-login-container.emulated .login-options.hide-advanced-login.hide-google-login #google-login-button {
782
+ transform: translateY(0);
783
+ }
784
+
723
785
  .outer-login-container .main-content {
724
786
  display: flex;
725
787
  flex-direction: column;
@@ -733,12 +795,12 @@ null: CSS defaults to use the ltr css, and adds [dir=rtl] selectors to override
733
795
  }
734
796
 
735
797
  @media screen and (min-width: 900px) {
736
- .outer-login-container .main-content {
798
+ .outer-login-container:not(.emulated) .main-content {
737
799
  display: flex;
738
800
  flex-direction: column;
739
801
  width: 18.75rem;
740
802
  }
741
- .outer-login-container .main-content yoo-form-input-container {
803
+ .outer-login-container:not(.emulated) .main-content yoo-form-input-container {
742
804
  font-size: var(--font-size-12, 0.75rem);
743
805
  }
744
806
  }
@@ -751,6 +813,13 @@ null: CSS defaults to use the ltr css, and adds [dir=rtl] selectors to override
751
813
  transform: scale(1.2) translateX(10%);
752
814
  }
753
815
  }
816
+ .outer-login-container.emulated:not([is-whitelabel]) .main-content h3 {
817
+ display: none;
818
+ }
819
+ .outer-login-container.emulated.focused h3 {
820
+ transform: scale(1.2) translateX(10%);
821
+ }
822
+
754
823
  .outer-login-container .sidepanel {
755
824
  margin-right: var(--spacing-64, 4rem);
756
825
  }
@@ -759,12 +828,12 @@ null: CSS defaults to use the ltr css, and adds [dir=rtl] selectors to override
759
828
  }
760
829
 
761
830
  @media screen and (min-width: 1000px) {
762
- .outer-login-container .sidepanel {
831
+ .outer-login-container:not(.emulated) .sidepanel {
763
832
  display: flex;
764
833
  flex-direction: column;
765
834
  width: 18.75rem;
766
835
  }
767
- .outer-login-container .sidepanel yoo-form-input-container {
836
+ .outer-login-container:not(.emulated) .sidepanel yoo-form-input-container {
768
837
  font-size: var(--font-size-12, 0.75rem);
769
838
  }
770
839
  }
@@ -773,6 +842,10 @@ null: CSS defaults to use the ltr css, and adds [dir=rtl] selectors to override
773
842
  display: none;
774
843
  }
775
844
  }
845
+ .outer-login-container.emulated .sidepanel {
846
+ display: none;
847
+ }
848
+
776
849
  .outer-login-container:not([is-double-column]) .sidepanel {
777
850
  display: none;
778
851
  }
@@ -1,11 +1,11 @@
1
1
  import { ScreenOrientation } from '@awesome-cordova-plugins/screen-orientation';
2
- import { addKeyboardEventListener, disableKeyboardResize, isAndroid, isIonic, isIOS, isNativeMobile, isTabletOrIpad, isWeb, removeKeyboardEventListeners, setStatusBarDarkMode, showActionSheet, translate } from '@shared/utils';
2
+ import { addKeyboardEventListener, disableKeyboardResize, isAndroid, isFullScreenFalse, isIonic, isIOS, isNativeMobile, isTabletOrIpad, isWeb, removeKeyboardEventListeners, setStatusBarDarkMode, showActionSheet, translate } from '@shared/utils';
3
3
  import { Component, Element, Event, forceUpdate, h, Host, Method, Prop, State } from '@stencil/core';
4
4
  import googleLogo from './assets/login/google_color.svg';
5
5
  import { Background, Footer, Header, LoginForm, LoginOptions, MainContent, Sidepanel } from './parts';
6
6
  export class YooLoginComponent {
7
7
  constructor() {
8
- //* COMPONENT TEXT
8
+ //* COMPONENT TEXT
9
9
  // Title Text
10
10
  this.mainTitle = '';
11
11
  // Subtitle Text
@@ -37,22 +37,16 @@ export class YooLoginComponent {
37
37
  return !!((_a = this.passwordInputElement) === null || _a === void 0 ? void 0 : _a.value);
38
38
  }
39
39
  get hasBackgroundMedia() {
40
- return (this.backgroundSrc)
41
- ? true
42
- : false;
40
+ return this.backgroundSrc ? true : false;
43
41
  }
44
42
  get hasCustomBackground() {
45
- return (this.hasBackgroundMedia || this.backgroundColor) ? true : false;
43
+ return this.hasBackgroundMedia || this.backgroundColor ? true : false;
46
44
  }
47
45
  get primaryColor() {
48
46
  if (this.textColor) {
49
47
  return this.textColor;
50
48
  }
51
- const color = this.hasBackgroundMedia
52
- ? 'light'
53
- : !this.backgroundColor
54
- ? 'dark'
55
- : 'app-color';
49
+ const color = this.hasBackgroundMedia ? 'light' : !this.backgroundColor ? 'dark' : 'app-color';
56
50
  return `var(--${color})`;
57
51
  }
58
52
  async getPassword() {
@@ -63,8 +57,7 @@ export class YooLoginComponent {
63
57
  this.defaultPassword && (this.password = this.defaultPassword);
64
58
  setStatusBarDarkMode(true);
65
59
  disableKeyboardResize();
66
- isNativeMobile() &&
67
- this.setKeyboardListeners();
60
+ isNativeMobile() && this.setKeyboardListeners();
68
61
  }
69
62
  componentDidLoad() {
70
63
  var _a;
@@ -86,7 +79,8 @@ export class YooLoginComponent {
86
79
  if (!isNativeMobile()) {
87
80
  this.isFocused = true;
88
81
  }
89
- else { // Has to be called here, as the 'keyboardWillShow' is called after, causing jittering
82
+ else {
83
+ // Has to be called here, as the 'keyboardWillShow' is called after, causing jittering
90
84
  if (this.keyboardState !== 'open') {
91
85
  this.contentContainerElement.style.top = `${this.contentContainerElement.offsetTop || 150}px`;
92
86
  this.contentContainerElement.style.position = 'absolute';
@@ -104,7 +98,8 @@ export class YooLoginComponent {
104
98
  if (!isNativeMobile()) {
105
99
  this.isFocused = false;
106
100
  }
107
- else { // Has to be called here, as the 'keyboardWillHide' is called after, causing jittering
101
+ else {
102
+ // Has to be called here, as the 'keyboardWillHide' is called after, causing jittering
108
103
  this.contentContainerElement.style.position = 'absolute';
109
104
  }
110
105
  this.focusedInput = undefined;
@@ -211,35 +206,35 @@ export class YooLoginComponent {
211
206
  getButton(type, onClick, ref = undefined) {
212
207
  const isOtherLoginOptions = ['GOOGLE', 'SSO'].includes(type);
213
208
  const isHelpButton = ['HELP', 'MAGIC'].includes(type);
214
- return (h("yoo-button", { id: !isHelpButton ? `${type.toLowerCase()}-login-button` : `${type.toLowerCase()}-button`, color: !isOtherLoginOptions ? 'app-color' : 'light', customColor: this.textColor && isHelpButton ? { color: this.textColor } : undefined, fill: isHelpButton ? 'transparent' : 'solid', size: isWeb(this.host)
215
- ? isHelpButton ? 'small' : 'medium'
216
- : isHelpButton ? 'medium' : 'large', animated: false, onClick: onClick, ref: ref },
209
+ return (h("yoo-button", { id: !isHelpButton ? `${type.toLowerCase()}-login-button` : `${type.toLowerCase()}-button`, color: !isOtherLoginOptions ? 'app-color' : 'light', customColor: this.textColor && isHelpButton ? { color: this.textColor } : undefined, fill: isHelpButton ? 'transparent' : 'solid', size: isWeb(this.host) ? (isHelpButton ? 'small' : 'medium') : isHelpButton ? 'medium' : 'large', animated: false, onClick: onClick, ref: ref },
217
210
  type === 'SSO' && h("yoo-icon", { size: isWeb(this.host) ? 'small' : 'medium', slot: "start", name: "lock", color: "dark" }),
218
211
  type === 'GOOGLE' && h("img", { class: "google-logo", src: googleLogo, alt: "google logo", slot: "start" }),
219
- isHelpButton
220
- ? translate(type === 'HELP' ? this.helpText : this.magicLinkText)
221
- : translate(`YOOBIC${type !== 'SSO-DEFAULT' ? type : ''}LOGIN`)));
212
+ isHelpButton ? translate(type === 'HELP' ? this.helpText : this.magicLinkText) : translate(`YOOBIC${type !== 'SSO-DEFAULT' ? type : ''}LOGIN`)));
222
213
  }
223
214
  render() {
224
215
  return (h(Host, { style: {
225
- ...this.hasCustomBackground ? {
226
- '--header-footer-border-color': `var(--${this.hasBackgroundMedia ? 'light-40' : 'app-color-20'})`,
227
- backgroundColor: this.backgroundColor ? this.backgroundColor : 'unset'
228
- } : {}
216
+ ...(this.hasCustomBackground
217
+ ? {
218
+ '--header-footer-border-color': `var(--${this.hasBackgroundMedia ? 'light-40' : 'app-color-20'})`,
219
+ backgroundColor: this.backgroundColor ? this.backgroundColor : 'unset'
220
+ }
221
+ : {})
229
222
  }, class: {
230
223
  'outer-login-container': true,
231
224
  focused: this.isFocused,
232
225
  [`keyboard-${this.keyboardState}`]: true,
233
- 'ios': isIOS(),
234
- 'tablet': isTabletOrIpad()
226
+ emulated: isFullScreenFalse(),
227
+ web: isWeb(),
228
+ ios: isIOS(),
229
+ tablet: isTabletOrIpad()
235
230
  } },
236
231
  h(Header, { error: this.error, logo: this.logo, title: this.mainTitle, textColor: this.primaryColor, closeClick: () => this.onAlertClosed() }),
237
232
  h(Background, { hasBackgroundMedia: this.hasBackgroundMedia, image: this.backgroundSrc }),
238
- h("div", { class: "content-container", ref: (el) => this.contentContainerElement = el },
233
+ h("div", { class: "content-container", ref: (el) => (this.contentContainerElement = el) },
239
234
  h(Sidepanel, { title: this.mainTitle, textColor: this.primaryColor, image: this.sidepanelImage }),
240
235
  h(MainContent, { subtitle: this.subtitle, textColor: this.primaryColor },
241
- h(LoginForm, { buttonColor: this.textColor, ssoOnly: this.ssoOnly, fieldTitleColor: this.primaryColor, getInputLabel: this.getInputLabel.bind(this), getDefaultInputValue: this.getDefaultInputValue.bind(this), getInputValue: this.getInputValue.bind(this), focusedInput: this.focusedInput, host: this.host, bindReference: this.bindReference.bind(this), onIconClicked: this.onIconClicked.bind(this), onInputChanged: this.onInputChanged.bind(this), onInputFocused: this.onInputFocused.bind(this), onInputBlurred: () => this.onInputBlurred(), onEnterPressed: () => this.validateAndLogin(), onFormSubmit: (e) => this.onFormSubmit(e), onShowPassword: this.onShowPassword.bind(this), showPassword: this.showPassword, loginButtonRef: (el) => this.loginButtonElement = el, helpButtonElement: this.getButton('HELP', () => this.onForgotPassword()), magicButtonElement: this.getButton('MAGIC', () => this.magicLinkModalRequested.emit(true)), ssoLoginButtonElement: this.getButton('SSO-DEFAULT', () => this.onAdvancedLogin()), clearInput: this.clearInput.bind(this), isWhitelabel: this.isWhitelabel }),
242
- h(LoginOptions, { ssoOnly: this.ssoOnly, hideGoogleLogin: this.hideGoogleLogin, hideAdvancedLogin: this.hideAdvancedLogin, hasCustomBackground: this.hasCustomBackground, dividerColor: this.primaryColor, googleLoginButtonElement: this.getButton('GOOGLE', () => this.onGoogleLogin()), ssoLoginButtonElement: this.getButton('SSO', () => this.onAdvancedLogin()), host: this.host }))),
236
+ h(LoginForm, { buttonColor: this.textColor, ssoOnly: this.ssoOnly, fieldTitleColor: this.primaryColor, getInputLabel: this.getInputLabel.bind(this), getDefaultInputValue: this.getDefaultInputValue.bind(this), getInputValue: this.getInputValue.bind(this), focusedInput: this.focusedInput, bindReference: this.bindReference.bind(this), onIconClicked: this.onIconClicked.bind(this), onInputChanged: this.onInputChanged.bind(this), onInputFocused: this.onInputFocused.bind(this), onInputBlurred: () => this.onInputBlurred(), onEnterPressed: () => this.validateAndLogin(), onFormSubmit: (e) => this.onFormSubmit(e), onShowPassword: this.onShowPassword.bind(this), showPassword: this.showPassword, loginButtonRef: (el) => (this.loginButtonElement = el), helpButtonElement: this.getButton('HELP', () => this.onForgotPassword()), magicButtonElement: this.getButton('MAGIC', () => this.magicLinkModalRequested.emit(true)), ssoLoginButtonElement: this.getButton('SSO-DEFAULT', () => this.onAdvancedLogin()), clearInput: this.clearInput.bind(this), isWhitelabel: this.isWhitelabel }),
237
+ h(LoginOptions, { ssoOnly: this.ssoOnly, hideGoogleLogin: this.hideGoogleLogin, hideAdvancedLogin: this.hideAdvancedLogin, hasCustomBackground: this.hasCustomBackground, dividerColor: this.primaryColor, googleLoginButtonElement: this.getButton('GOOGLE', () => this.onGoogleLogin()), ssoLoginButtonElement: this.getButton('SSO', () => this.onAdvancedLogin()) }))),
243
238
  h(Footer, { hasCustomBackground: this.hasCustomBackground, copyrightMessage: this.copyrightMessage, textColor: this.primaryColor, version: this.version, onClick: () => {
244
239
  if (this.ssoOnly) {
245
240
  this.ssoOnly = false;
@@ -1,22 +1,21 @@
1
1
  import { isWeb, translate } from '@shared/utils';
2
2
  import { h } from '@stencil/core';
3
- export const Header = ({ logo, title, textColor, error, closeClick }) => ([
4
- error &&
5
- h("yoo-banner", { id: "error-alert", class: {
6
- 'center header': true,
7
- 'sharp': !isWeb()
8
- }, fill: true, closable: true, leftIcon: { name: 'info', color: isWeb() ? 'danger' : 'light' }, onCloseClick: closeClick, style: {
9
- '--main-color': `var(--${isWeb() ? 'danger-20' : 'danger'})`,
10
- '--main-text-color': `var(--${isWeb() ? 'dark' : 'light'})`,
11
- '--close-icon-color': `var(--${isWeb() ? 'danger' : 'light'})`
3
+ export const Header = ({ logo, title, textColor, error, closeClick }) => [
4
+ error && (h("yoo-banner", { id: "error-alert", class: {
5
+ 'center header': true,
6
+ sharp: !isWeb()
7
+ }, fill: true, closable: true, leftIcon: { name: 'info', color: isWeb() ? 'danger' : 'light' }, onCloseClick: closeClick, style: {
8
+ '--main-color': `var(--${isWeb() ? 'danger-20' : 'danger'})`,
9
+ '--main-text-color': `var(--${isWeb() ? 'dark' : 'light'})`,
10
+ '--close-icon-color': `var(--${isWeb() ? 'danger' : 'light'})`
11
+ } },
12
+ h("div", { slot: "content", class: {
13
+ 'error-content': true,
14
+ web: isWeb()
12
15
  } },
13
- h("div", { slot: "content", class: {
14
- 'error-content': true,
15
- 'web': isWeb()
16
- } },
17
- h("p", null, translate(error)),
18
- h("a", { class: "link", style: { color: `var(--${isWeb() ? 'danger' : 'light'})` }, href: "mailto:support@yoobic.com" }, translate('YOOBICNEEDHELP')))),
16
+ h("p", null, translate(error)),
17
+ h("a", { class: "link", style: { color: `var(--${isWeb() ? 'danger' : 'light'})` }, href: "mailto:support@yoobic.com" }, translate('YOOBICNEEDHELP'))))),
19
18
  h("header", { class: "header" },
20
19
  h("img", { src: logo, alt: "app logo" }),
21
20
  h("h1", { style: { color: textColor } }, title))
22
- ]);
21
+ ];
@@ -1,29 +1,26 @@
1
1
  import { getContrastColor, isPresent, isWeb, translate } from '@shared/utils';
2
2
  import { h } from '@stencil/core';
3
3
  import { LoginInput } from './LoginInput';
4
- export const LoginForm = ({ ssoOnly, fieldTitleColor, getInputLabel, getDefaultInputValue, getInputValue, bindReference, clearInput, onIconClicked, focusedInput, host, showPassword, loginButtonRef, onEnterPressed, onInputBlurred, onInputChanged, onInputFocused, onFormSubmit, onShowPassword, helpButtonElement, magicButtonElement, ssoLoginButtonElement, isWhitelabel, buttonColor }) => {
5
- const inputAndButtonSize = isWeb(host) ? 'medium' : 'large';
6
- const loginDisabled = !(!!(getInputValue('username') || '') &&
7
- !!(getInputValue('password') || ''));
4
+ export const LoginForm = ({ ssoOnly, fieldTitleColor, getInputLabel, getDefaultInputValue, getInputValue, bindReference, clearInput, onIconClicked, focusedInput, showPassword, loginButtonRef, onEnterPressed, onInputBlurred, onInputChanged, onInputFocused, onFormSubmit, onShowPassword, helpButtonElement, magicButtonElement, ssoLoginButtonElement, isWhitelabel, buttonColor }) => {
5
+ const inputAndButtonSize = isWeb() ? 'medium' : 'large';
6
+ const loginDisabled = !(!!(getInputValue('username') || '') && !!(getInputValue('password') || ''));
8
7
  const onKeyPress = (e) => {
9
8
  if (e.key === 'Enter') {
10
9
  onEnterPressed();
11
10
  }
12
11
  };
13
12
  const renderInputContainer = (type) => {
14
- return (h(LoginInput, { style: { '--field-title-color': fieldTitleColor }, isFocused: type === focusedInput, inputType: type, label: getInputLabel(type), bindReference: bindReference, onIconClicked: () => onIconClicked(type), inputSize: inputAndButtonSize, inputValue: isPresent(getInputValue(type)) ? getInputValue(type) : getDefaultInputValue(type) || '', hasValue: (getInputValue(type) || getDefaultInputValue(type) || '') ? true : false, onShowPassword: onShowPassword, showPassword: showPassword, onInputChanged: (e) => onInputChanged(e, type), onKeyPress: (e) => onKeyPress(e), onInputFocused: () => onInputFocused(type), onInputBlurred: () => onInputBlurred(), clearInput: () => clearInput(type), isMobile: !isWeb(host), isWhitelabel: isWhitelabel }));
13
+ return (h(LoginInput, { style: { '--field-title-color': fieldTitleColor }, isFocused: type === focusedInput, inputType: type, label: getInputLabel(type), bindReference: bindReference, onIconClicked: () => onIconClicked(type), inputSize: inputAndButtonSize, inputValue: isPresent(getInputValue(type)) ? getInputValue(type) : getDefaultInputValue(type) || '', hasValue: getInputValue(type) || getDefaultInputValue(type) || '' ? true : false, onShowPassword: onShowPassword, showPassword: showPassword, onInputChanged: (e) => onInputChanged(e, type), onKeyPress: (e) => onKeyPress(e), onInputFocused: () => onInputFocused(type), onInputBlurred: () => onInputBlurred(), clearInput: () => clearInput(type), isMobile: !isWeb(), isWhitelabel: isWhitelabel }));
15
14
  };
16
- return !ssoOnly
17
- ? h("form", { autoComplete: "on", id: "login-form", novalidate: true, onSubmit: onFormSubmit },
18
- renderInputContainer('username'),
19
- renderInputContainer('password'),
20
- h("div", { class: { 'help-buttons': true, mobile: !isWeb(host) } },
21
- isWeb(host) && magicButtonElement,
22
- helpButtonElement),
23
- h("input", { id: "default-login-button", class: {
24
- [inputAndButtonSize]: true,
25
- mobile: !isWeb(host),
26
- disabled: loginDisabled
27
- }, ref: loginButtonRef, type: "submit", form: "login-form", name: "doLogin", disabled: loginDisabled, value: translate('YOOBICLOGIN'), style: buttonColor && !loginDisabled ? { backgroundColor: buttonColor, color: getContrastColor(buttonColor) } : undefined }))
28
- : h("div", { class: "sso-only-login" }, ssoLoginButtonElement);
15
+ return !ssoOnly ? (h("form", { autoComplete: "on", id: "login-form", novalidate: true, onSubmit: onFormSubmit },
16
+ renderInputContainer('username'),
17
+ renderInputContainer('password'),
18
+ h("div", { class: { 'help-buttons': true, mobile: !isWeb() } },
19
+ isWeb() && magicButtonElement,
20
+ helpButtonElement),
21
+ h("input", { id: "default-login-button", class: {
22
+ [inputAndButtonSize]: true,
23
+ mobile: !isWeb(),
24
+ disabled: loginDisabled
25
+ }, ref: loginButtonRef, type: "submit", form: "login-form", name: "doLogin", disabled: loginDisabled, value: translate('YOOBICLOGIN'), style: buttonColor && !loginDisabled ? { backgroundColor: buttonColor, color: getContrastColor(buttonColor) } : undefined }))) : (h("div", { class: "sso-only-login" }, ssoLoginButtonElement));
29
26
  };
@@ -1,14 +1,14 @@
1
1
  import { isWeb } from '@shared/utils';
2
2
  import { h } from '@stencil/core';
3
3
  import { Divider } from './Divider';
4
- export const LoginOptions = ({ ssoOnly, hideAdvancedLogin, hideGoogleLogin, hasCustomBackground, dividerColor, googleLoginButtonElement, ssoLoginButtonElement, host }) => {
4
+ export const LoginOptions = ({ ssoOnly, hideAdvancedLogin, hideGoogleLogin, hasCustomBackground, dividerColor, googleLoginButtonElement, ssoLoginButtonElement }) => {
5
5
  if (!ssoOnly) {
6
6
  return (h("div", { class: {
7
7
  'login-options': true,
8
8
  'sso-only': ssoOnly,
9
9
  'hide-google-login': hideGoogleLogin,
10
10
  'hide-advanced-login': hideAdvancedLogin,
11
- mobile: !isWeb(host)
11
+ mobile: !isWeb()
12
12
  } },
13
13
  h(Divider, { style: hasCustomBackground ? { '--divider-color': dividerColor } : undefined }),
14
14
  googleLoginButtonElement,