@edm-sdui/sdui 1.0.13 → 1.0.15

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 (82) hide show
  1. package/esm2022/lib/components/uicomponent/button/button.component.mjs +2 -2
  2. package/esm2022/lib/components/uicomponent/image/image.component.mjs +11 -1
  3. package/esm2022/lib/components/uicomponent/label/label.component.mjs +19 -1
  4. package/esm2022/lib/components/uicomponent/profile-button/profile-button.component.mjs +59 -0
  5. package/esm2022/lib/components/uicomponent/progress-bar/progress-bar.component.mjs +42 -0
  6. package/esm2022/lib/components/uicomponent/scrollable-column/scrollable-column.component.mjs +33 -0
  7. package/esm2022/lib/components/uicomponent/scrollable-row/scrollable-row.component.mjs +62 -0
  8. package/esm2022/lib/components/uicomponent/zstack/zstack.component.mjs +3 -3
  9. package/esm2022/lib/core/services/ui-action-handlers.service.mjs +22 -0
  10. package/esm2022/lib/core/services/ui-action.service.mjs +47 -4
  11. package/esm2022/lib/core/services/uiscreen.service.mjs +9 -1
  12. package/esm2022/lib/core/uicomposition/enums/uicomponent-type.mjs +7 -1
  13. package/esm2022/lib/core/uicomposition/mapping/component-mapping.mjs +7 -1
  14. package/esm2022/lib/core/uicomposition/models/uielement.mjs +1 -1
  15. package/esm2022/lib/core/uicomposition/models/uiview.mjs +1 -1
  16. package/esm2022/lib/core/uitheme/enums/uiaction-type.mjs +3 -1
  17. package/esm2022/lib/core/uitheme/enums/uiasset.mjs +14 -1
  18. package/esm2022/lib/core/uitheme/enums/uidimension.mjs +47 -0
  19. package/esm2022/lib/core/uitheme/enums/uijustify.mjs +9 -0
  20. package/esm2022/lib/core/uitheme/enums/uisize.mjs +2 -1
  21. package/esm2022/lib/core/uitheme/enums/uispacing-level.mjs +3 -1
  22. package/esm2022/lib/core/uitheme/mapping/asset-mapping.mjs +14 -1
  23. package/esm2022/lib/core/uitheme/mapping/dimension-mapping.mjs +49 -0
  24. package/esm2022/lib/core/uitheme/mapping/justify-mapping.mjs +9 -0
  25. package/esm2022/lib/core/uitheme/mapping/shadow-mapping.mjs +9 -0
  26. package/esm2022/lib/core/uitheme/mapping/size-mapping.mjs +5 -3
  27. package/esm2022/lib/core/uitheme/mapping/space-mapping.mjs +3 -1
  28. package/esm2022/lib/directives/uiview.directive.mjs +85 -6
  29. package/esm2022/lib/sdui.module.mjs +13 -1
  30. package/esm2022/public-api.mjs +2 -1
  31. package/fesm2022/edm-sdui-sdui.mjs +560 -15
  32. package/fesm2022/edm-sdui-sdui.mjs.map +1 -1
  33. package/lib/components/uicomponent/image/image.component.d.ts.map +1 -1
  34. package/lib/components/uicomponent/label/label.component.d.ts.map +1 -1
  35. package/lib/components/uicomponent/profile-button/profile-button.component.d.ts +21 -0
  36. package/lib/components/uicomponent/profile-button/profile-button.component.d.ts.map +1 -0
  37. package/lib/components/uicomponent/progress-bar/progress-bar.component.d.ts +15 -0
  38. package/lib/components/uicomponent/progress-bar/progress-bar.component.d.ts.map +1 -0
  39. package/lib/components/uicomponent/scrollable-column/scrollable-column.component.d.ts +15 -0
  40. package/lib/components/uicomponent/scrollable-column/scrollable-column.component.d.ts.map +1 -0
  41. package/lib/components/uicomponent/scrollable-row/scrollable-row.component.d.ts +16 -0
  42. package/lib/components/uicomponent/scrollable-row/scrollable-row.component.d.ts.map +1 -0
  43. package/lib/core/services/ui-action-handlers.service.d.ts +9 -0
  44. package/lib/core/services/ui-action-handlers.service.d.ts.map +1 -0
  45. package/lib/core/services/ui-action.service.d.ts +3 -1
  46. package/lib/core/services/ui-action.service.d.ts.map +1 -1
  47. package/lib/core/services/uiscreen.service.d.ts.map +1 -1
  48. package/lib/core/uicomposition/enums/uicomponent-type.d.ts +5 -1
  49. package/lib/core/uicomposition/enums/uicomponent-type.d.ts.map +1 -1
  50. package/lib/core/uicomposition/mapping/component-mapping.d.ts.map +1 -1
  51. package/lib/core/uicomposition/models/uielement.d.ts +3 -0
  52. package/lib/core/uicomposition/models/uielement.d.ts.map +1 -1
  53. package/lib/core/uicomposition/models/uiview.d.ts +8 -0
  54. package/lib/core/uicomposition/models/uiview.d.ts.map +1 -1
  55. package/lib/core/uitheme/enums/uiaction-type.d.ts +2 -0
  56. package/lib/core/uitheme/enums/uiaction-type.d.ts.map +1 -1
  57. package/lib/core/uitheme/enums/uiasset.d.ts +14 -1
  58. package/lib/core/uitheme/enums/uiasset.d.ts.map +1 -1
  59. package/lib/core/uitheme/enums/uidimension.d.ts +46 -0
  60. package/lib/core/uitheme/enums/uidimension.d.ts.map +1 -0
  61. package/lib/core/uitheme/enums/uijustify.d.ts +8 -0
  62. package/lib/core/uitheme/enums/uijustify.d.ts.map +1 -0
  63. package/lib/core/uitheme/enums/uisize.d.ts +1 -0
  64. package/lib/core/uitheme/enums/uisize.d.ts.map +1 -1
  65. package/lib/core/uitheme/enums/uispacing-level.d.ts +3 -1
  66. package/lib/core/uitheme/enums/uispacing-level.d.ts.map +1 -1
  67. package/lib/core/uitheme/mapping/asset-mapping.d.ts.map +1 -1
  68. package/lib/core/uitheme/mapping/dimension-mapping.d.ts +3 -0
  69. package/lib/core/uitheme/mapping/dimension-mapping.d.ts.map +1 -0
  70. package/lib/core/uitheme/mapping/justify-mapping.d.ts +3 -0
  71. package/lib/core/uitheme/mapping/justify-mapping.d.ts.map +1 -0
  72. package/lib/core/uitheme/mapping/shadow-mapping.d.ts +5 -0
  73. package/lib/core/uitheme/mapping/shadow-mapping.d.ts.map +1 -0
  74. package/lib/core/uitheme/mapping/size-mapping.d.ts.map +1 -1
  75. package/lib/core/uitheme/mapping/space-mapping.d.ts.map +1 -1
  76. package/lib/directives/uiview.directive.d.ts +5 -0
  77. package/lib/directives/uiview.directive.d.ts.map +1 -1
  78. package/lib/sdui.module.d.ts +10 -6
  79. package/lib/sdui.module.d.ts.map +1 -1
  80. package/package.json +1 -1
  81. package/public-api.d.ts +1 -0
  82. package/public-api.d.ts.map +1 -1
@@ -21,6 +21,8 @@ var UIComponentType;
21
21
  UIComponentType["ROW_DIVISOR"] = "ROW_DIVISOR";
22
22
  UIComponentType["COLUMN"] = "COLUMN";
23
23
  UIComponentType["Z_STACK"] = "Z_STACK";
24
+ UIComponentType["SCROLLABLE_ROW"] = "SCROLLABLE_ROW";
25
+ UIComponentType["SCROLLABLE_COLUMN"] = "SCROLLABLE_COLUMN";
24
26
  // elements
25
27
  UIComponentType["BUTTON"] = "BUTTON";
26
28
  UIComponentType["LABEL"] = "LABEL";
@@ -40,6 +42,10 @@ var UIComponentType;
40
42
  UIComponentType["PICKER_ITEM"] = "PICKER_ITEM";
