UNPKG

sdk-select

Version:

Simple to use (Angular) select option.

1 lines 30.1 kB
{"version":3,"file":"sdk-select.mjs","sources":["../../../projects/sdk-select/src/lib/sdk-select.component.ts","../../../projects/sdk-select/src/lib/sdk-select.component.html","../../../projects/sdk-select/src/lib/sdk-select.module.ts","../../../projects/sdk-select/src/public-api.ts","../../../projects/sdk-select/src/sdk-select.ts"],"sourcesContent":["import { CommonModule } from '@angular/common';\nimport { Component, ElementRef, EventEmitter, Input, OnChanges, Output, ViewChild } from '@angular/core';\nimport { fromEvent, Subscription } from 'rxjs';\n\n@Component({\n\tselector: 'sdk-select',\n\tstandalone: true,\n\timports: [CommonModule],\n\ttemplateUrl: './sdk-select.component.html',\n\tstyleUrls: ['./sdk-select.component.scss']\n})\n\nexport class SDKSelectComponent {\n\t/**************************************************************************\n\t* Input/Output Parameters\n\t**************************************************************************/\n\t@Input() label: any; // Text to display to the left/top of dropdown.\n\t@Input() labelPosition: string = \"left\"; // Text located to the 'left' or 'top' position of dropdown.\n\t@Input() labelStyle: any; // Style applied to 'label'.\n\t@Input() options: any; // Values to select from.\n\t@Input() optionStyle: any; // Main styling for the dropdown (e.g., font, border, colors, etc.).\n\t@Input() optionValuesStyle: any; // Main styling for the dropdown values list (e.g., max-height, overflow, etc.).\n\t@Input() forceOptionBottom: boolean = false; // Forces the dropdown below the value.\n\t@Input() noValueLabel: string = \"...\"; // 'No Value' label.\n\t@Input() noValueDisabled: boolean = true; // Prevent 'No Value' from being selected.\n\t@Input() displayValue: any; // Property (key) to display as the value (if options are of type 'object').\n\t@Input() displayGroup: any; // Property (key) to display as the group (if options are of type 'object').\n\t@Input() multiSelect: boolean = false; // Indicates single or multiple selections.\n\t@Input() multiValues: boolean = true; // Show multiple values in the dropdown display or 'n selected' message after 2+ values selected.\n\t@Input() selectedOptions: any; // Values pre-selected in dropdown.\n\t@Input() resetLabel: string = \"[clear]\"; // Text to display for 'clearing/resetting' selected options.\n\t@Input() hoverColor: any; // Color used when mouse hovers over values.\n\t@Input() selectedColor: any; // Font color used to indicate selected value (single selection dropdown ONLY).\n\t@Input() selectedBackground: any; // Background color used to indicate selected value (single selection dropdown ONLY).\n\n\t@Output() selectChangeEvent: EventEmitter<any> = new EventEmitter(); // Event triggered on selections.\n\n\t/**************************************************************************\n\t* Component Variables\n\t**************************************************************************/\n\t@ViewChild(\"dropdown\") dropdown!: ElementRef | undefined;\n\t@ViewChild(\"dropdownValue\") dropdownValue!: ElementRef | undefined;\n\t@ViewChild(\"singleSelect\") singleSelect!: ElementRef | undefined;\n\t@ViewChild(\"multipleSelect\") multipleSelect!: ElementRef | undefined;\n\n\tprotected _options: any = null;\n\tprotected showDropdown: boolean = false;\n\tprotected adjustedOptionValuesStyle: any = \"\";\n\n\tprivate closeTimer: any;\n\tprivate allowClose: boolean = false;\n\tprivate scrollTop: any = null;\n\n\tprivate mouseEnterSub!: Subscription;\n\tprivate mouseLeaveSub!: Subscription;\n\n\t/**************************************************************************\n\t* Component Lifecycle Methods\n\t**************************************************************************/\n\tprotected ngOnInit() {\n\t\tif (!this.multiSelect && this.selectedOptions !== undefined && this.selectedOptions !== \"\" && !Array.isArray(this.selectedOptions)) {\n\t\t\tlet tmp = [];\n\n\t\t\ttmp.push(this.selectedOptions);\n\n\t\t\tthis.selectedOptions = tmp;\n\t\t}\n\n\t\tthis._options = [];\n\n\t\tif (this.options !== undefined) {\n\t\t\tthis.options.forEach((option: any) => {\n\t\t\t\tlet tmp: any;\n\n\t\t\t\tif (typeof option === 'object') {\n\t\t\t\t\ttmp = { ...option };\n\t\t\t\t} else {\n\t\t\t\t\ttmp = option;\n\t\t\t\t}\n\n\t\t\t\tthis._options.push(tmp);\n\t\t\t});\n\t\t}\n\n\t\tif (this.selectedOptions !== undefined && Array.isArray(this.selectedOptions)) {\n\t\t\tthis.selectedOptions.forEach((option: any) => {\n\t\t\t\tdelete option._showGroup;\n\t\t\t});\n\t\t}\n\n\t\tsetTimeout(() => {\n\t\t\tthis.setStyle();\n\t\t}, 1);\n\t}\n\n\tpublic ngAfterViewInit() {\n\t\tlet dropdown = this.dropdown!.nativeElement;\n\n\t\tif (dropdown) {\n\t\t\tthis.mouseEnterSub = fromEvent(dropdown, 'mouseenter').subscribe(() => this.stopClose());\n\t\t\tthis.mouseLeaveSub = fromEvent(dropdown, 'mouseleave').subscribe(() => this.startClose());\n\t\t}\n\t}\n\n\tpublic ngOnDestroy() {\n\t\tthis.mouseEnterSub?.unsubscribe();\n\t\tthis.mouseLeaveSub?.unsubscribe();\n\t}\n\n\t/**************************************************************************\n\t* Protected Methods\n\t**************************************************************************/\n\tprotected startClose() {\n\t\tthis.allowClose = true;\n\n\t\tthis.closeTimer = setTimeout(() => {\n\t\t\tif (this.allowClose) {\n\t\t\t\tthis.allowClose = false;\n\t\t\t\tthis.showDropdown = false;\n\t\t\t}\n\t\t}, 500);\n\t}\n\n\tprotected stopClose() {\n\t\tclearTimeout(this.closeTimer);\n\t\tthis.allowClose = false;\n\t}\n\n\tprotected setDropdown() {\n\t\tif (!this.optionValuesStyle || this.optionValuesStyle === \"\") {\n\t\t\tthis.adjustedOptionValuesStyle = \"\";\n\t\t}\n\n\t\tlet top = this.dropdownValue?.nativeElement.getBoundingClientRect().top;\n\t\tlet height = this.dropdownValue?.nativeElement.getBoundingClientRect().height - 1;\n\n\t\tif (top <= (window.innerHeight / 2)) {\n\t\t\tthis.adjustedOptionValuesStyle = `top: ${height}px; left: -0px;` + this.optionValuesStyle;\n\t\t} else {\n\t\t\tthis.adjustedOptionValuesStyle = `bottom: ${height}px; left: -0px;` + this.optionValuesStyle;\n\t\t}\n\n\t\tif (this.forceOptionBottom) {\n\t\t\tthis.adjustedOptionValuesStyle = `top: ${height}px; left: -0px;` + this.optionValuesStyle;\n\t\t}\n\n\t\tthis.showDropdown = !this.showDropdown;\n\n\t\tthis.scrollTop = null;\n\n\t\tif (this.displayGroup && this.displayGroup !== \"\") {\n\t\t\tconst grouped = this._options.reduce((acc: any, item: any) => {\n\t\t\t\tif (!acc[item[this.displayGroup]]) {\n\t\t\t\t\tacc[item[this.displayGroup]] = [];\n\t\t\t\t}\n\t\t\t\tacc[item[this.displayGroup]].push(item);\n\t\t\t\treturn acc;\n\t\t\t}, {});\n\n\t\t\tthis._options = Object.keys(grouped)\n\t\t\t\t.sort()\n\t\t\t\t.reduce((acc: any, group) => {\n\t\t\t\t\treturn acc.concat(grouped[group]);\n\t\t\t\t}, []);\n\n\t\t\tlet lastGroup = '';\n\n\t\t\tthis._options.forEach((item: any) => {\n\t\t\t\tif (item[this.displayGroup] !== lastGroup) {\n\t\t\t\t\titem._showGroup = true;\n\t\t\t\t\tlastGroup = item[this.displayGroup];\n\t\t\t\t} else {\n\t\t\t\t\titem._showGroup = false;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tsetTimeout(() => {\n\t\t\tlet singleHeight = this.singleSelect?.nativeElement.scrollHeight / this._options.length;\n\t\t\tlet multipleSelect = this.multipleSelect?.nativeElement.scrollHeight / (this._options.length + 1.5);\n\n\t\t\tthis._options.filter((option: any) => !option._showGroup).forEach((option: any, index: number) => {\n\t\t\t\tif (this.selectedOptions && this.selectedOptions !== \"\") {\n\t\t\t\t\tthis.selectedOptions.forEach((item: any) => {\n\t\t\t\t\t\tif (JSON.stringify(option) === JSON.stringify(item)) {\n\t\t\t\t\t\t\tif (!this.scrollTop) {\n\t\t\t\t\t\t\t\tthis.scrollTop = index;\n\n\t\t\t\t\t\t\t\tif (this.multipleSelect) {\n\t\t\t\t\t\t\t\t\tthis.scrollTop += 1.5;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tif (this.singleSelect) {\n\t\t\t\tthis.singleSelect.nativeElement.scrollTop = (this.scrollTop * singleHeight);\n\t\t\t}\n\n\t\t\tif (this.multipleSelect) {\n\t\t\t\tthis.multipleSelect.nativeElement.scrollTop = (this.scrollTop * multipleSelect);\n\t\t\t}\n\t\t}, 10);\n\t}\n\n\tprotected selectionBuilder() {\n\t\tlet selection: any = \"\";\n\n\t\tif (this.multiSelect) {\n\t\t\tif (this.multiValues) {\n\t\t\t\tif (this.displayValue && this.displayValue !== \"\") {\n\t\t\t\t\tlet tmp: any = [];\n\n\t\t\t\t\tthis.selectedOptions.forEach((item: any) => {\n\t\t\t\t\t\ttmp.push(this.valueBuilder(item));\n\t\t\t\t\t});\n\n\t\t\t\t\tselection = tmp.join(\", \");\n\t\t\t\t} else {\n\t\t\t\t\tselection = this.selectedOptions;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (this.selectedOptions.length === 1) {\n\t\t\t\t\tselection = (this.displayValue && this.displayValue !== \"\") ? this.valueBuilder(this.selectedOptions[0]) : this.selectedOptions[0];\n\t\t\t\t} else {\n\t\t\t\t\tselection = this.selectedOptions.length + ' selected';\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tselection = (this.displayValue && this.displayValue !== \"\") ? this.valueBuilder(this.selectedOptions[0]) : this.selectedOptions[0];\n\t\t}\n\n\t\treturn selection;\n\t}\n\n\tprotected valueBuilder(option: any) {\n\t\tlet re = /\\[([^\\]]+)\\]/g;\n\t\tlet x = this.displayValue.match(re);\n\t\tlet value: any = this.displayValue;\n\n\t\tif (x) {\n\t\t\tx.forEach((segment: any) => {\n\t\t\t\tlet z = option[segment.replace(\"[\", \"\").replace(\"]\", \"\")];\n\t\t\t\tvalue = value.replaceAll(segment, z);\n\t\t\t});\n\t\t} else {\n\t\t\tvalue = option[value];\n\t\t}\n\n\t\treturn value;\n\t}\n\n\tprotected titleBuilder() {\n\t\tlet title: any = \"\";\n\t\tlet tmp: any = [];\n\n\t\tif (this.selectedOptions && this.selectedOptions.length > 0) {\n\t\t\tthis.selectedOptions.forEach((item: any) => {\n\t\t\t\tif (this.displayValue && this.displayValue !== \"\") {\n\t\t\t\t\ttmp.push(this.valueBuilder(item));\n\t\t\t\t} else {\n\t\t\t\t\ttmp.push(item);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\ttitle = `Selected value(s):\\n${tmp.join(\"\\n\")}`;\n\t\t}\n\n\t\treturn title;\n\t}\n\n\tprotected isSelected(option: any) {\n\t\tlet tmpOption: any;\n\n\t\tif (typeof option === 'object') {\n\t\t\ttmpOption = { ...option };\n\t\t} else {\n\t\t\ttmpOption = option;\n\t\t}\n\n\t\tdelete tmpOption._showGroup;\n\n\t\tlet ndx = (this.selectedOptions && this.selectedOptions !== \"\") ? this.selectedOptions?.findIndex((item: any) => JSON.stringify(item) === JSON.stringify(tmpOption)) : -1;\n\n\t\treturn (ndx > -1) ? true : false;\n\t}\n\n\tprotected selectItem(option: any) {\n\t\tlet tmpOption: any;\n\n\t\tif (typeof option === 'object') {\n\t\t\ttmpOption = { ...option };\n\t\t} else {\n\t\t\ttmpOption = option;\n\t\t}\n\n\t\tdelete tmpOption._showGroup;\n\n\t\tlet ndx = (this.selectedOptions && this.selectedOptions !== \"\") ? this.selectedOptions?.findIndex((item: any) => JSON.stringify(item) === JSON.stringify(tmpOption)) : -1;\n\n\t\tif (ndx > -1) {\n\t\t\tif (this.multiSelect || !this.noValueDisabled) {\n\t\t\t\tthis.selectedOptions.splice(ndx, 1);\n\t\t\t}\n\t\t} else {\n\t\t\tif (!this.multiSelect || !this.selectedOptions) {\n\t\t\t\tthis.selectedOptions = [];\n\t\t\t}\n\n\t\t\tthis.selectedOptions.push(tmpOption);\n\t\t}\n\n\t\tif (!this.multiSelect && this.noValueDisabled) {\n\t\t\tthis.showDropdown = false;\n\t\t}\n\n\t\tif (this.selectedOptions !== undefined && Array.isArray(this.selectedOptions)) {\n\t\t\tthis.selectedOptions.forEach((option: any) => {\n\t\t\t\tdelete option._showGroup;\n\t\t\t});\n\t\t}\n\n\t\tthis.selectChangeEvent.emit(this.selectedOptions);\n\t}\n\n\tprotected groupSelections(group: any) {\n\t\tlet tmpOptions = this._options.filter((option: any) => option[this.displayGroup] === group);\n\t\tlet isSelections = this.selectedOptions.filter((option: any) => option[this.displayGroup] === group);\n\n\t\tif (isSelections.length === tmpOptions.length) {\n\t\t\tthis.selectedOptions = this.selectedOptions.filter((option: any) => option[this.displayGroup] !== group);\n\t\t} else {\n\t\t\tthis.selectedOptions = this.selectedOptions.filter((option: any) => option[this.displayGroup] !== group);\n\n\t\t\ttmpOptions.forEach((option: any) => {\n\t\t\t\tlet tmpOption = { ...option };\n\n\t\t\t\tdelete tmpOption._showGroup;\n\n\t\t\t\tthis.selectedOptions.push(tmpOption);\n\t\t\t});\n\t\t}\n\n\t\tthis.selectChangeEvent.emit(this.selectedOptions);\n\t}\n\n\tprotected clearSelections() {\n\t\tthis.selectedOptions = [];\n\n\t\tthis.selectChangeEvent.emit(this.selectedOptions);\n\t}\n\n\tprotected allSelections() {\n\t\tthis.selectedOptions = [];\n\n\t\tthis._options.forEach((option: any) => {\n\t\t\tlet tmpOption: any;\n\n\t\t\tif (typeof option === 'object') {\n\t\t\t\ttmpOption = { ...option };\n\t\t\t} else {\n\t\t\t\ttmpOption = option;\n\t\t\t}\n\n\t\t\tdelete tmpOption._showGroup;\n\n\t\t\tthis.selectedOptions.push(tmpOption);\n\t\t})\n\n\t\tthis.selectChangeEvent.emit(this.selectedOptions);\n\t}\n\n\t/**************************************************************************\n\t* Protected Methods\n\t**************************************************************************/\n\tprivate setStyle() {\n\t\tlet element = this.dropdown?.nativeElement;\n\n\t\tif (element) {\n\t\t\telement.style.setProperty(\"--hover-color\", this.hoverColor);\n\t\t\telement.style.setProperty(\"--selected-color\", this.selectedColor);\n\t\t\telement.style.setProperty(\"--selected-background\", this.selectedBackground);\n\t\t}\n\t}\n}\n","<div #dropdown class=\"sdk-select\" [ngStyle]=\"{ display: (labelPosition === 'top') ? 'unset' : 'flex' }\">\n <div *ngIf=\"label\" class=\"label\" [style]=\"labelStyle\">{{ label }}</div>\n\n <!-- Single Selection -->\n <div *ngIf=\"!multiSelect\" class=\"box\" [style]=\"optionStyle\">\n <div class=\"selectbox\" [title]=\"titleBuilder()\">\n <div #dropdownValue class=\"dropdown\" (click)=\"setDropdown()\">\n <div class=\"value\" *ngIf=\"!selectedOptions || selectedOptions.length === 0\">{{ noValueLabel }}</div>\n <div class=\"value\" *ngIf=\"selectedOptions && selectedOptions.length > 0\">{{ (displayValue) ? selectionBuilder() : selectedOptions }}</div>\n <div class=\"sdk-icon\">expand_more</div>\n </div>\n <div #singleSelect class=\"values\" *ngIf=\"showDropdown\" [style]=\"adjustedOptionValuesStyle\">\n <label *ngFor=\"let option of _options\" [ngClass]=\"{ selected : isSelected(option) }\" [title]=\"(displayValue) ? valueBuilder(option) : option\">\n <div *ngIf=\"option._showGroup\" class=\"group-label\">{{ option.group }}</div>\n <div class=\"value\" (click)=\"selectItem(option)\">\n <div class=\"value-text\">{{ (displayValue) ? valueBuilder(option) : option }}</div>\n <div *ngIf=\"!noValueDisabled && isSelected(option)\" class=\"sdk-icon right\">check</div>\n </div>\n </label>\n </div>\n </div>\n </div>\n\n <!-- Multi Selection -->\n <div *ngIf=\"multiSelect\" class=\"box\" [style]=\"optionStyle\">\n <div class=\"selectbox\" [title]=\"titleBuilder()\">\n <div #dropdownValue class=\"dropdown\" (click)=\"setDropdown()\">\n <div class=\"value\" *ngIf=\"!selectedOptions || selectedOptions.length === 0\">{{ noValueLabel }}</div>\n <div class=\"value\" *ngIf=\"selectedOptions && selectedOptions.length > 0\">{{ selectionBuilder() }}</div>\n <div class=\"sdk-icon\">expand_more</div>\n </div>\n <div #multipleSelect class=\"values\" *ngIf=\"showDropdown\" [style]=\"adjustedOptionValuesStyle\">\n <label class=\"value-clear-all\" (click)=\"clearSelections()\">{{ resetLabel }}</label>\n <label class=\"value-clear-all\" (click)=\"allSelections()\">[all]</label>\n <label *ngFor=\"let option of _options\"[ngClass]=\"{ selected : isSelected(option) }\" [title]=\"(displayValue) ? valueBuilder(option) : option\">\n <div *ngIf=\"option._showGroup\" class=\"group-label click\" (click)=\"groupSelections(option.group)\">{{ option.group }}</div>\n <div class=\"sdk-icon left\" (click)=\"selectItem(option)\" >{{ isSelected(option) ? 'check_box' : 'check_box_outline_blank' }}</div>\n <div class=\"value adjust\" (click)=\"selectItem(option)\" >\n <div class=\"value-text\">{{ (displayValue) ? valueBuilder(option) : option }}</div>\n </div>\n </label>\n </div>\n </div>\n </div>\n</div>\n","import { NgModule, NO_ERRORS_SCHEMA } from '@angular/core';\n\nimport { SDKSelectComponent } from './sdk-select.component';\n\n@NgModule({\n\timports: [\n\t\tSDKSelectComponent,\n\t],\n\texports: [\n\t\tSDKSelectComponent,\n\t],\n\tschemas: [\n\t\tNO_ERRORS_SCHEMA,\n\t]\n})\n\nexport class SDKSelectModule { }\n","/*\n * Public API Surface of sdk-loading\n */\n\nexport { SDKSelectModule } from './lib/sdk-select.module';\nexport { SDKSelectComponent } from './lib/sdk-select.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}