{"version":3,"file":"ng-nest-ui-badge.mjs","sources":["../../../../lib/ng-nest/ui/badge/badge.property.ts","../../../../lib/ng-nest/ui/badge/badge.component.ts","../../../../lib/ng-nest/ui/badge/badge.component.html","../../../../lib/ng-nest/ui/badge/badge.module.ts","../../../../lib/ng-nest/ui/badge/ng-nest-ui-badge.ts"],"sourcesContent":["import { XPropertyFunction, XToNumber, XToString, XToCssPixelValue, XToBoolean } from '@ng-nest/ui/core';\r\nimport { Component, input } from '@angular/core';\r\nimport type { XNumber, XBoolean, XType } from '@ng-nest/ui/core';\r\n\r\n/**\r\n * Badge\r\n * @selector x-badge\r\n * @decorator component\r\n */\r\nexport const XBadgePrefix = 'x-badge';\r\nconst X_BADGE_CONFIG_NAME = 'badge';\r\n\r\n/**\r\n * Badge Property\r\n */\r\n@Component({ selector: `${XBadgePrefix}-property`, template: '' })\r\nexport class XBadgeProperty extends XPropertyFunction(X_BADGE_CONFIG_NAME) {\r\n  /**\r\n   * @zh_CN 类型，背景颜色\r\n   * @en_US Type, the background color\r\n   * @example\r\n   *\r\n   * ```html\r\n   * <x-badge value=\"12\" type=\"primary\">\r\n   *   <x-button>primary</x-button>\r\n   * </x-badge>\r\n   * <x-badge value=\"12\" type=\"success\">\r\n   *   <x-button>success</x-button>\r\n   * </x-badge>\r\n   * <x-badge value=\"12\" type=\"info\">\r\n   *   <x-button>info</x-button>\r\n   * </x-badge>\r\n   * <x-badge value=\"12\" type=\"warning\">\r\n   *   <x-button>warning</x-button>\r\n   * </x-badge>\r\n   * <x-badge value=\"12\" type=\"danger\">\r\n   *   <x-button>danger</x-button>\r\n   * </x-badge>\r\n   * <x-badge value=\"12\" type=\"text\">\r\n   *   <x-button>text</x-button>\r\n   * </x-badge>\r\n   * ```\r\n   *\r\n   */\r\n  readonly type = input<XBadgeType>(this.config?.type ?? 'danger');\r\n  /**\r\n   * @zh_CN 最大值\r\n   * @en_US Max\r\n   * @example\r\n   *\r\n   * ```html\r\n   * <x-badge value=\"200\" max=\"99\">\r\n   *   <x-button>99</x-button>\r\n   * </x-badge>\r\n   * <x-badge value=\"300\" max=\"200\">\r\n   *   <x-button>200</x-button>\r\n   * </x-badge>\r\n   * ```\r\n   */\r\n  readonly max = input<number, XNumber>(99, { transform: XToNumber });\r\n  /**\r\n   * @zh_CN 显示值\r\n   * @en_US Display value\r\n   * @example\r\n   *\r\n   * ```html\r\n   * <x-badge value=\"88\">\r\n   *   <x-button>value</x-button>\r\n   * </x-badge>\r\n   * ```\r\n   */\r\n  readonly value = input<string, XNumber>('', { transform: XToString });\r\n  /**\r\n   * @zh_CN 偏移值 left\r\n   * @en_US Offset left value\r\n   * @example\r\n   *\r\n   * ```html\r\n   * <x-badge value=\"88\" offsetLeft=\"5px\">\r\n   *   <x-button>value</x-button>\r\n   * </x-badge>\r\n   * ```\r\n   *\r\n   */\r\n  readonly offsetLeft = input<string, XNumber>('', { transform: XToCssPixelValue });\r\n  /**\r\n   * @zh_CN 偏移值 top\r\n   * @en_US Offset right value\r\n   * @example\r\n   *\r\n   * ```html\r\n   * <x-badge value=\"88\" offsetTop=\"5px\">\r\n   *   <x-button>value</x-button>\r\n   * </x-badge>\r\n   * ```\r\n   *\r\n   */\r\n  readonly offsetTop = input<string, XNumber>('', { transform: XToCssPixelValue });\r\n  /**\r\n   * @zh_CN 是否显示小红点\r\n   * @en_US Whether to show the small red dot\r\n   * @example\r\n   *\r\n   * ```html\r\n   * <x-badge dot>\r\n   *   <x-button>value</x-button>\r\n   * </x-badge>\r\n   * ```\r\n   *\r\n   */\r\n  readonly dot = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n  /**\r\n   * @zh_CN 独立使用\r\n   * @en_US Independent use\r\n   * @example\r\n   *\r\n   * ```html\r\n   * <x-badge standalone value=\"25\"></x-badge>\r\n   * <x-badge standalone value=\"200\" max=\"99\"></x-badge>\r\n   * <x-badge standalone value=\"hot\"></x-badge>\r\n   * <x-badge standalone dot></x-badge>\r\n   * ```\r\n   *\r\n   */\r\n  readonly standalone = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n}\r\n\r\n/**\r\n * @zh_CN 标记类型\r\n * @en_US Mark type\r\n */\r\nexport type XBadgeType = XType;\r\n","import { Component, ViewEncapsulation, ChangeDetectionStrategy, computed, signal } from '@angular/core';\r\nimport { NgClass, NgTemplateOutlet } from '@angular/common';\r\nimport { XBadgePrefix, XBadgeProperty } from './badge.property';\r\nimport { XIsNumber, XIsEmpty, XIsString } from '@ng-nest/ui/core';\r\n\r\n@Component({\r\n  selector: `${XBadgePrefix}`,\r\n  imports: [NgClass, NgTemplateOutlet],\r\n  templateUrl: './badge.component.html',\r\n  styleUrls: ['./badge.component.scss'],\r\n  encapsulation: ViewEncapsulation.None,\r\n  changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class XBadgeComponent extends XBadgeProperty {\r\n  range = signal([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, '+']);\r\n\r\n  valueNumber = computed(() => {\r\n    return Number(this.value());\r\n  });\r\n\r\n  classMap = computed(() => ({\r\n    [`${XBadgePrefix}-${this.type()}`]: !XIsEmpty(this.type())\r\n  }));\r\n\r\n  displayNums = computed(() => {\r\n    const value = this.value();\r\n    const max = this.max();\r\n    const toNumber = Number(value);\r\n    let displayValue = '';\r\n    if (XIsNumber(toNumber) && max && toNumber > max) {\r\n      displayValue = `${max}+`;\r\n    } else {\r\n      displayValue = `${value}`;\r\n    }\r\n    const res: (string | number)[] = [];\r\n    for (let i = 0; i < displayValue.length; i++) {\r\n      const str = displayValue[i];\r\n      if (str === '+') {\r\n        res.push(str);\r\n      } else {\r\n        res.push(Number(str));\r\n      }\r\n    }\r\n    return res;\r\n  });\r\n\r\n  translateYNumbers = computed(() => {\r\n    const displayNums = this.displayNums();\r\n    const nums: number[] = [];\r\n    for (let num of displayNums) {\r\n      if (XIsString(num) && num === '+') {\r\n        nums.push(10 * 100);\r\n      } else if (XIsNumber(num)) {\r\n        nums.push(num * 100);\r\n      }\r\n    }\r\n    return nums;\r\n  });\r\n\r\n  maxNums = computed(() => {\r\n    return this.displayNums().map((_x, index) => index) as number[];\r\n  });\r\n}\r\n","<div\r\n  #badge\r\n  class=\"x-badge\"\r\n  [ngClass]=\"classMap()\"\r\n  [class.x-badge-dot]=\"dot()\"\r\n  [class.x-badge-standalone]=\"standalone()\"\r\n>\r\n  <ng-content></ng-content>\r\n  @if (valueNumber() > 0 || dot()) {\r\n    @if (standalone()) {\r\n      <sup\r\n        animate.enter=\"x-badge-standalone-enter\"\r\n        animate.leave=\"x-badge-standalone-leave\"\r\n        [style.marginRight]=\"offsetLeft()\"\r\n        [style.marginTop]=\"offsetTop()\"\r\n      >\r\n        <ng-container *ngTemplateOutlet=\"dotTpl\"></ng-container>\r\n      </sup>\r\n    } @else {\r\n      <sup\r\n        animate.enter=\"x-badge-enter\"\r\n        animate.leave=\"x-badge-leave\"\r\n        [style.marginRight]=\"offsetLeft()\"\r\n        [style.marginTop]=\"offsetTop()\"\r\n      >\r\n        <ng-container *ngTemplateOutlet=\"dotTpl\"></ng-container>\r\n      </sup>\r\n    }\r\n  }\r\n</div>\r\n\r\n<ng-template #dotTpl>\r\n  @if (!dot()) {\r\n    @for (item of maxNums(); track item) {\r\n      <span class=\"x-badge-scroll\" [style.transform]=\"'translateY(-' + translateYNumbers()[$index] + '%)'\">\r\n        @for (j of range(); track j) {\r\n          <p>{{ j }}</p>\r\n        }\r\n      </span>\r\n    }\r\n  }\r\n</ng-template>\r\n","import { NgModule } from '@angular/core';\r\nimport { XBadgeComponent } from './badge.component';\r\n\r\n@NgModule({\r\n  exports: [XBadgeComponent],\r\n  imports: [XBadgeComponent]\r\n})\r\nexport class XBadgeModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}