list-selection-input 15.0.4 → 15.0.5

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.
@@ -1 +1 @@
1
- {"version":3,"file":"list-selection-input.mjs","sources":["../../../projects/list-selection-input/src/lib/models/selection-basic.model.ts","../../../projects/list-selection-input/src/lib/models/selection-item.model.ts","../../../projects/list-selection-input/src/lib/models/index.ts","../../../projects/list-selection-input/src/lib/pipes/remove-underscore.pipe.ts","../../../projects/list-selection-input/src/lib/list-selection-input/list-selection-input.component.ts","../../../projects/list-selection-input/src/lib/list-selection-input/list-selection-input.component.html","../../../projects/list-selection-input/src/lib/list-selection-demo/list-selection-demo.component.ts","../../../projects/list-selection-input/src/lib/list-selection-demo/list-selection-demo.component.html","../../../projects/list-selection-input/src/lib/multi-selection-demo/multi-selection-demo.component.ts","../../../projects/list-selection-input/src/lib/multi-selection-demo/multi-selection-demo.component.html","../../../projects/list-selection-input/src/lib/list-selection-input.module.ts","../../../projects/list-selection-input/src/public-api.ts","../../../projects/list-selection-input/src/list-selection-input.ts"],"sourcesContent":["export interface SelectionBasicInterface {\n id: number|string;\n value: string;\n}\n\nexport class SelectionBasic implements SelectionBasicInterface {\n\n constructor(\n public id = 0,\n public value = '',\n ) {}\n\n static adapt(item?: any) {\n\n return new SelectionBasic(\n item?.id,\n (item?.value) ? item.value : item,\n );\n }\n\n}\n","export interface SelectionItemInterface {\n id: number|string;\n value: string;\n disabled?: boolean;\n selected?: boolean;\n}\n\nexport class SelectionItem implements SelectionItemInterface {\n\n constructor(\n public id = crypto.randomUUID(),\n public value = '',\n public disabled?: boolean,\n public selected?: boolean,\n ) {}\n\n static adapt(item?: any) {\n\n return new SelectionItem(\n item?.id,\n (item?.value) ? item.value : item,\n (item?.disabled) ? true : false,\n (item?.selected) ? true : false,\n );\n }\n\n}\n","/*\n * Public API Surface of selections\n */\n\nexport * from './selection-basic.model';\nexport * from './selection-item.model';\n\n\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'removeUnderscore',\n standalone: true\n})\nexport class RemoveUnderscorePipe implements PipeTransform {\n transform(value: string): string {\n return value? value.replace(/_/g, \" \") : value;\n }\n}\n","import { Component, EventEmitter, Input, OnInit, Output, forwardRef, inject } from '@angular/core';\nimport { AbstractControl, ControlValueAccessor, FormBuilder, NG_VALIDATORS, NG_VALUE_ACCESSOR, ValidationErrors, Validators } from '@angular/forms';\n\nimport { MatFormFieldAppearance } from '@angular/material/form-field';\n\nimport { MatSelectChange } from '@angular/material/select';\nimport { SelectionItem } from '../models/selection-item.model';\n\n\n@Component({\n selector: 'app-list-selection-input',\n templateUrl: './list-selection-input.component.html',\n styleUrls: ['./list-selection-input.component.css'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ListSelectionInputComponent),\n multi: true\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => ListSelectionInputComponent),\n multi: true\n }\n ]\n})\nexport class ListSelectionInputComponent implements OnInit, ControlValueAccessor {\n\n fb = inject( FormBuilder)\n\n selectionControl = this.fb.control<any>([], Validators.required)\n\n @Input() label?: string\n @Input() placeholder?: string\n\n private _minSelection = 0\n @Input() set minSelection(value: number) {\n this._minSelection = (value) ? value : 0\n }\n\n get minSelection() {\n return this._minSelection\n }\n\n private _maxSelection = 0\n @Input() set maxSelection(value: number) {\n this._maxSelection = (value) ? value : 0\n }\n\n get maxSelection() {\n return this._maxSelection\n }\n\n private _multiple = false\n @Input() set multiple(value: boolean|undefined) {\n this._multiple = (value) ? value : false\n }\n\n get multiple() {\n return this._multiple\n }\n\n get isValid() {\n return this.isValidRange(this.data)\n }\n\n defaultDisabled: SelectionItem[] = []\n\n @Input() appearance: MatFormFieldAppearance = 'outline'\n\n private _data: (any|string)[] = []\n @Input() set data(value: any[]) {\n\n this.isObjects = this.hasObjects(value)\n this._data = (value) ? value.map(item => SelectionItem.adapt(item)) : []\n\n const selectedObjects = this.data.filter(item => item.selected).map(item => item.value)\n this.defaultDisabled = (!this.defaultDisabled) ? this.data.map(item => SelectionItem.adapt(item)).filter(item => item.disabled) : this.defaultDisabled\n\n if(this.multiple) {\n const selected = (selectedObjects) ? selectedObjects : this.findFirst(selectedObjects)\n this.selectionControl.patchValue(selected, { emitEvent: false })\n } else {\n const selected = (selectedObjects.length === 0 && value.length > 0) ? [value[0]] : this.findFirst(selectedObjects)\n this.selectionControl.patchValue(selected, { emitEvent: false })\n }\n\n }\n\n get data() {\n return this._data\n }\n\n\n @Output() selectionChange = new EventEmitter()\n\n disabled = false\n\n formInitialized = false\n\n isArray = (obj: any) => Array.isArray(obj)\n hasObjects = (obj: any) => (this.isArray(obj) && obj.length > 0) ? this.isObject(obj[0]) : false\n isObject = (obj: any) => typeof obj === 'object' && obj !== null && !Array.isArray(obj)\n\n findFirst = (obj: string[]) => {\n const found = this.data.find(item => obj.includes(item.value))\n return (found) ? found.value : null\n }\n\n onChange: any = () => {}\n onTouch: any = () => {}\n\n isObjects = false\n\n invalid = false\n\n updateSelection = (newData: any[]) => newData.filter(item => !item.selected).map(item => {\n const dis = this.defaultDisabled.map(item => item.value)\n return (dis.includes(item.value)) ? item.disabled = true : item.disabled = false\n })\n\n constructor() { }\n\n ngOnInit() {\n\n if(this.multiple) {\n\n this.defaultDisabled = this.data.filter(item => item.disabled)\n\n if (this.minSelection > 0 && this.minSelection > this.maxSelection) {\n this.minSelection = this.maxSelection !== 0 ? this.maxSelection : this.minSelection;\n } else if (this.maxSelection > 0 && this.maxSelection < this.minSelection) {\n this.maxSelection = this.minSelection;\n }\n\n this.maxSelection = this.maxSelection || this.data.length;\n\n }\n\n }\n\n ngAfterViewInit(): void {\n this.formInitialized = true\n }\n\n writeValue(value: string[]){\n\n const selected = (this.isArray(value) && value.length > 1) ? this.findFirst(value) : value\n\n this.data\n .map(item => {\n item.selected = (value && value.includes(item.value)) ? true : false\n return item\n })\n\n if(selected) {\n\n if(this.multiple) {\n this.selectionControl.patchValue(value, { emitEvent: false })\n } else {\n if(!value || value.length === 0) return\n this.selectionControl.patchValue(this.findFirst(value), { emitEvent: false })\n this.selectionControl.markAsDirty({ onlySelf: true })\n }\n\n }\n\n if(this.formInitialized && !this.selectionControl.pristine) {\n if(value === null) this.selectionControl.reset()\n this.selectionControl.markAsDirty({ onlySelf: true })\n this.selectionControl.markAllAsTouched()\n } else if(this.formInitialized && this.selectionControl.pristine) {\n if(value === null) this.selectionControl.reset()\n }\n\n this.formInitialized = true\n\n }\n\n validate(control: AbstractControl): ValidationErrors | null {\n\n const isRequired = control.hasValidator(Validators.required) ? true : false\n\n let errors = { 'minRequired': false, 'maxExceeded': false }\n\n if(!isRequired) this.selectionControl.clearValidators()\n if(this.minSelection > 0) this.selectionControl.addValidators(Validators.minLength(this.minSelection))\n\n const hasValue = (!this.selectionControl.value || this.selectionControl.value?.length === 0)\n\n if(this.minSelection > 0) {\n const hasMin = (this.selectionControl.value?.length+1 <= this.minSelection) ? true : false\n errors.minRequired = hasMin\n }\n\n if(this.maxSelection > 0) {\n const hasMax = (this.selectionControl.value?.length >= this.maxSelection) ? true : false\n errors.maxExceeded = hasMax\n }\n\n const hasErrors = this.selectedValues(errors, true).length > 0\n const values = this.selectedValues(this.selectionControl.value || [], true).length\n const hasValues = (this.minSelection > 0 && values > this.minSelection) || (this.maxSelection > 0 && values < this.maxSelection)\n\n const finalErrors = (isRequired && !hasValues && hasErrors) ? errors : null\n\n return finalErrors\n\n }\n\n registerOnChange(fn: any){\n this.onChange = fn\n }\n\n registerOnTouched(fn: any){\n this.onTouch = fn\n }\n\n setDisabledState?(isDisabled: boolean) {\n\n this.disabled = isDisabled\n\n if(this.disabled) {\n this.selectionControl.disable()\n } else {\n this.selectionControl.enable()\n }\n\n }\n\n onSelection(selection: MatSelectChange|any) {\n\n this.invalid = false\n\n if(this.multiple) {\n\n const checkboxSelected = selection.value\n\n const newData = this.data.map(item => SelectionItem.adapt(item))\n\n newData.map(item => item.selected = checkboxSelected.includes(item.value) ? true : false)\n\n if(this.isValidRange(newData)) this.data = newData\n\n const curSelected = this.data.filter(item => item.selected).length\n const prevSelected = newData.filter(item => item.selected).length\n\n if(curSelected > this.maxSelection) {\n this.updateSelection(newData)\n } else {\n\n if(prevSelected < curSelected) {\n this.updateSelection(newData)\n } else {\n\n if(curSelected >= this.maxSelection) {\n\n const dis = this.defaultDisabled.map(item => item.value)\n\n newData.filter(item => !item.selected).map(item => {\n return item.disabled = (dis.includes(item.value)) ? item.disabled : !item.disabled\n })\n\n } else {\n this.updateSelection(newData)\n }\n\n }\n\n }\n\n this.data = newData\n\n const sel = this.data.filter(item => item.selected).map(item => item.value)\n this.selectionControl.patchValue(sel, { emitEvent: false })\n\n }\n\n selection = (selection?.value) ? selection.value : selection\n\n const selected = (this.multiple) ? this.isArray(selection) ? selection : [selection] : [selection]\n const data = this.data.map(({ id, value }) => ({id, value}))\n const newData = data.filter((item: any) => selected.includes(item.value))\n const selectedData = (this.isObjects) ? newData : newData.map(({ value }) => value)\n\n this.selectionControl.markAllAsTouched()\n\n this.selectionChange.emit(data)\n this.onChange(selectedData)\n\n }\n\n findControlDisabled(control: string) {\n const found = this.data.find(item => item.value === control)\n const disabled = (found?.disabled) ? found.disabled : false\n return disabled\n }\n\n isValidRange(data: any[]) {\n\n const selected = data.filter(item => item.selected).length\n\n if(this.multiple) {\n\n const isMin = (this.minSelection !== 0) ? selected >= this.minSelection : true\n const isMax = (this.maxSelection !== 0) ? selected <= this.maxSelection : true\n\n return isMin && isMax\n\n } else {\n return selected > 0\n }\n\n }\n\n selectedValues(obj: any, state = false) {\n return Object.entries(obj).filter(([key, value]) => value === state).map(([key, _]) => key)\n }\n\n}\n","<div style=\"display: flex; flex-direction: column;\">\n <div style=\"margin-bottom: .5rem; display: flex; flex-direction: column;\">\n <mat-label style=\"font-size: larger;\">\n {{ label }}\n </mat-label>\n </div>\n <ng-container *ngIf=\"data && data.length > 0; else NODATA\">\n <mat-form-field\n style=\"display: flex;\"\n [appearance]=\"appearance\"\n >\n <mat-select\n [formControl]=\"selectionControl\"\n (selectionChange)=\"onSelection($event)\"\n [multiple]=\"multiple\"\n [placeholder]=\"placeholder||''\"\n >\n <mat-option\n *ngFor=\"let option of data\"\n [value]=\"option.value\"\n [disabled]=\"option.disabled\"\n >\n {{option.value}}\n </mat-option>\n </mat-select>\n </mat-form-field>\n </ng-container>\n <ng-template #NODATA>\n <div class=\"wrapper\">\n <ng-content></ng-content>\n </div>\n </ng-template>\n</div>\n\n","import { Component, OnInit, inject } from '@angular/core';\nimport { FormBuilder, Validators } from '@angular/forms';\n\n@Component({\n selector: 'app-list-selection-demo',\n templateUrl: './list-selection-demo.component.html',\n styleUrls: ['./list-selection-demo.component.scss']\n})\nexport class ListSelectionInputDemoComponent implements OnInit {\n\n fb = inject(FormBuilder)\n\n data_1 = [\n { id: 11, value: 'Telus' },\n { id: 12, value: 'AT&T', disabled: true },\n { id: 14, value: 'Bell', selected: true},\n { id: 63, value: 'Rogers', selected: true }\n ]\n\n data_2 = ['Telus', 'AT&T', 'Bell', 'Rogers']\n\n // SELECTIONS\n selectionControl_1 = this.fb.control<string[]|null>(null, Validators.required)\n selectionControl_2 = this.fb.control<string[]|null>(null, Validators.required)\n selectionControl_3 = this.fb.control<string[]|null>(null, Validators.required)\n\n selectionControl_4 = this.fb.control<string[]|null>(null)\n selectionControl_5 = this.fb.control<string[]|null>(null)\n\n selectionControl_6 = this.fb.control<string[]|null>(null, Validators.required)\n selectionControl_7 = this.fb.control<string[]|null>(null, Validators.required)\n selectionControl_8 = this.fb.control<string[]|null>(null, Validators.required)\n\n //CHANGE DETECTION\n changeDetection_1 = this.fb.control(false)\n changeDetection_2 = this.fb.control(false)\n changeDetection_3 = this.fb.control(false)\n changeDetection_4 = this.fb.control(false)\n changeDetection_5 = this.fb.control(false)\n changeDetection_6 = this.fb.control(false)\n changeDetection_7 = this.fb.control(false)\n changeDetection_8 = this.fb.control(false)\n\n data: any = this.data_2\n\n constructor() { }\n\n ngOnInit() {\n\n // SELECTIONS\n this.selectionControl_1.valueChanges.subscribe(data => {\n if(this.changeDetection_1.value) console.log('CHANGE:',data)\n })\n\n this.selectionControl_2.valueChanges.subscribe(data => {\n if(this.changeDetection_2.value) console.log('CHANGE:',data)\n })\n\n this.selectionControl_3.valueChanges.subscribe(data => {\n if(this.changeDetection_3.value) console.log('CHANGE:',data)\n })\n\n this.selectionControl_4.valueChanges.subscribe(data => {\n if(this.changeDetection_4.value) console.log('CHANGE:',data)\n })\n\n this.selectionControl_5.valueChanges.subscribe(data => {\n if(this.changeDetection_5.value) console.log('CHANGE:',data)\n })\n\n this.selectionControl_6.valueChanges.subscribe(data => {\n if(this.changeDetection_6.value) console.log('CHANGE:',data)\n })\n\n this.selectionControl_7.valueChanges.subscribe(data => {\n if(this.changeDetection_7.value) console.log('CHANGE:',data)\n })\n\n this.selectionControl_8.valueChanges.subscribe(data => {\n if(this.changeDetection_8.value) console.log('CHANGE:',data)\n })\n\n }\n\n onPerformPatch() {\n this.selectionControl_1.patchValue(['Bell'])\n this.selectionControl_2.patchValue(['AT&T'])\n this.selectionControl_3.patchValue(['Telus'])\n this.selectionControl_4.patchValue(['Rogers'])\n\n this.selectionControl_5.patchValue(['Bell'])\n this.selectionControl_6.patchValue(['AT&T'])\n this.selectionControl_7.patchValue(['Telus'])\n this.selectionControl_8.patchValue(['Rogers'])\n }\n\n onChangeDataType(type: string) {\n if(type === 'strings') {\n this.data = this.data_2 //strings\n } else {\n this.data = this.data_1 //objects\n }\n }\n\n // DISABLE\n onDisabled_1(disable: boolean) {\n\n if(disable) {\n this.selectionControl_1.disable()\n } else {\n this.selectionControl_1.enable()\n }\n\n }\n\n onDisabled_2(disable: boolean) {\n\n if(disable) {\n this.selectionControl_2.disable()\n } else {\n this.selectionControl_2.enable()\n }\n\n }\n\n onDisabled_3(disable: boolean) {\n\n if(disable) {\n this.selectionControl_3.disable()\n } else {\n this.selectionControl_3.enable()\n }\n\n }\n\n onDisabled_4(disable: boolean) {\n\n if(disable) {\n this.selectionControl_4.disable()\n } else {\n this.selectionControl_4.enable()\n }\n\n }\n\n onDisabled_5(disable: boolean) {\n\n if(disable) {\n this.selectionControl_5.disable()\n } else {\n this.selectionControl_5.enable()\n }\n\n }\n\n onDisabled_6(disable: boolean) {\n\n if(disable) {\n this.selectionControl_6.disable()\n } else {\n this.selectionControl_6.enable()\n }\n\n }\n\n onDisabled_7(disable: boolean) {\n\n if(disable) {\n this.selectionControl_7.disable()\n } else {\n this.selectionControl_7.enable()\n }\n\n }\n\n onDisabled_8(disable: boolean) {\n\n if(disable) {\n this.selectionControl_8.disable()\n } else {\n this.selectionControl_8.enable()\n }\n\n }\n}\n","<div style=\"display: flex;\">\n <h1>List Selection FormControl</h1>\n <div style=\"flex:1; text-align: right;\">\n <div style=\"display: flex; gap: 2rem; flex-direction: row-reverse;\">\n <mat-button-toggle (click)=\"onPerformPatch()\">Patch</mat-button-toggle>\n\n <mat-button-toggle-group #varTypes=\"matButtonToggleGroup\" (change)=\"onChangeDataType(varTypes.value)\">\n <mat-button-toggle value=\"strings\" checked=\"true\">Strings</mat-button-toggle>\n <mat-button-toggle value=\"objects\" checked=\"false\">Objects</mat-button-toggle>\n </mat-button-toggle-group>\n </div>\n </div>\n</div>\n\n<h3>No Data - Projection of Error</h3>\n<app-list-selection-input error=\"No Data Provided\">\n <h3 style=\"color: red; margin-top: 0; margin-bottom: 0;\">No Data</h3>\n</app-list-selection-input>\n\n<div style=\"margin-top: 2rem; margin-bottom: 1rem;\">\n <mat-divider></mat-divider>\n</div>\n\n<div>\n <h3 style=\"margin-bottom: 0;\">Single Selection - {{ varTypes.value | uppercase }}</h3>\n <div>\n <div style=\"display: flex;\">\n <span style=\"flex:1\"></span>\n <button mat-button (click)=\"selectionControl_1.reset()\">Reset</button>\n </div>\n <app-list-selection-input\n [data]=\"data\"\n [formControl]=\"selectionControl_1\"\n ></app-list-selection-input>\n <div *ngIf=\"error1.checked\">\n <mat-error *ngIf=\"selectionControl_1.hasError('minRequired')\">You must have a minimun of 1 selected</mat-error>\n <mat-error *ngIf=\"selectionControl_1.hasError('maxExceeded')\">maximum reached</mat-error>\n <mat-error *ngIf=\"selectionControl_1.hasError('required')\">This field is Required</mat-error>\n </div>\n <div style=\"display: flex; gap: 2rem; margin-top: 1rem;\">\n <mat-slide-toggle [formControl]=\"changeDetection_1\">Change Detection</mat-slide-toggle>\n <mat-slide-toggle #error1>Display Error</mat-slide-toggle>\n <mat-slide-toggle #disable1 (change)=\"onDisabled_1(disable1.checked)\">Disable</mat-slide-toggle>\n <span style=\"flex:1\"></span>\n </div>\n <div style=\"margin-top: 2rem;\">\n No Label or Placeholder<br>\n Required<br>\n Valid {{ selectionControl_1.valid }}<br>\n </div>\n </div>\n\n <div style=\"margin-top: 2rem; margin-bottom: 1rem;\">\n <mat-divider></mat-divider>\n </div>\n\n <div>\n <div style=\"display: flex;\">\n <span style=\"flex:1\"></span>\n <button mat-button (click)=\"selectionControl_2.reset()\">Reset</button>\n </div>\n <app-list-selection-input\n [data]=\"data\"\n [formControl]=\"selectionControl_2\"\n label=\"Providers\"\n placeholder=\"Select Provider\"\n ></app-list-selection-input>\n <div *ngIf=\"error2.checked\">\n <mat-error *ngIf=\"selectionControl_2.hasError('minRequired')\">You must have a minimum of 1 selected</mat-error>\n <mat-error *ngIf=\"selectionControl_2.hasError('maxExceeded')\">maximum reached</mat-error>\n <mat-error *ngIf=\"selectionControl_2.hasError('required')\">This field is Required</mat-error>\n </div>\n <div style=\"display: flex; gap: 2rem; margin-top: 1rem;\">\n <mat-slide-toggle [formControl]=\"changeDetection_2\">Change Detection</mat-slide-toggle>\n <mat-slide-toggle #error2>Display Error</mat-slide-toggle>\n <mat-slide-toggle #disable2 (change)=\"onDisabled_2(disable2.checked)\">Disable</mat-slide-toggle>\n <span style=\"flex:1\"></span>\n </div>\n <div style=\"margin-top: 2rem;\">\n Label and Placeholder<br>\n Required<br>\n Valid {{ selectionControl_2.valid }}<br>\n </div>\n <div style=\"margin-top: .5rem; margin-bottom: 1rem;\">\n <mat-divider></mat-divider>\n </div>\n </div>\n\n <div>\n <div style=\"display: flex;\">\n <span style=\"flex:1\"></span>\n <button mat-button (click)=\"selectionControl_3.reset()\">Reset</button>\n </div>\n <app-list-selection-input\n [data]=\"data\"\n [formControl]=\"selectionControl_3\"\n label=\"Providers\"\n placeholder=\"Select Provider\"\n appearance=\"fill\"\n ></app-list-selection-input>\n <div *ngIf=\"error3.checked\">\n <mat-error *ngIf=\"selectionControl_3.hasError('minRequired')\">You must have a minimum of 1 selected</mat-error>\n <mat-error *ngIf=\"selectionControl_3.hasError('maxExceeded')\">maximum reached</mat-error>\n <mat-error *ngIf=\"selectionControl_3.hasError('required')\">This field is Required</mat-error>\n </div>\n <div style=\"display: flex; gap: 2rem; margin-top: 1rem;\">\n <mat-slide-toggle [formControl]=\"changeDetection_3\">Change Detection</mat-slide-toggle>\n <mat-slide-toggle #error3>Display Error</mat-slide-toggle>\n <mat-slide-toggle #disable3 (change)=\"onDisabled_3(disable3.checked)\">Disable</mat-slide-toggle>\n <span style=\"flex:1\"></span>\n </div>\n <div style=\"margin-top: 2rem;\">\n Label and Placeholder<br>\n Appearance is Fill<br>\n Required<br>\n Valid {{ selectionControl_3.valid }}<br>\n </div>\n <div style=\"margin-top: .5rem; margin-bottom: 1rem;\">\n <mat-divider></mat-divider>\n </div>\n </div>\n\n</div>\n\n","import { Component, OnInit, inject } from '@angular/core';\nimport { FormBuilder, Validators } from '@angular/forms';\n\n@Component({\n selector: 'app-list-multi-selection-demo',\n templateUrl: './multi-selection-demo.component.html',\n styleUrls: ['./multi-selection-demo.component.scss']\n})\nexport class ListMultiSelectionDemoComponent implements OnInit {\n\n fb = inject(FormBuilder)\n\n data_1 = [\n { id: 11, value: 'Telus' },\n { id: 12, value: 'AT&T', disabled: true },\n { id: 14, value: 'Bell', selected: true},\n { id: 63, value: 'Rogers', selected: true }\n ]\n\n data_2 = ['Telus', 'AT&T', 'Bell', 'Rogers']\n\n // SELECTIONS\n selectionControl_1 = this.fb.control<string[]|null>(null, Validators.required)\n selectionControl_2 = this.fb.control<string[]|null>(null, Validators.required)\n selectionControl_3 = this.fb.control<string[]|null>(null, Validators.required)\n\n selectionControl_4 = this.fb.control<string[]|null>(null)\n selectionControl_5 = this.fb.control<string[]|null>(null)\n\n selectionControl_6 = this.fb.control<string[]|null>(null, Validators.required)\n selectionControl_7 = this.fb.control<string[]|null>(null, Validators.required)\n selectionControl_8 = this.fb.control<string[]|null>(null, Validators.required)\n\n //CHANGE DETECTION\n changeDetection_1 = this.fb.control(false)\n changeDetection_2 = this.fb.control(false)\n changeDetection_3 = this.fb.control(false)\n changeDetection_4 = this.fb.control(false)\n changeDetection_5 = this.fb.control(false)\n changeDetection_6 = this.fb.control(false)\n changeDetection_7 = this.fb.control(false)\n changeDetection_8 = this.fb.control(false)\n\n data: any = this.data_2\n\n constructor() { }\n\n ngOnInit() {\n\n // SELECTIONS\n this.selectionControl_1.valueChanges.subscribe(data => {\n if(this.changeDetection_1.value) console.log('CHANGE:',data)\n })\n\n this.selectionControl_2.valueChanges.subscribe(data => {\n if(this.changeDetection_2.value) console.log('CHANGE:',data)\n })\n\n this.selectionControl_3.valueChanges.subscribe(data => {\n if(this.changeDetection_3.value) console.log('CHANGE:',data)\n })\n\n this.selectionControl_4.valueChanges.subscribe(data => {\n if(this.changeDetection_4.value) console.log('CHANGE:',data)\n })\n\n this.selectionControl_5.valueChanges.subscribe(data => {\n if(this.changeDetection_5.value) console.log('CHANGE:',data)\n })\n\n this.selectionControl_6.valueChanges.subscribe(data => {\n if(this.changeDetection_6.value) console.log('CHANGE:',data)\n })\n\n this.selectionControl_7.valueChanges.subscribe(data => {\n if(this.changeDetection_7.value) console.log('CHANGE:',data)\n })\n\n this.selectionControl_8.valueChanges.subscribe(data => {\n if(this.changeDetection_8.value) console.log('CHANGE:',data)\n })\n\n }\n\n onPerformPatch() {\n this.selectionControl_1.patchValue(['Bell'])\n this.selectionControl_2.patchValue(['AT&T'])\n this.selectionControl_3.patchValue(['Telus'])\n this.selectionControl_4.patchValue(['Rogers'])\n\n this.selectionControl_5.patchValue(['Bell'])\n this.selectionControl_6.patchValue(['AT&T'])\n this.selectionControl_7.patchValue(['Telus'])\n this.selectionControl_8.patchValue(['Rogers'])\n }\n\n onChangeDataType(type: string) {\n if(type === 'strings') {\n this.data = this.data_2 //strings\n } else {\n this.data = this.data_1 //objects\n }\n }\n\n // DISABLE\n onDisabled_1(disable: boolean) {\n\n if(disable) {\n this.selectionControl_1.disable()\n } else {\n this.selectionControl_1.enable()\n }\n\n }\n\n onDisabled_2(disable: boolean) {\n\n if(disable) {\n this.selectionControl_2.disable()\n } else {\n this.selectionControl_2.enable()\n }\n\n }\n\n onDisabled_3(disable: boolean) {\n\n if(disable) {\n this.selectionControl_3.disable()\n } else {\n this.selectionControl_3.enable()\n }\n\n }\n\n onDisabled_4(disable: boolean) {\n\n if(disable) {\n this.selectionControl_4.disable()\n } else {\n this.selectionControl_4.enable()\n }\n\n }\n\n onDisabled_5(disable: boolean) {\n\n if(disable) {\n this.selectionControl_5.disable()\n } else {\n this.selectionControl_5.enable()\n }\n\n }\n\n onDisabled_6(disable: boolean) {\n\n if(disable) {\n this.selectionControl_6.disable()\n } else {\n this.selectionControl_6.enable()\n }\n\n }\n\n onDisabled_7(disable: boolean) {\n\n if(disable) {\n this.selectionControl_7.disable()\n } else {\n this.selectionControl_7.enable()\n }\n\n }\n\n onDisabled_8(disable: boolean) {\n\n if(disable) {\n this.selectionControl_8.disable()\n } else {\n this.selectionControl_8.enable()\n }\n\n }\n}\n","<div style=\"display: flex;\">\n <h1>Multi List Selection FormControl</h1>\n <div style=\"flex:1; text-align: right;\">\n <div style=\"display: flex; gap: 2rem; flex-direction: row-reverse;\">\n <mat-button-toggle (click)=\"onPerformPatch()\">Patch</mat-button-toggle>\n\n <mat-button-toggle-group #varTypes=\"matButtonToggleGroup\" (change)=\"onChangeDataType(varTypes.value)\">\n <mat-button-toggle value=\"strings\" checked=\"true\">Strings</mat-button-toggle>\n <mat-button-toggle value=\"objects\" checked=\"false\">Objects</mat-button-toggle>\n </mat-button-toggle-group>\n </div>\n </div>\n</div>\n\n<h3>No Data - Projection of Error</h3>\n<app-list-selection-input error=\"No Data Provided\">\n <h3 style=\"color: red; margin-top: 0; margin-bottom: 0;\">No Data</h3>\n</app-list-selection-input>\n\n<div style=\"margin-top: 2rem; margin-bottom: 1rem;\">\n <mat-divider></mat-divider>\n</div>\n\n<div>\n <h3 style=\"margin-bottom: 0;\">Multi Selection - {{ varTypes.value | uppercase }}</h3>\n\n <div>\n <div style=\"display: flex;\">\n <span style=\"flex:1\"></span>\n <button mat-button (click)=\"selectionControl_4.reset()\">Reset</button>\n </div>\n <app-list-selection-input\n [data]=\"data\"\n [formControl]=\"selectionControl_4\"\n [multiple]=\"true\"\n ></app-list-selection-input>\n <div *ngIf=\"error4.checked\">\n <mat-error *ngIf=\"selectionControl_4.hasError('minRequired')\">You must have a minimum of 1 selected</mat-error>\n <mat-error *ngIf=\"selectionControl_4.hasError('maxExceeded')\">maximum reached</mat-error>\n <mat-error *ngIf=\"selectionControl_4.hasError('required')\">This field is Required</mat-error>\n </div>\n <div style=\"display: flex; gap: 2rem; margin-top: 1rem;\">\n <mat-slide-toggle [formControl]=\"changeDetection_4\">Change Detection</mat-slide-toggle>\n <mat-slide-toggle #error4>Display Error</mat-slide-toggle>\n <mat-slide-toggle #disable4 (change)=\"onDisabled_4(disable4.checked)\">Disable</mat-slide-toggle>\n <span style=\"flex:1\"></span>\n </div>\n <div style=\"margin-top: 2rem;\">\n No Label and Placeholder<br>\n Not Required<br>\n Valid {{ selectionControl_4.valid }}<br>\n </div>\n <div style=\"margin-top: .5rem; margin-bottom: 1rem;\">\n <mat-divider></mat-divider>\n </div>\n </div>\n\n <div>\n <div style=\"display: flex;\">\n <span style=\"flex:1\"></span>\n <button mat-button (click)=\"selectionControl_5.reset()\">Reset</button>\n </div>\n <app-list-selection-input\n [formControl]=\"selectionControl_5\"\n [multiple]=\"true\"\n [data]=\"data\"\n label=\"Sample Selection\"\n placeholder=\"Select Provider\"\n ></app-list-selection-input>\n <div *ngIf=\"error5.checked\">\n <mat-error *ngIf=\"selectionControl_5.hasError('minRequired')\">You must have a minimum of 1 selected</mat-error>\n <mat-error *ngIf=\"selectionControl_5.hasError('maxExceeded')\">maximum reached</mat-error>\n <mat-error *ngIf=\"selectionControl_5.hasError('required')\">This field is Required</mat-error>\n </div>\n <div style=\"display: flex; gap: 2rem; margin-top: 2rem;\">\n <mat-slide-toggle [formControl]=\"changeDetection_5\">Change Detection</mat-slide-toggle>\n <mat-slide-toggle #error5>Display Error</mat-slide-toggle>\n <mat-slide-toggle #disable5 (change)=\"onDisabled_5(disable5.checked)\">Disable</mat-slide-toggle>\n <span style=\"flex:1\"></span>\n </div>\n <div style=\"margin-top: 2rem;\">\n Label and Placeholder<br>\n Not Required<br>\n Valid {{ selectionControl_5.valid }}<br>\n </div>\n <div style=\"margin-top: .5rem; margin-bottom: 1rem;\">\n <mat-divider></mat-divider>\n </div>\n </div>\n\n <div>\n <div style=\"display: flex;\">\n <span style=\"flex:1\"></span>\n <button mat-button (click)=\"selectionControl_6.reset()\">Reset</button>\n </div>\n <app-list-selection-input\n [formControl]=\"selectionControl_6\"\n [multiple]=\"true\"\n [data]=\"data\"\n placeholder=\"Select Provider\"\n [minSelection]=\"2\"\n ></app-list-selection-input>\n <div *ngIf=\"error6.checked\">\n <mat-error *ngIf=\"selectionControl_6.hasError('minRequired')\">You must have a minimum of 1 selected</mat-error>\n <mat-error *ngIf=\"selectionControl_6.hasError('maxExceeded')\">maximum reached</mat-error>\n <mat-error *ngIf=\"selectionControl_6.hasError('required')\">This field is Required</mat-error>\n </div>\n <div style=\"display: flex; gap: 2rem; margin-top: 2rem;\">\n <mat-slide-toggle [formControl]=\"changeDetection_6\">Change Detection</mat-slide-toggle>\n <mat-slide-toggle #error6>Display Error</mat-slide-toggle>\n <mat-slide-toggle #disable6 (change)=\"onDisabled_6(disable6.checked)\">Disable</mat-slide-toggle>\n <span style=\"flex:1\"></span>\n </div>\n <div style=\"margin-top: 2rem;\">\n Placeholder<br>\n Required<br>\n Minimum of 2 Required<br>\n Valid {{ selectionControl_6.valid }}<br>\n </div>\n <div style=\"margin-top: .5rem; margin-bottom: 1rem;\">\n <mat-divider></mat-divider>\n </div>\n </div>\n\n <div>\n <div style=\"display: flex;\">\n <span style=\"flex:1\"></span>\n <button mat-button (click)=\"selectionControl_7.reset()\">Reset</button>\n </div>\n <app-list-selection-input\n [formControl]=\"selectionControl_7\"\n [multiple]=\"true\"\n [data]=\"data\"\n [maxSelection]=\"2\"\n placeholder=\"Select Provider\"\n ></app-list-selection-input>\n <div *ngIf=\"error7.checked\">\n <mat-error *ngIf=\"selectionControl_7.hasError('minRequired')\">You must have a minimum of 1 selected</mat-error>\n <mat-error *ngIf=\"selectionControl_7.hasError('maxExceeded')\">maximum reached</mat-error>\n <mat-error *ngIf=\"selectionControl_7.hasError('required')\">This field is Required</mat-error>\n </div>\n <div style=\"display: flex; gap: 2rem; margin-top: 2rem;\">\n <mat-slide-toggle [formControl]=\"changeDetection_7\">Change Detection</mat-slide-toggle>\n <mat-slide-toggle #error7>Display Error</mat-slide-toggle>\n <mat-slide-toggle #disable7 (change)=\"onDisabled_7(disable7.checked)\">Disable</mat-slide-toggle>\n <span style=\"flex:1\"></span>\n </div>\n <div style=\"margin-top: 2rem;\">\n Placeholder<br>\n Required<br>\n Maximum of 2 Required<br>\n Valid {{ selectionControl_7.valid }}<br>\n </div>\n <div style=\"margin-top: .5rem; margin-bottom: 1rem;\">\n <mat-divider></mat-divider>\n </div>\n </div>\n\n <div>\n <div style=\"display: flex;\">\n <span style=\"flex:1\"></span>\n <button mat-button (click)=\"selectionControl_8.reset()\">Reset</button>\n </div>\n <app-list-selection-input\n [formControl]=\"selectionControl_8\"\n [multiple]=\"true\"\n [data]=\"data\"\n [minSelection]=\"1\"\n [maxSelection]=\"2\"\n placeholder=\"Select Provider\"\n ></app-list-selection-input>\n <div *ngIf=\"error8.checked\">\n <mat-error *ngIf=\"selectionControl_8.hasError('minRequired')\">You must have a minimum of 1 selected</mat-error>\n <mat-error *ngIf=\"selectionControl_8.hasError('maxExceeded')\">maximum reached</mat-error>\n <mat-error *ngIf=\"selectionControl_8.hasError('required')\">This field is Required</mat-error>\n </div>\n <div style=\"display: flex; gap: 2rem; margin-top: 2rem;\">\n <mat-slide-toggle [formControl]=\"changeDetection_8\">Change Detection</mat-slide-toggle>\n <mat-slide-toggle #error8>Display Error</mat-slide-toggle>\n <mat-slide-toggle #disable8 (change)=\"onDisabled_8(disable8.checked)\">Disable</mat-slide-toggle>\n <span style=\"flex:1\"></span>\n </div>\n <div style=\"margin-top: 2rem;\">\n Placeholder<br>\n Required<br>\n Minimum of 1 Required<br>\n Maximum of 2 Required<br>\n Valid {{ selectionControl_8.valid }}<br>\n </div>\n <div style=\"margin-top: .5rem; margin-bottom: 1rem;\">\n <mat-divider></mat-divider>\n </div>\n </div>\n\n</div>\n\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\n\nimport { MatSliderModule } from '@angular/material/slider';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatRadioModule } from '@angular/material/radio';\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\n\nimport { MatDividerModule } from '@angular/material/divider';\nimport { MatButtonToggleModule } from '@angular/material/button-toggle';\nimport { MatToolbarModule } from '@angular/material/toolbar';\nimport { MatOptionModule } from '@angular/material/core';\nimport { MatSelectModule } from '@angular/material/select';\n\nimport { ListMultiSelectionDemoComponent, ListSelectionInputComponent, ListSelectionInputDemoComponent, RemoveUnderscorePipe } from '../public-api';\n\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n MatSliderModule,\n MatButtonModule,\n MatIconModule,\n MatFormFieldModule,\n MatToolbarModule,\n MatCheckboxModule,\n MatMenuModule,\n MatButtonToggleModule,\n MatDividerModule,\n MatRadioModule,\n MatInputModule,\n MatAutocompleteModule,\n RemoveUnderscorePipe,\n MatSelectModule,\n MatOptionModule,\n MatSlideToggleModule,\n ],\n declarations: [\n ListSelectionInputDemoComponent,\n ListMultiSelectionDemoComponent,\n ListSelectionInputComponent,\n ],\n exports: [\n ListSelectionInputDemoComponent,\n ListMultiSelectionDemoComponent,\n ListSelectionInputComponent,\n ]\n})\nexport class ListSelectionInputModule { }\n","/*\n * Public API Surface of checkbox-selection-input\n */\n\nexport * from './lib/models/index';\n\nexport * from './lib/pipes/remove-underscore.pipe';\n\nexport * from './lib/list-selection-demo/list-selection-demo.component';\nexport * from './lib/multi-selection-demo/multi-selection-demo.component';\n\nexport * from './lib/list-selection-input/list-selection-input.component';\n\nexport * from './lib/list-selection-input.module';\n\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i3","i4","i5","i8.ListSelectionInputComponent"],"mappings":"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"}
1
+ {"version":3,"file":"list-selection-input.mjs","sources":["../../../projects/list-selection-input/src/lib/models/selection-basic.model.ts","../../../projects/list-selection-input/src/lib/models/selection-item.model.ts","../../../projects/list-selection-input/src/lib/models/index.ts","../../../projects/list-selection-input/src/lib/pipes/remove-underscore.pipe.ts","../../../projects/list-selection-input/src/lib/list-selection-input/list-selection-input.component.ts","../../../projects/list-selection-input/src/lib/list-selection-input/list-selection-input.component.html","../../../projects/list-selection-input/src/lib/list-selection-demo/list-selection-demo.component.ts","../../../projects/list-selection-input/src/lib/list-selection-demo/list-selection-demo.component.html","../../../projects/list-selection-input/src/lib/multi-selection-demo/multi-selection-demo.component.ts","../../../projects/list-selection-input/src/lib/multi-selection-demo/multi-selection-demo.component.html","../../../projects/list-selection-input/src/lib/list-selection-input.module.ts","../../../projects/list-selection-input/src/public-api.ts","../../../projects/list-selection-input/src/list-selection-input.ts"],"sourcesContent":["export interface SelectionBasicInterface {\n id: number|string;\n value: string;\n}\n\nexport class SelectionBasic implements SelectionBasicInterface {\n\n constructor(\n public id = 0,\n public value = '',\n ) {}\n\n static adapt(item?: any) {\n\n return new SelectionBasic(\n item?.id,\n (item?.value) ? item.value : item,\n );\n }\n\n}\n","export interface SelectionItemInterface {\n id: number|string;\n value: string;\n disabled?: boolean;\n selected?: boolean;\n}\n\nexport class SelectionItem implements SelectionItemInterface {\n\n constructor(\n public id = crypto.randomUUID(),\n public value = '',\n public disabled?: boolean,\n public selected?: boolean,\n ) {}\n\n static adapt(item?: any) {\n\n return new SelectionItem(\n item?.id,\n (item?.value) ? item.value : item,\n (item?.disabled) ? true : false,\n (item?.selected) ? true : false,\n );\n }\n\n}\n","/*\n * Public API Surface of selections\n */\n\nexport * from './selection-basic.model';\nexport * from './selection-item.model';\n\n\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'removeUnderscore',\n standalone: true\n})\nexport class RemoveUnderscorePipe implements PipeTransform {\n transform(value: string): string {\n return value? value.replace(/_/g, \" \") : value;\n }\n}\n","import { Component, EventEmitter, Input, OnInit, Output, forwardRef, inject } from '@angular/core';\nimport { AbstractControl, ControlValueAccessor, FormBuilder, NG_VALIDATORS, NG_VALUE_ACCESSOR, ValidationErrors, Validators } from '@angular/forms';\n\nimport { MatFormFieldAppearance } from '@angular/material/form-field';\n\nimport { MatSelectChange } from '@angular/material/select';\nimport { SelectionItem } from '../models/selection-item.model';\n\n\n@Component({\n selector: 'app-list-selection-input',\n templateUrl: './list-selection-input.component.html',\n styleUrls: ['./list-selection-input.component.css'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ListSelectionInputComponent),\n multi: true\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => ListSelectionInputComponent),\n multi: true\n }\n ],\n standalone: false\n})\nexport class ListSelectionInputComponent implements OnInit, ControlValueAccessor {\n\n fb = inject( FormBuilder)\n\n selectionControl = this.fb.control<any>([], Validators.required)\n\n @Input() label?: string\n @Input() placeholder?: string\n\n private _minSelection = 0\n @Input() set minSelection(value: number) {\n this._minSelection = (value) ? value : 0\n }\n\n get minSelection() {\n return this._minSelection\n }\n\n private _maxSelection = 0\n @Input() set maxSelection(value: number) {\n this._maxSelection = (value) ? value : 0\n }\n\n get maxSelection() {\n return this._maxSelection\n }\n\n private _multiple = false\n @Input() set multiple(value: boolean|undefined) {\n this._multiple = (value) ? value : false\n }\n\n get multiple() {\n return this._multiple\n }\n\n get isValid() {\n return this.isValidRange(this.data)\n }\n\n defaultDisabled: SelectionItem[] = []\n\n @Input() appearance: MatFormFieldAppearance = 'outline'\n\n private _data: (any|string)[] = []\n @Input() set data(value: any[]) {\n\n this.isObjects = this.hasObjects(value)\n this._data = (value) ? value.map(item => SelectionItem.adapt(item)) : []\n\n const selectedObjects = this.data.filter(item => item.selected).map(item => item.value)\n this.defaultDisabled = (!this.defaultDisabled) ? this.data.map(item => SelectionItem.adapt(item)).filter(item => item.disabled) : this.defaultDisabled\n\n if(this.multiple) {\n const selected = (selectedObjects) ? selectedObjects : this.findFirst(selectedObjects)\n this.selectionControl.patchValue(selected, { emitEvent: false })\n } else {\n const selected = (selectedObjects.length === 0 && value.length > 0) ? [value[0]] : this.findFirst(selectedObjects)\n this.selectionControl.patchValue(selected, { emitEvent: false })\n }\n\n }\n\n get data() {\n return this._data\n }\n\n\n @Output() selectionChange = new EventEmitter()\n\n disabled = false\n\n formInitialized = false\n\n isArray = (obj: any) => Array.isArray(obj)\n hasObjects = (obj: any) => (this.isArray(obj) && obj.length > 0) ? this.isObject(obj[0]) : false\n isObject = (obj: any) => typeof obj === 'object' && obj !== null && !Array.isArray(obj)\n\n findFirst = (obj: string[]) => {\n const found = this.data.find(item => obj.includes(item.value))\n return (found) ? found.value : null\n }\n\n onChange: any = () => {}\n onTouch: any = () => {}\n\n isObjects = false\n\n invalid = false\n\n updateSelection = (newData: any[]) => newData.filter(item => !item.selected).map(item => {\n const dis = this.defaultDisabled.map(item => item.value)\n return (dis.includes(item.value)) ? item.disabled = true : item.disabled = false\n })\n\n constructor() { }\n\n ngOnInit() {\n\n if(this.multiple) {\n\n this.defaultDisabled = this.data.filter(item => item.disabled)\n\n if (this.minSelection > 0 && this.minSelection > this.maxSelection) {\n this.minSelection = this.maxSelection !== 0 ? this.maxSelection : this.minSelection;\n } else if (this.maxSelection > 0 && this.maxSelection < this.minSelection) {\n this.maxSelection = this.minSelection;\n }\n\n this.maxSelection = this.maxSelection || this.data.length;\n\n }\n\n }\n\n ngAfterViewInit(): void {\n this.formInitialized = true\n }\n\n writeValue(value: string[]){\n\n const selected = (this.isArray(value) && value.length > 1) ? this.findFirst(value) : value\n\n this.data\n .map(item => {\n item.selected = (value && value.includes(item.value)) ? true : false\n return item\n })\n\n if(selected) {\n\n if(this.multiple) {\n this.selectionControl.patchValue(value, { emitEvent: false })\n } else {\n if(!value || value.length === 0) return\n this.selectionControl.patchValue(this.findFirst(value), { emitEvent: false })\n this.selectionControl.markAsDirty({ onlySelf: true })\n }\n\n }\n\n if(this.formInitialized && !this.selectionControl.pristine) {\n if(value === null) this.selectionControl.reset()\n this.selectionControl.markAsDirty({ onlySelf: true })\n this.selectionControl.markAllAsTouched()\n } else if(this.formInitialized && this.selectionControl.pristine) {\n if(value === null) this.selectionControl.reset()\n }\n\n this.formInitialized = true\n\n }\n\n validate(control: AbstractControl): ValidationErrors | null {\n\n const isRequired = control.hasValidator(Validators.required) ? true : false\n\n let errors = { 'minRequired': false, 'maxExceeded': false }\n\n if(!isRequired) this.selectionControl.clearValidators()\n if(this.minSelection > 0) this.selectionControl.addValidators(Validators.minLength(this.minSelection))\n\n const hasValue = (!this.selectionControl.value || this.selectionControl.value?.length === 0)\n\n if(this.minSelection > 0) {\n const hasMin = (this.selectionControl.value?.length+1 <= this.minSelection) ? true : false\n errors.minRequired = hasMin\n }\n\n if(this.maxSelection > 0) {\n const hasMax = (this.selectionControl.value?.length >= this.maxSelection) ? true : false\n errors.maxExceeded = hasMax\n }\n\n const hasErrors = this.selectedValues(errors, true).length > 0\n const values = this.selectedValues(this.selectionControl.value || [], true).length\n const hasValues = (this.minSelection > 0 && values > this.minSelection) || (this.maxSelection > 0 && values < this.maxSelection)\n\n const finalErrors = (isRequired && !hasValues && hasErrors) ? errors : null\n\n return finalErrors\n\n }\n\n registerOnChange(fn: any){\n this.onChange = fn\n }\n\n registerOnTouched(fn: any){\n this.onTouch = fn\n }\n\n setDisabledState?(isDisabled: boolean) {\n\n this.disabled = isDisabled\n\n if(this.disabled) {\n this.selectionControl.disable()\n } else {\n this.selectionControl.enable()\n }\n\n }\n\n onSelection(selection: MatSelectChange|any) {\n\n this.invalid = false\n\n if(this.multiple) {\n\n const checkboxSelected = selection.value\n\n const newData = this.data.map(item => SelectionItem.adapt(item))\n\n newData.map(item => item.selected = checkboxSelected.includes(item.value) ? true : false)\n\n if(this.isValidRange(newData)) this.data = newData\n\n const curSelected = this.data.filter(item => item.selected).length\n const prevSelected = newData.filter(item => item.selected).length\n\n if(curSelected > this.maxSelection) {\n this.updateSelection(newData)\n } else {\n\n if(prevSelected < curSelected) {\n this.updateSelection(newData)\n } else {\n\n if(curSelected >= this.maxSelection) {\n\n const dis = this.defaultDisabled.map(item => item.value)\n\n newData.filter(item => !item.selected).map(item => {\n return item.disabled = (dis.includes(item.value)) ? item.disabled : !item.disabled\n })\n\n } else {\n this.updateSelection(newData)\n }\n\n }\n\n }\n\n this.data = newData\n\n const sel = this.data.filter(item => item.selected).map(item => item.value)\n this.selectionControl.patchValue(sel, { emitEvent: false })\n\n }\n\n selection = (selection?.value) ? selection.value : selection\n\n const selected = (this.multiple) ? this.isArray(selection) ? selection : [selection] : [selection]\n const data = this.data.map(({ id, value }) => ({id, value}))\n const newData = data.filter((item: any) => selected.includes(item.value))\n const selectedData = (this.isObjects) ? newData : newData.map(({ value }) => value)\n\n this.selectionControl.markAllAsTouched()\n\n this.selectionChange.emit(data)\n this.onChange(selectedData)\n\n }\n\n findControlDisabled(control: string) {\n const found = this.data.find(item => item.value === control)\n const disabled = (found?.disabled) ? found.disabled : false\n return disabled\n }\n\n isValidRange(data: any[]) {\n\n const selected = data.filter(item => item.selected).length\n\n if(this.multiple) {\n\n const isMin = (this.minSelection !== 0) ? selected >= this.minSelection : true\n const isMax = (this.maxSelection !== 0) ? selected <= this.maxSelection : true\n\n return isMin && isMax\n\n } else {\n return selected > 0\n }\n\n }\n\n selectedValues(obj: any, state = false) {\n return Object.entries(obj).filter(([key, value]) => value === state).map(([key, _]) => key)\n }\n\n}\n","<div style=\"display: flex; flex-direction: column;\">\n <div style=\"margin-bottom: .5rem; display: flex; flex-direction: column;\">\n <mat-label style=\"font-size: larger;\">\n {{ label }}\n </mat-label>\n </div>\n @if (data && data.length > 0) {\n <mat-form-field\n style=\"display: flex;\"\n [appearance]=\"appearance\"\n >\n <mat-select\n [formControl]=\"selectionControl\"\n (selectionChange)=\"onSelection($event)\"\n [multiple]=\"multiple\"\n [placeholder]=\"placeholder||''\"\n >\n @for (option of data; track option) {\n <mat-option\n [value]=\"option.value\"\n [disabled]=\"option.disabled\"\n >\n {{option.value}}\n </mat-option>\n }\n </mat-select>\n </mat-form-field>\n } @else {\n <div class=\"wrapper\">\n <ng-content></ng-content>\n </div>\n }\n</div>\n\n","import { Component, OnInit, inject } from '@angular/core';\nimport { FormBuilder, Validators } from '@angular/forms';\n\n@Component({\n selector: 'app-list-selection-demo',\n templateUrl: './list-selection-demo.component.html',\n styleUrls: ['./list-selection-demo.component.scss'],\n standalone: false\n})\nexport class ListSelectionInputDemoComponent implements OnInit {\n\n fb = inject(FormBuilder)\n\n data_1 = [\n { id: 11, value: 'Telus' },\n { id: 12, value: 'AT&T', disabled: true },\n { id: 14, value: 'Bell', selected: true},\n { id: 63, value: 'Rogers', selected: true }\n ]\n\n data_2 = ['Telus', 'AT&T', 'Bell', 'Rogers']\n\n // SELECTIONS\n selectionControl_1 = this.fb.control<string[]|null>(null, Validators.required)\n selectionControl_2 = this.fb.control<string[]|null>(null, Validators.required)\n selectionControl_3 = this.fb.control<string[]|null>(null, Validators.required)\n\n selectionControl_4 = this.fb.control<string[]|null>(null)\n selectionControl_5 = this.fb.control<string[]|null>(null)\n\n selectionControl_6 = this.fb.control<string[]|null>(null, Validators.required)\n selectionControl_7 = this.fb.control<string[]|null>(null, Validators.required)\n selectionControl_8 = this.fb.control<string[]|null>(null, Validators.required)\n\n //CHANGE DETECTION\n changeDetection_1 = this.fb.control(false)\n changeDetection_2 = this.fb.control(false)\n changeDetection_3 = this.fb.control(false)\n changeDetection_4 = this.fb.control(false)\n changeDetection_5 = this.fb.control(false)\n changeDetection_6 = this.fb.control(false)\n changeDetection_7 = this.fb.control(false)\n changeDetection_8 = this.fb.control(false)\n\n data: any = this.data_2\n\n constructor() { }\n\n ngOnInit() {\n\n // SELECTIONS\n this.selectionControl_1.valueChanges.subscribe(data => {\n if(this.changeDetection_1.value) console.log('CHANGE:',data)\n })\n\n this.selectionControl_2.valueChanges.subscribe(data => {\n if(this.changeDetection_2.value) console.log('CHANGE:',data)\n })\n\n this.selectionControl_3.valueChanges.subscribe(data => {\n if(this.changeDetection_3.value) console.log('CHANGE:',data)\n })\n\n this.selectionControl_4.valueChanges.subscribe(data => {\n if(this.changeDetection_4.value) console.log('CHANGE:',data)\n })\n\n this.selectionControl_5.valueChanges.subscribe(data => {\n if(this.changeDetection_5.value) console.log('CHANGE:',data)\n })\n\n this.selectionControl_6.valueChanges.subscribe(data => {\n if(this.changeDetection_6.value) console.log('CHANGE:',data)\n })\n\n this.selectionControl_7.valueChanges.subscribe(data => {\n if(this.changeDetection_7.value) console.log('CHANGE:',data)\n })\n\n this.selectionControl_8.valueChanges.subscribe(data => {\n if(this.changeDetection_8.value) console.log('CHANGE:',data)\n })\n\n }\n\n onPerformPatch() {\n this.selectionControl_1.patchValue(['Bell'])\n this.selectionControl_2.patchValue(['AT&T'])\n this.selectionControl_3.patchValue(['Telus'])\n this.selectionControl_4.patchValue(['Rogers'])\n\n this.selectionControl_5.patchValue(['Bell'])\n this.selectionControl_6.patchValue(['AT&T'])\n this.selectionControl_7.patchValue(['Telus'])\n this.selectionControl_8.patchValue(['Rogers'])\n }\n\n onChangeDataType(type: string) {\n if(type === 'strings') {\n this.data = this.data_2 //strings\n } else {\n this.data = this.data_1 //objects\n }\n }\n\n // DISABLE\n onDisabled_1(disable: boolean) {\n\n if(disable) {\n this.selectionControl_1.disable()\n } else {\n this.selectionControl_1.enable()\n }\n\n }\n\n onDisabled_2(disable: boolean) {\n\n if(disable) {\n this.selectionControl_2.disable()\n } else {\n this.selectionControl_2.enable()\n }\n\n }\n\n onDisabled_3(disable: boolean) {\n\n if(disable) {\n this.selectionControl_3.disable()\n } else {\n this.selectionControl_3.enable()\n }\n\n }\n\n onDisabled_4(disable: boolean) {\n\n if(disable) {\n this.selectionControl_4.disable()\n } else {\n this.selectionControl_4.enable()\n }\n\n }\n\n onDisabled_5(disable: boolean) {\n\n if(disable) {\n this.selectionControl_5.disable()\n } else {\n this.selectionControl_5.enable()\n }\n\n }\n\n onDisabled_6(disable: boolean) {\n\n if(disable) {\n this.selectionControl_6.disable()\n } else {\n this.selectionControl_6.enable()\n }\n\n }\n\n onDisabled_7(disable: boolean) {\n\n if(disable) {\n this.selectionControl_7.disable()\n } else {\n this.selectionControl_7.enable()\n }\n\n }\n\n onDisabled_8(disable: boolean) {\n\n if(disable) {\n this.selectionControl_8.disable()\n } else {\n this.selectionControl_8.enable()\n }\n\n }\n}\n","<div style=\"display: flex;\">\n <h1>List Selection FormControl</h1>\n <div style=\"flex:1; text-align: right;\">\n <div style=\"display: flex; gap: 2rem; flex-direction: row-reverse;\">\n <mat-button-toggle (click)=\"onPerformPatch()\">Patch</mat-button-toggle>\n\n <mat-button-toggle-group #varTypes=\"matButtonToggleGroup\" (change)=\"onChangeDataType(varTypes.value)\">\n <mat-button-toggle value=\"strings\" checked=\"true\">Strings</mat-button-toggle>\n <mat-button-toggle value=\"objects\" checked=\"false\">Objects</mat-button-toggle>\n </mat-button-toggle-group>\n </div>\n </div>\n</div>\n\n<h3>No Data - Projection of Error</h3>\n<app-list-selection-input error=\"No Data Provided\">\n <h3 style=\"color: red; margin-top: 0; margin-bottom: 0;\">No Data</h3>\n</app-list-selection-input>\n\n<div style=\"margin-top: 2rem; margin-bottom: 1rem;\">\n <mat-divider></mat-divider>\n</div>\n\n<div>\n <h3 style=\"margin-bottom: 0;\">Single Selection - {{ varTypes.value | uppercase }}</h3>\n <div>\n <div style=\"display: flex;\">\n <span style=\"flex:1\"></span>\n <button mat-button (click)=\"selectionControl_1.reset()\">Reset</button>\n </div>\n <app-list-selection-input\n [data]=\"data\"\n [formControl]=\"selectionControl_1\"\n ></app-list-selection-input>\n @if (error1.checked) {\n <div>\n @if (selectionControl_1.hasError('minRequired')) {\n <mat-error>You must have a minimun of 1 selected</mat-error>\n }\n @if (selectionControl_1.hasError('maxExceeded')) {\n <mat-error>maximum reached</mat-error>\n }\n @if (selectionControl_1.hasError('required')) {\n <mat-error>This field is Required</mat-error>\n }\n </div>\n }\n <div style=\"display: flex; gap: 2rem; margin-top: 1rem;\">\n <mat-slide-toggle [formControl]=\"changeDetection_1\">Change Detection</mat-slide-toggle>\n <mat-slide-toggle #error1>Display Error</mat-slide-toggle>\n <mat-slide-toggle #disable1 (change)=\"onDisabled_1(disable1.checked)\">Disable</mat-slide-toggle>\n <span style=\"flex:1\"></span>\n </div>\n <div style=\"margin-top: 2rem;\">\n No Label or Placeholder<br>\n Required<br>\n Valid {{ selectionControl_1.valid }}<br>\n </div>\n </div>\n\n <div style=\"margin-top: 2rem; margin-bottom: 1rem;\">\n <mat-divider></mat-divider>\n </div>\n\n <div>\n <div style=\"display: flex;\">\n <span style=\"flex:1\"></span>\n <button mat-button (click)=\"selectionControl_2.reset()\">Reset</button>\n </div>\n <app-list-selection-input\n [data]=\"data\"\n [formControl]=\"selectionControl_2\"\n label=\"Providers\"\n placeholder=\"Select Provider\"\n ></app-list-selection-input>\n @if (error2.checked) {\n <div>\n @if (selectionControl_2.hasError('minRequired')) {\n <mat-error>You must have a minimum of 1 selected</mat-error>\n }\n @if (selectionControl_2.hasError('maxExceeded')) {\n <mat-error>maximum reached</mat-error>\n }\n @if (selectionControl_2.hasError('required')) {\n <mat-error>This field is Required</mat-error>\n }\n </div>\n }\n <div style=\"display: flex; gap: 2rem; margin-top: 1rem;\">\n <mat-slide-toggle [formControl]=\"changeDetection_2\">Change Detection</mat-slide-toggle>\n <mat-slide-toggle #error2>Display Error</mat-slide-toggle>\n <mat-slide-toggle #disable2 (change)=\"onDisabled_2(disable2.checked)\">Disable</mat-slide-toggle>\n <span style=\"flex:1\"></span>\n </div>\n <div style=\"margin-top: 2rem;\">\n Label and Placeholder<br>\n Required<br>\n Valid {{ selectionControl_2.valid }}<br>\n </div>\n <div style=\"margin-top: .5rem; margin-bottom: 1rem;\">\n <mat-divider></mat-divider>\n </div>\n </div>\n\n <div>\n <div style=\"display: flex;\">\n <span style=\"flex:1\"></span>\n <button mat-button (click)=\"selectionControl_3.reset()\">Reset</button>\n </div>\n <app-list-selection-input\n [data]=\"data\"\n [formControl]=\"selectionControl_3\"\n label=\"Providers\"\n placeholder=\"Select Provider\"\n appearance=\"fill\"\n ></app-list-selection-input>\n @if (error3.checked) {\n <div>\n @if (selectionControl_3.hasError('minRequired')) {\n <mat-error>You must have a minimum of 1 selected</mat-error>\n }\n @if (selectionControl_3.hasError('maxExceeded')) {\n <mat-error>maximum reached</mat-error>\n }\n @if (selectionControl_3.hasError('required')) {\n <mat-error>This field is Required</mat-error>\n }\n </div>\n }\n <div style=\"display: flex; gap: 2rem; margin-top: 1rem;\">\n <mat-slide-toggle [formControl]=\"changeDetection_3\">Change Detection</mat-slide-toggle>\n <mat-slide-toggle #error3>Display Error</mat-slide-toggle>\n <mat-slide-toggle #disable3 (change)=\"onDisabled_3(disable3.checked)\">Disable</mat-slide-toggle>\n <span style=\"flex:1\"></span>\n </div>\n <div style=\"margin-top: 2rem;\">\n Label and Placeholder<br>\n Appearance is Fill<br>\n Required<br>\n Valid {{ selectionControl_3.valid }}<br>\n </div>\n <div style=\"margin-top: .5rem; margin-bottom: 1rem;\">\n <mat-divider></mat-divider>\n </div>\n </div>\n\n</div>\n\n","import { Component, OnInit, inject } from '@angular/core';\nimport { FormBuilder, Validators } from '@angular/forms';\n\n@Component({\n selector: 'app-list-multi-selection-demo',\n templateUrl: './multi-selection-demo.component.html',\n styleUrls: ['./multi-selection-demo.component.scss'],\n standalone: false\n})\nexport class ListMultiSelectionDemoComponent implements OnInit {\n\n fb = inject(FormBuilder)\n\n data_1 = [\n { id: 11, value: 'Telus' },\n { id: 12, value: 'AT&T', disabled: true },\n { id: 14, value: 'Bell', selected: true},\n { id: 63, value: 'Rogers', selected: true }\n ]\n\n data_2 = ['Telus', 'AT&T', 'Bell', 'Rogers']\n\n // SELECTIONS\n selectionControl_1 = this.fb.control<string[]|null>(null, Validators.required)\n selectionControl_2 = this.fb.control<string[]|null>(null, Validators.required)\n selectionControl_3 = this.fb.control<string[]|null>(null, Validators.required)\n\n selectionControl_4 = this.fb.control<string[]|null>(null)\n selectionControl_5 = this.fb.control<string[]|null>(null)\n\n selectionControl_6 = this.fb.control<string[]|null>(null, Validators.required)\n selectionControl_7 = this.fb.control<string[]|null>(null, Validators.required)\n selectionControl_8 = this.fb.control<string[]|null>(null, Validators.required)\n\n //CHANGE DETECTION\n changeDetection_1 = this.fb.control(false)\n changeDetection_2 = this.fb.control(false)\n changeDetection_3 = this.fb.control(false)\n changeDetection_4 = this.fb.control(false)\n changeDetection_5 = this.fb.control(false)\n changeDetection_6 = this.fb.control(false)\n changeDetection_7 = this.fb.control(false)\n changeDetection_8 = this.fb.control(false)\n\n data: any = this.data_2\n\n constructor() { }\n\n ngOnInit() {\n\n // SELECTIONS\n this.selectionControl_1.valueChanges.subscribe(data => {\n if(this.changeDetection_1.value) console.log('CHANGE:',data)\n })\n\n this.selectionControl_2.valueChanges.subscribe(data => {\n if(this.changeDetection_2.value) console.log('CHANGE:',data)\n })\n\n this.selectionControl_3.valueChanges.subscribe(data => {\n if(this.changeDetection_3.value) console.log('CHANGE:',data)\n })\n\n this.selectionControl_4.valueChanges.subscribe(data => {\n if(this.changeDetection_4.value) console.log('CHANGE:',data)\n })\n\n this.selectionControl_5.valueChanges.subscribe(data => {\n if(this.changeDetection_5.value) console.log('CHANGE:',data)\n })\n\n this.selectionControl_6.valueChanges.subscribe(data => {\n if(this.changeDetection_6.value) console.log('CHANGE:',data)\n })\n\n this.selectionControl_7.valueChanges.subscribe(data => {\n if(this.changeDetection_7.value) console.log('CHANGE:',data)\n })\n\n this.selectionControl_8.valueChanges.subscribe(data => {\n if(this.changeDetection_8.value) console.log('CHANGE:',data)\n })\n\n }\n\n onPerformPatch() {\n this.selectionControl_1.patchValue(['Bell'])\n this.selectionControl_2.patchValue(['AT&T'])\n this.selectionControl_3.patchValue(['Telus'])\n this.selectionControl_4.patchValue(['Rogers'])\n\n this.selectionControl_5.patchValue(['Bell'])\n this.selectionControl_6.patchValue(['AT&T'])\n this.selectionControl_7.patchValue(['Telus'])\n this.selectionControl_8.patchValue(['Rogers'])\n }\n\n onChangeDataType(type: string) {\n if(type === 'strings') {\n this.data = this.data_2 //strings\n } else {\n this.data = this.data_1 //objects\n }\n }\n\n // DISABLE\n onDisabled_1(disable: boolean) {\n\n if(disable) {\n this.selectionControl_1.disable()\n } else {\n this.selectionControl_1.enable()\n }\n\n }\n\n onDisabled_2(disable: boolean) {\n\n if(disable) {\n this.selectionControl_2.disable()\n } else {\n this.selectionControl_2.enable()\n }\n\n }\n\n onDisabled_3(disable: boolean) {\n\n if(disable) {\n this.selectionControl_3.disable()\n } else {\n this.selectionControl_3.enable()\n }\n\n }\n\n onDisabled_4(disable: boolean) {\n\n if(disable) {\n this.selectionControl_4.disable()\n } else {\n this.selectionControl_4.enable()\n }\n\n }\n\n onDisabled_5(disable: boolean) {\n\n if(disable) {\n this.selectionControl_5.disable()\n } else {\n this.selectionControl_5.enable()\n }\n\n }\n\n onDisabled_6(disable: boolean) {\n\n if(disable) {\n this.selectionControl_6.disable()\n } else {\n this.selectionControl_6.enable()\n }\n\n }\n\n onDisabled_7(disable: boolean) {\n\n if(disable) {\n this.selectionControl_7.disable()\n } else {\n this.selectionControl_7.enable()\n }\n\n }\n\n onDisabled_8(disable: boolean) {\n\n if(disable) {\n this.selectionControl_8.disable()\n } else {\n this.selectionControl_8.enable()\n }\n\n }\n}\n","<div style=\"display: flex;\">\n <h1>Multi List Selection FormControl</h1>\n <div style=\"flex:1; text-align: right;\">\n <div style=\"display: flex; gap: 2rem; flex-direction: row-reverse;\">\n <mat-button-toggle (click)=\"onPerformPatch()\">Patch</mat-button-toggle>\n\n <mat-button-toggle-group #varTypes=\"matButtonToggleGroup\" (change)=\"onChangeDataType(varTypes.value)\">\n <mat-button-toggle value=\"strings\" checked=\"true\">Strings</mat-button-toggle>\n <mat-button-toggle value=\"objects\" checked=\"false\">Objects</mat-button-toggle>\n </mat-button-toggle-group>\n </div>\n </div>\n</div>\n\n<h3>No Data - Projection of Error</h3>\n<app-list-selection-input error=\"No Data Provided\">\n <h3 style=\"color: red; margin-top: 0; margin-bottom: 0;\">No Data</h3>\n</app-list-selection-input>\n\n<div style=\"margin-top: 2rem; margin-bottom: 1rem;\">\n <mat-divider></mat-divider>\n</div>\n\n<div>\n <h3 style=\"margin-bottom: 0;\">Multi Selection - {{ varTypes.value | uppercase }}</h3>\n\n <div>\n <div style=\"display: flex;\">\n <span style=\"flex:1\"></span>\n <button mat-button (click)=\"selectionControl_4.reset()\">Reset</button>\n </div>\n <app-list-selection-input\n [data]=\"data\"\n [formControl]=\"selectionControl_4\"\n [multiple]=\"true\"\n ></app-list-selection-input>\n @if (error4.checked) {\n <div>\n @if (selectionControl_4.hasError('minRequired')) {\n <mat-error>You must have a minimum of 1 selected</mat-error>\n }\n @if (selectionControl_4.hasError('maxExceeded')) {\n <mat-error>maximum reached</mat-error>\n }\n @if (selectionControl_4.hasError('required')) {\n <mat-error>This field is Required</mat-error>\n }\n </div>\n }\n <div style=\"display: flex; gap: 2rem; margin-top: 1rem;\">\n <mat-slide-toggle [formControl]=\"changeDetection_4\">Change Detection</mat-slide-toggle>\n <mat-slide-toggle #error4>Display Error</mat-slide-toggle>\n <mat-slide-toggle #disable4 (change)=\"onDisabled_4(disable4.checked)\">Disable</mat-slide-toggle>\n <span style=\"flex:1\"></span>\n </div>\n <div style=\"margin-top: 2rem;\">\n No Label and Placeholder<br>\n Not Required<br>\n Valid {{ selectionControl_4.valid }}<br>\n </div>\n <div style=\"margin-top: .5rem; margin-bottom: 1rem;\">\n <mat-divider></mat-divider>\n </div>\n </div>\n\n <div>\n <div style=\"display: flex;\">\n <span style=\"flex:1\"></span>\n <button mat-button (click)=\"selectionControl_5.reset()\">Reset</button>\n </div>\n <app-list-selection-input\n [formControl]=\"selectionControl_5\"\n [multiple]=\"true\"\n [data]=\"data\"\n label=\"Sample Selection\"\n placeholder=\"Select Provider\"\n ></app-list-selection-input>\n @if (error5.checked) {\n <div>\n @if (selectionControl_5.hasError('minRequired')) {\n <mat-error>You must have a minimum of 1 selected</mat-error>\n }\n @if (selectionControl_5.hasError('maxExceeded')) {\n <mat-error>maximum reached</mat-error>\n }\n @if (selectionControl_5.hasError('required')) {\n <mat-error>This field is Required</mat-error>\n }\n </div>\n }\n <div style=\"display: flex; gap: 2rem; margin-top: 2rem;\">\n <mat-slide-toggle [formControl]=\"changeDetection_5\">Change Detection</mat-slide-toggle>\n <mat-slide-toggle #error5>Display Error</mat-slide-toggle>\n <mat-slide-toggle #disable5 (change)=\"onDisabled_5(disable5.checked)\">Disable</mat-slide-toggle>\n <span style=\"flex:1\"></span>\n </div>\n <div style=\"margin-top: 2rem;\">\n Label and Placeholder<br>\n Not Required<br>\n Valid {{ selectionControl_5.valid }}<br>\n </div>\n <div style=\"margin-top: .5rem; margin-bottom: 1rem;\">\n <mat-divider></mat-divider>\n </div>\n </div>\n\n <div>\n <div style=\"display: flex;\">\n <span style=\"flex:1\"></span>\n <button mat-button (click)=\"selectionControl_6.reset()\">Reset</button>\n </div>\n <app-list-selection-input\n [formControl]=\"selectionControl_6\"\n [multiple]=\"true\"\n [data]=\"data\"\n placeholder=\"Select Provider\"\n [minSelection]=\"2\"\n ></app-list-selection-input>\n @if (error6.checked) {\n <div>\n @if (selectionControl_6.hasError('minRequired')) {\n <mat-error>You must have a minimum of 1 selected</mat-error>\n }\n @if (selectionControl_6.hasError('maxExceeded')) {\n <mat-error>maximum reached</mat-error>\n }\n @if (selectionControl_6.hasError('required')) {\n <mat-error>This field is Required</mat-error>\n }\n </div>\n }\n <div style=\"display: flex; gap: 2rem; margin-top: 2rem;\">\n <mat-slide-toggle [formControl]=\"changeDetection_6\">Change Detection</mat-slide-toggle>\n <mat-slide-toggle #error6>Display Error</mat-slide-toggle>\n <mat-slide-toggle #disable6 (change)=\"onDisabled_6(disable6.checked)\">Disable</mat-slide-toggle>\n <span style=\"flex:1\"></span>\n </div>\n <div style=\"margin-top: 2rem;\">\n Placeholder<br>\n Required<br>\n Minimum of 2 Required<br>\n Valid {{ selectionControl_6.valid }}<br>\n </div>\n <div style=\"margin-top: .5rem; margin-bottom: 1rem;\">\n <mat-divider></mat-divider>\n </div>\n </div>\n\n <div>\n <div style=\"display: flex;\">\n <span style=\"flex:1\"></span>\n <button mat-button (click)=\"selectionControl_7.reset()\">Reset</button>\n </div>\n <app-list-selection-input\n [formControl]=\"selectionControl_7\"\n [multiple]=\"true\"\n [data]=\"data\"\n [maxSelection]=\"2\"\n placeholder=\"Select Provider\"\n ></app-list-selection-input>\n @if (error7.checked) {\n <div>\n @if (selectionControl_7.hasError('minRequired')) {\n <mat-error>You must have a minimum of 1 selected</mat-error>\n }\n @if (selectionControl_7.hasError('maxExceeded')) {\n <mat-error>maximum reached</mat-error>\n }\n @if (selectionControl_7.hasError('required')) {\n <mat-error>This field is Required</mat-error>\n }\n </div>\n }\n <div style=\"display: flex; gap: 2rem; margin-top: 2rem;\">\n <mat-slide-toggle [formControl]=\"changeDetection_7\">Change Detection</mat-slide-toggle>\n <mat-slide-toggle #error7>Display Error</mat-slide-toggle>\n <mat-slide-toggle #disable7 (change)=\"onDisabled_7(disable7.checked)\">Disable</mat-slide-toggle>\n <span style=\"flex:1\"></span>\n </div>\n <div style=\"margin-top: 2rem;\">\n Placeholder<br>\n Required<br>\n Maximum of 2 Required<br>\n Valid {{ selectionControl_7.valid }}<br>\n </div>\n <div style=\"margin-top: .5rem; margin-bottom: 1rem;\">\n <mat-divider></mat-divider>\n </div>\n </div>\n\n <div>\n <div style=\"display: flex;\">\n <span style=\"flex:1\"></span>\n <button mat-button (click)=\"selectionControl_8.reset()\">Reset</button>\n </div>\n <app-list-selection-input\n [formControl]=\"selectionControl_8\"\n [multiple]=\"true\"\n [data]=\"data\"\n [minSelection]=\"1\"\n [maxSelection]=\"2\"\n placeholder=\"Select Provider\"\n ></app-list-selection-input>\n @if (error8.checked) {\n <div>\n @if (selectionControl_8.hasError('minRequired')) {\n <mat-error>You must have a minimum of 1 selected</mat-error>\n }\n @if (selectionControl_8.hasError('maxExceeded')) {\n <mat-error>maximum reached</mat-error>\n }\n @if (selectionControl_8.hasError('required')) {\n <mat-error>This field is Required</mat-error>\n }\n </div>\n }\n <div style=\"display: flex; gap: 2rem; margin-top: 2rem;\">\n <mat-slide-toggle [formControl]=\"changeDetection_8\">Change Detection</mat-slide-toggle>\n <mat-slide-toggle #error8>Display Error</mat-slide-toggle>\n <mat-slide-toggle #disable8 (change)=\"onDisabled_8(disable8.checked)\">Disable</mat-slide-toggle>\n <span style=\"flex:1\"></span>\n </div>\n <div style=\"margin-top: 2rem;\">\n Placeholder<br>\n Required<br>\n Minimum of 1 Required<br>\n Maximum of 2 Required<br>\n Valid {{ selectionControl_8.valid }}<br>\n </div>\n <div style=\"margin-top: .5rem; margin-bottom: 1rem;\">\n <mat-divider></mat-divider>\n </div>\n </div>\n\n</div>\n\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\n\nimport { MatSliderModule } from '@angular/material/slider';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatRadioModule } from '@angular/material/radio';\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\n\nimport { MatDividerModule } from '@angular/material/divider';\nimport { MatButtonToggleModule } from '@angular/material/button-toggle';\nimport { MatToolbarModule } from '@angular/material/toolbar';\nimport { MatOptionModule } from '@angular/material/core';\nimport { MatSelectModule } from '@angular/material/select';\n\nimport { ListMultiSelectionDemoComponent, ListSelectionInputComponent, ListSelectionInputDemoComponent, RemoveUnderscorePipe } from '../public-api';\n\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n MatSliderModule,\n MatButtonModule,\n MatIconModule,\n MatFormFieldModule,\n MatToolbarModule,\n MatCheckboxModule,\n MatMenuModule,\n MatButtonToggleModule,\n MatDividerModule,\n MatRadioModule,\n MatInputModule,\n MatAutocompleteModule,\n RemoveUnderscorePipe,\n MatSelectModule,\n MatOptionModule,\n MatSlideToggleModule,\n ],\n declarations: [\n ListSelectionInputDemoComponent,\n ListMultiSelectionDemoComponent,\n ListSelectionInputComponent,\n ],\n exports: [\n ListSelectionInputDemoComponent,\n ListMultiSelectionDemoComponent,\n ListSelectionInputComponent,\n ]\n})\nexport class ListSelectionInputModule { }\n","/*\n * Public API Surface of checkbox-selection-input\n */\n\nexport * from './lib/models/index';\n\nexport * from './lib/pipes/remove-underscore.pipe';\n\nexport * from './lib/list-selection-demo/list-selection-demo.component';\nexport * from './lib/multi-selection-demo/multi-selection-demo.component';\n\nexport * from './lib/list-selection-input/list-selection-input.component';\n\nexport * from './lib/list-selection-input.module';\n\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2","i3","i4","i7.ListSelectionInputComponent"],"mappings":"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"}
Binary file
package/package.json CHANGED
@@ -1,6 +1,15 @@
1
1
  {
2
2
  "name": "list-selection-input",
3
- "version": "15.0.4",
3
+ "version": "15.0.5",
4
+ "homepage": "https://wavecoders.ca",
5
+ "author": "Mike Bonifacio <wavecoders@gmail.com> (http://wavecoders@gmail.com/)",
6
+ "description": "This is an Angular Module containing Components/Services using Material",
7
+ "funding": [
8
+ {
9
+ "type": "individual",
10
+ "url": "http://wavecoders.ca/donate"
11
+ }
12
+ ],
4
13
  "peerDependencies": {
5
14
  "@angular/common": "^15.2.0",
6
15
  "@angular/core": "^15.2.0"
@@ -10,15 +19,13 @@
10
19
  },
11
20
  "sideEffects": false,
12
21
  "module": "fesm2022/list-selection-input.mjs",
13
- "typings": "index.d.ts",
22
+ "typings": "types/list-selection-input.d.ts",
14
23
  "exports": {
15
24
  "./package.json": {
16
25
  "default": "./package.json"
17
26
  },
18
27
  ".": {
19
- "types": "./index.d.ts",
20
- "esm2022": "./esm2022/list-selection-input.mjs",
21
- "esm": "./esm2022/list-selection-input.mjs",
28
+ "types": "./types/list-selection-input.d.ts",
22
29
  "default": "./fesm2022/list-selection-input.mjs"
23
30
  }
24
31
  }
@@ -0,0 +1,215 @@
1
+ import * as i0 from '@angular/core';
2
+ import { PipeTransform, OnInit, EventEmitter } from '@angular/core';
3
+ import * as _angular_forms from '@angular/forms';
4
+ import { FormBuilder, ControlValueAccessor, AbstractControl, ValidationErrors } from '@angular/forms';
5
+ import * as i9 from '@angular/material/form-field';
6
+ import { MatFormFieldAppearance } from '@angular/material/form-field';
7
+ import * as i19 from '@angular/material/select';
8
+ import { MatSelectChange } from '@angular/material/select';
9
+ import * as i4 from '@angular/common';
10
+ import * as i6 from '@angular/material/slider';
11
+ import * as i7 from '@angular/material/button';
12
+ import * as i8 from '@angular/material/icon';
13
+ import * as i10 from '@angular/material/toolbar';
14
+ import * as i11 from '@angular/material/checkbox';
15
+ import * as i12 from '@angular/material/menu';
16
+ import * as i13 from '@angular/material/button-toggle';
17
+ import * as i14 from '@angular/material/divider';
18
+ import * as i15 from '@angular/material/radio';
19
+ import * as i16 from '@angular/material/input';
20
+ import * as i17 from '@angular/material/autocomplete';
21
+ import * as i20 from '@angular/material/core';
22
+ import * as i21 from '@angular/material/slide-toggle';
23
+
24
+ interface SelectionBasicInterface {
25
+ id: number | string;
26
+ value: string;
27
+ }
28
+ declare class SelectionBasic implements SelectionBasicInterface {
29
+ id: number;
30
+ value: string;
31
+ constructor(id?: number, value?: string);
32
+ static adapt(item?: any): SelectionBasic;
33
+ }
34
+
35
+ interface SelectionItemInterface {
36
+ id: number | string;
37
+ value: string;
38
+ disabled?: boolean;
39
+ selected?: boolean;
40
+ }
41
+ declare class SelectionItem implements SelectionItemInterface {
42
+ id: `${string}-${string}-${string}-${string}-${string}`;
43
+ value: string;
44
+ disabled?: boolean | undefined;
45
+ selected?: boolean | undefined;
46
+ constructor(id?: `${string}-${string}-${string}-${string}-${string}`, value?: string, disabled?: boolean | undefined, selected?: boolean | undefined);
47
+ static adapt(item?: any): SelectionItem;
48
+ }
49
+
50
+ declare class RemoveUnderscorePipe implements PipeTransform {
51
+ transform(value: string): string;
52
+ static ɵfac: i0.ɵɵFactoryDeclaration<RemoveUnderscorePipe, never>;
53
+ static ɵpipe: i0.ɵɵPipeDeclaration<RemoveUnderscorePipe, "removeUnderscore", true>;
54
+ }
55
+
56
+ declare class ListSelectionInputDemoComponent implements OnInit {
57
+ fb: FormBuilder;
58
+ data_1: ({
59
+ id: number;
60
+ value: string;
61
+ disabled?: undefined;
62
+ selected?: undefined;
63
+ } | {
64
+ id: number;
65
+ value: string;
66
+ disabled: boolean;
67
+ selected?: undefined;
68
+ } | {
69
+ id: number;
70
+ value: string;
71
+ selected: boolean;
72
+ disabled?: undefined;
73
+ })[];
74
+ data_2: string[];
75
+ selectionControl_1: _angular_forms.FormControl<string[] | null>;
76
+ selectionControl_2: _angular_forms.FormControl<string[] | null>;
77
+ selectionControl_3: _angular_forms.FormControl<string[] | null>;
78
+ selectionControl_4: _angular_forms.FormControl<string[] | null>;
79
+ selectionControl_5: _angular_forms.FormControl<string[] | null>;
80
+ selectionControl_6: _angular_forms.FormControl<string[] | null>;
81
+ selectionControl_7: _angular_forms.FormControl<string[] | null>;
82
+ selectionControl_8: _angular_forms.FormControl<string[] | null>;
83
+ changeDetection_1: _angular_forms.FormControl<boolean | null>;
84
+ changeDetection_2: _angular_forms.FormControl<boolean | null>;
85
+ changeDetection_3: _angular_forms.FormControl<boolean | null>;
86
+ changeDetection_4: _angular_forms.FormControl<boolean | null>;
87
+ changeDetection_5: _angular_forms.FormControl<boolean | null>;
88
+ changeDetection_6: _angular_forms.FormControl<boolean | null>;
89
+ changeDetection_7: _angular_forms.FormControl<boolean | null>;
90
+ changeDetection_8: _angular_forms.FormControl<boolean | null>;
91
+ data: any;
92
+ constructor();
93
+ ngOnInit(): void;
94
+ onPerformPatch(): void;
95
+ onChangeDataType(type: string): void;
96
+ onDisabled_1(disable: boolean): void;
97
+ onDisabled_2(disable: boolean): void;
98
+ onDisabled_3(disable: boolean): void;
99
+ onDisabled_4(disable: boolean): void;
100
+ onDisabled_5(disable: boolean): void;
101
+ onDisabled_6(disable: boolean): void;
102
+ onDisabled_7(disable: boolean): void;
103
+ onDisabled_8(disable: boolean): void;
104
+ static ɵfac: i0.ɵɵFactoryDeclaration<ListSelectionInputDemoComponent, never>;
105
+ static ɵcmp: i0.ɵɵComponentDeclaration<ListSelectionInputDemoComponent, "app-list-selection-demo", never, {}, {}, never, never, false, never>;
106
+ }
107
+
108
+ declare class ListMultiSelectionDemoComponent implements OnInit {
109
+ fb: FormBuilder;
110
+ data_1: ({
111
+ id: number;
112
+ value: string;
113
+ disabled?: undefined;
114
+ selected?: undefined;
115
+ } | {
116
+ id: number;
117
+ value: string;
118
+ disabled: boolean;
119
+ selected?: undefined;
120
+ } | {
121
+ id: number;
122
+ value: string;
123
+ selected: boolean;
124
+ disabled?: undefined;
125
+ })[];
126
+ data_2: string[];
127
+ selectionControl_1: _angular_forms.FormControl<string[] | null>;
128
+ selectionControl_2: _angular_forms.FormControl<string[] | null>;
129
+ selectionControl_3: _angular_forms.FormControl<string[] | null>;
130
+ selectionControl_4: _angular_forms.FormControl<string[] | null>;
131
+ selectionControl_5: _angular_forms.FormControl<string[] | null>;
132
+ selectionControl_6: _angular_forms.FormControl<string[] | null>;
133
+ selectionControl_7: _angular_forms.FormControl<string[] | null>;
134
+ selectionControl_8: _angular_forms.FormControl<string[] | null>;
135
+ changeDetection_1: _angular_forms.FormControl<boolean | null>;
136
+ changeDetection_2: _angular_forms.FormControl<boolean | null>;
137
+ changeDetection_3: _angular_forms.FormControl<boolean | null>;
138
+ changeDetection_4: _angular_forms.FormControl<boolean | null>;
139
+ changeDetection_5: _angular_forms.FormControl<boolean | null>;
140
+ changeDetection_6: _angular_forms.FormControl<boolean | null>;
141
+ changeDetection_7: _angular_forms.FormControl<boolean | null>;
142
+ changeDetection_8: _angular_forms.FormControl<boolean | null>;
143
+ data: any;
144
+ constructor();
145
+ ngOnInit(): void;
146
+ onPerformPatch(): void;
147
+ onChangeDataType(type: string): void;
148
+ onDisabled_1(disable: boolean): void;
149
+ onDisabled_2(disable: boolean): void;
150
+ onDisabled_3(disable: boolean): void;
151
+ onDisabled_4(disable: boolean): void;
152
+ onDisabled_5(disable: boolean): void;
153
+ onDisabled_6(disable: boolean): void;
154
+ onDisabled_7(disable: boolean): void;
155
+ onDisabled_8(disable: boolean): void;
156
+ static ɵfac: i0.ɵɵFactoryDeclaration<ListMultiSelectionDemoComponent, never>;
157
+ static ɵcmp: i0.ɵɵComponentDeclaration<ListMultiSelectionDemoComponent, "app-list-multi-selection-demo", never, {}, {}, never, never, false, never>;
158
+ }
159
+
160
+ declare class ListSelectionInputComponent implements OnInit, ControlValueAccessor {
161
+ fb: FormBuilder;
162
+ selectionControl: _angular_forms.FormControl<any>;
163
+ label?: string;
164
+ placeholder?: string;
165
+ private _minSelection;
166
+ set minSelection(value: number);
167
+ get minSelection(): number;
168
+ private _maxSelection;
169
+ set maxSelection(value: number);
170
+ get maxSelection(): number;
171
+ private _multiple;
172
+ set multiple(value: boolean | undefined);
173
+ get multiple(): boolean | undefined;
174
+ get isValid(): boolean;
175
+ defaultDisabled: SelectionItem[];
176
+ appearance: MatFormFieldAppearance;
177
+ private _data;
178
+ set data(value: any[]);
179
+ get data(): any[];
180
+ selectionChange: EventEmitter<any>;
181
+ disabled: boolean;
182
+ formInitialized: boolean;
183
+ isArray: (obj: any) => obj is any[];
184
+ hasObjects: (obj: any) => boolean;
185
+ isObject: (obj: any) => boolean;
186
+ findFirst: (obj: string[]) => any;
187
+ onChange: any;
188
+ onTouch: any;
189
+ isObjects: boolean;
190
+ invalid: boolean;
191
+ updateSelection: (newData: any[]) => boolean[];
192
+ constructor();
193
+ ngOnInit(): void;
194
+ ngAfterViewInit(): void;
195
+ writeValue(value: string[]): void;
196
+ validate(control: AbstractControl): ValidationErrors | null;
197
+ registerOnChange(fn: any): void;
198
+ registerOnTouched(fn: any): void;
199
+ setDisabledState?(isDisabled: boolean): void;
200
+ onSelection(selection: MatSelectChange | any): void;
201
+ findControlDisabled(control: string): any;
202
+ isValidRange(data: any[]): boolean;
203
+ selectedValues(obj: any, state?: boolean): string[];
204
+ static ɵfac: i0.ɵɵFactoryDeclaration<ListSelectionInputComponent, never>;
205
+ static ɵcmp: i0.ɵɵComponentDeclaration<ListSelectionInputComponent, "app-list-selection-input", never, { "label": { "alias": "label"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "minSelection": { "alias": "minSelection"; "required": false; }; "maxSelection": { "alias": "maxSelection"; "required": false; }; "multiple": { "alias": "multiple"; "required": false; }; "appearance": { "alias": "appearance"; "required": false; }; "data": { "alias": "data"; "required": false; }; }, { "selectionChange": "selectionChange"; }, never, ["*"], false, never>;
206
+ }
207
+
208
+ declare class ListSelectionInputModule {
209
+ static ɵfac: i0.ɵɵFactoryDeclaration<ListSelectionInputModule, never>;
210
+ static ɵmod: i0.ɵɵNgModuleDeclaration<ListSelectionInputModule, [typeof ListSelectionInputDemoComponent, typeof ListMultiSelectionDemoComponent, typeof ListSelectionInputComponent], [typeof i4.CommonModule, typeof _angular_forms.FormsModule, typeof _angular_forms.ReactiveFormsModule, typeof i6.MatSliderModule, typeof i7.MatButtonModule, typeof i8.MatIconModule, typeof i9.MatFormFieldModule, typeof i10.MatToolbarModule, typeof i11.MatCheckboxModule, typeof i12.MatMenuModule, typeof i13.MatButtonToggleModule, typeof i14.MatDividerModule, typeof i15.MatRadioModule, typeof i16.MatInputModule, typeof i17.MatAutocompleteModule, typeof RemoveUnderscorePipe, typeof i19.MatSelectModule, typeof i20.MatOptionModule, typeof i21.MatSlideToggleModule], [typeof ListSelectionInputDemoComponent, typeof ListMultiSelectionDemoComponent, typeof ListSelectionInputComponent]>;
211
+ static ɵinj: i0.ɵɵInjectorDeclaration<ListSelectionInputModule>;
212
+ }
213
+
214
+ export { ListMultiSelectionDemoComponent, ListSelectionInputComponent, ListSelectionInputDemoComponent, ListSelectionInputModule, RemoveUnderscorePipe, SelectionBasic, SelectionItem };
215
+ export type { SelectionBasicInterface, SelectionItemInterface };