@corto-ai/gds-angular 2.1.3-dev.1 → 2.1.3-dev.3

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,25 +1,23 @@
1
1
  import * as i0 from '@angular/core';
2
- import { Injectable, inject, signal, Injector, input, viewChild, effect, afterNextRender, ChangeDetectionStrategy, Component, model, booleanAttribute, computed, ElementRef, output, Directive, contentChild, DestroyRef, Renderer2, Input, ChangeDetectorRef, EventEmitter, NgZone, Output, DOCUMENT, HostBinding, InjectionToken, EnvironmentInjector, ApplicationRef, createComponent, Pipe, contentChildren, ViewEncapsulation, untracked, ViewContainerRef, runInInjectionContext, TemplateRef, numberAttribute, HostListener, provideAppInitializer, NgModule } from '@angular/core';
2
+ import { Injectable, inject, signal, Injector, input, viewChild, effect, afterNextRender, ChangeDetectionStrategy, Component, model, booleanAttribute, computed, ElementRef, output, Directive, contentChild, DestroyRef, Renderer2, InjectionToken, Input, ChangeDetectorRef, EventEmitter, NgZone, Output, DOCUMENT, HostBinding, EnvironmentInjector, ApplicationRef, createComponent, Pipe, contentChildren, ViewEncapsulation, untracked, ViewContainerRef, runInInjectionContext, TemplateRef, numberAttribute, HostListener, provideAppInitializer, NgModule } from '@angular/core';
3
3
  import { injectRegisterIcons, SvgIconRegistry, SvgIconComponent, provideSvgIconsConfig } from '@ngneat/svg-icon';
4
4
  import { DomSanitizer } from '@angular/platform-browser';
5
5
  import * as i1 from '@ngneat/helipopper';
6
6
  import { TippyDirective } from '@ngneat/helipopper';
7
7
  import { NgClass, NgTemplateOutlet, TitleCasePipe, DOCUMENT as DOCUMENT$1, CommonModule } from '@angular/common';
8
8
  import { takeUntilDestroyed, toSignal } from '@angular/core/rxjs-interop';
9
- import { Subject, tap, debounceTime, fromEvent, take } from 'rxjs';
10
- import { DEBOUNCE_DURATION, CDK_MENU_CONNECTED_POSITIONS } from '@corto/utils/constants';
11
- import { BrandEnum, GdsContextMenuItemVariantEnum } from '@corto/utils/types';
9
+ import { Subject, tap, debounceTime, fromEvent, take, map } from 'rxjs';
10
+ import { format, intervalToDuration } from 'date-fns';
12
11
  import * as i1$2 from '@angular/cdk/a11y';
13
12
  import { FocusKeyManager, CdkTrapFocus, A11yModule } from '@angular/cdk/a11y';
14
13
  import * as i1$1 from '@angular/cdk/menu';
15
14
  import { CdkMenuItem, CdkMenuTrigger, CdkMenuItemCheckbox, MENU_TRIGGER, CdkMenu, CdkTargetMenuAim } from '@angular/cdk/menu';
16
15
  import { FormField } from '@angular/forms/signals';
17
16
  import { v4 } from 'uuid';
18
- import { format, intervalToDuration } from 'date-fns';
19
17
  import { OverlayModule } from '@angular/cdk/overlay';
20
18
  import * as i1$3 from '@ngx-translate/core';
21
19
  import { TranslatePipe, TranslateModule } from '@ngx-translate/core';
22
- import { DeviceDetectorSignalService } from '@corto/utils/services';
20
+ import { DeviceDetectorService } from 'ngx-device-detector';
23
21
  import { MAT_DATE_LOCALE, provideNativeDateAdapter } from '@angular/material/core';
24
22
  import * as i1$4 from '@angular/material/datepicker';
25
23
  import { MatDatepickerModule } from '@angular/material/datepicker';
@@ -27,8 +25,7 @@ import * as i1$5 from '@angular/forms';
27
25
  import { FormsModule } from '@angular/forms';
28
26
  import * as i2 from '@ng-select/ng-select';
29
27
  import { NgSelectComponent, NgLabelTemplateDirective, NgMultiLabelTemplateDirective, NgFooterTemplateDirective, NgClearButtonTemplateDirective, NgOptionTemplateDirective, NgPlaceholderTemplateDirective, NgSelectModule } from '@ng-select/ng-select';
30
- import { getScreenSizeSignal, getOperatingSystem, getBrowser } from '@corto/utils/functions';
31
- import { computedPrevious } from '@corto/utils/signals';
28
+ import { BreakpointObserver } from '@angular/cdk/layout';
32
29
  import * as i1$6 from 'ngx-toastr';
33
30
  import { ToastNoAnimation, provideToastr } from 'ngx-toastr';
34
31
  import { CdkVirtualScrollViewport } from '@angular/cdk/scrolling';
@@ -855,7 +852,7 @@ const gdsFilledDetailsIcon = {
855
852
  name: 'filled-details'
856
853
  };
857
854
  const gdsFilledDocumentMultipleIcon = {
858
- data: `<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M4 4.25C4 3.00736 5.00736 2 6.25 2H10.5039V6.74753C10.5039 7.99017 11.5113 8.99753 12.7539 8.99753H17.5V17.25C17.5 18.4926 16.4926 19.5 15.25 19.5H6.25C5.00736 19.5 4 18.4926 4 17.25V4.25ZM7.75 11.5C7.33579 11.5 7 11.8358 7 12.25C7 12.6642 7.33579 13 7.75 13C8.16421 13 8.5 12.6642 8.5 12.25C8.5 11.8358 8.16421 11.5 7.75 11.5ZM7 15.25C7 15.6642 7.33579 16 7.75 16C8.16421 16 8.5 15.6642 8.5 15.25C8.5 14.8358 8.16421 14.5 7.75 14.5C7.33579 14.5 7 14.8358 7 15.25ZM10 12.25C10 12.6642 10.3358 13 10.75 13H13.8038C14.218 13 14.5538 12.6642 14.5538 12.25C14.5538 11.8358 14.218 11.5 13.8038 11.5H10.75C10.3358 11.5 10 11.8358 10 12.25ZM10.75 14.5C10.3358 14.5 10 14.8358 10 15.25C10 15.6642 10.3358 16 10.75 16H13.8038C14.218 16 14.5538 15.6642 14.5538 15.25C14.5538 14.8358 14.218 14.5 13.8038 14.5H10.75ZM12.0039 6.74753V2.46728C12.0803 2.52611 12.1532 2.59009 12.2221 2.65901L16.841 7.27786C16.9103 7.34721 16.9747 7.42062 17.0338 7.49753H12.7539C12.3397 7.49753 12.0039 7.16174 12.0039 6.74753ZM6.62891 20.5C6.93778 21.3739 7.77121 22 8.75088 22H15.2509C17.8742 22 20.0009 19.8734 20.0009 17.25V11.3689C20.0009 10.7721 19.7638 10.1998 19.3419 9.77788L18.5009 8.93689V17.25C18.5009 19.0449 17.0458 20.5 15.2509 20.5H6.62891Z" fill="currentColor"/></svg>`,
855
+ data: `<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M4 4.25C4 3.00736 5.00736 2 6.25 2H10.5039V6.74753C10.5039 7.99017 11.5113 8.99753 12.7539 8.99753H17.5V17.25C17.5 18.4926 16.4926 19.5 15.25 19.5H6.25C5.00736 19.5 4 18.4926 4 17.25V4.25Z" fill="currentColor"/><path d="M12.0039 6.74753V2.46728C12.0803 2.52611 12.1532 2.59009 12.2221 2.65901L16.841 7.27786C16.9103 7.34721 16.9747 7.42062 17.0338 7.49753H12.7539C12.3397 7.49753 12.0039 7.16174 12.0039 6.74753Z" fill="currentColor"/><path d="M8.75088 22C7.77121 22 6.93778 21.3739 6.62891 20.5H15.2509C17.0458 20.5 18.5009 19.0449 18.5009 17.25V8.93689L19.3419 9.77788C19.7638 10.1998 20.0009 10.7721 20.0009 11.3689V17.25C20.0009 19.8734 17.8742 22 15.2509 22H8.75088Z" fill="currentColor"/></svg>`,
859
856
  name: 'filled-document-multiple'
860
857
  };
861
858
  const gdsFilledDocumentTableIcon = {
@@ -3809,6 +3806,9 @@ class ButtonBaseDirective {
3809
3806
  disabled = input(false, { ...(ngDevMode ? { debugName: "disabled" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
3810
3807
  size = input('default', ...(ngDevMode ? [{ debugName: "size" }] : /* istanbul ignore next */ []));
3811
3808
  variant = input('default', ...(ngDevMode ? [{ debugName: "variant" }] : /* istanbul ignore next */ []));
3809
+ // Safari does not set buttons as tabbable by default.
3810
+ // To keep same behavior as chrome, set the tabIndex to 0 by default.
3811
+ tabIndex = input(0, ...(ngDevMode ? [{ debugName: "tabIndex" }] : /* istanbul ignore next */ []));
3812
3812
  clicked = output();
3813
3813
  isDisabled = computed(() => this.disabled() || this.busy(), ...(ngDevMode ? [{ debugName: "isDisabled" }] : /* istanbul ignore next */ []));
3814
3814
  nativeElement = this.#elementRef.nativeElement;
@@ -3818,7 +3818,7 @@ class ButtonBaseDirective {
3818
3818
  this.clicked.emit(event);
3819
3819
  }
3820
3820
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: ButtonBaseDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
3821
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.17", type: ButtonBaseDirective, isStandalone: true, inputs: { busy: { classPropertyName: "busy", publicName: "busy", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { clicked: "clicked" }, host: { attributes: { "type": "button" }, listeners: { "click": "handleClick($event)" }, properties: { "attr.disabled": "isDisabled() ? \"\" : undefined", "attr.data-size": "size()", "attr.data-variant": "variant()", "attr.data-busy": "busy() ? \"\" : undefined" } }, ngImport: i0 });
3821
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.17", type: ButtonBaseDirective, isStandalone: true, inputs: { busy: { classPropertyName: "busy", publicName: "busy", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, tabIndex: { classPropertyName: "tabIndex", publicName: "tabIndex", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { clicked: "clicked" }, host: { attributes: { "type": "button" }, listeners: { "click": "handleClick($event)" }, properties: { "attr.disabled": "isDisabled() ? \"\" : undefined", "attr.tabindex": "tabIndex()", "attr.data-size": "size()", "attr.data-variant": "variant()", "attr.data-busy": "busy() ? \"\" : undefined" } }, ngImport: i0 });
3822
3822
  }
3823
3823
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: ButtonBaseDirective, decorators: [{
3824
3824
  type: Directive,
@@ -3829,6 +3829,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImpo
3829
3829
  // https://www.a11yproject.com/checklist/#use-the-button-element-for-buttons
3830
3830
  type: 'button',
3831
3831
  '[attr.disabled]': 'isDisabled() ? "" : undefined',
3832
+ '[attr.tabindex]': 'tabIndex()',
3832
3833
  // Custom attributes for CSS
3833
3834
  '[attr.data-size]': 'size()',
3834
3835
  '[attr.data-variant]': 'variant()',
@@ -3837,7 +3838,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImpo
3837
3838
  '(click)': 'handleClick($event)'
3838
3839
  }
3839
3840
  }]
3840
- }], propDecorators: { busy: [{ type: i0.Input, args: [{ isSignal: true, alias: "busy", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }], clicked: [{ type: i0.Output, args: ["clicked"] }] } });
3841
+ }], propDecorators: { busy: [{ type: i0.Input, args: [{ isSignal: true, alias: "busy", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }], tabIndex: [{ type: i0.Input, args: [{ isSignal: true, alias: "tabIndex", required: false }] }], clicked: [{ type: i0.Output, args: ["clicked"] }] } });
3841
3842
 
3842
3843
  class GdsButtonComponent extends ButtonBaseDirective {
3843
3844
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: GdsButtonComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
@@ -3877,6 +3878,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImpo
3877
3878
  }, template: "<div\n class=\"\n gds-display-flex\n gds-flex-column\n gds-gap-xs\n \"\n [ngClass]=\"{ 'gds-gap-xs': state() === 'expanded' }\"\n>\n <div class=\"\n gds-align-items-center\n gds-display-flex\n gds-gap-2xs\n \">\n <gds-icon\n [key]=\"iconKey()\"\n class=\"\n gds-icon-size-xs\n gds-text-primary-primary\n \"\n />\n <span class=\"\n gds-text-body-strong\n gds-text-primary-primary\n label\n \"> {{ label() }} </span>\n @if (btnLabel()) {\n <button\n gds-button\n variant=\"primary\"\n (clicked)=\"actionBtnClick.emit()\"\n >\n {{ btnLabel() }}\n </button>\n }\n <button\n gds-icon-button\n size=\"small\"\n class=\"gds-background-none\"\n aria-label=\"Close\"\n (clicked)=\"state.set('hidden')\"\n >\n <gds-icon\n class=\"\n gds-icon-size-3xs\n icon\n \"\n key=\"line-dismiss\"\n />\n </button>\n </div>\n @if (contentExpanded()) {\n <div\n class=\"content\"\n animate.enter=\"gds-expand-vertical\"\n >\n <ng-content />\n </div>\n }\n</div>\n", styles: ["@layer design-system{:host{--banner-radius: var(--gds-borderRadius-sm)}:host[expanded]{--banner-radius: var(--gds-borderRadius-md)}:host{padding:var(--gds-spacing-2xs);width:100%;background:var(--gds-palette-background-chat);border-radius:var(--banner-radius);display:block}:host[hidden]{display:none}:host .label{margin-right:auto}:host .content{overflow:hidden}}\n"] }]
3878
3879
  }], propDecorators: { iconKey: [{ type: i0.Input, args: [{ isSignal: true, alias: "iconKey", required: false }] }], label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: true }] }], btnLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "btnLabel", required: false }] }], state: [{ type: i0.Input, args: [{ isSignal: true, alias: "state", required: false }] }, { type: i0.Output, args: ["stateChange"] }], actionBtnClick: [{ type: i0.Output, args: ["actionBtnClick"] }] } });
3879
3880
 