41
43
  // tag
42
44
  UIComponentType["TAG"] = "TAG";
45
+ // profile
46
+ UIComponentType["PROFILE_BUTTON"] = "PROFILE_BUTTON";
47
+ // progress bar
48
+ UIComponentType["PROGRESS_BAR"] = "PROGRESS_BAR";
43
49
  })(UIComponentType || (UIComponentType = {}));
44
50
 
45
51
  const SDUI_BASE_URL = new InjectionToken('SDUI_BASE_URL');
@@ -157,6 +163,9 @@ class UIScreenService {
157
163
  placeholder: json.placeholder ?? null,
158
164
  placeholderTextColor: json.placeholder_text_color ?? null,
159
165
  placeholderTextStyle: json.placeholder_text_style ?? null,
166
+ aspectRatio: json.aspect_ratio ?? null,
167
+ progress: json.progress ?? null,
168
+ progressColor: json.progress_color ? json.progress_color : null,
160
169
  ...this.mapToUIView(json),
161
170
  };
162
171
  }
@@ -173,6 +182,11 @@ class UIScreenService {
173
182
  spacing: json.spacing
174
183
  ? { spacing: json.spacing }
175
184
  : null,
185
+ height: json.height ? json.height : null,
186
+ width: json.width ? json.width : null,
187
+ borderWidth: json.border_width ?? null,
188
+ borderColor: json.border_color ? json.border_color : null,
189
+ justify: json.justify ? json.justify : null,
176
190
  };
177
191
  }
178
192
  mapBackground(json) {
@@ -316,6 +330,8 @@ const componentMapping = {
316
330
  [UIComponentType.ROW_DIVISOR]: () => Promise.resolve().then(function () { return rowDivisor_component; }).then((m) => m.RowDivisorComponent),
317
331
  [UIComponentType.COLUMN]: () => Promise.resolve().then(function () { return column_component; }).then((m) => m.ColumnComponent),
318
332
  [UIComponentType.Z_STACK]: () => Promise.resolve().then(function () { return zstack_component; }).then((m) => m.ZStackComponent),
333
+ [UIComponentType.SCROLLABLE_ROW]: () => Promise.resolve().then(function () { return scrollableRow_component; }).then((m) => m.ScrollableRowComponent),
334
+ [UIComponentType.SCROLLABLE_COLUMN]: () => Promise.resolve().then(function () { return scrollableColumn_component; }).then((m) => m.ScrollableColumnComponent),
319
335
  // elementos
320
336
  [UIComponentType.BUTTON]: () => Promise.resolve().then(function () { return button_component; }).then((m) => m.ButtonComponent),
321
337
  [UIComponentType.IMAGE]: () => Promise.resolve().then(function () { return image_component; }).then((m) => m.ImageComponent),
@@ -335,6 +351,10 @@ const componentMapping = {
335
351
  [UIComponentType.PICKER_ITEM]: () => Promise.resolve().then(function () { return pickerItem_component; }).then((m) => m.PickerItemComponent),
336
352
  // tag
337
353
  [UIComponentType.TAG]: () => Promise.resolve().then(function () { return tag_component; }).then((m) => m.TagComponent),
354
+ // profile
355
+ [UIComponentType.PROFILE_BUTTON]: () => Promise.resolve().then(function () { return profileButton_component; }).then((m) => m.ProfileButtonComponent),
356
+ // progress bar
357
+ [UIComponentType.PROGRESS_BAR]: () => Promise.resolve().then(function () { return progressBar_component; }).then((m) => m.ProgressBarComponent),
338
358
  };
339
359
 
340
360
  class UIComponentComponent {
@@ -431,6 +451,8 @@ var UISpacingLevel;
431
451
  UISpacingLevel["S2"] = "s2";
432
452
  UISpacingLevel["S3"] = "s3";
433
453
  UISpacingLevel["S4"] = "s4";
454
+ UISpacingLevel["S5"] = "s5";
455
+ UISpacingLevel["S6"] = "s6";
434
456
  })(UISpacingLevel || (UISpacingLevel = {}));
435
457
 
436
458
  const spaceMapping = {
@@ -438,6 +460,8 @@ const spaceMapping = {
438
460
  [UISpacingLevel.S2]: '8px',
439
461
  [UISpacingLevel.S3]: '16px',
440
462
  [UISpacingLevel.S4]: '24px',
463
+ [UISpacingLevel.S5]: '32px',
464
+ [UISpacingLevel.S6]: '40px',
441
465
  };
442
466
 
443
467
  var UIColor;
@@ -756,12 +780,143 @@ const alignmentMapping = {
756
780
  [UIAlignmentType.START]: 'start',
757
781
  };
758
782
 
783
+ var UIDimension;
784
+ (function (UIDimension) {
785
+ UIDimension["P100"] = "p100";
786
+ UIDimension["P90"] = "p90";
787
+ UIDimension["P80"] = "p80";
788
+ UIDimension["P70"] = "p70";
789
+ UIDimension["P60"] = "p60";
790
+ UIDimension["P50"] = "p50";
791
+ UIDimension["P40"] = "p40";
792
+ UIDimension["P30"] = "p30";
793
+ UIDimension["P20"] = "p20";
794
+ UIDimension["P10"] = "p10";
795
+ UIDimension["D180"] = "d180";
796
+ UIDimension["D150"] = "d150";
797
+ UIDimension["D120"] = "d120";
798
+ UIDimension["D110"] = "d110";
799
+ UIDimension["D100"] = "d100";
800
+ UIDimension["D90"] = "d90";
801
+ UIDimension["D80"] = "d80";
802
+ UIDimension["D72"] = "d72";
803
+ UIDimension["D64"] = "d64";
804
+ UIDimension["D60"] = "d60";
805
+ UIDimension["D56"] = "d56";
806
+ UIDimension["D48"] = "d48";
807
+ UIDimension["D42"] = "d42";
808
+ UIDimension["D40"] = "d40";
809
+ UIDimension["D36"] = "d36";
810
+ UIDimension["D32"] = "d32";
811
+ UIDimension["D30"] = "d30";
812
+ UIDimension["D28"] = "d28";
813
+ UIDimension["D26"] = "d26";
814
+ UIDimension["D24"] = "d24";
815
+ UIDimension["D22"] = "d22";
816
+ UIDimension["D20"] = "d20";
817
+ UIDimension["D18"] = "d18";
818
+ UIDimension["D16"] = "d16";
819
+ UIDimension["D14"] = "d14";
820
+ UIDimension["D12"] = "d12";
821
+ UIDimension["D10"] = "d10";
822
+ UIDimension["D8"] = "d8";
823
+ UIDimension["D5"] = "d5";
824
+ UIDimension["D4"] = "d4";
825
+ UIDimension["D3"] = "d3";
826
+ UIDimension["D2"] = "d2";
827
+ UIDimension["D1"] = "d1";
828
+ })(UIDimension || (UIDimension = {}));
829
+
830
+ const dimensionMapping = {
831
+ // Percentage values
832
+ [UIDimension.P100]: '100%',
833
+ [UIDimension.P90]: '90%',
834
+ [UIDimension.P80]: '80%',
835
+ [UIDimension.P70]: '70%',
836
+ [UIDimension.P60]: '60%',
837
+ [UIDimension.P50]: '50%',
838
+ [UIDimension.P40]: '40%',
839
+ [UIDimension.P30]: '30%',
840
+ [UIDimension.P20]: '20%',
841
+ [UIDimension.P10]: '10%',
842
+ // Pixel values
843
+ [UIDimension.D180]: '180px',
844
+ [UIDimension.D150]: '150px',
845
+ [UIDimension.D120]: '120px',
846
+ [UIDimension.D110]: '110px',
847
+ [UIDimension.D100]: '100px',
848
+ [UIDimension.D90]: '90px',
849
+ [UIDimension.D80]: '80px',
850
+ [UIDimension.D72]: '72px',
851
+ [UIDimension.D64]: '64px',
852
+ [UIDimension.D60]: '60px',
853
+ [UIDimension.D56]: '56px',
854
+ [UIDimension.D48]: '48px',
855
+ [UIDimension.D42]: '42px',
856
+ [UIDimension.D40]: '40px',
857
+ [UIDimension.D36]: '36px',
858
+ [UIDimension.D32]: '32px',
859
+ [UIDimension.D30]: '30px',
860
+ [UIDimension.D28]: '28px',
861
+ [UIDimension.D26]: '26px',
862
+ [UIDimension.D24]: '24px',
863
+ [UIDimension.D22]: '22px',
864
+ [UIDimension.D20]: '20px',
865
+ [UIDimension.D18]: '18px',
866
+ [UIDimension.D16]: '16px',
867
+ [UIDimension.D14]: '14px',
868
+ [UIDimension.D12]: '12px',
869
+ [UIDimension.D10]: '10px',
870
+ [UIDimension.D8]: '8px',
871
+ [UIDimension.D5]: '5px',
872
+ [UIDimension.D4]: '4px',
873
+ [UIDimension.D3]: '3px',
874
+ [UIDimension.D2]: '2px',
875
+ [UIDimension.D1]: '1px',
876
+ };
877
+
878
+ var UIShadowOffset;
879
+ (function (UIShadowOffset) {
880
+ UIShadowOffset["S1"] = "s1";
881
+ })(UIShadowOffset || (UIShadowOffset = {}));
882
+
883
+ var UIShadowBlurRadius;
884
+ (function (UIShadowBlurRadius) {
885
+ UIShadowBlurRadius["B1"] = "b1";
886
+ })(UIShadowBlurRadius || (UIShadowBlurRadius = {}));
887
+
888
+ const shadowOffsetMapping = {
889
+ [UIShadowOffset.S1]: '1px',
890
+ };
891
+ const shadowBlurRadiusMapping = {
892
+ [UIShadowBlurRadius.B1]: '3px',
893
+ };
894
+
895
+ var UIJustify;
896
+ (function (UIJustify) {
897
+ UIJustify["START"] = "start";
898
+ UIJustify["CENTER"] = "center";
899
+ UIJustify["END"] = "end";
900
+ UIJustify["BETWEEN"] = "space-between";
901
+ UIJustify["EVENLY"] = "space-evenly";
902
+ })(UIJustify || (UIJustify = {}));
903
+
904
+ const justifyMapping = {
905
+ [UIJustify.START]: 'flex-start',
906
+ [UIJustify.CENTER]: 'center',
907
+ [UIJustify.END]: 'flex-end',
908
+ [UIJustify.BETWEEN]: 'space-between',
909
+ [UIJustify.EVENLY]: 'space-evenly',
910
+ };
911
+
759
912
  var UIActionType;
760
913
  (function (UIActionType) {
761
914
  // navegação
762
915
  UIActionType["INTERNAL_URL"] = "INTERNAL_URL";
763
916
  UIActionType["RELOAD_INTERNAL_URL"] = "RELOAD_INTERNAL_URL";
764
917
  UIActionType["DISMISS_TO_SCENE"] = "DISMISS_TO_SCENE";
918
+ UIActionType["EXTERNAL_URL"] = "EXTERNAL_URL";
919
+ UIActionType["WEBVIEW_URL"] = "WEBVIEW_URL";
765
920
  // paywall
766
921
  UIActionType["PAYWALL"] = "PAYWALL";
767
922
  UIActionType["REGISTER"] = "REGISTER";
@@ -770,9 +925,30 @@ var UIActionType;
770
925
  UIActionType["FILE"] = "FILE";
771
926
  })(UIActionType || (UIActionType = {}));
772
927
 
928
+ class UIActionHandlersService {
929
+ registerLogout(handler) {
930
+ this.logoutHandler = handler;
931
+ }
932
+ executeLogout() {
933
+ if (this.logoutHandler) {
934
+ this.logoutHandler();
935
+ }
936
+ else {
937
+ console.warn('Nenhum handler de logout registrado.');
938
+ }
939
+ }
940
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UIActionHandlersService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
941
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UIActionHandlersService, providedIn: 'root' }); }
942
+ }
943
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UIActionHandlersService, decorators: [{
944
+ type: Injectable,
945
+ args: [{ providedIn: 'root' }]
946
+ }] });
947
+
773
948
  class UIActionService {
774
- constructor(router) {
949
+ constructor(router, actionHandlers) {
775
950
  this.router = router;
951
+ this.actionHandlers = actionHandlers;
776
952
  }
777
953
  execute(action) {
778
954
  if (!action || !action.type)
@@ -806,6 +982,10 @@ class UIActionService {
806
982
  }
807
983
  }
808
984
  break;
985
+ case UIActionType.EXTERNAL_URL:
986
+ if (action.url) {
987
+ window.open(action.url, '_blank');
988
+ }
809
989
  // Outros tipos de ação podem ser adicionados aqui
810
990
  }
811
991
  }
