@fundamental-ngx/core 0.46.0-rc.13 → 0.46.0-rc.14

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 (32) hide show
  1. package/content-density/content-density.module.d.ts +2 -3
  2. package/content-density/index.d.ts +3 -2
  3. package/content-density/provide-content-density.d.ts +7 -0
  4. package/esm2022/content-density/content-density.module.mjs +6 -68
  5. package/esm2022/content-density/index.mjs +4 -3
  6. package/esm2022/content-density/provide-content-density.mjs +71 -0
  7. package/esm2022/generic-tag/fundamental-ngx-core-generic-tag.mjs +5 -0
  8. package/esm2022/generic-tag/generic-tag.component.mjs +75 -0
  9. package/esm2022/generic-tag/generic-tag.module.mjs +16 -0
  10. package/esm2022/generic-tag/index.mjs +4 -0
  11. package/esm2022/generic-tag/tokens.mjs +3 -0
  12. package/esm2022/theming/index.mjs +4 -3
  13. package/esm2022/theming/provide-theming.mjs +16 -0
  14. package/esm2022/theming/theming.module.mjs +6 -24
  15. package/esm2022/theming/tokens.mjs +5 -2
  16. package/fesm2022/fundamental-ngx-core-content-density.mjs +111 -103
  17. package/fesm2022/fundamental-ngx-core-content-density.mjs.map +1 -1
  18. package/fesm2022/fundamental-ngx-core-generic-tag.mjs +96 -0
  19. package/fesm2022/fundamental-ngx-core-generic-tag.mjs.map +1 -0
  20. package/fesm2022/fundamental-ngx-core-theming.mjs +22 -23
  21. package/fesm2022/fundamental-ngx-core-theming.mjs.map +1 -1
  22. package/fundamental-ngx-core-v0.46.0-rc.14.tgz +0 -0
  23. package/generic-tag/README.md +25 -0
  24. package/generic-tag/generic-tag.component.d.ts +43 -0
  25. package/generic-tag/generic-tag.module.d.ts +7 -0
  26. package/generic-tag/index.d.ts +3 -0
  27. package/generic-tag/tokens.d.ts +2 -0
  28. package/package.json +9 -3
  29. package/schematics/add-dependencies/index.js +4 -4
  30. package/theming/index.d.ts +3 -2
  31. package/theming/provide-theming.d.ts +7 -0
  32. package/fundamental-ngx-core-v0.46.0-rc.13.tgz +0 -0
