@educarehq/solaris-components 0.5.0 → 0.5.1

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.
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { inject, ElementRef, Renderer2, Directive, TemplateRef, Injectable, ViewContainerRef, DestroyRef, Input, ContentChild, ViewEncapsulation, Component, EventEmitter, Output, HostBinding, ChangeDetectionStrategy, ViewChildren, ContentChildren, ApplicationRef, signal, computed, effect, HostListener, Optional, EnvironmentInjector, createComponent, input, booleanAttribute, InjectionToken, makeEnvironmentProviders, PLATFORM_ID, viewChild, numberAttribute, afterNextRender, ViewChild, Injector, output, forwardRef, Host } from '@angular/core';
2
+ import { inject, ElementRef, Renderer2, Directive, TemplateRef, Injectable, ViewContainerRef, DestroyRef, Input, ContentChild, ViewEncapsulation, Component, EventEmitter, Output, HostBinding, ChangeDetectionStrategy, ViewChildren, ContentChildren, ApplicationRef, signal, computed, effect, HostListener, Optional, EnvironmentInjector, createComponent, input, booleanAttribute, InjectionToken, makeEnvironmentProviders, PLATFORM_ID, viewChild, numberAttribute, afterNextRender, Injector, ViewChild, output, forwardRef, Host } from '@angular/core';
3
3
  import { takeUntilDestroyed, toSignal } from '@angular/core/rxjs-interop';
4
4
  import { Overlay } from '@angular/cdk/overlay';
5
5
  import { TemplatePortal } from '@angular/cdk/portal';
@@ -8,7 +8,7 @@ import { filter } from 'rxjs/operators';
8
8
  import { CdkMenu, CdkMenuItem, CdkMenuTrigger } from '@angular/cdk/menu';
9
9
  import { RouterLink } from '@angular/router';
10
10
  import * as i1 from '@angular/common';
11
- import { NgClass, NgTemplateOutlet, CommonModule, NgStyle, isPlatformBrowser, DOCUMENT, NgOptimizedImage } from '@angular/common';
11
+ import { NgClass, NgTemplateOutlet, CommonModule, NgStyle, isPlatformBrowser, NgComponentOutlet, DOCUMENT, NgOptimizedImage } from '@angular/common';
12
12
  import { SolarisTranslationPipe, SOLARIS_TRANSLATION, SOLARIS_TRANSLATION_CONFIGURATION } from '@educarehq/solaris-services';
13
13
  import * as i1$1 from '@angular/forms';
14
14
  import { NG_VALUE_ACCESSOR, FormsModule, NG_VALIDATORS, NgForm, FormGroupDirective, NgControl } from '@angular/forms';
@@ -3039,6 +3039,268 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImpor
3039
3039
  args: ['attr.aria-orientation']
3040
3040
  }] } });
3041
3041
 
