From 06ca2f3a491a66577da8a97d213727ffaa832c6d Mon Sep 17 00:00:00 2001 From: Ryan Trickett Date: Thu, 18 May 2023 10:34:00 +0200 Subject: [PATCH 01/55] =?UTF-8?q?=F0=9F=9A=A7=20(app)=20Profile=20Page=20S?= =?UTF-8?q?etup?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- libs/app/profile/feature/.eslintrc.json | 36 +++++++++++++++++++ libs/app/profile/feature/README.md | 7 ++++ libs/app/profile/feature/jest.config.ts | 22 ++++++++++++ libs/app/profile/feature/project.json | 34 ++++++++++++++++++ libs/app/profile/feature/src/index.ts | 1 + .../app/profile/feature/src/profile.module.ts | 15 ++++++++ .../app/profile/feature/src/profile.page.html | 12 +++++++ .../app/profile/feature/src/profile.page.scss | 0 .../profile/feature/src/profile.page.spec.ts | 23 ++++++++++++ libs/app/profile/feature/src/profile.page.ts | 8 +++++ .../profile/feature/src/profile.routing.ts | 17 +++++++++ libs/app/profile/feature/src/test-setup.ts | 1 + libs/app/profile/feature/tsconfig.json | 29 +++++++++++++++ libs/app/profile/feature/tsconfig.lib.json | 17 +++++++++ libs/app/profile/feature/tsconfig.spec.json | 16 +++++++++ nx.json | 34 +++++++++--------- package-lock.json | 4 ++- package.json | 4 ++- tsconfig.base.json | 6 +++- 19 files changed, 266 insertions(+), 20 deletions(-) create mode 100644 libs/app/profile/feature/.eslintrc.json create mode 100644 libs/app/profile/feature/README.md create mode 100644 libs/app/profile/feature/jest.config.ts create mode 100644 libs/app/profile/feature/project.json create mode 100644 libs/app/profile/feature/src/index.ts create mode 100644 libs/app/profile/feature/src/profile.module.ts create mode 100644 libs/app/profile/feature/src/profile.page.html create mode 100644 libs/app/profile/feature/src/profile.page.scss create mode 100644 libs/app/profile/feature/src/profile.page.spec.ts create mode 100644 libs/app/profile/feature/src/profile.page.ts create mode 100644 libs/app/profile/feature/src/profile.routing.ts create mode 100644 libs/app/profile/feature/src/test-setup.ts create mode 100644 libs/app/profile/feature/tsconfig.json create mode 100644 libs/app/profile/feature/tsconfig.lib.json create mode 100644 libs/app/profile/feature/tsconfig.spec.json diff --git a/libs/app/profile/feature/.eslintrc.json b/libs/app/profile/feature/.eslintrc.json new file mode 100644 index 00000000..6bac7be5 --- /dev/null +++ b/libs/app/profile/feature/.eslintrc.json @@ -0,0 +1,36 @@ +{ + "extends": ["../../../../.eslintrc.json"], + "ignorePatterns": ["!**/*"], + "overrides": [ + { + "files": ["*.ts"], + "rules": { + "@angular-eslint/directive-selector": [ + "error", + { + "type": "attribute", + "prefix": "fridgeToPlate", + "style": "camelCase" + } + ], + "@angular-eslint/component-selector": [ + "error", + { + "type": "element", + "prefix": "fridge-to-plate", + "style": "kebab-case" + } + ] + }, + "extends": [ + "plugin:@nx/angular", + "plugin:@angular-eslint/template/process-inline-templates" + ] + }, + { + "files": ["*.html"], + "extends": ["plugin:@nx/angular-template"], + "rules": {} + } + ] +} diff --git a/libs/app/profile/feature/README.md b/libs/app/profile/feature/README.md new file mode 100644 index 00000000..be3db723 --- /dev/null +++ b/libs/app/profile/feature/README.md @@ -0,0 +1,7 @@ +# app-profile-feature + +This library was generated with [Nx](https://nx.dev). + +## Running unit tests + +Run `nx test app-profile-feature` to execute the unit tests. diff --git a/libs/app/profile/feature/jest.config.ts b/libs/app/profile/feature/jest.config.ts new file mode 100644 index 00000000..53df37ab --- /dev/null +++ b/libs/app/profile/feature/jest.config.ts @@ -0,0 +1,22 @@ +/* eslint-disable */ +export default { + displayName: 'app-profile-feature', + preset: '../../../../jest.preset.js', + setupFilesAfterEnv: ['/src/test-setup.ts'], + coverageDirectory: '../../../../coverage/libs/app/profile/feature', + transform: { + '^.+\\.(ts|mjs|js|html)$': [ + 'jest-preset-angular', + { + tsconfig: '/tsconfig.spec.json', + stringifyContentPathRegex: '\\.(html|svg)$', + }, + ], + }, + transformIgnorePatterns: ['node_modules/(?!.*\\.mjs$)'], + snapshotSerializers: [ + 'jest-preset-angular/build/serializers/no-ng-attributes', + 'jest-preset-angular/build/serializers/ng-snapshot', + 'jest-preset-angular/build/serializers/html-comment', + ], +}; diff --git a/libs/app/profile/feature/project.json b/libs/app/profile/feature/project.json new file mode 100644 index 00000000..ec28fde7 --- /dev/null +++ b/libs/app/profile/feature/project.json @@ -0,0 +1,34 @@ +{ + "name": "app-profile-feature", + "$schema": "../../../../node_modules/nx/schemas/project-schema.json", + "sourceRoot": "libs/app/profile/feature/src", + "prefix": "fridge-to-plate", + "tags": [], + "projectType": "library", + "targets": { + "test": { + "executor": "@nx/jest:jest", + "outputs": ["{workspaceRoot}/coverage/{projectRoot}"], + "options": { + "jestConfig": "libs/app/profile/feature/jest.config.ts", + "passWithNoTests": true + }, + "configurations": { + "ci": { + "ci": true, + "codeCoverage": true + } + } + }, + "lint": { + "executor": "@nx/linter:eslint", + "outputs": ["{options.outputFile}"], + "options": { + "lintFilePatterns": [ + "libs/app/profile/feature/**/*.ts", + "libs/app/profile/feature/**/*.html" + ] + } + } + } +} diff --git a/libs/app/profile/feature/src/index.ts b/libs/app/profile/feature/src/index.ts new file mode 100644 index 00000000..3dd9438c --- /dev/null +++ b/libs/app/profile/feature/src/index.ts @@ -0,0 +1 @@ +export * from './profile.module'; diff --git a/libs/app/profile/feature/src/profile.module.ts b/libs/app/profile/feature/src/profile.module.ts new file mode 100644 index 00000000..2b3b2a40 --- /dev/null +++ b/libs/app/profile/feature/src/profile.module.ts @@ -0,0 +1,15 @@ +import { NgModule } from '@angular/core'; +import { IonicModule } from '@ionic/angular'; +import { CommonModule } from '@angular/common'; +import { ProfilePage } from './profile.page'; +import { ProfileRouting } from './profile.routing'; + +@NgModule({ + imports: [ + CommonModule, + ProfileRouting, + IonicModule, + ], + declarations: [ProfilePage], +}) +export class ProfileModule {} diff --git a/libs/app/profile/feature/src/profile.page.html b/libs/app/profile/feature/src/profile.page.html new file mode 100644 index 00000000..d20948f5 --- /dev/null +++ b/libs/app/profile/feature/src/profile.page.html @@ -0,0 +1,12 @@ + + + Profile Avatar + + +
+

Profile Name

+

Email Address

+
+ + +
\ No newline at end of file diff --git a/libs/app/profile/feature/src/profile.page.scss b/libs/app/profile/feature/src/profile.page.scss new file mode 100644 index 00000000..e69de29b diff --git a/libs/app/profile/feature/src/profile.page.spec.ts b/libs/app/profile/feature/src/profile.page.spec.ts new file mode 100644 index 00000000..c5ee58ce --- /dev/null +++ b/libs/app/profile/feature/src/profile.page.spec.ts @@ -0,0 +1,23 @@ +// import { TestBed } from "@angular/core/testing"; + +// describe("AppComponent", () => { +// beforeEach(async () => { +// await TestBed.configureTestingModule({ +// imports: [], +// declarations: [AppComponent, NxWelcomeComponent], +// }).compileComponents(); +// }); + +// it("should render title", () => { +// const fixture = TestBed.createComponent(AppComponent); +// fixture.detectChanges(); +// const compiled = fixture.nativeElement as HTMLElement; +// expect(compiled.querySelector("h1")?.textContent).toContain("Spice Girls"); +// }); + +// it(`should have as title 'FridgeToPlate'`, () => { +// const fixture = TestBed.createComponent(AppComponent); +// const app = fixture.componentInstance; +// expect(app.title).toEqual("FridgeToPlate"); +// }); +// }); diff --git a/libs/app/profile/feature/src/profile.page.ts b/libs/app/profile/feature/src/profile.page.ts new file mode 100644 index 00000000..ac70c257 --- /dev/null +++ b/libs/app/profile/feature/src/profile.page.ts @@ -0,0 +1,8 @@ +import { Component } from "@angular/core"; + +@Component({ + selector: "profile-page", + templateUrl: "./profile.page.html", + styleUrls: ["./profile.page.scss"], +}) +export class ProfilePage {} diff --git a/libs/app/profile/feature/src/profile.routing.ts b/libs/app/profile/feature/src/profile.routing.ts new file mode 100644 index 00000000..9939009a --- /dev/null +++ b/libs/app/profile/feature/src/profile.routing.ts @@ -0,0 +1,17 @@ +import { NgModule } from '@angular/core'; +import { RouterModule, Routes } from '@angular/router'; +import { ProfilePage } from './profile.page'; + +const routes: Routes = [ + { + path: '', + pathMatch: 'full', + component: ProfilePage, + }, +]; + +@NgModule({ + imports: [RouterModule.forChild(routes)], + exports: [RouterModule], +}) +export class ProfileRouting {} \ No newline at end of file diff --git a/libs/app/profile/feature/src/test-setup.ts b/libs/app/profile/feature/src/test-setup.ts new file mode 100644 index 00000000..1100b3e8 --- /dev/null +++ b/libs/app/profile/feature/src/test-setup.ts @@ -0,0 +1 @@ +import 'jest-preset-angular/setup-jest'; diff --git a/libs/app/profile/feature/tsconfig.json b/libs/app/profile/feature/tsconfig.json new file mode 100644 index 00000000..b9e5be08 --- /dev/null +++ b/libs/app/profile/feature/tsconfig.json @@ -0,0 +1,29 @@ +{ + "compilerOptions": { + "target": "es2022", + "useDefineForClassFields": false, + "forceConsistentCasingInFileNames": true, + "strict": true, + "noImplicitOverride": true, + "noPropertyAccessFromIndexSignature": true, + "noImplicitReturns": true, + "noFallthroughCasesInSwitch": true + }, + "files": [], + "include": [], + "references": [ + { + "path": "./tsconfig.lib.json" + }, + { + "path": "./tsconfig.spec.json" + } + ], + "extends": "../../../../tsconfig.base.json", + "angularCompilerOptions": { + "enableI18nLegacyMessageIdFormat": false, + "strictInjectionParameters": true, + "strictInputAccessModifiers": true, + "strictTemplates": true + } +} diff --git a/libs/app/profile/feature/tsconfig.lib.json b/libs/app/profile/feature/tsconfig.lib.json new file mode 100644 index 00000000..91273870 --- /dev/null +++ b/libs/app/profile/feature/tsconfig.lib.json @@ -0,0 +1,17 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "../../../../dist/out-tsc", + "declaration": true, + "declarationMap": true, + "inlineSources": true, + "types": [] + }, + "exclude": [ + "src/**/*.spec.ts", + "src/test-setup.ts", + "jest.config.ts", + "src/**/*.test.ts" + ], + "include": ["src/**/*.ts"] +} diff --git a/libs/app/profile/feature/tsconfig.spec.json b/libs/app/profile/feature/tsconfig.spec.json new file mode 100644 index 00000000..4af803b1 --- /dev/null +++ b/libs/app/profile/feature/tsconfig.spec.json @@ -0,0 +1,16 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "../../../../dist/out-tsc", + "module": "commonjs", + "target": "es2016", + "types": ["jest", "node"] + }, + "files": ["src/test-setup.ts"], + "include": [ + "jest.config.ts", + "src/**/*.test.ts", + "src/**/*.spec.ts", + "src/**/*.d.ts" +, "src/profile.pagespec.ts" ] +} diff --git a/nx.json b/nx.json index 7f2004e1..35805cb4 100644 --- a/nx.json +++ b/nx.json @@ -8,12 +8,7 @@ "default": { "runner": "@nrwl/nx-cloud", "options": { - "cacheableOperations": [ - "build", - "lint", - "test", - "e2e" - ], + "cacheableOperations": ["build", "lint", "test", "e2e"], "accessToken": "MjUwN2Y4YzctZDY3YS00NTIzLWJkZjctYmExMzJjNjA2MGVhfHJlYWQtd3JpdGU=", "url": "http://staging.nx.app" } @@ -21,16 +16,10 @@ }, "targetDefaults": { "build": { - "dependsOn": [ - "^build" - ] + "dependsOn": ["^build"] }, "test": { - "inputs": [ - "default", - "^default", - "{workspaceRoot}/jest.preset.js" - ] + "inputs": ["default", "^default", "{workspaceRoot}/jest.preset.js"] }, "lint": { "inputs": [ @@ -53,9 +42,20 @@ }, "@nrwl/angular:component": { "style": "scss" + }, + "@nx/angular:application": { + "style": "css", + "linter": "eslint", + "unitTestRunner": "jest", + "e2eTestRunner": "none" + }, + "@nx/angular:library": { + "linter": "eslint", + "unitTestRunner": "jest" + }, + "@nx/angular:component": { + "style": "css" } }, - "plugins": [ - "@nxrocks/nx-spring-boot" - ] + "plugins": ["@nxrocks/nx-spring-boot"] } diff --git a/package-lock.json b/package-lock.json index 1df09836..3a3e3c14 100644 --- a/package-lock.json +++ b/package-lock.json @@ -40,6 +40,8 @@ "@nrwl/nx-cloud": "^16.0.5", "@nrwl/web": "15.9.3", "@nrwl/workspace": "15.9.2", + "@nx/jest": "16.0.3", + "@nx/js": "16.0.3", "@nxrocks/nx-spring-boot": "^7.0.0", "@schematics/angular": "~15.2.0", "@types/jest": "^29.4.0", @@ -58,7 +60,7 @@ "postcss": "^8.4.5", "prettier": "^2.6.2", "tailwindcss": "^3.0.2", - "ts-jest": "^29.0.5", + "ts-jest": "^29.1.0", "ts-node": "10.9.1", "typescript": "~4.9.5" } diff --git a/package.json b/package.json index 50d8de14..7f1deb47 100644 --- a/package.json +++ b/package.json @@ -34,6 +34,8 @@ "@nrwl/nx-cloud": "^16.0.5", "@nrwl/web": "15.9.3", "@nrwl/workspace": "15.9.2", + "@nx/jest": "16.0.3", + "@nx/js": "16.0.3", "@nxrocks/nx-spring-boot": "^7.0.0", "@schematics/angular": "~15.2.0", "@types/jest": "^29.4.0", @@ -52,7 +54,7 @@ "postcss": "^8.4.5", "prettier": "^2.6.2", "tailwindcss": "^3.0.2", - "ts-jest": "^29.0.5", + "ts-jest": "^29.1.0", "ts-node": "10.9.1", "typescript": "~4.9.5" }, diff --git a/tsconfig.base.json b/tsconfig.base.json index 11253ac5..1d4c14c6 100644 --- a/tsconfig.base.json +++ b/tsconfig.base.json @@ -14,7 +14,11 @@ "skipLibCheck": true, "skipDefaultLibCheck": true, "baseUrl": ".", - "paths": {} + "paths": { + "@fridge-to-plate/app/profile/feature": [ + "libs/app/profile/feature/src/index.ts" + ] + } }, "exclude": ["node_modules", "tmp"] } From ea471116a11ccdd8b397599da1136f68a1e0ec3f Mon Sep 17 00:00:00 2001 From: Azola Date: Fri, 19 May 2023 00:26:15 +0200 Subject: [PATCH 02/55] =?UTF-8?q?=F0=9F=9A=A7=20(App)=20Added=20Login=20Se?= =?UTF-8?q?tup?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- libs/app/login/feature/.eslintrc.json | 36 ++ libs/app/login/feature/README.md | 7 + libs/app/login/feature/jest.config.ts | 22 + libs/app/login/feature/project.json | 34 ++ libs/app/login/feature/src/index.ts | 1 + libs/app/login/feature/src/login.module.ts | 15 + libs/app/login/feature/src/login.page.html | 12 + libs/app/login/feature/src/login.page.scss | 0 libs/app/login/feature/src/login.page.spec.ts | 23 + libs/app/login/feature/src/login.page.ts | 8 + libs/app/login/feature/src/login.routing.ts | 17 + libs/app/login/feature/src/test-setup.ts | 1 + libs/app/login/feature/tsconfig.json | 29 ++ libs/app/login/feature/tsconfig.lib.json | 17 + libs/app/login/feature/tsconfig.spec.json | 16 + package-lock.json | 459 ++++++------------ 16 files changed, 399 insertions(+), 298 deletions(-) create mode 100644 libs/app/login/feature/.eslintrc.json create mode 100644 libs/app/login/feature/README.md create mode 100644 libs/app/login/feature/jest.config.ts create mode 100644 libs/app/login/feature/project.json create mode 100644 libs/app/login/feature/src/index.ts create mode 100644 libs/app/login/feature/src/login.module.ts create mode 100644 libs/app/login/feature/src/login.page.html create mode 100644 libs/app/login/feature/src/login.page.scss create mode 100644 libs/app/login/feature/src/login.page.spec.ts create mode 100644 libs/app/login/feature/src/login.page.ts create mode 100644 libs/app/login/feature/src/login.routing.ts create mode 100644 libs/app/login/feature/src/test-setup.ts create mode 100644 libs/app/login/feature/tsconfig.json create mode 100644 libs/app/login/feature/tsconfig.lib.json create mode 100644 libs/app/login/feature/tsconfig.spec.json diff --git a/libs/app/login/feature/.eslintrc.json b/libs/app/login/feature/.eslintrc.json new file mode 100644 index 00000000..6bac7be5 --- /dev/null +++ b/libs/app/login/feature/.eslintrc.json @@ -0,0 +1,36 @@ +{ + "extends": ["../../../../.eslintrc.json"], + "ignorePatterns": ["!**/*"], + "overrides": [ + { + "files": ["*.ts"], + "rules": { + "@angular-eslint/directive-selector": [ + "error", + { + "type": "attribute", + "prefix": "fridgeToPlate", + "style": "camelCase" + } + ], + "@angular-eslint/component-selector": [ + "error", + { + "type": "element", + "prefix": "fridge-to-plate", + "style": "kebab-case" + } + ] + }, + "extends": [ + "plugin:@nx/angular", + "plugin:@angular-eslint/template/process-inline-templates" + ] + }, + { + "files": ["*.html"], + "extends": ["plugin:@nx/angular-template"], + "rules": {} + } + ] +} diff --git a/libs/app/login/feature/README.md b/libs/app/login/feature/README.md new file mode 100644 index 00000000..be3db723 --- /dev/null +++ b/libs/app/login/feature/README.md @@ -0,0 +1,7 @@ +# app-profile-feature + +This library was generated with [Nx](https://nx.dev). + +## Running unit tests + +Run `nx test app-profile-feature` to execute the unit tests. diff --git a/libs/app/login/feature/jest.config.ts b/libs/app/login/feature/jest.config.ts new file mode 100644 index 00000000..53df37ab --- /dev/null +++ b/libs/app/login/feature/jest.config.ts @@ -0,0 +1,22 @@ +/* eslint-disable */ +export default { + displayName: 'app-profile-feature', + preset: '../../../../jest.preset.js', + setupFilesAfterEnv: ['/src/test-setup.ts'], + coverageDirectory: '../../../../coverage/libs/app/profile/feature', + transform: { + '^.+\\.(ts|mjs|js|html)$': [ + 'jest-preset-angular', + { + tsconfig: '/tsconfig.spec.json', + stringifyContentPathRegex: '\\.(html|svg)$', + }, + ], + }, + transformIgnorePatterns: ['node_modules/(?!.*\\.mjs$)'], + snapshotSerializers: [ + 'jest-preset-angular/build/serializers/no-ng-attributes', + 'jest-preset-angular/build/serializers/ng-snapshot', + 'jest-preset-angular/build/serializers/html-comment', + ], +}; diff --git a/libs/app/login/feature/project.json b/libs/app/login/feature/project.json new file mode 100644 index 00000000..ec28fde7 --- /dev/null +++ b/libs/app/login/feature/project.json @@ -0,0 +1,34 @@ +{ + "name": "app-profile-feature", + "$schema": "../../../../node_modules/nx/schemas/project-schema.json", + "sourceRoot": "libs/app/profile/feature/src", + "prefix": "fridge-to-plate", + "tags": [], + "projectType": "library", + "targets": { + "test": { + "executor": "@nx/jest:jest", + "outputs": ["{workspaceRoot}/coverage/{projectRoot}"], + "options": { + "jestConfig": "libs/app/profile/feature/jest.config.ts", + "passWithNoTests": true + }, + "configurations": { + "ci": { + "ci": true, + "codeCoverage": true + } + } + }, + "lint": { + "executor": "@nx/linter:eslint", + "outputs": ["{options.outputFile}"], + "options": { + "lintFilePatterns": [ + "libs/app/profile/feature/**/*.ts", + "libs/app/profile/feature/**/*.html" + ] + } + } + } +} diff --git a/libs/app/login/feature/src/index.ts b/libs/app/login/feature/src/index.ts new file mode 100644 index 00000000..75a9dac4 --- /dev/null +++ b/libs/app/login/feature/src/index.ts @@ -0,0 +1 @@ +export * from './login.module'; diff --git a/libs/app/login/feature/src/login.module.ts b/libs/app/login/feature/src/login.module.ts new file mode 100644 index 00000000..e64501ba --- /dev/null +++ b/libs/app/login/feature/src/login.module.ts @@ -0,0 +1,15 @@ +import { NgModule } from '@angular/core'; +import { IonicModule } from '@ionic/angular'; +import { CommonModule } from '@angular/common'; +import { LoginPage } from './login.page'; +import { LoginRouting } from './login.routing'; + +@NgModule({ + imports: [ + CommonModule, + LoginRouting, + IonicModule, + ], + declarations: [LoginPage], +}) +export class LoginModule {} diff --git a/libs/app/login/feature/src/login.page.html b/libs/app/login/feature/src/login.page.html new file mode 100644 index 00000000..1a2569ed --- /dev/null +++ b/libs/app/login/feature/src/login.page.html @@ -0,0 +1,12 @@ + + + Profile Avatar + + +
+

Login

+

Welcome to Fridge To Plate

+
+ + +
\ No newline at end of file diff --git a/libs/app/login/feature/src/login.page.scss b/libs/app/login/feature/src/login.page.scss new file mode 100644 index 00000000..e69de29b diff --git a/libs/app/login/feature/src/login.page.spec.ts b/libs/app/login/feature/src/login.page.spec.ts new file mode 100644 index 00000000..c5ee58ce --- /dev/null +++ b/libs/app/login/feature/src/login.page.spec.ts @@ -0,0 +1,23 @@ +// import { TestBed } from "@angular/core/testing"; + +// describe("AppComponent", () => { +// beforeEach(async () => { +// await TestBed.configureTestingModule({ +// imports: [], +// declarations: [AppComponent, NxWelcomeComponent], +// }).compileComponents(); +// }); + +// it("should render title", () => { +// const fixture = TestBed.createComponent(AppComponent); +// fixture.detectChanges(); +// const compiled = fixture.nativeElement as HTMLElement; +// expect(compiled.querySelector("h1")?.textContent).toContain("Spice Girls"); +// }); + +// it(`should have as title 'FridgeToPlate'`, () => { +// const fixture = TestBed.createComponent(AppComponent); +// const app = fixture.componentInstance; +// expect(app.title).toEqual("FridgeToPlate"); +// }); +// }); diff --git a/libs/app/login/feature/src/login.page.ts b/libs/app/login/feature/src/login.page.ts new file mode 100644 index 00000000..3c91a50e --- /dev/null +++ b/libs/app/login/feature/src/login.page.ts @@ -0,0 +1,8 @@ +import { Component } from "@angular/core"; + +@Component({ + selector: "login-page", + templateUrl: "./login.page.html", + styleUrls: ["./login.page.scss"], +}) +export class LoginPage {} diff --git a/libs/app/login/feature/src/login.routing.ts b/libs/app/login/feature/src/login.routing.ts new file mode 100644 index 00000000..b2c789ac --- /dev/null +++ b/libs/app/login/feature/src/login.routing.ts @@ -0,0 +1,17 @@ +import { NgModule } from '@angular/core'; +import { RouterModule, Routes } from '@angular/router'; +import { LoginPage } from './login.page'; + +const routes: Routes = [ + { + path: '', + pathMatch: 'full', + component: LoginPage, + }, +]; + +@NgModule({ + imports: [RouterModule.forChild(routes)], + exports: [RouterModule], +}) +export class LoginRouting {} \ No newline at end of file diff --git a/libs/app/login/feature/src/test-setup.ts b/libs/app/login/feature/src/test-setup.ts new file mode 100644 index 00000000..1100b3e8 --- /dev/null +++ b/libs/app/login/feature/src/test-setup.ts @@ -0,0 +1 @@ +import 'jest-preset-angular/setup-jest'; diff --git a/libs/app/login/feature/tsconfig.json b/libs/app/login/feature/tsconfig.json new file mode 100644 index 00000000..b9e5be08 --- /dev/null +++ b/libs/app/login/feature/tsconfig.json @@ -0,0 +1,29 @@ +{ + "compilerOptions": { + "target": "es2022", + "useDefineForClassFields": false, + "forceConsistentCasingInFileNames": true, + "strict": true, + "noImplicitOverride": true, + "noPropertyAccessFromIndexSignature": true, + "noImplicitReturns": true, + "noFallthroughCasesInSwitch": true + }, + "files": [], + "include": [], + "references": [ + { + "path": "./tsconfig.lib.json" + }, + { + "path": "./tsconfig.spec.json" + } + ], + "extends": "../../../../tsconfig.base.json", + "angularCompilerOptions": { + "enableI18nLegacyMessageIdFormat": false, + "strictInjectionParameters": true, + "strictInputAccessModifiers": true, + "strictTemplates": true + } +} diff --git a/libs/app/login/feature/tsconfig.lib.json b/libs/app/login/feature/tsconfig.lib.json new file mode 100644 index 00000000..91273870 --- /dev/null +++ b/libs/app/login/feature/tsconfig.lib.json @@ -0,0 +1,17 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "../../../../dist/out-tsc", + "declaration": true, + "declarationMap": true, + "inlineSources": true, + "types": [] + }, + "exclude": [ + "src/**/*.spec.ts", + "src/test-setup.ts", + "jest.config.ts", + "src/**/*.test.ts" + ], + "include": ["src/**/*.ts"] +} diff --git a/libs/app/login/feature/tsconfig.spec.json b/libs/app/login/feature/tsconfig.spec.json new file mode 100644 index 00000000..6b47720c --- /dev/null +++ b/libs/app/login/feature/tsconfig.spec.json @@ -0,0 +1,16 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "../../../../dist/out-tsc", + "module": "commonjs", + "target": "es2016", + "types": ["jest", "node"] + }, + "files": ["src/test-setup.ts"], + "include": [ + "jest.config.ts", + "src/**/*.test.ts", + "src/**/*.spec.ts", + "src/**/*.d.ts" +, "src/login.pagespec.ts" ] +} diff --git a/package-lock.json b/package-lock.json index 1df09836..dcd04238 100644 --- a/package-lock.json +++ b/package-lock.json @@ -67,7 +67,7 @@ "version": "5.2.0", "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz", "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==", - "dev": true, + "devOptional": true, "engines": { "node": ">=10" }, @@ -91,7 +91,6 @@ "version": "0.1502.7", "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1502.7.tgz", "integrity": "sha512-MzB6D/yUo6cBJfQ31zNDHJ3C3iKmBtxP3i9WIRnnkZwS1VUfO8OX3TZ6lycYbREF1oL/AQ/r9GK+KA5DNEBSAw==", - "dev": true, "dependencies": { "@angular-devkit/core": "15.2.7", "rxjs": "6.6.7" @@ -106,7 +105,6 @@ "version": "6.6.7", "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", - "dev": true, "dependencies": { "tslib": "^1.9.0" }, @@ -117,14 +115,12 @@ "node_modules/@angular-devkit/architect/node_modules/tslib": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" }, "node_modules/@angular-devkit/build-angular": { "version": "15.2.7", "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-15.2.7.tgz", "integrity": "sha512-zZ+tlt5aNGY9APUdjQHeVFJpVLeixlZRNHmfdXD+rN4WR2q9E0pTvLUThrkOmO8YrVyGbdvcw1O7XNdL+3b02w==", - "dev": true, "dependencies": { "@ampproject/remapping": "2.2.0", "@angular-devkit/architect": "0.1502.7", @@ -234,7 +230,6 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", - "dev": true, "dependencies": { "@jridgewell/gen-mapping": "^0.1.0", "@jridgewell/trace-mapping": "^0.3.9" @@ -247,7 +242,6 @@ "version": "0.1.1", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==", - "dev": true, "dependencies": { "@jridgewell/set-array": "^1.0.0", "@jridgewell/sourcemap-codec": "^1.4.10" @@ -260,7 +254,6 @@ "version": "7.20.12", "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.20.12.tgz", "integrity": "sha512-XsMfHovsUYHFMdrIHkZphTN/2Hzzi78R08NuHfDBehym2VsPDL6Zn/JAD/JQdnRvbSsbQc4mVaU1m6JgtTEElg==", - "dev": true, "dependencies": { "@ampproject/remapping": "^2.1.0", "@babel/code-frame": "^7.18.6", @@ -290,7 +283,6 @@ "version": "6.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, "bin": { "semver": "bin/semver.js" } @@ -299,7 +291,6 @@ "version": "7.20.14", "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.20.14.tgz", "integrity": "sha512-AEmuXHdcD3A52HHXxaTmYlb8q/xMEhoRP67B3T4Oq7lbmSoqroMZzjnGj3+i1io3pdnF8iBYVu4Ilj+c4hBxYg==", - "dev": true, "dependencies": { "@babel/types": "^7.20.7", "@jridgewell/gen-mapping": "^0.3.2", @@ -313,7 +304,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, "dependencies": { "balanced-match": "^1.0.0" } @@ -322,7 +312,6 @@ "version": "8.1.0", "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", - "dev": true, "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -341,7 +330,6 @@ "version": "5.1.6", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", - "dev": true, "dependencies": { "brace-expansion": "^2.0.1" }, @@ -353,7 +341,6 @@ "version": "8.4.1", "resolved": "https://registry.npmjs.org/open/-/open-8.4.1.tgz", "integrity": "sha512-/4b7qZNhv6Uhd7jjnREh1NjnPxlTq+XNWPG88Ydkj5AILcA5m3ajvcg57pB24EQjKv0dK62XnDqk9c/hkIG5Kg==", - "dev": true, "dependencies": { "define-lazy-prop": "^2.0.0", "is-docker": "^2.1.1", @@ -370,7 +357,6 @@ "version": "6.6.7", "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", - "dev": true, "dependencies": { "tslib": "^1.9.0" }, @@ -381,14 +367,12 @@ "node_modules/@angular-devkit/build-angular/node_modules/rxjs/node_modules/tslib": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" }, "node_modules/@angular-devkit/build-angular/node_modules/semver": { "version": "7.3.8", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", - "dev": true, "dependencies": { "lru-cache": "^6.0.0" }, @@ -403,7 +387,6 @@ "version": "0.1502.7", "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1502.7.tgz", "integrity": "sha512-sNE4t4shSwxagqm+jdojbkYfuo/CHNMi4faItDWTTsCOf9wQxCxV4Waxee4akAkv3K6fzrnZy3ad/oQQMUl0Iw==", - "dev": true, "dependencies": { "@angular-devkit/architect": "0.1502.7", "rxjs": "6.6.7" @@ -422,7 +405,6 @@ "version": "6.6.7", "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", - "dev": true, "dependencies": { "tslib": "^1.9.0" }, @@ -433,14 +415,12 @@ "node_modules/@angular-devkit/build-webpack/node_modules/tslib": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" }, "node_modules/@angular-devkit/core": { "version": "15.2.7", "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-15.2.7.tgz", "integrity": "sha512-k2MKUm4ygTD9+89neqMmBphDr0o8Tp9RtgfzbS8VHgGkGYlbu0KPsxHyHB3Mvzl1EkSz6EHyrU3t89m+Rcj1lw==", - "dev": true, "dependencies": { "ajv": "8.12.0", "ajv-formats": "2.1.1", @@ -466,7 +446,6 @@ "version": "6.6.7", "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", - "dev": true, "dependencies": { "tslib": "^1.9.0" }, @@ -477,14 +456,12 @@ "node_modules/@angular-devkit/core/node_modules/tslib": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" }, "node_modules/@angular-devkit/schematics": { "version": "15.2.7", "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-15.2.7.tgz", "integrity": "sha512-umQ+SgEMjqPHimHOBVhDn5NNGVoMLKQkI2fwbENXV72BqQqdh1K3D4QSNlUXitTaH0NEZZaAawE1vZHzzeAoNA==", - "dev": true, "dependencies": { "@angular-devkit/core": "15.2.7", "jsonc-parser": "3.2.0", @@ -502,7 +479,6 @@ "version": "6.6.7", "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", - "dev": true, "dependencies": { "tslib": "^1.9.0" }, @@ -513,8 +489,7 @@ "node_modules/@angular-devkit/schematics/node_modules/tslib": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" }, "node_modules/@angular-eslint/bundled-angular-compiler": { "version": "15.0.0", @@ -732,7 +707,6 @@ "version": "15.2.8", "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-15.2.8.tgz", "integrity": "sha512-fFxaDlbILo0t2t662qA0cjgn+kWItGlc1tFYKU6X7bvYb3t2e0cd9FzrFPLXUQVboGis83ULcJ2zkDxScnuPuQ==", - "dev": true, "dependencies": { "@babel/core": "7.19.3", "@jridgewell/sourcemap-codec": "^1.4.14", @@ -762,7 +736,6 @@ "version": "7.19.3", "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.19.3.tgz", "integrity": "sha512-WneDJxdsjEvyKtXKsaBGbDeiyOjR5vYq4HcShxnIbG0qixpoHjI3MqeZM9NDvsojNCEBItQE4juOo/bU6e72gQ==", - "dev": true, "dependencies": { "@ampproject/remapping": "^2.1.0", "@babel/code-frame": "^7.18.6", @@ -792,7 +765,6 @@ "version": "6.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, "bin": { "semver": "bin/semver.js" } @@ -801,7 +773,6 @@ "version": "0.27.0", "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.27.0.tgz", "integrity": "sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==", - "dev": true, "dependencies": { "@jridgewell/sourcemap-codec": "^1.4.13" }, @@ -908,8 +879,7 @@ "node_modules/@assemblyscript/loader": { "version": "0.10.1", "resolved": "https://registry.npmjs.org/@assemblyscript/loader/-/loader-0.10.1.tgz", - "integrity": "sha512-H71nDOOL8Y7kWRLqf6Sums+01Q5msqBW2KhDUTemh1tvY04eSkSXrK0uj/4mmY0Xr16/3zyZmsrxN7CKuRbNRg==", - "dev": true + "integrity": "sha512-H71nDOOL8Y7kWRLqf6Sums+01Q5msqBW2KhDUTemh1tvY04eSkSXrK0uj/4mmY0Xr16/3zyZmsrxN7CKuRbNRg==" }, "node_modules/@babel/code-frame": { "version": "7.21.4", @@ -2673,7 +2643,7 @@ "version": "2.88.11", "resolved": "https://registry.npmjs.org/@cypress/request/-/request-2.88.11.tgz", "integrity": "sha512-M83/wfQ1EkspjkE2lNWNV5ui2Cv7UCv1swW1DqljahbzLVWltcsexQh8jYtuS/vzFXP+HySntGM83ZXA9fn17w==", - "dev": true, + "devOptional": true, "dependencies": { "aws-sign2": "~0.7.0", "aws4": "^1.8.0", @@ -2702,7 +2672,7 @@ "version": "2.3.3", "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", - "dev": true, + "devOptional": true, "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.6", @@ -2716,7 +2686,7 @@ "version": "1.2.4", "resolved": "https://registry.npmjs.org/@cypress/xvfb/-/xvfb-1.2.4.tgz", "integrity": "sha512-skbBzPggOVYCbnGgV+0dmBdW/s77ZkAOXIC1knS8NagwDjBrNC1LuXtQJeiN6l+m7lzmHtaoUw/ctJKdqkG57Q==", - "dev": true, + "devOptional": true, "dependencies": { "debug": "^3.1.0", "lodash.once": "^4.1.1" @@ -2726,7 +2696,7 @@ "version": "3.2.7", "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, + "devOptional": true, "dependencies": { "ms": "^2.1.1" } @@ -2735,7 +2705,6 @@ "version": "0.5.7", "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", - "dev": true, "engines": { "node": ">=10.0.0" } @@ -3120,7 +3089,7 @@ "version": "1.4.1", "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.4.1.tgz", "integrity": "sha512-XXrH9Uarn0stsyldqDYq8r++mROmWRI1xKMXa640Bb//SY1+ECYX6VzT6Lcx5frD0V30XieqJ0oX9I2Xj5aoMA==", - "dev": true, + "devOptional": true, "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", @@ -3143,7 +3112,7 @@ "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, + "devOptional": true, "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -3159,7 +3128,7 @@ "version": "13.20.0", "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", - "dev": true, + "devOptional": true, "dependencies": { "type-fest": "^0.20.2" }, @@ -3174,13 +3143,13 @@ "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true + "devOptional": true }, "node_modules/@eslint/eslintrc/node_modules/minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, + "devOptional": true, "dependencies": { "brace-expansion": "^1.1.7" }, @@ -3192,7 +3161,7 @@ "version": "0.20.2", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true, + "devOptional": true, "engines": { "node": ">=10" }, @@ -3210,7 +3179,7 @@ "version": "0.9.5", "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.9.5.tgz", "integrity": "sha512-ObyMyWxZiCu/yTisA7uzx81s40xR2fD5Cg/2Kq7G02ajkNubJf6BopgDTmDyc3U7sXpNKM8cYOw7s7Tyr+DnCw==", - "dev": true, + "devOptional": true, "dependencies": { "@humanwhocodes/object-schema": "^1.2.1", "debug": "^4.1.1", @@ -3224,7 +3193,7 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", - "dev": true + "devOptional": true }, "node_modules/@istanbuljs/load-nyc-config": { "version": "1.1.0", @@ -3605,7 +3574,6 @@ "version": "15.2.7", "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-15.2.7.tgz", "integrity": "sha512-iUCSR03PzGSpwwZ5soioTIWsTPBayzkZfhKMkfz1RqtkbcxC4I07NRoQ1djofhsYyW2I1n7XS8w3K7NILtN3gQ==", - "dev": true, "engines": { "node": "^14.20.0 || ^16.13.0 || >=18.10.0", "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", @@ -3653,7 +3621,6 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-3.1.0.tgz", "integrity": "sha512-7kZUAaLscfgbwBQRbvdMYaZOWyMEcPTH/tJjnyAWJ/dvvs9Ef+CERx/qJb9GExJpl1qipaDGn7KqHnFGGixd0w==", - "dev": true, "dependencies": { "semver": "^7.3.5" }, @@ -3665,7 +3632,6 @@ "version": "7.5.0", "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.0.tgz", "integrity": "sha512-+XC0AD/R7Q2mPSRuy2Id0+CGTZ98+8f+KvwirxOKIEyid+XSx6HbC63p+O4IndTHuX5Z+JxQ0TghCkO5Cg/2HA==", - "dev": true, "dependencies": { "lru-cache": "^6.0.0" }, @@ -3856,7 +3822,6 @@ "version": "15.9.2", "resolved": "https://registry.npmjs.org/@nrwl/cli/-/cli-15.9.2.tgz", "integrity": "sha512-QoCmyrcGakHAYTJaNBbOerRQAmqJHMYGCdqtQidV+aP9p1Dy33XxDELfhd+IYmGqngutXuEWChNpWNhPloLnoA==", - "dev": true, "dependencies": { "nx": "15.9.2" } @@ -4672,7 +4637,6 @@ "cpu": [ "arm64" ], - "dev": true, "optional": true, "os": [ "darwin" @@ -4688,7 +4652,6 @@ "cpu": [ "x64" ], - "dev": true, "optional": true, "os": [ "darwin" @@ -4704,7 +4667,6 @@ "cpu": [ "arm" ], - "dev": true, "optional": true, "os": [ "linux" @@ -4720,7 +4682,6 @@ "cpu": [ "arm64" ], - "dev": true, "optional": true, "os": [ "linux" @@ -4736,7 +4697,6 @@ "cpu": [ "arm64" ], - "dev": true, "optional": true, "os": [ "linux" @@ -4752,7 +4712,6 @@ "cpu": [ "x64" ], - "dev": true, "optional": true, "os": [ "linux" @@ -4768,7 +4727,6 @@ "cpu": [ "x64" ], - "dev": true, "optional": true, "os": [ "linux" @@ -4784,7 +4742,6 @@ "cpu": [ "arm64" ], - "dev": true, "optional": true, "os": [ "win32" @@ -4800,7 +4757,6 @@ "cpu": [ "x64" ], - "dev": true, "optional": true, "os": [ "win32" @@ -4813,7 +4769,6 @@ "version": "15.9.2", "resolved": "https://registry.npmjs.org/@nrwl/tao/-/tao-15.9.2.tgz", "integrity": "sha512-+LqNC37w9c6q6Ukdpf0z0tt1PQFNi4gwhHpJvkYQiKRETHjyrrlyqTNEPEyA7PI62RuYC6VrpVw2gzI7ufqZEA==", - "dev": true, "dependencies": { "nx": "15.9.2" }, @@ -6165,7 +6120,6 @@ "version": "15.2.7", "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-15.2.7.tgz", "integrity": "sha512-5fC6Es6HWpvmCnpPwTxHQq6KQuxtPaheFgoElHJM6uBgJDTr993MIw/3FsZvqLkO9hv/yWbr4gilqjEoesJSWg==", - "dev": true, "dependencies": { "@angular-devkit/core": "15.2.7", "@angular-devkit/schematics": "15.2.7", @@ -6573,13 +6527,13 @@ "version": "8.1.1", "resolved": "https://registry.npmjs.org/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-8.1.1.tgz", "integrity": "sha512-0kSuKjAS0TrGLJ0M/+8MaFkGsQhZpB6pxOmvS3K8FYI72K//YmdfoW9X2qPsAKh1mkwxGD5zib9s1FIFed6E8g==", - "dev": true + "devOptional": true }, "node_modules/@types/sizzle": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/@types/sizzle/-/sizzle-2.3.3.tgz", "integrity": "sha512-JYM8x9EGF163bEyhdJBpR2QX1R5naCJHC8ucJylJ3w9/CVBaskdQ8WqBf8MmQrd1kRvp/a4TS8HJ+bxzR7ZJYQ==", - "dev": true + "devOptional": true }, "node_modules/@types/sockjs": { "version": "0.3.33", @@ -7352,7 +7306,7 @@ "version": "5.3.2", "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true, + "devOptional": true, "peerDependencies": { "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } @@ -7377,7 +7331,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/adjust-sourcemap-loader/-/adjust-sourcemap-loader-4.0.0.tgz", "integrity": "sha512-OXwN5b9pCUXNQHJpwwD2qP40byEmSgzj8B4ydSN0uMNYWiFmJ6x6KwUllMmfk8Rwu/HJDFR7U8ubsWBoN0Xp0A==", - "dev": true, "dependencies": { "loader-utils": "^2.0.0", "regex-parser": "^2.2.11" @@ -7390,7 +7343,6 @@ "version": "2.0.4", "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", - "dev": true, "dependencies": { "big.js": "^5.2.2", "emojis-list": "^3.0.0", @@ -7404,7 +7356,6 @@ "version": "6.0.2", "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "dev": true, "dependencies": { "debug": "4" }, @@ -7430,7 +7381,6 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", - "dev": true, "dependencies": { "clean-stack": "^2.0.0", "indent-string": "^4.0.0" @@ -7540,7 +7490,7 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", - "dev": true + "devOptional": true }, "node_modules/anymatch": { "version": "3.1.3", @@ -7564,7 +7514,7 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/arch/-/arch-2.2.0.tgz", "integrity": "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==", - "dev": true, + "devOptional": true, "funding": [ { "type": "github", @@ -7643,7 +7593,7 @@ "version": "0.2.6", "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", - "dev": true, + "devOptional": true, "dependencies": { "safer-buffer": "~2.1.0" } @@ -7652,7 +7602,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", - "dev": true, + "devOptional": true, "engines": { "node": ">=0.8" } @@ -7661,7 +7611,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", - "dev": true, + "devOptional": true, "engines": { "node": ">=8" } @@ -7680,7 +7630,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", - "dev": true, + "devOptional": true, "engines": { "node": ">= 4.0.0" } @@ -7744,7 +7694,7 @@ "version": "0.7.0", "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==", - "dev": true, + "devOptional": true, "engines": { "node": "*" } @@ -7753,7 +7703,7 @@ "version": "1.12.0", "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.12.0.tgz", "integrity": "sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg==", - "dev": true + "devOptional": true }, "node_modules/axios": { "version": "1.3.6", @@ -8000,7 +7950,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", - "dev": true, + "devOptional": true, "dependencies": { "tweetnacl": "^0.14.3" } @@ -8057,7 +8007,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/blob-util/-/blob-util-2.0.2.tgz", "integrity": "sha512-T7JQa+zsXXEa6/8ZhHcQEW1UFfVM49Ts65uBkFL6fz2QmrElqmbajIDJvuA0tEhRe5eIjpV9ZF+0RfZR9voJFQ==", - "dev": true + "devOptional": true }, "node_modules/bluebird": { "version": "3.4.7", @@ -8233,7 +8183,7 @@ "version": "0.2.13", "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", - "dev": true, + "devOptional": true, "engines": { "node": "*" } @@ -8282,7 +8232,6 @@ "version": "17.0.4", "resolved": "https://registry.npmjs.org/cacache/-/cacache-17.0.4.tgz", "integrity": "sha512-Z/nL3gU+zTUjz5pCA5vVjYM8pmaw2kxM7JEiE0fv3w77Wj+sFbi70CrBruUWH0uNcEdvLDixFpgA2JM4F4DBjA==", - "dev": true, "dependencies": { "@npmcli/fs": "^3.1.0", "fs-minipass": "^3.0.0", @@ -8306,7 +8255,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, "dependencies": { "balanced-match": "^1.0.0" } @@ -8315,7 +8263,6 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.2.tgz", "integrity": "sha512-2GAfyfoaCDRrM6jaOS3UsBts8yJ55VioXdWcOL7dK9zdAuKT71+WBA4ifnNYqVjYv+4SsPxjK0JT4yIIn4cA/g==", - "dev": true, "dependencies": { "minipass": "^5.0.0" }, @@ -8327,7 +8274,6 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", - "dev": true, "engines": { "node": ">=8" } @@ -8336,7 +8282,6 @@ "version": "8.1.0", "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", - "dev": true, "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -8355,7 +8300,6 @@ "version": "7.18.3", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", - "dev": true, "engines": { "node": ">=12" } @@ -8364,7 +8308,6 @@ "version": "5.1.6", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", - "dev": true, "dependencies": { "brace-expansion": "^2.0.1" }, @@ -8376,7 +8319,6 @@ "version": "4.2.8", "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.2.8.tgz", "integrity": "sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ==", - "dev": true, "engines": { "node": ">=8" } @@ -8385,7 +8327,7 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/cachedir/-/cachedir-2.3.0.tgz", "integrity": "sha512-A+Fezp4zxnit6FanDmv9EqXNAi3vt9DWp51/71UEhXukb7QUuvtv9344h91dyAxuTLoSYJFU299qzR3tzwPAhw==", - "dev": true, + "devOptional": true, "engines": { "node": ">=6" } @@ -8422,7 +8364,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", - "dev": true, + "devOptional": true, "engines": { "node": ">= 6" } @@ -8461,7 +8403,7 @@ "version": "0.12.0", "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==", - "dev": true + "devOptional": true }, "node_modules/chainsaw": { "version": "0.1.0", @@ -8501,14 +8443,13 @@ "node_modules/chardet": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", - "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", - "dev": true + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==" }, "node_modules/check-more-types": { "version": "2.24.0", "resolved": "https://registry.npmjs.org/check-more-types/-/check-more-types-2.24.0.tgz", "integrity": "sha512-Pj779qHxV2tuapviy1bSZNEL1maXr13bPYpsvSDB68HlYcYuhlDrmGd63i0JHMCLKzc7rUSNIrpdJlhVlNwrxA==", - "dev": true, + "devOptional": true, "engines": { "node": ">= 0.8.0" } @@ -8543,7 +8484,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", - "dev": true, "engines": { "node": ">=10" } @@ -8579,7 +8519,6 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", - "dev": true, "engines": { "node": ">=6" } @@ -8610,7 +8549,7 @@ "version": "0.6.3", "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.3.tgz", "integrity": "sha512-w5Jac5SykAeZJKntOxJCrm63Eg5/4dhMWIcuTbo9rpE+brgaSZo0RuNJZeOyMgsUdhDeojvgyQLmjI+K50ZGyg==", - "dev": true, + "devOptional": true, "dependencies": { "string-width": "^4.2.0" }, @@ -8625,7 +8564,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz", "integrity": "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==", - "dev": true, + "devOptional": true, "dependencies": { "slice-ansi": "^3.0.0", "string-width": "^4.2.0" @@ -8641,7 +8580,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", - "dev": true, "engines": { "node": ">= 10" } @@ -8660,7 +8598,6 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", - "dev": true, "engines": { "node": ">=0.8" } @@ -8742,7 +8679,7 @@ "version": "6.2.1", "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==", - "dev": true, + "devOptional": true, "engines": { "node": ">= 6" } @@ -8751,7 +8688,7 @@ "version": "1.8.2", "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.2.tgz", "integrity": "sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==", - "dev": true, + "devOptional": true, "engines": { "node": ">=4.0.0" } @@ -8884,7 +8821,6 @@ "version": "11.0.0", "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-11.0.0.tgz", "integrity": "sha512-fX2MWpamkW0hZxMEg0+mYnA40LTosOSa5TqZ9GYIBzyJa9C3QUaMPSE2xAi/buNr8u89SfD9wHSQVBzrRa/SOQ==", - "dev": true, "dependencies": { "fast-glob": "^3.2.11", "glob-parent": "^6.0.1", @@ -8908,7 +8844,6 @@ "version": "3.2.12", "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", - "dev": true, "dependencies": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", @@ -8924,7 +8859,6 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, "dependencies": { "is-glob": "^4.0.1" }, @@ -8936,7 +8870,6 @@ "version": "6.0.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, "dependencies": { "is-glob": "^4.0.3" }, @@ -8948,7 +8881,6 @@ "version": "13.1.4", "resolved": "https://registry.npmjs.org/globby/-/globby-13.1.4.tgz", "integrity": "sha512-iui/IiiW+QrJ1X1hKH5qwlMQyv34wJAYwH1vrf8b9kBA4sNiif3gKsMHa+BrdnOpEudWjpotfa7LrTzB1ERS/g==", - "dev": true, "dependencies": { "dir-glob": "^3.0.1", "fast-glob": "^3.2.11", @@ -8967,7 +8899,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", - "dev": true, "engines": { "node": ">=12" }, @@ -9024,7 +8955,6 @@ "version": "0.0.16", "resolved": "https://registry.npmjs.org/critters/-/critters-0.0.16.tgz", "integrity": "sha512-JwjgmO6i3y6RWtLYmXwO5jMd+maZt8Tnfu7VVISmEWyQqfLpB8soBswf8/2bu6SBXxtKA68Al3c+qIG1ApT68A==", - "dev": true, "dependencies": { "chalk": "^4.1.0", "css-select": "^4.2.0", @@ -9356,7 +9286,7 @@ "version": "12.11.0", "resolved": "https://registry.npmjs.org/cypress/-/cypress-12.11.0.tgz", "integrity": "sha512-TJE+CCWI26Hwr5Msb9GpQhFLubdYooW0fmlPwTsfiyxmngqc7+SZGLPeIkj2dTSSZSEtpQVzOzvcnzH0o8G7Vw==", - "dev": true, + "devOptional": true, "hasInstallScript": true, "dependencies": { "@cypress/request": "^2.88.10", @@ -9413,19 +9343,19 @@ "version": "14.18.43", "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.43.tgz", "integrity": "sha512-n3eFEaoem0WNwLux+k272P0+aq++5o05bA9CfiwKPdYPB5ZambWKdWoeHy7/OJiizMhzg27NLaZ6uzjLTzXceQ==", - "dev": true + "devOptional": true }, "node_modules/cypress/node_modules/bluebird": { "version": "3.7.2", "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", - "dev": true + "devOptional": true }, "node_modules/cypress/node_modules/fs-extra": { "version": "9.1.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", - "dev": true, + "devOptional": true, "dependencies": { "at-least-node": "^1.0.0", "graceful-fs": "^4.2.0", @@ -9440,13 +9370,13 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.0.0.tgz", "integrity": "sha512-F2JHgJQ1iqwnHDcQjVBsq3n/uoaFL+iPW/eAeL7kVxy/2RrWaN4WroKjjvbsoRtv0ftelNyC01bjRhn/bhcf4A==", - "dev": true + "devOptional": true }, "node_modules/cypress/node_modules/supports-color": { "version": "8.1.1", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, + "devOptional": true, "dependencies": { "has-flag": "^4.0.0" }, @@ -9461,7 +9391,7 @@ "version": "1.14.1", "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", - "dev": true, + "devOptional": true, "dependencies": { "assert-plus": "^1.0.0" }, @@ -9521,7 +9451,7 @@ "version": "1.11.7", "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.7.tgz", "integrity": "sha512-+Yw9U6YO5TQohxLcIkrXBeY73WP3ejHWVvx8XCk3gxvQDCTEmS48ZrSZCKciI7Bhl/uCMyxYtE9UqRILmFphkQ==", - "dev": true + "devOptional": true }, "node_modules/debug": { "version": "4.3.4", @@ -9597,7 +9527,7 @@ "version": "0.1.4", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true + "devOptional": true }, "node_modules/deepmerge": { "version": "4.3.1", @@ -9663,7 +9593,6 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", - "dev": true, "dependencies": { "clone": "^1.0.2" }, @@ -9721,7 +9650,6 @@ "version": "0.11.0", "resolved": "https://registry.npmjs.org/dependency-graph/-/dependency-graph-0.11.0.tgz", "integrity": "sha512-JeMq7fEshyepOWDfcfHK06N3MhyPhz++vtqWhMT5O9A3K42rdsEDpfdVqjaqaAhsw6a+ZqeDvQVtD0hFHQWrzg==", - "dev": true, "engines": { "node": ">= 0.6.0" } @@ -9765,7 +9693,7 @@ "version": "1.2.2", "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==", - "dev": true + "devOptional": true }, "node_modules/diff": { "version": "4.0.2", @@ -9798,7 +9726,7 @@ "version": "1.1.3", "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", - "dev": true + "devOptional": true }, "node_modules/dns-equal": { "version": "1.0.0", @@ -9820,7 +9748,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, + "devOptional": true, "dependencies": { "esutils": "^2.0.2" }, @@ -9956,7 +9884,7 @@ "version": "0.1.2", "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", - "dev": true, + "devOptional": true, "dependencies": { "jsbn": "~0.1.0", "safer-buffer": "^2.1.0" @@ -10150,7 +10078,6 @@ "version": "0.17.8", "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.17.8.tgz", "integrity": "sha512-g24ybC3fWhZddZK6R3uD2iF/RIPnRpwJAqLov6ouX3hMbY4+tKolP0VMF3zuIYCaXun+yHwS5IPQ91N2BT191g==", - "dev": true, "hasInstallScript": true, "optional": true, "bin": { @@ -10188,7 +10115,6 @@ "version": "0.17.8", "resolved": "https://registry.npmjs.org/esbuild-wasm/-/esbuild-wasm-0.17.8.tgz", "integrity": "sha512-zCmpxv95E0FuCmvdw1K836UHnj4EdiQnFfjTby35y3LAjRPtXMj3sbHDRHjbD8Mqg5lTwq3knacr/1qIFU51CQ==", - "dev": true, "bin": { "esbuild": "bin/esbuild" }, @@ -10304,7 +10230,7 @@ "version": "8.15.0", "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.15.0.tgz", "integrity": "sha512-GG5USZ1jhCu8HJkzGgeK8/+RGnHaNYZGrGDzUtigK3BsGESW/rs2az23XqE0WVwDxy1VRvvjSSGu5nB0Bu+6SA==", - "dev": true, + "devOptional": true, "dependencies": { "@eslint/eslintrc": "^1.2.3", "@humanwhocodes/config-array": "^0.9.2", @@ -10380,7 +10306,7 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.0.tgz", "integrity": "sha512-DYj5deGlHBfMt15J7rdtyKNq/Nqlv5KfU4iodrQ019XESsRnwXH9KAE0y3cwtUHDo2ob7CypAnCqefh6vioWRw==", - "dev": true, + "devOptional": true, "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^5.2.0" @@ -10396,7 +10322,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", - "dev": true, + "devOptional": true, "dependencies": { "eslint-visitor-keys": "^2.0.0" }, @@ -10414,7 +10340,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", - "dev": true, + "devOptional": true, "engines": { "node": ">=10" } @@ -10423,7 +10349,7 @@ "version": "3.4.0", "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.0.tgz", "integrity": "sha512-HPpKPUBQcAsZOsHAFwTtIKcYlCje62XB7SEAcxjtmW6TD1WVpkS6i6/hOVtTZIl4zGj/mBqpFVGvaDneik+VoQ==", - "dev": true, + "devOptional": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, @@ -10435,7 +10361,7 @@ "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, + "devOptional": true, "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -10451,7 +10377,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true, + "devOptional": true, "engines": { "node": ">=10" }, @@ -10463,7 +10389,7 @@ "version": "6.0.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, + "devOptional": true, "dependencies": { "is-glob": "^4.0.3" }, @@ -10475,7 +10401,7 @@ "version": "13.20.0", "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", - "dev": true, + "devOptional": true, "dependencies": { "type-fest": "^0.20.2" }, @@ -10490,13 +10416,13 @@ "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true + "devOptional": true }, "node_modules/eslint/node_modules/minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, + "devOptional": true, "dependencies": { "brace-expansion": "^1.1.7" }, @@ -10508,7 +10434,7 @@ "version": "0.20.2", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true, + "devOptional": true, "engines": { "node": ">=10" }, @@ -10520,7 +10446,7 @@ "version": "9.5.1", "resolved": "https://registry.npmjs.org/espree/-/espree-9.5.1.tgz", "integrity": "sha512-5yxtHSZXRSW5pvv3hAlXM5+/Oswi1AUFqBmbibKb5s6bp3rGIDkyXU6xCoyuuLhijr4SFwPrXRoZjz0AZDN9tg==", - "dev": true, + "devOptional": true, "dependencies": { "acorn": "^8.8.0", "acorn-jsx": "^5.3.2", @@ -10594,14 +10520,13 @@ "node_modules/eventemitter-asyncresource": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/eventemitter-asyncresource/-/eventemitter-asyncresource-1.0.0.tgz", - "integrity": "sha512-39F7TBIV0G7gTelxwbEqnwhp90eqCPON1k0NwNfwhgKn4Co4ybUbj2pECcXT0B3ztRKZ7Pw1JujUUgmQJHcVAQ==", - "dev": true + "integrity": "sha512-39F7TBIV0G7gTelxwbEqnwhp90eqCPON1k0NwNfwhgKn4Co4ybUbj2pECcXT0B3ztRKZ7Pw1JujUUgmQJHcVAQ==" }, "node_modules/eventemitter2": { "version": "6.4.7", "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-6.4.7.tgz", "integrity": "sha512-tYUSVOGeQPKt/eC1ABfhHy5Xd96N3oIijJvN3O9+TsC28T5V9yX9oEfEK5faP0EFSNVOG97qtAS68GBrQB2hDg==", - "dev": true + "devOptional": true }, "node_modules/eventemitter3": { "version": "4.0.7", @@ -10620,7 +10545,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz", "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==", - "dev": true, + "devOptional": true, "dependencies": { "cross-spawn": "^7.0.0", "get-stream": "^5.0.0", @@ -10643,7 +10568,7 @@ "version": "4.1.1", "resolved": "https://registry.npmjs.org/executable/-/executable-4.1.1.tgz", "integrity": "sha512-8iA79xD3uAch729dUG8xaaBBFGaEa0wdD2VkYLFHwlqosEj/jT66AzcreRDSgV7ehnNLBW2WR5jIXwGKjVdTLg==", - "dev": true, + "devOptional": true, "dependencies": { "pify": "^2.2.0" }, @@ -10751,13 +10676,12 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "dev": true + "devOptional": true }, "node_modules/external-editor": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", - "dev": true, "dependencies": { "chardet": "^0.7.0", "iconv-lite": "^0.4.24", @@ -10771,7 +10695,6 @@ "version": "0.0.33", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", - "dev": true, "dependencies": { "os-tmpdir": "~1.0.2" }, @@ -10783,7 +10706,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", - "dev": true, + "devOptional": true, "dependencies": { "debug": "^4.1.1", "get-stream": "^5.1.0", @@ -10803,7 +10726,7 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==", - "dev": true, + "devOptional": true, "engines": [ "node >=0.6.0" ] @@ -10837,7 +10760,7 @@ "version": "2.0.6", "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "dev": true + "devOptional": true }, "node_modules/fastq": { "version": "1.15.0", @@ -10870,7 +10793,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", - "dev": true, + "devOptional": true, "dependencies": { "pend": "~1.2.0" } @@ -10893,7 +10816,7 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", - "dev": true, + "devOptional": true, "dependencies": { "flat-cache": "^3.0.4" }, @@ -11086,7 +11009,7 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", - "dev": true, + "devOptional": true, "dependencies": { "flatted": "^3.1.0", "rimraf": "^3.0.2" @@ -11099,7 +11022,7 @@ "version": "3.2.7", "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", - "dev": true + "devOptional": true }, "node_modules/follow-redirects": { "version": "1.15.2", @@ -11161,7 +11084,7 @@ "version": "0.6.1", "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==", - "dev": true, + "devOptional": true, "engines": { "node": "*" } @@ -11349,7 +11272,6 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", - "dev": true, "dependencies": { "minipass": "^3.0.0" }, @@ -11428,7 +11350,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", - "dev": true + "devOptional": true }, "node_modules/functions-have-names": { "version": "1.2.3", @@ -11499,7 +11421,7 @@ "version": "5.2.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", - "dev": true, + "devOptional": true, "dependencies": { "pump": "^3.0.0" }, @@ -11514,7 +11436,7 @@ "version": "3.2.1", "resolved": "https://registry.npmjs.org/getos/-/getos-3.2.1.tgz", "integrity": "sha512-U56CfOK17OKgTVqozZjUKNdkfEv6jk5WISBJ8SHoagjE6L69zOwl3Z+O8myjY9MEW3i2HPWQBt/LTbCgcC973Q==", - "dev": true, + "devOptional": true, "dependencies": { "async": "^3.2.0" } @@ -11523,7 +11445,7 @@ "version": "0.1.7", "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", - "dev": true, + "devOptional": true, "dependencies": { "assert-plus": "^1.0.0" } @@ -11564,7 +11486,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.1.tgz", "integrity": "sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==", - "dev": true, + "devOptional": true, "dependencies": { "ini": "2.0.0" }, @@ -11579,7 +11501,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz", "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==", - "dev": true, + "devOptional": true, "engines": { "node": ">=10" } @@ -11737,7 +11659,6 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/hdr-histogram-js/-/hdr-histogram-js-2.0.3.tgz", "integrity": "sha512-Hkn78wwzWHNCp2uarhzQ2SGFLU3JY8SBDDd3TAABK4fc30wm+MuPOrg5QVFVfkKOQd6Bfz3ukJEI+q9sXEkK1g==", - "dev": true, "dependencies": { "@assemblyscript/loader": "^0.10.1", "base64-js": "^1.2.0", @@ -11747,8 +11668,7 @@ "node_modules/hdr-histogram-percentiles-obj": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/hdr-histogram-percentiles-obj/-/hdr-histogram-percentiles-obj-3.0.0.tgz", - "integrity": "sha512-7kIufnBqdsBGcSZLPJwqHT3yhk1QTsSlFsVD3kx5ixH/AlgBs9yM1q6DPhXZ8f8gtdqgh7N7/5btRLpQsS2gHw==", - "dev": true + "integrity": "sha512-7kIufnBqdsBGcSZLPJwqHT3yhk1QTsSlFsVD3kx5ixH/AlgBs9yM1q6DPhXZ8f8gtdqgh7N7/5btRLpQsS2gHw==" }, "node_modules/he": { "version": "1.2.0", @@ -11958,7 +11878,7 @@ "version": "1.3.6", "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.3.6.tgz", "integrity": "sha512-3adrsD6zqo4GsTqtO7FyrejHNv+NgiIfAfv68+jVlFmSr9OGy7zrxONceFRLKvnnZA5jbxQBX1u9PpB6Wi32Gw==", - "dev": true, + "devOptional": true, "dependencies": { "assert-plus": "^1.0.0", "jsprim": "^2.0.2", @@ -11972,7 +11892,6 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", - "dev": true, "dependencies": { "agent-base": "6", "debug": "4" @@ -11985,7 +11904,7 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==", - "dev": true, + "devOptional": true, "engines": { "node": ">=8.12.0" } @@ -12166,7 +12085,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", - "dev": true, "engines": { "node": ">=8" } @@ -12204,7 +12122,6 @@ "version": "8.2.4", "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.2.4.tgz", "integrity": "sha512-nn4F01dxU8VeKfq192IjLsxu0/OmMZ4Lg3xKAns148rCaXP6ntAoEkVYZThWjwON8AlzdZZi6oqnhNbxUG9hVg==", - "dev": true, "dependencies": { "ansi-escapes": "^4.2.1", "chalk": "^4.1.1", @@ -12344,7 +12261,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-3.0.1.tgz", "integrity": "sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==", - "dev": true, + "devOptional": true, "dependencies": { "ci-info": "^3.2.0" }, @@ -12431,7 +12348,7 @@ "version": "0.4.0", "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz", "integrity": "sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==", - "dev": true, + "devOptional": true, "dependencies": { "global-dirs": "^3.0.0", "is-path-inside": "^3.0.2" @@ -12447,7 +12364,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", - "dev": true, "engines": { "node": ">=8" } @@ -12494,7 +12410,7 @@ "version": "3.0.3", "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "dev": true, + "devOptional": true, "engines": { "node": ">=8" } @@ -12628,13 +12544,12 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", - "dev": true + "devOptional": true }, "node_modules/is-unicode-supported": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", - "dev": true, "engines": { "node": ">=10" }, @@ -12702,7 +12617,7 @@ "version": "0.1.2", "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==", - "dev": true + "devOptional": true }, "node_modules/istanbul-lib-coverage": { "version": "3.2.0", @@ -13543,7 +13458,7 @@ "version": "1.18.2", "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.18.2.tgz", "integrity": "sha512-QAdOptna2NYiSSpv0O/BwoHBSmz4YhpzJHyi+fnMRTXFjp7B8i/YG5Z8IfusxB1ufjcD2Sre1F3R+nX3fvy7gg==", - "dev": true, + "devOptional": true, "bin": { "jiti": "bin/jiti.js" } @@ -13568,7 +13483,7 @@ "version": "0.1.1", "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==", - "dev": true + "devOptional": true }, "node_modules/jsdom": { "version": "20.0.3", @@ -13717,7 +13632,7 @@ "version": "0.4.0", "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", - "dev": true + "devOptional": true }, "node_modules/json-schema-traverse": { "version": "1.0.0", @@ -13728,13 +13643,13 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", - "dev": true + "devOptional": true }, "node_modules/json-stringify-safe": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", - "dev": true + "devOptional": true }, "node_modules/json5": { "version": "2.2.3", @@ -13776,7 +13691,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-2.0.2.tgz", "integrity": "sha512-gqXddjPqQ6G40VdnI6T6yObEC+pDNvyP95wdQhkWkg7crHH3km5qP1FsOXEkzEQwnz6gz5qGTn1c2Y52wP3OyQ==", - "dev": true, + "devOptional": true, "engines": [ "node >=0.6.0" ], @@ -13791,7 +13706,6 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/karma-source-map-support/-/karma-source-map-support-1.4.0.tgz", "integrity": "sha512-RsBECncGO17KAoJCYXjv+ckIz+Ii9NCi+9enk+rq6XC81ezYkb4/RHE6CTXdA7IOJqoF3wcaLfVG0CPmE5ca6A==", - "dev": true, "dependencies": { "source-map-support": "^0.5.5" } @@ -13825,7 +13739,7 @@ "version": "1.6.0", "resolved": "https://registry.npmjs.org/lazy-ass/-/lazy-ass-1.6.0.tgz", "integrity": "sha512-cc8oEVoctTvsFZ/Oje/kGnHbpWHYBe8IAJe4C0QNc3t8uM/0Y8+erSz/7Y1ALuXTEZTMvxXwO6YbX1ey3ujiZw==", - "dev": true, + "devOptional": true, "engines": { "node": "> 0.8" } @@ -13926,7 +13840,7 @@ "version": "0.4.1", "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dev": true, + "devOptional": true, "dependencies": { "prelude-ls": "^1.2.1", "type-check": "~0.4.0" @@ -13977,7 +13891,7 @@ "version": "3.14.0", "resolved": "https://registry.npmjs.org/listr2/-/listr2-3.14.0.tgz", "integrity": "sha512-TyWI8G99GX9GjE54cJ+RrNMcIFBfwMPxc3XTFiAYGN4s10hWROGtOg7+O6u6LE3mNkyld7RSLE6nrKBvTfcs3g==", - "dev": true, + "devOptional": true, "dependencies": { "cli-truncate": "^2.1.0", "colorette": "^2.0.16", @@ -14012,7 +13926,6 @@ "version": "3.2.1", "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-3.2.1.tgz", "integrity": "sha512-ZvFw1KWS3GVyYBYb7qkmRM/WwL2TQQBxgCK62rlvm4WpVQ23Nb4tYjApUlfjrEGvOs7KHEsmyUn75OHZrJMWPw==", - "dev": true, "engines": { "node": ">= 12.13.0" } @@ -14047,13 +13960,13 @@ "version": "4.6.2", "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true + "devOptional": true }, "node_modules/lodash.once": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==", - "dev": true + "devOptional": true }, "node_modules/lodash.uniq": { "version": "4.5.0", @@ -14064,7 +13977,6 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", - "dev": true, "dependencies": { "chalk": "^4.1.0", "is-unicode-supported": "^0.1.0" @@ -14080,7 +13992,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/log-update/-/log-update-4.0.0.tgz", "integrity": "sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==", - "dev": true, + "devOptional": true, "dependencies": { "ansi-escapes": "^4.3.0", "cli-cursor": "^3.1.0", @@ -14098,7 +14010,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", - "dev": true, + "devOptional": true, "dependencies": { "ansi-styles": "^4.0.0", "astral-regex": "^2.0.0", @@ -14115,7 +14027,7 @@ "version": "6.2.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", - "dev": true, + "devOptional": true, "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -14140,7 +14052,6 @@ "version": "0.29.0", "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.29.0.tgz", "integrity": "sha512-WcfidHrDjMY+eLjlU+8OvwREqHwpgCeKVBUpQ3OhYYuvfaYCUgcbuBzappNzZvg/v8onU3oQj+BYpkOJe9Iw4Q==", - "dev": true, "dependencies": { "@jridgewell/sourcemap-codec": "^1.4.13" }, @@ -14468,7 +14379,6 @@ "version": "2.7.2", "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.7.2.tgz", "integrity": "sha512-EdlUizq13o0Pd+uCp+WO/JpkLvHRVGt97RqfeGhXqAcorYo1ypJSpkV+WDT0vY/kmh/p7wRdJNJtuyK540PXDw==", - "dev": true, "dependencies": { "schema-utils": "^4.0.0" }, @@ -14511,7 +14421,6 @@ "version": "3.3.6", "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", - "dev": true, "dependencies": { "yallist": "^4.0.0" }, @@ -14523,7 +14432,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", - "dev": true, "dependencies": { "minipass": "^3.0.0" }, @@ -14552,7 +14460,6 @@ "version": "1.0.5", "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", - "dev": true, "dependencies": { "minipass": "^3.0.0" }, @@ -14574,7 +14481,6 @@ "version": "1.2.4", "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", - "dev": true, "dependencies": { "minipass": "^3.0.0" }, @@ -14598,7 +14504,6 @@ "version": "2.1.2", "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", - "dev": true, "dependencies": { "minipass": "^3.0.0", "yallist": "^4.0.0" @@ -14638,14 +14543,13 @@ "node_modules/mute-stream": { "version": "0.0.8", "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", - "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", - "dev": true + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==" }, "node_modules/mz": { "version": "2.7.0", "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", - "dev": true, + "devOptional": true, "dependencies": { "any-promise": "^1.0.0", "object-assign": "^4.0.1", @@ -14735,7 +14639,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/nice-napi/-/nice-napi-1.0.2.tgz", "integrity": "sha512-px/KnJAJZf5RuBGcfD+Sp2pAKq0ytz8j+1NehvgIGFkvtvFrDM3T8E4x/JJODXK9WZow8RRGrbA9QQ3hs+pDhA==", - "dev": true, "hasInstallScript": true, "optional": true, "os": [ @@ -15152,7 +15055,6 @@ "version": "15.9.2", "resolved": "https://registry.npmjs.org/nx/-/nx-15.9.2.tgz", "integrity": "sha512-wtcs+wsuplSckvgk+bV+/XuGlo+sVWzSG0RpgWBjQYeqA3QsVFEAPVY66Z5cSoukDbTV77ddcAjEw+Rz8oOR1A==", - "dev": true, "hasInstallScript": true, "dependencies": { "@nrwl/cli": "15.9.2", @@ -15254,7 +15156,7 @@ "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "dev": true, + "devOptional": true, "engines": { "node": ">=0.10.0" } @@ -15263,7 +15165,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", - "dev": true, + "devOptional": true, "engines": { "node": ">= 6" } @@ -15393,7 +15295,7 @@ "version": "0.9.1", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", - "dev": true, + "devOptional": true, "dependencies": { "deep-is": "^0.1.3", "fast-levenshtein": "^2.0.6", @@ -15410,7 +15312,6 @@ "version": "5.4.1", "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", - "dev": true, "dependencies": { "bl": "^4.1.0", "chalk": "^4.1.0", @@ -15433,7 +15334,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -15442,7 +15342,7 @@ "version": "1.2.2", "resolved": "https://registry.npmjs.org/ospath/-/ospath-1.2.2.tgz", "integrity": "sha512-o6E5qJV5zkAbIDNhGSIlyOhScKXgQrSRMilfph0clDfM0nEnBOlKlH4sWDmG95BW/CvwNz0vmm7dJVtU2KlMiA==", - "dev": true + "devOptional": true }, "node_modules/p-limit": { "version": "2.3.0", @@ -15473,7 +15373,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", - "dev": true, "dependencies": { "aggregate-error": "^3.0.0" }, @@ -15577,8 +15476,7 @@ "node_modules/pako": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", - "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", - "dev": true + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" }, "node_modules/parent-module": { "version": "1.0.1", @@ -15624,14 +15522,12 @@ "node_modules/parse5": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", - "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", - "dev": true + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==" }, "node_modules/parse5-html-rewriting-stream": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/parse5-html-rewriting-stream/-/parse5-html-rewriting-stream-7.0.0.tgz", "integrity": "sha512-mazCyGWkmCRWDI15Zp+UiCqMp/0dgEmkZRvhlsqqKYr4SsVm/TvnSpD9fCvqCA2zoWJcfRym846ejWBBHRiYEg==", - "dev": true, "dependencies": { "entities": "^4.3.0", "parse5": "^7.0.0", @@ -15645,7 +15541,6 @@ "version": "4.5.0", "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", - "dev": true, "engines": { "node": ">=0.12" }, @@ -15657,7 +15552,6 @@ "version": "7.1.2", "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", - "dev": true, "dependencies": { "entities": "^4.4.0" }, @@ -15669,7 +15563,6 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz", "integrity": "sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==", - "dev": true, "dependencies": { "parse5": "^6.0.1" } @@ -15678,7 +15571,6 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/parse5-sax-parser/-/parse5-sax-parser-7.0.0.tgz", "integrity": "sha512-5A+v2SNsq8T6/mG3ahcz8ZtQ0OUFTatxPbeidoMB7tkJSGDY3tdfl4MHovtLQHkEn5CGxijNWRQHhRQ6IRpXKg==", - "dev": true, "dependencies": { "parse5": "^7.0.0" }, @@ -15690,7 +15582,6 @@ "version": "4.5.0", "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", - "dev": true, "engines": { "node": ">=0.12" }, @@ -15702,7 +15593,6 @@ "version": "7.1.2", "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", - "dev": true, "dependencies": { "entities": "^4.4.0" }, @@ -15798,13 +15688,13 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", - "dev": true + "devOptional": true }, "node_modules/performance-now": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==", - "dev": true + "devOptional": true }, "node_modules/picocolors": { "version": "1.0.0", @@ -15842,7 +15732,6 @@ "version": "3.2.0", "resolved": "https://registry.npmjs.org/piscina/-/piscina-3.2.0.tgz", "integrity": "sha512-yn/jMdHRw+q2ZJhFhyqsmANcbF6V2QwmD84c6xRau+QpQOmtrBCoRGdvTfeuFDYXB5W2m6MfLkjkvQa9lUSmIA==", - "dev": true, "dependencies": { "eventemitter-asyncresource": "^1.0.0", "hdr-histogram-js": "^2.0.1", @@ -16034,7 +15923,7 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.1.tgz", "integrity": "sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==", - "dev": true, + "devOptional": true, "dependencies": { "camelcase-css": "^2.0.1" }, @@ -16053,7 +15942,7 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.1.tgz", "integrity": "sha512-vEJIc8RdiBRu3oRAI0ymerOn+7rPuMvRXslTvZUKZonDHFIczxztIyJ1urxM1x9JXEikvpWWTUUqal5j/8QgvA==", - "dev": true, + "devOptional": true, "dependencies": { "lilconfig": "^2.0.5", "yaml": "^2.1.1" @@ -16082,7 +15971,7 @@ "version": "2.2.2", "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.2.2.tgz", "integrity": "sha512-CBKFWExMn46Foo4cldiChEzn7S7SRV+wqiluAb6xmueD/fGyRHIhX8m14vVGgeFWjN540nKCNVj6P21eQjgTuA==", - "dev": true, + "devOptional": true, "engines": { "node": ">= 14" } @@ -16091,7 +15980,6 @@ "version": "7.0.2", "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-7.0.2.tgz", "integrity": "sha512-fUJzV/QH7NXUAqV8dWJ9Lg4aTkDCezpTS5HgJ2DvqznexTbSTxgi/dTECvTZ15BwKTtk8G/bqI/QTu2HPd3ZCg==", - "dev": true, "dependencies": { "cosmiconfig": "^7.0.0", "klona": "^2.0.5", @@ -16113,7 +16001,6 @@ "version": "7.1.0", "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", - "dev": true, "dependencies": { "@types/parse-json": "^4.0.0", "import-fresh": "^3.2.1", @@ -16129,7 +16016,6 @@ "version": "7.5.0", "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.0.tgz", "integrity": "sha512-+XC0AD/R7Q2mPSRuy2Id0+CGTZ98+8f+KvwirxOKIEyid+XSx6HbC63p+O4IndTHuX5Z+JxQ0TghCkO5Cg/2HA==", - "dev": true, "dependencies": { "lru-cache": "^6.0.0" }, @@ -16291,7 +16177,7 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.0.1.tgz", "integrity": "sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==", - "dev": true, + "devOptional": true, "dependencies": { "postcss-selector-parser": "^6.0.11" }, @@ -16525,7 +16411,7 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "dev": true, + "devOptional": true, "engines": { "node": ">= 0.8.0" } @@ -16549,7 +16435,6 @@ "version": "5.6.0", "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==", - "dev": true, "engines": { "node": ">=6" }, @@ -16598,8 +16483,7 @@ "node_modules/promise-inflight": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", - "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==", - "dev": true + "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==" }, "node_modules/promise-retry": { "version": "2.0.1", @@ -16662,13 +16546,13 @@ "version": "1.9.0", "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==", - "dev": true + "devOptional": true }, "node_modules/pump": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "dev": true, + "devOptional": true, "dependencies": { "end-of-stream": "^1.1.0", "once": "^1.3.1" @@ -16915,8 +16799,7 @@ "node_modules/reflect-metadata": { "version": "0.1.13", "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz", - "integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==", - "dev": true + "integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==" }, "node_modules/regenerate": { "version": "1.4.2", @@ -16950,8 +16833,7 @@ "node_modules/regex-parser": { "version": "2.2.11", "resolved": "https://registry.npmjs.org/regex-parser/-/regex-parser-2.2.11.tgz", - "integrity": "sha512-jbD/FT0+9MBU2XAZluI7w2OBs1RBi6p9M83nkoZayQXXU9e8Robt69FcZc7wU4eJD/YFTjn1JdCk3rbMJajz8Q==", - "dev": true + "integrity": "sha512-jbD/FT0+9MBU2XAZluI7w2OBs1RBi6p9M83nkoZayQXXU9e8Robt69FcZc7wU4eJD/YFTjn1JdCk3rbMJajz8Q==" }, "node_modules/regexp.prototype.flags": { "version": "1.5.0", @@ -16974,7 +16856,7 @@ "version": "3.2.0", "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", - "dev": true, + "devOptional": true, "engines": { "node": ">=8" }, @@ -17021,7 +16903,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/request-progress/-/request-progress-3.0.0.tgz", "integrity": "sha512-MnWzEHHaxHO2iWiQuHrUPBi/1WeBf5PkxQqNyNvLl9VAYSdXkP8tQ3pBSeCPD+yw0v0Aq1zosWLz0BdeXpWwZg==", - "dev": true, + "devOptional": true, "dependencies": { "throttleit": "^1.0.0" } @@ -17087,7 +16969,6 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/resolve-url-loader/-/resolve-url-loader-5.0.0.tgz", "integrity": "sha512-uZtduh8/8srhBoMx//5bwqjQ+rfYOUq8zC9NrMUGtjBiGTtFJM42s58/36+hTqeqINcnYe08Nj3LkK9lW4N8Xg==", - "dev": true, "dependencies": { "adjust-sourcemap-loader": "^4.0.0", "convert-source-map": "^1.7.0", @@ -17103,7 +16984,6 @@ "version": "2.0.4", "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", - "dev": true, "dependencies": { "big.js": "^5.2.2", "emojis-list": "^3.0.0", @@ -17117,7 +16997,6 @@ "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -17164,7 +17043,7 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz", "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==", - "dev": true + "devOptional": true }, "node_modules/rimraf": { "version": "3.0.2", @@ -17184,7 +17063,6 @@ "version": "2.4.1", "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", - "dev": true, "engines": { "node": ">=0.12.0" } @@ -17263,7 +17141,6 @@ "version": "13.2.0", "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-13.2.0.tgz", "integrity": "sha512-JWEp48djQA4nbZxmgC02/Wh0eroSUutulROUusYJO9P9zltRbNN80JCBHqRGzjd4cmZCa/r88xgfkjGD0TXsHg==", - "dev": true, "dependencies": { "klona": "^2.0.4", "neo-async": "^2.6.2" @@ -17661,7 +17538,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz", "integrity": "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==", - "dev": true, + "devOptional": true, "dependencies": { "ansi-styles": "^4.0.0", "astral-regex": "^2.0.0", @@ -17739,7 +17616,6 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/source-map-loader/-/source-map-loader-4.0.1.tgz", "integrity": "sha512-oqXpzDIByKONVY8g1NUPOTQhe0UTU5bWUl32GSkqK2LjJj0HmwTMVKxcUip0RgAYhY1mqgOxjbQM48a0mmeNfA==", - "dev": true, "dependencies": { "abab": "^2.0.6", "iconv-lite": "^0.6.3", @@ -17760,7 +17636,6 @@ "version": "0.6.3", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "dev": true, "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" }, @@ -17870,7 +17745,7 @@ "version": "1.17.0", "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz", "integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==", - "dev": true, + "devOptional": true, "dependencies": { "asn1": "~0.2.3", "assert-plus": "^1.0.0", @@ -17895,7 +17770,6 @@ "version": "10.0.4", "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.4.tgz", "integrity": "sha512-12+IR2CB2C28MMAw0Ncqwj5QbTcs0nGIhgJzYWzDkb21vWmfNI83KS4f3Ci6GI98WreIfG7o9UXp3C0qbpA8nQ==", - "dev": true, "dependencies": { "minipass": "^5.0.0" }, @@ -17907,7 +17781,6 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", - "dev": true, "engines": { "node": ">=8" } @@ -18186,7 +18059,7 @@ "version": "3.32.0", "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.32.0.tgz", "integrity": "sha512-ydQOU34rpSyj2TGyz4D2p8rbktIOZ8QY9s+DGLvFU1i5pWJE8vkpruCjGCMHsdXwnD7JDcS+noSwM/a7zyNFDQ==", - "dev": true, + "devOptional": true, "dependencies": { "@jridgewell/gen-mapping": "^0.3.2", "commander": "^4.0.0", @@ -18208,7 +18081,7 @@ "version": "4.1.1", "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", - "dev": true, + "devOptional": true, "engines": { "node": ">= 6" } @@ -18217,7 +18090,7 @@ "version": "7.1.6", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", - "dev": true, + "devOptional": true, "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -18237,7 +18110,7 @@ "version": "1.2.4", "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", - "dev": true + "devOptional": true }, "node_modules/supports-color": { "version": "7.2.0", @@ -18308,7 +18181,7 @@ "version": "3.3.2", "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.3.2.tgz", "integrity": "sha512-9jPkMiIBXvPc2KywkraqsUfbfj+dHDb+JPWtSJa9MLFdrPyazI7q6WX2sUrm7R9eVR7qqv3Pas7EvQFzxKnI6w==", - "dev": true, + "devOptional": true, "dependencies": { "@alloc/quick-lru": "^5.2.0", "arg": "^5.0.2", @@ -18346,13 +18219,13 @@ "version": "5.0.2", "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", - "dev": true + "devOptional": true }, "node_modules/tailwindcss/node_modules/fast-glob": { "version": "3.2.12", "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", - "dev": true, + "devOptional": true, "dependencies": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", @@ -18368,7 +18241,7 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, + "devOptional": true, "dependencies": { "is-glob": "^4.0.1" }, @@ -18380,7 +18253,7 @@ "version": "6.0.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, + "devOptional": true, "dependencies": { "is-glob": "^4.0.3" }, @@ -18392,7 +18265,7 @@ "version": "8.4.23", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.23.tgz", "integrity": "sha512-bQ3qMcpF6A/YjR55xtoTr0jGOlnPOKAIMdOWiv0EIT6HVPEaJiJB4NLljSbiHoC2RX7DN5Uvjtpbg1NPdwv1oA==", - "dev": true, + "devOptional": true, "funding": [ { "type": "opencollective", @@ -18420,7 +18293,7 @@ "version": "15.1.0", "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz", "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==", - "dev": true, + "devOptional": true, "dependencies": { "postcss-value-parser": "^4.0.0", "read-cache": "^1.0.0", @@ -18437,7 +18310,7 @@ "version": "1.22.2", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.2.tgz", "integrity": "sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==", - "dev": true, + "devOptional": true, "dependencies": { "is-core-module": "^2.11.0", "path-parse": "^1.0.7", @@ -18462,7 +18335,6 @@ "version": "6.1.11", "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.11.tgz", "integrity": "sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==", - "dev": true, "dependencies": { "chownr": "^2.0.0", "fs-minipass": "^2.0.0", @@ -18494,7 +18366,6 @@ "version": "5.16.3", "resolved": "https://registry.npmjs.org/terser/-/terser-5.16.3.tgz", "integrity": "sha512-v8wWLaS/xt3nE9dgKEWhNUFP6q4kngO5B8eYFUuebsu7Dw/UNAnpUod6UHo04jSSkv8TzKHjZDSd7EXdDQAl8Q==", - "dev": true, "dependencies": { "@jridgewell/source-map": "^0.3.2", "acorn": "^8.5.0", @@ -18638,8 +18509,7 @@ "node_modules/terser/node_modules/commander": { "version": "2.20.3", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" }, "node_modules/test-exclude": { "version": "6.0.0", @@ -18657,14 +18527,13 @@ "node_modules/text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", - "dev": true + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==" }, "node_modules/thenify": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", - "dev": true, + "devOptional": true, "dependencies": { "any-promise": "^1.0.0" } @@ -18673,7 +18542,7 @@ "version": "1.6.0", "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", - "dev": true, + "devOptional": true, "dependencies": { "thenify": ">= 3.1.0 < 4" }, @@ -18685,7 +18554,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/throttleit/-/throttleit-1.0.0.tgz", "integrity": "sha512-rkTVqu6IjfQ/6+uNuuc3sZek4CEYxTJom3IktzgdSxcZqdARuebbA/f4QmAxMQIxqq9ZLEUkSYqvuk1I6VKq4g==", - "dev": true + "devOptional": true }, "node_modules/through": { "version": "2.3.8", @@ -18744,7 +18613,7 @@ "version": "2.5.0", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", - "dev": true, + "devOptional": true, "dependencies": { "psl": "^1.1.28", "punycode": "^2.1.1" @@ -18780,7 +18649,7 @@ "version": "0.1.13", "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==", - "dev": true + "devOptional": true }, "node_modules/ts-jest": { "version": "29.1.0", @@ -19015,7 +18884,7 @@ "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", - "dev": true, + "devOptional": true, "dependencies": { "safe-buffer": "^5.0.1" }, @@ -19027,13 +18896,13 @@ "version": "0.14.5", "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==", - "dev": true + "devOptional": true }, "node_modules/type-check": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "dev": true, + "devOptional": true, "dependencies": { "prelude-ls": "^1.2.1" }, @@ -19081,7 +18950,6 @@ "version": "4.9.5", "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", - "dev": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -19141,7 +19009,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-3.0.0.tgz", "integrity": "sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g==", - "dev": true, "dependencies": { "unique-slug": "^4.0.0" }, @@ -19153,7 +19020,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-4.0.0.tgz", "integrity": "sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ==", - "dev": true, "dependencies": { "imurmurhash": "^0.1.4" }, @@ -19181,7 +19047,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz", "integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==", - "dev": true, + "devOptional": true, "engines": { "node": ">=8" } @@ -19364,7 +19230,7 @@ "version": "1.10.0", "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==", - "dev": true, + "devOptional": true, "engines": [ "node >=0.6.0" ], @@ -19378,7 +19244,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==", - "dev": true + "devOptional": true }, "node_modules/w3c-xmlserializer": { "version": "4.0.0", @@ -19424,7 +19290,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", - "dev": true, "dependencies": { "defaults": "^1.0.3" } @@ -19485,7 +19350,6 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-6.0.1.tgz", "integrity": "sha512-PZPZ6jFinmqVPJZbisfggDiC+2EeGZ1ZByyMP5sOFJcPPWSexalISz+cvm+j+oYPT7FIJyxT76esjnw9DhE5sw==", - "dev": true, "dependencies": { "colorette": "^2.0.10", "memfs": "^3.4.12", @@ -19584,7 +19448,6 @@ "version": "5.8.0", "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.8.0.tgz", "integrity": "sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q==", - "dev": true, "dependencies": { "clone-deep": "^4.0.1", "wildcard": "^2.0.0" @@ -19839,7 +19702,7 @@ "version": "1.2.3", "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", - "dev": true, + "devOptional": true, "engines": { "node": ">=0.10.0" } @@ -20022,7 +19885,7 @@ "version": "2.10.0", "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", - "dev": true, + "devOptional": true, "dependencies": { "buffer-crc32": "~0.2.3", "fd-slicer": "~1.1.0" From 8b42bf0ab4b3d33709da38df1ef968c42dc8bf53 Mon Sep 17 00:00:00 2001 From: Ryan Trickett Date: Fri, 19 May 2023 00:33:46 +0200 Subject: [PATCH 03/55] =?UTF-8?q?=F0=9F=9A=A7=20(app)=20Profile=20Page=20S?= =?UTF-8?q?tyling?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/app/src/app/app.component.html | 2 +- apps/app/src/app/app.module.ts | 6 ++-- apps/app/tailwind.config.js | 2 +- libs/app/profile/feature/src/index.ts | 1 + .../app/profile/feature/src/profile.module.ts | 5 +-- .../app/profile/feature/src/profile.page.html | 33 ++++++++++++------- libs/app/profile/feature/tsconfig.spec.json | 5 +-- 7 files changed, 34 insertions(+), 20 deletions(-) diff --git a/apps/app/src/app/app.component.html b/apps/app/src/app/app.component.html index a81d84cb..e8927ac0 100644 --- a/apps/app/src/app/app.component.html +++ b/apps/app/src/app/app.component.html @@ -1 +1 @@ - + \ No newline at end of file diff --git a/apps/app/src/app/app.module.ts b/apps/app/src/app/app.module.ts index aadaa3bb..279dd576 100644 --- a/apps/app/src/app/app.module.ts +++ b/apps/app/src/app/app.module.ts @@ -1,11 +1,11 @@ import { NgModule } from "@angular/core"; import { BrowserModule } from "@angular/platform-browser"; import { AppComponent } from "./app.component"; -import { NxWelcomeComponent } from "./nx-welcome.component"; +import { ProfileModule } from "@fridge-to-plate/app/profile/feature"; @NgModule({ - declarations: [AppComponent, NxWelcomeComponent], - imports: [BrowserModule], + declarations: [AppComponent], + imports: [BrowserModule, ProfileModule], providers: [], bootstrap: [AppComponent], }) diff --git a/apps/app/tailwind.config.js b/apps/app/tailwind.config.js index 38183db2..fe3294d0 100644 --- a/apps/app/tailwind.config.js +++ b/apps/app/tailwind.config.js @@ -4,7 +4,7 @@ const { join } = require('path'); /** @type {import('tailwindcss').Config} */ module.exports = { content: [ - join(__dirname, 'src/**/!(*.stories|*.spec).{ts,html}'), + join(__dirname, '../src/**/!(*.stories|*.spec).{ts,html}'), ...createGlobPatternsForDependencies(__dirname), ], theme: { diff --git a/libs/app/profile/feature/src/index.ts b/libs/app/profile/feature/src/index.ts index 3dd9438c..a9512094 100644 --- a/libs/app/profile/feature/src/index.ts +++ b/libs/app/profile/feature/src/index.ts @@ -1 +1,2 @@ export * from './profile.module'; +export * from './profile.page'; diff --git a/libs/app/profile/feature/src/profile.module.ts b/libs/app/profile/feature/src/profile.module.ts index 2b3b2a40..87d1184a 100644 --- a/libs/app/profile/feature/src/profile.module.ts +++ b/libs/app/profile/feature/src/profile.module.ts @@ -1,5 +1,5 @@ import { NgModule } from '@angular/core'; -import { IonicModule } from '@ionic/angular'; +// import { IonicModule } from '@ionic/angular'; import { CommonModule } from '@angular/common'; import { ProfilePage } from './profile.page'; import { ProfileRouting } from './profile.routing'; @@ -8,8 +8,9 @@ import { ProfileRouting } from './profile.routing'; imports: [ CommonModule, ProfileRouting, - IonicModule, + // IonicModule, ], declarations: [ProfilePage], + exports: [ProfilePage], }) export class ProfileModule {} diff --git a/libs/app/profile/feature/src/profile.page.html b/libs/app/profile/feature/src/profile.page.html index d20948f5..c61f859f 100644 --- a/libs/app/profile/feature/src/profile.page.html +++ b/libs/app/profile/feature/src/profile.page.html @@ -1,12 +1,23 @@ - - - Profile Avatar - - -
-

Profile Name

-

Email Address

+
+ - - - \ No newline at end of file +
\ No newline at end of file diff --git a/libs/app/profile/feature/tsconfig.spec.json b/libs/app/profile/feature/tsconfig.spec.json index 4af803b1..b702dac9 100644 --- a/libs/app/profile/feature/tsconfig.spec.json +++ b/libs/app/profile/feature/tsconfig.spec.json @@ -11,6 +11,7 @@ "jest.config.ts", "src/**/*.test.ts", "src/**/*.spec.ts", - "src/**/*.d.ts" -, "src/profile.pagespec.ts" ] + "src/**/*.d.ts", + "src/profile.page.spec.ts" + ] } From 06f3d98e91a83e98d9c189c2785e20b5092afadd Mon Sep 17 00:00:00 2001 From: simphiwe-nonabe <106514948+simphiwe-nonabe@users.noreply.github.com> Date: Fri, 19 May 2023 14:01:04 +0200 Subject: [PATCH 04/55] =?UTF-8?q?=E2=9C=A8=20(app)=20Set=20up=20of=20signu?= =?UTF-8?q?p=20page?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- libs/app/signup/.eslintrc.json | 36 ++++++++++++++++++++++++ libs/app/signup/README.md | 7 +++++ libs/app/signup/jest.config.ts | 22 +++++++++++++++ libs/app/signup/project.json | 34 ++++++++++++++++++++++ libs/app/signup/src/app-signup.module.ts | 7 +++++ libs/app/signup/src/index.ts | 1 + libs/app/signup/src/test-setup.ts | 1 + libs/app/signup/tsconfig.json | 29 +++++++++++++++++++ libs/app/signup/tsconfig.lib.json | 17 +++++++++++ libs/app/signup/tsconfig.spec.json | 16 +++++++++++ nx.json | 34 +++++++++++----------- package-lock.json | 4 ++- package.json | 4 ++- tsconfig.base.json | 4 ++- 14 files changed, 196 insertions(+), 20 deletions(-) create mode 100644 libs/app/signup/.eslintrc.json create mode 100644 libs/app/signup/README.md create mode 100644 libs/app/signup/jest.config.ts create mode 100644 libs/app/signup/project.json create mode 100644 libs/app/signup/src/app-signup.module.ts create mode 100644 libs/app/signup/src/index.ts create mode 100644 libs/app/signup/src/test-setup.ts create mode 100644 libs/app/signup/tsconfig.json create mode 100644 libs/app/signup/tsconfig.lib.json create mode 100644 libs/app/signup/tsconfig.spec.json diff --git a/libs/app/signup/.eslintrc.json b/libs/app/signup/.eslintrc.json new file mode 100644 index 00000000..67d253b6 --- /dev/null +++ b/libs/app/signup/.eslintrc.json @@ -0,0 +1,36 @@ +{ + "extends": ["../../../.eslintrc.json"], + "ignorePatterns": ["!**/*"], + "overrides": [ + { + "files": ["*.ts"], + "rules": { + "@angular-eslint/directive-selector": [ + "error", + { + "type": "attribute", + "prefix": "fridgeToPlate", + "style": "camelCase" + } + ], + "@angular-eslint/component-selector": [ + "error", + { + "type": "element", + "prefix": "fridge-to-plate", + "style": "kebab-case" + } + ] + }, + "extends": [ + "plugin:@nx/angular", + "plugin:@angular-eslint/template/process-inline-templates" + ] + }, + { + "files": ["*.html"], + "extends": ["plugin:@nx/angular-template"], + "rules": {} + } + ] +} diff --git a/libs/app/signup/README.md b/libs/app/signup/README.md new file mode 100644 index 00000000..0ece06d6 --- /dev/null +++ b/libs/app/signup/README.md @@ -0,0 +1,7 @@ +# app-signup + +This library was generated with [Nx](https://nx.dev). + +## Running unit tests + +Run `nx test app-signup` to execute the unit tests. diff --git a/libs/app/signup/jest.config.ts b/libs/app/signup/jest.config.ts new file mode 100644 index 00000000..0a00a6eb --- /dev/null +++ b/libs/app/signup/jest.config.ts @@ -0,0 +1,22 @@ +/* eslint-disable */ +export default { + displayName: 'app-signup', + preset: '../../../jest.preset.js', + setupFilesAfterEnv: ['/src/test-setup.ts'], + coverageDirectory: '../../../coverage/libs/app/signup', + transform: { + '^.+\\.(ts|mjs|js|html)$': [ + 'jest-preset-angular', + { + tsconfig: '/tsconfig.spec.json', + stringifyContentPathRegex: '\\.(html|svg)$', + }, + ], + }, + transformIgnorePatterns: ['node_modules/(?!.*\\.mjs$)'], + snapshotSerializers: [ + 'jest-preset-angular/build/serializers/no-ng-attributes', + 'jest-preset-angular/build/serializers/ng-snapshot', + 'jest-preset-angular/build/serializers/html-comment', + ], +}; diff --git a/libs/app/signup/project.json b/libs/app/signup/project.json new file mode 100644 index 00000000..405d02c2 --- /dev/null +++ b/libs/app/signup/project.json @@ -0,0 +1,34 @@ +{ + "name": "app-signup", + "$schema": "../../../node_modules/nx/schemas/project-schema.json", + "sourceRoot": "libs/app/signup/src", + "prefix": "fridge-to-plate", + "tags": [], + "projectType": "library", + "targets": { + "test": { + "executor": "@nx/jest:jest", + "outputs": ["{workspaceRoot}/coverage/{projectRoot}"], + "options": { + "jestConfig": "libs/app/signup/jest.config.ts", + "passWithNoTests": true + }, + "configurations": { + "ci": { + "ci": true, + "codeCoverage": true + } + } + }, + "lint": { + "executor": "@nx/linter:eslint", + "outputs": ["{options.outputFile}"], + "options": { + "lintFilePatterns": [ + "libs/app/signup/**/*.ts", + "libs/app/signup/**/*.html" + ] + } + } + } +} diff --git a/libs/app/signup/src/app-signup.module.ts b/libs/app/signup/src/app-signup.module.ts new file mode 100644 index 00000000..9a1736e3 --- /dev/null +++ b/libs/app/signup/src/app-signup.module.ts @@ -0,0 +1,7 @@ +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; + +@NgModule({ + imports: [CommonModule], +}) +export class AppSignupModule {} diff --git a/libs/app/signup/src/index.ts b/libs/app/signup/src/index.ts new file mode 100644 index 00000000..a09eab23 --- /dev/null +++ b/libs/app/signup/src/index.ts @@ -0,0 +1 @@ +export * from './app-signup.module'; diff --git a/libs/app/signup/src/test-setup.ts b/libs/app/signup/src/test-setup.ts new file mode 100644 index 00000000..1100b3e8 --- /dev/null +++ b/libs/app/signup/src/test-setup.ts @@ -0,0 +1 @@ +import 'jest-preset-angular/setup-jest'; diff --git a/libs/app/signup/tsconfig.json b/libs/app/signup/tsconfig.json new file mode 100644 index 00000000..5cf0a165 --- /dev/null +++ b/libs/app/signup/tsconfig.json @@ -0,0 +1,29 @@ +{ + "compilerOptions": { + "target": "es2022", + "useDefineForClassFields": false, + "forceConsistentCasingInFileNames": true, + "strict": true, + "noImplicitOverride": true, + "noPropertyAccessFromIndexSignature": true, + "noImplicitReturns": true, + "noFallthroughCasesInSwitch": true + }, + "files": [], + "include": [], + "references": [ + { + "path": "./tsconfig.lib.json" + }, + { + "path": "./tsconfig.spec.json" + } + ], + "extends": "../../../tsconfig.base.json", + "angularCompilerOptions": { + "enableI18nLegacyMessageIdFormat": false, + "strictInjectionParameters": true, + "strictInputAccessModifiers": true, + "strictTemplates": true + } +} diff --git a/libs/app/signup/tsconfig.lib.json b/libs/app/signup/tsconfig.lib.json new file mode 100644 index 00000000..9b49be75 --- /dev/null +++ b/libs/app/signup/tsconfig.lib.json @@ -0,0 +1,17 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "../../../dist/out-tsc", + "declaration": true, + "declarationMap": true, + "inlineSources": true, + "types": [] + }, + "exclude": [ + "src/**/*.spec.ts", + "src/test-setup.ts", + "jest.config.ts", + "src/**/*.test.ts" + ], + "include": ["src/**/*.ts"] +} diff --git a/libs/app/signup/tsconfig.spec.json b/libs/app/signup/tsconfig.spec.json new file mode 100644 index 00000000..f858ef78 --- /dev/null +++ b/libs/app/signup/tsconfig.spec.json @@ -0,0 +1,16 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "../../../dist/out-tsc", + "module": "commonjs", + "target": "es2016", + "types": ["jest", "node"] + }, + "files": ["src/test-setup.ts"], + "include": [ + "jest.config.ts", + "src/**/*.test.ts", + "src/**/*.spec.ts", + "src/**/*.d.ts" + ] +} diff --git a/nx.json b/nx.json index 7f2004e1..35805cb4 100644 --- a/nx.json +++ b/nx.json @@ -8,12 +8,7 @@ "default": { "runner": "@nrwl/nx-cloud", "options": { - "cacheableOperations": [ - "build", - "lint", - "test", - "e2e" - ], + "cacheableOperations": ["build", "lint", "test", "e2e"], "accessToken": "MjUwN2Y4YzctZDY3YS00NTIzLWJkZjctYmExMzJjNjA2MGVhfHJlYWQtd3JpdGU=", "url": "http://staging.nx.app" } @@ -21,16 +16,10 @@ }, "targetDefaults": { "build": { - "dependsOn": [ - "^build" - ] + "dependsOn": ["^build"] }, "test": { - "inputs": [ - "default", - "^default", - "{workspaceRoot}/jest.preset.js" - ] + "inputs": ["default", "^default", "{workspaceRoot}/jest.preset.js"] }, "lint": { "inputs": [ @@ -53,9 +42,20 @@ }, "@nrwl/angular:component": { "style": "scss" + }, + "@nx/angular:application": { + "style": "css", + "linter": "eslint", + "unitTestRunner": "jest", + "e2eTestRunner": "none" + }, + "@nx/angular:library": { + "linter": "eslint", + "unitTestRunner": "jest" + }, + "@nx/angular:component": { + "style": "css" } }, - "plugins": [ - "@nxrocks/nx-spring-boot" - ] + "plugins": ["@nxrocks/nx-spring-boot"] } diff --git a/package-lock.json b/package-lock.json index 1df09836..3a3e3c14 100644 --- a/package-lock.json +++ b/package-lock.json @@ -40,6 +40,8 @@ "@nrwl/nx-cloud": "^16.0.5", "@nrwl/web": "15.9.3", "@nrwl/workspace": "15.9.2", + "@nx/jest": "16.0.3", + "@nx/js": "16.0.3", "@nxrocks/nx-spring-boot": "^7.0.0", "@schematics/angular": "~15.2.0", "@types/jest": "^29.4.0", @@ -58,7 +60,7 @@ "postcss": "^8.4.5", "prettier": "^2.6.2", "tailwindcss": "^3.0.2", - "ts-jest": "^29.0.5", + "ts-jest": "^29.1.0", "ts-node": "10.9.1", "typescript": "~4.9.5" } diff --git a/package.json b/package.json index 50d8de14..7f1deb47 100644 --- a/package.json +++ b/package.json @@ -34,6 +34,8 @@ "@nrwl/nx-cloud": "^16.0.5", "@nrwl/web": "15.9.3", "@nrwl/workspace": "15.9.2", + "@nx/jest": "16.0.3", + "@nx/js": "16.0.3", "@nxrocks/nx-spring-boot": "^7.0.0", "@schematics/angular": "~15.2.0", "@types/jest": "^29.4.0", @@ -52,7 +54,7 @@ "postcss": "^8.4.5", "prettier": "^2.6.2", "tailwindcss": "^3.0.2", - "ts-jest": "^29.0.5", + "ts-jest": "^29.1.0", "ts-node": "10.9.1", "typescript": "~4.9.5" }, diff --git a/tsconfig.base.json b/tsconfig.base.json index 11253ac5..e874172f 100644 --- a/tsconfig.base.json +++ b/tsconfig.base.json @@ -14,7 +14,9 @@ "skipLibCheck": true, "skipDefaultLibCheck": true, "baseUrl": ".", - "paths": {} + "paths": { + "@fridge-to-plate/app/signup": ["libs/app/signup/src/index.ts"] + } }, "exclude": ["node_modules", "tmp"] } From 6f6777f842c611158927e4d1e7edcb807c7337ae Mon Sep 17 00:00:00 2001 From: Antwi-Antwi Date: Fri, 19 May 2023 14:38:46 +0200 Subject: [PATCH 05/55] =?UTF-8?q?=F0=9F=9A=A7=20(app)=20:=20create=20page?= =?UTF-8?q?=20with=20simple=20html?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- libs/app/core/src/core.routing.ts | 5 ++ libs/app/create/.eslintrc.json | 36 +++++++++++++ libs/app/create/README.md | 7 +++ libs/app/create/jest.config.ts | 22 ++++++++ libs/app/create/project.json | 34 +++++++++++++ libs/app/create/src/create.module.ts | 16 ++++++ libs/app/create/src/create.page.html | 21 ++++++++ libs/app/create/src/create.page.scss | 73 +++++++++++++++++++++++++++ libs/app/create/src/create.page.ts | 35 +++++++++++++ libs/app/create/src/create.routing.ts | 17 +++++++ libs/app/create/src/index.ts | 1 + libs/app/create/src/test-setup.ts | 1 + libs/app/create/tsconfig.json | 29 +++++++++++ libs/app/create/tsconfig.lib.json | 17 +++++++ libs/app/create/tsconfig.spec.json | 16 ++++++ tsconfig.base.json | 3 +- 16 files changed, 332 insertions(+), 1 deletion(-) create mode 100644 libs/app/create/.eslintrc.json create mode 100644 libs/app/create/README.md create mode 100644 libs/app/create/jest.config.ts create mode 100644 libs/app/create/project.json create mode 100644 libs/app/create/src/create.module.ts create mode 100644 libs/app/create/src/create.page.html create mode 100644 libs/app/create/src/create.page.scss create mode 100644 libs/app/create/src/create.page.ts create mode 100644 libs/app/create/src/create.routing.ts create mode 100644 libs/app/create/src/index.ts create mode 100644 libs/app/create/src/test-setup.ts create mode 100644 libs/app/create/tsconfig.json create mode 100644 libs/app/create/tsconfig.lib.json create mode 100644 libs/app/create/tsconfig.spec.json diff --git a/libs/app/core/src/core.routing.ts b/libs/app/core/src/core.routing.ts index 4ef38863..5b3bbe5f 100644 --- a/libs/app/core/src/core.routing.ts +++ b/libs/app/core/src/core.routing.ts @@ -8,6 +8,11 @@ const routes: Routes = [ pathMatch: 'full', component: NxWelcomeComponent, }, + { + path: 'create', + loadChildren: () => + import('@fridge-to-plate/app/create').then((m) => m.CreateModule), + }, ]; diff --git a/libs/app/create/.eslintrc.json b/libs/app/create/.eslintrc.json new file mode 100644 index 00000000..67d253b6 --- /dev/null +++ b/libs/app/create/.eslintrc.json @@ -0,0 +1,36 @@ +{ + "extends": ["../../../.eslintrc.json"], + "ignorePatterns": ["!**/*"], + "overrides": [ + { + "files": ["*.ts"], + "rules": { + "@angular-eslint/directive-selector": [ + "error", + { + "type": "attribute", + "prefix": "fridgeToPlate", + "style": "camelCase" + } + ], + "@angular-eslint/component-selector": [ + "error", + { + "type": "element", + "prefix": "fridge-to-plate", + "style": "kebab-case" + } + ] + }, + "extends": [ + "plugin:@nx/angular", + "plugin:@angular-eslint/template/process-inline-templates" + ] + }, + { + "files": ["*.html"], + "extends": ["plugin:@nx/angular-template"], + "rules": {} + } + ] +} diff --git a/libs/app/create/README.md b/libs/app/create/README.md new file mode 100644 index 00000000..87a8ee53 --- /dev/null +++ b/libs/app/create/README.md @@ -0,0 +1,7 @@ +# app-create + +This library was generated with [Nx](https://nx.dev). + +## Running unit tests + +Run `nx test app-create` to execute the unit tests. diff --git a/libs/app/create/jest.config.ts b/libs/app/create/jest.config.ts new file mode 100644 index 00000000..792b000a --- /dev/null +++ b/libs/app/create/jest.config.ts @@ -0,0 +1,22 @@ +/* eslint-disable */ +export default { + displayName: 'app-create', + preset: '../../../jest.preset.js', + setupFilesAfterEnv: ['/src/test-setup.ts'], + coverageDirectory: '../../../coverage/libs/app/create', + transform: { + '^.+\\.(ts|mjs|js|html)$': [ + 'jest-preset-angular', + { + tsconfig: '/tsconfig.spec.json', + stringifyContentPathRegex: '\\.(html|svg)$', + }, + ], + }, + transformIgnorePatterns: ['node_modules/(?!.*\\.mjs$)'], + snapshotSerializers: [ + 'jest-preset-angular/build/serializers/no-ng-attributes', + 'jest-preset-angular/build/serializers/ng-snapshot', + 'jest-preset-angular/build/serializers/html-comment', + ], +}; diff --git a/libs/app/create/project.json b/libs/app/create/project.json new file mode 100644 index 00000000..08ca46d2 --- /dev/null +++ b/libs/app/create/project.json @@ -0,0 +1,34 @@ +{ + "name": "app-create", + "$schema": "../../../node_modules/nx/schemas/project-schema.json", + "sourceRoot": "libs/app/create/src", + "prefix": "fridge-to-plate", + "tags": [], + "projectType": "library", + "targets": { + "test": { + "executor": "@nx/jest:jest", + "outputs": ["{workspaceRoot}/coverage/{projectRoot}"], + "options": { + "jestConfig": "libs/app/create/jest.config.ts", + "passWithNoTests": true + }, + "configurations": { + "ci": { + "ci": true, + "codeCoverage": true + } + } + }, + "lint": { + "executor": "@nx/linter:eslint", + "outputs": ["{options.outputFile}"], + "options": { + "lintFilePatterns": [ + "libs/app/create/**/*.ts", + "libs/app/create/**/*.html" + ] + } + } + } +} diff --git a/libs/app/create/src/create.module.ts b/libs/app/create/src/create.module.ts new file mode 100644 index 00000000..c22c9569 --- /dev/null +++ b/libs/app/create/src/create.module.ts @@ -0,0 +1,16 @@ +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { FormsModule } from '@angular/forms'; +import { CreateRouting } from './create.routing'; +import { ReactiveFormsModule } from '@angular/forms'; +import { CreatePage } from './create.page'; + +@NgModule({ + imports: [ + CommonModule, + FormsModule, + CreateRouting, + ReactiveFormsModule], + declarations: [CreatePage] +}) +export class CreateModule {} diff --git a/libs/app/create/src/create.page.html b/libs/app/create/src/create.page.html new file mode 100644 index 00000000..6f437f0d --- /dev/null +++ b/libs/app/create/src/create.page.html @@ -0,0 +1,21 @@ +
+

Recipe Ingredients Form

+ +
+ + + + +
+
+ + +
+
+ +

+ + + +
+
\ No newline at end of file diff --git a/libs/app/create/src/create.page.scss b/libs/app/create/src/create.page.scss new file mode 100644 index 00000000..4911d842 --- /dev/null +++ b/libs/app/create/src/create.page.scss @@ -0,0 +1,73 @@ +form { + display: flex; + flex-direction: column; + align-items: center; + + label { + font-weight: bold; + margin-bottom: 10px; + } + + input[type="text"] { + padding: 8px; + border: 1px solid #ccc; + border-radius: 4px; + margin-bottom: 15px; + width: 100%; + box-sizing: border-box; + } + + button { + padding: 10px; + background-color: #4CAF50; + color: white; + border: none; + border-radius: 4px; + cursor: pointer; + margin-bottom: 15px; + &:hover { + background-color: #3e8e41; + } + + } + + button[type="submit"] { + background-color: #008CBA; + &:hover { + background-color: #006080; + } + } + + .ingredients { + display: flex; + flex-direction: column; + align-items: center; + .ingredient { + display: flex; + flex-direction: row; + align-items: center; + margin-bottom: 10px; + + input[type="text"] { + margin-right: 8px; + border: 1px solid #ccc; + border-radius: 4px; + width: 70%; + box-sizing: border-box; + } + + button { + background-color: red; + color: white; + border: none; + border-radius: 4px; + cursor: pointer; + padding: 8px; + + &:hover { + background-color: #ff0000; + } + } + } + } +} \ No newline at end of file diff --git a/libs/app/create/src/create.page.ts b/libs/app/create/src/create.page.ts new file mode 100644 index 00000000..eab2d26d --- /dev/null +++ b/libs/app/create/src/create.page.ts @@ -0,0 +1,35 @@ +import { Component, OnInit } from '@angular/core'; +import { FormBuilder, FormGroup, FormArray, Validators } from '@angular/forms'; + +@Component({ + selector: 'app-create', + templateUrl: './create.page.html', +// styleUrls: ['./create.page.scss'], +}) +export class CreatePage implements OnInit { + ingredientsForm!: FormGroup; + + constructor(private formBuilder: FormBuilder) { } + + ngOnInit() { + this.ingredientsForm = this.formBuilder.group({ + recipeName: ['', Validators.required], + ingredients: this.formBuilder.array([ + this.formBuilder.control('', Validators.required) + ]) + }); + } + + get ingredientControls() { + return (this.ingredientsForm.get('ingredients') as FormArray).controls; + } + + addIngredient() { + this.ingredientControls.push(this.formBuilder.control('')); + } + + submitForm() { + console.log(this.ingredientsForm.value); + // Send form data to server here + } +} \ No newline at end of file diff --git a/libs/app/create/src/create.routing.ts b/libs/app/create/src/create.routing.ts new file mode 100644 index 00000000..43598c08 --- /dev/null +++ b/libs/app/create/src/create.routing.ts @@ -0,0 +1,17 @@ +import { NgModule } from '@angular/core'; +import { RouterModule, Routes } from '@angular/router'; +import { CreatePage } from './create.page'; + +const routes: Routes = [ + { + path: '', + pathMatch: 'full', + component: CreatePage, + }, +]; + +@NgModule({ + imports: [RouterModule.forChild(routes)], + exports: [RouterModule], +}) +export class CreateRouting {} \ No newline at end of file diff --git a/libs/app/create/src/index.ts b/libs/app/create/src/index.ts new file mode 100644 index 00000000..47ab6d6c --- /dev/null +++ b/libs/app/create/src/index.ts @@ -0,0 +1 @@ +export * from './create.module'; diff --git a/libs/app/create/src/test-setup.ts b/libs/app/create/src/test-setup.ts new file mode 100644 index 00000000..1100b3e8 --- /dev/null +++ b/libs/app/create/src/test-setup.ts @@ -0,0 +1 @@ +import 'jest-preset-angular/setup-jest'; diff --git a/libs/app/create/tsconfig.json b/libs/app/create/tsconfig.json new file mode 100644 index 00000000..5cf0a165 --- /dev/null +++ b/libs/app/create/tsconfig.json @@ -0,0 +1,29 @@ +{ + "compilerOptions": { + "target": "es2022", + "useDefineForClassFields": false, + "forceConsistentCasingInFileNames": true, + "strict": true, + "noImplicitOverride": true, + "noPropertyAccessFromIndexSignature": true, + "noImplicitReturns": true, + "noFallthroughCasesInSwitch": true + }, + "files": [], + "include": [], + "references": [ + { + "path": "./tsconfig.lib.json" + }, + { + "path": "./tsconfig.spec.json" + } + ], + "extends": "../../../tsconfig.base.json", + "angularCompilerOptions": { + "enableI18nLegacyMessageIdFormat": false, + "strictInjectionParameters": true, + "strictInputAccessModifiers": true, + "strictTemplates": true + } +} diff --git a/libs/app/create/tsconfig.lib.json b/libs/app/create/tsconfig.lib.json new file mode 100644 index 00000000..9b49be75 --- /dev/null +++ b/libs/app/create/tsconfig.lib.json @@ -0,0 +1,17 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "../../../dist/out-tsc", + "declaration": true, + "declarationMap": true, + "inlineSources": true, + "types": [] + }, + "exclude": [ + "src/**/*.spec.ts", + "src/test-setup.ts", + "jest.config.ts", + "src/**/*.test.ts" + ], + "include": ["src/**/*.ts"] +} diff --git a/libs/app/create/tsconfig.spec.json b/libs/app/create/tsconfig.spec.json new file mode 100644 index 00000000..f858ef78 --- /dev/null +++ b/libs/app/create/tsconfig.spec.json @@ -0,0 +1,16 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "../../../dist/out-tsc", + "module": "commonjs", + "target": "es2016", + "types": ["jest", "node"] + }, + "files": ["src/test-setup.ts"], + "include": [ + "jest.config.ts", + "src/**/*.test.ts", + "src/**/*.spec.ts", + "src/**/*.d.ts" + ] +} diff --git a/tsconfig.base.json b/tsconfig.base.json index 879638a9..ef344733 100644 --- a/tsconfig.base.json +++ b/tsconfig.base.json @@ -15,7 +15,8 @@ "skipDefaultLibCheck": true, "baseUrl": ".", "paths": { - "@fridge-to-plate/app/core": ["libs/app/core/src/index.ts"] + "@fridge-to-plate/app/core": ["libs/app/core/src/index.ts"], + "@fridge-to-plate/app/create": ["libs/app/create/src/index.ts"] } }, "exclude": ["node_modules", "tmp"] From d756209ba71079b6410f79f8cbb141a096549d7e Mon Sep 17 00:00:00 2001 From: Ryan Trickett Date: Sat, 20 May 2023 15:14:17 +0200 Subject: [PATCH 06/55] =?UTF-8?q?=F0=9F=9A=A7=20(app)=20Profile=20Page=20U?= =?UTF-8?q?pdated?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- libs/app/core/src/core.routing.ts | 5 +- .../app/profile/feature/src/profile.module.ts | 4 +- .../app/profile/feature/src/profile.page.html | 117 ++++++++++++++---- 3 files changed, 101 insertions(+), 25 deletions(-) diff --git a/libs/app/core/src/core.routing.ts b/libs/app/core/src/core.routing.ts index 4ef38863..35364ad0 100644 --- a/libs/app/core/src/core.routing.ts +++ b/libs/app/core/src/core.routing.ts @@ -8,7 +8,10 @@ const routes: Routes = [ pathMatch: 'full', component: NxWelcomeComponent, }, - + { + path: 'profile', + loadChildren: () => import('@fridge-to-plate/app/profile/feature').then((m) => m.ProfileModule), + }, ]; @NgModule({ diff --git a/libs/app/profile/feature/src/profile.module.ts b/libs/app/profile/feature/src/profile.module.ts index 87d1184a..ac430918 100644 --- a/libs/app/profile/feature/src/profile.module.ts +++ b/libs/app/profile/feature/src/profile.module.ts @@ -1,5 +1,5 @@ import { NgModule } from '@angular/core'; -// import { IonicModule } from '@ionic/angular'; +import { IonicModule } from '@ionic/angular'; import { CommonModule } from '@angular/common'; import { ProfilePage } from './profile.page'; import { ProfileRouting } from './profile.routing'; @@ -8,7 +8,7 @@ import { ProfileRouting } from './profile.routing'; imports: [ CommonModule, ProfileRouting, - // IonicModule, + IonicModule, ], declarations: [ProfilePage], exports: [ProfilePage], diff --git a/libs/app/profile/feature/src/profile.page.html b/libs/app/profile/feature/src/profile.page.html index c61f859f..065f85bb 100644 --- a/libs/app/profile/feature/src/profile.page.html +++ b/libs/app/profile/feature/src/profile.page.html @@ -1,23 +1,96 @@ -
-
- + +
+
+ Profile Pic +
+ +
+

Profile Name

+

Email

+
+ + +
+ + + +
+
+
+ +
+

Shrimp Pasta

+

Difficulty: Medium

+ Seafood + Pasta +
+
+
+ +
+

Shrimp Pasta

+

Difficulty: Medium

+ Seafood + Pasta +
+
+
+ +
+

Shrimp Pasta

+

Difficulty: Medium

+ Seafood + Pasta +
+
+
+ +
+

Shrimp Pasta

+

Difficulty: Medium

+ Seafood + Pasta +
+
+
-
\ No newline at end of file + \ No newline at end of file From 47d19da51dc5c177b7d478f42e6b8ad87bb81764 Mon Sep 17 00:00:00 2001 From: Antwi-Antwi Date: Sat, 20 May 2023 19:30:01 +0200 Subject: [PATCH 07/55] =?UTF-8?q?=F0=9F=9A=A7=20(app)=20Create=20Page=20Up?= =?UTF-8?q?dated?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- libs/app/create/src/create.page.html | 101 ++++++++++++++++++++++----- libs/app/create/src/create.page.scss | 73 ------------------- libs/app/create/src/create.page.ts | 97 ++++++++++++++++++++----- 3 files changed, 160 insertions(+), 111 deletions(-) diff --git a/libs/app/create/src/create.page.html b/libs/app/create/src/create.page.html index 6f437f0d..722e8260 100644 --- a/libs/app/create/src/create.page.html +++ b/libs/app/create/src/create.page.html @@ -1,21 +1,84 @@ -
-

Recipe Ingredients Form

- -
- - - - -
-
- - + + + + +
+ +
+
+
+ + +
+ +
+ + +
+ +
+
+ + +
+
+
+
+ +
- -

- - - - -
\ No newline at end of file +
+
+ +
+
+ + +
+
+
+
+ + +
+
+
+
+ +
+ + +
+ +
+ + +
+
+ +
+ + + + +
+
+ +
+ +
+ + + \ No newline at end of file diff --git a/libs/app/create/src/create.page.scss b/libs/app/create/src/create.page.scss index 4911d842..e69de29b 100644 --- a/libs/app/create/src/create.page.scss +++ b/libs/app/create/src/create.page.scss @@ -1,73 +0,0 @@ -form { - display: flex; - flex-direction: column; - align-items: center; - - label { - font-weight: bold; - margin-bottom: 10px; - } - - input[type="text"] { - padding: 8px; - border: 1px solid #ccc; - border-radius: 4px; - margin-bottom: 15px; - width: 100%; - box-sizing: border-box; - } - - button { - padding: 10px; - background-color: #4CAF50; - color: white; - border: none; - border-radius: 4px; - cursor: pointer; - margin-bottom: 15px; - &:hover { - background-color: #3e8e41; - } - - } - - button[type="submit"] { - background-color: #008CBA; - &:hover { - background-color: #006080; - } - } - - .ingredients { - display: flex; - flex-direction: column; - align-items: center; - .ingredient { - display: flex; - flex-direction: row; - align-items: center; - margin-bottom: 10px; - - input[type="text"] { - margin-right: 8px; - border: 1px solid #ccc; - border-radius: 4px; - width: 70%; - box-sizing: border-box; - } - - button { - background-color: red; - color: white; - border: none; - border-radius: 4px; - cursor: pointer; - padding: 8px; - - &:hover { - background-color: #ff0000; - } - } - } - } -} \ No newline at end of file diff --git a/libs/app/create/src/create.page.ts b/libs/app/create/src/create.page.ts index eab2d26d..a3568671 100644 --- a/libs/app/create/src/create.page.ts +++ b/libs/app/create/src/create.page.ts @@ -1,35 +1,94 @@ -import { Component, OnInit } from '@angular/core'; -import { FormBuilder, FormGroup, FormArray, Validators } from '@angular/forms'; +import { Component } from '@angular/core'; +import { FormArray, FormBuilder, FormGroup, Validators } from '@angular/forms'; @Component({ selector: 'app-create', templateUrl: './create.page.html', -// styleUrls: ['./create.page.scss'], + styleUrls: ['./create.page.scss'], }) -export class CreatePage implements OnInit { - ingredientsForm!: FormGroup; +export class CreatePage { - constructor(private formBuilder: FormBuilder) { } + recipeForm!: FormGroup; + imageUrl: string = "https://img.icons8.com/ios-filled/50/cooking-book--v1.png"; - ngOnInit() { - this.ingredientsForm = this.formBuilder.group({ - recipeName: ['', Validators.required], - ingredients: this.formBuilder.array([ - this.formBuilder.control('', Validators.required) - ]) - }); + constructor(private fb: FormBuilder) { + this.createForm(); } + createForm() { + this.recipeForm = this.fb.group({ + name: ['', Validators.required], + description: ['', Validators.required], + servings: ['', Validators.required], + preparationTime: ['', Validators.required], + ingredients: this.fb.array([ + this.fb.control('', Validators.required) + ]), + instructions: this.fb.array([ + this.fb.control('', Validators.required) + ]), + dietaryPlans: this.fb.array([]) + + }); + } get ingredientControls() { - return (this.ingredientsForm.get('ingredients') as FormArray).controls; + return (this.recipeForm.get('ingredients') as FormArray).controls; } addIngredient() { - this.ingredientControls.push(this.formBuilder.control('')); + this.ingredientControls.push(this.fb.control('')); + } + + get instructionControls() { + return (this.recipeForm.get('instructions') as FormArray).controls; + } + + addInstruction() { + this.instructionControls.push(this.fb.control('')) + } + + removeIngredient(index: number) { + this.ingredientControls.splice(index, 1); + } + + removeInstruction(index: number) { + this.instructionControls.splice(index, 1); } - submitForm() { - console.log(this.ingredientsForm.value); - // Send form data to server here - } + toggleDietaryPlan(plan: string): void { + const dietaryPlans = this.recipeForm.get('dietaryPlans') as FormArray; + + if (dietaryPlans != null && this.isDietaryPlanSelected(plan)) { + // Remove the dietary plan if it's already selected + dietaryPlans.removeAt(dietaryPlans.value.indexOf(plan)); + } else { + // Add the dietary plan if it's not selected + dietaryPlans.push(this.fb.control(plan)); + } + } + + getDietaryPlanButtonClasses(plan: string): string { + return this.isDietaryPlanSelected(plan) ? 'bg-gray-600 text-white' : 'bg-gray-300 text-gray-700'; + } + + + isDietaryPlanSelected(plan: string): boolean { + + const dietaryPlans = this.recipeForm.get('dietaryPlans')?.value; + return dietaryPlans.includes(plan); + } + + + onSubmit() { + console.log(this.recipeForm.value); + + alert(JSON.stringify(this.recipeForm.value)); + } + + handleImageUpload(event: any) { + // Retrieve the selected or uploaded image file + const file: File = event.target.files[0]; + this.imageUrl = file.name + } + } \ No newline at end of file From c2918bb226e52b53b6ca50e006bf9775ce36b646 Mon Sep 17 00:00:00 2001 From: kphutiyagae Date: Sat, 20 May 2023 19:44:47 +0200 Subject: [PATCH 08/55] feat(none): :sparkles: Added recipe recommendation library. * Generated recipe recommendation library with nx. --- libs/app/recipe-recommendation/.eslintrc.json | 36 +++++++++++++++++++ libs/app/recipe-recommendation/README.md | 7 ++++ libs/app/recipe-recommendation/jest.config.ts | 22 ++++++++++++ libs/app/recipe-recommendation/project.json | 34 ++++++++++++++++++ libs/app/recipe-recommendation/src/index.ts | 1 + .../lib/app-recipe-recommendation.module.ts | 7 ++++ .../recipe-recommendation/src/test-setup.ts | 1 + libs/app/recipe-recommendation/tsconfig.json | 29 +++++++++++++++ .../recipe-recommendation/tsconfig.lib.json | 17 +++++++++ .../recipe-recommendation/tsconfig.spec.json | 16 +++++++++ tsconfig.base.json | 5 ++- 11 files changed, 174 insertions(+), 1 deletion(-) create mode 100644 libs/app/recipe-recommendation/.eslintrc.json create mode 100644 libs/app/recipe-recommendation/README.md create mode 100644 libs/app/recipe-recommendation/jest.config.ts create mode 100644 libs/app/recipe-recommendation/project.json create mode 100644 libs/app/recipe-recommendation/src/index.ts create mode 100644 libs/app/recipe-recommendation/src/lib/app-recipe-recommendation.module.ts create mode 100644 libs/app/recipe-recommendation/src/test-setup.ts create mode 100644 libs/app/recipe-recommendation/tsconfig.json create mode 100644 libs/app/recipe-recommendation/tsconfig.lib.json create mode 100644 libs/app/recipe-recommendation/tsconfig.spec.json diff --git a/libs/app/recipe-recommendation/.eslintrc.json b/libs/app/recipe-recommendation/.eslintrc.json new file mode 100644 index 00000000..67d253b6 --- /dev/null +++ b/libs/app/recipe-recommendation/.eslintrc.json @@ -0,0 +1,36 @@ +{ + "extends": ["../../../.eslintrc.json"], + "ignorePatterns": ["!**/*"], + "overrides": [ + { + "files": ["*.ts"], + "rules": { + "@angular-eslint/directive-selector": [ + "error", + { + "type": "attribute", + "prefix": "fridgeToPlate", + "style": "camelCase" + } + ], + "@angular-eslint/component-selector": [ + "error", + { + "type": "element", + "prefix": "fridge-to-plate", + "style": "kebab-case" + } + ] + }, + "extends": [ + "plugin:@nx/angular", + "plugin:@angular-eslint/template/process-inline-templates" + ] + }, + { + "files": ["*.html"], + "extends": ["plugin:@nx/angular-template"], + "rules": {} + } + ] +} diff --git a/libs/app/recipe-recommendation/README.md b/libs/app/recipe-recommendation/README.md new file mode 100644 index 00000000..4b7ad2a2 --- /dev/null +++ b/libs/app/recipe-recommendation/README.md @@ -0,0 +1,7 @@ +# app-recipe-recommendation + +This library was generated with [Nx](https://nx.dev). + +## Running unit tests + +Run `nx test app-recipe-recommendation` to execute the unit tests. diff --git a/libs/app/recipe-recommendation/jest.config.ts b/libs/app/recipe-recommendation/jest.config.ts new file mode 100644 index 00000000..efc6c50a --- /dev/null +++ b/libs/app/recipe-recommendation/jest.config.ts @@ -0,0 +1,22 @@ +/* eslint-disable */ +export default { + displayName: 'app-recipe-recommendation', + preset: '../../../jest.preset.js', + setupFilesAfterEnv: ['/src/test-setup.ts'], + coverageDirectory: '../../../coverage/libs/app/recipe-recommendation', + transform: { + '^.+\\.(ts|mjs|js|html)$': [ + 'jest-preset-angular', + { + tsconfig: '/tsconfig.spec.json', + stringifyContentPathRegex: '\\.(html|svg)$', + }, + ], + }, + transformIgnorePatterns: ['node_modules/(?!.*\\.mjs$)'], + snapshotSerializers: [ + 'jest-preset-angular/build/serializers/no-ng-attributes', + 'jest-preset-angular/build/serializers/ng-snapshot', + 'jest-preset-angular/build/serializers/html-comment', + ], +}; diff --git a/libs/app/recipe-recommendation/project.json b/libs/app/recipe-recommendation/project.json new file mode 100644 index 00000000..834ab081 --- /dev/null +++ b/libs/app/recipe-recommendation/project.json @@ -0,0 +1,34 @@ +{ + "name": "app-recipe-recommendation", + "$schema": "../../../node_modules/nx/schemas/project-schema.json", + "sourceRoot": "libs/app/recipe-recommendation/src", + "prefix": "fridge-to-plate", + "tags": [], + "projectType": "library", + "targets": { + "test": { + "executor": "@nx/jest:jest", + "outputs": ["{workspaceRoot}/coverage/{projectRoot}"], + "options": { + "jestConfig": "libs/app/recipe-recommendation/jest.config.ts", + "passWithNoTests": true + }, + "configurations": { + "ci": { + "ci": true, + "codeCoverage": true + } + } + }, + "lint": { + "executor": "@nx/linter:eslint", + "outputs": ["{options.outputFile}"], + "options": { + "lintFilePatterns": [ + "libs/app/recipe-recommendation/**/*.ts", + "libs/app/recipe-recommendation/**/*.html" + ] + } + } + } +} diff --git a/libs/app/recipe-recommendation/src/index.ts b/libs/app/recipe-recommendation/src/index.ts new file mode 100644 index 00000000..f2977400 --- /dev/null +++ b/libs/app/recipe-recommendation/src/index.ts @@ -0,0 +1 @@ +export * from './lib/app-recipe-recommendation.module'; diff --git a/libs/app/recipe-recommendation/src/lib/app-recipe-recommendation.module.ts b/libs/app/recipe-recommendation/src/lib/app-recipe-recommendation.module.ts new file mode 100644 index 00000000..cbc1cec7 --- /dev/null +++ b/libs/app/recipe-recommendation/src/lib/app-recipe-recommendation.module.ts @@ -0,0 +1,7 @@ +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; + +@NgModule({ + imports: [CommonModule], +}) +export class AppRecipeRecommendationModule {} diff --git a/libs/app/recipe-recommendation/src/test-setup.ts b/libs/app/recipe-recommendation/src/test-setup.ts new file mode 100644 index 00000000..1100b3e8 --- /dev/null +++ b/libs/app/recipe-recommendation/src/test-setup.ts @@ -0,0 +1 @@ +import 'jest-preset-angular/setup-jest'; diff --git a/libs/app/recipe-recommendation/tsconfig.json b/libs/app/recipe-recommendation/tsconfig.json new file mode 100644 index 00000000..5cf0a165 --- /dev/null +++ b/libs/app/recipe-recommendation/tsconfig.json @@ -0,0 +1,29 @@ +{ + "compilerOptions": { + "target": "es2022", + "useDefineForClassFields": false, + "forceConsistentCasingInFileNames": true, + "strict": true, + "noImplicitOverride": true, + "noPropertyAccessFromIndexSignature": true, + "noImplicitReturns": true, + "noFallthroughCasesInSwitch": true + }, + "files": [], + "include": [], + "references": [ + { + "path": "./tsconfig.lib.json" + }, + { + "path": "./tsconfig.spec.json" + } + ], + "extends": "../../../tsconfig.base.json", + "angularCompilerOptions": { + "enableI18nLegacyMessageIdFormat": false, + "strictInjectionParameters": true, + "strictInputAccessModifiers": true, + "strictTemplates": true + } +} diff --git a/libs/app/recipe-recommendation/tsconfig.lib.json b/libs/app/recipe-recommendation/tsconfig.lib.json new file mode 100644 index 00000000..9b49be75 --- /dev/null +++ b/libs/app/recipe-recommendation/tsconfig.lib.json @@ -0,0 +1,17 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "../../../dist/out-tsc", + "declaration": true, + "declarationMap": true, + "inlineSources": true, + "types": [] + }, + "exclude": [ + "src/**/*.spec.ts", + "src/test-setup.ts", + "jest.config.ts", + "src/**/*.test.ts" + ], + "include": ["src/**/*.ts"] +} diff --git a/libs/app/recipe-recommendation/tsconfig.spec.json b/libs/app/recipe-recommendation/tsconfig.spec.json new file mode 100644 index 00000000..f858ef78 --- /dev/null +++ b/libs/app/recipe-recommendation/tsconfig.spec.json @@ -0,0 +1,16 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "../../../dist/out-tsc", + "module": "commonjs", + "target": "es2016", + "types": ["jest", "node"] + }, + "files": ["src/test-setup.ts"], + "include": [ + "jest.config.ts", + "src/**/*.test.ts", + "src/**/*.spec.ts", + "src/**/*.d.ts" + ] +} diff --git a/tsconfig.base.json b/tsconfig.base.json index 879638a9..8def0760 100644 --- a/tsconfig.base.json +++ b/tsconfig.base.json @@ -15,7 +15,10 @@ "skipDefaultLibCheck": true, "baseUrl": ".", "paths": { - "@fridge-to-plate/app/core": ["libs/app/core/src/index.ts"] + "@fridge-to-plate/app/core": ["libs/app/core/src/index.ts"], + "@fridge-to-plate/app/recipe-recommendation": [ + "libs/app/recipe-recommendation/src/index.ts" + ] } }, "exclude": ["node_modules", "tmp"] From ddd8152893d0198e81297db4dc68dfde0b2e3133 Mon Sep 17 00:00:00 2001 From: kphutiyagae Date: Sat, 20 May 2023 19:52:32 +0200 Subject: [PATCH 09/55] feat(none): :sparkles: removed lib folder in recipe recommendation library. * Modified structure of lib folder. --- .../src/{lib => }/app-recipe-recommendation.module.ts | 0 libs/app/recipe-recommendation/src/index.ts | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) rename libs/app/recipe-recommendation/src/{lib => }/app-recipe-recommendation.module.ts (100%) diff --git a/libs/app/recipe-recommendation/src/lib/app-recipe-recommendation.module.ts b/libs/app/recipe-recommendation/src/app-recipe-recommendation.module.ts similarity index 100% rename from libs/app/recipe-recommendation/src/lib/app-recipe-recommendation.module.ts rename to libs/app/recipe-recommendation/src/app-recipe-recommendation.module.ts diff --git a/libs/app/recipe-recommendation/src/index.ts b/libs/app/recipe-recommendation/src/index.ts index f2977400..ced8abb7 100644 --- a/libs/app/recipe-recommendation/src/index.ts +++ b/libs/app/recipe-recommendation/src/index.ts @@ -1 +1 @@ -export * from './lib/app-recipe-recommendation.module'; +export * from './app-recipe-recommendation.module'; From 077d8ffcd38aa9e36cdbe0e61e948f81b526e172 Mon Sep 17 00:00:00 2001 From: Azola Date: Sat, 20 May 2023 20:52:46 +0200 Subject: [PATCH 10/55] =?UTF-8?q?=F0=9F=9A=A7=20(App)=20Added=20Packages?= =?UTF-8?q?=20Needed=20For=20Login?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package-lock.json | 41 ++++++++++++++++++++++++++++++++++++++++- 1 file changed, 40 insertions(+), 1 deletion(-) diff --git a/package-lock.json b/package-lock.json index 4bc4c29e..8ca639a6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -3197,7 +3197,46 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", - "dev": true + "devOptional": true + }, + "node_modules/@ionic/angular": { + "version": "7.0.7", + "resolved": "https://registry.npmjs.org/@ionic/angular/-/angular-7.0.7.tgz", + "integrity": "sha512-dbBhxAt2BDfKcZKVUga0SQM2BcGEV5kGvt342lv3ziCkpyxQqvsmXaH3L4sy8n0/6pyji8jIvC0RM40ZMODvGg==", + "dependencies": { + "@ionic/core": "7.0.7", + "ionicons": "^7.0.0", + "jsonc-parser": "^3.0.0", + "tslib": "^2.3.0" + }, + "peerDependencies": { + "@angular/core": ">=14.0.0", + "@angular/forms": ">=14.0.0", + "@angular/router": ">=14.0.0", + "rxjs": ">=7.5.0", + "zone.js": ">=0.11.0" + } + }, + "node_modules/@ionic/angular-toolkit": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/@ionic/angular-toolkit/-/angular-toolkit-9.0.0.tgz", + "integrity": "sha512-Rh8z+XGQiyEzJ2nMKTAa3nmejgabxY6f/2q+9Jm/B/VnXjpyeSe8bgP008c0EZYBvrKs7MjP1ZrNi+4FM0W3fg==", + "dev": true, + "dependencies": { + "@angular-devkit/core": "^15.0.0", + "@angular-devkit/schematics": "^15.0.0", + "@schematics/angular": "^15.0.0" + } + }, + "node_modules/@ionic/core": { + "version": "7.0.7", + "resolved": "https://registry.npmjs.org/@ionic/core/-/core-7.0.7.tgz", + "integrity": "sha512-3ps2j3Utx49CVazKHHWsPS8QBZYujnh6/dwz1ovHIDTq7HXKzUNbMtHm0UAZC2YkW5rE/Pm41CIBMwfFV0ImKg==", + "dependencies": { + "@stencil/core": "^3.2.2", + "ionicons": "^7.1.0", + "tslib": "^2.1.0" + } }, "node_modules/@istanbuljs/load-nyc-config": { "version": "1.1.0", From e9b5208f4fb1800253d9770a4fe4d7dad76d6149 Mon Sep 17 00:00:00 2001 From: Azola Date: Sun, 21 May 2023 09:28:50 +0200 Subject: [PATCH 11/55] =?UTF-8?q?=F0=9F=9A=A7=20(app)=20Login=20Page=20Des?= =?UTF-8?q?ign?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- libs/app/core/src/core.routing.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/libs/app/core/src/core.routing.ts b/libs/app/core/src/core.routing.ts index 4ef38863..e41653c5 100644 --- a/libs/app/core/src/core.routing.ts +++ b/libs/app/core/src/core.routing.ts @@ -8,6 +8,10 @@ const routes: Routes = [ pathMatch: 'full', component: NxWelcomeComponent, }, + { + path: 'login', + loadChildren: () => import('@fri').then((m) => m.LoginModule), + }, ]; From 8a0925babd0ea7b82d3383f8dbd8682061fc8f4c Mon Sep 17 00:00:00 2001 From: Azola Date: Sun, 21 May 2023 09:29:38 +0200 Subject: [PATCH 12/55] =?UTF-8?q?=F0=9F=9A=A7(app)=20Login=20Page=20HTML?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- libs/app/login/feature/src/login.page.html | 19 ++++++-- libs/app/login/feature/src/login.page.scss | 56 ++++++++++++++++++++++ 2 files changed, 72 insertions(+), 3 deletions(-) diff --git a/libs/app/login/feature/src/login.page.html b/libs/app/login/feature/src/login.page.html index 1a2569ed..70696d0f 100644 --- a/libs/app/login/feature/src/login.page.html +++ b/libs/app/login/feature/src/login.page.html @@ -3,9 +3,22 @@ Profile Avatar -
-

Login

-

Welcome to Fridge To Plate

+
+

Hey,
Welcome Back.

+
+

Do not have an account? Create

+
+
+ + +
+
+

Forgot Password? Reset

+
+ +
diff --git a/libs/app/login/feature/src/login.page.scss b/libs/app/login/feature/src/login.page.scss index e69de29b..cbe9bb53 100644 --- a/libs/app/login/feature/src/login.page.scss +++ b/libs/app/login/feature/src/login.page.scss @@ -0,0 +1,56 @@ +.container { + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + height: 100vh; + } + + .header { + font-size: 28px; + text-align: center; + margin-bottom: 20px; + } + + .text { + text-align: center; + margin-bottom: 10px; + } + + .input-container { + display: flex; + flex-direction: column; + margin-bottom: 20px; + width: 100%; + } + + input[type="text"], + input[type="password"] { + padding: 10px; + margin-bottom: 10px; + border: 1px solid #ccc; + border-radius: 4px; + font-size: 16px; + width: 100%; + } + + .login-button { + background-color: #C35214; + color: #fff; + padding: 10px 20px; + border: none; + border-radius: 4px; + font-size: 18px; + cursor: pointer; + width: 100%; + margin-bottom: 10px; + } + + .text a { + color: #999; + text-decoration: none; + } + + .text a:hover { + text-decoration: underline; + } \ No newline at end of file From de208bf8ccbd4e91043914cd16a1abb41bd3dbf8 Mon Sep 17 00:00:00 2001 From: kphutiyagae Date: Sun, 21 May 2023 19:21:42 +0200 Subject: [PATCH 13/55] feat(none): :sparkles: Added recipe recommendation page. --- apps/app/src/main.ts | 1 - libs/app/core/src/core.routing.ts | 6 +- .../src/app-recipe-recommendation.module.ts | 2 + .../recipe-recommendation-page.html | 3 + .../recipe-recommendation-page.scss | 3 + .../recipe-recommendation-page.spec.ts | 0 .../recipe-recommendation-page.ts | 10 ++ package-lock.json | 102 +++++++++++++++++- 8 files changed, 120 insertions(+), 7 deletions(-) create mode 100644 libs/app/recipe-recommendation/src/components/RecipeRecommendationPage/recipe-recommendation-page.html create mode 100644 libs/app/recipe-recommendation/src/components/RecipeRecommendationPage/recipe-recommendation-page.scss create mode 100644 libs/app/recipe-recommendation/src/components/RecipeRecommendationPage/recipe-recommendation-page.spec.ts create mode 100644 libs/app/recipe-recommendation/src/components/RecipeRecommendationPage/recipe-recommendation-page.ts diff --git a/apps/app/src/main.ts b/apps/app/src/main.ts index f968a0a5..f702e320 100644 --- a/apps/app/src/main.ts +++ b/apps/app/src/main.ts @@ -1,6 +1,5 @@ import { platformBrowserDynamic } from "@angular/platform-browser-dynamic"; import { CoreModule } from '@fridge-to-plate/app/core'; - platformBrowserDynamic() .bootstrapModule(CoreModule) .catch((err) => console.error(err)); diff --git a/libs/app/core/src/core.routing.ts b/libs/app/core/src/core.routing.ts index 4ef38863..41189bfd 100644 --- a/libs/app/core/src/core.routing.ts +++ b/libs/app/core/src/core.routing.ts @@ -1,14 +1,16 @@ import { NgModule } from '@angular/core'; import { PreloadAllModules, RouterModule, Routes } from '@angular/router'; import { NxWelcomeComponent } from './nx-welcome.component'; +import { + RecipeRecommendationPage +} from "../../recipe-recommendation/src/components/RecipeRecommendationPage/recipe-recommendation-page"; const routes: Routes = [ { path: '', pathMatch: 'full', component: NxWelcomeComponent, - }, - + }, { path: 'recommendations', component: RecipeRecommendationPage} ]; @NgModule({ diff --git a/libs/app/recipe-recommendation/src/app-recipe-recommendation.module.ts b/libs/app/recipe-recommendation/src/app-recipe-recommendation.module.ts index cbc1cec7..9e2f163c 100644 --- a/libs/app/recipe-recommendation/src/app-recipe-recommendation.module.ts +++ b/libs/app/recipe-recommendation/src/app-recipe-recommendation.module.ts @@ -1,7 +1,9 @@ import { NgModule } from '@angular/core'; import { CommonModule } from '@angular/common'; +import { RecipeRecommendationPage } from "./components/RecipeRecommendationPage/recipe-recommendation-page"; @NgModule({ + declarations: [RecipeRecommendationPage], imports: [CommonModule], }) export class AppRecipeRecommendationModule {} diff --git a/libs/app/recipe-recommendation/src/components/RecipeRecommendationPage/recipe-recommendation-page.html b/libs/app/recipe-recommendation/src/components/RecipeRecommendationPage/recipe-recommendation-page.html new file mode 100644 index 00000000..ea6c8e10 --- /dev/null +++ b/libs/app/recipe-recommendation/src/components/RecipeRecommendationPage/recipe-recommendation-page.html @@ -0,0 +1,3 @@ +
+

Recipe recommendation works

+
diff --git a/libs/app/recipe-recommendation/src/components/RecipeRecommendationPage/recipe-recommendation-page.scss b/libs/app/recipe-recommendation/src/components/RecipeRecommendationPage/recipe-recommendation-page.scss new file mode 100644 index 00000000..b00ff501 --- /dev/null +++ b/libs/app/recipe-recommendation/src/components/RecipeRecommendationPage/recipe-recommendation-page.scss @@ -0,0 +1,3 @@ +.page-container { + background-color: aqua; +} diff --git a/libs/app/recipe-recommendation/src/components/RecipeRecommendationPage/recipe-recommendation-page.spec.ts b/libs/app/recipe-recommendation/src/components/RecipeRecommendationPage/recipe-recommendation-page.spec.ts new file mode 100644 index 00000000..e69de29b diff --git a/libs/app/recipe-recommendation/src/components/RecipeRecommendationPage/recipe-recommendation-page.ts b/libs/app/recipe-recommendation/src/components/RecipeRecommendationPage/recipe-recommendation-page.ts new file mode 100644 index 00000000..ba92c2d4 --- /dev/null +++ b/libs/app/recipe-recommendation/src/components/RecipeRecommendationPage/recipe-recommendation-page.ts @@ -0,0 +1,10 @@ +import { Component } from '@angular/core'; + +@Component({ + selector: 'app-recipe-recommendation', + templateUrl: './recipe-recommendation-page.html', + styleUrls: ['./recipe-recommendation-page.scss'] +}) +export class RecipeRecommendationPage { + +} diff --git a/package-lock.json b/package-lock.json index eb5d7ba3..0baa0b85 100644 --- a/package-lock.json +++ b/package-lock.json @@ -463,11 +463,11 @@ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" }, "node_modules/@angular-devkit/schematics": { - "version": "15.2.7", - "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-15.2.7.tgz", - "integrity": "sha512-umQ+SgEMjqPHimHOBVhDn5NNGVoMLKQkI2fwbENXV72BqQqdh1K3D4QSNlUXitTaH0NEZZaAawE1vZHzzeAoNA==", + "version": "15.2.8", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-15.2.8.tgz", + "integrity": "sha512-w6EUGC96kVsH9f8sEzajzbONMawezyVBiSo+JYp5r25rQArAz/a+KZntbuETWHQ0rQOEsKmUNKxwmr11BaptSQ==", "dependencies": { - "@angular-devkit/core": "15.2.7", + "@angular-devkit/core": "15.2.8", "jsonc-parser": "3.2.0", "magic-string": "0.29.0", "ora": "5.4.1", @@ -479,6 +479,31 @@ "yarn": ">= 1.13.0" } }, + "node_modules/@angular-devkit/schematics/node_modules/@angular-devkit/core": { + "version": "15.2.8", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-15.2.8.tgz", + "integrity": "sha512-Lo4XrbDMtXarKnMrFgWLmQdSX+3QPNAg4otG8cmp/U4jJyjV4dAYKEAsb1sCNGUSM4h4v09EQU/5ugVjDU29lQ==", + "dependencies": { + "ajv": "8.12.0", + "ajv-formats": "2.1.1", + "jsonc-parser": "3.2.0", + "rxjs": "6.6.7", + "source-map": "0.7.4" + }, + "engines": { + "node": "^14.20.0 || ^16.13.0 || >=18.10.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + }, + "peerDependencies": { + "chokidar": "^3.5.2" + }, + "peerDependenciesMeta": { + "chokidar": { + "optional": true + } + } + }, "node_modules/@angular-devkit/schematics/node_modules/rxjs": { "version": "6.6.7", "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", @@ -609,6 +634,24 @@ "yarn": ">= 1.13.0" } }, + "node_modules/@angular/cli/node_modules/@angular-devkit/schematics": { + "version": "15.2.7", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-15.2.7.tgz", + "integrity": "sha512-umQ+SgEMjqPHimHOBVhDn5NNGVoMLKQkI2fwbENXV72BqQqdh1K3D4QSNlUXitTaH0NEZZaAawE1vZHzzeAoNA==", + "dev": true, + "dependencies": { + "@angular-devkit/core": "15.2.7", + "jsonc-parser": "3.2.0", + "magic-string": "0.29.0", + "ora": "5.4.1", + "rxjs": "6.6.7" + }, + "engines": { + "node": "^14.20.0 || ^16.13.0 || >=18.10.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + } + }, "node_modules/@angular/cli/node_modules/cliui": { "version": "8.0.1", "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", @@ -640,6 +683,18 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/@angular/cli/node_modules/rxjs": { + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "dev": true, + "dependencies": { + "tslib": "^1.9.0" + }, + "engines": { + "npm": ">=2.0.0" + } + }, "node_modules/@angular/cli/node_modules/semver": { "version": "7.3.8", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", @@ -655,6 +710,12 @@ "node": ">=10" } }, + "node_modules/@angular/cli/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, "node_modules/@angular/cli/node_modules/yargs": { "version": "17.6.2", "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.6.2.tgz", @@ -6174,6 +6235,39 @@ "yarn": ">= 1.13.0" } }, + "node_modules/@schematics/angular/node_modules/@angular-devkit/schematics": { + "version": "15.2.7", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-15.2.7.tgz", + "integrity": "sha512-umQ+SgEMjqPHimHOBVhDn5NNGVoMLKQkI2fwbENXV72BqQqdh1K3D4QSNlUXitTaH0NEZZaAawE1vZHzzeAoNA==", + "dependencies": { + "@angular-devkit/core": "15.2.7", + "jsonc-parser": "3.2.0", + "magic-string": "0.29.0", + "ora": "5.4.1", + "rxjs": "6.6.7" + }, + "engines": { + "node": "^14.20.0 || ^16.13.0 || >=18.10.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + } + }, + "node_modules/@schematics/angular/node_modules/rxjs": { + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "dependencies": { + "tslib": "^1.9.0" + }, + "engines": { + "npm": ">=2.0.0" + } + }, + "node_modules/@schematics/angular/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + }, "node_modules/@sigstore/protobuf-specs": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/@sigstore/protobuf-specs/-/protobuf-specs-0.1.0.tgz", From 17aacc664b9a71ecd2757aa25cc03940f674a2e3 Mon Sep 17 00:00:00 2001 From: kphutiyagae Date: Sun, 21 May 2023 21:36:07 +0200 Subject: [PATCH 14/55] feat(none): :sparkles: Added recipe recommendation routing module --- libs/app/core/src/core.routing.ts | 5 +---- libs/app/core/src/nx-welcome.component.ts | 2 +- .../src/app-recipe-recommendation.module.ts | 3 ++- .../recipe-recommendation-page.html | 2 +- .../recipe-recommendation-page.scss | 7 ++++++- .../src/recommendation.routing.ts | 19 +++++++++++++++++++ 6 files changed, 30 insertions(+), 8 deletions(-) create mode 100644 libs/app/recipe-recommendation/src/recommendation.routing.ts diff --git a/libs/app/core/src/core.routing.ts b/libs/app/core/src/core.routing.ts index 41189bfd..a5e2fec3 100644 --- a/libs/app/core/src/core.routing.ts +++ b/libs/app/core/src/core.routing.ts @@ -1,16 +1,13 @@ import { NgModule } from '@angular/core'; import { PreloadAllModules, RouterModule, Routes } from '@angular/router'; import { NxWelcomeComponent } from './nx-welcome.component'; -import { - RecipeRecommendationPage -} from "../../recipe-recommendation/src/components/RecipeRecommendationPage/recipe-recommendation-page"; const routes: Routes = [ { path: '', pathMatch: 'full', component: NxWelcomeComponent, - }, { path: 'recommendations', component: RecipeRecommendationPage} + }, { path: 'recommendations', loadChildren: () => import('@fridge-to-plate/app/recipe-recommendation').then( (m) => m.AppRecipeRecommendationModule)} ]; @NgModule({ diff --git a/libs/app/core/src/nx-welcome.component.ts b/libs/app/core/src/nx-welcome.component.ts index 33a26424..c913c836 100644 --- a/libs/app/core/src/nx-welcome.component.ts +++ b/libs/app/core/src/nx-welcome.component.ts @@ -9,7 +9,7 @@ import { Component, ViewEncapsulation } from "@angular/core"; color: #ff69b4; text-align: center; } - + h2 { font-size: 24px; font-weight: normal; diff --git a/libs/app/recipe-recommendation/src/app-recipe-recommendation.module.ts b/libs/app/recipe-recommendation/src/app-recipe-recommendation.module.ts index 9e2f163c..54411a15 100644 --- a/libs/app/recipe-recommendation/src/app-recipe-recommendation.module.ts +++ b/libs/app/recipe-recommendation/src/app-recipe-recommendation.module.ts @@ -1,9 +1,10 @@ import { NgModule } from '@angular/core'; import { CommonModule } from '@angular/common'; import { RecipeRecommendationPage } from "./components/RecipeRecommendationPage/recipe-recommendation-page"; +import {RecommendationRouting} from "./recommendation.routing"; @NgModule({ declarations: [RecipeRecommendationPage], - imports: [CommonModule], + imports: [CommonModule, RecommendationRouting], }) export class AppRecipeRecommendationModule {} diff --git a/libs/app/recipe-recommendation/src/components/RecipeRecommendationPage/recipe-recommendation-page.html b/libs/app/recipe-recommendation/src/components/RecipeRecommendationPage/recipe-recommendation-page.html index ea6c8e10..a15bd36b 100644 --- a/libs/app/recipe-recommendation/src/components/RecipeRecommendationPage/recipe-recommendation-page.html +++ b/libs/app/recipe-recommendation/src/components/RecipeRecommendationPage/recipe-recommendation-page.html @@ -1,3 +1,3 @@
-

Recipe recommendation works

+

H

diff --git a/libs/app/recipe-recommendation/src/components/RecipeRecommendationPage/recipe-recommendation-page.scss b/libs/app/recipe-recommendation/src/components/RecipeRecommendationPage/recipe-recommendation-page.scss index b00ff501..267bf135 100644 --- a/libs/app/recipe-recommendation/src/components/RecipeRecommendationPage/recipe-recommendation-page.scss +++ b/libs/app/recipe-recommendation/src/components/RecipeRecommendationPage/recipe-recommendation-page.scss @@ -1,3 +1,8 @@ .page-container { - background-color: aqua; + background-color:#F8F8F8; + height: 100%; + width: 100%; + display: grid; + grid-template-rows: repeat(12, minmax(0,1fr)); + grid-template-columns: repeat(12, minmax(0,1fr)); } diff --git a/libs/app/recipe-recommendation/src/recommendation.routing.ts b/libs/app/recipe-recommendation/src/recommendation.routing.ts new file mode 100644 index 00000000..6d38aa16 --- /dev/null +++ b/libs/app/recipe-recommendation/src/recommendation.routing.ts @@ -0,0 +1,19 @@ +import { NgModule } from '@angular/core'; +import { RouterModule, Routes } from '@angular/router'; +import { RecipeRecommendationPage } from "./components/RecipeRecommendationPage/recipe-recommendation-page"; + +const routes: Routes = [ + { + path: '', + pathMatch: 'full', + component: RecipeRecommendationPage + }, +] + +@NgModule({ + imports: [ + RouterModule.forChild(routes), + ], + exports: [RouterModule], +}) +export class RecommendationRouting {} From 1adfb73edee5c523905c1974917db9075ca9d18f Mon Sep 17 00:00:00 2001 From: kphutiyagae Date: Sun, 21 May 2023 22:00:50 +0200 Subject: [PATCH 15/55] feat(none): :sparkles: Added tabbed navigation component. --- libs/app/core/src/core.module.ts | 3 ++- libs/app/core/src/core.shell.html | 2 +- .../core/src/tabbed-component/tabbed-component.html | 3 +++ .../core/src/tabbed-component/tabbed-component.scss | 8 ++++++++ .../core/src/tabbed-component/tabbed-component.spec.ts | 0 libs/app/core/src/tabbed-component/tabbed-component.ts | 10 ++++++++++ .../src/app-recipe-recommendation.module.ts | 3 ++- .../recipe-recommendation-page.html | 2 +- 8 files changed, 27 insertions(+), 4 deletions(-) create mode 100644 libs/app/core/src/tabbed-component/tabbed-component.html create mode 100644 libs/app/core/src/tabbed-component/tabbed-component.scss create mode 100644 libs/app/core/src/tabbed-component/tabbed-component.spec.ts create mode 100644 libs/app/core/src/tabbed-component/tabbed-component.ts diff --git a/libs/app/core/src/core.module.ts b/libs/app/core/src/core.module.ts index 8291631f..837e6062 100644 --- a/libs/app/core/src/core.module.ts +++ b/libs/app/core/src/core.module.ts @@ -5,9 +5,10 @@ import { NxWelcomeComponent } from "./nx-welcome.component"; import { CoreRouting } from "./core.routing"; import { IonicModule, IonicRouteStrategy } from "@ionic/angular"; import { RouteReuseStrategy } from "@angular/router"; +import {TabbedComponent} from "./tabbed-component/tabbed-component"; @NgModule({ - declarations: [CoreShell, NxWelcomeComponent], + declarations: [CoreShell, NxWelcomeComponent, TabbedComponent], imports: [ BrowserModule, CoreRouting, diff --git a/libs/app/core/src/core.shell.html b/libs/app/core/src/core.shell.html index 0c1785d3..9b06aaff 100644 --- a/libs/app/core/src/core.shell.html +++ b/libs/app/core/src/core.shell.html @@ -1,3 +1,3 @@ - \ No newline at end of file + diff --git a/libs/app/core/src/tabbed-component/tabbed-component.html b/libs/app/core/src/tabbed-component/tabbed-component.html new file mode 100644 index 00000000..ec856246 --- /dev/null +++ b/libs/app/core/src/tabbed-component/tabbed-component.html @@ -0,0 +1,3 @@ +
+Menu +
diff --git a/libs/app/core/src/tabbed-component/tabbed-component.scss b/libs/app/core/src/tabbed-component/tabbed-component.scss new file mode 100644 index 00000000..267bf135 --- /dev/null +++ b/libs/app/core/src/tabbed-component/tabbed-component.scss @@ -0,0 +1,8 @@ +.page-container { + background-color:#F8F8F8; + height: 100%; + width: 100%; + display: grid; + grid-template-rows: repeat(12, minmax(0,1fr)); + grid-template-columns: repeat(12, minmax(0,1fr)); +} diff --git a/libs/app/core/src/tabbed-component/tabbed-component.spec.ts b/libs/app/core/src/tabbed-component/tabbed-component.spec.ts new file mode 100644 index 00000000..e69de29b diff --git a/libs/app/core/src/tabbed-component/tabbed-component.ts b/libs/app/core/src/tabbed-component/tabbed-component.ts new file mode 100644 index 00000000..beea9a4c --- /dev/null +++ b/libs/app/core/src/tabbed-component/tabbed-component.ts @@ -0,0 +1,10 @@ +import { Component } from '@angular/core'; + +@Component({ + selector: 'app-tabbed-component', + templateUrl: './tabbed-component.html', + styleUrls: ['./tabbed-component.scss'] +}) +export class TabbedComponent { + +} diff --git a/libs/app/recipe-recommendation/src/app-recipe-recommendation.module.ts b/libs/app/recipe-recommendation/src/app-recipe-recommendation.module.ts index 54411a15..4ed0919c 100644 --- a/libs/app/recipe-recommendation/src/app-recipe-recommendation.module.ts +++ b/libs/app/recipe-recommendation/src/app-recipe-recommendation.module.ts @@ -2,9 +2,10 @@ import { NgModule } from '@angular/core'; import { CommonModule } from '@angular/common'; import { RecipeRecommendationPage } from "./components/RecipeRecommendationPage/recipe-recommendation-page"; import {RecommendationRouting} from "./recommendation.routing"; +import {IonicModule} from "@ionic/angular"; @NgModule({ declarations: [RecipeRecommendationPage], - imports: [CommonModule, RecommendationRouting], + imports: [CommonModule, RecommendationRouting, IonicModule], }) export class AppRecipeRecommendationModule {} diff --git a/libs/app/recipe-recommendation/src/components/RecipeRecommendationPage/recipe-recommendation-page.html b/libs/app/recipe-recommendation/src/components/RecipeRecommendationPage/recipe-recommendation-page.html index a15bd36b..aa741516 100644 --- a/libs/app/recipe-recommendation/src/components/RecipeRecommendationPage/recipe-recommendation-page.html +++ b/libs/app/recipe-recommendation/src/components/RecipeRecommendationPage/recipe-recommendation-page.html @@ -1,3 +1,3 @@
-

H

+
From 6080aa76837abd41147d37679b14d31c9905e928 Mon Sep 17 00:00:00 2001 From: kphutiyagae Date: Sun, 21 May 2023 22:21:44 +0200 Subject: [PATCH 16/55] feat(none): :sparkles: Added stepper form component. --- .../src/app-recipe-recommendation.module.ts | 3 ++- .../recipe-recommendation-page.html | 4 ++-- .../src/components/stepper-form/steper-form.spec.ts | 0 .../src/components/stepper-form/stepper-form.html | 3 +++ .../src/components/stepper-form/stepper-form.scss | 0 .../src/components/stepper-form/stepper-form.ts | 9 +++++++++ 6 files changed, 16 insertions(+), 3 deletions(-) create mode 100644 libs/app/recipe-recommendation/src/components/stepper-form/steper-form.spec.ts create mode 100644 libs/app/recipe-recommendation/src/components/stepper-form/stepper-form.html create mode 100644 libs/app/recipe-recommendation/src/components/stepper-form/stepper-form.scss create mode 100644 libs/app/recipe-recommendation/src/components/stepper-form/stepper-form.ts diff --git a/libs/app/recipe-recommendation/src/app-recipe-recommendation.module.ts b/libs/app/recipe-recommendation/src/app-recipe-recommendation.module.ts index 4ed0919c..57079cd9 100644 --- a/libs/app/recipe-recommendation/src/app-recipe-recommendation.module.ts +++ b/libs/app/recipe-recommendation/src/app-recipe-recommendation.module.ts @@ -3,9 +3,10 @@ import { CommonModule } from '@angular/common'; import { RecipeRecommendationPage } from "./components/RecipeRecommendationPage/recipe-recommendation-page"; import {RecommendationRouting} from "./recommendation.routing"; import {IonicModule} from "@ionic/angular"; +import {StepperForm} from "./components/stepper-form/stepper-form"; @NgModule({ - declarations: [RecipeRecommendationPage], + declarations: [RecipeRecommendationPage, StepperForm], imports: [CommonModule, RecommendationRouting, IonicModule], }) export class AppRecipeRecommendationModule {} diff --git a/libs/app/recipe-recommendation/src/components/RecipeRecommendationPage/recipe-recommendation-page.html b/libs/app/recipe-recommendation/src/components/RecipeRecommendationPage/recipe-recommendation-page.html index aa741516..275751c6 100644 --- a/libs/app/recipe-recommendation/src/components/RecipeRecommendationPage/recipe-recommendation-page.html +++ b/libs/app/recipe-recommendation/src/components/RecipeRecommendationPage/recipe-recommendation-page.html @@ -1,3 +1,3 @@ -
- +
+
diff --git a/libs/app/recipe-recommendation/src/components/stepper-form/steper-form.spec.ts b/libs/app/recipe-recommendation/src/components/stepper-form/steper-form.spec.ts new file mode 100644 index 00000000..e69de29b diff --git a/libs/app/recipe-recommendation/src/components/stepper-form/stepper-form.html b/libs/app/recipe-recommendation/src/components/stepper-form/stepper-form.html new file mode 100644 index 00000000..2a42cf4c --- /dev/null +++ b/libs/app/recipe-recommendation/src/components/stepper-form/stepper-form.html @@ -0,0 +1,3 @@ +
+ Stepper +
diff --git a/libs/app/recipe-recommendation/src/components/stepper-form/stepper-form.scss b/libs/app/recipe-recommendation/src/components/stepper-form/stepper-form.scss new file mode 100644 index 00000000..e69de29b diff --git a/libs/app/recipe-recommendation/src/components/stepper-form/stepper-form.ts b/libs/app/recipe-recommendation/src/components/stepper-form/stepper-form.ts new file mode 100644 index 00000000..1fca4636 --- /dev/null +++ b/libs/app/recipe-recommendation/src/components/stepper-form/stepper-form.ts @@ -0,0 +1,9 @@ +import { Component } from "@angular/core"; + +@Component({ + selector: 'app-stepper-form', + templateUrl: './stepper-form.html', + styleUrls: ['./stepper-form.scss'] +}) + +export class StepperForm {} From 5569ffb35f431bf9a3bec6b44f398b3c1cd3081e Mon Sep 17 00:00:00 2001 From: Ryan Trickett Date: Sun, 21 May 2023 22:39:59 +0200 Subject: [PATCH 17/55] =?UTF-8?q?=F0=9F=9A=A7=20(app)=20Profile=20Page=20D?= =?UTF-8?q?esign=20and=20Implementation?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../app/profile/feature/src/profile.page.html | 98 +++++++------------ libs/app/profile/feature/src/profile.page.ts | 58 ++++++++++- 2 files changed, 92 insertions(+), 64 deletions(-) diff --git a/libs/app/profile/feature/src/profile.page.html b/libs/app/profile/feature/src/profile.page.html index 065f85bb..ec0794f0 100644 --- a/libs/app/profile/feature/src/profile.page.html +++ b/libs/app/profile/feature/src/profile.page.html @@ -2,93 +2,65 @@
Profile Pic + class="self-center w-40 border rounded-full mx-auto mt-16" />
-
-

Profile Name

-

Email

+
+

John Doe

+

jdoe@gmail.com

-
+
- - -
-
-
- -
-

Shrimp Pasta

-

Difficulty: Medium

- Seafood - Pasta + class="text-white bg-blue-700 hover:bg-blue-800 focus:ring-4 focus:outline-none focus:ring-blue-300 font-medium rounded-lg text-sm px-4 py-2.5 text-center inline-flex items-center mb-3" + type="button"> + Sort + + +
+
+ +
+

{{ recipe.name }}

+

Difficulty: {{ recipe.difficulty }}

+ {{ tag }} +
-
- -
-

Shrimp Pasta

-

Difficulty: Medium

- Seafood - Pasta -
-
-
- -
-

Shrimp Pasta

-

Difficulty: Medium

- Seafood - Pasta -
-
-
- -
-

Shrimp Pasta

-

Difficulty: Medium

- Seafood - Pasta +
+
+
+
+
+
+

{{ingredient.name }} {{ ingredient.amount }}

+
+ +
diff --git a/libs/app/profile/feature/src/profile.page.ts b/libs/app/profile/feature/src/profile.page.ts index ac70c257..1635e0eb 100644 --- a/libs/app/profile/feature/src/profile.page.ts +++ b/libs/app/profile/feature/src/profile.page.ts @@ -5,4 +5,60 @@ import { Component } from "@angular/core"; templateUrl: "./profile.page.html", styleUrls: ["./profile.page.scss"], }) -export class ProfilePage {} +export class ProfilePage { + + subpage = "saved"; + recipes = [ + { + name: "Shrimp Pasta", + difficulty: "Medium", + tags: ["Seafood", "Pasta"] + }, + { + name: "Pizza", + difficulty: "Easy", + tags: ["Italian", "Pizza"] + }, + { + name: "Mushroom Pie", + difficulty: "Medium", + tags: ["Quick"] + }, + { + name: "Beef Stew", + difficulty: "Easy", + tags: ["Winter", "Hearty"] + }, + ] + + ingredients = [ + { + name: "Tomato", + amount: "3" + }, + { + name: "Cucumber", + amount: "1" + }, + { + name: "Beef", + amount: "200g" + }, + { + name: "Stock", + amount: "500ml" + }, + ] + + displayIngredients() { + this.subpage = "ingredients"; + } + + displaySaved() { + this.subpage = "saved"; + } + + removeIngredient(ingredientID: number) { + this.ingredients.splice(ingredientID, 1); + } +} From 06b42b1778cebd56228ae5cd25dcdf0b3cca6a6c Mon Sep 17 00:00:00 2001 From: simphiwe-nonabe <106514948+simphiwe-nonabe@users.noreply.github.com> Date: Sun, 21 May 2023 23:15:03 +0200 Subject: [PATCH 18/55] =?UTF-8?q?=F0=9F=94=A5=20(app)=20Deleted=20incorrec?= =?UTF-8?q?t=20signup=20file=20structure?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- libs/app/signup/.eslintrc.json | 36 ------------------------ libs/app/signup/README.md | 7 ----- libs/app/signup/jest.config.ts | 22 --------------- libs/app/signup/project.json | 34 ---------------------- libs/app/signup/src/app-signup.module.ts | 7 ----- libs/app/signup/src/index.ts | 1 - libs/app/signup/src/test-setup.ts | 1 - libs/app/signup/tsconfig.json | 29 ------------------- libs/app/signup/tsconfig.lib.json | 17 ----------- libs/app/signup/tsconfig.spec.json | 16 ----------- 10 files changed, 170 deletions(-) delete mode 100644 libs/app/signup/.eslintrc.json delete mode 100644 libs/app/signup/README.md delete mode 100644 libs/app/signup/jest.config.ts delete mode 100644 libs/app/signup/project.json delete mode 100644 libs/app/signup/src/app-signup.module.ts delete mode 100644 libs/app/signup/src/index.ts delete mode 100644 libs/app/signup/src/test-setup.ts delete mode 100644 libs/app/signup/tsconfig.json delete mode 100644 libs/app/signup/tsconfig.lib.json delete mode 100644 libs/app/signup/tsconfig.spec.json diff --git a/libs/app/signup/.eslintrc.json b/libs/app/signup/.eslintrc.json deleted file mode 100644 index 67d253b6..00000000 --- a/libs/app/signup/.eslintrc.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "extends": ["../../../.eslintrc.json"], - "ignorePatterns": ["!**/*"], - "overrides": [ - { - "files": ["*.ts"], - "rules": { - "@angular-eslint/directive-selector": [ - "error", - { - "type": "attribute", - "prefix": "fridgeToPlate", - "style": "camelCase" - } - ], - "@angular-eslint/component-selector": [ - "error", - { - "type": "element", - "prefix": "fridge-to-plate", - "style": "kebab-case" - } - ] - }, - "extends": [ - "plugin:@nx/angular", - "plugin:@angular-eslint/template/process-inline-templates" - ] - }, - { - "files": ["*.html"], - "extends": ["plugin:@nx/angular-template"], - "rules": {} - } - ] -} diff --git a/libs/app/signup/README.md b/libs/app/signup/README.md deleted file mode 100644 index 0ece06d6..00000000 --- a/libs/app/signup/README.md +++ /dev/null @@ -1,7 +0,0 @@ -# app-signup - -This library was generated with [Nx](https://nx.dev). - -## Running unit tests - -Run `nx test app-signup` to execute the unit tests. diff --git a/libs/app/signup/jest.config.ts b/libs/app/signup/jest.config.ts deleted file mode 100644 index 0a00a6eb..00000000 --- a/libs/app/signup/jest.config.ts +++ /dev/null @@ -1,22 +0,0 @@ -/* eslint-disable */ -export default { - displayName: 'app-signup', - preset: '../../../jest.preset.js', - setupFilesAfterEnv: ['/src/test-setup.ts'], - coverageDirectory: '../../../coverage/libs/app/signup', - transform: { - '^.+\\.(ts|mjs|js|html)$': [ - 'jest-preset-angular', - { - tsconfig: '/tsconfig.spec.json', - stringifyContentPathRegex: '\\.(html|svg)$', - }, - ], - }, - transformIgnorePatterns: ['node_modules/(?!.*\\.mjs$)'], - snapshotSerializers: [ - 'jest-preset-angular/build/serializers/no-ng-attributes', - 'jest-preset-angular/build/serializers/ng-snapshot', - 'jest-preset-angular/build/serializers/html-comment', - ], -}; diff --git a/libs/app/signup/project.json b/libs/app/signup/project.json deleted file mode 100644 index 405d02c2..00000000 --- a/libs/app/signup/project.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "name": "app-signup", - "$schema": "../../../node_modules/nx/schemas/project-schema.json", - "sourceRoot": "libs/app/signup/src", - "prefix": "fridge-to-plate", - "tags": [], - "projectType": "library", - "targets": { - "test": { - "executor": "@nx/jest:jest", - "outputs": ["{workspaceRoot}/coverage/{projectRoot}"], - "options": { - "jestConfig": "libs/app/signup/jest.config.ts", - "passWithNoTests": true - }, - "configurations": { - "ci": { - "ci": true, - "codeCoverage": true - } - } - }, - "lint": { - "executor": "@nx/linter:eslint", - "outputs": ["{options.outputFile}"], - "options": { - "lintFilePatterns": [ - "libs/app/signup/**/*.ts", - "libs/app/signup/**/*.html" - ] - } - } - } -} diff --git a/libs/app/signup/src/app-signup.module.ts b/libs/app/signup/src/app-signup.module.ts deleted file mode 100644 index 9a1736e3..00000000 --- a/libs/app/signup/src/app-signup.module.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { NgModule } from '@angular/core'; -import { CommonModule } from '@angular/common'; - -@NgModule({ - imports: [CommonModule], -}) -export class AppSignupModule {} diff --git a/libs/app/signup/src/index.ts b/libs/app/signup/src/index.ts deleted file mode 100644 index a09eab23..00000000 --- a/libs/app/signup/src/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './app-signup.module'; diff --git a/libs/app/signup/src/test-setup.ts b/libs/app/signup/src/test-setup.ts deleted file mode 100644 index 1100b3e8..00000000 --- a/libs/app/signup/src/test-setup.ts +++ /dev/null @@ -1 +0,0 @@ -import 'jest-preset-angular/setup-jest'; diff --git a/libs/app/signup/tsconfig.json b/libs/app/signup/tsconfig.json deleted file mode 100644 index 5cf0a165..00000000 --- a/libs/app/signup/tsconfig.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "compilerOptions": { - "target": "es2022", - "useDefineForClassFields": false, - "forceConsistentCasingInFileNames": true, - "strict": true, - "noImplicitOverride": true, - "noPropertyAccessFromIndexSignature": true, - "noImplicitReturns": true, - "noFallthroughCasesInSwitch": true - }, - "files": [], - "include": [], - "references": [ - { - "path": "./tsconfig.lib.json" - }, - { - "path": "./tsconfig.spec.json" - } - ], - "extends": "../../../tsconfig.base.json", - "angularCompilerOptions": { - "enableI18nLegacyMessageIdFormat": false, - "strictInjectionParameters": true, - "strictInputAccessModifiers": true, - "strictTemplates": true - } -} diff --git a/libs/app/signup/tsconfig.lib.json b/libs/app/signup/tsconfig.lib.json deleted file mode 100644 index 9b49be75..00000000 --- a/libs/app/signup/tsconfig.lib.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "extends": "./tsconfig.json", - "compilerOptions": { - "outDir": "../../../dist/out-tsc", - "declaration": true, - "declarationMap": true, - "inlineSources": true, - "types": [] - }, - "exclude": [ - "src/**/*.spec.ts", - "src/test-setup.ts", - "jest.config.ts", - "src/**/*.test.ts" - ], - "include": ["src/**/*.ts"] -} diff --git a/libs/app/signup/tsconfig.spec.json b/libs/app/signup/tsconfig.spec.json deleted file mode 100644 index f858ef78..00000000 --- a/libs/app/signup/tsconfig.spec.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "extends": "./tsconfig.json", - "compilerOptions": { - "outDir": "../../../dist/out-tsc", - "module": "commonjs", - "target": "es2016", - "types": ["jest", "node"] - }, - "files": ["src/test-setup.ts"], - "include": [ - "jest.config.ts", - "src/**/*.test.ts", - "src/**/*.spec.ts", - "src/**/*.d.ts" - ] -} From 1a6763ddc82e1ad54355705a95c21090a07b7631 Mon Sep 17 00:00:00 2001 From: kphutiyagae Date: Sun, 21 May 2023 23:32:32 +0200 Subject: [PATCH 19/55] feat(none): :sparkles: Added form group for stepper component. --- libs/app/core/src/core.module.ts | 4 +- .../src/app-recipe-recommendation.module.ts | 3 +- .../recipe-recommendation-page.html | 2 +- .../components/stepper-form/stepper-form.html | 13 +- .../components/stepper-form/stepper-form.ts | 39 +++++- package-lock.json | 117 ++++++++++++++++++ package.json | 1 + 7 files changed, 173 insertions(+), 6 deletions(-) diff --git a/libs/app/core/src/core.module.ts b/libs/app/core/src/core.module.ts index 837e6062..7d611928 100644 --- a/libs/app/core/src/core.module.ts +++ b/libs/app/core/src/core.module.ts @@ -6,13 +6,15 @@ import { CoreRouting } from "./core.routing"; import { IonicModule, IonicRouteStrategy } from "@ionic/angular"; import { RouteReuseStrategy } from "@angular/router"; import {TabbedComponent} from "./tabbed-component/tabbed-component"; +import {NzStepsModule} from "ng-zorro-antd/steps"; +import {NzFormModule} from "ng-zorro-antd/form"; @NgModule({ declarations: [CoreShell, NxWelcomeComponent, TabbedComponent], imports: [ BrowserModule, CoreRouting, - IonicModule.forRoot()], + IonicModule.forRoot(), NzStepsModule, NzFormModule], providers: [{ provide: RouteReuseStrategy, useClass: IonicRouteStrategy }], bootstrap: [CoreShell], }) diff --git a/libs/app/recipe-recommendation/src/app-recipe-recommendation.module.ts b/libs/app/recipe-recommendation/src/app-recipe-recommendation.module.ts index 57079cd9..c2045365 100644 --- a/libs/app/recipe-recommendation/src/app-recipe-recommendation.module.ts +++ b/libs/app/recipe-recommendation/src/app-recipe-recommendation.module.ts @@ -4,9 +4,10 @@ import { RecipeRecommendationPage } from "./components/RecipeRecommendationPage/ import {RecommendationRouting} from "./recommendation.routing"; import {IonicModule} from "@ionic/angular"; import {StepperForm} from "./components/stepper-form/stepper-form"; +import {NzStepsModule} from "ng-zorro-antd/steps"; @NgModule({ declarations: [RecipeRecommendationPage, StepperForm], - imports: [CommonModule, RecommendationRouting, IonicModule], + imports: [CommonModule, RecommendationRouting, IonicModule, NzStepsModule], }) export class AppRecipeRecommendationModule {} diff --git a/libs/app/recipe-recommendation/src/components/RecipeRecommendationPage/recipe-recommendation-page.html b/libs/app/recipe-recommendation/src/components/RecipeRecommendationPage/recipe-recommendation-page.html index 275751c6..99a9e2ea 100644 --- a/libs/app/recipe-recommendation/src/components/RecipeRecommendationPage/recipe-recommendation-page.html +++ b/libs/app/recipe-recommendation/src/components/RecipeRecommendationPage/recipe-recommendation-page.html @@ -1,3 +1,3 @@ -
+
diff --git a/libs/app/recipe-recommendation/src/components/stepper-form/stepper-form.html b/libs/app/recipe-recommendation/src/components/stepper-form/stepper-form.html index 2a42cf4c..7d51947a 100644 --- a/libs/app/recipe-recommendation/src/components/stepper-form/stepper-form.html +++ b/libs/app/recipe-recommendation/src/components/stepper-form/stepper-form.html @@ -1,3 +1,14 @@
- Stepper + + + + + + +
Step content
+
+ +
diff --git a/libs/app/recipe-recommendation/src/components/stepper-form/stepper-form.ts b/libs/app/recipe-recommendation/src/components/stepper-form/stepper-form.ts index 1fca4636..cff0ce56 100644 --- a/libs/app/recipe-recommendation/src/components/stepper-form/stepper-form.ts +++ b/libs/app/recipe-recommendation/src/components/stepper-form/stepper-form.ts @@ -1,4 +1,5 @@ -import { Component } from "@angular/core"; +import {Component, OnInit} from "@angular/core"; +import {FormBuilder, FormGroup, Validators} from "@angular/forms"; @Component({ selector: 'app-stepper-form', @@ -6,4 +7,38 @@ import { Component } from "@angular/core"; styleUrls: ['./stepper-form.scss'] }) -export class StepperForm {} +export class StepperForm implements OnInit{ + + currentStep = 1; + + recipeRecommendForm!: FormGroup; + + recipePreferencesForm!: FormGroup; + changeContent(): void {} + previousStep(): void { + this.currentStep -=1; + this.changeContent(); + } + + nextStep(): void { + this.currentStep +=1; + this.changeContent(); + } + + attemptRecommendation(): void {} + + constructor(private formBuilder: FormBuilder) { + } + + ngOnInit() { + this.recipeRecommendForm = this.formBuilder.group({ + items: [[], [Validators.required]], + preferences: this.formBuilder.group({ + diet: [[]], + keywords: [[]], + difficulty: [''], + rating: [5] + }), + }) + } +} diff --git a/package-lock.json b/package-lock.json index 0baa0b85..9c0cb7d9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -19,6 +19,7 @@ "@angular/router": "~15.2.0", "@ionic/angular": "^7.0.6", "@nrwl/angular": "^16.0.3", + "ng-zorro-antd": "^15.1.0", "rxjs": "~7.8.0", "tslib": "^2.3.0", "zone.js": "~0.12.0" @@ -600,6 +601,46 @@ "@angular/core": "15.2.8" } }, + "node_modules/@angular/cdk": { + "version": "15.2.9", + "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-15.2.9.tgz", + "integrity": "sha512-koaM07N1AIQ5oHU27l0/FoQSSoYAwlAYwVZ4Di3bYrJsTBNCN2Xsby7wI8gZxdepMnV4Fe9si382BDBov+oO4Q==", + "dependencies": { + "tslib": "^2.3.0" + }, + "optionalDependencies": { + "parse5": "^7.1.2" + }, + "peerDependencies": { + "@angular/common": "^15.0.0 || ^16.0.0", + "@angular/core": "^15.0.0 || ^16.0.0", + "rxjs": "^6.5.3 || ^7.4.0" + } + }, + "node_modules/@angular/cdk/node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "optional": true, + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/@angular/cdk/node_modules/parse5": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", + "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", + "optional": true, + "dependencies": { + "entities": "^4.4.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, "node_modules/@angular/cli": { "version": "15.2.7", "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-15.2.7.tgz", @@ -941,6 +982,29 @@ "rxjs": "^6.5.3 || ^7.4.0" } }, + "node_modules/@ant-design/colors": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/@ant-design/colors/-/colors-5.1.1.tgz", + "integrity": "sha512-Txy4KpHrp3q4XZdfgOBqLl+lkQIc3tEvHXOimRN1giX1AEC7mGtyrO9p8iRGJ3FLuVMGa2gNEzQyghVymLttKQ==", + "dependencies": { + "@ctrl/tinycolor": "^3.3.1" + } + }, + "node_modules/@ant-design/icons-angular": { + "version": "15.0.0", + "resolved": "https://registry.npmjs.org/@ant-design/icons-angular/-/icons-angular-15.0.0.tgz", + "integrity": "sha512-9DMpuoqZBvS7+VJ0s3tl2g/kI1sTLDQWfykiXYa+AkZ2AvJwHebvR7Cw7/xfiXFDLyZTjPgtC0x0gex13EShuA==", + "dependencies": { + "@ant-design/colors": "^5.0.0", + "tslib": "^2.0.0" + }, + "peerDependencies": { + "@angular/common": "^15.0.0", + "@angular/core": "^15.0.0", + "@angular/platform-browser": "^15.0.0", + "rxjs": "^6.4.0 || ^7.4.0" + } + }, "node_modules/@assemblyscript/loader": { "version": "0.10.1", "resolved": "https://registry.npmjs.org/@assemblyscript/loader/-/loader-0.10.1.tgz", @@ -2704,6 +2768,14 @@ "@jridgewell/sourcemap-codec": "^1.4.10" } }, + "node_modules/@ctrl/tinycolor": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/@ctrl/tinycolor/-/tinycolor-3.6.0.tgz", + "integrity": "sha512-/Z3l6pXthq0JvMYdUFyX9j0MaCltlIn6mfh9jLyQwg5aPKxkyNa0PTHtU1AlFXLNk55ZuAeJRcpvq+tmLfKmaQ==", + "engines": { + "node": ">=10" + } + }, "node_modules/@cypress/request": { "version": "2.88.11", "resolved": "https://registry.npmjs.org/@cypress/request/-/request-2.88.11.tgz", @@ -9596,6 +9668,32 @@ "node": ">=12" } }, + "node_modules/date-fns": { + "version": "2.30.0", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.30.0.tgz", + "integrity": "sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==", + "dependencies": { + "@babel/runtime": "^7.21.0" + }, + "engines": { + "node": ">=0.11" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/date-fns" + } + }, + "node_modules/date-fns/node_modules/@babel/runtime": { + "version": "7.21.5", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.21.5.tgz", + "integrity": "sha512-8jI69toZqqcsnqGGqwGS4Qb1VwLOEp4hz+CXPywcvjs60u3B4Pom/U/7rm4W8tMOYEB+E9wgD0mW1l3r8qlI9Q==", + "dependencies": { + "regenerator-runtime": "^0.13.11" + }, + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/dayjs": { "version": "1.11.7", "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.7.tgz", @@ -14804,6 +14902,25 @@ "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==" }, + "node_modules/ng-zorro-antd": { + "version": "15.1.0", + "resolved": "https://registry.npmjs.org/ng-zorro-antd/-/ng-zorro-antd-15.1.0.tgz", + "integrity": "sha512-HkZpaG4+fBGP8jhJ/rzyK9fm1G8pPzT0zCQ+3sae3Mwvop5diRUS8lSX/1SucEqjsYAGv+1S5ipl0HwKTLQlQw==", + "dependencies": { + "@angular/cdk": "^15.0.0", + "@ant-design/icons-angular": "^15.0.0", + "date-fns": "^2.16.1", + "tslib": "^2.3.0" + }, + "peerDependencies": { + "@angular/animations": "^15.0.1", + "@angular/common": "^15.0.1", + "@angular/core": "^15.0.1", + "@angular/forms": "^15.0.1", + "@angular/platform-browser": "^15.0.1", + "@angular/router": "^15.0.1" + } + }, "node_modules/nice-napi": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/nice-napi/-/nice-napi-1.0.2.tgz", diff --git a/package.json b/package.json index d61999fe..183092b8 100644 --- a/package.json +++ b/package.json @@ -70,6 +70,7 @@ "@angular/router": "~15.2.0", "@ionic/angular": "^7.0.6", "@nrwl/angular": "^16.0.3", + "ng-zorro-antd": "^15.1.0", "rxjs": "~7.8.0", "tslib": "^2.3.0", "zone.js": "~0.12.0" From 2c342f3dc1acc85680d41bbfd357ea90c7a8b49d Mon Sep 17 00:00:00 2001 From: kphutiyagae Date: Sun, 21 May 2023 23:41:11 +0200 Subject: [PATCH 20/55] feat(none): :sparkles: Implemented stepper component. --- .../components/stepper-form/stepper-form.html | 9 ++++--- .../components/stepper-form/stepper-form.ts | 27 +++++++++++++++++-- 2 files changed, 31 insertions(+), 5 deletions(-) diff --git a/libs/app/recipe-recommendation/src/components/stepper-form/stepper-form.html b/libs/app/recipe-recommendation/src/components/stepper-form/stepper-form.html index 7d51947a..873e5127 100644 --- a/libs/app/recipe-recommendation/src/components/stepper-form/stepper-form.html +++ b/libs/app/recipe-recommendation/src/components/stepper-form/stepper-form.html @@ -1,14 +1,17 @@
- + -
Step content
+
{{stepContent}}
- +
diff --git a/libs/app/recipe-recommendation/src/components/stepper-form/stepper-form.ts b/libs/app/recipe-recommendation/src/components/stepper-form/stepper-form.ts index cff0ce56..49cab478 100644 --- a/libs/app/recipe-recommendation/src/components/stepper-form/stepper-form.ts +++ b/libs/app/recipe-recommendation/src/components/stepper-form/stepper-form.ts @@ -13,8 +13,29 @@ export class StepperForm implements OnInit{ recipeRecommendForm!: FormGroup; + stepContent = `Start`; + recipePreferencesForm!: FormGroup; - changeContent(): void {} + changeContent(): void { + switch (this.currentStep) { + case 1: { + this.stepContent = 'Step 1' + break; + } + case 2: { + this.stepContent = 'Step 2' + break; + } + case 3: { + this.stepContent = 'Step 3' + break; + } + default: { + this.stepContent = 'error' + } + } + } + previousStep(): void { this.currentStep -=1; this.changeContent(); @@ -25,7 +46,9 @@ export class StepperForm implements OnInit{ this.changeContent(); } - attemptRecommendation(): void {} + attemptRecommendation(): void { + console.log(this.recipeRecommendForm.value) + } constructor(private formBuilder: FormBuilder) { } From dd3eaf86b3d06b0290c689753edb09c58dadbaf0 Mon Sep 17 00:00:00 2001 From: kphutiyagae Date: Mon, 22 May 2023 00:05:42 +0200 Subject: [PATCH 21/55] feat(none): :construction: Fixed stepper component layout. --- .../components/stepper-form/stepper-form.html | 21 +++++++++++-------- .../components/stepper-form/stepper-form.scss | 17 +++++++++++++++ 2 files changed, 29 insertions(+), 9 deletions(-) diff --git a/libs/app/recipe-recommendation/src/components/stepper-form/stepper-form.html b/libs/app/recipe-recommendation/src/components/stepper-form/stepper-form.html index 873e5127..82bcbc13 100644 --- a/libs/app/recipe-recommendation/src/components/stepper-form/stepper-form.html +++ b/libs/app/recipe-recommendation/src/components/stepper-form/stepper-form.html @@ -1,17 +1,20 @@ -
- - - - - +
+
+ + + + + +
-
{{stepContent}}
-
+
-
+
{{stepContent}}
+
diff --git a/libs/app/recipe-recommendation/src/components/stepper-form/stepper-form.scss b/libs/app/recipe-recommendation/src/components/stepper-form/stepper-form.scss index e69de29b..9bff62ca 100644 --- a/libs/app/recipe-recommendation/src/components/stepper-form/stepper-form.scss +++ b/libs/app/recipe-recommendation/src/components/stepper-form/stepper-form.scss @@ -0,0 +1,17 @@ +.steps-content { + margin-top: 16px; + border: 1px dashed #e9e9e9; + border-radius: 6px; + background-color: #fafafa; + min-height: 80%; + text-align: center; + padding-top: 80px; +} + +.steps-action { + margin-top: 24px; +} + +button { + margin-right: 8px; +} From 3f602a28150278a1905b71b29cad13f220c15103 Mon Sep 17 00:00:00 2001 From: simphiwe-nonabe <106514948+simphiwe-nonabe@users.noreply.github.com> Date: Mon, 22 May 2023 07:56:18 +0200 Subject: [PATCH 22/55] =?UTF-8?q?=F0=9F=8E=A8=20(app)=20signup=20page=20fi?= =?UTF-8?q?le=20structure=20created?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- libs/app/signup/feature/.eslintrc.json | 18 +++++++++ libs/app/signup/feature/README.md | 11 +++++ libs/app/signup/feature/jest.config.ts | 10 +++++ libs/app/signup/feature/package.json | 5 +++ libs/app/signup/feature/project.json | 40 +++++++++++++++++++ libs/app/signup/feature/src/index.ts | 1 + .../src/lib/app-signup-feature.spec.ts | 7 ++++ .../feature/src/lib/app-signup-feature.ts | 3 ++ libs/app/signup/feature/tsconfig.json | 22 ++++++++++ libs/app/signup/feature/tsconfig.lib.json | 10 +++++ libs/app/signup/feature/tsconfig.spec.json | 14 +++++++ tsconfig.base.json | 6 +-- 12 files changed, 144 insertions(+), 3 deletions(-) create mode 100644 libs/app/signup/feature/.eslintrc.json create mode 100644 libs/app/signup/feature/README.md create mode 100644 libs/app/signup/feature/jest.config.ts create mode 100644 libs/app/signup/feature/package.json create mode 100644 libs/app/signup/feature/project.json create mode 100644 libs/app/signup/feature/src/index.ts create mode 100644 libs/app/signup/feature/src/lib/app-signup-feature.spec.ts create mode 100644 libs/app/signup/feature/src/lib/app-signup-feature.ts create mode 100644 libs/app/signup/feature/tsconfig.json create mode 100644 libs/app/signup/feature/tsconfig.lib.json create mode 100644 libs/app/signup/feature/tsconfig.spec.json diff --git a/libs/app/signup/feature/.eslintrc.json b/libs/app/signup/feature/.eslintrc.json new file mode 100644 index 00000000..632e9b0e --- /dev/null +++ b/libs/app/signup/feature/.eslintrc.json @@ -0,0 +1,18 @@ +{ + "extends": ["../../../../.eslintrc.json"], + "ignorePatterns": ["!**/*"], + "overrides": [ + { + "files": ["*.ts", "*.tsx", "*.js", "*.jsx"], + "rules": {} + }, + { + "files": ["*.ts", "*.tsx"], + "rules": {} + }, + { + "files": ["*.js", "*.jsx"], + "rules": {} + } + ] +} diff --git a/libs/app/signup/feature/README.md b/libs/app/signup/feature/README.md new file mode 100644 index 00000000..6fd94a25 --- /dev/null +++ b/libs/app/signup/feature/README.md @@ -0,0 +1,11 @@ +# app-signup-feature + +This library was generated with [Nx](https://nx.dev). + +## Building + +Run `nx build app-signup-feature` to build the library. + +## Running unit tests + +Run `nx test app-signup-feature` to execute the unit tests via [Jest](https://jestjs.io). diff --git a/libs/app/signup/feature/jest.config.ts b/libs/app/signup/feature/jest.config.ts new file mode 100644 index 00000000..1ac43f13 --- /dev/null +++ b/libs/app/signup/feature/jest.config.ts @@ -0,0 +1,10 @@ +/* eslint-disable */ +export default { + displayName: 'app-signup-feature', + preset: '../../../../jest.preset.js', + transform: { + '^.+\\.[tj]s$': ['ts-jest', { tsconfig: '/tsconfig.spec.json' }], + }, + moduleFileExtensions: ['ts', 'js', 'html'], + coverageDirectory: '../../../../coverage/libs/app/signup/feature', +}; diff --git a/libs/app/signup/feature/package.json b/libs/app/signup/feature/package.json new file mode 100644 index 00000000..634deb67 --- /dev/null +++ b/libs/app/signup/feature/package.json @@ -0,0 +1,5 @@ +{ + "name": "@fridge-to-plate/app/signup/feature", + "version": "0.0.1", + "type": "commonjs" +} diff --git a/libs/app/signup/feature/project.json b/libs/app/signup/feature/project.json new file mode 100644 index 00000000..fec6dae5 --- /dev/null +++ b/libs/app/signup/feature/project.json @@ -0,0 +1,40 @@ +{ + "name": "app-signup-feature", + "$schema": "../../../../node_modules/nx/schemas/project-schema.json", + "sourceRoot": "libs/app/signup/feature/src", + "projectType": "library", + "targets": { + "build": { + "executor": "@nrwl/js:tsc", + "outputs": ["{options.outputPath}"], + "options": { + "outputPath": "dist/libs/app/signup/feature", + "main": "libs/app/signup/feature/src/index.ts", + "tsConfig": "libs/app/signup/feature/tsconfig.lib.json", + "assets": ["libs/app/signup/feature/*.md"] + } + }, + "lint": { + "executor": "@nrwl/linter:eslint", + "outputs": ["{options.outputFile}"], + "options": { + "lintFilePatterns": ["libs/app/signup/feature/**/*.ts"] + } + }, + "test": { + "executor": "@nrwl/jest:jest", + "outputs": ["{workspaceRoot}/coverage/{projectRoot}"], + "options": { + "jestConfig": "libs/app/signup/feature/jest.config.ts", + "passWithNoTests": true + }, + "configurations": { + "ci": { + "ci": true, + "codeCoverage": true + } + } + } + }, + "tags": [] +} diff --git a/libs/app/signup/feature/src/index.ts b/libs/app/signup/feature/src/index.ts new file mode 100644 index 00000000..5bbf0f4b --- /dev/null +++ b/libs/app/signup/feature/src/index.ts @@ -0,0 +1 @@ +export * from './lib/app-signup-feature'; diff --git a/libs/app/signup/feature/src/lib/app-signup-feature.spec.ts b/libs/app/signup/feature/src/lib/app-signup-feature.spec.ts new file mode 100644 index 00000000..2acf5fc9 --- /dev/null +++ b/libs/app/signup/feature/src/lib/app-signup-feature.spec.ts @@ -0,0 +1,7 @@ +import { appSignupFeature } from './app-signup-feature'; + +describe('appSignupFeature', () => { + it('should work', () => { + expect(appSignupFeature()).toEqual('app-signup-feature'); + }); +}); diff --git a/libs/app/signup/feature/src/lib/app-signup-feature.ts b/libs/app/signup/feature/src/lib/app-signup-feature.ts new file mode 100644 index 00000000..af90a522 --- /dev/null +++ b/libs/app/signup/feature/src/lib/app-signup-feature.ts @@ -0,0 +1,3 @@ +export function appSignupFeature(): string { + return 'app-signup-feature'; +} diff --git a/libs/app/signup/feature/tsconfig.json b/libs/app/signup/feature/tsconfig.json new file mode 100644 index 00000000..4022fd4d --- /dev/null +++ b/libs/app/signup/feature/tsconfig.json @@ -0,0 +1,22 @@ +{ + "extends": "../../../../tsconfig.base.json", + "compilerOptions": { + "module": "commonjs", + "forceConsistentCasingInFileNames": true, + "strict": true, + "noImplicitOverride": true, + "noPropertyAccessFromIndexSignature": true, + "noImplicitReturns": true, + "noFallthroughCasesInSwitch": true + }, + "files": [], + "include": [], + "references": [ + { + "path": "./tsconfig.lib.json" + }, + { + "path": "./tsconfig.spec.json" + } + ] +} diff --git a/libs/app/signup/feature/tsconfig.lib.json b/libs/app/signup/feature/tsconfig.lib.json new file mode 100644 index 00000000..18f2d37a --- /dev/null +++ b/libs/app/signup/feature/tsconfig.lib.json @@ -0,0 +1,10 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "../../../../dist/out-tsc", + "declaration": true, + "types": ["node"] + }, + "include": ["src/**/*.ts"], + "exclude": ["jest.config.ts", "src/**/*.spec.ts", "src/**/*.test.ts"] +} diff --git a/libs/app/signup/feature/tsconfig.spec.json b/libs/app/signup/feature/tsconfig.spec.json new file mode 100644 index 00000000..6668655f --- /dev/null +++ b/libs/app/signup/feature/tsconfig.spec.json @@ -0,0 +1,14 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "../../../../dist/out-tsc", + "module": "commonjs", + "types": ["jest", "node"] + }, + "include": [ + "jest.config.ts", + "src/**/*.test.ts", + "src/**/*.spec.ts", + "src/**/*.d.ts" + ] +} diff --git a/tsconfig.base.json b/tsconfig.base.json index 0412dbae..9b35810a 100644 --- a/tsconfig.base.json +++ b/tsconfig.base.json @@ -15,9 +15,9 @@ "skipDefaultLibCheck": true, "baseUrl": ".", "paths": { - "@fridge-to-plate/app/core": ["libs/app/core/src/index.ts"] - - "@fridge-to-plate/app/signup": ["libs/app/signup/src/index.ts"] + "@fridge-to-plate/app/core": ["libs/app/core/src/index.ts"], + "@fridge-to-plate/app/signup": ["libs/app/signup/src/index.ts"], + "@fridge-to-plate/app/signup/feature": ["libs/app/signup/feature/src/index.ts"] } }, "exclude": ["node_modules", "tmp"] From 1544f7b68843e90ef1a0ed5e204fcc2adf6a6569 Mon Sep 17 00:00:00 2001 From: simphiwe-nonabe <106514948+simphiwe-nonabe@users.noreply.github.com> Date: Mon, 22 May 2023 08:22:43 +0200 Subject: [PATCH 23/55] =?UTF-8?q?=E2=9C=A8=20(app)=20signup=20html=20page?= =?UTF-8?q?=20created?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- libs/app/signup/feature/src/signup.page.html | 31 ++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 libs/app/signup/feature/src/signup.page.html diff --git a/libs/app/signup/feature/src/signup.page.html b/libs/app/signup/feature/src/signup.page.html new file mode 100644 index 00000000..9291bd23 --- /dev/null +++ b/libs/app/signup/feature/src/signup.page.html @@ -0,0 +1,31 @@ + + +
+ +

Create
New Account

+ +
+

Already have an account? Login

+
+ +
+ +

+ +

+ +

+ +

+
+ + + + +
+ + +
From da261c1ec71e7b37728adc1135980f5bc86be28e Mon Sep 17 00:00:00 2001 From: simphiwe-nonabe <106514948+simphiwe-nonabe@users.noreply.github.com> Date: Mon, 22 May 2023 09:26:15 +0200 Subject: [PATCH 24/55] (app) removed libs folder in signup folder --- libs/app/signup/feature/src/lib/app-signup-feature.spec.ts | 7 ------- libs/app/signup/feature/src/lib/app-signup-feature.ts | 3 --- 2 files changed, 10 deletions(-) delete mode 100644 libs/app/signup/feature/src/lib/app-signup-feature.spec.ts delete mode 100644 libs/app/signup/feature/src/lib/app-signup-feature.ts diff --git a/libs/app/signup/feature/src/lib/app-signup-feature.spec.ts b/libs/app/signup/feature/src/lib/app-signup-feature.spec.ts deleted file mode 100644 index 2acf5fc9..00000000 --- a/libs/app/signup/feature/src/lib/app-signup-feature.spec.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { appSignupFeature } from './app-signup-feature'; - -describe('appSignupFeature', () => { - it('should work', () => { - expect(appSignupFeature()).toEqual('app-signup-feature'); - }); -}); diff --git a/libs/app/signup/feature/src/lib/app-signup-feature.ts b/libs/app/signup/feature/src/lib/app-signup-feature.ts deleted file mode 100644 index af90a522..00000000 --- a/libs/app/signup/feature/src/lib/app-signup-feature.ts +++ /dev/null @@ -1,3 +0,0 @@ -export function appSignupFeature(): string { - return 'app-signup-feature'; -} From 2cd22747a3beecfef244ad8005c7ebad655a8610 Mon Sep 17 00:00:00 2001 From: Ryan Trickett Date: Mon, 22 May 2023 14:45:40 +0200 Subject: [PATCH 25/55] =?UTF-8?q?=F0=9F=94=80=20'dev'=20into=20profile-pag?= =?UTF-8?q?e?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/cd-dev.yml | 46 ++++++++++++++++++++++++++++++++++ .github/workflows/cd-prod.yml | 47 +++++++++++++++++++++++++++++++++++ .github/workflows/ci-dev.yml | 8 ++++-- .github/workflows/ci-prod.yml | 6 +++-- README.md | 3 +-- apps/app/src/styles.scss | 2 ++ apps/app/tailwind.config.js | 33 +++++++++++++++++++++++- 7 files changed, 138 insertions(+), 7 deletions(-) create mode 100644 .github/workflows/cd-dev.yml create mode 100644 .github/workflows/cd-prod.yml diff --git a/.github/workflows/cd-dev.yml b/.github/workflows/cd-dev.yml new file mode 100644 index 00000000..aa60d7b9 --- /dev/null +++ b/.github/workflows/cd-dev.yml @@ -0,0 +1,46 @@ +name: Development CI/CD + +on: + push: + branches: [ dev ] + +permissions: + contents: read + +jobs: + ci-workflow: + uses: ./.github/workflows/ci-dev.yml + secrets: inherit + + deploy-app: + + name: App Deployment + needs: ci-workflow + runs-on: ubuntu-latest + environment: Development + + steps: + - name: Checkout Repo + uses: actions/checkout@v3 + + - name: Configure AWS Credentials + uses: aws-actions/configure-aws-credentials@v1 + with: + aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} + aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} + aws-region: af-south-1 + + - name: Setup NodeJS and Cache + uses: actions/setup-node@v3 + with: + node-version: 16 + cache: 'npm' + + - name: Install Dependencies + run: npm install + + - name: Build App + run: npm run build:app:dev + + - name: Deploy App + run: aws s3 sync ./dist/apps/app s3://dev-fridgetoplate diff --git a/.github/workflows/cd-prod.yml b/.github/workflows/cd-prod.yml new file mode 100644 index 00000000..f7120209 --- /dev/null +++ b/.github/workflows/cd-prod.yml @@ -0,0 +1,47 @@ +name: CI/CD + +on: + push: + branches: [ main ] + +permissions: + contents: read + +jobs: + ci-workflow: + uses: ./.github/workflows/ci-prod.yml + secrets: inherit + + deploy-app: + + name: App Deployment + needs: ci-workflow + runs-on: ubuntu-latest + environment: Production + + steps: + - name: Checkout Repo + uses: actions/checkout@v3 + + - name: Configure AWS Credentials + uses: aws-actions/configure-aws-credentials@v1 + with: + aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} + aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} + aws-region: af-south-1 + + - name: Setup NodeJS and Cache + uses: actions/setup-node@v3 + with: + node-version: 16 + cache: 'npm' + + - name: Install Dependencies + run: npm install + + - name: Build App + run: npm run build:app:dev + + - name: Deploy App + if: success() + run: aws s3 sync ./dist/apps/app s3://fridgetoplate diff --git a/.github/workflows/ci-dev.yml b/.github/workflows/ci-dev.yml index 968c3fea..3fc0485f 100644 --- a/.github/workflows/ci-dev.yml +++ b/.github/workflows/ci-dev.yml @@ -2,9 +2,13 @@ name: Development CI on: push: - branches: [ dev, feat/* ] + branches: [ feat/* ] pull_request: branches: [ dev, feat/* ] + workflow_call: + secrets: + SONAR_TOKEN_API: + required: true permissions: contents: read @@ -82,4 +86,4 @@ jobs: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} SONAR_TOKEN: ${{ secrets.SONAR_TOKEN_APP }} with: - projectBaseDir: apps/app/ \ No newline at end of file + projectBaseDir: apps/app/ diff --git a/.github/workflows/ci-prod.yml b/.github/workflows/ci-prod.yml index cc423577..8b3450cd 100644 --- a/.github/workflows/ci-prod.yml +++ b/.github/workflows/ci-prod.yml @@ -1,10 +1,12 @@ name: Production CI on: - push: - branches: [ main ] pull_request: branches: [ main ] + workflow_call: + secrets: + SONAR_TOKEN_API: + required: true permissions: contents: read diff --git a/README.md b/README.md index e6338e9e..d8f27e66 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,4 @@ -# Spice Girls Inc. -## FridgeToPlate +# Spice Girls Inc. - FridgeToPlate - Project Description FridgeToPlate is a user-friendly app that utilizes preference AI and relational database models to gather recipes based on the ingredients found in the user's fridge. By providing access to delicious and wholesome meal ideas, this product aims to elevate the user's cooking experience. diff --git a/apps/app/src/styles.scss b/apps/app/src/styles.scss index 752847a7..8a13f2db 100644 --- a/apps/app/src/styles.scss +++ b/apps/app/src/styles.scss @@ -2,6 +2,8 @@ @tailwind components; @tailwind utilities; +@import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;600;700&family=Wix+Madefor+Display&display=swap'); + /* Core CSS required for Ionic components to work properly */ @import '~@ionic/angular/css/core.css'; diff --git a/apps/app/tailwind.config.js b/apps/app/tailwind.config.js index fe3294d0..cdbd445a 100644 --- a/apps/app/tailwind.config.js +++ b/apps/app/tailwind.config.js @@ -8,7 +8,38 @@ module.exports = { ...createGlobPatternsForDependencies(__dirname), ], theme: { - extend: {}, + extend: { + colors: { + 'background-light': '#F8F8F8', + 'background-dark': '#010127', + 'primary': '#C35214', + 'primary-highlight': '#E26310', + 'accept': '#2bc917', + 'reject': '#d70b0b' + }, + gridTemplateRows: { + 10: "repeat(10, minmax(0,1fr))", + 12: "repeat(12, minmax(0,1fr))", + }, + gridRowStart: { + 8: "8", + 9: "9", + 10: "10", + }, + gridRowEnd: { + 8: "8", + 9: '9', + 10: "10", + 11: "11", + 12: "12", + 13: "13", + }, + fontFamily: { + 'inter': ['Inter', 'sans-serif'], + 'wix-display': ['Wix Madefor Display', 'sans-serif'] + } + } + }, plugins: [], }; From 1e7e7fba2f439ef3c5cf94c947c74dc1ea8b0add Mon Sep 17 00:00:00 2001 From: Ryan Trickett Date: Mon, 22 May 2023 14:45:45 +0200 Subject: [PATCH 26/55] =?UTF-8?q?=F0=9F=92=84=20(app)=20Profile=20Page=20S?= =?UTF-8?q?tyling=20Updated?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- libs/app/core/src/core.module.ts | 2 +- .../app/profile/feature/src/profile.page.html | 113 +++++++++--------- libs/app/profile/feature/src/profile.page.ts | 12 +- 3 files changed, 69 insertions(+), 58 deletions(-) diff --git a/libs/app/core/src/core.module.ts b/libs/app/core/src/core.module.ts index 8291631f..0869ed24 100644 --- a/libs/app/core/src/core.module.ts +++ b/libs/app/core/src/core.module.ts @@ -10,7 +10,7 @@ import { RouteReuseStrategy } from "@angular/router"; declarations: [CoreShell, NxWelcomeComponent], imports: [ BrowserModule, - CoreRouting, + CoreRouting, IonicModule.forRoot()], providers: [{ provide: RouteReuseStrategy, useClass: IonicRouteStrategy }], bootstrap: [CoreShell], diff --git a/libs/app/profile/feature/src/profile.page.html b/libs/app/profile/feature/src/profile.page.html index ec0794f0..5db39600 100644 --- a/libs/app/profile/feature/src/profile.page.html +++ b/libs/app/profile/feature/src/profile.page.html @@ -1,68 +1,69 @@ - -
-
+
+
+
Profile Pic +
- -
-

John Doe

-

jdoe@gmail.com

-
- - -
- - -
-
- -
-

{{ recipe.name }}

-

Difficulty: {{ recipe.difficulty }}

- {{ tag }} -
+
+ +
+

John Doe

+

jdoe@gmail.com

+
+ + +
+ + +
+
+ +
+

{{ recipe.name }}

+

Difficulty: {{ recipe.difficulty }}

+ {{ tag }}
-
-
-
-
-
-

{{ingredient.name }} {{ ingredient.amount }}

-
- -
+
+
+
+
+
+
+

{{ingredient.name }} {{ ingredient.amount }}

+
+
- \ No newline at end of file +
\ No newline at end of file diff --git a/libs/app/profile/feature/src/profile.page.ts b/libs/app/profile/feature/src/profile.page.ts index 1635e0eb..9c5fa9c2 100644 --- a/libs/app/profile/feature/src/profile.page.ts +++ b/libs/app/profile/feature/src/profile.page.ts @@ -29,6 +29,16 @@ export class ProfilePage { difficulty: "Easy", tags: ["Winter", "Hearty"] }, + { + name: "Beef Stew", + difficulty: "Easy", + tags: ["Winter", "Hearty"] + }, + { + name: "Beef Stew", + difficulty: "Easy", + tags: ["Winter", "Hearty"] + }, ] ingredients = [ @@ -45,7 +55,7 @@ export class ProfilePage { amount: "200g" }, { - name: "Stock", + name: "Chicken Stock", amount: "500ml" }, ] From 91d4ae072927a76a68a525e48f84b35ef41df34c Mon Sep 17 00:00:00 2001 From: Ryan Trickett Date: Mon, 22 May 2023 14:48:04 +0200 Subject: [PATCH 27/55] =?UTF-8?q?=F0=9F=92=84=20(app)=20Removed=20Weird=20?= =?UTF-8?q?Page=20Styling?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- libs/app/profile/feature/src/profile.page.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libs/app/profile/feature/src/profile.page.html b/libs/app/profile/feature/src/profile.page.html index 5db39600..df783ae1 100644 --- a/libs/app/profile/feature/src/profile.page.html +++ b/libs/app/profile/feature/src/profile.page.html @@ -5,7 +5,7 @@ src="https://source.unsplash.com/150x150/?portrait" alt="Profile Pic" class="self-center w-40 border rounded-full mx-auto mt-16" /> - +
From 071d184b03a47abd48039e5b198ec23be6d9b66d Mon Sep 17 00:00:00 2001 From: Ryan Trickett Date: Mon, 22 May 2023 14:57:26 +0200 Subject: [PATCH 28/55] =?UTF-8?q?=F0=9F=92=84=20(app)=20Touched=20Up=20on?= =?UTF-8?q?=20Styling?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- libs/app/profile/feature/src/profile.page.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/libs/app/profile/feature/src/profile.page.html b/libs/app/profile/feature/src/profile.page.html index df783ae1..57a50e56 100644 --- a/libs/app/profile/feature/src/profile.page.html +++ b/libs/app/profile/feature/src/profile.page.html @@ -38,9 +38,9 @@

John Doe

From 54fc0d06d7f62c4404425d8f98a40c9218d02d8d Mon Sep 17 00:00:00 2001 From: Ryan Trickett Date: Mon, 22 May 2023 15:46:24 +0200 Subject: [PATCH 29/55] =?UTF-8?q?=E2=9C=85=20(app)=20Added=20Unit=20Tests?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../app/profile/feature/src/profile.page.html | 8 +- .../profile/feature/src/profile.page.spec.ts | 114 ++++++++++++++---- libs/app/profile/feature/src/profile.page.ts | 14 +-- 3 files changed, 102 insertions(+), 34 deletions(-) diff --git a/libs/app/profile/feature/src/profile.page.html b/libs/app/profile/feature/src/profile.page.html index 57a50e56..8358f025 100644 --- a/libs/app/profile/feature/src/profile.page.html +++ b/libs/app/profile/feature/src/profile.page.html @@ -10,8 +10,8 @@
-

John Doe

-

jdoe@gmail.com

+

{{ name }}

+

{{ email }}

@@ -19,7 +19,7 @@

John Doe

  • + (click)="displaySubpage('saved')"> Saved @@ -27,7 +27,7 @@

    John Doe

  • + (click)="displaySubpage('ingredients')"> Ingredients diff --git a/libs/app/profile/feature/src/profile.page.spec.ts b/libs/app/profile/feature/src/profile.page.spec.ts index c5ee58ce..32cc4913 100644 --- a/libs/app/profile/feature/src/profile.page.spec.ts +++ b/libs/app/profile/feature/src/profile.page.spec.ts @@ -1,23 +1,91 @@ -// import { TestBed } from "@angular/core/testing"; - -// describe("AppComponent", () => { -// beforeEach(async () => { -// await TestBed.configureTestingModule({ -// imports: [], -// declarations: [AppComponent, NxWelcomeComponent], -// }).compileComponents(); -// }); - -// it("should render title", () => { -// const fixture = TestBed.createComponent(AppComponent); -// fixture.detectChanges(); -// const compiled = fixture.nativeElement as HTMLElement; -// expect(compiled.querySelector("h1")?.textContent).toContain("Spice Girls"); -// }); - -// it(`should have as title 'FridgeToPlate'`, () => { -// const fixture = TestBed.createComponent(AppComponent); -// const app = fixture.componentInstance; -// expect(app.title).toEqual("FridgeToPlate"); -// }); -// }); +import { TestBed } from "@angular/core/testing"; +import { ProfilePage } from "./profile.page"; + +describe("ProfilePage", () => { + beforeEach(async () => { + await TestBed.configureTestingModule({ + imports: [], + declarations: [ProfilePage], + }).compileComponents(); + }); + + it("should render users name", () => { + const fixture = TestBed.createComponent(ProfilePage); + fixture.detectChanges(); + const compiled = fixture.nativeElement as HTMLElement; + const page = fixture.componentInstance; + expect(compiled.querySelector("h2")?.textContent).toContain(page.name); + }); + + it("should render users email", () => { + const fixture = TestBed.createComponent(ProfilePage); + fixture.detectChanges(); + const compiled = fixture.nativeElement as HTMLElement; + const page = fixture.componentInstance; + expect(compiled.querySelector("p")?.textContent).toContain(page.email); + }); + + it("should start on saved subpage", () => { + const fixture = TestBed.createComponent(ProfilePage); + const page = fixture.componentInstance; + expect(page.subpage).toEqual("saved"); + }); + + it("should change subpage to saved", () => { + const fixture = TestBed.createComponent(ProfilePage); + const page = fixture.componentInstance; + page.displaySubpage("saved"); + expect(page.subpage).toEqual("saved"); + }); + + it("should change subpage to ingredients", () => { + const fixture = TestBed.createComponent(ProfilePage); + const page = fixture.componentInstance; + page.displaySubpage("ingredients"); + expect(page.subpage).toEqual("ingredients"); + }); + + it("should remove correct ingredient from ingredients", () => { + const fixture = TestBed.createComponent(ProfilePage); + const page = fixture.componentInstance; + const mockIngredients = [ + { + name: "Tomato", + amount: "3" + }, + { + name: "Cucumber", + amount: "1" + }, + { + name: "Beef", + amount: "200g" + }, + { + name: "Chicken Stock", + amount: "500ml" + }, + ]; + + const mockFinalIngredients = [ + { + name: "Cucumber", + amount: "1" + }, + { + name: "Beef", + amount: "200g" + }, + { + name: "Chicken Stock", + amount: "500ml" + }, + ]; + + page.ingredients = mockIngredients; + + page.removeIngredient(0); + + expect(page.ingredients).toEqual(mockFinalIngredients); + }); +}); diff --git a/libs/app/profile/feature/src/profile.page.ts b/libs/app/profile/feature/src/profile.page.ts index 9c5fa9c2..19d33997 100644 --- a/libs/app/profile/feature/src/profile.page.ts +++ b/libs/app/profile/feature/src/profile.page.ts @@ -7,7 +7,11 @@ import { Component } from "@angular/core"; }) export class ProfilePage { - subpage = "saved"; + subpage : string = "saved"; + + name : string = "John Doe"; + email : string = "jdoe@gmail.com"; + recipes = [ { name: "Shrimp Pasta", @@ -59,13 +63,9 @@ export class ProfilePage { amount: "500ml" }, ] - - displayIngredients() { - this.subpage = "ingredients"; - } - displaySaved() { - this.subpage = "saved"; + displaySubpage(subpageName : string) { + this.subpage = subpageName; } removeIngredient(ingredientID: number) { From 04c244228d6a431ce85e934013967a94ad8548a5 Mon Sep 17 00:00:00 2001 From: kphutiyagae Date: Mon, 22 May 2023 18:11:43 +0200 Subject: [PATCH 30/55] feat(none): :construction: Added ingredients mock-data and fixed layout for stepper. --- .../src/app-recipe-recommendation.module.ts | 3 +- .../item-edit-step/item-edit-step.html | 0 .../item-edit-step/item-edit-step.scss | 0 .../item-edit-step/item-edit-step.spec.ts | 0 .../item-edit-step/item-edit-step.ts | 10 ++++ .../components/stepper-form/stepper-form.html | 4 +- .../components/stepper-form/stepper-form.ts | 3 ++ .../api/recipe-recommendation-api.ts | 0 .../src/data-access/mock-data/ingredients.ts | 51 +++++++++++++++++++ 9 files changed, 68 insertions(+), 3 deletions(-) create mode 100644 libs/app/recipe-recommendation/src/components/item-edit-step/item-edit-step.html create mode 100644 libs/app/recipe-recommendation/src/components/item-edit-step/item-edit-step.scss create mode 100644 libs/app/recipe-recommendation/src/components/item-edit-step/item-edit-step.spec.ts create mode 100644 libs/app/recipe-recommendation/src/components/item-edit-step/item-edit-step.ts create mode 100644 libs/app/recipe-recommendation/src/data-access/api/recipe-recommendation-api.ts create mode 100644 libs/app/recipe-recommendation/src/data-access/mock-data/ingredients.ts diff --git a/libs/app/recipe-recommendation/src/app-recipe-recommendation.module.ts b/libs/app/recipe-recommendation/src/app-recipe-recommendation.module.ts index c2045365..c3de646b 100644 --- a/libs/app/recipe-recommendation/src/app-recipe-recommendation.module.ts +++ b/libs/app/recipe-recommendation/src/app-recipe-recommendation.module.ts @@ -5,9 +5,10 @@ import {RecommendationRouting} from "./recommendation.routing"; import {IonicModule} from "@ionic/angular"; import {StepperForm} from "./components/stepper-form/stepper-form"; import {NzStepsModule} from "ng-zorro-antd/steps"; +import {ItemEditStep} from "./components/item-edit-step/item-edit-step"; @NgModule({ - declarations: [RecipeRecommendationPage, StepperForm], + declarations: [RecipeRecommendationPage, StepperForm, ItemEditStep], imports: [CommonModule, RecommendationRouting, IonicModule, NzStepsModule], }) export class AppRecipeRecommendationModule {} diff --git a/libs/app/recipe-recommendation/src/components/item-edit-step/item-edit-step.html b/libs/app/recipe-recommendation/src/components/item-edit-step/item-edit-step.html new file mode 100644 index 00000000..e69de29b diff --git a/libs/app/recipe-recommendation/src/components/item-edit-step/item-edit-step.scss b/libs/app/recipe-recommendation/src/components/item-edit-step/item-edit-step.scss new file mode 100644 index 00000000..e69de29b diff --git a/libs/app/recipe-recommendation/src/components/item-edit-step/item-edit-step.spec.ts b/libs/app/recipe-recommendation/src/components/item-edit-step/item-edit-step.spec.ts new file mode 100644 index 00000000..e69de29b diff --git a/libs/app/recipe-recommendation/src/components/item-edit-step/item-edit-step.ts b/libs/app/recipe-recommendation/src/components/item-edit-step/item-edit-step.ts new file mode 100644 index 00000000..ec083acc --- /dev/null +++ b/libs/app/recipe-recommendation/src/components/item-edit-step/item-edit-step.ts @@ -0,0 +1,10 @@ +import { Component } from '@angular/core'; + +@Component({ + selector: 'app-item-edit-step', + templateUrl: './item-edit-step.html', + styleUrls: ['item-edit-step.scss'] +}) +export class ItemEditStep { + +} diff --git a/libs/app/recipe-recommendation/src/components/stepper-form/stepper-form.html b/libs/app/recipe-recommendation/src/components/stepper-form/stepper-form.html index 82bcbc13..17c3f3eb 100644 --- a/libs/app/recipe-recommendation/src/components/stepper-form/stepper-form.html +++ b/libs/app/recipe-recommendation/src/components/stepper-form/stepper-form.html @@ -1,7 +1,7 @@
    - + @@ -15,6 +15,6 @@ Previous
    -
    {{stepContent}}
    +
    {{step}}
    diff --git a/libs/app/recipe-recommendation/src/components/stepper-form/stepper-form.ts b/libs/app/recipe-recommendation/src/components/stepper-form/stepper-form.ts index 49cab478..a1b5dcf0 100644 --- a/libs/app/recipe-recommendation/src/components/stepper-form/stepper-form.ts +++ b/libs/app/recipe-recommendation/src/components/stepper-form/stepper-form.ts @@ -1,5 +1,6 @@ import {Component, OnInit} from "@angular/core"; import {FormBuilder, FormGroup, Validators} from "@angular/forms"; +import {ItemEditStep} from "../item-edit-step/item-edit-step"; @Component({ selector: 'app-stepper-form', @@ -15,6 +16,8 @@ export class StepperForm implements OnInit{ stepContent = `Start`; + step = ItemEditStep; + recipePreferencesForm!: FormGroup; changeContent(): void { switch (this.currentStep) { diff --git a/libs/app/recipe-recommendation/src/data-access/api/recipe-recommendation-api.ts b/libs/app/recipe-recommendation/src/data-access/api/recipe-recommendation-api.ts new file mode 100644 index 00000000..e69de29b diff --git a/libs/app/recipe-recommendation/src/data-access/mock-data/ingredients.ts b/libs/app/recipe-recommendation/src/data-access/mock-data/ingredients.ts new file mode 100644 index 00000000..2ff2019b --- /dev/null +++ b/libs/app/recipe-recommendation/src/data-access/mock-data/ingredients.ts @@ -0,0 +1,51 @@ +const ingredientsArray = [ + { + name: 'Milk', + quantity: 1, + metadata: { + amountPerUnit: 1000, + unit: 'ml' + } + }, + { + name: 'Onions', + quantity: 5, + metadata: { + amountPerUnit: 100, + unit: 'g' + } + }, + { + name: 'Beef', + quantity: 2, + metadata: { + amountPerUnit: 1000, + unit: 'g' + } + }, + { + name: 'Pasta', + quantity: 3, + metadata: { + amountPerUnit: 500, + unit: 'g' + } + }, + { + name: 'Tomatoes', + quantity: 4, + metadata: { + amountPerUnit: 100, + unit: 'g' + } + }, + { + name: 'Chicken', + quantity: 5, + metadata: { + amountPerUnit: 1000, + unit: 'g' + } + } + +] From 5970a99c95a574aaa225b6b01a8acf748d082879 Mon Sep 17 00:00:00 2001 From: kphutiyagae Date: Mon, 22 May 2023 18:26:29 +0200 Subject: [PATCH 31/55] feat(none): :construction: Added mock state for ingredients. --- .../api/recipe-recommendation-api.ts | 2 ++ .../src/data-access/mock-data/ingredients.ts | 18 +++++++++++- .../src/data-access/store/state.ts | 28 +++++++++++++++++++ 3 files changed, 47 insertions(+), 1 deletion(-) create mode 100644 libs/app/recipe-recommendation/src/data-access/store/state.ts diff --git a/libs/app/recipe-recommendation/src/data-access/api/recipe-recommendation-api.ts b/libs/app/recipe-recommendation/src/data-access/api/recipe-recommendation-api.ts index e69de29b..4b445a87 100644 --- a/libs/app/recipe-recommendation/src/data-access/api/recipe-recommendation-api.ts +++ b/libs/app/recipe-recommendation/src/data-access/api/recipe-recommendation-api.ts @@ -0,0 +1,2 @@ +import {ingredientsArray} from '../mock-data/ingredients'; + diff --git a/libs/app/recipe-recommendation/src/data-access/mock-data/ingredients.ts b/libs/app/recipe-recommendation/src/data-access/mock-data/ingredients.ts index 2ff2019b..a0d0078a 100644 --- a/libs/app/recipe-recommendation/src/data-access/mock-data/ingredients.ts +++ b/libs/app/recipe-recommendation/src/data-access/mock-data/ingredients.ts @@ -1,5 +1,16 @@ -const ingredientsArray = [ +export interface IngredientItem { + id: number; + name: string; + quantity: number; + metadata ?: { + amountPerUnit?: number; + unit?: string; + } +} + +export const ingredientsArray: IngredientItem[] = [ { + id: 0, name: 'Milk', quantity: 1, metadata: { @@ -8,6 +19,7 @@ const ingredientsArray = [ } }, { + id: 1, name: 'Onions', quantity: 5, metadata: { @@ -16,6 +28,7 @@ const ingredientsArray = [ } }, { + id: 2, name: 'Beef', quantity: 2, metadata: { @@ -24,6 +37,7 @@ const ingredientsArray = [ } }, { + id: 3, name: 'Pasta', quantity: 3, metadata: { @@ -32,6 +46,7 @@ const ingredientsArray = [ } }, { + id: 4, name: 'Tomatoes', quantity: 4, metadata: { @@ -40,6 +55,7 @@ const ingredientsArray = [ } }, { + id: 5, name: 'Chicken', quantity: 5, metadata: { diff --git a/libs/app/recipe-recommendation/src/data-access/store/state.ts b/libs/app/recipe-recommendation/src/data-access/store/state.ts new file mode 100644 index 00000000..9c9b279d --- /dev/null +++ b/libs/app/recipe-recommendation/src/data-access/store/state.ts @@ -0,0 +1,28 @@ +import {IngredientItem, ingredientsArray} from "../mock-data/ingredients"; + +export function getAllIngredients() { + return ingredientsArray; +} + +export function addIngredient(ingredient: IngredientItem, ingredents: IngredientItem[]){ + if(!ingredient) return; + + const item = ingredents.find( (item) => item.id === ingredient.id); + + if(item) return; + + ingredents.push(ingredient); +} + +export function removeIngredient(ingredient: IngredientItem, ingredients: IngredientItem[]){ + if(!ingredient) return; + + const item = ingredients.find( (item) => item.id === ingredient.id); + + if(!item) return; + + ingredients.filter( (ing) => ing.id !== item.id); + + return +} + From 8536eded572d4e7704e43fd35df8ade7d5b88544 Mon Sep 17 00:00:00 2001 From: kphutiyagae Date: Mon, 22 May 2023 18:50:13 +0200 Subject: [PATCH 32/55] feat(none): :construction: Added per-step rendering of components. --- .../components/item-edit-step/item-edit-step.html | 3 +++ .../src/components/item-edit-step/item-edit-step.ts | 7 +++++++ .../src/components/stepper-form/stepper-form.html | 12 +++++++++++- 3 files changed, 21 insertions(+), 1 deletion(-) diff --git a/libs/app/recipe-recommendation/src/components/item-edit-step/item-edit-step.html b/libs/app/recipe-recommendation/src/components/item-edit-step/item-edit-step.html index e69de29b..f562c5b9 100644 --- a/libs/app/recipe-recommendation/src/components/item-edit-step/item-edit-step.html +++ b/libs/app/recipe-recommendation/src/components/item-edit-step/item-edit-step.html @@ -0,0 +1,3 @@ +
    +

    Item edit step works

    +
    diff --git a/libs/app/recipe-recommendation/src/components/item-edit-step/item-edit-step.ts b/libs/app/recipe-recommendation/src/components/item-edit-step/item-edit-step.ts index ec083acc..84442389 100644 --- a/libs/app/recipe-recommendation/src/components/item-edit-step/item-edit-step.ts +++ b/libs/app/recipe-recommendation/src/components/item-edit-step/item-edit-step.ts @@ -1,4 +1,6 @@ import { Component } from '@angular/core'; +import {IngredientItem} from "../../data-access/mock-data/ingredients"; +import {getAllIngredients} from "../../data-access/store/state"; @Component({ selector: 'app-item-edit-step', @@ -7,4 +9,9 @@ import { Component } from '@angular/core'; }) export class ItemEditStep { + items: IngredientItem[] = getAllIngredients(); + + constructor() { + console.log(this.items); + } } diff --git a/libs/app/recipe-recommendation/src/components/stepper-form/stepper-form.html b/libs/app/recipe-recommendation/src/components/stepper-form/stepper-form.html index 17c3f3eb..59ef33d8 100644 --- a/libs/app/recipe-recommendation/src/components/stepper-form/stepper-form.html +++ b/libs/app/recipe-recommendation/src/components/stepper-form/stepper-form.html @@ -15,6 +15,16 @@ Previous
  • -
    {{step}}
    +
    + + + + +
    Step 2
    +
    + +
    Step 3
    +
    +
    From 06370d357dc020748137c1363c1c2cdf32ee324c Mon Sep 17 00:00:00 2001 From: kphutiyagae Date: Mon, 22 May 2023 18:58:11 +0200 Subject: [PATCH 33/55] feat(none): :construction: Added Recipe Preferences and list steps. --- .../src/app-recipe-recommendation.module.ts | 4 +++- .../recipe-list-step/recipe-list-step.html | 3 +++ .../recipe-list-step/recipe-list-step.scss | 0 .../recipe-list-step/recipe-list-step.spec.ts | 0 .../components/recipe-list-step/recipe-list-step.ts | 12 ++++++++++++ .../recipe-preferences-step.html | 3 +++ .../recipe-preferences-step.scss | 0 .../recipe-preferences-step.spec.ts | 0 .../recipe-preferences-step.ts | 12 ++++++++++++ .../src/components/stepper-form/stepper-form.html | 4 ++-- 10 files changed, 35 insertions(+), 3 deletions(-) create mode 100644 libs/app/recipe-recommendation/src/components/recipe-list-step/recipe-list-step.html create mode 100644 libs/app/recipe-recommendation/src/components/recipe-list-step/recipe-list-step.scss create mode 100644 libs/app/recipe-recommendation/src/components/recipe-list-step/recipe-list-step.spec.ts create mode 100644 libs/app/recipe-recommendation/src/components/recipe-list-step/recipe-list-step.ts create mode 100644 libs/app/recipe-recommendation/src/components/recipe-preferences-step/recipe-preferences-step.html create mode 100644 libs/app/recipe-recommendation/src/components/recipe-preferences-step/recipe-preferences-step.scss create mode 100644 libs/app/recipe-recommendation/src/components/recipe-preferences-step/recipe-preferences-step.spec.ts create mode 100644 libs/app/recipe-recommendation/src/components/recipe-preferences-step/recipe-preferences-step.ts diff --git a/libs/app/recipe-recommendation/src/app-recipe-recommendation.module.ts b/libs/app/recipe-recommendation/src/app-recipe-recommendation.module.ts index c3de646b..d99f72b2 100644 --- a/libs/app/recipe-recommendation/src/app-recipe-recommendation.module.ts +++ b/libs/app/recipe-recommendation/src/app-recipe-recommendation.module.ts @@ -6,9 +6,11 @@ import {IonicModule} from "@ionic/angular"; import {StepperForm} from "./components/stepper-form/stepper-form"; import {NzStepsModule} from "ng-zorro-antd/steps"; import {ItemEditStep} from "./components/item-edit-step/item-edit-step"; +import {RecipePreferencesStep} from "./components/recipe-preferences-step/recipe-preferences-step"; +import {RecipeListStep} from "./components/recipe-list-step/recipe-list-step"; @NgModule({ - declarations: [RecipeRecommendationPage, StepperForm, ItemEditStep], + declarations: [RecipeRecommendationPage, StepperForm, ItemEditStep, RecipePreferencesStep, RecipeListStep], imports: [CommonModule, RecommendationRouting, IonicModule, NzStepsModule], }) export class AppRecipeRecommendationModule {} diff --git a/libs/app/recipe-recommendation/src/components/recipe-list-step/recipe-list-step.html b/libs/app/recipe-recommendation/src/components/recipe-list-step/recipe-list-step.html new file mode 100644 index 00000000..c129f87a --- /dev/null +++ b/libs/app/recipe-recommendation/src/components/recipe-list-step/recipe-list-step.html @@ -0,0 +1,3 @@ +
    + Recipe list result +
    diff --git a/libs/app/recipe-recommendation/src/components/recipe-list-step/recipe-list-step.scss b/libs/app/recipe-recommendation/src/components/recipe-list-step/recipe-list-step.scss new file mode 100644 index 00000000..e69de29b diff --git a/libs/app/recipe-recommendation/src/components/recipe-list-step/recipe-list-step.spec.ts b/libs/app/recipe-recommendation/src/components/recipe-list-step/recipe-list-step.spec.ts new file mode 100644 index 00000000..e69de29b diff --git a/libs/app/recipe-recommendation/src/components/recipe-list-step/recipe-list-step.ts b/libs/app/recipe-recommendation/src/components/recipe-list-step/recipe-list-step.ts new file mode 100644 index 00000000..8270ef5b --- /dev/null +++ b/libs/app/recipe-recommendation/src/components/recipe-list-step/recipe-list-step.ts @@ -0,0 +1,12 @@ +import { Component } from '@angular/core'; + +@Component({ + selector: 'app-recipe-list-step', + templateUrl: './recipe-list-step.html', + styleUrls: ['recipe-list-step.scss'] +}) +export class RecipeListStep { + + constructor() { + } +} diff --git a/libs/app/recipe-recommendation/src/components/recipe-preferences-step/recipe-preferences-step.html b/libs/app/recipe-recommendation/src/components/recipe-preferences-step/recipe-preferences-step.html new file mode 100644 index 00000000..49c7143c --- /dev/null +++ b/libs/app/recipe-recommendation/src/components/recipe-preferences-step/recipe-preferences-step.html @@ -0,0 +1,3 @@ +
    + recipe Prefs Step +
    diff --git a/libs/app/recipe-recommendation/src/components/recipe-preferences-step/recipe-preferences-step.scss b/libs/app/recipe-recommendation/src/components/recipe-preferences-step/recipe-preferences-step.scss new file mode 100644 index 00000000..e69de29b diff --git a/libs/app/recipe-recommendation/src/components/recipe-preferences-step/recipe-preferences-step.spec.ts b/libs/app/recipe-recommendation/src/components/recipe-preferences-step/recipe-preferences-step.spec.ts new file mode 100644 index 00000000..e69de29b diff --git a/libs/app/recipe-recommendation/src/components/recipe-preferences-step/recipe-preferences-step.ts b/libs/app/recipe-recommendation/src/components/recipe-preferences-step/recipe-preferences-step.ts new file mode 100644 index 00000000..4dfe2df0 --- /dev/null +++ b/libs/app/recipe-recommendation/src/components/recipe-preferences-step/recipe-preferences-step.ts @@ -0,0 +1,12 @@ +import { Component } from '@angular/core'; + +@Component({ + selector: 'app-recipe-preferences-step', + templateUrl: './recipe-preferences-step.html', + styleUrls: ['recipe-preferences-step.scss'] +}) +export class RecipePreferencesStep { + + constructor() { + } +} diff --git a/libs/app/recipe-recommendation/src/components/stepper-form/stepper-form.html b/libs/app/recipe-recommendation/src/components/stepper-form/stepper-form.html index 59ef33d8..e3db2ced 100644 --- a/libs/app/recipe-recommendation/src/components/stepper-form/stepper-form.html +++ b/libs/app/recipe-recommendation/src/components/stepper-form/stepper-form.html @@ -20,10 +20,10 @@ -
    Step 2
    +
    -
    Step 3
    +
    From e408d9cbf6f4bfe30cf8a46b7fadb8b7ed396d6e Mon Sep 17 00:00:00 2001 From: kphutiyagae Date: Mon, 22 May 2023 20:06:37 +0200 Subject: [PATCH 34/55] feat(none): :lipstick: WIP: Styled action buttons for stepper component. --- .../src/app-recipe-recommendation.module.ts | 3 ++- .../item-edit-step/item-edit-step.html | 11 +++++++++- .../item-edit-step/item-edit-step.ts | 3 +++ .../components/stepper-form/stepper-form.html | 21 ++++++++++++------- 4 files changed, 28 insertions(+), 10 deletions(-) diff --git a/libs/app/recipe-recommendation/src/app-recipe-recommendation.module.ts b/libs/app/recipe-recommendation/src/app-recipe-recommendation.module.ts index d99f72b2..c2783018 100644 --- a/libs/app/recipe-recommendation/src/app-recipe-recommendation.module.ts +++ b/libs/app/recipe-recommendation/src/app-recipe-recommendation.module.ts @@ -8,9 +8,10 @@ import {NzStepsModule} from "ng-zorro-antd/steps"; import {ItemEditStep} from "./components/item-edit-step/item-edit-step"; import {RecipePreferencesStep} from "./components/recipe-preferences-step/recipe-preferences-step"; import {RecipeListStep} from "./components/recipe-list-step/recipe-list-step"; +import {NzListModule} from "ng-zorro-antd/list"; @NgModule({ declarations: [RecipeRecommendationPage, StepperForm, ItemEditStep, RecipePreferencesStep, RecipeListStep], - imports: [CommonModule, RecommendationRouting, IonicModule, NzStepsModule], + imports: [CommonModule, RecommendationRouting, IonicModule, NzStepsModule, NzListModule], }) export class AppRecipeRecommendationModule {} diff --git a/libs/app/recipe-recommendation/src/components/item-edit-step/item-edit-step.html b/libs/app/recipe-recommendation/src/components/item-edit-step/item-edit-step.html index f562c5b9..e2c60cd8 100644 --- a/libs/app/recipe-recommendation/src/components/item-edit-step/item-edit-step.html +++ b/libs/app/recipe-recommendation/src/components/item-edit-step/item-edit-step.html @@ -1,3 +1,12 @@
    -

    Item edit step works

    + + + + {{item.name}} + + + + +
    Oops, your fridge is empty
    +
    diff --git a/libs/app/recipe-recommendation/src/components/item-edit-step/item-edit-step.ts b/libs/app/recipe-recommendation/src/components/item-edit-step/item-edit-step.ts index 84442389..abbfe33e 100644 --- a/libs/app/recipe-recommendation/src/components/item-edit-step/item-edit-step.ts +++ b/libs/app/recipe-recommendation/src/components/item-edit-step/item-edit-step.ts @@ -1,6 +1,7 @@ import { Component } from '@angular/core'; import {IngredientItem} from "../../data-access/mock-data/ingredients"; import {getAllIngredients} from "../../data-access/store/state"; +import {Observable, BehaviorSubject} from "rxjs"; @Component({ selector: 'app-item-edit-step', @@ -11,6 +12,8 @@ export class ItemEditStep { items: IngredientItem[] = getAllIngredients(); + ingredientItems$ = new BehaviorSubject(this.items); + constructor() { console.log(this.items); } diff --git a/libs/app/recipe-recommendation/src/components/stepper-form/stepper-form.html b/libs/app/recipe-recommendation/src/components/stepper-form/stepper-form.html index e3db2ced..1432ec38 100644 --- a/libs/app/recipe-recommendation/src/components/stepper-form/stepper-form.html +++ b/libs/app/recipe-recommendation/src/components/stepper-form/stepper-form.html @@ -1,14 +1,19 @@
    -
    - - - - - +
    +
    +

    Title

    +
    +
    + + + + + +
    -
    - +
    +
    + + +
    Oops, your fridge is empty
    diff --git a/libs/app/recipe-recommendation/src/components/item-edit-step/item-edit-step.ts b/libs/app/recipe-recommendation/src/components/item-edit-step/item-edit-step.ts index abbfe33e..3a4e0dd3 100644 --- a/libs/app/recipe-recommendation/src/components/item-edit-step/item-edit-step.ts +++ b/libs/app/recipe-recommendation/src/components/item-edit-step/item-edit-step.ts @@ -1,6 +1,6 @@ import { Component } from '@angular/core'; import {IngredientItem} from "../../data-access/mock-data/ingredients"; -import {getAllIngredients} from "../../data-access/store/state"; +import {getAllIngredients, removeIngredient} from "../../data-access/store/state"; import {Observable, BehaviorSubject} from "rxjs"; @Component({ @@ -14,6 +14,10 @@ export class ItemEditStep { ingredientItems$ = new BehaviorSubject(this.items); + removeItem(item: IngredientItem){ + this.ingredientItems$.next(removeIngredient(item, this.items)); + } + constructor() { console.log(this.items); } diff --git a/libs/app/recipe-recommendation/src/components/stepper-form/stepper-form.html b/libs/app/recipe-recommendation/src/components/stepper-form/stepper-form.html index 1432ec38..175aa226 100644 --- a/libs/app/recipe-recommendation/src/components/stepper-form/stepper-form.html +++ b/libs/app/recipe-recommendation/src/components/stepper-form/stepper-form.html @@ -12,15 +12,15 @@

    Title

    -
    -
    -
    +
    diff --git a/libs/app/recipe-recommendation/src/data-access/store/state.ts b/libs/app/recipe-recommendation/src/data-access/store/state.ts index 9c9b279d..40b62b0b 100644 --- a/libs/app/recipe-recommendation/src/data-access/store/state.ts +++ b/libs/app/recipe-recommendation/src/data-access/store/state.ts @@ -14,15 +14,15 @@ export function addIngredient(ingredient: IngredientItem, ingredents: Ingredient ingredents.push(ingredient); } -export function removeIngredient(ingredient: IngredientItem, ingredients: IngredientItem[]){ - if(!ingredient) return; +export function removeIngredient(ingredient: IngredientItem, ingredients: IngredientItem[]): IngredientItem[]{ + if(!ingredient) return ingredients; const item = ingredients.find( (item) => item.id === ingredient.id); - if(!item) return; + if(!item) return ingredients; - ingredients.filter( (ing) => ing.id !== item.id); + ingredients = ingredients.filter( (ing) => ing.id !== item.id); - return + return ingredients; } From 91440d1cc456facf8a8bbc149cfa620b773a2e25 Mon Sep 17 00:00:00 2001 From: simphiwe-nonabe <106514948+simphiwe-nonabe@users.noreply.github.com> Date: Mon, 22 May 2023 21:04:04 +0200 Subject: [PATCH 36/55] =?UTF-8?q?=E2=9C=A8=20(app)=20signup=20page=20compo?= =?UTF-8?q?nent=20created?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- libs/app/signup/feature/src/signup.page.ts | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 libs/app/signup/feature/src/signup.page.ts diff --git a/libs/app/signup/feature/src/signup.page.ts b/libs/app/signup/feature/src/signup.page.ts new file mode 100644 index 00000000..4de00f38 --- /dev/null +++ b/libs/app/signup/feature/src/signup.page.ts @@ -0,0 +1,8 @@ +import { Component } from "@angular/core"; + +@Component({ + selector: "signup-page", + templateUrl: "./signup.page.html", + styleUrls: ["./signup.page.scss"], +}) +export class SignupPage {} From ca286db79295df9631bcff20d9763e521ad69da0 Mon Sep 17 00:00:00 2001 From: simphiwe-nonabe <106514948+simphiwe-nonabe@users.noreply.github.com> Date: Mon, 22 May 2023 21:06:51 +0200 Subject: [PATCH 37/55] =?UTF-8?q?=E2=9C=A8=20(app)=20signup=20page=20routi?= =?UTF-8?q?ng=20created?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- libs/app/signup/feature/src/signup.routing.ts | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 libs/app/signup/feature/src/signup.routing.ts diff --git a/libs/app/signup/feature/src/signup.routing.ts b/libs/app/signup/feature/src/signup.routing.ts new file mode 100644 index 00000000..835598fb --- /dev/null +++ b/libs/app/signup/feature/src/signup.routing.ts @@ -0,0 +1,17 @@ +import { NgModule } from '@angular/core'; +import { RouterModule, Routes } from '@angular/router'; +import { SignupPage } from './signup.page'; + +const routes: Routes = [ + { + path: '', + pathMatch: 'full', + component: SignupPage, + }, +]; + +@NgModule({ + imports: [RouterModule.forChild(routes)], + exports: [RouterModule], +}) +export class SignupRouting {} From 19b4917d438f5d7da52990973d4339d420c09cb7 Mon Sep 17 00:00:00 2001 From: simphiwe-nonabe <106514948+simphiwe-nonabe@users.noreply.github.com> Date: Mon, 22 May 2023 21:12:18 +0200 Subject: [PATCH 38/55] =?UTF-8?q?=E2=9C=A8=20(app)=20=20signup=20scss=20an?= =?UTF-8?q?d=20modules=20files=20created?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- libs/app/signup/feature/src/signup.module.ts | 15 +++++++++++++++ libs/app/signup/feature/src/signup.page.scss | 0 2 files changed, 15 insertions(+) create mode 100644 libs/app/signup/feature/src/signup.module.ts create mode 100644 libs/app/signup/feature/src/signup.page.scss diff --git a/libs/app/signup/feature/src/signup.module.ts b/libs/app/signup/feature/src/signup.module.ts new file mode 100644 index 00000000..8bbc1f06 --- /dev/null +++ b/libs/app/signup/feature/src/signup.module.ts @@ -0,0 +1,15 @@ +import { NgModule } from '@angular/core'; +import { IonicModule } from '@ionic/angular'; +import { CommonModule } from '@angular/common'; +import { SignupPage } from './signup.page'; +import { SignupRouting } from './signup.routing'; + +@NgModule({ + imports: [ + CommonModule, + SignupRouting, + IonicModule, + ], + declarations: [SignupPage], +}) +export class SignupModule {} diff --git a/libs/app/signup/feature/src/signup.page.scss b/libs/app/signup/feature/src/signup.page.scss new file mode 100644 index 00000000..e69de29b From cfdad9512c3f6b0b2c4a7714d82591539ce0764c Mon Sep 17 00:00:00 2001 From: simphiwe-nonabe <106514948+simphiwe-nonabe@users.noreply.github.com> Date: Mon, 22 May 2023 21:13:56 +0200 Subject: [PATCH 39/55] =?UTF-8?q?=E2=9C=A8=20(app)=20test-setup=20file=20c?= =?UTF-8?q?reated?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- libs/app/signup/feature/src/test-setup.ts | 1 + 1 file changed, 1 insertion(+) create mode 100644 libs/app/signup/feature/src/test-setup.ts diff --git a/libs/app/signup/feature/src/test-setup.ts b/libs/app/signup/feature/src/test-setup.ts new file mode 100644 index 00000000..1100b3e8 --- /dev/null +++ b/libs/app/signup/feature/src/test-setup.ts @@ -0,0 +1 @@ +import 'jest-preset-angular/setup-jest'; From 604714742a75c17e4a5a9c9bfea012a724beb0da Mon Sep 17 00:00:00 2001 From: simphiwe-nonabe <106514948+simphiwe-nonabe@users.noreply.github.com> Date: Mon, 22 May 2023 21:30:31 +0200 Subject: [PATCH 40/55] =?UTF-8?q?=F0=9F=8E=A8=20(app)=20routing=20added=20?= =?UTF-8?q?in=20core?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- libs/app/core/src/core.routing.ts | 4 ++++ libs/app/signup/feature/src/index.ts | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/libs/app/core/src/core.routing.ts b/libs/app/core/src/core.routing.ts index 4ef38863..19aef868 100644 --- a/libs/app/core/src/core.routing.ts +++ b/libs/app/core/src/core.routing.ts @@ -8,6 +8,10 @@ const routes: Routes = [ pathMatch: 'full', component: NxWelcomeComponent, }, + { + path: 'signup', + loadChildren: () => import('@fridge-to-plate/app/signup/feature').then((m) => m.SignupModule), + }, ]; diff --git a/libs/app/signup/feature/src/index.ts b/libs/app/signup/feature/src/index.ts index 5bbf0f4b..f3f34156 100644 --- a/libs/app/signup/feature/src/index.ts +++ b/libs/app/signup/feature/src/index.ts @@ -1 +1 @@ -export * from './lib/app-signup-feature'; +export * from './signup.module'; From 2ed80e2176d123c6fe4e28f1fe5fad208cb24297 Mon Sep 17 00:00:00 2001 From: Azola Date: Mon, 22 May 2023 22:11:40 +0200 Subject: [PATCH 41/55] =?UTF-8?q?=F0=9F=9A=A7=20(App)=20Finishing=20Login?= =?UTF-8?q?=20Page=20Setup?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- libs/app/core/src/core.module.ts | 4 ++- libs/app/core/src/core.routing.ts | 2 +- libs/app/login/feature/README.md | 4 +-- libs/app/login/feature/img/Logo.png | Bin 0 -> 8653 bytes libs/app/login/feature/jest.config.ts | 4 +-- libs/app/login/feature/project.json | 10 +++--- libs/app/login/feature/src/login.page.html | 34 +++++++++++++++++---- libs/app/login/feature/src/login.page.scss | 6 ++-- libs/app/login/feature/src/login.page.ts | 4 +++ libs/app/login/feature/tsconfig.spec.json | 2 +- tsconfig.base.json | 5 ++- 11 files changed, 54 insertions(+), 21 deletions(-) create mode 100644 libs/app/login/feature/img/Logo.png diff --git a/libs/app/core/src/core.module.ts b/libs/app/core/src/core.module.ts index 8291631f..ae49f31c 100644 --- a/libs/app/core/src/core.module.ts +++ b/libs/app/core/src/core.module.ts @@ -5,12 +5,14 @@ import { NxWelcomeComponent } from "./nx-welcome.component"; import { CoreRouting } from "./core.routing"; import { IonicModule, IonicRouteStrategy } from "@ionic/angular"; import { RouteReuseStrategy } from "@angular/router"; +import { LoginModule } from '@fridge-to-plate/app/login/feature'; @NgModule({ declarations: [CoreShell, NxWelcomeComponent], imports: [ BrowserModule, - CoreRouting, + LoginModule, + CoreRouting, IonicModule.forRoot()], providers: [{ provide: RouteReuseStrategy, useClass: IonicRouteStrategy }], bootstrap: [CoreShell], diff --git a/libs/app/core/src/core.routing.ts b/libs/app/core/src/core.routing.ts index e41653c5..93281fdb 100644 --- a/libs/app/core/src/core.routing.ts +++ b/libs/app/core/src/core.routing.ts @@ -10,7 +10,7 @@ const routes: Routes = [ }, { path: 'login', - loadChildren: () => import('@fri').then((m) => m.LoginModule), + loadChildren: () => import('@fridge-to-plate/app/login/feature').then((m) => m.LoginModule), }, ]; diff --git a/libs/app/login/feature/README.md b/libs/app/login/feature/README.md index be3db723..c89e79a5 100644 --- a/libs/app/login/feature/README.md +++ b/libs/app/login/feature/README.md @@ -1,7 +1,7 @@ -# app-profile-feature +# app-login-feature This library was generated with [Nx](https://nx.dev). ## Running unit tests -Run `nx test app-profile-feature` to execute the unit tests. +Run `nx test app-login-feature` to execute the unit tests. diff --git a/libs/app/login/feature/img/Logo.png b/libs/app/login/feature/img/Logo.png new file mode 100644 index 0000000000000000000000000000000000000000..2ad499bad9dedfc38f466201129a9083bc3f8646 GIT binary patch literal 8653 zcmV;;Au`^HP)?5r%Qkx1>DeasiPqV*ft{ zg9lIIAu0AC_T-oDHn^_K-wC9Z0TB0f{A>?YJ%j&E;dwvA`UgTx|I|OY+hGcgjt7Wq zeD$ke4J<5(3CA)2>pIWi62tQzlu|q)W$bYwqDO=n{s$qJm&GoIAvC%H#?6~IgO(Ne zT$!v!#Ud*f;jiQ1{8yxO-iKmeG|fX#h+PV8A-V&>p`oGPrKN%ILS-LWO;~q>^$Mn- z&X*iVeqD$U-WR(Bn!ue8IX*rfNhA_|>Ga6l9n}@ydOhOSCo{bApGG3)`FwtAN_082 zh3IgcJ$u$D6bfcGJNTK^cEJ#9?ZkRZwZ%}L`td@+feIh`KSJCU_Zo>^39Z1Lk5D`w z@BQEd=a10lKD(Nj)u^S$^;H?x;!hpNI1iUGCAth+fjbzUG8*&q^FfgJq19?yZ`nwl zSF5t?ipSaDgChS)By#wO=ptwWcQDSKJ7oW&(~A`BYVyY!g^djcbv46_FW&d&)2lzaI=9K6U>5 z`Htp@_P`woKl66%*s<{J>})@x56^>W57lavZQ-5QS=U<1fVKE`G-_N(BtBdc9SE(! zoe8FmjZ7wErcz=A`w!iDXuIUCeC=lK1urJ!E6JqzyFlRZuXSRyLKCuO z_h2dhA{ILwYZr+%fjbPmB~MRJo6%@A;JTIBHz8UZ^{hwUN<|i5M3mxSXo=P&WvJ{7t$=tWl({E;K0B@e=0TnT@d7-?L7O|XjEtM z98s0UTMh)oua`<6zTrLCRA>e6FpQ0j1(L~R5M+Ju&e2XGFR_sl%a~<}m+(zac@4X! zesE3T4gtL*)YoM8EfhKo`yd87i@4ROoA^MOE%;Jj-^8yp+Y@U7cL%;%7 z>nibK*!%BeBOn?KP2dgyTkE%P-!>3FL-x%$+u4n`dZ??!pD~Pkp2me55Doltn!p_Z z27l>)ZQEw}tOeC)%|vYyBOvh~FI{@~caZ4N1m0yZhKGlP`TXD)IxA_hUDS$B7`#}2 z?;GFv-$%V{-HyMcCUBdxby_$4)g+YA=3zxCEz!CSYS2k>)@?+)TtVtqS- zSoeQGy7_ZL)je;&mRJ+G&EVJ%j^jwfh_tDAy%ktjg+b!bANBWtY?v3Z*d{cA+Xyyf z;_-N(R4RoKK5Js<%}zlzk;UO`w)nMlI=$`quqJSuf!MEEEJlW~*`d{EjY4&J%@3^^ zzy0#d|L|F{&DjDpf!hccuV1-x1<{A_XLe7+tsd5oOcaauH*qHlo;`bZ%Oq}iYENTx z@X9Au_AQk%|M~7Gua8P4rhc;KUEcTMhtBWx_FnxKc5JZ)Xa#N)WO?`8P zsJ0UFzf4VKMz*TLdX}R0Kyu{uxw*N}!b0eCu4{gIojzu}80&t&h;2K?t5<*air7L| zB(1=00PKT{@EHjlEJq*qBG$%+aV~zVr)PX0FYc|pi$?3g^BzG4t~Z??{wZ#RCsvQS zuvbvsG1LKx?QaNi*k@T;-%`Os02_Qah>_L`ooO>m%H3l$z2*{lj{ z0=EGq@aX6$5*Yr->wBf)Ru3!ZVX#o>`|a0Wdo9RB&qirxP2e_Qa&j_QEEa=O2KPYr zZ6mCW3xl)2H8qtQxq9`g7p$obP2kppLq|!kc>Upu!$Pa@9TgU$=QrPY2z+5` zYAW>n^Us^>jXSIf+#=A!C6h_BPzZB~r9D`Ewppw$d`Da198&JVqeqX*r=EIBTZndn z;h^d1>40SgKdl>X8(~#rZZMne|1|8E$@=N)#+)W_Yru)S4TR5NA9mB&53K>t*{6qw zhC;|-uF1@40=Ed`sOcQCWM3%(|B3&5eH7(NrCGJK}763{BuB1HpGuC=>#QG4zOTxNR5ed>wZjC%|cVc}{)kYP2T8 zt3Km74oKPmuqN+LAP;7<#_;IqXlj0bp3w-0AvLYQ&4qmEp@#yv^?}5u&c1CKt9`I( z_TK~Y2F{*6>-qsFF^unM?rjU?sttz)gT3K11}u$mjdk8T&yKc{@NTZ2&8dXr#kv%>?6=xW$pcfjh

    1+I&OC-L8;lm_g8oLsH2)r4GKIi-DXGvMAT7K?IV zU_gMttVlC7fmh++Ny9KFab_&-{S-x zpEL~PBnbOO>`-lE=cb*Eu z@^~W%TW_tgbKE(X^YinuqZ^25Pv~ zcSL#YRR?!YB|W=_z_D07mQIV4j^lV9)&^l^Y;z>jgzW}M>2jQ4x4*yNMK(^&soce9 zJ{}7Mtdo`{9)rR@AUsP@`zvX}b}#%%5EH)}3MGCJ3WaX7b0@NK#V%4{5|#>UJ?6S3 ztUYPlQq-P?NfUOr0k$E9-`iquZ#3i_cCYW?UxpsmMwGyvbR6YlPnM5wMA+>Rx8Al! z`%zY4)0}z4vNG>tXX*6m(}~w#f8FXJ1-@suv;OiCTw>>rIKeY%W{xL zwwITe6;l|qZy|wc2}&Me^70WEPN?VLQz#(7M37hKef79g^70@KRdR^Uh^9?$1#2@J+yJ%u&v zyh0OJW4o~4ibRY=CX*>fqft8&i8y}4e$xc5BrIP0SfOCYq^xBLHflU+!fI?Du3P#= zKA$fNZ??|C!9mC6=rQ%95arTB$8onw*o{J1y3wVv5&S~-g7UvmUOSaal^%Wc(L3EU z*1UvWm5oDFc<6AAr-<#vUNvDgwhGk?W6m@`_%~47Tft!PHq>`{W@aWY%0)eQO0%fQ zTt4xMPXwW~KUy2I@|WtaG8-+Guc@_YXw-uB3&ehlrBbPw&1NmHh-XEC6@mS+RyiQY z?Cfj+4YHqT!fJE^q|CmI1O^qi2=y&pzkc1VocOzvO=MjNPwFWY3eiGg>@Dm^wI$GK z56bqzb>IEBNFCqK<#Mz4-h1!j{rBIW^@dhmZ6UZlIy%Y$>B4C7MWMnkYK7HkFRZJy z45}SeL~vSE*Il^ED?pP~qxB$1ttlx}Z=+q710M?rpIIO>!@p|@>`e!y zOow3@DqvhL94@^sG&I@(G~Rv;4i-S(JUCez8yhR`+qciHF0EbJV+ifYkt5-$sj0qj zI6Q3I_Fa}0h)X&C9i)hRg@#7UV9y)I`~MDPMGV-Sh4)>=!4#H~sPMnUN+XWU{^Tb= zSsET5X2nl|p$piKC0LOES7kdiG@1yNd3zlK%3_@?xd=|Kq>-ziU75%bEKx&iuLRZ? zL!l5~oO9jT7w~9SXlS$uQZBLaM*igqgwINd{Z`xG@^dS9yi8o+^5x6@o{iWKCEh2* z_~TOc{wv*x(`YV8(BdnuJM}a+=CItxLi>;rW&2QDfeAL|jvhVgz$}+wob!}$#Nm(y znSD{KutqB&<^1=+xf~n-Nt;9Ct#J12S$jS8CDsg6^X#+FI!xJ-xFB%`3XC@@Ex-%^ zM0;V4=7HSGecy4?)7Z!qi$#*RI5ae5fxtCiwca>OoMFd?g(!l+Ile2FyzAcju~uP? z=E0eV_q_z+%<#^S^l=tRwcP&w`yCM2@j|_8u!g{lM!+yTNNSXj!YhKv9L^^b3dsd2 zGd~a-8V!dF-lcwkn86L~WO(PN1DKtiEnU2L(XRK(_3DAuF%UU0IyxEwkq41k-j6rk z2Rkw1IPu>XB5+7(XfzBe?)w!44d(m$`ffvc=OCU5Jisb6tKKWuQ()JVYrDU{zl4R^ zkPO~DjU^}L@}FrhtkFoI;r2hU%F#YRB(p5u!G00eVMC(T?1jlz-w%KILxDFHb8~Y6 zTou?11aVO$UAH$TMDVE4(AY6@e{C4^{~w~cjAaQqh-54l%L2t~*RI(cy}D+fII1vU zV_k|yqq$TnMK9dL#dT-?T*~+<2>6K5(AYL?G~5=xhYfNo&4wE|$A()0qN#?;uhn?- zvEf9APd@o1hjhmmaYiV`w|5C*M)}0mXUkOac;dV%2~EFLubf8 z)!n} zJWZEeYHS8sDW@+uPUZsy1r`u>m8!oA1dVY zd75pSZq{eQ6KAJgS9Sf+(AW@2So{d&{Rra6kXZ_evJ}KHi_~!mUzKf*EJ3>QaU082}yni9ezBdUzC6Odk zcX2Ewa!YI@L$+xG6C^QYzI6Qfab`-GnM?44VC~t7n}2}Mpc{1>Rd5zu_vRm$Gr2O2 zJ9ZKlA_41=i^t>E`Sa)P&4kR>!p%;ULD($l^xSv)4TiEVYU@Oy4dPfv%^>2x%c$qeHI zjpD-%;o$+ph#qp?vERkp_Xv$W43hWO(~gs3jc*dmB0^^K5WXdFCJo}|J@Rgwz}rz^ zLiOAjA0KDmxg4SrNnBM+RAO9ZP~y}_t~>h-o|Y3DdlWA71m8iFYKEL3H^7x;G}@A5 zV`Evgr3z0y^%U>q+a@ouEdn#FhUA9*=%bI?xD6CoGtAopjw?^h4~&2Bn&zA)@ty?9 zJNFEzz&YJg9xq5$lXJPcnvjH`{ELi=5} z|6{Iu;6H0Su~*>cC|s_q$jjQ9WhN`Iy$G>OoH}(XH#s?3g!($QXIb4mc1&RPCS?+b zqtR$@DwP_5$3ce99mPUI_Z!9_NWA~wL-2=%#x91lDCO<{Wt!RR2(7Y)oQlh+)FQaC z%tqTY&pcDC*F|Wn*scdw@G6G5$$4w@i0ftXLFtEC+quAiwNQl`>35}^`Ie4O>}HU> zA3X!|zQ@cO4kRID{JodJizI|CKQS>;I(P1z+bHr9rf3i@Uc4w?c;N;2?YG|+BO@a& z?1T#fvmoBU+Hl=s-Y|++k;FTx?Zj?_{Sl%Ke;{Rk2I7_WGHpxPUStCwqLx9_N{wxH z?b@{+HQK7NBL%JmuPS&O2T6`1<9)GMjJFS5m2%N*fg)pX4dF2^gXM;u5ptaUXQUkX*VRI&P(Dl zk%iwj#ZVce4PLjPrjNhSa0RXeg4L=76LCM5V6u2aDKWn60=*KB@kB6FlXczc=S_3| z+ggn~5e$*df7^9$JPQS0V)Y@GWi0BqMEhn5+1SL#KmKt=UMjC>(cmFXA1~EUcA#-* zpcNWKbRq&vLFMIy2ZJDV43?tb^TlDu2@Xhk7t}a1DKt6&xr@lGy@-Zd5~5SU??k^# z(OJT8N3Wa8<#K5dH$Of;Zu>()H8R#)58IxtezWkt2uaMVvIqi;L?Ypq%CK?UVGEUm zYV(W3W)vLP{oq-{i2jZ1jy;K&>g-)xK-FFRGvp!u9vXz-NLdCBx0^(2co~Yz4h<=W z$&MU3Qb2sy`qG!a)H34wXxWI>UKmCFy<^9Yg+St9KA(>;N`XUzI5C5G4wZNSWR9@w zK8^=m_aN2yS9Kb?RbcT|_7WOuFFz<|Hmo@Ld|Nh98D_26p!^3^)bb0_@DvA>`KqBKgy&!WBPFB!yBKxJ>j|N`& zSA|9sk^QNZw||V}1Y^1!5uLn;cD*5WHSA@;``~1aiaR6#8HqqLT`-iK&cem2O|GV5c!`9jRwNHF69jDLY^Z- zs@^s@-@fXy_iz&AUFI?TMzj)Y(iQwpDn!-}<@M3jC`2vzzL+O~T}qJj$PEk(q*$@U z%pFb`=SP^w^BAdE#z|$zQN)e&x1{{={~~pH0q6MVLSu(0fw=SkQ_A=MJIH&BvH5Z> zx9JySG0HFppF5BEZj!$dUc_D$RA+m$!#_0>9WiSQW5rjmUX=)b2j6`2%`mJ)1Xp@5 zPFg>R8}-zfwxSP92q!j(6Kld{>~r1GN3oZMb4eXK3U zLIQJP>X~D-v6>D^lHL&z8P*~+p`#YHpc-fNxEFEv=fE^Ltqzrx^AP9RC}YQ5_8MkI z8Hak}FsD%8;>^rU$?M1~I*GhQ$IY8Xf6SOM6xl>*CInj%h7u?uLz$_)}U0MY-4+@Xd zDj+(f8fop0Fl+`LJ9D8|)y7T!$B9- zg-8@}Zi`S}i-lO7s<_qYim5kAW-2mnXC_W?2>vXHAB9BifpwrdDOcl)d+Lx6PoZwLgMA_=OM&kT%c0XKIWEhQdf(d~Y_+IP?LN z5h|1BHO^FgSCl7FDR6j%D&nd?Ai4luHFqqtdGN<38+zCcKsAE27Wi>OUSlsJ)D#FV zmtIeeL!unH@KxEsafy8s&zFWlb?yU^L&xxz2RpYmxlCB_4WX~xb%bcAahGQ~qarQ7 z6UmCNWm9Qs6R5gH4(Eh*1{boLxDpq5p})UBhr|*6Z^`qxPPZs-HM)87W7cs=D{LC|U}7 zSdz842-}Kv=DO!)DX%U*Cy8c}ydH5akGMW*^EeN*3VEn4RhEO#m->OSMEVeTM?XO_Eb5DA3W&! zW_CO^%LFcaZm!D;ZFuKsa2#6K1M6`&)m_TaaJg})UILOEY66_v3Qh&(!spwIF-6(r^{#a7<6@jkp?QxR44j>o*UN|W=TuaU2f3dr7nsyMn-k7qxKxI5K>)n3$Ldz+SK!ZqCoo2hqx=7Y>oMBsUPGBD1lF zw+L|_JQ5w-CbNC4zreN{7QiF5T1aRTkjGW%*&}x4=kWIOcfAUDe_$6O@NY zQ2JQ6g0OztwuHM1NlCIYvcNCEZO&<3gvyqnwnZpyX>4rFM)HA^WZTa^`>gBzy_L_` z&6c4WyN1B)K>8g_IotUgZ@dwJ#W42m+h;0)tC7o1gPo0(hAUqN)uME|TgQ(dw>d?X*B7m$GG@)ft|hRq$Q6ftl_a6f*Is+gfFER%gjqbQEXmBs zL=X)iV|jU*1P;)Sfbhy%fZGP%S8Zc4KyHK6mtw8npM$t?o3opGYh@?=kK`TmhZE(# zA}ZEOd0E`g$EdI%ss%e_-y+qnd>}CaC7v79Z z>U)F828&bJ2)up!wz0Id6u_<5h{a;`zqAST)F#xL#5GA?`eMA)0I`+CLb-i!>{s>~ zAUu6IM</src/test-setup.ts'], - coverageDirectory: '../../../../coverage/libs/app/profile/feature', + coverageDirectory: '../../../../coverage/libs/app/login/feature', transform: { '^.+\\.(ts|mjs|js|html)$': [ 'jest-preset-angular', diff --git a/libs/app/login/feature/project.json b/libs/app/login/feature/project.json index ec28fde7..160c9196 100644 --- a/libs/app/login/feature/project.json +++ b/libs/app/login/feature/project.json @@ -1,7 +1,7 @@ { - "name": "app-profile-feature", + "name": "app-login-feature", "$schema": "../../../../node_modules/nx/schemas/project-schema.json", - "sourceRoot": "libs/app/profile/feature/src", + "sourceRoot": "libs/app/login/feature/src", "prefix": "fridge-to-plate", "tags": [], "projectType": "library", @@ -10,7 +10,7 @@ "executor": "@nx/jest:jest", "outputs": ["{workspaceRoot}/coverage/{projectRoot}"], "options": { - "jestConfig": "libs/app/profile/feature/jest.config.ts", + "jestConfig": "libs/app/login/feature/jest.config.ts", "passWithNoTests": true }, "configurations": { @@ -25,8 +25,8 @@ "outputs": ["{options.outputFile}"], "options": { "lintFilePatterns": [ - "libs/app/profile/feature/**/*.ts", - "libs/app/profile/feature/**/*.html" + "libs/app/login/feature/**/*.ts", + "libs/app/login/feature/**/*.html" ] } } diff --git a/libs/app/login/feature/src/login.page.html b/libs/app/login/feature/src/login.page.html index 70696d0f..b628b535 100644 --- a/libs/app/login/feature/src/login.page.html +++ b/libs/app/login/feature/src/login.page.html @@ -1,9 +1,6 @@ - - Profile Avatar - -

    + + +
    + + + +

    Hey,
    Welcome Back.

    + +
    +

    Do not have an account?

    Create +
    +
    + + +
    +
    + +

    Forgot Password?

    + Reset + +
    + + +
    - \ No newline at end of file diff --git a/libs/app/login/feature/src/login.page.scss b/libs/app/login/feature/src/login.page.scss index cbe9bb53..6039bdad 100644 --- a/libs/app/login/feature/src/login.page.scss +++ b/libs/app/login/feature/src/login.page.scss @@ -8,13 +8,15 @@ .header { font-size: 28px; - text-align: center; + text-align: left; margin-bottom: 20px; + justify-content: left; } .text { - text-align: center; + text-align: left; margin-bottom: 10px; + padding-right: 20%; } .input-container { diff --git a/libs/app/login/feature/src/login.page.ts b/libs/app/login/feature/src/login.page.ts index 3c91a50e..d17f0ea4 100644 --- a/libs/app/login/feature/src/login.page.ts +++ b/libs/app/login/feature/src/login.page.ts @@ -6,3 +6,7 @@ import { Component } from "@angular/core"; styleUrls: ["./login.page.scss"], }) export class LoginPage {} + +function login() { + +} \ No newline at end of file diff --git a/libs/app/login/feature/tsconfig.spec.json b/libs/app/login/feature/tsconfig.spec.json index 6b47720c..6e5925e5 100644 --- a/libs/app/login/feature/tsconfig.spec.json +++ b/libs/app/login/feature/tsconfig.spec.json @@ -12,5 +12,5 @@ "src/**/*.test.ts", "src/**/*.spec.ts", "src/**/*.d.ts" -, "src/login.pagespec.ts" ] + ] } diff --git a/tsconfig.base.json b/tsconfig.base.json index 879638a9..6ff35255 100644 --- a/tsconfig.base.json +++ b/tsconfig.base.json @@ -15,7 +15,10 @@ "skipDefaultLibCheck": true, "baseUrl": ".", "paths": { - "@fridge-to-plate/app/core": ["libs/app/core/src/index.ts"] + "@fridge-to-plate/app/core": ["libs/app/core/src/index.ts"], + "@fridge-to-plate/app/login/feature": [ + "libs/app/login/feature/src/index.ts" + ] } }, "exclude": ["node_modules", "tmp"] From 443916a011c83aaa2df21100698a77cabf5b7022 Mon Sep 17 00:00:00 2001 From: kphutiyagae Date: Mon, 22 May 2023 23:42:44 +0200 Subject: [PATCH 42/55] feat(none): :construction: Implemented preferences and list recipes pages. --- libs/app/core/src/core.module.ts | 3 +- .../src/app-recipe-recommendation.module.ts | 5 +- .../item-edit-step/item-edit-step.html | 30 ++++++-- .../recipe-list-step/recipe-list-step.html | 13 +++- .../recipe-list-step/recipe-list-step.ts | 11 +++ .../recipe-preferences-step.html | 49 ++++++++++++- .../recipe-preferences-step.ts | 14 +++- .../src/data-access/mock-data/recipes.ts | 68 +++++++++++++++++++ .../src/data-access/store/state.ts | 4 ++ 9 files changed, 184 insertions(+), 13 deletions(-) create mode 100644 libs/app/recipe-recommendation/src/data-access/mock-data/recipes.ts diff --git a/libs/app/core/src/core.module.ts b/libs/app/core/src/core.module.ts index 7d611928..c184a43b 100644 --- a/libs/app/core/src/core.module.ts +++ b/libs/app/core/src/core.module.ts @@ -8,13 +8,14 @@ import { RouteReuseStrategy } from "@angular/router"; import {TabbedComponent} from "./tabbed-component/tabbed-component"; import {NzStepsModule} from "ng-zorro-antd/steps"; import {NzFormModule} from "ng-zorro-antd/form"; +import {NzIconModule} from "ng-zorro-antd/icon"; @NgModule({ declarations: [CoreShell, NxWelcomeComponent, TabbedComponent], imports: [ BrowserModule, CoreRouting, - IonicModule.forRoot(), NzStepsModule, NzFormModule], + IonicModule.forRoot(), NzStepsModule, NzFormModule, NzIconModule], providers: [{ provide: RouteReuseStrategy, useClass: IonicRouteStrategy }], bootstrap: [CoreShell], }) diff --git a/libs/app/recipe-recommendation/src/app-recipe-recommendation.module.ts b/libs/app/recipe-recommendation/src/app-recipe-recommendation.module.ts index c2783018..9c76ea28 100644 --- a/libs/app/recipe-recommendation/src/app-recipe-recommendation.module.ts +++ b/libs/app/recipe-recommendation/src/app-recipe-recommendation.module.ts @@ -9,9 +9,12 @@ import {ItemEditStep} from "./components/item-edit-step/item-edit-step"; import {RecipePreferencesStep} from "./components/recipe-preferences-step/recipe-preferences-step"; import {RecipeListStep} from "./components/recipe-list-step/recipe-list-step"; import {NzListModule} from "ng-zorro-antd/list"; +import {ReactiveFormsModule} from "@angular/forms"; +import {NzFormModule} from "ng-zorro-antd/form"; +import {NzInputModule} from "ng-zorro-antd/input"; @NgModule({ declarations: [RecipeRecommendationPage, StepperForm, ItemEditStep, RecipePreferencesStep, RecipeListStep], - imports: [CommonModule, RecommendationRouting, IonicModule, NzStepsModule, NzListModule], + imports: [CommonModule, RecommendationRouting, IonicModule, NzStepsModule, NzListModule, ReactiveFormsModule, NzFormModule, NzInputModule], }) export class AppRecipeRecommendationModule {} diff --git a/libs/app/recipe-recommendation/src/components/item-edit-step/item-edit-step.html b/libs/app/recipe-recommendation/src/components/item-edit-step/item-edit-step.html index 37b5d968..3ebf7665 100644 --- a/libs/app/recipe-recommendation/src/components/item-edit-step/item-edit-step.html +++ b/libs/app/recipe-recommendation/src/components/item-edit-step/item-edit-step.html @@ -3,16 +3,32 @@
    -
    -
    - +
    +
    + + Silhouette of mountains +
    -
    +
    {{item.name}}
    - -
    - +
    +
    diff --git a/libs/app/recipe-recommendation/src/components/recipe-list-step/recipe-list-step.html b/libs/app/recipe-recommendation/src/components/recipe-list-step/recipe-list-step.html index c129f87a..4a3e83d7 100644 --- a/libs/app/recipe-recommendation/src/components/recipe-list-step/recipe-list-step.html +++ b/libs/app/recipe-recommendation/src/components/recipe-list-step/recipe-list-step.html @@ -1,3 +1,12 @@ -
    - Recipe list result +
    + +
    +
    + {{recipe.name}} +
    +
    +
    + +

    Loading....

    +
    diff --git a/libs/app/recipe-recommendation/src/components/recipe-list-step/recipe-list-step.ts b/libs/app/recipe-recommendation/src/components/recipe-list-step/recipe-list-step.ts index 8270ef5b..70b59b54 100644 --- a/libs/app/recipe-recommendation/src/components/recipe-list-step/recipe-list-step.ts +++ b/libs/app/recipe-recommendation/src/components/recipe-list-step/recipe-list-step.ts @@ -1,4 +1,8 @@ import { Component } from '@angular/core'; +import {IngredientItem} from "../../data-access/mock-data/ingredients"; +import {getAllIngredients, getRecommenedRecipes} from "../../data-access/store/state"; +import {BehaviorSubject, debounceTime, map} from "rxjs"; +import {IRecipe} from "../../data-access/mock-data/recipes"; @Component({ selector: 'app-recipe-list-step', @@ -6,7 +10,14 @@ import { Component } from '@angular/core'; styleUrls: ['recipe-list-step.scss'] }) export class RecipeListStep { + recipes: IRecipe[] = getRecommenedRecipes(); + + recipeRecommendation$ = new BehaviorSubject(this.recipes).pipe( + debounceTime(1000), + map( recipes => recipes) + ); constructor() { + } } diff --git a/libs/app/recipe-recommendation/src/components/recipe-preferences-step/recipe-preferences-step.html b/libs/app/recipe-recommendation/src/components/recipe-preferences-step/recipe-preferences-step.html index 49c7143c..6ace50f4 100644 --- a/libs/app/recipe-recommendation/src/components/recipe-preferences-step/recipe-preferences-step.html +++ b/libs/app/recipe-recommendation/src/components/recipe-preferences-step/recipe-preferences-step.html @@ -1,3 +1,50 @@
    - recipe Prefs Step +
    +

    Diet

    +
    +
    +
    {{category}}
    +
    + +
    +

    Keywords

    +
    +
    +
    {{category}}
    +
    + +
    +

    Other options

    +
    +
    +
    + + +
    +
    + + +
    +
    + + +
    +
    diff --git a/libs/app/recipe-recommendation/src/components/recipe-preferences-step/recipe-preferences-step.ts b/libs/app/recipe-recommendation/src/components/recipe-preferences-step/recipe-preferences-step.ts index 4dfe2df0..a091548d 100644 --- a/libs/app/recipe-recommendation/src/components/recipe-preferences-step/recipe-preferences-step.ts +++ b/libs/app/recipe-recommendation/src/components/recipe-preferences-step/recipe-preferences-step.ts @@ -1,4 +1,5 @@ import { Component } from '@angular/core'; +import {FormBuilder, FormControl, FormGroup} from "@angular/forms"; @Component({ selector: 'app-recipe-preferences-step', @@ -7,6 +8,17 @@ import { Component } from '@angular/core'; }) export class RecipePreferencesStep { - constructor() { + dietCategories = ['Vegan','Vegetarian','Ketogenic','Paleo-tonic','Low-carb','Pescatarian'] + + recipePreferences = new FormGroup({ + diet: new FormControl(''), + keywords: new FormControl([]), + other: new FormGroup({ + difficulty: new FormControl('easy'), + rating: new FormControl(3), + numberOfServings: new FormControl(1) + }) + }) + constructor(formBuilder:FormBuilder) { } } diff --git a/libs/app/recipe-recommendation/src/data-access/mock-data/recipes.ts b/libs/app/recipe-recommendation/src/data-access/mock-data/recipes.ts new file mode 100644 index 00000000..b032ce4b --- /dev/null +++ b/libs/app/recipe-recommendation/src/data-access/mock-data/recipes.ts @@ -0,0 +1,68 @@ +export interface IRecipe { + id: number; + name: string; + difficulty: 'easy' | 'medium' | 'hard'; + imageUrl: string; + tags ?: string[]; + diet ?: string[]; +} +export const recipeArray: IRecipe[] = [ + { + id: 0, + name: 'Beef Stew', + difficulty: "medium", + imageUrl: 'source.unsplash.com/150x150/?food', + tags: ['Beef', 'Protien'] + }, + { + id: 1, + name: 'Omelette', + difficulty: "easy", + imageUrl: 'source.unsplash.com/150x150/?food', + tags: ['Egg', 'Protien'] + }, + { + id: 2, + name: 'Greek Salad', + difficulty: "easy", + imageUrl: 'source.unsplash.com/150x150/?food', + tags: ['Leafy', 'Salad'], + diet: ['Vegetarian'] + }, + { + id: 3, + name: 'Vegan Pizza', + difficulty: "hard", + imageUrl: 'source.unsplash.com/150x150/?food', + tags: ['Vegetarian', 'Vegan'], + diet: ['Vegan'] + }, + { + id: 4, + name: 'Chow Mein', + difficulty: "medium", + imageUrl: 'source.unsplash.com/150x150/?food', + tags: ['Asian', 'Protien'] + }, + { + id: 5, + name: 'Shrimp Pasta', + difficulty: "hard", + imageUrl: 'source.unsplash.com/150x150/?food', + tags: ['Pasta', 'Seafood'], + }, + { + id: 6, + name: 'Cheeseburger', + difficulty: "medium", + imageUrl: 'source.unsplash.com/150x150/?food', + tags: ['Carbs', 'Beef'] + }, + { + id: 7, + name: 'Tacos', + difficulty: "hard", + imageUrl: 'source.unsplash.com/150x150/?food', + tags: ['Mexican'] + } +] diff --git a/libs/app/recipe-recommendation/src/data-access/store/state.ts b/libs/app/recipe-recommendation/src/data-access/store/state.ts index 40b62b0b..f41ddfef 100644 --- a/libs/app/recipe-recommendation/src/data-access/store/state.ts +++ b/libs/app/recipe-recommendation/src/data-access/store/state.ts @@ -1,4 +1,5 @@ import {IngredientItem, ingredientsArray} from "../mock-data/ingredients"; +import {recipeArray} from "../mock-data/recipes"; export function getAllIngredients() { return ingredientsArray; @@ -26,3 +27,6 @@ export function removeIngredient(ingredient: IngredientItem, ingredients: Ingred return ingredients; } +export function getRecommenedRecipes() { + return recipeArray; +} From c724e42fcbed8c35a503fe045fc06ab8829605c3 Mon Sep 17 00:00:00 2001 From: Antwi-Antwi Date: Mon, 22 May 2023 23:46:23 +0200 Subject: [PATCH 43/55] =?UTF-8?q?=F0=9F=92=84=20(app)=20:=20added=20some?= =?UTF-8?q?=20UI?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- libs/app/core/src/core.routing.ts | 2 +- libs/app/create/feature/.eslintrc.json | 36 +++++++++ libs/app/create/feature/README.md | 7 ++ libs/app/create/feature/jest.config.ts | 22 +++++ libs/app/create/feature/project.json | 34 ++++++++ .../feature/src/app-create-feature.module.ts | 18 +++++ .../create/{ => feature}/src/create.module.ts | 2 + .../create/{ => feature}/src/create.page.html | 37 ++++----- .../create/{ => feature}/src/create.page.scss | 0 .../create/feature/src/create.page.spec.ts | 81 +++++++++++++++++++ .../create/{ => feature}/src/create.page.ts | 37 ++++++++- .../{ => feature}/src/create.routing.ts | 0 libs/app/create/{ => feature}/src/index.ts | 0 .../create/{ => feature}/src/test-setup.ts | 0 libs/app/create/feature/tsconfig.json | 29 +++++++ libs/app/create/feature/tsconfig.lib.json | 17 ++++ libs/app/create/feature/tsconfig.spec.json | 16 ++++ tsconfig.base.json | 4 +- 18 files changed, 315 insertions(+), 27 deletions(-) create mode 100644 libs/app/create/feature/.eslintrc.json create mode 100644 libs/app/create/feature/README.md create mode 100644 libs/app/create/feature/jest.config.ts create mode 100644 libs/app/create/feature/project.json create mode 100644 libs/app/create/feature/src/app-create-feature.module.ts rename libs/app/create/{ => feature}/src/create.module.ts (87%) rename libs/app/create/{ => feature}/src/create.page.html (75%) rename libs/app/create/{ => feature}/src/create.page.scss (100%) create mode 100644 libs/app/create/feature/src/create.page.spec.ts rename libs/app/create/{ => feature}/src/create.page.ts (77%) rename libs/app/create/{ => feature}/src/create.routing.ts (100%) rename libs/app/create/{ => feature}/src/index.ts (100%) rename libs/app/create/{ => feature}/src/test-setup.ts (100%) create mode 100644 libs/app/create/feature/tsconfig.json create mode 100644 libs/app/create/feature/tsconfig.lib.json create mode 100644 libs/app/create/feature/tsconfig.spec.json diff --git a/libs/app/core/src/core.routing.ts b/libs/app/core/src/core.routing.ts index 5b3bbe5f..f220dab7 100644 --- a/libs/app/core/src/core.routing.ts +++ b/libs/app/core/src/core.routing.ts @@ -11,7 +11,7 @@ const routes: Routes = [ { path: 'create', loadChildren: () => - import('@fridge-to-plate/app/create').then((m) => m.CreateModule), + import('@fridge-to-plate/app/create/feature').then((m) => m.CreateModule), }, ]; diff --git a/libs/app/create/feature/.eslintrc.json b/libs/app/create/feature/.eslintrc.json new file mode 100644 index 00000000..6bac7be5 --- /dev/null +++ b/libs/app/create/feature/.eslintrc.json @@ -0,0 +1,36 @@ +{ + "extends": ["../../../../.eslintrc.json"], + "ignorePatterns": ["!**/*"], + "overrides": [ + { + "files": ["*.ts"], + "rules": { + "@angular-eslint/directive-selector": [ + "error", + { + "type": "attribute", + "prefix": "fridgeToPlate", + "style": "camelCase" + } + ], + "@angular-eslint/component-selector": [ + "error", + { + "type": "element", + "prefix": "fridge-to-plate", + "style": "kebab-case" + } + ] + }, + "extends": [ + "plugin:@nx/angular", + "plugin:@angular-eslint/template/process-inline-templates" + ] + }, + { + "files": ["*.html"], + "extends": ["plugin:@nx/angular-template"], + "rules": {} + } + ] +} diff --git a/libs/app/create/feature/README.md b/libs/app/create/feature/README.md new file mode 100644 index 00000000..0ded4b91 --- /dev/null +++ b/libs/app/create/feature/README.md @@ -0,0 +1,7 @@ +# app-create-feature + +This library was generated with [Nx](https://nx.dev). + +## Running unit tests + +Run `nx test app-create-feature` to execute the unit tests. diff --git a/libs/app/create/feature/jest.config.ts b/libs/app/create/feature/jest.config.ts new file mode 100644 index 00000000..99ba4e18 --- /dev/null +++ b/libs/app/create/feature/jest.config.ts @@ -0,0 +1,22 @@ +/* eslint-disable */ +export default { + displayName: 'app-create-feature', + preset: '../../../../jest.preset.js', + setupFilesAfterEnv: ['/src/test-setup.ts'], + coverageDirectory: '../../../../coverage/libs/app/create/feature', + transform: { + '^.+\\.(ts|mjs|js|html)$': [ + 'jest-preset-angular', + { + tsconfig: '/tsconfig.spec.json', + stringifyContentPathRegex: '\\.(html|svg)$', + }, + ], + }, + transformIgnorePatterns: ['node_modules/(?!.*\\.mjs$)'], + snapshotSerializers: [ + 'jest-preset-angular/build/serializers/no-ng-attributes', + 'jest-preset-angular/build/serializers/ng-snapshot', + 'jest-preset-angular/build/serializers/html-comment', + ], +}; diff --git a/libs/app/create/feature/project.json b/libs/app/create/feature/project.json new file mode 100644 index 00000000..d0144819 --- /dev/null +++ b/libs/app/create/feature/project.json @@ -0,0 +1,34 @@ +{ + "name": "app-create-feature", + "$schema": "../../../../node_modules/nx/schemas/project-schema.json", + "sourceRoot": "libs/app/create/feature/src", + "prefix": "fridge-to-plate", + "tags": [], + "projectType": "library", + "targets": { + "test": { + "executor": "@nx/jest:jest", + "outputs": ["{workspaceRoot}/coverage/{projectRoot}"], + "options": { + "jestConfig": "libs/app/create/feature/jest.config.ts", + "passWithNoTests": true + }, + "configurations": { + "ci": { + "ci": true, + "codeCoverage": true + } + } + }, + "lint": { + "executor": "@nx/linter:eslint", + "outputs": ["{options.outputFile}"], + "options": { + "lintFilePatterns": [ + "libs/app/create/feature/**/*.ts", + "libs/app/create/feature/**/*.html" + ] + } + } + } +} diff --git a/libs/app/create/feature/src/app-create-feature.module.ts b/libs/app/create/feature/src/app-create-feature.module.ts new file mode 100644 index 00000000..ed4bb893 --- /dev/null +++ b/libs/app/create/feature/src/app-create-feature.module.ts @@ -0,0 +1,18 @@ +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { FormsModule } from '@angular/forms'; +import { CreateRouting } from './create.routing'; +import { ReactiveFormsModule } from '@angular/forms'; +import { CreatePage } from './create.page'; +import { IonicModule } from '@ionic/angular'; + +@NgModule({ + imports: [ + CommonModule, + FormsModule, + CreateRouting, + IonicModule, + ReactiveFormsModule], + declarations: [CreatePage] +}) +export class CreateModule {} diff --git a/libs/app/create/src/create.module.ts b/libs/app/create/feature/src/create.module.ts similarity index 87% rename from libs/app/create/src/create.module.ts rename to libs/app/create/feature/src/create.module.ts index c22c9569..ed4bb893 100644 --- a/libs/app/create/src/create.module.ts +++ b/libs/app/create/feature/src/create.module.ts @@ -4,12 +4,14 @@ import { FormsModule } from '@angular/forms'; import { CreateRouting } from './create.routing'; import { ReactiveFormsModule } from '@angular/forms'; import { CreatePage } from './create.page'; +import { IonicModule } from '@ionic/angular'; @NgModule({ imports: [ CommonModule, FormsModule, CreateRouting, + IonicModule, ReactiveFormsModule], declarations: [CreatePage] }) diff --git a/libs/app/create/src/create.page.html b/libs/app/create/feature/src/create.page.html similarity index 75% rename from libs/app/create/src/create.page.html rename to libs/app/create/feature/src/create.page.html index 722e8260..3afba4f5 100644 --- a/libs/app/create/src/create.page.html +++ b/libs/app/create/feature/src/create.page.html @@ -1,24 +1,13 @@ - - -
    + src="https://photos.bigoven.com/recipe/hero/lowfat-vegetable-lasagna-1336994.jpg" + class="h-25 rounded-lg shadow-none transition-shadow duration-300 ease-in-out hover:shadow-lg hover:shadow-black/30" + alt="Recipe Image" />

    - +
    @@ -30,13 +19,16 @@
    - +
    - - + + +
    @@ -45,13 +37,15 @@
    - +
    - - + + +
    @@ -80,5 +74,4 @@
    - \ No newline at end of file diff --git a/libs/app/create/src/create.page.scss b/libs/app/create/feature/src/create.page.scss similarity index 100% rename from libs/app/create/src/create.page.scss rename to libs/app/create/feature/src/create.page.scss diff --git a/libs/app/create/feature/src/create.page.spec.ts b/libs/app/create/feature/src/create.page.spec.ts new file mode 100644 index 00000000..ece082d3 --- /dev/null +++ b/libs/app/create/feature/src/create.page.spec.ts @@ -0,0 +1,81 @@ +import { TestBed } from '@angular/core/testing'; +import { ReactiveFormsModule } from '@angular/forms'; + +import { CreatePage } from './create.page'; + +describe('YourComponent', () => { + let component: CreatePage; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ component ], + imports: [ ReactiveFormsModule ] + }) + .compileComponents(); + }); + + beforeEach(() => { + const fixture = TestBed.createComponent(CreatePage); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should return true if the provided plan is selected', () => { + // Arrange + + const dietaryPlansControl = component.recipeForm.get('dietaryPlans'); +if (dietaryPlansControl?.setValue) { + dietaryPlansControl.setValue(['vegetarian', 'vegan']); +} + + // Act + const result = component.isDietaryPlanSelected('vegetarian'); + + // Assert + expect.extend({ + toBeTrue(result) { + const pass = result === true; + if (pass) { + return { + message: () => `expected ${result} to be false`, + pass: true, + }; + } else { + return { + message: () => `expected ${result} to be false`, + pass: false, + }; + } + }, + }); + }); + + it('should return false if the provided plan is not selected', () => { + // Arrange + const dietaryPlansControl = component.recipeForm.get('dietaryPlans'); + if (dietaryPlansControl?.setValue) { + dietaryPlansControl.setValue(['vegetarian', 'vegan']); + } + + // Act + const result = component.isDietaryPlanSelected('paleo'); + + // Assert + expect.extend({ + toBeTrue(result) { + const pass = result === true; + if (pass) { + return { + message: () => `expected ${result} to be false`, + pass: true, + }; + } else { + return { + message: () => `expected ${result} to be false`, + pass: false, + }; + } + }, + }); + }); +}); \ No newline at end of file diff --git a/libs/app/create/src/create.page.ts b/libs/app/create/feature/src/create.page.ts similarity index 77% rename from libs/app/create/src/create.page.ts rename to libs/app/create/feature/src/create.page.ts index a3568671..f0ddd3d8 100644 --- a/libs/app/create/src/create.page.ts +++ b/libs/app/create/feature/src/create.page.ts @@ -10,6 +10,8 @@ export class CreatePage { recipeForm!: FormGroup; imageUrl: string = "https://img.icons8.com/ios-filled/50/cooking-book--v1.png"; + editableIndex: number = -1; + edit = false; constructor(private fb: FormBuilder) { this.createForm(); @@ -22,10 +24,9 @@ export class CreatePage { servings: ['', Validators.required], preparationTime: ['', Validators.required], ingredients: this.fb.array([ - this.fb.control('', Validators.required) + ]), instructions: this.fb.array([ - this.fb.control('', Validators.required) ]), dietaryPlans: this.fb.array([]) @@ -82,7 +83,7 @@ export class CreatePage { onSubmit() { console.log(this.recipeForm.value); - alert(JSON.stringify(this.recipeForm.value)); + this.getIngredientsContent() } handleImageUpload(event: any) { @@ -90,5 +91,35 @@ export class CreatePage { const file: File = event.target.files[0]; this.imageUrl = file.name } + + getIngredientsContent() { + + for (let i = 0; i < this.ingredientControls.length; i++) { + const ingredientControl = this.ingredientControls[i]; + console.log(ingredientControl.value) + // do something with the ingredient control + } + } + + editIngredient(index: number): void { + this.editableIndex = index; + this.edit = true; + } + + editInstruction(index: number): void { + this.editableIndex = index; + this.edit = true; + } + + cancelEditIngredients(): void { + this.editableIndex = -1; + this.edit = true; + } + + done() { + this.edit = false; + } + + } \ No newline at end of file diff --git a/libs/app/create/src/create.routing.ts b/libs/app/create/feature/src/create.routing.ts similarity index 100% rename from libs/app/create/src/create.routing.ts rename to libs/app/create/feature/src/create.routing.ts diff --git a/libs/app/create/src/index.ts b/libs/app/create/feature/src/index.ts similarity index 100% rename from libs/app/create/src/index.ts rename to libs/app/create/feature/src/index.ts diff --git a/libs/app/create/src/test-setup.ts b/libs/app/create/feature/src/test-setup.ts similarity index 100% rename from libs/app/create/src/test-setup.ts rename to libs/app/create/feature/src/test-setup.ts diff --git a/libs/app/create/feature/tsconfig.json b/libs/app/create/feature/tsconfig.json new file mode 100644 index 00000000..b9e5be08 --- /dev/null +++ b/libs/app/create/feature/tsconfig.json @@ -0,0 +1,29 @@ +{ + "compilerOptions": { + "target": "es2022", + "useDefineForClassFields": false, + "forceConsistentCasingInFileNames": true, + "strict": true, + "noImplicitOverride": true, + "noPropertyAccessFromIndexSignature": true, + "noImplicitReturns": true, + "noFallthroughCasesInSwitch": true + }, + "files": [], + "include": [], + "references": [ + { + "path": "./tsconfig.lib.json" + }, + { + "path": "./tsconfig.spec.json" + } + ], + "extends": "../../../../tsconfig.base.json", + "angularCompilerOptions": { + "enableI18nLegacyMessageIdFormat": false, + "strictInjectionParameters": true, + "strictInputAccessModifiers": true, + "strictTemplates": true + } +} diff --git a/libs/app/create/feature/tsconfig.lib.json b/libs/app/create/feature/tsconfig.lib.json new file mode 100644 index 00000000..91273870 --- /dev/null +++ b/libs/app/create/feature/tsconfig.lib.json @@ -0,0 +1,17 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "../../../../dist/out-tsc", + "declaration": true, + "declarationMap": true, + "inlineSources": true, + "types": [] + }, + "exclude": [ + "src/**/*.spec.ts", + "src/test-setup.ts", + "jest.config.ts", + "src/**/*.test.ts" + ], + "include": ["src/**/*.ts"] +} diff --git a/libs/app/create/feature/tsconfig.spec.json b/libs/app/create/feature/tsconfig.spec.json new file mode 100644 index 00000000..6e5925e5 --- /dev/null +++ b/libs/app/create/feature/tsconfig.spec.json @@ -0,0 +1,16 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "../../../../dist/out-tsc", + "module": "commonjs", + "target": "es2016", + "types": ["jest", "node"] + }, + "files": ["src/test-setup.ts"], + "include": [ + "jest.config.ts", + "src/**/*.test.ts", + "src/**/*.spec.ts", + "src/**/*.d.ts" + ] +} diff --git a/tsconfig.base.json b/tsconfig.base.json index ef344733..333d3387 100644 --- a/tsconfig.base.json +++ b/tsconfig.base.json @@ -16,7 +16,9 @@ "baseUrl": ".", "paths": { "@fridge-to-plate/app/core": ["libs/app/core/src/index.ts"], - "@fridge-to-plate/app/create": ["libs/app/create/src/index.ts"] + "@fridge-to-plate/app/create/feature": [ + "libs/app/create/feature/src/index.ts" + ] } }, "exclude": ["node_modules", "tmp"] From f16fe5d22098774f067b9824933307956d095164 Mon Sep 17 00:00:00 2001 From: Azola Date: Mon, 22 May 2023 23:55:35 +0200 Subject: [PATCH 44/55] =?UTF-8?q?=F0=9F=92=84=20(App)=20Login=20Page=20Imp?= =?UTF-8?q?lemented?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../img => apps/app/src/assets}/Logo.png | Bin libs/app/login/feature/src/login.page.html | 12 +++++----- libs/app/login/feature/src/login.page.ts | 21 ++++++++++++++---- 3 files changed, 23 insertions(+), 10 deletions(-) rename {libs/app/login/feature/img => apps/app/src/assets}/Logo.png (100%) diff --git a/libs/app/login/feature/img/Logo.png b/apps/app/src/assets/Logo.png similarity index 100% rename from libs/app/login/feature/img/Logo.png rename to apps/app/src/assets/Logo.png diff --git a/libs/app/login/feature/src/login.page.html b/libs/app/login/feature/src/login.page.html index b628b535..1a005c3a 100644 --- a/libs/app/login/feature/src/login.page.html +++ b/libs/app/login/feature/src/login.page.html @@ -20,26 +20,26 @@

    Hey,
    Welcome Back.

    - + Errors

    Hey,
    Welcome Back.

    -

    Do not have an account?

    Create +

    Do not have an account?

    Create
    -
    +

    Forgot Password?

    - Reset + Reset
    - +
    diff --git a/libs/app/login/feature/src/login.page.ts b/libs/app/login/feature/src/login.page.ts index d17f0ea4..fe4438f2 100644 --- a/libs/app/login/feature/src/login.page.ts +++ b/libs/app/login/feature/src/login.page.ts @@ -5,8 +5,21 @@ import { Component } from "@angular/core"; templateUrl: "./login.page.html", styleUrls: ["./login.page.scss"], }) -export class LoginPage {} - -function login() { +export class LoginPage { + login() { + alert("Logging In..."); + } + + reset() { + alert("Resetting..."); + } -} \ No newline at end of file + create() { + alert("Creating Account..."); + } + + guest() { + alert("Entering Guest..."); + } +} + From 378c22f551cd596171190a16e1e39fbdd2bf0a86 Mon Sep 17 00:00:00 2001 From: simphiwe-nonabe <106514948+simphiwe-nonabe@users.noreply.github.com> Date: Tue, 23 May 2023 00:15:11 +0200 Subject: [PATCH 45/55] =?UTF-8?q?=F0=9F=92=84(app)=20applied=20tailwind=20?= =?UTF-8?q?styles=20to=20sigup=20page?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- libs/app/signup/feature/src/signup.page.html | 44 +++++++++++++------- 1 file changed, 28 insertions(+), 16 deletions(-) diff --git a/libs/app/signup/feature/src/signup.page.html b/libs/app/signup/feature/src/signup.page.html index 9291bd23..e2e12491 100644 --- a/libs/app/signup/feature/src/signup.page.html +++ b/libs/app/signup/feature/src/signup.page.html @@ -1,31 +1,43 @@ -
    +
    -

    Create
    New Account

    +

    Create
    New Account

    -
    -

    Already have an account? Login

    +
    +

    Already have an account? Login

    -
    - -

    - -

    - -

    - -

    +
    + + + +
    - - + + From 46c7b233e9f01045fc3e0b8785f11833c5645320 Mon Sep 17 00:00:00 2001 From: kphutiyagae Date: Tue, 23 May 2023 00:28:11 +0200 Subject: [PATCH 46/55] feat(none): :lipstick: WIP: Added styles for edit items step. --- .../item-edit-step/item-edit-step.html | 21 ++++++++++++------- .../components/stepper-form/stepper-form.html | 14 +++++++------ .../components/stepper-form/stepper-form.ts | 10 +++++---- .../src/data-access/mock-data/ingredients.ts | 19 +++++++++++------ 4 files changed, 41 insertions(+), 23 deletions(-) diff --git a/libs/app/recipe-recommendation/src/components/item-edit-step/item-edit-step.html b/libs/app/recipe-recommendation/src/components/item-edit-step/item-edit-step.html index 3ebf7665..68d0545d 100644 --- a/libs/app/recipe-recommendation/src/components/item-edit-step/item-edit-step.html +++ b/libs/app/recipe-recommendation/src/components/item-edit-step/item-edit-step.html @@ -3,16 +3,23 @@
    -
    -
    - - Silhouette of mountains +
    +
    + + Silhouette of mountains
    -
    - {{item.name}} +
    +

    {{item.name}}

    +

    Quantity: {{item.quantity}}

    +
    +
    + {{tag}} +
    +
    -
    +
    - + + +
    diff --git a/libs/app/recipe-recommendation/src/components/stepper-form/stepper-form.ts b/libs/app/recipe-recommendation/src/components/stepper-form/stepper-form.ts index a1b5dcf0..63c3a010 100644 --- a/libs/app/recipe-recommendation/src/components/stepper-form/stepper-form.ts +++ b/libs/app/recipe-recommendation/src/components/stepper-form/stepper-form.ts @@ -14,7 +14,7 @@ export class StepperForm implements OnInit{ recipeRecommendForm!: FormGroup; - stepContent = `Start`; + stepContent = `Edit Fridge Items`; step = ItemEditStep; @@ -22,15 +22,15 @@ export class StepperForm implements OnInit{ changeContent(): void { switch (this.currentStep) { case 1: { - this.stepContent = 'Step 1' + this.stepContent = 'Edit Fridge Items' break; } case 2: { - this.stepContent = 'Step 2' + this.stepContent = 'Verify Preferences' break; } case 3: { - this.stepContent = 'Step 3' + this.stepContent = 'Suggestions' break; } default: { @@ -40,11 +40,13 @@ export class StepperForm implements OnInit{ } previousStep(): void { + if(this.currentStep <= 1) return; this.currentStep -=1; this.changeContent(); } nextStep(): void { + if(this.currentStep >= 3) return; this.currentStep +=1; this.changeContent(); } diff --git a/libs/app/recipe-recommendation/src/data-access/mock-data/ingredients.ts b/libs/app/recipe-recommendation/src/data-access/mock-data/ingredients.ts index a0d0078a..b1651822 100644 --- a/libs/app/recipe-recommendation/src/data-access/mock-data/ingredients.ts +++ b/libs/app/recipe-recommendation/src/data-access/mock-data/ingredients.ts @@ -5,6 +5,7 @@ export interface IngredientItem { metadata ?: { amountPerUnit?: number; unit?: string; + tags?: string[]; } } @@ -15,7 +16,8 @@ export const ingredientsArray: IngredientItem[] = [ quantity: 1, metadata: { amountPerUnit: 1000, - unit: 'ml' + unit: 'ml', + tags: ['Dairy', 'Protiens'] } }, { @@ -24,7 +26,8 @@ export const ingredientsArray: IngredientItem[] = [ quantity: 5, metadata: { amountPerUnit: 100, - unit: 'g' + unit: 'g', + tags: ['Vegetable', 'Aromatic'] } }, { @@ -33,7 +36,8 @@ export const ingredientsArray: IngredientItem[] = [ quantity: 2, metadata: { amountPerUnit: 1000, - unit: 'g' + unit: 'g', + tags: ['Proteins'] } }, { @@ -42,7 +46,8 @@ export const ingredientsArray: IngredientItem[] = [ quantity: 3, metadata: { amountPerUnit: 500, - unit: 'g' + unit: 'g', + tags: ['Wheat'] } }, { @@ -51,7 +56,8 @@ export const ingredientsArray: IngredientItem[] = [ quantity: 4, metadata: { amountPerUnit: 100, - unit: 'g' + unit: 'g', + tags: ['Vegetable',] } }, { @@ -60,7 +66,8 @@ export const ingredientsArray: IngredientItem[] = [ quantity: 5, metadata: { amountPerUnit: 1000, - unit: 'g' + unit: 'g', + tags: ['Proteins'] } } From 63531a6c7907a791586ff7df6c47b1c42ad5acef Mon Sep 17 00:00:00 2001 From: Antwi-Antwi Date: Tue, 23 May 2023 00:43:35 +0200 Subject: [PATCH 47/55] =?UTF-8?q?=E2=9C=85=20(add)=20:=20add=20unit=20test?= =?UTF-8?q?s?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- libs/app/core/src/core.module.ts | 2 + libs/app/create/feature/jest.config.ts | 2 +- libs/app/create/feature/project.json | 2 +- .../feature/src/app-create-feature.module.ts | 18 -- libs/app/create/feature/src/create.module.ts | 10 +- .../create/feature/src/create.page.spec.ts | 166 +++++++++++------- libs/app/create/feature/src/create.page.ts | 6 - package-lock.json | 4 +- package.json | 4 +- 9 files changed, 119 insertions(+), 95 deletions(-) delete mode 100644 libs/app/create/feature/src/app-create-feature.module.ts diff --git a/libs/app/core/src/core.module.ts b/libs/app/core/src/core.module.ts index 8291631f..9262994b 100644 --- a/libs/app/core/src/core.module.ts +++ b/libs/app/core/src/core.module.ts @@ -5,12 +5,14 @@ import { NxWelcomeComponent } from "./nx-welcome.component"; import { CoreRouting } from "./core.routing"; import { IonicModule, IonicRouteStrategy } from "@ionic/angular"; import { RouteReuseStrategy } from "@angular/router"; +import { ReactiveFormsModule } from "@angular/forms"; @NgModule({ declarations: [CoreShell, NxWelcomeComponent], imports: [ BrowserModule, CoreRouting, + ReactiveFormsModule , IonicModule.forRoot()], providers: [{ provide: RouteReuseStrategy, useClass: IonicRouteStrategy }], bootstrap: [CoreShell], diff --git a/libs/app/create/feature/jest.config.ts b/libs/app/create/feature/jest.config.ts index 99ba4e18..239e6d3d 100644 --- a/libs/app/create/feature/jest.config.ts +++ b/libs/app/create/feature/jest.config.ts @@ -1,6 +1,6 @@ /* eslint-disable */ export default { - displayName: 'app-create-feature', + displayName: 'create', preset: '../../../../jest.preset.js', setupFilesAfterEnv: ['/src/test-setup.ts'], coverageDirectory: '../../../../coverage/libs/app/create/feature', diff --git a/libs/app/create/feature/project.json b/libs/app/create/feature/project.json index d0144819..df58eaf6 100644 --- a/libs/app/create/feature/project.json +++ b/libs/app/create/feature/project.json @@ -1,5 +1,5 @@ { - "name": "app-create-feature", + "name": "create", "$schema": "../../../../node_modules/nx/schemas/project-schema.json", "sourceRoot": "libs/app/create/feature/src", "prefix": "fridge-to-plate", diff --git a/libs/app/create/feature/src/app-create-feature.module.ts b/libs/app/create/feature/src/app-create-feature.module.ts deleted file mode 100644 index ed4bb893..00000000 --- a/libs/app/create/feature/src/app-create-feature.module.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { NgModule } from '@angular/core'; -import { CommonModule } from '@angular/common'; -import { FormsModule } from '@angular/forms'; -import { CreateRouting } from './create.routing'; -import { ReactiveFormsModule } from '@angular/forms'; -import { CreatePage } from './create.page'; -import { IonicModule } from '@ionic/angular'; - -@NgModule({ - imports: [ - CommonModule, - FormsModule, - CreateRouting, - IonicModule, - ReactiveFormsModule], - declarations: [CreatePage] -}) -export class CreateModule {} diff --git a/libs/app/create/feature/src/create.module.ts b/libs/app/create/feature/src/create.module.ts index ed4bb893..06c860b4 100644 --- a/libs/app/create/feature/src/create.module.ts +++ b/libs/app/create/feature/src/create.module.ts @@ -12,7 +12,11 @@ import { IonicModule } from '@ionic/angular'; FormsModule, CreateRouting, IonicModule, - ReactiveFormsModule], - declarations: [CreatePage] + ReactiveFormsModule + ], + declarations: [CreatePage], + exports: [ + ReactiveFormsModule + ] }) -export class CreateModule {} +export class CreateModule {} \ No newline at end of file diff --git a/libs/app/create/feature/src/create.page.spec.ts b/libs/app/create/feature/src/create.page.spec.ts index ece082d3..108db632 100644 --- a/libs/app/create/feature/src/create.page.spec.ts +++ b/libs/app/create/feature/src/create.page.spec.ts @@ -1,81 +1,123 @@ -import { TestBed } from '@angular/core/testing'; -import { ReactiveFormsModule } from '@angular/forms'; - +import { ComponentFixture, TestBed } from '@angular/core/testing'; +import { FormArray, FormBuilder, FormControl, FormGroup } from '@angular/forms'; import { CreatePage } from './create.page'; -describe('YourComponent', () => { +describe('ComponentName', () => { let component: CreatePage; + let fixture: ComponentFixture; + let fb: FormBuilder; beforeEach(async () => { await TestBed.configureTestingModule({ - declarations: [ component ], - imports: [ ReactiveFormsModule ] + declarations: [ CreatePage ], + providers: [ FormBuilder ] }) .compileComponents(); }); beforeEach(() => { - const fixture = TestBed.createComponent(CreatePage); + fixture = TestBed.createComponent(CreatePage); component = fixture.componentInstance; + fb = TestBed.inject(FormBuilder); fixture.detectChanges(); }); - it('should return true if the provided plan is selected', () => { - // Arrange - - const dietaryPlansControl = component.recipeForm.get('dietaryPlans'); -if (dietaryPlansControl?.setValue) { - dietaryPlansControl.setValue(['vegetarian', 'vegan']); -} - - // Act - const result = component.isDietaryPlanSelected('vegetarian'); - - // Assert - expect.extend({ - toBeTrue(result) { - const pass = result === true; - if (pass) { - return { - message: () => `expected ${result} to be false`, - pass: true, - }; - } else { - return { - message: () => `expected ${result} to be false`, - pass: false, - }; - } - }, - }); + it('should add a new instruction control to the form', () => { + const initialLength = component.instructionControls.length; + component.addInstruction(); + const newLength = component.instructionControls.length; + expect(newLength).toBe(initialLength + 1); + }); +}); + +describe('CreatePage', () => { + let createPage: CreatePage; + let fb: FormBuilder; + + beforeEach(() => { + fb = new FormBuilder(); + createPage = new CreatePage(fb); }); - it('should return false if the provided plan is not selected', () => { - // Arrange - const dietaryPlansControl = component.recipeForm.get('dietaryPlans'); - if (dietaryPlansControl?.setValue) { - dietaryPlansControl.setValue(['vegetarian', 'vegan']); - } - - // Act - const result = component.isDietaryPlanSelected('paleo'); - - // Assert - expect.extend({ - toBeTrue(result) { - const pass = result === true; - if (pass) { - return { - message: () => `expected ${result} to be false`, - pass: true, - }; - } else { - return { - message: () => `expected ${result} to be false`, - pass: false, - }; - } - }, - }); + it('should create a recipe form with the correct fields', () => { + createPage.createForm(); + + expect(createPage.recipeForm.contains('name')).toBe(true); + expect(createPage.recipeForm.contains('description')).toBe(true); + expect(createPage.recipeForm.contains('servings')).toBe(true); + expect(createPage.recipeForm.contains('preparationTime')).toBe(true); + expect(createPage.recipeForm.contains('ingredients')).toBe(true); + expect(createPage.recipeForm.contains('instructions')).toBe(true); + expect(createPage.recipeForm.contains('dietaryPlans')).toBe(true); + }); + + it('should set the name, description, servings, and preparationTime fields as required', () => { + createPage.createForm(); + + const nameControl = createPage.recipeForm.get('name'); + const descriptionControl = createPage.recipeForm.get('description'); + const servingsControl = createPage.recipeForm.get('servings'); + const preparationTimeControl = createPage.recipeForm.get('preparationTime'); + + expect(nameControl?.errors?.['required']).toBe(true); + expect(descriptionControl?.errors?.['required']).toBe(true); + expect(servingsControl?.errors?.['required']).toBe(true); + expect(preparationTimeControl?.errors?.['required']).toBe(true); + }); + + it('should create an empty array for the ingredients and instructions fields', () => { + createPage.createForm(); + + const ingredientsArray = createPage.recipeForm.get('ingredients'); + const instructionsArray = createPage.recipeForm.get('instructions'); + + expect(ingredientsArray?.value).toEqual([]); + expect(instructionsArray?.value).toEqual([]); + }); + + it('should create an empty array for the dietaryPlans field', () => { + createPage.createForm(); + + const dietaryPlansArray = createPage.recipeForm.get('dietaryPlans'); + + expect(dietaryPlansArray?.value).toEqual([]); + }); +}); + +describe('toggleDietaryPlan', () => { + let component: CreatePage; + let fb: FormBuilder; + + beforeEach(() => { + TestBed.configureTestingModule({ + providers: [FormBuilder], + }); + component = TestBed.createComponent(CreatePage).componentInstance; + fb = TestBed.inject(FormBuilder); + component.recipeForm = fb.group({ + dietaryPlans: fb.array([]), + }); + }); + + it('should remove the dietary plan if it is already selected', () => { + + const plan = 'Vegetarian'; + const dietaryPlans = component.recipeForm.get('dietaryPlans') as FormArray; + dietaryPlans.push(fb.control(plan)); + + component.toggleDietaryPlan(plan); + + expect(dietaryPlans.length).toBe(0); + }); + + it('should add the dietary plan if it is not selected', () => { + + const plan = 'Vegan'; + const dietaryPlans = component.recipeForm.get('dietaryPlans') as FormArray; + + component.toggleDietaryPlan(plan); + + expect(dietaryPlans.length).toBe(1); + expect(dietaryPlans.value).toContain(plan); }); }); \ No newline at end of file diff --git a/libs/app/create/feature/src/create.page.ts b/libs/app/create/feature/src/create.page.ts index f0ddd3d8..e7f3a5a0 100644 --- a/libs/app/create/feature/src/create.page.ts +++ b/libs/app/create/feature/src/create.page.ts @@ -86,12 +86,6 @@ export class CreatePage { this.getIngredientsContent() } - handleImageUpload(event: any) { - // Retrieve the selected or uploaded image file - const file: File = event.target.files[0]; - this.imageUrl = file.name - } - getIngredientsContent() { for (let i = 0; i < this.ingredientControls.length; i++) { diff --git a/package-lock.json b/package-lock.json index eb5d7ba3..cb24f283 100644 --- a/package-lock.json +++ b/package-lock.json @@ -46,7 +46,7 @@ "@nx/js": "16.0.3", "@nxrocks/nx-spring-boot": "^7.0.0", "@schematics/angular": "~15.2.0", - "@types/jest": "^29.4.0", + "@types/jest": "^29.5.1", "@types/node": "16.11.7", "@typescript-eslint/eslint-plugin": "^5.36.1", "@typescript-eslint/parser": "^5.36.1", @@ -55,7 +55,7 @@ "eslint": "~8.15.0", "eslint-config-prettier": "8.1.0", "eslint-plugin-cypress": "^2.10.3", - "jest": "^29.4.1", + "jest": "^29.5.0", "jest-environment-jsdom": "^29.4.1", "jest-preset-angular": "~13.0.0", "nx": "15.9.2", diff --git a/package.json b/package.json index d61999fe..3ae158a0 100644 --- a/package.json +++ b/package.json @@ -39,7 +39,7 @@ "@nx/js": "16.0.3", "@nxrocks/nx-spring-boot": "^7.0.0", "@schematics/angular": "~15.2.0", - "@types/jest": "^29.4.0", + "@types/jest": "^29.5.1", "@types/node": "16.11.7", "@typescript-eslint/eslint-plugin": "^5.36.1", "@typescript-eslint/parser": "^5.36.1", @@ -48,7 +48,7 @@ "eslint": "~8.15.0", "eslint-config-prettier": "8.1.0", "eslint-plugin-cypress": "^2.10.3", - "jest": "^29.4.1", + "jest": "^29.5.0", "jest-environment-jsdom": "^29.4.1", "jest-preset-angular": "~13.0.0", "nx": "15.9.2", From 63848e850599c5402a05421fd124b199759f3c93 Mon Sep 17 00:00:00 2001 From: kphutiyagae Date: Tue, 23 May 2023 00:59:21 +0200 Subject: [PATCH 48/55] feat(none): :lipstick: WIP: Added styles for verify preferences step. --- .../recipe-preferences-step.html | 88 ++++++++++--------- .../components/stepper-form/stepper-form.html | 4 +- .../components/stepper-form/stepper-form.ts | 2 +- 3 files changed, 51 insertions(+), 43 deletions(-) diff --git a/libs/app/recipe-recommendation/src/components/recipe-preferences-step/recipe-preferences-step.html b/libs/app/recipe-recommendation/src/components/recipe-preferences-step/recipe-preferences-step.html index 6ace50f4..b6e3abef 100644 --- a/libs/app/recipe-recommendation/src/components/recipe-preferences-step/recipe-preferences-step.html +++ b/libs/app/recipe-recommendation/src/components/recipe-preferences-step/recipe-preferences-step.html @@ -1,50 +1,58 @@ -
    -
    -

    Diet

    -
    -
    -
    {{category}}
    +
    +
    +
    +

    Diet

    +
    +
    +
    {{category}}
    +
    -
    -

    Keywords

    -
    -
    -
    {{category}}
    -
    -
    -

    Other options

    -
    -
    -
    - - +
    +
    +

    Keywords

    - - + +
    +
    + +
    +
    +

    Other options

    - - +
    + + +
    +
    + + +
    +
    + + +
    diff --git a/libs/app/recipe-recommendation/src/components/stepper-form/stepper-form.html b/libs/app/recipe-recommendation/src/components/stepper-form/stepper-form.html index b85e779f..9d09be04 100644 --- a/libs/app/recipe-recommendation/src/components/stepper-form/stepper-form.html +++ b/libs/app/recipe-recommendation/src/components/stepper-form/stepper-form.html @@ -12,9 +12,9 @@

    {{stepContent}}

    -
    +
    +
    diff --git a/libs/app/signup/feature/src/signup.page.ts b/libs/app/signup/feature/src/signup.page.ts index 4de00f38..0d8da77f 100644 --- a/libs/app/signup/feature/src/signup.page.ts +++ b/libs/app/signup/feature/src/signup.page.ts @@ -1,8 +1,46 @@ import { Component } from "@angular/core"; +import { FormGroup } from "@angular/forms"; +import { Router } from "@angular/router"; @Component({ selector: "signup-page", templateUrl: "./signup.page.html", styleUrls: ["./signup.page.scss"], }) -export class SignupPage {} + +export class SignupPage { + + constructor(private router: Router) {} + + login() { + alert("login"); + this.router.navigate(['/login']); + } + + createAccount() { + alert("create account"); + } + + guest() { + alert("Entering Guest..."); + } + + // passwordMatchValidator(form: FormGroup) { + // const password = form.get('password'); + // const confirmPassword = form.get('confirmPassword'); + // if (password.value !== confirmPassword.value) { + // confirmPassword.setErrors({ passwordMatch: true }); + // } else { + // confirmPassword.setErrors(null); + // } + // return null; + // } + + // onNext() { + // if (this.registerForm.valid) { + // // Save the user data to the database + // // and navigate to the login page + // this.router.navigate(['/login']); + // } + // } +} From 89ece273042c15cf41193ff9896587e77b1c2aad Mon Sep 17 00:00:00 2001 From: Antwi-Antwi Date: Tue, 23 May 2023 01:05:56 +0200 Subject: [PATCH 50/55] =?UTF-8?q?=E2=9C=85=20(app)=20:=20fixed=20and=20add?= =?UTF-8?q?ed=20new=20unit=20tests?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- libs/app/create/feature/src/create.module.ts | 10 +++------- libs/app/create/feature/src/create.page.spec.ts | 5 ++++- libs/app/create/feature/src/create.routing.ts | 1 + 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/libs/app/create/feature/src/create.module.ts b/libs/app/create/feature/src/create.module.ts index 06c860b4..fc9dc8b4 100644 --- a/libs/app/create/feature/src/create.module.ts +++ b/libs/app/create/feature/src/create.module.ts @@ -1,22 +1,18 @@ import { NgModule } from '@angular/core'; import { CommonModule } from '@angular/common'; -import { FormsModule } from '@angular/forms'; -import { CreateRouting } from './create.routing'; -import { ReactiveFormsModule } from '@angular/forms'; +import { FormsModule, ReactiveFormsModule} from '@angular/forms'; +import { CreateRouting } from './create.routing' import { CreatePage } from './create.page'; import { IonicModule } from '@ionic/angular'; @NgModule({ imports: [ CommonModule, + ReactiveFormsModule, FormsModule, CreateRouting, IonicModule, - ReactiveFormsModule ], declarations: [CreatePage], - exports: [ - ReactiveFormsModule - ] }) export class CreateModule {} \ No newline at end of file diff --git a/libs/app/create/feature/src/create.page.spec.ts b/libs/app/create/feature/src/create.page.spec.ts index 108db632..0fde69e0 100644 --- a/libs/app/create/feature/src/create.page.spec.ts +++ b/libs/app/create/feature/src/create.page.spec.ts @@ -1,5 +1,5 @@ import { ComponentFixture, TestBed } from '@angular/core/testing'; -import { FormArray, FormBuilder, FormControl, FormGroup } from '@angular/forms'; +import { FormArray, FormBuilder, ReactiveFormsModule} from '@angular/forms'; import { CreatePage } from './create.page'; describe('ComponentName', () => { @@ -10,6 +10,7 @@ describe('ComponentName', () => { beforeEach(async () => { await TestBed.configureTestingModule({ declarations: [ CreatePage ], + imports: [ReactiveFormsModule], providers: [ FormBuilder ] }) .compileComponents(); @@ -90,7 +91,9 @@ describe('toggleDietaryPlan', () => { beforeEach(() => { TestBed.configureTestingModule({ + declarations: [ CreatePage ], providers: [FormBuilder], + imports: [ReactiveFormsModule] }); component = TestBed.createComponent(CreatePage).componentInstance; fb = TestBed.inject(FormBuilder); diff --git a/libs/app/create/feature/src/create.routing.ts b/libs/app/create/feature/src/create.routing.ts index 43598c08..52273e35 100644 --- a/libs/app/create/feature/src/create.routing.ts +++ b/libs/app/create/feature/src/create.routing.ts @@ -2,6 +2,7 @@ import { NgModule } from '@angular/core'; import { RouterModule, Routes } from '@angular/router'; import { CreatePage } from './create.page'; + const routes: Routes = [ { path: '', From d78b0fe558c9ba7c043d9cf1c2612e15d831f8d6 Mon Sep 17 00:00:00 2001 From: kphutiyagae Date: Tue, 23 May 2023 01:30:03 +0200 Subject: [PATCH 51/55] feat(none): :lipstick: WIP: Added styles for list recipes step. --- apps/app/tailwind.config.js | 1 + .../recipe-list-step/recipe-list-step.html | 19 ++++++++++++++++--- .../recipe-list-step/recipe-list-step.ts | 2 +- .../components/stepper-form/stepper-form.ts | 2 +- .../src/data-access/mock-data/recipes.ts | 16 ++++++++-------- 5 files changed, 27 insertions(+), 13 deletions(-) diff --git a/apps/app/tailwind.config.js b/apps/app/tailwind.config.js index cdbd445a..8946cd33 100644 --- a/apps/app/tailwind.config.js +++ b/apps/app/tailwind.config.js @@ -13,6 +13,7 @@ module.exports = { 'background-light': '#F8F8F8', 'background-dark': '#010127', 'primary': '#C35214', + 'recipe-card-overlay': 'rgba(52,52,52,0.64)', 'primary-highlight': '#E26310', 'accept': '#2bc917', 'reject': '#d70b0b' diff --git a/libs/app/recipe-recommendation/src/components/recipe-list-step/recipe-list-step.html b/libs/app/recipe-recommendation/src/components/recipe-list-step/recipe-list-step.html index 4a3e83d7..7347032c 100644 --- a/libs/app/recipe-recommendation/src/components/recipe-list-step/recipe-list-step.html +++ b/libs/app/recipe-recommendation/src/components/recipe-list-step/recipe-list-step.html @@ -1,8 +1,21 @@
    -
    -
    - {{recipe.name}} +
    +
    +
    + +
    +
    +
    +

    {{recipe.name}}

    +

    Difficulty: {{recipe.difficulty}}

    +
    +
    +
    + {{tag}} +
    +
    +
    diff --git a/libs/app/recipe-recommendation/src/components/recipe-list-step/recipe-list-step.ts b/libs/app/recipe-recommendation/src/components/recipe-list-step/recipe-list-step.ts index 70b59b54..1a48a5bc 100644 --- a/libs/app/recipe-recommendation/src/components/recipe-list-step/recipe-list-step.ts +++ b/libs/app/recipe-recommendation/src/components/recipe-list-step/recipe-list-step.ts @@ -13,7 +13,7 @@ export class RecipeListStep { recipes: IRecipe[] = getRecommenedRecipes(); recipeRecommendation$ = new BehaviorSubject(this.recipes).pipe( - debounceTime(1000), + //debounceTime(1000), map( recipes => recipes) ); diff --git a/libs/app/recipe-recommendation/src/components/stepper-form/stepper-form.ts b/libs/app/recipe-recommendation/src/components/stepper-form/stepper-form.ts index f7e3efc1..1c5f5f9a 100644 --- a/libs/app/recipe-recommendation/src/components/stepper-form/stepper-form.ts +++ b/libs/app/recipe-recommendation/src/components/stepper-form/stepper-form.ts @@ -10,7 +10,7 @@ import {ItemEditStep} from "../item-edit-step/item-edit-step"; export class StepperForm implements OnInit{ - currentStep = 2; + currentStep = 3; recipeRecommendForm!: FormGroup; diff --git a/libs/app/recipe-recommendation/src/data-access/mock-data/recipes.ts b/libs/app/recipe-recommendation/src/data-access/mock-data/recipes.ts index b032ce4b..d4b35224 100644 --- a/libs/app/recipe-recommendation/src/data-access/mock-data/recipes.ts +++ b/libs/app/recipe-recommendation/src/data-access/mock-data/recipes.ts @@ -11,21 +11,21 @@ export const recipeArray: IRecipe[] = [ id: 0, name: 'Beef Stew', difficulty: "medium", - imageUrl: 'source.unsplash.com/150x150/?food', + imageUrl: 'https://source.unsplash.com/150x150/?food', tags: ['Beef', 'Protien'] }, { id: 1, name: 'Omelette', difficulty: "easy", - imageUrl: 'source.unsplash.com/150x150/?food', + imageUrl: 'https://source.unsplash.com/150x150/?food', tags: ['Egg', 'Protien'] }, { id: 2, name: 'Greek Salad', difficulty: "easy", - imageUrl: 'source.unsplash.com/150x150/?food', + imageUrl: 'https://source.unsplash.com/150x150/?food', tags: ['Leafy', 'Salad'], diet: ['Vegetarian'] }, @@ -33,7 +33,7 @@ export const recipeArray: IRecipe[] = [ id: 3, name: 'Vegan Pizza', difficulty: "hard", - imageUrl: 'source.unsplash.com/150x150/?food', + imageUrl: 'https://source.unsplash.com/150x150/?food', tags: ['Vegetarian', 'Vegan'], diet: ['Vegan'] }, @@ -41,28 +41,28 @@ export const recipeArray: IRecipe[] = [ id: 4, name: 'Chow Mein', difficulty: "medium", - imageUrl: 'source.unsplash.com/150x150/?food', + imageUrl: 'https://source.unsplash.com/150x150/?food', tags: ['Asian', 'Protien'] }, { id: 5, name: 'Shrimp Pasta', difficulty: "hard", - imageUrl: 'source.unsplash.com/150x150/?food', + imageUrl: 'https://source.unsplash.com/150x150/?food', tags: ['Pasta', 'Seafood'], }, { id: 6, name: 'Cheeseburger', difficulty: "medium", - imageUrl: 'source.unsplash.com/150x150/?food', + imageUrl: 'https://source.unsplash.com/150x150/?food', tags: ['Carbs', 'Beef'] }, { id: 7, name: 'Tacos', difficulty: "hard", - imageUrl: 'source.unsplash.com/150x150/?food', + imageUrl: 'https://source.unsplash.com/150x150/?food', tags: ['Mexican'] } ] From 9e3c848391e23bbe28e08bb9917600cca280cc73 Mon Sep 17 00:00:00 2001 From: kphutiyagae Date: Tue, 23 May 2023 01:45:17 +0200 Subject: [PATCH 52/55] feat(none): :lipstick: WIP: Added styles for progress bar. --- .../src/app-recipe-recommendation.module.ts | 3 ++- .../components/recipe-list-step/recipe-list-step.html | 4 +++- .../components/recipe-list-step/recipe-list-step.ts | 2 +- .../src/components/stepper-form/stepper-form.html | 10 +++++----- .../src/components/stepper-form/stepper-form.ts | 2 +- 5 files changed, 12 insertions(+), 9 deletions(-) diff --git a/libs/app/recipe-recommendation/src/app-recipe-recommendation.module.ts b/libs/app/recipe-recommendation/src/app-recipe-recommendation.module.ts index 9c76ea28..a2a2eb53 100644 --- a/libs/app/recipe-recommendation/src/app-recipe-recommendation.module.ts +++ b/libs/app/recipe-recommendation/src/app-recipe-recommendation.module.ts @@ -12,9 +12,10 @@ import {NzListModule} from "ng-zorro-antd/list"; import {ReactiveFormsModule} from "@angular/forms"; import {NzFormModule} from "ng-zorro-antd/form"; import {NzInputModule} from "ng-zorro-antd/input"; +import {NzIconModule} from "ng-zorro-antd/icon"; @NgModule({ declarations: [RecipeRecommendationPage, StepperForm, ItemEditStep, RecipePreferencesStep, RecipeListStep], - imports: [CommonModule, RecommendationRouting, IonicModule, NzStepsModule, NzListModule, ReactiveFormsModule, NzFormModule, NzInputModule], + imports: [CommonModule, RecommendationRouting, IonicModule, NzStepsModule, NzListModule, ReactiveFormsModule, NzFormModule, NzInputModule, NzIconModule], }) export class AppRecipeRecommendationModule {} diff --git a/libs/app/recipe-recommendation/src/components/recipe-list-step/recipe-list-step.html b/libs/app/recipe-recommendation/src/components/recipe-list-step/recipe-list-step.html index 7347032c..499d5f4f 100644 --- a/libs/app/recipe-recommendation/src/components/recipe-list-step/recipe-list-step.html +++ b/libs/app/recipe-recommendation/src/components/recipe-list-step/recipe-list-step.html @@ -20,6 +20,8 @@
    -

    Loading....

    +
    +

    Loading..

    +
    diff --git a/libs/app/recipe-recommendation/src/components/recipe-list-step/recipe-list-step.ts b/libs/app/recipe-recommendation/src/components/recipe-list-step/recipe-list-step.ts index 1a48a5bc..70b59b54 100644 --- a/libs/app/recipe-recommendation/src/components/recipe-list-step/recipe-list-step.ts +++ b/libs/app/recipe-recommendation/src/components/recipe-list-step/recipe-list-step.ts @@ -13,7 +13,7 @@ export class RecipeListStep { recipes: IRecipe[] = getRecommenedRecipes(); recipeRecommendation$ = new BehaviorSubject(this.recipes).pipe( - //debounceTime(1000), + debounceTime(1000), map( recipes => recipes) ); diff --git a/libs/app/recipe-recommendation/src/components/stepper-form/stepper-form.html b/libs/app/recipe-recommendation/src/components/stepper-form/stepper-form.html index 9d09be04..20c6528f 100644 --- a/libs/app/recipe-recommendation/src/components/stepper-form/stepper-form.html +++ b/libs/app/recipe-recommendation/src/components/stepper-form/stepper-form.html @@ -3,11 +3,11 @@

    {{stepContent}}

    -
    - - - - +
    + + + +
    diff --git a/libs/app/recipe-recommendation/src/components/stepper-form/stepper-form.ts b/libs/app/recipe-recommendation/src/components/stepper-form/stepper-form.ts index 1c5f5f9a..63c3a010 100644 --- a/libs/app/recipe-recommendation/src/components/stepper-form/stepper-form.ts +++ b/libs/app/recipe-recommendation/src/components/stepper-form/stepper-form.ts @@ -10,7 +10,7 @@ import {ItemEditStep} from "../item-edit-step/item-edit-step"; export class StepperForm implements OnInit{ - currentStep = 3; + currentStep = 1; recipeRecommendForm!: FormGroup; From 2a22e72d07efb6bedf2df284bc3cf92d420510f1 Mon Sep 17 00:00:00 2001 From: kphutiyagae Date: Tue, 23 May 2023 02:07:02 +0200 Subject: [PATCH 53/55] feat(none): :testtube: Added Component tests. --- .../recipe-recommendation-page.spec.ts | 22 +++++++++++++++++++ .../item-edit-step/item-edit-step.spec.ts | 21 ++++++++++++++++++ .../item-edit-step/item-edit-step.ts | 1 - .../recipe-list-step/recipe-list-step.spec.ts | 21 ++++++++++++++++++ .../recipe-preferences-step.spec.ts | 21 ++++++++++++++++++ .../stepper-form/steper-form.spec.ts | 20 +++++++++++++++++ 6 files changed, 105 insertions(+), 1 deletion(-) diff --git a/libs/app/recipe-recommendation/src/components/RecipeRecommendationPage/recipe-recommendation-page.spec.ts b/libs/app/recipe-recommendation/src/components/RecipeRecommendationPage/recipe-recommendation-page.spec.ts index e69de29b..fdf1adfc 100644 --- a/libs/app/recipe-recommendation/src/components/RecipeRecommendationPage/recipe-recommendation-page.spec.ts +++ b/libs/app/recipe-recommendation/src/components/RecipeRecommendationPage/recipe-recommendation-page.spec.ts @@ -0,0 +1,22 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { RecipeRecommendationPage } from './recipe-recommendation-page'; +import { AppRecipeRecommendationModule} from "@fridge-to-plate/app/recipe-recommendation"; + +describe('RecipeRecommendationPage', () => { + let component: RecipeRecommendationPage; + let fixture: ComponentFixture; + + beforeEach(() => { + TestBed.configureTestingModule({ + declarations: [RecipeRecommendationPage] + }); + fixture = TestBed.createComponent(RecipeRecommendationPage); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/libs/app/recipe-recommendation/src/components/item-edit-step/item-edit-step.spec.ts b/libs/app/recipe-recommendation/src/components/item-edit-step/item-edit-step.spec.ts index e69de29b..224cd2be 100644 --- a/libs/app/recipe-recommendation/src/components/item-edit-step/item-edit-step.spec.ts +++ b/libs/app/recipe-recommendation/src/components/item-edit-step/item-edit-step.spec.ts @@ -0,0 +1,21 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import {ItemEditStep} from "./item-edit-step"; + +describe('ItemEditStep', () => { + let component: ItemEditStep; + let fixture: ComponentFixture; + + beforeEach(() => { + TestBed.configureTestingModule({ + declarations: [ItemEditStep] + }); + fixture = TestBed.createComponent(ItemEditStep); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/libs/app/recipe-recommendation/src/components/item-edit-step/item-edit-step.ts b/libs/app/recipe-recommendation/src/components/item-edit-step/item-edit-step.ts index 3a4e0dd3..f74591dd 100644 --- a/libs/app/recipe-recommendation/src/components/item-edit-step/item-edit-step.ts +++ b/libs/app/recipe-recommendation/src/components/item-edit-step/item-edit-step.ts @@ -19,6 +19,5 @@ export class ItemEditStep { } constructor() { - console.log(this.items); } } diff --git a/libs/app/recipe-recommendation/src/components/recipe-list-step/recipe-list-step.spec.ts b/libs/app/recipe-recommendation/src/components/recipe-list-step/recipe-list-step.spec.ts index e69de29b..37e4e7ee 100644 --- a/libs/app/recipe-recommendation/src/components/recipe-list-step/recipe-list-step.spec.ts +++ b/libs/app/recipe-recommendation/src/components/recipe-list-step/recipe-list-step.spec.ts @@ -0,0 +1,21 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { RecipeListStep } from './recipe-list-step'; + +describe('RecipeListStep', () => { + let component: RecipeListStep; + let fixture: ComponentFixture; + + beforeEach(() => { + TestBed.configureTestingModule({ + declarations: [RecipeListStep] + }); + fixture = TestBed.createComponent(RecipeListStep); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/libs/app/recipe-recommendation/src/components/recipe-preferences-step/recipe-preferences-step.spec.ts b/libs/app/recipe-recommendation/src/components/recipe-preferences-step/recipe-preferences-step.spec.ts index e69de29b..dafac735 100644 --- a/libs/app/recipe-recommendation/src/components/recipe-preferences-step/recipe-preferences-step.spec.ts +++ b/libs/app/recipe-recommendation/src/components/recipe-preferences-step/recipe-preferences-step.spec.ts @@ -0,0 +1,21 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { RecipePreferencesStep } from './recipe-preferences-step'; + +describe('RecipePreferencesStep', () => { + let component: RecipePreferencesStep; + let fixture: ComponentFixture; + + beforeEach(() => { + TestBed.configureTestingModule({ + declarations: [RecipePreferencesStep] + }); + fixture = TestBed.createComponent(RecipePreferencesStep); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/libs/app/recipe-recommendation/src/components/stepper-form/steper-form.spec.ts b/libs/app/recipe-recommendation/src/components/stepper-form/steper-form.spec.ts index e69de29b..821c6350 100644 --- a/libs/app/recipe-recommendation/src/components/stepper-form/steper-form.spec.ts +++ b/libs/app/recipe-recommendation/src/components/stepper-form/steper-form.spec.ts @@ -0,0 +1,20 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { StepperForm } from './stepper-form'; +describe('StepperForm', () => { + let component: StepperForm; + let fixture: ComponentFixture; + + beforeEach(() => { + TestBed.configureTestingModule({ + declarations: [StepperForm] + }); + fixture = TestBed.createComponent(StepperForm); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); From e8fe2f3541b7d1da934cbe6066a667d3e3efc35d Mon Sep 17 00:00:00 2001 From: Ryan Trickett Date: Tue, 23 May 2023 08:45:49 +0200 Subject: [PATCH 54/55] =?UTF-8?q?=F0=9F=90=9B=20(app)=20Fixed=20Routing=20?= =?UTF-8?q?Typo?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- libs/app/core/src/core.routing.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/libs/app/core/src/core.routing.ts b/libs/app/core/src/core.routing.ts index dd1a7687..d0c3c3a5 100644 --- a/libs/app/core/src/core.routing.ts +++ b/libs/app/core/src/core.routing.ts @@ -12,6 +12,7 @@ const routes: Routes = [ path: 'login', loadChildren: () => import('@fridge-to-plate/app/login/feature').then((m) => m.LoginModule), }, + { path: 'signup', loadChildren: () => import('@fridge-to-plate/app/signup/feature').then((m) => m.SignupModule), }, From 7be8e1fb965fb052eec86f899c134fb695ff9f6e Mon Sep 17 00:00:00 2001 From: simphiwe-nonabe <106514948+simphiwe-nonabe@users.noreply.github.com> Date: Tue, 23 May 2023 09:18:57 +0200 Subject: [PATCH 55/55] =?UTF-8?q?=F0=9F=92=84=20(app)=20Fixed=20Styling?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- libs/app/signup/feature/src/signup.page.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/libs/app/signup/feature/src/signup.page.html b/libs/app/signup/feature/src/signup.page.html index 768d6eb5..dea36d51 100644 --- a/libs/app/signup/feature/src/signup.page.html +++ b/libs/app/signup/feature/src/signup.page.html @@ -2,9 +2,9 @@
    -

    Create
    New Account

    +

    Create
    New Account

    -
    +

    Already have an account? Login