@@ -838,15 +1018,51 @@ class UIActionService {
838
1018
  this.router.navigate(['comunidade', 'postagem', postId], { queryParams: { from: 'sdui' } });
839
1019
  return true;
840
1020
  }
1021
+ if (url.includes('my-purchases')) {
1022
+ this.router.navigate(['perfil', 'compras'], { queryParams: { from: 'sdui' } });
1023
+ return true;
1024
+ }
1025
+ if (url.includes('my-annotations')) {
1026
+ this.router.navigate(['perfil', 'meu-caderno'], { queryParams: { from: 'sdui' } });
1027
+ return true;
1028
+ }
1029
+ if (url.includes('my-list')) {
1030
+ this.router.navigate(['perfil', 'minha-lista'], { queryParams: { from: 'sdui' } });
1031
+ return true;
1032
+ }
1033
+ if (url.includes('my-certificates')) {
1034
+ this.router.navigate(['perfil', 'certificados'], { queryParams: { from: 'sdui' } });
1035
+ return true;
1036
+ }
1037
+ if (url.includes('my-subscriptions')) {
1038
+ this.router.navigate(['perfil', 'assinaturas'], { queryParams: { from: 'sdui' } });
1039
+ return true;
1040
+ }
1041
+ if (url.includes('edit-profile')) {
1042
+ this.router.navigate(['perfil', 'editar'], { queryParams: { from: 'sdui' } });
1043
+ return true;
1044
+ }
1045
+ if (url.includes('ranking')) {
1046
+ this.router.navigate(['perfil', 'ranking'], { queryParams: { from: 'sdui' } });
1047
+ return true;
1048
+ }
1049
+ if (url.includes('ranking/rules')) {
1050
+ this.router.navigate(['perfil', 'ranking', 'regras'], { queryParams: { from: 'sdui' } });
1051
+ return true;
1052
+ }
1053
+ if (url.includes('logout')) {
1054
+ this.router.navigate(['logout'], { queryParams: { from: 'sdui' } });
1055
+ return true;
1056
+ }
841
1057
  return false; // nenhum dos casos especiais foi tratado
842
1058
  }
843
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UIActionService, deps: [{ token: i1$2.Router }], target: i0.ɵɵFactoryTarget.Injectable }); }
1059
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UIActionService, deps: [{ token: i1$2.Router }, { token: UIActionHandlersService }], target: i0.ɵɵFactoryTarget.Injectable }); }
844
1060
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UIActionService, providedIn: 'root' }); }
845
1061
  }
846
1062
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UIActionService, decorators: [{
847
1063
  type: Injectable,
848
1064
  args: [{ providedIn: 'root' }]
849
- }], ctorParameters: () => [{ type: i1$2.Router }] });
1065
+ }], ctorParameters: () => [{ type: i1$2.Router }, { type: UIActionHandlersService }] });
850
1066
 