3881
+ const DEBOUNCE_DURATION = {
3882
+ instant: 0, // prevent duplicate events that arrive at the exact same time
3883
+ userInput: 300, // user interactions (keyboard input, clicking, etc.)
3884
+ userInputLong: 1000, // longer duration for user interactions that may take more time
3885
+ browserEvent: 300, // browser dispatched events (ResizeObserver, OnScroll, etc.)
3886
+ loadingTimeout: 1000, // invoke an action if loading takes longer than this duration
3887
+ pubsubEvent: 300,
3888
+ pubsubEventLong: 1000
3889
+ };
3890
+
3880
3891
  class GdsBreadcrumbsComponent {
3881
3892
  ellipsisTmpl = contentChild('ellipsisTmpl', ...(ngDevMode ? [{ debugName: "ellipsisTmpl" }] : /* istanbul ignore next */ []));
3882
3893
  path = viewChild('path', ...(ngDevMode ? [{ debugName: "path" }] : /* istanbul ignore next */ []));
@@ -3957,6 +3968,45 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImpo
3957
3968
  args: [{ selector: 'gds-breadcrumbs', imports: [NgTemplateOutlet], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n #ellipsis\n class=\"gds-breadcrumbs_ellipsis-container\"\n>\n <ng-container *ngTemplateOutlet=\"ellipsisTmpl() ?? defaultEllipsisTmpl\" />\n</div>\n<div\n #path\n class=\"gds-breadcrumbs_container\"\n>\n <ng-content />\n</div>\n\n<ng-template #defaultEllipsisTmpl> ... </ng-template>\n", styles: ["@layer design-system{:host{width:100%;display:flex}:host .gds-breadcrumbs_container{display:flex;align-items:center;flex:1;min-width:0}:host .gds-breadcrumbs_ellipsis-container{display:flex;align-items:center;max-width:fit-content;max-height:fit-content}}\n"] }]
3958
3969
  }], ctorParameters: () => [], propDecorators: { ellipsisTmpl: [{ type: i0.ContentChild, args: ['ellipsisTmpl', { isSignal: true }] }], path: [{ type: i0.ViewChild, args: ['path', { isSignal: true }] }], ellipsis: [{ type: i0.ViewChild, args: ['ellipsis', { isSignal: true }] }] } });
3959
3970
 
3971
+ const gdsButtonVariants = ['default', 'primary', 'invisible'];
3972
+ const gdsButtonSizes = ['small', 'default', 'medium', 'large'];
3973
+
3974
+ const ngSelectDropdownPositions = ['auto', 'bottom', 'top', 'left', 'right'];
3975
+
3976
+ const gdsDropdownPositionsX = ['auto', 'left', 'right'];
3977
+ const gdsDropdownPositionsY = ['auto', 'top', 'bottom'];
3978
+
3979
+ const CDN_URL = new InjectionToken('CDN_URL', {
3980
+ factory: () => 'https://cdn.cortoaws.com'
3981
+ });
3982
+
3983
+ const gdsUserPromptSecondaryTextVariants = ['default', 'error'];
3984
+
3985
+ // NOTE: Duplicated from libs/utils/src/types/brand.ts — keep in sync.
3986
+ const GDS_BRANDS = {
3987
+ Corto: 'corto',
3988
+ CortoDark: 'corto dark',
3989
+ LawY: 'lawy',
3990
+ Acctivity: 'acctivity',
3991
+ Leap: 'leap',
3992
+ StandardIntegration: 'standardIntegration'
3993
+ };
3994
+ // Back-compat alias: keeps `import { BrandEnum } from '@corto/gds'` working (see GettingStarted.mdx)
3995
+ // without it being a second nominal `enum`. Exported in both the value and type namespace so both
3996
+ // `BrandEnum.Leap` (value) and `brand: BrandEnum` (type) keep working.
3997
+ const BrandEnum = GDS_BRANDS;
3998
+
3999
+ var GdsContextMenuItemVariantEnum;
4000
+ (function (GdsContextMenuItemVariantEnum) {
4001
+ GdsContextMenuItemVariantEnum["Default"] = "default";
4002
+ GdsContextMenuItemVariantEnum["Radio"] = "radio";
4003
+ GdsContextMenuItemVariantEnum["Check"] = "check";
4004
+ GdsContextMenuItemVariantEnum["Indent"] = "indent";
4005
+ GdsContextMenuItemVariantEnum["DoubleIndent"] = "double-indent";
4006
+ GdsContextMenuItemVariantEnum["Heading"] = "heading";
4007
+ GdsContextMenuItemVariantEnum["Switch"] = "switch";
4008
+ })(GdsContextMenuItemVariantEnum || (GdsContextMenuItemVariantEnum = {}));
4009
+
3960
4010
  const chipTypes = [
3961
4011
  'current',
3962
4012
  'in progress',
@@ -4046,20 +4096,99 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImpo
4046
4096
  type: Input
4047
4097
  }] } });
4048
4098
 