3042
+ const SOLARIS_DIALOG_STEP_DATA = new InjectionToken('SOLARIS_DIALOG_STEP_DATA');
3043
+
3044
+ const SOLARIS_DIALOG_DATA = new InjectionToken('SOLARIS_DIALOG_DATA');
3045
+
3046
+ class SolarisDialogRef {
3047
+ actionSubject = new Subject();
3048
+ closedSubject = new Subject();
3049
+ closeFn;
3050
+ updateActionsFn;
3051
+ updateHeaderFn;
3052
+ afterClosed() {
3053
+ return this.closedSubject.asObservable();
3054
+ }
3055
+ afterAction() {
3056
+ return this.actionSubject.asObservable();
3057
+ }
3058
+ close(result) {
3059
+ this.closeFn?.(result);
3060
+ }
3061
+ updateActions(actions) {
3062
+ this.updateActionsFn?.(actions);
3063
+ }
3064
+ updateHeader(header) {
3065
+ this.updateHeaderFn?.(header);
3066
+ }
3067
+ _attachCloseFn(fn) {
3068
+ this.closeFn = fn;
3069
+ }
3070
+ _attachActionsUpdateFn(fn) {
3071
+ this.updateActionsFn = fn;
3072
+ }
3073
+ _attachHeaderUpdateFn(fn) {
3074
+ this.updateHeaderFn = fn;
3075
+ }
3076
+ _emitAction(action) {
3077
+ this.actionSubject.next(action);
3078
+ }
3079
+ _finishClose(result) {
3080
+ this.closedSubject.next(result);
3081
+ this.closedSubject.complete();
3082
+ this.actionSubject.complete();
3083
+ }
3084
+ }
3085
+
3086
+ class SolarisDialogStepsContainer {
3087
+ destroyRef = inject(DestroyRef);
3088
+ injector = inject(Injector);
3089
+ configuration = inject(SOLARIS_DIALOG_DATA);
3090
+ dialogRef = inject(SolarisDialogRef);
3091
+ loading = signal(false, ...(ngDevMode ? [{ debugName: "loading" }] : []));
3092
+ transitioning = signal(false, ...(ngDevMode ? [{ debugName: "transitioning" }] : []));
3093
+ steps = this.configuration.steps ?? [];
3094
+ transitionHalfway = signal(false, ...(ngDevMode ? [{ debugName: "transitionHalfway" }] : []));
3095
+ currentStepIndex = signal(this.resolveInitialStepIndex(), ...(ngDevMode ? [{ debugName: "currentStepIndex" }] : []));
3096
+ showProgress = this.configuration.showProgress ?? true;
3097
+ transitionDurationMs = this.configuration.transitionDurationMs ?? 360;
3098
+ transitionBlur = this.configuration.transitionBlur ?? true;
3099
+ transitionTimer = 0;
3100
+ halfwayTimer = 0;
3101
+ stepInjectors = this.steps.map(step => Injector.create({
3102
+ providers: [
3103
+ {
3104
+ provide: SOLARIS_DIALOG_STEP_DATA,
3105
+ useValue: step.data,
3106
+ },
3107
+ ],
3108
+ parent: this.injector,
3109
+ }));
3110
+ trackTransform = computed(() => {
3111
+ return `translate3d(-${this.currentStepIndex() * 100}%, 0, 0)`;
3112
+ }, ...(ngDevMode ? [{ debugName: "trackTransform" }] : []));
3113
+ isFirstStep = computed(() => this.currentStepIndex() === 0, ...(ngDevMode ? [{ debugName: "isFirstStep" }] : []));
3114
+ isLastStep = computed(() => {
3115
+ return this.currentStepIndex() === this.steps.length - 1;
3116
+ }, ...(ngDevMode ? [{ debugName: "isLastStep" }] : []));
3117
+ transitionDuration = computed(() => {
3118
+ return `${this.transitionDurationMs}ms`;
3119
+ }, ...(ngDevMode ? [{ debugName: "transitionDuration" }] : []));
3120
+ constructor() {
3121
+ this.dialogRef.afterAction().pipe(takeUntilDestroyed(this.destroyRef))
3122
+ .subscribe(action => {
3123
+ void this.handleAction(action.value);
3124
+ });
3125
+ effect(() => {
3126
+ this.currentStepIndex();
3127
+ this.loading();
3128
+ this.updateDialogHeader();
3129
+ this.updateDialogActions();
3130
+ });
3131
+ queueMicrotask(() => {
3132
+ void this.runBeforeEnter(this.currentStepIndex(), 'initial');
3133
+ });
3134
+ }
3135
+ stepInjector(index) {
3136
+ return this.stepInjectors[index];
3137
+ }
3138
+ async handleAction(value) {
3139
+ switch (value) {
3140
+ case 'cancel':
3141
+ this.dialogRef.close();
3142
+ return;
3143
+ case 'back':
3144
+ await this.goToStep(this.currentStepIndex() - 1, 'backward');
3145
+ return;
3146
+ case 'next':
3147
+ await this.goToStep(this.currentStepIndex() + 1, 'forward');
3148
+ return;
3149
+ case 'finish':
3150
+ await this.finish();
3151
+ return;
3152
+ }
3153
+ }
3154
+ async goToStep(targetIndex, direction) {
3155
+ if (this.loading())
3156
+ return;
3157
+ if (targetIndex < 0 || targetIndex >= this.steps.length)
3158
+ return;
3159
+ const fromIndex = this.currentStepIndex();
3160
+ const canLeave = await this.runBeforeLeave(fromIndex, targetIndex, direction);
3161
+ if (!canLeave)
3162
+ return;
3163
+ const canEnter = await this.runBeforeEnter(targetIndex, direction, fromIndex);
3164
+ if (!canEnter)
3165
+ return;
3166
+ this.runTransitionTo(targetIndex);
3167
+ }
3168
+ async finish() {
3169
+ if (this.loading())
3170
+ return;
3171
+ const index = this.currentStepIndex();
3172
+ const canLeave = await this.runBeforeLeave(index, index, 'forward');
3173
+ if (!canLeave)
3174
+ return;
3175
+ this.dialogRef.close(this.configuration.finishValue);
3176
+ }
3177
+ async runBeforeEnter(toIndex, direction, fromIndex = toIndex) {
3178
+ const step = this.steps[toIndex];
3179
+ if (!step?.beforeEnter) {
3180
+ return true;
3181
+ }
3182
+ this.loading.set(true);
3183
+ try {
3184
+ const result = await step.beforeEnter({
3185
+ fromIndex,
3186
+ toIndex,
3187
+ direction,
3188
+ });
3189
+ return result !== false;
3190
+ }
3191
+ finally {
3192
+ this.loading.set(false);
3193
+ }
3194
+ }
3195
+ async runBeforeLeave(fromIndex, toIndex, direction) {
3196
+ const step = this.steps[fromIndex];
3197
+ if (!step?.beforeLeave) {
3198
+ return true;
3199
+ }
3200
+ this.loading.set(true);
3201
+ try {
3202
+ const result = await step.beforeLeave({
3203
+ fromIndex,
3204
+ toIndex,
3205
+ direction,
3206
+ });
3207
+ return result !== false;
3208
+ }
3209
+ finally {
3210
+ this.loading.set(false);
3211
+ }
3212
+ }
3213
+ updateDialogActions() {
3214
+ if (!this.steps.length) {
3215
+ this.dialogRef.updateActions([]);
3216
+ return;
3217
+ }
3218
+ const leftAction = this.isFirstStep()
3219
+ ? {
3220
+ label: this.configuration.cancelLabel ?? 'Cancelar',
3221
+ labelKey: this.configuration.cancelLabelKey,
3222
+ value: 'cancel',
3223
+ variant: 'outline',
3224
+ color: 'surface',
3225
+ closesDialog: false,
3226
+ disabled: this.loading(),
3227
+ }
3228
+ : {
3229
+ label: this.configuration.backLabel ?? 'Voltar',
3230
+ labelKey: this.configuration.backLabelKey,
3231
+ value: 'back',
3232
+ variant: 'outline',
3233
+ color: 'surface',
3234
+ closesDialog: false,
3235
+ disabled: this.loading(),
3236
+ };
3237
+ const rightAction = this.isLastStep()
3238
+ ? {
3239
+ label: this.configuration.finishLabel ?? 'Finalizar',
3240
+ labelKey: this.configuration.finishLabelKey,
3241
+ value: 'finish',
3242
+ variant: 'solid',
3243
+ color: 'primary',
3244
+ closesDialog: false,
3245
+ loading: this.loading(),
3246
+ }
3247
+ : {
3248
+ label: this.configuration.nextLabel ?? 'Continuar',
3249
+ labelKey: this.configuration.nextLabelKey,
3250
+ value: 'next',
3251
+ variant: 'solid',
3252
+ color: 'primary',
3253
+ closesDialog: false,
3254
+ loading: this.loading(),
3255
+ };
3256
+ this.dialogRef.updateActions([leftAction, rightAction]);
3257
+ }
3258
+ resolveInitialStepIndex() {
3259
+ if (!this.steps.length) {
3260
+ return 0;
3261
+ }
3262
+ const index = this.configuration.initialStepIndex ?? 0;
3263
+ return Math.max(0, Math.min(index, this.steps.length - 1));
3264
+ }
3265
+ runTransitionTo(targetIndex) {
3266
+ globalThis.clearTimeout(this.halfwayTimer);
3267
+ globalThis.clearTimeout(this.transitionTimer);
3268
+ this.transitioning.set(true);
3269
+ this.transitionHalfway.set(false);
3270
+ this.currentStepIndex.set(targetIndex);
3271
+ if (this.transitionBlur) {
3272
+ this.halfwayTimer = globalThis.setTimeout(() => {
3273
+ if (this.transitioning()) {
3274
+ this.transitionHalfway.set(true);
3275
+ }
3276
+ }, Math.round(this.transitionDurationMs / 2));
3277
+ }
3278
+ this.transitionTimer = globalThis.setTimeout(() => {
3279
+ this.transitioning.set(false);
3280
+ this.transitionHalfway.set(false);
3281
+ }, this.transitionDurationMs);
3282
+ }
3283
+ updateDialogHeader() {
3284
+ const step = this.steps[this.currentStepIndex()];
3285
+ this.dialogRef.updateHeader({
3286
+ title: step?.title ?? this.configuration.title,
3287
+ titleKey: step?.titleKey ?? this.configuration.titleKey,
3288
+ titleParams: step?.titleParams ?? this.configuration.titleParams,
3289
+ description: step?.description ?? this.configuration.description,
3290
+ descriptionKey: step?.descriptionKey ?? this.configuration.descriptionKey,
3291
+ descriptionParams: step?.descriptionParams ?? this.configuration.descriptionParams,
3292
+ });
3293
+ }
3294
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: SolarisDialogStepsContainer, deps: [], target: i0.ɵɵFactoryTarget.Component });
3295
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.1", type: SolarisDialogStepsContainer, isStandalone: true, selector: "solaris-dialog-steps-container", ngImport: i0, template: "<div class=\"solaris-dialog-steps\" [class.is-transitioning]=\"transitioning()\"\r\n [class.is-halfway]=\"transitionHalfway()\" [class.has-transition-blur]=\"transitionBlur\">\r\n @if (showProgress) {\r\n <div class=\"solaris-dialog-steps__progress\" aria-hidden=\"true\">\r\n @for (step of steps; track step.key; let index = $index) {\r\n <span class=\"solaris-dialog-steps__dot\" [class.is-active]=\"index === currentStepIndex()\"\r\n [class.is-complete]=\"index < currentStepIndex()\"></span>\r\n }\r\n </div>\r\n }\r\n\r\n <div class=\"solaris-dialog-steps__viewport\">\r\n <div class=\"solaris-dialog-steps__track\" [style.transform]=\"trackTransform()\"\r\n [style.--solaris-dialog-steps-transition-duration]=\"transitionDuration()\">\r\n @for (step of steps; track step.key; let index = $index) {\r\n <section class=\"solaris-dialog-steps__step\" [class.is-active]=\"index === currentStepIndex()\"\r\n [class.is-before]=\"index < currentStepIndex()\" [class.is-after]=\"index > currentStepIndex()\">\r\n <div class=\"solaris-dialog-steps__step-inner\">\r\n <ng-container *ngComponentOutlet=\"step.component; injector: stepInjector(index)\"></ng-container>\r\n </div>\r\n </section>\r\n }\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [":host{display:block;min-inline-size:0}.solaris-dialog-steps{--solaris-dialog-steps-min-height: 24rem;--solaris-dialog-steps-transition-duration: .42s;display:grid;min-inline-size:0;gap:var(--solaris-space-5)}.solaris-dialog-steps__progress{display:flex;justify-content:center;align-items:center;gap:var(--solaris-space-2)}.solaris-dialog-steps__dot{inline-size:.8rem;block-size:.8rem;border-radius:var(--solaris-radius-full);background:color-mix(in srgb,var(--solaris-color-text-muted) 35%,transparent);transition:background-color .18s ease,transform .18s ease}.solaris-dialog-steps__dot.is-active{background:var(--solaris-color-primary);transform:scale(1.2)}.solaris-dialog-steps__dot.is-complete{background:color-mix(in srgb,var(--solaris-color-primary) 72%,white)}.solaris-dialog-steps__viewport{overflow:hidden;inline-size:100%;min-inline-size:0;min-block-size:var(--solaris-dialog-steps-min-height)}.solaris-dialog-steps__track{display:flex;inline-size:100%;min-inline-size:0;will-change:transform;align-items:stretch;transition:transform var(--solaris-dialog-steps-transition-duration) cubic-bezier(.22,1,.36,1)}.solaris-dialog-steps__step{flex:0 0 100%;inline-size:100%;min-inline-size:100%;min-block-size:var(--solaris-dialog-steps-min-height);display:grid;align-content:center;overflow:visible}.solaris-dialog-steps__step-inner{inline-size:100%;min-inline-size:0;transition:filter calc(var(--solaris-dialog-steps-transition-duration) * .45) ease,opacity calc(var(--solaris-dialog-steps-transition-duration) * .45) ease,transform calc(var(--solaris-dialog-steps-transition-duration) * .45) ease}.solaris-dialog-steps.has-transition-blur.is-transitioning.is-halfway .solaris-dialog-steps__step:not(.is-active) .solaris-dialog-steps__step-inner{filter:blur(.18rem);opacity:.58;transform:scale(.985)}.solaris-dialog-steps.has-transition-blur.is-transitioning.is-halfway .solaris-dialog-steps__step.is-active .solaris-dialog-steps__step-inner{filter:blur(0);opacity:1;transform:scale(1)}\n"], dependencies: [{ kind: "directive", type: NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletEnvironmentInjector", "ngComponentOutletContent", "ngComponentOutletNgModule"], exportAs: ["ngComponentOutlet"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
3296
+ }
3297
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: SolarisDialogStepsContainer, decorators: [{
3298
+ type: Component,
3299
+ args: [{ selector: 'solaris-dialog-steps-container', standalone: true, imports: [
3300
+ NgComponentOutlet
3301
+ ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"solaris-dialog-steps\" [class.is-transitioning]=\"transitioning()\"\r\n [class.is-halfway]=\"transitionHalfway()\" [class.has-transition-blur]=\"transitionBlur\">\r\n @if (showProgress) {\r\n <div class=\"solaris-dialog-steps__progress\" aria-hidden=\"true\">\r\n @for (step of steps; track step.key; let index = $index) {\r\n <span class=\"solaris-dialog-steps__dot\" [class.is-active]=\"index === currentStepIndex()\"\r\n [class.is-complete]=\"index < currentStepIndex()\"></span>\r\n }\r\n </div>\r\n }\r\n\r\n <div class=\"solaris-dialog-steps__viewport\">\r\n <div class=\"solaris-dialog-steps__track\" [style.transform]=\"trackTransform()\"\r\n [style.--solaris-dialog-steps-transition-duration]=\"transitionDuration()\">\r\n @for (step of steps; track step.key; let index = $index) {\r\n <section class=\"solaris-dialog-steps__step\" [class.is-active]=\"index === currentStepIndex()\"\r\n [class.is-before]=\"index < currentStepIndex()\" [class.is-after]=\"index > currentStepIndex()\">\r\n <div class=\"solaris-dialog-steps__step-inner\">\r\n <ng-container *ngComponentOutlet=\"step.component; injector: stepInjector(index)\"></ng-container>\r\n </div>\r\n </section>\r\n }\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [":host{display:block;min-inline-size:0}.solaris-dialog-steps{--solaris-dialog-steps-min-height: 24rem;--solaris-dialog-steps-transition-duration: .42s;display:grid;min-inline-size:0;gap:var(--solaris-space-5)}.solaris-dialog-steps__progress{display:flex;justify-content:center;align-items:center;gap:var(--solaris-space-2)}.solaris-dialog-steps__dot{inline-size:.8rem;block-size:.8rem;border-radius:var(--solaris-radius-full);background:color-mix(in srgb,var(--solaris-color-text-muted) 35%,transparent);transition:background-color .18s ease,transform .18s ease}.solaris-dialog-steps__dot.is-active{background:var(--solaris-color-primary);transform:scale(1.2)}.solaris-dialog-steps__dot.is-complete{background:color-mix(in srgb,var(--solaris-color-primary) 72%,white)}.solaris-dialog-steps__viewport{overflow:hidden;inline-size:100%;min-inline-size:0;min-block-size:var(--solaris-dialog-steps-min-height)}.solaris-dialog-steps__track{display:flex;inline-size:100%;min-inline-size:0;will-change:transform;align-items:stretch;transition:transform var(--solaris-dialog-steps-transition-duration) cubic-bezier(.22,1,.36,1)}.solaris-dialog-steps__step{flex:0 0 100%;inline-size:100%;min-inline-size:100%;min-block-size:var(--solaris-dialog-steps-min-height);display:grid;align-content:center;overflow:visible}.solaris-dialog-steps__step-inner{inline-size:100%;min-inline-size:0;transition:filter calc(var(--solaris-dialog-steps-transition-duration) * .45) ease,opacity calc(var(--solaris-dialog-steps-transition-duration) * .45) ease,transform calc(var(--solaris-dialog-steps-transition-duration) * .45) ease}.solaris-dialog-steps.has-transition-blur.is-transitioning.is-halfway .solaris-dialog-steps__step:not(.is-active) .solaris-dialog-steps__step-inner{filter:blur(.18rem);opacity:.58;transform:scale(.985)}.solaris-dialog-steps.has-transition-blur.is-transitioning.is-halfway .solaris-dialog-steps__step.is-active .solaris-dialog-steps__step-inner{filter:blur(0);opacity:1;transform:scale(1)}\n"] }]
3302
+ }], ctorParameters: () => [] });
3303
+
3042
3304
  class SolarisDialogContainer {
3043
3305
  contentHost;
3044
3306
  title;
@@ -3051,6 +3313,7 @@ class SolarisDialogContainer {
3051
3313
  showCloseButton = true;
3052
3314
  actionSize;
3053
3315
  actions = [];
3316
+ actionAlignment = 'end';
3054
3317
  ariaLabel;
3055
3318
  ariaLabelledBy;
3056
3319
  ariaDescribedBy;
@@ -3119,13 +3382,13 @@ class SolarisDialogContainer {
3119
3382
  }
3120
3383
  }
3121
3384
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: SolarisDialogContainer, deps: [], target: i0.ɵɵFactoryTarget.Component });
3122
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.1", type: SolarisDialogContainer, isStandalone: true, selector: "solaris-dialog-container", inputs: { title: "title", titleKey: "titleKey", titleParams: "titleParams", description: "description", descriptionKey: "descriptionKey", descriptionParams: "descriptionParams", size: "size", showCloseButton: "showCloseButton", actionSize: "actionSize", actions: "actions", ariaLabel: "ariaLabel", ariaLabelledBy: "ariaLabelledBy", ariaDescribedBy: "ariaDescribedBy" }, outputs: { closeClick: "closeClick", actionClick: "actionClick" }, viewQueries: [{ propertyName: "contentHost", first: true, predicate: ["contentHost"], descendants: true, read: ViewContainerRef, static: true }], ngImport: i0, template: "<section class=\"solaris-dialog\" [attr.data-size]=\"size\" role=\"dialog\" aria-modal=\"true\" [attr.aria-label]=\"ariaLabel || null\"\r\n [attr.aria-labelledby]=\"resolvedAriaLabelledBy\" [attr.aria-describedby]=\"resolvedAriaDescribedBy\">\r\n @if (hasHeader) {\r\n <header class=\"solaris-dialog__header\">\r\n <div class=\"solaris-dialog__heading\">\r\n @if (title || titleKey) {\r\n <h2 class=\"solaris-dialog__title\" [id]=\"titleId\">\r\n @if (titleKey) {\r\n {{ titleKey }}\r\n } @else {\r\n {{ title }}\r\n }\r\n </h2>\r\n }\r\n\r\n @if (hasDescription) {\r\n <p class=\"solaris-dialog__description\" [id]=\"descriptionId\">\r\n @if (descriptionKey) {\r\n {{ descriptionKey }}\r\n } @else {\r\n {{ description }}\r\n }\r\n </p>\r\n }\r\n </div>\r\n\r\n @if (showCloseButton) {\r\n <button type=\"button\" class=\"solaris-dialog__close\" aria-label=\"Fechar\" (click)=\"closeClick.emit()\">\r\n <i class=\"ph ph-x\"></i>\r\n </button>\r\n }\r\n </header>\r\n }\r\n\r\n <div class=\"solaris-dialog__body\">\r\n <ng-template #contentHost></ng-template>\r\n </div>\r\n\r\n @if (hasActions) {\r\n <footer class=\"solaris-dialog__footer\">\r\n @for (action of actions; track action.label ?? action.labelKey ?? $index) {\r\n <button type=\"button\" solaris-button class=\"solaris-dialog__action\" [size]=\"resolveActionSize(action)\"\r\n [variant]=\"resolveActionVariant(action)\" [color]=\"resolveActionColor(action)\" [disabled]=\"action.disabled\"\r\n [loading]=\"action.loading\" [fullWidth]=\"action.fullWidth\" (click)=\"actionClick.emit(action)\">\r\n @if (action.labelKey) {\r\n {{ action.labelKey }}\r\n } @else {\r\n {{ action.label }}\r\n }\r\n </button>\r\n }\r\n </footer>\r\n }\r\n</section>\r\n", styles: [":host{display:grid;inline-size:100%;block-size:100%;pointer-events:none;max-inline-size:100%}:host>.solaris-dialog{pointer-events:auto}.solaris-dialog{--solaris-dialog-max-width: 56rem;--solaris-dialog-max-height: min(88vh, 72rem);--solaris-dialog-fg: var(--solaris-color-text);--solaris-dialog-padding: var(--solaris-space-5);--solaris-dialog-bg: var(--solaris-color-surface);--solaris-dialog-radius: var(--solaris-radius-lg);--solaris-dialog-shadow: var(--solaris-shadow-lg);--solaris-dialog-border: color-mix(in srgb, var(--solaris-color-border) 82%, transparent);inline-size:min(100vw - 3.2rem,var(--solaris-dialog-max-width));max-block-size:var(--solaris-dialog-max-height);display:grid;grid-template-rows:auto minmax(0,1fr) auto;color:var(--solaris-dialog-fg);background:var(--solaris-dialog-bg);border:1px solid var(--solaris-dialog-border);border-radius:var(--solaris-dialog-radius);box-shadow:var(--solaris-dialog-shadow);overflow:hidden;animation:solaris-dialog-in .14s ease}.solaris-dialog[data-size=sm]{--solaris-dialog-max-width: 40rem}.solaris-dialog[data-size=md]{--solaris-dialog-max-width: 56rem}.solaris-dialog[data-size=lg]{--solaris-dialog-max-width: 72rem}.solaris-dialog[data-size=xl]{--solaris-dialog-max-width: 96rem}.solaris-dialog[data-size=fullscreen]{inline-size:calc(100vw - 3.2rem);block-size:calc(100vh - 3.2rem);--solaris-dialog-max-width: none;--solaris-dialog-max-height: none}.solaris-dialog__header{display:grid;min-inline-size:0;align-items:start;gap:var(--solaris-space-4);padding:var(--solaris-dialog-padding);grid-template-columns:minmax(0,1fr) auto;border-block-end:1px solid var(--solaris-dialog-border)}.solaris-dialog__heading{display:grid;min-inline-size:0;gap:var(--solaris-space-1)}.solaris-dialog__title{margin:0;font-weight:750;font-size:var(--solaris-fs-18);color:var(--solaris-color-text);line-height:var(--solaris-lh-tight)}.solaris-dialog__description{margin:0;font-size:var(--solaris-fs-13);line-height:var(--solaris-lh-normal);color:var(--solaris-color-text-muted)}.solaris-dialog__close{padding:0;border:0;outline:none;cursor:pointer;block-size:3.2rem;inline-size:3.2rem;place-items:center;display:inline-grid;background:transparent;color:var(--solaris-color-text-muted);border-radius:var(--solaris-radius-full);transition:background-color .12s ease,color .12s ease,box-shadow .12s ease}.solaris-dialog__close:hover,.solaris-dialog__close:focus-visible{color:var(--solaris-color-text);background:var(--solaris-color-surface-2)}.solaris-dialog__close:focus-visible{box-shadow:0 0 0 .3rem color-mix(in srgb,var(--solaris-color-primary) 24%,transparent)}.solaris-dialog__close i{line-height:1;font-size:var(--solaris-fs-18)}.solaris-dialog__body{overflow:auto;min-block-size:0;padding:var(--solaris-dialog-padding)}.solaris-dialog__footer{display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;gap:var(--solaris-space-2);border-block-start:1px solid var(--solaris-dialog-border);padding:var(--solaris-space-4) var(--solaris-dialog-padding);background:color-mix(in srgb,var(--solaris-color-surface-2) 45%,transparent)}.solaris-dialog__action{white-space:nowrap}@keyframes solaris-dialog-in{0%{opacity:0;transform:translateY(.8rem) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}\n"], dependencies: [{ kind: "directive", type: SolarisButtonDirective, selector: "button[solaris-button], a[solaris-button]", inputs: ["size", "variant", "color", "textColor", "radius", "loading", "iconOnly", "disabled", "fullWidth", "badgeOverlay"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
3385
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.1", type: SolarisDialogContainer, isStandalone: true, selector: "solaris-dialog-container", inputs: { title: "title", titleKey: "titleKey", titleParams: "titleParams", description: "description", descriptionKey: "descriptionKey", descriptionParams: "descriptionParams", size: "size", showCloseButton: "showCloseButton", actionSize: "actionSize", actions: "actions", actionAlignment: "actionAlignment", ariaLabel: "ariaLabel", ariaLabelledBy: "ariaLabelledBy", ariaDescribedBy: "ariaDescribedBy" }, outputs: { closeClick: "closeClick", actionClick: "actionClick" }, viewQueries: [{ propertyName: "contentHost", first: true, predicate: ["contentHost"], descendants: true, read: ViewContainerRef, static: true }], ngImport: i0, template: "<section class=\"solaris-dialog\" [attr.data-size]=\"size\" role=\"dialog\" aria-modal=\"true\" [attr.aria-label]=\"ariaLabel || null\"\r\n [attr.aria-labelledby]=\"resolvedAriaLabelledBy\" [attr.aria-describedby]=\"resolvedAriaDescribedBy\">\r\n @if (hasHeader) {\r\n <header class=\"solaris-dialog__header\">\r\n <div class=\"solaris-dialog__heading\">\r\n @if (title || titleKey) {\r\n <h2 class=\"solaris-dialog__title\" [id]=\"titleId\">\r\n @if (titleKey) {\r\n {{ titleKey }}\r\n } @else {\r\n {{ title }}\r\n }\r\n </h2>\r\n }\r\n\r\n @if (hasDescription) {\r\n <p class=\"solaris-dialog__description\" [id]=\"descriptionId\">\r\n @if (descriptionKey) {\r\n {{ descriptionKey }}\r\n } @else {\r\n {{ description }}\r\n }\r\n </p>\r\n }\r\n </div>\r\n\r\n @if (showCloseButton) {\r\n <button type=\"button\" class=\"solaris-dialog__close\" aria-label=\"Fechar\" (click)=\"closeClick.emit()\">\r\n <i class=\"ph ph-x\"></i>\r\n </button>\r\n }\r\n </header>\r\n }\r\n\r\n <div class=\"solaris-dialog__body\">\r\n <ng-template #contentHost></ng-template>\r\n </div>\r\n\r\n @if (hasActions) {\r\n <footer class=\"solaris-dialog__footer\" [attr.data-action-alignment]=\"actionAlignment\">\r\n @for (action of actions; track action.label ?? action.labelKey ?? $index) {\r\n <button type=\"button\" solaris-button class=\"solaris-dialog__action\" [size]=\"resolveActionSize(action)\"\r\n [variant]=\"resolveActionVariant(action)\" [color]=\"resolveActionColor(action)\" [disabled]=\"action.disabled\"\r\n [loading]=\"action.loading\" [fullWidth]=\"action.fullWidth\" (click)=\"actionClick.emit(action)\">\r\n @if (action.labelKey) {\r\n {{ action.labelKey }}\r\n } @else {\r\n {{ action.label }}\r\n }\r\n </button>\r\n }\r\n </footer>\r\n }\r\n</section>\r\n", styles: [":host{display:grid;inline-size:100%;block-size:100%;pointer-events:none;max-inline-size:100%}:host>.solaris-dialog{pointer-events:auto}.solaris-dialog{--solaris-dialog-max-width: 56rem;--solaris-dialog-max-height: min(88vh, 72rem);--solaris-dialog-fg: var(--solaris-color-text);--solaris-dialog-padding: var(--solaris-space-5);--solaris-dialog-bg: var(--solaris-color-surface);--solaris-dialog-radius: var(--solaris-radius-lg);--solaris-dialog-shadow: var(--solaris-shadow-lg);--solaris-dialog-border: color-mix(in srgb, var(--solaris-color-border) 82%, transparent);inline-size:min(100vw - 3.2rem,var(--solaris-dialog-max-width));max-block-size:var(--solaris-dialog-max-height);display:grid;grid-template-rows:auto minmax(0,1fr) auto;color:var(--solaris-dialog-fg);background:var(--solaris-dialog-bg);border:1px solid var(--solaris-dialog-border);border-radius:var(--solaris-dialog-radius);box-shadow:var(--solaris-dialog-shadow);overflow:hidden;animation:solaris-dialog-in .14s ease}.solaris-dialog[data-size=sm]{--solaris-dialog-max-width: 40rem}.solaris-dialog[data-size=md]{--solaris-dialog-max-width: 56rem}.solaris-dialog[data-size=lg]{--solaris-dialog-max-width: 72rem}.solaris-dialog[data-size=xl]{--solaris-dialog-max-width: 96rem}.solaris-dialog[data-size=fullscreen]{inline-size:calc(100vw - 3.2rem);block-size:calc(100vh - 3.2rem);--solaris-dialog-max-width: none;--solaris-dialog-max-height: none}.solaris-dialog__header{display:grid;min-inline-size:0;align-items:start;gap:var(--solaris-space-4);padding:var(--solaris-dialog-padding);grid-template-columns:minmax(0,1fr) auto;border-block-end:1px solid var(--solaris-dialog-border)}.solaris-dialog__heading{display:grid;min-inline-size:0;gap:var(--solaris-space-1)}.solaris-dialog__title{margin:0;font-weight:750;font-size:var(--solaris-fs-18);color:var(--solaris-color-text);line-height:var(--solaris-lh-tight)}.solaris-dialog__description{margin:0;font-size:var(--solaris-fs-13);line-height:var(--solaris-lh-normal);color:var(--solaris-color-text-muted)}.solaris-dialog__close{padding:0;border:0;outline:none;cursor:pointer;block-size:3.2rem;inline-size:3.2rem;place-items:center;display:inline-grid;background:transparent;color:var(--solaris-color-text-muted);border-radius:var(--solaris-radius-full);transition:background-color .12s ease,color .12s ease,box-shadow .12s ease}.solaris-dialog__close:hover,.solaris-dialog__close:focus-visible{color:var(--solaris-color-text);background:var(--solaris-color-surface-2)}.solaris-dialog__close:focus-visible{box-shadow:0 0 0 .3rem color-mix(in srgb,var(--solaris-color-primary) 24%,transparent)}.solaris-dialog__close i{line-height:1;font-size:var(--solaris-fs-18)}.solaris-dialog__body{overflow:auto;min-block-size:0;padding:var(--solaris-dialog-padding)}.solaris-dialog__footer{display:flex;flex-wrap:wrap;align-items:center;gap:var(--solaris-space-3);border-block-start:1px solid var(--solaris-dialog-border);padding:var(--solaris-space-4) var(--solaris-dialog-padding);background:color-mix(in srgb,var(--solaris-color-surface-2) 45%,transparent)}.solaris-dialog__footer[data-action-alignment=start]{justify-content:flex-start}.solaris-dialog__footer[data-action-alignment=center]{justify-content:center}.solaris-dialog__footer[data-action-alignment=end]{justify-content:flex-end}.solaris-dialog__footer[data-action-alignment=space-between]{justify-content:space-between}.solaris-dialog__action{white-space:nowrap}@keyframes solaris-dialog-in{0%{opacity:0;transform:translateY(.8rem) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}\n"], dependencies: [{ kind: "directive", type: SolarisButtonDirective, selector: "button[solaris-button], a[solaris-button]", inputs: ["size", "variant", "color", "textColor", "radius", "loading", "iconOnly", "disabled", "fullWidth", "badgeOverlay"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
3123
3386
  }
3124
3387
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: SolarisDialogContainer, decorators: [{
3125
3388
  type: Component,
3126
3389
  args: [{ selector: 'solaris-dialog-container', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [
3127
3390
  SolarisButtonDirective
3128
- ], template: "<section class=\"solaris-dialog\" [attr.data-size]=\"size\" role=\"dialog\" aria-modal=\"true\" [attr.aria-label]=\"ariaLabel || null\"\r\n [attr.aria-labelledby]=\"resolvedAriaLabelledBy\" [attr.aria-describedby]=\"resolvedAriaDescribedBy\">\r\n @if (hasHeader) {\r\n <header class=\"solaris-dialog__header\">\r\n <div class=\"solaris-dialog__heading\">\r\n @if (title || titleKey) {\r\n <h2 class=\"solaris-dialog__title\" [id]=\"titleId\">\r\n @if (titleKey) {\r\n {{ titleKey }}\r\n } @else {\r\n {{ title }}\r\n }\r\n </h2>\r\n }\r\n\r\n @if (hasDescription) {\r\n <p class=\"solaris-dialog__description\" [id]=\"descriptionId\">\r\n @if (descriptionKey) {\r\n {{ descriptionKey }}\r\n } @else {\r\n {{ description }}\r\n }\r\n </p>\r\n }\r\n </div>\r\n\r\n @if (showCloseButton) {\r\n <button type=\"button\" class=\"solaris-dialog__close\" aria-label=\"Fechar\" (click)=\"closeClick.emit()\">\r\n <i class=\"ph ph-x\"></i>\r\n </button>\r\n }\r\n </header>\r\n }\r\n\r\n <div class=\"solaris-dialog__body\">\r\n <ng-template #contentHost></ng-template>\r\n </div>\r\n\r\n @if (hasActions) {\r\n <footer class=\"solaris-dialog__footer\">\r\n @for (action of actions; track action.label ?? action.labelKey ?? $index) {\r\n <button type=\"button\" solaris-button class=\"solaris-dialog__action\" [size]=\"resolveActionSize(action)\"\r\n [variant]=\"resolveActionVariant(action)\" [color]=\"resolveActionColor(action)\" [disabled]=\"action.disabled\"\r\n [loading]=\"action.loading\" [fullWidth]=\"action.fullWidth\" (click)=\"actionClick.emit(action)\">\r\n @if (action.labelKey) {\r\n {{ action.labelKey }}\r\n } @else {\r\n {{ action.label }}\r\n }\r\n </button>\r\n }\r\n </footer>\r\n }\r\n</section>\r\n", styles: [":host{display:grid;inline-size:100%;block-size:100%;pointer-events:none;max-inline-size:100%}:host>.solaris-dialog{pointer-events:auto}.solaris-dialog{--solaris-dialog-max-width: 56rem;--solaris-dialog-max-height: min(88vh, 72rem);--solaris-dialog-fg: var(--solaris-color-text);--solaris-dialog-padding: var(--solaris-space-5);--solaris-dialog-bg: var(--solaris-color-surface);--solaris-dialog-radius: var(--solaris-radius-lg);--solaris-dialog-shadow: var(--solaris-shadow-lg);--solaris-dialog-border: color-mix(in srgb, var(--solaris-color-border) 82%, transparent);inline-size:min(100vw - 3.2rem,var(--solaris-dialog-max-width));max-block-size:var(--solaris-dialog-max-height);display:grid;grid-template-rows:auto minmax(0,1fr) auto;color:var(--solaris-dialog-fg);background:var(--solaris-dialog-bg);border:1px solid var(--solaris-dialog-border);border-radius:var(--solaris-dialog-radius);box-shadow:var(--solaris-dialog-shadow);overflow:hidden;animation:solaris-dialog-in .14s ease}.solaris-dialog[data-size=sm]{--solaris-dialog-max-width: 40rem}.solaris-dialog[data-size=md]{--solaris-dialog-max-width: 56rem}.solaris-dialog[data-size=lg]{--solaris-dialog-max-width: 72rem}.solaris-dialog[data-size=xl]{--solaris-dialog-max-width: 96rem}.solaris-dialog[data-size=fullscreen]{inline-size:calc(100vw - 3.2rem);block-size:calc(100vh - 3.2rem);--solaris-dialog-max-width: none;--solaris-dialog-max-height: none}.solaris-dialog__header{display:grid;min-inline-size:0;align-items:start;gap:var(--solaris-space-4);padding:var(--solaris-dialog-padding);grid-template-columns:minmax(0,1fr) auto;border-block-end:1px solid var(--solaris-dialog-border)}.solaris-dialog__heading{display:grid;min-inline-size:0;gap:var(--solaris-space-1)}.solaris-dialog__title{margin:0;font-weight:750;font-size:var(--solaris-fs-18);color:var(--solaris-color-text);line-height:var(--solaris-lh-tight)}.solaris-dialog__description{margin:0;font-size:var(--solaris-fs-13);line-height:var(--solaris-lh-normal);color:var(--solaris-color-text-muted)}.solaris-dialog__close{padding:0;border:0;outline:none;cursor:pointer;block-size:3.2rem;inline-size:3.2rem;place-items:center;display:inline-grid;background:transparent;color:var(--solaris-color-text-muted);border-radius:var(--solaris-radius-full);transition:background-color .12s ease,color .12s ease,box-shadow .12s ease}.solaris-dialog__close:hover,.solaris-dialog__close:focus-visible{color:var(--solaris-color-text);background:var(--solaris-color-surface-2)}.solaris-dialog__close:focus-visible{box-shadow:0 0 0 .3rem color-mix(in srgb,var(--solaris-color-primary) 24%,transparent)}.solaris-dialog__close i{line-height:1;font-size:var(--solaris-fs-18)}.solaris-dialog__body{overflow:auto;min-block-size:0;padding:var(--solaris-dialog-padding)}.solaris-dialog__footer{display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;gap:var(--solaris-space-2);border-block-start:1px solid var(--solaris-dialog-border);padding:var(--solaris-space-4) var(--solaris-dialog-padding);background:color-mix(in srgb,var(--solaris-color-surface-2) 45%,transparent)}.solaris-dialog__action{white-space:nowrap}@keyframes solaris-dialog-in{0%{opacity:0;transform:translateY(.8rem) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}\n"] }]
3391
+ ], template: "<section class=\"solaris-dialog\" [attr.data-size]=\"size\" role=\"dialog\" aria-modal=\"true\" [attr.aria-label]=\"ariaLabel || null\"\r\n [attr.aria-labelledby]=\"resolvedAriaLabelledBy\" [attr.aria-describedby]=\"resolvedAriaDescribedBy\">\r\n @if (hasHeader) {\r\n <header class=\"solaris-dialog__header\">\r\n <div class=\"solaris-dialog__heading\">\r\n @if (title || titleKey) {\r\n <h2 class=\"solaris-dialog__title\" [id]=\"titleId\">\r\n @if (titleKey) {\r\n {{ titleKey }}\r\n } @else {\r\n {{ title }}\r\n }\r\n </h2>\r\n }\r\n\r\n @if (hasDescription) {\r\n <p class=\"solaris-dialog__description\" [id]=\"descriptionId\">\r\n @if (descriptionKey) {\r\n {{ descriptionKey }}\r\n } @else {\r\n {{ description }}\r\n }\r\n </p>\r\n }\r\n </div>\r\n\r\n @if (showCloseButton) {\r\n <button type=\"button\" class=\"solaris-dialog__close\" aria-label=\"Fechar\" (click)=\"closeClick.emit()\">\r\n <i class=\"ph ph-x\"></i>\r\n </button>\r\n }\r\n </header>\r\n }\r\n\r\n <div class=\"solaris-dialog__body\">\r\n <ng-template #contentHost></ng-template>\r\n </div>\r\n\r\n @if (hasActions) {\r\n <footer class=\"solaris-dialog__footer\" [attr.data-action-alignment]=\"actionAlignment\">\r\n @for (action of actions; track action.label ?? action.labelKey ?? $index) {\r\n <button type=\"button\" solaris-button class=\"solaris-dialog__action\" [size]=\"resolveActionSize(action)\"\r\n [variant]=\"resolveActionVariant(action)\" [color]=\"resolveActionColor(action)\" [disabled]=\"action.disabled\"\r\n [loading]=\"action.loading\" [fullWidth]=\"action.fullWidth\" (click)=\"actionClick.emit(action)\">\r\n @if (action.labelKey) {\r\n {{ action.labelKey }}\r\n } @else {\r\n {{ action.label }}\r\n }\r\n </button>\r\n }\r\n </footer>\r\n }\r\n</section>\r\n", styles: [":host{display:grid;inline-size:100%;block-size:100%;pointer-events:none;max-inline-size:100%}:host>.solaris-dialog{pointer-events:auto}.solaris-dialog{--solaris-dialog-max-width: 56rem;--solaris-dialog-max-height: min(88vh, 72rem);--solaris-dialog-fg: var(--solaris-color-text);--solaris-dialog-padding: var(--solaris-space-5);--solaris-dialog-bg: var(--solaris-color-surface);--solaris-dialog-radius: var(--solaris-radius-lg);--solaris-dialog-shadow: var(--solaris-shadow-lg);--solaris-dialog-border: color-mix(in srgb, var(--solaris-color-border) 82%, transparent);inline-size:min(100vw - 3.2rem,var(--solaris-dialog-max-width));max-block-size:var(--solaris-dialog-max-height);display:grid;grid-template-rows:auto minmax(0,1fr) auto;color:var(--solaris-dialog-fg);background:var(--solaris-dialog-bg);border:1px solid var(--solaris-dialog-border);border-radius:var(--solaris-dialog-radius);box-shadow:var(--solaris-dialog-shadow);overflow:hidden;animation:solaris-dialog-in .14s ease}.solaris-dialog[data-size=sm]{--solaris-dialog-max-width: 40rem}.solaris-dialog[data-size=md]{--solaris-dialog-max-width: 56rem}.solaris-dialog[data-size=lg]{--solaris-dialog-max-width: 72rem}.solaris-dialog[data-size=xl]{--solaris-dialog-max-width: 96rem}.solaris-dialog[data-size=fullscreen]{inline-size:calc(100vw - 3.2rem);block-size:calc(100vh - 3.2rem);--solaris-dialog-max-width: none;--solaris-dialog-max-height: none}.solaris-dialog__header{display:grid;min-inline-size:0;align-items:start;gap:var(--solaris-space-4);padding:var(--solaris-dialog-padding);grid-template-columns:minmax(0,1fr) auto;border-block-end:1px solid var(--solaris-dialog-border)}.solaris-dialog__heading{display:grid;min-inline-size:0;gap:var(--solaris-space-1)}.solaris-dialog__title{margin:0;font-weight:750;font-size:var(--solaris-fs-18);color:var(--solaris-color-text);line-height:var(--solaris-lh-tight)}.solaris-dialog__description{margin:0;font-size:var(--solaris-fs-13);line-height:var(--solaris-lh-normal);color:var(--solaris-color-text-muted)}.solaris-dialog__close{padding:0;border:0;outline:none;cursor:pointer;block-size:3.2rem;inline-size:3.2rem;place-items:center;display:inline-grid;background:transparent;color:var(--solaris-color-text-muted);border-radius:var(--solaris-radius-full);transition:background-color .12s ease,color .12s ease,box-shadow .12s ease}.solaris-dialog__close:hover,.solaris-dialog__close:focus-visible{color:var(--solaris-color-text);background:var(--solaris-color-surface-2)}.solaris-dialog__close:focus-visible{box-shadow:0 0 0 .3rem color-mix(in srgb,var(--solaris-color-primary) 24%,transparent)}.solaris-dialog__close i{line-height:1;font-size:var(--solaris-fs-18)}.solaris-dialog__body{overflow:auto;min-block-size:0;padding:var(--solaris-dialog-padding)}.solaris-dialog__footer{display:flex;flex-wrap:wrap;align-items:center;gap:var(--solaris-space-3);border-block-start:1px solid var(--solaris-dialog-border);padding:var(--solaris-space-4) var(--solaris-dialog-padding);background:color-mix(in srgb,var(--solaris-color-surface-2) 45%,transparent)}.solaris-dialog__footer[data-action-alignment=start]{justify-content:flex-start}.solaris-dialog__footer[data-action-alignment=center]{justify-content:center}.solaris-dialog__footer[data-action-alignment=end]{justify-content:flex-end}.solaris-dialog__footer[data-action-alignment=space-between]{justify-content:space-between}.solaris-dialog__action{white-space:nowrap}@keyframes solaris-dialog-in{0%{opacity:0;transform:translateY(.8rem) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}\n"] }]
3129
3392
  }], propDecorators: { contentHost: [{
3130
3393
  type: ViewChild,
3131
3394
  args: ['contentHost', { read: ViewContainerRef, static: true }]
@@ -3149,6 +3412,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImpor
3149
3412
  type: Input
3150
3413
  }], actions: [{
3151
3414
  type: Input
3415
+ }], actionAlignment: [{
3416
+ type: Input
3152
3417
  }], ariaLabel: [{
3153
3418
  type: Input
3154
3419
  }], ariaLabelledBy: [{
@@ -3161,29 +3426,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImpor
3161
3426
  type: Output
3162
3427
  }] } });
