From 90baa214914f574d9f4dd3b2286f6f105ed6eb57 Mon Sep 17 00:00:00 2001 From: Sum1Dream <418471657@qq.com> Date: Mon, 5 Jun 2023 16:35:05 +0800 Subject: [PATCH] 1 --- README.md | 27 +++- angular.json | 117 ++++++++++++++++++ karma.conf.js | 44 +++++++ package.json | 39 ++++++ .../admin/login/index/index.component.html | 58 +++++++++ .../admin/login/index/index.component.scss | 83 +++++++++++++ src/app/admin/login/index/index.component.ts | 29 +++++ src/app/admin/login/login-routing.module.ts | 13 ++ src/app/admin/login/login.module.ts | 31 +++++ src/app/app-common.module.ts | 27 ++++ src/app/app-routing.module.ts | 16 +++ src/app/app.component.html | 1 + src/app/app.component.scss | 0 src/app/app.component.ts | 10 ++ src/app/app.module.ts | 32 +++++ src/app/services/common/validators.service.ts | 76 ++++++++++++ src/assets/.gitkeep | 0 src/assets/image/login/background_login.jpeg | Bin 0 -> 19342 bytes src/assets/image/login/logo.png | Bin 0 -> 24034 bytes src/environments/environment.prod.ts | 3 + src/environments/environment.ts | 16 +++ src/favicon.ico | Bin 0 -> 24034 bytes src/index.html | 13 ++ src/main.ts | 12 ++ src/polyfills.ts | 53 ++++++++ src/styles.scss | 2 + src/test.ts | 26 ++++ src/theme.less | 9 ++ tsconfig.app.json | 15 +++ tsconfig.json | 32 +++++ tsconfig.spec.json | 18 +++ 31 files changed, 801 insertions(+), 1 deletion(-) create mode 100644 angular.json create mode 100644 karma.conf.js create mode 100644 package.json create mode 100644 src/app/admin/login/index/index.component.html create mode 100644 src/app/admin/login/index/index.component.scss create mode 100644 src/app/admin/login/index/index.component.ts create mode 100644 src/app/admin/login/login-routing.module.ts create mode 100644 src/app/admin/login/login.module.ts create mode 100644 src/app/app-common.module.ts create mode 100644 src/app/app-routing.module.ts create mode 100644 src/app/app.component.html create mode 100644 src/app/app.component.scss create mode 100644 src/app/app.component.ts create mode 100644 src/app/app.module.ts create mode 100644 src/app/services/common/validators.service.ts create mode 100644 src/assets/.gitkeep create mode 100644 src/assets/image/login/background_login.jpeg create mode 100644 src/assets/image/login/logo.png create mode 100644 src/environments/environment.prod.ts create mode 100644 src/environments/environment.ts create mode 100644 src/favicon.ico create mode 100644 src/index.html create mode 100644 src/main.ts create mode 100644 src/polyfills.ts create mode 100644 src/styles.scss create mode 100644 src/test.ts create mode 100644 src/theme.less create mode 100644 tsconfig.app.json create mode 100644 tsconfig.json create mode 100644 tsconfig.spec.json diff --git a/README.md b/README.md index 5acf1f5..3b12177 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,27 @@ -# test-web +# hsgWeb +This project was generated with [Angular CLI](https://github.com/angular/angular-cli) version 14.1.0. + +## Development server + +Run `ng serve` for a dev server. Navigate to `http://localhost:4200/`. The application will automatically reload if you change any of the source files. + +## Code scaffolding + +Run `ng generate component component-name` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module`. + +## Build + +Run `ng build` to build the project. The build artifacts will be stored in the `dist/` directory. + +## Running unit tests + +Run `ng test` to execute the unit tests via [Karma](https://karma-runner.github.io). + +## Running end-to-end tests + +Run `ng e2e` to execute the end-to-end tests via a platform of your choice. To use this command, you need to first add a package that implements end-to-end testing capabilities. + +## Further help + +To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI Overview and Command Reference](https://angular.io/cli) page. diff --git a/angular.json b/angular.json new file mode 100644 index 0000000..60298ed --- /dev/null +++ b/angular.json @@ -0,0 +1,117 @@ +{ + "$schema": "./node_modules/@angular/cli/lib/config/schema.json", + "version": 1, + "newProjectRoot": "projects", + "projects": { + "hsg-web": { + "projectType": "application", + "schematics": { + "@schematics/angular:component": { + "style": "scss" + } + }, + "root": "", + "sourceRoot": "src", + "prefix": "app", + "architect": { + "build": { + "builder": "@angular-devkit/build-angular:browser", + "options": { + "outputPath": "dist/hsg-web", + "index": "src/index.html", + "main": "src/main.ts", + "polyfills": "src/polyfills.ts", + "tsConfig": "tsconfig.app.json", + "inlineStyleLanguage": "scss", + "assets": [ + "src/favicon.ico", + "src/assets", + { + "glob": "**/*", + "input": "./node_modules/@ant-design/icons-angular/src/inline-svg/", + "output": "/assets/" + } + ], + "styles": [ + "src/theme.less", + "node_modules/ng-zorro-antd/ng-zorro-antd.css", + "src/styles.scss" + ], + "scripts": [] + }, + "configurations": { + "production": { + "budgets": [ + { + "type": "initial", + "maximumWarning": "500kb", + "maximumError": "1mb" + }, + { + "type": "anyComponentStyle", + "maximumWarning": "2kb", + "maximumError": "4kb" + } + ], + "fileReplacements": [ + { + "replace": "src/environments/environment.ts", + "with": "src/environments/environment.prod.ts" + } + ], + "outputHashing": "all" + }, + "development": { + "buildOptimizer": false, + "optimization": false, + "vendorChunk": true, + "extractLicenses": false, + "sourceMap": true, + "namedChunks": true + } + }, + "defaultConfiguration": "production" + }, + "serve": { + "builder": "@angular-devkit/build-angular:dev-server", + "configurations": { + "production": { + "browserTarget": "hsg-web:build:production" + }, + "development": { + "browserTarget": "hsg-web:build:development" + } + }, + "defaultConfiguration": "development" + }, + "extract-i18n": { + "builder": "@angular-devkit/build-angular:extract-i18n", + "options": { + "browserTarget": "hsg-web:build" + } + }, + "test": { + "builder": "@angular-devkit/build-angular:karma", + "options": { + "main": "src/test.ts", + "polyfills": "src/polyfills.ts", + "tsConfig": "tsconfig.spec.json", + "karmaConfig": "karma.conf.js", + "inlineStyleLanguage": "scss", + "assets": [ + "src/favicon.ico", + "src/assets" + ], + "styles": [ + "src/styles.scss" + ], + "scripts": [] + } + } + } + } + }, + "cli": { + "analytics": false + } +} diff --git a/karma.conf.js b/karma.conf.js new file mode 100644 index 0000000..7c2b7a9 --- /dev/null +++ b/karma.conf.js @@ -0,0 +1,44 @@ +// Karma configuration file, see link for more information +// https://karma-runner.github.io/1.0/config/configuration-file.html + +module.exports = function (config) { + config.set({ + basePath: '', + frameworks: ['jasmine', '@angular-devkit/build-angular'], + plugins: [ + require('karma-jasmine'), + require('karma-chrome-launcher'), + require('karma-jasmine-html-reporter'), + require('karma-coverage'), + require('@angular-devkit/build-angular/plugins/karma') + ], + client: { + jasmine: { + // you can add configuration options for Jasmine here + // the possible options are listed at https://jasmine.github.io/api/edge/Configuration.html + // for example, you can disable the random execution with `random: false` + // or set a specific seed with `seed: 4321` + }, + clearContext: false // leave Jasmine Spec Runner output visible in browser + }, + jasmineHtmlReporter: { + suppressAll: true // removes the duplicated traces + }, + coverageReporter: { + dir: require('path').join(__dirname, './coverage/hsg-web'), + subdir: '.', + reporters: [ + { type: 'html' }, + { type: 'text-summary' } + ] + }, + reporters: ['progress', 'kjhtml'], + port: 9876, + colors: true, + logLevel: config.LOG_INFO, + autoWatch: true, + browsers: ['Chrome'], + singleRun: false, + restartOnFileChange: true + }); +}; diff --git a/package.json b/package.json new file mode 100644 index 0000000..e09c655 --- /dev/null +++ b/package.json @@ -0,0 +1,39 @@ +{ + "name": "hsg-web", + "version": "0.0.0", + "scripts": { + "ng": "ng", + "start": "ng serve", + "build": "ng build", + "watch": "ng build --watch --configuration development", + "test": "ng test" + }, + "private": true, + "dependencies": { + "@angular/animations": "^14.1.0", + "@angular/common": "^14.1.0", + "@angular/compiler": "^14.1.0", + "@angular/core": "^14.1.0", + "@angular/forms": "^14.1.0", + "@angular/platform-browser": "^14.1.0", + "@angular/platform-browser-dynamic": "^14.1.0", + "@angular/router": "^14.1.0", + "ng-zorro-antd": "^13.4.0", + "rxjs": "~7.5.0", + "tslib": "^2.3.0", + "zone.js": "~0.11.4" + }, + "devDependencies": { + "@angular-devkit/build-angular": "^14.1.0", + "@angular/cli": "~14.1.0", + "@angular/compiler-cli": "^14.1.0", + "@types/jasmine": "~4.0.0", + "jasmine-core": "~4.2.0", + "karma": "~6.4.0", + "karma-chrome-launcher": "~3.1.0", + "karma-coverage": "~2.2.0", + "karma-jasmine": "~5.1.0", + "karma-jasmine-html-reporter": "~2.0.0", + "typescript": "~4.7.2" + } +} diff --git a/src/app/admin/login/index/index.component.html b/src/app/admin/login/index/index.component.html new file mode 100644 index 0000000..8c97450 --- /dev/null +++ b/src/app/admin/login/index/index.component.html @@ -0,0 +1,58 @@ + + + +
+
+
+
+ 商家账号登陆 +
+
+ +
+ +
+
+
+ diff --git a/src/app/admin/login/index/index.component.scss b/src/app/admin/login/index/index.component.scss new file mode 100644 index 0000000..3f874da --- /dev/null +++ b/src/app/admin/login/index/index.component.scss @@ -0,0 +1,83 @@ +#banner { + background-color: #FFF; + position: fixed; + top: 0; + height: 44px; + line-height: 44px; + box-shadow: 0 2px 8px 0 rgb(174 186 208 / 27%); + z-index: 99999; + width: 100%; + .widthLimit { + margin: 0 30px; + padding: 0; + a { + float: left; + } + img { + height: 28px; + } + #bannerQuickLink { + float: right; + } + #bannerQuickLink:hover { + cursor: pointer; + color: rgb(74,128,64); + } + + } +} +.body { + background-image: url("../../../../assets/image/login/background_login.jpeg"); + background-size: cover; + height: 100%; + .login-div { + background: #fff; + border-radius: 4px; + float: right; + margin-right: 5%; + margin-top: 90px; + width: 464px; + .loginDivMask { + width: 376px; + margin: 30px 44px; + .title { + text-align: center; + font-family: Microsoft Yahei,STHeiti,Simsun,STSong,Helvetica Neue,Helvetica,Arial,sans-serif; + font-size: 1.3rem; + letter-spacing: 2px; + font-weight: 400; + } + .formGroup { + margin-top: 26px; + nz-form-item { + margin-top: 6px; + } + input { + height: 32px; + } + button { + margin-top: 8px; + height: 40px; + } + } + .interlink { + margin-top: 30px; + text-align: center; + a { + color: #6c757d ; + } + a:hover { + color: #007bff; + } + } + } + } +} +.footer-content { + position: fixed; + bottom: 0; + height: 68px; + line-height: 68px; + background-color: #F5F5F6; + width: 100%; +} diff --git a/src/app/admin/login/index/index.component.ts b/src/app/admin/login/index/index.component.ts new file mode 100644 index 0000000..f8b2778 --- /dev/null +++ b/src/app/admin/login/index/index.component.ts @@ -0,0 +1,29 @@ +import { Component, OnInit } from '@angular/core'; +import {FormBuilder, FormGroup, Validators} from "@angular/forms"; +import {ValidatorsService} from "../../../services/common/validators.service"; + +@Component({ + selector: 'app-index', + templateUrl: './index.component.html', + styleUrls: ['./index.component.scss'] +}) +export class IndexComponent implements OnInit { + + validateForm!: FormGroup; + passwordVisible = false; + password?: string; + + constructor(private fb: FormBuilder) { } + + ngOnInit(): void { + this.validateForm = this.fb.group({ + userName: [null, [Validators.required , ValidatorsService.minLength(6) , ValidatorsService.maxLength(20)]], + password: [null, [Validators.required]], + }); + } + + submitForm(): void { + console.log(this.validateForm.value); + } + +} diff --git a/src/app/admin/login/login-routing.module.ts b/src/app/admin/login/login-routing.module.ts new file mode 100644 index 0000000..b5d5e56 --- /dev/null +++ b/src/app/admin/login/login-routing.module.ts @@ -0,0 +1,13 @@ +import { NgModule } from '@angular/core'; +import { RouterModule, Routes } from '@angular/router'; +import {IndexComponent} from "./index/index.component"; + +const routes: Routes = [ + { path: '', component: IndexComponent} +]; + +@NgModule({ + imports: [RouterModule.forChild(routes)], + exports: [RouterModule] +}) +export class LoginRoutingModule { } diff --git a/src/app/admin/login/login.module.ts b/src/app/admin/login/login.module.ts new file mode 100644 index 0000000..c410d7d --- /dev/null +++ b/src/app/admin/login/login.module.ts @@ -0,0 +1,31 @@ +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; + +import { LoginRoutingModule } from './login-routing.module'; +import { IndexComponent } from './index/index.component'; +import {NzButtonModule} from "ng-zorro-antd/button"; +import {NzFormModule} from "ng-zorro-antd/form"; +import {NzCheckboxModule} from "ng-zorro-antd/checkbox"; +import {NzInputModule} from "ng-zorro-antd/input"; +import {ReactiveFormsModule} from "@angular/forms"; +import {NzIconModule} from "ng-zorro-antd/icon"; +import {NzDividerModule} from "ng-zorro-antd/divider"; + + +@NgModule({ + declarations: [ + IndexComponent + ], + imports: [ + CommonModule, + NzFormModule, + NzCheckboxModule, + NzButtonModule, + ReactiveFormsModule, + NzIconModule, + NzDividerModule, + NzInputModule, + LoginRoutingModule + ] +}) +export class LoginModule { } diff --git a/src/app/app-common.module.ts b/src/app/app-common.module.ts new file mode 100644 index 0000000..e7f1077 --- /dev/null +++ b/src/app/app-common.module.ts @@ -0,0 +1,27 @@ +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; + +const PIPES: never[] = [ +]; + +@NgModule({ + + imports: [ + CommonModule + ], + declarations: [ + ...PIPES, + ], + + exports: [ + ...PIPES, + ], +}) +export class AppCommonModule { + static forRoot() { + return { + ngModule: AppCommonModule, + providers: [], + }; + } +} diff --git a/src/app/app-routing.module.ts b/src/app/app-routing.module.ts new file mode 100644 index 0000000..0a6017b --- /dev/null +++ b/src/app/app-routing.module.ts @@ -0,0 +1,16 @@ +import { NgModule } from '@angular/core'; +import { RouterModule, Routes } from '@angular/router'; + +const routes: Routes = [ + {path: '', pathMatch: 'full', redirectTo: 'login'}, + { + path: 'login', + loadChildren: () => import('./admin/login/login.module').then(m => m.LoginModule) + }, +]; + +@NgModule({ + imports: [RouterModule.forRoot(routes)], + exports: [RouterModule] +}) +export class AppRoutingModule { } diff --git a/src/app/app.component.html b/src/app/app.component.html new file mode 100644 index 0000000..0680b43 --- /dev/null +++ b/src/app/app.component.html @@ -0,0 +1 @@ + diff --git a/src/app/app.component.scss b/src/app/app.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/app/app.component.ts b/src/app/app.component.ts new file mode 100644 index 0000000..14b853c --- /dev/null +++ b/src/app/app.component.ts @@ -0,0 +1,10 @@ +import { Component } from '@angular/core'; + +@Component({ + selector: 'app-root', + templateUrl: './app.component.html', + styleUrls: ['./app.component.scss'] +}) +export class AppComponent { + title = 'hsg-web'; +} diff --git a/src/app/app.module.ts b/src/app/app.module.ts new file mode 100644 index 0000000..96db58d --- /dev/null +++ b/src/app/app.module.ts @@ -0,0 +1,32 @@ +import { NgModule } from '@angular/core'; +import { BrowserModule } from '@angular/platform-browser'; + +import { AppRoutingModule } from './app-routing.module'; +import { AppComponent } from './app.component'; +import { NZ_I18N } from 'ng-zorro-antd/i18n'; +import { zh_CN } from 'ng-zorro-antd/i18n'; +import { registerLocaleData } from '@angular/common'; +import zh from '@angular/common/locales/zh'; +import { FormsModule } from '@angular/forms'; +import { HttpClientModule } from '@angular/common/http'; +import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; +import {AppCommonModule} from "./app-common.module"; + +registerLocaleData(zh); + +@NgModule({ + declarations: [ + AppComponent + ], + imports: [ + BrowserModule, + AppRoutingModule, + FormsModule, + HttpClientModule, + BrowserAnimationsModule, + AppCommonModule, + ], + providers: [{ provide: NZ_I18N, useValue: zh_CN }], + bootstrap: [AppComponent] +}) +export class AppModule { } diff --git a/src/app/services/common/validators.service.ts b/src/app/services/common/validators.service.ts new file mode 100644 index 0000000..90c0c1d --- /dev/null +++ b/src/app/services/common/validators.service.ts @@ -0,0 +1,76 @@ +import {AbstractControl, ValidatorFn, Validators} from '@angular/forms'; +import {NzSafeAny} from "ng-zorro-antd/core/types"; + +export type validatorsErrorsOptions = { 'zh-cn': string; en: string } & Record; +export type validatorsErrors = Record; + +export class ValidatorsService extends Validators { + + /** + * 验证字符最小长度 + * @param min + * @param max + */ + static pwdLength(min: number, max: number): ValidatorFn { + return (control: AbstractControl): validatorsErrors | null => { + if (Validators.minLength(min)(control) === null && Validators.maxLength(max)(control) === null) { + return null; + } + return { minlength: { 'zh-cn': `请输入${min}-${max}位密码`, en: ''} }; + }; + } + + /** + * 验证字符最小长度 + * @param minLength + */ + static override minLength(minLength: number): ValidatorFn { + return (control: AbstractControl): validatorsErrors | null => { + if (Validators.minLength(minLength)(control) === null) { + return null; + } + return { minlength: { 'zh-cn': `字符最小长度为 ${minLength}`, en: `MinLength is ${minLength}` } }; + }; + } + + /** + * 验证字符最大长度 + * @param maxLength + */ + static override maxLength(maxLength: number): ValidatorFn { + return (control: AbstractControl): validatorsErrors | null => { + if (Validators.maxLength(maxLength)(control) === null) { + return null; + } + return { maxlength: { 'zh-cn': `字符最大长度为 ${maxLength}`, en: `MaxLength is ${maxLength}` } }; + }; + } + + /** + * 验证手机号 + * @param control + */ + static mobile(control: AbstractControl): validatorsErrors | null { + const value = control.value; + + if (isEmptyInputValue(value)) { + return null; + } + + return isMobile(value) ? null : { mobile: { 'zh-cn': `手机号码格式不正确`, en: `Mobile phone number is not valid` } }; + } + + static isMobile(value: string): boolean { + return /^[1](([3][0-9])|([4][0,1,4-9])|([5][0-3,5-9])|([6][2,5,6,7])|([7][0-8])|([8][0-9])|([9][0-3,5-9]))[0-9]{8}$/.test(value); + } + +} + + +function isEmptyInputValue(value: NzSafeAny): boolean { + return value == null || value.length === 0; +} + +function isMobile(value: string): boolean { + return /^[1](([3][0-9])|([4][0,1,4-9])|([5][0-3,5-9])|([6][2,5,6,7])|([7][0-8])|([8][0-9])|([9][0-3,5-9]))[0-9]{8}$/.test(value); +} diff --git a/src/assets/.gitkeep b/src/assets/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/src/assets/image/login/background_login.jpeg b/src/assets/image/login/background_login.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..e75b94b2426a4032346a259c29fa63e85ce993cb GIT binary patch literal 19342 zcmcIs2|SeB`#&>AgzOPXLkJ;~M5(cLEiIEMLYEYkov75UX;Go1tXXQ3BwMnk)D>Bh zCCU=oLrAxc_WD2Pok3K$d;h=gb3b?9^PcydXMeuuoOecFTE5&zf@TX$7a$S|ArkzD zzO*4j#LLA!mYa)r?AWn0>4&UOqlSe!wGW$buY#Fz5Ym3rRFQSM*3%XjF|> zsAihW${K`ta32yyClDPjS@MWMbl?x>P;0QkJ=kDfBe)Tn)nXt-MTqrSP^y{ENpyRM z#xGi*>E~1ap=oQAPi=qmymZ7;g3J)5f@E?Og^878k?3G!==!y_&?&qVAsX=zCQ%0E zkvU>}2wge5wCBEl)|KI+vhhsji}>aled#_~je$s!m_jG-!Lluig&8a!&`V~($4H`% zxFyr6Y^$)L48lri(0uJ_SX&O2jpoTO%KfUFE_79OX=T*pC}pPCA6sD_#&Q4;qBB4` zk2RS->^kuCXkv`$Fr(mv#6&{~ET!Tm;^ucvA@t2&<(vb)oa1bBZ~1!fh=x1XHCyaG z0?bBv7Fn`=1#^FD=V;He@x6VDoU?vSB$ zn1@|7l7_v2`~SW=$M|kD�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 literal 0 HcmV?d00001 diff --git a/src/assets/image/login/logo.png b/src/assets/image/login/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..874b541ae0bc2627e907c3aab59e1e7945166f1f GIT binary patch literal 24034 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 z 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 Z{~z`$_-{k3+0Xz0002ovPDHLkV1jB3pLPHM literal 0 HcmV?d00001 diff --git a/src/environments/environment.prod.ts b/src/environments/environment.prod.ts new file mode 100644 index 0000000..3612073 --- /dev/null +++ b/src/environments/environment.prod.ts @@ -0,0 +1,3 @@ +export const environment = { + production: true +}; diff --git a/src/environments/environment.ts b/src/environments/environment.ts new file mode 100644 index 0000000..f56ff47 --- /dev/null +++ b/src/environments/environment.ts @@ -0,0 +1,16 @@ +// 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/src/favicon.ico b/src/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..874b541ae0bc2627e907c3aab59e1e7945166f1f GIT binary patch literal 24034 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 z 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 Z{~z`$_-{k3+0Xz0002ovPDHLkV1jB3pLPHM literal 0 HcmV?d00001 diff --git a/src/index.html b/src/index.html new file mode 100644 index 0000000..3ae8249 --- /dev/null +++ b/src/index.html @@ -0,0 +1,13 @@ + + + + + hsgWeb + + + + + + + + diff --git a/src/main.ts b/src/main.ts new file mode 100644 index 0000000..c7b673c --- /dev/null +++ b/src/main.ts @@ -0,0 +1,12 @@ +import { enableProdMode } from '@angular/core'; +import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; + +import { AppModule } from './app/app.module'; +import { environment } from './environments/environment'; + +if (environment.production) { + enableProdMode(); +} + +platformBrowserDynamic().bootstrapModule(AppModule) + .catch(err => console.error(err)); diff --git a/src/polyfills.ts b/src/polyfills.ts new file mode 100644 index 0000000..d20e06b --- /dev/null +++ b/src/polyfills.ts @@ -0,0 +1,53 @@ +/** + * 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 "everhsg" browsers; the last versions of browsers that + * automatically update themselves. This includes recent versions of Safari, Chrome (including + * Opera), Edge on the desktop, and iOS and Chrome on mobile. + * + * Learn more in https://angular.io/guide/browser-support + */ + +/*************************************************************************************************** + * BROWSER POLYFILLS + */ + +/** + * 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/src/styles.scss b/src/styles.scss new file mode 100644 index 0000000..cc1d7c3 --- /dev/null +++ b/src/styles.scss @@ -0,0 +1,2 @@ +/* You can add global styles to this file, and also import other style files */ +@import "~ng-zorro-antd/ng-zorro-antd.aliyun.css"; diff --git a/src/test.ts b/src/test.ts new file mode 100644 index 0000000..c04c876 --- /dev/null +++ b/src/test.ts @@ -0,0 +1,26 @@ +// 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): { + (id: string): T; + keys(): string[]; + }; +}; + +// 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().forEach(context); diff --git a/src/theme.less b/src/theme.less new file mode 100644 index 0000000..ecf2541 --- /dev/null +++ b/src/theme.less @@ -0,0 +1,9 @@ + +// Custom Theming for NG-ZORRO +// For more information: https://ng.ant.design/docs/customize-theme/en +@import "../node_modules/ng-zorro-antd/ng-zorro-antd.less"; + +// Override less variables to here +// View all variables: https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/components/style/themes/default.less + +// @primary-color: #1890ff; diff --git a/tsconfig.app.json b/tsconfig.app.json new file mode 100644 index 0000000..82d91dc --- /dev/null +++ b/tsconfig.app.json @@ -0,0 +1,15 @@ +/* To learn more about this file see: https://angular.io/config/tsconfig. */ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "./out-tsc/app", + "types": [] + }, + "files": [ + "src/main.ts", + "src/polyfills.ts" + ], + "include": [ + "src/**/*.d.ts" + ] +} diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..ff06eae --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,32 @@ +/* To learn more about this file see: https://angular.io/config/tsconfig. */ +{ + "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, + "experimentalDecorators": true, + "moduleResolution": "node", + "importHelpers": true, + "target": "es2020", + "module": "es2020", + "lib": [ + "es2020", + "dom" + ] + }, + "angularCompilerOptions": { + "enableI18nLegacyMessageIdFormat": false, + "strictInjectionParameters": true, + "strictInputAccessModifiers": true, + "strictTemplates": true + } +} diff --git a/tsconfig.spec.json b/tsconfig.spec.json new file mode 100644 index 0000000..092345b --- /dev/null +++ b/tsconfig.spec.json @@ -0,0 +1,18 @@ +/* To learn more about this file see: https://angular.io/config/tsconfig. */ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "./out-tsc/spec", + "types": [ + "jasmine" + ] + }, + "files": [ + "src/test.ts", + "src/polyfills.ts" + ], + "include": [ + "src/**/*.spec.ts", + "src/**/*.d.ts" + ] +}