4099
+ const formatDate = (value, option) => {
4100
+ if (!value) {
4101
+ return undefined;
4102
+ }
4103
+ const isString = typeof value === 'string';
4104
+ if (isString && isNaN(Date.parse(value))) {
4105
+ return undefined;
4106
+ }
4107
+ const dateValue = isString ? new Date(value) : value;
4108
+ return format(dateValue, option);
4109
+ };
4110
+ const shortDate = (value) => formatDate(value, 'P');
4111
+ const shortDateTime = (value) => formatDate(value, 'Pp');
4112
+ const transformDateFormat = (value) => {
4113
+ let dateFormat = value;
4114
+ if (value.includes('yyyy')) {
4115
+ dateFormat = dateFormat.replace('yyyy', 'yy');
4116
+ }
4117
+ else if (value.includes('yy')) {
4118
+ dateFormat = dateFormat.replace('yy', 'y');
4119
+ }
4120
+ if (value.includes('MMMM')) {
4121
+ dateFormat = dateFormat.replace('MMMM', 'MM');
4122
+ }
4123
+ else if (value.includes('MMM')) {
4124
+ dateFormat = dateFormat.replace('MMM', 'M');
4125
+ }
4126
+ else if (value.includes('MM')) {
4127
+ dateFormat = dateFormat.replace('MM', 'mm');
4128
+ }
4129
+ else if (value.includes('M')) {
4130
+ dateFormat = dateFormat.replace('M', 'm');
4131
+ }
4132
+ return dateFormat;
4133
+ };
4134
+ const transformSecondsToDuration = (seconds) => {
4135
+ const duration = intervalToDuration({ start: 0, end: seconds * 1000 });
4136
+ const zeroPad = (val) => String(val).padStart(2, '0');
4137
+ const hours = (duration.days ?? 0) * 24 + (duration.hours ?? 0);
4138
+ const minutes = duration.minutes ?? 0;
4139
+ const secs = duration.seconds ?? 0;
4140
+ return [hours, minutes, secs].map(zeroPad).join(':');
4141
+ };
4142
+ const transformDurationToSeconds = (duration) => {
4143
+ const [hour, minute, second] = duration.split(':');
4144
+ return +hour * 3600 + +minute * 60 + +second;
4145
+ };
4146
+ // can't just use Date.toISOString() as that takes into account
4147
+ // the time zone, so it was using the incorrect date
4148
+ const formatToISO = (date) => {
4149
+ if (!date) {
4150
+ return undefined;
4151
+ }
4152
+ return format(date, "yyyy-MM-dd'T'HH:mm:ss.sss'Z'");
4153
+ };
4154
+ const parseLocalizedDate = (dateString) => {
4155
+ if (navigator.language === 'en-US') {
4156
+ return new Date(dateString);
4157
+ }
4158
+ // parse dd/MM/yyyy date strings for use with Date
4159
+ const split = dateString.split('/');
4160
+ if (split.length !== 3) {
4161
+ throw new Error(`Invalid date ${dateString}`);
4162
+ }
4163
+ const [day, month, year] = split;
4164
+ return new Date(parseInt(year), parseInt(month) - 1, parseInt(day));
4165
+ };
4166
+
4167
+ const getIconsByPrefix = (prefix) => Object.values(icons).reduce((acc, curr) => {
4168
+ if (curr.name.startsWith(prefix)) {
4169
+ acc.push(curr.name);
4170
+ return acc;
4171
+ }
4172
+ return acc;
4173
+ }, []);
4174
+
4175
+ const GDS_BRAND_VALUES = Object.values(GDS_BRANDS);
4176
+ const isGdsBrand = (value) => value !== null && value !== undefined && GDS_BRAND_VALUES.includes(value);
4177
+
4049
4178
  class OnBrandChanged {
4050
4179
  #observer;
4051
4180
  #cdr = inject(ChangeDetectorRef);
4052
- brand = signal(BrandEnum.Corto, ...(ngDevMode ? [{ debugName: "brand" }] : /* istanbul ignore next */ []));
4053
- brandIsExternal = computed(() => [BrandEnum.StandardIntegration, BrandEnum.Leap].includes(this.brand()), ...(ngDevMode ? [{ debugName: "brandIsExternal" }] : /* istanbul ignore next */ []));
4181
+ brand = signal(GDS_BRANDS.Corto, ...(ngDevMode ? [{ debugName: "brand" }] : /* istanbul ignore next */ []));
4182
+ brandIsExternal = computed(() => [GDS_BRANDS.StandardIntegration, GDS_BRANDS.Leap].includes(this.brand()), ...(ngDevMode ? [{ debugName: "brandIsExternal" }] : /* istanbul ignore next */ []));
4054
4183
  constructor() {
4055
- this.brand.set(document.body.getAttribute('brand'));
4184
+ this.#setBrandFromDocument();
4056
4185
  this.onBrandChanged?.();
4057
4186
  }
4058
4187
  ngOnInit() {
4059
4188
  this.#observer = new MutationObserver((mutations) => {
4060
4189
  mutations.forEach((mutation) => {
4061
4190
  if (mutation.type === 'attributes' && mutation.attributeName === 'brand') {
4062
- this.brand.set(document.body.getAttribute('brand'));
4191
+ this.#setBrandFromDocument();
4063
4192
  this.onBrandChanged?.();
4064
4193
  this.#cdr.markForCheck();
4065
4194
  }
@@ -4067,6 +4196,10 @@ class OnBrandChanged {
4067
4196
  });
4068
4197
  this.#observer.observe(document.body, { attributes: true, attributeFilter: ['brand'] });
4069
4198
  }
4199
+ #setBrandFromDocument() {
4200
+ const documentBrand = document.body.getAttribute('brand');
4201
+ this.brand.set(isGdsBrand(documentBrand) ? documentBrand : GDS_BRANDS.Corto);
4202
+ }
4070
4203
  ngOnDestroy() {
4071
4204
  if (this.#observer) {
4072
4205
  this.#observer.disconnect();
@@ -4386,7 +4519,7 @@ class GdsTooltipComponent extends OnBrandChanged {
4386
4519
  open = input(false, { ...(ngDevMode ? { debugName: "open" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
4387
4520
  maxWidth = input('100vw', ...(ngDevMode ? [{ debugName: "maxWidth" }] : /* istanbul ignore next */ []));
4388
4521
  appendTo = input(this.#document.body, ...(ngDevMode ? [{ debugName: "appendTo" }] : /* istanbul ignore next */ []));
4389
- tooltipVariation = computed(() => (this.brand() === BrandEnum.CortoDark ? 'dark' : 'light'), ...(ngDevMode ? [{ debugName: "tooltipVariation" }] : /* istanbul ignore next */ []));
4522
+ tooltipVariation = computed(() => (this.brand() === GDS_BRANDS.CortoDark ? 'dark' : 'light'), ...(ngDevMode ? [{ debugName: "tooltipVariation" }] : /* istanbul ignore next */ []));
4390
4523
  tippyDirective = viewChild.required(TippyDirective);
4391
4524
  span = viewChild.required('span');
4392
4525
  get isOverflowing() {
@@ -4425,8 +4558,8 @@ class GdsChipComponent extends OnBrandChanged {
4425
4558
  color = input(...(ngDevMode ? [undefined, { debugName: "color" }] : /* istanbul ignore next */ []));
4426
4559
  rounded = input(false, { ...(ngDevMode ? { debugName: "rounded" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
4427
4560
  dismissed = new EventEmitter();
4428
- #backgroundKey = computed(() => (this.brand() === BrandEnum.CortoDark ? 'dark' : 'light'), ...(ngDevMode ? [{ debugName: "#backgroundKey" }] : /* istanbul ignore next */ []));
4429
- #textKey = computed(() => (this.brand() === BrandEnum.CortoDark ? 'light' : 'dark'), ...(ngDevMode ? [{ debugName: "#textKey" }] : /* istanbul ignore next */ []));
4561
+ #backgroundKey = computed(() => (this.brand() === GDS_BRANDS.CortoDark ? 'dark' : 'light'), ...(ngDevMode ? [{ debugName: "#backgroundKey" }] : /* istanbul ignore next */ []));
4562
+ #textKey = computed(() => (this.brand() === GDS_BRANDS.CortoDark ? 'light' : 'dark'), ...(ngDevMode ? [{ debugName: "#textKey" }] : /* istanbul ignore next */ []));
4430
4563
  #chipColor = computed(() => this.#getColor(this.color() ?? this.text()), ...(ngDevMode ? [{ debugName: "#chipColor" }] : /* istanbul ignore next */ []));
4431
4564
  background = computed(() => GdsChipColorsMap[this.#chipColor()][this.#backgroundKey()], ...(ngDevMode ? [{ debugName: "background" }] : /* istanbul ignore next */ []));
4432
4565
  textColor = computed(() => GdsChipColorsMap[this.#chipColor()][this.#textKey()], ...(ngDevMode ? [{ debugName: "textColor" }] : /* istanbul ignore next */ []));
@@ -4631,7 +4764,7 @@ class GdsContextMenuBaseDirective extends OnBrandChanged {
4631
4764
  size = input('default', ...(ngDevMode ? [{ debugName: "size" }] : /* istanbul ignore next */ []));
4632
4765
  selected = signal(false).asReadonly();
4633
4766
  hasChildren = signal(false).asReadonly();
4634
- tooltipVariation = computed(() => (this.brand() === BrandEnum.CortoDark ? 'dark' : 'light'), ...(ngDevMode ? [{ debugName: "tooltipVariation" }] : /* istanbul ignore next */ []));
4767
+ tooltipVariation = computed(() => (this.brand() === GDS_BRANDS.CortoDark ? 'dark' : 'light'), ...(ngDevMode ? [{ debugName: "tooltipVariation" }] : /* istanbul ignore next */ []));
4635
4768
  variantIcon = computed(() => {
4636
4769
  switch (this.variant()) {
4637
4770
  case 'check':
@@ -4908,82 +5041,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImpo
4908
5041
  type: Output
4909
5042
  }] } });
4910
5043
 
4911
- const formatDate = (value, option) => {
4912
- if (!value) {
4913
- return undefined;
4914
- }
4915
- const isString = typeof value === 'string';
4916
- if (isString && isNaN(Date.parse(value))) {
4917
- return undefined;
4918
- }
4919
- const dateValue = isString ? new Date(value) : value;
4920
- return format(dateValue, option);
4921
- };
4922
- const shortDate = (value) => formatDate(value, 'P');
4923
- const shortDateTime = (value) => formatDate(value, 'Pp');
4924
- const transformDateFormat = (value) => {
4925
- let dateFormat = value;
4926
- if (value.includes('yyyy')) {
4927
- dateFormat = dateFormat.replace('yyyy', 'yy');
4928
- }
4929
- else if (value.includes('yy')) {
4930
- dateFormat = dateFormat.replace('yy', 'y');
4931
- }
4932
- if (value.includes('MMMM')) {
4933
- dateFormat = dateFormat.replace('MMMM', 'MM');
4934
- }
4935
- else if (value.includes('MMM')) {
4936
- dateFormat = dateFormat.replace('MMM', 'M');
4937
- }
4938
- else if (value.includes('MM')) {
4939
- dateFormat = dateFormat.replace('MM', 'mm');
4940
- }
4941
- else if (value.includes('M')) {
4942
- dateFormat = dateFormat.replace('M', 'm');
4943
- }
4944
- return dateFormat;
4945
- };
4946
- const transformSecondsToDuration = (seconds) => {
4947
- const duration = intervalToDuration({ start: 0, end: seconds * 1000 });
4948
- const zeroPad = (val) => String(val).padStart(2, '0');
4949
- const hours = (duration.days ?? 0) * 24 + (duration.hours ?? 0);
4950
- const minutes = duration.minutes ?? 0;
4951
- const secs = duration.seconds ?? 0;
4952
- return [hours, minutes, secs].map(zeroPad).join(':');
4953
- };
4954
- const transformDurationToSeconds = (duration) => {
4955
- const [hour, minute, second] = duration.split(':');
4956
- return +hour * 3600 + +minute * 60 + +second;
4957
- };
4958
- // can't just use Date.toISOString() as that takes into account
4959
- // the time zone, so it was using the incorrect date
4960
- const formatToISO = (date) => {
4961
- if (!date) {
4962
- return undefined;
4963
- }
4964
- return format(date, "yyyy-MM-dd'T'HH:mm:ss.sss'Z'");
4965
- };
4966
- const parseLocalizedDate = (dateString) => {
4967
- if (navigator.language === 'en-US') {
4968
- return new Date(dateString);
4969
- }
4970
- // parse dd/MM/yyyy date strings for use with Date
4971
- const split = dateString.split('/');
4972
- if (split.length !== 3) {
4973
- throw new Error(`Invalid date ${dateString}`);
4974
- }
4975
- const [day, month, year] = split;
4976
- return new Date(parseInt(year), parseInt(month) - 1, parseInt(day));
4977
- };
4978
-
4979
- const getIconsByPrefix = (prefix) => Object.values(icons).reduce((acc, curr) => {
4980
- if (curr.name.startsWith(prefix)) {
4981
- acc.push(curr.name);
4982
- return acc;
4983
- }
4984
- return acc;
4985
- }, []);
4986
-
4987
5044
  class GdsDatePipe {
4988
5045
  transform(value, option) {
4989
5046
  if (option === 'short+time') {
@@ -5143,6 +5200,31 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImpo
5143
5200
  type: Output
5144
5201
  }] } });
5145
5202
 
5203
+ // NOTE: Duplicated from libs/utils/src/services/device-detector-signal-service.ts — keep in sync.
5204
+ class DeviceDetectorSignalService extends DeviceDetectorService {
5205
+ resizeObservable$ = fromEvent(window, 'resize');
5206
+ resizeSubscription$;
5207
+ userAgentSignal = signal(navigator.userAgent, ...(ngDevMode ? [{ debugName: "userAgentSignal" }] : /* istanbul ignore next */ []));
5208
+ constructor() {
5209
+ super();
5210
+ this.resizeSubscription$ = this.resizeObservable$
5211
+ .pipe(takeUntilDestroyed())
5212
+ .pipe(debounceTime(DEBOUNCE_DURATION.browserEvent))
5213
+ .subscribe(() => {
5214
+ this.userAgentSignal.set(navigator.userAgent);
5215
+ });
5216
+ }
5217
+ isMobile = computed(() => super.isMobile(this.userAgentSignal()), ...(ngDevMode ? [{ debugName: "isMobile" }] : /* istanbul ignore next */ []));
5218
+ isTablet = computed(() => super.isTablet(this.userAgentSignal()), ...(ngDevMode ? [{ debugName: "isTablet" }] : /* istanbul ignore next */ []));
5219
+ isDesktop = computed(() => super.isDesktop(this.userAgentSignal()), ...(ngDevMode ? [{ debugName: "isDesktop" }] : /* istanbul ignore next */ []));
5220
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: DeviceDetectorSignalService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
5221
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: DeviceDetectorSignalService, providedIn: 'root' });
5222
+ }
5223
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: DeviceDetectorSignalService, decorators: [{
5224
+ type: Injectable,
5225
+ args: [{ providedIn: 'root' }]
5226
+ }], ctorParameters: () => [] });
5227
+
5146
5228
  class GdsDropdownComponent {
5147
5229
  #deviceDetectorSvc = inject(DeviceDetectorSignalService);
5148
5230
  #elementRef = inject(ElementRef);
@@ -5238,20 +5320,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImpo
5238
5320
  }, encapsulation: ViewEncapsulation.None, template: "<div class=\"\n content\n gds-background-white\n gds-display-flex\n gds-gap-2xs\n gds-padding-block-3xs\n\">\n <ng-content />\n</div>\n<div\n class=\"\n cancel\n gds-align-items-center\n gds-background-white\n gds-height-xl\n gds-justify-content-center\n gds-padding-block-3xs\n gds-padding-inline-sm\n gds-text-body-strong\n gds-text-primary\n gds-width-100-parent\n \"\n cdkMenuItem\n>\n <span>{{ 'Core.Button.Cancel' | translate }}</span>\n</div>\n", styles: ["@layer design-system{gds-dropdown .content{overflow:hidden;border-radius:var(--gds-borderRadius-sm);box-shadow:var(--gds-shadow-default);flex-direction:column}gds-dropdown .content[horizontal]{flex-direction:row}gds-dropdown .content{padding-inline:5px}gds-dropdown .cancel{display:none;border-radius:var(--gds-borderRadius-sm);border-bottom-left-radius:var(--gds-borderRadius-2xl);border-bottom-right-radius:var(--gds-borderRadius-2xl);box-shadow:var(--gds-shadow-default)}gds-dropdown[isMobile]{width:100%;margin-block-end:var(--gds-spacing-md);margin-inline:var(--gds-spacing-2xs);display:flex;flex-direction:column;gap:var(--gds-spacing-3xs)}gds-dropdown[isMobile] .content{width:100%;border-top-left-radius:var(--gds-borderRadius-2xl);border-top-right-radius:var(--gds-borderRadius-2xl)}gds-dropdown[isMobile] .cancel{display:flex}.cdk-overlay-container:has(gds-dropdown[isMobile]){display:grid;pointer-events:none;inset:0}.cdk-overlay-container:has(gds-dropdown[isMobile]):before{background-color:var(--gds-pattern-overlay-background-default);inset:0;content:\"\";position:absolute;pointer-events:auto}.cdk-overlay-container:has(gds-dropdown[isMobile]) .cdk-overlay-connected-position-bounding-box{grid-area:1/-1}.cdk-overlay-container:has(gds-dropdown[isMobile]) .cdk-overlay-connected-position-bounding-box:not(:last-of-type){display:none}.cdk-overlay-container:has(gds-dropdown[isMobile]) .cdk-overlay-pane{position:unset!important;transform:unset!important;align-items:center!important}.cdk-overlay-container:has(gds-dropdown[isMobile]):has(gds-dropdown) .cdk-overlay-connected-position-bounding-box{flex-direction:column-reverse!important}}\n"] }]
5239
5321
  }], ctorParameters: () => [], propDecorators: { triggerElement: [{ type: i0.Input, args: [{ isSignal: true, alias: "triggerElement", required: false }] }], horizontal: [{ type: i0.Input, args: [{ isSignal: true, alias: "horizontal", required: false }] }], preventMobileStyling: [{ type: i0.Input, args: [{ isSignal: true, alias: "preventMobileStyling", required: false }] }], allowDefaultTabBehavior: [{ type: i0.Input, args: [{ isSignal: true, alias: "allowDefaultTabBehavior", required: false }] }], items: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => CdkMenuItem), { ...{ descendants: true }, isSignal: true }] }] } });
5240
5322
 
5241
- const gdsButtonVariants = ['default', 'primary', 'invisible'];
5242
- const gdsButtonSizes = ['small', 'default', 'medium', 'large'];
5243
-
5244
- const ngSelectDropdownPositions = ['auto', 'bottom', 'top', 'left', 'right'];
5245
-
5246
- const gdsDropdownPositionsX = ['auto', 'left', 'right'];
5247
- const gdsDropdownPositionsY = ['auto', 'top', 'bottom'];
5248
-
5249
- const CDN_URL = new InjectionToken('CDN_URL', {
5250
- factory: () => 'https://cdn.cortoaws.com'
5251
- });
5252
-
5253
- const gdsUserPromptSecondaryTextVariants = ['default', 'error'];
5254
-
5255
5323
  class GdsEmptyStateComponent extends OnBrandChanged {
5256
5324
  #cdnUrl = inject(CDN_URL);
5257
5325
  variant = input('info-circle', ...(ngDevMode ? [{ debugName: "variant" }] : /* istanbul ignore next */ []));
@@ -5259,9 +5327,9 @@ class GdsEmptyStateComponent extends OnBrandChanged {
5259
5327
  compact = input(false, { ...(ngDevMode ? { debugName: "compact" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
5260
5328
  #supportedBrand = computed(() => {
5261
5329
  switch (this.brand()) {
5262
- case BrandEnum.StandardIntegration:
5263
- case BrandEnum.CortoDark:
5264
- return BrandEnum.Corto;
5330
+ case GDS_BRANDS.StandardIntegration:
5331
+ case GDS_BRANDS.CortoDark:
5332
+ return GDS_BRANDS.Corto;
5265
5333
  default:
5266
5334
  return this.brand();
5267
5335
  }
@@ -5771,7 +5839,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImpo
5771
5839
 
5772
5840
  class GdsButtonRadioOptionComponent extends GdsRadioOptionDirective {
5773
5841
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: GdsButtonRadioOptionComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
5774
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.17", type: GdsButtonRadioOptionComponent, isStandalone: true, selector: "input[gds-button-radio-option]", host: { attributes: { "type": "radio" }, listeners: { "change": "onChange()" }, properties: { "checked": "selected()", "id": "id()", "name": "name()", "disabled": "disabled()", "attr.invalid": "invalid()", "attr.data-label": "label()", "attr.aria-label": "label()" }, classAttribute: "gds-text-caption-strong gds-radius-sm" }, usesInheritance: true, ngImport: i0, template: '', isInline: true, styles: ["@layer design-system{:host{border:var(--gds-borderWidth-md) solid;border-color:var(--gds-palette-border-primary);color:var(--gds-palette-text-primary-primary)}:host:hover,:host:checked{border-color:var(--gds-palette-border-selected);background-color:var(--gds-palette-background-hover)}:host[invalid=true],:host:disabled{border-color:inherit;color:inherit;background-color:inherit}:host[invalid=true]:hover,:host[invalid=true]:checked{background-color:var(--gds-palette-helper-error-default)}:host:focus-visible{outline:var(--gds-borderWidth-lg) solid var(--gds-palette-border-dark);outline-offset:2px}:host:before{display:block;content:attr(data-label);padding:var(--gds-spacing-2xs)}}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
5842
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.17", type: GdsButtonRadioOptionComponent, isStandalone: true, selector: "input[gds-button-radio-option]", host: { attributes: { "type": "radio" }, listeners: { "change": "onChange()" }, properties: { "checked": "selected()", "id": "id()", "name": "name()", "disabled": "disabled()", "attr.invalid": "invalid()", "attr.data-label": "label()", "attr.tabindex": "selected() ? 0 : -1", "attr.aria-label": "label()" }, classAttribute: "gds-text-caption-strong gds-radius-sm" }, usesInheritance: true, ngImport: i0, template: '', isInline: true, styles: ["@layer design-system{:host{border:var(--gds-borderWidth-md) solid;border-color:var(--gds-palette-border-primary);color:var(--gds-palette-text-primary-primary)}:host:hover,:host:checked{border-color:var(--gds-palette-border-selected);background-color:var(--gds-palette-background-hover)}:host[invalid=true],:host:disabled{border-color:inherit;color:inherit;background-color:inherit}:host[invalid=true]:hover,:host[invalid=true]:checked{background-color:var(--gds-palette-helper-error-default)}:host:focus-visible{outline:var(--gds-borderWidth-lg) solid var(--gds-palette-border-dark);outline-offset:2px}:host:before{display:block;content:attr(data-label);padding:var(--gds-spacing-2xs)}}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
5775
5843
  }
5776
5844
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: GdsButtonRadioOptionComponent, decorators: [{
5777
5845
  type: Component,
@@ -5788,6 +5856,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImpo
5788
5856
  '[attr.invalid]': 'invalid()',
5789
5857
  '[attr.data-label]': 'label()',
5790
5858
  // a11y
5859
+ '[attr.tabindex]': 'selected() ? 0 : -1',
5791
5860
  '[attr.aria-label]': 'label()'
5792
5861
  }, styles: ["@layer design-system{:host{border:var(--gds-borderWidth-md) solid;border-color:var(--gds-palette-border-primary);color:var(--gds-palette-text-primary-primary)}:host:hover,:host:checked{border-color:var(--gds-palette-border-selected);background-color:var(--gds-palette-background-hover)}:host[invalid=true],:host:disabled{border-color:inherit;color:inherit;background-color:inherit}:host[invalid=true]:hover,:host[invalid=true]:checked{background-color:var(--gds-palette-helper-error-default)}:host:focus-visible{outline:var(--gds-borderWidth-lg) solid var(--gds-palette-border-dark);outline-offset:2px}:host:before{display:block;content:attr(data-label);padding:var(--gds-spacing-2xs)}}\n"] }]
5793
5862
  }] });
@@ -6205,6 +6274,33 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImpo
6205
6274
  }, template: "<gds-dialog-overlay />\n<dialog\n gds-dialog\n class=\"dialog\"\n type=\"slide-left\"\n>\n <ng-template #layoutTmpl>\n <ng-template #container />\n </ng-template>\n</dialog>\n", styles: ["@layer design-system{:host{position:fixed;inset:0}:host .overlay{opacity:.25}:host .dialog{max-width:unset;width:unset;display:flex;flex-direction:column}}\n"] }]
6206
6275
  }], propDecorators: { container: [{ type: i0.ViewChild, args: ['container', { ...{ read: ViewContainerRef }, isSignal: true }] }] } });
6207
6276
 
6277
+ const computedPrevious = (s) => {
6278
+ let current = null;
6279
+ let previous = untracked(() => s()); // initial value is the current value
6280
+ return computed(() => {
6281
+ current = s();
6282
+ const result = previous;
6283
+ previous = current;
6284
+ return result;
6285
+ });
6286
+ };
6287
+
6288
+ // NOTE: Duplicated from libs/utils/src/types/app.constants.ts (SCREEN_SIZE_BREAKPOINTS only) — keep in sync.
6289
+ // sizes from libs/gds/public/assets/scss/_mixins.scss:65-72
6290
+ const SCREEN_SIZE_BREAKPOINTS = {
6291
+ XS: 0,
6292
+ SM: 600,
6293
+ MD: 900,
6294
+ LG: 1200,
6295
+ XL: 1440
6296
+ };
6297
+
6298
+ // NOTE: Duplicated from libs/utils/src/functions/screen-breakpoints.ts — keep in sync.
6299
+ const getScreenSize$ = (breakpoint) => inject(BreakpointObserver)
6300
+ .observe(`(max-width: ${SCREEN_SIZE_BREAKPOINTS[breakpoint]}px)`)
6301
+ .pipe(map((result) => result.matches));
6302
+ const getScreenSizeSignal = (breakpoint) => toSignal(getScreenSize$(breakpoint), { initialValue: false });
6303
+
6208
6304
  class GdsCollapsibleAsideLayoutComponent {
6209
6305
  #dialogSvc = inject(GdsDialogService);
6210
6306
  collapsed = input(undefined, { ...(ngDevMode ? { debugName: "collapsed" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
@@ -6334,6 +6430,105 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImpo
6334
6430
  }, template: "<ul class=\"\n gds-display-flex\n gds-flex-column\n gds-gap-2xs\n gds-margin-0\n gds-padding-0\n\">\n <ng-content />\n</ul>\n<ul class=\"\n gds-display-flex\n gds-flex-column\n gds-gap-2xs\n gds-margin-0\n gds-margin-block-start-auto\n gds-padding-0\n\">\n <ng-content select=\"[menu-bottom]\" />\n</ul>\n", styles: ["@layer design-system{:host{box-shadow:-3px 0 4px #00000012 inset;border-right:.5px solid var(--gds-palette-border-default)}}\n"] }]
6335
6431
  }] });
