@ship-ui/core 0.18.12 → 0.19.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,9 +1,9 @@
1
1
  import * as i0 from '@angular/core';
2
- import { InjectionToken, inject, computed, ElementRef, Renderer2, input, ChangeDetectionStrategy, Component, viewChild, effect, HostListener, NgModule, signal, Injectable, DOCUMENT, model, output, ApplicationRef, OutputEmitterRef, TemplateRef, createComponent, isSignal, DestroyRef, PLATFORM_ID, ViewChild, Directive, untracked, contentChild, contentChildren, afterNextRender, Injector, HostBinding, runInInjectionContext, ChangeDetectorRef, viewChildren, ViewContainerRef, EnvironmentInjector } from '@angular/core';
2
+ import { InjectionToken, inject, computed, ElementRef, Renderer2, input, ChangeDetectionStrategy, Component, viewChild, effect, HostListener, NgModule, signal, Injectable, DOCUMENT, model, output, ApplicationRef, OutputEmitterRef, TemplateRef, createComponent, isSignal, DestroyRef, PLATFORM_ID, ViewChild, booleanAttribute, Directive, untracked, contentChild, contentChildren, afterNextRender, Injector, HostBinding, runInInjectionContext, ChangeDetectorRef, viewChildren, ViewContainerRef, EnvironmentInjector } from '@angular/core';
3
3
  import { isPlatformBrowser, JsonPipe, DatePipe, isPlatformServer, NgTemplateOutlet } from '@angular/common';
4
4
  import { ShipButton as ShipButton$1 } from 'ship-ui';
5
5
  import { NgModel } from '@angular/forms';
6
- import { SIGNAL } from '@angular/core/primitives/signals';
6
+ import { isObservable, firstValueFrom } from 'rxjs';
7
7
 
8
8
  const defaultThemeColors = {
9
9
  primary: 'hsl(217, 91%, 60%)',
@@ -100,12 +100,12 @@ class ShipIcon {
100
100
  this.#renderer.addClass(this.#selfRef.nativeElement, potentialType);
101
101
  }
102
102
  }
103
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: ShipIcon, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
104
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.5", type: ShipIcon, isStandalone: true, selector: "sh-icon", inputs: { color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "hostClasses()" } }, ngImport: i0, template: `
103
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ShipIcon, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
104
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.6", type: ShipIcon, isStandalone: true, selector: "sh-icon", inputs: { color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "hostClasses()" } }, ngImport: i0, template: `
105
105
  <ng-content />
106
106
  `, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
107
107
  }
108
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: ShipIcon, decorators: [{
108
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ShipIcon, decorators: [{
109
109
  type: Component,
110
110
  args: [{
111
111
  selector: 'sh-icon',
@@ -138,8 +138,8 @@ class ShipAlert {
138
138
  this.alertService()?.removeAlert(this.id());
139
139
  }
140
140
  }
141
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: ShipAlert, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
142
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.5", type: ShipAlert, isStandalone: true, selector: "sh-alert", inputs: { color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, alertService: { classPropertyName: "alertService", publicName: "alertService", isSignal: true, isRequired: false, transformFunction: null }, id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "hostClasses()" }, classAttribute: "sh-sheet" }, ngImport: i0, template: `
141
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ShipAlert, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
142
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.6", type: ShipAlert, isStandalone: true, selector: "sh-alert", inputs: { color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, alertService: { classPropertyName: "alertService", publicName: "alertService", isSignal: true, isRequired: false, transformFunction: null }, id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "hostClasses()" }, classAttribute: "sh-sheet" }, ngImport: i0, template: `
143
143
  <div class="alert">
144
144
  <div #ref class="icon" [style.display]="!ref.children.length ? 'none' : 'block'">
145
145
  <ng-content select="[icon]" />
