{"version":3,"file":"ng-nest-ui-checkbox.mjs","sources":["../../../../lib/ng-nest/ui/checkbox/checkbox.property.ts","../../../../lib/ng-nest/ui/checkbox/checkbox.component.ts","../../../../lib/ng-nest/ui/checkbox/checkbox.component.html","../../../../lib/ng-nest/ui/checkbox/checkbox.module.ts","../../../../lib/ng-nest/ui/checkbox/ng-nest-ui-checkbox.ts"],"sourcesContent":["import { XToBoolean, XToCssPixelValue, XToDataConvert } from '@ng-nest/ui/core';\r\nimport { Component, TemplateRef, 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  XTemplate,\r\n  XIdentityProperty,\r\n  XBoolean,\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 * Checkbox\r\n * @selector x-checkbox\r\n * @decorator component\r\n */\r\nexport const XCheckboxPrefix = 'x-checkbox';\r\nconst X_CHECKBOX_CONFIG_NAME = 'checkbox';\r\n\r\n/**\r\n * Checkbox Property\r\n */\r\n@Component({ selector: `${XCheckboxPrefix}-property`, template: '' })\r\nexport class XCheckboxProperty extends XFormControlFunction(X_CHECKBOX_CONFIG_NAME) {\r\n  /**\r\n   * @zh_CN 多选框数据\r\n   * @en_US Checkbox data\r\n   */\r\n  readonly data = input<XData<XCheckboxNode>, XData<XCheckboxNode>>([], { transform: XToDataConvert });\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 不确定状态的样式\r\n   * @en_US Uncertain state style\r\n   */\r\n  readonly indeterminate = 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 只有一个选项，启动此参数时，value 的值为 true / false\r\n   * @en_US There is only one option, when this parameter is activated, the value is true or false\r\n   */\r\n  readonly single = 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 Node template\r\n   */\r\n  override readonly valueTpl = input<TemplateRef<any>>();\r\n  /**\r\n   * @zh_CN 值模板参数\r\n   * @en_US Node template\r\n   */\r\n  override readonly valueTplContext = input();\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 * Checkbox Option\r\n */\r\nexport interface XCheckboxOption extends XFormOption {\r\n  /**\r\n   * @zh_CN 多选框数据\r\n   * @en_US Checkbox data\r\n   */\r\n  data?: XData<XCheckboxNode>;\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 不确定状态的样式\r\n   * @en_US Uncertain state style\r\n   */\r\n  indeterminate?: 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 只有一个选项，启动此参数时，value 的值为 true / false\r\n   * @en_US There is only one option, when this parameter is activated, the value is true or false\r\n   */\r\n  single?: 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 Checkbox 数据对象\r\n * @en_US Checkbox data object\r\n */\r\nexport interface XCheckboxNode extends XIdentityProperty {\r\n  /**\r\n   * @zh_CN 禁用\r\n   * @en_US Disable\r\n   */\r\n  disabled?: boolean;\r\n  /**\r\n   * @zh_CN 选中\r\n   * @en_US Disable\r\n   */\r\n  checked?: 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   * @zh_CN 标签文字\r\n   * @en_US Label text\r\n   */\r\n  label?: XTemplate;\r\n  /**\r\n   * @zh_CN label 为模板参数的时候\r\n   * @en_US Label when setting template parameters\r\n   */\r\n  node?: XCheckboxNode;\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  computed,\r\n  viewChild,\r\n  signal,\r\n  effect\r\n} from '@angular/core';\r\nimport { XCheckboxPrefix, XCheckboxNode, XCheckboxProperty } from './checkbox.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 { XTagComponent } from '@ng-nest/ui/tag';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { XButtonComponent, XButtonsComponent } from '@ng-nest/ui/button';\r\nimport { XOutletDirective } from '@ng-nest/ui/outlet';\r\nimport { NgClass } from '@angular/common';\r\n\r\n@Component({\r\n  selector: `${XCheckboxPrefix}`,\r\n  imports: [NgClass, FormsModule, XButtonComponent, XButtonsComponent, XTagComponent, XOutletDirective],\r\n  templateUrl: './checkbox.component.html',\r\n  styleUrls: ['./checkbox.component.scss'],\r\n  encapsulation: ViewEncapsulation.None,\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  providers: [XValueAccessor(XCheckboxComponent)]\r\n})\r\nexport class XCheckboxComponent extends XCheckboxProperty implements OnChanges, OnDestroy {\r\n  checkbox = viewChild.required('checkbox', { read: ElementRef<HTMLElement> });\r\n\r\n  beforeIsTemplate = computed(() => this.before() instanceof TemplateRef);\r\n  afterIsTemplate = computed(() => this.after() instanceof TemplateRef);\r\n\r\n  nodes = signal<XCheckboxNode[]>([]);\r\n  private unSubject = new Subject<void>();\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  checkboxType = 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  constructor() {\r\n    super();\r\n    effect(() => {\r\n      this.value();\r\n      this.setChecked();\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  checkboxClick(event: Event, node: XCheckboxNode) {\r\n    event.preventDefault();\r\n    if (this.disabledComputed() || node.disabled) return;\r\n    this.formControlValidator();\r\n    if (this.single()) {\r\n      this.value.update((x) => !x);\r\n    } else {\r\n      this.value.set((this.value() as Array<any>) || []);\r\n      let index = this.value().indexOf(node.id);\r\n      if (index >= 0) {\r\n        this.value().splice(index, 1);\r\n        this.value.set([...this.value()]);\r\n      } else this.value.set([...this.value(), node.id]);\r\n    }\r\n    if (this.onChange) this.onChange(this.value());\r\n  }\r\n\r\n  isChecked(id: any): boolean {\r\n    if (this.single()) return this.value() as boolean;\r\n    else return Array.isArray(this.value()) && this.value().includes(id);\r\n  }\r\n\r\n  setChecked() {\r\n    this.nodes.update((x) => {\r\n      x.forEach((y) => {\r\n        y.checked = this.isChecked(y.id);\r\n      });\r\n      return [...x];\r\n    });\r\n  }\r\n\r\n  private setData() {\r\n    XSetData<XCheckboxNode>(this.data(), this.unSubject).subscribe((x) => {\r\n      this.nodes.set(x);\r\n    });\r\n  }\r\n}\r\n","<div\r\n  #checkbox\r\n  class=\"x-checkbox\"\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-checkbox-button]=\"button()\"\r\n  [class.x-checkbox-icon]=\"icon()\"\r\n  [class.x-checkbox-vertical]=\"vertical()\"\r\n  [class.x-checkbox-after]=\"after()\"\r\n  [class.x-checkbox-before]=\"before()\"\r\n  [class.x-checkbox-after-template]=\"afterIsTemplate()\"\r\n  [class.x-checkbox-before-template]=\"beforeIsTemplate()\"\r\n  [ngClass]=\"classMap()\"\r\n>\r\n  @if (label()) {\r\n    <label\r\n      [class.x-checkbox-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-checkbox-row\">\r\n    @if (before()) {\r\n      <div class=\"x-checkbox-row-before\">\r\n        <ng-container *xOutlet=\"before()\">{{ before() }}</ng-container>\r\n      </div>\r\n    }\r\n    <div class=\"x-checkbox-row-list\">\r\n      @switch (checkboxType()) {\r\n        @case ('initial') {\r\n          @for (item of nodes(); track item.id) {\r\n            <div\r\n              class=\"x-checkbox-row-item\"\r\n              [class.x-checked]=\"item.checked!\"\r\n              [class.x-disabled]=\"disabledComputed() || item.disabled\"\r\n              [class.x-indeterminate]=\"indeterminate()\"\r\n              (click)=\"checkboxClick($event, item)\"\r\n            >\r\n              <span class=\"x-checkbox-box\"></span>\r\n              <span class=\"x-checkbox-label\">\r\n                <ng-container *xOutlet=\"item.label; context: { $node: item.node }\">{{ item.label }}</ng-container>\r\n              </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                [title]=\"item.title!\"\r\n                [size]=\"size()\"\r\n                [type]=\"type()\"\r\n                [activated]=\"item.checked!\"\r\n                [disabled]=\"disabledComputed() || item.disabled!\"\r\n                attrType=\"button\"\r\n                (click)=\"checkboxClick($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                [title]=\"item.title!\"\r\n                [size]=\"size()\"\r\n                [type]=\"type()\"\r\n                [activated]=\"item.checked!\"\r\n                [disabled]=\"disabledComputed() || item.disabled!\"\r\n                attrType=\"button\"\r\n                (click)=\"checkboxClick($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) {\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]=\"item.checked!\"\r\n              (click)=\"checkboxClick($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-checkbox-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 { XCheckboxComponent } from './checkbox.component';\r\n\r\n@NgModule({\r\n  exports: [XCheckboxComponent],\r\n  imports: [XCheckboxComponent]\r\n})\r\nexport class XCheckboxModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}