6336
6432
 
6433
+ const CDK_MENU_CONNECTED_POSITIONS = [
6434
+ {
6435
+ originX: 'center',
6436
+ originY: 'bottom',
6437
+ overlayX: 'center',
6438
+ overlayY: 'top',
6439
+ offsetY: 4
6440
+ },
6441
+ {
6442
+ originX: 'center',
6443
+ originY: 'top',
6444
+ overlayX: 'center',
6445
+ overlayY: 'bottom',
6446
+ offsetY: -4
6447
+ },
6448
+ {
6449
+ originX: 'end',
6450
+ originY: 'bottom',
6451
+ overlayX: 'end',
6452
+ overlayY: 'top',
6453
+ offsetY: 4
6454
+ },
6455
+ {
6456
+ originX: 'end',
6457
+ originY: 'top',
6458
+ overlayX: 'end',
6459
+ overlayY: 'bottom',
6460
+ offsetY: -4
6461
+ }
6462
+ ];
6463
+ const CDK_MENU_CONNECTED_POSITIONS_TOP = [
6464
+ {
6465
+ originX: 'center',
6466
+ originY: 'top',
6467
+ overlayX: 'center',
6468
+ overlayY: 'bottom',
6469
+ offsetY: -4
6470
+ },
6471
+ {
6472
+ originX: 'center',
6473
+ originY: 'bottom',
6474
+ overlayX: 'center',
6475
+ overlayY: 'top',
6476
+ offsetY: 4
6477
+ },
6478
+ {
6479
+ originX: 'end',
6480
+ originY: 'bottom',
6481
+ overlayX: 'end',
6482
+ overlayY: 'top',
6483
+ offsetY: 4
6484
+ },
6485
+ {
6486
+ originX: 'end',
6487
+ originY: 'top',
6488
+ overlayX: 'end',
6489
+ overlayY: 'bottom',
6490
+ offsetY: -4
6491
+ }
6492
+ ];
6493
+ /** for use when the context menu is close to the right side of the container
6494
+ * so that it doesn't go over the edge, per UX
6495
+ */
6496
+ const CDK_MENU_CONNECTED_POSITIONS_CONTAINER_RIGHT = [
6497
+ {
6498
+ originX: 'end',
6499
+ originY: 'bottom',
6500
+ overlayX: 'end',
6501
+ overlayY: 'top',
6502
+ offsetY: 4
6503
+ },
6504
+ {
6505
+ originX: 'end',
6506
+ originY: 'top',
6507
+ overlayX: 'end',
6508
+ overlayY: 'bottom',
6509
+ offsetY: -4
6510
+ }
6511
+ ];
6512
+ /** for use when the context menu is close to the left side of the container
6513
+ * so that it doesn't go over the edge, per UX
6514
+ */
6515
+ const CDK_MENU_CONNECTED_POSITIONS_CONTAINER_LEFT = [
6516
+ {
6517
+ originX: 'start',
6518
+ originY: 'bottom',
6519
+ overlayX: 'start',
6520
+ overlayY: 'top',
6521
+ offsetY: 4
6522
+ },
6523
+ {
6524
+ originX: 'start',
6525
+ originY: 'top',
6526
+ overlayX: 'start',
6527
+ overlayY: 'bottom',
6528
+ offsetY: -4
6529
+ }
6530
+ ];
6531
+
6337
6532
  class GdsNestedSelectComponent extends GdsSignalFormContainer {
6338
6533
  #injector = inject(Injector);
6339
6534
  #directive = inject(CdkMenuTrigger);
@@ -6712,13 +6907,18 @@ class GdsSearchBarComponent {
6712
6907
  #setDropdownStyling = () => {
6713
6908
  if (!this.dropdownPanelScroll)
6714
6909
  return;
6715
- this.#renderer.setStyle(this.dropdownPanelScroll.nativeElement, 'maxHeight', this.maxHeight());
6716
- this.#renderer.setStyle(this.dropdownPanelScroll.nativeElement, 'minHeight', this.minHeight());
6910
+ const dropdownPanel = this.dropdownPanelScroll.nativeElement;
6911
+ const dropdownPanelParent = this.dropdownPanelScroll.nativeElement.parentElement;
6912
+ if (!dropdownPanelParent)
6913
+ return;
6914
+ this.#renderer.setStyle(dropdownPanel, 'maxHeight', this.maxHeight());
6915
+ this.#renderer.setStyle(dropdownPanel, 'minHeight', this.minHeight());
6916
+ this.#renderer.setStyle(dropdownPanelParent, 'marginTop', '4px');
6717
6917
  // this needs to be last to prevent the dropdown from flashing
6718
- this.#renderer.setStyle(this.dropdownPanelScroll.nativeElement.parentElement, 'visibility', 'visible');
6918
+ this.#renderer.setStyle(dropdownPanelParent, 'visibility', 'visible');
6719
6919
  };
6720
6920
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: GdsSearchBarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
6721
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "21.2.17", type: GdsSearchBarComponent, isStandalone: true, selector: "gds-search-bar", inputs: { placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: true, transformFunction: null }, leadingIcon: { classPropertyName: "leadingIcon", publicName: "leadingIcon", isSignal: true, isRequired: false, transformFunction: null }, bindValue: { classPropertyName: "bindValue", publicName: "bindValue", isSignal: true, isRequired: false, transformFunction: null }, bindLabel: { classPropertyName: "bindLabel", publicName: "bindLabel", isSignal: true, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "ariaLabel", isSignal: true, isRequired: false, transformFunction: null }, isDisabled: { classPropertyName: "isDisabled", publicName: "isDisabled", isSignal: true, isRequired: false, transformFunction: null }, suppressClearOnClose: { classPropertyName: "suppressClearOnClose", publicName: "suppressClearOnClose", isSignal: true, isRequired: false, transformFunction: null }, loading: { classPropertyName: "loading", publicName: "loading", isSignal: true, isRequired: false, transformFunction: null }, isOpenOverride: { classPropertyName: "isOpenOverride", publicName: "isOpen", isSignal: true, isRequired: false, transformFunction: null }, groupBy: { classPropertyName: "groupBy", publicName: "groupBy", isSignal: true, isRequired: false, transformFunction: null }, searchFunction: { classPropertyName: "searchFunction", publicName: "searchFunction", isSignal: true, isRequired: false, transformFunction: null }, showAllItems: { classPropertyName: "showAllItems", publicName: "showAllItems", isSignal: true, isRequired: false, transformFunction: null }, dropdownPosition: { classPropertyName: "dropdownPosition", publicName: "dropdownPosition", isSignal: true, isRequired: false, transformFunction: null }, items: { classPropertyName: "items", publicName: "items", isSignal: true, isRequired: false, transformFunction: null }, maxHeight: { classPropertyName: "maxHeight", publicName: "maxHeight", isSignal: true, isRequired: false, transformFunction: null }, minHeight: { classPropertyName: "minHeight", publicName: "minHeight", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { isDisabled: "isDisabledChange", focused: "focused", blurred: "blurred", dropdownStateChanged: "dropdownStateChanged", searched: "searched", changed: "changed", value: "valueChange" }, host: { listeners: { "keydown": "setMarkedItemIndex()", "window:resize": "close()" }, properties: { "attr.disabled": "isDisabled() ? \"\" : undefined" } }, queries: [{ propertyName: "groupItemTmpl", first: true, predicate: ["groupItemTmpl"], descendants: true, isSignal: true }, { propertyName: "dropdownItemTmpl", first: true, predicate: ["itemTmpl"], descendants: true, isSignal: true }, { propertyName: "emptyTmpl", first: true, predicate: ["emptyTmpl"], descendants: true, isSignal: true }], viewQueries: [{ propertyName: "select", first: true, predicate: ["select"], descendants: true, isSignal: true }], ngImport: i0, template: "<ng-select\n #select\n class=\"\n gds-radius-sm\n gds-search-bar_input\n \"\n [placeholder]=\"!value() ? placeholder() : ''\"\n [isOpen]=\"isOpen()\"\n [disabled]=\"isDisabled()\"\n [ngModel]=\"value()\"\n (ngModelChange)=\"setValue($event)\"\n [items]=\"items()\"\n [bindValue]=\"bindValue()\"\n [bindLabel]=\"bindLabel()\"\n [loading]=\"loading()\"\n [markFirst]=\"false\"\n [groupBy]=\"groupBy()\"\n [dropdownPosition]=\"dropdownPosition()\"\n [searchFn]=\"showAllItems() ? showAllItemsSearchFunction : searchFunction()\"\n [ariaLabel]=\"ariaLabel() ?? 'Core.Accessibility.Searchbar' | translate\"\n (focus)=\"handleFocus($event)\"\n (blur)=\"handleBlur($event)\"\n (click)=\"handleClick($event)\"\n (search)=\"handleSearch($event.term)\"\n (open)=\"handleOpened()\"\n (close)=\"handleClosed()\"\n (change)=\"handleChange($event)\"\n (clear)=\"handleClear()\"\n>\n <ng-template\n ng-optgroup-tmp\n let-item=\"item\"\n let-index=\"index\"\n >\n <div class=\"\n gds-display-flex\n gds-padding-block-3xs\n gds-padding-inline-0\n gds-text-body\n gds-text-primary\n \">\n <ng-container *ngTemplateOutlet=\"groupItemTmpl(); context: { item, marked: markedIndex() === index }\" />\n </div>\n </ng-template>\n <ng-template\n ng-option-tmp\n let-item=\"item\"\n let-index=\"index\"\n >\n <div class=\"\n gds-display-flex\n gds-padding-block-3xs\n gds-padding-inline-0\n gds-text-body\n gds-text-primary\n \">\n <ng-container *ngTemplateOutlet=\"dropdownItemTmpl(); context: { item, marked: markedIndex() === index }\" />\n </div>\n </ng-template>\n <ng-template\n ng-notfound-tmp\n let-searchTerm=\"searchTerm\"\n >\n <ng-container *ngTemplateOutlet=\"emptyTmpl(); context: { searchTerm }\" />\n </ng-template>\n <ng-template ng-loadingtext-tmp>\n <div class=\"\n gds-display-flex\n gds-justify-content-center\n gds-padding-sm\n gds-text-body\n gds-text-primary\n \">\n <gds-spinner />\n </div>\n </ng-template>\n <ng-template ng-loadingspinner-tmp />\n <ng-template ng-clearbutton-tmp>\n <button\n gds-icon-button\n class=\"\n gds-background-none\n gds-min-height-0\n ng-clear-wrapper\n \"\n (click)=\"select.handleClearClick()\"\n (mousedown)=\"onClearMouseDown($event)\"\n (keydown.enter)=\"onKeydownClear($event)\"\n >\n <gds-icon\n class=\"\n gds-icon-primary\n gds-icon-size-3xs\n gds-mobile-icon-size-2xs\n \"\n key=\"line-dismiss\"\n />\n </button>\n </ng-template>\n</ng-select>\n", styles: ["@layer design-system{gds-search-bar{display:flex;max-width:var(--search-bar-max-width, 560px);min-width:230px;width:100%;position:relative;--background-color: var(--gds-palette-background-white);--text-color: var(--gds-palette-text-default-primary);--icon-color: var(--gds-palette-icon-primary);--cursor: text}gds-search-bar[disabled]{--background-color: var(--gds-palette-background-disabled);--text-color: var(--gds-palette-text-default-disabled);--icon-color: var(--gds-palette-icon-disabled);--cursor: not-allowed}gds-search-bar .gds-search-bar_icon{min-width:var(--gds-spacing-sm);color:var(--icon-color)}gds-search-bar .gds-search-bar_input{background-color:var(--background-color);border:.5px solid var(--gds-palette-border-default);color:var(--text-color);box-sizing:border-box;text-overflow:ellipsis;width:100%;font:var(--gds-text-body-shorthand)}:is(body[isMobile=true]) gds-search-bar .gds-search-bar_input{font:var(--gds-text-inputMobile-shorthand)}gds-search-bar .gds-search-bar_input::placeholder{color:var(--gds-palette-text-default-secondary);width:100%}gds-search-bar .gds-search-bar_input:focus-visible{outline:none}gds-search-bar .gds-search-bar_end-content{display:flex;align-items:center;gap:var(--gds-spacing-2xs)}gds-search-bar .gds-search-bar_clear-button{cursor:pointer}gds-search-bar ng-select.ng-select .leading-icon{height:var(--gds-iconSize-2xs);width:var(--gds-iconSize-2xs);color:var(--icon-color);margin-right:var(--gds-size-3xs-rem)}gds-search-bar ng-select.ng-select .ng-select-container{padding:6px var(--gds-spacing-xs);cursor:var(--cursor)}:is(body[isMobile=true]) gds-search-bar ng-select.ng-select .ng-select-container{padding-block:11px}gds-search-bar ng-select.ng-select .ng-select-container .ng-value-container{display:flex;justify-content:var(--search-bar-placeholder-justify, \"center\");align-items:center}gds-search-bar ng-select.ng-select .ng-select-container .ng-value-container:focus-within{justify-content:unset}gds-search-bar ng-select.ng-select .ng-select-container .ng-value-container .ng-input{padding:0 calc(12px + var(--gds-iconSize-xs))}gds-search-bar ng-select.ng-select .ng-select-container .ng-value-container .ng-input>input{vertical-align:baseline;cursor:var(--cursor)}gds-search-bar ng-select.ng-select .ng-select-container .ng-clear-wrapper[gds-icon-button]{--gds-mobile-button-size: var(--gds-iconSize-2xs)}gds-search-bar ng-select.ng-select .ng-dropdown-panel{padding:var(--gds-spacing-3xs) 2px;visibility:hidden}gds-search-bar ng-select.ng-select .ng-dropdown-panel .ng-option{overflow:unset!important}gds-search-bar ng-select.ng-select .ng-dropdown-panel .scroll-host{padding:0 2px}}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: NgSelectModule }, { kind: "component", type: i2.NgSelectComponent, selector: "ng-select", inputs: ["ariaLabelDropdown", "ariaLabel", "markFirst", "placeholder", "fixedPlaceholder", "notFoundText", "typeToSearchText", "preventToggleOnRightClick", "addTagText", "loadingText", "clearAllText", "dropdownPosition", "appendTo", "outsideClickEvent", "loading", "closeOnSelect", "hideSelected", "selectOnTab", "openOnEnter", "maxSelectedItems", "groupBy", "groupValue", "bufferAmount", "virtualScroll", "selectableGroup", "tabFocusOnClearButton", "selectableGroupAsModel", "searchFn", "trackByFn", "clearOnBackspace", "labelForId", "inputAttrs", "tabIndex", "readonly", "searchWhileComposing", "minTermLength", "editableSearchTerm", "ngClass", "typeahead", "multiple", "addTag", "searchable", "clearable", "deselectOnClick", "clearSearchOnAdd", "compareWith", "keyDownFn", "bindLabel", "bindValue", "appearance", "isOpen", "items"], outputs: ["bindLabelChange", "bindValueChange", "appearanceChange", "isOpenChange", "itemsChange", "blur", "focus", "change", "open", "close", "search", "clear", "add", "remove", "scroll", "scrollToEnd"], exportAs: ["ngSelect"] }, { kind: "directive", type: i2.NgOptgroupTemplateDirective, selector: "[ng-optgroup-tmp]" }, { kind: "directive", type: i2.NgOptionTemplateDirective, selector: "[ng-option-tmp]" }, { kind: "directive", type: i2.NgNotFoundTemplateDirective, selector: "[ng-notfound-tmp]" }, { kind: "directive", type: i2.NgLoadingTextTemplateDirective, selector: "[ng-loadingtext-tmp]" }, { kind: "directive", type: i2.NgLoadingSpinnerTemplateDirective, selector: "[ng-loadingspinner-tmp]" }, { kind: "directive", type: i2.NgClearButtonTemplateDirective, selector: "[ng-clearbutton-tmp]" }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: GdsSpinnerComponent, selector: "gds-spinner", inputs: ["trackWidth", "size"] }, { kind: "component", type: GdsIconButtonComponent, selector: "button[gds-icon-button]", inputs: ["tooltipLabel"] }, { kind: "component", type: GdsIconComponent, selector: "gds-icon", inputs: ["key", "width", "height", "color"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
6921
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "21.2.17", type: GdsSearchBarComponent, isStandalone: true, selector: "gds-search-bar", inputs: { placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: true, transformFunction: null }, leadingIcon: { classPropertyName: "leadingIcon", publicName: "leadingIcon", isSignal: true, isRequired: false, transformFunction: null }, bindValue: { classPropertyName: "bindValue", publicName: "bindValue", isSignal: true, isRequired: false, transformFunction: null }, bindLabel: { classPropertyName: "bindLabel", publicName: "bindLabel", isSignal: true, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "ariaLabel", isSignal: true, isRequired: false, transformFunction: null }, isDisabled: { classPropertyName: "isDisabled", publicName: "isDisabled", isSignal: true, isRequired: false, transformFunction: null }, suppressClearOnClose: { classPropertyName: "suppressClearOnClose", publicName: "suppressClearOnClose", isSignal: true, isRequired: false, transformFunction: null }, loading: { classPropertyName: "loading", publicName: "loading", isSignal: true, isRequired: false, transformFunction: null }, isOpenOverride: { classPropertyName: "isOpenOverride", publicName: "isOpen", isSignal: true, isRequired: false, transformFunction: null }, groupBy: { classPropertyName: "groupBy", publicName: "groupBy", isSignal: true, isRequired: false, transformFunction: null }, searchFunction: { classPropertyName: "searchFunction", publicName: "searchFunction", isSignal: true, isRequired: false, transformFunction: null }, showAllItems: { classPropertyName: "showAllItems", publicName: "showAllItems", isSignal: true, isRequired: false, transformFunction: null }, dropdownPosition: { classPropertyName: "dropdownPosition", publicName: "dropdownPosition", isSignal: true, isRequired: false, transformFunction: null }, items: { classPropertyName: "items", publicName: "items", isSignal: true, isRequired: false, transformFunction: null }, maxHeight: { classPropertyName: "maxHeight", publicName: "maxHeight", isSignal: true, isRequired: false, transformFunction: null }, minHeight: { classPropertyName: "minHeight", publicName: "minHeight", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { isDisabled: "isDisabledChange", focused: "focused", blurred: "blurred", dropdownStateChanged: "dropdownStateChanged", searched: "searched", changed: "changed", value: "valueChange" }, host: { listeners: { "keydown": "setMarkedItemIndex()", "window:resize": "close()" }, properties: { "attr.disabled": "isDisabled() ? \"\" : undefined" } }, queries: [{ propertyName: "groupItemTmpl", first: true, predicate: ["groupItemTmpl"], descendants: true, isSignal: true }, { propertyName: "dropdownItemTmpl", first: true, predicate: ["itemTmpl"], descendants: true, isSignal: true }, { propertyName: "emptyTmpl", first: true, predicate: ["emptyTmpl"], descendants: true, isSignal: true }], viewQueries: [{ propertyName: "select", first: true, predicate: ["select"], descendants: true, isSignal: true }], ngImport: i0, template: "<ng-select\n #select\n class=\"\n gds-radius-sm\n gds-search-bar_input\n \"\n [placeholder]=\"!value() ? placeholder() : ''\"\n [isOpen]=\"isOpen()\"\n [disabled]=\"isDisabled()\"\n [ngModel]=\"value()\"\n (ngModelChange)=\"setValue($event)\"\n [items]=\"items()\"\n [bindValue]=\"bindValue()\"\n [bindLabel]=\"bindLabel()\"\n [loading]=\"loading()\"\n [markFirst]=\"false\"\n [groupBy]=\"groupBy()\"\n [dropdownPosition]=\"dropdownPosition()\"\n [searchFn]=\"showAllItems() ? showAllItemsSearchFunction : searchFunction()\"\n [ariaLabel]=\"ariaLabel() ?? 'Core.Accessibility.Searchbar' | translate\"\n (focus)=\"handleFocus($event)\"\n (blur)=\"handleBlur($event)\"\n (click)=\"handleClick($event)\"\n (search)=\"handleSearch($event.term)\"\n (open)=\"handleOpened()\"\n (close)=\"handleClosed()\"\n (change)=\"handleChange($event)\"\n (clear)=\"handleClear()\"\n>\n <ng-template\n ng-optgroup-tmp\n let-item=\"item\"\n let-index=\"index\"\n >\n <div class=\"\n gds-display-flex\n gds-padding-block-3xs\n gds-padding-inline-0\n gds-text-body\n gds-text-primary\n \">\n <ng-container *ngTemplateOutlet=\"groupItemTmpl(); context: { item, marked: markedIndex() === index }\" />\n </div>\n </ng-template>\n <ng-template\n ng-option-tmp\n let-item=\"item\"\n let-index=\"index\"\n >\n <div class=\"\n gds-display-flex\n gds-padding-block-3xs\n gds-padding-inline-0\n gds-text-body\n gds-text-primary\n \">\n <ng-container *ngTemplateOutlet=\"dropdownItemTmpl(); context: { item, marked: markedIndex() === index }\" />\n </div>\n </ng-template>\n <ng-template\n ng-notfound-tmp\n let-searchTerm=\"searchTerm\"\n >\n <ng-container *ngTemplateOutlet=\"emptyTmpl(); context: { searchTerm }\" />\n </ng-template>\n <ng-template ng-loadingtext-tmp>\n <div class=\"\n gds-display-flex\n gds-justify-content-center\n gds-padding-sm\n gds-text-body\n gds-text-primary\n \">\n <gds-spinner />\n </div>\n </ng-template>\n <ng-template ng-loadingspinner-tmp />\n <ng-template ng-clearbutton-tmp>\n <button\n gds-icon-button\n class=\"\n gds-background-none\n gds-min-height-0\n ng-clear-wrapper\n \"\n (click)=\"select.handleClearClick()\"\n (mousedown)=\"onClearMouseDown($event)\"\n (keydown.enter)=\"onKeydownClear($event)\"\n >\n <gds-icon\n class=\"\n gds-icon-primary\n gds-icon-size-3xs\n gds-mobile-icon-size-2xs\n \"\n key=\"line-dismiss\"\n />\n </button>\n </ng-template>\n</ng-select>\n", styles: ["@layer design-system{gds-search-bar{display:flex;max-width:var(--search-bar-max-width, 560px);min-width:230px;width:100%;position:relative;--background-color: var(--gds-palette-background-white);--text-color: var(--gds-palette-text-default-primary);--icon-color: var(--gds-palette-icon-primary);--cursor: text;--border: .5px solid var(--gds-palette-border-default);--border-radius: var(--gds-borderRadius-sm);--padding: 0px}gds-search-bar[disabled]{--background-color: var(--gds-palette-background-disabled);--text-color: var(--gds-palette-text-default-disabled);--icon-color: var(--gds-palette-icon-disabled);--cursor: not-allowed}gds-search-bar .gds-search-bar_icon{min-width:var(--gds-spacing-sm);color:var(--icon-color)}gds-search-bar .gds-search-bar_input{background-color:var(--background-color);border:var(--border);color:var(--text-color);box-sizing:border-box;text-overflow:ellipsis;width:100%;border-radius:var(--border-radius)!important;font:var(--gds-text-body-shorthand)}:is(body[isMobile=true]) gds-search-bar .gds-search-bar_input{font:var(--gds-text-inputMobile-shorthand)}gds-search-bar .gds-search-bar_input::placeholder{color:var(--gds-palette-text-default-secondary);width:100%}gds-search-bar .gds-search-bar_input:focus-visible{outline:none}gds-search-bar .gds-search-bar_end-content{display:flex;align-items:center;gap:var(--gds-spacing-2xs)}gds-search-bar .gds-search-bar_clear-button{cursor:pointer}gds-search-bar ng-select.ng-select .leading-icon{height:var(--gds-iconSize-2xs);width:var(--gds-iconSize-2xs);color:var(--icon-color);margin-right:var(--gds-size-3xs-rem)}gds-search-bar ng-select.ng-select .ng-select-container{padding:6px var(--gds-spacing-xs);cursor:var(--cursor);border-radius:var(--border-radius)}:is(body[isMobile=true]) gds-search-bar ng-select.ng-select .ng-select-container{padding-block:11px}gds-search-bar ng-select.ng-select .ng-select-container .ng-value-container{display:flex;justify-content:var(--search-bar-placeholder-justify, \"center\");align-items:center;padding:var(--padding)}gds-search-bar ng-select.ng-select .ng-select-container .ng-value-container:focus-within{justify-content:unset}gds-search-bar ng-select.ng-select .ng-select-container .ng-value-container .ng-input{padding:0 calc(12px + var(--gds-iconSize-xs))}gds-search-bar ng-select.ng-select .ng-select-container .ng-value-container .ng-input>input{vertical-align:baseline;cursor:var(--cursor)}gds-search-bar ng-select.ng-select .ng-select-container .ng-clear-wrapper[gds-icon-button]{--gds-mobile-button-size: var(--gds-iconSize-2xs)}gds-search-bar ng-select.ng-select .ng-dropdown-panel{padding:var(--gds-spacing-3xs) 2px;visibility:hidden}gds-search-bar ng-select.ng-select .ng-dropdown-panel .ng-option{overflow:unset!important}gds-search-bar ng-select.ng-select .ng-dropdown-panel .scroll-host{padding:0 2px}}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: NgSelectModule }, { kind: "component", type: i2.NgSelectComponent, selector: "ng-select", inputs: ["ariaLabelDropdown", "ariaLabel", "markFirst", "placeholder", "fixedPlaceholder", "notFoundText", "typeToSearchText", "preventToggleOnRightClick", "addTagText", "loadingText", "clearAllText", "dropdownPosition", "appendTo", "outsideClickEvent", "loading", "closeOnSelect", "hideSelected", "selectOnTab", "openOnEnter", "maxSelectedItems", "groupBy", "groupValue", "bufferAmount", "virtualScroll", "selectableGroup", "tabFocusOnClearButton", "selectableGroupAsModel", "searchFn", "trackByFn", "clearOnBackspace", "labelForId", "inputAttrs", "tabIndex", "readonly", "searchWhileComposing", "minTermLength", "editableSearchTerm", "ngClass", "typeahead", "multiple", "addTag", "searchable", "clearable", "deselectOnClick", "clearSearchOnAdd", "compareWith", "keyDownFn", "bindLabel", "bindValue", "appearance", "isOpen", "items"], outputs: ["bindLabelChange", "bindValueChange", "appearanceChange", "isOpenChange", "itemsChange", "blur", "focus", "change", "open", "close", "search", "clear", "add", "remove", "scroll", "scrollToEnd"], exportAs: ["ngSelect"] }, { kind: "directive", type: i2.NgOptgroupTemplateDirective, selector: "[ng-optgroup-tmp]" }, { kind: "directive", type: i2.NgOptionTemplateDirective, selector: "[ng-option-tmp]" }, { kind: "directive", type: i2.NgNotFoundTemplateDirective, selector: "[ng-notfound-tmp]" }, { kind: "directive", type: i2.NgLoadingTextTemplateDirective, selector: "[ng-loadingtext-tmp]" }, { kind: "directive", type: i2.NgLoadingSpinnerTemplateDirective, selector: "[ng-loadingspinner-tmp]" }, { kind: "directive", type: i2.NgClearButtonTemplateDirective, selector: "[ng-clearbutton-tmp]" }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: GdsSpinnerComponent, selector: "gds-spinner", inputs: ["trackWidth", "size"] }, { kind: "component", type: GdsIconButtonComponent, selector: "button[gds-icon-button]", inputs: ["tooltipLabel"] }, { kind: "component", type: GdsIconComponent, selector: "gds-icon", inputs: ["key", "width", "height", "color"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
6722
6922
  }
6723
6923
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: GdsSearchBarComponent, decorators: [{
6724
6924
  type: Component,
@@ -6734,7 +6934,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImpo
6734
6934
  '[attr.disabled]': 'isDisabled() ? "" : undefined',
6735
6935
  '(keydown)': 'setMarkedItemIndex()',
6736
6936
  '(window:resize)': 'close()'
6737
- }, template: "<ng-select\n #select\n class=\"\n gds-radius-sm\n gds-search-bar_input\n \"\n [placeholder]=\"!value() ? placeholder() : ''\"\n [isOpen]=\"isOpen()\"\n [disabled]=\"isDisabled()\"\n [ngModel]=\"value()\"\n (ngModelChange)=\"setValue($event)\"\n [items]=\"items()\"\n [bindValue]=\"bindValue()\"\n [bindLabel]=\"bindLabel()\"\n [loading]=\"loading()\"\n [markFirst]=\"false\"\n [groupBy]=\"groupBy()\"\n [dropdownPosition]=\"dropdownPosition()\"\n [searchFn]=\"showAllItems() ? showAllItemsSearchFunction : searchFunction()\"\n [ariaLabel]=\"ariaLabel() ?? 'Core.Accessibility.Searchbar' | translate\"\n (focus)=\"handleFocus($event)\"\n (blur)=\"handleBlur($event)\"\n (click)=\"handleClick($event)\"\n (search)=\"handleSearch($event.term)\"\n (open)=\"handleOpened()\"\n (close)=\"handleClosed()\"\n (change)=\"handleChange($event)\"\n (clear)=\"handleClear()\"\n>\n <ng-template\n ng-optgroup-tmp\n let-item=\"item\"\n let-index=\"index\"\n >\n <div class=\"\n gds-display-flex\n gds-padding-block-3xs\n gds-padding-inline-0\n gds-text-body\n gds-text-primary\n \">\n <ng-container *ngTemplateOutlet=\"groupItemTmpl(); context: { item, marked: markedIndex() === index }\" />\n </div>\n </ng-template>\n <ng-template\n ng-option-tmp\n let-item=\"item\"\n let-index=\"index\"\n >\n <div class=\"\n gds-display-flex\n gds-padding-block-3xs\n gds-padding-inline-0\n gds-text-body\n gds-text-primary\n \">\n <ng-container *ngTemplateOutlet=\"dropdownItemTmpl(); context: { item, marked: markedIndex() === index }\" />\n </div>\n </ng-template>\n <ng-template\n ng-notfound-tmp\n let-searchTerm=\"searchTerm\"\n >\n <ng-container *ngTemplateOutlet=\"emptyTmpl(); context: { searchTerm }\" />\n </ng-template>\n <ng-template ng-loadingtext-tmp>\n <div class=\"\n gds-display-flex\n gds-justify-content-center\n gds-padding-sm\n gds-text-body\n gds-text-primary\n \">\n <gds-spinner />\n </div>\n </ng-template>\n <ng-template ng-loadingspinner-tmp />\n <ng-template ng-clearbutton-tmp>\n <button\n gds-icon-button\n class=\"\n gds-background-none\n gds-min-height-0\n ng-clear-wrapper\n \"\n (click)=\"select.handleClearClick()\"\n (mousedown)=\"onClearMouseDown($event)\"\n (keydown.enter)=\"onKeydownClear($event)\"\n >\n <gds-icon\n class=\"\n gds-icon-primary\n gds-icon-size-3xs\n gds-mobile-icon-size-2xs\n \"\n key=\"line-dismiss\"\n />\n </button>\n </ng-template>\n</ng-select>\n", styles: ["@layer design-system{gds-search-bar{display:flex;max-width:var(--search-bar-max-width, 560px);min-width:230px;width:100%;position:relative;--background-color: var(--gds-palette-background-white);--text-color: var(--gds-palette-text-default-primary);--icon-color: var(--gds-palette-icon-primary);--cursor: text}gds-search-bar[disabled]{--background-color: var(--gds-palette-background-disabled);--text-color: var(--gds-palette-text-default-disabled);--icon-color: var(--gds-palette-icon-disabled);--cursor: not-allowed}gds-search-bar .gds-search-bar_icon{min-width:var(--gds-spacing-sm);color:var(--icon-color)}gds-search-bar .gds-search-bar_input{background-color:var(--background-color);border:.5px solid var(--gds-palette-border-default);color:var(--text-color);box-sizing:border-box;text-overflow:ellipsis;width:100%;font:var(--gds-text-body-shorthand)}:is(body[isMobile=true]) gds-search-bar .gds-search-bar_input{font:var(--gds-text-inputMobile-shorthand)}gds-search-bar .gds-search-bar_input::placeholder{color:var(--gds-palette-text-default-secondary);width:100%}gds-search-bar .gds-search-bar_input:focus-visible{outline:none}gds-search-bar .gds-search-bar_end-content{display:flex;align-items:center;gap:var(--gds-spacing-2xs)}gds-search-bar .gds-search-bar_clear-button{cursor:pointer}gds-search-bar ng-select.ng-select .leading-icon{height:var(--gds-iconSize-2xs);width:var(--gds-iconSize-2xs);color:var(--icon-color);margin-right:var(--gds-size-3xs-rem)}gds-search-bar ng-select.ng-select .ng-select-container{padding:6px var(--gds-spacing-xs);cursor:var(--cursor)}:is(body[isMobile=true]) gds-search-bar ng-select.ng-select .ng-select-container{padding-block:11px}gds-search-bar ng-select.ng-select .ng-select-container .ng-value-container{display:flex;justify-content:var(--search-bar-placeholder-justify, \"center\");align-items:center}gds-search-bar ng-select.ng-select .ng-select-container .ng-value-container:focus-within{justify-content:unset}gds-search-bar ng-select.ng-select .ng-select-container .ng-value-container .ng-input{padding:0 calc(12px + var(--gds-iconSize-xs))}gds-search-bar ng-select.ng-select .ng-select-container .ng-value-container .ng-input>input{vertical-align:baseline;cursor:var(--cursor)}gds-search-bar ng-select.ng-select .ng-select-container .ng-clear-wrapper[gds-icon-button]{--gds-mobile-button-size: var(--gds-iconSize-2xs)}gds-search-bar ng-select.ng-select .ng-dropdown-panel{padding:var(--gds-spacing-3xs) 2px;visibility:hidden}gds-search-bar ng-select.ng-select .ng-dropdown-panel .ng-option{overflow:unset!important}gds-search-bar ng-select.ng-select .ng-dropdown-panel .scroll-host{padding:0 2px}}\n"] }]
6937
+ }, template: "<ng-select\n #select\n class=\"\n gds-radius-sm\n gds-search-bar_input\n \"\n [placeholder]=\"!value() ? placeholder() : ''\"\n [isOpen]=\"isOpen()\"\n [disabled]=\"isDisabled()\"\n [ngModel]=\"value()\"\n (ngModelChange)=\"setValue($event)\"\n [items]=\"items()\"\n [bindValue]=\"bindValue()\"\n [bindLabel]=\"bindLabel()\"\n [loading]=\"loading()\"\n [markFirst]=\"false\"\n [groupBy]=\"groupBy()\"\n [dropdownPosition]=\"dropdownPosition()\"\n [searchFn]=\"showAllItems() ? showAllItemsSearchFunction : searchFunction()\"\n [ariaLabel]=\"ariaLabel() ?? 'Core.Accessibility.Searchbar' | translate\"\n (focus)=\"handleFocus($event)\"\n (blur)=\"handleBlur($event)\"\n (click)=\"handleClick($event)\"\n (search)=\"handleSearch($event.term)\"\n (open)=\"handleOpened()\"\n (close)=\"handleClosed()\"\n (change)=\"handleChange($event)\"\n (clear)=\"handleClear()\"\n>\n <ng-template\n ng-optgroup-tmp\n let-item=\"item\"\n let-index=\"index\"\n >\n <div class=\"\n gds-display-flex\n gds-padding-block-3xs\n gds-padding-inline-0\n gds-text-body\n gds-text-primary\n \">\n <ng-container *ngTemplateOutlet=\"groupItemTmpl(); context: { item, marked: markedIndex() === index }\" />\n </div>\n </ng-template>\n <ng-template\n ng-option-tmp\n let-item=\"item\"\n let-index=\"index\"\n >\n <div class=\"\n gds-display-flex\n gds-padding-block-3xs\n gds-padding-inline-0\n gds-text-body\n gds-text-primary\n \">\n <ng-container *ngTemplateOutlet=\"dropdownItemTmpl(); context: { item, marked: markedIndex() === index }\" />\n </div>\n </ng-template>\n <ng-template\n ng-notfound-tmp\n let-searchTerm=\"searchTerm\"\n >\n <ng-container *ngTemplateOutlet=\"emptyTmpl(); context: { searchTerm }\" />\n </ng-template>\n <ng-template ng-loadingtext-tmp>\n <div class=\"\n gds-display-flex\n gds-justify-content-center\n gds-padding-sm\n gds-text-body\n gds-text-primary\n \">\n <gds-spinner />\n </div>\n </ng-template>\n <ng-template ng-loadingspinner-tmp />\n <ng-template ng-clearbutton-tmp>\n <button\n gds-icon-button\n class=\"\n gds-background-none\n gds-min-height-0\n ng-clear-wrapper\n \"\n (click)=\"select.handleClearClick()\"\n (mousedown)=\"onClearMouseDown($event)\"\n (keydown.enter)=\"onKeydownClear($event)\"\n >\n <gds-icon\n class=\"\n gds-icon-primary\n gds-icon-size-3xs\n gds-mobile-icon-size-2xs\n \"\n key=\"line-dismiss\"\n />\n </button>\n </ng-template>\n</ng-select>\n", styles: ["@layer design-system{gds-search-bar{display:flex;max-width:var(--search-bar-max-width, 560px);min-width:230px;width:100%;position:relative;--background-color: var(--gds-palette-background-white);--text-color: var(--gds-palette-text-default-primary);--icon-color: var(--gds-palette-icon-primary);--cursor: text;--border: .5px solid var(--gds-palette-border-default);--border-radius: var(--gds-borderRadius-sm);--padding: 0px}gds-search-bar[disabled]{--background-color: var(--gds-palette-background-disabled);--text-color: var(--gds-palette-text-default-disabled);--icon-color: var(--gds-palette-icon-disabled);--cursor: not-allowed}gds-search-bar .gds-search-bar_icon{min-width:var(--gds-spacing-sm);color:var(--icon-color)}gds-search-bar .gds-search-bar_input{background-color:var(--background-color);border:var(--border);color:var(--text-color);box-sizing:border-box;text-overflow:ellipsis;width:100%;border-radius:var(--border-radius)!important;font:var(--gds-text-body-shorthand)}:is(body[isMobile=true]) gds-search-bar .gds-search-bar_input{font:var(--gds-text-inputMobile-shorthand)}gds-search-bar .gds-search-bar_input::placeholder{color:var(--gds-palette-text-default-secondary);width:100%}gds-search-bar .gds-search-bar_input:focus-visible{outline:none}gds-search-bar .gds-search-bar_end-content{display:flex;align-items:center;gap:var(--gds-spacing-2xs)}gds-search-bar .gds-search-bar_clear-button{cursor:pointer}gds-search-bar ng-select.ng-select .leading-icon{height:var(--gds-iconSize-2xs);width:var(--gds-iconSize-2xs);color:var(--icon-color);margin-right:var(--gds-size-3xs-rem)}gds-search-bar ng-select.ng-select .ng-select-container{padding:6px var(--gds-spacing-xs);cursor:var(--cursor);border-radius:var(--border-radius)}:is(body[isMobile=true]) gds-search-bar ng-select.ng-select .ng-select-container{padding-block:11px}gds-search-bar ng-select.ng-select .ng-select-container .ng-value-container{display:flex;justify-content:var(--search-bar-placeholder-justify, \"center\");align-items:center;padding:var(--padding)}gds-search-bar ng-select.ng-select .ng-select-container .ng-value-container:focus-within{justify-content:unset}gds-search-bar ng-select.ng-select .ng-select-container .ng-value-container .ng-input{padding:0 calc(12px + var(--gds-iconSize-xs))}gds-search-bar ng-select.ng-select .ng-select-container .ng-value-container .ng-input>input{vertical-align:baseline;cursor:var(--cursor)}gds-search-bar ng-select.ng-select .ng-select-container .ng-clear-wrapper[gds-icon-button]{--gds-mobile-button-size: var(--gds-iconSize-2xs)}gds-search-bar ng-select.ng-select .ng-dropdown-panel{padding:var(--gds-spacing-3xs) 2px;visibility:hidden}gds-search-bar ng-select.ng-select .ng-dropdown-panel .ng-option{overflow:unset!important}gds-search-bar ng-select.ng-select .ng-dropdown-panel .scroll-host{padding:0 2px}}\n"] }]
6738
6938
  }], propDecorators: { placeholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "placeholder", required: true }] }], leadingIcon: [{ type: i0.Input, args: [{ isSignal: true, alias: "leadingIcon", required: false }] }], bindValue: [{ type: i0.Input, args: [{ isSignal: true, alias: "bindValue", required: false }] }], bindLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "bindLabel", required: false }] }], ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaLabel", required: false }] }], isDisabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "isDisabled", required: false }] }, { type: i0.Output, args: ["isDisabledChange"] }], suppressClearOnClose: [{ type: i0.Input, args: [{ isSignal: true, alias: "suppressClearOnClose", required: false }] }], loading: [{ type: i0.Input, args: [{ isSignal: true, alias: "loading", required: false }] }], isOpenOverride: [{ type: i0.Input, args: [{ isSignal: true, alias: "isOpen", required: false }] }], groupBy: [{ type: i0.Input, args: [{ isSignal: true, alias: "groupBy", required: false }] }], searchFunction: [{ type: i0.Input, args: [{ isSignal: true, alias: "searchFunction", required: false }] }], showAllItems: [{ type: i0.Input, args: [{ isSignal: true, alias: "showAllItems", required: false }] }], dropdownPosition: [{ type: i0.Input, args: [{ isSignal: true, alias: "dropdownPosition", required: false }] }], items: [{ type: i0.Input, args: [{ isSignal: true, alias: "items", required: false }] }], maxHeight: [{ type: i0.Input, args: [{ isSignal: true, alias: "maxHeight", required: false }] }], minHeight: [{ type: i0.Input, args: [{ isSignal: true, alias: "minHeight", required: false }] }], groupItemTmpl: [{ type: i0.ContentChild, args: ['groupItemTmpl', { isSignal: true }] }], dropdownItemTmpl: [{ type: i0.ContentChild, args: ['itemTmpl', { isSignal: true }] }], emptyTmpl: [{ type: i0.ContentChild, args: ['emptyTmpl', { isSignal: true }] }], focused: [{ type: i0.Output, args: ["focused"] }], blurred: [{ type: i0.Output, args: ["blurred"] }], dropdownStateChanged: [{ type: i0.Output, args: ["dropdownStateChanged"] }], searched: [{ type: i0.Output, args: ["searched"] }], changed: [{ type: i0.Output, args: ["changed"] }], select: [{ type: i0.ViewChild, args: ['select', { isSignal: true }] }], value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }, { type: i0.Output, args: ["valueChange"] }] } });
