@gravitee/ui-particles-angular 15.5.0 → 15.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (28) hide show
  1. package/esm2022/lib/gio-el/gio-el-prompt/gio-el-prompt.component.mjs +87 -0
  2. package/esm2022/lib/gio-el/gio-el.service.mjs +43 -0
  3. package/esm2022/lib/gio-el/models/ElAiPromptState.mjs +23 -0
  4. package/esm2022/lib/gio-el/public-api.mjs +19 -0
  5. package/esm2022/lib/gio-form-json-schema/gio-form-json-schema.module.mjs +19 -2
  6. package/esm2022/lib/gio-form-json-schema/gio-formly-json-schema.service.mjs +10 -1
  7. package/esm2022/lib/gio-form-json-schema/model/GioJsonSchema.mjs +1 -1
  8. package/esm2022/lib/gio-form-json-schema/wrappers/gio-el-helper-wrapper.component.mjs +76 -0
  9. package/esm2022/lib/gio-popover/gio-popover-trigger.directive.mjs +46 -0
  10. package/esm2022/lib/gio-popover/gio-popover.component.mjs +83 -0
  11. package/esm2022/lib/gio-popover/index.mjs +18 -0
  12. package/esm2022/lib/gio-popover/public-api.mjs +18 -0
  13. package/esm2022/lib/public-api.mjs +3 -1
  14. package/fesm2022/gravitee-ui-particles-angular.mjs +820 -429
  15. package/fesm2022/gravitee-ui-particles-angular.mjs.map +1 -1
  16. package/lib/gio-el/gio-el-prompt/gio-el-prompt.component.d.ts +22 -0
  17. package/lib/gio-el/gio-el.service.d.ts +10 -0
  18. package/lib/gio-el/models/ElAiPromptState.d.ts +9 -0
  19. package/lib/gio-el/public-api.d.ts +3 -0
  20. package/lib/gio-form-json-schema/gio-form-json-schema.module.d.ts +18 -14
  21. package/lib/gio-form-json-schema/model/GioJsonSchema.d.ts +1 -0
  22. package/lib/gio-form-json-schema/wrappers/gio-el-helper-wrapper.component.d.ts +11 -0
  23. package/lib/gio-popover/gio-popover-trigger.directive.d.ts +12 -0
  24. package/lib/gio-popover/gio-popover.component.d.ts +15 -0
  25. package/lib/gio-popover/index.d.ts +2 -0
  26. package/lib/gio-popover/public-api.d.ts +2 -0
  27. package/lib/public-api.d.ts +2 -0
  28. package/package.json +1 -1
@@ -1,20 +1,20 @@
1
1
  import { trigger, transition, style, animate } from '@angular/animations';
2
2
  import * as i0 from '@angular/core';
3
- import { EventEmitter, Component, HostBinding, Input, Output, HostListener, NgModule, ChangeDetectionStrategy, Optional, Self, ViewChild, Directive, Injector, Inject, forwardRef, ContentChildren, Injectable, Host, ContentChild, InjectionToken, inject, Pipe, ViewEncapsulation } from '@angular/core';
4
- import { of, Subject, fromEvent, ReplaySubject, merge, Observable, BehaviorSubject, timer } from 'rxjs';
3
+ import { EventEmitter, Component, HostBinding, Input, Output, HostListener, NgModule, ChangeDetectionStrategy, Optional, Self, ViewChild, Directive, Injector, Inject, forwardRef, ContentChildren, Injectable, Host, ContentChild, InjectionToken, inject, ViewContainerRef, signal, computed, Pipe, ViewEncapsulation } from '@angular/core';
4
+ import { of, Subject, fromEvent, ReplaySubject, merge, delay as delay$1, Observable, BehaviorSubject, timer } from 'rxjs';
5
5
  import { delay, tap, startWith, switchMap, map, distinctUntilChanged, takeUntil, filter, take, debounceTime, shareReplay, catchError, debounce } from 'rxjs/operators';
6
6
  import * as i1 from '@angular/common';
7
7
  import { CommonModule } from '@angular/common';
8
8
  import * as i2 from '@angular/material/card';
9
9
  import { MatCardModule } from '@angular/material/card';
10
10
  import * as i3 from '@angular/material/button';
11
- import { MatButtonModule } from '@angular/material/button';
11
+ import { MatButtonModule, MatButton } from '@angular/material/button';
12
12
  import { ComponentHarness, HarnessPredicate, parallel, TestKey } from '@angular/cdk/testing';
13
13
  import { coerceBooleanProperty } from '@angular/cdk/coercion';
14
14
  import { MatFormFieldControl, MatFormFieldModule, MAT_FORM_FIELD_DEFAULT_OPTIONS } from '@angular/material/form-field';
15
15
  import { isEmpty, isString, isObject, toLower, dropRight, isNil, isArray, remove, get, set, castArray, isEqual, cloneDeep, uniqueId, range, has, some, filter as filter$1, intersection } from 'lodash';
16
16
  import * as i1$2 from '@angular/forms';
17
- import { FormsModule, UntypedFormArray, UntypedFormGroup, UntypedFormControl, Validators, NG_VALUE_ACCESSOR, NG_VALIDATORS, ReactiveFormsModule, NgControl, FormControl } from '@angular/forms';
17
+ import { FormsModule, UntypedFormArray, UntypedFormGroup, UntypedFormControl, Validators, NG_VALUE_ACCESSOR, NG_VALIDATORS, ReactiveFormsModule, NgControl, FormGroup, FormControl } from '@angular/forms';
18
18
  import * as i1$3 from '@angular/cdk/a11y';
19
19
  import { A11yModule } from '@angular/cdk/a11y';
20
20
  import * as i4 from '@angular/material/chips';
@@ -24,7 +24,7 @@ import { MatIconModule } from '@angular/material/icon';
24
24
  import * as i6 from '@angular/material/autocomplete';
25
25
  import { MatAutocompleteModule } from '@angular/material/autocomplete';
26
26
  import * as i5 from '@angular/material/input';
27
- import { MatInputModule } from '@angular/material/input';
27
+ import { MatInputModule, MatInput } from '@angular/material/input';
28
28
  import * as i6$1 from '@angular/material/select';
29
29
  import { MatSelectModule } from '@angular/material/select';
30
30
  import * as i2$1 from '@angular/platform-browser';
@@ -51,9 +51,13 @@ import { MatButtonToggleModule } from '@angular/material/button-toggle';
51
51
  import * as i2$3 from '@angular/material/tooltip';
52
52
  import { MatTooltipModule } from '@angular/material/tooltip';
53
53
  import Cronstrue from 'cronstrue/i18n';
54
- import { TestBed } from '@angular/core/testing';
54
+ import { Overlay, OverlayPositionBuilder } from '@angular/cdk/overlay';
55
+ import { TemplatePortal } from '@angular/cdk/portal';
56
+ import * as i3$3 from '@angular/material/progress-bar';
57
+ import { MatProgressBarModule } from '@angular/material/progress-bar';
55
58
  import * as i1$6 from '@angular/cdk/clipboard';
56
59
  import { ClipboardModule } from '@angular/cdk/clipboard';
60
+ import { TestBed } from '@angular/core/testing';
57
61
  import * as i1$7 from '@angular/common/http';
58
62
  import { MatButtonToggleGroupHarness } from '@angular/material/button-toggle/testing';
59
63
  import { MatSelectHarness } from '@angular/material/select/testing';
@@ -2396,6 +2400,15 @@ class GioFormlyJsonSchemaService {
2396
2400
  ...mappedField.props,
2397
2401
  };
2398
2402
  }
2403
+ if (mapSource.gioConfig?.el || get(mapSource, ['x-schema-form', 'expression-language'], false)) {
2404
+ mappedField.props = {
2405
+ ...mappedField.props,
2406
+ attributes: {
2407
+ ...mappedField.props?.attributes,
2408
+ el: 1,
2409
+ },
2410
+ };
2411
+ }
2399
2412
  return mappedField;
2400
2413
  }
2401
2414
  bannerMap(mappedField, mapSource) {
@@ -4343,7 +4356,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.4", ngImpor
4343
4356
  }] });
4344
4357
 
4345
4358
  /*
4346
- * Copyright (C) 2023 The Gravitee team (http://gravitee.io)
4359
+ * Copyright (C) 2025 The Gravitee team (http://gravitee.io)
4347
4360
  *
4348
4361
  * Licensed under the Apache License, Version 2.0 (the "License");
4349
4362
  * you may not use this file except in compliance with the License.
@@ -4357,21 +4370,67 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.4", ngImpor
4357
4370
  * See the License for the specific language governing permissions and
4358
4371
  * limitations under the License.
4359
4372
  */
4360
- class GioFjsNullTypeComponent extends FieldType {
4361
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: GioFjsNullTypeComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
4362
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.4", type: GioFjsNullTypeComponent, isStandalone: false, selector: "gio-fjs-null-type", usesInheritance: true, ngImport: i0, template: ``, isInline: true }); }
4373
+ class GioPopoverComponent {
4374
+ constructor() {
4375
+ this.overlay = inject(Overlay);
4376
+ this.overlayPositionBuilder = inject(OverlayPositionBuilder);
4377
+ this.viewContainerRef = inject(ViewContainerRef);
4378
+ this.overlayRef = null;
4379
+ this.trigger = null;
4380
+ this.closeOnBackdropClick = true;
4381
+ }
4382
+ open() {
4383
+ if (!this.trigger)
4384
+ return;
4385
+ if (this.overlayRef) {
4386
+ this.close();
4387
+ }
4388
+ const positionStrategy = this.overlayPositionBuilder.flexibleConnectedTo(this.trigger).withPositions([
4389
+ {
4390
+ originX: 'end',
4391
+ originY: 'top',
4392
+ overlayX: 'start',
4393
+ overlayY: 'top',
4394
+ },
4395
+ {
4396
+ originX: 'end',
4397
+ originY: 'bottom',
4398
+ overlayX: 'end',
4399
+ overlayY: 'top',
4400
+ },
4401
+ ]);
4402
+ this.overlayRef = this.overlay.create({
4403
+ positionStrategy,
4404
+ hasBackdrop: this.closeOnBackdropClick,
4405
+ backdropClass: 'cdk-overlay-transparent-backdrop',
4406
+ scrollStrategy: this.overlay.scrollStrategies.reposition(),
4407
+ });
4408
+ const portal = new TemplatePortal(this.popoverContent, this.viewContainerRef);
4409
+ this.overlayRef.attach(portal);
4410
+ this.overlayRef.backdropClick().subscribe(() => this.close());
4411
+ }
4412
+ close() {
4413
+ this.overlayRef?.detach();
4414
+ this.overlayRef?.dispose();
4415
+ this.overlayRef = null;
4416
+ }
4417
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: GioPopoverComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
4418
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.4", type: GioPopoverComponent, isStandalone: true, selector: "gio-popover", inputs: { trigger: "trigger", closeOnBackdropClick: "closeOnBackdropClick" }, viewQueries: [{ propertyName: "popoverContent", first: true, predicate: ["popoverContent"], descendants: true }], ngImport: i0, template: "<!--\n\n Copyright (C) 2025 The Gravitee team (http://gravitee.io)\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n-->\n<ng-template #popoverContent>\n <div class=\"popoverWrapper\" [class.withCloseButton]=\"!closeOnBackdropClick\">\n <button class=\"closeBtn\" mat-button aria-label=\"Close dialog\" (click)=\"close()\">\n <mat-icon svgIcon=\"gio:cancel\" />\n </button>\n <ng-content />\n </div>\n</ng-template>\n", styles: [":host{margin-left:16px}.closeBtn{position:absolute;z-index:200;top:0;right:0;margin:4px;float:right}.popoverWrapper{position:relative;z-index:100}.popoverWrapper>.closeBtn{visibility:collapse}.popoverWrapper.withCloseButton{padding:2.5em 12px 12px}.popoverWrapper.withCloseButton>.closeBtn{visibility:visible}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: GioIconsModule }, { kind: "component", type: i1$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i3.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }] }); }
4363
4419
  }
4364
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: GioFjsNullTypeComponent, decorators: [{
4420
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: GioPopoverComponent, decorators: [{
4365
4421
  type: Component,
4366
- args: [{
4367
- selector: 'gio-fjs-null-type',
4368
- template: ``,
4369
- standalone: false,
4370
- }]
4371
- }] });
4422
+ args: [{ selector: 'gio-popover', imports: [CommonModule, GioIconsModule, MatButtonModule], template: "<!--\n\n Copyright (C) 2025 The Gravitee team (http://gravitee.io)\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n-->\n<ng-template #popoverContent>\n <div class=\"popoverWrapper\" [class.withCloseButton]=\"!closeOnBackdropClick\">\n <button class=\"closeBtn\" mat-button aria-label=\"Close dialog\" (click)=\"close()\">\n <mat-icon svgIcon=\"gio:cancel\" />\n </button>\n <ng-content />\n </div>\n</ng-template>\n", styles: [":host{margin-left:16px}.closeBtn{position:absolute;z-index:200;top:0;right:0;margin:4px;float:right}.popoverWrapper{position:relative;z-index:100}.popoverWrapper>.closeBtn{visibility:collapse}.popoverWrapper.withCloseButton{padding:2.5em 12px 12px}.popoverWrapper.withCloseButton>.closeBtn{visibility:visible}\n"] }]
4423
+ }], propDecorators: { trigger: [{
4424
+ type: Input
4425
+ }], closeOnBackdropClick: [{
4426
+ type: Input
4427
+ }], popoverContent: [{
4428
+ type: ViewChild,
4429
+ args: ['popoverContent']
4430
+ }] } });
4372
4431
 
4373
4432
  /*
4374
- * Copyright (C) 2023 The Gravitee team (http://gravitee.io)
4433
+ * Copyright (C) 2025 The Gravitee team (http://gravitee.io)
4375
4434
  *
4376
4435
  * Licensed under the Apache License, Version 2.0 (the "License");
4377
4436
  * you may not use this file except in compliance with the License.
@@ -4385,50 +4444,37 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.4", ngImpor
4385
4444
  * See the License for the specific language governing permissions and
4386
4445
  * limitations under the License.
4387
4446
  */
