{"version":3,"file":"ng-nest-ui-link.mjs","sources":["../../../../lib/ng-nest/ui/link/link.property.ts","../../../../lib/ng-nest/ui/link/link.component.ts","../../../../lib/ng-nest/ui/link/link.component.html","../../../../lib/ng-nest/ui/link/link.module.ts","../../../../lib/ng-nest/ui/link/ng-nest-ui-link.ts"],"sourcesContent":["import { XPropertyFunction, XToBoolean } from '@ng-nest/ui/core';\r\nimport { Component, input } from '@angular/core';\r\nimport type { XBoolean, XType } from '@ng-nest/ui/core';\r\n\r\n/**\r\n * Link\r\n * @selector x-link\r\n * @decorator component\r\n */\r\nexport const XLinkPrefix = 'x-link';\r\nconst X_LINK_CONFIG_NAME = 'link';\r\n\r\n/**\r\n * Link Property\r\n */\r\n@Component({ selector: `${XLinkPrefix}-property`, template: '' })\r\nexport class XLinkProperty extends XPropertyFunction(X_LINK_CONFIG_NAME) {\r\n  /**\r\n   * @zh_CN 链接\r\n   * @en_US Link\r\n   * @example\r\n   *\r\n   * ```html\r\n   * <x-link href=\"https://www.ngnest.com\" target=\"_blank\">ng-nest</x-link>\r\n   * ```\r\n   *\r\n   */\r\n  readonly href = input<string>();\r\n  /**\r\n   * @zh_CN 图标\r\n   * @en_US Icon\r\n   * @example\r\n   *\r\n   * ```html\r\n   * <x-link icon=\"fto-chevron-left\">left</x-link>\r\n   * <x-link icon=\"fto-chevron-right\">right</x-link>\r\n   * ```\r\n   *\r\n   */\r\n  readonly icon = input<string>();\r\n  /**\r\n   * @zh_CN 下划线\r\n   * @en_US Underscore\r\n   * @example\r\n   *\r\n   * ```html\r\n   * <x-link underline>underline</x-link>\r\n   * ```\r\n   *\r\n   */\r\n  readonly underline = input<boolean, XBoolean>(this.config?.underline ?? false, { transform: XToBoolean });\r\n  /**\r\n   * @zh_CN 禁用\r\n   * @en_US Disabled\r\n   * @example\r\n   *\r\n   * ```html\r\n   * <x-link disabled>disabled</x-link>\r\n   * ```\r\n   *\r\n   */\r\n  readonly disabled = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n  /**\r\n   * @zh_CN 图标靠右对齐\r\n   * @en_US Icons are aligned to the right\r\n   * @example\r\n   *\r\n   * ```html\r\n   * <x-link icon=\"fto-chevron-left\">left</x-link>\r\n   * <x-link icon=\"fto-chevron-right\" iconRight>right</x-link>\r\n   * ```\r\n   *\r\n   */\r\n  readonly iconRight = input<boolean, XBoolean>(this.config?.iconRight ?? false, { transform: XToBoolean });\r\n  /**\r\n   * @zh_CN 链接类型\r\n   * @en_US Link type\r\n   * @example\r\n   *\r\n   * ```html\r\n   * <x-link type=\"primary\">primary</x-link>\r\n   * <x-link type=\"success\">success</x-link>\r\n   * <x-link type=\"warning\">warning</x-link>\r\n   * <x-link type=\"danger\">danger</x-link>\r\n   * <x-link type=\"info\">info</x-link>\r\n   * ```\r\n   *\r\n   */\r\n  readonly type = input<XLinkType>('initial');\r\n  /**\r\n   * @zh_CN 打开方式\r\n   * @en_US Open method\r\n   * @example\r\n   *\r\n   * ```html\r\n   * <x-link href=\"https://www.ngnest.com\" target=\"_self\">ng-nest</x-link>\r\n   * <x-link href=\"https://www.ngnest.com\" target=\"_blank\">ng-nest</x-link>\r\n   * ```\r\n   *\r\n   */\r\n  readonly target = input<string>();\r\n}\r\n\r\n/**\r\n * @zh_CN 链接类型\r\n * @en_US Link type\r\n */\r\nexport type XLinkType = XType;\r\n","import {\r\n  Component,\r\n  ViewEncapsulation,\r\n  Renderer2,\r\n  ElementRef,\r\n  ChangeDetectionStrategy,\r\n  inject,\r\n  computed,\r\n  viewChild,\r\n  effect\r\n} from '@angular/core';\r\nimport { XLinkPrefix, XLinkProperty } from './link.property';\r\nimport { XIsEmpty } from '@ng-nest/ui/core';\r\nimport { XIconComponent } from '@ng-nest/ui/icon';\r\nimport { NgClass } from '@angular/common';\r\n\r\n@Component({\r\n  selector: `${XLinkPrefix}`,\r\n  imports: [NgClass, XIconComponent],\r\n  templateUrl: './link.component.html',\r\n  styleUrls: ['./link.component.scss'],\r\n  encapsulation: ViewEncapsulation.None,\r\n  changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class XLinkComponent extends XLinkProperty {\r\n  link = viewChild.required<ElementRef<HTMLLinkElement>>('link');\r\n\r\n  classMap = computed(() => ({\r\n    [`${XLinkPrefix}-${this.type()}`]: !XIsEmpty(this.type())\r\n  }));\r\n\r\n  private renderer = inject(Renderer2);\r\n\r\n  constructor() {\r\n    super();\r\n    effect(() => {\r\n      if (XIsEmpty(this.href()) && this.link()) {\r\n        this.renderer.removeAttribute(this.link().nativeElement, 'href');\r\n      }\r\n    });\r\n  }\r\n}\r\n","<a\r\n  #link\r\n  class=\"x-link\"\r\n  [ngClass]=\"classMap()\"\r\n  [class.x-link-disabled]=\"disabled()\"\r\n  [class.x-link-underline]=\"underline() && !disabled()\"\r\n  [class.x-link-icon-right]=\"iconRight()\"\r\n  [class.x-link-only-icon]=\"icon() && !content.innerHTML.trim()\"\r\n  [attr.href]=\"href()\"\r\n  [attr.target]=\"target()\"\r\n>\r\n  @if (icon()) {\r\n    <x-icon [type]=\"icon()\"></x-icon>\r\n  }\r\n  <span #content><ng-content></ng-content></span>\r\n</a>\r\n","import { NgModule } from '@angular/core';\r\nimport { XLinkComponent } from './link.component';\r\n\r\n@NgModule({\r\n  exports: [XLinkComponent],\r\n  imports: [XLinkComponent]\r\n})\r\nexport class XLinkModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}