6739
6939
 
6740
6940
  class GdsSidebarItemComponent {
@@ -6809,7 +7009,7 @@ class GdsSplitButtonComponent extends ButtonBaseDirective {
6809
7009
  });
6810
7010
  }
6811
7011
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: GdsSplitButtonComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
6812
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "21.2.17", type: GdsSplitButtonComponent, isStandalone: true, selector: "gds-split-button", inputs: { trailingDropdown: { classPropertyName: "trailingDropdown", publicName: "trailingDropdown", isSignal: true, isRequired: true, transformFunction: null }, trailingIcon: { classPropertyName: "trailingIcon", publicName: "trailingIcon", isSignal: true, isRequired: false, transformFunction: null }, leadingAriaLabel: { classPropertyName: "leadingAriaLabel", publicName: "leadingAriaLabel", isSignal: true, isRequired: false, transformFunction: null }, trailingAriaLabel: { classPropertyName: "trailingAriaLabel", publicName: "trailingAriaLabel", isSignal: true, isRequired: false, transformFunction: null }, menuPosition: { classPropertyName: "menuPosition", publicName: "menuPosition", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "tabindex": "0" }, listeners: { "keydown.enter": "onEnter()", "keydown.arrowDown": "onArrowDown()" }, classAttribute: "gds-display-flex gds-radius-sm" }, viewQueries: [{ propertyName: "leadingBtn", first: true, predicate: ["leadingBtn"], descendants: true, isSignal: true }, { propertyName: "trailingBtn", first: true, predicate: ["trailingBtn"], descendants: true, isSignal: true }, { propertyName: "menuTrigger", first: true, predicate: CdkMenuTrigger, descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<button\n #leadingBtn\n gds-button\n class=\"\n gds-radius-bottom-right-0\n gds-radius-top-right-0\n gds-split-button_button\n gds-split-button_leading\n \"\n tabindex=\"-1\"\n [size]=\"size()\"\n [busy]=\"busy()\"\n [variant]=\"variant()\"\n [disabled]=\"isDisabled()\"\n [attr.aria-label]=\"leadingAriaLabel()\"\n (click)=\"clicked.emit($event)\"\n>\n <ng-content />\n</button>\n\n<button\n #trailingBtn\n gds-button\n class=\"\n gds-radius-bottom-left-0\n gds-radius-top-left-0\n gds-split-button_button\n gds-split-button_trailing\n \"\n tabindex=\"-1\"\n [size]=\"size()\"\n [variant]=\"variant()\"\n [disabled]=\"isDisabled()\"\n [attr.aria-label]=\"trailingAriaLabel()\"\n [cdkMenuTriggerFor]=\"!disabled() ? trailingDropdown() : undefined\"\n [cdkMenuPosition]=\"menuPosition()\"\n (cdkMenuClosed)=\"onMenuClosed()\"\n>\n <gds-icon\n [key]=\"trailingIcon()\"\n class=\"gds-icon-size-2xs\"\n />\n</button>\n", styles: ["@layer design-system{:host{--border-separator-width: .5px;--border-separator: var(--border-separator-width) solid var(--gds-palette-border-default)}:host:focus-visible{outline-width:2px;outline-style:solid;outline-color:var(--gds-button-outlineColor, var(--gds-neutral-700));outline-offset:1px}:is(body[isMobile=true]) :host{--border-separator-width: 1px}:host .gds-split-button_leading{border-right:none;padding-inline:var(--gds-spacing-xs)}:host .gds-split-button_trailing,:host .gds-split-button_trailing:not(:disabled):hover{border-left:var(--border-separator);padding-inline:var(--gds-spacing-3xs)}:is(body[isMobile=true]) :host .gds-split-button_trailing,:is(body[isMobile=true]) :host .gds-split-button_trailing:not(:disabled):hover{padding-inline:10px}}\n"], dependencies: [{ kind: "component", type: GdsIconComponent, selector: "gds-icon", inputs: ["key", "width", "height", "color"] }, { kind: "component", type: GdsButtonComponent, selector: "button[gds-button]" }, { kind: "directive", type: CdkMenuTrigger, selector: "[cdkMenuTriggerFor]", inputs: ["cdkMenuTriggerFor", "cdkMenuPosition", "cdkMenuTriggerData", "cdkMenuTriggerTransformOriginOn"], outputs: ["cdkMenuOpened", "cdkMenuClosed"], exportAs: ["cdkMenuTriggerFor"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
7012
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "21.2.17", type: GdsSplitButtonComponent, isStandalone: true, selector: "gds-split-button", inputs: { trailingDropdown: { classPropertyName: "trailingDropdown", publicName: "trailingDropdown", isSignal: true, isRequired: true, transformFunction: null }, trailingIcon: { classPropertyName: "trailingIcon", publicName: "trailingIcon", isSignal: true, isRequired: false, transformFunction: null }, leadingAriaLabel: { classPropertyName: "leadingAriaLabel", publicName: "leadingAriaLabel", isSignal: true, isRequired: false, transformFunction: null }, trailingAriaLabel: { classPropertyName: "trailingAriaLabel", publicName: "trailingAriaLabel", isSignal: true, isRequired: false, transformFunction: null }, menuPosition: { classPropertyName: "menuPosition", publicName: "menuPosition", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "tabindex": "0" }, listeners: { "keydown.enter": "onEnter()", "keydown.arrowDown": "onArrowDown()" }, classAttribute: "gds-display-flex gds-radius-sm" }, viewQueries: [{ propertyName: "leadingBtn", first: true, predicate: ["leadingBtn"], descendants: true, isSignal: true }, { propertyName: "trailingBtn", first: true, predicate: ["trailingBtn"], descendants: true, isSignal: true }, { propertyName: "menuTrigger", first: true, predicate: CdkMenuTrigger, descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<button\n #leadingBtn\n gds-button\n class=\"\n gds-radius-bottom-right-0\n gds-radius-top-right-0\n gds-split-button_button\n gds-split-button_leading\n \"\n [tabIndex]=\"-1\"\n [size]=\"size()\"\n [busy]=\"busy()\"\n [variant]=\"variant()\"\n [disabled]=\"isDisabled()\"\n [attr.aria-label]=\"leadingAriaLabel()\"\n (click)=\"clicked.emit($event)\"\n>\n <ng-content />\n</button>\n\n<button\n #trailingBtn\n gds-button\n class=\"\n gds-radius-bottom-left-0\n gds-radius-top-left-0\n gds-split-button_button\n gds-split-button_trailing\n \"\n [tabIndex]=\"-1\"\n [size]=\"size()\"\n [variant]=\"variant()\"\n [disabled]=\"isDisabled()\"\n [attr.aria-label]=\"trailingAriaLabel()\"\n [cdkMenuTriggerFor]=\"!disabled() ? trailingDropdown() : undefined\"\n [cdkMenuPosition]=\"menuPosition()\"\n (cdkMenuClosed)=\"onMenuClosed()\"\n>\n <gds-icon\n [key]=\"trailingIcon()\"\n class=\"gds-icon-size-2xs\"\n />\n</button>\n", styles: ["@layer design-system{:host{--border-separator-width: .5px;--border-separator: var(--border-separator-width) solid var(--gds-palette-border-default)}:host:focus-visible{outline-width:2px;outline-style:solid;outline-color:var(--gds-button-outlineColor, var(--gds-neutral-700));outline-offset:1px}:is(body[isMobile=true]) :host{--border-separator-width: 1px}:host .gds-split-button_leading{border-right:none;padding-inline:var(--gds-spacing-xs)}:host .gds-split-button_trailing,:host .gds-split-button_trailing:not(:disabled):hover{border-left:var(--border-separator);padding-inline:var(--gds-spacing-3xs)}:is(body[isMobile=true]) :host .gds-split-button_trailing,:is(body[isMobile=true]) :host .gds-split-button_trailing:not(:disabled):hover{padding-inline:10px}}\n"], dependencies: [{ kind: "component", type: GdsIconComponent, selector: "gds-icon", inputs: ["key", "width", "height", "color"] }, { kind: "component", type: GdsButtonComponent, selector: "button[gds-button]" }, { kind: "directive", type: CdkMenuTrigger, selector: "[cdkMenuTriggerFor]", inputs: ["cdkMenuTriggerFor", "cdkMenuPosition", "cdkMenuTriggerData", "cdkMenuTriggerTransformOriginOn"], outputs: ["cdkMenuOpened", "cdkMenuClosed"], exportAs: ["cdkMenuTriggerFor"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
6813
7013
  }
6814
7014
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: GdsSplitButtonComponent, decorators: [{
6815
7015
  type: Component,
@@ -6818,7 +7018,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImpo
6818
7018
  tabindex: '0',
6819
7019
  '(keydown.enter)': 'onEnter()',
6820
7020
  '(keydown.arrowDown)': 'onArrowDown()'
6821
- }, template: "<button\n #leadingBtn\n gds-button\n class=\"\n gds-radius-bottom-right-0\n gds-radius-top-right-0\n gds-split-button_button\n gds-split-button_leading\n \"\n tabindex=\"-1\"\n [size]=\"size()\"\n [busy]=\"busy()\"\n [variant]=\"variant()\"\n [disabled]=\"isDisabled()\"\n [attr.aria-label]=\"leadingAriaLabel()\"\n (click)=\"clicked.emit($event)\"\n>\n <ng-content />\n</button>\n\n<button\n #trailingBtn\n gds-button\n class=\"\n gds-radius-bottom-left-0\n gds-radius-top-left-0\n gds-split-button_button\n gds-split-button_trailing\n \"\n tabindex=\"-1\"\n [size]=\"size()\"\n [variant]=\"variant()\"\n [disabled]=\"isDisabled()\"\n [attr.aria-label]=\"trailingAriaLabel()\"\n [cdkMenuTriggerFor]=\"!disabled() ? trailingDropdown() : undefined\"\n [cdkMenuPosition]=\"menuPosition()\"\n (cdkMenuClosed)=\"onMenuClosed()\"\n>\n <gds-icon\n [key]=\"trailingIcon()\"\n class=\"gds-icon-size-2xs\"\n />\n</button>\n", styles: ["@layer design-system{:host{--border-separator-width: .5px;--border-separator: var(--border-separator-width) solid var(--gds-palette-border-default)}:host:focus-visible{outline-width:2px;outline-style:solid;outline-color:var(--gds-button-outlineColor, var(--gds-neutral-700));outline-offset:1px}:is(body[isMobile=true]) :host{--border-separator-width: 1px}:host .gds-split-button_leading{border-right:none;padding-inline:var(--gds-spacing-xs)}:host .gds-split-button_trailing,:host .gds-split-button_trailing:not(:disabled):hover{border-left:var(--border-separator);padding-inline:var(--gds-spacing-3xs)}:is(body[isMobile=true]) :host .gds-split-button_trailing,:is(body[isMobile=true]) :host .gds-split-button_trailing:not(:disabled):hover{padding-inline:10px}}\n"] }]
7021
+ }, template: "<button\n #leadingBtn\n gds-button\n class=\"\n gds-radius-bottom-right-0\n gds-radius-top-right-0\n gds-split-button_button\n gds-split-button_leading\n \"\n [tabIndex]=\"-1\"\n [size]=\"size()\"\n [busy]=\"busy()\"\n [variant]=\"variant()\"\n [disabled]=\"isDisabled()\"\n [attr.aria-label]=\"leadingAriaLabel()\"\n (click)=\"clicked.emit($event)\"\n>\n <ng-content />\n</button>\n\n<button\n #trailingBtn\n gds-button\n class=\"\n gds-radius-bottom-left-0\n gds-radius-top-left-0\n gds-split-button_button\n gds-split-button_trailing\n \"\n [tabIndex]=\"-1\"\n [size]=\"size()\"\n [variant]=\"variant()\"\n [disabled]=\"isDisabled()\"\n [attr.aria-label]=\"trailingAriaLabel()\"\n [cdkMenuTriggerFor]=\"!disabled() ? trailingDropdown() : undefined\"\n [cdkMenuPosition]=\"menuPosition()\"\n (cdkMenuClosed)=\"onMenuClosed()\"\n>\n <gds-icon\n [key]=\"trailingIcon()\"\n class=\"gds-icon-size-2xs\"\n />\n</button>\n", styles: ["@layer design-system{:host{--border-separator-width: .5px;--border-separator: var(--border-separator-width) solid var(--gds-palette-border-default)}:host:focus-visible{outline-width:2px;outline-style:solid;outline-color:var(--gds-button-outlineColor, var(--gds-neutral-700));outline-offset:1px}:is(body[isMobile=true]) :host{--border-separator-width: 1px}:host .gds-split-button_leading{border-right:none;padding-inline:var(--gds-spacing-xs)}:host .gds-split-button_trailing,:host .gds-split-button_trailing:not(:disabled):hover{border-left:var(--border-separator);padding-inline:var(--gds-spacing-3xs)}:is(body[isMobile=true]) :host .gds-split-button_trailing,:is(body[isMobile=true]) :host .gds-split-button_trailing:not(:disabled):hover{padding-inline:10px}}\n"] }]
6822
7022
  }], propDecorators: { trailingDropdown: [{ type: i0.Input, args: [{ isSignal: true, alias: "trailingDropdown", required: true }] }], trailingIcon: [{ type: i0.Input, args: [{ isSignal: true, alias: "trailingIcon", required: false }] }], leadingAriaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "leadingAriaLabel", required: false }] }], trailingAriaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "trailingAriaLabel", required: false }] }], menuPosition: [{ type: i0.Input, args: [{ isSignal: true, alias: "menuPosition", required: false }] }], leadingBtn: [{ type: i0.ViewChild, args: ['leadingBtn', { isSignal: true }] }], trailingBtn: [{ type: i0.ViewChild, args: ['trailingBtn', { isSignal: true }] }], menuTrigger: [{ type: i0.ViewChild, args: [i0.forwardRef(() => CdkMenuTrigger), { isSignal: true }] }] } });
