@mediusinc/mng-commons 7.0.0-rc.3 → 7.0.0-rc.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/mediusinc-mng-commons-core.mjs +62 -74
- package/fesm2022/mediusinc-mng-commons-core.mjs.map +1 -1
- package/fesm2022/mediusinc-mng-commons-form-api.mjs +30 -149
- package/fesm2022/mediusinc-mng-commons-form-api.mjs.map +1 -1
- package/fesm2022/mediusinc-mng-commons-form.mjs +103 -102
- package/fesm2022/mediusinc-mng-commons-form.mjs.map +1 -1
- package/fesm2022/mediusinc-mng-commons-table-column-toggle.component-Bhs_bBBv.mjs +30 -0
- package/fesm2022/{mediusinc-mng-commons-table-column-toggle.component-DnEnjeJ9.mjs.map → mediusinc-mng-commons-table-column-toggle.component-Bhs_bBBv.mjs.map} +1 -1
- package/fesm2022/{mediusinc-mng-commons-table-mediusinc-mng-commons-table-BuhoFRkG.mjs → mediusinc-mng-commons-table-mediusinc-mng-commons-table-CY5FbLvW.mjs} +116 -95
- package/fesm2022/mediusinc-mng-commons-table-mediusinc-mng-commons-table-CY5FbLvW.mjs.map +1 -0
- package/fesm2022/mediusinc-mng-commons-table.mjs +1 -1
- package/fesm2022/mediusinc-mng-commons-tableview-api.mjs +14 -17
- package/fesm2022/mediusinc-mng-commons-tableview-api.mjs.map +1 -1
- package/fesm2022/mediusinc-mng-commons-tableview.mjs +159 -170
- package/fesm2022/mediusinc-mng-commons-tableview.mjs.map +1 -1
- package/package.json +22 -22
- package/{core/index.d.ts → types/mediusinc-mng-commons-core.d.ts} +1 -12
- package/{form/api/index.d.ts → types/mediusinc-mng-commons-form-api.d.ts} +12 -58
- package/{form/index.d.ts → types/mediusinc-mng-commons-form.d.ts} +2 -0
- package/{table/index.d.ts → types/mediusinc-mng-commons-table.d.ts} +20 -2
- package/{tableview/api/index.d.ts → types/mediusinc-mng-commons-tableview-api.d.ts} +4 -4
- package/{tableview/index.d.ts → types/mediusinc-mng-commons-tableview.d.ts} +9 -11
- package/version-info.json +3 -3
- package/fesm2022/mediusinc-mng-commons-table-column-toggle.component-DnEnjeJ9.mjs +0 -30
- package/fesm2022/mediusinc-mng-commons-table-mediusinc-mng-commons-table-BuhoFRkG.mjs.map +0 -1
- /package/{filter/index.d.ts → types/mediusinc-mng-commons-filter.d.ts} +0 -0
- /package/{model/class/index.d.ts → types/mediusinc-mng-commons-model-class.d.ts} +0 -0
- /package/{model/index.d.ts → types/mediusinc-mng-commons-model.d.ts} +0 -0
- /package/{table/api/class/index.d.ts → types/mediusinc-mng-commons-table-api-class.d.ts} +0 -0
- /package/{table/api/index.d.ts → types/mediusinc-mng-commons-table-api.d.ts} +0 -0
- /package/{tableview/api/class/index.d.ts → types/mediusinc-mng-commons-tableview-api-class.d.ts} +0 -0
- /package/{index.d.ts → types/mediusinc-mng-commons.d.ts} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mediusinc-mng-commons-form.mjs","sources":["../../form/src/components/autocomplete/autocomplete.component.ts","../../form/src/components/autocomplete/autocomplete.component.html","../../form/src/components/datetime-picker/datetime-picker.component.ts","../../form/src/components/datetime-picker/datetime-picker.component.html","../../form/src/components/date-range/date-range.component.ts","../../form/src/components/date-range/date-range.component.html","../../form/src/components/dropdown/dropdown.component.ts","../../form/src/components/dropdown/dropdown.component.html","../../form/src/components/number-range/number-range.component.ts","../../form/src/components/number-range/number-range.component.html","../../form/src/directives/input-empty-value.directive.ts","../../form/src/directives/input-trim.directive.ts","../../form/src/components/autocomplete/autocomplete-template.directive.ts","../../form/src/components/date-range/date-range-template.directive.ts","../../form/src/components/dropdown/dropdown-template.directive.ts","../../form/src/components/number-range/number-range-template.directive.ts","../../form/src/components/datetime-picker/datetime-picker-template.directive.ts","../../form/src/index.ts","../../form/src/mediusinc-mng-commons-form.ts"],"sourcesContent":["import {NgTemplateOutlet} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n DestroyRef,\n ExistingProvider,\n Injector,\n OnInit,\n ViewEncapsulation,\n booleanAttribute,\n computed,\n effect,\n forwardRef,\n inject,\n input,\n output,\n signal,\n viewChild\n} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {ControlValueAccessor, FormsModule, NG_VALUE_ACCESSOR} from '@angular/forms';\n\nimport {StrictTranslation, TranslatePipe, TranslateService, TranslationObject} from '@ngx-translate/core';\nimport {AutoComplete, AutoCompleteCompleteEvent, AutoCompleteSelectEvent, AutoCompleteUnselectEvent} from 'primeng/autocomplete';\nimport {InputGroup} from 'primeng/inputgroup';\nimport {InputGroupAddon} from 'primeng/inputgroupaddon';\nimport {Observable, ReplaySubject, Subscription, of, switchMap, take} from 'rxjs';\nimport {map} from 'rxjs/operators';\n\nimport {\n CommonsInternalError,\n DataListParams,\n FilterMatchMode,\n ILookupDataProvider,\n LoggerService,\n fromSubscribeError,\n getErrorLogLevel,\n narrowI18nToTranslation,\n toObservable\n} from '@mediusinc/mng-commons/core';\nimport {InputTrimType} from '@mediusinc/mng-commons/form/api';\n\nimport {AutocompleteTemplateDirective} from './autocomplete-template.directive';\n\nexport const AUTOCOMPLETE_VALUE_ACCESSOR: ExistingProvider = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => AutocompleteComponent),\n multi: true\n};\n\n@Component({\n selector: 'mng-autocomplete',\n templateUrl: './autocomplete.component.html',\n styles: `\n .has-prepends .p-autocomplete-input-multiple {\n border-top-left-radius: 0 !important;\n border-bottom-left-radius: 0 !important;\n }\n p-inputgroup {\n font-size: 1rem;\n }\n `,\n encapsulation: ViewEncapsulation.None,\n providers: [AUTOCOMPLETE_VALUE_ACCESSOR],\n imports: [TranslatePipe, FormsModule, AutoComplete, InputGroup, InputGroupAddon, NgTemplateOutlet],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class AutocompleteComponent implements ControlValueAccessor, OnInit {\n private readonly injector = inject(Injector);\n private readonly destroyRef = inject(DestroyRef);\n private readonly translate = inject(TranslateService);\n private readonly logger = inject(LoggerService).create('AutocompleteComponent');\n\n public dataProvider = input.required<ILookupDataProvider<any, any, any, any>>();\n public optionsTrackProperty = input<string>();\n public optionsValuePropertyInit = input<string | undefined>(undefined, {alias: 'optionsValueProperty'});\n public optionsLabelPropertyInit = input<string | undefined>(undefined, {alias: 'optionsLabelProperty'});\n public optionsLabelTranslate = input(false, {transform: booleanAttribute});\n public inlineSearch = input(false, {transform: booleanAttribute});\n public openOnFocus = input(false, {transform: booleanAttribute});\n public multiselect = input(false, {transform: booleanAttribute});\n public placeholder = input<string>();\n public className = input<string>();\n public dropdownClassName = input<string>();\n public showClear = input(false, {transform: booleanAttribute});\n public autoClear = input(false, {transform: booleanAttribute});\n public selectFirst = input(false, {transform: booleanAttribute}); //on every input field change return first given value (or null)\n public searchTrim = input<InputTrimType | undefined>(undefined);\n public disabledInput = input<boolean, unknown>(false, {transform: booleanAttribute, alias: 'disabled'});\n public readonly templates = input<AutocompleteTemplateDirective[]>([]);\n public valueChange = output<any>();\n // eslint-disable-next-line @angular-eslint/no-output-native\n public blur = output<Event>();\n\n private primeAutocomplete = viewChild(AutoComplete);\n\n private isInited = false;\n private searchSubscription: Subscription | null = null;\n private dataProviderService: any = null;\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n private onChangeFn: any = () => {};\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n private onTouchedFn: any = () => {};\n\n private _value?: any | null;\n private _rawValue?: any | null;\n public ngModelValue = signal<undefined | null | any>(undefined);\n\n private _disabled = signal(false);\n public disabled = computed(() => this._disabled() || this.disabledInput());\n\n public suggestions = signal<Array<any>>([]);\n private isPanelShown = false;\n private isFocused = false;\n private userSelectedItem?: any | any[];\n private queryResultCacheSubject?: ReplaySubject<any>;\n private currentQuery?: string;\n\n public readonly prependTemplates = computed(() => this.templates().filter(t => t.name() === 'prepend'));\n public readonly appendTemplates = computed(() => this.templates().filter(t => t.name() === 'append'));\n\n public optionsLabelProperty = computed(() => {\n if (this.optionsLabelTranslate()) {\n // setup translation properties\n if (this.optionsLabelPropertyInit()) {\n return `${this.optionsLabelPropertyInit()}_i18n`;\n } else if (!this.optionsLabelPropertyInit() && !this.optionsValuePropertyInit()) {\n return 'title_i18n';\n } else {\n throw new CommonsInternalError(`Invalid use with value (${this.optionsValuePropertyInit()}) and label (${this.optionsLabelPropertyInit()}) property setup.`, {\n name: 'AutocompleteComponentError'\n });\n }\n }\n\n return this.optionsLabelPropertyInit();\n });\n public optionsValueProperty = computed(() => {\n if (this.optionsLabelTranslate()) {\n // setup translation properties\n if (!this.optionsLabelPropertyInit() && !this.optionsValuePropertyInit()) {\n return 'value';\n } else if (!this.optionsLabelPropertyInit()) {\n throw new CommonsInternalError(`Invalid use with value (${this.optionsValuePropertyInit()}) and label (${this.optionsLabelPropertyInit()}) property setup.`, {\n name: 'AutocompleteComponentError'\n });\n }\n }\n\n return this.optionsValuePropertyInit();\n });\n\n public get value() {\n return this._value;\n }\n\n constructor() {\n effect(() => {\n this._value = this.convertValueWithOptionsValuePropSetting(this.ngModelValue());\n this._rawValue = this.ngModelValue();\n });\n }\n\n ngOnInit() {\n this.setItemsAndDataProvider();\n\n if (this.selectFirst() && !this._value) {\n this.onSearch(undefined, true);\n }\n }\n\n onSearch(event?: AutoCompleteCompleteEvent, isInit = false) {\n if (!this.inlineSearch()) {\n this.searchSubscription?.unsubscribe();\n }\n const optionsLabelProperty = this.optionsLabelProperty();\n const query = this.trimValue(event?.query);\n this.currentQuery = query;\n\n const params: DataListParams = {\n limit: 50\n };\n if (optionsLabelProperty) {\n params.sort = [{property: optionsLabelProperty}];\n }\n if (query && query.length > 0 && optionsLabelProperty) {\n params.filters = {\n [optionsLabelProperty]: {\n value: query,\n matchMode: FilterMatchMode.StartsWith\n }\n };\n }\n\n if (!this.queryResultCacheSubject || !this.inlineSearch()) {\n if (!this.queryResultCacheSubject) {\n this.queryResultCacheSubject = new ReplaySubject<any>(1);\n }\n this.searchSubscription = this.getLookup(params, query)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe({\n next: items => {\n this.queryResultCacheSubject?.next(items);\n this.setSuggestionsFromItems(items, query);\n if (isInit && !this._value) {\n this.selectFirstItem();\n }\n },\n error: err => {\n this.setSuggestionsFromItems([], query);\n\n const error = fromSubscribeError(err, 'AutocompleteComponentError', {\n search: query,\n params: params\n });\n this.logger.log(error, getErrorLogLevel(error));\n }\n });\n } else if (this.queryResultCacheSubject) {\n this.searchSubscription = this.queryResultCacheSubject.pipe(take(1)).subscribe(result => {\n this.setSuggestionsFromItems(result, query);\n });\n }\n }\n\n private selectFirstItem() {\n if (!this.selectFirst() || this.multiselect()) return;\n\n const suggestions = this.suggestions();\n if (suggestions.length > 0 && !this.userSelectedItem) {\n this.setValue(suggestions[0]);\n } else if (!this.userSelectedItem) {\n // handles the case if the user provides an input and de-focuses the input field before suggestions are loaded or if there are no suggestions at all\n this.setValue(null);\n }\n }\n\n /**\n * Triggered by user when selecting an item from an autocomplete suggestion list.\n */\n onSelect(event: AutoCompleteSelectEvent) {\n let newValue = event.value;\n if (this.multiselect() && Array.isArray(this._rawValue) && this._rawValue.length > 0) {\n newValue = [...this._rawValue, newValue];\n } else if (this.multiselect()) {\n newValue = [newValue];\n }\n\n this.setValue(newValue, true);\n this.isFocused = false;\n }\n\n /**\n * Triggered by user when selecting an item from an autocomplete suggestion list.\n */\n onUnselect(event: AutoCompleteUnselectEvent) {\n let newValue = null;\n if (this.multiselect() && Array.isArray(this._rawValue) && this._rawValue.length > 0) {\n const cmpProp = this.optionsValueProperty() ?? this.optionsTrackProperty();\n newValue = this._rawValue.filter(i => (cmpProp ? i[cmpProp] !== event.value[cmpProp] : i !== event.value));\n } else if (this.multiselect()) {\n newValue = [];\n }\n this.setValue(newValue, true);\n this.isFocused = false;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n onFocus(event: Event) {\n this.isFocused = true;\n }\n\n /**\n * calls the selectFirst item anytime the input field goes out of focus and if the suggestions panel is not displayed.\n */\n onBlur(event: Event) {\n this.isFocused = false;\n const inputSearchVal = this.primeAutocomplete()?.inputEL?.nativeElement?.value;\n if (this.autoClear() && this._value != null && (inputSearchVal == null || inputSearchVal === '')) {\n this.propagateValueChange(null);\n } else if (!this.isPanelShown) {\n this.selectFirstItem();\n }\n this.onTouchedFn();\n this.blur.emit(event);\n }\n\n onShow() {\n this.isPanelShown = true;\n }\n\n /**\n * calls the selectFirst item anytime the suggestions panel is closed and input field isn't focused.\n */\n onHide() {\n this.isPanelShown = false;\n if (!this.isFocused) {\n this.selectFirstItem();\n }\n }\n\n onClear() {\n this.propagateValueChange(this.multiselect() ? [] : null);\n }\n\n registerOnChange(fn: any): void {\n this.onChangeFn = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouchedFn = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n setTimeout(() => this._disabled.set(isDisabled));\n }\n\n writeValue(value: any): void {\n this.setItemsAndDataProvider();\n\n // write value immediately - it is important so that first select is not triggered!\n this._value = value;\n\n const optionsValuePropertyInit = this.optionsValuePropertyInit();\n if (optionsValuePropertyInit && value != null && typeof value !== 'object') {\n const defaultItem: any = {[optionsValuePropertyInit]: value};\n const optionsLabelProperty = this.optionsLabelProperty();\n if (optionsLabelProperty) {\n defaultItem[optionsLabelProperty] = value;\n }\n\n const matchedItem = this.suggestions().find(i => i[optionsValuePropertyInit] === value);\n if (matchedItem) {\n this.setValueFromWrite(matchedItem);\n } else {\n this.getLookup({\n limit: 50,\n filters: {\n [optionsValuePropertyInit]: {\n value: value,\n matchMode: FilterMatchMode.Equals\n }\n }\n })\n .pipe(take(1))\n .subscribe({\n next: items => {\n let isMatch = false;\n if (items.length === 1) {\n this.setValueFromWrite(items[0]);\n isMatch = true;\n } else if (items.length > 1) {\n // for lookup data providers not using query params\n const matchedItem = items.find(i => i[optionsValuePropertyInit] === value);\n if (matchedItem) {\n this.setValueFromWrite(matchedItem);\n isMatch = true;\n }\n }\n\n if (!isMatch) {\n this.setValueFromWrite(defaultItem);\n }\n },\n error: () => {\n this.setValueFromWrite(defaultItem);\n }\n });\n }\n } else if (optionsValuePropertyInit && Array.isArray(value) && value?.length > 0) {\n const matchedItems = value?.map(v => this.suggestions().find(i => v == i[optionsValuePropertyInit])).filter(Boolean);\n if (matchedItems && matchedItems.length === value?.length) {\n this.setValueFromWrite(matchedItems);\n } else {\n this.getLookup({\n limit: 50\n })\n .pipe(take(1))\n .subscribe({\n next: items => {\n const matchedItems = value?.map(v => items.find(i => v == i[optionsValuePropertyInit])).filter(Boolean);\n if (matchedItems && matchedItems.length === value?.length) {\n this.setValueFromWrite(matchedItems);\n } else {\n this.setValueFromWrite(value);\n }\n },\n error: () => {\n this.setValueFromWrite(value);\n }\n });\n }\n } else {\n this.setValueFromWrite(value);\n }\n }\n\n private setItemsAndDataProvider() {\n if (this.isInited) {\n return;\n }\n\n const dataProvider = this.dataProvider();\n this.dataProviderService = dataProvider.serviceType ? this.injector.get<any>(dataProvider.serviceType) : null;\n\n this.isInited = true;\n }\n\n private setValueFromWrite(value: any | any[] | null | undefined) {\n if (value && this.optionsLabelTranslate()) {\n value = this.i18nPopulateItems([value], this.translate.instant(this.i18nGetItemsKeys([value])))[0];\n }\n if (this.ngModelValue() == null && this._rawValue != null) {\n // value must first be set to synchronise states, then in next async cycle set to wanted null value\n this.ngModelValue.set(this._rawValue);\n setTimeout(() => {\n this.ngModelValue.set(value);\n });\n } else {\n this.ngModelValue.set(value);\n }\n }\n\n private getLookup(params: DataListParams, query?: string): Observable<Array<any>> {\n return toObservable(this.dataProvider().lookup(params, this.dataProviderService, query)).pipe(\n switchMap(items => {\n if (this.optionsLabelTranslate()) {\n const translatedItems = this.i18nGetItemsKeys(items);\n if (translatedItems.length === 0) {\n return of([]);\n }\n\n return this.translate.stream(translatedItems).pipe(map((translations: TranslationObject) => this.i18nPopulateItems(items, translations)));\n } else {\n return of(items);\n }\n })\n );\n }\n\n private i18nGetItemsKeys(items: Array<any>): Array<string> {\n return items.map(\n item => (typeof item === 'object' && this.optionsLabelPropertyInit() ? (item[this.optionsLabelPropertyInit() as keyof object] as string) : item) as string\n );\n }\n\n private i18nPopulateItems(items: Array<any>, i18nMap: StrictTranslation): Array<any> {\n return items.map(item => {\n if (typeof item === 'object' && this.optionsLabelPropertyInit()) {\n const label = item[this.optionsLabelPropertyInit() as keyof object] as string;\n const translation: string | undefined = narrowI18nToTranslation(i18nMap, label);\n if (translation) {\n return {...item, [this.optionsLabelProperty()!]: translation};\n }\n return {...item};\n } else {\n const translation = narrowI18nToTranslation(i18nMap, item);\n return {\n [this.optionsLabelProperty()!]: translation ?? item,\n [this.optionsValueProperty()!]: item\n };\n }\n });\n }\n\n private setSuggestionsFromItems(items: Array<any>, query?: string) {\n if (query && query !== this.currentQuery) {\n // Skip processing to avoid outdated queries during inline search updates.\n return;\n }\n if (this.inlineSearch()) {\n const queryLowerCase = query?.toLowerCase() ?? '';\n const filteredItems = items.filter(i => {\n let itemLabel = i;\n const optionsLabelProperty = this.optionsLabelProperty();\n if (optionsLabelProperty && typeof i === 'object') {\n itemLabel = i[optionsLabelProperty];\n }\n if (itemLabel == null) {\n return queryLowerCase == null || !queryLowerCase.length;\n }\n if (typeof itemLabel !== 'string') {\n itemLabel = itemLabel.toString();\n }\n return itemLabel.toLowerCase().startsWith(queryLowerCase);\n });\n this.suggestions.set([...filteredItems]);\n this.userSelectedItem = undefined;\n } else {\n this.suggestions.set([...items]);\n this.userSelectedItem = undefined;\n }\n }\n\n /**\n * Selects and sets new value.\n *\n * @param value Represents the object value.\n * @param fromUser If set value is triggered from user.\n */\n private setValue(value: any | any[] | null | undefined, fromUser = false) {\n if (fromUser) {\n this.userSelectedItem = value;\n } else {\n this.ngModelValue.set(value);\n }\n\n this.propagateValueChange(value);\n }\n\n private trimValue(value: string | undefined) {\n switch (this.searchTrim()) {\n case 'start':\n return value?.trimStart();\n case 'end':\n return value?.trimEnd();\n case 'both':\n return value?.trim();\n default:\n return value;\n }\n }\n\n /**\n * Propagates final value to _value, on change fn and outputs.\n */\n private propagateValueChange(value: any | any[] | null | undefined) {\n this._value = this.convertValueWithOptionsValuePropSetting(value);\n this._rawValue = value;\n this.onChangeFn(this._value);\n this.valueChange.emit(this._value);\n }\n\n private convertValueWithOptionsValuePropSetting(value: any | any[] | null | undefined) {\n const optionsValueProperty = this.optionsValueProperty();\n if (!optionsValueProperty) {\n return value;\n }\n if (this.multiselect() && Array.isArray(value)) {\n return value.map((item: any) => {\n if (item && typeof item === 'object') {\n return item[optionsValueProperty];\n }\n return null;\n });\n } else if (value && typeof value === 'object') {\n return value[optionsValueProperty];\n } else {\n return value;\n }\n }\n}\n","<p-inputgroup [class]=\"{'has-prepends': prependTemplates().length > 0}\">\n @for (pt of prependTemplates(); track $index) {\n <p-inputgroup-addon>\n <ng-container *ngTemplateOutlet=\"pt.template\"></ng-container>\n </p-inputgroup-addon>\n }\n <p-autoComplete\n [ngModel]=\"ngModelValue()\"\n [placeholder]=\"placeholder()\"\n [dropdown]=\"true\"\n [dataKey]=\"optionsTrackProperty()\"\n [optionLabel]=\"optionsLabelProperty()\"\n [suggestions]=\"suggestions()\"\n [multiple]=\"multiselect()\"\n [showEmptyMessage]=\"true\"\n [emptyMessage]=\"'mngAutocomplete.noMatches' | translate\"\n [styleClass]=\"className()\"\n [panelStyleClass]=\"dropdownClassName()\"\n [inputStyle]=\"{borderTopRightRadius: '0', borderBottomRightRadius: '0'}\"\n [minLength]=\"openOnFocus() ? 0 : 1\"\n [showClear]=\"showClear()\"\n [forceSelection]=\"autoClear()\"\n [disabled]=\"disabled()\"\n [completeOnFocus]=\"openOnFocus()\"\n (completeMethod)=\"onSearch($event)\"\n (onSelect)=\"onSelect($event)\"\n (onUnselect)=\"onUnselect($event)\"\n (onFocus)=\"onFocus($event)\"\n (onBlur)=\"onBlur($event)\"\n (onClear)=\"onClear()\"\n (onShow)=\"onShow()\"\n (onHide)=\"onHide()\"\n appendTo=\"body\"\n dropdownMode=\"current\">\n </p-autoComplete>\n @for (at of appendTemplates(); track $index) {\n <p-inputgroup-addon>\n <ng-container *ngTemplateOutlet=\"at.template\"></ng-container>\n </p-inputgroup-addon>\n }\n</p-inputgroup>\n","import {NgTemplateOutlet} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n ExistingProvider,\n ViewEncapsulation,\n booleanAttribute,\n computed,\n forwardRef,\n input,\n numberAttribute,\n output,\n signal,\n viewChild\n} from '@angular/core';\nimport {ControlValueAccessor, FormsModule, NG_VALIDATORS, NG_VALUE_ACCESSOR, ValidationErrors, Validator} from '@angular/forms';\n\nimport {DatePicker} from 'primeng/datepicker';\nimport {InputGroup} from 'primeng/inputgroup';\nimport {InputGroupAddon} from 'primeng/inputgroupaddon';\nimport {InputMask, InputMaskModule} from 'primeng/inputmask';\nimport {Listbox} from 'primeng/listbox';\nimport {Overlay} from 'primeng/overlay';\n\nimport {booleanWithDefaultAttribute} from '@mediusinc/mng-commons/core';\n\nimport {DatetimePickerTemplateDirective} from './datetime-picker-template.directive';\n\nexport const DATETIME_PICKER_VALUE_ACCESSOR: ExistingProvider = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => DatetimePickerComponent),\n multi: true\n};\n\nexport const DATETIME_PICKER_VALIDATOR: ExistingProvider = {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => DatetimePickerComponent),\n multi: true\n};\n\ntype ParsedTime = {hours: number; minutes: number; seconds: number; milliseconds: number};\n\n@Component({\n selector: 'mng-datetime-picker',\n templateUrl: './datetime-picker.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [DATETIME_PICKER_VALUE_ACCESSOR, DATETIME_PICKER_VALIDATOR],\n imports: [DatePicker, InputGroup, InputGroupAddon, InputMaskModule, NgTemplateOutlet, FormsModule, Listbox, Overlay],\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'block'\n },\n styleUrl: './datetime-picker.component.css'\n})\nexport class DatetimePickerComponent implements ControlValueAccessor, Validator {\n // Track form state/callbacks\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n private onChangeFn: (val: Date | Date[] | null) => void = () => {};\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n private onTouchedFn: () => void = () => {};\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n private onValidatorChangeFn: () => void = () => {};\n\n //////////////////////\n //////////////////////\n //////////////////////\n\n public readonly templates = input<DatetimePickerTemplateDirective[]>([]);\n\n protected readonly prependTemplates = computed(() => this.templates().filter(t => t.name() === 'prepend'));\n protected readonly appendTemplates = computed(() => this.templates().filter(t => t.name() === 'append'));\n\n // custom inputs\n public readonly timeInput = input(false, {alias: 'time', transform: booleanAttribute});\n public readonly timeSelect = input(true, {transform: v => booleanWithDefaultAttribute(v, true)});\n public readonly timeSelectInterval = input(60, {transform: v => numberAttribute(v, 60)}); // minutes\n public readonly secondsInput = input(false, {alias: 'seconds', transform: booleanAttribute});\n public readonly milliseconds = input(false, {transform: booleanAttribute});\n public readonly primeTimePicker = input(false, {transform: booleanAttribute});\n\n // default inputs\n public readonly dateFormat = input<string | undefined>('dd/mm/yy');\n public readonly placeholder = input<string>();\n public readonly minDate = input<Date | null>(null);\n public readonly maxDate = input<Date | null>(null);\n public readonly disabledInput = input(false, {alias: 'disabled', transform: booleanAttribute});\n public readonly required = input(false, {transform: booleanAttribute});\n public readonly showIcon = input(true, {transform: booleanAttribute});\n public readonly showButtonBar = input(false, {transform: booleanAttribute});\n public readonly showClear = input(false, {transform: booleanAttribute});\n public readonly className = input<string>('');\n public readonly panelStyleClass = input<string>();\n public readonly inputStyleClass = input<string>();\n public readonly dateRange = input(false, {transform: booleanAttribute});\n\n // eslint-disable-next-line @angular-eslint/no-output-native\n public readonly blur = output<Event>();\n\n private readonly maskInput = viewChild(InputMask);\n\n // signals\n protected readonly time = computed(() => this.timeInput() || this.seconds() || this.milliseconds());\n protected readonly seconds = computed(() => this.secondsInput() || this.milliseconds());\n // this value will be inside the date\n protected readonly displayDate = signal<Date | Date[] | null>(null);\n protected readonly selectedDate = signal<Date | Date[] | null>(null);\n // bind to time selection. Type is string, but any manipulation is done in a Date object\n protected readonly selectedTime = signal<string | null>(null);\n\n protected readonly overlayVisible = signal(false);\n // signal for formControl disabled state\n protected readonly _disabled = signal(false);\n protected readonly disabled = computed(() => this.disabledInput() || this._disabled());\n // mask: it must be all nine otherwise will auto complete before you start\n // format: ensures that even if the user doesn't enter the whole value, the rest will fill out by itself\n // placeholder: just a nice placeholder for user convenience\n protected readonly inputMaskConfig = computed(() => {\n if (this.seconds()) {\n if (this.milliseconds()) {\n return {mask: '99:99:99.999', format: '00:00:00.000', placeholder: this.disabled() ? undefined : '12:00:00.000'};\n } else {\n return {mask: '99:99:99', format: '00:00:00', placeholder: this.disabled() ? undefined : '12:00:00'};\n }\n } else {\n return {mask: '99:99', format: '00:00', placeholder: this.disabled() ? undefined : '12:00'};\n }\n });\n protected readonly selectOptions = computed(() => {\n const options: Array<{label: string; value: string}> = [];\n\n // 24 * 60\n for (let minutes = 0; minutes < 1440; minutes += this.timeSelectInterval()) {\n const interval = new Date(0, 0, 0, 0, minutes);\n options.push({\n label: this.formatOptionLabel(interval),\n value: this.formatOptionValue(interval)\n });\n }\n\n return options;\n });\n protected readonly timeValid = signal(true);\n\n //////////////////////\n //////////////////////\n //////////////////////\n\n writeValue(obj: any): void {\n if (this.dateRange()) {\n const value =\n Array.isArray(obj) && (obj?.length ?? 0) >= 2\n ? obj\n .slice(0, 2)\n .map(v => (typeof v === 'string' || typeof v === 'number' || v instanceof Date ? new Date(v) : null))\n .filter(v => v != null)\n : null;\n const normalized = value && value.length === 2 ? value : null;\n this.displayDate.set(normalized);\n } else {\n let value = typeof obj === 'string' || typeof obj === 'number' || obj instanceof Date ? new Date(obj) : null;\n if (value && isNaN(value.getTime())) value = null;\n const dateValue = value ? new Date(value.getFullYear(), value.getMonth(), value.getDate()) : null;\n // keep this way, because of time zones\n let timeValue = value\n ? `${value.getHours().toString().padStart(2, '0')}:` +\n `${value.getMinutes().toString().padStart(2, '0')}:` +\n `${value.getSeconds().toString().padStart(2, '0')}.` +\n `${value.getMilliseconds().toString().padStart(3, '0')}`\n : null;\n if (this.time() && !this.seconds()) {\n timeValue = timeValue?.substring(0, 6) ?? null;\n } else if (this.time() && !this.milliseconds()) {\n timeValue = timeValue?.substring(0, 8) ?? null;\n }\n\n this.displayDate.set(value); // Date Object\n this.selectedDate.set(dateValue); // Only Date\n\n // Only time as a string\n this.selectedTime.set(timeValue);\n }\n }\n\n registerOnChange(fn: (val: Date | Date[] | null) => void): void {\n this.onChangeFn = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouchedFn = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this._disabled.set(isDisabled);\n }\n\n registerOnValidatorChange?(fn: () => void): void {\n this.onValidatorChangeFn = fn; // store reference if needed\n }\n\n validate(): ValidationErrors | null {\n this.timeValid.set(this.isTimeParsedValid(this.parseTime(this.selectedTime())));\n return this.timeValid() ? null : {invalidTime: true};\n }\n\n private isTimeParsedValid(time: ParsedTime | null): boolean {\n // Validate ranges\n return !this.time() || time == null || (time.hours <= 23 && time.minutes <= 59 && time.seconds <= 59 && time.milliseconds <= 999);\n }\n\n private parseTime(time: string | null): ParsedTime | null {\n if (time == null) {\n return null;\n }\n\n const cleaned = time.replace(/_/g, '0');\n // Regex for all formats: HH:mm, HH:mm:ss, HH:mm:ss.SSS\n const regex = /^(\\d{2}):(\\d{2})(?::(\\d{2}))?(?:\\.(\\d{0,3}))?$/;\n const match = cleaned.match(regex);\n\n if (match) {\n const hh = +match[1]; // Hours\n const mm = +match[2]; // Minutes\n const ss = match[3] ? +match[3] : 0; // Seconds (default 0)\n const ms = match[4] ? +match[4].padEnd(3, '0') : 0; // Milliseconds (default 0)\n\n return {hours: hh, minutes: mm, seconds: ss, milliseconds: ms};\n }\n\n return null;\n }\n\n //////////////////////\n //////////////////////\n //////////////////////\n\n protected onDateEnter(): void {\n const value = this.displayDate();\n if (value != null) {\n this.onDateSelect(value);\n }\n }\n\n protected onDateSelect(date: Date | Date[]): void {\n if (Array.isArray(this.displayDate())) {\n this.onChangeFn(this.displayDate());\n return;\n }\n\n this.selectedDate.set(date);\n\n if (this.time() && !this.primeTimePicker()) this.combineAndUpdate();\n else this.onChangeFn(date);\n }\n\n protected onTimeSelect(): void {\n this.combineAndUpdate();\n }\n\n protected onSelectToday(): void {\n this.selectedDate.set(new Date());\n this.combineAndUpdate();\n }\n\n protected onClear(): void {\n this.selectedDate.set(null);\n this.selectedTime.set(null);\n this.displayDate.set(null);\n this.onChangeFn(this.displayDate());\n }\n\n private combineAndUpdate(): void {\n // our base\n const date = this.selectedDate() as Date | null;\n\n // now we need to combine it and change the date value\n const base = date ?? new Date();\n const final = this.timeSelect() ? new Date(base.getFullYear(), base.getMonth(), base.getDate()) : new Date(base);\n\n // if no date, only save when validated\n if (this.time()) {\n let time = this.selectedTime();\n const isMaksInputFocused = this.maskInput()?.focused;\n\n // invalid time (null/empty string). Our input mask has a default value on focus, so you can't just check for null\n if ((time == this.inputMaskConfig().format && !isMaksInputFocused && !this.displayDate()) || time === '') {\n this.maskInput()?.clear(); // triggers combineAndUpdate so we return\n return; // to avoid validation\n }\n\n // if the date is selected first\n if (date != null && time == null) {\n const closestOption = this.findClosestOptionToNow();\n this.selectedTime.set(closestOption.value);\n time = closestOption.value;\n }\n\n const parsedTime = this.parseTime(time);\n if (parsedTime != null && this.isTimeParsedValid(parsedTime)) {\n final.setHours(parsedTime.hours, parsedTime.minutes, parsedTime.seconds, parsedTime.milliseconds);\n this.displayDate.set(final);\n this.onChangeFn(this.displayDate());\n } else {\n this.onValidatorChangeFn();\n }\n } else {\n this.displayDate.set(final);\n this.onChangeFn(this.displayDate());\n }\n }\n\n private formatOptionLabel = (date: Date): string => {\n const hh = date.getHours().toString().padStart(2, '0');\n const mm = date.getMinutes().toString().padStart(2, '0');\n return `${hh}:${mm}`;\n };\n\n private formatOptionValue = (date: Date): string => {\n const hh = date.getHours().toString().padStart(2, '0');\n const mm = date.getMinutes().toString().padStart(2, '0');\n\n // options values must stay true to the format, for the value and dropdown option to stay sync\n if (this.seconds()) {\n if (this.milliseconds()) {\n return `${hh}:${mm}:00.000`;\n } else {\n return `${hh}:${mm}:00`;\n }\n }\n return `${hh}:${mm}`;\n };\n\n private findClosestOptionToNow() {\n const now = new Date();\n const nowMinutes = now.getHours() * 60 + now.getMinutes();\n\n const options = this.selectOptions();\n\n let index = Math.round(nowMinutes / this.timeSelectInterval());\n index = Math.min(index, options.length - 1);\n\n return options[index];\n }\n\n protected handleDateBlur(event: Event) {\n const value = this.displayDate();\n if (value != null) {\n this.onDateSelect(value);\n }\n this.handleBlur(event);\n }\n\n protected handleBlur(event: Event) {\n const value = this.displayDate();\n if (value != null) {\n this.onDateSelect(value);\n }\n this.onTouchedFn();\n this.blur.emit(event);\n }\n\n protected focusTimeInputMask(event: Event, inputMask: InputMask) {\n event.preventDefault();\n inputMask.inputViewChild?.nativeElement.focus();\n }\n\n protected openOverlay() {\n this.overlayVisible.set(true);\n }\n\n protected closeOverlay() {\n this.overlayVisible.set(false);\n }\n}\n","<p-inputgroup class=\"flex-col gap-2\">\n <ng-container *ngTemplateOutlet=\"prependAddons\"></ng-container>\n <!-- Append to body, to prevent overflow in popups (like editable) -->\n <div class=\"flex gap-1\">\n <p-date-picker\n appendTo=\"body\"\n [class]=\"className() + ' basis-1/2 shrink-0'\"\n [panelStyleClass]=\"panelStyleClass()\"\n [inputStyleClass]=\"inputStyleClass()\"\n [minDate]=\"minDate()\"\n [maxDate]=\"maxDate()\"\n [showClear]=\"showClear()\"\n [placeholder]=\"placeholder()\"\n [dateFormat]=\"dateFormat()\"\n [disabled]=\"disabled()\"\n [showTime]=\"time() && primeTimePicker()\"\n [showIcon]=\"showIcon()\"\n [showSeconds]=\"primeTimePicker() && seconds()\"\n [selectionMode]=\"!time() && dateRange() ? 'range' : 'single'\"\n [showButtonBar]=\"showButtonBar()\"\n [inputStyle]=\"{borderTopRightRadius: '0', borderBottomRightRadius: '0'}\"\n [firstDayOfWeek]=\"1\"\n [(ngModel)]=\"displayDate\"\n (onSelect)=\"onDateSelect($event)\"\n (keyup.enter)=\"onDateEnter()\"\n (onBlur)=\"handleDateBlur($event)\"\n (onClear)=\"onClear()\"\n (onTodayClick)=\"onSelectToday()\"\n (onClearClick)=\"onClear()\" />\n @if (time() && !primeTimePicker()) {\n <p-inputgroup class=\"basis-1/2 shrink-0\">\n <p-inputmask\n #InputMask\n class=\"w-full flex\"\n [invalid]=\"!timeValid()\"\n [(ngModel)]=\"selectedTime\"\n (ngModelChange)=\"onTimeSelect()\"\n [disabled]=\"disabled()\"\n [mask]=\"inputMaskConfig().mask\"\n [placeholder]=\"inputMaskConfig().placeholder\"\n [slotChar]=\"inputMaskConfig().format\"\n [showClear]=\"showClear()\"\n (onClear)=\"onClear()\"\n (click)=\"openOverlay()\"\n (onFocus)=\"openOverlay()\"\n (onBlur)=\"closeOverlay()\"\n [style]=\"{borderTopRightRadius: '0', borderBottomRightRadius: '0'}\" />\n <button\n class=\"p-datepicker-dropdown cursor-pointer flex-shrink-0\"\n [disabled]=\"disabled()\"\n [style]=\"{borderTopLeftRadius: '0', borderBottomLeftRadius: '0'}\"\n (click)=\"focusTimeInputMask($event, InputMask)\"\n aria-label=\"Focus time mask input\">\n <i class=\"pi pi-clock\"></i>\n </button>\n </p-inputgroup>\n @if (timeSelect() && !disabled()) {\n <!-- Using display:contents rendering, so that the parents flex gap doesn’t apply to this container -->\n <p-overlay class=\"contents\" [(visible)]=\"overlayVisible\" appendTo=\"body\">\n <!-- Refresh event is unnecessary, because it shares the value with the MaskInput, which then triggers ngModelChange.\n It still exists because defaultPropagation closes the popup in filters/editor on select, and disabling it, doesn't trigger the change event -->\n <p-listbox\n class=\"mr-10\"\n [options]=\"selectOptions()\"\n optionLabel=\"label\"\n optionValue=\"value\"\n [(ngModel)]=\"selectedTime\"\n (click)=\"$event.stopPropagation()\"\n (mousedown)=\"$event.preventDefault()\"\n (mouseup)=\"closeOverlay()\"\n (onChange)=\"onTimeSelect()\" />\n </p-overlay>\n }\n }\n </div>\n\n <ng-container *ngTemplateOutlet=\"appendAddons\"></ng-container>\n</p-inputgroup>\n\n<ng-template #prependAddons>\n @for (pt of prependTemplates(); track $index) {\n <p-inputgroup-addon>\n <ng-container *ngTemplateOutlet=\"pt.template\"></ng-container>\n </p-inputgroup-addon>\n }\n</ng-template>\n<ng-template #appendAddons>\n @for (at of appendTemplates(); track $index) {\n <p-inputgroup-addon>\n <ng-container *ngTemplateOutlet=\"at.template\"></ng-container>\n </p-inputgroup-addon>\n }\n</ng-template>\n","import {NgTemplateOutlet} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n DestroyRef,\n ExistingProvider,\n Injector,\n OnInit,\n ViewEncapsulation,\n booleanAttribute,\n computed,\n effect,\n forwardRef,\n inject,\n input,\n numberAttribute\n} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {\n ControlValueAccessor,\n FormBuilder,\n FormControl,\n FormGroup,\n FormsModule,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n ReactiveFormsModule,\n ValidationErrors,\n Validator,\n Validators\n} from '@angular/forms';\n\nimport {TranslatePipe} from '@ngx-translate/core';\nimport {Divider} from 'primeng/divider';\nimport {InputGroup} from 'primeng/inputgroup';\nimport {InputGroupAddon} from 'primeng/inputgroupaddon';\nimport {merge} from 'rxjs';\n\nimport {booleanWithDefaultAttribute} from '@mediusinc/mng-commons/core';\n\nimport {DatetimePickerComponent} from '../datetime-picker/datetime-picker.component';\nimport {DateRangeTemplateDirective} from './date-range-template.directive';\n\nexport const DATE_RANGE_VALUE_ACCESSOR: ExistingProvider = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => DateRangeComponent),\n multi: true\n};\n\nexport const DATE_RANGE_VALIDATOR: ExistingProvider = {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => DateRangeComponent),\n multi: true\n};\n\n@Component({\n selector: 'mng-date-range',\n templateUrl: './date-range.component.html',\n styleUrl: './date-range.component.css',\n providers: [DATE_RANGE_VALUE_ACCESSOR, DATE_RANGE_VALIDATOR],\n imports: [FormsModule, ReactiveFormsModule, TranslatePipe, DatetimePickerComponent, Divider, InputGroupAddon, NgTemplateOutlet, InputGroup],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n '[class]': 'className()'\n }\n})\nexport class DateRangeComponent implements OnInit, ControlValueAccessor, Validator {\n private readonly formBuilder = inject(FormBuilder);\n private readonly injector = inject(Injector);\n private readonly destroyRef = inject(DestroyRef);\n private readonly cdr = inject(ChangeDetectorRef);\n\n public readonly placeholder = input<string>('');\n public readonly showTime = input(false, {transform: booleanAttribute});\n public readonly showSeconds = input(false, {transform: booleanAttribute});\n public readonly milliseconds = input(false, {transform: booleanAttribute});\n public readonly primeTimePicker = input(false, {transform: booleanAttribute});\n public readonly timeSelect = input(true, {transform: v => booleanWithDefaultAttribute(v, true)});\n public readonly timeSelectInterval = input(60, {transform: v => numberAttribute(v, 60)}); // minutes\n public readonly dateFormat = input<string>();\n public readonly className = input<string>();\n public readonly inputStyleClass = input<string>();\n public readonly required = input(false, {transform: booleanAttribute});\n public readonly disabled = input(false, {\n transform: booleanAttribute\n });\n public readonly vertical = input(false, {transform: booleanAttribute});\n public readonly templates = input<DateRangeTemplateDirective[]>([]);\n\n public readonly prependTemplates = computed(() => this.templates().filter(t => t.name() === 'prepend'));\n public readonly appendTemplates = computed(() => this.templates().filter(t => t.name() === 'append'));\n\n private fromToFormControl!: FormGroup;\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n private onChangeFn: any = () => {};\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n private onTouchedFn: any = () => {};\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n private onValidatorChangeFn: any = () => {};\n\n public get fromCtrl() {\n return this.fromToFormControl.get('from') as FormControl;\n }\n\n public get toCtrl() {\n return this.fromToFormControl.get('to') as FormControl;\n }\n\n public get dateRangeCtrl() {\n return this.fromToFormControl.get('dateRange') as FormControl;\n }\n\n ngOnInit() {\n this.fromToFormControl = this.formBuilder.group({\n from: [null, Validators.required],\n to: [null, Validators.required],\n dateRange: [null, Validators.required]\n });\n\n effect(\n () => {\n this.setDisabledState(this.disabled());\n },\n {injector: this.injector}\n );\n\n merge(this.fromCtrl.valueChanges, this.toCtrl.valueChanges, this.dateRangeCtrl.valueChanges)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => this.onValueChange());\n }\n\n registerOnChange(fn: any): void {\n this.onChangeFn = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouchedFn = fn;\n }\n\n registerOnValidatorChange?(fn: () => void): void {\n this.onValidatorChangeFn = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n if (isDisabled && this.fromToFormControl?.enabled) {\n this.fromToFormControl.disable();\n } else if (!isDisabled && this.fromToFormControl?.disabled) {\n this.fromToFormControl.enable();\n }\n }\n\n onBlur() {\n this.onTouchedFn();\n }\n\n writeValue(obj: any): void {\n let startDate: Date | null = null;\n let endDate: Date | null = null;\n\n if (Array.isArray(obj)) {\n if (obj.length > 0 && (obj[0] instanceof Date || typeof obj[0] === 'string' || typeof obj[0] === 'number')) {\n startDate = new Date(obj[0]);\n }\n if (obj.length > 1 && (obj[1] instanceof Date || typeof obj[1] === 'string' || typeof obj[1] === 'number')) {\n endDate = new Date(obj[1]);\n }\n } else if (obj instanceof Date || typeof obj === 'string' || typeof obj === 'number') {\n startDate = new Date(obj);\n }\n\n if (this.showTime()) {\n this.fromCtrl.setValue(startDate, {emitEvent: false});\n this.toCtrl.setValue(endDate, {emitEvent: false});\n } else if (startDate || endDate) {\n this.dateRangeCtrl.setValue([startDate, endDate], {emitEvent: false});\n } else {\n this.dateRangeCtrl.setValue(null, {emitEvent: false});\n }\n }\n\n validate(): ValidationErrors | null {\n if (!this.required()) return null;\n\n if (this.showTime()) {\n if (this.fromCtrl.hasError('required') || this.toCtrl.hasError('required')) {\n return {\n required: true\n };\n }\n } else {\n if (this.dateRangeCtrl.hasError('required')) {\n return {\n required: true\n };\n }\n }\n\n return null;\n }\n\n private onValueChange() {\n if (this.showTime()) {\n const fromDate = this.fromCtrl.value as Date;\n const toDate = this.toCtrl.value as Date;\n this.onChangeFn([fromDate, toDate]);\n } else {\n const date = this.dateRangeCtrl.value as Date[];\n this.onChangeFn(date);\n }\n }\n}\n","@if (showTime()) {\n <div class=\"flex gap-1\" [class.flex-col]=\"vertical()\">\n <p-inputgroup>\n <ng-container *ngTemplateOutlet=\"prependAddons\"></ng-container>\n <mng-datetime-picker\n class=\"w-full\"\n [inputStyleClass]=\"inputStyleClass()\"\n [formControl]=\"fromCtrl\"\n [maxDate]=\"toCtrl.value\"\n [placeholder]=\"(placeholder() + ' ' + ('mngTable.filterRangeFrom' | translate)).trim()\"\n [dateFormat]=\"dateFormat()\"\n showIcon=\"true\"\n time=\"true\"\n [seconds]=\"showSeconds()\"\n [milliseconds]=\"milliseconds()\"\n [primeTimePicker]=\"primeTimePicker()\"\n [timeSelect]=\"timeSelect()\"\n [timeSelectInterval]=\"timeSelectInterval()\"\n (blur)=\"onBlur()\" />\n <ng-container *ngTemplateOutlet=\"appendAddons\"></ng-container>\n </p-inputgroup>\n @if (!vertical()) {\n <p-divider layout=\"horizontal\" class=\"!w-3 !p-0\" />\n }\n <p-inputgroup>\n <ng-container *ngTemplateOutlet=\"prependAddons\"></ng-container>\n <mng-datetime-picker\n class=\"w-full\"\n [inputStyleClass]=\"inputStyleClass()\"\n [formControl]=\"toCtrl\"\n [minDate]=\"fromCtrl.value\"\n [placeholder]=\"(placeholder() + ' ' + ('mngTable.filterRangeTo' | translate)).trim()\"\n [dateFormat]=\"dateFormat()\"\n showIcon=\"true\"\n time=\"true\"\n [seconds]=\"showSeconds()\"\n [milliseconds]=\"milliseconds()\"\n [primeTimePicker]=\"primeTimePicker()\"\n [timeSelect]=\"timeSelect()\"\n [timeSelectInterval]=\"timeSelectInterval()\"\n (blur)=\"onBlur()\" />\n <ng-container *ngTemplateOutlet=\"appendAddons\"></ng-container>\n </p-inputgroup>\n </div>\n} @else {\n <p-input-group>\n <ng-container *ngTemplateOutlet=\"prependAddons\"></ng-container>\n <mng-datetime-picker\n class=\"w-full\"\n [inputStyleClass]=\"inputStyleClass()\"\n [formControl]=\"dateRangeCtrl\"\n [placeholder]=\"placeholder()\"\n [dateFormat]=\"dateFormat()\"\n dateRange=\"true\"\n showIcon=\"true\"\n (blur)=\"onBlur()\" />\n <ng-container *ngTemplateOutlet=\"appendAddons\"></ng-container\n ></p-input-group>\n}\n\n<ng-template #prependAddons>\n @for (pt of prependTemplates(); track $index) {\n <p-inputgroup-addon>\n <ng-container *ngTemplateOutlet=\"pt.template\"></ng-container>\n </p-inputgroup-addon>\n }\n</ng-template>\n<ng-template #appendAddons>\n @for (at of appendTemplates(); track $index) {\n <p-inputgroup-addon>\n <ng-container *ngTemplateOutlet=\"at.template\"></ng-container>\n </p-inputgroup-addon>\n }\n</ng-template>\n","import {NgTemplateOutlet} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n DestroyRef,\n ExistingProvider,\n Injector,\n booleanAttribute,\n computed,\n effect,\n forwardRef,\n inject,\n input,\n output,\n signal,\n viewChild\n} from '@angular/core';\nimport {takeUntilDestroyed, toObservable} from '@angular/core/rxjs-interop';\nimport {ControlValueAccessor, FormsModule, NG_VALUE_ACCESSOR} from '@angular/forms';\n\nimport {TranslatePipe, TranslateService} from '@ngx-translate/core';\nimport {InputGroup} from 'primeng/inputgroup';\nimport {InputGroupAddon} from 'primeng/inputgroupaddon';\nimport {MultiSelect, MultiSelectBlurEvent, MultiSelectChangeEvent} from 'primeng/multiselect';\nimport {Select, SelectChangeEvent} from 'primeng/select';\nimport {Subject, Subscription, combineLatest, debounceTime, distinctUntilChanged, map, of, switchMap, tap} from 'rxjs';\n\nimport {\n CommonsInternalError,\n DataListParams,\n FilterMatchMode,\n ILookupDataProvider,\n LoggerService,\n toObservable as commonsToObservable,\n fromSubscribeError,\n getErrorLogLevel,\n narrowI18nToTranslation\n} from '@mediusinc/mng-commons/core';\nimport {InputTrimType} from '@mediusinc/mng-commons/form/api';\n\nimport {DropdownTemplateDirective} from './dropdown-template.directive';\n\nexport const DROPDOWN_VALUE_ACCESSOR: ExistingProvider = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => DropdownComponent),\n multi: true\n};\n\n@Component({\n selector: 'mng-dropdown',\n templateUrl: './dropdown.component.html',\n providers: [DROPDOWN_VALUE_ACCESSOR],\n imports: [TranslatePipe, FormsModule, Select, MultiSelect, InputGroup, InputGroupAddon, NgTemplateOutlet],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class DropdownComponent implements ControlValueAccessor {\n private readonly logger = inject(LoggerService).create('DropdownComponent');\n\n private readonly injector = inject(Injector);\n private readonly destroyRef = inject(DestroyRef);\n private readonly translate = inject(TranslateService);\n\n public dataProvider = input<ILookupDataProvider<any, any, any, any>>();\n public options = input<Array<any>>([]);\n public optionsTrackProperty = input<string>();\n public optionsLabelPropertyInit = input<string | undefined>(undefined, {alias: 'optionsLabelProperty'});\n public optionsLabelTranslate = input(false, {transform: booleanAttribute});\n public optionsValuePropertyInput = input<string | undefined>(undefined, {alias: 'optionsValueProperty'});\n public optionsDisabledProperty = input<string>();\n public multiselect = input(false, {transform: booleanAttribute});\n public placeholder = input<string>();\n public showClear = input(false, {transform: booleanAttribute});\n public selectFirstItemInput = input(false, {transform: booleanAttribute, alias: 'selectFirstItem'});\n public className = input<string>();\n public dropdownClassName = input<string>();\n public changeValueOnBlur = input(false, {transform: booleanAttribute});\n public loadingInput = input(false, {alias: 'loading', transform: booleanAttribute});\n public disabledInput = input(false, {alias: 'disabled', transform: booleanAttribute});\n public allowInput = input(false, {transform: booleanAttribute});\n public appendTo = input<string | null>('body');\n public readonly templates = input<DropdownTemplateDirective[]>([]);\n\n public inlineSearch = input(false, {transform: booleanAttribute});\n public searchTrim = input<InputTrimType | undefined>(undefined);\n\n public valueChange = output<any>();\n // eslint-disable-next-line @angular-eslint/no-output-native\n public blur = output<Event>();\n\n public primeSelect = viewChild(Select);\n public primeMultiselect = viewChild(MultiSelect);\n\n private _value?: any | null;\n public ngModelValue = signal<undefined | null | any>(undefined);\n\n private _loading = signal(false);\n private _disabled = signal(false);\n public loading = computed(() => this.loadingInput() || this._loading());\n public disabled = computed(() => this.disabledInput() || this._disabled());\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n private onChangeFn: any = () => {};\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n private onTouchedFn: any = () => {};\n\n private dataProviderService: any = null;\n public items = signal<any[]>([]);\n private firstTimeSettingItems = true;\n\n private isDropdownPanelShown = false;\n\n // used with custom input functionality\n private fetchedItems: any[] = [];\n private optionsSubscription?: Subscription;\n private customInputSubject = new Subject<string | undefined>();\n\n public readonly prependTemplates = computed(() => this.templates().filter(t => t.name() === 'prepend'));\n public readonly appendTemplates = computed(() => this.templates().filter(t => t.name() === 'append'));\n\n public optionsLabelProperty = computed(() => {\n if (this.optionsLabelTranslate()) {\n // setup translation properties\n if (this.optionsLabelPropertyInit()) {\n return `${this.optionsLabelPropertyInit()}_i18n`;\n } else if (!this.optionsLabelPropertyInit() && !this.optionsValuePropertyInput()) {\n return 'title_i18n';\n } else {\n throw new CommonsInternalError(`Invalid use with value (${this.optionsValuePropertyInput()}) and label (${this.optionsLabelPropertyInit()}) property setup.`, {\n name: 'DropdownComponentError'\n });\n }\n }\n\n return this.optionsLabelPropertyInit();\n });\n public optionsValueProperty = computed(() => {\n if (this.optionsLabelTranslate()) {\n // setup translation properties\n if (!this.optionsLabelPropertyInit() && !this.optionsValuePropertyInput()) {\n return 'value';\n } else if (!this.optionsLabelPropertyInit()) {\n throw new CommonsInternalError(`Invalid use with value (${this.optionsValuePropertyInput()}) and label (${this.optionsLabelPropertyInit()}) property setup.`, {\n name: 'DropdownComponentError'\n });\n }\n }\n\n return this.optionsValuePropertyInput();\n });\n\n public get value() {\n return this._value;\n }\n\n constructor() {\n effect(() => {\n this._value = this.ngModelValue();\n });\n\n this.customInputSubject\n .asObservable()\n .pipe(distinctUntilChanged(), debounceTime(250), takeUntilDestroyed())\n .subscribe(v => this.searchItems(v));\n\n this.fetchItems();\n\n effect(() => {\n if (this.allowInput()) {\n if (this.optionsLabelProperty() && !this.optionsValueProperty()) {\n throw new CommonsInternalError(\n `allowInput is not supported when optionsLabelProperty is defined but optionsValueProperty is missing. Set optionsValueProperty to enable allowInput.`\n );\n }\n }\n });\n }\n\n registerOnChange(fn: any): void {\n this.onChangeFn = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouchedFn = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n setTimeout(() => this._disabled.set(isDisabled));\n }\n\n writeValue(value: any): void {\n // this check is required because angular in some cases writes null value\n // before value accessor is initialized\n // if form control value is of primitive type (ex: enums) then write value is not called (we think)\n if (value == null && this._value == null) {\n return;\n }\n // write value immediately - it is important so that first select is not triggered!\n this._value = value;\n this.adjustValueOnItemsValuePropertyTypeMismatch(true);\n }\n\n onDropdownBlur(event: Event) {\n // if allowCustomInput is enabled, the input element might still be in focus with the\n // dropdown panel hidden - that's why the !this.allowCustomInput() check is needed\n if (this.isDropdownPanelShown && !this.allowInput()) {\n // ignore this blur event\n return;\n }\n const primeDropdown = this.primeSelect();\n if (this.changeValueOnBlur() && primeDropdown) {\n this.propagateValueChange(primeDropdown.value);\n }\n this.onTouchedFn();\n this.blur.emit(event);\n }\n\n onDropdownChange(event: SelectChangeEvent) {\n if (!this.changeValueOnBlur()) {\n this.propagateValueChange(event.value);\n }\n\n if (this.allowInput()) {\n const query = typeof event.value !== 'string' || event.value.length === 0 ? undefined : this.trimValue(event.value as string);\n this.customInputSubject.next(query);\n }\n }\n\n private searchItems(query?: string) {\n if (this.inlineSearch()) {\n // no need to refetch, just set items from cached fetched items\n this.setItems(this.fetchedItems, query);\n } else {\n this.fetchItems(query);\n }\n }\n\n private fetchItems(query?: string) {\n this.optionsSubscription?.unsubscribe();\n this.optionsSubscription = combineLatest([toObservable(this.dataProvider, {injector: this.injector}), toObservable(this.options, {injector: this.injector})])\n .pipe(\n tap(() => this._loading.set(true)),\n switchMap(([dataProvider, options]) => {\n if (dataProvider) {\n if (!this.dataProviderService) {\n this.dataProviderService = dataProvider.serviceType ? this.injector.get<any>(dataProvider.serviceType) : null;\n }\n\n const params: DataListParams = {\n limit: this.allowInput() ? 10 : 50\n };\n\n const optionsLabelProperty = this.optionsLabelProperty();\n if (optionsLabelProperty) {\n params.sort = [{property: optionsLabelProperty}];\n }\n if (query != null && optionsLabelProperty) {\n params.filters = {\n [optionsLabelProperty]: {\n value: query,\n matchMode: FilterMatchMode.StartsWith\n }\n };\n }\n\n return commonsToObservable(dataProvider.lookup(params, this.dataProviderService, query));\n } else {\n return of(options ?? []);\n }\n }),\n switchMap(items => this.transformItems(items)),\n takeUntilDestroyed(this.destroyRef)\n )\n .subscribe({\n next: res => {\n this.fetchedItems = res;\n this.setItems(res, query);\n this._loading.set(false);\n this.selectFirstItem(); // only selects first item if selectFirstItemInput is set accordingly\n this.adjustValueOnItemsValuePropertyTypeMismatch();\n },\n error: err => {\n this.setItems([], query);\n this._loading.set(false);\n const error = fromSubscribeError(err, 'DropdownComponentError');\n this.logger.log(error, getErrorLogLevel(error));\n }\n });\n }\n\n /**\n * Sets the items in the dropdown. If a query is provided, the items will be filtered by the query (using a 'starts with' filter).\n *\n * @param items The items to set.\n */\n private setItems(items: Array<any>, query?: string) {\n if (this.allowInput()) {\n // just validate that items are as expected in case of allowing input\n if (items.length > 0) {\n // items can either be objects (with optionsValueProperty specifying a string property) or strings\n if (typeof items[0] === 'object') {\n if (!this.optionsValueProperty()) {\n throw new CommonsInternalError(\n `allowInput is not supported when optionValueProperty is not set and the dropdown items are of type object. Set optionsValueProperty to enable allowInput.`\n );\n }\n if (typeof items[0]?.[this.optionsValueProperty()!] !== 'string') {\n throw new CommonsInternalError(`allowInput is only supported when the value property (specified with optionsValueProperty) is of type string.`);\n }\n } else if (!(typeof items[0] === 'string' && !this.optionsLabelProperty() && !this.optionsValueProperty())) {\n throw new CommonsInternalError(\n `'allowInput' is only supported for items of type string or object. For object types, ensure that the 'optionsValueProperty' is specified and represents a property of type string.`\n );\n }\n }\n }\n\n if (query && query.length > 0 && (this.inlineSearch() || this.allowInput())) {\n const queryLowerCase = query?.toLowerCase() ?? '';\n const filteredItems = items.filter(i => {\n let itemLabel = i;\n const optionsLabelProperty = this.optionsLabelProperty();\n if (optionsLabelProperty && typeof i === 'object') {\n itemLabel = i[optionsLabelProperty];\n }\n if (itemLabel == null) {\n return queryLowerCase == null || !queryLowerCase.length;\n }\n if (typeof itemLabel !== 'string') {\n itemLabel = itemLabel.toString();\n }\n return itemLabel.toLowerCase().startsWith(queryLowerCase);\n });\n this.items.set([...filteredItems]);\n } else {\n this.items.set([...items]);\n }\n }\n\n onDropdownPanelShow() {\n this.isDropdownPanelShown = true;\n }\n\n onDropdownPanelHide() {\n this.isDropdownPanelShown = false;\n }\n\n onFocus() {\n this.onTouchedFn();\n }\n\n onMultiselectChange(event: MultiSelectChangeEvent) {\n if (!this.changeValueOnBlur()) {\n this.propagateValueChange(event.value);\n }\n }\n\n onMultiselectBlur(event: MultiSelectBlurEvent) {\n this.onTouchedFn();\n this.blur.emit(event.originalEvent);\n }\n\n onMultiselectPanelHide() {\n const primeMultiselect = this.primeMultiselect();\n if (this.changeValueOnBlur() && primeMultiselect) {\n this.propagateValueChange(primeMultiselect.value);\n }\n }\n\n private selectFirstItem() {\n if (this.firstTimeSettingItems && this.items().length > 0 && this.selectFirstItemInput() && !this._value) {\n const optionsValueProperty = this.optionsValueProperty();\n const value = optionsValueProperty ? this.items()[0][optionsValueProperty] : this.items()[0];\n this.ngModelValue.set(value); // set to write for input\n this.firstTimeSettingItems = false;\n this.propagateValueChange(value);\n }\n }\n\n private transformItems(items: any[]) {\n if (this.optionsLabelTranslate()) {\n const translationKeys: string[] = items.map(\n item => (typeof item === 'object' && this.optionsLabelPropertyInit() ? (item[this.optionsLabelPropertyInit() as keyof object] as string) : item) as string\n );\n\n if (translationKeys.length === 0) {\n return of([]);\n }\n\n return this.translate.stream(translationKeys).pipe(\n map(translations =>\n items.map(item => {\n if (typeof item === 'object' && this.optionsLabelPropertyInit()) {\n const label = item[this.optionsLabelPropertyInit() as keyof object] as string;\n const translation: string | undefined = narrowI18nToTranslation(translations, label);\n if (translation) {\n return {...item, [this.optionsLabelProperty()!]: translation};\n }\n return {...item};\n } else {\n const translation = translations[item];\n return {\n [this.optionsLabelProperty()!]: translation ?? item,\n [this.optionsValueProperty()!]: item\n };\n }\n })\n )\n );\n } else {\n return of(items);\n }\n }\n\n private adjustValueOnItemsValuePropertyTypeMismatch(setNgModelValue = false) {\n const optionsValueProp = this.optionsValueProperty();\n if (optionsValueProp && this._value != null && this.items().length > 0 && this.items()[0][optionsValueProp] != null) {\n if (Array.isArray(this._value)) {\n if (this._value.length > 0 && typeof this.items()[0][optionsValueProp] !== typeof this._value[0]) {\n const stringValues = this._value.map(v => v.toString());\n const selectedOptions = this.items().filter(i => i[optionsValueProp] != null && stringValues.includes(i[optionsValueProp].toString()));\n if (selectedOptions.length > 0) {\n this.ngModelValue.set(selectedOptions.map(i => i[optionsValueProp]));\n return;\n }\n }\n } else if (typeof this.items()[0][optionsValueProp] !== typeof this._value) {\n // types don't match, search and compare by string\n const selectedOption = this.items().find(i => i[optionsValueProp] != null && i[optionsValueProp].toString() === this._value.toString());\n if (selectedOption) {\n this.ngModelValue.set(selectedOption[optionsValueProp]);\n return;\n }\n }\n }\n\n if (setNgModelValue) {\n // force write to ngModelValue anyway\n this.ngModelValue.set(this._value);\n }\n }\n\n private propagateValueChange(value: any) {\n this._value = value;\n this.onChangeFn(value);\n this.valueChange.emit(value);\n }\n\n /**\n * Trims the leading and/or trailing whitespace from the given value based on the search trimming mode.\n *\n * @param value - The value to be trimmed.\n */\n private trimValue(value: string | undefined) {\n switch (this.searchTrim()) {\n case 'start':\n return value?.trimStart();\n case 'end':\n return value?.trimEnd();\n case 'both':\n return value?.trim();\n default:\n return value;\n }\n }\n}\n","<p-inputgroup>\n @for (pt of prependTemplates(); track $index) {\n <p-inputgroup-addon>\n <ng-container *ngTemplateOutlet=\"pt.template\"></ng-container>\n </p-inputgroup-addon>\n }\n @if (!multiselect()) {\n <p-select\n [(ngModel)]=\"ngModelValue\"\n [placeholder]=\"placeholder()\"\n [dataKey]=\"optionsTrackProperty()\"\n [optionLabel]=\"optionsLabelProperty()\"\n [optionValue]=\"optionsValueProperty()\"\n [optionDisabled]=\"optionsDisabledProperty()\"\n [options]=\"items()\"\n [showClear]=\"showClear()\"\n [editable]=\"allowInput()\"\n [styleClass]=\"className()\"\n [panelStyleClass]=\"dropdownClassName()\"\n [disabled]=\"disabled()\"\n [filter]=\"inlineSearch() && !allowInput()\"\n [filterBy]=\"optionsLabelProperty()\"\n (onBlur)=\"onDropdownBlur($event)\"\n (onChange)=\"onDropdownChange($event)\"\n (onShow)=\"onDropdownPanelShow()\"\n (onHide)=\"onDropdownPanelHide()\"\n (onFocus)=\"onFocus()\"\n [dropdownIcon]=\"loading() ? 'pi pi-spinner pi-spin' : 'pi pi-chevron-down'\"\n [appendTo]=\"appendTo()\">\n </p-select>\n } @else {\n <p-multiSelect\n [ngModel]=\"ngModelValue()\"\n [maxSelectedLabels]=\"1\"\n [selectedItemsLabel]=\"'mngDropdown.multiselectOverMaxDisplayLimit' | translate\"\n [placeholder]=\"placeholder()\"\n [dataKey]=\"optionsTrackProperty()\"\n [optionLabel]=\"optionsLabelProperty()\"\n [optionValue]=\"optionsValueProperty()\"\n [optionDisabled]=\"optionsDisabledProperty()\"\n [options]=\"items()\"\n [styleClass]=\"className()\"\n [panelStyleClass]=\"dropdownClassName()\"\n [filter]=\"true\"\n [showToggleAll]=\"false\"\n [disabled]=\"disabled()\"\n (onChange)=\"onMultiselectChange($event)\"\n (onPanelHide)=\"onMultiselectPanelHide()\"\n (onBlur)=\"onMultiselectBlur($event)\"\n (onFocus)=\"onFocus()\"\n appendTo=\"body\">\n </p-multiSelect>\n }\n @for (at of appendTemplates(); track $index) {\n <p-inputgroup-addon>\n <ng-container *ngTemplateOutlet=\"at.template\"></ng-container>\n </p-inputgroup-addon>\n }\n</p-inputgroup>\n","import {NgTemplateOutlet} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ExistingProvider,\n ViewEncapsulation,\n booleanAttribute,\n computed,\n effect,\n forwardRef,\n inject,\n input,\n output\n} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {\n ControlValueAccessor,\n FormBuilder,\n FormControl,\n FormGroup,\n FormsModule,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n ReactiveFormsModule,\n ValidationErrors,\n Validator,\n Validators\n} from '@angular/forms';\n\nimport {TranslatePipe} from '@ngx-translate/core';\nimport {InputGroup} from 'primeng/inputgroup';\nimport {InputGroupAddon} from 'primeng/inputgroupaddon';\nimport {InputNumber} from 'primeng/inputnumber';\nimport {merge} from 'rxjs';\n\nimport {Nullable} from '@mediusinc/mng-commons/core';\n\nimport {NumberRangeTemplateDirective} from './number-range-template.directive';\n\nexport const NUMBER_RANGE_VALUE_ACCESSOR: ExistingProvider = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NumberRangeComponent),\n multi: true\n};\n\nexport const NUMBER_RANGE_VALIDATOR: ExistingProvider = {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => NumberRangeComponent),\n multi: true\n};\n\n@Component({\n selector: 'mng-number-range',\n templateUrl: './number-range.component.html',\n styleUrl: './number-range.component.css',\n providers: [NUMBER_RANGE_VALUE_ACCESSOR, NUMBER_RANGE_VALIDATOR],\n imports: [FormsModule, ReactiveFormsModule, InputNumber, InputGroup, InputGroupAddon, NgTemplateOutlet, TranslatePipe],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None\n})\nexport class NumberRangeComponent implements ControlValueAccessor, Validator {\n private readonly formBuilder = inject(FormBuilder);\n private readonly cdr = inject(ChangeDetectorRef);\n\n public placeholder = input<string>();\n public useGrouping = input(true, {transform: booleanAttribute});\n public minFractionDigits = input<number>();\n public maxFractionDigits = input<number>();\n public required = input(false, {transform: booleanAttribute});\n public disabled = input(false, {\n transform: booleanAttribute\n });\n public vertical = input(false, {transform: booleanAttribute});\n public readonly templates = input<NumberRangeTemplateDirective[]>([]);\n public className = input<string>();\n\n public keyDown = output<KeyboardEvent>();\n\n public readonly prependTemplates = computed(() => this.templates().filter(t => t.name() === 'prepend'));\n public readonly appendTemplates = computed(() => this.templates().filter(t => t.name() === 'append'));\n\n private fromToFormControl: FormGroup = this.formBuilder.group({\n from: [null, Validators.required],\n to: [null, Validators.required]\n });\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n private onChangeFn: any = () => {};\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n private onTouchedFn: any = () => {};\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n private onValidatorChangeFn: any = () => {};\n\n public get fromCtrl() {\n return this.fromToFormControl.get('from') as FormControl;\n }\n\n public get toCtrl() {\n return this.fromToFormControl.get('to') as FormControl;\n }\n\n constructor() {\n effect(() => {\n this.setDisabledState(this.disabled());\n });\n\n merge(this.fromCtrl.valueChanges, this.toCtrl.valueChanges)\n .pipe(takeUntilDestroyed())\n .subscribe(() => this.onValueChange());\n }\n\n registerOnChange(fn: any): void {\n this.onChangeFn = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouchedFn = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n if (isDisabled && this.fromToFormControl?.enabled) {\n this.fromToFormControl.disable();\n } else if (!isDisabled && this.fromToFormControl?.disabled) {\n this.fromToFormControl.enable();\n }\n }\n\n writeValue(obj: any): void {\n let start: number | null = null;\n let end: number | null = null;\n\n if (Array.isArray(obj)) {\n if (obj.length > 0 && (typeof obj[0] === 'string' || typeof obj[0] === 'number')) {\n start = this.toNumber(obj[0]);\n }\n if (obj.length > 1 && (typeof obj[1] === 'string' || typeof obj[1] === 'number')) {\n end = this.toNumber(obj[1]);\n }\n } else if (typeof obj === 'string' || typeof obj === 'number') {\n start = this.toNumber(obj);\n }\n\n this.fromCtrl.setValue(start, {emitEvent: false});\n this.toCtrl.setValue(end, {emitEvent: false});\n }\n\n validate(): ValidationErrors | null {\n if (!this.required()) return null;\n\n if (this.fromCtrl.hasError('required') || this.toCtrl.hasError('required')) {\n return {\n required: true\n };\n }\n\n return null;\n }\n\n onKeyDown(event: KeyboardEvent) {\n this.keyDown.emit(event);\n }\n\n onBlur() {\n this.onTouchedFn();\n }\n\n private toNumber(val: Nullable<string | number>) {\n if (val == null || typeof val === 'number') {\n return val ?? null;\n }\n val = val.replaceAll(',', '');\n const numVal = parseFloat(val);\n return isNaN(numVal) ? null : numVal;\n }\n\n private onValueChange() {\n const fromDate = this.fromCtrl.value as Date;\n const toDate = this.toCtrl.value as Date;\n this.onChangeFn([fromDate, toDate]);\n }\n}\n","<div class=\"flex gap-1\" [class.flex-col]=\"vertical()\">\n <p-inputgroup>\n <ng-container *ngTemplateOutlet=\"prependAddons\"></ng-container>\n <p-inputNumber\n [formControl]=\"fromCtrl\"\n [placeholder]=\"placeholder() + ' ' + ('mngTable.filterRangeFrom' | translate)\"\n [useGrouping]=\"useGrouping()\"\n [minFractionDigits]=\"minFractionDigits()\"\n [maxFractionDigits]=\"maxFractionDigits()\"\n [max]=\"toCtrl.value\"\n [inputStyleClass]=\"className()\"\n (onKeyDown)=\"onKeyDown($event)\"\n (onBlur)=\"onBlur()\" />\n <ng-container *ngTemplateOutlet=\"appendAddons\"></ng-container>\n </p-inputgroup>\n <p-inputgroup>\n <ng-container *ngTemplateOutlet=\"prependAddons\"></ng-container>\n <p-inputNumber\n [formControl]=\"toCtrl\"\n [placeholder]=\"placeholder() + ' ' + ('mngTable.filterRangeTo' | translate)\"\n [useGrouping]=\"useGrouping()\"\n [minFractionDigits]=\"minFractionDigits()\"\n [maxFractionDigits]=\"maxFractionDigits()\"\n [min]=\"fromCtrl.value\"\n [inputStyleClass]=\"className()\"\n (onKeyDown)=\"onKeyDown($event)\"\n (onBlur)=\"onBlur()\" />\n <ng-container *ngTemplateOutlet=\"appendAddons\"></ng-container>\n </p-inputgroup>\n</div>\n\n<ng-template #prependAddons>\n @for (pt of prependTemplates(); track $index) {\n <p-inputgroup-addon>\n <ng-container *ngTemplateOutlet=\"pt.template\"></ng-container>\n </p-inputgroup-addon>\n }\n</ng-template>\n<ng-template #appendAddons>\n @for (at of appendTemplates(); track $index) {\n <p-inputgroup-addon>\n <ng-container *ngTemplateOutlet=\"at.template\"></ng-container>\n </p-inputgroup-addon>\n }\n</ng-template>\n","import {Directive, ElementRef, Renderer2, afterNextRender, inject, input} from '@angular/core';\nimport {NgControl} from '@angular/forms';\n\nimport {EmptyValueType} from '@mediusinc/mng-commons/form/api';\n\n/**\n * Directive that converts empty string values to undefined or null when the input loses focus.\n * Can also be configured to leave empty strings as is.\n *\n * Usage:\n * ```html\n * <input mngInputEmptyValue=\"undefined\" />\n * ```\n *\n * @example\n * // Convert empty strings to undefined (default behavior)\n * <input mngInputEmptyValue />\n *\n * @example\n * // Convert empty strings to null\n * <input mngInputEmptyValue=\"null\" />\n *\n * @example\n * // Leave empty strings as is (no conversion)\n * <input mngInputEmptyValue=\"none\" />\n */\n@Directive({\n selector: '[mngInputEmptyValue]',\n host: {'(blur)': 'onBlur()'}\n})\nexport class InputEmptyValueDirective {\n /**\n * Input property that specifies how empty string values should be handled.\n *\n * @default 'undefined'\n */\n public mngInputEmptyValue = input<EmptyValueType>('undefined');\n\n readonly #el = inject(ElementRef);\n readonly #ngControl = inject(NgControl, {optional: true});\n readonly #renderer = inject(Renderer2);\n\n #afterNextRenderRef = afterNextRender(() => {\n const nativeElement = this.#el.nativeElement as HTMLElement;\n const inputChildElement = nativeElement.querySelector('input');\n\n if (inputChildElement) {\n this.#renderer.listen(inputChildElement, 'blur', () => this.onBlur());\n }\n });\n\n /**\n * Handler for the blur event.\n * Checks if the input value is an empty string and converts it to undefined, null, or leaves it as is\n * based on the configuration.\n */\n onBlur() {\n if (!this.#ngControl?.control) {\n return;\n }\n const value = this.#ngControl?.control.value;\n\n if (typeof value === 'string' && value.trim() === '') {\n const emptyValue = this.#getEmptyValue();\n\n // Only update the value if we're not using 'none' option (which would return '')\n if (emptyValue !== '') {\n this.#ngControl.control.setValue(emptyValue, {emitEvent: false});\n }\n }\n }\n\n /**\n * Returns the appropriate empty value based on the configuration.\n *\n * @returns undefined, null, or empty string based on the mngInputEmptyValue configuration\n */\n #getEmptyValue(): undefined | null | string {\n switch (this.mngInputEmptyValue()) {\n case 'null':\n return null;\n case 'none':\n return '';\n case 'undefined':\n default:\n return undefined;\n }\n }\n}\n","import {Directive, ElementRef, Renderer2, afterNextRender, inject, input} from '@angular/core';\nimport {NgControl} from '@angular/forms';\n\nimport {InputTrimType} from '@mediusinc/mng-commons/form/api';\n\n@Directive({\n selector: '[mngInputTrim]',\n host: {'(blur)': 'onBlur()', '(keydown.tab)': 'onBlur()', '(keydown.enter)': 'onBlur()'}\n})\nexport class InputTrimDirective {\n public readonly mngInputTrim = input<InputTrimType>();\n\n readonly #el = inject(ElementRef);\n readonly #ngControl = inject(NgControl, {optional: true});\n readonly #renderer = inject(Renderer2);\n\n #inputEl: HTMLInputElement = this.#el.nativeElement as HTMLInputElement;\n\n #afterNextRenderRef = afterNextRender(() => {\n const nativeElement = this.#el.nativeElement as HTMLElement;\n const inputChildElement = nativeElement.querySelector('input');\n\n if (inputChildElement) {\n this.#inputEl = inputChildElement as HTMLInputElement;\n this.#renderer.listen(inputChildElement, 'blur', () => this.onBlur());\n }\n });\n\n protected onBlur() {\n const control = this.#ngControl?.control;\n const inputValue = this.#inputEl.value;\n const value = control ? control.value : inputValue;\n let trimmedValue: string;\n\n if (typeof value === 'string') {\n trimmedValue = this.#getTrimmedValue(value);\n\n if (trimmedValue != value) {\n if (control) {\n control.setValue(trimmedValue, {emitEvent: false});\n } else {\n this.#inputEl.value = trimmedValue;\n }\n }\n }\n // used when the control value is an array (ex. multiSelect) and has an embedded input which value must be trimmed before added to the array\n else if (Array.isArray(value) && inputValue != null) {\n trimmedValue = this.#getTrimmedValue(inputValue);\n\n if (trimmedValue != null) {\n this.#inputEl.value = trimmedValue;\n }\n }\n }\n\n #getTrimmedValue(value: string): string {\n switch (this.mngInputTrim()) {\n case 'both':\n return value.trim();\n case 'start':\n return value.trimStart();\n case 'end':\n return value.trimEnd();\n default:\n return value;\n }\n }\n}\n","import {Directive, input} from '@angular/core';\n\nimport {TemplateDirective} from '@mediusinc/mng-commons/core';\n\ntype NameType = 'prepend' | 'append';\n\n@Directive({\n selector: '[mngAutocompleteTemplate]',\n exportAs: 'mngAutocompleteTemplate'\n})\nexport class AutocompleteTemplateDirective extends TemplateDirective<NameType> {\n public override readonly name = input.required<NameType>();\n}\n","import {Directive, input} from '@angular/core';\n\nimport {TemplateDirective} from '@mediusinc/mng-commons/core';\n\ntype NameType = 'prepend' | 'append';\n\n@Directive({\n selector: '[mngDateRangeTemplate]',\n exportAs: 'mngDateRangeTemplate'\n})\nexport class DateRangeTemplateDirective extends TemplateDirective<NameType> {\n public override readonly name = input.required<NameType>();\n}\n","import {Directive, input} from '@angular/core';\n\nimport {TemplateDirective} from '@mediusinc/mng-commons/core';\n\ntype NameType = 'prepend' | 'append';\n\n@Directive({\n selector: '[mngDropdownTemplate]',\n exportAs: 'mngDropdownTemplate'\n})\nexport class DropdownTemplateDirective extends TemplateDirective<NameType> {\n public override readonly name = input.required<NameType>();\n}\n","import {Directive, input} from '@angular/core';\n\nimport {TemplateDirective} from '@mediusinc/mng-commons/core';\n\ntype NameType = 'prepend' | 'append';\n\n@Directive({\n selector: '[mngNumberRangeTemplate]',\n exportAs: 'mngNumberRangeTemplate'\n})\nexport class NumberRangeTemplateDirective extends TemplateDirective<NameType> {\n public override readonly name = input.required<NameType>();\n}\n","import {Directive, input} from '@angular/core';\n\nimport {TemplateDirective} from '@mediusinc/mng-commons/core';\n\ntype NameType = 'prepend' | 'append';\n\n@Directive({\n selector: '[mngDatetimePickerTemplate]',\n exportAs: 'mngDatetimePickerTemplate'\n})\nexport class DatetimePickerTemplateDirective extends TemplateDirective<NameType> {\n public override readonly name = input.required<NameType>();\n}\n","// components\nexport * from './components/autocomplete/autocomplete.component';\nexport * from './components/date-range/date-range.component';\nexport * from './components/dropdown/dropdown.component';\nexport * from './components/number-range/number-range.component';\nexport * from './components/datetime-picker/datetime-picker.component';\n\n// directives\nexport * from './directives/input-empty-value.directive';\nexport * from './directives/input-trim.directive';\n\nexport * from './components/autocomplete/autocomplete-template.directive';\nexport * from './components/date-range/date-range-template.directive';\nexport * from './components/dropdown/dropdown-template.directive';\nexport * from './components/number-range/number-range-template.directive';\nexport * from './components/datetime-picker/datetime-picker-template.directive';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2","toObservable","commonsToObservable","map"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"mediusinc-mng-commons-form.mjs","sources":["../../form/src/components/autocomplete/autocomplete.component.ts","../../form/src/components/autocomplete/autocomplete.component.html","../../form/src/components/datetime-picker/datetime-picker.component.ts","../../form/src/components/datetime-picker/datetime-picker.component.html","../../form/src/components/date-range/date-range.component.ts","../../form/src/components/date-range/date-range.component.html","../../form/src/components/dropdown/dropdown.component.ts","../../form/src/components/dropdown/dropdown.component.html","../../form/src/components/number-range/number-range.component.ts","../../form/src/components/number-range/number-range.component.html","../../form/src/directives/input-empty-value.directive.ts","../../form/src/directives/input-trim.directive.ts","../../form/src/components/autocomplete/autocomplete-template.directive.ts","../../form/src/components/date-range/date-range-template.directive.ts","../../form/src/components/dropdown/dropdown-template.directive.ts","../../form/src/components/number-range/number-range-template.directive.ts","../../form/src/components/datetime-picker/datetime-picker-template.directive.ts","../../form/src/index.ts","../../form/src/mediusinc-mng-commons-form.ts"],"sourcesContent":["import {NgTemplateOutlet} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n DestroyRef,\n ExistingProvider,\n Injector,\n OnInit,\n ViewEncapsulation,\n booleanAttribute,\n computed,\n effect,\n forwardRef,\n inject,\n input,\n output,\n signal,\n viewChild\n} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {ControlValueAccessor, FormsModule, NG_VALUE_ACCESSOR} from '@angular/forms';\n\nimport {StrictTranslation, TranslatePipe, TranslateService, TranslationObject} from '@ngx-translate/core';\nimport {AutoComplete, AutoCompleteCompleteEvent, AutoCompleteSelectEvent, AutoCompleteUnselectEvent} from 'primeng/autocomplete';\nimport {InputGroup} from 'primeng/inputgroup';\nimport {InputGroupAddon} from 'primeng/inputgroupaddon';\nimport {Observable, ReplaySubject, Subscription, of, switchMap, take} from 'rxjs';\nimport {map} from 'rxjs/operators';\n\nimport {\n CommonsInternalError,\n DataListParams,\n FilterMatchMode,\n ILookupDataProvider,\n LoggerService,\n fromSubscribeError,\n getErrorLogLevel,\n narrowI18nToTranslation,\n toObservable\n} from '@mediusinc/mng-commons/core';\nimport {InputTrimType} from '@mediusinc/mng-commons/form/api';\n\nimport {AutocompleteTemplateDirective} from './autocomplete-template.directive';\n\nexport const AUTOCOMPLETE_VALUE_ACCESSOR: ExistingProvider = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => AutocompleteComponent),\n multi: true\n};\n\n@Component({\n selector: 'mng-autocomplete',\n templateUrl: './autocomplete.component.html',\n styles: `\n .has-prepends .p-autocomplete-input-multiple {\n border-top-left-radius: 0 !important;\n border-bottom-left-radius: 0 !important;\n }\n p-inputgroup {\n font-size: 1rem;\n }\n `,\n encapsulation: ViewEncapsulation.None,\n providers: [AUTOCOMPLETE_VALUE_ACCESSOR],\n imports: [TranslatePipe, FormsModule, AutoComplete, InputGroup, InputGroupAddon, NgTemplateOutlet],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class AutocompleteComponent implements ControlValueAccessor, OnInit {\n private readonly injector = inject(Injector);\n private readonly destroyRef = inject(DestroyRef);\n private readonly translate = inject(TranslateService);\n private readonly logger = inject(LoggerService).create('AutocompleteComponent');\n\n public dataProvider = input.required<ILookupDataProvider<any, any, any, any>>();\n public optionsTrackProperty = input<string>();\n public optionsValuePropertyInit = input<string | undefined>(undefined, {alias: 'optionsValueProperty'});\n public optionsLabelPropertyInit = input<string | undefined>(undefined, {alias: 'optionsLabelProperty'});\n public optionsLabelTranslate = input(false, {transform: booleanAttribute});\n public inlineSearch = input(false, {transform: booleanAttribute});\n public openOnFocus = input(false, {transform: booleanAttribute});\n public multiselect = input(false, {transform: booleanAttribute});\n public placeholder = input<string>();\n public className = input<string>();\n public dropdownClassName = input<string>();\n public showClear = input(false, {transform: booleanAttribute});\n public autoClear = input(false, {transform: booleanAttribute});\n public selectFirst = input(false, {transform: booleanAttribute}); //on every input field change return first given value (or null)\n public searchTrim = input<InputTrimType | undefined>(undefined);\n public disabledInput = input<boolean, unknown>(false, {transform: booleanAttribute, alias: 'disabled'});\n public readonly templates = input<AutocompleteTemplateDirective[]>([]);\n public valueChange = output<any>();\n // eslint-disable-next-line @angular-eslint/no-output-native\n public blur = output<Event>();\n\n private primeAutocomplete = viewChild(AutoComplete);\n\n private isInited = false;\n private searchSubscription: Subscription | null = null;\n private dataProviderService: any = null;\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n private onChangeFn: any = () => {};\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n private onTouchedFn: any = () => {};\n\n private _value?: any | null;\n private _rawValue?: any | null;\n public ngModelValue = signal<undefined | null | any>(undefined);\n\n private _disabled = signal(false);\n public disabled = computed(() => this._disabled() || this.disabledInput());\n\n public suggestions = signal<Array<any>>([]);\n private isPanelShown = false;\n private isFocused = false;\n private userSelectedItem?: any | any[];\n private queryResultCacheSubject?: ReplaySubject<any>;\n private currentQuery?: string;\n\n public readonly prependTemplates = computed(() => this.templates().filter(t => t.name() === 'prepend'));\n public readonly appendTemplates = computed(() => this.templates().filter(t => t.name() === 'append'));\n\n public optionsLabelProperty = computed(() => {\n if (this.optionsLabelTranslate()) {\n // setup translation properties\n if (this.optionsLabelPropertyInit()) {\n return `${this.optionsLabelPropertyInit()}_i18n`;\n } else if (!this.optionsLabelPropertyInit() && !this.optionsValuePropertyInit()) {\n return 'title_i18n';\n } else {\n throw new CommonsInternalError(`Invalid use with value (${this.optionsValuePropertyInit()}) and label (${this.optionsLabelPropertyInit()}) property setup.`, {\n name: 'AutocompleteComponentError'\n });\n }\n }\n\n return this.optionsLabelPropertyInit();\n });\n public optionsValueProperty = computed(() => {\n if (this.optionsLabelTranslate()) {\n // setup translation properties\n if (!this.optionsLabelPropertyInit() && !this.optionsValuePropertyInit()) {\n return 'value';\n } else if (!this.optionsLabelPropertyInit()) {\n throw new CommonsInternalError(`Invalid use with value (${this.optionsValuePropertyInit()}) and label (${this.optionsLabelPropertyInit()}) property setup.`, {\n name: 'AutocompleteComponentError'\n });\n }\n }\n\n return this.optionsValuePropertyInit();\n });\n\n public get value() {\n return this._value;\n }\n\n constructor() {\n effect(() => {\n this._value = this.convertValueWithOptionsValuePropSetting(this.ngModelValue());\n this._rawValue = this.ngModelValue();\n });\n }\n\n ngOnInit() {\n this.setItemsAndDataProvider();\n\n if (this.selectFirst() && !this._value) {\n this.onSearch(undefined, true);\n }\n }\n\n onSearch(event?: AutoCompleteCompleteEvent, isInit = false) {\n // openOnFocus enables this method to be called when input is focused. The dropdown button calls this method and puts the focus on the input field, which causes 2 calls.\n // the dropdown button emits MouseEvent and Input emits FocusEvent\n if (this.openOnFocus() && event?.originalEvent instanceof MouseEvent) return;\n // cancel any existing requests\n if (!this.inlineSearch()) {\n this.searchSubscription?.unsubscribe();\n }\n const optionsLabelProperty = this.optionsLabelProperty();\n const query = this.trimValue(event?.query);\n this.currentQuery = query;\n\n const params: DataListParams = {\n limit: 50\n };\n if (optionsLabelProperty) {\n params.sort = [{property: optionsLabelProperty}];\n }\n if (query && query.length > 0 && optionsLabelProperty) {\n params.filters = {\n [optionsLabelProperty]: {\n value: query,\n matchMode: FilterMatchMode.StartsWith\n }\n };\n }\n\n if (!this.queryResultCacheSubject || !this.inlineSearch()) {\n if (!this.queryResultCacheSubject) {\n this.queryResultCacheSubject = new ReplaySubject<any>(1);\n }\n this.searchSubscription = this.getLookup(params, query)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe({\n next: items => {\n this.queryResultCacheSubject?.next(items);\n this.setSuggestionsFromItems(items, query);\n if (isInit && !this._value) {\n this.selectFirstItem();\n }\n },\n error: err => {\n this.setSuggestionsFromItems([], query);\n\n const error = fromSubscribeError(err, 'AutocompleteComponentError', {\n search: query,\n params: params\n });\n this.logger.log(error, getErrorLogLevel(error));\n }\n });\n } else if (this.queryResultCacheSubject) {\n this.searchSubscription = this.queryResultCacheSubject.pipe(take(1)).subscribe(result => {\n this.setSuggestionsFromItems(result, query);\n });\n }\n }\n\n private selectFirstItem() {\n if (!this.selectFirst() || this.multiselect()) return;\n\n const suggestions = this.suggestions();\n if (suggestions.length > 0 && !this.userSelectedItem) {\n this.setValue(suggestions[0]);\n } else if (!this.userSelectedItem) {\n // handles the case if the user provides an input and de-focuses the input field before suggestions are loaded or if there are no suggestions at all\n this.setValue(null);\n }\n }\n\n /**\n * Triggered by user when selecting an item from an autocomplete suggestion list.\n */\n onSelect(event: AutoCompleteSelectEvent) {\n let newValue = event.value;\n if (this.multiselect() && Array.isArray(this._rawValue) && this._rawValue.length > 0) {\n newValue = [...this._rawValue, newValue];\n } else if (this.multiselect()) {\n newValue = [newValue];\n }\n\n this.setValue(newValue, true);\n this.isFocused = false;\n }\n\n /**\n * Triggered by user when selecting an item from an autocomplete suggestion list.\n */\n onUnselect(event: AutoCompleteUnselectEvent) {\n let newValue = null;\n if (this.multiselect() && Array.isArray(this._rawValue) && this._rawValue.length > 0) {\n const cmpProp = this.optionsValueProperty() ?? this.optionsTrackProperty();\n newValue = this._rawValue.filter(i => (cmpProp ? i[cmpProp] !== event.value[cmpProp] : i !== event.value));\n } else if (this.multiselect()) {\n newValue = [];\n }\n this.setValue(newValue, true);\n this.isFocused = false;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n onFocus(event: Event) {\n this.isFocused = true;\n }\n\n /**\n * calls the selectFirst item anytime the input field goes out of focus and if the suggestions panel is not displayed.\n */\n onBlur(event: Event) {\n this.isFocused = false;\n const inputSearchVal = this.primeAutocomplete()?.inputEL?.nativeElement?.value;\n if (this.autoClear() && this._value != null && (inputSearchVal == null || inputSearchVal === '')) {\n this.propagateValueChange(null);\n } else if (!this.isPanelShown) {\n this.selectFirstItem();\n }\n this.onTouchedFn();\n this.blur.emit(event);\n }\n\n onShow() {\n this.isPanelShown = true;\n }\n\n /**\n * calls the selectFirst item anytime the suggestions panel is closed and input field isn't focused.\n */\n onHide() {\n this.isPanelShown = false;\n if (!this.isFocused) {\n this.selectFirstItem();\n }\n }\n\n onClear() {\n if (this._value != null) {\n this.propagateValueChange(this.multiselect() ? [] : null);\n }\n }\n\n registerOnChange(fn: any): void {\n this.onChangeFn = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouchedFn = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n setTimeout(() => this._disabled.set(isDisabled));\n }\n\n writeValue(value: any): void {\n this.setItemsAndDataProvider();\n\n // write value immediately - it is important so that first select is not triggered!\n this._value = value;\n\n const optionsValuePropertyInit = this.optionsValuePropertyInit();\n if (optionsValuePropertyInit && value != null && typeof value !== 'object') {\n const defaultItem: any = {[optionsValuePropertyInit]: value};\n const optionsLabelProperty = this.optionsLabelProperty();\n if (optionsLabelProperty) {\n defaultItem[optionsLabelProperty] = value;\n }\n\n const matchedItem = this.suggestions().find(i => i[optionsValuePropertyInit] === value);\n if (matchedItem) {\n this.setValueFromWrite(matchedItem);\n } else {\n this.getLookup({\n limit: 50,\n filters: {\n [optionsValuePropertyInit]: {\n value: value,\n matchMode: FilterMatchMode.Equals\n }\n }\n })\n .pipe(take(1))\n .subscribe({\n next: items => {\n let isMatch = false;\n if (items.length === 1) {\n this.setValueFromWrite(items[0]);\n isMatch = true;\n } else if (items.length > 1) {\n // for lookup data providers not using query params\n const matchedItem = items.find(i => i[optionsValuePropertyInit] === value);\n if (matchedItem) {\n this.setValueFromWrite(matchedItem);\n isMatch = true;\n }\n }\n\n if (!isMatch) {\n this.setValueFromWrite(defaultItem);\n }\n },\n error: () => {\n this.setValueFromWrite(defaultItem);\n }\n });\n }\n } else if (optionsValuePropertyInit && Array.isArray(value) && value?.length > 0) {\n const matchedItems = value?.map(v => this.suggestions().find(i => v == i[optionsValuePropertyInit])).filter(Boolean);\n if (matchedItems && matchedItems.length === value?.length) {\n this.setValueFromWrite(matchedItems);\n } else {\n this.getLookup({\n limit: 50\n })\n .pipe(take(1))\n .subscribe({\n next: items => {\n const matchedItems = value?.map(v => items.find(i => v == i[optionsValuePropertyInit])).filter(Boolean);\n if (matchedItems && matchedItems.length === value?.length) {\n this.setValueFromWrite(matchedItems);\n } else {\n this.setValueFromWrite(value);\n }\n },\n error: () => {\n this.setValueFromWrite(value);\n }\n });\n }\n } else {\n this.setValueFromWrite(value);\n }\n }\n\n private setItemsAndDataProvider() {\n if (this.isInited) {\n return;\n }\n\n const dataProvider = this.dataProvider();\n this.dataProviderService = dataProvider.serviceType ? this.injector.get<any>(dataProvider.serviceType) : null;\n\n this.isInited = true;\n }\n\n private setValueFromWrite(value: any | any[] | null | undefined) {\n if (value && this.optionsLabelTranslate()) {\n value = this.i18nPopulateItems([value], this.translate.instant(this.i18nGetItemsKeys([value])))[0];\n }\n if (this.ngModelValue() == null && this._rawValue != null) {\n // value must first be set to synchronise states, then in next async cycle set to wanted null value\n this.ngModelValue.set(this._rawValue);\n setTimeout(() => {\n this.ngModelValue.set(value);\n });\n } else {\n this.ngModelValue.set(value);\n }\n }\n\n private getLookup(params: DataListParams, query?: string): Observable<Array<any>> {\n return toObservable(this.dataProvider().lookup(params, this.dataProviderService, query)).pipe(\n switchMap(items => {\n if (this.optionsLabelTranslate()) {\n const translatedItems = this.i18nGetItemsKeys(items);\n if (translatedItems.length === 0) {\n return of([]);\n }\n\n return this.translate.stream(translatedItems).pipe(map((translations: TranslationObject) => this.i18nPopulateItems(items, translations)));\n } else {\n return of(items);\n }\n })\n );\n }\n\n private i18nGetItemsKeys(items: Array<any>): Array<string> {\n return items.map(\n item => (typeof item === 'object' && this.optionsLabelPropertyInit() ? (item[this.optionsLabelPropertyInit() as keyof object] as string) : item) as string\n );\n }\n\n private i18nPopulateItems(items: Array<any>, i18nMap: StrictTranslation): Array<any> {\n return items.map(item => {\n if (typeof item === 'object' && this.optionsLabelPropertyInit()) {\n const label = item[this.optionsLabelPropertyInit() as keyof object] as string;\n const translation: string | undefined = narrowI18nToTranslation(i18nMap, label);\n if (translation) {\n return {...item, [this.optionsLabelProperty()!]: translation};\n }\n return {...item};\n } else {\n const translation = narrowI18nToTranslation(i18nMap, item);\n return {\n [this.optionsLabelProperty()!]: translation ?? item,\n [this.optionsValueProperty()!]: item\n };\n }\n });\n }\n\n private setSuggestionsFromItems(items: Array<any>, query?: string) {\n if (query && query !== this.currentQuery) {\n // Skip processing to avoid outdated queries during inline search updates.\n return;\n }\n if (this.inlineSearch()) {\n const queryLowerCase = query?.toLowerCase() ?? '';\n const filteredItems = items.filter(i => {\n let itemLabel = i;\n const optionsLabelProperty = this.optionsLabelProperty();\n if (optionsLabelProperty && typeof i === 'object') {\n itemLabel = i[optionsLabelProperty];\n }\n if (itemLabel == null) {\n return queryLowerCase == null || !queryLowerCase.length;\n }\n if (typeof itemLabel !== 'string') {\n itemLabel = itemLabel.toString();\n }\n return itemLabel.toLowerCase().startsWith(queryLowerCase);\n });\n this.suggestions.set([...filteredItems]);\n this.userSelectedItem = undefined;\n } else {\n this.suggestions.set([...items]);\n this.userSelectedItem = undefined;\n }\n }\n\n /**\n * Selects and sets new value.\n *\n * @param value Represents the object value.\n * @param fromUser If set value is triggered from user.\n */\n private setValue(value: any | any[] | null | undefined, fromUser = false) {\n if (fromUser) {\n this.userSelectedItem = value;\n } else {\n this.ngModelValue.set(value);\n }\n\n this.propagateValueChange(value);\n }\n\n private trimValue(value: string | undefined) {\n switch (this.searchTrim()) {\n case 'start':\n return value?.trimStart();\n case 'end':\n return value?.trimEnd();\n case 'both':\n return value?.trim();\n default:\n return value;\n }\n }\n\n /**\n * Propagates final value to _value, on change fn and outputs.\n */\n private propagateValueChange(value: any | any[] | null | undefined) {\n this._value = this.convertValueWithOptionsValuePropSetting(value);\n this._rawValue = value;\n this.onChangeFn(this._value);\n this.valueChange.emit(this._value);\n }\n\n private convertValueWithOptionsValuePropSetting(value: any | any[] | null | undefined) {\n const optionsValueProperty = this.optionsValueProperty();\n if (!optionsValueProperty) {\n return value;\n }\n if (this.multiselect() && Array.isArray(value)) {\n return value.map((item: any) => {\n if (item && typeof item === 'object') {\n return item[optionsValueProperty];\n }\n return null;\n });\n } else if (value && typeof value === 'object') {\n return value[optionsValueProperty];\n } else {\n return value;\n }\n }\n}\n","<p-inputgroup [class]=\"{'has-prepends': prependTemplates().length > 0}\">\n @for (pt of prependTemplates(); track $index) {\n <p-inputgroup-addon>\n <ng-container *ngTemplateOutlet=\"pt.template\"></ng-container>\n </p-inputgroup-addon>\n }\n <p-autoComplete\n [ngModel]=\"ngModelValue()\"\n [placeholder]=\"placeholder()\"\n [dropdown]=\"true\"\n [dataKey]=\"optionsTrackProperty()\"\n [optionLabel]=\"optionsLabelProperty()\"\n [suggestions]=\"suggestions()\"\n [multiple]=\"multiselect()\"\n [showEmptyMessage]=\"true\"\n [emptyMessage]=\"'mngAutocomplete.noMatches' | translate\"\n [class]=\"className()\"\n [panelStyleClass]=\"dropdownClassName()\"\n [minQueryLength]=\"openOnFocus() ? 0 : 1\"\n [showClear]=\"showClear()\"\n [forceSelection]=\"autoClear()\"\n [disabled]=\"disabled()\"\n [completeOnFocus]=\"openOnFocus()\"\n (completeMethod)=\"onSearch($event)\"\n (onSelect)=\"onSelect($event)\"\n (onUnselect)=\"onUnselect($event)\"\n (onFocus)=\"onFocus($event)\"\n (onBlur)=\"onBlur($event)\"\n (onClear)=\"onClear()\"\n (onShow)=\"onShow()\"\n (onHide)=\"onHide()\"\n appendTo=\"body\"\n dropdownMode=\"current\">\n </p-autoComplete>\n @for (at of appendTemplates(); track $index) {\n <p-inputgroup-addon>\n <ng-container *ngTemplateOutlet=\"at.template\"></ng-container>\n </p-inputgroup-addon>\n }\n</p-inputgroup>\n","import {NgTemplateOutlet} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n ExistingProvider,\n ViewEncapsulation,\n booleanAttribute,\n computed,\n forwardRef,\n input,\n numberAttribute,\n output,\n signal,\n viewChild\n} from '@angular/core';\nimport {ControlValueAccessor, FormsModule, NG_VALIDATORS, NG_VALUE_ACCESSOR, ValidationErrors, Validator} from '@angular/forms';\n\nimport {DatePicker} from 'primeng/datepicker';\nimport {InputGroup} from 'primeng/inputgroup';\nimport {InputGroupAddon} from 'primeng/inputgroupaddon';\nimport {InputMask, InputMaskModule} from 'primeng/inputmask';\nimport {Listbox} from 'primeng/listbox';\nimport {Overlay} from 'primeng/overlay';\n\nimport {booleanWithDefaultAttribute} from '@mediusinc/mng-commons/core';\n\nimport {DatetimePickerTemplateDirective} from './datetime-picker-template.directive';\n\nexport const DATETIME_PICKER_VALUE_ACCESSOR: ExistingProvider = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => DatetimePickerComponent),\n multi: true\n};\n\nexport const DATETIME_PICKER_VALIDATOR: ExistingProvider = {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => DatetimePickerComponent),\n multi: true\n};\n\ntype ParsedTime = {hours: number; minutes: number; seconds: number; milliseconds: number};\n\n@Component({\n selector: 'mng-datetime-picker',\n templateUrl: './datetime-picker.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [DATETIME_PICKER_VALUE_ACCESSOR, DATETIME_PICKER_VALIDATOR],\n imports: [DatePicker, InputGroup, InputGroupAddon, InputMaskModule, NgTemplateOutlet, FormsModule, Listbox, Overlay],\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'block'\n },\n styleUrl: './datetime-picker.component.css'\n})\nexport class DatetimePickerComponent implements ControlValueAccessor, Validator {\n // Track form state/callbacks\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n private onChangeFn: (val: Date | Date[] | null) => void = () => {};\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n private onTouchedFn: () => void = () => {};\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n private onValidatorChangeFn: () => void = () => {};\n\n //////////////////////\n //////////////////////\n //////////////////////\n\n public readonly templates = input<DatetimePickerTemplateDirective[]>([]);\n\n protected readonly prependTemplates = computed(() => this.templates().filter(t => t.name() === 'prepend'));\n protected readonly appendTemplates = computed(() => this.templates().filter(t => t.name() === 'append'));\n\n // custom inputs\n public readonly timeInput = input(false, {alias: 'time', transform: booleanAttribute});\n public readonly timeSelect = input(true, {transform: v => booleanWithDefaultAttribute(v, true)});\n public readonly timeSelectInterval = input(60, {transform: v => numberAttribute(v, 60)}); // minutes\n public readonly secondsInput = input(false, {alias: 'seconds', transform: booleanAttribute});\n public readonly milliseconds = input(false, {transform: booleanAttribute});\n public readonly primeTimePicker = input(false, {transform: booleanAttribute});\n\n // default inputs\n public readonly dateFormat = input<string | undefined>('dd/mm/yy');\n public readonly placeholder = input<string>();\n public readonly minDate = input<Date | null>(null);\n public readonly maxDate = input<Date | null>(null);\n public readonly disabledInput = input(false, {alias: 'disabled', transform: booleanAttribute});\n public readonly required = input(false, {transform: booleanAttribute});\n public readonly showIcon = input(true, {transform: booleanAttribute});\n public readonly showButtonBar = input(false, {transform: booleanAttribute});\n public readonly showClear = input(false, {transform: booleanAttribute});\n public readonly className = input<string>('');\n public readonly panelStyleClass = input<string>();\n public readonly inputStyleClass = input<string>();\n public readonly dateRange = input(false, {transform: booleanAttribute});\n\n // eslint-disable-next-line @angular-eslint/no-output-native\n public readonly blur = output<Event>();\n\n private readonly maskInput = viewChild(InputMask);\n\n // signals\n protected readonly time = computed(() => this.timeInput() || this.seconds() || this.milliseconds());\n protected readonly seconds = computed(() => this.secondsInput() || this.milliseconds());\n // this value will be inside the date\n protected readonly displayDate = signal<Date | Date[] | null>(null);\n protected readonly selectedDate = signal<Date | Date[] | null>(null);\n // bind to time selection. Type is string, but any manipulation is done in a Date object\n protected readonly selectedTime = signal<string | null>(null);\n\n protected readonly overlayVisible = signal(false);\n // signal for formControl disabled state\n protected readonly _disabled = signal(false);\n protected readonly disabled = computed(() => this.disabledInput() || this._disabled());\n // mask: it must be all nine otherwise will auto complete before you start\n // format: ensures that even if the user doesn't enter the whole value, the rest will fill out by itself\n // placeholder: just a nice placeholder for user convenience\n protected readonly inputMaskConfig = computed(() => {\n if (this.seconds()) {\n if (this.milliseconds()) {\n return {mask: '99:99:99.999', format: '00:00:00.000', placeholder: this.disabled() ? undefined : '12:00:00.000'};\n } else {\n return {mask: '99:99:99', format: '00:00:00', placeholder: this.disabled() ? undefined : '12:00:00'};\n }\n } else {\n return {mask: '99:99', format: '00:00', placeholder: this.disabled() ? undefined : '12:00'};\n }\n });\n protected readonly selectOptions = computed(() => {\n const options: Array<{label: string; value: string}> = [];\n\n // 24 * 60\n for (let minutes = 0; minutes < 1440; minutes += this.timeSelectInterval()) {\n const interval = new Date(0, 0, 0, 0, minutes);\n options.push({\n label: this.formatOptionLabel(interval),\n value: this.formatOptionValue(interval)\n });\n }\n\n return options;\n });\n protected readonly timeValid = signal(true);\n\n //////////////////////\n //////////////////////\n //////////////////////\n\n writeValue(obj: any): void {\n if (this.dateRange()) {\n const value =\n Array.isArray(obj) && (obj?.length ?? 0) >= 2\n ? obj\n .slice(0, 2)\n .map(v => (typeof v === 'string' || typeof v === 'number' || v instanceof Date ? new Date(v) : null))\n .filter(v => v != null)\n : null;\n const normalized = value && value.length === 2 ? value : null;\n this.displayDate.set(normalized);\n } else {\n let value = typeof obj === 'string' || typeof obj === 'number' || obj instanceof Date ? new Date(obj) : null;\n if (value && isNaN(value.getTime())) value = null;\n const dateValue = value ? new Date(value.getFullYear(), value.getMonth(), value.getDate()) : null;\n // keep this way, because of time zones\n let timeValue = value\n ? `${value.getHours().toString().padStart(2, '0')}:` +\n `${value.getMinutes().toString().padStart(2, '0')}:` +\n `${value.getSeconds().toString().padStart(2, '0')}.` +\n `${value.getMilliseconds().toString().padStart(3, '0')}`\n : null;\n if (this.time() && !this.seconds()) {\n timeValue = timeValue?.substring(0, 6) ?? null;\n } else if (this.time() && !this.milliseconds()) {\n timeValue = timeValue?.substring(0, 8) ?? null;\n }\n\n this.displayDate.set(value); // Date Object\n this.selectedDate.set(dateValue); // Only Date\n\n // Only time as a string\n this.selectedTime.set(timeValue);\n }\n }\n\n registerOnChange(fn: (val: Date | Date[] | null) => void): void {\n this.onChangeFn = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouchedFn = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this._disabled.set(isDisabled);\n }\n\n registerOnValidatorChange?(fn: () => void): void {\n this.onValidatorChangeFn = fn; // store reference if needed\n }\n\n validate(): ValidationErrors | null {\n this.timeValid.set(this.isTimeParsedValid(this.parseTime(this.selectedTime())));\n return this.timeValid() ? null : {invalidTime: true};\n }\n\n private isTimeParsedValid(time: ParsedTime | null): boolean {\n // Validate ranges\n return !this.time() || time == null || (time.hours <= 23 && time.minutes <= 59 && time.seconds <= 59 && time.milliseconds <= 999);\n }\n\n private parseTime(time: string | null): ParsedTime | null {\n if (time == null) {\n return null;\n }\n\n const cleaned = time.replace(/_/g, '0');\n // Regex for all formats: HH:mm, HH:mm:ss, HH:mm:ss.SSS\n const regex = /^(\\d{2}):(\\d{2})(?::(\\d{2}))?(?:\\.(\\d{0,3}))?$/;\n const match = cleaned.match(regex);\n\n if (match) {\n const hh = +match[1]; // Hours\n const mm = +match[2]; // Minutes\n const ss = match[3] ? +match[3] : 0; // Seconds (default 0)\n const ms = match[4] ? +match[4].padEnd(3, '0') : 0; // Milliseconds (default 0)\n\n return {hours: hh, minutes: mm, seconds: ss, milliseconds: ms};\n }\n\n return null;\n }\n\n //////////////////////\n //////////////////////\n //////////////////////\n\n protected onDateEnter(): void {\n const value = this.displayDate();\n if (value != null) {\n this.onDateSelect(value);\n }\n }\n\n protected onDateSelect(date: Date | Date[]): void {\n if (Array.isArray(this.displayDate())) {\n this.onChangeFn(this.displayDate());\n return;\n }\n\n this.selectedDate.set(date);\n\n if (this.time() && !this.primeTimePicker()) this.combineAndUpdate();\n else this.onChangeFn(date);\n }\n\n protected onTimeSelect(): void {\n this.combineAndUpdate();\n }\n\n protected onSelectToday(): void {\n this.selectedDate.set(new Date());\n this.combineAndUpdate();\n }\n\n protected onClear(): void {\n this.selectedDate.set(null);\n this.selectedTime.set(null);\n this.displayDate.set(null);\n this.onChangeFn(this.displayDate());\n }\n\n private combineAndUpdate(): void {\n // our base\n const date = this.selectedDate() as Date | null;\n\n // now we need to combine it and change the date value\n const base = date ?? new Date();\n const final = this.timeSelect() ? new Date(base.getFullYear(), base.getMonth(), base.getDate()) : new Date(base);\n\n // if no date, only save when validated\n if (this.time()) {\n let time = this.selectedTime();\n const isMaksInputFocused = this.maskInput()?.focused;\n\n // invalid time (null/empty string). Our input mask has a default value on focus, so you can't just check for null\n if ((time == this.inputMaskConfig().format && !isMaksInputFocused && !this.displayDate()) || time === '') {\n this.maskInput()?.clear(); // triggers combineAndUpdate so we return\n return; // to avoid validation\n }\n\n // if the date is selected first\n if (date != null && time == null) {\n const closestOption = this.findClosestOptionToNow();\n this.selectedTime.set(closestOption.value);\n time = closestOption.value;\n }\n\n const parsedTime = this.parseTime(time);\n if (parsedTime != null && this.isTimeParsedValid(parsedTime)) {\n final.setHours(parsedTime.hours, parsedTime.minutes, parsedTime.seconds, parsedTime.milliseconds);\n this.displayDate.set(final);\n this.onChangeFn(this.displayDate());\n } else {\n this.onValidatorChangeFn();\n }\n } else {\n this.displayDate.set(final);\n this.onChangeFn(this.displayDate());\n }\n }\n\n private formatOptionLabel = (date: Date): string => {\n const hh = date.getHours().toString().padStart(2, '0');\n const mm = date.getMinutes().toString().padStart(2, '0');\n return `${hh}:${mm}`;\n };\n\n private formatOptionValue = (date: Date): string => {\n const hh = date.getHours().toString().padStart(2, '0');\n const mm = date.getMinutes().toString().padStart(2, '0');\n\n // options values must stay true to the format, for the value and dropdown option to stay sync\n if (this.seconds()) {\n if (this.milliseconds()) {\n return `${hh}:${mm}:00.000`;\n } else {\n return `${hh}:${mm}:00`;\n }\n }\n return `${hh}:${mm}`;\n };\n\n private findClosestOptionToNow() {\n const now = new Date();\n const nowMinutes = now.getHours() * 60 + now.getMinutes();\n\n const options = this.selectOptions();\n\n let index = Math.round(nowMinutes / this.timeSelectInterval());\n index = Math.min(index, options.length - 1);\n\n return options[index];\n }\n\n protected handleDateBlur(event: Event) {\n const value = this.displayDate();\n if (value != null) {\n this.onDateSelect(value);\n }\n this.handleBlur(event);\n }\n\n protected handleBlur(event: Event) {\n const value = this.displayDate();\n if (value != null) {\n this.onDateSelect(value);\n }\n this.onTouchedFn();\n this.blur.emit(event);\n }\n\n protected focusTimeInputMask(event: Event, inputMask: InputMask) {\n event.preventDefault();\n inputMask.inputViewChild?.nativeElement.focus();\n }\n\n protected openOverlay() {\n this.overlayVisible.set(true);\n }\n\n protected closeOverlay() {\n this.overlayVisible.set(false);\n }\n}\n","<p-inputgroup class=\"flex-col gap-2\">\n <ng-container *ngTemplateOutlet=\"prependAddons\"></ng-container>\n <!-- Append to body, to prevent overflow in popups (like editable) -->\n <div class=\"flex gap-1\">\n <p-date-picker\n appendTo=\"body\"\n [class]=\"className() + ' basis-1/2 shrink-0'\"\n [panelStyleClass]=\"panelStyleClass()\"\n [inputStyleClass]=\"inputStyleClass()\"\n [minDate]=\"minDate()\"\n [maxDate]=\"maxDate()\"\n [showClear]=\"showClear()\"\n [placeholder]=\"placeholder()\"\n [dateFormat]=\"dateFormat()\"\n [disabled]=\"disabled()\"\n [showTime]=\"time() && primeTimePicker()\"\n [showIcon]=\"showIcon()\"\n [showSeconds]=\"primeTimePicker() && seconds()\"\n [selectionMode]=\"!time() && dateRange() ? 'range' : 'single'\"\n [showButtonBar]=\"showButtonBar()\"\n [firstDayOfWeek]=\"1\"\n [(ngModel)]=\"displayDate\"\n (onSelect)=\"onDateSelect($event)\"\n (keyup.enter)=\"onDateEnter()\"\n (onBlur)=\"handleDateBlur($event)\"\n (onClear)=\"onClear()\"\n (onTodayClick)=\"onSelectToday()\"\n (onClearClick)=\"onClear()\" />\n @if (time() && !primeTimePicker()) {\n <p-inputgroup class=\"basis-1/2 shrink-0\">\n <p-inputmask\n #InputMask\n class=\"w-full flex\"\n [invalid]=\"!timeValid()\"\n [(ngModel)]=\"selectedTime\"\n (ngModelChange)=\"onTimeSelect()\"\n [disabled]=\"disabled()\"\n [mask]=\"inputMaskConfig().mask\"\n [placeholder]=\"inputMaskConfig().placeholder\"\n [slotChar]=\"inputMaskConfig().format\"\n [showClear]=\"showClear()\"\n (onClear)=\"onClear()\"\n (click)=\"openOverlay()\"\n (onFocus)=\"openOverlay()\"\n (onBlur)=\"closeOverlay()\" />\n <button\n class=\"p-datepicker-dropdown cursor-pointer flex-shrink-0\"\n [disabled]=\"disabled()\"\n (click)=\"focusTimeInputMask($event, InputMask)\"\n aria-label=\"Focus time mask input\">\n <i class=\"pi pi-clock\"></i>\n </button>\n </p-inputgroup>\n @if (timeSelect() && !disabled()) {\n <!-- Using display:contents rendering, so that the parents flex gap doesn’t apply to this container -->\n <p-overlay class=\"contents\" [(visible)]=\"overlayVisible\" appendTo=\"body\">\n <!-- Refresh event is unnecessary, because it shares the value with the MaskInput, which then triggers ngModelChange.\n It still exists because defaultPropagation closes the popup in filters/editor on select, and disabling it, doesn't trigger the change event -->\n <p-listbox\n class=\"mr-10\"\n [options]=\"selectOptions()\"\n optionLabel=\"label\"\n optionValue=\"value\"\n [(ngModel)]=\"selectedTime\"\n (click)=\"$event.stopPropagation()\"\n (mousedown)=\"$event.preventDefault()\"\n (mouseup)=\"closeOverlay()\"\n (onChange)=\"onTimeSelect()\" />\n </p-overlay>\n }\n }\n </div>\n\n <ng-container *ngTemplateOutlet=\"appendAddons\"></ng-container>\n</p-inputgroup>\n\n<ng-template #prependAddons>\n @for (pt of prependTemplates(); track $index) {\n <p-inputgroup-addon>\n <ng-container *ngTemplateOutlet=\"pt.template\"></ng-container>\n </p-inputgroup-addon>\n }\n</ng-template>\n<ng-template #appendAddons>\n @for (at of appendTemplates(); track $index) {\n <p-inputgroup-addon>\n <ng-container *ngTemplateOutlet=\"at.template\"></ng-container>\n </p-inputgroup-addon>\n }\n</ng-template>\n","import {NgTemplateOutlet} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n DestroyRef,\n ExistingProvider,\n Injector,\n OnInit,\n ViewEncapsulation,\n booleanAttribute,\n computed,\n effect,\n forwardRef,\n inject,\n input,\n numberAttribute\n} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {\n ControlValueAccessor,\n FormBuilder,\n FormControl,\n FormGroup,\n FormsModule,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n ReactiveFormsModule,\n ValidationErrors,\n Validator,\n Validators\n} from '@angular/forms';\n\nimport {TranslatePipe} from '@ngx-translate/core';\nimport {Divider} from 'primeng/divider';\nimport {InputGroup} from 'primeng/inputgroup';\nimport {InputGroupAddon} from 'primeng/inputgroupaddon';\nimport {merge} from 'rxjs';\n\nimport {booleanWithDefaultAttribute} from '@mediusinc/mng-commons/core';\n\nimport {DatetimePickerComponent} from '../datetime-picker/datetime-picker.component';\nimport {DateRangeTemplateDirective} from './date-range-template.directive';\n\nexport const DATE_RANGE_VALUE_ACCESSOR: ExistingProvider = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => DateRangeComponent),\n multi: true\n};\n\nexport const DATE_RANGE_VALIDATOR: ExistingProvider = {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => DateRangeComponent),\n multi: true\n};\n\n@Component({\n selector: 'mng-date-range',\n templateUrl: './date-range.component.html',\n styleUrl: './date-range.component.css',\n providers: [DATE_RANGE_VALUE_ACCESSOR, DATE_RANGE_VALIDATOR],\n imports: [FormsModule, ReactiveFormsModule, TranslatePipe, DatetimePickerComponent, Divider, InputGroupAddon, NgTemplateOutlet, InputGroup],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n '[class]': 'className()'\n }\n})\nexport class DateRangeComponent implements OnInit, ControlValueAccessor, Validator {\n private readonly formBuilder = inject(FormBuilder);\n private readonly injector = inject(Injector);\n private readonly destroyRef = inject(DestroyRef);\n private readonly cdr = inject(ChangeDetectorRef);\n\n public readonly placeholder = input<string>('');\n public readonly showTime = input(false, {transform: booleanAttribute});\n public readonly showSeconds = input(false, {transform: booleanAttribute});\n public readonly milliseconds = input(false, {transform: booleanAttribute});\n public readonly primeTimePicker = input(false, {transform: booleanAttribute});\n public readonly timeSelect = input(true, {transform: v => booleanWithDefaultAttribute(v, true)});\n public readonly timeSelectInterval = input(60, {transform: v => numberAttribute(v, 60)}); // minutes\n public readonly dateFormat = input<string>();\n public readonly className = input<string>();\n public readonly inputStyleClass = input<string>();\n public readonly required = input(false, {transform: booleanAttribute});\n public readonly disabled = input(false, {\n transform: booleanAttribute\n });\n public readonly vertical = input(false, {transform: booleanAttribute});\n public readonly templates = input<DateRangeTemplateDirective[]>([]);\n\n public readonly prependTemplates = computed(() => this.templates().filter(t => t.name() === 'prepend'));\n public readonly appendTemplates = computed(() => this.templates().filter(t => t.name() === 'append'));\n\n private fromToFormControl!: FormGroup;\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n private onChangeFn: any = () => {};\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n private onTouchedFn: any = () => {};\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n private onValidatorChangeFn: any = () => {};\n\n public get fromCtrl() {\n return this.fromToFormControl.get('from') as FormControl;\n }\n\n public get toCtrl() {\n return this.fromToFormControl.get('to') as FormControl;\n }\n\n public get dateRangeCtrl() {\n return this.fromToFormControl.get('dateRange') as FormControl;\n }\n\n ngOnInit() {\n this.fromToFormControl = this.formBuilder.group({\n from: [null, Validators.required],\n to: [null, Validators.required],\n dateRange: [null, Validators.required]\n });\n\n effect(\n () => {\n this.setDisabledState(this.disabled());\n },\n {injector: this.injector}\n );\n\n merge(this.fromCtrl.valueChanges, this.toCtrl.valueChanges, this.dateRangeCtrl.valueChanges)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => this.onValueChange());\n }\n\n registerOnChange(fn: any): void {\n this.onChangeFn = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouchedFn = fn;\n }\n\n registerOnValidatorChange?(fn: () => void): void {\n this.onValidatorChangeFn = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n if (isDisabled && this.fromToFormControl?.enabled) {\n this.fromToFormControl.disable();\n } else if (!isDisabled && this.fromToFormControl?.disabled) {\n this.fromToFormControl.enable();\n }\n }\n\n onBlur() {\n this.onTouchedFn();\n }\n\n writeValue(obj: any): void {\n let startDate: Date | null = null;\n let endDate: Date | null = null;\n\n if (Array.isArray(obj)) {\n if (obj.length > 0 && (obj[0] instanceof Date || typeof obj[0] === 'string' || typeof obj[0] === 'number')) {\n startDate = new Date(obj[0]);\n }\n if (obj.length > 1 && (obj[1] instanceof Date || typeof obj[1] === 'string' || typeof obj[1] === 'number')) {\n endDate = new Date(obj[1]);\n }\n } else if (obj instanceof Date || typeof obj === 'string' || typeof obj === 'number') {\n startDate = new Date(obj);\n }\n\n if (this.showTime()) {\n this.fromCtrl.setValue(startDate, {emitEvent: false});\n this.toCtrl.setValue(endDate, {emitEvent: false});\n } else if (startDate || endDate) {\n this.dateRangeCtrl.setValue([startDate, endDate], {emitEvent: false});\n } else {\n this.dateRangeCtrl.setValue(null, {emitEvent: false});\n }\n }\n\n validate(): ValidationErrors | null {\n if (!this.required()) return null;\n\n if (this.showTime()) {\n if (this.fromCtrl.hasError('required') || this.toCtrl.hasError('required')) {\n return {\n required: true\n };\n }\n } else {\n if (this.dateRangeCtrl.hasError('required')) {\n return {\n required: true\n };\n }\n }\n\n return null;\n }\n\n private onValueChange() {\n if (this.showTime()) {\n const fromDate = this.fromCtrl.value as Date;\n const toDate = this.toCtrl.value as Date;\n this.onChangeFn([fromDate, toDate]);\n } else {\n const date = this.dateRangeCtrl.value as Date[];\n this.onChangeFn(date);\n }\n }\n}\n","@if (showTime()) {\n <div class=\"flex gap-1\" [class.flex-col]=\"vertical()\">\n <p-inputgroup>\n <ng-container *ngTemplateOutlet=\"prependAddons\"></ng-container>\n <mng-datetime-picker\n class=\"w-full\"\n [inputStyleClass]=\"inputStyleClass()\"\n [formControl]=\"fromCtrl\"\n [maxDate]=\"toCtrl.value\"\n [placeholder]=\"(placeholder() + ' ' + ('mngTable.filterRangeFrom' | translate)).trim()\"\n [dateFormat]=\"dateFormat()\"\n showIcon=\"true\"\n time=\"true\"\n [seconds]=\"showSeconds()\"\n [milliseconds]=\"milliseconds()\"\n [primeTimePicker]=\"primeTimePicker()\"\n [timeSelect]=\"timeSelect()\"\n [timeSelectInterval]=\"timeSelectInterval()\"\n (blur)=\"onBlur()\" />\n <ng-container *ngTemplateOutlet=\"appendAddons\"></ng-container>\n </p-inputgroup>\n @if (!vertical()) {\n <p-divider layout=\"horizontal\" class=\"!w-3 !p-0\" />\n }\n <p-inputgroup>\n <ng-container *ngTemplateOutlet=\"prependAddons\"></ng-container>\n <mng-datetime-picker\n class=\"w-full\"\n [inputStyleClass]=\"inputStyleClass()\"\n [formControl]=\"toCtrl\"\n [minDate]=\"fromCtrl.value\"\n [placeholder]=\"(placeholder() + ' ' + ('mngTable.filterRangeTo' | translate)).trim()\"\n [dateFormat]=\"dateFormat()\"\n showIcon=\"true\"\n time=\"true\"\n [seconds]=\"showSeconds()\"\n [milliseconds]=\"milliseconds()\"\n [primeTimePicker]=\"primeTimePicker()\"\n [timeSelect]=\"timeSelect()\"\n [timeSelectInterval]=\"timeSelectInterval()\"\n (blur)=\"onBlur()\" />\n <ng-container *ngTemplateOutlet=\"appendAddons\"></ng-container>\n </p-inputgroup>\n </div>\n} @else {\n <p-input-group>\n <ng-container *ngTemplateOutlet=\"prependAddons\"></ng-container>\n <mng-datetime-picker\n class=\"w-full\"\n [inputStyleClass]=\"inputStyleClass()\"\n [formControl]=\"dateRangeCtrl\"\n [placeholder]=\"placeholder()\"\n [dateFormat]=\"dateFormat()\"\n dateRange=\"true\"\n showIcon=\"true\"\n (blur)=\"onBlur()\" />\n <ng-container *ngTemplateOutlet=\"appendAddons\"></ng-container\n ></p-input-group>\n}\n\n<ng-template #prependAddons>\n @for (pt of prependTemplates(); track $index) {\n <p-inputgroup-addon>\n <ng-container *ngTemplateOutlet=\"pt.template\"></ng-container>\n </p-inputgroup-addon>\n }\n</ng-template>\n<ng-template #appendAddons>\n @for (at of appendTemplates(); track $index) {\n <p-inputgroup-addon>\n <ng-container *ngTemplateOutlet=\"at.template\"></ng-container>\n </p-inputgroup-addon>\n }\n</ng-template>\n","import {NgTemplateOutlet} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n DestroyRef,\n ExistingProvider,\n Injector,\n booleanAttribute,\n computed,\n effect,\n forwardRef,\n inject,\n input,\n output,\n signal,\n viewChild\n} from '@angular/core';\nimport {takeUntilDestroyed, toObservable} from '@angular/core/rxjs-interop';\nimport {ControlValueAccessor, FormsModule, NG_VALUE_ACCESSOR} from '@angular/forms';\n\nimport {TranslatePipe, TranslateService} from '@ngx-translate/core';\nimport {InputGroup} from 'primeng/inputgroup';\nimport {InputGroupAddon} from 'primeng/inputgroupaddon';\nimport {MultiSelect, MultiSelectBlurEvent, MultiSelectChangeEvent} from 'primeng/multiselect';\nimport {Select, SelectChangeEvent} from 'primeng/select';\nimport {Subject, Subscription, combineLatest, debounceTime, distinctUntilChanged, map, of, switchMap, tap} from 'rxjs';\n\nimport {\n CommonsInternalError,\n DataListParams,\n FilterMatchMode,\n ILookupDataProvider,\n LoggerService,\n toObservable as commonsToObservable,\n fromSubscribeError,\n getErrorLogLevel,\n narrowI18nToTranslation\n} from '@mediusinc/mng-commons/core';\nimport {InputTrimType} from '@mediusinc/mng-commons/form/api';\n\nimport {DropdownTemplateDirective} from './dropdown-template.directive';\n\nexport const DROPDOWN_VALUE_ACCESSOR: ExistingProvider = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => DropdownComponent),\n multi: true\n};\n\n@Component({\n selector: 'mng-dropdown',\n templateUrl: './dropdown.component.html',\n providers: [DROPDOWN_VALUE_ACCESSOR],\n imports: [TranslatePipe, FormsModule, Select, MultiSelect, InputGroup, InputGroupAddon, NgTemplateOutlet],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class DropdownComponent implements ControlValueAccessor {\n private readonly logger = inject(LoggerService).create('DropdownComponent');\n\n private readonly injector = inject(Injector);\n private readonly destroyRef = inject(DestroyRef);\n private readonly translate = inject(TranslateService);\n\n public dataProvider = input<ILookupDataProvider<any, any, any, any>>();\n public options = input<Array<any>>([]);\n public optionsTrackProperty = input<string>();\n public optionsLabelPropertyInit = input<string | undefined>(undefined, {alias: 'optionsLabelProperty'});\n public optionsLabelTranslate = input(false, {transform: booleanAttribute});\n public optionsValuePropertyInput = input<string | undefined>(undefined, {alias: 'optionsValueProperty'});\n public optionsDisabledProperty = input<string>();\n public multiselect = input(false, {transform: booleanAttribute});\n public placeholder = input<string>();\n public showClear = input(false, {transform: booleanAttribute});\n public selectFirstItemInput = input(false, {transform: booleanAttribute, alias: 'selectFirstItem'});\n public className = input<string>();\n public dropdownClassName = input<string>();\n public changeValueOnBlur = input(false, {transform: booleanAttribute});\n public loadingInput = input(false, {alias: 'loading', transform: booleanAttribute});\n public disabledInput = input(false, {alias: 'disabled', transform: booleanAttribute});\n public allowInput = input(false, {transform: booleanAttribute});\n public appendTo = input<string | null>('body');\n public readonly templates = input<DropdownTemplateDirective[]>([]);\n\n public inlineSearch = input(false, {transform: booleanAttribute});\n public searchTrim = input<InputTrimType | undefined>(undefined);\n\n public valueChange = output<any>();\n // eslint-disable-next-line @angular-eslint/no-output-native\n public blur = output<Event>();\n\n public primeSelect = viewChild(Select);\n public primeMultiselect = viewChild(MultiSelect);\n\n private _value?: any | null;\n public ngModelValue = signal<undefined | null | any>(undefined);\n\n private _loading = signal(false);\n private _disabled = signal(false);\n public loading = computed(() => this.loadingInput() || this._loading());\n public disabled = computed(() => this.disabledInput() || this._disabled());\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n private onChangeFn: any = () => {};\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n private onTouchedFn: any = () => {};\n\n private dataProviderService: any = null;\n public items = signal<any[]>([]);\n private firstTimeSettingItems = true;\n\n private isDropdownPanelShown = false;\n\n // used with custom input functionality\n private fetchedItems: any[] = [];\n private optionsSubscription?: Subscription;\n private customInputSubject = new Subject<string | undefined>();\n\n public readonly prependTemplates = computed(() => this.templates().filter(t => t.name() === 'prepend'));\n public readonly appendTemplates = computed(() => this.templates().filter(t => t.name() === 'append'));\n\n public optionsLabelProperty = computed(() => {\n if (this.optionsLabelTranslate()) {\n // setup translation properties\n if (this.optionsLabelPropertyInit()) {\n return `${this.optionsLabelPropertyInit()}_i18n`;\n } else if (!this.optionsLabelPropertyInit() && !this.optionsValuePropertyInput()) {\n return 'title_i18n';\n } else {\n throw new CommonsInternalError(`Invalid use with value (${this.optionsValuePropertyInput()}) and label (${this.optionsLabelPropertyInit()}) property setup.`, {\n name: 'DropdownComponentError'\n });\n }\n }\n\n return this.optionsLabelPropertyInit();\n });\n public optionsValueProperty = computed(() => {\n if (this.optionsLabelTranslate()) {\n // setup translation properties\n if (!this.optionsLabelPropertyInit() && !this.optionsValuePropertyInput()) {\n return 'value';\n } else if (!this.optionsLabelPropertyInit()) {\n throw new CommonsInternalError(`Invalid use with value (${this.optionsValuePropertyInput()}) and label (${this.optionsLabelPropertyInit()}) property setup.`, {\n name: 'DropdownComponentError'\n });\n }\n }\n\n return this.optionsValuePropertyInput();\n });\n\n public get value() {\n return this._value;\n }\n\n constructor() {\n effect(() => {\n this._value = this.ngModelValue();\n });\n\n this.customInputSubject\n .asObservable()\n .pipe(distinctUntilChanged(), debounceTime(250), takeUntilDestroyed())\n .subscribe(v => this.searchItems(v));\n\n this.fetchItems();\n\n effect(() => {\n if (this.allowInput()) {\n if (this.optionsLabelProperty() && !this.optionsValueProperty()) {\n throw new CommonsInternalError(\n `allowInput is not supported when optionsLabelProperty is defined but optionsValueProperty is missing. Set optionsValueProperty to enable allowInput.`\n );\n }\n }\n });\n }\n\n registerOnChange(fn: any): void {\n this.onChangeFn = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouchedFn = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n setTimeout(() => this._disabled.set(isDisabled));\n }\n\n writeValue(value: any): void {\n // this check is required because angular in some cases writes null value\n // before value accessor is initialized\n // if form control value is of primitive type (ex: enums) then write value is not called (we think)\n if (value == null && this._value == null) {\n return;\n }\n // write value immediately - it is important so that first select is not triggered!\n this._value = value;\n this.adjustValueOnItemsValuePropertyTypeMismatch(true);\n }\n\n onDropdownBlur(event: Event) {\n // if allowCustomInput is enabled, the input element might still be in focus with the\n // dropdown panel hidden - that's why the !this.allowCustomInput() check is needed\n if (this.isDropdownPanelShown && !this.allowInput()) {\n // ignore this blur event\n return;\n }\n const primeDropdown = this.primeSelect();\n if (this.changeValueOnBlur() && primeDropdown) {\n this.propagateValueChange(primeDropdown.value);\n }\n this.onTouchedFn();\n this.blur.emit(event);\n }\n\n onDropdownChange(event: SelectChangeEvent) {\n if (!this.changeValueOnBlur()) {\n this.propagateValueChange(event.value);\n }\n\n if (this.allowInput()) {\n const query = typeof event.value !== 'string' || event.value.length === 0 ? undefined : this.trimValue(event.value as string);\n this.customInputSubject.next(query);\n }\n }\n\n private searchItems(query?: string) {\n if (this.inlineSearch()) {\n // no need to refetch, just set items from cached fetched items\n this.setItems(this.fetchedItems, query);\n } else {\n this.fetchItems(query);\n }\n }\n\n private fetchItems(query?: string) {\n this.optionsSubscription?.unsubscribe();\n this.optionsSubscription = combineLatest([toObservable(this.dataProvider, {injector: this.injector}), toObservable(this.options, {injector: this.injector})])\n .pipe(\n tap(() => this._loading.set(true)),\n switchMap(([dataProvider, options]) => {\n if (dataProvider) {\n if (!this.dataProviderService) {\n this.dataProviderService = dataProvider.serviceType ? this.injector.get<any>(dataProvider.serviceType) : null;\n }\n\n const params: DataListParams = {\n limit: this.allowInput() ? 10 : 50\n };\n\n const optionsLabelProperty = this.optionsLabelProperty();\n if (optionsLabelProperty) {\n params.sort = [{property: optionsLabelProperty}];\n }\n if (query != null && optionsLabelProperty) {\n params.filters = {\n [optionsLabelProperty]: {\n value: query,\n matchMode: FilterMatchMode.StartsWith\n }\n };\n }\n\n return commonsToObservable(dataProvider.lookup(params, this.dataProviderService, query));\n } else {\n return of(options ?? []);\n }\n }),\n switchMap(items => this.transformItems(items)),\n takeUntilDestroyed(this.destroyRef)\n )\n .subscribe({\n next: res => {\n this.fetchedItems = res;\n this.setItems(res, query);\n this._loading.set(false);\n this.selectFirstItem(); // only selects first item if selectFirstItemInput is set accordingly\n this.adjustValueOnItemsValuePropertyTypeMismatch();\n },\n error: err => {\n this.setItems([], query);\n this._loading.set(false);\n const error = fromSubscribeError(err, 'DropdownComponentError');\n this.logger.log(error, getErrorLogLevel(error));\n }\n });\n }\n\n /**\n * Sets the items in the dropdown. If a query is provided, the items will be filtered by the query (using a 'starts with' filter).\n *\n * @param items The items to set.\n */\n private setItems(items: Array<any>, query?: string) {\n if (this.allowInput()) {\n // just validate that items are as expected in case of allowing input\n if (items.length > 0) {\n // items can either be objects (with optionsValueProperty specifying a string property) or strings\n if (typeof items[0] === 'object') {\n if (!this.optionsValueProperty()) {\n throw new CommonsInternalError(\n `allowInput is not supported when optionValueProperty is not set and the dropdown items are of type object. Set optionsValueProperty to enable allowInput.`\n );\n }\n if (typeof items[0]?.[this.optionsValueProperty()!] !== 'string') {\n throw new CommonsInternalError(`allowInput is only supported when the value property (specified with optionsValueProperty) is of type string.`);\n }\n } else if (!(typeof items[0] === 'string' && !this.optionsLabelProperty() && !this.optionsValueProperty())) {\n throw new CommonsInternalError(\n `'allowInput' is only supported for items of type string or object. For object types, ensure that the 'optionsValueProperty' is specified and represents a property of type string.`\n );\n }\n }\n }\n\n if (query && query.length > 0 && (this.inlineSearch() || this.allowInput())) {\n const queryLowerCase = query?.toLowerCase() ?? '';\n const filteredItems = items.filter(i => {\n let itemLabel = i;\n const optionsLabelProperty = this.optionsLabelProperty();\n if (optionsLabelProperty && typeof i === 'object') {\n itemLabel = i[optionsLabelProperty];\n }\n if (itemLabel == null) {\n return queryLowerCase == null || !queryLowerCase.length;\n }\n if (typeof itemLabel !== 'string') {\n itemLabel = itemLabel.toString();\n }\n return itemLabel.toLowerCase().startsWith(queryLowerCase);\n });\n this.items.set([...filteredItems]);\n } else {\n this.items.set([...items]);\n }\n }\n\n onDropdownPanelShow() {\n this.isDropdownPanelShown = true;\n }\n\n onDropdownPanelHide() {\n this.isDropdownPanelShown = false;\n }\n\n onFocus() {\n this.onTouchedFn();\n }\n\n onMultiselectChange(event: MultiSelectChangeEvent) {\n if (!this.changeValueOnBlur()) {\n this.propagateValueChange(event.value);\n }\n }\n\n onMultiselectBlur(event: MultiSelectBlurEvent) {\n this.onTouchedFn();\n this.blur.emit(event.originalEvent);\n }\n\n onMultiselectPanelHide() {\n const primeMultiselect = this.primeMultiselect();\n if (this.changeValueOnBlur() && primeMultiselect) {\n this.propagateValueChange(primeMultiselect.value);\n }\n }\n\n private selectFirstItem() {\n if (this.firstTimeSettingItems && this.items().length > 0 && this.selectFirstItemInput() && !this._value) {\n const optionsValueProperty = this.optionsValueProperty();\n const value = optionsValueProperty ? this.items()[0][optionsValueProperty] : this.items()[0];\n this.ngModelValue.set(value); // set to write for input\n this.firstTimeSettingItems = false;\n this.propagateValueChange(value);\n }\n }\n\n private transformItems(items: any[]) {\n if (this.optionsLabelTranslate()) {\n const translationKeys: string[] = items.map(\n item => (typeof item === 'object' && this.optionsLabelPropertyInit() ? (item[this.optionsLabelPropertyInit() as keyof object] as string) : item) as string\n );\n\n if (translationKeys.length === 0) {\n return of([]);\n }\n\n return this.translate.stream(translationKeys).pipe(\n map(translations =>\n items.map(item => {\n if (typeof item === 'object' && this.optionsLabelPropertyInit()) {\n const label = item[this.optionsLabelPropertyInit() as keyof object] as string;\n const translation: string | undefined = narrowI18nToTranslation(translations, label);\n if (translation) {\n return {...item, [this.optionsLabelProperty()!]: translation};\n }\n return {...item};\n } else {\n const translation = translations[item];\n return {\n [this.optionsLabelProperty()!]: translation ?? item,\n [this.optionsValueProperty()!]: item\n };\n }\n })\n )\n );\n } else {\n return of(items);\n }\n }\n\n private adjustValueOnItemsValuePropertyTypeMismatch(setNgModelValue = false) {\n const optionsValueProp = this.optionsValueProperty();\n if (optionsValueProp && this._value != null && this.items().length > 0 && this.items()[0][optionsValueProp] != null) {\n if (Array.isArray(this._value)) {\n if (this._value.length > 0 && typeof this.items()[0][optionsValueProp] !== typeof this._value[0]) {\n const stringValues = this._value.map(v => v.toString());\n const selectedOptions = this.items().filter(i => i[optionsValueProp] != null && stringValues.includes(i[optionsValueProp].toString()));\n if (selectedOptions.length > 0) {\n this.ngModelValue.set(selectedOptions.map(i => i[optionsValueProp]));\n return;\n }\n }\n } else if (typeof this.items()[0][optionsValueProp] !== typeof this._value) {\n // types don't match, search and compare by string\n const selectedOption = this.items().find(i => i[optionsValueProp] != null && i[optionsValueProp].toString() === this._value.toString());\n if (selectedOption) {\n this.ngModelValue.set(selectedOption[optionsValueProp]);\n return;\n }\n }\n }\n\n if (setNgModelValue) {\n // force write to ngModelValue anyway\n this.ngModelValue.set(this._value);\n }\n }\n\n private propagateValueChange(value: any) {\n this._value = value;\n this.onChangeFn(value);\n this.valueChange.emit(value);\n }\n\n /**\n * Trims the leading and/or trailing whitespace from the given value based on the search trimming mode.\n *\n * @param value - The value to be trimmed.\n */\n private trimValue(value: string | undefined) {\n switch (this.searchTrim()) {\n case 'start':\n return value?.trimStart();\n case 'end':\n return value?.trimEnd();\n case 'both':\n return value?.trim();\n default:\n return value;\n }\n }\n}\n","<p-inputgroup>\n @for (pt of prependTemplates(); track $index) {\n <p-inputgroup-addon>\n <ng-container *ngTemplateOutlet=\"pt.template\"></ng-container>\n </p-inputgroup-addon>\n }\n @if (!multiselect()) {\n <p-select\n [(ngModel)]=\"ngModelValue\"\n [placeholder]=\"placeholder()\"\n [dataKey]=\"optionsTrackProperty()\"\n [optionLabel]=\"optionsLabelProperty()\"\n [optionValue]=\"optionsValueProperty()\"\n [optionDisabled]=\"optionsDisabledProperty()\"\n [options]=\"items()\"\n [showClear]=\"showClear()\"\n [editable]=\"allowInput()\"\n [styleClass]=\"className()\"\n [panelStyleClass]=\"dropdownClassName()\"\n [disabled]=\"disabled()\"\n [filter]=\"inlineSearch() && !allowInput()\"\n [filterBy]=\"optionsLabelProperty()\"\n (onBlur)=\"onDropdownBlur($event)\"\n (onChange)=\"onDropdownChange($event)\"\n (onShow)=\"onDropdownPanelShow()\"\n (onHide)=\"onDropdownPanelHide()\"\n (onFocus)=\"onFocus()\"\n [dropdownIcon]=\"loading() ? 'pi pi-spinner pi-spin' : 'pi pi-chevron-down'\"\n [appendTo]=\"appendTo()\">\n </p-select>\n } @else {\n <p-multiSelect\n [ngModel]=\"ngModelValue()\"\n [maxSelectedLabels]=\"1\"\n [selectedItemsLabel]=\"'mngDropdown.multiselectOverMaxDisplayLimit' | translate\"\n [placeholder]=\"placeholder()\"\n [dataKey]=\"optionsTrackProperty()\"\n [optionLabel]=\"optionsLabelProperty()\"\n [optionValue]=\"optionsValueProperty()\"\n [optionDisabled]=\"optionsDisabledProperty()\"\n [options]=\"items()\"\n [styleClass]=\"className()\"\n [panelStyleClass]=\"dropdownClassName()\"\n [filter]=\"true\"\n [showToggleAll]=\"false\"\n [disabled]=\"disabled()\"\n (onChange)=\"onMultiselectChange($event)\"\n (onPanelHide)=\"onMultiselectPanelHide()\"\n (onBlur)=\"onMultiselectBlur($event)\"\n (onFocus)=\"onFocus()\"\n appendTo=\"body\">\n </p-multiSelect>\n }\n @for (at of appendTemplates(); track $index) {\n <p-inputgroup-addon>\n <ng-container *ngTemplateOutlet=\"at.template\"></ng-container>\n </p-inputgroup-addon>\n }\n</p-inputgroup>\n","import {NgTemplateOutlet} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ExistingProvider,\n ViewEncapsulation,\n booleanAttribute,\n computed,\n effect,\n forwardRef,\n inject,\n input,\n output\n} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {\n ControlValueAccessor,\n FormBuilder,\n FormControl,\n FormGroup,\n FormsModule,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n ReactiveFormsModule,\n ValidationErrors,\n Validator,\n Validators\n} from '@angular/forms';\n\nimport {TranslatePipe} from '@ngx-translate/core';\nimport {InputGroup} from 'primeng/inputgroup';\nimport {InputGroupAddon} from 'primeng/inputgroupaddon';\nimport {InputNumber} from 'primeng/inputnumber';\nimport {merge} from 'rxjs';\n\nimport {Nullable} from '@mediusinc/mng-commons/core';\n\nimport {NumberRangeTemplateDirective} from './number-range-template.directive';\n\nexport const NUMBER_RANGE_VALUE_ACCESSOR: ExistingProvider = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NumberRangeComponent),\n multi: true\n};\n\nexport const NUMBER_RANGE_VALIDATOR: ExistingProvider = {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => NumberRangeComponent),\n multi: true\n};\n\n@Component({\n selector: 'mng-number-range',\n templateUrl: './number-range.component.html',\n styleUrl: './number-range.component.css',\n providers: [NUMBER_RANGE_VALUE_ACCESSOR, NUMBER_RANGE_VALIDATOR],\n imports: [FormsModule, ReactiveFormsModule, InputNumber, InputGroup, InputGroupAddon, NgTemplateOutlet, TranslatePipe],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None\n})\nexport class NumberRangeComponent implements ControlValueAccessor, Validator {\n private readonly formBuilder = inject(FormBuilder);\n private readonly cdr = inject(ChangeDetectorRef);\n\n public placeholder = input<string>();\n public useGrouping = input(true, {transform: booleanAttribute});\n public minFractionDigits = input<number>();\n public maxFractionDigits = input<number>();\n public required = input(false, {transform: booleanAttribute});\n public disabled = input(false, {\n transform: booleanAttribute\n });\n public vertical = input(false, {transform: booleanAttribute});\n public readonly templates = input<NumberRangeTemplateDirective[]>([]);\n public className = input<string>();\n\n public keyDown = output<KeyboardEvent>();\n\n public readonly prependTemplates = computed(() => this.templates().filter(t => t.name() === 'prepend'));\n public readonly appendTemplates = computed(() => this.templates().filter(t => t.name() === 'append'));\n\n private fromToFormControl: FormGroup = this.formBuilder.group({\n from: [null, Validators.required],\n to: [null, Validators.required]\n });\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n private onChangeFn: any = () => {};\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n private onTouchedFn: any = () => {};\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n private onValidatorChangeFn: any = () => {};\n\n public get fromCtrl() {\n return this.fromToFormControl.get('from') as FormControl;\n }\n\n public get toCtrl() {\n return this.fromToFormControl.get('to') as FormControl;\n }\n\n constructor() {\n effect(() => {\n this.setDisabledState(this.disabled());\n });\n\n merge(this.fromCtrl.valueChanges, this.toCtrl.valueChanges)\n .pipe(takeUntilDestroyed())\n .subscribe(() => this.onValueChange());\n }\n\n registerOnChange(fn: any): void {\n this.onChangeFn = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouchedFn = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n if (isDisabled && this.fromToFormControl?.enabled) {\n this.fromToFormControl.disable();\n } else if (!isDisabled && this.fromToFormControl?.disabled) {\n this.fromToFormControl.enable();\n }\n }\n\n writeValue(obj: any): void {\n let start: number | null = null;\n let end: number | null = null;\n\n if (Array.isArray(obj)) {\n if (obj.length > 0 && (typeof obj[0] === 'string' || typeof obj[0] === 'number')) {\n start = this.toNumber(obj[0]);\n }\n if (obj.length > 1 && (typeof obj[1] === 'string' || typeof obj[1] === 'number')) {\n end = this.toNumber(obj[1]);\n }\n } else if (typeof obj === 'string' || typeof obj === 'number') {\n start = this.toNumber(obj);\n }\n\n this.fromCtrl.setValue(start, {emitEvent: false});\n this.toCtrl.setValue(end, {emitEvent: false});\n }\n\n validate(): ValidationErrors | null {\n if (!this.required()) return null;\n\n if (this.fromCtrl.hasError('required') || this.toCtrl.hasError('required')) {\n return {\n required: true\n };\n }\n\n return null;\n }\n\n onKeyDown(event: KeyboardEvent) {\n this.keyDown.emit(event);\n }\n\n onBlur() {\n this.onTouchedFn();\n }\n\n private toNumber(val: Nullable<string | number>) {\n if (val == null || typeof val === 'number') {\n return val ?? null;\n }\n val = val.replaceAll(',', '');\n const numVal = parseFloat(val);\n return isNaN(numVal) ? null : numVal;\n }\n\n private onValueChange() {\n const fromDate = this.fromCtrl.value as Date;\n const toDate = this.toCtrl.value as Date;\n this.onChangeFn([fromDate, toDate]);\n }\n}\n","<div class=\"flex gap-1\" [class.flex-col]=\"vertical()\">\n <p-inputgroup>\n <ng-container *ngTemplateOutlet=\"prependAddons\"></ng-container>\n <p-inputNumber\n [formControl]=\"fromCtrl\"\n [placeholder]=\"placeholder() + ' ' + ('mngTable.filterRangeFrom' | translate)\"\n [useGrouping]=\"useGrouping()\"\n [minFractionDigits]=\"minFractionDigits()\"\n [maxFractionDigits]=\"maxFractionDigits()\"\n [max]=\"toCtrl.value\"\n [inputStyleClass]=\"className()\"\n (onKeyDown)=\"onKeyDown($event)\"\n (onBlur)=\"onBlur()\" />\n <ng-container *ngTemplateOutlet=\"appendAddons\"></ng-container>\n </p-inputgroup>\n <p-inputgroup>\n <ng-container *ngTemplateOutlet=\"prependAddons\"></ng-container>\n <p-inputNumber\n [formControl]=\"toCtrl\"\n [placeholder]=\"placeholder() + ' ' + ('mngTable.filterRangeTo' | translate)\"\n [useGrouping]=\"useGrouping()\"\n [minFractionDigits]=\"minFractionDigits()\"\n [maxFractionDigits]=\"maxFractionDigits()\"\n [min]=\"fromCtrl.value\"\n [inputStyleClass]=\"className()\"\n (onKeyDown)=\"onKeyDown($event)\"\n (onBlur)=\"onBlur()\" />\n <ng-container *ngTemplateOutlet=\"appendAddons\"></ng-container>\n </p-inputgroup>\n</div>\n\n<ng-template #prependAddons>\n @for (pt of prependTemplates(); track $index) {\n <p-inputgroup-addon>\n <ng-container *ngTemplateOutlet=\"pt.template\"></ng-container>\n </p-inputgroup-addon>\n }\n</ng-template>\n<ng-template #appendAddons>\n @for (at of appendTemplates(); track $index) {\n <p-inputgroup-addon>\n <ng-container *ngTemplateOutlet=\"at.template\"></ng-container>\n </p-inputgroup-addon>\n }\n</ng-template>\n","import {Directive, ElementRef, Renderer2, afterNextRender, inject, input} from '@angular/core';\nimport {NgControl} from '@angular/forms';\n\nimport {EmptyValueType} from '@mediusinc/mng-commons/form/api';\n\n/**\n * Directive that converts empty string values to undefined or null when the input loses focus.\n * Can also be configured to leave empty strings as is.\n *\n * Usage:\n * ```html\n * <input mngInputEmptyValue=\"undefined\" />\n * ```\n *\n * @example\n * // Convert empty strings to undefined (default behavior)\n * <input mngInputEmptyValue />\n *\n * @example\n * // Convert empty strings to null\n * <input mngInputEmptyValue=\"null\" />\n *\n * @example\n * // Leave empty strings as is (no conversion)\n * <input mngInputEmptyValue=\"none\" />\n */\n@Directive({\n selector: '[mngInputEmptyValue]',\n host: {'(blur)': 'onBlur()'}\n})\nexport class InputEmptyValueDirective {\n /**\n * Input property that specifies how empty string values should be handled.\n *\n * @default 'undefined'\n */\n public mngInputEmptyValue = input<EmptyValueType>('undefined');\n\n readonly #el = inject(ElementRef);\n readonly #ngControl = inject(NgControl, {optional: true});\n readonly #renderer = inject(Renderer2);\n\n constructor() {\n afterNextRender(() => {\n const nativeElement = this.#el.nativeElement as HTMLElement;\n const inputChildElement = nativeElement.querySelector('input');\n\n if (inputChildElement) {\n this.#renderer.listen(inputChildElement, 'blur', () => this.onBlur());\n }\n });\n }\n\n /**\n * Handler for the blur event.\n * Checks if the input value is an empty string and converts it to undefined, null, or leaves it as is\n * based on the configuration.\n */\n onBlur() {\n if (!this.#ngControl?.control) {\n return;\n }\n const value = this.#ngControl?.control.value;\n\n if (typeof value === 'string' && value.trim() === '') {\n const emptyValue = this.#getEmptyValue();\n\n // Only update the value if we're not using 'none' option (which would return '')\n if (emptyValue !== '') {\n this.#ngControl.control.setValue(emptyValue, {emitEvent: false});\n }\n }\n }\n\n /**\n * Returns the appropriate empty value based on the configuration.\n *\n * @returns undefined, null, or empty string based on the mngInputEmptyValue configuration\n */\n #getEmptyValue(): undefined | null | string {\n switch (this.mngInputEmptyValue()) {\n case 'null':\n return null;\n case 'none':\n return '';\n case 'undefined':\n default:\n return undefined;\n }\n }\n}\n","import {Directive, ElementRef, Renderer2, afterNextRender, inject, input} from '@angular/core';\nimport {NgControl} from '@angular/forms';\n\nimport {InputTrimType} from '@mediusinc/mng-commons/form/api';\n\n@Directive({\n selector: '[mngInputTrim]',\n host: {'(blur)': 'onBlur()', '(keydown.tab)': 'onBlur()', '(keydown.enter)': 'onBlur()'}\n})\nexport class InputTrimDirective {\n public readonly mngInputTrim = input<InputTrimType>();\n\n readonly #el = inject(ElementRef);\n readonly #ngControl = inject(NgControl, {optional: true});\n readonly #renderer = inject(Renderer2);\n\n #inputEl: HTMLInputElement = this.#el.nativeElement as HTMLInputElement;\n\n constructor() {\n afterNextRender(() => {\n const nativeElement = this.#el.nativeElement as HTMLElement;\n const inputChildElement = nativeElement.querySelector('input');\n\n if (inputChildElement) {\n this.#inputEl = inputChildElement as HTMLInputElement;\n this.#renderer.listen(inputChildElement, 'blur', () => this.onBlur());\n }\n });\n }\n\n protected onBlur() {\n const control = this.#ngControl?.control;\n const inputValue = this.#inputEl.value;\n const value = control ? control.value : inputValue;\n let trimmedValue: string;\n\n if (typeof value === 'string') {\n trimmedValue = this.#getTrimmedValue(value);\n\n if (trimmedValue != value) {\n if (control) {\n control.setValue(trimmedValue, {emitEvent: false});\n } else {\n this.#inputEl.value = trimmedValue;\n }\n }\n }\n // used when the control value is an array (ex. multiSelect) and has an embedded input which value must be trimmed before added to the array\n else if (Array.isArray(value) && inputValue != null) {\n trimmedValue = this.#getTrimmedValue(inputValue);\n\n if (trimmedValue != null) {\n this.#inputEl.value = trimmedValue;\n }\n }\n }\n\n #getTrimmedValue(value: string): string {\n switch (this.mngInputTrim()) {\n case 'both':\n return value.trim();\n case 'start':\n return value.trimStart();\n case 'end':\n return value.trimEnd();\n default:\n return value;\n }\n }\n}\n","import {Directive, input} from '@angular/core';\n\nimport {TemplateDirective} from '@mediusinc/mng-commons/core';\n\ntype NameType = 'prepend' | 'append';\n\n@Directive({\n selector: '[mngAutocompleteTemplate]',\n exportAs: 'mngAutocompleteTemplate'\n})\nexport class AutocompleteTemplateDirective extends TemplateDirective<NameType> {\n public override readonly name = input.required<NameType>();\n}\n","import {Directive, input} from '@angular/core';\n\nimport {TemplateDirective} from '@mediusinc/mng-commons/core';\n\ntype NameType = 'prepend' | 'append';\n\n@Directive({\n selector: '[mngDateRangeTemplate]',\n exportAs: 'mngDateRangeTemplate'\n})\nexport class DateRangeTemplateDirective extends TemplateDirective<NameType> {\n public override readonly name = input.required<NameType>();\n}\n","import {Directive, input} from '@angular/core';\n\nimport {TemplateDirective} from '@mediusinc/mng-commons/core';\n\ntype NameType = 'prepend' | 'append';\n\n@Directive({\n selector: '[mngDropdownTemplate]',\n exportAs: 'mngDropdownTemplate'\n})\nexport class DropdownTemplateDirective extends TemplateDirective<NameType> {\n public override readonly name = input.required<NameType>();\n}\n","import {Directive, input} from '@angular/core';\n\nimport {TemplateDirective} from '@mediusinc/mng-commons/core';\n\ntype NameType = 'prepend' | 'append';\n\n@Directive({\n selector: '[mngNumberRangeTemplate]',\n exportAs: 'mngNumberRangeTemplate'\n})\nexport class NumberRangeTemplateDirective extends TemplateDirective<NameType> {\n public override readonly name = input.required<NameType>();\n}\n","import {Directive, input} from '@angular/core';\n\nimport {TemplateDirective} from '@mediusinc/mng-commons/core';\n\ntype NameType = 'prepend' | 'append';\n\n@Directive({\n selector: '[mngDatetimePickerTemplate]',\n exportAs: 'mngDatetimePickerTemplate'\n})\nexport class DatetimePickerTemplateDirective extends TemplateDirective<NameType> {\n public override readonly name = input.required<NameType>();\n}\n","// components\nexport * from './components/autocomplete/autocomplete.component';\nexport * from './components/date-range/date-range.component';\nexport * from './components/dropdown/dropdown.component';\nexport * from './components/number-range/number-range.component';\nexport * from './components/datetime-picker/datetime-picker.component';\n\n// directives\nexport * from './directives/input-empty-value.directive';\nexport * from './directives/input-trim.directive';\n\nexport * from './components/autocomplete/autocomplete-template.directive';\nexport * from './components/date-range/date-range-template.directive';\nexport * from './components/dropdown/dropdown-template.directive';\nexport * from './components/number-range/number-range-template.directive';\nexport * from './components/datetime-picker/datetime-picker-template.directive';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2","toObservable","commonsToObservable","map"],"mappings":"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"}
|