@@ -0,0 +1,96 @@
1
+ import { __decorate, __metadata } from 'tslib';
2
+ import { NgIf, NgClass } from '@angular/common';
3
+ import * as i0 from '@angular/core';
4
+ import { InjectionToken, inject, ElementRef, Component, ViewEncapsulation, ChangeDetectionStrategy, Input, NgModule } from '@angular/core';
5
+ import { applyCssClass } from '@fundamental-ngx/cdk/utils';
6
+
7
+ const FD_GENERIC_TAG_COMPONENT = new InjectionToken('FdGenericTagComponent');
8
+
9
+ class GenericTagComponent {
10
+ constructor() {
11
+ /**
12
+ * Aria defines role description for the Generic Tag
13
+ */
14
+ this.ariaRoleDescription = 'Generic Tag';
15
+ /** @hidden */
16
+ this.elementRef = inject(ElementRef);
17
+ }
18
+ /** @hidden
19
+ * CssClassBuilder interface implementation
20
+ * function must return single string
21
+ * function is responsible for order which css classes are applied
22
+ */
23
+ buildComponentCssClass() {
24
+ return buildObjectStatusCssClasses(this);
25
+ }
26
+ /** @hidden */
27
+ ngOnChanges() {
28
+ this.buildComponentCssClass();
29
+ }
30
+ /** @hidden */
31
+ ngOnInit() {
32
+ this.buildComponentCssClass();
33
+ }
34
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.0", ngImport: i0, type: GenericTagComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
35
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.0", type: GenericTagComponent, isStandalone: true, selector: "[fd-generic-tag]", inputs: { class: "class", type: "type", name: "name", value: "value", ariaRoleDescription: "ariaRoleDescription" }, host: { attributes: { "role": "button" }, properties: { "attr.tabindex": "0", "attr.aria-roledescription": "ariaRoleDescription" } }, providers: [
36
+ {
37
+ provide: FD_GENERIC_TAG_COMPONENT,
38
+ useExisting: GenericTagComponent
39
+ }
40
+ ], usesOnChanges: true, ngImport: i0, template: "<span\n *ngIf=\"type\"\n class=\"fd-generic-tag__icon\"\n [class]=\"type ? 'sap-icon--message-' + type : ''\"\n role=\"presentation\"\n aria-hidden=\"true\"\n>\n</span>\n<span class=\"fd-generic-tag__name\">{{ name }}</span>\n<span class=\"fd-generic-tag__value\" *ngIf=\"value\">{{ value }}</span>\n", styles: ["/*!\n * Fundamental Library Styles v0.30.2-rc.6\n * Copyright (c) 2023 SAP SE or an SAP affiliate company.\n * Licensed under Apache License 2.0 (https://github.com/SAP/fundamental-styles/blob/main/LICENSE)\n */.fd-generic-tag{--fdGenericTag_Spacing:.375rem;--fdGenericTag_Margin:.5625rem 0;--fdGenericTag_Decorator_Position:0;--fdGenericTag_Decorator_Color:var(--sapNeutralElementColor);--fdGenericTag_Background_Color:var(--sapNeutralBackground);--fdGenericTag_Icon_Color:var(--sapNeutralElementColor);--fdGenericTag_Name_Color:var(--sapList_TextColor);--fdGenericTag_Name_Text_Shadow:var(--sapContent_TextShadow);--fdGenericTag_Value_Color:var(--sapNeutralTextColor);--fdGenericTag_Value_Text_Shadow:var(--sapContent_TextShadow);--fdGenericTag_Text_Min_Width:1.5625rem;-webkit-box-sizing:border-box;-webkit-box-align:center;-ms-flex-align:center;-webkit-box-shadow:var(--sapContent_Shadow0);align-items:center;background:var(--fdGenericTag_Decorator_Position) 0/var(--fdGenericTag_Spacing) 100% no-repeat linear-gradient(0deg,var(--fdGenericTag_Decorator_Color),var(--fdGenericTag_Decorator_Color));background-color:var(--fdGenericTag_Background_Color);border:0;border-radius:var(--sapButton_BorderCornerRadius);box-shadow:var(--sapContent_Shadow0);box-sizing:border-box;color:var(--sapTextColor);cursor:pointer;display:flex;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;gap:var(--fdGenericTag_Spacing);height:1.625rem;line-height:var(--sapContent_LineHeight);margin:0;margin:var(--fdGenericTag_Margin);padding:0 .375rem 0 .75rem;width:-moz-fit-content;width:fit-content}.fd-generic-tag:after,.fd-generic-tag:before{box-sizing:inherit;font-size:inherit}.fd-generic-tag[dir=rtl],[dir=rtl] .fd-generic-tag{padding-left:.375rem;padding-right:.75rem}.fd-generic-tag__icon[class*=sap-icon]{-webkit-box-pack:center;-ms-flex-pack:center;align-items:center;color:var(--fdGenericTag_Icon_Color);display:flex;font-size:1rem;justify-content:center}.fd-generic-tag__name,.fd-generic-tag__value{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:var(--sapContent_LineHeight);margin:0;min-width:var(--fdGenericTag_Text_Min_Width);overflow:hidden;padding:0;text-overflow:ellipsis;white-space:nowrap}.fd-generic-tag__name:after,.fd-generic-tag__name:before,.fd-generic-tag__value:after,.fd-generic-tag__value:before{box-sizing:inherit;font-size:inherit}.fd-generic-tag__name{color:var(--fdGenericTag_Name_Color);text-shadow:var(--fdGenericTag_Name_Text_Shadow)}.fd-generic-tag__value{color:var(--fdGenericTag_Value_Color);margin-left:.75rem;text-shadow:var(--fdGenericTag_Value_Text_Shadow)}.fd-generic-tag__value[dir=rtl],[dir=rtl] .fd-generic-tag__value{margin-left:0;margin-right:.75rem}.fd-generic-tag.is-hover,.fd-generic-tag:hover{--fdGenericTag_Background_Color:var(--sapList_Hover_Background);--fdGenericTag_Name_Color:var(--fdGenericTag_Name_Color_Hover);--fdGenericTag_Value_Color:var(--fdGenericTag_Value_Color_Hover_Neutral);--fdGenericTag_Icon_Color:var(--fdGenericTag_Icon_Color_Hover_Neutral);--fdGenericTag_Name_Text_Shadow:none;--fdGenericTag_Value_Text_Shadow:none}.fd-generic-tag.is-active,.fd-generic-tag:active{--fdGenericTag_Background_Color:var(--sapList_Active_Background);--fdGenericTag_Name_Color:var(--sapList_Active_TextColor);--fdGenericTag_Name_Text_Shadow:none;--fdGenericTag_Icon_Color:var(--sapList_Active_TextColor);--fdGenericTag_Value_Color:var(--sapList_Active_TextColor);--fdGenericTag_Value_Text_Shadow:none}.fd-generic-tag.is-focus,.fd-generic-tag:focus{outline:var(--sapContent_FocusColor) var(--sapContent_FocusStyle) var(--sapContent_FocusWidth);outline-offset:var(--fdGenericTag_Spacing_Outline_Offset);z-index:5}.fd-generic-tag[dir=rtl],[dir=rtl] .fd-generic-tag{--fdGenericTag_Decorator_Position:100%}.fd-generic-tag[class*=-compact],[class*=-compact] .fd-generic-tag:not([class*=-cozy]){--fdGenericTag_Margin:.1875rem 0}.fd-generic-tag.fd-generic-tag--error{--fdGenericTag_Value_Color:var(--sapNegativeTextColor);--fdGenericTag_Icon_Color:var(--sapNegativeElementColor);--fdGenericTag_Decorator_Color:var(--sapNegativeElementColor);--fdGenericTag_Background_Color:var(--sapErrorBackground)}.fd-generic-tag.fd-generic-tag--error.is-hover,.fd-generic-tag.fd-generic-tag--error:hover{--fdGenericTag_Value_Color:var(--fdGenericTag_Value_Color_Hover_Error);--fdGenericTag_Icon_Color:var(--fdGenericTag_Icon_Color_Hover_Error);--fdGenericTag_Background_Color:var(--sapList_Hover_Background);--fdGenericTag_Name_Color:var(--fdGenericTag_Name_Color_Hover)}.fd-generic-tag.fd-generic-tag--error.is-active,.fd-generic-tag.fd-generic-tag--error:active{--fdGenericTag_Name_Text_Shadow:none;--fdGenericTag_Value_Text_Shadow:none;--fdGenericTag_Background_Color:var(--sapList_Active_Background);--fdGenericTag_Name_Color:var(--sapList_Active_TextColor);--fdGenericTag_Icon_Color:var(--sapList_Active_TextColor);--fdGenericTag_Value_Color:var(--sapList_Active_TextColor)}.fd-generic-tag.fd-generic-tag--warning{--fdGenericTag_Value_Color:var(--sapCriticalTextColor);--fdGenericTag_Icon_Color:var(--sapCriticalElementColor);--fdGenericTag_Decorator_Color:var(--sapCriticalElementColor);--fdGenericTag_Background_Color:var(--sapWarningBackground)}.fd-generic-tag.fd-generic-tag--warning.is-hover,.fd-generic-tag.fd-generic-tag--warning:hover{--fdGenericTag_Value_Color:var(--fdGenericTag_Value_Color_Hover_Warning);--fdGenericTag_Icon_Color:var(--fdGenericTag_Icon_Color_Hover_Warning);--fdGenericTag_Background_Color:var(--sapList_Hover_Background);--fdGenericTag_Name_Color:var(--fdGenericTag_Name_Color_Hover)}.fd-generic-tag.fd-generic-tag--warning.is-active,.fd-generic-tag.fd-generic-tag--warning:active{--fdGenericTag_Name_Text_Shadow:none;--fdGenericTag_Value_Text_Shadow:none;--fdGenericTag_Background_Color:var(--sapList_Active_Background);--fdGenericTag_Name_Color:var(--sapList_Active_TextColor);--fdGenericTag_Icon_Color:var(--sapList_Active_TextColor);--fdGenericTag_Value_Color:var(--sapList_Active_TextColor)}.fd-generic-tag.fd-generic-tag--success{--fdGenericTag_Value_Color:var(--sapPositiveTextColor);--fdGenericTag_Icon_Color:var(--sapPositiveElementColor);--fdGenericTag_Decorator_Color:var(--sapPositiveElementColor);--fdGenericTag_Background_Color:var(--sapSuccessBackground)}.fd-generic-tag.fd-generic-tag--success.is-hover,.fd-generic-tag.fd-generic-tag--success:hover{--fdGenericTag_Value_Color:var(--fdGenericTag_Value_Color_Hover_Success);--fdGenericTag_Icon_Color:var(--fdGenericTag_Icon_Color_Hover_Success);--fdGenericTag_Background_Color:var(--sapList_Hover_Background);--fdGenericTag_Name_Color:var(--fdGenericTag_Name_Color_Hover)}.fd-generic-tag.fd-generic-tag--success.is-active,.fd-generic-tag.fd-generic-tag--success:active{--fdGenericTag_Name_Text_Shadow:none;--fdGenericTag_Value_Text_Shadow:none;--fdGenericTag_Background_Color:var(--sapList_Active_Background);--fdGenericTag_Name_Color:var(--sapList_Active_TextColor);--fdGenericTag_Icon_Color:var(--sapList_Active_TextColor);--fdGenericTag_Value_Color:var(--sapList_Active_TextColor)}.fd-generic-tag.fd-generic-tag--information{--fdGenericTag_Value_Color:var(--sapInformativeTextColor);--fdGenericTag_Icon_Color:var(--sapInformativeElementColor);--fdGenericTag_Decorator_Color:var(--sapInformativeElementColor);--fdGenericTag_Background_Color:var(--sapInformationBackground)}.fd-generic-tag.fd-generic-tag--information.is-hover,.fd-generic-tag.fd-generic-tag--information:hover{--fdGenericTag_Value_Color:var(--fdGenericTag_Value_Color_Hover_Information);--fdGenericTag_Icon_Color:var(--fdGenericTag_Icon_Color_Hover_Information);--fdGenericTag_Background_Color:var(--sapList_Hover_Background);--fdGenericTag_Name_Color:var(--fdGenericTag_Name_Color_Hover)}.fd-generic-tag.fd-generic-tag--information.is-active,.fd-generic-tag.fd-generic-tag--information:active{--fdGenericTag_Name_Text_Shadow:none;--fdGenericTag_Value_Text_Shadow:none;--fdGenericTag_Background_Color:var(--sapList_Active_Background);--fdGenericTag_Name_Color:var(--sapList_Active_TextColor);--fdGenericTag_Icon_Color:var(--sapList_Active_TextColor);--fdGenericTag_Value_Color:var(--sapList_Active_TextColor)}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
41
+ }
42
+ __decorate([
43
+ applyCssClass,
44
+ __metadata("design:type", Function),
45
+ __metadata("design:paramtypes", []),
46
+ __metadata("design:returntype", Array)
47
+ ], GenericTagComponent.prototype, "buildComponentCssClass", null);
48
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.0", ngImport: i0, type: GenericTagComponent, decorators: [{
49
+ type: Component,
50
+ args: [{ selector: '[fd-generic-tag]', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [
51
+ {
52
+ provide: FD_GENERIC_TAG_COMPONENT,
53
+ useExisting: GenericTagComponent
54
+ }
55
+ ], host: {
56
+ '[attr.tabindex]': '0',
57
+ '[attr.aria-roledescription]': 'ariaRoleDescription',
58
+ role: 'button'
59
+ }, standalone: true, imports: [NgIf, NgClass], template: "<span\n *ngIf=\"type\"\n class=\"fd-generic-tag__icon\"\n [class]=\"type ? 'sap-icon--message-' + type : ''\"\n role=\"presentation\"\n aria-hidden=\"true\"\n>\n</span>\n<span class=\"fd-generic-tag__name\">{{ name }}</span>\n<span class=\"fd-generic-tag__value\" *ngIf=\"value\">{{ value }}</span>\n", styles: ["/*!\n * Fundamental Library Styles v0.30.2-rc.6\n * Copyright (c) 2023 SAP SE or an SAP affiliate company.\n * Licensed under Apache License 2.0 (https://github.com/SAP/fundamental-styles/blob/main/LICENSE)\n */.fd-generic-tag{--fdGenericTag_Spacing:.375rem;--fdGenericTag_Margin:.5625rem 0;--fdGenericTag_Decorator_Position:0;--fdGenericTag_Decorator_Color:var(--sapNeutralElementColor);--fdGenericTag_Background_Color:var(--sapNeutralBackground);--fdGenericTag_Icon_Color:var(--sapNeutralElementColor);--fdGenericTag_Name_Color:var(--sapList_TextColor);--fdGenericTag_Name_Text_Shadow:var(--sapContent_TextShadow);--fdGenericTag_Value_Color:var(--sapNeutralTextColor);--fdGenericTag_Value_Text_Shadow:var(--sapContent_TextShadow);--fdGenericTag_Text_Min_Width:1.5625rem;-webkit-box-sizing:border-box;-webkit-box-align:center;-ms-flex-align:center;-webkit-box-shadow:var(--sapContent_Shadow0);align-items:center;background:var(--fdGenericTag_Decorator_Position) 0/var(--fdGenericTag_Spacing) 100% no-repeat linear-gradient(0deg,var(--fdGenericTag_Decorator_Color),var(--fdGenericTag_Decorator_Color));background-color:var(--fdGenericTag_Background_Color);border:0;border-radius:var(--sapButton_BorderCornerRadius);box-shadow:var(--sapContent_Shadow0);box-sizing:border-box;color:var(--sapTextColor);cursor:pointer;display:flex;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;gap:var(--fdGenericTag_Spacing);height:1.625rem;line-height:var(--sapContent_LineHeight);margin:0;margin:var(--fdGenericTag_Margin);padding:0 .375rem 0 .75rem;width:-moz-fit-content;width:fit-content}.fd-generic-tag:after,.fd-generic-tag:before{box-sizing:inherit;font-size:inherit}.fd-generic-tag[dir=rtl],[dir=rtl] .fd-generic-tag{padding-left:.375rem;padding-right:.75rem}.fd-generic-tag__icon[class*=sap-icon]{-webkit-box-pack:center;-ms-flex-pack:center;align-items:center;color:var(--fdGenericTag_Icon_Color);display:flex;font-size:1rem;justify-content:center}.fd-generic-tag__name,.fd-generic-tag__value{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;forced-color-adjust:none;line-height:var(--sapContent_LineHeight);margin:0;min-width:var(--fdGenericTag_Text_Min_Width);overflow:hidden;padding:0;text-overflow:ellipsis;white-space:nowrap}.fd-generic-tag__name:after,.fd-generic-tag__name:before,.fd-generic-tag__value:after,.fd-generic-tag__value:before{box-sizing:inherit;font-size:inherit}.fd-generic-tag__name{color:var(--fdGenericTag_Name_Color);text-shadow:var(--fdGenericTag_Name_Text_Shadow)}.fd-generic-tag__value{color:var(--fdGenericTag_Value_Color);margin-left:.75rem;text-shadow:var(--fdGenericTag_Value_Text_Shadow)}.fd-generic-tag__value[dir=rtl],[dir=rtl] .fd-generic-tag__value{margin-left:0;margin-right:.75rem}.fd-generic-tag.is-hover,.fd-generic-tag:hover{--fdGenericTag_Background_Color:var(--sapList_Hover_Background);--fdGenericTag_Name_Color:var(--fdGenericTag_Name_Color_Hover);--fdGenericTag_Value_Color:var(--fdGenericTag_Value_Color_Hover_Neutral);--fdGenericTag_Icon_Color:var(--fdGenericTag_Icon_Color_Hover_Neutral);--fdGenericTag_Name_Text_Shadow:none;--fdGenericTag_Value_Text_Shadow:none}.fd-generic-tag.is-active,.fd-generic-tag:active{--fdGenericTag_Background_Color:var(--sapList_Active_Background);--fdGenericTag_Name_Color:var(--sapList_Active_TextColor);--fdGenericTag_Name_Text_Shadow:none;--fdGenericTag_Icon_Color:var(--sapList_Active_TextColor);--fdGenericTag_Value_Color:var(--sapList_Active_TextColor);--fdGenericTag_Value_Text_Shadow:none}.fd-generic-tag.is-focus,.fd-generic-tag:focus{outline:var(--sapContent_FocusColor) var(--sapContent_FocusStyle) var(--sapContent_FocusWidth);outline-offset:var(--fdGenericTag_Spacing_Outline_Offset);z-index:5}.fd-generic-tag[dir=rtl],[dir=rtl] .fd-generic-tag{--fdGenericTag_Decorator_Position:100%}.fd-generic-tag[class*=-compact],[class*=-compact] .fd-generic-tag:not([class*=-cozy]){--fdGenericTag_Margin:.1875rem 0}.fd-generic-tag.fd-generic-tag--error{--fdGenericTag_Value_Color:var(--sapNegativeTextColor);--fdGenericTag_Icon_Color:var(--sapNegativeElementColor);--fdGenericTag_Decorator_Color:var(--sapNegativeElementColor);--fdGenericTag_Background_Color:var(--sapErrorBackground)}.fd-generic-tag.fd-generic-tag--error.is-hover,.fd-generic-tag.fd-generic-tag--error:hover{--fdGenericTag_Value_Color:var(--fdGenericTag_Value_Color_Hover_Error);--fdGenericTag_Icon_Color:var(--fdGenericTag_Icon_Color_Hover_Error);--fdGenericTag_Background_Color:var(--sapList_Hover_Background);--fdGenericTag_Name_Color:var(--fdGenericTag_Name_Color_Hover)}.fd-generic-tag.fd-generic-tag--error.is-active,.fd-generic-tag.fd-generic-tag--error:active{--fdGenericTag_Name_Text_Shadow:none;--fdGenericTag_Value_Text_Shadow:none;--fdGenericTag_Background_Color:var(--sapList_Active_Background);--fdGenericTag_Name_Color:var(--sapList_Active_TextColor);--fdGenericTag_Icon_Color:var(--sapList_Active_TextColor);--fdGenericTag_Value_Color:var(--sapList_Active_TextColor)}.fd-generic-tag.fd-generic-tag--warning{--fdGenericTag_Value_Color:var(--sapCriticalTextColor);--fdGenericTag_Icon_Color:var(--sapCriticalElementColor);--fdGenericTag_Decorator_Color:var(--sapCriticalElementColor);--fdGenericTag_Background_Color:var(--sapWarningBackground)}.fd-generic-tag.fd-generic-tag--warning.is-hover,.fd-generic-tag.fd-generic-tag--warning:hover{--fdGenericTag_Value_Color:var(--fdGenericTag_Value_Color_Hover_Warning);--fdGenericTag_Icon_Color:var(--fdGenericTag_Icon_Color_Hover_Warning);--fdGenericTag_Background_Color:var(--sapList_Hover_Background);--fdGenericTag_Name_Color:var(--fdGenericTag_Name_Color_Hover)}.fd-generic-tag.fd-generic-tag--warning.is-active,.fd-generic-tag.fd-generic-tag--warning:active{--fdGenericTag_Name_Text_Shadow:none;--fdGenericTag_Value_Text_Shadow:none;--fdGenericTag_Background_Color:var(--sapList_Active_Background);--fdGenericTag_Name_Color:var(--sapList_Active_TextColor);--fdGenericTag_Icon_Color:var(--sapList_Active_TextColor);--fdGenericTag_Value_Color:var(--sapList_Active_TextColor)}.fd-generic-tag.fd-generic-tag--success{--fdGenericTag_Value_Color:var(--sapPositiveTextColor);--fdGenericTag_Icon_Color:var(--sapPositiveElementColor);--fdGenericTag_Decorator_Color:var(--sapPositiveElementColor);--fdGenericTag_Background_Color:var(--sapSuccessBackground)}.fd-generic-tag.fd-generic-tag--success.is-hover,.fd-generic-tag.fd-generic-tag--success:hover{--fdGenericTag_Value_Color:var(--fdGenericTag_Value_Color_Hover_Success);--fdGenericTag_Icon_Color:var(--fdGenericTag_Icon_Color_Hover_Success);--fdGenericTag_Background_Color:var(--sapList_Hover_Background);--fdGenericTag_Name_Color:var(--fdGenericTag_Name_Color_Hover)}.fd-generic-tag.fd-generic-tag--success.is-active,.fd-generic-tag.fd-generic-tag--success:active{--fdGenericTag_Name_Text_Shadow:none;--fdGenericTag_Value_Text_Shadow:none;--fdGenericTag_Background_Color:var(--sapList_Active_Background);--fdGenericTag_Name_Color:var(--sapList_Active_TextColor);--fdGenericTag_Icon_Color:var(--sapList_Active_TextColor);--fdGenericTag_Value_Color:var(--sapList_Active_TextColor)}.fd-generic-tag.fd-generic-tag--information{--fdGenericTag_Value_Color:var(--sapInformativeTextColor);--fdGenericTag_Icon_Color:var(--sapInformativeElementColor);--fdGenericTag_Decorator_Color:var(--sapInformativeElementColor);--fdGenericTag_Background_Color:var(--sapInformationBackground)}.fd-generic-tag.fd-generic-tag--information.is-hover,.fd-generic-tag.fd-generic-tag--information:hover{--fdGenericTag_Value_Color:var(--fdGenericTag_Value_Color_Hover_Information);--fdGenericTag_Icon_Color:var(--fdGenericTag_Icon_Color_Hover_Information);--fdGenericTag_Background_Color:var(--sapList_Hover_Background);--fdGenericTag_Name_Color:var(--fdGenericTag_Name_Color_Hover)}.fd-generic-tag.fd-generic-tag--information.is-active,.fd-generic-tag.fd-generic-tag--information:active{--fdGenericTag_Name_Text_Shadow:none;--fdGenericTag_Value_Text_Shadow:none;--fdGenericTag_Background_Color:var(--sapList_Active_Background);--fdGenericTag_Name_Color:var(--sapList_Active_TextColor);--fdGenericTag_Icon_Color:var(--sapList_Active_TextColor);--fdGenericTag_Value_Color:var(--sapList_Active_TextColor)}\n"] }]
60
+ }], propDecorators: { class: [{
61
+ type: Input
62
+ }], type: [{
63
+ type: Input
64
+ }], name: [{
65
+ type: Input,
66
+ args: [{ required: true }]
67
+ }], value: [{
68
+ type: Input
69
+ }], ariaRoleDescription: [{
70
+ type: Input
71
+ }], buildComponentCssClass: [] } });
72
+ const buildObjectStatusCssClasses = (data) => [
73
+ 'fd-generic-tag',
74
+ data.type ? `fd-generic-tag--${data.type}` : '',
75
+ data.class || ''
76
+ ];
77
+
78
+ class GenericTagModule {
79
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.0", ngImport: i0, type: GenericTagModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
80
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.1.0", ngImport: i0, type: GenericTagModule, imports: [GenericTagComponent], exports: [GenericTagComponent] }); }
81
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.1.0", ngImport: i0, type: GenericTagModule }); }
82
+ }
83
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.0", ngImport: i0, type: GenericTagModule, decorators: [{
84
+ type: NgModule,
85
+ args: [{
86
+ imports: [GenericTagComponent],
87
+ exports: [GenericTagComponent]
88
+ }]
89
+ }] });
90
+
91
+ /**
92
+ * Generated bundle index. Do not edit.
93
+ */
94
+
95
+ export { FD_GENERIC_TAG_COMPONENT, GenericTagComponent, GenericTagModule };
96
+ //# sourceMappingURL=fundamental-ngx-core-generic-tag.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fundamental-ngx-core-generic-tag.mjs","sources":["../../../../libs/core/src/lib/generic-tag/tokens.ts","../../../../libs/core/src/lib/generic-tag/generic-tag.component.ts","../../../../libs/core/src/lib/generic-tag/generic-tag.component.html","../../../../libs/core/src/lib/generic-tag/generic-tag.module.ts","../../../../libs/core/src/lib/generic-tag/fundamental-ngx-core-generic-tag.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\n\nexport const FD_GENERIC_TAG_COMPONENT = new InjectionToken('FdGenericTagComponent');\n","import { NgClass, NgIf } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n Input,\n OnChanges,\n OnInit,\n ViewEncapsulation,\n inject\n} from '@angular/core';\nimport { CssClassBuilder, Nullable, NullableObject, applyCssClass } from '@fundamental-ngx/cdk/utils';\nimport { FD_GENERIC_TAG_COMPONENT } from './tokens';\n\nexport type GenericTagType = 'error' | 'success' | 'warning' | 'information';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: '[fd-generic-tag]',\n templateUrl: './generic-tag.component.html',\n styleUrls: ['./generic-tag.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: FD_GENERIC_TAG_COMPONENT,\n useExisting: GenericTagComponent\n }\n ],\n host: {\n '[attr.tabindex]': '0',\n '[attr.aria-roledescription]': 'ariaRoleDescription',\n role: 'button'\n },\n standalone: true,\n imports: [NgIf, NgClass]\n})\nexport class GenericTagComponent implements OnChanges, OnInit, CssClassBuilder {\n /** User's custom classes */\n @Input()\n class: string;\n\n /**\n * The type of the Generic Tag.\n * Can be one of the following: 'error' | 'success' | 'warning' | 'information'.\n * For default Generic Tag omit this property.\n */\n @Input()\n type: Nullable<GenericTagType>;\n\n /**\n * Required input\n * The KPI Name of the Generic tag. Standard text.\n * Always use a meaningful title. Keep it simple and try to use no more than 3 words.\n */\n @Input({ required: true })\n name!: string;\n\n /**\n * The KPI Value of the Generic tag.\n * The value represents the numeric (key) attribute and its unit.\n */\n @Input()\n value: Nullable<string>;\n\n /**\n * Aria defines role description for the Generic Tag\n */\n @Input()\n ariaRoleDescription: Nullable<string> = 'Generic Tag';\n\n /** @hidden */\n readonly elementRef = inject(ElementRef);\n\n /** @hidden\n * CssClassBuilder interface implementation\n * function must return single string\n * function is responsible for order which css classes are applied\n */\n @applyCssClass\n buildComponentCssClass(): string[] {\n return buildObjectStatusCssClasses(this);\n }\n\n /** @hidden */\n ngOnChanges(): void {\n this.buildComponentCssClass();\n }\n\n /** @hidden */\n ngOnInit(): void {\n this.buildComponentCssClass();\n }\n}\n\ntype GenericTagData = NullableObject<{\n type: GenericTagType;\n class: string;\n}>;\n\nconst buildObjectStatusCssClasses = (data: GenericTagData): string[] => [\n 'fd-generic-tag',\n data.type ? `fd-generic-tag--${data.type}` : '',\n data.class || ''\n];\n","<span\n *ngIf=\"type\"\n class=\"fd-generic-tag__icon\"\n [class]=\"type ? 'sap-icon--message-' + type : ''\"\n role=\"presentation\"\n aria-hidden=\"true\"\n>\n</span>\n<span class=\"fd-generic-tag__name\">{{ name }}</span>\n<span class=\"fd-generic-tag__value\" *ngIf=\"value\">{{ value }}</span>\n","import { NgModule } from '@angular/core';\n\nimport { GenericTagComponent } from './generic-tag.component';\n\n@NgModule({\n imports: [GenericTagComponent],\n exports: [GenericTagComponent]\n})\nexport class GenericTagModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
+ import { DOCUMENT, CommonModule } from '@angular/common';
1
2
  import * as i0 from '@angular/core';