6823
7023
 
6824
7024
  class GdsTimelineItemComponent {
@@ -6889,6 +7089,7 @@ class GdsListboxBaseDirective {
6889
7089
  items = signal([], ...(ngDevMode ? [{ debugName: "items" }] : /* istanbul ignore next */ []));
6890
7090
  _keyManager;
6891
7091
  _activeId = signal(null, ...(ngDevMode ? [{ debugName: "_activeId" }] : /* istanbul ignore next */ []));
7092
+ #pointerInteraction = false;
6892
7093
  // Maintain a single key manager instance in case of dynamic item changes.
6893
7094
  #setupKeyManager = effect(() => {
6894
7095
  const items = this.items();
@@ -6915,7 +7116,20 @@ class GdsListboxBaseDirective {
6915
7116
  ngOnDestroy() {
6916
7117
  this._keyManager?.destroy();
6917
7118
  }
7119
+ onPointerDown() {
7120
+ this.#pointerInteraction = true;
7121
+ }
7122
+ onPointerUp() {
7123
+ // Reset after focus handlers from the same gesture have run.
7124
+ queueMicrotask(() => {
7125
+ this.#pointerInteraction = false;
7126
+ });
7127
+ }
6918
7128
  onFocus() {
7129
+ if (this.#pointerInteraction) {
7130
+ // When event comes from pointer interaction, don't focus the first item
7131
+ return;
7132
+ }
6919
7133
  this.tabindex.set(-1);
6920
7134
  this._keyManager?.setFirstItemActive();
6921
7135
  }
@@ -6960,7 +7174,7 @@ class GdsListboxDirective extends GdsListboxBaseDirective {
6960
7174
  super.onKeydown(event);
6961
7175
  };
6962
7176
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: GdsListboxDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });
6963
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.2.0", version: "21.2.17", type: GdsListboxDirective, isStandalone: true, selector: "[gdsListbox]", inputs: { onNavigatePastLastOption: { classPropertyName: "onNavigatePastLastOption", publicName: "onNavigatePastLastOption", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "role": "listbox" }, listeners: { "keydown": "onKeydown($event)", "focus": "onFocus()" }, properties: { "attr.tabindex": "tabindex()" } }, queries: [{ propertyName: "options", predicate: GdsListboxOption, descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0 });
7177
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.2.0", version: "21.2.17", type: GdsListboxDirective, isStandalone: true, selector: "[gdsListbox]", inputs: { onNavigatePastLastOption: { classPropertyName: "onNavigatePastLastOption", publicName: "onNavigatePastLastOption", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "role": "listbox" }, listeners: { "keydown": "onKeydown($event)", "focus": "onFocus()", "pointerdown": "onPointerDown()", "pointerup": "onPointerUp()", "pointercancel": "onPointerUp()" }, properties: { "attr.tabindex": "tabindex()" } }, queries: [{ propertyName: "options", predicate: GdsListboxOption, descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0 });
6964
7178
  }
