Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
import {updateWorkspace} from '@schematics/angular/utility/workspace';
import {Change, InsertChange} from '@schematics/angular/utility/change';
import {Rule, SchematicsException} from '@angular-devkit/schematics';
import {Schema} from '../schema';
import {addThemingModule} from './add-theming-module';
import { updateWorkspace } from '@schematics/angular/utility/workspace';
import { Change, InsertChange } from '@schematics/angular/utility/change';
import { Rule } from '@angular-devkit/schematics';
import { Schema } from '../schema';
import { addThemingModule } from './add-theming-module';
import { getProjectDefinition } from "../utils/get-project-definition";

export function addTheming(options: Schema): Rule {
return (tree, context) =>
Expand All @@ -11,21 +12,9 @@ export function addTheming(options: Schema): Rule {
return;
}

const currentWorkspace = workspace.projects.get(options.project);
const projectDefinition = getProjectDefinition(workspace, options.project);

if (!currentWorkspace) {
throw new SchematicsException('Project with such name not found.');
}

const buildTargetOptions = currentWorkspace.targets.get('build')?.options;

if (!buildTargetOptions) {
throw new SchematicsException(
'Could not find build target options for defined project.'
);
}

const update: { changes: Change[], file: string } = addThemingModule(tree, currentWorkspace, context, options);
const update: { changes: Change[], file: string } = addThemingModule(tree, projectDefinition, context, options);
const exportRecorder = tree.beginUpdate(update.file);

for (const change of update.changes) {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
import { ProjectDefinition, WorkspaceDefinition } from "@schematics/angular/utility";
import { SchematicsException } from "@angular-devkit/schematics";

export function getProjectDefinition(workspace: WorkspaceDefinition, projectName: string): ProjectDefinition {
const projectDefinition = workspace.projects.get(projectName);

if (!projectDefinition) {
throw new SchematicsException('Project with such name not found.');
}
return projectDefinition;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
import { ProjectDefinition, TargetDefinition } from "@schematics/angular/utility";
import { SchematicsException } from "@angular-devkit/schematics";

export function getProjectTarget(projectDefinition: ProjectDefinition, targetName: string, projectName?: string): TargetDefinition {
const target = projectDefinition.targets.get(targetName)
if (!target) {
throw new SchematicsException(`Target ${targetName} not found in project ${projectName || ''}`);
}
return target;
}
27 changes: 8 additions & 19 deletions libs/fundamental-styles/schematics/add-theming/index.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
import {updateWorkspace} from '@schematics/angular/utility/workspace';
import {Change, InsertChange} from '@schematics/angular/utility/change';
import {Rule, SchematicsException} from '@angular-devkit/schematics';
import {Schema} from '../schema';
import {addThemingModule} from './add-theming-module';
import { updateWorkspace } from '@schematics/angular/utility/workspace';
import { Change, InsertChange } from '@schematics/angular/utility/change';
import { Rule } from '@angular-devkit/schematics';
import { Schema } from '../schema';
import { addThemingModule } from './add-theming-module';
import { getProjectDefinition } from "../utils/get-project-definition";

export function addTheming(options: Schema): Rule {
return (tree, context) =>
Expand All @@ -11,21 +12,9 @@ export function addTheming(options: Schema): Rule {
return;
}

const currentWorkspace = workspace.projects.get(options.project);
const projectDefinition = getProjectDefinition(workspace, options.project);

if (!currentWorkspace) {
throw new SchematicsException('Project with such name not found.');
}

const buildTargetOptions = currentWorkspace.targets.get('build')?.options;

if (!buildTargetOptions) {
throw new SchematicsException(
'Could not find build target options for defined project.'
);
}

const update: { changes: Change[], file: string } = addThemingModule(tree, currentWorkspace, context, options);
const update: { changes: Change[], file: string } = addThemingModule(tree, projectDefinition, context, options);
const exportRecorder = tree.beginUpdate(update.file);

for (const change of update.changes) {
Expand Down
11 changes: 11 additions & 0 deletions libs/fundamental-styles/schematics/utils/get-project-definition.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
import { ProjectDefinition, WorkspaceDefinition } from "@schematics/angular/utility";
import { SchematicsException } from "@angular-devkit/schematics";

export function getProjectDefinition(workspace: WorkspaceDefinition, projectName: string): ProjectDefinition {
const projectDefinition = workspace.projects.get(projectName);

if (!projectDefinition) {
throw new SchematicsException('Project with such name not found.');
}
return projectDefinition;
}
10 changes: 10 additions & 0 deletions libs/fundamental-styles/schematics/utils/get-project-target.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
import { ProjectDefinition, TargetDefinition } from "@schematics/angular/utility";
import { SchematicsException } from "@angular-devkit/schematics";

export function getProjectTarget(projectDefinition: ProjectDefinition, targetName: string, projectName?: string): TargetDefinition {
const target = projectDefinition.targets.get(targetName)
if (!target) {
throw new SchematicsException(`Target ${targetName} not found in project ${projectName || ''}`);
}
return target;
}
42 changes: 8 additions & 34 deletions libs/ui5-angular/i18n/i18n.module.ts
Original file line number Diff line number Diff line change
@@ -1,16 +1,12 @@
import {Inject, ModuleWithProviders, NgModule} from "@angular/core";
import {setFetchDefaultLanguage, setLanguage} from "@ui5/webcomponents-base/dist/config/Language.js";
import {I18nPipe} from "./i18n.pipe";
import {I18nService} from "./i18n.service";
import {I18nConfig} from "./i18n.types";
import {I18N_NAMESPACE, I18N_ROOT_CONFIG} from "./i18n.tokens";
import {resolveTranslationsProvider} from "./i18n.utils";
import { Inject, ModuleWithProviders, NgModule } from "@angular/core";
import { I18nPipe } from "./i18n.pipe";
import { I18nConfig } from "./i18n.types";
import { I18N_ROOT_CONFIG } from "./i18n.tokens";
import { i18nChildProviders, i18nRootProviders } from "./i18n.providers";


let childIds = 0;

@NgModule({
declarations: [I18nPipe],
imports: [I18nPipe],
exports: [I18nPipe]
})
export class Ui5I18nModule {
Expand All @@ -23,24 +19,7 @@ export class Ui5I18nModule {
return {
ngModule: Ui5I18nModule,
providers: [
{
provide: I18N_ROOT_CONFIG,
useFactory: () => {
if (config.language) {
setLanguage(config.language);
}
if (config.fetchDefaultLanguage) {
setFetchDefaultLanguage(config.fetchDefaultLanguage);
}
return config;
}
},
{
provide: I18N_NAMESPACE,
useValue: config.bundle?.name || 'root_i18n'
},
resolveTranslationsProvider(config.bundle?.translations),
I18nService
i18nRootProviders(config)
]
}
}
Expand All @@ -49,12 +28,7 @@ export class Ui5I18nModule {
return {
ngModule: Ui5I18nModule,
providers: [
{
provide: I18N_NAMESPACE,
useValue: config?.name || ++childIds + '_i18n'
},
resolveTranslationsProvider(config?.translations),
I18nService
i18nChildProviders(config)
]
}
}
Expand Down
3 changes: 2 additions & 1 deletion libs/ui5-angular/i18n/i18n.pipe.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,8 @@ import {distinctUntilChanged, Subject, Subscription, takeUntil} from "rxjs";

@Pipe({
name: 'ui5I18n',
pure: false
pure: false,
standalone: true
})
export class I18nPipe implements PipeTransform, OnDestroy {
private _lastTranslationValue = '';
Expand Down
40 changes: 40 additions & 0 deletions libs/ui5-angular/i18n/i18n.providers.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
import { setFetchDefaultLanguage, setLanguage } from "@ui5/webcomponents-base/dist/config/Language.js";
import { I18nConfig } from "./i18n.types";
import { I18N_NAMESPACE, I18N_ROOT_CONFIG } from "./i18n.tokens";
import { resolveTranslationsProvider } from "./i18n.utils";
import { I18nService } from "./i18n.service";

let childIds = 0;
export function i18nRootProviders(config: I18nConfig) {
return [
{
provide: I18N_ROOT_CONFIG,
useFactory: () => {
if (config.language) {
setLanguage(config.language);
}
if (config.fetchDefaultLanguage) {
setFetchDefaultLanguage(config.fetchDefaultLanguage);
}
return config;
}
},
{
provide: I18N_NAMESPACE,
useValue: config.bundle?.name || 'root_i18n'
},
resolveTranslationsProvider(config.bundle?.translations),
I18nService
]
}

export function i18nChildProviders(config: I18nConfig['bundle']) {
return [
{
provide: I18N_NAMESPACE,
useValue: config?.name || ++childIds + '_i18n'
},
resolveTranslationsProvider(config?.translations),
I18nService
]
}
1 change: 1 addition & 0 deletions libs/ui5-angular/i18n/index.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
export * from './i18n.module';
export * from './i18n.service';
export * from './i18n.pipe';
export * from './i18n.providers';
Loading