2
3
  import { InjectionToken, isDevMode, Injectable, Inject, Optional, NgModule } from '@angular/core';
3
- import { DOCUMENT, CommonModule } from '@angular/common';
4
4
  import * as i1 from '@angular/router';
5
5
  import { merge, cloneDeep } from 'lodash-es';
6
6
  import { Subject, BehaviorSubject } from 'rxjs';
@@ -108,7 +108,9 @@ const STANDARD_THEMES = [
108
108
  }
109
109
  ];
110
110
 
111
- const THEMING_CONFIG_TOKEN = new InjectionToken('FdThemingConfig');
111
+ const THEMING_CONFIG_TOKEN = new InjectionToken('FdThemingConfig', {
112
+ factory: () => new BaseThemingConfig()
113
+ });
112
114
 
113
115
  class ThemingService {
114
116
  /**
@@ -286,40 +288,37 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.0", ngImpor
286
288
  args: [THEMING_CONFIG_TOKEN]
287
289
  }] }]; } });
288
290
 
291
+ /**
292
+ * Provides theming configuration
293
+ * @param config
294
+ */
295
+ function provideTheming(config = {}) {
296
+ return [
297
+ ThemingService,
298
+ {
299
+ provide: THEMING_CONFIG_TOKEN,
300
+ useValue: config
301
+ }
302
+ ];
303
+ }
304
+
289
305
  class ThemingModule {
290
306
  /** Module with providers */
291
307
  static withConfig(config) {
292
308
  return {
293
309
  ngModule: ThemingModule,
294
- providers: [
295
- {
296
- provide: THEMING_CONFIG_TOKEN,
297
- useValue: config
298
- }
299
- ]
310
+ providers: [provideTheming(config)]
300
311
  };
301
312
  }
302
313
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.0", ngImport: i0, type: ThemingModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
303
314
  static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.1.0", ngImport: i0, type: ThemingModule, imports: [CommonModule] }); }
304
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.1.0", ngImport: i0, type: ThemingModule, providers: [
305
- {
306
- provide: THEMING_CONFIG_TOKEN,
307
- useValue: new BaseThemingConfig()
308
- },
309
- ThemingService
310
- ], imports: [CommonModule] }); }
315
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.1.0", ngImport: i0, type: ThemingModule, providers: [ThemingService], imports: [CommonModule] }); }
311
316
  }