@@ -185,7 +185,7 @@ class ShipAlert {
185
185
  </div>
186
186
  `, isInline: true, dependencies: [{ kind: "component", type: ShipIcon, selector: "sh-icon", inputs: ["color", "size"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
187
187
  }
188
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: ShipAlert, decorators: [{
188
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ShipAlert, decorators: [{
189
189
  type: Component,
190
190
  args: [{
191
191
  selector: 'sh-alert',
@@ -265,7 +265,7 @@ class ShipAlertContainer {
265
265
  }
266
266
  #e;
267
267
  #scrollToBottom() {
268
- if (this.scroller() && this.scroller().nativeElement) {
268
+ if (this.scroller() && this.scroller().nativeElement && typeof this.scroller().nativeElement.scrollTo === 'function') {
269
269
  this.scroller().nativeElement.scrollTo(0, this.scroller().nativeElement.scrollHeight);
270
270
  }
271
271
  }
@@ -302,10 +302,10 @@ class ShipAlertContainer {
302
302
  ? this.alertService().alertHistory().length - 1 * 40 + 'ms'
303
303
  : (this.numberOfOpenAlerts() - i) * 40 + 'ms';
304
304
  }
305
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: ShipAlertContainer, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
306
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.5", type: ShipAlertContainer, isStandalone: true, selector: "ship-alert-container", inputs: { inline: { classPropertyName: "inline", publicName: "inline", isSignal: true, isRequired: false, transformFunction: null }, alertService: { classPropertyName: "alertService", publicName: "alertService", isSignal: true, isRequired: true, transformFunction: null } }, host: { listeners: { "mouseover": "onMouseOver()", "mouseout": "onMouseOut()" } }, viewQueries: [{ propertyName: "alerts", first: true, predicate: ["alerts"], descendants: true, isSignal: true }, { propertyName: "scroller", first: true, predicate: ["scroller"], descendants: true, isSignal: true }], ngImport: i0, template: "<div class=\"scroller\" #scroller>\n <div class=\"container\">\n @for (alert of this.alertService().alertHistory(); track $index) {\n <sh-alert\n #alerts\n [class]=\"alert.type\"\n [id]=\"alert.id\"\n [alertService]=\"alertService()\"\n [style.transition-delay]=\"transitionDelay($index, true)\"\n [class.animate-in]=\"alert.animateIn\"\n [class.animate-out]=\"alert.animateOut\"\n [class.is-hidden]=\"this.alertService().alertHistoryIsHidden() && !alert.isOpen\">\n <div title>{{ alert.title }}</div>\n\n @if (alert.content) {\n <div content>\n {{ alert.content }}\n </div>\n }\n </sh-alert>\n }\n </div>\n</div>\n<div\n class=\"tray\"\n [class.tray-is-hidden]=\"!this.alertService().alertHistoryIsHidden()\"\n (mouseover)=\"this.onMouseOver()\"\n (mouseout)=\"this.onMouseOut()\">\n <sh-icon class=\"small\">info</sh-icon>\n</div>\n", dependencies: [{ kind: "component", type: ShipAlert, selector: "sh-alert", inputs: ["color", "variant", "alertService", "id"] }, { kind: "component", type: ShipIcon, selector: "sh-icon", inputs: ["color", "size"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
305
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ShipAlertContainer, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
306
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.6", type: ShipAlertContainer, isStandalone: true, selector: "ship-alert-container", inputs: { inline: { classPropertyName: "inline", publicName: "inline", isSignal: true, isRequired: false, transformFunction: null }, alertService: { classPropertyName: "alertService", publicName: "alertService", isSignal: true, isRequired: true, transformFunction: null } }, host: { listeners: { "mouseover": "onMouseOver()", "mouseout": "onMouseOut()" } }, viewQueries: [{ propertyName: "alerts", first: true, predicate: ["alerts"], descendants: true, isSignal: true }, { propertyName: "scroller", first: true, predicate: ["scroller"], descendants: true, isSignal: true }], ngImport: i0, template: "<div class=\"scroller\" #scroller>\n <div class=\"container\">\n @for (alert of this.alertService().alertHistory(); track $index) {\n <sh-alert\n #alerts\n [class]=\"alert.type\"\n [id]=\"alert.id\"\n [alertService]=\"alertService()\"\n [style.transition-delay]=\"transitionDelay($index, true)\"\n [class.animate-in]=\"alert.animateIn\"\n [class.animate-out]=\"alert.animateOut\"\n [class.is-hidden]=\"this.alertService().alertHistoryIsHidden() && !alert.isOpen\">\n <div title>{{ alert.title }}</div>\n\n @if (alert.content) {\n <div content>\n {{ alert.content }}\n </div>\n }\n </sh-alert>\n }\n </div>\n</div>\n<div\n class=\"tray\"\n [class.tray-is-hidden]=\"!this.alertService().alertHistoryIsHidden()\"\n (mouseover)=\"this.onMouseOver()\"\n (mouseout)=\"this.onMouseOut()\">\n <sh-icon class=\"small\">info</sh-icon>\n</div>\n", dependencies: [{ kind: "component", type: ShipAlert, selector: "sh-alert", inputs: ["color", "variant", "alertService", "id"] }, { kind: "component", type: ShipIcon, selector: "sh-icon", inputs: ["color", "size"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
307
307
  }
308
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: ShipAlertContainer, decorators: [{
308
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ShipAlertContainer, decorators: [{
309
309
  type: Component,
310
310
  args: [{ selector: 'ship-alert-container', imports: [ShipAlert, ShipIcon], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"scroller\" #scroller>\n <div class=\"container\">\n @for (alert of this.alertService().alertHistory(); track $index) {\n <sh-alert\n #alerts\n [class]=\"alert.type\"\n [id]=\"alert.id\"\n [alertService]=\"alertService()\"\n [style.transition-delay]=\"transitionDelay($index, true)\"\n [class.animate-in]=\"alert.animateIn\"\n [class.animate-out]=\"alert.animateOut\"\n [class.is-hidden]=\"this.alertService().alertHistoryIsHidden() && !alert.isOpen\">\n <div title>{{ alert.title }}</div>\n\n @if (alert.content) {\n <div content>\n {{ alert.content }}\n </div>\n }\n </sh-alert>\n }\n </div>\n</div>\n<div\n class=\"tray\"\n [class.tray-is-hidden]=\"!this.alertService().alertHistoryIsHidden()\"\n (mouseover)=\"this.onMouseOver()\"\n (mouseout)=\"this.onMouseOut()\">\n <sh-icon class=\"small\">info</sh-icon>\n</div>\n" }]
311
311
  }], propDecorators: { inline: [{ type: i0.Input, args: [{ isSignal: true, alias: "inline", required: false }] }], alerts: [{ type: i0.ViewChild, args: ['alerts', { isSignal: true }] }], scroller: [{ type: i0.ViewChild, args: ['scroller', { isSignal: true }] }], alertService: [{ type: i0.Input, args: [{ isSignal: true, alias: "alertService", required: true }] }], onMouseOver: [{
@@ -317,11 +317,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImpor
317
317
  }] } });
318
318
 
319
319
  class ShipAlertModule {
320
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: ShipAlertModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
321
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.5", ngImport: i0, type: ShipAlertModule, imports: [ShipAlert, ShipAlertContainer], exports: [ShipAlert, ShipAlertContainer] }); }
322
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: ShipAlertModule }); }
320
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ShipAlertModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
321
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.6", ngImport: i0, type: ShipAlertModule, imports: [ShipAlert, ShipAlertContainer], exports: [ShipAlert, ShipAlertContainer] }); }
322
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ShipAlertModule }); }
323
323
  }
324
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: ShipAlertModule, decorators: [{
324
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ShipAlertModule, decorators: [{
325
325
  type: NgModule,
326
326
  args: [{
327
327
  imports: [ShipAlert, ShipAlertContainer],
@@ -404,10 +404,10 @@ class ShipAlertService {
404
404
  setHidden(isHidden) {
405
405
  this.alertHistoryIsHidden.set(isHidden);
406
406
  }
407
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: ShipAlertService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
408
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: ShipAlertService, providedIn: 'root' }); }
407
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ShipAlertService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
408
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ShipAlertService, providedIn: 'root' }); }
409
409
  }
410
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: ShipAlertService, decorators: [{
410
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ShipAlertService, decorators: [{
411
411
  type: Injectable,
412
412
  args: [{
413
413
  providedIn: 'root',
@@ -476,8 +476,8 @@ class ShipDialog {
476
476
  ngOnDestroy() {
477
477
  this.abortController?.abort();
478
478
  }
479
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: ShipDialog, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
480
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.5", type: ShipDialog, isStandalone: true, selector: "sh-dialog", inputs: { isOpen: { classPropertyName: "isOpen", publicName: "isOpen", isSignal: true, isRequired: false, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { isOpen: "isOpenChange", closed: "closed" }, viewQueries: [{ propertyName: "dialogRef", first: true, predicate: ["dialogRef"], descendants: true, isSignal: true }], ngImport: i0, template: `
479
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ShipDialog, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
480
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.6", type: ShipDialog, isStandalone: true, selector: "sh-dialog", inputs: { isOpen: { classPropertyName: "isOpen", publicName: "isOpen", isSignal: true, isRequired: false, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { isOpen: "isOpenChange", closed: "closed" }, viewQueries: [{ propertyName: "dialogRef", first: true, predicate: ["dialogRef"], descendants: true, isSignal: true }], ngImport: i0, template: `
481
481
  @let options = this.defaultOptionMerge();
482
482
 
483
483
  @if (isOpen()) {
@@ -500,7 +500,7 @@ class ShipDialog {
500
500
  }
501
501
  `, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
502
502
  }
503
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: ShipDialog, decorators: [{
503
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ShipDialog, decorators: [{
504
504
  type: Component,
505
505
  args: [{
506
506
  selector: 'sh-dialog',
@@ -657,10 +657,10 @@ class ShipDialogService {
657
657
  ngOnDestroy() {
658
658
  this.#cleanupRefs(true);
659
659
  }
660
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: ShipDialogService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
661
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: ShipDialogService, providedIn: 'root' }); }
660
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ShipDialogService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
661
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ShipDialogService, providedIn: 'root' }); }
662
662
  }
663
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: ShipDialogService, decorators: [{
663
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ShipDialogService, decorators: [{
664
664
  type: Injectable,
665
665
  args: [{
666
666
  providedIn: 'root',
@@ -786,12 +786,12 @@ class ShipAccordion {
786
786
  }
787
787
  }
788
788
  }
789
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: ShipAccordion, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
790
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.5", type: ShipAccordion, isStandalone: true, selector: "sh-accordion", inputs: { name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, allowMultiple: { classPropertyName: "allowMultiple", publicName: "allowMultiple", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { value: "valueChange" }, host: { properties: { "class.sh-accordion": "true", "class": "hostClasses()" } }, ngImport: i0, template: `
789
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ShipAccordion, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
790
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.6", type: ShipAccordion, isStandalone: true, selector: "sh-accordion", inputs: { name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, allowMultiple: { classPropertyName: "allowMultiple", publicName: "allowMultiple", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { value: "valueChange" }, host: { properties: { "class.sh-accordion": "true", "class": "hostClasses()" } }, ngImport: i0, template: `
791
791
  <ng-content></ng-content>
792
792
  `, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
793
793
  }
794
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: ShipAccordion, decorators: [{
794
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ShipAccordion, decorators: [{
795
795
  type: Component,
796
796
  args: [{
797
797
  selector: 'sh-accordion',
@@ -1133,8 +1133,10 @@ class ShipBlueprint {
1133
1133
  if (isPlatformBrowser(this.#platformId)) {
1134
1134
  const canvas = this.canvasRef.nativeElement;
1135
1135
  this.#ctx = canvas.getContext('2d');
1136
- this.#resizeObserver = new ResizeObserver(() => this.updateCanvasSize());
1137
- this.#resizeObserver.observe(this.#selfRef.nativeElement);
1136
+ if (typeof ResizeObserver !== 'undefined') {
1137
+ this.#resizeObserver = new ResizeObserver(() => this.updateCanvasSize());
1138
+ this.#resizeObserver.observe(this.#selfRef.nativeElement);
1139
+ }
1138
1140
  this.updateCanvasSize();
1139
1141
  if (this.autoLayout()) {
1140
1142
  this.applyAutolayout();
@@ -1734,8 +1736,8 @@ class ShipBlueprint {
1734
1736
  #clamp(value, min, max) {
1735
1737
  return Math.max(min, Math.min(max, value));
1736
1738
  }
1737
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: ShipBlueprint, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1738
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.5", type: ShipBlueprint, isStandalone: true, selector: "sh-blueprint", inputs: { forceUnique: { classPropertyName: "forceUnique", publicName: "forceUnique", isSignal: true, isRequired: false, transformFunction: null }, autoLayout: { classPropertyName: "autoLayout", publicName: "autoLayout", isSignal: true, isRequired: false, transformFunction: null }, gridSize: { classPropertyName: "gridSize", publicName: "gridSize", isSignal: true, isRequired: false, transformFunction: null }, snapToGrid: { classPropertyName: "snapToGrid", publicName: "snapToGrid", isSignal: true, isRequired: false, transformFunction: null }, gridColor: { classPropertyName: "gridColor", publicName: "gridColor", isSignal: true, isRequired: false, transformFunction: null }, nodes: { classPropertyName: "nodes", publicName: "nodes", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { nodes: "nodesChange" }, host: { listeners: { "document:mouseup": "onMouseUp($event)", "document:click": "onClick($event)", "document:keydown.escape": "onEscape()", "document:mousemove": "onMouseMove($event)", "document:touchmove": "onTouchMove($event)", "document:touchend": "onDocumentTouchEnd($event)" } }, viewQueries: [{ propertyName: "canvasRef", first: true, predicate: ["blueprintCanvas"], descendants: true, static: true }], ngImport: i0, template: `
1739
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ShipBlueprint, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1740
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.6", type: ShipBlueprint, isStandalone: true, selector: "sh-blueprint", inputs: { forceUnique: { classPropertyName: "forceUnique", publicName: "forceUnique", isSignal: true, isRequired: false, transformFunction: null }, autoLayout: { classPropertyName: "autoLayout", publicName: "autoLayout", isSignal: true, isRequired: false, transformFunction: null }, gridSize: { classPropertyName: "gridSize", publicName: "gridSize", isSignal: true, isRequired: false, transformFunction: null }, snapToGrid: { classPropertyName: "snapToGrid", publicName: "snapToGrid", isSignal: true, isRequired: false, transformFunction: null }, gridColor: { classPropertyName: "gridColor", publicName: "gridColor", isSignal: true, isRequired: false, transformFunction: null }, nodes: { classPropertyName: "nodes", publicName: "nodes", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { nodes: "nodesChange" }, host: { listeners: { "document:mouseup": "onMouseUp($event)", "document:click": "onClick($event)", "document:keydown.escape": "onEscape()", "document:mousemove": "onMouseMove($event)", "document:touchmove": "onTouchMove($event)", "document:touchend": "onDocumentTouchEnd($event)" } }, viewQueries: [{ propertyName: "canvasRef", first: true, predicate: ["blueprintCanvas"], descendants: true, static: true }], ngImport: i0, template: `
1739
1741
  <div
1740
1742
  class="canvas-container"
1741
1743
  [class.locked]="isLocked()"
@@ -1823,7 +1825,7 @@ class ShipBlueprint {
1823
1825
  </div>
1824
1826
  `, isInline: true, dependencies: [{ kind: "component", type: ShipCard, selector: "sh-card", inputs: ["color", "variant"] }, { kind: "component", type: ShipIcon, selector: "sh-icon", inputs: ["color", "size"] }, { kind: "component", type: ShipButton, selector: "[shButton]", inputs: ["color", "variant", "size", "readonly"] }, { kind: "pipe", type: JsonPipe, name: "json" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1825
1827
  }
1826
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: ShipBlueprint, decorators: [{
1828
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ShipBlueprint, decorators: [{
1827
1829
  type: Component,
1828
1830
  args: [{
1829
1831
  selector: 'sh-blueprint',
@@ -1946,6 +1948,7 @@ class ShipSelectionGroup {
1946
1948
  this.activeClass = activeClass;
1947
1949
  this.hostElement = inject((ElementRef)).nativeElement;
1948
1950
  this.value = model(null, ...(ngDevMode ? [{ debugName: "value" }] : /* istanbul ignore next */ []));
1951
+ this.closable = input(false, { ...(ngDevMode ? { debugName: "closable" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
1949
1952
  this.items = contentProjectionSignal(this.itemSelector, {
1950
1953
  childList: true,
1951
1954
  subtree: true,
@@ -1977,7 +1980,12 @@ class ShipSelectionGroup {
1977
1980
  if (item && this.hostElement.contains(item)) {
1978
1981
  if (item.hasAttribute('value')) {
1979
1982
  const value = item.getAttribute('value');
1980
- this.value.set(value);
1983
+ if (this.closable() && String(this.value()) === String(value)) {
1984
+ this.value.set(null);
1985
+ }
1986
+ else {
1987
+ this.value.set(value);
1988
+ }
1981
1989
  }
1982
1990
  }
1983
1991
  }
@@ -2007,12 +2015,12 @@ class ShipSelectionGroup {
2007
2015
  nextItem.focus();
2008
2016
  }
2009
2017
  }
2010
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: ShipSelectionGroup, deps: "invalid", target: i0.ɵɵFactoryTarget.Directive }); }
2011
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.5", type: ShipSelectionGroup, isStandalone: true, inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { value: "valueChange" }, host: { listeners: { "click": "onClick($event.target)", "keydown": "onKeyDown($event)" } }, ngImport: i0 }); }
2018
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ShipSelectionGroup, deps: "invalid", target: i0.ɵɵFactoryTarget.Directive }); }
2019
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.6", type: ShipSelectionGroup, isStandalone: true, inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, closable: { classPropertyName: "closable", publicName: "closable", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { value: "valueChange" }, host: { listeners: { "click": "onClick($event.target)", "keydown": "onKeyDown($event)" } }, ngImport: i0 }); }
2012
2020
  }
2013
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: ShipSelectionGroup, decorators: [{
2021
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ShipSelectionGroup, decorators: [{
2014
2022
  type: Directive
2015
- }], ctorParameters: () => [{ type: undefined }, { type: undefined }], propDecorators: { value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }, { type: i0.Output, args: ["valueChange"] }], onClick: [{
2023
+ }], ctorParameters: () => [{ type: undefined }, { type: undefined }], propDecorators: { value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }, { type: i0.Output, args: ["valueChange"] }], closable: [{ type: i0.Input, args: [{ isSignal: true, alias: "closable", required: false }] }], onClick: [{
2016
2024
  type: HostListener,
2017
2025
  args: ['click', ['$event.target']]
2018
2026
  }], onKeyDown: [{
@@ -2033,12 +2041,12 @@ class ShipButtonGroup extends ShipSelectionGroup {
2033
2041
  size: this.size,
2034
2042
  });
2035
2043
  }
2036
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: ShipButtonGroup, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2037
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.5", type: ShipButtonGroup, isStandalone: true, selector: "sh-button-group", inputs: { color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "hostClasses()", "style.--btng-id": "id" } }, usesInheritance: true, ngImport: i0, template: `
2044
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ShipButtonGroup, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2045
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.6", type: ShipButtonGroup, isStandalone: true, selector: "sh-button-group", inputs: { color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "hostClasses()", "style.--btng-id": "id" } }, usesInheritance: true, ngImport: i0, template: `
2038
2046
  <ng-content />
2039
2047
  `, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2040
2048
  }
2041
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: ShipButtonGroup, decorators: [{
2049
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ShipButtonGroup, decorators: [{
2042
2050
  type: Component,
2043
2051
  args: [{
2044
2052
  selector: 'sh-button-group',
@@ -2067,10 +2075,10 @@ class ShipButton {
2067
2075
  readonly: this.readonly,
2068
2076
  });
2069
2077
  }
2070
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: ShipButton, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2071
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.5", type: ShipButton, isStandalone: true, selector: "[shButton]", inputs: { color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "hostClasses()" }, classAttribute: "sh-sheet-h" }, ngImport: i0, template: '<ng-content />', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2078
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ShipButton, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2079
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.6", type: ShipButton, isStandalone: true, selector: "[shButton]", inputs: { color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "hostClasses()" }, classAttribute: "sh-sheet-h" }, ngImport: i0, template: '<ng-content />', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2072
2080
  }
2073
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: ShipButton, decorators: [{
2081
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ShipButton, decorators: [{
2074
2082
  type: Component,
2075
2083
  args: [{
2076
2084
  selector: '[shButton]',
@@ -2093,12 +2101,12 @@ class ShipCard {
2093
2101
  variant: this.variant,
2094
2102
  });
2095
2103
  }
2096
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: ShipCard, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2097
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.5", type: ShipCard, isStandalone: true, selector: "sh-card", inputs: { color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "hostClasses()" } }, ngImport: i0, template: `
2104
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ShipCard, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2105
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.6", type: ShipCard, isStandalone: true, selector: "sh-card", inputs: { color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "hostClasses()" } }, ngImport: i0, template: `
2098
2106
  <ng-content />
2099
2107
  `, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2100
2108
  }
2101
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: ShipCard, decorators: [{
2109
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ShipCard, decorators: [{
2102
2110
  type: Component,
2103
2111
  args: [{
2104
2112
  selector: 'sh-card',
@@ -2150,8 +2158,8 @@ class ShipCheckbox {
2150
2158
  }
2151
2159
  event.preventDefault();
2152
2160
  }
2153
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: ShipCheckbox, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2154
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.5", type: ShipCheckbox, isStandalone: true, selector: "sh-checkbox", inputs: { checked: { classPropertyName: "checked", publicName: "checked", isSignal: true, isRequired: false, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, noInternalInput: { classPropertyName: "noInternalInput", publicName: "noInternalInput", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { checked: "checkedChange" }, host: { listeners: { "keydown.enter": "onEnter($event)" }, properties: { "class": "hostClasses()", "attr.disabled": "disabled() ? \"\" : null" } }, viewQueries: [{ propertyName: "internalInput", first: true, predicate: ["internalInput"], descendants: true, isSignal: true }], ngImport: i0, template: `
2161
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ShipCheckbox, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2162
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.6", type: ShipCheckbox, isStandalone: true, selector: "sh-checkbox", inputs: { checked: { classPropertyName: "checked", publicName: "checked", isSignal: true, isRequired: false, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, noInternalInput: { classPropertyName: "noInternalInput", publicName: "noInternalInput", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { checked: "checkedChange" }, host: { listeners: { "keydown.enter": "onEnter($event)" }, properties: { "class": "hostClasses()", "attr.disabled": "disabled() ? \"\" : null" } }, viewQueries: [{ propertyName: "internalInput", first: true, predicate: ["internalInput"], descendants: true, isSignal: true }], ngImport: i0, template: `
2155
2163
  <div class="box sh-sheet" [class]="currentClassList()">
2156
2164
  <sh-icon class="inherit default-indicator">check-bold</sh-icon>
2157
2165
  <sh-icon class="inherit indeterminate-indicator">minus-bold</sh-icon>
@@ -2172,7 +2180,7 @@ class ShipCheckbox {
2172
2180
  }
2173
2181
  `, isInline: true, dependencies: [{ kind: "component", type: ShipIcon, selector: "sh-icon", inputs: ["color", "size"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2174
2182
  }
2175
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: ShipCheckbox, decorators: [{
2183
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ShipCheckbox, decorators: [{
2176
2184
  type: Component,
2177
2185
  args: [{
2178
2186
  selector: 'sh-checkbox',
@@ -2225,10 +2233,10 @@ class ShipChip {
2225
2233
  readonly: this.readonly,
2226
2234
  });
2227
2235
  }
2228
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: ShipChip, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2229
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.5", type: ShipChip, isStandalone: true, selector: "sh-chip", inputs: { color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, sharp: { classPropertyName: "sharp", publicName: "sharp", isSignal: true, isRequired: false, transformFunction: null }, dynamic: { classPropertyName: "dynamic", publicName: "dynamic", isSignal: true, isRequired: false, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "hostClasses()" }, classAttribute: "sh-sheet" }, ngImport: i0, template: '<div><ng-content /></div>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2236
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ShipChip, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2237
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.6", type: ShipChip, isStandalone: true, selector: "sh-chip", inputs: { color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, sharp: { classPropertyName: "sharp", publicName: "sharp", isSignal: true, isRequired: false, transformFunction: null }, dynamic: { classPropertyName: "dynamic", publicName: "dynamic", isSignal: true, isRequired: false, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "hostClasses()" }, classAttribute: "sh-sheet" }, ngImport: i0, template: '<div><ng-content /></div>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2230
2238
  }
2231
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: ShipChip, decorators: [{
2239
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ShipChip, decorators: [{
2232
2240
  type: Component,
2233
2241
  args: [{
2234
2242
  selector: 'sh-chip',
@@ -2884,8 +2892,8 @@ class ShipColorPicker {
2884
2892
  }
2885
2893
  }
2886
2894
  }
2887
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: ShipColorPicker, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2888
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "21.2.5", type: ShipColorPicker, isStandalone: true, selector: "sh-color-picker", inputs: { showDarkColors: { classPropertyName: "showDarkColors", publicName: "showDarkColors", isSignal: true, isRequired: false, transformFunction: null }, renderingType: { classPropertyName: "renderingType", publicName: "renderingType", isSignal: true, isRequired: false, transformFunction: null }, gridSize: { classPropertyName: "gridSize", publicName: "gridSize", isSignal: true, isRequired: false, transformFunction: null }, hue: { classPropertyName: "hue", publicName: "hue", isSignal: true, isRequired: false, transformFunction: null }, direction: { classPropertyName: "direction", publicName: "direction", isSignal: true, isRequired: false, transformFunction: null }, selectedColor: { classPropertyName: "selectedColor", publicName: "selectedColor", isSignal: true, isRequired: false, transformFunction: null }, alpha: { classPropertyName: "alpha", publicName: "alpha", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { hue: "hueChange", selectedColor: "selectedColorChange", alpha: "alphaChange", currentColor: "currentColor" }, host: { listeners: { "window:resize": "onResize()" }, properties: { "class": "renderingType()", "class.vertical": "(renderingType() === \"hue\" || renderingType() === \"saturation\") && direction() === \"vertical\"" } }, viewQueries: [{ propertyName: "canvasRef", first: true, predicate: ["colorCanvas"], descendants: true, isSignal: true }], ngImport: i0, template: `
2895
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ShipColorPicker, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2896
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "21.2.6", type: ShipColorPicker, isStandalone: true, selector: "sh-color-picker", inputs: { showDarkColors: { classPropertyName: "showDarkColors", publicName: "showDarkColors", isSignal: true, isRequired: false, transformFunction: null }, renderingType: { classPropertyName: "renderingType", publicName: "renderingType", isSignal: true, isRequired: false, transformFunction: null }, gridSize: { classPropertyName: "gridSize", publicName: "gridSize", isSignal: true, isRequired: false, transformFunction: null }, hue: { classPropertyName: "hue", publicName: "hue", isSignal: true, isRequired: false, transformFunction: null }, direction: { classPropertyName: "direction", publicName: "direction", isSignal: true, isRequired: false, transformFunction: null }, selectedColor: { classPropertyName: "selectedColor", publicName: "selectedColor", isSignal: true, isRequired: false, transformFunction: null }, alpha: { classPropertyName: "alpha", publicName: "alpha", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { hue: "hueChange", selectedColor: "selectedColorChange", alpha: "alphaChange", currentColor: "currentColor" }, host: { listeners: { "window:resize": "onResize()" }, properties: { "class": "renderingType()", "class.vertical": "(renderingType() === \"hue\" || renderingType() === \"saturation\") && direction() === \"vertical\"" } }, viewQueries: [{ propertyName: "canvasRef", first: true, predicate: ["colorCanvas"], descendants: true, isSignal: true }], ngImport: i0, template: `
2889
2897
  <canvas #colorCanvas></canvas>
2890
2898
  <div
2891
2899
  class="marker"
@@ -2894,7 +2902,7 @@ class ShipColorPicker {
2894
2902
  [style.background]="selectedColorRgb()"></div>
2895
2903
  `, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2896
2904
  }
2897
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: ShipColorPicker, decorators: [{
2905
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ShipColorPicker, decorators: [{
2898
2906
  type: Component,
2899
2907
  args: [{
2900
2908
  selector: 'sh-color-picker',
@@ -3136,8 +3144,8 @@ class ShipPopover {
3136
3144
  this.openAbort?.abort();
3137
3145
  this.openAbort = null;
3138
3146
  }
3139
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: ShipPopover, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
3140
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.5", type: ShipPopover, isStandalone: true, selector: "sh-popover", inputs: { asMultiLayer: { classPropertyName: "asMultiLayer", publicName: "asMultiLayer", isSignal: true, isRequired: false, transformFunction: null }, asSheetOnMobile: { classPropertyName: "asSheetOnMobile", publicName: "asSheetOnMobile", isSignal: true, isRequired: false, transformFunction: null }, disableOpenByClick: { classPropertyName: "disableOpenByClick", publicName: "disableOpenByClick", isSignal: true, isRequired: false, transformFunction: null }, isOpen: { classPropertyName: "isOpen", publicName: "isOpen", isSignal: true, isRequired: false, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { isOpen: "isOpenChange", closed: "closed" }, host: { properties: { "class.multi-layer": "asMultiLayer()", "class.as-sheet": "asSheetOnMobile()" } }, viewQueries: [{ propertyName: "triggerRef", first: true, predicate: ["triggerRef"], descendants: true, isSignal: true }, { propertyName: "popoverRef", first: true, predicate: ["popoverRef"], descendants: true, isSignal: true }, { propertyName: "popoverContentRef", first: true, predicate: ["popoverContentRef"], descendants: true, isSignal: true }], ngImport: i0, template: `
3147
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ShipPopover, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
3148
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.6", type: ShipPopover, isStandalone: true, selector: "sh-popover", inputs: { asMultiLayer: { classPropertyName: "asMultiLayer", publicName: "asMultiLayer", isSignal: true, isRequired: false, transformFunction: null }, asSheetOnMobile: { classPropertyName: "asSheetOnMobile", publicName: "asSheetOnMobile", isSignal: true, isRequired: false, transformFunction: null }, disableOpenByClick: { classPropertyName: "disableOpenByClick", publicName: "disableOpenByClick", isSignal: true, isRequired: false, transformFunction: null }, isOpen: { classPropertyName: "isOpen", publicName: "isOpen", isSignal: true, isRequired: false, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { isOpen: "isOpenChange", closed: "closed" }, host: { properties: { "class.multi-layer": "asMultiLayer()", "class.as-sheet": "asSheetOnMobile()" } }, viewQueries: [{ propertyName: "triggerRef", first: true, predicate: ["triggerRef"], descendants: true, isSignal: true }, { propertyName: "popoverRef", first: true, predicate: ["popoverRef"], descendants: true, isSignal: true }, { propertyName: "popoverContentRef", first: true, predicate: ["popoverContentRef"], descendants: true, isSignal: true }], ngImport: i0, template: `
3141
3149
  <div class="trigger" #triggerRef [attr.popovertarget]="id() + 'hello'" (click)="toggleIsOpen($event)">
3142
3150
  <div class="trigger-wrapper">
3143
3151
  <ng-content select="[trigger]" />
@@ -3157,7 +3165,7 @@ class ShipPopover {
3157
3165
  }
3158
3166
  `, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
3159
3167
  }
3160
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: ShipPopover, decorators: [{
3168
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ShipPopover, decorators: [{
3161
3169
  type: Component,
3162
3170
  args: [{
3163
3171
  selector: 'sh-popover',
@@ -3242,8 +3250,8 @@ class ShipFormFieldPopover {
3242
3250
  }
3243
3251
  }
3244
3252
  }
3245
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: ShipFormFieldPopover, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
3246
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.5", type: ShipFormFieldPopover, isStandalone: true, selector: "sh-form-field-popover", inputs: { isOpen: { classPropertyName: "isOpen", publicName: "isOpen", isSignal: true, isRequired: false, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { isOpen: "isOpenChange", closed: "closed" }, host: { listeners: { "click": "onClick()" }, properties: { "class": "hostClasses()" } }, ngImport: i0, template: `
3253
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ShipFormFieldPopover, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
3254
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.6", type: ShipFormFieldPopover, isStandalone: true, selector: "sh-form-field-popover", inputs: { isOpen: { classPropertyName: "isOpen", publicName: "isOpen", isSignal: true, isRequired: false, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { isOpen: "isOpenChange", closed: "closed" }, host: { listeners: { "click": "onClick()" }, properties: { "class": "hostClasses()" } }, ngImport: i0, template: `
3247
3255
  <ng-content select="label"></ng-content>
3248
3256
 
3249
3257
  <sh-popover
@@ -3284,7 +3292,7 @@ class ShipFormFieldPopover {
3284
3292
  </div>
3285
3293
  `, isInline: true, dependencies: [{ kind: "component", type: ShipPopover, selector: "sh-popover", inputs: ["asMultiLayer", "asSheetOnMobile", "disableOpenByClick", "isOpen", "options"], outputs: ["isOpenChange", "closed"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
3286
3294
  }
3287
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: ShipFormFieldPopover, decorators: [{
3295
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ShipFormFieldPopover, decorators: [{
3288
3296
  type: Component,
3289
3297
  args: [{
3290
3298
  selector: 'sh-form-field-popover',
@@ -3592,8 +3600,8 @@ class ShipColorPickerInput {
3592
3600
  });
3593
3601
  return input;
3594
3602
  }
3595
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: ShipColorPickerInput, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
3596
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.5", type: ShipColorPickerInput, isStandalone: true, selector: "sh-color-picker-input", inputs: { renderingType: { classPropertyName: "renderingType", publicName: "renderingType", isSignal: true, isRequired: false, transformFunction: null }, format: { classPropertyName: "format", publicName: "format", isSignal: true, isRequired: false, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: true, isRequired: false, transformFunction: null }, isOpen: { classPropertyName: "isOpen", publicName: "isOpen", isSignal: true, isRequired: false, transformFunction: null }, showEyeDropper: { classPropertyName: "showEyeDropper", publicName: "showEyeDropper", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { closed: "closed", isOpen: "isOpenChange" }, ngImport: i0, template: `
3603
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ShipColorPickerInput, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
3604
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.6", type: ShipColorPickerInput, isStandalone: true, selector: "sh-color-picker-input", inputs: { renderingType: { classPropertyName: "renderingType", publicName: "renderingType", isSignal: true, isRequired: false, transformFunction: null }, format: { classPropertyName: "format", publicName: "format", isSignal: true, isRequired: false, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: true, isRequired: false, transformFunction: null }, isOpen: { classPropertyName: "isOpen", publicName: "isOpen", isSignal: true, isRequired: false, transformFunction: null }, showEyeDropper: { classPropertyName: "showEyeDropper", publicName: "showEyeDropper", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { closed: "closed", isOpen: "isOpenChange" }, ngImport: i0, template: `
3597
3605
  <sh-form-field-popover
3598
3606
  (closed)="close()"
3599
3607
  [(isOpen)]="isOpen"
@@ -3654,7 +3662,7 @@ class ShipColorPickerInput {
3654
3662
  </sh-form-field-popover>
3655
3663
  `, isInline: true, dependencies: [{ kind: "component", type: ShipFormFieldPopover, selector: "sh-form-field-popover", inputs: ["isOpen", "color", "variant", "size", "readonly"], outputs: ["isOpenChange", "closed"] }, { kind: "component", type: ShipColorPicker, selector: "sh-color-picker", inputs: ["showDarkColors", "renderingType", "gridSize", "hue", "direction", "selectedColor", "alpha"], outputs: ["hueChange", "selectedColorChange", "alphaChange", "currentColor"] }, { kind: "component", type: ShipIcon, selector: "sh-icon", inputs: ["color", "size"] }, { kind: "component", type: ShipButton$1, selector: "[shButton]", inputs: ["color", "variant", "size", "readonly"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
3656
3664
  }
3657
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: ShipColorPickerInput, decorators: [{
3665
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ShipColorPickerInput, decorators: [{
3658
3666
  type: Component,
3659
3667
  args: [{
3660
3668
  selector: 'sh-color-picker-input',
@@ -3944,8 +3952,8 @@ class ShipDatepicker {
3944
3952
  const offsetDate = this.getOffsetDate(monthOffset);
3945
3953
  return date.getMonth() === offsetDate.getMonth();
3946
3954
  }
3947
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: ShipDatepicker, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
3948
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.5", type: ShipDatepicker, isStandalone: true, selector: "sh-datepicker", inputs: { date: { classPropertyName: "date", publicName: "date", isSignal: true, isRequired: false, transformFunction: null }, endDate: { classPropertyName: "endDate", publicName: "endDate", isSignal: true, isRequired: false, transformFunction: null }, asRange: { classPropertyName: "asRange", publicName: "asRange", isSignal: true, isRequired: false, transformFunction: null }, monthsToShow: { classPropertyName: "monthsToShow", publicName: "monthsToShow", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, startOfWeek: { classPropertyName: "startOfWeek", publicName: "startOfWeek", isSignal: true, isRequired: false, transformFunction: null }, weekdayLabels: { classPropertyName: "weekdayLabels", publicName: "weekdayLabels", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { date: "dateChange", endDate: "endDateChange" }, host: { properties: { "class.as-range": "asRange()", "class": "\"columns-\" + monthsToShow()", "class.disabled": "disabled()" } }, viewQueries: [{ propertyName: "daysRef", first: true, predicate: ["daysRef"], descendants: true, isSignal: true }], ngImport: i0, template: `
3955
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ShipDatepicker, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
3956
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.6", type: ShipDatepicker, isStandalone: true, selector: "sh-datepicker", inputs: { date: { classPropertyName: "date", publicName: "date", isSignal: true, isRequired: false, transformFunction: null }, endDate: { classPropertyName: "endDate", publicName: "endDate", isSignal: true, isRequired: false, transformFunction: null }, asRange: { classPropertyName: "asRange", publicName: "asRange", isSignal: true, isRequired: false, transformFunction: null }, monthsToShow: { classPropertyName: "monthsToShow", publicName: "monthsToShow", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, startOfWeek: { classPropertyName: "startOfWeek", publicName: "startOfWeek", isSignal: true, isRequired: false, transformFunction: null }, weekdayLabels: { classPropertyName: "weekdayLabels", publicName: "weekdayLabels", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { date: "dateChange", endDate: "endDateChange" }, host: { properties: { "class.as-range": "asRange()", "class": "\"columns-\" + monthsToShow()", "class.disabled": "disabled()" } }, viewQueries: [{ propertyName: "daysRef", first: true, predicate: ["daysRef"], descendants: true, isSignal: true }], ngImport: i0, template: `
3949
3957
  <header>
3950
3958
  <button (click)="previousMonth()"><sh-icon>caret-left</sh-icon></button>
3951
3959
  <div class="title">
@@ -3989,7 +3997,7 @@ class ShipDatepicker {
3989
3997
  </section>
3990
3998
  `, isInline: true, dependencies: [{ kind: "component", type: ShipIcon, selector: "sh-icon", inputs: ["color", "size"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
3991
3999
  }
3992
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: ShipDatepicker, decorators: [{
4000
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ShipDatepicker, decorators: [{
3993
4001
  type: Component,
3994
4002
  args: [{
3995
4003
  selector: 'sh-datepicker',
@@ -4127,8 +4135,8 @@ class ShipDatepickerInput {
4127
4135
  });
4128
4136
  return input;
4129
4137
  }
4130
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: ShipDatepickerInput, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
4131
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.5", type: ShipDatepickerInput, isStandalone: true, selector: "sh-datepicker-input", inputs: { masking: { classPropertyName: "masking", publicName: "masking", isSignal: true, isRequired: false, transformFunction: null }, isOpen: { classPropertyName: "isOpen", publicName: "isOpen", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { closed: "closed", isOpen: "isOpenChange" }, providers: [DatePipe], queries: [{ propertyName: "ngModels", first: true, predicate: NgModel, descendants: true, isSignal: true }], ngImport: i0, template: `
4138
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ShipDatepickerInput, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
4139
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.6", type: ShipDatepickerInput, isStandalone: true, selector: "sh-datepicker-input", inputs: { masking: { classPropertyName: "masking", publicName: "masking", isSignal: true, isRequired: false, transformFunction: null }, isOpen: { classPropertyName: "isOpen", publicName: "isOpen", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { closed: "closed", isOpen: "isOpenChange" }, providers: [DatePipe], queries: [{ propertyName: "ngModels", first: true, predicate: NgModel, descendants: true, isSignal: true }], ngImport: i0, template: `
4132
4140
  <sh-form-field-popover (closed)="close()" [(isOpen)]="isOpen">
4133
4141
  <ng-content select="label" ngProjectAs="label" />
4134
4142
 
@@ -4158,7 +4166,7 @@ class ShipDatepickerInput {
4158
4166
  <ng-template #defaultIndicator></ng-template>
4159
4167
  `, isInline: true, dependencies: [{ kind: "component", type: ShipDatepicker, selector: "sh-datepicker", inputs: ["date", "endDate", "asRange", "monthsToShow", "disabled", "startOfWeek", "weekdayLabels"], outputs: ["dateChange", "endDateChange"] }, { kind: "component", type: ShipFormFieldPopover, selector: "sh-form-field-popover", inputs: ["isOpen", "color", "variant", "size", "readonly"], outputs: ["isOpenChange", "closed"] }, { kind: "component", type: ShipIcon, selector: "sh-icon", inputs: ["color", "size"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
4160
4168
  }
4161
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: ShipDatepickerInput, decorators: [{
4169
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ShipDatepickerInput, decorators: [{
4162
4170
  type: Component,
4163
4171
  args: [{
4164
4172
  selector: 'sh-datepicker-input',
@@ -4296,8 +4304,8 @@ class ShipDaterangeInput {
4296
4304
  end: this.endDate(),
4297
4305
  });
4298
4306
  }
4299
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: ShipDaterangeInput, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
4300
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.5", type: ShipDaterangeInput, isStandalone: true, selector: "sh-daterange-input", inputs: { monthsToShow: { classPropertyName: "monthsToShow", publicName: "monthsToShow", isSignal: true, isRequired: false, transformFunction: null }, masking: { classPropertyName: "masking", publicName: "masking", isSignal: true, isRequired: false, transformFunction: null }, isOpen: { classPropertyName: "isOpen", publicName: "isOpen", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { closed: "closed", isOpen: "isOpenChange" }, providers: [DatePipe], queries: [{ propertyName: "startDateInputs", predicate: ["startDate"], isSignal: true }, { propertyName: "endDateInputs", predicate: ["endDate"], isSignal: true }], ngImport: i0, template: `
4307
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ShipDaterangeInput, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
4308
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.6", type: ShipDaterangeInput, isStandalone: true, selector: "sh-daterange-input", inputs: { monthsToShow: { classPropertyName: "monthsToShow", publicName: "monthsToShow", isSignal: true, isRequired: false, transformFunction: null }, masking: { classPropertyName: "masking", publicName: "masking", isSignal: true, isRequired: false, transformFunction: null }, isOpen: { classPropertyName: "isOpen", publicName: "isOpen", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { closed: "closed", isOpen: "isOpenChange" }, providers: [DatePipe], queries: [{ propertyName: "startDateInputs", predicate: ["startDate"], isSignal: true }, { propertyName: "endDateInputs", predicate: ["endDate"], isSignal: true }], ngImport: i0, template: `
4301
4309
  <sh-form-field-popover [class]="'columns-' + monthsToShow()" (closed)="close()" [(isOpen)]="isOpen">
4302
4310
  <ng-content select="label" ngProjectAs="label" />
4303
4311
 
@@ -4330,7 +4338,7 @@ class ShipDaterangeInput {
4330
4338
  </sh-form-field-popover>
4331
4339
  `, isInline: true, dependencies: [{ kind: "component", type: ShipDatepicker, selector: "sh-datepicker", inputs: ["date", "endDate", "asRange", "monthsToShow", "disabled", "startOfWeek", "weekdayLabels"], outputs: ["dateChange", "endDateChange"] }, { kind: "component", type: ShipFormFieldPopover, selector: "sh-form-field-popover", inputs: ["isOpen", "color", "variant", "size", "readonly"], outputs: ["isOpenChange", "closed"] }, { kind: "component", type: ShipIcon, selector: "sh-icon", inputs: ["color", "size"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
4332
4340
  }
4333
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: ShipDaterangeInput, decorators: [{
4341
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ShipDaterangeInput, decorators: [{
4334
4342
  type: Component,
4335
4343
  args: [{
4336
4344
  selector: 'sh-daterange-input',
@@ -4373,12 +4381,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImpor
4373
4381
  }], ctorParameters: () => [], propDecorators: { startDateInputs: [{ type: i0.ContentChildren, args: ['startDate', { isSignal: true }] }], endDateInputs: [{ type: i0.ContentChildren, args: ['endDate', { isSignal: true }] }], monthsToShow: [{ type: i0.Input, args: [{ isSignal: true, alias: "monthsToShow", required: false }] }], masking: [{ type: i0.Input, args: [{ isSignal: true, alias: "masking", required: false }] }], closed: [{ type: i0.Output, args: ["closed"] }], isOpen: [{ type: i0.Input, args: [{ isSignal: true, alias: "isOpen", required: false }] }, { type: i0.Output, args: ["isOpenChange"] }] } });
4374
4382
 
4375
4383
  class ShipDivider {
4376
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: ShipDivider, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
4377
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.5", type: ShipDivider, isStandalone: true, selector: "sh-divider", ngImport: i0, template: `
4384
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ShipDivider, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
4385
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.6", type: ShipDivider, isStandalone: true, selector: "sh-divider", ngImport: i0, template: `
4378
4386
  <ng-content />
4379
4387
  `, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
4380
4388
  }
4381
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: ShipDivider, decorators: [{
4389
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ShipDivider, decorators: [{
4382
4390
  type: Component,
4383
4391
  args: [{
4384
4392
  selector: 'sh-divider',
@@ -4399,8 +4407,8 @@ class ShipEventCard {
4399
4407
  variant: this.variant,
4400
4408
  });
4401
4409
  }
4402
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: ShipEventCard, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
4403
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.5", type: ShipEventCard, isStandalone: true, selector: "sh-event-card", inputs: { color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "hostClasses()" }, classAttribute: "sh-sheet" }, ngImport: i0, template: `
4410
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ShipEventCard, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
4411
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.6", type: ShipEventCard, isStandalone: true, selector: "sh-event-card", inputs: { color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "hostClasses()" }, classAttribute: "sh-sheet" }, ngImport: i0, template: `
4404
4412
  <div class="content">
4405
4413
  <ng-content />
4406
4414
  </div>
@@ -4411,7 +4419,7 @@ class ShipEventCard {
4411
4419
  </div>
4412
4420
  `, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
4413
4421
  }
4414
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: ShipEventCard, decorators: [{
4422
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ShipEventCard, decorators: [{
4415
4423
  type: Component,
4416
4424
  args: [{
4417
4425
  selector: 'sh-event-card',
@@ -4479,8 +4487,8 @@ class ShipFormField {
4479
4487
  }
4480
4488
  });
4481
4489
  }
4482
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: ShipFormField, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
4483
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.5", type: ShipFormField, isStandalone: true, selector: "sh-form-field", inputs: { color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "click": "onClick()" }, properties: { "class": "hostClasses()" } }, ngImport: i0, template: `
4490
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ShipFormField, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
4491
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.6", type: ShipFormField, isStandalone: true, selector: "sh-form-field", inputs: { color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "click": "onClick()" }, properties: { "class": "hostClasses()" } }, ngImport: i0, template: `
4484
4492
  <ng-content select="label"></ng-content>
4485
4493
 
4486
4494
  <div class="input-wrap">
@@ -4511,7 +4519,7 @@ class ShipFormField {
4511
4519
  </div>
4512
4520
  `, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
4513
4521
  }
4514
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: ShipFormField, decorators: [{
4522
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ShipFormField, decorators: [{
4515
4523
  type: Component,
4516
4524
  args: [{
4517
4525
  selector: 'sh-form-field',
@@ -4605,8 +4613,8 @@ class ShipFileUpload {
4605
4613
  this.files.set(newFiles);
4606
4614
  }
4607
4615
  }
4608
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: ShipFileUpload, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
4609
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.5", type: ShipFileUpload, isStandalone: true, selector: "sh-file-upload", inputs: { multiple: { classPropertyName: "multiple", publicName: "multiple", isSignal: true, isRequired: false, transformFunction: null }, accept: { classPropertyName: "accept", publicName: "accept", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, overlayText: { classPropertyName: "overlayText", publicName: "overlayText", isSignal: true, isRequired: false, transformFunction: null }, files: { classPropertyName: "files", publicName: "files", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { placeholder: "placeholderChange", files: "filesChange" }, viewQueries: [{ propertyName: "inputRef", first: true, predicate: ["input"], descendants: true, isSignal: true }], ngImport: i0, template: `
4616
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ShipFileUpload, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
4617
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.6", type: ShipFileUpload, isStandalone: true, selector: "sh-file-upload", inputs: { multiple: { classPropertyName: "multiple", publicName: "multiple", isSignal: true, isRequired: false, transformFunction: null }, accept: { classPropertyName: "accept", publicName: "accept", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, overlayText: { classPropertyName: "overlayText", publicName: "overlayText", isSignal: true, isRequired: false, transformFunction: null }, files: { classPropertyName: "files", publicName: "files", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { placeholder: "placeholderChange", files: "filesChange" }, viewQueries: [{ propertyName: "inputRef", first: true, predicate: ["input"], descendants: true, isSignal: true }], ngImport: i0, template: `
4610
4618
  <sh-form-field [class]="fileUploadClasses()">
4611
4619
  <ng-content select="label" ngProjectAs="label"></ng-content>
4612
4620
 
@@ -4626,7 +4634,7 @@ class ShipFileUpload {
4626
4634
  </sh-form-field>
4627
4635
  `, isInline: true, dependencies: [{ kind: "component", type: ShipFormField, selector: "sh-form-field", inputs: ["color", "variant", "size", "readonly"] }, { kind: "component", type: ShipIcon, selector: "sh-icon", inputs: ["color", "size"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
4628
4636
  }
4629
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: ShipFileUpload, decorators: [{
4637
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ShipFileUpload, decorators: [{
4630
4638
  type: Component,
4631
4639
  args: [{
4632
4640
  selector: 'sh-file-upload',
@@ -4655,12 +4663,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImpor
4655
4663
  }], propDecorators: { inputRef: [{ type: i0.ViewChild, args: ['input', { isSignal: true }] }], multiple: [{ type: i0.Input, args: [{ isSignal: true, alias: "multiple", required: false }] }], accept: [{ type: i0.Input, args: [{ isSignal: true, alias: "accept", required: false }] }], placeholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "placeholder", required: false }] }, { type: i0.Output, args: ["placeholderChange"] }], overlayText: [{ type: i0.Input, args: [{ isSignal: true, alias: "overlayText", required: false }] }], files: [{ type: i0.Input, args: [{ isSignal: true, alias: "files", required: false }] }, { type: i0.Output, args: ["filesChange"] }] } });
4656
4664
 
4657
4665
  class ShipList {
4658
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: ShipList, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
4659
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.5", type: ShipList, isStandalone: true, selector: "sh-list", ngImport: i0, template: `
4666
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ShipList, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
4667
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.6", type: ShipList, isStandalone: true, selector: "sh-list", ngImport: i0, template: `
4660
4668
  <ng-content />
4661
4669
  `, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
4662
4670
  }
4663
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: ShipList, decorators: [{
4671
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ShipList, decorators: [{
4664
4672
  type: Component,
4665
4673
  args: [{
4666
4674
  selector: 'sh-list',
@@ -4731,7 +4739,7 @@ function observeChildren(parentEl, elementTags) {
4731
4739
  destroyRef.onDestroy(() => destroySelf());
4732
4740
  };
4733
4741
  effectOnSignal = effect(() => {
4734
- const el = typeof parentEl === 'function' && !!parentEl[SIGNAL] ? parentEl() : parentEl;
4742
+ const el = typeof parentEl === 'function' && isSignal(parentEl) ? parentEl() : parentEl;
4735
4743
  const tags = typeof elementTags === 'function' ? elementTags() : elementTags;
4736
4744
  if (el && tags?.length > 0) {
4737
4745
  setupObserver(el, tags);
@@ -5174,8 +5182,8 @@ class ShipMenu {
5174
5182
  ShipMenu.openMenus.splice(index, 1);
5175
5183
  }
5176
5184
  }
5177
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: ShipMenu, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
5178
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.5", type: ShipMenu, isStandalone: true, selector: "sh-menu", inputs: { asMultiLayer: { classPropertyName: "asMultiLayer", publicName: "asMultiLayer", isSignal: true, isRequired: false, transformFunction: null }, openIndicator: { classPropertyName: "openIndicator", publicName: "openIndicator", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, customOptionElementSelectors: { classPropertyName: "customOptionElementSelectors", publicName: "customOptionElementSelectors", isSignal: true, isRequired: false, transformFunction: null }, keepClickedOptionActive: { classPropertyName: "keepClickedOptionActive", publicName: "keepClickedOptionActive", isSignal: true, isRequired: false, transformFunction: null }, closeOnClick: { classPropertyName: "closeOnClick", publicName: "closeOnClick", isSignal: true, isRequired: false, transformFunction: null }, isOpen: { classPropertyName: "isOpen", publicName: "isOpen", isSignal: true, isRequired: false, transformFunction: null }, searchable: { classPropertyName: "searchable", publicName: "searchable", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { isOpen: "isOpenChange", closed: "closed" }, host: { listeners: { "ship-menu-open": "onShipMenuOpen($event)" }, properties: { "class.disabled": "disabled()", "class.has-search": "searchable()", "class.multi-layer": "asMultiLayer()" } }, viewQueries: [{ propertyName: "inputRef", first: true, predicate: ["inputRef"], descendants: true, isSignal: true }, { propertyName: "optionsRef", first: true, predicate: ["optionsRef"], descendants: true, isSignal: true }], ngImport: i0, template: `
5185
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ShipMenu, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
5186
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.6", type: ShipMenu, isStandalone: true, selector: "sh-menu", inputs: { asMultiLayer: { classPropertyName: "asMultiLayer", publicName: "asMultiLayer", isSignal: true, isRequired: false, transformFunction: null }, openIndicator: { classPropertyName: "openIndicator", publicName: "openIndicator", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, customOptionElementSelectors: { classPropertyName: "customOptionElementSelectors", publicName: "customOptionElementSelectors", isSignal: true, isRequired: false, transformFunction: null }, keepClickedOptionActive: { classPropertyName: "keepClickedOptionActive", publicName: "keepClickedOptionActive", isSignal: true, isRequired: false, transformFunction: null }, closeOnClick: { classPropertyName: "closeOnClick", publicName: "closeOnClick", isSignal: true, isRequired: false, transformFunction: null }, isOpen: { classPropertyName: "isOpen", publicName: "isOpen", isSignal: true, isRequired: false, transformFunction: null }, searchable: { classPropertyName: "searchable", publicName: "searchable", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { isOpen: "isOpenChange", closed: "closed" }, host: { listeners: { "ship-menu-open": "onShipMenuOpen($event)" }, properties: { "class.disabled": "disabled()", "class.has-search": "searchable()", "class.multi-layer": "asMultiLayer()" } }, viewQueries: [{ propertyName: "inputRef", first: true, predicate: ["inputRef"], descendants: true, isSignal: true }, { propertyName: "optionsRef", first: true, predicate: ["optionsRef"], descendants: true, isSignal: true }], ngImport: i0, template: `
5179
5187
  <sh-popover
5180
5188
  #formFieldWrapper
5181
5189
  [(isOpen)]="isOpen"
@@ -5229,7 +5237,7 @@ class ShipMenu {
5229
5237
  </sh-popover>
5230
5238
  `, isInline: true, dependencies: [{ kind: "component", type: ShipPopover, selector: "sh-popover", inputs: ["asMultiLayer", "asSheetOnMobile", "disableOpenByClick", "isOpen", "options"], outputs: ["isOpenChange", "closed"] }, { kind: "component", type: ShipFormField, selector: "sh-form-field", inputs: ["color", "variant", "size", "readonly"] }, { kind: "component", type: ShipIcon, selector: "sh-icon", inputs: ["color", "size"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
5231
5239
  }
5232
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: ShipMenu, decorators: [{
5240
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ShipMenu, decorators: [{
5233
5241
  type: Component,
5234
5242
  args: [{
5235
5243
  selector: 'sh-menu',
@@ -5309,12 +5317,12 @@ class ShipProgressBar {
5309
5317
  variant: this.variant,
5310
5318
  });
5311
5319
  }
5312
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: ShipProgressBar, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
5313
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.5", type: ShipProgressBar, isStandalone: true, selector: "sh-progress-bar", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "hostClasses()" } }, ngImport: i0, template: `
5320
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ShipProgressBar, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
5321
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.6", type: ShipProgressBar, isStandalone: true, selector: "sh-progress-bar", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "hostClasses()" } }, ngImport: i0, template: `
5314
5322
  <div class="progress-bar" [style.width.%]="value()"></div>
5315
5323
  `, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
5316
5324
  }
5317
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: ShipProgressBar, decorators: [{
5325
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ShipProgressBar, decorators: [{
5318
5326
  type: Component,
5319
5327
  args: [{
5320
5328
  selector: 'sh-progress-bar',
@@ -5366,8 +5374,8 @@ class ShipRadio {
5366
5374
  }
5367
5375
  event.preventDefault();
5368
5376
  }
5369
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: ShipRadio, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
5370
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.5", type: ShipRadio, isStandalone: true, selector: "sh-radio", inputs: { checked: { classPropertyName: "checked", publicName: "checked", isSignal: true, isRequired: false, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, noInternalInput: { classPropertyName: "noInternalInput", publicName: "noInternalInput", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { checked: "checkedChange" }, host: { listeners: { "keydown.enter": "onEnter($event)" }, properties: { "class": "hostClasses()", "attr.disabled": "disabled() ? \"\" : null" } }, viewQueries: [{ propertyName: "internalInput", first: true, predicate: ["internalInput"], descendants: true, isSignal: true }], ngImport: i0, template: `
5377
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ShipRadio, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
5378
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.6", type: ShipRadio, isStandalone: true, selector: "sh-radio", inputs: { checked: { classPropertyName: "checked", publicName: "checked", isSignal: true, isRequired: false, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, noInternalInput: { classPropertyName: "noInternalInput", publicName: "noInternalInput", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { checked: "checkedChange" }, host: { listeners: { "keydown.enter": "onEnter($event)" }, properties: { "class": "hostClasses()", "attr.disabled": "disabled() ? \"\" : null" } }, viewQueries: [{ propertyName: "internalInput", first: true, predicate: ["internalInput"], descendants: true, isSignal: true }], ngImport: i0, template: `
5371
5379
  <div class="radio sh-sheet" [class]="currentClassList()"></div>
5372
5380
 
5373
5381
  <ng-content />
@@ -5383,7 +5391,7 @@ class ShipRadio {
5383
5391
  }
5384
5392
  `, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
5385
5393
  }
5386
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: ShipRadio, decorators: [{
5394
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ShipRadio, decorators: [{
5387
5395
  type: Component,
5388
5396
  args: [{
5389
5397
  selector: 'sh-radio',
@@ -5607,8 +5615,8 @@ class ShipRangeSlider {
5607
5615
  this.#inputElement.oninput = null;
5608
5616
  }
5609
5617
  }
5610
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: ShipRangeSlider, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
5611
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.5", type: ShipRangeSlider, isStandalone: true, selector: "sh-range-slider", inputs: { unit: { classPropertyName: "unit", publicName: "unit", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, sharp: { classPropertyName: "sharp", publicName: "sharp", isSignal: true, isRequired: false, transformFunction: null }, alwaysShow: { classPropertyName: "alwaysShow", publicName: "alwaysShow", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { value: "valueChange" }, host: { properties: { "class.sh-range-slider": "true", "class": "hostClasses()", "class.has-input": "this.hasInputElement" } }, ngImport: i0, template: `
5618
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ShipRangeSlider, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
5619
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.6", type: ShipRangeSlider, isStandalone: true, selector: "sh-range-slider", inputs: { unit: { classPropertyName: "unit", publicName: "unit", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, sharp: { classPropertyName: "sharp", publicName: "sharp", isSignal: true, isRequired: false, transformFunction: null }, alwaysShow: { classPropertyName: "alwaysShow", publicName: "alwaysShow", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { value: "valueChange" }, host: { properties: { "class.sh-range-slider": "true", "class": "hostClasses()", "class.has-input": "this.hasInputElement" } }, ngImport: i0, template: `
5612
5620
  <div class="label">
5613
5621
  <ng-content select="label"></ng-content>
5614
5622
  </div>
@@ -5634,7 +5642,7 @@ class ShipRangeSlider {
5634
5642
  </div>
5635
5643
  `, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
5636
5644
  }
5637
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: ShipRangeSlider, decorators: [{
5645
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ShipRangeSlider, decorators: [{
5638
5646
  type: Component,
5639
5647
  args: [{
5640
5648
  selector: 'sh-range-slider',
@@ -5682,10 +5690,10 @@ class ShipSpinner {
5682
5690
  color: this.color,
5683
5691
  });
5684
5692
  }
5685
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: ShipSpinner, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
5686
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.5", type: ShipSpinner, isStandalone: true, selector: "sh-spinner", inputs: { color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "hostClasses()" } }, ngImport: i0, template: ``, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
5693
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ShipSpinner, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
5694
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.6", type: ShipSpinner, isStandalone: true, selector: "sh-spinner", inputs: { color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "hostClasses()" } }, ngImport: i0, template: ``, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
5687
5695
  }
5688
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: ShipSpinner, decorators: [{
5696
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ShipSpinner, decorators: [{
5689
5697
  type: Component,
5690
5698
  args: [{
5691
5699
  selector: 'sh-spinner',
@@ -5748,15 +5756,16 @@ class ShipSelect {
5748
5756
  this.inlineTemplate = contentChild(TemplateRef, ...(ngDevMode ? [{ debugName: "inlineTemplate" }] : /* istanbul ignore next */ []));
5749
5757
  this.optionsWrapRef = viewChild.required('optionsWrap');
5750
5758
  this.inputRefInput = signal(null, ...(ngDevMode ? [{ debugName: "inputRefInput" }] : /* istanbul ignore next */ []));
5751
- this.#inputObserver = typeof MutationObserver !== 'undefined' &&
5752
- new MutationObserver((mutations) => {
5759
+ this.#inputObserver = typeof MutationObserver !== 'undefined'
5760
+ ? new MutationObserver((mutations) => {
5753
5761
  for (var mutation of mutations) {
5754
5762
  if (mutation && (mutation.target.nodeName === 'INPUT' || mutation.target.nodeName === 'TEXTAREA')) {
5755
5763
  this.inputRefInput.set(new ElementRef(mutation.target));
5756
5764
  this.#inputObserver.disconnect();
5757
5765
  }
5758
5766
  }
5759
- });
5767
+ })
5768
+ : undefined;
5760
5769
  this.inputValue = signal('', ...(ngDevMode ? [{ debugName: "inputValue" }] : /* istanbul ignore next */ []));
5761
5770
  this.prevInputValue = signal(null, ...(ngDevMode ? [{ debugName: "prevInputValue" }] : /* istanbul ignore next */ []));
5762
5771
  this.focusedOptionIndex = signal(-1, ...(ngDevMode ? [{ debugName: "focusedOptionIndex" }] : /* istanbul ignore next */ []));
@@ -6220,7 +6229,7 @@ class ShipSelect {
6220
6229
  updateInputElValue() {
6221
6230
  const inputEl = this.inputRefEl();
6222
6231
  const inputValue = this.inputValue();
6223
- if (!inputEl)
6232
+ if (!inputEl || inputEl.value === inputValue)
6224
6233
  return;
6225
6234
  inputEl.value = inputValue;
6226
6235
  inputEl.dispatchEvent(new Event('input'));
@@ -6271,8 +6280,8 @@ class ShipSelect {
6271
6280
  this.#inputObserver.disconnect();
6272
6281
  }
6273
6282
  }
6274
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: ShipSelect, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
6275
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.5", type: ShipSelect, isStandalone: true, selector: "sh-select", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, asFreeText: { classPropertyName: "asFreeText", publicName: "asFreeText", isSignal: true, isRequired: false, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, optionTitle: { classPropertyName: "optionTitle", publicName: "optionTitle", isSignal: true, isRequired: false, transformFunction: null }, freeTextTitle: { classPropertyName: "freeTextTitle", publicName: "freeTextTitle", isSignal: true, isRequired: false, transformFunction: null }, freeTextPlaceholder: { classPropertyName: "freeTextPlaceholder", publicName: "freeTextPlaceholder", isSignal: true, isRequired: false, transformFunction: null }, validateFreeText: { classPropertyName: "validateFreeText", publicName: "validateFreeText", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, lazySearch: { classPropertyName: "lazySearch", publicName: "lazySearch", isSignal: true, isRequired: false, transformFunction: null }, inlineSearch: { classPropertyName: "inlineSearch", publicName: "inlineSearch", isSignal: true, isRequired: false, transformFunction: null }, asText: { classPropertyName: "asText", publicName: "asText", isSignal: true, isRequired: false, transformFunction: null }, isClearable: { classPropertyName: "isClearable", publicName: "isClearable", isSignal: true, isRequired: false, transformFunction: null }, selectMultiple: { classPropertyName: "selectMultiple", publicName: "selectMultiple", isSignal: true, isRequired: false, transformFunction: null }, optionTemplate: { classPropertyName: "optionTemplate", publicName: "optionTemplate", isSignal: true, isRequired: false, transformFunction: null }, selectedOptionTemplate: { classPropertyName: "selectedOptionTemplate", publicName: "selectedOptionTemplate", isSignal: true, isRequired: false, transformFunction: null }, placeholderTemplate: { classPropertyName: "placeholderTemplate", publicName: "placeholderTemplate", isSignal: true, isRequired: false, transformFunction: null }, freeTextOptionTemplate: { classPropertyName: "freeTextOptionTemplate", publicName: "freeTextOptionTemplate", isSignal: true, isRequired: false, transformFunction: null }, isOpen: { classPropertyName: "isOpen", publicName: "isOpen", isSignal: true, isRequired: false, transformFunction: null }, isLoading: { classPropertyName: "isLoading", publicName: "isLoading", isSignal: true, isRequired: false, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null }, selectedOptions: { classPropertyName: "selectedOptions", publicName: "selectedOptions", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { readonly: "readonlyChange", disabled: "disabledChange", isOpen: "isOpenChange", isLoading: "isLoadingChange", options: "optionsChange", selectedOptions: "selectedOptionsChange", cleared: "cleared", onAddNewFreeTextOption: "onAddNewFreeTextOption" }, host: { properties: { "class.multiple": "selectMultiple()", "class": "hostClasses()" } }, queries: [{ propertyName: "inlineTemplate", first: true, predicate: TemplateRef, descendants: true, isSignal: true }], viewQueries: [{ propertyName: "optionsWrapRef", first: true, predicate: ["optionsWrap"], descendants: true, isSignal: true }], ngImport: i0, template: `
6283
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ShipSelect, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
6284
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.6", type: ShipSelect, isStandalone: true, selector: "sh-select", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, asFreeText: { classPropertyName: "asFreeText", publicName: "asFreeText", isSignal: true, isRequired: false, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, optionTitle: { classPropertyName: "optionTitle", publicName: "optionTitle", isSignal: true, isRequired: false, transformFunction: null }, freeTextTitle: { classPropertyName: "freeTextTitle", publicName: "freeTextTitle", isSignal: true, isRequired: false, transformFunction: null }, freeTextPlaceholder: { classPropertyName: "freeTextPlaceholder", publicName: "freeTextPlaceholder", isSignal: true, isRequired: false, transformFunction: null }, validateFreeText: { classPropertyName: "validateFreeText", publicName: "validateFreeText", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, lazySearch: { classPropertyName: "lazySearch", publicName: "lazySearch", isSignal: true, isRequired: false, transformFunction: null }, inlineSearch: { classPropertyName: "inlineSearch", publicName: "inlineSearch", isSignal: true, isRequired: false, transformFunction: null }, asText: { classPropertyName: "asText", publicName: "asText", isSignal: true, isRequired: false, transformFunction: null }, isClearable: { classPropertyName: "isClearable", publicName: "isClearable", isSignal: true, isRequired: false, transformFunction: null }, selectMultiple: { classPropertyName: "selectMultiple", publicName: "selectMultiple", isSignal: true, isRequired: false, transformFunction: null }, optionTemplate: { classPropertyName: "optionTemplate", publicName: "optionTemplate", isSignal: true, isRequired: false, transformFunction: null }, selectedOptionTemplate: { classPropertyName: "selectedOptionTemplate", publicName: "selectedOptionTemplate", isSignal: true, isRequired: false, transformFunction: null }, placeholderTemplate: { classPropertyName: "placeholderTemplate", publicName: "placeholderTemplate", isSignal: true, isRequired: false, transformFunction: null }, freeTextOptionTemplate: { classPropertyName: "freeTextOptionTemplate", publicName: "freeTextOptionTemplate", isSignal: true, isRequired: false, transformFunction: null }, isOpen: { classPropertyName: "isOpen", publicName: "isOpen", isSignal: true, isRequired: false, transformFunction: null }, isLoading: { classPropertyName: "isLoading", publicName: "isLoading", isSignal: true, isRequired: false, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null }, selectedOptions: { classPropertyName: "selectedOptions", publicName: "selectedOptions", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { readonly: "readonlyChange", disabled: "disabledChange", isOpen: "isOpenChange", isLoading: "isLoadingChange", options: "optionsChange", selectedOptions: "selectedOptionsChange", cleared: "cleared", onAddNewFreeTextOption: "onAddNewFreeTextOption" }, host: { properties: { "class.multiple": "selectMultiple()", "class": "hostClasses()" } }, queries: [{ propertyName: "inlineTemplate", first: true, predicate: TemplateRef, descendants: true, isSignal: true }], viewQueries: [{ propertyName: "optionsWrapRef", first: true, predicate: ["optionsWrap"], descendants: true, isSignal: true }], ngImport: i0, template: `
6276
6285
  @let _placeholderTemplate = placeholderTemplate();
6277
6286
  @let _optionTemplate = optionTemplate();
6278
6287
  @let _freeTextOptionTemplate = freeTextOptionTemplate();
@@ -6430,7 +6439,7 @@ class ShipSelect {
6430
6439
  </sh-popover>
6431
6440
  `, isInline: true, dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: ShipPopover, selector: "sh-popover", inputs: ["asMultiLayer", "asSheetOnMobile", "disableOpenByClick", "isOpen", "options"], outputs: ["isOpenChange", "closed"] }, { kind: "component", type: ShipFormField, selector: "sh-form-field", inputs: ["color", "variant", "size", "readonly"] }, { kind: "component", type: ShipIcon, selector: "sh-icon", inputs: ["color", "size"] }, { kind: "component", type: ShipCheckbox, selector: "sh-checkbox", inputs: ["checked", "color", "variant", "readonly", "disabled", "noInternalInput"], outputs: ["checkedChange"] }, { kind: "component", type: ShipSpinner, selector: "sh-spinner", inputs: ["color"] }, { kind: "component", type: ShipChip, selector: "sh-chip", inputs: ["color", "variant", "size", "sharp", "dynamic", "readonly"] }, { kind: "component", type: ShipDivider, selector: "sh-divider" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
6432
6441
  }
6433
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: ShipSelect, decorators: [{
6442
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ShipSelect, decorators: [{
6434
6443
  type: Component,
6435
6444
  args: [{
6436
6445
  selector: 'sh-select',
@@ -6604,14 +6613,15 @@ function watchHostClass(className) {
6604
6613
  const elementRef = inject(ElementRef);
6605
6614
  const destroyRef = inject(DestroyRef);
6606
6615
  const hasClass = signal(false, ...(ngDevMode ? [{ debugName: "hasClass" }] : /* istanbul ignore next */ []));
6607
- const observer = typeof MutationObserver !== 'undefined' &&
6608
- new MutationObserver((mutations) => {
6616
+ const observer = typeof MutationObserver !== 'undefined'
6617
+ ? new MutationObserver((mutations) => {
6609
6618
  mutations.forEach((mutation) => {
6610
6619
  if (mutation.type === 'attributes' && mutation.attributeName === 'class') {
6611
6620
  hasClass.set(elementRef.nativeElement.classList.contains(className));
6612
6621
  }
6613
6622
  });
6614
- });
6623
+ })
6624
+ : undefined;
6615
6625
  runInInjectionContext(elementRef.nativeElement, () => {
6616
6626
  if (observer) {
6617
6627
  observer.observe(elementRef.nativeElement, { attributes: true });
@@ -6746,8 +6756,8 @@ class ShipSidenav {
6746
6756
  e.stopPropagation();
6747
6757
  this.isDragging.set(false);
6748
6758
  }
6749
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: ShipSidenav, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
6750
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.5", type: ShipSidenav, isStandalone: true, selector: "sh-sidenav", inputs: { disableDrag: { classPropertyName: "disableDrag", publicName: "disableDrag", isSignal: true, isRequired: false, transformFunction: null }, isOpen: { classPropertyName: "isOpen", publicName: "isOpen", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { isOpen: "isOpenChange" }, host: { properties: { "class.open": "isOpen()", "class.closed": "!isOpen()", "class.is-dragging": "isDragging()" } }, viewQueries: [{ propertyName: "dragImageElement", first: true, predicate: ["dragImageElement"], descendants: true, isSignal: true }], ngImport: i0, template: `
6759
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ShipSidenav, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
6760
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.6", type: ShipSidenav, isStandalone: true, selector: "sh-sidenav", inputs: { disableDrag: { classPropertyName: "disableDrag", publicName: "disableDrag", isSignal: true, isRequired: false, transformFunction: null }, isOpen: { classPropertyName: "isOpen", publicName: "isOpen", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { isOpen: "isOpenChange" }, host: { properties: { "class.open": "isOpen()", "class.closed": "!isOpen()", "class.is-dragging": "isDragging()" } }, viewQueries: [{ propertyName: "dragImageElement", first: true, predicate: ["dragImageElement"], descendants: true, isSignal: true }], ngImport: i0, template: `
6751
6761
  @if (isOverlay() && !disableDrag()) {
6752
6762
  <div #dragImageElement class="drag-image"></div>
6753
6763
  }
@@ -6784,7 +6794,7 @@ class ShipSidenav {
6784
6794
  </div>
6785
6795
  `, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
6786
6796
  }
6787
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: ShipSidenav, decorators: [{
6797
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ShipSidenav, decorators: [{
6788
6798
  type: Component,
6789
6799
  args: [{
6790
6800
  selector: 'sh-sidenav',
@@ -6833,110 +6843,130 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImpor
6833
6843
  }]
6834
6844
  }], propDecorators: { disableDrag: [{ type: i0.Input, args: [{ isSignal: true, alias: "disableDrag", required: false }] }], isOpen: [{ type: i0.Input, args: [{ isSignal: true, alias: "isOpen", required: false }] }, { type: i0.Output, args: ["isOpenChange"] }], dragImageElement: [{ type: i0.ViewChild, args: ['dragImageElement', { isSignal: true }] }] } });
6835
6845
 
6836
- class GridSortable {
6837
- #selfRef = inject((ElementRef));
6838
- #renderer = inject(Renderer2);
6839
- #draggedItem = null;
6840
- onDragStart(event) {
6841
- this.#draggedItem = event.target;
6842
- this.updateOrder(); // Initialize order for all children
6843
- }
6844
- onDragOver(event) {
6845
- event.preventDefault();
6846
- }
6847
- onDragEnter(event) {
6848
- const target = event.target;
6849
- if (this.#draggedItem && target !== this.#draggedItem && target.parentNode === this.#draggedItem.parentNode) {
6850
- const parent = this.#draggedItem.parentNode;
6851
- const draggedIndex = Array.from(parent.children).indexOf(this.#draggedItem);
6852
- const targetIndex = Array.from(parent.children).indexOf(target);
6853
- // Update only the flipped indexes
6854
- this.#renderer.setStyle(this.#draggedItem, 'order', targetIndex);
6855
- this.#renderer.setStyle(target, 'order', draggedIndex);
6856
- }
6857
- }
6858
- updateOrder(excludedItem = null) {
6859
- const items = this.#selfRef.nativeElement.children;
6860
- Array.from(items).forEach((item, index) => {
6861
- if (item !== excludedItem) {
6862
- this.#renderer.setStyle(item, 'order', index);
6846
+ var _a;
6847
+ function createSortableManager(signals, config) {
6848
+ const isSingle = typeof signals === 'function';
6849
+ return {
6850
+ async drop(event) {
6851
+ // 1. Await API Authorization (RxJS or Promises)
6852
+ if (config?.onBeforeDrop) {
6853
+ const result = config.onBeforeDrop(event);
6854
+ let accept = false;
6855
+ if (isObservable(result)) {
6856
+ accept = await firstValueFrom(result);
6857
+ }
6858
+ else if (result instanceof Promise) {
6859
+ accept = await result;
6860
+ }
6861
+ else {
6862
+ accept = result;
6863
+ }
6864
+ if (!accept)
6865
+ return; // Drop rejected, UI stays exactly as it was
6866
+ }
6867
+ // 2. Perform UI Signal Update
6868
+ const isCrossDrop = event.previousContainer !== event.container;
6869
+ if (!isCrossDrop) {
6870
+ // Internal Reorder (moveIndex)
6871
+ let targetSignal;
6872
+ if (isSingle) {
6873
+ targetSignal = signals;
6874
+ }
6875
+ else {
6876
+ const id = event.container.sortableGroup() || '';
6877
+ targetSignal = signals[id];
6878
+ }
6879
+ if (targetSignal) {
6880
+ targetSignal.update((arr) => moveIndex(arr, event));
6881
+ }
6863
6882
  }
6864
- });
6865
- }
6866
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: GridSortable, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
6867
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.5", type: GridSortable, isStandalone: true, selector: "[shGridSortable]", host: { listeners: { "dragstart": "onDragStart($event)", "dragover": "onDragOver($event)", "dragenter": "onDragEnter($event)" } }, ngImport: i0 }); }
6883
+ else {
6884
+ // Cross DropTransfer
6885
+ if (isSingle) {
6886
+ console.warn('Cross drops require a dictionary of signals in createSortableManager');
6887
+ return;
6888
+ }
6889
+ const sourceId = event.previousContainer.sortableGroup() || '';
6890
+ const targetId = event.container.sortableGroup() || '';
6891
+ const sigDict = signals;
6892
+ const sourceSignal = sigDict[sourceId];
6893
+ const targetSignal = sigDict[targetId];
6894
+ if (sourceSignal && targetSignal) {
6895
+ const sourceArr = [...sourceSignal()];
6896
+ const targetArr = [...targetSignal()];
6897
+ const [item] = sourceArr.splice(event.previousIndex, 1);
6898
+ if (item) {
6899
+ targetArr.splice(event.currentIndex, 0, item);
6900
+ sourceSignal.set(sourceArr);
6901
+ targetSignal.set(targetArr);
6902
+ }
6903
+ }
6904
+ }
6905
+ },
6906
+ };
6868
6907
  }
6869
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: GridSortable, decorators: [{
6870
- type: Directive,
6871
- args: [{
6872
- standalone: true,
6873
- selector: '[shGridSortable]',
6874
- }]
6875
- }], propDecorators: { onDragStart: [{
6876
- type: HostListener,
6877
- args: ['dragstart', ['$event']]
6878
- }], onDragOver: [{
6879
- type: HostListener,
6880
- args: ['dragover', ['$event']]
6881
- }], onDragEnter: [{
6882
- type: HostListener,
6883
- args: ['dragenter', ['$event']]
6884
- }] } });
6885
-
6886
6908
  class ShipSortable {
6887
6909
  constructor() {
6888
6910
  this.#document = inject(DOCUMENT);
6889
6911
  this.#selfEl = inject((ElementRef));
6890
6912
  this.#renderer = inject(Renderer2);
6891
- this.#placeholderEl = signal(null, ...(ngDevMode ? [{ debugName: "#placeholderEl" }] : /* istanbul ignore next */ []));
6892
- this.#ghostEl = signal(null, ...(ngDevMode ? [{ debugName: "#ghostEl" }] : /* istanbul ignore next */ []));
6893
- this.#parentGap = signal(0, ...(ngDevMode ? [{ debugName: "#parentGap" }] : /* istanbul ignore next */ []));
6913
+ this.#crossSpacerEl = signal(null, ...(ngDevMode ? [{ debugName: "#crossSpacerEl" }] : /* istanbul ignore next */ []));
6914
+ this.shSortable = input(...(ngDevMode ? [undefined, { debugName: "shSortable" }] : /* istanbul ignore next */ []));
6915
+ this.sortableGroup = input(...(ngDevMode ? [undefined, { debugName: "sortableGroup" }] : /* istanbul ignore next */ []));
6916
+ this.sortDrop = output();
6917
+ this.afterDrop = output();
6918
+ this.crossDrop = output();
6894
6919
  this.dragStartIndex = signal(-1, ...(ngDevMode ? [{ debugName: "dragStartIndex" }] : /* istanbul ignore next */ []));
6895
6920
  this.dragToIndex = signal(-1, ...(ngDevMode ? [{ debugName: "dragToIndex" }] : /* istanbul ignore next */ []));
6921
+ this.initialPositions = signal([], ...(ngDevMode ? [{ debugName: "initialPositions" }] : /* istanbul ignore next */ []));
6896
6922
  this.dragables = signal([], ...(ngDevMode ? [{ debugName: "dragables" }] : /* istanbul ignore next */ []));
6897
- this.afterDrop = output();
6898
6923
  this.abortController = null;
6899
6924
  this.isDropping = false;
6925
+ this.isCrossTarget = false;
6900
6926
  this.draggingEffect = effect(() => {
6901
6927
  const currentDragPosIndex = this.dragToIndex();
6902
6928
  const startIndex = this.dragStartIndex();
6903
6929
  const dragables = this.dragables();
6904
- if (currentDragPosIndex > -1 && startIndex > -1 && dragables.length > 0) {
6905
- const placeholderEl = this.#placeholderEl();
6906
- const gapValue = this.#parentGap();
6907
- const draggedElement = dragables[startIndex];
6908
- if (!draggedElement)
6909
- return;
6910
- const totalShift = draggedElement.offsetHeight + gapValue;
6911
- let placeholderElShift = 0;
6912
- if (currentDragPosIndex > startIndex) {
6913
- for (let i = startIndex + 1; i <= currentDragPosIndex; i++) {
6914
- placeholderElShift += dragables[i].offsetHeight + gapValue;
6915
- }
6916
- }
6917
- else if (currentDragPosIndex < startIndex) {
6918
- for (let i = startIndex - 1; i >= currentDragPosIndex; i--) {
6919
- placeholderElShift -= dragables[i].offsetHeight + gapValue;
6920
- }
6930
+ const positions = this.initialPositions();
6931
+ if (currentDragPosIndex > -1 && positions.length > 0) {
6932
+ this.#renderer.removeClass(this.#selfEl.nativeElement, 'item-dragged-out');
6933
+ let ghostEl = null;
6934
+ let ghostStartPosIndex = -1;
6935
+ if (!this.isCrossTarget && startIndex > -1 && dragables.length > startIndex) {
6936
+ ghostEl = dragables[startIndex];
6937
+ ghostStartPosIndex = startIndex;
6921
6938
  }
6922
- if (placeholderEl) {
6923
- const newTransform = `translateY(${placeholderElShift}px)`;
6924
- if (placeholderEl.style.transform !== newTransform) {
6925
- this.#renderer.setStyle(placeholderEl, 'transform', newTransform);
6926
- }
6939
+ else if (this.isCrossTarget && this.#crossSpacerEl()) {
6940
+ ghostEl = this.#crossSpacerEl();
6941
+ ghostStartPosIndex = positions.length - 1;
6927
6942
  }
6928
6943
  for (let i = 0; i < dragables.length; i++) {
6929
- if (i === startIndex)
6944
+ if (i === startIndex && !this.isCrossTarget)
6930
6945
  continue;
6931
- let newTransform = 'translateY(0)';
6932
- if (currentDragPosIndex > startIndex && currentDragPosIndex >= i && startIndex < i) {
6933
- newTransform = `translateY(${-totalShift}px)`;
6946
+ const targetVisualIndex = this.getVisualIndexOfElement(i);
6947
+ if (targetVisualIndex < positions.length && positions[i]) {
6948
+ const dx = positions[targetVisualIndex].x - positions[i].x;
6949
+ const dy = positions[targetVisualIndex].y - positions[i].y;
6950
+ const newTransform = `translate(${dx}px, ${dy}px)`;
6951
+ if (dragables[i].style.transform !== newTransform) {
6952
+ this.#renderer.setStyle(dragables[i], 'transform', newTransform);
6953
+ }
6934
6954
  }
6935
- else if (currentDragPosIndex < startIndex && currentDragPosIndex <= i && startIndex > i) {
6936
- newTransform = `translateY(${totalShift}px)`;
6955
+ }
6956
+ if (ghostEl && ghostStartPosIndex > -1 && positions[currentDragPosIndex] && positions[ghostStartPosIndex]) {
6957
+ const dx = positions[currentDragPosIndex].x - positions[ghostStartPosIndex].x;
6958
+ const dy = positions[currentDragPosIndex].y - positions[ghostStartPosIndex].y;
6959
+ const newTransform = `translate(${dx}px, ${dy}px)`;
6960
+ if (ghostEl.style.transform !== newTransform) {
6961
+ this.#renderer.setStyle(ghostEl, 'transform', newTransform);
6937
6962
  }
6938
- if (dragables[i].style.transform !== newTransform) {
6939
- this.#renderer.setStyle(dragables[i], 'transform', newTransform);
6963
+ }
6964
+ }
6965
+ else if (startIndex > -1 && currentDragPosIndex === -1 && !this.isCrossTarget) {
6966
+ this.#renderer.addClass(this.#selfEl.nativeElement, 'item-dragged-out');
6967
+ for (let i = 0; i < dragables.length; i++) {
6968
+ if (dragables[i].style.transform !== '') {
6969
+ this.#renderer.setStyle(dragables[i], 'transform', '');
6940
6970
  }
6941
6971
  }
6942
6972
  }
@@ -6952,28 +6982,34 @@ class ShipSortable {
6952
6982
  el.addEventListener('dragend', () => this.dragEnd(), { signal: this.abortController.signal });
6953
6983
  }
6954
6984
  }, ...(ngDevMode ? [{ debugName: "draggablesEffect" }] : /* istanbul ignore next */ []));
6955
- this.#dragableObserver = typeof MutationObserver !== 'undefined' &&
6956
- new MutationObserver((mutations) => {
6985
+ this.#dragableObserver = typeof MutationObserver !== 'undefined'
6986
+ ? new MutationObserver((mutations) => {
6957
6987
  for (const mutation of mutations) {
6958
6988
  if (mutation.type === 'childList') {
6959
- const draggableElements = Array.from(this.#selfEl.nativeElement.querySelectorAll('[draggable]:not(.sortable-placeholder):not(.sortable-ghost)'));
6989
+ const draggableElements = Array.from(this.#selfEl.nativeElement.querySelectorAll('[draggable]:not(.sortable-spacer)'));
6960
6990
  this.dragables.set(draggableElements);
6961
6991
  if (this.isDropping) {
6962
- // The drop is complete and Angular has updated the DOM.
6963
- // Now we can safely reset the styles and the flag.
6964
- this.#resetStyles();
6965
6992
  this.isDropping = false;
6993
+ this.#cleanupDragState();
6994
+ if (_a.activeTarget === this) {
6995
+ _a.activeTarget = null;
6996
+ }
6997
+ if (_a.activeSource === this) {
6998
+ _a.activeSource = null;
6999
+ }
6966
7000
  }
6967
7001
  }
6968
7002
  }
6969
- });
7003
+ })
7004
+ : undefined;
6970
7005
  }
6971
7006
  #document;
6972
7007
  #selfEl;
6973
7008
  #renderer;
6974
- #placeholderEl;
6975
- #ghostEl;
6976
- #parentGap;
7009
+ #crossSpacerEl;
7010
+ static { this.activeSource = null; }
7011
+ static { this.activeDraggedElement = null; }
7012
+ static { this.activeTarget = null; }
6977
7013
  getIndexOfElement(element) {
6978
7014
  return this.dragables().findIndex((el) => el === element);
6979
7015
  }
@@ -6994,32 +7030,33 @@ class ShipSortable {
6994
7030
  }
6995
7031
  }
6996
7032
  e.dataTransfer.effectAllowed = 'move';
6997
- const ghostElement = draggedElement.cloneNode(true);
6998
- this.#ghostEl.set(ghostElement);
6999
- this.#renderer.addClass(ghostElement, 'sortable-ghost');
7000
- this.#renderer.setStyle(ghostElement, 'position', 'absolute');
7001
- this.#renderer.setStyle(ghostElement, 'top', '0');
7002
- this.#renderer.setStyle(ghostElement, 'left', '-9999px');
7003
- this.#renderer.appendChild(this.#selfEl.nativeElement, ghostElement);
7004
- e.dataTransfer.setDragImage(ghostElement, e.offsetX, e.offsetY);
7005
- const parentStyle = window.getComputedStyle(draggedElement.parentElement);
7006
- this.#parentGap.set(parseFloat(parentStyle.gap) || 0);
7033
+ _a.activeSource = this;
7034
+ _a.activeDraggedElement = draggedElement;
7035
+ _a.activeTarget = this;
7036
+ this.isCrossTarget = false;
7037
+ const containerRect = this.#selfEl.nativeElement.getBoundingClientRect();
7038
+ const container = this.#selfEl.nativeElement;
7039
+ const positions = Array.from(this.dragables()).map((el) => {
7040
+ const rect = el.getBoundingClientRect();
7041
+ return {
7042
+ x: rect.left - containerRect.left - container.clientLeft + container.scrollLeft,
7043
+ y: rect.top - containerRect.top - container.clientTop + container.scrollTop,
7044
+ width: rect.width,
7045
+ height: rect.height,
7046
+ };
7047
+ });
7048
+ this.initialPositions.set(positions);
7049
+ const rect = draggedElement.getBoundingClientRect();
7050
+ const dragOffsetX = Math.max(0, e.clientX - rect.left);
7051
+ const dragOffsetY = Math.max(0, e.clientY - rect.top);
7052
+ e.dataTransfer.setDragImage(draggedElement, dragOffsetX, dragOffsetY);
7007
7053
  const draggedElementIndex = this.getIndexOfElement(draggedElement);
7008
7054
  this.dragStartIndex.set(draggedElementIndex);
7009
7055
  this.dragToIndex.set(draggedElementIndex);
7010
- this.#renderer.addClass(draggedElement, 'sortable-dragged-el');
7011
- this.#renderer.addClass(this.#selfEl.nativeElement, 'dragging');
7012
- queueMicrotask(() => {
7013
- const placeholderElement = draggedElement.cloneNode(true);
7014
- this.#renderer.addClass(placeholderElement, 'sortable-placeholder');
7015
- this.#renderer.removeClass(placeholderElement, 'sortable-dragged-el');
7016
- this.#renderer.setStyle(placeholderElement, 'left', `${draggedElement.offsetLeft}px`);
7017
- this.#renderer.setStyle(placeholderElement, 'width', `${draggedElement.offsetWidth}px`);
7018
- this.#renderer.setStyle(placeholderElement, 'top', `${draggedElement.offsetTop}px`);
7019
- this.#renderer.setStyle(placeholderElement, 'zIndex', '1');
7020
- this.#placeholderEl.set(placeholderElement);
7021
- this.#selfEl.nativeElement.appendChild(placeholderElement);
7022
- });
7056
+ setTimeout(() => {
7057
+ this.#renderer.addClass(draggedElement, 'sortable-ghost');
7058
+ this.#renderer.addClass(this.#selfEl.nativeElement, 'dragging');
7059
+ }, 0);
7023
7060
  }
7024
7061
  }
7025
7062
  ngOnInit() {
@@ -7027,71 +7064,200 @@ class ShipSortable {
7027
7064
  this.#dragableObserver.observe(this.#selfEl.nativeElement, { childList: true });
7028
7065
  }
7029
7066
  }
7067
+ dragEnter(e) {
7068
+ if (!_a.activeSource || _a.activeSource === this)
7069
+ return;
7070
+ const sourceGroup = _a.activeSource.sortableGroup();
7071
+ const currentGroup = this.sortableGroup();
7072
+ const sourceManager = _a.activeSource.shSortable();
7073
+ const currentManager = this.shSortable();
7074
+ const isSameGroup = !!(sourceGroup && currentGroup && sourceGroup === currentGroup);
7075
+ const isSameManager = !!(sourceManager?.drop && currentManager?.drop && sourceManager === currentManager);
7076
+ if (isSameGroup || isSameManager) {
7077
+ _a.activeTarget = this;
7078
+ _a.activeSource.dragToIndex.set(-1);
7079
+ // Setup Target Placeholder if we are just entering
7080
+ if (!this.isCrossTarget) {
7081
+ this.isCrossTarget = true;
7082
+ this.#renderer.addClass(this.#selfEl.nativeElement, 'dragging');
7083
+ // Compute cross-target positions by temporarily appending the active ghost to measure layout flow
7084
+ const sourceElement = _a.activeDraggedElement;
7085
+ const tempElement = sourceElement.cloneNode(true);
7086
+ this.#renderer.setStyle(tempElement, 'transform', '');
7087
+ // Ensure it doesn't have the original ghost state yet to measure flow without its potential transition scaling
7088
+ this.#renderer.removeClass(tempElement, 'sortable-ghost');
7089
+ this.#selfEl.nativeElement.appendChild(tempElement);
7090
+ // Refresh dragables with temp included locally
7091
+ const currentElements = Array.from(this.#selfEl.nativeElement.querySelectorAll('[draggable]:not(.sortable-spacer)'));
7092
+ const containerRect = this.#selfEl.nativeElement.getBoundingClientRect();
7093
+ const container = this.#selfEl.nativeElement;
7094
+ const positions = currentElements.map((el) => {
7095
+ const rect = el.getBoundingClientRect();
7096
+ return {
7097
+ x: rect.left - containerRect.left - container.clientLeft + container.scrollLeft,
7098
+ y: rect.top - containerRect.top - container.clientTop + container.scrollTop,
7099
+ width: rect.width,
7100
+ height: rect.height,
7101
+ };
7102
+ });
7103
+ this.initialPositions.set(positions);
7104
+ // Keep the temp element as a structural spacer to physically expand the container's height/width
7105
+ // Remove draggable so it isn't picked up by draggables() observers
7106
+ tempElement.removeAttribute('draggable');
7107
+ this.#renderer.addClass(tempElement, 'sortable-spacer');
7108
+ this.#crossSpacerEl.set(tempElement);
7109
+ this.#renderer.addClass(tempElement, 'sortable-ghost');
7110
+ this.dragToIndex.set(this.dragables().length);
7111
+ }
7112
+ }
7113
+ }
7114
+ dragLeave(e) {
7115
+ if (!_a.activeSource || _a.activeSource === this)
7116
+ return;
7117
+ if (e.relatedTarget) {
7118
+ if (this.#selfEl.nativeElement.contains(e.relatedTarget)) {
7119
+ return;
7120
+ }
7121
+ }
7122
+ else {
7123
+ const rect = this.#selfEl.nativeElement.getBoundingClientRect();
7124
+ const isOutside = e.clientX < rect.left || e.clientX > rect.right || e.clientY < rect.top || e.clientY > rect.bottom;
7125
+ if (!isOutside)
7126
+ return;
7127
+ }
7128
+ if (this.isCrossTarget) {
7129
+ this.#cleanupDragState();
7130
+ if (_a.activeTarget === this) {
7131
+ _a.activeTarget = _a.activeSource;
7132
+ }
7133
+ }
7134
+ }
7030
7135
  dragOver(e) {
7031
7136
  e.preventDefault();
7032
7137
  e.dataTransfer.dropEffect = 'move';
7033
- const startIndex = this.dragStartIndex();
7034
- if (startIndex === -1) {
7138
+ if (_a.activeTarget !== this)
7035
7139
  return;
7036
- }
7037
- const draggables = this.dragables();
7038
- const draggedElement = draggables[startIndex];
7039
- const targetElement = draggables.find((child) => {
7040
- if (child === draggedElement) {
7041
- return false;
7140
+ const container = this.#selfEl.nativeElement;
7141
+ const containerRect = container.getBoundingClientRect();
7142
+ // Convert viewport coordinates to container-relative coordinate space
7143
+ const mouseX = e.clientX - containerRect.left - container.clientLeft + container.scrollLeft;
7144
+ const mouseY = e.clientY - containerRect.top - container.clientTop + container.scrollTop;
7145
+ let closestSlotIndex = -1;
7146
+ let minDistance = Infinity;
7147
+ const positions = this.initialPositions();
7148
+ for (let i = 0; i < positions.length; i++) {
7149
+ const pos = positions[i];
7150
+ const centerX = pos.x + pos.width / 2;
7151
+ const centerY = pos.y + pos.height / 2;
7152
+ const dist = Math.hypot(mouseX - centerX, mouseY - centerY);
7153
+ if (dist < minDistance) {
7154
+ minDistance = dist;
7155
+ closestSlotIndex = i;
7156
+ }
7157
+ }
7158
+ if (closestSlotIndex !== -1 && this.dragToIndex() !== closestSlotIndex) {
7159
+ this.dragToIndex.set(closestSlotIndex);
7160
+ }
7161
+ }
7162
+ getVisualIndexOfElement(i) {
7163
+ const startIndex = this.dragStartIndex();
7164
+ const currentDragPosIndex = this.dragToIndex();
7165
+ let targetVisualIndex = i;
7166
+ if (startIndex > -1) {
7167
+ if (currentDragPosIndex > startIndex && i > startIndex && i <= currentDragPosIndex) {
7168
+ targetVisualIndex = i - 1;
7042
7169
  }
7043
- const rect = child.getBoundingClientRect();
7044
- return e.clientY < rect.top + rect.height / 2;
7045
- });
7046
- if (!targetElement) {
7047
- const lastIndex = draggables.length - 1;
7048
- if (this.dragToIndex() !== lastIndex) {
7049
- this.dragToIndex.set(lastIndex);
7170
+ else if (currentDragPosIndex < startIndex && i >= currentDragPosIndex && i < startIndex) {
7171
+ targetVisualIndex = i + 1;
7050
7172
  }
7051
- return;
7052
- }
7053
- let potentialToIndex = this.getIndexOfElement(targetElement);
7054
- if (startIndex < potentialToIndex) {
7055
- potentialToIndex--;
7056
7173
  }
7057
- if (this.dragToIndex() !== potentialToIndex) {
7058
- this.dragToIndex.set(potentialToIndex);
7174
+ else if (this.isCrossTarget) {
7175
+ if (i >= currentDragPosIndex) {
7176
+ targetVisualIndex = i + 1;
7177
+ }
7059
7178
  }
7179
+ return targetVisualIndex;
7060
7180
  }
7061
7181
  drop() {
7062
- if (this.dragStartIndex() !== -1 && this.dragToIndex() !== -1 && this.dragStartIndex() !== this.dragToIndex()) {
7182
+ if (!_a.activeSource)
7183
+ return;
7184
+ // Immediately kill drag transitions before any signal updates
7185
+ this.#renderer.removeClass(_a.activeSource.#selfEl.nativeElement, 'dragging');
7186
+ this.#renderer.removeClass(this.#selfEl.nativeElement, 'dragging');
7187
+ if (_a.activeSource === this) {
7188
+ // Internal Drop
7189
+ if (this.dragStartIndex() !== -1 && this.dragToIndex() !== -1 && this.dragStartIndex() !== this.dragToIndex()) {
7190
+ this.isDropping = true;
7191
+ const event = {
7192
+ previousContainer: this,
7193
+ container: this,
7194
+ previousIndex: this.dragStartIndex(),
7195
+ currentIndex: this.dragToIndex(),
7196
+ };
7197
+ if (this.shSortable()?.drop) {
7198
+ this.shSortable().drop(event);
7199
+ }
7200
+ else {
7201
+ this.sortDrop.emit(event);
7202
+ this.afterDrop.emit({ fromIndex: event.previousIndex, toIndex: event.currentIndex });
7203
+ }
7204
+ }
7205
+ }
7206
+ else if (_a.activeTarget === this && this.isCrossTarget) {
7207
+ // Cross Drop
7063
7208
  this.isDropping = true;
7064
- this.afterDrop.emit({ fromIndex: this.dragStartIndex(), toIndex: this.dragToIndex() });
7209
+ _a.activeSource.isDropping = true;
7210
+ const event = {
7211
+ previousContainer: _a.activeSource,
7212
+ container: this,
7213
+ previousIndex: _a.activeSource.dragStartIndex(),
7214
+ currentIndex: this.dragToIndex(),
7215
+ };
7216
+ if (this.shSortable()?.drop) {
7217
+ this.shSortable().drop(event);
7218
+ }
7219
+ else {
7220
+ this.sortDrop.emit(event);
7221
+ this.crossDrop.emit({
7222
+ previousContainer: _a.activeSource,
7223
+ currentContainer: this,
7224
+ previousIndex: _a.activeSource.dragStartIndex(),
7225
+ currentIndex: this.dragToIndex(),
7226
+ });
7227
+ }
7065
7228
  }
7066
7229
  }
7067
7230
  dragEnd() {
7068
- this.#cleanupDragState();
7069
- }
7070
- #cleanupDragState() {
7071
- const placeholder = this.#placeholderEl();
7072
- const ghost = this.#ghostEl();
7073
- if (placeholder) {
7074
- this.#renderer.removeChild(this.#selfEl.nativeElement, placeholder);
7075
- this.#placeholderEl.set(null);
7231
+ if (_a.activeSource) {
7232
+ _a.activeSource.#renderer.removeClass(_a.activeSource.#selfEl.nativeElement, 'dragging');
7233
+ _a.activeSource.#cleanupDragState();
7076
7234
  }
7077
- if (ghost) {
7078
- this.#renderer.removeChild(this.#selfEl.nativeElement, ghost);
7079
- this.#ghostEl.set(null);
7235
+ if (_a.activeTarget && _a.activeTarget !== _a.activeSource) {
7236
+ _a.activeTarget.#renderer.removeClass(_a.activeTarget.#selfEl.nativeElement, 'dragging');
7237
+ _a.activeTarget.#cleanupDragState();
7080
7238
  }
7081
- // We no longer reset styles here to prevent flicker.
7082
- // The MutationObserver will handle it after the DOM is updated.
7083
- if (!this.isDropping) {
7084
- this.#resetStyles();
7239
+ _a.activeSource = null;
7240
+ _a.activeTarget = null;
7241
+ _a.activeDraggedElement = null;
7242
+ }
7243
+ #cleanupDragState() {
7244
+ this.#renderer.removeClass(this.#selfEl.nativeElement, 'dragging');
7245
+ this.#renderer.removeClass(this.#selfEl.nativeElement, 'item-dragged-out');
7246
+ const crossSpacer = this.#crossSpacerEl();
7247
+ if (crossSpacer) {
7248
+ this.#renderer.removeChild(this.#selfEl.nativeElement, crossSpacer);
7249
+ this.#crossSpacerEl.set(null);
7085
7250
  }
7251
+ this.#resetStyles();
7086
7252
  this.dragStartIndex.set(-1);
7087
7253
  this.dragToIndex.set(-1);
7088
- this.#renderer.removeClass(this.#selfEl.nativeElement, 'dragging');
7254
+ this.isCrossTarget = false;
7089
7255
  }
7090
7256
  #resetStyles() {
7091
7257
  const dragables = this.dragables();
7092
7258
  for (const el of dragables) {
7093
7259
  this.#renderer.setStyle(el, 'transform', '');
7094
- this.#renderer.removeClass(el, 'sortable-dragged-el');
7260
+ this.#renderer.removeClass(el, 'sortable-ghost');
7095
7261
  }
7096
7262
  }
7097
7263
  #dragableObserver;
@@ -7099,16 +7265,26 @@ class ShipSortable {
7099
7265
  this.#dragableObserver?.disconnect();
7100
7266
  this.abortController?.abort();
7101
7267
  }
7102
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: ShipSortable, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
7103
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.5", type: ShipSortable, isStandalone: true, selector: "[shSortable]", outputs: { afterDrop: "afterDrop" }, host: { listeners: { "dragover": "dragOver($event)", "drop": "drop()" } }, ngImport: i0 }); }
7268
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ShipSortable, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
7269
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.6", type: ShipSortable, isStandalone: true, selector: "[shSortable]", inputs: { shSortable: { classPropertyName: "shSortable", publicName: "shSortable", isSignal: true, isRequired: false, transformFunction: null }, sortableGroup: { classPropertyName: "sortableGroup", publicName: "sortableGroup", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { sortDrop: "sortDrop", afterDrop: "afterDrop", crossDrop: "crossDrop" }, host: { listeners: { "dragenter": "dragEnter($event)", "dragleave": "dragLeave($event)", "dragover": "dragOver($event)", "drop": "drop()" }, classAttribute: "sh-sortable" }, ngImport: i0 }); }
7104
7270
  }
7105
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: ShipSortable, decorators: [{
7271
+ _a = ShipSortable;
7272
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ShipSortable, decorators: [{
7106
7273
  type: Directive,
7107
7274
  args: [{
7108
7275
  selector: '[shSortable]',
7109
7276
  standalone: true,
7277
+ host: {
7278
+ class: 'sh-sortable',
7279
+ },
7110
7280
  }]
7111
- }], propDecorators: { afterDrop: [{ type: i0.Output, args: ["afterDrop"] }], dragOver: [{
7281
+ }], propDecorators: { shSortable: [{ type: i0.Input, args: [{ isSignal: true, alias: "shSortable", required: false }] }], sortableGroup: [{ type: i0.Input, args: [{ isSignal: true, alias: "sortableGroup", required: false }] }], sortDrop: [{ type: i0.Output, args: ["sortDrop"] }], afterDrop: [{ type: i0.Output, args: ["afterDrop"] }], crossDrop: [{ type: i0.Output, args: ["crossDrop"] }], dragEnter: [{
7282
+ type: HostListener,
7283
+ args: ['dragenter', ['$event']]
7284
+ }], dragLeave: [{
7285
+ type: HostListener,
7286
+ args: ['dragleave', ['$event']]
7287
+ }], dragOver: [{
7112
7288
  type: HostListener,
7113
7289
  args: ['dragover', ['$event']]
7114
7290
  }], drop: [{
@@ -7116,8 +7292,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImpor
7116
7292
  args: ['drop']
7117
7293
  }] } });
7118
7294
  function moveIndex(array, event) {
7119
- const { fromIndex, toIndex } = event;
7120
- if (fromIndex < 0 || fromIndex >= array.length || toIndex < 0 || toIndex >= array.length) {
7295
+ const fromIndex = 'previousIndex' in event ? event.previousIndex : event.fromIndex;
7296
+ const toIndex = 'currentIndex' in event ? event.currentIndex : event.toIndex;
7297
+ if (fromIndex < 0 || fromIndex >= array.length || toIndex < 0 || toIndex > array.length) {
7121
7298
  return array;
7122
7299
  }
7123
7300
  const newArray = [...array];
@@ -7125,6 +7302,12 @@ function moveIndex(array, event) {
7125
7302
  newArray.splice(toIndex, 0, removedItem);
7126
7303
  return newArray;
7127
7304
  }
7305
+ function transferArrayItem(currentArray, targetArray, currentIndex, targetIndex) {
7306
+ const [item] = currentArray.splice(currentIndex, 1);
7307
+ if (item) {
7308
+ targetArray.splice(targetIndex, 0, item);
7309
+ }
7310
+ }
7128
7311
 
7129
7312
  class ShipStepper extends ShipSelectionGroup {
7130
7313
  constructor() {
@@ -7146,12 +7329,12 @@ class ShipStepper extends ShipSelectionGroup {
7146
7329
  });
7147
7330
  });
7148
7331
  }
7149
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: ShipStepper, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
7150
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.5", type: ShipStepper, isStandalone: true, selector: "sh-stepper", inputs: { color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "hostClasses()" } }, usesInheritance: true, ngImport: i0, template: `
7332
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ShipStepper, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
7333
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.6", type: ShipStepper, isStandalone: true, selector: "sh-stepper", inputs: { color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "hostClasses()" } }, usesInheritance: true, ngImport: i0, template: `
7151
7334
  <ng-content />
7152
7335
  `, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
7153
7336
  }
7154
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: ShipStepper, decorators: [{
7337
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ShipStepper, decorators: [{
7155
7338
  type: Component,
7156
7339
  args: [{
7157
7340
  selector: 'sh-stepper',
@@ -7245,10 +7428,10 @@ class ShipResize {
7245
7428
  cancelAnimationFrame(this.#animationFrameRequest);
7246
7429
  }
7247
7430
  }
7248
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: ShipResize, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
7249
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.5", type: ShipResize, isStandalone: true, selector: "[shResize]", inputs: { resizable: { classPropertyName: "resizable", publicName: "resizable", isSignal: true, isRequired: false, transformFunction: null }, minWidth: { classPropertyName: "minWidth", publicName: "minWidth", isSignal: true, isRequired: false, transformFunction: null }, maxWidth: { classPropertyName: "maxWidth", publicName: "maxWidth", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "document:mousemove": "onMouseMove($event)", "document:mouseup": "onMouseUp($event)", "document:click": "onClick($event)" } }, ngImport: i0 }); }
7431
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ShipResize, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
7432
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.6", type: ShipResize, isStandalone: true, selector: "[shResize]", inputs: { resizable: { classPropertyName: "resizable", publicName: "resizable", isSignal: true, isRequired: false, transformFunction: null }, minWidth: { classPropertyName: "minWidth", publicName: "minWidth", isSignal: true, isRequired: false, transformFunction: null }, maxWidth: { classPropertyName: "maxWidth", publicName: "maxWidth", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "document:mousemove": "onMouseMove($event)", "document:mouseup": "onMouseUp($event)", "document:click": "onClick($event)" } }, ngImport: i0 }); }
7250
7433
  }
7251
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: ShipResize, decorators: [{
7434
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ShipResize, decorators: [{
7252
7435
  type: Directive,
7253
7436
  args: [{
7254
7437
  selector: '[shResize]',
@@ -7290,10 +7473,10 @@ class ShipSort {
7290
7473
  return;
7291
7474
  this.#table.toggleSort(sortCol);
7292
7475
  }
7293
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: ShipSort, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
7294
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.5", type: ShipSort, isStandalone: true, selector: "[shSort]", inputs: { shSort: { classPropertyName: "shSort", publicName: "shSort", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "mousedown": "toggleSort()" }, properties: { "class.sort-asc": "sortAsc()", "class.sort-desc": "sortDesc()" }, classAttribute: "sortable" }, ngImport: i0 }); }
7476
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ShipSort, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
7477
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.6", type: ShipSort, isStandalone: true, selector: "[shSort]", inputs: { shSort: { classPropertyName: "shSort", publicName: "shSort", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "mousedown": "toggleSort()" }, properties: { "class.sort-asc": "sortAsc()", "class.sort-desc": "sortDesc()" }, classAttribute: "sortable" }, ngImport: i0 }); }
7295
7478
  }
7296
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: ShipSort, decorators: [{
7479
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ShipSort, decorators: [{
7297
7480
  type: Directive,
7298
7481
  args: [{
7299
7482
  selector: '[shSort]',
@@ -7326,10 +7509,10 @@ class ShipStickyColumns {
7326
7509
  this.#renderer.setStyle(nativeElement, 'grid-column', position === 'end' ? `-${columnSpanCount + 1} / -1` : `1 / ${columnSpanCount + 1}`);
7327
7510
  }
7328
7511
  }
7329
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: ShipStickyColumns, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
7330
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.5", type: ShipStickyColumns, isStandalone: true, selector: "[shStickyColumns]", inputs: { shStickyColumns: { classPropertyName: "shStickyColumns", publicName: "shStickyColumns", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class.sticky": "shStickyColumns() === \"start\"", "class.sticky-end": "shStickyColumns() === \"end\"" } }, ngImport: i0 }); }
7512
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ShipStickyColumns, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
7513
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.6", type: ShipStickyColumns, isStandalone: true, selector: "[shStickyColumns]", inputs: { shStickyColumns: { classPropertyName: "shStickyColumns", publicName: "shStickyColumns", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class.sticky": "shStickyColumns() === \"start\"", "class.sticky-end": "shStickyColumns() === \"end\"" } }, ngImport: i0 }); }
7331
7514
  }
7332
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: ShipStickyColumns, decorators: [{
7515
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ShipStickyColumns, decorators: [{
7333
7516
  type: Directive,
7334
7517
  args: [{
7335
7518
  selector: '[shStickyColumns]',
@@ -7485,8 +7668,8 @@ class ShipTable {
7485
7668
  this.scrollYState.set(nextYState);
7486
7669
  this.canScrollY.set(canScrollY);
7487
7670
  }
7488
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: ShipTable, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
7489
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.5", type: ShipTable, isStandalone: true, selector: "sh-table", inputs: { loading: { classPropertyName: "loading", publicName: "loading", isSignal: true, isRequired: false, transformFunction: null }, data: { classPropertyName: "data", publicName: "data", isSignal: true, isRequired: false, transformFunction: null }, sortByColumn: { classPropertyName: "sortByColumn", publicName: "sortByColumn", isSignal: true, isRequired: false, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { dataChange: "dataChange", sortByColumn: "sortByColumnChange" }, host: { listeners: { "scroll": "onScroll()", "window:resize": "onResize($event)" }, properties: { "class": "hostClasses()", "style.grid-template-columns": "columnSizes()", "class.resizing": "resizing()", "class.can-scroll-x": "canScrollX()", "class.can-scroll-y": "canScrollY()", "class.scrolled-x": "scrollXState() >= 0", "class.scrolled-x-end": "scrollXState() === 1", "class.scrolled-y": "scrollYState() >= 0", "class.scrolled-y-end": "scrollYState() === 1" } }, viewQueries: [{ propertyName: "thead", first: true, predicate: ["thead"], descendants: true, isSignal: true }, { propertyName: "tbody", first: true, predicate: ["tbody"], descendants: true, isSignal: true }], ngImport: i0, template: `
7671
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ShipTable, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
7672
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.6", type: ShipTable, isStandalone: true, selector: "sh-table", inputs: { loading: { classPropertyName: "loading", publicName: "loading", isSignal: true, isRequired: false, transformFunction: null }, data: { classPropertyName: "data", publicName: "data", isSignal: true, isRequired: false, transformFunction: null }, sortByColumn: { classPropertyName: "sortByColumn", publicName: "sortByColumn", isSignal: true, isRequired: false, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { dataChange: "dataChange", sortByColumn: "sortByColumnChange" }, host: { listeners: { "scroll": "onScroll()", "window:resize": "onResize($event)" }, properties: { "class": "hostClasses()", "style.grid-template-columns": "columnSizes()", "class.resizing": "resizing()", "class.can-scroll-x": "canScrollX()", "class.can-scroll-y": "canScrollY()", "class.scrolled-x": "scrollXState() >= 0", "class.scrolled-x-end": "scrollXState() === 1", "class.scrolled-y": "scrollYState() >= 0", "class.scrolled-y-end": "scrollYState() === 1" } }, viewQueries: [{ propertyName: "thead", first: true, predicate: ["thead"], descendants: true, isSignal: true }, { propertyName: "tbody", first: true, predicate: ["tbody"], descendants: true, isSignal: true }], ngImport: i0, template: `
7490
7673
  <div class="actionbar">
7491
7674
  <ng-content select="[actionbar]" />
7492
7675
  </div>
@@ -7511,7 +7694,7 @@ class ShipTable {
7511
7694
  }
7512
7695
  `, isInline: true, dependencies: [{ kind: "component", type: ShipProgressBar, selector: "sh-progress-bar", inputs: ["value", "color", "variant"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
7513
7696
  }
7514
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: ShipTable, decorators: [{
7697
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ShipTable, decorators: [{
7515
7698
  type: Component,
7516
7699
  args: [{
7517
7700
  selector: 'sh-table',
@@ -7570,12 +7753,12 @@ class ShipTabs extends ShipSelectionGroup {
7570
7753
  variant: this.variant,
7571
7754
  });
7572
7755
  }
7573
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: ShipTabs, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
7574
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.5", type: ShipTabs, isStandalone: true, selector: "sh-tabs", inputs: { color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "hostClasses()", "style.--tabs-id": "id" } }, usesInheritance: true, ngImport: i0, template: `
7756
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ShipTabs, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
7757
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.6", type: ShipTabs, isStandalone: true, selector: "sh-tabs", inputs: { color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "hostClasses()", "style.--tabs-id": "id" } }, usesInheritance: true, ngImport: i0, template: `
7575
7758
  <ng-content />
7576
7759
  `, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
7577
7760
  }
7578
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: ShipTabs, decorators: [{
7761
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ShipTabs, decorators: [{
7579
7762
  type: Component,
7580
7763
  args: [{
7581
7764
  selector: 'sh-tabs',
@@ -7644,10 +7827,10 @@ class ShipThemeState {
7644
7827
  this.localStorage()?.setItem('shipTheme', theme);
7645
7828
  this.#theme.set(theme);
7646
7829
  }
7647
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: ShipThemeState, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
7648
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: ShipThemeState, providedIn: 'root' }); }
7830
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ShipThemeState, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
7831
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ShipThemeState, providedIn: 'root' }); }
7649
7832
  }
7650
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: ShipThemeState, decorators: [{
7833
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ShipThemeState, decorators: [{
7651
7834
  type: Injectable,
7652
7835
  args: [{
7653
7836
  providedIn: 'root',
@@ -7666,8 +7849,8 @@ class ShipThemeToggle {
7666
7849
  setTheme(theme) {
7667
7850
  this.#themeState.setTheme(theme);
7668
7851
  }
7669
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: ShipThemeToggle, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
7670
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.5", type: ShipThemeToggle, isStandalone: true, selector: "ship-theme-toggle", ngImport: i0, template: `
7852
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ShipThemeToggle, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
7853
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.6", type: ShipThemeToggle, isStandalone: true, selector: "ship-theme-toggle", ngImport: i0, template: `
7671
7854
  <button shButton size="small" (click)="toggleTheme()">
7672
7855
  @if (theme() === 'dark') {
7673
7856
  <sh-icon>moon-bold</sh-icon>
@@ -7680,7 +7863,7 @@ class ShipThemeToggle {
7680
7863
  </button>
7681
7864
  `, isInline: true, dependencies: [{ kind: "component", type: ShipIcon, selector: "sh-icon", inputs: ["color", "size"] }, { kind: "component", type: ShipButton, selector: "[shButton]", inputs: ["color", "variant", "size", "readonly"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
7682
7865
  }
7683
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: ShipThemeToggle, decorators: [{
7866
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ShipThemeToggle, decorators: [{
7684
7867
  type: Component,
7685
7868
  args: [{
7686
7869
  selector: 'ship-theme-toggle',
@@ -7721,8 +7904,8 @@ class ShipToggleCard {
7721
7904
  toggle() {
7722
7905
  this.isActive.set(!this.isActive());
7723
7906
  }
7724
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: ShipToggleCard, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
7725
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.5", type: ShipToggleCard, isStandalone: true, selector: "sh-toggle-card", inputs: { disableToggle: { classPropertyName: "disableToggle", publicName: "disableToggle", isSignal: true, isRequired: false, transformFunction: null }, isActive: { classPropertyName: "isActive", publicName: "isActive", isSignal: true, isRequired: false, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { isActive: "isActiveChange" }, host: { properties: { "class.active": "isActive()", "class": "hostClasses()" } }, ngImport: i0, template: `
7907
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ShipToggleCard, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
7908
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.6", type: ShipToggleCard, isStandalone: true, selector: "sh-toggle-card", inputs: { disableToggle: { classPropertyName: "disableToggle", publicName: "disableToggle", isSignal: true, isRequired: false, transformFunction: null }, isActive: { classPropertyName: "isActive", publicName: "isActive", isSignal: true, isRequired: false, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { isActive: "isActiveChange" }, host: { properties: { "class.active": "isActive()", "class": "hostClasses()" } }, ngImport: i0, template: `
7726
7909
  <h3 (click)="!disableToggle() && toggle()">
7727
7910
  <ng-content select="[title]">Title</ng-content>
7728
7911
 
@@ -7738,7 +7921,7 @@ class ShipToggleCard {
7738
7921
  </div>
7739
7922
  `, isInline: true, dependencies: [{ kind: "component", type: ShipIcon, selector: "sh-icon", inputs: ["color", "size"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
7740
7923
  }
7741
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: ShipToggleCard, decorators: [{
7924
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ShipToggleCard, decorators: [{
7742
7925
  type: Component,
7743
7926
  args: [{
7744
7927
  selector: 'sh-toggle-card',
@@ -7802,8 +7985,8 @@ class ShipToggle {
7802
7985
  }
7803
7986
  event.preventDefault();
7804
7987
  }
7805
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: ShipToggle, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
7806
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.5", type: ShipToggle, isStandalone: true, selector: "sh-toggle", inputs: { checked: { classPropertyName: "checked", publicName: "checked", isSignal: true, isRequired: false, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, noInternalInput: { classPropertyName: "noInternalInput", publicName: "noInternalInput", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { checked: "checkedChange" }, host: { listeners: { "keydown.enter": "onEnter($event)" }, properties: { "class": "hostClasses()", "attr.disabled": "disabled() ? \"\" : null" } }, viewQueries: [{ propertyName: "internalInput", first: true, predicate: ["internalInput"], descendants: true, isSignal: true }], ngImport: i0, template: `
7988
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ShipToggle, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
7989
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.6", type: ShipToggle, isStandalone: true, selector: "sh-toggle", inputs: { checked: { classPropertyName: "checked", publicName: "checked", isSignal: true, isRequired: false, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, noInternalInput: { classPropertyName: "noInternalInput", publicName: "noInternalInput", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { checked: "checkedChange" }, host: { listeners: { "keydown.enter": "onEnter($event)" }, properties: { "class": "hostClasses()", "attr.disabled": "disabled() ? \"\" : null" } }, viewQueries: [{ propertyName: "internalInput", first: true, predicate: ["internalInput"], descendants: true, isSignal: true }], ngImport: i0, template: `
7807
7990
  <div class="box">
7808
7991
  <div class="knob"></div>
7809
7992
  </div>
@@ -7821,7 +8004,7 @@ class ShipToggle {
7821
8004
  }
7822
8005
  `, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
7823
8006
  }
7824
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: ShipToggle, decorators: [{
8007
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ShipToggle, decorators: [{
7825
8008
  type: Component,
7826
8009
  args: [{
7827
8010
  selector: 'sh-toggle',
@@ -7919,6 +8102,8 @@ class ShipVirtualScroll {
7919
8102
  this.#calculateVisibleItems();
7920
8103
  }
7921
8104
  #setupHostResizeObserver() {
8105
+ if (typeof ResizeObserver === 'undefined')
8106
+ return;
7922
8107
  this.#hostResizeObserver = new ResizeObserver((entries) => {
7923
8108
  const hostElement = entries[0];
7924
8109
  if (hostElement) {
@@ -7929,6 +8114,8 @@ class ShipVirtualScroll {
7929
8114
  this.#hostResizeObserver.observe(this.#hostElement.nativeElement);
7930
8115
  }
7931
8116
  #setupResizeObserver() {
8117
+ if (typeof ResizeObserver === 'undefined')
8118
+ return;
7932
8119
  this.#resizeObserver = new ResizeObserver((entries) => {
7933
8120
  const newHeights = [...this.itemHeights()];
7934
8121
  let didUpdate = false;
@@ -7994,8 +8181,8 @@ class ShipVirtualScroll {
7994
8181
  this.#cleanupResizeObserver();
7995
8182
  this.#cleanupHostResizeObserver();
7996
8183
  }
7997
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: ShipVirtualScroll, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
7998
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "21.2.5", type: ShipVirtualScroll, isStandalone: true, selector: "sh-virtual-scroll", viewQueries: [{ propertyName: "viewportRef", first: true, predicate: ["viewport"], descendants: true, isSignal: true }, { propertyName: "itemElements", predicate: ["item"], descendants: true, isSignal: true }], ngImport: i0, template: `
8184
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ShipVirtualScroll, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
8185
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "21.2.6", type: ShipVirtualScroll, isStandalone: true, selector: "sh-virtual-scroll", viewQueries: [{ propertyName: "viewportRef", first: true, predicate: ["viewport"], descendants: true, isSignal: true }, { propertyName: "itemElements", predicate: ["item"], descendants: true, isSignal: true }], ngImport: i0, template: `
7999
8186
  <div class="viewport" #viewport (scroll)="onScroll()">
8000
8187
  <div class="total-height" [style.height]="totalHeight() + 'px'"></div>
8001
8188
  <div class="items-container" [style.transform]="'translateY(' + translateY() + 'px)'">
@@ -8004,7 +8191,7 @@ class ShipVirtualScroll {
8004
8191
  </div>
8005
8192
  `, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
8006
8193
  }
8007
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: ShipVirtualScroll, decorators: [{
8194
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ShipVirtualScroll, decorators: [{
8008
8195
  type: Component,
8009
8196
  args: [{
8010
8197
  selector: 'sh-virtual-scroll',
@@ -8031,14 +8218,14 @@ class ShipFormFieldExperimental {
8031
8218
  myClick() {
8032
8219
  this.firstInput.update((x) => x + 'hello');
8033
8220
  }
8034
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: ShipFormFieldExperimental, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
8035
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.5", type: ShipFormFieldExperimental, isStandalone: true, selector: "sh-form-field-experimental", ngImport: i0, template: `
8221
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ShipFormFieldExperimental, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
8222
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.6", type: ShipFormFieldExperimental, isStandalone: true, selector: "sh-form-field-experimental", ngImport: i0, template: `
8036
8223
  <ng-content></ng-content>
8037
8224
 
8038
8225
  <button (click)="myClick()">hello</button>
8039
8226
  `, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
8040
8227
  }
8041
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: ShipFormFieldExperimental, decorators: [{
8228
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ShipFormFieldExperimental, decorators: [{
8042
8229
  type: Component,
8043
8230
  args: [{
8044
8231
  selector: 'sh-form-field-experimental',
@@ -8076,10 +8263,10 @@ class ShipFileDragDrop {
8076
8263
  this.filesDropped.emit(files);
8077
8264
  }
8078
8265
  }
8079
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: ShipFileDragDrop, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
8080
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.5", type: ShipFileDragDrop, isStandalone: true, selector: "[shDragDrop]", outputs: { filesDropped: "filesDropped" }, host: { listeners: { "dragover": "onDragOver($event)", "dragleave": "onDragLeave($event)", "drop": "ondrop($event)" }, properties: { "class.filesover": "filesOver()" } }, ngImport: i0 }); }
8266
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ShipFileDragDrop, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
8267
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.6", type: ShipFileDragDrop, isStandalone: true, selector: "[shDragDrop]", outputs: { filesDropped: "filesDropped" }, host: { listeners: { "dragover": "onDragOver($event)", "dragleave": "onDragLeave($event)", "drop": "ondrop($event)" }, properties: { "class.filesover": "filesOver()" } }, ngImport: i0 }); }
8081
8268
  }
8082
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: ShipFileDragDrop, decorators: [{
8269
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ShipFileDragDrop, decorators: [{
8083
8270
  type: Directive,
8084
8271
  args: [{
8085
8272
  selector: '[shDragDrop]',
@@ -8161,10 +8348,10 @@ class ShipInputMask {
8161
8348
  }
8162
8349
  return masked;
8163
8350
  }
8164
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: ShipInputMask, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
8165
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.5", type: ShipInputMask, isStandalone: true, selector: "[shInputMask]", inputs: { shInputMask: { classPropertyName: "shInputMask", publicName: "shInputMask", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "input": "onInput($event)" } }, ngImport: i0 }); }
8351
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ShipInputMask, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
8352
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.6", type: ShipInputMask, isStandalone: true, selector: "[shInputMask]", inputs: { shInputMask: { classPropertyName: "shInputMask", publicName: "shInputMask", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "input": "onInput($event)" } }, ngImport: i0 }); }
8166
8353
  }
8167
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: ShipInputMask, decorators: [{
8354
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ShipInputMask, decorators: [{
8168
8355
  type: Directive,
8169
8356
  args: [{
8170
8357
  selector: '[shInputMask]',
@@ -8179,10 +8366,10 @@ class ShipPreventWheel {
8179
8366
  wheel(event) {
8180
8367
  event.preventDefault();
8181
8368
  }
8182
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: ShipPreventWheel, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
8183
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.5", type: ShipPreventWheel, isStandalone: true, selector: "[shPreventWheel]", host: { listeners: { "wheel": "wheel($event)" } }, ngImport: i0 }); }
8369
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ShipPreventWheel, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
8370
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.6", type: ShipPreventWheel, isStandalone: true, selector: "[shPreventWheel]", host: { listeners: { "wheel": "wheel($event)" } }, ngImport: i0 }); }
8184
8371
  }
8185
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: ShipPreventWheel, decorators: [{
8372
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ShipPreventWheel, decorators: [{
8186
8373
  type: Directive,
8187
8374
  args: [{
8188
8375
  selector: '[shPreventWheel]',
@@ -8327,8 +8514,8 @@ class ShipTooltipWrapper {
8327
8514
  top: Math.max(0, Math.min(pos.top, window.innerHeight - m.height)),
8328
8515
  };
8329
8516
  }
8330
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: ShipTooltipWrapper, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
8331
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.5", type: ShipTooltipWrapper, isStandalone: true, selector: "ship-tooltip-wrapper", inputs: { positionAnchorName: { classPropertyName: "positionAnchorName", publicName: "positionAnchorName", isSignal: true, isRequired: true, transformFunction: null }, anchorEl: { classPropertyName: "anchorEl", publicName: "anchorEl", isSignal: true, isRequired: true, transformFunction: null }, isOpen: { classPropertyName: "isOpen", publicName: "isOpen", isSignal: true, isRequired: false, transformFunction: null }, content: { classPropertyName: "content", publicName: "content", isSignal: true, isRequired: false, transformFunction: null }, close: { classPropertyName: "close", publicName: "close", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "role": "tooltip" }, properties: { "attr.popover": "\"manual\"", "style.position-anchor": "positionAnchorName()", "class.below": "isBelow()" } }, ngImport: i0, template: `
8517
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ShipTooltipWrapper, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
8518
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.6", type: ShipTooltipWrapper, isStandalone: true, selector: "ship-tooltip-wrapper", inputs: { positionAnchorName: { classPropertyName: "positionAnchorName", publicName: "positionAnchorName", isSignal: true, isRequired: true, transformFunction: null }, anchorEl: { classPropertyName: "anchorEl", publicName: "anchorEl", isSignal: true, isRequired: true, transformFunction: null }, isOpen: { classPropertyName: "isOpen", publicName: "isOpen", isSignal: true, isRequired: false, transformFunction: null }, content: { classPropertyName: "content", publicName: "content", isSignal: true, isRequired: false, transformFunction: null }, close: { classPropertyName: "close", publicName: "close", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "role": "tooltip" }, properties: { "attr.popover": "\"manual\"", "style.position-anchor": "positionAnchorName()", "class.below": "isBelow()" } }, ngImport: i0, template: `
8332
8519
  <div class="tooltip-content">
8333
8520
  @if (isTemplate()) {
8334
8521
  <ng-container *ngTemplateOutlet="$any(content()); context: { $implicit: tooltipContext }" />
@@ -8338,7 +8525,7 @@ class ShipTooltipWrapper {
8338
8525
  </div>
8339
8526
  `, isInline: true, dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] }); }
8340
8527
  }
8341
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: ShipTooltipWrapper, decorators: [{
8528
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ShipTooltipWrapper, decorators: [{
8342
8529
  type: Component,
8343
8530
  args: [{
8344
8531
  selector: 'ship-tooltip-wrapper',
@@ -8466,10 +8653,10 @@ class ShipTooltip {
8466
8653
  }, this.DEBOUNCE_DELAY);
8467
8654
  }
8468
8655
  }
8469
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: ShipTooltip, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
8470
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.5", type: ShipTooltip, isStandalone: true, selector: "[shTooltip]", inputs: { shTooltip: { classPropertyName: "shTooltip", publicName: "shTooltip", isSignal: true, isRequired: true, transformFunction: null } }, host: { listeners: { "mouseenter": "onMouseEnter($event)", "mouseleave": "onMouseLeave($event)" }, properties: { "style.anchor-name": "anchorName", "class.active": "isOpen()" }, classAttribute: "tooltip" }, ngImport: i0 }); }
8656
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ShipTooltip, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
8657
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.6", type: ShipTooltip, isStandalone: true, selector: "[shTooltip]", inputs: { shTooltip: { classPropertyName: "shTooltip", publicName: "shTooltip", isSignal: true, isRequired: true, transformFunction: null } }, host: { listeners: { "mouseenter": "onMouseEnter($event)", "mouseleave": "onMouseLeave($event)" }, properties: { "style.anchor-name": "anchorName", "class.active": "isOpen()" }, classAttribute: "tooltip" }, ngImport: i0 }); }
8471
8658
  }
8472
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: ShipTooltip, decorators: [{
8659
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: ShipTooltip, decorators: [{
8473
8660
  type: Directive,
8474
8661
  args: [{
8475
8662
  selector: '[shTooltip]',
@@ -8496,5 +8683,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImpor
8496
8683
  * Generated bundle index. Do not edit.
8497
8684
  */
8498
8685
 
8499
- export { GridSortable, SHIP_CONFIG, ShipAccordion, ShipAlert, ShipAlertContainer, ShipAlertModule, ShipAlertService, ShipBlueprint, ShipButton, ShipButtonGroup, ShipCard, ShipCheckbox, ShipChip, ShipColorPicker, ShipColorPickerInput, ShipDatepicker, ShipDatepickerInput, ShipDaterangeInput, ShipDialog, ShipDialogService, ShipDivider, ShipEventCard, ShipFileDragDrop, ShipFileUpload, ShipFormField, ShipFormFieldExperimental, ShipIcon, ShipInputMask, ShipList, ShipMenu, ShipPopover, ShipPreventWheel, ShipProgressBar, ShipRadio, ShipRangeSlider, ShipResize, ShipSelect, ShipSidenav, ShipSort, ShipSortable, ShipSpinner, ShipStepper, ShipStickyColumns, ShipTable, ShipTabs, ShipThemeToggle, ShipToggle, ShipToggleCard, ShipTooltip, ShipTooltipWrapper, ShipVirtualScroll, TEST_NODES, defaultThemeColors, hslToOklch, hslToRgbExact, hsvToRgbExact, moveIndex, rgbToHex, rgbToHsl, rgbToHsv, rgbToOklch, rgbaToHex8, watchHostClass };
8686
+ export { SHIP_CONFIG, ShipAccordion, ShipAlert, ShipAlertContainer, ShipAlertModule, ShipAlertService, ShipBlueprint, ShipButton, ShipButtonGroup, ShipCard, ShipCheckbox, ShipChip, ShipColorPicker, ShipColorPickerInput, ShipDatepicker, ShipDatepickerInput, ShipDaterangeInput, ShipDialog, ShipDialogService, ShipDivider, ShipEventCard, ShipFileDragDrop, ShipFileUpload, ShipFormField, ShipFormFieldExperimental, ShipIcon, ShipInputMask, ShipList, ShipMenu, ShipPopover, ShipPreventWheel, ShipProgressBar, ShipRadio, ShipRangeSlider, ShipResize, ShipSelect, ShipSidenav, ShipSort, ShipSortable, ShipSpinner, ShipStepper, ShipStickyColumns, ShipTable, ShipTabs, ShipThemeToggle, ShipToggle, ShipToggleCard, ShipTooltip, ShipTooltipWrapper, ShipVirtualScroll, TEST_NODES, createSortableManager, defaultThemeColors, hslToOklch, hslToRgbExact, hsvToRgbExact, moveIndex, rgbToHex, rgbToHsl, rgbToHsv, rgbToOklch, rgbaToHex8, transferArrayItem, watchHostClass };
8500
8687
  //# sourceMappingURL=ship-ui-core.mjs.map