3163
3428
 
3164
- const SOLARIS_DIALOG_DATA = new InjectionToken('SOLARIS_DIALOG_DATA');
3165
-
3166
- class SolarisDialogRef {
3167
- closedSubject = new Subject();
3168
- closeFn;
3169
- afterClosed() {
3170
- return this.closedSubject.asObservable();
3171
- }
3172
- close(result) {
3173
- this.closeFn?.(result);
3174
- }
3175
- _attachCloseFn(fn) {
3176
- this.closeFn = fn;
3177
- }
3178
- _finishClose(result) {
3179
- this.closedSubject.next(result);
3180
- this.closedSubject.complete();
3181
- }
3182
- }
3183
-
3184
3429
  class SolarisDialogService {
3185
- appRef = inject(ApplicationRef);
3186
3430
  environmentInjector = inject(EnvironmentInjector);
3431
+ appRef = inject(ApplicationRef);
3187
3432
  open(component, configuration = {}) {
3188
3433
  const dialogRef = new SolarisDialogRef();
3189
3434
  const backdrop = document.createElement('div');
@@ -3215,12 +3460,26 @@ class SolarisDialogService {
3215
3460
  containerRef.setInput('descriptionKey', configuration.descriptionKey);
3216
3461
  containerRef.setInput('descriptionParams', configuration.descriptionParams);
3217
3462
  containerRef.setInput('size', configuration.size ?? 'md');
3218
- containerRef.setInput('showCloseButton', configuration.showCloseButton ?? !configuration.disableClose);
3219
3463
  containerRef.setInput('actions', configuration.actions ?? []);
3220
3464
  containerRef.setInput('actionSize', configuration.actionSize);
3465
+ containerRef.setInput('actionAlignment', configuration.actionAlignment ?? 'end');
3221
3466
  containerRef.setInput('ariaLabel', configuration.ariaLabel);
3222
3467
  containerRef.setInput('ariaLabelledBy', configuration.ariaLabelledBy);
3223
3468
  containerRef.setInput('ariaDescribedBy', configuration.ariaDescribedBy);
3469
+ containerRef.setInput('showCloseButton', configuration.showCloseButton ?? !configuration.disableClose);
3470
+ dialogRef._attachActionsUpdateFn(actions => {
3471
+ containerRef.setInput('actions', [...actions]);
3472
+ containerRef.changeDetectorRef.detectChanges();
3473
+ });
3474
+ dialogRef._attachHeaderUpdateFn(header => {
3475
+ containerRef.setInput('title', header.title);
3476
+ containerRef.setInput('titleKey', header.titleKey);
3477
+ containerRef.setInput('titleParams', header.titleParams);
3478
+ containerRef.setInput('description', header.description);
3479
+ containerRef.setInput('descriptionKey', header.descriptionKey);
3480
+ containerRef.setInput('descriptionParams', header.descriptionParams);
3481
+ containerRef.changeDetectorRef.detectChanges();
3482
+ });
3224
3483
  this.appRef.attachView(containerRef.hostView);
3225
3484
  containerRef.changeDetectorRef.detectChanges();
3226
3485
  const contentRef = createComponent(component, {
@@ -3261,14 +3520,24 @@ class SolarisDialogService {
3261
3520
  }
3262
3521
  });
3263
3522
  containerRef.instance.actionClick.subscribe((action) => {
3264
- if (action.disabled)
3523
+ if (action.disabled || action.loading)
3265
3524
  return;
3525
+ dialogRef._emitAction(action);
3266
3526
  if (action.closesDialog ?? true) {
3267
3527
  dialogRef.close(action.value);
3268
3528
  }
3269
3529
  });
3270
3530
  return dialogRef;
3271
3531
  }
3532
+ openSteps(configuration) {
3533
+ return this.open(SolarisDialogStepsContainer, {
3534
+ ...configuration,
3535
+ data: configuration,
3536
+ actions: [],
3537
+ actionAlignment: configuration.actionAlignment ?? 'space-between',
3538
+ showCloseButton: configuration.showCloseButton ?? true,
3539
+ });
3540
+ }
3272
3541
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: SolarisDialogService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
3273
3542
  static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: SolarisDialogService, providedIn: 'root' });