312
317
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.0", ngImport: i0, type: ThemingModule, decorators: [{
313
318
  type: NgModule,
314
319
  args: [{
315
320
  imports: [CommonModule],
316
- providers: [
317
- {
318
- provide: THEMING_CONFIG_TOKEN,
319
- useValue: new BaseThemingConfig()
320
- },
321
- ThemingService
322
- ]
321
+ providers: [ThemingService]
323
322
  }]
324
323
  }] });
325
324
 
@@ -327,5 +326,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.0", ngImpor
327
326
  * Generated bundle index. Do not edit.
328
327
  */
329
328
 
330
- export { BaseThemingConfig, STANDARD_THEMES, THEMING_CONFIG_TOKEN, ThemingModule, ThemingService };
329
+ export { BaseThemingConfig, STANDARD_THEMES, THEMING_CONFIG_TOKEN, ThemingModule, ThemingService, provideTheming };
331
330
  //# sourceMappingURL=fundamental-ngx-core-theming.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"fundamental-ngx-core-theming.mjs","sources":["../../../../libs/core/src/lib/theming/config.ts","../../../../libs/core/src/lib/theming/standard-themes.ts","../../../../libs/core/src/lib/theming/tokens.ts","../../../../libs/core/src/lib/theming/theming.service.ts","../../../../libs/core/src/lib/theming/theming.module.ts","../../../../libs/core/src/lib/theming/fundamental-ngx-core-theming.ts"],"sourcesContent":["import { ThemeDefinition, ThemeStyleLink } from './interfaces/theme.interface';\nimport { ThemingConfig } from './interfaces/theming-config.interface';\n\n/**\n * Theming Configuration.\n */\nexport class BaseThemingConfig implements ThemingConfig {\n /**\n * Array of user-defined themes.\n */\n customThemes: ThemeDefinition[] = [];\n /**\n * Default theme.\n */\n defaultTheme = 'sap_fiori_3';\n /**\n * Default theme font file. Used as a fallback for themes which do not have own font file.\n */\n defaultFontFile = 'sap_fiori_3';\n /**\n * Whether to exclude default themes from the list of available options. By default, false.\n */\n excludeDefaultThemes = false;\n /**\n * Whether to exclude theme font file from inserting it onto the page. By default, false.\n */\n excludeThemingFonts = false;\n /**\n * URL Query parameter flag to change theme based on the provided parameter.\n */\n themeQueryParam = 'theme';\n /**\n * Whether to change theme if URL Query parameter flag has been found or changed. Default is true.\n */\n changeThemeOnQueryParamChange = true;\n /**\n * Identifiers of theme style links.\n */\n themeStyleLinkIdentifiers: Record<ThemeStyleLink, string> = {\n 'base-theme': 'base-theme-styles',\n 'custom-theme': 'custom-theme-styles',\n fonts: 'theme-font-styles'\n };\n}\n","import { ThemeDefinition } from './interfaces/theme.interface';\n\nexport const STANDARD_THEMES: ThemeDefinition[] = [\n {\n id: 'sap_horizon',\n name: 'Morning Horizon (Light)',\n theming: {\n themeFontPath: 'sap_horizon_fonts.css'\n }\n },\n {\n id: 'sap_horizon_dark',\n name: 'Evening Horizon (Dark)',\n theming: {\n themeFontPath: 'sap_horizon_fonts.css'\n }\n },\n {\n id: 'sap_horizon_hcb',\n name: 'Horizon High Contrast Black',\n description: 'Optimized contrast and accessibility for extremely bright environments',\n theming: {\n themeFontPath: 'sap_horizon_fonts.css'\n }\n },\n {\n id: 'sap_horizon_hcw',\n name: 'Horizon High Contrast White',\n description: 'Optimized contrast and accessibility for extremely dark environments',\n theming: {\n themeFontPath: 'sap_horizon_fonts.css'\n }\n },\n {\n id: 'sap_fiori_3',\n name: 'Quartz Light',\n description: 'Use in regular office environment'\n },\n {\n id: 'sap_fiori_3_dark',\n name: 'Quartz Dark',\n description: 'Use in dimmed environments'\n },\n {\n id: 'sap_fiori_3_hcb',\n name: 'Quartz High Contrast Black',\n description: 'Optimized contrast and accessibility for extremely bright environments'\n },\n {\n id: 'sap_fiori_3_hcw',\n name: 'Quartz High Contrast White',\n description: 'Optimized contrast and accessibility for extremely dark environments'\n },\n {\n id: 'sap_fiori_3_light_dark',\n name: 'Quartz Auto (Depending on the OS Settings)'\n }\n];\n","import { InjectionToken } from '@angular/core';\nimport { ThemingConfig } from './interfaces/theming-config.interface';\n\nexport const THEMING_CONFIG_TOKEN = new InjectionToken<Partial<ThemingConfig>>('FdThemingConfig');\n","import { DOCUMENT } from '@angular/common';\nimport { Inject, Injectable, isDevMode, OnDestroy, Optional, Renderer2, RendererFactory2 } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { cloneDeep, merge } from 'lodash-es';\nimport { BehaviorSubject, Observable, Subject } from 'rxjs';\nimport { filter, takeUntil } from 'rxjs/operators';\nimport { Nullable, THEME_SWITCHER_ROUTER_MISSING_ERROR } from '@fundamental-ngx/cdk/utils';\nimport { BaseThemingConfig } from './config';\nimport { ThemingConfig } from './interfaces/theming-config.interface';\nimport { STANDARD_THEMES } from './standard-themes';\nimport {\n CompleteThemeDefinition,\n CompleteThemingResource,\n ThemeDefinition,\n ThemeStyleLink\n} from './interfaces/theme.interface';\nimport { THEMING_CONFIG_TOKEN } from './tokens';\n\n@Injectable()\nexport class ThemingService implements OnDestroy {\n /**\n * Theming configuration.\n */\n readonly config = new BaseThemingConfig();\n\n /**\n * Observable of the current theme, applied to the application.\n */\n get currentTheme(): Observable<CompleteThemeDefinition | null> {\n return this._currentThemeSubject.asObservable();\n }\n\n /** @hidden */\n private readonly _renderer: Renderer2;\n\n /** @hidden */\n private readonly _availableThemes: Map<string, CompleteThemeDefinition>;\n\n /** @hidden */\n private readonly _standardThemes: ThemeDefinition[] = [];\n\n /** @hidden **/\n private readonly _onDestroy$: Subject<void> = new Subject<void>();\n\n /** @hidden */\n private readonly _currentThemeSubject: BehaviorSubject<CompleteThemeDefinition | null> =\n new BehaviorSubject<CompleteThemeDefinition | null>(null);\n\n /**\n * @hidden\n */\n constructor(\n private _rendererFactory: RendererFactory2,\n @Inject(DOCUMENT) private _document: Document,\n @Optional() private _activatedRoute: ActivatedRoute,\n @Optional()\n @Inject(THEMING_CONFIG_TOKEN)\n private readonly _providedConfig: Partial<ThemingConfig>\n ) {\n this.config = merge(cloneDeep(this.config), cloneDeep(this._providedConfig));\n\n this._renderer = this._rendererFactory.createRenderer(this._document, null);\n\n if (!this.config.excludeDefaultThemes) {\n this._standardThemes = STANDARD_THEMES;\n }\n\n const mergedThemes = this._formatProvidedThemes(this.config.customThemes);\n this._availableThemes = new Map<string, CompleteThemeDefinition>(\n mergedThemes.map((theme) => [theme.id, theme])\n );\n }\n\n /**\n * Initiates theme change based on query parameter or provided default theme in config.\n */\n init(): void {\n if (this.config.changeThemeOnQueryParamChange) {\n this._setThemeByRoute();\n } else {\n this.setTheme(this.config.defaultTheme);\n }\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._onDestroy$.next();\n this._onDestroy$.complete();\n }\n\n /**\n * Sets defined theme.\n * @param themeId ID of theme that needs to be used by the application.\n */\n setTheme(themeId: string): boolean {\n const theme = this._availableThemes.get(themeId);\n\n if (!theme) {\n console.warn(\n `Theme with ID '${themeId}' is not found. Please check if ID is correct or provide custom theme for ThemingModule.`\n );\n return false;\n }\n\n this._setThemeResource('base-theme', theme.theming.themingBasePath);\n this._setThemeResource('custom-theme', theme.theming.themePath);\n\n if (!this.config.excludeThemingFonts) {\n this._setThemeResource('fonts', theme.theming.themeFontPath);\n }\n\n this._currentThemeSubject.next(theme);\n\n return true;\n }\n\n /**\n * Returns array of available themes.\n */\n getThemes(): CompleteThemeDefinition[] {\n return [...this._availableThemes].map((entry) => entry[1]);\n }\n\n /**\n * Returns current theme definition.\n */\n getCurrentTheme(): Nullable<ThemeDefinition> {\n return this._currentThemeSubject.value;\n }\n\n /**\n * @hidden\n * @param type\n * @param resourceUrl\n * @private\n */\n private _setThemeResource(type: ThemeStyleLink, resourceUrl: string): void {\n const linkElm = this._getStyleLinkElement(type);\n\n if (linkElm.getAttribute('href') === resourceUrl) {\n return;\n }\n\n this._renderer.setAttribute(linkElm, 'href', resourceUrl);\n }\n\n /**\n * @hidden\n * @param type\n * @private\n */\n private _getStyleLinkElement(type: ThemeStyleLink): HTMLLinkElement {\n const existingLinkElement = this._document.getElementById(this.config.themeStyleLinkIdentifiers[type]);\n\n if (existingLinkElement) {\n return existingLinkElement as HTMLLinkElement;\n }\n\n const newLinkElement = this._renderer.createElement('link');\n this._renderer.setAttribute(newLinkElement, 'rel', 'stylesheet');\n this._renderer.setAttribute(newLinkElement, 'id', this.config.themeStyleLinkIdentifiers[type]);\n this._renderer.appendChild(this._document.head, newLinkElement);\n\n return newLinkElement;\n }\n\n /**\n * @hidden\n * @param themes\n * @private\n */\n private _formatProvidedThemes(themes?: ThemeDefinition[]): CompleteThemeDefinition[] {\n themes = themes || [];\n const mergedThemes = [...this._standardThemes, ...themes];\n\n if (mergedThemes.length === 0 && isDevMode()) {\n console.error('Error. No themes were provided. Please check your configuration.');\n }\n\n return mergedThemes.map((theme) => {\n theme.theming = this._getThemingResourceConfig(theme);\n return theme;\n }) as CompleteThemeDefinition[];\n }\n\n /** @hidden */\n private _getThemingResourceConfig(theme: ThemeDefinition): CompleteThemingResource {\n const existingConfig = theme.theming || {};\n const defaultConfig: CompleteThemingResource = {\n themingBasePath: `assets/theming-base/${theme.id}/css_variables.css`,\n themePath: `assets/fundamental-styles-theming/${theme.id}.css`,\n themeFontPath: `${this.config.defaultFontFile}_fonts.css`\n };\n\n return Object.assign(defaultConfig, existingConfig);\n }\n\n /** @hidden */\n private _getNativeParameterByName(paramName: string): string {\n paramName = paramName.replace(/[[\\\\\\]]/g, '\\\\$&');\n const regex = new RegExp('[?&]' + paramName + '(=([^&#]*)|&|#|$)'),\n results = regex.exec(window.location.href);\n if (!results || !results[2]) {\n return '';\n }\n return decodeURIComponent(results[2].replace(/\\+/g, ' '));\n }\n\n /**\n * @hidden\n * Set theme according to additional URL parameter.\n * This parameter can be changed in function argument.\n **/\n private _setThemeByRoute(): void {\n const paramName = this.config.themeQueryParam;\n\n if (!this._activatedRoute) {\n throw new Error(THEME_SWITCHER_ROUTER_MISSING_ERROR);\n }\n\n this._activatedRoute.queryParams\n .pipe(\n takeUntil(this._onDestroy$),\n filter((param) => param && param[paramName])\n )\n .subscribe((param) => this.setTheme(param[paramName]));\n\n const nativeTheme = this._getNativeParameterByName(paramName) || this.config.defaultTheme;\n this.setTheme(nativeTheme);\n }\n}\n","import { ModuleWithProviders, NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { BaseThemingConfig } from './config';\nimport { ThemingConfig } from './interfaces/theming-config.interface';\nimport { ThemingService } from './theming.service';\nimport { THEMING_CONFIG_TOKEN } from './tokens';\n\n@NgModule({\n imports: [CommonModule],\n providers: [\n {\n provide: THEMING_CONFIG_TOKEN,\n useValue: new BaseThemingConfig()\n },\n ThemingService\n ]\n})\nexport class ThemingModule {\n /** Module with providers */\n static withConfig(config: Partial<ThemingConfig>): ModuleWithProviders<ThemingModule> {\n return {\n ngModule: ThemingModule,\n providers: [\n {\n provide: THEMING_CONFIG_TOKEN,\n useValue: config\n }\n ]\n };\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fundamental-ngx-core-theming.mjs","sources":["../../../../libs/core/src/lib/theming/config.ts","../../../../libs/core/src/lib/theming/standard-themes.ts","../../../../libs/core/src/lib/theming/tokens.ts","../../../../libs/core/src/lib/theming/theming.service.ts","../../../../libs/core/src/lib/theming/provide-theming.ts","../../../../libs/core/src/lib/theming/theming.module.ts","../../../../libs/core/src/lib/theming/fundamental-ngx-core-theming.ts"],"sourcesContent":["import { ThemeDefinition, ThemeStyleLink } from './interfaces/theme.interface';\nimport { ThemingConfig } from './interfaces/theming-config.interface';\n\n/**\n * Theming Configuration.\n */\nexport class BaseThemingConfig implements ThemingConfig {\n /**\n * Array of user-defined themes.\n */\n customThemes: ThemeDefinition[] = [];\n /**\n * Default theme.\n */\n defaultTheme = 'sap_fiori_3';\n /**\n * Default theme font file. Used as a fallback for themes which do not have own font file.\n */\n defaultFontFile = 'sap_fiori_3';\n /**\n * Whether to exclude default themes from the list of available options. By default, false.\n */\n excludeDefaultThemes = false;\n /**\n * Whether to exclude theme font file from inserting it onto the page. By default, false.\n */\n excludeThemingFonts = false;\n /**\n * URL Query parameter flag to change theme based on the provided parameter.\n */\n themeQueryParam = 'theme';\n /**\n * Whether to change theme if URL Query parameter flag has been found or changed. Default is true.\n */\n changeThemeOnQueryParamChange = true;\n /**\n * Identifiers of theme style links.\n */\n themeStyleLinkIdentifiers: Record<ThemeStyleLink, string> = {\n 'base-theme': 'base-theme-styles',\n 'custom-theme': 'custom-theme-styles',\n fonts: 'theme-font-styles'\n };\n}\n","import { ThemeDefinition } from './interfaces/theme.interface';\n\nexport const STANDARD_THEMES: ThemeDefinition[] = [\n {\n id: 'sap_horizon',\n name: 'Morning Horizon (Light)',\n theming: {\n themeFontPath: 'sap_horizon_fonts.css'\n }\n },\n {\n id: 'sap_horizon_dark',\n name: 'Evening Horizon (Dark)',\n theming: {\n themeFontPath: 'sap_horizon_fonts.css'\n }\n },\n {\n id: 'sap_horizon_hcb',\n name: 'Horizon High Contrast Black',\n description: 'Optimized contrast and accessibility for extremely bright environments',\n theming: {\n themeFontPath: 'sap_horizon_fonts.css'\n }\n },\n {\n id: 'sap_horizon_hcw',\n name: 'Horizon High Contrast White',\n description: 'Optimized contrast and accessibility for extremely dark environments',\n theming: {\n themeFontPath: 'sap_horizon_fonts.css'\n }\n },\n {\n id: 'sap_fiori_3',\n name: 'Quartz Light',\n description: 'Use in regular office environment'\n },\n {\n id: 'sap_fiori_3_dark',\n name: 'Quartz Dark',\n description: 'Use in dimmed environments'\n },\n {\n id: 'sap_fiori_3_hcb',\n name: 'Quartz High Contrast Black',\n description: 'Optimized contrast and accessibility for extremely bright environments'\n },\n {\n id: 'sap_fiori_3_hcw',\n name: 'Quartz High Contrast White',\n description: 'Optimized contrast and accessibility for extremely dark environments'\n },\n {\n id: 'sap_fiori_3_light_dark',\n name: 'Quartz Auto (Depending on the OS Settings)'\n }\n];\n","import { InjectionToken } from '@angular/core';\nimport { BaseThemingConfig } from './config';\nimport { ThemingConfig } from './interfaces/theming-config.interface';\n\nexport const THEMING_CONFIG_TOKEN = new InjectionToken<Partial<ThemingConfig>>('FdThemingConfig', {\n factory: () => new BaseThemingConfig()\n});\n","import { DOCUMENT } from '@angular/common';\nimport { Inject, Injectable, isDevMode, OnDestroy, Optional, Renderer2, RendererFactory2 } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { cloneDeep, merge } from 'lodash-es';\nimport { BehaviorSubject, Observable, Subject } from 'rxjs';\nimport { filter, takeUntil } from 'rxjs/operators';\nimport { Nullable, THEME_SWITCHER_ROUTER_MISSING_ERROR } from '@fundamental-ngx/cdk/utils';\nimport { BaseThemingConfig } from './config';\nimport { ThemingConfig } from './interfaces/theming-config.interface';\nimport { STANDARD_THEMES } from './standard-themes';\nimport {\n CompleteThemeDefinition,\n CompleteThemingResource,\n ThemeDefinition,\n ThemeStyleLink\n} from './interfaces/theme.interface';\nimport { THEMING_CONFIG_TOKEN } from './tokens';\n\n@Injectable()\nexport class ThemingService implements OnDestroy {\n /**\n * Theming configuration.\n */\n readonly config = new BaseThemingConfig();\n\n /**\n * Observable of the current theme, applied to the application.\n */\n get currentTheme(): Observable<CompleteThemeDefinition | null> {\n return this._currentThemeSubject.asObservable();\n }\n\n /** @hidden */\n private readonly _renderer: Renderer2;\n\n /** @hidden */\n private readonly _availableThemes: Map<string, CompleteThemeDefinition>;\n\n /** @hidden */\n private readonly _standardThemes: ThemeDefinition[] = [];\n\n /** @hidden **/\n private readonly _onDestroy$: Subject<void> = new Subject<void>();\n\n /** @hidden */\n private readonly _currentThemeSubject: BehaviorSubject<CompleteThemeDefinition | null> =\n new BehaviorSubject<CompleteThemeDefinition | null>(null);\n\n /**\n * @hidden\n */\n constructor(\n private _rendererFactory: RendererFactory2,\n @Inject(DOCUMENT) private _document: Document,\n @Optional() private _activatedRoute: ActivatedRoute,\n @Optional()\n @Inject(THEMING_CONFIG_TOKEN)\n private readonly _providedConfig: Partial<ThemingConfig>\n ) {\n this.config = merge(cloneDeep(this.config), cloneDeep(this._providedConfig));\n\n this._renderer = this._rendererFactory.createRenderer(this._document, null);\n\n if (!this.config.excludeDefaultThemes) {\n this._standardThemes = STANDARD_THEMES;\n }\n\n const mergedThemes = this._formatProvidedThemes(this.config.customThemes);\n this._availableThemes = new Map<string, CompleteThemeDefinition>(\n mergedThemes.map((theme) => [theme.id, theme])\n );\n }\n\n /**\n * Initiates theme change based on query parameter or provided default theme in config.\n */\n init(): void {\n if (this.config.changeThemeOnQueryParamChange) {\n this._setThemeByRoute();\n } else {\n this.setTheme(this.config.defaultTheme);\n }\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._onDestroy$.next();\n this._onDestroy$.complete();\n }\n\n /**\n * Sets defined theme.\n * @param themeId ID of theme that needs to be used by the application.\n */\n setTheme(themeId: string): boolean {\n const theme = this._availableThemes.get(themeId);\n\n if (!theme) {\n console.warn(\n `Theme with ID '${themeId}' is not found. Please check if ID is correct or provide custom theme for ThemingModule.`\n );\n return false;\n }\n\n this._setThemeResource('base-theme', theme.theming.themingBasePath);\n this._setThemeResource('custom-theme', theme.theming.themePath);\n\n if (!this.config.excludeThemingFonts) {\n this._setThemeResource('fonts', theme.theming.themeFontPath);\n }\n\n this._currentThemeSubject.next(theme);\n\n return true;\n }\n\n /**\n * Returns array of available themes.\n */\n getThemes(): CompleteThemeDefinition[] {\n return [...this._availableThemes].map((entry) => entry[1]);\n }\n\n /**\n * Returns current theme definition.\n */\n getCurrentTheme(): Nullable<ThemeDefinition> {\n return this._currentThemeSubject.value;\n }\n\n /**\n * @hidden\n * @param type\n * @param resourceUrl\n * @private\n */\n private _setThemeResource(type: ThemeStyleLink, resourceUrl: string): void {\n const linkElm = this._getStyleLinkElement(type);\n\n if (linkElm.getAttribute('href') === resourceUrl) {\n return;\n }\n\n this._renderer.setAttribute(linkElm, 'href', resourceUrl);\n }\n\n /**\n * @hidden\n * @param type\n * @private\n */\n private _getStyleLinkElement(type: ThemeStyleLink): HTMLLinkElement {\n const existingLinkElement = this._document.getElementById(this.config.themeStyleLinkIdentifiers[type]);\n\n if (existingLinkElement) {\n return existingLinkElement as HTMLLinkElement;\n }\n\n const newLinkElement = this._renderer.createElement('link');\n this._renderer.setAttribute(newLinkElement, 'rel', 'stylesheet');\n this._renderer.setAttribute(newLinkElement, 'id', this.config.themeStyleLinkIdentifiers[type]);\n this._renderer.appendChild(this._document.head, newLinkElement);\n\n return newLinkElement;\n }\n\n /**\n * @hidden\n * @param themes\n * @private\n */\n private _formatProvidedThemes(themes?: ThemeDefinition[]): CompleteThemeDefinition[] {\n themes = themes || [];\n const mergedThemes = [...this._standardThemes, ...themes];\n\n if (mergedThemes.length === 0 && isDevMode()) {\n console.error('Error. No themes were provided. Please check your configuration.');\n }\n\n return mergedThemes.map((theme) => {\n theme.theming = this._getThemingResourceConfig(theme);\n return theme;\n }) as CompleteThemeDefinition[];\n }\n\n /** @hidden */\n private _getThemingResourceConfig(theme: ThemeDefinition): CompleteThemingResource {\n const existingConfig = theme.theming || {};\n const defaultConfig: CompleteThemingResource = {\n themingBasePath: `assets/theming-base/${theme.id}/css_variables.css`,\n themePath: `assets/fundamental-styles-theming/${theme.id}.css`,\n themeFontPath: `${this.config.defaultFontFile}_fonts.css`\n };\n\n return Object.assign(defaultConfig, existingConfig);\n }\n\n /** @hidden */\n private _getNativeParameterByName(paramName: string): string {\n paramName = paramName.replace(/[[\\\\\\]]/g, '\\\\$&');\n const regex = new RegExp('[?&]' + paramName + '(=([^&#]*)|&|#|$)'),\n results = regex.exec(window.location.href);\n if (!results || !results[2]) {\n return '';\n }\n return decodeURIComponent(results[2].replace(/\\+/g, ' '));\n }\n\n /**\n * @hidden\n * Set theme according to additional URL parameter.\n * This parameter can be changed in function argument.\n **/\n private _setThemeByRoute(): void {\n const paramName = this.config.themeQueryParam;\n\n if (!this._activatedRoute) {\n throw new Error(THEME_SWITCHER_ROUTER_MISSING_ERROR);\n }\n\n this._activatedRoute.queryParams\n .pipe(\n takeUntil(this._onDestroy$),\n filter((param) => param && param[paramName])\n )\n .subscribe((param) => this.setTheme(param[paramName]));\n\n const nativeTheme = this._getNativeParameterByName(paramName) || this.config.defaultTheme;\n this.setTheme(nativeTheme);\n }\n}\n","import { Provider } from '@angular/core';\nimport { ThemingConfig } from './interfaces/theming-config.interface';\nimport { ThemingService } from './theming.service';\nimport { THEMING_CONFIG_TOKEN } from './tokens';\n\n/**\n * Provides theming configuration\n * @param config\n */\nexport function provideTheming(config: Partial<ThemingConfig> = {}): Provider[] {\n return [\n ThemingService,\n {\n provide: THEMING_CONFIG_TOKEN,\n useValue: config\n }\n ];\n}\n","import { CommonModule } from '@angular/common';\nimport { ModuleWithProviders, NgModule } from '@angular/core';\nimport { ThemingConfig } from './interfaces/theming-config.interface';\nimport { provideTheming } from './provide-theming';\nimport { ThemingService } from './theming.service';\n\n@NgModule({\n imports: [CommonModule],\n providers: [ThemingService]\n})\nexport class ThemingModule {\n /** Module with providers */\n static withConfig(config: Partial<ThemingConfig>): ModuleWithProviders<ThemingModule> {\n return {\n ngModule: ThemingModule,\n providers: [provideTheming(config)]\n };\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ # Generic Tag