851
1067
  class UIViewDirective {
852
1068
  constructor(elementRef, renderer, router, actionService, screenViewModel) {
@@ -884,23 +1100,38 @@ class UIViewDirective {
884
1100
  if (uiView.spacing) {
885
1101
  this.applySpacing(uiView.spacing);
886
1102
  }
1103
+ if (uiView.height) {
1104
+ this.applyHeight(uiView.height);
1105
+ }
1106
+ if (uiView.width) {
1107
+ this.applyWidth(uiView.width);
1108
+ }
1109
+ if (uiView.borderWidth) {
1110
+ this.applyBorderWidth(uiView.borderWidth);
1111
+ }
1112
+ if (uiView.borderColor) {
1113
+ this.applyBorderColor(uiView.borderColor);
1114
+ }
1115
+ if (uiView.justify) {
1116
+ this.applyJustify(uiView.justify);
1117
+ }
887
1118
  }
888
1119
  applyPadding(uiPadding) {
889
1120
  if (uiPadding.top) {
890
1121
  const padValue = padMapping[uiPadding.top];
891
- this.renderer.setStyle(this.elementRef.nativeElement, 'margin-top', padValue);
1122
+ this.renderer.setStyle(this.elementRef.nativeElement, 'padding-top', padValue);
892
1123
  }
893
1124
  if (uiPadding.left) {
894
1125
  const padValue = padMapping[uiPadding.left];
895
- this.renderer.setStyle(this.elementRef.nativeElement, 'margin-left', padValue);
1126
+ this.renderer.setStyle(this.elementRef.nativeElement, 'padding-left', padValue);
896
1127
  }
897
1128
  if (uiPadding.right) {
898
1129
  const padValue = padMapping[uiPadding.right];
899
- this.renderer.setStyle(this.elementRef.nativeElement, 'margin-right', padValue);
1130
+ this.renderer.setStyle(this.elementRef.nativeElement, 'padding-right', padValue);
900
1131
  }
901
1132
  if (uiPadding.bottom) {
902
1133
  const padValue = padMapping[uiPadding.bottom];
903
- this.renderer.setStyle(this.elementRef.nativeElement, 'margin-bottom', padValue);
1134
+ this.renderer.setStyle(this.elementRef.nativeElement, 'padding-bottom', padValue);
904
1135
  }
905
1136
  }
906
1137
  applyBackground(uiBackground) {
@@ -922,24 +1153,53 @@ class UIViewDirective {
922
1153
  this.renderer.setStyle(this.elementRef.nativeElement, 'align-items', alignment);
923
1154
  }
924
1155
  }
925
- applyShadow(uiShadow) { }
1156
+ applyShadow(uiShadow) {
1157
+ if (uiShadow.color && uiShadow.offsetX && uiShadow.offsetY && uiShadow.blurRadius) {
1158
+ const color = colorMapping[uiShadow.color];
1159
+ const offsetX = shadowOffsetMapping[uiShadow.offsetX];
1160
+ const offsetY = shadowOffsetMapping[uiShadow.offsetY];
1161
+ const blurRadius = shadowBlurRadiusMapping[uiShadow.blurRadius];
1162
+ const opacity = uiShadow.opacity !== undefined ? uiShadow.opacity : 1;
1163
+ // Format: box-shadow: offsetX offsetY blurRadius color
1164
+ const shadowValue = `${offsetX} ${offsetY} ${blurRadius} ${color}`;
1165
+ this.renderer.setStyle(this.elementRef.nativeElement, 'box-shadow', shadowValue);
1166
+ if (opacity !== 1) {
1167
+ this.renderer.setStyle(this.elementRef.nativeElement, 'opacity', opacity.toString());
1168
+ }
1169
+ }
1170
+ }
926
1171
  applyRadius(uiRadius) {
1172
+ let circle = false;
927
1173
  if (uiRadius.topLeft) {
928
1174
  const radius = radiusMapping[uiRadius.topLeft];
1175
+ if (uiRadius.topLeft === UIRadiusLevel.R50) {
1176
+ circle = true;
1177
+ }
929
1178
  this.renderer.setStyle(this.elementRef.nativeElement, 'border-top-left-radius', radius);
930
1179
  }
931
1180
  if (uiRadius.topRight) {
932
1181
  const radius = radiusMapping[uiRadius.topRight];
1182
+ if (uiRadius.topRight === UIRadiusLevel.R50) {
1183
+ circle = true;
1184
+ }
933
1185
  this.renderer.setStyle(this.elementRef.nativeElement, 'border-top-right-radius', radius);
934
1186
  }
935
1187
  if (uiRadius.bottomLeft) {
936
1188
  const radius = radiusMapping[uiRadius.bottomLeft];
1189
+ if (uiRadius.bottomLeft === UIRadiusLevel.R50) {
1190
+ circle = true;
1191
+ }
937
1192
  this.renderer.setStyle(this.elementRef.nativeElement, 'border-bottom-left-radius', radius);
938
1193
  }
939
1194
  if (uiRadius.bottomRight) {
940
1195
  const radius = radiusMapping[uiRadius.bottomRight];
1196
+ if (uiRadius.bottomRight === UIRadiusLevel.R50) {
1197
+ circle = true;
1198
+ }
941
1199
  this.renderer.setStyle(this.elementRef.nativeElement, 'border-bottom-right-radius', radius);
942
1200
  }
1201
+ if (!circle)
1202
+ this.renderer.setStyle(this.elementRef.nativeElement, 'overflow', 'hidden');
943
1203
  }
944
1204
  applySpacing(uiSpacing) {
945
1205
  if (uiSpacing.spacing) {
@@ -947,6 +1207,37 @@ class UIViewDirective {
947
1207
  this.renderer.setStyle(this.elementRef.nativeElement, 'gap', spacingValue);
948
1208
  }
949
1209
  }
1210
+ applyHeight(height) {
1211
+ if (height) {
1212
+ const heightValue = dimensionMapping[height];
1213
+ this.renderer.setStyle(this.elementRef.nativeElement, 'height', heightValue);
1214
+ }
1215
+ }
1216
+ applyWidth(width) {
1217
+ if (width) {
1218
+ const widthValue = dimensionMapping[width];
1219
+ this.renderer.setStyle(this.elementRef.nativeElement, 'width', widthValue);
1220
+ }
1221
+ }
1222
+ applyBorderWidth(borderWidth) {
1223
+ if (borderWidth !== null && borderWidth !== undefined) {
1224
+ this.renderer.setStyle(this.elementRef.nativeElement, 'border-width', `${borderWidth}px`);
1225
+ // Ensure border style is set, otherwise border-width won't be visible
1226
+ this.renderer.setStyle(this.elementRef.nativeElement, 'border-style', 'solid');
1227
+ }
1228
+ }
1229
+ applyBorderColor(borderColor) {
1230
+ if (borderColor) {
1231
+ const color = colorMapping[borderColor];
1232
+ this.renderer.setStyle(this.elementRef.nativeElement, 'border-color', color);
1233
+ }
1234
+ }
1235
+ applyJustify(justify) {
1236
+ if (justify) {
1237
+ const justifyValue = justifyMapping[justify];
1238
+ this.renderer.setStyle(this.elementRef.nativeElement, 'justify-content', justifyValue);
1239
+ }
1240
+ }
950
1241
  onClick(event) {
951
1242
  if (this.disableClick)
952
1243
  return;
@@ -1168,6 +1459,23 @@ class LabelComponent {
1168
1459
  const opacity = element.opacity;
1169
1460
  this.renderer.setStyle(this.spanElementRef.nativeElement, 'opacity', opacity);
1170
1461
  }
1462
+ if (element.alignment) {
1463
+ const alignment = element.alignment.alignment;
1464
+ switch (alignment) {
1465
+ case UIAlignmentType.START: {
1466
+ this.renderer.setStyle(this.spanElementRef.nativeElement, 'text-align', 'left');
1467
+ break;
1468
+ }
1469
+ case UIAlignmentType.CENTER: {
1470
+ this.renderer.setStyle(this.spanElementRef.nativeElement, 'text-align', 'center');
1471
+ break;
1472
+ }
1473
+ case UIAlignmentType.END: {
1474
+ this.renderer.setStyle(this.spanElementRef.nativeElement, 'text-align', 'right');
1475
+ break;
1476
+ }
1477
+ }
1478
+ }
1171
1479
  }
1172
1480
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LabelComponent, deps: [{ token: 'uiComponent' }, { token: i0.Renderer2 }, { token: FontSizeMappingService }], target: i0.ɵɵFactoryTarget.Component }); }
1173
1481
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: LabelComponent, selector: "edm-sdui-label", viewQueries: [{ propertyName: "spanElementRef", first: true, predicate: ["spanElement"], descendants: true }], ngImport: i0, template: "<span #spanElement [edmSduiView]=\"uiComponent.element\" *ngIf=\"uiComponent\">{{\n uiComponent.element?.label ?? \"\"\n}}</span>\n", styles: [":host{display:contents}\n"], dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: UIViewDirective, selector: "[edmSduiView]", inputs: ["edmSduiView", "disableClick"] }] }); }
@@ -1219,11 +1527,11 @@ class ZStackComponent {
1219
1527
  // console.debug('zstack.uiComponent: ', this.uiComponent);
1220
1528
  }
