novo-elements 11.1.0-next.3 → 11.1.0-next.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -51,6 +51,9 @@ class NovoTabbedGroupPickerElement {
51
51
  this.scrollViewportHeight = 351;
52
52
  this.virtualScrollItemSize = 39;
53
53
  this.getSelectedState = (childArray) => {
54
+ if (!Array.isArray(childArray)) {
55
+ return undefined;
56
+ }
54
57
  const numberOfSelectedItems = childArray.filter(({ selected }) => selected).length;
55
58
  if (!numberOfSelectedItems) {
56
59
  return undefined;
@@ -162,9 +165,11 @@ class NovoTabbedGroupPickerElement {
162
165
  };
163
166
  }
164
167
  replaceChildrenWithReferences(parent, sortedData, compareFunction, warnFunction) {
165
- parent.children = parent.children
166
- .map((child) => binarySearch(child, sortedData, compareFunction) || warnFunction(child))
167
- .filter(Boolean); // since map can return undefined, remove undefined elements
168
+ if (Array.isArray(parent?.children)) {
169
+ parent.children = parent.children
170
+ .map((child) => binarySearch(child, sortedData, compareFunction) || warnFunction(child))
171
+ .filter(Boolean); // since map can return undefined, remove undefined elements
172
+ }
168
173
  }
169
174
  makeWarningFunction(parentLabel, childLabel, childValueField) {
170
175
  return (child) => {
@@ -1 +1 @@
1
- {"version":3,"file":"novo-elements-elements-tabbed-group-picker.mjs","sources":["../../../projects/novo-elements/src/elements/tabbed-group-picker/TabbedGroupPicker.ts","../../../projects/novo-elements/src/elements/tabbed-group-picker/TabbedGroupPicker.html","../../../projects/novo-elements/src/elements/tabbed-group-picker/TabbedGroupPicker.module.ts","../../../projects/novo-elements/src/elements/tabbed-group-picker/novo-elements-elements-tabbed-group-picker.ts"],"sourcesContent":["import { CdkScrollable } from '@angular/cdk/scrolling';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Output,\n ViewChild,\n} from '@angular/core';\nimport { BehaviorSubject, Subscription } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\nimport { NovoLabelService } from 'novo-elements/services';\nimport { binarySearch, BooleanInput, Helpers } from 'novo-elements/utils';\nimport { NOVO_OPTION_PARENT_COMPONENT } from 'novo-elements/elements/common';\nimport { NovoDropdownElement } from 'novo-elements/elements/dropdown';\n\nexport type TabbedGroupPickerTab = {\n typeName: string;\n typeLabel: string;\n valueField: string;\n labelField: string;\n scrollOffset?: number;\n icon?: string;\n} & (ParentTab | ChildTab);\n\nexport type ParentTab = {\n childTypeName: string;\n data: Array<ParentOption>;\n};\n\ntype BaseOption = {\n selected?: boolean;\n indeterminate?: boolean;\n} & { [key: string]: any };\n\ntype ParentOption = BaseOption & {\n children: Option[];\n};\n\ntype Option = BaseOption | ParentOption;\n\nexport type ChildTab = {\n data: Array<{ selected?: boolean } & { [key: string]: any }>;\n};\n\nexport type TabbedGroupPickerQuickSelect = {\n label: string;\n selected?: boolean;\n childTypeName?: string;\n children?: (({ selected?: boolean } & { [key: string]: any }) | number)[];\n all?: boolean;\n};\n\nexport type QuickSelectConfig = { label: string; items: TabbedGroupPickerQuickSelect[] };\n\nexport type TabbedGroupPickerButtonConfig = {\n theme: string;\n side: string;\n icon: string;\n label: string;\n size?: string;\n};\n\n@Component({\n selector: 'novo-tabbed-group-picker',\n templateUrl: './TabbedGroupPicker.html',\n styleUrls: ['./TabbedGroupPicker.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [{ provide: NOVO_OPTION_PARENT_COMPONENT, useExisting: NovoTabbedGroupPickerElement }],\n standalone: false\n})\nexport class NovoTabbedGroupPickerElement implements OnDestroy, OnInit {\n @ViewChild('tabbedGroupPickerVirtualScrollViewport')\n private scrollableInstance: CdkScrollable;\n @ViewChild('inputElement')\n private inputElement: ElementRef<HTMLInputElement>;\n @ViewChild('dropdown')\n public dropdown: NovoDropdownElement;\n\n multiple = true;\n\n @Input() buttonConfig: TabbedGroupPickerButtonConfig;\n @Input() tabs: TabbedGroupPickerTab[];\n @Input() quickSelectConfig: QuickSelectConfig;\n @Input() showFooter = false;\n\n // In activation mode, no checkboxes are displayed, and only the selectionActivated event occurs.\n @BooleanInput()\n @Input() selectionEnabled = true;\n\n @Output() activation = new EventEmitter<any>();\n @Output() selectionChange = new EventEmitter<TabbedGroupPickerTab[]>();\n @Output() applyChange: EventEmitter<any> = new EventEmitter<any>();\n @Output() cancelChange: EventEmitter<any> = new EventEmitter<any>();\n\n displayTabs: TabbedGroupPickerTab[];\n displayTabIndex: number = 0;\n\n filterText: BehaviorSubject<string> = new BehaviorSubject('');\n filterTextSubscription: Subscription;\n\n loading = true;\n showClearAll: boolean = false;\n\n appliedState: TabbedGroupPickerTab[];\n\n // Initial height based on 13 px font rendered in chrome. Actual height retrieved onDropdownToggled.\n scrollViewportHeight: number = 351;\n virtualScrollItemSize: number = 39;\n\n constructor(public labelService: NovoLabelService, private ref: ChangeDetectorRef) {}\n\n get displayTab(): TabbedGroupPickerTab {\n return this.displayTabs[this.displayTabIndex];\n }\n set displayTab(tab: TabbedGroupPickerTab) {\n this.displayTabIndex = this.tabs.map(({ typeName }) => typeName).indexOf(tab.typeName);\n }\n\n get minBufferPx() {\n return this.scrollViewportHeight; // render at least 2x the number of items visible (viewport + min buffer)\n }\n\n get maxBufferPx() {\n return 2 * this.scrollViewportHeight; // render at most 3x the number of items visible (viewport + max buffer)\n }\n\n ngOnInit(): void {\n this.loadValues();\n this.loading = false;\n this.filterTextSubscription = this.filterText.pipe(debounceTime(300)).subscribe({\n next: this.filter,\n });\n }\n\n ngOnDestroy(): void {\n if (this.filterTextSubscription) {\n this.filterTextSubscription.unsubscribe();\n }\n }\n\n loadValues() {\n this.setupDisplayData();\n this.createChildrenReferences();\n this.initializeDescendantSelection();\n this.updateParentsAndQuickSelect();\n this.updateClearAll();\n }\n\n changeTab(tab: TabbedGroupPickerTab) {\n this.displayTab = tab;\n if (this.scrollableInstance) {\n this.scrollableInstance.scrollTo({ behavior: 'auto', top: 0 });\n }\n }\n\n getPixelHeight(element: HTMLElement) {\n return Number(getComputedStyle(element, '').height.match(/(\\d+(\\.\\d+)?)px$/)[1]);\n }\n\n setupDisplayData(): void {\n // shallow copy here so that reassigning displayTabs[i].data doesn't mutate tabs[i].data\n // but both data values point to the same items\n this.displayTabs = this.tabs.map((tab) => ({ ...tab }));\n this.displayTab = this.tabs[0];\n this.updateAppliedState();\n }\n\n // Replace each parent's child object with a reference to the child to avoid\n // a child lookup for selected status; linking references allows M x N\n // time complexity instead of M x N^2\n createChildrenReferences(): void {\n this.tabs.forEach((tab) => {\n // would rather filter but TypeScript still wants a type narrowing here\n if ('childTypeName' in tab) {\n const childTab = this.tabs.find(({ typeName }) => typeName === tab.childTypeName);\n const compareFunction = this.makeCompareFunction(childTab.valueField);\n const warnFunction = this.makeWarningFunction(tab.typeName, childTab.typeName, childTab.valueField);\n const sortedChildren = childTab.data.slice().sort(compareFunction);\n\n tab.data\n .filter(({ children }) => children?.length)\n .forEach((parent: { children?: any[] }) =>\n this.replaceChildrenWithReferences(parent as ParentOption, sortedChildren, compareFunction, warnFunction),\n );\n }\n });\n if (this.quickSelectConfig) {\n this.quickSelectConfig.items\n .filter((parent) => 'all' in parent)\n .forEach((parent) => {\n parent.children = this.tabs.find(({ typeName }) => parent.childTypeName === typeName).data;\n });\n\n this.quickSelectConfig.items\n .filter((parent) => !('all' in parent))\n .forEach((parent) => {\n const childTab = this.tabs.find(({ typeName }) => typeName === parent.childTypeName);\n const compareFunction = this.makeCompareFunction(childTab.valueField);\n const warnFunction = this.makeWarningFunction(parent.label, childTab.typeName, childTab.valueField);\n const sortedChildren = childTab.data.slice().sort(compareFunction);\n\n this.replaceChildrenWithReferences(parent as ParentOption, sortedChildren, compareFunction, warnFunction);\n });\n }\n }\n\n makeCompareFunction<T>(key: string): (a: T | { [key: string]: T }, b: T | { [key: string]: T }) => 1 | -1 | 0 | undefined {\n return (a: T | { [key: string]: T }, b: T | { [key: string]: T }) => {\n const aValue: T = (a && a[key]) || a;\n const bValue: T = (b && b[key]) || b;\n\n if (aValue < bValue) {\n return -1;\n } else if (aValue > bValue) {\n return 1;\n } else if (aValue === bValue) {\n return 0;\n } else {\n return undefined;\n }\n };\n }\n\n replaceChildrenWithReferences(\n parent: { children: any[] },\n sortedData: ChildTab['data'],\n compareFunction: (a, b) => 1 | -1 | 0,\n warnFunction: (child) => void,\n ): void {\n parent.children = parent.children\n .map((child) => binarySearch(child, sortedData, compareFunction) || warnFunction(child))\n .filter(Boolean); // since map can return undefined, remove undefined elements\n }\n\n makeWarningFunction(parentLabel: string, childLabel: string, childValueField): (child) => void {\n return (child) => {\n const childValue = child[childValueField] || child;\n console.warn(`No ${childLabel} found with value ${childValue} for parent ${parentLabel}`);\n };\n }\n\n onDropdownToggle(event) {\n this.filterText.next('');\n this.inputElement.nativeElement?.focus();\n if (event) {\n this.scrollViewportHeight = this.getPixelHeight(this.scrollableInstance.getElementRef().nativeElement);\n this.virtualScrollItemSize = this.getPixelHeight(this.scrollableInstance.getElementRef().nativeElement.querySelector('novo-option'));\n // Emit a fake scroll event so the rendered items update\n this.scrollableInstance.getElementRef().nativeElement.dispatchEvent(new Event('scroll'));\n }\n }\n\n activateItem(item: any, tab?: TabbedGroupPickerTab): void {\n if (this.selectionEnabled) {\n item.selected = !item.selected;\n this.onItemToggled(item);\n }\n this.activation.emit({ ...item, scope: tab?.typeName || 'quickselect' });\n }\n\n onItemToggled(item: Option) {\n if (Array.isArray(item.children)) {\n this.updateDescendants(item.selected, item.children);\n }\n this.updateParentsAndQuickSelect();\n this.updateClearAll(item.selected);\n this.emitSelectedValues();\n this.ref.markForCheck();\n }\n\n initializeDescendantSelection() {\n this.tabs.forEach((tab) => {\n if ('childTypeName' in tab && tab.data?.length) {\n tab.data.forEach((parent) => {\n if (parent.selected && parent.children?.length) {\n parent.children.forEach((child) => {\n child.selected = true;\n });\n }\n });\n }\n });\n }\n\n updateDescendants(parentIsSelected: boolean, children: Option[]): void {\n children.forEach((item) => {\n if (parentIsSelected) {\n item.selected = true;\n } else {\n delete item.selected;\n }\n if (Array.isArray(item.children)) {\n this.updateDescendants(item.selected, item.children);\n }\n });\n }\n\n updateClearAll(itemWasJustSelected?: boolean) {\n if (!this.selectionEnabled) {\n this.showClearAll = false;\n } else {\n this.showClearAll = itemWasJustSelected\n ? true\n : this.tabs.some((tab) => {\n if ((tab as ParentTab).childTypeName) {\n return tab.data.some(({ selected, indeterminate }) => selected || indeterminate);\n } else {\n return tab.data.some(({ selected }) => selected);\n }\n });\n }\n }\n\n updateParentsAndQuickSelect(): void {\n // mutate here to avoid dereferencing the objects in displayTabs\n this.tabs\n .filter((tab) => 'childTypeName' in tab && !!tab.childTypeName)\n .forEach((tab) => {\n const parents = tab.data.filter(({ children }: { children?: any[] }) => children?.length);\n\n parents.forEach((parent: ParentOption) => {\n ['indeterminate', 'selected'].forEach((selectedStateOption) => delete parent[selectedStateOption]);\n\n const selectedState = this.getSelectedState(parent.children);\n if (selectedState) {\n parent[selectedState] = true;\n }\n });\n });\n\n if (this.quickSelectConfig) {\n this.quickSelectConfig.items.forEach((quickSelect) => {\n delete quickSelect.selected;\n const selectedState = this.getSelectedState(quickSelect.children as (Option)[]);\n if (selectedState) {\n quickSelect[selectedState] = true;\n }\n });\n }\n }\n\n getSelectedState = (childArray: Option[]): 'selected' | 'indeterminate' | undefined => {\n const numberOfSelectedItems = childArray.filter(({ selected }) => selected).length;\n if (!numberOfSelectedItems) {\n return undefined;\n }\n return numberOfSelectedItems === childArray.length ? 'selected' : 'indeterminate';\n };\n\n getSelectedValues(): TabbedGroupPickerTab[] {\n return this.tabs.map((tab) => ({\n ...tab,\n data: tab.data.filter(({ selected }) => selected),\n }));\n }\n\n emitSelectedValues() {\n this.selectionChange.emit(this.getSelectedValues());\n }\n\n updateAppliedState() {\n this.appliedState = Helpers.deepClone(this.displayTabs);\n }\n\n apply() {\n this.updateAppliedState();\n this.applyChange.emit(this.getSelectedValues());\n this.dropdown.closePanel();\n }\n\n cancel() {\n this.revertState();\n this.cancelChange.emit(this.tabs);\n this.ref.markForCheck();\n this.dropdown.closePanel();\n }\n\n revertState() {\n this.tabs = Helpers.deepClone(this.appliedState);\n this.loadValues();\n }\n\n deselectEverything(event) {\n Helpers.swallowEvent(event);\n this.showClearAll = false;\n if (this.quickSelectConfig) {\n this.quickSelectConfig.items.forEach((quickSelect) => {\n delete quickSelect.selected;\n });\n }\n this.tabs.forEach((tab) => {\n if ((tab as ParentTab).childTypeName) {\n tab.data.forEach((item) => {\n delete item.selected;\n delete item.indeterminate;\n item.children.forEach((child) => delete child.selected);\n });\n } else {\n (tab as ChildTab).data.forEach((item) => delete item.selected);\n }\n });\n this.emitSelectedValues();\n this.ref.markForCheck();\n }\n\n onClearFilter(event) {\n Helpers.swallowEvent(event);\n this.filterText.next('');\n }\n\n onFilter(event: { target: { value: string } }) {\n this.filterText.next(event.target.value);\n }\n\n filter = (searchTerm: string) => {\n this.displayTabs.forEach(\n (displayTab, i) =>\n (displayTab.data = this.tabs[i].data.filter((item) =>\n item[displayTab.labelField].toLowerCase().includes(searchTerm.toLowerCase()) ||\n item[displayTab.valueField]?.toString().toLowerCase().includes(searchTerm.toLowerCase()),\n )),\n );\n this.ref.markForCheck();\n };\n}\n","<novo-dropdown (toggled)=\"onDropdownToggle($event)\" multiple #dropdown>\n <novo-button\n class=\"tabbed-group-picker-button\"\n [theme]=\"buttonConfig.theme\"\n [side]=\"buttonConfig.side\"\n [size]=\"buttonConfig.size\"\n [icon]=\"buttonConfig.icon\"\n [loading]=\"loading\">\n <ng-content></ng-content>\n <div class=\"tabbed-group-picker-button-label\">{{ buttonConfig.label }}</div>\n </novo-button>\n <div class=\"tabbed-group-picker-search\" data-automation-id=\"tabbed-group-picker-search\" (keydown)=\"dropdown._handleKeydown($event)\">\n <input #inputElement type=\"text\" [placeholder]=\"labelService.search\" [value]=\"filterText | async\" (input)=\"onFilter($event)\" />\n <i class=\"bhi-search\" *ngIf=\"!(filterText | async)\"></i>\n <i class=\"bhi-times\" *ngIf=\"(filterText | async)\" (click)=\"onClearFilter($event)\" (keydown.space)=\"onClearFilter($event)\"></i>\n </div>\n <div class=\"tabbed-group-picker-column-container\" (keydown)=\"dropdown._handleKeydown($event)\">\n <div class=\"tabbed-group-picker-column left\">\n <novo-nav theme=\"white\" direction=\"vertical\">\n <novo-tab *ngFor=\"let tab of displayTabs\" [attr.data-automation-id]=\"tab.typeName\"\n (activeChange)=\"changeTab(tab)\">\n <span>{{ tab.typeLabel }} ({{ tab.data.length }})</span><i class=\"bhi-next\"></i>\n </novo-tab>\n </novo-nav>\n <novo-button *ngIf=\"showClearAll && !showFooter\" class=\"clear-all-button\" theme=\"dialogue\" icon=\"times\" side=\"right\"\n color=\"grapefruit\" (click)=\"deselectEverything($event)\" (keydown.space)=\"deselectEverything($event)\">{{ labelService.clear }}</novo-button>\n </div>\n <div class=\"tabbed-group-picker-column right\">\n <div class=\"quick-select\" *ngIf=\"quickSelectConfig && !(filterText | async)\">\n <novo-optgroup class=\"quick-select-list\" [label]=\"quickSelectConfig.label\">\n <novo-option\n class=\"quick-select-item\"\n *ngFor=\"let quickSelect of quickSelectConfig.items\"\n [attr.data-automation-id]=\"quickSelect.label\"\n [allowSelection]=\"selectionEnabled\"\n [selected]=\"quickSelect.selected\"\n (click)=\"activateItem(quickSelect)\"\n (keydown.space)=\"activateItem(quickSelect)\"\n novoInert>\n {{quickSelect.label}}\n </novo-option>\n </novo-optgroup>\n </div>\n <novo-optgroup *ngIf=\"displayTab.data.length\">\n <cdk-virtual-scroll-viewport\n [itemSize]=\"virtualScrollItemSize\"\n [maxBufferPx]=\"maxBufferPx\"\n [minBufferPx]=\"minBufferPx\"\n #tabbedGroupPickerVirtualScrollViewport>\n <novo-option\n *cdkVirtualFor=\"let item of displayTab.data\"\n [attr.data-automation-id]=\"item[displayTab.labelField]\"\n [attr.data-automation-value]=\"item[displayTab.valueField]\"\n [allowSelection]=\"selectionEnabled\"\n [selected]=\"item.selected\"\n (click)=\"activateItem(item, displayTab)\"\n (keydown.space)=\"activateItem(item, displayTab)\"\n novoInert>\n {{item[displayTab.labelField]}}\n </novo-option>\n </cdk-virtual-scroll-viewport>\n </novo-optgroup>\n <div class=\"tabbed-group-picker-empty-item\" *ngIf=\"!displayTab.data.length && (filterText | async)\">\n <i class=\"{{ displayTab.icon || 'bhi-search' }}\"></i>\n <div class=\"empty-item-main-message\">{{ labelService.tabbedGroupPickerEmpty }}</div>\n <div class=\"empty-item-sub-message\">{{ labelService.tabbedGroupClearSuggestion(displayTab.typeLabel) }}\n </div>\n </div>\n </div>\n </div>\n <div class=\"footer\" *ngIf=\"showFooter\">\n <div class=\"save-cancel-button-container\">\n <novo-button\n class=\"clear-all-button\"\n *ngIf=\"showClearAll\"\n theme=\"dialogue\"\n icon=\"times\"\n side=\"right\"\n color=\"grapefruit\"\n (click)=\"deselectEverything($event)\">{{ labelService.clear }}</novo-button>\n </div>\n <div class=\"save-cancel-button-container\">\n <novo-button\n class=\"cancel-button\"\n marginRight=\"1rem\"\n theme=\"dialogue\"\n (click)=\"cancel()\">{{ labelService.cancel }}</novo-button>\n <novo-button\n class=\"save-button\"\n theme=\"primary\"\n color=\"primary\"\n (click)=\"apply()\">{{ labelService.apply }}</novo-button>\n </div>\n </div>\n</novo-dropdown>","// NG2\nimport { ScrollingModule } from '@angular/cdk/scrolling';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n// APP\nimport { NovoLabelService } from 'novo-elements/services';\nimport { NovoButtonModule } from 'novo-elements/elements/button';\nimport { NovoCheckboxModule } from 'novo-elements/elements/checkbox';\nimport { NovoOptionModule } from 'novo-elements/elements/common';\nimport { NovoDropdownModule } from 'novo-elements/elements/dropdown';\nimport { NovoFormExtrasModule } from 'novo-elements/elements/form';\nimport { NovoListModule } from 'novo-elements/elements/list';\nimport { NovoTabModule } from 'novo-elements/elements/tabs';\nimport { NovoTabbedGroupPickerElement } from './TabbedGroupPicker';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n ScrollingModule,\n NovoTabModule,\n NovoListModule,\n NovoFormExtrasModule,\n NovoButtonModule,\n NovoDropdownModule,\n NovoOptionModule,\n NovoCheckboxModule,\n ],\n providers: [NovoLabelService],\n declarations: [NovoTabbedGroupPickerElement],\n exports: [NovoTabbedGroupPickerElement],\n})\nexport class NovoTabbedGroupPickerModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"novo-elements-elements-tabbed-group-picker.mjs","sources":["../../../projects/novo-elements/src/elements/tabbed-group-picker/TabbedGroupPicker.ts","../../../projects/novo-elements/src/elements/tabbed-group-picker/TabbedGroupPicker.html","../../../projects/novo-elements/src/elements/tabbed-group-picker/TabbedGroupPicker.module.ts","../../../projects/novo-elements/src/elements/tabbed-group-picker/novo-elements-elements-tabbed-group-picker.ts"],"sourcesContent":["import { CdkScrollable } from '@angular/cdk/scrolling';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Output,\n ViewChild,\n} from '@angular/core';\nimport { BehaviorSubject, Subscription } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\nimport { NovoLabelService } from 'novo-elements/services';\nimport { binarySearch, BooleanInput, Helpers } from 'novo-elements/utils';\nimport { NOVO_OPTION_PARENT_COMPONENT } from 'novo-elements/elements/common';\nimport { NovoDropdownElement } from 'novo-elements/elements/dropdown';\n\nexport type TabbedGroupPickerTab = {\n typeName: string;\n typeLabel: string;\n valueField: string;\n labelField: string;\n scrollOffset?: number;\n icon?: string;\n} & (ParentTab | ChildTab);\n\nexport type ParentTab = {\n childTypeName: string;\n data: Array<ParentOption>;\n};\n\ntype BaseOption = {\n selected?: boolean;\n indeterminate?: boolean;\n} & { [key: string]: any };\n\ntype ParentOption = BaseOption & {\n children: Option[];\n};\n\ntype Option = BaseOption | ParentOption;\n\nexport type ChildTab = {\n data: Array<{ selected?: boolean } & { [key: string]: any }>;\n};\n\nexport type TabbedGroupPickerQuickSelect = {\n label: string;\n selected?: boolean;\n childTypeName?: string;\n children?: (({ selected?: boolean } & { [key: string]: any }) | number)[];\n all?: boolean;\n};\n\nexport type QuickSelectConfig = { label: string; items: TabbedGroupPickerQuickSelect[] };\n\nexport type TabbedGroupPickerButtonConfig = {\n theme: string;\n side: string;\n icon: string;\n label: string;\n size?: string;\n};\n\n@Component({\n selector: 'novo-tabbed-group-picker',\n templateUrl: './TabbedGroupPicker.html',\n styleUrls: ['./TabbedGroupPicker.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [{ provide: NOVO_OPTION_PARENT_COMPONENT, useExisting: NovoTabbedGroupPickerElement }],\n standalone: false\n})\nexport class NovoTabbedGroupPickerElement implements OnDestroy, OnInit {\n @ViewChild('tabbedGroupPickerVirtualScrollViewport')\n private scrollableInstance: CdkScrollable;\n @ViewChild('inputElement')\n private inputElement: ElementRef<HTMLInputElement>;\n @ViewChild('dropdown')\n public dropdown: NovoDropdownElement;\n\n multiple = true;\n\n @Input() buttonConfig: TabbedGroupPickerButtonConfig;\n @Input() tabs: TabbedGroupPickerTab[];\n @Input() quickSelectConfig: QuickSelectConfig;\n @Input() showFooter = false;\n\n // In activation mode, no checkboxes are displayed, and only the selectionActivated event occurs.\n @BooleanInput()\n @Input() selectionEnabled = true;\n\n @Output() activation = new EventEmitter<any>();\n @Output() selectionChange = new EventEmitter<TabbedGroupPickerTab[]>();\n @Output() applyChange: EventEmitter<any> = new EventEmitter<any>();\n @Output() cancelChange: EventEmitter<any> = new EventEmitter<any>();\n\n displayTabs: TabbedGroupPickerTab[];\n displayTabIndex: number = 0;\n\n filterText: BehaviorSubject<string> = new BehaviorSubject('');\n filterTextSubscription: Subscription;\n\n loading = true;\n showClearAll: boolean = false;\n\n appliedState: TabbedGroupPickerTab[];\n\n // Initial height based on 13 px font rendered in chrome. Actual height retrieved onDropdownToggled.\n scrollViewportHeight: number = 351;\n virtualScrollItemSize: number = 39;\n\n constructor(public labelService: NovoLabelService, private ref: ChangeDetectorRef) {}\n\n get displayTab(): TabbedGroupPickerTab {\n return this.displayTabs[this.displayTabIndex];\n }\n set displayTab(tab: TabbedGroupPickerTab) {\n this.displayTabIndex = this.tabs.map(({ typeName }) => typeName).indexOf(tab.typeName);\n }\n\n get minBufferPx() {\n return this.scrollViewportHeight; // render at least 2x the number of items visible (viewport + min buffer)\n }\n\n get maxBufferPx() {\n return 2 * this.scrollViewportHeight; // render at most 3x the number of items visible (viewport + max buffer)\n }\n\n ngOnInit(): void {\n this.loadValues();\n this.loading = false;\n this.filterTextSubscription = this.filterText.pipe(debounceTime(300)).subscribe({\n next: this.filter,\n });\n }\n\n ngOnDestroy(): void {\n if (this.filterTextSubscription) {\n this.filterTextSubscription.unsubscribe();\n }\n }\n\n loadValues() {\n this.setupDisplayData();\n this.createChildrenReferences();\n this.initializeDescendantSelection();\n this.updateParentsAndQuickSelect();\n this.updateClearAll();\n }\n\n changeTab(tab: TabbedGroupPickerTab) {\n this.displayTab = tab;\n if (this.scrollableInstance) {\n this.scrollableInstance.scrollTo({ behavior: 'auto', top: 0 });\n }\n }\n\n getPixelHeight(element: HTMLElement) {\n return Number(getComputedStyle(element, '').height.match(/(\\d+(\\.\\d+)?)px$/)[1]);\n }\n\n setupDisplayData(): void {\n // shallow copy here so that reassigning displayTabs[i].data doesn't mutate tabs[i].data\n // but both data values point to the same items\n this.displayTabs = this.tabs.map((tab) => ({ ...tab }));\n this.displayTab = this.tabs[0];\n this.updateAppliedState();\n }\n\n // Replace each parent's child object with a reference to the child to avoid\n // a child lookup for selected status; linking references allows M x N\n // time complexity instead of M x N^2\n createChildrenReferences(): void {\n this.tabs.forEach((tab) => {\n // would rather filter but TypeScript still wants a type narrowing here\n if ('childTypeName' in tab) {\n const childTab = this.tabs.find(({ typeName }) => typeName === tab.childTypeName);\n const compareFunction = this.makeCompareFunction(childTab.valueField);\n const warnFunction = this.makeWarningFunction(tab.typeName, childTab.typeName, childTab.valueField);\n const sortedChildren = childTab.data.slice().sort(compareFunction);\n\n tab.data\n .filter(({ children }) => children?.length)\n .forEach((parent: { children?: any[] }) =>\n this.replaceChildrenWithReferences(parent as ParentOption, sortedChildren, compareFunction, warnFunction),\n );\n }\n });\n if (this.quickSelectConfig) {\n this.quickSelectConfig.items\n .filter((parent) => 'all' in parent)\n .forEach((parent) => {\n parent.children = this.tabs.find(({ typeName }) => parent.childTypeName === typeName).data;\n });\n\n this.quickSelectConfig.items\n .filter((parent) => !('all' in parent))\n .forEach((parent) => {\n const childTab = this.tabs.find(({ typeName }) => typeName === parent.childTypeName);\n const compareFunction = this.makeCompareFunction(childTab.valueField);\n const warnFunction = this.makeWarningFunction(parent.label, childTab.typeName, childTab.valueField);\n const sortedChildren = childTab.data.slice().sort(compareFunction);\n\n this.replaceChildrenWithReferences(parent as ParentOption, sortedChildren, compareFunction, warnFunction);\n });\n }\n }\n\n makeCompareFunction<T>(key: string): (a: T | { [key: string]: T }, b: T | { [key: string]: T }) => 1 | -1 | 0 | undefined {\n return (a: T | { [key: string]: T }, b: T | { [key: string]: T }) => {\n const aValue: T = (a && a[key]) || a;\n const bValue: T = (b && b[key]) || b;\n\n if (aValue < bValue) {\n return -1;\n } else if (aValue > bValue) {\n return 1;\n } else if (aValue === bValue) {\n return 0;\n } else {\n return undefined;\n }\n };\n }\n\n replaceChildrenWithReferences(\n parent: { children: any[] },\n sortedData: ChildTab['data'],\n compareFunction: (a, b) => 1 | -1 | 0,\n warnFunction: (child) => void,\n ): void {\n if (Array.isArray(parent?.children)) {\n parent.children = parent.children\n .map((child) => binarySearch(child, sortedData, compareFunction) || warnFunction(child))\n .filter(Boolean); // since map can return undefined, remove undefined elements\n }\n }\n\n makeWarningFunction(parentLabel: string, childLabel: string, childValueField): (child) => void {\n return (child) => {\n const childValue = child[childValueField] || child;\n console.warn(`No ${childLabel} found with value ${childValue} for parent ${parentLabel}`);\n };\n }\n\n onDropdownToggle(event) {\n this.filterText.next('');\n this.inputElement.nativeElement?.focus();\n if (event) {\n this.scrollViewportHeight = this.getPixelHeight(this.scrollableInstance.getElementRef().nativeElement);\n this.virtualScrollItemSize = this.getPixelHeight(this.scrollableInstance.getElementRef().nativeElement.querySelector('novo-option'));\n // Emit a fake scroll event so the rendered items update\n this.scrollableInstance.getElementRef().nativeElement.dispatchEvent(new Event('scroll'));\n }\n }\n\n activateItem(item: any, tab?: TabbedGroupPickerTab): void {\n if (this.selectionEnabled) {\n item.selected = !item.selected;\n this.onItemToggled(item);\n }\n this.activation.emit({ ...item, scope: tab?.typeName || 'quickselect' });\n }\n\n onItemToggled(item: Option) {\n if (Array.isArray(item.children)) {\n this.updateDescendants(item.selected, item.children);\n }\n this.updateParentsAndQuickSelect();\n this.updateClearAll(item.selected);\n this.emitSelectedValues();\n this.ref.markForCheck();\n }\n\n initializeDescendantSelection() {\n this.tabs.forEach((tab) => {\n if ('childTypeName' in tab && tab.data?.length) {\n tab.data.forEach((parent) => {\n if (parent.selected && parent.children?.length) {\n parent.children.forEach((child) => {\n child.selected = true;\n });\n }\n });\n }\n });\n }\n\n updateDescendants(parentIsSelected: boolean, children: Option[]): void {\n children.forEach((item) => {\n if (parentIsSelected) {\n item.selected = true;\n } else {\n delete item.selected;\n }\n if (Array.isArray(item.children)) {\n this.updateDescendants(item.selected, item.children);\n }\n });\n }\n\n updateClearAll(itemWasJustSelected?: boolean) {\n if (!this.selectionEnabled) {\n this.showClearAll = false;\n } else {\n this.showClearAll = itemWasJustSelected\n ? true\n : this.tabs.some((tab) => {\n if ((tab as ParentTab).childTypeName) {\n return tab.data.some(({ selected, indeterminate }) => selected || indeterminate);\n } else {\n return tab.data.some(({ selected }) => selected);\n }\n });\n }\n }\n\n updateParentsAndQuickSelect(): void {\n // mutate here to avoid dereferencing the objects in displayTabs\n this.tabs\n .filter((tab) => 'childTypeName' in tab && !!tab.childTypeName)\n .forEach((tab) => {\n const parents = tab.data.filter(({ children }: { children?: any[] }) => children?.length);\n\n parents.forEach((parent: ParentOption) => {\n ['indeterminate', 'selected'].forEach((selectedStateOption) => delete parent[selectedStateOption]);\n\n const selectedState = this.getSelectedState(parent.children);\n if (selectedState) {\n parent[selectedState] = true;\n }\n });\n });\n\n if (this.quickSelectConfig) {\n this.quickSelectConfig.items.forEach((quickSelect) => {\n delete quickSelect.selected;\n const selectedState = this.getSelectedState(quickSelect.children as (Option)[]);\n if (selectedState) {\n quickSelect[selectedState] = true;\n }\n });\n }\n }\n\n getSelectedState = (childArray: Option[]): 'selected' | 'indeterminate' | undefined => {\n if (!Array.isArray(childArray)) {\n return undefined;\n }\n const numberOfSelectedItems = childArray.filter(({ selected }) => selected).length;\n if (!numberOfSelectedItems) {\n return undefined;\n }\n return numberOfSelectedItems === childArray.length ? 'selected' : 'indeterminate';\n };\n\n getSelectedValues(): TabbedGroupPickerTab[] {\n return this.tabs.map((tab) => ({\n ...tab,\n data: tab.data.filter(({ selected }) => selected),\n }));\n }\n\n emitSelectedValues() {\n this.selectionChange.emit(this.getSelectedValues());\n }\n\n updateAppliedState() {\n this.appliedState = Helpers.deepClone(this.displayTabs);\n }\n\n apply() {\n this.updateAppliedState();\n this.applyChange.emit(this.getSelectedValues());\n this.dropdown.closePanel();\n }\n\n cancel() {\n this.revertState();\n this.cancelChange.emit(this.tabs);\n this.ref.markForCheck();\n this.dropdown.closePanel();\n }\n\n revertState() {\n this.tabs = Helpers.deepClone(this.appliedState);\n this.loadValues();\n }\n\n deselectEverything(event) {\n Helpers.swallowEvent(event);\n this.showClearAll = false;\n if (this.quickSelectConfig) {\n this.quickSelectConfig.items.forEach((quickSelect) => {\n delete quickSelect.selected;\n });\n }\n this.tabs.forEach((tab) => {\n if ((tab as ParentTab).childTypeName) {\n tab.data.forEach((item) => {\n delete item.selected;\n delete item.indeterminate;\n item.children.forEach((child) => delete child.selected);\n });\n } else {\n (tab as ChildTab).data.forEach((item) => delete item.selected);\n }\n });\n this.emitSelectedValues();\n this.ref.markForCheck();\n }\n\n onClearFilter(event) {\n Helpers.swallowEvent(event);\n this.filterText.next('');\n }\n\n onFilter(event: { target: { value: string } }) {\n this.filterText.next(event.target.value);\n }\n\n filter = (searchTerm: string) => {\n this.displayTabs.forEach(\n (displayTab, i) =>\n (displayTab.data = this.tabs[i].data.filter((item) =>\n item[displayTab.labelField].toLowerCase().includes(searchTerm.toLowerCase()) ||\n item[displayTab.valueField]?.toString().toLowerCase().includes(searchTerm.toLowerCase()),\n )),\n );\n this.ref.markForCheck();\n };\n}\n","<novo-dropdown (toggled)=\"onDropdownToggle($event)\" multiple #dropdown>\n <novo-button\n class=\"tabbed-group-picker-button\"\n [theme]=\"buttonConfig.theme\"\n [side]=\"buttonConfig.side\"\n [size]=\"buttonConfig.size\"\n [icon]=\"buttonConfig.icon\"\n [loading]=\"loading\">\n <ng-content></ng-content>\n <div class=\"tabbed-group-picker-button-label\">{{ buttonConfig.label }}</div>\n </novo-button>\n <div class=\"tabbed-group-picker-search\" data-automation-id=\"tabbed-group-picker-search\" (keydown)=\"dropdown._handleKeydown($event)\">\n <input #inputElement type=\"text\" [placeholder]=\"labelService.search\" [value]=\"filterText | async\" (input)=\"onFilter($event)\" />\n <i class=\"bhi-search\" *ngIf=\"!(filterText | async)\"></i>\n <i class=\"bhi-times\" *ngIf=\"(filterText | async)\" (click)=\"onClearFilter($event)\" (keydown.space)=\"onClearFilter($event)\"></i>\n </div>\n <div class=\"tabbed-group-picker-column-container\" (keydown)=\"dropdown._handleKeydown($event)\">\n <div class=\"tabbed-group-picker-column left\">\n <novo-nav theme=\"white\" direction=\"vertical\">\n <novo-tab *ngFor=\"let tab of displayTabs\" [attr.data-automation-id]=\"tab.typeName\"\n (activeChange)=\"changeTab(tab)\">\n <span>{{ tab.typeLabel }} ({{ tab.data.length }})</span><i class=\"bhi-next\"></i>\n </novo-tab>\n </novo-nav>\n <novo-button *ngIf=\"showClearAll && !showFooter\" class=\"clear-all-button\" theme=\"dialogue\" icon=\"times\" side=\"right\"\n color=\"grapefruit\" (click)=\"deselectEverything($event)\" (keydown.space)=\"deselectEverything($event)\">{{ labelService.clear }}</novo-button>\n </div>\n <div class=\"tabbed-group-picker-column right\">\n <div class=\"quick-select\" *ngIf=\"quickSelectConfig && !(filterText | async)\">\n <novo-optgroup class=\"quick-select-list\" [label]=\"quickSelectConfig.label\">\n <novo-option\n class=\"quick-select-item\"\n *ngFor=\"let quickSelect of quickSelectConfig.items\"\n [attr.data-automation-id]=\"quickSelect.label\"\n [allowSelection]=\"selectionEnabled\"\n [selected]=\"quickSelect.selected\"\n (click)=\"activateItem(quickSelect)\"\n (keydown.space)=\"activateItem(quickSelect)\"\n novoInert>\n {{quickSelect.label}}\n </novo-option>\n </novo-optgroup>\n </div>\n <novo-optgroup *ngIf=\"displayTab.data.length\">\n <cdk-virtual-scroll-viewport\n [itemSize]=\"virtualScrollItemSize\"\n [maxBufferPx]=\"maxBufferPx\"\n [minBufferPx]=\"minBufferPx\"\n #tabbedGroupPickerVirtualScrollViewport>\n <novo-option\n *cdkVirtualFor=\"let item of displayTab.data\"\n [attr.data-automation-id]=\"item[displayTab.labelField]\"\n [attr.data-automation-value]=\"item[displayTab.valueField]\"\n [allowSelection]=\"selectionEnabled\"\n [selected]=\"item.selected\"\n (click)=\"activateItem(item, displayTab)\"\n (keydown.space)=\"activateItem(item, displayTab)\"\n novoInert>\n {{item[displayTab.labelField]}}\n </novo-option>\n </cdk-virtual-scroll-viewport>\n </novo-optgroup>\n <div class=\"tabbed-group-picker-empty-item\" *ngIf=\"!displayTab.data.length && (filterText | async)\">\n <i class=\"{{ displayTab.icon || 'bhi-search' }}\"></i>\n <div class=\"empty-item-main-message\">{{ labelService.tabbedGroupPickerEmpty }}</div>\n <div class=\"empty-item-sub-message\">{{ labelService.tabbedGroupClearSuggestion(displayTab.typeLabel) }}\n </div>\n </div>\n </div>\n </div>\n <div class=\"footer\" *ngIf=\"showFooter\">\n <div class=\"save-cancel-button-container\">\n <novo-button\n class=\"clear-all-button\"\n *ngIf=\"showClearAll\"\n theme=\"dialogue\"\n icon=\"times\"\n side=\"right\"\n color=\"grapefruit\"\n (click)=\"deselectEverything($event)\">{{ labelService.clear }}</novo-button>\n </div>\n <div class=\"save-cancel-button-container\">\n <novo-button\n class=\"cancel-button\"\n marginRight=\"1rem\"\n theme=\"dialogue\"\n (click)=\"cancel()\">{{ labelService.cancel }}</novo-button>\n <novo-button\n class=\"save-button\"\n theme=\"primary\"\n color=\"primary\"\n (click)=\"apply()\">{{ labelService.apply }}</novo-button>\n </div>\n </div>\n</novo-dropdown>","// NG2\nimport { ScrollingModule } from '@angular/cdk/scrolling';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n// APP\nimport { NovoLabelService } from 'novo-elements/services';\nimport { NovoButtonModule } from 'novo-elements/elements/button';\nimport { NovoCheckboxModule } from 'novo-elements/elements/checkbox';\nimport { NovoOptionModule } from 'novo-elements/elements/common';\nimport { NovoDropdownModule } from 'novo-elements/elements/dropdown';\nimport { NovoFormExtrasModule } from 'novo-elements/elements/form';\nimport { NovoListModule } from 'novo-elements/elements/list';\nimport { NovoTabModule } from 'novo-elements/elements/tabs';\nimport { NovoTabbedGroupPickerElement } from './TabbedGroupPicker';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n ScrollingModule,\n NovoTabModule,\n NovoListModule,\n NovoFormExtrasModule,\n NovoButtonModule,\n NovoDropdownModule,\n NovoOptionModule,\n NovoCheckboxModule,\n ],\n providers: [NovoLabelService],\n declarations: [NovoTabbedGroupPickerElement],\n exports: [NovoTabbedGroupPickerElement],\n})\nexport class NovoTabbedGroupPickerModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "novo-elements",
3
- "version": "11.1.0-next.3",
3
+ "version": "11.1.0-next.4",
4
4
  "sideEffects": true,
5
5
  "peerDependencies": {
6
6
  "@angular/animations": ">=10",