ngx-tethys 19.1.0-next.8 → 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 +50 -0
- package/fesm2022/ngx-tethys-i18n.mjs +15 -0
- package/fesm2022/ngx-tethys-i18n.mjs.map +1 -1
- package/fesm2022/ngx-tethys-layout.mjs +2 -2
- package/fesm2022/ngx-tethys-layout.mjs.map +1 -1
- package/fesm2022/ngx-tethys-property.mjs +1 -0
- package/fesm2022/ngx-tethys-property.mjs.map +1 -1
- package/fesm2022/ngx-tethys-shared.mjs +36 -12
- package/fesm2022/ngx-tethys-shared.mjs.map +1 -1
- package/fesm2022/ngx-tethys-tabs.mjs +4 -9
- package/fesm2022/ngx-tethys-tabs.mjs.map +1 -1
- package/fesm2022/ngx-tethys.mjs +1 -1
- package/fesm2022/ngx-tethys.mjs.map +1 -1
- package/i18n/i18n.d.ts +5 -1
- package/i18n/locales/de-de.d.ts +3 -0
- package/i18n/locales/en-us.d.ts +3 -0
- package/i18n/locales/ja-jp.d.ts +3 -0
- package/i18n/locales/zh-hans.d.ts +3 -0
- package/i18n/locales/zh-hant.d.ts +3 -0
- package/package.json +1 -1
- package/schematics/version.d.ts +1 -1
- package/schematics/version.js +1 -1
- package/shared/directives/view-outlet.directive.d.ts +1 -0
- package/shared/select/select-control/select-control.component.d.ts +4 -0
- package/tabs/tabs.component.d.ts +2 -6
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ngx-tethys-layout.mjs","sources":["../../../src/layout/layout.component.ts","../../../src/layout/header.component.ts","../../../src/layout/header.component.html","../../../src/layout/content.component.ts","../../../src/layout/sidebar.component.ts","../../../src/layout/content-section.component.ts","../../../src/layout/content-main.component.ts","../../../src/layout/sidebar-header.component.ts","../../../src/layout/sidebar-header.component.html","../../../src/layout/sidebar-footer.component.ts","../../../src/layout/sidebar-content.component.ts","../../../src/layout/layout.module.ts","../../../src/layout/ngx-tethys-layout.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, computed, Directive, HostBinding, signal } from '@angular/core';\nimport { ThySidebarDirection } from './sidebar.component';\n\n/**\n * 布局指令\n * @name thyLayout\n * @order 5\n */\n@Directive({\n selector:\n '[thyLayout]:not([thyForm]):not(thy-form):not(thy-radio-group):not(thy-properties):not(thy-selection-list):not(thy-vote):not([thyVote])',\n host: {\n class: 'thy-layout',\n '[class.thy-layout--has-sidebar]': 'sidebarDirection()',\n '[class.thy-layout--is-sidebar-right]': 'isSidebarRight()'\n }\n})\nexport class ThyLayoutDirective {\n readonly sidebarDirection = signal<ThySidebarDirection | null>(null);\n readonly isSidebarRight = computed(() => {\n return this.sidebarDirection() === 'right';\n });\n}\n\n/**\n * 布局组件\n * @name thy-layout\n * @order 6\n */\n@Component({\n selector: 'thy-layout',\n template: ` <ng-content></ng-content> `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n hostDirectives: [ThyLayoutDirective]\n})\nexport class ThyLayout {}\n","import { NgClass, NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, Directive, Input, TemplateRef, computed, contentChild, input } from '@angular/core';\nimport { ThyIcon } from 'ngx-tethys/icon';\nimport { coerceBooleanProperty } from 'ngx-tethys/util';\n\n/**\n * 头部布局指令\n * @name thyHeader\n * @order 10\n */\n@Directive({\n selector: '[thyHeader]',\n host: {\n class: `thy-layout-header`,\n '[class.thy-layout-header-sm]': `thySize() === 'sm'`,\n '[class.thy-layout-header-lg]': `thySize() === 'lg'`,\n '[class.thy-layout-header-xlg]': `thySize() === 'xlg'`,\n '[class.thy-layout-header-shadow]': `thyShadow()`,\n '[class.thy-layout-header-divided]': `divided()`\n }\n})\nexport class ThyHeaderDirective {\n /**\n * 头部大小\n * @type sm | md | lg | xlg\n */\n readonly thySize = input<'sm' | 'md' | 'lg' | 'xlg'>('md');\n\n /**\n * 底部是否有阴影\n * @default false\n */\n readonly thyShadow = input(false, { transform: coerceBooleanProperty });\n\n /**\n * 底部是否有分割线\n */\n readonly thyDivided = input(false, { transform: coerceBooleanProperty });\n\n /**\n * 底部是否有分割线,已废弃,请使用 thyDivided\n * @deprecated please use thyDivided\n */\n readonly thyHasBorder = input(false, { transform: coerceBooleanProperty });\n\n readonly divided = computed(() => {\n const value = this.thyDivided();\n if (value !== undefined) {\n return value;\n }\n return this.thyHasBorder();\n });\n}\n\n/**\n * 头部布局组件\n * @name thy-header\n * @order 11\n */\n@Component({\n selector: 'thy-header',\n preserveWhitespaces: false,\n templateUrl: './header.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n hostDirectives: [\n {\n directive: ThyHeaderDirective,\n inputs: ['thySize', 'thyShadow', 'thyHasBorder', 'thyDivided']\n }\n ],\n imports: [NgTemplateOutlet, ThyIcon, NgClass]\n})\nexport class ThyHeader {\n /**\n * 头部标题\n */\n readonly thyTitle = input<string>(undefined);\n\n /**\n * 图标前缀,被弃用,图标使用 SVG 图标\n */\n readonly thyIconPrefix = input('wtf');\n\n /**\n * 图标,SVG 图标名称\n */\n readonly thyIcon = input<string>(undefined);\n\n readonly svgIconName = computed(() => {\n const icon = this.thyIcon();\n if (icon && !icon.includes('wtf')) {\n return icon;\n }\n return null;\n });\n\n readonly iconClass = computed(() => {\n const icon = this.svgIconName();\n if (icon) {\n return null;\n } else {\n const icon = this.thyIcon();\n if (icon && icon.includes('wtf')) {\n return `${this.thyIconPrefix()} ${icon}`;\n }\n }\n return null;\n });\n\n /**\n * 头部自定义标题模板,`<ng-template #headerTitle></ng-template>`\n * @type TemplateRef\n */\n readonly titleTemplateRef = contentChild<TemplateRef<any>>('headerTitle');\n\n /**\n * 头部自定义内容模板,`<ng-template #headerContent></ng-template>`\n * @type TemplateRef\n */\n readonly contentTemplateRef = contentChild<TemplateRef<any>>('headerContent');\n\n /**\n * 头部自定义操作模板,`<ng-template #headerOperation></ng-template>`\n * @type TemplateRef\n */\n readonly operationTemplateRef = contentChild<TemplateRef<any>>('headerOperation');\n}\n","<div class=\"layout-header-title\">\n @if (titleTemplateRef()) {\n <ng-template [ngTemplateOutlet]=\"titleTemplateRef()\"></ng-template>\n } @else {\n @if (svgIconName()) {\n <thy-icon class=\"prefix-icon\" [thyIconName]=\"svgIconName()\"></thy-icon>\n } @else {\n @if (iconClass()) {\n <i class=\"prefix-icon\" [ngClass]=\"iconClass()\"></i>\n }\n }\n <span class=\"title-name\">{{ thyTitle() }}</span>\n }\n</div>\n<div class=\"layout-header-content\">\n <ng-template [ngTemplateOutlet]=\"contentTemplateRef()\"></ng-template>\n</div>\n<div class=\"layout-header-operation\">\n <ng-template [ngTemplateOutlet]=\"operationTemplateRef()\"></ng-template>\n</div>\n","import { ChangeDetectionStrategy, Component, Directive } from '@angular/core';\n\n/**\n * 内容布局指令\n * @name thyContent\n * @order 15\n */\n@Directive({\n selector: '[thyContent]:not(thy-badge):not([thyBadge])',\n host: {\n class: 'thy-layout-content'\n }\n})\nexport class ThyContentDirective {}\n\n/**\n * 内容布局组件\n * @name thy-content\n * @order 16\n */\n@Component({\n selector: 'thy-content',\n preserveWhitespaces: false,\n template: ` <ng-content></ng-content> `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n hostDirectives: [ThyContentDirective]\n})\nexport class ThyContent {}\n","import { NgClass, NgStyle, NgTemplateOutlet } from '@angular/common';\nimport {\n Component,\n Directive,\n ElementRef,\n EventEmitter,\n HostBinding,\n HostListener,\n Input,\n OnDestroy,\n OnInit,\n Output,\n Signal,\n TemplateRef,\n inject,\n numberAttribute,\n input,\n linkedSignal,\n effect,\n computed,\n signal,\n output\n} from '@angular/core';\nimport { ThyHotkeyDispatcher } from '@tethys/cdk/hotkey';\nimport { isMacPlatform } from '@tethys/cdk/is';\nimport { ThyIcon } from 'ngx-tethys/icon';\nimport { ThyResizableDirective, ThyResizeEvent, ThyResizeHandle } from 'ngx-tethys/resizable';\nimport { ThyTooltipDirective } from 'ngx-tethys/tooltip';\nimport { Subscription } from 'rxjs';\nimport { ThyLayoutDirective } from './layout.component';\nimport { coerceBooleanProperty, ThyBooleanInput } from 'ngx-tethys/util';\nimport { injectLocale, ThyLayoutLocale } from 'ngx-tethys/i18n';\n\nconst LG_WIDTH = 300;\nconst SIDEBAR_DEFAULT_WIDTH = 240;\nconst SIDEBAR_COLLAPSED_WIDTH = 20;\n\nexport type ThySidebarTheme = 'white' | 'light' | 'dark';\n\nexport type ThySidebarDirection = 'left' | 'right';\n\n/**\n * 侧边栏布局指令\n * @name thySidebar\n * @order 20\n */\n@Directive({\n selector: '[thySidebar]',\n host: {\n class: 'thy-layout-sidebar',\n '[class.thy-layout-sidebar-right]': 'thyDirection() === \"right\"',\n '[class.thy-layout-sidebar--clear-border-right]': 'thyDirection() === \"left\" && !thyDivided()',\n '[class.thy-layout-sidebar--clear-border-left]': 'thyDirection() === \"right\" && !thyDivided()',\n '[class.sidebar-theme-light]': 'thyTheme() === \"light\"',\n '[class.sidebar-theme-dark]': 'thyTheme() === \"dark\"',\n '[class.thy-layout-sidebar-isolated]': 'thyIsolated()',\n '[style.width.px]': 'sidebarWidth()'\n }\n})\nexport class ThySidebarDirective implements OnInit {\n private thyLayoutDirective = inject(ThyLayoutDirective, { optional: true, host: true })!;\n\n /**\n * sidebar 位置,默认在左侧\n */\n readonly thyDirection = input<ThySidebarDirection>('left');\n\n /**\n * 主题\n * @type white | light | dark\n * @default white\n */\n readonly thyTheme = input<ThySidebarTheme>(undefined);\n\n /**\n * 宽度,默认是 240px,传入 `lg` 大小时宽度是300px\n * @default 240px\n */\n readonly thyWidth = input(SIDEBAR_DEFAULT_WIDTH, {\n transform: (value: string | number) => {\n if (value === 'lg') {\n return LG_WIDTH;\n }\n return value || SIDEBAR_DEFAULT_WIDTH;\n }\n });\n\n readonly sidebarWidth = linkedSignal(() => {\n return this.thyWidth() as number;\n });\n\n /**\n * 是否和右侧 /左侧隔离,当为 true 时距右侧 /左侧会有 margin,同时边框会去掉\n * @default false\n */\n readonly thyIsolated = input(false, { transform: coerceBooleanProperty });\n\n /**\n * sidebar 是否有分割线。当`thyDirection`值为`left`时,控制右侧是否有分割线;当`thyDirection`值为`right`时,控制左侧是否有分割线。\n * @default true\n */\n readonly thyDivided = input(true, { transform: coerceBooleanProperty });\n\n ngOnInit() {\n if (this.thyLayoutDirective) {\n this.thyLayoutDirective.sidebarDirection.set(this.thyDirection());\n }\n }\n}\n\n/**\n * 侧边栏布局组件\n * @name thy-sidebar\n * @order 21\n */\n@Component({\n selector: 'thy-sidebar',\n preserveWhitespaces: false,\n template: `\n <ng-content></ng-content>\n @if (thyDraggable()) {\n <div\n thyResizable\n class=\"sidebar-drag\"\n thyBounds=\"window\"\n [thyMaxWidth]=\"thyDragMaxWidth()\"\n [thyMinWidth]=\"dragMinWidth()\"\n (thyResize)=\"resizeHandler($event)\"\n (thyResizeStart)=\"resizeStart()\"\n (thyResizeEnd)=\"resizeEnd()\"\n [style.display]=\"!isResizable() ? 'contents' : null\">\n @if (!collapsed()) {\n <thy-resize-handle\n [thyDirection]=\"sidebarDirective.thyDirection() === 'right' ? 'left' : 'right'\"\n class=\"sidebar-resize-handle\"\n thyLine=\"true\"\n (mouseenter)=\"toggleResizable($event, 'enter')\"\n (mouseleave)=\"toggleResizable($event, 'leave')\"\n (dblclick)=\"restoreToDefaultWidth()\">\n </thy-resize-handle>\n }\n </div>\n }\n @if (thyCollapsible()) {\n <div class=\"sidebar-collapse-line\"></div>\n\n @if (thyTrigger() !== null) {\n <div\n class=\"sidebar-collapse\"\n [ngClass]=\"{ 'collapse-visible': collapseVisible(), 'collapse-hidden': collapseHidden() }\"\n (click)=\"toggleCollapse($event)\"\n [thyTooltip]=\"!thyTrigger() && collapseTip()\">\n <ng-template [ngTemplateOutlet]=\"thyTrigger() || defaultTrigger\"></ng-template>\n <ng-template #defaultTrigger>\n <thy-icon class=\"sidebar-collapse-icon\" [thyIconName]=\"this.collapsed ? 'indent' : 'outdent'\"></thy-icon>\n </ng-template>\n </div>\n }\n }\n `,\n hostDirectives: [\n {\n directive: ThySidebarDirective,\n inputs: ['thyTheme', 'thyDirection', 'thyWidth', 'thyIsolated', 'thyDivided']\n }\n ],\n imports: [NgTemplateOutlet, ThyResizeHandle, ThyResizableDirective, ThyIcon, ThyTooltipDirective, NgClass],\n host: {\n '[class.sidebar-collapse-show]': 'collapsed()',\n '[class.remove-transition]': 'isRemoveTransition()',\n '[style.width.px]': 'sidebarWidth()'\n }\n})\nexport class ThySidebar implements OnInit, OnDestroy {\n private locale: Signal<ThyLayoutLocale> = injectLocale('layout');\n\n readonly elementRef = inject(ElementRef);\n\n private hotkeyDispatcher = inject(ThyHotkeyDispatcher);\n\n public readonly sidebarDirective = inject(ThySidebarDirective);\n\n protected readonly isMouseEnter = signal(false);\n\n protected readonly sidebarWidth = computed(() => {\n if (this.thyCollapsible() && this.collapsed()) {\n return this.thyCollapsedWidth();\n } else {\n return this.sidebarDirective.sidebarWidth();\n }\n });\n\n @HostListener('mouseenter', ['$event'])\n mouseenter($event: MouseEvent) {\n this.isMouseEnter.set(true);\n }\n\n @HostListener('mouseleave', ['$event'])\n mouseleave($event: MouseEvent) {\n this.isMouseEnter.set(false);\n }\n\n /**\n * 宽度是否可以拖拽\n * @default false\n */\n readonly thyDraggable = input<boolean, ThyBooleanInput>(false, { transform: coerceBooleanProperty });\n\n /**\n * 拖拽的最大宽度\n */\n readonly thyDragMaxWidth = input<number, unknown>(undefined, { transform: numberAttribute });\n\n /**\n * 拖拽的最小宽度\n */\n readonly thyDragMinWidth = input<number, unknown>(undefined, { transform: numberAttribute });\n\n /**\n * 展示收起的触发器自定义模板,默认显示展开收起的圆形图标,设置为 null 表示不展示触发元素,手动控制展开收起状态\n * @type null | undefined | TemplateRef<any>\n * @default undefined\n */\n readonly thyTrigger = input<null | undefined | TemplateRef<any>>(undefined);\n\n /**\n * 收起状态改变后的事件\n */\n readonly thyCollapsedChange = output<boolean>();\n\n /**\n * 拖拽宽度的修改事件\n */\n readonly thyDragWidthChange = output<number>();\n\n /**\n * 开启收起/展开功能\n * @default false\n */\n readonly thyCollapsible = input(false, { transform: coerceBooleanProperty });\n\n /**\n * 是否是收起\n * @default false\n */\n readonly thyCollapsed = input(false, { transform: coerceBooleanProperty });\n\n readonly collapsed = linkedSignal(() => this.thyCollapsed());\n\n readonly collapseVisible = computed(() => {\n return this.isMouseEnter() && !this.collapsed() ? true : false;\n });\n /**\n * 收起后的宽度\n */\n readonly thyCollapsedWidth = input(SIDEBAR_COLLAPSED_WIDTH, { transform: numberAttribute });\n\n /**\n * 默认宽度,双击后可恢复到此宽度,默认是 240px,传入 lg 大小时宽度是300px\n */\n readonly thyDefaultWidth = input(undefined, {\n transform: (value: string | number) => {\n if (value === 'lg') {\n return LG_WIDTH;\n }\n return value;\n }\n });\n\n readonly collapseTip = computed(() => {\n const collapseTip = this.collapsed() ? this.locale().expand : this.locale().collapse;\n return collapseTip + (isMacPlatform() ? `(⌘ + /)` : `(Ctrl + /)`);\n });\n\n private originWidth: number = SIDEBAR_DEFAULT_WIDTH;\n\n readonly collapseHidden = signal(false);\n\n readonly isRemoveTransition = signal(false);\n\n readonly isResizable = signal(false);\n\n protected dragMinWidth = computed(() => {\n return this.thyDragMinWidth() || this.thyCollapsedWidth();\n });\n\n private hotkeySubscription: Subscription;\n\n constructor() {\n effect(() => {\n const collapsible = this.thyCollapsible();\n if (collapsible) {\n this.subscribeHotkeyEvent();\n } else {\n this.hotkeySubscription?.unsubscribe();\n }\n });\n }\n\n ngOnInit() {}\n\n private subscribeHotkeyEvent() {\n this.hotkeySubscription = this.hotkeyDispatcher.keydown(['Control+/', 'Meta+/']).subscribe(() => {\n this.toggleCollapse();\n });\n }\n\n resizeHandler({ width }: ThyResizeEvent) {\n if (width === this.sidebarDirective.sidebarWidth()) {\n return;\n }\n if (this.thyCollapsible() && width < this.thyCollapsedWidth()) {\n return;\n }\n if (this.thyCollapsible() && width === this.thyCollapsedWidth()) {\n this.collapsed.set(true);\n this.thyCollapsedChange.emit(this.collapsed());\n this.sidebarDirective.sidebarWidth.set(this.originWidth);\n this.isMouseEnter.set(false);\n return;\n }\n this.sidebarDirective.sidebarWidth.set(width);\n this.thyDragWidthChange.emit(width);\n }\n\n resizeStart() {\n this.originWidth = this.sidebarDirective.sidebarWidth();\n this.collapseHidden.set(true);\n this.isRemoveTransition.set(true);\n }\n\n resizeEnd() {\n this.collapseHidden.set(false);\n this.isRemoveTransition.set(false);\n }\n\n toggleCollapse(event?: MouseEvent) {\n this.collapsed.update((value: boolean) => {\n return !value;\n });\n this.thyCollapsedChange.emit(this.collapsed());\n }\n\n public toggleResizable(event: MouseEvent, type: 'enter' | 'leave') {\n this.isResizable.set(type === 'enter' ? true : false);\n }\n\n restoreToDefaultWidth() {\n const thyDefaultWidth = this.thyDefaultWidth();\n this.sidebarDirective.sidebarWidth.set((thyDefaultWidth as number) || SIDEBAR_DEFAULT_WIDTH);\n this.thyDragWidthChange.emit(this.sidebarDirective.sidebarWidth());\n }\n\n ngOnDestroy(): void {\n this.hotkeySubscription?.unsubscribe();\n }\n}\n","import { ChangeDetectionStrategy, Component, Directive } from '@angular/core';\n\n/**\n * 内容块区域布局指令\n * @name thyContentSection\n * @order 40\n */\n@Directive({\n selector: '[thyContentSection]',\n host: {\n class: 'thy-layout-content-section'\n }\n})\nexport class ThyContentSectionDirective {}\n\n/**\n * 内容块区域布局组件\n * @name thy-content-section\n * @order 41\n */\n@Component({\n selector: 'thy-content-section',\n preserveWhitespaces: false,\n template: ` <ng-content></ng-content> `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n hostDirectives: [ThyContentSectionDirective]\n})\nexport class ThyContentSection {}\n","import { ChangeDetectionStrategy, Component, Directive } from '@angular/core';\n\n/**\n * 内容主区域布局指令\n * @name thyContentMain\n * @order 45\n */\n@Directive({\n selector: '[thyContentMain]',\n host: {\n class: 'thy-layout-content-main'\n }\n})\nexport class ThyContentMainDirective {}\n\n/**\n * 内容主区域布局组件\n * @name thy-content-main\n * @order 46\n */\n@Component({\n selector: 'thy-content-main',\n preserveWhitespaces: false,\n template: ` <ng-content></ng-content> `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n hostDirectives: [ThyContentMainDirective]\n})\nexport class ThyContentMain {}\n","import { NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, Directive, TemplateRef, contentChild, input } from '@angular/core';\nimport { coerceBooleanProperty, ThyBooleanInput } from 'ngx-tethys/util';\n\n/**\n * 侧边栏头部布局指令\n * @name thySidebarHeader\n * @order 25\n */\n@Directive({\n selector: '[thySidebarHeader]',\n host: {\n class: 'sidebar-header',\n '[class.sidebar-header-divided]': 'thyDivided()'\n }\n})\nexport class ThySidebarHeaderDirective {\n /**\n * 是否有分割线\n * @default false\n */\n readonly thyDivided = input<boolean, ThyBooleanInput>(false, { transform: coerceBooleanProperty });\n\n constructor() {}\n}\n\n/**\n * 侧边栏头部布局组件\n * @name thy-sidebar-header\n * @order 26\n */\n@Component({\n selector: 'thy-sidebar-header',\n templateUrl: `./sidebar-header.component.html`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n hostDirectives: [\n {\n directive: ThySidebarHeaderDirective,\n inputs: ['thyDivided']\n }\n ],\n imports: [NgTemplateOutlet]\n})\nexport class ThySidebarHeader {\n /**\n * 头部标题\n */\n readonly thyTitle = input<string>(undefined);\n\n /**\n * 头部自定义操作模板,`<ng-template #headerOperation></ng-template>`\n * @type TemplateRef\n */\n readonly operationTemplateRef = contentChild<TemplateRef<unknown>>('headerOperation');\n\n /**\n * 头部自定义标题模板,`<ng-template #headerTitle></ng-template>`\n * @type TemplateRef\n */\n readonly titleTemplateRef = contentChild<TemplateRef<any>>('headerTitle');\n}\n","@if (thyTitle() || titleTemplateRef()) {\n <span class=\"title\">\n @if (titleTemplateRef()) {\n <ng-template [ngTemplateOutlet]=\"titleTemplateRef()\"></ng-template>\n } @else {\n {{ thyTitle() }}\n }\n </span>\n}\n<ng-content></ng-content>\n<div class=\"operation\">\n <ng-template [ngTemplateOutlet]=\"operationTemplateRef()\"></ng-template>\n</div>\n","import { ChangeDetectionStrategy, Component, Directive, OnInit } from '@angular/core';\n\n/**\n * 侧边栏底部布局指令\n * @name thySidebarFooter\n * @order 35\n */\n@Directive({\n selector: '[thySidebarFooter]',\n host: {\n class: 'sidebar-footer'\n }\n})\nexport class ThySidebarFooterDirective {}\n\n/**\n * 侧边栏底部布局组件\n * @name thy-sidebar-footer\n * @order 36\n */\n@Component({\n selector: 'thy-sidebar-footer',\n template: ` <ng-content></ng-content> `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n hostDirectives: [ThySidebarFooterDirective]\n})\nexport class ThySidebarFooter {}\n","import { ChangeDetectionStrategy, Component, Directive, OnInit } from '@angular/core';\n\n/**\n * 侧边栏内容布局指令\n * @name thySidebarContent\n * @order 30\n */\n@Directive({\n selector: '[thySidebarContent]',\n host: {\n class: 'sidebar-content'\n }\n})\nexport class ThySidebarContentDirective {}\n\n/**\n * 侧边栏内容布局组件\n * @name thy-sidebar-content\n * @order 31\n */\n@Component({\n selector: 'thy-sidebar-content',\n template: ` <ng-content></ng-content> `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n hostDirectives: [ThySidebarContentDirective]\n})\nexport class ThySidebarContent {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ThyLayout, ThyLayoutDirective } from './layout.component';\nimport { ThyHeader, ThyHeaderDirective } from './header.component';\nimport { ThyContent, ThyContentDirective } from './content.component';\nimport { ThySidebar, ThySidebarDirective } from './sidebar.component';\nimport { ThyContentSection, ThyContentSectionDirective } from './content-section.component';\nimport { ThyContentMain, ThyContentMainDirective } from './content-main.component';\nimport { DragDropModule } from '@angular/cdk/drag-drop';\nimport { ThyHotkeyModule } from '@tethys/cdk/hotkey';\nimport { ThyIconModule } from 'ngx-tethys/icon';\nimport { ThyTooltipModule } from 'ngx-tethys/tooltip';\nimport { ThySidebarHeader, ThySidebarHeaderDirective } from './sidebar-header.component';\nimport { ThySidebarFooter, ThySidebarFooterDirective } from './sidebar-footer.component';\nimport { ThySidebarContent, ThySidebarContentDirective } from './sidebar-content.component';\nimport { ThyResizableModule } from 'ngx-tethys/resizable';\n\n@NgModule({\n imports: [\n CommonModule,\n DragDropModule,\n ThyIconModule,\n ThyTooltipModule,\n ThyResizableModule,\n ThyHotkeyModule,\n ThyLayout,\n ThyHeader,\n ThyContent,\n ThySidebar,\n ThySidebarHeader,\n ThySidebarContent,\n ThySidebarFooter,\n ThyContentSection,\n ThyContentMain,\n ThyLayoutDirective,\n ThyHeaderDirective,\n ThyContentDirective,\n ThySidebarDirective,\n ThySidebarHeaderDirective,\n ThySidebarContentDirective,\n ThySidebarFooterDirective,\n ThyContentSectionDirective,\n ThyContentMainDirective\n ],\n exports: [\n ThyLayout,\n ThyHeader,\n ThyContent,\n ThySidebar,\n ThySidebarHeader,\n ThySidebarContent,\n ThySidebarFooter,\n ThyContentSection,\n ThyContentMain,\n ThyLayoutDirective,\n ThyHeaderDirective,\n ThyContentDirective,\n ThySidebarDirective,\n ThySidebarHeaderDirective,\n ThySidebarContentDirective,\n ThySidebarFooterDirective,\n ThyContentSectionDirective,\n ThyContentMainDirective\n ]\n})\nexport class ThyLayoutModule {}\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-layout.mjs","sources":["../../../src/layout/layout.component.ts","../../../src/layout/header.component.ts","../../../src/layout/header.component.html","../../../src/layout/content.component.ts","../../../src/layout/sidebar.component.ts","../../../src/layout/content-section.component.ts","../../../src/layout/content-main.component.ts","../../../src/layout/sidebar-header.component.ts","../../../src/layout/sidebar-header.component.html","../../../src/layout/sidebar-footer.component.ts","../../../src/layout/sidebar-content.component.ts","../../../src/layout/layout.module.ts","../../../src/layout/ngx-tethys-layout.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, computed, Directive, HostBinding, signal } from '@angular/core';\nimport { ThySidebarDirection } from './sidebar.component';\n\n/**\n * 布局指令\n * @name thyLayout\n * @order 5\n */\n@Directive({\n selector:\n '[thyLayout]:not([thyForm]):not(thy-form):not(thy-radio-group):not(thy-properties):not(thy-selection-list):not(thy-vote):not([thyVote])',\n host: {\n class: 'thy-layout',\n '[class.thy-layout--has-sidebar]': 'sidebarDirection()',\n '[class.thy-layout--is-sidebar-right]': 'isSidebarRight()'\n }\n})\nexport class ThyLayoutDirective {\n readonly sidebarDirection = signal<ThySidebarDirection | null>(null);\n readonly isSidebarRight = computed(() => {\n return this.sidebarDirection() === 'right';\n });\n}\n\n/**\n * 布局组件\n * @name thy-layout\n * @order 6\n */\n@Component({\n selector: 'thy-layout',\n template: ` <ng-content></ng-content> `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n hostDirectives: [ThyLayoutDirective]\n})\nexport class ThyLayout {}\n","import { NgClass, NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, Directive, Input, TemplateRef, computed, contentChild, input } from '@angular/core';\nimport { ThyIcon } from 'ngx-tethys/icon';\nimport { coerceBooleanProperty } from 'ngx-tethys/util';\n\n/**\n * 头部布局指令\n * @name thyHeader\n * @order 10\n */\n@Directive({\n selector: '[thyHeader]',\n host: {\n class: `thy-layout-header`,\n '[class.thy-layout-header-sm]': `thySize() === 'sm'`,\n '[class.thy-layout-header-lg]': `thySize() === 'lg'`,\n '[class.thy-layout-header-xlg]': `thySize() === 'xlg'`,\n '[class.thy-layout-header-shadow]': `thyShadow()`,\n '[class.thy-layout-header-divided]': `divided()`\n }\n})\nexport class ThyHeaderDirective {\n /**\n * 头部大小\n * @type sm | md | lg | xlg\n */\n readonly thySize = input<'sm' | 'md' | 'lg' | 'xlg'>('md');\n\n /**\n * 底部是否有阴影\n * @default false\n */\n readonly thyShadow = input(false, { transform: coerceBooleanProperty });\n\n /**\n * 底部是否有分割线\n */\n readonly thyDivided = input(false, { transform: coerceBooleanProperty });\n\n /**\n * 底部是否有分割线,已废弃,请使用 thyDivided\n * @deprecated please use thyDivided\n */\n readonly thyHasBorder = input(false, { transform: coerceBooleanProperty });\n\n readonly divided = computed(() => {\n const value = this.thyDivided();\n if (value !== undefined) {\n return value;\n }\n return this.thyHasBorder();\n });\n}\n\n/**\n * 头部布局组件\n * @name thy-header\n * @order 11\n */\n@Component({\n selector: 'thy-header',\n preserveWhitespaces: false,\n templateUrl: './header.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n hostDirectives: [\n {\n directive: ThyHeaderDirective,\n inputs: ['thySize', 'thyShadow', 'thyHasBorder', 'thyDivided']\n }\n ],\n imports: [NgTemplateOutlet, ThyIcon, NgClass]\n})\nexport class ThyHeader {\n /**\n * 头部标题\n */\n readonly thyTitle = input<string>(undefined);\n\n /**\n * 图标前缀,被弃用,图标使用 SVG 图标\n */\n readonly thyIconPrefix = input('wtf');\n\n /**\n * 图标,SVG 图标名称\n */\n readonly thyIcon = input<string>(undefined);\n\n readonly svgIconName = computed(() => {\n const icon = this.thyIcon();\n if (icon && !icon.includes('wtf')) {\n return icon;\n }\n return null;\n });\n\n readonly iconClass = computed(() => {\n const icon = this.svgIconName();\n if (icon) {\n return null;\n } else {\n const icon = this.thyIcon();\n if (icon && icon.includes('wtf')) {\n return `${this.thyIconPrefix()} ${icon}`;\n }\n }\n return null;\n });\n\n /**\n * 头部自定义标题模板,`<ng-template #headerTitle></ng-template>`\n * @type TemplateRef\n */\n readonly titleTemplateRef = contentChild<TemplateRef<any>>('headerTitle');\n\n /**\n * 头部自定义内容模板,`<ng-template #headerContent></ng-template>`\n * @type TemplateRef\n */\n readonly contentTemplateRef = contentChild<TemplateRef<any>>('headerContent');\n\n /**\n * 头部自定义操作模板,`<ng-template #headerOperation></ng-template>`\n * @type TemplateRef\n */\n readonly operationTemplateRef = contentChild<TemplateRef<any>>('headerOperation');\n}\n","<div class=\"layout-header-title\">\n @if (titleTemplateRef()) {\n <ng-template [ngTemplateOutlet]=\"titleTemplateRef()\"></ng-template>\n } @else {\n @if (svgIconName()) {\n <thy-icon class=\"prefix-icon\" [thyIconName]=\"svgIconName()\"></thy-icon>\n } @else {\n @if (iconClass()) {\n <i class=\"prefix-icon\" [ngClass]=\"iconClass()\"></i>\n }\n }\n <span class=\"title-name\">{{ thyTitle() }}</span>\n }\n</div>\n<div class=\"layout-header-content\">\n <ng-template [ngTemplateOutlet]=\"contentTemplateRef()\"></ng-template>\n</div>\n<div class=\"layout-header-operation\">\n <ng-template [ngTemplateOutlet]=\"operationTemplateRef()\"></ng-template>\n</div>\n","import { ChangeDetectionStrategy, Component, Directive } from '@angular/core';\n\n/**\n * 内容布局指令\n * @name thyContent\n * @order 15\n */\n@Directive({\n selector: '[thyContent]:not(thy-badge):not([thyBadge])',\n host: {\n class: 'thy-layout-content'\n }\n})\nexport class ThyContentDirective {}\n\n/**\n * 内容布局组件\n * @name thy-content\n * @order 16\n */\n@Component({\n selector: 'thy-content',\n preserveWhitespaces: false,\n template: ` <ng-content></ng-content> `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n hostDirectives: [ThyContentDirective]\n})\nexport class ThyContent {}\n","import { NgClass, NgStyle, NgTemplateOutlet } from '@angular/common';\nimport {\n Component,\n Directive,\n ElementRef,\n EventEmitter,\n HostBinding,\n HostListener,\n Input,\n OnDestroy,\n OnInit,\n Output,\n Signal,\n TemplateRef,\n inject,\n numberAttribute,\n input,\n linkedSignal,\n effect,\n computed,\n signal,\n output\n} from '@angular/core';\nimport { ThyHotkeyDispatcher } from '@tethys/cdk/hotkey';\nimport { isMacPlatform } from '@tethys/cdk/is';\nimport { ThyIcon } from 'ngx-tethys/icon';\nimport { ThyResizableDirective, ThyResizeEvent, ThyResizeHandle } from 'ngx-tethys/resizable';\nimport { ThyTooltipDirective } from 'ngx-tethys/tooltip';\nimport { Subscription } from 'rxjs';\nimport { ThyLayoutDirective } from './layout.component';\nimport { coerceBooleanProperty, ThyBooleanInput } from 'ngx-tethys/util';\nimport { injectLocale, ThyLayoutLocale } from 'ngx-tethys/i18n';\n\nconst LG_WIDTH = 300;\nconst SIDEBAR_DEFAULT_WIDTH = 240;\nconst SIDEBAR_COLLAPSED_WIDTH = 20;\n\nexport type ThySidebarTheme = 'white' | 'light' | 'dark';\n\nexport type ThySidebarDirection = 'left' | 'right';\n\n/**\n * 侧边栏布局指令\n * @name thySidebar\n * @order 20\n */\n@Directive({\n selector: '[thySidebar]',\n host: {\n class: 'thy-layout-sidebar',\n '[class.thy-layout-sidebar-right]': 'thyDirection() === \"right\"',\n '[class.thy-layout-sidebar--clear-border-right]': 'thyDirection() === \"left\" && !thyDivided()',\n '[class.thy-layout-sidebar--clear-border-left]': 'thyDirection() === \"right\" && !thyDivided()',\n '[class.sidebar-theme-light]': 'thyTheme() === \"light\"',\n '[class.sidebar-theme-dark]': 'thyTheme() === \"dark\"',\n '[class.thy-layout-sidebar-isolated]': 'thyIsolated()',\n '[style.width.px]': 'sidebarWidth()'\n }\n})\nexport class ThySidebarDirective implements OnInit {\n private thyLayoutDirective = inject(ThyLayoutDirective, { optional: true, host: true })!;\n\n /**\n * sidebar 位置,默认在左侧\n */\n readonly thyDirection = input<ThySidebarDirection>('left');\n\n /**\n * 主题\n * @type white | light | dark\n * @default white\n */\n readonly thyTheme = input<ThySidebarTheme>(undefined);\n\n /**\n * 宽度,默认是 240px,传入 `lg` 大小时宽度是300px\n * @default 240px\n */\n readonly thyWidth = input(SIDEBAR_DEFAULT_WIDTH, {\n transform: (value: string | number) => {\n if (value === 'lg') {\n return LG_WIDTH;\n }\n return value || SIDEBAR_DEFAULT_WIDTH;\n }\n });\n\n readonly sidebarWidth = linkedSignal(() => {\n return this.thyWidth() as number;\n });\n\n /**\n * 是否和右侧 /左侧隔离,当为 true 时距右侧 /左侧会有 margin,同时边框会去掉\n * @default false\n */\n readonly thyIsolated = input(false, { transform: coerceBooleanProperty });\n\n /**\n * sidebar 是否有分割线。当`thyDirection`值为`left`时,控制右侧是否有分割线;当`thyDirection`值为`right`时,控制左侧是否有分割线。\n * @default true\n */\n readonly thyDivided = input(true, { transform: coerceBooleanProperty });\n\n ngOnInit() {\n if (this.thyLayoutDirective) {\n this.thyLayoutDirective.sidebarDirection.set(this.thyDirection());\n }\n }\n}\n\n/**\n * 侧边栏布局组件\n * @name thy-sidebar\n * @order 21\n */\n@Component({\n selector: 'thy-sidebar',\n preserveWhitespaces: false,\n template: `\n <ng-content></ng-content>\n @if (thyDraggable()) {\n <div\n thyResizable\n class=\"sidebar-drag\"\n thyBounds=\"window\"\n [thyMaxWidth]=\"thyDragMaxWidth()\"\n [thyMinWidth]=\"dragMinWidth()\"\n (thyResize)=\"resizeHandler($event)\"\n (thyResizeStart)=\"resizeStart()\"\n (thyResizeEnd)=\"resizeEnd()\"\n [style.display]=\"!isResizable() ? 'contents' : null\">\n @if (!collapsed()) {\n <thy-resize-handle\n [thyDirection]=\"sidebarDirective.thyDirection() === 'right' ? 'left' : 'right'\"\n class=\"sidebar-resize-handle\"\n thyLine=\"true\"\n (mouseenter)=\"toggleResizable($event, 'enter')\"\n (mouseleave)=\"toggleResizable($event, 'leave')\"\n (dblclick)=\"restoreToDefaultWidth()\">\n </thy-resize-handle>\n }\n </div>\n }\n @if (thyCollapsible()) {\n <div class=\"sidebar-collapse-line\"></div>\n\n @if (thyTrigger() !== null) {\n <div\n class=\"sidebar-collapse\"\n [ngClass]=\"{ 'collapse-visible': collapseVisible(), 'collapse-hidden': collapseHidden() }\"\n (click)=\"toggleCollapse($event)\"\n [thyTooltip]=\"!thyTrigger() && collapseTip()\">\n <ng-template [ngTemplateOutlet]=\"thyTrigger() || defaultTrigger\"></ng-template>\n <ng-template #defaultTrigger>\n <thy-icon class=\"sidebar-collapse-icon\" [thyIconName]=\"collapsed() ? 'indent' : 'outdent'\"></thy-icon>\n </ng-template>\n </div>\n }\n }\n `,\n hostDirectives: [\n {\n directive: ThySidebarDirective,\n inputs: ['thyTheme', 'thyDirection', 'thyWidth', 'thyIsolated', 'thyDivided']\n }\n ],\n imports: [NgTemplateOutlet, ThyResizeHandle, ThyResizableDirective, ThyIcon, ThyTooltipDirective, NgClass],\n host: {\n '[class.sidebar-collapse-show]': 'collapsed()',\n '[class.remove-transition]': 'isRemoveTransition()',\n '[style.width.px]': 'sidebarWidth()'\n }\n})\nexport class ThySidebar implements OnInit, OnDestroy {\n private locale: Signal<ThyLayoutLocale> = injectLocale('layout');\n\n readonly elementRef = inject(ElementRef);\n\n private hotkeyDispatcher = inject(ThyHotkeyDispatcher);\n\n public readonly sidebarDirective = inject(ThySidebarDirective);\n\n protected readonly isMouseEnter = signal(false);\n\n protected readonly sidebarWidth = computed(() => {\n if (this.thyCollapsible() && this.collapsed()) {\n return this.thyCollapsedWidth();\n } else {\n return this.sidebarDirective.sidebarWidth();\n }\n });\n\n @HostListener('mouseenter', ['$event'])\n mouseenter($event: MouseEvent) {\n this.isMouseEnter.set(true);\n }\n\n @HostListener('mouseleave', ['$event'])\n mouseleave($event: MouseEvent) {\n this.isMouseEnter.set(false);\n }\n\n /**\n * 宽度是否可以拖拽\n * @default false\n */\n readonly thyDraggable = input<boolean, ThyBooleanInput>(false, { transform: coerceBooleanProperty });\n\n /**\n * 拖拽的最大宽度\n */\n readonly thyDragMaxWidth = input<number, unknown>(undefined, { transform: numberAttribute });\n\n /**\n * 拖拽的最小宽度\n */\n readonly thyDragMinWidth = input<number, unknown>(undefined, { transform: numberAttribute });\n\n /**\n * 展示收起的触发器自定义模板,默认显示展开收起的圆形图标,设置为 null 表示不展示触发元素,手动控制展开收起状态\n * @type null | undefined | TemplateRef<any>\n * @default undefined\n */\n readonly thyTrigger = input<null | undefined | TemplateRef<any>>(undefined);\n\n /**\n * 收起状态改变后的事件\n */\n readonly thyCollapsedChange = output<boolean>();\n\n /**\n * 拖拽宽度的修改事件\n */\n readonly thyDragWidthChange = output<number>();\n\n /**\n * 开启收起/展开功能\n * @default false\n */\n readonly thyCollapsible = input(false, { transform: coerceBooleanProperty });\n\n /**\n * 是否是收起\n * @default false\n */\n readonly thyCollapsed = input(false, { transform: coerceBooleanProperty });\n\n readonly collapsed = linkedSignal(() => this.thyCollapsed());\n\n readonly collapseVisible = computed(() => {\n return this.isMouseEnter() && !this.collapsed() ? true : false;\n });\n /**\n * 收起后的宽度\n */\n readonly thyCollapsedWidth = input(SIDEBAR_COLLAPSED_WIDTH, { transform: numberAttribute });\n\n /**\n * 默认宽度,双击后可恢复到此宽度,默认是 240px,传入 lg 大小时宽度是300px\n */\n readonly thyDefaultWidth = input(undefined, {\n transform: (value: string | number) => {\n if (value === 'lg') {\n return LG_WIDTH;\n }\n return value;\n }\n });\n\n readonly collapseTip = computed(() => {\n const collapseTip = this.collapsed() ? this.locale().expand : this.locale().collapse;\n return collapseTip + (isMacPlatform() ? `(⌘ + /)` : `(Ctrl + /)`);\n });\n\n private originWidth: number = SIDEBAR_DEFAULT_WIDTH;\n\n readonly collapseHidden = signal(false);\n\n readonly isRemoveTransition = signal(false);\n\n readonly isResizable = signal(false);\n\n protected dragMinWidth = computed(() => {\n return this.thyDragMinWidth() || this.thyCollapsedWidth();\n });\n\n private hotkeySubscription: Subscription;\n\n constructor() {\n effect(() => {\n const collapsible = this.thyCollapsible();\n if (collapsible) {\n this.subscribeHotkeyEvent();\n } else {\n this.hotkeySubscription?.unsubscribe();\n }\n });\n }\n\n ngOnInit() {}\n\n private subscribeHotkeyEvent() {\n this.hotkeySubscription = this.hotkeyDispatcher.keydown(['Control+/', 'Meta+/']).subscribe(() => {\n this.toggleCollapse();\n });\n }\n\n resizeHandler({ width }: ThyResizeEvent) {\n if (width === this.sidebarDirective.sidebarWidth()) {\n return;\n }\n if (this.thyCollapsible() && width < this.thyCollapsedWidth()) {\n return;\n }\n if (this.thyCollapsible() && width === this.thyCollapsedWidth()) {\n this.collapsed.set(true);\n this.thyCollapsedChange.emit(this.collapsed());\n this.sidebarDirective.sidebarWidth.set(this.originWidth);\n this.isMouseEnter.set(false);\n return;\n }\n this.sidebarDirective.sidebarWidth.set(width);\n this.thyDragWidthChange.emit(width);\n }\n\n resizeStart() {\n this.originWidth = this.sidebarDirective.sidebarWidth();\n this.collapseHidden.set(true);\n this.isRemoveTransition.set(true);\n }\n\n resizeEnd() {\n this.collapseHidden.set(false);\n this.isRemoveTransition.set(false);\n }\n\n toggleCollapse(event?: MouseEvent) {\n this.collapsed.update((value: boolean) => {\n return !value;\n });\n this.thyCollapsedChange.emit(this.collapsed());\n }\n\n public toggleResizable(event: MouseEvent, type: 'enter' | 'leave') {\n this.isResizable.set(type === 'enter' ? true : false);\n }\n\n restoreToDefaultWidth() {\n const thyDefaultWidth = this.thyDefaultWidth();\n this.sidebarDirective.sidebarWidth.set((thyDefaultWidth as number) || SIDEBAR_DEFAULT_WIDTH);\n this.thyDragWidthChange.emit(this.sidebarDirective.sidebarWidth());\n }\n\n ngOnDestroy(): void {\n this.hotkeySubscription?.unsubscribe();\n }\n}\n","import { ChangeDetectionStrategy, Component, Directive } from '@angular/core';\n\n/**\n * 内容块区域布局指令\n * @name thyContentSection\n * @order 40\n */\n@Directive({\n selector: '[thyContentSection]',\n host: {\n class: 'thy-layout-content-section'\n }\n})\nexport class ThyContentSectionDirective {}\n\n/**\n * 内容块区域布局组件\n * @name thy-content-section\n * @order 41\n */\n@Component({\n selector: 'thy-content-section',\n preserveWhitespaces: false,\n template: ` <ng-content></ng-content> `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n hostDirectives: [ThyContentSectionDirective]\n})\nexport class ThyContentSection {}\n","import { ChangeDetectionStrategy, Component, Directive } from '@angular/core';\n\n/**\n * 内容主区域布局指令\n * @name thyContentMain\n * @order 45\n */\n@Directive({\n selector: '[thyContentMain]',\n host: {\n class: 'thy-layout-content-main'\n }\n})\nexport class ThyContentMainDirective {}\n\n/**\n * 内容主区域布局组件\n * @name thy-content-main\n * @order 46\n */\n@Component({\n selector: 'thy-content-main',\n preserveWhitespaces: false,\n template: ` <ng-content></ng-content> `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n hostDirectives: [ThyContentMainDirective]\n})\nexport class ThyContentMain {}\n","import { NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, Directive, TemplateRef, contentChild, input } from '@angular/core';\nimport { coerceBooleanProperty, ThyBooleanInput } from 'ngx-tethys/util';\n\n/**\n * 侧边栏头部布局指令\n * @name thySidebarHeader\n * @order 25\n */\n@Directive({\n selector: '[thySidebarHeader]',\n host: {\n class: 'sidebar-header',\n '[class.sidebar-header-divided]': 'thyDivided()'\n }\n})\nexport class ThySidebarHeaderDirective {\n /**\n * 是否有分割线\n * @default false\n */\n readonly thyDivided = input<boolean, ThyBooleanInput>(false, { transform: coerceBooleanProperty });\n\n constructor() {}\n}\n\n/**\n * 侧边栏头部布局组件\n * @name thy-sidebar-header\n * @order 26\n */\n@Component({\n selector: 'thy-sidebar-header',\n templateUrl: `./sidebar-header.component.html`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n hostDirectives: [\n {\n directive: ThySidebarHeaderDirective,\n inputs: ['thyDivided']\n }\n ],\n imports: [NgTemplateOutlet]\n})\nexport class ThySidebarHeader {\n /**\n * 头部标题\n */\n readonly thyTitle = input<string>(undefined);\n\n /**\n * 头部自定义操作模板,`<ng-template #headerOperation></ng-template>`\n * @type TemplateRef\n */\n readonly operationTemplateRef = contentChild<TemplateRef<unknown>>('headerOperation');\n\n /**\n * 头部自定义标题模板,`<ng-template #headerTitle></ng-template>`\n * @type TemplateRef\n */\n readonly titleTemplateRef = contentChild<TemplateRef<any>>('headerTitle');\n}\n","@if (thyTitle() || titleTemplateRef()) {\n <span class=\"title\">\n @if (titleTemplateRef()) {\n <ng-template [ngTemplateOutlet]=\"titleTemplateRef()\"></ng-template>\n } @else {\n {{ thyTitle() }}\n }\n </span>\n}\n<ng-content></ng-content>\n<div class=\"operation\">\n <ng-template [ngTemplateOutlet]=\"operationTemplateRef()\"></ng-template>\n</div>\n","import { ChangeDetectionStrategy, Component, Directive, OnInit } from '@angular/core';\n\n/**\n * 侧边栏底部布局指令\n * @name thySidebarFooter\n * @order 35\n */\n@Directive({\n selector: '[thySidebarFooter]',\n host: {\n class: 'sidebar-footer'\n }\n})\nexport class ThySidebarFooterDirective {}\n\n/**\n * 侧边栏底部布局组件\n * @name thy-sidebar-footer\n * @order 36\n */\n@Component({\n selector: 'thy-sidebar-footer',\n template: ` <ng-content></ng-content> `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n hostDirectives: [ThySidebarFooterDirective]\n})\nexport class ThySidebarFooter {}\n","import { ChangeDetectionStrategy, Component, Directive, OnInit } from '@angular/core';\n\n/**\n * 侧边栏内容布局指令\n * @name thySidebarContent\n * @order 30\n */\n@Directive({\n selector: '[thySidebarContent]',\n host: {\n class: 'sidebar-content'\n }\n})\nexport class ThySidebarContentDirective {}\n\n/**\n * 侧边栏内容布局组件\n * @name thy-sidebar-content\n * @order 31\n */\n@Component({\n selector: 'thy-sidebar-content',\n template: ` <ng-content></ng-content> `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n hostDirectives: [ThySidebarContentDirective]\n})\nexport class ThySidebarContent {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ThyLayout, ThyLayoutDirective } from './layout.component';\nimport { ThyHeader, ThyHeaderDirective } from './header.component';\nimport { ThyContent, ThyContentDirective } from './content.component';\nimport { ThySidebar, ThySidebarDirective } from './sidebar.component';\nimport { ThyContentSection, ThyContentSectionDirective } from './content-section.component';\nimport { ThyContentMain, ThyContentMainDirective } from './content-main.component';\nimport { DragDropModule } from '@angular/cdk/drag-drop';\nimport { ThyHotkeyModule } from '@tethys/cdk/hotkey';\nimport { ThyIconModule } from 'ngx-tethys/icon';\nimport { ThyTooltipModule } from 'ngx-tethys/tooltip';\nimport { ThySidebarHeader, ThySidebarHeaderDirective } from './sidebar-header.component';\nimport { ThySidebarFooter, ThySidebarFooterDirective } from './sidebar-footer.component';\nimport { ThySidebarContent, ThySidebarContentDirective } from './sidebar-content.component';\nimport { ThyResizableModule } from 'ngx-tethys/resizable';\n\n@NgModule({\n imports: [\n CommonModule,\n DragDropModule,\n ThyIconModule,\n ThyTooltipModule,\n ThyResizableModule,\n ThyHotkeyModule,\n ThyLayout,\n ThyHeader,\n ThyContent,\n ThySidebar,\n ThySidebarHeader,\n ThySidebarContent,\n ThySidebarFooter,\n ThyContentSection,\n ThyContentMain,\n ThyLayoutDirective,\n ThyHeaderDirective,\n ThyContentDirective,\n ThySidebarDirective,\n ThySidebarHeaderDirective,\n ThySidebarContentDirective,\n ThySidebarFooterDirective,\n ThyContentSectionDirective,\n ThyContentMainDirective\n ],\n exports: [\n ThyLayout,\n ThyHeader,\n ThyContent,\n ThySidebar,\n ThySidebarHeader,\n ThySidebarContent,\n ThySidebarFooter,\n ThyContentSection,\n ThyContentMain,\n ThyLayoutDirective,\n ThyHeaderDirective,\n ThyContentDirective,\n ThySidebarDirective,\n ThySidebarHeaderDirective,\n ThySidebarContentDirective,\n ThySidebarFooterDirective,\n ThyContentSectionDirective,\n ThyContentMainDirective\n ]\n})\nexport class ThyLayoutModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -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,
|
|
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';
|
|
@@ -14,6 +14,8 @@ import * as i1 from '@angular/forms';
|
|
|
14
14
|
import { FormsModule } from '@angular/forms';
|
|
15
15
|
import * as i2 from 'ngx-tethys/grid';
|
|
16
16
|
import { ThyGridModule } from 'ngx-tethys/grid';
|
|
17
|
+
import { ThyTooltipDirective } from 'ngx-tethys/tooltip';
|
|
18
|
+
import { injectLocale } from 'ngx-tethys/i18n';
|
|
17
19
|
import { outputToObservable } from '@angular/core/rxjs-interop';
|
|
18
20
|
|
|
19
21
|
/**
|
|
@@ -478,6 +480,12 @@ class ThyViewOutletDirective {
|
|
|
478
480
|
* 组件和模板上下文传递数据
|
|
479
481
|
*/
|
|
480
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
|
+
});
|
|
481
489
|
effect(() => {
|
|
482
490
|
const thyViewOutlet = this.thyViewOutlet();
|
|
483
491
|
const { viewContainerRef: viewContainerRef } = this;
|
|
@@ -498,14 +506,18 @@ class ThyViewOutletDirective {
|
|
|
498
506
|
effect(() => {
|
|
499
507
|
const thyViewOutletContext = this.thyViewOutletContext();
|
|
500
508
|
let updatedKeys = [];
|
|
509
|
+
const isViewOutletChanged = untracked(this.isViewOutletChanged);
|
|
501
510
|
if (thyViewOutletContext) {
|
|
502
|
-
if (!this.keyValueDiffer) {
|
|
503
|
-
|
|
511
|
+
if (!this.keyValueDiffer || isViewOutletChanged) {
|
|
512
|
+
if (!this.keyValueDiffer) {
|
|
513
|
+
this.keyValueDiffer = this.keyValueDiffers.find(thyViewOutletContext).create();
|
|
514
|
+
}
|
|
504
515
|
this.keyValueDiffer.diff(thyViewOutletContext);
|
|
505
516
|
updatedKeys = Object.keys(thyViewOutletContext);
|
|
517
|
+
this.isViewOutletChanged.set(false);
|
|
506
518
|
}
|
|
507
519
|
else {
|
|
508
|
-
const diffChanges = this.keyValueDiffer.diff(
|
|
520
|
+
const diffChanges = this.keyValueDiffer.diff(thyViewOutletContext);
|
|
509
521
|
diffChanges?.forEachChangedItem(item => {
|
|
510
522
|
updatedKeys.push(item.key);
|
|
511
523
|
});
|
|
@@ -706,6 +718,7 @@ class ThySelectControl {
|
|
|
706
718
|
this.renderer = inject(Renderer2);
|
|
707
719
|
this.inputValue = model('');
|
|
708
720
|
this.isComposing = signal(false);
|
|
721
|
+
this.isFirstPanelOpenedChange = true;
|
|
709
722
|
this.hostRenderer = useHostRenderer();
|
|
710
723
|
this.thyPanelOpened = input(false, { transform: coerceBooleanProperty });
|
|
711
724
|
this.thyIsMultiple = input(false, { transform: coerceBooleanProperty });
|
|
@@ -740,6 +753,7 @@ class ThySelectControl {
|
|
|
740
753
|
this.thyOnClear = output();
|
|
741
754
|
this.thyOnBlur = output();
|
|
742
755
|
this.inputElement = viewChild('inputElement');
|
|
756
|
+
this.locale = injectLocale('shared');
|
|
743
757
|
this.isSelectedValue = computed(() => {
|
|
744
758
|
return ((!this.thyIsMultiple() && !isUndefinedOrNull(this.thySelectedOptions())) ||
|
|
745
759
|
(this.thyIsMultiple() && this.thySelectedOptions().length > 0));
|
|
@@ -754,6 +768,14 @@ class ThySelectControl {
|
|
|
754
768
|
}
|
|
755
769
|
return selectedOptions;
|
|
756
770
|
});
|
|
771
|
+
this.collapsedSelectedTags = computed(() => {
|
|
772
|
+
const selectedOptions = this.thySelectedOptions();
|
|
773
|
+
const maxTagCount = this.thyMaxTagCount();
|
|
774
|
+
if (maxTagCount && selectedOptions instanceof Array && selectedOptions.length > maxTagCount) {
|
|
775
|
+
return selectedOptions.slice(maxTagCount - 1, selectedOptions.length);
|
|
776
|
+
}
|
|
777
|
+
return [];
|
|
778
|
+
});
|
|
757
779
|
this.selectedValueStyle = computed(() => {
|
|
758
780
|
let showSelectedValue = false;
|
|
759
781
|
if (this.thyShowSearch()) {
|
|
@@ -784,6 +806,10 @@ class ThySelectControl {
|
|
|
784
806
|
});
|
|
785
807
|
effect(() => {
|
|
786
808
|
const panelOpened = this.thyPanelOpened();
|
|
809
|
+
if (this.isFirstPanelOpenedChange) {
|
|
810
|
+
this.isFirstPanelOpenedChange = false;
|
|
811
|
+
return;
|
|
812
|
+
}
|
|
787
813
|
if (panelOpened) {
|
|
788
814
|
untracked(() => {
|
|
789
815
|
if (this.thyShowSearch()) {
|
|
@@ -797,11 +823,9 @@ class ThySelectControl {
|
|
|
797
823
|
untracked(() => {
|
|
798
824
|
if (this.thyShowSearch()) {
|
|
799
825
|
new Promise(resolve => setTimeout(resolve, 100)).then(() => {
|
|
800
|
-
|
|
801
|
-
|
|
802
|
-
|
|
803
|
-
this.thyOnSearch.emit(this.inputValue());
|
|
804
|
-
}
|
|
826
|
+
this.inputValue.set('');
|
|
827
|
+
this.updateWidth();
|
|
828
|
+
this.thyOnSearch.emit(this.inputValue());
|
|
805
829
|
});
|
|
806
830
|
}
|
|
807
831
|
});
|
|
@@ -910,13 +934,13 @@ class ThySelectControl {
|
|
|
910
934
|
this.thyOnBlur.emit(event);
|
|
911
935
|
}
|
|
912
936
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.8", ngImport: i0, type: ThySelectControl, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
913
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.8", type: ThySelectControl, isStandalone: true, selector: "thy-select-control,[thySelectControl]", inputs: { inputValue: { classPropertyName: "inputValue", publicName: "inputValue", isSignal: true, isRequired: false, transformFunction: null }, thyPanelOpened: { classPropertyName: "thyPanelOpened", publicName: "thyPanelOpened", isSignal: true, isRequired: false, transformFunction: null }, thyIsMultiple: { classPropertyName: "thyIsMultiple", publicName: "thyIsMultiple", isSignal: true, isRequired: false, transformFunction: null }, thyShowSearch: { classPropertyName: "thyShowSearch", publicName: "thyShowSearch", isSignal: true, isRequired: false, transformFunction: null }, thySelectedOptions: { classPropertyName: "thySelectedOptions", publicName: "thySelectedOptions", isSignal: true, isRequired: false, transformFunction: null }, thyDisabled: { classPropertyName: "thyDisabled", publicName: "thyDisabled", isSignal: true, isRequired: false, transformFunction: null }, customDisplayTemplate: { classPropertyName: "customDisplayTemplate", publicName: "customDisplayTemplate", isSignal: true, isRequired: false, transformFunction: null }, thyAllowClear: { classPropertyName: "thyAllowClear", publicName: "thyAllowClear", isSignal: true, isRequired: false, transformFunction: null }, thyPlaceholder: { classPropertyName: "thyPlaceholder", publicName: "thyPlaceholder", isSignal: true, isRequired: false, transformFunction: null }, thySize: { classPropertyName: "thySize", publicName: "thySize", isSignal: true, isRequired: false, transformFunction: null }, thyMaxTagCount: { classPropertyName: "thyMaxTagCount", publicName: "thyMaxTagCount", isSignal: true, isRequired: false, transformFunction: null }, thyBorderless: { classPropertyName: "thyBorderless", publicName: "thyBorderless", isSignal: true, isRequired: false, transformFunction: null }, thyPreset: { classPropertyName: "thyPreset", publicName: "thyPreset", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { inputValue: "inputValueChange", thyOnSearch: "thyOnSearch", thyOnRemove: "thyOnRemove", thyOnClear: "thyOnClear", thyOnBlur: "thyOnBlur" }, host: { properties: { "class.select-control-borderless": "thyBorderless()" } }, viewQueries: [{ propertyName: "inputElement", first: true, predicate: ["inputElement"], descendants: true, isSignal: true }], ngImport: i0, template: "<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 <div class=\"text-truncate\">+{{ thySelectedOptions()?.length - thyMaxTagCount() + 1 }}
|
|
937
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.8", type: ThySelectControl, isStandalone: true, selector: "thy-select-control,[thySelectControl]", inputs: { inputValue: { classPropertyName: "inputValue", publicName: "inputValue", isSignal: true, isRequired: false, transformFunction: null }, thyPanelOpened: { classPropertyName: "thyPanelOpened", publicName: "thyPanelOpened", isSignal: true, isRequired: false, transformFunction: null }, thyIsMultiple: { classPropertyName: "thyIsMultiple", publicName: "thyIsMultiple", isSignal: true, isRequired: false, transformFunction: null }, thyShowSearch: { classPropertyName: "thyShowSearch", publicName: "thyShowSearch", isSignal: true, isRequired: false, transformFunction: null }, thySelectedOptions: { classPropertyName: "thySelectedOptions", publicName: "thySelectedOptions", isSignal: true, isRequired: false, transformFunction: null }, thyDisabled: { classPropertyName: "thyDisabled", publicName: "thyDisabled", isSignal: true, isRequired: false, transformFunction: null }, customDisplayTemplate: { classPropertyName: "customDisplayTemplate", publicName: "customDisplayTemplate", isSignal: true, isRequired: false, transformFunction: null }, thyAllowClear: { classPropertyName: "thyAllowClear", publicName: "thyAllowClear", isSignal: true, isRequired: false, transformFunction: null }, thyPlaceholder: { classPropertyName: "thyPlaceholder", publicName: "thyPlaceholder", isSignal: true, isRequired: false, transformFunction: null }, thySize: { classPropertyName: "thySize", publicName: "thySize", isSignal: true, isRequired: false, transformFunction: null }, thyMaxTagCount: { classPropertyName: "thyMaxTagCount", publicName: "thyMaxTagCount", isSignal: true, isRequired: false, transformFunction: null }, thyBorderless: { classPropertyName: "thyBorderless", publicName: "thyBorderless", isSignal: true, isRequired: false, transformFunction: null }, thyPreset: { classPropertyName: "thyPreset", publicName: "thyPreset", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { inputValue: "inputValueChange", thyOnSearch: "thyOnSearch", thyOnRemove: "thyOnRemove", thyOnClear: "thyOnClear", thyOnBlur: "thyOnBlur" }, host: { properties: { "class.select-control-borderless": "thyBorderless()" } }, viewQueries: [{ propertyName: "inputElement", first: true, predicate: ["inputElement"], descendants: true, isSignal: true }], ngImport: i0, template: "<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", dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: ThyTag, selector: "thy-tag,[thyTag]", inputs: ["thyTag", "thyShape", "thyColor", "thyTheme", "thySize", "thyHoverable"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: ThyIcon, selector: "thy-icon, [thy-icon]", inputs: ["thyIconType", "thyTwotoneColor", "thyIconName", "thyIconRotate", "thyIconSet", "thyIconLegging", "thyIconLinearGradient"] }, { kind: "ngmodule", type: ThyGridModule }, { kind: "directive", type: i2.ThyFlex, selector: "[thyFlex]", inputs: ["thyDirection", "thyWrap", "thyJustifyContent", "thyAlignItems", "thyGap"] }, { kind: "directive", type: i2.ThyFlexItem, selector: "[thyFlexItem]", inputs: ["thyFlexItem", "thyGrow", "thyShrink", "thyBasis"] }, { kind: "directive", type: ThyTooltipDirective, selector: "[thyTooltip],[thy-tooltip]", inputs: ["thyTooltip", "thyTooltipPlacement", "thyTooltipClass", "thyTooltipShowDelay", "thyTooltipHideDelay", "thyTooltipTrigger", "thyTooltipDisabled", "thyTooltipTemplateContext", "thyTooltipOffset", "thyTooltipPin"], exportAs: ["thyTooltip"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
914
938
|
}
|
|
915
939
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.8", ngImport: i0, type: ThySelectControl, decorators: [{
|
|
916
940
|
type: Component,
|
|
917
|
-
args: [{ selector: 'thy-select-control,[thySelectControl]', changeDetection: ChangeDetectionStrategy.OnPush, imports: [FormsModule, NgClass, NgStyle, ThyTag, NgTemplateOutlet, ThyIcon, ThyGridModule], host: {
|
|
941
|
+
args: [{ selector: 'thy-select-control,[thySelectControl]', changeDetection: ChangeDetectionStrategy.OnPush, imports: [FormsModule, NgClass, NgStyle, ThyTag, NgTemplateOutlet, ThyIcon, ThyGridModule, ThyTooltipDirective], host: {
|
|
918
942
|
'[class.select-control-borderless]': 'thyBorderless()'
|
|
919
|
-
}, template: "<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 <div class=\"text-truncate\">+{{ thySelectedOptions()?.length - thyMaxTagCount() + 1 }}
|
|
943
|
+
}, template: "<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" }]
|
|
920
944
|
}], ctorParameters: () => [] });
|
|
921
945
|
|
|
922
946
|
/**
|