Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
40 commits
Select commit Hold shift + click to select a range
4f2534f
Phase 1:
siltomato Oct 8, 2025
7d4ee4f
manual updates checkpoint;
siltomato Oct 10, 2025
f8cd4a1
migrate NoopAnimationsModule and BrowserAnimationsModule
siltomato Oct 10, 2025
5575438
Phase 2:
siltomato Oct 12, 2025
9d20251
migrate UICommonModule providers
siltomato Oct 12, 2025
95fd818
migrate UICommonModule exports and remove UICommonModule
siltomato Oct 12, 2025
2a231bd
migrate storybook component declarations to be imports
siltomato Oct 12, 2025
0fa6dbd
remove empty declarations
siltomato Oct 13, 2025
ea9081c
import angular material components instead of modules
siltomato Oct 13, 2025
a5ffe5c
Phase 3: Bootstrap the project using standalone APIs
siltomato Oct 13, 2025
09667b9
some cleanup
siltomato Oct 13, 2025
b7ee370
migrate CoreModule
siltomato Oct 16, 2025
95881fc
migrate CustomIconModule
siltomato Oct 16, 2025
7b7a558
migrate SFTabsModule
siltomato Oct 16, 2025
4c0fdc9
migrate SharedModule
siltomato Oct 16, 2025
abe8e0a
migrate routing modules
siltomato Oct 16, 2025
b10da85
migrate LynxInsightsModule
siltomato Oct 16, 2025
f7d734e
migrate app routing module
siltomato Oct 17, 2025
5a13238
fix missing component references
siltomato Oct 17, 2025
01e98b7
migrate UsersModule
siltomato Oct 17, 2025
2a3bd5d
migrate CheckingModule
siltomato Oct 17, 2025
90dce78
migrate TranslateModule
siltomato Oct 17, 2025
ab8a54c
migrate XForgeCommonModule
siltomato Oct 17, 2025
07ef477
add missing component imports
siltomato Oct 17, 2025
cd5ae39
migrate TestOnlineStatusModule and TestRealtimeModule to standalone p…
siltomato Oct 20, 2025
ef0a629
fix tests
siltomato Oct 22, 2025
079f99f
migrate RouterModule
siltomato Oct 22, 2025
08bae1a
migrate I18nStoryModule
siltomato Oct 22, 2025
039f210
use makeEnvironmentProviders where appropriate
siltomato Oct 22, 2025
2093dc0
convert material module refs
siltomato Oct 22, 2025
a4feb90
cleanup
siltomato Oct 22, 2025
06869ce
remove @NgModule usages in tests
siltomato Oct 22, 2025
08d641d
migrate CommonModule
siltomato Oct 22, 2025
b98c38d
fix stories
siltomato Oct 23, 2025
994c16e
fix tests
siltomato Oct 23, 2025
55a1dd0
fix stories
siltomato Oct 24, 2025
89e58f1
add missing component imports
siltomato Oct 24, 2025
3d6a03e
remove 'standalone' from component decorator
siltomato Oct 28, 2025
3bc6fd2
adjust imports
siltomato Oct 28, 2025
96691a4
convert 'mat-dialog' tag to 'div'
siltomato Oct 28, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
4 changes: 2 additions & 2 deletions .grit/patterns/xforge_common_absolute_only.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,9 @@ language js
## Basic example

```ts
import { UICommonModule } from "../../xforge-common/ui-common.module";
import { UserService } from "../../xforge-common/user.service";
```

