mirror of
https://github.com/DerDavidBohl/dirigent-spring.git
synced 2026-01-05 16:15:20 -06:00
Simplify Deployment Name input for Secrets
This commit is contained in:
29
frontend/package-lock.json
generated
29
frontend/package-lock.json
generated
@@ -443,7 +443,6 @@
|
||||
"resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-19.2.19.tgz",
|
||||
"integrity": "sha512-PCpJagurPBqciqcq4Z8+3OtKLb7rSl4w/qBJoIMua8CgnrjvA1i+SWawhdtfI1zlY8FSwhzLwXV0CmWWfFzQPg==",
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"parse5": "^7.1.2",
|
||||
"tslib": "^2.3.0"
|
||||
@@ -493,7 +492,6 @@
|
||||
"resolved": "https://registry.npmjs.org/@angular/common/-/common-19.2.15.tgz",
|
||||
"integrity": "sha512-aVa/ctBYH/4qgA7r4sS7TV+/DzRYmcS+3d6l89pNKUXkI8gpmsd+r3FjccaemX4Wqru1QOrMvC+i+e7IBIVv0g==",
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"tslib": "^2.3.0"
|
||||
},
|
||||
@@ -510,7 +508,6 @@
|
||||
"resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-19.2.15.tgz",
|
||||
"integrity": "sha512-hMHZU6/03xG0tbPDIm1hbVSTFLnRkGYfh+xdBwUMnIFYYTS0QJ2hdPfEZKCJIXm+fz9IAI5MPdDTfeyp0sgaHQ==",
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"tslib": "^2.3.0"
|
||||
},
|
||||
@@ -524,7 +521,6 @@
|
||||
"integrity": "sha512-4r5tvGA2Ok3o8wROZBkF9qNKS7L0AEpdBIkAVJbLw2rBY2SlyycFIRYyV2+D1lJ1jq/f9U7uN6oon0MjTvNYkA==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"@babel/core": "7.26.9",
|
||||
"@jridgewell/sourcemap-codec": "^1.4.14",
|
||||
@@ -601,7 +597,6 @@
|
||||
"resolved": "https://registry.npmjs.org/@angular/core/-/core-19.2.15.tgz",
|
||||
"integrity": "sha512-PxhzCwwm23N4Mq6oV7UPoYiJF4r6FzGhRSxOBBlEp322k7zEQbIxd/XO6F3eoG73qC1UsOXMYYv6GnQpx42y3A==",
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"tslib": "^2.3.0"
|
||||
},
|
||||
@@ -618,7 +613,6 @@
|
||||
"resolved": "https://registry.npmjs.org/@angular/forms/-/forms-19.2.15.tgz",
|
||||
"integrity": "sha512-pZDElcYPmNzPxvWJpZQCIizsNApDIfk9xLJE4I8hzLISfWGbQvfjuuarDAuQZEXudeLXoDOstDXkDja40muLGg==",
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"tslib": "^2.3.0"
|
||||
},
|
||||
@@ -654,7 +648,6 @@
|
||||
"resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-19.2.15.tgz",
|
||||
"integrity": "sha512-OelQ6weCjon8kZD8kcqNzwugvZJurjS3uMJCwsA2vXmP/3zJ31SWtNqE2zLT1R2csVuwnp0h+nRMgq+pINU7Rg==",
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"tslib": "^2.3.0"
|
||||
},
|
||||
@@ -739,7 +732,6 @@
|
||||
"integrity": "sha512-vMqyb7XCDMPvJFFOaT9kxtiRh42GwlZEg1/uIgtZshS5a/8OaduUfCi7kynKgc3Tw/6Uo2D+db9qBttghhmxwQ==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"@ampproject/remapping": "^2.2.0",
|
||||
"@babel/code-frame": "^7.26.2",
|
||||
@@ -3038,7 +3030,6 @@
|
||||
"integrity": "sha512-G1ytyOoHh5BphmEBxSwALin3n1KGNYB6yImbICcRQdzXfOGbuJ9Jske/Of5Sebk339NSGGNfUshnzK8YWkTPsQ==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"@inquirer/checkbox": "^4.1.2",
|
||||
"@inquirer/confirm": "^5.1.6",
|
||||
@@ -5490,7 +5481,6 @@
|
||||
"integrity": "sha512-R4I/kzCYAdRLzfiCabn9hxWfbuHS573x+r0dJMkkzThEa7pbrcDWK+9zu3e7aBOouf+rQAciqPFMnxwr0aWgKg==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"undici-types": "~7.8.0"
|
||||
}
|
||||
@@ -5866,7 +5856,6 @@
|
||||
"integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"fast-deep-equal": "^3.1.3",
|
||||
"fast-uri": "^3.0.1",
|
||||
@@ -6330,7 +6319,6 @@
|
||||
}
|
||||
],
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"caniuse-lite": "^1.0.30001718",
|
||||
"electron-to-chromium": "^1.5.160",
|
||||
@@ -9319,8 +9307,7 @@
|
||||
"resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-5.11.0.tgz",
|
||||
"integrity": "sha512-MPJ8L5yyNul0F2SuEsLASwESXQjJvBXnKu31JWFyRZSvuv2B79K4GDWN3pSqvLheUNh7Fyb6dXwd4rsz95O2Kg==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"peer": true
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/jest-worker": {
|
||||
"version": "27.5.1",
|
||||
@@ -9465,7 +9452,6 @@
|
||||
"integrity": "sha512-LrtUxbdvt1gOpo3gxG+VAJlJAEMhbWlM4YrFQgql98FwF7+K8K12LYO4hnDdUkNjeztYrOXEMqgTajSWgmtI/w==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"@colors/colors": "1.5.0",
|
||||
"body-parser": "^1.19.0",
|
||||
@@ -9824,7 +9810,6 @@
|
||||
"integrity": "sha512-tkuLHQlvWUTeQ3doAqnHbNn8T6WX1KA8yvbKG9x4VtKtIjHsVKQZCH11zRgAfbDAXC2UNIg/K9BYAAcEzUIrNg==",
|
||||
"dev": true,
|
||||
"license": "Apache-2.0",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"copy-anything": "^2.0.1",
|
||||
"parse-node-version": "^1.0.1",
|
||||
@@ -11968,7 +11953,6 @@
|
||||
}
|
||||
],
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"nanoid": "^3.3.11",
|
||||
"picocolors": "^1.1.1",
|
||||
@@ -12628,7 +12612,6 @@
|
||||
"resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.2.tgz",
|
||||
"integrity": "sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==",
|
||||
"license": "Apache-2.0",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"tslib": "^2.1.0"
|
||||
}
|
||||
@@ -13764,7 +13747,6 @@
|
||||
"integrity": "sha512-LBAhFyLho16harJoWMg/nZsQYgTrg5jXOn2nCYjRUcZZEdE3qa2zb8QEDRUGVZBW4rlazf2fxkg8tztybTaqWw==",
|
||||
"dev": true,
|
||||
"license": "BSD-2-Clause",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"@jridgewell/source-map": "^0.3.3",
|
||||
"acorn": "^8.8.2",
|
||||
@@ -13917,8 +13899,7 @@
|
||||
"version": "2.8.1",
|
||||
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz",
|
||||
"integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==",
|
||||
"license": "0BSD",
|
||||
"peer": true
|
||||
"license": "0BSD"
|
||||
},
|
||||
"node_modules/tuf-js": {
|
||||
"version": "3.0.1",
|
||||
@@ -13975,7 +13956,6 @@
|
||||
"integrity": "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==",
|
||||
"dev": true,
|
||||
"license": "Apache-2.0",
|
||||
"peer": true,
|
||||
"bin": {
|
||||
"tsc": "bin/tsc",
|
||||
"tsserver": "bin/tsserver"
|
||||
@@ -14656,7 +14636,6 @@
|
||||
"integrity": "sha512-UFynvx+gM44Gv9qFgj0acCQK2VE1CtdfwFdimkapco3hlPCJ/zeq73n2yVKimVbtm+TnApIugGhLJnkU6gjYXA==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"@types/eslint-scope": "^3.7.7",
|
||||
"@types/estree": "^1.0.6",
|
||||
@@ -14734,7 +14713,6 @@
|
||||
"integrity": "sha512-QcQ72gh8a+7JO63TAx/6XZf/CWhgMzu5m0QirvPfGvptOusAxG12w2+aua1Jkjr7hzaWDnJ2n6JFeexMHI+Zjg==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"@types/bonjour": "^3.5.13",
|
||||
"@types/connect-history-api-fallback": "^1.5.4",
|
||||
@@ -15301,8 +15279,7 @@
|
||||
"version": "0.15.1",
|
||||
"resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.15.1.tgz",
|
||||
"integrity": "sha512-XE96n56IQpJM7NAoXswY3XRLcWFW83xe0BiAOeMD7K5k5xecOeul3Qcpx6GqEeeHNkW5DWL5zOyTbEfB4eti8w==",
|
||||
"license": "MIT",
|
||||
"peer": true
|
||||
"license": "MIT"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"/api/**": {
|
||||
"target": "http://localhost:8080",
|
||||
"target": "http://services01:8080",
|
||||
"secure": false,
|
||||
"changeOrigin": true,
|
||||
"pathRewrite": {
|
||||
|
||||
@@ -40,11 +40,19 @@
|
||||
</mat-chip-row>
|
||||
}
|
||||
<input
|
||||
#deploymentInput
|
||||
[matChipInputFor]="chipGrid"
|
||||
[matChipInputSeparatorKeyCodes]="[ENTER, SPACE] "
|
||||
[matChipInputAddOnBlur]="true"
|
||||
(matChipInputTokenEnd)="addDeployment($event)"
|
||||
[matAutocomplete]="auto"
|
||||
(matChipInputTokenEnd)="addDeploymentFromInput($event)"
|
||||
(input)="filterDeployments($event)"
|
||||
/>
|
||||
<mat-autocomplete #auto="matAutocomplete" (optionSelected)="addDeploymentFromAutoComplete($event); deploymentInput.value = '';">
|
||||
@for (deploymentName of $deploymentNames | async; track deploymentName) {
|
||||
<mat-option [value]="deploymentName">{{deploymentName}}</mat-option>
|
||||
}
|
||||
</mat-autocomplete>
|
||||
</mat-chip-grid>
|
||||
</mat-form-field>
|
||||
</mat-dialog-content>
|
||||
|
||||
@@ -8,6 +8,15 @@ import {MatChipGrid, MatChipInput, MatChipInputEvent, MatChipRemove, MatChipRow}
|
||||
import {ENTER, SPACE} from '@angular/cdk/keycodes';
|
||||
import {MatIcon} from '@angular/material/icon';
|
||||
import {ApiService} from '../../api/api.service';
|
||||
import {Observable, ReplaySubject} from 'rxjs';
|
||||
import {map, switchMap} from 'rxjs/operators';
|
||||
import {
|
||||
MatAutocomplete,
|
||||
MatAutocompleteSelectedEvent,
|
||||
MatAutocompleteTrigger,
|
||||
MatOption
|
||||
} from '@angular/material/autocomplete';
|
||||
import {AsyncPipe} from '@angular/common';
|
||||
|
||||
@Component({
|
||||
selector: 'app-edit-secret-dialog',
|
||||
@@ -23,7 +32,11 @@ import {ApiService} from '../../api/api.service';
|
||||
MatChipRow,
|
||||
MatIcon,
|
||||
MatChipInput,
|
||||
MatChipRemove
|
||||
MatChipRemove,
|
||||
MatAutocompleteTrigger,
|
||||
MatAutocomplete,
|
||||
AsyncPipe,
|
||||
MatOption
|
||||
],
|
||||
templateUrl: './edit-secret-dialog.component.html',
|
||||
styleUrl: './edit-secret-dialog.component.css',
|
||||
@@ -37,10 +50,24 @@ export class EditSecretDialogComponent {
|
||||
secret: Secret;
|
||||
originalSecret: Secret;
|
||||
sureDelete: boolean = false;
|
||||
$deploymentNames: Observable<Array<string>>;
|
||||
$deploymentNamesFilter: ReplaySubject<string> = new ReplaySubject<string>(1);
|
||||
|
||||
constructor(@Inject(MAT_DIALOG_DATA) public data: Secret, private apiService: ApiService) {
|
||||
this.secret = structuredClone(data);
|
||||
this.originalSecret = structuredClone(data);
|
||||
|
||||
this.$deploymentNames = apiService.deploymentStates$.pipe(
|
||||
switchMap(ds => this.$deploymentNamesFilter.pipe(map(filter => ds.filter(ds => ds.name.toLowerCase().includes(filter.toLowerCase()))))),
|
||||
map(ds =>
|
||||
ds.filter(ds => !this.secret.deployments.includes(ds.name))
|
||||
.map(ds => ds.name)
|
||||
.sort((a, b) => a.localeCompare(b))
|
||||
)
|
||||
|
||||
);
|
||||
|
||||
this.$deploymentNamesFilter.next('');
|
||||
}
|
||||
|
||||
changed(): boolean {
|
||||
@@ -68,14 +95,28 @@ export class EditSecretDialogComponent {
|
||||
this.secret.deployments = this.secret.deployments.filter(d => d !== deployment);
|
||||
}
|
||||
|
||||
addDeployment($event: MatChipInputEvent) {
|
||||
|
||||
if($event.value.trim().length === 0) return;
|
||||
addDeploymentFromInput($event: MatChipInputEvent) {
|
||||
|
||||
const value = $event.value;
|
||||
$event.chipInput.clear();
|
||||
this.addDeployment(value);
|
||||
}
|
||||
|
||||
if (this.secret.deployments.includes($event.value)) return;
|
||||
private addDeployment(value: string) {
|
||||
if (value.trim().length === 0) return;
|
||||
|
||||
this.secret.deployments.push($event.value);
|
||||
|
||||
if (this.secret.deployments.includes(value)) return;
|
||||
|
||||
this.secret.deployments.push(value);
|
||||
}
|
||||
|
||||
addDeploymentFromAutoComplete($event: MatAutocompleteSelectedEvent) {
|
||||
this.addDeployment($event.option.viewValue);
|
||||
$event.option.deselect();
|
||||
}
|
||||
|
||||
filterDeployments($event: Event) {
|
||||
this.$deploymentNamesFilter.next(($event.target as HTMLInputElement).value);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user