2
+
3
+ This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 12.0.5.
4
+
5
+ ## Code scaffolding
6
+
7
+ Run `ng generate component component-name --project generic-tag` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module --project generic-tag`.
8
+
9
+ > Note: Don't forget to add `--project generic-tag` or else it will be added to the default project in your `angular.json` file.
10
+
11
+ ## Build
12
+
13
+ Run `ng build generic-tag` to build the project. The build artifacts will be stored in the `dist/` directory.
14
+
15
+ ## Publishing
16
+
17
+ After building your library with `ng build generic-tag`, go to the dist folder `cd dist/generic-tag` and run `npm publish`.
18
+
19
+ ## Running unit tests
20
+
21
+ Run `ng test generic-tag` to execute the unit tests via [Karma](https://karma-runner.github.io).
22
+
23
+ ## Further help
24
+
25
+ To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI Overview and Command Reference](https://angular.io/cli) page.
@@ -0,0 +1,43 @@
1
+ import { ElementRef, OnChanges, OnInit } from '@angular/core';
2
+ import { CssClassBuilder, Nullable } from '@fundamental-ngx/cdk/utils';
3
+ import * as i0 from "@angular/core";
4
+ export type GenericTagType = 'error' | 'success' | 'warning' | 'information';
5
+ export declare class GenericTagComponent implements OnChanges, OnInit, CssClassBuilder {
6
+ /** User's custom classes */
7
+ class: string;
8
+ /**
9
+ * The type of the Generic Tag.
10
+ * Can be one of the following: 'error' | 'success' | 'warning' | 'information'.
11
+ * For default Generic Tag omit this property.
12
+ */
13
+ type: Nullable<GenericTagType>;
14
+ /**
15
+ * Required input
16
+ * The KPI Name of the Generic tag. Standard text.
17
+ * Always use a meaningful title. Keep it simple and try to use no more than 3 words.
18
+ */
19
+ name: string;
20
+ /**
21
+ * The KPI Value of the Generic tag.
22
+ * The value represents the numeric (key) attribute and its unit.
23
+ */
24
+ value: Nullable<string>;
25
+ /**
26
+ * Aria defines role description for the Generic Tag
27
+ */
28
+ ariaRoleDescription: Nullable<string>;
29
+ /** @hidden */
30
+ readonly elementRef: ElementRef<any>;
31
+ /** @hidden
32
+ * CssClassBuilder interface implementation
33
+ * function must return single string
34
+ * function is responsible for order which css classes are applied
35
+ */
36
+ buildComponentCssClass(): string[];
37
+ /** @hidden */
38
+ ngOnChanges(): void;
39
+ /** @hidden */
40
+ ngOnInit(): void;
41
+ static ɵfac: i0.ɵɵFactoryDeclaration<GenericTagComponent, never>;
42
+ static ɵcmp: i0.ɵɵComponentDeclaration<GenericTagComponent, "[fd-generic-tag]", never, { "class": { "alias": "class"; "required": false; }; "type": { "alias": "type"; "required": false; }; "name": { "alias": "name"; "required": true; }; "value": { "alias": "value"; "required": false; }; "ariaRoleDescription": { "alias": "ariaRoleDescription"; "required": false; }; }, {}, never, never, true, never, false>;
43
+ }
@@ -0,0 +1,7 @@
1
+ import * as i0 from "@angular/core";
2
+ import * as i1 from "./generic-tag.component";
3
+ export declare class GenericTagModule {
4
+ static ɵfac: i0.ɵɵFactoryDeclaration<GenericTagModule, never>;
5
+ static ɵmod: i0.ɵɵNgModuleDeclaration<GenericTagModule, never, [typeof i1.GenericTagComponent], [typeof i1.GenericTagComponent]>;
6
+ static ɵinj: i0.ɵɵInjectorDeclaration<GenericTagModule>;
7
+ }
@@ -0,0 +1,3 @@
1
+ export * from './generic-tag.component';
2
+ export * from './generic-tag.module';
3
+ export * from './tokens';
@@ -0,0 +1,2 @@
1
+ import { InjectionToken } from '@angular/core';
2
+ export declare const FD_GENERIC_TAG_COMPONENT: InjectionToken<unknown>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fundamental-ngx/core",
3
- "version": "0.46.0-rc.13",
3
+ "version": "0.46.0-rc.14",
4
4
  "schematics": "./schematics/collection.json",
5
5
  "ng-update": {
6
6
  "migrations": "./schematics/migrations.json"
@@ -28,8 +28,8 @@
28
28
  "rxjs": "^7.8.0"
29
29
  },
30
30
  "dependencies": {
31
- "@fundamental-ngx/cdk": "0.46.0-rc.13",
32
- "@fundamental-ngx/i18n": "0.46.0-rc.13",
31
+ "@fundamental-ngx/cdk": "0.46.0-rc.14",
32
+ "@fundamental-ngx/i18n": "0.46.0-rc.14",
33
33
  "compare-versions": "^6.0.0",
34
34
  "fast-deep-equal": "3.1.3",
35
35
  "focus-trap": "^7.1.0",
@@ -217,6 +217,12 @@
217
217
  "esm": "./esm2022/formatted-text/fundamental-ngx-core-formatted-text.mjs",
218
218
  "default": "./fesm2022/fundamental-ngx-core-formatted-text.mjs"
219
219
  },
220
+ "./generic-tag": {
221
+ "types": "./generic-tag/index.d.ts",
222
+ "esm2022": "./esm2022/generic-tag/fundamental-ngx-core-generic-tag.mjs",
223
+ "esm": "./esm2022/generic-tag/fundamental-ngx-core-generic-tag.mjs",
224
+ "default": "./fesm2022/fundamental-ngx-core-generic-tag.mjs"
225
+ },
220
226
  "./grid-list": {
221
227
  "types": "./grid-list/index.d.ts",
222
228
  "esm2022": "./esm2022/grid-list/fundamental-ngx-core-grid-list.mjs",
@@ -54,21 +54,21 @@ function addExternalLibraries(options) {
54
54
  });
55
55
  }
56
56
  if (!(0, package_utils_1.hasPackage)(tree, '@fundamental-ngx/i18n') ||
57
- (0, package_utils_1.checkPackageVersion)(tree, '@fundamental-ngx/i18n', '0.46.0-rc.13', '<')) {
57
+ (0, package_utils_1.checkPackageVersion)(tree, '@fundamental-ngx/i18n', '0.46.0-rc.14', '<')) {
58
58
  dependencies.push({
59
59
  type: dependencies_1.NodeDependencyType.Default,
60
60
  // Will be replaced with the real version during sync-version script run
61
- version: `0.46.0-rc.13`,
61
+ version: `0.46.0-rc.14`,
62
62
  name: '@fundamental-ngx/i18n',
63
63
  overwrite: true
64
64
  });
65
65
  }
66
66
  if (!(0, package_utils_1.hasPackage)(tree, '@fundamental-ngx/cdk') ||
67
- (0, package_utils_1.checkPackageVersion)(tree, '@fundamental-ngx/cdk', '0.46.0-rc.13', '<')) {
67
+ (0, package_utils_1.checkPackageVersion)(tree, '@fundamental-ngx/cdk', '0.46.0-rc.14', '<')) {
68
68
  dependencies.push({
69
69
  type: dependencies_1.NodeDependencyType.Default,
70
70
  // Will be replaced with the real version during sync-version script run
71
- version: `0.46.0-rc.13`,
71
+ version: `0.46.0-rc.14`,
72
72
  name: '@fundamental-ngx/cdk',
73
73
  overwrite: true
74
74
  });
@@ -1,7 +1,8 @@
1
- export * from './theming.module';
2
- export * from './tokens';
3
1
  export * from './config';
4
2
  export * from './interfaces/theme.interface';
5
3
  export * from './interfaces/theming-config.interface';
4
+ export * from './provide-theming';
6
5
  export * from './standard-themes';
6
+ export * from './theming.module';
7
7
  export * from './theming.service';
8
+ export * from './tokens';
@@ -0,0 +1,7 @@
1
+ import { Provider } from '@angular/core';
2
+ import { ThemingConfig } from './interfaces/theming-config.interface';
3
+ /**
4
+ * Provides theming configuration
5
+ * @param config
6
+ */
7
+ export declare function provideTheming(config?: Partial<ThemingConfig>): Provider[];