mis-crystal-design-system 18.1.8 → 18.1.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"mis-crystal-design-system-filter.mjs","sources":["../../../projects/mis-components/filter/animations/slideFromRight.ts","../../../projects/mis-components/filter/has-value.pipe.ts","../../../projects/mis-components/filter/filter-panel/filter-panel.component.html","../../../projects/mis-components/filter/filter-panel/filter-panel.component.ts","../../../projects/mis-components/filter/filters.module.ts","../../../projects/mis-components/filter/mis-crystal-design-system-filter.ts"],"sourcesContent":["import { trigger, style, animate, transition } from '@angular/animations';\n\nexport const slideFromRight = trigger('slideFromRight', [\n transition(':enter', [\n style({ transform: 'translateX(100%)' }),\n animate('200ms cubic-bezier(0.4, 0.0, 0.2, 1)', style({ transform: 'translateX(0)' }))\n ]),\n\n transition(':leave', [\n style({ transform: 'translateX(0)' }),\n animate('200ms cubic-bezier(0.4, 0.0, 0.2, 1)', style({ transform: 'translateX(100%)' }))\n ])\n]);\n","import { Pipe, PipeTransform } from '@angular/core';\n\n/**\n * HasValuePipe\n * This pipe is use to check given value should not null or undefined \n * Its also check object, Its hould not be empty\n */\n@Pipe({\n name: 'hasValue',\n})\nexport class HasValuePipe implements PipeTransform {\n transform(value: any): any {\n if (Array.isArray(value) && value.length === 0) {\n return false;\n }\n /* This was evaluating dateObject as false*/\n if (value instanceof Date) {\n return true;\n }\n if (typeof value === 'object' && value !== null) {\n return Object.keys(value).length >= 1;\n }\n return value !== null && value !== undefined && value !== '';\n }\n}\n","<div class=\"filter-panel-container\" *ngIf=\"show()\" @slideFromRight>\n <div class=\"panel-header\">\n <span>Filters</span>\n <svg class=\"close-icon\" (click)=\"closePanel()\" width=\"25\" height=\"25\" viewBox=\"0 0 25 25\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g id=\"ic-navigation-cancel-24\">\n <path id=\"Union\" fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M8.60468 6.64355C8.09036 6.12923 7.25649 6.12923 6.74218 6.64355C6.22787 7.15786 6.22787 7.99173 6.74218 8.50604L10.4938 12.2576L6.7431 16.0083C6.22879 16.5226 6.22879 17.3564 6.7431 17.8708C7.25742 18.3851 8.09129 18.3851 8.60560 17.8708L12.3562 14.1201L16.1068 17.8707C16.6211 18.3850 17.4550 18.3850 17.9693 17.8707C18.4836 17.3564 18.4836 16.5225 17.9693 16.0082L14.2187 12.2576L17.9702 8.50613C18.4845 7.99181 18.4845 7.15794 17.9702 6.64363C17.4559 6.12932 16.6220 6.12932 16.1077 6.64363L12.3562 10.3951L8.60468 6.64355Z\" fill=\"#181F33\" />\n </g>\n </svg>\n </div>\n\n <div class=\"horizontal-divider first\"></div>\n\n <div class=\"filters\" [formGroup]=\"filterForm\">\n <ng-container *ngFor=\"let filter of config(); let last = last\">\n <div class=\"filter\" *ngIf=\"!filter.hidden\">\n <span class=\"filter-title\">{{filter.title}}</span>\n <ng-container *ngIf=\"filter.type === 'multiSelect'\">\n <div class=\"multiselect-filter\">\n <mis-multi-select-dropdown class=\"no-padding\" [label]=\"filter.placeholder || 'Select'\" [selectedItems]=\"filterForm.get(filter.key).value\" (onChange)=\"handleSelect($event, filter.key, filter)\" [data]=\"filter.options\" [searchEnabled]=\"true\"\n [showSelectedCount]=\"true\" [enableSelectAll]=\"true\"\n [hideApplyButton]=\"false\" width=\"100%\" height=\"44px\"></mis-multi-select-dropdown>\n </div>\n </ng-container>\n <ng-container *ngIf=\"filter.type === 'select'\">\n <div class=\"multiselect-filter\">\n <mis-dropdown [data]=\"filter.options\" [searchEnabled]=\"true\" width=\"100%\" height=\"44px\"\n (onChange)=\"handleSelect($event, filter.key, filter)\" [selectedItem]=\"filterForm.get(filter.key).value\">\n </mis-dropdown>\n </div>\n </ng-container>\n <ng-container *ngIf=\"filter.type === 'checkbox'\">\n <div class=\"checkbox-row\">\n <div *ngFor=\"let option of filter.options\" class=\"checkbox-container\">\n <mis-checkbox [type]=\"'Default'\" [checked]=\"filterForm.get(filter.key).value?.includes(option.value)\" (valueChange)=\"handleCheckbox($event, filter.key, option.value, filter)\"></mis-checkbox>\n <span class=\"checkbox-label\">{{option.label}}</span>\n </div>\n </div>\n </ng-container>\n <ng-container *ngIf=\"filter.type === 'datePicker'\">\n {{filter.placeholder}}\n <mis-input type=\"rounded\">\n <input misTzDp misInput type=\"text\" readonly class=\"mis-input\" [dpConfig]=\"filter.datepickerConfig\" [placeholder]=\"filterForm.get(filter.key).value ? filterForm.get(filter.key).value : (filter.placeholder || 'Select')\" [value]=\"filterForm.get(filter.key).value ? filterForm.get(filter.key).value : (filter.placeholder || 'Select')\" (dateChange)=\"onDateChange($event, filter.key, filter)\" [selectedDate]=\"filterForm.get(filter.key).value\" [positionX]=\"'end'\" [offsetX]=\"-10\">\n </mis-input>\n </ng-container>\n <ng-container *ngIf=\"filter.type === 'dateRangePicker'\">\n <mis-input type=\"rounded\">\n <input misTzDrp misInput type=\"text\" class=\"mis-input\" readonly\n [placeholder]=\"(!dateRangeSelectedDates().startDate && !dateRangeSelectedDates().endDate) ? (filter.placeholder || 'Select') : dateRangeSelectedDates().startDate + ' - ' + dateRangeSelectedDates().endDate\"\n [value]=\"(!dateRangeSelectedDates().startDate && !dateRangeSelectedDates().endDate) ? (filter.placeholder || 'Select') : dateRangeSelectedDates().startDate + ' - ' + dateRangeSelectedDates().endDate\" [positionX]=\"'start'\"\n [positionY]=\"'top'\" [selectedDates]=\"dateRangeSelectedDates()\" (dateChange)=\"onDateChange($event, filter.key, filter)\"\n [dpConfig]=\"filter.dateRangePickerConfig\" />\n </mis-input>\n </ng-container>\n <ng-container *ngIf=\"filter.type === 'text'\">\n <mis-input type=\"rounded\">\n <input misInput type=\"text\" class=\"input\" [placeholder]=\"filter.placeholder || 'Type here'\" [formControlName]=\"filter.key\">\n </mis-input>\n </ng-container>\n <ng-container *ngIf=\"filter.type === 'number'\">\n <mis-input type=\"rounded\">\n <input misInput type=\"number\" class=\"input\" [placeholder]=\"filter.placeholder || 'Type here'\" [formControlName]=\"filter.key\">\n </mis-input>\n </ng-container>\n <ng-container *ngIf=\"filter.type === 'range'\">\n <div class=\"range-container\" [formGroup]=\"filterForm.get(filter.key)\">\n <div class=\"range-inner-container\">\n <span>{{ filter?.options?.[0]?.label || 'Min' }}</span>\n <input\n misInput\n type=\"number\"\n class=\"input\"\n [placeholder]=\"filter.placeholder || 'Type here'\"\n formControlName=\"min\"\n />\n </div>\n <div class=\"range-inner-container\">\n <span>{{ filter?.options?.[1]?.label || 'Max' }}</span>\n <input\n misInput\n type=\"number\"\n class=\"input\"\n [placeholder]=\"filter.placeholder || 'Type here'\"\n formControlName=\"max\"\n [min]=\"filterForm.get?.(filter.key)?.get('min')?.value || 0\"\n />\n </div>\n </div>\n </ng-container>\n <div class=\"horizontal-divider\" *ngIf=\"!last\"></div>\n </div>\n </ng-container>\n </div>\n\n <div class=\"actions\">\n <mis-button [name]=\"'Clear All'\" [size]=\"'Small'\" [type]=\"'Text'\" (click)=\"resetFilters()\"></mis-button>\n <mis-button [name]=\"'Apply'\" [size]=\"'Small'\" [type]=\"'Solid'\" (click)=\"applyFilters()\" [disabled]=\"filterForm.invalid\"></mis-button>\n </div>\n</div>\n\n","import { Component, OnInit, signal, WritableSignal, computed, input, output } from '@angular/core';\nimport { slideFromRight } from '../animations/slideFromRight';\nimport { FormControl, FormGroup } from '@angular/forms';\nimport { IDatePickerConfig } from 'mis-crystal-design-system/datepicker_v2';\nimport { IRSelectedDatesConfig } from 'mis-crystal-design-system/specificdatepicker';\nimport { IDatePickerConfig as IDateRangePickerConfig } from \"mis-crystal-design-system/daterangepicker_v2\";\nimport { HasValuePipe } from '../has-value.pipe';\n\n\nexport interface FilterPanelConfig {\n key: string;\n title: string;\n type: 'multiSelect' | 'select' | 'datePicker' | 'dateRangePicker' | 'checkbox' | 'radio' | 'text' | 'number' | 'range';\n options?: Array<{\n label: string;\n value: string;\n data?: any[];\n }>;\n placeholder?: string;\n hidden?: boolean;\n datePickerConfig?: IDatePickerConfig;\n dateRangePickerConfig?: IDateRangePickerConfig;\n onChange?: (event: any, config?: FilterPanelConfig[], formValue?: any) => void;\n defaultValue?: any;\n selectedValue?: any;\n}\n\n@Component({\n selector: 'mis-filter-panel',\n templateUrl: './filter-panel.component.html',\n styleUrls: ['./filter-panel.component.scss'],\n animations: [slideFromRight]\n})\nexport class FilterPanelComponent implements OnInit {\n constructor(private hasValue: HasValuePipe) {}\n\n // Signal inputs replacing @Input()\n public show = input<boolean>(false);\n public config = input.required<FilterPanelConfig[]>();\n public emitFiltersAfterSettingNewValues = input<boolean>(false);\n\n // Signal outputs replacing @Output()\n public onClose = output();\n public onApply = output<{ filterData: any, filterCount: number }>();\n\n filterForm: FormGroup = new FormGroup({});\n lastAppliedData: any;\n\n public dateRangeSelectedDates: WritableSignal<IRSelectedDatesConfig> = signal({\n startDate: '',\n endDate: '',\n });\n\n // Method to calculate filter count (not a computed signal because form values aren't reactive)\n getFilterCount(): number {\n let count = 0;\n const formValue = this.filterForm.value;\n \n this.config().forEach((filter: FilterPanelConfig) => {\n const value = formValue[filter.key];\n \n // Special handling for range type - only count if at least one value is set\n if (filter.type === 'range') {\n if (value && (value.min !== null || value.max !== null)) {\n count++;\n }\n return;\n }\n \n // Special handling for multiSelect/checkbox - check array length directly\n if (filter.type === 'multiSelect' || filter.type === 'checkbox') {\n if (Array.isArray(value) && value.length > 0) {\n count++;\n }\n return;\n }\n \n // For other types, use hasValue pipe\n if (this.hasValue.transform(value)) {\n count++;\n }\n });\n \n return count;\n }\n\n ngOnInit() {\n // Access the config signal value by calling it like a function\n this.initializeFormControls(this.config());\n }\n\n initializeFormControls(config: FilterPanelConfig[]) {\n this.filterForm = new FormGroup({});\n config.forEach((filter: FilterPanelConfig) => {\n let control: any;\n if (filter.type === 'range') {\n control = new FormGroup({\n min: new FormControl(null),\n max: new FormControl(null),\n }, {\n validators: (group: FormGroup) => {\n const min = group.get('min').value;\n const max = group.get('max').value;\n if (min !== null && max !== null && min > max) {\n return { rangeError: 'Min value should be less than max value' };\n }\n return null;\n }\n });\n } else if (filter.type === 'multiSelect' || filter.type === 'checkbox') {\n control = new FormControl([]);\n } else if (filter.type === 'select') {\n control = new FormControl('');\n } else {\n control = new FormControl(null);\n }\n if (this.hasValue.transform(filter.defaultValue)) {\n control.setValue(filter.defaultValue);\n }\n this.filterForm.addControl(filter.key, control);\n });\n }\n\n closePanel() {\n if (this.lastAppliedData) {\n this.filterForm.setValue(this.lastAppliedData);\n } else {\n this.clearFormValues();\n }\n // Emit the close event using the signal output\n this.onClose.emit();\n }\n\n applyFilters() {\n if (this.filterForm.invalid) {\n this.filterForm.markAllAsTouched();\n return;\n }\n \n this.lastAppliedData = { ...this.filterForm.value };\n // Emit the apply event with the filter data using the signal output\n this.onApply.emit({\n filterData: this.filterForm.value,\n filterCount: this.getFilterCount()\n });\n this.closePanel();\n }\n\n handleSelect(event: any, filterKey: string, filter: FilterPanelConfig) {\n this.filterForm.get(filterKey).setValue(event);\n if (filter.onChange) {\n filter.onChange(event, this.config(), this.filterForm.value);\n }\n }\n\n onDateChange(event: any, filterKey: string, filter: FilterPanelConfig) {\n this.filterForm.get(filterKey).setValue(event);\n if (typeof event === 'object') {\n this.dateRangeSelectedDates.set({\n startDate: event.startDate,\n endDate: event.endDate,\n });\n }\n }\n\n handleCheckbox(event: any, filterKey: string, checkboxValue: string, filter: FilterPanelConfig) {\n const currentValues = this.filterForm.get(filterKey).value;\n if (event.value) {\n this.filterForm.get(filterKey).setValue([...currentValues, checkboxValue]);\n } else {\n this.filterForm.get(filterKey).setValue(currentValues.filter((value: string) => value !== checkboxValue));\n }\n if (filter.onChange) {\n filter.onChange(event, this.config(), this.filterForm.value);\n }\n }\n\n clearFormValues() {\n const resetValues: any = {};\n this.config().forEach((filter: FilterPanelConfig) => {\n let defaultValue: any = filter.defaultValue || null;\n if (filter.type === 'multiSelect' || filter.type === 'checkbox') {\n defaultValue = filter.defaultValue || [];\n }\n if (filter.type === 'range') {\n defaultValue = filter.defaultValue || { min: null, max: null };\n }\n resetValues[filter.key] = defaultValue;\n });\n this.filterForm.patchValue(resetValues);\n }\n\n resetFilters() {\n this.clearFormValues();\n this.applyFilters();\n }\n\n setFilterValue(config: FilterPanelConfig[]) {\n let anyValueSet = false;\n for (const filter of config) {\n if (filter?.selectedValue) {\n this.filterForm.get(filter.key).setValue(filter.selectedValue);\n anyValueSet = true;\n }\n }\n if (anyValueSet && this.emitFiltersAfterSettingNewValues()) {\n this.applyFilters();\n }\n }\n}\n\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { ButtonModule } from 'mis-crystal-design-system/button';\nimport { RadioButtonModule } from 'mis-crystal-design-system/radio-button';\nimport { MisInputModule } from \"mis-crystal-design-system/input\";\nimport { CheckboxModule } from 'mis-crystal-design-system/checkbox';\nimport { MultiSelectDropdownModule } from 'mis-crystal-design-system/multi-select-dropdown';\nimport { DatepickerModuleV2 } from 'mis-crystal-design-system/datepicker_v2';\nimport { DateRangepickerModuleV2 } from 'mis-crystal-design-system/daterangepicker_v2';\nimport { FilterPanelComponent } from './filter-panel/filter-panel.component';\nimport { HasValuePipe } from './has-value.pipe';\nimport { DropdownModule } from 'mis-crystal-design-system/dropdown';\n\n@NgModule({\n imports: [\n CommonModule,\n ButtonModule,\n FormsModule,\n ReactiveFormsModule,\n MultiSelectDropdownModule,\n DropdownModule,\n RadioButtonModule,\n MisInputModule,\n DatepickerModuleV2,\n DateRangepickerModuleV2,\n CheckboxModule\n ],\n declarations: [FilterPanelComponent, HasValuePipe],\n providers: [\n HasValuePipe\n ],\n exports: [FilterPanelComponent]\n})\nexport class FiltersModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.HasValuePipe"],"mappings":"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"}
1
+ {"version":3,"file":"mis-crystal-design-system-filter.mjs","sources":["../../../projects/mis-components/filter/animations/slideFromRight.ts","../../../projects/mis-components/filter/has-value.pipe.ts","../../../projects/mis-components/filter/filter-panel/filter-panel.component.html","../../../projects/mis-components/filter/filter-panel/filter-panel.component.ts","../../../projects/mis-components/filter/filters.module.ts","../../../projects/mis-components/filter/mis-crystal-design-system-filter.ts"],"sourcesContent":["import { trigger, style, animate, transition } from '@angular/animations';\n\nexport const slideFromRight = trigger('slideFromRight', [\n transition(':enter', [\n style({ transform: 'translateX(100%)' }),\n animate('200ms cubic-bezier(0.4, 0.0, 0.2, 1)', style({ transform: 'translateX(0)' }))\n ]),\n\n transition(':leave', [\n style({ transform: 'translateX(0)' }),\n animate('200ms cubic-bezier(0.4, 0.0, 0.2, 1)', style({ transform: 'translateX(100%)' }))\n ])\n]);\n","import { Pipe, PipeTransform } from '@angular/core';\n\n/**\n * HasValuePipe\n * This pipe is use to check given value should not null or undefined \n * Its also check object, Its hould not be empty\n */\n@Pipe({\n name: 'hasValue',\n})\nexport class HasValuePipe implements PipeTransform {\n transform(value: any): any {\n if (Array.isArray(value) && value.length === 0) {\n return false;\n }\n /* This was evaluating dateObject as false*/\n if (value instanceof Date) {\n return true;\n }\n if (typeof value === 'object' && value !== null) {\n return Object.keys(value).length >= 1;\n }\n return value !== null && value !== undefined && value !== '';\n }\n}\n","<div class=\"filter-panel-container\" *ngIf=\"show()\" @slideFromRight>\n <div class=\"panel-header\">\n <span>Filters</span>\n <svg class=\"close-icon\" (click)=\"closePanel()\" width=\"25\" height=\"25\" viewBox=\"0 0 25 25\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g id=\"ic-navigation-cancel-24\">\n <path id=\"Union\" fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M8.60468 6.64355C8.09036 6.12923 7.25649 6.12923 6.74218 6.64355C6.22787 7.15786 6.22787 7.99173 6.74218 8.50604L10.4938 12.2576L6.7431 16.0083C6.22879 16.5226 6.22879 17.3564 6.7431 17.8708C7.25742 18.3851 8.09129 18.3851 8.60560 17.8708L12.3562 14.1201L16.1068 17.8707C16.6211 18.3850 17.4550 18.3850 17.9693 17.8707C18.4836 17.3564 18.4836 16.5225 17.9693 16.0082L14.2187 12.2576L17.9702 8.50613C18.4845 7.99181 18.4845 7.15794 17.9702 6.64363C17.4559 6.12932 16.6220 6.12932 16.1077 6.64363L12.3562 10.3951L8.60468 6.64355Z\" fill=\"#181F33\" />\n </g>\n </svg>\n </div>\n \n <div class=\"horizontal-divider first\"></div>\n \n <div class=\"filters\" [formGroup]=\"filterForm\">\n <ng-container *ngFor=\"let filter of config(); let last = last\">\n <div class=\"filter\" *ngIf=\"!filter.hidden\">\n <span class=\"filter-title\">{{filter.title}}</span>\n <ng-container *ngIf=\"filter.type === 'multiSelect'\">\n <div class=\"multiselect-filter\">\n <mis-multi-select-dropdown class=\"no-padding\" [label]=\"filter.placeholder || 'Select'\" [selectedItems]=\"filterForm.get(filter.key)?.value || []\" (onChange)=\"handleSelect($event, filter.key, filter)\" [data]=\"filter.options\" [searchEnabled]=\"true\"\n [showSelectedCount]=\"true\" [enableSelectAll]=\"true\"\n [hideApplyButton]=\"false\" width=\"100%\" height=\"44px\"></mis-multi-select-dropdown>\n </div>\n </ng-container>\n <ng-container *ngIf=\"filter.type === 'select'\">\n <div class=\"multiselect-filter\">\n <mis-dropdown [data]=\"filter.options\" [searchEnabled]=\"true\" width=\"100%\" height=\"44px\"\n (onChange)=\"handleSelect($event, filter.key, filter)\" [selectedItem]=\"filterForm.get(filter.key)?.value\">\n </mis-dropdown>\n </div>\n </ng-container>\n <ng-container *ngIf=\"filter.type === 'checkbox'\">\n <div class=\"checkbox-row\">\n <div *ngFor=\"let option of filter.options\" class=\"checkbox-container\">\n <mis-checkbox [type]=\"'Default'\" [checked]=\"filterForm.get(filter.key)?.value?.includes(option.value)\" (valueChange)=\"handleCheckbox($event, filter.key, option.value, filter)\"></mis-checkbox>\n <span class=\"checkbox-label\">{{option.label}}</span>\n </div>\n </div>\n </ng-container>\n <ng-container *ngIf=\"filter.type === 'datePicker'\">\n <mis-input type=\"rounded\">\n <input misTzDp misInput type=\"text\" readonly class=\"mis-input\" [dpConfig]=\"filter.datePickerConfig\" [placeholder]=\"filterForm.get(filter.key)?.value || filter.placeholder || 'Select'\" [value]=\"filterForm.get(filter.key)?.value || filter.placeholder || 'Select'\" (dateChange)=\"onDateChange($event, filter.key, filter)\" [selectedDate]=\"filterForm.get(filter.key)?.value\" [positionX]=\"'end'\" [offsetX]=\"-10\">\n </mis-input>\n </ng-container>\n <ng-container *ngIf=\"filter.type === 'dateRangePicker'\">\n <mis-input type=\"rounded\">\n <input misTzDrp misInput type=\"text\" class=\"mis-input\" readonly\n [placeholder]=\"(!dateRangeSelectedDates().startDate && !dateRangeSelectedDates().endDate) ? (filter.placeholder || 'Select') : dateRangeSelectedDates().startDate + ' - ' + dateRangeSelectedDates().endDate\"\n [value]=\"(!dateRangeSelectedDates().startDate && !dateRangeSelectedDates().endDate) ? (filter.placeholder || 'Select') : dateRangeSelectedDates().startDate + ' - ' + dateRangeSelectedDates().endDate\" [positionX]=\"'start'\"\n [positionY]=\"'top'\" [selectedDates]=\"dateRangeSelectedDates()\" (dateChange)=\"onDateChange($event, filter.key, filter)\"\n [dpConfig]=\"filter.dateRangePickerConfig\" />\n </mis-input>\n </ng-container>\n <ng-container *ngIf=\"filter.type === 'text'\">\n <mis-input type=\"rounded\">\n <input misInput type=\"text\" class=\"input\" [placeholder]=\"filter.placeholder || 'Type here'\" [formControlName]=\"filter.key\">\n </mis-input>\n </ng-container>\n <ng-container *ngIf=\"filter.type === 'number'\">\n <mis-input type=\"rounded\">\n <input misInput type=\"number\" class=\"input\" [placeholder]=\"filter.placeholder || 'Type here'\" [formControlName]=\"filter.key\">\n </mis-input>\n </ng-container>\n <ng-container *ngIf=\"filter.type === 'range'\">\n <div class=\"range-container\" [formGroup]=\"filterForm.get(filter.key)\">\n <div class=\"range-inner-container\">\n <span>{{ filter?.options?.[0]?.label || 'Min' }}</span>\n <input\n misInput\n type=\"number\"\n class=\"input\"\n [placeholder]=\"filter.placeholder || 'Type here'\"\n formControlName=\"min\"\n />\n </div>\n <div class=\"range-inner-container\">\n <span>{{ filter?.options?.[1]?.label || 'Max' }}</span>\n <input\n misInput\n type=\"number\"\n class=\"input\"\n [placeholder]=\"filter.placeholder || 'Type here'\"\n formControlName=\"max\"\n [min]=\"filterForm.get(filter.key)?.get('min')?.value || 0\"\n />\n </div>\n </div>\n </ng-container>\n <div class=\"horizontal-divider\" *ngIf=\"!last\"></div>\n </div>\n </ng-container>\n </div>\n \n <div class=\"actions\">\n <mis-button [name]=\"'Clear All'\" [size]=\"'Small'\" [type]=\"'Text'\" (click)=\"resetFilters()\"></mis-button>\n <mis-button [name]=\"'Apply'\" [size]=\"'Small'\" [type]=\"'Solid'\" (click)=\"applyFilters()\" [disabled]=\"filterForm.invalid\"></mis-button>\n </div>\n </div>","import {\n Component,\n OnInit,\n OnDestroy,\n effect,\n signal,\n computed,\n input,\n output,\n WritableSignal\n} from '@angular/core';\nimport { FormControl, FormGroup, AbstractControl, ValidatorFn, ValidationErrors } from '@angular/forms';\nimport { Subscription } from 'rxjs';\nimport { slideFromRight } from '../animations/slideFromRight';\nimport { IDatePickerConfig } from 'mis-crystal-design-system/datepicker_v2';\nimport { IRSelectedDatesConfig } from 'mis-crystal-design-system/specificdatepicker';\nimport { IDatePickerConfig as IDateRangePickerConfig } from 'mis-crystal-design-system/daterangepicker_v2';\nimport { HasValuePipe } from '../has-value.pipe';\n\nexport interface FilterOption {\n label: string;\n value: string;\n data?: any[];\n}\n\nexport type FilterType =\n | 'multiSelect'\n | 'select'\n | 'datePicker'\n | 'dateRangePicker'\n | 'checkbox'\n | 'radio'\n | 'text'\n | 'number'\n | 'range';\n\nexport interface FilterPanelConfig {\n key: string;\n title: string;\n type: FilterType;\n options?: FilterOption[];\n placeholder?: string;\n hidden?: boolean;\n datePickerConfig?: IDatePickerConfig;\n dateRangePickerConfig?: IDateRangePickerConfig;\n onChange?: (event: any, config?: FilterPanelConfig[], formValue?: any) => void;\n defaultValue?: any;\n selectedValue?: any;\n}\n\n@Component({\n selector: 'mis-filter-panel',\n templateUrl: './filter-panel.component.html',\n styleUrls: ['./filter-panel.component.scss'],\n animations: [slideFromRight]\n})\nexport class FilterPanelComponent implements OnInit, OnDestroy {\n private isInitialized = false;\n\n constructor(private hasValue: HasValuePipe) {\n // Effect to react to config changes - must allow signal writes since we update internal signals\n effect(() => {\n try {\n const cfg = this.config();\n if (cfg && Array.isArray(cfg) && cfg.length > 0) {\n // Only initialize form if not already done, or if config structure changed\n if (!this.isInitialized || this.hasConfigChanged(cfg)) {\n this.initializeFormControls(cfg);\n this.isInitialized = true;\n }\n // Always check for selectedValue changes\n this.setFilterValue(cfg);\n }\n } catch (error) {\n console.warn('FilterPanel: Error in config effect', error);\n }\n }, { allowSignalWrites: true });\n }\n\n /* --- signal-based Inputs / Outputs --- */\n public show = input<boolean>(false);\n public config = input.required<FilterPanelConfig[]>();\n public emitFiltersAfterSettingNewValues = input<boolean>(false);\n\n public onClose = output<void>();\n public onApply = output<{ filterData: any; filterCount: number }>();\n\n /* --- form + internal state --- */\n filterForm: FormGroup = new FormGroup({});\n private formSubscription?: Subscription;\n\n // keep a signal snapshot of form value so computed can react\n private _formValueSignal: WritableSignal<Record<string, any>> = signal({});\n\n // last applied snapshot (signal so template/logic can read reliably)\n public lastAppliedData: WritableSignal<Record<string, any> | null> = signal(null);\n\n // date range readable for template\n public dateRangeSelectedDates: WritableSignal<IRSelectedDatesConfig> = signal({\n startDate: '',\n endDate: ''\n });\n\n /* computed filterCount */\n public filterCount = computed(() => {\n const formValue = this._formValueSignal();\n const cfg = this.config();\n let count = 0;\n\n for (const filter of cfg) {\n const value = formValue[filter.key];\n\n if (filter.type === 'range') {\n if (value && (value.min !== null || value.max !== null)) {\n count++;\n }\n continue;\n }\n\n if (filter.type === 'multiSelect' || filter.type === 'checkbox') {\n if (Array.isArray(value) && value.length > 0) {\n count++;\n }\n continue;\n }\n\n if (this.hasValue.transform(value)) {\n count++;\n }\n }\n\n return count;\n });\n\n /* --- Lifecycle --- */\n ngOnInit(): void {\n // subscribe form changes so computed/filterCount update\n this.subscribeFormChanges();\n }\n\n ngOnDestroy(): void {\n this.formSubscription?.unsubscribe();\n }\n\n /* --- Form init & helpers --- */\n initializeFormControls(config: FilterPanelConfig[]): void {\n // build a fresh form to match config\n const newForm = new FormGroup({});\n\n const rangeValidator: ValidatorFn = (group: AbstractControl): ValidationErrors | null => {\n const min = (group.get('min') as FormControl)?.value;\n const max = (group.get('max') as FormControl)?.value;\n if (min !== null && max !== null && min > max) {\n return { rangeError: 'Min value should be less than max value' };\n }\n return null;\n };\n\n for (const filter of config) {\n let control: AbstractControl;\n\n switch (filter.type) {\n case 'range':\n control = new FormGroup(\n {\n min: new FormControl(null),\n max: new FormControl(null)\n },\n { validators: rangeValidator }\n );\n break;\n\n case 'multiSelect':\n case 'checkbox':\n control = new FormControl(Array.isArray(filter.defaultValue) ? filter.defaultValue : []);\n break;\n\n case 'select':\n control = new FormControl(filter.defaultValue ?? '');\n break;\n\n default:\n control = new FormControl(filter.defaultValue ?? null);\n }\n\n if (this.hasValue.transform(filter.defaultValue)) {\n control.setValue(filter.defaultValue);\n }\n\n newForm.addControl(filter.key, control);\n }\n\n // replace form safely\n // preserve subscription so valueChanges continues to update _formValueSignal\n this.filterForm = newForm;\n // update signal snapshot immediately\n this._formValueSignal.set({ ...this.filterForm.value });\n\n // re-subscribe to new form's valueChanges\n this.subscribeFormChanges();\n }\n\n private subscribeFormChanges(): void {\n // unsubscribe previous subscription if any\n this.formSubscription?.unsubscribe();\n\n // subscribe to valueChanges; set snapshot signal\n this.formSubscription = this.filterForm.valueChanges?.subscribe((value) => {\n this._formValueSignal.set({ ...value });\n });\n\n // also set initial snapshot in case valueChanges doesn't emit immediately\n this._formValueSignal.set({ ...this.filterForm.value });\n }\n\n private getControl(key: string) {\n return this.filterForm.get(key);\n }\n\n /**\n * Check if config structure has changed (new keys or removed keys)\n * Used to determine if form needs to be rebuilt\n */\n private hasConfigChanged(newConfig: FilterPanelConfig[]): boolean {\n const currentKeys = Object.keys(this.filterForm.controls).sort();\n const newKeys = newConfig.map(f => f.key).sort();\n \n if (currentKeys.length !== newKeys.length) {\n return true;\n }\n \n return currentKeys.some((key, index) => key !== newKeys[index]);\n }\n\n /* --- Actions / UI handlers --- */\n closePanel(): void {\n const last = this.lastAppliedData();\n if (last) {\n try {\n // prefer setValue (ensures shape matches); fallback to patchValue\n this.filterForm.setValue(last);\n } catch {\n this.filterForm.patchValue(last);\n }\n } else {\n this.clearFormValues();\n }\n\n // emit close event\n this.onClose.emit();\n }\n\n applyFilters(): void {\n if (this.filterForm.invalid) {\n this.filterForm.markAllAsTouched();\n return;\n }\n\n const snapshot = { ...this.filterForm.value };\n this.lastAppliedData.set(snapshot);\n\n this.onApply.emit({\n filterData: snapshot,\n filterCount: this.filterCount()\n });\n\n // consistent behavior with earlier implementation:\n // hide panel (parent should read show() to close) and restore form state via closePanel\n // Note: we don't mutate show() here; parent owns show signal\n this.closePanel();\n }\n\n resetFilters(): void {\n this.clearFormValues();\n // call applyFilters to maintain previous behavior (validation + emit)\n this.applyFilters();\n }\n\n /* --- Value setters --- */\n handleSelect(event: any, filterKey: string, filter: FilterPanelConfig): void {\n const ctrl = this.getControl(filterKey);\n \n // For multiSelect, extract values from array of objects (if needed)\n let valueToSet = event;\n if (filter.type === 'multiSelect' && Array.isArray(event)) {\n // Check if it's an array of objects with 'value' property\n if (event.length > 0 && typeof event[0] === 'object' && 'value' in event[0]) {\n valueToSet = event.map((item: any) => item.value || item);\n }\n }\n \n ctrl?.setValue(valueToSet);\n if (filter.onChange) {\n // keep same callback contract: pass event, config and form snapshot\n filter.onChange(event, this.config(), this.filterForm.value);\n }\n }\n\n handleCheckbox(event: any, filterKey: string, checkboxValue: string, filter: FilterPanelConfig): void {\n const ctrl = this.getControl(filterKey);\n const current = Array.isArray(ctrl?.value) ? [...ctrl.value] : [];\n if (event?.value) {\n ctrl?.setValue([...current, checkboxValue]);\n } else {\n ctrl?.setValue(current.filter((v) => v !== checkboxValue));\n }\n\n if (filter.onChange) {\n filter.onChange(event, this.config(), this.filterForm.value);\n }\n }\n\n onDateChange(event: any, filterKey: string, filter: FilterPanelConfig): void {\n const ctrl = this.getControl(filterKey);\n ctrl?.setValue(event);\n\n if (event && typeof event === 'object' && 'startDate' in event && 'endDate' in event) {\n this.dateRangeSelectedDates.set({\n startDate: event.startDate,\n endDate: event.endDate\n });\n }\n }\n\n /* --- Clear / Set values helpers --- */\n clearFormValues(): void {\n const resets: Record<string, any> = {};\n\n for (const filter of this.config()) {\n let defaultValue: any = filter.defaultValue ?? null;\n if (filter.type === 'multiSelect' || filter.type === 'checkbox') {\n defaultValue = filter.defaultValue ?? [];\n }\n if (filter.type === 'range') {\n defaultValue = filter.defaultValue ?? { min: null, max: null };\n }\n resets[filter.key] = defaultValue;\n }\n\n // patch to avoid shape mismatch errors\n this.filterForm.patchValue(resets);\n this._formValueSignal.set({ ...this.filterForm.value });\n }\n\n /**\n * Applies filter.selectedValue when parent provides selectedValue.\n * Called by the config effect (so runs on initial load and on config changes).\n */\n setFilterValue(config: FilterPanelConfig[]): void {\n let anyValueSet = false;\n\n for (const filter of config) {\n if (this.hasValue.transform(filter?.selectedValue)) {\n const ctrl = this.getControl(filter.key);\n if (ctrl) {\n ctrl.setValue(filter.selectedValue);\n anyValueSet = true;\n }\n }\n }\n\n if (anyValueSet && this.emitFiltersAfterSettingNewValues()) {\n // respect the parent flag — apply and emit\n this.applyFilters();\n } else {\n // make sure our snapshot signal is fresh\n this._formValueSignal.set({ ...this.filterForm.value });\n }\n }\n}","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { ButtonModule } from 'mis-crystal-design-system/button';\nimport { RadioButtonModule } from 'mis-crystal-design-system/radio-button';\nimport { MisInputModule } from \"mis-crystal-design-system/input\";\nimport { CheckboxModule } from 'mis-crystal-design-system/checkbox';\nimport { MultiSelectDropdownModule } from 'mis-crystal-design-system/multi-select-dropdown';\nimport { DatepickerModuleV2 } from 'mis-crystal-design-system/datepicker_v2';\nimport { DateRangepickerModuleV2 } from 'mis-crystal-design-system/daterangepicker_v2';\nimport { FilterPanelComponent } from './filter-panel/filter-panel.component';\nimport { HasValuePipe } from './has-value.pipe';\nimport { DropdownModule } from 'mis-crystal-design-system/dropdown';\n\n@NgModule({\n imports: [\n CommonModule,\n ButtonModule,\n FormsModule,\n ReactiveFormsModule,\n MultiSelectDropdownModule,\n DropdownModule,\n RadioButtonModule,\n MisInputModule,\n DatepickerModuleV2,\n DateRangepickerModuleV2,\n CheckboxModule\n ],\n declarations: [FilterPanelComponent, HasValuePipe],\n providers: [\n HasValuePipe\n ],\n exports: [FilterPanelComponent]\n})\nexport class FiltersModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.HasValuePipe"],"mappings":"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"}
@@ -216,9 +216,9 @@ class TimeRangePickerComponent {
216
216
  // Calculate start time epoch for comparison
217
217
  const startTimeEpoch = dayjs.tz(`${this.getStartDate()} ${this.startTime().time}`, `DD-MM-YYYY ${this.getTimeFormat()}`, this.timezone()).valueOf();
218
218
  const endTimeEpoch = dayjs.tz(`${this.getEndDate()} ${this.endTime().time}`, `DD-MM-YYYY ${this.getTimeFormat()}`, this.timezone()).valueOf();
219
- // Auto-adjust end time if start time > end time (for both same and different dates)
219
+ // Auto-adjust end time if start time >= end time (for both same and different dates)
220
220
  // This ensures end time is always after start time
221
- if (startTimeEpoch > endTimeEpoch) {
221
+ if (startTimeEpoch >= endTimeEpoch) {
222
222
  // Calculate new end time as start time + interval
223
223
  let newEndTimeEpoch = dayjs.tz(startTimeEpoch, this.timezone()).add(this.interval(), "m").valueOf();
224
224
  // If same date, check if the new end time would go beyond end of day
@@ -1 +1 @@
1
- {"version":3,"file":"mis-crystal-design-system-timerangepicker.mjs","sources":["../../../projects/mis-components/timerangepicker/timerangepicker.component.html","../../../projects/mis-components/timerangepicker/timerangepicker.component.ts","../../../projects/mis-components/timerangepicker/timerangepicker.module.ts","../../../projects/mis-components/timerangepicker/mis-crystal-design-system-timerangepicker.ts"],"sourcesContent":["<div class=\"rangepicker-container\" [ngStyle]=\"{'flexDirection': direction(), 'gap': gap()}\">\n <mis-timepicker\n [clockFormat]=\"clockFormat()\"\n [interval]=\"interval()\"\n [dateAsEpoch]=\"startDateEpoch()\"\n [firstInterval]=\"firstIntervals().start\"\n (timeEmitter)=\"startPickerHandler($event)\"\n [timezone]=\"timezone()\"\n [height]=\"height()\"\n [inputWidth]=\"inputWidth()\"\n [dropdownWidth]=\"dropdownWidth()\"\n [showTooltip]=\"showTooltip()\"\n [givenTime]=\"givenStartTime()\"\n [disable]=\"disableStartTime()\"\n [disableUserInput]=\"disableUserInput()\"\n [fontSize]=\"fontSize()\"\n ></mis-timepicker>\n <p *ngIf=\"direction() === 'row'\">-</p>\n <mis-timepicker\n [clockFormat]=\"clockFormat()\"\n [interval]=\"interval()\"\n [dateAsEpoch]=\"endDateEpoch()\"\n [firstInterval]=\"firstIntervals().end\"\n (timeEmitter)=\"endPickerHandler($event)\"\n [rangeValidity]=\"rangeValidity()\"\n [timezone]=\"timezone()\"\n [height]=\"height()\"\n [inputWidth]=\"inputWidth()\"\n [dropdownWidth]=\"dropdownWidth()\"\n [showTooltip]=\"showTooltip()\"\n [givenTime]=\"givenEndTime()\"\n [triggerChange]=\"triggerChange()\"\n [disable]=\"disableEndTime()\"\n [disableUserInput]=\"disableUserInput()\"\n [fontSize]=\"fontSize()\"\n ></mis-timepicker>\n</div>\n\n","import { Component, input, output, signal, computed, effect, untracked, OnInit } from \"@angular/core\";\nimport { ITimeRange, ITime, TDirection } from \"./timerange.namespace\";\nimport dayjs from 'dayjs';\nimport timezone from 'dayjs/plugin/timezone';\nimport utc from 'dayjs/plugin/utc';\n\ndayjs.extend(utc);\ndayjs.extend(timezone);\n\n@Component({\n selector: \"mis-timerangepicker\",\n templateUrl: \"./timerangepicker.component.html\", // Corrected file name\n styleUrls: [\"./timerangepicker.component.scss\"]\n})\nexport class TimeRangePickerComponent implements OnInit {\n // --- Input Signals (read-only) ---\n inputWidth = input<string>(\"100px\");\n dropdownWidth = input<string | undefined>(undefined);\n height = input<string>(\"46px\");\n timezone = input<string>(\"Asia/Kolkata\");\n startDateEpoch = input<number>(dayjs.tz(dayjs(), this.timezone()).valueOf());\n endDateEpoch = input<number>(dayjs.tz(dayjs(), this.timezone()).valueOf());\n givenStartTime = input<number | undefined>(undefined);\n givenEndTime = input<number | undefined>(undefined);\n clockFormat = input<number>(12);\n interval = input<number>(15);\n showTooltip = input<boolean>(true);\n direction = input<TDirection>('row');\n gap = input<string>('1rem');\n disableStartTime = input<boolean>(false);\n disableEndTime = input<boolean>(false);\n fontSize = input<string>(\"14px\");\n disableUserInput = input<boolean>(false);\n\n // --- Output Signal ---\n timeRangeEmitter = output<ITimeRange>();\n\n // --- Internal Writable Signals ---\n startTime = signal<ITime | null>(null);\n endTime = signal<ITime | null>(null);\n rangeValidity = signal<boolean>(true);\n triggerChange = signal<boolean>(true);\n private _firstIntervals = signal<{ start: number, end: number }>({ start: 0, end: 0 });\n private _isInitializing = false;\n private _previousStartDateEpoch: number | null = null;\n private _previousEndDateEpoch: number | null = null;\n\n // --- Computed Signals (Derived State) ---\n firstIntervals = computed(() => this._firstIntervals()); // A public computed signal to access the writable one\n \n // Helper methods instead of computed signals to avoid signal write conflicts\n private getTimeFormat(): string {\n return this.clockFormat() === 12 ? \"hh:mm a\" : \"HH:mm\";\n }\n \n private getStartDate(): string {\n return dayjs.tz(this.startDateEpoch(), this.timezone()).format(\"DD-MM-YYYY\");\n }\n \n private getEndDate(): string {\n return dayjs.tz(this.endDateEpoch(), this.timezone()).format(\"DD-MM-YYYY\");\n }\n \n private getCurrDate(): string {\n return dayjs.tz(dayjs(), this.timezone()).format(\"DD-MM-YYYY\");\n }\n \n constructor() {\n // Effect to watch for changes in startDateEpoch and endDateEpoch\n effect(() => {\n // ONLY track these two signals - this is the only line that creates dependencies\n const currentStartDate = this.startDateEpoch();\n const currentEndDate = this.endDateEpoch();\n \n // Use untracked() for everything else to prevent infinite loops\n untracked(() => {\n // Skip if component is initializing\n if (this._isInitializing) {\n return;\n }\n \n // Skip if component hasn't been initialized yet\n if (!this.startTime() || !this.endTime()) {\n return;\n }\n \n // Skip if dates haven't actually changed (prevents initial double-run)\n if (this._previousStartDateEpoch === currentStartDate && \n this._previousEndDateEpoch === currentEndDate) {\n return;\n }\n \n // Update previous values\n this._previousStartDateEpoch = currentStartDate;\n this._previousEndDateEpoch = currentEndDate;\n \n // PRESERVE the currently selected times (don't reset them!)\n const currentStartTimeString = this.startTime()!.time;\n const currentEndTimeString = this.endTime()!.time;\n \n // Calculate new epochs with the new date but SAME time\n const newStartEpoch = dayjs.tz(`${this.getStartDate()} ${currentStartTimeString}`, `DD-MM-YYYY ${this.getTimeFormat()}`, this.timezone()).valueOf();\n const newEndEpoch = dayjs.tz(`${this.getEndDate()} ${currentEndTimeString}`, `DD-MM-YYYY ${this.getTimeFormat()}`, this.timezone()).valueOf();\n \n // Update the time signals with preserved times but new epochs\n this.startTime.set({\n valid: true,\n time: currentStartTimeString,\n epoch: newStartEpoch\n });\n \n this.endTime.set({\n valid: true,\n time: currentEndTimeString,\n epoch: newEndEpoch\n });\n \n // Update firstIntervals for the dropdown options based on new date\n this.setFirstIntervals();\n \n // Emit the updated time range with preserved times but new date\n const validity =\n this.checkTimeValidity(currentStartTimeString.trim(), this.startDateEpoch()) &&\n this.checkTimeValidity(currentEndTimeString.trim(), this.endDateEpoch());\n\n this.rangeValidation(validity);\n this.emitTimeRange({\n valid: validity && this.rangeValidity(),\n startTime: currentStartTimeString,\n endTime: currentEndTimeString,\n startEpoch: newStartEpoch,\n endEpoch: newEndEpoch\n });\n });\n }, { allowSignalWrites: true });\n }\n\n ngOnInit(): void {\n // Initialize the component once\n this.initializeComponent();\n \n // Store initial values to prevent effect from running on first load\n this._previousStartDateEpoch = this.startDateEpoch();\n this._previousEndDateEpoch = this.endDateEpoch();\n }\n\n private initializeComponent(): void {\n this._isInitializing = true;\n \n this.setFirstIntervals();\n const firstIntervals = this._firstIntervals();\n\n this.startTime.set({\n valid: true,\n time: dayjs.tz(firstIntervals.start, this.timezone()).format(this.getTimeFormat()),\n epoch: dayjs.tz(firstIntervals.start, this.timezone()).valueOf()\n });\n \n // Ensure end time is always after start time\n let endTimeEpoch = firstIntervals.end;\n const startTimeEpoch = firstIntervals.start;\n \n // If end time is same or before start time, add one interval to end time\n if (endTimeEpoch <= startTimeEpoch) {\n endTimeEpoch = dayjs.tz(startTimeEpoch, this.timezone()).add(this.interval(), 'm').valueOf();\n \n // Update the firstIntervals to reflect the adjusted end time\n this._firstIntervals.set({\n start: firstIntervals.start,\n end: endTimeEpoch\n });\n }\n \n this.endTime.set({\n valid: true,\n time: dayjs.tz(endTimeEpoch, this.timezone()).format(this.getTimeFormat()),\n epoch: endTimeEpoch\n });\n \n this._isInitializing = false;\n }\n\n // calculate the first interval of the picker\n private setFirstIntervals(): void {\n let firstIntervalForStartPicker: number;\n let firstIntervalForEndPicker: number;\n\n const minutes = dayjs.tz(dayjs(), this.timezone()).minute();\n const offset = this.interval() - (minutes % this.interval());\n const currentTime = dayjs.tz(dayjs(), this.timezone()).valueOf();\n\n if( this.getStartDate() === this.getCurrDate() ){\n if(this.getStartDate() === this.getEndDate()){\n if(currentTime >= dayjs.tz(this.startDateEpoch(), this.timezone()).endOf(\"d\").subtract(this.interval(),\"m\").valueOf()){\n firstIntervalForStartPicker = currentTime;\n firstIntervalForEndPicker = dayjs.tz(this.endDateEpoch(), this.timezone()).endOf(\"d\").valueOf();\n } else {\n firstIntervalForStartPicker = dayjs.tz(dayjs(), this.timezone()).add(offset, \"m\").valueOf();\n // For same date, end picker should start from beginning of day to avoid validation issues\n firstIntervalForEndPicker = dayjs.tz(this.endDateEpoch(), this.timezone()).startOf(\"d\").valueOf();\n }\n } else {\n if(currentTime >= dayjs.tz(this.startDateEpoch(), this.timezone()).endOf(\"d\").subtract(this.interval(),\"m\").valueOf()){\n firstIntervalForStartPicker = currentTime;\n firstIntervalForEndPicker = dayjs.tz(this.endDateEpoch(), this.timezone()).endOf(\"d\").valueOf();\n } else {\n firstIntervalForStartPicker = dayjs.tz(dayjs(), this.timezone()).add(offset, \"m\").valueOf();\n firstIntervalForEndPicker = dayjs.tz(this.endDateEpoch(), this.timezone()).startOf(\"d\").valueOf();\n }\n }\n } else {\n if(this.getStartDate() === this.getEndDate()){\n firstIntervalForStartPicker = dayjs.tz(this.startDateEpoch(), this.timezone()).startOf(\"d\").valueOf();\n firstIntervalForEndPicker = dayjs.tz(this.endDateEpoch(), this.timezone()).add(this.interval(), \"m\").valueOf();\n } else {\n firstIntervalForStartPicker = dayjs.tz(this.startDateEpoch(), this.timezone()).startOf(\"d\").valueOf();\n firstIntervalForEndPicker = dayjs.tz(this.endDateEpoch(), this.timezone()).startOf(\"d\").valueOf();\n }\n }\n\n if(this.givenStartTime()) {\n firstIntervalForStartPicker = this.givenStartTime()!;\n }\n \n if(this.givenEndTime()) {\n firstIntervalForEndPicker = this.givenEndTime()!;\n }\n \n this._firstIntervals.set({ start: firstIntervalForStartPicker, end: firstIntervalForEndPicker });\n }\n\n // --- Public Methods ---\n emitTimeRange(data: ITimeRange): void {\n this.timeRangeEmitter.emit(data);\n }\n\n startPickerHandler(time: ITime): void {\n this.startTime.set(time);\n this.rangeValidity.set(true);\n \n // Don't emit during initialization\n if (this._isInitializing) {\n return;\n }\n\n // Calculate start time epoch for comparison\n const startTimeEpoch = dayjs.tz(`${this.getStartDate()} ${this.startTime()!.time}`, `DD-MM-YYYY ${this.getTimeFormat()}`, this.timezone()).valueOf();\n const endTimeEpoch = dayjs.tz(`${this.getEndDate()} ${this.endTime()!.time}`, `DD-MM-YYYY ${this.getTimeFormat()}`, this.timezone()).valueOf();\n\n // Auto-adjust end time if start time > end time (for both same and different dates)\n // This ensures end time is always after start time\n if (startTimeEpoch > endTimeEpoch) {\n // Calculate new end time as start time + interval\n let newEndTimeEpoch = dayjs.tz(startTimeEpoch, this.timezone()).add(this.interval(), \"m\").valueOf();\n \n // If same date, check if the new end time would go beyond end of day\n if (this.getStartDate() === this.getEndDate()) {\n const endOfDay = dayjs.tz(this.startDateEpoch(), this.timezone()).endOf(\"d\").valueOf();\n if (newEndTimeEpoch > endOfDay) {\n // Set end time to 11:59 PM (end of day) when start time is last interval\n newEndTimeEpoch = endOfDay;\n }\n }\n \n // Update the end time signal\n this.endTime.set({\n valid: true,\n time: dayjs.tz(newEndTimeEpoch, this.timezone()).format(this.getTimeFormat()),\n epoch: newEndTimeEpoch\n });\n \n // Update the firstIntervals to reflect the new end time\n this._firstIntervals.set({ \n start: this._firstIntervals().start, \n end: newEndTimeEpoch \n });\n \n // Trigger change to force end timepicker to update its display with the new end time\n // This is necessary when we reset the end time due to conflict\n this.triggerChange.update(value => !value);\n }\n\n // Update end timepicker's firstInterval when both timepickers are on the same day\n // ALWAYS update to ensure dropdown starts from next interval after start time\n // This fixes the bug where selecting an earlier start time doesn't update end picker intervals\n // NOTE: We only update firstInterval (dropdown options), NOT the selected end time value\n // The timepicker component now handles firstInterval changes separately and won't reset chosenTime\n if (this.getStartDate() === this.getEndDate()) {\n // Only update firstInterval if there's no conflict (start < end)\n // If there's a conflict, it's already handled above and firstInterval was updated there\n if (startTimeEpoch < endTimeEpoch) {\n // Calculate the next interval after the selected start time\n let nextIntervalAfterStart = dayjs.tz(startTimeEpoch, this.timezone()).add(this.interval(), \"m\").valueOf();\n \n // If next interval would go beyond end of day, use end of day instead\n const endOfDay = dayjs.tz(this.startDateEpoch(), this.timezone()).endOf(\"d\").valueOf();\n if (nextIntervalAfterStart > endOfDay) {\n nextIntervalAfterStart = endOfDay;\n }\n \n // Update the firstIntervals to make end timepicker dropdown start from next interval after start time\n // This ensures users can always select times between the new start time and the current end time\n // The timepicker component will update the dropdown but preserve the selected end time value\n this._firstIntervals.set({ \n start: this._firstIntervals().start, \n end: nextIntervalAfterStart \n });\n // NOTE: We don't call triggerChange here because we only want to update the dropdown,\n // not reset the selected end time. The timepicker's separate effect for firstInterval\n // will handle updating the dropdown without resetting chosenTime.\n }\n }\n\n // Always validate and emit the time range\n const validity =\n this.checkTimeValidity(this.startTime()!.time.trim(), this.startDateEpoch()) &&\n this.checkTimeValidity(this.endTime()!.time.trim(), this.endDateEpoch());\n\n this.rangeValidation(validity);\n this.emitTimeRange({\n valid: validity && this.rangeValidity(),\n startTime: this.startTime()!.time,\n endTime: this.endTime()!.time,\n startEpoch: dayjs.tz(`${this.getStartDate()} ${this.startTime()!.time}`, `DD-MM-YYYY ${this.getTimeFormat()}`, this.timezone()).valueOf(),\n endEpoch: dayjs.tz(`${this.getEndDate()} ${this.endTime()!.time}`, `DD-MM-YYYY ${this.getTimeFormat()}`, this.timezone()).valueOf()\n });\n }\n\n endPickerHandler(time: ITime): void {\n this.endTime.set(time);\n \n // Don't emit during initialization\n if (this._isInitializing) {\n return;\n }\n\n const validity =\n this.checkTimeValidity(this.startTime()!.time.trim(), this.startDateEpoch()) && \n this.checkTimeValidity(this.endTime()!.time.trim(), this.endDateEpoch());\n\n this.rangeValidation(validity);\n this.emitTimeRange({\n valid: validity && this.rangeValidity(),\n startTime: this.startTime()!.time,\n endTime: this.endTime()!.time,\n startEpoch: dayjs.tz(`${this.getStartDate()} ${this.startTime()!.time}`, `DD-MM-YYYY ${this.getTimeFormat()}`, this.timezone()).valueOf(),\n endEpoch: dayjs.tz(`${this.getEndDate()} ${this.endTime()!.time}`, `DD-MM-YYYY ${this.getTimeFormat()}`, this.timezone()).valueOf()\n });\n }\n\n checkTimeValidity(time: string, date: number): boolean {\n const RE12 = /^(([0][1-9]|1[0-2]):([0-5][0-9])( )?(am|pm|AM|PM))$/i;\n const RE24 = /^([01][0-9]|2[0-3]):[0-5][0-9]$/;\n const RE = this.clockFormat() === 12 ? RE12 : RE24;\n\n const timedayjs = dayjs.tz(`${dayjs.tz(date, this.timezone()).format(\"DD-MM-YYYY\")} ${time}`, `'DD-MM-YYYY' ${this.getTimeFormat()}`, this.timezone());\n let flag: boolean = false;\n\n if ((this.givenStartTime() && this.givenEndTime()) || (this.getStartDate() !== this.getEndDate() && this.getStartDate() !== this.getCurrDate())) {\n flag = time.match(RE) ? true : false;\n } else {\n flag = time.match(RE) && timedayjs.diff(dayjs.tz(dayjs(), this.timezone()), \"m\") >= 0 ? true : false;\n }\n return flag;\n }\n\n rangeValidation(validity: boolean) {\n if (validity && this.getStartDate() === this.getEndDate()) {\n const startdayjs = dayjs.tz(this.startTime()!.time, this.getTimeFormat(), this.timezone());\n const enddayjs = dayjs.tz(this.endTime()!.time, this.getTimeFormat(), this.timezone());\n this.rangeValidity.set(enddayjs.diff(startdayjs, \"m\") >= 1);\n }\n }\n}\n\n\n","import { NgModule, ModuleWithProviders } from \"@angular/core\";\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { TimeRangePickerComponent } from \"./timerangepicker.component\";\nimport { TimePickerModule } from \"mis-crystal-design-system/timepicker\";\n\n@NgModule({\n declarations: [TimeRangePickerComponent],\n imports: [CommonModule, FormsModule, TimePickerModule],\n exports: [TimeRangePickerComponent]\n})\nexport class TimeRangePickerModule {\n static forRoot(): ModuleWithProviders<TimeRangePickerModule> {\n return { ngModule: TimeRangePickerModule, providers: [] };\n }\n}","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mis-crystal-design-system-timerangepicker.mjs","sources":["../../../projects/mis-components/timerangepicker/timerangepicker.component.html","../../../projects/mis-components/timerangepicker/timerangepicker.component.ts","../../../projects/mis-components/timerangepicker/timerangepicker.module.ts","../../../projects/mis-components/timerangepicker/mis-crystal-design-system-timerangepicker.ts"],"sourcesContent":["<div class=\"rangepicker-container\" [ngStyle]=\"{'flexDirection': direction(), 'gap': gap()}\">\n <mis-timepicker\n [clockFormat]=\"clockFormat()\"\n [interval]=\"interval()\"\n [dateAsEpoch]=\"startDateEpoch()\"\n [firstInterval]=\"firstIntervals().start\"\n (timeEmitter)=\"startPickerHandler($event)\"\n [timezone]=\"timezone()\"\n [height]=\"height()\"\n [inputWidth]=\"inputWidth()\"\n [dropdownWidth]=\"dropdownWidth()\"\n [showTooltip]=\"showTooltip()\"\n [givenTime]=\"givenStartTime()\"\n [disable]=\"disableStartTime()\"\n [disableUserInput]=\"disableUserInput()\"\n [fontSize]=\"fontSize()\"\n ></mis-timepicker>\n <p *ngIf=\"direction() === 'row'\">-</p>\n <mis-timepicker\n [clockFormat]=\"clockFormat()\"\n [interval]=\"interval()\"\n [dateAsEpoch]=\"endDateEpoch()\"\n [firstInterval]=\"firstIntervals().end\"\n (timeEmitter)=\"endPickerHandler($event)\"\n [rangeValidity]=\"rangeValidity()\"\n [timezone]=\"timezone()\"\n [height]=\"height()\"\n [inputWidth]=\"inputWidth()\"\n [dropdownWidth]=\"dropdownWidth()\"\n [showTooltip]=\"showTooltip()\"\n [givenTime]=\"givenEndTime()\"\n [triggerChange]=\"triggerChange()\"\n [disable]=\"disableEndTime()\"\n [disableUserInput]=\"disableUserInput()\"\n [fontSize]=\"fontSize()\"\n ></mis-timepicker>\n</div>\n\n","import { Component, input, output, signal, computed, effect, untracked, OnInit } from \"@angular/core\";\nimport { ITimeRange, ITime, TDirection } from \"./timerange.namespace\";\nimport dayjs from 'dayjs';\nimport timezone from 'dayjs/plugin/timezone';\nimport utc from 'dayjs/plugin/utc';\n\ndayjs.extend(utc);\ndayjs.extend(timezone);\n\n@Component({\n selector: \"mis-timerangepicker\",\n templateUrl: \"./timerangepicker.component.html\", // Corrected file name\n styleUrls: [\"./timerangepicker.component.scss\"]\n})\nexport class TimeRangePickerComponent implements OnInit {\n // --- Input Signals (read-only) ---\n inputWidth = input<string>(\"100px\");\n dropdownWidth = input<string | undefined>(undefined);\n height = input<string>(\"46px\");\n timezone = input<string>(\"Asia/Kolkata\");\n startDateEpoch = input<number>(dayjs.tz(dayjs(), this.timezone()).valueOf());\n endDateEpoch = input<number>(dayjs.tz(dayjs(), this.timezone()).valueOf());\n givenStartTime = input<number | undefined>(undefined);\n givenEndTime = input<number | undefined>(undefined);\n clockFormat = input<number>(12);\n interval = input<number>(15);\n showTooltip = input<boolean>(true);\n direction = input<TDirection>('row');\n gap = input<string>('1rem');\n disableStartTime = input<boolean>(false);\n disableEndTime = input<boolean>(false);\n fontSize = input<string>(\"14px\");\n disableUserInput = input<boolean>(false);\n\n // --- Output Signal ---\n timeRangeEmitter = output<ITimeRange>();\n\n // --- Internal Writable Signals ---\n startTime = signal<ITime | null>(null);\n endTime = signal<ITime | null>(null);\n rangeValidity = signal<boolean>(true);\n triggerChange = signal<boolean>(true);\n private _firstIntervals = signal<{ start: number, end: number }>({ start: 0, end: 0 });\n private _isInitializing = false;\n private _previousStartDateEpoch: number | null = null;\n private _previousEndDateEpoch: number | null = null;\n\n // --- Computed Signals (Derived State) ---\n firstIntervals = computed(() => this._firstIntervals()); // A public computed signal to access the writable one\n \n // Helper methods instead of computed signals to avoid signal write conflicts\n private getTimeFormat(): string {\n return this.clockFormat() === 12 ? \"hh:mm a\" : \"HH:mm\";\n }\n \n private getStartDate(): string {\n return dayjs.tz(this.startDateEpoch(), this.timezone()).format(\"DD-MM-YYYY\");\n }\n \n private getEndDate(): string {\n return dayjs.tz(this.endDateEpoch(), this.timezone()).format(\"DD-MM-YYYY\");\n }\n \n private getCurrDate(): string {\n return dayjs.tz(dayjs(), this.timezone()).format(\"DD-MM-YYYY\");\n }\n \n constructor() {\n // Effect to watch for changes in startDateEpoch and endDateEpoch\n effect(() => {\n // ONLY track these two signals - this is the only line that creates dependencies\n const currentStartDate = this.startDateEpoch();\n const currentEndDate = this.endDateEpoch();\n \n // Use untracked() for everything else to prevent infinite loops\n untracked(() => {\n // Skip if component is initializing\n if (this._isInitializing) {\n return;\n }\n \n // Skip if component hasn't been initialized yet\n if (!this.startTime() || !this.endTime()) {\n return;\n }\n \n // Skip if dates haven't actually changed (prevents initial double-run)\n if (this._previousStartDateEpoch === currentStartDate && \n this._previousEndDateEpoch === currentEndDate) {\n return;\n }\n \n // Update previous values\n this._previousStartDateEpoch = currentStartDate;\n this._previousEndDateEpoch = currentEndDate;\n \n // PRESERVE the currently selected times (don't reset them!)\n const currentStartTimeString = this.startTime()!.time;\n const currentEndTimeString = this.endTime()!.time;\n \n // Calculate new epochs with the new date but SAME time\n const newStartEpoch = dayjs.tz(`${this.getStartDate()} ${currentStartTimeString}`, `DD-MM-YYYY ${this.getTimeFormat()}`, this.timezone()).valueOf();\n const newEndEpoch = dayjs.tz(`${this.getEndDate()} ${currentEndTimeString}`, `DD-MM-YYYY ${this.getTimeFormat()}`, this.timezone()).valueOf();\n \n // Update the time signals with preserved times but new epochs\n this.startTime.set({\n valid: true,\n time: currentStartTimeString,\n epoch: newStartEpoch\n });\n \n this.endTime.set({\n valid: true,\n time: currentEndTimeString,\n epoch: newEndEpoch\n });\n \n // Update firstIntervals for the dropdown options based on new date\n this.setFirstIntervals();\n \n // Emit the updated time range with preserved times but new date\n const validity =\n this.checkTimeValidity(currentStartTimeString.trim(), this.startDateEpoch()) &&\n this.checkTimeValidity(currentEndTimeString.trim(), this.endDateEpoch());\n\n this.rangeValidation(validity);\n this.emitTimeRange({\n valid: validity && this.rangeValidity(),\n startTime: currentStartTimeString,\n endTime: currentEndTimeString,\n startEpoch: newStartEpoch,\n endEpoch: newEndEpoch\n });\n });\n }, { allowSignalWrites: true });\n }\n\n ngOnInit(): void {\n // Initialize the component once\n this.initializeComponent();\n \n // Store initial values to prevent effect from running on first load\n this._previousStartDateEpoch = this.startDateEpoch();\n this._previousEndDateEpoch = this.endDateEpoch();\n }\n\n private initializeComponent(): void {\n this._isInitializing = true;\n \n this.setFirstIntervals();\n const firstIntervals = this._firstIntervals();\n\n this.startTime.set({\n valid: true,\n time: dayjs.tz(firstIntervals.start, this.timezone()).format(this.getTimeFormat()),\n epoch: dayjs.tz(firstIntervals.start, this.timezone()).valueOf()\n });\n \n // Ensure end time is always after start time\n let endTimeEpoch = firstIntervals.end;\n const startTimeEpoch = firstIntervals.start;\n \n // If end time is same or before start time, add one interval to end time\n if (endTimeEpoch <= startTimeEpoch) {\n endTimeEpoch = dayjs.tz(startTimeEpoch, this.timezone()).add(this.interval(), 'm').valueOf();\n \n // Update the firstIntervals to reflect the adjusted end time\n this._firstIntervals.set({\n start: firstIntervals.start,\n end: endTimeEpoch\n });\n }\n \n this.endTime.set({\n valid: true,\n time: dayjs.tz(endTimeEpoch, this.timezone()).format(this.getTimeFormat()),\n epoch: endTimeEpoch\n });\n \n this._isInitializing = false;\n }\n\n // calculate the first interval of the picker\n private setFirstIntervals(): void {\n let firstIntervalForStartPicker: number;\n let firstIntervalForEndPicker: number;\n\n const minutes = dayjs.tz(dayjs(), this.timezone()).minute();\n const offset = this.interval() - (minutes % this.interval());\n const currentTime = dayjs.tz(dayjs(), this.timezone()).valueOf();\n\n if( this.getStartDate() === this.getCurrDate() ){\n if(this.getStartDate() === this.getEndDate()){\n if(currentTime >= dayjs.tz(this.startDateEpoch(), this.timezone()).endOf(\"d\").subtract(this.interval(),\"m\").valueOf()){\n firstIntervalForStartPicker = currentTime;\n firstIntervalForEndPicker = dayjs.tz(this.endDateEpoch(), this.timezone()).endOf(\"d\").valueOf();\n } else {\n firstIntervalForStartPicker = dayjs.tz(dayjs(), this.timezone()).add(offset, \"m\").valueOf();\n // For same date, end picker should start from beginning of day to avoid validation issues\n firstIntervalForEndPicker = dayjs.tz(this.endDateEpoch(), this.timezone()).startOf(\"d\").valueOf();\n }\n } else {\n if(currentTime >= dayjs.tz(this.startDateEpoch(), this.timezone()).endOf(\"d\").subtract(this.interval(),\"m\").valueOf()){\n firstIntervalForStartPicker = currentTime;\n firstIntervalForEndPicker = dayjs.tz(this.endDateEpoch(), this.timezone()).endOf(\"d\").valueOf();\n } else {\n firstIntervalForStartPicker = dayjs.tz(dayjs(), this.timezone()).add(offset, \"m\").valueOf();\n firstIntervalForEndPicker = dayjs.tz(this.endDateEpoch(), this.timezone()).startOf(\"d\").valueOf();\n }\n }\n } else {\n if(this.getStartDate() === this.getEndDate()){\n firstIntervalForStartPicker = dayjs.tz(this.startDateEpoch(), this.timezone()).startOf(\"d\").valueOf();\n firstIntervalForEndPicker = dayjs.tz(this.endDateEpoch(), this.timezone()).add(this.interval(), \"m\").valueOf();\n } else {\n firstIntervalForStartPicker = dayjs.tz(this.startDateEpoch(), this.timezone()).startOf(\"d\").valueOf();\n firstIntervalForEndPicker = dayjs.tz(this.endDateEpoch(), this.timezone()).startOf(\"d\").valueOf();\n }\n }\n\n if(this.givenStartTime()) {\n firstIntervalForStartPicker = this.givenStartTime()!;\n }\n \n if(this.givenEndTime()) {\n firstIntervalForEndPicker = this.givenEndTime()!;\n }\n \n this._firstIntervals.set({ start: firstIntervalForStartPicker, end: firstIntervalForEndPicker });\n }\n\n // --- Public Methods ---\n emitTimeRange(data: ITimeRange): void {\n this.timeRangeEmitter.emit(data);\n }\n\n startPickerHandler(time: ITime): void {\n this.startTime.set(time);\n this.rangeValidity.set(true);\n \n // Don't emit during initialization\n if (this._isInitializing) {\n return;\n }\n\n // Calculate start time epoch for comparison\n const startTimeEpoch = dayjs.tz(`${this.getStartDate()} ${this.startTime()!.time}`, `DD-MM-YYYY ${this.getTimeFormat()}`, this.timezone()).valueOf();\n const endTimeEpoch = dayjs.tz(`${this.getEndDate()} ${this.endTime()!.time}`, `DD-MM-YYYY ${this.getTimeFormat()}`, this.timezone()).valueOf();\n\n // Auto-adjust end time if start time >= end time (for both same and different dates)\n // This ensures end time is always after start time\n if (startTimeEpoch >= endTimeEpoch) {\n // Calculate new end time as start time + interval\n let newEndTimeEpoch = dayjs.tz(startTimeEpoch, this.timezone()).add(this.interval(), \"m\").valueOf();\n \n // If same date, check if the new end time would go beyond end of day\n if (this.getStartDate() === this.getEndDate()) {\n const endOfDay = dayjs.tz(this.startDateEpoch(), this.timezone()).endOf(\"d\").valueOf();\n if (newEndTimeEpoch > endOfDay) {\n // Set end time to 11:59 PM (end of day) when start time is last interval\n newEndTimeEpoch = endOfDay;\n }\n }\n \n // Update the end time signal\n this.endTime.set({\n valid: true,\n time: dayjs.tz(newEndTimeEpoch, this.timezone()).format(this.getTimeFormat()),\n epoch: newEndTimeEpoch\n });\n \n // Update the firstIntervals to reflect the new end time\n this._firstIntervals.set({ \n start: this._firstIntervals().start, \n end: newEndTimeEpoch \n });\n \n // Trigger change to force end timepicker to update its display with the new end time\n // This is necessary when we reset the end time due to conflict\n this.triggerChange.update(value => !value);\n }\n\n // Update end timepicker's firstInterval when both timepickers are on the same day\n // ALWAYS update to ensure dropdown starts from next interval after start time\n // This fixes the bug where selecting an earlier start time doesn't update end picker intervals\n // NOTE: We only update firstInterval (dropdown options), NOT the selected end time value\n // The timepicker component now handles firstInterval changes separately and won't reset chosenTime\n if (this.getStartDate() === this.getEndDate()) {\n // Only update firstInterval if there's no conflict (start < end)\n // If there's a conflict, it's already handled above and firstInterval was updated there\n if (startTimeEpoch < endTimeEpoch) {\n // Calculate the next interval after the selected start time\n let nextIntervalAfterStart = dayjs.tz(startTimeEpoch, this.timezone()).add(this.interval(), \"m\").valueOf();\n \n // If next interval would go beyond end of day, use end of day instead\n const endOfDay = dayjs.tz(this.startDateEpoch(), this.timezone()).endOf(\"d\").valueOf();\n if (nextIntervalAfterStart > endOfDay) {\n nextIntervalAfterStart = endOfDay;\n }\n \n // Update the firstIntervals to make end timepicker dropdown start from next interval after start time\n // This ensures users can always select times between the new start time and the current end time\n // The timepicker component will update the dropdown but preserve the selected end time value\n this._firstIntervals.set({ \n start: this._firstIntervals().start, \n end: nextIntervalAfterStart \n });\n // NOTE: We don't call triggerChange here because we only want to update the dropdown,\n // not reset the selected end time. The timepicker's separate effect for firstInterval\n // will handle updating the dropdown without resetting chosenTime.\n }\n }\n\n // Always validate and emit the time range\n const validity =\n this.checkTimeValidity(this.startTime()!.time.trim(), this.startDateEpoch()) &&\n this.checkTimeValidity(this.endTime()!.time.trim(), this.endDateEpoch());\n\n this.rangeValidation(validity);\n this.emitTimeRange({\n valid: validity && this.rangeValidity(),\n startTime: this.startTime()!.time,\n endTime: this.endTime()!.time,\n startEpoch: dayjs.tz(`${this.getStartDate()} ${this.startTime()!.time}`, `DD-MM-YYYY ${this.getTimeFormat()}`, this.timezone()).valueOf(),\n endEpoch: dayjs.tz(`${this.getEndDate()} ${this.endTime()!.time}`, `DD-MM-YYYY ${this.getTimeFormat()}`, this.timezone()).valueOf()\n });\n }\n\n endPickerHandler(time: ITime): void {\n this.endTime.set(time);\n \n // Don't emit during initialization\n if (this._isInitializing) {\n return;\n }\n\n const validity =\n this.checkTimeValidity(this.startTime()!.time.trim(), this.startDateEpoch()) && \n this.checkTimeValidity(this.endTime()!.time.trim(), this.endDateEpoch());\n\n this.rangeValidation(validity);\n this.emitTimeRange({\n valid: validity && this.rangeValidity(),\n startTime: this.startTime()!.time,\n endTime: this.endTime()!.time,\n startEpoch: dayjs.tz(`${this.getStartDate()} ${this.startTime()!.time}`, `DD-MM-YYYY ${this.getTimeFormat()}`, this.timezone()).valueOf(),\n endEpoch: dayjs.tz(`${this.getEndDate()} ${this.endTime()!.time}`, `DD-MM-YYYY ${this.getTimeFormat()}`, this.timezone()).valueOf()\n });\n }\n\n checkTimeValidity(time: string, date: number): boolean {\n const RE12 = /^(([0][1-9]|1[0-2]):([0-5][0-9])( )?(am|pm|AM|PM))$/i;\n const RE24 = /^([01][0-9]|2[0-3]):[0-5][0-9]$/;\n const RE = this.clockFormat() === 12 ? RE12 : RE24;\n\n const timedayjs = dayjs.tz(`${dayjs.tz(date, this.timezone()).format(\"DD-MM-YYYY\")} ${time}`, `'DD-MM-YYYY' ${this.getTimeFormat()}`, this.timezone());\n let flag: boolean = false;\n\n if ((this.givenStartTime() && this.givenEndTime()) || (this.getStartDate() !== this.getEndDate() && this.getStartDate() !== this.getCurrDate())) {\n flag = time.match(RE) ? true : false;\n } else {\n flag = time.match(RE) && timedayjs.diff(dayjs.tz(dayjs(), this.timezone()), \"m\") >= 0 ? true : false;\n }\n return flag;\n }\n\n rangeValidation(validity: boolean) {\n if (validity && this.getStartDate() === this.getEndDate()) {\n const startdayjs = dayjs.tz(this.startTime()!.time, this.getTimeFormat(), this.timezone());\n const enddayjs = dayjs.tz(this.endTime()!.time, this.getTimeFormat(), this.timezone());\n this.rangeValidity.set(enddayjs.diff(startdayjs, \"m\") >= 1);\n }\n }\n}\n\n\n","import { NgModule, ModuleWithProviders } from \"@angular/core\";\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { TimeRangePickerComponent } from \"./timerangepicker.component\";\nimport { TimePickerModule } from \"mis-crystal-design-system/timepicker\";\n\n@NgModule({\n declarations: [TimeRangePickerComponent],\n imports: [CommonModule, FormsModule, TimePickerModule],\n exports: [TimeRangePickerComponent]\n})\nexport class TimeRangePickerModule {\n static forRoot(): ModuleWithProviders<TimeRangePickerModule> {\n return { ngModule: TimeRangePickerModule, providers: [] };\n }\n}","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -1,19 +1,21 @@
1
- import { OnInit, WritableSignal } from '@angular/core';
1
+ import { OnInit, OnDestroy, WritableSignal } from '@angular/core';
2
2
  import { FormGroup } from '@angular/forms';
3
3
  import { IDatePickerConfig } from 'mis-crystal-design-system/datepicker_v2';
4
4
  import { IRSelectedDatesConfig } from 'mis-crystal-design-system/specificdatepicker';
5
- import { IDatePickerConfig as IDateRangePickerConfig } from "mis-crystal-design-system/daterangepicker_v2";
5
+ import { IDatePickerConfig as IDateRangePickerConfig } from 'mis-crystal-design-system/daterangepicker_v2';
6
6
  import { HasValuePipe } from '../has-value.pipe';
7
7
  import * as i0 from "@angular/core";
8
+ export interface FilterOption {
9
+ label: string;
10
+ value: string;
11
+ data?: any[];
12
+ }
13
+ export type FilterType = 'multiSelect' | 'select' | 'datePicker' | 'dateRangePicker' | 'checkbox' | 'radio' | 'text' | 'number' | 'range';
8
14
  export interface FilterPanelConfig {
9
15
  key: string;
10
16
  title: string;
11
- type: 'multiSelect' | 'select' | 'datePicker' | 'dateRangePicker' | 'checkbox' | 'radio' | 'text' | 'number' | 'range';
12
- options?: Array<{
13
- label: string;
14
- value: string;
15
- data?: any[];
16
- }>;
17
+ type: FilterType;
18
+ options?: FilterOption[];
17
19
  placeholder?: string;
18
20
  hidden?: boolean;
19
21
  datePickerConfig?: IDatePickerConfig;
@@ -22,8 +24,9 @@ export interface FilterPanelConfig {
22
24
  defaultValue?: any;
23
25
  selectedValue?: any;
24
26
  }
25
- export declare class FilterPanelComponent implements OnInit {
27
+ export declare class FilterPanelComponent implements OnInit, OnDestroy {
26
28
  private hasValue;
29
+ private isInitialized;
27
30
  constructor(hasValue: HasValuePipe);
28
31
  show: import("@angular/core").InputSignal<boolean>;
29
32
  config: import("@angular/core").InputSignal<FilterPanelConfig[]>;
@@ -34,18 +37,32 @@ export declare class FilterPanelComponent implements OnInit {
34
37
  filterCount: number;
35
38
  }>;
36
39
  filterForm: FormGroup;
37
- lastAppliedData: any;
40
+ private formSubscription?;
41
+ private _formValueSignal;
42
+ lastAppliedData: WritableSignal<Record<string, any> | null>;
38
43
  dateRangeSelectedDates: WritableSignal<IRSelectedDatesConfig>;
39
- getFilterCount(): number;
44
+ filterCount: import("@angular/core").Signal<number>;
40
45
  ngOnInit(): void;
46
+ ngOnDestroy(): void;
41
47
  initializeFormControls(config: FilterPanelConfig[]): void;
48
+ private subscribeFormChanges;
49
+ private getControl;
50
+ /**
51
+ * Check if config structure has changed (new keys or removed keys)
52
+ * Used to determine if form needs to be rebuilt
53
+ */
54
+ private hasConfigChanged;
42
55
  closePanel(): void;
43
56
  applyFilters(): void;
57
+ resetFilters(): void;
44
58
  handleSelect(event: any, filterKey: string, filter: FilterPanelConfig): void;
45
- onDateChange(event: any, filterKey: string, filter: FilterPanelConfig): void;
46
59
  handleCheckbox(event: any, filterKey: string, checkboxValue: string, filter: FilterPanelConfig): void;
60
+ onDateChange(event: any, filterKey: string, filter: FilterPanelConfig): void;
47
61
  clearFormValues(): void;
48
- resetFilters(): void;
62
+ /**
63
+ * Applies filter.selectedValue when parent provides selectedValue.
64
+ * Called by the config effect (so runs on initial load and on config changes).
65
+ */
49
66
  setFilterValue(config: FilterPanelConfig[]): void;
50
67
  static ɵfac: i0.ɵɵFactoryDeclaration<FilterPanelComponent, never>;
51
68
  static ɵcmp: i0.ɵɵComponentDeclaration<FilterPanelComponent, "mis-filter-panel", never, { "show": { "alias": "show"; "required": false; "isSignal": true; }; "config": { "alias": "config"; "required": true; "isSignal": true; }; "emitFiltersAfterSettingNewValues": { "alias": "emitFiltersAfterSettingNewValues"; "required": false; "isSignal": true; }; }, { "onClose": "onClose"; "onApply": "onApply"; }, never, never, false, never>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mis-crystal-design-system",
3
- "version": "18.1.8",
3
+ "version": "18.1.9",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "*",
6
6
  "@angular/core": "*",
@@ -40,6 +40,12 @@
40
40
  "esm": "./esm2022/async-search-dropdown/mis-crystal-design-system-async-search-dropdown.mjs",
41
41
  "default": "./fesm2022/mis-crystal-design-system-async-search-dropdown.mjs"
42
42
  },
43
+ "./button": {
44
+ "types": "./button/index.d.ts",
45
+ "esm2022": "./esm2022/button/mis-crystal-design-system-button.mjs",
46
+ "esm": "./esm2022/button/mis-crystal-design-system-button.mjs",
47
+ "default": "./fesm2022/mis-crystal-design-system-button.mjs"
48
+ },
43
49
  "./chip": {
44
50
  "types": "./chip/index.d.ts",
45
51
  "esm2022": "./esm2022/chip/mis-crystal-design-system-chip.mjs",
@@ -58,12 +64,6 @@
58
64
  "esm": "./esm2022/checkbox/mis-crystal-design-system-checkbox.mjs",
59
65
  "default": "./fesm2022/mis-crystal-design-system-checkbox.mjs"
60
66
  },
61
- "./button": {
62
- "types": "./button/index.d.ts",
63
- "esm2022": "./esm2022/button/mis-crystal-design-system-button.mjs",
64
- "esm": "./esm2022/button/mis-crystal-design-system-button.mjs",
65
- "default": "./fesm2022/mis-crystal-design-system-button.mjs"
66
- },
67
67
  "./daterangepicker_v2": {
68
68
  "types": "./daterangepicker_v2/index.d.ts",
69
69
  "esm2022": "./esm2022/daterangepicker_v2/mis-crystal-design-system-daterangepicker_v2.mjs",