Files
zitadel/console/angular.json
T
RamonandMax Peintner dd9dcf9f72 feat(console): improve org search performance in create project grant page #11121 (#12057)
<!--
Please inform yourself about the contribution guidelines on submitting a
PR here:
https://github.com/zitadel/zitadel/blob/main/CONTRIBUTING.md#submit-a-pull-request-pr.
Take note of how PR/commit titles should be written and replace the
template texts in the sections below. Don't remove any of the sections.
It is important that the commit history clearly shows what is changed
and why.
Important: By submitting a contribution you agree to the terms from our
Licensing Policy as described here:
https://github.com/zitadel/zitadel/blob/main/LICENSING.md#community-contributions.
-->

# Which Problems Are Solved

When creating a new Project Grant in the Zitadel console, the UI becomes
extremely sluggish/unusable. The issue appears tied to the organization
search dropdown attempting to load a very large dataset.

# How the Problems Are Solved

The refactored `SearchOrgAutocompleteComponent` uses server side
filtering and ondemand loading using infinite scrolling. This makes sure
on a subset of organizations is ever loaded on the client.

# Additional Changes

- Added tailwindcss for easier styling
- Removed build warnings
- Removed some of the SCSS syntax warnings

# Additional Context
- Closes #11121

---------

Co-authored-by: Max Peintner <max@caos.ch>
2026-04-22 11:46:27 +02:00

198 lines
6.1 KiB
JSON

{
"$schema": "./node_modules/@angular/cli/lib/config/schema.json",
"version": 1,
"newProjectRoot": "projects",
"projects": {
"console": {
"projectType": "application",
"schematics": {
"@schematics/angular:component": {
"style": "scss"
}
},
"root": "",
"sourceRoot": "src",
"prefix": "cnsl",
"architect": {
"build": {
"builder": "@angular/build:application",
"options": {
"outputPath": {
"browser": "",
"base": "dist/console"
},
"index": "src/index.html",
"polyfills": ["zone.js"],
"tsConfig": "tsconfig.app.json",
"inlineStyleLanguage": "scss",
"assets": [
"src/favicon.ico",
"src/assets",
"src/manifest.webmanifest",
{
"glob": "**/*",
"input": "../apps/docs/public/img/tech",
"output": "assets/docs/img/tech"
}
],
"styles": ["src/styles.scss", "src/tailwind.css"],
"scripts": ["./node_modules/tinycolor2/dist/tinycolor-min.js"],
"stylePreprocessorOptions": {
"sass": {
"silenceDeprecations": ["import", "mixed-decls"]
},
"includePaths": ["node_modules", "."]
},
"allowedCommonJsDependencies": [
"opentype.js",
"fast-sha256",
"buffer",
"moment",
"grpc-web",
"@angular/common/locales/de",
"codemirror/mode/javascript/javascript",
"codemirror/mode/xml/xml",
"file-saver",
"qrcode",
"codemirror"
],
"browser": "src/main.ts"
},
"configurations": {
"production": {
"optimization": {
"fonts": {
"inline": false
},
"styles": {
"inlineCritical": false,
"minify": false
}
},
"budgets": [
{
"type": "initial",
"maximumWarning": "8mb",
"maximumError": "11mb"
},
{
"type": "anyComponentStyle",
"maximumWarning": "6kb",
"maximumError": "10kb"
}
],
"outputHashing": "all"
},
"development": {
"optimization": false,
"extractLicenses": false,
"sourceMap": true,
"namedChunks": true
}
},
"defaultConfiguration": "development"
},
"serve": {
"builder": "@angular/build:dev-server",
"options": {
"prebundle": {
"exclude": [
"google-protobuf",
"google-protobuf/google/protobuf/timestamp_pb.js",
"google-protobuf/google/protobuf/descriptor_pb.js",
"google-protobuf/google/protobuf/struct_pb.js",
"google-protobuf/google/protobuf/duration_pb.js",
"i18n-iso-countries/langs/de.json",
"i18n-iso-countries/langs/en.json",
"i18n-iso-countries/langs/es.json",
"i18n-iso-countries/langs/fr.json",
"i18n-iso-countries/langs/id.json",
"i18n-iso-countries/langs/it.json",
"i18n-iso-countries/langs/ja.json",
"i18n-iso-countries/langs/pl.json",
"i18n-iso-countries/langs/zh.json",
"i18n-iso-countries/langs/bg.json",
"i18n-iso-countries/langs/pt.json",
"i18n-iso-countries/langs/mk.json",
"i18n-iso-countries/langs/ru.json",
"i18n-iso-countries/langs/cs.json",
"i18n-iso-countries/langs/nl.json",
"i18n-iso-countries/langs/sv.json",
"i18n-iso-countries/langs/hu.json",
"i18n-iso-countries/langs/ko.json",
"i18n-iso-countries/langs/ro.json",
"i18n-iso-countries/langs/tr.json",
"i18n-iso-countries/langs/uk.json",
"i18n-iso-countries/langs/ar.json"
]
}
},
"configurations": {
"production": {
"buildTarget": "console:build:production"
},
"development": {
"buildTarget": "console:build:development"
}
},
"defaultConfiguration": "development"
},
"extract-i18n": {
"builder": "@angular/build:extract-i18n",
"options": {
"buildTarget": "console:build"
}
},
"test": {
"builder": "@angular/build:karma",
"options": {
"polyfills": ["zone.js", "zone.js/testing"],
"tsConfig": "tsconfig.spec.json",
"inlineStyleLanguage": "scss",
"assets": ["src/favicon.ico", "src/assets"],
"styles": ["src/styles.scss"],
"scripts": []
}
},
"lint": {
"builder": "@angular-eslint/builder:lint",
"options": {
"lintFilePatterns": ["src/**/*.ts", "src/**/*.html"]
}
}
}
}
},
"cli": {
"analytics": false,
"schematicCollections": ["@angular-eslint/schematics"],
"packageManager": "pnpm"
},
"schematics": {
"@schematics/angular:component": {
"type": "component"
},
"@schematics/angular:directive": {
"type": "directive"
},
"@schematics/angular:service": {
"type": "service"
},
"@schematics/angular:guard": {
"typeSeparator": "."
},
"@schematics/angular:interceptor": {
"typeSeparator": "."
},
"@schematics/angular:module": {
"typeSeparator": "."
},
"@schematics/angular:pipe": {
"typeSeparator": "."
},
"@schematics/angular:resolver": {
"typeSeparator": "."
}
}
}