6965
7179
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: GdsListboxDirective, decorators: [{
6966
7180
  type: Directive,
@@ -6970,7 +7184,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImpo
6970
7184
  role: 'listbox',
6971
7185
  '[attr.tabindex]': 'tabindex()',
6972
7186
  '(keydown)': 'onKeydown($event)',
6973
- '(focus)': 'onFocus()'
7187
+ '(focus)': 'onFocus()',
7188
+ '(pointerdown)': 'onPointerDown()',
7189
+ '(pointerup)': 'onPointerUp()',
7190
+ '(pointercancel)': 'onPointerUp()'
6974
7191
  }
6975
7192
  }]
6976
7193
  }], propDecorators: { onNavigatePastLastOption: [{ type: i0.Input, args: [{ isSignal: true, alias: "onNavigatePastLastOption", required: false }] }], options: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => GdsListboxOption), { ...{ descendants: true }, isSignal: true }] }] } });
@@ -7196,7 +7413,7 @@ class GdsVirtualScrollListboxDirective extends GdsListboxBaseDirective {
7196
7413
  return Number.isFinite(index) ? index : null;
7197
7414
  };
7198
7415
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: GdsVirtualScrollListboxDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });
7199
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.2.0", version: "21.2.17", type: GdsVirtualScrollListboxDirective, isStandalone: true, selector: "[gdsListboxVirtualScroll]", inputs: { total: { classPropertyName: "total", publicName: "total", isSignal: true, isRequired: true, transformFunction: null }, optionIndexAttribute: { classPropertyName: "optionIndexAttribute", publicName: "optionIndexAttribute", isSignal: true, isRequired: false, transformFunction: null }, scrollBehavior: { classPropertyName: "scrollBehavior", publicName: "scrollBehavior", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { currentFocusedIndex: "currentFocusedIndex" }, host: { attributes: { "role": "listbox" }, listeners: { "keydown": "onKeydown($event)", "focus": "onFocus()", "focusin": "onFocusIn($event)" }, properties: { "attr.tabindex": "tabindex()" } }, queries: [{ propertyName: "options", predicate: GdsListboxOption, descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0 });
7416
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.2.0", version: "21.2.17", type: GdsVirtualScrollListboxDirective, isStandalone: true, selector: "[gdsListboxVirtualScroll]", inputs: { total: { classPropertyName: "total", publicName: "total", isSignal: true, isRequired: true, transformFunction: null }, optionIndexAttribute: { classPropertyName: "optionIndexAttribute", publicName: "optionIndexAttribute", isSignal: true, isRequired: false, transformFunction: null }, scrollBehavior: { classPropertyName: "scrollBehavior", publicName: "scrollBehavior", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { currentFocusedIndex: "currentFocusedIndex" }, host: { attributes: { "role": "listbox" }, listeners: { "keydown": "onKeydown($event)", "focus": "onFocus()", "focusin": "onFocusIn($event)", "pointerdown": "onPointerDown()", "pointerup": "onPointerUp()", "pointercancel": "onPointerUp()" }, properties: { "attr.tabindex": "tabindex()" } }, queries: [{ propertyName: "options", predicate: GdsListboxOption, descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0 });
7200
7417
  }
