Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
42 commits
Select commit Hold shift + click to select a range
4e90614
Phase 1:
siltomato Oct 8, 2025
ce16a8b
manual updates checkpoint;
siltomato Oct 10, 2025
6ebae6b
migrate NoopAnimationsModule and BrowserAnimationsModule
siltomato Oct 10, 2025
3ae3334
Phase 2:
siltomato Oct 12, 2025
4212b38
migrate UICommonModule providers
siltomato Oct 12, 2025
33747db
migrate UICommonModule exports and remove UICommonModule
siltomato Oct 12, 2025
6f872db
migrate storybook component declarations to be imports
siltomato Oct 12, 2025
615a03b
remove empty declarations
siltomato Oct 13, 2025
eb669d4
import angular material components instead of modules
siltomato Oct 13, 2025
6a78bbb
Phase 3: Bootstrap the project using standalone APIs
siltomato Oct 13, 2025
20df9ac
some cleanup
siltomato Oct 13, 2025
e4b88a6
migrate CoreModule
siltomato Oct 16, 2025
d2cf571
migrate CustomIconModule
siltomato Oct 16, 2025
61b0553
migrate SFTabsModule
siltomato Oct 16, 2025
a43135a
migrate SharedModule
siltomato Oct 16, 2025
483a10e
migrate routing modules
siltomato Oct 16, 2025
8438a9f
migrate LynxInsightsModule
siltomato Oct 16, 2025
e4ee16e
migrate app routing module
siltomato Oct 17, 2025
54c4df6
fix missing component references
siltomato Oct 17, 2025
cb78691
migrate UsersModule
siltomato Oct 17, 2025
293c178
migrate CheckingModule
siltomato Oct 17, 2025
c67a6db
migrate TranslateModule
siltomato Oct 17, 2025
aa54ab9
migrate XForgeCommonModule
siltomato Oct 17, 2025
c23558e
add missing component imports
siltomato Oct 17, 2025
d0612a2
migrate TestOnlineStatusModule and TestRealtimeModule to standalone p…
siltomato Oct 20, 2025
53ef21c
fix tests
siltomato Oct 22, 2025
801ec87
migrate RouterModule
siltomato Oct 22, 2025
093a567
migrate I18nStoryModule
siltomato Oct 22, 2025
0521e65
use makeEnvironmentProviders where appropriate
siltomato Oct 22, 2025
678163a
convert material module refs
siltomato Oct 22, 2025
ed37ca9
cleanup
siltomato Oct 22, 2025
a2cb5f2
remove @NgModule usages in tests
siltomato Oct 22, 2025
8ed57cd
migrate CommonModule
siltomato Oct 22, 2025
02483ad
fix stories
siltomato Oct 23, 2025
4e36179
fix tests
siltomato Oct 23, 2025
f7e4e96
fix stories
siltomato Oct 24, 2025
cd397af
add missing component imports
siltomato Oct 24, 2025
8ba1c01
remove 'standalone' from component decorator
siltomato Oct 28, 2025
06bfb3a
adjust imports
siltomato Oct 28, 2025
f856fb7
convert 'mat-dialog' tag to 'div'
siltomato Oct 28, 2025
e34901c
remove linebreaks to allow import sorting
siltomato Oct 29, 2025
836e65f
add missing component imports
siltomato Oct 30, 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
49 changes: 0 additions & 49 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
47 changes: 44 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,20 @@
import { BidiModule } from '@angular/cdk/bidi';
import { BreakpointObserver, BreakpointState } from '@angular/cdk/layout';
import { DOCUMENT } from '@angular/common';
import { CdkScrollable } from '@angular/cdk/scrolling';
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 +24,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 +40,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 +55,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 +65,33 @@ 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,
MatDrawerContainer,
CdkScrollable,
BidiModule
]
})
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