{"version":3,"file":"ng-nest-ui-radio.mjs","sources":["../../../../lib/ng-nest/ui/radio/radio.property.ts","../../../../lib/ng-nest/ui/radio/radio.component.ts","../../../../lib/ng-nest/ui/radio/radio.component.html","../../../../lib/ng-nest/ui/radio/radio.module.ts","../../../../lib/ng-nest/ui/radio/ng-nest-ui-radio.ts"],"sourcesContent":["import { XToBoolean, XToCssPixelValue } from '@ng-nest/ui/core';\r\nimport { Component, input } from '@angular/core';\r\nimport { XButtonType } from '@ng-nest/ui/button';\r\nimport { XFormControlFunction, XFormOption } from '@ng-nest/ui/base-form';\r\nimport type {\r\n  XData,\r\n  XIdentityProperty,\r\n  XBoolean,\r\n  XTemplate,\r\n  XDirection,\r\n  XAlign,\r\n  XJustify,\r\n  XNumber\r\n} from '@ng-nest/ui/core';\r\n\r\n/**\r\n * Radio\r\n * @selector x-radio\r\n * @decorator component\r\n */\r\nexport const XRadioPrefix = 'x-radio';\r\nconst X_RADIO_CONFIG_NAME = 'radio';\r\n\r\n/**\r\n * Radio Property\r\n */\r\n@Component({ selector: `${XRadioPrefix}-property`, template: '' })\r\nexport class XRadioProperty extends XFormControlFunction(X_RADIO_CONFIG_NAME) {\r\n  /**\r\n   * @zh_CN 单选框数据\r\n   * @en_US Radio data\r\n   */\r\n  readonly data = input<XData<XRadioNode>>([]);\r\n  /**\r\n   * @zh_CN 按钮样式\r\n   * @en_US Button style\r\n   */\r\n  readonly button = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n  /**\r\n   * @zh_CN 图标样式\r\n   * @en_US Icon style\r\n   */\r\n  readonly icon = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n  /**\r\n   * @zh_CN tag 标签样式\r\n   * @en_US Tag style\r\n   */\r\n  readonly tag = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n  /**\r\n   * @zh_CN 按钮/图标/ tag 标签样式时生效\r\n   * @en_US Take effect when button style\r\n   */\r\n  readonly type = input<XButtonType>('initial');\r\n  /**\r\n   * @zh_CN tag 标签边框\r\n   * @en_US Tag bordered\r\n   */\r\n  readonly tagBordered = input<boolean, XBoolean>(true, { transform: XToBoolean });\r\n  /**\r\n   * @zh_CN tag 标签深色主题\r\n   * @en_US Tag dark theme\r\n   */\r\n  readonly tagDark = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n  /**\r\n   * @zh_CN 允许取消选中\r\n   * @en_US Allow cancel checked\r\n   */\r\n  readonly allowCancel = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n  /**\r\n   * @zh_CN 垂直布局，不支持 button 和 icon 样式\r\n   * @en_US Vertical layout, does not support button and icon styles\r\n   */\r\n  readonly vertical = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n  /**\r\n   * @zh_CN 标签\r\n   * @en_US Label\r\n   */\r\n  override readonly label = input<XTemplate>('');\r\n  /**\r\n   * @zh_CN 标签宽度\r\n   * @en_US Label width\r\n   */\r\n  override readonly labelWidth = input<string, XNumber>('', { transform: XToCssPixelValue });\r\n  /**\r\n   * @zh_CN 标签文字对齐方式\r\n   * @en_US Label text alignment method\r\n   */\r\n  override readonly labelAlign = input<XAlign>('start');\r\n  /**\r\n   * @zh_CN flex 布局下的子元素水平排列方式\r\n   * @en_US The level of sub-element level arrangement under flex layout\r\n   */\r\n  override readonly justify = input<XJustify>('start');\r\n  /**\r\n   * @zh_CN flex 布局下的子元素垂直排列方式\r\n   * @en_US sub-element vertical arrangement method under flex layout\r\n   */\r\n  override readonly align = input<XAlign>('start');\r\n  /**\r\n   * @zh_CN flex 布局下的子元素排列方向\r\n   * @en_US The direction of the sub-element arrangement under flex layout\r\n   */\r\n  override readonly direction = input<XDirection>('column');\r\n  /**\r\n   * @zh_CN 禁用\r\n   * @en_US Disabled\r\n   */\r\n  override readonly disabled = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n  /**\r\n   * @zh_CN 必填\r\n   * @en_US Required\r\n   */\r\n  override readonly required = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n  /**\r\n   * @zh_CN 前置标签\r\n   * @en_US Before label\r\n   */\r\n  override readonly before = input<XTemplate>();\r\n  /**\r\n   * @zh_CN 后置标签\r\n   * @en_US After label\r\n   */\r\n  override readonly after = input<XTemplate>();\r\n}\r\n\r\n/**\r\n * Radio Option\r\n */\r\nexport interface XRadioOption extends XFormOption {\r\n  /**\r\n   * @zh_CN 单选框数据\r\n   * @en_US Radio data\r\n   */\r\n  data?: XData<XRadioNode>;\r\n  /**\r\n   * @zh_CN 按钮样式\r\n   * @en_US Button style\r\n   */\r\n  button?: boolean;\r\n  /**\r\n   * @zh_CN 图标样式\r\n   * @en_US Icon style\r\n   */\r\n  icon?: boolean;\r\n  /**\r\n   * @zh_CN tag 标签样式\r\n   * @en_US Tag style\r\n   */\r\n  tag?: boolean;\r\n  /**\r\n   * @zh_CN 按钮/图标/ tag 标签样式时生效\r\n   * @en_US Take effect when button style\r\n   */\r\n  type?: XButtonType;\r\n  /**\r\n   * @zh_CN tag 标签边框\r\n   * @en_US Tag bordered\r\n   */\r\n  tagBordered?: boolean;\r\n  /**\r\n   * @zh_CN tag 标签深色主题\r\n   * @en_US Tag dark theme\r\n   */\r\n  tagDark?: boolean;\r\n  /**\r\n   * @zh_CN 允许取消选中\r\n   * @en_US Allow cancel checked\r\n   */\r\n  allowCancel?: boolean;\r\n  /**\r\n   * @zh_CN 垂直布局，不支持 button 和 icon 样式\r\n   * @en_US Vertical layout, does not support button and icon styles\r\n   */\r\n  vertical?: boolean;\r\n  /**\r\n   * @zh_CN 标签\r\n   * @en_US Label\r\n   */\r\n  label?: string;\r\n  /**\r\n   * @zh_CN 标签宽度\r\n   * @en_US Label width\r\n   */\r\n  labelWidth?: string;\r\n  /**\r\n   * @zh_CN 标签文字对齐方式\r\n   * @en_US Label text alignment method\r\n   */\r\n  labelAlign?: XAlign;\r\n  /**\r\n   * @zh_CN flex 布局下的子元素水平排列方式\r\n   * @en_US The level of sub-element level arrangement under flex layout\r\n   */\r\n  justify?: XJustify;\r\n  /**\r\n   * @zh_CN flex 布局下的子元素垂直排列方式\r\n   * @en_US sub-element vertical arrangement method under flex layout\r\n   */\r\n  align?: XAlign;\r\n  /**\r\n   * @zh_CN flex 布局下的子元素排列方向\r\n   * @en_US The direction of the sub-element arrangement under flex layout\r\n   */\r\n  direction?: XDirection;\r\n  /**\r\n   * @zh_CN 禁用\r\n   * @en_US Disabled\r\n   */\r\n  disabled?: boolean;\r\n  /**\r\n   * @zh_CN 必填\r\n   * @en_US Required\r\n   */\r\n  required?: boolean;\r\n  /**\r\n   * @zh_CN 前置标签\r\n   * @en_US Before label\r\n   */\r\n  before?: XTemplate;\r\n  /**\r\n   * @zh_CN 后置标签\r\n   * @en_US After label\r\n   */\r\n  after?: XTemplate;\r\n}\r\n\r\n/**\r\n * @zh_CN Radio 数据对象\r\n * @en_US Radio data object\r\n */\r\nexport interface XRadioNode extends XIdentityProperty {\r\n  /**\r\n   * @zh_CN 禁用\r\n   * @en_US Disabled\r\n   */\r\n  disabled?: boolean;\r\n  /**\r\n   * @zh_CN 图标\r\n   * @en_US Icon\r\n   */\r\n  icon?: string;\r\n  /**\r\n   * @zh_CN 图标的提示信息\r\n   * @en_US Icon message\r\n   */\r\n  title?: string;\r\n}\r\n","import {\r\n  Component,\r\n  ViewEncapsulation,\r\n  ChangeDetectionStrategy,\r\n  ElementRef,\r\n  OnChanges,\r\n  SimpleChanges,\r\n  TemplateRef,\r\n  OnDestroy,\r\n  viewChild,\r\n  signal,\r\n  computed\r\n} from '@angular/core';\r\nimport { XRadioPrefix, XRadioNode, XRadioProperty } from './radio.property';\r\nimport { Subject } from 'rxjs';\r\nimport { XIsChange, XSetData } from '@ng-nest/ui/core';\r\nimport { XValueAccessor } from '@ng-nest/ui/base-form';\r\nimport { NgClass } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { XButtonComponent, XButtonsComponent } from '@ng-nest/ui/button';\r\nimport { XTagComponent } from '@ng-nest/ui/tag';\r\nimport { XOutletDirective } from '@ng-nest/ui/outlet';\r\n\r\n@Component({\r\n  selector: `${XRadioPrefix}`,\r\n  imports: [NgClass, FormsModule, XButtonComponent, XButtonsComponent, XTagComponent, XOutletDirective],\r\n  templateUrl: './radio.component.html',\r\n  styleUrls: ['./radio.component.scss'],\r\n  encapsulation: ViewEncapsulation.None,\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  providers: [XValueAccessor(XRadioComponent)]\r\n})\r\nexport class XRadioComponent extends XRadioProperty implements OnChanges, OnDestroy {\r\n  radio = viewChild.required('radio', { read: ElementRef<HTMLElement> });\r\n  nodes = signal<XRadioNode[]>([]);\r\n  private unSubject = new Subject<void>();\r\n\r\n  beforeIsTemplate = computed(() => this.before() instanceof TemplateRef);\r\n  afterIsTemplate = computed(() => this.after() instanceof TemplateRef);\r\n\r\n  classMap = computed(() => ({\r\n    [`x-justify-${this.justify()}`]: !!this.justify(),\r\n    [`x-align-${this.align()}`]: !!this.align(),\r\n    [`x-direction-${this.direction()}`]: !!this.direction()\r\n  }));\r\n  labelMapSignal = computed(() => ({\r\n    [`x-text-align-${this.labelAlign()}`]: !!this.labelAlign()\r\n  }));\r\n  radioType = computed(() => {\r\n    if (this.button()) {\r\n      return 'button';\r\n    } else if (this.icon()) {\r\n      return 'icon';\r\n    } else if (this.tag()) {\r\n      return 'tag';\r\n    } else {\r\n      return 'initial';\r\n    }\r\n  });\r\n\r\n  ngOnChanges(changes: SimpleChanges): void {\r\n    const { data } = changes;\r\n    XIsChange(data) && this.setData();\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    this.unSubject.next();\r\n    this.unSubject.complete();\r\n  }\r\n\r\n  radioClick(event: Event, node: XRadioNode) {\r\n    event.preventDefault();\r\n    if (this.disabledComputed() || node.disabled || (!this.allowCancel() && node.id === this.value())) return;\r\n    this.formControlValidator();\r\n    if (this.allowCancel() && node.id === this.value()) {\r\n      this.value.set(null);\r\n    } else {\r\n      this.value.set(node.id);\r\n    }\r\n    if (this.onChange) this.onChange(this.value());\r\n  }\r\n\r\n  private setData() {\r\n    XSetData<XRadioNode>(this.data(), this.unSubject).subscribe((x) => {\r\n      this.nodes.set(x);\r\n    });\r\n  }\r\n}\r\n","<div\r\n  #radio\r\n  class=\"x-radio\"\r\n  [ngClass]=\"classMap()\"\r\n  [class.x-flex]=\"justify() || align() || direction()\"\r\n  [class.x-disabled]=\"disabledComputed()\"\r\n  [class.x-required]=\"requiredIsEmpty()\"\r\n  [class.x-invalid]=\"invalid()\"\r\n  [class.x-radio-button]=\"button()\"\r\n  [class.x-radio-icon]=\"icon()\"\r\n  [class.x-radio-vertical]=\"vertical()\"\r\n  [class.x-radio-after]=\"after()\"\r\n  [class.x-radio-before]=\"before()\"\r\n  [class.x-radio-after-template]=\"afterIsTemplate()\"\r\n  [class.x-radio-before-template]=\"beforeIsTemplate()\"\r\n>\r\n  @if (label()) {\r\n    <label\r\n      [class.x-radio-label-required]=\"requiredComputed()\"\r\n      [style.width]=\"labelWidth()\"\r\n      [ngClass]=\"labelMapSignal()\"\r\n      *xOutlet=\"label()\"\r\n    >\r\n      {{ label() }}\r\n    </label>\r\n  }\r\n  <div class=\"x-radio-row\">\r\n    @if (before()) {\r\n      <div class=\"x-radio-row-before\">\r\n        <ng-container *xOutlet=\"before()\">{{ before() }}</ng-container>\r\n      </div>\r\n    }\r\n    <div class=\"x-radio-row-list\">\r\n      @switch (radioType()) {\r\n        @case ('initial') {\r\n          @for (item of nodes(); track item.id) {\r\n            <div\r\n              class=\"x-radio-row-item\"\r\n              [class.x-checked]=\"item.id === value()\"\r\n              [class.x-disabled]=\"disabledComputed() || item.disabled\"\r\n              (click)=\"radioClick($event, item)\"\r\n            >\r\n              <span class=\"x-radio-box\"></span>\r\n              <span class=\"x-radio-label\">{{ item.label }}</span>\r\n            </div>\r\n          }\r\n        }\r\n        @case ('button') {\r\n          <x-buttons boxShadow=\"false\">\r\n            @for (item of nodes(); track item.id) {\r\n              <x-button\r\n                [icon]=\"item.icon!\"\r\n                [size]=\"size()\"\r\n                [type]=\"type()\"\r\n                [activated]=\"item.id === value()\"\r\n                [disabled]=\"disabledComputed() || item.disabled!\"\r\n                attrType=\"button\"\r\n                (click)=\"radioClick($event, item)\"\r\n                plain\r\n                >{{ item.label }}</x-button\r\n              >\r\n            }\r\n          </x-buttons>\r\n        }\r\n        @case ('icon') {\r\n          <x-buttons boxShadow=\"false\">\r\n            @for (item of nodes(); track item.id) {\r\n              <x-button\r\n                [icon]=\"item.icon!\"\r\n                [size]=\"size()\"\r\n                [type]=\"type()\"\r\n                [activated]=\"item.id === value()\"\r\n                [disabled]=\"disabledComputed() || item.disabled!\"\r\n                attrType=\"button\"\r\n                (click)=\"radioClick($event, item)\"\r\n                plain\r\n                >{{ item.label }}</x-button\r\n              >\r\n            }\r\n          </x-buttons>\r\n        }\r\n        @case ('tag') {\r\n          @for (item of nodes(); track item.id) {\r\n            <x-tag\r\n              checked\r\n              manual\r\n              [type]=\"type()\"\r\n              [size]=\"size()\"\r\n              [bordered]=\"tagBordered()\"\r\n              [dark]=\"tagDark()\"\r\n              [disabled]=\"disabledComputed() || item.disabled!\"\r\n              [selected]=\"value() === item.id\"\r\n              (click)=\"radioClick($event, item)\"\r\n              >{{ item.label }}</x-tag\r\n            >\r\n          }\r\n        }\r\n      }\r\n    </div>\r\n    @if (after()) {\r\n      <div class=\"x-radio-row-after\">\r\n        <ng-container *xOutlet=\"after()\">{{ after() }}</ng-container>\r\n      </div>\r\n    }\r\n  </div>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { XRadioComponent } from './radio.component';\r\n\r\n@NgModule({\r\n  exports: [XRadioComponent],\r\n  imports: [XRadioComponent]\r\n})\r\nexport class XRadioModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}