3274
3543
  }
@@ -8136,5 +8405,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImpor
8136
8405
  * Generated bundle index. Do not edit.
8137
8406
  */
8138
8407
 
8139
- export { ButtonGroupDirective, FieldErrorComponent, FormField, InputTextDirective, PasswordToggle, SOLARIS_CARD_GROUP, SOLARIS_CARD_SLOT_DIRECTIVES, SOLARIS_DIALOG_DATA, SOLARIS_FORM_FIELD_CONTROLLER, SOLARIS_FORM_FIELD_FEATURES, SOLARIS_INPUT, SOLARIS_NOTIFICATION_CONFIG, SOLARIS_NOTIFICATION_DEFAULT_CONFIG, SOLARIS_NOTIFICATION_POSITIONS, SOLARIS_RADIO_GROUP, SolarisAvatar, SolarisAvatarDropdown, SolarisAvatarOverlayDirective, SolarisAvatarStack, SolarisBadge, SolarisBodyDirective, SolarisBreadcrumb, SolarisButtonDirective, SolarisCard, SolarisCardActionsDirective, SolarisCardBadgeDirective, SolarisCardDescriptionDirective, SolarisCardEyebrowDirective, SolarisCardFooterDirective, SolarisCardGroup, SolarisCardMedia, SolarisCardMediaDirective, SolarisCardMediaOverlayDirective, SolarisCardMetaDirective, SolarisCardTitleDirective, SolarisCheckbox, SolarisColumnCellDef, SolarisColumnHeaderDef, SolarisControlBridgeDirective, SolarisDialogContainer, SolarisDialogRef, SolarisDialogService, SolarisDivider, SolarisDrawer, SolarisDrawerFooterDirective, SolarisDrawerHeaderDirective, SolarisDropdownContent, SolarisDropdownContentPanelDirective, SolarisDropdownContentRegistry, SolarisDropdownContentTriggerDirective, SolarisEmailDirective, SolarisFilterBar, SolarisFilterChip, SolarisFilterField, SolarisFilterPanel, SolarisFilterPanelFooterDirective, SolarisFloatingOverlayService, SolarisFooterDirective, SolarisFormFieldController, SolarisHeaderDirective, SolarisIdGenerator, SolarisImageSliderComponent, SolarisLoading, SolarisLoadingOverlay, SolarisNotificationCenterComponent, SolarisNotificationHostComponent, SolarisNotificationIntlService, SolarisNotificationItemComponent, SolarisNotificationService, SolarisPage, SolarisPageHeader, SolarisPageHeaderBreadcrumbDirective, SolarisPageHeaderDescriptionDirective, SolarisPageHeaderTitle, SolarisPageHeaderTitleDirective, SolarisPasswordDirective, SolarisPhoneInput, SolarisPopover, SolarisPopoverPanelDirective, SolarisPopoverTriggerDirective, SolarisPrefixDirective, SolarisPresenceAvatar, SolarisRadio, SolarisRadioGroup, SolarisRichTooltipDirective, SolarisRichTooltipPanel, SolarisRowComponent, SolarisSectionComponent, SolarisSelect, SolarisSelectionCard, SolarisStepper, SolarisStepperItem, SolarisSuffixDirective, SolarisTab, SolarisTable, SolarisTableColumn, SolarisTableFilters, SolarisTableSkeleton, SolarisTabs, SolarisTooltipDirective, SolarisTooltipPanel, computeFloatingPosition, computePopoverPosition, provideSolarisNotifications, repositionTooltipOverlay, uniqueId };
8408
+ export { ButtonGroupDirective, FieldErrorComponent, FormField, InputTextDirective, PasswordToggle, SOLARIS_CARD_GROUP, SOLARIS_CARD_SLOT_DIRECTIVES, SOLARIS_DIALOG_DATA, SOLARIS_DIALOG_STEP_DATA, SOLARIS_FORM_FIELD_CONTROLLER, SOLARIS_FORM_FIELD_FEATURES, SOLARIS_INPUT, SOLARIS_NOTIFICATION_CONFIG, SOLARIS_NOTIFICATION_DEFAULT_CONFIG, SOLARIS_NOTIFICATION_POSITIONS, SOLARIS_RADIO_GROUP, SolarisAvatar, SolarisAvatarDropdown, SolarisAvatarOverlayDirective, SolarisAvatarStack, SolarisBadge, SolarisBodyDirective, SolarisBreadcrumb, SolarisButtonDirective, SolarisCard, SolarisCardActionsDirective, SolarisCardBadgeDirective, SolarisCardDescriptionDirective, SolarisCardEyebrowDirective, SolarisCardFooterDirective, SolarisCardGroup, SolarisCardMedia, SolarisCardMediaDirective, SolarisCardMediaOverlayDirective, SolarisCardMetaDirective, SolarisCardTitleDirective, SolarisCheckbox, SolarisColumnCellDef, SolarisColumnHeaderDef, SolarisControlBridgeDirective, SolarisDialogContainer, SolarisDialogRef, SolarisDialogService, SolarisDialogStepsContainer, SolarisDivider, SolarisDrawer, SolarisDrawerFooterDirective, SolarisDrawerHeaderDirective, SolarisDropdownContent, SolarisDropdownContentPanelDirective, SolarisDropdownContentRegistry, SolarisDropdownContentTriggerDirective, SolarisEmailDirective, SolarisFilterBar, SolarisFilterChip, SolarisFilterField, SolarisFilterPanel, SolarisFilterPanelFooterDirective, SolarisFloatingOverlayService, SolarisFooterDirective, SolarisFormFieldController, SolarisHeaderDirective, SolarisIdGenerator, SolarisImageSliderComponent, SolarisLoading, SolarisLoadingOverlay, SolarisNotificationCenterComponent, SolarisNotificationHostComponent, SolarisNotificationIntlService, SolarisNotificationItemComponent, SolarisNotificationService, SolarisPage, SolarisPageHeader, SolarisPageHeaderBreadcrumbDirective, SolarisPageHeaderDescriptionDirective, SolarisPageHeaderTitle, SolarisPageHeaderTitleDirective, SolarisPasswordDirective, SolarisPhoneInput, SolarisPopover, SolarisPopoverPanelDirective, SolarisPopoverTriggerDirective, SolarisPrefixDirective, SolarisPresenceAvatar, SolarisRadio, SolarisRadioGroup, SolarisRichTooltipDirective, SolarisRichTooltipPanel, SolarisRowComponent, SolarisSectionComponent, SolarisSelect, SolarisSelectionCard, SolarisStepper, SolarisStepperItem, SolarisSuffixDirective, SolarisTab, SolarisTable, SolarisTableColumn, SolarisTableFilters, SolarisTableSkeleton, SolarisTabs, SolarisTooltipDirective, SolarisTooltipPanel, computeFloatingPosition, computePopoverPosition, provideSolarisNotifications, repositionTooltipOverlay, uniqueId };
8140
8409
  //# sourceMappingURL=educarehq-solaris-components.mjs.map