{"version":3,"file":"novo-elements-elements-multi-picker.mjs","sources":["../../../projects/novo-elements/src/elements/multi-picker/MultiPicker.ts","../../../projects/novo-elements/src/elements/multi-picker/MultiPicker.module.ts","../../../projects/novo-elements/src/elements/multi-picker/novo-elements-elements-multi-picker.ts"],"sourcesContent":["// NG2\nimport { Component, ElementRef, EventEmitter, forwardRef, Input, OnInit, Output } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\n// Vendor\nimport { ReplaySubject } from 'rxjs';\nimport { NovoLabelService } from 'novo-elements/services';\nimport { Helpers, Key } from 'novo-elements/utils';\n\n// Value accessor for the component (supports ngModel)\nconst CHIPS_VALUE_ACCESSOR = {\n  provide: NG_VALUE_ACCESSOR,\n  useExisting: forwardRef(() => NovoMultiPickerElement),\n  multi: true,\n};\n\ninterface Item {\n  type;\n  label;\n  value;\n}\n\n@Component({\n    selector: 'multi-picker',\n    providers: [CHIPS_VALUE_ACCESSOR],\n    template: `\n    <novo-chip\n      *ngFor=\"let item of _items | async | slice: 0:chipsCount\"\n      [type]=\"item.type\"\n      [class.selected]=\"item == selected\"\n      (removed)=\"removeFromDisplay($event, item)\"\n      (selectionChange)=\"select($event, item)\"\n    >\n      {{ item.label }}\n    </novo-chip>\n    <div *ngIf=\"items.length > chipsCount\">\n      <ul class=\"summary\">\n        <li *ngFor=\"let type of notShown\">+ {{ type.count }} {{ labels.more }} {{ type.type }}</li>\n      </ul>\n    </div>\n    <div class=\"chip-input-container\">\n      <novo-picker\n        clearValueOnSelect=\"true\"\n        [config]=\"source\"\n        [placeholder]=\"placeholder\"\n        (select)=\"clickOption($event)\"\n        (keydown)=\"onKeyDown($event)\"\n        (focus)=\"onFocus($event)\"\n        (blur)=\"onTouched($event)\"\n        [overrideElement]=\"element\"\n      >\n      </novo-picker>\n    </div>\n    <i class=\"bhi-search\" [class.has-value]=\"items.length\"></i>\n    <label class=\"clear-all\" *ngIf=\"items.length\" (click)=\"clearValue()\">{{ labels.clearAll }} <i class=\"bhi-times\"></i></label>\n  `,\n    styleUrls: ['./_MultiPicker.scss'],\n    host: {\n        '[class.with-value]': 'items.length > 0',\n    },\n    standalone: false,\n})\nexport class NovoMultiPickerElement implements OnInit {\n  @Input()\n  source: { options: []; resultsTemplate; selectAllOption: boolean; chipsCount; strictRelationship };\n  @Input()\n  placeholder: any = '';\n  @Input()\n  types: { value; singular; plural; isParentOf; isChildOf }[];\n  @Output()\n  changed: EventEmitter<any> = new EventEmitter();\n  @Output()\n  focus: EventEmitter<any> = new EventEmitter();\n  @Output()\n  blur: EventEmitter<any> = new EventEmitter();\n\n  get value() {\n    return this._value;\n  }\n\n  @Input()\n  set value(selectedItems) {\n    if (selectedItems) {\n      this.types.forEach((x) => (this._value[x.value] = selectedItems[x.value]));\n    } else {\n      this._value = {};\n      this.types.forEach((x) => (this._value[x.value] = []));\n    }\n    this.changed.emit(selectedItems);\n    this.onModelChange(selectedItems);\n  }\n\n  items: Item[] = [];\n  _items = new ReplaySubject<Item[]>(1);\n  options: any;\n  _options: any;\n  selected: any = null;\n  config: any = {};\n  chipsCount: number;\n  selectAllOption: boolean;\n  strictRelationship: boolean;\n  // private data model\n  _value = {};\n  notShown: any = {};\n  // Placeholders for the callbacks\n  model: any;\n  onModelChange: Function = () => {};\n  onModelTouched: Function = () => {};\n\n  constructor(public element: ElementRef, public labels: NovoLabelService) {\n    this.chipsCount = 4;\n  }\n\n  ngOnInit() {\n    this.selectAllOption = this.source.selectAllOption || false;\n    this.chipsCount = this.source.chipsCount || 4;\n    this.strictRelationship = this.source.strictRelationship || false;\n    this.setupOptions();\n  }\n\n  clearValue() {\n    this.types.forEach((type) => this.modifyAllOfType(type.value, 'unselect'));\n    this.items = [];\n    this._items.next(this.items);\n    this.setInitialValue(null);\n    this.onModelChange(this.value);\n  }\n\n  removeFromDisplay(event, item) {\n    this.remove(true, item);\n    this.modifyAffectedParentsOrChildren(false, item);\n  }\n\n  setupOptions() {\n    this.options = this.source.options || [];\n    this._options = [];\n    if (this.options) {\n      this.options.forEach((option) => {\n        const formattedOption = this.setupOptionsByType(option);\n        this._options.push(formattedOption);\n      });\n    }\n    this.source.options = this._options;\n  }\n\n  setupOptionsByType(section) {\n    const formattedSection: any = {\n      type: section.type,\n      label: section.label || section.type,\n    };\n    formattedSection.data = section.data.map((item) => {\n      return this.formatOption(section, item);\n    });\n    if (this.selectAllOption) {\n      const selectAll = this.createSelectAllOption(section);\n      formattedSection.data.splice(0, 0, selectAll);\n    }\n    formattedSection.originalData = formattedSection.data.slice();\n    return formattedSection;\n  }\n\n  formatOption(section, item) {\n    const obj = {\n      value: section.field ? item[section.field] : item.value || item,\n      label: section.format ? Helpers.interpolate(section.format, item) : item.label || String(item.value || item),\n      type: section.type,\n      checked: undefined,\n      isParentOf: section.isParentOf,\n      isChildOf: section.isChildOf,\n    };\n    if (obj.isChildOf) {\n      obj[section.isChildOf] = item[section.isChildOf];\n    }\n    return obj;\n  }\n\n  createSelectAllOption(section) {\n    const selectAll = {\n      value: 'ALL',\n      label: `All ${section.type}`,\n      type: section.type,\n      checked: this.model && this.model.length && this.model.indexOf('ALL') !== -1,\n      isParentOf: section.isParentOf,\n      isChildOf: section.isChildOf,\n    };\n    if (section.isChildOf) {\n      const allParents = section.data.reduce((accum, next) => {\n        return accum.concat(next[section.isChildOf]);\n      }, []);\n      selectAll[section.isChildOf] = allParents;\n    }\n    return selectAll;\n  }\n\n  deselectAll() {\n    this.selected = null;\n  }\n\n  select(event, item) {\n    this.blur.emit(event);\n    this.deselectAll();\n    this.selected = item;\n  }\n\n  onFocus(e) {\n    this.element.nativeElement.classList.add('selected');\n    this.focus.emit(e);\n  }\n\n  clickOption(event) {\n    if (event && !(event instanceof Event)) {\n      if (event.checked === false) {\n        this.remove(null, event);\n      } else {\n        this.add(event);\n      }\n      this.modifyAffectedParentsOrChildren(event.checked, event);\n      // Set focus on the picker\n      const input = this.element.nativeElement.querySelector('novo-picker > input');\n      if (input) {\n        input.focus();\n      }\n    }\n  }\n\n  add(event) {\n    if (event.value === 'ALL') {\n      this.modifyAllOfType(event.type, 'select');\n    } else {\n      this.updateDisplayItems(event, 'add');\n      this.value[event.type].push(event.value);\n      this.updateAllItemState(event.type);\n      this.triggerValueUpdate();\n    }\n    this.updateParentOrChildren(event, 'select');\n    this.select(null, event);\n  }\n\n  updateAllItemState(type) {\n    const allOfType = this.getAllOfType(type);\n    const allOfTypeSelected = this.allItemsSelected(allOfType, type);\n    if (allOfTypeSelected) {\n      this.selectAll(allOfType, type);\n    }\n    return { allOfType, allOfTypeSelected };\n  }\n\n  setIndeterminateState(allOfType, status) {\n    if (!this.selectAllOption) {\n      return;\n    }\n    const allItem = allOfType[0];\n    allItem.indeterminate = status;\n  }\n\n  updateDisplayItems(item, action) {\n    const adding = action === 'add';\n    if (adding) {\n      this.items.push(item);\n    } else {\n      if (this.items.indexOf(item) > -1) {\n        this.items.splice(this.items.indexOf(item), 1);\n      }\n    }\n    this.updateDisplayText(this.items);\n    this._items.next(this.items);\n  }\n\n  updateDisplayText(items) {\n    this.notShown = [];\n    const notShown = items.slice(this.chipsCount);\n    if (notShown.length > 0) {\n      this.types.forEach((type) => {\n        let count;\n        const selectedOfType = notShown.filter((x) => x.type === type.value);\n        if (selectedOfType.length === 1 && selectedOfType[0].value === 'ALL') {\n          count = this.getAllOfType(type.value).length - 1;\n        } else {\n          count = selectedOfType.length;\n        }\n        const displayType = count === 1 ? type.singular : type.plural || type.value;\n        if (count > 0) {\n          this.notShown.push({ type: displayType, count });\n        }\n      });\n    }\n  }\n\n  remove(event, item) {\n    let triggeredByEvent;\n    if (event) {\n      triggeredByEvent = true;\n    }\n    const itemToRemove = item;\n    if (itemToRemove.value === 'ALL') {\n      triggeredByEvent = false;\n      this.modifyAllOfType(itemToRemove.type, 'unselect');\n    } else if (this.allOfTypeSelected(itemToRemove.type)) {\n      this.handleRemoveItemIfAllSelected(itemToRemove);\n    }\n    this.removeItem(item, triggeredByEvent);\n  }\n\n  removeItem(item, triggeredByEvent?: any) {\n    item.checked = false;\n    this.deselectAll();\n    this.removeValue(item);\n    if (item.value !== 'ALL') {\n      this.updateParentOrChildren(item, 'unselect');\n    }\n    if (triggeredByEvent) {\n      this.modifyAffectedParentsOrChildren(false, item);\n    }\n  }\n\n  removeValue(item) {\n    const updatedValues = this.value[item.type].filter((x) => x !== item.value);\n    this.value[item.type] = updatedValues;\n    this.triggerValueUpdate();\n    this.updateDisplayItems(item, 'remove');\n  }\n\n  onKeyDown(event) {\n    if (event.key === Key.Backspace) {\n      if (event.target && event.target.value.length === 0 && this.items.length) {\n        if (event) {\n          event.stopPropagation();\n          event.preventDefault();\n        }\n        if (this.selected) {\n          this.remove(null, this.selected);\n        } else {\n          this.select(event, this.items[this.items.length - 1]);\n        }\n      }\n    }\n  }\n\n  allOfTypeSelected(type) {\n    return this.items.filter((x) => x.type === type && x.value === 'ALL').length > 0;\n  }\n\n  modifyAllOfType(type, action) {\n    const selecting = action === 'select';\n    const allOfType = this.getAllOfType(type);\n    allOfType.forEach((item) => {\n      item.checked = selecting;\n      item.indeterminate = false;\n    });\n    if (selecting) {\n      this.selectAll(allOfType, type);\n    } else {\n      this.items = [...this.items.filter((x) => x.type !== type)];\n      this._items.next(this.items);\n      this.value[type] = [];\n    }\n    if (this.selectAllOption) {\n      this.updateAllParentsOrChildren(allOfType[0], action);\n    }\n    this.triggerValueUpdate();\n  }\n\n  triggerValueUpdate() {\n    const updatedObject = {};\n    this.types.forEach((x) => (updatedObject[x.value] = this.value[x.value]));\n    this.value = updatedObject;\n  }\n\n  selectAll(allOfType, type) {\n    if (!this.selectAllOption) {\n      return;\n    }\n    allOfType[0].checked = true;\n    const values = allOfType.map((i) => {\n      return i.value;\n    });\n    // remove 'ALL' value\n    values.splice(0, 1);\n    this.value[type] = values;\n    const updatedItems = this.items.filter((x) => x.type !== type);\n    this.items = updatedItems;\n    this.updateDisplayItems(allOfType[0], 'add');\n  }\n\n  handleRemoveItemIfAllSelected(item) {\n    if (!this.selectAllOption) {\n      return;\n    }\n    const type = item.type;\n    const allOfType = this.getAllOfType(type);\n    const allItem = allOfType[0];\n    this.removeItem(allItem);\n    allItem.indeterminate = true;\n    const selectedItems = allOfType.filter((i) => i.checked === true);\n    this.items = [...this.items, ...selectedItems];\n    const values = selectedItems.map((i) => {\n      return i.value;\n    });\n    this.value[type] = [...values];\n  }\n\n  handleOutsideClick(event) {\n    // If the elements doesn't contain the target element, it is an outside click\n    if (!this.element.nativeElement.contains(event.target)) {\n      this.blur.emit(event);\n      this.deselectAll();\n    }\n  }\n\n  getAllOfType(type) {\n    return this._options.filter((x) => x.type === type)[0].originalData;\n  }\n\n  updateParentOrChildren(item, action) {\n    if (this.strictRelationship && item.isParentOf) {\n      this.updateChildrenValue(item, action);\n    } else if (item.isChildOf && this.selectAllOption) {\n      this.updateParentValue(item, action);\n    }\n  }\n\n  modifyAffectedParentsOrChildren(selecting, itemChanged) {\n    if (!itemChanged.isChildOf && !itemChanged.isParentOf) {\n      return;\n    }\n    const parent = this.types.filter((x) => !!x.isParentOf)[0];\n    const parentType = parent.value;\n    const allParentType = this.getAllOfType(parentType);\n    const childType = allParentType[0].isParentOf;\n    const allChildren = this.getAllOfType(childType);\n    const allCheckedChildren = allChildren.filter((x) => !!x.checked);\n\n    allParentType.forEach((obj) => {\n      if (obj.value === 'ALL') {\n        return;\n      }\n      const selectedChildrenOfParent = allCheckedChildren.filter((x) => {\n        return x[parentType].filter((y) => y === obj.value).length > 0;\n      });\n\n      if (selecting) {\n        if (obj.checked) {\n          return;\n        }\n        obj.indeterminate = selectedChildrenOfParent.length > 0;\n      } else {\n        const allChildrenOfParent = allChildren.filter((x) => {\n          return x.value !== 'ALL' && x[parentType].filter((y) => y === obj.value).length > 0;\n        });\n        if (selectedChildrenOfParent.length > 0) {\n          if (obj.checked) {\n            if (this.strictRelationship && allChildrenOfParent.length !== selectedChildrenOfParent.length) {\n              obj.indeterminate = true;\n              obj.checked = false;\n              this.removeValue(obj);\n              this.addIndividualChildren(selectedChildrenOfParent);\n            }\n          } else {\n            obj.indeterminate = true;\n          }\n          if (this.strictRelationship && itemChanged.type !== parentType) {\n            if (obj.checked) {\n              obj.checked = false;\n              this.removeValue(obj);\n              this.addIndividualChildren(selectedChildrenOfParent);\n            }\n          }\n        } else {\n          obj.indeterminate = false;\n          if (allChildrenOfParent.length === 0) {\n            // if it has no children and is checked, it should stay checked\n            return;\n          } else if (this.strictRelationship && itemChanged.type !== parentType) {\n            this.remove(null, obj);\n          }\n        }\n      }\n    });\n    if (this.selectAllOption) {\n      this.updateIndeterminateStates(allParentType, allChildren, allCheckedChildren);\n    }\n  }\n\n  updateAllParentsOrChildren(allItem, action) {\n    if (allItem.isParentOf) {\n      this.updateAllChildrenValue(allItem, action);\n    } else if (allItem.isChildOf) {\n      this.updateAllParentValue(allItem, action);\n    }\n  }\n\n  updateAllChildrenValue(item, action) {\n    const selecting = action === 'select';\n    const childType = item.isParentOf;\n    const potentialChildren = this.getAllOfType(childType);\n    if (this.selectAllOption && this.allOfTypeSelected(childType) && !selecting) {\n      this.remove(null, potentialChildren[0]);\n      return;\n    }\n    potentialChildren.forEach((x) => {\n      if (x.value === 'ALL' && !x.checked) {\n        if (selecting) {\n          x.checked = true;\n        }\n        x.indeterminate = selecting;\n      } else {\n        if (x.checked && !selecting) {\n          this.remove(null, x);\n        }\n        x.checked = selecting;\n      }\n    });\n  }\n\n  updateAllParentValue(item, action) {\n    const selecting = action === 'select';\n    const parentType = item.isChildOf;\n    const potentialParents = this.getAllOfType(parentType);\n    potentialParents.forEach((x) => {\n      if (!x.checked) {\n        x.indeterminate = selecting;\n      }\n    });\n  }\n\n  updateIndeterminateStates(allParentType, allChildren, allCheckedChildren) {\n    const allCheckedOrIndeterminateParents = allParentType.filter((x) => (!!x.checked || !!x.indeterminate) && x.value !== 'ALL');\n    const isParentIndeterminate = !!allParentType[0].checked ? false : allCheckedOrIndeterminateParents.length > 0;\n    const isChildIndeterminate = !!allChildren[0].checked ? false : allCheckedChildren.length > 0;\n    this.setIndeterminateState(allParentType, isParentIndeterminate);\n    this.setIndeterminateState(allChildren, isChildIndeterminate);\n  }\n\n  updateChildrenValue(parent, action) {\n    const selecting = action === 'select';\n    const childType = parent.isParentOf;\n    const potentialChildren = this.getAllOfType(childType);\n    potentialChildren.forEach((x) => {\n      if (x.value === 'ALL') {\n        return;\n      }\n      if (x[parent.type].filter((y) => y === parent.value).length > 0) {\n        if (x.checked && !selecting) {\n          x.checked = false;\n          if (this.allOfTypeSelected(childType)) {\n            this.handleRemoveItemIfAllSelected(x);\n          } else {\n            this.removeValue(x);\n          }\n        }\n        x.checked = selecting;\n      }\n    });\n  }\n\n  updateParentValue(child, action) {\n    const allParentType = this.getAllOfType(child.isChildOf);\n    if (allParentType[0].checked && action !== 'select') {\n      this.handleRemoveItemIfAllSelected(allParentType[0]);\n    }\n  }\n\n  addIndividualChildren(children) {\n    let parentAlreadySelected = false;\n    children.forEach((x) => {\n      if (x.isChildOf) {\n        // only add children if their parents are not already selected\n        x[x.isChildOf].forEach((parent) => {\n          if (this.value[x.isChildOf].filter((p) => p === parent).length > 0) {\n            parentAlreadySelected = true;\n          }\n        });\n      }\n      if (this.value[x.type].filter((item) => item === x.value).length === 0 && !parentAlreadySelected) {\n        this.add(x);\n      }\n    });\n  }\n\n  setInitialValue(model): void {\n    this.items = [];\n    this.value = model || {};\n    if (!this.types) {\n      return;\n    }\n    this.types.forEach((typeObj) => {\n      const type = typeObj.value;\n      if (this.value[type]) {\n        let indeterminateIsSet = false;\n        const options = this.updateAllItemState(type);\n        const optionsByType = options.allOfType;\n        const allSelected = options.allOfTypeSelected;\n        this.value[type].forEach((item) => {\n          if (!allSelected && !indeterminateIsSet) {\n            indeterminateIsSet = true;\n            this.setIndeterminateState(optionsByType, true);\n          }\n          const value = optionsByType.filter((x) => x.value === item)[0];\n          value.checked = true;\n          if (!allSelected) {\n            this.updateDisplayItems(value, 'add');\n          }\n          if (this.strictRelationship && value.isParentOf) {\n            this.updateChildrenValue(value, 'select');\n          }\n        });\n        if (typeObj.isChildOf) {\n          this.modifyAffectedParentsOrChildren(true, { value: type, isChildOf: true });\n        }\n      } else {\n        this.value[type] = [];\n      }\n    });\n  }\n\n  allItemsSelected(optionsByType, type) {\n    return this.value[type].length === optionsByType.length - 1;\n  }\n\n  // Set touched on blur\n  onTouched(e) {\n    this.element.nativeElement.classList.remove('selected');\n    this.onModelTouched();\n    this.blur.emit(e);\n  }\n\n  writeValue(model: any): void {\n    this.model = model;\n    this.setInitialValue(model);\n  }\n\n  registerOnChange(fn: Function): void {\n    this.onModelChange = fn;\n  }\n\n  registerOnTouched(fn: Function): void {\n    this.onModelTouched = fn;\n  }\n}\n","// NG2\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n// APP\nimport { NovoChipsModule } from 'novo-elements/elements/chips';\nimport { NovoPickerModule } from 'novo-elements/elements/picker';\nimport { NovoMultiPickerElement } from './MultiPicker';\n\n@NgModule({\n  imports: [CommonModule, FormsModule, NovoPickerModule, NovoChipsModule],\n  declarations: [NovoMultiPickerElement],\n  exports: [NovoMultiPickerElement],\n})\nexport class NovoMultiPickerModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}