```ts
import { UICommonModule } from "xforge-common/ui-common.module";
import { UserService } from "xforge-common/user.service";
```
11 changes: 7 additions & 4 deletions src/SIL.XForge.Scripture/ClientApp/.storybook/preview.ts
Original file line number Diff line number Diff line change
@@ -1,15 +1,16 @@
import { OverlayContainer } from '@angular/cdk/overlay';
import { importProvidersFrom } from '@angular/core';
import { getTestBed } from '@angular/core/testing';
import { BrowserDynamicTestingModule, platformBrowserDynamicTesting } from '@angular/platform-browser-dynamic/testing';
import { provideAnimations } from '@angular/platform-browser/animations';
import { setCompodocJson } from '@storybook/addon-docs/angular';
import { applicationConfig } from '@storybook/angular';
import docJson from '../documentation.json';
import { I18nStoryDecorator, I18nStoryModule } from 'xforge-common/i18n-story.module';
import { I18nStoryDecorator, provideI18nStory } from 'xforge-common/i18n-story';
import { I18nService } from 'xforge-common/i18n.service';
import { APP_ROOT_ELEMENT_SELECTOR, InAppRootOverlayContainer } from 'xforge-common/overlay-container';
import { provideUICommon } from 'xforge-common/ui-common-providers';
import { getI18nLocales } from 'xforge-common/utils';
import docJson from '../documentation.json';
import { provideSFTabs } from '../src/app/shared/sf-tab-group';

setCompodocJson(docJson);

