ngx-tethys 19.1.0-next.9 → 19.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -2,6 +2,42 @@
2
2
 
3
3
  All notable changes to this project will be documented in this file. See [commit-and-tag-version](https://github.com/absolute-version/commit-and-tag-version) for commit guidelines.
4
4
 
5
+ # [19.1.0](https://github.com/atinc/ngx-tethys/compare/19.1.0-next.12...19.1.0) (2025-08-29)
6
+
7
+
8
+ ### Features
9
+
10
+ * **tabs:** replace thyActiveTab input with model and write back current value on activation ([#3548](https://github.com/atinc/ngx-tethys/issues/3548)) ([c05f409](https://github.com/atinc/ngx-tethys/commit/c05f40975a88948c2f57ffe845a99d8b51c64e2e))
11
+
12
+
13
+
14
+ # [19.1.0-next.12](https://github.com/atinc/ngx-tethys/compare/19.1.0-next.11...19.1.0-next.12) (2025-08-27)
15
+
16
+
17
+ ### Bug Fixes
18
+
19
+ * **shared:** fix view outlet change the context not initialize #TINFR-2786 [@luxiaobei](https://github.com/luxiaobei) [@wumeimin](https://github.com/wumeimin) ([#3543](https://github.com/atinc/ngx-tethys/issues/3543)) ([58d8ad1](https://github.com/atinc/ngx-tethys/commit/58d8ad1702d11a555a1d76bd79099b6695e3153a)), closes [#TINFR-2786](https://github.com/atinc/ngx-tethys/issues/TINFR-2786)
20
+
21
+
22
+
23
+ # [19.1.0-next.11](https://github.com/atinc/ngx-tethys/compare/19.1.0-next.10...19.1.0-next.11) (2025-08-25)
24
+
25
+
26
+ ### Bug Fixes
27
+
28
+ * **property:** property-item cannot exit editing occasionally #TINFR-2766 ([#3541](https://github.com/atinc/ngx-tethys/issues/3541)) ([ec46d9d](https://github.com/atinc/ngx-tethys/commit/ec46d9db31e96d727f2abfa695d9cf6e20f01d75)), closes [#TINFR-2766](https://github.com/atinc/ngx-tethys/issues/TINFR-2766)
29
+
30
+
31
+
32
+ # [19.1.0-next.10](https://github.com/atinc/ngx-tethys/compare/19.1.0-next.9...19.1.0-next.10) (2025-08-22)
33
+
34
+
35
+ ### Bug Fixes
36
+
37
+ * **shared:** fix search error when after selecting option #TINFR-2765 ([#3539](https://github.com/atinc/ngx-tethys/issues/3539)) ([85444fa](https://github.com/atinc/ngx-tethys/commit/85444fa65a3fa920021f3304acb579bfbb6f6227)), closes [#TINFR-2765](https://github.com/atinc/ngx-tethys/issues/TINFR-2765)
38
+
39
+
40
+
5
41
  # [19.1.0-next.9](https://github.com/atinc/ngx-tethys/compare/19.1.0-next.8...19.1.0-next.9) (2025-08-21)
6
42
 
7
43
 
@@ -158,6 +158,7 @@ class ThyPropertyItem {
158
158
  this.clickEventSubscription = fromEvent(itemElement, 'click')
159
159
  .pipe(takeUntil(this.eventDestroy$))
160
160
  .subscribe(() => {
161
+ this.originOverlays = [...this.overlayOutsideClickDispatcher._attachedOverlays];
161
162
  this.setEditing(true);
162
163
  this.bindEditorBlurEvent(itemElement);
163
164
  itemElement.querySelector('input')?.focus();
@@ -1 +1 @@
1
- {"version":3,"file":"ngx-tethys-property.mjs","sources":["../../../src/property/properties.component.ts","../../../src/property/properties.component.html","../../../src/property/property-item.component.ts","../../../src/property/property-item.component.html","../../../src/property/module.ts","../../../src/property/ngx-tethys-property.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, numberAttribute, input, computed } from '@angular/core';\n\nexport type ThyPropertiesLayout = 'horizontal' | 'vertical';\n\n/**\n * 属性列表组件\n * @name thy-properties\n */\n@Component({\n selector: 'thy-properties',\n templateUrl: './properties.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'thy-properties',\n '[class.thy-properties-vertical]': 'layout() === \"vertical\"',\n '[class.thy-properties-horizontal]': 'layout() === \"horizontal\"',\n '[class.thy-property-edit-trigger-hover]': 'thyEditTrigger() === \"hover\"',\n '[class.thy-property-edit-trigger-click]': 'thyEditTrigger() === \"click\"',\n '[style.grid-template-columns]': 'gridTemplateColumns()'\n }\n})\nexport class ThyProperties {\n /**\n * 展示布局\n * @type \"horizontal\" | \"vertical\"\n */\n readonly layout = input<ThyPropertiesLayout>('horizontal', { alias: 'thyLayout' });\n\n /**\n * 设置一行的可以 property-item 的数量\n */\n readonly thyColumn = input(1, { transform: numberAttribute });\n\n /**\n * 设置编辑状态触发方法\n * @type 'hover' | 'click'\n */\n readonly thyEditTrigger = input<'hover' | 'click'>('hover');\n\n protected readonly gridTemplateColumns = computed(() => {\n return `repeat(${this.thyColumn()}, 1fr)`;\n });\n}\n","<ng-content></ng-content>\n","import { ThyClickDispatcher } from 'ngx-tethys/core';\nimport { ThyFlexibleText } from 'ngx-tethys/flexible-text';\nimport { combineLatest, fromEvent, Subject, Subscription, timer } from 'rxjs';\nimport { delay, filter, take, takeUntil } from 'rxjs/operators';\nimport { OverlayOutsideClickDispatcher, OverlayRef } from '@angular/cdk/overlay';\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n NgZone,\n numberAttribute,\n OnDestroy,\n TemplateRef,\n inject,\n input,\n computed,\n effect,\n output,\n contentChild,\n viewChild,\n signal,\n DestroyRef\n} from '@angular/core';\nimport { ThyProperties } from './properties.component';\nimport { coerceBooleanProperty, ThyBooleanInput } from 'ngx-tethys/util';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\nexport type ThyPropertyItemOperationTrigger = 'hover' | 'always';\n\n/**\n * 属性组件\n * @name thy-property-item\n */\n@Component({\n selector: 'thy-property-item',\n templateUrl: './property-item.component.html',\n host: {\n class: 'thy-property-item',\n '[class.thy-property-edit-trigger-hover]': 'thyEditTrigger() === \"hover\"',\n '[class.thy-property-edit-trigger-click]': 'thyEditTrigger() === \"click\"',\n '[class.thy-property-item-operational]': '!!operation()',\n '[class.thy-property-item-operational-hover]': \"thyOperationTrigger() === 'hover'\",\n '[style.grid-column]': 'gridColumn()',\n '[class.thy-property-item-single]': '!parent'\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [ThyFlexibleText, NgTemplateOutlet]\n})\nexport class ThyPropertyItem implements OnDestroy {\n private clickDispatcher = inject(ThyClickDispatcher);\n private ngZone = inject(NgZone);\n private overlayOutsideClickDispatcher = inject(OverlayOutsideClickDispatcher);\n private parent = inject(ThyProperties, { optional: true });\n private destroyRef = inject(DestroyRef);\n\n /**\n * 属性名称\n */\n readonly thyLabelText = input<string>();\n\n /**\n * 设置属性是否是可编辑的\n */\n readonly thyEditable = input<boolean, ThyBooleanInput>(false, { transform: coerceBooleanProperty });\n\n /**\n * 设置跨列的数量\n */\n readonly thySpan = input(1, { transform: numberAttribute });\n\n /**\n * 设置编辑状态触发方法\n * @type 'hover' | 'click'\n */\n readonly thyEditTrigger = input<'hover' | 'click'>();\n\n /**\n * 设置属性操作现实触发方式,默认 always 一直显示\n * @type 'hover' | 'always'\n */\n readonly thyOperationTrigger = input<ThyPropertyItemOperationTrigger>('always');\n\n readonly thyEditingChange = output<boolean>();\n\n /**\n * 属性名称自定义模板\n * @type TemplateRef\n */\n readonly label = contentChild<TemplateRef<void>>('label');\n\n /**\n * 属性内容编辑模板,只有在 thyEditable 为 true 时生效\n * @type TemplateRef\n */\n readonly editor = contentChild<TemplateRef<void>>('editor');\n\n /**\n * 操作区模板\n * @type TemplateRef\n */\n readonly operation = contentChild<TemplateRef<void>>('operation');\n\n /**\n * @private\n */\n readonly content = viewChild<TemplateRef<void>>('contentTemplate');\n\n /**\n * @private\n */\n readonly itemContent = viewChild<ElementRef<HTMLElement>>('item');\n\n editing = signal(false);\n\n private eventDestroy$ = new Subject<void>();\n\n private originOverlays: OverlayRef[] = [];\n\n private clickEventSubscription: Subscription;\n\n protected readonly gridColumn = computed(() => {\n return `span ${Math.min(this.thySpan(), this.parent?.thyColumn())}`;\n });\n\n readonly isVertical = computed(() => {\n return this.parent?.layout() === 'vertical';\n });\n\n constructor() {\n this.originOverlays = [...this.overlayOutsideClickDispatcher._attachedOverlays] as OverlayRef[];\n\n effect(() => {\n if (this.thyEditable()) {\n this.subscribeClick();\n } else {\n this.setEditing(false);\n this.eventDestroy$.next();\n this.eventDestroy$.complete();\n\n if (this.clickEventSubscription) {\n this.clickEventSubscription.unsubscribe();\n this.clickEventSubscription = null;\n }\n }\n });\n }\n\n setEditing(editing: boolean) {\n this.ngZone.run(() => {\n if (!!this.editing() !== !!editing) {\n this.thyEditingChange.emit(editing);\n }\n this.editing.set(editing);\n });\n }\n\n /**\n * @deprecated please use setEditing(editing: boolean)\n */\n setKeepEditing(keep: boolean) {\n this.setEditing(keep);\n }\n\n private hasOverlay() {\n return !!this.overlayOutsideClickDispatcher._attachedOverlays.filter(overlay => !this.originOverlays.includes(overlay)).length;\n }\n\n private subscribeClick() {\n if (this.thyEditable() === true) {\n this.ngZone.runOutsideAngular(() => {\n if (this.clickEventSubscription) {\n return;\n }\n const itemElement = this.itemContent().nativeElement;\n this.clickEventSubscription = fromEvent(itemElement, 'click')\n .pipe(takeUntil(this.eventDestroy$))\n .subscribe(() => {\n this.setEditing(true);\n this.bindEditorBlurEvent(itemElement);\n itemElement.querySelector('input')?.focus();\n });\n });\n }\n }\n\n private subscribeOverlayDetach() {\n const openedOverlays = this.overlayOutsideClickDispatcher._attachedOverlays.filter(\n overlay => !this.originOverlays.includes(overlay)\n );\n const overlaysDetachments$ = openedOverlays.map(overlay => overlay.detachments());\n if (overlaysDetachments$.length) {\n combineLatest(overlaysDetachments$)\n .pipe(delay(50), take(1), takeUntilDestroyed(this.destroyRef))\n .subscribe(() => {\n this.setEditing(false);\n });\n }\n }\n\n private subscribeDocumentClick(editorElement: HTMLElement) {\n this.clickDispatcher\n .clicked(0)\n .pipe(\n filter(event => {\n return !editorElement.contains(event.target as HTMLElement);\n }),\n take(1),\n takeUntilDestroyed(this.destroyRef)\n )\n .subscribe(() => {\n this.setEditing(false);\n });\n }\n\n private bindEditorBlurEvent(editorElement: HTMLElement) {\n timer(0).subscribe(() => {\n if (this.hasOverlay()) {\n this.subscribeOverlayDetach();\n } else {\n this.subscribeDocumentClick(editorElement);\n }\n });\n }\n\n ngOnDestroy(): void {\n this.eventDestroy$.next();\n this.eventDestroy$.complete();\n }\n}\n","<ng-template #contentTemplate>\n <ng-content></ng-content>\n</ng-template>\n\n@let labelText = thyLabelText();\n@let labelTemplate = label();\n@let operationTemplate = operation();\n\n@if (labelText || labelTemplate || (operationTemplate && isVertical())) {\n <div class=\"thy-property-item-label\">\n @if (labelText) {\n <span thyFlexibleText [thyTooltipContent]=\"labelText\">{{ labelText }}</span>\n }\n @if (labelTemplate) {\n <span> <ng-template [ngTemplateOutlet]=\"labelTemplate\"></ng-template></span>\n }\n @if (operationTemplate && isVertical()) {\n <div class=\"thy-property-item-operation\">\n <ng-template [ngTemplateOutlet]=\"operationTemplate\"></ng-template>\n </div>\n }\n </div>\n}\n\n<div class=\"thy-property-item-wrapper\">\n <div\n #item\n class=\"thy-property-item-content\"\n [class.thy-property-item-content-editable]=\"thyEditable()\"\n [class.thy-property-item-content-editing]=\"editing()\">\n <div class=\"thy-property-item-content-text\">\n @if (content()) {\n <ng-template [ngTemplateOutlet]=\"content()\"></ng-template>\n }\n </div>\n @if (thyEditable()) {\n <div class=\"thy-property-item-content-editor\">\n @if (editor()) {\n <ng-template [ngTemplateOutlet]=\"editor()\"></ng-template>\n }\n </div>\n }\n </div>\n @if (operation() && !isVertical()) {\n <div class=\"thy-property-item-operation\">\n <ng-template [ngTemplateOutlet]=\"operation()\"></ng-template>\n </div>\n }\n</div>\n","import { ThyFlexibleTextModule } from 'ngx-tethys/flexible-text';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { ThyProperties } from './properties.component';\nimport { ThyPropertyItem } from './property-item.component';\nimport { ThyTooltipModule } from 'ngx-tethys/tooltip';\n\n@NgModule({\n imports: [CommonModule, ThyFlexibleTextModule, ThyTooltipModule, ThyProperties, ThyPropertyItem],\n exports: [ThyProperties, ThyPropertyItem]\n})\nexport class ThyPropertyModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ngx-tethys-property.mjs","sources":["../../../src/property/properties.component.ts","../../../src/property/properties.component.html","../../../src/property/property-item.component.ts","../../../src/property/property-item.component.html","../../../src/property/module.ts","../../../src/property/ngx-tethys-property.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, numberAttribute, input, computed } from '@angular/core';\n\nexport type ThyPropertiesLayout = 'horizontal' | 'vertical';\n\n/**\n * 属性列表组件\n * @name thy-properties\n */\n@Component({\n selector: 'thy-properties',\n templateUrl: './properties.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'thy-properties',\n '[class.thy-properties-vertical]': 'layout() === \"vertical\"',\n '[class.thy-properties-horizontal]': 'layout() === \"horizontal\"',\n '[class.thy-property-edit-trigger-hover]': 'thyEditTrigger() === \"hover\"',\n '[class.thy-property-edit-trigger-click]': 'thyEditTrigger() === \"click\"',\n '[style.grid-template-columns]': 'gridTemplateColumns()'\n }\n})\nexport class ThyProperties {\n /**\n * 展示布局\n * @type \"horizontal\" | \"vertical\"\n */\n readonly layout = input<ThyPropertiesLayout>('horizontal', { alias: 'thyLayout' });\n\n /**\n * 设置一行的可以 property-item 的数量\n */\n readonly thyColumn = input(1, { transform: numberAttribute });\n\n /**\n * 设置编辑状态触发方法\n * @type 'hover' | 'click'\n */\n readonly thyEditTrigger = input<'hover' | 'click'>('hover');\n\n protected readonly gridTemplateColumns = computed(() => {\n return `repeat(${this.thyColumn()}, 1fr)`;\n });\n}\n","<ng-content></ng-content>\n","import { ThyClickDispatcher } from 'ngx-tethys/core';\nimport { ThyFlexibleText } from 'ngx-tethys/flexible-text';\nimport { combineLatest, fromEvent, Subject, Subscription, timer } from 'rxjs';\nimport { delay, filter, take, takeUntil } from 'rxjs/operators';\nimport { OverlayOutsideClickDispatcher, OverlayRef } from '@angular/cdk/overlay';\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n NgZone,\n numberAttribute,\n OnDestroy,\n TemplateRef,\n inject,\n input,\n computed,\n effect,\n output,\n contentChild,\n viewChild,\n signal,\n DestroyRef\n} from '@angular/core';\nimport { ThyProperties } from './properties.component';\nimport { coerceBooleanProperty, helpers, ThyBooleanInput } from 'ngx-tethys/util';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\nexport type ThyPropertyItemOperationTrigger = 'hover' | 'always';\n\n/**\n * 属性组件\n * @name thy-property-item\n */\n@Component({\n selector: 'thy-property-item',\n templateUrl: './property-item.component.html',\n host: {\n class: 'thy-property-item',\n '[class.thy-property-edit-trigger-hover]': 'thyEditTrigger() === \"hover\"',\n '[class.thy-property-edit-trigger-click]': 'thyEditTrigger() === \"click\"',\n '[class.thy-property-item-operational]': '!!operation()',\n '[class.thy-property-item-operational-hover]': \"thyOperationTrigger() === 'hover'\",\n '[style.grid-column]': 'gridColumn()',\n '[class.thy-property-item-single]': '!parent'\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [ThyFlexibleText, NgTemplateOutlet]\n})\nexport class ThyPropertyItem implements OnDestroy {\n private clickDispatcher = inject(ThyClickDispatcher);\n private ngZone = inject(NgZone);\n private overlayOutsideClickDispatcher = inject(OverlayOutsideClickDispatcher);\n private parent = inject(ThyProperties, { optional: true });\n private destroyRef = inject(DestroyRef);\n\n /**\n * 属性名称\n */\n readonly thyLabelText = input<string>();\n\n /**\n * 设置属性是否是可编辑的\n */\n readonly thyEditable = input<boolean, ThyBooleanInput>(false, { transform: coerceBooleanProperty });\n\n /**\n * 设置跨列的数量\n */\n readonly thySpan = input(1, { transform: numberAttribute });\n\n /**\n * 设置编辑状态触发方法\n * @type 'hover' | 'click'\n */\n readonly thyEditTrigger = input<'hover' | 'click'>();\n\n /**\n * 设置属性操作现实触发方式,默认 always 一直显示\n * @type 'hover' | 'always'\n */\n readonly thyOperationTrigger = input<ThyPropertyItemOperationTrigger>('always');\n\n readonly thyEditingChange = output<boolean>();\n\n /**\n * 属性名称自定义模板\n * @type TemplateRef\n */\n readonly label = contentChild<TemplateRef<void>>('label');\n\n /**\n * 属性内容编辑模板,只有在 thyEditable 为 true 时生效\n * @type TemplateRef\n */\n readonly editor = contentChild<TemplateRef<void>>('editor');\n\n /**\n * 操作区模板\n * @type TemplateRef\n */\n readonly operation = contentChild<TemplateRef<void>>('operation');\n\n /**\n * @private\n */\n readonly content = viewChild<TemplateRef<void>>('contentTemplate');\n\n /**\n * @private\n */\n readonly itemContent = viewChild<ElementRef<HTMLElement>>('item');\n\n editing = signal(false);\n\n private eventDestroy$ = new Subject<void>();\n\n private originOverlays: OverlayRef[] = [];\n\n private clickEventSubscription: Subscription;\n\n protected readonly gridColumn = computed(() => {\n return `span ${Math.min(this.thySpan(), this.parent?.thyColumn())}`;\n });\n\n readonly isVertical = computed(() => {\n return this.parent?.layout() === 'vertical';\n });\n\n constructor() {\n this.originOverlays = [...this.overlayOutsideClickDispatcher._attachedOverlays];\n\n effect(() => {\n if (this.thyEditable()) {\n this.subscribeClick();\n } else {\n this.setEditing(false);\n this.eventDestroy$.next();\n this.eventDestroy$.complete();\n\n if (this.clickEventSubscription) {\n this.clickEventSubscription.unsubscribe();\n this.clickEventSubscription = null;\n }\n }\n });\n }\n\n setEditing(editing: boolean) {\n this.ngZone.run(() => {\n if (!!this.editing() !== !!editing) {\n this.thyEditingChange.emit(editing);\n }\n this.editing.set(editing);\n });\n }\n\n /**\n * @deprecated please use setEditing(editing: boolean)\n */\n setKeepEditing(keep: boolean) {\n this.setEditing(keep);\n }\n\n private hasOverlay() {\n return !!this.overlayOutsideClickDispatcher._attachedOverlays.filter(overlay => !this.originOverlays.includes(overlay)).length;\n }\n\n private subscribeClick() {\n if (this.thyEditable() === true) {\n this.ngZone.runOutsideAngular(() => {\n if (this.clickEventSubscription) {\n return;\n }\n const itemElement = this.itemContent().nativeElement;\n this.clickEventSubscription = fromEvent(itemElement, 'click')\n .pipe(takeUntil(this.eventDestroy$))\n .subscribe(() => {\n this.originOverlays = [...this.overlayOutsideClickDispatcher._attachedOverlays];\n this.setEditing(true);\n this.bindEditorBlurEvent(itemElement);\n itemElement.querySelector('input')?.focus();\n });\n });\n }\n }\n\n private subscribeOverlayDetach() {\n const openedOverlays = this.overlayOutsideClickDispatcher._attachedOverlays.filter(\n overlay => !this.originOverlays.includes(overlay)\n );\n const overlaysDetachments$ = openedOverlays.map(overlay => overlay.detachments());\n if (overlaysDetachments$.length) {\n combineLatest(overlaysDetachments$)\n .pipe(delay(50), take(1), takeUntilDestroyed(this.destroyRef))\n .subscribe(() => {\n this.setEditing(false);\n });\n }\n }\n\n private subscribeDocumentClick(editorElement: HTMLElement) {\n this.clickDispatcher\n .clicked(0)\n .pipe(\n filter(event => {\n return !editorElement.contains(event.target as HTMLElement);\n }),\n take(1),\n takeUntilDestroyed(this.destroyRef)\n )\n .subscribe(() => {\n this.setEditing(false);\n });\n }\n\n private bindEditorBlurEvent(editorElement: HTMLElement) {\n timer(0).subscribe(() => {\n if (this.hasOverlay()) {\n this.subscribeOverlayDetach();\n } else {\n this.subscribeDocumentClick(editorElement);\n }\n });\n }\n\n ngOnDestroy(): void {\n this.eventDestroy$.next();\n this.eventDestroy$.complete();\n }\n}\n","<ng-template #contentTemplate>\n <ng-content></ng-content>\n</ng-template>\n\n@let labelText = thyLabelText();\n@let labelTemplate = label();\n@let operationTemplate = operation();\n\n@if (labelText || labelTemplate || (operationTemplate && isVertical())) {\n <div class=\"thy-property-item-label\">\n @if (labelText) {\n <span thyFlexibleText [thyTooltipContent]=\"labelText\">{{ labelText }}</span>\n }\n @if (labelTemplate) {\n <span> <ng-template [ngTemplateOutlet]=\"labelTemplate\"></ng-template></span>\n }\n @if (operationTemplate && isVertical()) {\n <div class=\"thy-property-item-operation\">\n <ng-template [ngTemplateOutlet]=\"operationTemplate\"></ng-template>\n </div>\n }\n </div>\n}\n\n<div class=\"thy-property-item-wrapper\">\n <div\n #item\n class=\"thy-property-item-content\"\n [class.thy-property-item-content-editable]=\"thyEditable()\"\n [class.thy-property-item-content-editing]=\"editing()\">\n <div class=\"thy-property-item-content-text\">\n @if (content()) {\n <ng-template [ngTemplateOutlet]=\"content()\"></ng-template>\n }\n </div>\n @if (thyEditable()) {\n <div class=\"thy-property-item-content-editor\">\n @if (editor()) {\n <ng-template [ngTemplateOutlet]=\"editor()\"></ng-template>\n }\n </div>\n }\n </div>\n @if (operation() && !isVertical()) {\n <div class=\"thy-property-item-operation\">\n <ng-template [ngTemplateOutlet]=\"operation()\"></ng-template>\n </div>\n }\n</div>\n","import { ThyFlexibleTextModule } from 'ngx-tethys/flexible-text';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { ThyProperties } from './properties.component';\nimport { ThyPropertyItem } from './property-item.component';\nimport { ThyTooltipModule } from 'ngx-tethys/tooltip';\n\n@NgModule({\n imports: [CommonModule, ThyFlexibleTextModule, ThyTooltipModule, ThyProperties, ThyPropertyItem],\n exports: [ThyProperties, ThyPropertyItem]\n})\nexport class ThyPropertyModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { input, inject, ViewContainerRef, effect, Directive, ElementRef, NgZone, Renderer2, output, computed, ContentChildren, KeyValueDiffers, TemplateRef, ChangeDetectorRef, NgModule, Input, model, signal, linkedSignal, numberAttribute, viewChild, untracked, ChangeDetectionStrategy, Component, InjectionToken, HostListener, ViewEncapsulation } from '@angular/core';
2
+ import { input, inject, ViewContainerRef, effect, Directive, ElementRef, NgZone, Renderer2, output, computed, ContentChildren, KeyValueDiffers, linkedSignal, TemplateRef, untracked, ChangeDetectorRef, NgModule, Input, model, signal, numberAttribute, viewChild, ChangeDetectionStrategy, Component, InjectionToken, HostListener, ViewEncapsulation } from '@angular/core';
3
3
  import { reqAnimFrame, TabIndexDisabledControlValueAccessorMixin, ThyTranslate, mixinDisabled, MixinBase } from 'ngx-tethys/core';
4
4
  import { coerceBooleanProperty, keycodes, isTemplateRef, isUndefinedOrNull, ENTER, SPACE, hasModifierKey } from 'ngx-tethys/util';
5
5
  import { useHostRenderer } from '@tethys/cdk/dom';
@@ -480,6 +480,12 @@ class ThyViewOutletDirective {
480
480
  * 组件和模板上下文传递数据
481
481
  */
482
482
  this.thyViewOutletContext = input();
483
+ this.isViewOutletChanged = linkedSignal({
484
+ source: () => this.thyViewOutlet(),
485
+ computation: (source, previous) => {
486
+ return !!(source && previous?.source && source !== previous?.source);
487
+ }
488
+ });
483
489
  effect(() => {
484
490
  const thyViewOutlet = this.thyViewOutlet();
485
491
  const { viewContainerRef: viewContainerRef } = this;
@@ -500,14 +506,18 @@ class ThyViewOutletDirective {
500
506
  effect(() => {
501
507
  const thyViewOutletContext = this.thyViewOutletContext();
502
508
  let updatedKeys = [];
509
+ const isViewOutletChanged = untracked(this.isViewOutletChanged);
503
510
  if (thyViewOutletContext) {
504
- if (!this.keyValueDiffer) {
505
- this.keyValueDiffer = this.keyValueDiffers.find(this.thyViewOutletContext()).create();
511
+ if (!this.keyValueDiffer || isViewOutletChanged) {
512
+ if (!this.keyValueDiffer) {
513
+ this.keyValueDiffer = this.keyValueDiffers.find(thyViewOutletContext).create();
514
+ }
506
515
  this.keyValueDiffer.diff(thyViewOutletContext);
507
516
  updatedKeys = Object.keys(thyViewOutletContext);
517
+ this.isViewOutletChanged.set(false);
508
518
  }
509
519
  else {
510
- const diffChanges = this.keyValueDiffer.diff(this.thyViewOutletContext());
520
+ const diffChanges = this.keyValueDiffer.diff(thyViewOutletContext);
511
521
  diffChanges?.forEachChangedItem(item => {
512
522
  updatedKeys.push(item.key);
513
523
  });
@@ -708,6 +718,7 @@ class ThySelectControl {
708
718
  this.renderer = inject(Renderer2);
709
719
  this.inputValue = model('');
710
720
  this.isComposing = signal(false);
721
+ this.isFirstPanelOpenedChange = true;
711
722
  this.hostRenderer = useHostRenderer();
712
723
  this.thyPanelOpened = input(false, { transform: coerceBooleanProperty });
713
724
  this.thyIsMultiple = input(false, { transform: coerceBooleanProperty });
@@ -795,6 +806,10 @@ class ThySelectControl {
795
806
  });
796
807
  effect(() => {
797
808
  const panelOpened = this.thyPanelOpened();
809
+ if (this.isFirstPanelOpenedChange) {
810
+ this.isFirstPanelOpenedChange = false;
811
+ return;
812
+ }
798
813
  if (panelOpened) {
799
814
  untracked(() => {
800
815
  if (this.thyShowSearch()) {
@@ -808,11 +823,9 @@ class ThySelectControl {
808
823
  untracked(() => {
809
824
  if (this.thyShowSearch()) {
810
825
  new Promise(resolve => setTimeout(resolve, 100)).then(() => {
811
- if (this.inputValue()) {
812
- this.inputValue.set('');
813
- this.updateWidth();
814
- this.thyOnSearch.emit(this.inputValue());
815
- }
826
+ this.inputValue.set('');
827
+ this.updateWidth();
828
+ this.thyOnSearch.emit(this.inputValue());
816
829
  });
817
830
  }
818
831
  });
@@ -1 +1 @@
1
- {"version":3,"file":"ngx-tethys-shared.mjs","sources":["../../../src/shared/ng-transclude.directive.ts","../../../src/shared/directives/thy-autofocus.directive.ts","../../../src/shared/directives/thy-enter.directive.ts","../../../src/shared/directives/thy-ctrl-enter.directive.ts","../../../src/shared/directives/thy-show.ts","../../../src/shared/directives/thy-stop-propagation.directive.ts","../../../src/shared/directives/thy-contextmenu.directive.ts","../../../src/shared/directives/thy-scroll.directive.ts","../../../src/shared/directives/thy-drag-drop.directive.ts","../../../src/shared/directives/string-or-template-outlet.directive.ts","../../../src/shared/directives/view-outlet.directive.ts","../../../src/shared/shared.module.ts","../../../src/shared/base-form-check.component.ts","../../../src/shared/select/select-control/select-control.component.ts","../../../src/shared/select/select-control/select-control.component.html","../../../src/shared/select/module.ts","../../../src/shared/option/option.token.ts","../../../src/shared/option/list-option/list-option.component.ts","../../../src/shared/option/list-option/list-option.component.html","../../../src/shared/option/option-group.component.ts","../../../src/shared/option/select-option-base.ts","../../../src/shared/option/option.component.ts","../../../src/shared/option/option.component.html","../../../src/shared/option/group/option-group.component.ts","../../../src/shared/option/group/option-group.component.html","../../../src/shared/option/options-container.component.ts","../../../src/shared/option/module.ts","../../../src/shared/ngx-tethys-shared.ts"],"sourcesContent":["import { Directive, Input, TemplateRef, ViewContainerRef, effect, inject, input } from '@angular/core';\n\n/**\n * @private\n */\n@Directive({\n selector: '[thyTransclude]'\n})\nexport class ThyTranscludeDirective {\n viewRef: ViewContainerRef;\n\n protected _viewRef: ViewContainerRef;\n protected _ngTransclude: TemplateRef<any>;\n\n readonly thyTransclude = input<TemplateRef<any>>();\n\n constructor() {\n const viewRef = inject(ViewContainerRef);\n\n this.viewRef = viewRef;\n\n effect(() => {\n const transclude = this.thyTransclude();\n if (transclude) {\n this.viewRef.createEmbeddedView(transclude);\n }\n });\n }\n}\n","import { Directive, Input, ElementRef, NgZone, inject, input, effect } from '@angular/core';\nimport { reqAnimFrame } from 'ngx-tethys/core';\nimport { coerceBooleanProperty } from 'ngx-tethys/util';\n/**\n * 自动聚焦指令\n * @name input[thyAutofocus],textarea[thyAutofocus]\n */\n@Directive({\n selector: 'input[thyAutofocus],textarea[thyAutofocus]'\n})\nexport class ThyAutofocusDirective {\n private elementRef = inject(ElementRef);\n private ngZone = inject(NgZone);\n\n // 自动选择,用于只读的 input 输入框,方便复制粘贴\n private _autoSelect = false;\n\n /**\n * 是否自动聚焦\n * @default false\n */\n readonly thyAutofocus = input(false, { transform: coerceBooleanProperty });\n\n /**\n * 是否自动选择\n * @default false\n */\n readonly thyAutoSelect = input(false, { transform: coerceBooleanProperty });\n\n constructor() {\n effect(() => {\n if (this.thyAutofocus()) {\n // Note: this is being run outside of the Angular zone because `element.focus()` doesn't require\n // running change detection.\n this.ngZone.runOutsideAngular(() =>\n // Note: `element.focus()` causes re-layout and this may lead to frame drop on slower devices.\n // https://gist.github.com/paulirish/5d52fb081b3570c81e3a#setting-focus\n // `setTimeout` is a macrotask and macrotasks are executed within the current rendering frame.\n // Animation tasks are executed within the next rendering frame.\n reqAnimFrame(() => {\n this.elementRef.nativeElement.focus();\n if (this.thyAutoSelect() && this.elementRef.nativeElement.select) {\n this.elementRef.nativeElement.select();\n }\n })\n );\n }\n });\n }\n}\n","import { Directive, OnInit, NgZone, ElementRef, Renderer2, OnDestroy, inject, output } from '@angular/core';\nimport { keycodes } from 'ngx-tethys/util';\n\n/**\n * 与 (keydown.enter) 区别是支持组合键,当按 Ctrl + Enter 或者 Command + Enter 也会触发\n * @name thyEnter\n */\n@Directive({\n selector: '[thyEnter]'\n})\nexport class ThyEnterDirective implements OnInit, OnDestroy {\n private ngZone = inject(NgZone);\n private elementRef = inject(ElementRef);\n private renderer = inject(Renderer2);\n\n readonly thyEnter = output<KeyboardEvent>();\n\n onKeydown = (event: KeyboardEvent) => {\n const keyCode = event.which || event.keyCode;\n if (keyCode === keycodes.ENTER) {\n this.ngZone.run(() => {\n this.thyEnter.emit(event);\n });\n }\n };\n\n private removeKeydownListenerFn: VoidFunction;\n\n ngOnInit(): void {\n this.ngZone.runOutsideAngular(() => {\n this.removeKeydownListenerFn = this.renderer.listen(this.elementRef.nativeElement, 'keydown', this.onKeydown);\n });\n }\n\n ngOnDestroy(): void {\n this.removeKeydownListenerFn();\n }\n}\n","import { Directive, ElementRef, OnInit, NgZone, Renderer2, OnDestroy, inject, output } from '@angular/core';\nimport { keycodes } from 'ngx-tethys/util';\n\n/**\n * @name thyCtrlEnter\n */\n@Directive({\n selector: '[thyCtrlEnter]'\n})\nexport class ThyCtrlEnterDirective implements OnInit, OnDestroy {\n private ngZone = inject(NgZone);\n private elementRef = inject(ElementRef);\n private renderer = inject(Renderer2);\n\n readonly thyCtrlEnter = output<KeyboardEvent>();\n\n private removeKeydownListenerFn: VoidFunction;\n\n onKeydown = (event: KeyboardEvent) => {\n const keyCode = event.which || event.keyCode;\n if ((event.ctrlKey || event.metaKey) && keyCode === keycodes.ENTER) {\n event.preventDefault();\n this.ngZone.run(() => {\n this.thyCtrlEnter.emit(event);\n });\n }\n };\n\n ngOnInit() {\n this.ngZone.runOutsideAngular(() => {\n this.removeKeydownListenerFn = this.renderer.listen(this.elementRef.nativeElement, 'keydown', this.onKeydown);\n });\n }\n\n ngOnDestroy(): void {\n this.removeKeydownListenerFn();\n }\n}\n","import { Directive, Renderer2, output, ElementRef, OnDestroy, NgZone, inject, effect, input } from '@angular/core';\nimport { useHostRenderer } from '@tethys/cdk/dom';\nimport { coerceBooleanProperty } from 'ngx-tethys/util';\n\n/**\n * @name thyShow\n */\n@Directive({\n selector: '[thyShow]'\n})\nexport class ThyShowDirective implements OnDestroy {\n private elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private renderer = inject(Renderer2);\n private ngZone = inject(NgZone);\n\n readonly thyShowChange = output<boolean>();\n\n private hostRenderer = useHostRenderer();\n\n private unListenEvent: () => void;\n\n private unListenDocument() {\n if (this.unListenEvent) {\n this.unListenEvent();\n this.unListenEvent = null;\n }\n }\n\n readonly thyShow = input(false, { transform: coerceBooleanProperty });\n\n constructor() {\n effect(() => {\n if (this.thyShow()) {\n this.hostRenderer.setStyle('display', 'block');\n this.ngZone.runOutsideAngular(() =>\n setTimeout(() => {\n this.unListenEvent = this.renderer.listen('document', 'click', event => {\n if (!this.elementRef.nativeElement.contains(event.target)) {\n this.ngZone.run(() => this.thyShowChange.emit(false));\n this.unListenDocument();\n }\n });\n })\n );\n } else {\n this.hostRenderer.setStyle('display', 'none');\n this.unListenDocument();\n }\n });\n }\n\n ngOnDestroy() {\n this.unListenDocument();\n }\n}\n","import { Directive, ElementRef, NgZone, OnDestroy, computed, effect, inject, input } from '@angular/core';\nimport { fromEvent, Observable, Subject } from 'rxjs';\nimport { startWith, switchMap, takeUntil } from 'rxjs/operators';\n\n/**\n * 阻止事件冒泡\n * @name thyStopPropagation\n */\n@Directive({\n selector: '[thyStopPropagation]'\n})\nexport class ThyStopPropagationDirective implements OnDestroy {\n readonly thyStopPropagation = input<string | boolean>(true);\n\n private readonly _eventName = computed(() => {\n const stopPropagation = this.thyStopPropagation();\n if (stopPropagation !== false) {\n if (!stopPropagation || stopPropagation === true || stopPropagation === 'true') {\n return 'click';\n } else {\n return stopPropagation as string;\n }\n }\n });\n\n private readonly _shouldStopPropagation = computed(() => {\n const stopPropagation = this.thyStopPropagation();\n return stopPropagation === false || stopPropagation === 'false' ? false : true;\n });\n\n private _changes$ = new Subject<string | boolean>();\n private _destroy$ = new Subject<void>();\n\n constructor() {\n const _host = inject<ElementRef<HTMLElement>>(ElementRef);\n const _ngZone = inject(NgZone);\n\n effect(() => {\n this._changes$.next(this.thyStopPropagation());\n });\n\n this._changes$\n .pipe(\n // Note: we start the stream immediately since the `thyStopPropagation` setter may never be reached.\n startWith<null, null>(null),\n switchMap(\n () =>\n new Observable<Event>(subscriber =>\n _ngZone.runOutsideAngular(() => fromEvent(_host.nativeElement, this._eventName()).subscribe(subscriber))\n )\n ),\n takeUntil(this._destroy$)\n )\n .subscribe(event => {\n if (this._shouldStopPropagation()) {\n event.stopPropagation();\n }\n });\n }\n\n ngOnDestroy() {\n this._destroy$.next();\n }\n}\n","import { Directive, ElementRef, OnInit, NgZone, Renderer2, OnDestroy, inject, output } from '@angular/core';\n\n/**\n * @name thyContextMenu\n */\n@Directive({\n selector: '[thyContextMenu]'\n})\nexport class ThyContextMenuDirective implements OnInit, OnDestroy {\n private ngZone = inject(NgZone);\n private elementRef = inject(ElementRef);\n private renderer = inject(Renderer2);\n\n readonly thyContextMenu = output<Event>();\n\n private removeContextListenerFn: VoidFunction;\n\n rightClick = (event: Event) => {\n event.preventDefault();\n this.ngZone.run(() => {\n this.thyContextMenu.emit(event);\n });\n };\n\n ngOnInit() {\n this.ngZone.runOutsideAngular(() => {\n this.removeContextListenerFn = this.renderer.listen(this.elementRef.nativeElement, 'contextmenu', this.rightClick);\n });\n }\n\n ngOnDestroy(): void {\n this.removeContextListenerFn();\n }\n}\n","import { Directive, ElementRef, OnInit, NgZone, OnDestroy, inject, input, output, effect } from '@angular/core';\nimport { Subject, Observable, Observer, fromEvent, Subscription } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { normalizePassiveListenerOptions } from '@angular/cdk/platform';\nimport { coerceBooleanProperty } from 'ngx-tethys/util';\n\nconst passiveEventListenerOptions = <AddEventListenerOptions>normalizePassiveListenerOptions({ passive: true });\n\n/**\n * @name thyScroll\n */\n@Directive({\n selector: '[thyScroll]'\n})\nexport class ThyScrollDirective implements OnInit, OnDestroy {\n private elementRef = inject<ElementRef<any>>(ElementRef);\n private ngZone = inject(NgZone);\n\n private _destroyed = new Subject<void>();\n private _subscription: Subscription;\n\n private _elementScrolled: Observable<Event> = new Observable((observer: Observer<Event>) =>\n this.ngZone.runOutsideAngular(() =>\n fromEvent(this.elementRef.nativeElement, 'scroll', passiveEventListenerOptions)\n .pipe(takeUntil(this._destroyed))\n .subscribe(observer)\n )\n );\n\n readonly thyEnable = input(true, { transform: coerceBooleanProperty });\n\n /**\n * @description\n *\n * Note: the `thyOnScrolled` emits outside of the Angular zone since the `scroll` listener\n * is installed within the `<root>` zone.\n *\n * Consumers need to re-enter the Angular zone theirselves when the change detection is needeed to be run:\n * ```ts\n * @Component({\n * template: '<div thyScroll (thyOnScrolled)=\"onScrolled()\"></div>'\n * })\n * class ThyScrollComponent {\n * onScrolled(): void {\n * console.log(Zone.current); // <root>\n * console.log(NgZone.isInAngularZone()); // false\n * }\n * }\n * ```\n */\n\n readonly thyOnScrolled = output<ElementRef>();\n\n constructor() {\n effect(() => {\n const thyEnable = this.thyEnable();\n if (thyEnable && !this._subscription) {\n this._subscription = this._elementScrolled.subscribe(() => this.thyOnScrolled.emit(this.elementRef));\n } else {\n if (this._subscription) {\n this._subscription.unsubscribe();\n this._subscription = null;\n }\n }\n });\n }\n\n ngOnInit() {}\n\n ngOnDestroy() {\n this._destroyed.next();\n this._destroyed.complete();\n }\n\n getElementRef(): ElementRef<HTMLElement> {\n return this.elementRef;\n }\n}\n","import { Directive, AfterContentInit, ContentChildren, QueryList, OnDestroy } from '@angular/core';\nimport { CdkDrag } from '@angular/cdk/drag-drop';\nimport { merge, Subject } from 'rxjs';\nimport { takeUntil, startWith } from 'rxjs/operators';\n\n/**\n * @private\n */\n@Directive({\n selector: '[thyDragDrop]'\n})\nexport class ThyDragDropDirective implements AfterContentInit, OnDestroy {\n @ContentChildren(CdkDrag, { descendants: true }) draggables: QueryList<CdkDrag>;\n\n private ngUnsubscribe$ = new Subject<void>();\n\n constructor() {}\n\n ngAfterContentInit() {\n if (this.draggables) {\n this.draggables.changes.pipe(startWith(this.draggables)).subscribe(() => {\n this.ngUnsubscribe$.next();\n this.ngUnsubscribe$.complete();\n\n this.ngUnsubscribe$ = new Subject();\n merge(\n ...this.draggables.toArray().map(dragRef => {\n return dragRef.started;\n })\n )\n .pipe(takeUntil(this.ngUnsubscribe$))\n .subscribe(() => {\n document.body.classList.add('thy-dragging-body');\n });\n\n merge(...this.draggables.toArray().map(dragRef => dragRef.released))\n .pipe(takeUntil(this.ngUnsubscribe$))\n .subscribe(() => {\n document.body.classList.remove('thy-dragging-body');\n });\n });\n }\n }\n\n ngOnDestroy(): void {\n this.ngUnsubscribe$.next();\n this.ngUnsubscribe$.complete();\n }\n}\n","import { Directive, EmbeddedViewRef, Renderer2, TemplateRef, ViewContainerRef, effect, inject, input } from '@angular/core';\nimport { isTemplateRef } from 'ngx-tethys/util';\n\n/**\n * @name thyStringOrTemplateOutlet\n */\n@Directive({\n selector: '[thyStringOrTemplateOutlet]',\n exportAs: 'thyStringOrTemplateOutlet'\n})\nexport class ThyStringOrTemplateOutletDirective {\n private viewContainerRef = inject(ViewContainerRef);\n private renderer = inject(Renderer2);\n\n private viewRef: EmbeddedViewRef<any>;\n\n private textNode: Text;\n\n readonly thyStringOrTemplateOutletContext = input<any>();\n\n readonly thyStringOrTemplateOutlet = input<any | TemplateRef<any>>();\n\n constructor() {\n effect(() => {\n this.updateView();\n });\n\n effect(() => {\n if (this.viewRef && this.thyStringOrTemplateOutletContext()) {\n this.viewRef.context = this.thyStringOrTemplateOutletContext();\n }\n });\n }\n\n private updateView() {\n const thyStringOrTemplateOutlet = this.thyStringOrTemplateOutlet();\n this.clear();\n if (thyStringOrTemplateOutlet) {\n if (isTemplateRef(thyStringOrTemplateOutlet)) {\n this.viewRef = this.viewContainerRef.createEmbeddedView(thyStringOrTemplateOutlet, this.thyStringOrTemplateOutletContext());\n } else {\n this.textNode = this.renderer.createText(thyStringOrTemplateOutlet + '');\n const element = this.viewContainerRef.element.nativeElement as HTMLElement;\n this.renderer.insertBefore(element.parentNode, this.textNode, element);\n }\n } else {\n this.viewRef = null;\n }\n }\n\n private clear() {\n this.viewContainerRef.clear();\n if (this.textNode) {\n this.renderer.removeChild(this.textNode.parentNode, this.textNode);\n }\n }\n}\n","import {\n ComponentRef,\n Directive,\n ChangeDetectorRef,\n EmbeddedViewRef,\n Type,\n ViewContainerRef,\n TemplateRef,\n KeyValueDiffer,\n KeyValueDiffers,\n inject,\n input,\n effect\n} from '@angular/core';\nimport { SafeAny } from 'ngx-tethys/types';\n\nfunction hasInput(componentRef: ComponentRef<unknown>, inputKey: string) {\n return componentRef['_tNode'].inputs?.[inputKey];\n}\n\n/**\n * 视图 Outlet 组件,取代 NgComponentOutlet 和 NgTemplateOutlet\n * @name thyViewOutlet\n * @order 10\n */\n@Directive({\n selector: '[thyViewOutlet]'\n})\nexport class ThyViewOutletDirective {\n private viewContainerRef = inject(ViewContainerRef);\n private keyValueDiffers = inject(KeyValueDiffers);\n\n private componentRef: ComponentRef<SafeAny> | undefined;\n\n private embeddedViewRef: EmbeddedViewRef<SafeAny> | undefined;\n\n /**\n * 组件或者模板 TemplateRef\n */\n readonly thyViewOutlet = input<Type<SafeAny> | TemplateRef<SafeAny> | null>(null);\n\n /**\n * 组件和模板上下文传递数据\n */\n readonly thyViewOutletContext = input<SafeAny>();\n\n private keyValueDiffer: KeyValueDiffer<SafeAny, SafeAny>;\n\n constructor() {\n effect(() => {\n const thyViewOutlet = this.thyViewOutlet();\n const { viewContainerRef: viewContainerRef } = this;\n viewContainerRef.clear();\n this.componentRef = undefined;\n this.embeddedViewRef = undefined;\n\n if (thyViewOutlet) {\n if (thyViewOutlet instanceof TemplateRef) {\n this.embeddedViewRef = viewContainerRef.createEmbeddedView(thyViewOutlet, this.thyViewOutletContext());\n } else {\n this.componentRef = viewContainerRef.createComponent(thyViewOutlet, {\n index: viewContainerRef.length\n });\n }\n }\n });\n\n effect(() => {\n const thyViewOutletContext = this.thyViewOutletContext();\n let updatedKeys: string[] = [];\n if (thyViewOutletContext) {\n if (!this.keyValueDiffer) {\n this.keyValueDiffer = this.keyValueDiffers.find(this.thyViewOutletContext()).create();\n this.keyValueDiffer.diff(thyViewOutletContext);\n updatedKeys = Object.keys(thyViewOutletContext);\n } else {\n const diffChanges = this.keyValueDiffer.diff(this.thyViewOutletContext());\n diffChanges?.forEachChangedItem(item => {\n updatedKeys.push(item.key);\n });\n }\n }\n\n if (this.componentRef) {\n this.updateContext(this.componentRef.instance, updatedKeys);\n this.componentRef.injector.get(ChangeDetectorRef).markForCheck();\n } else if (this.embeddedViewRef) {\n this.updateContext(this.embeddedViewRef.context, updatedKeys);\n this.embeddedViewRef.markForCheck();\n }\n });\n }\n\n private updateContext(context: SafeAny, updatedKeys: string[]) {\n updatedKeys.forEach(key => {\n // 兼容组件输入属性没有通过 @Input,设置了 @Input 采用 setInput,否则直接赋值,setInput 会触发 Angular 组件的 onChanges\n if (this.componentRef && hasInput(this.componentRef, key)) {\n this.componentRef.setInput(key, this.thyViewOutletContext()[key]);\n } else {\n context[key] = this.thyViewOutletContext()[key];\n }\n });\n }\n}\n","import { NgModule } from '@angular/core';\nimport { ThyTranscludeDirective } from './ng-transclude.directive';\nimport { ThyAutofocusDirective } from './directives/thy-autofocus.directive';\nimport { ThyEnterDirective } from './directives/thy-enter.directive';\nimport { ThyCtrlEnterDirective } from './directives/thy-ctrl-enter.directive';\nimport { ThyShowDirective } from './directives/thy-show';\nimport { ThyStopPropagationDirective } from './directives/thy-stop-propagation.directive';\nimport { ThyContextMenuDirective } from './directives/thy-contextmenu.directive';\nimport { ThyScrollDirective } from './directives/thy-scroll.directive';\nimport { ThyDragDropDirective } from './directives/thy-drag-drop.directive';\nimport { ThyStringOrTemplateOutletDirective } from './directives/string-or-template-outlet.directive';\nimport { ThyViewOutletDirective } from './directives/view-outlet.directive';\n\n@NgModule({\n imports: [\n ThyViewOutletDirective,\n ThyTranscludeDirective,\n ThyAutofocusDirective,\n ThyEnterDirective,\n ThyCtrlEnterDirective,\n ThyShowDirective,\n ThyStopPropagationDirective,\n ThyContextMenuDirective,\n ThyScrollDirective,\n ThyDragDropDirective,\n ThyStringOrTemplateOutletDirective\n ],\n exports: [\n ThyTranscludeDirective,\n ThyAutofocusDirective,\n ThyEnterDirective,\n ThyCtrlEnterDirective,\n ThyShowDirective,\n ThyStopPropagationDirective,\n ThyContextMenuDirective,\n ThyScrollDirective,\n ThyDragDropDirective,\n ThyStringOrTemplateOutletDirective,\n ThyViewOutletDirective\n ],\n providers: []\n})\nexport class ThySharedModule {}\n","import { ControlValueAccessor } from '@angular/forms';\nimport { HostBinding, Input, ChangeDetectorRef, Directive, inject, input, computed } from '@angular/core';\nimport { ThyTranslate, TabIndexDisabledControlValueAccessorMixin } from 'ngx-tethys/core';\nimport { coerceBooleanProperty } from 'ngx-tethys/util';\n\nconst noop = () => {};\n\n/**\n * @private\n */\n@Directive({\n host: {\n '[class.form-check]': '_isFormCheck',\n '[class.form-check-inline]': 'thyInline()',\n '[class.form-check-checked]': '_isChecked',\n '[class.form-check-inline-no-label-text]': '_isNoText()'\n }\n})\nexport class ThyFormCheckBaseComponent extends TabIndexDisabledControlValueAccessorMixin implements ControlValueAccessor {\n protected thyTranslate = inject(ThyTranslate);\n protected changeDetectorRef? = inject(ChangeDetectorRef);\n\n // The internal data model\n _innerValue: boolean = null;\n\n _disabled = false;\n\n private onTouchedCallback: () => void = noop;\n\n private onChangeCallback: (_: any) => void = noop;\n\n _isFormCheck = true;\n\n _isChecked = false;\n\n /**\n * 是否同一行展示\n * @default false\n */\n readonly thyInline = input(false, { transform: coerceBooleanProperty });\n\n /**\n * Label 展示文本\n */\n readonly thyLabelText = input<string>();\n\n /**\n * Label 文本多语言 key\n */\n readonly thyLabelTextTranslateKey = input<string>();\n\n _labelText = computed(() => {\n const labelTextTranslateKey = this.thyLabelTextTranslateKey();\n const labelText = this.thyLabelText();\n return labelTextTranslateKey ? this.thyTranslate.instant(labelTextTranslateKey) : labelText || '';\n });\n\n _isNoText = computed(() => {\n return this.thyInline() && !this._labelText();\n });\n\n disabled = false;\n\n /**\n * 是否禁用\n * @default false\n */\n @Input({ transform: coerceBooleanProperty })\n override set thyDisabled(value: boolean) {\n this.disabled = value;\n this.setDisabledState(this.disabled);\n }\n\n override get thyDisabled() {\n return this.disabled;\n }\n\n writeValue(obj: boolean): void {\n if (obj !== this._innerValue) {\n this._innerValue = obj;\n this._isChecked = !!this._innerValue;\n }\n }\n\n registerOnChange(fn: any): void {\n this.onChangeCallback = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouchedCallback = fn;\n }\n\n setDisabledState?(isDisabled: boolean): void {\n this._disabled = isDisabled;\n this.markForCheck();\n }\n\n updateValue(value: boolean): void {\n this._innerValue = value;\n this._isChecked = !!this._innerValue;\n this.onChangeCallback(value);\n this.markForCheck();\n }\n\n constructor() {\n super();\n }\n\n change() {\n this.updateValue(!this._innerValue);\n }\n\n markForCheck() {\n if (this.changeDetectorRef) {\n this.changeDetectorRef.markForCheck();\n }\n }\n}\n","import { ThyTagSize } from 'ngx-tethys/tag';\nimport { coerceBooleanProperty, isUndefinedOrNull } from 'ngx-tethys/util';\n\nimport {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n OnInit,\n Renderer2,\n TemplateRef,\n numberAttribute,\n inject,\n input,\n viewChild,\n output,\n effect,\n Signal,\n computed,\n linkedSignal,\n untracked,\n signal,\n model\n} from '@angular/core';\nimport { useHostRenderer } from '@tethys/cdk/dom';\n\nimport { NgClass, NgStyle, NgTemplateOutlet } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { ThyGridModule } from 'ngx-tethys/grid';\nimport { ThyIcon } from 'ngx-tethys/icon';\nimport { ThyTag } from 'ngx-tethys/tag';\nimport { ThyTooltipDirective } from 'ngx-tethys/tooltip';\nimport { injectLocale, ThySharedLocale } from 'ngx-tethys/i18n';\nimport { SelectOptionBase } from '../../option/select-option-base';\n\nexport type SelectControlSize = 'xs' | 'sm' | 'md' | 'lg' | '';\n\n/**\n * @private\n */\n@Component({\n selector: 'thy-select-control,[thySelectControl]',\n templateUrl: './select-control.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [FormsModule, NgClass, NgStyle, ThyTag, NgTemplateOutlet, ThyIcon, ThyGridModule, ThyTooltipDirective],\n host: {\n '[class.select-control-borderless]': 'thyBorderless()'\n }\n})\nexport class ThySelectControl implements OnInit {\n private renderer = inject(Renderer2);\n\n inputValue = model<string>('');\n\n isComposing = signal(false);\n\n searchInputControlClass: { [key: string]: boolean };\n\n private hostRenderer = useHostRenderer();\n\n readonly thyPanelOpened = input(false, { transform: coerceBooleanProperty });\n\n readonly thyIsMultiple = input(false, { transform: coerceBooleanProperty });\n\n readonly thyShowSearch = input(false, { transform: coerceBooleanProperty });\n\n readonly thySelectedOptions = input<SelectOptionBase | SelectOptionBase[]>();\n\n protected readonly previousSelectedOptions = linkedSignal({\n source: () => this.thySelectedOptions(),\n computation: (source, previous) => previous?.source\n });\n\n readonly thyDisabled = input(false, { transform: coerceBooleanProperty });\n\n readonly customDisplayTemplate = input<TemplateRef<any>>(undefined);\n\n readonly thyAllowClear = input(false, { transform: coerceBooleanProperty });\n\n readonly thyPlaceholder = input('');\n\n readonly thySize = input<SelectControlSize>();\n\n readonly tagSize: Signal<ThyTagSize> = computed(() => {\n const value = this.thySize();\n if (value === 'xs' || value === 'sm') {\n return 'sm';\n } else if (value === 'lg') {\n return 'lg';\n } else {\n return 'md';\n }\n });\n\n readonly thyMaxTagCount = input(0, { transform: numberAttribute });\n\n readonly thyBorderless = input(false, { transform: coerceBooleanProperty });\n\n readonly thyPreset = input<string>('');\n\n public readonly thyOnSearch = output<string>();\n\n public readonly thyOnRemove = output<{ item: SelectOptionBase; $eventOrigin: Event }>();\n\n public readonly thyOnClear = output<Event>();\n\n public readonly thyOnBlur = output<Event>();\n\n readonly inputElement = viewChild<ElementRef>('inputElement');\n\n locale: Signal<ThySharedLocale> = injectLocale('shared');\n\n isSelectedValue = computed(() => {\n return (\n (!this.thyIsMultiple() && !isUndefinedOrNull(this.thySelectedOptions())) ||\n (this.thyIsMultiple() && (<SelectOptionBase[]>this.thySelectedOptions()).length > 0)\n );\n });\n\n showClearIcon = computed(() => {\n return this.thyAllowClear() && this.isSelectedValue();\n });\n\n maxSelectedTags = computed(() => {\n const selectedOptions = this.thySelectedOptions();\n if (this.thyMaxTagCount() > 0 && selectedOptions instanceof Array && selectedOptions.length > this.thyMaxTagCount()) {\n return selectedOptions.slice(0, this.thyMaxTagCount() - 1);\n }\n return selectedOptions as SelectOptionBase[];\n });\n\n collapsedSelectedTags = computed(() => {\n const selectedOptions = this.thySelectedOptions();\n const maxTagCount = this.thyMaxTagCount();\n if (maxTagCount && selectedOptions instanceof Array && selectedOptions.length > maxTagCount) {\n return selectedOptions.slice(maxTagCount - 1, selectedOptions.length);\n }\n return [];\n });\n\n selectedValueStyle = computed(() => {\n let showSelectedValue = false;\n if (this.thyShowSearch()) {\n if (this.thyPanelOpened()) {\n showSelectedValue = !(this.isComposing() || this.inputValue());\n } else {\n showSelectedValue = true;\n }\n } else {\n showSelectedValue = true;\n }\n return { display: showSelectedValue ? 'flex' : 'none' };\n });\n\n placeholderStyle = computed(() => {\n let placeholder = true;\n if (this.isSelectedValue()) {\n placeholder = false;\n }\n if (!this.thyPlaceholder()) {\n placeholder = false;\n }\n if (this.isComposing() || this.inputValue()) {\n placeholder = false;\n }\n return { display: placeholder ? 'block' : 'none' };\n });\n\n constructor() {\n effect(() => {\n const panelOpened = this.thyPanelOpened();\n if (panelOpened) {\n untracked(() => {\n if (this.thyShowSearch()) {\n Promise.resolve(null).then(() => {\n this.inputElement()?.nativeElement.focus();\n });\n }\n });\n } else {\n untracked(() => {\n if (this.thyShowSearch()) {\n new Promise(resolve => setTimeout(resolve, 100)).then(() => {\n if (this.inputValue()) {\n this.inputValue.set('');\n this.updateWidth();\n this.thyOnSearch.emit(this.inputValue());\n }\n });\n }\n });\n }\n });\n\n effect(() => {\n this.setSelectControlClass();\n });\n\n effect(() => {\n const oldValue = this.previousSelectedOptions();\n const value = this.thySelectedOptions();\n if (value) {\n let sameValue = false;\n untracked(() => {\n if (this.thyIsMultiple()) {\n if (oldValue instanceof Array && value instanceof Array && oldValue.length === value.length) {\n sameValue = value.every((option, index) => option.thyValue === oldValue[index].thyValue);\n }\n } else {\n if (oldValue && value) {\n sameValue = (oldValue as SelectOptionBase).thyValue === (value as SelectOptionBase).thyValue;\n }\n }\n\n if (this.thyPanelOpened() && this.thyShowSearch()) {\n if (!sameValue) {\n Promise.resolve(null).then(() => {\n this.inputValue.set('');\n this.updateWidth();\n });\n }\n //等待组件渲染好再聚焦\n setTimeout(() => {\n if (this.thyPanelOpened()) {\n this.inputElement()?.nativeElement.focus();\n }\n }, 200);\n }\n });\n }\n });\n }\n\n ngOnInit() {}\n\n setSelectControlClass() {\n const modeType = this.thyIsMultiple() ? 'multiple' : 'single';\n const selectControlClass = {\n [`form-control`]: true,\n [`form-control-${this.thySize()}`]: !!this.thySize(),\n [`form-control-custom`]: true,\n [`select-control`]: true,\n [`select-control-${modeType}`]: true,\n [`select-control-show-search`]: this.thyShowSearch(),\n [`panel-is-opened`]: this.thyPanelOpened(),\n [`disabled`]: this.thyDisabled()\n };\n this.hostRenderer.updateClassByMap(selectControlClass);\n this.searchInputControlClass = {\n [`form-control`]: true,\n [`form-control-${this.thySize()}`]: !!this.thySize(),\n [`search-input-field`]: true,\n [`hidden`]: !this.thyShowSearch(),\n [`disabled`]: this.thyDisabled()\n };\n }\n\n setInputValue(value: string) {\n if (value !== this.inputValue()) {\n this.inputValue.set(value);\n this.updateWidth();\n this.thyOnSearch.emit(this.inputValue());\n }\n }\n\n handleBackspace(event: Event) {\n if ((event as KeyboardEvent).isComposing) {\n return;\n }\n const selectedOptions = this.thySelectedOptions();\n if (!this.inputValue()?.length && selectedOptions instanceof Array) {\n if (selectedOptions.length > 0) {\n this.removeHandle(selectedOptions[selectedOptions.length - 1], event);\n }\n }\n }\n\n updateWidth() {\n if (this.thyIsMultiple() && this.thyShowSearch()) {\n if (this.inputValue() || this.isComposing()) {\n this.renderer.setStyle(this.inputElement()?.nativeElement, 'width', `${this.inputElement()?.nativeElement.scrollWidth}px`);\n } else {\n this.renderer.removeStyle(this.inputElement()?.nativeElement, 'width');\n }\n }\n }\n\n removeHandle(item: SelectOptionBase, $event: Event) {\n this.thyOnRemove.emit({ item: item, $eventOrigin: $event });\n }\n\n clearHandle($event: Event) {\n this.thyOnClear.emit($event);\n }\n\n compositionChange(isComposing: boolean) {\n this.isComposing.set(isComposing);\n }\n\n trackValue(_index: number, option: SelectOptionBase): any {\n return option.thyValue;\n }\n\n onBlur(event: Event) {\n this.thyOnBlur.emit(event);\n }\n}\n","<ng-template #inputTemplate>\n <input\n #inputElement\n [tabindex]=\"-1\"\n (compositionstart)=\"compositionChange(true)\"\n (compositionend)=\"compositionChange(false)\"\n autocomplete=\"something-new\"\n [ngClass]=\"searchInputControlClass\"\n (input)=\"updateWidth()\"\n [ngModel]=\"inputValue()\"\n (ngModelChange)=\"setInputValue($event)\"\n (keydown.backspace)=\"handleBackspace($event)\"\n [disabled]=\"thyDisabled()\"\n (blur)=\"onBlur($event)\" />\n</ng-template>\n\n<div class=\"select-control-rendered\">\n @if (!isSelectedValue()) {\n <div class=\"text-placeholder text-truncate\" [ngStyle]=\"placeholderStyle()\">\n {{ thyPlaceholder() }}\n </div>\n }\n @if (thyIsMultiple()) {\n <div thyFlex thyWrap=\"wrap\" thyGap=\"4\" thyAlignItems=\"center\" class=\"w-100\">\n @if (thyPreset() === 'tag') {\n @for (item of maxSelectedTags(); track trackValue($index, item)) {\n <div thyFlexItem class=\"custom-choice-item text-truncate\">\n <ng-template\n [ngTemplateOutlet]=\"customDisplayTemplate()\"\n [ngTemplateOutletContext]=\"{ $implicit: item.thyRawValue || item.thyValue || item }\">\n </ng-template>\n @if (!thyDisabled()) {\n <div class=\"choice-remove-link ml-1\" (click)=\"removeHandle(item, $event)\">\n <span>\n <thy-icon thyIconName=\"close\" class=\"font-size-sm\"></thy-icon>\n </span>\n </div>\n }\n </div>\n }\n } @else {\n @for (item of maxSelectedTags(); track trackValue($index, item)) {\n <div thyFlexItem thyTag class=\"choice-item\" [ngClass]=\"{ disabled: thyDisabled() === true }\" [thySize]=\"tagSize()\">\n <div class=\"text-truncate h-100\">\n @if (!customDisplayTemplate()) {\n {{ item?.thyLabelText }}\n } @else {\n <ng-template\n [ngTemplateOutlet]=\"customDisplayTemplate()\"\n [ngTemplateOutletContext]=\"{ $implicit: item.thyRawValue || item.thyValue || item }\"></ng-template>\n }\n </div>\n @if (!thyDisabled()) {\n <div class=\"choice-remove-link ml-1\" (click)=\"removeHandle(item, $event)\">\n <span>\n <thy-icon thyIconName=\"close\" class=\"font-size-sm\"></thy-icon>\n </span>\n </div>\n }\n </div>\n }\n }\n @if (thyMaxTagCount() && thySelectedOptions()?.length > thyMaxTagCount()) {\n <div\n thyFlexItem\n class=\"choice-item max-tag-count-choice\"\n thyTag\n [thySize]=\"tagSize()\"\n [ngClass]=\"{ disabled: thyDisabled() === true }\"\n [thyTooltip]=\"maxTagTooltip\">\n <div class=\"text-truncate\">+{{ thySelectedOptions()?.length - thyMaxTagCount() + 1 }}</div>\n </div>\n }\n <div thyFlexItem class=\"select-control-search\">\n <ng-template [ngTemplateOutlet]=\"inputTemplate\"></ng-template>\n </div>\n </div>\n } @else {\n @if (isSelectedValue()) {\n <div class=\"selected-value text-truncate\" [ngStyle]=\"selectedValueStyle()\">\n @if (!customDisplayTemplate()) {\n <span class=\"text-truncate\">{{ thySelectedOptions()?.thyLabelText }}</span>\n } @else {\n <ng-template\n [ngTemplateOutlet]=\"customDisplayTemplate()\"\n [ngTemplateOutletContext]=\"{\n $implicit: thySelectedOptions()?.thyRawValue || thySelectedOptions()?.thyValue || thySelectedOptions()\n }\"></ng-template>\n }\n </div>\n }\n <div class=\"select-control-search\">\n <ng-template [ngTemplateOutlet]=\"inputTemplate\"></ng-template>\n </div>\n }\n</div>\n<span class=\"select-control-arrow\">\n <thy-icon thyIconName=\"angle-down\" class=\"font-size-base\"></thy-icon>\n</span>\n@if (showClearIcon()) {\n <span class=\"select-control-clear remove-link\" (click)=\"clearHandle($event)\">\n <thy-icon class=\"remove-link-icon font-size-base\" thyIconName=\"close-circle-bold-fill\"></thy-icon>\n </span>\n}\n\n<ng-template #maxTagTooltip>\n @let lastIndex = collapsedSelectedTags().length - 1;\n @for (item of collapsedSelectedTags(); track trackValue($index, item)) {\n {{ item.thyLabelText }}\n @if ($index !== lastIndex) {\n {{ locale().comma }}\n }\n }\n</ng-template>\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport { ThyIconModule } from 'ngx-tethys/icon';\nimport { ThyTagModule } from 'ngx-tethys/tag';\n\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\nimport { ThySelectControl } from './select-control/select-control.component';\n\n@NgModule({\n imports: [CommonModule, FormsModule, ThyIconModule, ThyTagModule, ThySelectControl],\n exports: [ThySelectControl]\n})\nexport class ThySelectCommonModule {}\n","import { ElementRef, InjectionToken, InputSignal } from '@angular/core';\nimport { ThyListLayout } from '../shared.type';\nimport { ThyBooleanInput } from 'ngx-tethys/util';\n\nexport interface IThyOptionParentComponent {\n isMultiple: boolean;\n}\n\nexport interface IThyOptionGroupComponent {\n hidden: boolean;\n}\n\nexport interface IThyOptionComponent {\n thyValue: any;\n disabled?: boolean;\n element: ElementRef<HTMLElement>;\n}\n\nexport interface IThyListOptionParentComponent {\n multiple?: InputSignal<ThyBooleanInput>;\n layout?: InputSignal<ThyListLayout>;\n // 选择,取消选择 option\n toggleOption(option: IThyOptionComponent, event?: Event): void;\n // 设置当前选项为激活状态,即 hover 状态\n setActiveOption(option: IThyOptionComponent, event?: Event): void;\n // 滚动到当前的选项\n scrollIntoView(option: IThyOptionComponent): void;\n isSelected(option: IThyOptionComponent): boolean;\n}\n\n/**\n * Injection token used to provide the parent component to options.\n */\nexport const THY_OPTION_PARENT_COMPONENT = new InjectionToken<IThyOptionParentComponent>('THY_OPTION_PARENT_COMPONENT');\n\n/**\n * Injection token used to provide the parent component to options.\n */\nexport const THY_LIST_OPTION_PARENT_COMPONENT = new InjectionToken<IThyListOptionParentComponent>('THY_LIST_OPTION_PARENT_COMPONENT');\n","import { Component, ElementRef, HostListener, inject, input, computed } from '@angular/core';\nimport { Highlightable } from '@angular/cdk/a11y';\nimport { IThyOptionComponent, THY_LIST_OPTION_PARENT_COMPONENT } from '../option.token';\nimport { ThyIcon } from 'ngx-tethys/icon';\nimport { coerceBooleanProperty } from 'ngx-tethys/util';\n\nlet _uniqueIdCounter = 0;\n\n/**\n * @private\n * @order 30\n */\n@Component({\n selector: 'thy-list-option,[thy-list-option]',\n templateUrl: './list-option.component.html',\n imports: [ThyIcon],\n host: {\n '[class.disabled]': 'thyDisabled()',\n '[class.thy-list-option]': 'isListOption()',\n '[class.thy-grid-option]': 'isGridOption()',\n '[class.active]': 'selected',\n '[attr.role]': 'role',\n '[attr.tabindex]': 'tabIndex'\n }\n})\nexport class ThyListOption implements IThyOptionComponent, Highlightable {\n element = inject<ElementRef<HTMLElement>>(ElementRef);\n\n parentSelectionList = inject(THY_LIST_OPTION_PARENT_COMPONENT, { optional: true })!;\n\n role = 'option';\n\n tabIndex = -1;\n\n readonly isMultiple = computed(() => this.parentSelectionList.multiple());\n\n readonly isListOption = computed(() => this.parentSelectionList.layout() === 'list');\n\n readonly isGridOption = computed(() => this.parentSelectionList.layout() === 'grid');\n\n readonly id = input(`thy-list-option-${_uniqueIdCounter++}`);\n\n readonly thyValue = input<any>(undefined);\n\n readonly thyDisabled = input(false, { transform: coerceBooleanProperty });\n\n /** Whether the option is selected. */\n get selected() {\n return this.parentSelectionList.isSelected(this);\n }\n\n @HostListener('click', ['$event'])\n onClick(event: Event) {\n if (this.parentSelectionList.multiple() || !this.parentSelectionList.isSelected(this)) {\n this.parentSelectionList.toggleOption(this, event);\n this.parentSelectionList.setActiveOption(this);\n }\n }\n\n setActiveStyles(): void {\n this.element.nativeElement.classList.add('hover');\n this.parentSelectionList.scrollIntoView(this);\n }\n\n setInactiveStyles(): void {\n this.element.nativeElement.classList.remove('hover');\n }\n\n /**\n * Returns the list item's text label. Implemented as a part of the FocusKeyManager.\n * @docs-private\n */\n getLabel() {\n return '';\n }\n}\n","<ng-content></ng-content>\n@if (isMultiple() && isListOption()) {\n <span class=\"checked-icon\">\n <thy-icon thyIconName=\"check\"></thy-icon>\n </span>\n}\n@if (isGridOption()) {\n <span class=\"checked-icon\">\n <thy-icon thyIconName=\"check-circle-fill\"></thy-icon>\n </span>\n}\n","import { Component, ViewEncapsulation, ChangeDetectionStrategy } from '@angular/core';\nimport { ThyCanDisable, mixinDisabled, ThyCanDisableCtor, MixinBase } from 'ngx-tethys/core';\n\nconst _MixinBase: ThyCanDisableCtor & typeof MixinBase = mixinDisabled(MixinBase);\n\n/**\n * @private\n */\n@Component({\n selector: 'thy-list-option-group,[thy-list-option-group]',\n template: '<ng-content></ng-content>',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ThyOptionGroup extends _MixinBase implements ThyCanDisable {\n set thyDisabled(value: any) {\n this.thyDisabled = value;\n }\n}\n","export abstract class SelectOptionBase {\n thyLabelText: string;\n thyRawValue: any;\n thyValue: any;\n}\n","import {\n Component,\n TemplateRef,\n ChangeDetectionStrategy,\n HostBinding,\n HostListener,\n ElementRef,\n ChangeDetectorRef,\n OnDestroy,\n inject,\n input,\n viewChild,\n WritableSignal,\n signal,\n output,\n Input\n} from '@angular/core';\nimport { Highlightable } from '@angular/cdk/a11y';\nimport { SelectOptionBase } from './select-option-base';\nimport { ENTER, SPACE, coerceBooleanProperty, hasModifierKey } from 'ngx-tethys/util';\nimport { THY_OPTION_PARENT_COMPONENT } from './option.token';\nimport { ThyIcon } from 'ngx-tethys/icon';\n\nexport class ThyOptionSelectionChangeEvent {\n constructor(\n public option: ThyOption,\n public isUserInput = false\n ) {}\n}\n\nexport class ThyOptionVisibleChangeEvent {\n option: ThyOption;\n}\n\n/**\n * @private\n * @order 20\n */\n@Component({\n selector: 'thy-option',\n templateUrl: './option.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [ThyIcon],\n host: {\n class: 'thy-option-item',\n '[class.disabled]': 'thyDisabled()',\n '[class.hidden]': 'hidden()',\n '[attr.tabindex]': `tabIndex`,\n '[class.active]': 'selected()'\n }\n})\nexport class ThyOption extends SelectOptionBase implements OnDestroy, Highlightable {\n element = inject<ElementRef<HTMLElement>>(ElementRef);\n parent = inject(THY_OPTION_PARENT_COMPONENT, { optional: true })!;\n private cdr = inject(ChangeDetectorRef);\n\n // 继承至 SelectOptionBase,无法修改为 Signal\n @Input() thyValue: any;\n\n @Input() thyRawValue: any;\n\n @Input() thyLabelText: string;\n\n readonly thyShowOptionCustom = input<boolean>();\n\n readonly thySearchKey = input<string>();\n\n readonly template = viewChild(TemplateRef);\n\n readonly thyDisabled = input(false, { transform: coerceBooleanProperty });\n\n readonly hidden: WritableSignal<boolean> = signal(false);\n\n // 继承至 Highlightable,无法修改为 Signal\n get disabled(): boolean {\n return this.hidden() || this.thyDisabled();\n }\n\n get tabIndex(): string {\n return this.disabled ? '-1' : '0';\n }\n\n readonly selected: WritableSignal<boolean> = signal(false);\n\n readonly selectionChange = output<ThyOptionSelectionChangeEvent>();\n\n readonly visibleChange = output<ThyOptionVisibleChangeEvent>();\n\n constructor() {\n super();\n }\n\n getHostElement(): HTMLElement {\n return this.element.nativeElement;\n }\n\n @HostListener('click', ['$event'])\n onClick(event: Event) {\n this.selectViaInteraction();\n }\n\n @HostListener('keydown', ['$event'])\n handleKeydown(event: KeyboardEvent): void {\n if ((event.keyCode === ENTER || event.keyCode === SPACE) && !hasModifierKey(event)) {\n this.selectViaInteraction();\n event.preventDefault();\n }\n }\n\n selectViaInteraction(): void {\n if (!this.disabled) {\n const selected = this.parent.isMultiple ? !this.selected() : true;\n this.selected.set(selected);\n this.cdr.markForCheck();\n this.emitSelectionChangeEvent(true);\n }\n }\n\n select(event?: Event): void {\n if (!this.disabled) {\n if (!this.selected()) {\n this.selected.set(true);\n this.emitSelectionChangeEvent();\n this.cdr.markForCheck();\n }\n }\n }\n\n deselect(): void {\n if (this.selected() || this.disabled) {\n this.selected.set(false);\n this.emitSelectionChangeEvent();\n this.cdr.markForCheck();\n }\n }\n\n hideOption() {\n if (!this.hidden()) {\n this.hidden.set(true);\n this.visibleChange.emit({ option: this });\n this.cdr.markForCheck();\n }\n }\n\n showOption() {\n if (this.hidden()) {\n this.hidden.set(false);\n this.visibleChange.emit({ option: this });\n this.cdr.markForCheck();\n }\n }\n\n matchSearchText(searchText: string): boolean {\n const thySearchKey = this.thySearchKey();\n if (thySearchKey) {\n if (thySearchKey.toLowerCase().indexOf(searchText.toLowerCase()) >= 0) {\n return true;\n } else {\n return false;\n }\n } else {\n if (this.thyLabelText.toLowerCase().indexOf(searchText.toLowerCase()) >= 0) {\n return true;\n } else {\n return false;\n }\n }\n }\n\n setActiveStyles(): void {\n this.getHostElement().classList.add('hover');\n this.cdr.markForCheck();\n }\n\n setInactiveStyles(): void {\n this.getHostElement().classList.remove('hover');\n this.cdr.markForCheck();\n }\n\n getLabel(): string {\n return '';\n }\n\n private emitSelectionChangeEvent(isUserInput = false): void {\n this.selectionChange.emit(new ThyOptionSelectionChangeEvent(this, isUserInput));\n }\n\n ngOnDestroy() {}\n}\n","@if (thyShowOptionCustom()) {\n <ng-content></ng-content>\n <thy-icon class=\"checked-icon\" thyIconName=\"check\"></thy-icon>\n} @else {\n <span class=\"text-truncate\">{{ thyLabelText }}</span>\n <thy-icon class=\"checked-icon\" thyIconName=\"check\"></thy-icon>\n}\n","import {\n Component,\n HostBinding,\n NgZone,\n OnDestroy,\n AfterContentInit,\n ChangeDetectorRef,\n inject,\n input,\n ContentChildren,\n QueryList,\n WritableSignal,\n signal\n} from '@angular/core';\nimport { Observable, defer, Subject, merge } from 'rxjs';\nimport { ThyOptionVisibleChangeEvent, ThyOption } from '../option.component';\nimport { take, switchMap, startWith, takeUntil, debounceTime, map } from 'rxjs/operators';\nimport { coerceBooleanProperty } from 'ngx-tethys/util';\nimport { outputToObservable } from '@angular/core/rxjs-interop';\n\n/**\n * @private\n */\n@Component({\n selector: 'thy-option-group',\n templateUrl: './option-group.component.html',\n host: {\n class: 'thy-option-item-group',\n '[class.disabled]': 'thyDisabled()',\n '[class.thy-select-option-group-hidden]': 'hidden()'\n }\n})\nexport class ThySelectOptionGroup implements OnDestroy, AfterContentInit {\n private _ngZone = inject(NgZone);\n private cdr = inject(ChangeDetectorRef);\n\n readonly thyDisabled = input(false, { transform: coerceBooleanProperty });\n\n readonly hidden: WritableSignal<boolean> = signal(false);\n\n readonly thyGroupLabel = input<string>(undefined);\n\n @ContentChildren(ThyOption) options: QueryList<ThyOption>;\n\n _destroy$: Subject<void> = new Subject<void>();\n\n optionVisibleChanges: Observable<ThyOptionVisibleChangeEvent> = defer(() => {\n if (this.options) {\n return merge(...this.options.map(option => outputToObservable(option.visibleChange)));\n }\n return this._ngZone.onStable.asObservable().pipe(\n take(1),\n switchMap(() => this.optionVisibleChanges)\n );\n });\n\n ngAfterContentInit() {\n this.options.changes.pipe(startWith(null), takeUntil(this._destroy$)).subscribe(() => {\n this._resetOptions();\n });\n }\n\n _resetOptions() {\n const changedOrDestroyed$ = merge(this.options.changes, this._destroy$);\n merge(...this.options.map(option => outputToObservable(option.visibleChange)))\n .pipe(\n takeUntil(changedOrDestroyed$),\n debounceTime(10),\n map((event: ThyOptionVisibleChangeEvent) => {\n const hasOption = this.options.find(option => {\n if (!option.hidden()) {\n return true;\n }\n });\n if (hasOption) {\n return false;\n } else {\n return true;\n }\n })\n )\n .subscribe((data: boolean) => {\n this.hidden.set(data);\n this.cdr.markForCheck();\n });\n }\n\n ngOnDestroy() {\n this._destroy$.next();\n this._destroy$.complete();\n }\n}\n","<span class=\"group-name text-truncate\">{{ thyGroupLabel() }}</span>\n<ng-content></ng-content>\n","import { ChangeDetectionStrategy, Component, OnInit, TemplateRef, viewChild } from '@angular/core';\n\n@Component({\n selector: 'thy-options-container',\n template: `\n <ng-template #options>\n <ng-content></ng-content>\n </ng-template>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ThyOptionsContainer implements OnInit {\n readonly optionsTemplate = viewChild<TemplateRef<any>>('options');\n\n constructor() {}\n\n ngOnInit(): void {}\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { ThyListOption } from './list-option/list-option.component';\nimport { ThyOptionGroup } from './option-group.component';\nimport { ThyIconModule } from 'ngx-tethys/icon';\nimport { ThyOption } from './option.component';\nimport { ThySelectOptionGroup } from './group/option-group.component';\nimport { ThyOptionsContainer } from './options-container.component';\n\n@NgModule({\n imports: [CommonModule, ThyIconModule, ThyListOption, ThyOptionGroup, ThyOption, ThySelectOptionGroup, ThyOptionsContainer],\n exports: [ThyListOption, ThyOptionGroup, ThyOption, ThySelectOptionGroup, ThyOptionsContainer]\n})\nexport class ThyOptionModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ngx-tethys-shared.mjs","sources":["../../../src/shared/ng-transclude.directive.ts","../../../src/shared/directives/thy-autofocus.directive.ts","../../../src/shared/directives/thy-enter.directive.ts","../../../src/shared/directives/thy-ctrl-enter.directive.ts","../../../src/shared/directives/thy-show.ts","../../../src/shared/directives/thy-stop-propagation.directive.ts","../../../src/shared/directives/thy-contextmenu.directive.ts","../../../src/shared/directives/thy-scroll.directive.ts","../../../src/shared/directives/thy-drag-drop.directive.ts","../../../src/shared/directives/string-or-template-outlet.directive.ts","../../../src/shared/directives/view-outlet.directive.ts","../../../src/shared/shared.module.ts","../../../src/shared/base-form-check.component.ts","../../../src/shared/select/select-control/select-control.component.ts","../../../src/shared/select/select-control/select-control.component.html","../../../src/shared/select/module.ts","../../../src/shared/option/option.token.ts","../../../src/shared/option/list-option/list-option.component.ts","../../../src/shared/option/list-option/list-option.component.html","../../../src/shared/option/option-group.component.ts","../../../src/shared/option/select-option-base.ts","../../../src/shared/option/option.component.ts","../../../src/shared/option/option.component.html","../../../src/shared/option/group/option-group.component.ts","../../../src/shared/option/group/option-group.component.html","../../../src/shared/option/options-container.component.ts","../../../src/shared/option/module.ts","../../../src/shared/ngx-tethys-shared.ts"],"sourcesContent":["import { Directive, Input, TemplateRef, ViewContainerRef, effect, inject, input } from '@angular/core';\n\n/**\n * @private\n */\n@Directive({\n selector: '[thyTransclude]'\n})\nexport class ThyTranscludeDirective {\n viewRef: ViewContainerRef;\n\n protected _viewRef: ViewContainerRef;\n protected _ngTransclude: TemplateRef<any>;\n\n readonly thyTransclude = input<TemplateRef<any>>();\n\n constructor() {\n const viewRef = inject(ViewContainerRef);\n\n this.viewRef = viewRef;\n\n effect(() => {\n const transclude = this.thyTransclude();\n if (transclude) {\n this.viewRef.createEmbeddedView(transclude);\n }\n });\n }\n}\n","import { Directive, Input, ElementRef, NgZone, inject, input, effect } from '@angular/core';\nimport { reqAnimFrame } from 'ngx-tethys/core';\nimport { coerceBooleanProperty } from 'ngx-tethys/util';\n/**\n * 自动聚焦指令\n * @name input[thyAutofocus],textarea[thyAutofocus]\n */\n@Directive({\n selector: 'input[thyAutofocus],textarea[thyAutofocus]'\n})\nexport class ThyAutofocusDirective {\n private elementRef = inject(ElementRef);\n private ngZone = inject(NgZone);\n\n // 自动选择,用于只读的 input 输入框,方便复制粘贴\n private _autoSelect = false;\n\n /**\n * 是否自动聚焦\n * @default false\n */\n readonly thyAutofocus = input(false, { transform: coerceBooleanProperty });\n\n /**\n * 是否自动选择\n * @default false\n */\n readonly thyAutoSelect = input(false, { transform: coerceBooleanProperty });\n\n constructor() {\n effect(() => {\n if (this.thyAutofocus()) {\n // Note: this is being run outside of the Angular zone because `element.focus()` doesn't require\n // running change detection.\n this.ngZone.runOutsideAngular(() =>\n // Note: `element.focus()` causes re-layout and this may lead to frame drop on slower devices.\n // https://gist.github.com/paulirish/5d52fb081b3570c81e3a#setting-focus\n // `setTimeout` is a macrotask and macrotasks are executed within the current rendering frame.\n // Animation tasks are executed within the next rendering frame.\n reqAnimFrame(() => {\n this.elementRef.nativeElement.focus();\n if (this.thyAutoSelect() && this.elementRef.nativeElement.select) {\n this.elementRef.nativeElement.select();\n }\n })\n );\n }\n });\n }\n}\n","import { Directive, OnInit, NgZone, ElementRef, Renderer2, OnDestroy, inject, output } from '@angular/core';\nimport { keycodes } from 'ngx-tethys/util';\n\n/**\n * 与 (keydown.enter) 区别是支持组合键,当按 Ctrl + Enter 或者 Command + Enter 也会触发\n * @name thyEnter\n */\n@Directive({\n selector: '[thyEnter]'\n})\nexport class ThyEnterDirective implements OnInit, OnDestroy {\n private ngZone = inject(NgZone);\n private elementRef = inject(ElementRef);\n private renderer = inject(Renderer2);\n\n readonly thyEnter = output<KeyboardEvent>();\n\n onKeydown = (event: KeyboardEvent) => {\n const keyCode = event.which || event.keyCode;\n if (keyCode === keycodes.ENTER) {\n this.ngZone.run(() => {\n this.thyEnter.emit(event);\n });\n }\n };\n\n private removeKeydownListenerFn: VoidFunction;\n\n ngOnInit(): void {\n this.ngZone.runOutsideAngular(() => {\n this.removeKeydownListenerFn = this.renderer.listen(this.elementRef.nativeElement, 'keydown', this.onKeydown);\n });\n }\n\n ngOnDestroy(): void {\n this.removeKeydownListenerFn();\n }\n}\n","import { Directive, ElementRef, OnInit, NgZone, Renderer2, OnDestroy, inject, output } from '@angular/core';\nimport { keycodes } from 'ngx-tethys/util';\n\n/**\n * @name thyCtrlEnter\n */\n@Directive({\n selector: '[thyCtrlEnter]'\n})\nexport class ThyCtrlEnterDirective implements OnInit, OnDestroy {\n private ngZone = inject(NgZone);\n private elementRef = inject(ElementRef);\n private renderer = inject(Renderer2);\n\n readonly thyCtrlEnter = output<KeyboardEvent>();\n\n private removeKeydownListenerFn: VoidFunction;\n\n onKeydown = (event: KeyboardEvent) => {\n const keyCode = event.which || event.keyCode;\n if ((event.ctrlKey || event.metaKey) && keyCode === keycodes.ENTER) {\n event.preventDefault();\n this.ngZone.run(() => {\n this.thyCtrlEnter.emit(event);\n });\n }\n };\n\n ngOnInit() {\n this.ngZone.runOutsideAngular(() => {\n this.removeKeydownListenerFn = this.renderer.listen(this.elementRef.nativeElement, 'keydown', this.onKeydown);\n });\n }\n\n ngOnDestroy(): void {\n this.removeKeydownListenerFn();\n }\n}\n","import { Directive, Renderer2, output, ElementRef, OnDestroy, NgZone, inject, effect, input } from '@angular/core';\nimport { useHostRenderer } from '@tethys/cdk/dom';\nimport { coerceBooleanProperty } from 'ngx-tethys/util';\n\n/**\n * @name thyShow\n */\n@Directive({\n selector: '[thyShow]'\n})\nexport class ThyShowDirective implements OnDestroy {\n private elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private renderer = inject(Renderer2);\n private ngZone = inject(NgZone);\n\n readonly thyShowChange = output<boolean>();\n\n private hostRenderer = useHostRenderer();\n\n private unListenEvent: () => void;\n\n private unListenDocument() {\n if (this.unListenEvent) {\n this.unListenEvent();\n this.unListenEvent = null;\n }\n }\n\n readonly thyShow = input(false, { transform: coerceBooleanProperty });\n\n constructor() {\n effect(() => {\n if (this.thyShow()) {\n this.hostRenderer.setStyle('display', 'block');\n this.ngZone.runOutsideAngular(() =>\n setTimeout(() => {\n this.unListenEvent = this.renderer.listen('document', 'click', event => {\n if (!this.elementRef.nativeElement.contains(event.target)) {\n this.ngZone.run(() => this.thyShowChange.emit(false));\n this.unListenDocument();\n }\n });\n })\n );\n } else {\n this.hostRenderer.setStyle('display', 'none');\n this.unListenDocument();\n }\n });\n }\n\n ngOnDestroy() {\n this.unListenDocument();\n }\n}\n","import { Directive, ElementRef, NgZone, OnDestroy, computed, effect, inject, input } from '@angular/core';\nimport { fromEvent, Observable, Subject } from 'rxjs';\nimport { startWith, switchMap, takeUntil } from 'rxjs/operators';\n\n/**\n * 阻止事件冒泡\n * @name thyStopPropagation\n */\n@Directive({\n selector: '[thyStopPropagation]'\n})\nexport class ThyStopPropagationDirective implements OnDestroy {\n readonly thyStopPropagation = input<string | boolean>(true);\n\n private readonly _eventName = computed(() => {\n const stopPropagation = this.thyStopPropagation();\n if (stopPropagation !== false) {\n if (!stopPropagation || stopPropagation === true || stopPropagation === 'true') {\n return 'click';\n } else {\n return stopPropagation as string;\n }\n }\n });\n\n private readonly _shouldStopPropagation = computed(() => {\n const stopPropagation = this.thyStopPropagation();\n return stopPropagation === false || stopPropagation === 'false' ? false : true;\n });\n\n private _changes$ = new Subject<string | boolean>();\n private _destroy$ = new Subject<void>();\n\n constructor() {\n const _host = inject<ElementRef<HTMLElement>>(ElementRef);\n const _ngZone = inject(NgZone);\n\n effect(() => {\n this._changes$.next(this.thyStopPropagation());\n });\n\n this._changes$\n .pipe(\n // Note: we start the stream immediately since the `thyStopPropagation` setter may never be reached.\n startWith<null, null>(null),\n switchMap(\n () =>\n new Observable<Event>(subscriber =>\n _ngZone.runOutsideAngular(() => fromEvent(_host.nativeElement, this._eventName()).subscribe(subscriber))\n )\n ),\n takeUntil(this._destroy$)\n )\n .subscribe(event => {\n if (this._shouldStopPropagation()) {\n event.stopPropagation();\n }\n });\n }\n\n ngOnDestroy() {\n this._destroy$.next();\n }\n}\n","import { Directive, ElementRef, OnInit, NgZone, Renderer2, OnDestroy, inject, output } from '@angular/core';\n\n/**\n * @name thyContextMenu\n */\n@Directive({\n selector: '[thyContextMenu]'\n})\nexport class ThyContextMenuDirective implements OnInit, OnDestroy {\n private ngZone = inject(NgZone);\n private elementRef = inject(ElementRef);\n private renderer = inject(Renderer2);\n\n readonly thyContextMenu = output<Event>();\n\n private removeContextListenerFn: VoidFunction;\n\n rightClick = (event: Event) => {\n event.preventDefault();\n this.ngZone.run(() => {\n this.thyContextMenu.emit(event);\n });\n };\n\n ngOnInit() {\n this.ngZone.runOutsideAngular(() => {\n this.removeContextListenerFn = this.renderer.listen(this.elementRef.nativeElement, 'contextmenu', this.rightClick);\n });\n }\n\n ngOnDestroy(): void {\n this.removeContextListenerFn();\n }\n}\n","import { Directive, ElementRef, OnInit, NgZone, OnDestroy, inject, input, output, effect } from '@angular/core';\nimport { Subject, Observable, Observer, fromEvent, Subscription } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { normalizePassiveListenerOptions } from '@angular/cdk/platform';\nimport { coerceBooleanProperty } from 'ngx-tethys/util';\n\nconst passiveEventListenerOptions = <AddEventListenerOptions>normalizePassiveListenerOptions({ passive: true });\n\n/**\n * @name thyScroll\n */\n@Directive({\n selector: '[thyScroll]'\n})\nexport class ThyScrollDirective implements OnInit, OnDestroy {\n private elementRef = inject<ElementRef<any>>(ElementRef);\n private ngZone = inject(NgZone);\n\n private _destroyed = new Subject<void>();\n private _subscription: Subscription;\n\n private _elementScrolled: Observable<Event> = new Observable((observer: Observer<Event>) =>\n this.ngZone.runOutsideAngular(() =>\n fromEvent(this.elementRef.nativeElement, 'scroll', passiveEventListenerOptions)\n .pipe(takeUntil(this._destroyed))\n .subscribe(observer)\n )\n );\n\n readonly thyEnable = input(true, { transform: coerceBooleanProperty });\n\n /**\n * @description\n *\n * Note: the `thyOnScrolled` emits outside of the Angular zone since the `scroll` listener\n * is installed within the `<root>` zone.\n *\n * Consumers need to re-enter the Angular zone theirselves when the change detection is needeed to be run:\n * ```ts\n * @Component({\n * template: '<div thyScroll (thyOnScrolled)=\"onScrolled()\"></div>'\n * })\n * class ThyScrollComponent {\n * onScrolled(): void {\n * console.log(Zone.current); // <root>\n * console.log(NgZone.isInAngularZone()); // false\n * }\n * }\n * ```\n */\n\n readonly thyOnScrolled = output<ElementRef>();\n\n constructor() {\n effect(() => {\n const thyEnable = this.thyEnable();\n if (thyEnable && !this._subscription) {\n this._subscription = this._elementScrolled.subscribe(() => this.thyOnScrolled.emit(this.elementRef));\n } else {\n if (this._subscription) {\n this._subscription.unsubscribe();\n this._subscription = null;\n }\n }\n });\n }\n\n ngOnInit() {}\n\n ngOnDestroy() {\n this._destroyed.next();\n this._destroyed.complete();\n }\n\n getElementRef(): ElementRef<HTMLElement> {\n return this.elementRef;\n }\n}\n","import { Directive, AfterContentInit, ContentChildren, QueryList, OnDestroy } from '@angular/core';\nimport { CdkDrag } from '@angular/cdk/drag-drop';\nimport { merge, Subject } from 'rxjs';\nimport { takeUntil, startWith } from 'rxjs/operators';\n\n/**\n * @private\n */\n@Directive({\n selector: '[thyDragDrop]'\n})\nexport class ThyDragDropDirective implements AfterContentInit, OnDestroy {\n @ContentChildren(CdkDrag, { descendants: true }) draggables: QueryList<CdkDrag>;\n\n private ngUnsubscribe$ = new Subject<void>();\n\n constructor() {}\n\n ngAfterContentInit() {\n if (this.draggables) {\n this.draggables.changes.pipe(startWith(this.draggables)).subscribe(() => {\n this.ngUnsubscribe$.next();\n this.ngUnsubscribe$.complete();\n\n this.ngUnsubscribe$ = new Subject();\n merge(\n ...this.draggables.toArray().map(dragRef => {\n return dragRef.started;\n })\n )\n .pipe(takeUntil(this.ngUnsubscribe$))\n .subscribe(() => {\n document.body.classList.add('thy-dragging-body');\n });\n\n merge(...this.draggables.toArray().map(dragRef => dragRef.released))\n .pipe(takeUntil(this.ngUnsubscribe$))\n .subscribe(() => {\n document.body.classList.remove('thy-dragging-body');\n });\n });\n }\n }\n\n ngOnDestroy(): void {\n this.ngUnsubscribe$.next();\n this.ngUnsubscribe$.complete();\n }\n}\n","import { Directive, EmbeddedViewRef, Renderer2, TemplateRef, ViewContainerRef, effect, inject, input } from '@angular/core';\nimport { isTemplateRef } from 'ngx-tethys/util';\n\n/**\n * @name thyStringOrTemplateOutlet\n */\n@Directive({\n selector: '[thyStringOrTemplateOutlet]',\n exportAs: 'thyStringOrTemplateOutlet'\n})\nexport class ThyStringOrTemplateOutletDirective {\n private viewContainerRef = inject(ViewContainerRef);\n private renderer = inject(Renderer2);\n\n private viewRef: EmbeddedViewRef<any>;\n\n private textNode: Text;\n\n readonly thyStringOrTemplateOutletContext = input<any>();\n\n readonly thyStringOrTemplateOutlet = input<any | TemplateRef<any>>();\n\n constructor() {\n effect(() => {\n this.updateView();\n });\n\n effect(() => {\n if (this.viewRef && this.thyStringOrTemplateOutletContext()) {\n this.viewRef.context = this.thyStringOrTemplateOutletContext();\n }\n });\n }\n\n private updateView() {\n const thyStringOrTemplateOutlet = this.thyStringOrTemplateOutlet();\n this.clear();\n if (thyStringOrTemplateOutlet) {\n if (isTemplateRef(thyStringOrTemplateOutlet)) {\n this.viewRef = this.viewContainerRef.createEmbeddedView(thyStringOrTemplateOutlet, this.thyStringOrTemplateOutletContext());\n } else {\n this.textNode = this.renderer.createText(thyStringOrTemplateOutlet + '');\n const element = this.viewContainerRef.element.nativeElement as HTMLElement;\n this.renderer.insertBefore(element.parentNode, this.textNode, element);\n }\n } else {\n this.viewRef = null;\n }\n }\n\n private clear() {\n this.viewContainerRef.clear();\n if (this.textNode) {\n this.renderer.removeChild(this.textNode.parentNode, this.textNode);\n }\n }\n}\n","import {\n ComponentRef,\n Directive,\n ChangeDetectorRef,\n EmbeddedViewRef,\n Type,\n ViewContainerRef,\n TemplateRef,\n KeyValueDiffer,\n KeyValueDiffers,\n inject,\n input,\n effect,\n linkedSignal,\n untracked\n} from '@angular/core';\nimport { SafeAny } from 'ngx-tethys/types';\n\nfunction hasInput(componentRef: ComponentRef<unknown>, inputKey: string) {\n return componentRef['_tNode'].inputs?.[inputKey];\n}\n\n/**\n * 视图 Outlet 组件,取代 NgComponentOutlet 和 NgTemplateOutlet\n * @name thyViewOutlet\n * @order 10\n */\n@Directive({\n selector: '[thyViewOutlet]'\n})\nexport class ThyViewOutletDirective {\n private viewContainerRef = inject(ViewContainerRef);\n private keyValueDiffers = inject(KeyValueDiffers);\n\n private componentRef: ComponentRef<SafeAny> | undefined;\n\n private embeddedViewRef: EmbeddedViewRef<SafeAny> | undefined;\n\n /**\n * 组件或者模板 TemplateRef\n */\n readonly thyViewOutlet = input<Type<SafeAny> | TemplateRef<SafeAny> | null>(null);\n\n /**\n * 组件和模板上下文传递数据\n */\n readonly thyViewOutletContext = input<SafeAny>();\n\n private keyValueDiffer: KeyValueDiffer<SafeAny, SafeAny>;\n\n private readonly isViewOutletChanged = linkedSignal({\n source: () => this.thyViewOutlet(),\n computation: (source, previous) => {\n return !!(source && previous?.source && source !== previous?.source);\n }\n });\n\n constructor() {\n effect(() => {\n const thyViewOutlet = this.thyViewOutlet();\n const { viewContainerRef: viewContainerRef } = this;\n viewContainerRef.clear();\n this.componentRef = undefined;\n this.embeddedViewRef = undefined;\n\n if (thyViewOutlet) {\n if (thyViewOutlet instanceof TemplateRef) {\n this.embeddedViewRef = viewContainerRef.createEmbeddedView(thyViewOutlet, this.thyViewOutletContext());\n } else {\n this.componentRef = viewContainerRef.createComponent(thyViewOutlet, {\n index: viewContainerRef.length\n });\n }\n }\n });\n\n effect(() => {\n const thyViewOutletContext = this.thyViewOutletContext();\n let updatedKeys: string[] = [];\n const isViewOutletChanged = untracked(this.isViewOutletChanged);\n if (thyViewOutletContext) {\n if (!this.keyValueDiffer || isViewOutletChanged) {\n if (!this.keyValueDiffer) {\n this.keyValueDiffer = this.keyValueDiffers.find(thyViewOutletContext).create();\n }\n this.keyValueDiffer.diff(thyViewOutletContext);\n updatedKeys = Object.keys(thyViewOutletContext);\n this.isViewOutletChanged.set(false);\n } else {\n const diffChanges = this.keyValueDiffer.diff(thyViewOutletContext);\n diffChanges?.forEachChangedItem(item => {\n updatedKeys.push(item.key);\n });\n }\n }\n if (this.componentRef) {\n this.updateContext(this.componentRef.instance, updatedKeys);\n this.componentRef.injector.get(ChangeDetectorRef).markForCheck();\n } else if (this.embeddedViewRef) {\n this.updateContext(this.embeddedViewRef.context, updatedKeys);\n this.embeddedViewRef.markForCheck();\n }\n });\n }\n\n private updateContext(context: SafeAny, updatedKeys: string[]) {\n updatedKeys.forEach(key => {\n // 兼容组件输入属性没有通过 @Input,设置了 @Input 采用 setInput,否则直接赋值,setInput 会触发 Angular 组件的 onChanges\n if (this.componentRef && hasInput(this.componentRef, key)) {\n this.componentRef.setInput(key, this.thyViewOutletContext()[key]);\n } else {\n context[key] = this.thyViewOutletContext()[key];\n }\n });\n }\n}\n","import { NgModule } from '@angular/core';\nimport { ThyTranscludeDirective } from './ng-transclude.directive';\nimport { ThyAutofocusDirective } from './directives/thy-autofocus.directive';\nimport { ThyEnterDirective } from './directives/thy-enter.directive';\nimport { ThyCtrlEnterDirective } from './directives/thy-ctrl-enter.directive';\nimport { ThyShowDirective } from './directives/thy-show';\nimport { ThyStopPropagationDirective } from './directives/thy-stop-propagation.directive';\nimport { ThyContextMenuDirective } from './directives/thy-contextmenu.directive';\nimport { ThyScrollDirective } from './directives/thy-scroll.directive';\nimport { ThyDragDropDirective } from './directives/thy-drag-drop.directive';\nimport { ThyStringOrTemplateOutletDirective } from './directives/string-or-template-outlet.directive';\nimport { ThyViewOutletDirective } from './directives/view-outlet.directive';\n\n@NgModule({\n imports: [\n ThyViewOutletDirective,\n ThyTranscludeDirective,\n ThyAutofocusDirective,\n ThyEnterDirective,\n ThyCtrlEnterDirective,\n ThyShowDirective,\n ThyStopPropagationDirective,\n ThyContextMenuDirective,\n ThyScrollDirective,\n ThyDragDropDirective,\n ThyStringOrTemplateOutletDirective\n ],\n exports: [\n ThyTranscludeDirective,\n ThyAutofocusDirective,\n ThyEnterDirective,\n ThyCtrlEnterDirective,\n ThyShowDirective,\n ThyStopPropagationDirective,\n ThyContextMenuDirective,\n ThyScrollDirective,\n ThyDragDropDirective,\n ThyStringOrTemplateOutletDirective,\n ThyViewOutletDirective\n ],\n providers: []\n})\nexport class ThySharedModule {}\n","import { ControlValueAccessor } from '@angular/forms';\nimport { HostBinding, Input, ChangeDetectorRef, Directive, inject, input, computed } from '@angular/core';\nimport { ThyTranslate, TabIndexDisabledControlValueAccessorMixin } from 'ngx-tethys/core';\nimport { coerceBooleanProperty } from 'ngx-tethys/util';\n\nconst noop = () => {};\n\n/**\n * @private\n */\n@Directive({\n host: {\n '[class.form-check]': '_isFormCheck',\n '[class.form-check-inline]': 'thyInline()',\n '[class.form-check-checked]': '_isChecked',\n '[class.form-check-inline-no-label-text]': '_isNoText()'\n }\n})\nexport class ThyFormCheckBaseComponent extends TabIndexDisabledControlValueAccessorMixin implements ControlValueAccessor {\n protected thyTranslate = inject(ThyTranslate);\n protected changeDetectorRef? = inject(ChangeDetectorRef);\n\n // The internal data model\n _innerValue: boolean = null;\n\n _disabled = false;\n\n private onTouchedCallback: () => void = noop;\n\n private onChangeCallback: (_: any) => void = noop;\n\n _isFormCheck = true;\n\n _isChecked = false;\n\n /**\n * 是否同一行展示\n * @default false\n */\n readonly thyInline = input(false, { transform: coerceBooleanProperty });\n\n /**\n * Label 展示文本\n */\n readonly thyLabelText = input<string>();\n\n /**\n * Label 文本多语言 key\n */\n readonly thyLabelTextTranslateKey = input<string>();\n\n _labelText = computed(() => {\n const labelTextTranslateKey = this.thyLabelTextTranslateKey();\n const labelText = this.thyLabelText();\n return labelTextTranslateKey ? this.thyTranslate.instant(labelTextTranslateKey) : labelText || '';\n });\n\n _isNoText = computed(() => {\n return this.thyInline() && !this._labelText();\n });\n\n disabled = false;\n\n /**\n * 是否禁用\n * @default false\n */\n @Input({ transform: coerceBooleanProperty })\n override set thyDisabled(value: boolean) {\n this.disabled = value;\n this.setDisabledState(this.disabled);\n }\n\n override get thyDisabled() {\n return this.disabled;\n }\n\n writeValue(obj: boolean): void {\n if (obj !== this._innerValue) {\n this._innerValue = obj;\n this._isChecked = !!this._innerValue;\n }\n }\n\n registerOnChange(fn: any): void {\n this.onChangeCallback = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouchedCallback = fn;\n }\n\n setDisabledState?(isDisabled: boolean): void {\n this._disabled = isDisabled;\n this.markForCheck();\n }\n\n updateValue(value: boolean): void {\n this._innerValue = value;\n this._isChecked = !!this._innerValue;\n this.onChangeCallback(value);\n this.markForCheck();\n }\n\n constructor() {\n super();\n }\n\n change() {\n this.updateValue(!this._innerValue);\n }\n\n markForCheck() {\n if (this.changeDetectorRef) {\n this.changeDetectorRef.markForCheck();\n }\n }\n}\n","import { ThyTagSize } from 'ngx-tethys/tag';\nimport { coerceBooleanProperty, isUndefinedOrNull } from 'ngx-tethys/util';\n\nimport {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n OnInit,\n Renderer2,\n TemplateRef,\n numberAttribute,\n inject,\n input,\n viewChild,\n output,\n effect,\n Signal,\n computed,\n linkedSignal,\n untracked,\n signal,\n model\n} from '@angular/core';\nimport { useHostRenderer } from '@tethys/cdk/dom';\n\nimport { NgClass, NgStyle, NgTemplateOutlet } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { ThyGridModule } from 'ngx-tethys/grid';\nimport { ThyIcon } from 'ngx-tethys/icon';\nimport { ThyTag } from 'ngx-tethys/tag';\nimport { ThyTooltipDirective } from 'ngx-tethys/tooltip';\nimport { injectLocale, ThySharedLocale } from 'ngx-tethys/i18n';\nimport { SelectOptionBase } from '../../option/select-option-base';\n\nexport type SelectControlSize = 'xs' | 'sm' | 'md' | 'lg' | '';\n\n/**\n * @private\n */\n@Component({\n selector: 'thy-select-control,[thySelectControl]',\n templateUrl: './select-control.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [FormsModule, NgClass, NgStyle, ThyTag, NgTemplateOutlet, ThyIcon, ThyGridModule, ThyTooltipDirective],\n host: {\n '[class.select-control-borderless]': 'thyBorderless()'\n }\n})\nexport class ThySelectControl implements OnInit {\n private renderer = inject(Renderer2);\n\n inputValue = model<string>('');\n\n isComposing = signal(false);\n\n searchInputControlClass: { [key: string]: boolean };\n\n private isFirstPanelOpenedChange = true;\n\n private hostRenderer = useHostRenderer();\n\n readonly thyPanelOpened = input(false, { transform: coerceBooleanProperty });\n\n readonly thyIsMultiple = input(false, { transform: coerceBooleanProperty });\n\n readonly thyShowSearch = input(false, { transform: coerceBooleanProperty });\n\n readonly thySelectedOptions = input<SelectOptionBase | SelectOptionBase[]>();\n\n protected readonly previousSelectedOptions = linkedSignal({\n source: () => this.thySelectedOptions(),\n computation: (source, previous) => previous?.source\n });\n\n readonly thyDisabled = input(false, { transform: coerceBooleanProperty });\n\n readonly customDisplayTemplate = input<TemplateRef<any>>(undefined);\n\n readonly thyAllowClear = input(false, { transform: coerceBooleanProperty });\n\n readonly thyPlaceholder = input('');\n\n readonly thySize = input<SelectControlSize>();\n\n readonly tagSize: Signal<ThyTagSize> = computed(() => {\n const value = this.thySize();\n if (value === 'xs' || value === 'sm') {\n return 'sm';\n } else if (value === 'lg') {\n return 'lg';\n } else {\n return 'md';\n }\n });\n\n readonly thyMaxTagCount = input(0, { transform: numberAttribute });\n\n readonly thyBorderless = input(false, { transform: coerceBooleanProperty });\n\n readonly thyPreset = input<string>('');\n\n public readonly thyOnSearch = output<string>();\n\n public readonly thyOnRemove = output<{ item: SelectOptionBase; $eventOrigin: Event }>();\n\n public readonly thyOnClear = output<Event>();\n\n public readonly thyOnBlur = output<Event>();\n\n readonly inputElement = viewChild<ElementRef>('inputElement');\n\n locale: Signal<ThySharedLocale> = injectLocale('shared');\n\n isSelectedValue = computed(() => {\n return (\n (!this.thyIsMultiple() && !isUndefinedOrNull(this.thySelectedOptions())) ||\n (this.thyIsMultiple() && (<SelectOptionBase[]>this.thySelectedOptions()).length > 0)\n );\n });\n\n showClearIcon = computed(() => {\n return this.thyAllowClear() && this.isSelectedValue();\n });\n\n maxSelectedTags = computed(() => {\n const selectedOptions = this.thySelectedOptions();\n if (this.thyMaxTagCount() > 0 && selectedOptions instanceof Array && selectedOptions.length > this.thyMaxTagCount()) {\n return selectedOptions.slice(0, this.thyMaxTagCount() - 1);\n }\n return selectedOptions as SelectOptionBase[];\n });\n\n collapsedSelectedTags = computed(() => {\n const selectedOptions = this.thySelectedOptions();\n const maxTagCount = this.thyMaxTagCount();\n if (maxTagCount && selectedOptions instanceof Array && selectedOptions.length > maxTagCount) {\n return selectedOptions.slice(maxTagCount - 1, selectedOptions.length);\n }\n return [];\n });\n\n selectedValueStyle = computed(() => {\n let showSelectedValue = false;\n if (this.thyShowSearch()) {\n if (this.thyPanelOpened()) {\n showSelectedValue = !(this.isComposing() || this.inputValue());\n } else {\n showSelectedValue = true;\n }\n } else {\n showSelectedValue = true;\n }\n return { display: showSelectedValue ? 'flex' : 'none' };\n });\n\n placeholderStyle = computed(() => {\n let placeholder = true;\n if (this.isSelectedValue()) {\n placeholder = false;\n }\n if (!this.thyPlaceholder()) {\n placeholder = false;\n }\n if (this.isComposing() || this.inputValue()) {\n placeholder = false;\n }\n return { display: placeholder ? 'block' : 'none' };\n });\n\n constructor() {\n effect(() => {\n const panelOpened = this.thyPanelOpened();\n if (this.isFirstPanelOpenedChange) {\n this.isFirstPanelOpenedChange = false;\n return;\n }\n if (panelOpened) {\n untracked(() => {\n if (this.thyShowSearch()) {\n Promise.resolve(null).then(() => {\n this.inputElement()?.nativeElement.focus();\n });\n }\n });\n } else {\n untracked(() => {\n if (this.thyShowSearch()) {\n new Promise(resolve => setTimeout(resolve, 100)).then(() => {\n this.inputValue.set('');\n this.updateWidth();\n this.thyOnSearch.emit(this.inputValue());\n });\n }\n });\n }\n });\n\n effect(() => {\n this.setSelectControlClass();\n });\n\n effect(() => {\n const oldValue = this.previousSelectedOptions();\n const value = this.thySelectedOptions();\n if (value) {\n let sameValue = false;\n untracked(() => {\n if (this.thyIsMultiple()) {\n if (oldValue instanceof Array && value instanceof Array && oldValue.length === value.length) {\n sameValue = value.every((option, index) => option.thyValue === oldValue[index].thyValue);\n }\n } else {\n if (oldValue && value) {\n sameValue = (oldValue as SelectOptionBase).thyValue === (value as SelectOptionBase).thyValue;\n }\n }\n\n if (this.thyPanelOpened() && this.thyShowSearch()) {\n if (!sameValue) {\n Promise.resolve(null).then(() => {\n this.inputValue.set('');\n this.updateWidth();\n });\n }\n //等待组件渲染好再聚焦\n setTimeout(() => {\n if (this.thyPanelOpened()) {\n this.inputElement()?.nativeElement.focus();\n }\n }, 200);\n }\n });\n }\n });\n }\n\n ngOnInit() {}\n\n setSelectControlClass() {\n const modeType = this.thyIsMultiple() ? 'multiple' : 'single';\n const selectControlClass = {\n [`form-control`]: true,\n [`form-control-${this.thySize()}`]: !!this.thySize(),\n [`form-control-custom`]: true,\n [`select-control`]: true,\n [`select-control-${modeType}`]: true,\n [`select-control-show-search`]: this.thyShowSearch(),\n [`panel-is-opened`]: this.thyPanelOpened(),\n [`disabled`]: this.thyDisabled()\n };\n this.hostRenderer.updateClassByMap(selectControlClass);\n this.searchInputControlClass = {\n [`form-control`]: true,\n [`form-control-${this.thySize()}`]: !!this.thySize(),\n [`search-input-field`]: true,\n [`hidden`]: !this.thyShowSearch(),\n [`disabled`]: this.thyDisabled()\n };\n }\n\n setInputValue(value: string) {\n if (value !== this.inputValue()) {\n this.inputValue.set(value);\n this.updateWidth();\n this.thyOnSearch.emit(this.inputValue());\n }\n }\n\n handleBackspace(event: Event) {\n if ((event as KeyboardEvent).isComposing) {\n return;\n }\n const selectedOptions = this.thySelectedOptions();\n if (!this.inputValue()?.length && selectedOptions instanceof Array) {\n if (selectedOptions.length > 0) {\n this.removeHandle(selectedOptions[selectedOptions.length - 1], event);\n }\n }\n }\n\n updateWidth() {\n if (this.thyIsMultiple() && this.thyShowSearch()) {\n if (this.inputValue() || this.isComposing()) {\n this.renderer.setStyle(this.inputElement()?.nativeElement, 'width', `${this.inputElement()?.nativeElement.scrollWidth}px`);\n } else {\n this.renderer.removeStyle(this.inputElement()?.nativeElement, 'width');\n }\n }\n }\n\n removeHandle(item: SelectOptionBase, $event: Event) {\n this.thyOnRemove.emit({ item: item, $eventOrigin: $event });\n }\n\n clearHandle($event: Event) {\n this.thyOnClear.emit($event);\n }\n\n compositionChange(isComposing: boolean) {\n this.isComposing.set(isComposing);\n }\n\n trackValue(_index: number, option: SelectOptionBase): any {\n return option.thyValue;\n }\n\n onBlur(event: Event) {\n this.thyOnBlur.emit(event);\n }\n}\n","<ng-template #inputTemplate>\n <input\n #inputElement\n [tabindex]=\"-1\"\n (compositionstart)=\"compositionChange(true)\"\n (compositionend)=\"compositionChange(false)\"\n autocomplete=\"something-new\"\n [ngClass]=\"searchInputControlClass\"\n (input)=\"updateWidth()\"\n [ngModel]=\"inputValue()\"\n (ngModelChange)=\"setInputValue($event)\"\n (keydown.backspace)=\"handleBackspace($event)\"\n [disabled]=\"thyDisabled()\"\n (blur)=\"onBlur($event)\" />\n</ng-template>\n\n<div class=\"select-control-rendered\">\n @if (!isSelectedValue()) {\n <div class=\"text-placeholder text-truncate\" [ngStyle]=\"placeholderStyle()\">\n {{ thyPlaceholder() }}\n </div>\n }\n @if (thyIsMultiple()) {\n <div thyFlex thyWrap=\"wrap\" thyGap=\"4\" thyAlignItems=\"center\" class=\"w-100\">\n @if (thyPreset() === 'tag') {\n @for (item of maxSelectedTags(); track trackValue($index, item)) {\n <div thyFlexItem class=\"custom-choice-item text-truncate\">\n <ng-template\n [ngTemplateOutlet]=\"customDisplayTemplate()\"\n [ngTemplateOutletContext]=\"{ $implicit: item.thyRawValue || item.thyValue || item }\">\n </ng-template>\n @if (!thyDisabled()) {\n <div class=\"choice-remove-link ml-1\" (click)=\"removeHandle(item, $event)\">\n <span>\n <thy-icon thyIconName=\"close\" class=\"font-size-sm\"></thy-icon>\n </span>\n </div>\n }\n </div>\n }\n } @else {\n @for (item of maxSelectedTags(); track trackValue($index, item)) {\n <div thyFlexItem thyTag class=\"choice-item\" [ngClass]=\"{ disabled: thyDisabled() === true }\" [thySize]=\"tagSize()\">\n <div class=\"text-truncate h-100\">\n @if (!customDisplayTemplate()) {\n {{ item?.thyLabelText }}\n } @else {\n <ng-template\n [ngTemplateOutlet]=\"customDisplayTemplate()\"\n [ngTemplateOutletContext]=\"{ $implicit: item.thyRawValue || item.thyValue || item }\"></ng-template>\n }\n </div>\n @if (!thyDisabled()) {\n <div class=\"choice-remove-link ml-1\" (click)=\"removeHandle(item, $event)\">\n <span>\n <thy-icon thyIconName=\"close\" class=\"font-size-sm\"></thy-icon>\n </span>\n </div>\n }\n </div>\n }\n }\n @if (thyMaxTagCount() && thySelectedOptions()?.length > thyMaxTagCount()) {\n <div\n thyFlexItem\n class=\"choice-item max-tag-count-choice\"\n thyTag\n [thySize]=\"tagSize()\"\n [ngClass]=\"{ disabled: thyDisabled() === true }\"\n [thyTooltip]=\"maxTagTooltip\">\n <div class=\"text-truncate\">+{{ thySelectedOptions()?.length - thyMaxTagCount() + 1 }}</div>\n </div>\n }\n <div thyFlexItem class=\"select-control-search\">\n <ng-template [ngTemplateOutlet]=\"inputTemplate\"></ng-template>\n </div>\n </div>\n } @else {\n @if (isSelectedValue()) {\n <div class=\"selected-value text-truncate\" [ngStyle]=\"selectedValueStyle()\">\n @if (!customDisplayTemplate()) {\n <span class=\"text-truncate\">{{ thySelectedOptions()?.thyLabelText }}</span>\n } @else {\n <ng-template\n [ngTemplateOutlet]=\"customDisplayTemplate()\"\n [ngTemplateOutletContext]=\"{\n $implicit: thySelectedOptions()?.thyRawValue || thySelectedOptions()?.thyValue || thySelectedOptions()\n }\"></ng-template>\n }\n </div>\n }\n <div class=\"select-control-search\">\n <ng-template [ngTemplateOutlet]=\"inputTemplate\"></ng-template>\n </div>\n }\n</div>\n<span class=\"select-control-arrow\">\n <thy-icon thyIconName=\"angle-down\" class=\"font-size-base\"></thy-icon>\n</span>\n@if (showClearIcon()) {\n <span class=\"select-control-clear remove-link\" (click)=\"clearHandle($event)\">\n <thy-icon class=\"remove-link-icon font-size-base\" thyIconName=\"close-circle-bold-fill\"></thy-icon>\n </span>\n}\n\n<ng-template #maxTagTooltip>\n @let lastIndex = collapsedSelectedTags().length - 1;\n @for (item of collapsedSelectedTags(); track trackValue($index, item)) {\n {{ item.thyLabelText }}\n @if ($index !== lastIndex) {\n {{ locale().comma }}\n }\n }\n</ng-template>\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport { ThyIconModule } from 'ngx-tethys/icon';\nimport { ThyTagModule } from 'ngx-tethys/tag';\n\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\nimport { ThySelectControl } from './select-control/select-control.component';\n\n@NgModule({\n imports: [CommonModule, FormsModule, ThyIconModule, ThyTagModule, ThySelectControl],\n exports: [ThySelectControl]\n})\nexport class ThySelectCommonModule {}\n","import { ElementRef, InjectionToken, InputSignal } from '@angular/core';\nimport { ThyListLayout } from '../shared.type';\nimport { ThyBooleanInput } from 'ngx-tethys/util';\n\nexport interface IThyOptionParentComponent {\n isMultiple: boolean;\n}\n\nexport interface IThyOptionGroupComponent {\n hidden: boolean;\n}\n\nexport interface IThyOptionComponent {\n thyValue: any;\n disabled?: boolean;\n element: ElementRef<HTMLElement>;\n}\n\nexport interface IThyListOptionParentComponent {\n multiple?: InputSignal<ThyBooleanInput>;\n layout?: InputSignal<ThyListLayout>;\n // 选择,取消选择 option\n toggleOption(option: IThyOptionComponent, event?: Event): void;\n // 设置当前选项为激活状态,即 hover 状态\n setActiveOption(option: IThyOptionComponent, event?: Event): void;\n // 滚动到当前的选项\n scrollIntoView(option: IThyOptionComponent): void;\n isSelected(option: IThyOptionComponent): boolean;\n}\n\n/**\n * Injection token used to provide the parent component to options.\n */\nexport const THY_OPTION_PARENT_COMPONENT = new InjectionToken<IThyOptionParentComponent>('THY_OPTION_PARENT_COMPONENT');\n\n/**\n * Injection token used to provide the parent component to options.\n */\nexport const THY_LIST_OPTION_PARENT_COMPONENT = new InjectionToken<IThyListOptionParentComponent>('THY_LIST_OPTION_PARENT_COMPONENT');\n","import { Component, ElementRef, HostListener, inject, input, computed } from '@angular/core';\nimport { Highlightable } from '@angular/cdk/a11y';\nimport { IThyOptionComponent, THY_LIST_OPTION_PARENT_COMPONENT } from '../option.token';\nimport { ThyIcon } from 'ngx-tethys/icon';\nimport { coerceBooleanProperty } from 'ngx-tethys/util';\n\nlet _uniqueIdCounter = 0;\n\n/**\n * @private\n * @order 30\n */\n@Component({\n selector: 'thy-list-option,[thy-list-option]',\n templateUrl: './list-option.component.html',\n imports: [ThyIcon],\n host: {\n '[class.disabled]': 'thyDisabled()',\n '[class.thy-list-option]': 'isListOption()',\n '[class.thy-grid-option]': 'isGridOption()',\n '[class.active]': 'selected',\n '[attr.role]': 'role',\n '[attr.tabindex]': 'tabIndex'\n }\n})\nexport class ThyListOption implements IThyOptionComponent, Highlightable {\n element = inject<ElementRef<HTMLElement>>(ElementRef);\n\n parentSelectionList = inject(THY_LIST_OPTION_PARENT_COMPONENT, { optional: true })!;\n\n role = 'option';\n\n tabIndex = -1;\n\n readonly isMultiple = computed(() => this.parentSelectionList.multiple());\n\n readonly isListOption = computed(() => this.parentSelectionList.layout() === 'list');\n\n readonly isGridOption = computed(() => this.parentSelectionList.layout() === 'grid');\n\n readonly id = input(`thy-list-option-${_uniqueIdCounter++}`);\n\n readonly thyValue = input<any>(undefined);\n\n readonly thyDisabled = input(false, { transform: coerceBooleanProperty });\n\n /** Whether the option is selected. */\n get selected() {\n return this.parentSelectionList.isSelected(this);\n }\n\n @HostListener('click', ['$event'])\n onClick(event: Event) {\n if (this.parentSelectionList.multiple() || !this.parentSelectionList.isSelected(this)) {\n this.parentSelectionList.toggleOption(this, event);\n this.parentSelectionList.setActiveOption(this);\n }\n }\n\n setActiveStyles(): void {\n this.element.nativeElement.classList.add('hover');\n this.parentSelectionList.scrollIntoView(this);\n }\n\n setInactiveStyles(): void {\n this.element.nativeElement.classList.remove('hover');\n }\n\n /**\n * Returns the list item's text label. Implemented as a part of the FocusKeyManager.\n * @docs-private\n */\n getLabel() {\n return '';\n }\n}\n","<ng-content></ng-content>\n@if (isMultiple() && isListOption()) {\n <span class=\"checked-icon\">\n <thy-icon thyIconName=\"check\"></thy-icon>\n </span>\n}\n@if (isGridOption()) {\n <span class=\"checked-icon\">\n <thy-icon thyIconName=\"check-circle-fill\"></thy-icon>\n </span>\n}\n","import { Component, ViewEncapsulation, ChangeDetectionStrategy } from '@angular/core';\nimport { ThyCanDisable, mixinDisabled, ThyCanDisableCtor, MixinBase } from 'ngx-tethys/core';\n\nconst _MixinBase: ThyCanDisableCtor & typeof MixinBase = mixinDisabled(MixinBase);\n\n/**\n * @private\n */\n@Component({\n selector: 'thy-list-option-group,[thy-list-option-group]',\n template: '<ng-content></ng-content>',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ThyOptionGroup extends _MixinBase implements ThyCanDisable {\n set thyDisabled(value: any) {\n this.thyDisabled = value;\n }\n}\n","export abstract class SelectOptionBase {\n thyLabelText: string;\n thyRawValue: any;\n thyValue: any;\n}\n","import {\n Component,\n TemplateRef,\n ChangeDetectionStrategy,\n HostBinding,\n HostListener,\n ElementRef,\n ChangeDetectorRef,\n OnDestroy,\n inject,\n input,\n viewChild,\n WritableSignal,\n signal,\n output,\n Input\n} from '@angular/core';\nimport { Highlightable } from '@angular/cdk/a11y';\nimport { SelectOptionBase } from './select-option-base';\nimport { ENTER, SPACE, coerceBooleanProperty, hasModifierKey } from 'ngx-tethys/util';\nimport { THY_OPTION_PARENT_COMPONENT } from './option.token';\nimport { ThyIcon } from 'ngx-tethys/icon';\n\nexport class ThyOptionSelectionChangeEvent {\n constructor(\n public option: ThyOption,\n public isUserInput = false\n ) {}\n}\n\nexport class ThyOptionVisibleChangeEvent {\n option: ThyOption;\n}\n\n/**\n * @private\n * @order 20\n */\n@Component({\n selector: 'thy-option',\n templateUrl: './option.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [ThyIcon],\n host: {\n class: 'thy-option-item',\n '[class.disabled]': 'thyDisabled()',\n '[class.hidden]': 'hidden()',\n '[attr.tabindex]': `tabIndex`,\n '[class.active]': 'selected()'\n }\n})\nexport class ThyOption extends SelectOptionBase implements OnDestroy, Highlightable {\n element = inject<ElementRef<HTMLElement>>(ElementRef);\n parent = inject(THY_OPTION_PARENT_COMPONENT, { optional: true })!;\n private cdr = inject(ChangeDetectorRef);\n\n // 继承至 SelectOptionBase,无法修改为 Signal\n @Input() thyValue: any;\n\n @Input() thyRawValue: any;\n\n @Input() thyLabelText: string;\n\n readonly thyShowOptionCustom = input<boolean>();\n\n readonly thySearchKey = input<string>();\n\n readonly template = viewChild(TemplateRef);\n\n readonly thyDisabled = input(false, { transform: coerceBooleanProperty });\n\n readonly hidden: WritableSignal<boolean> = signal(false);\n\n // 继承至 Highlightable,无法修改为 Signal\n get disabled(): boolean {\n return this.hidden() || this.thyDisabled();\n }\n\n get tabIndex(): string {\n return this.disabled ? '-1' : '0';\n }\n\n readonly selected: WritableSignal<boolean> = signal(false);\n\n readonly selectionChange = output<ThyOptionSelectionChangeEvent>();\n\n readonly visibleChange = output<ThyOptionVisibleChangeEvent>();\n\n constructor() {\n super();\n }\n\n getHostElement(): HTMLElement {\n return this.element.nativeElement;\n }\n\n @HostListener('click', ['$event'])\n onClick(event: Event) {\n this.selectViaInteraction();\n }\n\n @HostListener('keydown', ['$event'])\n handleKeydown(event: KeyboardEvent): void {\n if ((event.keyCode === ENTER || event.keyCode === SPACE) && !hasModifierKey(event)) {\n this.selectViaInteraction();\n event.preventDefault();\n }\n }\n\n selectViaInteraction(): void {\n if (!this.disabled) {\n const selected = this.parent.isMultiple ? !this.selected() : true;\n this.selected.set(selected);\n this.cdr.markForCheck();\n this.emitSelectionChangeEvent(true);\n }\n }\n\n select(event?: Event): void {\n if (!this.disabled) {\n if (!this.selected()) {\n this.selected.set(true);\n this.emitSelectionChangeEvent();\n this.cdr.markForCheck();\n }\n }\n }\n\n deselect(): void {\n if (this.selected() || this.disabled) {\n this.selected.set(false);\n this.emitSelectionChangeEvent();\n this.cdr.markForCheck();\n }\n }\n\n hideOption() {\n if (!this.hidden()) {\n this.hidden.set(true);\n this.visibleChange.emit({ option: this });\n this.cdr.markForCheck();\n }\n }\n\n showOption() {\n if (this.hidden()) {\n this.hidden.set(false);\n this.visibleChange.emit({ option: this });\n this.cdr.markForCheck();\n }\n }\n\n matchSearchText(searchText: string): boolean {\n const thySearchKey = this.thySearchKey();\n if (thySearchKey) {\n if (thySearchKey.toLowerCase().indexOf(searchText.toLowerCase()) >= 0) {\n return true;\n } else {\n return false;\n }\n } else {\n if (this.thyLabelText.toLowerCase().indexOf(searchText.toLowerCase()) >= 0) {\n return true;\n } else {\n return false;\n }\n }\n }\n\n setActiveStyles(): void {\n this.getHostElement().classList.add('hover');\n this.cdr.markForCheck();\n }\n\n setInactiveStyles(): void {\n this.getHostElement().classList.remove('hover');\n this.cdr.markForCheck();\n }\n\n getLabel(): string {\n return '';\n }\n\n private emitSelectionChangeEvent(isUserInput = false): void {\n this.selectionChange.emit(new ThyOptionSelectionChangeEvent(this, isUserInput));\n }\n\n ngOnDestroy() {}\n}\n","@if (thyShowOptionCustom()) {\n <ng-content></ng-content>\n <thy-icon class=\"checked-icon\" thyIconName=\"check\"></thy-icon>\n} @else {\n <span class=\"text-truncate\">{{ thyLabelText }}</span>\n <thy-icon class=\"checked-icon\" thyIconName=\"check\"></thy-icon>\n}\n","import {\n Component,\n HostBinding,\n NgZone,\n OnDestroy,\n AfterContentInit,\n ChangeDetectorRef,\n inject,\n input,\n ContentChildren,\n QueryList,\n WritableSignal,\n signal\n} from '@angular/core';\nimport { Observable, defer, Subject, merge } from 'rxjs';\nimport { ThyOptionVisibleChangeEvent, ThyOption } from '../option.component';\nimport { take, switchMap, startWith, takeUntil, debounceTime, map } from 'rxjs/operators';\nimport { coerceBooleanProperty } from 'ngx-tethys/util';\nimport { outputToObservable } from '@angular/core/rxjs-interop';\n\n/**\n * @private\n */\n@Component({\n selector: 'thy-option-group',\n templateUrl: './option-group.component.html',\n host: {\n class: 'thy-option-item-group',\n '[class.disabled]': 'thyDisabled()',\n '[class.thy-select-option-group-hidden]': 'hidden()'\n }\n})\nexport class ThySelectOptionGroup implements OnDestroy, AfterContentInit {\n private _ngZone = inject(NgZone);\n private cdr = inject(ChangeDetectorRef);\n\n readonly thyDisabled = input(false, { transform: coerceBooleanProperty });\n\n readonly hidden: WritableSignal<boolean> = signal(false);\n\n readonly thyGroupLabel = input<string>(undefined);\n\n @ContentChildren(ThyOption) options: QueryList<ThyOption>;\n\n _destroy$: Subject<void> = new Subject<void>();\n\n optionVisibleChanges: Observable<ThyOptionVisibleChangeEvent> = defer(() => {\n if (this.options) {\n return merge(...this.options.map(option => outputToObservable(option.visibleChange)));\n }\n return this._ngZone.onStable.asObservable().pipe(\n take(1),\n switchMap(() => this.optionVisibleChanges)\n );\n });\n\n ngAfterContentInit() {\n this.options.changes.pipe(startWith(null), takeUntil(this._destroy$)).subscribe(() => {\n this._resetOptions();\n });\n }\n\n _resetOptions() {\n const changedOrDestroyed$ = merge(this.options.changes, this._destroy$);\n merge(...this.options.map(option => outputToObservable(option.visibleChange)))\n .pipe(\n takeUntil(changedOrDestroyed$),\n debounceTime(10),\n map((event: ThyOptionVisibleChangeEvent) => {\n const hasOption = this.options.find(option => {\n if (!option.hidden()) {\n return true;\n }\n });\n if (hasOption) {\n return false;\n } else {\n return true;\n }\n })\n )\n .subscribe((data: boolean) => {\n this.hidden.set(data);\n this.cdr.markForCheck();\n });\n }\n\n ngOnDestroy() {\n this._destroy$.next();\n this._destroy$.complete();\n }\n}\n","<span class=\"group-name text-truncate\">{{ thyGroupLabel() }}</span>\n<ng-content></ng-content>\n","import { ChangeDetectionStrategy, Component, OnInit, TemplateRef, viewChild } from '@angular/core';\n\n@Component({\n selector: 'thy-options-container',\n template: `\n <ng-template #options>\n <ng-content></ng-content>\n </ng-template>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ThyOptionsContainer implements OnInit {\n readonly optionsTemplate = viewChild<TemplateRef<any>>('options');\n\n constructor() {}\n\n ngOnInit(): void {}\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { ThyListOption } from './list-option/list-option.component';\nimport { ThyOptionGroup } from './option-group.component';\nimport { ThyIconModule } from 'ngx-tethys/icon';\nimport { ThyOption } from './option.component';\nimport { ThySelectOptionGroup } from './group/option-group.component';\nimport { ThyOptionsContainer } from './options-container.component';\n\n@NgModule({\n imports: [CommonModule, ThyIconModule, ThyListOption, ThyOptionGroup, ThyOption, ThySelectOptionGroup, ThyOptionsContainer],\n exports: [ThyListOption, ThyOptionGroup, ThyOption, ThySelectOptionGroup, ThyOptionsContainer]\n})\nexport class ThyOptionModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { input, ViewChild, ContentChild, ChangeDetectionStrategy, Component, ViewEncapsulation, inject, ChangeDetectorRef, ElementRef, QueryList, DestroyRef, output, effect, ContentChildren, NgModule } from '@angular/core';
2
+ import { input, ViewChild, ContentChild, ChangeDetectionStrategy, Component, ViewEncapsulation, inject, ChangeDetectorRef, ElementRef, QueryList, DestroyRef, model, effect, ContentChildren, NgModule } from '@angular/core';
3
3
  import { NgTemplateOutlet, CommonModule } from '@angular/common';
4
4
  import { coerceBooleanProperty, isString } from 'ngx-tethys/util';
5
5
  import { fromEvent } from 'rxjs';
@@ -111,7 +111,7 @@ class ThyTabs {
111
111
  /**
112
112
  * 激活的项
113
113
  */
114
- this.thyActiveTab = input(0);
114
+ this.thyActiveTab = model(0);
115
115
  /**
116
116
  * 附加操作
117
117
  */
@@ -129,10 +129,6 @@ class ThyTabs {
129
129
  * 响应式,自动计算宽度存放 thyNavItem,并添加更多弹框
130
130
  */
131
131
  this.thyResponsive = input(false, { transform: coerceBooleanProperty });
132
- /**
133
- * 激活的项发生改变时的回调
134
- */
135
- this.thyActiveTabChange = output();
136
132
  this.activeTabIndex = 0;
137
133
  this.transitionStarted = false;
138
134
  effect(() => {
@@ -180,11 +176,10 @@ class ThyTabs {
180
176
  this.thyAnimated() && (this.transitionStarted = this.activeTabIndex !== index);
181
177
  this.activeTabIndex = index;
182
178
  const id = tab.id();
183
- const activeTab = id ? id : index;
184
- this.thyActiveTabChange.emit(activeTab);
179
+ this.thyActiveTab.set(id ? id : index);
185
180
  }
186
181
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.8", ngImport: i0, type: ThyTabs, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
187
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.8", type: ThyTabs, isStandalone: true, selector: "thy-tabs", inputs: { thyType: { classPropertyName: "thyType", publicName: "thyType", isSignal: true, isRequired: false, transformFunction: null }, thySize: { classPropertyName: "thySize", publicName: "thySize", isSignal: true, isRequired: false, transformFunction: null }, thyActiveTab: { classPropertyName: "thyActiveTab", publicName: "thyActiveTab", isSignal: true, isRequired: false, transformFunction: null }, thyExtra: { classPropertyName: "thyExtra", publicName: "thyExtra", isSignal: true, isRequired: false, transformFunction: null }, thyPosition: { classPropertyName: "thyPosition", publicName: "thyPosition", isSignal: true, isRequired: false, transformFunction: null }, thyAnimated: { classPropertyName: "thyAnimated", publicName: "thyAnimated", isSignal: true, isRequired: false, transformFunction: null }, thyResponsive: { classPropertyName: "thyResponsive", publicName: "thyResponsive", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { thyActiveTabChange: "thyActiveTabChange" }, host: { properties: { "class.thy-tabs-top": "thyPosition() === 'top'", "class.thy-tabs-left": "thyPosition() === 'left'", "style.overflow": "transitionStarted ? \"hidden\" : null" }, classAttribute: "thy-tabs" }, queries: [{ propertyName: "tabs", predicate: ThyTab, descendants: true }], ngImport: i0, template: "<!-- tabs nav -->\n<thy-nav\n class=\"thy-tabs-nav\"\n [thyType]=\"thyType()\"\n [thySize]=\"thySize()\"\n [thyExtra]=\"thyExtra()\"\n [thyVertical]=\"thyPosition() === 'left'\"\n [thyResponsive]=\"thyResponsive()\">\n @for (tab of tabs; track $index; let i = $index) {\n <a\n href=\"javascript:;\"\n thyNavItem\n [id]=\"tab.id()\"\n [thyNavItemDisabled]=\"tab.thyDisabled()\"\n [thyNavItemActive]=\"(tab.id() && activeTabId && tab.id() === activeTabId) ?? i === activeTabIndex\"\n (click)=\"activeTab(tab, i)\">\n @if (tab.titleTemplateRef) {\n <ng-template [ngTemplateOutlet]=\"tab.titleTemplateRef\"></ng-template>\n } @else {\n {{ tab.thyTitle() }}\n }\n </a>\n }\n</thy-nav>\n<!-- tabs content -->\n<div class=\"thy-tabs-content\" [class.thy-tabs-content-animated]=\"tabPaneAnimated\" [style.margin-left]=\"getTabContentMarginLeft()\">\n @for (tab of tabs; track $index; let i = $index) {\n <div\n thyTabContent\n [active]=\"(tab.id() && activeTabId && tab.id() === activeTabId) ?? i === activeTabIndex\"\n [content]=\"tab.content\"\n [tabPaneAnimated]=\"tabPaneAnimated\"></div>\n }\n</div>\n", dependencies: [{ kind: "component", type: ThyNav, selector: "thy-nav", inputs: ["thyType", "thySize", "thyHorizontal", "thyVertical", "thyFill", "thyResponsive", "thyPauseReCalculate", "thyInsideClosable", "thyPopoverOptions", "thyExtra"] }, { kind: "directive", type: ThyNavItemDirective, selector: "[thyNavLink],[thyNavItem]", inputs: ["id", "thyNavItemActive", "thyNavLinkActive", "thyNavItemDisabled"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: ThyTabContent, selector: "thy-tab-content, [thyTabContent]", inputs: ["content", "active", "tabPaneAnimated"], exportAs: ["thyTabContent"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
182
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.8", type: ThyTabs, isStandalone: true, selector: "thy-tabs", inputs: { thyType: { classPropertyName: "thyType", publicName: "thyType", isSignal: true, isRequired: false, transformFunction: null }, thySize: { classPropertyName: "thySize", publicName: "thySize", isSignal: true, isRequired: false, transformFunction: null }, thyActiveTab: { classPropertyName: "thyActiveTab", publicName: "thyActiveTab", isSignal: true, isRequired: false, transformFunction: null }, thyExtra: { classPropertyName: "thyExtra", publicName: "thyExtra", isSignal: true, isRequired: false, transformFunction: null }, thyPosition: { classPropertyName: "thyPosition", publicName: "thyPosition", isSignal: true, isRequired: false, transformFunction: null }, thyAnimated: { classPropertyName: "thyAnimated", publicName: "thyAnimated", isSignal: true, isRequired: false, transformFunction: null }, thyResponsive: { classPropertyName: "thyResponsive", publicName: "thyResponsive", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { thyActiveTab: "thyActiveTabChange" }, host: { properties: { "class.thy-tabs-top": "thyPosition() === 'top'", "class.thy-tabs-left": "thyPosition() === 'left'", "style.overflow": "transitionStarted ? \"hidden\" : null" }, classAttribute: "thy-tabs" }, queries: [{ propertyName: "tabs", predicate: ThyTab, descendants: true }], ngImport: i0, template: "<!-- tabs nav -->\n<thy-nav\n class=\"thy-tabs-nav\"\n [thyType]=\"thyType()\"\n [thySize]=\"thySize()\"\n [thyExtra]=\"thyExtra()\"\n [thyVertical]=\"thyPosition() === 'left'\"\n [thyResponsive]=\"thyResponsive()\">\n @for (tab of tabs; track $index; let i = $index) {\n <a\n href=\"javascript:;\"\n thyNavItem\n [id]=\"tab.id()\"\n [thyNavItemDisabled]=\"tab.thyDisabled()\"\n [thyNavItemActive]=\"(tab.id() && activeTabId && tab.id() === activeTabId) ?? i === activeTabIndex\"\n (click)=\"activeTab(tab, i)\">\n @if (tab.titleTemplateRef) {\n <ng-template [ngTemplateOutlet]=\"tab.titleTemplateRef\"></ng-template>\n } @else {\n {{ tab.thyTitle() }}\n }\n </a>\n }\n</thy-nav>\n<!-- tabs content -->\n<div class=\"thy-tabs-content\" [class.thy-tabs-content-animated]=\"tabPaneAnimated\" [style.margin-left]=\"getTabContentMarginLeft()\">\n @for (tab of tabs; track $index; let i = $index) {\n <div\n thyTabContent\n [active]=\"(tab.id() && activeTabId && tab.id() === activeTabId) ?? i === activeTabIndex\"\n [content]=\"tab.content\"\n [tabPaneAnimated]=\"tabPaneAnimated\"></div>\n }\n</div>\n", dependencies: [{ kind: "component", type: ThyNav, selector: "thy-nav", inputs: ["thyType", "thySize", "thyHorizontal", "thyVertical", "thyFill", "thyResponsive", "thyPauseReCalculate", "thyInsideClosable", "thyPopoverOptions", "thyExtra"] }, { kind: "directive", type: ThyNavItemDirective, selector: "[thyNavLink],[thyNavItem]", inputs: ["id", "thyNavItemActive", "thyNavLinkActive", "thyNavItemDisabled"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: ThyTabContent, selector: "thy-tab-content, [thyTabContent]", inputs: ["content", "active", "tabPaneAnimated"], exportAs: ["thyTabContent"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
188
183
  }
189
184
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.8", ngImport: i0, type: ThyTabs, decorators: [{
190
185
  type: Component,
@@ -1 +1 @@
1
- {"version":3,"file":"ngx-tethys-tabs.mjs","sources":["../../../src/tabs/tab.component.ts","../../../src/tabs/tab-content.component.ts","../../../src/tabs/tabs.component.ts","../../../src/tabs/tabs.component.html","../../../src/tabs/tabs.module.ts","../../../src/tabs/ngx-tethys-tabs.ts"],"sourcesContent":["import { Component, OnInit, ChangeDetectionStrategy, ViewChild, TemplateRef, ContentChild, input } from '@angular/core';\nimport { coerceBooleanProperty, ThyBooleanInput } from 'ngx-tethys/util';\n\n/**\n * 选项卡的选项组件\n * @name thy-tab\n */\n@Component({\n selector: 'thy-tab',\n template: ` <ng-template #content><ng-content></ng-content></ng-template> `,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ThyTab implements OnInit {\n /**\n * 自定义选项标题的模板\n * @type TemplateRef\n */\n @ContentChild('title') titleTemplateRef: TemplateRef<unknown>;\n\n @ViewChild('content', { static: true }) content: TemplateRef<HTMLElement>;\n\n /**\n * 选项标题\n */\n readonly thyTitle = input<string>(undefined);\n\n /**\n * 选项的唯一标识\n */\n readonly id = input<string>(undefined);\n\n /**\n * 是否禁用选项\n * @default false\n */\n readonly thyDisabled = input<boolean, ThyBooleanInput>(false, { transform: coerceBooleanProperty });\n\n constructor() {}\n\n ngOnInit(): void {}\n}\n","import { ChangeDetectionStrategy, Component, TemplateRef, ViewEncapsulation, input } from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { coerceBooleanProperty, ThyBooleanInput } from 'ngx-tethys/util';\n\n/**\n * @private\n */\n@Component({\n selector: 'thy-tab-content, [thyTabContent]',\n exportAs: 'thyTabContent',\n preserveWhitespaces: false,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n @if (active()) {\n <ng-template [ngTemplateOutlet]=\"content()\"></ng-template>\n }\n `,\n host: {\n class: 'thy-tab-content',\n '[attr.aria-hidden]': '!active()',\n '[attr.tabindex]': 'active() ? 0 : -1',\n '[style.visibility]': 'tabPaneAnimated() ? active() ? null : \"hidden\" : null',\n '[style.height]': 'tabPaneAnimated() ? active() ? null : 0 : null',\n '[style.overflow-y]': 'tabPaneAnimated() ? active() ? null : \"none\" : null',\n '[style.display]': '!tabPaneAnimated() ? active() ? null : \"none\" : null'\n },\n imports: [NgTemplateOutlet]\n})\nexport class ThyTabContent {\n readonly content = input<TemplateRef<void> | null>(null);\n\n readonly active = input<boolean, ThyBooleanInput>(false, { transform: coerceBooleanProperty });\n\n readonly tabPaneAnimated = input<boolean, ThyBooleanInput>(true, { transform: coerceBooleanProperty });\n}\n","import {\n AfterContentInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n DestroyRef,\n ElementRef,\n OnInit,\n QueryList,\n TemplateRef,\n effect,\n inject,\n input,\n output\n} from '@angular/core';\nimport { coerceBooleanProperty, isString, ThyBooleanInput } from 'ngx-tethys/util';\nimport { fromEvent } from 'rxjs';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ThyTab } from './tab.component';\nimport { ThyActiveTabInfo, ThyTabActiveEvent } from './types';\nimport { ThyTabContent } from './tab-content.component';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { ThyNav, ThyNavItemDirective } from 'ngx-tethys/nav';\n\nexport type ThyTabsSize = 'lg' | 'md' | 'sm';\n\nexport type ThyTabsType = 'pulled' | 'tabs' | 'pills' | 'lite';\n\nexport type ThyTabsPosition = 'top' | 'left';\n\n/**\n * 选项卡切换组件\n * @name thy-tabs\n */\n@Component({\n selector: 'thy-tabs',\n templateUrl: './tabs.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'thy-tabs',\n '[class.thy-tabs-top]': `thyPosition() === 'top'`,\n '[class.thy-tabs-left]': `thyPosition() === 'left'`,\n '[style.overflow]': `transitionStarted ? \"hidden\" : null`\n },\n imports: [ThyNav, ThyNavItemDirective, NgTemplateOutlet, ThyTabContent]\n})\nexport class ThyTabs implements OnInit, AfterContentInit {\n private cd = inject(ChangeDetectorRef);\n private el = inject(ElementRef);\n\n @ContentChildren(ThyTab, { descendants: true }) tabs = new QueryList<ThyTab>();\n\n private readonly destroyRef = inject(DestroyRef);\n\n /**\n * 标签类型\n * @type 'pulled' | 'tabs' | 'pills' | 'lite'\n */\n readonly thyType = input<ThyTabsType>('tabs');\n\n /**\n * 选项卡的大小\n * @type 'lg' | 'md' | 'sm'\n */\n readonly thySize = input<ThyTabsSize>('md');\n\n /**\n * 激活的项\n */\n readonly thyActiveTab = input<ThyActiveTabInfo>(0);\n\n /**\n * 附加操作\n */\n readonly thyExtra = input<TemplateRef<unknown>>(undefined);\n\n /**\n * 选项卡的位置\n * @type 'top' | 'left'\n */\n readonly thyPosition = input<ThyTabsPosition>('top');\n\n /**\n * 是否使用动画切换 Tabs\n */\n readonly thyAnimated = input<boolean, ThyBooleanInput>(false, { transform: coerceBooleanProperty });\n\n /**\n * 响应式,自动计算宽度存放 thyNavItem,并添加更多弹框\n */\n readonly thyResponsive = input<boolean, ThyBooleanInput>(false, { transform: coerceBooleanProperty });\n\n /**\n * 激活的项发生改变时的回调\n */\n readonly thyActiveTabChange = output<ThyTabActiveEvent>();\n\n activeTabIndex: number = 0;\n\n activeTabId: string;\n\n transitionStarted: boolean = false;\n\n constructor() {\n effect(() => {\n const value = this.thyActiveTab();\n if (isString(value)) {\n this.activeTabId = value;\n this.activeTabIndex = undefined;\n } else {\n this.activeTabIndex = value;\n this.activeTabId = undefined;\n }\n });\n }\n\n ngOnInit(): void {\n const tabsContent = this.el.nativeElement.querySelector('.thy-tabs-content');\n fromEvent(tabsContent, 'transitionend')\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => {\n this.transitionStarted = false;\n this.cd.markForCheck();\n });\n }\n\n ngAfterContentInit() {\n this.tabs.changes.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(data => {\n this.thyAnimated() && (this.transitionStarted = true);\n this.activeTabIndex = data.length - 1;\n this.cd.markForCheck();\n });\n }\n\n get tabPaneAnimated(): boolean {\n return this.thyPosition() === 'top' && this.thyAnimated();\n }\n\n getTabContentMarginLeft(): string {\n if (this.tabPaneAnimated) {\n return `${-(this.activeTabIndex || 0) * 100}%`;\n }\n return '';\n }\n\n activeTab(tab: ThyTab, index: number) {\n if (tab.thyDisabled()) {\n return;\n }\n this.activeTabId = tab.id() || null;\n this.thyAnimated() && (this.transitionStarted = this.activeTabIndex !== index);\n this.activeTabIndex = index;\n const id = tab.id();\n const activeTab = id ? id : index;\n this.thyActiveTabChange.emit(activeTab);\n }\n}\n","<!-- tabs nav -->\n<thy-nav\n class=\"thy-tabs-nav\"\n [thyType]=\"thyType()\"\n [thySize]=\"thySize()\"\n [thyExtra]=\"thyExtra()\"\n [thyVertical]=\"thyPosition() === 'left'\"\n [thyResponsive]=\"thyResponsive()\">\n @for (tab of tabs; track $index; let i = $index) {\n <a\n href=\"javascript:;\"\n thyNavItem\n [id]=\"tab.id()\"\n [thyNavItemDisabled]=\"tab.thyDisabled()\"\n [thyNavItemActive]=\"(tab.id() && activeTabId && tab.id() === activeTabId) ?? i === activeTabIndex\"\n (click)=\"activeTab(tab, i)\">\n @if (tab.titleTemplateRef) {\n <ng-template [ngTemplateOutlet]=\"tab.titleTemplateRef\"></ng-template>\n } @else {\n {{ tab.thyTitle() }}\n }\n </a>\n }\n</thy-nav>\n<!-- tabs content -->\n<div class=\"thy-tabs-content\" [class.thy-tabs-content-animated]=\"tabPaneAnimated\" [style.margin-left]=\"getTabContentMarginLeft()\">\n @for (tab of tabs; track $index; let i = $index) {\n <div\n thyTabContent\n [active]=\"(tab.id() && activeTabId && tab.id() === activeTabId) ?? i === activeTabIndex\"\n [content]=\"tab.content\"\n [tabPaneAnimated]=\"tabPaneAnimated\"></div>\n }\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ThyTabs } from './tabs.component';\nimport { ThyTab } from './tab.component';\nimport { ThyIconModule } from 'ngx-tethys/icon';\nimport { ThyNavModule } from 'ngx-tethys/nav';\nimport { ThyTabContent } from './tab-content.component';\n\n@NgModule({\n imports: [CommonModule, ThyIconModule, ThyNavModule, ThyTabs, ThyTab, ThyTabContent],\n exports: [ThyTabs, ThyTab]\n})\nexport class ThyTabsModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ngx-tethys-tabs.mjs","sources":["../../../src/tabs/tab.component.ts","../../../src/tabs/tab-content.component.ts","../../../src/tabs/tabs.component.ts","../../../src/tabs/tabs.component.html","../../../src/tabs/tabs.module.ts","../../../src/tabs/ngx-tethys-tabs.ts"],"sourcesContent":["import { Component, OnInit, ChangeDetectionStrategy, ViewChild, TemplateRef, ContentChild, input } from '@angular/core';\nimport { coerceBooleanProperty, ThyBooleanInput } from 'ngx-tethys/util';\n\n/**\n * 选项卡的选项组件\n * @name thy-tab\n */\n@Component({\n selector: 'thy-tab',\n template: ` <ng-template #content><ng-content></ng-content></ng-template> `,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ThyTab implements OnInit {\n /**\n * 自定义选项标题的模板\n * @type TemplateRef\n */\n @ContentChild('title') titleTemplateRef: TemplateRef<unknown>;\n\n @ViewChild('content', { static: true }) content: TemplateRef<HTMLElement>;\n\n /**\n * 选项标题\n */\n readonly thyTitle = input<string>(undefined);\n\n /**\n * 选项的唯一标识\n */\n readonly id = input<string>(undefined);\n\n /**\n * 是否禁用选项\n * @default false\n */\n readonly thyDisabled = input<boolean, ThyBooleanInput>(false, { transform: coerceBooleanProperty });\n\n constructor() {}\n\n ngOnInit(): void {}\n}\n","import { ChangeDetectionStrategy, Component, TemplateRef, ViewEncapsulation, input } from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { coerceBooleanProperty, ThyBooleanInput } from 'ngx-tethys/util';\n\n/**\n * @private\n */\n@Component({\n selector: 'thy-tab-content, [thyTabContent]',\n exportAs: 'thyTabContent',\n preserveWhitespaces: false,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n @if (active()) {\n <ng-template [ngTemplateOutlet]=\"content()\"></ng-template>\n }\n `,\n host: {\n class: 'thy-tab-content',\n '[attr.aria-hidden]': '!active()',\n '[attr.tabindex]': 'active() ? 0 : -1',\n '[style.visibility]': 'tabPaneAnimated() ? active() ? null : \"hidden\" : null',\n '[style.height]': 'tabPaneAnimated() ? active() ? null : 0 : null',\n '[style.overflow-y]': 'tabPaneAnimated() ? active() ? null : \"none\" : null',\n '[style.display]': '!tabPaneAnimated() ? active() ? null : \"none\" : null'\n },\n imports: [NgTemplateOutlet]\n})\nexport class ThyTabContent {\n readonly content = input<TemplateRef<void> | null>(null);\n\n readonly active = input<boolean, ThyBooleanInput>(false, { transform: coerceBooleanProperty });\n\n readonly tabPaneAnimated = input<boolean, ThyBooleanInput>(true, { transform: coerceBooleanProperty });\n}\n","import {\n AfterContentInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n DestroyRef,\n ElementRef,\n OnInit,\n QueryList,\n TemplateRef,\n effect,\n inject,\n input,\n output,\n model\n} from '@angular/core';\nimport { coerceBooleanProperty, isString, ThyBooleanInput } from 'ngx-tethys/util';\nimport { fromEvent } from 'rxjs';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ThyTab } from './tab.component';\nimport { ThyActiveTabInfo, ThyTabActiveEvent } from './types';\nimport { ThyTabContent } from './tab-content.component';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { ThyNav, ThyNavItemDirective } from 'ngx-tethys/nav';\n\nexport type ThyTabsSize = 'lg' | 'md' | 'sm';\n\nexport type ThyTabsType = 'pulled' | 'tabs' | 'pills' | 'lite';\n\nexport type ThyTabsPosition = 'top' | 'left';\n\n/**\n * 选项卡切换组件\n * @name thy-tabs\n */\n@Component({\n selector: 'thy-tabs',\n templateUrl: './tabs.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'thy-tabs',\n '[class.thy-tabs-top]': `thyPosition() === 'top'`,\n '[class.thy-tabs-left]': `thyPosition() === 'left'`,\n '[style.overflow]': `transitionStarted ? \"hidden\" : null`\n },\n imports: [ThyNav, ThyNavItemDirective, NgTemplateOutlet, ThyTabContent]\n})\nexport class ThyTabs implements OnInit, AfterContentInit {\n private cd = inject(ChangeDetectorRef);\n private el = inject(ElementRef);\n\n @ContentChildren(ThyTab, { descendants: true }) tabs = new QueryList<ThyTab>();\n\n private readonly destroyRef = inject(DestroyRef);\n\n /**\n * 标签类型\n * @type 'pulled' | 'tabs' | 'pills' | 'lite'\n */\n readonly thyType = input<ThyTabsType>('tabs');\n\n /**\n * 选项卡的大小\n * @type 'lg' | 'md' | 'sm'\n */\n readonly thySize = input<ThyTabsSize>('md');\n\n /**\n * 激活的项\n */\n readonly thyActiveTab = model<ThyActiveTabInfo>(0);\n\n /**\n * 附加操作\n */\n readonly thyExtra = input<TemplateRef<unknown>>(undefined);\n\n /**\n * 选项卡的位置\n * @type 'top' | 'left'\n */\n readonly thyPosition = input<ThyTabsPosition>('top');\n\n /**\n * 是否使用动画切换 Tabs\n */\n readonly thyAnimated = input<boolean, ThyBooleanInput>(false, { transform: coerceBooleanProperty });\n\n /**\n * 响应式,自动计算宽度存放 thyNavItem,并添加更多弹框\n */\n readonly thyResponsive = input<boolean, ThyBooleanInput>(false, { transform: coerceBooleanProperty });\n\n activeTabIndex: number = 0;\n\n activeTabId: string;\n\n transitionStarted: boolean = false;\n\n constructor() {\n effect(() => {\n const value = this.thyActiveTab();\n if (isString(value)) {\n this.activeTabId = value;\n this.activeTabIndex = undefined;\n } else {\n this.activeTabIndex = value;\n this.activeTabId = undefined;\n }\n });\n }\n\n ngOnInit(): void {\n const tabsContent = this.el.nativeElement.querySelector('.thy-tabs-content');\n fromEvent(tabsContent, 'transitionend')\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => {\n this.transitionStarted = false;\n this.cd.markForCheck();\n });\n }\n\n ngAfterContentInit() {\n this.tabs.changes.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(data => {\n this.thyAnimated() && (this.transitionStarted = true);\n this.activeTabIndex = data.length - 1;\n this.cd.markForCheck();\n });\n }\n\n get tabPaneAnimated(): boolean {\n return this.thyPosition() === 'top' && this.thyAnimated();\n }\n\n getTabContentMarginLeft(): string {\n if (this.tabPaneAnimated) {\n return `${-(this.activeTabIndex || 0) * 100}%`;\n }\n return '';\n }\n\n activeTab(tab: ThyTab, index: number) {\n if (tab.thyDisabled()) {\n return;\n }\n this.activeTabId = tab.id() || null;\n this.thyAnimated() && (this.transitionStarted = this.activeTabIndex !== index);\n this.activeTabIndex = index;\n const id = tab.id();\n this.thyActiveTab.set(id ? id : index);\n }\n}\n","<!-- tabs nav -->\n<thy-nav\n class=\"thy-tabs-nav\"\n [thyType]=\"thyType()\"\n [thySize]=\"thySize()\"\n [thyExtra]=\"thyExtra()\"\n [thyVertical]=\"thyPosition() === 'left'\"\n [thyResponsive]=\"thyResponsive()\">\n @for (tab of tabs; track $index; let i = $index) {\n <a\n href=\"javascript:;\"\n thyNavItem\n [id]=\"tab.id()\"\n [thyNavItemDisabled]=\"tab.thyDisabled()\"\n [thyNavItemActive]=\"(tab.id() && activeTabId && tab.id() === activeTabId) ?? i === activeTabIndex\"\n (click)=\"activeTab(tab, i)\">\n @if (tab.titleTemplateRef) {\n <ng-template [ngTemplateOutlet]=\"tab.titleTemplateRef\"></ng-template>\n } @else {\n {{ tab.thyTitle() }}\n }\n </a>\n }\n</thy-nav>\n<!-- tabs content -->\n<div class=\"thy-tabs-content\" [class.thy-tabs-content-animated]=\"tabPaneAnimated\" [style.margin-left]=\"getTabContentMarginLeft()\">\n @for (tab of tabs; track $index; let i = $index) {\n <div\n thyTabContent\n [active]=\"(tab.id() && activeTabId && tab.id() === activeTabId) ?? i === activeTabIndex\"\n [content]=\"tab.content\"\n [tabPaneAnimated]=\"tabPaneAnimated\"></div>\n }\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ThyTabs } from './tabs.component';\nimport { ThyTab } from './tab.component';\nimport { ThyIconModule } from 'ngx-tethys/icon';\nimport { ThyNavModule } from 'ngx-tethys/nav';\nimport { ThyTabContent } from './tab-content.component';\n\n@NgModule({\n imports: [CommonModule, ThyIconModule, ThyNavModule, ThyTabs, ThyTab, ThyTabContent],\n exports: [ThyTabs, ThyTab]\n})\nexport class ThyTabsModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { Version } from '@angular/core';
2
2
 
3
- const VERSION = new Version('19.1.0-next.9');
3
+ const VERSION = new Version('19.1.0');
4
4
 
5
5
  /**
6
6
  * Generated bundle index. Do not edit.
@@ -1 +1 @@
1
- {"version":3,"file":"ngx-tethys.mjs","sources":["../../../src/version.ts","../../../src/ngx-tethys.ts"],"sourcesContent":["import { Version } from '@angular/core';\n\nexport const VERSION = new Version('19.1.0-next.9');\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;MAEa,OAAO,GAAG,IAAI,OAAO,CAAC,eAAe;;ACFlD;;AAEG;;;;"}
1
+ {"version":3,"file":"ngx-tethys.mjs","sources":["../../../src/version.ts","../../../src/ngx-tethys.ts"],"sourcesContent":["import { Version } from '@angular/core';\n\nexport const VERSION = new Version('19.1.0');\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;MAEa,OAAO,GAAG,IAAI,OAAO,CAAC,QAAQ;;ACF3C;;AAEG;;;;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ngx-tethys",
3
- "version": "19.1.0-next.9",
3
+ "version": "19.1.0",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "git+ssh://git@github.com/atinc/ngx-tethys.git"
@@ -1 +1 @@
1
- export declare const VERSION = "19.1.0-next.9";
1
+ export declare const VERSION = "19.1.0";
@@ -1,4 +1,4 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.VERSION = void 0;
4
- exports.VERSION = '19.1.0-next.9';
4
+ exports.VERSION = '19.1.0';
@@ -19,6 +19,7 @@ export declare class ThyViewOutletDirective {
19
19
  */
20
20
  readonly thyViewOutletContext: import("@angular/core").InputSignal<any>;
21
21
  private keyValueDiffer;
22
+ private readonly isViewOutletChanged;
22
23
  constructor();
23
24
  private updateContext;
24
25
  static ɵfac: i0.ɵɵFactoryDeclaration<ThyViewOutletDirective, never>;
@@ -14,6 +14,7 @@ export declare class ThySelectControl implements OnInit {
14
14
  searchInputControlClass: {
15
15
  [key: string]: boolean;
16
16
  };
17
+ private isFirstPanelOpenedChange;
17
18
  private hostRenderer;
18
19
  readonly thyPanelOpened: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
19
20
  readonly thyIsMultiple: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
@@ -27,7 +27,7 @@ export declare class ThyTabs implements OnInit, AfterContentInit {
27
27
  /**
28
28
  * 激活的项
29
29
  */
30
- readonly thyActiveTab: import("@angular/core").InputSignal<ThyActiveTabInfo>;
30
+ readonly thyActiveTab: import("@angular/core").ModelSignal<ThyActiveTabInfo>;
31
31
  /**
32
32
  * 附加操作
33
33
  */
@@ -45,10 +45,6 @@ export declare class ThyTabs implements OnInit, AfterContentInit {
45
45
  * 响应式,自动计算宽度存放 thyNavItem,并添加更多弹框
46
46
  */
47
47
  readonly thyResponsive: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
48
- /**
49
- * 激活的项发生改变时的回调
50
- */
51
- readonly thyActiveTabChange: import("@angular/core").OutputEmitterRef<ThyActiveTabInfo>;
52
48
  activeTabIndex: number;
53
49
  activeTabId: string;
54
50
  transitionStarted: boolean;
@@ -59,5 +55,5 @@ export declare class ThyTabs implements OnInit, AfterContentInit {
59
55
  getTabContentMarginLeft(): string;
60
56
  activeTab(tab: ThyTab, index: number): void;
61
57
  static ɵfac: i0.ɵɵFactoryDeclaration<ThyTabs, never>;
62
- static ɵcmp: i0.ɵɵComponentDeclaration<ThyTabs, "thy-tabs", never, { "thyType": { "alias": "thyType"; "required": false; "isSignal": true; }; "thySize": { "alias": "thySize"; "required": false; "isSignal": true; }; "thyActiveTab": { "alias": "thyActiveTab"; "required": false; "isSignal": true; }; "thyExtra": { "alias": "thyExtra"; "required": false; "isSignal": true; }; "thyPosition": { "alias": "thyPosition"; "required": false; "isSignal": true; }; "thyAnimated": { "alias": "thyAnimated"; "required": false; "isSignal": true; }; "thyResponsive": { "alias": "thyResponsive"; "required": false; "isSignal": true; }; }, { "thyActiveTabChange": "thyActiveTabChange"; }, ["tabs"], never, true, never>;
58
+ static ɵcmp: i0.ɵɵComponentDeclaration<ThyTabs, "thy-tabs", never, { "thyType": { "alias": "thyType"; "required": false; "isSignal": true; }; "thySize": { "alias": "thySize"; "required": false; "isSignal": true; }; "thyActiveTab": { "alias": "thyActiveTab"; "required": false; "isSignal": true; }; "thyExtra": { "alias": "thyExtra"; "required": false; "isSignal": true; }; "thyPosition": { "alias": "thyPosition"; "required": false; "isSignal": true; }; "thyAnimated": { "alias": "thyAnimated"; "required": false; "isSignal": true; }; "thyResponsive": { "alias": "thyResponsive"; "required": false; "isSignal": true; }; }, { "thyActiveTab": "thyActiveTabChange"; }, ["tabs"], never, true, never>;
63
59
  }