{"version":3,"file":"ajf-core-checkbox-group.mjs","sources":["../../../projects/core/checkbox-group/src/checkbox-group.ts","../../../projects/core/checkbox-group/src/checkbox-group-module.ts","../../../projects/core/checkbox-group/src/public_api.ts","../../../projects/core/checkbox-group/src/ajf-core-checkbox-group.ts"],"sourcesContent":["/**\n * @license\n * Copyright (C) Gnucoop soc. coop.\n *\n * This file is part of the Advanced JSON forms (ajf).\n *\n * Advanced JSON forms (ajf) is free software: you can redistribute it and/or\n * modify it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the License,\n * or (at your option) any later version.\n *\n * Advanced JSON forms (ajf) is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero\n * General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with Advanced JSON forms (ajf).\n * If not, see http://www.gnu.org/licenses/.\n *\n */\n\nimport {BooleanInput, coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {\n  AfterContentInit,\n  Directive,\n  EventEmitter,\n  forwardRef,\n  Input,\n  OnInit,\n  Output,\n} from '@angular/core';\nimport {ControlValueAccessor, NG_VALUE_ACCESSOR} from '@angular/forms';\nimport {BehaviorSubject, combineLatest, Observable} from 'rxjs';\nimport {map} from 'rxjs/operators';\n\nexport const AJF_CHECKBOX_GROUP_VALUE_ACCESSOR: any = {\n  provide: NG_VALUE_ACCESSOR,\n  useExisting: forwardRef(() => AjfCheckboxGroup),\n  multi: true,\n};\n\nexport interface AjfCheckboxGroupItemChange<T> {\n  source: AjfCheckboxGroupItem<T>;\n  value: any;\n}\n\nexport interface AjfCheckboxGroupChange<T> {\n  source: AjfCheckboxGroup<T>;\n  value: any;\n}\n\nlet _uniqueIdCounter = 0;\n\n@Directive({\n  // eslint-disable-next-line\n  selector: 'ajf-checkbox-group,[ajf-checkbox-group]',\n  providers: [AJF_CHECKBOX_GROUP_VALUE_ACCESSOR],\n})\nexport class AjfCheckboxGroup<T> implements AfterContentInit, ControlValueAccessor {\n  checkboxes: AjfCheckboxGroupItem<T>[] = [];\n\n  /** The value for the button toggle group. Should match currently selected button toggle. */\n  private _value: T[] = [];\n  get value(): T[] {\n    return this._value;\n  }\n  @Input()\n  set value(newValue: T[]) {\n    if (this._value !== newValue) {\n      this._value = newValue;\n      this._updateSelectedCheckboxesFromValue();\n      this._emitChangeEvent();\n    }\n  }\n\n  /** The HTML name attribute applied to toggles in this group. */\n  private _name: string = '';\n  get name(): string {\n    return this._name;\n  }\n  @Input()\n  set name(value: string) {\n    this._name = value;\n    this._updateCheckboxesNames();\n  }\n\n  /** Disables all toggles in the group. */\n  private _disabled: boolean = false;\n  get disabled(): boolean {\n    return this._disabled;\n  }\n  @Input()\n  set disabled(value) {\n    this._disabled = coerceBooleanProperty(value);\n  }\n\n  /** The currently selected button toggle, should match the value. */\n  private _selected: AjfCheckboxGroupItem<T>[] = [];\n  get selected() {\n    return this._selected;\n  }\n  set selected(selected: AjfCheckboxGroupItem<T>[]) {\n    this._selected = selected;\n    let values: T[] = [];\n    if (selected) {\n      selected.forEach(c => {\n        if (c.value) {\n          values.push(c.value);\n          if (!c.checked) {\n            c.checked = true;\n          }\n        }\n      });\n    }\n    this._value = values;\n  }\n\n  /** Event emitted when the group's value changes. */\n  private _change: EventEmitter<AjfCheckboxGroupChange<T>> = new EventEmitter<\n    AjfCheckboxGroupChange<T>\n  >();\n  @Output()\n  readonly change: Observable<AjfCheckboxGroupChange<T>> = this._change as Observable<\n    AjfCheckboxGroupChange<T>\n  >;\n\n  /** onTouch function registered via registerOnTouch (ControlValueAccessor). */\n  onTouched: () => any = () => {};\n\n  /**\n   * Implemented as part of ControlValueAccessor.\n   */\n  writeValue(value: T[]) {\n    this.value = value;\n  }\n\n  /**\n   * Implemented as part of ControlValueAccessor.\n   */\n  registerOnChange(fn: (value: T[]) => void) {\n    this._controlValueAccessorChangeFn = fn;\n  }\n\n  /**\n   * Implemented as part of ControlValueAccessor.\n   */\n  registerOnTouched(fn: any) {\n    this.onTouched = fn;\n  }\n\n  addValue(value: T) {\n    let curValue = (this._value || []).slice(0);\n    if (curValue.indexOf(value) === -1) {\n      curValue.push(value);\n      this.value = curValue;\n    }\n  }\n\n  removeValue(value: T) {\n    let curValue = (this._value || []).slice(0);\n    let idx = curValue.indexOf(value);\n    if (idx > -1) {\n      curValue.splice(idx, 1);\n      this.value = curValue;\n    }\n  }\n\n  ngAfterContentInit(): void {\n    this._updateCheckboxesNames();\n    this._updateSelectedCheckboxesFromValue();\n  }\n\n  registerItem(item: AjfCheckboxGroupItem<T>): void {\n    this.checkboxes.push(item);\n  }\n\n  /** The method to be called in order to update ngModel. */\n  private _controlValueAccessorChangeFn: (value: any) => void = _ => {};\n\n  private _updateCheckboxesNames(): void {\n    if (this.checkboxes == null) {\n      return;\n    }\n    this.checkboxes.forEach(checkbox => {\n      if (checkbox == null) {\n        return;\n      }\n      checkbox.name = this._name;\n    });\n  }\n\n  private _updateSelectedCheckboxesFromValue(): void {\n    if (this.checkboxes == null) {\n      return;\n    }\n    this.checkboxes.forEach(checkbox => {\n      if (checkbox == null) {\n        return;\n      }\n      if (checkbox.value && (this._value || []).indexOf(checkbox.value) > -1) {\n        checkbox.checked = true;\n      } else {\n        checkbox.checked = false;\n      }\n    });\n  }\n\n  /** Dispatch change event with current selection and group value. */\n  private _emitChangeEvent(): void {\n    const event = {\n      source: this,\n      value: this._value,\n    };\n    this._controlValueAccessorChangeFn(event.value);\n    this._change.emit(event);\n  }\n\n  static ngAcceptInputType_disabled: BooleanInput;\n}\n\n@Directive()\nexport class AjfCheckboxGroupItem<T> implements OnInit {\n  /** The unique ID for this button toggle. */\n  private _checkboxId: BehaviorSubject<string> = new BehaviorSubject<string>('');\n  readonly checkboxId: Observable<string> = this._checkboxId as Observable<string>;\n\n  @Input()\n  set id(id: string) {\n    this._checkboxId.next(id);\n  }\n\n  @Input() name: string = '';\n\n  /** The parent button toggle group (exclusive selection). Optional. */\n  readonly checkboxGroup: AjfCheckboxGroup<T> | undefined;\n\n  /** Whether or not this button toggle is checked. */\n  private _checkedState: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);\n  readonly checkedState: Observable<boolean> = this._checkedState as Observable<boolean>;\n  get checked(): boolean {\n    return this._checkedState.getValue();\n  }\n  @Input()\n  set checked(checked: boolean) {\n    this._checkedState.next(checked);\n  }\n\n  /** Whether or not this button toggle is disabled. */\n  private _disabledState: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);\n  readonly disabledState: Observable<boolean> = this._disabledState as Observable<boolean>;\n  get disabled(): boolean {\n    const disabled = this._disabledState.getValue();\n    return disabled || (this.checkboxGroup != null && this.checkboxGroup.disabled);\n  }\n  @Input()\n  set disabled(disabled: boolean) {\n    this._disabledState.next(disabled != null && disabled !== false);\n  }\n\n  /** Value assigned to this button toggle. */\n  private _value: T | undefined;\n  get value(): T | undefined {\n    return this._value;\n  }\n  @Input()\n  set value(value: T | undefined) {\n    if (this._value !== value) {\n      this._value = value;\n    }\n  }\n\n  private _checkedIconVal: BehaviorSubject<string> = new BehaviorSubject<string>('');\n  get checkedIcon(): string {\n    return this._checkedIconVal.getValue();\n  }\n  @Input()\n  set checkedIcon(icon: string) {\n    this._checkedIconVal.next(icon);\n  }\n\n  private _notCheckedIconVal: BehaviorSubject<string> = new BehaviorSubject<string>('');\n  get notCheckedIcon(): string {\n    return this._notCheckedIconVal.getValue();\n  }\n  @Input()\n  set notCheckedIcon(icon: string) {\n    this._notCheckedIconVal.next(icon);\n  }\n\n  readonly icon: Observable<string>;\n\n  /** Event emitted when the group value changes. */\n  private _change: EventEmitter<AjfCheckboxGroupItemChange<T>> = new EventEmitter<\n    AjfCheckboxGroupItemChange<T>\n  >();\n  @Output()\n  readonly change: Observable<AjfCheckboxGroupItemChange<T>> = this._change as Observable<\n    AjfCheckboxGroupItemChange<T>\n  >;\n\n  constructor(checkboxGroup?: AjfCheckboxGroup<T>) {\n    this.icon = combineLatest([\n      this._checkedState,\n      this._checkedIconVal,\n      this._notCheckedIconVal,\n    ]).pipe(\n      map(\n        ([checked, checkedIcon, notCheckedIcon]) =>\n          (checked ? checkedIcon : notCheckedIcon) as string,\n      ),\n    );\n\n    if (checkboxGroup) {\n      this.checkboxGroup = checkboxGroup;\n      this.checkboxGroup.registerItem(this);\n    }\n  }\n\n  ngOnInit() {\n    if (this.id == null) {\n      this.id = `ajf-checkbox-group-item-${_uniqueIdCounter++}`;\n    }\n\n    if (\n      this.checkboxGroup &&\n      this.checkboxGroup.value &&\n      this._value &&\n      this.checkboxGroup.value.indexOf(this._value) > -1\n    ) {\n      this.checked = true;\n    }\n  }\n\n  /** Checks the button toggle due to an interaction with the underlying native input. */\n  onInputChange(event: Event) {\n    event.stopPropagation();\n\n    this._toggle();\n  }\n\n  /** Toggle the state of the current button toggle. */\n  private _toggle(): void {\n    this.checked = !this.checked;\n\n    if (this.checkboxGroup != null && this._value) {\n      if (this.checked) {\n        this.checkboxGroup.addValue(this._value);\n      } else {\n        this.checkboxGroup.removeValue(this._value);\n      }\n    }\n  }\n}\n","/**\n * @license\n * Copyright (C) Gnucoop soc. coop.\n *\n * This file is part of the Advanced JSON forms (ajf).\n *\n * Advanced JSON forms (ajf) is free software: you can redistribute it and/or\n * modify it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the License,\n * or (at your option) any later version.\n *\n * Advanced JSON forms (ajf) is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero\n * General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with Advanced JSON forms (ajf).\n * If not, see http://www.gnu.org/licenses/.\n *\n */\n\nimport {NgModule} from '@angular/core';\nimport {FormsModule} from '@angular/forms';\n\nimport {AjfCheckboxGroup} from './checkbox-group';\n\n@NgModule({\n  imports: [FormsModule],\n  declarations: [AjfCheckboxGroup],\n  exports: [AjfCheckboxGroup],\n})\nexport class AjfCheckboxGroupModule {}\n","/**\n * @license\n * Copyright (C) Gnucoop soc. coop.\n *\n * This file is part of the Advanced JSON forms (ajf).\n *\n * Advanced JSON forms (ajf) is free software: you can redistribute it and/or\n * modify it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the License,\n * or (at your option) any later version.\n *\n * Advanced JSON forms (ajf) is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero\n * General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with Advanced JSON forms (ajf).\n * If not, see http://www.gnu.org/licenses/.\n *\n */\n\nexport * from './checkbox-group';\nexport * from './checkbox-group-module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}