1221
1529
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ZStackComponent, deps: [{ token: 'uiComponent' }], target: i0.ɵɵFactoryTarget.Component }); }
1222
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ZStackComponent, selector: "edm-sdui-zstack", ngImport: i0, template: "<div class=\"zstack\" *ngIf=\"uiComponent\" [edmSduiView]=\"uiComponent.element\">\n <edm-sdui-component\n *ngFor=\"let child of uiComponent.components\"\n [uiComponent]=\"child\"\n ></edm-sdui-component>\n</div>\n", styles: [":host{display:contents}.zstack{display:grid;place-items:center}.zstack>*{grid-area:1/1}\n"], dependencies: [{ kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: UIComponentComponent, selector: "edm-sdui-component", inputs: ["uiComponent", "translateLabel"] }, { kind: "directive", type: UIViewDirective, selector: "[edmSduiView]", inputs: ["edmSduiView", "disableClick"] }] }); }
1530
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ZStackComponent, selector: "edm-sdui-zstack", ngImport: i0, template: "<div #zstackElementRef class=\"zstack\" *ngIf=\"uiComponent\" [edmSduiView]=\"uiComponent.element\">\n <ng-container *ngFor=\"let child of uiComponent.components\">\n <div class=\"zstack-child\">\n <edm-sdui-component [uiComponent]=\"child\"></edm-sdui-component>\n </div>\n </ng-container>\n</div>\n", styles: [":host{display:contents}.zstack{display:grid}.zstack-child{grid-area:1/1;display:flex;align-items:center}\n"], dependencies: [{ kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: UIComponentComponent, selector: "edm-sdui-component", inputs: ["uiComponent", "translateLabel"] }, { kind: "directive", type: UIViewDirective, selector: "[edmSduiView]", inputs: ["edmSduiView", "disableClick"] }] }); }
1223
1531
  }
1224
1532
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ZStackComponent, decorators: [{
1225
1533
  type: Component,
1226
- args: [{ selector: 'edm-sdui-zstack', standalone: false, template: "<div class=\"zstack\" *ngIf=\"uiComponent\" [edmSduiView]=\"uiComponent.element\">\n <edm-sdui-component\n *ngFor=\"let child of uiComponent.components\"\n [uiComponent]=\"child\"\n ></edm-sdui-component>\n</div>\n", styles: [":host{display:contents}.zstack{display:grid;place-items:center}.zstack>*{grid-area:1/1}\n"] }]
1534
+ args: [{ selector: 'edm-sdui-zstack', standalone: false, template: "<div #zstackElementRef class=\"zstack\" *ngIf=\"uiComponent\" [edmSduiView]=\"uiComponent.element\">\n <ng-container *ngFor=\"let child of uiComponent.components\">\n <div class=\"zstack-child\">\n <edm-sdui-component [uiComponent]=\"child\"></edm-sdui-component>\n </div>\n </ng-container>\n</div>\n", styles: [":host{display:contents}.zstack{display:grid}.zstack-child{grid-area:1/1;display:flex;align-items:center}\n"] }]
1227
1535
  }], ctorParameters: () => [{ type: undefined, decorators: [{
1228
1536
  type: Inject,
1229
1537
  args: ['uiComponent']
@@ -1610,6 +1918,19 @@ var UIAsset;
1610
1918
  UIAsset["WAY_TASK_ON"] = "way_task_on";
1611
1919
  UIAsset["WAY_TWO_OFF"] = "way_two_off";
1612
1920
  UIAsset["WAY_TWO_ON"] = "way_two_on";
1921
+ UIAsset["BT_SUPPORT_IA"] = "bt_support_ia";
1922
+ UIAsset["IC_CHECK_PROFILE"] = "ic_check_profile";
1923
+ UIAsset["IC_DAYS_PROFILE"] = "ic_days_profile";
1924
+ UIAsset["IC_DOWNLOAD_PROFILE"] = "ic_download_profile";
1925
+ UIAsset["IC_HOUR_PROFILE"] = "ic_hour_profile";
1926
+ UIAsset["IC_LINK_GENERIC_PROFILE"] = "ic_link_generic_profile";
1927
+ UIAsset["IC_NOTIFICATION_PROFILE_OFF"] = "ic_notification_profile_off";
1928
+ UIAsset["IC_NOTIFICATION_PROFILE_ON"] = "ic_notification_profile_on";
1929
+ UIAsset["IC_POST_SAVE_MY_APP"] = "ic_post_save_my_app";
1930
+ UIAsset["IC_RANKING_PTS"] = "ic_ranking_pts";
1931
+ UIAsset["IC_RANKING_RANKING"] = "ic_ranking_ranking";
1932
+ UIAsset["BT_NEXT_PROFILE"] = "bt_next_profile";
1933
+ UIAsset["IC_SUPPORT_PROFILE"] = "ic_support_profile";
1613
1934
  })(UIAsset || (UIAsset = {}));
1614
1935
 
1615
1936
  const assetMapping = {
@@ -1964,6 +2285,19 @@ const assetMapping = {
1964
2285
  [UIAsset.IC_LIKE_SEARCH_LIST]: 'assets/images/ic-like-search-list.svg',
1965
2286
  [UIAsset.IC_SHARE_SEARCH_LIST]: 'assets/images/ic-share-search-list.svg',
1966
2287
  [UIAsset.IC_LAST_SEARCH]: 'assets/images/ic-last-search.svg',
2288
+ [UIAsset.BT_SUPPORT_IA]: 'assets/images/bt-support-ia.svg',
2289
+ [UIAsset.IC_CHECK_PROFILE]: 'assets/images/ic-check-profile.svg',
2290
+ [UIAsset.IC_DAYS_PROFILE]: 'assets/images/ic-days-profile.svg',
2291
+ [UIAsset.IC_DOWNLOAD_PROFILE]: 'assets/images/ic-download-profile.svg',
2292
+ [UIAsset.IC_HOUR_PROFILE]: 'assets/images/ic-hour-profile.svg',
2293
+ [UIAsset.IC_LINK_GENERIC_PROFILE]: 'assets/images/ic-link-generic-profile.svg',
2294
+ [UIAsset.IC_NOTIFICATION_PROFILE_OFF]: 'assets/images/ic-notification-profile-off.svg',
2295
+ [UIAsset.IC_NOTIFICATION_PROFILE_ON]: 'assets/images/ic-notification-profile-on.svg',
2296
+ [UIAsset.IC_POST_SAVE_MY_APP]: 'assets/images/ic-post-save-my-app.svg',
2297
+ [UIAsset.IC_RANKING_PTS]: 'assets/images/ic-ranking-pts.svg',
2298
+ [UIAsset.IC_RANKING_RANKING]: 'assets/images/ic-ranking-ranking.svg',
2299
+ [UIAsset.BT_NEXT_PROFILE]: 'assets/images/bt-next-profile.svg',
2300
+ [UIAsset.IC_SUPPORT_PROFILE]: 'assets/images/ic-support-profile.svg',
1967
2301
  };
1968
2302
 
1969
2303
  class ButtonComponent {
@@ -1995,11 +2329,11 @@ class ButtonComponent {
1995
2329
  return assetMapping[asset];
1996
2330
  }
1997
2331
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ButtonComponent, deps: [{ token: 'uiComponent' }, { token: i0.Renderer2 }, { token: FontSizeMappingService }], target: i0.ɵɵFactoryTarget.Component }); }
1998
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ButtonComponent, selector: "edm-sdui-button", viewQueries: [{ propertyName: "buttonElementRef", first: true, predicate: ["buttonElement"], descendants: true }], ngImport: i0, template: "<button #buttonElement [edmSduiView]=\"uiComponent.element\" *ngIf=\"uiComponent\">\n <img *ngIf=\"uiComponent.element.asset\" [src]=\"getAssetPath(uiComponent.element.asset)\" alt=\"\">\n {{ uiComponent.element.label }}\n</button>\n", styles: [":host{display:contents}button{border:none;white-space:nowrap;line-height:1.5;background-color:unset}\n"], dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: UIViewDirective, selector: "[edmSduiView]", inputs: ["edmSduiView", "disableClick"] }] }); }
2332
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ButtonComponent, selector: "edm-sdui-button", viewQueries: [{ propertyName: "buttonElementRef", first: true, predicate: ["buttonElement"], descendants: true }], ngImport: i0, template: "<button #buttonElement [edmSduiView]=\"uiComponent.element\" *ngIf=\"uiComponent\">\n <img *ngIf=\"uiComponent.element.asset\" [src]=\"getAssetPath(uiComponent.element.asset)\" alt=\"\">\n {{ uiComponent.element.label }}\n</button>\n", styles: [":host{display:contents}button{border:none;white-space:nowrap;background-color:unset}\n"], dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: UIViewDirective, selector: "[edmSduiView]", inputs: ["edmSduiView", "disableClick"] }] }); }
1999
2333
  }