4388
- class GioFjsObjectTypeComponent extends FieldType {
4389
- constructor() {
4390
- super(...arguments);
4391
- this.classNoUiBorder = false;
4447
+ class PopoverTriggerDirective {
4448
+ constructor(elementRef) {
4449
+ this.elementRef = elementRef;
4392
4450
  }
4393
- ngOnInit() {
4394
- this.classNoUiBorder = this.props.uiBorder === 'none';
4451
+ togglePopover() {
4452
+ if (this.gioPopoverTriggerFor) {
4453
+ // If a specific element is provided, use it as the trigger
4454
+ this.gioPopoverTriggerFor.trigger = this.gioPopoverTriggerBasedOnElement ?? this.elementRef;
4455
+ this.gioPopoverTriggerFor.open();
4456
+ }
4395
4457
  }
4396
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: GioFjsObjectTypeComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
4397
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.4", type: GioFjsObjectTypeComponent, isStandalone: false, selector: "gio-fjs-object-type", usesInheritance: true, ngImport: i0, template: `
4398
- <div class="wrapper">
4399
- <div class="wrapper__title" *ngIf="to.label">{{ to.label }}</div>
4400
- <p *ngIf="to.description">{{ to.description }}</p>
4401
- <div class="wrapper__error gio-ng-invalid" *ngIf="showError && formControl.errors">
4402
- <formly-validation-message [field]="field"></formly-validation-message>
4403
- </div>
4404
- <div class="wrapper__fields" [class.noUiBorder]="classNoUiBorder">
4405
- <ng-container *ngFor="let f of field.fieldGroup">
4406
- <formly-field *ngIf="f.type" class="wrapper__fields__field" [field]="f"></formly-field>
4407
- </ng-container>
4408
- </div>
4409
- </div>
4410
- `, isInline: true, styles: ["@charset \"UTF-8\";.gio-top-bar-menu .gio-badge-accent{background-color:var(--gio-oem-palette--active, #ffc2ac);color:var(--gio-oem-palette--active-contrast, #1e1b1b)}.wrapper{display:flex;flex-direction:column}.wrapper__title{font-size:18px;font-weight:600;line-height:24px;font-family:Kanit,Helvetica Neue,sans-serif;letter-spacing:.4px;margin-bottom:16px}.wrapper:empty{display:none}.wrapper__error{font-size:12px;font-weight:400;line-height:16px;font-family:Manrope,sans-serif;letter-spacing:normal;color:#dd1d1f}.wrapper__fields{padding:8px;border:1px solid #d2cecd;border-radius:8px}.wrapper__fields.noUiBorder{padding:0;border:none}.wrapper__fields:empty{display:none}.wrapper__fields:has(>.wrapper__fields__field:only-child):has(>.wrapper__fields__field:empty){display:none}.wrapper__fields__field:empty{display:none}.wrapper__fields__field+.wrapper__fields__field:not(:empty){display:block;margin-top:8px}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2$2.FormlyField, selector: "formly-field", inputs: ["field"] }, { kind: "component", type: i2$2.ɵFormlyValidationMessage, selector: "formly-validation-message", inputs: ["field"] }] }); }
4458
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: PopoverTriggerDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
4459
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.4", type: PopoverTriggerDirective, isStandalone: true, selector: "[gioPopoverTrigger]", inputs: { gioPopoverTriggerFor: "gioPopoverTriggerFor", gioPopoverTriggerBasedOnElement: "gioPopoverTriggerBasedOnElement" }, host: { listeners: { "click": "togglePopover()" } }, ngImport: i0 }); }
4411
4460
  }
4412
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: GioFjsObjectTypeComponent, decorators: [{
4413
- type: Component,
4414
- args: [{ selector: 'gio-fjs-object-type', template: `
4415
- <div class="wrapper">
4416
- <div class="wrapper__title" *ngIf="to.label">{{ to.label }}</div>
4417
- <p *ngIf="to.description">{{ to.description }}</p>
4418
- <div class="wrapper__error gio-ng-invalid" *ngIf="showError && formControl.errors">
4419
- <formly-validation-message [field]="field"></formly-validation-message>
4420
- </div>
4421
- <div class="wrapper__fields" [class.noUiBorder]="classNoUiBorder">
4422
- <ng-container *ngFor="let f of field.fieldGroup">
4423
- <formly-field *ngIf="f.type" class="wrapper__fields__field" [field]="f"></formly-field>
4424
- </ng-container>
4425
- </div>
4426
- </div>
4427
- `, standalone: false, styles: ["@charset \"UTF-8\";.gio-top-bar-menu .gio-badge-accent{background-color:var(--gio-oem-palette--active, #ffc2ac);color:var(--gio-oem-palette--active-contrast, #1e1b1b)}.wrapper{display:flex;flex-direction:column}.wrapper__title{font-size:18px;font-weight:600;line-height:24px;font-family:Kanit,Helvetica Neue,sans-serif;letter-spacing:.4px;margin-bottom:16px}.wrapper:empty{display:none}.wrapper__error{font-size:12px;font-weight:400;line-height:16px;font-family:Manrope,sans-serif;letter-spacing:normal;color:#dd1d1f}.wrapper__fields{padding:8px;border:1px solid #d2cecd;border-radius:8px}.wrapper__fields.noUiBorder{padding:0;border:none}.wrapper__fields:empty{display:none}.wrapper__fields:has(>.wrapper__fields__field:only-child):has(>.wrapper__fields__field:empty){display:none}.wrapper__fields__field:empty{display:none}.wrapper__fields__field+.wrapper__fields__field:not(:empty){display:block;margin-top:8px}\n"] }]
4428
- }] });
4461
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: PopoverTriggerDirective, decorators: [{
4462
+ type: Directive,
4463
+ args: [{
4464
+ selector: '[gioPopoverTrigger]',
4465
+ }]
4466
+ }], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { gioPopoverTriggerFor: [{
4467
+ type: Input,
4468
+ args: [{ required: true }]
4469
+ }], gioPopoverTriggerBasedOnElement: [{
4470
+ type: Input
4471
+ }], togglePopover: [{
4472
+ type: HostListener,
4473
+ args: ['click']
4474
+ }] } });
4429
4475
 
4430
4476
  /*
4431
- * Copyright (C) 2023 The Gravitee team (http://gravitee.io)
4477
+ * Copyright (C) 2025 The Gravitee team (http://gravitee.io)
4432
4478
  *
4433
4479
  * Licensed under the Apache License, Version 2.0 (the "License");
4434
4480
  * you may not use this file except in compliance with the License.
@@ -4442,133 +4488,48 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.4", ngImpor
4442
4488
  * See the License for the specific language governing permissions and
4443
4489
  * limitations under the License.
4444
4490
  */
4445
- class GioFjsArrayTypeComponent extends FieldArrayType {
4491
+
4492
+ /*
4493
+ * Copyright (C) 2024 The Gravitee team (http://gravitee.io)
4494
+ *
4495
+ * Licensed under the Apache License, Version 2.0 (the "License");
4496
+ * you may not use this file except in compliance with the License.
4497
+ * You may obtain a copy of the License at
4498
+ *
4499
+ * http://www.apache.org/licenses/LICENSE-2.0
4500
+ *
4501
+ * Unless required by applicable law or agreed to in writing, software
4502
+ * distributed under the License is distributed on an "AS IS" BASIS,
4503
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
4504
+ * See the License for the specific language governing permissions and
4505
+ * limitations under the License.
4506
+ */
4507
+ class GioElService {
4446
4508
  constructor() {
4447
- super(...arguments);
4448
- this.collapse = false;
4449
- this.classNoUiBorder = false;
4509
+ this.promptCallback = this.defaultPrompt;
4450
4510
  }
4451
- ngOnInit() {
4452
- this.classNoUiBorder = this.props.uiBorder === 'none';
4511
+ prompt(prompt) {
4512
+ return this.promptCallback(prompt);
4453
4513
  }
4454
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: GioFjsArrayTypeComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
4455
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.4", type: GioFjsArrayTypeComponent, isStandalone: false, selector: "gio-fjs-array-type", usesInheritance: true, ngImport: i0, template: `
4456
- <div class="wrapper" [class.error]="formControl.touched && formControl.invalid" [class.noUiBorder]="classNoUiBorder">
4457
- <div class="wrapper__header">
4458
- <div class="wrapper__header__text">
4459
- <div class="wrapper__header__text__title" *ngIf="to.label">{{ to.label }}</div>
4460
- <p *ngIf="to.description">{{ to.description }}</p>
4461
- </div>
4462
- <div class="wrapper__header__collapse">
4463
- <button type="button" mat-icon-button aria-label="Collapse" (click)="collapse = !collapse">
4464
- <mat-icon [class.collapse-open]="collapse" [class.collapse-close]="!collapse" svgIcon="gio:nav-arrow-down"></mat-icon>
4465
- </button>
4466
- </div>
4467
- </div>
4468
-
4469
- <div class="wrapper__error gio-ng-invalid" *ngIf="showError && formControl.errors">
4470
- <formly-validation-message [field]="field"></formly-validation-message>
4471
- </div>
4472
-
4473
- <div [hidden]="collapse" class="wrapper__rows" [class.collapse-open]="collapse" [class.collapse-close]="!collapse">
4474
- <div *ngFor="let field of field.fieldGroup; let i = index" class="wrapper__rows__row">
4475
- <formly-field class="wrapper__rows__row__field" [field]="field"></formly-field>
4476
- <div class="wrapper__rows__row__remove">
4477
- <button type="button" mat-icon-button aria-label="Remove" [disabled]="this.formControl?.disabled ?? false" (click)="remove(i)">
4478
- <mat-icon svgIcon="gio:cancel"></mat-icon>
4479
- </button>
4480
- </div>
4481
- </div>
4482
-
4483
- <div>
4484
- <button type="button" mat-stroked-button aria-label="Add" [disabled]="this.formControl?.disabled ?? false" (click)="add()">
4485
- <mat-icon svgIcon="gio:plus"></mat-icon> Add
4486
- </button>
4487
- </div>
4488
- </div>
4489
- </div>
4490
- `, isInline: true, styles: ["@charset \"UTF-8\";.gio-top-bar-menu .gio-badge-accent{background-color:var(--gio-oem-palette--active, #ffc2ac);color:var(--gio-oem-palette--active-contrast, #1e1b1b)}.wrapper{padding:8px;border:1px solid #d2cecd;border-radius:8px}.wrapper.noUiBorder{padding:0;border:none}.wrapper.error{border-color:#dd1d1f}.wrapper:empty{display:none}.wrapper__header{display:flex}.wrapper__header__text{flex:1 1 auto}.wrapper__header__text__title{font-size:14px;font-weight:500;line-height:22px;font-family:Manrope,sans-serif;letter-spacing:.4px;margin-bottom:8px}.wrapper__header__collapse{flex:0 0 auto}.wrapper__header__collapse .collapse-open{transform:rotate(180deg);transition:transform 225ms cubic-bezier(.4,0,.2,1)}.wrapper__header__collapse .collapse-close{transform:rotate(0);transition:transform 225ms cubic-bezier(.4,0,.2,1)}.wrapper__error{font-size:12px;font-weight:400;line-height:16px;font-family:Manrope,sans-serif;letter-spacing:normal;color:#dd1d1f}.wrapper__rows__row{display:flex;align-items:center;justify-content:space-between;margin-bottom:4px}.wrapper__rows__row+.wrapper__rows__row{padding-top:3px;border-top:1px solid #d2cecd;margin-top:4px}.wrapper__rows__row__field{flex:1 1 auto}.wrapper__rows__row__remove{flex:0 0 auto}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2$2.FormlyField, selector: "formly-field", inputs: ["field"] }, { kind: "component", type: i2$2.ɵFormlyValidationMessage, selector: "formly-validation-message", inputs: ["field"] }, { kind: "component", type: i1$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i3.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i3.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }] }); }
4514
+ defaultPrompt(prompt) {
4515
+ return of(prompt).pipe(delay$1(300), map(prompt => {
4516
+ return {
4517
+ message: `Error: no handler given (input prompt: ${prompt})`,
4518
+ };
4519
+ }));
4520
+ }
4521
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: GioElService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
4522
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: GioElService, providedIn: 'root' }); }
4491
4523
  }
4492
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: GioFjsArrayTypeComponent, decorators: [{
4493
- type: Component,
4494
- args: [{ selector: 'gio-fjs-array-type', template: `
4495
- <div class="wrapper" [class.error]="formControl.touched && formControl.invalid" [class.noUiBorder]="classNoUiBorder">
4496
- <div class="wrapper__header">
4497
- <div class="wrapper__header__text">
4498
- <div class="wrapper__header__text__title" *ngIf="to.label">{{ to.label }}</div>
4499
- <p *ngIf="to.description">{{ to.description }}</p>
4500
- </div>
4501
- <div class="wrapper__header__collapse">
4502
- <button type="button" mat-icon-button aria-label="Collapse" (click)="collapse = !collapse">
4503
- <mat-icon [class.collapse-open]="collapse" [class.collapse-close]="!collapse" svgIcon="gio:nav-arrow-down"></mat-icon>
4504
- </button>
4505
- </div>
4506
- </div>
4507
-
4508
- <div class="wrapper__error gio-ng-invalid" *ngIf="showError && formControl.errors">
4509
- <formly-validation-message [field]="field"></formly-validation-message>
4510
- </div>
4511
-
4512
- <div [hidden]="collapse" class="wrapper__rows" [class.collapse-open]="collapse" [class.collapse-close]="!collapse">
4513
- <div *ngFor="let field of field.fieldGroup; let i = index" class="wrapper__rows__row">
4514
- <formly-field class="wrapper__rows__row__field" [field]="field"></formly-field>
4515
- <div class="wrapper__rows__row__remove">
4516
- <button type="button" mat-icon-button aria-label="Remove" [disabled]="this.formControl?.disabled ?? false" (click)="remove(i)">
4517
- <mat-icon svgIcon="gio:cancel"></mat-icon>
4518
- </button>
4519
- </div>
4520
- </div>
4521
-
4522
- <div>
4523
- <button type="button" mat-stroked-button aria-label="Add" [disabled]="this.formControl?.disabled ?? false" (click)="add()">
4524
- <mat-icon svgIcon="gio:plus"></mat-icon> Add
4525
- </button>
4526
- </div>
4527
- </div>
4528
- </div>
4529
- `, standalone: false, styles: ["@charset \"UTF-8\";.gio-top-bar-menu .gio-badge-accent{background-color:var(--gio-oem-palette--active, #ffc2ac);color:var(--gio-oem-palette--active-contrast, #1e1b1b)}.wrapper{padding:8px;border:1px solid #d2cecd;border-radius:8px}.wrapper.noUiBorder{padding:0;border:none}.wrapper.error{border-color:#dd1d1f}.wrapper:empty{display:none}.wrapper__header{display:flex}.wrapper__header__text{flex:1 1 auto}.wrapper__header__text__title{font-size:14px;font-weight:500;line-height:22px;font-family:Manrope,sans-serif;letter-spacing:.4px;margin-bottom:8px}.wrapper__header__collapse{flex:0 0 auto}.wrapper__header__collapse .collapse-open{transform:rotate(180deg);transition:transform 225ms cubic-bezier(.4,0,.2,1)}.wrapper__header__collapse .collapse-close{transform:rotate(0);transition:transform 225ms cubic-bezier(.4,0,.2,1)}.wrapper__error{font-size:12px;font-weight:400;line-height:16px;font-family:Manrope,sans-serif;letter-spacing:normal;color:#dd1d1f}.wrapper__rows__row{display:flex;align-items:center;justify-content:space-between;margin-bottom:4px}.wrapper__rows__row+.wrapper__rows__row{padding-top:3px;border-top:1px solid #d2cecd;margin-top:4px}.wrapper__rows__row__field{flex:1 1 auto}.wrapper__rows__row__remove{flex:0 0 auto}\n"] }]
4524
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: GioElService, decorators: [{
4525
+ type: Injectable,
4526
+ args: [{
4527
+ providedIn: 'root',
4528
+ }]
4530
4529
  }] });
4531
4530
 
4532
- function minItemsValidationMessage(error, field) {
4533
- return `Should NOT have fewer than ${field.props?.minItems} items`;
4534
- }
4535
- function maxItemsValidationMessage(error, field) {
4536
- return `Should NOT have more than ${field.props?.maxItems} items`;
4537
- }
4538
- function minLengthValidationMessage(error, field) {
4539
- return `Should NOT be shorter than ${field.props?.minLength} characters`;
4540
- }
4541
- function maxLengthValidationMessage(error, field) {
4542
- return `Should NOT be longer than ${field.props?.maxLength} characters`;
4543
- }
4544
- function minValidationMessage(error, field) {
4545
- return `Should be >= ${field.props?.min}`;
4546
- }
4547
- function maxValidationMessage(error, field) {
4548
- return `Should be <= ${field.props?.max}`;
4549
- }
4550
- function multipleOfValidationMessage(error, field) {
4551
- return `Should be multiple of ${field.props?.step}`;
4552
- }
4553
- function exclusiveMinimumValidationMessage(error, field) {
4554
- return `Should be > ${field.props?.exclusiveMinimum}`;
4555
- }
4556
- function exclusiveMaximumValidationMessage(error, field) {
4557
- return `Should be < ${field.props?.exclusiveMaximum}`;
4558
- }
4559
- function constValidationMessage(error, field) {
4560
- return `Should be equal to constant "${field.props?.const}"`;
4561
- }
4562
- function typeValidationMessage({ schemaType }) {
4563
- return `Should be "${schemaType[0]}".`;
4564
- }
4565
- function patternValidationMessage(error, field) {
4566
- const key = field?.key?.toString() ?? 'Field';
4567
- return `${key.charAt(0).toUpperCase() + key.slice(1)} value does not respect the pattern: ${field?.props?.pattern}`;
4568
- }
4569
-
4570
4531
  /*
4571
- * Copyright (C) 2023 The Gravitee team (http://gravitee.io)
4532
+ * Copyright (C) 2025 The Gravitee team (http://gravitee.io)
4572
4533
  *
4573
4534
  * Licensed under the Apache License, Version 2.0 (the "License");
4574
4535
  * you may not use this file except in compliance with the License.
@@ -4582,27 +4543,15 @@ function patternValidationMessage(error, field) {
4582
4543
  * See the License for the specific language governing permissions and
4583
4544
  * limitations under the License.
4584
4545
  */
4585
- class GioBannerWrapperComponent extends FieldWrapper {
4586
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: GioBannerWrapperComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
4587
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.4", type: GioBannerWrapperComponent, isStandalone: false, selector: "gio-banner-wrapper", usesInheritance: true, ngImport: i0, template: "<!--\n\n Copyright (C) 2023 The Gravitee team (http://gravitee.io)\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n-->\n<div class=\"wrapper\">\n <div class=\"banner\">\n <div class=\"banner__icon\"><mat-icon svgIcon=\"gio:info\"></mat-icon></div>\n <div>\n <div class=\"banner__title\" [innerHTML]=\"props.bannerTitle\"></div>\n <div class=\"banner__text\" [innerHTML]=\"props.bannerText\"></div>\n </div>\n </div>\n <ng-container #fieldComponent></ng-container>\n</div>\n", styles: ["@charset \"UTF-8\";.gio-top-bar-menu .gio-badge-accent{background-color:var(--gio-oem-palette--active, #ffc2ac);color:var(--gio-oem-palette--active-contrast, #1e1b1b)}::ng-deep gio-banner-wrapper ul{padding-inline-start:16px}.wrapper{padding:8px 0}.banner{display:flex;flex-direction:row;align-items:flex-start;padding:8px;border-radius:8px;margin-bottom:8px;background:#f7f7f8;gap:8px}.banner__icon{padding-top:2px}.banner__icon mat-icon{width:16px;height:16px;color:#da3b00}.banner__title{font-size:14px;font-weight:700;line-height:20px;font-family:Manrope,sans-serif;letter-spacing:.4px}.banner__text{font-size:14px;font-weight:500;line-height:22px;font-family:Manrope,sans-serif;letter-spacing:.4px;color:#322f2f}\n"], dependencies: [{ kind: "component", type: i1$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }] }); }
4546
+ function isPromptSuccess(value) {
4547
+ return typeof value === 'object' && value !== null && typeof get(value, 'el') === 'string';
4588
4548
  }
4589
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: GioBannerWrapperComponent, decorators: [{
4590
- type: Component,
4591
- args: [{ selector: 'gio-banner-wrapper', standalone: false, template: "<!--\n\n Copyright (C) 2023 The Gravitee team (http://gravitee.io)\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n-->\n<div class=\"wrapper\">\n <div class=\"banner\">\n <div class=\"banner__icon\"><mat-icon svgIcon=\"gio:info\"></mat-icon></div>\n <div>\n <div class=\"banner__title\" [innerHTML]=\"props.bannerTitle\"></div>\n <div class=\"banner__text\" [innerHTML]=\"props.bannerText\"></div>\n </div>\n </div>\n <ng-container #fieldComponent></ng-container>\n</div>\n", styles: ["@charset \"UTF-8\";.gio-top-bar-menu .gio-badge-accent{background-color:var(--gio-oem-palette--active, #ffc2ac);color:var(--gio-oem-palette--active-contrast, #1e1b1b)}::ng-deep gio-banner-wrapper ul{padding-inline-start:16px}.wrapper{padding:8px 0}.banner{display:flex;flex-direction:row;align-items:flex-start;padding:8px;border-radius:8px;margin-bottom:8px;background:#f7f7f8;gap:8px}.banner__icon{padding-top:2px}.banner__icon mat-icon{width:16px;height:16px;color:#da3b00}.banner__title{font-size:14px;font-weight:700;line-height:20px;font-family:Manrope,sans-serif;letter-spacing:.4px}.banner__text{font-size:14px;font-weight:500;line-height:22px;font-family:Manrope,sans-serif;letter-spacing:.4px;color:#322f2f}\n"] }]
4592
- }] });
4593
-
4594
- function bannerExtension(field) {
4595
- if (!field.props || (field.wrappers && field.wrappers.indexOf('gio-with-banner') !== -1)) {
4596
- return;
4597
- }
4598
- if (field.props.bannerTitle || field.props.bannerText) {
4599
- // WARNING: 'gio-with-banner' must be placed before field wrappers in order to put banner before mat-form-field if exists
4600
- field.wrappers = ['gio-with-banner', ...(field.wrappers || [])];
4601
- }
4549
+ function isPromptError(value) {
4550
+ return typeof value === 'object' && value !== null && typeof get(value, 'message') === 'string';
4602
4551
  }
4603
4552
 
4604
4553
  /*
4605
- * Copyright (C) 2023 The Gravitee team (http://gravitee.io)
4554
+ * Copyright (C) 2015 The Gravitee team (http://gravitee.io)
4606
4555
  *
4607
4556
  * Licensed under the Apache License, Version 2.0 (the "License");
4608
4557
  * you may not use this file except in compliance with the License.
@@ -4616,16 +4565,557 @@ function bannerExtension(field) {
4616
4565
  * See the License for the specific language governing permissions and
4617
4566
  * limitations under the License.
4618
4567
  */
4619
- class GioFjsMultiSchemaTypeComponent extends FieldType {
4620
- constructor(cdr) {
4621
- super();
4622
- this.cdr = cdr;
4623
- this.unsubscribe$ = new Subject();
4624
- }
4625
- ngOnDestroy() {
4626
- this.unsubscribe$.next();
4627
- this.unsubscribe$.unsubscribe();
4628
- }
4568
+ class GioClipboardComponent {
4569
+ constructor(clipboard) {
4570
+ this.clipboard = clipboard;
4571
+ this.label = 'Copy to clipboard';
4572
+ this.tooltipHideDelay = 0;
4573
+ this.clicked = false;
4574
+ this.contentToCopy = '';
4575
+ this.alwaysVisible = false;
4576
+ this.tabIndex = undefined;
4577
+ }
4578
+ onCopied(success, tooltip) {
4579
+ tooltip.message = success ? 'Copied!' : 'Failed to copy!';
4580
+ tooltip.hideDelay = 2000;
4581
+ tooltip.show();
4582
+ this.clicked = true;
4583
+ setTimeout(() => {
4584
+ tooltip.hide();
4585
+ }, 2000);
4586
+ setTimeout(() => {
4587
+ this.clicked = false;
4588
+ tooltip.message = this.label;
4589
+ tooltip.hideDelay = this.tooltipHideDelay;
4590
+ }, 2500);
4591
+ }
4592
+ onKeyupSpace() {
4593
+ this.clipboard.copy(this.contentToCopy);
4594
+ if (this.tooltip) {
4595
+ this.onCopied(true, this.tooltip);
4596
+ }
4597
+ }
4598
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: GioClipboardComponent, deps: [{ token: i1$6.Clipboard }], target: i0.ɵɵFactoryTarget.Directive }); }
4599
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.4", type: GioClipboardComponent, isStandalone: true, inputs: { contentToCopy: "contentToCopy", alwaysVisible: "alwaysVisible", tabIndex: "tabIndex" }, viewQueries: [{ propertyName: "tooltip", first: true, predicate: ["tooltip"], descendants: true }], ngImport: i0 }); }
4600
+ }
4601
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: GioClipboardComponent, decorators: [{
4602
+ type: Directive
4603
+ }], ctorParameters: () => [{ type: i1$6.Clipboard }], propDecorators: { tooltip: [{
4604
+ type: ViewChild,
4605
+ args: ['tooltip']
4606
+ }], contentToCopy: [{
4607
+ type: Input
4608
+ }], alwaysVisible: [{
4609
+ type: Input
4610
+ }], tabIndex: [{
4611
+ type: Input
4612
+ }] } });
4613
+
4614
+ /*
4615
+ * Copyright (C) 2015 The Gravitee team (http://gravitee.io)
4616
+ *
4617
+ * Licensed under the Apache License, Version 2.0 (the "License");
4618
+ * you may not use this file except in compliance with the License.
4619
+ * You may obtain a copy of the License at
4620
+ *
4621
+ * http://www.apache.org/licenses/LICENSE-2.0
4622
+ *
4623
+ * Unless required by applicable law or agreed to in writing, software
4624
+ * distributed under the License is distributed on an "AS IS" BASIS,
4625
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
4626
+ * See the License for the specific language governing permissions and
4627
+ * limitations under the License.
4628
+ */
4629
+ class GioClipboardCopyWrapperComponent extends GioClipboardComponent {
4630
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: GioClipboardCopyWrapperComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
4631
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.4", type: GioClipboardCopyWrapperComponent, isStandalone: false, selector: "[gioClipboardCopyWrapper]", usesInheritance: true, ngImport: i0, template: `
4632
+ <ng-content></ng-content>
4633
+ <button
4634
+ #tooltip="matTooltip"
4635
+ type="button"
4636
+ class="right"
4637
+ [attr.aria-label]="label"
4638
+ [class.clicked]="clicked"
4639
+ [class.always-visible]="alwaysVisible"
4640
+ [cdkCopyToClipboard]="contentToCopy"
4641
+ (cdkCopyToClipboardCopied)="onCopied($event, tooltip)"
4642
+ matRipple
4643
+ [matRippleCentered]="true"
4644
+ [matRippleUnbounded]="true"
4645
+ [matTooltip]="label"
4646
+ [matTooltipPosition]="'after'"
4647
+ (keyup.Space)="onKeyupSpace()"
4648
+ >
4649
+ <mat-icon [inline]="true">{{ clicked ? 'check' : 'content_copy' }}</mat-icon>
4650
+ </button>
4651
+ `, isInline: true, styles: ["@charset \"UTF-8\";.gio-top-bar-menu .gio-badge-accent{background-color:var(--gio-oem-palette--active, #ffc2ac);color:var(--gio-oem-palette--active-contrast, #1e1b1b)}.right{padding:0;border:none;margin-left:4px;background:none;color:#5c5959;cursor:pointer;outline:inherit}.right:not(.clicked,.always-visible){opacity:0}.right.clicked{color:#da3b00;opacity:1}:host(:hover,:focus) .right{opacity:1}:host(:hover,:focus) .right:hover,:host(:hover,:focus) .right:focus{color:#da3b00}\n"], dependencies: [{ kind: "component", type: i1$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i2$3.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "directive", type: i3$1.MatRipple, selector: "[mat-ripple], [matRipple]", inputs: ["matRippleColor", "matRippleUnbounded", "matRippleCentered", "matRippleRadius", "matRippleAnimation", "matRippleDisabled", "matRippleTrigger"], exportAs: ["matRipple"] }, { kind: "directive", type: i1$6.CdkCopyToClipboard, selector: "[cdkCopyToClipboard]", inputs: ["cdkCopyToClipboard", "cdkCopyToClipboardAttempts"], outputs: ["cdkCopyToClipboardCopied"] }] }); }
4652
+ }
4653
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: GioClipboardCopyWrapperComponent, decorators: [{
4654
+ type: Component,
4655
+ args: [{ selector: '[gioClipboardCopyWrapper]', template: `
4656
+ <ng-content></ng-content>
4657
+ <button
4658
+ #tooltip="matTooltip"
4659
+ type="button"
4660
+ class="right"
4661
+ [attr.aria-label]="label"
4662
+ [class.clicked]="clicked"
4663
+ [class.always-visible]="alwaysVisible"
4664
+ [cdkCopyToClipboard]="contentToCopy"
4665
+ (cdkCopyToClipboardCopied)="onCopied($event, tooltip)"
4666
+ matRipple
4667
+ [matRippleCentered]="true"
4668
+ [matRippleUnbounded]="true"
4669
+ [matTooltip]="label"
4670
+ [matTooltipPosition]="'after'"
4671
+ (keyup.Space)="onKeyupSpace()"
4672
+ >
4673
+ <mat-icon [inline]="true">{{ clicked ? 'check' : 'content_copy' }}</mat-icon>
4674
+ </button>
4675
+ `, standalone: false, styles: ["@charset \"UTF-8\";.gio-top-bar-menu .gio-badge-accent{background-color:var(--gio-oem-palette--active, #ffc2ac);color:var(--gio-oem-palette--active-contrast, #1e1b1b)}.right{padding:0;border:none;margin-left:4px;background:none;color:#5c5959;cursor:pointer;outline:inherit}.right:not(.clicked,.always-visible){opacity:0}.right.clicked{color:#da3b00;opacity:1}:host(:hover,:focus) .right{opacity:1}:host(:hover,:focus) .right:hover,:host(:hover,:focus) .right:focus{color:#da3b00}\n"] }]
4676
+ }] });
4677
+
4678
+ /*
4679
+ * Copyright (C) 2015 The Gravitee team (http://gravitee.io)
4680
+ *
4681
+ * Licensed under the Apache License, Version 2.0 (the "License");
4682
+ * you may not use this file except in compliance with the License.
4683
+ * You may obtain a copy of the License at
4684
+ *
4685
+ * http://www.apache.org/licenses/LICENSE-2.0
4686
+ *
4687
+ * Unless required by applicable law or agreed to in writing, software
4688
+ * distributed under the License is distributed on an "AS IS" BASIS,
4689
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
4690
+ * See the License for the specific language governing permissions and
4691
+ * limitations under the License.
4692
+ */
4693
+ class GioClipboardCopyIconComponent extends GioClipboardComponent {
4694
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: GioClipboardCopyIconComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
4695
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.4", type: GioClipboardCopyIconComponent, isStandalone: false, selector: "gio-clipboard-copy-icon", usesInheritance: true, ngImport: i0, template: `
4696
+ <button
4697
+ #tooltip="matTooltip"
4698
+ type="button"
4699
+ class="btn"
4700
+ [attr.aria-label]="label"
4701
+ [class.clicked]="clicked"
4702
+ [cdkCopyToClipboard]="contentToCopy"
4703
+ (cdkCopyToClipboardCopied)="onCopied($event, tooltip)"
4704
+ matRipple
4705
+ [matRippleCentered]="true"
4706
+ [matRippleUnbounded]="true"
4707
+ [matTooltip]="label"
4708
+ [matTooltipPosition]="'after'"
4709
+ (keyup.Space)="onKeyupSpace()"
4710
+ >
4711
+ <mat-icon>{{ clicked ? 'check' : 'content_copy' }}</mat-icon>
4712
+ </button>
4713
+ `, isInline: true, styles: ["@charset \"UTF-8\";.gio-top-bar-menu .gio-badge-accent{background-color:var(--gio-oem-palette--active, #ffc2ac);color:var(--gio-oem-palette--active-contrast, #1e1b1b)}:host-context(.mat-mdc-form-field-icon-suffix){padding:12px}.btn{padding:0;border:none;margin-left:4px;background:none;color:#5c5959;cursor:pointer;outline:inherit}.btn.clicked,.btn:hover,.btn:focus{color:#da3b00}\n"], dependencies: [{ kind: "component", type: i1$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i2$3.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "directive", type: i3$1.MatRipple, selector: "[mat-ripple], [matRipple]", inputs: ["matRippleColor", "matRippleUnbounded", "matRippleCentered", "matRippleRadius", "matRippleAnimation", "matRippleDisabled", "matRippleTrigger"], exportAs: ["matRipple"] }, { kind: "directive", type: i1$6.CdkCopyToClipboard, selector: "[cdkCopyToClipboard]", inputs: ["cdkCopyToClipboard", "cdkCopyToClipboardAttempts"], outputs: ["cdkCopyToClipboardCopied"] }] }); }
4714
+ }
4715
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: GioClipboardCopyIconComponent, decorators: [{
4716
+ type: Component,
4717
+ args: [{ selector: 'gio-clipboard-copy-icon', template: `
4718
+ <button
4719
+ #tooltip="matTooltip"
4720
+ type="button"
4721
+ class="btn"
4722
+ [attr.aria-label]="label"
4723
+ [class.clicked]="clicked"
4724
+ [cdkCopyToClipboard]="contentToCopy"
4725
+ (cdkCopyToClipboardCopied)="onCopied($event, tooltip)"
4726
+ matRipple
4727
+ [matRippleCentered]="true"
4728
+ [matRippleUnbounded]="true"
4729
+ [matTooltip]="label"
4730
+ [matTooltipPosition]="'after'"
4731
+ (keyup.Space)="onKeyupSpace()"
4732
+ >
4733
+ <mat-icon>{{ clicked ? 'check' : 'content_copy' }}</mat-icon>
4734
+ </button>
4735
+ `, standalone: false, styles: ["@charset \"UTF-8\";.gio-top-bar-menu .gio-badge-accent{background-color:var(--gio-oem-palette--active, #ffc2ac);color:var(--gio-oem-palette--active-contrast, #1e1b1b)}:host-context(.mat-mdc-form-field-icon-suffix){padding:12px}.btn{padding:0;border:none;margin-left:4px;background:none;color:#5c5959;cursor:pointer;outline:inherit}.btn.clicked,.btn:hover,.btn:focus{color:#da3b00}\n"] }]
4736
+ }] });
4737
+
4738
+ /*
4739
+ * Copyright (C) 2015 The Gravitee team (http://gravitee.io)
4740
+ *
4741
+ * Licensed under the Apache License, Version 2.0 (the "License");
4742
+ * you may not use this file except in compliance with the License.
4743
+ * You may obtain a copy of the License at
4744
+ *
4745
+ * http://www.apache.org/licenses/LICENSE-2.0
4746
+ *
4747
+ * Unless required by applicable law or agreed to in writing, software
4748
+ * distributed under the License is distributed on an "AS IS" BASIS,
4749
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
4750
+ * See the License for the specific language governing permissions and
4751
+ * limitations under the License.
4752
+ */
4753
+ class GioClipboardModule {
4754
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: GioClipboardModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
4755
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.4", ngImport: i0, type: GioClipboardModule, declarations: [GioClipboardCopyWrapperComponent, GioClipboardCopyIconComponent], imports: [CommonModule, MatIconModule, MatTooltipModule, MatRippleModule, ClipboardModule, MatButtonModule], exports: [GioClipboardCopyWrapperComponent, GioClipboardCopyIconComponent] }); }
4756
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: GioClipboardModule, imports: [CommonModule, MatIconModule, MatTooltipModule, MatRippleModule, ClipboardModule, MatButtonModule] }); }
4757
+ }
4758
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: GioClipboardModule, decorators: [{
4759
+ type: NgModule,
4760
+ args: [{
4761
+ imports: [CommonModule, MatIconModule, MatTooltipModule, MatRippleModule, ClipboardModule, MatButtonModule],
4762
+ declarations: [GioClipboardCopyWrapperComponent, GioClipboardCopyIconComponent],
4763
+ exports: [GioClipboardCopyWrapperComponent, GioClipboardCopyIconComponent],
4764
+ }]
4765
+ }] });
4766
+
4767
+ /*
4768
+ * Copyright (C) 2025 The Gravitee team (http://gravitee.io)
4769
+ *
4770
+ * Licensed under the Apache License, Version 2.0 (the "License");
4771
+ * you may not use this file except in compliance with the License.
4772
+ * You may obtain a copy of the License at
4773
+ *
4774
+ * http://www.apache.org/licenses/LICENSE-2.0
4775
+ *
4776
+ * Unless required by applicable law or agreed to in writing, software
4777
+ * distributed under the License is distributed on an "AS IS" BASIS,
4778
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
4779
+ * See the License for the specific language governing permissions and
4780
+ * limitations under the License.
4781
+ */
4782
+ class GioElPromptComponent {
4783
+ constructor() {
4784
+ this.maxPromptSize = 256;
4785
+ this.aiRequestFormGroup = new FormGroup({
4786
+ prompt: new FormControl('', [Validators.required, Validators.max(this.maxPromptSize)]),
4787
+ });
4788
+ this.elService = inject(GioElService);
4789
+ this.responseState = signal(null);
4790
+ this.el = computed(() => {
4791
+ const state = this.responseState();
4792
+ return isPromptSuccess(state) ? state.el : null;
4793
+ });
4794
+ this.errorMessage = computed(() => {
4795
+ const state = this.responseState();
4796
+ return isPromptError(state) ? state.message : null;
4797
+ });
4798
+ }
4799
+ ngAfterViewInit() {
4800
+ setTimeout(() => {
4801
+ this.myInput.nativeElement.focus();
4802
+ }, 1000);
4803
+ }
4804
+ sendPromptToIA() {
4805
+ const prompt = this.aiRequestFormGroup.get('prompt')?.value;
4806
+ if (!prompt) {
4807
+ return;
4808
+ }
4809
+ this.responseState.set('loading');
4810
+ this.elService.prompt(prompt).subscribe(reply => this.responseState.set(reply));
4811
+ }
4812
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: GioElPromptComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
4813
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.4", type: GioElPromptComponent, isStandalone: true, selector: "gio-el-prompt", inputs: { responseState: "responseState" }, viewQueries: [{ propertyName: "myInput", first: true, predicate: ["promptArea"], descendants: true }], ngImport: i0, template: "<!--\n\n Copyright (C) 2025 The Gravitee team (http://gravitee.io)\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n-->\n<h5>EL IA Assistant</h5>\n\n<div class=\"aiRequestForm\" [formGroup]=\"aiRequestFormGroup\">\n <mat-form-field class=\"example-full-width\">\n <mat-label>Describe the EL you want to generate</mat-label>\n <textarea #promptArea matInput formControlName=\"prompt\"></textarea>\n <mat-hint [align]=\"'end'\">{{ aiRequestFormGroup.get('prompt')?.value?.length || 0 }}/{{ maxPromptSize }}</mat-hint>\n </mat-form-field>\n\n <button mat-raised-button [disabled]=\"aiRequestFormGroup.invalid\" (click)=\"sendPromptToIA()\">\n <mat-icon svgIcon=\"gio:magic-wand\" />\n Ask Newt AI\n </button>\n</div>\n\n<div class=\"ai-card__content__response\">\n @if (responseState() === 'loading') {\n <mat-progress-bar mode=\"indeterminate\" class=\"loading\" />\n }\n @if (el(); as expression) {\n <gio-banner-success>\n <code gioClipboardCopyWrapper [contentToCopy]=\"expression\" [alwaysVisible]=\"true\">{{ expression }}</code>\n </gio-banner-success>\n }\n @if (errorMessage(); as message) {\n <gio-banner-error>\n Error\n <span gioBannerBody> {{ message }} </span>\n </gio-banner-error>\n }\n</div>\n", styles: ["@charset \"UTF-8\";.gio-top-bar-menu .gio-badge-accent{background-color:var(--gio-oem-palette--active, #ffc2ac);color:var(--gio-oem-palette--active-contrast, #1e1b1b)}:host{display:flex;width:400px;flex-direction:column;padding:12px;border-radius:4px;background-color:#fff;box-shadow:0 2px 4px -1px #0003,0 4px 5px #00000024,0 1px 10px #0000001f}.aiRequestForm{display:flex;flex-direction:column;gap:8px}.banner__wrapper__title{width:100%}.banner-success-content{display:flex;flex-direction:row;align-items:center;justify-content:space-between}\n"], dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i5.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i5.MatLabel, selector: "mat-label" }, { kind: "directive", type: i5.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "component", type: MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatProgressBarModule }, { kind: "component", type: i3$3.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "ngmodule", type: GioIconsModule }, { kind: "component", type: i1$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: GioBannerModule }, { kind: "component", type: GioBannerErrorComponent, selector: "gio-banner-error" }, { kind: "component", type: GioBannerSuccessComponent, selector: "gio-banner-success" }, { kind: "directive", type: GioBannerBodyDirective, selector: "[gioBannerBody]" }, { kind: "ngmodule", type: GioClipboardModule }, { kind: "component", type: GioClipboardCopyWrapperComponent, selector: "[gioClipboardCopyWrapper]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
4814
+ }
4815
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: GioElPromptComponent, decorators: [{
4816
+ type: Component,
4817
+ args: [{ selector: 'gio-el-prompt', imports: [
4818
+ ReactiveFormsModule,
4819
+ MatFormFieldModule,
4820
+ MatInput,
4821
+ MatButton,
4822
+ MatProgressBarModule,
4823
+ MatTooltipModule,
4824
+ GioIconsModule,
4825
+ GioBannerModule,
4826
+ GioClipboardModule,
4827
+ ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<!--\n\n Copyright (C) 2025 The Gravitee team (http://gravitee.io)\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n-->\n<h5>EL IA Assistant</h5>\n\n<div class=\"aiRequestForm\" [formGroup]=\"aiRequestFormGroup\">\n <mat-form-field class=\"example-full-width\">\n <mat-label>Describe the EL you want to generate</mat-label>\n <textarea #promptArea matInput formControlName=\"prompt\"></textarea>\n <mat-hint [align]=\"'end'\">{{ aiRequestFormGroup.get('prompt')?.value?.length || 0 }}/{{ maxPromptSize }}</mat-hint>\n </mat-form-field>\n\n <button mat-raised-button [disabled]=\"aiRequestFormGroup.invalid\" (click)=\"sendPromptToIA()\">\n <mat-icon svgIcon=\"gio:magic-wand\" />\n Ask Newt AI\n </button>\n</div>\n\n<div class=\"ai-card__content__response\">\n @if (responseState() === 'loading') {\n <mat-progress-bar mode=\"indeterminate\" class=\"loading\" />\n }\n @if (el(); as expression) {\n <gio-banner-success>\n <code gioClipboardCopyWrapper [contentToCopy]=\"expression\" [alwaysVisible]=\"true\">{{ expression }}</code>\n </gio-banner-success>\n }\n @if (errorMessage(); as message) {\n <gio-banner-error>\n Error\n <span gioBannerBody> {{ message }} </span>\n </gio-banner-error>\n }\n</div>\n", styles: ["@charset \"UTF-8\";.gio-top-bar-menu .gio-badge-accent{background-color:var(--gio-oem-palette--active, #ffc2ac);color:var(--gio-oem-palette--active-contrast, #1e1b1b)}:host{display:flex;width:400px;flex-direction:column;padding:12px;border-radius:4px;background-color:#fff;box-shadow:0 2px 4px -1px #0003,0 4px 5px #00000024,0 1px 10px #0000001f}.aiRequestForm{display:flex;flex-direction:column;gap:8px}.banner__wrapper__title{width:100%}.banner-success-content{display:flex;flex-direction:row;align-items:center;justify-content:space-between}\n"] }]
4828
+ }], propDecorators: { responseState: [{
4829
+ type: Input
4830
+ }], myInput: [{
4831
+ type: ViewChild,
4832
+ args: ['promptArea']
4833
+ }] } });
4834
+
4835
+ /*
4836
+ * Copyright (C) 2023 The Gravitee team (http://gravitee.io)
4837
+ *
4838
+ * Licensed under the Apache License, Version 2.0 (the "License");
4839
+ * you may not use this file except in compliance with the License.
4840
+ * You may obtain a copy of the License at
4841
+ *
4842
+ * http://www.apache.org/licenses/LICENSE-2.0
4843
+ *
4844
+ * Unless required by applicable law or agreed to in writing, software
4845
+ * distributed under the License is distributed on an "AS IS" BASIS,
4846
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
4847
+ * See the License for the specific language governing permissions and
4848
+ * limitations under the License.
4849
+ */
4850
+ class GioFjsNullTypeComponent extends FieldType {
4851
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: GioFjsNullTypeComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
4852
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.4", type: GioFjsNullTypeComponent, isStandalone: false, selector: "gio-fjs-null-type", usesInheritance: true, ngImport: i0, template: ``, isInline: true }); }
4853
+ }
4854
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: GioFjsNullTypeComponent, decorators: [{
4855
+ type: Component,
4856
+ args: [{
4857
+ selector: 'gio-fjs-null-type',
4858
+ template: ``,
4859
+ standalone: false,
4860
+ }]
4861
+ }] });
4862
+
4863
+ /*
4864
+ * Copyright (C) 2023 The Gravitee team (http://gravitee.io)
4865
+ *
4866
+ * Licensed under the Apache License, Version 2.0 (the "License");
4867
+ * you may not use this file except in compliance with the License.
4868
+ * You may obtain a copy of the License at
4869
+ *
4870
+ * http://www.apache.org/licenses/LICENSE-2.0
4871
+ *
4872
+ * Unless required by applicable law or agreed to in writing, software
4873
+ * distributed under the License is distributed on an "AS IS" BASIS,
4874
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
4875
+ * See the License for the specific language governing permissions and
4876
+ * limitations under the License.
4877
+ */
4878
+ class GioFjsObjectTypeComponent extends FieldType {
4879
+ constructor() {
4880
+ super(...arguments);
4881
+ this.classNoUiBorder = false;
4882
+ }
4883
+ ngOnInit() {
4884
+ this.classNoUiBorder = this.props.uiBorder === 'none';
4885
+ }
4886
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: GioFjsObjectTypeComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
4887
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.4", type: GioFjsObjectTypeComponent, isStandalone: false, selector: "gio-fjs-object-type", usesInheritance: true, ngImport: i0, template: `
4888
+ <div class="wrapper">
4889
+ <div class="wrapper__title" *ngIf="to.label">{{ to.label }}</div>
4890
+ <p *ngIf="to.description">{{ to.description }}</p>
4891
+ <div class="wrapper__error gio-ng-invalid" *ngIf="showError && formControl.errors">
4892
+ <formly-validation-message [field]="field"></formly-validation-message>
4893
+ </div>
4894
+ <div class="wrapper__fields" [class.noUiBorder]="classNoUiBorder">
4895
+ <ng-container *ngFor="let f of field.fieldGroup">
4896
+ <formly-field *ngIf="f.type" class="wrapper__fields__field" [field]="f"></formly-field>
4897
+ </ng-container>
4898
+ </div>
4899
+ </div>
4900
+ `, isInline: true, styles: ["@charset \"UTF-8\";.gio-top-bar-menu .gio-badge-accent{background-color:var(--gio-oem-palette--active, #ffc2ac);color:var(--gio-oem-palette--active-contrast, #1e1b1b)}.wrapper{display:flex;flex-direction:column}.wrapper__title{font-size:18px;font-weight:600;line-height:24px;font-family:Kanit,Helvetica Neue,sans-serif;letter-spacing:.4px;margin-bottom:16px}.wrapper:empty{display:none}.wrapper__error{font-size:12px;font-weight:400;line-height:16px;font-family:Manrope,sans-serif;letter-spacing:normal;color:#dd1d1f}.wrapper__fields{padding:8px;border:1px solid #d2cecd;border-radius:8px}.wrapper__fields.noUiBorder{padding:0;border:none}.wrapper__fields:empty{display:none}.wrapper__fields:has(>.wrapper__fields__field:only-child):has(>.wrapper__fields__field:empty){display:none}.wrapper__fields__field:empty{display:none}.wrapper__fields__field+.wrapper__fields__field:not(:empty){display:block;margin-top:8px}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2$2.FormlyField, selector: "formly-field", inputs: ["field"] }, { kind: "component", type: i2$2.ɵFormlyValidationMessage, selector: "formly-validation-message", inputs: ["field"] }] }); }
4901
+ }
4902
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: GioFjsObjectTypeComponent, decorators: [{
4903
+ type: Component,
4904
+ args: [{ selector: 'gio-fjs-object-type', template: `
4905
+ <div class="wrapper">
4906
+ <div class="wrapper__title" *ngIf="to.label">{{ to.label }}</div>
4907
+ <p *ngIf="to.description">{{ to.description }}</p>
4908
+ <div class="wrapper__error gio-ng-invalid" *ngIf="showError && formControl.errors">
4909
+ <formly-validation-message [field]="field"></formly-validation-message>
4910
+ </div>
4911
+ <div class="wrapper__fields" [class.noUiBorder]="classNoUiBorder">
4912
+ <ng-container *ngFor="let f of field.fieldGroup">
4913
+ <formly-field *ngIf="f.type" class="wrapper__fields__field" [field]="f"></formly-field>
4914
+ </ng-container>
4915
+ </div>
4916
+ </div>
4917
+ `, standalone: false, styles: ["@charset \"UTF-8\";.gio-top-bar-menu .gio-badge-accent{background-color:var(--gio-oem-palette--active, #ffc2ac);color:var(--gio-oem-palette--active-contrast, #1e1b1b)}.wrapper{display:flex;flex-direction:column}.wrapper__title{font-size:18px;font-weight:600;line-height:24px;font-family:Kanit,Helvetica Neue,sans-serif;letter-spacing:.4px;margin-bottom:16px}.wrapper:empty{display:none}.wrapper__error{font-size:12px;font-weight:400;line-height:16px;font-family:Manrope,sans-serif;letter-spacing:normal;color:#dd1d1f}.wrapper__fields{padding:8px;border:1px solid #d2cecd;border-radius:8px}.wrapper__fields.noUiBorder{padding:0;border:none}.wrapper__fields:empty{display:none}.wrapper__fields:has(>.wrapper__fields__field:only-child):has(>.wrapper__fields__field:empty){display:none}.wrapper__fields__field:empty{display:none}.wrapper__fields__field+.wrapper__fields__field:not(:empty){display:block;margin-top:8px}\n"] }]
4918
+ }] });
4919
+
4920
+ /*
4921
+ * Copyright (C) 2023 The Gravitee team (http://gravitee.io)
4922
+ *
4923
+ * Licensed under the Apache License, Version 2.0 (the "License");
4924
+ * you may not use this file except in compliance with the License.
4925
+ * You may obtain a copy of the License at
4926
+ *
4927
+ * http://www.apache.org/licenses/LICENSE-2.0
4928
+ *
4929
+ * Unless required by applicable law or agreed to in writing, software
4930
+ * distributed under the License is distributed on an "AS IS" BASIS,
4931
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
4932
+ * See the License for the specific language governing permissions and
4933
+ * limitations under the License.
4934
+ */
4935
+ class GioFjsArrayTypeComponent extends FieldArrayType {
4936
+ constructor() {
4937
+ super(...arguments);
4938
+ this.collapse = false;
4939
+ this.classNoUiBorder = false;
4940
+ }
4941
+ ngOnInit() {
4942
+ this.classNoUiBorder = this.props.uiBorder === 'none';
4943
+ }
4944
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: GioFjsArrayTypeComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
4945
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.4", type: GioFjsArrayTypeComponent, isStandalone: false, selector: "gio-fjs-array-type", usesInheritance: true, ngImport: i0, template: `
4946
+ <div class="wrapper" [class.error]="formControl.touched && formControl.invalid" [class.noUiBorder]="classNoUiBorder">
4947
+ <div class="wrapper__header">
4948
+ <div class="wrapper__header__text">
4949
+ <div class="wrapper__header__text__title" *ngIf="to.label">{{ to.label }}</div>
4950
+ <p *ngIf="to.description">{{ to.description }}</p>
4951
+ </div>
4952
+ <div class="wrapper__header__collapse">
4953
+ <button type="button" mat-icon-button aria-label="Collapse" (click)="collapse = !collapse">
4954
+ <mat-icon [class.collapse-open]="collapse" [class.collapse-close]="!collapse" svgIcon="gio:nav-arrow-down"></mat-icon>
4955
+ </button>
4956
+ </div>
4957
+ </div>
4958
+
4959
+ <div class="wrapper__error gio-ng-invalid" *ngIf="showError && formControl.errors">
4960
+ <formly-validation-message [field]="field"></formly-validation-message>
4961
+ </div>
4962
+
4963
+ <div [hidden]="collapse" class="wrapper__rows" [class.collapse-open]="collapse" [class.collapse-close]="!collapse">
4964
+ <div *ngFor="let field of field.fieldGroup; let i = index" class="wrapper__rows__row">
4965
+ <formly-field class="wrapper__rows__row__field" [field]="field"></formly-field>
4966
+ <div class="wrapper__rows__row__remove">
4967
+ <button type="button" mat-icon-button aria-label="Remove" [disabled]="this.formControl?.disabled ?? false" (click)="remove(i)">
4968
+ <mat-icon svgIcon="gio:cancel"></mat-icon>
4969
+ </button>
4970
+ </div>
4971
+ </div>
4972
+
4973
+ <div>
4974
+ <button type="button" mat-stroked-button aria-label="Add" [disabled]="this.formControl?.disabled ?? false" (click)="add()">
4975
+ <mat-icon svgIcon="gio:plus"></mat-icon> Add
4976
+ </button>
4977
+ </div>
4978
+ </div>
4979
+ </div>
4980
+ `, isInline: true, styles: ["@charset \"UTF-8\";.gio-top-bar-menu .gio-badge-accent{background-color:var(--gio-oem-palette--active, #ffc2ac);color:var(--gio-oem-palette--active-contrast, #1e1b1b)}.wrapper{padding:8px;border:1px solid #d2cecd;border-radius:8px}.wrapper.noUiBorder{padding:0;border:none}.wrapper.error{border-color:#dd1d1f}.wrapper:empty{display:none}.wrapper__header{display:flex}.wrapper__header__text{flex:1 1 auto}.wrapper__header__text__title{font-size:14px;font-weight:500;line-height:22px;font-family:Manrope,sans-serif;letter-spacing:.4px;margin-bottom:8px}.wrapper__header__collapse{flex:0 0 auto}.wrapper__header__collapse .collapse-open{transform:rotate(180deg);transition:transform 225ms cubic-bezier(.4,0,.2,1)}.wrapper__header__collapse .collapse-close{transform:rotate(0);transition:transform 225ms cubic-bezier(.4,0,.2,1)}.wrapper__error{font-size:12px;font-weight:400;line-height:16px;font-family:Manrope,sans-serif;letter-spacing:normal;color:#dd1d1f}.wrapper__rows__row{display:flex;align-items:center;justify-content:space-between;margin-bottom:4px}.wrapper__rows__row+.wrapper__rows__row{padding-top:3px;border-top:1px solid #d2cecd;margin-top:4px}.wrapper__rows__row__field{flex:1 1 auto}.wrapper__rows__row__remove{flex:0 0 auto}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2$2.FormlyField, selector: "formly-field", inputs: ["field"] }, { kind: "component", type: i2$2.ɵFormlyValidationMessage, selector: "formly-validation-message", inputs: ["field"] }, { kind: "component", type: i1$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i3.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i3.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }] }); }
4981
+ }
4982
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: GioFjsArrayTypeComponent, decorators: [{
4983
+ type: Component,
4984
+ args: [{ selector: 'gio-fjs-array-type', template: `
4985
+ <div class="wrapper" [class.error]="formControl.touched && formControl.invalid" [class.noUiBorder]="classNoUiBorder">
4986
+ <div class="wrapper__header">
4987
+ <div class="wrapper__header__text">
4988
+ <div class="wrapper__header__text__title" *ngIf="to.label">{{ to.label }}</div>
4989
+ <p *ngIf="to.description">{{ to.description }}</p>
4990
+ </div>
4991
+ <div class="wrapper__header__collapse">
4992
+ <button type="button" mat-icon-button aria-label="Collapse" (click)="collapse = !collapse">
4993
+ <mat-icon [class.collapse-open]="collapse" [class.collapse-close]="!collapse" svgIcon="gio:nav-arrow-down"></mat-icon>
4994
+ </button>
4995
+ </div>
4996
+ </div>
4997
+
4998
+ <div class="wrapper__error gio-ng-invalid" *ngIf="showError && formControl.errors">
4999
+ <formly-validation-message [field]="field"></formly-validation-message>
5000
+ </div>
5001
+
5002
+ <div [hidden]="collapse" class="wrapper__rows" [class.collapse-open]="collapse" [class.collapse-close]="!collapse">
5003
+ <div *ngFor="let field of field.fieldGroup; let i = index" class="wrapper__rows__row">
5004
+ <formly-field class="wrapper__rows__row__field" [field]="field"></formly-field>
5005
+ <div class="wrapper__rows__row__remove">
5006
+ <button type="button" mat-icon-button aria-label="Remove" [disabled]="this.formControl?.disabled ?? false" (click)="remove(i)">
5007
+ <mat-icon svgIcon="gio:cancel"></mat-icon>
5008
+ </button>
5009
+ </div>
5010
+ </div>
5011
+
5012
+ <div>
5013
+ <button type="button" mat-stroked-button aria-label="Add" [disabled]="this.formControl?.disabled ?? false" (click)="add()">
5014
+ <mat-icon svgIcon="gio:plus"></mat-icon> Add
5015
+ </button>
5016
+ </div>
5017
+ </div>
5018
+ </div>
5019
+ `, standalone: false, styles: ["@charset \"UTF-8\";.gio-top-bar-menu .gio-badge-accent{background-color:var(--gio-oem-palette--active, #ffc2ac);color:var(--gio-oem-palette--active-contrast, #1e1b1b)}.wrapper{padding:8px;border:1px solid #d2cecd;border-radius:8px}.wrapper.noUiBorder{padding:0;border:none}.wrapper.error{border-color:#dd1d1f}.wrapper:empty{display:none}.wrapper__header{display:flex}.wrapper__header__text{flex:1 1 auto}.wrapper__header__text__title{font-size:14px;font-weight:500;line-height:22px;font-family:Manrope,sans-serif;letter-spacing:.4px;margin-bottom:8px}.wrapper__header__collapse{flex:0 0 auto}.wrapper__header__collapse .collapse-open{transform:rotate(180deg);transition:transform 225ms cubic-bezier(.4,0,.2,1)}.wrapper__header__collapse .collapse-close{transform:rotate(0);transition:transform 225ms cubic-bezier(.4,0,.2,1)}.wrapper__error{font-size:12px;font-weight:400;line-height:16px;font-family:Manrope,sans-serif;letter-spacing:normal;color:#dd1d1f}.wrapper__rows__row{display:flex;align-items:center;justify-content:space-between;margin-bottom:4px}.wrapper__rows__row+.wrapper__rows__row{padding-top:3px;border-top:1px solid #d2cecd;margin-top:4px}.wrapper__rows__row__field{flex:1 1 auto}.wrapper__rows__row__remove{flex:0 0 auto}\n"] }]
5020
+ }] });
5021
+
5022
+ function minItemsValidationMessage(error, field) {
5023
+ return `Should NOT have fewer than ${field.props?.minItems} items`;
5024
+ }
5025
+ function maxItemsValidationMessage(error, field) {
5026
+ return `Should NOT have more than ${field.props?.maxItems} items`;
5027
+ }
5028
+ function minLengthValidationMessage(error, field) {
5029
+ return `Should NOT be shorter than ${field.props?.minLength} characters`;
5030
+ }
5031
+ function maxLengthValidationMessage(error, field) {
5032
+ return `Should NOT be longer than ${field.props?.maxLength} characters`;
5033
+ }
5034
+ function minValidationMessage(error, field) {
5035
+ return `Should be >= ${field.props?.min}`;
5036
+ }
5037
+ function maxValidationMessage(error, field) {
5038
+ return `Should be <= ${field.props?.max}`;
5039
+ }
5040
+ function multipleOfValidationMessage(error, field) {
5041
+ return `Should be multiple of ${field.props?.step}`;
5042
+ }
5043
+ function exclusiveMinimumValidationMessage(error, field) {
5044
+ return `Should be > ${field.props?.exclusiveMinimum}`;
5045
+ }
5046
+ function exclusiveMaximumValidationMessage(error, field) {
5047
+ return `Should be < ${field.props?.exclusiveMaximum}`;
5048
+ }
5049
+ function constValidationMessage(error, field) {
5050
+ return `Should be equal to constant "${field.props?.const}"`;
5051
+ }
5052
+ function typeValidationMessage({ schemaType }) {
5053
+ return `Should be "${schemaType[0]}".`;
5054
+ }
5055
+ function patternValidationMessage(error, field) {
5056
+ const key = field?.key?.toString() ?? 'Field';
5057
+ return `${key.charAt(0).toUpperCase() + key.slice(1)} value does not respect the pattern: ${field?.props?.pattern}`;
5058
+ }
5059
+
5060
+ /*
5061
+ * Copyright (C) 2023 The Gravitee team (http://gravitee.io)
5062
+ *
5063
+ * Licensed under the Apache License, Version 2.0 (the "License");
5064
+ * you may not use this file except in compliance with the License.
5065
+ * You may obtain a copy of the License at
5066
+ *
5067
+ * http://www.apache.org/licenses/LICENSE-2.0
5068
+ *
5069
+ * Unless required by applicable law or agreed to in writing, software
5070
+ * distributed under the License is distributed on an "AS IS" BASIS,
5071
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
5072
+ * See the License for the specific language governing permissions and
5073
+ * limitations under the License.
5074
+ */
5075
+ class GioBannerWrapperComponent extends FieldWrapper {
5076
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: GioBannerWrapperComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
5077
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.4", type: GioBannerWrapperComponent, isStandalone: false, selector: "gio-banner-wrapper", usesInheritance: true, ngImport: i0, template: "<!--\n\n Copyright (C) 2023 The Gravitee team (http://gravitee.io)\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n-->\n<div class=\"wrapper\">\n <div class=\"banner\">\n <div class=\"banner__icon\"><mat-icon svgIcon=\"gio:info\"></mat-icon></div>\n <div>\n <div class=\"banner__title\" [innerHTML]=\"props.bannerTitle\"></div>\n <div class=\"banner__text\" [innerHTML]=\"props.bannerText\"></div>\n </div>\n </div>\n <ng-container #fieldComponent></ng-container>\n</div>\n", styles: ["@charset \"UTF-8\";.gio-top-bar-menu .gio-badge-accent{background-color:var(--gio-oem-palette--active, #ffc2ac);color:var(--gio-oem-palette--active-contrast, #1e1b1b)}::ng-deep gio-banner-wrapper ul{padding-inline-start:16px}.wrapper{padding:8px 0}.banner{display:flex;flex-direction:row;align-items:flex-start;padding:8px;border-radius:8px;margin-bottom:8px;background:#f7f7f8;gap:8px}.banner__icon{padding-top:2px}.banner__icon mat-icon{width:16px;height:16px;color:#da3b00}.banner__title{font-size:14px;font-weight:700;line-height:20px;font-family:Manrope,sans-serif;letter-spacing:.4px}.banner__text{font-size:14px;font-weight:500;line-height:22px;font-family:Manrope,sans-serif;letter-spacing:.4px;color:#322f2f}\n"], dependencies: [{ kind: "component", type: i1$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }] }); }
5078
+ }
5079
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: GioBannerWrapperComponent, decorators: [{
5080
+ type: Component,
5081
+ args: [{ selector: 'gio-banner-wrapper', standalone: false, template: "<!--\n\n Copyright (C) 2023 The Gravitee team (http://gravitee.io)\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n-->\n<div class=\"wrapper\">\n <div class=\"banner\">\n <div class=\"banner__icon\"><mat-icon svgIcon=\"gio:info\"></mat-icon></div>\n <div>\n <div class=\"banner__title\" [innerHTML]=\"props.bannerTitle\"></div>\n <div class=\"banner__text\" [innerHTML]=\"props.bannerText\"></div>\n </div>\n </div>\n <ng-container #fieldComponent></ng-container>\n</div>\n", styles: ["@charset \"UTF-8\";.gio-top-bar-menu .gio-badge-accent{background-color:var(--gio-oem-palette--active, #ffc2ac);color:var(--gio-oem-palette--active-contrast, #1e1b1b)}::ng-deep gio-banner-wrapper ul{padding-inline-start:16px}.wrapper{padding:8px 0}.banner{display:flex;flex-direction:row;align-items:flex-start;padding:8px;border-radius:8px;margin-bottom:8px;background:#f7f7f8;gap:8px}.banner__icon{padding-top:2px}.banner__icon mat-icon{width:16px;height:16px;color:#da3b00}.banner__title{font-size:14px;font-weight:700;line-height:20px;font-family:Manrope,sans-serif;letter-spacing:.4px}.banner__text{font-size:14px;font-weight:500;line-height:22px;font-family:Manrope,sans-serif;letter-spacing:.4px;color:#322f2f}\n"] }]
5082
+ }] });
5083
+
5084
+ function bannerExtension(field) {
5085
+ if (!field.props || (field.wrappers && field.wrappers.indexOf('gio-with-banner') !== -1)) {
5086
+ return;
5087
+ }
5088
+ if (field.props.bannerTitle || field.props.bannerText) {
5089
+ // WARNING: 'gio-with-banner' must be placed before field wrappers in order to put banner before mat-form-field if exists
5090
+ field.wrappers = ['gio-with-banner', ...(field.wrappers || [])];
5091
+ }
5092
+ }
5093
+
5094
+ /*
5095
+ * Copyright (C) 2023 The Gravitee team (http://gravitee.io)
5096
+ *
5097
+ * Licensed under the Apache License, Version 2.0 (the "License");
5098
+ * you may not use this file except in compliance with the License.
5099
+ * You may obtain a copy of the License at
5100
+ *
5101
+ * http://www.apache.org/licenses/LICENSE-2.0
5102
+ *
5103
+ * Unless required by applicable law or agreed to in writing, software
5104
+ * distributed under the License is distributed on an "AS IS" BASIS,
5105
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
5106
+ * See the License for the specific language governing permissions and
5107
+ * limitations under the License.
5108
+ */
5109
+ class GioFjsMultiSchemaTypeComponent extends FieldType {
5110
+ constructor(cdr) {
5111
+ super();
5112
+ this.cdr = cdr;
5113
+ this.unsubscribe$ = new Subject();
5114
+ }
5115
+ ngOnDestroy() {
5116
+ this.unsubscribe$.next();
5117
+ this.unsubscribe$.unsubscribe();
5118
+ }
4629
5119
  ngOnInit() {
4630
5120
  set(this.field, 'fieldGroup[0].props.appearance', 'fill');
4631
5121
  set(this.field, 'fieldGroup[0].props.label', 'Select option');
@@ -4925,15 +5415,84 @@ class GioFjsCronTypeComponent extends FieldType$1 {
4925
5415
  </gio-form-cron>
4926
5416
  `, isInline: true, styles: [""], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: GioFormCronComponent, selector: "gio-form-cron" }, { kind: "component", type: GioFormCronLabelComponent, selector: "gio-form-cron-label" }, { kind: "component", type: GioFormCronHintComponent, selector: "gio-form-cron-hint" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
4927
5417
  }
4928
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: GioFjsCronTypeComponent, decorators: [{
4929
- type: Component,
4930
- args: [{ selector: 'gio-fjs-code-editor-type', template: `
4931
- <gio-form-cron [formControl]="formControl">
4932
- <gio-form-cron-label *ngIf="props.label">{{ props.label }}</gio-form-cron-label>
4933
- <gio-form-cron-hint *ngIf="props.description">{{ props.description }}</gio-form-cron-hint>
4934
- </gio-form-cron>
4935
- `, changeDetection: ChangeDetectionStrategy.OnPush, standalone: false }]
4936
- }] });
5418
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: GioFjsCronTypeComponent, decorators: [{
5419
+ type: Component,
5420
+ args: [{ selector: 'gio-fjs-code-editor-type', template: `
5421
+ <gio-form-cron [formControl]="formControl">
5422
+ <gio-form-cron-label *ngIf="props.label">{{ props.label }}</gio-form-cron-label>
5423
+ <gio-form-cron-hint *ngIf="props.description">{{ props.description }}</gio-form-cron-hint>
5424
+ </gio-form-cron>
5425
+ `, changeDetection: ChangeDetectionStrategy.OnPush, standalone: false }]
5426
+ }] });
5427
+
5428
+ /*
5429
+ * Copyright (C) 2023 The Gravitee team (http://gravitee.io)
5430
+ *
5431
+ * Licensed under the Apache License, Version 2.0 (the "License");
5432
+ * you may not use this file except in compliance with the License.
5433
+ * You may obtain a copy of the License at
5434
+ *
5435
+ * http://www.apache.org/licenses/LICENSE-2.0
5436
+ *
5437
+ * Unless required by applicable law or agreed to in writing, software
5438
+ * distributed under the License is distributed on an "AS IS" BASIS,
5439
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
5440
+ * See the License for the specific language governing permissions and
5441
+ * limitations under the License.
5442
+ */
5443
+ class GioElHelperWrapperComponent extends FieldWrapper {
5444
+ constructor() {
5445
+ super(...arguments);
5446
+ this.hide = true;
5447
+ }
5448
+ ngAfterViewInit() {
5449
+ if (this.matSuffix) {
5450
+ this.props.suffix = this.matSuffix;
5451
+ }
5452
+ }
5453
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: GioElHelperWrapperComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
5454
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.4", type: GioElHelperWrapperComponent, isStandalone: false, selector: "gio-el-wrapper-wrapper", viewQueries: [{ propertyName: "matSuffix", first: true, predicate: ["matSuffix"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: `
5455
+ <ng-container #fieldComponent></ng-container>
5456
+
5457
+ <ng-template #matSuffix>
5458
+ <button gioPopoverTrigger [gioPopoverTriggerFor]="aiPopover" type="button">
5459
+ <mat-icon svgIcon="gio:el" />
5460
+ </button>
5461
+
5462
+ <gio-popover #aiPopover [closeOnBackdropClick]="true">
5463
+ <gio-el-prompt />
5464
+ </gio-popover>
5465
+ </ng-template>
5466
+ `, isInline: true, dependencies: [{ kind: "component", type: i1$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: GioPopoverComponent, selector: "gio-popover", inputs: ["trigger", "closeOnBackdropClick"] }, { kind: "directive", type: PopoverTriggerDirective, selector: "[gioPopoverTrigger]", inputs: ["gioPopoverTriggerFor", "gioPopoverTriggerBasedOnElement"] }, { kind: "component", type: GioElPromptComponent, selector: "gio-el-prompt", inputs: ["responseState"] }] }); }
5467
+ }
5468
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: GioElHelperWrapperComponent, decorators: [{
5469
+ type: Component,
5470
+ args: [{
5471
+ selector: 'gio-el-wrapper-wrapper',
5472
+ template: `
5473
+ <ng-container #fieldComponent></ng-container>
5474
+
5475
+ <ng-template #matSuffix>
5476
+ <button gioPopoverTrigger [gioPopoverTriggerFor]="aiPopover" type="button">
5477
+ <mat-icon svgIcon="gio:el" />
5478
+ </button>
5479
+
5480
+ <gio-popover #aiPopover [closeOnBackdropClick]="true">
5481
+ <gio-el-prompt />
5482
+ </gio-popover>
5483
+ </ng-template>
5484
+ `,
5485
+ standalone: false,
5486
+ }]
5487
+ }], propDecorators: { matSuffix: [{
5488
+ type: ViewChild,
5489
+ args: ['matSuffix', { static: true }]
5490
+ }] } });
5491
+ function elHelpExtension(field) {
5492
+ if (field.props?.attributes?.el) {
5493
+ field.wrappers = [...(field.wrappers || []), 'gio-el-help'];
5494
+ }
5495
+ }
4937
5496
 
4938
5497
  /*
4939
5498
  * Copyright (C) 2015 The Gravitee team (http://gravitee.io)
@@ -4962,13 +5521,17 @@ class GioFormJsonSchemaModule {
4962
5521
  GioFjsCodeEditorTypeComponent,
4963
5522
  GioFjsCronTypeComponent,
4964
5523
  GioBannerWrapperComponent,
4965
- GioPasswordEyeWrapperComponent], imports: [CommonModule,
5524
+ GioPasswordEyeWrapperComponent,
5525
+ GioElHelperWrapperComponent], imports: [CommonModule,
4966
5526
  A11yModule,
4967
5527
  ReactiveFormsModule, i2$2.FormlyModule, FormlyMaterialModule,
4968
5528
  MatInputModule,
4969
5529
  GioIconsModule,
4970
5530
  GioFormSlideToggleModule,
4971
5531
  GioFormHeadersModule, GioMonacoEditorModule, GioFormCronModule,
5532
+ GioPopoverComponent,
5533
+ PopoverTriggerDirective,
5534
+ GioElPromptComponent,
4972
5535
  MatSlideToggleModule,
4973
5536
  MatButtonModule], exports: [GioFormJsonSchemaComponent, FormlyModule] }); }
4974
5537
  static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: GioFormJsonSchemaModule, providers: [GioFormlyJsonSchemaService], imports: [CommonModule,
@@ -4994,6 +5557,7 @@ class GioFormJsonSchemaModule {
4994
5557
  wrappers: [
4995
5558
  { name: 'gio-with-banner', component: GioBannerWrapperComponent },
4996
5559
  { name: 'gio-password-eye', component: GioPasswordEyeWrapperComponent },
5560
+ { name: 'gio-el-help', component: GioElHelperWrapperComponent },
4997
5561
  ],
4998
5562
  types: [
4999
5563
  { name: 'null', component: GioFjsNullTypeComponent, wrappers: ['form-field'] },
@@ -5021,6 +5585,7 @@ class GioFormJsonSchemaModule {
5021
5585
  extensions: [
5022
5586
  { name: 'banner', extension: { onPopulate: bannerExtension } },
5023
5587
  { name: 'password-eye', extension: { onPopulate: passwordEyeExtension } },
5588
+ { name: 'el-help', extension: { onPopulate: elHelpExtension } },
5024
5589
  ],
5025
5590
  extras: {
5026
5591
  checkExpressionOn: 'changeDetectionCheck',
@@ -5035,6 +5600,8 @@ class GioFormJsonSchemaModule {
5035
5600
  baseUrl: '.',
5036
5601
  }),
5037
5602
  GioFormCronModule,
5603
+ GioPopoverComponent,
5604
+ GioElPromptComponent,
5038
5605
  MatSlideToggleModule,
5039
5606
  MatButtonModule, FormlyModule] }); }
5040
5607
  }
@@ -5053,6 +5620,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.4", ngImpor
5053
5620
  GioFjsCronTypeComponent,
5054
5621
  GioBannerWrapperComponent,
5055
5622
  GioPasswordEyeWrapperComponent,
5623
+ GioElHelperWrapperComponent,
5056
5624
  ],
5057
5625
  imports: [
5058
5626
  CommonModule,
@@ -5078,6 +5646,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.4", ngImpor
5078
5646
  wrappers: [
5079
5647
  { name: 'gio-with-banner', component: GioBannerWrapperComponent },
5080
5648
  { name: 'gio-password-eye', component: GioPasswordEyeWrapperComponent },
5649
+ { name: 'gio-el-help', component: GioElHelperWrapperComponent },
5081
5650
  ],
5082
5651
  types: [
5083
5652
  { name: 'null', component: GioFjsNullTypeComponent, wrappers: ['form-field'] },
@@ -5105,6 +5674,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.4", ngImpor
5105
5674
  extensions: [
5106
5675
  { name: 'banner', extension: { onPopulate: bannerExtension } },
5107
5676
  { name: 'password-eye', extension: { onPopulate: passwordEyeExtension } },
5677
+ { name: 'el-help', extension: { onPopulate: elHelpExtension } },
5108
5678
  ],
5109
5679
  extras: {
5110
5680
  checkExpressionOn: 'changeDetectionCheck',
@@ -5119,6 +5689,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.4", ngImpor
5119
5689
  baseUrl: '.',
5120
5690
  }),
5121
5691
  GioFormCronModule,
5692
+ GioPopoverComponent,
5693
+ PopoverTriggerDirective,
5694
+ GioElPromptComponent,
5122
5695
  MatSlideToggleModule,
5123
5696
  MatButtonModule,
5124
5697
  ],
@@ -5464,220 +6037,6 @@ const GIO_DIALOG_WIDTH = {
5464
6037
  LARGE: '1240px',
5465
6038
  };
5466
6039
 
5467
- /*
5468
- * Copyright (C) 2015 The Gravitee team (http://gravitee.io)
5469
- *
5470
- * Licensed under the Apache License, Version 2.0 (the "License");
5471
- * you may not use this file except in compliance with the License.
5472
- * You may obtain a copy of the License at
5473
- *
5474
- * http://www.apache.org/licenses/LICENSE-2.0
5475
- *
5476
- * Unless required by applicable law or agreed to in writing, software
5477
- * distributed under the License is distributed on an "AS IS" BASIS,
5478
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
5479
- * See the License for the specific language governing permissions and
5480
- * limitations under the License.
5481
- */
5482
- class GioClipboardComponent {
5483
- constructor(clipboard) {
5484
- this.clipboard = clipboard;
5485
- this.label = 'Copy to clipboard';
5486
- this.tooltipHideDelay = 0;
5487
- this.clicked = false;
5488
- this.contentToCopy = '';
5489
- this.alwaysVisible = false;
5490
- this.tabIndex = undefined;
5491
- }
5492
- onCopied(success, tooltip) {
5493
- tooltip.message = success ? 'Copied!' : 'Failed to copy!';
5494
- tooltip.hideDelay = 2000;
5495
- tooltip.show();
5496
- this.clicked = true;
5497
- setTimeout(() => {
5498
- tooltip.hide();
5499
- }, 2000);
5500
- setTimeout(() => {
5501
- this.clicked = false;
5502
- tooltip.message = this.label;
5503
- tooltip.hideDelay = this.tooltipHideDelay;
5504
- }, 2500);
5505
- }
5506
- onKeyupSpace() {
5507
- this.clipboard.copy(this.contentToCopy);
5508
- if (this.tooltip) {
5509
- this.onCopied(true, this.tooltip);
5510
- }
5511
- }
5512
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: GioClipboardComponent, deps: [{ token: i1$6.Clipboard }], target: i0.ɵɵFactoryTarget.Directive }); }
5513
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.4", type: GioClipboardComponent, isStandalone: true, inputs: { contentToCopy: "contentToCopy", alwaysVisible: "alwaysVisible", tabIndex: "tabIndex" }, viewQueries: [{ propertyName: "tooltip", first: true, predicate: ["tooltip"], descendants: true }], ngImport: i0 }); }
5514
- }
5515
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: GioClipboardComponent, decorators: [{
5516
- type: Directive
5517
- }], ctorParameters: () => [{ type: i1$6.Clipboard }], propDecorators: { tooltip: [{
5518
- type: ViewChild,
5519
- args: ['tooltip']
5520
- }], contentToCopy: [{
5521
- type: Input
5522
- }], alwaysVisible: [{
5523
- type: Input
5524
- }], tabIndex: [{
5525
- type: Input
5526
- }] } });
5527
-
5528
- /*
5529
- * Copyright (C) 2015 The Gravitee team (http://gravitee.io)
5530
- *
5531
- * Licensed under the Apache License, Version 2.0 (the "License");
5532
- * you may not use this file except in compliance with the License.
5533
- * You may obtain a copy of the License at
5534
- *
5535
- * http://www.apache.org/licenses/LICENSE-2.0
5536
- *
5537
- * Unless required by applicable law or agreed to in writing, software
5538
- * distributed under the License is distributed on an "AS IS" BASIS,
5539
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
5540
- * See the License for the specific language governing permissions and
5541
- * limitations under the License.
5542
- */
5543
- class GioClipboardCopyWrapperComponent extends GioClipboardComponent {
5544
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: GioClipboardCopyWrapperComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
5545
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.4", type: GioClipboardCopyWrapperComponent, isStandalone: false, selector: "[gioClipboardCopyWrapper]", usesInheritance: true, ngImport: i0, template: `
5546
- <ng-content></ng-content>
5547
- <button
5548
- #tooltip="matTooltip"
5549
- type="button"
5550
- class="right"
5551
- [attr.aria-label]="label"
5552
- [class.clicked]="clicked"
5553
- [class.always-visible]="alwaysVisible"
5554
- [cdkCopyToClipboard]="contentToCopy"
5555
- (cdkCopyToClipboardCopied)="onCopied($event, tooltip)"
5556
- matRipple
5557
- [matRippleCentered]="true"
5558
- [matRippleUnbounded]="true"
5559
- [matTooltip]="label"
5560
- [matTooltipPosition]="'after'"
5561
- (keyup.Space)="onKeyupSpace()"
5562
- >
5563
- <mat-icon [inline]="true">{{ clicked ? 'check' : 'content_copy' }}</mat-icon>
5564
- </button>
5565
- `, isInline: true, styles: ["@charset \"UTF-8\";.gio-top-bar-menu .gio-badge-accent{background-color:var(--gio-oem-palette--active, #ffc2ac);color:var(--gio-oem-palette--active-contrast, #1e1b1b)}.right{padding:0;border:none;margin-left:4px;background:none;color:#5c5959;cursor:pointer;outline:inherit}.right:not(.clicked,.always-visible){opacity:0}.right.clicked{color:#da3b00;opacity:1}:host(:hover,:focus) .right{opacity:1}:host(:hover,:focus) .right:hover,:host(:hover,:focus) .right:focus{color:#da3b00}\n"], dependencies: [{ kind: "component", type: i1$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i2$3.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "directive", type: i3$1.MatRipple, selector: "[mat-ripple], [matRipple]", inputs: ["matRippleColor", "matRippleUnbounded", "matRippleCentered", "matRippleRadius", "matRippleAnimation", "matRippleDisabled", "matRippleTrigger"], exportAs: ["matRipple"] }, { kind: "directive", type: i1$6.CdkCopyToClipboard, selector: "[cdkCopyToClipboard]", inputs: ["cdkCopyToClipboard", "cdkCopyToClipboardAttempts"], outputs: ["cdkCopyToClipboardCopied"] }] }); }
5566
- }
5567
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: GioClipboardCopyWrapperComponent, decorators: [{
5568
- type: Component,
5569
- args: [{ selector: '[gioClipboardCopyWrapper]', template: `
5570
- <ng-content></ng-content>
5571
- <button
5572
- #tooltip="matTooltip"
5573
- type="button"
5574
- class="right"
5575
- [attr.aria-label]="label"
5576
- [class.clicked]="clicked"
5577
- [class.always-visible]="alwaysVisible"
5578
- [cdkCopyToClipboard]="contentToCopy"
5579
- (cdkCopyToClipboardCopied)="onCopied($event, tooltip)"
5580
- matRipple
5581
- [matRippleCentered]="true"
5582
- [matRippleUnbounded]="true"
5583
- [matTooltip]="label"
5584
- [matTooltipPosition]="'after'"
5585
- (keyup.Space)="onKeyupSpace()"
5586
- >
5587
- <mat-icon [inline]="true">{{ clicked ? 'check' : 'content_copy' }}</mat-icon>
5588
- </button>
5589
- `, standalone: false, styles: ["@charset \"UTF-8\";.gio-top-bar-menu .gio-badge-accent{background-color:var(--gio-oem-palette--active, #ffc2ac);color:var(--gio-oem-palette--active-contrast, #1e1b1b)}.right{padding:0;border:none;margin-left:4px;background:none;color:#5c5959;cursor:pointer;outline:inherit}.right:not(.clicked,.always-visible){opacity:0}.right.clicked{color:#da3b00;opacity:1}:host(:hover,:focus) .right{opacity:1}:host(:hover,:focus) .right:hover,:host(:hover,:focus) .right:focus{color:#da3b00}\n"] }]
5590
- }] });
5591
-
5592
- /*
5593
- * Copyright (C) 2015 The Gravitee team (http://gravitee.io)
5594
- *
5595
- * Licensed under the Apache License, Version 2.0 (the "License");
5596
- * you may not use this file except in compliance with the License.
5597
- * You may obtain a copy of the License at
5598
- *
5599
- * http://www.apache.org/licenses/LICENSE-2.0
5600
- *
5601
- * Unless required by applicable law or agreed to in writing, software
5602
- * distributed under the License is distributed on an "AS IS" BASIS,
5603
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
5604
- * See the License for the specific language governing permissions and
5605
- * limitations under the License.
5606
- */
5607
- class GioClipboardCopyIconComponent extends GioClipboardComponent {
5608
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: GioClipboardCopyIconComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
5609
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.4", type: GioClipboardCopyIconComponent, isStandalone: false, selector: "gio-clipboard-copy-icon", usesInheritance: true, ngImport: i0, template: `
5610
- <button
5611
- #tooltip="matTooltip"
5612
- type="button"
5613
- class="btn"
5614
- [attr.aria-label]="label"
5615
- [class.clicked]="clicked"
5616
- [cdkCopyToClipboard]="contentToCopy"
5617
- (cdkCopyToClipboardCopied)="onCopied($event, tooltip)"
5618
- matRipple
5619
- [matRippleCentered]="true"
5620
- [matRippleUnbounded]="true"
5621
- [matTooltip]="label"
5622
- [matTooltipPosition]="'after'"
5623
- (keyup.Space)="onKeyupSpace()"
5624
- >
5625
- <mat-icon>{{ clicked ? 'check' : 'content_copy' }}</mat-icon>
5626
- </button>
5627
- `, isInline: true, styles: ["@charset \"UTF-8\";.gio-top-bar-menu .gio-badge-accent{background-color:var(--gio-oem-palette--active, #ffc2ac);color:var(--gio-oem-palette--active-contrast, #1e1b1b)}:host-context(.mat-mdc-form-field-icon-suffix){padding:12px}.btn{padding:0;border:none;margin-left:4px;background:none;color:#5c5959;cursor:pointer;outline:inherit}.btn.clicked,.btn:hover,.btn:focus{color:#da3b00}\n"], dependencies: [{ kind: "component", type: i1$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i2$3.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "directive", type: i3$1.MatRipple, selector: "[mat-ripple], [matRipple]", inputs: ["matRippleColor", "matRippleUnbounded", "matRippleCentered", "matRippleRadius", "matRippleAnimation", "matRippleDisabled", "matRippleTrigger"], exportAs: ["matRipple"] }, { kind: "directive", type: i1$6.CdkCopyToClipboard, selector: "[cdkCopyToClipboard]", inputs: ["cdkCopyToClipboard", "cdkCopyToClipboardAttempts"], outputs: ["cdkCopyToClipboardCopied"] }] }); }
5628
- }
5629
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: GioClipboardCopyIconComponent, decorators: [{
5630
- type: Component,
5631
- args: [{ selector: 'gio-clipboard-copy-icon', template: `
5632
- <button
5633
- #tooltip="matTooltip"
5634
- type="button"
5635
- class="btn"
5636
- [attr.aria-label]="label"
5637
- [class.clicked]="clicked"
5638
- [cdkCopyToClipboard]="contentToCopy"
5639
- (cdkCopyToClipboardCopied)="onCopied($event, tooltip)"
5640
- matRipple
5641
- [matRippleCentered]="true"
5642
- [matRippleUnbounded]="true"
5643
- [matTooltip]="label"
5644
- [matTooltipPosition]="'after'"
5645
- (keyup.Space)="onKeyupSpace()"
5646
- >
5647
- <mat-icon>{{ clicked ? 'check' : 'content_copy' }}</mat-icon>
5648
- </button>
5649
- `, standalone: false, styles: ["@charset \"UTF-8\";.gio-top-bar-menu .gio-badge-accent{background-color:var(--gio-oem-palette--active, #ffc2ac);color:var(--gio-oem-palette--active-contrast, #1e1b1b)}:host-context(.mat-mdc-form-field-icon-suffix){padding:12px}.btn{padding:0;border:none;margin-left:4px;background:none;color:#5c5959;cursor:pointer;outline:inherit}.btn.clicked,.btn:hover,.btn:focus{color:#da3b00}\n"] }]
5650
- }] });
5651
-
5652
- /*
5653
- * Copyright (C) 2015 The Gravitee team (http://gravitee.io)
5654
- *
5655
- * Licensed under the Apache License, Version 2.0 (the "License");
5656
- * you may not use this file except in compliance with the License.
5657
- * You may obtain a copy of the License at
5658
- *
5659
- * http://www.apache.org/licenses/LICENSE-2.0
5660
- *
5661
- * Unless required by applicable law or agreed to in writing, software
5662
- * distributed under the License is distributed on an "AS IS" BASIS,
5663
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
5664
- * See the License for the specific language governing permissions and
5665
- * limitations under the License.
5666
- */
5667
- class GioClipboardModule {
5668
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: GioClipboardModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
5669
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.4", ngImport: i0, type: GioClipboardModule, declarations: [GioClipboardCopyWrapperComponent, GioClipboardCopyIconComponent], imports: [CommonModule, MatIconModule, MatTooltipModule, MatRippleModule, ClipboardModule, MatButtonModule], exports: [GioClipboardCopyWrapperComponent, GioClipboardCopyIconComponent] }); }
5670
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: GioClipboardModule, imports: [CommonModule, MatIconModule, MatTooltipModule, MatRippleModule, ClipboardModule, MatButtonModule] }); }
5671
- }
5672
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: GioClipboardModule, decorators: [{
5673
- type: NgModule,
5674
- args: [{
5675
- imports: [CommonModule, MatIconModule, MatTooltipModule, MatRippleModule, ClipboardModule, MatButtonModule],
5676
- declarations: [GioClipboardCopyWrapperComponent, GioClipboardCopyIconComponent],
5677
- exports: [GioClipboardCopyWrapperComponent, GioClipboardCopyIconComponent],
5678
- }]
5679
- }] });
5680
-
5681
6040
  /*
5682
6041
  * Copyright (C) 2015 The Gravitee team (http://gravitee.io)
5683
6042
  *
@@ -7944,6 +8303,38 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.4", ngImpor
7944
8303
  * limitations under the License.
7945
8304
  */
7946
8305
 
8306
+ /*
8307
+ * Copyright (C) 2024 The Gravitee team (http://gravitee.io)
8308
+ *
8309
+ * Licensed under the Apache License, Version 2.0 (the "License");
8310
+ * you may not use this file except in compliance with the License.
8311
+ * You may obtain a copy of the License at
8312
+ *
8313
+ * http://www.apache.org/licenses/LICENSE-2.0
8314
+ *
8315
+ * Unless required by applicable law or agreed to in writing, software
8316
+ * distributed under the License is distributed on an "AS IS" BASIS,
8317
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
8318
+ * See the License for the specific language governing permissions and
8319
+ * limitations under the License.
8320
+ */
8321
+
8322
+ /*
8323
+ * Copyright (C) 2024 The Gravitee team (http://gravitee.io)
8324
+ *
8325
+ * Licensed under the Apache License, Version 2.0 (the "License");
8326
+ * you may not use this file except in compliance with the License.
8327
+ * You may obtain a copy of the License at
8328
+ *
8329
+ * http://www.apache.org/licenses/LICENSE-2.0
8330
+ *
8331
+ * Unless required by applicable law or agreed to in writing, software
8332
+ * distributed under the License is distributed on an "AS IS" BASIS,
8333
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
8334
+ * See the License for the specific language governing permissions and
8335
+ * limitations under the License.
8336
+ */
8337
+
7947
8338
  /*
7948
8339
  * Copyright (C) 2021 The Gravitee team (http://gravitee.io)
7949
8340
  *
@@ -7986,5 +8377,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.4", ngImpor
7986
8377
  * Generated bundle index. Do not edit.
7987
8378
  */
7988
8379
 
7989
- export { ConfigureTestingGioMonacoEditor, GIO_DIALOG_WIDTH, GIO_FORM_FOCUS_INVALID_IGNORE_SELECTOR, GRAVITEE_LOGO, GioAvatarComponent, GioAvatarModule, GioBannerActionDirective, GioBannerBodyDirective, GioBannerComponent, GioBannerErrorComponent, GioBannerInfoComponent, GioBannerModule, GioBannerSuccessComponent, GioBannerWarningComponent, GioBaseFormFocusInvalidDirective, GioBreadcrumbComponent, GioBreadcrumbItemDirective, GioBreadcrumbModule, GioButtonFocusInvalidButtonDirective, GioCardEmptyStateComponent, GioCardEmptyStateModule, GioClipboardCopyIconComponent, GioClipboardCopyWrapperComponent, GioClipboardModule, GioConfirmAndValidateDialogComponent, GioConfirmAndValidateDialogHarness, GioConfirmAndValidateDialogModule, GioConfirmDialogComponent, GioConfirmDialogHarness, GioConfirmDialogModule, GioFormCronComponent, GioFormCronHarness, GioFormCronHintComponent, GioFormCronLabelComponent, GioFormCronModule, GioFormFilePickerAddButtonComponent, GioFormFilePickerComponent, GioFormFilePickerEmptyComponent, GioFormFilePickerInputHarness, GioFormFilePickerLabelComponent, GioFormFilePickerModule, GioFormFocusInvalidFormDirective, GioFormFocusInvalidIgnoreDirective, GioFormFocusInvalidModule, GioFormHeadersComponent, GioFormHeadersHarness, GioFormHeadersLabelComponent, GioFormHeadersModule, GioFormJsonSchemaComponent, GioFormJsonSchemaModule, GioFormLabelComponent, GioFormPrefixDirective, GioFormSelectionInlineCardComponent, GioFormSelectionInlineCardContentComponent, GioFormSelectionInlineCardHarness, GioFormSelectionInlineCardSubtitleComponent, GioFormSelectionInlineCardTitleComponent, GioFormSelectionInlineComponent, GioFormSelectionInlineHarness, GioFormSelectionInlineModule, GioFormSlideToggleComponent, GioFormSlideToggleDirective, GioFormSlideToggleModule, GioFormTagsInputComponent, GioFormTagsInputHarness, GioFormTagsInputModule, GioIconsModule, GioLicenseDialogComponent, GioLicenseDialogModule, GioLicenseDirective, GioLicenseExpirationNotificationComponent, GioLicenseExpirationNotificationHarness, GioLicenseExpirationNotificationModule, GioLicenseModule, GioLicenseService, GioLicenseTestingModule, GioLoaderComponent, GioLoaderModule, GioMatConfigModule, GioMenuComponent, GioMenuFooterComponent, GioMenuHeaderComponent, GioMenuItemComponent, GioMenuLicenseExpirationNotificationComponent, GioMenuListComponent, GioMenuModule, GioMenuSearchComponent, GioMenuSearchHarness, GioMenuSearchService, GioMenuSelectorComponent, GioMenuSelectorHarness, GioMenuService, GioMonacoEditorComponent, GioMonacoEditorFormFieldDirective, GioMonacoEditorHarness, GioMonacoEditorModule, GioPrismJsService, GioSafePipeModule, GioSaveBarComponent, GioSaveBarHarness, GioSaveBarModule, GioSubmenuComponent, GioSubmenuGroupComponent, GioSubmenuItemComponent, GioSubmenuModule, GioSubmenuTitleDirective, GioTopBarComponent, GioTopBarContentComponent, GioTopBarLinkComponent, GioTopBarLinkModule, GioTopBarMenuComponent, GioTopBarMenuModule, GioTopBarModule, LICENSE_CONFIGURATION_TESTING, NewFile, OEM_DEFAULT_LOGO, OEM_LICENSE_CONFIGURATION_TESTING, OEM_THEME_ARG_TYPES, SafePipe, cleanLocalStorageReduceState, computeAndInjectStylesForStory, computeStyles, computeStylesForStory, isLicensePluginOptions, resetStoryStyleInjection };
8380
+ export { ConfigureTestingGioMonacoEditor, GIO_DIALOG_WIDTH, GIO_FORM_FOCUS_INVALID_IGNORE_SELECTOR, GRAVITEE_LOGO, GioAvatarComponent, GioAvatarModule, GioBannerActionDirective, GioBannerBodyDirective, GioBannerComponent, GioBannerErrorComponent, GioBannerInfoComponent, GioBannerModule, GioBannerSuccessComponent, GioBannerWarningComponent, GioBaseFormFocusInvalidDirective, GioBreadcrumbComponent, GioBreadcrumbItemDirective, GioBreadcrumbModule, GioButtonFocusInvalidButtonDirective, GioCardEmptyStateComponent, GioCardEmptyStateModule, GioClipboardCopyIconComponent, GioClipboardCopyWrapperComponent, GioClipboardModule, GioConfirmAndValidateDialogComponent, GioConfirmAndValidateDialogHarness, GioConfirmAndValidateDialogModule, GioConfirmDialogComponent, GioConfirmDialogHarness, GioConfirmDialogModule, GioElPromptComponent, GioElService, GioFormCronComponent, GioFormCronHarness, GioFormCronHintComponent, GioFormCronLabelComponent, GioFormCronModule, GioFormFilePickerAddButtonComponent, GioFormFilePickerComponent, GioFormFilePickerEmptyComponent, GioFormFilePickerInputHarness, GioFormFilePickerLabelComponent, GioFormFilePickerModule, GioFormFocusInvalidFormDirective, GioFormFocusInvalidIgnoreDirective, GioFormFocusInvalidModule, GioFormHeadersComponent, GioFormHeadersHarness, GioFormHeadersLabelComponent, GioFormHeadersModule, GioFormJsonSchemaComponent, GioFormJsonSchemaModule, GioFormLabelComponent, GioFormPrefixDirective, GioFormSelectionInlineCardComponent, GioFormSelectionInlineCardContentComponent, GioFormSelectionInlineCardHarness, GioFormSelectionInlineCardSubtitleComponent, GioFormSelectionInlineCardTitleComponent, GioFormSelectionInlineComponent, GioFormSelectionInlineHarness, GioFormSelectionInlineModule, GioFormSlideToggleComponent, GioFormSlideToggleDirective, GioFormSlideToggleModule, GioFormTagsInputComponent, GioFormTagsInputHarness, GioFormTagsInputModule, GioIconsModule, GioLicenseDialogComponent, GioLicenseDialogModule, GioLicenseDirective, GioLicenseExpirationNotificationComponent, GioLicenseExpirationNotificationHarness, GioLicenseExpirationNotificationModule, GioLicenseModule, GioLicenseService, GioLicenseTestingModule, GioLoaderComponent, GioLoaderModule, GioMatConfigModule, GioMenuComponent, GioMenuFooterComponent, GioMenuHeaderComponent, GioMenuItemComponent, GioMenuLicenseExpirationNotificationComponent, GioMenuListComponent, GioMenuModule, GioMenuSearchComponent, GioMenuSearchHarness, GioMenuSearchService, GioMenuSelectorComponent, GioMenuSelectorHarness, GioMenuService, GioMonacoEditorComponent, GioMonacoEditorFormFieldDirective, GioMonacoEditorHarness, GioMonacoEditorModule, GioPopoverComponent, GioPrismJsService, GioSafePipeModule, GioSaveBarComponent, GioSaveBarHarness, GioSaveBarModule, GioSubmenuComponent, GioSubmenuGroupComponent, GioSubmenuItemComponent, GioSubmenuModule, GioSubmenuTitleDirective, GioTopBarComponent, GioTopBarContentComponent, GioTopBarLinkComponent, GioTopBarLinkModule, GioTopBarMenuComponent, GioTopBarMenuModule, GioTopBarModule, LICENSE_CONFIGURATION_TESTING, NewFile, OEM_DEFAULT_LOGO, OEM_LICENSE_CONFIGURATION_TESTING, OEM_THEME_ARG_TYPES, PopoverTriggerDirective, SafePipe, cleanLocalStorageReduceState, computeAndInjectStylesForStory, computeStyles, computeStylesForStory, isLicensePluginOptions, isPromptError, isPromptSuccess, resetStoryStyleInjection };
7990
8381
  //# sourceMappingURL=gravitee-ui-particles-angular.mjs.map