cats-ui-lib 2.0.4 → 2.0.42
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.
- package/fesm2022/cats-ui-lib.mjs +13 -15
- package/fesm2022/cats-ui-lib.mjs.map +1 -1
- package/package.json +1 -1
package/fesm2022/cats-ui-lib.mjs
CHANGED
|
@@ -1821,16 +1821,13 @@ class DateTimePickerComponent {
|
|
|
1821
1821
|
validate(control) {
|
|
1822
1822
|
this.control = control;
|
|
1823
1823
|
const selected = this.date ? new Date(this.date) : null;
|
|
1824
|
-
|
|
1825
|
-
const isRequired = control.validator && control.validator(control)?.['required'];
|
|
1826
|
-
if ((isRequired || control.hasError('required')) &&
|
|
1827
|
-
(!this.date || !this.selectedDay)) {
|
|
1824
|
+
if (control.hasError('required') && (!this.date || !this.selectedDay)) {
|
|
1828
1825
|
return { required: true };
|
|
1829
1826
|
}
|
|
1830
|
-
|
|
1827
|
+
if (this.minDate && selected && selected < new Date(this.minDate)) {
|
|
1831
1828
|
return { minDate: true };
|
|
1832
1829
|
}
|
|
1833
|
-
|
|
1830
|
+
if (this.maxDate && selected && selected > new Date(this.maxDate)) {
|
|
1834
1831
|
return { maxDate: true };
|
|
1835
1832
|
}
|
|
1836
1833
|
return null;
|
|
@@ -1841,18 +1838,19 @@ class DateTimePickerComponent {
|
|
|
1841
1838
|
*/
|
|
1842
1839
|
toggleCalendar() {
|
|
1843
1840
|
this.isOpen = !this.isOpen;
|
|
1844
|
-
if (this.date && this.isOpen) {
|
|
1845
|
-
this.currentDate = new Date(this.date);
|
|
1846
|
-
this.selectedDay = this.currentDate.getDate();
|
|
1847
|
-
}
|
|
1848
|
-
this.calendarView = 'defaultView';
|
|
1849
|
-
this.generateCalendar();
|
|
1850
1841
|
if (this.isOpen) {
|
|
1851
|
-
|
|
1842
|
+
// If a date is already selected, open that month/year
|
|
1843
|
+
if (this.selectedDate != null) {
|
|
1844
|
+
this.currentDate = new Date(this.selectedYear, this.selectedMonth, this.selectedDate);
|
|
1845
|
+
}
|
|
1846
|
+
this.updateCurrentYearMonth();
|
|
1847
|
+
this.generateCalendar();
|
|
1852
1848
|
setTimeout(() => {
|
|
1849
|
+
const ele = document.getElementsByClassName('calendar-footer');
|
|
1853
1850
|
ele[0]?.scrollIntoView();
|
|
1854
1851
|
});
|
|
1855
1852
|
}
|
|
1853
|
+
this.calendarView = 'defaultView';
|
|
1856
1854
|
}
|
|
1857
1855
|
/**
|
|
1858
1856
|
* @description Closes calendar
|
|
@@ -2186,10 +2184,10 @@ class DateTimePickerComponent {
|
|
|
2186
2184
|
if (this.dateConfig.selectionMode === 'single') {
|
|
2187
2185
|
if (!this.selectedDate)
|
|
2188
2186
|
return;
|
|
2189
|
-
const fullDate = new Date(this.
|
|
2187
|
+
const fullDate = new Date(this.selectedYear, this.selectedMonth, this.selectedDate);
|
|
2190
2188
|
this.selectedDateTime = this.formatDateTime(fullDate || '', this.dateConfig.enableTime ? this.selectedTime : null);
|
|
2191
2189
|
this.writeValue(this.selectedDateTime);
|
|
2192
|
-
this.date = this.selectedDate;
|
|
2190
|
+
// this.date = this.selectedDate;
|
|
2193
2191
|
this.dateTimeSelected.emit(this.selectedDateTime);
|
|
2194
2192
|
return;
|
|
2195
2193
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cats-ui-lib.mjs","sources":["../../../projects/cats-ui/src/lib/services/cats-ui.service.ts","../../../projects/cats-ui/src/lib/components/input/input.component.ts","../../../projects/cats-ui/src/lib/components/input/input.component.html","../../../projects/cats-ui/src/lib/modal/cats-ui.modal.ts","../../../projects/cats-ui/src/lib/components/single-select/single-select.component.ts","../../../projects/cats-ui/src/lib/components/single-select/single-select.component.html","../../../projects/cats-ui/src/lib/components/multi-select/multi-select.component.ts","../../../projects/cats-ui/src/lib/components/multi-select/multi-select.component.html","../../../projects/cats-ui/src/lib/components/search-box/search-box.component.ts","../../../projects/cats-ui/src/lib/components/search-box/search-box.component.html","../../../projects/cats-ui/src/lib/directives/outside-click.directive.ts","../../../projects/cats-ui/src/lib/components/auto-complete-single-select/auto-complete-single-select.component.ts","../../../projects/cats-ui/src/lib/components/auto-complete-single-select/auto-complete-single-select.component.html","../../../projects/cats-ui/src/lib/components/auto-complete-multi-select/auto-complete-multi-select.component.ts","../../../projects/cats-ui/src/lib/components/auto-complete-multi-select/auto-complete-multi-select.component.html","../../../projects/cats-ui/src/lib/components/toogle-button/toogle-button.component.ts","../../../projects/cats-ui/src/lib/components/toogle-button/toogle-button.component.html","../../../projects/cats-ui/src/lib/components/checkbox-button/checkbox-button.component.ts","../../../projects/cats-ui/src/lib/components/checkbox-button/checkbox-button.component.html","../../../projects/cats-ui/src/lib/components/radio-button/radio-button.component.ts","../../../projects/cats-ui/src/lib/components/radio-button/radio-button.component.html","../../../projects/cats-ui/src/lib/components/date-time-picker/date-time-picker.component.ts","../../../projects/cats-ui/src/lib/components/date-time-picker/date-time-picker.component.html","../../../projects/cats-ui/src/lib/directives/cats-ui-tooltip.directive.ts","../../../projects/cats-ui/src/lib/components/accordion/accordion.component.ts","../../../projects/cats-ui/src/lib/components/accordion/accordion.component.html","../../../projects/cats-ui/src/lib/components/accordion/accordion-item/accordion-item.component.ts","../../../projects/cats-ui/src/lib/components/accordion/accordion-item/accordion-item.component.html","../../../projects/cats-ui/src/lib/components/tabs/tab-content.directive.ts","../../../projects/cats-ui/src/lib/components/tabs/tab-heading.directive.ts","../../../projects/cats-ui/src/lib/components/tabs/tab/tab-item/tab-item.component.ts","../../../projects/cats-ui/src/lib/components/tabs/tab/tab-item/tab-item.component.html","../../../projects/cats-ui/src/lib/components/tabs/tab/tab.component.ts","../../../projects/cats-ui/src/lib/components/tabs/tab/tab.component.html","../../../projects/cats-ui/src/public-api.ts","../../../projects/cats-ui/src/cats-ui-lib.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CatsUiService {\r\n\r\n constructor() { }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport {\r\n Component,\r\n EventEmitter,\r\n forwardRef,\r\n Input,\r\n Output,\r\n} from '@angular/core';\r\nimport {\r\n ControlValueAccessor,\r\n FormsModule,\r\n NG_VALUE_ACCESSOR,\r\n FormControl,\r\n NG_VALIDATORS,\r\n Validator,\r\n Validators,\r\n} from '@angular/forms';\r\nimport { InputConfig } from '../../modal/cats-ui.modal';\r\n\r\n@Component({\r\n selector: 'cats-ui-input',\r\n standalone: true,\r\n imports: [CommonModule, FormsModule],\r\n templateUrl: './input.component.html',\r\n styleUrls: ['./input.component.scss'],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => InputComponent),\r\n multi: true,\r\n },\r\n {\r\n provide: NG_VALIDATORS,\r\n useExisting: forwardRef(() => InputComponent),\r\n multi: true,\r\n },\r\n ],\r\n host: { tabindex: '0' },\r\n})\r\nexport class InputComponent implements ControlValueAccessor, Validator {\r\n @Input() inputConfig!: InputConfig;\r\n @Output() onKeyDown = new EventEmitter<{ value: string } & KeyboardEvent>();\r\n @Output() onKeyUp = new EventEmitter<{ value: string } & KeyboardEvent>();\r\n\r\n value: string = '';\r\n disabled = false;\r\n touched = false;\r\n control: FormControl | null = null;\r\n showPassword = false;\r\n private onChange = (value: any) => {};\r\n private onTouched = () => {};\r\n\r\n /**\r\n * @description Method to when value changes\r\n * @author Shiva Kant\r\n */\r\n handleInput(event: Event) {\r\n const target = event.target as HTMLInputElement;\r\n this.value = target.value;\r\n this.onChange(this.value);\r\n\r\n if (this.control) {\r\n this.control.markAsDirty();\r\n this.control.updateValueAndValidity();\r\n }\r\n }\r\n /**\r\n * @description Method to Handle key down event\r\n * @author Shiva Kant\r\n */\r\n handleKeyDown(event: KeyboardEvent) {\r\n this.onKeyDown.emit({ value: this.value, ...event });\r\n }\r\n\r\n /**\r\n * @description Method to handle key up event\r\n * @author Shiva Kant\r\n */\r\n handleKeyUp(event: KeyboardEvent) {\r\n this.onKeyUp.emit({ value: this.value, ...event });\r\n }\r\n\r\n /**\r\n * @description Method to Handle blur (touched\r\n * @author Shiva Kant\r\n */\r\n\r\n handleBlur(event: FocusEvent): void {\r\n this.touched = true;\r\n this.onTouched();\r\n const control = (event.target as any)?.control;\r\n control?.markAsTouched?.();\r\n }\r\n /**\r\n * @description Method to ControlValueAccessor methods\r\n * @author Shiva Kant\r\n */\r\n\r\n writeValue(value: any): void {\r\n this.value = value ?? '';\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n this.disabled = isDisabled;\r\n }\r\n\r\n /**\r\n * @description Method to Validator interface\r\n * @author Shiva Kant\r\n */\r\n\r\n validate(control: FormControl): any {\r\n this.control = control;\r\n if (this.inputConfig?.type === 'email') {\r\n return Validators.email(control);\r\n }\r\n return null;\r\n }\r\n /**\r\n * @description method to use show password\r\n * @author Shiva Kant\r\n */\r\n togglePassword() {\r\n this.showPassword = !this.showPassword;\r\n }\r\n}\r\n","<div class=\"input_container\">\r\n @if (inputConfig.label) {\r\n <label>{{ inputConfig.label }}</label>\r\n }\r\n <div class=\"custom-input\">\r\n <input\r\n class=\"input-box\"\r\n [type]=\"showPassword ? 'text' : inputConfig.type\"\r\n [placeholder]=\"inputConfig.placeholder\"\r\n [disabled]=\"disabled\"\r\n [(ngModel)]=\"value\"\r\n (input)=\"handleInput($event)\"\r\n (blur)=\"handleBlur($event)\"\r\n (keydown)=\"handleKeyDown($event)\"\r\n (keyup)=\"handleKeyUp($event)\"\r\n />\r\n <!-- Eye Icon Only When Type Is Password -->\r\n @if (inputConfig.type === 'password') {\r\n <span class=\"eye_icon\" (click)=\"togglePassword()\">\r\n <img\r\n [src]=\"showPassword ? 'images/eye.svg' : 'images/eye-off.svg'\"\r\n alt=\"toggle password visibility\"\r\n />\r\n </span>\r\n }\r\n </div>\r\n</div>\r\n","export class SingleSelectConfig {\r\n idField: string = 'id';\r\n textField: string = 'name';\r\n disabledField?: string = '';\r\n placeholder?: string = 'Select Option';\r\n prefixLabel?: string = '';\r\n enableSearch?: boolean = false;\r\n required?: boolean = false;\r\n}\r\n\r\nexport class MultiSelectConfig {\r\n idField: string = 'id';\r\n textField: string = 'name';\r\n disabledField?: string = '';\r\n placeholder?: string = 'Select Option';\r\n prefixLabel?: string = '';\r\n enableSearch?: boolean = false;\r\n chipLimit: number = 2;\r\n selectAll?: boolean = true;\r\n required?: boolean = false;\r\n}\r\n\r\nexport class SearchConfig {\r\n serachValue: string = '';\r\n placeholder?: string = 'Search';\r\n}\r\n\r\nexport class InputConfig {\r\n type: 'text' | 'email' | 'password' | 'number' = 'text';\r\n placeholder?: string = '';\r\n label?: string = '';\r\n}\r\n\r\nexport class AutoCompleteSingleSelectConfig {\r\n idField: string = 'id';\r\n textField: string = 'name';\r\n disabledField?: string = '';\r\n placeholder?: string = 'Enter or Select';\r\n required?: boolean = false;\r\n customInput: boolean = false;\r\n}\r\nexport class AutoCompleteMultiSelectConfig {\r\n idField: string = 'id';\r\n textField: string = 'name';\r\n disabledField?: string = '';\r\n selectAll?: boolean = true;\r\n placeholder?: string = 'Enter or Select';\r\n required?: boolean = false;\r\n chipLimit: number = 2;\r\n customInput: boolean = false;\r\n pattern?: string = '';\r\n}\r\nexport class ToggleConfig {\r\n checked: boolean = false;\r\n disabled?: boolean = false;\r\n}\r\nexport class CheckBoxSubtask {\r\n idField: string = '';\r\n textField: string = '';\r\n checked?: boolean = false;\r\n}\r\n\r\nexport class CheckBoxConfig {\r\n idField: string = '';\r\n textField: string = '';\r\n disabledField?: string = '';\r\n name: string = '';\r\n checked?: boolean = false;\r\n subtasks?: CheckBoxSubtask[];\r\n}\r\nexport interface RadioButtonConfig {\r\n label?: string;\r\n disabled?: string;\r\n valueField?: string;\r\n textField?: string;\r\n name: string;\r\n layout?: 'horizontal' | 'vertical';\r\n}\r\n\r\nexport interface DateConfig {\r\n selectionMode: 'single' | 'range';\r\n enableTime?: boolean;\r\n}\r\n","\r\nimport { CommonModule } from '@angular/common';\r\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChild, ElementRef, EventEmitter, forwardRef, HostListener, Input, OnChanges, OnInit, Output, SimpleChanges, TemplateRef } from '@angular/core';\r\nimport {\r\n ControlValueAccessor,\r\n FormControl,\r\n FormsModule,\r\n NG_VALIDATORS,\r\n NG_VALUE_ACCESSOR,\r\n} from '@angular/forms';\r\nimport { SingleSelectConfig } from '../../modal/cats-ui.modal';\r\n\r\nconst noop = () => {};\r\nexport const SINGLE_SELECT_CONTROL_VALUE_ACCESSOR: any = {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => SingleSelectComponent),\r\n multi: true,\r\n};\r\nexport const SINGLE_SELECT_CONTROL_VALUE_VALIDATOR: any = {\r\n provide: NG_VALIDATORS,\r\n useExisting: forwardRef(() => SingleSelectComponent),\r\n multi: true,\r\n};\r\n@Component({\r\n selector: 'cats-ui-single-select',\r\n imports: [CommonModule, FormsModule],\r\n templateUrl: './single-select.component.html',\r\n styleUrl: './single-select.component.scss',\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: SingleSelectComponent,\r\n multi: true,\r\n },\r\n SINGLE_SELECT_CONTROL_VALUE_VALIDATOR,\r\n ],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: { tabindex: '0' },\r\n})\r\nexport class SingleSelectComponent\r\n implements OnInit, OnChanges, ControlValueAccessor\r\n{\r\n @Input() optionList: any[] = [];\r\n @Input() singleSelectConfig: SingleSelectConfig=new SingleSelectConfig();\r\n @Input() selectedOption: any;\r\n @Output() onSelection = new EventEmitter();\r\n \r\n showDropdown = false;\r\n searchText: string = '';\r\n inValid: boolean = false;\r\n control!: FormControl<any> | null;\r\n disableControl: boolean = false;\r\n @Output() onScroll: any = new EventEmitter();\r\n @Input() parentNativeElement: any;\r\n\r\n @ContentChild('selectedData') selectedData!: TemplateRef<any>;\r\n\r\n constructor(private cd: ChangeDetectorRef, private el: ElementRef) {}\r\n\r\n // These lifecycle hooks will be in use for further implementation\r\n ngOnInit(): void {}\r\n ngOnChanges(_changes: SimpleChanges): void {\r\n if (!_changes['optionList']?.currentValue) {\r\n this.optionList = [];\r\n } else {\r\n if (this.optionList.length > 10) this.singleSelectConfig.enableSearch = true;\r\n this.writeValue(this.control?.value);\r\n }\r\n }\r\n\r\n /**\r\n * @description Method to toggle dropdown list\r\n * @author Shiva Kant\r\n */\r\n toggleDropdown(): void {\r\n this.showDropdown = !this.showDropdown;\r\n if (this.parentNativeElement) {\r\n this.parentNativeElement.scrollIntoView({\r\n behavior: 'smooth',\r\n block: 'center',\r\n });\r\n let parentDiv = document.getElementById(this.parentNativeElement);\r\n setTimeout(() => {\r\n let parentBoundary = parentDiv?.getBoundingClientRect() || ({} as any);\r\n let dropdonwList: any = document.getElementById('container_scroll');\r\n let elBoundary = dropdonwList?.getBoundingClientRect() || {};\r\n if (parentBoundary?.['bottom'] < elBoundary?.['bottom']) {\r\n dropdonwList.style['transform'] = `translate(0px,-${\r\n elBoundary?.['height'] + 54\r\n }px`;\r\n }\r\n }, 20);\r\n }\r\n }\r\n\r\n /**\r\n * @description Method to check if provide arg is an object or not\r\n * @author Shiva Kant\r\n * @param Obj:any\r\n * @returns boolean\r\n */\r\n isObjEmpty(obj: any): boolean {\r\n if (typeof obj == 'string' || typeof obj == 'number') return true;\r\n return !(obj && Object.keys(obj).length > 0);\r\n }\r\n\r\n /**\r\n * @description Method is to update selected option and then\r\n * update formcontrol by call onChangeCallback.\r\n * @author Shiva Kant\r\n * @param item\r\n * @returns void\r\n */\r\n updateSelectedOption(item: any): void {\r\n this.selectedOption = item;\r\n this.toggleDropdown();\r\n this.inValid = false;\r\n this.onChangeCallback(item);\r\n this.onTouchedCallback();\r\n this.onSelection.emit(item);\r\n }\r\n\r\n validate(control: FormControl): void {\r\n this.control = control;\r\n }\r\n\r\n // Below Methods are used to register form API methods in these variable to use them later\r\n private onTouchedCallback: () => void = noop;\r\n private onChangeCallback: (_: any) => void = noop;\r\n\r\n // Below are the CVA interface methods to make this component able to bind with formcontrol in parent component\r\n\r\n /**\r\n * @description method to update value of selectedOption\r\n * @author Shiva Kant\r\n * @param obj this is provided by formcontrol\r\n * @returns void\r\n */\r\n writeValue(obj: any): void {\r\n this.selectedOption = '';\r\n\r\n if (this.optionList.length && obj) {\r\n if (typeof obj === 'string' || typeof obj === 'number') {\r\n if (\r\n typeof this.optionList?.[0] === 'string' ||\r\n typeof this.optionList?.[0] === 'number'\r\n ) {\r\n if (this.optionList.includes(obj)) {\r\n this.selectedOption = obj;\r\n }\r\n } else if (obj != '') {\r\n for (const option of this.optionList) {\r\n if (\r\n option[this.singleSelectConfig.idField] == obj ||\r\n option[this.singleSelectConfig.textField] == obj\r\n ) {\r\n this.selectedOption = option;\r\n break;\r\n }\r\n }\r\n }\r\n } else {\r\n if (\r\n obj?.hasOwnProperty(this.singleSelectConfig.idField) &&\r\n !this.isObjEmpty(this.optionList[0])\r\n ) {\r\n for (const option of this.optionList) {\r\n if (\r\n option[this.singleSelectConfig.idField] ==\r\n obj[this.singleSelectConfig.idField]\r\n ) {\r\n this.selectedOption = option;\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n setTimeout(() => {\r\n this.onChangeCallback(this.selectedOption);\r\n }, 0);\r\n this.cd.markForCheck();\r\n }\r\n }\r\n\r\n /**\r\n * @description method to register on change callback from form API\r\n * @author Shiva Kant\r\n * @param fn\r\n * @returns void\r\n */\r\n registerOnChange(fn: any): void {\r\n this.onChangeCallback = fn;\r\n }\r\n\r\n /**\r\n * @description method to register on touch callback from form API\r\n * @author Shiva Kant\r\n * @param fn\r\n * @returns void\r\n */\r\n registerOnTouched(fn: any): void {\r\n this.onTouchedCallback = fn;\r\n }\r\n\r\n //willbe used in further implementation\r\n setDisabledState(isDisabled: boolean): void {\r\n this.disableControl = isDisabled;\r\n }\r\n\r\n /**\r\n * @description method to update ontouchcallback on blur\r\n * @author Shiva Kant\r\n */\r\n @HostListener('blur')\r\n public onTouched() {\r\n this.onTouchedCallback();\r\n }\r\n\r\n /**\r\n * @description method to toggle dropdown on outside click\r\n * @author Shiva Kant\r\n */\r\n @HostListener('document:click', ['$event'])\r\n public closeDropdown(event: any) {\r\n if (!this.el.nativeElement.contains(event.target)) {\r\n if (this.showDropdown && this.singleSelectConfig.required) {\r\n this.inValid =\r\n this.selectedOption == '' ||\r\n JSON.stringify(this.selectedOption) == '{}';\r\n }\r\n if (this.showDropdown) this.onTouchedCallback();\r\n this.showDropdown = false;\r\n }\r\n }\r\n\r\n /**\r\n * @description method to load more list\r\n * @author Shiva Kant\r\n * @param event\r\n */\r\n onDivScroll(event: any): void {\r\n if (\r\n event.target.offsetHeight + event.target.scrollTop >=\r\n event.target.scrollHeight - 1 &&\r\n this.optionList.length\r\n ) {\r\n this.onScroll.emit();\r\n }\r\n }\r\n get filteredOptionsValue(): any[] {\r\n if (!this.searchText || this.searchText.trim() === '') {\r\n return this.optionList;\r\n }\r\n return this.optionList.filter((option) => {\r\n if (typeof option != 'object') {\r\n return option?.toLowerCase().includes(this.searchText.toLowerCase());\r\n } else {\r\n return option[this.singleSelectConfig.textField]\r\n ?.toLowerCase()\r\n .includes(this.searchText.toLowerCase());\r\n }\r\n });\r\n }\r\n}","<div class=\"main-wrapper\" id=\"main-wrapper-single-select\">\r\n <div\r\n class=\"single-select-dropdown\"\r\n (click)=\"toggleDropdown()\"\r\n [ngClass]=\"{\r\n 'border-danger':\r\n (control?.touched || control?.dirty) &&\r\n control?.invalid &&\r\n control?.errors,\r\n 'disable-control': disableControl\r\n }\"\r\n >\r\n <div class=\"left_details\">\r\n @if(singleSelectConfig.prefixLabel){\r\n <span class=\"predefine_label\">\r\n <p class=\"textTruncate\">{{ singleSelectConfig.prefixLabel }}</p>\r\n </span>\r\n } @if (!isObjEmpty(selectedOption) &&\r\n selectedOption[singleSelectConfig.textField]) {\r\n <ng-container\r\n [ngTemplateOutlet]=\"selectedData ? selectedData : defaultTemplate\"\r\n [ngTemplateOutletContext]=\"{ data: selectedOption }\"\r\n ></ng-container>\r\n\r\n <ng-template #defaultTemplate let-data=\"data\">\r\n <span class=\"textTruncate\">\r\n {{ selectedOption[singleSelectConfig.textField] }}\r\n </span>\r\n </ng-template>\r\n }@else if(selectedOption && isObjEmpty(selectedOption)){\r\n <ng-container\r\n [ngTemplateOutlet]=\"selectedData ? selectedData : defaultTemplate1\"\r\n [ngTemplateOutletContext]=\"{ data: selectedOption }\"\r\n ></ng-container>\r\n\r\n <ng-template #defaultTemplate1 let-data=\"data\">\r\n <span class=\"textTruncate\">\r\n {{ selectedOption }}\r\n </span>\r\n </ng-template>\r\n }@else{\r\n <span class=\"placeholderColor textTruncate\">{{\r\n singleSelectConfig.placeholder\r\n }}</span>\r\n\r\n }\r\n </div>\r\n <span class=\"arrow_icon\">\r\n <img\r\n src=\"images/chevron-up.svg\"\r\n alt=\"\"\r\n srcset=\"\"\r\n [ngClass]=\"{ 'd-none': !showDropdown }\"\r\n />\r\n <img\r\n src=\"images/chevron-down.svg\"\r\n alt=\"\"\r\n srcset=\"\"\r\n [ngClass]=\"{ 'd-none': showDropdown }\"\r\n />\r\n </span>\r\n </div>\r\n @if (showDropdown) {\r\n <div\r\n class=\"dropdown-list\"\r\n id=\"container_scroll\"\r\n (scroll)=\"onDivScroll($event)\"\r\n >\r\n @if (singleSelectConfig.enableSearch) {\r\n <div class=\"search_bar\">\r\n <div class=\"input_box\">\r\n <img src=\"images/search.svg\" class=\"search_icon\" alt=\"\" />\r\n <input\r\n type=\"text\"\r\n class=\"filter_search_box\"\r\n name=\"\"\r\n id=\"\"\r\n placeholder=\"Search here\"\r\n [(ngModel)]=\"searchText\"\r\n />\r\n <img\r\n src=\"images/x.svg\"\r\n class=\"cross_icon\"\r\n alt=\"\"\r\n (click)=\"searchText = ''\"\r\n />\r\n </div>\r\n </div>\r\n }\r\n <ul>\r\n @if(isObjEmpty(this.optionList[0] || \"\")){ @for (option of\r\n filteredOptionsValue; track $index) {\r\n <li\r\n (click)=\"updateSelectedOption(option)\"\r\n [ngClass]=\"{\r\n disabled_option:\r\n singleSelectConfig.disabledField &&\r\n option[singleSelectConfig.disabledField]\r\n }\"\r\n >\r\n <span class=\"textTruncate\">{{ option }}</span>\r\n </li>\r\n } @empty {\r\n <li class=\"no_data\">No Data Found.</li>\r\n } } @else { @for (option of filteredOptionsValue; track $index) {\r\n <li\r\n (click)=\"updateSelectedOption(option)\"\r\n [ngClass]=\"{\r\n disabled_option:\r\n singleSelectConfig.disabledField &&\r\n option[singleSelectConfig.disabledField]\r\n }\"\r\n >\r\n <span class=\"textTruncate\">{{\r\n option[singleSelectConfig.textField]\r\n }}</span>\r\n </li>\r\n } @empty {\r\n <li class=\"no_data\">No Data Found.</li>\r\n } }\r\n </ul>\r\n </div>\r\n }\r\n</div>\r\n","import { NgClass } from '@angular/common';\r\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, EventEmitter, forwardRef, HostListener, Input, OnChanges, OnInit, Output, SimpleChanges } from '@angular/core';\r\nimport { NG_VALUE_ACCESSOR, NG_VALIDATORS, ControlValueAccessor, FormControl, FormsModule } from '@angular/forms';\r\nimport { MultiSelectConfig } from '../../modal/cats-ui.modal';\r\nconst noop = () => {}\r\nexport const MULTI_SELECT_CONTROL_VALUE_ACCESSOR: any = {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => MultiSelectComponent),\r\n multi: true,\r\n};\r\nexport const MULTI_SELECT_CONTROL_VALUE_VALIDATOR: any = {\r\n provide: NG_VALIDATORS,\r\n useExisting: forwardRef(() => MultiSelectComponent),\r\n multi: true,\r\n};\r\n@Component({\r\n selector: 'cats-ui-multi-select',\r\n imports: [NgClass, FormsModule],\r\n templateUrl: './multi-select.component.html',\r\n styleUrl: './multi-select.component.scss',\r\n providers: [\r\n MULTI_SELECT_CONTROL_VALUE_ACCESSOR,\r\n MULTI_SELECT_CONTROL_VALUE_VALIDATOR,\r\n ],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: { tabindex: '0' },\r\n})\r\nexport class MultiSelectComponent\r\n implements OnChanges, OnInit, ControlValueAccessor\r\n{\r\n @Input() optionList: any[] = [];\r\n @Input() multiSelectConfig: MultiSelectConfig = new MultiSelectConfig();\r\n\r\n @Input() selectedOptions: any[] = [];\r\n\r\n @Output() onSelection = new EventEmitter();\r\n\r\n control!: FormControl<any>;\r\n\r\n showDropdown = false;\r\n isListArrayOfObject = false;\r\n isSelectedAll = false;\r\n inValid: boolean = false;\r\n searchText: string = '';\r\n disabledControl: boolean = false;\r\n\r\n constructor(private cd: ChangeDetectorRef, private el: ElementRef) {}\r\n\r\n // These lifecycle hooks will be in use for further implementation\r\n ngOnInit(): void {}\r\n ngOnChanges(_changes: SimpleChanges): void {\r\n if (\r\n _changes['optionList'].currentValue &&\r\n _changes['optionList'].currentValue.length > 0\r\n ) {\r\n if (\r\n typeof this.optionList[0] === 'string' ||\r\n typeof this.optionList[0] === 'number'\r\n ) {\r\n this.optionList = this.optionList.map((option: any) => {\r\n const item: any = {\r\n [this.multiSelectConfig.idField]: option,\r\n [this.multiSelectConfig.textField]: option,\r\n isSelected: false,\r\n };\r\n\r\n if (this.multiSelectConfig.disabledField) {\r\n item[this.multiSelectConfig.disabledField] = false;\r\n }\r\n\r\n return item;\r\n });\r\n } else {\r\n this.isListArrayOfObject = true;\r\n this.optionList = this.optionList.map((option: any) => {\r\n return {\r\n ...option,\r\n isSelected: false,\r\n };\r\n });\r\n }\r\n if (this.optionList.length > 10)\r\n this.multiSelectConfig.enableSearch = true;\r\n this.writeValue(this.control?.value);\r\n }\r\n }\r\n\r\n /**\r\n * @description Method to toggle dropdown list\r\n * @author Shiva Kant\r\n */\r\n toggleDropdown(): void {\r\n this.showDropdown = !this.showDropdown;\r\n }\r\n\r\n /**\r\n * @description Method to check if provide arg is an object or not\r\n * @author Shiva Kant\r\n * @param Obj:any\r\n * @returns boolean\r\n */\r\n isObjEmpty(obj: any): boolean {\r\n return !(obj && Object.keys(obj).length > 0);\r\n }\r\n\r\n /**\r\n * @description Method is to update selected option and then\r\n * update formcontrol by call onChangeCallback.\r\n * @author Shiva Kant\r\n * @param item\r\n * @returns void\r\n */\r\n updateSelectedOption(item: any): void {\r\n item.isSelected = !item.isSelected;\r\n if (!item.isSelected) {\r\n let ind = this.selectedOptions.findIndex(\r\n (option: any) =>\r\n item[this.multiSelectConfig.idField] ==\r\n option[this.multiSelectConfig.idField]\r\n );\r\n if (ind >= 0) this.selectedOptions.splice(ind, 1);\r\n } else {\r\n this.selectedOptions.push(item);\r\n }\r\n this.isSelectedAll = this.optionList.every(\r\n (option: any) => option.isSelected == true\r\n );\r\n\r\n this.inValid = false;\r\n this.onChangeCallback(this.selectedOptions);\r\n this.onTouchedCallback();\r\n this.onSelection.emit(this.selectedOptions);\r\n this.cd.markForCheck();\r\n }\r\n\r\n // Below Methods are used to register form API methods in these variable to use them later\r\n private onTouchedCallback: () => void = noop;\r\n private onChangeCallback: (_: any) => void = noop;\r\n\r\n validate(control: FormControl): void {\r\n this.control = control;\r\n }\r\n\r\n // Below are the CVA interface methods to make this component able to bind with formcontrol in parent component\r\n\r\n /**\r\n * @description method to update value of selectedOption\r\n * @author Shiva Kant\r\n * @param controlValue this is provided by formcontrol\r\n * @returns void\r\n */\r\n writeValue(controlValue: any[]): void {\r\n if (this.optionList.length) {\r\n this.selectedOptions = [];\r\n if (controlValue && controlValue.length > 0) {\r\n if (\r\n typeof controlValue[0] === 'string' ||\r\n typeof controlValue[0] === 'number'\r\n ) {\r\n controlValue = controlValue.map((option: string | number) => {\r\n return {\r\n [this.multiSelectConfig.idField]: option,\r\n [this.multiSelectConfig.textField]: option,\r\n };\r\n });\r\n }\r\n for (const option of controlValue) {\r\n let ind = this.optionList.findIndex(\r\n (item: any) =>\r\n item[this.multiSelectConfig.idField] ==\r\n option[this.multiSelectConfig.idField] ||\r\n item[this.multiSelectConfig.textField] ==\r\n option[this.multiSelectConfig.textField]\r\n );\r\n if (ind >= 0) {\r\n this.optionList[ind] = {\r\n ...this.optionList[ind],\r\n isSelected: true,\r\n };\r\n this.selectedOptions.push(this.optionList[ind]);\r\n }\r\n }\r\n }\r\n this.isSelectedAll = this.optionList.every(\r\n (option: any) => option.isSelected == true\r\n );\r\n this.onChangeCallback(this.selectedOptions);\r\n this.cd.markForCheck();\r\n }\r\n }\r\n\r\n /**\r\n * @description method to register on change callback from form API\r\n * @author Shiva Kant\r\n * @param fn\r\n * @returns void\r\n */\r\n registerOnChange(fn: any): void {\r\n this.onChangeCallback = fn;\r\n }\r\n\r\n /**\r\n * @description method to register on touch callback from form API\r\n * @author Shiva Kant\r\n * @param fn\r\n * @returns void\r\n */\r\n registerOnTouched(fn: any): void {\r\n this.onTouchedCallback = fn;\r\n }\r\n\r\n //willbe used in further implementation\r\n setDisabledState(isDisabled: boolean): void {\r\n this.disabledControl = isDisabled;\r\n }\r\n\r\n /**\r\n * @description method to update ontouchcallback on blur\r\n * @author Shiva Kant\r\n */\r\n @HostListener('blur')\r\n public onTouched() {\r\n this.onTouchedCallback();\r\n }\r\n\r\n /**\r\n * @description method to toggle dropdown on outside click\r\n * @author Shiva Kant\r\n */\r\n @HostListener('document:click', ['$event'])\r\n public closeDropdown(event: any) {\r\n if (!this.el.nativeElement.contains(event.target)) {\r\n if (this.showDropdown && this.multiSelectConfig.required) {\r\n this.inValid = this.selectedOptions.length < 0;\r\n }\r\n this.showDropdown = false;\r\n }\r\n }\r\n\r\n checkUncheckAll(): void {\r\n if (this.isSelectedAll) {\r\n this.optionList = this.optionList.map((option: any) => {\r\n if (\r\n this.multiSelectConfig.disabledField &&\r\n option[this.multiSelectConfig.disabledField]\r\n ) {\r\n return option;\r\n }\r\n return { ...option, isSelected: false };\r\n });\r\n\r\n this.isSelectedAll = false;\r\n this.selectedOptions = this.optionList.filter((o) => o.isSelected);\r\n } else {\r\n this.optionList = this.optionList.map((option: any) => {\r\n if (\r\n this.multiSelectConfig.disabledField &&\r\n option[this.multiSelectConfig.disabledField]\r\n ) {\r\n return option;\r\n }\r\n return { ...option, isSelected: true };\r\n });\r\n\r\n this.isSelectedAll = true;\r\n this.selectedOptions = this.optionList.filter((o) => o.isSelected);\r\n }\r\n\r\n this.onChangeCallback(this.selectedOptions);\r\n this.onSelection.emit(this.selectedOptions);\r\n }\r\n\r\n get filteredOptionsValue(): any[] {\r\n if (!this.searchText || this.searchText.trim() === '') {\r\n return this.optionList;\r\n }\r\n return this.optionList.filter((option) =>\r\n option[this.multiSelectConfig.textField]\r\n ?.toLowerCase()\r\n .includes(this.searchText.toLowerCase())\r\n );\r\n }\r\n}\r\n","<div class=\"main-wrapper\">\r\n <div\r\n class=\"display-div\"\r\n (click)=\"toggleDropdown()\"\r\n [ngClass]=\"{\r\n 'border-danger': this.inValid,\r\n 'disable-control': disabledControl\r\n }\"\r\n >\r\n <div class=\"left_details\">\r\n @if(multiSelectConfig.prefixLabel){\r\n <span class=\"predefine_label\">\r\n <p class=\"textTruncate\">{{ multiSelectConfig.prefixLabel }}</p>\r\n </span>\r\n }\r\n <div class=\"multi_label_wrapper\">\r\n @if (selectedOptions.length>0) { @for (item of selectedOptions; track\r\n $index) { @if(multiSelectConfig.chipLimit>=$index+1){\r\n <div class=\"input_text\">\r\n <span class=\"textTruncate\">{{\r\n item[multiSelectConfig.textField]\r\n }}</span>\r\n <!-- <i-feather name=\"x\" (click)=\"$event.stopPropagation();updateSelectedOption(item)\"></i-feather> -->\r\n <img\r\n src=\"images/x.svg\"\r\n (click)=\"$event.stopPropagation(); updateSelectedOption(item)\"\r\n class=\"cross_icon\"\r\n alt=\"\"\r\n />\r\n </div>\r\n } } } @else{\r\n <span class=\"placeholderColor textTruncate\">{{\r\n multiSelectConfig.placeholder\r\n }}</span>\r\n } @if(multiSelectConfig.chipLimit < selectedOptions.length) {\r\n <div class=\"view_more\">\r\n +{{ selectedOptions.length - multiSelectConfig.chipLimit }}\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n <span class=\"arrow_icon\">\r\n <img\r\n src=\"images/chevron-up.svg\"\r\n alt=\"\"\r\n [ngClass]=\"{ 'd-none': !showDropdown }\"\r\n />\r\n <img\r\n src=\"images/chevron-down.svg\"\r\n alt=\"\"\r\n [ngClass]=\"{ 'd-none': showDropdown }\"\r\n />\r\n </span>\r\n </div>\r\n @if (showDropdown) {\r\n <div class=\"dropdown-list\" id=\"container_scroll\">\r\n @if (multiSelectConfig.enableSearch) {\r\n <div class=\"search_bar\">\r\n <div class=\"input_box\">\r\n <img src=\"images/search.svg\" alt=\"\" />\r\n <input\r\n type=\"text\"\r\n class=\"filter_search_box\"\r\n name=\"\"\r\n id=\"\"\r\n placeholder=\"Search here\"\r\n [(ngModel)]=\"searchText\"\r\n />\r\n <img\r\n src=\"images/x.svg\"\r\n class=\"cross_icon\"\r\n alt=\"\"\r\n (click)=\"searchText = ''\"\r\n />\r\n </div>\r\n </div>\r\n }\r\n <ul>\r\n @if (multiSelectConfig.selectAll && optionList.length>0) {\r\n <li (click)=\"checkUncheckAll()\">\r\n <span class=\"checkbox_container\">\r\n <input type=\"checkbox\" [checked]=\"isSelectedAll\" />\r\n @if(isSelectedAll){ UnSelectAll } @else{ SelectAll }\r\n </span>\r\n </li>\r\n } @for (option of filteredOptionsValue; track $index) {\r\n <li\r\n class=\"checkbox_container\"\r\n (click)=\"updateSelectedOption(option)\"\r\n [ngClass]=\"{\r\n disabled_option:\r\n multiSelectConfig.disabledField &&\r\n option[multiSelectConfig.disabledField]\r\n }\"\r\n >\r\n <input type=\"checkbox\" [checked]=\"option.isSelected\" />\r\n <span class=\"textTruncate\"\r\n >{{ option[multiSelectConfig.textField] }}\r\n </span>\r\n </li>\r\n } @empty {\r\n <li class=\"no_data\">No Data Found.</li>\r\n }\r\n </ul>\r\n </div>\r\n }\r\n</div>\r\n","import {\r\n Component,\r\n EventEmitter,\r\n forwardRef,\r\n Input,\r\n Output,\r\n} from '@angular/core';\r\nimport {\r\n FormsModule,\r\n NG_VALUE_ACCESSOR,\r\n ControlValueAccessor,\r\n} from '@angular/forms';\r\nimport { SearchConfig } from '../../modal/cats-ui.modal';\r\n\r\n@Component({\r\n selector: 'cats-ui-search-box',\r\n imports: [FormsModule],\r\n templateUrl: './search-box.component.html',\r\n styleUrl: './search-box.component.scss',\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => SearchBoxComponent),\r\n multi: true,\r\n },\r\n ],\r\n})\r\nexport class SearchBoxComponent implements ControlValueAccessor {\r\n searchParam: string = '';\r\n @Input() searchConfig: SearchConfig = new SearchConfig();\r\n @Output() onClose = new EventEmitter<void>();\r\n @Output() searchParamValue = new EventEmitter<string>();\r\n\r\n private onChange: (value: string) => void = () => {};\r\n public onTouched: () => void = () => {};\r\n isDisabled = false;\r\n\r\n ngOnInit(): void {\r\n this.searchParam = this.searchConfig?.serachValue || '';\r\n }\r\n /**\r\n * @description Method to Called when input changes\r\n * @author Shiva Kant\r\n */\r\n\r\n onInputChange(event: any) {\r\n const value = (event.target as HTMLInputElement)?.value;\r\n this.searchParam = value;\r\n this.onChange(value);\r\n this.searchParamValue.emit(value);\r\n }\r\n /**\r\n * @description Method to closeSearchBar\r\n * @author Shiva Kant\r\n */\r\n closeSearchBar(): void {\r\n this.searchParam = '';\r\n this.onChange('');\r\n this.searchParamValue.emit('');\r\n this.onClose.emit();\r\n }\r\n\r\n // -------- ControlValueAccessor methods --------\r\n writeValue(value: string): void {\r\n this.searchParam = value || '';\r\n }\r\n\r\n registerOnChange(fn: (value: string) => void): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: () => void): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState?(isDisabled: boolean): void {\r\n this.isDisabled = isDisabled;\r\n }\r\n}\r\n","<div class=\"search_input\">\r\n <img src=\"images/search.svg\" alt=\"\" srcset=\"\" />\r\n <input\r\n [placeholder]=\"searchConfig.placeholder\"\r\n type=\"text\"\r\n [value]=\"searchParam\"\r\n (input)=\"onInputChange($event)\"\r\n (blur)=\"onTouched()\"\r\n />\r\n @if (searchParam.length > 0) {\r\n <div class=\"cross_icon\">\r\n <img src=\"images/x.svg\" alt=\"\" srcset=\"\" (click)=\"closeSearchBar()\" />\r\n </div>\r\n }\r\n</div>\r\n","import { Directive, ElementRef, EventEmitter, HostListener, Output } from \"@angular/core\";\r\n\r\n@Directive({\r\n selector: '[catsOutsideClick]',\r\n standalone: true,\r\n})\r\nexport class OutsideClickDirective {\r\n @Output() public clickOutSide = new EventEmitter<MouseEvent>();\r\n\r\n constructor(private elementRef: ElementRef) {}\r\n /**\r\n * @description Hosts listener\r\n * @author Shiva Kant\r\n * @param event \r\n * @returns click \r\n */\r\n @HostListener('document:click', ['$event'])\r\n public onClick(event: MouseEvent): void {\r\n const targetElement = event.target as HTMLElement | null;\r\n\r\n // Guard clause: exit early if no target or not an element\r\n if (!targetElement) {\r\n return;\r\n }\r\n\r\n const clickInside = this.elementRef.nativeElement.contains(targetElement);\r\n if (!clickInside) {\r\n this.clickOutSide.emit(event);\r\n }\r\n }\r\n}\r\n","import { Component, EventEmitter, forwardRef, Input, OnInit, Output, SimpleChanges } from '@angular/core';\r\nimport { AbstractControl, FormControl, FormsModule, NG_VALIDATORS, NG_VALUE_ACCESSOR, ValidationErrors } from '@angular/forms';\r\nimport { AutoCompleteSingleSelectConfig } from '../../modal/cats-ui.modal';\r\nimport { CommonModule } from '@angular/common';\r\nimport { OutsideClickDirective } from '../../directives/outside-click.directive';\r\nconst noop = () => {};\r\nexport const DROPDOWN_CONTROL_VALUE_ACCESSOR: any = {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => AutoCompleteSingleSelectComponent),\r\n multi: true,\r\n};\r\nexport const DROPDOWN_CONTROL_VALUE_VALIDATOR: any = {\r\n provide: NG_VALIDATORS,\r\n useExisting: forwardRef(() => AutoCompleteSingleSelectComponent),\r\n multi: true,\r\n};\r\n@Component({\r\n selector: 'cats-ui-input-single-select',\r\n imports: [CommonModule, FormsModule, OutsideClickDirective],\r\n templateUrl: './auto-complete-single-select.component.html',\r\n styleUrl: './auto-complete-single-select.component.scss',\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: AutoCompleteSingleSelectComponent,\r\n multi: true,\r\n },\r\n DROPDOWN_CONTROL_VALUE_VALIDATOR,\r\n ],\r\n host: { tabindex: '0' },\r\n})\r\nexport class AutoCompleteSingleSelectComponent implements OnInit {\r\n @Input() autoSingleSelectConfig: AutoCompleteSingleSelectConfig =\r\n new AutoCompleteSingleSelectConfig();\r\n @Input() placeholder = 'Enter or Select Option';\r\n @Input() selectedItem: any;\r\n @Input() optionsList: any[] = [];\r\n @Input() parentNativeElement: any;\r\n @Output() onItemSelection = new EventEmitter();\r\n @Output() onScroll: any = new EventEmitter();\r\n showDropdown: boolean = false;\r\n inputValue: string = '';\r\n selectedOption: any;\r\n constructor() {}\r\n inValid: boolean = false;\r\n control!: FormControl<any>;\r\n disableControl: boolean = false;\r\n ngOnInit(): void {}\r\n private onTouchedCallback: () => void = noop;\r\n private onChangeCallback: (_: any) => void = noop;\r\n ngOnChanges(_changes: SimpleChanges): void {\r\n if (!_changes['optionList']?.currentValue) {\r\n } else {\r\n this.writeValue(this.control?.value);\r\n }\r\n }\r\n /**\r\n * @description Method to toggle dropdown list\r\n * @author Shiva Kant\r\n */\r\n toggleDropdown(): void {\r\n this.showDropdown = !this.showDropdown;\r\n }\r\n /**\r\n * @description method to update selected item\r\n * @author Shiva Kant\r\n * @param item this is selected item from list\r\n * @param type type of list\r\n * @returns none\r\n */\r\n updateSelectedItem(item: any, type: string): void {\r\n if (type == 'object') {\r\n this.inputValue = item[this.autoSingleSelectConfig.textField];\r\n } else {\r\n this.inputValue = item;\r\n }\r\n this.selectedOption = item;\r\n this.showDropdown = false;\r\n this.inValid = false;\r\n this.onChangeCallback(item);\r\n\r\n this.onTouchedCallback();\r\n this.onItemSelection.emit(this.selectedOption);\r\n }\r\n\r\n writeValue(obj: any): void {\r\n this.syncSelectionWithValue(obj);\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChangeCallback = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onTouchedCallback = fn;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n this.disableControl = isDisabled;\r\n }\r\n validate(control: AbstractControl): ValidationErrors | null {\r\n this.control = control as FormControl;\r\n\r\n if (!this.autoSingleSelectConfig.required) return null;\r\n\r\n const val = control.value;\r\n\r\n const isEmpty =\r\n val === null ||\r\n val === undefined ||\r\n val === '' ||\r\n (typeof val === 'object' && Object.keys(val).length === 0);\r\n\r\n return isEmpty ? { required: true } : null;\r\n }\r\n\r\n // ---------- Helpers ----------\r\n private syncSelectionWithValue(value: any): void {\r\n this.selectedOption = null;\r\n this.inputValue = '';\r\n\r\n if (!value || !this.optionsList?.length) return;\r\n\r\n if (typeof value !== 'object') {\r\n this.selectedOption =\r\n this.optionsList.find(\r\n (o) =>\r\n o === value ||\r\n o?.[this.autoSingleSelectConfig.idField] === value ||\r\n o?.[this.autoSingleSelectConfig.textField] === value,\r\n ) ?? value;\r\n } else {\r\n this.selectedOption =\r\n this.optionsList.find(\r\n (o) =>\r\n o[this.autoSingleSelectConfig.idField] ===\r\n value[this.autoSingleSelectConfig.idField],\r\n ) ?? value;\r\n }\r\n\r\n this.inputValue = this.isObject(this.selectedOption)\r\n ? this.selectedOption[this.autoSingleSelectConfig.textField]\r\n : this.selectedOption;\r\n }\r\n /**\r\n * @description this method is use to update input value\r\n */\r\n updateInputValue(): void {\r\n let data: any = null;\r\n\r\n if (!this.inputValue || this.inputValue.trim() === '') {\r\n this.selectedOption = null;\r\n this.onChangeCallback(null);\r\n } else {\r\n if (this.isObject(this.optionsList?.[0])) {\r\n data = {\r\n [this.autoSingleSelectConfig.idField]: null,\r\n [this.autoSingleSelectConfig.textField]: this.inputValue,\r\n };\r\n } else {\r\n data = this.inputValue;\r\n }\r\n\r\n this.selectedOption = data;\r\n this.onChangeCallback(data);\r\n }\r\n\r\n this.onTouchedCallback();\r\n this.onItemSelection.emit(data);\r\n this.control?.updateValueAndValidity();\r\n }\r\n\r\n /**\r\n * @description method to update dropdown list state on input type\r\n * @author Shiva Kant\r\n */\r\n updateDropdownStatus(): void {\r\n if (!this.inputValue || this.inputValue.trim() === '') {\r\n this.selectedOption = null;\r\n this.onChangeCallback(null);\r\n\r\n // force validation\r\n this.control?.updateValueAndValidity();\r\n this.showDropdown = false;\r\n return;\r\n }\r\n\r\n this.showDropdown = true;\r\n }\r\n\r\n /**\r\n * @description method to check if the list is Array of string or object\r\n * @author Shiva Kant\r\n * @param data this is the any one one item of list\r\n * @returns boolean\r\n */\r\n isObject(data: any): boolean {\r\n const type = typeof data;\r\n return data && type != 'string';\r\n }\r\n /**\r\n * @description This method is use to close dropdown on click outside\r\n */\r\n outsideClicked(): void {\r\n if (this.showDropdown) {\r\n if (this.autoSingleSelectConfig.customInput) {\r\n this.updateInputValue();\r\n }\r\n }\r\n this.showDropdown = false;\r\n }\r\n onClickEnter(control: any) {\r\n if (this.autoSingleSelectConfig.customInput) {\r\n this.updateInputValue();\r\n }\r\n }\r\n /**\r\n * @description method to load more list\r\n * @author Shiva Kant\r\n * @param event\r\n */\r\n onDivScroll(event: any): void {\r\n if (\r\n event.target.offsetHeight + event.target.scrollTop >=\r\n event.target.scrollHeight - 1 &&\r\n this.optionsList.length\r\n ) {\r\n this.onScroll.emit();\r\n }\r\n }\r\n}","<div class=\"main_container\" catsOutsideClick (clickOutSide)=\"outsideClicked()\">\r\n <div class=\"input_container\">\r\n <div class=\"input_box\">\r\n <input\r\n class=\"textTruncate\"\r\n type=\"text\"\r\n [(ngModel)]=\"inputValue\"\r\n (keyup.enter)=\"onClickEnter(inputValue)\"\r\n (keyup)=\"updateDropdownStatus()\"\r\n (input)=\"updateDropdownStatus()\"\r\n [placeholder]=\"autoSingleSelectConfig.placeholder\"\r\n />\r\n </div>\r\n <div class=\"arrow_icon\" (click)=\"toggleDropdown()\">\r\n <img\r\n src=\"images/chevron-up.svg\"\r\n alt=\"up-arrow\"\r\n [ngClass]=\"{ 'd-none': !showDropdown }\"\r\n />\r\n <img\r\n src=\"images/chevron-down.svg\"\r\n alt=\"down-arrow\"\r\n [ngClass]=\"{ 'd-none': showDropdown }\"\r\n />\r\n </div>\r\n </div>\r\n\r\n @if (showDropdown) {\r\n <div class=\"dropdown_list_single_auto_select\">\r\n <!-- if optionList is an array of object-->\r\n @if (isObject(optionsList[0])) {\r\n <ng-container>\r\n <ul>\r\n @for (item of optionsList; track $index) {\r\n <ng-container>\r\n @if\r\n (item[autoSingleSelectConfig.textField].toLowerCase().includes(inputValue.toLowerCase())\r\n || inputValue == '') {\r\n <li\r\n (click)=\"updateSelectedItem(item, 'object')\"\r\n [ngClass]=\"\r\n autoSingleSelectConfig.disabledField &&\r\n item[autoSingleSelectConfig.disabledField]\r\n ? 'disabled_option'\r\n : ''\r\n \"\r\n >\r\n <span class=\"textTruncate\">\r\n {{ item[autoSingleSelectConfig.textField] }}\r\n </span>\r\n </li>\r\n }\r\n </ng-container>\r\n }\r\n </ul>\r\n </ng-container>\r\n }\r\n\r\n <!-- if optionList is an array of string-->\r\n @if (!isObject(optionsList[0])) {\r\n <ng-container>\r\n <ul>\r\n @for (item of optionsList; track $index) {\r\n <ng-container>\r\n @if (item.includes(inputValue) || inputValue == '') {\r\n <li\r\n [ngClass]=\"\r\n autoSingleSelectConfig.disabledField &&\r\n item[autoSingleSelectConfig.disabledField]\r\n ? 'disabled_option'\r\n : ''\r\n \"\r\n (click)=\"updateSelectedItem(item, 'string')\"\r\n >\r\n {{ item }}\r\n </li>\r\n\r\n } </ng-container\r\n >}\r\n </ul></ng-container\r\n >}\r\n </div>\r\n }\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, EventEmitter, forwardRef, Input, OnInit, Output, SimpleChanges } from '@angular/core';\r\nimport { AbstractControl, ControlValueAccessor, FormControl, FormsModule, NG_VALIDATORS, NG_VALUE_ACCESSOR, ValidationErrors, Validator } from '@angular/forms';\r\nimport { AutoCompleteMultiSelectConfig } from '../../modal/cats-ui.modal';\r\nimport { OutsideClickDirective } from '../../directives/outside-click.directive';\r\n\r\n@Component({\r\n selector: 'cats-ui-input-multi-select',\r\n imports: [CommonModule, FormsModule, OutsideClickDirective],\r\n templateUrl: './auto-complete-multi-select.component.html',\r\n styleUrl: './auto-complete-multi-select.component.scss',\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => AutoCompleteMultiSelectComponent),\r\n multi: true,\r\n },\r\n {\r\n provide: NG_VALIDATORS,\r\n useExisting: forwardRef(() => AutoCompleteMultiSelectComponent),\r\n multi: true,\r\n },\r\n ],\r\n host: { tabindex: '0' },\r\n})\r\nexport class AutoCompleteMultiSelectComponent\r\n implements OnInit, ControlValueAccessor, Validator\r\n{\r\n @Input() autoCompleteMultiSelectConfig!: AutoCompleteMultiSelectConfig;\r\n @Input() selectedItem: any;\r\n @Input() optionsList: any[] = [];\r\n @Input() parentNativeElement: any;\r\n @Output() onItemSelection = new EventEmitter();\r\n @Output() onScroll: any = new EventEmitter();\r\n showDropdown: boolean = false;\r\n inputValue: string = '';\r\n selectedOptions: any[] = [];\r\n isSelectedAll: boolean = false;\r\n inValid: boolean = false;\r\n control!: FormControl<any>;\r\n isDisabled = false;\r\n constructor() {}\r\n ngOnInit() {}\r\n ngOnChanges(_changes: SimpleChanges): void {\r\n if (!_changes['optionList']?.currentValue) {\r\n } else {\r\n this.writeValue(this.control?.value);\r\n }\r\n }\r\n private onChange: (_: any) => void = () => {};\r\n private onTouched: () => void = () => {};\r\n private applyDefaultConfig() {\r\n const defaults = new AutoCompleteMultiSelectConfig();\r\n this.autoCompleteMultiSelectConfig = {\r\n ...defaults,\r\n ...this.autoCompleteMultiSelectConfig,\r\n };\r\n }\r\n\r\n /**\r\n * @description Method to toggle dropdown list\r\n * @author Shiva Kant\r\n */\r\n toggleDropdown(): void {\r\n this.showDropdown = !this.showDropdown;\r\n if (this.parentNativeElement) {\r\n this.parentNativeElement.scrollIntoView({\r\n behavior: 'smooth',\r\n block: 'center',\r\n });\r\n let parentDiv = document.getElementById(this.parentNativeElement);\r\n setTimeout(() => {\r\n let parentBoundary = parentDiv?.getBoundingClientRect() || ({} as any);\r\n let dropdonwList: any = document.getElementById('container_scroll');\r\n let elBoundary = dropdonwList?.getBoundingClientRect() || {};\r\n if (parentBoundary?.['bottom'] < elBoundary?.['bottom']) {\r\n dropdonwList.style['transform'] = `translate(0px,-${\r\n elBoundary?.['height'] + 54\r\n }px`;\r\n }\r\n }, 20);\r\n }\r\n }\r\n writeValue(value: any[]): void {\r\n if (Array.isArray(value)) {\r\n this.selectedOptions = value;\r\n\r\n // sync optionsList selection\r\n this.optionsList.forEach((opt) => {\r\n opt.isSelected = value.some((v) =>\r\n this.isObject(v)\r\n ? v[this.autoCompleteMultiSelectConfig.textField] ===\r\n opt[this.autoCompleteMultiSelectConfig.textField]\r\n : v === opt,\r\n );\r\n });\r\n this.onChange(this.selectedOptions);\r\n this.onTouched();\r\n this.updateSelectAllState();\r\n }\r\n }\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n this.isDisabled = isDisabled;\r\n }\r\n validate(control: AbstractControl): ValidationErrors | null {\r\n this.control = control as FormControl;\r\n\r\n if (!this.autoCompleteMultiSelectConfig.required) return null;\r\n\r\n const val = control.value;\r\n\r\n const isEmpty =\r\n val === null ||\r\n val === undefined ||\r\n val === '' ||\r\n (typeof val === 'object' && Object.keys(val).length === 0);\r\n\r\n return isEmpty ? { required: true } : null;\r\n }\r\n onInput(event: Event) {\r\n const target = event.target as HTMLInputElement;\r\n this.inputValue = target.value;\r\n }\r\n /**\r\n * @description method to update selected item\r\n * @author Shiva Kant\r\n * @param item this is selected item from list\r\n * @param type type of list\r\n * @returns none\r\n */\r\n updateSelectedItem(item: any, type: string) {\r\n if (type === 'object') {\r\n // Toggle the option's isSelected\r\n item.isSelected = !item.isSelected;\r\n\r\n if (item.isSelected) {\r\n // add to selectedOptions if not already present\r\n const exists = this.selectedOptions.some(\r\n (opt) =>\r\n this.isObject(opt) &&\r\n opt[this.autoCompleteMultiSelectConfig.textField] ===\r\n item[this.autoCompleteMultiSelectConfig.textField],\r\n );\r\n if (!exists) this.selectedOptions.push(item);\r\n } else {\r\n // remove from selectedOptions\r\n this.selectedOptions = this.selectedOptions.filter(\r\n (opt) =>\r\n !(\r\n this.isObject(opt) &&\r\n opt[this.autoCompleteMultiSelectConfig.textField] ===\r\n item[this.autoCompleteMultiSelectConfig.textField]\r\n ),\r\n );\r\n }\r\n } else {\r\n // string type\r\n const existsIndex = this.selectedOptions.findIndex((opt) => opt === item);\r\n if (existsIndex > -1) {\r\n // remove\r\n this.selectedOptions.splice(existsIndex, 1);\r\n } else {\r\n // add\r\n this.selectedOptions.push(item);\r\n }\r\n\r\n // If optionsList contains this string, also toggle its isSelected there\r\n const idxInOptions = this.optionsList.findIndex(\r\n (o) => typeof o === 'string' && o === item,\r\n );\r\n if (idxInOptions > -1) {\r\n // toggle corresponding option's isSelected\r\n const opt = this.optionsList[idxInOptions] as any;\r\n opt.isSelected = !opt.isSelected;\r\n }\r\n }\r\n\r\n // keep select all state consistent\r\n this.updateSelectAllState();\r\n this.onChange(this.selectedOptions);\r\n this.onTouched();\r\n\r\n this.onItemSelection.emit(this.selectedOptions);\r\n }\r\n\r\n /**\r\n * @description method to checkUncheckAll\r\n * @author Shiva Kant\r\n */\r\n\r\n checkUncheckAll(event: any) {\r\n if (event) event.stopPropagation();\r\n this.isSelectedAll = !this.isSelectedAll;\r\n\r\n this.optionsList.forEach((item) => {\r\n if (\r\n !this.autoCompleteMultiSelectConfig.disabledField ||\r\n !item[this.autoCompleteMultiSelectConfig.disabledField]\r\n ) {\r\n item.isSelected = this.isSelectedAll;\r\n }\r\n });\r\n\r\n // Keep custom values intact\r\n const customChips = this.selectedOptions.filter((opt) =>\r\n this.isObject(opt)\r\n ? !this.optionsList.some(\r\n (o) =>\r\n o[this.autoCompleteMultiSelectConfig.textField] ===\r\n opt[this.autoCompleteMultiSelectConfig.textField],\r\n )\r\n : !this.optionsList.includes(opt),\r\n );\r\n\r\n const selectedOptionItems = this.optionsList.filter(\r\n (opt) => opt.isSelected,\r\n );\r\n\r\n this.selectedOptions = [...customChips, ...selectedOptionItems];\r\n this.onChange(this.selectedOptions);\r\n this.onTouched();\r\n\r\n this.onItemSelection.emit(this.selectedOptions);\r\n }\r\n\r\n /**\r\n * @description method to removeChip\r\n * @author Shiva Kant\r\n */\r\n removeChip(item: any) {\r\n // Remove from selectedOptions\r\n this.selectedOptions = this.selectedOptions.filter((opt) =>\r\n this.isObject(opt)\r\n ? opt[this.autoCompleteMultiSelectConfig.textField] !==\r\n (this.isObject(item)\r\n ? item[this.autoCompleteMultiSelectConfig.textField]\r\n : item)\r\n : opt !== item,\r\n );\r\n\r\n // If item corresponds to an optionsList entry, unselect it there too\r\n if (this.isObject(item)) {\r\n const idx = this.optionsList.findIndex(\r\n (o: any) =>\r\n this.isObject(o) &&\r\n o[this.autoCompleteMultiSelectConfig.textField] ===\r\n item[this.autoCompleteMultiSelectConfig.textField],\r\n );\r\n if (idx > -1) {\r\n this.optionsList[idx].isSelected = false;\r\n }\r\n } else {\r\n // string case\r\n const idx = this.optionsList.findIndex((o) => o === item);\r\n if (idx > -1) {\r\n this.optionsList[idx].isSelected = false;\r\n }\r\n }\r\n\r\n // update select all state & emit\r\n this.updateSelectAllState();\r\n this.onChange(this.selectedOptions); // 🔥 THIS updates formControl\r\n this.onTouched();\r\n\r\n this.onItemSelection.emit(this.selectedOptions);\r\n }\r\n /**\r\n * @description method to update dropdown list state on input type\r\n * @author Shiva Kant\r\n */\r\n updateDropdownStatus() {\r\n this.showDropdown = true;\r\n }\r\n\r\n /**\r\n * @description method to check if the list is Array of string or object\r\n * @author Shiva Kant\r\n * @param data this is the any one one item of list\r\n * @returns boolean\r\n */\r\n isObject(data: any): boolean {\r\n const type = typeof data;\r\n return data && type != 'string';\r\n }\r\n /**\r\n * @description This method is use to close dropdown on onClickEnter\r\n * @author Shiva Kant\r\n */\r\n\r\n onClickEnter(control?: any): void {\r\n if (!this.inputValue.trim()) return;\r\n\r\n // pattern check\r\n if (this.autoCompleteMultiSelectConfig.pattern) {\r\n const regex = new RegExp(this.autoCompleteMultiSelectConfig.pattern);\r\n if (!regex.test(this.inputValue)) {\r\n this.inputValue = '';\r\n return;\r\n }\r\n }\r\n\r\n const val = this.inputValue.trim();\r\n const valLower = val.toLowerCase();\r\n\r\n // Avoid duplicate\r\n const exists = this.selectedOptions.some((opt) =>\r\n this.isObject(opt)\r\n ? opt[this.autoCompleteMultiSelectConfig.textField].toLowerCase() ===\r\n valLower\r\n : opt.toLowerCase() === valLower,\r\n );\r\n if (exists) {\r\n this.inputValue = '';\r\n return;\r\n }\r\n\r\n // Try find matched item in optionsList\r\n const matchedItem = this.isObject(this.optionsList?.[0])\r\n ? this.optionsList.find(\r\n (opt: any) =>\r\n opt[this.autoCompleteMultiSelectConfig.textField].toLowerCase() ===\r\n valLower,\r\n )\r\n : this.optionsList.find((opt: any) => opt.toLowerCase() === valLower);\r\n\r\n if (matchedItem) {\r\n // If matched, ensure option is marked selected and present in selectedOptions\r\n matchedItem.isSelected = true;\r\n const already = this.selectedOptions.some((opt) =>\r\n this.isObject(opt)\r\n ? opt[this.autoCompleteMultiSelectConfig.textField] ===\r\n matchedItem[this.autoCompleteMultiSelectConfig.textField]\r\n : opt === matchedItem,\r\n );\r\n if (!already) this.selectedOptions.push(matchedItem);\r\n } else if (this.autoCompleteMultiSelectConfig.customInput) {\r\n // create custom item and mark it selected\r\n let newItem: any = val;\r\n if (this.isObject(this.optionsList?.[0])) {\r\n newItem = {\r\n [this.autoCompleteMultiSelectConfig.idField]: null,\r\n [this.autoCompleteMultiSelectConfig.textField]: val,\r\n isSelected: true, // mark selected for consistency\r\n __isCustom: true, // optional flag to identify custom items\r\n };\r\n }\r\n this.selectedOptions.push(newItem);\r\n }\r\n\r\n // reset input but keep dropdown open (as you wanted)\r\n this.inputValue = '';\r\n\r\n // update select all state and emit\r\n this.updateSelectAllState();\r\n this.onChange(this.selectedOptions);\r\n this.onTouched();\r\n this.onItemSelection.emit(this.selectedOptions);\r\n }\r\n outsideClicked(): void {\r\n this.showDropdown = false;\r\n }\r\n /**\r\n * @description method to load more list\r\n * @author Shiva Kant\r\n * @param event\r\n */\r\n onDivScroll(event: any): void {\r\n if (\r\n event.target.offsetHeight + event.target.scrollTop >=\r\n event.target.scrollHeight - 1 &&\r\n this.optionsList.length\r\n ) {\r\n this.onScroll.emit();\r\n }\r\n }\r\n\r\n updateSelectAllState() {\r\n // only consider non-disabled items for select-all state\r\n const selectable = this.optionsList.filter(\r\n (opt: any) =>\r\n !(\r\n this.autoCompleteMultiSelectConfig.disabledField &&\r\n opt[this.autoCompleteMultiSelectConfig.disabledField]\r\n ),\r\n );\r\n this.isSelectedAll =\r\n selectable.length > 0 && selectable.every((opt: any) => !!opt.isSelected);\r\n }\r\n}\r\n","<div class=\"main_container\">\r\n <div\r\n class=\"input_container\"\r\n catsOutsideClick\r\n (clickOutSide)=\"outsideClicked()\"\r\n >\r\n <div class=\"chips_wrapper\">\r\n <!-- Chips -->\r\n @for (item of selectedOptions; track $index) { @if ($index <\r\n autoCompleteMultiSelectConfig.chipLimit) {\r\n <div class=\"chip\" (click)=\"$event.stopPropagation()\">\r\n <span class=\"textTruncate\">\r\n {{\r\n isObject(item)\r\n ? item[autoCompleteMultiSelectConfig.textField]\r\n : item\r\n }}\r\n </span>\r\n <img\r\n src=\"images/x.svg\"\r\n class=\"cross_icon\"\r\n (click)=\"$event.stopPropagation(); removeChip(item)\"\r\n />\r\n </div>\r\n } }\r\n <!-- +N counter -->\r\n @if (selectedOptions.length > autoCompleteMultiSelectConfig.chipLimit) {\r\n <div class=\"view_more\">\r\n +{{ selectedOptions.length - autoCompleteMultiSelectConfig.chipLimit }}\r\n </div>\r\n }\r\n <!-- Input Box (always available) -->\r\n <div class=\"input_box\" (click)=\"$event.stopPropagation()\">\r\n <input\r\n type=\"text\"\r\n [value]=\"inputValue\"\r\n (input)=\"onInput($event)\"\r\n (keyup.enter)=\"onClickEnter()\"\r\n (keyup)=\"updateDropdownStatus()\"\r\n [placeholder]=\"\r\n selectedOptions.length === 0\r\n ? autoCompleteMultiSelectConfig.placeholder\r\n : ''\r\n \"\r\n />\r\n </div>\r\n </div>\r\n\r\n <!-- Dropdown toggle -->\r\n <div class=\"arrow_icon\" (click)=\"toggleDropdown()\">\r\n <img\r\n src=\"images/chevron-up.svg\"\r\n [ngClass]=\"{ 'd-none': !showDropdown }\"\r\n />\r\n <img\r\n src=\"images/chevron-down.svg\"\r\n [ngClass]=\"{ 'd-none': showDropdown }\"\r\n />\r\n </div>\r\n </div>\r\n\r\n <!-- Dropdown list -->\r\n @if (showDropdown) {\r\n <div class=\"dropdown_list_multi_auto_select\" id=\"container_scroll\" (click)=\" onDivScroll($event)\">\r\n <ul>\r\n <!-- Select All -->\r\n @if (autoCompleteMultiSelectConfig.selectAll) {\r\n <li\r\n class=\"checkbox_container select_all_item\"\r\n (click)=\"checkUncheckAll($event)\"\r\n >\r\n <input\r\n type=\"checkbox\"\r\n [checked]=\"isSelectedAll\"\r\n (click)=\"$event.stopPropagation(); checkUncheckAll($event)\"\r\n />\r\n <span>{{ isSelectedAll ? \"Unselect All\" : \"Select All\" }}</span>\r\n </li>\r\n }\r\n\r\n <!-- Object Options -->\r\n @if (isObject(optionsList[0])) { @for (item of optionsList; track $index)\r\n { @if (item[autoCompleteMultiSelectConfig.textField] .toLowerCase()\r\n .includes(inputValue.toLowerCase()) || inputValue == \"\") {\r\n\r\n <li\r\n class=\"checkbox_container\"\r\n [ngClass]=\"{\r\n disabled_option:\r\n autoCompleteMultiSelectConfig.disabledField &&\r\n item[autoCompleteMultiSelectConfig.disabledField]\r\n }\"\r\n (click)=\"updateSelectedItem(item, 'object')\"\r\n >\r\n <input\r\n type=\"checkbox\"\r\n [checked]=\"item.isSelected\"\r\n (click)=\"$event.stopPropagation(); updateSelectedItem(item, 'object')\"\r\n />\r\n\r\n <span class=\"textTruncate\">{{\r\n item[autoCompleteMultiSelectConfig.textField]\r\n }}</span>\r\n </li>\r\n } } }\r\n\r\n <!-- String Options -->\r\n @if (!isObject(optionsList[0])) { @for (item of optionsList; track $index)\r\n { @if (item.toLowerCase().includes(inputValue.toLowerCase()) || inputValue\r\n == \"\") {\r\n <li\r\n class=\"checkbox_container\"\r\n (click)=\"updateSelectedItem(item, 'string')\"\r\n >\r\n <input\r\n type=\"checkbox\"\r\n [checked]=\"selectedOptions.includes(item)\"\r\n (click)=\"$event.stopPropagation(); updateSelectedItem(item, 'string')\"\r\n />\r\n <span class=\"textTruncate\">{{ item }}</span>\r\n </li>\r\n } } }\r\n </ul>\r\n </div>\r\n }\r\n</div>\r\n","import { Component, EventEmitter, forwardRef, Input, Output } from '@angular/core';\r\nimport { ToggleConfig } from '../../modal/cats-ui.modal';\r\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\r\n\r\n@Component({\r\n selector: 'cats-ui-toogle-button',\r\n imports: [],\r\n templateUrl: './toogle-button.component.html',\r\n styleUrl: './toogle-button.component.scss',\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => ToogleButtonComponent),\r\n multi: true,\r\n },\r\n ],\r\n})\r\nexport class ToogleButtonComponent {\r\n @Input() toggleConfig!: ToggleConfig;\r\n @Output() onToggled: EventEmitter<boolean> = new EventEmitter<boolean>();\r\n\r\n private onChange: (value: boolean) => void = () => {};\r\n private onTouched: () => void = () => {};\r\n toggle() {\r\n if (!this.toggleConfig.disabled) {\r\n this.toggleConfig.checked = !this.toggleConfig.checked;\r\n this.onToggled.emit(this.toggleConfig.checked);\r\n }\r\n }\r\n\r\n // ControlValueAccessor methods\r\n writeValue(value: boolean): void {\r\n this.toggleConfig.checked = value;\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n this.toggleConfig.disabled = isDisabled;\r\n }\r\n}\r\n","<div class=\"toggle_button\">\r\n <label class=\"switch\">\r\n <input \r\n type=\"checkbox\" \r\n [checked]=\"toggleConfig.checked\" \r\n [disabled]=\"toggleConfig.disabled\"\r\n (change)=\"toggle()\"\r\n />\r\n <span class=\"slider round\"></span>\r\n <span class=\"toggle-status\">\r\n {{ toggleConfig.checked ? 'ON' : 'OFF' }}\r\n </span>\r\n </label>\r\n</div>\r\n","import { Component,EventEmitter, forwardRef, Input, OnChanges, Output, SimpleChanges } from '@angular/core';\r\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';\r\nimport { CheckBoxConfig } from '../../modal/cats-ui.modal';\r\n\r\n@Component({\r\n selector: 'cats-ui-checkbox-button',\r\n imports: [],\r\n templateUrl: './checkbox-button.component.html',\r\n styleUrl: './checkbox-button.component.scss',\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => CheckboxButtonComponent),\r\n multi: true,\r\n },\r\n ],\r\n})\r\nexport class CheckboxButtonComponent\r\n implements ControlValueAccessor, OnChanges\r\n{\r\n @Input() checkBoxConfig!: CheckBoxConfig;\r\n @Output() onCheckBoxSelection = new EventEmitter<any>();\r\n @Input() optionList: any[] = [];\r\n @Input() selectedOptions: any[] = [];\r\n\r\n private onChange: (value: any[]) => void = () => {};\r\n private onTouched: () => void = () => {};\r\n\r\n get idField(): string {\r\n return this.checkBoxConfig?.idField || 'id';\r\n }\r\n\r\n get textField(): string {\r\n return this.checkBoxConfig?.textField || 'name';\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['selectedOptions'] && this.selectedOptions?.length) {\r\n this.applySelectedOptions();\r\n }\r\n }\r\n\r\n /**\r\n * @description normalizeSelectedValue the value according t\r\n * @param item\r\n * @returns\r\n */\r\n normalizeSelectedValue(item: any): string {\r\n if (item == null) return '';\r\n\r\n if (typeof item === 'string') return item; // case 1: string of id or name\r\n if (item.id) return item.id; // case 2: object with id\r\n if (item.name) return item.name; // case 3: object with name\r\n\r\n return ''; // fallback\r\n }\r\n\r\n /**\r\n * @description Method is to Apply selectedOptions on input change\r\n * @author Shiva Kant\r\n */\r\n private applySelectedOptions() {\r\n const normalized = this.selectedOptions.map((s: any) =>\r\n this.normalizeSelectedValue(s)\r\n );\r\n this.optionList = this.optionList.map((task) => {\r\n const taskId = task.id;\r\n const taskName = task.name;\r\n\r\n const isParentSelected =\r\n normalized.includes(taskId) || normalized.includes(taskName);\r\n\r\n const updatedSubtasks = (task.subtasks ?? []).map((sub: any) => {\r\n const subId = sub.id;\r\n const subName = sub.name;\r\n\r\n return {\r\n ...sub,\r\n checked: normalized.includes(subId) || normalized.includes(subName),\r\n };\r\n });\r\n\r\n return {\r\n ...task,\r\n checked:\r\n isParentSelected || updatedSubtasks.every((s: any) => s.checked),\r\n subtasks: updatedSubtasks,\r\n };\r\n });\r\n }\r\n\r\n /**\r\n * @description Method is to Checkbox change handler\r\n * @author Shiva Kant\r\n * @param event\r\n * @param parentIndex\r\n * @param subIndex\r\n */\r\n onCheckboxChange(event: Event, parentIndex: number, subIndex?: number) {\r\n const checked = (event.target as HTMLInputElement).checked;\r\n\r\n this.optionList = this.optionList.map((task, i) => {\r\n const safeTask = {\r\n ...task,\r\n checked: task.checked ?? false,\r\n subtasks: task.subtasks ?? [],\r\n };\r\n\r\n if (i === parentIndex) {\r\n if (subIndex === undefined) {\r\n // Parent checkbox toggled\r\n safeTask.checked = checked;\r\n safeTask.subtasks = safeTask.subtasks.map((sub: any) => ({\r\n ...sub,\r\n checked,\r\n }));\r\n } else if (safeTask.subtasks[subIndex]) {\r\n // Subtask toggled\r\n safeTask.subtasks[subIndex].checked = checked;\r\n // Parent checked only if all subtasks are checked\r\n safeTask.checked = safeTask.subtasks.every((sub: any) => sub.checked);\r\n }\r\n }\r\n\r\n return safeTask;\r\n });\r\n\r\n const checkedTasks = this.optionList\r\n .filter(\r\n (task) =>\r\n (task.checked ?? false) ||\r\n task.subtasks?.some((s: any) => s.checked ?? false)\r\n )\r\n .map((task) => ({\r\n ...task,\r\n subtasks: task.subtasks?.filter((s: any) => s.checked ?? false) || [],\r\n }));\r\n\r\n const selectedObjects = checkedTasks.map((task) => ({\r\n ...task,\r\n subtasks: task.subtasks.filter((s: any) => s.checked),\r\n }));\r\n\r\n this.onCheckBoxSelection.emit(selectedObjects);\r\n this.onChange(this.optionList);\r\n this.onTouched();\r\n }\r\n /**\r\n * @description Indeterminate state for parent on option checked\r\n * @param task\r\n * @returns\r\n */\r\n partiallyComplete(task: any): boolean {\r\n if (!task?.subtasks?.length) return false;\r\n const done = task.subtasks.filter((t: any) => t.checked).length;\r\n return done > 0 && done < task.subtasks.length;\r\n }\r\n\r\n // ControlValueAccessor methods\r\n writeValue(value: any[]): void {\r\n if (value) {\r\n this.optionList = value.map((task) => ({\r\n ...task,\r\n subtasks: task.subtasks ? [...task.subtasks] : [],\r\n }));\r\n }\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n if (isDisabled) {\r\n this.optionList.forEach((task) => {\r\n task.checked = false;\r\n task.subtasks?.forEach((sub: any) => (sub.checked = false));\r\n });\r\n }\r\n }\r\n}\r\n","<div class=\"parent_container\">\r\n <ul>\r\n @for (task of optionList; let parentIndex = $index; track $index) {\r\n <li>\r\n <!-- Parent Checkbox -->\r\n <label class=\"checkbox_container\">\r\n <input\r\n type=\"checkbox\"\r\n [name]=\"checkBoxConfig.name\"\r\n [checked]=\"task.checked\"\r\n [disabled]=\"\r\n checkBoxConfig.disabledField\r\n ? task[checkBoxConfig.disabledField]\r\n : false\r\n \"\r\n [indeterminate]=\"partiallyComplete(task)\"\r\n (change)=\"onCheckboxChange($event, parentIndex)\"\r\n />\r\n <span class=\"textTruncate\">{{ task[textField] }}</span>\r\n </label>\r\n\r\n <!-- Subtasks -->\r\n @if (task.subtasks && task.subtasks.length > 0) {\r\n <ul class=\"sub\">\r\n @for (sub of task.subtasks; let idx = $index; track $index) {\r\n <li>\r\n <label class=\"checkbox_container\">\r\n <input\r\n type=\"checkbox\"\r\n [checked]=\"sub.checked\"\r\n (change)=\"onCheckboxChange($event, parentIndex, idx)\"\r\n />\r\n <!-- <span class=\"checkmark\"></span> -->\r\n <span class=\"label-text\">{{ sub[textField] }}</span>\r\n </label>\r\n </li>\r\n }\r\n </ul>\r\n }\r\n </li>\r\n }\r\n </ul>\r\n</div>\r\n","import {\r\n Component,\r\n EventEmitter,\r\n forwardRef,\r\n Input,\r\n Output,\r\n SimpleChanges,\r\n} from '@angular/core';\r\nimport {\r\n NG_VALUE_ACCESSOR,\r\n ControlValueAccessor,\r\n FormsModule,\r\n} from '@angular/forms';\r\nimport { RadioButtonConfig } from '../../modal/cats-ui.modal';\r\nimport { CommonModule } from '@angular/common';\r\n\r\n@Component({\r\n selector: 'cats-ui-radio-button',\r\n imports: [CommonModule, FormsModule],\r\n templateUrl: './radio-button.component.html',\r\n styleUrl: './radio-button.component.scss',\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => RadioButtonComponent),\r\n multi: true,\r\n },\r\n ],\r\n})\r\nexport class RadioButtonComponent implements ControlValueAccessor {\r\n @Input() config!: RadioButtonConfig;\r\n @Input() optionList: any[] = [];\r\n @Output() selectionChange = new EventEmitter<any>();\r\n // selectedRadio pass id in number or name in string or full object\r\n @Input() selectedRadio: any;\r\n\r\n value: any = null;\r\n isDisabled = false;\r\n\r\n onChange = (_: any) => {};\r\n onTouched = () => {};\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['selectedRadio'] && this.optionList?.length) {\r\n if (!this.selectedRadio) return;\r\n\r\n const selected = this.selectedRadio;\r\n\r\n const match = this.optionList.find((opt) => {\r\n const optValue = this.extractValue(opt);\r\n const optLabel = this.extractLabel(opt);\r\n\r\n if (typeof selected === 'string' || typeof selected === 'number') {\r\n // Match primitive against value or label\r\n return selected === optValue || selected === optLabel;\r\n } else if (typeof selected === 'object') {\r\n // Match object against option's value or label\r\n const selValue = this.extractValue(selected);\r\n const selLabel = this.extractLabel(selected);\r\n return selValue === optValue || selLabel === optLabel;\r\n }\r\n return false;\r\n });\r\n\r\n if (match) {\r\n this.value = this.extractValue(match);\r\n this.onChange(this.value);\r\n }\r\n }\r\n }\r\n\r\n writeValue(value: any): void {\r\n this.value = value;\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState?(isDisabled: boolean): void {\r\n this.isDisabled = isDisabled;\r\n }\r\n /**\r\n * @description method to handle change of toggle button\r\n * @author Shiva Kant\r\n * @param option\r\n */\r\n handleChange(option: any) {\r\n this.value = this.extractValue(option);\r\n this.onChange(this.value);\r\n this.onTouched();\r\n this.selectionChange.emit(option);\r\n }\r\n /**\r\n * @description method to extractValue\r\n * @author Shiva Kant\r\n * @param option\r\n * @returns\r\n */\r\n extractValue(option: any): any {\r\n if (typeof option === 'string' || typeof option === 'number') {\r\n return option;\r\n }\r\n\r\n const key = this.config.valueField ?? 'id'; // ALWAYS a string\r\n return option[key];\r\n }\r\n\r\n extractLabel(option: any): string {\r\n if (typeof option === 'string') return option;\r\n\r\n const key = this.config.textField ?? 'label';\r\n return option[key];\r\n }\r\n\r\n /**\r\n * * @description method to normalizeValue\r\n * @author Shiva Kant\r\n * @param value\r\n * @returns\r\n */\r\n normalizeValue(value: any): any {\r\n if (value == null) return null;\r\n\r\n if (typeof value === 'string' || typeof value === 'number') {\r\n return value;\r\n }\r\n\r\n // object case → return id or valueField\r\n const key = this.config.valueField ?? 'id';\r\n return value[key];\r\n }\r\n}\r\n","<div class=\"radio_group\" [ngClass]=\"config.layout\">\r\n @if (config.label) {\r\n <div class=\"group_label\">{{ config.label }}</div>\r\n }\r\n\r\n <div class=\"radio_option_container\">\r\n @for (option of optionList; track $index) {\r\n <div class=\"radio_option\">\r\n <input\r\n type=\"radio\"\r\n [name]=\"config.name\"\r\n [id]=\"extractValue(option)\"\r\n [disabled]=\"config.disabled ? option[config.disabled] : false\"\r\n [value]=\"extractValue(option)\"\r\n [(ngModel)]=\"value\"\r\n (change)=\"handleChange(option)\"\r\n />\r\n <label [for]=\"extractValue(option)\">{{ extractLabel(option) }}</label>\r\n </div>\r\n }\r\n </div>\r\n</div>\r\n","import { CommonModule, DatePipe } from '@angular/common';\r\nimport { ChangeDetectorRef, Component, EventEmitter, Inject, Input, LOCALE_ID, OnChanges, OnInit, Output, SimpleChanges } from '@angular/core';\r\nimport { AbstractControl, ControlValueAccessor, FormControl, NG_VALIDATORS, NG_VALUE_ACCESSOR, ValidationErrors } from '@angular/forms';\r\nimport { OutsideClickDirective } from '../../directives/outside-click.directive';\r\nimport { DateConfig } from '../../modal/cats-ui.modal';\r\ninterface IRange {\r\n value: Date;\r\n label: string;\r\n}\r\n@Component({\r\n selector: 'cats-ui-date-time-picker',\r\n imports: [CommonModule, OutsideClickDirective],\r\n templateUrl: './date-time-picker.component.html',\r\n styleUrl: './date-time-picker.component.scss',\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: DateTimePickerComponent,\r\n multi: true,\r\n },\r\n {\r\n provide: NG_VALIDATORS,\r\n useExisting: DateTimePickerComponent,\r\n multi: true,\r\n },\r\n DatePipe,\r\n ],\r\n host: { tabindex: '0' },\r\n})\r\nexport class DateTimePickerComponent\r\n implements OnInit, OnChanges, ControlValueAccessor\r\n{\r\n @Output() dateTimeSelected = new EventEmitter<any>();\r\n @Input() dateConfig!: DateConfig;\r\n @Input() minDate?: string;\r\n @Input() maxDate?: string;\r\n @Input() preSelectedValue: any;\r\n selectedDateTime: any;\r\n currentDate = new Date();\r\n currentMonth = this.currentDate.getMonth();\r\n currentYear = this.currentDate.getFullYear();\r\n selectedDate: number | null = null;\r\n selectedTime: string | null = null;\r\n calendar: number[][] = [];\r\n timeSlots: IRange[] = [];\r\n rangeStart: number | null = null;\r\n rangeEnd: number | null = null;\r\n selectedMonth: any;\r\n selectedYear: any;\r\n control!: AbstractControl<any, any>;\r\n disableControl: boolean = false;\r\n date: any = '';\r\n calendarView: string = 'defaultView';\r\n yearRange: number[] = [];\r\n daysInMonth: any[] = [];\r\n selectedDay: number = 0;\r\n selectedStartDate: any;\r\n selectedEndDate: any;\r\n isOpen: boolean = false;\r\n showYearSelector = false;\r\n monthRange: any = {\r\n '0': 'JAN',\r\n '01': 'FEB',\r\n '02': 'MAR',\r\n '03': 'APR',\r\n '04': 'MAY',\r\n '05': 'JUN',\r\n '06': 'JUL',\r\n '07': 'AUG',\r\n '08': 'SEP',\r\n '09': 'OCT',\r\n '10': 'NOV',\r\n '11': 'DEC',\r\n };\r\n constructor(\r\n @Inject(LOCALE_ID) private locale: string,\r\n private cd: ChangeDetectorRef,\r\n private datePipe: DatePipe,\r\n ) {}\r\n ngOnChanges(_changes: SimpleChanges): void {\r\n if (!_changes['selectedDateTime']?.currentValue) {\r\n this.selectedDateTime = [];\r\n } else {\r\n this.writeValue(this.control?.value);\r\n }\r\n }\r\n ngOnInit(): void {\r\n this.generateYearRange();\r\n // this.generateCalendar();\r\n this.generateTimeRanges();\r\n if (this.preSelectedValue) {\r\n this.initializeCalendar();\r\n }\r\n }\r\n\r\n private onTouchedCallback: () => void = () => {};\r\n private onChangeCallback: (_: any) => void = () => {};\r\n writeValue(value: any): void {\r\n if (value) {\r\n this.selectedDateTime = value;\r\n this.onChangeCallback(value);\r\n this.cd.markForCheck();\r\n }\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChangeCallback = fn;\r\n }\r\n registerOnTouched(fn: any): void {\r\n this.onTouchedCallback = fn;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n if (this.control) {\r\n isDisabled ? this.control.disable() : this.control.enable();\r\n }\r\n }\r\n /**\r\n * @description Validates date time picker component\r\n * @author Shiva Kant\r\n * @param control\r\n * @returns validate\r\n */\r\n validate(control: AbstractControl): ValidationErrors | null {\r\n this.control = control;\r\n const selected = this.date ? new Date(this.date) : null;\r\n\r\n // Check required manually\r\n const isRequired =\r\n control.validator && control.validator(control)?.['required'];\r\n\r\n if (\r\n (isRequired || control.hasError('required')) &&\r\n (!this.date || !this.selectedDay)\r\n ) {\r\n return { required: true };\r\n } else if (this.minDate && selected && selected < new Date(this.minDate)) {\r\n return { minDate: true };\r\n } else if (this.maxDate && selected && selected > new Date(this.maxDate)) {\r\n return { maxDate: true };\r\n }\r\n\r\n return null;\r\n }\r\n /**\r\n * @description method to toggleCalendar\r\n * @author Shiva Kant\r\n */\r\n toggleCalendar(): void {\r\n this.isOpen = !this.isOpen;\r\n if (this.date && this.isOpen) {\r\n this.currentDate = new Date(this.date);\r\n this.selectedDay = this.currentDate.getDate();\r\n }\r\n this.calendarView = 'defaultView';\r\n this.generateCalendar();\r\n if (this.isOpen) {\r\n let ele = document.getElementsByClassName('calendar-footer');\r\n setTimeout(() => {\r\n ele[0]?.scrollIntoView();\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * @description Closes calendar\r\n * @author Shiva Kant\r\n */\r\n closeCalendar(): void {\r\n this.isOpen = false;\r\n this.calendarView = 'defaultView';\r\n }\r\n /**\r\n * @description Method to Gets month year\r\n * @author Shiva Kant\r\n * @returns month year\r\n */\r\n getMonthYear(): { month: string; year: string } {\r\n return {\r\n month: this.currentDate.toLocaleString('default', {\r\n month: 'long',\r\n }),\r\n year: this.currentDate.toLocaleString('default', {\r\n year: 'numeric',\r\n }),\r\n };\r\n }\r\n\r\n /**\r\n * @description Method to Updates current year month\r\n * @author Shiva Kant\r\n */\r\n updateCurrentYearMonth(): void {\r\n this.currentYear = this.currentDate.getFullYear();\r\n this.currentMonth = this.currentDate.getMonth();\r\n }\r\n\r\n /**\r\n * @description Method to Selects year\r\n * @author Shiva Kant\r\n * @param year\r\n */\r\n selectYear(year: number): void {\r\n this.currentDate.setFullYear(year);\r\n this.updateCurrentYearMonth();\r\n this.showYearSelector = false;\r\n this.calendarView = 'defaultView';\r\n this.selectedDay = 0;\r\n this.generateCalendar();\r\n }\r\n\r\n /**\r\n * @description Method to Selects month\r\n * @author Shiva Kant\r\n * @param month\r\n */\r\n selectMonth(month: any): void {\r\n this.currentDate.setMonth(month);\r\n this.updateCurrentYearMonth();\r\n this.calendarView = 'defaultView';\r\n this.selectedDay = 0;\r\n this.generateCalendar();\r\n }\r\n\r\n /**\r\n * @description Method to Previous year range\r\n * @author Shiva Kant\r\n */\r\n previousYearRange(): void {\r\n this.yearRange = this.yearRange.map((year) => year - 18);\r\n }\r\n\r\n /**\r\n * @description Method to Next year range\r\n * @author Shiva Kant\r\n */\r\n nextYearRange(): void {\r\n this.yearRange = this.yearRange.map((year) => year + 18);\r\n }\r\n\r\n /**\r\n * @description Method to Toggles year selector\r\n * @author Shiva Kant\r\n */\r\n toggleYearSelector(): void {\r\n this.showYearSelector = !this.showYearSelector;\r\n this.generateYearRange();\r\n }\r\n /**\r\n * @description Method to Generates year range\r\n * @author Shiva Kant\r\n */\r\n generateYearRange(): void {\r\n const currentYear = this.currentDate.getFullYear();\r\n const startYear = currentYear - (currentYear % 20);\r\n this.yearRange = Array.from({ length: 18 }, (_, i) => startYear + i);\r\n }\r\n /**\r\n * @description Method to Determines whether date selectable is\r\n * @author Shiva Kant\r\n * @param date\r\n * @returns true if date selectable\r\n */\r\n isDateSelectable(date: Date): boolean {\r\n const min = this.minDate ? new Date(this.minDate) : null;\r\n const max = this.maxDate ? new Date(this.maxDate) : null;\r\n if (min && date < min) return false;\r\n if (max && date > max) return false;\r\n return true;\r\n }\r\n /**\r\n * @description Method to Determines whether day disabled is\r\n * @author Shiva Kant\r\n * @param day\r\n * @returns true if day disabled\r\n */\r\n isDayDisabled(day: number): boolean {\r\n const date = new Date(\r\n this.currentDate.getFullYear(),\r\n this.currentDate.getMonth(),\r\n day,\r\n );\r\n return !this.isDateSelectable(date);\r\n }\r\n /**\r\n * @description Method to Generates calendar\r\n * @author Shiva Kant\r\n */\r\n generateCalendar(): void {\r\n const year = this.currentDate.getFullYear();\r\n const month = this.currentDate.getMonth();\r\n\r\n const firstDayOfMonth = new Date(year, month, 1);\r\n const firstWeekDay = (firstDayOfMonth.getDay() + 6) % 7; // Convert Sunday (0) to 6, Monday is 0\r\n\r\n const daysInCurrentMonth = new Date(year, month + 1, 0).getDate();\r\n const daysInPreviousMonth = new Date(year, month, 0).getDate();\r\n\r\n const totalCells = 42; // 6 rows of 7 days\r\n const calendarDays: { day: number; date: Date; isCurrentMonth: boolean }[] =\r\n [];\r\n\r\n // Fill previous month days\r\n for (let i = firstWeekDay - 1; i >= 0; i--) {\r\n const day = daysInPreviousMonth - i;\r\n const date = new Date(year, month - 1, day);\r\n calendarDays.push({ day, date, isCurrentMonth: false });\r\n }\r\n\r\n // Fill current month days\r\n for (let day = 1; day <= daysInCurrentMonth; day++) {\r\n const date = new Date(year, month, day);\r\n calendarDays.push({ day, date, isCurrentMonth: true });\r\n }\r\n\r\n // Fill next month days\r\n const remaining = totalCells - calendarDays.length;\r\n for (let day = 1; day <= remaining; day++) {\r\n const date = new Date(year, month + 1, day);\r\n calendarDays.push({ day, date, isCurrentMonth: false });\r\n }\r\n\r\n this.daysInMonth = calendarDays;\r\n }\r\n\r\n /**\r\n * @description Method to Previous month\r\n * @author Shiva Kant\r\n */\r\n previousMonth(): void {\r\n this.currentDate.setMonth(this.currentDate.getMonth() - 1);\r\n this.updateCurrentYearMonth();\r\n this.selectedDay = 0;\r\n this.generateCalendar();\r\n }\r\n\r\n /**\r\n * @description Method to Next month\r\n * @author Shiva Kant\r\n */\r\n nextMonth(): void {\r\n this.currentDate.setMonth(this.currentDate.getMonth() + 1);\r\n this.updateCurrentYearMonth();\r\n this.selectedDay = 0;\r\n this.generateCalendar();\r\n }\r\n\r\n /**\r\n * @description Method to Initializes calendar when preSelectedValue date\r\n * @author Shiva Kant\r\n * @returns calendar\r\n */\r\n initializeCalendar(): void {\r\n if (!this.preSelectedValue) return;\r\n\r\n // Case 1: Single date (string or Date)\r\n if (\r\n typeof this.preSelectedValue === 'string' ||\r\n this.preSelectedValue instanceof Date\r\n ) {\r\n const date = new Date(this.preSelectedValue);\r\n this.selectedDate = date.getDate();\r\n this.selectedMonth = date.getMonth();\r\n this.selectedYear = date.getFullYear();\r\n this.selectedTime = this.formatTime(date);\r\n\r\n // Update current view to show the month/year\r\n this.currentDate = new Date(\r\n this.selectedYear,\r\n this.selectedMonth,\r\n this.selectedDate,\r\n );\r\n this.generateCalendar();\r\n }\r\n\r\n // Case 2: Range of dates\r\n else if (this.preSelectedValue.start && this.preSelectedValue.end) {\r\n const startDate = new Date(this.preSelectedValue.start);\r\n const endDate = new Date(this.preSelectedValue.end);\r\n\r\n // Patch component state\r\n this.rangeStart = startDate.getDate();\r\n this.rangeEnd = endDate.getDate();\r\n\r\n this.selectedStartDate = startDate;\r\n this.selectedEndDate = endDate;\r\n\r\n this.selectedMonth = startDate.getMonth();\r\n this.selectedYear = startDate.getFullYear();\r\n\r\n // Set the current calendar view to the start month/year\r\n this.currentDate = new Date(this.selectedYear, this.selectedMonth, 1);\r\n this.generateCalendar();\r\n\r\n // Optional: If your calendar requires a single selectedTime for range, you could pick start or end\r\n this.selectedTime = this.formatTime(startDate);\r\n\r\n // Emit initial range value\r\n this.emitDateTime();\r\n }\r\n }\r\n\r\n /**\r\n * @description Method to Selects date\r\n * @author Shiva Kant\r\n * @param date\r\n */\r\n selectDate(date: number): void {\r\n const selectedFullDate = new Date(\r\n this.currentYear,\r\n this.currentMonth,\r\n date,\r\n );\r\n selectedFullDate.setHours(0, 0, 0, 0);\r\n\r\n this.selectedMonth = this.currentMonth;\r\n this.selectedYear = this.currentYear;\r\n\r\n if (this.dateConfig.selectionMode === 'single') {\r\n this.selectedDate = date;\r\n this.rangeStart = null;\r\n this.rangeEnd = null;\r\n } else {\r\n if (!this.rangeStart || this.rangeEnd) {\r\n this.rangeStart = date;\r\n this.rangeEnd = null;\r\n } else {\r\n this.rangeEnd = date < this.rangeStart ? this.rangeStart : date;\r\n this.rangeStart = date < this.rangeStart ? date : this.rangeStart;\r\n }\r\n }\r\n\r\n this.emitDateTime();\r\n }\r\n\r\n /**\r\n * @description Method to Selects time\r\n * @author Shiva Kant\r\n * @param time\r\n */\r\n selectTime(time: string): void {\r\n this.selectedTime = time;\r\n this.emitDateTime();\r\n }\r\n /**\r\n * @description Method to Determines whether selected date is\r\n * @author Shiva Kant\r\n * @param date\r\n * @returns\r\n */\r\n isSelectedDate(date: number, month: number, year: number): boolean {\r\n if (this.dateConfig.selectionMode === 'single') {\r\n // Check if the day, month, and year match\r\n return (\r\n this.selectedDate === date &&\r\n this.selectedMonth === month &&\r\n this.selectedYear === year\r\n );\r\n } else if (this.dateConfig.selectionMode === 'range') {\r\n // Range selection checks, ensuring both start and end dates are within the same month and year\r\n return !!(\r\n (this.rangeStart &&\r\n this.rangeStart === date &&\r\n this.selectedMonth === month &&\r\n this.selectedYear === year) ||\r\n (this.rangeEnd &&\r\n this.rangeEnd === date &&\r\n this.selectedMonth === month &&\r\n this.selectedYear === year) ||\r\n (this.rangeStart &&\r\n this.rangeEnd &&\r\n date > this.rangeStart &&\r\n date < this.rangeEnd &&\r\n this.selectedMonth === month &&\r\n this.selectedYear === year)\r\n );\r\n }\r\n return false;\r\n }\r\n\r\n /**\r\n * @description Method to Generates time ranges\r\n * @author Shiva Kant\r\n */\r\n generateTimeRanges(): void {\r\n const startTime = new Date();\r\n startTime.setHours(0, 0, 0, 0);\r\n this.timeSlots = Array.from({ length: 48 }, (_, i) => {\r\n const time = new Date(startTime.getTime() + i * 30 * 60 * 1000);\r\n return { value: time, label: this.formatTime(time) };\r\n });\r\n }\r\n\r\n /**\r\n * @description Method to Formats time\r\n * @author Shiva Kant\r\n * @param date\r\n * @returns time\r\n */\r\n formatTime(date: Date): string {\r\n return date.toLocaleTimeString('en-US', {\r\n hour: '2-digit',\r\n minute: '2-digit',\r\n hour12: true,\r\n });\r\n }\r\n /**\r\n * @description Method to Formats date time\r\n * @author Shiva Kant\r\n * @param fullDate\r\n * @param selectedTime\r\n * @returns date time\r\n */\r\n formatDateTime(fullDate: Date, selectedTime: string | null): string {\r\n const date = new Date(fullDate);\r\n\r\n if (!selectedTime) {\r\n // Only date formatting when time not required\r\n return this.datePipe.transform(date, 'yyyy/MM/dd')!;\r\n }\r\n\r\n const [time, period] = selectedTime.split(' ');\r\n let [hours, minutes] = time.split(':').map(Number);\r\n\r\n // Convert 12-hour → 24-hour\r\n if (period === 'PM' && hours !== 12) hours += 12;\r\n if (period === 'AM' && hours === 12) hours = 0;\r\n\r\n date.setHours(hours, minutes, 0, 0);\r\n\r\n return this.datePipe.transform(date, 'yyyy/MM/dd hh:mm a')!;\r\n }\r\n\r\n /**\r\n * @description Method to Emits date time\r\n * @author Shiva Kant\r\n * @returns date time\r\n */\r\n emitDateTime(): void {\r\n if (this.dateConfig.enableTime && !this.selectedTime) {\r\n return; // wait until user selects time\r\n }\r\n if (this.dateConfig.selectionMode === 'single') {\r\n if (!this.selectedDate) return;\r\n\r\n const fullDate = new Date(\r\n this.currentYear,\r\n this.currentMonth,\r\n this.selectedDate,\r\n );\r\n\r\n this.selectedDateTime = this.formatDateTime(\r\n fullDate || '',\r\n this.dateConfig.enableTime ? this.selectedTime : null,\r\n );\r\n\r\n this.writeValue(this.selectedDateTime);\r\n this.date = this.selectedDate;\r\n this.dateTimeSelected.emit(this.selectedDateTime);\r\n\r\n return;\r\n }\r\n if (this.dateConfig.selectionMode === 'range') {\r\n if (!this.rangeStart || !this.rangeEnd) return;\r\n\r\n const startDate = new Date(\r\n this.currentYear,\r\n this.currentMonth,\r\n this.rangeStart,\r\n );\r\n const endDate = new Date(\r\n this.currentYear,\r\n this.currentMonth,\r\n this.rangeEnd,\r\n );\r\n\r\n const startDateTime = this.formatDateTime(\r\n startDate,\r\n this.dateConfig.enableTime ? this.selectedTime : null,\r\n );\r\n const endDateTime = this.formatDateTime(\r\n endDate,\r\n this.dateConfig.enableTime ? this.selectedTime : null,\r\n );\r\n\r\n const rangeResult = { start: startDateTime, end: endDateTime };\r\n\r\n this.writeValue(rangeResult);\r\n this.dateTimeSelected.emit(rangeResult);\r\n }\r\n }\r\n}\r\n","<!-- Calendar -->\r\n\r\n<div\r\n class=\"calendar_wrapper\"\r\n catsOutsideClick\r\n (clickOutSide)=\"closeCalendar()\"\r\n [ngClass]=\"{ 'pe-none': disableControl }\"\r\n>\r\n <div class=\"date_box\" (click)=\"toggleCalendar()\">\r\n @if (dateConfig.selectionMode=='single') {\r\n\r\n <input\r\n type=\"text\"\r\n placeholder=\"Select Date\"\r\n [value]=\"selectedDateTime\"\r\n readonly\r\n [disabled]=\"disableControl\"\r\n />\r\n } @else {\r\n <input\r\n type=\"text\"\r\n placeholder=\"Select date Range\"\r\n [value]=\"\r\n selectedDateTime.start\r\n | date\r\n : 'MM/dd/yyyy' +\r\n ' - ' +\r\n (selectedDateTime.end | date : 'MM/dd/yyyy')\r\n \"\r\n readonly\r\n />\r\n }\r\n <!-- <i-feather name=\"calendar\" class=\"calendar_icon\"></i-feather> -->\r\n <img src=\"images/calendar.svg\" alt=\"\" />\r\n </div>\r\n @if (isOpen) {\r\n <div class=\"calendar-popup\">\r\n <!-- for the header -->\r\n <div class=\"calendar-header\">\r\n <span class=\"navigation-button\" (click)=\"previousMonth()\">\r\n <img src=\"images/chevron-left.svg\" alt=\"\" />\r\n <!-- <i-feather name=\"chevron-left\"></i-feather -->\r\n </span>\r\n <div class=\"month-year\">\r\n <span class=\"month\" (click)=\"calendarView = 'monthView'\">\r\n {{ getMonthYear().month }}</span\r\n >\r\n <span class=\"year\" (click)=\"calendarView = 'yearView'\">{{\r\n getMonthYear().year\r\n }}</span>\r\n </div>\r\n\r\n <span class=\"navigation-button\" (click)=\"nextMonth()\">\r\n <img src=\"images/chevron-right.svg\" alt=\"\" />\r\n\r\n <!-- <i-feather name=\"chevron-right\"></i-feather -->\r\n </span>\r\n </div>\r\n @if(calendarView === \"monthView\"){\r\n <div class=\"month-grid\">\r\n @for(month of monthRange | keyvalue; track $index){\r\n <span\r\n class=\"month\"\r\n (click)=\"selectMonth(month.key)\"\r\n [ngClass]=\"{ selected: month.key == currentDate.getMonth() }\"\r\n >{{ month.value }}</span\r\n >\r\n }\r\n </div>\r\n } @else if(calendarView === 'yearView'){\r\n <div class=\"year-selector\">\r\n <span class=\"navigation-button pointer\" (click)=\"previousYearRange()\">\r\n <img src=\"images/chevron-left.svg\" alt=\"\" />\r\n </span>\r\n <div class=\"year-grid\">\r\n @for(year of yearRange;track $index){\r\n <span\r\n class=\"year\"\r\n (click)=\"selectYear(year)\"\r\n [ngClass]=\"{ selected: year == currentDate.getFullYear() }\"\r\n >{{ year }}</span\r\n >\r\n }\r\n </div>\r\n <span class=\"navigation-button pointer\" (click)=\"nextYearRange()\">\r\n <img src=\"images/chevron-right.svg\" alt=\"\" />\r\n </span>\r\n </div>\r\n } @else {\r\n <div class=\"calendar_body\">\r\n <div class=\"calendar-grid\">\r\n <!-- Day names -->\r\n @for (day of ['Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa', 'Su']; track $index) {\r\n\r\n <div class=\"days_name\">\r\n {{ day }}\r\n </div>\r\n }\r\n\r\n <!-- Calendar dates -->\r\n @for (dayObj of daysInMonth; track $index) {\r\n <div\r\n class=\"calendar-day\"\r\n [ngClass]=\"{\r\n active:\r\n dayObj.isCurrentMonth &&\r\n dateConfig.selectionMode === 'single' &&\r\n isSelectedDate(\r\n dayObj.day,\r\n dayObj.date.getMonth(),\r\n dayObj.date.getFullYear()\r\n ),\r\n\r\n active_start:\r\n dayObj.isCurrentMonth &&\r\n dateConfig.selectionMode === 'range' &&\r\n isSelectedDate(\r\n dayObj.day,\r\n dayObj.date.getMonth(),\r\n dayObj.date.getFullYear()\r\n ) &&\r\n dayObj.day === rangeStart,\r\n\r\n active_end:\r\n dayObj.isCurrentMonth &&\r\n dateConfig.selectionMode === 'range' &&\r\n isSelectedDate(\r\n dayObj.day,\r\n dayObj.date.getMonth(),\r\n dayObj.date.getFullYear()\r\n ) &&\r\n dayObj.day === rangeEnd,\r\n\r\n range_between_active:\r\n dayObj.isCurrentMonth &&\r\n dateConfig.selectionMode === 'range' &&\r\n isSelectedDate(\r\n dayObj.day,\r\n dayObj.date.getMonth(),\r\n dayObj.date.getFullYear()\r\n ) &&\r\n rangeStart != null && rangeEnd != null &&\r\n dayObj.day > rangeStart &&\r\n dayObj.day < rangeEnd,\r\n\r\n other_month: !dayObj.isCurrentMonth,\r\n disabled: isDayDisabled(dayObj.day),\r\n notInCurrentMonth: !dayObj.isCurrentMonth\r\n }\"\r\n (click)=\"\r\n dayObj.isCurrentMonth &&\r\n !isDayDisabled(dayObj.day) &&\r\n selectDate(dayObj.day)\r\n \"\r\n >\r\n {{ dayObj.day }}\r\n </div>\r\n }\r\n </div>\r\n\r\n <!-- TIME SLOTS (only if showTime = true) -->\r\n @if (dateConfig.enableTime) {\r\n <div class=\"times\">\r\n @for (timeSlot of timeSlots; track $index) {\r\n <span\r\n class=\"span_time\"\r\n [ngClass]=\"{ active: selectedTime === timeSlot.label }\"\r\n (click)=\"selectTime(timeSlot.label)\"\r\n >\r\n {{ timeSlot.label }}\r\n </span>\r\n }\r\n </div>\r\n }\r\n </div>\r\n }\r\n </div>\r\n }\r\n</div>\r\n","import {\r\n Directive,\r\n ElementRef,\r\n HostListener,\r\n Input,\r\n Renderer2,\r\n OnDestroy,\r\n OnInit,\r\n} from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[catsUiTooltip]',\r\n})\r\nexport class CatsUiTooltipDirective implements OnInit, OnDestroy {\r\n @Input('catsUiTooltip') tooltipText = '';\r\n @Input() tooltipClass?: string = '';\r\n\r\n private tooltipEl!: HTMLElement;\r\n\r\n constructor(private el: ElementRef, private renderer: Renderer2) {}\r\n\r\n ngOnInit(): void {\r\n this.showTooltip();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.removeTooltip();\r\n }\r\n\r\n @HostListener('mouseenter')\r\n showTooltip() {\r\n this.createTooltip();\r\n this.positionTooltip();\r\n }\r\n\r\n @HostListener('mouseleave')\r\n hideTooltip() {\r\n this.removeTooltip();\r\n }\r\n\r\n @HostListener('window:resize')\r\n @HostListener('window:scroll')\r\n adjustOnWindowChange() {\r\n if (this.tooltipEl) this.positionTooltip();\r\n }\r\n\r\n /**\r\n * @description Creates tooltip\r\n * @author Shiva Kant\r\n * @returns\r\n */\r\n private createTooltip() {\r\n if (this.tooltipEl) return;\r\n\r\n this.tooltipEl = this.renderer.createElement('div');\r\n this.tooltipEl.innerText = this.tooltipText;\r\n\r\n this.renderer.setStyle(this.tooltipEl, 'position', 'fixed');\r\n // this.renderer.setStyle(this.tooltipEl, 'padding', '6px 10px');\r\n // this.renderer.setStyle(this.tooltipEl, 'background', '#ffffff');\r\n // this.renderer.setStyle(this.tooltipEl, 'color', '#434a51');\r\n // this.renderer.setStyle(this.tooltipEl, 'borderRadius', '4px');\r\n // this.renderer.setStyle(this.tooltipEl, 'zIndex', '9999');\r\n // this.renderer.setStyle(this.tooltipEl, 'whiteSpace', 'nowrap');\r\n // Add a custom class if provided\r\n if (this.tooltipClass) {\r\n this.renderer.addClass(this.tooltipEl, this.tooltipClass);\r\n } else {\r\n // Optionally, you can add a default class here\r\n this.renderer.addClass(this.tooltipEl, 'default-tooltip-class');\r\n }\r\n\r\n document.body.appendChild(this.tooltipEl);\r\n }\r\n\r\n /**\r\n * @description Removes tooltip\r\n * @author Shiva Kant\r\n */\r\n private removeTooltip() {\r\n if (this.tooltipEl) {\r\n this.tooltipEl.remove();\r\n this.tooltipEl = null as any;\r\n }\r\n }\r\n\r\n /**\r\n * @description Positions tooltip\r\n * @author Shiva Kant\r\n */\r\n private positionTooltip() {\r\n const hostRect = this.el.nativeElement.getBoundingClientRect();\r\n const tooltipRect = this.tooltipEl.getBoundingClientRect();\r\n\r\n const spacing = 8; // distance from host element\r\n\r\n const fitsAbove = hostRect.top >= tooltipRect.height + spacing;\r\n const fitsBelow =\r\n window.innerHeight - hostRect.bottom >= tooltipRect.height + spacing;\r\n const fitsLeft = hostRect.left >= tooltipRect.width + spacing;\r\n const fitsRight =\r\n window.innerWidth - hostRect.right >= tooltipRect.width + spacing;\r\n\r\n let top = 0;\r\n let left = 0;\r\n\r\n // Priority: bottom → top → right → left\r\n if (fitsBelow) {\r\n top = hostRect.bottom + spacing;\r\n left = hostRect.left + (hostRect.width - tooltipRect.width) / 2;\r\n } else if (fitsAbove) {\r\n top = hostRect.top - tooltipRect.height - spacing;\r\n left = hostRect.left + (hostRect.width - tooltipRect.width) / 2;\r\n } else if (fitsRight) {\r\n top = hostRect.top + (hostRect.height - tooltipRect.height) / 2;\r\n left = hostRect.right + spacing;\r\n } else if (fitsLeft) {\r\n top = hostRect.top + (hostRect.height - tooltipRect.height) / 2;\r\n left = hostRect.left - tooltipRect.width - spacing;\r\n } else {\r\n // fallback → bottom with clamped position\r\n top = hostRect.bottom + spacing;\r\n left = Math.min(\r\n Math.max(10, hostRect.left),\r\n window.innerWidth - tooltipRect.width - 10\r\n );\r\n }\r\n\r\n this.renderer.setStyle(this.tooltipEl, 'top', `${top}px`);\r\n this.renderer.setStyle(this.tooltipEl, 'left', `${left}px`);\r\n }\r\n}\r\n","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'cats-ui-accordion',\r\n imports: [],\r\n templateUrl: './accordion.component.html',\r\n styleUrl: './accordion.component.scss',\r\n})\r\nexport class AccordionComponent {\r\n openedIndex: number | null = null;\r\n\r\n /**\r\n * @description Toggles accordion component\r\n * @author Shiva Kant\r\n * @param index \r\n */\r\n toggle(index: number): void {\r\n this.openedIndex = this.openedIndex === index ? null : index;\r\n }\r\n\r\n /**\r\n * @description Determines whether open is\r\n * @author Shiva Kant\r\n * @param index \r\n * @returns true if open \r\n */\r\n isOpen(index: number): boolean {\r\n return this.openedIndex === index;\r\n }\r\n}\r\n","<div class=\"accordion\">\r\n <ng-content></ng-content> <!-- Will contain AccordionItem components -->\r\n</div>\r\n","import {\r\n Component,\r\n ContentChild,\r\n Inject,\r\n Input,\r\n TemplateRef,\r\n} from '@angular/core';\r\nimport { AccordionComponent } from '../accordion.component';\r\nimport { CommonModule } from '@angular/common';\r\n\r\n@Component({\r\n selector: 'cats-ui-accordion-item',\r\n imports: [CommonModule],\r\n templateUrl: './accordion-item.component.html',\r\n styleUrl: './accordion-item.component.scss',\r\n})\r\nexport class AccordionItemComponent {\r\n @Input() title: string = '';\r\n @Input() index: number = 0;\r\n\r\n // Change this to allow null instead of undefined\r\n @ContentChild(TemplateRef) contentTemplate: TemplateRef<any> | null = null;\r\n\r\n constructor(\r\n @Inject(AccordionComponent) private accordion: AccordionComponent\r\n ) {}\r\n\r\n /**\r\n * @description Determines whether open is\r\n * @author Shiva Kant\r\n * @returns true if open\r\n */\r\n isOpen(): boolean {\r\n return this.accordion.isOpen(this.index);\r\n }\r\n\r\n /**\r\n * @description Toggles accordion item component\r\n * @author Shiva Kant\r\n */\r\n toggle(): void {\r\n this.accordion.toggle(this.index);\r\n }\r\n\r\n /**\r\n * @description perform any initialization after content is injected\r\n * @author Shiva Kant\r\n */\r\n ngAfterContentInit(): void {\r\n if (!this.contentTemplate) {\r\n console.error(\r\n 'No content template provided for accordion item:',\r\n this.title\r\n );\r\n }\r\n }\r\n}\r\n","<div class=\"accordion-item\">\r\n <div class=\"accordion-header\" (click)=\"toggle()\">\r\n <h3>{{ title }}</h3>\r\n <img\r\n [src]=\"isOpen() ? 'images/chevron-up.svg' : 'images/chevron-down.svg'\"\r\n alt=\"\"\r\n />\r\n </div>\r\n\r\n <div class=\"accordion-body\" [class.open]=\"isOpen()\">\r\n <ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container>\r\n </div>\r\n</div>\r\n","import { Directive, TemplateRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[tabContent]',\r\n standalone: true,\r\n})\r\nexport class TabContentDirective {\r\n constructor(public template: TemplateRef<any>) {}\r\n}\r\n","import { Directive, TemplateRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[tabHeading]',\r\n standalone: true\r\n})\r\nexport class TabHeadingDirective {\r\n constructor(public template: TemplateRef<any>) {}\r\n}\r\n","import { Component, ContentChild } from '@angular/core';\r\nimport { TabContentDirective } from '../../tab-content.directive';\r\nimport { TabHeadingDirective } from '../../tab-heading.directive';\r\n\r\n@Component({\r\n selector: 'cats-ui-tab-item',\r\n imports: [],\r\n templateUrl: './tab-item.component.html',\r\n styleUrl: './tab-item.component.scss',\r\n})\r\nexport class TabItemComponent {\r\n @ContentChild(TabHeadingDirective) heading!: TabHeadingDirective;\r\n @ContentChild(TabContentDirective) content!: TabContentDirective;\r\n}\r\n","<p>tab-item works!</p>\r\n","import {\r\n Component,\r\n Input,\r\n Output,\r\n EventEmitter,\r\n ContentChildren,\r\n QueryList,\r\n} from '@angular/core';\r\nimport { TabItemComponent } from './tab-item/tab-item.component';\r\nimport { CommonModule } from '@angular/common';\r\n\r\n@Component({\r\n selector: 'cats-ui-tab',\r\n templateUrl: './tab.component.html',\r\n styleUrls: ['./tab.component.scss'],\r\n imports: [CommonModule],\r\n})\r\nexport class TabComponent {\r\n @Input() activeTab = 0;\r\n @Input() disabledTabs: number[] = [];\r\n\r\n @Output() selectTab: EventEmitter<number> = new EventEmitter<number>();\r\n\r\n @ContentChildren(TabItemComponent) items!: QueryList<TabItemComponent>;\r\n\r\n /**\r\n * @description Sets active\r\n * @author Shiva Kant\r\n * @param index \r\n */\r\n setActive(index: number) {\r\n if (!this.disabledTabs.includes(index)) {\r\n this.activeTab = index;\r\n this.selectTab.emit(index); \r\n }\r\n }\r\n}\r\n","<ul class=\"tab-header\">\r\n @for (item of items; track $index) {\r\n <ng-container>\r\n <li\r\n class=\"tab-item\"\r\n [class.active]=\"activeTab === $index\"\r\n [class.disabled]=\"disabledTabs.includes($index)\"\r\n (click)=\"setActive($index)\"\r\n >\r\n <ng-container *ngTemplateOutlet=\"item.heading.template\"></ng-container>\r\n </li>\r\n </ng-container>\r\n\r\n }\r\n</ul>\r\n\r\n<div class=\"tab-content\">\r\n @for (item of items; track $index) {\r\n <ng-container>\r\n @if (activeTab === $index) {\r\n <ng-container *ngTemplateOutlet=\"item.content.template\"></ng-container>\r\n }\r\n </ng-container>\r\n }\r\n</div>\r\n","/*\r\n * Public API Surface of cats-ui\r\n */\r\n\r\nexport * from './lib/services/cats-ui.service';\r\nexport * from './lib/components/input';\r\nexport * from './lib/components/single-select';\r\nexport * from './lib/components/multi-select';\r\nexport * from './lib/components/search-box';\r\nexport * from './lib/components/auto-complete-single-select';\r\nexport * from './lib/directives/outside-click.directive'\r\nexport * from './lib/components/auto-complete-multi-select';\r\nexport * from './lib/modal/cats-ui.modal';\r\nexport * from './lib/components/toogle-button';\r\nexport * from './lib/components/checkbox-button';\r\nexport * from './lib/components/radio-button';\r\nexport * from './lib/components/date-time-picker';\r\nexport * from './lib/directives/cats-ui-tooltip.directive';\r\nexport * from './lib/components/accordion';\r\nexport * from './lib/components/tabs';\r\n\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","noop"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cats-ui-lib.mjs","sources":["../../../projects/cats-ui/src/lib/services/cats-ui.service.ts","../../../projects/cats-ui/src/lib/components/input/input.component.ts","../../../projects/cats-ui/src/lib/components/input/input.component.html","../../../projects/cats-ui/src/lib/modal/cats-ui.modal.ts","../../../projects/cats-ui/src/lib/components/single-select/single-select.component.ts","../../../projects/cats-ui/src/lib/components/single-select/single-select.component.html","../../../projects/cats-ui/src/lib/components/multi-select/multi-select.component.ts","../../../projects/cats-ui/src/lib/components/multi-select/multi-select.component.html","../../../projects/cats-ui/src/lib/components/search-box/search-box.component.ts","../../../projects/cats-ui/src/lib/components/search-box/search-box.component.html","../../../projects/cats-ui/src/lib/directives/outside-click.directive.ts","../../../projects/cats-ui/src/lib/components/auto-complete-single-select/auto-complete-single-select.component.ts","../../../projects/cats-ui/src/lib/components/auto-complete-single-select/auto-complete-single-select.component.html","../../../projects/cats-ui/src/lib/components/auto-complete-multi-select/auto-complete-multi-select.component.ts","../../../projects/cats-ui/src/lib/components/auto-complete-multi-select/auto-complete-multi-select.component.html","../../../projects/cats-ui/src/lib/components/toogle-button/toogle-button.component.ts","../../../projects/cats-ui/src/lib/components/toogle-button/toogle-button.component.html","../../../projects/cats-ui/src/lib/components/checkbox-button/checkbox-button.component.ts","../../../projects/cats-ui/src/lib/components/checkbox-button/checkbox-button.component.html","../../../projects/cats-ui/src/lib/components/radio-button/radio-button.component.ts","../../../projects/cats-ui/src/lib/components/radio-button/radio-button.component.html","../../../projects/cats-ui/src/lib/components/date-time-picker/date-time-picker.component.ts","../../../projects/cats-ui/src/lib/components/date-time-picker/date-time-picker.component.html","../../../projects/cats-ui/src/lib/directives/cats-ui-tooltip.directive.ts","../../../projects/cats-ui/src/lib/components/accordion/accordion.component.ts","../../../projects/cats-ui/src/lib/components/accordion/accordion.component.html","../../../projects/cats-ui/src/lib/components/accordion/accordion-item/accordion-item.component.ts","../../../projects/cats-ui/src/lib/components/accordion/accordion-item/accordion-item.component.html","../../../projects/cats-ui/src/lib/components/tabs/tab-content.directive.ts","../../../projects/cats-ui/src/lib/components/tabs/tab-heading.directive.ts","../../../projects/cats-ui/src/lib/components/tabs/tab/tab-item/tab-item.component.ts","../../../projects/cats-ui/src/lib/components/tabs/tab/tab-item/tab-item.component.html","../../../projects/cats-ui/src/lib/components/tabs/tab/tab.component.ts","../../../projects/cats-ui/src/lib/components/tabs/tab/tab.component.html","../../../projects/cats-ui/src/public-api.ts","../../../projects/cats-ui/src/cats-ui-lib.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CatsUiService {\r\n\r\n constructor() { }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport {\r\n Component,\r\n EventEmitter,\r\n forwardRef,\r\n Input,\r\n Output,\r\n} from '@angular/core';\r\nimport {\r\n ControlValueAccessor,\r\n FormsModule,\r\n NG_VALUE_ACCESSOR,\r\n FormControl,\r\n NG_VALIDATORS,\r\n Validator,\r\n Validators,\r\n} from '@angular/forms';\r\nimport { InputConfig } from '../../modal/cats-ui.modal';\r\n\r\n@Component({\r\n selector: 'cats-ui-input',\r\n standalone: true,\r\n imports: [CommonModule, FormsModule],\r\n templateUrl: './input.component.html',\r\n styleUrls: ['./input.component.scss'],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => InputComponent),\r\n multi: true,\r\n },\r\n {\r\n provide: NG_VALIDATORS,\r\n useExisting: forwardRef(() => InputComponent),\r\n multi: true,\r\n },\r\n ],\r\n host: { tabindex: '0' },\r\n})\r\nexport class InputComponent implements ControlValueAccessor, Validator {\r\n @Input() inputConfig!: InputConfig;\r\n @Output() onKeyDown = new EventEmitter<{ value: string } & KeyboardEvent>();\r\n @Output() onKeyUp = new EventEmitter<{ value: string } & KeyboardEvent>();\r\n\r\n value: string = '';\r\n disabled = false;\r\n touched = false;\r\n control: FormControl | null = null;\r\n showPassword = false;\r\n private onChange = (value: any) => {};\r\n private onTouched = () => {};\r\n\r\n /**\r\n * @description Method to when value changes\r\n * @author Shiva Kant\r\n */\r\n handleInput(event: Event) {\r\n const target = event.target as HTMLInputElement;\r\n this.value = target.value;\r\n this.onChange(this.value);\r\n\r\n if (this.control) {\r\n this.control.markAsDirty();\r\n this.control.updateValueAndValidity();\r\n }\r\n }\r\n /**\r\n * @description Method to Handle key down event\r\n * @author Shiva Kant\r\n */\r\n handleKeyDown(event: KeyboardEvent) {\r\n this.onKeyDown.emit({ value: this.value, ...event });\r\n }\r\n\r\n /**\r\n * @description Method to handle key up event\r\n * @author Shiva Kant\r\n */\r\n handleKeyUp(event: KeyboardEvent) {\r\n this.onKeyUp.emit({ value: this.value, ...event });\r\n }\r\n\r\n /**\r\n * @description Method to Handle blur (touched\r\n * @author Shiva Kant\r\n */\r\n\r\n handleBlur(event: FocusEvent): void {\r\n this.touched = true;\r\n this.onTouched();\r\n const control = (event.target as any)?.control;\r\n control?.markAsTouched?.();\r\n }\r\n /**\r\n * @description Method to ControlValueAccessor methods\r\n * @author Shiva Kant\r\n */\r\n\r\n writeValue(value: any): void {\r\n this.value = value ?? '';\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n this.disabled = isDisabled;\r\n }\r\n\r\n /**\r\n * @description Method to Validator interface\r\n * @author Shiva Kant\r\n */\r\n\r\n validate(control: FormControl): any {\r\n this.control = control;\r\n if (this.inputConfig?.type === 'email') {\r\n return Validators.email(control);\r\n }\r\n return null;\r\n }\r\n /**\r\n * @description method to use show password\r\n * @author Shiva Kant\r\n */\r\n togglePassword() {\r\n this.showPassword = !this.showPassword;\r\n }\r\n}\r\n","<div class=\"input_container\">\r\n @if (inputConfig.label) {\r\n <label>{{ inputConfig.label }}</label>\r\n }\r\n <div class=\"custom-input\">\r\n <input\r\n class=\"input-box\"\r\n [type]=\"showPassword ? 'text' : inputConfig.type\"\r\n [placeholder]=\"inputConfig.placeholder\"\r\n [disabled]=\"disabled\"\r\n [(ngModel)]=\"value\"\r\n (input)=\"handleInput($event)\"\r\n (blur)=\"handleBlur($event)\"\r\n (keydown)=\"handleKeyDown($event)\"\r\n (keyup)=\"handleKeyUp($event)\"\r\n />\r\n <!-- Eye Icon Only When Type Is Password -->\r\n @if (inputConfig.type === 'password') {\r\n <span class=\"eye_icon\" (click)=\"togglePassword()\">\r\n <img\r\n [src]=\"showPassword ? 'images/eye.svg' : 'images/eye-off.svg'\"\r\n alt=\"toggle password visibility\"\r\n />\r\n </span>\r\n }\r\n </div>\r\n</div>\r\n","export class SingleSelectConfig {\r\n idField: string = 'id';\r\n textField: string = 'name';\r\n disabledField?: string = '';\r\n placeholder?: string = 'Select Option';\r\n prefixLabel?: string = '';\r\n enableSearch?: boolean = false;\r\n required?: boolean = false;\r\n}\r\n\r\nexport class MultiSelectConfig {\r\n idField: string = 'id';\r\n textField: string = 'name';\r\n disabledField?: string = '';\r\n placeholder?: string = 'Select Option';\r\n prefixLabel?: string = '';\r\n enableSearch?: boolean = false;\r\n chipLimit: number = 2;\r\n selectAll?: boolean = true;\r\n required?: boolean = false;\r\n}\r\n\r\nexport class SearchConfig {\r\n serachValue: string = '';\r\n placeholder?: string = 'Search';\r\n}\r\n\r\nexport class InputConfig {\r\n type: 'text' | 'email' | 'password' | 'number' = 'text';\r\n placeholder?: string = '';\r\n label?: string = '';\r\n}\r\n\r\nexport class AutoCompleteSingleSelectConfig {\r\n idField: string = 'id';\r\n textField: string = 'name';\r\n disabledField?: string = '';\r\n placeholder?: string = 'Enter or Select';\r\n required?: boolean = false;\r\n customInput: boolean = false;\r\n}\r\nexport class AutoCompleteMultiSelectConfig {\r\n idField: string = 'id';\r\n textField: string = 'name';\r\n disabledField?: string = '';\r\n selectAll?: boolean = true;\r\n placeholder?: string = 'Enter or Select';\r\n required?: boolean = false;\r\n chipLimit: number = 2;\r\n customInput: boolean = false;\r\n pattern?: string = '';\r\n}\r\nexport class ToggleConfig {\r\n checked: boolean = false;\r\n disabled?: boolean = false;\r\n}\r\nexport class CheckBoxSubtask {\r\n idField: string = '';\r\n textField: string = '';\r\n checked?: boolean = false;\r\n}\r\n\r\nexport class CheckBoxConfig {\r\n idField: string = '';\r\n textField: string = '';\r\n disabledField?: string = '';\r\n name: string = '';\r\n checked?: boolean = false;\r\n subtasks?: CheckBoxSubtask[];\r\n}\r\nexport interface RadioButtonConfig {\r\n label?: string;\r\n disabled?: string;\r\n valueField?: string;\r\n textField?: string;\r\n name: string;\r\n layout?: 'horizontal' | 'vertical';\r\n}\r\n\r\nexport interface DateConfig {\r\n selectionMode: 'single' | 'range';\r\n enableTime?: boolean;\r\n}\r\n","\r\nimport { CommonModule } from '@angular/common';\r\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChild, ElementRef, EventEmitter, forwardRef, HostListener, Input, OnChanges, OnInit, Output, SimpleChanges, TemplateRef } from '@angular/core';\r\nimport {\r\n ControlValueAccessor,\r\n FormControl,\r\n FormsModule,\r\n NG_VALIDATORS,\r\n NG_VALUE_ACCESSOR,\r\n} from '@angular/forms';\r\nimport { SingleSelectConfig } from '../../modal/cats-ui.modal';\r\n\r\nconst noop = () => {};\r\nexport const SINGLE_SELECT_CONTROL_VALUE_ACCESSOR: any = {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => SingleSelectComponent),\r\n multi: true,\r\n};\r\nexport const SINGLE_SELECT_CONTROL_VALUE_VALIDATOR: any = {\r\n provide: NG_VALIDATORS,\r\n useExisting: forwardRef(() => SingleSelectComponent),\r\n multi: true,\r\n};\r\n@Component({\r\n selector: 'cats-ui-single-select',\r\n imports: [CommonModule, FormsModule],\r\n templateUrl: './single-select.component.html',\r\n styleUrl: './single-select.component.scss',\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: SingleSelectComponent,\r\n multi: true,\r\n },\r\n SINGLE_SELECT_CONTROL_VALUE_VALIDATOR,\r\n ],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: { tabindex: '0' },\r\n})\r\nexport class SingleSelectComponent\r\n implements OnInit, OnChanges, ControlValueAccessor\r\n{\r\n @Input() optionList: any[] = [];\r\n @Input() singleSelectConfig: SingleSelectConfig=new SingleSelectConfig();\r\n @Input() selectedOption: any;\r\n @Output() onSelection = new EventEmitter();\r\n \r\n showDropdown = false;\r\n searchText: string = '';\r\n inValid: boolean = false;\r\n control!: FormControl<any> | null;\r\n disableControl: boolean = false;\r\n @Output() onScroll: any = new EventEmitter();\r\n @Input() parentNativeElement: any;\r\n\r\n @ContentChild('selectedData') selectedData!: TemplateRef<any>;\r\n\r\n constructor(private cd: ChangeDetectorRef, private el: ElementRef) {}\r\n\r\n // These lifecycle hooks will be in use for further implementation\r\n ngOnInit(): void {}\r\n ngOnChanges(_changes: SimpleChanges): void {\r\n if (!_changes['optionList']?.currentValue) {\r\n this.optionList = [];\r\n } else {\r\n if (this.optionList.length > 10) this.singleSelectConfig.enableSearch = true;\r\n this.writeValue(this.control?.value);\r\n }\r\n }\r\n\r\n /**\r\n * @description Method to toggle dropdown list\r\n * @author Shiva Kant\r\n */\r\n toggleDropdown(): void {\r\n this.showDropdown = !this.showDropdown;\r\n if (this.parentNativeElement) {\r\n this.parentNativeElement.scrollIntoView({\r\n behavior: 'smooth',\r\n block: 'center',\r\n });\r\n let parentDiv = document.getElementById(this.parentNativeElement);\r\n setTimeout(() => {\r\n let parentBoundary = parentDiv?.getBoundingClientRect() || ({} as any);\r\n let dropdonwList: any = document.getElementById('container_scroll');\r\n let elBoundary = dropdonwList?.getBoundingClientRect() || {};\r\n if (parentBoundary?.['bottom'] < elBoundary?.['bottom']) {\r\n dropdonwList.style['transform'] = `translate(0px,-${\r\n elBoundary?.['height'] + 54\r\n }px`;\r\n }\r\n }, 20);\r\n }\r\n }\r\n\r\n /**\r\n * @description Method to check if provide arg is an object or not\r\n * @author Shiva Kant\r\n * @param Obj:any\r\n * @returns boolean\r\n */\r\n isObjEmpty(obj: any): boolean {\r\n if (typeof obj == 'string' || typeof obj == 'number') return true;\r\n return !(obj && Object.keys(obj).length > 0);\r\n }\r\n\r\n /**\r\n * @description Method is to update selected option and then\r\n * update formcontrol by call onChangeCallback.\r\n * @author Shiva Kant\r\n * @param item\r\n * @returns void\r\n */\r\n updateSelectedOption(item: any): void {\r\n this.selectedOption = item;\r\n this.toggleDropdown();\r\n this.inValid = false;\r\n this.onChangeCallback(item);\r\n this.onTouchedCallback();\r\n this.onSelection.emit(item);\r\n }\r\n\r\n validate(control: FormControl): void {\r\n this.control = control;\r\n }\r\n\r\n // Below Methods are used to register form API methods in these variable to use them later\r\n private onTouchedCallback: () => void = noop;\r\n private onChangeCallback: (_: any) => void = noop;\r\n\r\n // Below are the CVA interface methods to make this component able to bind with formcontrol in parent component\r\n\r\n /**\r\n * @description method to update value of selectedOption\r\n * @author Shiva Kant\r\n * @param obj this is provided by formcontrol\r\n * @returns void\r\n */\r\n writeValue(obj: any): void {\r\n this.selectedOption = '';\r\n\r\n if (this.optionList.length && obj) {\r\n if (typeof obj === 'string' || typeof obj === 'number') {\r\n if (\r\n typeof this.optionList?.[0] === 'string' ||\r\n typeof this.optionList?.[0] === 'number'\r\n ) {\r\n if (this.optionList.includes(obj)) {\r\n this.selectedOption = obj;\r\n }\r\n } else if (obj != '') {\r\n for (const option of this.optionList) {\r\n if (\r\n option[this.singleSelectConfig.idField] == obj ||\r\n option[this.singleSelectConfig.textField] == obj\r\n ) {\r\n this.selectedOption = option;\r\n break;\r\n }\r\n }\r\n }\r\n } else {\r\n if (\r\n obj?.hasOwnProperty(this.singleSelectConfig.idField) &&\r\n !this.isObjEmpty(this.optionList[0])\r\n ) {\r\n for (const option of this.optionList) {\r\n if (\r\n option[this.singleSelectConfig.idField] ==\r\n obj[this.singleSelectConfig.idField]\r\n ) {\r\n this.selectedOption = option;\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n setTimeout(() => {\r\n this.onChangeCallback(this.selectedOption);\r\n }, 0);\r\n this.cd.markForCheck();\r\n }\r\n }\r\n\r\n /**\r\n * @description method to register on change callback from form API\r\n * @author Shiva Kant\r\n * @param fn\r\n * @returns void\r\n */\r\n registerOnChange(fn: any): void {\r\n this.onChangeCallback = fn;\r\n }\r\n\r\n /**\r\n * @description method to register on touch callback from form API\r\n * @author Shiva Kant\r\n * @param fn\r\n * @returns void\r\n */\r\n registerOnTouched(fn: any): void {\r\n this.onTouchedCallback = fn;\r\n }\r\n\r\n //willbe used in further implementation\r\n setDisabledState(isDisabled: boolean): void {\r\n this.disableControl = isDisabled;\r\n }\r\n\r\n /**\r\n * @description method to update ontouchcallback on blur\r\n * @author Shiva Kant\r\n */\r\n @HostListener('blur')\r\n public onTouched() {\r\n this.onTouchedCallback();\r\n }\r\n\r\n /**\r\n * @description method to toggle dropdown on outside click\r\n * @author Shiva Kant\r\n */\r\n @HostListener('document:click', ['$event'])\r\n public closeDropdown(event: any) {\r\n if (!this.el.nativeElement.contains(event.target)) {\r\n if (this.showDropdown && this.singleSelectConfig.required) {\r\n this.inValid =\r\n this.selectedOption == '' ||\r\n JSON.stringify(this.selectedOption) == '{}';\r\n }\r\n if (this.showDropdown) this.onTouchedCallback();\r\n this.showDropdown = false;\r\n }\r\n }\r\n\r\n /**\r\n * @description method to load more list\r\n * @author Shiva Kant\r\n * @param event\r\n */\r\n onDivScroll(event: any): void {\r\n if (\r\n event.target.offsetHeight + event.target.scrollTop >=\r\n event.target.scrollHeight - 1 &&\r\n this.optionList.length\r\n ) {\r\n this.onScroll.emit();\r\n }\r\n }\r\n get filteredOptionsValue(): any[] {\r\n if (!this.searchText || this.searchText.trim() === '') {\r\n return this.optionList;\r\n }\r\n return this.optionList.filter((option) => {\r\n if (typeof option != 'object') {\r\n return option?.toLowerCase().includes(this.searchText.toLowerCase());\r\n } else {\r\n return option[this.singleSelectConfig.textField]\r\n ?.toLowerCase()\r\n .includes(this.searchText.toLowerCase());\r\n }\r\n });\r\n }\r\n}","<div class=\"main-wrapper\" id=\"main-wrapper-single-select\">\r\n <div\r\n class=\"single-select-dropdown\"\r\n (click)=\"toggleDropdown()\"\r\n [ngClass]=\"{\r\n 'border-danger':\r\n (control?.touched || control?.dirty) &&\r\n control?.invalid &&\r\n control?.errors,\r\n 'disable-control': disableControl\r\n }\"\r\n >\r\n <div class=\"left_details\">\r\n @if(singleSelectConfig.prefixLabel){\r\n <span class=\"predefine_label\">\r\n <p class=\"textTruncate\">{{ singleSelectConfig.prefixLabel }}</p>\r\n </span>\r\n } @if (!isObjEmpty(selectedOption) &&\r\n selectedOption[singleSelectConfig.textField]) {\r\n <ng-container\r\n [ngTemplateOutlet]=\"selectedData ? selectedData : defaultTemplate\"\r\n [ngTemplateOutletContext]=\"{ data: selectedOption }\"\r\n ></ng-container>\r\n\r\n <ng-template #defaultTemplate let-data=\"data\">\r\n <span class=\"textTruncate\">\r\n {{ selectedOption[singleSelectConfig.textField] }}\r\n </span>\r\n </ng-template>\r\n }@else if(selectedOption && isObjEmpty(selectedOption)){\r\n <ng-container\r\n [ngTemplateOutlet]=\"selectedData ? selectedData : defaultTemplate1\"\r\n [ngTemplateOutletContext]=\"{ data: selectedOption }\"\r\n ></ng-container>\r\n\r\n <ng-template #defaultTemplate1 let-data=\"data\">\r\n <span class=\"textTruncate\">\r\n {{ selectedOption }}\r\n </span>\r\n </ng-template>\r\n }@else{\r\n <span class=\"placeholderColor textTruncate\">{{\r\n singleSelectConfig.placeholder\r\n }}</span>\r\n\r\n }\r\n </div>\r\n <span class=\"arrow_icon\">\r\n <img\r\n src=\"images/chevron-up.svg\"\r\n alt=\"\"\r\n srcset=\"\"\r\n [ngClass]=\"{ 'd-none': !showDropdown }\"\r\n />\r\n <img\r\n src=\"images/chevron-down.svg\"\r\n alt=\"\"\r\n srcset=\"\"\r\n [ngClass]=\"{ 'd-none': showDropdown }\"\r\n />\r\n </span>\r\n </div>\r\n @if (showDropdown) {\r\n <div\r\n class=\"dropdown-list\"\r\n id=\"container_scroll\"\r\n (scroll)=\"onDivScroll($event)\"\r\n >\r\n @if (singleSelectConfig.enableSearch) {\r\n <div class=\"search_bar\">\r\n <div class=\"input_box\">\r\n <img src=\"images/search.svg\" class=\"search_icon\" alt=\"\" />\r\n <input\r\n type=\"text\"\r\n class=\"filter_search_box\"\r\n name=\"\"\r\n id=\"\"\r\n placeholder=\"Search here\"\r\n [(ngModel)]=\"searchText\"\r\n />\r\n <img\r\n src=\"images/x.svg\"\r\n class=\"cross_icon\"\r\n alt=\"\"\r\n (click)=\"searchText = ''\"\r\n />\r\n </div>\r\n </div>\r\n }\r\n <ul>\r\n @if(isObjEmpty(this.optionList[0] || \"\")){ @for (option of\r\n filteredOptionsValue; track $index) {\r\n <li\r\n (click)=\"updateSelectedOption(option)\"\r\n [ngClass]=\"{\r\n disabled_option:\r\n singleSelectConfig.disabledField &&\r\n option[singleSelectConfig.disabledField]\r\n }\"\r\n >\r\n <span class=\"textTruncate\">{{ option }}</span>\r\n </li>\r\n } @empty {\r\n <li class=\"no_data\">No Data Found.</li>\r\n } } @else { @for (option of filteredOptionsValue; track $index) {\r\n <li\r\n (click)=\"updateSelectedOption(option)\"\r\n [ngClass]=\"{\r\n disabled_option:\r\n singleSelectConfig.disabledField &&\r\n option[singleSelectConfig.disabledField]\r\n }\"\r\n >\r\n <span class=\"textTruncate\">{{\r\n option[singleSelectConfig.textField]\r\n }}</span>\r\n </li>\r\n } @empty {\r\n <li class=\"no_data\">No Data Found.</li>\r\n } }\r\n </ul>\r\n </div>\r\n }\r\n</div>\r\n","import { NgClass } from '@angular/common';\r\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, EventEmitter, forwardRef, HostListener, Input, OnChanges, OnInit, Output, SimpleChanges } from '@angular/core';\r\nimport { NG_VALUE_ACCESSOR, NG_VALIDATORS, ControlValueAccessor, FormControl, FormsModule } from '@angular/forms';\r\nimport { MultiSelectConfig } from '../../modal/cats-ui.modal';\r\nconst noop = () => {}\r\nexport const MULTI_SELECT_CONTROL_VALUE_ACCESSOR: any = {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => MultiSelectComponent),\r\n multi: true,\r\n};\r\nexport const MULTI_SELECT_CONTROL_VALUE_VALIDATOR: any = {\r\n provide: NG_VALIDATORS,\r\n useExisting: forwardRef(() => MultiSelectComponent),\r\n multi: true,\r\n};\r\n@Component({\r\n selector: 'cats-ui-multi-select',\r\n imports: [NgClass, FormsModule],\r\n templateUrl: './multi-select.component.html',\r\n styleUrl: './multi-select.component.scss',\r\n providers: [\r\n MULTI_SELECT_CONTROL_VALUE_ACCESSOR,\r\n MULTI_SELECT_CONTROL_VALUE_VALIDATOR,\r\n ],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: { tabindex: '0' },\r\n})\r\nexport class MultiSelectComponent\r\n implements OnChanges, OnInit, ControlValueAccessor\r\n{\r\n @Input() optionList: any[] = [];\r\n @Input() multiSelectConfig: MultiSelectConfig = new MultiSelectConfig();\r\n\r\n @Input() selectedOptions: any[] = [];\r\n\r\n @Output() onSelection = new EventEmitter();\r\n\r\n control!: FormControl<any>;\r\n\r\n showDropdown = false;\r\n isListArrayOfObject = false;\r\n isSelectedAll = false;\r\n inValid: boolean = false;\r\n searchText: string = '';\r\n disabledControl: boolean = false;\r\n\r\n constructor(private cd: ChangeDetectorRef, private el: ElementRef) {}\r\n\r\n // These lifecycle hooks will be in use for further implementation\r\n ngOnInit(): void {}\r\n ngOnChanges(_changes: SimpleChanges): void {\r\n if (\r\n _changes['optionList'].currentValue &&\r\n _changes['optionList'].currentValue.length > 0\r\n ) {\r\n if (\r\n typeof this.optionList[0] === 'string' ||\r\n typeof this.optionList[0] === 'number'\r\n ) {\r\n this.optionList = this.optionList.map((option: any) => {\r\n const item: any = {\r\n [this.multiSelectConfig.idField]: option,\r\n [this.multiSelectConfig.textField]: option,\r\n isSelected: false,\r\n };\r\n\r\n if (this.multiSelectConfig.disabledField) {\r\n item[this.multiSelectConfig.disabledField] = false;\r\n }\r\n\r\n return item;\r\n });\r\n } else {\r\n this.isListArrayOfObject = true;\r\n this.optionList = this.optionList.map((option: any) => {\r\n return {\r\n ...option,\r\n isSelected: false,\r\n };\r\n });\r\n }\r\n if (this.optionList.length > 10)\r\n this.multiSelectConfig.enableSearch = true;\r\n this.writeValue(this.control?.value);\r\n }\r\n }\r\n\r\n /**\r\n * @description Method to toggle dropdown list\r\n * @author Shiva Kant\r\n */\r\n toggleDropdown(): void {\r\n this.showDropdown = !this.showDropdown;\r\n }\r\n\r\n /**\r\n * @description Method to check if provide arg is an object or not\r\n * @author Shiva Kant\r\n * @param Obj:any\r\n * @returns boolean\r\n */\r\n isObjEmpty(obj: any): boolean {\r\n return !(obj && Object.keys(obj).length > 0);\r\n }\r\n\r\n /**\r\n * @description Method is to update selected option and then\r\n * update formcontrol by call onChangeCallback.\r\n * @author Shiva Kant\r\n * @param item\r\n * @returns void\r\n */\r\n updateSelectedOption(item: any): void {\r\n item.isSelected = !item.isSelected;\r\n if (!item.isSelected) {\r\n let ind = this.selectedOptions.findIndex(\r\n (option: any) =>\r\n item[this.multiSelectConfig.idField] ==\r\n option[this.multiSelectConfig.idField]\r\n );\r\n if (ind >= 0) this.selectedOptions.splice(ind, 1);\r\n } else {\r\n this.selectedOptions.push(item);\r\n }\r\n this.isSelectedAll = this.optionList.every(\r\n (option: any) => option.isSelected == true\r\n );\r\n\r\n this.inValid = false;\r\n this.onChangeCallback(this.selectedOptions);\r\n this.onTouchedCallback();\r\n this.onSelection.emit(this.selectedOptions);\r\n this.cd.markForCheck();\r\n }\r\n\r\n // Below Methods are used to register form API methods in these variable to use them later\r\n private onTouchedCallback: () => void = noop;\r\n private onChangeCallback: (_: any) => void = noop;\r\n\r\n validate(control: FormControl): void {\r\n this.control = control;\r\n }\r\n\r\n // Below are the CVA interface methods to make this component able to bind with formcontrol in parent component\r\n\r\n /**\r\n * @description method to update value of selectedOption\r\n * @author Shiva Kant\r\n * @param controlValue this is provided by formcontrol\r\n * @returns void\r\n */\r\n writeValue(controlValue: any[]): void {\r\n if (this.optionList.length) {\r\n this.selectedOptions = [];\r\n if (controlValue && controlValue.length > 0) {\r\n if (\r\n typeof controlValue[0] === 'string' ||\r\n typeof controlValue[0] === 'number'\r\n ) {\r\n controlValue = controlValue.map((option: string | number) => {\r\n return {\r\n [this.multiSelectConfig.idField]: option,\r\n [this.multiSelectConfig.textField]: option,\r\n };\r\n });\r\n }\r\n for (const option of controlValue) {\r\n let ind = this.optionList.findIndex(\r\n (item: any) =>\r\n item[this.multiSelectConfig.idField] ==\r\n option[this.multiSelectConfig.idField] ||\r\n item[this.multiSelectConfig.textField] ==\r\n option[this.multiSelectConfig.textField]\r\n );\r\n if (ind >= 0) {\r\n this.optionList[ind] = {\r\n ...this.optionList[ind],\r\n isSelected: true,\r\n };\r\n this.selectedOptions.push(this.optionList[ind]);\r\n }\r\n }\r\n }\r\n this.isSelectedAll = this.optionList.every(\r\n (option: any) => option.isSelected == true\r\n );\r\n this.onChangeCallback(this.selectedOptions);\r\n this.cd.markForCheck();\r\n }\r\n }\r\n\r\n /**\r\n * @description method to register on change callback from form API\r\n * @author Shiva Kant\r\n * @param fn\r\n * @returns void\r\n */\r\n registerOnChange(fn: any): void {\r\n this.onChangeCallback = fn;\r\n }\r\n\r\n /**\r\n * @description method to register on touch callback from form API\r\n * @author Shiva Kant\r\n * @param fn\r\n * @returns void\r\n */\r\n registerOnTouched(fn: any): void {\r\n this.onTouchedCallback = fn;\r\n }\r\n\r\n //willbe used in further implementation\r\n setDisabledState(isDisabled: boolean): void {\r\n this.disabledControl = isDisabled;\r\n }\r\n\r\n /**\r\n * @description method to update ontouchcallback on blur\r\n * @author Shiva Kant\r\n */\r\n @HostListener('blur')\r\n public onTouched() {\r\n this.onTouchedCallback();\r\n }\r\n\r\n /**\r\n * @description method to toggle dropdown on outside click\r\n * @author Shiva Kant\r\n */\r\n @HostListener('document:click', ['$event'])\r\n public closeDropdown(event: any) {\r\n if (!this.el.nativeElement.contains(event.target)) {\r\n if (this.showDropdown && this.multiSelectConfig.required) {\r\n this.inValid = this.selectedOptions.length < 0;\r\n }\r\n this.showDropdown = false;\r\n }\r\n }\r\n\r\n checkUncheckAll(): void {\r\n if (this.isSelectedAll) {\r\n this.optionList = this.optionList.map((option: any) => {\r\n if (\r\n this.multiSelectConfig.disabledField &&\r\n option[this.multiSelectConfig.disabledField]\r\n ) {\r\n return option;\r\n }\r\n return { ...option, isSelected: false };\r\n });\r\n\r\n this.isSelectedAll = false;\r\n this.selectedOptions = this.optionList.filter((o) => o.isSelected);\r\n } else {\r\n this.optionList = this.optionList.map((option: any) => {\r\n if (\r\n this.multiSelectConfig.disabledField &&\r\n option[this.multiSelectConfig.disabledField]\r\n ) {\r\n return option;\r\n }\r\n return { ...option, isSelected: true };\r\n });\r\n\r\n this.isSelectedAll = true;\r\n this.selectedOptions = this.optionList.filter((o) => o.isSelected);\r\n }\r\n\r\n this.onChangeCallback(this.selectedOptions);\r\n this.onSelection.emit(this.selectedOptions);\r\n }\r\n\r\n get filteredOptionsValue(): any[] {\r\n if (!this.searchText || this.searchText.trim() === '') {\r\n return this.optionList;\r\n }\r\n return this.optionList.filter((option) =>\r\n option[this.multiSelectConfig.textField]\r\n ?.toLowerCase()\r\n .includes(this.searchText.toLowerCase())\r\n );\r\n }\r\n}\r\n","<div class=\"main-wrapper\">\r\n <div\r\n class=\"display-div\"\r\n (click)=\"toggleDropdown()\"\r\n [ngClass]=\"{\r\n 'border-danger': this.inValid,\r\n 'disable-control': disabledControl\r\n }\"\r\n >\r\n <div class=\"left_details\">\r\n @if(multiSelectConfig.prefixLabel){\r\n <span class=\"predefine_label\">\r\n <p class=\"textTruncate\">{{ multiSelectConfig.prefixLabel }}</p>\r\n </span>\r\n }\r\n <div class=\"multi_label_wrapper\">\r\n @if (selectedOptions.length>0) { @for (item of selectedOptions; track\r\n $index) { @if(multiSelectConfig.chipLimit>=$index+1){\r\n <div class=\"input_text\">\r\n <span class=\"textTruncate\">{{\r\n item[multiSelectConfig.textField]\r\n }}</span>\r\n <!-- <i-feather name=\"x\" (click)=\"$event.stopPropagation();updateSelectedOption(item)\"></i-feather> -->\r\n <img\r\n src=\"images/x.svg\"\r\n (click)=\"$event.stopPropagation(); updateSelectedOption(item)\"\r\n class=\"cross_icon\"\r\n alt=\"\"\r\n />\r\n </div>\r\n } } } @else{\r\n <span class=\"placeholderColor textTruncate\">{{\r\n multiSelectConfig.placeholder\r\n }}</span>\r\n } @if(multiSelectConfig.chipLimit < selectedOptions.length) {\r\n <div class=\"view_more\">\r\n +{{ selectedOptions.length - multiSelectConfig.chipLimit }}\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n <span class=\"arrow_icon\">\r\n <img\r\n src=\"images/chevron-up.svg\"\r\n alt=\"\"\r\n [ngClass]=\"{ 'd-none': !showDropdown }\"\r\n />\r\n <img\r\n src=\"images/chevron-down.svg\"\r\n alt=\"\"\r\n [ngClass]=\"{ 'd-none': showDropdown }\"\r\n />\r\n </span>\r\n </div>\r\n @if (showDropdown) {\r\n <div class=\"dropdown-list\" id=\"container_scroll\">\r\n @if (multiSelectConfig.enableSearch) {\r\n <div class=\"search_bar\">\r\n <div class=\"input_box\">\r\n <img src=\"images/search.svg\" alt=\"\" />\r\n <input\r\n type=\"text\"\r\n class=\"filter_search_box\"\r\n name=\"\"\r\n id=\"\"\r\n placeholder=\"Search here\"\r\n [(ngModel)]=\"searchText\"\r\n />\r\n <img\r\n src=\"images/x.svg\"\r\n class=\"cross_icon\"\r\n alt=\"\"\r\n (click)=\"searchText = ''\"\r\n />\r\n </div>\r\n </div>\r\n }\r\n <ul>\r\n @if (multiSelectConfig.selectAll && optionList.length>0) {\r\n <li (click)=\"checkUncheckAll()\">\r\n <span class=\"checkbox_container\">\r\n <input type=\"checkbox\" [checked]=\"isSelectedAll\" />\r\n @if(isSelectedAll){ UnSelectAll } @else{ SelectAll }\r\n </span>\r\n </li>\r\n } @for (option of filteredOptionsValue; track $index) {\r\n <li\r\n class=\"checkbox_container\"\r\n (click)=\"updateSelectedOption(option)\"\r\n [ngClass]=\"{\r\n disabled_option:\r\n multiSelectConfig.disabledField &&\r\n option[multiSelectConfig.disabledField]\r\n }\"\r\n >\r\n <input type=\"checkbox\" [checked]=\"option.isSelected\" />\r\n <span class=\"textTruncate\"\r\n >{{ option[multiSelectConfig.textField] }}\r\n </span>\r\n </li>\r\n } @empty {\r\n <li class=\"no_data\">No Data Found.</li>\r\n }\r\n </ul>\r\n </div>\r\n }\r\n</div>\r\n","import {\r\n Component,\r\n EventEmitter,\r\n forwardRef,\r\n Input,\r\n Output,\r\n} from '@angular/core';\r\nimport {\r\n FormsModule,\r\n NG_VALUE_ACCESSOR,\r\n ControlValueAccessor,\r\n} from '@angular/forms';\r\nimport { SearchConfig } from '../../modal/cats-ui.modal';\r\n\r\n@Component({\r\n selector: 'cats-ui-search-box',\r\n imports: [FormsModule],\r\n templateUrl: './search-box.component.html',\r\n styleUrl: './search-box.component.scss',\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => SearchBoxComponent),\r\n multi: true,\r\n },\r\n ],\r\n})\r\nexport class SearchBoxComponent implements ControlValueAccessor {\r\n searchParam: string = '';\r\n @Input() searchConfig: SearchConfig = new SearchConfig();\r\n @Output() onClose = new EventEmitter<void>();\r\n @Output() searchParamValue = new EventEmitter<string>();\r\n\r\n private onChange: (value: string) => void = () => {};\r\n public onTouched: () => void = () => {};\r\n isDisabled = false;\r\n\r\n ngOnInit(): void {\r\n this.searchParam = this.searchConfig?.serachValue || '';\r\n }\r\n /**\r\n * @description Method to Called when input changes\r\n * @author Shiva Kant\r\n */\r\n\r\n onInputChange(event: any) {\r\n const value = (event.target as HTMLInputElement)?.value;\r\n this.searchParam = value;\r\n this.onChange(value);\r\n this.searchParamValue.emit(value);\r\n }\r\n /**\r\n * @description Method to closeSearchBar\r\n * @author Shiva Kant\r\n */\r\n closeSearchBar(): void {\r\n this.searchParam = '';\r\n this.onChange('');\r\n this.searchParamValue.emit('');\r\n this.onClose.emit();\r\n }\r\n\r\n // -------- ControlValueAccessor methods --------\r\n writeValue(value: string): void {\r\n this.searchParam = value || '';\r\n }\r\n\r\n registerOnChange(fn: (value: string) => void): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: () => void): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState?(isDisabled: boolean): void {\r\n this.isDisabled = isDisabled;\r\n }\r\n}\r\n","<div class=\"search_input\">\r\n <img src=\"images/search.svg\" alt=\"\" srcset=\"\" />\r\n <input\r\n [placeholder]=\"searchConfig.placeholder\"\r\n type=\"text\"\r\n [value]=\"searchParam\"\r\n (input)=\"onInputChange($event)\"\r\n (blur)=\"onTouched()\"\r\n />\r\n @if (searchParam.length > 0) {\r\n <div class=\"cross_icon\">\r\n <img src=\"images/x.svg\" alt=\"\" srcset=\"\" (click)=\"closeSearchBar()\" />\r\n </div>\r\n }\r\n</div>\r\n","import { Directive, ElementRef, EventEmitter, HostListener, Output } from \"@angular/core\";\r\n\r\n@Directive({\r\n selector: '[catsOutsideClick]',\r\n standalone: true,\r\n})\r\nexport class OutsideClickDirective {\r\n @Output() public clickOutSide = new EventEmitter<MouseEvent>();\r\n\r\n constructor(private elementRef: ElementRef) {}\r\n /**\r\n * @description Hosts listener\r\n * @author Shiva Kant\r\n * @param event \r\n * @returns click \r\n */\r\n @HostListener('document:click', ['$event'])\r\n public onClick(event: MouseEvent): void {\r\n const targetElement = event.target as HTMLElement | null;\r\n\r\n // Guard clause: exit early if no target or not an element\r\n if (!targetElement) {\r\n return;\r\n }\r\n\r\n const clickInside = this.elementRef.nativeElement.contains(targetElement);\r\n if (!clickInside) {\r\n this.clickOutSide.emit(event);\r\n }\r\n }\r\n}\r\n","import { Component, EventEmitter, forwardRef, Input, OnInit, Output, SimpleChanges } from '@angular/core';\r\nimport { AbstractControl, FormControl, FormsModule, NG_VALIDATORS, NG_VALUE_ACCESSOR, ValidationErrors } from '@angular/forms';\r\nimport { AutoCompleteSingleSelectConfig } from '../../modal/cats-ui.modal';\r\nimport { CommonModule } from '@angular/common';\r\nimport { OutsideClickDirective } from '../../directives/outside-click.directive';\r\nconst noop = () => {};\r\nexport const DROPDOWN_CONTROL_VALUE_ACCESSOR: any = {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => AutoCompleteSingleSelectComponent),\r\n multi: true,\r\n};\r\nexport const DROPDOWN_CONTROL_VALUE_VALIDATOR: any = {\r\n provide: NG_VALIDATORS,\r\n useExisting: forwardRef(() => AutoCompleteSingleSelectComponent),\r\n multi: true,\r\n};\r\n@Component({\r\n selector: 'cats-ui-input-single-select',\r\n imports: [CommonModule, FormsModule, OutsideClickDirective],\r\n templateUrl: './auto-complete-single-select.component.html',\r\n styleUrl: './auto-complete-single-select.component.scss',\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: AutoCompleteSingleSelectComponent,\r\n multi: true,\r\n },\r\n DROPDOWN_CONTROL_VALUE_VALIDATOR,\r\n ],\r\n host: { tabindex: '0' },\r\n})\r\nexport class AutoCompleteSingleSelectComponent implements OnInit {\r\n @Input() autoSingleSelectConfig: AutoCompleteSingleSelectConfig =\r\n new AutoCompleteSingleSelectConfig();\r\n @Input() placeholder = 'Enter or Select Option';\r\n @Input() selectedItem: any;\r\n @Input() optionsList: any[] = [];\r\n @Input() parentNativeElement: any;\r\n @Output() onItemSelection = new EventEmitter();\r\n @Output() onScroll: any = new EventEmitter();\r\n showDropdown: boolean = false;\r\n inputValue: string = '';\r\n selectedOption: any;\r\n constructor() {}\r\n inValid: boolean = false;\r\n control!: FormControl<any>;\r\n disableControl: boolean = false;\r\n ngOnInit(): void {}\r\n private onTouchedCallback: () => void = noop;\r\n private onChangeCallback: (_: any) => void = noop;\r\n ngOnChanges(_changes: SimpleChanges): void {\r\n if (!_changes['optionList']?.currentValue) {\r\n } else {\r\n this.writeValue(this.control?.value);\r\n }\r\n }\r\n /**\r\n * @description Method to toggle dropdown list\r\n * @author Shiva Kant\r\n */\r\n toggleDropdown(): void {\r\n this.showDropdown = !this.showDropdown;\r\n }\r\n /**\r\n * @description method to update selected item\r\n * @author Shiva Kant\r\n * @param item this is selected item from list\r\n * @param type type of list\r\n * @returns none\r\n */\r\n updateSelectedItem(item: any, type: string): void {\r\n if (type == 'object') {\r\n this.inputValue = item[this.autoSingleSelectConfig.textField];\r\n } else {\r\n this.inputValue = item;\r\n }\r\n this.selectedOption = item;\r\n this.showDropdown = false;\r\n this.inValid = false;\r\n this.onChangeCallback(item);\r\n\r\n this.onTouchedCallback();\r\n this.onItemSelection.emit(this.selectedOption);\r\n }\r\n\r\n writeValue(obj: any): void {\r\n this.syncSelectionWithValue(obj);\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChangeCallback = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onTouchedCallback = fn;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n this.disableControl = isDisabled;\r\n }\r\n validate(control: AbstractControl): ValidationErrors | null {\r\n this.control = control as FormControl;\r\n\r\n if (!this.autoSingleSelectConfig.required) return null;\r\n\r\n const val = control.value;\r\n\r\n const isEmpty =\r\n val === null ||\r\n val === undefined ||\r\n val === '' ||\r\n (typeof val === 'object' && Object.keys(val).length === 0);\r\n\r\n return isEmpty ? { required: true } : null;\r\n }\r\n\r\n // ---------- Helpers ----------\r\n private syncSelectionWithValue(value: any): void {\r\n this.selectedOption = null;\r\n this.inputValue = '';\r\n\r\n if (!value || !this.optionsList?.length) return;\r\n\r\n if (typeof value !== 'object') {\r\n this.selectedOption =\r\n this.optionsList.find(\r\n (o) =>\r\n o === value ||\r\n o?.[this.autoSingleSelectConfig.idField] === value ||\r\n o?.[this.autoSingleSelectConfig.textField] === value,\r\n ) ?? value;\r\n } else {\r\n this.selectedOption =\r\n this.optionsList.find(\r\n (o) =>\r\n o[this.autoSingleSelectConfig.idField] ===\r\n value[this.autoSingleSelectConfig.idField],\r\n ) ?? value;\r\n }\r\n\r\n this.inputValue = this.isObject(this.selectedOption)\r\n ? this.selectedOption[this.autoSingleSelectConfig.textField]\r\n : this.selectedOption;\r\n }\r\n /**\r\n * @description this method is use to update input value\r\n */\r\n updateInputValue(): void {\r\n let data: any = null;\r\n\r\n if (!this.inputValue || this.inputValue.trim() === '') {\r\n this.selectedOption = null;\r\n this.onChangeCallback(null);\r\n } else {\r\n if (this.isObject(this.optionsList?.[0])) {\r\n data = {\r\n [this.autoSingleSelectConfig.idField]: null,\r\n [this.autoSingleSelectConfig.textField]: this.inputValue,\r\n };\r\n } else {\r\n data = this.inputValue;\r\n }\r\n\r\n this.selectedOption = data;\r\n this.onChangeCallback(data);\r\n }\r\n\r\n this.onTouchedCallback();\r\n this.onItemSelection.emit(data);\r\n this.control?.updateValueAndValidity();\r\n }\r\n\r\n /**\r\n * @description method to update dropdown list state on input type\r\n * @author Shiva Kant\r\n */\r\n updateDropdownStatus(): void {\r\n if (!this.inputValue || this.inputValue.trim() === '') {\r\n this.selectedOption = null;\r\n this.onChangeCallback(null);\r\n\r\n // force validation\r\n this.control?.updateValueAndValidity();\r\n this.showDropdown = false;\r\n return;\r\n }\r\n\r\n this.showDropdown = true;\r\n }\r\n\r\n /**\r\n * @description method to check if the list is Array of string or object\r\n * @author Shiva Kant\r\n * @param data this is the any one one item of list\r\n * @returns boolean\r\n */\r\n isObject(data: any): boolean {\r\n const type = typeof data;\r\n return data && type != 'string';\r\n }\r\n /**\r\n * @description This method is use to close dropdown on click outside\r\n */\r\n outsideClicked(): void {\r\n if (this.showDropdown) {\r\n if (this.autoSingleSelectConfig.customInput) {\r\n this.updateInputValue();\r\n }\r\n }\r\n this.showDropdown = false;\r\n }\r\n onClickEnter(control: any) {\r\n if (this.autoSingleSelectConfig.customInput) {\r\n this.updateInputValue();\r\n }\r\n }\r\n /**\r\n * @description method to load more list\r\n * @author Shiva Kant\r\n * @param event\r\n */\r\n onDivScroll(event: any): void {\r\n if (\r\n event.target.offsetHeight + event.target.scrollTop >=\r\n event.target.scrollHeight - 1 &&\r\n this.optionsList.length\r\n ) {\r\n this.onScroll.emit();\r\n }\r\n }\r\n}","<div class=\"main_container\" catsOutsideClick (clickOutSide)=\"outsideClicked()\">\r\n <div class=\"input_container\">\r\n <div class=\"input_box\">\r\n <input\r\n class=\"textTruncate\"\r\n type=\"text\"\r\n [(ngModel)]=\"inputValue\"\r\n (keyup.enter)=\"onClickEnter(inputValue)\"\r\n (keyup)=\"updateDropdownStatus()\"\r\n (input)=\"updateDropdownStatus()\"\r\n [placeholder]=\"autoSingleSelectConfig.placeholder\"\r\n />\r\n </div>\r\n <div class=\"arrow_icon\" (click)=\"toggleDropdown()\">\r\n <img\r\n src=\"images/chevron-up.svg\"\r\n alt=\"up-arrow\"\r\n [ngClass]=\"{ 'd-none': !showDropdown }\"\r\n />\r\n <img\r\n src=\"images/chevron-down.svg\"\r\n alt=\"down-arrow\"\r\n [ngClass]=\"{ 'd-none': showDropdown }\"\r\n />\r\n </div>\r\n </div>\r\n\r\n @if (showDropdown) {\r\n <div class=\"dropdown_list_single_auto_select\">\r\n <!-- if optionList is an array of object-->\r\n @if (isObject(optionsList[0])) {\r\n <ng-container>\r\n <ul>\r\n @for (item of optionsList; track $index) {\r\n <ng-container>\r\n @if\r\n (item[autoSingleSelectConfig.textField].toLowerCase().includes(inputValue.toLowerCase())\r\n || inputValue == '') {\r\n <li\r\n (click)=\"updateSelectedItem(item, 'object')\"\r\n [ngClass]=\"\r\n autoSingleSelectConfig.disabledField &&\r\n item[autoSingleSelectConfig.disabledField]\r\n ? 'disabled_option'\r\n : ''\r\n \"\r\n >\r\n <span class=\"textTruncate\">\r\n {{ item[autoSingleSelectConfig.textField] }}\r\n </span>\r\n </li>\r\n }\r\n </ng-container>\r\n }\r\n </ul>\r\n </ng-container>\r\n }\r\n\r\n <!-- if optionList is an array of string-->\r\n @if (!isObject(optionsList[0])) {\r\n <ng-container>\r\n <ul>\r\n @for (item of optionsList; track $index) {\r\n <ng-container>\r\n @if (item.includes(inputValue) || inputValue == '') {\r\n <li\r\n [ngClass]=\"\r\n autoSingleSelectConfig.disabledField &&\r\n item[autoSingleSelectConfig.disabledField]\r\n ? 'disabled_option'\r\n : ''\r\n \"\r\n (click)=\"updateSelectedItem(item, 'string')\"\r\n >\r\n {{ item }}\r\n </li>\r\n\r\n } </ng-container\r\n >}\r\n </ul></ng-container\r\n >}\r\n </div>\r\n }\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, EventEmitter, forwardRef, Input, OnInit, Output, SimpleChanges } from '@angular/core';\r\nimport { AbstractControl, ControlValueAccessor, FormControl, FormsModule, NG_VALIDATORS, NG_VALUE_ACCESSOR, ValidationErrors, Validator } from '@angular/forms';\r\nimport { AutoCompleteMultiSelectConfig } from '../../modal/cats-ui.modal';\r\nimport { OutsideClickDirective } from '../../directives/outside-click.directive';\r\n\r\n@Component({\r\n selector: 'cats-ui-input-multi-select',\r\n imports: [CommonModule, FormsModule, OutsideClickDirective],\r\n templateUrl: './auto-complete-multi-select.component.html',\r\n styleUrl: './auto-complete-multi-select.component.scss',\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => AutoCompleteMultiSelectComponent),\r\n multi: true,\r\n },\r\n {\r\n provide: NG_VALIDATORS,\r\n useExisting: forwardRef(() => AutoCompleteMultiSelectComponent),\r\n multi: true,\r\n },\r\n ],\r\n host: { tabindex: '0' },\r\n})\r\nexport class AutoCompleteMultiSelectComponent\r\n implements OnInit, ControlValueAccessor, Validator\r\n{\r\n @Input() autoCompleteMultiSelectConfig!: AutoCompleteMultiSelectConfig;\r\n @Input() selectedItem: any;\r\n @Input() optionsList: any[] = [];\r\n @Input() parentNativeElement: any;\r\n @Output() onItemSelection = new EventEmitter();\r\n @Output() onScroll: any = new EventEmitter();\r\n showDropdown: boolean = false;\r\n inputValue: string = '';\r\n selectedOptions: any[] = [];\r\n isSelectedAll: boolean = false;\r\n inValid: boolean = false;\r\n control!: FormControl<any>;\r\n isDisabled = false;\r\n constructor() {}\r\n ngOnInit() {}\r\n ngOnChanges(_changes: SimpleChanges): void {\r\n if (!_changes['optionList']?.currentValue) {\r\n } else {\r\n this.writeValue(this.control?.value);\r\n }\r\n }\r\n private onChange: (_: any) => void = () => {};\r\n private onTouched: () => void = () => {};\r\n private applyDefaultConfig() {\r\n const defaults = new AutoCompleteMultiSelectConfig();\r\n this.autoCompleteMultiSelectConfig = {\r\n ...defaults,\r\n ...this.autoCompleteMultiSelectConfig,\r\n };\r\n }\r\n\r\n /**\r\n * @description Method to toggle dropdown list\r\n * @author Shiva Kant\r\n */\r\n toggleDropdown(): void {\r\n this.showDropdown = !this.showDropdown;\r\n if (this.parentNativeElement) {\r\n this.parentNativeElement.scrollIntoView({\r\n behavior: 'smooth',\r\n block: 'center',\r\n });\r\n let parentDiv = document.getElementById(this.parentNativeElement);\r\n setTimeout(() => {\r\n let parentBoundary = parentDiv?.getBoundingClientRect() || ({} as any);\r\n let dropdonwList: any = document.getElementById('container_scroll');\r\n let elBoundary = dropdonwList?.getBoundingClientRect() || {};\r\n if (parentBoundary?.['bottom'] < elBoundary?.['bottom']) {\r\n dropdonwList.style['transform'] = `translate(0px,-${\r\n elBoundary?.['height'] + 54\r\n }px`;\r\n }\r\n }, 20);\r\n }\r\n }\r\n writeValue(value: any[]): void {\r\n if (Array.isArray(value)) {\r\n this.selectedOptions = value;\r\n\r\n // sync optionsList selection\r\n this.optionsList.forEach((opt) => {\r\n opt.isSelected = value.some((v) =>\r\n this.isObject(v)\r\n ? v[this.autoCompleteMultiSelectConfig.textField] ===\r\n opt[this.autoCompleteMultiSelectConfig.textField]\r\n : v === opt,\r\n );\r\n });\r\n this.onChange(this.selectedOptions);\r\n this.onTouched();\r\n this.updateSelectAllState();\r\n }\r\n }\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n this.isDisabled = isDisabled;\r\n }\r\n validate(control: AbstractControl): ValidationErrors | null {\r\n this.control = control as FormControl;\r\n\r\n if (!this.autoCompleteMultiSelectConfig.required) return null;\r\n\r\n const val = control.value;\r\n\r\n const isEmpty =\r\n val === null ||\r\n val === undefined ||\r\n val === '' ||\r\n (typeof val === 'object' && Object.keys(val).length === 0);\r\n\r\n return isEmpty ? { required: true } : null;\r\n }\r\n onInput(event: Event) {\r\n const target = event.target as HTMLInputElement;\r\n this.inputValue = target.value;\r\n }\r\n /**\r\n * @description method to update selected item\r\n * @author Shiva Kant\r\n * @param item this is selected item from list\r\n * @param type type of list\r\n * @returns none\r\n */\r\n updateSelectedItem(item: any, type: string) {\r\n if (type === 'object') {\r\n // Toggle the option's isSelected\r\n item.isSelected = !item.isSelected;\r\n\r\n if (item.isSelected) {\r\n // add to selectedOptions if not already present\r\n const exists = this.selectedOptions.some(\r\n (opt) =>\r\n this.isObject(opt) &&\r\n opt[this.autoCompleteMultiSelectConfig.textField] ===\r\n item[this.autoCompleteMultiSelectConfig.textField],\r\n );\r\n if (!exists) this.selectedOptions.push(item);\r\n } else {\r\n // remove from selectedOptions\r\n this.selectedOptions = this.selectedOptions.filter(\r\n (opt) =>\r\n !(\r\n this.isObject(opt) &&\r\n opt[this.autoCompleteMultiSelectConfig.textField] ===\r\n item[this.autoCompleteMultiSelectConfig.textField]\r\n ),\r\n );\r\n }\r\n } else {\r\n // string type\r\n const existsIndex = this.selectedOptions.findIndex((opt) => opt === item);\r\n if (existsIndex > -1) {\r\n // remove\r\n this.selectedOptions.splice(existsIndex, 1);\r\n } else {\r\n // add\r\n this.selectedOptions.push(item);\r\n }\r\n\r\n // If optionsList contains this string, also toggle its isSelected there\r\n const idxInOptions = this.optionsList.findIndex(\r\n (o) => typeof o === 'string' && o === item,\r\n );\r\n if (idxInOptions > -1) {\r\n // toggle corresponding option's isSelected\r\n const opt = this.optionsList[idxInOptions] as any;\r\n opt.isSelected = !opt.isSelected;\r\n }\r\n }\r\n\r\n // keep select all state consistent\r\n this.updateSelectAllState();\r\n this.onChange(this.selectedOptions);\r\n this.onTouched();\r\n\r\n this.onItemSelection.emit(this.selectedOptions);\r\n }\r\n\r\n /**\r\n * @description method to checkUncheckAll\r\n * @author Shiva Kant\r\n */\r\n\r\n checkUncheckAll(event: any) {\r\n if (event) event.stopPropagation();\r\n this.isSelectedAll = !this.isSelectedAll;\r\n\r\n this.optionsList.forEach((item) => {\r\n if (\r\n !this.autoCompleteMultiSelectConfig.disabledField ||\r\n !item[this.autoCompleteMultiSelectConfig.disabledField]\r\n ) {\r\n item.isSelected = this.isSelectedAll;\r\n }\r\n });\r\n\r\n // Keep custom values intact\r\n const customChips = this.selectedOptions.filter((opt) =>\r\n this.isObject(opt)\r\n ? !this.optionsList.some(\r\n (o) =>\r\n o[this.autoCompleteMultiSelectConfig.textField] ===\r\n opt[this.autoCompleteMultiSelectConfig.textField],\r\n )\r\n : !this.optionsList.includes(opt),\r\n );\r\n\r\n const selectedOptionItems = this.optionsList.filter(\r\n (opt) => opt.isSelected,\r\n );\r\n\r\n this.selectedOptions = [...customChips, ...selectedOptionItems];\r\n this.onChange(this.selectedOptions);\r\n this.onTouched();\r\n\r\n this.onItemSelection.emit(this.selectedOptions);\r\n }\r\n\r\n /**\r\n * @description method to removeChip\r\n * @author Shiva Kant\r\n */\r\n removeChip(item: any) {\r\n // Remove from selectedOptions\r\n this.selectedOptions = this.selectedOptions.filter((opt) =>\r\n this.isObject(opt)\r\n ? opt[this.autoCompleteMultiSelectConfig.textField] !==\r\n (this.isObject(item)\r\n ? item[this.autoCompleteMultiSelectConfig.textField]\r\n : item)\r\n : opt !== item,\r\n );\r\n\r\n // If item corresponds to an optionsList entry, unselect it there too\r\n if (this.isObject(item)) {\r\n const idx = this.optionsList.findIndex(\r\n (o: any) =>\r\n this.isObject(o) &&\r\n o[this.autoCompleteMultiSelectConfig.textField] ===\r\n item[this.autoCompleteMultiSelectConfig.textField],\r\n );\r\n if (idx > -1) {\r\n this.optionsList[idx].isSelected = false;\r\n }\r\n } else {\r\n // string case\r\n const idx = this.optionsList.findIndex((o) => o === item);\r\n if (idx > -1) {\r\n this.optionsList[idx].isSelected = false;\r\n }\r\n }\r\n\r\n // update select all state & emit\r\n this.updateSelectAllState();\r\n this.onChange(this.selectedOptions); // 🔥 THIS updates formControl\r\n this.onTouched();\r\n\r\n this.onItemSelection.emit(this.selectedOptions);\r\n }\r\n /**\r\n * @description method to update dropdown list state on input type\r\n * @author Shiva Kant\r\n */\r\n updateDropdownStatus() {\r\n this.showDropdown = true;\r\n }\r\n\r\n /**\r\n * @description method to check if the list is Array of string or object\r\n * @author Shiva Kant\r\n * @param data this is the any one one item of list\r\n * @returns boolean\r\n */\r\n isObject(data: any): boolean {\r\n const type = typeof data;\r\n return data && type != 'string';\r\n }\r\n /**\r\n * @description This method is use to close dropdown on onClickEnter\r\n * @author Shiva Kant\r\n */\r\n\r\n onClickEnter(control?: any): void {\r\n if (!this.inputValue.trim()) return;\r\n\r\n // pattern check\r\n if (this.autoCompleteMultiSelectConfig.pattern) {\r\n const regex = new RegExp(this.autoCompleteMultiSelectConfig.pattern);\r\n if (!regex.test(this.inputValue)) {\r\n this.inputValue = '';\r\n return;\r\n }\r\n }\r\n\r\n const val = this.inputValue.trim();\r\n const valLower = val.toLowerCase();\r\n\r\n // Avoid duplicate\r\n const exists = this.selectedOptions.some((opt) =>\r\n this.isObject(opt)\r\n ? opt[this.autoCompleteMultiSelectConfig.textField].toLowerCase() ===\r\n valLower\r\n : opt.toLowerCase() === valLower,\r\n );\r\n if (exists) {\r\n this.inputValue = '';\r\n return;\r\n }\r\n\r\n // Try find matched item in optionsList\r\n const matchedItem = this.isObject(this.optionsList?.[0])\r\n ? this.optionsList.find(\r\n (opt: any) =>\r\n opt[this.autoCompleteMultiSelectConfig.textField].toLowerCase() ===\r\n valLower,\r\n )\r\n : this.optionsList.find((opt: any) => opt.toLowerCase() === valLower);\r\n\r\n if (matchedItem) {\r\n // If matched, ensure option is marked selected and present in selectedOptions\r\n matchedItem.isSelected = true;\r\n const already = this.selectedOptions.some((opt) =>\r\n this.isObject(opt)\r\n ? opt[this.autoCompleteMultiSelectConfig.textField] ===\r\n matchedItem[this.autoCompleteMultiSelectConfig.textField]\r\n : opt === matchedItem,\r\n );\r\n if (!already) this.selectedOptions.push(matchedItem);\r\n } else if (this.autoCompleteMultiSelectConfig.customInput) {\r\n // create custom item and mark it selected\r\n let newItem: any = val;\r\n if (this.isObject(this.optionsList?.[0])) {\r\n newItem = {\r\n [this.autoCompleteMultiSelectConfig.idField]: null,\r\n [this.autoCompleteMultiSelectConfig.textField]: val,\r\n isSelected: true, // mark selected for consistency\r\n __isCustom: true, // optional flag to identify custom items\r\n };\r\n }\r\n this.selectedOptions.push(newItem);\r\n }\r\n\r\n // reset input but keep dropdown open (as you wanted)\r\n this.inputValue = '';\r\n\r\n // update select all state and emit\r\n this.updateSelectAllState();\r\n this.onChange(this.selectedOptions);\r\n this.onTouched();\r\n this.onItemSelection.emit(this.selectedOptions);\r\n }\r\n outsideClicked(): void {\r\n this.showDropdown = false;\r\n }\r\n /**\r\n * @description method to load more list\r\n * @author Shiva Kant\r\n * @param event\r\n */\r\n onDivScroll(event: any): void {\r\n if (\r\n event.target.offsetHeight + event.target.scrollTop >=\r\n event.target.scrollHeight - 1 &&\r\n this.optionsList.length\r\n ) {\r\n this.onScroll.emit();\r\n }\r\n }\r\n\r\n updateSelectAllState() {\r\n // only consider non-disabled items for select-all state\r\n const selectable = this.optionsList.filter(\r\n (opt: any) =>\r\n !(\r\n this.autoCompleteMultiSelectConfig.disabledField &&\r\n opt[this.autoCompleteMultiSelectConfig.disabledField]\r\n ),\r\n );\r\n this.isSelectedAll =\r\n selectable.length > 0 && selectable.every((opt: any) => !!opt.isSelected);\r\n }\r\n}\r\n","<div class=\"main_container\">\r\n <div\r\n class=\"input_container\"\r\n catsOutsideClick\r\n (clickOutSide)=\"outsideClicked()\"\r\n >\r\n <div class=\"chips_wrapper\">\r\n <!-- Chips -->\r\n @for (item of selectedOptions; track $index) { @if ($index <\r\n autoCompleteMultiSelectConfig.chipLimit) {\r\n <div class=\"chip\" (click)=\"$event.stopPropagation()\">\r\n <span class=\"textTruncate\">\r\n {{\r\n isObject(item)\r\n ? item[autoCompleteMultiSelectConfig.textField]\r\n : item\r\n }}\r\n </span>\r\n <img\r\n src=\"images/x.svg\"\r\n class=\"cross_icon\"\r\n (click)=\"$event.stopPropagation(); removeChip(item)\"\r\n />\r\n </div>\r\n } }\r\n <!-- +N counter -->\r\n @if (selectedOptions.length > autoCompleteMultiSelectConfig.chipLimit) {\r\n <div class=\"view_more\">\r\n +{{ selectedOptions.length - autoCompleteMultiSelectConfig.chipLimit }}\r\n </div>\r\n }\r\n <!-- Input Box (always available) -->\r\n <div class=\"input_box\" (click)=\"$event.stopPropagation()\">\r\n <input\r\n type=\"text\"\r\n [value]=\"inputValue\"\r\n (input)=\"onInput($event)\"\r\n (keyup.enter)=\"onClickEnter()\"\r\n (keyup)=\"updateDropdownStatus()\"\r\n [placeholder]=\"\r\n selectedOptions.length === 0\r\n ? autoCompleteMultiSelectConfig.placeholder\r\n : ''\r\n \"\r\n />\r\n </div>\r\n </div>\r\n\r\n <!-- Dropdown toggle -->\r\n <div class=\"arrow_icon\" (click)=\"toggleDropdown()\">\r\n <img\r\n src=\"images/chevron-up.svg\"\r\n [ngClass]=\"{ 'd-none': !showDropdown }\"\r\n />\r\n <img\r\n src=\"images/chevron-down.svg\"\r\n [ngClass]=\"{ 'd-none': showDropdown }\"\r\n />\r\n </div>\r\n </div>\r\n\r\n <!-- Dropdown list -->\r\n @if (showDropdown) {\r\n <div class=\"dropdown_list_multi_auto_select\" id=\"container_scroll\" (click)=\" onDivScroll($event)\">\r\n <ul>\r\n <!-- Select All -->\r\n @if (autoCompleteMultiSelectConfig.selectAll) {\r\n <li\r\n class=\"checkbox_container select_all_item\"\r\n (click)=\"checkUncheckAll($event)\"\r\n >\r\n <input\r\n type=\"checkbox\"\r\n [checked]=\"isSelectedAll\"\r\n (click)=\"$event.stopPropagation(); checkUncheckAll($event)\"\r\n />\r\n <span>{{ isSelectedAll ? \"Unselect All\" : \"Select All\" }}</span>\r\n </li>\r\n }\r\n\r\n <!-- Object Options -->\r\n @if (isObject(optionsList[0])) { @for (item of optionsList; track $index)\r\n { @if (item[autoCompleteMultiSelectConfig.textField] .toLowerCase()\r\n .includes(inputValue.toLowerCase()) || inputValue == \"\") {\r\n\r\n <li\r\n class=\"checkbox_container\"\r\n [ngClass]=\"{\r\n disabled_option:\r\n autoCompleteMultiSelectConfig.disabledField &&\r\n item[autoCompleteMultiSelectConfig.disabledField]\r\n }\"\r\n (click)=\"updateSelectedItem(item, 'object')\"\r\n >\r\n <input\r\n type=\"checkbox\"\r\n [checked]=\"item.isSelected\"\r\n (click)=\"$event.stopPropagation(); updateSelectedItem(item, 'object')\"\r\n />\r\n\r\n <span class=\"textTruncate\">{{\r\n item[autoCompleteMultiSelectConfig.textField]\r\n }}</span>\r\n </li>\r\n } } }\r\n\r\n <!-- String Options -->\r\n @if (!isObject(optionsList[0])) { @for (item of optionsList; track $index)\r\n { @if (item.toLowerCase().includes(inputValue.toLowerCase()) || inputValue\r\n == \"\") {\r\n <li\r\n class=\"checkbox_container\"\r\n (click)=\"updateSelectedItem(item, 'string')\"\r\n >\r\n <input\r\n type=\"checkbox\"\r\n [checked]=\"selectedOptions.includes(item)\"\r\n (click)=\"$event.stopPropagation(); updateSelectedItem(item, 'string')\"\r\n />\r\n <span class=\"textTruncate\">{{ item }}</span>\r\n </li>\r\n } } }\r\n </ul>\r\n </div>\r\n }\r\n</div>\r\n","import { Component, EventEmitter, forwardRef, Input, Output } from '@angular/core';\r\nimport { ToggleConfig } from '../../modal/cats-ui.modal';\r\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\r\n\r\n@Component({\r\n selector: 'cats-ui-toogle-button',\r\n imports: [],\r\n templateUrl: './toogle-button.component.html',\r\n styleUrl: './toogle-button.component.scss',\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => ToogleButtonComponent),\r\n multi: true,\r\n },\r\n ],\r\n})\r\nexport class ToogleButtonComponent {\r\n @Input() toggleConfig!: ToggleConfig;\r\n @Output() onToggled: EventEmitter<boolean> = new EventEmitter<boolean>();\r\n\r\n private onChange: (value: boolean) => void = () => {};\r\n private onTouched: () => void = () => {};\r\n toggle() {\r\n if (!this.toggleConfig.disabled) {\r\n this.toggleConfig.checked = !this.toggleConfig.checked;\r\n this.onToggled.emit(this.toggleConfig.checked);\r\n }\r\n }\r\n\r\n // ControlValueAccessor methods\r\n writeValue(value: boolean): void {\r\n this.toggleConfig.checked = value;\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n this.toggleConfig.disabled = isDisabled;\r\n }\r\n}\r\n","<div class=\"toggle_button\">\r\n <label class=\"switch\">\r\n <input \r\n type=\"checkbox\" \r\n [checked]=\"toggleConfig.checked\" \r\n [disabled]=\"toggleConfig.disabled\"\r\n (change)=\"toggle()\"\r\n />\r\n <span class=\"slider round\"></span>\r\n <span class=\"toggle-status\">\r\n {{ toggleConfig.checked ? 'ON' : 'OFF' }}\r\n </span>\r\n </label>\r\n</div>\r\n","import { Component,EventEmitter, forwardRef, Input, OnChanges, Output, SimpleChanges } from '@angular/core';\r\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';\r\nimport { CheckBoxConfig } from '../../modal/cats-ui.modal';\r\n\r\n@Component({\r\n selector: 'cats-ui-checkbox-button',\r\n imports: [],\r\n templateUrl: './checkbox-button.component.html',\r\n styleUrl: './checkbox-button.component.scss',\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => CheckboxButtonComponent),\r\n multi: true,\r\n },\r\n ],\r\n})\r\nexport class CheckboxButtonComponent\r\n implements ControlValueAccessor, OnChanges\r\n{\r\n @Input() checkBoxConfig!: CheckBoxConfig;\r\n @Output() onCheckBoxSelection = new EventEmitter<any>();\r\n @Input() optionList: any[] = [];\r\n @Input() selectedOptions: any[] = [];\r\n\r\n private onChange: (value: any[]) => void = () => {};\r\n private onTouched: () => void = () => {};\r\n\r\n get idField(): string {\r\n return this.checkBoxConfig?.idField || 'id';\r\n }\r\n\r\n get textField(): string {\r\n return this.checkBoxConfig?.textField || 'name';\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['selectedOptions'] && this.selectedOptions?.length) {\r\n this.applySelectedOptions();\r\n }\r\n }\r\n\r\n /**\r\n * @description normalizeSelectedValue the value according t\r\n * @param item\r\n * @returns\r\n */\r\n normalizeSelectedValue(item: any): string {\r\n if (item == null) return '';\r\n\r\n if (typeof item === 'string') return item; // case 1: string of id or name\r\n if (item.id) return item.id; // case 2: object with id\r\n if (item.name) return item.name; // case 3: object with name\r\n\r\n return ''; // fallback\r\n }\r\n\r\n /**\r\n * @description Method is to Apply selectedOptions on input change\r\n * @author Shiva Kant\r\n */\r\n private applySelectedOptions() {\r\n const normalized = this.selectedOptions.map((s: any) =>\r\n this.normalizeSelectedValue(s)\r\n );\r\n this.optionList = this.optionList.map((task) => {\r\n const taskId = task.id;\r\n const taskName = task.name;\r\n\r\n const isParentSelected =\r\n normalized.includes(taskId) || normalized.includes(taskName);\r\n\r\n const updatedSubtasks = (task.subtasks ?? []).map((sub: any) => {\r\n const subId = sub.id;\r\n const subName = sub.name;\r\n\r\n return {\r\n ...sub,\r\n checked: normalized.includes(subId) || normalized.includes(subName),\r\n };\r\n });\r\n\r\n return {\r\n ...task,\r\n checked:\r\n isParentSelected || updatedSubtasks.every((s: any) => s.checked),\r\n subtasks: updatedSubtasks,\r\n };\r\n });\r\n }\r\n\r\n /**\r\n * @description Method is to Checkbox change handler\r\n * @author Shiva Kant\r\n * @param event\r\n * @param parentIndex\r\n * @param subIndex\r\n */\r\n onCheckboxChange(event: Event, parentIndex: number, subIndex?: number) {\r\n const checked = (event.target as HTMLInputElement).checked;\r\n\r\n this.optionList = this.optionList.map((task, i) => {\r\n const safeTask = {\r\n ...task,\r\n checked: task.checked ?? false,\r\n subtasks: task.subtasks ?? [],\r\n };\r\n\r\n if (i === parentIndex) {\r\n if (subIndex === undefined) {\r\n // Parent checkbox toggled\r\n safeTask.checked = checked;\r\n safeTask.subtasks = safeTask.subtasks.map((sub: any) => ({\r\n ...sub,\r\n checked,\r\n }));\r\n } else if (safeTask.subtasks[subIndex]) {\r\n // Subtask toggled\r\n safeTask.subtasks[subIndex].checked = checked;\r\n // Parent checked only if all subtasks are checked\r\n safeTask.checked = safeTask.subtasks.every((sub: any) => sub.checked);\r\n }\r\n }\r\n\r\n return safeTask;\r\n });\r\n\r\n const checkedTasks = this.optionList\r\n .filter(\r\n (task) =>\r\n (task.checked ?? false) ||\r\n task.subtasks?.some((s: any) => s.checked ?? false)\r\n )\r\n .map((task) => ({\r\n ...task,\r\n subtasks: task.subtasks?.filter((s: any) => s.checked ?? false) || [],\r\n }));\r\n\r\n const selectedObjects = checkedTasks.map((task) => ({\r\n ...task,\r\n subtasks: task.subtasks.filter((s: any) => s.checked),\r\n }));\r\n\r\n this.onCheckBoxSelection.emit(selectedObjects);\r\n this.onChange(this.optionList);\r\n this.onTouched();\r\n }\r\n /**\r\n * @description Indeterminate state for parent on option checked\r\n * @param task\r\n * @returns\r\n */\r\n partiallyComplete(task: any): boolean {\r\n if (!task?.subtasks?.length) return false;\r\n const done = task.subtasks.filter((t: any) => t.checked).length;\r\n return done > 0 && done < task.subtasks.length;\r\n }\r\n\r\n // ControlValueAccessor methods\r\n writeValue(value: any[]): void {\r\n if (value) {\r\n this.optionList = value.map((task) => ({\r\n ...task,\r\n subtasks: task.subtasks ? [...task.subtasks] : [],\r\n }));\r\n }\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n if (isDisabled) {\r\n this.optionList.forEach((task) => {\r\n task.checked = false;\r\n task.subtasks?.forEach((sub: any) => (sub.checked = false));\r\n });\r\n }\r\n }\r\n}\r\n","<div class=\"parent_container\">\r\n <ul>\r\n @for (task of optionList; let parentIndex = $index; track $index) {\r\n <li>\r\n <!-- Parent Checkbox -->\r\n <label class=\"checkbox_container\">\r\n <input\r\n type=\"checkbox\"\r\n [name]=\"checkBoxConfig.name\"\r\n [checked]=\"task.checked\"\r\n [disabled]=\"\r\n checkBoxConfig.disabledField\r\n ? task[checkBoxConfig.disabledField]\r\n : false\r\n \"\r\n [indeterminate]=\"partiallyComplete(task)\"\r\n (change)=\"onCheckboxChange($event, parentIndex)\"\r\n />\r\n <span class=\"textTruncate\">{{ task[textField] }}</span>\r\n </label>\r\n\r\n <!-- Subtasks -->\r\n @if (task.subtasks && task.subtasks.length > 0) {\r\n <ul class=\"sub\">\r\n @for (sub of task.subtasks; let idx = $index; track $index) {\r\n <li>\r\n <label class=\"checkbox_container\">\r\n <input\r\n type=\"checkbox\"\r\n [checked]=\"sub.checked\"\r\n (change)=\"onCheckboxChange($event, parentIndex, idx)\"\r\n />\r\n <!-- <span class=\"checkmark\"></span> -->\r\n <span class=\"label-text\">{{ sub[textField] }}</span>\r\n </label>\r\n </li>\r\n }\r\n </ul>\r\n }\r\n </li>\r\n }\r\n </ul>\r\n</div>\r\n","import {\r\n Component,\r\n EventEmitter,\r\n forwardRef,\r\n Input,\r\n Output,\r\n SimpleChanges,\r\n} from '@angular/core';\r\nimport {\r\n NG_VALUE_ACCESSOR,\r\n ControlValueAccessor,\r\n FormsModule,\r\n} from '@angular/forms';\r\nimport { RadioButtonConfig } from '../../modal/cats-ui.modal';\r\nimport { CommonModule } from '@angular/common';\r\n\r\n@Component({\r\n selector: 'cats-ui-radio-button',\r\n imports: [CommonModule, FormsModule],\r\n templateUrl: './radio-button.component.html',\r\n styleUrl: './radio-button.component.scss',\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => RadioButtonComponent),\r\n multi: true,\r\n },\r\n ],\r\n})\r\nexport class RadioButtonComponent implements ControlValueAccessor {\r\n @Input() config!: RadioButtonConfig;\r\n @Input() optionList: any[] = [];\r\n @Output() selectionChange = new EventEmitter<any>();\r\n // selectedRadio pass id in number or name in string or full object\r\n @Input() selectedRadio: any;\r\n\r\n value: any = null;\r\n isDisabled = false;\r\n\r\n onChange = (_: any) => {};\r\n onTouched = () => {};\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['selectedRadio'] && this.optionList?.length) {\r\n if (!this.selectedRadio) return;\r\n\r\n const selected = this.selectedRadio;\r\n\r\n const match = this.optionList.find((opt) => {\r\n const optValue = this.extractValue(opt);\r\n const optLabel = this.extractLabel(opt);\r\n\r\n if (typeof selected === 'string' || typeof selected === 'number') {\r\n // Match primitive against value or label\r\n return selected === optValue || selected === optLabel;\r\n } else if (typeof selected === 'object') {\r\n // Match object against option's value or label\r\n const selValue = this.extractValue(selected);\r\n const selLabel = this.extractLabel(selected);\r\n return selValue === optValue || selLabel === optLabel;\r\n }\r\n return false;\r\n });\r\n\r\n if (match) {\r\n this.value = this.extractValue(match);\r\n this.onChange(this.value);\r\n }\r\n }\r\n }\r\n\r\n writeValue(value: any): void {\r\n this.value = value;\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState?(isDisabled: boolean): void {\r\n this.isDisabled = isDisabled;\r\n }\r\n /**\r\n * @description method to handle change of toggle button\r\n * @author Shiva Kant\r\n * @param option\r\n */\r\n handleChange(option: any) {\r\n this.value = this.extractValue(option);\r\n this.onChange(this.value);\r\n this.onTouched();\r\n this.selectionChange.emit(option);\r\n }\r\n /**\r\n * @description method to extractValue\r\n * @author Shiva Kant\r\n * @param option\r\n * @returns\r\n */\r\n extractValue(option: any): any {\r\n if (typeof option === 'string' || typeof option === 'number') {\r\n return option;\r\n }\r\n\r\n const key = this.config.valueField ?? 'id'; // ALWAYS a string\r\n return option[key];\r\n }\r\n\r\n extractLabel(option: any): string {\r\n if (typeof option === 'string') return option;\r\n\r\n const key = this.config.textField ?? 'label';\r\n return option[key];\r\n }\r\n\r\n /**\r\n * * @description method to normalizeValue\r\n * @author Shiva Kant\r\n * @param value\r\n * @returns\r\n */\r\n normalizeValue(value: any): any {\r\n if (value == null) return null;\r\n\r\n if (typeof value === 'string' || typeof value === 'number') {\r\n return value;\r\n }\r\n\r\n // object case → return id or valueField\r\n const key = this.config.valueField ?? 'id';\r\n return value[key];\r\n }\r\n}\r\n","<div class=\"radio_group\" [ngClass]=\"config.layout\">\r\n @if (config.label) {\r\n <div class=\"group_label\">{{ config.label }}</div>\r\n }\r\n\r\n <div class=\"radio_option_container\">\r\n @for (option of optionList; track $index) {\r\n <div class=\"radio_option\">\r\n <input\r\n type=\"radio\"\r\n [name]=\"config.name\"\r\n [id]=\"extractValue(option)\"\r\n [disabled]=\"config.disabled ? option[config.disabled] : false\"\r\n [value]=\"extractValue(option)\"\r\n [(ngModel)]=\"value\"\r\n (change)=\"handleChange(option)\"\r\n />\r\n <label [for]=\"extractValue(option)\">{{ extractLabel(option) }}</label>\r\n </div>\r\n }\r\n </div>\r\n</div>\r\n","import { CommonModule, DatePipe } from '@angular/common';\r\nimport {\r\n ChangeDetectorRef,\r\n Component,\r\n EventEmitter,\r\n Inject,\r\n Input,\r\n LOCALE_ID,\r\n OnChanges,\r\n OnInit,\r\n Output,\r\n SimpleChanges,\r\n} from '@angular/core';\r\nimport {\r\n AbstractControl,\r\n ControlValueAccessor,\r\n NG_VALIDATORS,\r\n NG_VALUE_ACCESSOR,\r\n ValidationErrors,\r\n} from '@angular/forms';\r\nimport { OutsideClickDirective } from '../../directives/outside-click.directive';\r\nimport { DateConfig } from '../../modal/cats-ui.modal';\r\ninterface IRange {\r\n value: Date;\r\n label: string;\r\n}\r\n@Component({\r\n selector: 'cats-ui-date-time-picker',\r\n imports: [CommonModule, OutsideClickDirective],\r\n templateUrl: './date-time-picker.component.html',\r\n styleUrl: './date-time-picker.component.scss',\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: DateTimePickerComponent,\r\n multi: true,\r\n },\r\n {\r\n provide: NG_VALIDATORS,\r\n useExisting: DateTimePickerComponent,\r\n multi: true,\r\n },\r\n DatePipe,\r\n ],\r\n host: { tabindex: '0' },\r\n})\r\nexport class DateTimePickerComponent\r\n implements OnInit, OnChanges, ControlValueAccessor\r\n{\r\n @Output() dateTimeSelected = new EventEmitter<any>();\r\n @Input() dateConfig!: DateConfig;\r\n @Input() minDate?: string;\r\n @Input() maxDate?: string;\r\n @Input() preSelectedValue: any;\r\n selectedDateTime: any;\r\n currentDate = new Date();\r\n currentMonth = this.currentDate.getMonth();\r\n currentYear = this.currentDate.getFullYear();\r\n selectedDate: number | null = null;\r\n selectedTime: string | null = null;\r\n calendar: number[][] = [];\r\n timeSlots: IRange[] = [];\r\n rangeStart: number | null = null;\r\n rangeEnd: number | null = null;\r\n selectedMonth: any;\r\n selectedYear: any;\r\n control!: AbstractControl<any, any>;\r\n disableControl: boolean = false;\r\n date: any = '';\r\n calendarView: string = 'defaultView';\r\n yearRange: number[] = [];\r\n daysInMonth: any[] = [];\r\n selectedDay: number = 0;\r\n selectedStartDate: any;\r\n selectedEndDate: any;\r\n isOpen: boolean = false;\r\n showYearSelector = false;\r\n monthRange: any = {\r\n '0': 'JAN',\r\n '01': 'FEB',\r\n '02': 'MAR',\r\n '03': 'APR',\r\n '04': 'MAY',\r\n '05': 'JUN',\r\n '06': 'JUL',\r\n '07': 'AUG',\r\n '08': 'SEP',\r\n '09': 'OCT',\r\n '10': 'NOV',\r\n '11': 'DEC',\r\n };\r\n constructor(\r\n @Inject(LOCALE_ID) private locale: string,\r\n private cd: ChangeDetectorRef,\r\n private datePipe: DatePipe,\r\n ) {}\r\n ngOnChanges(_changes: SimpleChanges): void {\r\n if (!_changes['selectedDateTime']?.currentValue) {\r\n this.selectedDateTime = [];\r\n } else {\r\n this.writeValue(this.control?.value);\r\n }\r\n }\r\n ngOnInit(): void {\r\n this.generateYearRange();\r\n // this.generateCalendar();\r\n this.generateTimeRanges();\r\n if (this.preSelectedValue) {\r\n this.initializeCalendar();\r\n }\r\n }\r\n\r\n private onTouchedCallback: () => void = () => {};\r\n private onChangeCallback: (_: any) => void = () => {};\r\n writeValue(value: any): void {\r\n if (value) {\r\n this.selectedDateTime = value;\r\n this.onChangeCallback(value);\r\n this.cd.markForCheck();\r\n }\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChangeCallback = fn;\r\n }\r\n registerOnTouched(fn: any): void {\r\n this.onTouchedCallback = fn;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n if (this.control) {\r\n isDisabled ? this.control.disable() : this.control.enable();\r\n }\r\n }\r\n /**\r\n * @description Validates date time picker component\r\n * @author Shiva Kant\r\n * @param control\r\n * @returns validate\r\n */\r\n validate(control: AbstractControl): ValidationErrors | null {\r\n this.control = control;\r\n\r\n const selected = this.date ? new Date(this.date) : null;\r\n\r\n if (control.hasError('required') && (!this.date || !this.selectedDay)) {\r\n return { required: true };\r\n }\r\n\r\n if (this.minDate && selected && selected < new Date(this.minDate)) {\r\n return { minDate: true };\r\n }\r\n\r\n if (this.maxDate && selected && selected > new Date(this.maxDate)) {\r\n return { maxDate: true };\r\n }\r\n\r\n return null;\r\n }\r\n\r\n /**\r\n * @description method to toggleCalendar\r\n * @author Shiva Kant\r\n */\r\n toggleCalendar(): void {\r\n this.isOpen = !this.isOpen;\r\n\r\n if (this.isOpen) {\r\n // If a date is already selected, open that month/year\r\n if (this.selectedDate != null) {\r\n this.currentDate = new Date(\r\n this.selectedYear,\r\n this.selectedMonth,\r\n this.selectedDate,\r\n );\r\n }\r\n this.updateCurrentYearMonth();\r\n this.generateCalendar();\r\n\r\n setTimeout(() => {\r\n const ele = document.getElementsByClassName('calendar-footer');\r\n ele[0]?.scrollIntoView();\r\n });\r\n }\r\n\r\n this.calendarView = 'defaultView';\r\n }\r\n\r\n /**\r\n * @description Closes calendar\r\n * @author Shiva Kant\r\n */\r\n closeCalendar(): void {\r\n this.isOpen = false;\r\n this.calendarView = 'defaultView';\r\n }\r\n /**\r\n * @description Method to Gets month year\r\n * @author Shiva Kant\r\n * @returns month year\r\n */\r\n getMonthYear(): { month: string; year: string } {\r\n return {\r\n month: this.currentDate.toLocaleString('default', {\r\n month: 'long',\r\n }),\r\n year: this.currentDate.toLocaleString('default', {\r\n year: 'numeric',\r\n }),\r\n };\r\n }\r\n\r\n /**\r\n * @description Method to Updates current year month\r\n * @author Shiva Kant\r\n */\r\n updateCurrentYearMonth(): void {\r\n this.currentYear = this.currentDate.getFullYear();\r\n this.currentMonth = this.currentDate.getMonth();\r\n }\r\n\r\n /**\r\n * @description Method to Selects year\r\n * @author Shiva Kant\r\n * @param year\r\n */\r\n selectYear(year: number): void {\r\n this.currentDate.setFullYear(year);\r\n this.updateCurrentYearMonth();\r\n this.showYearSelector = false;\r\n this.calendarView = 'defaultView';\r\n this.selectedDay = 0;\r\n this.generateCalendar();\r\n }\r\n\r\n /**\r\n * @description Method to Selects month\r\n * @author Shiva Kant\r\n * @param month\r\n */\r\n selectMonth(month: any): void {\r\n this.currentDate.setMonth(month);\r\n this.updateCurrentYearMonth();\r\n this.calendarView = 'defaultView';\r\n this.selectedDay = 0;\r\n this.generateCalendar();\r\n }\r\n\r\n /**\r\n * @description Method to Previous year range\r\n * @author Shiva Kant\r\n */\r\n previousYearRange(): void {\r\n this.yearRange = this.yearRange.map((year) => year - 18);\r\n }\r\n\r\n /**\r\n * @description Method to Next year range\r\n * @author Shiva Kant\r\n */\r\n nextYearRange(): void {\r\n this.yearRange = this.yearRange.map((year) => year + 18);\r\n }\r\n\r\n /**\r\n * @description Method to Toggles year selector\r\n * @author Shiva Kant\r\n */\r\n toggleYearSelector(): void {\r\n this.showYearSelector = !this.showYearSelector;\r\n this.generateYearRange();\r\n }\r\n /**\r\n * @description Method to Generates year range\r\n * @author Shiva Kant\r\n */\r\n generateYearRange(): void {\r\n const currentYear = this.currentDate.getFullYear();\r\n const startYear = currentYear - (currentYear % 20);\r\n this.yearRange = Array.from({ length: 18 }, (_, i) => startYear + i);\r\n }\r\n /**\r\n * @description Method to Determines whether date selectable is\r\n * @author Shiva Kant\r\n * @param date\r\n * @returns true if date selectable\r\n */\r\n isDateSelectable(date: Date): boolean {\r\n const min = this.minDate ? new Date(this.minDate) : null;\r\n const max = this.maxDate ? new Date(this.maxDate) : null;\r\n if (min && date < min) return false;\r\n if (max && date > max) return false;\r\n return true;\r\n }\r\n /**\r\n * @description Method to Determines whether day disabled is\r\n * @author Shiva Kant\r\n * @param day\r\n * @returns true if day disabled\r\n */\r\n isDayDisabled(day: number): boolean {\r\n const date = new Date(\r\n this.currentDate.getFullYear(),\r\n this.currentDate.getMonth(),\r\n day,\r\n );\r\n return !this.isDateSelectable(date);\r\n }\r\n /**\r\n * @description Method to Generates calendar\r\n * @author Shiva Kant\r\n */\r\n generateCalendar(): void {\r\n const year = this.currentDate.getFullYear();\r\n const month = this.currentDate.getMonth();\r\n\r\n const firstDayOfMonth = new Date(year, month, 1);\r\n const firstWeekDay = (firstDayOfMonth.getDay() + 6) % 7; // Convert Sunday (0) to 6, Monday is 0\r\n\r\n const daysInCurrentMonth = new Date(year, month + 1, 0).getDate();\r\n const daysInPreviousMonth = new Date(year, month, 0).getDate();\r\n\r\n const totalCells = 42; // 6 rows of 7 days\r\n const calendarDays: { day: number; date: Date; isCurrentMonth: boolean }[] =\r\n [];\r\n\r\n // Fill previous month days\r\n for (let i = firstWeekDay - 1; i >= 0; i--) {\r\n const day = daysInPreviousMonth - i;\r\n const date = new Date(year, month - 1, day);\r\n calendarDays.push({ day, date, isCurrentMonth: false });\r\n }\r\n\r\n // Fill current month days\r\n for (let day = 1; day <= daysInCurrentMonth; day++) {\r\n const date = new Date(year, month, day);\r\n calendarDays.push({ day, date, isCurrentMonth: true });\r\n }\r\n\r\n // Fill next month days\r\n const remaining = totalCells - calendarDays.length;\r\n for (let day = 1; day <= remaining; day++) {\r\n const date = new Date(year, month + 1, day);\r\n calendarDays.push({ day, date, isCurrentMonth: false });\r\n }\r\n\r\n this.daysInMonth = calendarDays;\r\n }\r\n\r\n /**\r\n * @description Method to Previous month\r\n * @author Shiva Kant\r\n */\r\n previousMonth(): void {\r\n this.currentDate.setMonth(this.currentDate.getMonth() - 1);\r\n this.updateCurrentYearMonth();\r\n this.selectedDay = 0;\r\n this.generateCalendar();\r\n }\r\n\r\n /**\r\n * @description Method to Next month\r\n * @author Shiva Kant\r\n */\r\n nextMonth(): void {\r\n this.currentDate.setMonth(this.currentDate.getMonth() + 1);\r\n this.updateCurrentYearMonth();\r\n this.selectedDay = 0;\r\n this.generateCalendar();\r\n }\r\n\r\n /**\r\n * @description Method to Initializes calendar when preSelectedValue date\r\n * @author Shiva Kant\r\n * @returns calendar\r\n */\r\n initializeCalendar(): void {\r\n if (!this.preSelectedValue) return;\r\n\r\n // Case 1: Single date (string or Date)\r\n if (\r\n typeof this.preSelectedValue === 'string' ||\r\n this.preSelectedValue instanceof Date\r\n ) {\r\n const date = new Date(this.preSelectedValue);\r\n this.selectedDate = date.getDate();\r\n this.selectedMonth = date.getMonth();\r\n this.selectedYear = date.getFullYear();\r\n this.selectedTime = this.formatTime(date);\r\n\r\n // Update current view to show the month/year\r\n this.currentDate = new Date(\r\n this.selectedYear,\r\n this.selectedMonth,\r\n this.selectedDate,\r\n );\r\n this.generateCalendar();\r\n }\r\n\r\n // Case 2: Range of dates\r\n else if (this.preSelectedValue.start && this.preSelectedValue.end) {\r\n const startDate = new Date(this.preSelectedValue.start);\r\n const endDate = new Date(this.preSelectedValue.end);\r\n\r\n // Patch component state\r\n this.rangeStart = startDate.getDate();\r\n this.rangeEnd = endDate.getDate();\r\n\r\n this.selectedStartDate = startDate;\r\n this.selectedEndDate = endDate;\r\n\r\n this.selectedMonth = startDate.getMonth();\r\n this.selectedYear = startDate.getFullYear();\r\n\r\n // Set the current calendar view to the start month/year\r\n this.currentDate = new Date(this.selectedYear, this.selectedMonth, 1);\r\n this.generateCalendar();\r\n\r\n // Optional: If your calendar requires a single selectedTime for range, you could pick start or end\r\n this.selectedTime = this.formatTime(startDate);\r\n\r\n // Emit initial range value\r\n this.emitDateTime();\r\n }\r\n }\r\n\r\n /**\r\n * @description Method to Selects date\r\n * @author Shiva Kant\r\n * @param date\r\n */\r\n selectDate(date: number): void {\r\n const selectedFullDate = new Date(\r\n this.currentYear,\r\n this.currentMonth,\r\n date,\r\n );\r\n selectedFullDate.setHours(0, 0, 0, 0);\r\n\r\n this.selectedMonth = this.currentMonth;\r\n this.selectedYear = this.currentYear;\r\n\r\n if (this.dateConfig.selectionMode === 'single') {\r\n this.selectedDate = date;\r\n this.rangeStart = null;\r\n this.rangeEnd = null;\r\n } else {\r\n if (!this.rangeStart || this.rangeEnd) {\r\n this.rangeStart = date;\r\n this.rangeEnd = null;\r\n } else {\r\n this.rangeEnd = date < this.rangeStart ? this.rangeStart : date;\r\n this.rangeStart = date < this.rangeStart ? date : this.rangeStart;\r\n }\r\n }\r\n\r\n this.emitDateTime();\r\n }\r\n\r\n /**\r\n * @description Method to Selects time\r\n * @author Shiva Kant\r\n * @param time\r\n */\r\n selectTime(time: string): void {\r\n this.selectedTime = time;\r\n this.emitDateTime();\r\n }\r\n /**\r\n * @description Method to Determines whether selected date is\r\n * @author Shiva Kant\r\n * @param date\r\n * @returns\r\n */\r\n isSelectedDate(date: number, month: number, year: number): boolean {\r\n if (this.dateConfig.selectionMode === 'single') {\r\n // Check if the day, month, and year match\r\n return (\r\n this.selectedDate === date &&\r\n this.selectedMonth === month &&\r\n this.selectedYear === year\r\n );\r\n } else if (this.dateConfig.selectionMode === 'range') {\r\n // Range selection checks, ensuring both start and end dates are within the same month and year\r\n return !!(\r\n (this.rangeStart &&\r\n this.rangeStart === date &&\r\n this.selectedMonth === month &&\r\n this.selectedYear === year) ||\r\n (this.rangeEnd &&\r\n this.rangeEnd === date &&\r\n this.selectedMonth === month &&\r\n this.selectedYear === year) ||\r\n (this.rangeStart &&\r\n this.rangeEnd &&\r\n date > this.rangeStart &&\r\n date < this.rangeEnd &&\r\n this.selectedMonth === month &&\r\n this.selectedYear === year)\r\n );\r\n }\r\n return false;\r\n }\r\n\r\n /**\r\n * @description Method to Generates time ranges\r\n * @author Shiva Kant\r\n */\r\n generateTimeRanges(): void {\r\n const startTime = new Date();\r\n startTime.setHours(0, 0, 0, 0);\r\n this.timeSlots = Array.from({ length: 48 }, (_, i) => {\r\n const time = new Date(startTime.getTime() + i * 30 * 60 * 1000);\r\n return { value: time, label: this.formatTime(time) };\r\n });\r\n }\r\n\r\n /**\r\n * @description Method to Formats time\r\n * @author Shiva Kant\r\n * @param date\r\n * @returns time\r\n */\r\n formatTime(date: Date): string {\r\n return date.toLocaleTimeString('en-US', {\r\n hour: '2-digit',\r\n minute: '2-digit',\r\n hour12: true,\r\n });\r\n }\r\n /**\r\n * @description Method to Formats date time\r\n * @author Shiva Kant\r\n * @param fullDate\r\n * @param selectedTime\r\n * @returns date time\r\n */\r\n formatDateTime(fullDate: Date, selectedTime: string | null): string {\r\n const date = new Date(fullDate);\r\n\r\n if (!selectedTime) {\r\n // Only date formatting when time not required\r\n return this.datePipe.transform(date, 'yyyy/MM/dd')!;\r\n }\r\n\r\n const [time, period] = selectedTime.split(' ');\r\n let [hours, minutes] = time.split(':').map(Number);\r\n\r\n // Convert 12-hour → 24-hour\r\n if (period === 'PM' && hours !== 12) hours += 12;\r\n if (period === 'AM' && hours === 12) hours = 0;\r\n\r\n date.setHours(hours, minutes, 0, 0);\r\n\r\n return this.datePipe.transform(date, 'yyyy/MM/dd hh:mm a')!;\r\n }\r\n\r\n /**\r\n * @description Method to Emits date time\r\n * @author Shiva Kant\r\n * @returns date time\r\n */\r\n emitDateTime(): void {\r\n if (this.dateConfig.enableTime && !this.selectedTime) {\r\n return; // wait until user selects time\r\n }\r\n if (this.dateConfig.selectionMode === 'single') {\r\n if (!this.selectedDate) return;\r\n\r\n const fullDate = new Date(\r\n this.selectedYear,\r\n this.selectedMonth,\r\n this.selectedDate,\r\n );\r\n\r\n this.selectedDateTime = this.formatDateTime(\r\n fullDate || '',\r\n this.dateConfig.enableTime ? this.selectedTime : null,\r\n );\r\n\r\n this.writeValue(this.selectedDateTime);\r\n // this.date = this.selectedDate;\r\n this.dateTimeSelected.emit(this.selectedDateTime);\r\n\r\n return;\r\n }\r\n if (this.dateConfig.selectionMode === 'range') {\r\n if (!this.rangeStart || !this.rangeEnd) return;\r\n\r\n const startDate = new Date(\r\n this.currentYear,\r\n this.currentMonth,\r\n this.rangeStart,\r\n );\r\n const endDate = new Date(\r\n this.currentYear,\r\n this.currentMonth,\r\n this.rangeEnd,\r\n );\r\n\r\n const startDateTime = this.formatDateTime(\r\n startDate,\r\n this.dateConfig.enableTime ? this.selectedTime : null,\r\n );\r\n const endDateTime = this.formatDateTime(\r\n endDate,\r\n this.dateConfig.enableTime ? this.selectedTime : null,\r\n );\r\n\r\n const rangeResult = { start: startDateTime, end: endDateTime };\r\n\r\n this.writeValue(rangeResult);\r\n this.dateTimeSelected.emit(rangeResult);\r\n }\r\n }\r\n}\r\n","<!-- Calendar -->\r\n\r\n<div\r\n class=\"calendar_wrapper\"\r\n catsOutsideClick\r\n (clickOutSide)=\"closeCalendar()\"\r\n [ngClass]=\"{ 'pe-none': disableControl }\"\r\n>\r\n <div class=\"date_box\" (click)=\"toggleCalendar()\">\r\n @if (dateConfig.selectionMode=='single') {\r\n\r\n <input\r\n type=\"text\"\r\n placeholder=\"Select Date\"\r\n [value]=\"selectedDateTime\"\r\n readonly\r\n [disabled]=\"disableControl\"\r\n />\r\n } @else {\r\n <input\r\n type=\"text\"\r\n placeholder=\"Select date Range\"\r\n [value]=\"\r\n selectedDateTime.start\r\n | date\r\n : 'MM/dd/yyyy' +\r\n ' - ' +\r\n (selectedDateTime.end | date : 'MM/dd/yyyy')\r\n \"\r\n readonly\r\n />\r\n }\r\n <!-- <i-feather name=\"calendar\" class=\"calendar_icon\"></i-feather> -->\r\n <img src=\"images/calendar.svg\" alt=\"\" />\r\n </div>\r\n @if (isOpen) {\r\n <div class=\"calendar-popup\">\r\n <!-- for the header -->\r\n <div class=\"calendar-header\">\r\n <span class=\"navigation-button\" (click)=\"previousMonth()\">\r\n <img src=\"images/chevron-left.svg\" alt=\"\" />\r\n <!-- <i-feather name=\"chevron-left\"></i-feather -->\r\n </span>\r\n <div class=\"month-year\">\r\n <span class=\"month\" (click)=\"calendarView = 'monthView'\">\r\n {{ getMonthYear().month }}</span\r\n >\r\n <span class=\"year\" (click)=\"calendarView = 'yearView'\">{{\r\n getMonthYear().year\r\n }}</span>\r\n </div>\r\n\r\n <span class=\"navigation-button\" (click)=\"nextMonth()\">\r\n <img src=\"images/chevron-right.svg\" alt=\"\" />\r\n\r\n <!-- <i-feather name=\"chevron-right\"></i-feather -->\r\n </span>\r\n </div>\r\n @if(calendarView === \"monthView\"){\r\n <div class=\"month-grid\">\r\n @for(month of monthRange | keyvalue; track $index){\r\n <span\r\n class=\"month\"\r\n (click)=\"selectMonth(month.key)\"\r\n [ngClass]=\"{ selected: month.key == currentDate.getMonth() }\"\r\n >{{ month.value }}</span\r\n >\r\n }\r\n </div>\r\n } @else if(calendarView === 'yearView'){\r\n <div class=\"year-selector\">\r\n <span class=\"navigation-button pointer\" (click)=\"previousYearRange()\">\r\n <img src=\"images/chevron-left.svg\" alt=\"\" />\r\n </span>\r\n <div class=\"year-grid\">\r\n @for(year of yearRange;track $index){\r\n <span\r\n class=\"year\"\r\n (click)=\"selectYear(year)\"\r\n [ngClass]=\"{ selected: year == currentDate.getFullYear() }\"\r\n >{{ year }}</span\r\n >\r\n }\r\n </div>\r\n <span class=\"navigation-button pointer\" (click)=\"nextYearRange()\">\r\n <img src=\"images/chevron-right.svg\" alt=\"\" />\r\n </span>\r\n </div>\r\n } @else {\r\n <div class=\"calendar_body\">\r\n <div class=\"calendar-grid\">\r\n <!-- Day names -->\r\n @for (day of ['Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa', 'Su']; track $index) {\r\n\r\n <div class=\"days_name\">\r\n {{ day }}\r\n </div>\r\n }\r\n\r\n <!-- Calendar dates -->\r\n @for (dayObj of daysInMonth; track $index) {\r\n <div\r\n class=\"calendar-day\"\r\n [ngClass]=\"{\r\n active:\r\n dayObj.isCurrentMonth &&\r\n dateConfig.selectionMode === 'single' &&\r\n isSelectedDate(\r\n dayObj.day,\r\n dayObj.date.getMonth(),\r\n dayObj.date.getFullYear()\r\n ),\r\n\r\n active_start:\r\n dayObj.isCurrentMonth &&\r\n dateConfig.selectionMode === 'range' &&\r\n isSelectedDate(\r\n dayObj.day,\r\n dayObj.date.getMonth(),\r\n dayObj.date.getFullYear()\r\n ) &&\r\n dayObj.day === rangeStart,\r\n\r\n active_end:\r\n dayObj.isCurrentMonth &&\r\n dateConfig.selectionMode === 'range' &&\r\n isSelectedDate(\r\n dayObj.day,\r\n dayObj.date.getMonth(),\r\n dayObj.date.getFullYear()\r\n ) &&\r\n dayObj.day === rangeEnd,\r\n\r\n range_between_active:\r\n dayObj.isCurrentMonth &&\r\n dateConfig.selectionMode === 'range' &&\r\n isSelectedDate(\r\n dayObj.day,\r\n dayObj.date.getMonth(),\r\n dayObj.date.getFullYear()\r\n ) &&\r\n rangeStart != null && rangeEnd != null &&\r\n dayObj.day > rangeStart &&\r\n dayObj.day < rangeEnd,\r\n\r\n other_month: !dayObj.isCurrentMonth,\r\n disabled: isDayDisabled(dayObj.day),\r\n notInCurrentMonth: !dayObj.isCurrentMonth\r\n }\"\r\n (click)=\"\r\n dayObj.isCurrentMonth &&\r\n !isDayDisabled(dayObj.day) &&\r\n selectDate(dayObj.day)\r\n \"\r\n >\r\n {{ dayObj.day }}\r\n </div>\r\n }\r\n </div>\r\n\r\n <!-- TIME SLOTS (only if showTime = true) -->\r\n @if (dateConfig.enableTime) {\r\n <div class=\"times\">\r\n @for (timeSlot of timeSlots; track $index) {\r\n <span\r\n class=\"span_time\"\r\n [ngClass]=\"{ active: selectedTime === timeSlot.label }\"\r\n (click)=\"selectTime(timeSlot.label)\"\r\n >\r\n {{ timeSlot.label }}\r\n </span>\r\n }\r\n </div>\r\n }\r\n </div>\r\n }\r\n </div>\r\n }\r\n</div>\r\n","import {\r\n Directive,\r\n ElementRef,\r\n HostListener,\r\n Input,\r\n Renderer2,\r\n OnDestroy,\r\n OnInit,\r\n} from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[catsUiTooltip]',\r\n})\r\nexport class CatsUiTooltipDirective implements OnInit, OnDestroy {\r\n @Input('catsUiTooltip') tooltipText = '';\r\n @Input() tooltipClass?: string = '';\r\n\r\n private tooltipEl!: HTMLElement;\r\n\r\n constructor(private el: ElementRef, private renderer: Renderer2) {}\r\n\r\n ngOnInit(): void {\r\n this.showTooltip();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.removeTooltip();\r\n }\r\n\r\n @HostListener('mouseenter')\r\n showTooltip() {\r\n this.createTooltip();\r\n this.positionTooltip();\r\n }\r\n\r\n @HostListener('mouseleave')\r\n hideTooltip() {\r\n this.removeTooltip();\r\n }\r\n\r\n @HostListener('window:resize')\r\n @HostListener('window:scroll')\r\n adjustOnWindowChange() {\r\n if (this.tooltipEl) this.positionTooltip();\r\n }\r\n\r\n /**\r\n * @description Creates tooltip\r\n * @author Shiva Kant\r\n * @returns\r\n */\r\n private createTooltip() {\r\n if (this.tooltipEl) return;\r\n\r\n this.tooltipEl = this.renderer.createElement('div');\r\n this.tooltipEl.innerText = this.tooltipText;\r\n\r\n this.renderer.setStyle(this.tooltipEl, 'position', 'fixed');\r\n // this.renderer.setStyle(this.tooltipEl, 'padding', '6px 10px');\r\n // this.renderer.setStyle(this.tooltipEl, 'background', '#ffffff');\r\n // this.renderer.setStyle(this.tooltipEl, 'color', '#434a51');\r\n // this.renderer.setStyle(this.tooltipEl, 'borderRadius', '4px');\r\n // this.renderer.setStyle(this.tooltipEl, 'zIndex', '9999');\r\n // this.renderer.setStyle(this.tooltipEl, 'whiteSpace', 'nowrap');\r\n // Add a custom class if provided\r\n if (this.tooltipClass) {\r\n this.renderer.addClass(this.tooltipEl, this.tooltipClass);\r\n } else {\r\n // Optionally, you can add a default class here\r\n this.renderer.addClass(this.tooltipEl, 'default-tooltip-class');\r\n }\r\n\r\n document.body.appendChild(this.tooltipEl);\r\n }\r\n\r\n /**\r\n * @description Removes tooltip\r\n * @author Shiva Kant\r\n */\r\n private removeTooltip() {\r\n if (this.tooltipEl) {\r\n this.tooltipEl.remove();\r\n this.tooltipEl = null as any;\r\n }\r\n }\r\n\r\n /**\r\n * @description Positions tooltip\r\n * @author Shiva Kant\r\n */\r\n private positionTooltip() {\r\n const hostRect = this.el.nativeElement.getBoundingClientRect();\r\n const tooltipRect = this.tooltipEl.getBoundingClientRect();\r\n\r\n const spacing = 8; // distance from host element\r\n\r\n const fitsAbove = hostRect.top >= tooltipRect.height + spacing;\r\n const fitsBelow =\r\n window.innerHeight - hostRect.bottom >= tooltipRect.height + spacing;\r\n const fitsLeft = hostRect.left >= tooltipRect.width + spacing;\r\n const fitsRight =\r\n window.innerWidth - hostRect.right >= tooltipRect.width + spacing;\r\n\r\n let top = 0;\r\n let left = 0;\r\n\r\n // Priority: bottom → top → right → left\r\n if (fitsBelow) {\r\n top = hostRect.bottom + spacing;\r\n left = hostRect.left + (hostRect.width - tooltipRect.width) / 2;\r\n } else if (fitsAbove) {\r\n top = hostRect.top - tooltipRect.height - spacing;\r\n left = hostRect.left + (hostRect.width - tooltipRect.width) / 2;\r\n } else if (fitsRight) {\r\n top = hostRect.top + (hostRect.height - tooltipRect.height) / 2;\r\n left = hostRect.right + spacing;\r\n } else if (fitsLeft) {\r\n top = hostRect.top + (hostRect.height - tooltipRect.height) / 2;\r\n left = hostRect.left - tooltipRect.width - spacing;\r\n } else {\r\n // fallback → bottom with clamped position\r\n top = hostRect.bottom + spacing;\r\n left = Math.min(\r\n Math.max(10, hostRect.left),\r\n window.innerWidth - tooltipRect.width - 10\r\n );\r\n }\r\n\r\n this.renderer.setStyle(this.tooltipEl, 'top', `${top}px`);\r\n this.renderer.setStyle(this.tooltipEl, 'left', `${left}px`);\r\n }\r\n}\r\n","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'cats-ui-accordion',\r\n imports: [],\r\n templateUrl: './accordion.component.html',\r\n styleUrl: './accordion.component.scss',\r\n})\r\nexport class AccordionComponent {\r\n openedIndex: number | null = null;\r\n\r\n /**\r\n * @description Toggles accordion component\r\n * @author Shiva Kant\r\n * @param index \r\n */\r\n toggle(index: number): void {\r\n this.openedIndex = this.openedIndex === index ? null : index;\r\n }\r\n\r\n /**\r\n * @description Determines whether open is\r\n * @author Shiva Kant\r\n * @param index \r\n * @returns true if open \r\n */\r\n isOpen(index: number): boolean {\r\n return this.openedIndex === index;\r\n }\r\n}\r\n","<div class=\"accordion\">\r\n <ng-content></ng-content> <!-- Will contain AccordionItem components -->\r\n</div>\r\n","import {\r\n Component,\r\n ContentChild,\r\n Inject,\r\n Input,\r\n TemplateRef,\r\n} from '@angular/core';\r\nimport { AccordionComponent } from '../accordion.component';\r\nimport { CommonModule } from '@angular/common';\r\n\r\n@Component({\r\n selector: 'cats-ui-accordion-item',\r\n imports: [CommonModule],\r\n templateUrl: './accordion-item.component.html',\r\n styleUrl: './accordion-item.component.scss',\r\n})\r\nexport class AccordionItemComponent {\r\n @Input() title: string = '';\r\n @Input() index: number = 0;\r\n\r\n // Change this to allow null instead of undefined\r\n @ContentChild(TemplateRef) contentTemplate: TemplateRef<any> | null = null;\r\n\r\n constructor(\r\n @Inject(AccordionComponent) private accordion: AccordionComponent\r\n ) {}\r\n\r\n /**\r\n * @description Determines whether open is\r\n * @author Shiva Kant\r\n * @returns true if open\r\n */\r\n isOpen(): boolean {\r\n return this.accordion.isOpen(this.index);\r\n }\r\n\r\n /**\r\n * @description Toggles accordion item component\r\n * @author Shiva Kant\r\n */\r\n toggle(): void {\r\n this.accordion.toggle(this.index);\r\n }\r\n\r\n /**\r\n * @description perform any initialization after content is injected\r\n * @author Shiva Kant\r\n */\r\n ngAfterContentInit(): void {\r\n if (!this.contentTemplate) {\r\n console.error(\r\n 'No content template provided for accordion item:',\r\n this.title\r\n );\r\n }\r\n }\r\n}\r\n","<div class=\"accordion-item\">\r\n <div class=\"accordion-header\" (click)=\"toggle()\">\r\n <h3>{{ title }}</h3>\r\n <img\r\n [src]=\"isOpen() ? 'images/chevron-up.svg' : 'images/chevron-down.svg'\"\r\n alt=\"\"\r\n />\r\n </div>\r\n\r\n <div class=\"accordion-body\" [class.open]=\"isOpen()\">\r\n <ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container>\r\n </div>\r\n</div>\r\n","import { Directive, TemplateRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[tabContent]',\r\n standalone: true,\r\n})\r\nexport class TabContentDirective {\r\n constructor(public template: TemplateRef<any>) {}\r\n}\r\n","import { Directive, TemplateRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[tabHeading]',\r\n standalone: true\r\n})\r\nexport class TabHeadingDirective {\r\n constructor(public template: TemplateRef<any>) {}\r\n}\r\n","import { Component, ContentChild } from '@angular/core';\r\nimport { TabContentDirective } from '../../tab-content.directive';\r\nimport { TabHeadingDirective } from '../../tab-heading.directive';\r\n\r\n@Component({\r\n selector: 'cats-ui-tab-item',\r\n imports: [],\r\n templateUrl: './tab-item.component.html',\r\n styleUrl: './tab-item.component.scss',\r\n})\r\nexport class TabItemComponent {\r\n @ContentChild(TabHeadingDirective) heading!: TabHeadingDirective;\r\n @ContentChild(TabContentDirective) content!: TabContentDirective;\r\n}\r\n","<p>tab-item works!</p>\r\n","import {\r\n Component,\r\n Input,\r\n Output,\r\n EventEmitter,\r\n ContentChildren,\r\n QueryList,\r\n} from '@angular/core';\r\nimport { TabItemComponent } from './tab-item/tab-item.component';\r\nimport { CommonModule } from '@angular/common';\r\n\r\n@Component({\r\n selector: 'cats-ui-tab',\r\n templateUrl: './tab.component.html',\r\n styleUrls: ['./tab.component.scss'],\r\n imports: [CommonModule],\r\n})\r\nexport class TabComponent {\r\n @Input() activeTab = 0;\r\n @Input() disabledTabs: number[] = [];\r\n\r\n @Output() selectTab: EventEmitter<number> = new EventEmitter<number>();\r\n\r\n @ContentChildren(TabItemComponent) items!: QueryList<TabItemComponent>;\r\n\r\n /**\r\n * @description Sets active\r\n * @author Shiva Kant\r\n * @param index \r\n */\r\n setActive(index: number) {\r\n if (!this.disabledTabs.includes(index)) {\r\n this.activeTab = index;\r\n this.selectTab.emit(index); \r\n }\r\n }\r\n}\r\n","<ul class=\"tab-header\">\r\n @for (item of items; track $index) {\r\n <ng-container>\r\n <li\r\n class=\"tab-item\"\r\n [class.active]=\"activeTab === $index\"\r\n [class.disabled]=\"disabledTabs.includes($index)\"\r\n (click)=\"setActive($index)\"\r\n >\r\n <ng-container *ngTemplateOutlet=\"item.heading.template\"></ng-container>\r\n </li>\r\n </ng-container>\r\n\r\n }\r\n</ul>\r\n\r\n<div class=\"tab-content\">\r\n @for (item of items; track $index) {\r\n <ng-container>\r\n @if (activeTab === $index) {\r\n <ng-container *ngTemplateOutlet=\"item.content.template\"></ng-container>\r\n }\r\n </ng-container>\r\n }\r\n</div>\r\n","/*\r\n * Public API Surface of cats-ui\r\n */\r\n\r\nexport * from './lib/services/cats-ui.service';\r\nexport * from './lib/components/input';\r\nexport * from './lib/components/single-select';\r\nexport * from './lib/components/multi-select';\r\nexport * from './lib/components/search-box';\r\nexport * from './lib/components/auto-complete-single-select';\r\nexport * from './lib/directives/outside-click.directive'\r\nexport * from './lib/components/auto-complete-multi-select';\r\nexport * from './lib/modal/cats-ui.modal';\r\nexport * from './lib/components/toogle-button';\r\nexport * from './lib/components/checkbox-button';\r\nexport * from './lib/components/radio-button';\r\nexport * from './lib/components/date-time-picker';\r\nexport * from './lib/directives/cats-ui-tooltip.directive';\r\nexport * from './lib/components/accordion';\r\nexport * from './lib/components/tabs';\r\n\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","noop"],"mappings":"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"}
|