Expand Down Expand Up @@ -42,8 +43,10 @@ export const decorators = [
I18nStoryDecorator,
applicationConfig({
providers: [
importProvidersFrom(I18nStoryModule),
provideI18nStory(),
provideAnimations(),
provideUICommon(),
provideSFTabs(),
{ provide: APP_ROOT_ELEMENT_SELECTOR, useValue: 'storybook-root' },
{ provide: OverlayContainer, useClass: InAppRootOverlayContainer }
]
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,7 @@
import { CommonModule } from '@angular/common';
import { Component, Inject, InjectionToken, Injector, OnInit, Provider } from '@angular/core';
import { MAT_DIALOG_DATA, MatDialog } from '@angular/material/dialog';
import { MAT_DIALOG_DATA, MatDialog, MatDialogModule } from '@angular/material/dialog';
import { TranslocoModule } from '@ngneat/transloco';
import { StoryFn } from '@storybook/angular';
import { UICommonModule } from 'xforge-common/ui-common.module';
import { hasProp } from '../../src/type-utils';

export function getOverlays(element: HTMLElement): HTMLElement[] {
Expand All @@ -25,7 +23,6 @@ export interface MatDialogStoryConfig {
imports?: any[];
declarations?: any[];
providers?: Provider[];
standaloneComponent?: boolean;
}

@Component({ template: '' })
Expand Down Expand Up @@ -57,8 +54,8 @@ export class MatDialogLaunchComponent implements OnInit {
export function matDialogStory(component: any, config?: MatDialogStoryConfig): StoryFn {
const story: StoryFn = args => ({
moduleMetadata: {
imports: [UICommonModule, CommonModule, TranslocoModule, ...(config?.imports ?? [])],
declarations: [...(config?.standaloneComponent ? [] : [component]), ...(config?.declarations ?? [])],
imports: [MatDialogModule, TranslocoModule, component, ...(config?.imports ?? [])],
declarations: [...(config?.declarations ?? [])],
providers: [
{ provide: MAT_DIALOG_DATA, useValue: args.data },
{ provide: COMPONENT_UNDER_TEST, useValue: component },
Expand Down
43 changes: 0 additions & 43 deletions src/SIL.XForge.Scripture/ClientApp/src/app/app-routing.module.ts

This file was deleted.

38 changes: 21 additions & 17 deletions src/SIL.XForge.Scripture/ClientApp/src/app/app.component.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,12 @@ import { BreakpointObserver } from '@angular/cdk/layout';
import { Location } from '@angular/common';
import { Component, DebugElement, NgZone } from '@angular/core';
import { ComponentFixture, discardPeriodicTasks, fakeAsync, flush, TestBed, tick } from '@angular/core/testing';
import { MatIcon } from '@angular/material/icon';
import { MatMenu } from '@angular/material/menu';
import { MatTooltip } from '@angular/material/tooltip';
import { By } from '@angular/platform-browser';
import { NoopAnimationsModule } from '@angular/platform-browser/animations';
import { Route, Router, RouterModule } from '@angular/router';
import { provideNoopAnimations } from '@angular/platform-browser/animations';
import { provideRouter, Route, Router } from '@angular/router';
import { CookieService } from 'ngx-cookie-service';
import { SystemRole } from 'realtime-server/lib/esm/common/models/system-role';
import { User } from 'realtime-server/lib/esm/common/models/user';
Expand All @@ -30,12 +33,11 @@ import { NoticeService } from 'xforge-common/notice.service';
import { OnlineStatusService } from 'xforge-common/online-status.service';
import { PWA_BEFORE_PROMPT_CAN_BE_SHOWN_AGAIN, PwaService } from 'xforge-common/pwa.service';
import { TestBreakpointObserver } from 'xforge-common/test-breakpoint-observer';
import { TestOnlineStatusModule } from 'xforge-common/test-online-status.module';
import { provideTestOnlineStatus } from 'xforge-common/test-online-status-providers';
import { TestOnlineStatusService } from 'xforge-common/test-online-status.service';
import { TestRealtimeModule } from 'xforge-common/test-realtime.module';
import { provideTestRealtime } from 'xforge-common/test-realtime-providers';
import { TestRealtimeService } from 'xforge-common/test-realtime.service';
import { configureTestingModule, TestTranslocoModule } from 'xforge-common/test-utils';
import { UICommonModule } from 'xforge-common/ui-common.module';
import { configureTestingModule, getTestTranslocoModule } from 'xforge-common/test-utils';
import { UserService } from 'xforge-common/user.service';
import { AppComponent } from './app.component';
import { SFProjectProfileDoc } from './core/models/sf-project-profile-doc';
Expand Down Expand Up @@ -65,8 +67,7 @@ const mockedErrorReportingService = mock(ErrorReportingService);
const mockedDialogService = mock(DialogService);

@Component({
template: `<div>Mock</div>`,
standalone: false
template: `<div>Mock</div>`
})
class MockComponent {}

Expand All @@ -87,18 +88,20 @@ const ROUTES: Route[] = [

describe('AppComponent', () => {
configureTestingModule(() => ({
declarations: [AppComponent, NavigationComponent],
imports: [
UICommonModule,
NoopAnimationsModule,
RouterModule.forRoot(ROUTES),
TestTranslocoModule,
TestOnlineStatusModule.forRoot(),
TestRealtimeModule.forRoot(SF_TYPE_REGISTRY),
AppComponent,
NavigationComponent,
getTestTranslocoModule(),
AvatarComponent,
GlobalNoticesComponent
GlobalNoticesComponent,
MatMenu,
MatIcon,
MatTooltip
],
providers: [
provideRouter(ROUTES),
provideTestOnlineStatus(),
provideTestRealtime(SF_TYPE_REGISTRY),
{ provide: AuthService, useMock: mockedAuthService },
{ provide: UserService, useMock: mockedUserService },
{ provide: SettingsAuthGuard, useMock: mockedSettingsAuthGuard },
Expand All @@ -116,7 +119,8 @@ describe('AppComponent', () => {
{ provide: FileService, useMock: mockedFileService },
{ provide: ErrorReportingService, useMock: mockedErrorReportingService },
{ provide: BreakpointObserver, useClass: TestBreakpointObserver },
{ provide: DialogService, useMock: mockedDialogService }
{ provide: DialogService, useMock: mockedDialogService },
provideNoopAnimations()
]
}));

Expand Down
42 changes: 39 additions & 3 deletions src/SIL.XForge.Scripture/ClientApp/src/app/app.component.ts
Original file line number Diff line number Diff line change
@@ -1,9 +1,18 @@
import { BreakpointObserver, BreakpointState } from '@angular/cdk/layout';
import { DOCUMENT } from '@angular/common';
import { AsyncPipe, DOCUMENT } from '@angular/common';
import { Component, DestroyRef, Inject, OnDestroy, OnInit } from '@angular/core';
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
import { NavigationEnd, Router } from '@angular/router';
import { MatButton, MatIconAnchor, MatIconButton } from '@angular/material/button';
import { MatDivider } from '@angular/material/divider';
import { MatIcon } from '@angular/material/icon';
import { MatMenu, MatMenuItem, MatMenuTrigger } from '@angular/material/menu';
import { MatProgressBar } from '@angular/material/progress-bar';
import { MatDrawer, MatDrawerContainer } from '@angular/material/sidenav';
import { MatToolbar, MatToolbarRow } from '@angular/material/toolbar';
import { MatTooltip } from '@angular/material/tooltip';
import { NavigationEnd, Router, RouterLink, RouterOutlet } from '@angular/router';
import Bugsnag from '@bugsnag/js';
import { TranslocoModule } from '@ngneat/transloco';
import { cloneDeep } from 'lodash-es';
import { CookieService } from 'ngx-cookie-service';
import { SystemRole } from 'realtime-server/lib/esm/common/models/system-role';
Expand All @@ -13,6 +22,7 @@ import { Observable, Subscription } from 'rxjs';
import { filter, map } from 'rxjs/operators';
import { ActivatedProjectService } from 'xforge-common/activated-project.service';
import { AuthService } from 'xforge-common/auth.service';
import { AvatarComponent } from 'xforge-common/avatar/avatar.component';
import { DataLoadingComponent } from 'xforge-common/data-loading-component';
import { DiagnosticOverlayService } from 'xforge-common/diagnostic-overlay.service';
import { DialogService } from 'xforge-common/dialog.service';
Expand All @@ -28,6 +38,7 @@ import { UserDoc } from 'xforge-common/models/user-doc';
import { NoticeService } from 'xforge-common/notice.service';
import { OnlineStatusService } from 'xforge-common/online-status.service';
import { PWA_BEFORE_PROMPT_CAN_BE_SHOWN_AGAIN, PwaService } from 'xforge-common/pwa.service';
import { RouterLinkDirective } from 'xforge-common/router-link.directive';
import {
BrowserIssue,
SupportedBrowsersDialogComponent
Expand All @@ -42,6 +53,8 @@ import { SFProjectProfileDoc } from './core/models/sf-project-profile-doc';
import { roleCanAccessTranslate } from './core/models/sf-project-role-info';
import { SFProjectUserConfigDoc } from './core/models/sf-project-user-config-doc';
import { SFProjectService } from './core/sf-project.service';
import { NavigationComponent } from './navigation/navigation.component';
import { GlobalNoticesComponent } from './shared/global-notices/global-notices.component';
import { checkAppAccess } from './shared/utils';

declare function gtag(...args: any): void;
Expand All @@ -50,7 +63,30 @@ declare function gtag(...args: any): void;
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.scss'],
standalone: false
imports: [
AsyncPipe,
TranslocoModule,
RouterLink,
AvatarComponent,
RouterLinkDirective,
NavigationComponent,
GlobalNoticesComponent,
RouterOutlet,
MatIcon,
MatDrawerContainer,
MatButton,
MatIconAnchor,
MatIconButton,
MatMenu,
MatMenuItem,
MatMenuTrigger,
MatTooltip,
MatToolbar,
MatToolbarRow,
MatProgressBar,
MatDivider,
MatDrawer
]
})
export class AppComponent extends DataLoadingComponent implements OnInit, OnDestroy {
version: string = versionData.version;
Expand Down
108 changes: 0 additions & 108 deletions src/SIL.XForge.Scripture/ClientApp/src/app/app.module.ts

This file was deleted.

Loading
Loading