7201
7418
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: GdsVirtualScrollListboxDirective, decorators: [{
7202
7419
  type: Directive,
@@ -7207,7 +7424,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImpo
7207
7424
  '[attr.tabindex]': 'tabindex()',
7208
7425
  '(keydown)': 'onKeydown($event)',
7209
7426
  '(focus)': 'onFocus()',
7210
- '(focusin)': 'onFocusIn($event)'
7427
+ '(focusin)': 'onFocusIn($event)',
7428
+ '(pointerdown)': 'onPointerDown()',
7429
+ '(pointerup)': 'onPointerUp()',
7430
+ '(pointercancel)': 'onPointerUp()'
7211
7431
  }
7212
7432
  }]
7213
7433
  }], propDecorators: { options: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => GdsListboxOption), { ...{ descendants: true }, isSignal: true }] }], total: [{ type: i0.Input, args: [{ isSignal: true, alias: "total", required: true }] }], optionIndexAttribute: [{ type: i0.Input, args: [{ isSignal: true, alias: "optionIndexAttribute", required: false }] }], scrollBehavior: [{ type: i0.Input, args: [{ isSignal: true, alias: "scrollBehavior", required: false }] }], currentFocusedIndex: [{ type: i0.Output, args: ["currentFocusedIndex"] }] } });
@@ -7846,9 +8066,61 @@ const provideToaster = (customOptions = {}) => {
7846
8066
  return provideToastr({ ...defaultOptions, ...customOptions });
7847
8067
  };
7848
8068
 
8069
+ const OPERATING_SYSTEM = {
8070
+ windows: 'windows',
8071
+ mac: 'mac',
8072
+ other: 'other'
8073
+ };
8074
+ const BROWSER = {
8075
+ chrome: 'chrome',
8076
+ firefox: 'firefox',
8077
+ safari: 'safari',
8078
+ edge: 'edge',
8079
+ opera: 'opera',
8080
+ // applewebkit is utilized by Mac Word add-ins
8081
+ applewebkit: 'applewebkit',
8082
+ other: 'other'
8083
+ };
8084
+
8085
+ // NOTE: Duplicated from libs/utils/src/functions/navigator-detection.functions.ts — keep in sync.
8086
+ const getOperatingSystem = () => {
8087
+ const userAgent = navigator.userAgent;
8088
+ if (userAgent.includes('Win')) {
8089
+ return OPERATING_SYSTEM.windows;
8090
+ }
8091
+ else if (userAgent.includes('Mac')) {
8092
+ return OPERATING_SYSTEM.mac;
8093
+ }
8094
+ return OPERATING_SYSTEM.other;
8095
+ };
8096
+ const getBrowser = () => {
8097
+ const userAgent = navigator.userAgent;
8098
+ // The order of these are essential because certain browsers such as Edge use the
8099
+ // chrome browser engine and include both "Chrome" and "Edg/" in the userAgent.
8100
+ if (userAgent.includes('Edg/')) {
8101
+ return BROWSER.edge;
8102
+ }
8103
+ else if (userAgent.includes('Opera') || userAgent.includes('OPR')) {
8104
+ return BROWSER.opera;
8105
+ }
8106
+ else if (userAgent.includes('Chrome')) {
8107
+ return BROWSER.chrome;
8108
+ }
8109
+ else if (userAgent.includes('Firefox')) {
8110
+ return BROWSER.firefox;
8111
+ }
8112
+ else if (userAgent.includes('Safari')) {
8113
+ return BROWSER.safari;
8114
+ }
8115
+ else if (userAgent.includes('AppleWebKit')) {
8116
+ return BROWSER.applewebkit;
8117
+ }
8118
+ return BROWSER.other;
8119
+ };
8120
+
7849
8121
  class GdsModule {
7850
8122
  static forRoot({ brand, env }) {
7851
- document.body.setAttribute('brand', `${brand ?? BrandEnum.Corto}`);
8123
+ document.body.setAttribute('brand', brand ?? GDS_BRANDS.Corto);
7852
8124
  document.body.setAttribute('operating-system', getOperatingSystem());
7853
8125
  document.body.setAttribute('browser', getBrowser());
7854
8126
  let cdnUrl = 'https://cdn.cortoaws.com';
@@ -7952,5 +8224,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImpo
7952
8224
  * Generated bundle index. Do not edit.
7953
8225
  */
7954
8226
 
7955
- export { CDN_URL, CONTACT_INITIALS_REGEX, GDS_EMPTY_STATE_VARIANTS, GdsAccountingService, GdsAutoRoundCurrencyDirective, GdsAutofocusDirective, GdsAvatarComponent, GdsBadgeColorType, GdsBadgeComponent, GdsBadgeVariantType, GdsBannerComponent, GdsBreadcrumbsComponent, GdsBuildOptionConfigPipe, GdsButtonComponent, GdsButtonRadioOptionComponent, GdsChatExpandableListComponent, GdsChatPromptComponent, GdsChatSuggestionComponent, GdsCheckboxComponent, GdsChipColorsMap, GdsChipComponent, GdsCollapsibleAsideLayoutComponent, GdsCompositeOptionPrimaryDirective, GdsCompositeOptionSecondaryDirective, GdsContextMenuHeadingComponent, GdsContextMenuItemComponent, GdsContextMenuSwitchComponent, GdsDateInputComponent, GdsDatePipe, GdsDialogBaseDirective, GdsDialogComponent, GdsDialogOverlayComponent, GdsDialogService, GdsDoctypeService, GdsDoctypeToIconPipe, GdsDocumentItemComponent, GdsDropdownComponent, GdsEmptyStateComponent, GdsFeatureBlockComponent, GdsFeedbackButtonComponent, GdsFileUploadComponent, GdsFilenameToIconPipe, GdsFilterChipComponent, GdsFocusOnInitDirective, GdsFormControlComponent, GdsHistoryComponent, GdsIconButtonComponent, GdsIconComponent, GdsIconDoctypeComponent, GdsIconService, GdsInputAutocompleteDirective, GdsItemDisplayComponent, GdsKeyboardNavigationHost, GdsKeyboardNavigationItem, GdsListboxCompositeOptionDirective, GdsListboxDirective, GdsListboxOptionDirective, GdsLoadingCarouselComponent, GdsMapArrayToRadioOptionsPipe, GdsMathFloorPipe, GdsMathMaxPipe, GdsMathMinPipe, GdsMessageInputComponent, GdsModule, GdsNativeInputDirective, GdsNativeTextareaDirective, GdsNavAsideComponent, GdsNavAsideItemComponent, GdsNestedSelectComponent, GdsProgressBarComponent, GdsRadioComponent, GdsRadioOptionDirective, GdsReferenceComponent, GdsReferenceLinkComponent, GdsRegexFilterDirective, GdsResizedDirective, GdsResizedEvent, GdsResponseComponent, GdsScrollOutOfViewDirective, GdsScrollOutOfViewScrollStatus, GdsScrollOutOfViewService, GdsScrollToBottomDirective, GdsScrollToFirstInvalidDirective, GdsSearchBarComponent, GdsSelectComponent, GdsSelectOnFocusDirective, GdsSidebarItemBodyComponent, GdsSidebarItemComponent, GdsSkeletonLoadingComponent, GdsSliderComponent, GdsSpinnerComponent, GdsSplitButtonComponent, GdsSvgIconPipe, GdsSwitchComponent, GdsTextInputComponent, GdsTextareaComponent, GdsTimelineItemComponent, GdsToastComponent, GdsTooltipComponent, GdsTreeViewListItemComponent, GdsUserPromptService, GdsVirtualScrollListboxDirective, MapperPipe, OnBrandChanged, RoundMode, TreeViewListItemDirective, chipColor, chipSize, chipTypes, chipWidth, formatToISO, gdsButtonSizes, gdsButtonVariants, gdsDropdownPositionsX, gdsDropdownPositionsY, gdsSelectWidths, gdsServices, gdsUserPromptSecondaryTextVariants, getIconsByPrefix, ngSelectDropdownPositions, parseLocalizedDate, provideToaster, shortDate, shortDateTime, transformDateFormat, transformDurationToSeconds, transformSecondsToDuration };
8227
+ export { BrandEnum, CDN_URL, CONTACT_INITIALS_REGEX, GDS_BRANDS, GDS_EMPTY_STATE_VARIANTS, GdsAccountingService, GdsAutoRoundCurrencyDirective, GdsAutofocusDirective, GdsAvatarComponent, GdsBadgeColorType, GdsBadgeComponent, GdsBadgeVariantType, GdsBannerComponent, GdsBreadcrumbsComponent, GdsBuildOptionConfigPipe, GdsButtonComponent, GdsButtonRadioOptionComponent, GdsChatExpandableListComponent, GdsChatPromptComponent, GdsChatSuggestionComponent, GdsCheckboxComponent, GdsChipColorsMap, GdsChipComponent, GdsCollapsibleAsideLayoutComponent, GdsCompositeOptionPrimaryDirective, GdsCompositeOptionSecondaryDirective, GdsContextMenuHeadingComponent, GdsContextMenuItemComponent, GdsContextMenuItemVariantEnum, GdsContextMenuSwitchComponent, GdsDateInputComponent, GdsDatePipe, GdsDialogBaseDirective, GdsDialogComponent, GdsDialogOverlayComponent, GdsDialogService, GdsDoctypeService, GdsDoctypeToIconPipe, GdsDocumentItemComponent, GdsDropdownComponent, GdsEmptyStateComponent, GdsFeatureBlockComponent, GdsFeedbackButtonComponent, GdsFileUploadComponent, GdsFilenameToIconPipe, GdsFilterChipComponent, GdsFocusOnInitDirective, GdsFormControlComponent, GdsHistoryComponent, GdsIconButtonComponent, GdsIconComponent, GdsIconDoctypeComponent, GdsIconService, GdsInputAutocompleteDirective, GdsItemDisplayComponent, GdsKeyboardNavigationHost, GdsKeyboardNavigationItem, GdsListboxCompositeOptionDirective, GdsListboxDirective, GdsListboxOptionDirective, GdsLoadingCarouselComponent, GdsMapArrayToRadioOptionsPipe, GdsMathFloorPipe, GdsMathMaxPipe, GdsMathMinPipe, GdsMessageInputComponent, GdsModule, GdsNativeInputDirective, GdsNativeTextareaDirective, GdsNavAsideComponent, GdsNavAsideItemComponent, GdsNestedSelectComponent, GdsProgressBarComponent, GdsRadioComponent, GdsRadioOptionDirective, GdsReferenceComponent, GdsReferenceLinkComponent, GdsRegexFilterDirective, GdsResizedDirective, GdsResizedEvent, GdsResponseComponent, GdsScrollOutOfViewDirective, GdsScrollOutOfViewScrollStatus, GdsScrollOutOfViewService, GdsScrollToBottomDirective, GdsScrollToFirstInvalidDirective, GdsSearchBarComponent, GdsSelectComponent, GdsSelectOnFocusDirective, GdsSidebarItemBodyComponent, GdsSidebarItemComponent, GdsSkeletonLoadingComponent, GdsSliderComponent, GdsSpinnerComponent, GdsSplitButtonComponent, GdsSvgIconPipe, GdsSwitchComponent, GdsTextInputComponent, GdsTextareaComponent, GdsTimelineItemComponent, GdsToastComponent, GdsTooltipComponent, GdsTreeViewListItemComponent, GdsUserPromptService, GdsVirtualScrollListboxDirective, MapperPipe, OnBrandChanged, RoundMode, TreeViewListItemDirective, chipColor, chipSize, chipTypes, chipWidth, formatToISO, gdsButtonSizes, gdsButtonVariants, gdsDropdownPositionsX, gdsDropdownPositionsY, gdsSelectWidths, gdsServices, gdsUserPromptSecondaryTextVariants, getIconsByPrefix, isGdsBrand, ngSelectDropdownPositions, parseLocalizedDate, provideToaster, shortDate, shortDateTime, transformDateFormat, transformDurationToSeconds, transformSecondsToDuration };
7956
8228
  //# sourceMappingURL=corto-ai-gds-angular.mjs.map