UNPKG

novo-elements

Version:

1 lines 42.7 kB
{"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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"}