@elementar-rt/components 0.7.0 → 0.7.2
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.
- package/fesm2022/elementar-rt-components-stat-card.mjs +2 -2
- package/fesm2022/elementar-rt-components-stat-card.mjs.map +1 -1
- package/package.json +1 -1
- package/schematics/collection.json +16 -0
- package/schematics/ng-add/actions/add-fonts.d.ts +2 -0
- package/schematics/ng-add/actions/add-fonts.js +70 -0
- package/schematics/ng-add/actions/add-fonts.js.map +1 -0
- package/schematics/ng-add/actions/add-styles.d.ts +3 -0
- package/schematics/ng-add/actions/add-styles.js +70 -0
- package/schematics/ng-add/actions/add-styles.js.map +1 -0
- package/schematics/ng-add/index.d.ts +3 -0
- package/schematics/ng-add/index.js +83 -0
- package/schematics/ng-add/index.js.map +1 -0
- package/schematics/ng-add/schema.d.ts +3 -0
- package/schematics/ng-add/schema.js +3 -0
- package/schematics/ng-add/schema.js.map +1 -0
- package/schematics/ng-add/schema.json +8 -0
- package/schematics/ng-add/setup-project.d.ts +3 -0
- package/schematics/ng-add/setup-project.js +14 -0
- package/schematics/ng-add/setup-project.js.map +1 -0
- package/schematics/utils/package-config.d.ts +3 -0
- package/schematics/utils/package-config.js +36 -0
- package/schematics/utils/package-config.js.map +1 -0
- package/schematics/utils/project.d.ts +10 -0
- package/schematics/utils/project.js +46 -0
- package/schematics/utils/project.js.map +1 -0
- package/types/elementar-rt-components-announcement.d.ts +1 -1
|
@@ -9,14 +9,14 @@ class StatCardComponent {
|
|
|
9
9
|
trendLabel = input('vs last period', ...(ngDevMode ? [{ debugName: "trendLabel" }] : /* istanbul ignore next */ []));
|
|
10
10
|
icon = input('', ...(ngDevMode ? [{ debugName: "icon" }] : /* istanbul ignore next */ []));
|
|
11
11
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: StatCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
12
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.22", type: StatCardComponent, isStandalone: true, selector: "emr-stat-card", inputs: { label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, trend: { classPropertyName: "trend", publicName: "trend", isSignal: true, isRequired: false, transformFunction: null }, trendValue: { classPropertyName: "trendValue", publicName: "trendValue", isSignal: true, isRequired: false, transformFunction: null }, trendLabel: { classPropertyName: "trendLabel", publicName: "trendLabel", isSignal: true, isRequired: false, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "attr.data-trend": "trend()" }, classAttribute: "emr-stat-card" }, exportAs: ["emrStatCard"], ngImport: i0, template: "<div class=\"sc-header\">\n <span class=\"sc-label\">{{ label() }}</span>\n @if (icon()) {\n <span class=\"sc-icon\">{{ icon() }}</span>\n } @else {\n <ng-content select=\"[emrStatCardIcon]\"/>\n }\n</div>\n\n<div class=\"sc-value\">{{ value() }}</div>\n\n<ng-content select=\"emr-micro-chart,[emrStatCardChart]\"/>\n\n@if (trendValue()) {\n <div class=\"sc-trend\">\n <span class=\"sc-trend-arrow\">\n @if (trend() === 'up') { \u25B2 }\n @else if (trend() === 'down') { \u25BC }\n @else { \u2014 }\n </span>\n <span class=\"sc-trend-value\">{{ trendValue() }}</span>\n <span class=\"sc-trend-label\">{{ trendLabel() }}</span>\n </div>\n}\n\n<ng-content/>\n", styles: [":host{--emr-sc-bg: var(--color-surface-container-low);--emr-sc-border-radius: 1.5rem;--emr-sc-padding: calc(var(--spacing, .25rem) * 5);--emr-sc-shadow: 0 1px 3px var(--color-shadow);--emr-sc-value-size: 1.875rem;--emr-sc-label-size: .75rem;--emr-sc-trend-up-color: var(--color-green);--emr-sc-trend-down-color: var(--color-red);--emr-sc-trend-neutral-color: var(--color-on-surface-variant);display:flex;flex-direction:column;gap:calc(var(--spacing, .25rem) * 2);background:var(--emr-sc-bg);border-radius:var(--emr-sc-border-radius);padding:var(--emr-sc-padding);box-shadow:var(--emr-sc-shadow)}@supports (color: color-mix(in lab,red,red)){:host{--emr-sc-shadow: 0 1px 3px color-mix(in srgb, var(--color-shadow) 8%, transparent)}}.sc-header{display:flex;align-items:center;justify-content:space-between}.sc-label{font-size:var(--emr-sc-label-size);font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--color-on-surface-variant)}.sc-icon{font-size:calc(var(--spacing, .25rem) * 5);color:var(--color-on-surface-variant)}.sc-value{font-size:var(--emr-sc-value-size);font-weight:700;color:var(--color-on-surface);line-height:1.1;font-variant-numeric:tabular-nums}.sc-trend{display:flex;align-items:center;gap:var(--spacing, .25rem);font-size:.75rem;margin-top:var(--spacing, .25rem)}.sc-trend-arrow{font-size:.65rem}:host([data-trend=up]) .sc-trend-arrow{color:var(--emr-sc-trend-up-color)}:host([data-trend=down]) .sc-trend-arrow{color:var(--emr-sc-trend-down-color)}:host([data-trend=neutral]) .sc-trend-arrow{color:var(--emr-sc-trend-neutral-color)}.sc-trend-value{font-weight:600}:host([data-trend=up]) .sc-trend-value{color:var(--emr-sc-trend-up-color)}:host([data-trend=down]) .sc-trend-value{color:var(--emr-sc-trend-down-color)}.sc-trend-label{color:var(--color-on-surface-variant)}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"] });
|
|
12
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.22", type: StatCardComponent, isStandalone: true, selector: "emr-stat-card", inputs: { label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, trend: { classPropertyName: "trend", publicName: "trend", isSignal: true, isRequired: false, transformFunction: null }, trendValue: { classPropertyName: "trendValue", publicName: "trendValue", isSignal: true, isRequired: false, transformFunction: null }, trendLabel: { classPropertyName: "trendLabel", publicName: "trendLabel", isSignal: true, isRequired: false, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "attr.data-trend": "trend()" }, classAttribute: "emr-stat-card" }, exportAs: ["emrStatCard"], ngImport: i0, template: "<div class=\"sc-header\">\n <span class=\"sc-label\">{{ label() }}</span>\n @if (icon()) {\n <span class=\"sc-icon\">{{ icon() }}</span>\n } @else {\n <ng-content select=\"[emrStatCardIcon]\"/>\n }\n</div>\n\n<div class=\"sc-value\">{{ value() }}</div>\n\n<ng-content select=\"emr-micro-chart,[emrStatCardChart]\"/>\n\n@if (trendValue()) {\n <div class=\"sc-trend\">\n <span class=\"sc-trend-arrow\">\n @if (trend() === 'up') { \u25B2 }\n @else if (trend() === 'down') { \u25BC }\n @else { \u2014 }\n </span>\n <span class=\"sc-trend-value\">{{ trendValue() }}</span>\n <span class=\"sc-trend-label\">{{ trendLabel() }}</span>\n </div>\n}\n\n<ng-content/>\n", styles: [":host{--emr-sc-bg: var(--color-surface-container-low);--emr-sc-border-radius: 1.5rem;--emr-sc-padding: calc(var(--spacing, .25rem) * 5);--emr-sc-shadow: 0 1px 3px var(--color-shadow);--emr-sc-value-size: 1.875rem;--emr-sc-label-size: .75rem;--emr-sc-trend-up-color: var(--color-green);--emr-sc-trend-down-color: var(--color-red);--emr-sc-trend-neutral-color: var(--color-on-surface-variant);display:flex;flex-direction:column;gap:calc(var(--spacing, .25rem) * 2);background:var(--emr-sc-bg);border-radius:var(--emr-sc-border-radius);padding:var(--emr-sc-padding);box-shadow:var(--emr-sc-shadow)}@supports (color: color-mix(in lab,red,red)){:host{--emr-sc-shadow: 0 1px 3px color-mix(in srgb, var(--color-shadow) 8%, transparent)}}.sc-header{display:flex;align-items:center;justify-content:space-between;gap:calc(var(--spacing, .25rem) * 2)}.sc-label{font-size:var(--emr-sc-label-size);font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--color-on-surface-variant);min-width:0;overflow-wrap:break-word}.sc-icon{flex-shrink:0;font-size:calc(var(--spacing, .25rem) * 5);color:var(--color-on-surface-variant)}.sc-value{font-size:var(--emr-sc-value-size);font-weight:700;color:var(--color-on-surface);line-height:1.1;font-variant-numeric:tabular-nums;white-space:var(--emr-sc-value-white-space, nowrap);min-width:0}.sc-trend{display:flex;flex-wrap:wrap;align-items:center;gap:var(--spacing, .25rem);font-size:.75rem;margin-top:var(--spacing, .25rem)}.sc-trend-arrow{font-size:.65rem}:host([data-trend=up]) .sc-trend-arrow{color:var(--emr-sc-trend-up-color)}:host([data-trend=down]) .sc-trend-arrow{color:var(--emr-sc-trend-down-color)}:host([data-trend=neutral]) .sc-trend-arrow{color:var(--emr-sc-trend-neutral-color)}.sc-trend-value{font-weight:600;white-space:nowrap}:host([data-trend=up]) .sc-trend-value{color:var(--emr-sc-trend-up-color)}:host([data-trend=down]) .sc-trend-value{color:var(--emr-sc-trend-down-color)}.sc-trend-label{color:var(--color-on-surface-variant)}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"] });
|
|
13
13
|
}
|
|
14
14
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: StatCardComponent, decorators: [{
|
|
15
15
|
type: Component,
|
|
16
16
|
args: [{ selector: 'emr-stat-card', exportAs: 'emrStatCard', host: {
|
|
17
17
|
'class': 'emr-stat-card',
|
|
18
18
|
'[attr.data-trend]': 'trend()',
|
|
19
|
-
}, template: "<div class=\"sc-header\">\n <span class=\"sc-label\">{{ label() }}</span>\n @if (icon()) {\n <span class=\"sc-icon\">{{ icon() }}</span>\n } @else {\n <ng-content select=\"[emrStatCardIcon]\"/>\n }\n</div>\n\n<div class=\"sc-value\">{{ value() }}</div>\n\n<ng-content select=\"emr-micro-chart,[emrStatCardChart]\"/>\n\n@if (trendValue()) {\n <div class=\"sc-trend\">\n <span class=\"sc-trend-arrow\">\n @if (trend() === 'up') { \u25B2 }\n @else if (trend() === 'down') { \u25BC }\n @else { \u2014 }\n </span>\n <span class=\"sc-trend-value\">{{ trendValue() }}</span>\n <span class=\"sc-trend-label\">{{ trendLabel() }}</span>\n </div>\n}\n\n<ng-content/>\n", styles: [":host{--emr-sc-bg: var(--color-surface-container-low);--emr-sc-border-radius: 1.5rem;--emr-sc-padding: calc(var(--spacing, .25rem) * 5);--emr-sc-shadow: 0 1px 3px var(--color-shadow);--emr-sc-value-size: 1.875rem;--emr-sc-label-size: .75rem;--emr-sc-trend-up-color: var(--color-green);--emr-sc-trend-down-color: var(--color-red);--emr-sc-trend-neutral-color: var(--color-on-surface-variant);display:flex;flex-direction:column;gap:calc(var(--spacing, .25rem) * 2);background:var(--emr-sc-bg);border-radius:var(--emr-sc-border-radius);padding:var(--emr-sc-padding);box-shadow:var(--emr-sc-shadow)}@supports (color: color-mix(in lab,red,red)){:host{--emr-sc-shadow: 0 1px 3px color-mix(in srgb, var(--color-shadow) 8%, transparent)}}.sc-header{display:flex;align-items:center;justify-content:space-between}.sc-label{font-size:var(--emr-sc-label-size);font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--color-on-surface-variant)}.sc-icon{font-size:calc(var(--spacing, .25rem) * 5);color:var(--color-on-surface-variant)}.sc-value{font-size:var(--emr-sc-value-size);font-weight:700;color:var(--color-on-surface);line-height:1.1;font-variant-numeric:tabular-nums}.sc-trend{display:flex;align-items:center;gap:var(--spacing, .25rem);font-size:.75rem;margin-top:var(--spacing, .25rem)}.sc-trend-arrow{font-size:.65rem}:host([data-trend=up]) .sc-trend-arrow{color:var(--emr-sc-trend-up-color)}:host([data-trend=down]) .sc-trend-arrow{color:var(--emr-sc-trend-down-color)}:host([data-trend=neutral]) .sc-trend-arrow{color:var(--emr-sc-trend-neutral-color)}.sc-trend-value{font-weight:600}:host([data-trend=up]) .sc-trend-value{color:var(--emr-sc-trend-up-color)}:host([data-trend=down]) .sc-trend-value{color:var(--emr-sc-trend-down-color)}.sc-trend-label{color:var(--color-on-surface-variant)}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"] }]
|
|
19
|
+
}, template: "<div class=\"sc-header\">\n <span class=\"sc-label\">{{ label() }}</span>\n @if (icon()) {\n <span class=\"sc-icon\">{{ icon() }}</span>\n } @else {\n <ng-content select=\"[emrStatCardIcon]\"/>\n }\n</div>\n\n<div class=\"sc-value\">{{ value() }}</div>\n\n<ng-content select=\"emr-micro-chart,[emrStatCardChart]\"/>\n\n@if (trendValue()) {\n <div class=\"sc-trend\">\n <span class=\"sc-trend-arrow\">\n @if (trend() === 'up') { \u25B2 }\n @else if (trend() === 'down') { \u25BC }\n @else { \u2014 }\n </span>\n <span class=\"sc-trend-value\">{{ trendValue() }}</span>\n <span class=\"sc-trend-label\">{{ trendLabel() }}</span>\n </div>\n}\n\n<ng-content/>\n", styles: [":host{--emr-sc-bg: var(--color-surface-container-low);--emr-sc-border-radius: 1.5rem;--emr-sc-padding: calc(var(--spacing, .25rem) * 5);--emr-sc-shadow: 0 1px 3px var(--color-shadow);--emr-sc-value-size: 1.875rem;--emr-sc-label-size: .75rem;--emr-sc-trend-up-color: var(--color-green);--emr-sc-trend-down-color: var(--color-red);--emr-sc-trend-neutral-color: var(--color-on-surface-variant);display:flex;flex-direction:column;gap:calc(var(--spacing, .25rem) * 2);background:var(--emr-sc-bg);border-radius:var(--emr-sc-border-radius);padding:var(--emr-sc-padding);box-shadow:var(--emr-sc-shadow)}@supports (color: color-mix(in lab,red,red)){:host{--emr-sc-shadow: 0 1px 3px color-mix(in srgb, var(--color-shadow) 8%, transparent)}}.sc-header{display:flex;align-items:center;justify-content:space-between;gap:calc(var(--spacing, .25rem) * 2)}.sc-label{font-size:var(--emr-sc-label-size);font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--color-on-surface-variant);min-width:0;overflow-wrap:break-word}.sc-icon{flex-shrink:0;font-size:calc(var(--spacing, .25rem) * 5);color:var(--color-on-surface-variant)}.sc-value{font-size:var(--emr-sc-value-size);font-weight:700;color:var(--color-on-surface);line-height:1.1;font-variant-numeric:tabular-nums;white-space:var(--emr-sc-value-white-space, nowrap);min-width:0}.sc-trend{display:flex;flex-wrap:wrap;align-items:center;gap:var(--spacing, .25rem);font-size:.75rem;margin-top:var(--spacing, .25rem)}.sc-trend-arrow{font-size:.65rem}:host([data-trend=up]) .sc-trend-arrow{color:var(--emr-sc-trend-up-color)}:host([data-trend=down]) .sc-trend-arrow{color:var(--emr-sc-trend-down-color)}:host([data-trend=neutral]) .sc-trend-arrow{color:var(--emr-sc-trend-neutral-color)}.sc-trend-value{font-weight:600;white-space:nowrap}:host([data-trend=up]) .sc-trend-value{color:var(--emr-sc-trend-up-color)}:host([data-trend=down]) .sc-trend-value{color:var(--emr-sc-trend-down-color)}.sc-trend-label{color:var(--color-on-surface-variant)}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"] }]
|
|
20
20
|
}], propDecorators: { label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }], value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }], trend: [{ type: i0.Input, args: [{ isSignal: true, alias: "trend", required: false }] }], trendValue: [{ type: i0.Input, args: [{ isSignal: true, alias: "trendValue", required: false }] }], trendLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "trendLabel", required: false }] }], icon: [{ type: i0.Input, args: [{ isSignal: true, alias: "icon", required: false }] }] } });
|
|
21
21
|
|
|
22
22
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"elementar-rt-components-stat-card.mjs","sources":["../../../projects/components/stat-card/src/stat-card/stat-card.component.ts","../../../projects/components/stat-card/src/stat-card/stat-card.component.html","../../../projects/components/stat-card/elementar-rt-components-stat-card.ts"],"sourcesContent":["import { Component, input, numberAttribute } from '@angular/core';\n\nexport type StatCardTrend = 'up' | 'down' | 'neutral';\n\n@Component({\n selector: 'emr-stat-card',\n exportAs: 'emrStatCard',\n templateUrl: './stat-card.component.html',\n styleUrl: './stat-card.component.scss',\n host: {\n 'class': 'emr-stat-card',\n '[attr.data-trend]': 'trend()',\n }\n})\nexport class StatCardComponent {\n label = input('');\n value = input('');\n trend = input<StatCardTrend>('neutral');\n trendValue = input('');\n trendLabel = input('vs last period');\n icon = input('');\n}\n","<div class=\"sc-header\">\n <span class=\"sc-label\">{{ label() }}</span>\n @if (icon()) {\n <span class=\"sc-icon\">{{ icon() }}</span>\n } @else {\n <ng-content select=\"[emrStatCardIcon]\"/>\n }\n</div>\n\n<div class=\"sc-value\">{{ value() }}</div>\n\n<ng-content select=\"emr-micro-chart,[emrStatCardChart]\"/>\n\n@if (trendValue()) {\n <div class=\"sc-trend\">\n <span class=\"sc-trend-arrow\">\n @if (trend() === 'up') { ▲ }\n @else if (trend() === 'down') { ▼ }\n @else { — }\n </span>\n <span class=\"sc-trend-value\">{{ trendValue() }}</span>\n <span class=\"sc-trend-label\">{{ trendLabel() }}</span>\n </div>\n}\n\n<ng-content/>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;MAca,iBAAiB,CAAA;AAC5B,IAAA,KAAK,GAAG,KAAK,CAAC,EAAE,4EAAC;AACjB,IAAA,KAAK,GAAG,KAAK,CAAC,EAAE,4EAAC;AACjB,IAAA,KAAK,GAAG,KAAK,CAAgB,SAAS,4EAAC;AACvC,IAAA,UAAU,GAAG,KAAK,CAAC,EAAE,iFAAC;AACtB,IAAA,UAAU,GAAG,KAAK,CAAC,gBAAgB,iFAAC;AACpC,IAAA,IAAI,GAAG,KAAK,CAAC,EAAE,2EAAC;wGANL,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAjB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,iBAAiB,o7BCd9B,0rBA0BA,EAAA,MAAA,EAAA,CAAA,
|
|
1
|
+
{"version":3,"file":"elementar-rt-components-stat-card.mjs","sources":["../../../projects/components/stat-card/src/stat-card/stat-card.component.ts","../../../projects/components/stat-card/src/stat-card/stat-card.component.html","../../../projects/components/stat-card/elementar-rt-components-stat-card.ts"],"sourcesContent":["import { Component, input, numberAttribute } from '@angular/core';\n\nexport type StatCardTrend = 'up' | 'down' | 'neutral';\n\n@Component({\n selector: 'emr-stat-card',\n exportAs: 'emrStatCard',\n templateUrl: './stat-card.component.html',\n styleUrl: './stat-card.component.scss',\n host: {\n 'class': 'emr-stat-card',\n '[attr.data-trend]': 'trend()',\n }\n})\nexport class StatCardComponent {\n label = input('');\n value = input('');\n trend = input<StatCardTrend>('neutral');\n trendValue = input('');\n trendLabel = input('vs last period');\n icon = input('');\n}\n","<div class=\"sc-header\">\n <span class=\"sc-label\">{{ label() }}</span>\n @if (icon()) {\n <span class=\"sc-icon\">{{ icon() }}</span>\n } @else {\n <ng-content select=\"[emrStatCardIcon]\"/>\n }\n</div>\n\n<div class=\"sc-value\">{{ value() }}</div>\n\n<ng-content select=\"emr-micro-chart,[emrStatCardChart]\"/>\n\n@if (trendValue()) {\n <div class=\"sc-trend\">\n <span class=\"sc-trend-arrow\">\n @if (trend() === 'up') { ▲ }\n @else if (trend() === 'down') { ▼ }\n @else { — }\n </span>\n <span class=\"sc-trend-value\">{{ trendValue() }}</span>\n <span class=\"sc-trend-label\">{{ trendLabel() }}</span>\n </div>\n}\n\n<ng-content/>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;MAca,iBAAiB,CAAA;AAC5B,IAAA,KAAK,GAAG,KAAK,CAAC,EAAE,4EAAC;AACjB,IAAA,KAAK,GAAG,KAAK,CAAC,EAAE,4EAAC;AACjB,IAAA,KAAK,GAAG,KAAK,CAAgB,SAAS,4EAAC;AACvC,IAAA,UAAU,GAAG,KAAK,CAAC,EAAE,iFAAC;AACtB,IAAA,UAAU,GAAG,KAAK,CAAC,gBAAgB,iFAAC;AACpC,IAAA,IAAI,GAAG,KAAK,CAAC,EAAE,2EAAC;wGANL,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAjB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,iBAAiB,o7BCd9B,0rBA0BA,EAAA,MAAA,EAAA,CAAA,+gEAAA,CAAA,EAAA,CAAA;;4FDZa,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAV7B,SAAS;+BACE,eAAe,EAAA,QAAA,EACf,aAAa,EAAA,IAAA,EAGjB;AACJ,wBAAA,OAAO,EAAE,eAAe;AACxB,wBAAA,mBAAmB,EAAE,SAAS;AAC/B,qBAAA,EAAA,QAAA,EAAA,0rBAAA,EAAA,MAAA,EAAA,CAAA,+gEAAA,CAAA,EAAA;;;AEZH;;AAEG;;"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@elementar-rt/components",
|
|
3
3
|
"description": "Elementar RT Components - Free and open source Angular UI components based on Material 3 and Tailwind",
|
|
4
|
-
"version": "0.7.
|
|
4
|
+
"version": "0.7.2",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
7
7
|
"url": "https://github.com/randrost/elementar-rt.git"
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "../../../node_modules/@angular-devkit/schematics/collection-schema.json",
|
|
3
|
+
"schematics": {
|
|
4
|
+
"ng-add": {
|
|
5
|
+
"description": "Add elementar-rt/components.",
|
|
6
|
+
"factory": "./ng-add/index#ngAdd",
|
|
7
|
+
"schema": "./ng-add/schema.json"
|
|
8
|
+
},
|
|
9
|
+
"ng-add-setup-project": {
|
|
10
|
+
"private": true,
|
|
11
|
+
"description": "Sets up the project after dependencies have been installed",
|
|
12
|
+
"factory": "./ng-add/setup-project",
|
|
13
|
+
"schema": "./ng-add/schema.json"
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.addFonts = addFonts;
|
|
13
|
+
const utility_1 = require("@schematics/angular/utility");
|
|
14
|
+
const MATERIAL_SYMBOLS_HREF = 'https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200&display=block';
|
|
15
|
+
const OPEN_SANS_HREF = 'https://fonts.googleapis.com/css2?family=Open+Sans:ital,wght@0,300..800;1,300..800&display=swap';
|
|
16
|
+
function buildLinkTag(href) {
|
|
17
|
+
return `<link rel="stylesheet" href="${href}">`;
|
|
18
|
+
}
|
|
19
|
+
function insertIntoHead(html, tags) {
|
|
20
|
+
// If no <head>, just return unchanged
|
|
21
|
+
const headCloseIndex = html.indexOf('</head>');
|
|
22
|
+
if (headCloseIndex === -1) {
|
|
23
|
+
return html;
|
|
24
|
+
}
|
|
25
|
+
// Compute insertion position just before </head>
|
|
26
|
+
const before = html.slice(0, headCloseIndex);
|
|
27
|
+
const after = html.slice(headCloseIndex);
|
|
28
|
+
// Ensure newline separation
|
|
29
|
+
const prefix = before.endsWith('\n') ? '' : '\n';
|
|
30
|
+
const contentToInsert = tags.join('\n');
|
|
31
|
+
return `${before}${prefix}${contentToInsert}\n${after}`;
|
|
32
|
+
}
|
|
33
|
+
function addFonts() {
|
|
34
|
+
return (tree, context) => __awaiter(this, void 0, void 0, function* () {
|
|
35
|
+
context.logger.log('info', `✅ Add Google Fonts links to index.html`);
|
|
36
|
+
const workspace = yield (0, utility_1.readWorkspace)(tree);
|
|
37
|
+
for (const [name, project] of workspace.projects) {
|
|
38
|
+
// Target only application projects with a sourceRoot
|
|
39
|
+
const sourceRoot = project.sourceRoot || 'src';
|
|
40
|
+
const indexHtmlPath = `${sourceRoot}/index.html`;
|
|
41
|
+
if (!tree.exists(indexHtmlPath)) {
|
|
42
|
+
continue;
|
|
43
|
+
}
|
|
44
|
+
const buffer = tree.read(indexHtmlPath);
|
|
45
|
+
if (!buffer) {
|
|
46
|
+
continue;
|
|
47
|
+
}
|
|
48
|
+
const html = buffer.toString('utf-8');
|
|
49
|
+
const needsMaterial = !html.includes(MATERIAL_SYMBOLS_HREF);
|
|
50
|
+
const needsOpenSans = !html.includes(OPEN_SANS_HREF);
|
|
51
|
+
if (!needsMaterial && !needsOpenSans) {
|
|
52
|
+
continue;
|
|
53
|
+
}
|
|
54
|
+
const tags = [];
|
|
55
|
+
if (needsMaterial) {
|
|
56
|
+
tags.push(buildLinkTag(MATERIAL_SYMBOLS_HREF));
|
|
57
|
+
}
|
|
58
|
+
if (needsOpenSans) {
|
|
59
|
+
tags.push(buildLinkTag(OPEN_SANS_HREF));
|
|
60
|
+
}
|
|
61
|
+
const updated = insertIntoHead(html, tags);
|
|
62
|
+
if (updated !== html) {
|
|
63
|
+
tree.overwrite(indexHtmlPath, updated);
|
|
64
|
+
context.logger.log('info', `⬆️ Updated ${indexHtmlPath} with Google Fonts links in project "${name}"`);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
return tree;
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
//# sourceMappingURL=add-fonts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"add-fonts.js","sourceRoot":"","sources":["../../../../../projects/components/schematics/ng-add/actions/add-fonts.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.addStyles = addStyles;
|
|
13
|
+
const path = require("path");
|
|
14
|
+
const schematics_1 = require("@angular-devkit/schematics");
|
|
15
|
+
const project_1 = require("../../utils/project");
|
|
16
|
+
const utility_1 = require("@schematics/angular/utility");
|
|
17
|
+
// import { workspaces, JsonArray } from '@angular-devkit/core';
|
|
18
|
+
// const BOOTSTRAP_CSS_FILEPATH = 'node_modules/elementar-rt/components/styles/themes/default.scss';
|
|
19
|
+
const SUPPORTED_BOOTSTRAP_STYLE_IMPORTS = {
|
|
20
|
+
'.sass': `
|
|
21
|
+
@use '@elementar-rt/components/styles/themes/default';
|
|
22
|
+
`,
|
|
23
|
+
'.scss': `
|
|
24
|
+
@use '@elementar-rt/components/styles/themes/default';
|
|
25
|
+
`,
|
|
26
|
+
};
|
|
27
|
+
function addStyles(options) {
|
|
28
|
+
// @ts-ignore
|
|
29
|
+
return (host, context) => __awaiter(this, void 0, void 0, function* () {
|
|
30
|
+
context.logger.log('info', `✅ Add styles`);
|
|
31
|
+
const workspace = yield (0, utility_1.readWorkspace)(host);
|
|
32
|
+
const projects = workspace.projects.entries();
|
|
33
|
+
let defaultProject = '';
|
|
34
|
+
for (const project of projects) {
|
|
35
|
+
if (project[1].sourceRoot === 'src') {
|
|
36
|
+
defaultProject = project[0];
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
const projectName = options.project || defaultProject;
|
|
40
|
+
const project = workspace.projects.get(projectName);
|
|
41
|
+
if (!project) {
|
|
42
|
+
throw new schematics_1.SchematicsException('Project not found');
|
|
43
|
+
}
|
|
44
|
+
const styleFilePath = (0, project_1.getProjectStyleFile)(project) || '';
|
|
45
|
+
const styleFileExtension = path.extname(styleFilePath);
|
|
46
|
+
// @ts-ignore
|
|
47
|
+
const styleFilePatch = SUPPORTED_BOOTSTRAP_STYLE_IMPORTS[styleFileExtension];
|
|
48
|
+
// found supported styles
|
|
49
|
+
if (styleFilePatch) {
|
|
50
|
+
return addElementarToStylesFile(styleFilePath, styleFilePatch);
|
|
51
|
+
}
|
|
52
|
+
else {
|
|
53
|
+
// // found some styles, but unsupported
|
|
54
|
+
// if (styleFileExtension !== '.css' && styleFileExtension !== '') {
|
|
55
|
+
// context.logger.warn(messages.unsupportedStyles(styleFilePath));
|
|
56
|
+
// }
|
|
57
|
+
//
|
|
58
|
+
yield (0, utility_1.writeWorkspace)(host, workspace);
|
|
59
|
+
}
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
function addElementarToStylesFile(styleFilePath, styleFilePatch) {
|
|
63
|
+
return (host) => {
|
|
64
|
+
const styleContent = host.read(styleFilePath).toString('utf-8');
|
|
65
|
+
const recorder = host.beginUpdate(styleFilePath);
|
|
66
|
+
recorder.insertRight(styleContent.length, styleFilePatch);
|
|
67
|
+
host.commitUpdate(recorder);
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
//# sourceMappingURL=add-styles.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"add-styles.js","sourceRoot":"","sources":["../../../../../projects/components/schematics/ng-add/actions/add-styles.ts"],"names":[],"mappings":";;;;;;;;;;;AAkBA,8BAwCC;AA1DD,6BAA6B;AAC7B,2DAA+F;AAG/F,iDAA0D;AAC1D,yDAA4E;AAC5E,gEAAgE;AAEhE,oGAAoG;AACpG,MAAM,iCAAiC,GAAG;IACxC,OAAO,EAAE;;CAEV;IACC,OAAO,EAAE;;CAEV;CACA,CAAC;AAEF,SAAgB,SAAS,CAAC,OAAe;IACvC,aAAa;IACb,OAAO,CAAO,IAAU,EAAE,OAAyB,EAAE,EAAE;QACrD,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;QAE3C,MAAM,SAAS,GAAG,MAAM,IAAA,uBAAa,EAAC,IAAI,CAAC,CAAC;QAC5C,MAAM,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;QAC9C,IAAI,cAAc,GAAG,EAAE,CAAC;QAExB,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,UAAU,KAAK,KAAK,EAAE,CAAC;gBACpC,cAAc,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;YAC9B,CAAC;QACH,CAAC;QAED,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,IAAI,cAAc,CAAC;QACtD,MAAM,OAAO,GAAG,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QAEpD,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,gCAAmB,CAAC,mBAAmB,CAAC,CAAC;QACrD,CAAC;QAED,MAAM,aAAa,GAAG,IAAA,6BAAmB,EAAC,OAAc,CAAC,IAAI,EAAE,CAAC;QAChE,MAAM,kBAAkB,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;QAEvD,aAAa;QACb,MAAM,cAAc,GAAG,iCAAiC,CAAC,kBAAkB,CAAC,CAAC;QAE7E,yBAAyB;QACzB,IAAI,cAAc,EAAE,CAAC;YACnB,OAAO,wBAAwB,CAAC,aAAa,EAAE,cAAc,CAAC,CAAC;QACjE,CAAC;aAAM,CAAC;YACN,wCAAwC;YACxC,oEAAoE;YACpE,oEAAoE;YACpE,IAAI;YACJ,EAAE;YACF,MAAM,IAAA,wBAAc,EAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QACxC,CAAC;IACH,CAAC,CAAA,CAAC;AACJ,CAAC;AAED,SAAS,wBAAwB,CAAC,aAAqB,EAAE,cAAsB;IAC7E,OAAO,CAAC,IAAU,EAAE,EAAE;QACpB,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,CAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QACjE,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;QACjD,QAAQ,CAAC,WAAW,CAAC,YAAY,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;QAC1D,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;IAC9B,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ngAdd = ngAdd;
|
|
4
|
+
// import { readWorkspace } from '@schematics/angular/utility';
|
|
5
|
+
const package_config_1 = require("../utils/package-config");
|
|
6
|
+
const tasks_1 = require("@angular-devkit/schematics/tasks");
|
|
7
|
+
const DEPENDENCIES = {
|
|
8
|
+
'@elementar-rt/components': '^0.6.54',
|
|
9
|
+
"@dicebear/collection": "^9.2.2",
|
|
10
|
+
"@dicebear/core": "^9.2.2",
|
|
11
|
+
"@iconify-json/circle-flags": "^1.2.10",
|
|
12
|
+
"@iconify-json/ph": "^1.2.2",
|
|
13
|
+
"@ngrx/signals": "^20.1.0",
|
|
14
|
+
"@ngrx/store": "^20.1.0",
|
|
15
|
+
"@tiptap/core": "2.10.2",
|
|
16
|
+
"@tiptap/extension-bubble-menu": "2.10.2",
|
|
17
|
+
"@tiptap/extension-code-block": "2.10.2",
|
|
18
|
+
"@tiptap/extension-dropcursor": "2.10.2",
|
|
19
|
+
"@tiptap/extension-floating-menu": "2.10.2",
|
|
20
|
+
"@tiptap/extension-history": "2.10.2",
|
|
21
|
+
"@tiptap/extension-horizontal-rule": "2.10.3",
|
|
22
|
+
"@tiptap/extension-image": "2.10.2",
|
|
23
|
+
"@tiptap/extension-link": "2.10.2",
|
|
24
|
+
"@tiptap/extension-list-item": "2.10.2",
|
|
25
|
+
"@tiptap/extension-ordered-list": "2.10.2",
|
|
26
|
+
"@tiptap/extension-placeholder": "2.10.2",
|
|
27
|
+
"@tiptap/extension-youtube": "2.10.2",
|
|
28
|
+
"@tiptap/pm": "2.10.2",
|
|
29
|
+
"@tiptap/starter-kit": "2.10.2",
|
|
30
|
+
"awesome-phonenumber": "^6.12.0",
|
|
31
|
+
"d3": "^7.9.0",
|
|
32
|
+
"echarts": "^5.5.0",
|
|
33
|
+
"emoji-toolkit": "^8.0.0",
|
|
34
|
+
"iconify-icon": "^3.0.2",
|
|
35
|
+
"libphonenumber-js": "^1.11.15",
|
|
36
|
+
"uuid": "^11.0.3",
|
|
37
|
+
"emojibase-data": "^16.0.2",
|
|
38
|
+
"@ctrl/tinycolor": "^4.1.0",
|
|
39
|
+
"shiki": "^3.12.0"
|
|
40
|
+
};
|
|
41
|
+
const DEV_DEPENDENCIES = {
|
|
42
|
+
'@tailwindcss/postcss': '^4.1.6',
|
|
43
|
+
'autoprefixer': '^10.4.17',
|
|
44
|
+
'postcss': '^8.5.2',
|
|
45
|
+
'tailwindcss': '^4.1.6',
|
|
46
|
+
'@tailwindcss/typography': '^0.5.16',
|
|
47
|
+
};
|
|
48
|
+
function ngAdd(options) {
|
|
49
|
+
return (tree, context) => {
|
|
50
|
+
context.logger.log('info', `✅️ Running Schematics`);
|
|
51
|
+
if (!tree.exists('/package.json')) {
|
|
52
|
+
throw new Error('package.json is missing in this directory');
|
|
53
|
+
}
|
|
54
|
+
if (!tree.exists("/.postcssrc.json")) {
|
|
55
|
+
tree.create("/.postcssrc.json", `{
|
|
56
|
+
"plugins": {
|
|
57
|
+
"@tailwindcss/postcss": {}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
`);
|
|
61
|
+
}
|
|
62
|
+
// Installing dependencies
|
|
63
|
+
// const angularLocalizeVersion = getPackageVersionFromPackageJson(tree, '@angular/localize', true)!;
|
|
64
|
+
// const angularCdkVersion = getPackageVersionFromPackageJson(tree, '@angular/cdk')!;
|
|
65
|
+
// const angularMaterialVersion = getPackageVersionFromPackageJson(tree, '@angular/material')!;
|
|
66
|
+
(0, package_config_1.addPackageToPackageJson)(tree, '@angular/localize', '^20.3.4', true);
|
|
67
|
+
(0, package_config_1.addPackageToPackageJson)(tree, '@angular/cdk', '^20.2.8');
|
|
68
|
+
(0, package_config_1.addPackageToPackageJson)(tree, '@angular/material', '^20.2.8');
|
|
69
|
+
for (const name in DEPENDENCIES) {
|
|
70
|
+
// @ts-ignore
|
|
71
|
+
(0, package_config_1.addPackageToPackageJson)(tree, name, DEPENDENCIES[name]);
|
|
72
|
+
}
|
|
73
|
+
for (const name in DEV_DEPENDENCIES) {
|
|
74
|
+
// @ts-ignore
|
|
75
|
+
(0, package_config_1.addPackageToPackageJson)(tree, name, DEV_DEPENDENCIES[name], true);
|
|
76
|
+
}
|
|
77
|
+
context.addTask(new tasks_1.RunSchematicTask('ng-add-setup-project', options), [
|
|
78
|
+
context.addTask(new tasks_1.NodePackageInstallTask()),
|
|
79
|
+
]);
|
|
80
|
+
return tree;
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../projects/components/schematics/ng-add/index.ts"],"names":[],"mappings":";;AAiDA,sBAyCC;AAzFD,+DAA+D;AAC/D,4DAAkE;AAClE,4DAA4F;AAG5F,MAAM,YAAY,GAAG;IACnB,0BAA0B,EAAE,SAAS;IACrC,sBAAsB,EAAE,QAAQ;IAChC,gBAAgB,EAAE,QAAQ;IAC1B,4BAA4B,EAAE,SAAS;IACvC,kBAAkB,EAAE,QAAQ;IAC5B,eAAe,EAAE,SAAS;IAC1B,aAAa,EAAE,SAAS;IACxB,cAAc,EAAE,QAAQ;IACxB,+BAA+B,EAAE,QAAQ;IACzC,8BAA8B,EAAE,QAAQ;IACxC,8BAA8B,EAAE,QAAQ;IACxC,iCAAiC,EAAE,QAAQ;IAC3C,2BAA2B,EAAE,QAAQ;IACrC,mCAAmC,EAAE,QAAQ;IAC7C,yBAAyB,EAAE,QAAQ;IACnC,wBAAwB,EAAE,QAAQ;IAClC,6BAA6B,EAAE,QAAQ;IACvC,gCAAgC,EAAE,QAAQ;IAC1C,+BAA+B,EAAE,QAAQ;IACzC,2BAA2B,EAAE,QAAQ;IACrC,YAAY,EAAE,QAAQ;IACtB,qBAAqB,EAAE,QAAQ;IAC/B,qBAAqB,EAAE,SAAS;IAChC,IAAI,EAAE,QAAQ;IACd,SAAS,EAAE,QAAQ;IACnB,eAAe,EAAE,QAAQ;IACzB,cAAc,EAAE,QAAQ;IACxB,mBAAmB,EAAE,UAAU;IAC/B,MAAM,EAAE,SAAS;IACjB,gBAAgB,EAAE,SAAS;IAC3B,iBAAiB,EAAE,QAAQ;IAC3B,OAAO,EAAE,SAAS;CACnB,CAAC;AAEF,MAAM,gBAAgB,GAAG;IACvB,sBAAsB,EAAE,QAAQ;IAChC,cAAc,EAAE,UAAU;IAC1B,SAAS,EAAE,QAAQ;IACnB,aAAa,EAAE,QAAQ;IACvB,yBAAyB,EAAE,SAAS;CACrC,CAAC;AAEF,SAAgB,KAAK,CAAC,OAAe;IACnC,OAAO,CAAC,IAAU,EAAE,OAAyB,EAAE,EAAE;QAC/C,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,uBAAuB,CAAC,CAAC;QAEpD,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,EAAE,CAAC;YAClC,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;QAC/D,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,EAAE,CAAC;YACrC,IAAI,CAAC,MAAM,CAAC,kBAAkB,EAAE;;;;;OAK/B,CAAC,CAAC;QACL,CAAC;QAED,0BAA0B;QAC1B,qGAAqG;QACrG,qFAAqF;QACrF,+FAA+F;QAE/F,IAAA,wCAAuB,EAAC,IAAI,EAAE,mBAAmB,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;QACpE,IAAA,wCAAuB,EAAC,IAAI,EAAE,cAAc,EAAE,SAAS,CAAC,CAAC;QACzD,IAAA,wCAAuB,EAAC,IAAI,EAAE,mBAAmB,EAAE,SAAS,CAAC,CAAC;QAE9D,KAAK,MAAM,IAAI,IAAI,YAAY,EAAE,CAAC;YAChC,aAAa;YACb,IAAA,wCAAuB,EAAC,IAAI,EAAE,IAAI,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;QAC1D,CAAC;QAED,KAAK,MAAM,IAAI,IAAI,gBAAgB,EAAE,CAAC;YACpC,aAAa;YACb,IAAA,wCAAuB,EAAC,IAAI,EAAE,IAAI,EAAE,gBAAgB,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;QACpE,CAAC;QAED,OAAO,CAAC,OAAO,CAAC,IAAI,wBAAgB,CAAC,sBAAsB,EAAE,OAAO,CAAC,EAAE;YACrE,OAAO,CAAC,OAAO,CAAC,IAAI,8BAAsB,EAAE,CAAC;SAC9C,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;IACd,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../../projects/components/schematics/ng-add/schema.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.default = ngAddSetupProject;
|
|
4
|
+
const schematics_1 = require("@angular-devkit/schematics");
|
|
5
|
+
const add_styles_1 = require("./actions/add-styles");
|
|
6
|
+
const add_fonts_1 = require("./actions/add-fonts");
|
|
7
|
+
function ngAddSetupProject(options) {
|
|
8
|
+
return (0, schematics_1.chain)([
|
|
9
|
+
(0, add_styles_1.addStyles)(options),
|
|
10
|
+
(0, add_fonts_1.addFonts)(),
|
|
11
|
+
// externalSchematic('@angular/localize', 'ng-add', options.project ? { project: options.project } : {}),
|
|
12
|
+
]);
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=setup-project.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup-project.js","sourceRoot":"","sources":["../../../../projects/components/schematics/ng-add/setup-project.ts"],"names":[],"mappings":";;AAMA,oCAMC;AAZD,2DAAyD;AAGzD,qDAAiD;AACjD,mDAA+C;AAE/C,SAAwB,iBAAiB,CAAC,OAAe;IACvD,OAAO,IAAA,kBAAK,EAAC;QACX,IAAA,sBAAS,EAAC,OAAO,CAAC;QAClB,IAAA,oBAAQ,GAAE;QACV,yGAAyG;KAC1G,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { Tree } from '@angular-devkit/schematics';
|
|
2
|
+
export declare function addPackageToPackageJson(tree: Tree, pkg: string, version: string, devDependency?: boolean): Tree;
|
|
3
|
+
export declare function getPackageVersionFromPackageJson(tree: Tree, name: string, includeDevDependencies?: boolean): string | null;
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.addPackageToPackageJson = addPackageToPackageJson;
|
|
4
|
+
exports.getPackageVersionFromPackageJson = getPackageVersionFromPackageJson;
|
|
5
|
+
function sortObjectByKeys(obj) {
|
|
6
|
+
return Object.keys(obj)
|
|
7
|
+
.sort()
|
|
8
|
+
// @ts-ignore
|
|
9
|
+
.reduce((result, key) => (result[key] = obj[key]) && result, {});
|
|
10
|
+
}
|
|
11
|
+
function addPackageToPackageJson(tree, pkg, version, devDependency = false) {
|
|
12
|
+
if (tree.exists('package.json')) {
|
|
13
|
+
const sourceText = tree.read('package.json').toString('utf-8');
|
|
14
|
+
const json = JSON.parse(sourceText);
|
|
15
|
+
const dependenciesType = devDependency ? 'devDependencies' : 'dependencies';
|
|
16
|
+
const dependencies = json[dependenciesType] || {};
|
|
17
|
+
dependencies[pkg] = version;
|
|
18
|
+
json[dependenciesType] = sortObjectByKeys(dependencies);
|
|
19
|
+
tree.overwrite('package.json', JSON.stringify(json, null, 2));
|
|
20
|
+
}
|
|
21
|
+
return tree;
|
|
22
|
+
}
|
|
23
|
+
function getPackageVersionFromPackageJson(tree, name, includeDevDependencies = false) {
|
|
24
|
+
if (!tree.exists('package.json')) {
|
|
25
|
+
return null;
|
|
26
|
+
}
|
|
27
|
+
const packageJson = JSON.parse(tree.read('package.json').toString('utf8'));
|
|
28
|
+
if (packageJson.dependencies && packageJson.dependencies[name]) {
|
|
29
|
+
return packageJson.dependencies[name];
|
|
30
|
+
}
|
|
31
|
+
if (includeDevDependencies && packageJson.devDependencies && packageJson.devDependencies[name]) {
|
|
32
|
+
return packageJson.devDependencies[name];
|
|
33
|
+
}
|
|
34
|
+
return null;
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=package-config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"package-config.js","sourceRoot":"","sources":["../../../../projects/components/schematics/utils/package-config.ts"],"names":[],"mappings":";;AASA,0DAeC;AAED,4EAoBC;AA5CD,SAAS,gBAAgB,CAAC,GAA2B;IACnD,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;SACpB,IAAI,EAAE;QACP,aAAa;SACZ,MAAM,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,MAAM,EAAE,EAAE,CAAC,CAAC;AACrE,CAAC;AAED,SAAgB,uBAAuB,CAAC,IAAU,EAAE,GAAW,EAAE,OAAe,EAAE,aAAa,GAAG,KAAK;IACrG,IAAI,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,EAAE,CAAC;QAChC,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,CAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAChE,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAEpC,MAAM,gBAAgB,GAAG,aAAa,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,cAAc,CAAC;QAC5E,MAAM,YAAY,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC;QAElD,YAAY,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC;QAC5B,IAAI,CAAC,gBAAgB,CAAC,GAAG,gBAAgB,CAAC,YAAY,CAAC,CAAC;QAExD,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAChE,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAgB,gCAAgC,CAC9C,IAAU,EACV,IAAY,EACZ,sBAAsB,GAAG,KAAK;IAE9B,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,EAAE,CAAC;QACjC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;IAE5E,IAAI,WAAW,CAAC,YAAY,IAAI,WAAW,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;QAC/D,OAAO,WAAW,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;IACxC,CAAC;IAED,IAAI,sBAAsB,IAAI,WAAW,CAAC,eAAe,IAAI,WAAW,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC;QAC/F,OAAO,WAAW,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;IAC3C,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { workspaces } from '@angular-devkit/core';
|
|
2
|
+
/**
|
|
3
|
+
* Resolves options for the build target of the given project
|
|
4
|
+
*/
|
|
5
|
+
export declare function getProjectTargetOptions(project: workspaces.ProjectDefinition, buildTarget: string): Record<string, import("@angular-devkit/core").JsonValue | undefined>;
|
|
6
|
+
/**
|
|
7
|
+
* Gets a style file with the given extension in a project and returns its path. If no
|
|
8
|
+
* extension is specified, any style file with a valid extension will be returned.
|
|
9
|
+
*/
|
|
10
|
+
export declare function getProjectStyleFile(project: workspaces.ProjectDefinition, extension?: string): string | null;
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getProjectTargetOptions = getProjectTargetOptions;
|
|
4
|
+
exports.getProjectStyleFile = getProjectStyleFile;
|
|
5
|
+
const core_1 = require("@angular-devkit/core");
|
|
6
|
+
const schematics_1 = require("@angular-devkit/schematics");
|
|
7
|
+
// Regular expression that matches all possible Angular CLI default style files
|
|
8
|
+
const defaultStyleFileRegex = /styles\.(c|le|sc|sa)ss/;
|
|
9
|
+
// Regular expression that matches all files that have a proper stylesheet extension
|
|
10
|
+
const validStyleFileRegex = /\.(c|le|sc|sa)ss/;
|
|
11
|
+
/**
|
|
12
|
+
* Resolves options for the build target of the given project
|
|
13
|
+
*/
|
|
14
|
+
function getProjectTargetOptions(project, buildTarget) {
|
|
15
|
+
const buildTargetObject = project.targets.get(buildTarget);
|
|
16
|
+
if (buildTargetObject && buildTargetObject.options) {
|
|
17
|
+
return buildTargetObject.options;
|
|
18
|
+
}
|
|
19
|
+
throw new schematics_1.SchematicsException(`Cannot determine project target configuration for: ${buildTarget}.`);
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Gets a style file with the given extension in a project and returns its path. If no
|
|
23
|
+
* extension is specified, any style file with a valid extension will be returned.
|
|
24
|
+
*/
|
|
25
|
+
function getProjectStyleFile(project, extension) {
|
|
26
|
+
const buildOptions = getProjectTargetOptions(project, 'build');
|
|
27
|
+
if (buildOptions['styles'] && Array.isArray(buildOptions['styles']) && buildOptions['styles'].length) {
|
|
28
|
+
// @ts-ignore
|
|
29
|
+
const styles = buildOptions['styles'].map((s) => (typeof s === 'string' ? s : s['input']));
|
|
30
|
+
// Look for the default style file that is generated for new projects by the Angular CLI. This
|
|
31
|
+
// default style file is usually called `styles.ext` unless it has been changed explicitly.
|
|
32
|
+
const defaultMainStylePath = styles.find((file) => extension ? file === `styles.${extension}` : defaultStyleFileRegex.test(file));
|
|
33
|
+
if (defaultMainStylePath) {
|
|
34
|
+
return (0, core_1.normalize)(defaultMainStylePath);
|
|
35
|
+
}
|
|
36
|
+
// If no default style file could be found, use the first style file that matches the given
|
|
37
|
+
// extension. If no extension specified explicitly, we look for any file with a valid style
|
|
38
|
+
// file extension.
|
|
39
|
+
const fallbackStylePath = styles.find((file) => extension ? file.endsWith(`.${extension}`) : validStyleFileRegex.test(file));
|
|
40
|
+
if (fallbackStylePath) {
|
|
41
|
+
return (0, core_1.normalize)(fallbackStylePath);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
return null;
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=project.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project.js","sourceRoot":"","sources":["../../../../projects/components/schematics/utils/project.ts"],"names":[],"mappings":";;AAYA,0DAOC;AAMD,kDA8BC;AAvDD,+CAAiD;AACjD,2DAAiE;AAEjE,+EAA+E;AAC/E,MAAM,qBAAqB,GAAG,wBAAwB,CAAC;AAEvD,oFAAoF;AACpF,MAAM,mBAAmB,GAAG,kBAAkB,CAAC;AAE/C;;GAEG;AACH,SAAgB,uBAAuB,CAAC,OAAqC,EAAE,WAAmB;IAChG,MAAM,iBAAiB,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IAC3D,IAAI,iBAAiB,IAAI,iBAAiB,CAAC,OAAO,EAAE,CAAC;QACnD,OAAO,iBAAiB,CAAC,OAAO,CAAC;IACnC,CAAC;IAED,MAAM,IAAI,gCAAmB,CAAC,sDAAsD,WAAW,GAAG,CAAC,CAAC;AACtG,CAAC;AAED;;;GAGG;AACH,SAAgB,mBAAmB,CAAC,OAAqC,EAAE,SAAkB;IAC3F,MAAM,YAAY,GAAG,uBAAuB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAE/D,IAAI,YAAY,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,IAAI,YAAY,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE,CAAC;QACrG,aAAa;QACb,MAAM,MAAM,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAE5F,8FAA8F;QAC9F,2FAA2F;QAC3F,MAAM,oBAAoB,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAChD,SAAS,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,SAAS,EAAE,CAAC,CAAC,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,CAC9E,CAAC;QAEF,IAAI,oBAAoB,EAAE,CAAC;YACzB,OAAO,IAAA,gBAAS,EAAC,oBAAoB,CAAC,CAAC;QACzC,CAAC;QAED,2FAA2F;QAC3F,2FAA2F;QAC3F,kBAAkB;QAClB,MAAM,iBAAiB,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAC7C,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAC5E,CAAC;QAEF,IAAI,iBAAiB,EAAE,CAAC;YACtB,OAAO,IAAA,gBAAS,EAAC,iBAAiB,CAAC,CAAC;QACtC,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -34,7 +34,7 @@ interface AnnouncementState {
|
|
|
34
34
|
announcement: Announcement | null;
|
|
35
35
|
}
|
|
36
36
|
declare const AnnouncementStore: _angular_core.Type<{
|
|
37
|
-
announcement:
|
|
37
|
+
announcement: _ngrx_signals.DeepSignal<Announcement> | _angular_core.Signal<null>;
|
|
38
38
|
show: (announcement: Announcement) => void;
|
|
39
39
|
hide: () => void;
|
|
40
40
|
} & _ngrx_signals.StateSource<{
|