2000
2334
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ButtonComponent, decorators: [{
2001
2335
  type: Component,
2002
- args: [{ selector: 'edm-sdui-button', standalone: false, template: "<button #buttonElement [edmSduiView]=\"uiComponent.element\" *ngIf=\"uiComponent\">\n <img *ngIf=\"uiComponent.element.asset\" [src]=\"getAssetPath(uiComponent.element.asset)\" alt=\"\">\n {{ uiComponent.element.label }}\n</button>\n", styles: [":host{display:contents}button{border:none;white-space:nowrap;line-height:1.5;background-color:unset}\n"] }]
2336
+ args: [{ selector: 'edm-sdui-button', standalone: false, template: "<button #buttonElement [edmSduiView]=\"uiComponent.element\" *ngIf=\"uiComponent\">\n <img *ngIf=\"uiComponent.element.asset\" [src]=\"getAssetPath(uiComponent.element.asset)\" alt=\"\">\n {{ uiComponent.element.label }}\n</button>\n", styles: [":host{display:contents}button{border:none;white-space:nowrap;background-color:unset}\n"] }]
2003
2337
  }], ctorParameters: () => [{ type: undefined, decorators: [{
2004
2338
  type: Inject,
2005
2339
  args: ['uiComponent']
@@ -2016,6 +2350,7 @@ var button_component = /*#__PURE__*/Object.freeze({
2016
2350
  var UISize;
2017
2351
  (function (UISize) {
2018
2352
  UISize["THUMB_1"] = "thumb_1";
2353
+ UISize["THUMB_2"] = "thumb_2";
2019
2354
  UISize["ASSET_1"] = "asset_1";
2020
2355
  UISize["ASSET_2"] = "asset_2";
2021
2356
  UISize["ASSET_3"] = "asset_3";
@@ -2027,10 +2362,11 @@ var UISize;
2027
2362
  })(UISize || (UISize = {}));
2028
2363
 
2029
2364
  const sizeMappingHeight = {
2365
+ [UISize.THUMB_1]: '56px',
2366
+ [UISize.THUMB_2]: '40px',
2030
2367
  [UISize.ASSET_1]: '26px',
2031
2368
  [UISize.ASSET_2]: '16px',
2032
2369
  [UISize.ASSET_3]: '80px',
2033
- [UISize.THUMB_1]: '56px',
2034
2370
  [UISize.ASSET_4]: '60px',
2035
2371
  [UISize.ASSET_5]: '18px',
2036
2372
  [UISize.ASSET_6]: '20px',
@@ -2038,10 +2374,11 @@ const sizeMappingHeight = {
2038
2374
  [UISize.ASSET_8]: '24px',
2039
2375
  };
2040
2376
  const sizeMappingWidth = {
2377
+ [UISize.THUMB_1]: '100px',
2378
+ [UISize.THUMB_2]: '105px',
2041
2379
  [UISize.ASSET_1]: '26px',
2042
2380
  [UISize.ASSET_2]: '16px',
2043
2381
  [UISize.ASSET_3]: '80px',
2044
- [UISize.THUMB_1]: '100px',
2045
2382
  [UISize.ASSET_4]: '60px',
2046
2383
  [UISize.ASSET_5]: '18px',
2047
2384
  [UISize.ASSET_6]: '20px',
@@ -2073,6 +2410,15 @@ class ImageComponent {
2073
2410
  const width = sizeMappingWidth[element.size];
2074
2411
  this.renderer.setStyle(this.imgElementRef.nativeElement, 'height', height);
2075
2412
  this.renderer.setStyle(this.imgElementRef.nativeElement, 'width', width);
2413
+ if (element.size === UISize.THUMB_2) {
2414
+ this.renderer.setStyle(this.imgElementRef.nativeElement, 'object-fit', 'contain');
2415
+ }
2416
+ }
2417
+ if (element.aspect) {
2418
+ this.renderer.setStyle(this.imgElementRef.nativeElement, 'object-fit', element.aspect);
2419
+ }
2420
+ if (element.aspectRatio) {
2421
+ this.renderer.setStyle(this.imgElementRef.nativeElement, 'aspect-ratio', element.aspectRatio);
2076
2422
  }
2077
2423
  }
2078
2424
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ImageComponent, deps: [{ token: 'uiComponent' }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component }); }
@@ -2655,6 +3001,197 @@ var picker_component = /*#__PURE__*/Object.freeze({
2655
3001
  PickerComponent: PickerComponent
2656
3002
  });
2657
3003
 
3004
+ class ScrollableRowComponent {
3005
+ constructor(uiComponent, renderer) {
3006
+ this.uiComponent = uiComponent;
3007
+ this.renderer = renderer;
3008
+ }
3009
+ ngOnInit() {
3010
+ }
3011
+ ngAfterViewInit() {
3012
+ if (this.uiComponent.element) {
3013
+ this.applyElement(this.uiComponent.element);
3014
+ }
3015
+ this.scroll();
3016
+ }
3017
+ applyElement(element) {
3018
+ }
3019
+ scroll() {
3020
+ const scrollContainer = this.scrollableRowElementRef.nativeElement;
3021
+ let isDown = false;
3022
+ let startX = 0;
3023
+ let scrollLeft = 0;
3024
+ this.renderer.listen(scrollContainer, 'mousedown', (e) => {
3025
+ isDown = true;
3026
+ scrollContainer.classList.add('scrolling');
3027
+ startX = e.pageX - scrollContainer.offsetLeft;
3028
+ scrollLeft = scrollContainer.scrollLeft;
3029
+ });
3030
+ this.renderer.listen(scrollContainer, 'mouseleave', () => {
3031
+ isDown = false;
3032
+ scrollContainer.classList.remove('scrolling');
3033
+ });
3034
+ this.renderer.listen(scrollContainer, 'mouseup', () => {
3035
+ isDown = false;
3036
+ scrollContainer.classList.remove('scrolling');
3037
+ });
3038
+ this.renderer.listen(scrollContainer, 'mousemove', (e) => {
3039
+ if (!isDown)
3040
+ return;
3041
+ e.preventDefault();
3042
+ const x = e.pageX - scrollContainer.offsetLeft;
3043
+ const walk = (x - startX) * 1.5;
3044
+ scrollContainer.scrollLeft = scrollLeft - walk;
3045
+ });
3046
+ }
3047
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ScrollableRowComponent, deps: [{ token: 'uiComponent' }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component }); }
3048
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ScrollableRowComponent, selector: "edm-sdui-scrollable-row", viewQueries: [{ propertyName: "scrollableRowElementRef", first: true, predicate: ["scrollableRowElement"], descendants: true }], ngImport: i0, template: "<div\n #scrollableRowElement\n [edmSduiView]=\"uiComponent.element\"\n class=\"scrollable-row\"\n *ngIf=\"uiComponent\"\n>\n <edm-sdui-component\n *ngFor=\"let component of uiComponent.components\"\n [uiComponent]=\"component\"\n >\n </edm-sdui-component>\n</div>\n", styles: [":host{display:contents}.scrollable-row{display:flex;flex-direction:row;overflow-x:auto;overflow-y:hidden;white-space:nowrap;width:100%;-webkit-overflow-scrolling:touch;scrollbar-width:none;cursor:pointer}.scrollable-row::-webkit-scrollbar{display:none}.scrollable-row>*{flex-shrink:0}\n"], dependencies: [{ kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: UIComponentComponent, selector: "edm-sdui-component", inputs: ["uiComponent", "translateLabel"] }, { kind: "directive", type: UIViewDirective, selector: "[edmSduiView]", inputs: ["edmSduiView", "disableClick"] }] }); }
3049
+ }
3050
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ScrollableRowComponent, decorators: [{
3051
+ type: Component,
3052
+ args: [{ selector: 'edm-sdui-scrollable-row', standalone: false, template: "<div\n #scrollableRowElement\n [edmSduiView]=\"uiComponent.element\"\n class=\"scrollable-row\"\n *ngIf=\"uiComponent\"\n>\n <edm-sdui-component\n *ngFor=\"let component of uiComponent.components\"\n [uiComponent]=\"component\"\n >\n </edm-sdui-component>\n</div>\n", styles: [":host{display:contents}.scrollable-row{display:flex;flex-direction:row;overflow-x:auto;overflow-y:hidden;white-space:nowrap;width:100%;-webkit-overflow-scrolling:touch;scrollbar-width:none;cursor:pointer}.scrollable-row::-webkit-scrollbar{display:none}.scrollable-row>*{flex-shrink:0}\n"] }]
3053
+ }], ctorParameters: () => [{ type: undefined, decorators: [{
3054
+ type: Inject,
3055
+ args: ['uiComponent']
3056
+ }] }, { type: i0.Renderer2 }], propDecorators: { scrollableRowElementRef: [{
3057
+ type: ViewChild,
3058
+ args: ['scrollableRowElement']
3059
+ }] } });
3060
+
3061
+ var scrollableRow_component = /*#__PURE__*/Object.freeze({
3062
+ __proto__: null,
3063
+ ScrollableRowComponent: ScrollableRowComponent
3064
+ });
3065
+
3066
+ class ScrollableColumnComponent {
3067
+ constructor(uiComponent, renderer) {
3068
+ this.uiComponent = uiComponent;
3069
+ this.renderer = renderer;
3070
+ }
3071
+ ngOnInit() {
3072
+ }
3073
+ ngAfterViewInit() {
3074
+ if (this.uiComponent.element) {
3075
+ this.applyElement(this.uiComponent.element);
3076
+ }
3077
+ }
3078
+ applyElement(element) {
3079
+ }
3080
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ScrollableColumnComponent, deps: [{ token: 'uiComponent' }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component }); }
3081
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ScrollableColumnComponent, selector: "edm-sdui-scrollable-column", viewQueries: [{ propertyName: "scrollableColumnElementRef", first: true, predicate: ["scrollableColumnElement"], descendants: true }], ngImport: i0, template: "<div\n #scrollableColumnElement\n [edmSduiView]=\"uiComponent.element\"\n class=\"scrollable-column\"\n *ngIf=\"uiComponent\"\n>\n <edm-sdui-component\n *ngFor=\"let component of uiComponent.components\"\n [uiComponent]=\"component\"\n >\n </edm-sdui-component>\n</div>\n", styles: [":host{display:contents}.scrollable-column{display:flex;flex-direction:column;overflow-y:auto;overflow-x:hidden;height:100%;width:100%;-webkit-overflow-scrolling:touch;scrollbar-width:none}.scrollable-column::-webkit-scrollbar{display:none}.scrollable-column>*{flex-shrink:0}\n"], dependencies: [{ kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: UIComponentComponent, selector: "edm-sdui-component", inputs: ["uiComponent", "translateLabel"] }, { kind: "directive", type: UIViewDirective, selector: "[edmSduiView]", inputs: ["edmSduiView", "disableClick"] }] }); }
3082
+ }
3083
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ScrollableColumnComponent, decorators: [{
3084
+ type: Component,
3085
+ args: [{ selector: 'edm-sdui-scrollable-column', standalone: false, template: "<div\n #scrollableColumnElement\n [edmSduiView]=\"uiComponent.element\"\n class=\"scrollable-column\"\n *ngIf=\"uiComponent\"\n>\n <edm-sdui-component\n *ngFor=\"let component of uiComponent.components\"\n [uiComponent]=\"component\"\n >\n </edm-sdui-component>\n</div>\n", styles: [":host{display:contents}.scrollable-column{display:flex;flex-direction:column;overflow-y:auto;overflow-x:hidden;height:100%;width:100%;-webkit-overflow-scrolling:touch;scrollbar-width:none}.scrollable-column::-webkit-scrollbar{display:none}.scrollable-column>*{flex-shrink:0}\n"] }]
3086
+ }], ctorParameters: () => [{ type: undefined, decorators: [{
3087
+ type: Inject,
3088
+ args: ['uiComponent']
3089
+ }] }, { type: i0.Renderer2 }], propDecorators: { scrollableColumnElementRef: [{
3090
+ type: ViewChild,
3091
+ args: ['scrollableColumnElement']
3092
+ }] } });
3093
+
3094
+ var scrollableColumn_component = /*#__PURE__*/Object.freeze({
3095
+ __proto__: null,
3096
+ ScrollableColumnComponent: ScrollableColumnComponent
3097
+ });
3098
+
3099
+ class ProfileButtonComponent {
3100
+ constructor(uiComponent, renderer, fontSizeMappingService) {
3101
+ this.uiComponent = uiComponent;
3102
+ this.renderer = renderer;
3103
+ this.fontSizeMappingService = fontSizeMappingService;
3104
+ }
3105
+ ngOnInit() {
3106
+ }
3107
+ ngAfterViewInit() {
3108
+ if (this.uiComponent.element) {
3109
+ this.applyElement(this.uiComponent.element);
3110
+ }
3111
+ }
3112
+ applyElement(element) {
3113
+ if (element.textColor) {
3114
+ const color = colorMapping[element.textColor];
3115
+ this.renderer.setStyle(this.profileButtonElementRef.nativeElement, 'color', color);
3116
+ }
3117
+ if (element.textStyle) {
3118
+ const textStyleMappingFontSize = this.fontSizeMappingService.getMapping();
3119
+ const fontSize = textStyleMappingFontSize[element.textStyle];
3120
+ this.renderer.setStyle(this.profileButtonElementRef.nativeElement, 'font-size', fontSize);
3121
+ }
3122
+ this.renderer.setStyle(this.profileButtonLabelElementRef.nativeElement, 'font-size', this.fontSizeMappingService.getMapping()[UITextStyle.CAPTION_2]);
3123
+ this.renderer.setStyle(this.profileButtonLabelElementRef.nativeElement, 'color', colorMapping[UIColor.MAIN1]);
3124
+ }
3125
+ getAssetPath(asset) {
3126
+ return assetMapping[asset];
3127
+ }
3128
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ProfileButtonComponent, deps: [{ token: 'uiComponent' }, { token: i0.Renderer2 }, { token: FontSizeMappingService }], target: i0.ɵɵFactoryTarget.Component }); }
3129
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ProfileButtonComponent, selector: "edm-sdui-profile-button", viewQueries: [{ propertyName: "profileButtonElementRef", first: true, predicate: ["profileButtonElement"], descendants: true }, { propertyName: "profileButtonLabelElementRef", first: true, predicate: ["profileButtonLabelElement"], descendants: true }, { propertyName: "profileButtonImageElementRef", first: true, predicate: ["profileButtonImageElement"], descendants: true }], ngImport: i0, template: "<button #profileButtonElement [edmSduiView]=\"uiComponent.element\" class=\"profile-button\" *ngIf=\"uiComponent\">\n <img #profileButtonImageElement *ngIf=\"uiComponent.element.asset\" [src]=\"getAssetPath(uiComponent.element.asset)\" alt=\"Profile\" class=\"profile-image\">\n <span #profileButtonLabelElement class=\"profile-label\">{{ uiComponent.element.label }}</span>\n</button>\n", styles: [":host{display:contents}.profile-button{display:flex;padding:16px 16px 0;border-radius:20px;background-color:var(--bt-profile);border:none;cursor:pointer;flex-direction:column;height:108px;width:108px;align-items:start;justify-content:start;gap:24px}.profile-button:hover{background-color:#0000000d;cursor:pointer}.profile-button .profile-image{width:24px;height:24px}.profile-button .profile-label{white-space:normal;word-break:break-word;overflow-wrap:break-word;max-width:100%;display:block;text-align:left}\n"], dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: UIViewDirective, selector: "[edmSduiView]", inputs: ["edmSduiView", "disableClick"] }] }); }
3130
+ }
3131
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ProfileButtonComponent, decorators: [{
3132
+ type: Component,
3133
+ args: [{ selector: 'edm-sdui-profile-button', standalone: false, template: "<button #profileButtonElement [edmSduiView]=\"uiComponent.element\" class=\"profile-button\" *ngIf=\"uiComponent\">\n <img #profileButtonImageElement *ngIf=\"uiComponent.element.asset\" [src]=\"getAssetPath(uiComponent.element.asset)\" alt=\"Profile\" class=\"profile-image\">\n <span #profileButtonLabelElement class=\"profile-label\">{{ uiComponent.element.label }}</span>\n</button>\n", styles: [":host{display:contents}.profile-button{display:flex;padding:16px 16px 0;border-radius:20px;background-color:var(--bt-profile);border:none;cursor:pointer;flex-direction:column;height:108px;width:108px;align-items:start;justify-content:start;gap:24px}.profile-button:hover{background-color:#0000000d;cursor:pointer}.profile-button .profile-image{width:24px;height:24px}.profile-button .profile-label{white-space:normal;word-break:break-word;overflow-wrap:break-word;max-width:100%;display:block;text-align:left}\n"] }]
3134
+ }], ctorParameters: () => [{ type: undefined, decorators: [{
3135
+ type: Inject,
3136
+ args: ['uiComponent']
3137
+ }] }, { type: i0.Renderer2 }, { type: FontSizeMappingService }], propDecorators: { profileButtonElementRef: [{
3138
+ type: ViewChild,
3139
+ args: ['profileButtonElement']
3140
+ }], profileButtonLabelElementRef: [{
3141
+ type: ViewChild,
3142
+ args: ['profileButtonLabelElement']
3143
+ }], profileButtonImageElementRef: [{
3144
+ type: ViewChild,
3145
+ args: ['profileButtonImageElement']
3146
+ }] } });
3147
+
3148
+ var profileButton_component = /*#__PURE__*/Object.freeze({
3149
+ __proto__: null,
3150
+ ProfileButtonComponent: ProfileButtonComponent
3151
+ });
3152
+
3153
+ class ProgressBarComponent {
3154
+ constructor(uiComponent, renderer) {
3155
+ this.uiComponent = uiComponent;
3156
+ this.renderer = renderer;
3157
+ }
3158
+ ngOnInit() {
3159
+ }
3160
+ ngAfterViewInit() {
3161
+ if (this.uiComponent.element) {
3162
+ this.applyElement(this.uiComponent.element);
3163
+ }
3164
+ }
3165
+ applyElement(element) {
3166
+ // Set progress value if available
3167
+ if (element.progress) {
3168
+ const progressValue = Math.min(Math.max(element.progress, 0), 1) * 100;
3169
+ this.renderer.setStyle(this.progressFillElementRef.nativeElement, 'width', `${progressValue}%`);
3170
+ }
3171
+ if (element.progressColor) {
3172
+ const color = colorMapping[element.progressColor];
3173
+ this.renderer.setStyle(this.progressFillElementRef.nativeElement, 'background-color', color);
3174
+ }
3175
+ }
3176
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ProgressBarComponent, deps: [{ token: 'uiComponent' }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component }); }
3177
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ProgressBarComponent, selector: "edm-sdui-progress-bar", viewQueries: [{ propertyName: "progressFillElementRef", first: true, predicate: ["progressFillElement"], descendants: true }], ngImport: i0, template: "<div [edmSduiView]=\"uiComponent.element\" class=\"progress-bar-container\" *ngIf=\"uiComponent\">\n <div #progressFillElement class=\"progress-bar-fill\"></div>\n</div>\n", styles: [":host{display:contents}.progress-bar-container{position:relative;width:100%;height:5px;background-color:#e0e0e0;border-radius:4px;overflow:hidden}.progress-bar-container .progress-bar-fill{height:100%;width:0;background-color:#2196f3;transition:width .3s ease}.progress-bar-container .progress-bar-label{position:absolute;top:100%;left:0;width:100%;text-align:center;font-size:12px;margin-top:4px}\n"], dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: UIViewDirective, selector: "[edmSduiView]", inputs: ["edmSduiView", "disableClick"] }] }); }
3178
+ }
3179
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ProgressBarComponent, decorators: [{
3180
+ type: Component,
3181
+ args: [{ selector: 'edm-sdui-progress-bar', standalone: false, template: "<div [edmSduiView]=\"uiComponent.element\" class=\"progress-bar-container\" *ngIf=\"uiComponent\">\n <div #progressFillElement class=\"progress-bar-fill\"></div>\n</div>\n", styles: [":host{display:contents}.progress-bar-container{position:relative;width:100%;height:5px;background-color:#e0e0e0;border-radius:4px;overflow:hidden}.progress-bar-container .progress-bar-fill{height:100%;width:0;background-color:#2196f3;transition:width .3s ease}.progress-bar-container .progress-bar-label{position:absolute;top:100%;left:0;width:100%;text-align:center;font-size:12px;margin-top:4px}\n"] }]
3182
+ }], ctorParameters: () => [{ type: undefined, decorators: [{
3183
+ type: Inject,
3184
+ args: ['uiComponent']
3185
+ }] }, { type: i0.Renderer2 }], propDecorators: { progressFillElementRef: [{
3186
+ type: ViewChild,
3187
+ args: ['progressFillElement']
3188
+ }] } });
3189
+
3190
+ var progressBar_component = /*#__PURE__*/Object.freeze({
3191
+ __proto__: null,
3192
+ ProgressBarComponent: ProgressBarComponent
3193
+ });
3194
+
2658
3195
  class SduiModule {
2659
3196
  static forRoot(config) {
2660
3197
  return {
@@ -2698,6 +3235,10 @@ class SduiModule {
2698
3235
  MediaTypeComponent,
2699
3236
  PickerComponent,
2700
3237
  PickerItemComponent,
3238
+ ScrollableRowComponent,
3239
+ ScrollableColumnComponent,
3240
+ ProfileButtonComponent,
3241
+ ProgressBarComponent,
2701
3242
  // diretivas
2702
3243
  UIViewDirective,
2703
3244
  // navegação
@@ -2732,6 +3273,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
2732
3273
  MediaTypeComponent,
2733
3274
  PickerComponent,
2734
3275
  PickerItemComponent,
3276
+ ScrollableRowComponent,
3277
+ ScrollableColumnComponent,
3278
+ ProfileButtonComponent,
3279
+ ProgressBarComponent,
2735
3280
  // diretivas
2736
3281
  UIViewDirective,
2737
3282
  // navegação
@@ -2756,5 +3301,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
2756
3301
  * Generated bundle index. Do not edit.
2757
3302
  */
2758
3303
 
2759
- export { SDUI_URL_PARAM, SduiComponent, SduiModule };
3304
+ export { SDUI_URL_PARAM, SduiComponent, SduiModule, UIActionHandlersService };
2760
3305
  //# sourceMappingURL=edm-sdui-sdui.mjs.map