- - -
- - - Rocket Ship - - - - - +
+
+
+ - - {{ title }} app is running! - - - Rocket Ship Smoke - - - -
- - -

Resources

-

Here are some links to help you get started:

- - - - -

Next Steps

-

What do you want to do next with your app?

- - - -
-
- - - New Component -
- -
- - - Angular Material -
- -
- - - Add PWA Support -
- -
- - - Add Dependency -
- -
- - - Run and Watch Tests + + + + + + + + + + + + + + + +

Hello, {{ title }}

+

Congratulations! Your app is running. 🎉

- -
- - - Build for Production + +
+
+ @for (item of [ + { title: 'Explore the Docs', link: 'https://angular.dev' }, + { title: 'Learn with Tutorials', link: 'https://angular.dev/tutorials' }, + { title: 'CLI Docs', link: 'https://angular.dev/tools/cli' }, + { title: 'Angular Language Service', link: 'https://angular.dev/tools/language-service' }, + { title: 'Angular DevTools', link: 'https://angular.dev/tools/devtools' }, + ]; track item.title) { + + {{ item.title }} + + + + + } +
+
+ - -
-
ng generate component xyz
-
ng add @angular/material
-
ng add @angular/pwa
-
ng add _____
-
ng test
-
ng build
-
- - - - - - - - - Gray Clouds Background - - - -
+ + + + + + + - - - - - - - + diff --git a/docs/ui/getting-started/demo/1__my-app/src/app/app.component.spec.ts b/docs/ui/getting-started/demo/1__my-app/src/app/app.component.spec.ts index 8ffad8959..5119ea23a 100644 --- a/docs/ui/getting-started/demo/1__my-app/src/app/app.component.spec.ts +++ b/docs/ui/getting-started/demo/1__my-app/src/app/app.component.spec.ts @@ -4,9 +4,7 @@ import { AppComponent } from './app.component'; describe('AppComponent', () => { beforeEach(async () => { await TestBed.configureTestingModule({ - declarations: [ - AppComponent - ], + imports: [AppComponent], }).compileComponents(); }); @@ -16,7 +14,7 @@ describe('AppComponent', () => { expect(app).toBeTruthy(); }); - it(`should have as title 'my-app'`, () => { + it(`should have the 'my-app' title`, () => { const fixture = TestBed.createComponent(AppComponent); const app = fixture.componentInstance; expect(app.title).toEqual('my-app'); @@ -25,7 +23,7 @@ describe('AppComponent', () => { it('should render title', () => { const fixture = TestBed.createComponent(AppComponent); fixture.detectChanges(); - const compiled = fixture.nativeElement; - expect(compiled.querySelector('.content span').textContent).toContain('my-app app is running!'); + const compiled = fixture.nativeElement as HTMLElement; + expect(compiled.querySelector('h1')?.textContent).toContain('Hello, my-app'); }); }); diff --git a/docs/ui/getting-started/demo/1__my-app/src/app/app.component.ts b/docs/ui/getting-started/demo/1__my-app/src/app/app.component.ts index 16f9b76ff..0e4a4eb0b 100644 --- a/docs/ui/getting-started/demo/1__my-app/src/app/app.component.ts +++ b/docs/ui/getting-started/demo/1__my-app/src/app/app.component.ts @@ -1,9 +1,11 @@ import { Component } from '@angular/core'; +import { RouterOutlet } from '@angular/router'; @Component({ selector: 'app-root', + imports: [RouterOutlet], templateUrl: './app.component.html', - styleUrls: ['./app.component.scss'] + styleUrl: './app.component.scss' }) export class AppComponent { title = 'my-app'; diff --git a/docs/ui/getting-started/demo/1__my-app/src/app/app.config.ts b/docs/ui/getting-started/demo/1__my-app/src/app/app.config.ts new file mode 100644 index 000000000..a1e7d6f86 --- /dev/null +++ b/docs/ui/getting-started/demo/1__my-app/src/app/app.config.ts @@ -0,0 +1,8 @@ +import { ApplicationConfig, provideZoneChangeDetection } from '@angular/core'; +import { provideRouter } from '@angular/router'; + +import { routes } from './app.routes'; + +export const appConfig: ApplicationConfig = { + providers: [provideZoneChangeDetection({ eventCoalescing: true }), provideRouter(routes)] +}; diff --git a/docs/ui/getting-started/demo/1__my-app/src/app/app.module.ts b/docs/ui/getting-started/demo/1__my-app/src/app/app.module.ts deleted file mode 100644 index 8dfc1d682..000000000 --- a/docs/ui/getting-started/demo/1__my-app/src/app/app.module.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { NgModule } from '@angular/core'; -import { BrowserModule } from '@angular/platform-browser'; - -import { AppComponent } from './app.component'; - -@NgModule({ - declarations: [ - AppComponent - ], - imports: [ - BrowserModule - ], - providers: [], - bootstrap: [AppComponent] -}) -export class AppModule { } diff --git a/docs/ui/getting-started/demo/1__my-app/src/app/app.routes.ts b/docs/ui/getting-started/demo/1__my-app/src/app/app.routes.ts new file mode 100644 index 000000000..dc39edb5f --- /dev/null +++ b/docs/ui/getting-started/demo/1__my-app/src/app/app.routes.ts @@ -0,0 +1,3 @@ +import { Routes } from '@angular/router'; + +export const routes: Routes = []; diff --git a/docs/ui/getting-started/demo/1__my-app/src/assets/.gitkeep b/docs/ui/getting-started/demo/1__my-app/src/assets/.gitkeep deleted file mode 100644 index e69de29bb..000000000 diff --git a/docs/ui/getting-started/demo/1__my-app/src/environments/environment.prod.ts b/docs/ui/getting-started/demo/1__my-app/src/environments/environment.prod.ts deleted file mode 100644 index 3612073bc..000000000 --- a/docs/ui/getting-started/demo/1__my-app/src/environments/environment.prod.ts +++ /dev/null @@ -1,3 +0,0 @@ -export const environment = { - production: true -}; diff --git a/docs/ui/getting-started/demo/1__my-app/src/environments/environment.ts b/docs/ui/getting-started/demo/1__my-app/src/environments/environment.ts deleted file mode 100644 index f56ff4702..000000000 --- a/docs/ui/getting-started/demo/1__my-app/src/environments/environment.ts +++ /dev/null @@ -1,16 +0,0 @@ -// This file can be replaced during build by using the `fileReplacements` array. -// `ng build` replaces `environment.ts` with `environment.prod.ts`. -// The list of file replacements can be found in `angular.json`. - -export const environment = { - production: false -}; - -/* - * For easier debugging in development mode, you can import the following file - * to ignore zone related error stack frames such as `zone.run`, `zoneDelegate.invokeTask`. - * - * This import should be commented out in production mode because it will have a negative impact - * on performance if an error is thrown. - */ -// import 'zone.js/plugins/zone-error'; // Included with Angular CLI. diff --git a/docs/ui/getting-started/demo/1__my-app/src/favicon.ico b/docs/ui/getting-started/demo/1__my-app/src/favicon.ico deleted file mode 100644 index 997406ad22c29aae95893fb3d666c30258a09537..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 948 zcmV;l155mgP)CBYU7IjCFmI-B}4sMJt3^s9NVg!P0 z6hDQy(L`XWMkB@zOLgN$4KYz;j0zZxq9KKdpZE#5@k0crP^5f9KO};h)ZDQ%ybhht z%t9#h|nu0K(bJ ztIkhEr!*UyrZWQ1k2+YkGqDi8Z<|mIN&$kzpKl{cNP=OQzXHz>vn+c)F)zO|Bou>E z2|-d_=qY#Y+yOu1a}XI?cU}%04)zz%anD(XZC{#~WreV!a$7k2Ug`?&CUEc0EtrkZ zL49MB)h!_K{H(*l_93D5tO0;BUnvYlo+;yss%n^&qjt6fZOa+}+FDO(~2>G z2dx@=JZ?DHP^;b7*Y1as5^uphBsh*s*z&MBd?e@I>-9kU>63PjP&^#5YTOb&x^6Cf z?674rmSHB5Fk!{Gv7rv!?qX#ei_L(XtwVqLX3L}$MI|kJ*w(rhx~tc&L&xP#?cQow zX_|gx$wMr3pRZIIr_;;O|8fAjd;1`nOeu5K(pCu7>^3E&D2OBBq?sYa(%S?GwG&_0-s%_v$L@R!5H_fc)lOb9ZoOO#p`Nn`KU z3LTTBtjwo`7(HA6 z7gmO$yTR!5L>Bsg!X8616{JUngg_@&85%>W=mChTR;x4`P=?PJ~oPuy5 zU-L`C@_!34D21{fD~Y8NVnR3t;aqZI3fIhmgmx}$oc-dKDC6Ap$Gy>a!`A*x2L1v0 WcZ@i?LyX}70000 - my-app + MyApp diff --git a/docs/ui/getting-started/demo/1__my-app/src/main.ts b/docs/ui/getting-started/demo/1__my-app/src/main.ts index c7b673cf4..35b00f346 100644 --- a/docs/ui/getting-started/demo/1__my-app/src/main.ts +++ b/docs/ui/getting-started/demo/1__my-app/src/main.ts @@ -1,12 +1,6 @@ -import { enableProdMode } from '@angular/core'; -import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; +import { bootstrapApplication } from '@angular/platform-browser'; +import { appConfig } from './app/app.config'; +import { AppComponent } from './app/app.component'; -import { AppModule } from './app/app.module'; -import { environment } from './environments/environment'; - -if (environment.production) { - enableProdMode(); -} - -platformBrowserDynamic().bootstrapModule(AppModule) - .catch(err => console.error(err)); +bootstrapApplication(AppComponent, appConfig) + .catch((err) => console.error(err)); diff --git a/docs/ui/getting-started/demo/1__my-app/src/polyfills.ts b/docs/ui/getting-started/demo/1__my-app/src/polyfills.ts deleted file mode 100644 index 373f538a7..000000000 --- a/docs/ui/getting-started/demo/1__my-app/src/polyfills.ts +++ /dev/null @@ -1,65 +0,0 @@ -/** - * This file includes polyfills needed by Angular and is loaded before the app. - * You can add your own extra polyfills to this file. - * - * This file is divided into 2 sections: - * 1. Browser polyfills. These are applied before loading ZoneJS and are sorted by browsers. - * 2. Application imports. Files imported after ZoneJS that should be loaded before your main - * file. - * - * The current setup is for so-called "evergreen" browsers; the last versions of browsers that - * automatically update themselves. This includes Safari >= 10, Chrome >= 55 (including Opera), - * Edge >= 13 on the desktop, and iOS 10 and Chrome on mobile. - * - * Learn more in https://angular.io/guide/browser-support - */ - -/*************************************************************************************************** - * BROWSER POLYFILLS - */ - -/** - * IE11 requires the following for NgClass support on SVG elements - */ -// import 'classlist.js'; // Run `npm install --save classlist.js`. - -/** - * Web Animations `@angular/platform-browser/animations` - * Only required if AnimationBuilder is used within the application and using IE/Edge or Safari. - * Standard animation support in Angular DOES NOT require any polyfills (as of Angular 6.0). - */ -// import 'web-animations-js'; // Run `npm install --save web-animations-js`. - -/** - * By default, zone.js will patch all possible macroTask and DomEvents - * user can disable parts of macroTask/DomEvents patch by setting following flags - * because those flags need to be set before `zone.js` being loaded, and webpack - * will put import in the top of bundle, so user need to create a separate file - * in this directory (for example: zone-flags.ts), and put the following flags - * into that file, and then add the following code before importing zone.js. - * import './zone-flags'; - * - * The flags allowed in zone-flags.ts are listed here. - * - * The following flags will work for all browsers. - * - * (window as any).__Zone_disable_requestAnimationFrame = true; // disable patch requestAnimationFrame - * (window as any).__Zone_disable_on_property = true; // disable patch onProperty such as onclick - * (window as any).__zone_symbol__UNPATCHED_EVENTS = ['scroll', 'mousemove']; // disable patch specified eventNames - * - * in IE/Edge developer tools, the addEventListener will also be wrapped by zone.js - * with the following flag, it will bypass `zone.js` patch for IE/Edge - * - * (window as any).__Zone_enable_cross_context_check = true; - * - */ - -/*************************************************************************************************** - * Zone JS is required by default for Angular itself. - */ -import 'zone.js'; // Included with Angular CLI. - - -/*************************************************************************************************** - * APPLICATION IMPORTS - */ diff --git a/docs/ui/getting-started/demo/1__my-app/src/test.ts b/docs/ui/getting-started/demo/1__my-app/src/test.ts deleted file mode 100644 index 204235640..000000000 --- a/docs/ui/getting-started/demo/1__my-app/src/test.ts +++ /dev/null @@ -1,25 +0,0 @@ -// This file is required by karma.conf.js and loads recursively all the .spec and framework files - -import 'zone.js/testing'; -import { getTestBed } from '@angular/core/testing'; -import { - BrowserDynamicTestingModule, - platformBrowserDynamicTesting -} from '@angular/platform-browser-dynamic/testing'; - -declare const require: { - context(path: string, deep?: boolean, filter?: RegExp): { - keys(): string[]; - (id: string): T; - }; -}; - -// First, initialize the Angular testing environment. -getTestBed().initTestEnvironment( - BrowserDynamicTestingModule, - platformBrowserDynamicTesting() -); -// Then we find all the tests. -const context = require.context('./', true, /\.spec\.ts$/); -// And load the modules. -context.keys().map(context); diff --git a/docs/ui/getting-started/demo/1__my-app/tsconfig.app.json b/docs/ui/getting-started/demo/1__my-app/tsconfig.app.json index 82d91dc4a..3775b37e3 100644 --- a/docs/ui/getting-started/demo/1__my-app/tsconfig.app.json +++ b/docs/ui/getting-started/demo/1__my-app/tsconfig.app.json @@ -1,4 +1,5 @@ -/* To learn more about this file see: https://angular.io/config/tsconfig. */ +/* To learn more about Typescript configuration file: https://www.typescriptlang.org/docs/handbook/tsconfig-json.html. */ +/* To learn more about Angular compiler options: https://angular.dev/reference/configs/angular-compiler-options. */ { "extends": "./tsconfig.json", "compilerOptions": { @@ -6,8 +7,7 @@ "types": [] }, "files": [ - "src/main.ts", - "src/polyfills.ts" + "src/main.ts" ], "include": [ "src/**/*.d.ts" diff --git a/docs/ui/getting-started/demo/1__my-app/tsconfig.json b/docs/ui/getting-started/demo/1__my-app/tsconfig.json index 6df828326..5525117c6 100644 --- a/docs/ui/getting-started/demo/1__my-app/tsconfig.json +++ b/docs/ui/getting-started/demo/1__my-app/tsconfig.json @@ -1,25 +1,22 @@ -/* To learn more about this file see: https://angular.io/config/tsconfig. */ +/* To learn more about Typescript configuration file: https://www.typescriptlang.org/docs/handbook/tsconfig-json.html. */ +/* To learn more about Angular compiler options: https://angular.dev/reference/configs/angular-compiler-options. */ { "compileOnSave": false, "compilerOptions": { - "baseUrl": "./", "outDir": "./dist/out-tsc", - "forceConsistentCasingInFileNames": true, "strict": true, + "noImplicitOverride": true, + "noPropertyAccessFromIndexSignature": true, "noImplicitReturns": true, "noFallthroughCasesInSwitch": true, - "sourceMap": true, - "declaration": false, - "downlevelIteration": true, + "skipLibCheck": true, + "isolatedModules": true, + "esModuleInterop": true, "experimentalDecorators": true, - "moduleResolution": "node", + "moduleResolution": "bundler", "importHelpers": true, - "target": "es2017", - "module": "es2020", - "lib": [ - "es2018", - "dom" - ] + "target": "ES2022", + "module": "ES2022" }, "angularCompilerOptions": { "enableI18nLegacyMessageIdFormat": false, diff --git a/docs/ui/getting-started/demo/1__my-app/tsconfig.spec.json b/docs/ui/getting-started/demo/1__my-app/tsconfig.spec.json index 092345b02..5fb748d92 100644 --- a/docs/ui/getting-started/demo/1__my-app/tsconfig.spec.json +++ b/docs/ui/getting-started/demo/1__my-app/tsconfig.spec.json @@ -1,4 +1,5 @@ -/* To learn more about this file see: https://angular.io/config/tsconfig. */ +/* To learn more about Typescript configuration file: https://www.typescriptlang.org/docs/handbook/tsconfig-json.html. */ +/* To learn more about Angular compiler options: https://angular.dev/reference/configs/angular-compiler-options. */ { "extends": "./tsconfig.json", "compilerOptions": { @@ -7,10 +8,6 @@ "jasmine" ] }, - "files": [ - "src/test.ts", - "src/polyfills.ts" - ], "include": [ "src/**/*.spec.ts", "src/**/*.d.ts" diff --git a/docs/ui/getting-started/demo/2.1__my-app/src/__styles.scss.md b/docs/ui/getting-started/demo/2.1__my-app/src/__styles.scss.md index 311cd9bd9..aec62d5a1 100644 --- a/docs/ui/getting-started/demo/2.1__my-app/src/__styles.scss.md +++ b/docs/ui/getting-started/demo/2.1__my-app/src/__styles.scss.md @@ -1,3 +1,3 @@ --- -primary: 2,4-6 +primary: 2 --- diff --git a/docs/ui/getting-started/demo/2.1__my-app/src/styles.scss b/docs/ui/getting-started/demo/2.1__my-app/src/styles.scss index 2fa8b917c..17322e5f1 100644 --- a/docs/ui/getting-started/demo/2.1__my-app/src/styles.scss +++ b/docs/ui/getting-started/demo/2.1__my-app/src/styles.scss @@ -1,6 +1,2 @@ /* You can add global styles to this file, and also import other style files */ -@use '../node_modules/@ng-nest/ui/style/core/index.css' as *; - -body { - margin: 0; -} +@import '../node_modules/@ng-nest/ui/style/core/index.css'; diff --git a/docs/ui/getting-started/demo/2.2__my-app/__angular.json.md b/docs/ui/getting-started/demo/2.2__my-app/__angular.json.md index 1e4198d17..8d9d271f8 100644 --- a/docs/ui/getting-started/demo/2.2__my-app/__angular.json.md +++ b/docs/ui/getting-started/demo/2.2__my-app/__angular.json.md @@ -1,3 +1,3 @@ --- -primary: '30' +primary: '32' --- diff --git a/docs/ui/getting-started/demo/2.2__my-app/angular.json b/docs/ui/getting-started/demo/2.2__my-app/angular.json index a9477e102..2aea66044 100644 --- a/docs/ui/getting-started/demo/2.2__my-app/angular.json +++ b/docs/ui/getting-started/demo/2.2__my-app/angular.json @@ -8,9 +8,6 @@ "schematics": { "@schematics/angular:component": { "style": "scss" - }, - "@schematics/angular:application": { - "strict": true } }, "root": "", @@ -18,15 +15,20 @@ "prefix": "app", "architect": { "build": { - "builder": "@angular-devkit/build-angular:browser", + "builder": "@angular-devkit/build-angular:application", "options": { "outputPath": "dist/my-app", "index": "src/index.html", - "main": "src/main.ts", - "polyfills": "src/polyfills.ts", + "browser": "src/main.ts", + "polyfills": ["zone.js"], "tsConfig": "tsconfig.app.json", "inlineStyleLanguage": "scss", - "assets": ["src/favicon.ico", "src/assets"], + "assets": [ + { + "glob": "**/*", + "input": "public" + } + ], "styles": ["node_modules/@ng-nest/ui/style/core/index.css", "src/styles.scss"], "scripts": [] }, @@ -35,30 +37,21 @@ "budgets": [ { "type": "initial", - "maximumWarning": "500kb", - "maximumError": "1mb" + "maximumWarning": "500kB", + "maximumError": "1MB" }, { "type": "anyComponentStyle", - "maximumWarning": "2kb", - "maximumError": "4kb" - } - ], - "fileReplacements": [ - { - "replace": "src/environments/environment.ts", - "with": "src/environments/environment.prod.ts" + "maximumWarning": "4kB", + "maximumError": "8kB" } ], "outputHashing": "all" }, "development": { - "buildOptimizer": false, "optimization": false, - "vendorChunk": true, "extractLicenses": false, - "sourceMap": true, - "namedChunks": true + "sourceMap": true } }, "defaultConfiguration": "production" @@ -67,35 +60,34 @@ "builder": "@angular-devkit/build-angular:dev-server", "configurations": { "production": { - "browserTarget": "my-app:build:production" + "buildTarget": "my-app:build:production" }, "development": { - "browserTarget": "my-app:build:development" + "buildTarget": "my-app:build:development" } }, "defaultConfiguration": "development" }, "extract-i18n": { - "builder": "@angular-devkit/build-angular:extract-i18n", - "options": { - "browserTarget": "my-app:build" - } + "builder": "@angular-devkit/build-angular:extract-i18n" }, "test": { "builder": "@angular-devkit/build-angular:karma", "options": { - "main": "src/test.ts", - "polyfills": "src/polyfills.ts", + "polyfills": ["zone.js", "zone.js/testing"], "tsConfig": "tsconfig.spec.json", - "karmaConfig": "karma.conf.js", "inlineStyleLanguage": "scss", - "assets": ["src/favicon.ico", "src/assets"], + "assets": [ + { + "glob": "**/*", + "input": "public" + } + ], "styles": ["src/styles.scss"], "scripts": [] } } } } - }, - "defaultProject": "my-app" + } } diff --git a/docs/ui/getting-started/demo/3.1__my-app/src/app/__app.config.ts.md b/docs/ui/getting-started/demo/3.1__my-app/src/app/__app.config.ts.md new file mode 100644 index 000000000..767f601ae --- /dev/null +++ b/docs/ui/getting-started/demo/3.1__my-app/src/app/__app.config.ts.md @@ -0,0 +1,3 @@ +--- +primary: '5, 6, 10, 11' +--- diff --git a/docs/ui/getting-started/demo/3.1__my-app/src/app/__app.module.ts.md b/docs/ui/getting-started/demo/3.1__my-app/src/app/__app.module.ts.md deleted file mode 100644 index b774b2c89..000000000 --- a/docs/ui/getting-started/demo/3.1__my-app/src/app/__app.module.ts.md +++ /dev/null @@ -1,3 +0,0 @@ ---- -primary: '5, 13' ---- diff --git a/docs/ui/getting-started/demo/3.1__my-app/src/app/app.config.ts b/docs/ui/getting-started/demo/3.1__my-app/src/app/app.config.ts new file mode 100644 index 000000000..ded6b6835 --- /dev/null +++ b/docs/ui/getting-started/demo/3.1__my-app/src/app/app.config.ts @@ -0,0 +1,15 @@ +import { ApplicationConfig, provideZoneChangeDetection } from '@angular/core'; +import { provideRouter } from '@angular/router'; + +import { routes } from './app.routes'; +import { provideHttpClient, withFetch } from '@angular/common/http'; +import { provideAnimations } from '@angular/platform-browser/animations'; + +export const appConfig: ApplicationConfig = { + providers: [ + provideHttpClient(withFetch()), + provideAnimations(), + provideZoneChangeDetection({ eventCoalescing: true }), + provideRouter(routes) + ] +}; diff --git a/docs/ui/getting-started/demo/3.1__my-app/src/app/app.module.ts b/docs/ui/getting-started/demo/3.1__my-app/src/app/app.module.ts deleted file mode 100644 index d69575671..000000000 --- a/docs/ui/getting-started/demo/3.1__my-app/src/app/app.module.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { NgModule } from '@angular/core'; -import { BrowserModule } from '@angular/platform-browser'; - -import { AppComponent } from './app.component'; -import { XButtonComponent } from '@ng-nest/ui/button'; - -@NgModule({ - declarations: [ - AppComponent - ], - imports: [ - BrowserModule, - XButtonComponent - ], - providers: [], - bootstrap: [AppComponent] -}) -export class AppModule { } diff --git a/docs/ui/getting-started/demo/3.2__my-app/src/app/__app.component.ts.md b/docs/ui/getting-started/demo/3.2__my-app/src/app/__app.component.ts.md new file mode 100644 index 000000000..5f18247b5 --- /dev/null +++ b/docs/ui/getting-started/demo/3.2__my-app/src/app/__app.component.ts.md @@ -0,0 +1,3 @@ +--- +primary: '2, 7' +--- diff --git a/docs/ui/getting-started/demo/3.2__my-app/src/app/app.component.ts b/docs/ui/getting-started/demo/3.2__my-app/src/app/app.component.ts new file mode 100644 index 000000000..3985f2243 --- /dev/null +++ b/docs/ui/getting-started/demo/3.2__my-app/src/app/app.component.ts @@ -0,0 +1,13 @@ +import { Component } from '@angular/core'; +import { XButtonComponent } from '@ng-nest/ui/button'; + +@Component({ + selector: 'app-root', + standalone: true, + imports: [XButtonComponent], + templateUrl: './app.component.html', + styleUrl: './app.component.scss' +}) +export class AppComponent { + title = 'front'; +} diff --git a/docs/ui/getting-started/demo/3.2__my-app/src/app/app.component.html b/docs/ui/getting-started/demo/3.3__my-app/src/app/app.component.html similarity index 100% rename from docs/ui/getting-started/demo/3.2__my-app/src/app/app.component.html rename to docs/ui/getting-started/demo/3.3__my-app/src/app/app.component.html diff --git a/docs/ui/getting-started/demo/3.2__my-app/src/app/app.component.scss b/docs/ui/getting-started/demo/3.3__my-app/src/app/app.component.scss similarity index 100% rename from docs/ui/getting-started/demo/3.2__my-app/src/app/app.component.scss rename to docs/ui/getting-started/demo/3.3__my-app/src/app/app.component.scss diff --git a/docs/ui/getting-started/demo/3__bash/1.bash b/docs/ui/getting-started/demo/3__bash/1.bash index a24669082..67eba806b 100644 --- a/docs/ui/getting-started/demo/3__bash/1.bash +++ b/docs/ui/getting-started/demo/3__bash/1.bash @@ -1,21 +1,15 @@ $ ng serve -o -... +Initial chunk files | Names | Raw size +polyfills.js | polyfills | 90.20 kB | +main.js | main | 18.18 kB | +styles.css | styles | 96 bytes | -✔ Browser application bundle generation complete. + | Initial total | 108.47 kB -Initial Chunk Files | Names | Size -vendor.js | vendor | 2.08 MB -polyfills.js | polyfills | 508.81 kB -styles.css, styles.js | styles | 381.00 kB -main.js | main | 52.67 kB -runtime.js | runtime | 6.57 kB +Application bundle generation complete. [3.233 seconds] - | Initial Total | 3.01 MB - -Build at: 2021-06-04T00:10:26.608Z - Hash: 1784c41ec3a22ead59dc - Time: 5748ms - -** Angular Live Development Server is listening on localhost:4200, open your browser on http://localhost:4200/ ** - - -√ Compiled successfully. \ No newline at end of file +Watch mode enabled. Watching for file changes... +NOTE: Raw file sizes do not reflect development server per-request transformations. + ➜ Local: http://localhost:4200/ + ➜ press h + enter to show help diff --git a/docs/ui/getting-started/demo/3__img/1.png b/docs/ui/getting-started/demo/3__img/1.png index e5fe4e4c1cc759e8a5b82cb3c6c89393ee5bb06a..3d69a7f0e81c6c1022108ee821a18b722d8099cd 100644 GIT binary patch literal 41548 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 Q;9|GvqB-V#8Ok&6-;Y&}EC2ui literal 8301 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 Please set up the environment before starting, how to set up the environment please check [angular](https://angular.io/guide/setup-local) official tutorial。 +> Please set up the environment before starting, how to set up the environment please check [angular](https://angular.dev/installation) official tutorial。 Run `ng --version` to check the current version, please do not go below the version number. @@ -37,17 +37,22 @@ Or in `angular.json` in `projects/my-app/architect/build/options/styles` attribu ## 3. Add component use +Open the `src/app/app.config.ts` file and add the `provideHttpClient` HTTP request and the `provideAnimations` animation module. + +{{ __3.1\__my-app:src/app/app.config.ts:false }} + Open the `src/app/app.module.ts` file to introduce the `x-button` component module. -{{ __3.1\__my-app:src/app/app.module.ts:false }} +{{ __3.2\__my-app:src/app/app.module.ts:false }} ```primary All components are supported separately, and introducing all components at once can result in a large package size. +All components now support `Zoneless`, and you can add the ` provideExperimentalZonelessChangeDetection()` module in `app.config.ts`, `Zoneless` related configurations can be viewed in the [official documentation](https://angular.dev/guide/experimental/zoneless). ``` Open src/app/app.component.html replaced with the following code, and modify the corresponding SCSS style. -{{ __3.2\__my-app:src/app/app.component.html }} +{{ __3.3\__my-app:src/app/app.component.html }} Then open the command line tool in the my-app project root and use `ng serve -o` to run the project. diff --git a/docs/ui/getting-started/readme.zh_CN.md b/docs/ui/getting-started/readme.zh_CN.md index 4bbfb7540..856d9b68f 100644 --- a/docs/ui/getting-started/readme.zh_CN.md +++ b/docs/ui/getting-started/readme.zh_CN.md @@ -5,7 +5,7 @@ label: '快速上手' # 快速上手 -> 开始前请搭建好环境,如何搭建环境请查看 [angular](https://angular.io/guide/setup-local) 官方教程。 +> 开始前请搭建好环境,如何搭建环境请查看 [angular](https://angular.dev/installation) 官方教程。 运行 `ng --version` 来检查当前版本,请不要低于以下版本号。 @@ -37,19 +37,24 @@ Angular CLI 会安装必要的依赖包。这可能要花几分钟的时间,CL ## 3. 添加组件使用 -打开 `src/app/app.module.ts` 文件引入 `x-button` 组件模块。 +打开 `src/app/app.config.ts` 文件,添加 `provideHttpClient` http请求和 `provideAnimations` 动画模块。 -{{ __3.1\__my-app:src/app/app.module.ts:false }} +{{ __3.1\__my-app:src/app/app.config.ts:false }} + +打开 `src/app/app.component.ts` 文件引入 `x-button` 组件。 + +{{ __3.2\__my-app:src/app/app.component.ts:false }} ```primary 所有的组件只支持单独引入,一次性引入所有组件会导致打包体积比较大。 +支持 `Zoneless` , 可以在 `app.config.ts` 中添加 `provideExperimentalZonelessChangeDetection()` 模块。`Zoneless` 相关配置可以查看 [官方文档](https://angular.dev/guide/experimental/zoneless)。 ``` 打开 src/app/app.component.html 替换成以下的代码,并修改对应的 scss 样式。 -{{ __3.2\__my-app:src/app/app.component.html }} +{{ __3.3\__my-app:src/app/app.component.html }} -然后在 my-app 项目根目录下打开命令行工具使用 ng serve -o 来运行项目。 +然后在 `my-app` 项目根目录下打开命令行工具使用 `ng serve -o` 来运行项目。 {{ __3\__bash:1.bash:false:false }} diff --git a/docs/ui/ng-nest/readme.en_US.md b/docs/ui/ng-nest/readme.en_US.md index 633fd981a..7d101df7a 100644 --- a/docs/ui/ng-nest/readme.en_US.md +++ b/docs/ui/ng-nest/readme.en_US.md @@ -8,14 +8,17 @@ default: true NG-NEST is an open source Web application framework based on Angular and NEST, mainly used for research and development of enterprise-level background products. -- [Angular](https://angular.io/docs) is an application design framework and development platform for creating efficient, complex, sophisticated, single-page applications. +- [Angular](https://angular.dev/overview) is an application design framework and development platform for creating efficient, complex, sophisticated, single-page applications. - [Nest](https://docs.nestjs.com/) is a framework for building efficient, scalable Node.js server-side applications. ## Features - Both clients and servers are built using TypeScript and provide complete type definition files. - High quality Angular components out of the box, updated in sync with Angular. -- Use the OnPush mode to improve performance. +- The component now supports standalone components, with `Angular 19` starting to default to `true`. +- The component has rewritten its internal logic with the `Signal` signal, and parameter passing has also been switched to `InputSignal`. +- The component now fully supports `Zoneless`. +- The template has been switched to the new control flow syntax. - Standardize the code with strict patterns. - Use the VAR in CSS3 to define the theme style. @@ -25,7 +28,7 @@ npm 19.0.0 ## Support Angular version -Angular ^18.0.0 is currently supported by `@ng-nest/ui`. +Angular ^19.0.0 is currently supported by `@ng-nest/ui`. ## Supporting environment @@ -40,7 +43,7 @@ Angular ^18.0.0 is currently supported by `@ng-nest/ui`. ## Basic assumptions -This document assumes that you are already familiar with the basics of [Angular](https://angular.io/docs) and [Nest](https://docs.nestjs.com/). In the document code example is using the latest version of the [TypeScript](https://www.typescriptlang.org/), it will use [type](https://www.typescriptlang.org/docs/handbook/classes.html) to realize the dependency injection, Will also be decorated with [](https://www.typescriptlang.org/docs/handbook/decorators.html) to provide metadata. +This document assumes that you are already familiar with the basics of [Angular](https://angular.dev/overview) and [Nest](https://docs.nestjs.com/). In the document code example is using the latest version of the [TypeScript](https://www.typescriptlang.org/), it will use [type](https://www.typescriptlang.org/docs/handbook/classes.html) to realize the dependency injection, Will also be decorated with [](https://www.typescriptlang.org/docs/handbook/decorators.html) to provide metadata. ## Communication group diff --git a/docs/ui/ng-nest/readme.zh_CN.md b/docs/ui/ng-nest/readme.zh_CN.md index dc8273767..d892d6e5a 100644 --- a/docs/ui/ng-nest/readme.zh_CN.md +++ b/docs/ui/ng-nest/readme.zh_CN.md @@ -8,15 +8,17 @@ default: true NG-NEST 是一个开源的 Web 应用程序框架,基于 Angular 和 Nest ,主要用于研发企业级中后台产品。 -- [Angular](https://angular.cn/docs) 是一个应用设计框架与开发平台,用于创建高效、复杂、精致的单页面应用。 +- [Angular](https://angular.dev/overview) 是一个应用设计框架与开发平台,用于创建高效、复杂、精致的单页面应用。 - [Nest](https://docs.nestjs.com/) 是构建高效、可扩展的 Node.js 服务器端应用程序的框架。 ## 特性 -- 客户端与服务端都使用 TypeScript 构建,提供完整的类型定义文件。 -- 开箱即用的高质量 Angular 组件,与 Angular 保持同步升级。 -- 使用 OnPush 模式提升性能。 -- 使用严格模式规范代码。 +- 客户端与服务端都使用 `TypeScript` 构建,提供完整的类型定义文件。 +- 开箱即用的高质量 `Angular` 组件,与 `Angular` 保持同步升级。 +- 支持独立组件 `standalone`,`angular 19` 开始默认为 `true`。 +- 支持 `InputSignal` 参数,已用 `Signal` 信号重写内部逻辑。 +- 支持 `Zoneless`,添加 `provideExperimentalZonelessChangeDetection`。 +- 模板已切换到新的控制流语法。 - 使用 CSS3 中的 var 来定义主题样式。 ## 当前版本 @@ -25,7 +27,7 @@ npm 19.0.0 ## 支持 Angular 版本 -`@ng-nest/ui` 目前最新支持 Angular ^18.0.0 版本。 +`@ng-nest/ui` 目前最新支持 Angular ^19.0.0 版本。 ## 支持环境 @@ -40,7 +42,7 @@ npm 19.0.0 ## 基本假设 -本文档假设你已经熟悉了 [Angular](https://angular.cn/docs) 和 [Nest](https://docs.nestjs.com/) 的一些基础知识。文档中的代码范例都是使用最新版本的 [TypeScript](https://www.typescriptlang.org/) ,它会用 [类型](https://www.typescriptlang.org/docs/handbook/classes.html) 实现依赖注入,还会用 [装饰器](https://www.typescriptlang.org/docs/handbook/decorators.html) 来提供元数据。 +本文档假设你已经熟悉了 [Angular](https://angular.dev/overview) 和 [Nest](https://docs.nestjs.com/) 的一些基础知识。文档中的代码范例都是使用最新版本的 [TypeScript](https://www.typescriptlang.org/) ,它会用 [类型](https://www.typescriptlang.org/docs/handbook/classes.html) 实现依赖注入,还会用 [装饰器](https://www.typescriptlang.org/docs/handbook/decorators.html) 来提供元数据。 ## 交流群号 diff --git a/lib/ng-nest/ui/doc/style/mixin.scss b/lib/ng-nest/ui/doc/style/mixin.scss index 2224e3173..6363a470e 100644 --- a/lib/ng-nest/ui/doc/style/mixin.scss +++ b/lib/ng-nest/ui/doc/style/mixin.scss @@ -1,5 +1,5 @@ // Doc -@use "sass:map"; +@use 'sass:map'; @use '../../style/params/index.scss' as *; @use './param.scss' as *; @@ -59,6 +59,9 @@ list-style-type: circle; margin-left: 1.25rem; line-height: 1.75rem; + &:not(:first-child) { + margin-top: 0.25rem; + } } } diff --git a/lib/ng-nest/ui/progress/style/mixin.scss b/lib/ng-nest/ui/progress/style/mixin.scss index 78f9db8d5..46626af4b 100644 --- a/lib/ng-nest/ui/progress/style/mixin.scss +++ b/lib/ng-nest/ui/progress/style/mixin.scss @@ -104,7 +104,7 @@ background-color: $x-primary; } &-text { - padding-left: 0.5rem; + margin-left: 0.5rem; display: inline-flex; align-items: center; white-space: nowrap; diff --git a/src/interfaces/en_US-docs.types.ts b/src/interfaces/en_US-docs.types.ts index 1c94f298c..af5c66b10 100644 --- a/src/interfaces/en_US-docs.types.ts +++ b/src/interfaces/en_US-docs.types.ts @@ -14833,7 +14833,7 @@ export const en_US: {[key: string]: AppProp} = { "toType": "boolean", "inputType": "InputSignalWithTransform", "signal": "input", - "label": "Adjust the size of the box", + "label": "Adjust the size of the box, Abandoned", "default": "false", "withConfig": true, "description": "", @@ -14851,7 +14851,7 @@ export const en_US: {[key: string]: AppProp} = { "toType": "number", "inputType": "InputSignalWithTransform", "signal": "input", - "label": "Open the resizable resize, offset screen left", + "label": "Open the resizable resize, offset screen left, Abandoned", "default": "0", "withConfig": false, "description": "", @@ -14869,7 +14869,7 @@ export const en_US: {[key: string]: AppProp} = { "toType": "number", "inputType": "InputSignalWithTransform", "signal": "input", - "label": "Open the resizable resize, offset screen top", + "label": "Open the resizable resize, offset screen top, Abandoned", "default": "0", "withConfig": false, "description": "", diff --git a/src/interfaces/zh_CN-docs.types.ts b/src/interfaces/zh_CN-docs.types.ts index 6999037c7..c1bb5cd8f 100644 --- a/src/interfaces/zh_CN-docs.types.ts +++ b/src/interfaces/zh_CN-docs.types.ts @@ -14833,7 +14833,7 @@ export const zh_CN: {[key: string]: AppProp} = { "toType": "boolean", "inputType": "InputSignalWithTransform", "signal": "input", - "label": "调整弹框的大小", + "label": "调整弹框的大小(弃用)", "default": "false", "withConfig": true, "description": "", @@ -14851,7 +14851,7 @@ export const zh_CN: {[key: string]: AppProp} = { "toType": "number", "inputType": "InputSignalWithTransform", "signal": "input", - "label": "开启 resizable 调整大小,偏移屏幕左边", + "label": "开启 resizable 调整大小,偏移屏幕左边(弃用)", "default": "0", "withConfig": false, "description": "", @@ -14869,7 +14869,7 @@ export const zh_CN: {[key: string]: AppProp} = { "toType": "number", "inputType": "InputSignalWithTransform", "signal": "input", - "label": "开启 resizable 调整大小,偏移屏幕顶部", + "label": "开启 resizable 调整大小,偏移屏幕顶部(弃用)", "default": "0", "withConfig": false, "description": "",